Debugging xserver on Alpha
Michael Cree
mcree at orcon.net.nz
Tue Oct 6 14:16:07 PDT 2009
On 6/10/2009, at 12:28 PM, Michael Cree wrote:
> On 6/10/2009, at 11:16 AM, Matt Turner wrote:
>> On Sat, Oct 3, 2009 at 7:05 PM, Michael Cree <mcree at orcon.net.nz>
>> wrote:
>>>
>>> With commit c7680befe5ae on the xserver 1.7 branch only support for
>>> Alphas
>>> with sparse I/O remains. I have already sent you and the list a
>>> patch that
>>> reenables the code path for Alphas with dense I/O mapping.
>>
>> I can't see anything in this commit that would break dense systems.
>> It
>> just removed Jensen support (which is a _third_ memory mapping model,
>> i.e., not the same as sparse or dense). This commit was present in
>> xserver-1.5, which I can confirm works on alpha, so I don't think
>> it's
>> got anything to do with the problems we've seen.
I can't find commit c7680befe5ae on the xserver-1.5-branch or in its
ancestral commits so I am a little confused as to why you say it is
present in xserver-1.5.
As part of the commit the functions xf86SlowBCopyFromBus() and
xf86SlowBCopyToBus() are modified, e.g., part of the commit is:
xf86SlowBCopyFromBus(unsigned char *src, unsigned char *dst, int
count)
{
- if (isJensen())
- {
- unsigned long addr;
- long result;
-
- addr = (unsigned long) src;
- while( count ){
- result = *(volatile int *) addr;
- result >>= ((addr>>SPARSE) & 3) * 8;
- *dst++ = (unsigned char) (0xffUL & result);
- addr += 1<<SPARSE;
- count--;
- outb(0x80, 0x00);
- }
+ unsigned long addr;
+ long result;
+
+ addr = (unsigned long) src;
+ while( count ){
+ result = *(volatile int *) addr;
+ result >>= ((addr>>SPARSE) & 3) * 8;
+ *dst++ = (unsigned char) (0xffUL & result);
+ addr += 1<<SPARSE;
+ count--;
+ outb(0x80, 0x00);
}
- else
- xf86SlowBcopy(src,dst,count);
}
The above not only removed the Jensen support but also removes the
dense path (the call to xf86SlowBcopy), thus leaving the sparse code
(since SPARSE is defined as 7 which is correct for sparse memory
mapping only).
It is possible that the commit elsewhere protects against
xf86SlowBCopyFromBus() being called at all on a dense memory mapped
system - I didn't thoroughly check the rest of the commit - but even
if so, somehow xf86SlowBCopyFromBus() is being called on dense memory
mapped systems on the xserver 1.6 branch and on the xserver 1.7 branch
and it results in a segmentation violation since the pointer addr is
incremented by a far too big a value.
> I should really test
> the SIS card with 1.5 to completely verify and eliminate any
> surprises. I haven't compiled the 1.5 xserver for quite a while and I
> think I have lost the list of proto/lib/etc versions that was required
> for it. Is there someway I can get all the proto and lib modules set
> to the correct versions for xserver 1.5 branch build efficiently?
OK, I have found that the xorg git supermodule has the versions of all
modules necessary for the xserver 1.5 branch. I will confirm within
the next day or two that the SIS video card and the Radeon HD2400 card
do indeed work on the xserver 1.5 branch.
Cheers
Michael.
More information about the xorg-devel
mailing list