|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v7 2/5] xen/arm: Enable the existing x86 virtual PCI support for ARM
Hi Roger,
> On 15 Oct 2021, at 15:30, Roger Pau Monné <roger.pau@xxxxxxxxxx> wrote:
>
> On Fri, Oct 15, 2021 at 02:59:19PM +0100, Bertrand Marquis wrote:
>> From: Rahul Singh <rahul.singh@xxxxxxx>
>>
>> The existing VPCI support available for X86 is adapted for Arm.
>> When the device is added to XEN via the hyper call
>> “PHYSDEVOP_pci_device_add”, VPCI handler for the config space
>> access is added to the Xen to emulate the PCI devices config space.
>>
>> A MMIO trap handler for the PCI ECAM space is registered in XEN
>> so that when guest is trying to access the PCI config space,XEN
>> will trap the access and emulate read/write using the VPCI and
>> not the real PCI hardware.
>>
>> For Dom0less systems scan_pci_devices() would be used to discover the
>> PCI device in XEN and VPCI handler will be added during XEN boots.
>>
>> This patch is also doing some small fixes to fix compilation errors on
>> arm32 of vpci and prevent 64bit accesses on 32bit:
>> - use %zu instead of lu in header.c for print
>> - prevent 64bit accesses in vpci_access_allowed
>> - ifdef out using CONFIG_64BIT handling of len 8 in
>> vpci_ecam_{read/write}
>>
>> Signed-off-by: Rahul Singh <rahul.singh@xxxxxxx>
>> Signed-off-by: Bertrand Marquis <bertrand.marquis@xxxxxxx>
>
> The vpci bits looks fine to me, so:
>
> Acked-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
Thanks
>
> I have one question however related to the placement of the vpci setup
> call in pci_add_device.
>
>> diff --git a/xen/drivers/passthrough/pci.c b/xen/drivers/passthrough/pci.c
>> index 3aa8c3175f..082892c8a2 100644
>> --- a/xen/drivers/passthrough/pci.c
>> +++ b/xen/drivers/passthrough/pci.c
>> @@ -766,7 +766,21 @@ int pci_add_device(u16 seg, u8 bus, u8 devfn,
>> list_add(&pdev->domain_list, &hardware_domain->pdev_list);
>> }
>> else
>> + {
>> +#ifdef CONFIG_ARM
>> + /*
>> + * On ARM PCI devices discovery will be done by Dom0. Add vpci
>> handler
>> + * when Dom0 inform XEN to add the PCI devices in XEN.
>> + */
>> + ret = vpci_add_handlers(pdev);
>> + if ( ret )
>> + {
>> + printk(XENLOG_ERR "Setup of vPCI failed: %d\n", ret);
>> + goto out;
>> + }
>
> I'm likely lost here, but shouldn't this also be done for devices that
> belong to the hardware domain and are assigned to it in the first
> branch of this conditional?
>
> Or else you will end up with devices assigned to the hardware domain
> that don't have vPCI setup for them.
I might be wrong but when the hardware domain is declaring the devices they are
added to him.
Then later when those device are assigned to a guest, they are removed from the
hardware domain.
Regards
Bertrand
>
> Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |