pmd_alloc() usage incorrect?

2 messages, 2 authors, 2005-10-10 · open the first message on its own page

pmd_alloc() usage incorrect?

From: Grant Grundler <hidden>
Date: 2005-10-09 20:44:58

Hi,
I stumbled across what looks like incorrect code in
arch/ppc/kernel/dma-mapping.c:

static int __init dma_alloc_init(void)
{
...
        do {
                pgd = pgd_offset(&init_mm, CONSISTENT_BASE);
                pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE);
                if (!pmd) {
...

Doesn't pmd_alloc() want a pud_t * for the second parameter?
ie also need to call pud_alloc() or the equivalent.

I've very little clue how this works...just looking at different
bits of code in my quest to understand it well enough to enable
USE_HPPA_IOREMAP in include/asm-parisc/io.h.

ciao,
grant

Re: pmd_alloc() usage incorrect?

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2005-10-10 01:40:35

On Sun, 2005-10-09 at 14:23 -0600, Grant Grundler wrote:
Hi,
I stumbled across what looks like incorrect code in
arch/ppc/kernel/dma-mapping.c:

static int __init dma_alloc_init(void)
{
...
        do {
                pgd = pgd_offset(&init_mm, CONSISTENT_BASE);
                pmd = pmd_alloc(&init_mm, pgd, CONSISTENT_BASE);
                if (!pmd) {
...

Doesn't pmd_alloc() want a pud_t * for the second parameter?
ie also need to call pud_alloc() or the equivalent.

I've very little clue how this works...just looking at different
bits of code in my quest to understand it well enough to enable
USE_HPPA_IOREMAP in include/asm-parisc/io.h.
In theory you are right... However, ppc32 uses a 2 level page tables, so
this doesn't matter, pud is folded into pgd (and pmd too in fact, you
probably don't need it neither). It would still be nicer to do the full
conversion to pud types though.

Ben.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help