On 2025/2/11 17:21, Roger Pau Monné wrote:
> On Tue, Feb 11, 2025 at 10:22:57AM +0800, Jiqian Chen wrote:
>> Some devices, like AMDGPU, 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 to support resizing the size of BARs.
>>
>> Note that Xen will only trap PCI_REBAR_CTRL, as PCI_REBAR_CAP
>> is read-only register and the hardware domain already gets
>> access to it without needing any setup.
>>
>> Signed-off-by: Jiqian Chen <jiqian.c...@amd.com>
> 
> Reviewed-by: Roger Pau Monné <roger....@citrix.com>
Thank you!
May I know whether this can be merged in Xen version 4.20?

> 
>> ---
>> Hi all,
>> v7->v8 changes:
>> * Modified commit message and some comments.
>> * Deleted unused function vpci_hw_write32.
>>
>> Best regards,
>> Jiqian Chen.
>> ---
>>  xen/drivers/vpci/Makefile  |   2 +-
>>  xen/drivers/vpci/rebar.c   | 131 +++++++++++++++++++++++++++++++++++++
>>  xen/include/xen/pci_regs.h |  15 +++++
>>  xen/include/xen/vpci.h     |   1 +
>>  4 files changed, 148 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..794f1168adf8
>> --- /dev/null
>> +++ b/xen/drivers/vpci/rebar.c
>> @@ -0,0 +1,131 @@
>> +/* SPDX-License-Identifier: GPL-2.0-only */
>> +/*
>> + * Copyright (C) 2025 Advanced Micro Devices, Inc. All Rights Reserved.
>> + *
>> + * Author: Jiqian Chen <jiqian.c...@amd.com>
>> + */
>> +
>> +#include <xen/sched.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)
>> +{
>> +    struct vpci_bar *bar = data;
>> +    const unsigned int index = bar - pdev->vpci->header.bars;
>> +    uint64_t size = PCI_REBAR_CTRL_SIZE(val);
> 
> Since you define index as const you could also do the same with size.
> Can adjust at commit, but I also don't have a strong opinion about
> it.
Got it.
If there aren't other comments, then I don't need to send a new version, right?

> 
> Thanks, Roger.

-- 
Best regards,
Jiqian Chen.

Reply via email to