On 30.09.21 11:53, Jan Beulich wrote: > On 30.09.2021 09:52, Oleksandr Andrushchenko wrote: >> --- a/xen/drivers/passthrough/pci.c >> +++ b/xen/drivers/passthrough/pci.c >> @@ -889,6 +889,31 @@ int pci_remove_virtual_device(struct domain *d, const >> struct pci_dev *pdev) >> xfree(vdev); >> return 0; >> } >> + >> +/* >> + * Find the physical device which is mapped to the virtual device >> + * and translate virtual SBDF to the physical one. >> + */ >> +bool pci_translate_virtual_device(const struct domain *d, pci_sbdf_t *sbdf) >> +{ >> + struct vpci_dev *vdev; > const (afaict) Ok > >> + bool found = false; >> + >> + pcidevs_lock(); >> + list_for_each_entry ( vdev, &d->vdev_list, list ) >> + { >> + if ( vdev->sbdf.sbdf == sbdf->sbdf ) >> + { >> + /* Replace virtual SBDF with the physical one. */ >> + *sbdf = vdev->pdev->sbdf; >> + found = true; >> + break; >> + } >> + } >> + pcidevs_unlock(); > As per the comments on the earlier patch, locking as well as placement > may need reconsidering. Other then that do you have other comments on this? > > Jan >
Thank you, Oleksandr