From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933064AbdCJXrO (ORCPT ); Fri, 10 Mar 2017 18:47:14 -0500 Received: from mga01.intel.com ([192.55.52.88]:29837 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932845AbdCJXrL (ORCPT ); Fri, 10 Mar 2017 18:47:11 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,143,1486454400"; d="scan'208";a="58824585" Message-ID: <1489189628.131264.40.camel@ranerica-desktop> Subject: Re: [v6 PATCH 00/21] x86: Enable User-Mode Instruction Prevention From: Ricardo Neri To: Stas Sergeev Cc: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , Peter Zijlstra , Andrew Morton , Brian Gerst , Chris Metcalf , Dave Hansen , Paolo Bonzini , Liang Z Li , Masami Hiramatsu , Huang Rui , Jiri Slaby , Jonathan Corbet , "Michael S. Tsirkin" , Paul Gortmaker , Vlastimil Babka , Chen Yucong , Alexandre Julliard , Fenghua Yu , "Ravi V. Shankar" , Shuah Khan , linux-kernel@vger.kernel.org, x86@kernel.org, linux-msdos@vger.kernel.org, wine-devel@winehq.org Date: Fri, 10 Mar 2017 15:47:08 -0800 In-Reply-To: References: <20170308003254.27833-1-ricardo.neri-calderon@linux.intel.com> <79ba0fff-4c01-2bfa-06cb-5cfc98dd710c@list.ru> <1489020399.131264.27.camel@ranerica-desktop> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 2017-03-10 at 01:01 +0300, Stas Sergeev wrote: > 09.03.2017 03:46, Ricardo Neri пишет: > > On Wed, 2017-03-08 at 17:08 +0300, Stas Sergeev 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. > >> 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? > > I suppose a umip=noemulation kernel parameter could be added in this > > case. > Why? > It doesn't need to be global: the app should be > able to change that on its own. Note that no app currently > requires this, so its just for the future, and in the > future the app can start using the new API for this, > if you provide one. Right, I missed this detail. Then, yes the API should allow only one app to relay the SIGSEGV. > > > >> 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. > > Would dosemu2 use 32-bit processes in order to keep segmentation? If it > > could use 64-bit processes, emulation is not used in this case and the > > SIGSEGV is delivered to user space. > It does use the mix: 64bit process but some segments > are 32bit for DOS code. Do you mean that dosemu2 will start as a 64-bit process and will jump to 32-bit code segments? My emulation code should work in this case as it will use segmentation in 32-bit code descriptors. Is there anything else needed? Thanks and BR, Ricardo From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ricardo Neri Subject: Re: [v6 PATCH 00/21] x86: Enable User-Mode Instruction Prevention Date: Fri, 10 Mar 2017 15:47:08 -0800 Message-ID: <1489189628.131264.40.camel@ranerica-desktop> References: <20170308003254.27833-1-ricardo.neri-calderon@linux.intel.com> <79ba0fff-4c01-2bfa-06cb-5cfc98dd710c@list.ru> <1489020399.131264.27.camel@ranerica-desktop> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: Sender: linux-msdos-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="utf-8" To: Stas Sergeev Cc: Ingo Molnar , Thomas Gleixner , "H. Peter Anvin" , Andy Lutomirski , Borislav Petkov , Peter Zijlstra , Andrew Morton , Brian Gerst , Chris Metcalf , Dave Hansen , Paolo Bonzini , Liang Z Li , Masami Hiramatsu , Huang Rui , Jiri Slaby , Jonathan Corbet , "Michael S. Tsirkin" , Paul Gortmaker , Vlastimil Babka , Chen Yucong , Alexandre Julliard <> On Fri, 2017-03-10 at 01:01 +0300, Stas Sergeev wrote: > 09.03.2017 03:46, Ricardo Neri пишет: > > On Wed, 2017-03-08 at 17:08 +0300, Stas Sergeev 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. > >> 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? > > I suppose a umip=noemulation kernel parameter could be added in this > > case. > Why? > It doesn't need to be global: the app should be > able to change that on its own. Note that no app currently > requires this, so its just for the future, and in the > future the app can start using the new API for this, > if you provide one. Right, I missed this detail. Then, yes the API should allow only one app to relay the SIGSEGV. > > > >> 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. > > Would dosemu2 use 32-bit processes in order to keep segmentation? If it > > could use 64-bit processes, emulation is not used in this case and the > > SIGSEGV is delivered to user space. > It does use the mix: 64bit process but some segments > are 32bit for DOS code. Do you mean that dosemu2 will start as a 64-bit process and will jump to 32-bit code segments? My emulation code should work in this case as it will use segmentation in 32-bit code descriptors. Is there anything else needed? Thanks and BR, Ricardo