Re: [PATCH v2] PCI: Always set prefetchable base/limit upper32 registers

From: Yinghai Lu
Date: Mon Nov 30 2009 - 20:24:05 EST


Grant Grundler wrote:
> On Mon, Nov 30, 2009 at 05:03:32PM -0700, Grant Grundler wrote:
>> On Mon, Nov 30, 2009 at 02:51:44PM -0700, Alex Williamson wrote:
>>> Prior to 1f82de10 we always initialized the upper 32bits of the
>>> prefetchable memory window, regardless of the address range used.
>>> Now we only touch it for a >32bit address, which means the upper32
>>> registers remain whatever the BIOS initialized them too.
>>>
>>> It's valid for the BIOS to set the upper32 base/limit to
>>> 0xffffffff/0x00000000, which makes us program prefetchable ranges
>>> like 0xffffffffabc00000 - 0x00000000abc00000
>>>
>>> Revert the chunk of 1f82de10 that made this conditional so we always
>>> write the upper32 registers and remove now unused pref_mem64 variable.
>>>
>>> Signed-off-by: Alex Williamson <alex.williamson@xxxxxx>
>> Reviewed-by: Grant Grundler <grundler@xxxxxxxxxxxxxxxx>
>
> NAK this - I messed up. Yinghai is correct. Something else is going on.
>
> It might be perfectly OK to read 0xffffffffabc00000 if the bridge
> isn't using the upper32 Prefetchable register. Maybe the problem is
> some code is reading the upper32 value without checking that it's valid?

maybe Alex is using old lspci?

YH
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/