--- drivers/gpu/drm/nouveau/nouveau_bios.c.orig 2011-04-23 20:32:07.007340086 +0200 +++ drivers/gpu/drm/nouveau/nouveau_bios.c 2011-04-23 20:34:45.375360214 +0200 @@ -196,6 +196,15 @@ return; } +static void load_vbios_grub(struct drm_device *dev, uint8_t *data) +{ + uint8_t *grub_vbios_ptr; + + grub_vbios_ptr = phys_to_virt(0xc0000); // physical memory as defined in grub for vbios. + memcpy(data, grub_vbios_ptr, 0x10000); + NV_INFO(dev, "copied vbios %u bytes from %p to %p.", 0x10000, grub_vbios_ptr, data); +} + struct methods { const char desc[8]; void (*loadbios)(struct drm_device *, uint8_t *); @@ -207,6 +216,7 @@ { "PROM", load_vbios_prom, false }, { "PCIROM", load_vbios_pci, true }, { "ACPI", load_vbios_acpi, true }, + { "GRUB", load_vbios_grub, true }, }; #define NUM_SHADOW_METHODS ARRAY_SIZE(shadow_methods)