Re: [PATCH] x86/cpu/amd: Remove dead code for TSEG region remapping

From: Borislav Petkov
Date: Thu Dec 03 2020 - 03:50:01 EST


On Wed, Dec 02, 2020 at 05:32:32PM -0500, Arvind Sankar wrote:
> The pfn_range_is_mapped() call just checks whether it is mapped at all
> in the direct mapping. Is the TSEG range supposed to be marked as
> non-RAM in the E820 map? AFAICS, the only case when a direct mapping is
> created for non-RAM is for the 0-1Mb real-mode range, and that will
> always use 4k pages. Above that anything not marked as RAM will create
> an unmapped hole in the direct map, so in this case the memory just
> below the TSEG base would already use smaller pages if needed.
>
> If it's possible that the E820 mapping says this range is RAM, then
> should we also break up the direct map just after the end of the TSEG
> range for the same reason?

So I have a machine where TSEG is not 2M aligned and somewhere in the 1G
range:

[ 1.135094] tseg: 003bf00000

It is not in the E820 map either:

[ 0.019784] init_memory_mapping: [mem 0x00000000-0x000fffff]
[ 0.020014] init_memory_mapping: [mem 0x3bc00000-0x3bdfffff]
[ 0.020166] init_memory_mapping: [mem 0x20000000-0x3bbfffff]
[ 0.020327] init_memory_mapping: [mem 0x00100000-0x1fffffff]
[ 0.020677] init_memory_mapping: [mem 0x3be00000-0x3be8ffff]

That doesn't mean that it can happen that there might be some
configuration where it ends up being mapped.

So looking at what the code does, it kinda makes sense: you want the 2M
range between 0x3be00000 and 0x3c000000 to be split into 4K mappings,
*if* it is mapped.

I need to find a box where it is mapped *and* not 2M aligned, though,
for testing. Which appears kinda hard to do as all the new ones are
aligned.

The above is from a K8 box which should already be dead, as a matter of
fact.

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette