Bug 200765

Summary: A resource of firmware enabled IOAPIC conflicts with a child-bus when PCI hotplug
Product: Drivers Reporter: Lee, Chun-Yi (jlee)
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: NEW ---    
Severity: normal CC: bjorn
Priority: P1    
Hardware: x86-64   
OS: Linux   
Kernel Version: 4.4 Tree: Mainline
Regression: No
Attachments: hotplug-nic-lost-dmesg-20180614.tar.bz2
dmesg before
dmesg after

Description Lee, Chun-Yi 2018-08-08 15:04:06 UTC
Created attachment 277755 [details]
hotplug-nic-lost-dmesg-20180614.tar.bz2

I got a machine that the resource of firmware enabled IOAPIC conflicts
with the resource of a children bus when the PCI host bus be hotplug.

[ 3182.243325] PCI host bridge to bus 0001:40
[ 3182.243328] pci_bus 0001:40: root bus resource [io  0xc000-0xdfff window]
[ 3182.243330] pci_bus 0001:40: root bus resource [mem 0xdc000000-0xebffffff window]
[ 3182.243331] pci_bus 0001:40: root bus resource [mem 0x212400000000-0x2125ffffffff window]
[ 3182.243334] pci_bus 0001:40: root bus resource [bus 40-7e]
...
[ 3182.244737] pci 0001:40:05.4: [8086:6f2c] type 00 class 0x080020
[ 3182.244746] pci 0001:40:05.4: reg 0x10: [mem 0xdc000000-0xdc000fff]
...
[ 3182.246697] pci 0001:40:02.0: PCI bridge to [bus 41]
[ 3182.246702] pci 0001:40:02.0:   bridge window [mem 0xdc000000-0xdc7fffff]
...
pci 0001:40:05.4: can't claim BAR 0 [mem 0xdc000000-0xdc000fff]: address conflict with PCI Bus 0001:41 [mem 0xdc000000-0xdc7fffff]

The attached tarball includes the dmesg log for before/after hotplug. 

I have sent a patch to kernel that it can workaround the problem on issue machine:

[PATCH] x86/PCI: Claim the resources of firmware enabled IOAPIC before children bus
https://lkml.org/lkml/2018/7/24/310

The patch moves the priority of claiming the resources of firmware enabled IOAPIC to higher than sibling children bus.
Comment 1 Bjorn Helgaas 2018-08-08 19:39:53 UTC
Created attachment 277759 [details]
dmesg before

dmesg-before_test.txt extracted from the 277755 tar.bz2 file.
Comment 2 Bjorn Helgaas 2018-08-08 19:40:51 UTC
Created attachment 277761 [details]
dmesg after

dmesg-after_test.txt extracted from tar.bz2 file.