Messages in this thread | | | Date | Mon, 9 Mar 2015 12:46:18 +0100 | From | Ingo Molnar <> | Subject | Re: [x86/asm/entry] BUG: unable to handle kernel paging request |
| |
* Andy Lutomirski <luto@amacapital.net> wrote:
> >> */ > >> unsigned long stack[64]; > >> > >> Last I checked, 0x100 != 64. Also, wow, this is kind of disgusting. :) > > > > > > Seems to be unused: I commented it out on "defconfig" build > > and got no build errors. > > It's used. On 32-bit, NMIs don't use task gates (I don't know why),
So task gates were a sexy hardware acceleration feature, eons ago, and we used to rely on them a lot, but why should we use task gates for NMIs on modern CPUs?
NMIs are performance critical for profiling, and task gates are more expensive than interrupt gates. Task gates are also an x86 anachronism whose performance might change negatively in the future. We don't use 32-bit segmentation tricks for similar reasons.
The only place where we use task gates is the double fault handler, and we only do it because we must: if pagetables are screwed up then we really have to create a new context from scratch to be able to print debug info.
Thanks,
Ingo
| |