aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/agp
diff options
context:
space:
mode:
authorOndrej Zary <linux@rainbow-software.org>2010-06-16 04:13:52 -0400
committerEric Anholt <eric@anholt.net>2010-08-01 22:03:42 -0400
commit8699be3ef1d71d1c5e11eee239f53573d72515a3 (patch)
treebf099cadccc715115b7e7b9f83a58a337a544dc9 /drivers/char/agp
parent43b27f40ebc40758a4acad03ea9fa717ba65d76e (diff)
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. Signed-off-by: Ondrej Zary <linux@rainbow-software.org> Signed-off-by: Eric Anholt <eric@anholt.net>
Diffstat (limited to 'drivers/char/agp')
-rw-r--r--drivers/char/agp/intel-gtt.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c
index 9344216183a4..f97122a53ca3 100644
--- a/drivers/char/agp/intel-gtt.c
+++ b/drivers/char/agp/intel-gtt.c
@@ -797,6 +797,10 @@ static int intel_i830_create_gatt_table(struct agp_bridge_data *bridge)
797 797
798 /* we have to call this as early as possible after the MMIO base address is known */ 798 /* we have to call this as early as possible after the MMIO base address is known */
799 intel_i830_init_gtt_entries(); 799 intel_i830_init_gtt_entries();
800 if (intel_private.gtt_entries == 0) {
801 iounmap(intel_private.registers);
802 return -ENOMEM;
803 }
800 804
801 agp_bridge->gatt_table = NULL; 805 agp_bridge->gatt_table = NULL;
802 806
@@ -1279,6 +1283,11 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)
1279 1283
1280 /* we have to call this as early as possible after the MMIO base address is known */ 1284 /* we have to call this as early as possible after the MMIO base address is known */
1281 intel_i830_init_gtt_entries(); 1285 intel_i830_init_gtt_entries();
1286 if (intel_private.gtt_entries == 0) {
1287 iounmap(intel_private.gtt);
1288 iounmap(intel_private.registers);
1289 return -ENOMEM;
1290 }
1282 1291
1283 agp_bridge->gatt_table = NULL; 1292 agp_bridge->gatt_table = NULL;
1284 1293
@@ -1387,6 +1396,11 @@ static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)
1387 1396
1388 /* we have to call this as early as possible after the MMIO base address is known */ 1397 /* we have to call this as early as possible after the MMIO base address is known */
1389 intel_i830_init_gtt_entries(); 1398 intel_i830_init_gtt_entries();
1399 if (intel_private.gtt_entries == 0) {
1400 iounmap(intel_private.gtt);
1401 iounmap(intel_private.registers);
1402 return -ENOMEM;
1403 }
1390 1404
1391 agp_bridge->gatt_table = NULL; 1405 agp_bridge->gatt_table = NULL;
1392 1406