From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933307AbdC3BTn (ORCPT ); Wed, 29 Mar 2017 21:19:43 -0400 Received: from fallback1.mail.ru ([94.100.181.184]:55012 "EHLO fallback1.mail.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933194AbdC3BTm (ORCPT ); Wed, 29 Mar 2017 21:19:42 -0400 Subject: Re: [v6 PATCH 00/21] x86: Enable User-Mode Instruction Prevention To: Ricardo Neri References: <20170308003254.27833-1-ricardo.neri-calderon@linux.intel.com> <79ba0fff-4c01-2bfa-06cb-5cfc98dd710c@list.ru> <997ba581-ecfa-b773-a48e-85b92a439836@list.ru> <1489022122.131264.33.camel@ranerica-desktop> <63231222-5b42-c8c9-02f0-0afbe702d8b5@list.ru> <1489190396.131264.47.camel@ranerica-desktop> Cc: Andy Lutomirski , 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 ML , linux-msdos@vger.kernel.org, wine-devel@winehq.org From: Stas Sergeev Message-ID: <6331deea-e9b0-fcfe-b75d-8100f37a615a@list.ru> Date: Tue, 14 Mar 2017 00:25:38 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <1489190396.131264.47.camel@ranerica-desktop> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Authentication-Results: smtp3.mail.ru; auth=pass smtp.auth=stsp@list.ru smtp.mailfrom=stsp@list.ru X-7FA49CB5: 0D63561A33F958A5CA9C34C3D45436E6CA0F3453E39840B4F40D864421E220EB9F18ECD7E95F35E929AFE063DF4C541C392607D21B050F5AF047418D251B789E0BF2EBBBDD9D6B0FAEAACC865B01FC22 X-Mailru-Sender: F1845AB6CCC9920DF7838D61D4D05C424E515FC62FF7477C42795B840B3E69E2C9D6EC4772CCCEDC1653177920737CA72999BEE114A20FF4278B2D54D4112F244F0A872F021F905956A8FB0C6EBA5FCCEAB4BC95F72C04283CDA0F3B3F5B9367 X-Mras: OK Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 11.03.2017 02:59, Ricardo Neri пишет: > On Fri, 2017-03-10 at 14:33 +0300, Stas Sergeev wrote: > >> Why would you need one? >> Or do you really want to allow these instructions >> in v86 by the means of emulation? If so - this wasn't >> clearly stated in the patch description, neither it was >> properly discussed, it seems. > It str and sldt can be emulated in vm86 but as Andy mention, the > behavior sould be the same with and without emulation. Why would you do that? I looked up the dosemu2 CPU simulator code that is used under x86-64. It says this: --- CODE_FLUSH(); if (REALMODE()) goto illegal_op; PC += ModRMSim(PC+1, mode) + 1; error("SLDT not implemented\n"); break; case 1: /* STR */ /* Store Task Register */ CODE_FLUSH(); if (REALMODE()) goto illegal_op; PC += ModRMSim(PC+1, mode) + 1; error("STR not implemented\n"); break; ... case 0: /* SGDT */ /* Store Global Descriptor Table Register */ PC++; PC += ModRM(opc, PC, mode|DATA16|MSTORE); error("SGDT not implemented\n"); break; case 1: /* SIDT */ /* Store Interrupt Descriptor Table Register */ PC++; PC += ModRM(opc, PC, mode|DATA16|MSTORE); error("SIDT not implemented\n"); break; --- It only implements smsw. So maybe you can make your code much simpler and remove the unneeded emulation? Same is for prot mode. You know the wine's requirements now - they are very small. And dosemu doesn't need anything at all but smsw. And even smsw is very rare. From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stas Sergeev Subject: Re: [v6 PATCH 00/21] x86: Enable User-Mode Instruction Prevention Date: Tue, 14 Mar 2017 00:25:38 +0300 Message-ID: <6331deea-e9b0-fcfe-b75d-8100f37a615a@list.ru> References: <20170308003254.27833-1-ricardo.neri-calderon@linux.intel.com> <79ba0fff-4c01-2bfa-06cb-5cfc98dd710c@list.ru> <997ba581-ecfa-b773-a48e-85b92a439836@list.ru> <1489022122.131264.33.camel@ranerica-desktop> <63231222-5b42-c8c9-02f0-0afbe702d8b5@list.ru> <1489190396.131264.47.camel@ranerica-desktop> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=list.ru; s=mail; h=Content-Transfer-Encoding:Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:Cc:References:To:Subject; bh=Dkivhl5tqXSx/Zi+AlybmnVXBdSViXJqv4Mc4BeXa3c=; b=GiInYCF4yCwRxwdigB6uJd9jJD7blgW/Z+/UXw9axS8MYibAF4qtUtHUTrv2tHZ0H3V4YdyA5UsitGyyDdXru891iS9WDQHD+ikPUsSGvGJZP0WFD3f3r9HQwsADS4GwMvTx8LtZ8zUD4lG68JNtxcCGYlcjF0vQHc2Al3df9XM=; In-Reply-To: <1489190396.131264.47.camel@ranerica-desktop> Sender: linux-msdos-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="utf-8"; format="flowed" To: Ricardo Neri Cc: Andy Lutomirski , 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 <> 11.03.2017 02:59, Ricardo Neri пишет: > On Fri, 2017-03-10 at 14:33 +0300, Stas Sergeev wrote: > >> Why would you need one? >> Or do you really want to allow these instructions >> in v86 by the means of emulation? If so - this wasn't >> clearly stated in the patch description, neither it was >> properly discussed, it seems. > It str and sldt can be emulated in vm86 but as Andy mention, the > behavior sould be the same with and without emulation. Why would you do that? I looked up the dosemu2 CPU simulator code that is used under x86-64. It says this: --- CODE_FLUSH(); if (REALMODE()) goto illegal_op; PC += ModRMSim(PC+1, mode) + 1; error("SLDT not implemented\n"); break; case 1: /* STR */ /* Store Task Register */ CODE_FLUSH(); if (REALMODE()) goto illegal_op; PC += ModRMSim(PC+1, mode) + 1; error("STR not implemented\n"); break; ... case 0: /* SGDT */ /* Store Global Descriptor Table Register */ PC++; PC += ModRM(opc, PC, mode|DATA16|MSTORE); error("SGDT not implemented\n"); break; case 1: /* SIDT */ /* Store Interrupt Descriptor Table Register */ PC++; PC += ModRM(opc, PC, mode|DATA16|MSTORE); error("SIDT not implemented\n"); break; --- It only implements smsw. So maybe you can make your code much simpler and remove the unneeded emulation? Same is for prot mode. You know the wine's requirements now - they are very small. And dosemu doesn't need anything at all but smsw. And even smsw is very rare.