From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 689F93EA963 for ; Wed, 2 Sep 2026 21:15:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.10 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788383748; cv=fail; b=LSx7jGPGebmuIL0IbSktUmLE0NneDFjsXbz7qJlEHJbfTGYWdWhzo37hKIjIJmpsmw7+YQhsMqvDyH3Cx0727jl3OCT4jdX+XxxW0B380zwMjrPKHWrPZ6dtpzqqU1EvYinPdRjbCoMRtDr/MQ74FfKuoE+DTxNJtkATTZIHXHA= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1788383748; c=relaxed/simple; bh=3hfBLDw2caFSJ7oBvpDLWEDC/x+TWRdFFSCMm6dw6TY=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=T/hXjUPvBDW3Y5pTVlNOaHxkT5s9I2PQPtPcq6n/MTbOTUy3TlQ3Yyq/oY9uhTbk7V03sg10s9aDuR8Y9eynMWwqMDNEGCsNCk2b/xcNey498plXGl7e7ftLXg2ATNss2SKu+mj6Qiu8WJsitNve97btmeQ7zVSp+M3ktb9MPNI= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=N9O4K6RA; arc=fail smtp.client-ip=192.198.163.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="N9O4K6RA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1788383745; x=1819919745; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=3hfBLDw2caFSJ7oBvpDLWEDC/x+TWRdFFSCMm6dw6TY=; b=N9O4K6RAfoMdKw6oFZqOJdTLNG2d+1uziW8gXDSV6BF7toBrXvwtI/SI JVId7+mG6bn1ybNqUTL+7enjWQHxQV02VlCOEL9eNQq56qhUjzFOBWQCF n7pr3KMGurnQxu3KW1KpC/GPAQBB7cLxQhaIXCPdxupFuYgg65aakMQJz lViWXWtcvoSglaLD3h7RfYyXfcaVhLTglhoPPIz7HVhYpCX7uTblTL9eD RWkXtnOYBZyusX0jTX+pXohe5xTKrqqWxPWAFD316WEgPLrQjFIddrN3R 7NHDteT+wSidMGCOqMQ4UJJyNhIh1s/y8+mFfxWlbCa3DrxwYkuh198tz w==; X-CSE-ConnectionGUID: y7hdZDtZSZexJpRZW5BeBw== X-CSE-MsgGUID: B9GbhbPaTM2idNRH+3xGTg== X-IronPort-AV: E=McAfee;i="6800,10657,11894"; a="100208557" X-IronPort-AV: E=Sophos;i="6.25,258,1779174000"; d="scan'208";a="100208557" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Sep 2026 14:15:37 -0700 X-CSE-ConnectionGUID: sRNMji5ETECDwc/u2GJC0g== X-CSE-MsgGUID: rwvFHaSuSISlh2I41xOvag== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,258,1779174000"; d="scan'208";a="268978308" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by orviesa008.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Sep 2026 14:15:36 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 2 Sep 2026 14:15:34 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46 via Frontend Transport; Wed, 2 Sep 2026 14:15:34 -0700 Received: from PH7PR06CU001.outbound.protection.outlook.com (52.101.201.8) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.46; Wed, 2 Sep 2026 14:15:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iZ/EYMuC2qKPUt1j4lF+RX4vSNld4uakBEDdsT72ACD3rDjASUKxlK1MrICMEFM60IcIxulvufPDi4jp2sJSGMUwrYcZ7Ed/aPgZRhnxuADbS0kINDVrzt7/0fgfQUV0pjPAVY5qBqCkM0IBLCs1gZnfwvbx73RY3FUad16xZ/Bo4Hl6jxe9cbcXeUvc35T7LWHoMT0n3trDYC/Nim3ya4hIwt9eJEQxGMrFPfxVRwAeazwsrY/fyisSgUinlVBnT1YN0iyaOOmyFc7K5DpS7KZz4wl5lJhsBONksqiQhuk5vpn5uiltsXE2XME9a8vng8t+y9dlMmcQyEDTjxBpJQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aUP1jqJ/654mfPTetihI+529Tk0y/uEZO2n8l14nlWU=; b=s9nMbIyfojWnHY9u+jedLHjCip+unJsZn4d5acPlhAHbUnVw3/Y2cWcZL33FhpTzU0tvGv1L5QWcR/UGSPUItD/WD/VYGQ07bugZacF/gvTt74sffSdl3ErIguTPJnJfS7aDZ074QnNWEo+kNL/oE0ZND/CtNtwzXfBSkLervixiYZaap5lD3iE5/0Hwei8N5rTR2jJpn696HpLfA4rGr2NS7g4qTLdN7b6VwyycZ0Cdqe4jTHZg4rBbstBMHDha4CoRjz4mkPGyNoMK7lKC8QqcFBu66kayOUMTzfBXlO1BYPIhd1xQiT5pcTXNmehA9NYjunj2NkmnAU9JR4gjag== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from DS0PR11MB7925.namprd11.prod.outlook.com (2603:10b6:8:f8::18) by PH7PR11MB8250.namprd11.prod.outlook.com (2603:10b6:510:1a8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.360.13; Wed, 2 Sep 2026 21:15:26 +0000 Received: from DS0PR11MB7925.namprd11.prod.outlook.com ([fe80::60af:89a0:65dc:9c84]) by DS0PR11MB7925.namprd11.prod.outlook.com ([fe80::60af:89a0:65dc:9c84%7]) with mapi id 15.21.0360.008; Wed, 2 Sep 2026 21:15:26 +0000 Message-ID: <2c480c94-a996-4252-b9ba-be5145cfe69f@intel.com> Date: Wed, 2 Sep 2026 14:15:24 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 3/8] x86/fpu: Split __fpu_restore_sig to extract compat path To: Andrei Vagin , Thomas Gleixner , "Ingo Molnar" , Borislav Petkov CC: , , Dave Hansen , , Alexander Mikhalitsyn , "H. Peter Anvin" References: <20260817042048.1579415-1-avagin@google.com> <20260817042048.1579415-4-avagin@google.com> Content-Language: en-US From: "Chang S. Bae" In-Reply-To: <20260817042048.1579415-4-avagin@google.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SJ0PR05CA0165.namprd05.prod.outlook.com (2603:10b6:a03:339::20) To DS0PR11MB7925.namprd11.prod.outlook.com (2603:10b6:8:f8::18) Precedence: bulk X-Mailing-List: criu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7925:EE_|PH7PR11MB8250:EE_ X-MS-Office365-Filtering-Correlation-Id: 3032c3ed-80a4-4b05-ebf3-08df09374ee8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024|7416014|23010399003|11063799006|4143699003|56012099006|10067099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: S4EbaaPJXcjEVvHuz6Lg1L3C7qO/0VSFZqak+GiTjcrjBkQCdFSYGLWrdTd6mTtJUutFVq2hLU2rRcsAV6nryQE6p9WMjh4ThuduZt7gRy2M1FIP55EA4IhtGW0Is/cyGzHoLjNmJn2UWpdLPefHK+b0raYUGszqHabrm6t3liBRgB2nekcir9RrhVXa68CoA1JpoZlJ6lIHXTF9ZgZux1aS5zHoFXiLSqd3VWVCG2r7Jvoa+sHg2IdG0nAetbYSzZHzCUfgtL7d1guI4O7/EO04mGQ+5jEXmQfB9XHbl37vr2CFG71EsQaxBXuRjIHthPpcar7uNHLnTYQb4e53o1W2Gh5NAcaui/9bpU6nb/FspbrO9N35kSilmWEar7z/J5b9Gdgz2Gy6deP0gQ3Dq50aaUzK11ADFacMvdKiudDa215nlX6rcwn++ODFbOU6GnHgjjhUtxs8V9j70p2aUedJh6p0vaN3Up9lV1GBPdbGMoHJom72Zk8vjxISteuHsNjvmZWaK1VYuM/8eNUm+6tOAHsIb1X4+vo6uat4Nav4iu9R99lE/4ZAewtTDIQwgXg3QpJVpmSXA7ZHVUXmBdFZRmBc44qwaKZWLaXlVG7Jv+xS2vjneN7WxkBnihCichDV59o23R4mAYZxGKNS0vop04X9DGO52m0SPwz3/7o= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB7925.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(7416014)(23010399003)(11063799006)(4143699003)(56012099006)(10067099003)(18002099003)(22082099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RzVENUpHcnFwT0MyeEx6Ni9DdVNGRHdSMk56U2hucEJsQklZWWt5RC9RYXVE?= =?utf-8?B?VlMzcjRBWVBpc1U0K2lJUHBvNy9ndkprSUVmcmdRaG9EUlg3eExORFAwOHhj?= =?utf-8?B?eHlvTEdZa3p5MTFBam9wOWYxUTcwQmpXdllPQzZHNVB3b3hJVWd2MngrcVQw?= =?utf-8?B?U3VndU1wZjc0bUJGYmIwbFhuYXM2RXkzTjY4cUtSZHQzS2hOS0F4dDVKZ2Fu?= =?utf-8?B?VHFhSW04ZVdjS2tVTnZYOTFpeVVKWVRyV2JneHZZRDkvL3EzaFEvRjBRcTM5?= =?utf-8?B?b0lubCtDTThZZytvYjkwSU5tQWJFMG1ZVGNEbFJ4WDJjVWV6cEEzejNwTWE2?= =?utf-8?B?WkJMRnArZGFCVzBERmY0SnQ4LzdxaDdEZDh6TDQzV1dIeVNlaEoremxORHZ4?= =?utf-8?B?K3BTNmU5TzhvVFF1RHZkYVkrd0FFS0NnMEt2TWhIbWY1Ylo0Nlpubis1ZFR4?= =?utf-8?B?T1JTeDNndGlCaE9wZ09uMWEvVGZsdGU5VTVmdDlhYUJWLzhxRko4QWRaeDlv?= =?utf-8?B?blVtRW01bjZWQTZoVmVIMTI3S1M5ZzJpMVVjM1owbkh3bUlCV2Q5RURuWnJs?= =?utf-8?B?KzVhTmh0NUpGRG0yU25XcFFCR1pzZ3V2VW5PbzUzVStqVitHRUc1eTIvclNw?= =?utf-8?B?SVZULys1dGRjKzAyOFJiajJnK0F5L21tckJiQVM2MkE0VnYrbHNBOHlRdGJv?= =?utf-8?B?SkJWV0MyeUVYZ092cVJpZHZ0ekROMno5TTduaE13WU5tdTc2YnlNRUFWejZC?= =?utf-8?B?ZGJ1bG1tSDB6WHU4NTRuOU9IdVU0V0MvWGNwUXl6MklIbXBaWjdTdng5TkJh?= =?utf-8?B?Nm9pZWxYTCtpbCtiZWFpcnpNOHNtblZvZE5TdzRtVlVRZVJpY3dwdXFGOGhJ?= =?utf-8?B?YmFSUVN2OFdjRVQ4S0xaWk4yR2dzT1ozZkRIdFU5QVZHeHNsQ0lmNUN5dGx2?= =?utf-8?B?VGdHODl5RnQrc3JuR0wwQWt5ejB5M0xuTUZ1cjIzRzA1NjFEVHFTN0hnL2Iv?= =?utf-8?B?MlliMWg0U09oeFN3UjZ3N2hGWFpkNHh2QzdmOXM1WnFzS3V3NEZxeXQwc3J2?= =?utf-8?B?NWkrTGliNWk2eXBjUjdLNTZRZXArTHF1ZEVGeCs3NnNvNWwzSWtQeTNhWjM5?= =?utf-8?B?SXoxS21pNnZFMFZWZ09HMVZKRzgwV2wwYWlnb2lwbHBvSW96TW5adlpiUzR5?= =?utf-8?B?WnUvS1ArSWdpby9tL1ZucDhOcnpod1FLclUrMzNhdDdKZU9NaUlPaVNLRjlQ?= =?utf-8?B?SldGdXFocmdWM00zR0RJUWh5ZHBkcGtoZEpKK0J2eUVPUzI0Z2pSR25GOUpW?= =?utf-8?B?c25DWEtCVHEvNlA1ZUJYUG1LYXdMZHpqVGY1UDFZcGhVS1F4ajNDL3ZzcVRa?= =?utf-8?B?ZEUyRmZxcTVsb3VxdVFVSXgvc2JrWnByNnY5TWg0WW9xOE94bE9xVzZuREpL?= =?utf-8?B?MFNJQzFDV3Brc2NyZmJGbmxQMzlWRFJXbTdaOGFwT1hNWjlRTWNlUUw1ZmtQ?= =?utf-8?B?cVNsVjg2K2NJTTFnNUJ2RjlXWTYwR3pBcTFMUDhHVEJSRW9oczR6YldNM21z?= =?utf-8?B?RzJmTVBMM0VBTTIxVEx1aWVLM1hGb2tUTzc2eUNFeHFjcktsT3lVbWlvd1pC?= =?utf-8?B?d0ptd1RsM0E5bnpKd1padmZhQ1RWMHVPMStzOHBrSCtSZWFrUjdvY1IxbnN1?= =?utf-8?B?K0h3VDhpUVpONUNTOWdyZmhYaW9iaDFsWDRUL1k3dEQvaW5OSi9EbllyM080?= =?utf-8?B?dGk1UCtoakpYS3pxQkJxbTZGU21yMERrVThaZHcxWnFYQkt3Y3hrajdZR2pI?= =?utf-8?B?emlacm1VSXFRMnBOU0hUVVhvS0toWndnbEY5dzB4YXRmYU1UUWx6ZjlQaHpX?= =?utf-8?B?S3V6U3ZsOHQ0ak83QXJPS3djL1NtMTFkVG42SktnbnYwdXhPYm5MT3dXbEpZ?= =?utf-8?B?MkJMREMxb3VJa3NEOE5TVG5kN0FmYWZKNUUvbGFOcXV0d01tR1U1OWplT1ly?= =?utf-8?B?eXN4dTdQZzdkTGNyVklVbFMzSHhOS0dhN3RXK2h0SWlvdVBlQmlva0ZWc2t3?= =?utf-8?B?dENxellwYTNuRndJVm1ON1V4aFlXbVpYaHFtU3A5THhXOTdxaDJidXZsamcw?= =?utf-8?B?SnEzUlRnSzlYaXpJaEw1cHpKVWJGZ015NVROUHNqRXo3Y1pLREE5OWRZQTVQ?= =?utf-8?B?WCt1NlIvSFF5OXM2NlExZ1VyZVZxbkd0MTRCbHAxRGY3SDljTDRrMWQvaGlW?= =?utf-8?B?eCt1Y3MybjJ1RVV6K01KRzd5STBhdEhaY1I1RzlEaDZ5VUVLSmJwcEl0ZERP?= =?utf-8?B?RVZ5Um1RekVmaTltbDY5alFwamQ5R2RFSE5vMTFuTGRQdG9pcjIxdz09?= X-Exchange-RoutingPolicyChecked: ldJtAmtkjwKDHwtLnN5E2/U+n5YjWPQaAQv0sbMq5ippJlNuMuhK/9Adwbuhd5zqDW4jQl4I3NV5+BNR5da8rNon5vpvaXilUoAUH+QRL/EOY7jmesoVzFsbA83CGZTlXTaL15rTD9+fNd79yQdgAgGJJqddux2+SXe0PtVKRrtoTHvetBv/ykpmwVNtaujYONoZSmINTgWmfPwqEVk5T1BVIEH5fdOaycBZDplptUGC7NAQ9hoh1qHviMHHLkvwGqWPWCzbgme0WCnNj/hi6b5fkpZ6edB52I90JhWdK2ArsHct/Tvy9KuPdMUyp63nHnCX+fz9KzIujUpSZHSnIg== X-MS-Exchange-CrossTenant-Network-Message-Id: 3032c3ed-80a4-4b05-ebf3-08df09374ee8 X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7925.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Sep 2026 21:15:26.3911 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 4NCpTdsHPHeTsfnoegMpO2XuDEkRs9D6wDzMUYch7Ql6LJVM57VTUaDeR8D/BMN8E+gLLJupCHSUcay3azpQr9ddYvXVXyxB2iLjc97NXig= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB8250 X-OriginatorOrg: intel.com On 8/16/2026 9:20 PM, Andrei Vagin wrote: > Split __fpu_restore_sig to move the restore part for the legacy/compat > FPU state (when buf_f is present) to a separate helper function. Not sure where the justification for this refactoring is. Is this primarily preparation for the next change? > > The legacy 32-bit FP frame duplicates the FP state portion of the > FX/XSAVE frame. For backward compatibility, the legacy FP frame is > treated as the source of truth, and its state is folded into the > FX/XSAVE state before restoring the registers. This reads more like a description of what the refactored code has already been doing than a motivation of the change itself. > diff --git a/arch/x86/kernel/fpu/signal.c b/arch/x86/kernel/fpu/signal.c > index 42c3d78bd849..6a14b528ac7f 100644 > --- a/arch/x86/kernel/fpu/signal.c > +++ b/arch/x86/kernel/fpu/signal.c > @@ -264,6 +264,9 @@ static int __restore_fpregs_from_user(void __user *buf, u64 task_xfeatures, > } > } > > +static bool restore_fpregs_from_user_compat(void __user *buf_f, void __user *buf_fx, > + u64 xrestore_mask, bool fx_only); > + > /* > * Attempt to restore the FPU registers directly from user memory. > * Pagefaults are handled and any errors returned are fatal. > @@ -324,14 +327,9 @@ static bool restore_fpregs_from_user(void __user *buf, u64 xrestore_mask, bool f > return true; > } > > -static bool __fpu_restore_sig(void __user *buf_f, void __user *buf_fx, > - bool ia32_fxstate) > +static bool __fpu_restore_sig(void __user *buf_f, void __user *buf_fx) > { > - struct task_struct *tsk = current; > - struct fpu *fpu = x86_task_fpu(tsk); > - struct user_i387_ia32_struct env; > - bool success, fx_only = false; > - union fpregs_state *fpregs; > + bool fx_only = false; > u64 xrestore_mask = 0; > > if (use_xsave()) { > @@ -346,11 +344,33 @@ static bool __fpu_restore_sig(void __user *buf_f, void __user *buf_fx, > xrestore_mask = XFEATURE_MASK_FPSSE; > } > > - if (likely(!ia32_fxstate)) { > + if (likely(!buf_f)) { > /* Restore the FPU registers directly from user memory. */ > return restore_fpregs_from_user(buf_fx, xrestore_mask, fx_only); > } > > + return restore_fpregs_from_user_compat(buf_f, buf_fx, xrestore_mask, fx_only); > +} I don't think replacing `ia32_fxstate` with `buf_f` is a clear win for description itself. Furthermore, __fpu_restore_sig() now looks thin enough that this may not need to remain. It could be folded into fpu_restore_sig() rather than tweaking the argument naming, then. I assume the resulting fpu_restore_sig() does not become too messy. Thanks, Chang