[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH v1 2/4] xen/arm: Discovering PCI devices and add the PCI devices in XEN.
> On 24 Jul 2020, at 8:14 am, Oleksandr Andrushchenko > <Oleksandr_Andrushchenko@xxxxxxxx> wrote: > > > On 7/23/20 11:44 PM, Stefano Stabellini wrote: >> On Thu, 23 Jul 2020, Rahul Singh wrote: >>> Hardware domain is in charge of doing the PCI enumeration and will >>> discover the PCI devices and then will communicate to XEN via hyper >>> call PHYSDEVOP_pci_device_add to add the PCI devices in XEN. >>> >>> Change-Id: Ie87e19741689503b4b62da911c8dc2ee318584ac >> Same question about Change-Id >> >> >>> Signed-off-by: Rahul Singh <rahul.singh@xxxxxxx> >>> --- >>> xen/arch/arm/physdev.c | 42 +++++++++++++++++++++++++++++++++++++++--- >>> 1 file changed, 39 insertions(+), 3 deletions(-) >>> >>> diff --git a/xen/arch/arm/physdev.c b/xen/arch/arm/physdev.c >>> index e91355fe22..274720f98a 100644 >>> --- a/xen/arch/arm/physdev.c >>> +++ b/xen/arch/arm/physdev.c >>> @@ -9,12 +9,48 @@ >>> #include <xen/errno.h> >>> #include <xen/sched.h> >>> #include <asm/hypercall.h> >>> - >>> +#include <xen/guest_access.h> >>> +#include <xsm/xsm.h> >>> >>> int do_physdev_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg) >>> { >>> - gdprintk(XENLOG_DEBUG, "PHYSDEVOP cmd=%d: not implemented\n", cmd); >>> - return -ENOSYS; >>> + int ret = 0; >>> + >>> + switch ( cmd ) >>> + { >>> +#ifdef CONFIG_HAS_PCI > > In the cover letter you were saying "we are not enabling the HAS_PCI and > HAS_VPCI flags for ARM". > > Is this still valid? Yes right we are not enabling it because full support of PCI passthrough is not implemented and tested. > >>> + case PHYSDEVOP_pci_device_add: >>> + { >>> + struct physdev_pci_device_add add; >>> + struct pci_dev_info pdev_info; >>> + nodeid_t node = NUMA_NO_NODE; >>> + >>> + ret = -EFAULT; >>> + if ( copy_from_guest(&add, arg, 1) != 0 ) >>> + break; >>> + >>> + pdev_info.is_extfn = !!(add.flags & XEN_PCI_DEV_EXTFN); >>> + if ( add.flags & XEN_PCI_DEV_VIRTFN ) >>> + { >>> + pdev_info.is_virtfn = 1; >>> + pdev_info.physfn.bus = add.physfn.bus; >>> + pdev_info.physfn.devfn = add.physfn.devfn; >>> + } >>> + else >>> + pdev_info.is_virtfn = 0; >>> + >>> + ret = pci_add_device(add.seg, add.bus, add.devfn, >>> + &pdev_info, node); >>> + >>> + break; >>> + } >>> +#endif >>> + default: >>> + gdprintk(XENLOG_DEBUG, "PHYSDEVOP cmd=%d: not implemented\n", >>> cmd); >>> + ret = -ENOSYS; >>> + } >> I think we should make the implementation common between arm and x86 by >> creating xen/common/physdev.c:do_physdev_op as a shared entry point for >> PHYSDEVOP hypercalls implementations. See for instance: >> >> xen/common/sysctl.c:do_sysctl >> >> and >> >> xen/arch/arm/sysctl.c:arch_do_sysctl >> xen/arch/x86/sysctl.c:arch_do_sysctl >> >> >> Jan, Andrew, Roger, any opinions? >> >> > I think we can also have a look at [1] by Julien. That implementation, > > IMO, had some thoughts on making Arm/x86 code common where possible Ok. Thanks for the pointer. We will have a look. > > > [1] > https://xenbits.xen.org/gitweb/?p=people/julieng/xen-unstable.git;a=shortlog;h=refs/heads/dev-pci
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |