From: Bjorn Helgaas <helgaas@kernel.org>
To: Zhou Shengqing <zhoushengqing@ttyinfo.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] PCI: Enable io space 1k granularity for intel cpu root port
Date: Fri, 21 Jun 2024 16:02:07 -0500 [thread overview]
Message-ID: <20240621210207.GA1405708@bhelgaas> (raw)
In-Reply-To: <20240621020608.28964-1-zhoushengqing@ttyinfo.com>
On Fri, Jun 21, 2024 at 02:06:08AM +0000, Zhou Shengqing wrote:
> This patch add 1k granularity for intel root port bridge.Intel latest
> server CPU support 1K granularity,And there is an BIOS setup item named
> "EN1K",but linux doesn't support it. if an IIO has 5 IOU (SPR has 5 IOUs)
> all are bifurcated 2x8.In a 2P server system,There are 20 P2P bridges
> present.if keep 4K granularity allocation,it need 20*4=80k io space,
> exceeding 64k.I test it in a 16*nvidia 4090s system under intel eaglestrem
> platform.There are six 4090s that cannot be allocated I/O resources.
> So I applied this patch.And I found a similar implementation in quirks.c,
> but it only targets the Intel P64H2 platform.
>
> Signed-off-by: Zhou Shengqing <zhoushengqing@ttyinfo.com>
> ---
> drivers/pci/probe.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 5fbabb4e3425..3f0c901c6653 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -461,6 +461,8 @@ static void pci_read_bridge_windows(struct pci_dev *bridge)
> u32 buses;
> u16 io;
> u32 pmem, tmp;
> + u16 ven_id, dev_id;
> + u16 en1k = 0;
> struct resource res;
>
> pci_read_config_dword(bridge, PCI_PRIMARY_BUS, &buses);
> @@ -478,6 +480,26 @@ static void pci_read_bridge_windows(struct pci_dev *bridge)
> }
> if (io) {
> bridge->io_window = 1;
> + if (pci_is_root_bus(bridge->bus)) {
> + list_for_each_entry(dev, &bridge->bus->devices, bus_list) {
> + pci_read_config_word(dev, PCI_VENDOR_ID, &ven_id);
> + pci_read_config_word(dev, PCI_DEVICE_ID, &dev_id);
> + if (ven_id == PCI_VENDOR_ID_INTEL && dev_id == 0x09a2) {
> + /*IIO MISC Control offset 0x1c0*/
> + pci_read_config_word(dev, 0x1c0, &en1k);
> + }
> + }
> + /*
> + *Intel ICX SPR EMR GNR
> + *IIO MISC Control (IIOMISCCTRL_1_5_0_CFG) — Offset 1C0h
> + *bit 2:Enable 1K (EN1K)
> + *This bit when set, enables 1K granularity for I/O space decode
> + *in each of the virtual P2P bridges
> + *corresponding to root ports, and DMI ports.
> + */
> + if (en1k & 0x4)
> + bridge->io_window_1k = 1;
> + }
Can you implement this as a quirk similar to quirk_p64h2_1k_io()?
I don't want to clutter the generic code with device-specific things
like this.
> pci_read_bridge_io(bridge, &res, true);
> }
>
> --
> 2.39.2
>
next prev parent reply other threads:[~2024-06-21 21:02 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-21 2:06 [PATCH] PCI: Enable io space 1k granularity for intel cpu root port Zhou Shengqing
2024-06-21 21:02 ` Bjorn Helgaas [this message]
2024-06-22 15:06 ` zhoushengqing
2024-06-22 17:52 ` Bjorn Helgaas
2024-06-23 2:26 ` Zhou Shengqing
2024-06-24 8:01 ` Zhou Shengqing
2024-06-26 8:27 ` kernel test robot
2024-06-26 10:09 ` kernel test robot
2024-06-26 11:19 ` [PATCH v2] [PATCH v2] " Zhou Shengqing
2024-06-26 15:26 ` Bjorn Helgaas
2024-06-27 0:58 ` [PATCH v3] " Zhou Shengqing
2024-06-29 21:34 ` Bjorn Helgaas
2024-06-30 2:52 ` Re: [PATCH] " Zhou Shengqing
2024-07-01 21:06 ` Bjorn Helgaas
2024-07-02 3:56 ` [PATCH v4] Subject: " Zhou Shengqing
2024-07-12 18:48 ` Bjorn Helgaas
2024-07-23 8:04 ` Zhou Shengqing
2024-07-24 2:34 ` Ethan Zhao
2024-07-24 3:38 ` Zhou Shengqing
2024-07-24 5:39 ` Ethan Zhao
2024-07-24 6:35 ` [PATCH v4] " Zhou Shengqing
2024-07-24 7:51 ` Ethan Zhao
2024-07-25 7:44 ` Zhou Shengqing
2024-07-26 2:27 ` Ethan Zhao
2024-07-02 5:49 ` Re: Re: [PATCH] PCI: Enable io space 1k granularity for Zhou Shengqing
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240621210207.GA1405708@bhelgaas \
--to=helgaas@kernel.org \
--cc=bhelgaas@google.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=zhoushengqing@ttyinfo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.