Before I get rolling on this too seriously, should the builder function
go within the python compiled into M5, or should it go into the post
compile config files? Do we have a rule of thumb for what goes where?
This seems important enough to be built in and not repeated in every
user config, but it's also not a SimObject or anything like that.

Gabe

Steve Reinhardt wrote:
> I agree with Nate... I think deducing the logical system configuration
> directly from an arbitrary M5 SimObject tree is going to be next to
> impossible, given that the tree doesn't reflect the memory hierarchy
> interconnection topology, and since the M5 tree could very easily
> correspond to an undescribable config from the BIOS perspective.
>
> I wouldn't worry too much in the short term about making your system
> builder flexible; is it even possible to describe a non-traditional
> configuration like a mesh in the BIOS tables?  I think having a basic
> tool that supports a handful of straightforward configs is an
> appropriate first step; people that feel the need to do more than that
> can be responsible for generalizing your solution as needed.  I'm sure
> you've heard my spiel about spending too much time designing in
> unnecessary generality up front...
>
> Steve
>
> On Tue, Apr 21, 2009 at 12:36 AM, Gabe Black <gbl...@eecs.umich.edu
> <mailto:gbl...@eecs.umich.edu>> wrote:
>
>     It seems reasonable, although I'm sure it will be easier said than
>     done
>     one you get down to the details. The challenge will be putting it
>     together so that it doesn't make so many assumptions that it becomes
>     useless outside of traditional sorts of configurations like, for
>     instance, meshes. I agree that trying to guess what the user really
>     wanted your at best going to be close most of the time.
>
>     Gabe
>
>     nathan binkert wrote:
>     > My initial reaction is that it's probably better to build some
>     sort of
>     > semi-configurable system builder function that creates a system with
>     > the right number of CPUs and the right topology of caches.  If
>     you do
>     > try to deduce what the user had in mind, I just think you're
>     probably
>     > in for a very fragile system.  Does this sort of thing seem
>     > reasonable?
>     >
>     >   Nate
>     >
>     >
>     >> I reordered my patches so that I could push this, and now all
>     of the
>     >> remaining ones are dependent on or are hacks that force there
>     to be two
>     >> CPUs. In order to push these last ~5 patches, I need to know
>     how many
>     >> CPUs there are when I'm constructing the BIOS tables on the
>     python side
>     >> of things.
>     >>
>     >> First, I think it would be useful to have a mechanism that will
>     allow
>     >> enumerating a simobjects children that are also simobjects.
>     That way you
>     >> could, for instance, go through and gather up all the CPUs to count
>     >> them, assign an ISA level ID to them, etc. There are potential
>     >> complications where you might "leak" into some other system,
>     not be able
>     >> to follow certain configurations correctly, not make the jump over
>     >> ports, etc that might make this more complicated. There may
>     also be CPUs
>     >> you don't want to count that you'll, for instance, switch over
>     to later.
>     >>
>     >> Besides CPUs, these tables also tend to have information about
>     caches,
>     >> and at least on the x86 side they expect to be identified by depth.
>     >> There would need to be some way of identifying how far a particular
>     >> cache is from a particular CPU in order to label it the, for
>     instance,
>     >> L2. I think you may also need to know what CPUs are connected to a
>     >> particular cache so you can call it shared, etc. These sorts of
>     names
>     >> may not make sense in whatever crazy configuration somebody
>     sets up.
>     >>
>     >> Another issue is determining bus topology and interrupt
>     assignment. In
>     >> x86 each bus needs to be identified with a particular
>     technology, and
>     >> all interrupts need to be described as far as who generates
>     them, what
>     >> bus they originate on, and where they ultimately end up. Linux gets
>     >> confused when at least the interrupt information is wrong and
>     things get
>     >> lost.
>     >>
>     >> I think it's important for this to be automated as much as possible
>     >> because I will attest it can be tricky to get everything right.
>     Having a
>     >> system in place which automatically builds up a semi-qualitative
>     >> description of whatever whacky configuration people want to
>     throw at it
>     >> is going to be very challenging, though, because it might not
>     always be
>     >> clear what the right thing to do is when setting things up
>     manually, and
>     >> fixing a generated configuration may actually be harder than
>     building it
>     >> yourself.
>     >>
>     >> How this works has the potential to introduce a lot of
>     problems, and if
>     >> we get it wrong it could take a major effort to fix an entrenched
>     >> system. I see this primarily as an infrastructure, config sort
>     of issue,
>     >> so if Nate and Steve and whoever else does the python stuff
>     could please
>     >> start a discussion about this that would be the first step.
>     >>
>     >> Gabe
>     >>
>     >> Gabe Black wrote:
>     >>
>     >>> changeset 860df2c586a3 in /z/repo/m5
>     >>> details: http://repo.m5sim.org/m5?cmd=changeset;node=860df2c586a3
>     >>> description:
>     >>>       X86: Fix the functions that manipulate large bit arrays
>     in the local APIC.
>     >>>
>     >>> diffstat:
>     >>>
>     >>> 1 file changed, 3 insertions(+), 3 deletions(-)
>     >>> src/arch/x86/interrupts.hh |    6 +++---
>     >>>
>     >>> diffs (26 lines):
>     >>>
>     >>> diff -r a61ac4a3591d -r 860df2c586a3 src/arch/x86/interrupts.hh
>     >>> --- a/src/arch/x86/interrupts.hh      Sun Apr 19 13:17:35 2009
>     -0700
>     >>> +++ b/src/arch/x86/interrupts.hh      Sun Apr 19 13:47:15 2009
>     -0700
>     >>> @@ -172,19 +172,19 @@
>     >>>      void
>     >>>      setRegArrayBit(ApicRegIndex base, uint8_t vector)
>     >>>      {
>     >>> -        regs[base + (vector % 32)] |= (1 << (vector >> 5));
>     >>> +        regs[base + (vector / 32)] |= (1 << (vector % 32));
>     >>>      }
>     >>>
>     >>>      void
>     >>>      clearRegArrayBit(ApicRegIndex base, uint8_t vector)
>     >>>      {
>     >>> -        regs[base + (vector % 32)] &= ~(1 << (vector >> 5));
>     >>> +        regs[base + (vector / 32)] &= ~(1 << (vector % 32));
>     >>>      }
>     >>>
>     >>>      bool
>     >>>      getRegArrayBit(ApicRegIndex base, uint8_t vector)
>     >>>      {
>     >>> -        return bits(regs[base + (vector % 32)], vector >> 5);
>     >>> +        return bits(regs[base + (vector / 32)], vector % 5);
>     >>>      }
>     >>>
>     >>>      void requestInterrupt(uint8_t vector, uint8_t
>     deliveryMode, bool level);
>     >>> _______________________________________________
>     >>> m5-dev mailing list
>     >>> m5-dev@m5sim.org <mailto:m5-dev@m5sim.org>
>     >>> http://m5sim.org/mailman/listinfo/m5-dev
>     >>>
>     >>>
>     >> _______________________________________________
>     >> m5-dev mailing list
>     >> m5-dev@m5sim.org <mailto:m5-dev@m5sim.org>
>     >> http://m5sim.org/mailman/listinfo/m5-dev
>     >>
>     >>
>     >>
>     > _______________________________________________
>     > m5-dev mailing list
>     > m5-dev@m5sim.org <mailto:m5-dev@m5sim.org>
>     > http://m5sim.org/mailman/listinfo/m5-dev
>     >
>
>     _______________________________________________
>     m5-dev mailing list
>     m5-dev@m5sim.org <mailto:m5-dev@m5sim.org>
>     http://m5sim.org/mailman/listinfo/m5-dev
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> m5-dev mailing list
> m5-dev@m5sim.org
> http://m5sim.org/mailman/listinfo/m5-dev
>   

_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to