Yes, I think you're right. I've been arguing against an explicit parameter, and I think you've been talking about just a python level parent/child relationship. Those two are entirely compatible as far as I can tell.
Gabe On 10/01/11 09:56, Steve Reinhardt wrote: > I suspect that once again we're probably pretty close in agreement, but just > confusing each other because we're not communicating 100% precisely... you > bring up the Platform object a couple of times, but in my mind I've already > written that off and am thinking of the future world where Platform no > longer exists. So there's no need for you to continue arguing against it > :-). > > It's important to keep in mind the role that the System object plays in > configurations as the root of the subtree of the config hierarchy that > represents a system. So even if the System object itself incorporates > mostly software-related information at this point in time, in the config > script it encompasses everything about a single "machine", software and > hardware. Even if the devices in a system didn't have a direct link to a > system object (which they do, thanks to the inherited PioDevice param), they > would still be children of a system object in the hierarchy. Combining this > with the 'Parent.any' default makes it easy for a device to know what system > it belongs to, and thus to access any per-system information in a very > simple fashion. That's why I consider it to be the central object for both > software and hardware configuration of anything that's got a system-level > scope. That definitely does not mean that the System object should have an > explicit parameter for every other SimObject that might be associated with > it though (which is what I think you're arguing against... we agree there). > > I think we can use 'Parent.any' pretty effectively to solve a lot of > problems. Note that currently Platform does this to find the interrupt > controller: > intrctrl = Param.IntrControl(Parent.any, "interrupt controller") > > Seems like individual devices that need to find an interrupt controller or > some similar component should just be doing this directly without having to > find a Platform object first. If we do it that way, then if there's a > single interrupt controller that's a direct child of System, then the > devices will find that; if you want more than one, you can create a > Python-only class like IOSubsystem, give it an interrupt controller as a > child, put your devices under that, and then Parent.any will find the > IOSubsystem's interrupt controller before it gets up to the System object. > > None of this requires anyone to have an explicit interrupt controller > parameter (though that might be needed elsewhere, e.g., to identify to the > CPU where it is going to get interrupts from). > > Steve > _______________________________________________ > gem5-dev mailing list > [email protected] > http://m5sim.org/mailman/listinfo/gem5-dev _______________________________________________ gem5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/gem5-dev
