[coreboot] unexpected exception errors loading vga rom

Joseph Smith joe at settoplinux.org
Wed Apr 29 15:41:13 CEST 2009




On Wed, 29 Apr 2009 15:11:23 +0200, Stefan Reinauer <stepan at coresystems.de>
wrote:
> On 29.04.2009 14:27 Uhr, Joseph Smith wrote:
>> Yes, in a perfect world I should just have to turn the device off in
>> src/mainboard/thomson/ip1000/Config.lb and I would never see any traces
> of
>> the device.
>>
>> Quote from the 82801DB datasheet LPC register 0xF2:
>> "Software sets this bit to disable the AC ’97 modem controller
> function.
>> BIOS must not enable I/O or memory address space decode, interrupt
>> generation, or any other functionality of functions that are to be
>> disabled."
>>
>> But just turning the device off is not performing all of the above
>> functions required by the southbridge. If anyone has any suggestions on
> how
>> to really disable this device without touching
>> src/southbridge/intel/i82801xx/i82801xx_ac97.c I would be glad to hear
>> them....
>>
> 
> The code in src/southbridhe/i82801xx/i82801xx.c tries to take care of
> the F2 register settings. So, if you don't have
> a device pci 1f.6 off end in your config.lb it might just get enabled by
> i82801xx.c again
> 
> 
Right and i82801xx_enable() works ok for me but it apears to do it
backwards...in each device file. For example in i82801xx_ac97.c ac97_ops:

static const struct device_operations ac97_ops = { 
         .read_resources         = pci_dev_read_resources, 
         .set_resources          = pci_dev_set_resources, 
         .enable_resources       = pci_dev_enable_resources, 
         .init                   = 0, 
         .scan_bus               = 0, 
         .enable                 = i82801xx_enable, 

It appears the .enable = i82801xx_enable, is happening last. Therefore up
to this point coreboot is pci_dev_read_resources, pci_dev_set_resources,
and pci_dev_enable_resources. Just because it is turned off in the
mainboard Config.lb The LPC device (not coreboot) is still allocating
resources because it doesn't know the device is disabled until the end (at
this point it is too late). You might not see the device in Linux but the
resources are still allocated to it. Am I correct in this theory? It should
be setup so that if the device is indeed turned off in mainboard Config.lb
that the i82801xx_enable() is set first and then if the device is indeed
turned off ignores the resource functions.

I will test this theory tonight and post back the results, but I think this
is what is happening here.

-- 
Thanks,
Joseph Smith
Set-Top-Linux
www.settoplinux.org





More information about the coreboot mailing list