public inbox for linux-pci@vger.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Michal Babička" <babicka.michal@icloud.com>
Cc: linux-pci@vger.kernel.org, linux-thunderbolt@lists.01.org,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
Subject: Re: [BUG] Apple Mac mini 2018 + Thunderbolt 3 eGPU: PCI bridge window / BAR allocation failure prevents NVIDIA and AMD GPUs from initializing
Date: Tue, 17 Mar 2026 11:14:04 -0500	[thread overview]
Message-ID: <20260317161404.GA89998@bhelgaas> (raw)
In-Reply-To: <8653B042-F73C-46F4-8D3E-79D9F0CC1250@icloud.com>

[+cc Ilpo]

On Sun, Mar 15, 2026 at 12:35:53PM +0100, Michal Babička wrote:
> Subject: Apple Mac mini 2018 + Thunderbolt 3 eGPU: PCI bridge window / BAR allocation failure prevents NVIDIA and AMD GPUs from initializing
> 
> Hardware / platform:
> - Host: Apple Mac mini 2018
> - Connection: Thunderbolt 3
> - eGPU enclosure: Razer Core X Chroma
> - Tested GPUs:
>   - NVIDIA Quadro P400
>   - NVIDIA Quadro P4000
>   - AMD Radeon Vega 64
> 
> Linux distributions / kernels tested:
> - Ubuntu-based systems
> - Zorin OS 18 Pro
> - Multiple kernels tested, including 6.12.x and 6.17.x

Thanks, I think this is a known issue.  The most useful information
for fixing this would be a dmesg log and output of "sudo lspci -vv"
from the newest available kernel, ideally v6.19 or v7.0-rc.  Please
don't select what appears to be useful, just collect the complete
logs.

I'm pretty sure this isn't a regression, but if it is, please mention
the newest working version and the oldest broken one.

> Problem summary:
> On Apple Mac mini 2018, an external GPU connected through
> Thunderbolt 3 in a Razer Core X Chroma enclosure is detected and
> enumerates on the PCI bus, but GPU initialization fails because PCI
> bridge windows / BAR resources are not assigned correctly.
> 
> This is reproducible across different Linux installations and with
> GPUs from different vendors, which strongly suggests a
> platform/topology-level PCIe resource allocation problem rather than
> a bug in one specific GPU driver.
> 
> Observed behavior:
> - The Thunderbolt enclosure is detected correctly.
> - boltctl shows the enclosure as connected / authorized.
> - The GPU appears in lspci.
> - The kernel loads the vendor driver module.
> - GPU initialization then fails.
> 
> For NVIDIA, nvidia-smi reports:
>   "NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver."
> 
> Relevant NVIDIA kernel messages include:
> - "BAR 1 [mem size 0x10000000 64bit pref]: can't assign; no space"
> - "BAR 3 [mem size 0x02000000 64bit pref]: can't assign; no space"
> - "This PCI I/O region assigned to your NVIDIA device is invalid"
> - "BAR1 is 0M @ 0x0"
> - "RmInitAdapter failed"
> - in some attempts also:
>   "fallen off the bus and is not responding to commands"
> 
> With NVIDIA Quadro P4000, the same general failure pattern was observed:
> - the GPU is detected on the PCI bus,
> - the NVIDIA kernel module loads,
> - initialization fails,
> - and the logs again point to invalid / missing BAR assignments and
>   resource allocation problems behind the Thunderbolt PCIe bridge
>   hierarchy.
> 
> For nouveau, the failure is visible as BAR/resource allocation
> failure as well, for example:
> - "bar: one-time init failed, -12"
> - "init failed with -12"
> - "Device allocation failed: -12"
> 
> With AMD Radeon Vega 64 installed in the same enclosure on the same
> host, the same fundamental problem occurs:
> - the enclosure is detected,
> - the GPU enumerates,
> - initialization fails,
> - and the overall behavior indicates the same lower-level PCI
> resource / bridge window allocation issue.
> 
> This strongly suggests the issue is not NVIDIA-specific.
> 
> Thunderbolt state:
> boltctl reports the Razer Core X Chroma enclosure as
> connected/authorized correctly, for example:
> - type: peripheral
> - generation: Thunderbolt 3
> - status: authorized
> - rx speed: 40 Gb/s
> - tx speed: 40 Gb/s
> 
> Important conclusion:
> Thunderbolt authorization itself appears to work.
> PCI enumeration also works.
> The failure happens later, at PCI resource assignment / bridge
> window sizing / BAR allocation time.
> 
> Key dmesg patterns observed:
> - multiple "can't assign; no space" messages for PCI bridges and BARs
> - BAR1 / BAR3 of the GPU not assigned
> - bridge windows under the Thunderbolt hierarchy not large enough
> - reassignment attempts that still leave required windows unassigned
>   or invalid
> - vendor driver subsequently failing device initialization
> 
> Examples of affected topology in logs:
> - 0000:00:01.1
> - 0000:05:00.0
> - 0000:06:01.0
> - 0000:0b:00.0
> - in other boots, the same problem may appear under a different BDF
>   address after Thunderbolt re-enumeration
> 
> Representative log excerpts:
> - pci 0000:0b:00.0: BAR 1 [mem size 0x10000000 64bit pref]: can't assign; no space
> - pci 0000:0b:00.0: BAR 3 [mem size 0x02000000 64bit pref]: can't assign; no space
> - pci 0000:06:01.0: bridge window [mem size 0x10000000]: can't assign; no space
> - pci 0000:05:00.0: bridge window [mem size 0x20200000]: can't assign; no space
> - NVRM: BAR1 is 0M @ 0x0
> - NVRM: RmInitAdapter failed
> - NVRM: The NVIDIA GPU ... has fallen off the bus and is not responding to commands
> - nouveau ... Device allocation failed: -12
> 
> Kernel command line options already tested:
> The following boot parameters were tested in various combinations:
> - pci=realloc=on
> - pci=hpbussize=0x33,hpmemsize=256M,hpiosize=2M
> - pcie_aspm=off
> - pci=nommconf
> - pci=noaer
> 
> These mitigations did not resolve the issue.
> 
> Why this looks platform/topology specific:
> - The same Thunderbolt eGPU enclosure is recognized correctly.
> - The same failure pattern appears with NVIDIA Quadro P400, NVIDIA
>   Quadro P4000, and AMD Radeon Vega 64.
> - The common denominator is Apple Mac mini 2018 + Thunderbolt PCIe
>   topology under Linux.
> - The failure mode is centered around PCI bridge window sizing / BAR
>   placement, not around one vendor-specific driver alone.
> 
> Expected behavior:
> The Thunderbolt eGPU should receive valid PCI bridge windows and
> valid BAR assignments so that the GPU driver can initialize the
> device successfully.
> 
> Actual behavior:
> The GPU is visible on the bus, but bridge windows and BAR resources
> are not fully assigned, which leaves the device unusable and
> prevents the driver from completing initialization.
> 
> Request:
> Please investigate PCI resource allocation / bridge window sizing
> for Thunderbolt eGPU topologies on Apple Mac mini 2018 under Linux,
> especially where large GPU BARs must be assigned behind multiple
> Thunderbolt / PCIe bridges.
> 
> Cross-vendor reproducibility on the same enclosure and same host
> strongly suggests that the root cause is in PCIe/Thunderbolt
> resource allocation on this platform rather than in a specific
> NVIDIA or AMD driver.

  reply	other threads:[~2026-03-17 16:14 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-15 11:35 [BUG] Apple Mac mini 2018 + Thunderbolt 3 eGPU: PCI bridge window / BAR allocation failure prevents NVIDIA and AMD GPUs from initializing Michal Babička
2026-03-17 16:14 ` Bjorn Helgaas [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-03-15 11:54 Michal Babička
2026-03-16 11:30 ` Thorsten Leemhuis
2026-03-16 11:57 ` Ilpo Järvinen
2026-03-24  6:41   ` Michal Babička
2026-03-24  7:34 Michal Babička
2026-03-24  7:48 Michal Babička

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=20260317161404.GA89998@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=babicka.michal@icloud.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-thunderbolt@lists.01.org \
    /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