linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Klaus Kudielka <klaus.kudielka@gmail.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	linux-pci@vger.kernel.org,  LKML <linux-kernel@vger.kernel.org>,
	regressions@lists.linux.dev
Subject: Re: WARNING at drivers/pci/setup-bus.c:2373, bisected to "PCI: Use pbus_select_window_for_type() during mem window sizing"
Date: Mon, 27 Oct 2025 15:29:39 +0200 (EET)	[thread overview]
Message-ID: <ba71af2d-c484-9de2-2a7d-b1ac254eeaea@linux.intel.com> (raw)
In-Reply-To: <af6f0f2e1dec9053c6984139b8582fc6ceab6813.camel@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2988 bytes --]

On Sat, 25 Oct 2025, Klaus Kudielka wrote:

> On Sat, 2025-10-25 at 12:11 +0200, Klaus Kudielka wrote:
> > 
> > > [    0.027107] pci 0000:00:03.0: bridge window [mem 0x00200000-0x003fffff] to [bus 02] add_size 200000 add_align 200000
> > > [    0.027115] pci 0000:00:03.0: bridge window [mem 0x00200000-0x003fffff] to [bus 02] add_size 200000 add_align 200000
> > 
> > So, this part of  pbus_size_mem() now seems to be called *TWICE* for the same bridge window:
> > 
> > 		add_to_list(realloc_head, bus->self, b_res, size1-size0, add_align);
> > 		pci_info(bus->self, "bridge window %pR to %pR add_size %llx add_align %llx\n",
> > 			   b_res, &bus->busn_res,
> > 			   (unsigned long long) (size1 - size0),
> > 			   (unsigned long long) add_align);
> > 
> > 
> > 
> > WITHOUT the offending commit, I see only one line, and no WARNING.
> > > [    0.027405] pci 0000:00:03.0: bridge window [mem 0x00200000-0x003fffff] to [bus 02] add_size 200000 add_align 200000
> > 
> > 
> 
> 
> After some more testing, I think I know what is going on.
> 
> - My device seems to have only non-prefetchable IO resources.
> - In pci_bus_size_bridges(), pbus_size_mem() is called twice, once with IORESOURCE_PREFETCH, once without.
> - This seems to be the intended behaviour (with or without the offending commit).
> 
> - What DOES make the difference, is the use of pbus_select_window_for_type() inside pbus_size_mem().
> - On my device, that function returns the ***non-prefetchable*** resource, even if being asked for a prefetchable one.
> - End result: b_res is valid (and identical) in both calls to pbus_size_mem().
> - Honestly, that does not look right to me.
> 
> 
> Indeed, my device goes back to the original behaviour (without WARNING), if I go back to the original use of
> find_bus_resource_of_type():
> 
> 
> --- a/drivers/pci/setup-bus.c
> +++ b/drivers/pci/setup-bus.c
> @@ -1312,7 +1312,9 @@ static void pbus_size_mem(struct pci_bus *bus, unsigned long type,
>         resource_size_t min_align, win_align, align, size, size0, size1 = 0;
>         resource_size_t aligns[28]; /* Alignments from 1MB to 128TB */
>         int order, max_order;
> -       struct resource *b_res = pbus_select_window_for_type(bus, type);
> +       struct resource *b_res = find_bus_resource_of_type(bus,
> +                       IORESOURCE_MEM | IORESOURCE_PREFETCH | IORESOURCE_MEM_64,
> +                       type);
>         resource_size_t children_add_size = 0;
>         resource_size_t children_add_align = 0;
>         resource_size_t add_align = 0;
> 
> 
> 
> Comments?

Hi Klaus,

I'm sorry this ended up falling through cracks until now (this is far from 
the only regression I've on my table at the moment).

Big kudos for you from figuring out what went wrong! For a bridge which 
doesn't have a prefetchable window, pbus_size_mem() should not be called for it.

I've sent a fix patch separately. Please test it.

-- 
 i.

  reply	other threads:[~2025-10-27 13:29 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-29 13:10 [PATCH v2 00/24] PCI: Bridge window selection improvements Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 01/24] m68k/PCI: Use pci_enable_resources() in pcibios_enable_device() Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 02/24] sparc/PCI: Remove pcibios_enable_device() as they do nothing extra Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 03/24] MIPS: PCI: Use pci_enable_resources() Ilpo Järvinen
2025-10-13 19:54   ` Guenter Roeck
2025-10-13 21:02     ` Bjorn Helgaas
2025-10-28 22:45       ` Bjorn Helgaas
2025-10-13 21:17     ` Thomas Bogendoerfer
2025-10-13 23:00       ` Maciej W. Rozycki
2025-10-14 10:54         ` Ilpo Järvinen
2025-10-14 12:22           ` Maciej W. Rozycki
2025-10-14 12:41             ` Ilpo Järvinen
2025-10-14 12:58               ` Maciej W. Rozycki
2025-10-17 10:49               ` Thomas Bogendoerfer
2025-10-17 10:58                 ` Ilpo Järvinen
2025-10-17 12:11                   ` Thomas Bogendoerfer
2025-10-18 21:32             ` Maciej W. Rozycki
2025-08-29 13:10 ` [PATCH v2 04/24] PCI: Move find_bus_resource_of_type() earlier Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 05/24] PCI: Refactor find_bus_resource_of_type() logic checks Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 06/24] PCI: Always claim bridge window before its setup Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 07/24] PCI: Disable non-claimed bridge window Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 08/24] PCI: Use pci_release_resource() instead of release_resource() Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 09/24] PCI: Enable bridge even if bridge window fails to assign Ilpo Järvinen
2025-08-29 13:10 ` [PATCH v2 10/24] PCI: Preserve bridge window resource type flags Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 11/24] PCI: Add defines for bridge window indexing Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 12/24] PCI: Add bridge window selection functions Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 13/24] PCI: Fix finding bridge window in pci_reassign_bridge_resources() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 14/24] PCI: Warn if bridge window cannot be released when resizing BAR Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 15/24] PCI: Use pbus_select_window() during BAR resize Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 16/24] PCI: Use pbus_select_window_for_type() during IO window sizing Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 17/24] PCI: Rename resource variable from r to res Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 18/24] PCI: Use pbus_select_window() in space available checker Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 19/24] PCI: Use pbus_select_window_for_type() during mem window sizing Ilpo Järvinen
2025-10-18  8:14   ` WARNING at drivers/pci/setup-bus.c:2373, bisected to "PCI: Use pbus_select_window_for_type() during mem window sizing" Klaus Kudielka
2025-10-25 10:11     ` Klaus Kudielka
2025-10-25 12:44       ` Klaus Kudielka
2025-10-27 13:29         ` Ilpo Järvinen [this message]
2025-08-29 13:11 ` [PATCH v2 20/24] PCI: Refactor distributing available memory to use loops Ilpo Järvinen
2025-10-08 14:47   ` john_chen_chn
2025-08-29 13:11 ` [PATCH v2 21/24] PCI: Refactor remove_dev_resources() to use pbus_select_window() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 22/24] PCI: Add pci_setup_one_bridge_window() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 23/24] PCI: Pass bridge window to pci_bus_release_bridge_resources() Ilpo Järvinen
2025-08-29 13:11 ` [PATCH v2 24/24] PCI: Alter misleading recursion " Ilpo Järvinen
2025-09-16 16:02 ` [PATCH v2 00/24] PCI: Bridge window selection improvements Ilpo Järvinen
2025-09-16 16:23 ` Bjorn Helgaas

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=ba71af2d-c484-9de2-2a7d-b1ac254eeaea@linux.intel.com \
    --to=ilpo.jarvinen@linux.intel.com \
    --cc=bhelgaas@google.com \
    --cc=klaus.kudielka@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=regressions@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).