[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 4/9] vpci/header: Add and remove register handlers dynamically
On 06.09.21 17:11, Jan Beulich wrote: > 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)); Indeed, thank you ;) > >> + 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. Sure, I'll change it to %pd > Further I'm not sure this is a > message we want in release builds Why not? > - perhaps gdprintk()? I'll change if we decide so > >> + 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 It is not, unfortunately. The goal is not to break x86 and to enable Arm > , I'd like to ask that you limit the > introduction of code that ends up dead there. What's wrong with this function even if it is a one-liner? This way we have a pair vpci_bar_add_handlers/vpci_bar_remove_handlers and if I understood correctly you suggest vpci_bar_add_handlers/vpci_remove_device_registers? What would we gain from that, but yet another secret knowledge that in order to remove BAR handlers one needs to call vpci_remove_device_registers while I would personally expect to call vpci_bar_add_handlers' counterpart, vpci_remove_device_registers namely. > Jan > Thank you, Oleksandr
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |