On 03.09.2021 12:08, Oleksandr Andrushchenko wrote: > @@ -593,6 +625,36 @@ static int init_bars(struct pci_dev *pdev) > } > REGISTER_VPCI_INIT(init_bars, VPCI_PRIORITY_MIDDLE); > > +int vpci_bar_add_handlers(const struct domain *d, struct pci_dev *pdev) > +{ > + int rc; > + > + /* Remove previously added registers. */ > + vpci_remove_device_registers(pdev); > + > + /* It only makes sense to add registers for hwdom or guest domain. */ > + if ( d->domain_id >= DOMID_FIRST_RESERVED ) > + return 0; > + > + if ( is_hardware_domain(d) ) > + rc = add_bar_handlers(pdev, true); > + else > + rc = add_bar_handlers(pdev, false);
rc = add_bar_handlers(pdev, is_hardware_domain(d)); > + if ( rc ) > + gprintk(XENLOG_ERR, > + "%pp: failed to add BAR handlers for dom%d\n", &pdev->sbdf, > + d->domain_id); Please use %pd and correct indentation. Logging the error code might also help some in diagnosing issues. Further I'm not sure this is a message we want in release builds - perhaps gdprintk()? > + return rc; > +} > + > +int vpci_bar_remove_handlers(const struct domain *d, struct pci_dev *pdev) > +{ > + /* Remove previously added registers. */ > + vpci_remove_device_registers(pdev); > + return 0; > +} Also - in how far is the goal of your work to also make vPCI work for x86 DomU-s? If that's not a goal, I'd like to ask that you limit the introduction of code that ends up dead there. Jan