[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1203056680.30010.21.camel@caritas-dev.intel.com>
Date: Fri, 15 Feb 2008 14:24:40 +0800
From: "Huang, Ying" <ying.huang@...el.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Ingo Molnar <mingo@...e.hu>, Andi Kleen <andi@...stfloor.org>,
tglx@...utronix.de, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Fix left over EFI cache mapping problems
On Thu, 2008-02-14 at 21:44 -0800, Linus Torvalds wrote:
>
> On Fri, 15 Feb 2008, Huang, Ying wrote:
> >
> > I think the patch following may be better, because it is possible that
> > the EFI_PAGE_SHIFT and PAGE_SHIFT are different.
>
> If this is a problem in practice, we'd be better off having a helper
> function to do it, to avoid overflows. Right now, doing
>
> > + unsigned long num_pages;
> > + num_pages = (md->num_pages << EFI_PAGE_SHIFT) >> PAGE_SHIFT;
>
> overflows at 4GB on x86-32. And maybe you never have areas that big, and
> people are moving over to 64-bit anyway, it still sounds like a bug
> waiting to happen.
>
> So *if* we care (I doubt we do, since EFI_PAGE_SHIFT at least right now
> matches PAGE_SHIFT on x86), you'd probably want to do something like
>
> static inline unsigned long efi_pages_to_native_pages(unsigned long efi_pages)
> {
> #if EFI_PAGE_SHIFT > PAGE_SHIFT
> return efi_pages << (EFI_PAGE_SHIFT - PAGE_SHIFT);
> #else
> return efi_pages >> (PAGE_SHIFT - EFI_PAGE_SHIFT);
> #endif
> }
>
> or whatever.
>
> Otherwise, trying to avoid a bug with different page sizes is actually
> more likely to *introduce* one rather than fix one..
Yes, I will fix this.
Best Regards,
Huang Ying
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists