Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Apr 2009 22:12:06 -0400
From:      John Nielsen <lists@jnielsen.net>
To:        Warren Block <wblock@wonkity.com>
Cc:        freebsd-x11@freebsd.org
Subject:   Re: r128 dual-head error
Message-ID:  <200904142212.07237.lists@jnielsen.net>
In-Reply-To: <alpine.BSF.2.00.0904132127360.14259@wonkity.com>
References:  <200904131902.22584.lists@jnielsen.net> <alpine.BSF.2.00.0904132127360.14259@wonkity.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 13 April 2009, Warren Block wrote:
> On Mon, 13 Apr 2009, John Nielsen wrote:
> > I'm trying to get dual-head + Xinerama going on a Dell Inspiron 4000
> > laptop so I can use both the integrated flat panel and an external CRT.
>
> Multiple screens aren't done with Xinerama any more.  xrandr is the new
> way.

I don't think r128 is that modern..

> > From what I can tell I have my xorg.conf configured properly and it's
> > trying to do the right thing but it's throwing an error when
> > initializing the secondary screen:
> >
> > (EE) R128(1): Unable to map MMIO aperture. Invalid argument (22)
>
> Don't know about r128 specifically, but that's an old-style xorg.conf.
>
> > How should I go about troubleshooting this?
>
> Rework your xorg.conf, example below.

I did but without much luck.

> Section "Monitor"
<snip>
>  	Option       "PreferredMode" "1920x1200"
>  	Option       "Position" "1024 0"

These options parsed fine but generated warnings about the fact that they 
were ignored.

Running with a single active "Screen" section works fine, but xrandr gives 
no indication that it's aware of more than one head/display.

Looking through the r128_driver.c code it looks like the IsPrimary and 
IsSecondary booleans only get set to true if there is more than one screen 
defined by the configuration.

I did some poor man's debugging of the original issue (by adding some log 
print statements to the code). The function which is throwing the "invalid 
argument" error is pci_device_map_range, called from R128MapMMIO. With my 
dual-screen xinerama config, R128MapMMIO is called once for each screen 
during pre-init. This succeeds for both screens (and is followed by 
corresponding UnMap calls). It is called again in ScreenInit. The call for 
the primary screen succeeds, but the call for the secondary screen fails. 
The arguments from the secondary screen's ScreenInit call are _exactly_ the 
same as they are in the pre-init call so it's either a really weird bug or 
something is happening to pScrn structure in the interim to make it 
"invalid." 

I didn't follow the chain of events any farther than that. Is there a good 
forum on e.g. freedesktop to get some help with this if it's not FreeBSD-
specific?

Thanks,

JN




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200904142212.07237.lists>