Re: need h/e/l/p: PM -> RM in machine_real_start

H.Rosmanith (kernel@wildsau.idv.uni.linz.at)
Thu, 31 Oct 2002 20:52:35 +0100 (MET)


>
> Linux leaves the BIOS area alone, but interrupts may not be directly
> usable because Linux loads a different IDT and reprograms the IO-APIC,
> which is used in place of the interrupt controller if it exists.
>
> You need to reload the IDT once in real-mode. Documentation states
> that it is "ignored", but the reload is necessary to get the default
> interrupt-table to work. I think you can just reload with any memory
> operand (reload junk). If you were transitioning from real to 32-bit
> and back, you would save the current one "SIDT", before loading the
> 32-bit one "LIDT". Since you don't know where the previous one was saved,
> (if ever) you can't reload it.

well, reloading the idt is already done in "machine_real_start", look
at line 255 (definition) and line 336 (execution).

what I've never heard of is the IO-APIC (allthough there's a file
named io_apic.c just in the same directory). there surely is a way to
"get rid of it" and have the 8259(A) or the emulating chipset(?) take
over again. do you have, or do you know where I can find, documention
about the IO-APIC? probably that's the reason why I don't see any
hardware interrupts.

> Whatever interrupt controllers are used, they are programmed differently
> in Linux than the BIOS expects. You would need to reprogram them, not
> difficult, just a few instructions (check free-BIOS) or other references.

I've been afraid of that :-) okay ... I'll try. So far, I've already
been checking linux-bios (didn't help much) and OpenBIOS. Hm, hm!
It looks like (just as I ask google for FreeBIOS) that FreeBIOS is
another different project.

> Check free-BIOS

thanks for the hint. It looks promising.

herbert

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/