2.4.1 will break for kernels after 2.6.27 and already doesnt work for G45 in most cases.

Bug #286182 reported by Andres Freund on 2008-10-20
This bug affects 1 person
Affects Status Importance Assigned to Milestone
xserver-xorg-video-intel (Ubuntu)

Bug Description

Binary package hint: xserver-xorg-video-intel

2.6.27-git currently contains some fixes to the memory management of G45 intel cards. Unfortunately those also require an newer userspace/xorg driver (>=2.4.98).
Considering that release is approaching I do not really suggest, although it would be comfortable for me ;-), upgrading to an unstable xorg driver release, but perhaps backporting the G45 specific fixes would be sensible?
Considering that Keith Packard judged the G45 support to be utterly broken and that this would stop testing all 2.6.28-rc? kernels...

Thus this bugreport is more to raise awareness about this issue than anything else.

Reference to the thread on lkml: http://lkml.org/lkml/2008/10/19/117



Andres Freund (andres-anarazel) wrote :
Download full text (3.9 KiB)

Some more additional information:

All that is needed to fix the driver is changeset 4dd00681dd0f9fce8dfd4592b46418edbbd2eeb4 out of the xf86-video-intel git tree. Unfortunately this also requires the kernel fix to work (82e14a6215cbc9804ecc35281e973c6c8ce22fe7 out of linus repository).

Both fixes are quite contained to the specific hardware and fix it to work on more cards. I guess its still no reason for a freeze exception?

X driver:
commit 4dd00681dd0f9fce8dfd4592b46418edbbd2eeb4
Author: Eric Anholt <email address hidden>
Date: Tue Oct 14 11:33:33 2008 -0700

    Fix broken stolen memory counting on G4X.

    On the GM45 we were assuming too little stolen memory (mostly harmless,
    except when it wasn't, until the AGP fix), and on the G45 we were assuming too
    much stolen memory, which was quite harmful when we touched the page that
    didn't get mapped.

    Future stolen memory accounting should use src/reg_dumper/intel_gtt before and
    after enabling AGP on the chipset to confirm that only the GTT entries not
    mapped to stolen are replaced, and that all of the unmapped GTT entries are
    replaced with the constant scratch page.

diff --git a/src/i830_driver.c b/src/i830_driver.c
index c1d61f4..eaf5d27 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -502,8 +502,8 @@ I830DetectMemory(ScrnInfoPtr pScrn)
    range = gtt_size + 4;

    /* new 4 series hardware has seperate GTT stolen with GFX stolen */
- if (IS_G4X(pI830))
- range = 0;
+ if (IS_G4X(pI830) || IS_GM45(pI830))
+ range = 4;

    if (IS_I85X(pI830) || IS_I865G(pI830) || IS_I9XX(pI830)) {
       switch (gmch_ctrl & I855_GMCH_GMS_MASK) {

commit 82e14a6215cbc9804ecc35281e973c6c8ce22fe7
Author: Eric Anholt <email address hidden>
Date: Tue Oct 14 11:28:58 2008 -0700

    agp: Fix stolen memory counting on G4X.

    On the GM45, the amount of stolen memory mapped to the GTT was underestimated,
    even though we had 508KB more available since the GTT doesn't take from
    stolen memory. On the non-GM45 G4X, we overestimated how much stolen was
    mapped to the GTT by 4KB, resulting in GPU page faults when that page was

    This update requires a corresponding update to xf86-video-intel to work

    Signed-off-by: Eric Anholt <email address hidden>
    Signed-off-by: Dave Airlie <email address hidden>

diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c
index 016fdf0..f1fe749 100644
--- a/drivers/char/agp/intel-agp.c
+++ b/drivers/char/agp/intel-agp.c
@@ -54,8 +54,7 @@
    agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965Q_HB || \
    agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965G_HB || \
    agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GM_HB || \
- agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB || \
- agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB)
+ agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82965GME_HB)

 #define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \
   agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \
@@ -63,7 +62,8 @@

 #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_...


Andres Freund (andres-anarazel) wrote :

Oh, as an additional information: Driver works for me with these patches...

Mila Kuchta (kuchta) wrote :

I completly agree with Andres. Without these patches many of Intel newest IGP (GMA X4500) will not be accelerated for at least half a year. Considering the fact that this xorg driver are the only one having full OpenSource 3D acceleration support from the producer, this is very pity.

Andres Freund (andres-anarazel) wrote :

If I am not absolutely wrong, this is not about 3D at all. Its about basic 2D...

Mila Kuchta (kuchta) wrote :

I have G43 chipset (Intel DG43NB motherboard) and with NoAccel turned off, everything works as expected except for 3D acceleration of course.

Andres Freund (andres-anarazel) wrote :

Ah, yea, I see. But you should only need the kernel part and not the patch to xserver-xorg-video-intel, right?

Mila Kuchta (kuchta) wrote :

Don't know, probably just the kernel part, cause updating the driver to the latest development version doesn't resolve the problem.

P.S.: There should be "NoAccel turned on" in the former message, of couse.

Andres Freund (andres-anarazel) wrote :

Anything I can do for the issue? If it helps I can easily provide debpatches for both, the intel driver and the kernel.

@mila: If I understand the issue correctly the latest Xorg driver also requires a newer kernel for some cards (but not yours I *think*)

Andres Freund (andres-anarazel) wrote :

The fix for #285572 includes the relevant driver bits.

Changed in xserver-xorg-video-intel:
status: New → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers