Re: PCI conflicts with latest kernels

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux