|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH V7 10/11] xen/arm: translate virtual PCI bus topology for guests
On 19.07.2022 19:42, Oleksandr Tyshchenko wrote:
> --- a/xen/arch/arm/vpci.c
> +++ b/xen/arch/arm/vpci.c
> @@ -41,6 +41,16 @@ static int vpci_mmio_read(struct vcpu *v, mmio_info_t
> *info,
> /* data is needed to prevent a pointer cast on 32bit */
> unsigned long data;
>
> + /*
> + * For the passed through devices we need to map their virtual SBDF
> + * to the physical PCI device being passed through.
> + */
> + if ( !bridge && !vpci_translate_virtual_device(v->domain, &sbdf) )
> + {
> + *r = ~0ul;
> + return 1;
> + }
I'm probably simply lacking specific Arm-side knowledge, but it strikes
me as odd that the need for translation would be dependent upon "bridge".
> --- a/xen/drivers/vpci/vpci.c
> +++ b/xen/drivers/vpci/vpci.c
> @@ -158,6 +158,32 @@ static void vpci_remove_virtual_device(const struct
> pci_dev *pdev)
> }
> }
>
> +/*
> + * Find the physical device which is mapped to the virtual device
> + * and translate virtual SBDF to the physical one.
> + */
> +bool vpci_translate_virtual_device(struct domain *d, pci_sbdf_t *sbdf)
> +{
> + struct pci_dev *pdev;
const wherever possible please (i.e. likely also for the first function
parameter).
> --- a/xen/include/xen/vpci.h
> +++ b/xen/include/xen/vpci.h
> @@ -276,6 +276,7 @@ static inline bool __must_check
> vpci_process_pending(struct vcpu *v)
> /* Notify vPCI that device is assigned/de-assigned to/from guest. */
> int vpci_assign_device(struct pci_dev *pdev);
> void vpci_deassign_device(struct pci_dev *pdev);
> +bool vpci_translate_virtual_device(struct domain *d, pci_sbdf_t *sbdf);
> #else
> static inline int vpci_assign_device(struct pci_dev *pdev)
> {
> @@ -285,6 +286,12 @@ static inline int vpci_assign_device(struct pci_dev
> *pdev)
> static inline void vpci_deassign_device(struct pci_dev *pdev)
> {
> };
> +
> +static inline bool vpci_translate_virtual_device(struct domain *d,
> + pci_sbdf_t *sbdf)
> +{
> + return false;
> +}
Please don't add stubs which aren't really needed (which, afaict, is the
case for this one).
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |