Skip to contentSkip to conversation

intel_agp: Don't oops with zero stolen memory

PATCH RESEND Applied Ondrej Zary 2 participants 6 messages Jun 16, 2010 – Jul 5, 2010 Agpgart driver

lore
Share & tools
lore
#0 lore raw

PATCH RESEND 1/1 intel_agp: Don't oops with zero stolen memory

When "onboard video memory" is set do "disabled" in BIOS on Asus P4P800-VM board (i865G), kernel oopses with memory corruption:
https://bugs.freedesktop.org/show_bug.cgi?id=28430

Fix that by cleanly aborting the initialization.

drivers/char/agp/intel-gtt.c +14 -0
diff -urp linux-2.6.35-rc2-orig/drivers/char/agp/intel-gtt.c linux-2.6.35-rc2/drivers/char/agp/intel-gtt.c
@@ -797,6 +797,10 @@ static int intel_i830_create_gatt_table(
 
 	/* we have to call this as early as possible after the MMIO base address is known */
 	intel_i830_init_gtt_entries();
+	if (intel_private.gtt_entries == 0) {
+		iounmap(intel_private.registers);
+		return -ENOMEM;
+	}
 
 	agp_bridge->gatt_table = NULL;
 
@@ -1279,6 +1283,11 @@ static int intel_i915_create_gatt_table(
 
 	/* we have to call this as early as possible after the MMIO base address is known */
 	intel_i830_init_gtt_entries();
+	if (intel_private.gtt_entries == 0) {
+		iounmap(intel_private.gtt);
+		iounmap(intel_private.registers);
+		return -ENOMEM;
+	}
 
 	agp_bridge->gatt_table = NULL;
 
@@ -1387,6 +1396,11 @@ static int intel_i965_create_gatt_table(
 
 	/* we have to call this as early as possible after the MMIO base address is known */
 	intel_i830_init_gtt_entries();
+	if (intel_private.gtt_entries == 0) {
+		iounmap(intel_private.gtt);
+		iounmap(intel_private.registers);
+		return -ENOMEM;
+	}
 
 	agp_bridge->gatt_table = NULL;
 
Signature · 1 line
Ondrej Zary
#1 lore raw
Quoted 7 lines · Ondrej Zary

When "onboard video memory" is set do "disabled" in BIOS on Asus P4P800-VM board (i865G), kernel oopses with memory corruption:
https://bugs.freedesktop.org/show_bug.cgi?id=28430

Fix that by cleanly aborting the initialization.

I haven't seen a system with that option before. Is the integrated graphics still supposed to work at that point, or is it "graphics is disabled."? What do other OSes do here?

#2 lore raw
Quoted 1 line · On Friday 02 July 2010 00:44:39 Eric Anholt wrote:

On Wed, 16 Jun 2010 10:13:52 +0200, Ondrej Zary <[email protected]>

Quoted 11 lines · wrote:
Quoted 7 lines

When "onboard video memory" is set do "disabled" in BIOS on Asus P4P800-VM board (i865G), kernel oopses with memory corruption:
https://bugs.freedesktop.org/show_bug.cgi?id=28430

Fix that by cleanly aborting the initialization.

I haven't seen a system with that option before. Is the integrated graphics still supposed to work at that point, or is it "graphics is disabled."? What do other OSes do here?

Testing it right now with Windows XP. Integrated graphics works as secondary only when the "onboard video memory" is set to "disabled"! If anything other is set (e.g. 1MB or 32MB), the driver does not load (code 10).

Signature · 1 line
Ondrej Zary
#3 lore raw
Quoted 11 lines · Ondrej Zary
Quoted 1 line · On Friday 02 July 2010 00:44:39 Eric Anholt wrote:

On Wed, 16 Jun 2010 10:13:52 +0200, Ondrej Zary <[email protected]>

Quoted 8 lines · wrote:
Quoted 7 lines

When "onboard video memory" is set do "disabled" in BIOS on Asus P4P800-VM board (i865G), kernel oopses with memory corruption:
https://bugs.freedesktop.org/show_bug.cgi?id=28430

Fix that by cleanly aborting the initialization.

Quoted 7 lines
Quoted 3 lines

I haven't seen a system with that option before. Is the integrated graphics still supposed to work at that point, or is it "graphics is disabled."? What do other OSes do here?

Testing it right now with Windows XP. Integrated graphics works as secondary only when the "onboard video memory" is set to "disabled"! If anything other is set (e.g. 1MB or 32MB), the driver does not load (code 10).

OK, I was thinking in that case that we should fix the AGP driver's math so that it correctly set up a chip with no stolen memory allocation. On the other hand, I don't think we know what the correct math is, so maybe we should just go ahead with disabling AGP in that case.

#4 lore raw
Quoted 1 line · On Friday 02 July 2010 22:57:36 Eric Anholt wrote:

On Fri, 2 Jul 2010 21:59:20 +0200, Ondrej Zary <[email protected]>

Quoted 22 lines · wrote:
Quoted 13 lines · On Friday 02 July 2010 00:44:39 Eric Anholt wrote:
Quoted 2 lines

On Wed, 16 Jun 2010 10:13:52 +0200, Ondrej Zary
<[email protected]>

Quoted 8 lines · wrote:
Quoted 7 lines

When "onboard video memory" is set do "disabled" in BIOS on Asus P4P800-VM board (i865G), kernel oopses with memory corruption:
https://bugs.freedesktop.org/show_bug.cgi?id=28430

Fix that by cleanly aborting the initialization.

Quoted 8 lines
Quoted 3 lines

I haven't seen a system with that option before. Is the integrated graphics still supposed to work at that point, or is it "graphics is disabled."? What do other OSes do here?

Testing it right now with Windows XP. Integrated graphics works as secondary only when the "onboard video memory" is set to "disabled"! If anything other is set (e.g. 1MB or 32MB), the driver does not load (code 10).

Quoted 4 lines

OK, I was thinking in that case that we should fix the AGP driver's math so that it correctly set up a chip with no stolen memory allocation. On the other hand, I don't think we know what the correct math is, so maybe we should just go ahead with disabling AGP in that case.

Someone from Intel should know how to fix this properly.

Signature · 1 line
Ondrej Zary