From: "Michael Bishop" <[email protected]>
Date: Fri, 23 Dec 2005 11:23:36 -0500
> Bad pte = 1fa00600a88, process = X, vm_flags = 184473, vaddr = 7001e000
> Call Trace:
Strange, I thought we'd fixed this.
Aww crap....
Linus, X.org is doing a MAP_PRIVATE mmap() of these discontiguous
I/O mappings of the sparc frame buffer device it seems. So the
MAP_SHARED check in is_cow_mapping() doesn't pass.
Michael, does X.org work properly with your FFB card with 2.6.14 by
chance?
I really haven't used X.org on anything other than an ATI Radeon on
Sparc boxes, so it's highly possible that SunFFB support in X.org has
deteriorated into a non-working state due to not being looked after by
anyone.
Back to the MAP_SHARED issue, the culprit code in X.org can be fixed
but I know that this thing has been coded this way for years. It
goes like this (hw/xfree86/os-support/bus/Sbus.c:xf86MapSbusMem()):
ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE,
psdp->fd, off);
if (ret == (pointer) -1) {
ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED,
psdp->fd, off);
}
if (ret == (pointer) -1)
return NULL;
and that should be fixed to just be:
ret = (pointer) mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED,
psdp->fd, off);
if (ret == (pointer) -1)
return NULL;
Ie. use MAP_SHARED unconditionally.
-
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/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]