Re: [patch 07/18] v4l: nopage

2007-12-09 Thread Randy Dunlap
On Fri, 7 Dec 2007 16:31:42 -0800 Andrew Morton wrote:

> On Wed, 05 Dec 2007 18:15:54 +1100
> [EMAIL PROTECTED] wrote:
> 
> > +static int
> > +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
> >  {
> > struct page *page;
> >  
> > -   dprintk(3,"nopage: fault @ %08lx [vma %08lx-%08lx]\n",
> > -   vaddr,vma->vm_start,vma->vm_end);
> > -   if (vaddr > vma->vm_end)
> > -   return NOPAGE_SIGBUS;
> > +   dprintk(3,"fault: fault @ %08lx [vma %08lx-%08lx]\n",
> > +   (unsigned long)vmf->virtual_address,vma->vm_start,vma->vm_end);
> > page = alloc_page(GFP_USER | __GFP_DMA32);
> > if (!page)
> > -   return NOPAGE_OOM;
> > +   return VM_FAULT_OOM;
> > clear_user_page(page_address(page), vaddr, page);
> 
> This didn't compile on sparc64 because `vaddr' is undefined.
> 
> 
> Let us see why:
> 
> #define clear_user_page(page, vaddr, pg)  clear_page(page)
> #define copy_user_page(to, from, vaddr, pg)   copy_page(to, from)
> 
> #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
>   alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
> 
> root cause: lack of argument checking on x86 due to stupid macros.

Hm, I would have said that the root cause was that Nick removed the
vaddr parameter from the function parameters:

-static struct page*
-videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
-  int *type)
+static int
+videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {

Should the function now produce 'vaddr' internally?


> Could someone *please* start a little project of extirpating this utter
> brain damage?  Convert those macros to typechecked static inlines on x86
> (at least) so this sort of thing (which happens again and again and again)
> is lessened?

Yep, unless someone else is already doing so...

> macros are such miserable things.  I wonder if we could get checkpatch to
> help out here?  


---
~Randy
Features and documentation: http://lwn.net/Articles/260136/
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-09 Thread Randy Dunlap
On Fri, 7 Dec 2007 16:31:42 -0800 Andrew Morton wrote:

 On Wed, 05 Dec 2007 18:15:54 +1100
 [EMAIL PROTECTED] wrote:
 
  +static int
  +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
   {
  struct page *page;
   
  -   dprintk(3,nopage: fault @ %08lx [vma %08lx-%08lx]\n,
  -   vaddr,vma-vm_start,vma-vm_end);
  -   if (vaddr  vma-vm_end)
  -   return NOPAGE_SIGBUS;
  +   dprintk(3,fault: fault @ %08lx [vma %08lx-%08lx]\n,
  +   (unsigned long)vmf-virtual_address,vma-vm_start,vma-vm_end);
  page = alloc_page(GFP_USER | __GFP_DMA32);
  if (!page)
  -   return NOPAGE_OOM;
  +   return VM_FAULT_OOM;
  clear_user_page(page_address(page), vaddr, page);
 
 This didn't compile on sparc64 because `vaddr' is undefined.
 
 
 Let us see why:
 
 #define clear_user_page(page, vaddr, pg)  clear_page(page)
 #define copy_user_page(to, from, vaddr, pg)   copy_page(to, from)
 
 #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
   alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
 
 root cause: lack of argument checking on x86 due to stupid macros.

Hm, I would have said that the root cause was that Nick removed the
vaddr parameter from the function parameters:

-static struct page*
-videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
-  int *type)
+static int
+videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {

Should the function now produce 'vaddr' internally?


 Could someone *please* start a little project of extirpating this utter
 brain damage?  Convert those macros to typechecked static inlines on x86
 (at least) so this sort of thing (which happens again and again and again)
 is lessened?

Yep, unless someone else is already doing so...

 macros are such miserable things.  I wonder if we could get checkpatch to
 help out here?  


---
~Randy
Features and documentation: http://lwn.net/Articles/260136/
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-08 Thread Andrew Morton
On Sat, 8 Dec 2007 10:15:08 +0100 Ingo Molnar <[EMAIL PROTECTED]> wrote:

> 
> * Andrew Morton <[EMAIL PROTECTED]> wrote:
> 
> > On Wed, 05 Dec 2007 18:15:54 +1100
> > [EMAIL PROTECTED] wrote:
> > 
> > > +static int
> > > +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
> > >  {
> > >   struct page *page;
> > >  
> > > - dprintk(3,"nopage: fault @ %08lx [vma %08lx-%08lx]\n",
> > > - vaddr,vma->vm_start,vma->vm_end);
> > > - if (vaddr > vma->vm_end)
> > > - return NOPAGE_SIGBUS;
> > > + dprintk(3,"fault: fault @ %08lx [vma %08lx-%08lx]\n",
> > > + (unsigned long)vmf->virtual_address,vma->vm_start,vma->vm_end);
> > >   page = alloc_page(GFP_USER | __GFP_DMA32);
> > >   if (!page)
> > > - return NOPAGE_OOM;
> > > + return VM_FAULT_OOM;
> > >   clear_user_page(page_address(page), vaddr, page);
> > 
> > This didn't compile on sparc64 because `vaddr' is undefined.
> > 
> > 
> > Let us see why:
> > 
> > #define clear_user_page(page, vaddr, pg)clear_page(page)
> > #define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
> > 
> > #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
> > alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
> > 
> > root cause: lack of argument checking on x86 due to stupid macros.
> > 
> > 
> > Could someone *please* start a little project of extirpating this 
> > utter brain damage?  Convert those macros to typechecked static 
> > inlines on x86 (at least) so this sort of thing (which happens again 
> > and again and again) is lessened?

We should fix existing stuff, like this.

> i wanted to write a reply to suggest a checkpatch policy for this. When 
> i noticed this sentence at the end of your mail:
> 
> > macros are such miserable things.  I wonder if we could get checkpatch 
> > to help out here?
> 
> /me too :-)
> 
> any policy that gets into checkpatch.pl's default output is a policy for 
> arch/x86 patch merging. (as long as it's not a false positive) And 
> because we do all these unifications the effects of checkpatch.pl 
> permeate basically every aspect of arch/x86.
> 
> one approach would be to make new macros in include/* a no-no. That 
> would hurt a few of the legitimate uses though, so maybe a useful 
> refinement would be to check the structure of macros: are arguments used 
> twice (side-effect), are arguments unused (typechecking dager), are 
> arguments cast (type-loss danger), etc. Looks very hard to implement 
> though :-/ Andy, what do you think?

I think whining about anything which matches

#define foo(...) bar(

would be a decent start.

grep '^[   ]*#[]*define[   ][  ]*[^(]*[(][^)]*[)][  
]*[a-zA-Z]' include/asm-x86/*.h

(hey, that worked on the first attempt)

Lots of falsies tho.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-08 Thread Ingo Molnar

* Andrew Morton <[EMAIL PROTECTED]> wrote:

> On Wed, 05 Dec 2007 18:15:54 +1100
> [EMAIL PROTECTED] wrote:
> 
> > +static int
> > +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
> >  {
> > struct page *page;
> >  
> > -   dprintk(3,"nopage: fault @ %08lx [vma %08lx-%08lx]\n",
> > -   vaddr,vma->vm_start,vma->vm_end);
> > -   if (vaddr > vma->vm_end)
> > -   return NOPAGE_SIGBUS;
> > +   dprintk(3,"fault: fault @ %08lx [vma %08lx-%08lx]\n",
> > +   (unsigned long)vmf->virtual_address,vma->vm_start,vma->vm_end);
> > page = alloc_page(GFP_USER | __GFP_DMA32);
> > if (!page)
> > -   return NOPAGE_OOM;
> > +   return VM_FAULT_OOM;
> > clear_user_page(page_address(page), vaddr, page);
> 
> This didn't compile on sparc64 because `vaddr' is undefined.
> 
> 
> Let us see why:
> 
> #define clear_user_page(page, vaddr, pg)  clear_page(page)
> #define copy_user_page(to, from, vaddr, pg)   copy_page(to, from)
> 
> #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
>   alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
> 
> root cause: lack of argument checking on x86 due to stupid macros.
> 
> 
> Could someone *please* start a little project of extirpating this 
> utter brain damage?  Convert those macros to typechecked static 
> inlines on x86 (at least) so this sort of thing (which happens again 
> and again and again) is lessened?

i wanted to write a reply to suggest a checkpatch policy for this. When 
i noticed this sentence at the end of your mail:

> macros are such miserable things.  I wonder if we could get checkpatch 
> to help out here?

/me too :-)

any policy that gets into checkpatch.pl's default output is a policy for 
arch/x86 patch merging. (as long as it's not a false positive) And 
because we do all these unifications the effects of checkpatch.pl 
permeate basically every aspect of arch/x86.

one approach would be to make new macros in include/* a no-no. That 
would hurt a few of the legitimate uses though, so maybe a useful 
refinement would be to check the structure of macros: are arguments used 
twice (side-effect), are arguments unused (typechecking dager), are 
arguments cast (type-loss danger), etc. Looks very hard to implement 
though :-/ Andy, what do you think?

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-08 Thread Ingo Molnar

* Andrew Morton [EMAIL PROTECTED] wrote:

 On Wed, 05 Dec 2007 18:15:54 +1100
 [EMAIL PROTECTED] wrote:
 
  +static int
  +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
   {
  struct page *page;
   
  -   dprintk(3,nopage: fault @ %08lx [vma %08lx-%08lx]\n,
  -   vaddr,vma-vm_start,vma-vm_end);
  -   if (vaddr  vma-vm_end)
  -   return NOPAGE_SIGBUS;
  +   dprintk(3,fault: fault @ %08lx [vma %08lx-%08lx]\n,
  +   (unsigned long)vmf-virtual_address,vma-vm_start,vma-vm_end);
  page = alloc_page(GFP_USER | __GFP_DMA32);
  if (!page)
  -   return NOPAGE_OOM;
  +   return VM_FAULT_OOM;
  clear_user_page(page_address(page), vaddr, page);
 
 This didn't compile on sparc64 because `vaddr' is undefined.
 
 
 Let us see why:
 
 #define clear_user_page(page, vaddr, pg)  clear_page(page)
 #define copy_user_page(to, from, vaddr, pg)   copy_page(to, from)
 
 #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
   alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
 
 root cause: lack of argument checking on x86 due to stupid macros.
 
 
 Could someone *please* start a little project of extirpating this 
 utter brain damage?  Convert those macros to typechecked static 
 inlines on x86 (at least) so this sort of thing (which happens again 
 and again and again) is lessened?

i wanted to write a reply to suggest a checkpatch policy for this. When 
i noticed this sentence at the end of your mail:

 macros are such miserable things.  I wonder if we could get checkpatch 
 to help out here?

/me too :-)

any policy that gets into checkpatch.pl's default output is a policy for 
arch/x86 patch merging. (as long as it's not a false positive) And 
because we do all these unifications the effects of checkpatch.pl 
permeate basically every aspect of arch/x86.

one approach would be to make new macros in include/* a no-no. That 
would hurt a few of the legitimate uses though, so maybe a useful 
refinement would be to check the structure of macros: are arguments used 
twice (side-effect), are arguments unused (typechecking dager), are 
arguments cast (type-loss danger), etc. Looks very hard to implement 
though :-/ Andy, what do you think?

Ingo
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-08 Thread Andrew Morton
On Sat, 8 Dec 2007 10:15:08 +0100 Ingo Molnar [EMAIL PROTECTED] wrote:

 
 * Andrew Morton [EMAIL PROTECTED] wrote:
 
  On Wed, 05 Dec 2007 18:15:54 +1100
  [EMAIL PROTECTED] wrote:
  
   +static int
   +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
 struct page *page;

   - dprintk(3,nopage: fault @ %08lx [vma %08lx-%08lx]\n,
   - vaddr,vma-vm_start,vma-vm_end);
   - if (vaddr  vma-vm_end)
   - return NOPAGE_SIGBUS;
   + dprintk(3,fault: fault @ %08lx [vma %08lx-%08lx]\n,
   + (unsigned long)vmf-virtual_address,vma-vm_start,vma-vm_end);
 page = alloc_page(GFP_USER | __GFP_DMA32);
 if (!page)
   - return NOPAGE_OOM;
   + return VM_FAULT_OOM;
 clear_user_page(page_address(page), vaddr, page);
  
  This didn't compile on sparc64 because `vaddr' is undefined.
  
  
  Let us see why:
  
  #define clear_user_page(page, vaddr, pg)clear_page(page)
  #define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
  
  #define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
  alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)
  
  root cause: lack of argument checking on x86 due to stupid macros.
  
  
  Could someone *please* start a little project of extirpating this 
  utter brain damage?  Convert those macros to typechecked static 
  inlines on x86 (at least) so this sort of thing (which happens again 
  and again and again) is lessened?

We should fix existing stuff, like this.

 i wanted to write a reply to suggest a checkpatch policy for this. When 
 i noticed this sentence at the end of your mail:
 
  macros are such miserable things.  I wonder if we could get checkpatch 
  to help out here?
 
 /me too :-)
 
 any policy that gets into checkpatch.pl's default output is a policy for 
 arch/x86 patch merging. (as long as it's not a false positive) And 
 because we do all these unifications the effects of checkpatch.pl 
 permeate basically every aspect of arch/x86.
 
 one approach would be to make new macros in include/* a no-no. That 
 would hurt a few of the legitimate uses though, so maybe a useful 
 refinement would be to check the structure of macros: are arguments used 
 twice (side-effect), are arguments unused (typechecking dager), are 
 arguments cast (type-loss danger), etc. Looks very hard to implement 
 though :-/ Andy, what do you think?

I think whining about anything which matches

#define foo(...) bar(

would be a decent start.

grep '^[   ]*#[]*define[   ][  ]*[^(]*[(][^)]*[)][  
]*[a-zA-Z]' include/asm-x86/*.h

(hey, that worked on the first attempt)

Lots of falsies tho.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-07 Thread Andrew Morton
On Wed, 05 Dec 2007 18:15:54 +1100
[EMAIL PROTECTED] wrote:

> +static int
> +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
>  {
>   struct page *page;
>  
> - dprintk(3,"nopage: fault @ %08lx [vma %08lx-%08lx]\n",
> - vaddr,vma->vm_start,vma->vm_end);
> - if (vaddr > vma->vm_end)
> - return NOPAGE_SIGBUS;
> + dprintk(3,"fault: fault @ %08lx [vma %08lx-%08lx]\n",
> + (unsigned long)vmf->virtual_address,vma->vm_start,vma->vm_end);
>   page = alloc_page(GFP_USER | __GFP_DMA32);
>   if (!page)
> - return NOPAGE_OOM;
> + return VM_FAULT_OOM;
>   clear_user_page(page_address(page), vaddr, page);

This didn't compile on sparc64 because `vaddr' is undefined.


Let us see why:

#define clear_user_page(page, vaddr, pg)clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)

#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)

root cause: lack of argument checking on x86 due to stupid macros.


Could someone *please* start a little project of extirpating this utter
brain damage?  Convert those macros to typechecked static inlines on x86
(at least) so this sort of thing (which happens again and again and again)
is lessened?


macros are such miserable things.  I wonder if we could get checkpatch to
help out here?  
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 07/18] v4l: nopage

2007-12-07 Thread Andrew Morton
On Wed, 05 Dec 2007 18:15:54 +1100
[EMAIL PROTECTED] wrote:

 +static int
 +videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
  {
   struct page *page;
  
 - dprintk(3,nopage: fault @ %08lx [vma %08lx-%08lx]\n,
 - vaddr,vma-vm_start,vma-vm_end);
 - if (vaddr  vma-vm_end)
 - return NOPAGE_SIGBUS;
 + dprintk(3,fault: fault @ %08lx [vma %08lx-%08lx]\n,
 + (unsigned long)vmf-virtual_address,vma-vm_start,vma-vm_end);
   page = alloc_page(GFP_USER | __GFP_DMA32);
   if (!page)
 - return NOPAGE_OOM;
 + return VM_FAULT_OOM;
   clear_user_page(page_address(page), vaddr, page);

This didn't compile on sparc64 because `vaddr' is undefined.


Let us see why:

#define clear_user_page(page, vaddr, pg)clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)

#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr)

root cause: lack of argument checking on x86 due to stupid macros.


Could someone *please* start a little project of extirpating this utter
brain damage?  Convert those macros to typechecked static inlines on x86
(at least) so this sort of thing (which happens again and again and again)
is lessened?


macros are such miserable things.  I wonder if we could get checkpatch to
help out here?  
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 07/18] v4l: nopage

2007-12-05 Thread npiggin
Convert v4l from nopage to fault.
Remove redundant vma range checks.

Signed-off-by: Nick Piggin <[EMAIL PROTECTED]>
Cc: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: linux-kernel@vger.kernel.org
---
 drivers/media/video/videobuf-dma-sg.c |   20 
 1 file changed, 8 insertions(+), 12 deletions(-)

Index: linux-2.6/drivers/media/video/videobuf-dma-sg.c
===
--- linux-2.6.orig/drivers/media/video/videobuf-dma-sg.c
+++ linux-2.6/drivers/media/video/videobuf-dma-sg.c
@@ -385,30 +385,26 @@ videobuf_vm_close(struct vm_area_struct 
  * now ...).  Bounce buffers don't work very well for the data rates
  * video capture has.
  */
-static struct page*
-videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
-  int *type)
+static int
+videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {
struct page *page;
 
-   dprintk(3,"nopage: fault @ %08lx [vma %08lx-%08lx]\n",
-   vaddr,vma->vm_start,vma->vm_end);
-   if (vaddr > vma->vm_end)
-   return NOPAGE_SIGBUS;
+   dprintk(3,"fault: fault @ %08lx [vma %08lx-%08lx]\n",
+   (unsigned long)vmf->virtual_address,vma->vm_start,vma->vm_end);
page = alloc_page(GFP_USER | __GFP_DMA32);
if (!page)
-   return NOPAGE_OOM;
+   return VM_FAULT_OOM;
clear_user_page(page_address(page), vaddr, page);
-   if (type)
-   *type = VM_FAULT_MINOR;
-   return page;
+   vmf->page = page;
+   return 0;
 }
 
 static struct vm_operations_struct videobuf_vm_ops =
 {
.open = videobuf_vm_open,
.close= videobuf_vm_close,
-   .nopage   = videobuf_vm_nopage,
+   .fault= videobuf_vm_fault,
 };
 
 /* -

-- 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 07/18] v4l: nopage

2007-12-05 Thread npiggin
Convert v4l from nopage to fault.
Remove redundant vma range checks.

Signed-off-by: Nick Piggin [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Cc: linux-kernel@vger.kernel.org
---
 drivers/media/video/videobuf-dma-sg.c |   20 
 1 file changed, 8 insertions(+), 12 deletions(-)

Index: linux-2.6/drivers/media/video/videobuf-dma-sg.c
===
--- linux-2.6.orig/drivers/media/video/videobuf-dma-sg.c
+++ linux-2.6/drivers/media/video/videobuf-dma-sg.c
@@ -385,30 +385,26 @@ videobuf_vm_close(struct vm_area_struct 
  * now ...).  Bounce buffers don't work very well for the data rates
  * video capture has.
  */
-static struct page*
-videobuf_vm_nopage(struct vm_area_struct *vma, unsigned long vaddr,
-  int *type)
+static int
+videobuf_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
 {
struct page *page;
 
-   dprintk(3,nopage: fault @ %08lx [vma %08lx-%08lx]\n,
-   vaddr,vma-vm_start,vma-vm_end);
-   if (vaddr  vma-vm_end)
-   return NOPAGE_SIGBUS;
+   dprintk(3,fault: fault @ %08lx [vma %08lx-%08lx]\n,
+   (unsigned long)vmf-virtual_address,vma-vm_start,vma-vm_end);
page = alloc_page(GFP_USER | __GFP_DMA32);
if (!page)
-   return NOPAGE_OOM;
+   return VM_FAULT_OOM;
clear_user_page(page_address(page), vaddr, page);
-   if (type)
-   *type = VM_FAULT_MINOR;
-   return page;
+   vmf-page = page;
+   return 0;
 }
 
 static struct vm_operations_struct videobuf_vm_ops =
 {
.open = videobuf_vm_open,
.close= videobuf_vm_close,
-   .nopage   = videobuf_vm_nopage,
+   .fault= videobuf_vm_fault,
 };
 
 /* -

-- 

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/