Re: Info: mapping multiple BARs. Your kernel is fine.

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

 



On Thu, Mar 20, 2014 at 3:24 AM, Aaron Lu <aaron.lu@xxxxxxxxx> wrote:
> On 03/15/2014 10:15 PM, Rafael J. Wysocki wrote:
>> [CC list rearranged]
>>
>> On Monday, February 24, 2014 05:24:00 PM Borislav Petkov wrote:
>>> This started happening this morning after booting -rc4+tip, let's
>>> add *everybody* to CC :-)
>>>
>>> We have intel_uncore_init, snb_uncore_imc_init_box, uncore_pci_probe and
>>> other goodies on the stack.
>>
>> I've just gone throught this.
>>
>> So the problem is that we have the PNP "system" driver whose only purpose seems
>> to be to reserve system resources so that the PCI layer doesn't assign them to
>> new devices on hotplug (disclaimer: I didn't invent it, I only read the code and
>> comments in there).
>
> And to PCI devices which have uninitialized BARs.
>
>>
>> It does that for ACPI device objects having the "PNP0C02" and "PNP0C01" IDs.
>>
>> Apparently, snb_uncore_imc_init_box() steps on a range already reserved by that
>> driver on your box.  And this doesn't seem to be a coincidence, because the ACPI
>> device object in question probably *does* correspond to the memory controller
>> that the uncore driver attempts to use.
>>
>> I'm not sure how to address that right now to be honest.  Arguably, the PNP
>> "system" driver should be replaced with something saner, but still the
>> resources it claims need to be kept out of reach of the PCI's resource
>> allocation code.
>
> The quirk_system_pci_resources is meant to disable PNP devices' resource if
> they collide with any known PCI device's BAR. I'm not sure why it doesn't work
> here, perhaps the uncore PCI device doesn't have a BAR that falls in the PNP
> device's resource window?
>
Another hypothesis I am exploring with Bjorn is that the BIOS does not advertise
this correctly or that this BAR has non-standard size or behavior. So
far, we have
observed the collision only on Lenovo IvyBridge laptops. I have tried
on my desktop
SNB, IVB, HSW machines and never saw the assertion.

> Thanks,
> Aaron
>
>>
>>> ...
>>> [    0.488998] software IO TLB [mem 0xcac30000-0xcec30000] (64MB) mapped at [ffff8800cac30000-ffff8800cec2ffff]
>>> [    0.489975] resource map sanity check conflict: 0xfed10000 0xfed15fff 0xfed10000 0xfed13fff pnp 00:01
>>> [    0.490079] ------------[ cut here ]------------
>>> [    0.490204] WARNING: CPU: 2 PID: 1 at arch/x86/mm/ioremap.c:171 __ioremap_caller+0x372/0x380()
>>> [    0.490306] Info: mapping multiple BARs. Your kernel is fine.
>>> [    0.490371] Modules linked in:
>>> [    0.490558] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 3.14.0-rc4+ #1
>>> [    0.490642] Hardware name: LENOVO 2320CTO/2320CTO, BIOS G2ET86WW (2.06 ) 11/13/2012
>>> [    0.490742]  00000000000000ab ffff880213d01ad8 ffffffff816112e3 0000000000000006
>>> [    0.491032]  ffff880213d01b28 ffff880213d01b18 ffffffff8104e9bc ffff880213d01b08
>>> [    0.491343]  ffffc90000c58000 00000000fed10000 00000000fed10000 0000000000006000
>>> [    0.491631] Call Trace:
>>> [    0.493337]  [<ffffffff816112e3>] dump_stack+0x4f/0x7c
>>> [    0.493420]  [<ffffffff8104e9bc>] warn_slowpath_common+0x8c/0xc0
>>> [    0.493503]  [<ffffffff8104eaa6>] warn_slowpath_fmt+0x46/0x50
>>> [    0.493588]  [<ffffffff8103f1e2>] __ioremap_caller+0x372/0x380
>>> [    0.493674]  [<ffffffff810211a2>] ? snb_uncore_imc_init_box+0x62/0x90
>>> [    0.493761]  [<ffffffff8103f247>] ioremap_nocache+0x17/0x20
>>> [    0.493846]  [<ffffffff810211a2>] snb_uncore_imc_init_box+0x62/0x90
>>> [    0.493933]  [<ffffffff81022925>] uncore_pci_probe+0xe5/0x1e0
>>> [    0.494020]  [<ffffffff812d487e>] local_pci_probe+0x4e/0xa0
>>> [    0.494104]  [<ffffffff81418a59>] ? get_device+0x19/0x20
>>> [    0.494213]  [<ffffffff812d5cd1>] pci_device_probe+0xe1/0x130
>>> [    0.494300]  [<ffffffff8141d3cb>] driver_probe_device+0x7b/0x240
>>> [    0.494385]  [<ffffffff8141d63b>] __driver_attach+0xab/0xb0
>>> [    0.494469]  [<ffffffff8141d590>] ? driver_probe_device+0x240/0x240
>>> [    0.494551]  [<ffffffff8141b71e>] bus_for_each_dev+0x5e/0x90
>>> [    0.494634]  [<ffffffff8141cede>] driver_attach+0x1e/0x20
>>> [    0.494718]  [<ffffffff8141ca57>] bus_add_driver+0x117/0x230
>>> [    0.494802]  [<ffffffff8141dd34>] driver_register+0x64/0xf0
>>> [    0.494884]  [<ffffffff812d4c14>] __pci_register_driver+0x64/0x70
>>> [    0.494972]  [<ffffffff81d0319b>] ? uncore_types_init+0x19c/0x19c
>>> [    0.495056]  [<ffffffff81d03312>] intel_uncore_init+0x177/0x41c
>>> [    0.495155]  [<ffffffff81d0319b>] ? uncore_types_init+0x19c/0x19c
>>> [    0.495242]  [<ffffffff8100029e>] do_one_initcall+0x4e/0x170
>>> [    0.495326]  [<ffffffff81071100>] ? parse_args+0x60/0x360
>>> [    0.495411]  [<ffffffff81cfbfb8>] kernel_init_freeable+0x106/0x19a
>>> [    0.495497]  [<ffffffff81cfb83b>] ? do_early_param+0x86/0x86
>>> [    0.495582]  [<ffffffff81607ef0>] ? rest_init+0xd0/0xd0
>>> [    0.495666]  [<ffffffff81607efe>] kernel_init+0xe/0xf0
>>> [    0.495749]  [<ffffffff81621f6c>] ret_from_fork+0x7c/0xb0
>>> [    0.495831]  [<ffffffff81607ef0>] ? rest_init+0xd0/0xd0
>>> [    0.495921] ---[ end trace 428f365c054d9a01 ]---
>>> [    0.496196] RAPL PMU detected, hw unit 2^-16 Joules, API unit is 2^-32 Joules, 3 fixed counters 163840 ms ovfl timer
>>> [    0.498598] futex hash table entries: 1024 (order: 5, 131072 bytes)
>>> [    0.498833] audit: initializing netlink subsys (disabled)
>>> [    0.499024] audit: type=2000 audit(1393259866.477:1): initialized
>>> ...
>>>
>>>
>>
>
--
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