From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2075.outbound.protection.outlook.com [40.107.243.75]) (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 B1033232459 for ; Tue, 14 Jan 2025 16:30:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.75 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736872249; cv=fail; b=tRk77jhy37MNofbNqWJ3hBMiy29O85VuZjHVQat61PmWfU4vzdrsLLd7jRoDEMFY/+iPe0Zjmto0yY6akq2wquah/Tq+j857AhGP8jSyZ02uKKTup3l605cw6croa5DOQAi5ZCUKc51HJR5xNCLZvc6IkJ8c+mnaZvQY/Sy0w+M= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736872249; c=relaxed/simple; bh=p9mRQP9oBQXAj5fu0dbROHoKlN/1VeSod1l03gUKzkQ=; h=Message-ID:Date:To:Cc:References:From:Subject:In-Reply-To: Content-Type:MIME-Version; b=rO7ZKQ4qARX2uJDqJS5hEsW9jQmM4Q/7CghgDACUSQbTzg6fUPfewLfuU3cb3jBXnrotswGFGEUuPNPTcmo35Vm3Jv7K9X0edzMhtcXe9NwObniFnYdWloQKMOQUa6Hr3aO829gM7bOphrClBx4fb0BIvrmIAgI67KXnAotI484= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=adBl2Bdx; arc=fail smtp.client-ip=40.107.243.75 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="adBl2Bdx" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=F7jKEZt/9j31LRHSj9O2fIuL7WU2j0PkpsHh+QnyvUwswRK21+aHirjViqJGUFXAoRdUAmNkHF7trYye9zsMz5nwKCwyEFef6V8jxtGfwPSbiRLMSZn707pVPbRF7arib+gCkG7nJF949rUcBSgTGgSHKFmw+GSpqzibu8sfcvhZreoMjZfIoFbOZXgOkxyPtoZ+85jLXKQsxkXpxlsC2MIiKbyyYOJD3NJ/GIQ8X8jn4/ZbXrnMaYMPkVZSgPw2H4GQhrACJuVOkZenDK3ATS2U/+dDOXswjEVJ3DeW539aUb7HyvDgWXW9L/H2tqPeWg1jM1uJk4nHOxYZoddMmQ== 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=OEo7N2ZvqRJDfRegdprsK1Sr7Eqm7dK7POCwa5WWZqw=; b=HqDg5a5Q9H3tPZKoCCrh1A8io8xJrjsV3ipNihrUQzhiGcZ7V+l+TFXRaT4Gp2wFExMIXrgIPz7tuyhP/Rtzen0x0vZ0FImoeaNyUVzV1SDEcSJbQ3qJjyK1cBv+POXPG8y7rbX/xIBmaWYxgcOc3DuWDG5SoXBn8HKsv/3t29Fnb8LWem3cMIPTWYnZwkrE/PA+kqt3oju8wS2cLzvxEHpzNJUCT1Az9XxraZhkhkwUcC1vgVeqCW+bMqmZufQq6KLPd+So+zaAn/v1+yQGwYWBk0w42TtzUivv1AzV+Tnaji2SmwsVj8IeiHt8QDdf6G1HnVihJ9MKiFM9/UoECQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OEo7N2ZvqRJDfRegdprsK1Sr7Eqm7dK7POCwa5WWZqw=; b=adBl2Bdx2fgfaxFev8AKBKXpIKe2r00wgIFM99g03b60vVOOdgin2al1sa5n9ZW1CW/kUv//ro9OKpkMnGwubIb/IhN2iVSCm9IZgymqA3lE1ZzE62c1XXF+xhptpTjcLw8B1L9I4zloKRYXIHCKzV1eBwcWSNL33DDCXxKyPuc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.com; Received: from DM4PR12MB5070.namprd12.prod.outlook.com (2603:10b6:5:389::22) by DS0PR12MB7803.namprd12.prod.outlook.com (2603:10b6:8:144::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8335.17; Tue, 14 Jan 2025 16:30:43 +0000 Received: from DM4PR12MB5070.namprd12.prod.outlook.com ([fe80::20a9:919e:fd6b:5a6e]) by DM4PR12MB5070.namprd12.prod.outlook.com ([fe80::20a9:919e:fd6b:5a6e%7]) with mapi id 15.20.8335.017; Tue, 14 Jan 2025 16:30:43 +0000 Message-ID: <0e3f94d0-0d2f-b815-009d-e2e3da375727@amd.com> Date: Tue, 14 Jan 2025 10:30:40 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Content-Language: en-US To: Rik van Riel , Dave Hansen , x86@kernel.org Cc: linux-kernel@vger.kernel.org, bp@alien8.de, peterz@infradead.org, dave.hansen@linux.intel.com, zhengqi.arch@bytedance.com, nadav.amit@gmail.com, kernel-team@meta.com, linux-mm@kvack.org, akpm@linux-foundation.org, jannh@google.com References: <20250112155453.1104139-1-riel@surriel.com> <20250112155453.1104139-6-riel@surriel.com> <685632f2-44a4-a7fd-063b-1d426896f297@amd.com> <7045d1666ac5722820a43fffa7f2e6fb3c2eb485.camel@surriel.com> <5085e0aa-5921-40c2-c018-c947b98f5152@amd.com> <6737e3d6-65fa-46b3-9413-e26f4ba8efdd@intel.com> <0e20a86c-bc4f-2774-3cf7-4424af7becad@amd.com> From: Tom Lendacky Subject: Re: [PATCH v4 05/12] x86/mm: add INVLPGB support code In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SA9PR13CA0117.namprd13.prod.outlook.com (2603:10b6:806:24::32) To DM4PR12MB5070.namprd12.prod.outlook.com (2603:10b6:5:389::22) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM4PR12MB5070:EE_|DS0PR12MB7803:EE_ X-MS-Office365-Filtering-Correlation-Id: 5da0ff4c-3c04-4cb7-4afa-08dd34b8ca64 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|1800799024|376014|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?B?N2g3QjZaWGljVURCYXNPTytaZmNzU3FPNkVQNSs0eHJ2aWdIYWNNTEhGRkFk?= =?utf-8?B?clZ5SjdXS1E4SVZBNC9UR0duV1NVNUkzczFKc2tiUXdVSC9tOGc5YUpZU2V6?= =?utf-8?B?VGVRTGI2cGdaYUltSjV6a3ZiOG5EOVk1WFMvT0N5SVdIZ3B3S21LZ3BVVFJS?= =?utf-8?B?U1RSTzFoK3haTk5Ld3BDZEV0MmFQaFFkWFBxeGlLNHMvUHJsSTdYam5TR2dZ?= =?utf-8?B?UzlXd3hINkFpZFJCdnVRQm5YekxYMDc0a1hrVmQrMGZ0Q1VjS0NDQ2tjWnRi?= =?utf-8?B?NWY1N3hZQ0tzVDZNR3hlNExadWVZM0hHTVdKNVFQUUZ3M1NmcHBNMm5mcnZl?= =?utf-8?B?SUJnaDVwYlpKQkRBWjBCVUoyRkhYcEw2RTVxYXlPYnZESGJIZFl2RHBwcFJC?= =?utf-8?B?Mkl5SGs0RkhwS2E3cUp6NzdVNnV6QXRhaXFUVStTWFBrM3lUc1MzaldJNkw5?= =?utf-8?B?TE8wTjJ1d0JTZmJNRkV2aC9VTGlqTloydHBNRHN0MkZQcXBHa0pNUEh6NzFW?= =?utf-8?B?bzZxaWlFNGJSNVVJS1dHWjl6OGM2RzNuMjVhQURIT0RQQUtoeDBJbTRiUEJO?= =?utf-8?B?WEp6S1RVblVndzM3VXNYYk9Jd1RTTGJDb1lLZmhiRFN4T0VITXRwUnlCS1R0?= =?utf-8?B?dm8rMSs3bks3cnBCeFVYeGlWOW1tWE41Mm1CSGxTWGhCd3RWeGo2c29mNFI2?= =?utf-8?B?UDlOVmVLUGtKZnBUcm1PTWM2MDU5SGdwaXlzenhybmo4WGpHSzVBMnpXSVhG?= =?utf-8?B?T2tRNnpKNEJnaGc0ZUF4VDFDY3dXdHBNK0QrYmQ2ZTlGR0VycThUV1lxb3ZT?= =?utf-8?B?NVpQZElZSXZaUmxaOVRZdytOMW5ZYjcvNmw0M1hHK3lYV1UxNjRRSHJXWjdH?= =?utf-8?B?MktUTmVVNkxDMmU4L29kbHNMSTNzSll0VzFJWmtyRHljN1pjWnF2d3c1dlZm?= =?utf-8?B?OUdXdm05NEhPcXF4V0pPTXVmRWdPUC9RNU0zS1oxWkRkVmNySVdYVHFpVVhU?= =?utf-8?B?MXk0L0JZREpVeGhvdTlTUnBKKzBGdXRTbFg5OVJZNUlkUU1ob0l0dUU0eXNK?= =?utf-8?B?QWJiZHBGQldXODZSRmg3aGJyK1FrVzArQ0lHNlNmbUlRZzVKWGdmMHIrZmZR?= =?utf-8?B?RzFHYVIzZWkzSXMvckg2dE5xb2NSOGp6bjdkV0tvZFBzN3duOElYY1lLeEhp?= =?utf-8?B?QlJEUnp2MkRmaHV2SWtnSkc3R3J1VUJFUm04QUVJazRsS3BKY3ZEVys2NWZM?= =?utf-8?B?MjI0RlVqeVN4NmNkVTRjdGpubUdNS3FmYzBDZ1FEYUJ5OUhxRHlzQ05UVkt0?= =?utf-8?B?MmJGU1g2Q0lvK2R4MjJhNWJJQTBPNDNJeW9sRXBsOG92RVE1MGF5bEd2OEI0?= =?utf-8?B?K3J3S2hGeDJUSnBvTWhFb25LdjdwSWdYK05xelVqbnd3T1prREsvcU0xd2Fh?= =?utf-8?B?UHN5YnBJWkNjR3U1RHF3S0Nrajk2ejlWRHpjSGNPWE4zYjVNVzFjNXpOK0Rh?= =?utf-8?B?eXZ3dld3ZXlCZjVrNlEvWERPenkrWlJzQmFqOFRmTTZiN0lCNmYydjlnTVZT?= =?utf-8?B?ZG9nWGRJRkoyMFdRbXl2d0R1OEhKeUJpSFhaNmYwa1ZycDVVOUU3SFhyN0J3?= =?utf-8?B?Uk11RTAvSjQ5QU43VmxwOTJRcHpJc2IrdWhNR0dCVERyVUZJd1Z5bFFKdVlq?= =?utf-8?B?eU9PYlFOSTMwWTBGQWxJWjhKUFVqakN0UjgwUHcvdWNseHEwUkxpTDJzUjEw?= =?utf-8?B?N2l6MVpNcnJLVVJPcHhUL0xVZW1kOWJaRXVrcm1yNGtZZndYQy9KQVFmdWxY?= =?utf-8?B?WlJSd3Zlcy9RM0JzUkNCTC9NaFZFcWNIVDN5WEluMW1PV3J1MnJpM01SQkZy?= =?utf-8?Q?z5kLmgoTJonXd?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB5070.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(7416014)(1800799024)(376014)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?RUZpVTZxSUwrYW4zY2YzNjJ1VWkzczlKVjNBL3ZOeFJGR2grK0J3bmkwL05Q?= =?utf-8?B?U2MxQnd1R283cXU1clBMRlZ2Q2hmZ0RsdDVXRWUxQnkrRjNDdXJ4d05BaDE1?= =?utf-8?B?MGxjN1VxcDNBaHk3L0IwR2dKNkIzS013eUdBZU13NVhhMFBwcllwbUNNaVVW?= =?utf-8?B?ZGNtSHhBUG5icEdhK1RTaXJNc28rRUhYa3lvb0N5MTNlekY5QTdsR0RLWFl6?= =?utf-8?B?ejllRlZwUThrdmFYZitSbHhQeDZROVhnZE1CR2h0cDFEUXNWQ2hwdE8zOW82?= =?utf-8?B?c1Z6QWRlMTZBeGd6RFYzc21PRDdiN3poNnFmdnJnQ1lLbGhZQStmSmhYN29C?= =?utf-8?B?OWVWRC9Pdml0T3B6emtlckZkODlrYVF1L0VET2c0bEQwSHJXUHpnOEFrZzZP?= =?utf-8?B?U1RPdTY3SUlJZlprTVZrcGdvdDdmUUJaNS9MKzJVcEw1aUs2akpvSHJlWEdJ?= =?utf-8?B?REo3UC9sb0RhVzNPb2Z2R1J6RFpySVppVXV1VEFiSmhIR2NLYzNVTXFlOXl2?= =?utf-8?B?UDQzemdFdkRuS3JjLzFmODgzMFoxbXg1clhzdjBuRTl6TDB2Tkx5aEJvNmpk?= =?utf-8?B?dWdsWnRPSWxHaWNqcDBOaVV5U2tPL0pkU1IySUVKK3dGSTc0a2QvbTRDbTda?= =?utf-8?B?T1JJTEFoeEx6WWFZSm1YdjQydVNrNExGR0RLbzBjc3NRakFWT3lxeVp0RllD?= =?utf-8?B?UGZhbnd2QnpXeFJpN0xtZUFPbDFTbi9oeHJrSGlHTm9UVDF1eWRqUDFjaXhN?= =?utf-8?B?Tk5hNU1od3FwTExld1J1cDF3UEhnaGJMeW1McFA5VFdTT0Y3NUxjSE5UaVNo?= =?utf-8?B?bGxvYVF6dlpoNHo3Y0ZUSE9lcDE4akMzMDVMUE92YWVTQ2tmM3ArOHozWnNk?= =?utf-8?B?YkdGbEp3bXBPb2R0YnNRaTJUbVQ0d3FsSDZzVHM4dlp1ZnVqbGJNajlyNjBF?= =?utf-8?B?T1JobDhFTTBhZnd6cGpFM1M4bTNPQzlZUFJxZ3dCMkE5c2xFWVFab0JNOUhW?= =?utf-8?B?Q1pjd2pEZFFQMEhZb3prZmVoZ28xakpWM1dZVWhtSm1xTkZPcDIzQU5sdjJZ?= =?utf-8?B?WEtuTGdINGpxcW0wa0Q3RzUycDJhcmRlcGxyYmwrUFY1d1M3cUFUWE4yZzlv?= =?utf-8?B?MVJrbUorMTR0MlJJU29jejhiVC9tUndWK0gxaTVtMUx0c1ZlOFZDV3FIeWpu?= =?utf-8?B?a05tVmRBYW5rZUhoR0MrVXRsWTNCTFlyN2lQVnh0TWNmL0dyWXQxM0w3d213?= =?utf-8?B?anBwM2Y5Z1BzaHlDM1FqbzlPaGEzTVBQeUF6cVRyODlpTUR1Q1ZEeUx1cVBD?= =?utf-8?B?SXFuMkFzTVFoZDdkVEdkTDNXa3k2c1pac0xzSDdSdGtITEs5Qi9WSmplYWdE?= =?utf-8?B?ZWNuZVZWVW42N0xNazIybmEzeWpqRUduTXhxZXlBS1h3Z1ZHdnIvclBSdVBI?= =?utf-8?B?L3IwQ0J0OUhKWFdmZVJyWUcwbktxRHhVdGlYay9tdVBEcEpFYVViZS9NWHY0?= =?utf-8?B?aWZGNnZiNjBjRFlYU2tEQ2FnZjg0ZEFjYzd3V3dKYWc4MEJZdmluUzJlTmho?= =?utf-8?B?WG5MVUxqRkIrdkpkVXNnVFlzY3VwVWNsRS9VRnVvM1N6V3d2UVE0cEZnaXFC?= =?utf-8?B?eGVSOHJBR1RZOXpNQkc5NFF1aDFwQTBxVTZRMEkvT01kbC9jYmhTNnJ1K3FY?= =?utf-8?B?TWhKcGFsbnpiZDJST1FpNnRSam9EV2kxZlNTL3N1L0lvWjZQaGRualFweWRD?= =?utf-8?B?WWtTV1hqRTgzOVkzdFpoaFl4SENxLzlYWWN3YkJxS3NsRkZPb2JvWVdYcFJk?= =?utf-8?B?Nmc3S3E3K3ZySHBxN0tQZStVTERYdCtDemF2MnJ1Yzh0TzFydnZWRXJJeHBM?= =?utf-8?B?T0QzR3NuNGJHN0llQWw5elZNRlVnaWJ4SDgvdmxIbmRiaEcyWWN6L2YrMndU?= =?utf-8?B?bEQwdng4RkFpV0JULzQxYWhFSmNEYndGckJkdU5JK2lhZXgwQTBlRDR2bDFk?= =?utf-8?B?aXMvTlUzZVl5WUpzaGJpdmNvZ2ZuYXkwLytkTGo4YXlVN01uRU9RVHR1Vjcy?= =?utf-8?B?SVdVNUt2TElpYkE5SlVVOUR5SVdhZkpCK1Z1U2dDajAxMldtMWVlNm8ybzNE?= =?utf-8?Q?3g4SaXsJyJE93WGFHtgdpZCvI?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5da0ff4c-3c04-4cb7-4afa-08dd34b8ca64 X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB5070.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jan 2025 16:30:43.2385 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: NjdFk+/tjrt9tdMGZt0+CqtG0nuCo6YkP1mmj5y04cwBK7VevIX1hjC4xE6Jd3eVtlVfWyI0C9fz3WQEZWjpsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7803 On 1/14/25 09:47, Rik van Riel wrote: > On Tue, 2025-01-14 at 09:23 -0600, Tom Lendacky wrote: >> On 1/14/25 09:05, Dave Hansen wrote: >>> On 1/14/25 06:29, Tom Lendacky wrote: >>>>> Given the choice between "a bug in the calling code >>>>> crashes the kernel" and "a bug in the calling code >>>>> results in a missed TLB flush", I'm guessing the >>>>> crash is probably better. >>>> So instead of the negative number protection, shouldn't this just >>>> use an >>>> unsigned int for extra_count and panic() if the value is greater >>>> than >>>> invlpgb_count_max? The caller has some sort of logic problem and >>>> it >>>> could possibly result in missed TLB flushes. Or if a panic() is >>>> out of >>>> the question, maybe a WARN() and a full TLB flush to be safe? >>> >>> The current implementation will panic in the #GP handler though. It >>> should be pretty easy to figure out that INVLPGB is involved with >>> RIP or >>> the Code: snippet. From there, you'd need to figure out what caused >>> the #GP. >> >> Hmmm, maybe I'm missing something. IIUC, when a negative number is >> supplied, the extra_count field will be set to 0 (via the max() >> function) and allow the INVLPGB to continue. 0 is valid in ECX[15:0] >> and >> so the instruction won't #GP. > > I added that at the request of somebody else :) > > Let me remove it again, now that we seem to have a > consensus that a panic is preferable to a wrong > TLB flush. I believe the instruction will #GP if any of the ECX[30:16] reserved bits are non-zero (although the APM doesn't document that), in addition to ECX[15:0] being greater than allowed. But what if 0x80000000 is passed in. That would set ECX[31] with a zero count field, which is valid for the instruction, but the input is obviously bogus. I think the safest thing to do is make the extra_count parameter an unsigned int and check if it is greater than invlpgb_count_max. Not sure what to actually do at that point, though... panic()? WARN() with full TLB flush? Thanks, Tom >