On Mon, Nov 16, 2009 at 02:52:11PM -0600, Bjorn Helgaas wrote: > On Monday 16 November 2009 12:54:17 pm Ira W. Snyder wrote: > > > + pci_read_config_word(dev, 0xc0, &word1); > > + pci_read_config_word(dev, 0xc2, &word2); > > + dev_dbg(&dev->dev, "CNB20LE: noPF 0x%.4x 0x%.4x\n", word1, word2); > > + if (word1 != word2) { > > + start = word1; > > + end = word2; > > This looks much closer to something that might work, but I think > you forgot the "(word1 << 16) | 0x0000" stuff here. And it got > added to the IO aperture, where it shouldn't be. > You're exactly right. I must have left my brain turned off when I wrote that. :) Adding the shifts for the memory regions, and removing them for the IO regions, the machine boots! There is still some problem left: the system prints some messages about not being able to reserve IO ranges. Ideas? I get the following relevant output: [ 0.304015] pci 0000:00:00.0: calling cnb20le_res+0x0/0x1ff [ 0.308014] pci 0000:00:00.0: CNB20LE: busses: 0 to 0 [ 0.312014] pci 0000:00:00.0: CNB20LE: noPF 0xfc20 0xfeaf [ 0.316015] pci 0000:00:00.0: CNB20LE: PF 0xfc00 0xfc0f [ 0.320014] pci 0000:00:00.0: CNB20LE: IO 0xd000 0xdffc [ 0.324075] pci 0000:00:00.0: calling quirk_resource_alignment+0x0/0x164 [ 0.328090] pci 0000:00:00.1: found [1166:0009] class 000600 header type 00 [ 0.332014] pci 0000:00:00.1: calling quirk_no_ata_d3+0x0/0x24 [ 0.336013] pci 0000:00:00.1: calling acpi_pm_check_graylist+0x0/0x2d [ 0.340009] * The chipset may have PM-Timer Bug. Due to workarounds for a bug, [ 0.340014] * this clock source is slow. If you are sure your timer does not have [ 0.340018] * this bug, please use "acpi_pm_good" to disable the workaround [ 0.344013] pci 0000:00:00.1: calling cnb20le_res+0x0/0x1ff [ 0.348014] pci 0000:00:00.1: CNB20LE: busses: 1 to 1 [ 0.352014] pci 0000:00:00.1: CNB20LE: noPF 0xfeb0 0xfebf [ 0.356014] pci 0000:00:00.1: CNB20LE: PF 0xfc10 0xfc1f [ 0.360014] pci 0000:00:00.1: CNB20LE: IO 0xe000 0xeffc [ snip useless output ] [ 0.508083] pci_bus 0000:00: fixups for bus [ 0.512010] PCI: x86_pci_root_bus_res_quirks called [ 0.516010] PCI: peer root bus 00 res updated from pci conf [ 0.520019] pci_bus 0000:00: bus scan returning with max=00 [ 0.525298] vgaarb: device added: PCI:0000:00:07.0,decodes=io+mem,owns=io+mem,locks=none [ 0.533111] pci_bus 0000:01: scanning bus [ 0.536118] pci_bus 0000:01: fixups for bus [ 0.540010] PCI: x86_pci_root_bus_res_quirks called [ 0.544010] PCI: peer root bus 01 res updated from pci conf [ 0.548016] pci_bus 0000:01: bus scan returning with max=01 [ 0.552010] PCI: Discovered primary peer bus 01 [IRQ] [ 0.556044] pci 0000:00:0f.0: ServerWorks IRQ router [1166:0200] [ 0.560048] PCI: pci_cache_line_size set to 32 bytes [ 0.564036] pci 0000:00:05.0: BAR 0: reserving [mem 0xfe2bd000-0xfe2bdfff flags 0x20200] (d=0, p=0) [ 0.568015] pci 0000:00:05.0: BAR 1: reserving [io 0xde80-0xdebf flags 0x20101] (d=0, p=0) [ 0.572015] pci 0000:00:05.0: BAR 2: reserving [mem 0xfcf00000-0xfcffffff flags 0x20200] (d=0, p=0) [ 0.576022] pci 0000:00:06.0: BAR 0: reserving [mem 0xfe2be000-0xfe2befff flags 0x20200] (d=0, p=0) [ 0.580015] pci 0000:00:06.0: BAR 1: reserving [io 0xdf00-0xdf3f flags 0x20101] (d=0, p=0) [ 0.584015] pci 0000:00:06.0: BAR 2: reserving [mem 0xfe100000-0xfe1fffff flags 0x20200] (d=0, p=0) [ 0.588022] pci 0000:00:07.0: BAR 0: reserving [mem 0xfd000000-0xfdffffff flags 0x20200] (d=0, p=0) [ 0.592029] pci 0000:00:0f.1: BAR 0: reserving [io 0x01f0-0x01f7 flags 0x110] (d=0, p=0) [ 0.596012] pci 0000:00:0f.1: no compatible bridge window for [io 0x01f0-0x01f7] [ 0.600011] pci 0000:00:0f.1: can't reserve [io 0x01f0-0x01f7] [ 0.604013] pci 0000:00:0f.1: BAR 1: reserving [io 0x03f6 flags 0x110] (d=0, p=0) [ 0.608011] pci 0000:00:0f.1: no compatible bridge window for [io 0x03f6] [ 0.612011] pci 0000:00:0f.1: can't reserve [io 0x03f6] [ 0.616013] pci 0000:00:0f.1: BAR 2: reserving [io 0x0170-0x0177 flags 0x110] (d=0, p=0) [ 0.620012] pci 0000:00:0f.1: no compatible bridge window for [io 0x0170-0x0177] [ 0.624011] pci 0000:00:0f.1: can't reserve [io 0x0170-0x0177] [ 0.628013] pci 0000:00:0f.1: BAR 3: reserving [io 0x0376 flags 0x110] (d=0, p=0) [ 0.632011] pci 0000:00:0f.1: no compatible bridge window for [io 0x0376] [ 0.636011] pci 0000:00:0f.1: can't reserve [io 0x0376] [ 0.640013] pci 0000:00:0f.1: BAR 4: reserving [io 0xffa0-0xffaf flags 0x20101] (d=0, p=0) [ 0.644012] pci 0000:00:0f.1: no compatible bridge window for [io 0xffa0-0xffaf] [ 0.648011] pci 0000:00:0f.1: can't reserve [io 0xffa0-0xffaf] [ 0.652021] pci 0000:00:0f.2: BAR 0: reserving [mem 0xfe2bf000-0xfe2bffff flags 0x20200] (d=0, p=0) [ 0.657413] Switching to clocksource tsc [ 0.660485] pnp: PnP ACPI: disabled [ 0.666080] pci 0000:00:0f.1: BAR 4: assigned [io 0xd000-0xd00f] [ 0.672258] pci 0000:00:0f.1: BAR 4: set to [io 0xd000-0xd00f] (PCI address [0xd000-0xd00f] [ 0.680701] pci_bus 0000:00: resource 0 [mem 0xfc200000-0xfeafffff] [ 0.686974] pci_bus 0000:00: resource 1 [mem 0xfc000000-0xfc0fffff pref] [ 0.693679] pci_bus 0000:00: resource 2 [io 0xd000-0xdffc] [ 0.699257] pci_bus 0000:01: resource 0 [mem 0xfeb00000-0xfebfffff] [ 0.705529] pci_bus 0000:01: resource 1 [mem 0xfc100000-0xfc1fffff pref] [ 0.712233] pci_bus 0000:01: resource 2 [io 0xe000-0xeffc] [ 0.717894] NET: Registered protocol family 2 [ 0.722486] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.730432] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.742488] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes) Ira -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html