2008-10-13 12:26:35

by Eric Lacombe

[permalink] [raw]
Subject: [x86_64] Implementation differences compared to x86_32

Hi,

Thanks again for all your answers.
I have some new questions with regard to x86_64 specificities.

- In x86_32, the physical memory is mapped on kernel land by way of 4 MB
pages.
But for x86_64, I read that the physical memory was mapped by way of 4 KB
pages. Is it true ? and in this case, why this choice ?

- Is the LDT used in x86_64 ?
I saw that the GDT_ENTRY_LDT is defined to 10 but when I read in the GDT at
0x50 for the segment descriptor, there is nothing, the area is filled with
zeros.

- Where can I find some documentation about the specifities of x86_64 compared
to x86_32, particularly about memory management ?
Perhaps you can (or someone on the list) depict those specificities ?

Thanks in advance

Eric


2008-10-13 13:03:17

by Andi Kleen

[permalink] [raw]
Subject: Re: [x86_64] Implementation differences compared to x86_32

Eric Lacombe <[email protected]> writes:
>
> - In x86_32, the physical memory is mapped on kernel land by way of 4 MB
> pages.
> But for x86_64, I read that the physical memory was mapped by way of 4 KB
> pages. Is it true ? and in this case, why this choice ?

It's normally not true (except in some special circumstances)

>
> - Is the LDT used in x86_64 ?
> I saw that the GDT_ENTRY_LDT is defined to 10 but when I read in the GDT at
> 0x50 for the segment descriptor, there is nothing, the area is filled with
> zeros.

The LDT is only allocated when the user space program needs it. That's
normally only older 32bit applications. Newer 32bit kernels also
use the same setup. Older 32bit kernels still had an iBCS entry
point in a default LDT, but that has been considered obsolete
for some time and removed.

>
> - Where can I find some documentation about the specifities of x86_64 compared
> to x86_32, particularly about memory management ?
> Perhaps you can (or someone on the list) depict those specificities ?

An somewhat outdated but still reasonable introduction is my old
paper http://halobates.de/x86-64.pdf

-Andi
--
[email protected]

2008-10-13 13:28:29

by Eric Lacombe

[permalink] [raw]
Subject: Re: [x86_64] Implementation differences compared to x86_32

On Monday 13 October 2008 15:03:02 Andi Kleen wrote:
> Eric Lacombe <[email protected]> writes:
> > - In x86_32, the physical memory is mapped on kernel land by way of 4 MB
> > pages.
> > But for x86_64, I read that the physical memory was mapped by way of 4 KB
> > pages. Is it true ? and in this case, why this choice ?
>
> It's normally not true (except in some special circumstances)

What are these particular circumstances ?

Eric