lkml.org 
[lkml]   [1999]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [bigmem-patch] 4GB with Linux on IA32
Date
> 
>
>
> On Mon, 16 Aug 1999, Kanoj Sarcar wrote:
> >
> > As I pointed out before, I don't think rawio is the only case which
> > breaks.
> >
> > I will give you one example of the type of cases that I am talking about.
> > In drivers/char/bttv.c, VIDIOCSFBUF ioctl seems to be setting the "vidadr"
> > to a kernel virtual address from the physical address present in the
> > user's pte. This will not work for bigmem pages.
>
> This is exactly why I have always been adamant that people should NOT do
> direct IO and try to walk the page tables. But people have ignored me, and
> quite frankly, those drivers should just be broken. The painful part is
> finding out which of them do it, but once done they should just be broken
> wrt bigmem, no questions asked.
>
> Linus
>

The *only* way to prevent this really is to make code like this uncompilable.
That is, prevent definitions like pte_page, PAGE_OFFSET, __va, __pa etc
from being in header files; rather make the driver/fs code invoke specific
routines that do virt-to-phys etc translations. Granted, this might be a
little costlier, but in most cases, this extra cost will be in driver code
that is not performance sensistive anyway. There really should be some
ddi/dki that drivers have to follow.

Btw, my vote goes for finding and fixing all such driver code, instead
of just breaking them for bigmem machines.

Kanoj

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:53    [W:0.121 / U:0.924 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site