On Wed, Mar 8, 2017 at 8:29 AM, Stas Sergeev stsp@list.ru wrote:
08.03.2017 19:06, Andy Lutomirski пишет:
On Wed, Mar 8, 2017 at 6:08 AM, Stas Sergeev stsp@list.ru wrote:
08.03.2017 03:32, Ricardo Neri пишет:
These are the instructions covered by UMIP:
- SGDT - Store Global Descriptor Table
- SIDT - Store Interrupt Descriptor Table
- SLDT - Store Local Descriptor Table
- SMSW - Store Machine Status Word
- STR - Store Task Register
This patchset initially treated tasks running in virtual-8086 mode as a special case. However, I received clarification that DOSEMU[8] does not support applications that use these instructions.
Can you remind me what was special about it? It looks like you still emulate them in v8086 mode.
Indeed, sorry, I meant prot mode here. :) So I wonder what was cited to be special about v86.
Not sure. Ricardo?
Yes, this is the case. But at least in the past there was an attempt to support SLDT as it is used by an ancient pharlap DOS extender (currently unsupported by dosemu1/2). So how difficult would it be to add an optional possibility of delivering such SIGSEGV to userspace so that the kernel's dummy emulation can be overridden? It doesn't need to be a matter of this particular patch set, i.e. this proposal should not trigger a v7 resend of all 21 patches. :) But it would be useful for the future development of dosemu2.
What I'd actually like to see is a totally separate patchset that adds an inheritable (but reset on exec) per-task mask of legacy compatibility features to disable. Maybe:
sys_adjust_compat_mask(int op, int word, u32 mask);
No no, since I meant prot mode, this is not what I need. I would never need to disable UMIP as to allow the prot mode apps to do SLDT. Instead it would be good to have an ability to provide a replacement for the dummy emulation that is currently being proposed for kernel. All is needed for this, is just to deliver a SIGSEGV.
That's what I meant. Turning off FIXUP_UMIP would leave UMIP on but turn off the fixup, so you'd get a SIGSEGV indicating #GP (or a vm86 GP exit).
--Andy