[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.
Sorry for the late reply. > On 23 Jul 2020, at 9:44 pm, Stefano Stabellini <sstabellini@xxxxxxxxxx> 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 I think by-mistake Gerrit Change-id is added in the patch series. I will remove the Change-Id in next version of the patch. > > >> 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 >> + 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 > Ok sure I will check if we can create a common entry for ARM and x86 for do_physdev_op(). > Jan, Andrew, Roger, any opinions?
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |