Ok. When the time comes I'll use PioDevice. The IO controller -used-
to be two 8259As daisy chained together, but now it's emulated as part
of a more complicated system. I think when things first boot it looks
like there's two 8259As for compatibility, but then you can switch
through different modes (sound familiar?) like virtual wire mode and one
other one who's name I forget. The one that's probably the most relevant
is the one I can't remember the name of where the IO APIC and the local
APICs (which don't exist in the 8259A model, I don't think) communicate
over the system bus to allow multiprocessor systems and IPIs. There even
used to be a special three wire APIC bus for the APICs to communicate
with each other. Even on top of that, you can pick different routing
modes to select how the destination of IPIs should be interpretted to
allow communication between a two tiered hierarchy of clusters. It gets
pretty crazy. I'm hoping most of that doesn't get used by main stream
linux just to get it booted, although at least the IPIs would if I had
built this kernel with SMP support.
Gabe
Ali Saidi wrote:
The BasicPioDevice device only allows listening on one range, but like
the name suggests it's a the simplest kind. PioDevice has no such
restrictions you just need to do a little more work to get things
going that BasicPioDevice does for you.
Also, I believe that the two interrupt controllers are next to each
other. Anyway, it's simplest form it's a 8259A interrupt controller:
http://www.nondot.org/sabre/os/files/MiscHW/8259A_PIC_Datasheet.pdf
http://en.wikipedia.org/wiki/Intel_8259
Ali
On Mar 13, 2008, at 11:16 PM, Gabe Black wrote:
I'm still trying to find complete information about the IO APIC,
but I believe it two IO port ranges (at least) along with some memory
locations all for the same device. The IO ports are to mimic a
simpler interrupt controller which would be formed from two simpler
cascaded devices. I don't think the way PIO devices are set up
currently will allow listening on more than one range of addresses
since they have a start and size parameter and that's it. This isn't
a critical issue now since I'm just putting IsaFake devices in there
now as placeholders, but at some point the IO APIC will have to exist
and it will have to listen to more than one address range.
Gabe
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev