how do Radeon drivers use the bios?

euan

New member
I've been tinkering with the Radeon VIVO Beos 2d drivers, trying to make them work with the 8500.

After taking care of the PCI Device ID, It gets this far...

Code:
ysinit2: 28
sysinit2: 29
sysinit2: 30
Starting  /boot/beos/bin/sh /boot/beos/system/boot/Bootscript
opening (generic) match file for /boot/beos/system/lib/libroot.so
  memcpy patched to memcpy_default
  memcpy_internal patched to memcpy_default
  memset patched to memset_default
  memset_internal patched to memset_default
  memcpy patched to memcpy_default
  memcpy_internal patched to memcpy_default
  memset patched to memset_default
  memset_internal patched to memset_default
4 pair(s) found
0 pair(s) found
sysinit2: 31
failed to delete bi 0x94af10 from mtime index
could not delete size for file 0x94af10
Looking for RTC settings file
clockconfig: RTC stores local time.
clockconfig: Setting timezone to '/boot/beos/etc/timezones/Europe/London'
Radeon: init_hardware 
Radeon: Card_Detect 
Radeon: init_driver - Enter 
Radeon: Radeon_Probe called 
Radeon: Radeon_Probe found an ATI card 
Radeon: Radeon_TestBios 
Radeon: map_bios 
Radeon: hard bios addr = 0xc0000 
Radeon: soft bios addr = 0x0 
Radeon: Radeon_FindRom 
Radeon: Radeon_FindRom segstart = 0xc0000
Radeon: Radeon_FindRom Found ID 
Radeon: Radeon_FindRom Found ATI signature 
Radeon: Radeon_FindRom segstart = 0xc1000
Radeon: Radeon_FindRom segstart = 0xc2000
Radeon: Radeon_FindRom segstart = 0xc3000
Radeon: Radeon_FindRom segstart = 0xc4000
Radeon: Radeon_FindRom segstart = 0xc5000
Radeon: Radeon_FindRom segstart = 0xc6000
Radeon: Radeon_FindRom segstart = 0xc7000
Radeon: Radeon_FindRom segstart = 0xc8000
Radeon: Rade = 0x0 
Radeon: Radeon_FindRom 
Radeon: Radeon_FindRom segstart = 0xc0000
Radeon: Radeon_FindRom Found ID 
Radeon: Radeon_FindRom Found ATI signature 
Radeon: Radeon_FindRom segstart = 0xc1000
Radeon: Radeon_FindRom segstart = 0xc2000
Radeon: Radeon_FindRom segstart = 0xc3000
Radeon: Radeon_FindRom segstart = 0xc4000
Radeon: Radeon_FindRom segstart = 0xc5000
Radeon: Radeon_FindRom segstart = 0xc6000
Radeon: Radeon_FindRom segstart = 0xc7000
Radeon: Radeon_FindRom segstart = 0xc8000
Radeon: Rade = 0x0 
Radeon: Radeon_FindRom 
Radeon: Radeon_FindRom segstart = 0xc0000
Radeon: Radeon_FindRom Found ID 
Radeon: Radeon_FindRom Found ATI signature 
Radeon: Radeon_FindRom segstart = 0xc1000
Radeon: Radeon_FindRom segstart = 0xc2000
Radeon: Radeon_FindRom segstart = 0xc3000
Radeon: Radeon_FindRom segstart = 0xc4000
Radeon: Radeon_FindRom segstart = 0xc5000
Radeon: Radeon_FindRom segstart = 0xc6000
Radeon: Radeon_FindRom segstart = 0xc7000
Radeon: Radeon_FindRom segstart = 0xc8000
Radeon: Rade = 0x0 
Radeon: Radeon_FindRom 
Radeon: Radeon_FindRom segstart = 0xc0000
Radeon: Radeon_FindRom Found ID 
Radeon: Radeon_FindRom Found ATI signature 
Radeon: Radeon_FindRom segstart = 0xc1000
Radeon: Radeon_FindRom segstart = 0xc2000
Radeon: Radeon_FindRom segstart = 0xc3000
Radeon: Radeon_FindRom segstart = 0xc4000
Radeon: Radeon_FindRom segstart = 0xc5000
Radeon: Radeon_FindRom segstart = 0xc6000
... IDE timeouts start appearing
Error writing log entry!

spinning forever.
kernel debugger: Welcome to Kernel Debugging Land...
 eax 3033f000  ebp fd005a80  cs 0008 | area 059a11b8  (radeon_seg0)
 ebx 600530a0  esp fd005a44  ss 0010 | addr 6004c000  size 00006000
 ecx fd005a32  edi 3031f200  ds 0010 |
 edx 000e0000  esi fd005a70  es 0010 | Thread: app_server                    
 eip 6004e451 flag 00010296  fs 0000 | Team:  /boot/beos/system/servers/app_server
trap 0000000e  err 00000000  gs 0000 | Stack Trace follows:
 
00000000  6004e451  MASK+4ff4e452
fd005a80  6004e327  MASK+4ff4e328
fd005abc  6004cd00  MASK+4ff4cd01
fd005aec  6004e136  MASK+4ff4e137
fd005afc  00150505  load_driver+0279
fd005b5c  00150741  make_loadable_driver+01c9
fd005bb4  00151c0e  scan+04b6
fd005d0c  00152237  devfs_opendir+009f
fd005d2c  0013caf1  sys_opendir+0071
fd005d58  0014836e  user_opendir+003e
fd005d7c  0015e0ae  return_from_syscall+0000
fd0012d4  ec084a4b  ---- iframe ----
fd0012d4  8004b71e  MASK+6ff4b71f
fd001710  8004d110  MASK+6ff4d111
fd00172c  80064619  MASK+6ff6461a
fd001bd4  80064959  MASK+6ff6495a

As you cans see it coughs up blood, then collapses.

I noticed in the linux drivers, it has detection code that is for the purpose of when the bios is not found. So is the bios really necessary? Should I just change some more bytes to make the bios not be found? Or should I insert a proper bios address or something? Any specifications or something?

What is the softbios?
 
Last edited:
If they are based on Linux drivers, then these need BIOS base address to read card's master clock frequency etc. otherwise setting up a display mode would be impossible. In the Linux XFree drivers, some default values are provided in case the BIOS is not found, they may work for some cards. I think it does not use BIOS for anything more than just that.

Vahur
 
Thanks, by chance do you have any info on the bios, like addresses or anything. I don't think the drivers are based on Linux, as the would have to be GPL'd if they were.

What's the softbios? Should I bypass it's detection, or drop in a value? Is it just a copy of the "hardbios"?

How do the Bios' differ from R100 to R200?

Any Idea what segstart is?

Is the bios range 0x1FFFF?

Could it be that the R100 is only 8000, whereas the R200 bios is 2x the length? Or Vice-versa

It seems strange that the "softbios" address is not resolved. I think that's where it all starts to go wrong.

many thanks (but only if someone replies ;) )
 
Back
Top