[coreboot] pci_read_config8 crash in mainboard.c

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Wed Mar 4 00:36:16 CET 2009

On 03.03.2009 23:33, Carl-Daniel Hailfinger wrote:
> On 03.03.2009 23:29, Carl-Daniel Hailfinger wrote:
>> On 03.03.2009 19:22, Marc Jones wrote:
>>> I think I see the problem. The mainboard.c code is called during the
>>> chip_operations enable_dev stage very early before the static tree is
>>> setup with the device function pointers. The reason for this is to do
>>> chip device setup before the devices are scanned. For example the
>>> device may need to be enabled in the southbridge before it will be
>>> found in the normal scan or it may need to be hidden etc.
>>> If you look at static.c you will see that the .ops = 0 for all the
>>> devices. That field gets updated in set_pci_ops() (or other device ops
>>> setup functions) which happens later in the device scan, after the
>>> chip enable_dev.
>>> That is why we need to use the direct access pci functions and not the
>>> static tree pointer functions. I think that the fix is to add a
>>> comment explaining why you need to use the direct access functions at
>>> in the enable_dev function.
>>> I hope that was clear. It is a bit easier to understand in V3 where
>>> the stages/phases are numbered.
>> Thanks. I still want to work around this.
>> Ward, can you please revert src/mainboard/amd/dbm690t/mainboard.c and
>> try this?
> Index: src/mainboard/amd/dbm690t/mainboard.c
> ===================================================================
> --- src/mainboard/amd/dbm690t/mainboard.c	(Revision 3967)
> +++ src/mainboard/amd/dbm690t/mainboard.c	(Arbeitskopie)

Ward managed to boot his M2A-VM with this patch.
Thanks for your patience, Ward!
Boot log is here:

Separate patches will follow.



More information about the coreboot mailing list