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

Re: [PATCH for-4.21 v2] vpci/msix: improve handling of bogus MSI-X capabilities


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
  • Date: Thu, 9 Oct 2025 08:49:19 -0400
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=citrix.com smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • 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=GCDQz/nZi4FqCCRkMciMEWCbUxjOW2X4vWOR12UcSyw=; b=Vn1nxjhVftb9QypMjHIe4rhAAZSQR4W8JnusD0FwnH8Y3fe8i3QzRaCz6r7KoPl5t4jcdwm3pxIH09xRvSDEd2fYkxRKnOWq+FNjF2iiS194qRCuLyzcvABACiCfo/G5f8auk29jdKn7sGIewFyjGl9/fMpwWpkSS4NsBOL5drtbLvDMv5uPaJal36o1Kwciec6+m1g3LmAKkpwipB63OK38D7TdNoRm7CRR4Ahl5M8XiT7lASPb4lgjHxk0Zi8PZWgVuBN9wuN6qxpXltrlU5TmG8rpinwcqqKT4i2ZqyZA8o4c04ueoqF6mtdDoWlsYt2Wv33o2qNq7BUzhHUSBQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dQxEwEfCLF4Jc7zNj/CobdqW7sLui09MnJz23oE8drd3tCwTjuM9x53sleGlib/lMuaV0Zs0FtXeQyFS1BAOKGdGAHc+I8pe4NyjgZd2L51i6RVCLTMQ5i3EX40+uo8SvkEacoDFkoTLfpLAp9A7tuhXRnO5ffxFFFhrHy8UyjEuJw+QiUfWg1OIJ7wbA/1UVxP4oWU/DidHYdnVnpHG7aBcyTo1N+rKQ7kcAxgZ6omFS/hnCrxJGgKR7uZt18cgFWgFmZwLuNsk4fj5EshW7NbL2Y8kQeT1l8+M537nAmHxg0AbtbG24XaTLmBGMiDffe2uT54Mk3ek/5VcKNb3XA==
  • Cc: <oleksii.kurochko@xxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>
  • Delivery-date: Thu, 09 Oct 2025 12:49:34 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

On 10/8/25 10:59, Roger Pau Monné wrote:
> On Wed, Oct 08, 2025 at 04:39:23PM +0200, Roger Pau Monne wrote:
>> I've had the luck to come across a PCI card that exposes a MSI-X capability
>> where the BIR of the vector and PBA tables points at a BAR that has 0 size.
>>
>> This doesn't play nice with the code in vpci_make_msix_hole(), as it would
>> still use the address of such empty BAR (0) and attempt to carve a hole in
>> the p2m.  This leads to errors like the one below being reported by Xen:
>>
>> d0v0 0000:22:00.0: existing mapping (mfn: 181c4300 type: 0) at 0 clobbers 
>> MSIX MMIO area
>>
>> And the device left unable to enable memory decoding due to the failure
>> reported by vpci_make_msix_hole().
>>
>> Introduce checking in init_msix() to ensure the BARs containing the MSI-X
>> tables are usable.  This requires checking that the BIR points to a
>> non-empty BAR, and the offset and size of the MSI-X tables can fit in the
>> target BAR.
>>
>> This fixes booting PVH dom0 on Supermicro AS -2126HS-TN severs with AMD
>> EPYC 9965 processors.  The broken device is:
>>
>> 22:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA 
>> Controller [AHCI mode] (rev 93)
>>
>> There are multiple of those integrated controllers in the system, all
>> broken in the same way.
>>
>> Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
>> Released-Acked-By: Oleksii Kurochko<oleksii.kurochko@xxxxxxxxx>
>> ---
>> Cc: Stewart Hildebrand <stewart.hildebrand@xxxxxxx>
>> Cc: Oleksii Kurochko <oleksii.kurochko@xxxxxxxxx>
>> ---
>> Changes since v1:
>>  - Introduce a DEVICE BUG prefix.
>>  - Remove extra newline.
>>  - Fix typo in commit message.
>> ---
>>  xen/drivers/vpci/msix.c | 50 ++++++++++++++++++++++++++++++++++++-----
>>  xen/include/xen/lib.h   |  3 +++
>>  2 files changed, 48 insertions(+), 5 deletions(-)
>>
>> diff --git a/xen/drivers/vpci/msix.c b/xen/drivers/vpci/msix.c
>> index 54a5070733aa..4ddcefbcb274 100644
>> --- a/xen/drivers/vpci/msix.c
>> +++ b/xen/drivers/vpci/msix.c
>> @@ -675,6 +675,51 @@ static int cf_check init_msix(struct pci_dev *pdev)
>>      if ( !msix )
>>          return -ENOMEM;
>>  
>> +    msix->tables[VPCI_MSIX_TABLE] =
>> +        pci_conf_read32(pdev->sbdf, msix_table_offset_reg(msix_offset));
>> +    msix->tables[VPCI_MSIX_PBA] =
>> +        pci_conf_read32(pdev->sbdf, msix_pba_offset_reg(msix_offset));
>> +
>> +    /* Check that the provided BAR is valid. */
> 
> I had the following local change that I forgot to update the patch
> with before sending:
> 
> /* Check that the referenced BAR(s) regions are valid. */
> 
> I think this is a better wording.

+1



 


Rackspace

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