[coreboot] unexpected exception errors loading vga rom

Joseph Smith joe at settoplinux.org
Wed Apr 29 14:27:17 CEST 2009

On Tue, 28 Apr 2009 22:46:54 -0700, ron minnich <rminnich at gmail.com> wrote:
> On Tue, Apr 28, 2009 at 8:38 PM, Joseph Smith <joe at settoplinux.org>
>> On Mon, 27 Apr 2009 10:14:02 +0200, Stefan Reinauer
> <stepan at coresystems.de>
>> wrote:
>>> On 27.04.2009 9:55 Uhr, Joseph Smith wrote:
>>>> Well, I have confirmed the problem. Looks there is something crazy
> about
>>>> how the ethernet and modem (even though the IP1000 doesn't actually
> have
>>> a
>>>> modem) are setup. If I disable the ICH4 ethernet and enable the AC97
>>> ICH4
>>>> modem, sure as shit it boots up everytime (VGA too) and all IRQS look
>>>> great. If I enable both of them EVERYTHING gets IRQ 0, and I have
>>> issues.
>>>> If I enable ethernet and disable the modem (this is the way it should
>>> be)
>>>> EVERYTHING gets IRQ 0, and I have issues.....
>>>> Anyone seen this kind of thing before? I have no idea how to fix this
>>>> one....
>> Well now were getting somewhere. It is as I thought. The modem and
> Ethernet
>> were not playing nice causing io read/write issues under 0x200, hence
> the
>> unexpected exception errors. The IRQ 0 problems also make sense because
> the
>> interrupt controllers live in that io area correct? I guess on this
> board
>> they were not designed to coincide...there isn't an actual on-board
> modem
>> anyways.
>> So here is what I did to get it working, and this is the part I need
> help
>> with.
>> 1. In auto.c I disabled the modem right off through the LPC device:
>>        /* Set the LPC device statically. */
>>        dev = PCI_DEV(0x0, 0x1f, 0x0);
>>        /* Disable Modem. */
>>        pci_write_config8(dev, 0xf2, 0x40);
>> 2. I completely removed the modem code from
>> src/mainboard/thomson/ip1000/Config.lb
>> -      device pci 1f.6 off end          # AC'97 modem
>> 3. Then I completely removed the modem code from
>> src/southbridge/intel/i82801xx/i82801xx_ac97.c
>> -static const struct pci_driver i82801db_ac97_modem __pci_driver = {
>> -       .ops    = &ac97_ops,
>> -       .vendor = PCI_VENDOR_ID_INTEL,
>> -       .device = PCI_DEVICE_ID_INTEL_82801DB_AC97_MODEM,
>> -};
>> And boom :-)
>> I am booting like a rocket ship in action:-)
>> I have tried Just step 1 with no luck, and step 1 & 2  with no luck. So
>> even with the device disabled via the LPC and coreboot something from
> the
>> i82801db_ac97_modem() is still partially initializing causing this io
>> crazyness. I can submit a patch for steps 1-2 but....my question is how
> can
>> I completely disable the i82801db_ac97_modem() driver without having to
>> manually delete code every time I use a new revision???
>> Maybe a #ifdef to  global disable modem define???
> You've got this working but you are kind of abusing the build system,
> esp. if you are modifying files like i82801xx_ac97.c. I will leave it
> to someone else to
> discuss why you don't want to do step 3 ... I'm gonna go sleep now :-)
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

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

Joseph Smith

More information about the coreboot mailing list