From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Herrenschmidt Subject: Re: [Bug #12608] 2.6.29-rc powerpc G5 Xorg legacy_mem regression Date: Fri, 06 Feb 2009 10:57:52 +1100 Message-ID: <1233878272.4612.106.camel@pasglop> References: <1233867944.4612.104.camel@pasglop> <200902051433.23294.jbarnes@virtuousgeek.org> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <200902051433.23294.jbarnes-Y1mF5jBUw70BENJcbMCuUQ@public.gmane.org> Sender: kernel-testers-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-ID: Content-Type: text/plain; charset="us-ascii" To: Jesse Barnes Cc: Hugh Dickins , "Rafael J. Wysocki" , Linux Kernel Mailing List , Kernel Testers List > No, sorry, but I just took a look and as long as the various callers can > handle it (haven't checked), this patch would work. > > > The second problem is that if I just don't expose the legacy_mem file, > > then X has no way to know whether the kernel doesn't support the > > interface or whether the HW doesn't support legacy memory access. So X > > will fallback to whacking /dev/mem which is even more bogus. At least > > that's what I remember from last I looked at that part of X code. > > > > It should be a trivial fix on X side tho. > > One option there would be to provide the file but just use anonymous memory to > back it. X will happily think it's messing with legacy VGA memory, but it > shouldn't matter that it's not actually affecting hw. That might be the best approach ... I'll have a look. Ben. > diff --git a/hw/xfree86/os-support/bus/linuxPci.c > b/hw/xfree86/os-support/bus/li > index 263fd8f..5d2da32 100644 > --- a/hw/xfree86/os-support/bus/linuxPci.c > +++ b/hw/xfree86/os-support/bus/linuxPci.c > @@ -484,8 +484,9 @@ xf86MapDomainMemory(int ScreenNum, int Flags, struct > pci_dev > if (fd >= 0) > close(fd); > if (addr == NULL || addr == MAP_FAILED) { > - perror("mmap failure"); > - FatalError("xf86MapDomainMem(): mmap() failure\n"); > + xf86Msg(X_WARNING, "xf86MapDomainMem(): mmap() failure: %s\n", > + strerror(errno)); > + return NULL; > } > return addr; > } > >