-----Original Message----- From: ron minnich [mailto:rminnich@gmail.com] Sent: Friday, November 07, 2008 9:24 AM To: Myles Watson Cc: Coreboot Subject: Re: Subtractive Resources
On Fri, Nov 7, 2008 at 7:18 AM, Myles Watson mylesgw@gmail.com wrote:
I'm running into a problem when resources are read.
The amd8111 adds two subtractive resources on link 0. The problem is
that
it has no link 0.
This is usually a sign that I got the dtc wrong somehow.
Here is v2: struct device _dev15 = { .ops = 0, .bus = &_dev8.link[0], .path = {.type=DEVICE_PATH_PCI,.u={.pci={ .devfn = PCI_DEVFN(0x0,0)}}}, .enabled = 1, .on_mainboard = 1, .link = { [0] = { .link = 0, .dev = &_dev15, .children = &_dev16, }, }, .links = 1, .sibling = &_dev20, .chip_ops = &southbridge_amd_amd8111_ops, .chip_info = &southbridge_amd_amd8111_info_14, .next=&_dev16 };
and
struct device _dev16 = { .ops = 0, .bus = &_dev15.link[0], .path = {.type=DEVICE_PATH_PCI,.u={.pci={ .devfn = PCI_DEVFN(0x0,0)}}}, .enabled = 1, .on_mainboard = 1, .link = { }, .links = 0, .sibling = &_dev17, .chip_ops = &southbridge_amd_amd8111_ops, .chip_info = &southbridge_amd_amd8111_info_14, .next=&_dev17 };
So the amd8111 is a bridge that needs resources.
My understanding is that the amd8111 _has_ a bridge, but the device that is causing the problem is lpc, which is not a bridge, nor behind the amd8111's bridge. So when its resources are read and it is found to have subtractive resources, the code tries to descend. It doesn't have a bus, and this fails.
That said, you said your change fixes it. Does that mean serengeti works? It's hard to see how given that this is a bridge.
Sorry I wasn't more clear. I meant that the fix no longer tries to call functions with NULL pointers. I don't think the dts is wrong, but I think that there are a lot fewer intermediaries in v3 then there were in v2.
Thanks, Myles