--- radeon_bios.c~	2006-05-03 19:21:45.000000000 +0200
+++ radeon_bios.c	2006-08-24 13:38:26.000000000 +0200
@@ -46,6 +46,7 @@
 {
     RADEONInfoPtr info     = RADEONPTR(pScrn);
     int tmp;
+    unsigned short dptr;
 
     if (!(info->VBIOS = xalloc(RADEON_VBIOS_SIZE))) {
 	xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
@@ -77,7 +78,22 @@
 	xfree (info->VBIOS);
 	info->VBIOS = NULL;
 	return FALSE;
-    } 
+    }
+
+    /* verify it's x86 bios not OF firmware, copied from radeonfb */
+    dptr = RADEON_BIOS16(0x18);
+    /* if pci data signature is wrong assume x86 video bios anyway */
+    if (RADEON_BIOS32(dptr) != (('R' << 24) | ('I' << 16) | ('C' << 8) | 'P')) {
+       xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		   "ROM pci data signature incorrect, ignoring\n");
+    }
+    else if (info->VBIOS[dptr + 0x14] != 0x0) {
+	xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
+		   "Not a x86 BIOS ROM Image, BIOS data will not be used\n");
+	xfree (info->VBIOS);
+	info->VBIOS = NULL;
+	return FALSE;
+    }
 
     if (info->VBIOS) info->ROMHeaderStart = RADEON_BIOS16(0x48);
 
