These two patches are the resource allocator I've been working on. The biggest thing it does is simplify the resource allocator by splitting it into distinct phases: 1. read resources 2. constrain resources around fixed resources 3. sum resource needs 4. assign values
This means that there are no more calls to compute_allocate_resources from specific devices, which makes the process easier to follow.
Boot tested (with patches that will be coming shortly) on qemu, serengeti, kontron, and dbe62.
Signed-off-by: Myles Watson mylesgw@gmail.com
Thanks, Myles
I split it into two patches: one which implements most of the changes, and the other which updates device code.
resource-allocation.diff:
device/device.c: Remove references to have_resources. Remove read_resources from compute allocate resources. Split compute_allocate_resources into two 1. compute_resource_needs A. Traverse the tree depth first B. Sum resources C. Adjust limits and bases D. Update bridge resources sizes 2. assign_resource_values A. Traverse the tree breadth first B. Assign resource values
device/device_util.c: Remove references to have_resources.
device/pci_device.c: Remove saved values stubs (they're not needed now.) 1. Sizing function restores values Fix 64-bit flag masking. Add an error message for an invalid value. Update pci_record_bridge_resource: 1. remove compute_allocate_resource call 2. remove pci_set_resource call Update pci_bus_read_resources to read children's too. Update pci_set_resource: 1. change logic for setting zero-size resources A. Set range to [limit->limit-2^gran] (Could have been any range with base > limit) 2. remove compute_allocate_resource calls 3. Change phase4_assign_resources ->phase4_set_resources
device/pci_ops.c: Change an error message to be more helpful.
device/root_device.c: Remove code for read_resources and set resources. Add a .id to the ops.
include/device/device.h: Remove have_resources. Comment out assign_resources. I think we could comment out more here. Add debugging function prototypes. Change phase4_assign_resources to phase4_set_resources.
include/device/resource.h Add a IORESOURCE_BRIDGE flag.
device/cardbus_device.c Remove compute_allocate_resource call. Use probe_resource (doesn't die) instead of find_resource.
specific-resources.diff:
This patch makes specific devices use the updated resource allocation code.
The changes necessary are: 1. Remove all calls to compute_allocate_resources. 2. Don't store resources except in phase4_set_resources.
northbridge/amd/k8/pci.c: Remove calls to compute_allocate_resource. Change phase4_assign_resources to phase4_set_resources
southbridge/amd/amd8132/amd8132_bridge.c: Remove NPUML and NPUMB. Add a warning for bus disabling. Remove bridge_{read|set}_resources (they were there for NPUML)
southbridge/nvidia/mcp55/lpc.c: southbridge/amd/sb600/lpc.c: Remove references to have_resources.
southbridge/amd/amd8111/lpc.c: Add resources for subtractive IO and ROM.
northbridge/amd/k8/domain.c: northbridge/intel/i440bxemulation/i440bx.c: northbridge/amd/geodelx/geodelx.c: northbridge/intel/i945/northbridge.c: northbridge/via/cn700/stage2.c: Change phase4_assign_resources->phase4_set_resources.
This was a huge job and I think it is a huge improvement. I have tested on dbe62 and it works. I will test on kontron. I'd like to see confirmation on qemu. If we get that I am ready to ack.
ron
This was a huge job and I think it is a huge improvement. I have tested on dbe62 and it works. I will test on kontron. I'd like to see confirmation on qemu. If we get that I am ready to ack.
Do you want a boot log, an image, both?
Thanks, Myles
On Tue, Dec 30, 2008 at 8:02 PM, Myles Watson mylesgw@gmail.com wrote:
This was a huge job and I think it is a huge improvement. I have tested on dbe62 and it works. I will test on kontron. I'd like to see confirmation on qemu. If we get that I am ready to ack.
Do you want a boot log, an image, both?
Just confirmation from you that it will boot is good enough for me.
ron
Just confirmation from you that it will boot is good enough for me.
It boots to XP with Seabios for me.
Thanks, Myles
I think it's time to move forward. All of your resource patches:
Acked-by: Ronald G. Minnich rminnich@gmail.com
On Wed, Dec 31, 2008 at 9:04 AM, ron minnich rminnich@gmail.com wrote:
I think it's time to move forward. All of your resource patches:
Acked-by: Ronald G. Minnich rminnich@gmail.com
Rev 1089, 1090.
Thanks, Myles
On Wed, Dec 31, 2008 at 11:48 AM, Myles Watson mylesgw@gmail.com wrote:
On Wed, Dec 31, 2008 at 9:04 AM, ron minnich rminnich@gmail.com wrote:
I think it's time to move forward. All of your resource patches:
Acked-by: Ronald G. Minnich rminnich@gmail.com
Rev 1089, 1090.
also, you can commit the geode and kontron patches.
ron