Messages in this thread | | | From | Andrew Lutomirski <> | Date | Mon, 28 Apr 2014 17:02:13 -0700 | Subject | Re: [PATCH] x86-64: espfix for 64-bit mode *PROTOTYPE* |
| |
On Mon, Apr 28, 2014 at 4:08 PM, H. Peter Anvin <hpa@linux.intel.com> wrote: > On 04/28/2014 04:05 PM, H. Peter Anvin wrote: >> >> So I tried writing this bit up, but it fails in some rather spectacular >> ways. Furthermore, I have been unable to debug it under Qemu, because >> breakpoints don't work right (common Qemu problem, sadly.) >> >> The kernel code is at: >> >> https://git.kernel.org/cgit/linux/kernel/git/hpa/espfix64.git/ >> >> There are two tests: >> >> git://git.zytor.com/users/hpa/test16/test16.git, build it, and run >> ./run16 test/hello.elf >> http://www.zytor.com/~hpa/ldttest.c >> >> The former will exercise the irq_return_ldt path, but not the fault >> path; the latter will exercise the fault path, but doesn't actually use >> a 16-bit segment. >> >> Under the 3.14 stock kernel, the former should die with SIGBUS and the >> latter should pass. >> > > Current status of the above code: if I remove the randomization in > espfix_64.c then the first test passes; the second generally crashes the > machine. With the randomization there, both generally crash the machine. > > All my testing so far has been under KVM or Qemu, so there is always the > possibility that I'm chasing a KVM/Qemu bug, but I suspect it is > something simpler than that.
I'm compiling your branch. In the mean time, two possibly stupid questions:
What's the assembly code in the double-fault entry for?
Have you tried hbreak in qemu? I've had better luck with hbreak than regular break in the past.
--Andy
| |