On Wed, Jan 4, 2012 at 2:17 AM, Adam Jackson <[email protected]> wrote: > 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<[email protected]> 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 */
Will try it tomorrow when I get to the office. Thanks, Jeff. _______________________________________________ [email protected]: X.Org support Archives: http://lists.freedesktop.org/archives/xorg Info: http://lists.x.org/mailman/listinfo/xorg Your subscription address: [email protected]
