On 03/24/2010 10:05 AM, Bjorn Helgaas wrote: > On Wed, 2010-03-24 at 08:48 +0100, Giampaolo Bellini wrote: >> Hello Otavio and Bjorn >> >> here are ICOP's notes about PCI collision on Vortex86-DX: >> >> >See the attachment for Memory mapping of Vortex86SX/DX >> >E segment will be occuiped by USB decice and our engineer >> suggest you >> >to :disable" USB device or you can use D segment to slove PCI >> address collision >> >> I don't test this yet... but I don't think that disable USB could be a >> good solution :-( > > Giampaolo, as far as I can tell, everything is working correctly on your > machine, and your only complaint is that we print a KERN_ERR message > that makes the system switch to text mode. > > We already do relocate the BARs with the collisions: > > pci 0000:00:0b.0: address space collision: [mem 0x000e0000-0x000e0fff] already in use > pci 0000:00:0b.1: address space collision: [mem 0x000e1000-0x000e10ff] already in use > pci 0000:00:0b.0: BAR 0: assigned [mem 0x20000000-0x20000fff] > pci 0000:00:0b.1: BAR 0: assigned [mem 0x20001000-0x200010ff] > > and this relocation works fine, as far as I can tell. > > I think the collision is probably related to the fact that we get this > from the BIOS: > > #1 [000009fc00 - 0000100000] BIOS reserved > > and then we find these PCI devices using that same region, but I don't > know enough about the BIOS memory map to know whether it's fixable. I > cc'd Yinghai, who knows more about that. current kernel will remove the region if that range is E820_RAM from BIOS e820 remove range: 00000000000a0000 - 0000000000100000 (usable) but if your BIOS said that range is reserved, BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) it will not change anything. please check if following patch helps. diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 5d7ba1a..3f676a0 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -682,7 +682,7 @@ static void __init trim_bios_range(void) * area (640->1Mb) as ram even though it is not. * take them out. */ - e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 1); + e820_remove_range(BIOS_BEGIN, BIOS_END - BIOS_BEGIN, E820_RAM, 0); sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); } -- 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