[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 13/14] arm/libxl: Emulated PCI device tree node in libxl

  • To: Ian Jackson <iwj@xxxxxxxxxxxxxx>
  • From: Rahul Singh <Rahul.Singh@xxxxxxx>
  • Date: Wed, 6 Oct 2021 17:34:37 +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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=a0tVOAYFws4w5ave92WBSKB//qoMdO2J2APb3OThhXk=; b=eCIqM9V/LSUU/QrcTYV2pgVa0dn7jBx3anO6jIiC7/nadNd4RjG6FoTUcH559+sEuRCvLLY4DUaTB9bfZDvT9suXczTOvKjnQoEJ1ysv2GuQzJtsKVwkl/huBhG1GwseWorD1JDBiWyNp/tdQwLU5EsPnJ9sSyJZ3UYztsg5Qp8DRTft+EABPiMRZvNwvlbp2mdb3lVA9mnJvCBegkKwwr1squlLhfwRhC/4LdJS95atooKQogR0oJJ41Y6P6K4ZrlN46bHoiBq2+V24D2YGvEq54OSfBMFLXwbvzpX7cGOZ5O9K2QTDkKeM+YZHyuKhZenEfjEZ6kTh+iMRrSqe/Q==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c+TqKsouKbyXJO48Ah5sABbeWydHvuuVz1gF19lZW4W7/7v0tt2PdrJB0SyLn5lVi4hl+JV3oPZfChpNXUVJ1KAPTqfTJJRWoHyhtgpRFbwA/pUBKjz+1kDc0z16jAmA6giMa8jg4O62iU0Wz7+x7gB1stcXp5Gk6/PBojn6ZJODJUoA9B65nnfVAoHJTKJ/UGS2ogSW0gWza9E69LzlwvztYS5OvEoYhT604ZidipxsYlthPo/2vXhQiTJu4Qh2HRi1KKRbMnNDEqXxpp8F5xZ7vl+LFnmBXxs5/+HZ19agnuH7UnKi0RsCyviJMftT7K+Vj1jIWfiIxTWhHzVruA==
  • Authentication-results-original: xenproject.org; dkim=none (message not signed) header.d=none;xenproject.org; dmarc=none action=none header.from=arm.com;
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Bertrand Marquis <Bertrand.Marquis@xxxxxxx>, Andre Przywara <Andre.Przywara@xxxxxxx>, Wei Liu <wl@xxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Wed, 06 Oct 2021 17:34:57 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Nodisclaimer: true
  • Original-authentication-results: xenproject.org; dkim=none (message not signed) header.d=none;xenproject.org; dmarc=none action=none header.from=arm.com;
  • Thread-index: AQHXuRciClWhjFX7R0aQhsW/aixhyqvDkJEAgACf3oCAAL5hgIAAzJaAgAAXDgCAAALtgIAABFYAgABk+IA=
  • Thread-topic: [PATCH v4 13/14] arm/libxl: Emulated PCI device tree node in libxl

Hi Ian,

> On 6 Oct 2021, at 12:33 pm, Ian Jackson <iwj@xxxxxxxxxxxxxx> wrote:
> Rahul Singh writes ("Re: [PATCH v4 13/14] arm/libxl: Emulated PCI device tree 
> node in libxl"):
>> Hi Ian       
>>> What is wrong with putting it in
>>> libxl__arch_domain_build_info_setdefault
>>> which I think exists precisely for this kind of thing ?
>> As we have to set the arch_arm.vpci to false for x86 and ARM I
>> thought it is right to move the code to common code to avoid
>> duplication.
>> Are you suggesting to put "
>> libxl_defbool_setdefault(&b_info->arch_arm.vpci, false)ïżœin
>> libxl__arch_domain_build_info_setdefault() for x86 and ARM
>> differently.
> I've gone back and reread the whole thread, which I probably should
> have done to start with....
> So:
>>>> #if defined(__arm__) || defined(__aarch64__)                  
>>>>   /*                                    
>>>>    * Enable VPCI support for ARM. VPCI support for DOMU guests is not    
>>>>    * supported for x86.                          
>>>>    */                                   
>>>>   if (d_config->num_pcidevs)                        
>>>>     libxl_defbool_set(&b_info->arch_arm.vpci, true);           
>>>> #endif 
> I think this logic probably ought to be in libxl, not in xl.

I will move the code to "libxl_arm.c"to avoid #ifdef in common code and also  
to avoid setting the vpci for x86

diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c
index e3140a6e00..2be208b99b 100644
--- a/tools/libs/light/libxl_arm.c
+++ b/tools/libs/light/libxl_arm.c
@@ -101,6 +101,12 @@ int libxl__arch_domain_prepare_config(libxl__gc *gc,
         return ERROR_FAIL;
+    /* Enable VPCI support. */
+    if (d_config->num_pcidevs) {
+        config->flags |= XEN_DOMCTL_CDF_vpci;
+        libxl_defbool_set(&d_config->b_info.arch_arm.vpci, true);
+    }
     return 0;

>  We try
> to make the libxl API "do the right thing" by default.  In this case I
> think that means to enable VPCI (i) on platforms where it's available
> (ii) if the guest has PCI passthrough devices.  Is that right ?

Yes you are right VPCI will be enabled for guest when guest has PCI passthrough 
assigned and VPCI support is available.  
> Sorry to ask these question now, and please forgive my ignorance:
> Is VPCI inherently an ARM-specific ABI or protocol ?

As of now VPCI for DOMU guests is only implemented  for ARM.
>  When might an
> admin want to turn it on explicitly ?

It will be enabled dynamically when admin assign any PCI device to guest.

> How does this all relate to the (non-arch-specific) "passthrough"
> option ?

VPCI will be enabled only when there is any PCI device assigned to guest 
therefore I used 
"d_config->num_pcidevs” to enable VPCI.


> Ian.



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