[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.


  • To: Oleksandr Andrushchenko <Oleksandr_Andrushchenko@xxxxxxxx>
  • From: Rahul Singh <Rahul.Singh@xxxxxxx>
  • Date: Mon, 27 Jul 2020 16:10:44 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DsZfFnXMBRM0Wk5LaTsic24+555RRDHubAUAxa2ZpbA=; b=jwXG1jRNpGLw51g79OMCZQMhn5yXHvAOsn8OZXGPgm3XKrXyqfbIC08ANpYv+dbjJ0BQNnpZJLLKHz8AWT1EnU3K4cdIXrSsExhZDKWC7WTYTFrDRgNk0FnRpHwacyedb9ASFKuHThwQz+qWo6kDxmckwfLNNyE7jqMS4AoiUclH/VfH1fiiGM9IU8MCQh8qu0UR+3+ZjNzyCaYqIY4c/K6Gr2oIV8/HgnUDVcBK4kgfuGWCvZxJy4WgNGNt9vuYH4rornFBBKIyYAvjKfTwTpOA8dxrd8nJK9p/9eUgF5ue8OcYaUSRT+KmrdwNbjPxy/a6/NsmFkoJj/orn+eQWw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CBWen2b6x+bgchYoolsrUjRQICMDO1AvRr1284W8nZlDIDLEYsUvNY1XpM6bW0kIo+Y/K4cm2DiNcrg35BgvY4kcnHb9iufhggQ9cg2O8VnbvMIM5CTHFx6NjveNYBh4DieC+EqnL3Rwt3c6Gas4S8HVS+UT+V0mv5kgNd83UQNGv5LuLhmOtK4lXquhsMWk0lvfMYMc3+Xf2X2hWAMdbfPXtK2xX/7mE7onEQCeNPzZZKv31ohamxkAbo4hBiydno31jeTsf7O2mPCO1DoGboGzHsruL0ioFa5eu4WbwwcX6rHbshVZgZxVcwGiRkm5a6eNVLQGuAJO6/FquqVtBw==
  • Authentication-results-original: epam.com; dkim=none (message not signed) header.d=none;epam.com; dmarc=none action=none header.from=arm.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, "andrew.cooper3@xxxxxxxxxx" <andrew.cooper3@xxxxxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, "jbeulich@xxxxxxxx" <jbeulich@xxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, nd <nd@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, "roger.pau@xxxxxxxxxx" <roger.pau@xxxxxxxxxx>
  • Delivery-date: Mon, 27 Jul 2020 16:11:02 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: epam.com; dkim=none (message not signed) header.d=none;epam.com; dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHWYPbP4iMQjZDQ906szkp+TjbuPqkVohKAgACwKACABUzOAA==
  • Thread-topic: [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




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.