I have done some more experimenting with the video driver
and the "agpgart" kernel module.

By now, I am fairly sure that the BIOS is the main problem.
More precisely, the BIOS refuses to use the VESA mode 0x0117
(ie, 1024x768x64k).  This is obvious as 

  mode = I830VESAGetModeInfo (pScrn, 0x0117);

returns with 

  mode->ModeAttributes & 1

*not* being set (ie, it indicates that this mode is not
supported by the hardware).  This is, of course, nonsense as
Intel's i830M driver for Win98 doesn't have any problems
using this mode on the same hardware.

So, the only explanation that is left is that the BIOS
assumes that with 1MB of stolen memory, the given mode
cannot be supported (which makes some sense as the
framebuffer needs to be about 1.5MB, but doesn't take into
account the dynamically allocated video memory).  I tried to
trick the BIOS by adding (yet another exception) to
I830VESASetVBEMode() and switch to 0x0117 using the legacy
int10 BIOS call 0x0045.  However, this didn't seem to help;
the X server died with a "lockup" message somewhat later
during initialisation.

As the insufficient amount of stolen memory seems to be what
prevents the BIOS from allowing VESA mode 0x0117, I tried to
switch the GMCH into a mode where it steals 8MB instead of
only one.  This worked after booting Linux with an explicit
"mem=..." boot parameter to leave enough room to steal seven
more MB at the time when the agpgart kernel module is
initialised.  The I830_GMCH_CTRL register originally
contains the value 0x34 (indicating 1MB of stolen memory),
which I changed to 0x44 in intel_i830_configure().

Unfortunately, this didn't have any effect on what the BIOS
regards as valid video modes; ie, it still didn't allow VESA
mode 0x0117.  In other words, the BIOS doesn't seem to
inspect the GMCH control register, but instead seems to
store the parameters of the current video configuration
somewhere else.  (This didn't surprise me too much, but it
was worth a try.)

To me, the question seems to be how Intel's driver using
their Dynamic Video Memory

  http://developer.intel.com/design/chipsets/applnots/298638.htm

convinces the BIOS to allow VESA mode 0x0117.  Via a special
BIOS function?

Cheers,
Manuel

_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to