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