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

Re: [PATCH v6 2/8] vpci: Refactor REGISTER_VPCI_INIT


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: "Chen, Jiqian" <Jiqian.Chen@xxxxxxx>
  • Date: Fri, 27 Jun 2025 02:59:53 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=U+jRtypYYzqLpyKsu5gjznzXitFwFM4JD46DDheDFm0=; b=t/s+VXipE5fbkYkaqJEbWNY05S+MisN618F0ZQ7ZwkCOwSOKFlORf2yEh2u255R1yEaZun4IZo9/tQSzZ1QlkLranC8wk6urTauCrDrlOs6jIXgy/NsjMG0s7NlYbSkYTxmT9JWahCx/drTTZDiNkkfm3BpDMjpwq96l613sGX9i+okOwaIxWNv4ripiklPZUmKOVHtXdeBpKH79ldYeGyLeo0KhHDPai9FpmmGWePbuClUy4vvvpNj0246pBeJ/7Xq7/ZexVw5ihZ74iZw24KnjXnIjGPGVLJq8WMK5b+tVQILjyMtF3pHJxsepPuUJBf6CABSgfLAdhcUCxNN0ig==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=acwLxqDpnxWsAD5O3P/BxoFsKelaKBBVa/oHQuRIxWX0SpfskWJ75G75+N/Yh5ez5sxHdsw9VnkMdSjguSyO7bdswo1g4m3CQlXsxbK0G0zVei6Gp4q0FyjlppsBzX8oYVAGteQ9rCBiT71y3LtxpX3/FCZcXoIM7kOXu09ziHIZVkKcrIipEXo8+Kb4Mrvx7mt5zq2HaTuyVyCiaJ/f5rc4D0G2cMHukLlZvSla5YjG2sbsKOdGEvP+TB+J9Q0lqMGWj/1PfNgxevKgJ+WDc4Pc5tIAIxSFLnmidyJ+PDZNlPXQS9sYSboUKdk/JSuGpc+fHDId1GpSdSLRZKTKeQ==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
  • Cc: Roger Pau Monné <roger.pau@xxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, "Orzel, Michal" <Michal.Orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, "Huang, Ray" <Ray.Huang@xxxxxxx>, "Chen, Jiqian" <Jiqian.Chen@xxxxxxx>
  • Delivery-date: Fri, 27 Jun 2025 03:00:18 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHb23yakGdVC9XxvEWnYcnp8zrTt7QI/QAAgAGa9QCAAQzVgIAG5D6A//99hgCAAJwoAP//hioAgAHew4D//5oCgAASTfCA//+FrwCAAIi+gP//u5+AgAGwYID//8AMgIABfE8A
  • Thread-topic: [PATCH v6 2/8] vpci: Refactor REGISTER_VPCI_INIT

On 2025/6/26 20:06, Jan Beulich wrote:
> On 26.06.2025 10:03, Chen, Jiqian wrote:
>> On 2025/6/25 22:07, Jan Beulich wrote:
>>> On 25.06.2025 12:16, Chen, Jiqian wrote:
>>>> On 2025/6/25 18:03, Jan Beulich wrote:
>>>>> Also, as said - you will need to check whether other architectures are
>>>>> different from x86-64 in this regard. We better wouldn't leave a trap 
>>>>> here,
>>>>> for them to fall into when they enable vPCI support. I.e. my 
>>>>> recommendation
>>>>> would be that if in doubt, we put the __aligned() there unconditionally.
> 
> Note how I used __aligned() here. Why would you ...
> 
>>>> That's difficult for me to check on all different platforms since I don't 
>>>> have them all.
>>>
>>> You don't need to have them. You'd need to carefully go through the 
>>> respective
>>> section(s) of their psABI-s.
>>>
>>>> So you mean I should remove "#ifdef CONFIG_X86"? Just let __aligned(16) 
>>>> for all platforms?
>>>
>>> Yes. And, as also said, with a suitable comment please.
>> Ah, my comment definitely needs your change suggestion.
>> I wrote a draft as below:
>>
>> /*
>>  * Size of vpci_capability is lager than 8 bytes. When it is used as the 
>> entry
>>  * of __start_vpci_array in section, it is 16-byte aligned by assembler, that
>>  * causes the array length (__end_vpci_array - __start_vpci_array) wrong, so
>>  * force its definition to use 16-byte aligned here.
>>  */
>> struct vpci_capability {
>>     unsigned int id;
>>     bool is_ext;
>>     int (* init)(const struct pci_dev *pdev);
>>     int (* cleanup)(const struct pci_dev *pdev);
>> } __attribute__((aligned(16)));
> 
> ... open-code that here?
That because when using __aligned() without CONFIG_X86, I got compile error
vpci.h:18:13: error: expected declaration specifiers or ‘...’ before numeric 
constant
   18 | } __aligned(16);
      |             ^~
I tried some methods, only open-code can fix it.

> 
> As to the comment: First, it wants to be as close to what is being commented 
> as
> possible. Hence
> 
> struct __aligned(16) vpci_capability {
This also got the compile error.
> 
> is likely the better placement. Second, there's nothing here the assembler 
> does
> on its own. It's the compiler which does something (insert alignment 
> directives),
> and only to follow certain rules. (See "x86: don't have gcc over-align data"
> that I Cc-ed you on for some of the relevant aspects.) That is, you don't want
> to "blame" any part of the tool chain, at least not where it's the underlying
> ABI that mandates certain behavior. There's also no strong need to talk about
> the specific effects that it would have if we didn't arrange things properly.
> That is, talking about the effect on arrays in general is fine and helpful.
> Talking about __{start,end}_vpci_array imo is not.
> 
> While further playing with the compiler, I noticed that adding __aligned(16)
> actually has a negative effect as long as that other patch isn't in use: The
> struct instances then are being aligned to even 32-byte boundaries (which 
> means
> __start_vpci_array would then also need aligning as much). When that other
> patch is in use, the __aligned() becomes unnecessary. Therefore I'm no longer
> convinced using __aligned() is the best solution here.
Em, changing __start_vpci_array to be struct vpci_capability array cause those 
concerns, maybe keeping using struct pointer is a compromise method.

> Instead I think you want to base your patch on top of mine. Which in turn 
> would eliminate the need for
> any commentary here.
I am fine to wait until your patch is merged.

> 
> Jan

-- 
Best regards,
Jiqian Chen.

 


Rackspace

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