***REPOST: I DON'T THINK THIS GOT THROUGH TO THE LIST. SORRY IF IT DID*** OK, here's what I did. Using a pristine tarball of bttv-0.7.106 from bytesex. Modified bttv-driver.c changing two lines: Line 2187: static int do_bttv_mmap(struct bttv *btv, const char *adr, unsigned long size) to static int do_bttv_mmap(struct vm_area_struct *vma, struct bttv *btv, const char *adr, unsigned long size) obviously it was on one line! And then changed the call to this routine: Line 2201: if (remap_page_range(start, page, PAGE_SIZE, PAGE_SHARED)) to if (remap_page_range(vma, start, page, PAGE_SIZE, PAGE_SHARED)) However, I now get this upon compilation: bttv-driver.c: In function `bttv_mmap': bttv-driver.c:2216: warning: passing arg 1 of `do_bttv_mmap' from incompatible pointer typebttv-driver.c:2216: warning: passing arg 2 of `do_bttv_mmap' from incompatible pointer typebttv-driver.c:2216: warning: passing arg 3 of `do_bttv_mmap' makes pointer from integer without a cast This, I think, is because line 2216 passes 3 parameters, not 4 to match the call to do_bttv_mmap. r=do_bttv_mmap(btv, adr, size); What should the 1st paramter be? Or am I barking up the wrong tree? Thanks, Phil.