On Wed, Jan 03, 2007 at 03:14:39PM -0500, Romer, Benjamin M wrote: > Hi again Vivek! I've got good news. :) > > First, I figured out why I wasn't getting my print_IO_APIC calls from my > kexec kernel - I had forgotten to copy the rebuilt vmlinux file into > /boot, so I was using the old version without the additional debugging. > With the new file copied I got a much more interesting log and right > after the kexec reboot, the timer's IO APIC entry appears to be > > .... IRQ redirection table: > NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect: > 00 000 00 0 0 0 0 0 0 7 00 > > So it appears that the Log and Vect fields were not reset to their BIOS > values inside of disable_IO_APIC(). In fact inside of disable_IO_APIC it > appears that the Vect is being set unconditionally to 0, and the Log > field isn't touched at all. So, I put together a kernel to set both of > these values back to the BIOS values, and our timer worked! I was able > to get kexec -e to work (it bombed out in the end only because I have > the wrong initrd on my command line), and what it seems like we need is > for the enable_IO_APIC code to store off these additional values, and > then restore them in disable_IO_APIC. > > I'll put together a patch to fix it, assuming that doing it this way > won't break anyone else's systems. I've also attached the successful > boot log so you can see that it's actually working. :)
Hi Ben, Great. We seem to be moving in right direction. But I dont' think we should change it right away. It very well might break other platforms. I got few queries. Here Destination mode (Dest) is set to 0. That means IOAPIC is in physical mode and only 4bits for physical destination will count which in turn will contain apic id.But in your case BIOS also has set logical id field. That's seems to be odd. Does that mean that BIOS has set Destination mode field wrong and it is operating in Logical mode. Can you also print your LAPIC setting during BIOS boot and during kexec boot. (DFR and LDR will be of special interest). I am looking at 82093AA I/O Advanced programmable Interrupt Controller documentation for IOAPIC register settings. I am not sure about vector information too. Delivery mode (Deli) is set to ExtInt. That means vector information will be provided to CPU when cpu generates INTA cycles. (I hope I am not missing something). Can you try not setting vector infor to 10 and instead just set logical destination to 20 and see if it works. My feeling is that vector info 10 is redundant. Basically I am just trying to understand that in what mode your LAPIC/IOAPIC are working during BIOS boot. If it can be proved that there are other valid ways of working combinations than just assuming that IOAPIC and LAPIC will be working in physical mode at boot, then probably we need to save LAPIC/IOAPIC states during bootup and restore these back during kexec boot. Do you have any documentation for LAPIC/IOAPIC working for your platform? Thanks Vivek _______________________________________________ fastboot mailing list [email protected] https://lists.osdl.org/mailman/listinfo/fastboot
