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 <[email protected]>
>> 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.

_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to