}
>>
>> +static int pci_ecam_register_mmio_handler(struct domain *d,
>> + struct pci_host_bridge *bridge,
>> + const struct mmio_handler_ops
>> *ops)
>> +{
>> + struct pci_config_window *cfg = bridge->sysdata;
>> +
>> + register_mmio_handler(d, ops, cfg->phys_addr, cfg->size, NULL);
>> + return 0;
>> +}
> Given that struct pci_config_window is generic (it is not specific to
> one bridge), I wonder if we even need the .register_mmio_handler
> callback here.
>
> In fact, pci_host_bridge->sysdata doesn't even need to be a void*, it
> could be a struct pci_config_window*, right?
Rahul, this actually may change your series.
Do you think we can do that?
>
> We could simply call:
>
> register_mmio_handler(d, ops, cfg->phys_addr, cfg->size, NULL);
>
> for each bridge directly from domain_vpci_init ?
If Rahul changes the API then we can probably do that.