[LinuxBIOS] Can't boot from IDE on vt8237r

Corey Osgood corey.osgood at gmail.com
Sat Jul 28 06:07:51 CEST 2007


Peter Stuge wrote:
> On Thu, Jul 26, 2007 at 03:55:11PM -0400, Corey Osgood wrote:
>   
>>>> find_ide_controller: found PCI IDE controller 1106:3149 prog_if=0x8f
>>>> find_ide_controller: primary channel: native PCI mode
>>>> find_ide_controller: cmd_base=0x2020 ctrl_base=0x2040
>>>> hda: LBA48 82GB: HDS728080PLA380                         
>>>>         
>>> Bingo, here's an LBA48 82GB disk on hda.
>>>       
>> device 0x3149 is the SATA controller, the 82GB drive is SATA.
>> Magnus (and I) need IDE ;)
>>     
>
> Doh! Sorry I didn't catch this.
>   

On the bright side, adding reiserfs to filo and booting from SATA does
at least half work, but the SuSE install on that drive was set up for an
intel board, and didn't have the via sata modules in initrd (and I'm too
lazy to fix it).

>> file_open: dev=hde, path=<NULL>
>> find_ide_controller: found PCI IDE controller 1106:0571 prog_if=0x8a
>> find_ide_controller: primary channel: compatibility mode
>> find_ide_controller: cmd_base=0x1e8 ctrl_base=0x3ec
>> Detected floating bus
>>     
>
> The floating detection is rather stupid, it says floating if a couple
> of registers read back 0xff.
>
> How is the device configured? cmd_base and ctrl_base are hard-coded
> in FILO when the device is in compatibility mode. The IO ports are
> only read from PCI config space for native PCI mode controllers.
>   

Bingo, that explains it. The device defaults to different IO ports than
FILO expects, the same IO ports that SATA defaults to. Oops.

> When you set the IDE device to compat mode is it fixed to those ports
> or how does it work?
>
> Also - can you try not setting the IDE device to compat mode but
> rather to native PCI mode - compat is for DOS anyway. ;)

Tried that as well, with no luck:

boot: hde1:/vmlinuz initrd=/initrd.gz root=/dev/hde1 console=tty0
console=ttyS0,115200
malloc_diag: alloc: 376 bytes (4 blocks), free: 65152 bytes (1 blocks)
malloc_diag: alloc: 392 bytes (5 blocks), free: 65136 bytes (1 blocks)
file_open: dev=hde1, path=/vmlinuz
find_ide_controller: found PCI IDE controller 1106:0571 prog_if=0x8f
find_ide_controller: primary channel: native PCI mode
find_ide_controller: cmd_base=0x0 ctrl_base=0x0
Detected floating bus
No drive detected on IDE channel 2
devopen: failed to open ide
malloc_diag: alloc: 376 bytes (4 blocks), free: 65152 bytes (1 blocks)
malloc_diag: alloc: 280 bytes (3 blocks), free: 65248 bytes (1 blocks)

Seems I still failed somewhere (and I did set the command and control
ports). Looking further at the factory bios, I was wrong, the factory
BIOS does use compatibility mode. There's also comments in the vt8235
code that lead me to believe that even if I did get native mode working,
the performance is better with compatibility mode (this may have been
fixed within linux though). I'm about to go through the fun of disabling
the SATA device and see if I can get IDE working without having to worry
about that conflict, and then try to get at least one mode working.

Thanks,
Corey




More information about the coreboot mailing list