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

Re: [PATCH v2 1/1] vpci: Add resizable bar support


  • To: Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • From: "Chen, Jiqian" <Jiqian.Chen@xxxxxxx>
  • Date: Wed, 11 Dec 2024 06:42:39 +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=OckdZyXq+hyEbVegF9sQo8GThKAZJ90kZa6yPpyH1yk=; b=xTwdeP9a39530VVj2/Lr4ldP98jiCzwlnp9R625dkKQz5xL0RuEGckNKncuEEs+XPRRw8dE0OJf6YKGWxzpqlIrRyQfhC0VWweCSqxlu5CdjlY3zo2AgxzYh+E0NG1ftf6kcHMxyMU2tsmzKl1wN2t7saXMkoyMUIhEOTiTNkncN/rHuJtNgrI51fvBZjYVDW8cwyRXJcAvH4zZudGRi0lNEsa+SOAh0WW+WoGsStyXIEdMEEp22QDAWp8LO0XyCni60wESwlG0rSn8TTBwbDs3Fk2coK7OrOGqvhuZtb31SpIYGViQEYjg1punATD/2wbUD/apapQ128tHyBpGVOQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FG89ccoHizAEj2RNBtj/9gibK/EtvsSVAXjvC/YfGix6Hs3cGAUZaRwTg1XmZ2OXzzQlWvFvdQZvoNutUMcubGWFqwah476Aqp2wHqjKVirIQjm7k4lDoZ9KTck2pCVMLy2B+xEDKqZHHOYHL57ymjzL33tWWhjlOY5AR9NYZmtGq6VyUQloBs59J1foY6/+cMmw/dRFzDSIRHATdEJugjZm6XdYmpbpQ4grXBlbkLXqYz+hn3kPr5IOZGEmFrFyIAM5UigR7eaQR6qzafR/ehrwrg08RWWCK0QxCLg/2OYzkgUsAm+QKwGsxg5DguXPmNqlZVE75O6w3Uzdnf+hXA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Julien Grall <julien@xxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, "Huang, Ray" <Ray.Huang@xxxxxxx>, "Chen, Jiqian" <Jiqian.Chen@xxxxxxx>
  • Delivery-date: Wed, 11 Dec 2024 06:42:53 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHbRIDgGHZ3ofHO0UuqqXvn+EZCabLfZMMAgAHH6IA=
  • Thread-topic: [PATCH v2 1/1] vpci: Add resizable bar support

On 2024/12/10 19:30, Roger Pau Monné wrote:
> On Mon, Dec 02, 2024 at 02:09:56PM +0800, Jiqian Chen wrote:
>> Some devices, like discrete GPU of amd, support resizable bar
>> capability, but vpci of Xen doesn't support this feature, so
>> they fail to resize bars and then cause probing failure.
>>
>> According to PCIe spec, each bar that supports resizing has
>> two registers, PCI_REBAR_CAP and PCI_REBAR_CTRL. So, add
>> handlers for them to support resizing the size of BARs.
>>
>> Signed-off-by: Jiqian Chen <Jiqian.Chen@xxxxxxx>
>> ---
>> Hi all,
>>
>> v2->v1 changes:
>> *In rebar_ctrl_write, to check if memory decoding is enabled, and added
>> some checks for the type of Bar.
>> *Added vpci_hw_write32 to handle PCI_REBAR_CAP's write, since there is
>> no write limitation of dom0.
>> *And has many other minor modifications as well.
>>
>> Best regards,
>> Jiqian Chen.
>> ---
>>  xen/drivers/vpci/Makefile  |  2 +-
>>  xen/drivers/vpci/rebar.c   | 93 ++++++++++++++++++++++++++++++++++++++
>>  xen/drivers/vpci/vpci.c    |  6 +++
>>  xen/include/xen/pci_regs.h | 11 +++++
>>  xen/include/xen/vpci.h     |  2 +
>>  5 files changed, 113 insertions(+), 1 deletion(-)
>>  create mode 100644 xen/drivers/vpci/rebar.c
>>
>> diff --git a/xen/drivers/vpci/Makefile b/xen/drivers/vpci/Makefile
>> index 1a1413b93e76..a7c8a30a8956 100644
>> --- a/xen/drivers/vpci/Makefile
>> +++ b/xen/drivers/vpci/Makefile
>> @@ -1,2 +1,2 @@
>> -obj-y += vpci.o header.o
>> +obj-y += vpci.o header.o rebar.o
>>  obj-$(CONFIG_HAS_PCI_MSI) += msi.o msix.o
>> diff --git a/xen/drivers/vpci/rebar.c b/xen/drivers/vpci/rebar.c
>> new file mode 100644
>> index 000000000000..156e8d337426
>> --- /dev/null
>> +++ b/xen/drivers/vpci/rebar.c
>> @@ -0,0 +1,93 @@
>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>> +/*
>> + * Copyright (C) 2024 Advanced Micro Devices, Inc. All Rights Reserved.
>> + *
>> + * Author: Jiqian Chen <Jiqian.Chen@xxxxxxx>
>> + */
>> +
>> +#include <xen/hypercall.h>
>> +#include <xen/vpci.h>
>> +
>> +static void cf_check rebar_ctrl_write(const struct pci_dev *pdev,
>> +                                      unsigned int reg,
>> +                                      uint32_t val,
>> +                                      void *data)
>> +{
>> +    uint64_t size;
>> +    unsigned int index;
>> +    struct vpci_bar *bars = data;
>> +
>> +    if ( pci_conf_read16(pdev->sbdf, PCI_COMMAND) & PCI_COMMAND_MEMORY )
>> +        return;
>> +
>> +    index = pci_conf_read32(pdev->sbdf, reg) & PCI_REBAR_CTRL_BAR_IDX;
>> +    if ( index >= PCI_HEADER_NORMAL_NR_BARS )
>> +        return;
>> +
>> +    if ( bars[index].type != VPCI_BAR_MEM64_LO &&
>> +         bars[index].type != VPCI_BAR_MEM32 )
>> +        return;
> 
> For those early returns that don't propagate the write to the
> register, we need to log a message to notice the write has been
> dropped, otherwise there's no way to identify such cases.
Will add some warning logs in next version.

> 
> Thanks, Roger.

-- 
Best regards,
Jiqian Chen.

 


Rackspace

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