[coreboot] [OpenBIOS] OpenBIOS SVN r416 breaks coreboot-v3

Myles Watson mylesgw at gmail.com
Wed Jan 28 17:37:33 CET 2009


On Wed, Jan 28, 2009 at 8:42 AM, Mark Cave-Ayland
<mark.cave-ayland at siriusit.co.uk> wrote:
> Aurelien Jarno wrote:
>
>> The rationale is available here:
>> http://lists.openbios.org/pipermail/openbios/2009-January/003391.html
>
> Thanks for link - I must have missed that whilst scanning the archives :)
>
>> This commit fixes two different problems encountered on SPARC64 and
>> PowerPC. First of all it makes sure that no PCI device get allocated
>> port 0, which doesn't exists.
>>
>> Secondly it fixes problems with non-PCI devices that are using I/O ports
>> at fixed location. This includes the video card, i8259, rtc, serial
>> port, hard-disk controller, etc. Without this patch, the PCI cards are
>> getting allocated the I/O ports of those devices, thus causing crashes.
>>
>> I wonder why it causes problem on x86. What is the initial value of
>> arch->io_base? I am unable to find that looking at the code.
>
> Well, I just added the following diff to my OpenBIOS build (latest SVN):
>
> Index: drivers/pci.c
> ===================================================================
> --- drivers/pci.c       (revision 428)
> +++ drivers/pci.c       (working copy)
> @@ -762,6 +762,9 @@
>        mem_base = arch->mem_base;
>         /* I/O ports under 0x400 are used by devices mapped at fixed
>            location. */
> +
> +       printk("### io_base: %x\n", arch->io_base);
> +
>         io_base = arch->io_base + 0x400;
>        path = strdup("");
>        for (bus = 0; bus<0x100; bus++) {
>
> ...and in my output I got this:
>
> ### io_base: 0

That's actually what I would have expected.  The IO address range is
only 16 bits from 0-64K.

I guess we'll have to get more information from qemu so we know which
port address is being accessed when it dies.

Myles




More information about the coreboot mailing list