Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753476AbcCJT1S (ORCPT ); Thu, 10 Mar 2016 14:27:18 -0500 Received: from mail-db3on0066.outbound.protection.outlook.com ([157.55.234.66]:20231 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752217AbcCJT1F (ORCPT ); Thu, 10 Mar 2016 14:27:05 -0500 Authentication-Results: amacapital.net; dkim=none (message not signed) header.d=none;amacapital.net; dmarc=none action=none header.from=nextfour.com; Subject: Re: [PATCH v14] x86, mce: Add memcpy_mcsafe() To: Tony Luck , Ingo Molnar References: CC: , Linus Torvalds , Thomas Gleixner , Borislav Petkov , Andrew Morton , Tony Luck , Peter Zijlstra , "H. Peter Anvin" , Andy Lutomirski From: =?UTF-8?Q?Mika_Penttil=c3=a4?= Message-ID: <56E1CA7B.5040706@nextfour.com> Date: Thu, 10 Mar 2016 21:26:51 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-Originating-IP: [84.250.21.106] X-ClientProxiedBy: DB5PR02CA0023.eurprd02.prod.outlook.com (25.161.237.33) To DB5PR07MB0904.eurprd07.prod.outlook.com (25.161.196.20) X-Microsoft-Exchange-Diagnostics: 1;DB5PR07MB0904;2:ELeOHq5q4Biolj7Hyq+dS6TsUPOb5N75AtFhtTqnGaJhYSSw/V8oClJB9K2puUTXplS65tCOYKFZu1Jyvf1SjyWWAW80xCpA4FZAiJvvgJhzeV67bqCAUFxRQgO1LQAnUhzJhTpad/aSTYK3s+maqA==;3:FSo5BqmzWCgL8hNh1G4dU54GqfAL6StkC/NcFaDroLJTX0mRmQwNw5mRlk4QcVog2ayLw0kLeCNIiUlYF/Q1ikeEXihkfyn74/mdRYOxCquKXPea54B1eM1QJvjeXkkm;25:NyKxecjjkZjGZaBwNO/61XLeCDiKchfJdwhtXmiqES4Vcg8fKG3rYt3iFgnSdig9ixqwa/F9aK7v0mmxjeWUnsWk9foqo7C+MlaEuG4V8Vy6qOJ035DGr9yqwAsTMU1UiuNP/aP6EG5/rA+2mFJJNDTyWfl4rWLXfzIzsYoufbyEis9Gra+2UJjCuS6/XTp3cbcoLfn7aZaZ1PFObxJ1BE70jn3rOBWzhDNf42SRJPl7/4OYkTB9nM5SKzIVSonvgkQrDu0jQtdZDOEXvYd6HOLKIuDXolm3zS3wl8ctD2+jDWwd5p5oc3t36SGT5J7BzA4yO8o4p0LLjuegjg6XUw== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB5PR07MB0904; X-MS-Office365-Filtering-Correlation-Id: 5173aea4-76bb-418e-74c6-08d34919f488 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:DB5PR07MB0904;BCL:0;PCL:0;RULEID:;SRVR:DB5PR07MB0904; X-Microsoft-Exchange-Diagnostics: 1;DB5PR07MB0904;4:Tyaf4jrRIlJWAln1+z+UVYJl+RZvq9aQJjtF1rF0FzAsLwQOo9jzhjrFChrE6+XwMg90IRUepGyPX1s6oaDjvpZfipToV4AWgd1aiaHlLNLtJLtV4f2lmC0tHOG7/z+6t7/WqZqWA4qjJE6iaHUh23yArRqFUOex/QUhlwSuzHHUYVDvJwV78JcDizh3XFyVB993uIJ+AnDEgnZd25Lh5D2/YCQGnWaGudEGQ485RnYF3gGagVdCI8vpde4eY2ZSv9bMz2t73Pf2ndGMPj7Zw9CoYOLj16dHk4EYl9gYJnFFGNUIq+K6TcqmczB1Q+unIsg+KIDjvvJ+Obr5dPhZYBUKzU8XV6A480hb2MruUyxmvrQ+x5dr4erlQQDLRLgF X-Forefront-PRVS: 08770259B4 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(24454002)(19580405001)(1096002)(50466002)(50986999)(54356999)(586003)(19580395003)(6116002)(3846002)(5008740100001)(87266999)(36756003)(65806001)(65816999)(83506001)(76176999)(47776003)(189998001)(4326007)(230700001)(5004730100002)(4001350100001)(92566002)(5001770100001)(64126003)(81166005)(59896002)(23746002)(33656002)(86362001)(65956001)(77096005)(66066001)(42186005)(2950100001)(2906002)(117156001);DIR:OUT;SFP:1101;SCL:1;SRVR:DB5PR07MB0904;H:[192.168.1.71];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DB5PR07MB0904;23:DzqdR1vGgnqz3GmPvq99Zd2F41shyNY8F1HU7?= =?Windows-1252?Q?i8o6CP254STaTRMbBhsvq+xz2Eey0Ji5X0a9WMNh4EUy6gi60wi0zY/M?= =?Windows-1252?Q?8ztReVwmwuJ57/0q8rcAemBy+H0NRQz3eEF677vFq1yknaHNYfwtifck?= =?Windows-1252?Q?OX5t57Hz0hJ2xCQm2nhhVURQAjzfRLyUQLqi1hFf09T0VFoLbYixJu/J?= =?Windows-1252?Q?rB54AHDrLUt/jcEOOsJgz3IT/bpz2y4Uw/ZFQ+ASVYtD6e6hWHZQiPnK?= =?Windows-1252?Q?oYU0R9771e5ZMNmzOtE21tHm79xio0ECB1/T8swkTDrdegcFrYH5PLo0?= =?Windows-1252?Q?eEJMon3L5AoMnCBmaQ/L1wXQSUlVaoKPwVndItIeeKa6kbZWFH+xCwxr?= =?Windows-1252?Q?ElNH+awqHbOytIvKQkH1FMLtSKdsxZLs5tCJm3E3r4neD6FIMdQF4/K6?= =?Windows-1252?Q?LC0kHxJOYh+SZiJvIUw4c7AcrImqLLpoxUaohCL2Unyfeqs+C3yRB8lg?= =?Windows-1252?Q?bFxJpCLbhywa3zNtd1v0TaJsQw6tU21QSd+yBqa33QrRfyTthC7UOrk1?= =?Windows-1252?Q?AZTKR2kK9dvcQFN8NNAv9oHXsQHBvOHIabGjGS9lHZUzyskBFvVwfgXI?= =?Windows-1252?Q?LOGaTfpUTalVJno7zrGIfOZJMtUVHp0qqZKDxw2zJCx6mm8DalNv7DpN?= =?Windows-1252?Q?rOyjwH12sv/mZ0c0Yr4ENzALlxv9JQ3xINHUsxhyPAuLv541KQQB4R1s?= =?Windows-1252?Q?b6sT74XuM7Sp3pfHnypGs93Eph5mftg35PrxmNkrPoxc9nZMsX9oKZEK?= =?Windows-1252?Q?u6BHWN8jQZafiy9g2coyUSYKfnSTUR6PQ18VBAYFjtRFz7vmlMM1OfrJ?= =?Windows-1252?Q?HeU+pMZgEFM2IR7a8w+LjMo+d20DgHxD/IClYDaquL0IfjGVJKa3fIpV?= =?Windows-1252?Q?f3lZzn1oOcNo+QvOLVy4DBwUeIPlPplnwZnYe6kFCy/WUa7z1BtFlwQU?= =?Windows-1252?Q?t1LA2i8RdO5PC3EbjvoQgjY1xZFkxCnz5AbNM89w37HTI4v88oTW9fs3?= =?Windows-1252?Q?EzBCdqF8/yTJWij3B0mEUA4gSWHeFVixiXC+CN+whbgfYYmPVBTHZqzH?= =?Windows-1252?Q?VAkpn3oM5xy7pWbrNu2wUfbMxNVv8S8SE2nyaHYP34FzBLY4Be0oyVoP?= =?Windows-1252?Q?t80yGrsYA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB5PR07MB0904;5:bfeVlHo8mDSM6rVmsLfTmOh3t9f/CQxr6BWZdg5cQr3R4Lu8raocGbplx7x76ObHXfK55dUIAavOwVTCQdqjG1knEBOoemE5spsMzGzZLt/rfc9hHdHmd931kJXmOOqtnQkcTU8rCfeLC3e7wmPmtQ==;24:at8/d1BCbeUaopR524g/k0AZcJCXMA+BNKZFiRZxKCdGq+KxUyUesFC5MXHCstLJCYk5fxCTuL0NwKirCa2Wr92p4e2oRVnwLVDuFBe4I/o= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nextfour.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2016 19:27:00.6215 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR07MB0904 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1177 Lines: 38 On 18.02.2016 21:47, Tony Luck wrote: > Make use of the EXTABLE_FAULT exception table entries to write > a kernel copy routine that doesn't crash the system if it > encounters a machine check. Prime use case for this is to copy > from large arrays of non-volatile memory used as storage. > > We have to use an unrolled copy loop for now because current > hardware implementations treat a machine check in "rep mov" > as fatal. When that is fixed we can simplify. > > Signed-off-by: Tony Luck > --- > > Is this what we want now? Return type is a "bool". True means > that we copied OK, false means that it didn't (this is all that > Dan says that he needs). Dropped all the complex code to figure > out how many bytes we didn't copy as Linus says this isn't the > right place to do this (and besides we should just make "rep mov" > > + > + /* Copy successful. Return true */ > +.L_done_memcpy_trap: > + xorq %rax, %rax > + ret > +ENDPROC(memcpy_mcsafe) > + > + .section .fixup, "ax" > + /* Return false for any failure */ > +.L_memcpy_mcsafe_fail: > + mov $1, %rax > + ret > + > But you return 0 == false for success and 1 == true for failure. --Mika