Bug 42002
Summary: | kernel BUG at kernel/resource.c:499 | ||
---|---|---|---|
Product: | Drivers | Reporter: | mludvig |
Component: | PCI | Assignee: | other_other |
Status: | RESOLVED CODE_FIX | ||
Severity: | high | CC: | alan, bjorn, jbarnes, linuxram |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 3.1-rc4 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Attachments: |
Boot log of a working kernel
Boot log of a crashing kernel lspci -vv output Boot log of a working kernel Boot log of a crashing kernel |
Description
mludvig
2011-08-30 01:40:57 UTC
Bisection found the culprit: | From 2bbc6942273b5b3097bd265d82227bdd84b351b2 Mon Sep 17 00:00:00 2001 | From: Ram Pai <linuxram@us.ibm.com> | Date: Mon, 25 Jul 2011 13:08:39 -0700 | Subject: [PATCH] PCI : ability to relocate assigned pci-resources Created attachment 71052 [details]
Boot log of a working kernel
GIT revision just before the breaking commit.
Created attachment 71062 [details]
Boot log of a crashing kernel
GIT rev 2bbc694 - first commit that doesn't boot.
Created attachment 71292 [details]
lspci -vv output
Created attachment 71642 [details]
Boot log of a working kernel
Increased verbosity with ignore_loglevel
Created attachment 71652 [details]
Boot log of a crashing kernel
Increased verbosity with ignore_loglevel
[I sent this in email earlier, intending it to be attached in bugzilla, but that didn't work.] I see two things wrong so far. 1) I think we are reassigning PCI resources when we shouldn't. pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfed8ffff] pci_root PNP0A08:00: host bridge window [mem 0x00000000-0xffffffff] pci_root PNP0A08:00: host bridge window expanded to [mem 0x00000000-0xffffffff]; [mem 0x00000000-0xffffffff] ignored pci 0000:00:1c.1: address space collision: [mem 0xfde00000-0xfdefffff 64bit pref] conflicts with PCI Bus 0000:00 [mem 0xf0000000-0xfed8ffff] pci 0000:00:1c.2: address space collision: [mem 0xfdf00000-0xfdffffff 64bit pref] conflicts with PCI Bus 0000:00 [mem 0xf0000000-0xfed8ffff] ... These "collisions" are not actually collisions -- [mem 0xfde00000-0xfdefffff 64bit pref] is a perfectly legal assignment inside the [mem 0xf0000000-0xfed8ffff] host bridge window. The supposed host bridge window [mem 0x00000000-0xffffffff] is clearly bogus, but we don't handle it well in Linux. The kernel resource code doesn't allow overlaps at the same level, so we have a hack that coalesces those overlapping host bridge windows, which leads to these "collisions," which in turn causes unnecessary PCI resource reassignments. 2) The reassignment fails when it shouldn't. It looks like when we fail, we're assigning more space to the 1c.3 and 1c.2 bridge windows than we did before, but beyond that, I think Ram will have more insight than I do right now. |