Bug 90831
Summary: | can't claim BAR 0: no compatible bridge window NVIDIA with pci=use_crs | ||
---|---|---|---|
Product: | Drivers | Reporter: | gob_iron |
Component: | PCI | Assignee: | drivers_pci (drivers_pci) |
Status: | RESOLVED INVALID | ||
Severity: | normal | CC: | bjorn, yinghai |
Priority: | P1 | ||
Hardware: | x86-64 | ||
OS: | Linux | ||
Kernel Version: | 3.18 low-latency compile | Subsystem: | |
Regression: | No | Bisected commit-id: | |
Attachments: |
kern.log
lspci -vvn output |
Description
gob_iron
2015-01-05 21:08:58 UTC
Created attachment 162581 [details]
lspci -vvn output
I'm going to attempt to debug this myself, as I'm reasonably capable of reading code and know how to add debug symbols etc. I don't (as yet) know how to make patches with diff, but I'll probably work it out. There is a patch suggested in bug 85941, which I'm going to start with as an entry point into understanding the code, along with the effect of the grub commandline parameter pci=use_crs. If I find anything of any use I'll post it here. https://bugzilla.kernel.org/show_bug.cgi?id=85491 - the above comment's bug listing leads to the wrong bug. If you have any advice or suggestions, I'd be very grateful. Many thanks. BIOS does not allocate that bar in parent range at all. and with pci=use_crs and pci=realloc, all bar get assigned resources. the trace is not related to pci. should be driver problem? This message: PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug is normal. By default, we ignore ACPI host bridge information if the BIOS date is older than 2008 (see pci_acpi_crs_quirks()). You can override that default by booting with "pci=use_crs". On your system, that results in: Command line: ... pci=use_crs ... pci_bus 0000:00: root bus resource [mem 0x80000000-0xfe000000] pci 0000:00:08.0: can't claim BAR 0 [mem 0xfe700000-0xfe7003ff 64bit]: no compatible bridge window pci 0000:00:08.0: BAR 0: assigned [mem 0x80e00000-0x80e003ff 64bit] The "no compatible bridge window" message means that 0xfe700000 isn't inside the host bridge window of [mem 0x80000000-0xfe000000], so we have to assume that accesses to 0xfe700000 will not reach the device. Therefore, Linux reassigns BAR 0 to be at [mem 0x80e00000-0x80e003ff] instead. This apparently works fine. This warning: WARNING: CPU: 0 PID: 2125 at drivers/gpu/drm/drm_ioctl.c:143 drm_setversion+0x17e/0x190 [drm]() No drm_driver.set_busid() implementation provided by nv_drm_driver [nvidia]. Use drm_dev_set_unique() to set the unique name explicitly. is unrelated to the BAR 0 messages above and is not a PCI issue. That looks like something related to the proprietary Nvidia driver. Since we can't fix that, I'm closing this as invalid. |