* How the linux use BAT
@ 2005-10-27 13:05 Noah yan
2005-10-27 22:37 ` Benjamin Herrenschmidt
0 siblings, 1 reply; 4+ messages in thread
From: Noah yan @ 2005-10-27 13:05 UTC (permalink / raw)
To: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 864 bytes --]
I am studying source code for power mac. I am curious how linux use the BAT
MMU.
The address translation of BAT MMU is parallel with that of segment/page
MMU. BAT MMU is known as superpages in other architecture.
I am not good at the kernel coding part, hope that my questions share the
common fundermental with you and no stupid.
Here is my questions:
Is the kernel turn BAT MMU on? if so, a BAT array have been setup for that,
which part of the kernel code does this?
If BAT MMU is used, how about segment/page address translation in kernel, is
this also enabled and page table is setup?
If both BAT and seg/page are enabled, how the kernel make sure that the
correct one is used in adress translation?
Is kernel really use the segment MMU of the powerpc, I have an impression
that most kernel only use the page MMU?
Thanks in advance.
[-- Attachment #2: Type: text/html, Size: 973 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: How the linux use BAT
2005-10-27 13:05 How the linux use BAT Noah yan
@ 2005-10-27 22:37 ` Benjamin Herrenschmidt
2005-10-28 15:56 ` Noah yan
0 siblings, 1 reply; 4+ messages in thread
From: Benjamin Herrenschmidt @ 2005-10-27 22:37 UTC (permalink / raw)
To: Noah yan; +Cc: linuxppc-dev
On Thu, 2005-10-27 at 08:05 -0500, Noah yan wrote:
> I am studying source code for power mac. I am curious how linux use
> the BAT MMU.
> The address translation of BAT MMU is parallel with that of
> segment/page MMU. BAT MMU is known as superpages in other
> architecture.
> I am not good at the kernel coding part, hope that my questions share
> the common fundermental with you and no stupid.
>
> Here is my questions:
> Is the kernel turn BAT MMU on? if so, a BAT array have been setup for
> that, which part of the kernel code does this?
> If BAT MMU is used, how about segment/page address translation in
> kernel, is this also enabled and page table is setup?
>
> If both BAT and seg/page are enabled, how the kernel make sure that
> the correct one is used in adress translation?
Both are used and they don't overlap (well, they can overlap but if they
do, the BAT takes over).
> Is kernel really use the segment MMU of the powerpc, I have an
> impression that most kernel only use the page MMU?
page MMU vs. segment MMU ? hrm... what do you mean ? :) There is one MMU
in the "classsic" PowerPC and it does segment and hash table, you have to
use both, you can't just use one or the other :) You virtual addresses
go through the segments first to get the vsid which is then used along
with the remaining bits of the address to hash into the hash table in
order to get to the translations.
The way linux uses BATs is for the kernel linear mapping. Linux uses by
default (though that can be configued differently) a 3G/1G split, that
is the low 3G of address space are used by userland (and covered by the
user page tables) and the high 1G are used by the kernel. That kernel
space itself is split into a bottom part up to 768Mb (by default, that
can also be configured differently) which is the linear mapping, that is
a single linear mapping of all RAM from 0xc0000000. The rest of the
kernel space is mapped with page tables and known as the kernel virtual
space, used for vmalloc and ioremap.
The BATs are used for the linear mapping. They "override" the page
tables over it if any (though we usually don't bother setting up PTEs
over the space that is BAT mapped). They basically improve performances
by not requiring to go through the hash trasnslation for most kernel
accesses to memory and not using space in the TLB/ERAT.
Ben.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: How the linux use BAT
2005-10-27 22:37 ` Benjamin Herrenschmidt
@ 2005-10-28 15:56 ` Noah yan
2005-10-28 22:39 ` Benjamin Herrenschmidt
0 siblings, 1 reply; 4+ messages in thread
From: Noah yan @ 2005-10-28 15:56 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 3361 bytes --]
Thans Ben very much. More questions below ... :)
On 10/27/05, Benjamin Herrenschmidt <benh@kernel.crashing.org> wrote:
>
> On Thu, 2005-10-27 at 08:05 -0500, Noah yan wrote:
> > I am studying source code for power mac. I am curious how linux use
> > the BAT MMU.
> > The address translation of BAT MMU is parallel with that of
> > segment/page MMU. BAT MMU is known as superpages in other
> > architecture.
> > I am not good at the kernel coding part, hope that my questions share
> > the common fundermental with you and no stupid.
> >
> > Here is my questions:
> > Is the kernel turn BAT MMU on? if so, a BAT array have been setup for
> > that, which part of the kernel code does this?
> > If BAT MMU is used, how about segment/page address translation in
> > kernel, is this also enabled and page table is setup?
> >
> > If both BAT and seg/page are enabled, how the kernel make sure that
> > the correct one is used in adress translation?
>
> Both are used and they don't overlap (well, they can overlap but if they
> do, the BAT takes over).
>
> > Is kernel really use the segment MMU of the powerpc, I have an
> > impression that most kernel only use the page MMU?
>
> page MMU vs. segment MMU ? hrm... what do you mean ? :) There is one MMU
> in the "classsic" PowerPC and it does segment and hash table, you have to
> use both, you can't just use one or the other :) You virtual addresses
> go through the segments first to get the vsid which is then used along
> with the remaining bits of the address to hash into the hash table in
> order to get to the translations.
I am sorry that I did make it clear. It is a little confusing for me between
the hardware segment and the term "segment" or "section" used in a process's
address space (AS). One of my understanding is that a section in a process's
AS is mapped to a hardware segment, which sound straightforward but maybe
wrong because a process binary may have lots of segments that are not the
same size. Pure segment VM is also hard to maintain memory efficiency. Or,
several sections, such as different data section are in segments. I remember
in Linux x86 (posibbly 2.4), segment is not fully used in term of VM. The
segmentation of the kernel and userland are defined upon booting and never
changed later on.
Thanks very much!
Noah
The way linux uses BATs is for the kernel linear mapping. Linux uses by
> default (though that can be configued differently) a 3G/1G split, that
> is the low 3G of address space are used by userland (and covered by the
> user page tables) and the high 1G are used by the kernel. That kernel
> space itself is split into a bottom part up to 768Mb (by default, that
> can also be configured differently) which is the linear mapping, that is
> a single linear mapping of all RAM from 0xc0000000. The rest of the
> kernel space is mapped with page tables and known as the kernel virtual
> space, used for vmalloc and ioremap.
>
> The BATs are used for the linear mapping. They "override" the page
> tables over it if any (though we usually don't bother setting up PTEs
> over the space that is BAT mapped). They basically improve performances
> by not requiring to go through the hash trasnslation for most kernel
> accesses to memory and not using space in the TLB/ERAT.
>
> Ben.
>
>
>
[-- Attachment #2: Type: text/html, Size: 3963 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: How the linux use BAT
2005-10-28 15:56 ` Noah yan
@ 2005-10-28 22:39 ` Benjamin Herrenschmidt
0 siblings, 0 replies; 4+ messages in thread
From: Benjamin Herrenschmidt @ 2005-10-28 22:39 UTC (permalink / raw)
To: Noah yan; +Cc: linuxppc-dev
On Fri, 2005-10-28 at 10:56 -0500, Noah yan wrote:
>
> I am sorry that I did make it clear. It is a little confusing for me
> between the hardware segment and the term "segment" or "section" used
> in a process's address space (AS). One of my understanding is that a
> section in a process's AS is mapped to a hardware segment, which sound
> straightforward but maybe wrong because a process binary may have lots
> of segments that are not the same size.
No, there is no relationship. The kernel just sets up enough segments to
map the entire process address space, this is irrelevant to the actual
program sections.
> Pure segment VM is also hard to maintain memory efficiency. Or,
> several sections, such as different data section are in segments. I
> remember in Linux x86 (posibbly 2.4), segment is not fully used in
> term of VM. The segmentation of the kernel and userland are defined
> upon booting and never changed later on.
The segmentation mecanism on PowerPC is slightly different. We change
segments when context switching as they contain the "vsid" which acts as
a kind of context ID, thus we can keep entry for more than one
context/process in the hash table, we don't have to flush it on context
switches.
> Thanks very much!
> Noah
>
>
>
>
>
> The way linux uses BATs is for the kernel linear mapping.
> Linux uses by
> default (though that can be configued differently) a 3G/1G
> split, that
> is the low 3G of address space are used by userland (and
> covered by the
> user page tables) and the high 1G are used by the kernel. That
> kernel
> space itself is split into a bottom part up to 768Mb (by
> default, that
> can also be configured differently) which is the linear
> mapping, that is
> a single linear mapping of all RAM from 0xc0000000. The rest
> of the
> kernel space is mapped with page tables and known as the
> kernel virtual
> space, used for vmalloc and ioremap.
>
> The BATs are used for the linear mapping. They "override" the
> page
> tables over it if any (though we usually don't bother setting
> up PTEs
> over the space that is BAT mapped). They basically improve
> performances
> by not requiring to go through the hash trasnslation for most
> kernel
> accesses to memory and not using space in the TLB/ERAT.
>
> Ben.
>
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-10-28 22:39 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-27 13:05 How the linux use BAT Noah yan
2005-10-27 22:37 ` Benjamin Herrenschmidt
2005-10-28 15:56 ` Noah yan
2005-10-28 22:39 ` Benjamin Herrenschmidt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).