mmap and ppc460gt
Josh Boyer
jwboyer at linux.vnet.ibm.com
Thu Aug 28 20:36:44 EST 2008
On Wed, 27 Aug 2008 20:47:24 -0700
vb <vb at vsbe.com> wrote:
> On Wed, Aug 27, 2008 at 8:12 PM, Roland Dreier <rdreier at cisco.com> wrote:
> > OK, please try this and let me know if it helps:
> >
> > diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
> > index 1c93c25..98d7bf9 100644
> > --- a/arch/powerpc/mm/mem.c
> > +++ b/arch/powerpc/mm/mem.c
> > @@ -75,11 +75,10 @@ static inline pte_t *virt_to_kpte(unsigned long vaddr)
> >
> > int page_is_ram(unsigned long pfn)
> > {
> > - unsigned long paddr = (pfn << PAGE_SHIFT);
> > -
> > #ifndef CONFIG_PPC64 /* XXX for now */
> > - return paddr < __pa(high_memory);
> > + return pfn < max_pfn;
> > #else
> > + unsigned long paddr = (pfn << PAGE_SHIFT);
> > int i;
> > for (i=0; i < lmb.memory.cnt; i++) {
> > unsigned long base;
> >
>
> Ronald, thank you for the hint, I actually tried something slightly different:
>
> return pfn < (__pa(high_memory) >> PAGE_SHIFT);
>
> and it worked. I guess your fix is faster, I'll try it tomorrow.
>
> I also checked that the problem is there in the top of the tree in
> Linus' git - isn't it amazing - I guess very few people use mmap()
> nowadays, everybody must be using UIO device :-)
No, most people use device drivers in the kernel.
josh
More information about the Linuxppc-embedded
mailing list