Messages in this thread | | | Date | Wed, 09 Dec 2009 10:18:37 -0800 | From | Jeremy Fitzhardinge <> | Subject | Re: [GIT PULL] x86/paravirt for v2.6.33 |
| |
On 12/08/09 13:34, Linus Torvalds wrote: > I do _not_ want to add any more task_pt_regs() crap, please. > > Why? It's wrong for at least vm86 mode (and from kernel system calls). >
Would the stack frame version work in these cases?
> Maybe we can't get into system calls from vm86 mode, and the kernel > hopefully doesn't do those things anyway, but the point is, you chose the > wrong way to go. >
iopl doesn't make much sense as a kernel-called syscall, unless the caller is intending to change the usermode iopl. In which case, won't task_pt_regs() do the right thing - by pointing to the saved usermode register set - vs modifying the ptregs the caller may pass in?
iopl is also one of the special set of syscalls which get special handing in entry_*.S, so I don't think doing a direct call from within the kernel is ever sensible, and it should always be possible to make task_pt_regs return meaningful results.
I agree with you that vm86 would be a problem if its possible to call iopl.
> The old version that actually passed the stack frame was better. Why pick > the inferior version? >
Mainly because it exposes the difference between the 32 and 64-bit ABIs, requiring separate code for each case; it seemed like an opportunity to remove the differences.
Anyway, I'll post a patch to revert to the pt_regs-based version shortly.
J
| |