Hi Geoff. That was set up a few years ago and I don't remember exactly, but for the 8254 and 8259 I think I used several sources. Back in the day those were actual chips, and they have data sheets you can find online. They're overly complicated for what they're doing in my opinion, but they're still from a time when things could only get so complicated so they're not that bad. Wikipedia also has a surprising amount of information about that sort of thing. There's another site called osdev.org which has a bunch of random OS development stuff, I believe some of which is about how to set up interrupts from a software perspective. Since those chips don't physically exist any more, a software perspective is pretty much all that's relevant.

For the APIC stuff, there are two parts, the local APIC and the IO APIC. For the local APIC I primarily used the Intel manuals which you can download from their site. They have (had?) a chapter dedicated to the local APIC since that's been a part of the CPU for a long time. When I was getting things working initially there wasn't any information about the APIC in the AMD manuals, but I know some has since been added. I generally prefer the AMD manuals since I think they're easier to read and are better organized, but both are free so you can look at both. Like the 8254 and the 8259, the IO APIC was initially it's own chip I think and has a data sheet. I don't remember the exact number, but I used that for the name of the files implementing it in gem5. It's been part of the chipset for a long time now, so you may be able to find information about it in a manual for one. I've never looked, though.

Generally speaking, I got the interrupt stuff to work and basically understood what was going on, but there are a lot of moving parts and subtleties, and I wouldn't be that surprised if something isn't done right or is incomplete. If somebody can tell you what newer kernels do differently I'm sure that would help, as would determining how Linux determines that it doesn't like the interrupt setup.

Gabe

Quoting Geoffrey Blake <[email protected]>:

Hi all,

This is primarily targeted at Gabe but I welcome any other advice from
people working with the x86 ISA model.

I am trying to get an x86_64 Ubuntu 11.04 filesystem to work with Gem5
and am running into some problems with the kernel.  The provided
kernels on the gem5 page are just a bit too old to work with a current
ubuntu file system, Upstart complains on boot and I get a kernel
panic.  Some searching turned up that older kernels don't work with
current versions of Ubuntu.  So I have an unmodified 2.6.32-40-generic
kernel with debug symbols from the ddebs repo.  So far it is failing
trying to set up the APIC timers, the 8254 with the 8259A APIC.  The
kernel panics after it tries numerous IRQ setups and fails (IRQ0
through 8259A, timer as a Virtual Wire IRQ, timer as ExtINT IRQ). Is
there any documentation about these devices around that was used to
develop the x86 setup? Does anyone have any knowledge about what the
newer kernels assume that may break gem5?

Thanks,
Geoff
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users



_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to