That all seems right, but for now since you only have 1 processor, I would do whatever makes the kernel think that it's just two 8259As together. I'm certain that the Linux kernel still supports that configuration. You just need to find where the detection is done and make sure to return the right things to make it look like that. Then once you get further and have a better idea of what kind of APIC you want to deal with and how multiprocessors are going to work you can create something fancier.

Ali



On Mar 14, 2008, at 12:07 AM, Gabe Black wrote:

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


_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to