X Segmentation fault with i810
Adam Jackson
ajax at nwnk.net
Tue Jan 3 10:17:20 PST 2012
On 1/3/12 1:00 PM, Adam Jackson wrote:
> On 1/3/12 12:49 PM, Chris Wilson wrote:
>> On Tue, 03 Jan 2012 12:02:43 -0500, Adam Jackson<ajax at redhat.com> wrote:
>>> On 12/30/11 12:34 AM, Jeff Chua wrote:
>>>
>>>> How can I go about to help debug this?
>>>
>>> The i810 driver probably needs the equivalent fix as:
>>>
>>> http://cgit.freedesktop.org/xorg/driver/xf86-video-cirrus/commit/?id=f422d0c38b0befdb2152215ab05d0d14f3da3ed9
>>>
>>
>> The i810 driver uses vgaHWSetMmioFuncs() rather than SetStdFuncs, and so
>> leaves hwp->io uninitialised. That pointer is then dereferenced by
>> DACDelay() (as it uses pci_io_read8 irrespective of mmio/std funcs)
>> during
>> the vgaHWSaveColormap(). At which point, I'm far beyond my comfort
>> zone...
>> -Chris
>>
>
> Oof, okay, nice find. DACDelay needs to not do that, or at least, not
> unconditionally. I'll look into it.
Something like this?
---
diff --git a/hw/xfree86/vgahw/vgaHW.h b/hw/xfree86/vgahw/vgaHW.h
index e943aa3..9fa8183 100644
--- a/hw/xfree86/vgahw/vgaHW.h
+++ b/hw/xfree86/vgahw/vgaHW.h
@@ -170,10 +170,10 @@ typedef struct _vgaHWRec {
#define BITS_PER_GUN 6
#define COLORMAP_SIZE 256
-#define DACDelay(hw) \
- do { \
- pci_io_read8((hw)->io, (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
- pci_io_read8((hw)->io, (hw)->IOBase + VGA_IN_STAT_1_OFFSET); \
+#define DACDelay(hw) \
+ do { \
+ (hw)->readST01((hw)); \
+ (hw)->readST01((hw)); \
} while (0)
/* Function Prototypes */
---
- ajax
More information about the xorg
mailing list