[PATCH] alternate fix

From: Charlie Jenkins
Date: Fri May 30 2025 - 22:25:13 EST


---
arch/riscv/include/asm/runtime-const.h | 23 +++++++++++------------
1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/arch/riscv/include/asm/runtime-const.h b/arch/riscv/include/asm/runtime-const.h
index 451fd76b8811..085a0bb26fbb 100644
--- a/arch/riscv/include/asm/runtime-const.h
+++ b/arch/riscv/include/asm/runtime-const.h
@@ -179,12 +179,9 @@ static inline void __runtime_fixup_caches(void *where, unsigned int insns)
static inline void __runtime_fixup_32(__le16 *lui_parcel, __le16 *addi_parcel, unsigned int val)
{
unsigned int lower_immediate, upper_immediate;
- u32 lui_insn, addi_insn, addi_insn_mask;
+ u32 lui_insn, addi_insn;
__le32 lui_res, addi_res;

- /* Mask out upper 12 bit of addi */
- addi_insn_mask = 0x000fffff;
-
lui_insn = (u32)le16_to_cpu(lui_parcel[0]) | (u32)le16_to_cpu(lui_parcel[1]) << 16;
addi_insn = (u32)le16_to_cpu(addi_parcel[0]) | (u32)le16_to_cpu(addi_parcel[1]) << 16;

@@ -195,6 +192,15 @@ static inline void __runtime_fixup_32(__le16 *lui_parcel, __le16 *addi_parcel, u
/* replace upper 20 bits of lui with upper immediate */
lui_insn &= 0x00000fff;
lui_insn |= upper_immediate & 0xfffff000;
+
+ if (lower_immediate & 0x00000fff) {
+ /* replace upper 12 bits of addi with lower 12 bits of val */
+ addi_insn &= 0x000fffff;
+ addi_insn |= (lower_immediate & 0x00000fff) << 20;
+ } else {
+ /* replace addi with nop if lower_immediate is empty */
+ addi_insn = RISCV_INSN_NOP4;
+ }
} else {
/* replace lui with nop if immediate is small enough to fit in addi */
lui_insn = RISCV_INSN_NOP4;
@@ -203,16 +209,9 @@ static inline void __runtime_fixup_32(__le16 *lui_parcel, __le16 *addi_parcel, u
* is performed by adding with the x0 register. Setting rs to
* zero with the following mask will accomplish this goal.
*/
- addi_insn_mask &= 0x07fff;
- }
-
- if (lower_immediate & 0x00000fff) {
+ addi_insn &= 0x07fff;
/* replace upper 12 bits of addi with lower 12 bits of val */
- addi_insn &= addi_insn_mask;
addi_insn |= (lower_immediate & 0x00000fff) << 20;
- } else {
- /* replace addi with nop if lower_immediate is empty */
- addi_insn = RISCV_INSN_NOP4;
}

addi_res = cpu_to_le32(addi_insn);
--
2.43.0

Let me know what you think!

- Charlie



Return-Path: <linux-kernel+bounces-668918-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D694541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:46:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 78D451BA606F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 86CED70814;
Sat, 31 May 2025 02:46:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="c9y9RJ9h"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125])
(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 02C5C20EB
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.125
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748659585; cv=fail; b=ClSGId7gThGVHFC/zdGFvMqOBEgFcbYegNgh6x4tEwpmQTRtGJqQONpcs4a1wbfPNF5MX1IBiCj8wXd0taLTi+3BWHKHmup7hkDr89xy+NXwC3/is4bD2MHLpZQYYOOlcJYt3pyrQQ9MIhu3/5NX4G1vfR8xsngy2lASaXZoC3s=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748659585; c=relaxed/simple;
bh=62APer/11vCcYnwmOd2GVWQYl12Whta79lUzjVFsarE=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
Content-Type:MIME-Version; b=JLDd4s43pgU/ws8jAY/Syqj2F9zSv7E8vYKiuxKTOLUxxVRUZJ7Z/3J5KGe01MUelkaLAiCjSCgCFr35u6czUhMwbRs1oU2lhQsZDHqMASka4OQwbOuXJT1zlCkDwFvzX1xcOXuykWTIxzChBEhol88LjqOl7AF+UuKm6vNcExY=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=c9y9RJ9h; arc=fail smtp.client-ip=40.107.223.125
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=cMU1lo8LTTxD1Y127ea4u2VYG2Mh6i1fjfmJ9mG9MlmNkX+7y+cVmGHv9H/i6LIO6TXL28PPp2FWc/rU16xKk5BYusX8G4T5ZnE7jk41kMDPhUmY1HEc9JwbQF/KU2VaylisQOmtpe8adCue3UnOe9SWkJTKZcAOUum+uhQSVK+8Qqtwm5OZmmPCo8NJE9PSkACmDjN+b732quV28RGs505IKCbm3Xw8rI7+zZUWaXKURwDq05k9aFPHWEs+XT3mp1KKIzwCo/NKUNnVG8iDeDhKXG8pHvacXPfi+vWxt/f/JewyVW17wOT1DGm5VwIm+2zFvVuJeK9i55Jhaa8UPA==
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=SOM3Ls3n7MIJAl/Jog+tWTcFCZakeDrJw68tj5/D+Vc=;
b=rqjhe4B2DGloGlmcyTeO6O3Xnxbc/U+CF3uYJ9QQyKOxlR8XEYor2v6uozvywIGU4OGZtdPeO1bBPpwBkR+iHAYZ96dNfyUieeENSNTA6m7n0SLT5Z1g+dPF1zz+gM3gDL9ZEObPCxAxvCdlB9fldx+h7S3U2XD/mVVsT3oYQnJSmiExyKiK4Us/qHVGsQ4T2LgsaNyRiWqjt+d3SS+kviNWPKOowjqn9f24hA/t6uNrXZMEdR2H3+4YC5ocB8fzNUuhWWwZI2gBHK0W/NaB50i1rVssTFL4JyxrF6HS0cVyRsIguuwlKY0xa75M51aWqZ3YN7/3ANlnLv03cqZCqQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none
header.from=os.amperecomputing.com; dkim=pass
header.d=os.amperecomputing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=os.amperecomputing.com; s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=SOM3Ls3n7MIJAl/Jog+tWTcFCZakeDrJw68tj5/D+Vc=;
b=c9y9RJ9hUknRBLQ3cZ02PvQ9Bezoltb9XrgfozQP2qa6peUMsaVB0D/Gq/yepZWk3ZfFRvTONI6LszJcnNcef7fIVDRB0iOqOZsiatDT1NqRxUuGZ283kyasl8NwE0lBidhpHq+brbIVaZ/QIhRcxpbyeHl/9qjoC7iu1ZyY4b4=
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=os.amperecomputing.com;
Received: from CH0PR01MB6873.prod.exchangelabs.com (2603:10b6:610:112::22) by
LV2PR01MB7551.prod.exchangelabs.com (2603:10b6:408:17d::5) with Microsoft
SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.20.8769.26; Sat, 31 May 2025 02:46:21 +0000
Received: from CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460]) by CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460%6]) with mapi id 15.20.8769.029; Sat, 31 May 2025
02:46:21 +0000
From: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
To: ryan.roberts@xxxxxxx,
will@xxxxxxxxxx,
catalin.marinas@xxxxxxx,
Miko.Lenczewski@xxxxxxx,
dev.jain@xxxxxxx,
scott@xxxxxxxxxxxxxxxxxxxxxx,
cl@xxxxxxxxxx
Cc: yang@xxxxxxxxxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH 1/4] arm64: cpufeature: add AmpereOne to BBML2 allow list
Date: Fri, 30 May 2025 19:41:51 -0700
Message-ID: <20250531024545.1101304-2-yang@xxxxxxxxxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.48.1
In-Reply-To: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
References: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: CY5PR22CA0079.namprd22.prod.outlook.com
(2603:10b6:930:80::26) To CH0PR01MB6873.prod.exchangelabs.com
(2603:10b6:610:112::22)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH0PR01MB6873:EE_|LV2PR01MB7551:EE_
X-MS-Office365-Filtering-Correlation-Id: eed7c664-9a5f-46cd-ad6a-08dd9fed5356
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|52116014|376014|366016|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?LTua0J4o3oT6EedLalv9WuEgb8JgnrhOZ/Cn9VGsL6jGccspn/S/u/n2zu/2?=
=?us-ascii?Q?c7Yy3oaKQFkfQ2K9v3dVNcOYKEDTeOVv1ybu8fJY9tL57ksCNJx/K64wkRUY?=
=?us-ascii?Q?kK4r4D5+HPl4a0Xz88IMGWpzW6frbUJhXBjsYHo5x9+XjIBx2HBQN6qYQ7dU?=
=?us-ascii?Q?sRB4k5z7C2yTzt02NzUo0ZsB/sJXxuArVbI9+kQYhEfJJpMoB/XUqzjxZhwO?=
=?us-ascii?Q?tVcKwdotFjNm8H1lL0W2L26c1yBUWzcQ6hbI47RltHzTtpepLIQnxXyjNa6h?=
=?us-ascii?Q?i7IYf+4H7kScp3+xhloCvfclS7Xj6HBlIxjWfE4XxDBc+z8pTpoikNSK7h4v?=
=?us-ascii?Q?xWSjN67dKEaHv7anAG8Pd4N6EAmIqfGjvEc+a2Zk3Yg/GuFtUoKgW0M6M49J?=
=?us-ascii?Q?y8VsG7b7SCj5n5Shsp7DjItPRRbMhIVmvh6eSof6uVypak/REbZBwKliyzgJ?=
=?us-ascii?Q?vkmuuVaeTOVa5J8HDct1JV5pLKO1PyXzCUuQ0XD2uAW8aq6N9zK1Dq1L+rhs?=
=?us-ascii?Q?UuIBJHrd/WaZsBDUXbOyWxLmRy0/p6IPkig8JIa5cyvsbb3olrfR0gzrUOy5?=
=?us-ascii?Q?NWZkuhORIMC79rWxVw0qA8iJdJ0Oc8dOuSrY2xsOyIF3tqCRHbcbBvuoGbem?=
=?us-ascii?Q?uQn4596FxGOuYap/xlLQLsorNTppVoX+gYhjZCQXcyYBJF/Epj4U1wUyDVs+?=
=?us-ascii?Q?J0iBQ7w+X8kYZUDvHG70Z1X1BJKzb53SbMR2PIcGDmteCaxl+VkpdQpnjMbj?=
=?us-ascii?Q?5/PnWeesztPjpI0LamKSguFOv6wzv5k6OKIpfllbz/HcR+GCh4Os9MuUMbbx?=
=?us-ascii?Q?KLiO4lrsNf5/ER+zlT7pHU7L2s4UivcfICuQtk4oZQ/jUMa9XsNzFB/FKR0P?=
=?us-ascii?Q?ZOVbotXKiyOOVq62BjalGkR8WqtVDXFcNYgq6zdfhLoYcfadpl78238UV/Ue?=
=?us-ascii?Q?tCyY3VR1FHyx7g2psJ32k5lzo3oUrQb4iMdkXYjGOYSl2TnKV6lGWQUIhUpJ?=
=?us-ascii?Q?82oqyZOCfSGcSV4tO8x7kWrtrP6ufy7mp8VUUQvYjfxENzFyB2KXPdlBwt6d?=
=?us-ascii?Q?O6ii1wIMTWeHKx/WYB+dwhSZuK4AuzUH4Z/UG2RjsPCGdqFqjK65hGJPhKgT?=
=?us-ascii?Q?mrJZXDNRiIdDufU4897QlOaDZz2n7pDxuzcHvuxYBfkk6Yd30JxXsWzApHkT?=
=?us-ascii?Q?lAEkqRWBUEGN+c2QQ7QoCocogNBvCHVh584M+4w9ziXgHk9P3I1HltRJC8B8?=
=?us-ascii?Q?ry+d15pdyLZjv30GkAOzuyrM//z+8l4gEfHK1ynsgJQoYNPtYjShvtUFeTwc?=
=?us-ascii?Q?yVAzDdBuGUNJAKV7RlYKLw6buBDUESQoCXVIFM8AsMC/4gdzhPs1R+k0uCFy?=
=?us-ascii?Q?BzwvoVaTG/FMx75TfC5zHLcFRAbUKB3VNrVHuUnnht0KfeTH8LPgxIakMiR7?=
=?us-ascii?Q?EgE/2k4bKHAIS6P8McOzLLagRQzE+6s+pPeiJg5gPOXkUKmuYmyF3Q=3D=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR01MB6873.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(376014)(366016)(38350700014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?wGxSPUSaNxqpTFBr67xBNIG4AeQYK+jdxOgF91tG0BinxkXzufJQmuWXPC4/?=
=?us-ascii?Q?JMXaNEkPc5RNKqGqhkuf+QcZ5H2Uur/e9H7Zw7XdLiYgve4C/ahfd2BgIGtY?=
=?us-ascii?Q?TS3PuVWLnvpJMkU2VX2rQ9TMCXOEqUtz8N3Ei8XsFzDGtk9mMCmReVoM+Y/S?=
=?us-ascii?Q?5XvWzJym5MqLUfYeX/Ngyph5wA4XTtDbSxncS1km1Q1ICe7pXZuWSOH7O8Ww?=
=?us-ascii?Q?0A1cDIjBDQawCvuAcUX2kNwwORZlKWFX+YyJIDRVd010rmQZwHNb/stH78TX?=
=?us-ascii?Q?ZRndijt4n6YPnpHTfDKBiYw5hB52a5eFnOMcVs1g35Fe1ZblxJHL9MCe4bfB?=
=?us-ascii?Q?w8gH2IsgZ0N4b6yA/z64Xzhf+Fwd3Ddr0xfSyFwdwNMpoRcWSx6J8Mj6YCmf?=
=?us-ascii?Q?ufjhYuYZJrTWWlVrI/FHoUQR2xOWWTz1SH5mWhtX8LEfjVSa2LhUZfZL91nJ?=
=?us-ascii?Q?2zSCs9g4pNdSzKTOU+LB9GJIiCX/v5FnylAja39gh4z5MvXkPELJOBMb7eF7?=
=?us-ascii?Q?CaJhRxgT5bEGdswTkw4KL95YCaNLBbLaY4MilDwg5Swzz4yjrIKsPJs8Bk4F?=
=?us-ascii?Q?o9G56btMpzWYkGKR4FngO3sGW+WM6+gup9s5FH/B72xXHOaMYWuLkIwXow5Z?=
=?us-ascii?Q?TisyKxm82v7Oni73pG0rm1QOAwr5G2CG+II2idkJzYlmWNfVZACK7lYD0Itc?=
=?us-ascii?Q?o6E14tAksnepO4mzqpkYnJ2IypOQGi+H9U0CPXkImONS0UTxpUDd+bQ1MNvv?=
=?us-ascii?Q?/11vxHt4RhhVOOgBX4t5/z4kxCKzBx+dh1x20hXt9N0RUpCT172M7MOedvND?=
=?us-ascii?Q?moM3TGEpECk+pdopViBX8zHVCRWYI4lfKA4ucilwy/qMoXP6ChKVox8QKDy8?=
=?us-ascii?Q?XHmqfsxCb9wLFuk94PHbIT/qZq8fEzK0g0M9TLu82Tq79+Fx7fN5yfYH6W1D?=
=?us-ascii?Q?ZyYTxNZpiXGrm/dTMqpsNwVHeloU1Lf49ovvwasUBbFFmnoLJgl7G9sP2zSl?=
=?us-ascii?Q?k1EkL8Eq/TGebSOnsJnKdMLTuj34uBDG2v3TS7dQhyaPr2nEJ7msOOuGOfkN?=
=?us-ascii?Q?BmkUjxeWaHc8twY1gkh1H6wv7JXk5LiId5yxO+Yhy1d6SI/fzX1Yf5SHVJz6?=
=?us-ascii?Q?U5aB2woVqopXft9zAqzj4pQ1qMMWmMU9IilRtt7Rt/Fm0wjA0sI73Rj4vKtm?=
=?us-ascii?Q?t9qtfsr2KjenFkt6aYdoHlxLEasWlJ+MIiRp+9fyLm3kly4Icg9vFXAz1grk?=
=?us-ascii?Q?wgqZ0pmj6Zh3njFfaDgMcbUm0fIUzKP4ZB/13Fk8H3zA7ZVUSZBXJuVf4Kvi?=
=?us-ascii?Q?ul9wLBmRUDu128dNt4vFAokcOPuJ8NeCWOCBmmuyjcVrXl0eS6kTW3YKGeSt?=
=?us-ascii?Q?DnvdLY9eHBz3p//8qBuVKZTFr0mA8JKUTxHoqa9YXVH21cOrIG8u6202oEEh?=
=?us-ascii?Q?wmEy3HevoaiKZ99zhGZkrlBNA7541cnOToFxXkEryG1CTvLoV68FDHOeX3Me?=
=?us-ascii?Q?5GuyYUqkTwYWBCOj9ygcjB+CoNB348jYHxF+b2LsCo+gxmYUWJ2qpKSJCH+g?=
=?us-ascii?Q?OQ6FNmgBf9sn7Gd8Wr2CqqOOdhqHrwwM4Yr0aWZTK9mOt+AT/Vr/F6NmYCin?=
=?us-ascii?Q?EfBgmyJJAHR9zZIRUSGsKmo=3D?=
X-OriginatorOrg: os.amperecomputing.com
X-MS-Exchange-CrossTenant-Network-Message-Id: eed7c664-9a5f-46cd-ad6a-08dd9fed5356
X-MS-Exchange-CrossTenant-AuthSource: CH0PR01MB6873.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 02:46:21.3435
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 0QkEkHXxlaOx2aHIsu3pBe7CssTPwscKkBmwJHzv1Us82BSb9UU7EGR9lcvZHJrpVYxcg9kQFbUZFd6u3te5vGkvRRw2bQK5R5isAjjz4Uw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR01MB7551
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

AmpereOne supports BBML2 without conflict abort, add to the allow list.

Signed-off-by: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
---
arch/arm64/kernel/cpufeature.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 327eeabbb449..25e1fbfab6a3 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -2224,6 +2224,8 @@ static bool cpu_has_bbml2_noabort(unsigned int cpu_midr)
static const struct midr_range supports_bbml2_noabort_list[] = {
MIDR_REV_RANGE(MIDR_CORTEX_X4, 0, 3, 0xf),
MIDR_REV_RANGE(MIDR_NEOVERSE_V3, 0, 2, 0xf),
+ MIDR_ALL_VERSIONS(MIDR_AMPERE1),
+ MIDR_ALL_VERSIONS(MIDR_AMPERE1A),
{}
};

--
2.48.1



Return-Path: <linux-kernel+bounces-668919-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C140841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:46:40 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E07C94E13E8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:41 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A9B9C1411DE;
Sat, 31 May 2025 02:46:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="qZnnuqVo"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125])
(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 C0D6479C0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.125
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748659587; cv=fail; b=J23Paw3p8QVAUo/M6OgEC9n0BHaIoHqf36SB+yMibKzOx/+IAWXt3w45EUq3Wz7PuiZWoG+VdNGOzpFj+y0ixRHIpgC8hyYSnSkcP4VW88TfVw4kJMZrP2z7tu4ZQkBeK5awxNEzu+LUtP0B7aM0LkeGS2ClxMdYxC4s3LHBlKA=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748659587; c=relaxed/simple;
bh=nQllG4IPM4BgS1EqoluuWJ56xCRCrnysFJk0uygzYBE=;
h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=Mi2aS5ZaC+5cfyuiJsZ85WNGXTfZ/Ipb7PgKaL/3Vb9Sta8PXNO7jhaDvBnzQC/BLHrzS3km1rJfPLdAsZFOCnZYTSXXCvHRhOwv5tDoRAgBOK++pFyCxIthNMqSduOu0doBiwPm2RS0bcdLwWqHcgZgM9DIH6DpPa7Khw5e92s=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=qZnnuqVo; arc=fail smtp.client-ip=40.107.223.125
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=Yhkbm8RE/vvPSrPK7crdeKfdGfpc9cwMZG04aruj2n/EueGH+0SAc6LfZhULqiOLYSsD1ZTvIHrtq3ul4KlPHI3yDcy/t3SgXYp8oFlFdvXd3EvI2H2m89g+p0B219TgyU15HoQF9roett4KhTAAoOrf9mUiQbzwCtGG5pH2gojGv5JrHTtpjBwkI68TmxZf1Be016P99SHq9Xwc19gy1hdHGBWxjyre9x9nEP28VDQPVXKEVN8KzVEYHDGtsTS1q34/DaGrmgPMpwmsY2Ph8zvUbPOMIHu/tQ5jIJl8/R9LtqRgDuiLRbXF6TnioZ9MIFDUURD+TbwV6Wf1JAiI7Q==
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=5kkuEW0wcdrikdE6p7xdPMfZEcGcJwTvLZqD7EnVXhw=;
b=BeARbwIEbuDDfM9eNGyXR2I5ws8N6hOnErvlJPDr2oI0Vha39BKeSf6cDEbnfeWPzYcskP9H43ZkXXn4Y0pOpKfL2i9lZcGAUtCcS2ykYgxmnJUw6+CVnpZ378kEcCKndoPbOcWKMmA7MnXnYjQoSmMrMyiJP//ye3bt+QHCkldYaP3jzVwdXnEprAOzl0T8UJjGdXSAMoYeOLVdJrV9Na3Ygvvji1vdgxTzEzSQOFGdzbaVf+l+5o8TmWEfVNVOUySdZJ829cpqn9m7YoKrr0cO8F04nrTOTMWNiXBNk2ue6Rv+FD2AyDOEYXjrZ7nDHrYLF17HdSxpKsAe2K1Cgg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none
header.from=os.amperecomputing.com; dkim=pass
header.d=os.amperecomputing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=os.amperecomputing.com; s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=5kkuEW0wcdrikdE6p7xdPMfZEcGcJwTvLZqD7EnVXhw=;
b=qZnnuqVoM2akPNTQi02oBllGkpQvQ4fwAEopaKbRQZlHXHEkNM6BTeV2AORBgJthgn35XZTCFHowAt1Pb6LC4/8XCrkV39FdVPUaoc1SZx/J3JDEa79Q03AfzLa+qk7iuRfBpleUvPX9lA0h5O8Y4PiVrx/9gBa2HqJ6HoyEets=
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=os.amperecomputing.com;
Received: from CH0PR01MB6873.prod.exchangelabs.com (2603:10b6:610:112::22) by
LV2PR01MB7551.prod.exchangelabs.com (2603:10b6:408:17d::5) with Microsoft
SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.20.8769.26; Sat, 31 May 2025 02:46:20 +0000
Received: from CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460]) by CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460%6]) with mapi id 15.20.8769.029; Sat, 31 May 2025
02:46:20 +0000
From: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
To: ryan.roberts@xxxxxxx,
will@xxxxxxxxxx,
catalin.marinas@xxxxxxx,
Miko.Lenczewski@xxxxxxx,
dev.jain@xxxxxxx,
scott@xxxxxxxxxxxxxxxxxxxxxx,
cl@xxxxxxxxxx
Cc: yang@xxxxxxxxxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [v4 PATCH 0/4] arm64: support FEAT_BBM level 2 and large block mapping when rodata=full
Date: Fri, 30 May 2025 19:41:50 -0700
Message-ID: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.48.1
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: CY5PR22CA0079.namprd22.prod.outlook.com
(2603:10b6:930:80::26) To CH0PR01MB6873.prod.exchangelabs.com
(2603:10b6:610:112::22)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH0PR01MB6873:EE_|LV2PR01MB7551:EE_
X-MS-Office365-Filtering-Correlation-Id: 6a82a66d-9100-462a-bf9e-08dd9fed52c3
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|52116014|376014|366016|13003099007|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?4Av0NN5JWR74RLiXqDBLoHY3dUgfjADOk5upvl0e7R8ghA94hjSKC0f5e03c?=
=?us-ascii?Q?vamXI5hHwRDKcf4gebDizyTfzUHq7vBf0AZGjxEmZOvUVMfMCN6wL+Es8/Z4?=
=?us-ascii?Q?87BM/wYDYTbILc7ALx7anFGtmVjEON1A0T3fHqjMFyKL+AZCdTPeL0lx9lcW?=
=?us-ascii?Q?uxGvA7dmU+UeBlNs6seqGbJlbA5gC5bassPTOTXq1bxEiVUYm4sYQQogFsnc?=
=?us-ascii?Q?ZWwglW3j862Iwn0txDvdQaIOHKDFKzsZxTg1e4wy3YjWlxcSx+rogW1yx5Ze?=
=?us-ascii?Q?0getp2H+kYpTR7kCqpnLLiQHsQ21rCgBAODLPirUhL5th5cNjkMrHxeuSi+H?=
=?us-ascii?Q?yqlHxUnOya3rbpeqK0DRDr1eM+6RFbn2uIasbv/mt5oJyOGUfuddp7zcWTjs?=
=?us-ascii?Q?FWhSvB7klaxZKOW7LJbd7qtIuqx2ScMrWZKzN9n7UFv41jGHDj5bRx/23P/J?=
=?us-ascii?Q?m2GoEz8vJ+rkaHvIN/f+8uAnKkWBOCygZgec/ygxpIV/wd9W4F4OyKJjRc/c?=
=?us-ascii?Q?PcU4cbykwSjSmcZfVUHfXA2S1KwdVhwP13usqj54IWoRQaM7X0+8HvS8+lnn?=
=?us-ascii?Q?vdlrJiw1663V5OGLei3CAE9S6k7PdL3h/QMeIuGxUYUfllPLhHbueCA6Ic30?=
=?us-ascii?Q?jxCVdC9iqeQnwplWjyaDzefyJ7rxTuEEtqhLc+z1yo2yIyawjxAEzDDKt+vz?=
=?us-ascii?Q?B51jhhwDQG83UmmmTjQk+5Yf5uyxNKWm0qIpXPXe762zOTD4lxbkFRP6ULc2?=
=?us-ascii?Q?wJDOjPHV7pz2+3gbdo34Xa+f8nh+T0oI2BAQ6UuBVsoWDwriwFxF62Ft7N6J?=
=?us-ascii?Q?NUfPSki/FF1BOQ387WoRqcpapAYguo9T47FNHsssSZfhb3yRx7PPLqmiNeXf?=
=?us-ascii?Q?oifA4bd5wbvHWDTuJboqMj1D7J8lc4HQvtQCKeOXROn4wtWkpTvZWPgKWTKl?=
=?us-ascii?Q?AA+XeLpr7qaneBZEQDhkRz0D1UlMRJSmcKPo3902DFzSkRUNxmLcoG3rPfsc?=
=?us-ascii?Q?h1XXQM3qF8SPjuyjg9yV6+Cha8h7UL9xxrsvCr1lFNG1fr7q4fluU9TM8Rrh?=
=?us-ascii?Q?b5GKNJWsR6ilNQvP7fA4l+ZLETVnY0FMM9HZz/EyE5qe+Kvi9zz14AuUJ9uQ?=
=?us-ascii?Q?quYoUyLS1ZY+jOpaomuBPRuRB7prOQcGyiTP0sthslaJ/nV0JKTQ9Dh4V5H8?=
=?us-ascii?Q?CZNf1H12jPFMP3BqNAMBAKTOgRKcH1/GOxTGCqLt04BaMaw/YMlXCTCJnK8k?=
=?us-ascii?Q?dQBrmPXXK6kwgAPAuoTtLsCLrJsGBBp/Cw3J+8aCgDaRwd6SyZJ4YJXNM/Kx?=
=?us-ascii?Q?nCO+8G4M7xdVIVbhkJyvmYe9E3O4W1sLHQLTf4OqdFbHrmVnLDAOW4j6CleC?=
=?us-ascii?Q?qiGX8DWvUJCMe3IB/iBS9X1KuhSLP9RbTN+UJq3V41+QXsI6W77vDj/FITl0?=
=?us-ascii?Q?T6Lhvo9v9mfb1WWJQHHr1sllKaOJHacXX5vRlJfvT+bghECjd7D0Yn2hkXCL?=
=?us-ascii?Q?7l/Ici1vXeSZUX0=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR01MB6873.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(376014)(366016)(13003099007)(38350700014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?1/vxugQnfd7fDKNYJPrmGf88gg/pYsjCKpZ7pOEeVWXC0fUFFCbBYXE3FM3l?=
=?us-ascii?Q?EmxvjdY6wboQ1c6lXdNxZeCyScZZK4Zx1mE+vZSxXFh3qfMNilZ8LQOrlnND?=
=?us-ascii?Q?mUBsxo+k4evxckBQhjO4iEJNt5ILYTUep1sLE+a5Jfs/WeBdC7fy49JzcKPn?=
=?us-ascii?Q?EiU6QXH4SA/sdMBw9mSFPsZ/utr4srzodaitCVuuCUCdgwx6Ul7/cEWeGodH?=
=?us-ascii?Q?biHSbtDB+VjdJH2axqN3/ln0qDn7dCOgaAVxYbXiH0ZRpjKVaWK/s4LOOFOB?=
=?us-ascii?Q?oqBsnpB4X1+6hzt9I7St5cShnP/PJiztw5JXYr01BVrqd+jbPtPWPsvNYbBf?=
=?us-ascii?Q?kvq1FEypeBMH/5sqvku9tbFkeLkIdTl7AGsbfaU528iYPvuKdaRi8Zer3DBm?=
=?us-ascii?Q?wE2hz520s6mLdMAlk+pr52xmD8gvx9z7NYJ82j9MAkOtfbv4J7c8EldBR3Cx?=
=?us-ascii?Q?WkxCUBN5VN/SiPA6HmXtfbsZ+pEjjVq4rQcPQGyUTWuysp/n/iU02UI8rY13?=
=?us-ascii?Q?vD/b05xpdMVNESVreWch3xjziZdBgzFov2m+OLII1QxvAhbbpkSgc3iP8jh0?=
=?us-ascii?Q?PXob9vyUCl8bK7AmGDhf/NsqqkX9lYZsCDhLn2XVWQ7quRExiZbO6K2eOMQh?=
=?us-ascii?Q?BcGyYh6kvfnmI2UMbtvSsoYcwHN6az0/W/jn13IWjRGAuJ42iCMpg5PlOsRd?=
=?us-ascii?Q?J3JZdScB6zdJBJy8haejywVwvBWOLlQz6/WhoYBHaQUBh27nLmPpQ4TG4qmH?=
=?us-ascii?Q?P2U7zEQDlRAzKOSAA9bsLVr5cdq2fI53l5zoUaZs8S4BbUvioUAnaWd16tTr?=
=?us-ascii?Q?LyoKXvimBPj2m00zztc0TOHtGlebYdXTCuVu6fvASg6Tcnd1urN/s0zzJe0T?=
=?us-ascii?Q?ksN6mNSFx7Q7WQ8AdTtgdj55t7mq/dnVhpQqS5eAJBHfrCYvUbKJTZ/BnOkV?=
=?us-ascii?Q?6VTGeaqouI89DrUZkADZv4hf3anu6jVSDcsQHPfQ5FWGP01FU46rNnlGHK1S?=
=?us-ascii?Q?HY7GQpGATuRXb39bXh4nomgNway5Fhz7ca4f+rjiVJt8hAHEXxRoEQoMIeUx?=
=?us-ascii?Q?RFpar2olJ0SAHwkD6x3IH7x8bp5r1OUkZE9JrlA+LcnlEz4zrisFynJvBdsG?=
=?us-ascii?Q?o7FpmUg1ElmQTnpK5uGS0q6ddHLaZi7u721UrfAb7RrimBSMQL7LpkYg/hnG?=
=?us-ascii?Q?YVfJXMLu+9ye+c3zyTiGvc6Z9tct9X3X+Hwk1DEkVYOJ42y+QG1oSOljfReW?=
=?us-ascii?Q?obk/5WJCQV0efGLw5rvJjMTELlFR64L4PGIahJMz7Z9PyOl1kuyH7HHVvHuB?=
=?us-ascii?Q?aHk3OSaDsWazyEiydW8Tb/uSWilupaMbZg7zQOctgI8BLOo2phdkajjL3PiQ?=
=?us-ascii?Q?0yBRCYbPg018uzD+apIfMMheZ10EI7BUXeM6sDKzrKMhgfcECJfBZV50Xak5?=
=?us-ascii?Q?kf93/JytVeGVVv3NZOUrynExamHWeGm4KFZZuWJN073yM+ZgXoT6xfkxOV9x?=
=?us-ascii?Q?i1M9HTVFmlnuIzMtkyYn2u3BKyWsDbK0DKEgXBISnXgoaVSgghDonIUT9aEb?=
=?us-ascii?Q?ygUkhZCx1J2xzue5NXvxvRSA2PmXiG6exVcQkMZhN5sBF1rE+HqiAJX3qs/e?=
=?us-ascii?Q?KDAuIIfHh2CGtT9WHxv50oo=3D?=
X-OriginatorOrg: os.amperecomputing.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6a82a66d-9100-462a-bf9e-08dd9fed52c3
X-MS-Exchange-CrossTenant-AuthSource: CH0PR01MB6873.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 02:46:20.2563
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: r/qhNT0483hMNE0kPnF9INewUzyEkhhcpGeS4hctaswJRYSH9B9Uk6JTnNrDXQFk/LRX7V6S5PxlVcPowfKkkmUL294YhdkekUu7di4WPBQ=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR01MB7551
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Changelog
=========
v4:
* Rebased to v6.15-rc4.
* Based on Miko's latest BBML2 cpufeature patch (https://lore.kernel.org/linux-arm-kernel/20250428153514.55772-4-miko.lenczewski@xxxxxxx/).
* Keep block mappings rather than splitting to PTEs if it is fully contained
per Ryan.
* Return -EINVAL if page table allocation failed instead of BUG_ON per Ryan.
* When page table allocation failed, return -1 instead of 0 per Ryan.
* Allocate page table with GFP_ATOMIC for repainting per Ryan.
* Use idmap to wait for repainting is done per Ryan.
* Some minor fixes per the discussion for v3.
* Some clean up to reduce redundant code.

v3:
* Rebased to v6.14-rc4.
* Based on Miko's BBML2 cpufeature patch (https://lore.kernel.org/linux-arm-kernel/20250228182403.6269-3-miko.lenczewski@xxxxxxx/).
Also included in this series in order to have the complete patchset.
* Enhanced __create_pgd_mapping() to handle split as well per Ryan.
* Supported CONT mappings per Ryan.
* Supported asymmetric system by splitting kernel linear mapping if such
system is detected per Ryan. I don't have such system to test, so the
testing is done by hacking kernel to call linear mapping repainting
unconditionally. The linear mapping doesn't have any block and cont
mappings after booting.

RFC v2:
* Used allowlist to advertise BBM lv2 on the CPUs which can handle TLB
conflict gracefully per Will Deacon
* Rebased onto v6.13-rc5
* https://lore.kernel.org/linux-arm-kernel/20250103011822.1257189-1-yang@xxxxxxxxxxxxxxxxxxxxxx/

v3: https://lore.kernel.org/linux-arm-kernel/20250304222018.615808-1-yang@xxxxxxxxxxxxxxxxxxxxxx/
RFC v2: https://lore.kernel.org/linux-arm-kernel/20250103011822.1257189-1-yang@xxxxxxxxxxxxxxxxxxxxxx/
RFC v1: https://lore.kernel.org/lkml/20241118181711.962576-1-yang@xxxxxxxxxxxxxxxxxxxxxx/

Description
===========
When rodata=full kernel linear mapping is mapped by PTE due to arm's
break-before-make rule.

A number of performance issues arise when the kernel linear map is using
PTE entries due to arm's break-before-make rule:
- performance degradation
- more TLB pressure
- memory waste for kernel page table

These issues can be avoided by specifying rodata=on the kernel command
line but this disables the alias checks on page table permissions and
therefore compromises security somewhat.

With FEAT_BBM level 2 support it is no longer necessary to invalidate the
page table entry when changing page sizes. This allows the kernel to
split large mappings after boot is complete.

This patch adds support for splitting large mappings when FEAT_BBM level 2
is available and rodata=full is used. This functionality will be used
when modifying page permissions for individual page frames.

Without FEAT_BBM level 2 we will keep the kernel linear map using PTEs
only.

If the system is asymmetric, the kernel linear mapping may be repainted once
the BBML2 capability is finalized on all CPUs. See patch #4 for more details.

We saw significant performance increases in some benchmarks with
rodata=full without compromising the security features of the kernel.

Testing
=======
The test was done on AmpereOne machine (192 cores, 1P) with 256GB memory and
4K page size + 48 bit VA.

Function test (4K/16K/64K page size)
- Kernel boot. Kernel needs change kernel linear mapping permission at
boot stage, if the patch didn't work, kernel typically didn't boot.
- Module stress from stress-ng. Kernel module load change permission for
linear mapping.
- A test kernel module which allocates 80% of total memory via vmalloc(),
then change the vmalloc area permission to RO, this also change linear
mapping permission to RO, then change it back before vfree(). Then launch
a VM which consumes almost all physical memory.
- VM with the patchset applied in guest kernel too.
- Kernel build in VM with guest kernel which has this series applied.
- rodata=on. Make sure other rodata mode is not broken.
- Boot on the machine which doesn't support BBML2.

Performance
===========
Memory consumption
Before:
MemTotal: 258988984 kB
MemFree: 254821700 kB

After:
MemTotal: 259505132 kB
MemFree: 255410264 kB

Around 500MB more memory are free to use. The larger the machine, the
more memory saved.

Performance benchmarking
* Memcached
We saw performance degradation when running Memcached benchmark with
rodata=full vs rodata=on. Our profiling pointed to kernel TLB pressure.
With this patchset we saw ops/sec is increased by around 3.5%, P99
latency is reduced by around 9.6%.
The gain mainly came from reduced kernel TLB misses. The kernel TLB
MPKI is reduced by 28.5%.

The benchmark data is now on par with rodata=on too.

* Disk encryption (dm-crypt) benchmark
Ran fio benchmark with the below command on a 128G ramdisk (ext4) with disk
encryption (by dm-crypt with no read/write workqueue).
fio --directory=/data --random_generator=lfsr --norandommap --randrepeat 1 \
--status-interval=999 --rw=write --bs=4k --loops=1 --ioengine=sync \
--iodepth=1 --numjobs=1 --fsync_on_close=1 --group_reporting --thread \
--name=iops-test-job --eta-newline=1 --size 100G

The IOPS is increased by 90% - 150% (the variance is high, but the worst
number of good case is around 90% more than the best number of bad case).
The bandwidth is increased and the avg clat is reduced proportionally.

* Sequential file read
Read 100G file sequentially on XFS (xfs_io read with page cache populated).
The bandwidth is increased by 150%.


Yang Shi (4):
arm64: cpufeature: add AmpereOne to BBML2 allow list
arm64: mm: make __create_pgd_mapping() and helpers non-void
arm64: mm: support large block mapping when rodata=full
arm64: mm: split linear mapping if BBML2 is not supported on secondary CPUs

arch/arm64/include/asm/cpufeature.h | 26 +++++++
arch/arm64/include/asm/mmu.h | 4 +
arch/arm64/include/asm/pgtable.h | 12 ++-
arch/arm64/kernel/cpufeature.c | 30 ++++++--
arch/arm64/mm/mmu.c | 505 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
arch/arm64/mm/pageattr.c | 37 +++++++--
arch/arm64/mm/proc.S | 41 ++++++++++
7 files changed, 585 insertions(+), 70 deletions(-)



Return-Path: <linux-kernel+bounces-668920-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C72EA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:46:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 78B533B3CC7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0D5371448E0;
Sat, 31 May 2025 02:46:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="DklCaIBl"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125])
(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 A2F2613212A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.125
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748659589; cv=fail; b=IbZtxBdsrfRd+yWHE5VYXzd+rHiwfGQQIOGKONZzZ2Oy+fwPN8myn6vSPmttnea8Cfu+0YVPA0BPU75rR02Bdmjmr+dS9CDGwq7rmtClAfz5vR5Z2bo6fSizQO4N/u4iv5nPBHx5x+O+7/IyJgTAOXL48qKXOqqtfCy0JaWVjzA=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748659589; c=relaxed/simple;
bh=33sYFCG9noB56VoJygupeJeY+LFPR3aLk5M6ulwmHWE=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
Content-Type:MIME-Version; b=TRpmRsHbv+NYcs8GJjOEjaS6y50JXptV+Qm3Lcvs67qT7AV8VkjHkXkG57ZTbLlQ+nDoAxsnHD+nqVfd9znNQuHf/wELjVtgwsug8AOTRTk9H0pyEOpqDs5B1TRXpVeUzpOw++4BFqlcF7zqz0k8HsB0dpjZ3WxOSFDPbaR16Vc=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=DklCaIBl; arc=fail smtp.client-ip=40.107.223.125
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=tRXlxD1CfpBxxgPaTNahB21maxikZZj0PBW9vgTaztC1pHRgQIpNqtAOOtkPgrI8Cb5ZeZgW91vnxlC+rdM8KAefodpY2baEMak/7sQHM4BOLhES6QUijlTAffmcrcPDkTwSTwlo+fC9o/423clOI72uDUbTEdcgLAm/7qSrkuJhuNiI9krBicwRFcanunYqr9CoyAPp8L8D2SzEfj/c7BSxcJOAYTAm9bn6VBaY3LaXsajMwK8lw4S2b8Keh4BzUN/yIeubyIka7LChP6JWFYkI8KbrlyC/Ik/VvXUbFSsuftNUgRjQpbEDhDqtiKA1rg4DvuTgf4o6VJ+xKcvAyg==
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=Qq1yUacXyMU3P0fW6hQ2kmRrM2THBFn+cxuUfsZ5kBA=;
b=WcqV8mkArHqZA6PdIcmkBHC9zhH6aqUctGkF3YikEzvZgv/BWCI/IpZInrggm+Ayj0kwfr79ivYK8ohypREAErsPMztyy3VoA/M9E6mFvfqceqV5SgU/TtLEtuelqDiYMrMWWI/WYIDYIPAOdxKkqJJbp1F5Em08oPaEs3N4lqqRKFWVU1iBr+aw7R1mdm3GZKo7xQU5ooMh7/5iNZDM8FapBBear7CHPdpNRnGmtsIjwjoXaQqDN7CzqRMTzfViKfANq1RzRGYPEIPmSqhkaI+gLqCrdpNKJd8x/Mx5tHw1M1On4k1FTQWj28nVg0w7ejFV5R2LpaK9ZY7BCyQOZg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none
header.from=os.amperecomputing.com; dkim=pass
header.d=os.amperecomputing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=os.amperecomputing.com; s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=Qq1yUacXyMU3P0fW6hQ2kmRrM2THBFn+cxuUfsZ5kBA=;
b=DklCaIBlYWAmvlOhYXQkzgnqdFquCBUxhzdrW17wSKCrLleFJFBolt4iQmCZM5U/egkFirsCECfqIvDF8fFrMDEntEXCE6Flm+CghAWxgpiFm+DIrGmMgtw8opgZ04LAggvfvLAU+AtBGp10GodRUab1iqpcFJ9MkPbYRJcbFpA=
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=os.amperecomputing.com;
Received: from CH0PR01MB6873.prod.exchangelabs.com (2603:10b6:610:112::22) by
LV2PR01MB7551.prod.exchangelabs.com (2603:10b6:408:17d::5) with Microsoft
SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.20.8769.26; Sat, 31 May 2025 02:46:22 +0000
Received: from CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460]) by CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460%6]) with mapi id 15.20.8769.029; Sat, 31 May 2025
02:46:22 +0000
From: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
To: ryan.roberts@xxxxxxx,
will@xxxxxxxxxx,
catalin.marinas@xxxxxxx,
Miko.Lenczewski@xxxxxxx,
dev.jain@xxxxxxx,
scott@xxxxxxxxxxxxxxxxxxxxxx,
cl@xxxxxxxxxx
Cc: yang@xxxxxxxxxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH 2/4] arm64: mm: make __create_pgd_mapping() and helpers non-void
Date: Fri, 30 May 2025 19:41:52 -0700
Message-ID: <20250531024545.1101304-3-yang@xxxxxxxxxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.48.1
In-Reply-To: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
References: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: CY5PR22CA0079.namprd22.prod.outlook.com
(2603:10b6:930:80::26) To CH0PR01MB6873.prod.exchangelabs.com
(2603:10b6:610:112::22)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH0PR01MB6873:EE_|LV2PR01MB7551:EE_
X-MS-Office365-Filtering-Correlation-Id: 81789021-3abc-4c1a-194c-08dd9fed5402
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|52116014|376014|366016|7053199007|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?4P2TwkSh8j8UV+ZA6sdDvxyfqHjXMJJPioMdN83+mfgWZf/P/sEI6P5WAmLn?=
=?us-ascii?Q?JM7Tivy40vij6KOwvYZNudzpSbTdJZ2M0uxWVvZwSN44bQ08GYjUy5JSldmc?=
=?us-ascii?Q?Zrje3p3526Ied8KTNcKf2ZSAAQs13Nf1kznf0Mr8fau1/KdSLK55IWt7AOP/?=
=?us-ascii?Q?MmCezO338fZFiak203lmSomc+82Ty6+mGgfMbQBEY3eamn0IxCKFFTVjDNnA?=
=?us-ascii?Q?DaxYmKP5yo1R2xrg/NXdXk0ad8lf7ac7EvFBYkigobCaA2D2m5jjbiNvkBMD?=
=?us-ascii?Q?HWOqmh1rscL2jihu0qa6kuwYnVvBpXYv8zo5bYW3fZ9Z9zKiCFgDYO7TGu3A?=
=?us-ascii?Q?0TLmNlZRbspxhIA6+jI7owCdHZIgWAIX4/Hfeiykedf126paRqadpAGf+8NT?=
=?us-ascii?Q?sTqwedq+n3yZJeSj797oAIPX5dKnC/TLWndMhuouxG0MdmM52sJ9Q67813zP?=
=?us-ascii?Q?6HTKASWi5ZyH06X4NalS7AVNtPftp3G4TZFfhWZ56rLxUPJS/+EePCOau8yx?=
=?us-ascii?Q?0L84+ef/jq78cvWO4fldWlEGzXqLCzCE0uh8YTN9Cz+V/gUxBe0eI4TlHCSi?=
=?us-ascii?Q?aXI5uzGKbcaBthctQmPW+E6SrOaYzTr06VI4EmKrcfKRdi8h8SzdZH+xg5j8?=
=?us-ascii?Q?to8+1KrLWhUNeGamrB0v9VPromBvTCRDkbiP6XPtPXhaoQU8AD8IJdD+vAZN?=
=?us-ascii?Q?zc8i6TOvTc2+h3Nbn8L4208cpcxftPTY4vPaNNXu+gZkQz723wFI67Ojh60P?=
=?us-ascii?Q?Dlp3QjoZPNgNy/VfB0iUk+s9wrPan9Pc0VdzUW+ZOjo3m0qnl5DyyBBLv1Jl?=
=?us-ascii?Q?CNDOB0LsrWkFxaRxQt+oOMrMVSIJSJaB2VOQ1VmgCu5V9alnMGMRJU3tEVf0?=
=?us-ascii?Q?q0IsCLKM5dxO8pmhXtIwoanQ34gfzo3atLYO6bhWQGxeq+bNp92pHcfI7omR?=
=?us-ascii?Q?U0spybJhB1e+iYT3HOVmYC4ivh8o2gYhWxKcmUZV2qyAwyCbh/v9IX/XlDyA?=
=?us-ascii?Q?NldEbXX+Z1xDQ2HZEpuVao0s+bGtnULbjn9VadoMoMzuCmiMmfOCRoNY405P?=
=?us-ascii?Q?JLnuiadND9jiZxv060kgihn4is5xE/XkHwlQ6+E2GwEatiOZwKJvIQ1cy4Nh?=
=?us-ascii?Q?YuIRhFDqH+/YqiMed282zDoaXgVmCSZhjNPDwCJQ8xkMEa8ABiA3xYMesSTt?=
=?us-ascii?Q?MQNI3gV2SQp0y6JYNrqhjiprPlWNRxGLBCNB242L5pw5rkaNQYPtMsdFz3/4?=
=?us-ascii?Q?VWoITanHl0Jzqr7Sc7pQc77c09IKRmxAHgv2DDzjWhAA+9Uiz20AiSp0RkuY?=
=?us-ascii?Q?mJQs6U6khSv0RmzqpZSRPHsnU0vkFjd9RBpQVbfcG6VRbaNJ/O1NK6KWjoaP?=
=?us-ascii?Q?P0BoBJocKc9Vx4EXKg7WQDle6kSJFgAPERa4xx2b0LKiuO4Ew7uMJ54BHRLC?=
=?us-ascii?Q?1xOCAZznlVDmMoRqpsfXhlUIJ36HiN5bXFcXK+UxF93r42rlkEA8jQ=3D=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR01MB6873.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(376014)(366016)(7053199007)(38350700014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?Z2b7s3PWzriYS5u3WpKjzkiGgs7JdCXKWc7MuMWX4jeiwo30Lst6F1QzMoQA?=
=?us-ascii?Q?LAgQblwThHLMzt3tVmIMi6andHCXSS/QNmjM7WXxh8GLkFQXCqSswQ5kyWGg?=
=?us-ascii?Q?KBa/ho2kpTHUf3QKfNkzFX7AnJICSycW8kPngvKXK9Oi9dkKjRrI3qh065aq?=
=?us-ascii?Q?5B0t8Dvh8AUZTF6IYNByb7ZrpwWBkrnSCBiUIseP8UHoV3KZbPpN+CwGuEsx?=
=?us-ascii?Q?u/2zFl8r7AFQKLny8evl+UU4zU9yIaD4bGlPyEeC/jujRpTf04CyR559wBwO?=
=?us-ascii?Q?5YRGEPKQz8q0QJL79JNA7a77EuNL0GICNCAqqjQf7j+nF+Q1sdxy2BWJyJZp?=
=?us-ascii?Q?wlKFbP0cJZcs8+BQD7KqWhjhpkv8VH4yw+rXh4GN3Nmp/n45gzi3tl0970cG?=
=?us-ascii?Q?Ps8SgkDQIi49BL0cms8wJZWmnhlrxk8tWIyjm4XJ7wBLhTVS7VA6EBR5Tgyb?=
=?us-ascii?Q?LXCXRGdH0m/jgG0k9zNMV1IKLggeoFzIHLTvMKtF+PxLOvQHjSXNuEldrEe/?=
=?us-ascii?Q?ckLP4Z9PJMwAAR+T2K5XYFFU5SgfDxrGnAYTJ4Ga9ufKrLov1pIKPxdhhdOi?=
=?us-ascii?Q?Vho1N7uY0RTma9UdGPmsqnkY+6EtGLakRPv0iNxozc/t7ZxE7MpTCNr9f7ix?=
=?us-ascii?Q?uFGjO4HvC6KVWdAuazpYK3DD1C88/4/QKowZKJ9/ExzOq4mZQRXkBwM4GlPo?=
=?us-ascii?Q?yZcsjfMrevK4mJ9mqmTNhXaNoghNcd9t7Nlaxjhh6TBtDggIu2vvAVh3Wa1g?=
=?us-ascii?Q?1WKZfbB2lYxReaZ9vHeuQsDEXMlx6xoK2yfVAkiubzbDWzcsFXL82pxqpCPd?=
=?us-ascii?Q?uam7UwkFau5l9oWrfGFPjTD+FmI12ovviDhSxOK0idYgFl5/lDoH9p8f7v6b?=
=?us-ascii?Q?fiJQxFZ3r9nbYFuwD+/VrWoJILcjO21cnyBi6qfRQFNOB8+bSVkEW8PCH7KB?=
=?us-ascii?Q?wlq6SG5rD9lvdlYc0RJ8Ud9SssNeqpAA7a67xNyGV9NIOujL+EoBUANvVsK+?=
=?us-ascii?Q?xuOodobrg3a2wRtYajyQYpzZQIh1fKCO0Oqt74CjItRMkWhpWliMM51EoO+R?=
=?us-ascii?Q?CwYUrBZ8a2q7iFNVxRZxiUYfudAiCEXcdLBwZ5+9crffbz9c8kszjYnpVaDV?=
=?us-ascii?Q?W6gGcwkAY8Z9y/t4GUxbhKFIGnWkHrxR+4gGs2J/6v4HoewovBsU7wvzOb4z?=
=?us-ascii?Q?7Y481s7eFxO+CgjDFiYBs3wOsky4E1jQ0ssgtPO7nqf+Z5hLMHZ9VR2zSsoj?=
=?us-ascii?Q?Qxdg+2Vc/NAqaGUOzgjRA6dl0CrrH5DcxYHQRPQhREKvBdDjOvK0TWmrbdch?=
=?us-ascii?Q?da+ybL9Y679mBF+UwBMjvF4isCTo62NL45AEXsPZQCOHQrmbJ0sj8QpiHH2C?=
=?us-ascii?Q?iQhLZeIdBnQjXdSkS8xKq+MiAzrjwwetx8ZgW9yHYyfwZ1t05wTw35Tq9mOJ?=
=?us-ascii?Q?Y46GhL/WhBzkJctf1f4+NlayGQBLgEhQV1OjhJK6r6bUPS6iE0QozOvmyp28?=
=?us-ascii?Q?lddoYAEzm9ARmkiUiX+dnSRWjr/S1DN4olcG1Ai0T9Lf/2Q6of6yWOi1CVRJ?=
=?us-ascii?Q?SYxkeLLHZcgiGPQXmgUPf092QAxQ6DA4URRYN+onpNQzTw11vwDDx5me6e2/?=
=?us-ascii?Q?RDviQ0kCHSnMWu8vQ/Fsv4o=3D?=
X-OriginatorOrg: os.amperecomputing.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 81789021-3abc-4c1a-194c-08dd9fed5402
X-MS-Exchange-CrossTenant-AuthSource: CH0PR01MB6873.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 02:46:22.3086
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: v3oyDGfGCtJcda1k1hmw0hmizSVtzcLxl9Eqts09X4NWbiQ4wIe01TlX1mAk5ztPSNi/tB2vAMS4SSkaE7X0dO9jG7cxAlgs7wIt2dmnfsU=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR01MB7551
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The later patch will enhance __create_pgd_mapping() and related helpers
to split kernel linear mapping, it requires have return value. So make
__create_pgd_mapping() and helpers non-void functions.

And move the BUG_ON() out of page table alloc helper since failing
splitting kernel linear mapping is not fatal and can be handled by the
callers in the later patch. Have BUG_ON() after
__create_pgd_mapping_locked() returns to keep the current callers behavior
intact.

Suggested-by: Ryan Roberts <ryan.roberts@xxxxxxx>
Signed-off-by: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
---
arch/arm64/kernel/cpufeature.c | 10 ++-
arch/arm64/mm/mmu.c | 130 +++++++++++++++++++++++----------
2 files changed, 99 insertions(+), 41 deletions(-)

diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 25e1fbfab6a3..e879bfcf853b 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -1933,9 +1933,9 @@ static bool has_pmuv3(const struct arm64_cpu_capabilities *entry, int scope)
#define KPTI_NG_TEMP_VA (-(1UL << PMD_SHIFT))

extern
-void create_kpti_ng_temp_pgd(pgd_t *pgdir, phys_addr_t phys, unsigned long virt,
- phys_addr_t size, pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int), int flags);
+int create_kpti_ng_temp_pgd(pgd_t *pgdir, phys_addr_t phys, unsigned long virt,
+ phys_addr_t size, pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int), int flags);

static phys_addr_t __initdata kpti_ng_temp_alloc;

@@ -1957,6 +1957,7 @@ static int __init __kpti_install_ng_mappings(void *__unused)
u64 kpti_ng_temp_pgd_pa = 0;
pgd_t *kpti_ng_temp_pgd;
u64 alloc = 0;
+ int err;

if (levels == 5 && !pgtable_l5_enabled())
levels = 4;
@@ -1986,9 +1987,10 @@ static int __init __kpti_install_ng_mappings(void *__unused)
// covers the PTE[] page itself, the remaining entries are free
// to be used as a ad-hoc fixmap.
//
- create_kpti_ng_temp_pgd(kpti_ng_temp_pgd, __pa(alloc),
+ err = create_kpti_ng_temp_pgd(kpti_ng_temp_pgd, __pa(alloc),
KPTI_NG_TEMP_VA, PAGE_SIZE, PAGE_KERNEL,
kpti_ng_pgd_alloc, 0);
+ BUG_ON(err);
}

cpu_install_idmap();
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index ea6695d53fb9..775c0536b194 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -189,15 +189,16 @@ static void init_pte(pte_t *ptep, unsigned long addr, unsigned long end,
} while (ptep++, addr += PAGE_SIZE, addr != end);
}

-static void alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
- unsigned long end, phys_addr_t phys,
- pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int),
- int flags)
+static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
+ unsigned long end, phys_addr_t phys,
+ pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int),
+ int flags)
{
unsigned long next;
pmd_t pmd = READ_ONCE(*pmdp);
pte_t *ptep;
+ int ret = 0;

BUG_ON(pmd_sect(pmd));
if (pmd_none(pmd)) {
@@ -208,6 +209,10 @@ static void alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
pmdval |= PMD_TABLE_PXN;
BUG_ON(!pgtable_alloc);
pte_phys = pgtable_alloc(PAGE_SHIFT);
+ if (pte_phys == -1) {
+ ret = -ENOMEM;
+ goto out;
+ }
ptep = pte_set_fixmap(pte_phys);
init_clear_pgtable(ptep);
ptep += pte_index(addr);
@@ -239,13 +244,17 @@ static void alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
* walker.
*/
pte_clear_fixmap();
+
+out:
+ return ret;
}

-static void init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end,
- phys_addr_t phys, pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int), int flags)
+static int init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end,
+ phys_addr_t phys, pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int), int flags)
{
unsigned long next;
+ int ret = 0;

do {
pmd_t old_pmd = READ_ONCE(*pmdp);
@@ -264,22 +273,27 @@ static void init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end,
BUG_ON(!pgattr_change_is_safe(pmd_val(old_pmd),
READ_ONCE(pmd_val(*pmdp))));
} else {
- alloc_init_cont_pte(pmdp, addr, next, phys, prot,
+ ret = alloc_init_cont_pte(pmdp, addr, next, phys, prot,
pgtable_alloc, flags);
+ if (ret)
+ break;

BUG_ON(pmd_val(old_pmd) != 0 &&
pmd_val(old_pmd) != READ_ONCE(pmd_val(*pmdp)));
}
phys += next - addr;
} while (pmdp++, addr = next, addr != end);
+
+ return ret;
}

-static void alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
- unsigned long end, phys_addr_t phys,
- pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int), int flags)
+static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
+ unsigned long end, phys_addr_t phys,
+ pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int), int flags)
{
unsigned long next;
+ int ret = 0;
pud_t pud = READ_ONCE(*pudp);
pmd_t *pmdp;

@@ -295,6 +309,10 @@ static void alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
pudval |= PUD_TABLE_PXN;
BUG_ON(!pgtable_alloc);
pmd_phys = pgtable_alloc(PMD_SHIFT);
+ if (pmd_phys == -1) {
+ ret = -ENOMEM;
+ goto out;
+ }
pmdp = pmd_set_fixmap(pmd_phys);
init_clear_pgtable(pmdp);
pmdp += pmd_index(addr);
@@ -314,21 +332,27 @@ static void alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
(flags & NO_CONT_MAPPINGS) == 0)
__prot = __pgprot(pgprot_val(prot) | PTE_CONT);

- init_pmd(pmdp, addr, next, phys, __prot, pgtable_alloc, flags);
+ ret = init_pmd(pmdp, addr, next, phys, __prot, pgtable_alloc, flags);
+ if (ret)
+ break;

pmdp += pmd_index(next) - pmd_index(addr);
phys += next - addr;
} while (addr = next, addr != end);

pmd_clear_fixmap();
+
+out:
+ return ret;
}

-static void alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
- phys_addr_t phys, pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int),
- int flags)
+static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
+ phys_addr_t phys, pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int),
+ int flags)
{
unsigned long next;
+ int ret = 0;
p4d_t p4d = READ_ONCE(*p4dp);
pud_t *pudp;

@@ -340,6 +364,10 @@ static void alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
p4dval |= P4D_TABLE_PXN;
BUG_ON(!pgtable_alloc);
pud_phys = pgtable_alloc(PUD_SHIFT);
+ if (pud_phys == -1) {
+ ret = -ENOMEM;
+ goto out;
+ }
pudp = pud_set_fixmap(pud_phys);
init_clear_pgtable(pudp);
pudp += pud_index(addr);
@@ -369,8 +397,10 @@ static void alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
BUG_ON(!pgattr_change_is_safe(pud_val(old_pud),
READ_ONCE(pud_val(*pudp))));
} else {
- alloc_init_cont_pmd(pudp, addr, next, phys, prot,
+ ret = alloc_init_cont_pmd(pudp, addr, next, phys, prot,
pgtable_alloc, flags);
+ if (ret)
+ break;

BUG_ON(pud_val(old_pud) != 0 &&
pud_val(old_pud) != READ_ONCE(pud_val(*pudp)));
@@ -379,14 +409,18 @@ static void alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
} while (pudp++, addr = next, addr != end);

pud_clear_fixmap();
+
+out:
+ return ret;
}

-static void alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
- phys_addr_t phys, pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int),
- int flags)
+static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
+ phys_addr_t phys, pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int),
+ int flags)
{
unsigned long next;
+ int ret = 0;
pgd_t pgd = READ_ONCE(*pgdp);
p4d_t *p4dp;

@@ -398,6 +432,10 @@ static void alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
pgdval |= PGD_TABLE_PXN;
BUG_ON(!pgtable_alloc);
p4d_phys = pgtable_alloc(P4D_SHIFT);
+ if (p4d_phys == -1) {
+ ret = -ENOMEM;
+ goto out;
+ }
p4dp = p4d_set_fixmap(p4d_phys);
init_clear_pgtable(p4dp);
p4dp += p4d_index(addr);
@@ -412,8 +450,10 @@ static void alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,

next = p4d_addr_end(addr, end);

- alloc_init_pud(p4dp, addr, next, phys, prot,
+ ret = alloc_init_pud(p4dp, addr, next, phys, prot,
pgtable_alloc, flags);
+ if (ret)
+ break;

BUG_ON(p4d_val(old_p4d) != 0 &&
p4d_val(old_p4d) != READ_ONCE(p4d_val(*p4dp)));
@@ -422,23 +462,27 @@ static void alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
} while (p4dp++, addr = next, addr != end);

p4d_clear_fixmap();
+
+out:
+ return ret;
}

-static void __create_pgd_mapping_locked(pgd_t *pgdir, phys_addr_t phys,
- unsigned long virt, phys_addr_t size,
- pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int),
- int flags)
+static int __create_pgd_mapping_locked(pgd_t *pgdir, phys_addr_t phys,
+ unsigned long virt, phys_addr_t size,
+ pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int),
+ int flags)
{
unsigned long addr, end, next;
pgd_t *pgdp = pgd_offset_pgd(pgdir, virt);
+ int ret = 0;

/*
* If the virtual and physical address don't have the same offset
* within a page, we cannot map the region as the caller expects.
*/
if (WARN_ON((phys ^ virt) & ~PAGE_MASK))
- return;
+ return -EINVAL;

phys &= PAGE_MASK;
addr = virt & PAGE_MASK;
@@ -446,10 +490,14 @@ static void __create_pgd_mapping_locked(pgd_t *pgdir, phys_addr_t phys,

do {
next = pgd_addr_end(addr, end);
- alloc_init_p4d(pgdp, addr, next, phys, prot, pgtable_alloc,
+ ret = alloc_init_p4d(pgdp, addr, next, phys, prot, pgtable_alloc,
flags);
+ if (ret)
+ break;
phys += next - addr;
} while (pgdp++, addr = next, addr != end);
+
+ return ret;
}

static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys,
@@ -458,17 +506,20 @@ static void __create_pgd_mapping(pgd_t *pgdir, phys_addr_t phys,
phys_addr_t (*pgtable_alloc)(int),
int flags)
{
+ int err;
+
mutex_lock(&fixmap_lock);
- __create_pgd_mapping_locked(pgdir, phys, virt, size, prot,
- pgtable_alloc, flags);
+ err = __create_pgd_mapping_locked(pgdir, phys, virt, size, prot,
+ pgtable_alloc, flags);
+ BUG_ON(err);
mutex_unlock(&fixmap_lock);
}

#ifdef CONFIG_UNMAP_KERNEL_AT_EL0
extern __alias(__create_pgd_mapping_locked)
-void create_kpti_ng_temp_pgd(pgd_t *pgdir, phys_addr_t phys, unsigned long virt,
- phys_addr_t size, pgprot_t prot,
- phys_addr_t (*pgtable_alloc)(int), int flags);
+int create_kpti_ng_temp_pgd(pgd_t *pgdir, phys_addr_t phys, unsigned long virt,
+ phys_addr_t size, pgprot_t prot,
+ phys_addr_t (*pgtable_alloc)(int), int flags);
#endif

static phys_addr_t __pgd_pgtable_alloc(int shift)
@@ -476,13 +527,17 @@ static phys_addr_t __pgd_pgtable_alloc(int shift)
/* Page is zeroed by init_clear_pgtable() so don't duplicate effort. */
void *ptr = (void *)__get_free_page(GFP_PGTABLE_KERNEL & ~__GFP_ZERO);

- BUG_ON(!ptr);
+ if (!ptr)
+ return -1;
+
return __pa(ptr);
}

static phys_addr_t pgd_pgtable_alloc(int shift)
{
phys_addr_t pa = __pgd_pgtable_alloc(shift);
+ if (pa == -1)
+ goto out;
struct ptdesc *ptdesc = page_ptdesc(phys_to_page(pa));

/*
@@ -498,6 +553,7 @@ static phys_addr_t pgd_pgtable_alloc(int shift)
else if (shift == PMD_SHIFT)
BUG_ON(!pagetable_pmd_ctor(ptdesc));

+out:
return pa;
}

--
2.48.1



Return-Path: <linux-kernel+bounces-668922-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4E49A41E003FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:47:13 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 27CEE1899520
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:47:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6093015ECDF;
Sat, 31 May 2025 02:46:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="BaUjgI8y"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125])
(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 27909151985
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.125
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748659594; cv=fail; b=s4uhdfWmRbYnC2mFuU6Rz0JK81mwFVYnXstPayGhLC6yc3eG7w1b05UPQHs1s4yNGiE9/RaPsxpRknw5ggdIdulGJFi7Ua32OXDl0GoCxArJZr/Cm77qAp7mx1QaWXoK1V4C6nAOBtt3IycmdSrx3AhNfemjlovOzmuSl+RJuiA=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748659594; c=relaxed/simple;
bh=/a+woRAUa/adTLeD95LlY3jIcFpAfpjKgBdw28QCASM=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
Content-Type:MIME-Version; b=JrhEfQJpkiKBHwEoD6PPYyHOrejMlJSKB29pXgokLPhZ3Igjv9cu4o68xs0LKdfLj/EgG0cyA+fFfOkHXm/sbSqCTkEEcFMJYisRypwWM09sa58P/yjaoe9cyxQtwM1EH4PpY8gH69Q3rWsqjUOva93z9dPlJVzmQegYakDvlSQ=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=BaUjgI8y; arc=fail smtp.client-ip=40.107.223.125
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=yU3SSl9nAp55XUU8t7m/CuNOtrn+h1O+zc6rllRi4jGJLlp5P9wmAXmpuRU4Zk+EsQb05LedgyM0CAruTMzzu7T5bPOsjMVw7wx/EbmLHc653OizVpSOWSdjE6oRpATCMLV2F96LPDcgkMaxJqfpnf5gqkXr6oAfkL6P/LQ9+pEAfy0c7A4XxH2u74Hp9nljwMU85UynskEFu+z2uWQThc9qT8Ae7J9c6F5jhYppK7QPvV5Ga6uRi/2chH3V6PB3nPpYc/mhroveMJMnhwhK0QPzMloJGdi2YboaOczmszlQ17Pwrl4CkcDlA0lAU12lczkq4nv8CIjZs8NFhattVA==
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=/hdaU4qAj7KfXSEvI3ZktRssDqTg9Rc3Fto0Nrb6oW4=;
b=jfwCkvw/srPFc+0aeE0D6eHIFlsd+pBlHgA7rd+WMAVKR7u1obGdC/vjSwhWoQ0NSPuKc0GfGAGDMmV4hQ2wYPImryNHxqx236AqPmvgzOQFIErxsw4vkIeP+/Ju/JSl6NDIxpT4xC6TtycgsqLxO9mZfyioIJTqsPvikKEQLmsPU1QK56mD24wKru5GF12f+Tzf8P4T12TNDMmEMUNeHJKKxwUG/CwKoykDjOB+uUHCprRp0ATQK3Y8y4Lab4n7eNN5KMEOu2cdiWNDLwKcyWoolk5NXxLUXU3RtPN7XQo3fROPyyHODowVY9jtggzg41amE+z3tc3Yl/ebKbQ8+A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none
header.from=os.amperecomputing.com; dkim=pass
header.d=os.amperecomputing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=os.amperecomputing.com; s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=/hdaU4qAj7KfXSEvI3ZktRssDqTg9Rc3Fto0Nrb6oW4=;
b=BaUjgI8yOU8u8bS0Bv1z2h8UywNHBzFPmWfIRHIfnX07wnNh+MZh3WJf7q1C7bSVilgZOVzJlGoXCgjuwcP1fFt0og1vEB0c033qXG0xoX68k8CUvQxJBS/pqKaz7FPzl0EyyEFwRe8rndTPzMaapeBojwp+uXjGoUFv0bxiEFo=
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=os.amperecomputing.com;
Received: from CH0PR01MB6873.prod.exchangelabs.com (2603:10b6:610:112::22) by
LV2PR01MB7551.prod.exchangelabs.com (2603:10b6:408:17d::5) with Microsoft
SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.20.8769.26; Sat, 31 May 2025 02:46:24 +0000
Received: from CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460]) by CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460%6]) with mapi id 15.20.8769.029; Sat, 31 May 2025
02:46:24 +0000
From: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
To: ryan.roberts@xxxxxxx,
will@xxxxxxxxxx,
catalin.marinas@xxxxxxx,
Miko.Lenczewski@xxxxxxx,
dev.jain@xxxxxxx,
scott@xxxxxxxxxxxxxxxxxxxxxx,
cl@xxxxxxxxxx
Cc: yang@xxxxxxxxxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH 4/4] arm64: mm: split linear mapping if BBML2 is not supported on secondary CPUs
Date: Fri, 30 May 2025 19:41:54 -0700
Message-ID: <20250531024545.1101304-5-yang@xxxxxxxxxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.48.1
In-Reply-To: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
References: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: CY5PR22CA0079.namprd22.prod.outlook.com
(2603:10b6:930:80::26) To CH0PR01MB6873.prod.exchangelabs.com
(2603:10b6:610:112::22)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH0PR01MB6873:EE_|LV2PR01MB7551:EE_
X-MS-Office365-Filtering-Correlation-Id: 4d347729-a9e7-4bb8-6471-08dd9fed5523
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|52116014|376014|366016|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?85oMLblO6J0Q1pNV7Z3MDlB+6ygpFhAm68XwLa2j5H0l0uha5V9qSi1z3ihi?=
=?us-ascii?Q?Dfg5/wDPSIFLk59E7xK8wXAwGb4RJ4NwgHG110pdWo2m+c3eKiFqAkiYdaE0?=
=?us-ascii?Q?6DMaGLeN3OfR/DIyzyirocn+6qLmnQdSn0LNlGVzka3db/w+jAmx7LWSwXPJ?=
=?us-ascii?Q?j/1e4NB2hrsLq8a9rhXVb4Ym3cEhRiRUDL2vIJaDoph6OIeIZC6Q8vfbl6AD?=
=?us-ascii?Q?jOm4d4oM7LLnnMeOOY4wTzoU4VfpCK+IjzwpnnxAl0rFoZWYYZbyBwdfoO+D?=
=?us-ascii?Q?FFQvAp6rCnrO1FKmRP+p4nEb68XDua8Ic9X/IqokQo+ghYGRGmkLeRBRG0YC?=
=?us-ascii?Q?MV+CjujZgXnvHo3FT4nrUL/7SVdyzlqRwhqWp6SVFOpe9Glge0AmGE7xSk8/?=
=?us-ascii?Q?KjptOoP0WqZbDzTIV3vUdMxqI7Okfnr6PwsJu2hPb4slRPVS9RVzU+XtDdMV?=
=?us-ascii?Q?BI9RNE2DvZlchTRpwd5zIxqspnGBw4kX8/B51YAfm/ShT1TOauusDPPg3EZV?=
=?us-ascii?Q?x7DGUf4PFJVR6E+QT4EbW713Jc0M+VEqgDdX03m6y//SfGUj3ylI/IKcLAHa?=
=?us-ascii?Q?ZUh/235TL/ZW7jvmk6G/TpbKl6BKNicm21kQrrZ66K3iohCV/dC+5caUeeAe?=
=?us-ascii?Q?LlbRGmWgeFI7IO3t8CFfYnkE1SCDArC5lE16cXpMYzXisLdFQEPz9VDo7bYN?=
=?us-ascii?Q?mdWeiFg7S2wUyWXERcKIQei/GSiCcwRSUSiymzp8oZemddSEmDeB7D9KqDGW?=
=?us-ascii?Q?TlIbQolqbAjZRUKCnib/b6s1HEpk0pRoBvXT+PmCq9fKCUgOScU0OnioJuBr?=
=?us-ascii?Q?m/xUHJl26L3CIpm35/sU5hh20HNI4Ocix4kKacFy0d4Gs4JbgWd6aTshhSWG?=
=?us-ascii?Q?bCbyOnizpnXOpborg2GsSEFdyk3AXNHBvuPOjzQQMJPPcHmIhySkPZD2xxzB?=
=?us-ascii?Q?3Af/eX4kbyUiZbqGQv2CkDSVpGWnDVuoihVofux17jnhV0XHyCpd60xQn1od?=
=?us-ascii?Q?RLhWx15Z6G/KBE8Oqh6TzR8UQN5fQlajEAZ9E0sA88vukf1/0vyJCJcgWv32?=
=?us-ascii?Q?wxYwn5BYKlKBoj4iBaZBew3hKYwdmeV3nunAm6oJvVQGZBkZWU6IOvLNQHFS?=
=?us-ascii?Q?Uw9/pRG061KQRdqF4aoJ8Xd1BkoZFXK1VAVYQhlYNnvBRPZ5aXMtscxVljt7?=
=?us-ascii?Q?SSXEy6XkaEFCS/37tqgJ6efmjrZ9anEsybvaS8wk7amzs6CIq5aZlYVj0JKs?=
=?us-ascii?Q?jRPmprcmcmrjKel4GMxy8r9HTTskLsGUIrhUSPs6Q9wNCKBdJ0hDy9XX/cex?=
=?us-ascii?Q?rWhIdAT+5QmbWvPnl3Qmyk4L+8QzYskhkEZD3IzM5x2sRxwB8DuYpRSnDkey?=
=?us-ascii?Q?ZMr5uNw+CS8t2AHs/QldbVXGK1Z1riY8orZfW7UFVamEInwbz+i9Bez4V6RR?=
=?us-ascii?Q?2eDggmMc6tfLWVnx1xOXCVXn+F9qQxGlnb0FGlbudaL0wl5Tj2rl9Q=3D=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR01MB6873.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(376014)(366016)(38350700014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?1Ds1ETskWE6WB1jhKlHTboyL0muCWEZG143C27w2XPWY4WMPcFZgjRQDyN3a?=
=?us-ascii?Q?siyPKV77iK420kq3i9HS+zFdZKmpQVQFmL/FkRkOZNLuEhxqVt//tkb0HpiI?=
=?us-ascii?Q?kgJkVC84gpL6W7TXQ6pj2JuWWaDfLEadsXIwgIy4+F1ZzJL12vTubfYGQ3h9?=
=?us-ascii?Q?uWrP8xy05bBkL7zV0D1Ox/n2pI7nqPQCK/AB022IlYfEwuXHzliJWlQOdP38?=
=?us-ascii?Q?vALxRN5jGr5Wb3E7jVx1iwXl+u8nwC41H+qhk52/8/L/QAR0uGKCMCZYsZtO?=
=?us-ascii?Q?4d2NQGV4k69RdKNMyn0CQ6J15LuXurZJCg9reaGz0I8L5vE25j1cyWLr4I0k?=
=?us-ascii?Q?kchr4ISHTJgTBT9i9oREgj8TdaM4poUqXDk2STx4TBAv1Cb/c3K3D7JNuz3j?=
=?us-ascii?Q?O1M38MZTFDmpd+jhTqzxLSExCr4vmJk3pkeus0K+GeYfczuvTzKBnNB62WwP?=
=?us-ascii?Q?3XlWZGjGUMfEMc2iSoExLHUM6uBWZhnjN1lSm3mtX0j5Ume82CCCu1NTnVmW?=
=?us-ascii?Q?+tB3R3S6CpERHCqBkqVAQL+7YyPwLmKguMlMrPo+CTHhkcU+jzAl6hFOTerr?=
=?us-ascii?Q?KuehVLPnk6v2VjiL419LtDdWShbHxEaHWCNcD7bYbDRJd6cs4QytzPB8mH1y?=
=?us-ascii?Q?mKxamwplPmfaNveaRp1XLoiEjqxQLB5zS/5Ih9N34qFYzjNMMu/Ymr0yv2IF?=
=?us-ascii?Q?c0pzQ4aBOGPCvtRLSZO2NS7zexk6h/ESSSsgnO0I0J1ERor456uAqannYm1s?=
=?us-ascii?Q?h2Tu+EpN7BBs8GaNDLL9cTxDUO5KXDMpQvF+7O7FsPRaZ4ZW4bjo9xLtWyQv?=
=?us-ascii?Q?FDteSb44I9YR36Yc7XvYQWsj5DaLoouD96ANYl8nQQKYPpU8RFBAocYa9zN0?=
=?us-ascii?Q?6YuZMus63VMoT45acwUtaXud8pbuXF+vmZ6NKIoP4AvnRJcQCbVI2jktWDV1?=
=?us-ascii?Q?nTfhoGzYlQ8SndQWHu02UnXGzhY0DsagPYdry2i8izQUltFLQzsDAKU3pzFW?=
=?us-ascii?Q?bQUChUvyBM8belIR3Fd1BGSUWjtaSp+Jp6MUv1fVgEBfPQ+R4oz0JxUBrBko?=
=?us-ascii?Q?9+oFfSKj40YMtVZuAmIS/h7xTXyzQOUV1NEChIVV1JZy+umKGBu3cS+Ak/Lw?=
=?us-ascii?Q?m/Q+1xR6flSMctWx9K9QSW1uOb12ccUxLK5y+0ZyfNLxbU9HiNGPXiTs2cUu?=
=?us-ascii?Q?VCje49zFohCYF0db0fpvlaBCBMaqpDhQiqSBDPolcOt+f6E6DZR+QF+IjUHb?=
=?us-ascii?Q?JnvdNCIq+0MKyEqKD5VxB/J35cV4mrXvUe1rEHOngEuAgc9WA4B+bmIP3mZ1?=
=?us-ascii?Q?Mons76ShxYAqCO1H/gdqRDyPsx2nVAm6Cb++tjEzhKCzNK6JpyN1S3rr8ivH?=
=?us-ascii?Q?fBJ1aE3biw9D0X9k187dlDsErmbYOY1X/7N3NF377z1hK9VNjf0Op8ziMlyY?=
=?us-ascii?Q?2lKiTEnd6heDeUFMLHFP0D3T5QL5JGwSSH62as5SQdi1vh7g7fYZ1DntKVZO?=
=?us-ascii?Q?8o1wqUSnw9ZIvpJJh56Rso6Dm82gN25K5+fWOCa71tNnAlFFqPE26SWivFct?=
=?us-ascii?Q?VKCvp9guFsSJJMYEXLymQiHgD65MqYrpIEumA5J+PjwcIAtMcZXLroTTAzTm?=
=?us-ascii?Q?NU5yLiW5YTc8XCxLKe5uMMk=3D?=
X-OriginatorOrg: os.amperecomputing.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 4d347729-a9e7-4bb8-6471-08dd9fed5523
X-MS-Exchange-CrossTenant-AuthSource: CH0PR01MB6873.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 02:46:24.2000
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 2+Gy52ZumMt24AdoXMwzU5oqf6JvNnI59w73sNe4gS3CceQKn1RMfbzTmII7/Q/UPYmyA9TZvFZm7XDCg9rN+bV4vvPabSzjlvJTiZp64Xg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR01MB7551
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The kernel linear mapping is painted in very early stage of system boot.
The cpufeature has not been finalized yet at this point. So the linear
mapping is determined by the capability of boot CPU. If the boot CPU
supports BBML2, large block mapping will be used for linear mapping.

But the secondary CPUs may not support BBML2, so repaint the linear mapping
if large block mapping is used and the secondary CPUs don't support BBML2
once cpufeature is finalized on all CPUs.

If the boot CPU doesn't support BBML2 or the secondary CPUs have the
same BBML2 capability with the boot CPU, repainting the linear mapping
is not needed.

Signed-off-by: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
---
arch/arm64/include/asm/mmu.h | 3 +
arch/arm64/kernel/cpufeature.c | 16 +++++
arch/arm64/mm/mmu.c | 108 ++++++++++++++++++++++++++++++++-
arch/arm64/mm/proc.S | 41 +++++++++++++
4 files changed, 166 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h
index 2693d63bf837..ad38135d1aa1 100644
--- a/arch/arm64/include/asm/mmu.h
+++ b/arch/arm64/include/asm/mmu.h
@@ -56,6 +56,8 @@ typedef struct {
*/
#define ASID(mm) (atomic64_read(&(mm)->context.id) & 0xffff)

+extern bool block_mapping;
+
static inline bool arm64_kernel_unmapped_at_el0(void)
{
return alternative_has_cap_unlikely(ARM64_UNMAP_KERNEL_AT_EL0);
@@ -72,6 +74,7 @@ extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
extern void *fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot);
extern void mark_linear_text_alias_ro(void);
extern int split_linear_mapping(unsigned long start, unsigned long end);
+extern int __repaint_linear_mappings(void *__unused);

/*
* This check is triggered during the early boot before the cpufeature
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index 5fc2a4a804de..5151c101fbaf 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -85,6 +85,7 @@
#include <asm/insn.h>
#include <asm/kvm_host.h>
#include <asm/mmu_context.h>
+#include <asm/mmu.h>
#include <asm/mte.h>
#include <asm/hypervisor.h>
#include <asm/processor.h>
@@ -2005,6 +2006,20 @@ static int __init __kpti_install_ng_mappings(void *__unused)
return 0;
}

+static void __init repaint_linear_mappings(void)
+{
+ if (!block_mapping)
+ return;
+
+ if (!rodata_full)
+ return;
+
+ if (system_supports_bbml2_noabort())
+ return;
+
+ stop_machine(__repaint_linear_mappings, NULL, cpu_online_mask);
+}
+
static void __init kpti_install_ng_mappings(void)
{
/* Check whether KPTI is going to be used */
@@ -3868,6 +3883,7 @@ void __init setup_system_features(void)
{
setup_system_capabilities();

+ repaint_linear_mappings();
kpti_install_ng_mappings();

sve_setup();
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 4c5d3aa35d62..3922af89abbb 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -209,6 +209,8 @@ static void split_pmd(pmd_t pmd, phys_addr_t pte_phys, int flags)
/* It must be naturally aligned if PMD is leaf */
if ((flags & NO_CONT_MAPPINGS) == 0)
prot = __pgprot(pgprot_val(prot) | PTE_CONT);
+ else
+ prot = __pgprot(pgprot_val(prot) & ~PTE_CONT);

for (int i = 0; i < PTRS_PER_PTE; i++, ptep++, pfn++)
__set_pte_nosync(ptep, pfn_pte(pfn, prot));
@@ -230,6 +232,8 @@ static void split_pud(pud_t pud, phys_addr_t pmd_phys, int flags)
/* It must be naturally aligned if PUD is leaf */
if ((flags & NO_CONT_MAPPINGS) == 0)
prot = __pgprot(pgprot_val(prot) | PTE_CONT);
+ else
+ prot = __pgprot(pgprot_val(prot) & ~PTE_CONT);

for (int i = 0; i < PTRS_PER_PMD; i++, pmdp++) {
__set_pmd_nosync(pmdp, pfn_pmd(pfn, prot));
@@ -833,6 +837,86 @@ void __init mark_linear_text_alias_ro(void)
PAGE_KERNEL_RO);
}

+static phys_addr_t repaint_pgtable_alloc(int shift)
+{
+ void *ptr;
+
+ ptr = (void *)__get_free_page(GFP_ATOMIC);
+ if (!ptr)
+ return -1;
+
+ return __pa(ptr);
+}
+
+extern u32 repaint_done;
+
+int __init __repaint_linear_mappings(void *__unused)
+{
+ typedef void (repaint_wait_fn)(void);
+ extern repaint_wait_fn bbml2_wait_for_repainting;
+ repaint_wait_fn *wait_fn;
+
+ phys_addr_t kernel_start = __pa_symbol(_stext);
+ phys_addr_t kernel_end = __pa_symbol(__init_begin);
+ phys_addr_t start, end;
+ unsigned long vstart, vend;
+ u64 i;
+ int ret;
+ int flags = NO_EXEC_MAPPINGS | NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS |
+ SPLIT_MAPPINGS;
+ int cpu = smp_processor_id();
+
+ wait_fn = (void *)__pa_symbol(bbml2_wait_for_repainting);
+
+ /*
+ * Repainting just can be run on CPU 0 because we just can be sure
+ * CPU 0 supports BBML2.
+ */
+ if (!cpu) {
+ /*
+ * Wait for all secondary CPUs get prepared for repainting
+ * the linear mapping.
+ */
+wait_for_secondary:
+ if (READ_ONCE(repaint_done) != num_online_cpus())
+ goto wait_for_secondary;
+
+ memblock_mark_nomap(kernel_start, kernel_end - kernel_start);
+ /* Split the whole linear mapping */
+ for_each_mem_range(i, &start, &end) {
+ if (start >= end)
+ return -EINVAL;
+
+ vstart = __phys_to_virt(start);
+ vend = __phys_to_virt(end);
+ ret = __create_pgd_mapping_locked(init_mm.pgd, start,
+ vstart, (end - start), __pgprot(0),
+ repaint_pgtable_alloc, flags);
+ if (ret)
+ panic("Failed to split linear mappings\n");
+
+ flush_tlb_kernel_range(vstart, vend);
+ }
+ memblock_clear_nomap(kernel_start, kernel_end - kernel_start);
+
+ WRITE_ONCE(repaint_done, 0);
+ } else {
+ /*
+ * The secondary CPUs can't run in the same address space
+ * with CPU 0 because accessing the linear mapping address
+ * when CPU 0 is repainting it is not safe.
+ *
+ * Let the secondary CPUs run busy loop in idmap address
+ * space when repainting is ongoing.
+ */
+ cpu_install_idmap();
+ wait_fn();
+ cpu_uninstall_idmap();
+ }
+
+ return 0;
+}
+
#ifdef CONFIG_KFENCE

bool __ro_after_init kfence_early_init = !!CONFIG_KFENCE_SAMPLE_INTERVAL;
@@ -887,6 +971,8 @@ static inline void arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp) {

#endif /* CONFIG_KFENCE */

+bool block_mapping;
+
static inline bool force_pte_mapping(void)
{
/*
@@ -915,6 +1001,8 @@ static void __init map_mem(pgd_t *pgdp)
int flags = NO_EXEC_MAPPINGS;
u64 i;

+ block_mapping = true;
+
/*
* Setting hierarchical PXNTable attributes on table entries covering
* the linear region is only possible if it is guaranteed that no table
@@ -930,8 +1018,10 @@ static void __init map_mem(pgd_t *pgdp)

early_kfence_pool = arm64_kfence_alloc_pool();

- if (force_pte_mapping())
+ if (force_pte_mapping()) {
+ block_mapping = false;
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;
+ }

/*
* Take care not to create a writable alias for the
@@ -1063,7 +1153,8 @@ void __pi_map_range(u64 *pgd, u64 start, u64 end, u64 pa, pgprot_t prot,
int level, pte_t *tbl, bool may_use_cont, u64 va_offset);

static u8 idmap_ptes[IDMAP_LEVELS - 1][PAGE_SIZE] __aligned(PAGE_SIZE) __ro_after_init,
- kpti_ptes[IDMAP_LEVELS - 1][PAGE_SIZE] __aligned(PAGE_SIZE) __ro_after_init;
+ kpti_ptes[IDMAP_LEVELS - 1][PAGE_SIZE] __aligned(PAGE_SIZE) __ro_after_init,
+ bbml2_ptes[IDMAP_LEVELS - 1][PAGE_SIZE] __aligned(PAGE_SIZE) __ro_after_init;

static void __init create_idmap(void)
{
@@ -1088,6 +1179,19 @@ static void __init create_idmap(void)
IDMAP_ROOT_LEVEL, (pte_t *)idmap_pg_dir, false,
__phys_to_virt(ptep) - ptep);
}
+
+ /*
+ * Setup idmap mapping for repaint_done flag. It will be used if
+ * repainting the linear mapping is needed later.
+ */
+ if (block_mapping) {
+ u64 pa = __pa_symbol(&repaint_done);
+ ptep = __pa_symbol(bbml2_ptes);
+
+ __pi_map_range(&ptep, pa, pa + sizeof(u32), pa, PAGE_KERNEL,
+ IDMAP_ROOT_LEVEL, (pte_t *)idmap_pg_dir, false,
+ __phys_to_virt(ptep) - ptep);
+ }
}

void __init paging_init(void)
diff --git a/arch/arm64/mm/proc.S b/arch/arm64/mm/proc.S
index fb30c8804f87..c40e6126c093 100644
--- a/arch/arm64/mm/proc.S
+++ b/arch/arm64/mm/proc.S
@@ -440,6 +440,47 @@ SYM_FUNC_END(idmap_kpti_install_ng_mappings)
.popsection
#endif

+/*
+ * Wait for repainting is done. Run on secondary CPUs
+ * only.
+ */
+ .pushsection ".data", "aw", %progbits
+SYM_DATA(repaint_done, .long 1)
+ .popsection
+
+ .pushsection ".idmap.text", "a"
+SYM_TYPED_FUNC_START(bbml2_wait_for_repainting)
+ swapper_ttb .req x0
+ flag_ptr .req x1
+
+ mrs swapper_ttb, ttbr1_el1
+ adr_l flag_ptr, repaint_done
+
+ /* Uninstall swapper before surgery begins */
+ __idmap_cpu_set_reserved_ttbr1 x16, x17
+
+ /* Increment the flag to let the boot CPU we're ready */
+1: ldxr w16, [flag_ptr]
+ add w16, w16, #1
+ stxr w17, w16, [flag_ptr]
+ cbnz w17, 1b
+
+ /* Wait for the boot CPU to finish repainting */
+ sevl
+1: wfe
+ ldxr w16, [flag_ptr]
+ cbnz w16, 1b
+
+ /* All done, act like nothing happened */
+ msr ttbr1_el1, swapper_ttb
+ isb
+ ret
+
+ .unreq swapper_ttb
+ .unreq flag_ptr
+SYM_FUNC_END(bbml2_wait_for_repainting)
+ .popsection
+
/*
* __cpu_setup
*
--
2.48.1



Return-Path: <linux-kernel+bounces-668921-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B9D6041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:47:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id D29113B3048
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E8EC978F39;
Sat, 31 May 2025 02:46:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b="sHOxMZYL"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2125.outbound.protection.outlook.com [40.107.223.125])
(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 B0E64149E13
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.125
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748659592; cv=fail; b=X9mvb28J0ZC1inv4EY030P29jH/BtQR5pdo7Z46n85Ds8gjbN81cL0fQ6IdN6G/QuFbAPTSvnBVEJVTNGQPWNyg7HFETdRX73E6N9+HwRDIKnLlRGp3+H/1TW+10OzoVwKHIZGXI8NXgaP0dUBkANBZCe1pfPE4iTXULApi4DIM=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748659592; c=relaxed/simple;
bh=GtvEoCr1F7n64w/1oLGWgvENVSoOl92GrxtJJD2zofQ=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
Content-Type:MIME-Version; b=stBYtZGV2OzWOGSMn5IYM87qc5+bHRYvKQWfOvEHC/sEMd70UZDYJ+DNjN2WQVTIxBVlFimlX04UqCEeGqUr+Kf/vHNcW2vOIDVnpfoRz5Cw9omlZluBBaXRvmEGNmiVkJCN/vP7Aow1YiUGC2O3Ey+34jdBwgr+GB6Gei/mUno=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com; spf=pass smtp.mailfrom=os.amperecomputing.com; dkim=pass (1024-bit key) header.d=os.amperecomputing.com header.i=@os.amperecomputing.com header.b=sHOxMZYL; arc=fail smtp.client-ip=40.107.223.125
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=os.amperecomputing.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=os.amperecomputing.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=csHDjY/WGMcfhms7tZNFKsEeHABDOOx191SwQ49SngGklU3qytJUEg50R1PDuGOzmfyGFCCeJNykVHFnaxILplZ3mXPCWaU6slpXWitr4ptpD/ZaxVj0yzilVTirn4dKeiTIzwd7/YRBaZDT0KJAm7hGG7296CoB1Y7lDUc1SN0MiDuyDf8vZ5XvDCK2Q0su7ALkQEMn74RoaNWupvejXKYnuNG7RmvuIWUNTI1x2ndWxygV3sXn+PFDFPmxU87q1FDEFydtDB5A6aTRooecoPK/ChxLI/YLCAcbgBp+/ZP5cbVWAci3Aubdq7FKqWTEsA03q2mT8Md7OlSoOLoiEQ==
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=JCvwe2kD5x8NGvCLpvQJMVYq++qUWCiwYy9RkEaD1zY=;
b=PC9ej7MgqRnmSAFzoKoHC6uyJ95Awtnd2pAax1sRNu/sH5sgdiXVsyZHY9r0INBSdWYTAoCViFFE2T8gGdKPT+t53Cag9NbxWNVYensa0c/jrA1HDv0y02NBYLCbsSHqYJnPAuEQ6lYKg0fM8UPcJ3mkXVZeCEYZeJaF65lGcwGbClZOsENBiyDcUL7onBChONofYW24mu+CbKkdQvW6ba9B4ZQg5mQFd179SZI1SWwtfy2Q4dGgEQWHkWcpnS+1NV9gDKVvdoqSGDbiEW1Qu5N6jJcChqYZRnc4/b+fC/Fa6BHWzSltGAsaZqhDmH2CIcjTHphUpLeivgdgS6hJBQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=os.amperecomputing.com; dmarc=pass action=none
header.from=os.amperecomputing.com; dkim=pass
header.d=os.amperecomputing.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=os.amperecomputing.com; s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=JCvwe2kD5x8NGvCLpvQJMVYq++qUWCiwYy9RkEaD1zY=;
b=sHOxMZYLM7ueQMHKr7r46FJ8Zu4Ts2PZQ3H13KxTRQ3Kc0SYRZaK3I30e0YpRvwIqSrAZJkJend7Y9fFBE5hTyKivt80/GbrCi7dbDu08KEZFqu6QwVSM9EwYO84huIBuJrW8We3TMUb2jIAAk6dKvxcIsaopbv8kITK8SW7UHA=
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=os.amperecomputing.com;
Received: from CH0PR01MB6873.prod.exchangelabs.com (2603:10b6:610:112::22) by
LV2PR01MB7551.prod.exchangelabs.com (2603:10b6:408:17d::5) with Microsoft
SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.20.8769.26; Sat, 31 May 2025 02:46:23 +0000
Received: from CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460]) by CH0PR01MB6873.prod.exchangelabs.com
([fe80::3850:9112:f3bf:6460%6]) with mapi id 15.20.8769.029; Sat, 31 May 2025
02:46:23 +0000
From: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
To: ryan.roberts@xxxxxxx,
will@xxxxxxxxxx,
catalin.marinas@xxxxxxx,
Miko.Lenczewski@xxxxxxx,
dev.jain@xxxxxxx,
scott@xxxxxxxxxxxxxxxxxxxxxx,
cl@xxxxxxxxxx
Cc: yang@xxxxxxxxxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH 3/4] arm64: mm: support large block mapping when rodata=full
Date: Fri, 30 May 2025 19:41:53 -0700
Message-ID: <20250531024545.1101304-4-yang@xxxxxxxxxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.48.1
In-Reply-To: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
References: <20250531024545.1101304-1-yang@xxxxxxxxxxxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: CY5PR22CA0079.namprd22.prod.outlook.com
(2603:10b6:930:80::26) To CH0PR01MB6873.prod.exchangelabs.com
(2603:10b6:610:112::22)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH0PR01MB6873:EE_|LV2PR01MB7551:EE_
X-MS-Office365-Filtering-Correlation-Id: 1c2d0aae-5ad5-4dbc-de30-08dd9fed548f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|52116014|376014|366016|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?hNt4nIa3Nkb/9Wev7nMmNIs3c/qxkZDUX7dVDuUBHCPHt8G97jdKaWjBy7f6?=
=?us-ascii?Q?ggOosGNwqzwlEC+RUebE9N4ZFWcB0QMK+j0c0R7NtA/VwcO7zo9lJWWkKvpS?=
=?us-ascii?Q?S+DPvIO8Z8b80XCOuPDVm5StMBk5SNPyCrFL8QudvhmPx4KKzvs9nc0BQb+V?=
=?us-ascii?Q?euEbSP3MN2tdmyH1vjaUFt59MOfAkOLU8pEYEKQ6KFrq81NjsJwyCsNHM6Up?=
=?us-ascii?Q?6OKbgy/6uPr92FI2XXz4Wjo8jrm9t7aE+hgcIxYhs+ASZrmqnE6+EHaqlZCU?=
=?us-ascii?Q?HgcB81DajY1cZqLTVdLgHY9dzhkB4IPQEnsrNIUodpZQL+OS5Ayd9C+U8fCo?=
=?us-ascii?Q?kezLmVWShJBxakx7bOPEtjJP6imLq/Yk2ND4YZ9CZ3SXF/0SIK72JBHUaU4l?=
=?us-ascii?Q?EobNdA8qLyi5ZXlCXvzTnegYYThEAO2rqNmAHtcCgj4M35rIR3p6UBtCIUtS?=
=?us-ascii?Q?zQ9cHXhCZ69nap/6GSeyutFLqMlI94ZaX8qPe3EMcTFwzkgDjWIj9U847Aez?=
=?us-ascii?Q?k8xTPrQa6jj5u4oLHZxS8Dw5Azb+HoakhodokwIQUJmRwRZxNDB981EJUNFG?=
=?us-ascii?Q?4Et/dybrQrQPzfWcWrtevvrU7W8RzsqRRVBHedaT+GfNFcN8TZxQYHbwNi25?=
=?us-ascii?Q?powiGDr6Rw0RU9F3slggbwqYbd91SXk1Jv/vppImWsc9zYl7uN+yWW+v+gRB?=
=?us-ascii?Q?pGjnkEz1Oq75M9bJgwrZlgxww7No7hGS3bs7fi5o70orE9BTD8IHucvehq1Z?=
=?us-ascii?Q?925fSoXH/h1LRDH04T6d/x90sMwX6zro1BeZr3ZAFPPuOjmwE4825nBCRj6F?=
=?us-ascii?Q?kCEHxAe68+KmiS8x01WcPmB+mUmtmD49V3eZuGCgbwBBznCfmrBqtUwpBnG/?=
=?us-ascii?Q?//LBw3eXgxIDG8a+DaGASizmovCl4UGWJ5Vva05FuPDodejyP8RSYwoRo6iZ?=
=?us-ascii?Q?/YGGEfI0tV4WtRnE4e3/p6lvrKX1sY5TaI9QNaz9KYe0ehRPQYKplnqzcA2/?=
=?us-ascii?Q?y0E5nHc+OXDFah/7ObmsAwWX20kq/B6nfvJvAvoKmf1PpLOJIZbRxJW0jiYM?=
=?us-ascii?Q?LXB7oInqwtLORvAKh8blr7jjJnijgBl7I9ZDgLtz5IH8MTlJ8GbSLryAsyCj?=
=?us-ascii?Q?RMAA4LdoQZJinrbRBxtGJtIaXR4ZXz10608ScqjdORqVCUuK+6XOrJWjy4yB?=
=?us-ascii?Q?4CwRRZUEaTKftf1odF2z6I/OB6eY0YqWVgPjxCIasQ6H/mVlBpqWvh6KQluu?=
=?us-ascii?Q?Lh9n+VnuWDfnNByoSeDItnvXolg11UrTuUji31fsfx3dgwwsNzX4QW1RU8YS?=
=?us-ascii?Q?lneNIr3olLfYruNLUK8qSSSaHDyKSaNAsl2A8aCCvFBPhDOnCLiHMGXyCmsN?=
=?us-ascii?Q?o1Ukp2RiKBJfjSKNJJK74xTM/IIThx/9722BNJdC2zfqDzBalUy08NpgV7Al?=
=?us-ascii?Q?c7u+bNJ4AY+eXYuUvgoj73OTNNk+mbMTAb4mtEW8yECD7WkG4JRexA=3D=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR01MB6873.prod.exchangelabs.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(52116014)(376014)(366016)(38350700014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?G/7MH3NBAm8fRCiNEIY0svWZtR6CPrt4SDguwJWEE6mB3mx674eiDnJLV/VQ?=
=?us-ascii?Q?fkQHFzL7gFmoSgghweFSkqrsgS9yF68UbjC6CJvrJi2GtL2DR8zA5f8sP1YF?=
=?us-ascii?Q?7Uu2JlbSvmgKzHhYxZ7TYvNzQ/i85Rs1biR6Vc1gUw2P9jNJm1JlUd6Pfdrg?=
=?us-ascii?Q?7on7Ic5oMUBQhfSzR7yoZwWKDTJalZ2F2ou8aDOgL93EZKwA8Y1IobdTlVgr?=
=?us-ascii?Q?CV3xzCN36HYLS8HSayw9TzMGlRqReHGaTTmDgdsuLNxKBVWMMrdzRnO8PcwL?=
=?us-ascii?Q?EUEieXIbeKWpfov/If+Bn3zpURDWJg31+yHaLCOIMRwsLYLCIUsFSrQiqen5?=
=?us-ascii?Q?C4ddedOU+FqPb16KMS1LPpfsFZJm1Jz/nJC2hznpnHcA9GU5NQJ9ZFbYHrYG?=
=?us-ascii?Q?PojEv1zgZr7ezRBn8LI/vurpuDjJwXuNbM0NV3TBezoqxDwvi6E/lJb5VJuz?=
=?us-ascii?Q?3OtDexyHDZ7qPJhxqURoBpOXZyV8ffJrbHQ0IibYwOw9s0BxYghno88xqBaa?=
=?us-ascii?Q?p2bow/tojHb4nGTfxvl1NiXS3FdSmTGgbDrddkIY9GoZD6fptiCfPnkq4HOP?=
=?us-ascii?Q?RsEY5RPXF2JHy4oHhOlyd8mJzwXXYCpEbCrqEbC5e+Y23Wahr3IvkrOnPWQl?=
=?us-ascii?Q?mXQPlJzRcu3q8ZbZ+5rClO7Oguye1ntaPrRC8VzVpyjhQI0mRRI37yw3UBqB?=
=?us-ascii?Q?+RmgcLA5lE9+ISSYSCsTvXkFcrBW9EY61jflyvcoTS1oWQbhS60Rbq2Z6Oyx?=
=?us-ascii?Q?5qP4L7o2ij/ALayZMaW2Kpk6iNJ560rPTPUp5KZTiwtpZKRNgzxtJKqV7LQd?=
=?us-ascii?Q?GIRGpX0gFED8Cy9MNBC6QhDXxmBuzQmR17l3PpadklU+vX04u2DG3pMG2BU6?=
=?us-ascii?Q?wKPVlW1hkiMoTIWJCYCTMKmUc4F2GBQpNn2KG2yfOh5iyj2X/BPluh/C/B9f?=
=?us-ascii?Q?MKQWCH1464XDpSJRb+G290GjNHvNlObWGfZ7p4UUzV8uxCWn/M/FAiressJR?=
=?us-ascii?Q?qT1xXauSqXyVbRH+M7w2ZWCIQNF9vcGAvWRyQO0pA5mw0VnFnWf1Tw6ehpfu?=
=?us-ascii?Q?Y1QVviV/OwneDFjqtb4aMyaXepDWpfmksi7kcAY4tvpATyL1IPRkV+27Rkan?=
=?us-ascii?Q?+3R87jwnqq9YzwrPJtHp5QINw1UEX7h3M0TUNIXRKY17Ltjqy3HELHRpRyw9?=
=?us-ascii?Q?9l8YP/uPCU0VB5ywVL3t9NlBTVE7IBPEmHA+HXtUWMT8LswjSSRUCijYckVR?=
=?us-ascii?Q?aAl0O0iBEEl9zfLj8S7Q/SM+1u8+UuthNz280d2hQH1Saii6jqiHfhFmZOrU?=
=?us-ascii?Q?8s8LqdCFBaJBwXtCI9vVFtiOcO2vkfdkTJyAZDszhKbvwQvOKOP0DUpVg+JQ?=
=?us-ascii?Q?6pa6+fia3c3Z98lgAPGZgmqjiTp+xfUlrjyJcRRNgTJhpdad9u8S+qjmtdSv?=
=?us-ascii?Q?1vIw0D3scVLBUhTG2H75aqfAEDvN6mFNTAgQ4oOUZgfbBmJun9J0QOo9F4sO?=
=?us-ascii?Q?OdkbTWoXmjArvEF99LttAOttf5ST7UrkTKGcEAGdOHmrop1dRTKd67mUoSDM?=
=?us-ascii?Q?fJk83GSYMNTQ20b50f4XRhwQvcV25WOJoD0reynidF/MFKry/kzcDTblgDBA?=
=?us-ascii?Q?7P7ZWnQls3p6Nwi65SFuAw4=3D?=
X-OriginatorOrg: os.amperecomputing.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1c2d0aae-5ad5-4dbc-de30-08dd9fed548f
X-MS-Exchange-CrossTenant-AuthSource: CH0PR01MB6873.prod.exchangelabs.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 02:46:23.2932
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 3bc2b170-fd94-476d-b0ce-4229bdc904a7
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: wQZqdeK37tDPR3LP0HeBr7gRqHv8q24a4OrOMjUZ+vo7qsee3wvAcalYD4fx34E9LPhmNw45ujZSkOFrZXbMQxAOJzTeY+weg8zbuB0HOU8=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR01MB7551
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

When rodata=full is specified, kernel linear mapping has to be mapped at
PTE level since large page table can't be split due to break-before-make
rule on ARM64.

This resulted in a couple of problems:
- performance degradation
- more TLB pressure
- memory waste for kernel page table

With FEAT_BBM level 2 support, splitting large block page table to
smaller ones doesn't need to make the page table entry invalid anymore.
This allows kernel split large block mapping on the fly.

Add kernel page table split support and use large block mapping by
default when FEAT_BBM level 2 is supported for rodata=full. When
changing permissions for kernel linear mapping, the page table will be
split to smaller size.

The machine without FEAT_BBM level 2 will fallback to have kernel linear
mapping PTE-mapped when rodata=full.

With this we saw significant performance boost with some benchmarks and
much less memory consumption on my AmpereOne machine (192 cores, 1P) with
256GB memory.

* Memory use after boot
Before:
MemTotal: 258988984 kB
MemFree: 254821700 kB

After:
MemTotal: 259505132 kB
MemFree: 255410264 kB

Around 500MB more memory are free to use. The larger the machine, the
more memory saved.

* Memcached
We saw performance degradation when running Memcached benchmark with
rodata=full vs rodata=on. Our profiling pointed to kernel TLB pressure.
With this patchset we saw ops/sec is increased by around 3.5%, P99
latency is reduced by around 9.6%.
The gain mainly came from reduced kernel TLB misses. The kernel TLB
MPKI is reduced by 28.5%.

The benchmark data is now on par with rodata=on too.

* Disk encryption (dm-crypt) benchmark
Ran fio benchmark with the below command on a 128G ramdisk (ext4) with disk
encryption (by dm-crypt).
fio --directory=/data --random_generator=lfsr --norandommap --randrepeat 1 \
--status-interval=999 --rw=write --bs=4k --loops=1 --ioengine=sync \
--iodepth=1 --numjobs=1 --fsync_on_close=1 --group_reporting --thread \
--name=iops-test-job --eta-newline=1 --size 100G

The IOPS is increased by 90% - 150% (the variance is high, but the worst
number of good case is around 90% more than the best number of bad case).
The bandwidth is increased and the avg clat is reduced proportionally.

* Sequential file read
Read 100G file sequentially on XFS (xfs_io read with page cache populated).
The bandwidth is increased by 150%.

Signed-off-by: Yang Shi <yang@xxxxxxxxxxxxxxxxxxxxxx>
---
arch/arm64/include/asm/cpufeature.h | 26 +++
arch/arm64/include/asm/mmu.h | 1 +
arch/arm64/include/asm/pgtable.h | 12 +-
arch/arm64/kernel/cpufeature.c | 2 +-
arch/arm64/mm/mmu.c | 269 +++++++++++++++++++++++++---
arch/arm64/mm/pageattr.c | 37 +++-
6 files changed, 319 insertions(+), 28 deletions(-)

diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h
index 8f36ffa16b73..a95806980298 100644
--- a/arch/arm64/include/asm/cpufeature.h
+++ b/arch/arm64/include/asm/cpufeature.h
@@ -1053,6 +1053,32 @@ static inline bool cpu_has_lpa2(void)
#endif
}

+bool cpu_has_bbml2_noabort(unsigned int cpu_midr);
+
+static inline bool has_nobbml2_override(void)
+{
+ u64 mmfr2;
+ unsigned int bbm;
+
+ mmfr2 = read_sysreg_s(SYS_ID_AA64MMFR2_EL1);
+ mmfr2 &= ~id_aa64mmfr2_override.mask;
+ mmfr2 |= id_aa64mmfr2_override.val;
+ bbm = cpuid_feature_extract_unsigned_field(mmfr2,
+ ID_AA64MMFR2_EL1_BBM_SHIFT);
+ return bbm == 0;
+}
+
+/*
+ * Called at early boot stage on boot CPU before cpu info and cpu feature
+ * are ready.
+ */
+static inline bool bbml2_noabort_available(void)
+{
+ return IS_ENABLED(CONFIG_ARM64_BBML2_NOABORT) &&
+ cpu_has_bbml2_noabort(read_cpuid_id()) &&
+ !has_nobbml2_override();
+}
+
#endif /* __ASSEMBLY__ */

#endif
diff --git a/arch/arm64/include/asm/mmu.h b/arch/arm64/include/asm/mmu.h
index 6e8aa8e72601..2693d63bf837 100644
--- a/arch/arm64/include/asm/mmu.h
+++ b/arch/arm64/include/asm/mmu.h
@@ -71,6 +71,7 @@ extern void create_pgd_mapping(struct mm_struct *mm, phys_addr_t phys,
pgprot_t prot, bool page_mappings_only);
extern void *fixmap_remap_fdt(phys_addr_t dt_phys, int *size, pgprot_t prot);
extern void mark_linear_text_alias_ro(void);
+extern int split_linear_mapping(unsigned long start, unsigned long end);

/*
* This check is triggered during the early boot before the cpufeature
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index d3b538be1500..bf3cef31d243 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -293,6 +293,11 @@ static inline pmd_t pmd_mkcont(pmd_t pmd)
return __pmd(pmd_val(pmd) | PMD_SECT_CONT);
}

+static inline pmd_t pmd_mknoncont(pmd_t pmd)
+{
+ return __pmd(pmd_val(pmd) & ~PMD_SECT_CONT);
+}
+
static inline pte_t pte_mkdevmap(pte_t pte)
{
return set_pte_bit(pte, __pgprot(PTE_DEVMAP | PTE_SPECIAL));
@@ -769,7 +774,7 @@ static inline bool in_swapper_pgdir(void *addr)
((unsigned long)swapper_pg_dir & PAGE_MASK);
}

-static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
+static inline void __set_pmd_nosync(pmd_t *pmdp, pmd_t pmd)
{
#ifdef __PAGETABLE_PMD_FOLDED
if (in_swapper_pgdir(pmdp)) {
@@ -779,6 +784,11 @@ static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
#endif /* __PAGETABLE_PMD_FOLDED */

WRITE_ONCE(*pmdp, pmd);
+}
+
+static inline void set_pmd(pmd_t *pmdp, pmd_t pmd)
+{
+ __set_pmd_nosync(pmdp, pmd);

if (pmd_valid(pmd)) {
dsb(ishst);
diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c
index e879bfcf853b..5fc2a4a804de 100644
--- a/arch/arm64/kernel/cpufeature.c
+++ b/arch/arm64/kernel/cpufeature.c
@@ -2209,7 +2209,7 @@ static bool hvhe_possible(const struct arm64_cpu_capabilities *entry,
return arm64_test_sw_feature_override(ARM64_SW_FEATURE_OVERRIDE_HVHE);
}

-static bool cpu_has_bbml2_noabort(unsigned int cpu_midr)
+bool cpu_has_bbml2_noabort(unsigned int cpu_midr)
{
/*
* We want to allow usage of bbml2 in as wide a range of kernel contexts
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 775c0536b194..4c5d3aa35d62 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -45,6 +45,7 @@
#define NO_BLOCK_MAPPINGS BIT(0)
#define NO_CONT_MAPPINGS BIT(1)
#define NO_EXEC_MAPPINGS BIT(2) /* assumes FEAT_HPDS is not used */
+#define SPLIT_MAPPINGS BIT(3)

u64 kimage_voffset __ro_after_init;
EXPORT_SYMBOL(kimage_voffset);
@@ -166,12 +167,91 @@ static void init_clear_pgtable(void *table)
dsb(ishst);
}

+static void split_cont_pte(pte_t *ptep)
+{
+ pte_t *_ptep = PTR_ALIGN_DOWN(ptep, sizeof(*ptep) * CONT_PTES);
+ pte_t _pte;
+
+ for (int i = 0; i < CONT_PTES; i++, _ptep++) {
+ _pte = READ_ONCE(*_ptep);
+ _pte = pte_mknoncont(_pte);
+ __set_pte_nosync(_ptep, _pte);
+ }
+
+ dsb(ishst);
+ isb();
+}
+
+static void split_cont_pmd(pmd_t *pmdp)
+{
+ pmd_t *_pmdp = PTR_ALIGN_DOWN(pmdp, sizeof(*pmdp) * CONT_PMDS);
+ pmd_t _pmd;
+
+ for (int i = 0; i < CONT_PMDS; i++, _pmdp++) {
+ _pmd = READ_ONCE(*_pmdp);
+ _pmd = pmd_mknoncont(_pmd);
+ set_pmd(_pmdp, _pmd);
+ }
+}
+
+static void split_pmd(pmd_t pmd, phys_addr_t pte_phys, int flags)
+{
+ pte_t *ptep;
+ unsigned long pfn;
+ pgprot_t prot;
+
+ pfn = pmd_pfn(pmd);
+ prot = pmd_pgprot(pmd);
+ prot = __pgprot((pgprot_val(prot) & ~PMD_TYPE_MASK) | PTE_TYPE_PAGE);
+
+ ptep = (pte_t *)phys_to_virt(pte_phys);
+
+ /* It must be naturally aligned if PMD is leaf */
+ if ((flags & NO_CONT_MAPPINGS) == 0)
+ prot = __pgprot(pgprot_val(prot) | PTE_CONT);
+
+ for (int i = 0; i < PTRS_PER_PTE; i++, ptep++, pfn++)
+ __set_pte_nosync(ptep, pfn_pte(pfn, prot));
+
+ dsb(ishst);
+}
+
+static void split_pud(pud_t pud, phys_addr_t pmd_phys, int flags)
+{
+ pmd_t *pmdp;
+ unsigned long pfn;
+ pgprot_t prot;
+ unsigned int step = PMD_SIZE >> PAGE_SHIFT;
+
+ pfn = pud_pfn(pud);
+ prot = pud_pgprot(pud);
+ pmdp = (pmd_t *)phys_to_virt(pmd_phys);
+
+ /* It must be naturally aligned if PUD is leaf */
+ if ((flags & NO_CONT_MAPPINGS) == 0)
+ prot = __pgprot(pgprot_val(prot) | PTE_CONT);
+
+ for (int i = 0; i < PTRS_PER_PMD; i++, pmdp++) {
+ __set_pmd_nosync(pmdp, pfn_pmd(pfn, prot));
+ pfn += step;
+ }
+
+ dsb(ishst);
+}
+
static void init_pte(pte_t *ptep, unsigned long addr, unsigned long end,
- phys_addr_t phys, pgprot_t prot)
+ phys_addr_t phys, pgprot_t prot, int flags)
{
do {
pte_t old_pte = __ptep_get(ptep);

+ if (flags & SPLIT_MAPPINGS) {
+ if (pte_cont(old_pte))
+ split_cont_pte(ptep);
+
+ continue;
+ }
+
/*
* Required barriers to make this visible to the table walker
* are deferred to the end of alloc_init_cont_pte().
@@ -199,11 +279,20 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
pmd_t pmd = READ_ONCE(*pmdp);
pte_t *ptep;
int ret = 0;
+ bool split = flags & SPLIT_MAPPINGS;
+ pmdval_t pmdval;
+ phys_addr_t pte_phys;

- BUG_ON(pmd_sect(pmd));
- if (pmd_none(pmd)) {
- pmdval_t pmdval = PMD_TYPE_TABLE | PMD_TABLE_UXN | PMD_TABLE_AF;
- phys_addr_t pte_phys;
+ if (!split)
+ BUG_ON(pmd_sect(pmd));
+
+ if (pmd_none(pmd) && split) {
+ ret = -EINVAL;
+ goto out;
+ }
+
+ if (pmd_none(pmd) || (split && pmd_leaf(pmd))) {
+ pmdval = PMD_TYPE_TABLE | PMD_TABLE_UXN | PMD_TABLE_AF;

if (flags & NO_EXEC_MAPPINGS)
pmdval |= PMD_TABLE_PXN;
@@ -213,6 +302,18 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
ret = -ENOMEM;
goto out;
}
+ }
+
+ if (split) {
+ if (pmd_leaf(pmd)) {
+ split_pmd(pmd, pte_phys, flags);
+ __pmd_populate(pmdp, pte_phys, pmdval);
+ }
+ ptep = pte_offset_kernel(pmdp, addr);
+ goto split_pgtable;
+ }
+
+ if (pmd_none(pmd)) {
ptep = pte_set_fixmap(pte_phys);
init_clear_pgtable(ptep);
ptep += pte_index(addr);
@@ -222,17 +323,28 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
ptep = pte_set_fixmap_offset(pmdp, addr);
}

+split_pgtable:
do {
pgprot_t __prot = prot;

next = pte_cont_addr_end(addr, end);

+ if (split) {
+ pte_t pteval = READ_ONCE(*ptep);
+ bool cont = pte_cont(pteval);
+
+ if (cont &&
+ ((addr | next) & ~CONT_PTE_MASK) == 0 &&
+ (flags & NO_CONT_MAPPINGS) == 0)
+ continue;
+ }
+
/* use a contiguous mapping if the range is suitably aligned */
if ((((addr | next | phys) & ~CONT_PTE_MASK) == 0) &&
(flags & NO_CONT_MAPPINGS) == 0)
__prot = __pgprot(pgprot_val(prot) | PTE_CONT);

- init_pte(ptep, addr, next, phys, __prot);
+ init_pte(ptep, addr, next, phys, __prot, flags);

ptep += pte_index(next) - pte_index(addr);
phys += next - addr;
@@ -243,7 +355,8 @@ static int alloc_init_cont_pte(pmd_t *pmdp, unsigned long addr,
* ensure that all previous pgtable writes are visible to the table
* walker.
*/
- pte_clear_fixmap();
+ if (!split)
+ pte_clear_fixmap();

out:
return ret;
@@ -255,15 +368,29 @@ static int init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end,
{
unsigned long next;
int ret = 0;
+ bool split = flags & SPLIT_MAPPINGS;
+ bool cont;

do {
pmd_t old_pmd = READ_ONCE(*pmdp);

next = pmd_addr_end(addr, end);

+ if (split && pmd_leaf(old_pmd)) {
+ cont = pgprot_val(pmd_pgprot(old_pmd)) & PTE_CONT;
+ if (cont)
+ split_cont_pmd(pmdp);
+
+ /* The PMD is fully contained in the range */
+ if (((addr | next) & ~PMD_MASK) == 0 &&
+ (flags & NO_BLOCK_MAPPINGS) == 0)
+ continue;
+ }
+
/* try section mapping first */
if (((addr | next | phys) & ~PMD_MASK) == 0 &&
- (flags & NO_BLOCK_MAPPINGS) == 0) {
+ (flags & NO_BLOCK_MAPPINGS) == 0 &&
+ (flags & SPLIT_MAPPINGS) == 0) {
pmd_set_huge(pmdp, phys, prot);

/*
@@ -278,7 +405,7 @@ static int init_pmd(pmd_t *pmdp, unsigned long addr, unsigned long end,
if (ret)
break;

- BUG_ON(pmd_val(old_pmd) != 0 &&
+ BUG_ON(!split && pmd_val(old_pmd) != 0 &&
pmd_val(old_pmd) != READ_ONCE(pmd_val(*pmdp)));
}
phys += next - addr;
@@ -296,14 +423,23 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
int ret = 0;
pud_t pud = READ_ONCE(*pudp);
pmd_t *pmdp;
+ bool split = flags & SPLIT_MAPPINGS;
+ pudval_t pudval;
+ phys_addr_t pmd_phys;

/*
* Check for initial section mappings in the pgd/pud.
*/
- BUG_ON(pud_sect(pud));
- if (pud_none(pud)) {
- pudval_t pudval = PUD_TYPE_TABLE | PUD_TABLE_UXN | PUD_TABLE_AF;
- phys_addr_t pmd_phys;
+ if (!split)
+ BUG_ON(pud_sect(pud));
+
+ if (pud_none(pud) && split) {
+ ret = -EINVAL;
+ goto out;
+ }
+
+ if (pud_none(pud) || (split && pud_leaf(pud))) {
+ pudval = PUD_TYPE_TABLE | PUD_TABLE_UXN | PUD_TABLE_AF;

if (flags & NO_EXEC_MAPPINGS)
pudval |= PUD_TABLE_PXN;
@@ -313,6 +449,18 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
ret = -ENOMEM;
goto out;
}
+ }
+
+ if (split) {
+ if (pud_leaf(pud)) {
+ split_pud(pud, pmd_phys, flags);
+ __pud_populate(pudp, pmd_phys, pudval);
+ }
+ pmdp = pmd_offset(pudp, addr);
+ goto split_pgtable;
+ }
+
+ if (pud_none(pud)) {
pmdp = pmd_set_fixmap(pmd_phys);
init_clear_pgtable(pmdp);
pmdp += pmd_index(addr);
@@ -322,11 +470,22 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
pmdp = pmd_set_fixmap_offset(pudp, addr);
}

+split_pgtable:
do {
pgprot_t __prot = prot;

next = pmd_cont_addr_end(addr, end);

+ if (split) {
+ pmd_t pmdval = READ_ONCE(*pmdp);
+ bool cont = pgprot_val(pmd_pgprot(pmdval)) & PTE_CONT;
+
+ if (cont &&
+ ((addr | next) & ~CONT_PMD_MASK) == 0 &&
+ (flags & NO_CONT_MAPPINGS) == 0)
+ continue;
+ }
+
/* use a contiguous mapping if the range is suitably aligned */
if ((((addr | next | phys) & ~CONT_PMD_MASK) == 0) &&
(flags & NO_CONT_MAPPINGS) == 0)
@@ -340,7 +499,8 @@ static int alloc_init_cont_pmd(pud_t *pudp, unsigned long addr,
phys += next - addr;
} while (addr = next, addr != end);

- pmd_clear_fixmap();
+ if (!split)
+ pmd_clear_fixmap();

out:
return ret;
@@ -355,6 +515,16 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
int ret = 0;
p4d_t p4d = READ_ONCE(*p4dp);
pud_t *pudp;
+ bool split = flags & SPLIT_MAPPINGS;
+
+ if (split) {
+ if (p4d_none(p4d)) {
+ ret= -EINVAL;
+ goto out;
+ }
+ pudp = pud_offset(p4dp, addr);
+ goto split_pgtable;
+ }

if (p4d_none(p4d)) {
p4dval_t p4dval = P4D_TYPE_TABLE | P4D_TABLE_UXN | P4D_TABLE_AF;
@@ -377,17 +547,26 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
pudp = pud_set_fixmap_offset(p4dp, addr);
}

+split_pgtable:
do {
pud_t old_pud = READ_ONCE(*pudp);

next = pud_addr_end(addr, end);

+ if (split && pud_leaf(old_pud)) {
+ /* The PUD is fully contained in the range */
+ if (((addr | next) & ~PUD_MASK) == 0 &&
+ (flags & NO_BLOCK_MAPPINGS) == 0)
+ continue;
+ }
+
/*
* For 4K granule only, attempt to put down a 1GB block
*/
if (pud_sect_supported() &&
((addr | next | phys) & ~PUD_MASK) == 0 &&
- (flags & NO_BLOCK_MAPPINGS) == 0) {
+ (flags & NO_BLOCK_MAPPINGS) == 0 &&
+ (flags & SPLIT_MAPPINGS) == 0) {
pud_set_huge(pudp, phys, prot);

/*
@@ -402,13 +581,14 @@ static int alloc_init_pud(p4d_t *p4dp, unsigned long addr, unsigned long end,
if (ret)
break;

- BUG_ON(pud_val(old_pud) != 0 &&
+ BUG_ON(!split && pud_val(old_pud) != 0 &&
pud_val(old_pud) != READ_ONCE(pud_val(*pudp)));
}
phys += next - addr;
} while (pudp++, addr = next, addr != end);

- pud_clear_fixmap();
+ if (!split)
+ pud_clear_fixmap();

out:
return ret;
@@ -423,6 +603,16 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
int ret = 0;
pgd_t pgd = READ_ONCE(*pgdp);
p4d_t *p4dp;
+ bool split = flags & SPLIT_MAPPINGS;
+
+ if (split) {
+ if (pgd_none(pgd)) {
+ ret = -EINVAL;
+ goto out;
+ }
+ p4dp = p4d_offset(pgdp, addr);
+ goto split_pgtable;
+ }

if (pgd_none(pgd)) {
pgdval_t pgdval = PGD_TYPE_TABLE | PGD_TABLE_UXN | PGD_TABLE_AF;
@@ -445,6 +635,7 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
p4dp = p4d_set_fixmap_offset(pgdp, addr);
}

+split_pgtable:
do {
p4d_t old_p4d = READ_ONCE(*p4dp);

@@ -461,7 +652,8 @@ static int alloc_init_p4d(pgd_t *pgdp, unsigned long addr, unsigned long end,
phys += next - addr;
} while (p4dp++, addr = next, addr != end);

- p4d_clear_fixmap();
+ if (!split)
+ p4d_clear_fixmap();

out:
return ret;
@@ -557,6 +749,25 @@ static phys_addr_t pgd_pgtable_alloc(int shift)
return pa;
}

+int split_linear_mapping(unsigned long start, unsigned long end)
+{
+ int ret = 0;
+
+ if (!system_supports_bbml2_noabort())
+ return 0;
+
+ mmap_write_lock(&init_mm);
+ /* NO_EXEC_MAPPINGS is needed when splitting linear map */
+ ret = __create_pgd_mapping_locked(init_mm.pgd, virt_to_phys((void *)start),
+ start, (end - start), __pgprot(0),
+ __pgd_pgtable_alloc,
+ NO_EXEC_MAPPINGS | SPLIT_MAPPINGS);
+ mmap_write_unlock(&init_mm);
+ flush_tlb_kernel_range(start, end);
+
+ return ret;
+}
+
/*
* This function can only be used to modify existing table entries,
* without allocating new levels of table. Note that this permits the
@@ -676,6 +887,24 @@ static inline void arm64_kfence_map_pool(phys_addr_t kfence_pool, pgd_t *pgdp) {

#endif /* CONFIG_KFENCE */

+static inline bool force_pte_mapping(void)
+{
+ /*
+ * Can't use cpufeature API to determine whether BBML2 supported
+ * or not since cpufeature have not been finalized yet.
+ *
+ * Checking the boot CPU only for now. If the boot CPU has
+ * BBML2, paint linear mapping with block mapping. If it turns
+ * out the secondary CPUs don't support BBML2 once cpufeature is
+ * fininalized, the linear mapping will be repainted with PTE
+ * mapping.
+ */
+ return (rodata_full && !bbml2_noabort_available()) ||
+ debug_pagealloc_enabled() ||
+ arm64_kfence_can_set_direct_map() ||
+ is_realm_world();
+}
+
static void __init map_mem(pgd_t *pgdp)
{
static const u64 direct_map_end = _PAGE_END(VA_BITS_MIN);
@@ -701,7 +930,7 @@ static void __init map_mem(pgd_t *pgdp)

early_kfence_pool = arm64_kfence_alloc_pool();

- if (can_set_direct_map())
+ if (force_pte_mapping())
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;

/*
@@ -1402,7 +1631,7 @@ int arch_add_memory(int nid, u64 start, u64 size,

VM_BUG_ON(!mhp_range_allowed(start, size, true));

- if (can_set_direct_map())
+ if (force_pte_mapping())
flags |= NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS;

__create_pgd_mapping(swapper_pg_dir, start, __phys_to_virt(start),
diff --git a/arch/arm64/mm/pageattr.c b/arch/arm64/mm/pageattr.c
index 39fd1f7ff02a..25c068712cb5 100644
--- a/arch/arm64/mm/pageattr.c
+++ b/arch/arm64/mm/pageattr.c
@@ -10,6 +10,7 @@
#include <linux/vmalloc.h>

#include <asm/cacheflush.h>
+#include <asm/mmu.h>
#include <asm/pgtable-prot.h>
#include <asm/set_memory.h>
#include <asm/tlbflush.h>
@@ -42,6 +43,8 @@ static int change_page_range(pte_t *ptep, unsigned long addr, void *data)
struct page_change_data *cdata = data;
pte_t pte = __ptep_get(ptep);

+ BUG_ON(pte_cont(pte));
+
pte = clear_pte_bit(pte, cdata->clear_mask);
pte = set_pte_bit(pte, cdata->set_mask);

@@ -80,8 +83,9 @@ static int change_memory_common(unsigned long addr, int numpages,
unsigned long start = addr;
unsigned long size = PAGE_SIZE * numpages;
unsigned long end = start + size;
+ unsigned long l_start;
struct vm_struct *area;
- int i;
+ int i, ret;

if (!PAGE_ALIGNED(addr)) {
start &= PAGE_MASK;
@@ -118,7 +122,12 @@ static int change_memory_common(unsigned long addr, int numpages,
if (rodata_full && (pgprot_val(set_mask) == PTE_RDONLY ||
pgprot_val(clear_mask) == PTE_RDONLY)) {
for (i = 0; i < area->nr_pages; i++) {
- __change_memory_common((u64)page_address(area->pages[i]),
+ l_start = (u64)page_address(area->pages[i]);
+ ret = split_linear_mapping(l_start, l_start + PAGE_SIZE);
+ if (WARN_ON_ONCE(ret))
+ return ret;
+
+ __change_memory_common(l_start,
PAGE_SIZE, set_mask, clear_mask);
}
}
@@ -174,6 +183,9 @@ int set_memory_valid(unsigned long addr, int numpages, int enable)

int set_direct_map_invalid_noflush(struct page *page)
{
+ unsigned long l_start;
+ int ret;
+
struct page_change_data data = {
.set_mask = __pgprot(0),
.clear_mask = __pgprot(PTE_VALID),
@@ -182,13 +194,21 @@ int set_direct_map_invalid_noflush(struct page *page)
if (!can_set_direct_map())
return 0;

+ l_start = (unsigned long)page_address(page);
+ ret = split_linear_mapping(l_start, l_start + PAGE_SIZE);
+ if (WARN_ON_ONCE(ret))
+ return ret;
+
return apply_to_page_range(&init_mm,
- (unsigned long)page_address(page),
- PAGE_SIZE, change_page_range, &data);
+ l_start, PAGE_SIZE, change_page_range,
+ &data);
}

int set_direct_map_default_noflush(struct page *page)
{
+ unsigned long l_start;
+ int ret;
+
struct page_change_data data = {
.set_mask = __pgprot(PTE_VALID | PTE_WRITE),
.clear_mask = __pgprot(PTE_RDONLY),
@@ -197,9 +217,14 @@ int set_direct_map_default_noflush(struct page *page)
if (!can_set_direct_map())
return 0;

+ l_start = (unsigned long)page_address(page);
+ ret = split_linear_mapping(l_start, l_start + PAGE_SIZE);
+ if (WARN_ON_ONCE(ret))
+ return ret;
+
return apply_to_page_range(&init_mm,
- (unsigned long)page_address(page),
- PAGE_SIZE, change_page_range, &data);
+ l_start, PAGE_SIZE, change_page_range,
+ &data);
}

static int __set_memory_enc_dec(unsigned long addr,
--
2.48.1



Return-Path: <linux-kernel+bounces-668923-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9CA3841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:50:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 834053AB02F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:49:58 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2100C78F4C;
Sat, 31 May 2025 02:50:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="Dw1rDYfs"
Received: from PNZPR01CU001.outbound.protection.outlook.com (mail-centralindiaazolkn19011039.outbound.protection.outlook.com [52.103.68.39])
(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 2C3ED20EB;
Sat, 31 May 2025 02:50:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.103.68.39
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748659812; cv=fail; b=hIZ9YTe/bjNWVAlfPwL5jFslAMgp56OCfh49G0LjAEgKshkjxkFejk/q+lmIBqx++YjShRHYKaweWhjoUBrr7/+sjOJq05fE7cOWD8ZVg26iEWixvblWPqfJT73qWWQWBIq3Sy1/kvcg0DZupv1S+X3O7uBA3irZ9uM7KngwtqM=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748659812; c=relaxed/simple;
bh=X2samiggE2166+XeFOi/06bda9q6eKEC3AKmIuggmKQ=;
h=Message-ID:Date:Subject:To:Cc:References:From:In-Reply-To:
Content-Type:MIME-Version; b=g22CqsKpw4byAVvOk53lT6fg0fK5ZHa3Vuidpi8NgwFBhN64S6QJ1DdRP5RPA90r4TilE4czvYK6PXLSqbTbI/KodxgSZ0k2HAu41ejsdbp7ofo+ctpfN404BcPNOC72MGMV6enF5dyVKE8LNV+JOlSlitDhLZlDaZooCpqTJTo=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=Dw1rDYfs; arc=fail smtp.client-ip=52.103.68.39
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=fkLL6+9y+ZioJyIpeoGGtY9YyflRdhg2bnjtZuDNku03YviX518jXbj2Oir7wUxQnPfwZBcd8LwVXqv3jbxmXnWT8BTDZCbTO3iPzw9tXmXuj+NXRkw08kzz6WAVVfMuW57rS9/vhPHq4ilywpkcwE9LIbUw0LS4iVy9PY+JQXSOW+C8Dj3VNwYhbISdywn2RGWJcnUMMrspLQy8x4xXzR+bP1/ra7Dhj3UDUKkdN68sVv2Hu0T4f0tBO8J1/PXVltc74l3AnRWLhjjsAOn2VZAotYhB/v++oyyi8oDvdEDqTeTkMVHLgF+BzTkQv5/EGFwtFGSpaxJkSs65y30Cqg==
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=ucgg4cKgP7e8iXvxtmSJcx6Z3CitFhsVwp6QTRyuVWo=;
b=gcSqrLnsV+bg9jbyvFkzODv1pBi7CvLryhsc1sKwqhrbeHaFSKNT36744VDixWJg30q7kuHJuuDV57cJvZkMpDP46Eb7QOIWV5TVIR2PO22p6KDUGjLqPNDQg2cQbW05FZi/tMpYD2KgS9Olp4+V9S4Y7VlTGfSf5FMXQKNtpzLsf9iz5Q5cdtHyGUPAjggxGXzCL2SwUHnQiKUo9MDb2B/vcdyut4fX5wRraSSYtOrurO4WBFse8xEIEEWn08sy6OfhlJ/9LykdzeRqKECCFvlcaoYejDkfYE9zu6Eb84rHBlLxQ40Wo7/Z4SRVsCy6axABLlFGErtnjfb6vJ1APw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=ucgg4cKgP7e8iXvxtmSJcx6Z3CitFhsVwp6QTRyuVWo=;
b=Dw1rDYfsrFQUZHacPOEaWLCRf9uuGuFjrrh8BOINOK/ebHw7PLB+RdueejRZ2wf+I9CAct3s5qDaZ2pbCxExyuVih4QfF9c4PFZ3ZMg6CRkTAM7Sgu0kh3RFM5HqKRkhkFBgwHaElQcuTmaxt/vQY8v9HD6beyoLDmbZQS6RXi8vrheDGdYKENIDuROvpb/q8sfo0TK1TYq6eG5O+ZzWj5Ptpu4jFiXYaBZiWTR5X8phHeS+7BR86B02ebouzvC0UnYh8k3zj0SGn4ruLUbYBUj3Zs6BnQ2+0Cb9mmyy2wGOHMlFcwFUOCk5H1rWS+CtVYh5nimWXCihLTuLqPQDfw==
Received: from MA0P287MB2262.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:100::6)
by PN3PPFD6B622E24.INDP287.PROD.OUTLOOK.COM (2603:1096:c04:1::d6) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.35; Sat, 31 May
2025 02:50:02 +0000
Received: from MA0P287MB2262.INDP287.PROD.OUTLOOK.COM
([fe80::ca81:3600:b1e4:fcf4]) by MA0P287MB2262.INDP287.PROD.OUTLOOK.COM
([fe80::ca81:3600:b1e4:fcf4%5]) with mapi id 15.20.8769.033; Sat, 31 May 2025
02:50:02 +0000
Message-ID:
<MA0P287MB226230791E82A7A4D566C224FE60A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 10:49:58 +0800
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 3/3] riscv: dts: sophgo: add zfh for sg2042
To: Inochi Amaoto <inochiama@xxxxxxxxx>, Han Gao <rabenda.cn@xxxxxxxxx>
Cc: devicetree@xxxxxxxxxxxxxxx, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley
<conor+dt@xxxxxxxxxx>, Paul Walmsley <paul.walmsley@xxxxxxxxxx>,
Palmer Dabbelt <palmer@xxxxxxxxxxx>, Albert Ou <aou@xxxxxxxxxxxxxxxxx>,
Alexandre Ghiti <alex@xxxxxxxx>, linux-riscv@xxxxxxxxxxxxxxxxxxx,
sophgo@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
References: <cover.1747235487.git.rabenda.cn@xxxxxxxxx>
<104dde6002c268a39fab6fcf469adc26d49ba364.1747235487.git.rabenda.cn@xxxxxxxxx>
<MA0P287MB226290B908D3209E5C890BFAFE90A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<CAAT7Ki-33DcA7xeBzzv1hm0wR_ebcVdux5fQxGVrLs45RbGM9A@xxxxxxxxxxxxxx>
<MA0P287MB226265FFA15A808221629848FE64A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<4vuneynwhmsyokkuw3wlabxij6kobl6j7bbbcymlcmsdc2hhb7@u5mhb7je74km>
From: Chen Wang <unicorn_wang@xxxxxxxxxxx>
In-Reply-To: <4vuneynwhmsyokkuw3wlabxij6kobl6j7bbbcymlcmsdc2hhb7@u5mhb7je74km>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-ClientProxiedBy: TYAPR01CA0215.jpnprd01.prod.outlook.com
(2603:1096:404:29::35) To MA0P287MB2262.INDP287.PROD.OUTLOOK.COM
(2603:1096:a01:100::6)
X-Microsoft-Original-Message-ID:
<da4385b0-4c32-4c4f-9b35-fe6f5442fcd2@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: MA0P287MB2262:EE_|PN3PPFD6B622E24:EE_
X-MS-Office365-Filtering-Correlation-Id: 79c4c5c1-e98d-45b7-e3c6-08dd9fedd6eb
X-Microsoft-Antispam:
BCL:0;ARA:14566002|8060799009|7092599006|15080799009|19110799006|5072599009|6090799003|461199028|3412199025|440099028|10035399007;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?bkpHa2hKSUx1eXZwWGEyTGV5b1I1Y256WHJPTlZTOWJrT1gySTFXOWtxN2pr?=
=?utf-8?B?SWlWR3luK2Z4YXRidmhucFVyb2VHM01PellNM0VxWUl6RUhoNWRCMUoxN1Bs?=
=?utf-8?B?WG5zbWVxTWNYZnFhWlFCcExQaXc1cmlUbTB4ajFoNkVWY2hZei9PYUh2U3E4?=
=?utf-8?B?M1U3TVYxUTA4MnJJUGdJdDdDNERnTFlBdVUvaWEvZG1vTVh2ai80RzZXeU84?=
=?utf-8?B?bHdUVzcySndJK1Q5S1lsR3FsV3ZwSmxzcDk1eTMyanUwSms0YkoxZFdPRWQx?=
=?utf-8?B?bXB5MEMrWWlJTmZ1TGp6L2xkN0JPWmx0dEE2T0xuQittbld0YUxjc05MdmF6?=
=?utf-8?B?allkenBaeFRJN05FVVBrVHhScEFpejNPaUE0TXFObmlLdGRrdFUvZWlBR2E2?=
=?utf-8?B?Mk1CZDkvMVZQS0Rxa0xkRFNqRC9keGJKSVJmTXovT0FvYTNNRlRlWk9ncUUy?=
=?utf-8?B?dytZZFpkRktvK3ZIaXpWQzBCS3FQYXFkSklVSTl0Tlh5RVVhcHAyVk4xMnlp?=
=?utf-8?B?OFBIalYvenU2SGQxeTNXdWlPVlltV1YyeUVjYnYvaWVKeEJ3RVhhTmQ1UGlt?=
=?utf-8?B?MlB0eE05WWhGVmVIKy9CYWFybVZyY2d6Z2h1c1R2Z1NlTEhKUmhob25OS2h5?=
=?utf-8?B?NUNIcG8vTWhRZFBURFh5cERoU0xqaVRqRUcxdWltNkgzdGxieUMwV1BxZWdB?=
=?utf-8?B?TFUvQjQxc2dLeHQ2RVJzSThVOWNKVGhZUjFIOVo0Z2k4RzMvWFNCUXYrT0h0?=
=?utf-8?B?cEc4Ly83RVlCSnpWK1B2SlpvMWZhV01FNnFPM1REMGovbjZ4S0Y1N1RwcUFi?=
=?utf-8?B?Z1RDUVRuTFdScmw5LzZqRTkwdExXNXovZXEyaWN1eDZZU3loK0ROSEhFYjgr?=
=?utf-8?B?V0xGTzE5RFMxOWFJZTFub2twdkpaYmZDSDFsdDRXYkFUSkYrMXp2WFdtVzRj?=
=?utf-8?B?cDVmdGkrWnFJWWFLeUQyWGJ0SDRMdVlzbXlGVHc4bUlNRGtINVYyY1llOGtC?=
=?utf-8?B?bUxwbDVwdmxmbUNCRTkxaWxtNGc5Nk9Nb2I5VVFzL0JKMWR6cm5wejZaMHdx?=
=?utf-8?B?TUQ5TTNlclkvV0tsZmdVWmV3Ymw5b2dxMkdlUDNMemQzaVMvT1FQU0MrWFNG?=
=?utf-8?B?cGovVU9STlgxSmhLQUhPTk5Yck11bVJ5YVFNR3ZQVDlJdjNUL1ozR2RveHBh?=
=?utf-8?B?QzZGTnozVjloZloyQloralFjbXBjQ1dYZDhsU1NOZm9rbjBYYWtuMzZlVzFp?=
=?utf-8?B?ZFZZWWdTcjdOM0swK3Evdy8xUVZaS1JmZ3RjM3FYc1pmZ3BnejNrcVdhS3h3?=
=?utf-8?B?b3ZnN2kxa2sxWmxJU2RYYnJ0eTlHL3dPbHRsNEgyY0Ria0hrQ1FzWFFxSkhy?=
=?utf-8?B?V0RiVWR3M1RueGdiellqWlUvUk1LVjlZQlFJdE53VWE0QnlXR2dwQ2tVQmRK?=
=?utf-8?B?K2hBZ1Y4TUpyWjJlTm1qS3dzd3hEdnhIWU92bHl0eEtvaEtsbHRWRUl5MmRt?=
=?utf-8?B?RkZRWnRPRnprbkRFQVZmNEkvenhkL0o0UVFyWlVDcWN0TS9uZ1B4aTNOSXcr?=
=?utf-8?Q?lDtAU5/mhzCqn2ODTHJ+6jOJF8o9WC8e0HigXjOW+sUXO0?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?QVFsTWxJamNhUTBEa21zakRHUUpIaHpSU0ZmZEl3KzZtNnF4M1lVbTV1dzgv?=
=?utf-8?B?Q2dGR3M0c3Z4Q2VheHZTSEpmV3dSd242VGsxc3hxTWJGV0xZRVBpZGlKWVB3?=
=?utf-8?B?ME5NL1FiZE83NUdoeE1EWTVSM0phcmtaQlhWUGtxYmR5bjJNUGpUY3dnOVM4?=
=?utf-8?B?d1E2eWQwQk5pUDlIa1ZaY0ZnVHlZYkJjUzFHaExhMjBIOFhCSmdaYVgwUmJC?=
=?utf-8?B?ZHRUcnBFRlllMnNSdUF5OUczUitxUVNjdFQxTnhJSVArbUZBdjFXMjJYMjVH?=
=?utf-8?B?ZGs2Y1VHTFA4VTZNbVVHRXFnSVZKYWgzZDYxSHVCOEhFdGxYWi9lRXZ2ZXBi?=
=?utf-8?B?ZHh3NWhxYnQ3VFRvMlZPWUs0eHVKYzhuTG92QUdkM0JvdVhMWmVuUzFLRnhp?=
=?utf-8?B?ZytVbDZHM1J4bjNmWGpxLzBZK1FSRFROQ2I1ZnhCc1k4b09GeHJ3azlvbkh0?=
=?utf-8?B?ZTNBYTdrNzFwUW53UUlCaWNhU3R5U2dJb0MxVHJLUHBXNkdKeWJtei94Wm5k?=
=?utf-8?B?YzUxSDJvb2xUSTVyNUVuNHpOMEtFUmoxQ3U2TFpYdkJTU243cCsxbFBjajVi?=
=?utf-8?B?L084aENCZXJ3cEZhV0ViZUFabFgrT1d5NjVHZFgyMm5JNW53Y2VDd2NzT3Q1?=
=?utf-8?B?TWEyeGhVcDlMd0dCOTYya0hDNXBLbCtZaVBmM00zbDZwTU1kbmFXQ2F4VmVF?=
=?utf-8?B?TnhrV25XYlJPUjREZGtFQ0o5NGJYeTdxM0dNQVZCMUkySzFMWHpMMXNXNFpw?=
=?utf-8?B?OENiVDFYTUhxVC9OUzFpM1NNNWJzVFNudXdDeVhGcHY3U0lwM25KTUpROGV6?=
=?utf-8?B?aDFaSGtNYTFiSk5WMTlwOTZFYVB2dEgvbFhuWFF3OW12ZVdVaEFXTDhNNEJL?=
=?utf-8?B?aGd6TmxIQ0RBaVZHbmNDRzYzb1g5TXhUZ3BDQ2VYVWdaUFJ2MWF3bVpaNzlJ?=
=?utf-8?B?NWZlRUJIMGZLS0RYMU50aytjUnlscjhYRlJCVHUvM05lVVp3UzdTRFJ6VnJX?=
=?utf-8?B?Nk1SNVBGcjBSWEd6U1ljUkJJdHBFYTYwTVRDKzhWc2hicjdpZHZITVlHMkVK?=
=?utf-8?B?WmFxbHp1M0NoR3FKbEh4OUdzMXVpc3cwRkxtNVlVNHlkU3Q5WVFKOEg5ZXB1?=
=?utf-8?B?QVhoK0svcTZ4OVIrRDd5bXVQRU1CSkZIbEVtNVBpNlkzTXZoQzdxU0s3dTBv?=
=?utf-8?B?ck1pM1RsbHdYSm1jUjJ6Vi9lUytZZjZITWZFREJ5SmYxcXZZc05NZDdBcW5a?=
=?utf-8?B?ZkRyUGtWdTFsVHh5QTF1cldrUDBTSW9KNVVScUp5OTFQZHhxdFgxVS9vTkVZ?=
=?utf-8?B?SVRXU3JlTFFNYkdCbkM3cXdSdk1KQnZpb20wc2lEMjIwamR1NXpUNGk4T0M4?=
=?utf-8?B?QlA2OWRpRHlGZDhnaklmU1pwUHdXVEZWY0hzakNvMUt6dEdOa0tHOWg1TG5C?=
=?utf-8?B?bXk4cHNNOGxudGJYazFISVBFSmtOVW43NzFXWDNOTysxNzIxRzN1MDBDNWw2?=
=?utf-8?B?bnBHWHZxajNmbk9Kb0xJUHhUT2duVk1IVjlucHNwUS9CVTJEWUVvb1djSTVQ?=
=?utf-8?B?MmVBNzgzT0tENUtPZkk1aklJQ2tpcG5NVE1ROUJzUzJWMkdYMURGM0NmREJL?=
=?utf-8?B?WWtmaUhkYU0zeGU4N0RpbE5hOTBOTThvZWViNU56Wms2aE4rNUZwdHArNWlD?=
=?utf-8?B?QTNXWlN3ZmN2UXN2SDJGSDZMcWYwTXFnRzE1TXFKcWwzczdmeE5YQ2tQTVN1?=
=?utf-8?Q?En2jMeo5Oj+SVrx6bahq6b7HCl35s2vVVsKUmUn?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 79c4c5c1-e98d-45b7-e3c6-08dd9fedd6eb
X-MS-Exchange-CrossTenant-AuthSource: MA0P287MB2262.INDP287.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 02:50:02.1295
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg:
00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN3PPFD6B622E24
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


On 2025/5/31 9:34, Inochi Amaoto wrote:
> On Tue, May 27, 2025 at 06:22:05PM +0800, Chen Wang wrote:
>> On 2025/5/27 17:34, Han Gao wrote:
>>> On Thu, May 15, 2025 at 9:33â?¯AM Chen Wang <unicorn_wang@xxxxxxxxxxx> wrote:
>>>> On 2025/5/14 23:15, Han Gao wrote:
>>>>> sg2042 support Zfh ISA extension [1].
>>>>>
>>>>> Link: https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1737721869472/%E7%8E%84%E9%93%81C910%E4%B8%8EC920R1S6%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C%28xrvm%29_20250124.pdf [1]
>>>>>
>>>>> Signed-off-by: Han Gao <rabenda.cn@xxxxxxxxx>
>>>>> ---
>>>>> arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi | 256 ++++++++++----------
>>>>> 1 file changed, 128 insertions(+), 128 deletions(-)
>>>>>
>>>>> diff --git a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>>>> index f483f62ab0c4..8dd1a3c60bc4 100644
>>>>> --- a/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>>>> +++ b/arch/riscv/boot/dts/sophgo/sg2042-cpus.dtsi
>>>>> @@ -256,11 +256,11 @@ core3 {
>>>>> cpu0: cpu@0 {
>>>>> compatible = "thead,c920", "riscv";
>>>>> device_type = "cpu";
>>>>> - riscv,isa = "rv64imafdc";
>>>>> + riscv,isa = "rv64imafdc_zfh";
>>>> Need not touch this. "riscv,isa" is deprecated and replaced by
>>>> "riscv,isa-base" & "riscv,isa-extensions".
>>>>
>>>> And only adding zfh for this looks a bit werid.
>>>>
>>>> Actually, I plan to remove "riscv,isa" later, so please don't touch this
>>>> from now on.
>>> I think that since the linux kernel is the upstream for devicetree, it
>>> cannot yet remove riscv, isa needs to maintain compatibility.
>> OK, maybe it's not good to remove "riscv,isa".
>>
>> Can this patch not modify "riscv,isa", but only add something for
>> "riscv,isa-extensions"?
>>
> I can remove this while merging the patch, is it OK for you?
>
> Regards,
> Inochi

@Inochi,

Han does not want to remove this "riscv,isa"ï¼?he said some other
components, such as u-boot may have dependency on this.

@Han, please provide more info if needed.

Thanks,

Chen



Return-Path: <linux-kernel+bounces-668924-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AE6D241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:54:47 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id CADE24E1217
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:54:48 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6F2CE12CDA5;
Sat, 31 May 2025 02:54:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Kwq5mRlD"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 17DD210E4
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:54:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748660080; cv=none; b=uCzsrF1Km03T0thOWVXMam+5o7sOf622YIjtSYDuMBhptU2EDgt3YgDQpTYrrYCb1ZDbYOtp1HCaHNxvQIQA/MuX7yCod4647ngsXJq/13FEDZxPDgJ8YaS/c0xOS+cZhdBKKr5POzyW+zOLFISLN6ENYgYdesi9MhuA3w/v+u4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748660080; c=relaxed/simple;
bh=40L5BE0Zh2QvgZzx1WSNHLyoFA+imT4Mq21GuRxB+jk=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=mRB4oeDN21uJzuTDBZycXVF5yCJ9WypcmV2j9rJVPBYg/OeLLOC7jGXsQzDTNj4nWOJ5q0/OYUtfSiSf/eW+T7nhNN6e2eLu1mdhYIqUCUq6r8kqGdm3u3rRZfeGZDuYng3fpaDazX7z5PfkQsWK9eWOXqdA7BXVtvvIPvO777Y=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Kwq5mRlD; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748660076;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=4qsLu0lHA7bFYOFOBNnyYxJ9GC4MiYfojGvHdjpDapg=;
b=Kwq5mRlDybTwh4W3iTipb9Hg9VhScRflRdwd37Xs2FgeOBeDYkXFJYetA0pId2juudFdna
Aojvf6Wk5nb6+K+eQxWIboo1pFwEiks1ttMStEBWttjzRgxUjc15MVUB7i6MzJqG2TO7uH
3FcANuVegpXjU9SAq2irvjtfRJmpuYg=
Received: from mail-vs1-f71.google.com (mail-vs1-f71.google.com
[209.85.217.71]) by relay.mimecast.com with ESMTP with STARTTLS
(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
us-mta-492-j20TbdLoOXavxfg5PFkbXQ-1; Fri, 30 May 2025 22:54:35 -0400
X-MC-Unique: j20TbdLoOXavxfg5PFkbXQ-1
X-Mimecast-MFC-AGG-ID: j20TbdLoOXavxfg5PFkbXQ_1748660074
Received: by mail-vs1-f71.google.com with SMTP id ada2fe7eead31-4e1060d40f4so600880137.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 19:54:35 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748660074; x=1749264874;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=4qsLu0lHA7bFYOFOBNnyYxJ9GC4MiYfojGvHdjpDapg=;
b=noUsYzNIceKWtzkdOFsd7cgVmzRuc7YjPz1oS0FDlWfIcRcY/9CKxqpKWNmfBhe8En
U9UK1GtlgO07b1uhNEzoVfzUPHOOgMKW8+AS/zxFXONyxhjFi4i0bIauijEjp/hK8Y2s
X1TvMUwBP/j2/9KFWdrHLAzT4PnFqWfcrafREHU5FTl8AJSEOt0wI3kKPzlnV6Yo8Sw4
UjRDcHEi57efDrJ1tFSj/+qdYbgdgDjQHru3RipOUE7WuMOJWk/thMfiRoai/2LWT7Li
0xifW4Flu/6+g3BuZUYs+0WfHrXdzybWv83WIqhFMHKKYl7PoCnfb2wQudKegi9Ck+ob
sJtQ==
X-Gm-Message-State: AOJu0YxWQNu0PJk7fQbZ7UYH7kUv8WT4scN7BufMzRNi1FMXbkrM1Pr8
jbenN6190hX3ny3lMjXtf9UyI5+h5ahtsTSbvE7R0CfZUQCHpLUc5vUXkpTsZPLKAYRqeiUPdUS
MN56G9zIrpUYY1FD5xWbRGTv+ZLuDmUI1z76KIH91wafZDHlswp9gxMAkRBW7hU6ePo1A5jGzbE
c86cqbko20QlgcqDma3ooNGEcTBJ8uA3zE1YJ4MzJn8Y8n0ucMSq4+MA==
X-Gm-Gg: ASbGncu4DRSo7Ap6FhTs7sO5Oiorx8deTVsnOUgzEdecv3bOYzvJsv/rNrbaHNRNDKD
GngOzXcbm7GS9/M2n5eEIEVyndQl3rTvJGACw/ZTUpJjzGe1bqIiTlrpRKjZxw2HOqqM=
X-Received: by 2002:a05:6122:17a0:b0:530:7ab8:49ab with SMTP id 71dfb90a1353d-53093308211mr348054e0c.0.1748660074503;
Fri, 30 May 2025 19:54:34 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGHcGwqJFNf5deKBMtLwQtfyTH+MhR9a8ovR3jKJ2pIlVWWhPNfkdppfZjC2sxSJINu81RBblF+tPuimE1o5hY=
X-Received: by 2002:a05:6122:17a0:b0:530:7ab8:49ab with SMTP id
71dfb90a1353d-53093308211mr348047e0c.0.1748660074155; Fri, 30 May 2025
19:54:34 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530211422.784415-1-cmirabil@xxxxxxxxxx> <20250530211422.784415-2-cmirabil@xxxxxxxxxx>
<aDpq7kqJUyAjad9F@ghost>
In-Reply-To: <aDpq7kqJUyAjad9F@ghost>
From: Charles Mirabile <cmirabil@xxxxxxxxxx>
Date: Fri, 30 May 2025 22:54:23 -0400
X-Gm-Features: AX0GCFu8cygWIhwriOzSHAzT63d4ZkJQlHOU6N0ITQKTtG-BnG0LOa7a0z-wsGw
Message-ID: <CABe3_aF0U5ej6ctQ0TQzecZ+ayaRSzJPTv5zf6kcD9U95rQXxw@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v1 1/1] riscv: fix runtime constant support for nommu kernels
To: Charlie Jenkins <charlie@xxxxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, Paul Walmsley <paul.walmsley@xxxxxxxxxx>,
Palmer Dabbelt <palmer@xxxxxxxxxxx>, Albert Ou <aou@xxxxxxxxxxxxxxxxx>,
Alexandre Ghiti <alex@xxxxxxxx>,
"open list:RISC-V ARCHITECTURE" <linux-riscv@xxxxxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 10:35=E2=80=AFPM Charlie Jenkins <charlie@rivosinc.=
com> wrote:
>
> On Fri, May 30, 2025 at 05:14:22PM -0400, Charles Mirabile wrote:
> > the `__runtime_fixup_32` function does not handle the case where `val` =
is
> > zero correctly (as might occur when patching a nommu kernel and referri=
ng
> > to a physical address below the 4GiB boundary whose upper 32 bits are a=
ll
> > zero) because nothing in the existing logic prevents the code from taki=
ng
> > the `else` branch of both nop-checks and emitting two `nop` instruction=
s.
> >
> > This leaves random garbage in the register that is supposed to receive =
the
> > upper 32 bits of the pointer instead of zero that when combined with th=
e
> > value for the lower 32 bits yields an invalid pointer and causes a kern=
el
> > panic when that pointer is eventually accessed.
> >
> > The author clearly considered the fact that if the `lui` is converted i=
nto
> > a `nop` that the second instruction needs to be adjusted to become an `=
li`
> > instead of an `addi`, hence introducing the `addi_insn_mask` variable, =
but
> > didn't follow that logic through fully to the case where the `else` bra=
nch
> > executes. To fix it just adjust the logic to ensure that the second `el=
se`
> > branch is not taken if the first instruction will be patched to a `nop`=
.
>
> You have an accurate assesment here, I missed the zero case :/.
> Thank you for fixing the issue!
>
> >
> > Fixes: a44fb5722199 ("riscv: Add runtime constant support")
> >
> > Signed-off-by: Charles Mirabile <cmirabil@xxxxxxxxxx>
> > ---
> > arch/riscv/include/asm/runtime-const.h | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/arch/riscv/include/asm/runtime-const.h b/arch/riscv/includ=
e/asm/runtime-const.h
> > index 451fd76b8811..d766e2b9e6df 100644
> > --- a/arch/riscv/include/asm/runtime-const.h
> > +++ b/arch/riscv/include/asm/runtime-const.h
> > @@ -206,7 +206,7 @@ static inline void __runtime_fixup_32(__le16 *lui_p=
arcel, __le16 *addi_parcel, u
> > addi_insn_mask &=3D 0x07fff;
> > }
> >
> > - if (lower_immediate & 0x00000fff) {
> > + if (lower_immediate & 0x00000fff || lui_insn =3D=3D RISCV_INSN_NO=
P4) {
>
> This comment is borderline too nitpicky so feel free to dismiss it :).
> It's slightly wasteful to have this check right after the if-statement
I agree. Your patch definitely works, but the complexity starts to get
kind of hairy though to handle it correctly. Especially given this is
the patching code that only runs once and is not in the hot path.
> that sets it. I am not sure what the most readable way of doing this is
> though. What would you think about a patch like the following instead?
>
> From 1c56536c1e338735140c9090f06da49a3d245a61 Mon Sep 17 00:00:00 2001
> From: Charlie Jenkins <charlie@xxxxxxxxxxxx>
> Date: Fri, 30 May 2025 19:25:13 -0700
> Subject: [PATCH] alternate fix
>
> ---
> arch/riscv/include/asm/runtime-const.h | 23 +++++++++++------------
> 1 file changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/arch/riscv/include/asm/runtime-const.h b/arch/riscv/include/=
asm/runtime-const.h
> index 451fd76b8811..085a0bb26fbb 100644
> --- a/arch/riscv/include/asm/runtime-const.h
> +++ b/arch/riscv/include/asm/runtime-const.h
> @@ -179,12 +179,9 @@ static inline void __runtime_fixup_caches(void *wher=
e, unsigned int insns)
> static inline void __runtime_fixup_32(__le16 *lui_parcel, __le16 *addi_p=
arcel, unsigned int val)
> {
> unsigned int lower_immediate, upper_immediate;
> - u32 lui_insn, addi_insn, addi_insn_mask;
> + u32 lui_insn, addi_insn;
> __le32 lui_res, addi_res;
>
> - /* Mask out upper 12 bit of addi */
> - addi_insn_mask =3D 0x000fffff;
> -
> lui_insn =3D (u32)le16_to_cpu(lui_parcel[0]) | (u32)le16_to_cpu(l=
ui_parcel[1]) << 16;
> addi_insn =3D (u32)le16_to_cpu(addi_parcel[0]) | (u32)le16_to_cpu=
(addi_parcel[1]) << 16;
>
> @@ -195,6 +192,15 @@ static inline void __runtime_fixup_32(__le16 *lui_pa=
rcel, __le16 *addi_parcel, u
> /* replace upper 20 bits of lui with upper immediate */
> lui_insn &=3D 0x00000fff;
> lui_insn |=3D upper_immediate & 0xfffff000;
> +
> + if (lower_immediate & 0x00000fff) {
> + /* replace upper 12 bits of addi with lower 12 bi=
ts of val */
> + addi_insn &=3D 0x000fffff;
> + addi_insn |=3D (lower_immediate & 0x00000fff) << =
20;
> + } else {
> + /* replace addi with nop if lower_immediate is em=
pty */
> + addi_insn =3D RISCV_INSN_NOP4;
> + }
> } else {
> /* replace lui with nop if immediate is small enough to f=
it in addi */
> lui_insn =3D RISCV_INSN_NOP4;
> @@ -203,16 +209,9 @@ static inline void __runtime_fixup_32(__le16 *lui_pa=
rcel, __le16 *addi_parcel, u
> * is performed by adding with the x0 register. Setting r=
s to
> * zero with the following mask will accomplish this goal=
.
> */
> - addi_insn_mask &=3D 0x07fff;
> - }
> -
> - if (lower_immediate & 0x00000fff) {
> + addi_insn &=3D 0x07fff;
> /* replace upper 12 bits of addi with lower 12 bits of va=
l */
> - addi_insn &=3D addi_insn_mask;
> addi_insn |=3D (lower_immediate & 0x00000fff) << 20;
> - } else {
> - /* replace addi with nop if lower_immediate is empty */
> - addi_insn =3D RISCV_INSN_NOP4;
> }
>
> addi_res =3D cpu_to_le32(addi_insn);
> --
> 2.43.0
>
> Let me know what you think!
Frankly, I wonder whether this whole optimization of replacing `lui` or
`addiw` with `nop` is even worth it. This isn't like linker relaxation
where we can actually change the amount of code by eliding an instruction.
Is `nop` actually that much faster to execute than `lui` or `addiw` to
justify the complexity?
>
> - Charlie
>
Best - Charlie



Return-Path: <linux-kernel+bounces-668925-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 34C9C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:57:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1859816F57D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:57:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 35FCD13957E;
Sat, 31 May 2025 02:57:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HRF233fZ"
Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2D4B510E4;
Sat, 31 May 2025 02:57:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748660267; cv=none; b=jjoC5CgNy2BHW66MRTNuz6uDZdhK1LrpjYFQVFvAZYHhM64U2B0PS1g6pb9rZ8NdLktg1etVxM0uNfXBD9JziO14kiSFdzelUre6KfzMmku/BpZT6VZHx9HOckE2A5D1ww7QxppVcENli7/9MtIhftGGaAalkEUO1hIg2bgy944=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748660267; c=relaxed/simple;
bh=8BhFUu8r59r7ymFPCa5lKDBhW311A5cwppU6cmaHNJQ=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=nRXzCXeSwy1C9CtX2qySfx9QNnzcaSRMOarcdR6FJryJnUzQ9A/ceFGE31Xp0sT/DLoTidv1z1nVcvVdBGv2qTBRXMytScv/SWYFgLg8JhNRdZ/Kmkd9rOu/c8VsexvaJFCL5taJgixfDwIm/qbGeBLALSzciaiQKbyXr2LQadM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HRF233fZ; arc=none smtp.client-ip=209.85.216.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-3121aed2435so2232965a91.2;
Fri, 30 May 2025 19:57:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748660265; x=1749265065; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=8BhFUu8r59r7ymFPCa5lKDBhW311A5cwppU6cmaHNJQ=;
b=HRF233fZYHR2FNs7Kt8bUx8VyWjf8R7aC9QIdLaVrFO5Sm/68XtnO/uzD//bfcVMKw
b+zIWzogtSDxh87GpAg7/NiZEvu+mIWzAMhnR/z9qrbLgfC06/4Gx99Pv/ZH7fm3UQis
t98Wf14bXmb6iPcghHW5fZMAFaVk2rPeW/yHf7lOmN1U0kug7RbPt3W7NxJoPl8EptEo
U53jc2ozal+37XBN0tpkLXNPWNU4UUMlRqVXVKJasopAYXszPomzvfFDaFl06ZdDb6vp
2iwPglNoSwHFdtH5AoRZqNxWhZE9krVI9flEu2vUqmMb/+ScHi6MA1LSgzyO8dwZgOAH
sCpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748660265; x=1749265065;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=8BhFUu8r59r7ymFPCa5lKDBhW311A5cwppU6cmaHNJQ=;
b=lW4J+QNMBAFUdpA4aWDbWCpy4fqIPrpvXk84XVxdJfJtrpBPdAbQNfIRvj3YplTb0N
ouKSA0BhSt0B6eYzqtwiC1Xfkda790fDOIg/hFoxzPz/YAIXqv46PzlwslMCZSsu8bPr
BKzn95jSm94+iasv9KG35zrso1DDwQz7MbM3xtXrYVLSRmWetLosfBU05To7mRUmq1tT
7TO36MryRh4tFk8fMF+qJrGWNFIURD6LL6pHJZyyobfp7j24DAxkK28PerHvGkJfFNbC
fRHMHPhEnEerZz69KPC4awez3mV3DRYalcHWktAZbuqKwmTrqqRBZPvGlw5vgJdudFr9
KAdw==
X-Forwarded-Encrypted: i=1; AJvYcCU7BO2+y0Z3WLeO4TV32R5Yboi465+Z5G2eRiZn0SnGAs+8lL+HFllmhrZLb+j/drC2d/JRKZAoQfoZsjk=@vger.kernel.org, AJvYcCXKhgrXKWfPqPb7uJVyf2lJm5INdfgEl6J5VdUw2EU2/UXy4mQAZseC5cUm5w/QfbccTJvKjTWho9ifat4S3Xc=@vger.kernel.org
X-Gm-Message-State: AOJu0YzqXWTgLedwkzepukwIP4URW3krmr+zLiIjQ21HLuMaJi4QHTaU
uaE76RWL0BX15EmN839ZJB4Vz6gl1C4H2SIcEgBVapsC9MnH3SgrtSzSefFV7t8KquAtWEe80VE
D5Is9a0+9AdgwnQzkmxdxvb2kQEFECSc=
X-Gm-Gg: ASbGncvSnRG7mBWE1bORj6axaZ9TBqbmimX6L7CZ7Z/kaJ5Cwmoht8CDzgvPjalKEYg
ZMMSNeqHuiX6S/bXe2Lna7scflnmnfp2aRmVoKJJEk1+SJBWeJwDg0RpsDuJBp19eBF7iCmW/vS
rL12GbcAfn0CDQlo+Stkow7TBrSigoKpEsHJdAzF36HxudYvv62cVoH1XY5+XY2GrAP5mt0ETo7
oxTTQ==
X-Google-Smtp-Source: AGHT+IHDqJJQmpOJp0WvGWU3yq3h5opBCiUBX2qvxFfQ6P9sn+RjMb2+uISHm+91HX8tVAbQEI+sXcsW2tfyBytazFg=
X-Received: by 2002:a17:90b:384e:b0:311:abba:53d2 with SMTP id
98e67ed59e1d1-312415265c4mr9169243a91.17.1748660265261; Fri, 30 May 2025
19:57:45 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530123129.31505-2-saivishnu725@xxxxxxxxx>
<DA9QL5A8747E.17QE50WBD6JOT@xxxxxxxxxx> <CANiq72npoVzz01syorhUcED=tcs9FJf8bFHthFrUQ-bE-AXJ8Q@xxxxxxxxxxxxxx>
In-Reply-To: <CANiq72npoVzz01syorhUcED=tcs9FJf8bFHthFrUQ-bE-AXJ8Q@xxxxxxxxxxxxxx>
From: Sai Vishnu <saivishnu725@xxxxxxxxx>
Date: Sat, 31 May 2025 08:27:33 +0530
X-Gm-Features: AX0GCFthIL7b3VrzhAlECu_BEtO2Hip9aGMKG2gQG9MZ8xMd-0_9euJIXKb0ikQ
Message-ID: <CAFttn54qYu3ajcBPWWnhjAS-6pQ8Ox3ujbTF6D=Q_BOMkTLq6g@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] rust: doc: Clean up formatting in io.rs
To: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Cc: Benno Lossin <lossin@xxxxxxxxxx>, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, ojeda@xxxxxxxxxx, alex.gaynor@xxxxxxxxx,
boqun.feng@xxxxxxxxx, gary@xxxxxxxxxxx, bjorn3_gh@xxxxxxxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
dakr@xxxxxxxxxx, gregkh@xxxxxxxxxxxxxxxxxxx, daniel.almeida@xxxxxxxxxxxxx,
me@xxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 1:09=E2=80=AFAM Miguel Ojeda
<miguel.ojeda.sandonis@xxxxxxxxx> wrote:
>
> We should also probably add "region" there, after "memory", or
> similar, especially if we remove the second part.

Thanks for the feedback! I=E2=80=99ve decided to update the comment to just=
:

/// IO-mapped memory

I=E2=80=99m new to kernel development. Should I just share the updated patc=
h
here or send a v2 that refers to this one? Thanks!


Return-Path: <linux-kernel+bounces-668926-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A7A0741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:07:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3E275A23D31
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:07:25 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8225C12FF69;
Sat, 31 May 2025 03:07:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="SAwzr5ZL"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])
(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 A30E86EB79
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:07:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748660860; cv=none; b=HPlLLwkeolKQjCSIqEkVVfzjLVHDxSuQ+Luu5qjXCJOg+7Ma07Drns99RZqe3hihQdu5pXBP7493pVnj6M4l0l0M4pYim64wMgXd4jmiHQS6gOlc+K5AnvALnPtLx3Hz+t71qiqI8WS3Fsc5WQdmNf5ngiAkSWIRddLsjZPZCd8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748660860; c=relaxed/simple;
bh=Pa7QASLrlHanWCuLBWQc+fuuQ+WlkS5nnlAKVp+CeJQ=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=Er8Tqjk7apDBFNuaInoNpR6JGz27F8j5bqWHkWYJVvBGjGXCMrWw2+b5XG08BvCirUjFQyLVM1MVo/ed8JQqnCuVps1PhcfSD+6KHPnwJfgy+2JjUX4PRYB0yVtDkB2VPU5VJlfI6dbpawM482wHsjyGIcw901WbMUXeBVHQ7eM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=SAwzr5ZL; arc=none smtp.client-ip=170.10.129.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748660857;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=kdGqR+lbsdF+ZAaQYj0xRCvZi4FVtrfoM9MTXbgsC4M=;
b=SAwzr5ZLNCaPcpORJJI/waeoZwDOswOh9/aFB5SO6JFnt0suYmh39Txl4AYEwz4dRdv1cF
g4jhYc9ibUZsfgOVEb0bSSqyp10snBtHeoqAntQbL6V63Xwqky8301eAxrjTw5XyDsUEA0
YmYYnnDQY1EKe2U4UOxs72TpMMptMrQ=
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
(ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-153-AHJaUM3uMTyH1NJ00ykJ1w-1; Fri,
30 May 2025 23:07:34 -0400
X-MC-Unique: AHJaUM3uMTyH1NJ00ykJ1w-1
X-Mimecast-MFC-AGG-ID: AHJaUM3uMTyH1NJ00ykJ1w_1748660853
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 0E9AC1956086;
Sat, 31 May 2025 03:07:32 +0000 (UTC)
Received: from laptop.redhat.com (unknown [10.22.88.10])
by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1DA701954191;
Sat, 31 May 2025 03:07:29 +0000 (UTC)
From: Charles Mirabile <cmirabil@xxxxxxxxxx>
To: cmirabil@xxxxxxxxxx
Cc: alex@xxxxxxxx,
aou@xxxxxxxxxxxxxxxxx,
charlie@xxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
linux-riscv@xxxxxxxxxxxxxxxxxxx,
palmer@xxxxxxxxxxx,
paul.walmsley@xxxxxxxxxx
Subject: Re: [PATCH v1 1/1] riscv: fix runtime constant support for nommu kernels
Date: Fri, 30 May 2025 23:07:25 -0400
Message-ID: <20250531030725.798945-1-cmirabil@xxxxxxxxxx>
In-Reply-To: <CABe3_aF0U5ej6ctQ0TQzecZ+ayaRSzJPTv5zf6kcD9U95rQXxw@xxxxxxxxxxxxxx>
References: <CABe3_aF0U5ej6ctQ0TQzecZ+ayaRSzJPTv5zf6kcD9U95rQXxw@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Charlie Jenkins <charlie@xxxxxxxxxxxx>

To be clear, I am suggesting that the following patch to just rip out all
of the if else stuff would also fix this bug, but maybe the perf gains of
potentially inserting nops is worth it.

---
arch/riscv/include/asm/runtime-const.h | 33 ++++++--------------------
1 file changed, 7 insertions(+), 26 deletions(-)

diff --git a/arch/riscv/include/asm/runtime-const.h b/arch/riscv/include/asm/runtime-const.h
index 451fd76b8811..da47253a89a9 100644
--- a/arch/riscv/include/asm/runtime-const.h
+++ b/arch/riscv/include/asm/runtime-const.h
@@ -179,41 +179,22 @@ static inline void __runtime_fixup_caches(void *where, unsigned int insns)
static inline void __runtime_fixup_32(__le16 *lui_parcel, __le16 *addi_parcel, unsigned int val)
{
unsigned int lower_immediate, upper_immediate;
- u32 lui_insn, addi_insn, addi_insn_mask;
+ u32 lui_insn, addi_insn;
__le32 lui_res, addi_res;

- /* Mask out upper 12 bit of addi */
- addi_insn_mask = 0x000fffff;
-
lui_insn = (u32)le16_to_cpu(lui_parcel[0]) | (u32)le16_to_cpu(lui_parcel[1]) << 16;
addi_insn = (u32)le16_to_cpu(addi_parcel[0]) | (u32)le16_to_cpu(addi_parcel[1]) << 16;

lower_immediate = sign_extend32(val, 11);
upper_immediate = (val - lower_immediate);

- if (upper_immediate & 0xfffff000) {
- /* replace upper 20 bits of lui with upper immediate */
- lui_insn &= 0x00000fff;
- lui_insn |= upper_immediate & 0xfffff000;
- } else {
- /* replace lui with nop if immediate is small enough to fit in addi */
- lui_insn = RISCV_INSN_NOP4;
- /*
- * lui is being skipped, so do a load instead of an add. A load
- * is performed by adding with the x0 register. Setting rs to
- * zero with the following mask will accomplish this goal.
- */
- addi_insn_mask &= 0x07fff;
- }
+ /* replace upper 20 bits of lui with upper immediate */
+ lui_insn &= 0x00000fff;
+ lui_insn |= upper_immediate & 0xfffff000;

- if (lower_immediate & 0x00000fff) {
- /* replace upper 12 bits of addi with lower 12 bits of val */
- addi_insn &= addi_insn_mask;
- addi_insn |= (lower_immediate & 0x00000fff) << 20;
- } else {
- /* replace addi with nop if lower_immediate is empty */
- addi_insn = RISCV_INSN_NOP4;
- }
+ /* replace upper 12 bits of addi with lower 12 bits of val */
+ addi_insn &= 0x000fffff;
+ addi_insn |= (lower_immediate & 0x00000fff) << 20;

addi_res = cpu_to_le32(addi_insn);
lui_res = cpu_to_le32(lui_insn);
--
2.49.0



Return-Path: <linux-kernel+bounces-668927-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 26A0241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:10:11 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 20CA7A24104
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:09:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B9EDD149C6F;
Sat, 31 May 2025 03:09:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ljvns2tY"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E34FD1EB39;
Sat, 31 May 2025 03:09:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748660997; cv=none; b=OAi17aS5QeBn7mLcJdGX7doR0mVOFx26qqLY87/QAaFAHuPN0kSZPfwUUSOq5sFkzuLFNdYgufmvbQKcz0MEt2OGDN2BD2e/ETFUYkg1y/A4LKbttmNrCgvhJ8hqGF/p47UB3DZg+HkwXp4ctKmu4cdPXX3ndfZ0+Fc5OHhFdzM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748660997; c=relaxed/simple;
bh=z8gZ+q37IvEpWDej+h76Rujah+rzvK1Yk/0ORMQ4eOI=;
h=Content-Type:MIME-Version:Subject:From:Message-Id:Date:References:
In-Reply-To:To:Cc; b=We+3c6sGCboTRz0dV8/d3jy4wWBlWnQ+iqq0vLqJN7qUtOyynU79WwYcadJMimyT616b7MXQHbrsbBP4Q8rZP+P7DboCyJRKJ2r6o2xb+lmkQzqWGw03o06Zsg3Ohh+sLu9Uuek2/MqHpRt00NeCquFco2Uiq5bnwUo3xjjAfj8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ljvns2tY; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6AEB3C4CEEB;
Sat, 31 May 2025 03:09:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748660996;
bh=z8gZ+q37IvEpWDej+h76Rujah+rzvK1Yk/0ORMQ4eOI=;
h=Subject:From:Date:References:In-Reply-To:To:Cc:From;
b=Ljvns2tYEp7FnoH02Ay/quaAkbUmtUORD8q6ntDbnCcVbxkuXij4gw9qL0zGbamsv
QiWkhB6B4o6lgQZ3G/gfpDB93wU7Rtm9uGC2RZC+CPWUU3Dr+bhjL3kVirw1ZGnruI
sa9vS29R97ogEWJfMtmbYExZx93Darp4ZA/M/UQIsbLiw35tq4j8PWMhfaIxtwEFDh
b5mZ4yUX/aWzsJe1v8/13iXZFP4wFBnAcj1Pwz6dOlth5izzEgZ0EJV8EX3lbaDoqd
ZiCznJW7AN+Oyry99ws/awerk1rTV9GSUACAAw4CxH2ryUS0hSWh1Yecahpmjtrp/A
FXIlhzfH3zJ5Q==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id EB0A239F1DF3;
Sat, 31 May 2025 03:10:30 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: Re: [PATCH net,v3] hv_netvsc: fix potential deadlock in
netvsc_vf_setxdp()
From: patchwork-bot+netdevbpf@xxxxxxxxxx
Message-Id:
<174866102976.15083.16967733452112171542.git-patchwork-notify@xxxxxxxxxx>
Date: Sat, 31 May 2025 03:10:29 +0000
References: <1748513910-23963-1-git-send-email-ssengar@xxxxxxxxxxxxxxxxxxx>
In-Reply-To: <1748513910-23963-1-git-send-email-ssengar@xxxxxxxxxxxxxxxxxxx>
To: Saurabh Sengar <ssengar@xxxxxxxxxxxxxxxxxxx>
Cc: kys@xxxxxxxxxxxxx, haiyangz@xxxxxxxxxxxxx, wei.liu@xxxxxxxxxx,
decui@xxxxxxxxxxxxx, andrew+netdev@xxxxxxx, davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx, pabeni@xxxxxxxxxx, horms@xxxxxxxxxx, ast@xxxxxxxxxx,
daniel@xxxxxxxxxxxxx, hawk@xxxxxxxxxx, john.fastabend@xxxxxxxxx,
sdf@xxxxxxxxxxx, kuniyu@xxxxxxxxxx, ahmed.zaki@xxxxxxxxx,
aleksander.lobakin@xxxxxxxxx, linux-hyperv@xxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, bpf@xxxxxxxxxxxxxxx,
ssengar@xxxxxxxxxxxxx, stable@xxxxxxxxxxxxxxx
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello:

This patch was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@xxxxxxxxxx>:

On Thu, 29 May 2025 03:18:30 -0700 you wrote:
> The MANA driver's probe registers netdevice via the following call chain:
>
> mana_probe()
> register_netdev()
> register_netdevice()
>
> register_netdevice() calls notifier callback for netvsc driver,
> holding the netdev mutex via netdev_lock_ops().
>
> [...]

Here is the summary with links:
- [net,v3] hv_netvsc: fix potential deadlock in netvsc_vf_setxdp()
https://git.kernel.org/netdev/net/c/3ec523304976

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html




Return-Path: <linux-kernel+bounces-668928-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B161041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:37:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B4C9E4A23F7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:37:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E0E2625DCE3;
Sat, 31 May 2025 03:37:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MLrAyDZM"
Received: from mail-vk1-f172.google.com (mail-vk1-f172.google.com [209.85.221.172])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 008BF208AD;
Sat, 31 May 2025 03:37:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.172
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748662649; cv=none; b=nMNbHW2K45iPylP6lIUnCXqPT4kbhji7y3KXrMVMNRl4fqHV1w7xhuvHGjjiz9EqIjalydcCpZhzCbkRLqTXYIPFdvg9LQhbRFf5P+D0tQJwZnN+4JWg3njAMaL5Onw6Xn1jKi3kHz/JceU80xN8hGN8LwMqHFqOCuDZfqKTYpo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748662649; c=relaxed/simple;
bh=yvgPTNoeSf1yl5RBlyNmUFnzjhk++4jygyL/a9s/wiw=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=dpYRDRsOzSHb4x/gEwuIlJyJNzh1sy7eT0QJgp9Ydv6rMRDWCoMqzucx9H+XpLFzSU5sLAqLiGwSODwUH8xynO6a8LdQLcdtPZZ7bsMOWcMjrsVWFnJrCSiWCwxrEZ3Oq9HKyeCud4uA16b3AJG4N9GMgEsIyYW59bDxAIeqG5c=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MLrAyDZM; arc=none smtp.client-ip=209.85.221.172
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vk1-f172.google.com with SMTP id 71dfb90a1353d-525da75d902so834573e0c.3;
Fri, 30 May 2025 20:37:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748662645; x=1749267445; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=uGwZBMRFt6jbCLRVxUb7j9waKAG8jOd2Lwyhl2zPBAk=;
b=MLrAyDZMfD9BtkvmEKlk3bT/QsYLSoh14vs4S5sBl7YxnIVxbbMSkSZfxerW0jq/2O
KIaRts2xBDW4m+Ka7kI6xnLG6a02v3dOh9HkxxVUYLeWqpFQnZ22sItqAr5DqUwOqVST
TJ99XYNmHqQPe3M+5HDJPkIbMmZhyvSws3jLL2Zu96tL5MbEhEfcRJpazDmi1BHUbGT/
QvittnOSsXPtTZbjynSaVDWISLgTxClqNrFkDKWuemWzUOcDmkjXZgRZAErfCIZemPTN
PcndeVOkyAXPvLS5XZZ6Obq7VWu9SMNwc3TUCBmJnIBIJWHhukRhV6Bf6qQQchMIuC+0
kmuw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748662645; x=1749267445;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=uGwZBMRFt6jbCLRVxUb7j9waKAG8jOd2Lwyhl2zPBAk=;
b=tIE2gZeBthp4xEw1yoPsI1SFqoun8yIW0YoXvvoNrXsVTYXENgjlvZNZS6Y89xfS+L
zkpQl+SjzzjV99kRHRcttrkRgsld1+iADBOGXaLCo1tl3e58tSdoHADOt9eMFp4HT9uS
uvC7uNzi8H9pUusFhDZWbz8l0TTdTcB0GRp6OLVbVp7EGNf712HElRV9lySkmjuYOPGn
v0Nt08IxSsnUjzWuE/v/fn95jsR5I3ZhbjbveJU0XRr3dM4SnLvmeCl/WBzebw6zb760
3ESEYdJuDZNC3Cvjw8b9ZB4FjGGAUFdAk4j8HchoWV8Qx9qFbQR5fiRVfHsJ9dEDCQtd
g8Bw==
X-Forwarded-Encrypted: i=1; AJvYcCWyN1SFGN4Q2TzcjQVvjz3hfLiavcYNLBZjAT1igWAM+Y4hzJcJ7bXyQQ0Rv9CqzUe+yJS3MzbCPC49kEM=@vger.kernel.org, AJvYcCXsZCWqX2w2Zu6fjYXYcKCOrOzPveJr9cdX8EVe76ytdd+RVmFF0m4Z1uQ9io2OnH7UfBBDYbpW@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyH/iInFC+SIS2CxkbhXhIm9EfBtiEXMv6cXhJxIzyrjOq2kI/M
j2oZPFPerhkggjl1O54ZhKGg+XXbs9vbUqkozJRvDN720H4sAgkTo3O3Bhj3qxqhVGM52RurMRr
z/5/RbarSDK8aPgDZ4VMR5H13I/wAePA=
X-Gm-Gg: ASbGncv8X5HDe/AgIWSt8WSsGXuOb+N8qyfV6D4uGoMG9JKKxvyeE5QlKubK38kYWMq
G1K3EWt+oTdFA9flgNHT4XPlpm/uvXRrlHMURz51FEQqHa3BH8iIFkKuhvWJKQYAe7Nb3I0M2v2
xuetCrjEq40cJi06zPhBwOhdIgWMPWYcohnQ==
X-Google-Smtp-Source: AGHT+IHq1tb1kp0wioRxhcquhpJ4/PzMdUDaAUgOIsgaHJicmUM65/TwwdvJXoRdST01SoJh57N3rUaJX43EfrtmD0s=
X-Received: by 2002:a05:6122:3c93:b0:52a:ee1a:4249 with SMTP id
71dfb90a1353d-530810a4c4dmr5992647e0c.7.1748662645483; Fri, 30 May 2025
20:37:25 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
In-Reply-To: <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 15:37:14 +1200
X-Gm-Features: AX0GCFuSmuG3GMYnK0fqlEZH7Yq5qdzlPKHVTdmddHslftb2Tjj-Ax5NFqXl97I
Message-ID: <CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>
Cc: Kairui Song <kasong@xxxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidra@google.c=
om> wrote:
>
> On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wr=
ote:
> >
> > From: Kairui Song <kasong@xxxxxxxxxxx>
> >
> > On seeing a swap entry PTE, userfaultfd_move does a lockless swap cache
> > lookup, and try to move the found folio to the faulting vma when.
> > Currently, it relies on the PTE value check to ensure the moved folio
> > still belongs to the src swap entry, which turns out is not reliable.
> >
> > While working and reviewing the swap table series with Barry, following
> > existing race is observed and reproduced [1]:
> >
> > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > swap entry PTE holding swap entry S1, and S1 isn't in the swap cache.)
> >
> > CPU1 CPU2
> > userfaultfd_move
> > move_pages_pte()
> > entry =3D pte_to_swp_entry(orig_src_pte);
> > // Here it got entry =3D S1
> > ... < Somehow interrupted> ...
> > <swapin src_pte, alloc and use folio=
A>
> > // folio A is just a new allocated f=
olio
> > // and get installed into src_pte
> > <frees swap entry S1>
> > // src_pte now points to folio A, S1
> > // has swap count =3D=3D 0, it can b=
e freed
> > // by folio_swap_swap or swap
> > // allocator's reclaim.
> > <try to swap out another folio B>
> > // folio B is a folio in another VMA=
.
> > <put folio B to swap cache using S1 =
>
> > // S1 is freed, folio B could use it
> > // for swap out with no problem.
> > ...
> > folio =3D filemap_get_folio(S1)
> > // Got folio B here !!!
> > ... < Somehow interrupted again> ...
> > <swapin folio B and free S1>
> > // Now S1 is free to be used again.
> > <swapout src_pte & folio A using S1>
> > // Now src_pte is a swap entry pte
> > // holding S1 again.
> > folio_trylock(folio)
> > move_swap_pte
> > double_pt_lock
> > is_pte_pages_stable
> > // Check passed because src_pte =3D=3D S1
> > folio_move_anon_rmap(...)
> > // Moved invalid folio B here !!!
> >
> > The race window is very short and requires multiple collisions of
> > multiple rare events, so it's very unlikely to happen, but with a
> > deliberately constructed reproducer and increased time window, it can b=
e
> > reproduced [1].
>
> Thanks for catching and fixing this. Just to clarify a few things
> about your reproducer:
> 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> MAP_PRIVATE will work as well?
> 2. You mentioned that the 'current dir is on a block device'. Are you
> indicating that if we are using zram for swap then it doesn't
> reproduce?
>
> >
> > It's also possible that folio (A) is swapped in, and swapped out again
> > after the filemap_get_folio lookup, in such case folio (A) may stay in
> > swap cache so it needs to be moved too. In this case we should also try
> > again so kernel won't miss a folio move.
> >
> > Fix this by checking if the folio is the valid swap cache folio after
> > acquiring the folio lock, and checking the swap cache again after
> > acquiring the src_pte lock.
> >
> > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so far
> > we don't need to worry about that since folios only might get exposed t=
o
> > swap cache in the swap out path, and it's covered in this patch too by
> > checking the swap cache again after acquiring src_pte lock.
> >
> > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCzi+=
EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > ---
> > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > 1 file changed, 26 insertions(+)
> >
> > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > index bc473ad21202..a1564d205dfb 100644
> > --- a/mm/userfaultfd.c
> > +++ b/mm/userfaultfd.c
> > @@ -15,6 +15,7 @@
> > #include <linux/mmu_notifier.h>
> > #include <linux/hugetlb.h>
> > #include <linux/shmem_fs.h>
> > +#include <linux/delay.h>
> I guess you mistakenly left it from your reproducer code :)
> > #include <asm/tlbflush.h>
> > #include <asm/tlb.h>
> > #include "internal.h"
> > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, st=
ruct vm_area_struct *dst_vma,
> > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > struct folio *src_folio)
> > {
> > + swp_entry_t entry;
> > +
> > double_pt_lock(dst_ptl, src_ptl);
> >
> > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig_s=
rc_pte,
> > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm, s=
truct vm_area_struct *dst_vma,
> > if (src_folio) {
> > folio_move_anon_rmap(src_folio, dst_vma);
> > src_folio->index =3D linear_page_index(dst_vma, dst_add=
r);
> > + } else {
> > + /*
> > + * Check again after acquiring the src_pte lock. Or we =
might
> > + * miss a new loaded swap cache folio.
> > + */
> > + entry =3D pte_to_swp_entry(orig_src_pte);
> > + src_folio =3D filemap_get_folio(swap_address_space(entr=
y),
> > + swap_cache_index(entry));
>
> Given the non-trivial overhead of filemap_get_folio(), do you think it
> will work if filemap_get_filio() was only once after locking src_ptl?
> Please correct me if my assumption about the overhead is wrong.

not quite sure as we have a folio_lock(src_folio) before move_swap_pte().
can we safely folio_move_anon_rmap + src_folio->index while not holding
folio lock?

>
> > + if (!IS_ERR_OR_NULL(src_folio)) {
> > + double_pt_unlock(dst_ptl, src_ptl);
> > + folio_put(src_folio);
> > + return -EAGAIN;
> > + }
> > }
> >
> > orig_src_pte =3D ptep_get_and_clear(mm, src_addr, src_pte);
> > @@ -1409,6 +1425,16 @@ static int move_pages_pte(struct mm_struct *mm, =
pmd_t *dst_pmd, pmd_t *src_pmd,
> > folio_lock(src_folio);
> > goto retry;
> > }
> > + /*
> > + * Check if the folio still belongs to the targ=
et swap entry after
> > + * acquiring the lock. Folio can be freed in th=
e swap cache while
> > + * not locked.
> > + */
> > + if (unlikely(!folio_test_swapcache(folio) ||
> > + entry.val !=3D folio->swap.val)) {
> > + err =3D -EAGAIN;
> > + goto out;
> > + }
>
> To avoid further increasing move_pages_pte() size, I recommend moving
> the entire 'pte not present' case into move_swap_pte(), and maybe
> returning some positive integer (or something more appropriate) to
> handle the retry case. And then in move_swap_pte(), as suggested
> above, you can do filemap_get_folio only once after locking ptl.
>
> I think this will fix the bug as well as improve the code's organization.
>
> > }
> > err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr, =
dst_pte, src_pte,
> > orig_dst_pte, orig_src_pte, dst_pmd, ds=
t_pmdval,
> > --
> > 2.49.0
> >

Thanks
Barry


Return-Path: <linux-kernel+bounces-668929-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0E3AF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:49:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 1729EA21491
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:48:50 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8744228A1EB;
Sat, 31 May 2025 03:49:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="myyq3npL"
Received: from mail-qv1-f42.google.com (mail-qv1-f42.google.com [209.85.219.42])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 35B75944F;
Sat, 31 May 2025 03:49:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.42
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748663343; cv=none; b=DsfOGRVFliRB/EfdQOouVriQqkQw6e8pBbfZ1HZneC61F100yFuxxCBNXBmYKsu1UhXeDse/N0Yl08v8MItSjDue9TuravdQiBFlIyTZ8ZwWSgkOnRZVx9ojLSVXPCPqztcPOFmrRfi6iv/gtaYbbQM5p0mAXgEieKLg4GIaI0M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748663343; c=relaxed/simple;
bh=bXKgutgBBgDmFxEdbyOlpIc/AywSS2pEfOu4ZPuyFZA=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=W4xXJcXCQ5J4izcS0JyzshjoEMRZ0Mwdf5Qnvdo8BibvVMywvKlSs4BvVTCrJI3lT8kzQXMYKWhUVT0KHPtxBE8xcDOx4YaHWsG1STILH3i+cj6+p5ffu1SyXOsSKWWMFcQlF/hxhD8hxvp9DyChbzdXd/rTq80HvqBm0tumBJw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=myyq3npL; arc=none smtp.client-ip=209.85.219.42
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-qv1-f42.google.com with SMTP id 6a1803df08f44-6facc3b9559so29743866d6.0;
Fri, 30 May 2025 20:49:01 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748663341; x=1749268141; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=76qLuztV60iQGLn5sp4b2X4+KO3vVQw6ocNKjB2Ik0M=;
b=myyq3npLCEWvzgwEX42bofM2etn5fhSEtu47s8hpUKO/04yT9K4QVFdL5Jm6cKMSp+
GBnj0k74bPilGroang6oiuiHmJ/2lDl1fCVvYKDBm6uNj89OD4qStSKjEo35zgQdidjJ
hXwQwwkTeeEQlBkKSNmlTXJM3Y6HNUxuHyWQczFncXIrZvkGLZptOJHMyhw2bC3NhLg1
9KruaiZ6soeKkFwaN+FBnfKYLTsVEpj03mKlKdjDwWlwzSZZ+0GH9XF27dOEfq/9fuSK
PxsjflKyIFBZRpSOsNkxg7VJHHldFkvJi5S6xJhRsuNfjZ0fofmxXtYST9TcmIVNf42u
X0/g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748663341; x=1749268141;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=76qLuztV60iQGLn5sp4b2X4+KO3vVQw6ocNKjB2Ik0M=;
b=gk9/vyzZwb9vKbnb4E2o0+F64IquSRoR25Bmfcl5LfDaPjSvmWpQiywOuhdS13nG/q
fUO5GCRIMu1G44WRznc5o0TcBBX/f5rns9gLdoUtb77wDXafeEKDON8NWwP0csZgf4/s
RTZyUUgI+EEzAUhSMGwsNSO6ZDrqPQeqr2niubTxTP+M1aef/f6lC9uqFYD0j7lFG1NT
/j+cfdlDGES6nuUx3rwZT4GyBrzQQz5LzAHO4sF0vJIro0aCyuPB+zFbtOB7vT2vf2jo
QPF5OXoELE66rxD54JdaCr1QbvpbHi3rVEZy8xPdQyezzkYNTjHjscD1LjhEJHgsjHfa
ehtQ==
X-Forwarded-Encrypted: i=1; AJvYcCUWLgtEco9OuGa9JLhSApyC+H/F9EYhRoWhAr7mLHr7hG7rk9Jto6BtJTq8GmGMz7Zid9X0+qM/RKQ=@vger.kernel.org, AJvYcCUdanpIqt4qntuQLckGT6NcA5LC3kHvKVXn1WcWBeFoTi3jPJ2rX410PhKjsOBbJQjTKtKqwyMmK9TYmDto@xxxxxxxxxxxxxxx, AJvYcCW6VpFTlOyjBvBWLVTUTc6OfcGvzvqsHyGG87PtaF7kaMxRib/NgxGxnxrqxOqTBDVeNU7DTvbZeu0SI56An44h1J6LRA==@vger.kernel.org
X-Gm-Message-State: AOJu0YzPh0rP78tCwt7ZVVWpVxwu+s+R1+I9srTg2W+zN8MC9qkD3PfM
aIwnTbwzb5OlWKzkIwggHQyXyhkVyXOow/ga34n4nys1kTHx1g8xhHw8i69kjKeHZvX8Agenl8v
Bqs/62maajtwcqhIS5GPwnNh597++XPQ=
X-Gm-Gg: ASbGncuC+WRRYYbW68+vyhZjDFrGp6IEZ/RY48a0TV2VMiz5Oy0FdZDnHM/NHrOmt4Q
YZCP6G57/+vDmG8DhQo1Xk8rrw/2+r4Eb4wmfyD1RcS13P3j6W4fyuSY53Zpe5xSIVQBhasfdAR
EVcgA1wPDJRfNfuifeK5cpkF6fET7QtLJuXssePO4SxYY3
X-Google-Smtp-Source: AGHT+IHX2JVirrixh78so9Fn86OIa5AbSRfPoDhKRveiPy+oOBGtB1HhyqEnfb3cMFWL4dRiIoIYKcR38dCrk6pr69o=
X-Received: by 2002:a05:6214:509d:b0:6fa:c18e:b8d7 with SMTP id
6a1803df08f44-6fad1952c9dmr75779106d6.25.1748663340985; Fri, 30 May 2025
20:49:00 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250522015350.471070-1-derekjohn.clark@xxxxxxxxx>
<2972c4c6-7080-e058-ec39-b8c1dc603f7a@xxxxxxxxxxxxxxx> <2c7ffaa6-e639-e215-42d0-78a2b185ad45@xxxxxxxxxxxxxxx>
In-Reply-To: <2c7ffaa6-e639-e215-42d0-78a2b185ad45@xxxxxxxxxxxxxxx>
From: Derek John Clark <derekjohn.clark@xxxxxxxxx>
Date: Fri, 30 May 2025 20:48:50 -0700
X-Gm-Features: AX0GCFvYSFg8JfeoEW8-4Z12btdwYqpfGj4nyKSFF7YoM6Desoy-OcsA4bzYXVo
Message-ID: <CAFqHKTnp2zMTAfdYBpxestSErpsgwSf_TmkLjjU0W5HOFiC9bA@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v11 0/6] platform/x86: Add Lenovo WMI Gaming Series Drivers
To: =?UTF-8?Q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Cc: Hans de Goede <hdegoede@xxxxxxxxxx>, Armin Wolf <W_Armin@xxxxxx>,
Jonathan Corbet <corbet@xxxxxxx>, Mario Limonciello <superm1@xxxxxxxxxx>, Luke Jones <luke@xxxxxxxxxx>,
Xino Ni <nijs1@xxxxxxxxxx>, Zhixin Zhang <zhangzx36@xxxxxxxxxx>, Mia Shao <shaohz1@xxxxxxxxxx>,
Mark Pearson <mpearson-lenovo@xxxxxxxxx>,
"Pierre-Loup A . Griffais" <pgriffais@xxxxxxxxxxxxxxxxx>, "Cody T . -H . Chiu" <codyit@xxxxxxxxx>,
John Martens <johnfanv2@xxxxxxxxx>, Kurt Borja <kuurtb@xxxxxxxxx>,
platform-driver-x86@xxxxxxxxxxxxxxx, linux-doc@xxxxxxxxxxxxxxx,
LKML <linux-kernel@xxxxxxxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sun, May 25, 2025 at 2:42=E2=80=AFPM Ilpo J=C3=A4rvinen
<ilpo.jarvinen@xxxxxxxxxxxxxxx> wrote:
>
> On Mon, 26 May 2025, Ilpo J=C3=A4rvinen wrote:
>
> > On Wed, 21 May 2025, Derek J. Clark wrote:
> >
> > > Adds support for the Lenovo "Gaming Series" of laptop hardware that u=
se
> > > WMI interfaces that control various power settings. There are multipl=
e WMI
> > > interfaces that work in concert to provide getting and setting values=
as
> > > well as validation of input. Currently only the "Gamezone", "Other
> > > Mode", and "LENOVO_CAPABILITY_DATA_01" interfaces are implemented, bu=
t
> > > I attempted to structure the driver so that adding the "Custom Mode",
> > > "Lighting", and other data block interfaces would be trivial in later
> > > patches.
> > >
> > > This driver attempts to standardize the exposed sysfs by mirroring th=
e
> > > asus-armoury driver currently under review. As such, a lot of
> > > inspiration has been drawn from that driver.
> > > https://lore.kernel.org/platform-driver-x86/20250319065827.53478-1-lu=
ke@xxxxxxxxxx/#t
> > >
> > > The drivers have been tested by me on the Lenovo Legion Go and Legion=
Go
> > > S.
> > >
> > > Suggested-by: Mario Limonciello <superm1@xxxxxxxxxx>
> > > Reviewed-by: Armin Wolf <W_Armin@xxxxxx>
> > > Signed-off-by: Derek J. Clark <derekjohn.clark@xxxxxxxxx>
> > > ---
> > > v11:
> > > - Fix formmating issues.
> >
> > Thanks for the update, I've applied this now into the review-ilpo-next
> > branch. BUT, this is very late in the cycle now and if there's a build
> > issue (or LKP doesn't build test it in reasonable time), I'll have to d=
rop
> > this series and postpone it into the next cycle as I don't want to dela=
y
> > the main PR to Linus too long.
> >
> > But lets hope for the best, I think some depends on issues were fixed
> > earlier (IIRC), so hopefully it works good enough now. :-)
>
> Hmpf, these give me a few new warnings related to this series:
>
> make W=3D1 drivers/platform/x86/
> make C=3D2 drivers/platform/x86/

When I use scoped_guard the warnings go away. It seems to be a
limitation of sparse in that its not correctly identifying the guard
will be unlocked on the return perhaps? In any case, if you're okay
with a scoped guard here (matches both other invocations) I'll send it
up.

I also took care of the warnings for W=3D1.

> ...I really don't know why sparse complains about the lock context
> imbalance though, those functions use guard().
>
> There's also a copy-paste error:
>
> * lwmi_gz_profile_get_get() - Get the current platform profile.
>
> ..._get_get -> ..._set
> Get -> Set
>
>
>
> --
> i.


Return-Path: <linux-kernel+bounces-668930-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BDB2141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:03:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id ADB989E7DA6
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:03:35 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D5BBC28A1F0;
Sat, 31 May 2025 04:03:50 +0000 (UTC)
Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238])
(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 D126B1411DE;
Sat, 31 May 2025 04:03:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748664230; cv=fail; b=c1laiyB3oZVu1xT3gu6JjnODSFhTC17VEWhCmwzoyjTqUDbgKSzutxx9GkFEHweE+0OtEypkbXqywOXtvuOTRj0Jo9ELr+nKQKY+4+JJsRBBNNSxYlWvH8D2v2uDSN29HgtHgzffRIbMdrvr4eFiXtU4pVgU3AVfHx1u9bY60VE=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748664230; c=relaxed/simple;
bh=n3NDQGvcW4Sr3pvVHK5HwltiI5F7+hTaMM7HfQWgP6g=;
h=From:To:Cc:Subject:Date:Message-Id:Content-Type:MIME-Version; b=iAE9ht9p7FmalFzSelembN0B621ErfxHq67pGJuVGOTzbuwH6HfejHMxGwJ6xPXb+AnNsH+8ne83IqijEZYlGRi9goe6YCQWQ24YEwOYsCyhADznDiFLY9aJHHk1G8Yt0SRGmdZyoWLlxAtU9gJ/aPkWIlKfO18g0NsjyWZwdq4=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; arc=fail smtp.client-ip=205.220.166.238
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com
Received: from pps.filterd (m0250809.ppops.net [127.0.0.1])
by mx0a-0064b401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V3wmJd009166;
Fri, 30 May 2025 21:03:00 -0700
Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12on2044.outbound.protection.outlook.com [40.107.237.44])
by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 46udmm70qk-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
Fri, 30 May 2025 21:03:00 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=v5BGL57UPzfrr2W3WdVQth7wN09dwurm0sjJhiIyhKM0l3qbjSG/URfsNy//jxKQtqYJqRg/i+nyg6ATvLUDJ4hPdgbGhEKu31kHej0TIBktcd6hZDpco5z09SmzgX/hdaqf3QMh22dw/9tFcb21BUMznf1fviAuFkoYqThjKhGux+bPcUvSvHI8/xAiyivVpEKCCLdICCV/9n07tc65DoaAaDtJ6IHv82kFpN2Ss0J7HWX1kN27w8vJMOry+VimV36L1nIGN2xN3KGk2NGaiYbSz5mtbZBeH3Kb82xPoKxTwqCeBVUoTHzU4VIq+luamP4EYE9NJZFz+Gm8CoJkNw==
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=8YA/qhqtUXSORRCARfmPN4FgPW0oxKtQ7Lvi7bo7D9I=;
b=bmgqdDFqwTqvR4hy9IOr8Ei0tne1SQsOz6KE3Ygr9QVippokPH4BaQgeX4LMHL6Ij+lTFp1FvYZKOWEWyEVuzAtfQrfamdb65wliZd5rlqxP2rkH4iZ9IZbEZ5YM6uS9g/7TjAL6ZIUBOMLAieWYimvfsnRHSj9/JFk7PTkdxYvuyz+KBATK4u0QTbg/NKJAcshca4ID5QZA5yU1FiMyPd2ChCpPav9CpOqWlsZBflgE5uYnPgZgj3+ZxfphUxNC9aia2ghzrFrLTTQ3vwRKNKGa3dBf56izPu4IUOV8n986+/4wLCQQ80HqXzaK/RWmKmuctE7s8UwJ/K3lOB3nGQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=windriver.com; dmarc=pass action=none
header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none
Received: from DS0PR11MB8763.namprd11.prod.outlook.com (2603:10b6:8:1bb::12)
by PH0PR11MB7587.namprd11.prod.outlook.com (2603:10b6:510:26d::17) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sat, 31 May
2025 04:02:55 +0000
Received: from DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3]) by DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3%7]) with mapi id 15.20.8769.025; Sat, 31 May 2025
04:02:53 +0000
From: Meng Li <Meng.Li@xxxxxxxxxxxxx>
To: imx@xxxxxxxxxxxxxxx, linux-watchdog@xxxxxxxxxxxxxxx, festevam@xxxxxxxxx,
kernel@xxxxxxxxxxxxxx, s.hauer@xxxxxxxxxxxxxx, wim@xxxxxxxxxxxxxxxxxx,
linux@xxxxxxxxxxxx, shawnguo@xxxxxxxxxx, robh@xxxxxxxxxx,
conor+dt@xxxxxxxxxx, Frank.Li@xxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, meng.li@xxxxxxxxxxxxx
Subject: [v2 PATCH 0/3] create patches for nxp-ls1046a platform watchdog feature
Date: Sat, 31 May 2025 12:02:10 +0800
Message-Id: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
X-Mailer: git-send-email 2.34.1
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: TYCPR01CA0183.jpnprd01.prod.outlook.com
(2603:1096:400:2b0::19) To DS0PR11MB8763.namprd11.prod.outlook.com
(2603:10b6:8:1bb::12)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS0PR11MB8763:EE_|PH0PR11MB7587:EE_
X-MS-Office365-Filtering-Correlation-Id: 6919c1db-9181-4872-e2bc-08dd9ff803c6
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|7416014|52116014|376014|366016|921020|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?qCjZ6SK1LWpINy3i+Zzx18mDCEAhNprdqRozEsm93AjjN/myp6GIaKOOHVCJ?=
=?us-ascii?Q?CQgs54aUPciXRSoKva0aKt3VA7E9gczSR8lojKgwIrK/F4nu4x/RNrNz9dxd?=
=?us-ascii?Q?cBBDKVHUM+sTAqmUgxDDWpFWU03N+0yj4gclXRD98olAC+VfRHydmfHBagwZ?=
=?us-ascii?Q?hCIFPTQunzD2B7lije8oHWAF6l7nyFwAmiVQ9cVFO7TJgVBt5sz5LbsPFfsh?=
=?us-ascii?Q?bEL13CbNrejbPtWPGsxoqFHi8BriJRHbNdFBoNBiys0PrBSN/IwOvm4L1KA7?=
=?us-ascii?Q?Wv+xRiRMjaTigsW8ARfI+75UHDFYVsd96VdOOUmnuHucn/ITI0O+l73Auakt?=
=?us-ascii?Q?pz4NUFS6Xk11QB5K9dPB41Qlw5W+XCihG+pb4lJ3HBrTG3FUYSs+YUosHIze?=
=?us-ascii?Q?GFyONZ+X8ZQwOQDXnu5b2bBkB6coFeThBgFhOxPa1NlGsv/6uON+QRdWy2wi?=
=?us-ascii?Q?u6aR5kp+WVT4nX8tJw3DrYoUcG9TCh966hwxMALy/4xiViMnQWwu1sZqtbk4?=
=?us-ascii?Q?oMB4PqLPojLm/BCdkepMt4NeQfCSttJejcL9XcGYECi1wT638+fZUHsyWqvi?=
=?us-ascii?Q?BMEuRhzhwfskIDIxlNXN7cYxGjz6SC0woMaEx0stVFIwIEZ2KmTWVi5ScRzo?=
=?us-ascii?Q?dVpkiaoaCWfYFq8zp55gmoriQVgEHVjgmqCZApZVH4EFYTP0kNL7T1qGkgyx?=
=?us-ascii?Q?EnT4emYsuRpCPlLU82qG0K8HAv5LYoUfMxaPf6I8pu8M6peMPfxNW1v1Ndiu?=
=?us-ascii?Q?5uky+hRBbNL+KHxbeCQG8mpjoIrTow1LemSqqfJn1iS91xlPhMD3njcY+irp?=
=?us-ascii?Q?32pqAmK4rwC3f+xeKSFlpA8cPJvmZGhuA8xYqjauaN15n3CEmzE93tvmqOhF?=
=?us-ascii?Q?cRnCYOefPHJA/t/Qfnt2lWbI9BVTmOnyHqmtDhqOA1iotE8AzuNefK6HJj0R?=
=?us-ascii?Q?5naqr+hBJjQFi80qq32hddoXkkKXL+HNFF8vF2PjEOvZwRSlG/5XqTwtZ5WI?=
=?us-ascii?Q?s080NRVuGKcd8uLRZ2/OcHAJo+XcRi/X8GOa29zk6vrYm2SXm3TLvBKuCj0b?=
=?us-ascii?Q?nHJLe3qnFRWgtOo+Au6OXsK3XmlXt/sdPx6spRPLx+XhSATbUjhkLDlYsoJA?=
=?us-ascii?Q?dMfTGXH/epYX6YOcn+qlu1E8JnWVzh75Yw5qq9FPWn123LZbQbv96MY/lEt7?=
=?us-ascii?Q?4uUMwlUhQAaQIChJxtSgWpZUmQV85PWolptseibev8J416Sl4djNUHrAAZSe?=
=?us-ascii?Q?oJQEc3MwVOjTL48UQhR7Id3fx4SS5B4auAMahDlXJqy7mF7s2/Dbz/ey5dmj?=
=?us-ascii?Q?jCjURnxcRGrzx79Rk4gZhy3YYHxooJy0NC7dshzISeHY0BYPOu8hToI2ydEI?=
=?us-ascii?Q?cXZv2SdIvRNCxbwhYjRDb2BejFTuIPStrHudaCxjTFhJ989SJF7s4TRDBYdh?=
=?us-ascii?Q?P+V9nS1ZE1BaXYJq8i78C8smi/VOH4Pb8/HJaUu5uVtnEiONW7BJLkIOeZ7g?=
=?us-ascii?Q?juESdtq+ekOu+7g=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8763.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(52116014)(376014)(366016)(921020)(38350700014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?UICNLCDMVCmpoal9bUe75LurhdJ/45ozsQqDBguywOqV0SIGTilHk18YvSxH?=
=?us-ascii?Q?RDi39m4/05cOW02zTgtFDwbOMsrwH8c+Wj6GUQbbLWbS07Nfic6B/13qzE1T?=
=?us-ascii?Q?hJddgd3wqZWqSoixhVM/Z9n3UHNmSPaKdSZ4vyVV0HlNgyhTUfgmj5TzSjf5?=
=?us-ascii?Q?0bfPtBw9myFHbksDO6+9h5lkaaqWp3UbUMkKJSkKdnqG9hH8sYs7U0msh8Vd?=
=?us-ascii?Q?z2BO1AFW+RLyAcYd9CM8fwcYjwHWVRJ+9wNq+QPn7ycaHOsDLC4gFQ37aoeN?=
=?us-ascii?Q?yq+0SjiV8GIsmm9mEIONdpnm0Y5HA16JxkgMrio2Kc9TGUbYSN7E6KLvxnoE?=
=?us-ascii?Q?a377jmeV3RHyCGdhw704Fp+VVbR0OX5yGoOSs9bcb8J4V4aU6jxE5XHxI4e/?=
=?us-ascii?Q?Kto9iWyoUW3qawvFX/poqy8aMORX/9MMt7agXuF5Di79JXJaCaoLzrvxdw2O?=
=?us-ascii?Q?wDjtebBDHycx80ri27dS/9MF9TpxNHAZg3fAcf6gdLPqslfLVtrVgcZ+3w7j?=
=?us-ascii?Q?DnSkQDttN/t7eck7gUY+JmAMomJhmZpP5PoYm956Bje2cOHBtzP5yPivvWtH?=
=?us-ascii?Q?N/oss0P7n3O8jjQyneyUqdqpraNlQCdK5e81SE7vylXC1DpfeqqEadx+asNN?=
=?us-ascii?Q?Y6nUfCqv8nLPxg/pa64tzNjAoZMXtVvkM44bpiKS93accW+p6BR092akR644?=
=?us-ascii?Q?gPJ+ewCcAyiPS+bXzj7Sqjv6cYRwl5ctpDVQUm5db1RRHYZ1wCySzDY+9fR1?=
=?us-ascii?Q?rPSaEq/a6vrEPyOU+6u4RjdcsuyVKEvskgD/IDcGvsLF1D8AExbfPNfAJm0J?=
=?us-ascii?Q?E27H25sMdz8ZdbnNVxaCOMdaFF7QKFctgUh79BoRJziFgK7vBxQ3vAcboQva?=
=?us-ascii?Q?2jH2t0BKx1u+Tn5IQ2ZlUX+BjVyTAFlDin3Y4f5R+O5M5qL84Ssx95IHhMlV?=
=?us-ascii?Q?m8Ih93q3ZNFL6gtEiX2K/OstCg+bJZkHuk588/9wjaMNvXwb4scPTgk5mibw?=
=?us-ascii?Q?sCkARa8VbOLaANRyaH5IACOftPGFcslJRgx0pX0PaoAROhkYyQOXIbGizpaa?=
=?us-ascii?Q?TofXQsv8BiShFYwhN90Twry3XZVuV7lCIF+jpovfeF1SqjHH9wfWagrTA83U?=
=?us-ascii?Q?ygVSAB+ay3kiVhTaPLrUtffivKCLkvA4GD/FqBObVR6WMS8b4PCQfUNtjHiF?=
=?us-ascii?Q?r/l8XAFdgQekiJ7MGsCbwzMvc1sTdv5KbuPk6PFPjenSkURtNn9LtXVciZK4?=
=?us-ascii?Q?fFQAjk9H20cM6AjXTrhnny/PkGVBpOOthFWInWVuArxh4qe9a1FbBbl3inRl?=
=?us-ascii?Q?Kqwzzhs2SD/rJovgUYy/JxkCGKwkH53ILb4wVm9MbgFjZk6VTOxCA5/Oxmd5?=
=?us-ascii?Q?H+X6mJZ+6NIE6oYWOSWtcJmNjCO9ZoBSs+5fifS3HIxKdR10q3STRlD3qsKt?=
=?us-ascii?Q?CuTzWmEtU5VVEMSlImBBmvuzQMyvLfNQuwUHvt2+anePe4Qj42q9WmfKWYNI?=
=?us-ascii?Q?1znfFQymQpEFZ6XTEaRWl1t1xwtgVrCtP6YpSdAhJ3saBsT6K4kGpWc4GAha?=
=?us-ascii?Q?K2gi27zJYyK6EtSx0fXzgA/CVIV79sZvGJpCLSic?=
X-OriginatorOrg: windriver.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 6919c1db-9181-4872-e2bc-08dd9ff803c6
X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8763.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 04:02:53.0841
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: YSJSt6K5QLHov4THq5rzxb+suAAt6Nj9hBP73TkO+2i45Cma8SQe9ywwKfFV3I+vLPcIJAICGuNB2gGSLTFTLw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB7587
X-Authority-Analysis: v=2.4 cv=WpErMcfv c=1 sm=1 tr=0 ts=683a7f74 cx=c_pps a=I/sNV8c+47LP+h3jbQsb/Q==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19
a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=HMR1gXRALbDY60pjgc8A:9
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDAzMSBTYWx0ZWRfXxY9tkUp/cios 8Wy5aVGLmwR1uvpfPJ0GpnT8ZNoKMUQkHBJ7vrQSHfdNrrHg9pak3AiU0bUh/OPdkQuVdmAODeO MzkgJEwwN+4G5o/+8JbI8JTlIX8MJHpd47I/6ar4LzOW2ceOOCclgeoynIi/KMjt4MB0ZJrYMUj
/X9hsPP0dNwx2jD27PFjtmoiaN9ohJ/+toAOnyp2UVY3k9pgnAEZz112Nbjp5ktoLh1YTfDWEB8 2hLh1tkDrI2Eq6DCEOzpSUtjqvwPbKD5Oxk2p9OIsFCm2VgwMbec08iW4a/kQgZEHpORNXjcw5I s5XU2P2WEsetWaKiRjSQyluAn1rn5ccoOW4ALAW2WDxoJMjleXDdDNqRwFq7+ume7o8D6KCOawt
lwh6sHPeVvgLQmxR2UEViLh8L+Yo7hdTYgyzv1mTBfp8kV48IhozFzo2DQrd1HXvQEEULIuF
X-Proofpoint-ORIG-GUID: rU2rfHmIUxLM_pl-RnTiMNSPdNPbMl4G
X-Proofpoint-GUID: rU2rfHmIUxLM_pl-RnTiMNSPdNPbMl4G
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_02,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=771 clxscore=1011
mlxscore=0 bulkscore=0 malwarescore=0 phishscore=0 adultscore=0
impostorscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0
spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound
adjust=0 reason=mlx scancount=1 engine=8.21.0-2505160000
definitions=main-2505310031
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

v1:
- create patch 0001-arch-arm64-dts-add-big-endian-property-back-into-wat.patch

v2:
- improve the commit log of patch 0001
- add another 2 patches to fix below warning
arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dtb: watchdog@2ad0000(fsl,imx21-wdt): big-endian: False schema does not allow True


Meng Li (3):
arch: arm64: dts: add big-endian property back into watchdog node
arm64: dts: layerscape: add platform special compatible string for
watchdog
dt-bindings: watchdog: fsl-imx-wdt: enable 'big-endian' property for
NXP ls1046a platform

Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml | 2 ++
arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)

--
2.34.1



Return-Path: <linux-kernel+bounces-668931-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C46C441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:04:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E949B4E00CB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:04:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F10D828C020;
Sat, 31 May 2025 04:04:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="J1hwh6BZ"
Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com [209.85.217.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5028D28BAA1;
Sat, 31 May 2025 04:04:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.50
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748664278; cv=none; b=EAVXQ/WQqgLNCc0Hg2gl5BTO6PZDRpsMlbxPxZ9f9AzkmwkoJRK+tgb2/pANbwsrXfe8oB87yQ2Bs1uCHjq0vXAWZyXXtusmxXiO2KBrz11XUNUm1KOUWRZWBquxR0u3JqCEZqohW+YLnQD+cjRWuCbCef8outDdem5ccwLrFOY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748664278; c=relaxed/simple;
bh=YCeO0F+RUKzNa0Jf9Wd6Z3HXEOdDeIYhoeloLH7bkRs=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=CFbWWEJkTMDYtlEMP22FLOaPDTc4Xv0TDNeOL20ouaGv4YHU+/z7ilR6GQq1QXWUtNf4sr5W+4NUFddepiaDr3rsA2A2FkmXNEiAm4uCWzoReXkzgCHVKddUl2e5aZ2gBUzQhRj9xhEIW4xifD0HlT44jFKosyZkqda3XZQpm1k=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=J1hwh6BZ; arc=none smtp.client-ip=209.85.217.50
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vs1-f50.google.com with SMTP id ada2fe7eead31-4e58d270436so852501137.3;
Fri, 30 May 2025 21:04:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748664275; x=1749269075; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=nS5pE0o8S+sA9vSGdXa1WZSHPdE9yG19o8VINjXy5hc=;
b=J1hwh6BZdrQPcjHRyWwkUWCQ1JtUUcrPvuqaH/qZJ8aCO8fXK6KteOLUwAzSmH1NwI
HNGuWua5CQC6IcoifoQG5tcixuGy2NWZOiJZp6Qlv0X+UtJL8rKyJGwIlQFpfZXt5W2S
oZb/aVoixH/q7MWDSzZ/nHz9daOIdGluMDTkP5v4gyfZVfj8/MSvB6xtzb0NtwT5ZJNi
60oZcL/E7JrizTaNm6fhK+WX1rBoJbW7H6IqHbKCsbHMWouPr5GPocLiMRCDTTA7YMnB
UbN68cf8e42aH85ouFCC1OZ/Y1sEgRJfasM/ZBR1pw0TDsJy2TdgEQLxrBIMT0rxNsAI
g3Rg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748664275; x=1749269075;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=nS5pE0o8S+sA9vSGdXa1WZSHPdE9yG19o8VINjXy5hc=;
b=osW0VvAaMWvf3csLBDLV+HaRh7sVjmQfBNDT/1Dxf6sx3XohpP3nb5GgdDphMVspn7
+W6BzkMdMGmLdaF/74xzSHytgqFD+LZwpBZ1GmHj/VMsQ0aCQ6mELbtsPzgvmEYVNN0K
DgjGCcARRdP5eABQ0NELY+tkdzT0C8nlE2tX/NxEgzjoj4CUCDlq/1gUaFjXizfRYH3U
8osvivkzsOFJM42EM554u0MsnGYd6tgypa4Lh1jK2aZryAZQgs1YqSXKdnKJDXNIGvDG
Y0+VoUwGdhVK2fPKY9cwYybQOLBLtjdcRDWyhAK+rLI4ZQ4+FhWyw/QcM++/CrFH3lta
F4YQ==
X-Forwarded-Encrypted: i=1; AJvYcCUrYMyVFQ8UzIztdDDNMz6WI91ZeQqIUIyN61xfIj3gksHl38Rl91lpwa9owdJFQ7+gzjUBhYx1@xxxxxxxxxxxxxxx, AJvYcCWmyKFFBftivJ6+1KndiCZZWbcH9SvSTPsxo1JWQY30Dp7G35lxWDZjvpfk722i91cvsDV8yezVOCcr1j0=@vger.kernel.org
X-Gm-Message-State: AOJu0Yw5qh/sXVVSNxm9dFsWkHAK/4d8vSGQ9E7VrxuF6iWLS0P3iwR7
5OfE3lQ9e00KZDLfP3iL3we6lVHs0BbGGQhjzbnrlx/B8L1E3HGXaU8J7ovJgffqzO/mE5Zc6LT
uh7OQ12Vpi3qsXSKqt7wk1Aaodc2cL/o=
X-Gm-Gg: ASbGncsyjrAtY6YetbQaalb69ZdcYjDEKiSmbSg47a1yBgUFAngbCveOfrqA+xa+eHc
l8hUvL+HfcgG7TSAymkoF6dp0pMtxHlz3Ees1egauSm/ThvN9Etfo3yPh0Xs+SLlL3coLPGOZwA
YxH6VZhnoZ/nUZ1+gBRr9I1OJZEpLXBXWSjw==
X-Google-Smtp-Source: AGHT+IHIKNydtAt4W0TBhkJoaIkTJR5s9EqiEIjLFeZby8tWyvq4kiBnHdPvnCyp44lvW7H/Gde1X8aDqKUixQwPWJQ=
X-Received: by 2002:a05:6102:3a0f:b0:4e5:babd:310b with SMTP id
ada2fe7eead31-4e6e40f5bd4mr6051531137.10.1748664274957; Fri, 30 May 2025
21:04:34 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx>
In-Reply-To: <20250530201710.81365-1-ryncsn@xxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 16:04:24 +1200
X-Gm-Features: AX0GCFskxNAvcUu96I0HwtH4Vknv2CO5MuXPf8gnIuGqNINOVuNLXEaUl6id648
Message-ID: <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Kairui Song <kasong@xxxxxxxxxxx>
Cc: linux-mm@xxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Peter Xu <peterx@xxxxxxxxxx>, Suren Baghdasaryan <surenb@xxxxxxxxxx>,
Andrea Arcangeli <aarcange@xxxxxxxxxx>, David Hildenbrand <david@xxxxxxxxxx>,
Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 8:17=E2=80=AFAM Kairui Song <ryncsn@xxxxxxxxx> wrot=
e:
>
> From: Kairui Song <kasong@xxxxxxxxxxx>
>
> On seeing a swap entry PTE, userfaultfd_move does a lockless swap cache
> lookup, and try to move the found folio to the faulting vma when.
> Currently, it relies on the PTE value check to ensure the moved folio
> still belongs to the src swap entry, which turns out is not reliable.
>
> While working and reviewing the swap table series with Barry, following
> existing race is observed and reproduced [1]:
>
> ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> swap entry PTE holding swap entry S1, and S1 isn't in the swap cache.)
>
> CPU1 CPU2
> userfaultfd_move
> move_pages_pte()
> entry =3D pte_to_swp_entry(orig_src_pte);
> // Here it got entry =3D S1
> ... < Somehow interrupted> ...
> <swapin src_pte, alloc and use folio A=
>
> // folio A is just a new allocated fol=
io
> // and get installed into src_pte
> <frees swap entry S1>
> // src_pte now points to folio A, S1
> // has swap count =3D=3D 0, it can be =
freed
> // by folio_swap_swap or swap
> // allocator's reclaim.
> <try to swap out another folio B>
> // folio B is a folio in another VMA.
> <put folio B to swap cache using S1 >
> // S1 is freed, folio B could use it
> // for swap out with no problem.
> ...
> folio =3D filemap_get_folio(S1)
> // Got folio B here !!!
> ... < Somehow interrupted again> ...
> <swapin folio B and free S1>
> // Now S1 is free to be used again.
> <swapout src_pte & folio A using S1>
> // Now src_pte is a swap entry pte
> // holding S1 again.
> folio_trylock(folio)
> move_swap_pte
> double_pt_lock
> is_pte_pages_stable
> // Check passed because src_pte =3D=3D S1
> folio_move_anon_rmap(...)
> // Moved invalid folio B here !!!
>
> The race window is very short and requires multiple collisions of
> multiple rare events, so it's very unlikely to happen, but with a
> deliberately constructed reproducer and increased time window, it can be
> reproduced [1].
>
> It's also possible that folio (A) is swapped in, and swapped out again
> after the filemap_get_folio lookup, in such case folio (A) may stay in
> swap cache so it needs to be moved too. In this case we should also try
> again so kernel won't miss a folio move.
>
> Fix this by checking if the folio is the valid swap cache folio after
> acquiring the folio lock, and checking the swap cache again after
> acquiring the src_pte lock.
>
> SWP_SYNCRHONIZE_IO path does make the problem more complex, but so far
> we don't need to worry about that since folios only might get exposed to
> swap cache in the swap out path, and it's covered in this patch too by
> checking the swap cache again after acquiring src_pte lock.
>
> Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCzi+EJ=
t+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> ---
> mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> index bc473ad21202..a1564d205dfb 100644
> --- a/mm/userfaultfd.c
> +++ b/mm/userfaultfd.c
> @@ -15,6 +15,7 @@
> #include <linux/mmu_notifier.h>
> #include <linux/hugetlb.h>
> #include <linux/shmem_fs.h>
> +#include <linux/delay.h>
> #include <asm/tlbflush.h>
> #include <asm/tlb.h>
> #include "internal.h"
> @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, stru=
ct vm_area_struct *dst_vma,
> spinlock_t *dst_ptl, spinlock_t *src_ptl,
> struct folio *src_folio)
> {
> + swp_entry_t entry;
> +
> double_pt_lock(dst_ptl, src_ptl);
>
> if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig_src=
_pte,
> @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm, str=
uct vm_area_struct *dst_vma,
> if (src_folio) {
> folio_move_anon_rmap(src_folio, dst_vma);
> src_folio->index =3D linear_page_index(dst_vma, dst_addr)=
;
> + } else {
> + /*
> + * Check again after acquiring the src_pte lock. Or we mi=
ght
> + * miss a new loaded swap cache folio.
> + */
> + entry =3D pte_to_swp_entry(orig_src_pte);
> + src_folio =3D filemap_get_folio(swap_address_space(entry)=
,
> + swap_cache_index(entry));
> + if (!IS_ERR_OR_NULL(src_folio)) {
> + double_pt_unlock(dst_ptl, src_ptl);
> + folio_put(src_folio);
> + return -EAGAIN;
> + }
> }

step 1: src pte points to a swap entry without swapcache
step 2: we call move_swap_pte()
step 3: someone swap-in src_pte by swap_readhead() and make src_pte's swap =
entry
have swapcache again - for non-sync/non-zRAM swap device;
step 4: move_swap_pte() gets ptl, move src_pte to dst_pte and *clear* src_p=
te;
step 5: do_swap_page() for src_pte holds the ptl and found pte has
been cleared in
step 4; pte_same() returns false;
step 6: do_swap_page() won't map src_pte to the new swapcache got from step=
3;
if the swapcache folio is dropped, it seems everything is fine.

So the real issue is that do_swap_page() doesn=E2=80=99t drop the new swapc=
ache
even when pte_same() returns false? That means the dst_pte swap-in
can still hit the swap cache entry brought in by the src_pte's swap-in?

>
> orig_src_pte =3D ptep_get_and_clear(mm, src_addr, src_pte);
> @@ -1409,6 +1425,16 @@ static int move_pages_pte(struct mm_struct *mm, pm=
d_t *dst_pmd, pmd_t *src_pmd,
> folio_lock(src_folio);
> goto retry;
> }
> + /*
> + * Check if the folio still belongs to the target=
swap entry after
> + * acquiring the lock. Folio can be freed in the =
swap cache while
> + * not locked.
> + */
> + if (unlikely(!folio_test_swapcache(folio) ||
> + entry.val !=3D folio->swap.val)) {
> + err =3D -EAGAIN;
> + goto out;
> + }
> }
> err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr, ds=
t_pte, src_pte,
> orig_dst_pte, orig_src_pte, dst_pmd, dst_=
pmdval,
> --
> 2.49.0
>

Thanks
Barry


Return-Path: <linux-kernel+bounces-668932-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5E9E941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:08:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 7BD374E10FC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:08:34 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 68F8F28C027;
Sat, 31 May 2025 04:08:27 +0000 (UTC)
Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238])
(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 4AEA828B503;
Sat, 31 May 2025 04:08:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748664506; cv=fail; b=rOm34cYu72RpEI8Zex9vzVLeXuPPN3Sm+PYBSwjzdZ3209e0lJ/YaQyQmCDEjWIj1PSilQQUx/JmxdSVATuOYPiWs/v2nB765Ee489O9beJXgMqb3YYkp3PeSsVWTYtMW1SFlqMOnoskTZbsgCfpxakYcb7u6MhQrvwtuenTWKs=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748664506; c=relaxed/simple;
bh=5tgwE8m8TFf/ITWjfVVtpPWACjvtNAZJmh36kvIOqus=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
Content-Type:MIME-Version; b=S02oMWXFY2iCkzyAl8+nh9pSm8nwTJ8doXOVUUid55jRgxkZLNYvc7hIAxiI2lF2AvrPupTC2BOUrpXs6LjWE1Jd7dprVo798da4ls+4bQ8tAe+SPFLr4AbiFSj+/mrR3qstiUPV6ac8S3k6r2AeLaJg8kWxGEpEV7lu24pX7gk=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; arc=fail smtp.client-ip=205.220.166.238
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com
Received: from pps.filterd (m0250809.ppops.net [127.0.0.1])
by mx0a-0064b401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V47wpI022774;
Fri, 30 May 2025 21:07:58 -0700
Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2056.outbound.protection.outlook.com [40.107.244.56])
by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 46udmm70sw-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
Fri, 30 May 2025 21:07:58 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=Ysl3reZIkLR3k6QXsgBjnEz5S5ncuhAheyqwpq7EIcoDGRgk3GjaMl/0Az8wt5F/MSMHR60LG7yM0aUkUtFLVPSzK0dSjWvFzLJsVN0H2XzMVSRwtmPiiO5+T/0VLXIWRPHKJBit3+8YqU+7KQ3EZzGUkTxSylAfrHZZp9hGUJaQ+48pbpBE1FcrwsNRUmjR1zcdAM0d29zz6LK4fh17Ax1tnsWkRpUjw4M9JDG9RtZ38G38J1H6TljZcGF0wIJOWLFlH6N6Ir5xXArC2+Lu2JtP3hJHL0rCejDPPor70Ydg+RCE5NCRTtjv9d+LTQF+CEm5nmjFATIFwG1e8KirSw==
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=hfqxl/xcbDh/bUnRxEScfqXQNwYcHKRTWwx+u4opRZs=;
b=T2Ask0l2m0wJZFuzYY2sSbspKszRcnoRrvPyZIvy3IMzWqTiFzrjToayhpAJn6z4II2P0XA6e1gIpF1Q6YJ9rkI/OMdY1c7QVaNsNS7s16xuGbDHkN69LoooOvZH9Nf0xenuvWJ+gsbc5cjcOdq4zSYYjAhY2P17Ds/Mcy7cp/TPZdTFqKnpBey89L/RAuVuVrHEhA1+WRnSAzKhx8Gr7ivQvQGsPCH2V/k89yDL+wpkAnUICQk1Kg5i6SuBO4QtpGaFGsiI/dao9w3OwXXu3x64zcenvRt7Uwhj6roanB981pf3n272MMfkN7uC81RV3SK+7ouwtdP/NWd+G2ZT8A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=windriver.com; dmarc=pass action=none
header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none
Received: from DS0PR11MB8763.namprd11.prod.outlook.com (2603:10b6:8:1bb::12)
by PH0PR11MB7587.namprd11.prod.outlook.com (2603:10b6:510:26d::17) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sat, 31 May
2025 04:07:56 +0000
Received: from DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3]) by DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3%7]) with mapi id 15.20.8769.025; Sat, 31 May 2025
04:07:56 +0000
From: Meng Li <Meng.Li@xxxxxxxxxxxxx>
To: imx@xxxxxxxxxxxxxxx, linux-watchdog@xxxxxxxxxxxxxxx, festevam@xxxxxxxxx,
kernel@xxxxxxxxxxxxxx, s.hauer@xxxxxxxxxxxxxx, wim@xxxxxxxxxxxxxxxxxx,
linux@xxxxxxxxxxxx, shawnguo@xxxxxxxxxx, robh@xxxxxxxxxx,
conor+dt@xxxxxxxxxx, Frank.Li@xxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, meng.li@xxxxxxxxxxxxx
Subject: [v2 PATCH 1/3] arch: arm64: dts: add big-endian property back into watchdog node
Date: Sat, 31 May 2025 12:02:11 +0800
Message-Id: <20250531040213.2589292-2-Meng.Li@xxxxxxxxxxxxx>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
References: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: TYCPR01CA0183.jpnprd01.prod.outlook.com
(2603:1096:400:2b0::19) To DS0PR11MB8763.namprd11.prod.outlook.com
(2603:10b6:8:1bb::12)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS0PR11MB8763:EE_|PH0PR11MB7587:EE_
X-MS-Office365-Filtering-Correlation-Id: 1b5ebe72-98ff-4a17-a807-08dd9ff806e9
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|7416014|52116014|376014|366016|921020|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?4FrOse/ZJ3Wuh9bnBjoIrFOVNY2KZxFFKvt+OBXPfx8MvbKl4fo10oSa1MFC?=
=?us-ascii?Q?gIrJ3S3gwSVJXaGBjHF49l10OPCQ0N7H4gi8GIac8pGm+6G8Y2z6mriHMTmt?=
=?us-ascii?Q?VfCnTGcfkivrBfqrw5oZAjwDY/EHDBKHxxsy/O+GhlQzaXci8SpULyyB7uJh?=
=?us-ascii?Q?KDE3QQARbH0qcNv5lj2PgmnRwLCYHU839G/EV92KimFX7i6C0NtouobSUJG1?=
=?us-ascii?Q?JYoKOW8CjZ+2aDcGZNa5ocLgkdaRbKiLIR6A14CJ3kMTgow3QEfamLE7DfVx?=
=?us-ascii?Q?G/BdSTRceTA5BNVaTBDn227UfH4IhCpDyEjD5FF0YiM3J0hU4pUh/U1rm3eH?=
=?us-ascii?Q?1U1JmsRDz58m49Li7Xs+sPteaQA3zHmltJCWc2LStYkP6esHwEvkDgx0U/2/?=
=?us-ascii?Q?5ciAHSIEu0CIf/2VWhB9lm8zRWEvCaVcpS8TwlTk53A/nWPcBZyjFaF9MycX?=
=?us-ascii?Q?ay5smO4lVbMGm8nimOQXBvbpr63/g63WgxOtJIdtLAWeN6rWrP/8WLXBS/WG?=
=?us-ascii?Q?scgpRcxSxqaecFsOiGgaOoEWab/1f4OQuIM8v3d1NBNy+td5QRbnY9i9Of5J?=
=?us-ascii?Q?UuiKBhpFhl4MZt7PtIx8qZpTOyvQ+wm6c7gZogj0Sg0BSj1j7+e0n4vBXMpt?=
=?us-ascii?Q?8iDaPwuWK+c5LeT0FhmKuPrkDx3tLnS7uEgEXnTcuE3lYxbBp9wLh680hvEz?=
=?us-ascii?Q?U2cd/vvDUUIfKW5HBKp7wf0JgAV8u8UYvJ4rN0ikMuGNvvbiWZSxUwi8hKpj?=
=?us-ascii?Q?IT6vwgm4mbb7F+4KbKtTMXk11crhqpTCfgZun/BV1Af7DsQDymKODeN3hH7K?=
=?us-ascii?Q?pc+ReAeugzAypuJOdwB+tHEFC785wJEtuhSsTn4l2O5LOJ7ilDjSV+hPZm7o?=
=?us-ascii?Q?mHUZIyUxN8rsOGW697GZ1M4KdkRQ9jT9IagS/LZAe+HxW5Vk35h+ERTb1Nod?=
=?us-ascii?Q?sC334iiv2O//bU0edzqBvysbyeRlWkqwN2+oQWupv4hq9+yxyklx2yV8iT5O?=
=?us-ascii?Q?92l1tXZo8dYoUSz8aQ6iBhzwITC7t06qq0wevMLzbmCkp+O+Vjlt8KN1e4aS?=
=?us-ascii?Q?44gJSi0FtoWC1whrqKdvU74diHmFP4YUe7+SoKvslL24sGyW81SbXttP/QgL?=
=?us-ascii?Q?Xo8lXcm/SjKBN7SX8pCSOKJFkyf4X7wrPgw/sI9VtSxxgDavYKJ7qGTYiw9Z?=
=?us-ascii?Q?4vppPKuwbQoEL4T4gvm0JFYSfCprV0gsTLZ01HWnLGiqcWcHIraxE10Hlyqt?=
=?us-ascii?Q?TiKEz3EZi3MeX8EP5ZjN9DzTnZp/npUpiSBPdfDOt1Xzg+m96xmMbLX1ISi1?=
=?us-ascii?Q?4Z5ZmD6k4q0dAF7sZdqxKT9YuNww7stanL+ccLV4fGrDS3CgaHU0waxBS7BR?=
=?us-ascii?Q?HlnO+73bA1Lfy5SO9WAiC9Tbl+F43ztB2HwdoDsx3bOfajpvPZVzk72ASDGL?=
=?us-ascii?Q?JOz6+Jd88wXYQYey2qb4O2weMlBxXw19g2x1FSs69TG2iqQPmhihnQ/egNN8?=
=?us-ascii?Q?02NNyApTBlr4e7A=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8763.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(52116014)(376014)(366016)(921020)(38350700014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?ishVu4tiWjtWx6RCc4TajE24/slq/JMq/IhkGOQg2s6E4BjzYEYFzQ3BLqZ/?=
=?us-ascii?Q?JzVI7ZmJqWet951s8etxThzn8UaXbXyONC+46pWsp9SwFKjIDLyJ6W34Rhwf?=
=?us-ascii?Q?/reDS+/aBhvsJGBnehojOi/8H6noqV08/Gs/naslkttzILXyq5uhK7lLsqrO?=
=?us-ascii?Q?TmeprqkXpet5+Ys30+nUL30whyzGbg8BU0ebJxDgx08zgaRLjyVXDmlc5CCb?=
=?us-ascii?Q?Q54iiOl936LXandce074mw8SDBU+jEtIQh5MZH50C1tFjcxczOlQxuyTkEtV?=
=?us-ascii?Q?mUZe2ndT37UJ/FvneCwygKxdYG4m2W9L2g3iLJ+aolTYZ/oBwuczeg6750ZA?=
=?us-ascii?Q?96CpjCD8/Lw+jA7lh11/eOjapWbkbxqXscaQifOrqLRzEcGWJCuIaOEtQOzI?=
=?us-ascii?Q?t57anv5ge6av+uM2DfqMMd5Nf6q2E5vlwHxD9MTXN+UjpQCo26lFg7xzbvI6?=
=?us-ascii?Q?3FttZC5CLPiGw0wjcufnKj2l70fd+VYt3FkAXhg1xPf4yA5a+epCky0dYdXx?=
=?us-ascii?Q?rmwM3rnX4a14fbx9Yk7QkxA+b3Na1HMDUvh7Y2DIJzmtTsEJJro+VUzk8Oiy?=
=?us-ascii?Q?hmIXx0H5mrlKjUhjSyOKrhRsILcqsItD48mvQtZJx/4LyCYR0yJre3pP3Tjm?=
=?us-ascii?Q?R0bGWiE0wSKm69xZ8JUnoFRL4hO0c4X5tczbfwN/1aCx/EkZnFk6jgKHyiWM?=
=?us-ascii?Q?drZi17WKbIorum4mFWcIONRiiC0rgPFLtBwBITZX8KD0qvKnwWCrPbTOQcHA?=
=?us-ascii?Q?W6EBZB/y6LUHSl28zUmpvdzIu2QrUSk0ECDgF+dS2vbO4SYCIIm2IjARiYBj?=
=?us-ascii?Q?PyjzWQ0RcncRfT8CW/T2QWpAdb5t8AFK7hanCz1K1Ob1EiB0JJoAFVkc1iqy?=
=?us-ascii?Q?VrL4+Cw1yuKTV7mS1eZLykk4KZHwBJgpJ5XKR4YpztMaBYi9lv+gIYY2CcKl?=
=?us-ascii?Q?ZPpjNss1dMsSpgDLk4cMaqqPb1vOH+PuAXh0iFuq3Fdn7XvvCIeyGE/x4kz9?=
=?us-ascii?Q?q4vCUiFQDgnerR0K+AFHxjHRZMTtDXPzmwerL/rHlsPkKMiBiV1+yM/D7WvU?=
=?us-ascii?Q?WqXiT+U0YVlHE2dTHJpHEiwu6Y01eTIAy/5S38eGyf+8s53cAACcNbHcHvZM?=
=?us-ascii?Q?Rf2THlr4JeBsvCyNHL8lHy8Cqzl25FhlT4PT+WRV07mx5qYqSPVmOjdLo4q8?=
=?us-ascii?Q?OT0/Av5o++9DPFaNuLx3NvMbHfRjhyCYc29f7UDOG8gedgIYsB9lqVVd/M9C?=
=?us-ascii?Q?GGd9ULB2epTGXxTeOIsrWjbUAMUkKASRmKnF7WVmGf7NbbRPwSgG+5f9Zfno?=
=?us-ascii?Q?HfdTYMSwHijGJweqYNQN31CY16HFldkgIHg4TZjUzAv45kL4q5EgI8RiFrk9?=
=?us-ascii?Q?5ABdIMvFoMsq8wodvnFZSfSNVmdz9qZEvq+4vUm/EKdlXlXhAGT+6o5hO8Lk?=
=?us-ascii?Q?Jf8nWEFUcevqwEJTKO/30K7KYFzpWJsjkSIr4Lasm9WIFcglFBb5yJmOgQbp?=
=?us-ascii?Q?ExPdmzpYyGqETiADr45RdfMxsAVvCOwm87pKT4HBt49R3d6imlTeOfiYuos2?=
=?us-ascii?Q?g9F6s1EmnssafYJytLlzYoRUteq/ShP4kU3Z9/0a?=
X-OriginatorOrg: windriver.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1b5ebe72-98ff-4a17-a807-08dd9ff806e9
X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8763.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 04:07:55.9470
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 2TCiFfjjzwK1GOwwXMfZ/QFHqW3I5DNFARBQ7Z3cjSGtn1uaornWmPJ7Rrb7C/AW8u2cwqRVWetG5jWGUgwLYg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB7587
X-Authority-Analysis: v=2.4 cv=WpErMcfv c=1 sm=1 tr=0 ts=683a809e cx=c_pps a=7ZAoscB/WEXDM7TOYn+1yg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19
a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=VwQbUJbxAAAA:8 a=t7CeM3EgAAAA:8 a=N8_2f3WcjlOfNawuRIgA:9 a=FdTzh2GWekK77mhwV6Dw:22
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDAzMiBTYWx0ZWRfX6+9HytNjo1em n8PqO2AkxUP6mRGSNJ89TuPoSCAMo0E47qAofQgaLfmfCDkKXzWitxiIIVQW0WnElRnPxM5jmhe qhB7T6dZKDrGGl/ERMUUpQXWrUkj7TalFaGoy5jo9SJpbfOcmZKdhKVbLhrR7zRBipeOPOIEAW4
SBWnwv8QnHiUfwK8u/dGGF+remFm2IupPCXRc5FfB5Myv0yOtP98igBGF15iWAf0Q/qknAAVCkf 7s2G/mHx/skrSd7aUfocHEiwDjbttURYXMclTJ/NKIPkEpDul4K1kB9/A6gmNI5lTXaoG2UWU9C n7CCvsJ8gul0KG2bQVVkUPqTPWPZk0s+Pbx+s2iPDYDRvnwZS8Ilp4Bc3UUC3LEd0b6JCteEwG8
Attq2iM24EtPvQvSaBCeS3AoJbc3q6oBVe5lA2sJ7OFBqDOcnOTkwb1vqpDeL7AxOfEzPLrb
X-Proofpoint-ORIG-GUID: fYJuvm-jOkcyB37u20H-0UJbxo35Z110
X-Proofpoint-GUID: fYJuvm-jOkcyB37u20H-0UJbxo35Z110
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_02,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 mlxlogscore=914 clxscore=1011
mlxscore=0 bulkscore=0 malwarescore=0 phishscore=0 adultscore=0
impostorscore=0 priorityscore=1501 lowpriorityscore=0 suspectscore=0
spamscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound
adjust=0 reason=mlx scancount=1 engine=8.21.0-2505160000
definitions=main-2505310032
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

When verifying watchdog feature on NXP ls1046ardb board,
it doesn't work. Because in commit 7c8ffc5555cb("arm64: dts: layerscape:
remove big-endian for mmc nodes"), it intented to remove the big-endian
from mmc node, but the big-endian of watchdog node is also removed by
accident. So, add watchdog big-endian property back.

Fixes: 7c8ffc5555cb ("arm64: dts: layerscape: remove big-endian for mmc nodes")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Meng Li <Meng.Li@xxxxxxxxxxxxx>
---
arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 1 +
1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
index 0baf256b4400..d1c64d97bccd 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
@@ -692,6 +692,7 @@ wdog0: watchdog@2ad0000 {
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
QORIQ_CLK_PLL_DIV(2)>;
+ big-endian;
};

edma0: dma-controller@2c00000 {
--
2.34.1



Return-Path: <linux-kernel+bounces-668933-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D1DC841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:08:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id A692F1BA7528
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:08:59 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C5B1A28C2BE;
Sat, 31 May 2025 04:08:31 +0000 (UTC)
Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238])
(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 2D63928C2A8;
Sat, 31 May 2025 04:08:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.166.238
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748664511; cv=fail; b=RyJGCpMJrDIQl/3plobUHgziOYmbVhllfLsaLJ6MCWudM8lB7DCt3jmXTdiKh4ivbCOJ3MIF6mEmzPpDZqO82JkdYk0JHkO3NmlrhiaVtxZCHImy2eC4FJXgqVNHqrfTNoYv/EKqSH6rszKZXvrs3WKCRQlCsZu6f1qzhwlN+2o=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748664511; c=relaxed/simple;
bh=ROj9xZMvzSdb+38su35mkrBlwiLqSr3c1V30oJrnO8E=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
Content-Type:MIME-Version; b=i5y1SVSGMaCT+Xwp0Pjw8QztfGtWd/OYJ6Cq6oPs7uZ5pdbFJF0mv+BJc1HdybsLvhEztf3NyChjzV6HrddTD4Zd3sPnBHipZWt2LgTUp/IlLFp9sYawzkivUKq6TcrzuiuL7/Vw5YRS9DXElvIufdsR2FKEl89Q0MYwmXDu8xk=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; arc=fail smtp.client-ip=205.220.166.238
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com
Received: from pps.filterd (m0250810.ppops.net [127.0.0.1])
by mx0a-0064b401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V431LM032393;
Fri, 30 May 2025 21:08:02 -0700
Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12on2088.outbound.protection.outlook.com [40.107.244.88])
by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 46u9d4776p-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
Fri, 30 May 2025 21:08:02 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=rjXhCRD0qfWcHJ3BZaPV07XQfauol79LJbAcDOiuihYcUgmpuHU0EVaR6YboanR+BauBjYtjpgHMseTu+I+vU449tqPIH8+G0xOaftyM1ONU7CzBI/zfh8bsqsXSSrB2Vo4zBHywDegMHfAH+6zQYLX6fQKqpwbx2iizOiwfTAZzdgbSFakLlwDB7z2Ql6QCXmODukpuB3myAa9qVZvw0MASNxC+9Rd96vRrTkgu9dWTVL1GTZM7fw2f0kaF3hMwk5Z+DG/9C82w+Ejj+z4cMm3RjdIz/Bgcliv5TpOBOH9QYiAn6sLkaBkb+yMlrXQvE++YfyZPDq4yxOXjvfdCDg==
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=RHzQ5hz5bJ2vJgOTZV59rwE4yTXifaDigIl6K+kL9Js=;
b=o2zWHJ1BuI6JrtuEUe3YArBUyNpnhkIeeKzbSxwDdSa3+YP4rfk2z29+t/3MzCAfwAO04gqhHSK0Tv2kvoU4CFoQF8aYjPk6IQOF80DsuR/AdTavTslxpWSF8O7T9juuIuSGe68cHJhVIB1fLGFajXg7z98pm2bRCTyxJ4VR93n1ZFh882SbMAQN0lXzKhMqYrMPSrwqlT7kYp8fUqTZgqPXKBgM5l1GGcR7m2KvYZ8MiRDjxv2herqIZx69m+TNtfEufuDk0LXvC5+G+fxcqKSWcBxS1wFBSGIF9L4CWzE0NTyUoPfCDAUJfvzObifzosScen2x8nl2g0belXGfww==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=windriver.com; dmarc=pass action=none
header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none
Received: from DS0PR11MB8763.namprd11.prod.outlook.com (2603:10b6:8:1bb::12)
by PH0PR11MB7587.namprd11.prod.outlook.com (2603:10b6:510:26d::17) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sat, 31 May
2025 04:08:00 +0000
Received: from DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3]) by DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3%7]) with mapi id 15.20.8769.025; Sat, 31 May 2025
04:08:00 +0000
From: Meng Li <Meng.Li@xxxxxxxxxxxxx>
To: imx@xxxxxxxxxxxxxxx, linux-watchdog@xxxxxxxxxxxxxxx, festevam@xxxxxxxxx,
kernel@xxxxxxxxxxxxxx, s.hauer@xxxxxxxxxxxxxx, wim@xxxxxxxxxxxxxxxxxx,
linux@xxxxxxxxxxxx, shawnguo@xxxxxxxxxx, robh@xxxxxxxxxx,
conor+dt@xxxxxxxxxx, Frank.Li@xxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, meng.li@xxxxxxxxxxxxx
Subject: [v2 PATCH 2/3] arm64: dts: layerscape: add platform special compatible string for watchdog
Date: Sat, 31 May 2025 12:02:12 +0800
Message-Id: <20250531040213.2589292-3-Meng.Li@xxxxxxxxxxxxx>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
References: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: TYCPR01CA0183.jpnprd01.prod.outlook.com
(2603:1096:400:2b0::19) To DS0PR11MB8763.namprd11.prod.outlook.com
(2603:10b6:8:1bb::12)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS0PR11MB8763:EE_|PH0PR11MB7587:EE_
X-MS-Office365-Filtering-Correlation-Id: 55df6cbc-7ca4-4a80-0354-08dd9ff8bb6c
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|7416014|52116014|376014|366016|921020|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?rU94J/IfHEAGuCD6P81u5CaOoAhh90nhu3Cug7eS0uIiniFqVy5ScszXSzw3?=
=?us-ascii?Q?q7bkxi9yAB2+U8pS2Sn6q2We1/a0Wo1lh1OiaL59hVR1AKKn3+ZNnFqx5Uj5?=
=?us-ascii?Q?FLyPm/jM3MD4SoqKZVYBYHaOu4h3KD1Q+eQR8khM2RnAmiCtabeZqgSvtLuP?=
=?us-ascii?Q?z1KkEe+jN/dygpjxZIWVmZEa8m/ZyAyWIzr1sWbUfbO6A1WzXQ+I+LwJlgz7?=
=?us-ascii?Q?7imxJEH8vvFukT+S1YF/Y1MrSr92YFp9bgf9qFwsS48OTP2aKwvbGA4+gsid?=
=?us-ascii?Q?yB1ZMk21izMtmIUgKki3glS5xsMJTcLEB5801qP2GzFoH1Es1x7AAbpOcUK3?=
=?us-ascii?Q?Pk3McUQj1Iozk0taJq53ZlPlP77FDW4xdBI3g12ERy7OMnIxE7h3kIL31vX1?=
=?us-ascii?Q?a0wP338UgAEVMxhoFHzUHcelzBGZZwBINunil/nLHGVFomo/7zFZBv7diAFQ?=
=?us-ascii?Q?2o2xPG3YVy8LQjlNJ7Nq8DiKPO1f1I0b3ypPNfUvjp28MwRlsdfhhT7+7PFq?=
=?us-ascii?Q?a71kkWQDQrmplyyOjrmYc7gv9/OkjUaTJyZZug1IM/hH0no93r+QKGVq0et0?=
=?us-ascii?Q?6qUVADIFkP3DWwfGoQdluJqw4UtXmtSWT2qx7+3IfvsFDoiANBE+A+h9ON/y?=
=?us-ascii?Q?gwTEtg2vErT9ECzKrbolYLpOXVU0q6Q+nrRZjuqa9AQr8jz0URqcelKUQr3V?=
=?us-ascii?Q?J+l4DhPbzQK5KAY7F6d6tTCI4rKsDD3R+1pBPQ82UJ48zP4U4xcFauvZJ16Y?=
=?us-ascii?Q?dydoq3pUgitB6reinSQGj65n89b1bN+kGjbbjThc8IMR/B29JQ2KVmQgsR7j?=
=?us-ascii?Q?4czmU7Xzz4xXLrspd/69mDAzX/Noeon5mKW0UmcNTQJ3GW2QG2WOUO9/3DtZ?=
=?us-ascii?Q?NL5nrFO1HP/WNm67IA5ySCuG4Bjey4sWTGYES7C9lCceY24tL7Z6soiKG5pc?=
=?us-ascii?Q?hCJlSbIvo3RxQQIFDi6+89xdgGMUyY8nVFsx4qSF8aDsBkwUQAsuABlIlMaD?=
=?us-ascii?Q?YXGw176yZIpoJraBUgDYh4pq2zrLioL/m2mlOvcOV6XNQs25dIbClwcZmWeq?=
=?us-ascii?Q?GkhVFvZZlCG4yk1TIZlcDAB+yQvOXdfdMaE7aDgHCEfRSBvPahd+DhX4HWWJ?=
=?us-ascii?Q?WL7ZySAuRzqKumRV5KdOvOafa8klmgOeikVjD1aOKwKq+aslDpsC6zuovSLZ?=
=?us-ascii?Q?DeuKPPuoM3OVxoYbjbIXlQL/niE7A7yxWz4g1j3WSCg7aSV9ulNnRPQiU2un?=
=?us-ascii?Q?8ymt2anFN9Ry8r1OBjed3uEI9nXuSXdfuYMupusWgmCnwaSZbt0qsDal+R4a?=
=?us-ascii?Q?chKtnY24YYx6Wy5rkspooTn0mTK6HW0KCZv7Ob9gonD53fhzwt1t2wDtmY41?=
=?us-ascii?Q?ck54SgNlWp3w8cclBE+qS6n1jJW0o0x9ElWP1LttR1DGHWs6gttY6Frp9Pwc?=
=?us-ascii?Q?TyIZQpH622jjDXiR9qopHG/meg/EEnqI6ZXXjAmoy8fRt94Ogle0TXIE/4Jt?=
=?us-ascii?Q?uYu2sDxCogMN9qs=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8763.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(52116014)(376014)(366016)(921020)(38350700014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?0VnM7OeOH+YY11jU5jHOTvm6NCfo4ugSXENNoB68LfSuIPBYLZzaCR9PPB/m?=
=?us-ascii?Q?vRGa+UM0RHY3dMaShR1F0PmsMKqxuoHdhvRb3MVv1sAxLckcBJ6Z8GEbT/at?=
=?us-ascii?Q?ykhqiQ3LZgUd8l9HbA9ERYizcHi0PuwhPybcija+tXpJD5Zgb+bH/bPrNooZ?=
=?us-ascii?Q?kf2nIVhqRPIVX5u9yaAwjFCxdU1N3tyGBNgc0WSljWQoR3fHNp3zjVY6zctA?=
=?us-ascii?Q?qpcI5jEtJORqPunQgmQhotANi9SpBSocVhad+hvH7FYkJbqgI/c3bUhMRmZP?=
=?us-ascii?Q?AwtiAOQNMVMedo89Xj7EigMt8gwahdtG+5iKcAkmoaBultFD8WFn1xy1bcJj?=
=?us-ascii?Q?n6tctdwyWdrbiKCAWUXF4N0dHluuw5ZWv+BEN83/Fbn+5evzBaRpX1HjPTof?=
=?us-ascii?Q?tUHmkg1I8+eDc06vJ0ShnaWAWxtnj/89FWDc24WF+S6kJ8vTVNI66AuKkuuh?=
=?us-ascii?Q?cjmsa9m5NV5aH2iWZwM9U/9XRW8nVCgoi4YwrLlogtHoDmveaS4IZmTEcJeW?=
=?us-ascii?Q?f5vl9CPek5GHEKNWJ+ZorO08FZmjJfkwXWOhEhxO7IbLClmUxk8glskoy6QX?=
=?us-ascii?Q?e86nZoMvKCJp0ASKQ7LfcCeM+KufXadFht9qyUB1KB9tHc+iMvAILvj4YUre?=
=?us-ascii?Q?qR0ghbyBtEXaQNvR2GHqTCjPWyU/v7P5pmYetDvQet3cCAy09ieVUFAoRgX0?=
=?us-ascii?Q?vAYd09YTEk3/Ct58qDidSewde2zKF5OR+vEE7JqZgDBt6O/dY/v/dCNOtLKv?=
=?us-ascii?Q?RgZbb/HOgp8zTHzFxS5/yf6Ws36PFsJhuPXl+cpsZAkE/r88wYv1UWbHQEu8?=
=?us-ascii?Q?x/Et/SSbaRkGX0ryr0sucSUyAfr1Te5gdd8jH/ym4wC/enqxONTEoUnw9zuZ?=
=?us-ascii?Q?DjZiNppo0L7BI72cne61VSqCfIvN73Iec027AYTMr4qZAVvmsvwfkemO+SM2?=
=?us-ascii?Q?+OUKGd37QYpyFEdwhIdH6QkFpZVaAw7za/4VItKgNd+nx/0E9DUtd1fUFN3M?=
=?us-ascii?Q?LQOSdV9newkTVi+24D23CUdFqc3iTRmFCqLjUx8uKprT5N3bG+uDrznVLh70?=
=?us-ascii?Q?eUpeNNzmbWM6O6CSfTow7RZ5LH3lCvnip5ve4c3S6vLVhtrx2GAQokAylUrw?=
=?us-ascii?Q?FRVzj1kD1CbS5hOFhzaC4X1xH7lOHfpfwxfubaxXvIYkmSGxlB79oPuTXV7g?=
=?us-ascii?Q?d1kqzX29KUyPV7bE6P7ZryBhQ25ERKsiAiXD4ipT94x78xNi5R6yAgmogvL5?=
=?us-ascii?Q?+tKijP0SWhzjXRIblJVy6ib85IZBvta66Up4FY//chNKhl3GzymbiInp34ra?=
=?us-ascii?Q?gvSyfkSnvJ8rCR2e91QdBwL/JHm5U9r8jhTKMsvT9OV2saUrcUSBkd0F+Yh1?=
=?us-ascii?Q?cFIopJs9qsKdEW7lTfukU89yjhf9hHdp+nvqRfYZ96/LPddzRLzs/u/lmYTF?=
=?us-ascii?Q?Wd+oHRrA32y020TkI1vR8PsTlUMDzwxGoZJwSaYwsQQpP1fETS2YoB/jdqzb?=
=?us-ascii?Q?uwV+hnDUPZYFbFd3mdm1CikTjPfd437KG7Nl7R5uqCFvZ4lV48oAAuWuq1WA?=
=?us-ascii?Q?Efpxq5n0br6s1QpA8O0IWtyEzhNi4O+qKXtAhQGp?=
X-OriginatorOrg: windriver.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 55df6cbc-7ca4-4a80-0354-08dd9ff8bb6c
X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8763.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 04:08:00.5650
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: ADAQaNdV8J+8GxIPQptlxazmmniBDvy5D2vZk15vo9SjO4TrSU2O8fsK0eFzO7PyP0XHrJlvaf6vtihq3u2/8w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB7587
X-Proofpoint-GUID: 59nZE12V5_TTDDqGQw_B6CwXeBGN1uHc
X-Proofpoint-ORIG-GUID: 59nZE12V5_TTDDqGQw_B6CwXeBGN1uHc
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDAzMiBTYWx0ZWRfX50yiC+k+g7GG JkQhZGmm1425a/nsuK8YjVJNH3TD/JwFdZKNUhklLKcvLZVWKyR6NMR12lYa08vQjXbvJZbJxo1 4Zxm6AlN5rYnB7Luv9xa1Rnn6+YeUw13eQsxRJLvQeFeOHmrJgWi3vGozpsl+qsWF3BcqEUeRJm
/uk3a9s/Zgdiyqa0Bw/phsew/nPjJMHV2pC0LNgibDFLXN+lmuhU5G8Y45kieQ2AYvIYl2yJD9Z o9nUnY/4LOXdPnWRtnPyCW4FP7bFZ5jUua4p2skSeT2Ux6Tv0D0qNaTeTVkuVfElTvWYCh260Aq kDjSwd76NYUN+KIWz0JwKfvX3HX+q7OBDcwTPi04cLKqFlqemGS87ugxhK5XlM9RvjHEYA5z2ZK
TX2Iufb5/EQGritNGy0bhtOcZusDA5UTE7zF66zpaaL2sy4+SdPatUyuoW1IPMx3VKMw9kop
X-Authority-Analysis: v=2.4 cv=fdCty1QF c=1 sm=1 tr=0 ts=683a80a2 cx=c_pps a=kuLTmBVh2a3dvdeKPdY0HA==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19
a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=VwQbUJbxAAAA:8 a=t7CeM3EgAAAA:8 a=0RPOJI5F6hdgO72ru6IA:9 a=FdTzh2GWekK77mhwV6Dw:22
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_02,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0
phishscore=0 adultscore=0 malwarescore=0 suspectscore=0 impostorscore=0
clxscore=1011 mlxscore=0 spamscore=0 bulkscore=0 mlxlogscore=923
priorityscore=1501 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2505160000
definitions=main-2505310032
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add "fsl,ls1046a-wdt" compatible string for watchdog node, and it will
be added into fsl-imx-wdt.yaml in next patch.

Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Meng Li <Meng.Li@xxxxxxxxxxxxx>
---
arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
index d1c64d97bccd..983b2f0e8797 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1046a.dtsi
@@ -687,7 +687,7 @@ lpuart5: serial@29a0000 {
};

wdog0: watchdog@2ad0000 {
- compatible = "fsl,imx21-wdt";
+ compatible = "fsl,ls1046a-wdt", "fsl,imx21-wdt";
reg = <0x0 0x2ad0000 0x0 0x10000>;
interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clockgen QORIQ_CLK_PLATFORM_PLL
--
2.34.1



Return-Path: <linux-kernel+bounces-668934-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C68ED41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:09:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 15A2B1BA40B0
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:09:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 16A3828A700;
Sat, 31 May 2025 04:09:06 +0000 (UTC)
Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238])
(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 8F62528AAFD;
Sat, 31 May 2025 04:08:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.178.238
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748664535; cv=fail; b=KWxErVShQDhsV4zSfyGDJIuS3TTmSnmXR0SKUNQDXr7DTF/6U239VDL3+BYPL+fmNUKZB230ghpVZhrR4S+b3+Y0UWon5MK/dA+13ip15nJHNryrY9lvBoZIcCtwvcq6pmZWgWWhCkNoZXcIRgLUN5cCvXmFqQ+Gy3CPZ31IIJg=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748664535; c=relaxed/simple;
bh=PJCvnD7ke1QdssJORyZkeookc2PCezIjanll0ZD3/ws=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
Content-Type:MIME-Version; b=q/nXiCLBEyboEoXnmrHxOnFz8sQJP+EqY6sLd1jjKTKzFpsORQG8WFv1kVqZtxW8InwLJp89yvK2epMpTKPs+RCvqKSf0UBts0qr58HPcn4t/25mI40d5fd5NF2Cgkv7h++DkyYMPwPlStiSZc92xH8r9RUsN4QG1Wlzjg/DGmk=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; arc=fail smtp.client-ip=205.220.178.238
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com
Received: from pps.filterd (m0250811.ppops.net [127.0.0.1])
by mx0a-0064b401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V3o4Yu032718;
Sat, 31 May 2025 04:08:07 GMT
Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12on2077.outbound.protection.outlook.com [40.107.237.77])
by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 46yq00r3rn-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
Sat, 31 May 2025 04:08:07 +0000 (GMT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=ZWKjKBGTccfWbMu1z+xfinwtANHf5Rz1xid127GCYqTXZQfKSOnBNWAObTSE+zR17gr6V/2igs8ptXIuWjT9jya1mkwba+hyDB87JyjBlDQZAwL04MijOk8Kxrgw7NVdqhLn9PNwrjg8vrZ4U5LhhPaQ6A00sVVcT9sl83BlvaUa66zc7Qk/IguvHRQ9glGO4qhbHyzuUl9SZMFemySuvs7JkOUPo+lvhxBGjC0GBPWEWYfGkbZAeKqEUrQDCtv3BVKDXAavbp9vJI+z+VqMwNXkK1LEYFfz+JC9i09AB4RKk5p720DstXctTLlS6v1yE2oyClaPZQ15Uii0xZkfuA==
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=ZsscOpBOMXd4iEm+YTwdM7KH4PCC4H+KksyhPGmwJ2Y=;
b=MfPLo9SAwWj24A5VII2aXVpGos/FOf/XqdnEaYteX6UXQR8gnb5OQE4FndroyGV0zmozAsvXWs1AW7XPBmBrK+6gZsR5wB+Riiqs5P64Su/avmrESDERch/f9NpEmj5zg+KcSLIVIdmLjYzVQ6LoEsCVR9dWFiHnsSY4Np5efuRwSR0421INSPQQ/BkQxP9UJHcEM4h/m/DSHgQgeL1X04lQL5XLTFv8KoOYAJ5XdqGXWtvMJd8p7XpJbHmug1/gt7DcCewtA5yn/cA3vcpAKC4zyVvEl5XiHIlCtKAWE4I+bpScxBY1uXzILv7rDbrSTrLUtcaFeS5VZpgTv6olpw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=windriver.com; dmarc=pass action=none
header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none
Received: from DS0PR11MB8763.namprd11.prod.outlook.com (2603:10b6:8:1bb::12)
by PH0PR11MB7587.namprd11.prod.outlook.com (2603:10b6:510:26d::17) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sat, 31 May
2025 04:08:05 +0000
Received: from DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3]) by DS0PR11MB8763.namprd11.prod.outlook.com
([fe80::efb3:ec61:3036:be3%7]) with mapi id 15.20.8769.025; Sat, 31 May 2025
04:08:05 +0000
From: Meng Li <Meng.Li@xxxxxxxxxxxxx>
To: imx@xxxxxxxxxxxxxxx, linux-watchdog@xxxxxxxxxxxxxxx, festevam@xxxxxxxxx,
kernel@xxxxxxxxxxxxxx, s.hauer@xxxxxxxxxxxxxx, wim@xxxxxxxxxxxxxxxxxx,
linux@xxxxxxxxxxxx, shawnguo@xxxxxxxxxx, robh@xxxxxxxxxx,
conor+dt@xxxxxxxxxx, Frank.Li@xxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, meng.li@xxxxxxxxxxxxx
Subject: [v2 PATCH 3/3] dt-bindings: watchdog: fsl-imx-wdt: enable 'big-endian' property for NXP ls1046a platform
Date: Sat, 31 May 2025 12:02:13 +0800
Message-Id: <20250531040213.2589292-4-Meng.Li@xxxxxxxxxxxxx>
X-Mailer: git-send-email 2.34.1
In-Reply-To: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
References: <20250531040213.2589292-1-Meng.Li@xxxxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: TYCPR01CA0183.jpnprd01.prod.outlook.com
(2603:1096:400:2b0::19) To DS0PR11MB8763.namprd11.prod.outlook.com
(2603:10b6:8:1bb::12)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: DS0PR11MB8763:EE_|PH0PR11MB7587:EE_
X-MS-Office365-Filtering-Correlation-Id: 9fde7db4-b0f9-454e-afea-08dd9ff8be2a
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|7416014|52116014|376014|366016|921020|38350700014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?U68RFYsn0ILMSdNYofzF5lyXnbPvhWeW+y63EYRfnPvbw4QqMLiosoIyRM/E?=
=?us-ascii?Q?v40jQMlLgnf22bBUFJyfkCA9/T4ahFLmaYA5negza0HzPhvhwc1/6tdXo7A2?=
=?us-ascii?Q?WHiKm43pEMCQ6KdJNOyB70w+xxtJE3zoUyOplff4AMYC4yd0UlTFGmBI90lm?=
=?us-ascii?Q?+o2kzTEulXoCwLdhmgakyLAsoH8fasVaa1t5PeGrP7BJYMh/xfMmd6v1Z8aV?=
=?us-ascii?Q?HY+BshsU4R+DZ/DOonix6j2/wAKej0rR4RZ6eF7/FJsUxLY9rOEZIJBPLgyo?=
=?us-ascii?Q?Nmkpu0HUW80uvWWJadbU0wQKgAJDgJQQkcf/H95JyLC6U8gKKM4E5e+f1AeU?=
=?us-ascii?Q?vtM0OpTwjFK6rkujMR8Uf9juD8JfbfDq3f4L2FlxcGrAW0Nz/CYwk/bcrQ2h?=
=?us-ascii?Q?y5rWtaE54yLKA6JT+a+21wAd/AHkAWm8Iz4cN/m/hFb3u8m0QBrGVsn7Srp9?=
=?us-ascii?Q?opnyPNXB49qSACb77Wa8AKT/vlI209LVuEWuihsJCnRuMGyUUGWhZSpb01Fq?=
=?us-ascii?Q?K13+ecKeOTp4gXTdZzqy4KAl6ho2AeCSk5lOd5lLoqgaSN5kJ9yXTxNeNTSr?=
=?us-ascii?Q?hOB8hk1tbhRf2AE6J7VpcV4dTl4LbCFKks/YfjBMvipsaApkz4b+diVax/lW?=
=?us-ascii?Q?1VB3BBQ9ulgZkqSAjmhm1yDV2a8+8t0YPbT1Xrj+vp0PxWXV1jABShMUlIB8?=
=?us-ascii?Q?VP9beXkCT8oGiBpXG4cUBgYTFHvREuSQnFl3ODfDidRoIIhE1Xp5HF6rGDHW?=
=?us-ascii?Q?QZih6myHoAQ2w8tFTWwK3+YIlSaya4saMddp6AjTs3ln4/KofuvCJAru3B/Y?=
=?us-ascii?Q?xQkoFRBqbNHAAqp+7fa8VKyPnaugT9m8zv/pFRvd0FjHCngMwV5VFowzhRh5?=
=?us-ascii?Q?nO8a5Pr+hECvKApbBsuV5Ydn1FwHsCNZR4c7FJ/EzJyM+d40xPNqHw5pc9yI?=
=?us-ascii?Q?H4dfb0Gi3kuChtjOStegaoDTIYa7yBSG+vbNnAViFnCjOFQ3t6s07MEXspNi?=
=?us-ascii?Q?A40RLitIn/Ux00h1qH2O6jj+AGPms1GNMDLN9wzkTGUPRiIRR0rqALekfXJ4?=
=?us-ascii?Q?/jc6K9h5SEugvPriQZ8nB9sTmhUMA8NycQ2/QOxDcr0JVcHHSCWs8Q63z+xS?=
=?us-ascii?Q?Drv5ThZATQeDFFHlYa20wrZySb/sdWWXey3YPC/wTJajzrmN/3rPf8pE8oLn?=
=?us-ascii?Q?qKY/sxsnGSomw5a3ktC5V0WraCn9XIl36pZpMyKcjW5Cl6ykz1WXYrfmDhlR?=
=?us-ascii?Q?H+jMcwOULFJzvguSKXAJ5WjMPYaISbI2otTlaTYGHUHfsQ3JvO9ZI/bT88UT?=
=?us-ascii?Q?VUym+3v5VuUSEtnjGOHHIGXTa7wvxh2ep3u2OpxpdXtVvZMCjeRKK84GkL0K?=
=?us-ascii?Q?iQSbDALvGq2jRyU7uu/NBN4N33TzSLdrUfUlqaK4e6d746CQYdHw5ASWFn+5?=
=?us-ascii?Q?NCW6QofCRtxs+J5FyEibc1jxHvSnH+ymRk57H6FZAp+0nk2prom60/kFlYII?=
=?us-ascii?Q?2jJfgaFwbqEMGSA=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS0PR11MB8763.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(52116014)(376014)(366016)(921020)(38350700014);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?Ect1CXGrdhTZeFkK8zA9kRNjtCVU8nOYHfGgpS0ToBgkth2wNJBuU0D0wu3i?=
=?us-ascii?Q?hiMgnq4d/ShAkUI9mlroiibW9LFbq+SRihC27d6aqTTyu9s6YikyBgn9rVgA?=
=?us-ascii?Q?iGaZRvq/0nshAUVHaS6RcsHvTdZuzz/FwDH5ogsyLiopOMFdibNtd/B5RNWn?=
=?us-ascii?Q?qi2/DnO7vsGIrWraIGD1A9I7iMHn7wz55OTAPIA78H/zpXMkJScIG3vynJWv?=
=?us-ascii?Q?lhi1UX0BflrMTgNLGwbb55d+ytok0YMRkXzqGR3/UvYEtvgrD5N4floBqri/?=
=?us-ascii?Q?k3GulggT+nTvxxffKYeV7XQbE70X5AJSrsrQVEVeQWUFlSNDfrSYFLXX8BlP?=
=?us-ascii?Q?jmrW8B/dlgdW0upDBwFtPvberp+z7qcxaECf2It7BkWJgxGjp9Ln3s2nTOsH?=
=?us-ascii?Q?TqlrsAP4NEJKucDBAieDa5eddrEg1A9ubpn2BNWlPWUK8g/wgTd+WM9YgEMO?=
=?us-ascii?Q?+FRy/pdiq36KfZw0FShDM62+g5nVQY382BsBS8MZUWB0IpQ7EMs7Am9cbTiQ?=
=?us-ascii?Q?JF9tDoDMJsuz6z6EG3X0+igG+NyW3dGiu81Zzhnc/Z/Ih9JCVxskxuMXdQeO?=
=?us-ascii?Q?uy5+6YxSFmfRQ2Om9xPgJXA3wQUG8q8v2S0zT8OqbIMzBxqIcE7cY7SJCU28?=
=?us-ascii?Q?iJo3drPclerWQm5EzS/IUTKgBBsHFK/+N7g6tKEXozmHDlnhTy3QBgAdT55B?=
=?us-ascii?Q?TrGYPcuoYlGCfgbOsq6JU4nuZYlume26ynDEV8iuVFGr67w05mij8RKrx04x?=
=?us-ascii?Q?Y5mSL2dSLv00eSE/smRcjU4HOwpdkWHIa/ArEBqBnVG34AAPJ/MwwjyOnGPo?=
=?us-ascii?Q?6HUmlS/VI14W955N2sU5GgZ+l5ne0TIOarE7wfdupwIWJtrkSR3UwZdRnzTn?=
=?us-ascii?Q?del3BzlIJp2kfjXUoFaIlpprGzAjOMrqcYxl7rJkULWIaFayrWVGfoFc7MHL?=
=?us-ascii?Q?ResR/HH0Ry0P+m5F9zGFRVpxdnkmTjTbgtuecnuXRTVSn78eryGFbz4rm23W?=
=?us-ascii?Q?7huyk/8QViJbL8BzaWGOAFqb+mKQQKUnLwJl5u7e58sk+XaEj49omqqSiNeU?=
=?us-ascii?Q?lv/2kW6zgnz0uW+B4L1P2QKewLLr8KAMkXQpjcUfuPDbN3FIrS8J/FOFGp2z?=
=?us-ascii?Q?PS+HLzGMOVnrhC72dUWWgMNwZ/LD5UhWqxFWGCuzKW1/3Xb/zOXZFoZ+WgkB?=
=?us-ascii?Q?k+bDT2X0hUANBtx4TuhkuYOD8IXO9UWvlz6XLZVqcNNj5Zswd7LmZqfh+OJk?=
=?us-ascii?Q?5b54Lrdr9O+K/CsPwPydO2l/8/fRjXxuAeIpWZ0RNucRp0W5uhEOEi3Vf9f1?=
=?us-ascii?Q?Ou+92uyfkzYmW1Zb+iW5lGMpdYFTnGusn3fAPU9ZDp9UcZ89x0NNpYy7D/yu?=
=?us-ascii?Q?hlS4BfTvGPmO/HBhQVUU5nPAr+GjiuZ2Cl5jsUk//qo+xbeUZkHvQE/rCXfS?=
=?us-ascii?Q?6gf25Ur40G55gdbe8vKwesvO7zQOxEt/0jn1NLf7sptNt9JNCl0zsNRvjxdM?=
=?us-ascii?Q?s3olalH24nt7lN2u84HG+RxWNV9EIqnfn9fxqexGQRKHrc14WlSeoNvtfCjX?=
=?us-ascii?Q?Xdu/Sh/dZelXyyvTzRmgv/ZFZs3DeVvvKha64zfg?=
X-OriginatorOrg: windriver.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 9fde7db4-b0f9-454e-afea-08dd9ff8be2a
X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB8763.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 04:08:05.2057
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 82bzMH8sP7ZaAPsHvr6p2sHP8bwCd6v9M4KAftY1kVunQnJAw7YcX2qXkz4UCCQ9VbzU61yBa05K7tqXdiJD5g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB7587
X-Authority-Analysis: v=2.4 cv=EtXSrTcA c=1 sm=1 tr=0 ts=683a80a7 cx=c_pps a=/wE8qVhL3yOOyAy5PcWrvQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19
a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=VwQbUJbxAAAA:8 a=t7CeM3EgAAAA:8 a=URNpuo5YYlQxU1XLGkUA:9 a=FdTzh2GWekK77mhwV6Dw:22
X-Proofpoint-GUID: 99lEQN4P5PrEVligiikUc4gbwpkWunZX
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDAzMiBTYWx0ZWRfXwCHMffPCNv+w sOrj7T1bDah4iioL2DaFo/iL2BIawtxnu39rmAHATw4CuTCxcpjwFQELsYnEBtb8dOaKPsHwQTC /OCoARj+KaD8Z2fkGA5yq4Pg50AgD56WxVuBe8ZDDiXQrcAQ0pe4BR9EHevdb2mN8XpxAv3DKD+
5y06PX9Ulgy3GJNfM9RPn6OXA/76sLab0OrxoAY6LVuR79R5fpSiqOiBq3u+9HJjwuPS+0FW9kQ JhHhTbBy9izbCsNF9RuTy70iqiQ8GWEQjfx/1I0NG2zhVtJDeVnKqIePW1+6fOeR4IKjr/1TBgJ XIpXBnCl2hnay46Bt8FdBl6FnY54DwpSbFC20F/92/XgEqttcGcCRPHiPV0ZiADIJpAxUBHtK0Y
qrupATKtApA0I1fs4X+B6ZiVLnIpZ+0AuRWeEFo3EUW0AlglgZz6JSpai53Spq418OKOLv1O
X-Proofpoint-ORIG-GUID: 99lEQN4P5PrEVligiikUc4gbwpkWunZX
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_02,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0
adultscore=0 spamscore=0 suspectscore=0 priorityscore=1501 mlxscore=0
bulkscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0
mlxlogscore=724 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2505160000
definitions=main-2505310032
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The watchdog of ls1046a SoC is a big-endian device. So enable big-endian
property for it, so that avoid below dtbs_check errors.
arch/arm64/boot/dts/freescale/fsl-ls1046a-rdb.dtb: watchdog@2ad0000
(fsl,imx21-wdt): big-endian: False schema does not allow True

Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Meng Li <Meng.Li@xxxxxxxxxxxxx>
---
Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml | 2 ++
1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml b/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml
index 0da953cb7127..8006efb69ec7 100644
--- a/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml
+++ b/Documentation/devicetree/bindings/watchdog/fsl-imx-wdt.yaml
@@ -36,6 +36,7 @@ properties:
- fsl,imx8mq-wdt
- fsl,ls1012a-wdt
- fsl,ls1043a-wdt
+ - fsl,ls1046a-wdt
- fsl,vf610-wdt
- const: fsl,imx21-wdt

@@ -103,6 +104,7 @@ allOf:
enum:
- fsl,ls1012a-wdt
- fsl,ls1043a-wdt
+ - fsl,ls1046a-wdt
then:
properties:
big-endian: false
--
2.34.1



Return-Path: <linux-kernel+bounces-668935-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8BA1341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:33:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 008F31BA6C22
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:34:03 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0FF79235348;
Sat, 31 May 2025 04:33:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="wgJSnE7k"
Received: from mail-ua1-f53.google.com (mail-ua1-f53.google.com [209.85.222.53])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9272F28D823
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:33:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.53
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748666023; cv=none; b=MH92LOZI63JCfPIkJO+Pawamyf5Se2KG4/Wu0Obe8AcgKnoPbvGQqF+kWLEGqPLBFTN6bgLSF12f25Jj+OIE5N7LTG9Op09QgeHZQUfmW8H0Rxf7BVWuacvE/InDjbdgrQ6sFs/lSeZ45g1owsKZnzoIfzpMVlBnm12vUm0zXxw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748666023; c=relaxed/simple;
bh=HI2gTG2hl2pvZ/KehF8We4iETc1Rc/s1LqS1slee09s=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:Message-ID:
MIME-Version:Content-Type; b=uUDH9qSk6Scf80ymA5dA2XbgLD4G2CO9QjfqlGsGsMi3XG487M7dcA5nQ19MSxtJOCSAIz66ZvcXOGADiw9sOuOpOAl2QgigdcUL6W6jEDC0SIpS19kV09KiiziWXjkp5Pwy0FQoofVPq+ymBwWguDpcnWIob37I906yMSX3psA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=wgJSnE7k; arc=none smtp.client-ip=209.85.222.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org
Received: by mail-ua1-f53.google.com with SMTP id a1e0cc1a2514c-87decd1c427so746394241.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 21:33:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linaro.org; s=google; t=1748666019; x=1749270819; darn=vger.kernel.org;
h=mime-version:message-id:date:user-agent:references:in-reply-to
:subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=zqbrbMe3YXiRMwo9c+Rf5UBvsiBQDLSy82IcmZbu5Oc=;
b=wgJSnE7k09IsFYN/7n1yxalLzXS06aaIk6RROi/cYBLbu6P7494EERp6zVYNds5Twq
6yPTgchApkczT1rNGml55Z5dmlGssrqzRqcV0ygg1kwr7RpjhFYsLD+tWVPz7hbVlrDe
GiM+hovNG0mIw4KQqP7y6sai2LI78gGpgsPyyj3zF8M3GVaspzdEqA40T6XUrJ4XYSOD
BNi4z1gFxM7mhnpyFEujahD2UzBso7+DV2zQloP1XhCk9FHq9D9QE5OiZLdOr5bGYL9+
9xeUgqVnerHmqEeel6i8BcbxsmlbvaT7U9D+EFICJt+Lxbe/qOBX8I5RIgKf7PWd1sDY
sZpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748666019; x=1749270819;
h=mime-version:message-id:date:user-agent:references:in-reply-to
:subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=zqbrbMe3YXiRMwo9c+Rf5UBvsiBQDLSy82IcmZbu5Oc=;
b=GYx1+bO6M6Yw5cuSLicTZaqfQXHmqVK8UNZeChQcEdyqoSVdUJHXslBFFBgU2F3Mf1
15sT8CKutJGokMQgIwpB52NryBEhzrgdxS1UAsvaedtW0WaeJoK7zY8nbcmhyTYIm8mY
pHa5PO+9lEs/wp63bbr5fsRlNy6Sd0Z2LeUXWJQXLc3zi0QOixrH6wtNtJHQY1rGy8UY
nBn9J/FNp8uYjCsXiAp2r+31ZoYiWhNgi3XKkoVRTKmgVE4SrJ/WiQylvyNrB4EI6kU9
gfb9dKZp7v2DbKGFFps+9XOtZWKf4vzOB+eZNs0BAQgd4JxGvducEsgONzNleglOj7ip
fbUg==
X-Forwarded-Encrypted: i=1; AJvYcCXMplGiRT6jglQhuVo3urRYqNIpAZCg9hKrObEuPQRfFAlbxUc5rNwGbU7dGxnjU11hTyXuqWngU/M7CAc=@vger.kernel.org
X-Gm-Message-State: AOJu0YxLnzeEapT43zIYLhU0Dqp2mW6+QhiImpJ2nCYqQ93u3owGRPmX
8JVITBW8NbJW94p7MAalryJ//AqmnP8eafJB1b+s511I6pH3XH9g0jF8LgBJUzwI9xU=
X-Gm-Gg: ASbGnctHYWrdCIgkfe/Oy0BH4ENy27Rw8NNaJhmYpfrkxcq4/1STtfBnzOnFKqJJYBG
S6zdT29jmiIfZj7pti1yGh5P1ZO5ZzcKElxb7xU5TBJq8OaOeYCInqTuhdnVCbuwtWU0y91Zmb2
RA6eXAelzow4N9N1SAosVbb/J+OEzdj3nMM4dLT4bb5Dr5HAtMif0wKE27dA2iaSv+MyrwQDEwG
vqvlBxlut8Rx8OPd4c1+fUpyETvk/XP1NZvgNiXJMSo8P6lApVq9PABEh+oykgfh0ff/C9Bfh0F
Jqmb8TFgJE99rXFtAL05rG3dzbYkn9psKuWGjqOg60UWX/N+pKjqQ0JGRclEeQ==
X-Google-Smtp-Source: AGHT+IGv7Tb/KDlSqfX6d227HdrO3jMfr3OxdCnhGfg9ufIQMlxqL06v325RxiyNFVQEv6ylUk+//w==
X-Received: by 2002:a05:6102:50a6:b0:4e2:9b58:ed8c with SMTP id ada2fe7eead31-4e6ecd68c73mr4049536137.9.1748666019372;
Fri, 30 May 2025 21:33:39 -0700 (PDT)
Received: from localhost ([2804:14d:7e39:88d6:6a4e:54ba:b668:be6f])
by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-87e2a2c74easm3722422241.19.2025.05.30.21.33.38
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 21:33:38 -0700 (PDT)
From: Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
To: Kees Cook <kees@xxxxxxxxxx>
Cc: Ingo Saitz <ingo@xxxxxxxxxxxxxxx>, Nathan Chancellor
<nathan@xxxxxxxxxx>, linux-hardening@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] randstruct: gcc-plugin: Fix attribute addition
In-Reply-To: <20250530221824.work.623-kees@xxxxxxxxxx> (Kees Cook's message of
"Fri, 30 May 2025 15:18:28 -0700")
References: <20250530221824.work.623-kees@xxxxxxxxxx>
User-Agent: mu4e 1.12.11; emacs 29.4
Date: Sat, 31 May 2025 01:33:36 -0300
Message-ID: <87iklhjt5r.fsf@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS,URIBL_SBL_A,
WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Hello,

Kees Cook <kees@xxxxxxxxxx> writes:

> Based on changes in the 2021 public version of the randstruct
> out-of-tree GCC plugin[1], more carefully update the attributes on
> resulting decls, to avoid tripping checks in GCC 15's
> comptypes_check_enum_int() when it has been configured with
> "--enable-checking=misc":
>
> arch/arm64/kernel/kexec_image.c:132:14: internal compiler error: in comptypes_check_enum_int, at c/c-typeck.cc:1519
> 132 | const struct kexec_file_ops kexec_image_ops = {
> | ^~~~~~~~~~~~~~
> internal_error(char const*, ...), at gcc/gcc/diagnostic-global-context.cc:517
> fancy_abort(char const*, int, char const*), at gcc/gcc/diagnostic.cc:1803
> comptypes_check_enum_int(tree_node*, tree_node*, bool*), at gcc/gcc/c/c-typeck.cc:1519
> ...

Great! Thank you.

> Link: https://archive.org/download/grsecurity/grsecurity-3.1-5.10.41-202105280954.patch.gz [1]
> Reported-by: Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
> Closes: https://github.com/KSPP/linux/issues/367
> Closes: https://lore.kernel.org/lkml/20250530000646.104457-1-thiago.bauermann@xxxxxxxxxx/
> Reported-by: Ingo Saitz <ingo@xxxxxxxxxxxxxxx>
> Closes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1104745
> Fixes: 313dd1b62921 ("gcc-plugins: Add the randstruct plugin")
> Signed-off-by: Kees Cook <kees@xxxxxxxxxx>
> ---
> Cc: Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
> Cc: Ingo Saitz <ingo@xxxxxxxxxxxxxxx>
> Cc: Nathan Chancellor <nathan@xxxxxxxxxx>
> Cc: <linux-hardening@xxxxxxxxxxxxxxx>
> ---
> scripts/gcc-plugins/gcc-common.h | 32 +++++++++++++++++++
> scripts/gcc-plugins/randomize_layout_plugin.c | 22 ++++++-------
> 2 files changed, 43 insertions(+), 11 deletions(-)

Tested-by: Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>

--
Thiago


Return-Path: <linux-kernel+bounces-668936-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1850041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:42:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 199594E1D31
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:42:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3728E28D838;
Sat, 31 May 2025 04:42:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WnktmMBA"
Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com [209.85.217.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6EE1828CF4C;
Sat, 31 May 2025 04:42:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.50
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748666529; cv=none; b=QJP9A0vyEpfpDZc9CXwDbWDVPmtdDvNLbecLMBeE7ozsv44kfB5EKyY3oqL4DK9M4UB7tci2TYxJso8rCa0vMhTNlzg6g8LBXc24p9ohFfyNllJ+6BVUNF+lqslsyMyJpOlLiNDZ+PNvVTqASv0bD8jtNowjX3VRF6qQ5kXlNXg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748666529; c=relaxed/simple;
bh=VGqXujUi9yFx/a/hYVK6eAXwihXUAVub5lzgM1XcGr0=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=DvtQcsD6uSJ56R4jhXfOheWkKbaeuroM/xf9MuZB258bjcElHuZhUgwyiaggxusMoLI2TFOWjrMwx3vKmmXtgMDpRRQRUoxSe6OR8UNIiwuT9e14LQbGxEY+1iJRU+3ZH9yYCsBF3SkcOZhbsFqpjB48mxQSLaKjkpVRpb4r74M=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WnktmMBA; arc=none smtp.client-ip=209.85.217.50
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vs1-f50.google.com with SMTP id ada2fe7eead31-4c4fa0bfca2so845537137.0;
Fri, 30 May 2025 21:42:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748666526; x=1749271326; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=V9EBOQZoadO8Tdn5XLSCzKniJvmsxChEl4wEsHQNLR0=;
b=WnktmMBAz87QmMvrZqzULxb1+GnXycFlLoJtR2kPhxtLxJhDvEC197L28sLJGNeWhr
DtVN+LL2w4YSDwt/u9rvGggy9J4WAGWIHzzlyBfPdiFY65XOqeRdHP2XEekfCRv1DAAH
lkjzW1+hzHt6egbP83amRVe+j4ZPfr2GhZcKt8tKsTLKKp+CXLXnA1fnc3aAoWVZla5+
KGkAMZYHsyE9qV5oZCkYetLr43vNaDmwMUKwRdoQBp6y0HDP8qkoudX2gYbh/FmaN2uG
ya82RspOlBZ1Xeq6DYMKm6NrXsDfCXHNaFUEMQIS2o+S5lYPAzj/p3OxsxSTbxjxZkZ2
NN9Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748666526; x=1749271326;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=V9EBOQZoadO8Tdn5XLSCzKniJvmsxChEl4wEsHQNLR0=;
b=ZsA3aRWjBDDWxr9w2sFOGKVQGY73VAQUpGV3sF2tKIieuAoCzK9dPNqK5s2gBbzboD
8Hzpi3eFdiu+53Spm5U1PCjgC49VZauRG1pDlz2GmOH5zhG9+Ju5M5FyK078biI1v3++
PnPEPnPAtE9iNlHtxQlGQFew10qw+52IKcapwRpsaz2a92fR0kAqRB/vC/RJB0XstbaV
s1GS97e4t5HhjCBd8pxvJK2hIa7SRdzcP6c4lEMWbQLGZCdsxVXUNutPwZdf7dQ0IGYp
fhcBoR0OEOk1OICkO3NE/ly6eKVlPFl24QlJtyaPRhmSTLa9QhKIHNpaNlmAGW+pHh5l
NBHw==
X-Forwarded-Encrypted: i=1; AJvYcCUhJhf02ZJpOKRbl3YPwObHGckPHTNNKX5pWgdBXUOBmVwnbI+VSDvNuAr8waPAlCxRCxztZvle@xxxxxxxxxxxxxxx, AJvYcCWGDjyHovYlQiUTi/B+kdCUWMLSPaLujulHwoUy3MG3HzT5kO93nFHLF3o0bbFfHCvKRkjyYKkDRUzQCl8=@vger.kernel.org
X-Gm-Message-State: AOJu0YxBVoN6/T+ZmgVDbbq0kq04e3Ree2Lhgl27jCKZbtuhks5gUbhM
KiONo8deZCdaIzt7RzIUp4GpaRpC4kA2PPz73wOlFmyc4olSjDtnKs97rQBiVlp0Q10Ocw4XvPq
RdheuW4qeEEiwCabbG/0yrSCFui0amHQ=
X-Gm-Gg: ASbGncsH2q+evnexzi51XZyFzK8eZQJQ0uwmvvsUu8kmgRWKEKYIeClLkG3jZm8Ti5E
CG4p7Rm8fZOj7IIvrROQHH0XiIeD7ZOzonHeorVBFjDKkSFYTQWhN0uuhcEETiQa4WaanyHnWdl
Hcksmkr5QGNJEd8knXsNkCXJzp/F9k6f4rYw==
X-Google-Smtp-Source: AGHT+IEZt3bmd4/+ChkCUkHgAFdPa9qd/ctYAKrj6kzFX3PgCnevvFkD585y/++RKRQweFgx95IXcjH2OZjWEoc2ag4=
X-Received: by 2002:a05:6102:358d:b0:4c1:992c:b95d with SMTP id
ada2fe7eead31-4e701bae866mr309508137.17.1748666525967; Fri, 30 May 2025
21:42:05 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 16:41:54 +1200
X-Gm-Features: AX0GCFukT232aOA-NzZjeQ0scZe458Zm-uPbRRQUphoV6tAN2n8wvIXgiMZah0o
Message-ID: <CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Kairui Song <kasong@xxxxxxxxxxx>
Cc: linux-mm@xxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Peter Xu <peterx@xxxxxxxxxx>, Suren Baghdasaryan <surenb@xxxxxxxxxx>,
Andrea Arcangeli <aarcange@xxxxxxxxxx>, David Hildenbrand <david@xxxxxxxxxx>,
Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 4:04=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 8:17=E2=80=AFAM Kairui Song <ryncsn@xxxxxxxxx> wr=
ote:
> >
> > From: Kairui Song <kasong@xxxxxxxxxxx>
> >
> > On seeing a swap entry PTE, userfaultfd_move does a lockless swap cache
> > lookup, and try to move the found folio to the faulting vma when.
> > Currently, it relies on the PTE value check to ensure the moved folio
> > still belongs to the src swap entry, which turns out is not reliable.
> >
> > While working and reviewing the swap table series with Barry, following
> > existing race is observed and reproduced [1]:
> >
> > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > swap entry PTE holding swap entry S1, and S1 isn't in the swap cache.)
> >
> > CPU1 CPU2
> > userfaultfd_move
> > move_pages_pte()
> > entry =3D pte_to_swp_entry(orig_src_pte);
> > // Here it got entry =3D S1
> > ... < Somehow interrupted> ...
> > <swapin src_pte, alloc and use folio=
A>
> > // folio A is just a new allocated f=
olio
> > // and get installed into src_pte
> > <frees swap entry S1>
> > // src_pte now points to folio A, S1
> > // has swap count =3D=3D 0, it can b=
e freed
> > // by folio_swap_swap or swap
> > // allocator's reclaim.
> > <try to swap out another folio B>
> > // folio B is a folio in another VMA=
.
> > <put folio B to swap cache using S1 =
>
> > // S1 is freed, folio B could use it
> > // for swap out with no problem.
> > ...
> > folio =3D filemap_get_folio(S1)
> > // Got folio B here !!!
> > ... < Somehow interrupted again> ...
> > <swapin folio B and free S1>
> > // Now S1 is free to be used again.
> > <swapout src_pte & folio A using S1>
> > // Now src_pte is a swap entry pte
> > // holding S1 again.
> > folio_trylock(folio)
> > move_swap_pte
> > double_pt_lock
> > is_pte_pages_stable
> > // Check passed because src_pte =3D=3D S1
> > folio_move_anon_rmap(...)
> > // Moved invalid folio B here !!!
> >
> > The race window is very short and requires multiple collisions of
> > multiple rare events, so it's very unlikely to happen, but with a
> > deliberately constructed reproducer and increased time window, it can b=
e
> > reproduced [1].
> >
> > It's also possible that folio (A) is swapped in, and swapped out again
> > after the filemap_get_folio lookup, in such case folio (A) may stay in
> > swap cache so it needs to be moved too. In this case we should also try
> > again so kernel won't miss a folio move.
> >
> > Fix this by checking if the folio is the valid swap cache folio after
> > acquiring the folio lock, and checking the swap cache again after
> > acquiring the src_pte lock.
> >
> > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so far
> > we don't need to worry about that since folios only might get exposed t=
o
> > swap cache in the swap out path, and it's covered in this patch too by
> > checking the swap cache again after acquiring src_pte lock.
> >
> > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCzi+=
EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > ---
> > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > 1 file changed, 26 insertions(+)
> >
> > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > index bc473ad21202..a1564d205dfb 100644
> > --- a/mm/userfaultfd.c
> > +++ b/mm/userfaultfd.c
> > @@ -15,6 +15,7 @@
> > #include <linux/mmu_notifier.h>
> > #include <linux/hugetlb.h>
> > #include <linux/shmem_fs.h>
> > +#include <linux/delay.h>
> > #include <asm/tlbflush.h>
> > #include <asm/tlb.h>
> > #include "internal.h"
> > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, st=
ruct vm_area_struct *dst_vma,
> > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > struct folio *src_folio)
> > {
> > + swp_entry_t entry;
> > +
> > double_pt_lock(dst_ptl, src_ptl);
> >
> > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig_s=
rc_pte,
> > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm, s=
truct vm_area_struct *dst_vma,
> > if (src_folio) {
> > folio_move_anon_rmap(src_folio, dst_vma);
> > src_folio->index =3D linear_page_index(dst_vma, dst_add=
r);
> > + } else {
> > + /*
> > + * Check again after acquiring the src_pte lock. Or we =
might
> > + * miss a new loaded swap cache folio.
> > + */
> > + entry =3D pte_to_swp_entry(orig_src_pte);
> > + src_folio =3D filemap_get_folio(swap_address_space(entr=
y),
> > + swap_cache_index(entry));
> > + if (!IS_ERR_OR_NULL(src_folio)) {
> > + double_pt_unlock(dst_ptl, src_ptl);
> > + folio_put(src_folio);
> > + return -EAGAIN;
> > + }
> > }
>
> step 1: src pte points to a swap entry without swapcache
> step 2: we call move_swap_pte()
> step 3: someone swap-in src_pte by swap_readhead() and make src_pte's swa=
p entry
> have swapcache again - for non-sync/non-zRAM swap device;
> step 4: move_swap_pte() gets ptl, move src_pte to dst_pte and *clear* src=
_pte;
> step 5: do_swap_page() for src_pte holds the ptl and found pte has
> been cleared in
> step 4; pte_same() returns false;
> step 6: do_swap_page() won't map src_pte to the new swapcache got from st=
ep 3;
> if the swapcache folio is dropped, it seems everything is fin=
e.
>
> So the real issue is that do_swap_page() doesn=E2=80=99t drop the new swa=
pcache
> even when pte_same() returns false? That means the dst_pte swap-in
> can still hit the swap cache entry brought in by the src_pte's swap-in?

It seems also possible for the sync zRAM device.

step 1: src pte points to a swap entry S without swapcache
step 2: we call move_swap_pte()
step 3: someone swap-in src_pte by sync path, no swapcache; swap slot
S is freed.
-- for zRAM;
step 4: someone swap-out src_pte, get the exactly same swap slot S as step=
1,
adds folio to swapcache due to swapout;
step 5: move_swap_pte() gets ptl and finds page tables are stable
since swap-out
happens to have the same swap slot as step1;
step 6: we clear src_pte, move src_pte to dst_pte; but miss to move the fo=
lio.

Yep, we really need to re-check pte for swapcache after holding PTL.

>
> >
> > orig_src_pte =3D ptep_get_and_clear(mm, src_addr, src_pte);
> > @@ -1409,6 +1425,16 @@ static int move_pages_pte(struct mm_struct *mm, =
pmd_t *dst_pmd, pmd_t *src_pmd,
> > folio_lock(src_folio);
> > goto retry;
> > }
> > + /*
> > + * Check if the folio still belongs to the targ=
et swap entry after
> > + * acquiring the lock. Folio can be freed in th=
e swap cache while
> > + * not locked.
> > + */
> > + if (unlikely(!folio_test_swapcache(folio) ||
> > + entry.val !=3D folio->swap.val)) {
> > + err =3D -EAGAIN;
> > + goto out;
> > + }
> > }
> > err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr, =
dst_pte, src_pte,
> > orig_dst_pte, orig_src_pte, dst_pmd, ds=
t_pmdval,
> > --
> > 2.49.0
> >
>

Thanks
Barry


Return-Path: <linux-kernel+bounces-668937-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C78AE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:58:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id F2DF47B5800
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:56:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C13D828D823;
Sat, 31 May 2025 04:57:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="huffjJIX"
Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AE0E528CF6D
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:57:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748667476; cv=none; b=PvKoqy65H9MLiEupuG+YkhhkXYZbhTn6T3rfO6QoRyEGffVhHn5EhFGZFScUArcF3HJ57iZ2poqIzhS46VXgJIsJs3VHtvDpxzCZkj9qb/bMEGjguRtqj34nyCqqbwkUf5i/7Yvi/HiwQU4u6O/G6cyAfuZEZrH/PtUiEoPeoIw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748667476; c=relaxed/simple;
bh=8K3tn6cFhZLTgoSBk3aO4SLumHWKsqeM5XcaTpuz+eE=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=YCiuM2oxlPMJJeUTanc8tvXMfbP/8aJGoXuI35u7ZADwRey7a9VfFEfQqxGb6W+5aPgw2G0DKANMGtuCd3KWcdSUjOl5eaSquVdSkjtT7iXN7G7zCbtHGxamkW0nyuSsVkJDUKhvsPDji3RaKXOL0985G4dVbxgTLaK5QzCBb6M=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=huffjJIX; arc=none smtp.client-ip=209.85.208.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org
Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-60461fc88d7so5089698a12.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 21:57:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linux-foundation.org; s=google; t=1748667473; x=1749272273; darn=vger.kernel.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=NSpiWOEvMO3N5M8jkH7wtrupzevXtJYKexVa9S/kUp0=;
b=huffjJIX66Q/sorYYxI1icI2y9otzuqrYBn8kt1hARNUOu3052oKEgL6gPv6YZ2v0P
BlR0UcA2zkdgfKiYd+9xk7Dn0A3WPL6AUFx5Anja1kqTwoaih5X9QTDroUuNg/mOw/k2
fk7rWBeD+5u6bVeYltiG46SqhCVkWCMZaWVvg=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748667473; x=1749272273;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=NSpiWOEvMO3N5M8jkH7wtrupzevXtJYKexVa9S/kUp0=;
b=GnRTqttcIPIJPBfs0GyNBJEjcmyd5shmXsfiSp2nCxDNh/snJL1Cb/7gUuQYP0Hkkk
RwtMsGTBH2ROBEgYd0FVwjLMD8msKsVofPwDRzhUr4qTnsziA2D0OaLlnHmduaY3jOHN
mUIe+W0roRU/uPzCEUNPLbUDKlaGmnHDJLHqV1a/W5ravDuM2fqewSM+c7pvfr3T5v9a
XmE4OtAn8XzgV+3azRBpQUOMA+kQfNoc/vk4g6IVAHg1KNH2L2uE5RdfAAhq7pyShNJo
CShl2KmlE1Y/NTX0922/KMrvJveWlSoiqVwN/nqNxHyIWF/h4aPrmybP4A4RRQRkZyqC
NG2A==
X-Forwarded-Encrypted: i=1; AJvYcCVRYmWkbBddHLCJE4mcsMmwc1j7RuIdJoYMRofVRp/948xWeTckghspixjC8/jCKKYBi76aDJdllpbdxWA=@vger.kernel.org
X-Gm-Message-State: AOJu0YxmFN5HXKBLqbiDtLSqgRD4GkmVcQ0sh4wMruQCOke8Hl5KhApe
TPFwEwH2K8symvyGmuew4T0y2GgnWszQf9rrf/DQCrcHU+MUyvyzwweewdDd7q8byMAlm0UWVS3
kiDywMeo=
X-Gm-Gg: ASbGncs/DqKvrSEfFV4tZuP1V5yTX00wapSywrRG/i3WV3S3/FdfmrxFmEDy66snBnZ
LnuQSzb0qwvs93nxlM0L7HQp9XgehmBS8aCAUBaZy6AYIArMuY5nCLSk/minkvOOB2gjAA18OrH
5RtlWzu6/C6D/fJc2+yXm1MQxisgSNZGse+Sh6wetrQYje5HYpajNBjw99HCCxI5Bm1AieXH0tO
s2W3Kk2KUEZKzGhW11+Z1trsFnkPkY68V+p3YjcKFpb1BU1fAPHiwS9sbBV3Su9igK4WyoDan+Y
0kX3qgKkFqynYbzApEEHjvunvsQCiKAp6XAhOQRHAmZbpVz7dJSxzXNRU8rkugX60EhwYvzepoj
exjCKh4Kvgb04ogFaAQgpHuKueeaW9DTMlIIO
X-Google-Smtp-Source: AGHT+IHFxge5zDpNf6R50662CSi4rBJNXi9NZ+vjISmycvhHWbTRyrchxQ3WHVXj2+CPSCB/YLBd2g==
X-Received: by 2002:a05:6402:13c5:b0:601:9dc3:2795 with SMTP id 4fb4d7f45d1cf-6056dd31f11mr5654935a12.7.1748667472565;
Fri, 30 May 2025 21:57:52 -0700 (PDT)
Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com. [209.85.208.46])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6059b007c66sm1362164a12.62.2025.05.30.21.57.51
for <linux-kernel@xxxxxxxxxxxxxxx>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Fri, 30 May 2025 21:57:52 -0700 (PDT)
Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-60461fc88d7so5089671a12.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 21:57:51 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCWeiLY6ko2f3dWoenaOpzKKHWimPY5ozyFU0stBQbpkdDw7DqzKQ7PM9WmOv4MLpRaro+mfytYTaIbFREE=@vger.kernel.org
X-Received: by 2002:a05:6402:2747:b0:600:e549:3c19 with SMTP id
4fb4d7f45d1cf-6056dd32172mr4701465a12.1.1748667470987; Fri, 30 May 2025
21:57:50 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <aDmght5YpHmJ6qZ2@xxxxxxxxxx>
In-Reply-To: <aDmght5YpHmJ6qZ2@xxxxxxxxxx>
From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 30 May 2025 21:57:34 -0700
X-Gmail-Original-Message-ID: <CAHk-=wguPX5w3UVmQpOk+v1ahJwRzRNXKHUJB92cwJfNpMU4ZA@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFtMpDskWfc2_AvCLjHC4dHVHudEo-Xx4HYHew7xlRDeRM-eGMEdr31NwII
Message-ID: <CAHk-=wguPX5w3UVmQpOk+v1ahJwRzRNXKHUJB92cwJfNpMU4ZA@xxxxxxxxxxxxxx>
Subject: Re: [git pull] IOMMU Updates for Linux v6.16
To: Joerg Roedel <joro@xxxxxxxxxx>
Cc: Will Deacon <will@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, iommu@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 at 05:11, Joerg Roedel <joro@xxxxxxxxxx> wrote:
>
> - SMMUv3:

Bah. This seems very broken.

I haven't bisected it, but my arm64 build - which I sadly didn't end
up doing earlier today - breaks with modpost errors:

ERROR: modpost: "arm_smmu_make_cdtable_ste"
[drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!

(and the same error then repeated for arm_smmu_make_s2_domain_ste /
arm_smmu_make_s1_cd / arm_smmu_make_bypass_ste /
arm_smmu_make_abort_ste / arm_smmu_make_sva_cd / arm_smmu_get_ste_used
/ arm_smmu_write_entry / arm_smmu_get_cd_used).

I assume it's some obvious D'oh moment to whoever changed things to
cause this, but the cause isn't immediately obvious to me.

Linus


Return-Path: <linux-kernel+bounces-668938-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4059041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:07:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id B30901BA39DF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:07:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 73EEF28A73A;
Sat, 31 May 2025 05:07:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="FEYqfL1u"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.21])
(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 BA69528F3;
Sat, 31 May 2025 05:07:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.21
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668028; cv=none; b=fnAnMyi9lHLXC6iPDwVknNdoMCMnNZJzWkZ8OgY9Lz+Czk6IwNuWgB2ltXTfbb7o7CUB8kCucOZxOcnTudUq3pdnv4Y+BBt2mFhxNf+JQA3aIqKVoo0e0n1ALpb4D9IGxm1hUrWrl1CCG5Xc2G2edS7RHdCpoGGvFwA2dp+mqiE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668028; c=relaxed/simple;
bh=YZ4ML5dpAImMlPisgbvtvk3ijEN6nlptoNCtSdJvkHo=;
h=From:Date:To:cc:Subject:In-Reply-To:Message-ID:References:
MIME-Version:Content-Type; b=tKx7oRLNnx3y3/zYwMQMOIkBcVLRY8DUzPWPM6fGK93KHoCys77CB4D2wEaBQ40dyKsVvVHpzbW4t92UVO8qtCgk0YUOz34QV5PmJUHUhY/ZnT0kQA5eskY1Hg4n1AnasiyiauyRdl7g5+BQff9FuS5lFsvnDgteVnMJytMbo0A=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=FEYqfL1u; arc=none smtp.client-ip=198.175.65.21
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748668027; x=1780204027;
h=from:date:to:cc:subject:in-reply-to:message-id:
references:mime-version;
bh=YZ4ML5dpAImMlPisgbvtvk3ijEN6nlptoNCtSdJvkHo=;
b=FEYqfL1uoUPxXNCxOed+dzDP4jTslKLP00wqaOPTQOqugJWo+h6lTuz+
hxdjCLQiRZMxD+baDbBLbEc3+yaqhUj9bXrh2Q1a81RK9V5uhO7M+rYbT
pQeleThfvOaMSI3m5Jo+ZKMM282Hwz+HT4cdAjdrDznC+P3UBUOZsqIKB
gy9lDtYIzjukkjuDhrQZud9i1L6C0wAwFj6moadoCqHmOXwhEwWyTBeMn
E2qqLUn8/6dbJs5KMtEPBYAgGLBiJUW5INICw08VNS+Q2PX4c3cQ6hHDZ
5PWg0YWVgUewcDR5BR21YSv5l6a7yBQgJaEiIFsSA/yReCMeTjeHRIE0z
Q==;
X-CSE-ConnectionGUID: 4SzFpBmvT9yJDBhBRKEmJg==
X-CSE-MsgGUID: 2BPMkLD0RI+mAgpdg2vThg==
X-IronPort-AV: E=McAfee;i="6700,10204,11449"; a="50630679"
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="50630679"
Received: from orviesa010.jf.intel.com ([10.64.159.150])
by orvoesa113.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 22:07:06 -0700
X-CSE-ConnectionGUID: dlpNWuiMScSMGuHnvpv8LA==
X-CSE-MsgGUID: WQiGyPnJRWG08nLsqGv4bQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="144030782"
Received: from ijarvine-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.245.71])
by orviesa010-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 22:07:01 -0700
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 08:06:58 +0300 (EEST)
To: Pratap Nirujogi <pratap.nirujogi@xxxxxxx>
cc: rdunlap@xxxxxxxxxxxxx, Hans de Goede <hdegoede@xxxxxxxxxx>,
sfr@xxxxxxxxxxxxxxxx, linux-next@xxxxxxxxxxxxxxx,
platform-driver-x86@xxxxxxxxxxxxxxx, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
benjamin.chan@xxxxxxx, bin.du@xxxxxxx, gjorgji.rosikopulos@xxxxxxx,
king.li@xxxxxxx, dantony@xxxxxxx
Subject: Re: [PATCH 2/3] i2c: amd-isp: Initialize unique adpater name
In-Reply-To: <20250530200234.1539571-3-pratap.nirujogi@xxxxxxx>
Message-ID: <8670fa5f-5bf6-7dfe-1ec7-5cd1ec4472aa@xxxxxxxxxxxxxxx>
References: <20250530200234.1539571-1-pratap.nirujogi@xxxxxxx> <20250530200234.1539571-3-pratap.nirujogi@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Pratap,

Please send the next version(s) to all relevant people as indicated by
scripts/get_maintainer.pl.

On Fri, 30 May 2025, Pratap Nirujogi wrote:

> Initialize unique name for amdisp i2c adapter, which is used
> in the platform driver to detect the matching adapter for
> i2c_client creation.
>
> Fixes: 90b85567e457 ("platform/x86: Add AMD ISP platform config for OV05C10")
> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Link: https://lore.kernel.org/all/04577a46-9add-420c-b181-29bad582026d@xxxxxxxxxxxxx
> Signed-off-by: Pratap Nirujogi <pratap.nirujogi@xxxxxxx>
> ---
> drivers/i2c/busses/i2c-designware-amdisp.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/i2c/busses/i2c-designware-amdisp.c b/drivers/i2c/busses/i2c-designware-amdisp.c
> index ad6f08338124..e8cb3785c740 100644
> --- a/drivers/i2c/busses/i2c-designware-amdisp.c
> +++ b/drivers/i2c/busses/i2c-designware-amdisp.c
> @@ -62,6 +62,8 @@ static int amd_isp_dw_i2c_plat_probe(struct platform_device *pdev)
>
> adap = &isp_i2c_dev->adapter;
> adap->owner = THIS_MODULE;
> + snprintf(adap->name, sizeof(adap->name),
> + "AMDISP DesignWare I2C adapter");

scnprintf() is preferrable over snprintf(). Even if you don't use the
return value here, eventually somebody will want to get rid of snprintf()
entirely so lets try not add new ones.

> ACPI_COMPANION_SET(&adap->dev, ACPI_COMPANION(&pdev->dev));
> adap->dev.of_node = pdev->dev.of_node;
> /* use dynamically allocated adapter id */
>

--
i.



Return-Path: <linux-kernel+bounces-668939-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2201341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:10:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 460E89E7F39
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:10:09 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 673EE28D8CA;
Sat, 31 May 2025 05:10:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=fail reason="signature verification failed" (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ChbudPE6"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 A2AAC28CF59;
Sat, 31 May 2025 05:10:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668213; cv=none; b=uROFDq+kesNM7LPv3MM+13z9lbUHMKpjEemYMFRoY3d526182eMLpasLL3UBenL51rERvZURpl7D8X5JIETSdb6OD/HO8ryN2TUS54QvOo40kH9xKi9KRmCqJl8ICd8PaVoZDY4+prKeTTPtPMzCPnvhd8LQwU1q3xs6o17NWAY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668213; c=relaxed/simple;
bh=uL+BKZu6kDrl8m5sy72o33sP2MBjksLZumY0/hHgMps=;
h=Content-Type:MIME-Version:Subject:From:Message-Id:Date:References:
In-Reply-To:To:Cc; b=hG0IonEbazqO4IJO6E86yjhBAfUWCaeho6zOEhiMYLdXAUVS6y2Ft8L6z3BjD5fBxjObxqetc1cyDBI5Wla8M70tp5tGG8LaDdGLSPyrGyRCZ8HThZTKrg37nXr229KAlidDTTCuWS1QvZ/NrwYBvH+mEnIc8Lno57uWt5sN6Fk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ChbudPE6; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 70119C4CEE3;
Sat, 31 May 2025 05:10:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748668213;
bh=uL+BKZu6kDrl8m5sy72o33sP2MBjksLZumY0/hHgMps=;
h=Subject:From:Date:References:In-Reply-To:To:Cc:From;
b=ChbudPE6kmY4/3YOEolvt7DlvOHxpw6Tt6E9jnB8i0Lb7bhRG15EJiN9qjaVSskzh
rshvnh2rjKhodkAhJKN7McTm5buTU9yh+2JzQoP0AaNwzR+cyp4BcUF+hH9PQJC2a+
kO7iXg21mW+k/4NQ364m2fi+lZr9qUg9ExlnC5PeFnnlSptnqS91d8Yzs9pt/YktAG
zd71IWbc5keU8SImNDd0am3g4HwepyowevzjB7W05wj0b0qfvC5Wxvih8myur58VGy
IZWtD2ZPSg+FdSAr9RtB33SyX/KUVXXMKm4kGmjgyEvzBZ1z81ecVgK/CH/DMYqAh5
9ACVpTobtCgdg==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id EB09D39F1DF3;
Sat, 31 May 2025 05:10:47 +0000 (UTC)
Content-Type: text/plain; charset="utf-8"
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: Re: [PATCH v4 0/2] net: stmmac: prevent div by 0
From: patchwork-bot+netdevbpf@xxxxxxxxxx
Message-Id:
<174866824674.44670.9404709509125224265.git-patchwork-notify@xxxxxxxxxx>
Date: Sat, 31 May 2025 05:10:46 +0000
References: <20250529-stmmac_tstamp_div-v4-0-d73340a794d5@xxxxxxxxxxx>
In-Reply-To: <20250529-stmmac_tstamp_div-v4-0-d73340a794d5@xxxxxxxxxxx>
To: =?utf-8?q?Alexis_Lothor=C3=A9_=3Calexis=2Elothore=40bootlin=2Ecom=3E?=@codeaurora.org
Cc: alexandre.torgue@xxxxxxxxxxx, joabreu@xxxxxxxxxxxx, andrew+netdev@xxxxxxx,
davem@xxxxxxxxxxxxx, edumazet@xxxxxxxxxx, kuba@xxxxxxxxxx, pabeni@xxxxxxxxxx,
mcoquelin.stm32@xxxxxxxxx, richardcochran@xxxxxxxxx, preid@xxxxxxxxxxxxxxxxx,
thomas.petazzoni@xxxxxxxxxxx, maxime.chevallier@xxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx, linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Jose.Abreu@xxxxxxxxxxxx, si.yanteng@xxxxxxxxx
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello:

This series was applied to netdev/net.git (main)
by Jakub Kicinski <kuba@xxxxxxxxxx>:

On Thu, 29 May 2025 11:07:22 +0200 you wrote:
> Hello,
> this small series aims to fix a small splat I am observing on a STM32MP157
> platform at boot (see commit 1) due to a division by 0.
> There is no functional change in this revision, this has just been
> rebased on top of net/main.
>
> Signed-off-by: Alexis Lothoré <alexis.lothore@xxxxxxxxxxx>
>
> [...]

Here is the summary with links:
- [v4,1/2] net: stmmac: make sure that ptp_rate is not 0 before configuring timestamping
https://git.kernel.org/netdev/net/c/030ce919e114
- [v4,2/2] net: stmmac: make sure that ptp_rate is not 0 before configuring EST
https://git.kernel.org/netdev/net/c/cbefe2ffa778

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html




Return-Path: <linux-kernel+bounces-668940-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C081641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:11:07 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 486969E7FFC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:10:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0F65028D85A;
Sat, 31 May 2025 05:10:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hfCgZX3G"
Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E62E11096F;
Sat, 31 May 2025 05:10:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668258; cv=none; b=LmJ7QzMqrh/IVGJNq2O9yGujIoKNCnoGLg65anQgNM7T6A1n2uDgO8v1WVSsj/CWsk1SrlDUuD4bvhRp/7V3egJ/kj70D8yXC4Omg+27hIhR/sGKF8uj4y5LL6LcAT152jyt/juC6h/QVGvV7xU0QtuEp2RzmQlL/aFjn166NK4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668258; c=relaxed/simple;
bh=Q/3NgC5YAv/sLlRho9eipXhR4jPMKVejH7/5YMH1zLU=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=AiSENV0nQ2uk11r9lL1uhmHxSKg/vThVD8XE/QvnJnKJ0DjMKmdNDeyP2a0p1Eprtwbx6TvfcFbW7IJBN0p1ewX7OvuNM/v48ZZSLJ8i90qkzsLKsZIhUEbH275quALS+4nENUONl4g/DE7ZaIM/fH/y6kyCGReMImnNvT6LVxQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hfCgZX3G; arc=none smtp.client-ip=209.85.215.180
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-b2c41acd479so1856364a12.2;
Fri, 30 May 2025 22:10:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748668256; x=1749273056; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=mU0qbiJgr9zua+cBR3kFzOAUJVTnz0mj9Ono3++R7a4=;
b=hfCgZX3GAcmkT2IA9Todqy/fEuMBp7QgqM5TAjdXLuZSjeoPRHlmSHoJtBUEHM2zpL
pCyyJemsbaFOzXF9/vXnHxsvXPfqLNkJ/96KeEsi0LmfTVAjfh+EfH5BV9otLgSFdvGq
TSWBHcvJ/O/z2yjsd6tSDH5i0T2O611gs0Kh+CsYkdUa3pb/wSpxZlfFYDCDP8sQwTjx
Bj+2r8/pumpQRUZfL53co7H8svB6b++BZ0craVpkO760/A1LtHfV309eHRwVDKMawzYp
J2tvrLkceBNMNDpOrqg72Nbr0pTXRGCFGYzHudAwi1OW3EZ3gfsh6nMRNFJR/YIjHzR1
RCdg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748668256; x=1749273056;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=mU0qbiJgr9zua+cBR3kFzOAUJVTnz0mj9Ono3++R7a4=;
b=DpqIvwsMYFPpGi2ocP7bPC8bBIVl9V3fUW9xye//31sTawZ4BFCwSphO1/Kg3jl+72
/H8kvJQg/y1ZBC4gOH2vUmYLjpUsv6g76ATej9TXHU3r+C9DQg2085vHkMAe3p9V++/W
RiEJLyMHU8clj47/sB7Ow2oWgcXqnlDsyK6Gt9AP2LOySUGqh8DtIGzyTKLeeN1rNsBs
t7QCmJU9Nn9n0U11VMusWw8eyDCd2K5otpQYGc5e1DBFMVnKD1Ea/SwJ2vuYrJlLf7De
MdeBdW1L7npXJjxhOkgckmoVdfCeCq+2q4+QQuxKLCIcuiZL5JyOWQC9XEmQ8NHvi01a
3Q+A==
X-Forwarded-Encrypted: i=1; AJvYcCVBC1dAZOgso21mw0sXEYDKJfeF11p9pm/ESuwxO4lx9nmiCyv79PW6o+6gtpj24QPGq+ZIVTx3o1ID31I=@vger.kernel.org, AJvYcCVZuX6FO7bpLNVbqLOLdMQRyenOw5PC/8Wr6qcRWpwTGxpHHZFujQ3FX2D4G3Fr2OR+g4OewI71pH5C8vcgCWMt@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyMWCgDhOhPgwYK4Tk8t2kW1ZGnD572Nvuts3NSOB/CwwJ4NSOq
ktyPefCUXKkrFQR0YBi4iPyNvgxOTLABQVhwLYn7+gwGpbEuxo7MH/iNUU3ipTKu3Cw=
X-Gm-Gg: ASbGncua3GMGYf6zkCUUzy1SVAWRVeAELCEVbyLWDgoU8H2uSWlL+dYitrkAqK0kD0p
zHLlszTGOWGdcVnCeTj9I3SRvs/Dj0OxwLSRDvC43KiZWTid51p7FJG7xwITxKrcPP2LTpfuJfk
2SRzC/quN4j+30uAmKpBzybz8rKAfpO1lirKQp/o9ANYLpBLAGj8N8Lgll+PFKMNUNxePdAErhr
gtkCa9NtjTM4cYpIhsqjn73FBU7zWWR4CtK2Dk9eNWUIP05woJshBng2CVbD4i623Z4PLjJzo8t
Tjq61CBe3Tf9DAYkHBZtTjYUI7LEVI/ypjS3xxqAZ19a8uKBqP84Fwy/4noeHLVqDvU=
X-Google-Smtp-Source: AGHT+IF7KKaVbGsmx/RswYFw51WZct5NOZ14VEoN8FMOS4cHviEpTeI3GVxjG6n7f1TM0qV2ZO1J1A==
X-Received: by 2002:a17:902:d58d:b0:234:8c64:7885 with SMTP id d9443c01a7336-2355f784ab6mr13423525ad.53.1748668255766;
Fri, 30 May 2025 22:10:55 -0700 (PDT)
Received: from minh.192.168.1.1 ([2001:ee0:4f0e:fb30:1655:88ee:e7f3:487a])
by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-b2eceb297c8sm2291117a12.26.2025.05.30.22.10.51
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 22:10:55 -0700 (PDT)
From: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
To: netdev@xxxxxxxxxxxxxxx
Cc: Jakub Kicinski <kuba@xxxxxxxxxx>,
Simon Horman <horms@xxxxxxxxxx>,
Philip Li <philip.li@xxxxxxxxx>,
oliver.sang@xxxxxxxxx,
Shuah Khan <shuah@xxxxxxxxxx>,
linux-kselftest@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Bui Quang Minh <minhquangbui99@xxxxxxxxx>
Subject: [PATCH net v2] selftests: net: build net/lib dependency in all target
Date: Sat, 31 May 2025 12:10:39 +0700
Message-ID: <20250531051039.6561-1-minhquangbui99@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

We have the logic to include net/lib automatically for net related
selftests. However, currently, this logic is only in install target
which means only `make install` will have net/lib included. This commit
moves the logic to all target so that all `make`, `make run_tests` and
`make install` will have net/lib included in net related selftests.

Reviewed-by: Jakub Kicinski <kuba@xxxxxxxxxx>
Signed-off-by: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
---
Changes in v2:
- Make the commit message clearer.

tools/testing/selftests/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
index 6aa11cd3db42..5b04d83ad9a1 100644
--- a/tools/testing/selftests/Makefile
+++ b/tools/testing/selftests/Makefile
@@ -205,7 +205,7 @@ export KHDR_INCLUDES

all:
@ret=1; \
- for TARGET in $(TARGETS); do \
+ for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
BUILD_TARGET=$$BUILD/$$TARGET; \
mkdir $$BUILD_TARGET -p; \
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
@@ -270,7 +270,7 @@ ifdef INSTALL_PATH
install -m 744 run_kselftest.sh $(INSTALL_PATH)/
rm -f $(TEST_LIST)
@ret=1; \
- for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
+ for TARGET in $(TARGETS); do \
BUILD_TARGET=$$BUILD/$$TARGET; \
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install \
INSTALL_PATH=$(INSTALL_PATH)/$$TARGET \
--
2.43.0



Return-Path: <linux-kernel+bounces-668941-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7994E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:12:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 0D7AD3B3955
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:11:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D437128D846;
Sat, 31 May 2025 05:11:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="SvYXatAU"
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 8DE951096F;
Sat, 31 May 2025 05:11:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668319; cv=none; b=NkXZlAKHUbzGmHepJxwWQojbg8wuADcZZbvvQGPvG+Cvf5FcSxa8DiJoIhA8dzr8YzVN/sxt6J/V30CallD1LJ7fDG0ywBMz9dnRAgKepz7xeQBGlMNihyZPgHHKXSeFZghBVDoBQ5cVkO93GdKpZGQTKVubIEEcQZwbPi+Udyk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668319; c=relaxed/simple;
bh=JVbcaufnfIc/KhfpdmMAmhDvMF0gYQQiWfMmevxHT6M=;
h=From:Date:To:cc:Subject:In-Reply-To:Message-ID:References:
MIME-Version:Content-Type; b=J6ivo1MLk0hrZshrI2lSA5aXIEYqw6A4YNmU+PTdbuTS7tT71R0wMMKmTUsYHqZKK6+pERrEMqdAABXQsvb97sVlCAMK5PWoUbzdqnMoSLJuLQ7p99I+U4zREh5lR76UQnqiNzEOFrlYeHTZv70ZpHD1MTx8MmkUfCi/GiNwJyM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=SvYXatAU; arc=none smtp.client-ip=192.198.163.10
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748668317; x=1780204317;
h=from:date:to:cc:subject:in-reply-to:message-id:
references:mime-version;
bh=JVbcaufnfIc/KhfpdmMAmhDvMF0gYQQiWfMmevxHT6M=;
b=SvYXatAUQXPq+btIO4JKYammVCDSoAk3kp6id1tIwqaTzR2cY/X0IeVC
p6MFTSZOw8EV03cubu7ozhbTSBp/C4RW9k7j//wOexgTtsiMXFgkbsYje
2vWxrRTJ77EOXzY6dPHpq2epK6OwUYsTf2aSK9a5RJ1XG5KRPW0SDt/0L
YYvWo4RJlbKtUZJT8bjSDO69xcM6nV/qO3qgrYcCVAgZrK8ScXUL7dq/K
/Gq5vGTcMwz5thZY9C5uvjU/MARfUhflCQFrJ+uVA5Br4bzm/1d7U9obp
m/D+nMiZKQqcx4ibo5MTbd/hYqOGQb6RZzzOXg508zAseHdqr7USfig5a
w==;
X-CSE-ConnectionGUID: 2AJoLjXhT4OLd52fYbViKQ==
X-CSE-MsgGUID: Dn8obadFTl2W0bWGt3DsSA==
X-IronPort-AV: E=McAfee;i="6700,10204,11449"; a="62106249"
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="62106249"
Received: from orviesa004.jf.intel.com ([10.64.159.144])
by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 22:11:56 -0700
X-CSE-ConnectionGUID: 1u2d66MLRn+1RZgNdveFhw==
X-CSE-MsgGUID: HNFbF5wSRhiqp9+Q6rBOsQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="149095334"
Received: from ijarvine-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.245.71])
by orviesa004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 22:11:52 -0700
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 08:11:48 +0300 (EEST)
To: Pratap Nirujogi <pratap.nirujogi@xxxxxxx>
cc: rdunlap@xxxxxxxxxxxxx, Hans de Goede <hdegoede@xxxxxxxxxx>,
sfr@xxxxxxxxxxxxxxxx, linux-next@xxxxxxxxxxxxxxx,
platform-driver-x86@xxxxxxxxxxxxxxx, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
benjamin.chan@xxxxxxx, bin.du@xxxxxxx, gjorgji.rosikopulos@xxxxxxx,
king.li@xxxxxxx, dantony@xxxxxxx
Subject: Re: [PATCH 3/3] platform/x86: Use i2c adapter name to fix build
errors
In-Reply-To: <20250530200234.1539571-4-pratap.nirujogi@xxxxxxx>
Message-ID: <ea615c2e-d306-06b2-10b0-2423ab59a8e9@xxxxxxxxxxxxxxx>
References: <20250530200234.1539571-1-pratap.nirujogi@xxxxxxx> <20250530200234.1539571-4-pratap.nirujogi@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025, Pratap Nirujogi wrote:

> Use 'adapater->name' inplace of 'adapter->owner->name' to fix build issues
> when CONFIG_MODULES is not defined.
>
> Fixes: 90b85567e457 ("platform/x86: Add AMD ISP platform config for OV05C10")

This is the which should have this Fixes tag, the other commits should not
have it as they're not really the fix (but this change just depends on
them, but since stable is not in picture yet for this driver we don't
need to indicate even those deps).

> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Link: https://lore.kernel.org/all/04577a46-9add-420c-b181-29bad582026d@xxxxxxxxxxxxx
> Signed-off-by: Pratap Nirujogi <pratap.nirujogi@xxxxxxx>
> ---
> drivers/platform/x86/amd/amd_isp4.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/amd/amd_isp4.c b/drivers/platform/x86/amd/amd_isp4.c
> index 0cc01441bcbb..80b57b58621a 100644
> --- a/drivers/platform/x86/amd/amd_isp4.c
> +++ b/drivers/platform/x86/amd/amd_isp4.c
> @@ -151,7 +151,7 @@ MODULE_DEVICE_TABLE(acpi, amdisp_sensor_ids);
>
> static inline bool is_isp_i2c_adapter(struct i2c_adapter *adap)
> {
> - return !strcmp(adap->owner->name, "i2c_designware_amdisp");
> + return !strcmp(adap->name, "AMDISP DesignWare I2C adapter");

Since both are in-kernel code, share that name through a define in some
header.

--
i.



Return-Path: <linux-kernel+bounces-668942-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1E80D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:15:11 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id D71B23B463E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:14:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D363128CF58;
Sat, 31 May 2025 05:15:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="FdeU0Wq+"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16])
(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 64C0328CF4C;
Sat, 31 May 2025 05:15:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.16
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668504; cv=none; b=XwAozSl9u7rSf/We1G3CbqDwmUY+4ncyszpcTAY9aIsy7MmAb1bL6puwBUKV7dJdOjVlej+14f0m6JYnOhCGqZJ5W0UKH+R6Vl5i8LPA6qBffHIELlRmhKsVydXoTHb3pjx8Mc/LhpGFqg/hWGhT4JwD2mC33gK0WL/Jq9bZSGY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668504; c=relaxed/simple;
bh=ov2RyoyGWZ9CUaKx1R+A9gSrh0GTb1Lv9Uc4r1MDsHc=;
h=From:Date:To:cc:Subject:In-Reply-To:Message-ID:References:
MIME-Version:Content-Type; b=fEJZnQKBl3vl1trOogM7n6eN7dyR7+fwwMuWwNkx5bVh12MCn2fGDnOcGdlFb4zvSYL1FT7elFLbe7VtkVeD75Asf71kr2FcGycui9FUtiN8+4NK/BuXYkcZbVp6fxUUKMmECYMCRqlcr2/c2LV91UEx+XQLGZlLrD6Y0uzMVVI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=FdeU0Wq+; arc=none smtp.client-ip=192.198.163.16
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748668502; x=1780204502;
h=from:date:to:cc:subject:in-reply-to:message-id:
references:mime-version;
bh=ov2RyoyGWZ9CUaKx1R+A9gSrh0GTb1Lv9Uc4r1MDsHc=;
b=FdeU0Wq+AW8+2kWbWy/EyNcdgLwi9O/ZOGbs1e5q9UrTUn9JBB/vTtt+
Y79OuWDRB5Lyx8r3eD7aTMBfBLVXbDUVEdz99s1vVMYHGaL+WxoDrPqFd
v70bKJuXfOxfuB+i8IglqZ4gEz7TMrat42Cf9hVgvEwNipoVa6qLmuKVv
the3BgcqTLDe02C07zK5J+AGr2oaKoeu1qamoyjXQbumagRfe6JvKxrO/
lpKXn7US8pAjqQEj7FgzzQXwlYvNbVu1Kk4PMwiuNXOfZGFMamWohdqQN
VCJT5Mk+vK7fDF/QApgNwESie58YQZz0DvklJ2oUsMrg5Ta++Ol6xuE17
w==;
X-CSE-ConnectionGUID: Ag6r+IQ1QnCGaClWWBZhAg==
X-CSE-MsgGUID: zqX30EUFSd2dx6Hpl4QvfA==
X-IronPort-AV: E=McAfee;i="6700,10204,11449"; a="38388614"
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="38388614"
Received: from orviesa009.jf.intel.com ([10.64.159.149])
by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 22:15:02 -0700
X-CSE-ConnectionGUID: cMrtS6uQRyCXosT/QY4O4g==
X-CSE-MsgGUID: o0rFZUSPQ7ymTJug2gUg7A==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="144083942"
Received: from ijarvine-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.245.71])
by orviesa009-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 22:14:57 -0700
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 08:14:53 +0300 (EEST)
To: Pratap Nirujogi <pratap.nirujogi@xxxxxxx>
cc: rdunlap@xxxxxxxxxxxxx, Hans de Goede <hdegoede@xxxxxxxxxx>,
sfr@xxxxxxxxxxxxxxxx, linux-next@xxxxxxxxxxxxxxx,
platform-driver-x86@xxxxxxxxxxxxxxx, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
benjamin.chan@xxxxxxx, bin.du@xxxxxxx, gjorgji.rosikopulos@xxxxxxx,
king.li@xxxxxxx, dantony@xxxxxxx
Subject: Re: [PATCH 1/3] i2c: designware: Initialize adapter name only when
not set
In-Reply-To: <20250530200234.1539571-2-pratap.nirujogi@xxxxxxx>
Message-ID: <e75a0e17-8a1b-14f0-a33d-e59c0f692651@xxxxxxxxxxxxxxx>
References: <20250530200234.1539571-1-pratap.nirujogi@xxxxxxx> <20250530200234.1539571-2-pratap.nirujogi@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025, Pratap Nirujogi wrote:

> Check if the adapter name is already set in the driver prior
> to initializing with generic name in i2c_dw_probe_master().
>
> Fixes: 90b85567e457 ("platform/x86: Add AMD ISP platform config for OV05C10")
> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Link: https://lore.kernel.org/all/04577a46-9add-420c-b181-29bad582026d@xxxxxxxxxxxxx
> Signed-off-by: Pratap Nirujogi <pratap.nirujogi@xxxxxxx>
> ---
> drivers/i2c/busses/i2c-designware-master.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
> index c5394229b77f..ab03943d6aaf 100644
> --- a/drivers/i2c/busses/i2c-designware-master.c
> +++ b/drivers/i2c/busses/i2c-designware-master.c
> @@ -1042,8 +1042,9 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev)
> if (ret)
> return ret;
>
> - snprintf(adap->name, sizeof(adap->name),
> - "Synopsys DesignWare I2C adapter");
> + if (!adap->name[0])
> + snprintf(adap->name, sizeof(adap->name),
> + "Synopsys DesignWare I2C adapter");

I'd convert this to scnprintf() here as well and add to the changelog:

While at it, convert to scnprintf() that is preferred over snprintf().

As with the other patch, this too is missing receipients (as indicated
by the get_maintainers script).

--
i.



Return-Path: <linux-kernel+bounces-668943-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D218541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:20:02 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 77C20A22912
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:19:41 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3925B2288C0;
Sat, 31 May 2025 05:19:58 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=8bytes.org header.i=@8bytes.org header.b="G9lhgLDJ"
Received: from mail.8bytes.org (mail.8bytes.org [85.214.250.239])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 41554191F91
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:19:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=85.214.250.239
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668797; cv=none; b=D8aMOPf4l1asVlT817jz0XrOl7Vv3CM3n8zMC4OHWbUC+XAIiW3P/1D9Sevy6ELplWP5rsFkgYr7/a+jDE5jqQyHQx0zwLr2DS/M427c6NoE2VTI+AWt1soU/WBqYRQwg4yQ43U+1eKM0Iam89UrH2ADvoeCNvGFEP1PwBx6uwk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668797; c=relaxed/simple;
bh=ezSk1AScLKA5gqQ1etOOqZ8zKztgHmnwelpnkUWYS0k=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=kh7qn9Lk8UOlUy36yOlEahF103FRfPkD1REhZE1TjSAX7nzdy7PHKJif+TG09WBQeriK9anmRXVpZpPAsewb5yI4DAl2/YjzmyDQJrCv7pDBjTZ8bP0kLLfVcWYDtYE4lLR2ptCAXYgQ3KBSzJzKgFGG6EEvrCPMFGHfu7O4WPs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=8bytes.org; spf=pass smtp.mailfrom=8bytes.org; dkim=pass (2048-bit key) header.d=8bytes.org header.i=@8bytes.org header.b=G9lhgLDJ; arc=none smtp.client-ip=85.214.250.239
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=8bytes.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=8bytes.org
Received: from 8bytes.org (p4ffe03ae.dip0.t-ipconnect.de [79.254.3.174])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mail.8bytes.org (Postfix) with ESMTPSA id E17F64C65E;
Sat, 31 May 2025 07:19:52 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=8bytes.org;
s=default; t=1748668792;
bh=ezSk1AScLKA5gqQ1etOOqZ8zKztgHmnwelpnkUWYS0k=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=G9lhgLDJFvR5tpEy12C9Lm0lQXRGrjrbpqUUZXr4hy5K8JDFMS5oGbPjS1raLyAxR
9wtGAtVpqRxGKYWaoMHv99FcR5wmRa5vtVtvvqptFkydPEJ2dLoN6pXEBr4J+856w7
0VpV5kgustMmnWJ8YlCznY6qmPSjIEWOa0KqgSRol5Jpu+bAgNTE9RHXV8nlFWBzJh
mPEYZk+UYrrnATLmY6SM4dHWKRtKJ64xTpngcqKwvbXjFuUA1woOm/twizf4qDGTX+
i4gkWq0ADdtKKLTCDXScPVZl6liRoFfNngK68aUIg8EKhHlmh6VO/XU/04YcszRVjh
sEYZsHp5wo14Q==
Date: Sat, 31 May 2025 07:19:51 +0200
From: Joerg Roedel <joro@xxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Will Deacon <will@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
iommu@xxxxxxxxxxxxxxx
Subject: Re: [git pull] IOMMU Updates for Linux v6.16
Message-ID: <aDqRd6Nh7iwnFvmw@xxxxxxxxxx>
References: <aDmght5YpHmJ6qZ2@xxxxxxxxxx>
<CAHk-=wguPX5w3UVmQpOk+v1ahJwRzRNXKHUJB92cwJfNpMU4ZA@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAHk-=wguPX5w3UVmQpOk+v1ahJwRzRNXKHUJB92cwJfNpMU4ZA@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 09:57:34PM -0700, Linus Torvalds wrote:
> On Fri, 30 May 2025 at 05:11, Joerg Roedel <joro@xxxxxxxxxx> wrote:
> >
> > - SMMUv3:
>
> Bah. This seems very broken.
>
> I haven't bisected it, but my arm64 build - which I sadly didn't end
> up doing earlier today - breaks with modpost errors:
>
> ERROR: modpost: "arm_smmu_make_cdtable_ste"
> [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!
>
> (and the same error then repeated for arm_smmu_make_s2_domain_ste /
> arm_smmu_make_s1_cd / arm_smmu_make_bypass_ste /
> arm_smmu_make_abort_ste / arm_smmu_make_sva_cd / arm_smmu_get_ste_used
> / arm_smmu_write_entry / arm_smmu_get_cd_used).

Gah, sorry for that. I didn't see it in my testing, but have seen a
similar problem related to iommufd which was fixed by removing the
iommufd part of this patch-set:

https://lore.kernel.org/all/1926170.CQOukoFCf9@xxxxxxxxxxxxxxxxxxx/

So maybe it is worth a try reverting the arm-smmu part of this series as
well:

e436576b0231542f6f233279f0972989232575a8

Regards,

Joerg


Return-Path: <linux-kernel+bounces-668944-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 214A841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:20:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 2E3801BA7DB0
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:20:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id DBFEB28D8C9;
Sat, 31 May 2025 05:20:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UV0EDyK2"
Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C8E828D839;
Sat, 31 May 2025 05:20:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.50
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668802; cv=none; b=H2QkjB7P/XdjekE6BClY/jCU+etRtqA9kAwi0/q81Mp9odRIcvBJvNV5w1GswpPcYSOItkGnpaRUMdkNXE2qFtijAUUxAJPhP41THHFgmbt99ZBkj/Bfm0e4dY1+3BLI0aqTBehRjm189Qb8hvLPoNhAO3pIsY9CXRxmtrbbTv4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668802; c=relaxed/simple;
bh=BBVxLVZgcTk3DvCF23Av3f4k8kCGKBWwVpL1OyybODs=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=gTbYMssGsGgj/fg4JynJcCqNr8Es8EIKoOKtSjOsyCOm4IurWYYbPPhzILecuPFAh4Y/uSf9kWSC5OASZ6w2h+CeSzqwy0HLCaf3xg5fi32iNgfbyoJRkMvbP46QZ3oqCDPAk27oL2TAFzCdJrsy7Gf16nTe9kpJQKp83qdr4s0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UV0EDyK2; arc=none smtp.client-ip=209.85.216.50
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pj1-f50.google.com with SMTP id 98e67ed59e1d1-31223a4cddeso1763797a91.1;
Fri, 30 May 2025 22:20:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748668799; x=1749273599; darn=vger.kernel.org;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:from:to:cc:subject:date:message-id:reply-to;
bh=CQQOUpd2aEpd35mNHvrhLzZxqRBywxXQm12/HNX6Y0E=;
b=UV0EDyK2uNOI6AKuWhAVV7KhJrpoTM1U/HxXFF3Num4tlN/iQ37kcJMx3hQZzvYhUa
4vuPxQwGErSLubBTtguIKDnG5C4afTCWZSYuIoYA/ZyxNNg+yRRbMHETXHPU1Vx2revq
jgHW9O/m215AcqrFQKTGBJJWnHDgVYtn/48YeDiSavTtd1duS2guA2QJMD2stTw+K9C0
JvrL33JBgd+tRzQoSKy0E0ik2uZDXp4TEK54fKWw+RnnHuW1btkzIZaxnAQewGOj1ape
lj38HmKqzt4lsdKgWpVkgq1yYhm8k4s0jUwnbkuAQSj/zHwSXD+ImO4TkUvpIxMb+wD7
m26g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748668799; x=1749273599;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=CQQOUpd2aEpd35mNHvrhLzZxqRBywxXQm12/HNX6Y0E=;
b=jSpFgYQNOXpsM+OgA/8K7FDTjDU3Zfk/z4pgpyOT75P0j/ttmgm6VTqhy76KPQh0en
zklSDBI38brj+HiFdMR69AhZEdo+Fm3bCM8L2NZuW8if/wsSUsQOZs8jOPgPM1A/H+bO
gjJP/9NkSdNrmRfl9TA3g9D6gYCoDB9w0ZtnR9F8t7Vb5Y6sZdCMIcyFcQBenKyUuIjw
fvt/rmx0sAf46nL8Tr92Ls5TPChN2xAyg93GvqLlPHorRd793CBF9H/mZWvciEKKM5I8
Kb9QGzeSEUuVxlK1SvCwf1NFVhq7JWdSaSUjU5Y+UBi0I8miHX5M3ACOIzgL2VtlZOAF
38dA==
X-Forwarded-Encrypted: i=1; AJvYcCUGM8q9VZTWgq/ZyDr4gEwi4Pi6ODCifYlT7a4yhEbov9oEcEwGZoTpvplXBRtNDq8sNFZTmIjnhndjNw8=@vger.kernel.org, AJvYcCUJVCdKmXusQKnRwrrJpkJtw2HTg5kezOxFX/K415BC7nf6Z3UxIJ5owq7ES/7G14IgRTe4Iun4dXkbUDq5rXy8@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YzRCdaag+850yyuVC4hl4NTGOV9JeYtN/0rpU+5nnPGeAkMOdyI
YCX2GAR9NwMcYMdu6x1I5/AiUSD84w80wzQzL8nWs1yngEfmi++VLxpE0Fqa+v10HN0=
X-Gm-Gg: ASbGncuO850nLoCVQ+yrHxuSVKUb1sMuTRYeB/GpcAWwTw6X5Guvk438SzK97p/0iTo
WwPNaI0S02LfAzlfI4ftwyU34daCW1KjrYHBoHiidr9VJEdkcHZr9kPhq0yEPaY0308w3CvHg6w
a5vTrCn+xJZ///KIDehVWrSBVA+KU8eZDXKBrKNPD8RzOSAMmtR6ys2+6ZeWhGWDeO4ukUwVfyP
x6mmdC/UcLZrKQOkH0zzldL3N9uE9IXrNDR4aM+JGHOz8fjmc0XUPsjHobI+gARE99Mib45DKkb
AK/kN6uoVJ6Uu1qK38BtZmjso0yZcFKfYM+yym+L2P+YCKnzqq/fO0fnAdoQJ3yzpfUX7mPKvxe
eLJmnKy2DBKOo90iF2iOm3SEsP2CSeQ==
X-Google-Smtp-Source: AGHT+IHURzH3SW/8f+MPckxVg/iu91qiOcC2ObXe2OhVOn6Yre4ZLCm0gWAVErDmLk+0DE0oxmcSbA==
X-Received: by 2002:a17:90b:4c44:b0:312:e9d:3ff2 with SMTP id 98e67ed59e1d1-3127c6a9a43mr1615751a91.7.1748668799343;
Fri, 30 May 2025 22:19:59 -0700 (PDT)
Received: from ?IPV6:2001:ee0:4f0e:fb30:1655:88ee:e7f3:487a? ([2001:ee0:4f0e:fb30:1655:88ee:e7f3:487a])
by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3124e3327b4sm2019691a91.48.2025.05.30.22.19.55
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Fri, 30 May 2025 22:19:58 -0700 (PDT)
Message-ID: <5956ac6b-f1b5-42be-8bf1-c25b379398f7@xxxxxxxxx>
Date: Sat, 31 May 2025 12:19:53 +0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH net v2] selftests: net: build net/lib dependency in all
target
To: netdev@xxxxxxxxxxxxxxx
Cc: Jakub Kicinski <kuba@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
Philip Li <philip.li@xxxxxxxxx>, oliver.sang@xxxxxxxxx,
Shuah Khan <shuah@xxxxxxxxxx>, linux-kselftest@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
References: <20250531051039.6561-1-minhquangbui99@xxxxxxxxx>
Content-Language: en-US
From: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
In-Reply-To: <20250531051039.6561-1-minhquangbui99@xxxxxxxxx>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/31/25 12:10, Bui Quang Minh wrote:
> We have the logic to include net/lib automatically for net related
> selftests. However, currently, this logic is only in install target
> which means only `make install` will have net/lib included. This commit
> moves the logic to all target so that all `make`, `make run_tests` and
> `make install` will have net/lib included in net related selftests.
>
> Reviewed-by: Jakub Kicinski <kuba@xxxxxxxxxx>
> Signed-off-by: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
> ---
> Changes in v2:
> - Make the commit message clearer.
>
> tools/testing/selftests/Makefile | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
> index 6aa11cd3db42..5b04d83ad9a1 100644
> --- a/tools/testing/selftests/Makefile
> +++ b/tools/testing/selftests/Makefile
> @@ -205,7 +205,7 @@ export KHDR_INCLUDES
>
> all:
> @ret=1; \
> - for TARGET in $(TARGETS); do \
> + for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
> BUILD_TARGET=$$BUILD/$$TARGET; \
> mkdir $$BUILD_TARGET -p; \
> $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
> @@ -270,7 +270,7 @@ ifdef INSTALL_PATH
> install -m 744 run_kselftest.sh $(INSTALL_PATH)/
> rm -f $(TEST_LIST)
> @ret=1; \
> - for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
> + for TARGET in $(TARGETS); do \
> BUILD_TARGET=$$BUILD/$$TARGET; \
> $(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install \
> INSTALL_PATH=$(INSTALL_PATH)/$$TARGET \

I'm sorry but please don't merge this. I realize that we cannot remove
INSTALL_DEP_TARGETS in install target, if we do so, net/lib will not be
copied the the INSTALL_PATH. I'll post a version 3 shortly after.

Thanks,
Quang Minh.


Return-Path: <linux-kernel+bounces-668945-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4811F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:20:30 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 8C4BEA22A02
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:20:08 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E1EB9235364;
Sat, 31 May 2025 05:20:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="Heln4wcl"
Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E24E42288C0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:20:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748668824; cv=none; b=fxU+v+6i+j3/yapsbzc8SvPNJID9cpjeL4hlGolgHUTHMrPyasBSsk06mD+pdkx/CmB0CzqeKHSJerTNF0+BsgGXWgYtyVeGcdy1zL/bC6xPgyHd0cqn78b0w7TTTIlbCSB9HPmXfWkbF9fTIl3AxPWgA/2dpzEXGA4XwVwU+vM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748668824; c=relaxed/simple;
bh=b9ukqDvrkKLIVbh+PT8qxjXuVTRljNucBJtIcPquS/c=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=YTcTVYNOi9EjBISz7C35QKfxaJgYcRIW9dXH4TghQuTMH3mfm2E+yDrUqesN5hm0aJ9Qql+HRAOpr3EbU2C9EqLHATPdAJ5TZ3k4ws6Fzh5sK4D493b65ko8baDDF4VYSK9OIiY2YWnmqDr4ecJOTsg4JV3JWZs1sYIQFGdrlLg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=Heln4wcl; arc=none smtp.client-ip=209.85.218.42
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org
Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-ad5740dd20eso395074866b.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:20:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linux-foundation.org; s=google; t=1748668820; x=1749273620; darn=vger.kernel.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=jEfD/+DM5D2k/gXm81XhYIsGawr1I/4vC95VspHPajY=;
b=Heln4wcl4oXb5TPBDYayQL8v3GDEqa95npdEzU34DVMCSGykXL0xL5XNZxNUz9kaDo
YwsO6jsye6OtGW442Gflddqm0tbNn1PktWPBCMwtVpkc7S66ySS37t8GYZsxU7M9jqRr
LTKmLczrz+eoNcIGuQWDx1s4xHmuHqJTbUvJw=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748668820; x=1749273620;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=jEfD/+DM5D2k/gXm81XhYIsGawr1I/4vC95VspHPajY=;
b=MtxmoPTRehdsQu49a6xEhOmC/zyAMiUe2qXmAhKReHebp2+UY+NIVrpBKkL3GBDT95
OIW43ZqmAbTEABF+8W7/xYAPoVmo1bd/vxDD/WZPUcQfcavP783QQAL+7bzDX13XoeXf
m4VRJ11BGy+zmCLFpg1fL7A2CrFi4WzGeVaFB55+WU5CbkZKE7Qq2NXOWqCHlRIrcqct
/ewb9ptd54zKIzLcwNTfnHtXedHLJOC6zZXFQalUXS4jxTk2BpmPBe4RpUuPBs9B7Bh5
ww0pUNIMlyJ1b+7y8EGCO+IuaShfrqNKOqasN6cgcdJmRYYFCUOoy6ZKV1yYBnm0Txnq
2MfA==
X-Forwarded-Encrypted: i=1; AJvYcCVG97FlUykDIeqd8yGyZXYy22dfUJaWbW1vFHfVFi3rnCEGM1VBTtLWpbLal9Reb1SHIW49VJHo7WPmKJw=@vger.kernel.org
X-Gm-Message-State: AOJu0Yz/vAfEfpZQ6lIevl8NuM+2ZLrh2wpx4Em19FUcbyBamikvB9Kp
zsm7LuhUZltIhcaJ5theURP2itp10KOhPJFl2YMMD4co8uilwoQ3Zft8v/TRjuxp2FvmgfWX97X
HlRMaNnA=
X-Gm-Gg: ASbGnctDoN8V8jbbN8P12UPVqNTtFN/e+pCfqg1fDU0W6wKKm7r+KiONewww5cmgiDK
XC1fNw8rPqn9LEvsWDdnpc2Msx1XjoTr31jhq/+QQtkO/Paplz/gvA2w3mfErYS6VuFO/aLHW1z
7pAEEXgBN7WlxqOE0aTAHKi0l0yffjP0ScVxA8k+CT+tCaa+6/o7ynoXD9aUGuNkGiiipz/yL2d
EXo4OdeB+AMMDMKN76HM99bRlfuQ4/PFCnmd2R2BN8CvEwc1TEhIjFoCW/w/cjMog2AR1JHsNA1
CydXww8CNPlOEXql1eomMCRYa+qecYojGMBDpyMxUIQwoJewb6GimsoKsQCDUyfK2dKZWgpct3F
HL3Mdh9r9oBrIhjZWzGfBWSgpNy8LqXmUrvL+
X-Google-Smtp-Source: AGHT+IG8DlWx67ttBPaM7I8fk5rCpu881EEceHrPni129PVCOq0p2B27h8FfZoKP24iylWkZL4zPLw==
X-Received: by 2002:a17:906:c108:b0:ad8:932e:77ba with SMTP id a640c23a62f3a-adb494d647emr92285466b.38.1748668819986;
Fri, 30 May 2025 22:20:19 -0700 (PDT)
Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com. [209.85.208.45])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d84d1f7sm436142666b.74.2025.05.30.22.20.18
for <linux-kernel@xxxxxxxxxxxxxxx>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Fri, 30 May 2025 22:20:18 -0700 (PDT)
Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-6045a3a2c5eso3529478a12.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:20:18 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCWdftdsa5fUgq24Hsccn9RrFMz4PHURxVL6fGjzlJY4aZHibVpGbJNIej3/cy4YFgONe1GFvqH6u2EPMdc=@vger.kernel.org
X-Received: by 2002:a05:6402:40c6:b0:5fb:3a35:b8d8 with SMTP id
4fb4d7f45d1cf-605b796da8emr804228a12.20.1748668818330; Fri, 30 May 2025
22:20:18 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <aDmght5YpHmJ6qZ2@xxxxxxxxxx> <CAHk-=wguPX5w3UVmQpOk+v1ahJwRzRNXKHUJB92cwJfNpMU4ZA@xxxxxxxxxxxxxx>
In-Reply-To: <CAHk-=wguPX5w3UVmQpOk+v1ahJwRzRNXKHUJB92cwJfNpMU4ZA@xxxxxxxxxxxxxx>
From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Date: Fri, 30 May 2025 22:20:02 -0700
X-Gmail-Original-Message-ID: <CAHk-=wh4qRwm7AQ8sBmQj7qECzgAhj4r73RtCDfmHo5SdcN0Jw@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFv-R_VgM748qQ2znX8oK1KrQk1cZwPxjrDOqD14wEHAYhom0j694KMvVuE
Message-ID: <CAHk-=wh4qRwm7AQ8sBmQj7qECzgAhj4r73RtCDfmHo5SdcN0Jw@xxxxxxxxxxxxxx>
Subject: Re: [git pull] IOMMU Updates for Linux v6.16
To: Joerg Roedel <joro@xxxxxxxxxx>, Rolf Eike Beer <eb@xxxxxxxxx>, Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Cc: Will Deacon <will@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, iommu@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 at 21:57, Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> Bah. This seems very broken.
>
> I haven't bisected it, but my arm64 build - which I sadly didn't end
> up doing earlier today - breaks with modpost errors:
>
> ERROR: modpost: "arm_smmu_make_cdtable_ste"
> [drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3-test.ko] undefined!

Ok, bisected to commit e436576b0231 ("iommu: make inclusion of
arm/arm-smmu-v3 directory conditional").

Which explains why I didn't see any obvious code changes that would
explain that.

This is with a plain "make allmodconfig" build, and I think the issue
is that CONFIG_ARM_SMMU_V3 is 'm', not 'y', and the change didn't take
that modular case into account at all.

I'll revert it, but I'll wait until tomorrow to see if somebody has an
alternative fix.

Linus


Return-Path: <linux-kernel+bounces-668946-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B125E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:45:26 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 749311BA4627
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:45:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E7C0428D85F;
Sat, 31 May 2025 05:45:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="VlJcit32"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 094B04086A;
Sat, 31 May 2025 05:45:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748670317; cv=none; b=nMd3sOhRpku/GUEHgfxuR16qxUqZpVLIaG2rW3K5UsPuOSmMjAUcPOE0Rg00Xmt3v++7K5p2fijC3a53feWc0XRMIZuEGivdeFFEMjLRWn6RXDOd6o8VYcX/K6rPCFbqwCPaTkZKgN/0Urx0V3eWyaI4F89IRHS59zItinZrras=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748670317; c=relaxed/simple;
bh=9DPwdQ9fOhkzloYxT6a3qcqYtN6xqO4YaxWc/Ow3mZE=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=LlndSaFohHKCeEx7fR8OfF8GAlnO5DcyQ4wt0mBlZnyhCesdMip7q5k/Bfu73xaiXSVY9rwBbqBJSgdUoGrOCspr1w7FBFrzHsK9w0lECsqFjk7TGzMpeWo+o2jRao0R9BHKoAFN2+O3t0RcAQ5OvVd6OqISoUB/cN10OQZUV18=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=VlJcit32; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B7C74C4CEE3;
Sat, 31 May 2025 05:45:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748670316;
bh=9DPwdQ9fOhkzloYxT6a3qcqYtN6xqO4YaxWc/Ow3mZE=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=VlJcit32in30wSJfXmZiTdpNu9/h9pAwZ/nuRUQHSxzPuff6/pgIj8OW5cj0xuLVB
tcSm6c6KA12rFXC7+VWLlrN5sDq92LoCF0M01MYCluDPzpPLdWVEAg7TwsOIoLuLp3
ZW8DGIO+389mzWL8EgLYudDBOqFfCojeksDN8FRA=
Date: Sat, 31 May 2025 07:45:13 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Timur Tabi <timur@xxxxxxxxxx>
Cc: Alexandre Courbot <acourbot@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>,
John Hubbard <jhubbard@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] rust: add basic ELF sections parser
Message-ID: <2025053148-gore-badass-1d1d@gregkh>
References: <D9Y0VJKOAQAY.2GJSAZ5II54VV@xxxxxxxxxx>
<DA8G3G918FS4.X8D7PQMT4TGB@xxxxxxxxxx>
<2025052932-pyramid-unvisited-68f7@gregkh>
<DA935OIFBM1H.3CMSHQ46LLG4P@xxxxxxxxxx>
<2025053047-theology-unsaid-d6ac@gregkh>
<DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh>
<DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh>
<CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 01:10:50PM -0500, Timur Tabi wrote:
> On Fri, May 30, 2025 at 10:42â?¯AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > On Fri, May 30, 2025 at 11:34:02PM +0900, Alexandre Courbot wrote:
> > > So to try to answer your question, I am not disagreeing that userspace
> > > is capable of doing what we currently do in the kernel. My follow-up
> > > questions to that are: how do we command userspace to do that work for
> > > us when we request the firmware, how do we provide the result to the
> > > kernel, and is this something that distros can adopt easily? I'm happy
> > > to consider doing things this way, but would need a few pointers to look
> > > into.
> >
> > Again, look at how your firmware for your devices in your laptop are
> > loaded today.

Note, I am talking about non-gpu firmare images here (wifi, usb
controllers, etc.) that are using the firmware download subsystem for
ages as examples of what to look at as to how to trigger a firmware
image to be loaded by userspace into the device.

> Today, Nouveau loads and parses these binary images (that are already
> in linux-firmware) in the driver. As I said before, Nova/Nouveau are
> using ELF simply as a packaging format, so that these small binary
> blobs are kept together and processed as one. It makes no sense for
> Nouveau to consume them as-is, but Nova has to have user-space break
> them up first.
>
> We could easily have said that the format is proprietary and not used
> the word "elf" in the parser.

And even if you did that, I would say "do it in userspace as firmware
images should be pass-through only".

> IMHO, Nova should really do what Nouveau does, and just have the image
> parser in the driver itself, without any generic Rust code to do it.
> After all, what Nova needs to do with these images is driver-specific.

Again, no, do not do any firmware image parsing in the kernel please
unless you can prove exactly why it MUST be done there.

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-668947-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A7EF241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:47:14 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 6ACD43ABB95
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:46:52 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CD5F228D8C6;
Sat, 31 May 2025 05:47:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OL6e8jPd"
Received: from mail-pg1-f178.google.com (mail-pg1-f178.google.com [209.85.215.178])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1E012904;
Sat, 31 May 2025 05:47:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.178
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748670426; cv=none; b=JtitpLWgR70yRtJbi7pG5nsZyn/qPHNiOo7/Ojeo0wYgrxY0F70v1gs4v8K5rEjUboqIpa9tsrQAGqXcr20uR6uWgktH3WP0mzTMK2Zy68HL/aM8STaChC1x/w92vJjftgfniJv7iVSXWGymAp8mga516iTTDzbwzz10XDn0lYU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748670426; c=relaxed/simple;
bh=JbNwRxu6ES9byNr7PuccOmWVvlaqcsF0OW6OUJs+kx0=;
h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=oiVc6aLHhMDEzNZfMtSjtFms+77N2VYGn+7GRgDaSDp676rXQOI6BPaV9ZlwxhZ61V5nRtpLTUrddc0xPX4Er/OHnY3z6DjLs+iXkHVY+Q/Ka1yN8f3JyiJ5wdFTfFAzStSCj33ts+uEp02YiFfmKvu6soEG61hsthfSEf00r88=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OL6e8jPd; arc=none smtp.client-ip=209.85.215.178
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pg1-f178.google.com with SMTP id 41be03b00d2f7-b2c4e46a89fso1985393a12.2;
Fri, 30 May 2025 22:47:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748670424; x=1749275224; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=8OGAFuidSbukLHWdGtaZwvDWia5Iygcwni22a2YUHlo=;
b=OL6e8jPd3YkPMwdpJvW1mPBvS/OYWj45lBiSZxycWSTi+BwZF6TXtvszS6R2su1yPH
Sne3KoaBUFoimkCbceHMuLOB+SJOzW/5wKuJA7NgHChb0nvf99ff9EAW25N45VQk12uT
1f56GFrQHoOpb4nO91avj8P+a6glo9FISTyHlP3TPI21r7S5dDXjb6dGTH1d0WF0UCkr
YSTTQFwa7f/BjsLbSdVov/h6HJ7OZoBbAPZX9EOohihnKsafC3AueX2NXOcjq4PaBB2t
3k5Xwr1JIx8f2TT6jyjLjVmTSyJhbliTCPx4wcxn24rZbMJNiZwR13LKq12eaBKMfYqb
1Qag==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748670424; x=1749275224;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=8OGAFuidSbukLHWdGtaZwvDWia5Iygcwni22a2YUHlo=;
b=cFCzSKvzHcrJpSzWsIsjY15Oj3Rd3KXjE346C7Nq5J4HIAurpDztYjxZ79qUp0le8b
Ty1STDYXup9YNz/FRnY5po/EMK0qG+QEtG3w1sNI0g5oo2ZP889RJCBmPSHxIvp+qD7J
280iZyTGOgIAXtgQTNENmD5+pVphlo+5zUSmlvAR/kWAcicbK94CZdOMnmsKMhdILs6E
HFQTYqDksYMFx7Y0UB4wnkSsjKSdI2N8UW/brJjlfLB1lRjT65ZQiLxEFnD6JDsyJfVc
IlVxrdDWuaHgqk0bs76Ukdm0vj5u77XP4l9PG88c6s2OeWW/3s4N3mjKq6hAzYGIZA9U
EbvQ==
X-Forwarded-Encrypted: i=1; AJvYcCVUuySYIgUPemlXTgWmfTkdinPhlWXbwnbLFg3LBlelGMDgAlsM/pseb8HTT0kDGH3j7EEy1GVB97/bkl0=@vger.kernel.org
X-Gm-Message-State: AOJu0Yxjf20/2riw5a/kH1mSPnS1yKN2gAxScYx4Tgo7jninlyOTXxH8
vRg2Bd24HCs1TB9lla1Kxn5kegLP1B8pzteY1whxy333nl1Or2jDqS3C
X-Gm-Gg: ASbGnctVb1HH27HtWcaJYfdZ3ik+ZOntt57UeLO4PkF6PE07G9MYq+5D4/a9YpCU1zo
l/H4edsjcuLJjhEnXCfNs/VeRNso5O6mM+d1pDtviyOVSSuqP/Kq6uAyKMN8xcu/Is7oMUrFR8m
AfEXVGYjR/7wrhdSWEjK8gp0Ej8nA0zETG4DOod0+Hnn5IQ8HfHStdfhPFNjsDomYp2fG0OinfB
O0wZHG0F76SR0E8yjEFePwLYvQZY7FTBZyniJiMLy9ct9VlCpstYN+IYNhN6SHplyX/r7pyGPMV
1GdQS0Ac04mAN9z0PK+024IX9ZtTe8ckapNEpizhgDBhuXkCXb5nvA==
X-Google-Smtp-Source: AGHT+IGyWRSq+5WawuoBQZmtBHPa+Z9VMl0R7+h9hZwLBROsZRoujhid1b22ob6LRl9WCDnAOxykCg==
X-Received: by 2002:a17:90b:3a0e:b0:311:d05c:936 with SMTP id 98e67ed59e1d1-312504137e1mr7645912a91.17.1748670423827;
Fri, 30 May 2025 22:47:03 -0700 (PDT)
Received: from n.. ([2401:4900:1cb0:cf24:5234:d645:6525:6e8f])
by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3124e3c11e0sm2062427a91.38.2025.05.30.22.47.01
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 22:47:03 -0700 (PDT)
From: mrigendrachaubey <mrigendra.chaubey@xxxxxxxxx>
To: James.Bottomley@xxxxxxxxxxxxxxxxxxxxx,
martin.petersen@xxxxxxxxxx
Cc: linux-scsi@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
mrigendrachaubey <mrigendra.chaubey@xxxxxxxxx>
Subject: [PATCH] scsi: scsi_devinfo: remove redundant 'found'
Date: Sat, 31 May 2025 11:16:38 +0530
Message-Id: <20250531054638.46256-1-mrigendra.chaubey@xxxxxxxxx>
X-Mailer: git-send-email 2.34.1
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Remove the unnecessary 'found' flag in scsi_devinfo_lookup_by_key().
The loop can return the matching entry directly when found, and fall
through to return ERR_PTR(-EINVAL) otherwise.

Signed-off-by: mrigendrachaubey <mrigendra.chaubey@xxxxxxxxx>
---
drivers/scsi/scsi_devinfo.c | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c
index a348df895dca..53cc60ab6dab 100644
--- a/drivers/scsi/scsi_devinfo.c
+++ b/drivers/scsi/scsi_devinfo.c
@@ -269,17 +269,13 @@ static struct {
static struct scsi_dev_info_list_table *scsi_devinfo_lookup_by_key(int key)
{
struct scsi_dev_info_list_table *devinfo_table;
- int found = 0;

- list_for_each_entry(devinfo_table, &scsi_dev_info_list, node)
- if (devinfo_table->key == key) {
- found = 1;
- break;
- }
- if (!found)
- return ERR_PTR(-EINVAL);
+ list_for_each_entry(devinfo_table, &scsi_dev_info_list, node) {
+ if (devinfo_table->key == key)
+ return devinfo_table;
+ }

- return devinfo_table;
+ return ERR_PTR(-EINVAL);
}

/*
--
2.34.1



Return-Path: <linux-kernel+bounces-668948-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 17C7941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:48:47 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3C79E4E006D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:48:48 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7BE1127604B;
Sat, 31 May 2025 05:48:38 +0000 (UTC)
Received: from mail-il1-f206.google.com (mail-il1-f206.google.com [209.85.166.206])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id F41652904
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:48:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.206
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748670517; cv=none; b=J7kwG2Ax8p/r+Jbx9VGkWK8F7OgTomGChju70qN3YJB9Zn2GUr/OLcB9nKuyFr+x+twIO+A3sH1KeEQbBeag0wei3zA29oggeebyBGGTX71UyTOeb4Yt/+YFVHuXanYtRZ7gnrF1KqY6mQrtpISIZIEd7Vut9sYef6KlMKHz72c=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748670517; c=relaxed/simple;
bh=lPyTQkYCintK+J/uHjlxwzbx+0FWTy4lsQWJlcRGBuQ=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=vAxIGcDtavdKDJ/CzUvojPBXeyTKJhSQtj5FqF21PeJfZj839r57tKurwy73gATX8bdT8g4JNxhmwR5SQ8uY3mWwgqI7ClCbX4qDSKtCu12UQ0NLA72FIizZLobRUd04iZVp7LjJAYEcalXza2jl3SFJGQoL/lOh3QnxtOFXmoo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.206
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f206.google.com with SMTP id e9e14a558f8ab-3dda50c4072so304965ab.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 22:48:35 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748670515; x=1749275315;
h=to:from:subject:message-id:date:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=5GrkFjbGOWGQqoj7uUO3SwZOTj7cvaxpo8Z4b8MpnbU=;
b=DOn6tz00GSKRCdZr/XGHLrn9MU2CpMSUMmRgRzQSje1Q2bh6Uaky2KUUDsmdM/OxDK
ipa/4yEfy6f71d3e7j2HRy+fpQN+893DZdiGY2Kn/dhZ3BJsEIvp7yFdinvF3rx+Ujvk
MNHG15D5xPrFXVfKqgebAOcgzS2MuzWOSFNikosvpKCSUuI44ByN5yUWUiGZe7vUT6ev
ISI4ljvRXyELZo3jNiI3Mpn2rIkbGPtruNyHQR1et97yunwkxCKsuKdSxjLMdRXBOZWH
XU6Yjf6r3z2I261ETqV3wMs4Vc4ymgW3qYpcA+KVeGpvXvSWZLKJIhqol9igNXe/a2Vk
Y90Q==
X-Forwarded-Encrypted: i=1; AJvYcCVMpMKDCZrFM6DGNz4yRjgbnb3EY7QrUqLwbXE71NWjdktKpcteIPsERfi5T06ZNjvfbZnyO8Tcqo2iC3A=@vger.kernel.org
X-Gm-Message-State: AOJu0YzAtXxVcQOoHuEvL3EmqqZhiZhX9ua6gbNMl1SK1v/W5bvwCL72
KTxFpCDgVaL3ots3lqh3VwN31WXa+66A03hHrnLaiOqRpMG6qtWI88yXWQ4Vak6Ul+bcLG8+JnN
h7LNGbiBmcf1FwCRNi5fpOEuBOFuOZ1U6RhE+fjgeiUvNPZsMmp5c1JjPvCE=
X-Google-Smtp-Source: AGHT+IHWo0fWF3e7kUQSh6ICUPO92zZf0OxbadAmi7SPmh+xcWsnLlZzFNOXHuZJvDZe1qkAeqntHhLSQ+yjtcGEsFbZ3RbOafPc
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1a07:b0:3d3:fdcc:8fb8 with SMTP id
e9e14a558f8ab-3dd9cacc8femr40732475ab.10.1748670515058; Fri, 30 May 2025
22:48:35 -0700 (PDT)
Date: Fri, 30 May 2025 22:48:35 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683a9833.a70a0220.1a6ae.000a.GAE@xxxxxxxxxx>
Subject: [syzbot] [usb?] INFO: task hung in dvb_usbv2_probe
From: syzbot <syzbot+f3f24bbe63f3f6db9f44@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: anna-maria@xxxxxxxxxxxxx, frederic@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-usb@xxxxxxxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx, tglx@xxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: 0ff41df1cb26 Linux 6.15
git tree: upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=11da7882580000
kernel config: https://syzkaller.appspot.com/x/.config?x=571e39fe0fe37177
dashboard link: https://syzkaller.appspot.com/bug?extid=f3f24bbe63f3f6db9f44
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-1~exp1~20250514183223.118), Debian LLD 20.1.6
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1792bdf4580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=15da7882580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/5b209251a36a/disk-0ff41df1.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/b131e0608f41/vmlinux-0ff41df1.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9c56b87a1388/bzImage-0ff41df1.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+f3f24bbe63f3f6db9f44@xxxxxxxxxxxxxxxxxxxxxxxxx

INFO: task kworker/1:0:24 blocked for more than 143 seconds.
Not tainted 6.15.0-syzkaller #0
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:kworker/1:0 state:D stack:21448 pid:24 tgid:24 ppid:2 task_flags:0x4208060 flags:0x00004000
Workqueue: usb_hub_wq hub_event
Call Trace:
<TASK>
context_switch kernel/sched/core.c:5382 [inline]
__schedule+0x168f/0x4c70 kernel/sched/core.c:6767
__schedule_loop kernel/sched/core.c:6845 [inline]
schedule+0x165/0x360 kernel/sched/core.c:6860
schedule_timeout+0x9a/0x270 kernel/time/sleep_timeout.c:75
do_wait_for_common kernel/sched/completion.c:95 [inline]
__wait_for_common kernel/sched/completion.c:116 [inline]
wait_for_common kernel/sched/completion.c:127 [inline]
wait_for_completion+0x2bf/0x5d0 kernel/sched/completion.c:148
i2c_del_adapter+0x581/0x6e0 drivers/i2c/i2c-core-base.c:1812
dvb_usbv2_probe+0x4ae/0x41a0 drivers/media/usb/dvb-usb-v2/dvb_usb_core.c:993
usb_probe_interface+0x641/0xbc0 drivers/usb/core/driver.c:396
call_driver_probe drivers/base/dd.c:-1 [inline]
really_probe+0x26d/0x9a0 drivers/base/dd.c:657
__driver_probe_device+0x18c/0x2f0 drivers/base/dd.c:799
driver_probe_device+0x4f/0x430 drivers/base/dd.c:829
__device_attach_driver+0x2ce/0x530 drivers/base/dd.c:957
bus_for_each_drv+0x24e/0x2e0 drivers/base/bus.c:462
__device_attach+0x2b8/0x400 drivers/base/dd.c:1029
bus_probe_device+0x185/0x260 drivers/base/bus.c:537
device_add+0x7b6/0xb50 drivers/base/core.c:3692
usb_set_configuration+0x1a87/0x20e0 drivers/usb/core/message.c:2210
usb_generic_driver_probe+0x8d/0x150 drivers/usb/core/generic.c:250
usb_probe_device+0x1c1/0x390 drivers/usb/core/driver.c:291
call_driver_probe drivers/base/dd.c:-1 [inline]
really_probe+0x26d/0x9a0 drivers/base/dd.c:657
__driver_probe_device+0x18c/0x2f0 drivers/base/dd.c:799
driver_probe_device+0x4f/0x430 drivers/base/dd.c:829
__device_attach_driver+0x2ce/0x530 drivers/base/dd.c:957
bus_for_each_drv+0x24e/0x2e0 drivers/base/bus.c:462
__device_attach+0x2b8/0x400 drivers/base/dd.c:1029
bus_probe_device+0x185/0x260 drivers/base/bus.c:537
device_add+0x7b6/0xb50 drivers/base/core.c:3692
usb_new_device+0xa39/0x16c0 drivers/usb/core/hub.c:2663
hub_port_connect drivers/usb/core/hub.c:5531 [inline]
hub_port_connect_change drivers/usb/core/hub.c:5671 [inline]
port_event drivers/usb/core/hub.c:5831 [inline]
hub_event+0x2941/0x4a00 drivers/usb/core/hub.c:5913
process_one_work kernel/workqueue.c:3238 [inline]
process_scheduled_works+0xade/0x17a0 kernel/workqueue.c:3319
worker_thread+0x8a0/0xda0 kernel/workqueue.c:3400
kthread+0x711/0x8a0 kernel/kthread.c:464
ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:153
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</TASK>

Showing all locks held in the system:
5 locks held by kworker/1:0/24:
#0: ffff888021282148 ((wq_completion)usb_hub_wq){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3213 [inline]
#0: ffff888021282148 ((wq_completion)usb_hub_wq){+.+.}-{0:0}, at: process_scheduled_works+0x9b1/0x17a0 kernel/workqueue.c:3319
#1: ffffc900001e7c60 ((work_completion)(&hub->events)){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3214 [inline]
#1: ffffc900001e7c60 ((work_completion)(&hub->events)){+.+.}-{0:0}, at: process_scheduled_works+0x9ec/0x17a0 kernel/workqueue.c:3319
#2: ffff88802805d198 (&dev->mutex){....}-{4:4}, at: device_lock include/linux/device.h:922 [inline]
#2: ffff88802805d198 (&dev->mutex){....}-{4:4}, at: hub_event+0x184/0x4a00 drivers/usb/core/hub.c:5859
#3: ffff8880279db198 (&dev->mutex){....}-{4:4}, at: device_lock include/linux/device.h:922 [inline]
#3: ffff8880279db198 (&dev->mutex){....}-{4:4}, at: __device_attach+0x88/0x400 drivers/base/dd.c:1004
#4: ffff8880279de160 (&dev->mutex){....}-{4:4}, at: device_lock include/linux/device.h:922 [inline]
#4: ffff8880279de160 (&dev->mutex){....}-{4:4}, at: __device_attach+0x88/0x400 drivers/base/dd.c:1004
1 lock held by khungtaskd/31:
#0: ffffffff8df3dee0 (rcu_read_lock){....}-{1:3}, at: rcu_lock_acquire include/linux/rcupdate.h:331 [inline]
#0: ffffffff8df3dee0 (rcu_read_lock){....}-{1:3}, at: rcu_read_lock include/linux/rcupdate.h:841 [inline]
#0: ffffffff8df3dee0 (rcu_read_lock){....}-{1:3}, at: debug_show_all_locks+0x2e/0x180 kernel/locking/lockdep.c:6764
2 locks held by getty/5582:
#0: ffff88814c8770a0 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x25/0x70 drivers/tty/tty_ldisc.c:243
#1: ffffc9000333b2f0 (&ldata->atomic_read_lock){+.+.}-{4:4}, at: n_tty_read+0x43e/0x1400 drivers/tty/n_tty.c:2222
4 locks held by udevd/5836:
#0: ffff888033995e80 (&p->lock){+.+.}-{4:4}, at: seq_read_iter+0xb7/0xe10 fs/seq_file.c:182
#1: ffff888032071c88 (&of->mutex#2){+.+.}-{4:4}, at: kernfs_seq_start+0x55/0x3c0 fs/kernfs/file.c:154
#2: ffff888033fb41e8 (kn->active#26){.+.+}-{0:0}, at: kernfs_seq_start+0x75/0x3c0 fs/kernfs/file.c:155
#3: ffff8880279db198 (&dev->mutex){....}-{4:4}, at: device_lock_interruptible include/linux/device.h:927 [inline]
#3: ffff8880279db198 (&dev->mutex){....}-{4:4}, at: manufacturer_show+0x26/0xa0 drivers/usb/core/sysfs.c:142

=============================================

NMI backtrace for cpu 1
CPU: 1 UID: 0 PID: 31 Comm: khungtaskd Not tainted 6.15.0-syzkaller #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
Call Trace:
<TASK>
dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
nmi_cpu_backtrace+0x39e/0x3d0 lib/nmi_backtrace.c:113
nmi_trigger_cpumask_backtrace+0x17a/0x300 lib/nmi_backtrace.c:62
trigger_all_cpu_backtrace include/linux/nmi.h:158 [inline]
check_hung_uninterruptible_tasks kernel/hung_task.c:274 [inline]
watchdog+0xfee/0x1030 kernel/hung_task.c:437
kthread+0x711/0x8a0 kernel/kthread.c:464
ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:153
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</TASK>
Sending NMI from CPU 1 to CPUs 0:
NMI backtrace for cpu 0
CPU: 0 UID: 0 PID: 0 Comm: swapper/0 Not tainted 6.15.0-syzkaller #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
RIP: 0010:pv_native_safe_halt+0x13/0x20 arch/x86/kernel/paravirt.c:81
Code: 43 d4 02 00 cc cc cc 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 f3 0f 1e fa 66 90 0f 00 2d 63 7f 18 00 f3 0f 1e fa fb f4 <e9> 18 d4 02 00 cc cc cc cc cc cc cc cc 90 90 90 90 90 90 90 90 90
RSP: 0018:ffffffff8dc07d80 EFLAGS: 000002c6
RAX: 22e8c235b9a2e600 RBX: ffffffff81977028 RCX: 22e8c235b9a2e600
RDX: 0000000000000001 RSI: ffffffff8d73aab2 RDI: ffffffff8bc12240
RBP: ffffffff8dc07ec0 R08: ffff8880b8832b5b R09: 1ffff1101710656b
R10: dffffc0000000000 R11: ffffed101710656c R12: ffffffff8f7e0b70
R13: 0000000000000000 R14: 0000000000000000 R15: 1ffffffff1b92a48
FS: 0000000000000000(0000) GS:ffff8881260f6000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005650a6dfa660 CR3: 000000000dd38000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
arch_safe_halt arch/x86/include/asm/paravirt.h:107 [inline]
default_idle+0x13/0x20 arch/x86/kernel/process.c:748
default_idle_call+0x74/0xb0 kernel/sched/idle.c:117
cpuidle_idle_call kernel/sched/idle.c:185 [inline]
do_idle+0x1e8/0x510 kernel/sched/idle.c:325
cpu_startup_entry+0x44/0x60 kernel/sched/idle.c:423
rest_init+0x2de/0x300 init/main.c:743
start_kernel+0x470/0x4f0 init/main.c:1099
x86_64_start_reservations+0x2a/0x30 arch/x86/kernel/head64.c:513
x86_64_start_kernel+0x66/0x70 arch/x86/kernel/head64.c:494
common_startup_64+0x13e/0x147
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-668949-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 209A641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:50:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id BD90D3AB382
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:49:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3E4CC28D8CB;
Sat, 31 May 2025 05:49:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="0CctRSZB"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 6A0142904;
Sat, 31 May 2025 05:49:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748670590; cv=none; b=YoHzGebxMORwJF+V1il/7lDfi39OxW5lcywerg4wF4/cssNP6CPwfnmNgh4vKUhqAIgMAC+//0JcJPost4ML1ejqWUb13LGhaOmxSSpWYxIPCodhsn/OAOj241We/XGDFwM6taQI6VyrvrhxJBb0tRpYWn/+uiSm1nUVI/WHalY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748670590; c=relaxed/simple;
bh=3rztAwoj/CLKv7pyv7i7aukmruToEE0/FZ2bxxCzmxM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=bZ9suoUQYFmcCERD9urgiopEh14unKFNdMDhphxJdhDQ3ASW2kJeJ7KbLibQlLQbnVIdbm1jS+tqgDFwnkQ3jZBASIOUI9lTrwR8ipcveUuz4bNdui5UMNSteTAIj+exg6O+81K1vODuji//oL0aJ9jPAe/10dnEaNKSAI+eEcc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=0CctRSZB; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 20D5AC4CEE3;
Sat, 31 May 2025 05:49:49 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748670589;
bh=3rztAwoj/CLKv7pyv7i7aukmruToEE0/FZ2bxxCzmxM=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=0CctRSZBzVq5upNYar9hc5fdQL8nvDgDWnSOyL1X08oXi0XwwRaCBpORb0c2y5wv9
iGJenbHnFR6gCzQJ2FckQORDSqiyQKGOAlIYhmn0379UZM22QS2bYnpoaG5XEHNJIq
KpJof6NBRpvxT4wBPVoEKkyO5cvqiRRLxM+fw3Nw=
Date: Sat, 31 May 2025 07:49:46 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Igor Korotin <igor.korotin.linux@xxxxxxxxx>
Cc: Danilo Krummrich <dakr@xxxxxxxxxx>,
"Rafael J . Wysocki" <rafael@xxxxxxxxxx>,
Len Brown <lenb@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
linux-acpi@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] rust: acpi: add `acpi::DeviceId` abstraction
Message-ID: <2025053111-anteater-balsamic-8d01@gregkh>
References: <20250530123815.1766726-1-igor.korotin.linux@xxxxxxxxx>
<aDnD_Bb3l6GiI_8K@cassiopeiae>
<CAG7QV92rtk7NUKzUoApkopv1LF2WVjqyNA9hPt=yCuEvdJjoCA@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAG7QV92rtk7NUKzUoApkopv1LF2WVjqyNA9hPt=yCuEvdJjoCA@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 05:11:29PM +0100, Igor Korotin wrote:
> On Fri, May 30, 2025 at 3:43â?¯PM Danilo Krummrich <dakr@xxxxxxxxxx> wrote:
> >
> > On Fri, May 30, 2025 at 01:38:06PM +0100, Igor Korotin wrote:
> > > `acpi::DeviceId` is an abstraction around `struct acpi_device_id`.
> > >
> > > This is used by subsequent patches, in particular the i2c driver
> > > abstractions, to create ACPI device ID tables.
> > >
> > > Signed-off-by: Igor Korotin <igor.korotin.linux@xxxxxxxxx>
> >
> > As Greg mentioned it would be nice to see the subsequent patches.
>
> Ok. There's a little misunderstanding from my side. I'm in the
> progress of implementation
> of I2C driver abstractions. I2C drivers can use either "of" or "acpi".
> The idea was to push this
> change first, because:
> - It's quite standalone one.
> - I'm not sure how much time it will take me to finalize I2C drivers
> abstractions.

If you don't need it now, then there's no rush to get it merged now :)

> If it is not appropriate way of commits, I'll then keep it until all is done.

We would like to see it be used first, to ensure that the code is
actually correct.

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-668950-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1FBA441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 01:52:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 307663B0A20
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:52:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 046FF28D8CD;
Sat, 31 May 2025 05:52:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="BBWe77Ry"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 40F9F482EB;
Sat, 31 May 2025 05:52:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748670749; cv=none; b=VFvg7i0TsULXw4LcC00zIn1NLlVE1yCwzmNNzGra+ZtpZy7cL1Cj+QqhAN4bfz0+zaYVcqnkre+ZOu7Y+NItoxIZTw9AdzkP0AWVTjqVyTB6kcqBCzDaRW+DFeOVHqLyiRWiyi+HnyLSG0refi3teST7sYIjm+juYi1fVOSr6Ww=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748670749; c=relaxed/simple;
bh=cALAC45bcmWERtlmr7LoJYVyMgKP9/CIORLyNtIJDTo=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=XVXrK0bAJI+strxnzFOCznONAlt3JUoELwj5wVGpDpG8rvH76PAwjqxhsHJvF8gaw1dAoE4VJAilgjGSVMK+t3xndfX6XAsc47AoqxjHKEK7v85zxHn4NwcUumlrHK8djGyR1PeaecpbTZ3fRUwJtobDr0USdDATlVd2l+HcR2U=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=BBWe77Ry; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 11D52C4CEE3;
Sat, 31 May 2025 05:52:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748670748;
bh=cALAC45bcmWERtlmr7LoJYVyMgKP9/CIORLyNtIJDTo=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=BBWe77RykKrSJXfko9OgPsygLKF6tjS8vhKXHLKhBdQrJtrdN6bhd9areOJ/wj+U+
qBJYns24X8rDCbSdzvbZHJx6NMv7qt0hJnX3c2M5t4KBzB+Nq+TEzvQjPm/wwQiky1
zOb2NinsAuY2zsMl2sfINgff+ZCp/HDMbBACbPm4=
Date: Sat, 31 May 2025 07:52:25 +0200
From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
To: "Vankar, Chintan" <c-vankar@xxxxxx>
Cc: Conor Dooley <conor+dt@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>, Peter Rosin <peda@xxxxxxxxxx>,
s-vadapalli@xxxxxx, danishanwar@xxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
Vignesh Raghavendra <vigneshr@xxxxxx>, Nishanth Menon <nm@xxxxxx>,
Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Subject: Re: [RFC PATCH v2 0/2] Extend mmio-mux driver to configure mux with
new DT property
Message-ID: <2025053128-profound-importer-8436@gregkh>
References: <20250304102306.2977836-1-c-vankar@xxxxxx>
<f844e44e-6b71-442a-ae3c-7bbe74a908af@xxxxxx>
<2e80f6bc-2fb0-4f0d-9450-cbcf4dddca66@xxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <2e80f6bc-2fb0-4f0d-9450-cbcf4dddca66@xxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 10:35:24PM +0530, Vankar, Chintan wrote:
> Hello Greg,
>
> I have tried to implement Timesync Router node to the suitable
> Subsystems (Interrupt controller and Mux-controller). Thomas
> has provided a feedback with a reason why Timesync Router is not
> suitable for irqchip. But I didn't get a proper feedback for mux-
> controller subsystem.

What do you mean "proper feedback"?

> Can you please help me deciding in which subsystem I should implement
> it, if not mux-controller can it go in drivers/misc ?

Why not mux? What's preventing that from happening? Why would misc be
better?

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-668951-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A632141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:08:14 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A494D4A1181
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:08:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 23EC61CD1E1;
Sat, 31 May 2025 06:08:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="iTEndOEw"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])
(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 C88562E628
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:08:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748671688; cv=none; b=ZR5NPeQ4tOWLGHWdogR81f1txkmLaYewm256btZAZrSL9jLWQ5ps+Y1OY8OU1RdrHBA/cd/9tA6SpZ/H4qQCfCsjUgyYbfXkUicGR4G0zgyCuAGfQe7NG8JZeVZ2fjW5tGrAl6xV9HK7LY1kBb3pZ/h+/igljr6o224b85eUYHg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748671688; c=relaxed/simple;
bh=SFlrWWfG74B6exhPjuCqn0hBLGYXiSjGf/EbvYaaAVs=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=PVEyVQsEVRtl5F40oDnpWoWPLZMVcyDMFKz5sKcjkNP1ETVa9fXBm6z+dkyDnj9utOGx0PWCcTg60fZSQ9cn8XlFKXajV+23MueJHGcmDCR5GgeXY66lyUbJTasMy73mXGN6GSOr9BTh2+Ghwarh+Nf5IJpRDb+C9Gkk0lMiJcc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=iTEndOEw; arc=none smtp.client-ip=170.10.129.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748671684;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding;
bh=Mi36qKJqcFRPx400y/HtJCcteAnaWg5UTYhGBt/SiY8=;
b=iTEndOEwVNkWnbwSt2hn3DAfjkjCtLk03rprbk6d5r0psxJzFATdoa2hrtJX4wcOtbeAe8
UL0i8DEzsu/yFoqnZ/Y/UO145oOjjas3xHsmwffq+AI5zfHQ3GIS6OSObs5Vegry/QYZBP
AexwLor/sJOUx3smv0lPjjcah1PSeGo=
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-531-OxWsT9zqM4SBTVYQ970Fcg-1; Sat,
31 May 2025 02:07:59 -0400
X-MC-Unique: OxWsT9zqM4SBTVYQ970Fcg-1
X-Mimecast-MFC-AGG-ID: OxWsT9zqM4SBTVYQ970Fcg_1748671679
Received: from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 7F9F0180045C;
Sat, 31 May 2025 06:07:58 +0000 (UTC)
Received: from virtlab1023.lab.eng.rdu2.redhat.com (virtlab1023.lab.eng.rdu2.redhat.com [10.8.1.187])
by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EE6C21954191;
Sat, 31 May 2025 06:07:56 +0000 (UTC)
From: Paolo Bonzini <pbonzini@xxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx,
kvm@xxxxxxxxxxxxxxx
Cc: mlevitsk@xxxxxxxxxx,
Randy Dunlap <rdunlap@xxxxxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Subject: [PATCH v2] rtmutex_api: provide correct extern functions
Date: Sat, 31 May 2025 02:07:56 -0400
Message-ID: <20250531060756.130554-1-pbonzini@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.0 on 10.30.177.17
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Commit fb49f07ba1d9 ("locking/mutex: implement mutex_lock_killable_nest_lock")
changed the set of functions that mutex.c defines when CONFIG_DEBUG_LOCK_ALLOC
is set.

- it removed the "extern" declaration of mutex_lock_killable_nested from
include/linux/mutex.h, and replaced it with a macro since it could be
treated as a special case of _mutex_lock_killable. It also removed a
definition of the function in kernel/locking/mutex.c.

- likewise, it replaced mutex_trylock() with the more generic
mutex_trylock_nest_lock() and replaced mutex_trylock() with a macro.

However, it left the old definitions in place in kernel/locking/rtmutex_api.c,
which causes failures when building with CONFIG_RT_MUTEXES=y. Bring over
the changes.

Fixes: fb49f07ba1d9 ("locking/mutex: implement mutex_lock_killable_nest_lock")
Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>
---
This time, with brain connected.

kernel/locking/rtmutex_api.c | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)

diff --git a/kernel/locking/rtmutex_api.c b/kernel/locking/rtmutex_api.c
index 191e4720e546..f21e59a0525e 100644
--- a/kernel/locking/rtmutex_api.c
+++ b/kernel/locking/rtmutex_api.c
@@ -544,12 +544,12 @@ int __sched mutex_lock_interruptible_nested(struct mutex *lock,
}
EXPORT_SYMBOL_GPL(mutex_lock_interruptible_nested);

-int __sched mutex_lock_killable_nested(struct mutex *lock,
- unsigned int subclass)
+int __sched _mutex_lock_killable(struct mutex *lock, unsigned int subclass,
+ struct lockdep_map *nest_lock)
{
- return __mutex_lock_common(lock, TASK_KILLABLE, subclass, NULL, _RET_IP_);
+ return __mutex_lock_common(lock, TASK_KILLABLE, subclass, nest_lock, _RET_IP_);
}
-EXPORT_SYMBOL_GPL(mutex_lock_killable_nested);
+EXPORT_SYMBOL_GPL(_mutex_lock_killable);

void __sched mutex_lock_io_nested(struct mutex *lock, unsigned int subclass)
{
@@ -563,6 +563,21 @@ void __sched mutex_lock_io_nested(struct mutex *lock, unsigned int subclass)
}
EXPORT_SYMBOL_GPL(mutex_lock_io_nested);

+int __sched _mutex_trylock_nest_lock(struct mutex *lock,
+ struct lockdep_map *nest_lock)
+{
+ int ret;
+
+ if (IS_ENABLED(CONFIG_DEBUG_RT_MUTEXES) && WARN_ON_ONCE(!in_task()))
+ return 0;
+
+ ret = __rt_mutex_trylock(&lock->rtmutex);
+ if (ret)
+ mutex_acquire_nest(&lock->dep_map, 0, 1, nest_lock, _RET_IP_);
+
+ return ret;
+}
+EXPORT_SYMBOL_GPL(_mutex_trylock_nest_lock);
#else /* CONFIG_DEBUG_LOCK_ALLOC */

void __sched mutex_lock(struct mutex *lock)
@@ -591,22 +606,16 @@ void __sched mutex_lock_io(struct mutex *lock)
io_schedule_finish(token);
}
EXPORT_SYMBOL(mutex_lock_io);
-#endif /* !CONFIG_DEBUG_LOCK_ALLOC */

int __sched mutex_trylock(struct mutex *lock)
{
- int ret;
-
if (IS_ENABLED(CONFIG_DEBUG_RT_MUTEXES) && WARN_ON_ONCE(!in_task()))
return 0;

- ret = __rt_mutex_trylock(&lock->rtmutex);
- if (ret)
- mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
-
- return ret;
+ return __rt_mutex_trylock(&lock->rtmutex);
}
EXPORT_SYMBOL(mutex_trylock);
+#endif /* !CONFIG_DEBUG_LOCK_ALLOC */

void __sched mutex_unlock(struct mutex *lock)
{
--
2.43.5



Return-Path: <linux-kernel+bounces-668952-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 642FD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:10:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id E8B227AA1E3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:09:08 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 69CAB1FBE80;
Sat, 31 May 2025 06:10:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="2fWBcF5G"
Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E0711A2C0B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:10:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748671818; cv=none; b=CTJiLCVc1vxudr/DROV4nYm+mEGik5Zngrz1j+91JJu3/cel7Y2bq+DDgkz4Z2P+fwsJNH6hLa8Y4FWlPtuegM37DwhSbMmicejdBCJycyUo9yQI7dVDS3EIlfbDHWU1hRz8IkODhgeH5rVc6afNEtD2LNYxBpsogNsTtKX8p+o=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748671818; c=relaxed/simple;
bh=11HOF3jldTMT25y4t9U07GFBOuxg/CkyYoSDFk/Kdlo=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=mGGLxGx22vhotfYj2i9ZvGllbCnrzDVSJUCDjBtzgupNb2nV0k9IaQTmEPcZ24WpbtIrKkaqDh8dqqFpwogp05zMx3SlFLinx02HiDJju6uRtSN4BEztGleIdeh/X2yfn0CPUQ6U4UiUZDaZjjASpWssyYfKamy9yf/3NZ7T6m4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=2fWBcF5G; arc=none smtp.client-ip=209.85.208.43
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-601a67c6e61so3080a12.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:10:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748671815; x=1749276615; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=pseK2rncPdJaU+2inXcRd67qeSB4vKaK2R5IOjuqGOc=;
b=2fWBcF5GAsVD0UZuOSAfpHL3RCbdAHMTF3t49OzWiVJFc9vyq/hs3PwqfyVTL1E8qZ
mu8OjaSOSM1EKfBwwU3e8k8ycBVUqqfvop4ySv0EHsf/erf4Gt5zrhZDQmsP+xA6rULy
NaZais1+PGXC8Jy9oIAwQvSk3OvNEDfscVvGGA0lZiYVTIuuY5EW7QsSKG4LzDZ1X6KR
7ECe2uM991CGBfyL2EWihD+ZinxvzecpbKfp2FNzuT0M3IXfmLQ6FJEm1KvqVIC+2a5C
8rXp3lJCVG5y4xk1oZnfRH8Th7B3ZAtrE7uhcZski4Ttyjd6eLPJYc8JpPgBm8WEgxaO
WOkQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748671815; x=1749276615;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=pseK2rncPdJaU+2inXcRd67qeSB4vKaK2R5IOjuqGOc=;
b=wII/aqwogf2RPB2WfSaF/jp129xPOog/zlYdOS8x4UTuVyf/3gex0dQdy3tv6JV2Ut
Dm8DjZk78SUmksuKtGJ9B2PCh9yIaBVstcmiHfdh6//BGzuAOWIaquxBsWvTHNhevVyB
zfsBFojMhevZs7ijovb+TkE6iPC2SsP7cRqhGOG1eUqpspUhAGUStnD2vSZF8gkP0u3x
YmeaM+iJl4nbmXU+OF6/B78SWdUosvQnCbcWwCNpX5+D8gxvjI1WGLlCl5ls6SFWzxYj
YnHlWD+Ni0VG1fjJ9PHVTUcWSLy3emMGqoN/PQV5fhpk+lx+gjiInwBsy/RenGgdyUxN
bOsA==
X-Forwarded-Encrypted: i=1; AJvYcCUeUQewsDfmzUCpkyGlidGAibVYnV8McGhEhzhshOv4IY/kSb0oxePxqoZvE/JjQeiDpyul0fJHseTddM8=@vger.kernel.org
X-Gm-Message-State: AOJu0Yzl+aq6P/ZodkJuDAQCr730M3ZcEpOlEOE7DgDIBGgtEzbGCVSe
yYxStKeIcT2ge92oEZKEXKdCjitOpV+FbMXii+Gn1qfZh+FqFZE9JeKn7UqW5JPVnpMFoC+SvZN
ksYcvag+XExWSCqRTIILxjRv//d+WLTwhbqpGLSt5
X-Gm-Gg: ASbGncsxuMPfe/G1+sv6lkEIE1luWjrDNdhGAIvhLCSG22XZfvkkMtCPHR/15FwwqMm
7wIk59Xdu99xqtXQPPiBTLv6bsy+OKiL73rVaFYYNRCQPjoj1cK3P6bGILDANwemor+akwGrsrE
GU6vSoB3EFD/n6TWIMNxL0XMM3WuPu16tthNz0ShMIDA02cBn/REqqwZ7XIF5NllEF6dhKTv/qF
7tZ
X-Google-Smtp-Source: AGHT+IEiOzwAr+Z2AokXrUSkjBMx/A9WaxidWTroqSIaYoiamYD2Biw7ekbMkoH0qfrWg4czPLT2fGqwJhd79Zjh4/k=
X-Received: by 2002:a05:6402:2217:b0:605:c356:45a2 with SMTP id
4fb4d7f45d1cf-605c35645ccmr2343a12.4.1748671814279; Fri, 30 May 2025 23:10:14
-0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
<CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx>
From: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>
Date: Fri, 30 May 2025 23:10:02 -0700
X-Gm-Features: AX0GCFuENRxcHgF4CJFYuPHl_RiBHS5OnLS5Gk9oKdSbi9NUFrrwfUNlWVjB2B8
Message-ID: <CA+EESO7Gck6YpjPTMSzDGcmRXjci=zG3i8F+LTt=u2Krbp_cRg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Barry Song <21cnbao@xxxxxxxxx>
Cc: Kairui Song <kasong@xxxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 9:42=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 4:04=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 8:17=E2=80=AFAM Kairui Song <ryncsn@xxxxxxxxx> =
wrote:
> > >
> > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > >
> > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap cac=
he
> > > lookup, and try to move the found folio to the faulting vma when.
> > > Currently, it relies on the PTE value check to ensure the moved folio
> > > still belongs to the src swap entry, which turns out is not reliable.
> > >
> > > While working and reviewing the swap table series with Barry, followi=
ng
> > > existing race is observed and reproduced [1]:
> > >
> > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > swap entry PTE holding swap entry S1, and S1 isn't in the swap cache=
.)
> > >
> > > CPU1 CPU2
> > > userfaultfd_move
> > > move_pages_pte()
> > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > // Here it got entry =3D S1
> > > ... < Somehow interrupted> ...
> > > <swapin src_pte, alloc and use fol=
io A>
> > > // folio A is just a new allocated=
folio
> > > // and get installed into src_pte
> > > <frees swap entry S1>
> > > // src_pte now points to folio A, =
S1
> > > // has swap count =3D=3D 0, it can=
be freed
> > > // by folio_swap_swap or swap
> > > // allocator's reclaim.
> > > <try to swap out another folio B>
> > > // folio B is a folio in another V=
MA.
> > > <put folio B to swap cache using S=
1 >
> > > // S1 is freed, folio B could use =
it
> > > // for swap out with no problem.
> > > ...
> > > folio =3D filemap_get_folio(S1)
> > > // Got folio B here !!!
> > > ... < Somehow interrupted again> ...
> > > <swapin folio B and free S1>
> > > // Now S1 is free to be used again=
.
> > > <swapout src_pte & folio A using S=
1>
> > > // Now src_pte is a swap entry pte
> > > // holding S1 again.
> > > folio_trylock(folio)
> > > move_swap_pte
> > > double_pt_lock
> > > is_pte_pages_stable
> > > // Check passed because src_pte =3D=3D S1
> > > folio_move_anon_rmap(...)
> > > // Moved invalid folio B here !!!
> > >
> > > The race window is very short and requires multiple collisions of
> > > multiple rare events, so it's very unlikely to happen, but with a
> > > deliberately constructed reproducer and increased time window, it can=
be
> > > reproduced [1].
> > >
> > > It's also possible that folio (A) is swapped in, and swapped out agai=
n
> > > after the filemap_get_folio lookup, in such case folio (A) may stay i=
n
> > > swap cache so it needs to be moved too. In this case we should also t=
ry
> > > again so kernel won't miss a folio move.
> > >
> > > Fix this by checking if the folio is the valid swap cache folio after
> > > acquiring the folio lock, and checking the swap cache again after
> > > acquiring the src_pte lock.
> > >
> > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so fa=
r
> > > we don't need to worry about that since folios only might get exposed=
to
> > > swap cache in the swap out path, and it's covered in this patch too b=
y
> > > checking the swap cache again after acquiring src_pte lock.
> > >
> > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCz=
i+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > ---
> > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > 1 file changed, 26 insertions(+)
> > >
> > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > index bc473ad21202..a1564d205dfb 100644
> > > --- a/mm/userfaultfd.c
> > > +++ b/mm/userfaultfd.c
> > > @@ -15,6 +15,7 @@
> > > #include <linux/mmu_notifier.h>
> > > #include <linux/hugetlb.h>
> > > #include <linux/shmem_fs.h>
> > > +#include <linux/delay.h>
> > > #include <asm/tlbflush.h>
> > > #include <asm/tlb.h>
> > > #include "internal.h"
> > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, =
struct vm_area_struct *dst_vma,
> > > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > > struct folio *src_folio)
> > > {
> > > + swp_entry_t entry;
> > > +
> > > double_pt_lock(dst_ptl, src_ptl);
> > >
> > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig=
_src_pte,
> > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm,=
struct vm_area_struct *dst_vma,
> > > if (src_folio) {
> > > folio_move_anon_rmap(src_folio, dst_vma);
> > > src_folio->index =3D linear_page_index(dst_vma, dst_a=
ddr);
> > > + } else {
> > > + /*
> > > + * Check again after acquiring the src_pte lock. Or w=
e might
> > > + * miss a new loaded swap cache folio.
> > > + */
> > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > + src_folio =3D filemap_get_folio(swap_address_space(en=
try),
> > > + swap_cache_index(entry)=
);
> > > + if (!IS_ERR_OR_NULL(src_folio)) {
> > > + double_pt_unlock(dst_ptl, src_ptl);
> > > + folio_put(src_folio);
> > > + return -EAGAIN;
> > > + }
> > > }
> >
> > step 1: src pte points to a swap entry without swapcache
> > step 2: we call move_swap_pte()
> > step 3: someone swap-in src_pte by swap_readhead() and make src_pte's s=
wap entry
> > have swapcache again - for non-sync/non-zRAM swap device;
> > step 4: move_swap_pte() gets ptl, move src_pte to dst_pte and *clear* s=
rc_pte;
> > step 5: do_swap_page() for src_pte holds the ptl and found pte has
> > been cleared in
> > step 4; pte_same() returns false;
> > step 6: do_swap_page() won't map src_pte to the new swapcache got from =
step 3;
> > if the swapcache folio is dropped, it seems everything is f=
ine.
> >
> > So the real issue is that do_swap_page() doesn=E2=80=99t drop the new s=
wapcache
> > even when pte_same() returns false? That means the dst_pte swap-in
> > can still hit the swap cache entry brought in by the src_pte's swap-in?
>
> It seems also possible for the sync zRAM device.
>
> step 1: src pte points to a swap entry S without swapcache
> step 2: we call move_swap_pte()
> step 3: someone swap-in src_pte by sync path, no swapcache; swap slot
> S is freed.
> -- for zRAM;
> step 4: someone swap-out src_pte, get the exactly same swap slot S as st=
ep 1,
> adds folio to swapcache due to swapout;
> step 5: move_swap_pte() gets ptl and finds page tables are stable
> since swap-out
> happens to have the same swap slot as step1;
> step 6: we clear src_pte, move src_pte to dst_pte; but miss to move the =
folio.
>
> Yep, we really need to re-check pte for swapcache after holding PTL.
>
Any idea what is the overhead of filemap_get_folio()? In particular,
when no folio exists for the given entry, how costly is it?

Given how rare it is, unless filemap_get_folio() is cheap for 'no
folio' case, if there is no way to avoid calling it after holding PTL,
then we should do it only once at that point. If a folio is returned,
then like in the pte_present() case, we attempt folio_trylock() with
PTL held, otherwise do the retry dance.
> >
> > >
> > > orig_src_pte =3D ptep_get_and_clear(mm, src_addr, src_pte);
> > > @@ -1409,6 +1425,16 @@ static int move_pages_pte(struct mm_struct *mm=
, pmd_t *dst_pmd, pmd_t *src_pmd,
> > > folio_lock(src_folio);
> > > goto retry;
> > > }
> > > + /*
> > > + * Check if the folio still belongs to the ta=
rget swap entry after
> > > + * acquiring the lock. Folio can be freed in =
the swap cache while
> > > + * not locked.
> > > + */
> > > + if (unlikely(!folio_test_swapcache(folio) ||
> > > + entry.val !=3D folio->swap.val))=
{
> > > + err =3D -EAGAIN;
> > > + goto out;
> > > + }
> > > }
> > > err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr=
, dst_pte, src_pte,
> > > orig_dst_pte, orig_src_pte, dst_pmd, =
dst_pmdval,
> > > --
> > > 2.49.0
> > >
> >
>
> Thanks
> Barry


Return-Path: <linux-kernel+bounces-668953-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AF3B241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:12:55 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 2D358171E28
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:12:55 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 111021A257D;
Sat, 31 May 2025 06:12:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="rde4H29J"
Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id D03E42E628
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:12:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748671967; cv=none; b=iMkGokIqLHLO/YXgM9KnGHoPClo2QjfWRuEVx+FzkV8kAcCwfwGF9UOaJigih2xm2TBmxup28ZpWSr2Jy0y74DUQdH+rVu/CGd3oGjmYjYGIoRuhXTuATfoLbhQrYeLNYlGHfo+GIXKX9VFR0Z9fe9leep1f+K1T7orqLQkN77s=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748671967; c=relaxed/simple;
bh=MEGvhQbfx24jqEUxzb4zffirI9T8WQoQbGUFkkAFR7o=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=uQuVVEpBsSnW3NT4OcRQdUx1JkR0SV72dZOhKvfKmMnHwB/FCuy6liyJXmWQtQPP8eus32Dn0VbQ++845r7eu6gDJzmGgLSfkzWllxEaMcEfo48XM6rUHYfT1OnNIxA+HFVbZFLBzxUJcB1/hNkh3iJl/MDLnnC9HZolD9PU6HA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=rde4H29J; arc=none smtp.client-ip=209.85.210.169
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org
Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-7399838db7fso2545529b3a.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:12:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linaro.org; s=google; t=1748671965; x=1749276765; darn=vger.kernel.org;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date:from:to
:cc:subject:date:message-id:reply-to;
bh=0xC9CFEE+YUx312k0/EiyveI/Q/YMtl8Jwd16dQuFXI=;
b=rde4H29JXUZYkCwRkFh5YqmlKNfFikJlrTG0pImauIaN28Q/wO4BpvfqecpxTl7dsV
gVtq+WsB4PLRbyk/5hVxBl7h00LnGZjJN+3RW9+Jb3HG8fbFF5PNi0fKP/FNjEqWHA4R
0TxU5oNqF/m+IKkZJlH4v/TUpTKuEwlGnkG/WtAAbEedt3bChxh9TKKnnO3f4HSUs3Fw
wCV/9RlkoIX0sj3kNzLaT52zGDxCGnDWXiDBGmSC4ehl2HO+jJ/oovYALztMWRyOvafz
ZZEYCphEZDMwcSlIQnpbKV3SRP8nnYvnqzmg8Q/1qj8/lih8W1WI9evIPBTW9f8WryNf
R6Ew==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748671965; x=1749276765;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=0xC9CFEE+YUx312k0/EiyveI/Q/YMtl8Jwd16dQuFXI=;
b=pUatgwGWCh36VAh8f5CesUas0wlvvYHAHjxVSBB6UsYMjmKV4GIgo+GyXHiodkXbiJ
iCnxJf+XyIJRLs49yRPWaXin/aOybTwoHZsFUYgke0LpyRSeok31YIdllrvqOX6kM2Py
/Q19QgoajYI3AOzHQ1jHr+PHTeeacJORgrGQZyJIyEADdKQLt+j78AsQ/F5dgQFZ5733
2O3zw0Q8FMq9QSzT61Z2dNh6n5NrmkyN+8rZIvTZ29rRuSeZiX6PeDca7JkLsDL4wBVX
nBkiCerGBgHb5F4+zKCbZOLNdUjV7FoRv6F0rhdFlYL8erE4sixiIf7BN5VE52FOHp6B
th3w==
X-Forwarded-Encrypted: i=1; AJvYcCVTo5XU/B5fwR7GuLEvwxDfQFDdBXpd05Ft8A7cdKrGdwF+8d90+MbfFfRef1Q+8fEBZliuUwBIjdqENGI=@vger.kernel.org
X-Gm-Message-State: AOJu0Yx+SVpnV7Ba8Uq1vfZp3BYx/ryetA1ZlrRmYv/Em/Tqpn4duWHY
6DNvHb5OeX3YdsswNyj76CiJz4Pd4EfeOpmwFGCAwx/J4d0wk9ENRm9o8tT7zzRHZH63MYamvJH
nKo4=
X-Gm-Gg: ASbGncsYfeQ5p0La2qBHJToBbFLIPYy9tgAgCnbzWqk+BH90S8yYSkrMFgM+qbCDS/e
YUwQxlvlj5y0PGtABrKHrn/BcorIUr4RW3Vm+uWZpZRtzaNdiN/n5mpKTK7knDO1XKT4Mxc93hi
qJT4NLh93PNfISP4xD1y7SlIxfQO0tljKPD6pq0rSBZ3MjCiobvijtifVLDXLmq4nrGEc7nmLYI
Z6vie1nmBw/JBgWWVD5Wly7S83j//C+G/hL6jZC8jw6l3FID0NWyCoUcOL6v+QkBoZQNsS8TqZI
04iote4o1E2dsE7Cj7YvFg3vSOegDXVrqCFrGNJssH/xx5eQFLnRUPThriW/cT9droXxliB9
X-Google-Smtp-Source: AGHT+IE96H8U8bWE8z0seGlz+ce1VhCU9n8V1B9SIIp0uy/rKpHh593gOPlHdV8KFu0tdA5IB8EsVg==
X-Received: by 2002:a05:6a00:8b09:b0:736:4c3d:2cba with SMTP id d2e1a72fcca58-747ad757dc4mr9023047b3a.9.1748671965098;
Fri, 30 May 2025 23:12:45 -0700 (PDT)
Received: from thinkpad ([120.56.204.95])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747affcf4c5sm3950187b3a.124.2025.05.30.23.12.41
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:12:44 -0700 (PDT)
Date: Sat, 31 May 2025 11:42:40 +0530
From: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
To: Hans Zhang <18255117159@xxxxxxx>
Cc: shawn.lin@xxxxxxxxxxxxxx, lpieralisi@xxxxxxxxxx, kw@xxxxxxxxx,
bhelgaas@xxxxxxxxxx, heiko@xxxxxxxxx, robh@xxxxxxxxxx, linux-pci@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-rockchip@xxxxxxxxxxxxxxxxxxx
Subject: Re: [PATCH v2 0/3] Fix interrupt log message
Message-ID: <hjckb2qsdz5atx5occqv7m6syg4fnilxhmn4zeq4y5yoqkmdjf@66gudl2chlgk>
References: <20250516145544.110516-1-18255117159@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20250516145544.110516-1-18255117159@xxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 16, 2025 at 10:55:41PM +0800, Hans Zhang wrote:
> Dear Maintainers,
>
> Detailed descriptions of interrupts can be seen from RK3399 TRM doc.
> I found two errors and cleaned up the driver by the way.
>
> This patch series improves the logging accuracy and code cleanliness of
> the Rockchip PCIe host controller driver:
>
> Log Message Clarifications
>
> Patch 1 fixes a misleading debug message for the PCIE_CORE_INT_UCR
> interrupt, replacing a duplicated "malformed TLP" message with "Unexpected
> Completion" to reflect the actual error condition.
>
> Patch 2 corrects the terminology for non-fatal errors, renaming "no fatal
> error" to "non fatal error interrupt received" to align with PCIe interrupt
> semantics.
>
> Code Cleanup
>
> Patch 3 removes redundant header includes (e.g., unused clock/reset
> headers) to streamline the driver and reduce build dependencies.
>
> These changes enhance debug log reliability, eliminate ambiguity for
> developers.
>

Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>

- Mani

> ---
> Changes for v2:
> - Drop patch [v1 3/4].
> - The other patches have not been modified.
> ---
>
> Hans Zhang (3):
> PCI: rockchip-host: Fix "Unexpected Completion" log message
> PCI: rockchip-host: Correct non-fatal error log message
> PCI: rockchip-host: Remove unused header includes
>
> drivers/pci/controller/pcie-rockchip-host.c | 13 ++-----------
> 1 file changed, 2 insertions(+), 11 deletions(-)
>
>
> base-commit: 82f2b0b97b36ee3fcddf0f0780a9a0825d52fec3
> --
> 2.25.1
>

--
மணிவண�ணன� �தா�ிவம�


Return-Path: <linux-kernel+bounces-668954-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 61B9141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:14:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 270051BA1501
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:14:34 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BB3FA20E033;
Sat, 31 May 2025 06:14:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Szt+Gcdq"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15])
(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 143DE2E628;
Sat, 31 May 2025 06:14:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.15
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748672053; cv=none; b=k1ShI9MViGXBGe4BJ//65btguJwbR+28Q9elbcqrWfgF/KfP6epESP2sdycbPHRe+cWL1P87F99nzrYpnRkLYAT6C2Trgvxn7ULKBMRKuH88gOKaSOSH1aaJ5MUHGhQSjZ+hW/cKlfNCG4p2lITR81YUwgJ/DjiiO2D4OrxUvhA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748672053; c=relaxed/simple;
bh=bqi6rJ0hiVr8slNOa6h3sST0DYxL7m3H/YQ3HcJjmhU=;
h=From:Date:To:cc:Subject:In-Reply-To:Message-ID:References:
MIME-Version:Content-Type; b=X4blWRPMl8InCGvqO31UfsTw+JLUqZJd9VYzlIzHZ45iC8FG3Cb2hK1BFaZYRW5Xy9VvVbxhi20wWNqcwaYPcl1n7iqjT5yJp140ocDHB1/AD777xMxtg0kKdHIMqLlLCGzTi57kAg7m1Jo7JAa40ZUG5q0eKurE9nZ3BNKw7NY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Szt+Gcdq; arc=none smtp.client-ip=198.175.65.15
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748672051; x=1780208051;
h=from:date:to:cc:subject:in-reply-to:message-id:
references:mime-version:content-id;
bh=bqi6rJ0hiVr8slNOa6h3sST0DYxL7m3H/YQ3HcJjmhU=;
b=Szt+GcdqjnF/v8/IqrJT10YH79e8Xfvvm/qcf6QQ8HMfHVWk3eGHgIsK
cuk2wTgweD8nXsL3HUOYPWgS56DvOxxpp/5GAdueOqVPkYprz5hEbdM9X
6Mzs1XZrhht1CIu7qFk3oysh70knsdYTRBNJhvWrYJxNFAHFH/QxscubE
X5JrgwIybzVMflDhWsvZKJviZla9RY5Cd3XAczvJqb1HAmhtMlsWOBQpE
tpdSxeQRsmZ4dwfMiy92Ug9d6Xg+Ne+91bx+Ke9ZVVxB5dym8s9I2LmfT
KMObahQD6glgIQMTpfNk52kURMDp0cJ77ttU36z1HR6MnsuaOnCynHln7
Q==;
X-CSE-ConnectionGUID: g3AVgr+tQrSNQrz/s1Kdsg==
X-CSE-MsgGUID: HJlWUEPJSSiSXgO55qFOAg==
X-IronPort-AV: E=McAfee;i="6700,10204,11449"; a="54429665"
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="54429665"
Received: from orviesa010.jf.intel.com ([10.64.159.150])
by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 23:14:10 -0700
X-CSE-ConnectionGUID: zk+4zkahSJioxj5UcKUAKg==
X-CSE-MsgGUID: vHJUI23TQWCCrPFGUJPBIQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,197,1744095600";
d="scan'208";a="144038811"
Received: from ijarvine-mobl1.ger.corp.intel.com (HELO localhost) ([10.245.245.71])
by orviesa010-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 May 2025 23:14:03 -0700
From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 09:14:00 +0300 (EEST)
To: Derek John Clark <derekjohn.clark@xxxxxxxxx>,
Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx>,
linux-sparse@xxxxxxxxxxxxxxx
cc: Hans de Goede <hdegoede@xxxxxxxxxx>, Armin Wolf <W_Armin@xxxxxx>,
Jonathan Corbet <corbet@xxxxxxx>, Mario Limonciello <superm1@xxxxxxxxxx>,
Luke Jones <luke@xxxxxxxxxx>, Xino Ni <nijs1@xxxxxxxxxx>,
Zhixin Zhang <zhangzx36@xxxxxxxxxx>, Mia Shao <shaohz1@xxxxxxxxxx>,
Mark Pearson <mpearson-lenovo@xxxxxxxxx>,
"Pierre-Loup A . Griffais" <pgriffais@xxxxxxxxxxxxxxxxx>,
"Cody T . -H . Chiu" <codyit@xxxxxxxxx>,
John Martens <johnfanv2@xxxxxxxxx>, Kurt Borja <kuurtb@xxxxxxxxx>,
platform-driver-x86@xxxxxxxxxxxxxxx, linux-doc@xxxxxxxxxxxxxxx,
LKML <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v11 0/6] platform/x86: Add Lenovo WMI Gaming Series
Drivers
In-Reply-To: <CAFqHKTnp2zMTAfdYBpxestSErpsgwSf_TmkLjjU0W5HOFiC9bA@xxxxxxxxxxxxxx>
Message-ID: <e98eccf5-1006-3d1b-d2fb-783637807ac7@xxxxxxxxxxxxxxx>
References: <20250522015350.471070-1-derekjohn.clark@xxxxxxxxx> <2972c4c6-7080-e058-ec39-b8c1dc603f7a@xxxxxxxxxxxxxxx> <2c7ffaa6-e639-e215-42d0-78a2b185ad45@xxxxxxxxxxxxxxx> <CAFqHKTnp2zMTAfdYBpxestSErpsgwSf_TmkLjjU0W5HOFiC9bA@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/mixed; BOUNDARY="8323328-43950218-1748671245=:937"
Content-ID: <8ecdec3f-fb03-044b-ec92-17e1a21e1ebd@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.

--8323328-43950218-1748671245=:937
Content-Type: text/plain; CHARSET=UTF-8
Content-Transfer-Encoding: QUOTED-PRINTABLE
Content-ID: <f0193626-50b6-a117-7794-a28eb0b5443e@xxxxxxxxxxxxxxx>

+ Cc sparse people.

On Fri, 30 May 2025, Derek John Clark wrote:

> On Sun, May 25, 2025 at 2:42=E2=80=AFPM Ilpo J=C3=A4rvinen
> <ilpo.jarvinen@xxxxxxxxxxxxxxx> wrote:
> >
> > On Mon, 26 May 2025, Ilpo J=C3=A4rvinen wrote:
> >
> > > On Wed, 21 May 2025, Derek J. Clark wrote:
> > >
> > > > Adds support for the Lenovo "Gaming Series" of laptop hardware that=
use
> > > > WMI interfaces that control various power settings. There are multi=
ple WMI
> > > > interfaces that work in concert to provide getting and setting valu=
es as
> > > > well as validation of input. Currently only the "Gamezone", "Other
> > > > Mode", and "LENOVO_CAPABILITY_DATA_01" interfaces are implemented, =
but
> > > > I attempted to structure the driver so that adding the "Custom Mode=
",
> > > > "Lighting", and other data block interfaces would be trivial in lat=
er
> > > > patches.
> > > >
> > > > This driver attempts to standardize the exposed sysfs by mirroring =
the
> > > > asus-armoury driver currently under review. As such, a lot of
> > > > inspiration has been drawn from that driver.
> > > > https://lore.kernel.org/platform-driver-x86/20250319065827.53478-1-=
luke@xxxxxxxxxx/#t
> > > >
> > > > The drivers have been tested by me on the Lenovo Legion Go and Legi=
on Go
> > > > S.
> > > >
> > > > Suggested-by: Mario Limonciello <superm1@xxxxxxxxxx>
> > > > Reviewed-by: Armin Wolf <W_Armin@xxxxxx>
> > > > Signed-off-by: Derek J. Clark <derekjohn.clark@xxxxxxxxx>
> > > > ---
> > > > v11:
> > > > - Fix formmating issues.
> > >
> > > Thanks for the update, I've applied this now into the review-ilpo-nex=
t
> > > branch. BUT, this is very late in the cycle now and if there's a buil=
d
> > > issue (or LKP doesn't build test it in reasonable time), I'll have to=
drop
> > > this series and postpone it into the next cycle as I don't want to de=
lay
> > > the main PR to Linus too long.
> > >
> > > But lets hope for the best, I think some depends on issues were fixed
> > > earlier (IIRC), so hopefully it works good enough now. :-)
> >
> > Hmpf, these give me a few new warnings related to this series:
> >
> > make W=3D1 drivers/platform/x86/
> > make C=3D2 drivers/platform/x86/
>=20
> When I use scoped_guard the warnings go away.

Okay, not that it helps much because the implementation of guard() and=20
scoped_guard() is dramatically different.

> It seems to be a
> limitation of sparse in that its not correctly identifying the guard
> will be unlocked on the return perhaps?

It's odd because we'd have those warnings all over the place if it would=20
be general thing for sparse to not understand how guard() works. Maybe=20
sparse people have some idea what's so special here?

To give context to sparse people, this patch triggers two false=20
positives in sparse:

https://lore.kernel.org/platform-driver-x86/20250522015350.471070-6-derekjo=
hn.clark@xxxxxxxxx/

$ make C=3D2 drivers/platform/x86/lenovo-wmi-gamezone.o
CHECK scripts/mod/empty.c
CALL scripts/checksyscalls.sh
DESCEND objtool
INSTALL libsubcmd_headers
CHECK drivers/platform/x86/lenovo-wmi-gamezone.c
drivers/platform/x86/lenovo-wmi-gamezone.c:155:12: warning: context=20
imbalance in 'lwmi_gz_profile_get' - different lock contexts for basic=20
block
drivers/platform/x86/lenovo-wmi-gamezone.c:206:12: warning: context=20
imbalance in 'lwmi_gz_profile_set' - different lock contexts for basic=20
block

https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.=
git/tree/drivers/platform/x86/lenovo-wmi-gamezone.c?h=3Dreview-ilpo-next#n1=
90

(That code link is just for convinience, it's not a perma one, I'll be=20
overwriting that branch eventually once the merge window is over, if not=20
sooner.)

> In any case, if you're okay
> with a scoped guard here (matches both other invocations) I'll send it
> up.

I'd prefer to keep using guard() for now as this looks clearly a false=20
positive from sparse, not a problem in your code.

> I also took care of the warnings for W=3D1.

Thanks.

> > ...I really don't know why sparse complains about the lock context
> > imbalance though, those functions use guard().

--=20
i.
--8323328-43950218-1748671245=:937--


Return-Path: <linux-kernel+bounces-668955-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1893741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:23:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 9451C1BA3955
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:23:18 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6B02222D7A6;
Sat, 31 May 2025 06:22:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DQXutqWx"
Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 64774EEA9;
Sat, 31 May 2025 06:22:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.180
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748672576; cv=none; b=tHrva/561eoV4+yONJCK6wLbZono2pyAY7VpTkilG6CqyBOBpqpz0Kc7G5DM89Qd9+k2kFqxqbGKRcWWpP+e2cCNcM/GCd0POgj0f9xtlTEFdNI0I47PqRvENkd4rvv6USct6odWgq5+Uovk3Oy+cBWHfqDkdDVmwbOIMqbGe3A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748672576; c=relaxed/simple;
bh=YuLdvkfK+9Pn96qHV6pjgzwb7AkKwqjHCAwt6FM17BA=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=K/wxR4s4pXC+4MHraFq9vxPjhu28+ePtTUOrNoCp+Lv8s9HV7ihgVhGW6cjttGtLNltUy7U7xcZsMIosTCbMCPoG8n1qQXtijXbHMxx39uYbJYmmgfbbaeuJj4HlFWeKwuiOsiIHVPkuLisa7zowbgOIldDiWJLfwiczaKIyhoA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DQXutqWx; arc=none smtp.client-ip=209.85.208.180
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-32a696ff4deso24994691fa.1;
Fri, 30 May 2025 23:22:54 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748672572; x=1749277372; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=8z6mh7pdJDvN8yUkwBxqHC+Y8n4XgRQIeuqir52nwPE=;
b=DQXutqWx/VXwjala8XN9r7+d/ylfw4zPY/de6qg2KOQKdM5hH5MuefJG96+JfpRz5B
xTd9izemTi9IieEFgRUMtq5mOd2LM9/wsSBLy+h4iICVecDvMTFla5L9+HpIZhR8h6f/
Y4gTcj3ozo+qvKiKY6vBUz4V2I9S4hFfmpxROP/pRiiKykoeD4GUkdwM3rVYfJy+V5Xx
8vOzTs9QKhHwYNZniTuJjubC3LVOSXDJmrrMd3XSoNLBQN27OvLvQW7AGtUKbIf9szUs
SIJHplLp+WLWsBSd+SAKCb2J7IAXOhlv26OcQtnx32ogj0fJcwyGUYoK8ihMKPIDNNhO
IfqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748672572; x=1749277372;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=8z6mh7pdJDvN8yUkwBxqHC+Y8n4XgRQIeuqir52nwPE=;
b=ZG0ZrPyPMBpPcFkVPQ/8rVw8Jq0RM50giT6C3k8ap1lXD+JAOpkTzTowhvVEJzkAFb
4ffFdmrZzjzZYYJ7+Lly20sNIw+9SQebamqT8ZNoPA/2Ff1k/1OUyTAhTUh2j6vxAtRG
StHMtQrZcM9cnaj0/et+ecHFuK1LNhGVVIBuM6nCP1s/sgsOir4wsTl+d1JEhHHU/5Q4
VNjEd8FV0X6FeIa24IA6PIjEkj9EAsBcV+usxzhxT0ln/gyay+nitLrVDpebwgFu0ebl
QykdBrazEQ3ICjv2TX7fLJ/8IY4kEYaTklOftYniLSQydAKHiFgE9iFNyDQhtjCqUzZC
rGDw==
X-Forwarded-Encrypted: i=1; AJvYcCVjQSyQKywo1aFYO62RXAi2fjMZ5G/jUCANyVtA6NKtcJmWsQ0FsqDwjf327/b5nTI4fmyP5JGTWn19bHI=@vger.kernel.org, AJvYcCWt8prIo3XT7SWLeOiewePzXg8KzVGttQfuYxhXxpF2DkRmGEsXQLfhNDS3TcTBwquQsF96yjD/@vger.kernel.org
X-Gm-Message-State: AOJu0YxhkVzGgyx3f/c7N7FHQ8iUybGUC/LoETAu/BcDLPXGeUKXrg64
vPZwvIJf9Y0lDyjmeu1bovedMf4/zNqUOFbNfKM6xQUvxb0FTRd1ucXxnE/a63aPnArg5iz3mbd
73O4QIR/Kr6jZ8OLorNkQKBaD+Q2aoXc=
X-Gm-Gg: ASbGncutrE7GP5KR5skLEnkONY998KH5CGzIyKcWea+vu0sm+4/klfeBtvrrygjwpgU
1IqgImGZ19Fg4QG68EgbB1sWpCbHkDOjx01OVuOiluEN3VXYRNCIxiOtZi8F73+4IuUhxL1OIoz
hhgeFXEcX2Qk1ZPn6TK9OP1r+ZuGHgEs+4
X-Google-Smtp-Source: AGHT+IHS8XLKQ5NmPv0l2ZJX5RYz0dEFA4DWAVhyuy7guXysiJ85JCN16IFjvHRjGXXy7OsItWIIp4P8s8h7CeYnOrs=
X-Received: by 2002:a2e:a986:0:b0:32a:710f:5a0 with SMTP id
38308e7fff4ca-32a906d76a0mr15468041fa.11.1748672572114; Fri, 30 May 2025
23:22:52 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
In-Reply-To: <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
From: Kairui Song <ryncsn@xxxxxxxxx>
Date: Sat, 31 May 2025 14:22:34 +0800
X-Gm-Features: AX0GCFs1kvLiRCh7TzrXTKfCqNtzaev34lKPFyF-_wQf4bInaissLB-H6Q8jHs4
Message-ID: <CAMgjq7B=CEhEE_M3d07Vtq+Fkv8+A7pu2axQu0oLi44d1r9Xrg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>
Cc: linux-mm@xxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Barry Song <21cnbao@xxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 7:42=E2=80=AFAM Lokesh Gidra <lokeshgidra@xxxxxxxxx=
m> wrote:
>
> On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wr=
ote:
> >
> > From: Kairui Song <kasong@xxxxxxxxxxx>
> >
> > On seeing a swap entry PTE, userfaultfd_move does a lockless swap cache
> > lookup, and try to move the found folio to the faulting vma when.
> > Currently, it relies on the PTE value check to ensure the moved folio
> > still belongs to the src swap entry, which turns out is not reliable.
> >
> > While working and reviewing the swap table series with Barry, following
> > existing race is observed and reproduced [1]:
> >
> > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > swap entry PTE holding swap entry S1, and S1 isn't in the swap cache.)
> >
> > CPU1 CPU2
> > userfaultfd_move
> > move_pages_pte()
> > entry =3D pte_to_swp_entry(orig_src_pte);
> > // Here it got entry =3D S1
> > ... < Somehow interrupted> ...
> > <swapin src_pte, alloc and use folio=
A>
> > // folio A is just a new allocated f=
olio
> > // and get installed into src_pte
> > <frees swap entry S1>
> > // src_pte now points to folio A, S1
> > // has swap count =3D=3D 0, it can b=
e freed
> > // by folio_swap_swap or swap
> > // allocator's reclaim.
> > <try to swap out another folio B>
> > // folio B is a folio in another VMA=
.
> > <put folio B to swap cache using S1 =
>
> > // S1 is freed, folio B could use it
> > // for swap out with no problem.
> > ...
> > folio =3D filemap_get_folio(S1)
> > // Got folio B here !!!
> > ... < Somehow interrupted again> ...
> > <swapin folio B and free S1>
> > // Now S1 is free to be used again.
> > <swapout src_pte & folio A using S1>
> > // Now src_pte is a swap entry pte
> > // holding S1 again.
> > folio_trylock(folio)
> > move_swap_pte
> > double_pt_lock
> > is_pte_pages_stable
> > // Check passed because src_pte =3D=3D S1
> > folio_move_anon_rmap(...)
> > // Moved invalid folio B here !!!
> >
> > The race window is very short and requires multiple collisions of
> > multiple rare events, so it's very unlikely to happen, but with a
> > deliberately constructed reproducer and increased time window, it can b=
e
> > reproduced [1].
>
> Thanks for catching and fixing this. Just to clarify a few things
> about your reproducer:
> 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> MAP_PRIVATE will work as well?

Hi, I used MAP_SHARED just to prevent vma merging, so folio B and
folio A belong to different vma, so the folio_move_anon_rmap will
cause a real problem. The race is not related to the map flag.

> 2. You mentioned that the 'current dir is on a block device'. Are you
> indicating that if we are using zram for swap then it doesn't
> reproduce?

ZRAM may also trigger the race, with a slightly different race window,
but the race window is even shorter so I can't reproduce with that.

>
> >
> > It's also possible that folio (A) is swapped in, and swapped out again
> > after the filemap_get_folio lookup, in such case folio (A) may stay in
> > swap cache so it needs to be moved too. In this case we should also try
> > again so kernel won't miss a folio move.
> >
> > Fix this by checking if the folio is the valid swap cache folio after
> > acquiring the folio lock, and checking the swap cache again after
> > acquiring the src_pte lock.
> >
> > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so far
> > we don't need to worry about that since folios only might get exposed t=
o
> > swap cache in the swap out path, and it's covered in this patch too by
> > checking the swap cache again after acquiring src_pte lock.
> >
> > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCzi+=
EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > ---
> > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > 1 file changed, 26 insertions(+)
> >
> > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > index bc473ad21202..a1564d205dfb 100644
> > --- a/mm/userfaultfd.c
> > +++ b/mm/userfaultfd.c
> > @@ -15,6 +15,7 @@
> > #include <linux/mmu_notifier.h>
> > #include <linux/hugetlb.h>
> > #include <linux/shmem_fs.h>
> > +#include <linux/delay.h>
> I guess you mistakenly left it from your reproducer code :)

Ah, yes, I'll drop this :)

> > #include <asm/tlbflush.h>
> > #include <asm/tlb.h>
> > #include "internal.h"
> > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, st=
ruct vm_area_struct *dst_vma,
> > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > struct folio *src_folio)
> > {
> > + swp_entry_t entry;
> > +
> > double_pt_lock(dst_ptl, src_ptl);
> >
> > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig_s=
rc_pte,
> > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm, s=
truct vm_area_struct *dst_vma,
> > if (src_folio) {
> > folio_move_anon_rmap(src_folio, dst_vma);
> > src_folio->index =3D linear_page_index(dst_vma, dst_add=
r);
> > + } else {
> > + /*
> > + * Check again after acquiring the src_pte lock. Or we =
might
> > + * miss a new loaded swap cache folio.
> > + */
> > + entry =3D pte_to_swp_entry(orig_src_pte);
> > + src_folio =3D filemap_get_folio(swap_address_space(entr=
y),
> > + swap_cache_index(entry));
>
> Given the non-trivial overhead of filemap_get_folio(), do you think it
> will work if filemap_get_filio() was only once after locking src_ptl?
> Please correct me if my assumption about the overhead is wrong.

No we can't do the filemap_get_filio after locking src_ptl, moving the
folio requires locking it, lock a folio inside a PTE lock looks a bad
idea... So I just added a lockless lookup and fallback to try again if
found one.

The overhead should be low I think, it's a lockless xarray lookup and
when I was doing many profiling of SWAP performance optimizations,
Xarray look up is not a heavy burden.

>
> > + if (!IS_ERR_OR_NULL(src_folio)) {
> > + double_pt_unlock(dst_ptl, src_ptl);
> > + folio_put(src_folio);
> > + return -EAGAIN;
> > + }
> > }
> >
> > orig_src_pte =3D ptep_get_and_clear(mm, src_addr, src_pte);
> > @@ -1409,6 +1425,16 @@ static int move_pages_pte(struct mm_struct *mm, =
pmd_t *dst_pmd, pmd_t *src_pmd,
> > folio_lock(src_folio);
> > goto retry;
> > }
> > + /*
> > + * Check if the folio still belongs to the targ=
et swap entry after
> > + * acquiring the lock. Folio can be freed in th=
e swap cache while
> > + * not locked.
> > + */
> > + if (unlikely(!folio_test_swapcache(folio) ||
> > + entry.val !=3D folio->swap.val)) {
> > + err =3D -EAGAIN;
> > + goto out;
> > + }
>
> To avoid further increasing move_pages_pte() size, I recommend moving
> the entire 'pte not present' case into move_swap_pte(), and maybe
> returning some positive integer (or something more appropriate) to
> handle the retry case. And then in move_swap_pte(), as suggested
> above, you can do filemap_get_folio only once after locking ptl.
>
> I think this will fix the bug as well as improve the code's organization.
>
> > }
> > err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr, =
dst_pte, src_pte,
> > orig_dst_pte, orig_src_pte, dst_pmd, ds=
t_pmdval,
> > --
> > 2.49.0
> >
>


Return-Path: <linux-kernel+bounces-668956-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3822341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:25:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3DD8D17E02D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:25:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B3ED622D9E0;
Sat, 31 May 2025 06:25:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S64M/EdB"
Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id DDA97EEA9;
Sat, 31 May 2025 06:25:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.171
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748672736; cv=none; b=mMOX+T3XgxUVZrkLeRkZtAOxoNVkh+mgyw/TDWwOmtdgTwoaueT5SIaMcX3KPu2biNxF19w/rlqeCDitmax0kXEw3luQ6cRtp8lXXsyWU8m7TlWIVXKedadMsmxWeGl61UihVu2a55xIpW/6f0/UbfKrNseB9yHJnK3PjxpfAHc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748672736; c=relaxed/simple;
bh=N5wlHSkMgcAVVEV/E2uNhCs/y2dOevW/B1z/nJxUuTE=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=ASe6bLpPQ7inAfHYhhf87K+DiY8wis4N3lPKqUCZsyRpcvKyrrYJfXTHjkXepoH+fcBEWlvi5he7xOfHLhkyMpJfWqT91fztz7a0NxzqeUXeWOVE/0ZNX1hHmMiYqIZAEPaWgeuVDFZRZb5e/Ox1zRvtzGqzqU6vTsrAUDYGslg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=S64M/EdB; arc=none smtp.client-ip=209.85.208.171
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-32a696ff4dcso24777431fa.3;
Fri, 30 May 2025 23:25:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748672733; x=1749277533; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=w/4OXa2hzFRR47673rkgb/Kf+clw6rbd55Z6IECRLgA=;
b=S64M/EdBHo53e1tmOJMW+NFdBtMpsre79ODX12zIzcd+bcrdQ/LssUcOMm4X2CUEtv
L0x/msfHx/nMoijbojyvP1ORFjPPW2WGLsBv80CEQpK9HZ52oZ+5/HYzA4ZWEUFUiPzP
QGrMMItVav0EVUvrnySahnR16YitC5T7k9zoVdFfAJlrrmomDuLRJuwIWEZlEPPiUw3m
08dthlfh3iXs9JSrHHQETik4/CCQ8GkmhBxJb6SBTh8c3fQ7Y2oCcrK6Y0KZyxhoX6eq
tyIevs0FdlNaz22Fn2njXJoeqAvfXEAybeg8ZeG0YHit0TvrStSYNIwbT5X8qtkoD0AO
Jgfw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748672733; x=1749277533;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=w/4OXa2hzFRR47673rkgb/Kf+clw6rbd55Z6IECRLgA=;
b=Fj4v4I3ydrT701x0xKUHoH3KSav3zlWkTflEbMMpGT+C+D+kXyzok1HVFspIZlqyjQ
71XV99jGMDKSOvbs2KT5HsFGj19+Tof35W4j7Khw7AhjEmKZm+Yhxa/MUmkbc750CqN+
PiVL9F4lusCAS2vBnyDjSZCjjsND0o4cHWQwObGI7UdjZKP36dV+ei2gW08N/RqiqDxU
osoGxqJH3u8eMlYBf5xiEt9mbDBHe6GRiVmOzfuVTyTBdLkRnMC36dm0OVFahMmqbjeg
xEGkCqteT6LjKAOu/85lNJjmpI+HljGM29aGRvyYhE/zwn1mVfjwMldpyDFIIe0N+jb8
jBYA==
X-Forwarded-Encrypted: i=1; AJvYcCWFfg/XjVPRV2HA3Dh6cksBzJSA9srTCzzYSHCWKsHBcN5C8ora1/QXjjzFCUowKeFbFMW2rbWo3/ZmdOA=@vger.kernel.org, AJvYcCWPJuuo3AFPsEpDzY0ycQjNUA+jV2KlOLIYu/jXDY+dAH1vVAV3TZwIKicq+Gz7omluySpk0WPQ@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyZzzFTc9pfUYusNLPWp4nkjd82VhiIT5SHu30CIi0lFCuK6iZN
+BAV3Va1iafRV9RQF0ETnVuZ5PWxfTTNappfkyIrFyhyxt8PihoXqwyyR6pyUPC4x+2tYlaRYNW
MoPqg6xYF0sHRZpbC2FxoDOopr1vCZ0w=
X-Gm-Gg: ASbGncv9Rs1VvGcbMAvNtAxrTqNTqnb1m0OKb3xFvccmaJbowtPcqj1LM95JI1Yg9ee
XpU6QIWRMOMOZfPIcd0YErZdFliCtik4Fm0k57IbuXA6W9iizY4aiXvJf2POJHWEN3gP0i3bZlh
6xpZeoM1lc7f1rFy8KPYfOUM9wbVo2Sq7LArrmkF9iLEA=
X-Google-Smtp-Source: AGHT+IFhM1XZLO7FrleH7PqM7ZD1Wco65eL8LCXHXmS8zuJtDDrVY7wm2Kw2/lda2Mx5v32XBJlDb18N+HNo75impDo=
X-Received: by 2002:a05:651c:110d:b0:32a:5e74:5721 with SMTP id
38308e7fff4ca-32a8ce4a7f3mr15703871fa.35.1748672732752; Fri, 30 May 2025
23:25:32 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
<CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
From: Kairui Song <ryncsn@xxxxxxxxx>
Date: Sat, 31 May 2025 14:25:15 +0800
X-Gm-Features: AX0GCFuYMKY5sjANTAwsyv716ph6C9qB9Snsja0SuMF35VaUtRDL9vcNOQSsYbM
Message-ID: <CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Barry Song <21cnbao@xxxxxxxxx>
Cc: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 11:39=E2=80=AFAM Barry Song <21cnbao@xxxxxxxxx> wro=
te:
>
> On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidra@google=
.com> wrote:
> >
> > On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> =
wrote:
> > >
> > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > >
> > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap cac=
he
> > > lookup, and try to move the found folio to the faulting vma when.
> > > Currently, it relies on the PTE value check to ensure the moved folio
> > > still belongs to the src swap entry, which turns out is not reliable.
> > >
> > > While working and reviewing the swap table series with Barry, followi=
ng
> > > existing race is observed and reproduced [1]:
> > >
> > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > swap entry PTE holding swap entry S1, and S1 isn't in the swap cache=
.)
> > >
> > > CPU1 CPU2
> > > userfaultfd_move
> > > move_pages_pte()
> > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > // Here it got entry =3D S1
> > > ... < Somehow interrupted> ...
> > > <swapin src_pte, alloc and use fol=
io A>
> > > // folio A is just a new allocated=
folio
> > > // and get installed into src_pte
> > > <frees swap entry S1>
> > > // src_pte now points to folio A, =
S1
> > > // has swap count =3D=3D 0, it can=
be freed
> > > // by folio_swap_swap or swap
> > > // allocator's reclaim.
> > > <try to swap out another folio B>
> > > // folio B is a folio in another V=
MA.
> > > <put folio B to swap cache using S=
1 >
> > > // S1 is freed, folio B could use =
it
> > > // for swap out with no problem.
> > > ...
> > > folio =3D filemap_get_folio(S1)
> > > // Got folio B here !!!
> > > ... < Somehow interrupted again> ...
> > > <swapin folio B and free S1>
> > > // Now S1 is free to be used again=
.
> > > <swapout src_pte & folio A using S=
1>
> > > // Now src_pte is a swap entry pte
> > > // holding S1 again.
> > > folio_trylock(folio)
> > > move_swap_pte
> > > double_pt_lock
> > > is_pte_pages_stable
> > > // Check passed because src_pte =3D=3D S1
> > > folio_move_anon_rmap(...)
> > > // Moved invalid folio B here !!!
> > >
> > > The race window is very short and requires multiple collisions of
> > > multiple rare events, so it's very unlikely to happen, but with a
> > > deliberately constructed reproducer and increased time window, it can=
be
> > > reproduced [1].
> >
> > Thanks for catching and fixing this. Just to clarify a few things
> > about your reproducer:
> > 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> > MAP_PRIVATE will work as well?
> > 2. You mentioned that the 'current dir is on a block device'. Are you
> > indicating that if we are using zram for swap then it doesn't
> > reproduce?
> >
> > >
> > > It's also possible that folio (A) is swapped in, and swapped out agai=
n
> > > after the filemap_get_folio lookup, in such case folio (A) may stay i=
n
> > > swap cache so it needs to be moved too. In this case we should also t=
ry
> > > again so kernel won't miss a folio move.
> > >
> > > Fix this by checking if the folio is the valid swap cache folio after
> > > acquiring the folio lock, and checking the swap cache again after
> > > acquiring the src_pte lock.
> > >
> > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so fa=
r
> > > we don't need to worry about that since folios only might get exposed=
to
> > > swap cache in the swap out path, and it's covered in this patch too b=
y
> > > checking the swap cache again after acquiring src_pte lock.
> > >
> > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCz=
i+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > ---
> > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > 1 file changed, 26 insertions(+)
> > >
> > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > index bc473ad21202..a1564d205dfb 100644
> > > --- a/mm/userfaultfd.c
> > > +++ b/mm/userfaultfd.c
> > > @@ -15,6 +15,7 @@
> > > #include <linux/mmu_notifier.h>
> > > #include <linux/hugetlb.h>
> > > #include <linux/shmem_fs.h>
> > > +#include <linux/delay.h>
> > I guess you mistakenly left it from your reproducer code :)
> > > #include <asm/tlbflush.h>
> > > #include <asm/tlb.h>
> > > #include "internal.h"
> > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, =
struct vm_area_struct *dst_vma,
> > > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > > struct folio *src_folio)
> > > {
> > > + swp_entry_t entry;
> > > +
> > > double_pt_lock(dst_ptl, src_ptl);
> > >
> > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig=
_src_pte,
> > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm,=
struct vm_area_struct *dst_vma,
> > > if (src_folio) {
> > > folio_move_anon_rmap(src_folio, dst_vma);
> > > src_folio->index =3D linear_page_index(dst_vma, dst_a=
ddr);
> > > + } else {
> > > + /*
> > > + * Check again after acquiring the src_pte lock. Or w=
e might
> > > + * miss a new loaded swap cache folio.
> > > + */
> > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > + src_folio =3D filemap_get_folio(swap_address_space(en=
try),
> > > + swap_cache_index(entry)=
);
> >
> > Given the non-trivial overhead of filemap_get_folio(), do you think it
> > will work if filemap_get_filio() was only once after locking src_ptl?
> > Please correct me if my assumption about the overhead is wrong.
>
> not quite sure as we have a folio_lock(src_folio) before move_swap_pte().
> can we safely folio_move_anon_rmap + src_folio->index while not holding
> folio lock?

I think no, we can't even make sure the folio is still in the swap
cache, so it can be a freed folio that does not belong to any VMA
while not holding the folio lock.


Return-Path: <linux-kernel+bounces-668957-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4E04641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:31:30 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 7187D4A4194
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:31:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 04336226D1E;
Sat, 31 May 2025 06:31:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="bUKubEWP"
Received: from mail-lj1-f174.google.com (mail-lj1-f174.google.com [209.85.208.174])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B4FDEAD0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:31:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.174
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673083; cv=none; b=Rba6ZdJFm7VhYMmznC7sdZNroZVb6PwpyYY+SgH3mTePJwM/MLVV1CulIr0z6HnxzR2h3GHWTBlVKMpgR3byEMPeBEYa4zZ2LSscFHdoiLy8TIyLfEL5hV/mGRnDdan89LpwWX//BvRADuDdb4QISXA6iWWolCrSeQmUKRLn8k8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673083; c=relaxed/simple;
bh=CoXc0dCTOqLMCSZiQCdApcQAWyCSGk0wug+xWpDaT0k=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=nAoOij45FvUBT9H/VAD2JTfPfhXVoEF+3dciGIodZ/6c38f2kHmjT8UwZrqsrnmIj4nnF9PWgMN4+fL3XRFRhka2Vb0Vd50lTqDk0n4yau+Pi//7eR9anYyJXod5stxSxp8naKE065yACNoo8xc4pdGmjEBXBHzB/Aaqrhhmydk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=bUKubEWP; arc=none smtp.client-ip=209.85.208.174
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-31062172698so27970011fa.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:31:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748673079; x=1749277879; darn=vger.kernel.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=wWFXw3UdeTmdyAQraXFf2yqqkKSC8Rgoldk84MrVeHA=;
b=bUKubEWPFBycap9GfZ9dW2SJIFpcEbAYCWQbDmN9mRK0SNG2mT2DZJP+a9ZPsBe/yX
POJkfEdI0H5WKPJRh6aanNGWAzihWaFbM2eK4cuggMH2DH/sqHl88Y8gJsqEsv9IdSCP
leTnxz45/eaVhL6Y7jC2dLsDUX4yhc51EufN5oPPLOoxgtSXpTXAK8V33gRLOl1uK+rs
4r+5kOiU+WsrTugKJ9MlVWDyEpRns9oVKqf0N/eLZH82iiXOxuaKmlhuxpT8K2VT1ba9
SBkF92rNQ4pGEf8rig8ZgPQ65W8tYddQUQ85w6DhpUBOfK0Zc+B7S7eMrU/+n202t9la
+h4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748673079; x=1749277879;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=wWFXw3UdeTmdyAQraXFf2yqqkKSC8Rgoldk84MrVeHA=;
b=UDtu15ajaj0vJ/J3aDObeglUcTU/wc4yzi4C7b5tIM67afr9SmHMkA+ZhozZhabKJj
mgUX65lCadlOiStOXQVPwxS5/8E76S7ykayJ6Ontc9pIVz8f8YiuzlSvHKGNiicyDnwL
lwrSzOPcn6b5rwtj0IYnsLjwsVx2FcOQVv2pbh6hOTG4xi/PclShpZleetIRCw3CdyRd
5X+gsAx2ES3MeqMbSOdx3nKgXdIRK07w8FilQeLZBKEv7RF2Tjk4aVgLWopQzPEV8enO
y8iQYugDudqXZzjV3AFlNUSFvlbGM8857ualJg0p/zZU6pTzIYdyEhC7QIPNTy0XgiK7
PRpA==
X-Forwarded-Encrypted: i=1; AJvYcCXg7XqPYwmG0HQVumR22doY5KH64cXQYdlpUmNBz1db2Son2hJvSCFTTsS2+qjlZrFOBPNgLkln4fCwZTk=@vger.kernel.org
X-Gm-Message-State: AOJu0Yw8X+DiQws0seDaWN29AYrzDKzeeh56/300y0kcPBoTbEIuT5/m
EXfMpiLdRAYSm1UKuWVrjFi3RBZUpe0eub0oWI0EBMeBhFVbpuhtYVt8v6Zm45KpZOHhoW9segt
vIwnGBJ5IrOpdfUV0NyKU6z/proWa6C0eOglWeDCh
X-Gm-Gg: ASbGncsPJ2jvSNq+CLHRpEWRwSlJRVqKxFcy5uNoGWbxe544JFxojaez30TUNP0NQsZ
yvNds/Ya2xwZbGifALvHy4FP92sgZOE5R2pHy8mLbfKZzga97ztbhFU0cUTVI4fIoVJg6pEt1oi
CKfA/jWVAc4uLwGTULQhtBUg6m03vrGElfrwC4ma6w0uF6l8jrrGHYyD1rCV+kcmxptJ/FFqYX8
kbt
X-Google-Smtp-Source: AGHT+IHdLWbK7BMIbV54SHtKp6nI8Lx6kIibmwBh1RypY+YX9tUCTbr5mxcKqccGQisd29DGMy40FlXzf8vMWGvDJ7M=
X-Received: by 2002:a05:651c:1470:b0:32a:88b8:9bb with SMTP id
38308e7fff4ca-32a9e9ce1c1mr2742301fa.11.1748673079299; Fri, 30 May 2025
23:31:19 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <CACT4Y+YacgzrUL1uTqxkPOjQm6ryn2R_nPs8dgnrP_iKA9yasQ@xxxxxxxxxxxxxx>
<aCdo6Vz2MVv3N0kk@xxxxxxxxxx> <CACT4Y+YHxXjCU2jySTUO5kH=xC8scdzTTuP2qEBc5zMber44Aw@xxxxxxxxxxxxxx>
<aCveO4qQGy03ow5p@xxxxxxxxxx> <CACT4Y+YdnQebkGTQJ9yhLs2j12WBYk2ReiBAq5cE+wtu1RRU5A@xxxxxxxxxxxxxx>
<aC0HH45JCBTchZMc@xxxxxxxxxx> <CACT4Y+apAJ_m9W=P2hsGvWrGZnTzxB+9qgJg=ujjU8OWCVcUoQ@xxxxxxxxxxxxxx>
<CACT4Y+Z3Bbn3KcwhjOYAmzHWqRSZ4ywCrw8FNNxj5MrDUzFtVg@xxxxxxxxxxxxxx>
<aDdYEH3lIYHAB-lk@xxxxxxxxxx> <CACT4Y+Y=1aXG_25ONnfD4TxMbsrnW3uFOOL9yrcP+LYeh4pHpg@xxxxxxxxxxxxxx>
<aDormwKnOYm_-Jgs@xxxxxxxxxx>
In-Reply-To: <aDormwKnOYm_-Jgs@xxxxxxxxxx>
From: Dmitry Vyukov <dvyukov@xxxxxxxxxx>
Date: Sat, 31 May 2025 08:31:07 +0200
X-Gm-Features: AX0GCFviC7XJS3BaHNpqUb4Z5Ty9Rd3yiY1UkSqSOuXvQPCVo1G2J50a8_DnJ94
Message-ID: <CACT4Y+Z4Yr_jNV56NvdiJeUzMDmubFL5BtkACDXWaTGxZC2deg@xxxxxxxxxxxxxx>
Subject: Re: [RFC/PATCH] perf report: Support latency profiling in system-wide mode
To: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>, Ian Rogers <irogers@xxxxxxxxxx>,
Kan Liang <kan.liang@xxxxxxxxxxxxxxx>, Jiri Olsa <jolsa@xxxxxxxxxx>,
Adrian Hunter <adrian.hunter@xxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
linux-perf-users@xxxxxxxxxxxxxxx, Andi Kleen <ak@xxxxxxxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, 31 May 2025 at 00:05, Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
>
> On Fri, May 30, 2025 at 07:50:45AM +0200, Dmitry Vyukov wrote:
> > On Wed, 28 May 2025 at 20:38, Namhyung Kim <namhyung@xxxxxxxxxx> wrote:
> > >
> > > Hello,
> > >
> > > On Tue, May 27, 2025 at 09:14:34AM +0200, Dmitry Vyukov wrote:
> > > > On Wed, 21 May 2025 at 09:30, Dmitry Vyukov <dvyukov@xxxxxxxxxx> wrote:
> > > > >
> > > > > > Maybe we can use this
> > > > > > only for the frequency mode which means user didn't use -c option or
> > > > > > similar in the event description.
> > > >
> > > >
> > > > All-in-all I think the best option for now is using CPU IDs to track
> > > > parallelism as you suggested, but be more precise with idle detection.
> > > > 2 passes over the trace may be fine to detect idle points. I see the
> > > > most time now spent in hist_entry__cmp, which accesses other entries
> > > > and is like a part of O(N*logN) processing, so a simple O(N) pass
> > > > shouldn't slow it down much.
> > > > That's what I would try. But I would also try to assess the precision
> > > > of this approach by comparing with results of using explicit switch
> > > > events.
> > >
> > > It's not clear to me how you want to maintain the idle info in the 2
> > > pass approach. Please feel free to propose something based on this
> > > work.
> >
> >
> > What part of it is unclear?
> >
> > Basically, in the first pass we only mark events as sched_out/in.
> > When we don't see samples on a CPU for 2*period, we mark the previous
> > sample on the CPU as sched_out:
> >
> > // Assuming the period is stable across time and CPUs.
> > for_each_cpu(cpu) {
> > if (current[cpu]->last_timestamp + 2*period < sample->timestamp) {
> > if (current[cpu]->thread != idle)
> > current[cpu]->last_sample->sched_out = true;
> > }
> > }
> >
> > leader = machine__findnew_thread(machine, sample->pid);
> > if (current[sample->cpu]->thread != leader) {
> > current[sample->cpu]->last_sample->sched_out = true;
> > sample->sched_in = true;
> > }
> > current[sample->cpu]->thread = leader;
> > current[sample->cpu]->last_sample = sample;
> > current[sample->cpu]->last_timestamp = sample->timestamp;
>
> Oh, you wanted to save the info in the sample. But I'm afraid it won't
> work since it's stack allocated for one-time use in the
> perf_session__deliver_event().

No, I just showed the algorithm. I don't know perf well enough to say
how to implement it.

> > On the second pass we use the precomputed sched_in/out to calculate parallelism:
> >
> > leader = machine__findnew_thread(machine, sample->pid);
> > if (sample->sched_in)
> > leader->parallelism++;
> > sample->parallelism = leader->parallelism;
> > if (sample->sched_out)
> > leader->parallelism--;
> >
> > This is more precise b/c we don't consider a thread running for
> > 2*period after it stopped running.
>
> IIUC it can make some samples have less parallelism right before
> they go to idle.
>
> > A more precise approach would probably be to consider the thread
> > running for 0.5*period after the last sample (and similarly for
> > 0.5*period before the first sample), but it would require injecting
> > sched_in/out events into the trace at these points.
>
> Yep, that will fix the issue. But then how to inject the events is the
> problem.

Yes, but incorrect data is incomparably worse problem than writing a
bit of code.


Return-Path: <linux-kernel+bounces-668958-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E7EB141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:31:55 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 316E94A41A1
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:31:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F2C9822A4F4;
Sat, 31 May 2025 06:31:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (4096-bit key) header.d=archlinux.org header.i=@archlinux.org header.b="ND2k8Pxg";
dkim=permerror (0-bit key) header.d=archlinux.org header.i=@archlinux.org header.b="jjsU1GQ5"
Received: from mail.archlinux.org (mail.archlinux.org [95.216.189.61])
(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 3A61C13212A;
Sat, 31 May 2025 06:31:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.216.189.61
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673109; cv=none; b=LXjT6fkqiWvyn8S4WSNiLubQP8l4puhkVDUimNBjsrYJLO/18X0IkHYpDqkBwUVQNJjDsua+bewdmIGC4YBJTMRyuYX45s8TFVqjZaN5IKcC95p2BTQCshc8g0Ko7Ko2DPW2IwmqSSYMmijqVEr4hlXaSunhcHM3Vrk9D0Du4WM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673109; c=relaxed/simple;
bh=nvMdHSpWVUPTjrFiKn24e2laEyS1rQMORZ9YpXHTrVc=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=FkVPdA1cQui8jBPbLGMtm30SBao3z8FCbrnyDDthRcSrg2dF65laP6xjUqXonMKzGkdeW23a8t0HkEIb43zxVw3/94rOpOpvh+8G5K80rGKZSJ9B4M75JwcNexKf848daSFOT0cNiVMv4MbiB+f5YRv3NLSB0IAU4Zrhk0dvJRI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=archlinux.org; spf=pass smtp.mailfrom=archlinux.org; dkim=pass (4096-bit key) header.d=archlinux.org header.i=@archlinux.org header.b=ND2k8Pxg; dkim=permerror (0-bit key) header.d=archlinux.org header.i=@archlinux.org header.b=jjsU1GQ5; arc=none smtp.client-ip=95.216.189.61
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=archlinux.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=archlinux.org
From: George Hu <integral@xxxxxxxxxxxxx>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=archlinux.org;
s=dkim-rsa; t=1748673103;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=eRoqgXRJ2jvZqZ0wCNBlPWys9iezWcvb617+aqNYKXw=;
b=ND2k8Pxg7K7ozl448gQH2AQZG3NfeqQvM+WscsR/+oJELXpi1ktzh+P/8peQysqiV/610U
0JEppnsGTGdwibi98HrMwuN6q1W1SNh7EYVLy8gNwu3oW6j0eZL083Csv85FT1wTE19fLE
AMedKM93O7yl+SSi/esIzMs6sT2+5sRDYSrCakbLWMMTqXOC7ORgQTYEed6ctcjS1ntwuK
HCsHpP4h/sFhzHofUQdWENoA2522D/G60qBF2giisSBDUg1GK5aGJOHDNj0Q4K0n281ttk
0SgwW/sTv73IH+D6c4vU1pV29Sjt3RV99LTK77As7VQMcgCnrOMi2+fQmvo4URJToyARgp
bsVUk8ZVQvbic9w72MM7mc83hOoGLSe6fmGnfJq3Xd19S1UovZ98NKoDJluQsNyNLls9FS
2GdhzYPZcZ5xj8QUdbXDJheCA12s8ZR3XqhY+VNobP9sbWd/lUhc0t+CUwM7JG5kLakNYM
AwCin5Z5ZsIstnOkdj1zHviAGSw9/zyOyG+W2nZLISjDifTXyfAo3ZPk/O2GyzbmF7jH1Z
ZVU3HP7ukyYiSSKDf6RdnQGkCL380mzdsQBplJap3SoHEu+vyYS5pT80II6bBa14hb7iXx
kAV4CdtCKblp1TKkDcpZYEsaDo+4YgxEWCG46sBa2DGuSut7hwSoM=
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=archlinux.org;
s=dkim-ed25519; t=1748673103;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=eRoqgXRJ2jvZqZ0wCNBlPWys9iezWcvb617+aqNYKXw=;
b=jjsU1GQ5/pJYjbvpmWRjcQLvlTW7UtalXDmetBtNkFIlW9nj9IJmVa0hj8r9OldOyOHFsS
XMzFI+9ru4Y8KWDQ==
Authentication-Results: mail.archlinux.org;
auth=pass smtp.auth=integral smtp.mailfrom=integral@xxxxxxxxxxxxx
To: kent.overstreet@xxxxxxxxx
Cc: integral@xxxxxxxxxxxxx,
linux-bcachefs@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH v2] bcachefs: use union for bch_compression_opt to make encode & decode easier
Date: Sat, 31 May 2025 14:31:16 +0800
Message-ID: <20250531063116.710718-1-integral@xxxxxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <zxcvscosad6yv2y6km3xsdhh26qse3qcx5u66a4nqybev4u64y@uzdekpsliv35>
References: <zxcvscosad6yv2y6km3xsdhh26qse3qcx5u66a4nqybev4u64y@uzdekpsliv35>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Eliminate redundant encode & decode function by using union for
bch_compression_opt, which reduces code complexity.

Signed-off-by: George Hu <integral@xxxxxxxxxxxxx>
---
fs/bcachefs/compress.c | 17 +++++++++--------
fs/bcachefs/compress.h | 36 +++++++++++-------------------------
fs/bcachefs/extents.c | 2 +-
3 files changed, 21 insertions(+), 34 deletions(-)

diff --git a/fs/bcachefs/compress.c b/fs/bcachefs/compress.c
index b37b1f325f0a..5f74de920c92 100644
--- a/fs/bcachefs/compress.c
+++ b/fs/bcachefs/compress.c
@@ -336,7 +336,7 @@ static int attempt_compress(struct bch_fs *c,
void *workspace,
void *dst, size_t dst_len,
void *src, size_t src_len,
- struct bch_compression_opt compression)
+ union bch_compression_opt compression)
{
enum bch_compression_type compression_type =
__bch2_compression_opt_to_type[compression.type];
@@ -426,7 +426,7 @@ static int attempt_compress(struct bch_fs *c,
static unsigned __bio_compress(struct bch_fs *c,
struct bio *dst, size_t *dst_len,
struct bio *src, size_t *src_len,
- struct bch_compression_opt compression)
+ union bch_compression_opt compression)
{
struct bbuf src_data = { NULL }, dst_data = { NULL };
void *workspace;
@@ -553,7 +553,7 @@ unsigned bch2_bio_compress(struct bch_fs *c,

compression_type =
__bio_compress(c, dst, dst_len, src, src_len,
- bch2_compression_decode(compression_opt));
+ (union bch_compression_opt){ .value = compression_opt });

dst->bi_iter.bi_size = orig_dst;
src->bi_iter.bi_size = orig_src;
@@ -602,7 +602,8 @@ static int __bch2_check_set_has_compressed_data(struct bch_fs *c, u64 f)
int bch2_check_set_has_compressed_data(struct bch_fs *c,
unsigned compression_opt)
{
- unsigned compression_type = bch2_compression_decode(compression_opt).type;
+ unsigned int compression_type = ((union bch_compression_opt){ .value = compression_opt })
+ .type;

BUG_ON(compression_type >= ARRAY_SIZE(bch2_compression_opt_to_feature));

@@ -683,7 +684,7 @@ static int __bch2_fs_compress_init(struct bch_fs *c, u64 features)

static u64 compression_opt_to_feature(unsigned v)
{
- unsigned type = bch2_compression_decode(v).type;
+ unsigned int type = ((union bch_compression_opt){ .value = v }).type;

return BIT_ULL(bch2_compression_opt_to_feature[type]);
}
@@ -703,7 +704,7 @@ int bch2_opt_compression_parse(struct bch_fs *c, const char *_val, u64 *res,
{
char *val = kstrdup(_val, GFP_KERNEL);
char *p = val, *type_str, *level_str;
- struct bch_compression_opt opt = { 0 };
+ union bch_compression_opt opt = { 0 };
int ret;

if (!val)
@@ -736,7 +737,7 @@ int bch2_opt_compression_parse(struct bch_fs *c, const char *_val, u64 *res,
opt.level = level;
}

- *res = bch2_compression_encode(opt);
+ *res = opt.value;
err:
kfree(val);
return ret;
@@ -744,7 +745,7 @@ int bch2_opt_compression_parse(struct bch_fs *c, const char *_val, u64 *res,

void bch2_compression_opt_to_text(struct printbuf *out, u64 v)
{
- struct bch_compression_opt opt = bch2_compression_decode(v);
+ union bch_compression_opt opt = { .value = v };

if (opt.type < BCH_COMPRESSION_OPT_NR)
prt_str(out, bch2_compression_opts[opt.type]);
diff --git a/fs/bcachefs/compress.h b/fs/bcachefs/compress.h
index bec2f05bfd52..667ddb91d47a 100644
--- a/fs/bcachefs/compress.h
+++ b/fs/bcachefs/compress.h
@@ -10,41 +10,27 @@ static const unsigned __bch2_compression_opt_to_type[] = {
#undef x
};

-struct bch_compression_opt {
- u8 type:4,
- level:4;
-};
-
-static inline struct bch_compression_opt __bch2_compression_decode(unsigned v)
-{
- return (struct bch_compression_opt) {
- .type = v & 15,
- .level = v >> 4,
+union bch_compression_opt {
+ u8 value;
+ struct {
+#if defined(__LITTLE_ENDIAN_BITFIELD)
+ u8 type:4, level:4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+ u8 level:4, type:4;
+#endif
};
-}
+};

static inline bool bch2_compression_opt_valid(unsigned v)
{
- struct bch_compression_opt opt = __bch2_compression_decode(v);
+ union bch_compression_opt opt = { .value = v };

return opt.type < ARRAY_SIZE(__bch2_compression_opt_to_type) && !(!opt.type && opt.level);
}

-static inline struct bch_compression_opt bch2_compression_decode(unsigned v)
-{
- return bch2_compression_opt_valid(v)
- ? __bch2_compression_decode(v)
- : (struct bch_compression_opt) { 0 };
-}
-
-static inline unsigned bch2_compression_encode(struct bch_compression_opt opt)
-{
- return opt.type|(opt.level << 4);
-}
-
static inline enum bch_compression_type bch2_compression_opt_to_type(unsigned v)
{
- return __bch2_compression_opt_to_type[bch2_compression_decode(v).type];
+ return __bch2_compression_opt_to_type[((union bch_compression_opt){ .value = v }).type];
}

struct bch_write_op;
diff --git a/fs/bcachefs/extents.c b/fs/bcachefs/extents.c
index 036e4ad95987..8bdcb1551814 100644
--- a/fs/bcachefs/extents.c
+++ b/fs/bcachefs/extents.c
@@ -1512,7 +1512,7 @@ int bch2_bkey_ptrs_validate(struct bch_fs *c, struct bkey_s_c k,
const struct bch_extent_rebalance *r = &entry->rebalance;

if (!bch2_compression_opt_valid(r->compression)) {
- struct bch_compression_opt opt = __bch2_compression_decode(r->compression);
+ union bch_compression_opt opt = { .value = r->compression };
prt_printf(err, "invalid compression opt %u:%u",
opt.type, opt.level);
return bch_err_throw(c, invalid_bkey);
--
2.49.0



Return-Path: <linux-kernel+bounces-668959-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7009141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:34:47 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 16F3B3A81F4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:34:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2009620E033;
Sat, 31 May 2025 06:34:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ylc+03+K"
Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4BF913212A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:34:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673279; cv=none; b=CfhTAu/tJ0ITTqNZPM7N8zkSZUsr1iS0Kc54deiLi6mvwCL+jGAoIQN/mWS0tWN5TOnj9HJL/qn2PY4gfaAVbE8drNGvIcym4+qRX8H6jxqdab4O6QD5TSeUQwehHTjeFaE1jrnOW1q1mCuLM/DUnRq6i73KuEH6YApWd5OVHPo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673279; c=relaxed/simple;
bh=PxqLSl97DPtvTPB898IUtAJwGFBFE77MDz7ZltuLPxI=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=n0GBgeqWmJVv3AEL9UVBNia7cDILtw4jfvbu4ctrDgh/TfaeaxGAfukAvTxlRs54V+Ld+7qUv42hd61b5ieVkc2T9OZMncZlmZX2kvQsc9IoPqpuU61O76QPW5pxm2fBytNtVaGPfytNYd+kyvp7xKcmgDwqkgOqomUtLP+4Taw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ylc+03+K; arc=none smtp.client-ip=209.85.214.179
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org
Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2351227b098so18432145ad.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Fri, 30 May 2025 23:34:37 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linaro.org; s=google; t=1748673277; x=1749278077; darn=vger.kernel.org;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date:from:to
:cc:subject:date:message-id:reply-to;
bh=G+/uxe3dxQ0IvY8GTZXqERCIfLVfCSKGis8G08eVtFY=;
b=ylc+03+KiScnkk50XNtkecrT3Fu7ptKFYavhAF2OjsuBFoOo7PpDVY1NDw1AXtjZda
jMrGxE2zP72BvB+JStmRHsJoNQKwo8HsyF0KH0BfjEyIhIv4gdHELCKas/a+qqyLLlzh
gLorVV8IGNWwpGOStSDUW/6b+N335kbIMGd+iJuS3y1mV7ikruocOfpQeVr6zoFzva0n
MhaWgPoe7/XNv6rEWCazMD9vfMO7FXrs8jwtJbh/pSHILhHx/l0CImCSLPTQa+LG2/Eb
1UXhhkF3G20aOPPUG+RaCsyCUZp5d0MPABezn3bSZRubz2KOcxaRwNOu1oMahun4L6Mb
V4QA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748673277; x=1749278077;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=G+/uxe3dxQ0IvY8GTZXqERCIfLVfCSKGis8G08eVtFY=;
b=el9pWj3X/tMsHafCVQOM/tfy0Jx1PeG4RfAwyToPVxRNOvWZfF+KPytcMpTfqVDMzA
+Ff/xNDLaA18VRev0fqg2sbzQtS1IGJ5GqDLT8f/xF7ZrqSSrSu+X8aKvxQI6hAJ7dOe
/v55nDx97v2cV5rERzpptnI+b9PdJTvKUHd9/8B5lCaGeS6tnS8tfG8oXSP2FUSCops5
Fw/VwnGnB1SOy83T4EZTWAO6ilFMPghDrtuefmkT7mhhHjuMDRGB4yyGznTHUZzVVDvg
14bnOzRa/DKw0SbRSFFh+pnsnPkSXYlmRXyOmGeKOyUeqQT0IrFo4U2yKt89GnsLcb26
Hhrg==
X-Forwarded-Encrypted: i=1; AJvYcCUigAo8eHf/cCYm3y/taDsqbfcPDftLFMyqWM/cLn01U4SHjW9VgcgrMtQ34Mysjt1k0BErdxNn+h2h+RE=@vger.kernel.org
X-Gm-Message-State: AOJu0Yxa/KSm+Ls4Myvx6LsWkDQYWckJGiBR4+7+dWm43TFid3TdEuG+
B47WvdKTWbq5f3D8ocTp/M656MZhE4ANTCjQjnmtO1BA8HrIWbgl7smxI9fzBZq1Mg==
X-Gm-Gg: ASbGncssuIXmUZHXy7Kt8ttwvgWG+/dhqnIpADsGsApm78H3mm+PpgtSzGmf36E5emQ
CGSZseTjppKF/fYSU2jvDGAaGtNau5opEBSFJvILi0GYZ3T3SZ2e4hOmfNhH6cqHvDhJwxkt1UU
s7qjitYq1JwDO6EBOLXyPvHuGZnlBEnXopK37UZpymZwK/xut5xPfFP7Jtauq9gZnUnLUrgkHxo
n5qTVClymVg/16FygUIeqleogTUoZ+MzTz76200TruJ0iO1qzKsDaZb4YNaIy32XobdqmoxO+ug
gCPCnNuxXiITkOquiLrHr+FNeZPM0ebIb9jotYvlz3fhZ4Gx8z7B1dE/Azhwwg==
X-Google-Smtp-Source: AGHT+IFsJ4Pr1gW54/1Cl9dqqBQZUvBXxBB0vHhUwcZ3GY3SQHAiNtVzM3wVxEN3AgJfUEaw7hdMIA==
X-Received: by 2002:a17:903:19c3:b0:234:c5c1:9b70 with SMTP id d9443c01a7336-2355f6de0edmr14474355ad.17.1748673276944;
Fri, 30 May 2025 23:34:36 -0700 (PDT)
Received: from thinkpad ([120.56.204.95])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506bdd0e9sm37348675ad.74.2025.05.30.23.34.31
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:34:36 -0700 (PDT)
Date: Sat, 31 May 2025 12:04:29 +0530
From: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
To: Jim Quinlan <james.quinlan@xxxxxxxxxxxx>
Cc: linux-pci@xxxxxxxxxxxxxxx, Nicolas Saenz Julienne <nsaenz@xxxxxxxxxx>,
Bjorn Helgaas <bhelgaas@xxxxxxxxxx>, Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx>,
bcm-kernel-feedback-list@xxxxxxxxxxxx, jim2101024@xxxxxxxxx,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>, Lorenzo Pieralisi <lpieralisi@xxxxxxxxxx>,
Krzysztof =?utf-8?Q?Wilczy=C5=84ski?= <kw@xxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" <linux-rpi-kernel@xxxxxxxxxxxxxxxxxxx>,
"moderated list:BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE" <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>, open list <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 2/2] PCI: brcmstb: Use "num-lanes" DT property if present
Message-ID: <g5rhfbvlx77imub6nn2bx2q6zest3hgsmssjdjrpwqhs2wuan5@uo2ca5asxbpe>
References: <20250530224035.41886-1-james.quinlan@xxxxxxxxxxxx>
<20250530224035.41886-3-james.quinlan@xxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20250530224035.41886-3-james.quinlan@xxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 06:40:33PM -0400, Jim Quinlan wrote:
> By default, we use automatic HW negotiation to ascertain the number of
> lanes of the PCIe connection. If the "num-lanes" DT property is present,
> assume that the chip's built-in capability information is incorrect or
> undesired, and use the specified value instead.
>
> Signed-off-by: Jim Quinlan <james.quinlan@xxxxxxxxxxxx>
> ---
> drivers/pci/controller/pcie-brcmstb.c | 26 +++++++++++++++++++++++++-
> 1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
> index e19628e13898..79fc6d00b7bc 100644
> --- a/drivers/pci/controller/pcie-brcmstb.c
> +++ b/drivers/pci/controller/pcie-brcmstb.c
> @@ -46,6 +46,7 @@
> #define PCIE_RC_CFG_PRIV1_ID_VAL3_CLASS_CODE_MASK 0xffffff
>
> #define PCIE_RC_CFG_PRIV1_LINK_CAPABILITY 0x04dc
> +#define PCIE_RC_CFG_PRIV1_LINK_CAPABILITY_MAX_LINK_WIDTH_MASK 0x1f0
> #define PCIE_RC_CFG_PRIV1_LINK_CAPABILITY_ASPM_SUPPORT_MASK 0xc00
>
> #define PCIE_RC_CFG_PRIV1_ROOT_CAP 0x4f8
> @@ -55,6 +56,9 @@
> #define PCIE_RC_DL_MDIO_WR_DATA 0x1104
> #define PCIE_RC_DL_MDIO_RD_DATA 0x1108
>
> +#define PCIE_RC_PL_REG_PHY_CTL_1 0x1804
> +#define PCIE_RC_PL_REG_PHY_CTL_1_REG_P2_POWERDOWN_ENA_NOSYNC_MASK 0x8
> +
> #define PCIE_RC_PL_PHY_CTL_15 0x184c
> #define PCIE_RC_PL_PHY_CTL_15_DIS_PLL_PD_MASK 0x400000
> #define PCIE_RC_PL_PHY_CTL_15_PM_CLK_PERIOD_MASK 0xff
> @@ -1072,7 +1076,7 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
> void __iomem *base = pcie->base;
> struct pci_host_bridge *bridge;
> struct resource_entry *entry;
> - u32 tmp, burst, aspm_support;
> + u32 tmp, burst, aspm_support, num_lanes, num_lanes_cap;
> u8 num_out_wins = 0;
> int num_inbound_wins = 0;
> int memc, ret;
> @@ -1180,6 +1184,26 @@ static int brcm_pcie_setup(struct brcm_pcie *pcie)
> PCIE_RC_CFG_PRIV1_LINK_CAPABILITY_ASPM_SUPPORT_MASK);
> writel(tmp, base + PCIE_RC_CFG_PRIV1_LINK_CAPABILITY);
>
> + /* 'tmp' still holds the contents of PRIV1_LINK_CAPABILITY */
> + num_lanes_cap = u32_get_bits(tmp, PCIE_RC_CFG_PRIV1_LINK_CAPABILITY_MAX_LINK_WIDTH_MASK);
> + num_lanes = 0;
> + /*
> + * Use automatic num-lanes HW negotiation by default. If the

"Use hardware negotiated Max Link Width value by default."

> + * "num-lanes" DT property is present, assume that the chip's
> + * built-in link width capability information is
> + * incorrect/undesired and use the specified value instead.
> + */
> + if (!of_property_read_u32(pcie->np, "num-lanes", &num_lanes) &&
> + num_lanes && num_lanes <= 4 && num_lanes_cap != num_lanes) {

I think you should drop the 'num_lanes && num_lanes <= 4' check since the DT
binding should take care of that. Otherwise, once link width gets increased, you
need to update both binding and the driver, which is redundant.

- Mani

--
மணிவண�ணன� �தா�ிவம�


Return-Path: <linux-kernel+bounces-668960-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9CD0A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:35:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 7DF611BA4F68
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:35:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 467E722B5AD;
Sat, 31 May 2025 06:35:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="Ue4ggBgz"
Received: from OS0P286CU010.outbound.protection.outlook.com (mail-japanwestazon11011068.outbound.protection.outlook.com [40.107.74.68])
(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 A2BA9EAD0;
Sat, 31 May 2025 06:35:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.74.68
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673324; cv=fail; b=JfdIx99K30flwRXGTy/3+w+f/kHDvobq/aAgeiE2vJtnO5Tl2x/VlmMCjut+Nb2jOSsXE1eteex6eFtezRtkoODOI9f9TY42cnLr8s+crxv35VMMxOGkGcLedqL8Yw5QgNKdIgZkXdRTaiRsJmShxBR+1aAtZ6ct/XkHKn0iteM=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673324; c=relaxed/simple;
bh=wXySHxIb9xtVuElqlxSylzAF0O2VsgmS9HBJSSwJeHQ=;
h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:
Content-Type:MIME-Version; b=aH2TdRl4sexFkxmPRv0oUZrbkLnqz7KTH7ImfmJWFj78TctdsKDWl15M0BzDiPBSkiYetkkA6CmS2sOjElA/yOy/VW36f7aC4gYLIVpzKs+/733wuFLPL9FkBxfh2RHhtBPKUjrsnKWYwg5HdAfxdYnOgu9HaOyqeEqv6VJNIJA=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=Ue4ggBgz; arc=fail smtp.client-ip=40.107.74.68
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=SNDS3zLs3qsT0a6gFF8RdFWOPgE2vcAcS/eJLOLYcxHv5Ej4dehHkkweqjbZcL/zduNBTTzBCAD4De0j2AREBrPit0jeRNOVgbbAj4mkoTykdj7Yh7x+jQiMycKP/1LSveFi05ZH0eznq/o0cJAPCOgxCjk2NOUIb+L8Y/gb+2m+QykY5LNe51A8ErhECIyOTAwYjCvqlKnGp2ycIw/ZbcefdYLjJfzSYmL8fO3yZsN95WOUchWBb9tTCsZPxaWjDKgIb2BrBBg6m6GJRMleUlWjYtgyNDvuWoPRzISdsTV/QJsxNPgLUIFkfm3KVLa/U9YYxBbkWqt+VkvjGmryoQ==
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=3o1eXXXEzgmjkkz0QQ4tu+n+yAb8Jo4eWICx6MDW458=;
b=MVWe/xokoGnngRGx5k9M4DfMdihSoQHQGDv3zOycXA9jbjtDkrYatCy7v+UGufBOZhWinLGkzqZ3aH7Ql/RvxMX3qk/JQ77QmLfW5DcQDB42mhc9vgt/zJia//hs+5EhcIgWZkPb7cwhHPxIyU0DVfKxRBXND/hq7oeG2coFV74LKa7rcAy2Bl8dvx3cJUDUrNrtLSKKuixUijMjPRvs/SIOiZ3SThI3VbsKprE4WgIo9hjI9DuYfUYsO8X5RK2P8hCt17vVbndjSH8MGCOLV9qsBeLoOy9RwdkQIuqX2xuud3SxD7EQMpI3CAmNo/+YDSOzdbwuUa4VbnJkR+Bceg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=bp.renesas.com; dmarc=pass action=none
header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=3o1eXXXEzgmjkkz0QQ4tu+n+yAb8Jo4eWICx6MDW458=;
b=Ue4ggBgzMonyAkbXe3wA8w60ynVWuOs6jd0mS39P0EQFR1p5sHuZB+96lT6dc9jYJBh3ipDnDmngZaYHKWanWzXDv+8Hc1dZaOSK6GoFySi+idTFVBeY8pzPuW1SxLxv9Jbr61R87K6/DBSwP+9+wX1UWUXYj8ZgZttkQXQl8l4=
Received: from TY3PR01MB11346.jpnprd01.prod.outlook.com (2603:1096:400:3d0::7)
by OSCPR01MB13441.jpnprd01.prod.outlook.com (2603:1096:604:334::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.36; Sat, 31 May
2025 06:35:17 +0000
Received: from TY3PR01MB11346.jpnprd01.prod.outlook.com
([fe80::86ef:ca98:234d:60e1]) by TY3PR01MB11346.jpnprd01.prod.outlook.com
([fe80::86ef:ca98:234d:60e1%5]) with mapi id 15.20.8769.033; Sat, 31 May 2025
06:35:12 +0000
From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>, Laurent Pinchart
<laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>, Maarten Lankhorst
<maarten.lankhorst@xxxxxxxxxxxxxxx>, Maxime Ripard <mripard@xxxxxxxxxx>,
Thomas Zimmermann <tzimmermann@xxxxxxx>, David Airlie <airlied@xxxxxxxxx>,
Simona Vetter <simona@xxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>, Krzysztof
Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley <conor+dt@xxxxxxxxxx>, Philipp
Zabel <p.zabel@xxxxxxxxxxxxxx>, Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>
CC: "dri-devel@xxxxxxxxxxxxxxxxxxxxx" <dri-devel@xxxxxxxxxxxxxxxxxxxxx>,
"linux-renesas-soc@xxxxxxxxxxxxxxx" <linux-renesas-soc@xxxxxxxxxxxxxxx>,
"devicetree@xxxxxxxxxxxxxxx" <devicetree@xxxxxxxxxxxxxxx>,
"linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, Fabrizio
Castro <fabrizio.castro.jz@xxxxxxxxxxx>, Prabhakar Mahadev Lad
<prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>, Krzysztof Kozlowski
<krzysztof.kozlowski@xxxxxxxxxx>
Subject: RE: [PATCH v6 01/12] dt-bindings: display: renesas,rzg2l-du: Add
support for RZ/V2H(P) SoC
Thread-Topic: [PATCH v6 01/12] dt-bindings: display: renesas,rzg2l-du: Add
support for RZ/V2H(P) SoC
Thread-Index: AQHb0YQus2i1gP2rdEqMdB2TnhipsrPsSNYw
Date: Sat, 31 May 2025 06:35:12 +0000
Message-ID:
<TY3PR01MB11346CF2602E4EE4E85657C868660A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250530165906.411144-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530165906.411144-2-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
In-Reply-To: <20250530165906.411144-2-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=bp.renesas.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: TY3PR01MB11346:EE_|OSCPR01MB13441:EE_
x-ms-office365-filtering-correlation-id: 1f0c641c-7add-4c07-046d-08dda00d4bfa
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
BCL:0;ARA:13230040|1800799024|366016|376014|7416014|38070700018|921020;
x-microsoft-antispam-message-info:
=?us-ascii?Q?ktJ874odaynwpKS8G1Zu186IDFuhGtF3s7d4GNsKxOyjdtga+wtpfIoilB6d?=
=?us-ascii?Q?6q4soZy2N2yhWm245oTA451tXybmRurQUQedVwDPYnIxNp3LTnkRqTNSeYOT?=
=?us-ascii?Q?dAhaf/NS1DCjzpmr3Eq1pCO1FMp7/7+G/CT6VtfIltjGx6pOABLiq2bQJ4Vc?=
=?us-ascii?Q?Il/vVDBzftkIJUKJZXJLYqZe+aWhKRSl4lTnHB37OtWEUn/NXeHccbuzlx8d?=
=?us-ascii?Q?esSbjQAq8J8XPkBMGZ70OSPzpSSBN/rTg99LzXqjVqDSLhd0kq9VHrAcG68p?=
=?us-ascii?Q?SfqR9MJwDy+9Jqxdce6zAyuh0aO1+V4MdJ6WQIS3IRXYyNEEfAxSro1RmW8z?=
=?us-ascii?Q?fqXVqNquWEkX/bhLNcJVJj90cv1dIkZB48k5Yp4re8scZXZQ/NXcd9C4oCNN?=
=?us-ascii?Q?mF7OY39fdqGO9/T+4DRQxsgNB922QYSU9pQB5kNePXdjYfsBYTU+px1q07Al?=
=?us-ascii?Q?Glvu/Cc4c7Ht+pn25L/5lK4w/X7NtsWPV2UCL7rYh638FduWJRV5vYZiMy/k?=
=?us-ascii?Q?xEKUgckrsFlbgqRjxcEaJKSBj7Lpjglw3uimqh7JNwqFR8TUUAOrCqoktfWA?=
=?us-ascii?Q?DLcXEpiC1Uu/+0SdgkKe+jnPeFovKM4F2xyn5ohodK0NNFIYwTIjsVu/G9a1?=
=?us-ascii?Q?deyiIkPLa3PkFJfLERFemgt4B6hDjoI9h3AaE7Pn9PNj6h52mUd6CrgcCIXD?=
=?us-ascii?Q?hABrYd7c1q8sngEcAv0q05BSWDGwtpKDp1TnE4U9tXuZNVhYgISumvh3orUD?=
=?us-ascii?Q?/gcfElvKqAIBDG3aEhJM1Up0X3A3OSLa0fDAfl5e5SpoIribe087vO3ZATtb?=
=?us-ascii?Q?wmT8EtkSqKa3we8hMUQX18D/t2xAR+6obCRAg0iJ0EsgIP74kGS8wJsoZ7vP?=
=?us-ascii?Q?Fsghqdg1HDOrl9XScOkJ26IeJW7LXwhDubE5t5DL+irIK0vUAa44TMDaWyMh?=
=?us-ascii?Q?KZyqileWfbza4FkX8r9mN5N4DVkhIhVs5tj2hgeJIzxdmAUebA+SVhDsLsoi?=
=?us-ascii?Q?+jED0Ytx/UBn97Fc35P2x3Aw32epQfUTppJTJMX69ApbyBFkO1Ao1mPlF9vi?=
=?us-ascii?Q?JUFKwNKXTsK7z4BzaXNA8Q5Zm289jhnMYlZETIBMgZhvXcggA8hovtGCNsFi?=
=?us-ascii?Q?M9nyCVL7cRqZP5UUplUlKuV0k9xYJWdhx/p9Ij+zLoC6avvuC+u7AwuuGsOq?=
=?us-ascii?Q?qPcxHy02AHzawRD61Tu1g3dF1XFkyNSqE4NZ32xbnuhFHUGVXMmN1zdD47rF?=
=?us-ascii?Q?nXXDTAJDbSy7925TG6FLK5TfFnPAPlTx6+9tHYwu++MzBHmKgyhmtpiiWaOJ?=
=?us-ascii?Q?XI5l1tBk4PEix8l7dys4qTKzuCRsiXcr8yRmQzoKqwn23DDiMl3irP+1En7W?=
=?us-ascii?Q?WXaq5p5WTByuz/Gd/E7CXKsO/nsdAPeB/COKTnlO3hv+fefee0NARGYx00xU?=
=?us-ascii?Q?7wi+mpU5uOaM4aXm9zGCHzARskJwI8kF?=
x-forefront-antispam-report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY3PR01MB11346.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(38070700018)(921020);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?us-ascii?Q?QjqLnN2H2BkeFU0HTiCgxgGsTMctp3hbGOKNfAd2XU/ew9J8mqsAWgclsi/C?=
=?us-ascii?Q?TAk2w6dDgIn5XwyEdEo3ruA/9kxEnTNkw5aEuVJtAneBdzBon1Vlud+931nQ?=
=?us-ascii?Q?OPZk6ImylXv+7wmI7CEASFw8cUVWSmbxcCMj7fC0F9a3/YvbJLL0mJAwqree?=
=?us-ascii?Q?rsirGu0QHXWw2buwbU+k3P57MB5ecCdZwY7RPsIudgktJ+QA7JP55UahG0ZE?=
=?us-ascii?Q?WA8XeN1zoC+fLneGVa2o0oPCNg/cXNucB2lWjbNkqedigJg4qu5ZQ7jhf8c0?=
=?us-ascii?Q?wDRtCZvL4Z+iH4KEc9N+bODmgrhQhIloWnh6K/FkvCgKdwPHnlXl2OAAhwL6?=
=?us-ascii?Q?9g2FwwcXEPnCoZ+RvsjCZZkYq9dkFDkH6pJwbxiPCwAviE5hRONm2cyYc7qu?=
=?us-ascii?Q?d08cwSnjCezXkEdgmovaHjbmI8VBK1W4GTvUczdt4SGQzOOVDAMaok2Er2Vm?=
=?us-ascii?Q?NyiPQj2y01GY58VO6UdhFApCX+LrPj50XMr5mb+UE9KA7ZtZYzfdkD8vgyH6?=
=?us-ascii?Q?T9gT1WHItipnxpdjB8bId8rulS4/POGaZ2nSP5bXMps8y8cXj1oLmrXHwbrI?=
=?us-ascii?Q?0N7uLZlLBCGhLiHU+XkzLjB9sA+SEQdH0HKBRuqvBBrCP32wVILBZCoJA54K?=
=?us-ascii?Q?lI+1ZDxIsgaEUF8LejVbkSG8LdJBV/A0UhaGBdSIABeW2TX8Zpl6pZ6TPoZJ?=
=?us-ascii?Q?Ug1TpyxRI3h3S5XxUpW1LKAPvrMqy285socvEC+3IcVovoB37wC+ze/Qt6kr?=
=?us-ascii?Q?MnqjS1pyCK7pubnxVKgIXZI9uAVw2V1IlbhZfeJE3fCtbNtNwi5q6smVnQA8?=
=?us-ascii?Q?Y1mpxS0K4h7JtE+uUYnJgS63HhTi79bq8TdW2ld7/7XdOcvzFEI72LIBGaO3?=
=?us-ascii?Q?kZfuMWJWPn7cpEgeTY/RtOkj8NGdZ5h50+DcK7TTG1asGE/CkNEWrd3qxlmS?=
=?us-ascii?Q?1L77OWjZzCIlrQH/yrjrNLVFO0yLc0OJmwTs/Uf+1Kp/ODyWcJlLrxopgt/A?=
=?us-ascii?Q?60aZ0Rfd7M4LmPmy44x7yU3cCdoW03aCgHz6KTwAdy5L8UOs/1JPmeVuBnSn?=
=?us-ascii?Q?CbmwtfcYXDPGNJ26rZPZUBn4h61enOC34zNbqkQVV5Va/SU4QjShKvkwaGXk?=
=?us-ascii?Q?1BmA3oTy+0ImvH1KbhGpsVIrcafWb4A8uLY58Dj26X0nvx+KimZf9tG5YlQ2?=
=?us-ascii?Q?4pV7W82d0gvKktbX195d693zILXZJjqIWKn09DBOWxBslCHcjZMdp5jSDodc?=
=?us-ascii?Q?tqKv6voFrku96VO2RzYckMh5ZzdsTHxQDhjezclKGP0mPtZMQu2N9yyOiK7p?=
=?us-ascii?Q?ZlBkNhILxbDzWShKd5artqoxeAXI+EYJOc4k+PvyU0bHJ7t6R6iU+JplrApp?=
=?us-ascii?Q?6VCtKg2Og1q47oGI43hHXOr1wO2NkiFH8KP76cb8W0ds8E360J/+Uqr8roPb?=
=?us-ascii?Q?c27+j6ygJv/uhbp54KhBVbT85zfaXqZv36DX1kT1HFideflR2q9FePcjw9B2?=
=?us-ascii?Q?D33j42/v6XhrrRU87g6ECSQu6BIEYUz2TN9l7vWE1zMI5GOn9HunRsFMqazp?=
=?us-ascii?Q?tTpwBX0uxNr1Z/Sxl7JRyIC2mv/aaXzuUsjmXsbV6y93XHYdnU6RksN2Umah?=
=?us-ascii?Q?dA=3D=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: bp.renesas.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TY3PR01MB11346.jpnprd01.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1f0c641c-7add-4c07-046d-08dda00d4bfa
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2025 06:35:12.6025
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 53d82571-da19-47e4-9cb4-625a166a4a2a
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ygYCEy6izST1/IUm59cDLGoai0bgZeX3xvanyf8yuEhWa9t79otAf4n/4zUV01grZuEEwyHZNO8Y5n8+hwSK/FPW7e5MwEzI9+ziYQn92Lw=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCPR01MB13441
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Prabhakar,

> -----Original Message-----
> From: Prabhakar <prabhakar.csengg@xxxxxxxxx>
> Sent: 30 May 2025 17:59
> Subject: [PATCH v6 01/12] dt-bindings: display: renesas,rzg2l-du: Add sup=
port for RZ/V2H(P) SoC
>=20
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> The DU block on the RZ/V2H(P) SoC is identical to the one found on the RZ=
/G2L SoC. However, it only
> supports the DSI interface, whereas the RZ/G2L supports both DSI and DPI =
interfaces.
>=20
> Due to this difference, a SoC-specific compatible string 'renesas,r9a09g0=
57-du' is added for the
> RZ/V2H(P) SoC.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
> Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>

This patch is already applied in drm-misc-next [1]
[1] https://cgit.freedesktop.org/drm/drm-misc/commit/?id=3Ded6a6d63513ee519=
9841c0a0dc2772ad944e63ee

> ---
> v5->v6:
> - Added reviewed tag from Laurent
>=20
> v4->v5:
> - Added reviewed tag from Biju
>=20
> v3->v4:
> - No changes
>=20
> v2->v3:
> - Collected reviewed tag from Krzysztof
>=20
> v1->v2:
> - Kept the sort order for schema validation
> - Added `port@1: false` for RZ/V2H(P) SoC
> ---
> .../bindings/display/renesas,rzg2l-du.yaml | 23 ++++++++++++++++++-
> 1 file changed, 22 insertions(+), 1 deletion(-)
>=20
> diff --git a/Documentation/devicetree/bindings/display/renesas,rzg2l-du.y=
aml
> b/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml
> index 95e3d5e74b87..1e32d14b6edb 100644
> --- a/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml
> +++ b/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml
> @@ -20,6 +20,7 @@ properties:
> - enum:
> - renesas,r9a07g043u-du # RZ/G2UL
> - renesas,r9a07g044-du # RZ/G2{L,LC}
> + - renesas,r9a09g057-du # RZ/V2H(P)
> - items:
> - enum:
> - renesas,r9a07g054-du # RZ/V2L
> @@ -101,7 +102,12 @@ allOf:
>=20
> required:
> - port@0
> - else:
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: renesas,r9a07g044-du
> + then:
> properties:
> ports:
> properties:
> @@ -113,6 +119,21 @@ allOf:
> required:
> - port@0
> - port@1
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: renesas,r9a09g057-du
> + then:
> + properties:
> + ports:
> + properties:
> + port@0:
> + description: DSI
> + port@1: false
> +
> + required:
> + - port@0
>=20
> examples:
> # RZ/G2L DU
> --
> 2.49.0



Return-Path: <linux-kernel+bounces-668961-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0DCCB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:36:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 507A97B23A4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:35:01 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A641022A4F4;
Sat, 31 May 2025 06:36:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bYMFUwwz"
Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E500619F10A;
Sat, 31 May 2025 06:36:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.179
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673368; cv=none; b=ls6vCi6LNGbM+EqBeIc/xtkGMPSw5ahwcoqvEvrbu6fCvvycka4ikhYY5CrEOUhjYHCm5QK2w9o3LisZq1LirEBPKhyE0qWRXAV3Vfvwy5MBJ5sK0lebM42YoJMq3+Yv+kSr6+f5uyhjBtWbIleIYpucYmoM+qr3O5SLst8kTRI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673368; c=relaxed/simple;
bh=YXwmW+GZn5Xltkq0Z7L3gYqPS8LV1nBKKs0Ek1z/X/k=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=B3JKrGqVFG/BZiQq1rYPwl9oj2Yuv/lne0q+D3/PlQYK5H+k3cLNrEBZSrfsr+zXvYu28I5tnualfB9LrNPgIR0n3lfvCaX0B36HChybluu3BEbnw43kciLbdQFO9ozzaHESUDVBkqYRYJ7W2MlWoRuVtZOjopWQwkrt5bSlsKg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bYMFUwwz; arc=none smtp.client-ip=209.85.221.179
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-530807a8691so567609e0c.0;
Fri, 30 May 2025 23:36:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748673366; x=1749278166; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=qxAnNwf04k1daTyHuUhp/+U0tlJ5knXJTN7hN8ijbm4=;
b=bYMFUwwzfmHYOOv/dL1UknTx9JG3VD0DXl6xnYN2mE0aWBEqPu/At4KCkRI6JMzbPH
bcExQyjg45hBpbIEGKs3OHWsjngILVHqGvAYX/xwDSty3NBvMMYKb8/QaIwdZr5iiXXF
5vV4JkSSml3qsfH8JfQOQUdSjGbyG4oxZDnTeIt/WAs0xxC1j0kCnZFwrd2dbAtFngo3
PAjI/0uKR2PI6XU5luxq1Ps5D7sb0697i1IZHeGMNqfvO4OCMSm2X0q3uHmTkFyGfqrW
Hcmhhwp8CJGmxXCxwzabc8niaRnyfQ56j58srvyGFbrwOsdHyEJbWjKKo9doFrQx0/0f
uJUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748673366; x=1749278166;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=qxAnNwf04k1daTyHuUhp/+U0tlJ5knXJTN7hN8ijbm4=;
b=g9I358XMBMrXWB0JIHOTusd/gIB9ldmc/ndWLXiipHHwwLn6jVQIP1jN4lYJW45pTU
Dya1tUXncXLEbyZgs2otbVvV2M+ClvJ+XAGC9KF+ZH4amRWKsgOMmtU/UTlqRrfksPRW
tFG49UYHnQ/9boOu0k241ybRkSD0Kk4QcfAr6wWWU44uVwe7gdGzk7oa1+tc3u2ge8yx
KIHt7b2yH5vus3YuoYwlMU7upbWgrcLwIDObUb2V2KPTQfJN9XMaSjGclO2xUfLu63sR
B5GUL4hKVEVYP+/ZJcepBlnrRhFSJZ4PYHXlp7t1O55InPoctg90t0qFrUPk7jYZ4+OB
ZW+g==
X-Forwarded-Encrypted: i=1; AJvYcCU50m0D6/g8CoFlU69SvEJjqWs5xVccnRT7/sEJc2w+QDsBudJvELNtdEGV4AKVQwmx3LVvBaZK2GrhI0U=@vger.kernel.org, AJvYcCXg2elqT43UkRma6kFZIhe6xmsBNhr8rZRfPl0v/ZspofgtQ1WkyEJ1yUBS5hre1APLHGN6MkiE@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyfGHpKUj64TgGTNdv+AEdMw0qbs9K4t/lN4aWYBNxi3ZOuk5EY
A6IbjO/UE2HvQZLCuJhHwmptPIq/zaVl91LsV01aQsTdSoObvwtMAg7n0RLw6AALghDByGuhGXU
v+gFdGV9W7gg2ZRtxlh7AdOfXuf0lf/U=
X-Gm-Gg: ASbGncuyyYooIgCeJ7gzQo2X/JLUY9Tma4lbg/wb0isdEhPa3Y3ky7+GrOmM3HeJTkU
SNPWxzRKMPmp9dJAL/nEShJ808lwpLJvcdkc1rcH8bMF6KKyhXOKLy5ehBpwM+RZKxKV6/9Vojs
2Qz3QLR2lWeGtH3zX3Vnz3+hBBcQG5sU9Pmg==
X-Google-Smtp-Source: AGHT+IFoFH9kRyoo67Aj4j7sLe/VRhCJ+NyYgJ+kdpibA364NNkrfUx+kDIf2nV6F+Nf9J3DCvPMTi+MJfD/icdKAsE=
X-Received: by 2002:a05:6102:6d2:b0:4df:8259:eaa with SMTP id
ada2fe7eead31-4e701bae8a0mr364647137.5.1748673365645; Fri, 30 May 2025
23:36:05 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
<CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx> <CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx>
In-Reply-To: <CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 18:35:54 +1200
X-Gm-Features: AX0GCFsKja1UXSjAtb35_iM4kGOhGAzatuZyI2XERD_MsOjTIh0b4SoyXztRzgA
Message-ID: <CAGsJ_4yJhJBo16XhiC-nUzSheyX-V3-nFE+tAi=8Y560K8eT=A@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Kairui Song <ryncsn@xxxxxxxxx>
Cc: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 6:25=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 11:39=E2=80=AFAM Barry Song <21cnbao@xxxxxxxxx> w=
rote:
> >
> > On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidra@goog=
le.com> wrote:
> > >
> > > On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx=
> wrote:
> > > >
> > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > >
> > > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap c=
ache
> > > > lookup, and try to move the found folio to the faulting vma when.
> > > > Currently, it relies on the PTE value check to ensure the moved fol=
io
> > > > still belongs to the src swap entry, which turns out is not reliabl=
e.
> > > >
> > > > While working and reviewing the swap table series with Barry, follo=
wing
> > > > existing race is observed and reproduced [1]:
> > > >
> > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > > swap entry PTE holding swap entry S1, and S1 isn't in the swap cac=
he.)
> > > >
> > > > CPU1 CPU2
> > > > userfaultfd_move
> > > > move_pages_pte()
> > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > // Here it got entry =3D S1
> > > > ... < Somehow interrupted> ...
> > > > <swapin src_pte, alloc and use f=
olio A>
> > > > // folio A is just a new allocat=
ed folio
> > > > // and get installed into src_pt=
e
> > > > <frees swap entry S1>
> > > > // src_pte now points to folio A=
, S1
> > > > // has swap count =3D=3D 0, it c=
an be freed
> > > > // by folio_swap_swap or swap
> > > > // allocator's reclaim.
> > > > <try to swap out another folio B=
>
> > > > // folio B is a folio in another=
VMA.
> > > > <put folio B to swap cache using=
S1 >
> > > > // S1 is freed, folio B could us=
e it
> > > > // for swap out with no problem.
> > > > ...
> > > > folio =3D filemap_get_folio(S1)
> > > > // Got folio B here !!!
> > > > ... < Somehow interrupted again> ...
> > > > <swapin folio B and free S1>
> > > > // Now S1 is free to be used aga=
in.
> > > > <swapout src_pte & folio A using=
S1>
> > > > // Now src_pte is a swap entry p=
te
> > > > // holding S1 again.
> > > > folio_trylock(folio)
> > > > move_swap_pte
> > > > double_pt_lock
> > > > is_pte_pages_stable
> > > > // Check passed because src_pte =3D=3D S1
> > > > folio_move_anon_rmap(...)
> > > > // Moved invalid folio B here !!!
> > > >
> > > > The race window is very short and requires multiple collisions of
> > > > multiple rare events, so it's very unlikely to happen, but with a
> > > > deliberately constructed reproducer and increased time window, it c=
an be
> > > > reproduced [1].
> > >
> > > Thanks for catching and fixing this. Just to clarify a few things
> > > about your reproducer:
> > > 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> > > MAP_PRIVATE will work as well?
> > > 2. You mentioned that the 'current dir is on a block device'. Are you
> > > indicating that if we are using zram for swap then it doesn't
> > > reproduce?
> > >
> > > >
> > > > It's also possible that folio (A) is swapped in, and swapped out ag=
ain
> > > > after the filemap_get_folio lookup, in such case folio (A) may stay=
in
> > > > swap cache so it needs to be moved too. In this case we should also=
try
> > > > again so kernel won't miss a folio move.
> > > >
> > > > Fix this by checking if the folio is the valid swap cache folio aft=
er
> > > > acquiring the folio lock, and checking the swap cache again after
> > > > acquiring the src_pte lock.
> > > >
> > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so =
far
> > > > we don't need to worry about that since folios only might get expos=
ed to
> > > > swap cache in the swap out path, and it's covered in this patch too=
by
> > > > checking the swap cache again after acquiring src_pte lock.
> > > >
> > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tq=
Czi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > ---
> > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > 1 file changed, 26 insertions(+)
> > > >
> > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > index bc473ad21202..a1564d205dfb 100644
> > > > --- a/mm/userfaultfd.c
> > > > +++ b/mm/userfaultfd.c
> > > > @@ -15,6 +15,7 @@
> > > > #include <linux/mmu_notifier.h>
> > > > #include <linux/hugetlb.h>
> > > > #include <linux/shmem_fs.h>
> > > > +#include <linux/delay.h>
> > > I guess you mistakenly left it from your reproducer code :)
> > > > #include <asm/tlbflush.h>
> > > > #include <asm/tlb.h>
> > > > #include "internal.h"
> > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm=
, struct vm_area_struct *dst_vma,
> > > > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > > > struct folio *src_folio)
> > > > {
> > > > + swp_entry_t entry;
> > > > +
> > > > double_pt_lock(dst_ptl, src_ptl);
> > > >
> > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, or=
ig_src_pte,
> > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *m=
m, struct vm_area_struct *dst_vma,
> > > > if (src_folio) {
> > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > src_folio->index =3D linear_page_index(dst_vma, dst=
_addr);
> > > > + } else {
> > > > + /*
> > > > + * Check again after acquiring the src_pte lock. Or=
we might
> > > > + * miss a new loaded swap cache folio.
> > > > + */
> > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > + src_folio =3D filemap_get_folio(swap_address_space(=
entry),
> > > > + swap_cache_index(entr=
y));
> > >
> > > Given the non-trivial overhead of filemap_get_folio(), do you think i=
t
> > > will work if filemap_get_filio() was only once after locking src_ptl?
> > > Please correct me if my assumption about the overhead is wrong.
> >
> > not quite sure as we have a folio_lock(src_folio) before move_swap_pte(=
).
> > can we safely folio_move_anon_rmap + src_folio->index while not holding
> > folio lock?
>
> I think no, we can't even make sure the folio is still in the swap
> cache, so it can be a freed folio that does not belong to any VMA
> while not holding the folio lock.

Right, but will the following be sufficient, given that we don=E2=80=99t re=
ally
care about the folio=E2=80=94only whether there=E2=80=99s new cache?

if (READ_ONCE(si->swap_map[offset]) & SWAP_HAS_CACHE) {
double_pt_unlock(dst_ptl, src_ptl);
return -EAGAIN;
}

Thanks
Barry


Return-Path: <linux-kernel+bounces-668962-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 18F9B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:36:39 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id D8FCF7B4387
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:35:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CE60922D78F;
Sat, 31 May 2025 06:36:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b="Ymlt99yG"
Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011027.outbound.protection.outlook.com [52.101.125.27])
(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 44D961B81D3;
Sat, 31 May 2025 06:36:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.27
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673386; cv=fail; b=It4GEZdduxCp3MjhIAZsOof6xFIiPnu1MR13UYs68MNofWaHBw0LI0rpELpxR6By3SIUPYyIeQVZk/X29iEUKBiE6wripFKcJXjKBAf9yC+b7P+eunfwpC5odvyVjntwYoMmozOIh0hWD6EgUrxU04LEJPja+g1uboQZ2xbXrxk=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673386; c=relaxed/simple;
bh=sFxjtbke5zwsB5Rv6DIH0zdqT5Q2T6ahHxTkqhK2fHc=;
h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:
Content-Type:MIME-Version; b=XGzPGMrOTggsMx44f9s1vfld6YP9BQ66x2tQuEtB6l/Sxr0TqBtgi55+LK5gIyt+hYyxp7ggnvNKECKz5hyWPUibt8X2HtxLk+X4nrL9uBb3WRv+Mz00G3rKGfXIi8SFN5JgSuuWICRrZ94POBhgtWX4j2451H7lNiMdRvR1NaE=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; dkim=pass (1024-bit key) header.d=bp.renesas.com header.i=@bp.renesas.com header.b=Ymlt99yG; arc=fail smtp.client-ip=52.101.125.27
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=oCtkLowKwV6BvcvgcIGzMiwu7b7WHUIHuZRXQLxbtn3pH3VBvESbpZdSyDoknVoFCABrGJjhnkp2YYOdd+nMqjrCRKErG+GfQ1mIqlx0cUhijldHvG6RCBVo5zJSDnZobvV5+IR1G6Ei+dFeNFrNjurpyX8kSPlmNOtXf6OhK28/KvSq6/te8YOtdDHkpQW/ugZNQ8m8/nW8AC2zThfS7iiDHxgLzO40chwQugIrU3AgQBaelEpR01+uClfhhmA3VHRfdZIGdmupJDF0Ibz5rQa9Y8IzWsrZ3/N6m7yzl/YaRnjKM3487Vu4enf+/w36orBO3G6NpvnuOl2ISOhZ0g==
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=hm9MW2Meq8uwzz913t7DXqTloxItHenM5RpTmGagaQs=;
b=swrUdnrnGtRKUpTjChddFz7H54UIJtLA3BxbeGCT6dLgA0ZQPR/maWW23ltw6fablWIBvb+gBUAHeURBDsyYJMwkwaAbj8MlZtykYwiOITkB7tICx1qke9agnja9+z3fVhi56L+SPy+MLqupJugagZd2Glo9+7DHDljKeMTQ2Zvg2VJruJ/tzOr7ui+xpx4B1Fl1r4Vj1QhYeo/dRA28dTby9xD2IcTvltCfVwcYP2Cg54XTxV79YIOvkYwqh3nR+P80WRsILZ6DC3s9yQFGO8qXM7FGyjQhThjMqXHmLnRNtvTSP0rWLZ/o4fa2B/vfEY62YjIwdHdL5/VZRIY02A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=bp.renesas.com; dmarc=pass action=none
header.from=bp.renesas.com; dkim=pass header.d=bp.renesas.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bp.renesas.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=hm9MW2Meq8uwzz913t7DXqTloxItHenM5RpTmGagaQs=;
b=Ymlt99yGX/8CrLhpE2UcgTrr+2T9+FTq+5NoxodVi1i9TTmgBzTGqEyP94GD4xZqXJK+sa7/oQ/VBEBEuPeysjrEzA6msfjqiFq1hiqRE86H+4jvHgs/EXUsE0amMaLmTJV2NtdjH/IK4uH0yObOT29OZ+pQEVYH91LmsPXDiO8=
Received: from TY3PR01MB11346.jpnprd01.prod.outlook.com (2603:1096:400:3d0::7)
by OSCPR01MB13441.jpnprd01.prod.outlook.com (2603:1096:604:334::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.36; Sat, 31 May
2025 06:36:22 +0000
Received: from TY3PR01MB11346.jpnprd01.prod.outlook.com
([fe80::86ef:ca98:234d:60e1]) by TY3PR01MB11346.jpnprd01.prod.outlook.com
([fe80::86ef:ca98:234d:60e1%5]) with mapi id 15.20.8769.033; Sat, 31 May 2025
06:36:21 +0000
From: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>, Laurent Pinchart
<laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>, Maarten Lankhorst
<maarten.lankhorst@xxxxxxxxxxxxxxx>, Maxime Ripard <mripard@xxxxxxxxxx>,
Thomas Zimmermann <tzimmermann@xxxxxxx>, David Airlie <airlied@xxxxxxxxx>,
Simona Vetter <simona@xxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>, Krzysztof
Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley <conor+dt@xxxxxxxxxx>, Philipp
Zabel <p.zabel@xxxxxxxxxxxxxx>, Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>
CC: "dri-devel@xxxxxxxxxxxxxxxxxxxxx" <dri-devel@xxxxxxxxxxxxxxxxxxxxx>,
"linux-renesas-soc@xxxxxxxxxxxxxxx" <linux-renesas-soc@xxxxxxxxxxxxxxx>,
"devicetree@xxxxxxxxxxxxxxx" <devicetree@xxxxxxxxxxxxxxx>,
"linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, Fabrizio
Castro <fabrizio.castro.jz@xxxxxxxxxxx>, Prabhakar Mahadev Lad
<prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Subject: RE: [PATCH v6 02/12] drm: renesas: rz-du: Add support for RZ/V2H(P)
SoC
Thread-Topic: [PATCH v6 02/12] drm: renesas: rz-du: Add support for RZ/V2H(P)
SoC
Thread-Index: AQHb0YQuCAjBL7UzmU+YPCzxy3tHnLPsSVEg
Date: Sat, 31 May 2025 06:36:21 +0000
Message-ID:
<TY3PR01MB11346673EBBFD1FB88D29E51B8660A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250530165906.411144-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530165906.411144-3-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
In-Reply-To: <20250530165906.411144-3-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Accept-Language: en-GB, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=bp.renesas.com;
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: TY3PR01MB11346:EE_|OSCPR01MB13441:EE_
x-ms-office365-filtering-correlation-id: 633e6ce7-2419-4618-2587-08dda00d754d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
BCL:0;ARA:13230040|1800799024|366016|376014|7416014|38070700018|921020;
x-microsoft-antispam-message-info:
=?us-ascii?Q?Upxu+FBkNIV9j/496SRalZpJs0yhhOEvPBayAcsB3Pb70Kt73IvLvHaozsbs?=
=?us-ascii?Q?+RP/pHiMGyHXKLTTRE3dGQdDjTtHsDwxVyF/CZkjeWGlaF9P08RPdIoGho73?=
=?us-ascii?Q?KfRxnIdxPInQO4vPvtDlbeBQFOCmsoxSUwT4yC4oH0z9xKWN4Ol7reSkUknJ?=
=?us-ascii?Q?paTJDFg54zaQi9vvrKuwtpEP5PtvzTWK3shRFdRUIprsGS9IDyt0kVdvtqKk?=
=?us-ascii?Q?8VGkDx5RHrLUcvYz73ebLOtlZxE4owXhKlnd1h8J2IkYN/bw0sHPYgkdqfa8?=
=?us-ascii?Q?bxHL+7pfIAZnhuVsgBzKPnNZdlpnDYTzp3DmU+Csxy6CCJxc4Omu+MQD+vKH?=
=?us-ascii?Q?ITFN5bENpWSOmEp6AcsdvS3EpJQXdsoQVeuyICDXbq2kz44eh3lurliyzquq?=
=?us-ascii?Q?/emLwqIxptruI/wtvm+kzOYJzRYkRmXVNG6hRAXAnDn2mc/YxP/FhilOqsPy?=
=?us-ascii?Q?60U6TKIW1r6du9OupKpFgZPcwpexSrlZckYG67PQwDfRSBrH1+YWSrVwCsPP?=
=?us-ascii?Q?1kKwrB9YA0AwH7ljiWlFBUGm9ENqnKEq/E0Mgo4zQkxl8bP1XBbzrqItKhjn?=
=?us-ascii?Q?SGF6LXQZ8ZyipEZCYxAC/ermjS333iNNmRQfOgJca4G59tyv0SL4UGlqZxbn?=
=?us-ascii?Q?yBavbhRnSgenYv96Aj4JzDHxmnR67T80TOhUVh7zObTu3sO5CWwLg/qJJPLJ?=
=?us-ascii?Q?QUr8TnGQW5cg3gIxMVI14MXtvcS3SiRVt6xNaUIy6B0g7ASsP4twRpUZR6LL?=
=?us-ascii?Q?nqLs/Hbqx77J8wDemY8VcBRID3VEL0Q/zt2waVN4yjGrPgfzoeJLIf8GCzDA?=
=?us-ascii?Q?IIu+WchDJNs+PsMPnjlrUU8KON0ECHbmyU1Hb/G/AH6Nuk/vigvmTZ7y+N71?=
=?us-ascii?Q?hFLXKerCExO1W/Pzgurwb7PEvtp88Iy03rLQweedjyVe3kV/wsn762loCnbm?=
=?us-ascii?Q?c2sSrTapSoybJ0+nFey0OrVQdcOM+cP9fw0sOqhfEr5J4xy42JGkoUzZ/iG7?=
=?us-ascii?Q?J60unsVTCOv2+/6fZCnRnSZ8zz3S50jRT0nLKSLO4ZfLMmeB/P/mvW/gUQu6?=
=?us-ascii?Q?UzhyIeixHBHzIsl7Vd4j5vW3ybMNOrzOKXvzWI5ImBGn9pcQ1/C03OrkGA9N?=
=?us-ascii?Q?7BhnV6SRAFUnq8mRCgSWHnu8gzKpopYozlHdKoIpGz0pBGR9gg0jef37Zvqr?=
=?us-ascii?Q?zft1pzAAKOS4F56MXR+/IRoQE4vkLLFV4LQg93wETA9dfW3h8UFwqf1SN3C8?=
=?us-ascii?Q?vdUbWRS8a6zDPiQZiR9DNtSuQcGM+yjix/pXmfz7+5gNupn20C5Lz6wPZpHl?=
=?us-ascii?Q?3kGR0f0AuK0a09gz1yJADmWsmAljYhGjXCRZUgzB0YOE/acrksBwKgwbNohI?=
=?us-ascii?Q?VKo++VF//7roy0ULXFw8CNGTukZNwMewQyf8gKOFBFSAjWxLFkGKF0/BcIaG?=
=?us-ascii?Q?DcASldkzNdXqrhhfxEuBVjHX8c5nV4tJ?=
x-forefront-antispam-report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TY3PR01MB11346.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(38070700018)(921020);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?us-ascii?Q?SXUwQ/l3AMc7GD0V50H8WgRmS8zN4HPs7CSByu+dhZiM/AIeojQDjkIEEfwb?=
=?us-ascii?Q?A8Ve1loHbQ6Pyck0K+fDQqABT11as5+A2DGsv2yXgfOByV+ce/PUaVj1Y1Xs?=
=?us-ascii?Q?wCLqNOdnpxP53fxt47YVmSAwlnarzIGqJMewHZzEKErIi3oKzBjw00xFaX43?=
=?us-ascii?Q?AKh1NgkOKa0rdxGdNr5y9NLWESjRAMAq+BU4xbTqdUVDwR52TEoOCTGML+5M?=
=?us-ascii?Q?Abu3serGoqc+o/0Uxqr8+ACot441m5l/CdGb10jo518+Hw4afFGZCEdrbIbu?=
=?us-ascii?Q?bw6TPB/2ZbdSnAPkguaZsGWL5qs77A8rDtHi3Z9oYWUOq1HhKADKBsZullE/?=
=?us-ascii?Q?LkvM6oarvyHJRq2Mx2ls1gWX1Rm43qUJPl/9DNdp3hIa0q6Ph6owM696zbyT?=
=?us-ascii?Q?PtcH/LpOZLf+5PEN0sEyX65el+lfIvyCNQMdZGQtxLQp30tGImuphydK093w?=
=?us-ascii?Q?4m3euS1B/3vuHNMZIk8xLPNFJ1dUOFcFoWeLDRtiY2r5UrhrbFr21nWqkC5i?=
=?us-ascii?Q?HYx+fX0N5z45dodQoUeJ0wTkjJ/H9KLEDc8iJp6L8pjGj+CJsIIlUFl0xJdi?=
=?us-ascii?Q?EQTzKPqWGDz4JLWmMJqo1mrBMUBydSnIQVUZ7w1bVCnAgtgJ/qzKuB6T/vGK?=
=?us-ascii?Q?9a4RpwnOLBCAI1R0/VNJPUNM/z61YjlD5Xad996avuHsWE/N8l9Zk/Mf3VpZ?=
=?us-ascii?Q?OsM5LmrlrxC3ZcNqfouMoeK70iTh+xVfUbe/9VlPKe+3cYUI67UNzqsZpJmO?=
=?us-ascii?Q?NRzNtzfj/FQ3q2yk1vMbgv8yp6D1KhHq+09BrkzhJJfOOOrWIyU6UJBz7woY?=
=?us-ascii?Q?sAUGxHtI/63dcMHXwN7W+JYrOM6e8i/AF7hREyOw0t2SO3H/9CMcsXH1FTWe?=
=?us-ascii?Q?B7KMV89BQvYmWgpVgwUZWhxJmIn0kAXWBffyket08bhdvx/ol8yISz4IYen/?=
=?us-ascii?Q?nnoIcq1+EzlaqxrfPHcTFmSGUzRx0QkmLjLi2tFwF8+ZVSslfPQ8Fx6pezfq?=
=?us-ascii?Q?A/llvG+0cL1uZWKNT9Qm8puTsqFEC9ChuDV6DEWHUNGwYxuqncNNh1kFN4JT?=
=?us-ascii?Q?p+iMtkAyob3ThP2fAHexZR5Pu39qP8HAwp/g+13KEDfM9uCOQBz5zfsusH0Q?=
=?us-ascii?Q?PnQqlF96cLt3XNShO7w3gP61MwOkTCDenbGm8RL+mqxO9ngDRi1XtbEIF9+R?=
=?us-ascii?Q?Hce+R99BH8sNT3d7SLESc4KBeoUNCNSQTBijEBH0J3gYmooXpVzExoF5TniV?=
=?us-ascii?Q?vA1De4XVGRsQLK/okmZq2zBS9wVOwWN0U9l0JHwOXA/y0z/JziI18jsWWFFR?=
=?us-ascii?Q?nDycfyjCt0hoZujMwCGQGiSZ+48Coit5JLVFrCxCf7l5vaPeum8SrtVH7KpN?=
=?us-ascii?Q?bQvxv3czpGguHem/Ivwx4lAER0INflxas5kXyk1lxfCWndOkuZRodD57b0vJ?=
=?us-ascii?Q?yTmAxj1rvuNCWCR8z8yLkSxzzw1GMGefwgG4yErBUN6FVsQ244EJF7gnaB54?=
=?us-ascii?Q?E5eMm53AEnDSRhy2TDqu96Fr9tBBPq7/Qndz0L5fhoVuXOgp8EECz4ADVkWo?=
=?us-ascii?Q?8v45KwGF/MDmfI7DRlzdA2qL1UyMoRi9JMQYijvqKDP7tYGER1ekUk7eZeyE?=
=?us-ascii?Q?5g=3D=3D?=
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: bp.renesas.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: TY3PR01MB11346.jpnprd01.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 633e6ce7-2419-4618-2587-08dda00d754d
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2025 06:36:21.9388
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 53d82571-da19-47e4-9cb4-625a166a4a2a
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 1sQKHTZb2fHaIIIeWKfmzf1JJ6HPzNuy4RRTwzGNDOerQVpdXBwQ0FhtxfhNisP/CVGfZXPc3JgGIlcA3E9VjZau/g77el3vpnggcCVhkIg=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSCPR01MB13441
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Prabhakar,

> -----Original Message-----
> From: Prabhakar <prabhakar.csengg@xxxxxxxxx>
> Sent: 30 May 2025 17:59
> Subject: [PATCH v6 02/12] drm: renesas: rz-du: Add support for RZ/V2H(P) =
SoC
>=20
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> The LCD controller (LCDC) on the RZ/V2H(P) SoC is composed of Frame Compr=
ession Processor (FCPVD),
> Video Signal Processor (VSPD), and Display Unit (DU).
>=20
> There is one LCDC unit available on the RZ/V2H(P) SoC which is connected =
to the DSI.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
> Reviewed-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx>
> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx>

This patch is already applied in drm-misc-next [1]
[1] https://cgit.freedesktop.org/drm/drm-misc/commit/?id=3D1f957fbb88b61eaf=
5ac9bf2db6bc2e54121a4359

Cheers,
Biju

> ---
> v5->v6:
> - Added reviewed tag from Laurent
>=20
> v4->v5:
> - Added reviewed tag from Biju
>=20
> v3->v4:
> - No changes
>=20
> v2->v3:
> - No changes
>=20
> v1->v2:
> - No changes
> ---
> drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>=20
> diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c b/drivers/gpu/d=
rm/renesas/rz-
> du/rzg2l_du_drv.c
> index 5e40f0c1e7b0..e1aa6a719529 100644
> --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
> +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c
> @@ -50,9 +50,20 @@ static const struct rzg2l_du_device_info rzg2l_du_r9a0=
7g044_info =3D {
> }
> };
>=20
> +static const struct rzg2l_du_device_info rzg2l_du_r9a09g057_info =3D {
> + .channels_mask =3D BIT(0),
> + .routes =3D {
> + [RZG2L_DU_OUTPUT_DSI0] =3D {
> + .possible_outputs =3D BIT(0),
> + .port =3D 0,
> + },
> + },
> +};
> +
> static const struct of_device_id rzg2l_du_of_table[] =3D {
> { .compatible =3D "renesas,r9a07g043u-du", .data =3D &rzg2l_du_r9a07g04=
3u_info },
> { .compatible =3D "renesas,r9a07g044-du", .data =3D &rzg2l_du_r9a07g044=
_info },
> + { .compatible =3D "renesas,r9a09g057-du", .data =3D
> +&rzg2l_du_r9a09g057_info },
> { /* sentinel */ }
> };
>=20
> --
> 2.49.0



Return-Path: <linux-kernel+bounces-668963-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0540841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:36:48 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id CABC51BA51F6
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:37:00 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D990E22E01E;
Sat, 31 May 2025 06:36:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="P6rMuGVa"
Received: from mail-lj1-f181.google.com (mail-lj1-f181.google.com [209.85.208.181])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D5871B81D3;
Sat, 31 May 2025 06:36:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.181
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673393; cv=none; b=IoU7IGsK/nVuXK6G5Os1pKzflNevaecFGDRJKq7B1xjmtB0GrbFs8G1Xq71HJtgHejYqZwl3B1+TjbmhiHimCnaMSgm5aQJE89P7qJZLMZecbtLSaii01yvH7U4iiOPX9flN+8yN0r11iPL646aBXfX/Ldwv5RhgUOa+s3WLmmk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673393; c=relaxed/simple;
bh=D0vQoDuXadB7RpcZ57c1POsumZtMttNpfLvTO80/zGw=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=QnmbNPgNjyCKgSRKUutChPn7c5R/dsbrMl0vnwgRMLNUukMeAAfhb+UQ7MIwCN+GLLSrR9j3hedUiBTinFsyxIR4HQJygTav1NiPyhGmP74WIY090OGjVJae8yQnxOWl/n8xT0sl7ywP5gyvXpFS3iTeaOyKLF/WGF1VVatpxX0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=P6rMuGVa; arc=none smtp.client-ip=209.85.208.181
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-lj1-f181.google.com with SMTP id 38308e7fff4ca-32a63ff3bdfso21838191fa.3;
Fri, 30 May 2025 23:36:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748673390; x=1749278190; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=y/BmoDNXQwduqlIZzmWZXOyqj/fMIT70s0zMx8YqFyY=;
b=P6rMuGVaDWea+4Tm+jpCU6tv1ychy+WQYguOIya+AW3DRd63Up6veNOtu7XHJVZJ1o
JWvJepbsexUEwyHEUlIDRTBtLi+Hyf7W+rWrab8l9B5atIOzmCpq+hXrdJx2f9Uj498q
amE/ytOva1k7RysSx0JFG7oOFzTStaUHF3M7HargrnwU+Bsa3TcQXCLxJvNizyA0S6uw
GOhltAfswh2HYWZpXwXek6G9Sp6hMiM1mgRRQfWAp+qwOgqUVpSoRvvJevgCv8rqJnYf
uEnTUpcYsZ5JLBjz+SCq61UYW0vkpboiKSqE+JxBO0fK1Q/kfbFVDa/74F2CmGOnzf//
Y1Hg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748673390; x=1749278190;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=y/BmoDNXQwduqlIZzmWZXOyqj/fMIT70s0zMx8YqFyY=;
b=l0gQI6EtIS7W8BHO7facDQ7jYAI5QfwJq6DECyprrHzXjKM0fBWd2Xf4rWxyFN1i5s
2hgLzt21eoxapuVF5tEdkWRYPZg/sqYoCcFXx+SXLY3KbGzn5OfKMVlGUPP1tFg4tTAM
4gG5xYdHrv0jNvT7xH+EC4wLQSP8Rz/5ujsOzR7RPQZaUMrP0XhszYDKHP9Ws4OZ66YI
JO5Ws9MUOw0q3EmMxmf20KmGBywsrQffgGZVUX9EQ9EMtyQj5YSHSS7+X+jJokPp9UHG
EivRR2Bj80x7axyMb1KVjohmSv1a7YeKl81qeii2rZqfEKGSUBAhsseu0C01sXI/dX4v
Pjyg==
X-Forwarded-Encrypted: i=1; AJvYcCU4lsLrMglygiu8kcAe39FZ1GbIjea1vLMbLayLuogDslARYAgaTCrYoKQ3IBBVlcpvf/EFzdNhf5N3N0Y=@vger.kernel.org, AJvYcCX7UhQ5EGnbKRxhgUANDJRlpJvzYImmOMiszun25iyNg7t9Gwb+JscDS8DWx6l1bnILyHNrwO36@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YwZhC1zsX2kKvqyFKReMmEN5Gz2vBUmXH8bEFysPoKNChNlnwS8
aoa6bcNUmerfZNQ6LoJnXl1rtThVMxaDqOuC9mo0xUEQXX/VtT51j4jDWSoFYPdi8AKQzHtp6bD
d30NRu39W8dbAXNhNc6MZkz9MxlohUbfEEjTfHUrPBQ==
X-Gm-Gg: ASbGncv9DBwWEm7FyELFGTuDt4y5McI6njDtsAbMjFfVbZxASlgwJ5/oGzEJXni8spq
usR6LY6r4COY3+W52O5GMl9kHKmwF1T7NOe74HCMwgaMVyLWwMXu09LQw6hEUhwb/KZjSrVdxny
VFvsSb0P7RUD2i0MZsp2py6yOpq1AJx0Nt
X-Google-Smtp-Source: AGHT+IGS+8zInVTEalAvw6lUhSsBpRvCGIuCKi3iQOkea3Fr6ApWHCsNgurueZz8XEZYCyJZmcr/XV8pjyvmWe80Gvg=
X-Received: by 2002:a05:651c:3617:b0:30b:d562:c154 with SMTP id
38308e7fff4ca-32a9ea3bb47mr3546451fa.19.1748673389221; Fri, 30 May 2025
23:36:29 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
<CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx> <CA+EESO7Gck6YpjPTMSzDGcmRXjci=zG3i8F+LTt=u2Krbp_cRg@xxxxxxxxxxxxxx>
In-Reply-To: <CA+EESO7Gck6YpjPTMSzDGcmRXjci=zG3i8F+LTt=u2Krbp_cRg@xxxxxxxxxxxxxx>
From: Kairui Song <ryncsn@xxxxxxxxx>
Date: Sat, 31 May 2025 14:36:11 +0800
X-Gm-Features: AX0GCFshAi5xaCYNNOadtBW6k_pLyhFYFBRbCnnGh9C67-Jw3R-U6Uz_6qQb9PM
Message-ID: <CAMgjq7D10Pw6miYZvN-2stOw04iho1Z-HTb4Udo0L_1kaMgKWg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>
Cc: Barry Song <21cnbao@xxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 2:10=E2=80=AFPM Lokesh Gidra <lokeshgidra@xxxxxxxxx=
m> wrote:
>
> On Fri, May 30, 2025 at 9:42=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 4:04=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> =
wrote:
> > >
> > > On Sat, May 31, 2025 at 8:17=E2=80=AFAM Kairui Song <ryncsn@xxxxxxxxx=
> wrote:
> > > >
> > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > >
> > > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap c=
ache
> > > > lookup, and try to move the found folio to the faulting vma when.
> > > > Currently, it relies on the PTE value check to ensure the moved fol=
io
> > > > still belongs to the src swap entry, which turns out is not reliabl=
e.
> > > >
> > > > While working and reviewing the swap table series with Barry, follo=
wing
> > > > existing race is observed and reproduced [1]:
> > > >
> > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > > swap entry PTE holding swap entry S1, and S1 isn't in the swap cac=
he.)
> > > >
> > > > CPU1 CPU2
> > > > userfaultfd_move
> > > > move_pages_pte()
> > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > // Here it got entry =3D S1
> > > > ... < Somehow interrupted> ...
> > > > <swapin src_pte, alloc and use f=
olio A>
> > > > // folio A is just a new allocat=
ed folio
> > > > // and get installed into src_pt=
e
> > > > <frees swap entry S1>
> > > > // src_pte now points to folio A=
, S1
> > > > // has swap count =3D=3D 0, it c=
an be freed
> > > > // by folio_swap_swap or swap
> > > > // allocator's reclaim.
> > > > <try to swap out another folio B=
>
> > > > // folio B is a folio in another=
VMA.
> > > > <put folio B to swap cache using=
S1 >
> > > > // S1 is freed, folio B could us=
e it
> > > > // for swap out with no problem.
> > > > ...
> > > > folio =3D filemap_get_folio(S1)
> > > > // Got folio B here !!!
> > > > ... < Somehow interrupted again> ...
> > > > <swapin folio B and free S1>
> > > > // Now S1 is free to be used aga=
in.
> > > > <swapout src_pte & folio A using=
S1>
> > > > // Now src_pte is a swap entry p=
te
> > > > // holding S1 again.
> > > > folio_trylock(folio)
> > > > move_swap_pte
> > > > double_pt_lock
> > > > is_pte_pages_stable
> > > > // Check passed because src_pte =3D=3D S1
> > > > folio_move_anon_rmap(...)
> > > > // Moved invalid folio B here !!!
> > > >
> > > > The race window is very short and requires multiple collisions of
> > > > multiple rare events, so it's very unlikely to happen, but with a
> > > > deliberately constructed reproducer and increased time window, it c=
an be
> > > > reproduced [1].
> > > >
> > > > It's also possible that folio (A) is swapped in, and swapped out ag=
ain
> > > > after the filemap_get_folio lookup, in such case folio (A) may stay=
in
> > > > swap cache so it needs to be moved too. In this case we should also=
try
> > > > again so kernel won't miss a folio move.
> > > >
> > > > Fix this by checking if the folio is the valid swap cache folio aft=
er
> > > > acquiring the folio lock, and checking the swap cache again after
> > > > acquiring the src_pte lock.
> > > >
> > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so =
far
> > > > we don't need to worry about that since folios only might get expos=
ed to
> > > > swap cache in the swap out path, and it's covered in this patch too=
by
> > > > checking the swap cache again after acquiring src_pte lock.
> > > >
> > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tq=
Czi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > ---
> > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > 1 file changed, 26 insertions(+)
> > > >
> > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > index bc473ad21202..a1564d205dfb 100644
> > > > --- a/mm/userfaultfd.c
> > > > +++ b/mm/userfaultfd.c
> > > > @@ -15,6 +15,7 @@
> > > > #include <linux/mmu_notifier.h>
> > > > #include <linux/hugetlb.h>
> > > > #include <linux/shmem_fs.h>
> > > > +#include <linux/delay.h>
> > > > #include <asm/tlbflush.h>
> > > > #include <asm/tlb.h>
> > > > #include "internal.h"
> > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm=
, struct vm_area_struct *dst_vma,
> > > > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > > > struct folio *src_folio)
> > > > {
> > > > + swp_entry_t entry;
> > > > +
> > > > double_pt_lock(dst_ptl, src_ptl);
> > > >
> > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, or=
ig_src_pte,
> > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *m=
m, struct vm_area_struct *dst_vma,
> > > > if (src_folio) {
> > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > src_folio->index =3D linear_page_index(dst_vma, dst=
_addr);
> > > > + } else {
> > > > + /*
> > > > + * Check again after acquiring the src_pte lock. Or=
we might
> > > > + * miss a new loaded swap cache folio.
> > > > + */
> > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > + src_folio =3D filemap_get_folio(swap_address_space(=
entry),
> > > > + swap_cache_index(entr=
y));
> > > > + if (!IS_ERR_OR_NULL(src_folio)) {
> > > > + double_pt_unlock(dst_ptl, src_ptl);
> > > > + folio_put(src_folio);
> > > > + return -EAGAIN;
> > > > + }
> > > > }
> > >
> > > step 1: src pte points to a swap entry without swapcache
> > > step 2: we call move_swap_pte()
> > > step 3: someone swap-in src_pte by swap_readhead() and make src_pte's=
swap entry
> > > have swapcache again - for non-sync/non-zRAM swap device;
> > > step 4: move_swap_pte() gets ptl, move src_pte to dst_pte and *clear*=
src_pte;
> > > step 5: do_swap_page() for src_pte holds the ptl and found pte has
> > > been cleared in
> > > step 4; pte_same() returns false;
> > > step 6: do_swap_page() won't map src_pte to the new swapcache got fro=
m step 3;
> > > if the swapcache folio is dropped, it seems everything is=
fine.
> > >
> > > So the real issue is that do_swap_page() doesn=E2=80=99t drop the new=
swapcache
> > > even when pte_same() returns false? That means the dst_pte swap-in
> > > can still hit the swap cache entry brought in by the src_pte's swap-i=
n?
> >
> > It seems also possible for the sync zRAM device.
> >
> > step 1: src pte points to a swap entry S without swapcache
> > step 2: we call move_swap_pte()
> > step 3: someone swap-in src_pte by sync path, no swapcache; swap slot
> > S is freed.
> > -- for zRAM;
> > step 4: someone swap-out src_pte, get the exactly same swap slot S as =
step 1,
> > adds folio to swapcache due to swapout;
> > step 5: move_swap_pte() gets ptl and finds page tables are stable
> > since swap-out
> > happens to have the same swap slot as step1;
> > step 6: we clear src_pte, move src_pte to dst_pte; but miss to move th=
e folio.
> >
> > Yep, we really need to re-check pte for swapcache after holding PTL.
> >
> Any idea what is the overhead of filemap_get_folio()? In particular,
> when no folio exists for the given entry, how costly is it?
>
> Given how rare it is, unless filemap_get_folio() is cheap for 'no
> folio' case, if there is no way to avoid calling it after holding PTL,
> then we should do it only once at that point. If a folio is returned,
> then like in the pte_present() case, we attempt folio_trylock() with
> PTL held, otherwise do the retry dance.

Yeah I think filemap_get_folio is cheap, each swap cache space is at
most 64M big, so it just walks at most three xa_nodes and returns, not
involving any synchronization or write.

The swap cache lookup will be even cheaper in the future to be just
checking one plain array element.

I can try to fix this with the folio_trylock inside the PTL lock
approach, maybe the code will be cleaner that way.


Return-Path: <linux-kernel+bounces-668964-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8F84C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:38:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 505B13AEE28
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:38:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B710322DF9A;
Sat, 31 May 2025 06:38:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="HD79848N"
Received: from casper.infradead.org (casper.infradead.org [90.155.50.34])
(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 1A0558479;
Sat, 31 May 2025 06:38:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748673510; cv=none; b=pgoefph6A1FInQSb+BXpai3J+cJ930xlMT+yZAYyTiSjSVkvBnDLhh4LFFdfyivvhowWGGr89bxMVdFAZhMBzEHIZH+loYH+N9zmMJEACvNjHMy9k8dyJLwEDH9XHZ7YB1+0X0OXx3R8DKQxRl19BD11TaR1UgNozgndX84S76w=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748673510; c=relaxed/simple;
bh=FZUC2I5LAvsA3VQWXEtsPX3es+jsE4YUQWHmJUJgcbk=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=PB2ORqSZEaNDa996bwD3vV3bYx3QpdoNJdHU46tC1O5cE7QgN0LXey3IMkvnkYEmk/94B8Qq3ARIHfgAK5rciK5mApB7/n1nv6he7SvnyWaBLQsouWPdU5NiV9NGkri9FQq770y6HjIXVQ9LsxLcXygYTBlUH4nnmOjSOYvDVeE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=HD79848N; arc=none smtp.client-ip=90.155.50.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type:
In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender
:Reply-To:Content-ID:Content-Description;
bh=24EwpxZgUn+ypwftk2i/PqDkmuMZ5vv5Q2cnNVzmjEs=; b=HD79848NxGDBfbf21M3FNgx1rn
UBXK/im/xom6P3ZfPO0gZZkgaBRhZJ2HhwiKbKiZokfhSKLtvJ8GOzj6TILp12qSnwY7nlmF+yijQ
16/dltPMP+C+y/EbQjjBC0JR2o38PtJK4NqLd1xNOUTbhl8CQ7qd58eFp38ERhmHAcHLvT/SyyRRQ
GI5k9d6rW4aHEBX8yAnW9r9e0Zayh9k+VEXlcjcrPV+pLZunKQHjxs6SswvwbYP8Ehcb7FYKnBUHc
pUe8numEtNKUCds7s1E8FSrzqijOpkCsUJwAFyBLOtt/EP2OJHB6iK3NTEgXodJaphvMZmJlXyAr+
sCEiiu/w==;
Received: from [50.53.25.54] (helo=[192.168.254.17])
by casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLFrL-0000000GYXv-1R8A;
Sat, 31 May 2025 06:38:23 +0000
Message-ID: <d25bec97-bd48-4265-8cee-af68487e8333@xxxxxxxxxxxxx>
Date: Fri, 30 May 2025 23:38:19 -0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2] rtmutex_api: provide correct extern functions
To: Paolo Bonzini <pbonzini@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
kvm@xxxxxxxxxxxxxxx
Cc: mlevitsk@xxxxxxxxxx, Peter Zijlstra <peterz@xxxxxxxxxxxxx>
References: <20250531060756.130554-1-pbonzini@xxxxxxxxxx>
Content-Language: en-US
From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
In-Reply-To: <20250531060756.130554-1-pbonzini@xxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu



On 5/30/25 11:07 PM, Paolo Bonzini wrote:
> Commit fb49f07ba1d9 ("locking/mutex: implement mutex_lock_killable_nest_lock")
> changed the set of functions that mutex.c defines when CONFIG_DEBUG_LOCK_ALLOC
> is set.
>
> - it removed the "extern" declaration of mutex_lock_killable_nested from
> include/linux/mutex.h, and replaced it with a macro since it could be
> treated as a special case of _mutex_lock_killable. It also removed a
> definition of the function in kernel/locking/mutex.c.
>
> - likewise, it replaced mutex_trylock() with the more generic
> mutex_trylock_nest_lock() and replaced mutex_trylock() with a macro.
>
> However, it left the old definitions in place in kernel/locking/rtmutex_api.c,
> which causes failures when building with CONFIG_RT_MUTEXES=y. Bring over
> the changes.
>
> Fixes: fb49f07ba1d9 ("locking/mutex: implement mutex_lock_killable_nest_lock")
> Reported-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
> Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
> Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>

Tested-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

Thanks!

> ---
> This time, with brain connected.
>
> kernel/locking/rtmutex_api.c | 33 +++++++++++++++++++++------------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/kernel/locking/rtmutex_api.c b/kernel/locking/rtmutex_api.c
> index 191e4720e546..f21e59a0525e 100644
> --- a/kernel/locking/rtmutex_api.c
> +++ b/kernel/locking/rtmutex_api.c
> @@ -544,12 +544,12 @@ int __sched mutex_lock_interruptible_nested(struct mutex *lock,
> }
> EXPORT_SYMBOL_GPL(mutex_lock_interruptible_nested);
>
> -int __sched mutex_lock_killable_nested(struct mutex *lock,
> - unsigned int subclass)
> +int __sched _mutex_lock_killable(struct mutex *lock, unsigned int subclass,
> + struct lockdep_map *nest_lock)
> {
> - return __mutex_lock_common(lock, TASK_KILLABLE, subclass, NULL, _RET_IP_);
> + return __mutex_lock_common(lock, TASK_KILLABLE, subclass, nest_lock, _RET_IP_);
> }
> -EXPORT_SYMBOL_GPL(mutex_lock_killable_nested);
> +EXPORT_SYMBOL_GPL(_mutex_lock_killable);
>
> void __sched mutex_lock_io_nested(struct mutex *lock, unsigned int subclass)
> {
> @@ -563,6 +563,21 @@ void __sched mutex_lock_io_nested(struct mutex *lock, unsigned int subclass)
> }
> EXPORT_SYMBOL_GPL(mutex_lock_io_nested);
>
> +int __sched _mutex_trylock_nest_lock(struct mutex *lock,
> + struct lockdep_map *nest_lock)
> +{
> + int ret;
> +
> + if (IS_ENABLED(CONFIG_DEBUG_RT_MUTEXES) && WARN_ON_ONCE(!in_task()))
> + return 0;
> +
> + ret = __rt_mutex_trylock(&lock->rtmutex);
> + if (ret)
> + mutex_acquire_nest(&lock->dep_map, 0, 1, nest_lock, _RET_IP_);
> +
> + return ret;
> +}
> +EXPORT_SYMBOL_GPL(_mutex_trylock_nest_lock);
> #else /* CONFIG_DEBUG_LOCK_ALLOC */
>
> void __sched mutex_lock(struct mutex *lock)
> @@ -591,22 +606,16 @@ void __sched mutex_lock_io(struct mutex *lock)
> io_schedule_finish(token);
> }
> EXPORT_SYMBOL(mutex_lock_io);
> -#endif /* !CONFIG_DEBUG_LOCK_ALLOC */
>
> int __sched mutex_trylock(struct mutex *lock)
> {
> - int ret;
> -
> if (IS_ENABLED(CONFIG_DEBUG_RT_MUTEXES) && WARN_ON_ONCE(!in_task()))
> return 0;
>
> - ret = __rt_mutex_trylock(&lock->rtmutex);
> - if (ret)
> - mutex_acquire(&lock->dep_map, 0, 1, _RET_IP_);
> -
> - return ret;
> + return __rt_mutex_trylock(&lock->rtmutex);
> }
> EXPORT_SYMBOL(mutex_trylock);
> +#endif /* !CONFIG_DEBUG_LOCK_ALLOC */
>
> void __sched mutex_unlock(struct mutex *lock)
> {

--
~Randy


Return-Path: <linux-kernel+bounces-668965-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 35C2B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:46:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3E6784A6907
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:46:53 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D405F22D9F8;
Sat, 31 May 2025 06:46:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="dSLRCZ92"
Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 873016FBF;
Sat, 31 May 2025 06:46:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674004; cv=none; b=dxNQX73Btc53jbwkGnsooPw4+Ogbn027Tu2HuU3kp5IgaLr6Wmxg2REYLjBr2BjbJIfO3x/Ny4QuHLPTwaJ1+6J5VnbMOBdESgVkrXNlObvKO9+rrbnmG7C3NUhYg97gdXTgu/9Jd362djVHnK2hH2cI21R32QYWQA4NI5k6hbU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674004; c=relaxed/simple;
bh=TBagG89tgOpuG17SG1AW413LCmPAzVJtoopZgXJXgRc=;
h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Type; b=JdOw6KYzUKXXMTzgT/RomlYlHJpLlPL0XgAeAPbtv/RYi8IyzOr6LAGk6S+iPUTCqjLrIOdmqmOnzQ97FIkm/xOp4Qu/72TYOXpfj6zzGMIILh1GYlkIEO79FgKNJ3v2j33AGlRUpNCCThVvrPK3ivIC7+v/kq9tug0er1Qp46Q=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=dSLRCZ92; arc=none smtp.client-ip=209.85.128.46
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-450df5d7b9fso2423695e9.1;
Fri, 30 May 2025 23:46:41 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674000; x=1749278800; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=suSEv9KD1CGiTUDphtrC3zQvZBBO6cmgB77F4J23Nic=;
b=dSLRCZ92H5uEtrPF7IRlDaxRmh52gkhVUw9tGVLEtbQS0ZCJBXXl+EPShvnnqpoviz
JwBVJqy0Jaj3WEr479yQRxh3Hdq/MVpAgARPajQW+in6Mi2dZQ5ls/VC0rLL04V/S+dw
Ok5XY1bLxAXUA1WJuUMHNtAEN3MUBwH4nFhVyAXg7Ews72XiRRbIfvAJKecos8SZ452H
wbLqOUyjPCUkaIY24lJDfR+HKluVg0eNuuvkdg2GQyuRwtCJBbzWPi+T/FRHtfTwpUiz
8w/k0nkxdvpoCp1cljveqNMf3xziOo0JTdHZb7Ulo9vBKtgLk99KWRz7rk31yvcB2Gi1
jnEA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674000; x=1749278800;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=suSEv9KD1CGiTUDphtrC3zQvZBBO6cmgB77F4J23Nic=;
b=jPSYWTXmSZxu/c34CRtVAo3h1tAx0pWwO5APbJ+fr8fxCLRJXT9HWt2N0D9mbvbN+f
YMXUyU1cJWiN8CUHpqTz1ajpKG7O2o4ShCMmZjaRiIVw4LRzx6bC2OV8sSu9zUbPZfgk
AxoeQCCSYRu0AM5vsGBd6p6kCmfQXHiUjsYV9xUcbBJTEjtOjSMV8CvMPrLGK/ZN90zy
sdiPUULcF8GTTcZriCH3D5lgfSdaTmcc6RN43BROLaMZHObuDP+NdQrDyHeLt89ujeR9
0tZkIWxTWc5PAbyY90hB9+E+ULsYHkcq0tyrelwev6lXWswWAVr0YetwBseTINPJ8dl7
4ocA==
X-Forwarded-Encrypted: i=1; AJvYcCUlULzwXsQQ8rbtP7pCGQlGM4c//WON1iUCqUk1Bf2vXoSbG2rivoWVwDFJvxQlEc1woan3WzQgN2bmfM8=@vger.kernel.org, AJvYcCV0xi9e/zqKdwkVh8L3golDJyoOnqfH0eXP7qERX0Ovr9+tBJq4D5YYU5JJTjoklkOgN8zIp8Ri@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YzFmD+dSueOkcMzgiRdBmWrNLaKKeOCC1A79Sr/TxGuiIMxQmt0
K8gr4KJH3hqroUsnBjr63L9eph+pk5GtO+oMQVDsMiR2RBYpk4rDilRp
X-Gm-Gg: ASbGncu6zuG5Ao2RNq8lfqHng7UMaTI1JMpBidkggYwgmvyXQEs3it2voat6Z4l2B0M
tSuSlRXgO7SjGwGhyGcLbhCc/v9+eGkvIyZ7Vtl/E0sBJLrYF3M/YvlvzscXXHdODvKppz4ZhVS
nOIbs6VpFEvIWBHzcFUfWycx6/aqwTj2p7AZlY525jc7gmyVJA7zNpxcav01ZW+J6L3zixqhhAl
es8nU2m7RCHoFCcD/OmIlaxZJyHfhu+5q9erv5f+2uOfZiJHs7rkJJIwqBkK/ohnEaTfk41vMO1
mN5DJKieIvHy1QmHi3GrnmXc7PVPYZWqYraeClcC7aa/ckSYrFbrOqEZk6NmnfYoBZfafOfhz4u
vIyFbxYN7botqLHjnjR9Q+vGkUrhHjoJujWZwGJjXYgsTZNu7GVXfCv1GlhDy1AY=
X-Google-Smtp-Source: AGHT+IFhGpCx9jm8jy4GIDf2rHh2W12IWxKPirF7B/jv3FJXl1LLPbZmlrRguVxWyVdN8CwTXF9xbw==
X-Received: by 2002:a05:600c:4f46:b0:43d:fa5f:7d30 with SMTP id 5b1f17b1804b1-450d6bd2efbmr44272845e9.16.1748673999440;
Fri, 30 May 2025 23:46:39 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.37
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:46:37 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
horms@xxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 0/3] net: dsa: brcm: add legacy FCS tag
Date: Sat, 31 May 2025 08:46:32 +0200
Message-Id: <20250531064635.119740-1-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The existing brcm legacy tag only works with BCM63xx switches.
These patches add a new legacy tag for BCM5325 and BCM5365 switches, which
require including the FCS and length.

�lvaro Fernández Rojas (3):
net: dsa: tag_brcm: legacy: reorganize functions
net: dsa: tag_brcm: add support for legacy FCS tags
net: dsa: b53: support legacy FCS tags

drivers/net/dsa/b53/Kconfig | 1 +
drivers/net/dsa/b53/b53_common.c | 7 +-
include/net/dsa.h | 2 +
net/dsa/Kconfig | 8 +++
net/dsa/tag_brcm.c | 119 ++++++++++++++++++++++++-------
5 files changed, 111 insertions(+), 26 deletions(-)

--
2.39.5



Return-Path: <linux-kernel+bounces-668966-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 041D041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:47:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 21EAD4A679C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:47:09 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6331423507C;
Sat, 31 May 2025 06:46:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="YkXxnmBQ"
Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E45A979C0;
Sat, 31 May 2025 06:46:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674005; cv=none; b=cOuri3djImWIZZnu0FpnUkBIAOGVkdjL+QEdSUskNE4SBhxSeQLUHlStD9PSKMfMQUzY9Spsph6jL7Hg9f4UttTKCpyzxne7Bce93rL7773DODxSZHIOKMKrY/zj8giDbVZHMUdJTNnV4i88nG5vUHmkWltWjMJ9VqIiJZSGSoQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674005; c=relaxed/simple;
bh=uY3ybQBRlyKlkk5YyiDoD/dFx1qg3hOhVp7GVoN1+zs=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=ZffU4x8uFJa4hvfQGEcw3n/ZOGtu1Jcr/wp7C8I9xq1fkyTK+Q/SjHrdR0BuFcgLlL8xioBFk54XWBXfk386Re2W/mGUPyH3PCT5EE8KntDUR1qXGqeiZj/Eehz2Q1lPDwtM4YpeLWVuzS51ua0/cdHVAZ7P3fAe6UTyX3Y2564=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=YkXxnmBQ; arc=none smtp.client-ip=209.85.128.52
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-450caff6336so15238535e9.3;
Fri, 30 May 2025 23:46:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674001; x=1749278801; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=2qmGcbU9HcKIOJQ6ijcuImiKtiHIykIXxgbnKg5TgaU=;
b=YkXxnmBQ1yNxkGvcN3YjJeGsoVn4fvs3Hmf9PfZzm4x12mahLdmVZEpDvKiEvSbH1C
wM3UuwBwwMJE7pdZM7n12R+AlY/QNztEjXQ9IG+M8VoOSniW7g7Wu+J7YtvnkSbPQxJg
BD+3dmjRqivqPfYbGw18792WdcGv1wzg8f2ysQMGS4yCWjH6EbI6Q+iFtMFrUQGMlMWu
bASbwzumzRPYNlLtD2FxfiR2e/pbK04WkZnN9eK6QgRO6LL8t3L6qvkGXoDfQA3C5S7x
HxqqlIZnk/wiY/27yuvqMJ3lMiEy94bfESLTV2kTKiWn1qPxZlWvE+/M9bdHpV80gyDk
hqGw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674001; x=1749278801;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=2qmGcbU9HcKIOJQ6ijcuImiKtiHIykIXxgbnKg5TgaU=;
b=UjrSr6HDkUDAseKwSl8r9LnfuD3pAdkavxXM/xwi8F3GMPDJbOu84sviWcyS6Ia/od
ubpZFmUrpFe2R3hxTXgfyeBZ61hxr88cR7B1jy+WtfU+r3YIhHy/bRm5xwOX2MJJYOsP
iocFOO/QQ2btV/zUTeKzmA/6V1AZxfWJh6mF71bRDn9INgQZNUOy7EFaAsFLT7M/HDrT
iamytwC+FoozGxnwTot4RC+e2MWcPm8Qcpq3fnxmkBrr/ycA8LZFpwhRKzDLz2zNm19p
Sg9Zu6TRFguAW3kusT4VBBAJc0ijox0vn3KNL/PiBQPLPMyd2rA1v9cve1zDK/ziRrVg
SmcA==
X-Forwarded-Encrypted: i=1; AJvYcCX5HOu4/3w6DRCSkD5WdUTu7P27k05sz6WtqhJtvj3W04NNTAd7XAMSi975jC3A+3ttfuqGycyw@xxxxxxxxxxxxxxx, AJvYcCXQbo2OfdPaBJBJdJQzUAjM1c5bdd57Zf0dIA6Z8vHGo9q6jxzAiCTEchnBv+LhpXPFn7zPC4lQQCq2qZs=@vger.kernel.org
X-Gm-Message-State: AOJu0Yyh4Qw6oLJ8v8AQjWoLt+eoDjx6ntIBZpTuYRY8hh4BvVKnCeiU
4LqG/nNRJDnFC82jOyddh5VTZFCdg9wwnd6BWeZNrl61kLqdvt2eb+1Y
X-Gm-Gg: ASbGncsCcvtTKzBGxpUcbyLGmc5x0u8wYd+/z8yCpKLRK20moBt27PY57tb6USYprVK
ybUVa/IyAM8nzIKxpMPVBPVroarBWlYPETaPgqaz/opiLS6/MqG2quRUedBFfJc7ykdDr0zxGFO
KuTgnTbCm2Q1ZV+ooVbdY9kJXoevscwINt3vCVGtwWAqYAQtGbvandzQ6plttjB3xiySFEzG90S
NrWo+EChXvTxPwlxPSjFePOqkzl1yQA3j1uwhK9stFgCepZA99oyk75mNfQGt0AuslRpphHF73y
zRQn3Iy6zaurPAGs+EwPPS5jeiTbebq/gvesjGUAAuarL0Jg+81PaxgsVbl50KDULUS+vcvx5LF
A7GOfLrjpf9RcJo+EbgPMtO5/JoONkn3iOvIkmq93j/EpZDq4G/7z
X-Google-Smtp-Source: AGHT+IGm2RIO894xIrZL1ImnI/rl19zaqbhBC9Z1CCUaJW1vgrDUw+yK0HxwjEq5Tu7chXhyqfLGeQ==
X-Received: by 2002:a05:600c:198e:b0:440:6a79:6df0 with SMTP id 5b1f17b1804b1-450d8874cb4mr35938815e9.22.1748674000874;
Fri, 30 May 2025 23:46:40 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.39
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:46:40 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
horms@xxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 1/3] net: dsa: tag_brcm: legacy: reorganize functions
Date: Sat, 31 May 2025 08:46:33 +0200
Message-Id: <20250531064635.119740-2-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531064635.119740-1-noltari@xxxxxxxxx>
References: <20250531064635.119740-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Move brcm_leg_tag_rcv() definition to top.
This function is going to be shared between two different tags.

Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
net/dsa/tag_brcm.c | 64 +++++++++++++++++++++++-----------------------
1 file changed, 32 insertions(+), 32 deletions(-)

diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c
index fe75821623a4..9f4b0bcd95cd 100644
--- a/net/dsa/tag_brcm.c
+++ b/net/dsa/tag_brcm.c
@@ -213,6 +213,38 @@ MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM, BRCM_NAME);
#endif

#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
+static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
+ struct net_device *dev)
+{
+ int len = BRCM_LEG_TAG_LEN;
+ int source_port;
+ u8 *brcm_tag;
+
+ if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN)))
+ return NULL;
+
+ brcm_tag = dsa_etype_header_pos_rx(skb);
+
+ source_port = brcm_tag[5] & BRCM_LEG_PORT_ID;
+
+ skb->dev = dsa_conduit_find_user(dev, 0, source_port);
+ if (!skb->dev)
+ return NULL;
+
+ /* VLAN tag is added by BCM63xx internal switch */
+ if (netdev_uses_dsa(skb->dev))
+ len += VLAN_HLEN;
+
+ /* Remove Broadcom tag and update checksum */
+ skb_pull_rcsum(skb, len);
+
+ dsa_default_offload_fwd_mark(skb);
+
+ dsa_strip_etype_header(skb, len);
+
+ return skb;
+}
+
static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb,
struct net_device *dev)
{
@@ -250,38 +282,6 @@ static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb,
return skb;
}

-static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
- struct net_device *dev)
-{
- int len = BRCM_LEG_TAG_LEN;
- int source_port;
- u8 *brcm_tag;
-
- if (unlikely(!pskb_may_pull(skb, BRCM_LEG_TAG_LEN + VLAN_HLEN)))
- return NULL;
-
- brcm_tag = dsa_etype_header_pos_rx(skb);
-
- source_port = brcm_tag[5] & BRCM_LEG_PORT_ID;
-
- skb->dev = dsa_conduit_find_user(dev, 0, source_port);
- if (!skb->dev)
- return NULL;
-
- /* VLAN tag is added by BCM63xx internal switch */
- if (netdev_uses_dsa(skb->dev))
- len += VLAN_HLEN;
-
- /* Remove Broadcom tag and update checksum */
- skb_pull_rcsum(skb, len);
-
- dsa_default_offload_fwd_mark(skb);
-
- dsa_strip_etype_header(skb, len);
-
- return skb;
-}
-
static const struct dsa_device_ops brcm_legacy_netdev_ops = {
.name = BRCM_LEGACY_NAME,
.proto = DSA_TAG_PROTO_BRCM_LEGACY,
--
2.39.5



Return-Path: <linux-kernel+bounces-668967-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 847FA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:47:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id A5CE1188D2EF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:47:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C88152367AF;
Sat, 31 May 2025 06:46:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NEI15wk5"
Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05EB8AD5E;
Sat, 31 May 2025 06:46:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674005; cv=none; b=f/Gft2vuwUQePR2M2/gfTJ5DJ8EVC4dFdZWjGJl4CY7T1bT0qJ1gdkTYn5A/JmPoqFeP3fS4ZyKe0mhPenS0TcLaFg4HTc0lJ68RwQSlECvLHIXEo3euWvrucfYsuoueEk706IJpn6INn8ok6rA2h0cp4v3J4w6cX3Fy2ddvWK4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674005; c=relaxed/simple;
bh=QpX4INai12rEc4lYqmYoW3rZpCMemLfH8bOj0eZZmKM=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=QQ35b3ri3ykGl0a0zjRNMNvyfA5kbRxMQE0nVf4yMUoL+DQIUhtEi8g5OnwpGdU4xMFBdwRnZVwbmhF7EKLTkL7Eh8Qx2TdE0LfhI9y/9js9xEBGcKzPAZbEyiJFgZW8y/H7c8MAVp1r2xLsd9dX/H9mbYFw1DInoYvTz1BZhNg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NEI15wk5; arc=none smtp.client-ip=209.85.128.41
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-442fda876a6so22467365e9.0;
Fri, 30 May 2025 23:46:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674002; x=1749278802; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=sdaIBNSavuoTQhY/Ym+rzlqZGexagOcedemyTbznHrE=;
b=NEI15wk5SfEFgfmRETomBMifW6ZEINZeHMzQ6icBlrBQR92A6zyvwR7UGM5yGPN0mt
zkAxiQQnAUp1v75Tonw5mVrE9TOMoLqQ3klXw8DNq1tnFookV9WowgGeqIHx5EsPjjAV
EnIks9MqdDgV5FdsbyQ2CwCF5TUuavL0P1o8nR+yQbjBTnKBczekgM2LmCs8JdFpi2/0
Bt8suxEHBNpvg6bYY/2GE/G2w/GSmELWU5FAVL/wB7V8D+pNM/Y00UK1NhLivMc6QIv/
JvUWah9iWcQ4N4NqNm03zFF8InL3dHGYQZCKAXJRJhp7uYSox/X63H32J7lvhmBY9wFW
AFIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674002; x=1749278802;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=sdaIBNSavuoTQhY/Ym+rzlqZGexagOcedemyTbznHrE=;
b=vkJAQthlMv4N2wbbVRm169/qoBbKtFqBmXYX1lDmF9i9kT+UGvhrAghAMv6uxCNEwb
Wl8WNz94O1+K8KC0Ek5KtVIyHMKK8AFKslIKDU/buz/0CVBktakw3YyLCkbuuWhlwU/5
Qhu3zku68JpOGuhJU8R3ADofxbdBqqtugKfAKl9W3IDzt44xm5U4vLwriBj/JrAYfw4l
qxzAkMS4CtRTmXcogloSY5qdBmmUScBfTqjB7ORQNCUbjKpxd5BfExBajGa6K4WREIiD
PIXwzy0MTZEm4ne/r03oLnGErs4hkV+XM3lRxZrMngLHV3W5dv75KViVopfCN+q6qc/C
maPw==
X-Forwarded-Encrypted: i=1; AJvYcCUSi8iNUk2v/8M8zcxw44iUF0LzhCpymfrdDip9owUCHWP7Z6bsgRMMbSSs48gdUbUE+ZR7DkG07jCe+xY=@vger.kernel.org, AJvYcCWk2yIwXQEFX7R5Ug7imcQnkaJDtBAqVVbR1sIRvTmiblsGbkQRVaFI6RPH/FW6DOgNnTQ4h91I@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyoKy/rqBN1HEYvlMLKDdJAMMVEQRW3FKXG9bx2NsjDyjupsN/W
UpdQ8k3Dny650w1PJ1Sn4Dav24deuRk5kf2gdtXkMEV6FcxaXwTX7L0a
X-Gm-Gg: ASbGnctBViBeVmfxforuSVN4m2i8hZ79ssVnwwTgqrMlCy4ok6sWw0GEylA/mCNYXy2
e8laA1bhJHXIFBV+traKC2oznAq1MHETWtJvnIH5cVGHdchxbID9LYTUAGb5EATE21diJweRb4H
eMzDM2fpbiwh/YkJLQolbigAm/yx4sRiB/ZJKQNVolMfXdTRNegcOtawTMpuyikCPvnnI+XCWIH
VniIPkCc9VYPtnR3KRVOBFHecH1KRQZKqt/mN4Gqmp/2QgactcdFJpzX4tAWZoURwfEgYSrz45Q
SRhtvi83IhtTutJQWQXzremerixcsehSewW7tWAuNYkhZfIjDMUE29GLWhdnrMKEVz/mM9dD8UX
gcXTK6FcIBDWcFJqHwW6WwsGCOqJCrG9Bc8H4dfX3L9S0lqXJJB/v
X-Google-Smtp-Source: AGHT+IEI0oC4nl1aRUNiCzuUeC4fajDnNqq1pPE1WfgajfM56IDPKqd3h5QD77BqubtxgvYclAUbNQ==
X-Received: by 2002:a05:600c:1e0d:b0:450:cde3:f266 with SMTP id 5b1f17b1804b1-4511ee150cdmr5802975e9.22.1748674002134;
Fri, 30 May 2025 23:46:42 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.40
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:46:41 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
horms@xxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 2/3] net: dsa: tag_brcm: add support for legacy FCS tags
Date: Sat, 31 May 2025 08:46:34 +0200
Message-Id: <20250531064635.119740-3-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531064635.119740-1-noltari@xxxxxxxxx>
References: <20250531064635.119740-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add support for legacy Broadcom FCS tags, which are similar to
DSA_TAG_PROTO_BRCM_LEGACY.
BCM5325 and BCM5365 switches require including the original FCS value and
length, as opposed to BCM63xx switches.
Adding the original FCS value and length to DSA_TAG_PROTO_BRCM_LEGACY would
impact performance of BCM63xx switches, so it's better to create a new tag.

Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
include/net/dsa.h | 2 ++
net/dsa/Kconfig | 8 +++++
net/dsa/tag_brcm.c | 73 +++++++++++++++++++++++++++++++++++++++++++++-
3 files changed, 82 insertions(+), 1 deletion(-)

diff --git a/include/net/dsa.h b/include/net/dsa.h
index 55e2d97f247e..d73ea0880066 100644
--- a/include/net/dsa.h
+++ b/include/net/dsa.h
@@ -54,11 +54,13 @@ struct tc_action;
#define DSA_TAG_PROTO_RZN1_A5PSW_VALUE 26
#define DSA_TAG_PROTO_LAN937X_VALUE 27
#define DSA_TAG_PROTO_VSC73XX_8021Q_VALUE 28
+#define DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE 29

enum dsa_tag_protocol {
DSA_TAG_PROTO_NONE = DSA_TAG_PROTO_NONE_VALUE,
DSA_TAG_PROTO_BRCM = DSA_TAG_PROTO_BRCM_VALUE,
DSA_TAG_PROTO_BRCM_LEGACY = DSA_TAG_PROTO_BRCM_LEGACY_VALUE,
+ DSA_TAG_PROTO_BRCM_LEGACY_FCS = DSA_TAG_PROTO_BRCM_LEGACY_FCS_VALUE,
DSA_TAG_PROTO_BRCM_PREPEND = DSA_TAG_PROTO_BRCM_PREPEND_VALUE,
DSA_TAG_PROTO_DSA = DSA_TAG_PROTO_DSA_VALUE,
DSA_TAG_PROTO_EDSA = DSA_TAG_PROTO_EDSA_VALUE,
diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
index 2dfe9063613f..e6696e8212cf 100644
--- a/net/dsa/Kconfig
+++ b/net/dsa/Kconfig
@@ -49,6 +49,14 @@ config NET_DSA_TAG_BRCM_LEGACY
Broadcom legacy switches which place the tag after the MAC source
address.

+config NET_DSA_TAG_BRCM_LEGACY_FCS
+ tristate "Tag driver for Broadcom legacy switches using in-frame headers, FCS and length"
+ select NET_DSA_TAG_BRCM_COMMON
+ help
+ Say Y if you want to enable support for tagging frames for the
+ Broadcom legacy switches which place the tag after the MAC source
+ address and require the original FCS and length.
+
config NET_DSA_TAG_BRCM_PREPEND
tristate "Tag driver for Broadcom switches using prepended headers"
select NET_DSA_TAG_BRCM_COMMON
diff --git a/net/dsa/tag_brcm.c b/net/dsa/tag_brcm.c
index 9f4b0bcd95cd..80157bd51c64 100644
--- a/net/dsa/tag_brcm.c
+++ b/net/dsa/tag_brcm.c
@@ -15,6 +15,7 @@

#define BRCM_NAME "brcm"
#define BRCM_LEGACY_NAME "brcm-legacy"
+#define BRCM_LEGACY_FCS_NAME "brcm-legacy-fcs"
#define BRCM_PREPEND_NAME "brcm-prepend"

/* Legacy Broadcom tag (6 bytes) */
@@ -32,6 +33,10 @@
#define BRCM_LEG_MULTICAST (1 << 5)
#define BRCM_LEG_EGRESS (2 << 5)
#define BRCM_LEG_INGRESS (3 << 5)
+#define BRCM_LEG_LEN_HI(x) (((x) >> 8) & 0x7)
+
+/* 4th byte in the tag */
+#define BRCM_LEG_LEN_LO(x) ((x) & 0xff)

/* 6th byte in the tag */
#define BRCM_LEG_PORT_ID (0xf)
@@ -212,7 +217,8 @@ DSA_TAG_DRIVER(brcm_netdev_ops);
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM, BRCM_NAME);
#endif

-#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY) || \
+ IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS)
static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,
struct net_device *dev)
{
@@ -244,7 +250,9 @@ static struct sk_buff *brcm_leg_tag_rcv(struct sk_buff *skb,

return skb;
}
+#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY || CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS */

+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
static struct sk_buff *brcm_leg_tag_xmit(struct sk_buff *skb,
struct net_device *dev)
{
@@ -294,6 +302,66 @@ DSA_TAG_DRIVER(brcm_legacy_netdev_ops);
MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY, BRCM_LEGACY_NAME);
#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY */

+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS)
+static struct sk_buff *brcm_leg_fcs_tag_xmit(struct sk_buff *skb,
+ struct net_device *dev)
+{
+ struct dsa_port *dp = dsa_user_to_port(dev);
+ unsigned int fcs_len;
+ u32 fcs_val;
+ u8 *brcm_tag;
+
+ /* The Ethernet switch we are interfaced with needs packets to be at
+ * least 64 bytes (including FCS) otherwise they will be discarded when
+ * they enter the switch port logic. When Broadcom tags are enabled, we
+ * need to make sure that packets are at least 70 bytes
+ * (including FCS and tag) because the length verification is done after
+ * the Broadcom tag is stripped off the ingress packet.
+ *
+ * Let dsa_user_xmit() free the SKB
+ */
+ if (__skb_put_padto(skb, ETH_ZLEN + BRCM_LEG_TAG_LEN, false))
+ return NULL;
+
+ fcs_len = skb->len;
+ fcs_val = swab32(crc32(~0, skb->data, fcs_len) ^ ~0);
+
+ skb_push(skb, BRCM_LEG_TAG_LEN);
+
+ dsa_alloc_etype_header(skb, BRCM_LEG_TAG_LEN);
+
+ brcm_tag = skb->data + 2 * ETH_ALEN;
+
+ /* Broadcom tag type */
+ brcm_tag[0] = BRCM_LEG_TYPE_HI;
+ brcm_tag[1] = BRCM_LEG_TYPE_LO;
+
+ /* Broadcom tag value */
+ brcm_tag[2] = BRCM_LEG_EGRESS | BRCM_LEG_LEN_HI(fcs_len);
+ brcm_tag[3] = BRCM_LEG_LEN_LO(fcs_len);
+ brcm_tag[4] = 0;
+ brcm_tag[5] = dp->index & BRCM_LEG_PORT_ID;
+
+ /* Original FCS value */
+ if (__skb_pad(skb, ETH_FCS_LEN, false))
+ return NULL;
+ skb_put_data(skb, &fcs_val, ETH_FCS_LEN);
+
+ return skb;
+}
+
+static const struct dsa_device_ops brcm_legacy_fcs_netdev_ops = {
+ .name = BRCM_LEGACY_FCS_NAME,
+ .proto = DSA_TAG_PROTO_BRCM_LEGACY_FCS,
+ .xmit = brcm_leg_fcs_tag_xmit,
+ .rcv = brcm_leg_tag_rcv,
+ .needed_headroom = BRCM_LEG_TAG_LEN,
+};
+
+DSA_TAG_DRIVER(brcm_legacy_fcs_netdev_ops);
+MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM_LEGACY_FCS, BRCM_LEGACY_FCS_NAME);
+#endif /* CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS */
+
#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND)
static struct sk_buff *brcm_tag_xmit_prepend(struct sk_buff *skb,
struct net_device *dev)
@@ -328,6 +396,9 @@ static struct dsa_tag_driver *dsa_tag_driver_array[] = {
#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY)
&DSA_TAG_DRIVER_NAME(brcm_legacy_netdev_ops),
#endif
+#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_LEGACY_FCS)
+ &DSA_TAG_DRIVER_NAME(brcm_legacy_fcs_netdev_ops),
+#endif
#if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND)
&DSA_TAG_DRIVER_NAME(brcm_prepend_netdev_ops),
#endif
--
2.39.5



Return-Path: <linux-kernel+bounces-668968-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5B5A341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:47:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id A822E7B11ED
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:46:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BF03D2376F7;
Sat, 31 May 2025 06:46:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cAU96o/c"
Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51E5A22F154;
Sat, 31 May 2025 06:46:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674007; cv=none; b=uEG7uoxHqSAkSlXgTUF+zHd9Y4ulGdgCbu0v860/58lWJisLVoaEJkKe8VAvvbo5DfIiwXkr2JDLiwuHBQKNZb5AJV7RSW4RcmatvfAqB4KzIHlqdwtccU1b6j5+JAxPcGaQZ5vvUCPnbsJ/no2TdTS0DTNjNrNaAW7fRolGsUY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674007; c=relaxed/simple;
bh=kJHhCMPchGRegdd/rLWL991p93hqX6tlwuMJNQ8VRTA=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=Y3Lf7NGxAMrEd4MaAorvt3Bmnduge9JJAM8vIllAS7mKcUnNx0rlBdu6VwoyocmR/T+OEF0ZssxbFouvmppuES37J9TPlgEg3rt78EJWrpKUvGAINvz/R+3xc93FU0g1LRL8muVA/PTJpTdLTlaXyyakQUC/f5dAWqkRO9XQNV0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cAU96o/c; arc=none smtp.client-ip=209.85.221.54
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3a4f379662cso1903316f8f.0;
Fri, 30 May 2025 23:46:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674003; x=1749278803; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=bEZTMJM9pvIuqA1503OtkplFn4omE0UxVG0G8NBdaq8=;
b=cAU96o/coM0mB4cqb1YQxH6Zrq/XSHEe58qZuiTKOBWM9e+fGEc0ZB0fkrsUNdinaP
v2QlAGpcgndcIvFyK6MNNOpEmrJA9568eu7r0SFSFdHjZhlownme8JHlFdIfcgHWvehf
gJ4T5alx19x/YwbaZwN6bTYfaOYTcQuai79i5IdBQ2e4F9nSxSS3Vfx78QVtYs3l80ad
5cA/q1c7fV5a9s2MiziBQhm41IdCQ1sBl9Ce3Z6mCuxxm1VHKmv9wWzt2jka1NHREhLj
sb93dZO3lsfg0yAuywHslX3jvvV/fARtmfNTZpoP2qKRejgPYGrY4StBoGYIoRoHfhX1
S3tw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674003; x=1749278803;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=bEZTMJM9pvIuqA1503OtkplFn4omE0UxVG0G8NBdaq8=;
b=Lv2w/JVta+Y4XxNOM7zc6a+cj2/Nf2yw2A3gUyhO/9qOwfTTqwxhvZVz/wK74MJozF
W1y8XICaGLwRPrbk4ITNmT0oMvh5QBxCBKaR+6VU7sk71HTimyV1Z7MgVJad5yEe7p0u
KMOvye1yv9BdbJQbZy04H378WQgU+SEzOfjtxg5+8/iiSAjenzpu1sGoVuluupgcONd7
TK3Qb1/EEG0B/k/eteHWFSpWa7g+1EpIN1OpW1GMnmc56chSWqY4PEeocQHhNsDCNtOY
wASco+s8zgbVQQlGq3x+9NtOU6Z3mEhPKMKfyc0golSMPD2F3LZQ43JWxTIeQN9FobOo
id6A==
X-Forwarded-Encrypted: i=1; AJvYcCW3WhzxmRW6g+0z++PlnVJf6ZQyokxA+GJqdgEmVxo9NjyfLDvlq6ebhJVQKdIUo+7sgHdZ2eFm@xxxxxxxxxxxxxxx, AJvYcCXMJPr52ol3Q7lvqpWhXrb+boGagueG6EspAToruk1qzdXOww95+Qhf4LmYejaM0KxGK9pOLSKi/7Xm9Ak=@vger.kernel.org
X-Gm-Message-State: AOJu0YyBYcJrjKOhKaHOFp0KdJGbPB2KiwGZiakwfkXqi0aS2FsWZTvc
OTv0b/8Mxh5jSpJOBVMb/T+cFP0lWzE+D3aJdnuYklP7hGBqww6UFU0P
X-Gm-Gg: ASbGncvcLVjSNaDTdDYcx8T6LyPXVPgF0A5BmcIqPYQWrJgNQDTVEAMGZ63Ql0IECq7
udNxjh9+dE5Vp/V7h7UYvH3n3TJGwwmQoAS26hMhXiurCAaXqHBeLyr4rFMdSYfkHaUuLzcP9Wq
uaDYV4Gz90bQjO7eWY4NsXhBKZYYR9f8i0AQPupxhCcSBFJsMlQhRCOEAsxIfm+K1ryMAsWx7U8
pG5nWSK946T9+8bM+uogR9rPEBzjQXVlSlO/uVJcSUcKEPXe+WP+HT7T6QAPj/Hy6n3QxuKifvy
mRB1Fyg60pKZ03cdFvzZecgtr+zCAZbFSucFVEcAH7JSIg6YlOBO1WjKIaPz9OIfpW1SFicVNVM
6Fn5FeWtzlQgAKGkbDtA2vpbg8nbhSZLVzJGrqAObwAbN/lzgJjqN64QjDn9dhSQ=
X-Google-Smtp-Source: AGHT+IH9jceSJwyuAZ+BuVedMH5uEvP11Dv3f//jz5Beq0/qu3VpXRgQpNd82+MVe5SSOXX4og0Bjg==
X-Received: by 2002:a5d:64e2:0:b0:3a4:f7d9:3f56 with SMTP id ffacd0b85a97d-3a4fe154c8bmr789019f8f.2.1748674003334;
Fri, 30 May 2025 23:46:43 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000e9asm38324765e9.21.2025.05.30.23.46.42
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:46:42 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
horms@xxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 3/3] net: dsa: b53: support legacy FCS tags
Date: Sat, 31 May 2025 08:46:35 +0200
Message-Id: <20250531064635.119740-4-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531064635.119740-1-noltari@xxxxxxxxx>
References: <20250531064635.119740-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Commit 46c5176c586c ("net: dsa: b53: support legacy tags") introduced
support for legacy tags, but it turns out that BCM5325 and BCM5365
switches require the original FCS value and length, so they have to be
treated differently.

Fixes: 46c5176c586c ("net: dsa: b53: support legacy tags")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/Kconfig | 1 +
drivers/net/dsa/b53/b53_common.c | 7 +++++--
2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/net/dsa/b53/Kconfig b/drivers/net/dsa/b53/Kconfig
index ebaa4a80d544..915008e8eff5 100644
--- a/drivers/net/dsa/b53/Kconfig
+++ b/drivers/net/dsa/b53/Kconfig
@@ -5,6 +5,7 @@ menuconfig B53
select NET_DSA_TAG_NONE
select NET_DSA_TAG_BRCM
select NET_DSA_TAG_BRCM_LEGACY
+ select NET_DSA_TAG_BRCM_LEGACY_FCS
select NET_DSA_TAG_BRCM_PREPEND
help
This driver adds support for Broadcom managed switch chips. It supports
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 132683ed3abe..28a20bf0c669 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -2262,8 +2262,11 @@ enum dsa_tag_protocol b53_get_tag_protocol(struct dsa_switch *ds, int port,
goto out;
}

- /* Older models require a different 6 byte tag */
- if (is5325(dev) || is5365(dev) || is63xx(dev)) {
+ /* Older models require different 6 byte tags */
+ if (is5325(dev) || is5365(dev)) {
+ dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY_FCS;
+ goto out;
+ } else if (is63xx(dev)) {
dev->tag_protocol = DSA_TAG_PROTO_BRCM_LEGACY;
goto out;
}
--
2.39.5



Return-Path: <linux-kernel+bounces-668969-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B570741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:48:45 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 633B63B2467
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:48:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 171361DE2A8;
Sat, 31 May 2025 06:48:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ejRYP1l4"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 3B2332111;
Sat, 31 May 2025 06:48:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674119; cv=none; b=sHIK6cwwnxeyWslgTb553RzEzMZHUxHx9bKUR1oNEZFWFylAjpETlDWAD4OiSG6vRQbQhIzYSqajvvXleMIKfyBpO9Y2vlZNDveVtUpgGDiPjaN90SN9KEtPs3QGS7eTjP0YnJa89+xI4cfVlTZO54v8YMG/xwlHzPB4NsWzfLI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674119; c=relaxed/simple;
bh=B3GbeJ1XJrb185C/zHJTLjOvmuDOX4UvvOLiqb9V+MQ=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=B6mu2VAPwg/PO8YUqy8XfG5wLGwG+VunAAMYTNUq7114+7qR8lNZCVEsxbpf4aCATd1QYU4V9Co3J7KwfbWJdpTgeP6kRpCaGI8hMrLv5owlad7E7GhcNjNG6l91GetgKfvgCJJO7FQLXDubzZAG57RtQiCM71ctZOPWQqEhqgY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ejRYP1l4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CADD8C4CEF5;
Sat, 31 May 2025 06:48:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748674118;
bh=B3GbeJ1XJrb185C/zHJTLjOvmuDOX4UvvOLiqb9V+MQ=;
h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
b=ejRYP1l4KjT091+TB47yDw7J5/2LYXOzuBOxSjRx+d/nLWrIBnSdwm2TqlB+R03Ap
T7pd0LHPMmJjvdd7njpz+T9VsF/W2pETUluteMjCFH9vOZUUd4tLXug6ElQ/KzCKXt
aGTMgAacnmqL15TttwPq8NGxdAAes6fY5R/VPIzNZtyiq/GfYIGDj6z9rJF2+ZSGHv
fhIKG+LyM4OG9DHwrTfrGyCKBss/vrpfS1qu+dSxshn5wGTXeHBXWFkbE+oHdSSKPJ
rNXCoYqRZ5Xpb3gnPyxOLEEde5afIi1pV1wk2aWSM2vzkVLAp8P1zPp8XYVhThkt88
3WHuWX2Xr4zUw==
Received: by mail-lf1-f45.google.com with SMTP id 2adb3069b0e04-54e816aeca6so3676282e87.2;
Fri, 30 May 2025 23:48:38 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCU4fbA24ah1VSsGQbaBXLSyUWdjBCkuLfcYE3xWhaWnOoXj4to9zTv3Q4RgtmrvN5PEYiOYeM0zNerOD9bd@xxxxxxxxxxxxxxx, AJvYcCXZU1lWpHlHV1XEkq/WJHzRHFl4YTt5AIhXoOv89NKPmaxiFfc/9k6hdHZW5SlYz457iPjnHG2XuavAPhU=@vger.kernel.org
X-Gm-Message-State: AOJu0YxRHBqmT2NQ6aluvld+ngYBcQH9en/TOTE6gyXlhSSMWtcC3hM/
97NWHmJfRGJ1XME5KF0jrn/Hgg15ry4CjoA+9ufVNtCwexY3rRxWtdCeH+Pwy3uonZ+dPbB7AVo
33Sk/suJrZ5uKP+9BL5bz+KA3I1tgSWw=
X-Google-Smtp-Source: AGHT+IF6yitFVg7GKxP/v4EKNZcDDTDd3ajAPLZuHsZowDvCSn6hV5B23MZ5yJXYTwrz8XA0ys6Bu5NnYURoaa7aWt0=
X-Received: by 2002:a05:6512:22c9:b0:553:2bf2:e30a with SMTP id
2adb3069b0e04-5533b8f4120mr1438868e87.21.1748674117297; Fri, 30 May 2025
23:48:37 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250521213534.3159514-1-xur@xxxxxxxxxx> <CAK7LNAS4Ys-ekzjrRdfwKh5tEU=FKe1tE2-orj6LTs7EknZCZg@xxxxxxxxxxxxxx>
<CAF1bQ=QSBOdvqqBPPv70z1hLX4echmfzBDCu5o4LtKrZEaAJUw@xxxxxxxxxxxxxx>
In-Reply-To: <CAF1bQ=QSBOdvqqBPPv70z1hLX4echmfzBDCu5o4LtKrZEaAJUw@xxxxxxxxxxxxxx>
From: Masahiro Yamada <masahiroy@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:48:00 +0900
X-Gmail-Original-Message-ID: <CAK7LNAThpMaDDfBD6jQzPZ==X-EngwoirFy9AAML9se-36L3ig@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFvuHS6FuAkNmaMskDcnmnMTkwQh5nnPvYwqzs7y4ypqeNVaYWLWbyguYKA
Message-ID: <CAK7LNAThpMaDDfBD6jQzPZ==X-EngwoirFy9AAML9se-36L3ig@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v3] kbuild: distributed build support for Clang ThinLTO
To: Rong Xu <xur@xxxxxxxxxx>
Cc: Nathan Chancellor <nathan@xxxxxxxxxx>, Eric Naim <dnaim@xxxxxxxxxxx>,
Nicolas Schier <nicolas.schier@xxxxxxxxx>,
Nick Desaulniers <nick.desaulniers+lkml@xxxxxxxxx>, Bill Wendling <morbo@xxxxxxxxxx>,
Justin Stitt <justinstitt@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Alice Ryhl <aliceryhl@xxxxxxxxxx>,
Sami Tolvanen <samitolvanen@xxxxxxxxxx>, "Mike Rapoport (Microsoft)" <rppt@xxxxxxxxxx>,
Rafael Aquini <aquini@xxxxxxxxxx>, Michael Ellerman <mpe@xxxxxxxxxxxxxx>,
Stafford Horne <shorne@xxxxxxxxx>, Christophe Leroy <christophe.leroy@xxxxxxxxxx>,
Teresa Johnson <tejohnson@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
linux-kbuild@xxxxxxxxxxxxxxx, llvm@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Wed, May 28, 2025 at 6:05=E2=80=AFAM Rong Xu <xur@xxxxxxxxxx> wrote:
>
> On Mon, May 26, 2025 at 6:12=E2=80=AFAM Masahiro Yamada <masahiroy@kernel=
.org> wrote:
> >
> > On Thu, May 22, 2025 at 6:35=E2=80=AFAM <xur@xxxxxxxxxx> wrote:
> > >
> > > From: Rong Xu <xur@xxxxxxxxxx>
> > >
> > > Add distributed ThinLTO build support for the Linux kernel.
> > > This new mode offers several advantages: (1) Increased
> > > flexibility in handling user-specified build options.
> > > (2) Improved user-friendliness for developers. (3) Greater
> > > convenience for integrating with objtool and livepatch.
> > >
> > > Note that "distributed" in this context refers to a term
> > > that differentiates in-process ThinLTO builds by invoking
> > > backend compilation through the linker, not necessarily
> > > building in distributed environments.
> > >
> > > Distributed ThinLTO is enabled via the
> > > `CONFIG_LTO_CLANG_THIN_DIST` Kconfig option. For example:
> > > > make LLVM=3D1 defconfig
> > > > scripts/config -e LTO_CLANG_THIN_DIST
> > > > make LLVM=3D1 oldconfig
> > > > make LLVM=3D1 vmlinux -j <..>
> > >
> > > The implementation changes the top-level Makefile with a
> > > macro for generating `vmlinux.o` for distributed ThinLTO
> > > builds. It uses the existing Kbuild infrastructure to
> > > perform two recursive passes through the subdirectories.
> > > The first pass generates LLVM IR object files, similar to
> > > in-process ThinLTO. Following the thin-link stage, a second
> > > pass compiles these IR files into the final native object
> > > files. The build rules and actions for this two-pass process
> > > are primarily implemented in `scripts/Makefile.build`.
> > >
> > > Currently, this patch focuses on building the main kernel
> > > image (`vmlinux`) only. Support for building kernel modules
> > > using this method is planned for a subsequent patch.
> > >
> > > Tested on the following arch: x86, arm64, loongarch, and
> > > riscv.
> > >
> > > Some implementation details can be found here:
> > > https://discourse.llvm.org/t/rfc-distributed-thinlto-build-for-kernel=
/85934
> > >
> > > Signed-off-by: Rong Xu <xur@xxxxxxxxxx>
> > > ---
> > > Changelog since v1:
> > > - Updated the description in arch/Kconfig based on feedback
> > > from Nathan Chancellor
> > > - Revised file suffixes: .final_o -> .o.thinlto.native, and
> > > .final_a -> .a.thinlto.native
> > > - Updated list of ignored files in .gitignore
> > >
> > > Changelog since v2:
> > > - Changed file suffixes: .o.thinlto.native -> .o_thinlto_native,
> > > and .a.thinlto.native -> .a_thinlto_native so that basename
> > > works as intended.
> > > - Tested the patch with AutoFDO and Propeller.
> > > ---
> > > .gitignore | 3 ++
> > > MAINTAINERS | 5 +++
> > > Makefile | 40 ++++++++++++++++++++---
> > > arch/Kconfig | 19 +++++++++++
> > > scripts/Makefile.build | 52 +++++++++++++++++++++++++++--=
-
> > > scripts/Makefile.lib | 7 +++-
> > > scripts/Makefile.vmlinux_o | 16 +++++++---
> > > scripts/Makefile.vmlinux_thinlink | 53 +++++++++++++++++++++++++++++=
++
> > > scripts/head-object-list.txt | 1 +
> > > 9 files changed, 181 insertions(+), 15 deletions(-)
> > > create mode 100644 scripts/Makefile.vmlinux_thinlink
> >
> > I re-implemented the Makefiles to avoid
> > the second recursion and hacky ifdefs.
> > Attached.
> >
> > The topic branch is available in
> >
> > git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.gi=
t
> > thinlto-dist-refactor
> >
> > I only compile and boot tested on x86 QEMU.
> This implementation does look cleaner. But with one issue: it has a
> unified cflags for
> all the BE compilations. This means per-file flags, such as
> CFLAGS_fork.o =3D -fabc,
> are lost during the BE compilation for fork.thinlto_native.o.
>
> This exact issue was what I aimed to prevent with the two-recursion appro=
ach.
> If we must avoid two recursions, perhaps we could leverage the saved per-=
file
> pre-link commands (i.e., .*.o.cmd)?

How important is this?

I do not know which compiler flags are consumed in the
distributed thin lto stage.

Are only compiler flags starting "-f" relevant?

In your implementation, you filter-out many compiler flags.


--
Best Regards
Masahiro Yamada


Return-Path: <linux-kernel+bounces-668970-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BDCD441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:54:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id D9FBE4E0D8A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:54:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B177822D9F8;
Sat, 31 May 2025 06:54:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jKv1IX/W"
Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AEABE208A7;
Sat, 31 May 2025 06:54:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.180
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674468; cv=none; b=FKosKCA2jA3mjG8uMHOlTEl55JjvVWue6dqQ1nfmu5/xJwiJXI6oUf8Q9wX3KYnxGJKi3K5Ao7vL0x7VxU0yPdMNSZ3UZcuFc+68/sdxH0GGKFy+zXBoi1GusNdhKA3TW6UkGMf7igoqi0DbQX4TFhoWFGkJFxfL2EfMMUeE53g=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674468; c=relaxed/simple;
bh=yIZWai5KaDmug7inNb1zWw6dhXMuL0cbhNMRs46CaFo=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=hDY+TMXkWDcHajXE+TljmPI4WOq6VXybjOiOEEUjo/ywJ3ZPlEpDqM2ctv+ygw5rBS9dgV1srLRwPXvNAZORXE7IGduXhPEjb3JLgNgh+uGiQKEud3UVGCif0bSVbfgEx06uL0GTqlJl+/DiLT/8Hc7GcOMAM/LxgivPVpSyf0k=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jKv1IX/W; arc=none smtp.client-ip=209.85.208.180
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-32a61af11ffso30945341fa.1;
Fri, 30 May 2025 23:54:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674465; x=1749279265; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=7KKSGxiWUusF3NpXnt88RhyaalY1bWPLatpBLtUB9C8=;
b=jKv1IX/WgNr6Gmu3mHmTRVBhn5rga9eeY74BlajMgpv6ccSI7e7CH1nuyvx0iOJ9me
Yfn25TMITPSE2xgQ6JYLMhxPtXm+DvkFFPwOHWwAZDOnNvpWxXXXf0ug98DnuwOGy3pv
x21Xif90nvkRyYohH6GWuWjeihiHFdEdcW0eJINtisgZVOTodqKIpl++tSeH01Drigss
vRv3+18Gyq8gSn49dX1WtXPRQ4kveWSmo5nlFecZi+D57REPtMgz40qzHqYxF1+oiWqm
7R/mgDnBM7AnCF+YjTQ+CzFijhQBeFlNlbLhqET8Jjr0C/WCXNJyJdm4hOmjNkEOGbc+
jiwg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674465; x=1749279265;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=7KKSGxiWUusF3NpXnt88RhyaalY1bWPLatpBLtUB9C8=;
b=Oq1NdQ8DkRbGvJCqgRWpHkXQzQhMT39nCStz2mMEZmUM/g9mhoyJvvNnNWAWinL+g+
KLQctBGWs/jugDcz8ve7v/YEZI1v+aK4Scu4je3QLJ8rtsbSvEE5gz4b/+gZiq8Ihgvp
F2gH0Rr+4GHsJx+wCIii9NG/5gjyU2l1+ODdt/U1HBXQ4r0WtHg7XZQaJIqW83Z9y5Ns
RBHM8KpBUWB6n48b9d2iWMdcT+bu7kdLkPKF3EA9GKG8q1GEYdwhu8cmUxDBihHljAj2
Im9myVpdWebn5uEiOVbW8Mm7iAfCqYW+qvwiEmUHGgJTgwhwxnXrFiU0/URxLFcVCZu5
abgA==
X-Forwarded-Encrypted: i=1; AJvYcCVOhlXc3yDjPXX76/7pBpq71j+EAoqqorc0BR0AYn388KrwW1xv84iQxQ2k9A3eBD9GcZao4IqwylzxTDw=@vger.kernel.org, AJvYcCVwV2UOxOEK4UKNls2zwgu92pEnHlMu2OXJUUXiPNJ3tgcLygjvf1q8R+80efV3Y1vHYmwtSAqF@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yx+R0FCA/xP141LROVQbyx8QTy0mQCT4EPNhMLZgDps9fYK7ifd
1jy/fecGCYwuulpaWWK9Ot8/zQqcbUgzG/NzqoWGa9hkUCNQKmE18kK8SjRRDrt9GgjKfm7rts9
+9NuA0Z8zRjA508OtMSL/NU03+rcOlhU=
X-Gm-Gg: ASbGncsVFdZLjhVlyZNxujPphH6pOnIgqnY/JFih6E4aghn9soejD0T+VeMXrSqW8Hw
6lDBlXwd6+fNeOcGph7yTrv90/j8Fy66/WM72wwfStI6r61mcoBrPnMPSbbROhh4CU4O/ES2ueA
fpk8IPYv0MRwakRltp7sO6T6ODDq4dJX0Z
X-Google-Smtp-Source: AGHT+IEjuXhc+XS1tob6iJMFsogLwCN5+7xydvAzxLaAFbdlYQ6806qWJBCm779QeK84FiteX/3OJ/MVWxfqcx3rjbA=
X-Received: by 2002:a2e:bc1e:0:b0:329:1302:a521 with SMTP id
38308e7fff4ca-32a82378ac8mr40695291fa.2.1748674464504; Fri, 30 May 2025
23:54:24 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
<CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx>
From: Kairui Song <ryncsn@xxxxxxxxx>
Date: Sat, 31 May 2025 14:54:07 +0800
X-Gm-Features: AX0GCFs7VJ_XozhddB2_YVsREaUzj3-1R3pIid7kwPCuF7uBRdjCty7q65Y57Qo
Message-ID: <CAMgjq7BoqyNLDir6YGEfLOFhn392VbX+3m6oVzFyg3g_7AQrGA@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Barry Song <21cnbao@xxxxxxxxx>
Cc: linux-mm@xxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Peter Xu <peterx@xxxxxxxxxx>, Suren Baghdasaryan <surenb@xxxxxxxxxx>,
Andrea Arcangeli <aarcange@xxxxxxxxxx>, David Hildenbrand <david@xxxxxxxxxx>,
Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 12:42=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wro=
te:
>
> On Sat, May 31, 2025 at 4:04=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 8:17=E2=80=AFAM Kairui Song <ryncsn@xxxxxxxxx> =
wrote:
> > >
> > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > >
> > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap cac=
he
> > > lookup, and try to move the found folio to the faulting vma when.
> > > Currently, it relies on the PTE value check to ensure the moved folio
> > > still belongs to the src swap entry, which turns out is not reliable.
> > >
> > > While working and reviewing the swap table series with Barry, followi=
ng
> > > existing race is observed and reproduced [1]:
> > >
> > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > swap entry PTE holding swap entry S1, and S1 isn't in the swap cache=
.)
> > >
> > > CPU1 CPU2
> > > userfaultfd_move
> > > move_pages_pte()
> > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > // Here it got entry =3D S1
> > > ... < Somehow interrupted> ...
> > > <swapin src_pte, alloc and use fol=
io A>
> > > // folio A is just a new allocated=
folio
> > > // and get installed into src_pte
> > > <frees swap entry S1>
> > > // src_pte now points to folio A, =
S1
> > > // has swap count =3D=3D 0, it can=
be freed
> > > // by folio_swap_swap or swap
> > > // allocator's reclaim.
> > > <try to swap out another folio B>
> > > // folio B is a folio in another V=
MA.
> > > <put folio B to swap cache using S=
1 >
> > > // S1 is freed, folio B could use =
it
> > > // for swap out with no problem.
> > > ...
> > > folio =3D filemap_get_folio(S1)
> > > // Got folio B here !!!
> > > ... < Somehow interrupted again> ...
> > > <swapin folio B and free S1>
> > > // Now S1 is free to be used again=
.
> > > <swapout src_pte & folio A using S=
1>
> > > // Now src_pte is a swap entry pte
> > > // holding S1 again.
> > > folio_trylock(folio)
> > > move_swap_pte
> > > double_pt_lock
> > > is_pte_pages_stable
> > > // Check passed because src_pte =3D=3D S1
> > > folio_move_anon_rmap(...)
> > > // Moved invalid folio B here !!!
> > >
> > > The race window is very short and requires multiple collisions of
> > > multiple rare events, so it's very unlikely to happen, but with a
> > > deliberately constructed reproducer and increased time window, it can=
be
> > > reproduced [1].
> > >
> > > It's also possible that folio (A) is swapped in, and swapped out agai=
n
> > > after the filemap_get_folio lookup, in such case folio (A) may stay i=
n
> > > swap cache so it needs to be moved too. In this case we should also t=
ry
> > > again so kernel won't miss a folio move.
> > >
> > > Fix this by checking if the folio is the valid swap cache folio after
> > > acquiring the folio lock, and checking the swap cache again after
> > > acquiring the src_pte lock.
> > >
> > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but so fa=
r
> > > we don't need to worry about that since folios only might get exposed=
to
> > > swap cache in the swap out path, and it's covered in this patch too b=
y
> > > checking the swap cache again after acquiring src_pte lock.
> > >
> > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-tqCz=
i+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > ---
> > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > 1 file changed, 26 insertions(+)
> > >
> > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > index bc473ad21202..a1564d205dfb 100644
> > > --- a/mm/userfaultfd.c
> > > +++ b/mm/userfaultfd.c
> > > @@ -15,6 +15,7 @@
> > > #include <linux/mmu_notifier.h>
> > > #include <linux/hugetlb.h>
> > > #include <linux/shmem_fs.h>
> > > +#include <linux/delay.h>
> > > #include <asm/tlbflush.h>
> > > #include <asm/tlb.h>
> > > #include "internal.h"
> > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *mm, =
struct vm_area_struct *dst_vma,
> > > spinlock_t *dst_ptl, spinlock_t *src_ptl,
> > > struct folio *src_folio)
> > > {
> > > + swp_entry_t entry;
> > > +
> > > double_pt_lock(dst_ptl, src_ptl);
> > >
> > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig=
_src_pte,
> > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct *mm,=
struct vm_area_struct *dst_vma,
> > > if (src_folio) {
> > > folio_move_anon_rmap(src_folio, dst_vma);
> > > src_folio->index =3D linear_page_index(dst_vma, dst_a=
ddr);
> > > + } else {
> > > + /*
> > > + * Check again after acquiring the src_pte lock. Or w=
e might
> > > + * miss a new loaded swap cache folio.
> > > + */
> > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > + src_folio =3D filemap_get_folio(swap_address_space(en=
try),
> > > + swap_cache_index(entry)=
);
> > > + if (!IS_ERR_OR_NULL(src_folio)) {
> > > + double_pt_unlock(dst_ptl, src_ptl);
> > > + folio_put(src_folio);
> > > + return -EAGAIN;
> > > + }
> > > }
> >
> > step 1: src pte points to a swap entry without swapcache
> > step 2: we call move_swap_pte()
> > step 3: someone swap-in src_pte by swap_readhead() and make src_pte's s=
wap entry
> > have swapcache again - for non-sync/non-zRAM swap device;
> > step 4: move_swap_pte() gets ptl, move src_pte to dst_pte and *clear* s=
rc_pte;
> > step 5: do_swap_page() for src_pte holds the ptl and found pte has
> > been cleared in
> > step 4; pte_same() returns false;
> > step 6: do_swap_page() won't map src_pte to the new swapcache got from =
step 3;
> > if the swapcache folio is dropped, it seems everything is f=
ine.

Even if it's not dropped, it's fine, the folio doesn belong to any VMA
in this case, and we don't need to move it.

The problem is the swapin succeed before step 4, and another swapout
also succeeded before step 4, so src folio will be left in the swap
cache belonging to src VMA.

> >
> > So the real issue is that do_swap_page() doesn=E2=80=99t drop the new s=
wapcache
> > even when pte_same() returns false? That means the dst_pte swap-in
> > can still hit the swap cache entry brought in by the src_pte's swap-in?
>
> It seems also possible for the sync zRAM device.
>
> step 1: src pte points to a swap entry S without swapcache
> step 2: we call move_swap_pte()
> step 3: someone swap-in src_pte by sync path, no swapcache; swap slot
> S is freed.
> -- for zRAM;
> step 4: someone swap-out src_pte, get the exactly same swap slot S as st=
ep 1,
> adds folio to swapcache due to swapout;
> step 5: move_swap_pte() gets ptl and finds page tables are stable
> since swap-out
> happens to have the same swap slot as step1;
> step 6: we clear src_pte, move src_pte to dst_pte; but miss to move the =
folio.

Yes, that's exactly the case.

>
> Yep, we really need to re-check pte for swapcache after holding PTL.
>
> >
> > >
> > > orig_src_pte =3D ptep_get_and_clear(mm, src_addr, src_pte);
> > > @@ -1409,6 +1425,16 @@ static int move_pages_pte(struct mm_struct *mm=
, pmd_t *dst_pmd, pmd_t *src_pmd,
> > > folio_lock(src_folio);
> > > goto retry;
> > > }
> > > + /*
> > > + * Check if the folio still belongs to the ta=
rget swap entry after
> > > + * acquiring the lock. Folio can be freed in =
the swap cache while
> > > + * not locked.
> > > + */
> > > + if (unlikely(!folio_test_swapcache(folio) ||
> > > + entry.val !=3D folio->swap.val))=
{
> > > + err =3D -EAGAIN;
> > > + goto out;
> > > + }
> > > }
> > > err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr=
, dst_pte, src_pte,
> > > orig_dst_pte, orig_src_pte, dst_pmd, =
dst_pmdval,
> > > --
> > > 2.49.0
> > >
> >
>
> Thanks
> Barry
>


Return-Path: <linux-kernel+bounces-668971-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 460FB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:54:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3E0F61BA3249
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:55:02 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9878923505D;
Sat, 31 May 2025 06:54:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="laxKKMFt"
Received: from mail-vs1-f47.google.com (mail-vs1-f47.google.com [209.85.217.47])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id B914D22DA0D;
Sat, 31 May 2025 06:54:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674471; cv=none; b=JoNybvnpa39wlWav7b7DLcZ/Ea2ZpXfu9crdNz/jms/wa/QL6gSKWuI71X7vkQ5hvTZD/ATUw3vNAjpNYO1RR8MKTRFdnae8z0nSZxCsc5w24XsAM127qzPMWSfoiD0sz8EkM08Kbc2iqRpXqwhBNQve9GiobHxmbYua/hq38Xc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674471; c=relaxed/simple;
bh=G1MJ9ZO0Qak9iNybW/AgNBbaXpjlDivgBxSIcV7M69Q=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=pH2RyxATFjA8CXfTlGVBPp+bRbwKxuZ1k4cLestH30/pQ62uY4FH6FNrwHYazbBcqcQZ32N+G4E8/R+Trx4dllnR2cnaI/RekjLtmxKh5/T+sLiRK2rLxodA85W3FWz1FFnm4oH75AhfBGS/A0JFmdGJtiaDX3MF7X+XTjzNjz8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=laxKKMFt; arc=none smtp.client-ip=209.85.217.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vs1-f47.google.com with SMTP id ada2fe7eead31-4e701c53c84so209792137.0;
Fri, 30 May 2025 23:54:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674468; x=1749279268; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=mt9LCU4KtOp/peg997ydOztpCwzP+Qu3HWBp0qmR5aA=;
b=laxKKMFtV8hMoxbxKli0UaU9KzC0zyx2q5Mak+azEZYaY6WNIicf9oMJd6SAxyPFSA
lbQmJeca1KvDls2u5nHLHnoYEd1RXwcUgQiZRJcOdY3Gt6QEPgUEH5UMW85sBSL/KQdx
8XXhGbTjbFKW/WEp2ndrdNjDMFA6FOIfMvQPk1rLMNcKTOJ4bvJMkh+RbngmrvTO7vBt
Go4smN9oz4+e7n4jVC32nnN7GaUR/r8rKN49MvPwsobB4M8vkPF3YSMksw01Vjou+TO+
+euYaMZJPRQm4rG8c0/YTFnkKv4R7Bx+dM8pS8Gked1dEzyOvQz8yC2YRUHFK/abK3dR
pIRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674468; x=1749279268;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=mt9LCU4KtOp/peg997ydOztpCwzP+Qu3HWBp0qmR5aA=;
b=DJ3XGDE0yLpDuJUlK9Ppp3Q6y3C2aiCwTp+p1Wqh8jcL7QPotaAmUAjDvYCI1zJjn5
JXgw7xQgy8vfeq3CdGhxjq84eQd/HWubroJGAGcAtTdV3sAHcPSt3Qc6DFxKiQedD259
AZ4d1GP9WMLH5bGI9b1qmtU/Jc0lNGkDtRrlTDFB0ELo6Qrsm74YSuDtDgZVbKjt3HFY
3PeLelyK2xeNTBYRJuSI+rdaptQV94InaGVzre8COIEzmIvaU17xEBi6k+nzTQ6x6sUb
dLkQvK7XFbg8+SQNsnVe5FptaZotv5T8KcFVVq3MCqPdn8XOnDE7Usu8vH3Gq0Ico6/U
fy1Q==
X-Forwarded-Encrypted: i=1; AJvYcCU/o/6PPbOKS/1er1d+cv93I4KqTqkh5EjG4INC6MQDt4ECmMgDhwTy3fQZk0MM5MktnFKA15q5@xxxxxxxxxxxxxxx, AJvYcCW5GKv3wBuHKe7dCQ0YTUwPDT63L+CzJ6pEgd1kSFUHrd42J07lYsCvRcObjsocyEcu7j8Z3Y0SdcG6jTU=@vger.kernel.org
X-Gm-Message-State: AOJu0Yxc4n+YCSOlsN7QGn8hwnUUBcF2KKW7aUWupxPdcVKb/PPi+WFb
J2PC05COX9YxgW6YZ1X+L4sc9LZZ7TOCiqQcyKAOq9zzQ74bJrjt4T8xQvJ83XGOB2p7lu6GFHQ
EnlfNnE8YHynEKlwYvEWnCPDgZHG8nNuWBFOs
X-Gm-Gg: ASbGncuM8w0Qe9SNQGghnHFijzFU3si9AAPtI3ydt0h8y0t4maw1aiPa2BflfK8YKN2
PCefOwR/v4g/K6I97dOoUa5Sb8gCbOjDkeYZc/wWzkmvOHg1TUZtUjZEDaLE/6csN+aMNty2b09
5Xc97L8R5aoWuz3DU+YjXoHDC4/hnDllJsVw==
X-Google-Smtp-Source: AGHT+IGRBxa3bLwqvjUcM5rSwBr4KjoL/kPcL0HkCbthe4esfOCzO4sYQL2vNy8Tg6EwJuWuhd/4wxdWTxUkF5LGpyA=
X-Received: by 2002:a05:6102:3ed4:b0:4e5:c51b:ace4 with SMTP id
ada2fe7eead31-4e701b098d7mr426437137.20.1748674468415; Fri, 30 May 2025
23:54:28 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CAGsJ_4wBMxQSeoTwpKoWwEGRAr=iohbYf64aYyJ55t0Z11FkwA@xxxxxxxxxxxxxx>
<CAGsJ_4wM8Tph0Mbc-1Y9xNjgMPL7gqEjp=ArBuv3cJijHVXe6w@xxxxxxxxxxxxxx>
<CA+EESO7Gck6YpjPTMSzDGcmRXjci=zG3i8F+LTt=u2Krbp_cRg@xxxxxxxxxxxxxx> <CAMgjq7D10Pw6miYZvN-2stOw04iho1Z-HTb4Udo0L_1kaMgKWg@xxxxxxxxxxxxxx>
In-Reply-To: <CAMgjq7D10Pw6miYZvN-2stOw04iho1Z-HTb4Udo0L_1kaMgKWg@xxxxxxxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 18:54:17 +1200
X-Gm-Features: AX0GCFuHIXE2nFc8E8Epyk2nWAYLEJ8Eun1d22K4Wew4_rSLkb6MQIrwV6xiJO0
Message-ID: <CAGsJ_4zBYhBuQmGGfbQnaGBjw5RwR2szfJxnQfF0i8=wEXbuxg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Kairui Song <ryncsn@xxxxxxxxx>
Cc: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 6:36=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 2:10=E2=80=AFPM Lokesh Gidra <lokeshgidra@google.=
com> wrote:
> >
> > On Fri, May 30, 2025 at 9:42=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> =
wrote:
> > >
> > > On Sat, May 31, 2025 at 4:04=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx=
> wrote:
> > > >
> > > > On Sat, May 31, 2025 at 8:17=E2=80=AFAM Kairui Song <ryncsn@gmail.c=
om> wrote:
> > > > >
> > > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > > >
> > > > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap=
cache
> > > > > lookup, and try to move the found folio to the faulting vma when.
> > > > > Currently, it relies on the PTE value check to ensure the moved f=
olio
> > > > > still belongs to the src swap entry, which turns out is not relia=
ble.
> > > > >
> > > > > While working and reviewing the swap table series with Barry, fol=
lowing
> > > > > existing race is observed and reproduced [1]:
> > > > >
> > > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > > > swap entry PTE holding swap entry S1, and S1 isn't in the swap c=
ache.)
> > > > >
> > > > > CPU1 CPU2
> > > > > userfaultfd_move
> > > > > move_pages_pte()
> > > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > // Here it got entry =3D S1
> > > > > ... < Somehow interrupted> ...
> > > > > <swapin src_pte, alloc and use=
folio A>
> > > > > // folio A is just a new alloc=
ated folio
> > > > > // and get installed into src_=
pte
> > > > > <frees swap entry S1>
> > > > > // src_pte now points to folio=
A, S1
> > > > > // has swap count =3D=3D 0, it=
can be freed
> > > > > // by folio_swap_swap or swap
> > > > > // allocator's reclaim.
> > > > > <try to swap out another folio=
B>
> > > > > // folio B is a folio in anoth=
er VMA.
> > > > > <put folio B to swap cache usi=
ng S1 >
> > > > > // S1 is freed, folio B could =
use it
> > > > > // for swap out with no proble=
m.
> > > > > ...
> > > > > folio =3D filemap_get_folio(S1)
> > > > > // Got folio B here !!!
> > > > > ... < Somehow interrupted again> ...
> > > > > <swapin folio B and free S1>
> > > > > // Now S1 is free to be used a=
gain.
> > > > > <swapout src_pte & folio A usi=
ng S1>
> > > > > // Now src_pte is a swap entry=
pte
> > > > > // holding S1 again.
> > > > > folio_trylock(folio)
> > > > > move_swap_pte
> > > > > double_pt_lock
> > > > > is_pte_pages_stable
> > > > > // Check passed because src_pte =3D=3D S1
> > > > > folio_move_anon_rmap(...)
> > > > > // Moved invalid folio B here !!!
> > > > >
> > > > > The race window is very short and requires multiple collisions of
> > > > > multiple rare events, so it's very unlikely to happen, but with a
> > > > > deliberately constructed reproducer and increased time window, it=
can be
> > > > > reproduced [1].
> > > > >
> > > > > It's also possible that folio (A) is swapped in, and swapped out =
again
> > > > > after the filemap_get_folio lookup, in such case folio (A) may st=
ay in
> > > > > swap cache so it needs to be moved too. In this case we should al=
so try
> > > > > again so kernel won't miss a folio move.
> > > > >
> > > > > Fix this by checking if the folio is the valid swap cache folio a=
fter
> > > > > acquiring the folio lock, and checking the swap cache again after
> > > > > acquiring the src_pte lock.
> > > > >
> > > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but s=
o far
> > > > > we don't need to worry about that since folios only might get exp=
osed to
> > > > > swap cache in the swap out path, and it's covered in this patch t=
oo by
> > > > > checking the swap cache again after acquiring src_pte lock.
> > > > >
> > > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-=
tqCzi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > ---
> > > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > > 1 file changed, 26 insertions(+)
> > > > >
> > > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > > index bc473ad21202..a1564d205dfb 100644
> > > > > --- a/mm/userfaultfd.c
> > > > > +++ b/mm/userfaultfd.c
> > > > > @@ -15,6 +15,7 @@
> > > > > #include <linux/mmu_notifier.h>
> > > > > #include <linux/hugetlb.h>
> > > > > #include <linux/shmem_fs.h>
> > > > > +#include <linux/delay.h>
> > > > > #include <asm/tlbflush.h>
> > > > > #include <asm/tlb.h>
> > > > > #include "internal.h"
> > > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *=
mm, struct vm_area_struct *dst_vma,
> > > > > spinlock_t *dst_ptl, spinlock_t *src_ptl=
,
> > > > > struct folio *src_folio)
> > > > > {
> > > > > + swp_entry_t entry;
> > > > > +
> > > > > double_pt_lock(dst_ptl, src_ptl);
> > > > >
> > > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, =
orig_src_pte,
> > > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct =
*mm, struct vm_area_struct *dst_vma,
> > > > > if (src_folio) {
> > > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > > src_folio->index =3D linear_page_index(dst_vma, d=
st_addr);
> > > > > + } else {
> > > > > + /*
> > > > > + * Check again after acquiring the src_pte lock. =
Or we might
> > > > > + * miss a new loaded swap cache folio.
> > > > > + */
> > > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > + src_folio =3D filemap_get_folio(swap_address_spac=
e(entry),
> > > > > + swap_cache_index(en=
try));
> > > > > + if (!IS_ERR_OR_NULL(src_folio)) {
> > > > > + double_pt_unlock(dst_ptl, src_ptl);
> > > > > + folio_put(src_folio);
> > > > > + return -EAGAIN;
> > > > > + }
> > > > > }
> > > >
> > > > step 1: src pte points to a swap entry without swapcache
> > > > step 2: we call move_swap_pte()
> > > > step 3: someone swap-in src_pte by swap_readhead() and make src_pte=
's swap entry
> > > > have swapcache again - for non-sync/non-zRAM swap device;
> > > > step 4: move_swap_pte() gets ptl, move src_pte to dst_pte and *clea=
r* src_pte;
> > > > step 5: do_swap_page() for src_pte holds the ptl and found pte has
> > > > been cleared in
> > > > step 4; pte_same() returns false;
> > > > step 6: do_swap_page() won't map src_pte to the new swapcache got f=
rom step 3;
> > > > if the swapcache folio is dropped, it seems everything =
is fine.
> > > >
> > > > So the real issue is that do_swap_page() doesn=E2=80=99t drop the n=
ew swapcache
> > > > even when pte_same() returns false? That means the dst_pte swap-in
> > > > can still hit the swap cache entry brought in by the src_pte's swap=
-in?
> > >
> > > It seems also possible for the sync zRAM device.
> > >
> > > step 1: src pte points to a swap entry S without swapcache
> > > step 2: we call move_swap_pte()
> > > step 3: someone swap-in src_pte by sync path, no swapcache; swap slo=
t
> > > S is freed.
> > > -- for zRAM;
> > > step 4: someone swap-out src_pte, get the exactly same swap slot S a=
s step 1,
> > > adds folio to swapcache due to swapout;
> > > step 5: move_swap_pte() gets ptl and finds page tables are stable
> > > since swap-out
> > > happens to have the same swap slot as step1;
> > > step 6: we clear src_pte, move src_pte to dst_pte; but miss to move =
the folio.
> > >
> > > Yep, we really need to re-check pte for swapcache after holding PTL.
> > >
> > Any idea what is the overhead of filemap_get_folio()? In particular,
> > when no folio exists for the given entry, how costly is it?
> >
> > Given how rare it is, unless filemap_get_folio() is cheap for 'no
> > folio' case, if there is no way to avoid calling it after holding PTL,
> > then we should do it only once at that point. If a folio is returned,
> > then like in the pte_present() case, we attempt folio_trylock() with
> > PTL held, otherwise do the retry dance.
>
> Yeah I think filemap_get_folio is cheap, each swap cache space is at
> most 64M big, so it just walks at most three xa_nodes and returns, not
> involving any synchronization or write.
>
> The swap cache lookup will be even cheaper in the future to be just
> checking one plain array element.
>
> I can try to fix this with the folio_trylock inside the PTL lock
> approach, maybe the code will be cleaner that way.

Using trylock in an atomic context and deferring to a full lock in a
non-atomic context might be considered a workaround =E2=80=94 it feels a bi=
t
hackish to me :-)

To follow that, the reader might need to understand the entire workflow
from kernel to userspace to grasp what's happening with the folio lock,
whereas the current code handles everything within the kernel, making it
more natural.

Thanks
Barry


Return-Path: <linux-kernel+bounces-668972-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 16CAA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:57:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1FF0D16D5C3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:57:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F07FF22DFB5;
Sat, 31 May 2025 06:57:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lNrBWQ71"
Received: from mail-pl1-f194.google.com (mail-pl1-f194.google.com [209.85.214.194])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC421208A7;
Sat, 31 May 2025 06:57:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.194
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674664; cv=none; b=jtXSY/8oinxZrV4x+Dn6ioFdry/xgpEpzLNCuSvJokF1o0o7+3zsoSsvT2OLAqz4BOYF7GwD3fCUaEHrkGc8bXMGlxbi5ABIU8G73sxolDMZQvoBiOhhMwzoOJBUi8rvs08iw+pHEhjPNpXgDt8TrGkfyrUmzIw7Uj2qWtOtpQE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674664; c=relaxed/simple;
bh=7XrLppQO5qB5g9WEeeWY3UVbzJBtnah+myNv+a9FfF4=;
h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=Z5/irCYqg+pJBL6XxLe4qFWboLYEca35UefjVICyx3/4CYTZ0XsKfSl79kE8q/0r658pROX9qJVaYbHrJPc0OAcbCZm0E4VU6SsqJ8RAaivBOgdqHVHIcqnYOq2XutblDchX5gre0EPY1EjRdvOV/RrXgyT9NcXy/eAL3CqEtiU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lNrBWQ71; arc=none smtp.client-ip=209.85.214.194
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f194.google.com with SMTP id d9443c01a7336-23228b9d684so30704535ad.1;
Fri, 30 May 2025 23:57:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674662; x=1749279462; darn=vger.kernel.org;
h=cc:to:content-transfer-encoding:mime-version:message-id:date
:subject:from:from:to:cc:subject:date:message-id:reply-to;
bh=5qcHiI82/LFv1dYpB1HoVb5XMF47rsmDr7PMAQ9iF1c=;
b=lNrBWQ71V8bni2iL9cBxvIXmUqR7GOCqC8HMmF+3PFcTUwd0HMpN6Ik/FHvJtUfGjA
jb3lbCO/e+HDh3dtVQv9FnMQqDmIRNFwBs+CUx+8yUvsjg+HC8KmG8dC0Bun134QyaRK
fgoDSsFtMmiaWkuPCuI+hQkIXK24vEIOHzXxHV956Ohs9eXDoSBO1bEudQjvo56nNlT6
5P9rBhEA+DngammomUsykzACMxvJKQKjiZMgAML2eHeUN5xVwomI6NJvjk/W3njTO9Pc
/GnF6cg3q//31d71FVuSVTRPsP4bbQ+e6cf0/cQgHXmPKxqcCX339I+sAJkdPVQ0ijUe
pOqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674662; x=1749279462;
h=cc:to:content-transfer-encoding:mime-version:message-id:date
:subject:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=5qcHiI82/LFv1dYpB1HoVb5XMF47rsmDr7PMAQ9iF1c=;
b=VMy8y7DHjGwIGcjrNdGOlmty96vR8d1pc1RujF8ICF6kDCEMvIwHS5pMiM58xKh1Zl
HsXUnqXJjm7b/NDzluqjC6c81U6S6MWiFNNdgCHznwnOrK75LgvpXbAU3PzUnwLdLYK6
X1p5DQIljeM3c3uJoSi5R9SpnRZHkMprElmSKt09oA8wxpmi4PIBnXh3h4vEy0fsigrn
CIJh/WqllI7l5xzn8Q2kSztbmnk/TXCB2Cd/wVTZPlBnDB65nbbe3pkNFA97NYTs2rZL
B0hPuMAIuxSB7adFMjgyymy/k9kabMPHLG5EJ89zYg487ex9Di/CHCgcwLtX4xyATwZO
hnbg==
X-Forwarded-Encrypted: i=1; AJvYcCXIsLs2T+K5cA8+mJpBoEJTPqziQFa4mIoW/yZlX/pWJlPkGxGCTsGQNXd/Aa/GVMjaE1g4UwdKCeqQs88=@vger.kernel.org
X-Gm-Message-State: AOJu0Yy3T+jYFCZxBcnDVv29Cywh2pxhnwLN5uBm+9N29codCucO7PjW
v7DTRuVSBoa1UhFAUiZi+k3HyGSaRGYgKCbFNoohXtxYvgz3NTSbFQQ4hW1mRKLAjz14ag==
X-Gm-Gg: ASbGncvt8WTIjbCBIfW9VdMpeBWWaX1tMzJEnANMmx10R4OIBT83qYUW9XTWvLvkMmU
2CYUIQLsO5wDkFkqIAnsGG7X1x7p5t4+OXjnfQh+4dtbYJyyfJBZVWapE1Z0DSwIryGHjV3sMCY
b94Z3fu33gqhKH4ujsPdk+nwWERwayFvIoht+0axdPJUQyEbSqY+zALYQmr6fYPqh15v9atwA/9
e76QZ8/Ypw2KEZD1rFCrqXiSPwkwkhUfiMaG/y5R9CBD/luTts6K88nqjZPlSJ/pvxTuSXK3VzT
lekVfuNpANS49egpYqqzBz8gMvECpmVIi8o=
X-Google-Smtp-Source: AGHT+IGGhT3HnZACqSoO0BWBt2NHArRjjRnsN6QNso3lrv38ZJCqSmd60+cj2QxJNX1QE7jAAytsCQ==
X-Received: by 2002:a17:903:b4e:b0:235:1ae7:a99c with SMTP id d9443c01a7336-235395b2408mr63803315ad.32.1748674662034;
Fri, 30 May 2025 23:57:42 -0700 (PDT)
Received: from [127.0.1.1] ([2602:f919:106::1b8])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506cf5448sm37596625ad.185.2025.05.30.23.57.35
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:57:41 -0700 (PDT)
From: Troy Mitchell <troymitchell988@xxxxxxxxx>
Subject: [PATCH v4 0/2] i2c: imx: guard and drop prefix
Date: Sat, 31 May 2025 14:57:25 +0800
Message-Id: <20250531-i2c-imx-update-v4-0-bfad0c8fd45c@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAFWoOmgC/3XMyw6CMBCF4VchXVvDdChFV76HcQF0gEnkkoIEQ
3h3CxuJxOU5yffPoifH1ItrMAtHI/fcNn5Ep0DkVdqUJNn6LVSodBgpkKxyyfUkX51NB5IWwMa
xtYmhRHjUOSp42oL3h98V90Pr3lt/hPX9mxpBhhIATQEFarT6VtYpP895W4s1Nao9NweuPLcIi
vASZdrgL8cv14AHjp4nYDITqTiNDe35siwf+D109CoBAAA=
To: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>,
Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>, Shawn Guo <shawnguo@xxxxxxxxxx>,
Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>, Fabio Estevam <festevam@xxxxxxxxx>
Cc: linux-i2c@xxxxxxxxxxxxxxx, imx@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Troy Mitchell <troymitchell988@xxxxxxxxx>, Yongchao Jia <jyc0019@xxxxxxxxx>,
Frank Li <Frank.Li@xxxxxxx>, Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>,
Carlos Song <carlos.song@xxxxxxx>
X-Mailer: b4 0.14.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748674650; l=1377;
i=troymitchell988@xxxxxxxxx; h=from:subject:message-id;
bh=7XrLppQO5qB5g9WEeeWY3UVbzJBtnah+myNv+a9FfF4=;
b=yNqJnBELWXIrnWc0OTDAapEeh0k2sIvvzRqEwsOj6o/ZZMXsWmRcGtIy1Okf8MET6yz0doUaX
iHpUyHvR+vFAe3WpHJ7EZbP1jUaz9rAUzUkR6viFFygw06souqRcV2j
X-Developer-Key: i=troymitchell988@xxxxxxxxx; a=ed25519;
pk=2spEMGBd/Wkpd36N1aD9KFWOk0aHrhVxZQt+jxLXVC0=
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Since this patch[1], we have new callback function names.
Since this patch[2], we can use `guard` to call `spin_lock_irqsave`
and release this lock when it goes out of scope.

Link:
https://lore.kernel.org/all/20240706112116.24543-2-wsa+renesas@xxxxxxxxxxxxxxxxxxxx/ [1]
https://lore.kernel.org/all/20250227221924.265259-10-lyude@xxxxxxxxxx/ [2]

Signed-off-by: Troy Mitchell <troymitchell988@xxxxxxxxx>
---
Changes in v4:
- Add Reviewed-by: Carlos Song and Acked-by: Oleksij Rempel
- No code changes
- Link to v3: https://lore.kernel.org/r/20250513-i2c-imx-update-v3-0-817b7426a67e@xxxxxxxxx

Changes in v3:
- use scoped_guard
- Link to v2: https://lore.kernel.org/r/20250427-i2c-imx-update-v2-0-d312e394b573@xxxxxxxxx

Changes in v2:
- Add more details in the commit message
- Drop a useless variable
- Refactor the logic of i2c_imx_isr function
- Link to v1: https://lore.kernel.org/r/20250421-i2c-imx-update-v1-0-1137f1f353d5@xxxxxxxxx

---
Troy Mitchell (2):
i2c: imx: use guard to take spinlock
i2c: imx: drop master prefix

drivers/i2c/busses/i2c-imx.c | 41 ++++++++++++++++++-----------------------
1 file changed, 18 insertions(+), 23 deletions(-)
---
base-commit: 9d7a0577c9db35c4cc52db90bc415ea248446472
change-id: 20250421-i2c-imx-update-d11d66dd87e8

Best regards,
--
Troy Mitchell <troymitchell988@xxxxxxxxx>



Return-Path: <linux-kernel+bounces-668973-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 583DC41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:58:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 7CFD9179ACD
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:58:01 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 38CA822E3E0;
Sat, 31 May 2025 06:57:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="K8DIYj8p"
Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E1758208A7;
Sat, 31 May 2025 06:57:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.193
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674671; cv=none; b=Wkqj1CoInJWZFSrqi4nymdVafqxYKqZmWdiHeVBp6VZr5oswZjj++HEQWmwW2dJyviYDQaLs2ipuYsmbEoOukphT2XbdW4QVrxldIW0QsJGY0W/QjKn+VfB2ClqEDjv4w6E+Z7BTTHxQFlJrunOfTjAz77yCJlsxjaXSABsGVjc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674671; c=relaxed/simple;
bh=kzfikvqslmcNoM9cU44BoA71y4mZZRBxiPJC+FC3nqM=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=tleUEVI4HmECAGXfaxc2XFqwROd5r9S2YmmvlpPOIowfeeMVFhupyNKo+UEM2vS5m4q3kNxh+h5tqQWnXMXMxKO6KFGb+NUoHmAVD6MDd33jwJLFNm7l42QLAvEQ1CQmthOg9yyLlcc790VKeGwcc8gF8p/dfefNNqJQBaGrZLY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=K8DIYj8p; arc=none smtp.client-ip=209.85.214.193
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f193.google.com with SMTP id d9443c01a7336-2349282084bso34753385ad.1;
Fri, 30 May 2025 23:57:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674669; x=1749279469; darn=vger.kernel.org;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:mime-version:subject:date:from:from:to:cc:subject:date:message-id
:reply-to;
bh=204UNc2Wl3rmtEs6OGcSVTV/VNrUI6SdVkUZQOxQBr8=;
b=K8DIYj8p6CbBMRRg81gvu77MeAHIRXoO/KAAs46onRfG7Hg9BG6vpcss24t3yc1FqW
kXPCJjYuJriLXbloLKzmZ/uNkgOtnguyJl7Wp3gJ+HLCkt1by1dqFwvCvkfkQHcw2k2Z
230rk71VBuotr4IxDzzN7voOIXaNb6aBKFtmLT0NXEJmMNNm2vvL50MPwB/8LwwQznFo
vBxFqJjuOL1ZMhtq/ymlrtipWarlMbrNOHlWbG7ANfOrElQlLlE6n0uTTVizSq2RF//j
7lN0ek9DiANnYATx4+rNnA2f9fFrpLAoxBLMb6tkPXzIdPGPS76EX1b2WKV4drzwwJI3
3/Lw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674669; x=1749279469;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:mime-version:subject:date:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=204UNc2Wl3rmtEs6OGcSVTV/VNrUI6SdVkUZQOxQBr8=;
b=VzkJWBH3qUMgR7dX7JsKDBnrq1bjnPr7Ju98TGuc5t1GlSjX5IeSLhxbQqJyfCw6rW
lAK4BnRgRpvipD5FLfmFYhsRrAedDgFDdpsBoFRIJmhQSeZ35chDZMhNiIxZoRJQvkLs
zwZETDB0pEL74TjhWgsrJ+O1oZLQEdScUS1laAlQyzY4LbtSSHNk6MqRanDtKPu4zAWA
pb90npebkltswkvbtqNJUZw/flcVR88HtK8ttL5ZF8yEgENvBg/zw8JgQHxS/F3tdWPI
QS6S64wiXYtY2zaaAvDLdd++oFmw7Lq5pkvY5E52cTydX42whhB/78pA5Cfw/eyWgYCl
mK7A==
X-Forwarded-Encrypted: i=1; AJvYcCWm0ne4vX5AAEFMaOtd3WzlOA3b7zH/goBgusi1nGBoAmIBoDLURjA5LsG6nBBoHEOTtmI8dlJuPLh/YvA=@vger.kernel.org
X-Gm-Message-State: AOJu0YwJlbAaIsukt8143hRPex/FlJ6sVyOMkOx2NCkwDWtfH43BoBAH
eRbA5aLK1IkGNszelfKzt+2eXgISDWHAn0iXhZpGCsf+YzKYQZitmG4o
X-Gm-Gg: ASbGnctPpLqPyOXX3lLwvyv4cvORScoMvex0ur0wrv6x7rFiAdhanRxJ9j4iiLNPImH
MPKP+I17uDnL/dKzU1RxiJESuc2zx9K6YTdvQ94qWXiOlt2dZyhSvk1939/z+CNpwToVXilGK0a
4kjlY3qzFbUjztgpT432t3JHXNyWZ8/Yqtj4wecKG1t/wFBiZxoJRJ5aX86HphYv9emGJEjAXLZ
oLbZFHX+lCMAad4X4nhZnXCgmePppG1iC/dexQ3Bbv12lNFYsnZJXajCMIHLGtb3aGmPNf4/+sa
ETMEL/HdengGTj0esWShLQoq9qH/7Ci92AU=
X-Google-Smtp-Source: AGHT+IFyM1uZ0Xpp3l9OJV7SKmrYyK0ZVxdW6vyRglphqDLVvMKdPGkWMU7FlfnGr4XgkK+hBC/f3A==
X-Received: by 2002:a17:903:289:b0:234:cb4a:bc48 with SMTP id d9443c01a7336-2352920a1b6mr86911505ad.31.1748674669029;
Fri, 30 May 2025 23:57:49 -0700 (PDT)
Received: from [127.0.1.1] ([2602:f919:106::1b8])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506cf5448sm37596625ad.185.2025.05.30.23.57.42
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:57:48 -0700 (PDT)
From: Troy Mitchell <troymitchell988@xxxxxxxxx>
Date: Sat, 31 May 2025 14:57:26 +0800
Subject: [PATCH v4 1/2] i2c: imx: use guard to take spinlock
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-i2c-imx-update-v4-1-bfad0c8fd45c@xxxxxxxxx>
References: <20250531-i2c-imx-update-v4-0-bfad0c8fd45c@xxxxxxxxx>
In-Reply-To: <20250531-i2c-imx-update-v4-0-bfad0c8fd45c@xxxxxxxxx>
To: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>,
Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>, Shawn Guo <shawnguo@xxxxxxxxxx>,
Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>, Fabio Estevam <festevam@xxxxxxxxx>
Cc: linux-i2c@xxxxxxxxxxxxxxx, imx@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Troy Mitchell <troymitchell988@xxxxxxxxx>, Yongchao Jia <jyc0019@xxxxxxxxx>,
Frank Li <Frank.Li@xxxxxxx>
X-Mailer: b4 0.14.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748674650; l=3153;
i=troymitchell988@xxxxxxxxx; h=from:subject:message-id;
bh=kzfikvqslmcNoM9cU44BoA71y4mZZRBxiPJC+FC3nqM=;
b=mSmDu4RPXx7Q/E/jz8U9/3TeqXi9A+CHJVNhbEnD/etxzCaQKeXuGPBn44QvPeKRfsEUAomxS
RS7ibvc1PWlD2+I2WStej5tGgy79/YVJzveC6SOm9EFUHoN+iWAemox
X-Developer-Key: i=troymitchell988@xxxxxxxxx; a=ed25519;
pk=2spEMGBd/Wkpd36N1aD9KFWOk0aHrhVxZQt+jxLXVC0=
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Use guard to automatically release the lock after going out of scope
instead of calling it manually.

i2c_imx_slave_handle() can safely be entered with the lock held.

Refactored the i2c_imx_isr function so that i2c_imx_master_isr
does not participate in the guard scope

So Using scoped_guard simplifies the control flow
by ensuring consistent and automatic unlock,
which improves readability without affecting correctness.

Co-developed-by: Yongchao Jia <jyc0019@xxxxxxxxx>
Signed-off-by: Yongchao Jia <jyc0019@xxxxxxxxx>
Reviewed-by: Frank Li <Frank.Li@xxxxxxx>
Acked-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
Signed-off-by: Troy Mitchell <troymitchell988@xxxxxxxxx>
---
drivers/i2c/busses/i2c-imx.c | 37 ++++++++++++++++---------------------
1 file changed, 16 insertions(+), 21 deletions(-)

diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 9e5d454d8318..5b276e007292 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -23,6 +23,7 @@

#include <linux/acpi.h>
#include <linux/clk.h>
+#include <linux/cleanup.h>
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/dma-mapping.h>
@@ -891,13 +892,13 @@ static enum hrtimer_restart i2c_imx_slave_timeout(struct hrtimer *t)
struct imx_i2c_struct *i2c_imx = container_of(t, struct imx_i2c_struct,
slave_timer);
unsigned int ctl, status;
- unsigned long flags;

- spin_lock_irqsave(&i2c_imx->slave_lock, flags);
+ guard(spinlock_irqsave)(&i2c_imx->slave_lock);
+
status = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR);
ctl = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR);
i2c_imx_slave_handle(i2c_imx, status, ctl);
- spin_unlock_irqrestore(&i2c_imx->slave_lock, flags);
+
return HRTIMER_NORESTART;
}

@@ -1125,32 +1126,26 @@ static irqreturn_t i2c_imx_isr(int irq, void *dev_id)
{
struct imx_i2c_struct *i2c_imx = dev_id;
unsigned int ctl, status;
- unsigned long flags;

- spin_lock_irqsave(&i2c_imx->slave_lock, flags);
- status = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR);
- ctl = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR);
+ scoped_guard(spinlock_irqsave, &i2c_imx->slave_lock) {
+ status = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR);
+ ctl = imx_i2c_read_reg(i2c_imx, IMX_I2C_I2CR);
+
+ if (!(status & I2SR_IIF))
+ return IRQ_NONE;

- if (status & I2SR_IIF) {
i2c_imx_clear_irq(i2c_imx, I2SR_IIF);
+
if (i2c_imx->slave) {
- if (!(ctl & I2CR_MSTA)) {
- irqreturn_t ret;
-
- ret = i2c_imx_slave_handle(i2c_imx,
- status, ctl);
- spin_unlock_irqrestore(&i2c_imx->slave_lock,
- flags);
- return ret;
- }
+ if (!(ctl & I2CR_MSTA))
+ return i2c_imx_slave_handle(i2c_imx,
+ status, ctl);
+
i2c_imx_slave_finish_op(i2c_imx);
}
- spin_unlock_irqrestore(&i2c_imx->slave_lock, flags);
- return i2c_imx_master_isr(i2c_imx, status);
}
- spin_unlock_irqrestore(&i2c_imx->slave_lock, flags);

- return IRQ_NONE;
+ return i2c_imx_master_isr(i2c_imx, status);
}

static int i2c_imx_dma_write(struct imx_i2c_struct *i2c_imx,

--
2.34.1



Return-Path: <linux-kernel+bounces-668974-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9C56D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 02:58:23 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 7C1C74E17B2
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:58:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8230B207DFE;
Sat, 31 May 2025 06:57:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="edwMxnAq"
Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6827E22DFAC;
Sat, 31 May 2025 06:57:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.193
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674678; cv=none; b=ahU8HECOGBZRqGSV5ACsx8QyLbRHIvoDm4EFHx1/avMynsems7KK6lo6+f2PdeufSqDv9s7Vz5x3AiZKvHj0UkRohcHyk7Z6ml8wxFNmgXIETFPFwlfulxrbhafHrInbPwuj6uJxHMlwk8CUBQ2q2WONAExFKpwmkGWWSphVJMc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674678; c=relaxed/simple;
bh=kQKAVOjABu4DOdsXyMCztP9egiM+XBu9UnlB89Vw2+Y=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=baBzSnNpF0TvpNVtN7t+H764ULgYwYYSTXwbTvuFz3RUPYkFB8j6RrKWQCdMeDXr6YE8nkVcchKhusmNyHu1dY2wR+dFaCILnR45+LQUb4Zg1+dUQyud0lRWZ6pC/Pvpj2llowcHX2fYO6sBa+FZj/DtnZlSTvQg7yzPeeNR8bI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=edwMxnAq; arc=none smtp.client-ip=209.85.214.193
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f193.google.com with SMTP id d9443c01a7336-23508d30142so29113675ad.0;
Fri, 30 May 2025 23:57:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674676; x=1749279476; darn=vger.kernel.org;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:mime-version:subject:date:from:from:to:cc:subject:date:message-id
:reply-to;
bh=apGGcoxP8Ev99mNcn6Y1E8dxFRDON+SAO6rocvuISrs=;
b=edwMxnAqZUSwZfNMMfG9fpAuYSFBoki3IsNJjTc0oOqF8zBCwEKiVIu1NbPew9yBf6
6JW9WxjFpQzocL0Oc0+823iC0Jqm7o5a0dDQDXR1BGapnaH1ndKD4NB+TMZlGo+vh1PG
VvHh6q6bqpBZVPoW7NI7hXoHRr4D0Kx2nO8nbAXocMADZRdcmm7J3BWODPFAct+BFnz/
8AC6Nujcrq4Err4fARkU2nvfBFhjJ+LPC3QVbkxCBe2w6HKMaxdt1NQMM7wtWHcBMDdI
Bw+LeL8+nMhjIoBHO+BKLkgYo89xTH1UF9Y8+cg6zcWdy7zKb3mvfEHJq4N53l9L5PCA
e05g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674676; x=1749279476;
h=cc:to:in-reply-to:references:message-id:content-transfer-encoding
:mime-version:subject:date:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=apGGcoxP8Ev99mNcn6Y1E8dxFRDON+SAO6rocvuISrs=;
b=D5sgjlWoaDp1JV87MIl9n61ORLuyLNmsfcOMwtAYWcx4XfqSjKU2CpopuSF0qEZgQL
RJXC49DOXs3uWTfZNy8NJHasg1+8ZdmcIXf7rxT4e4Moqfz15LLe52pnZwvU5kFzytGk
cQgqWJbIR8NQaoojBn//vHxloSJJKiYO+onLWgD8qwFDGkTTqf1sm80lAL6/eA3voYnF
Hd/Ay8clP5RYl/QS4xtRYbUAtRiqM6FBGRPcEFOu1naRi/89mjRhvzJMZ6qYpi59mbJ+
kouZJ0xzzYidNSwTTNxX8vzM8/Faebhv6CLRbp3FdK732wHEXkjlX5NeyeFoDvbcYKTa
7VLw==
X-Forwarded-Encrypted: i=1; AJvYcCVSzRNRZEizQ+pXwX17yxRXTn8yNEvNcDPUfxaFdRUOb08ghkhN6TLfEBInx0kymQPTjTrPn6cGcp3IOoo=@vger.kernel.org
X-Gm-Message-State: AOJu0YzlrEv43IVhog4PxxwqU19odTkRlPLKd0gb+CzZj64IeR8UoxUQ
BVASSRmLidv48SE4bNvi9mTHc/7iuIC5Kav4HT/O06PJuTuvpEVokeHmjUDjW9SVH2BOjQ==
X-Gm-Gg: ASbGncvPiFD6yA1EfrVieyh07qfP1xOMJoUbPlTOrCipmF4q9Kc9mz/8VxIovgziPNT
zQ/cyxY+MMl+5OETW9Cl/gIqD0GD4dVCAsdndT3L1xuNgf8XCE6IBr1MvhRfa3I6ASnE/SNdj4i
7kIThBpujLLfULU90aWv3OHnXwb3MwLrSY0Uad3GzPGSjX1jHa4Vn26BIekRI8F3n5rUMig1jIM
kGD1IP4BHqhAa6ngEeWKtpvfTzeA7RjEP9bxvpwkpnsSQpgKifQk75gbtgMLcVUuo0LBLBV1jVw
P8PfnMLVEiiob7eLBRvML0N6z3b6R1ama4A=
X-Google-Smtp-Source: AGHT+IEZEi9SjcI+3gdNIx2vN1L8Jdx9YJrveBMTkReaRTGrreg8M6bTR+tIvp8XdcV58kFMe1FPxg==
X-Received: by 2002:a17:902:ec8e:b0:234:e655:a627 with SMTP id d9443c01a7336-235395d6680mr70877965ad.35.1748674676483;
Fri, 30 May 2025 23:57:56 -0700 (PDT)
Received: from [127.0.1.1] ([2602:f919:106::1b8])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506cf5448sm37596625ad.185.2025.05.30.23.57.49
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Fri, 30 May 2025 23:57:55 -0700 (PDT)
From: Troy Mitchell <troymitchell988@xxxxxxxxx>
Date: Sat, 31 May 2025 14:57:27 +0800
Subject: [PATCH v4 2/2] i2c: imx: drop master prefix
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-i2c-imx-update-v4-2-bfad0c8fd45c@xxxxxxxxx>
References: <20250531-i2c-imx-update-v4-0-bfad0c8fd45c@xxxxxxxxx>
In-Reply-To: <20250531-i2c-imx-update-v4-0-bfad0c8fd45c@xxxxxxxxx>
To: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>,
Pengutronix Kernel Team <kernel@xxxxxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>, Shawn Guo <shawnguo@xxxxxxxxxx>,
Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>, Fabio Estevam <festevam@xxxxxxxxx>
Cc: linux-i2c@xxxxxxxxxxxxxxx, imx@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Troy Mitchell <troymitchell988@xxxxxxxxx>, Yongchao Jia <jyc0019@xxxxxxxxx>,
Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>, Carlos Song <carlos.song@xxxxxxx>
X-Mailer: b4 0.14.1
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748674650; l=973;
i=troymitchell988@xxxxxxxxx; h=from:subject:message-id;
bh=kQKAVOjABu4DOdsXyMCztP9egiM+XBu9UnlB89Vw2+Y=;
b=pU3nS5K/z91d8OcdBox2f63zfxUhxWUPLtlrhjoZVy21l+Y9Pw4XxYTZL8coyx6XZu9rmRwCT
DefaDA6YghUCOJT2/YpR3id0q8qHsCsTy1UXDct+TsQiQB89grxhXZw
X-Developer-Key: i=troymitchell988@xxxxxxxxx; a=ed25519;
pk=2spEMGBd/Wkpd36N1aD9KFWOk0aHrhVxZQt+jxLXVC0=
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

In light of the recent updates to the i2c subsystem,
drop master prefix.

Reviewed-by: Ahmad Fatoum <a.fatoum@xxxxxxxxxxxxxx>
Reviewed-by: Carlos Song <carlos.song@xxxxxxx>
Acked-by: Oleksij Rempel <o.rempel@xxxxxxxxxxxxxx>
Signed-off-by: Troy Mitchell <troymitchell988@xxxxxxxxx>
---
drivers/i2c/busses/i2c-imx.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 5b276e007292..d85adfb73bac 100644
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -1687,8 +1687,8 @@ static u32 i2c_imx_func(struct i2c_adapter *adapter)
}

static const struct i2c_algorithm i2c_imx_algo = {
- .master_xfer = i2c_imx_xfer,
- .master_xfer_atomic = i2c_imx_xfer_atomic,
+ .xfer = i2c_imx_xfer,
+ .xfer_atomic = i2c_imx_xfer_atomic,
.functionality = i2c_imx_func,
.reg_slave = i2c_imx_reg_slave,
.unreg_slave = i2c_imx_unreg_slave,

--
2.34.1



Return-Path: <linux-kernel+bounces-668975-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7E7B141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:01:03 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 05A2E7AAA49
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:59:44 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A5CCE22E3E0;
Sat, 31 May 2025 07:00:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mXc6ro2c"
Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB60C35949;
Sat, 31 May 2025 07:00:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.172
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674853; cv=none; b=ZQ1oTpEOW6yxWIaivGjb9LKhu8kqxCn/R9j9BNWMR5Ht92HRYtyD2iNJzkA/WuUmOR9rcQDbtexbqnaVZTlaruoa0JJ77oyx6iPdXGBWRhqxxAd5SekWJm6f5CMU3d0mYHJXZ26r0F2mGpWqGoDLeD6jX85Trm7KmZTN741CDdY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674853; c=relaxed/simple;
bh=xNtSKnlo3ooiXUucFc3Lir6rDSSBwUqAmtThG9rzzwE=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=HY/zSDfFuZPvU2oOeBYEzIYspXL1VCNpRCB37MvqC4oov/Yvk4y7VfWUx6lzs7nS56cpl8ynJWNo+uO7vZW+lGojp6ggcZcAsT621+HgLhFyv9cSFl8HkERFPrfZvK4mucmOQbV2dZsvkzNZ0JGOmER43LVV9PB4JxWRPa8JNpU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mXc6ro2c; arc=none smtp.client-ip=209.85.208.172
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-32a63ff3bdfso21948201fa.3;
Sat, 31 May 2025 00:00:51 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674850; x=1749279650; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=O0/6i247A0yd7g/ohON1pSpOBinIfrLgbq10zNbzL4E=;
b=mXc6ro2cIDj+vLO18qqH/lvUmJpwMuksLTSh0Y558b5EOlwx7vjW5nxySR/5lQr7yT
9PNN16UCw7YB7E0KPmrYJBzXvLcuyZfp8Ju9gcRi1U9DU/GEEgooPQ0SHdWg4SzD7Bvy
z8s6LMlV4IR+roBaAj8V9JgHYLxTu0+ijFxYBkWZVBYavDJy7gYW7O0wx3iXcHSg6l8B
Oqjk3Xh9bRikAD0DYAA1aisHlzOTUSI4m1CgO84o5kIijdQPnKoDlx4gtYgLUAdDUMcd
z7WyNpy6dY3VWlsCPshoP538DQmm1HpTXVM8Sf+kJesGDxZDFr8HBbTSfZ1y2dWVqqoO
5IIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674850; x=1749279650;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=O0/6i247A0yd7g/ohON1pSpOBinIfrLgbq10zNbzL4E=;
b=OauxO4/XxjYr9fb+MAS0FmnSEGg4AFDu35Mh8XWwCrg7XXGC+T/gLj3hdynZ47gBtN
IeswK5qGnLCyoLVWu9Ww4f+taR1gY4Lv/JHpGxlFZ0sK4bs6ZYu5xllBj9RobW0t9dta
yL5H3/TSTt70142HPXwIjtFO2/QEd++0hTsOeSBnNRkxAOQCffJpt5SO+SHPUg8MjLKc
7MvTYuSDj7XePtfS8OuQXyjZO/KCQJzfzI/Mcr6RxRCxrZMK23adOAiihBjgem5coqJn
P3K/7slHXkYiL/uL/Ul8y82MJ58g1lRwQPa3M1S+/ZMXUbTN4gdSMbavT55eKtGS33HE
hQaQ==
X-Forwarded-Encrypted: i=1; AJvYcCV7AVZl5TqNZ9d7PIoPhfGHDZg+xKLjUIxmcabYuktOZPPn44eB9KINoeeKQoLMY/fRUQIHKPlCl3j4vmw=@vger.kernel.org, AJvYcCVoIodLQbgUgtEthHim5SZ8tR/2XuwQ3qSYEwmwS0VzBRU++pSDzYJXkJpSjdVXUJxC1xCVuFzj@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YzwZAbtHuMEQaS6IBWEtOuyzdufwNppq8FY229Hz25XZ0uHOd2J
6KCecZ/LgBv1WvvnmxTUd4T5oOgg4FNe2YhIEFTlpkCxTymZ0ZD56LQ1iA7xq0a0yBsCnrBOVey
pf6t19qwIKl7A6MT1CygVeT5O7/GGM8uksTnsUe/w8Q==
X-Gm-Gg: ASbGncviTjK7PXWPIVOjdgOrDyB1ZimSKqpDGfU0nEWeuGJCIAqcmcN5bcZaSSIwGIx
SrM0+hpMrNbJVC4QnfY/SzSwJmLA39Wvi68aWMGlrndqlBCk3BjnvsMdCWqk6UdpzgAhn01K86l
eNqZi+fvGCoEUjDVyKLt5eASLDeMKLrlAdIfNNADBLKMg=
X-Google-Smtp-Source: AGHT+IFQfYTOUKoUQsoKvjrVG8EjikBueS9mdC3qCctGVd586bN2S/4pCQTvJwmEnsD58/V2Q3nlHbLroDe2+EGI8A8=
X-Received: by 2002:a05:651c:b1f:b0:32a:8bf4:3a54 with SMTP id
38308e7fff4ca-32a9e99b639mr3723201fa.2.1748674849519; Sat, 31 May 2025
00:00:49 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
<CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
<CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx> <CAGsJ_4yJhJBo16XhiC-nUzSheyX-V3-nFE+tAi=8Y560K8eT=A@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4yJhJBo16XhiC-nUzSheyX-V3-nFE+tAi=8Y560K8eT=A@xxxxxxxxxxxxxx>
From: Kairui Song <ryncsn@xxxxxxxxx>
Date: Sat, 31 May 2025 15:00:31 +0800
X-Gm-Features: AX0GCFuLqGZrssa2ETQMnuocMxOiKaSYx_nnjXGgLT7jaHa6QNo6cy-ULN9-bYc
Message-ID: <CAMgjq7BzBFTOb-urmfuF5y6qsWxwFMy0Eq=Fym+2x2pjcqg1fQ@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Barry Song <21cnbao@xxxxxxxxx>
Cc: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 2:36=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 6:25=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 11:39=E2=80=AFAM Barry Song <21cnbao@xxxxxxxxx>=
wrote:
> > >
> > > On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidra@go=
ogle.com> wrote:
> > > >
> > > > On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@gmail.c=
om> wrote:
> > > > >
> > > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > > >
> > > > > On seeing a swap entry PTE, userfaultfd_move does a lockless swap=
cache
> > > > > lookup, and try to move the found folio to the faulting vma when.
> > > > > Currently, it relies on the PTE value check to ensure the moved f=
olio
> > > > > still belongs to the src swap entry, which turns out is not relia=
ble.
> > > > >
> > > > > While working and reviewing the swap table series with Barry, fol=
lowing
> > > > > existing race is observed and reproduced [1]:
> > > > >
> > > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is a
> > > > > swap entry PTE holding swap entry S1, and S1 isn't in the swap c=
ache.)
> > > > >
> > > > > CPU1 CPU2
> > > > > userfaultfd_move
> > > > > move_pages_pte()
> > > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > // Here it got entry =3D S1
> > > > > ... < Somehow interrupted> ...
> > > > > <swapin src_pte, alloc and use=
folio A>
> > > > > // folio A is just a new alloc=
ated folio
> > > > > // and get installed into src_=
pte
> > > > > <frees swap entry S1>
> > > > > // src_pte now points to folio=
A, S1
> > > > > // has swap count =3D=3D 0, it=
can be freed
> > > > > // by folio_swap_swap or swap
> > > > > // allocator's reclaim.
> > > > > <try to swap out another folio=
B>
> > > > > // folio B is a folio in anoth=
er VMA.
> > > > > <put folio B to swap cache usi=
ng S1 >
> > > > > // S1 is freed, folio B could =
use it
> > > > > // for swap out with no proble=
m.
> > > > > ...
> > > > > folio =3D filemap_get_folio(S1)
> > > > > // Got folio B here !!!
> > > > > ... < Somehow interrupted again> ...
> > > > > <swapin folio B and free S1>
> > > > > // Now S1 is free to be used a=
gain.
> > > > > <swapout src_pte & folio A usi=
ng S1>
> > > > > // Now src_pte is a swap entry=
pte
> > > > > // holding S1 again.
> > > > > folio_trylock(folio)
> > > > > move_swap_pte
> > > > > double_pt_lock
> > > > > is_pte_pages_stable
> > > > > // Check passed because src_pte =3D=3D S1
> > > > > folio_move_anon_rmap(...)
> > > > > // Moved invalid folio B here !!!
> > > > >
> > > > > The race window is very short and requires multiple collisions of
> > > > > multiple rare events, so it's very unlikely to happen, but with a
> > > > > deliberately constructed reproducer and increased time window, it=
can be
> > > > > reproduced [1].
> > > >
> > > > Thanks for catching and fixing this. Just to clarify a few things
> > > > about your reproducer:
> > > > 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> > > > MAP_PRIVATE will work as well?
> > > > 2. You mentioned that the 'current dir is on a block device'. Are y=
ou
> > > > indicating that if we are using zram for swap then it doesn't
> > > > reproduce?
> > > >
> > > > >
> > > > > It's also possible that folio (A) is swapped in, and swapped out =
again
> > > > > after the filemap_get_folio lookup, in such case folio (A) may st=
ay in
> > > > > swap cache so it needs to be moved too. In this case we should al=
so try
> > > > > again so kernel won't miss a folio move.
> > > > >
> > > > > Fix this by checking if the folio is the valid swap cache folio a=
fter
> > > > > acquiring the folio lock, and checking the swap cache again after
> > > > > acquiring the src_pte lock.
> > > > >
> > > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but s=
o far
> > > > > we don't need to worry about that since folios only might get exp=
osed to
> > > > > swap cache in the swap out path, and it's covered in this patch t=
oo by
> > > > > checking the swap cache again after acquiring src_pte lock.
> > > > >
> > > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ0-=
tqCzi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > ---
> > > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > > 1 file changed, 26 insertions(+)
> > > > >
> > > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > > index bc473ad21202..a1564d205dfb 100644
> > > > > --- a/mm/userfaultfd.c
> > > > > +++ b/mm/userfaultfd.c
> > > > > @@ -15,6 +15,7 @@
> > > > > #include <linux/mmu_notifier.h>
> > > > > #include <linux/hugetlb.h>
> > > > > #include <linux/shmem_fs.h>
> > > > > +#include <linux/delay.h>
> > > > I guess you mistakenly left it from your reproducer code :)
> > > > > #include <asm/tlbflush.h>
> > > > > #include <asm/tlb.h>
> > > > > #include "internal.h"
> > > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct *=
mm, struct vm_area_struct *dst_vma,
> > > > > spinlock_t *dst_ptl, spinlock_t *src_ptl=
,
> > > > > struct folio *src_folio)
> > > > > {
> > > > > + swp_entry_t entry;
> > > > > +
> > > > > double_pt_lock(dst_ptl, src_ptl);
> > > > >
> > > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, =
orig_src_pte,
> > > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struct =
*mm, struct vm_area_struct *dst_vma,
> > > > > if (src_folio) {
> > > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > > src_folio->index =3D linear_page_index(dst_vma, d=
st_addr);
> > > > > + } else {
> > > > > + /*
> > > > > + * Check again after acquiring the src_pte lock. =
Or we might
> > > > > + * miss a new loaded swap cache folio.
> > > > > + */
> > > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > + src_folio =3D filemap_get_folio(swap_address_spac=
e(entry),
> > > > > + swap_cache_index(en=
try));
> > > >
> > > > Given the non-trivial overhead of filemap_get_folio(), do you think=
it
> > > > will work if filemap_get_filio() was only once after locking src_pt=
l?
> > > > Please correct me if my assumption about the overhead is wrong.
> > >
> > > not quite sure as we have a folio_lock(src_folio) before move_swap_pt=
e().
> > > can we safely folio_move_anon_rmap + src_folio->index while not holdi=
ng
> > > folio lock?
> >
> > I think no, we can't even make sure the folio is still in the swap
> > cache, so it can be a freed folio that does not belong to any VMA
> > while not holding the folio lock.
>
> Right, but will the following be sufficient, given that we don=E2=80=99t =
really
> care about the folio=E2=80=94only whether there=E2=80=99s new cache?
>
> if (READ_ONCE(si->swap_map[offset]) & SWAP_HAS_CACHE) {
> double_pt_unlock(dst_ptl, src_ptl);
> return -EAGAIN;
> }

The problem is reading swap_map without locking the cluster map seems
unstable, and has strange false positives, a swapin will set this bit
first, while not adding the folio to swap cache or even when skipping
the swap cache, that seems could make it more complex.


Return-Path: <linux-kernel+bounces-668976-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7E98E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:03:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id D87B717A86F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:03:08 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 350F62343C0;
Sat, 31 May 2025 07:03:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OG83xyDa"
Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id BEF803398B;
Sat, 31 May 2025 07:02:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748674981; cv=none; b=hUtBi0DaCvfb3azRcQ4fZKEBlmI4WsB/26EfSFEJEHe05mPLEHtnU1CXj0kSQ0o0oOcvGwnKveost4ikSYHbCOK5nf1NAMSSpvjQosHy1/uaj+gmLYV4fvrDBu6JzZQjntxU8SDr5pHEDkf842qd6+VLL4rBvqi0wOypfkOMtas=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748674981; c=relaxed/simple;
bh=DswE2TwuuIytt3LvxEg3WwL0l+4g2d16uTME9WzPi2c=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=A+QSfPhzFQES/6ZjbG3oQAtnzcrzfIGja4jLR5OnC8S5izhQOjAyhz+iRYnFnM2Ne+vF2LGk9asIukLAyFNzh+FjOw99R17i0x4GZjDo3F6uEbPVu/Z/CCaBrPrEUDeBzcssdwdwRYbpTjeZZkdnb43zjgy2g/T9m4uDxIFYrUI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OG83xyDa; arc=none smtp.client-ip=209.85.210.171
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-747d59045a0so53490b3a.1;
Sat, 31 May 2025 00:02:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748674979; x=1749279779; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=vaJSKOBzeU+bQnzHBt7Umgn5ZEd7j+MngwkiV+M03AY=;
b=OG83xyDaXorMyfkOW3PlRDn76lyX0DmA005Wf5raZigVy8cE9pIzcCDnShGURXrVQv
VwvuUCVN8ZQIbEXgjOR852cj5WUpRoaB63SzqJHa9oXmtXAvyKqxwRqnTqhhhBjjiS1p
kqmvP/y7sFx2RTe1Rrc4pWeVefMZ/7DhpgRLVDVCbVswQCBBEdCs7R+fr0JnItgBqy+m
ugnlc1UaILP01xW6uX6J5IJulPdYivWR89WZ2ZjxtZ4NWUXU0kCe78IOiTGewynOwFuZ
2NNe3IIqdSbcyeRcj+i3lBOsFGfUFQ6In0MB0v6nxXnsJKvreXWy3iB6O9NPBPFbmdWo
65VQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748674979; x=1749279779;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=vaJSKOBzeU+bQnzHBt7Umgn5ZEd7j+MngwkiV+M03AY=;
b=QjPAYAF2/ZEBd1Y/wwGHxyoR8zAXQqhE2/quEWazk9DXo/0UOiNk0caQaRd+f3iPI0
0haMjnjnYIKdk9rr3bgD/g1OO+8bZ1Gn9fvO99ZAzTZfj3MlvwkXUUsDPa616IOxbEB0
d8WvjLYTDpIzAFuPljqPET/rH2Y1HNDAhcByQFKkXdNUUcgJGo5hzjRbccmoKCqBHtsz
MxBVIew/1M0xF1VVTRzRQHgKBq7Td5Vg7M9Z3yy9tnOfKMxfpuXkq2cbvY4ECBz0rl6y
lXOgCW0kmEJrw17lRolpah6J2D1O+ZCdO/UhbdaCJceyLOPNS3GjSMSqL966lHCnbRpm
PY/g==
X-Forwarded-Encrypted: i=1; AJvYcCViulKgIpusuEBwxkdt/quKCxwXh+nm0Rl9e9AVpymJLWRf6rEhqVUMPdOR2aYhdv8aXBHbmTBtej3P11U=@vger.kernel.org, AJvYcCWlO22aQlkyb/YkPPzhpSWolrk+ORvjqTMbBSpkeoo2cDUsSVNAfmIRwsZ5n7h8T0cc2p3MwvZV6HI3LqQLqU7m@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyuYiA7aiaKhVv41J/fCQ/676ZZomfigeJPt+sjsbI3Iy2Mze6g
6u32lRvkqHUm7DqJjYakUF9TvumCnaEjIgKurLIymvre4MdzzJFmEj/I
X-Gm-Gg: ASbGncvLeDxfD3pmFsaydmsvpT0nPaIEnc65jZTiFgY4k29HYqk0+6LhQDSDw42TtZt
gsrZwmcQSL8OWMsa7YkeWybIZQWMopGnte9mz4eNOt8YuXgVoUAQaA3nLb2VGZbQ+9SbUEQb/b+
lk6gOo8uZ/4Dj4DuRUlic+XUs1QGH3CrW1Y0mveUQry70dFbAf8RmYhqdZbJ0wj/AscJCFlW8WM
zrMyGMZkdN5rIZ1N+KuYSvZFyspWGEn04RmiL4rqU/0IgTespj3QQrXIdGQ+gyZs0RczOjIfhyf
aFjSioYiT44sV1bfgB6qcvlejgk8gLEzUnx7t3AexbmXzT3uR+Ce4HEqKhtjxK7CoOXzzOuh7I+
LvUcm6uG4JIHUMaqGoVFKpyM+rSxUO2CvTiyy17OBAg==
X-Google-Smtp-Source: AGHT+IGh3EaAtFlrfSeI9IH8D1uOTK4HYia9JvlVMLpWPHep8rlmidI+sAlX9uRRm9NAevjP+iAWQg==
X-Received: by 2002:a05:6a20:3ca5:b0:203:becd:f9ce with SMTP id adf61e73a8af0-21ae00ce772mr6822768637.39.1748674978829;
Sat, 31 May 2025 00:02:58 -0700 (PDT)
Received: from localhost.localdomain (114-136-199-106.emome-ip.hinet.net. [114.136.199.106])
by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b2eceb29a39sm2116126a12.22.2025.05.31.00.02.56
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 00:02:58 -0700 (PDT)
From: Nick Huang <sef1548@xxxxxxxxx>
To: shuah@xxxxxxxxxx,
linux-kselftest@xxxxxxxxxxxxxxx
Cc: usama.anjum@xxxxxxxxxxxxx,
zhangjiao2@xxxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Nick Huang <sef1548@xxxxxxxxx>
Subject: [PATCH] selftests: ipc: Replace fail print statements with ksft_test_result_fail
Date: Sat, 31 May 2025 15:01:40 +0800
Message-ID: <20250531070140.24287-1-sef1548@xxxxxxxxx>
X-Mailer: git-send-email 2.48.1
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Use the standard kselftest failure report function to ensure consistent
test output formatting. This improves readability and integration with
automated test frameworks.

Signed-off-by: Nick Huang <sef1548@xxxxxxxxx>
---
tools/testing/selftests/ipc/msgque.c | 47 ++++++++++++++--------------
1 file changed, 23 insertions(+), 24 deletions(-)

diff --git a/tools/testing/selftests/ipc/msgque.c b/tools/testing/selftests/ipc/msgque.c
index e9dbb84c100a..5e36aeeb9901 100644
--- a/tools/testing/selftests/ipc/msgque.c
+++ b/tools/testing/selftests/ipc/msgque.c
@@ -39,26 +39,26 @@ int restore_queue(struct msgque_data *msgque)

fd = open("/proc/sys/kernel/msg_next_id", O_WRONLY);
if (fd == -1) {
- printf("Failed to open /proc/sys/kernel/msg_next_id\n");
+ ksft_test_result_fail("Failed to open /proc/sys/kernel/msg_next_id\n");
return -errno;
}
sprintf(buf, "%d", msgque->msq_id);

ret = write(fd, buf, strlen(buf));
if (ret != strlen(buf)) {
- printf("Failed to write to /proc/sys/kernel/msg_next_id\n");
+ ksft_test_result_fail("Failed to write to /proc/sys/kernel/msg_next_id\n");
return -errno;
}

id = msgget(msgque->key, msgque->mode | IPC_CREAT | IPC_EXCL);
if (id == -1) {
- printf("Failed to create queue\n");
+ ksft_test_result_fail("Failed to create queue\n");
return -errno;
}

if (id != msgque->msq_id) {
- printf("Restored queue has wrong id (%d instead of %d)\n",
- id, msgque->msq_id);
+ ksft_test_result_fail("Restored queue has wrong id (%d instead of %d)\n"
+ , id, msgque->msq_id);
ret = -EFAULT;
goto destroy;
}
@@ -66,7 +66,7 @@ int restore_queue(struct msgque_data *msgque)
for (i = 0; i < msgque->qnum; i++) {
if (msgsnd(msgque->msq_id, &msgque->messages[i].mtype,
msgque->messages[i].msize, IPC_NOWAIT) != 0) {
- printf("msgsnd failed (%m)\n");
+ ksft_test_result_fail("msgsnd failed (%m)\n");
ret = -errno;
goto destroy;
}
@@ -90,23 +90,22 @@ int check_and_destroy_queue(struct msgque_data *msgque)
if (ret < 0) {
if (errno == ENOMSG)
break;
- printf("Failed to read IPC message: %m\n");
+ ksft_test_result_fail("Failed to read IPC message: %m\n");
ret = -errno;
goto err;
}
if (ret != msgque->messages[cnt].msize) {
- printf("Wrong message size: %d (expected %d)\n", ret,
- msgque->messages[cnt].msize);
+ ksft_test_result_fail("Wrong message size: %d (expected %d)\n", ret, msgque->messages[cnt].msize);
ret = -EINVAL;
goto err;
}
if (message.mtype != msgque->messages[cnt].mtype) {
- printf("Wrong message type\n");
+ ksft_test_result_fail("Wrong message type\n");
ret = -EINVAL;
goto err;
}
if (memcmp(message.mtext, msgque->messages[cnt].mtext, ret)) {
- printf("Wrong message content\n");
+ ksft_test_result_fail("Wrong message content\n");
ret = -EINVAL;
goto err;
}
@@ -114,7 +113,7 @@ int check_and_destroy_queue(struct msgque_data *msgque)
}

if (cnt != msgque->qnum) {
- printf("Wrong message number\n");
+ ksft_test_result_fail("Wrong message number\n");
ret = -EINVAL;
goto err;
}
@@ -139,7 +138,7 @@ int dump_queue(struct msgque_data *msgque)
if (ret < 0) {
if (errno == EINVAL)
continue;
- printf("Failed to get stats for IPC queue with id %d\n",
+ ksft_test_result_fail("Failed to get stats for IPC queue with id %d\n",
kern_id);
return -errno;
}
@@ -150,7 +149,7 @@ int dump_queue(struct msgque_data *msgque)

msgque->messages = malloc(sizeof(struct msg1) * ds.msg_qnum);
if (msgque->messages == NULL) {
- printf("Failed to get stats for IPC queue\n");
+ ksft_test_result_fail("Failed to get stats for IPC queue\n");
return -ENOMEM;
}

@@ -162,7 +161,7 @@ int dump_queue(struct msgque_data *msgque)
ret = msgrcv(msgque->msq_id, &msgque->messages[i].mtype,
MAX_MSG_SIZE, i, IPC_NOWAIT | MSG_COPY);
if (ret < 0) {
- printf("Failed to copy IPC message: %m (%d)\n", errno);
+ ksft_test_result_fail("Failed to copy IPC message: %m (%d)\n", errno);
return -errno;
}
msgque->messages[i].msize = ret;
@@ -178,7 +177,7 @@ int fill_msgque(struct msgque_data *msgque)
memcpy(msgbuf.mtext, TEST_STRING, sizeof(TEST_STRING));
if (msgsnd(msgque->msq_id, &msgbuf.mtype, sizeof(TEST_STRING),
IPC_NOWAIT) != 0) {
- printf("First message send failed (%m)\n");
+ ksft_test_result_fail("First message send failed (%m)\n");
return -errno;
}

@@ -186,7 +185,7 @@ int fill_msgque(struct msgque_data *msgque)
memcpy(msgbuf.mtext, ANOTHER_TEST_STRING, sizeof(ANOTHER_TEST_STRING));
if (msgsnd(msgque->msq_id, &msgbuf.mtype, sizeof(ANOTHER_TEST_STRING),
IPC_NOWAIT) != 0) {
- printf("Second message send failed (%m)\n");
+ ksft_test_result_fail("Second message send failed (%m)\n");
return -errno;
}
return 0;
@@ -202,44 +201,44 @@ int main(int argc, char **argv)

msgque.key = ftok(argv[0], 822155650);
if (msgque.key == -1) {
- printf("Can't make key: %d\n", -errno);
+ ksft_test_result_fail("Can't make key: %d\n", -errno);
ksft_exit_fail();
}

msgque.msq_id = msgget(msgque.key, IPC_CREAT | IPC_EXCL | 0666);
if (msgque.msq_id == -1) {
err = -errno;
- printf("Can't create queue: %d\n", err);
+ ksft_test_result_fail("Can't create queue: %d\n", err);
goto err_out;
}

err = fill_msgque(&msgque);
if (err) {
- printf("Failed to fill queue: %d\n", err);
+ ksft_test_result_fail("Failed to fill queue: %d\n", err);
goto err_destroy;
}

err = dump_queue(&msgque);
if (err) {
- printf("Failed to dump queue: %d\n", err);
+ ksft_test_result_fail("Failed to dump queue: %d\n", err);
goto err_destroy;
}

err = check_and_destroy_queue(&msgque);
if (err) {
- printf("Failed to check and destroy queue: %d\n", err);
+ ksft_test_result_fail("Failed to check and destroy queue: %d\n", err);
goto err_out;
}

err = restore_queue(&msgque);
if (err) {
- printf("Failed to restore queue: %d\n", err);
+ ksft_test_result_fail("Failed to restore queue: %d\n", err);
goto err_destroy;
}

err = check_and_destroy_queue(&msgque);
if (err) {
- printf("Failed to test queue: %d\n", err);
+ ksft_test_result_fail("Failed to test queue: %d\n", err);
goto err_out;
}
ksft_exit_pass();
--
2.48.1



Return-Path: <linux-kernel+bounces-668977-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E121141E003FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:06:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id D13351895519
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:07:09 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4E2F723504B;
Sat, 31 May 2025 07:06:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D9xk5HjI"
Received: from mail-vs1-f53.google.com (mail-vs1-f53.google.com [209.85.217.53])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8300322D7BF;
Sat, 31 May 2025 07:06:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.53
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675208; cv=none; b=WITumDNcTi90x4cIOSaJqxf1sj5+nIcgVbtQ0hHA8ft9ySiDN0YSlwQ7GcrRkzchI+hakyC+rtpGqP/okIxIfF5ea01uqj8brhhLRJtfNLnkG1Q2ufJgp1H6o6UnxqkTcjloXSORm+EVWMp565qn17/Wn9Yk5u6rWqfueBVZmNI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675208; c=relaxed/simple;
bh=YWsRLOax1JIeCZ+RG0ps7GRDmgt/6FuZ/dOmn2tWD08=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=M/DXSn95KGvKidoRkStIaidviZhzklrhE85t14nvHKPUgjbm/Idmpo8vMCepIDZM1H8uNR+w3mLXv/bgrVpodZtWGSedk6ojc8FqHIDBIdDojHllqE4LNqXgVAW68ogxnnPg0NgDQEH70mO5n57ff+9+7lTl1lOi8okdnUeuJHo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=D9xk5HjI; arc=none smtp.client-ip=209.85.217.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vs1-f53.google.com with SMTP id ada2fe7eead31-4e701c53c84so214124137.0;
Sat, 31 May 2025 00:06:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748675205; x=1749280005; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=SsTeU4EFLHIlrLb9s8RD2uX61gMjvlIv64R2i/tB+3M=;
b=D9xk5HjIgvz+ttXHcxfxTNMoZIzeG0/dA7vXmGUo1dlB7OJP7kX0ghW0U9E59dnLVU
TiE3/OF/HiLl4MYaZPuA3bDgF7lcjyY4AtpW0NVznFP2+bPcBehevykxMFrzwszWVX3W
DoOaGWK6Q3I+w57MoaolC9xpyXs9WXY/AdU1ugVyiX5NSsu+ZjYJgfka5JSZEwQs/9Xy
31dhl/1BjJuxUKJLnYDfmV+osUOwb/00SQr0kQeM3P21keaz2kPyZl0MqB6SSZ0hKMkt
slNrRK6ah5+fzKZdarDuEz1alZGcldslTjJ4kD+4BdS7JqcBTZ+g3ojAXyMRL+rYGTry
rrJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748675205; x=1749280005;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=SsTeU4EFLHIlrLb9s8RD2uX61gMjvlIv64R2i/tB+3M=;
b=u4Y7ok/t8f3EXcW40UHlliERC87XfBKj9rnDVcetD42yHpNM0tqJnEcBJrE9uiOrnC
NQpviI0nBFFv1C341/xu0B8j6TtIJI4hgV3zCkHdrYGUNFWHlHcfOeiXt+a1Sa0OWfcp
z1m15i6l1xPeIA64Sm6kMU44uKcD2aMD3f7kgW37HuJWzo82sUGso0jiHJsOcHwJGFub
AJOI20IHRJA+A+6F3tXLmPRoDm3Ed4j8g9+V99mvfTQunHQ4sTSGFVrOPMTB1edUy596
qwAC8jcsh40+iTYbVYu3Yw+mwzJ7t77hwJfL1q8qAKDrYew9ETkRohPB55PNY/m1uZ7v
24Lw==
X-Forwarded-Encrypted: i=1; AJvYcCWPawr7FLQDvEB2lNBSvnpOej3Ze5P/1wXOfbl0F37pmUCK3jhQvoCkfiZMT5snpLCYQ5cAC9LI@xxxxxxxxxxxxxxx, AJvYcCXMDtwyvCUbrdX8aZQVl8g+nsOiIYpqaL7f/cOY0+us91fO+yQwSOe8UtRi5LUlXDsnCnAFzk9krtWxk2w=@vger.kernel.org
X-Gm-Message-State: AOJu0YzNkshjLGGeyTs1vs51S/cbMnxY7groduo9EFgx/IyP2ozu/slX
nUTQb3fHPy6Q5OFiVSVDVFIqhCxPKIIxOBpr6N1Ft+jEGZf54twuuQ4pIExlsNfc2m9gr/chalj
mceKSi1Cv8Vq0CLuu8XCIRDIMZctqaeg=
X-Gm-Gg: ASbGnctAE57VhtpzFowwID0ga5PFvd6zi4LhuIjD8m8yg+ArYkPeqWFWWHjXRKxZs4x
n0jdzB3s9acXPAW4t5zyaLi6RGa8AX+jW+RTuiGh9pIlP4BOFANrULGRF+lWOOMnJBPy6XpxSAC
70hUpUj86/8hGMRXI8ruiv1xnVb90L53STzFYhpcXhkhCo
X-Google-Smtp-Source: AGHT+IGXprOwD1uRE4xo4SpdKHUvxNK9e8+2IV/X2qmrAZDSMS3lPR0VZqmfesG8SiGew4RdFZy9w5d1mQm38Ho+bfU=
X-Received: by 2002:a05:6102:c0e:b0:4e5:8eb6:e8dd with SMTP id
ada2fe7eead31-4e701a2823fmr436513137.5.1748675205160; Sat, 31 May 2025
00:06:45 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
<CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
<CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx>
<CAGsJ_4yJhJBo16XhiC-nUzSheyX-V3-nFE+tAi=8Y560K8eT=A@xxxxxxxxxxxxxx> <CAMgjq7BzBFTOb-urmfuF5y6qsWxwFMy0Eq=Fym+2x2pjcqg1fQ@xxxxxxxxxxxxxx>
In-Reply-To: <CAMgjq7BzBFTOb-urmfuF5y6qsWxwFMy0Eq=Fym+2x2pjcqg1fQ@xxxxxxxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 19:06:33 +1200
X-Gm-Features: AX0GCFuoz4HDWn6J3a6yeG7T2VCsCEJaLP2KYtp3OO9TF5bk5yMKT2SLCYCNtEI
Message-ID: <CAGsJ_4wm1hf54UgYJMrOyfBHDU=ZTYcGtcWTNOqo-OjmRNtXmg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Kairui Song <ryncsn@xxxxxxxxx>
Cc: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 7:00=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 2:36=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 6:25=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> =
wrote:
> > >
> > > On Sat, May 31, 2025 at 11:39=E2=80=AFAM Barry Song <21cnbao@xxxxxxxx=
m> wrote:
> > > >
> > > > On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidra@=
google.com> wrote:
> > > > >
> > > > > On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@gmail=
.com> wrote:
> > > > > >
> > > > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > >
> > > > > > On seeing a swap entry PTE, userfaultfd_move does a lockless sw=
ap cache
> > > > > > lookup, and try to move the found folio to the faulting vma whe=
n.
> > > > > > Currently, it relies on the PTE value check to ensure the moved=
folio
> > > > > > still belongs to the src swap entry, which turns out is not rel=
iable.
> > > > > >
> > > > > > While working and reviewing the swap table series with Barry, f=
ollowing
> > > > > > existing race is observed and reproduced [1]:
> > > > > >
> > > > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte is=
a
> > > > > > swap entry PTE holding swap entry S1, and S1 isn't in the swap=
cache.)
> > > > > >
> > > > > > CPU1 CPU2
> > > > > > userfaultfd_move
> > > > > > move_pages_pte()
> > > > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > > // Here it got entry =3D S1
> > > > > > ... < Somehow interrupted> ...
> > > > > > <swapin src_pte, alloc and u=
se folio A>
> > > > > > // folio A is just a new all=
ocated folio
> > > > > > // and get installed into sr=
c_pte
> > > > > > <frees swap entry S1>
> > > > > > // src_pte now points to fol=
io A, S1
> > > > > > // has swap count =3D=3D 0, =
it can be freed
> > > > > > // by folio_swap_swap or swa=
p
> > > > > > // allocator's reclaim.
> > > > > > <try to swap out another fol=
io B>
> > > > > > // folio B is a folio in ano=
ther VMA.
> > > > > > <put folio B to swap cache u=
sing S1 >
> > > > > > // S1 is freed, folio B coul=
d use it
> > > > > > // for swap out with no prob=
lem.
> > > > > > ...
> > > > > > folio =3D filemap_get_folio(S1)
> > > > > > // Got folio B here !!!
> > > > > > ... < Somehow interrupted again> ...
> > > > > > <swapin folio B and free S1>
> > > > > > // Now S1 is free to be used=
again.
> > > > > > <swapout src_pte & folio A u=
sing S1>
> > > > > > // Now src_pte is a swap ent=
ry pte
> > > > > > // holding S1 again.
> > > > > > folio_trylock(folio)
> > > > > > move_swap_pte
> > > > > > double_pt_lock
> > > > > > is_pte_pages_stable
> > > > > > // Check passed because src_pte =3D=3D S1
> > > > > > folio_move_anon_rmap(...)
> > > > > > // Moved invalid folio B here !!!
> > > > > >
> > > > > > The race window is very short and requires multiple collisions =
of
> > > > > > multiple rare events, so it's very unlikely to happen, but with=
a
> > > > > > deliberately constructed reproducer and increased time window, =
it can be
> > > > > > reproduced [1].
> > > > >
> > > > > Thanks for catching and fixing this. Just to clarify a few things
> > > > > about your reproducer:
> > > > > 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> > > > > MAP_PRIVATE will work as well?
> > > > > 2. You mentioned that the 'current dir is on a block device'. Are=
you
> > > > > indicating that if we are using zram for swap then it doesn't
> > > > > reproduce?
> > > > >
> > > > > >
> > > > > > It's also possible that folio (A) is swapped in, and swapped ou=
t again
> > > > > > after the filemap_get_folio lookup, in such case folio (A) may =
stay in
> > > > > > swap cache so it needs to be moved too. In this case we should =
also try
> > > > > > again so kernel won't miss a folio move.
> > > > > >
> > > > > > Fix this by checking if the folio is the valid swap cache folio=
after
> > > > > > acquiring the folio lock, and checking the swap cache again aft=
er
> > > > > > acquiring the src_pte lock.
> > > > > >
> > > > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, but=
so far
> > > > > > we don't need to worry about that since folios only might get e=
xposed to
> > > > > > swap cache in the swap out path, and it's covered in this patch=
too by
> > > > > > checking the swap cache again after acquiring src_pte lock.
> > > > > >
> > > > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2OUZ=
0-tqCzi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > > ---
> > > > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > > > 1 file changed, 26 insertions(+)
> > > > > >
> > > > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > > > index bc473ad21202..a1564d205dfb 100644
> > > > > > --- a/mm/userfaultfd.c
> > > > > > +++ b/mm/userfaultfd.c
> > > > > > @@ -15,6 +15,7 @@
> > > > > > #include <linux/mmu_notifier.h>
> > > > > > #include <linux/hugetlb.h>
> > > > > > #include <linux/shmem_fs.h>
> > > > > > +#include <linux/delay.h>
> > > > > I guess you mistakenly left it from your reproducer code :)
> > > > > > #include <asm/tlbflush.h>
> > > > > > #include <asm/tlb.h>
> > > > > > #include "internal.h"
> > > > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_struct=
*mm, struct vm_area_struct *dst_vma,
> > > > > > spinlock_t *dst_ptl, spinlock_t *src_p=
tl,
> > > > > > struct folio *src_folio)
> > > > > > {
> > > > > > + swp_entry_t entry;
> > > > > > +
> > > > > > double_pt_lock(dst_ptl, src_ptl);
> > > > > >
> > > > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte=
, orig_src_pte,
> > > > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_struc=
t *mm, struct vm_area_struct *dst_vma,
> > > > > > if (src_folio) {
> > > > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > > > src_folio->index =3D linear_page_index(dst_vma,=
dst_addr);
> > > > > > + } else {
> > > > > > + /*
> > > > > > + * Check again after acquiring the src_pte lock=
. Or we might
> > > > > > + * miss a new loaded swap cache folio.
> > > > > > + */
> > > > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > > + src_folio =3D filemap_get_folio(swap_address_sp=
ace(entry),
> > > > > > + swap_cache_index(=
entry));
> > > > >
> > > > > Given the non-trivial overhead of filemap_get_folio(), do you thi=
nk it
> > > > > will work if filemap_get_filio() was only once after locking src_=
ptl?
> > > > > Please correct me if my assumption about the overhead is wrong.
> > > >
> > > > not quite sure as we have a folio_lock(src_folio) before move_swap_=
pte().
> > > > can we safely folio_move_anon_rmap + src_folio->index while not hol=
ding
> > > > folio lock?
> > >
> > > I think no, we can't even make sure the folio is still in the swap
> > > cache, so it can be a freed folio that does not belong to any VMA
> > > while not holding the folio lock.
> >
> > Right, but will the following be sufficient, given that we don=E2=80=99=
t really
> > care about the folio=E2=80=94only whether there=E2=80=99s new cache?
> >
> > if (READ_ONCE(si->swap_map[offset]) & SWAP_HAS_CACHE) {
> > double_pt_unlock(dst_ptl, src_ptl);
> > return -EAGAIN;
> > }
>
> The problem is reading swap_map without locking the cluster map seems
> unstable, and has strange false positives, a swapin will set this bit
> first, while not adding the folio to swap cache or even when skipping
> the swap cache, that seems could make it more complex.

As long as it's a false positive and not a false negative, I think it's
acceptable=E2=80=94especially if we're concerned about the overhead of
filemap_get_folio. The probability is extremely low (practically close
to 0%), but we still need to call filemap_get_folio for every swap PTE.

Thanks
Barry


Return-Path: <linux-kernel+bounces-668978-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5357C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:08:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id EFA013AAA40
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:08:10 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D572F235041;
Sat, 31 May 2025 07:08:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=fail reason="signature verification failed" (2048-bit key) header.d=hmeau.com header.i=@hmeau.com header.b="h9U02AGT"
Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87])
(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 8EBFB3398B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:08:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=144.6.53.87
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675307; cv=none; b=ZcL8oHrojaWLaK5g9CCJOkeqzVFrpxWUOBlRT78X+aU+GsamlTK88Uiua45kmMvfexK0ocsIhMRGB6cRgkh1emgtlZcFcaqCB01ldoEJPBHFdNv/J/FbyBeVMMxcMW+d53jrapWFcQCR3e+yc6/5DrGnUepV8JyxNqy0G+SdAdM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675307; c=relaxed/simple;
bh=3iv8tjgA6PQWzf83ghqnVbIpO85Y32KhCeYeRAz0230=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=UmBgU6HY/ck3PB4oXRHJyOjYEnYzfQ8XDat4bHBudO59LIzTA0tnx2hkrEQMJxPLkdxHjooctBWflsr/iwfvN6k0PmArAuhRdHWyFPrb/0wvv1yBpxvKB5232ZJtyRhuB6bzQ1G6+T481z0MhRPMFnDvwyV3Utix/4Bv6HPnD04=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gondor.apana.org.au; spf=pass smtp.mailfrom=gondor.apana.org.au; dkim=pass (2048-bit key) header.d=hmeau.com header.i=@hmeau.com header.b=h9U02AGT; arc=none smtp.client-ip=144.6.53.87
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gondor.apana.org.au
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gondor.apana.org.au
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com;
s=formenos; h=In-Reply-To:Content-Type:MIME-Version:References:Message-ID:
Subject:Cc:To:From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID:
Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
List-Post:List-Owner:List-Archive;
bh=Kj6igAYGrkkdzGQffS7B/xzIRhHcDJxtG3KLUNcCcqw=; b=h9U02AGTFjGVZEVshIuun0zH/F
qB+WcCCtvQUq6DbyIQiIdBlrvm6Vw+oYB4hibfaDHSy0wa8TTa14HpkPYZZn+nQHTdV7FppHGMfOu
PS4Qg04GhnQBgLxWM/ohCj9lhdAq0Kg4V7GrX23RQwmqgkuG1GfEptgLZ4NBIjFDrsFZpYOfaNc5A
+rcQ8E6UN2lSZ9gutisNbIKiEPc2gs55Ctu6Rse8fLMPqD8Fj7WHKiHnm7cOhhnK+BnRcarx1wpDc
bXhxqvABSm6NrWS/VZDh1Z2kwCOw7JFD8DlXASylXKgziEmBiigQQc+bnUbs9jz1gqggnzuiZK2Vn
WLfskK5A==;
Received: from loth.rohan.me.apana.org.au ([192.168.167.2])
by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian))
id 1uLGKI-009woI-2o;
Sat, 31 May 2025 15:08:19 +0800
Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Sat, 31 May 2025 15:08:18 +0800
Date: Sat, 31 May 2025 15:08:18 +0800
From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
To: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx>
Cc: Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [PATCH] userns: Add forward declaration of struct seq_file in
user_namespace.h
Message-ID: <aDqq4rg9rTKRur8Y@xxxxxxxxxxxxxxxxxxx>
References: <aDlty06JvlGwTfKk@xxxxxxxxxxxxxxxxxxx>
<87ldqegrf1.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <87ldqegrf1.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 08:27:14AM -0500, Eric W. Biederman wrote:
>
> That description seems to be lacking something. The code as has been
> fine since 2014 and there is no conditional compilation involved.

I'm happy to drop the fixes header. There is no need to backport
this.

> Did some other change cause a declaration of seq_file not to be present?
> Did user_namespace.h get included somewhere new and that new location
> doesn't wind up declaring seq_file?

The seq_file forward declaration is currently being provided by
linux/sched.h. I tried removing it and found this issue.

Cheers,
--
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


Return-Path: <linux-kernel+bounces-668979-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1E23C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:09:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 88A7F189F0B7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:10:04 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C2ACB23505E;
Sat, 31 May 2025 07:09:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=fail reason="signature verification failed" (2048-bit key) header.d=hmeau.com header.i=@hmeau.com header.b="HkNkU3iT"
Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87])
(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 3F0883398B;
Sat, 31 May 2025 07:09:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=144.6.53.87
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675384; cv=none; b=iFrthjAdEfdyWyYvTUIMld8oteA4YlIRW6Ao0OgHWHIhKhWe9s5BjXQDEXDnuVIaQUcxJnukhXYaD5CUO7i69GarcQ8VSrLJYYNTzD50mmJYr65bwK8ntjJ4vVavao324ohnBkzjPgZQfpYJJRlrKVIfOJ9jZf+XzFGdXB2j0AA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675384; c=relaxed/simple;
bh=Z6Gq/f1CXcmVRhtyrER6YQ7RRt58OkBNZhatJf0kqsk=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition:In-Reply-To; b=TSw2XJQhk1Q2cbccRiFkOj9NQ/vcHhpgUoAFUISZT4eRyE+5hRkm8+eLYFI8lcsRHHKrlvUA24BT2m2CaGW4QVaH/uuSPJ2ugMh6Umq8O1cuT4QHLu17ovvBCnkoL85HSixn5Tj2n+rTAEC6FJviJjDROtmKVBRZvmYIWgAuY6Y=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gondor.apana.org.au; spf=pass smtp.mailfrom=gondor.apana.org.au; dkim=pass (2048-bit key) header.d=hmeau.com header.i=@hmeau.com header.b=HkNkU3iT; arc=none smtp.client-ip=144.6.53.87
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gondor.apana.org.au
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gondor.apana.org.au
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com;
s=formenos; h=In-Reply-To:Content-Type:MIME-Version:Message-ID:Subject:Cc:To:
From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID:
Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
:Resent-Message-ID:References:List-Id:List-Help:List-Unsubscribe:
List-Subscribe:List-Post:List-Owner:List-Archive;
bh=J4azc6Yc11qa1ew19drbL2Y4D35dU0pLMu0fayd2zss=; b=HkNkU3iT2eSSAZDrHi2ryfKxDf
iVgXCFBlMaUCtaxGpurRMrC6H/aiLTJwmDdN0VdoQbV1D5ktvUB8Ji5L7lzxSYqKqT9wRgF01RW7Y
gqipYkYp5/N6+/xhpsepYToWxTtR+0F53z6M4VNEGo/wqfUnFbjrfbcPRGTpFO8OHzl4G63c/H1V1
0r1EqrGjoGKjoUna3xAUduwR9tuj7lNmGjY22JDNaQ6o624I8k0rNJPIfP6zetqs2HXNHI4xPySBh
GIPnWon+021UmWXeAb6sF1U84u5pbLobCX5TCyxZhTROs7yMQzgdonibY9n2U94dqXTSdlh6bij+v
+UBI/CYw==;
Received: from loth.rohan.me.apana.org.au ([192.168.167.2])
by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian))
id 1uLGLZ-009woT-0b;
Sat, 31 May 2025 15:09:38 +0800
Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Sat, 31 May 2025 15:09:37 +0800
Date: Sat, 31 May 2025 15:09:37 +0800
From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
To: Eric Biggers <ebiggers@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, linux-crypto@xxxxxxxxxxxxxxx,
ardb@xxxxxxxxxx
Subject: Re: [PATCH] crypto/crc32: register only one shash_alg
Message-ID: <aDqrMb7U18DcMSRl@xxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530160940.12761-1-ebiggers@xxxxxxxxxx>
X-Newsgroups: apana.lists.os.linux.cryptoapi,apana.lists.os.linux.kernel
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Eric Biggers <ebiggers@xxxxxxxxxx> wrote:
> From: Eric Biggers <ebiggers@xxxxxxxxxx>
>
> Stop unnecessarily registering a "crc32-generic" shash_alg when a
> "crc32-$(ARCH)" shash_alg is registered too.
>
> While every algorithm does need to have a generic implementation to
> ensure uniformity of support across platforms, that doesn't mean that we
> need to make the generic implementation available through crypto_shash
> when an optimized implementation is also available.
>
> Registering the generic shash_alg did allow users of the crypto_shash or
> crypto_ahash APIs to request the generic implementation specifically,
> instead of an optimized one. However, the only known use case for that
> was the differential fuzz tests in crypto/testmgr.c. Equivalent test
> coverage is now provided by crc_kunit.
>
> Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
> ---
>
> I'm planning to take this through the crc tree.
>
> crypto/crc32.c | 69 ++++++++------------------------------------------
> 1 file changed, 11 insertions(+), 58 deletions(-)

Please don't do this without first removing all drivers providing
"crc32" as otherwise their test coverge will be reduced.

Cheers,
--
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


Return-Path: <linux-kernel+bounces-668980-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A201D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:10:42 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 781BF3AD238
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:10:21 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5BA50235067;
Sat, 31 May 2025 07:10:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=fail reason="signature verification failed" (2048-bit key) header.d=hmeau.com header.i=@hmeau.com header.b="Rmtizj+E"
Received: from abb.hmeau.com (abb.hmeau.com [144.6.53.87])
(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 7914821FF22;
Sat, 31 May 2025 07:10:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=144.6.53.87
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675435; cv=none; b=ldFLSHYu8rmlnFSnlwfgQt965YO2g25hlWM6h10H7wO9CDVpMpzfLuvLMfnIcnajVEIB5YAKeFdjKHhwJAYw9PpUQZbdYe9ZGWqJFUvoaK/CUgr8ym5hf8iWzjYe2SIySlVzQvmsrrPYinQG/WNApxC8qZ6Qu91HkWOb+/HIPK8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675435; c=relaxed/simple;
bh=TYWjAZoovNgxt21J08zPJNOE3b7mJr33wy5LmU8wqsg=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition:In-Reply-To; b=mit/B6htErORqTRBKA4DIBHmfIZqnui63wLi1xv7Ux/rrBXUXdAT3HdkWvNQ8++X2jEopbLeglf/gO4dpzM1tSwR5XB9kK5sz2c2JutrEbBEcmn1kWMEpuLyjkDMmsCvx0AAIlmbEfOw3ZOrNYpnOnsinS9AiKeHSkZhoOz6IXY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gondor.apana.org.au; spf=pass smtp.mailfrom=gondor.apana.org.au; dkim=pass (2048-bit key) header.d=hmeau.com header.i=@hmeau.com header.b=Rmtizj+E; arc=none smtp.client-ip=144.6.53.87
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=gondor.apana.org.au
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gondor.apana.org.au
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=hmeau.com;
s=formenos; h=In-Reply-To:Content-Type:MIME-Version:Message-ID:Subject:Cc:To:
From:Date:Sender:Reply-To:Content-Transfer-Encoding:Content-ID:
Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
:Resent-Message-ID:References:List-Id:List-Help:List-Unsubscribe:
List-Subscribe:List-Post:List-Owner:List-Archive;
bh=lRraTA+MBGkehRSEZR7eedoKVf5LVIw5cNGwe/ECEoY=; b=Rmtizj+Ew8YvbbjvC+4dnPbnlr
JlPJeE5x8js6fpnKDM3rOUKddHaOKWX7WnC0EBtQytkYFpfegSgn4kXdM0i9oHlravAa6KvIkWX67
puZw2OLgnZysyWy9DIUqUad8AUDT2cpACqJVeQRcZIqGV1XPbNtY5p3wS5197Zcg4v4WhLIxqM2Uo
yfwAGtqIK2I4Jk6++/5/vvQrch9DdWd2Ew7iCDst8kniUuX1xC2dDggNedV/AxAoqQKULomtTg7XS
++mkyGM/mb/AQ8zvrzF31aJ8LbUUtWKDl5Rl70FZ2WC3BxfaUfYFXQszfDjp0VehfUAP/vKzC+U06
XCkKg7wQ==;
Received: from loth.rohan.me.apana.org.au ([192.168.167.2])
by formenos.hmeau.com with smtp (Exim 4.96 #2 (Debian))
id 1uLGMP-009wp8-2a;
Sat, 31 May 2025 15:10:30 +0800
Received: by loth.rohan.me.apana.org.au (sSMTP sendmail emulation); Sat, 31 May 2025 15:10:29 +0800
Date: Sat, 31 May 2025 15:10:29 +0800
From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
To: Eric Biggers <ebiggers@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, linux-crypto@xxxxxxxxxxxxxxx,
ardb@xxxxxxxxxx
Subject: Re: [PATCH] crypto/crc32c: register only one shash_alg
Message-ID: <aDqrZdxx7bmo_Z2Y@xxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530161042.13106-1-ebiggers@xxxxxxxxxx>
X-Newsgroups: apana.lists.os.linux.cryptoapi,apana.lists.os.linux.kernel
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Eric Biggers <ebiggers@xxxxxxxxxx> wrote:
> From: Eric Biggers <ebiggers@xxxxxxxxxx>
>
> Stop unnecessarily registering a "crc32c-generic" shash_alg when a
> "crc32c-$(ARCH)" shash_alg is registered too.
>
> While every algorithm does need to have a generic implementation to
> ensure uniformity of support across platforms, that doesn't mean that we
> need to make the generic implementation available through crypto_shash
> when an optimized implementation is also available.
>
> Registering the generic shash_alg did allow users of the crypto_shash or
> crypto_ahash APIs to request the generic implementation specifically,
> instead of an optimized one. However, the only known use case for that
> was the differential fuzz tests in crypto/testmgr.c. Equivalent test
> coverage is now provided by crc_kunit.
>
> Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
> ---
>
> I'm planning to take this through the crc tree.
>
> crypto/crc32c.c | 70 +++++++------------------------------------------
> 1 file changed, 10 insertions(+), 60 deletions(-)

Ditto with "crc32". Please remove drivers/crypto/stm32/stm32-crc32.c
first before getting rid of "crc32c-generic".

Thanks,
--
Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt


Return-Path: <linux-kernel+bounces-668981-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 98B2F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:11:26 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 1905B3AD501
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:11:05 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id AEE07235066;
Sat, 31 May 2025 07:11:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lS1DqQG7"
Received: from mail-vs1-f53.google.com (mail-vs1-f53.google.com [209.85.217.53])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id CE9F321FF22;
Sat, 31 May 2025 07:11:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.217.53
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675478; cv=none; b=fBrBr7DerU5KKPGNPBOBXqqNXbzQh/nKvZ8d4xVc4YiE3KXXi6MmB1Kqs4p/6bjnn0Fp6MmXZhQS+fRu6PYqM22YtLBEpyItGKA1PP/bCTX/61IxXKlzV7Sz1mniKChobrziFhnBCc6IM5CDYWMxfiJsmAHFgUR40kucbaMLln4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675478; c=relaxed/simple;
bh=ppV6aCRntQoV78dY3rGerJkONaYfJnukmDOhixGNeno=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=UIB4RntB/ISpctx3U5Xl5MmtlwSHUJkUp5QjrYsd2fRJPmlS1hgw7LvNqzm9e08sxEwuSgJY0uzcBWNZ14TLom7X8+eN/ow/MjLhBI3l6Rk9Dv2FjtM00x4ROiz5knLjpCILYpVIgfF9uy4QRftiai9w6a+CDSNZf81NfJouP0c=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lS1DqQG7; arc=none smtp.client-ip=209.85.217.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-vs1-f53.google.com with SMTP id ada2fe7eead31-4e58d270436so877092137.3;
Sat, 31 May 2025 00:11:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748675475; x=1749280275; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=PsVbopQSHGNxCU+521RTaC06XQglnnQiS9YtQjoinYU=;
b=lS1DqQG7hNQUqyY3Wnf2yyNU81iBEy3f5erLB32rbOTanzzXAEzVLyNm7F6cvkv29+
LC6kXTh4g+Kn3frisOB7RHGgbIcyflytslcfimaV0MiKBwMUru5PgBE3DfhiGkSNYG4K
KukXR7ztxG0vg9Bgo+dydLTxfyTwMbicO29fAkJRXL+Kz5z6fYiVYGB6SUaobxSRLlKe
bZHAlPbEvGkL4Tlj+Ftq4SDHQOrE+A6SA4NVAzP4+wQxPgFSf93mKK7F5ea7q7ir7d12
0IEcXyrkb/nV6W1F+u0G/eHfk6G7/QW/at86vGM7oN9BJIsicXIvT1q0mI9Pr/tjMLTw
RrYg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748675475; x=1749280275;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=PsVbopQSHGNxCU+521RTaC06XQglnnQiS9YtQjoinYU=;
b=jCG8YTAUt/nFyzMpMoQcwVWqliocMAhZcAaa7NwmTGHMSalWNAeAwsZZILIa0pBKxO
Y4G7wwL29OLP+zKbjFTm1gED76PMxiF6Luedfm+koG+BFpF2+7eG8CDSS+idbHKbiyIG
ey3QrU6XW3Jj8fKmir3o73LG14ZWcIQuyGtxnKHU1zx16R5fH7f9D5dJwrxPXWD8Hcyq
8GCjF8DsIsJtWuT+6OGzO1RrVpdZR77/X2zC2RldiPeaq2eXebECV36pOakjou6ExnCb
Gh2w1fMnzwkIZ5fu083ZF9bAwFWrX2YdNNacoviyO1I39FTB5TzSatbGOetmWPPQLZjQ
7kKQ==
X-Forwarded-Encrypted: i=1; AJvYcCU4iHTtky5035sgjMIreDxSMkNvx/bYJaJ+M2aO7UzHkN2vKuULyeKjiwEQ8nCW+bGzwYqmPUxQIc2kg+Q=@vger.kernel.org, AJvYcCXNBmR2femnls9pLMYYm17lkOXh1v9LXf+qcVCOjI2JXfSBBoI+vGwgud0cwhdz70KIUvAAIFdD@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YzS5kpw6w+vcm/TiPWanuCj4px1uDot0Fc2mXHXck4CIoL27j58
wLhw2o6KIvm9+lTuUEI70e5DTuxRdi7gJGY+6zt9VB8o+IsuD7fK+qjeXwATK5Azg1HKy3Zuk7d
+c0b3/dd8t474kLi+yDLA2+f+4J7drww=
X-Gm-Gg: ASbGncvGA0hmNTUnySACPmruiG0sfntLYebgN8FwmcwPbEVVyehIKHWO2cuQtiPgzsG
xoAUYEcfjDh1WhxWs8I5uyPqoyQpbDodFBfR1Ex+BF18n+kLFiLpIGQOImClkdqfrnX/TA1dABj
s3hGnFVViuZVnlnll2NxN47meBuDS9vauc5A==
X-Google-Smtp-Source: AGHT+IFdt0WJQZOrJQ/qTeXDjQqzXwWZ6VhvBm4MP2zhXRpqKV+ZIDDV1VU9b2qQi+t9GvnVnU3coSTIKJVM5qcGXRk=
X-Received: by 2002:a05:6102:6cb:b0:4c1:91da:dac1 with SMTP id
ada2fe7eead31-4e6e40f3fd1mr5506320137.6.1748675475505; Sat, 31 May 2025
00:11:15 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
<CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
<CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx>
<CAGsJ_4yJhJBo16XhiC-nUzSheyX-V3-nFE+tAi=8Y560K8eT=A@xxxxxxxxxxxxxx>
<CAMgjq7BzBFTOb-urmfuF5y6qsWxwFMy0Eq=Fym+2x2pjcqg1fQ@xxxxxxxxxxxxxx> <CAGsJ_4wm1hf54UgYJMrOyfBHDU=ZTYcGtcWTNOqo-OjmRNtXmg@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4wm1hf54UgYJMrOyfBHDU=ZTYcGtcWTNOqo-OjmRNtXmg@xxxxxxxxxxxxxx>
From: Barry Song <21cnbao@xxxxxxxxx>
Date: Sat, 31 May 2025 19:11:03 +1200
X-Gm-Features: AX0GCFsaMwsDpHvv6Hpgi7mtLb8MSO853OVaDRVrebJRuPjklZMIm8ZvYtyjsWI
Message-ID: <CAGsJ_4yypxqRx5PdLY70tCP93cFUs_jgipcm68mhj4R0Ov_Vsw@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Kairui Song <ryncsn@xxxxxxxxx>
Cc: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 7:06=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> wrot=
e:
>
> On Sat, May 31, 2025 at 7:00=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 2:36=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> =
wrote:
> > >
> > > On Sat, May 31, 2025 at 6:25=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx=
> wrote:
> > > >
> > > > On Sat, May 31, 2025 at 11:39=E2=80=AFAM Barry Song <21cnbao@gmail.=
com> wrote:
> > > > >
> > > > > On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidr=
a@xxxxxxxxxx> wrote:
> > > > > >
> > > > > > On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@gma=
il.com> wrote:
> > > > > > >
> > > > > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > > >
> > > > > > > On seeing a swap entry PTE, userfaultfd_move does a lockless =
swap cache
> > > > > > > lookup, and try to move the found folio to the faulting vma w=
hen.
> > > > > > > Currently, it relies on the PTE value check to ensure the mov=
ed folio
> > > > > > > still belongs to the src swap entry, which turns out is not r=
eliable.
> > > > > > >
> > > > > > > While working and reviewing the swap table series with Barry,=
following
> > > > > > > existing race is observed and reproduced [1]:
> > > > > > >
> > > > > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte =
is a
> > > > > > > swap entry PTE holding swap entry S1, and S1 isn't in the sw=
ap cache.)
> > > > > > >
> > > > > > > CPU1 CPU2
> > > > > > > userfaultfd_move
> > > > > > > move_pages_pte()
> > > > > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > > > // Here it got entry =3D S1
> > > > > > > ... < Somehow interrupted> ...
> > > > > > > <swapin src_pte, alloc and=
use folio A>
> > > > > > > // folio A is just a new a=
llocated folio
> > > > > > > // and get installed into =
src_pte
> > > > > > > <frees swap entry S1>
> > > > > > > // src_pte now points to f=
olio A, S1
> > > > > > > // has swap count =3D=3D 0=
, it can be freed
> > > > > > > // by folio_swap_swap or s=
wap
> > > > > > > // allocator's reclaim.
> > > > > > > <try to swap out another f=
olio B>
> > > > > > > // folio B is a folio in a=
nother VMA.
> > > > > > > <put folio B to swap cache=
using S1 >
> > > > > > > // S1 is freed, folio B co=
uld use it
> > > > > > > // for swap out with no pr=
oblem.
> > > > > > > ...
> > > > > > > folio =3D filemap_get_folio(S1)
> > > > > > > // Got folio B here !!!
> > > > > > > ... < Somehow interrupted again> ...
> > > > > > > <swapin folio B and free S=
1>
> > > > > > > // Now S1 is free to be us=
ed again.
> > > > > > > <swapout src_pte & folio A=
using S1>
> > > > > > > // Now src_pte is a swap e=
ntry pte
> > > > > > > // holding S1 again.
> > > > > > > folio_trylock(folio)
> > > > > > > move_swap_pte
> > > > > > > double_pt_lock
> > > > > > > is_pte_pages_stable
> > > > > > > // Check passed because src_pte =3D=3D S1
> > > > > > > folio_move_anon_rmap(...)
> > > > > > > // Moved invalid folio B here !!!
> > > > > > >
> > > > > > > The race window is very short and requires multiple collision=
s of
> > > > > > > multiple rare events, so it's very unlikely to happen, but wi=
th a
> > > > > > > deliberately constructed reproducer and increased time window=
, it can be
> > > > > > > reproduced [1].
> > > > > >
> > > > > > Thanks for catching and fixing this. Just to clarify a few thin=
gs
> > > > > > about your reproducer:
> > > > > > 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> > > > > > MAP_PRIVATE will work as well?
> > > > > > 2. You mentioned that the 'current dir is on a block device'. A=
re you
> > > > > > indicating that if we are using zram for swap then it doesn't
> > > > > > reproduce?
> > > > > >
> > > > > > >
> > > > > > > It's also possible that folio (A) is swapped in, and swapped =
out again
> > > > > > > after the filemap_get_folio lookup, in such case folio (A) ma=
y stay in
> > > > > > > swap cache so it needs to be moved too. In this case we shoul=
d also try
> > > > > > > again so kernel won't miss a folio move.
> > > > > > >
> > > > > > > Fix this by checking if the folio is the valid swap cache fol=
io after
> > > > > > > acquiring the folio lock, and checking the swap cache again a=
fter
> > > > > > > acquiring the src_pte lock.
> > > > > > >
> > > > > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, b=
ut so far
> > > > > > > we don't need to worry about that since folios only might get=
exposed to
> > > > > > > swap cache in the swap out path, and it's covered in this pat=
ch too by
> > > > > > > checking the swap cache again after acquiring src_pte lock.
> > > > > > >
> > > > > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2O=
UZ0-tqCzi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > > > ---
> > > > > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > > > > 1 file changed, 26 insertions(+)
> > > > > > >
> > > > > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > > > > index bc473ad21202..a1564d205dfb 100644
> > > > > > > --- a/mm/userfaultfd.c
> > > > > > > +++ b/mm/userfaultfd.c
> > > > > > > @@ -15,6 +15,7 @@
> > > > > > > #include <linux/mmu_notifier.h>
> > > > > > > #include <linux/hugetlb.h>
> > > > > > > #include <linux/shmem_fs.h>
> > > > > > > +#include <linux/delay.h>
> > > > > > I guess you mistakenly left it from your reproducer code :)
> > > > > > > #include <asm/tlbflush.h>
> > > > > > > #include <asm/tlb.h>
> > > > > > > #include "internal.h"
> > > > > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_stru=
ct *mm, struct vm_area_struct *dst_vma,
> > > > > > > spinlock_t *dst_ptl, spinlock_t *src=
_ptl,
> > > > > > > struct folio *src_folio)
> > > > > > > {
> > > > > > > + swp_entry_t entry;
> > > > > > > +
> > > > > > > double_pt_lock(dst_ptl, src_ptl);
> > > > > > >
> > > > > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_p=
te, orig_src_pte,
> > > > > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_str=
uct *mm, struct vm_area_struct *dst_vma,
> > > > > > > if (src_folio) {
> > > > > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > > > > src_folio->index =3D linear_page_index(dst_vm=
a, dst_addr);
> > > > > > > + } else {
> > > > > > > + /*
> > > > > > > + * Check again after acquiring the src_pte lo=
ck. Or we might
> > > > > > > + * miss a new loaded swap cache folio.
> > > > > > > + */
> > > > > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > > > + src_folio =3D filemap_get_folio(swap_address_=
space(entry),
> > > > > > > + swap_cache_inde=
x(entry));
> > > > > >
> > > > > > Given the non-trivial overhead of filemap_get_folio(), do you t=
hink it
> > > > > > will work if filemap_get_filio() was only once after locking sr=
c_ptl?
> > > > > > Please correct me if my assumption about the overhead is wrong.
> > > > >
> > > > > not quite sure as we have a folio_lock(src_folio) before move_swa=
p_pte().
> > > > > can we safely folio_move_anon_rmap + src_folio->index while not h=
olding
> > > > > folio lock?
> > > >
> > > > I think no, we can't even make sure the folio is still in the swap
> > > > cache, so it can be a freed folio that does not belong to any VMA
> > > > while not holding the folio lock.
> > >
> > > Right, but will the following be sufficient, given that we don=E2=80=
=99t really
> > > care about the folio=E2=80=94only whether there=E2=80=99s new cache?
> > >
> > > if (READ_ONCE(si->swap_map[offset]) & SWAP_HAS_CACHE) {
> > > double_pt_unlock(dst_ptl, src_ptl);
> > > return -EAGAIN;
> > > }
> >
> > The problem is reading swap_map without locking the cluster map seems
> > unstable, and has strange false positives, a swapin will set this bit
> > first, while not adding the folio to swap cache or even when skipping
> > the swap cache, that seems could make it more complex.
>
> As long as it's a false positive and not a false negative, I think it's
> acceptable=E2=80=94especially if we're concerned about the overhead of
> filemap_get_folio. The probability is extremely low (practically close
> to 0%), but we still need to call filemap_get_folio for every swap PTE.

By the way, if we do want to eliminate the false positives, we could do
the following:

if (READ_ONCE(si->swap_map[offset]) & SWAP_HAS_CACHE) {
folio =3D filemap_get_folio()
if (folio....) {
double_pt_unlock(dst_ptl, src_ptl);
return -EAGAIN;
}
}

This might eliminate 99.999999...% of filemap_get_folio calls, though my
gut feeling is that it might not be necessary :-)

Thanks
Barry


Return-Path: <linux-kernel+bounces-668982-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8A3E141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:11:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 1AA7E3AE857
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:11:28 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EF2CE235063;
Sat, 31 May 2025 07:11:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="2fjbW7b1"
Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1D5E523504B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:11:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.175
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675502; cv=none; b=sPVLBBWKbLqSg7MRlhOvopqG2WO2OvbpwEHJ8IoVWTaqASaUXzpR0n6sPNKMHcP15hjK8CtHej8qP8uoxXiv9gzKrM8Wyz612KCkh/K1FnR5GFqcj0M+bmzGysOA2+YbCMam0n17LIPoiPKRk9QKaKHi2IZ6cKswo9t1s5RR3JI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675502; c=relaxed/simple;
bh=qPD6RSZsfHxQKR9kiSFgamDIvSiSK5NmVTTFJ5JcHu8=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=Aaw4Lej+UjbSUOylJN4h3S7t0p90Fo3fS3L75dG9Llp8N+rkUjYxB7qrJJzVwREYndUiAFIz5JzggKhUcpqoNkgy17d8AX0GRl9OOMBPzHTnoc5RdN3V/goJGRUD3L/o6OJ1eG3szM8wGAgotyuOk8W8AHCzZngID9DAt7rKaSQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=2fjbW7b1; arc=none smtp.client-ip=209.85.214.175
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-pl1-f175.google.com with SMTP id d9443c01a7336-231ba6da557so82705ad.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:11:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748675500; x=1749280300; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=hJUPLZSZKX8rYufeGcr9Ae45p6/9NH9FDi+v384RGEw=;
b=2fjbW7b1dNLn0tyqgmEzy1Q2OewrJAfhUElX4c5/Rb9NHi4L7vQNf9+YPDrW4RNWnI
5nMkVArSov1fnACWXvK/029/XQklL48CPMUbRAMgkKfZVYxT84NYnytbeDr0PYURNWMa
QGTGhU0xtNsi8+H8kcO/ychGanh0Q/WnKj6BV2IsrXmTDz/+pd2k7ki6haUAHP5RD401
FVaWDpF1huGP0T3o+inU+GPpAn/AMfwAWqLJL9CHNC/vuyS1qGE6PSyKHVgvv7EtZBQ3
UyPF/YjEf8QYopJ5ZcER5FzGqQPh9uaHoWLIXzzPYKuXqIVPKMhhiDFmUVfez8pUolj0
TZsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748675500; x=1749280300;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=hJUPLZSZKX8rYufeGcr9Ae45p6/9NH9FDi+v384RGEw=;
b=BvX2gyLaYA+jWEoJXarIvMDiigrrmI8iZIFCNTNe0zUBMQ8/hSE6yCANgClkrHEtfV
K25UrVMOkzQ6P3eLPsYBb/bZ3qeKIQyg19y3eATmJFpwClMbbO1O1tGgjG3ZxWej/QCT
ZVdhoLHZGt1dYivJZGCn87XZMMPWuuCtbCOzoIWTdEl9pHnHWs4a/R05xJTDjcxybk5j
JI72DyU/b4thQaE1RqJ17k1LmkBbQl9zzKuH3892/8xfy1gy/bwd8d0JdkDHeiNO0IdN
/01+VofDP2PtLnderRRxRNarkw3eGqInfBN6of2tzhWLnBuRpKrpz88czdtcxPBt3Iuz
/0NQ==
X-Forwarded-Encrypted: i=1; AJvYcCXwtwMVedbD4bHrPX2X2hnYwtq5NpGAritW3yNb/yWgtpaIPGIOXxspE7j2MKwVZS1yqz8AZHzpXUw8rM0=@vger.kernel.org
X-Gm-Message-State: AOJu0YxAD1fmFHR8EccVx1Gnxaw74k6M540X4KFE3f74tPauO/PJ8loC
gD6BjcLYZ7PQcgEgTLWhwV06lU5s86l0yBnOcIkPBby6lLyGmK/Bv7YcqkzgSXtChs8IDbLTAJg
h74CaakfE/WmM8UkeizPiein6RCbHiAsYt4XUXVaV
X-Gm-Gg: ASbGncsduZ+JKNWLw9tCzqh8XWCeZY2ffHW1q72m2bu+1XFZ5al4ZAWbWaqJU/jx99z
La2XUkgWWeb0XSwdRWHinAproN5h6oIPqMMPhmBFUkoH+dUAyv3Okl6A+qKkNeq8DJpoFhOYDQE
1dQatsHOJLQU8kBAUPJVsg8hX94++qfY0E38H1mbeb+eZLIaEA4b4H+VDhdfvAtiZtAzNTi6xX+
UoPi++40L7BUSY=
X-Google-Smtp-Source: AGHT+IFL2G6R9UYfr0o8oK/7I4HkDQML7Z++7jpPt0Grez3RcIK5mSoEa/a8KBvtmIkNzJbgoKpZnCjzVgIrrFgtNbM=
X-Received: by 2002:a17:902:da8e:b0:234:14ff:541f with SMTP id
d9443c01a7336-2355af16345mr998905ad.21.1748675499856; Sat, 31 May 2025
00:11:39 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530201710.81365-1-ryncsn@xxxxxxxxx> <CA+EESO4-L5sOTgsTE1txby9f3a3_W49tSnkufzVnJhnR809zRQ@xxxxxxxxxxxxxx>
<CAGsJ_4wkY8UcyU3LnNc1a55AvjYsVjBiST=Dy07UiaH8MU5-yg@xxxxxxxxxxxxxx>
<CAMgjq7CFhboj1qDjdzwb2_vWKpzSzY5d0s-kWmE2ZYDDJ4s-JQ@xxxxxxxxxxxxxx>
<CAGsJ_4yJhJBo16XhiC-nUzSheyX-V3-nFE+tAi=8Y560K8eT=A@xxxxxxxxxxxxxx>
<CAMgjq7BzBFTOb-urmfuF5y6qsWxwFMy0Eq=Fym+2x2pjcqg1fQ@xxxxxxxxxxxxxx> <CAGsJ_4wm1hf54UgYJMrOyfBHDU=ZTYcGtcWTNOqo-OjmRNtXmg@xxxxxxxxxxxxxx>
In-Reply-To: <CAGsJ_4wm1hf54UgYJMrOyfBHDU=ZTYcGtcWTNOqo-OjmRNtXmg@xxxxxxxxxxxxxx>
From: Lokesh Gidra <lokeshgidra@xxxxxxxxxx>
Date: Sat, 31 May 2025 00:11:24 -0700
X-Gm-Features: AX0GCFu-U44uG2WWotTuwSQuH2rZxfvOvvkcAntijfqzmYHrTd196Ke7FpZ3cCU
Message-ID: <CA+EESO5NWFtyhYXY2Tq5ku1NnyWJY0T=ENFjqQEZR3SQF0X8qg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] mm: userfaultfd: fix race of userfaultfd_move and swap cache
To: Barry Song <21cnbao@xxxxxxxxx>
Cc: Kairui Song <ryncsn@xxxxxxxxx>, linux-mm@xxxxxxxxx,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Peter Xu <peterx@xxxxxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>, Andrea Arcangeli <aarcange@xxxxxxxxxx>,
David Hildenbrand <david@xxxxxxxxxx>, stable@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 12:06=E2=80=AFAM Barry Song <21cnbao@xxxxxxxxx> wro=
te:
>
> On Sat, May 31, 2025 at 7:00=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx> wr=
ote:
> >
> > On Sat, May 31, 2025 at 2:36=E2=80=AFPM Barry Song <21cnbao@xxxxxxxxx> =
wrote:
> > >
> > > On Sat, May 31, 2025 at 6:25=E2=80=AFPM Kairui Song <ryncsn@xxxxxxxxx=
> wrote:
> > > >
> > > > On Sat, May 31, 2025 at 11:39=E2=80=AFAM Barry Song <21cnbao@gmail.=
com> wrote:
> > > > >
> > > > > On Sat, May 31, 2025 at 11:40=E2=80=AFAM Lokesh Gidra <lokeshgidr=
a@xxxxxxxxxx> wrote:
> > > > > >
> > > > > > On Fri, May 30, 2025 at 1:17=E2=80=AFPM Kairui Song <ryncsn@gma=
il.com> wrote:
> > > > > > >
> > > > > > > From: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > > >
> > > > > > > On seeing a swap entry PTE, userfaultfd_move does a lockless =
swap cache
> > > > > > > lookup, and try to move the found folio to the faulting vma w=
hen.
> > > > > > > Currently, it relies on the PTE value check to ensure the mov=
ed folio
> > > > > > > still belongs to the src swap entry, which turns out is not r=
eliable.
> > > > > > >
> > > > > > > While working and reviewing the swap table series with Barry,=
following
> > > > > > > existing race is observed and reproduced [1]:
> > > > > > >
> > > > > > > ( move_pages_pte is moving src_pte to dst_pte, where src_pte =
is a
> > > > > > > swap entry PTE holding swap entry S1, and S1 isn't in the sw=
ap cache.)
> > > > > > >
> > > > > > > CPU1 CPU2
> > > > > > > userfaultfd_move
> > > > > > > move_pages_pte()
> > > > > > > entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > > > // Here it got entry =3D S1
> > > > > > > ... < Somehow interrupted> ...
> > > > > > > <swapin src_pte, alloc and=
use folio A>
> > > > > > > // folio A is just a new a=
llocated folio
> > > > > > > // and get installed into =
src_pte
> > > > > > > <frees swap entry S1>
> > > > > > > // src_pte now points to f=
olio A, S1
> > > > > > > // has swap count =3D=3D 0=
, it can be freed
> > > > > > > // by folio_swap_swap or s=
wap
> > > > > > > // allocator's reclaim.
> > > > > > > <try to swap out another f=
olio B>
> > > > > > > // folio B is a folio in a=
nother VMA.
> > > > > > > <put folio B to swap cache=
using S1 >
> > > > > > > // S1 is freed, folio B co=
uld use it
> > > > > > > // for swap out with no pr=
oblem.
> > > > > > > ...
> > > > > > > folio =3D filemap_get_folio(S1)
> > > > > > > // Got folio B here !!!
> > > > > > > ... < Somehow interrupted again> ...
> > > > > > > <swapin folio B and free S=
1>
> > > > > > > // Now S1 is free to be us=
ed again.
> > > > > > > <swapout src_pte & folio A=
using S1>
> > > > > > > // Now src_pte is a swap e=
ntry pte
> > > > > > > // holding S1 again.
> > > > > > > folio_trylock(folio)
> > > > > > > move_swap_pte
> > > > > > > double_pt_lock
> > > > > > > is_pte_pages_stable
> > > > > > > // Check passed because src_pte =3D=3D S1
> > > > > > > folio_move_anon_rmap(...)
> > > > > > > // Moved invalid folio B here !!!
> > > > > > >
> > > > > > > The race window is very short and requires multiple collision=
s of
> > > > > > > multiple rare events, so it's very unlikely to happen, but wi=
th a
> > > > > > > deliberately constructed reproducer and increased time window=
, it can be
> > > > > > > reproduced [1].
> > > > > >
> > > > > > Thanks for catching and fixing this. Just to clarify a few thin=
gs
> > > > > > about your reproducer:
> > > > > > 1. Is it necessary for the 'race' mapping to be MAP_SHARED, or
> > > > > > MAP_PRIVATE will work as well?
> > > > > > 2. You mentioned that the 'current dir is on a block device'. A=
re you
> > > > > > indicating that if we are using zram for swap then it doesn't
> > > > > > reproduce?
> > > > > >
> > > > > > >
> > > > > > > It's also possible that folio (A) is swapped in, and swapped =
out again
> > > > > > > after the filemap_get_folio lookup, in such case folio (A) ma=
y stay in
> > > > > > > swap cache so it needs to be moved too. In this case we shoul=
d also try
> > > > > > > again so kernel won't miss a folio move.
> > > > > > >
> > > > > > > Fix this by checking if the folio is the valid swap cache fol=
io after
> > > > > > > acquiring the folio lock, and checking the swap cache again a=
fter
> > > > > > > acquiring the src_pte lock.
> > > > > > >
> > > > > > > SWP_SYNCRHONIZE_IO path does make the problem more complex, b=
ut so far
> > > > > > > we don't need to worry about that since folios only might get=
exposed to
> > > > > > > swap cache in the swap out path, and it's covered in this pat=
ch too by
> > > > > > > checking the swap cache again after acquiring src_pte lock.
> > > > > > >
> > > > > > > Fixes: adef440691ba ("userfaultfd: UFFDIO_MOVE uABI")
> > > > > > > Closes: https://lore.kernel.org/linux-mm/CAMgjq7B1K=3D6OOrK2O=
UZ0-tqCzi+EJt+2_K97TPGoSt=3D9+JwP7Q@xxxxxxxxxxxxxx/ [1]
> > > > > > > Signed-off-by: Kairui Song <kasong@xxxxxxxxxxx>
> > > > > > > ---
> > > > > > > mm/userfaultfd.c | 26 ++++++++++++++++++++++++++
> > > > > > > 1 file changed, 26 insertions(+)
> > > > > > >
> > > > > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
> > > > > > > index bc473ad21202..a1564d205dfb 100644
> > > > > > > --- a/mm/userfaultfd.c
> > > > > > > +++ b/mm/userfaultfd.c
> > > > > > > @@ -15,6 +15,7 @@
> > > > > > > #include <linux/mmu_notifier.h>
> > > > > > > #include <linux/hugetlb.h>
> > > > > > > #include <linux/shmem_fs.h>
> > > > > > > +#include <linux/delay.h>
> > > > > > I guess you mistakenly left it from your reproducer code :)
> > > > > > > #include <asm/tlbflush.h>
> > > > > > > #include <asm/tlb.h>
> > > > > > > #include "internal.h"
> > > > > > > @@ -1086,6 +1087,8 @@ static int move_swap_pte(struct mm_stru=
ct *mm, struct vm_area_struct *dst_vma,
> > > > > > > spinlock_t *dst_ptl, spinlock_t *src=
_ptl,
> > > > > > > struct folio *src_folio)
> > > > > > > {
> > > > > > > + swp_entry_t entry;
> > > > > > > +
> > > > > > > double_pt_lock(dst_ptl, src_ptl);
> > > > > > >
> > > > > > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_p=
te, orig_src_pte,
> > > > > > > @@ -1102,6 +1105,19 @@ static int move_swap_pte(struct mm_str=
uct *mm, struct vm_area_struct *dst_vma,
> > > > > > > if (src_folio) {
> > > > > > > folio_move_anon_rmap(src_folio, dst_vma);
> > > > > > > src_folio->index =3D linear_page_index(dst_vm=
a, dst_addr);
> > > > > > > + } else {
> > > > > > > + /*
> > > > > > > + * Check again after acquiring the src_pte lo=
ck. Or we might
> > > > > > > + * miss a new loaded swap cache folio.
> > > > > > > + */
> > > > > > > + entry =3D pte_to_swp_entry(orig_src_pte);
> > > > > > > + src_folio =3D filemap_get_folio(swap_address_=
space(entry),
> > > > > > > + swap_cache_inde=
x(entry));
> > > > > >
> > > > > > Given the non-trivial overhead of filemap_get_folio(), do you t=
hink it
> > > > > > will work if filemap_get_filio() was only once after locking sr=
c_ptl?
> > > > > > Please correct me if my assumption about the overhead is wrong.
> > > > >
> > > > > not quite sure as we have a folio_lock(src_folio) before move_swa=
p_pte().
> > > > > can we safely folio_move_anon_rmap + src_folio->index while not h=
olding
> > > > > folio lock?
> > > >
> > > > I think no, we can't even make sure the folio is still in the swap
> > > > cache, so it can be a freed folio that does not belong to any VMA
> > > > while not holding the folio lock.
> > >
> > > Right, but will the following be sufficient, given that we don=E2=80=
=99t really
> > > care about the folio=E2=80=94only whether there=E2=80=99s new cache?
> > >
> > > if (READ_ONCE(si->swap_map[offset]) & SWAP_HAS_CACHE) {
> > > double_pt_unlock(dst_ptl, src_ptl);
> > > return -EAGAIN;
> > > }
> >
> > The problem is reading swap_map without locking the cluster map seems
> > unstable, and has strange false positives, a swapin will set this bit
> > first, while not adding the folio to swap cache or even when skipping
> > the swap cache, that seems could make it more complex.
>
> As long as it's a false positive and not a false negative, I think it's
> acceptable=E2=80=94especially if we're concerned about the overhead of
> filemap_get_folio. The probability is extremely low (practically close
> to 0%), but we still need to call filemap_get_folio for every swap PTE.
>
That's exactly my concern too. A retry or EAGAIN on rare false
positives are acceptable. But adding an additional call to
filemap_get_folio, that too with PTL for both src and dst locked is
not cheap. Consider that on a multi-threaded application, there could
be many threads blocked on the same PTL. So keeping that critical
section as short as possible is desirable.

> Thanks
> Barry


Return-Path: <linux-kernel+bounces-668983-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 331C741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:16:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3D4E5189F449
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:16:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 77409235073;
Sat, 31 May 2025 07:16:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="HvUjhOnq"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 A786FEED7;
Sat, 31 May 2025 07:16:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675768; cv=none; b=PwNBkL6LoXNzyQ3t4GrvHZUJWt28rUIAf4pI9lxZ7ak0Tboij9c3RhDrscgM0kmxKxjzb3oHwPhyb7SILSMtDwjDSPhd1BT/RBk8EiGB/7swHS08UzRLl9IqB0dtQP7Z2XhMOqhDD7V+8b3dHiUTbAB/uwcC/vBNEnBVXHMckmk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675768; c=relaxed/simple;
bh=u9tYN+lyjxd4x8KHOPVsd2EtXu3KxLsLiL/VW2CXtFU=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=JB55Cryhg23ZFbM6rFCkT73Ow5Hrw/ACejoy+QOJ+qngB93ImBGIi1idAYGJjfusaeA2e3s4fqUEVN4+q0v2vuZGqt6pOC+ZBNLQocymjivmC8WNv/2cFcbX796FIXrnMeub6Xwl8sKzCI5It1a6sN/3OQnyr9bCElSu+kOgTOg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=HvUjhOnq; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4D33AC4CEE3;
Sat, 31 May 2025 07:16:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748675767;
bh=u9tYN+lyjxd4x8KHOPVsd2EtXu3KxLsLiL/VW2CXtFU=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=HvUjhOnqQxkufRZdwmDTa+W2BiNKEMpY4tVKshXei2QqEM4FyW11kl9qH7+ESbeTB
DDq7m6NVA+zq2VQ91E3OFCjdljCu4e4Q0qF/hPcC9gzOwXgNwh4WOakpwczyxl3m/e
X8sPxGwm6jknRU+bUpuxPHfknb4M2LjG9CYAQMuA=
Date: Sat, 31 May 2025 09:16:04 +0200
From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Xin Chen <quic_cxin@xxxxxxxxxxx>
Cc: Rob Herring <robh@xxxxxxxxxx>, Jiri Slaby <jirislaby@xxxxxxxxxx>,
linux-serial@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
liulzhao@xxxxxxxxxxxxxxxx, quic_chejiang@xxxxxxxxxxx,
zaiyongc@xxxxxxxxxxxxxxxx, quic_zijuhu@xxxxxxxxxxx,
quic_mohamull@xxxxxxxxxxx,
Panicker Harish <quic_pharish@xxxxxxxxxxx>
Subject: Re: [PATCH v1] tty: serdev: serdev-ttyport: Fix use-after-free in
ttyport_close() due to uninitialized serport->tty
Message-ID: <2025053116-improvise-silk-968a@gregkh>
References: <20250430111617.1151390-1-quic_cxin@xxxxxxxxxxx>
<2025043022-rumbling-guy-26fb@gregkh>
<d388b471-482b-48ba-a504-694529535362@xxxxxxxxxxx>
<2025050851-splatter-thesaurus-f54e@gregkh>
<38bf94e1-ebed-4d03-8ea0-4040009e8d31@xxxxxxxxxxx>
<8e171057-b3c3-4808-b49e-f04ffd310b31@xxxxxxxxxxx>
<2025052926-net-economist-a016@gregkh>
<7d656b7e-3e7b-4357-80c3-24ab597bdcee@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <7d656b7e-3e7b-4357-80c3-24ab597bdcee@xxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 04:11:20PM +0800, Xin Chen wrote:
>
>
> On 5/29/2025 5:07 PM, Greg Kroah-Hartman wrote:
> > On Fri, May 23, 2025 at 10:52:27AM +0800, Xin Chen wrote:
> >>
> >>
> >> On 5/14/2025 5:14 PM, Xin Chen wrote:
> >>>
> >>>
> >>> On 5/8/2025 5:41 PM, Greg Kroah-Hartman wrote:
> >>>> On Thu, May 08, 2025 at 05:29:18PM +0800, Xin Chen wrote:
> >>>>>
> >>>>> On 4/30/2025 7:40 PM, Greg Kroah-Hartman wrote:
> >>>>>> On Wed, Apr 30, 2025 at 07:16:17PM +0800, Xin Chen wrote:
> >>>>>>> When ttyport_open() fails to initialize a tty device, serport->tty is not
> >>>>>>> --- a/drivers/tty/serdev/serdev-ttyport.c
> >>>>>>> +++ b/drivers/tty/serdev/serdev-ttyport.c
> >>>>>>> @@ -88,6 +88,10 @@ static void ttyport_write_flush(struct serdev_controller *ctrl)
> >>>>>>> {
> >>>>>>> struct serport *serport = serdev_controller_get_drvdata(ctrl);
> >>>>>>> struct tty_struct *tty = serport->tty;
> >>>>>>> + if (!tty) {
> >>>>>>> + dev_err(&ctrl->dev, "tty is null\n");
> >>>>>>> + return;
> >>>>>>> + }
> >>>>>>
> >>>>>> What prevents tty from going NULL right after you just checked this?
> >>>>>
> >>>>> First sorry for reply so late for I have a long statutory holidays.
> >>>>> Maybe I don't get your point. From my side, there is nothing to prevent it.
> >>>>> Check here is to avoid code go on if tty is NULL.
> >>>>
> >>>> Yes, but the problem is, serport->tty could change to be NULL right
> >>>> after you check it, so you have not removed the real race that can
> >>>> happen here. There is no lock, so by adding this check you are only
> >>>> reducing the risk of the problem happening, not actually fixing the
> >>>> issue so that it will never happen.
> >>>>
> >>>> Please fix it so that this can never happen.
> >>>>
> >>>
> >>> Actually I have never thought the race condition issue since the crash I met is
> >>> not caused by race condition. It's caused due to Bluetooth driver call
> >>> ttyport_close() after ttyport_open() failed. This two action happen one after
> >>> another in one thread and it seems impossible to have race condition. And with
> >>> my fix the crash doesn't happen again in several test of same case.
> >>>
> >>> Let me introduce the complete process for you:
> >>> 1) hci_dev_open_sync()->
> >>> hci_dev_init_sync()->hci_dev_setup_sync()->hdev->setup()(hci_uart_setup)->qca_setup(),
> >>> here in qca_setup(), qca_read_soc_version() fails and goto out, then calls
> >>> serdev_device_close() to close tty normally. And then call serdev_device_open()
> >>> to retry.
> >>> 2) serdev_device_open() fails due to tty_init_dev() fails, then tty gets
> >>> released, which means this time the tty has been freed succesfully.
> >>> 3) Return back to upper func hci_dev_open_sync(),
> >>> hdev->close()(hci_uart_close) is called. And hci_uart_close calls
> >>> hci_uart_flush() and serdev_device_close(). serdev_device_close() tries to close
> >>> tty again, it's calltrace is serdev_device_close()->ttyport_close()->tty_lock(),
> >>> tty_unlock(), tty_release_struct(). The four funcs hci_uart_flush(), tty_lock(),
> >>> tty_unlock(), tty_release_struct() read tty pointer's value, which is invalid
> >>> and causes crash.
> >>>
> >>
> >> Hi Greg, could you please take some time to review my reply?
> >
> > I am not disputing the fact that there is a bug here, I'm just saying
> > that you can't test for a value and then act on it without a lock
> > protecting that action because the value can be changed right after you
> > test for it.
> >
> > You might not see this in your testing, as you have narrowed the window
> > that the value can change, but you have not solved the issue properly,
> > right?
> >
> > thanks,
> >
> > greg k-h
>
> >From my analysis, I think there is only one thread operating the tty of
> Bluetooth. So the case of tty changed after check will not happen.

This might be the case for your specific system, but how can you
guarantee this is the case for all serdev users?

Hint, the way you _CAN_ guarantee it is to use a lock...

{sigh}

greg k-h


Return-Path: <linux-kernel+bounces-668984-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7430841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:17:07 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 54715188DA14
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:17:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A81B1235BF3;
Sat, 31 May 2025 07:16:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bqnCQjCi"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 D3DB2EED7;
Sat, 31 May 2025 07:16:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748675810; cv=none; b=tGc7k4bwiFOxJvNqW0bvfEF0t4NW6OUHXh7TlLBYuTDjU50EmPpRDQ7Wgq+c/bunBphYXciyU+6vmo7sXGZHyFuj/wwri8LkKDarjrXd5o761POn0y+fbatKniMAGuyrYtihqkkN7lXvBeFdBQJlySRreErYya55ZGzTwxCKke4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748675810; c=relaxed/simple;
bh=zYe1+sXdqUMmr98YnXHwFBRq+aXOFiQG6wruVnbdSlU=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=sPS/tS4GqpWgRQY2y4u147ScQHBBt6NCg/IXkVpwsE+6VHhM0phBHKWNuwDFuAgyd/1nbkzaNGeIS3t0iLV82EuQXv3jv7hDV5XvcYXuIvhc0JSPOm8NGX0BGUJtXSrJlNl7hOT1OPDTHhsb77vryTQaQpSrhk7WpPLVRNoyPj0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bqnCQjCi; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 95955C4CEE3;
Sat, 31 May 2025 07:16:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748675809;
bh=zYe1+sXdqUMmr98YnXHwFBRq+aXOFiQG6wruVnbdSlU=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=bqnCQjCiCD2PbdPMeu84qfvj3Nx7yg7/rzrJ2htLvMM+rP8AmTcuFww7uFsPlBgb6
5BxKRXheiIHLHM8HR27gVsdgqIhowEPm2lDDSt8sGqBtixIkypSI/iLBIu89/MuvXV
Mkyc0eQhfUkyLpRFEWir3/XVPEGCuDKPWaC1/5kJIW7HIE3YyRWt6FWIlFT595E/DZ
Od8df52QJx0jo/LUPW2H1bJELKIDCwk+WRLadZBn/p16U8yvyjsGvuQJH3ePnn6MAG
5WZzuVvFtAjIgkW59InOd959UEMCxUuSC5FH/5MRtYIt9cyWd0L8SyxKHtlPekWcr+
eFtvjLAdNQXAg==
Date: Sat, 31 May 2025 09:16:35 +0200
From: Ingo Molnar <mingo@xxxxxxxxxx>
To: Bo Li <libo.gcs85@xxxxxxxxxxxxx>
Cc: tglx@xxxxxxxxxxxxx, mingo@xxxxxxxxxx, bp@xxxxxxxxx,
dave.hansen@xxxxxxxxxxxxxxx, x86@xxxxxxxxxx, luto@xxxxxxxxxx,
kees@xxxxxxxxxx, akpm@xxxxxxxxxxxxxxxxxxxx, david@xxxxxxxxxx,
juri.lelli@xxxxxxxxxx, vincent.guittot@xxxxxxxxxx,
peterz@xxxxxxxxxxxxx, dietmar.eggemann@xxxxxxx, hpa@xxxxxxxxx,
acme@xxxxxxxxxx, namhyung@xxxxxxxxxx, mark.rutland@xxxxxxx,
alexander.shishkin@xxxxxxxxxxxxxxx, jolsa@xxxxxxxxxx,
irogers@xxxxxxxxxx, adrian.hunter@xxxxxxxxx,
kan.liang@xxxxxxxxxxxxxxx, viro@xxxxxxxxxxxxxxxxxx,
brauner@xxxxxxxxxx, jack@xxxxxxx, lorenzo.stoakes@xxxxxxxxxx,
Liam.Howlett@xxxxxxxxxx, vbabka@xxxxxxx, rppt@xxxxxxxxxx,
surenb@xxxxxxxxxx, mhocko@xxxxxxxx, rostedt@xxxxxxxxxxx,
bsegall@xxxxxxxxxx, mgorman@xxxxxxx, vschneid@xxxxxxxxxx,
jannh@xxxxxxxxxx, pfalcato@xxxxxxx, riel@xxxxxxxxxxx,
harry.yoo@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-perf-users@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx,
linux-mm@xxxxxxxxx, duanxiongchun@xxxxxxxxxxxxx,
yinhongbo@xxxxxxxxxxxxx, dengliang.1214@xxxxxxxxxxxxx,
xieyongji@xxxxxxxxxxxxx, chaiwen.cc@xxxxxxxxxxxxx,
songmuchun@xxxxxxxxxxxxx, yuanzhu@xxxxxxxxxxxxx,
chengguozhu@xxxxxxxxxxxxx, sunjiadong.lff@xxxxxxxxxxxxx
Subject: Re: [RFC v2 00/35] optimize cost of inter-process communication
Message-ID: <aDqs0_c_vq96EWW6@xxxxxxxxx>
References: <cover.1748594840.git.libo.gcs85@xxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <cover.1748594840.git.libo.gcs85@xxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


* Bo Li <libo.gcs85@xxxxxxxxxxxxx> wrote:

> # Performance
>
> To quantify the performance improvements driven by RPAL, we measured
> latency both before and after its deployment. Experiments were
> conducted on a server equipped with two Intel(R) Xeon(R) Platinum
> 8336C CPUs (2.30 GHz) and 1 TB of memory. Latency was defined as the
> duration from when the client thread initiates a message to when the
> server thread is invoked and receives it.
>
> During testing, the client transmitted 1 million 32-byte messages, and we
> computed the per-message average latency. The results are as follows:
>
> *****************
> Without RPAL: Message length: 32 bytes, Total TSC cycles: 19616222534,
> Message count: 1000000, Average latency: 19616 cycles
> With RPAL: Message length: 32 bytes, Total TSC cycles: 1703459326,
> Message count: 1000000, Average latency: 1703 cycles
> *****************
>
> These results confirm that RPAL delivers substantial latency
> improvements over the current epoll implementationâ??achieving a
> 17,913-cycle reduction (an ~91.3% improvement) for 32-byte messages.

No, these results do not necessarily confirm that.

19,616 cycles per message on a vanilla kernel on a 2.3 GHz CPU suggests
a messaging performance of 117k messages/second or 8.5 usecs/message,
which is *way* beyond typical kernel interprocess communication
latencies on comparable CPUs:

root@localhost:~# taskset 1 perf bench sched pipe
# Running 'sched/pipe' benchmark:
# Executed 1000000 pipe operations between two processes

Total time: 2.790 [sec]

2.790614 usecs/op
358344 ops/sec

And my 2.8 usecs result was from a kernel running inside a KVM sandbox
...

( I used 'taskset' to bind the benchmark to a single CPU, to remove any
inter-CPU migration noise from the measurement. )

The scheduler parts of your series simply try to remove much of
scheduler and context switching functionality to create a special
fast-path with no FPU context switching and TLB flushing AFAICS, for
the purposes of message latency benchmarking in essence, and you then
compare it against the full scheduling and MM context switching costs
of full-blown Linux processes.

I'm not convinced, at all, that this many changes are required to speed
up the usecase you are trying to optimize:

> 61 files changed, 9710 insertions(+), 4 deletions(-)

Nor am I convinced that 9,700 lines of *new* code of a parallel
facility are needed, crudely wrapped in 1970s technology (#ifdefs),
instead of optimizing/improving facilities we already have...

So NAK for the scheduler bits, until proven otherwise (and presented in
a clean fashion, which the current series is very far from).

I'll be the first one to acknowledge that our process and MM context
switching overhead is too high and could be improved, and I have no
objections against the general goal of improving Linux inter-process
messaging performance either, I only NAK this particular
implementation/approach.

Thanks,

Ingo


Return-Path: <linux-kernel+bounces-668985-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A689941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:20:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id CB13E189F06C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:20:59 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id DE00E235073;
Sat, 31 May 2025 07:20:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="r34oAsx1"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 121B6EED7;
Sat, 31 May 2025 07:20:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748676038; cv=none; b=D/dd9DwSIddEb10NdV7MdL7fedBNR7x/6sCLPBO71GhWNmzFvtHybZOr6Nd5A3JkOjWfLLl6xrLexA/BIkAh21GrbROLoh37NHuzA154h2noCsKr1n5Drlvj7InFWGFUOAHT+/fXrkK8WgVL4jTBNJqjxds382xmS3GbQt/dY2A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748676038; c=relaxed/simple;
bh=q7StwAEdoCBLTvHso5qOc4F4XXzh+vqPXGAmdy6h9sY=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=jXZO4JDxq830Kfv4isoLw4XiLnQYqmfaTOkoK+ms6g4jeWgcu4sDDVVYgsEDhCGtmPA+76/CP/h7qjzAXB1L8R9hAUEdClBcaNh0SgIWO9EeWf060jo0DAhFdYNkeBkyGSLB2DmyPqf25wZ7D4Bz58Hkg64W5ZBO434+0Fj9xr0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=r34oAsx1; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1D60AC4CEE3;
Sat, 31 May 2025 07:20:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748676037;
bh=q7StwAEdoCBLTvHso5qOc4F4XXzh+vqPXGAmdy6h9sY=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=r34oAsx1vmLgzO6MhbhXs5hcu1zojKEgRFxumhD9ugI1bBJGdsHonJcXNzhdK0fnC
uUA1/TAd7X+h+L+HQO1APbk7fgE7M0cul4gz8yfC2W9aVcDfaMpR3ADFu1PRRH2RhY
Q8i03rEywRlDzIkkgBgYb7mTjkRYnL5iKQgC7Y8c=
Date: Sat, 31 May 2025 09:20:34 +0200
From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Xin Chen <quic_cxin@xxxxxxxxxxx>
Cc: Rob Herring <robh@xxxxxxxxxx>, Jiri Slaby <jirislaby@xxxxxxxxxx>,
linux-serial@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
liulzhao@xxxxxxxxxxxxxxxx, quic_chejiang@xxxxxxxxxxx,
zaiyongc@xxxxxxxxxxxxxxxx, quic_zijuhu@xxxxxxxxxxx,
quic_mohamull@xxxxxxxxxxx,
Panicker Harish <quic_pharish@xxxxxxxxxxx>
Subject: Re: [PATCH v1] tty: serdev: serdev-ttyport: Fix use-after-free in
ttyport_close() due to uninitialized serport->tty
Message-ID: <2025053107-ancient-departed-a202@gregkh>
References: <20250430111617.1151390-1-quic_cxin@xxxxxxxxxxx>
<2025043022-rumbling-guy-26fb@gregkh>
<d388b471-482b-48ba-a504-694529535362@xxxxxxxxxxx>
<2025050851-splatter-thesaurus-f54e@gregkh>
<38bf94e1-ebed-4d03-8ea0-4040009e8d31@xxxxxxxxxxx>
<8e171057-b3c3-4808-b49e-f04ffd310b31@xxxxxxxxxxx>
<2025052926-net-economist-a016@gregkh>
<2025052957-jawless-superhero-09be@gregkh>
<25361fe1-988d-41cc-a5f0-76773e41531a@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <25361fe1-988d-41cc-a5f0-76773e41531a@xxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 04:34:49PM +0800, Xin Chen wrote:
>
>
> On 5/29/2025 5:41 PM, Greg Kroah-Hartman wrote:
> > On Thu, May 29, 2025 at 11:07:25AM +0200, Greg Kroah-Hartman wrote:
> >> On Fri, May 23, 2025 at 10:52:27AM +0800, Xin Chen wrote:
> >>>
> >>>
> >>> On 5/14/2025 5:14 PM, Xin Chen wrote:
> >>>>
> >>>>
> >>>> On 5/8/2025 5:41 PM, Greg Kroah-Hartman wrote:
> >>>>> On Thu, May 08, 2025 at 05:29:18PM +0800, Xin Chen wrote:
> >>>>>>
> >>>>>> On 4/30/2025 7:40 PM, Greg Kroah-Hartman wrote:
> >>>>>>> On Wed, Apr 30, 2025 at 07:16:17PM +0800, Xin Chen wrote:
> >>>>>>>> When ttyport_open() fails to initialize a tty device, serport->tty is not
> >>>>>>>> --- a/drivers/tty/serdev/serdev-ttyport.c
> >>>>>>>> +++ b/drivers/tty/serdev/serdev-ttyport.c
> >>>>>>>> @@ -88,6 +88,10 @@ static void ttyport_write_flush(struct serdev_controller *ctrl)
> >>>>>>>> {
> >>>>>>>> struct serport *serport = serdev_controller_get_drvdata(ctrl);
> >>>>>>>> struct tty_struct *tty = serport->tty;
> >>>>>>>> + if (!tty) {
> >>>>>>>> + dev_err(&ctrl->dev, "tty is null\n");
> >>>>>>>> + return;
> >>>>>>>> + }
> >>>>>>>
> >>>>>>> What prevents tty from going NULL right after you just checked this?
> >>>>>>
> >>>>>> First sorry for reply so late for I have a long statutory holidays.
> >>>>>> Maybe I don't get your point. From my side, there is nothing to prevent it.
> >>>>>> Check here is to avoid code go on if tty is NULL.
> >>>>>
> >>>>> Yes, but the problem is, serport->tty could change to be NULL right
> >>>>> after you check it, so you have not removed the real race that can
> >>>>> happen here. There is no lock, so by adding this check you are only
> >>>>> reducing the risk of the problem happening, not actually fixing the
> >>>>> issue so that it will never happen.
> >>>>>
> >>>>> Please fix it so that this can never happen.
> >>>>>
> >>>>
> >>>> Actually I have never thought the race condition issue since the crash I met is
> >>>> not caused by race condition. It's caused due to Bluetooth driver call
> >>>> ttyport_close() after ttyport_open() failed. This two action happen one after
> >>>> another in one thread and it seems impossible to have race condition. And with
> >>>> my fix the crash doesn't happen again in several test of same case.
> >>>>
> >>>> Let me introduce the complete process for you:
> >>>> 1) hci_dev_open_sync()->
> >>>> hci_dev_init_sync()->hci_dev_setup_sync()->hdev->setup()(hci_uart_setup)->qca_setup(),
> >>>> here in qca_setup(), qca_read_soc_version() fails and goto out, then calls
> >>>> serdev_device_close() to close tty normally. And then call serdev_device_open()
> >>>> to retry.
> >
> > Wait, what? Why is qca_read_soc_version() failing?
>
> Actually I have not root cause why qca_read_soc_version() fails of
> __hci_cmd_sync_ev(). It may be relative to FW issue.

Please start there, don't you want to know why things are failing?

> > Why are you retrying multiple times until either you run out of attempts?
>
> This is a retry mechanism. I find the reason in the change commit message
> "Currently driver only retries to download FW if FW downloading
> is failed. Sometimes observed command timeout for version request
> command, if this happen on some platforms during boot time, then
> a reboot is needed to turn ON BT. Instead to avoid a reboot, now
> extended retry logic for version request command too."
>
> > Why are you closing the port and then opening it again right away?
>
> This is a retry mechanism as above said. Do you mean there should be a gap
> between close and open? The change owner maybe don't think about this issue.

Why are you calling close/open at all? Why does that do anything?
Doesn't that feel wrong?

Again, please root-cause the failure, don't try to paper over it by
loads of looping and odd open/close attempts that are not understood and
seem to actually cause other types of crashes :)

> > What close/open pair seems totally unnecessary, why do that at all?
> >
> > If I read that function qca_setup(), it can NEVER detect if a failure
> > really happened (i.e. if it does run out of retries, you just plow on
> > and keep going and keep on registering things and THEN return an error
> > for some reason.
> >
> > In other words, the error handling in qca_setup() is very suspect, why
> > not fix all of that up first?
> >
>
> qca_read_soc_version() in qca_setup() can detect whether the hci_dev is set up
> successfully. If if fails then a failure happens.
> You mean I should fix why qca_read_soc_version() fails?

Yes, why wouldn't you want to do that?

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-668986-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 345DB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:20:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 460A6189F60F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:21:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D897C23507A;
Sat, 31 May 2025 07:20:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="IUluujMm"
Received: from mail-pg1-f201.google.com (mail-pg1-f201.google.com [209.85.215.201])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BD69221D9C
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:20:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748676045; cv=none; b=b9aAJOvy8hkbu6P8vKrDx5/ALNG7u3Z1eVZ9yHQ4vju0p5LtzdvW/1Lys5RgvR6CVSypJA/84VFBqIpDdaP+lr5Gyer85trgsrcdFDsbC9ulUnKuarRkkruB3HyMoNzTk1Sr1Z2Hj9rfFu4VuMp/QM1wzfgRvUYx4RrolWMy3aM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748676045; c=relaxed/simple;
bh=JYRAtjfbQbexez6DzLbAn++nRbKQ2hLy6stSmzX5WLw=;
h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=g9QNkL/EN0CGaJ9fCgAXnnA6hdPkVPUoPueLRU0tyP7M1cx0EdgjERs8ja5QXz5GQKU9AkBubeIMJZdYllWLIAgxhEzssTbi3Fgeawo1vuuGtwzCXcZDVVoRtZ3As+CLgVEH5yhUomr0yYX6K0o3QDimxyBPhBK3gObSZfTs/ZY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--blakejones.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=IUluujMm; arc=none smtp.client-ip=209.85.215.201
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--blakejones.bounces.google.com
Received: by mail-pg1-f201.google.com with SMTP id 41be03b00d2f7-b26e4fe0c08so1884532a12.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:20:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748676042; x=1749280842; darn=vger.kernel.org;
h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject
:date:message-id:reply-to;
bh=FnpYXBCDsrO3XrowDX8lwOY6h9hDw7KEtyfape8Lgkc=;
b=IUluujMmTLr8Lq8RlCtUgVfdVgTBLaMQzTYCj9VYWhcNbscOLZ1S7+8tryRkTlCZ8E
YptDDkif4WfHRUW52JPvdzMZW0XV9M+Z6HhDKA/FbZHkxx8Rd2kCqMy6aYj3U4G7ZI25
GKAdEzsNxrgZU1tu3o+Ohl6ApzIFhKQrjag+Q9ZfiFIbzqzHSsaLkyENWDapINW0MDP+
aZqtGoexVFUjYm/moLw9WZ1yAy86X0R2VR17WuJyUKMbq1OZq16easU2yLfMLnienoOT
YYe6El9mPSUBfV0r4AH6+6VHZJBbI9Ce2JTGqiUcl60vDeCEWCTMTgoZBnMKAESeF/5W
Ze5A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748676042; x=1749280842;
h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=FnpYXBCDsrO3XrowDX8lwOY6h9hDw7KEtyfape8Lgkc=;
b=GBgU8h6RnHqIbEuwpXDCou7GWQgwNGZ5fExGCupUh115hBf5OZ3BrsluE2d2j6lK6J
tUkvLvycAk5x2CB7iO4bcXZ9N+94D3D7V7Yce1cn7TuOzu0Yj6MydMYtlKHs/gdNG3Bx
QXn4gHPmXHtte1SrVDFNFG8OM6kRvwz9FMql8ymF3J7MiGtUgHYK0UNs6FPwZ0xWybU1
q2KsUvi0u9EXTP7U6N9N2AeUkP6TUYttn1ZESX68loLPL2RE4sQnoQJ3DQ7487XnapjA
FJn7J+S8ds8PE0EaRNTq28IHxeezoYYDvI/eHHIL4oPBRTseIv7NPpNx7pIp2NZ1q4mA
Keew==
X-Forwarded-Encrypted: i=1; AJvYcCWSXTJr3nKiMwfXNmKij41IX9AQjKCtffzRLzeMLIRAYLaSgwTD4Ex1jfI1aTXxWEzmEC7oKfhHqgHF6TI=@vger.kernel.org
X-Gm-Message-State: AOJu0YyFroT+CvAaJzMTbPEs0n7r0UGps7VO7ju0EiNL4GgDrkrZ1JB3
UuboPDBarnGB3FECD10OB2t9aa3mZEsRQdlwCZRpPAt92R21J9EVHWudxeg1omvmkGQZdorOCM6
b89lYr6h1YRWkAC8A4HgKvg==
X-Google-Smtp-Source: AGHT+IHqVzQuAfCWZJ0i2lpECpuI8J7A8UURukqTUlT7ZQYqAtCFnDsazLTEp9TfImh5iMxGbxg/BVnItcPMlt13
X-Received: from pllq23.prod.google.com ([2002:a17:902:7897:b0:234:8a16:9a5])
(user=blakejones job=prod-delivery.src-stubby-dispatcher) by
2002:a17:902:cf0a:b0:224:26fd:82e5 with SMTP id d9443c01a7336-23529b4637emr102706605ad.48.1748676042608;
Sat, 31 May 2025 00:20:42 -0700 (PDT)
Date: Sat, 31 May 2025 00:20:31 -0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
X-Mailer: git-send-email 2.49.0.1204.g71687c7c1d-goog
Message-ID: <20250531072031.2263491-1-blakejones@xxxxxxxxxx>
Subject: [PATCH] libbpf: add support for printing BTF character arrays as strings
From: Blake Jones <blakejones@xxxxxxxxxx>
To: Alexei Starovoitov <ast@xxxxxxxxxx>, Daniel Borkmann <daniel@xxxxxxxxxxxxx>,
Andrii Nakryiko <andrii@xxxxxxxxxx>
Cc: Martin KaFai Lau <martin.lau@xxxxxxxxx>, Eduard Zingerman <eddyz87@xxxxxxxxx>, Song Liu <song@xxxxxxxxxx>,
Yonghong Song <yonghong.song@xxxxxxxxx>, John Fastabend <john.fastabend@xxxxxxxxx>,
KP Singh <kpsingh@xxxxxxxxxx>, Stanislav Fomichev <sdf@xxxxxxxxxxx>, Hao Luo <haoluo@xxxxxxxxxx>,
Jiri Olsa <jolsa@xxxxxxxxxx>, Mykola Lysenko <mykolal@xxxxxx>, Shuah Khan <shuah@xxxxxxxxxx>,
Ihor Solodrai <ihor.solodrai@xxxxxxxxx>, Namhyung Kim <namhyung@xxxxxxxxxx>,
Ian Rogers <irogers@xxxxxxxxxx>, bpf@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-kselftest@xxxxxxxxxxxxxxx, Blake Jones <blakejones@xxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The BTF dumper code currently displays arrays of characters as just that -
arrays, with each character formatted individually. Sometimes this is what
makes sense, but it's nice to be able to treat that array as a string.

This change adds a special case to the btf_dump functionality to allow
arrays of single-byte integer values to be printed as character strings.
Characters for which isprint() returns false are printed as hex-escaped
values. This is enabled when the new ".print_strings" is set to 1 in the
btf_dump_type_data_opts structure.

As an example, here's what it looks like to dump the string "hello" using
a few different field values for btf_dump_type_data_opts (.compact = 1):

- .print_strings = 0, .skip_names = 0: (char[6])['h','e','l','l','o',]
- .print_strings = 0, .skip_names = 1: ['h','e','l','l','o',]
- .print_strings = 1, .skip_names = 0: (char[6])"hello"
- .print_strings = 1, .skip_names = 1: "hello"

Here's the string "h\xff", dumped with .compact = 1 and .skip_names = 1:

- .print_strings = 0: ['h',-1,]
- .print_strings = 1: "h\xff"

Signed-off-by: Blake Jones <blakejones@xxxxxxxxxx>
---
tools/lib/bpf/btf.h | 3 +-
tools/lib/bpf/btf_dump.c | 51 ++++++++-
.../selftests/bpf/prog_tests/btf_dump.c | 102 ++++++++++++++++++
3 files changed, 154 insertions(+), 2 deletions(-)

diff --git a/tools/lib/bpf/btf.h b/tools/lib/bpf/btf.h
index 4392451d634b..be8e8e26d245 100644
--- a/tools/lib/bpf/btf.h
+++ b/tools/lib/bpf/btf.h
@@ -326,9 +326,10 @@ struct btf_dump_type_data_opts {
bool compact; /* no newlines/indentation */
bool skip_names; /* skip member/type names */
bool emit_zeroes; /* show 0-valued fields */
+ bool print_strings; /* print char arrays as strings */
size_t :0;
};
-#define btf_dump_type_data_opts__last_field emit_zeroes
+#define btf_dump_type_data_opts__last_field print_strings

LIBBPF_API int
btf_dump__dump_type_data(struct btf_dump *d, __u32 id,
diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c
index 460c3e57fadb..a07dd5accdd8 100644
--- a/tools/lib/bpf/btf_dump.c
+++ b/tools/lib/bpf/btf_dump.c
@@ -75,6 +75,7 @@ struct btf_dump_data {
bool is_array_member;
bool is_array_terminated;
bool is_array_char;
+ bool print_strings;
};

struct btf_dump {
@@ -2028,6 +2029,50 @@ static int btf_dump_var_data(struct btf_dump *d,
return btf_dump_dump_type_data(d, NULL, t, type_id, data, 0, 0);
}

+static int btf_dump_string_data(struct btf_dump *d,
+ const struct btf_type *t,
+ __u32 id,
+ const void *data)
+{
+ const struct btf_array *array = btf_array(t);
+ __u32 i;
+
+ if (!btf_is_int(skip_mods_and_typedefs(d->btf, array->type, NULL)) ||
+ btf__resolve_size(d->btf, array->type) != 1 ||
+ !d->typed_dump->print_strings) {
+ pr_warn("unexpected %s() call for array type %u\n",
+ __func__, array->type);
+ return -EINVAL;
+ }
+
+ btf_dump_data_pfx(d);
+ btf_dump_printf(d, "\"");
+
+ for (i = 0; i < array->nelems; i++, data++) {
+ char c;
+
+ if (data >= d->typed_dump->data_end)
+ return -E2BIG;
+
+ c = *(char *)data;
+ if (c == '\0') {
+ /* When printing character arrays as strings, NUL bytes
+ * are always treated as string terminators; they are
+ * never printed.
+ */
+ break;
+ }
+ if (isprint(c))
+ btf_dump_printf(d, "%c", c);
+ else
+ btf_dump_printf(d, "\\x%02x", *(__u8 *)data);
+ }
+
+ btf_dump_printf(d, "\"");
+
+ return 0;
+}
+
static int btf_dump_array_data(struct btf_dump *d,
const struct btf_type *t,
__u32 id,
@@ -2055,8 +2100,11 @@ static int btf_dump_array_data(struct btf_dump *d,
* char arrays, so if size is 1 and element is
* printable as a char, we'll do that.
*/
- if (elem_size == 1)
+ if (elem_size == 1) {
+ if (d->typed_dump->print_strings)
+ return btf_dump_string_data(d, t, id, data);
d->typed_dump->is_array_char = true;
+ }
}

/* note that we increment depth before calling btf_dump_print() below;
@@ -2544,6 +2592,7 @@ int btf_dump__dump_type_data(struct btf_dump *d, __u32 id,
d->typed_dump->compact = OPTS_GET(opts, compact, false);
d->typed_dump->skip_names = OPTS_GET(opts, skip_names, false);
d->typed_dump->emit_zeroes = OPTS_GET(opts, emit_zeroes, false);
+ d->typed_dump->print_strings = OPTS_GET(opts, print_strings, false);

ret = btf_dump_dump_type_data(d, NULL, t, id, data, 0, 0);

diff --git a/tools/testing/selftests/bpf/prog_tests/btf_dump.c b/tools/testing/selftests/bpf/prog_tests/btf_dump.c
index c0a776feec23..70e51943f148 100644
--- a/tools/testing/selftests/bpf/prog_tests/btf_dump.c
+++ b/tools/testing/selftests/bpf/prog_tests/btf_dump.c
@@ -879,6 +879,106 @@ static void test_btf_dump_var_data(struct btf *btf, struct btf_dump *d,
"static int bpf_cgrp_storage_busy = (int)2", 2);
}

+/*
+ * String-like types are generally not named, so they need to be
+ * found this way rather than via btf__find_by_name().
+ */
+static int find_char_array_type(struct btf *btf, int nelems)
+{
+ const int nr_types = btf__type_cnt(btf);
+ const int char_type = btf__find_by_name(btf, "char");
+
+ for (int i = 1; i < nr_types; i++) {
+ const struct btf_type *t;
+ const struct btf_array *at;
+
+ t = btf__type_by_id(btf, i);
+ if (btf_kind(t) != BTF_KIND_ARRAY)
+ continue;
+
+ at = btf_array(t);
+ if (at->nelems == nelems && at->type == char_type)
+ return i;
+ }
+
+ return -ENOENT;
+}
+
+static int btf_dump_string_data(struct btf *btf, struct btf_dump *d,
+ char *str, struct btf_dump_type_data_opts *opts,
+ char *ptr, size_t ptr_sz,
+ const char *expected_val)
+{
+ char name[64];
+ size_t type_sz;
+ int type_id;
+ int ret = 0;
+
+ snprintf(name, sizeof(name), "char[%zu]", ptr_sz);
+ type_id = find_char_array_type(btf, ptr_sz);
+ if (!ASSERT_GE(type_id, 0, "find type id"))
+ return -ENOENT;
+ type_sz = btf__resolve_size(btf, type_id);
+ str[0] = '\0';
+ ret = btf_dump__dump_type_data(d, type_id, ptr, ptr_sz, opts);
+ if (type_sz <= ptr_sz) {
+ if (!ASSERT_EQ(ret, type_sz, "failed/unexpected type_sz"))
+ return -EINVAL;
+ } else {
+ if (!ASSERT_EQ(ret, -E2BIG, "failed to return -E2BIG"))
+ return -EINVAL;
+ }
+ if (!ASSERT_STREQ(str, expected_val, "ensure expected/actual match"))
+ return -EFAULT;
+ return 0;
+}
+
+static void test_btf_dump_string_data(struct btf *btf, struct btf_dump *d,
+ char *str)
+{
+ DECLARE_LIBBPF_OPTS(btf_dump_type_data_opts, opts);
+
+ opts.compact = true;
+ opts.emit_zeroes = false;
+ opts.print_strings = true;
+
+ opts.skip_names = false;
+ btf_dump_string_data(btf, d, str, &opts, "foo", 4,
+ "(char[4])\"foo\"");
+
+ opts.skip_names = true;
+ btf_dump_string_data(btf, d, str, &opts, "foo", 4,
+ "\"foo\"");
+
+ /* This should have no effect. */
+ opts.emit_zeroes = false;
+ btf_dump_string_data(btf, d, str, &opts, "foo", 4,
+ "\"foo\"");
+
+ /* This should have no effect. */
+ opts.compact = false;
+ btf_dump_string_data(btf, d, str, &opts, "foo", 4,
+ "\"foo\"");
+
+ /* Non-printable characters come out as hex. */
+ btf_dump_string_data(btf, d, str, &opts, "fo\xff", 4,
+ "\"fo\\xff\"");
+ btf_dump_string_data(btf, d, str, &opts, "fo\x7", 4,
+ "\"fo\\x07\"");
+
+ /* Should get printed properly even though there's no NUL. */
+ char food[4] = { 'f', 'o', 'o', 'd' };
+
+ btf_dump_string_data(btf, d, str, &opts, food, 4,
+ "\"food\"");
+
+ /* The embedded NUL should terminate the string. */
+ char embed[4] = { 'f', 'o', '\0', 'd' };
+
+ btf_dump_string_data(btf, d, str, &opts, embed, 4,
+ "\"fo\"");
+}
+
static void test_btf_datasec(struct btf *btf, struct btf_dump *d, char *str,
const char *name, const char *expected_val,
void *data, size_t data_sz)
@@ -970,6 +1070,8 @@ void test_btf_dump() {
test_btf_dump_struct_data(btf, d, str);
if (test__start_subtest("btf_dump: var_data"))
test_btf_dump_var_data(btf, d, str);
+ if (test__start_subtest("btf_dump: string_data"))
+ test_btf_dump_string_data(btf, d, str);
btf_dump__free(d);
btf__free(btf);

--
2.49.0.1204.g71687c7c1d-goog



Return-Path: <linux-kernel+bounces-668987-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 123F241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:25:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 383234A24CF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:25:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CA235235354;
Sat, 31 May 2025 07:25:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S7uqYUDI"
Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC4321CD1E1;
Sat, 31 May 2025 07:25:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.196
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748676313; cv=none; b=fyBJSl2E/dM/5ilO3kJKk2BT+YukH4E1WhLr9OU3dbzWFTRrzZntwGyr4USpaK8gm/dpKO8TfI0e5gD1grlkK+lIwsiRHwSxQcl7ki+tqxuVbQnWGJTgt4+l93/EiINedqnsEPywGyEKO9Qn7X1kUPqzBLhYtDVKLKeaKRul7YA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748676313; c=relaxed/simple;
bh=sEJs3eN1pXM9A35ABPY3FL2cpEkPCsb4SdnpHf5Oysw=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=HawkIBBDcAygsNFfzQbs3V8LEuW/uZ41usHC5459wRyrnI5BGUxsbrzpM1i6sYUUIWKjJ3rk6BpTruLK0GuWF1BRVFvG7xNxzgzKH+fG9DPem1LHvYsHarJYGxnxeVJoQJrwhPfjayuJoVGN3yORbToHri3vOQnSQh7IsHZWTrk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=S7uqYUDI; arc=none smtp.client-ip=209.85.210.196
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f196.google.com with SMTP id d2e1a72fcca58-74264d1832eso2920018b3a.0;
Sat, 31 May 2025 00:25:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748676311; x=1749281111; darn=vger.kernel.org;
h=cc:to:message-id:content-transfer-encoding:mime-version:subject
:date:from:from:to:cc:subject:date:message-id:reply-to;
bh=tb9gy41WCYgYTze5BunX9HwNT2eQ+EQ0m35v75yOUmk=;
b=S7uqYUDIZGv+Kz43oPPm7+//bfP7p+0vdvI05pRfSy9j2TTlSb1X6zhFdte2gj1rpu
Wzvw0HkDodbx1A0PIRltgn6TkEVu+reeO5orcuz4E1VlAMHDII4ceMy6ohTs/ftwkwPG
I1ziYZjzKuJa8H82rxPwzF86YkN5BTABGJl1A0xCw7oI3/2+4w2DWBipFBpDvXpMv7NL
U0USr9nq3KIBd8Ycs229Kc5MTbJALbGG4aOz6rljjUlUtneZgjUjCdSatOQsNGHJudfh
Gc+eK56FR4Uv67A3XEdBdnVeRJn8hL0o3vXW6AMYEL+JZGfD5pxi/9Px6lgK6MOrC86r
R/Mg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748676311; x=1749281111;
h=cc:to:message-id:content-transfer-encoding:mime-version:subject
:date:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=tb9gy41WCYgYTze5BunX9HwNT2eQ+EQ0m35v75yOUmk=;
b=dIq3sogJjBcaDMDhNK3EiqK4o6vZvYQOtI9Y2qncjazXzvYCm3yAxENKBxHSvbdzd9
IUA6wEpH4NYj77XNN4ivW9T5vZSa/tGjbdIx2d9v3OgBw4xP55ItksScYO/Oxijm3E2V
f0fZ97Vf4PUOm2IL6F0FYh8pNRUXJUPw6tDEUSlhVHMQy8bDZNoy+gsobXT7g3OvXNBw
/OxKNxTwBx7OhReUGCr6uRSaXde86vycdoG+1srXSLrA5xYINO8XqN7+iobrW9AohCvL
ayFLb+pXj6FvGjNm0ygd+AOCsgQNMkAx+2OlGy2zABejH/gPRScv3CbOlgj+qzB/Ef2D
qLxQ==
X-Forwarded-Encrypted: i=1; AJvYcCWnOD3eYrN0GQw1E/aLPt6Hzafa0IgC54gOQDSUTBgiylqD1HqbgPsje/Jh2E9npxLsnMqE/kudGgdpRKs=@vger.kernel.org
X-Gm-Message-State: AOJu0Yxx4GDYKoiU6HyTMoOkp3wn+m06PmZ8ey+b8Qcq4af98Cc2Y5xO
2LGpl3MbbKGokTmICLBBZ4YpaCRJ8quFGcHU3uys6eZFe/hj38gONN+z
X-Gm-Gg: ASbGncuSOxGEIbQzkHNN3rJEqcalZKZh53xr/tKqFr/mD+5KaSZqlcy13zVmyf0UQMw
MFwu+KwZW4zWop8fy8KrAiglVgEO35v2k+lQ7oA3r6SzqyZMFxLlVRGfLGNgIlevUQHFAhWhaHU
aGLkp+szaFMTxYiQZb0pFD9+XzIS1dUSh5Qy5AL9y4EFRF2FJpT/zufmsr/ezNjNhdVvpqoSd5k
G2LMO80D959GnPdP0dFMnkK0ENQnuJfg9hUzHMwimmO6dmKyU4UBX+PTU+HB8CVHVxee8H0L7iP
xj/ogBpgTemYp0DKYJG3wpIwmrCOIfrCt1/jX0NJCsV7HUSq/CPnOwJg42q955i/AI0ICw==
X-Google-Smtp-Source: AGHT+IEHz/d2PhDuz8MAfJqDuNx8fU6jAudf7ehnCahFtjAR8/ORj9wyQ5AF/9aDjb3wguzDHWmGyw==
X-Received: by 2002:a05:6a20:7349:b0:215:d565:3026 with SMTP id adf61e73a8af0-21bad1573damr1434429637.20.1748676310781;
Sat, 31 May 2025 00:25:10 -0700 (PDT)
Received: from [127.0.1.1] ([240e:341:e44:6f00:3985:d8aa:a949:3e22])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747afe9643fsm4101113b3a.2.2025.05.31.00.25.07
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 00:25:10 -0700 (PDT)
From: Troy Mitchell <troymitchell988@xxxxxxxxx>
Date: Sat, 31 May 2025 15:20:40 +0800
Subject: [PATCH v2] rtc: pcf8563: fix wrong alarm register
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-pcf8563-fix-alarm-v2-1-cac4b1716167@xxxxxxxxx>
X-B4-Tracking: v=1; b=H4sIAMetOmgC/32NQQ6CMBBFr0Jm7RgKDhRX3sOwKGWASYCS1hAN6
d2tHMDl+z///QMCe+EA9+wAz7sEcWuC4pKBncw6MkqfGIq8oPymGtzsoKkqcZA3mtn4BYlrXQ9
5Q7pSkHab51SezmebeJLwcv5zXuzql/6z7QoVdropDfVM1OnHuBiZr9Yt0MYYv6xPZdKyAAAA
X-Change-ID: 20250419-pcf8563-fix-alarm-5e787f095861
To: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>
Cc: linux-rtc@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Troy Mitchell <troymitchell988@xxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748676045; l=1668;
i=troymitchell988@xxxxxxxxx; h=from:subject:message-id;
bh=sEJs3eN1pXM9A35ABPY3FL2cpEkPCsb4SdnpHf5Oysw=;
b=/S3wCjKhAbXZmbfcU+bjQSA9mgsA8tmAEEnQwaUKVlN6zA4xGmGHWg/tJ29izLwpoQb/Lq3lN
CWSHcjE3GQBBHofbANOiYTx9JwPzhxfQxcHY/ld9IMK8DV1zckGvJ0x
X-Developer-Key: i=troymitchell988@xxxxxxxxx; a=ed25519;
pk=2spEMGBd/Wkpd36N1aD9KFWOk0aHrhVxZQt+jxLXVC0=
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

When the regmap framework was introduced to this driver,
the PCF8563_REG_AMN register within the set_alarm function was
incorrectly changed to PCF8563_REG_SC.

The PCF8563_REG_SC register is the seconds register.
This caused alarm values to be written to the seconds register
when an alarm was set. Which means the alarm would not trigger
as expected and the seconds register would be overwritten
with an incorrect value.

Signed-off-by: Troy Mitchell <troymitchell988@xxxxxxxxx>
---
Since this patch[1], the set_alarm function has been setting
an wrong register.

Link:
https://lore.kernel.org/all/20241010084949.3351182-3-iwamatsu@xxxxxxxxxxx/ [1]
---
Changes in v2:
- Remove irrelevant changes
- Link to v1: https://lore.kernel.org/r/20250419-pcf8563-fix-alarm-v1-1-b893a5de55b8@xxxxxxxxx
---
drivers/rtc/rtc-pcf8563.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/rtc/rtc-pcf8563.c b/drivers/rtc/rtc-pcf8563.c
index 5a084d426e58d09cfedf0809695a96a27627c420..b2611697fa5e3adc61f687e39385d10736dec677 100644
--- a/drivers/rtc/rtc-pcf8563.c
+++ b/drivers/rtc/rtc-pcf8563.c
@@ -285,7 +285,7 @@ static int pcf8563_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *tm)
buf[2] = bin2bcd(tm->time.tm_mday);
buf[3] = tm->time.tm_wday & 0x07;

- err = regmap_bulk_write(pcf8563->regmap, PCF8563_REG_SC, buf,
+ err = regmap_bulk_write(pcf8563->regmap, PCF8563_REG_AMN, buf,
sizeof(buf));
if (err)
return err;

---
base-commit: 8560697b23dc2f405cb463af2b17256a9888129d
change-id: 20250419-pcf8563-fix-alarm-5e787f095861

Best regards,
--
Troy Mitchell <troymitchell988@xxxxxxxxx>



Return-Path: <linux-kernel+bounces-668988-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 137CF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:25:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 6DED09E4F9B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:25:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7A751235354;
Sat, 31 May 2025 07:25:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="czlwe8Yt"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 B269B23505E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:25:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748676329; cv=none; b=sU88H0k8Ljf6YOtg4IogwunnrJlPIBOBgj9TkwEY0+thbcBSrJJP5KecCnyvwm62CgA0/wgTcDxtYuP7x/YjDegypCoFVFJviW2y6FuQQ4cfnwqU/8FF1/9j9SV93nedgp4r+VsznQLcOpAM3X3Z12eGEbIk36mJCtEdBIHLUck=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748676329; c=relaxed/simple;
bh=NagLXxxSyzmFTRRKMhPYoJXTUDNWkfTfgXDNoIv4eeM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=gSYFVG2oXUnM6M/2XvoxvOAGPEc3KQWoRATJM9jjhVL9aDB+hWzn5jvv1Ua86L/3qsRpBBJFl+W3TJOxj9zEUje//2HW+7JYfVbETOGwsqQCcLGUYTjgJh6BCZttNe3qrVB4szdxMG38aUp4YlOuGLOahX+BmtLh1YbpPI5rlUw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=czlwe8Yt; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2903DC4CEE3;
Sat, 31 May 2025 07:25:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748676329;
bh=NagLXxxSyzmFTRRKMhPYoJXTUDNWkfTfgXDNoIv4eeM=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=czlwe8YtSu2aDzsDCw5JszDxe3yxoiianoYYKrbPsDPNJkLszQwXO+1xOCjXzKmqn
bxnPyY39tbpMrCcH7TtH/Pz1g5I7EKmwTqnv6lN3rgcYt7vrM2MZufOW7SI/2JM5ig
aKSTcmdwlPdkI2NMJZ5si29yleVD0N8on+N356/BZnkiTWs0u3ppSFBFLAix166Bzy
gThQ6cP8vTA/0NZx4wJ9+NRRUIUewylFYG8iwFOQedGEKuT7s0X+UJR9OS7tFKld5v
l79VsK1TW6nftr8Q/YsPvG/6AFwvrfmyRU4/sRwQInkfNQrJMpzlE/OOxud43t06Jb
DMAaaF7SrqSdg==
Date: Sat, 31 May 2025 09:25:24 +0200
From: Ingo Molnar <mingo@xxxxxxxxxx>
To: Rik van Riel <riel@xxxxxxxxxxx>
Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>,
Andy Lutomirski <luto@xxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Borislav Petkov <bp@xxxxxxxxx>, x86@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, kernel-team@xxxxxxxx
Subject: Re: [PATCH v2] x86/mm: resize user_pcid_flush_mask for PTI /
broadcast TLB flush combination
Message-ID: <aDqu5Fhbf3mV6Xsj@xxxxxxxxx>
References: <20250530174136.61b8086a@fangorn>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530174136.61b8086a@fangorn>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


* Rik van Riel <riel@xxxxxxxxxxx> wrote:

> [re-sent]
> ---8<---
> From 96958fa1ed02e2434305fc7b0e37374eee899daf Mon Sep 17 00:00:00 2001
> From: Rik van Riel <riel@xxxxxxxx>
> Date: Fri, 16 May 2025 08:37:04 -0700
> Subject: [PATCH] x86/mm: resize user_pcid_flush_mask for PTI / broadcast TLB flush combination

1)

Please always check whether the title style you are using matches that
of the subsystem you are submitting it to. (x86 in this case, and no,
it doesn't match it)

2)

Also, 'resize' is not the proper verb for a bug fix ...

> - invalidate_user_asid() sets a bit corresponding to the process pcid in user_pcid_flush_mask
> - SWITCH_TO_USER_CR3 tests and clears a bit corresponding to the process PCID in user_pcid_flush_mask

3)

Why are 'pcid' and 'PCID' capitalized differently right next to each
other? This is completely unnecessary noise that makes a maintainer
question of how attentively this patch was created.

Thanks,

Ingo


Return-Path: <linux-kernel+bounces-668989-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2397741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:26:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 39B673A8318
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:26:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8BDAC2367A3;
Sat, 31 May 2025 07:26:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="mVF3H8vJ"
Received: from mail-vk1-f181.google.com (mail-vk1-f181.google.com [209.85.221.181])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6ADEF23505E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:26:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.181
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748676393; cv=none; b=FGbUahrYHW7K6kSuZv7EZsucRpfgRTWnDHCL3D8zCRCzVDGZeOy17R5IUEgl8YQcGmpLCfs/0CQ4DE5NRmVYFCqFDJp3sjtBMuw3Vs7nxUwP9dMKJTql1J5EngN5GWo/gJIBNQFKQKqeTEtC2VpJN02GfWKJ2C94zhcmZhngRSw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748676393; c=relaxed/simple;
bh=X0LYj/eW+1AU4BHmHS1Hd51x+t+f70loUF5+rqrYZxI=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=o0/BTWoebowpRWwQ0LyCN1t0T8J1XAhu1cwr3DYlj7h3J3WCGwaxTUXJw8faPWTDgS5dIBlMv5TZaeq0JDNg5WHNfoRdyiw7Dgq5rT0PnLZegbX/XaoKrhqrj+IxzLI+xjATLxrjP/sMCNsBBSZY8y/diTLQQY9BVrzVcKhQtI8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=mVF3H8vJ; arc=none smtp.client-ip=209.85.221.181
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-vk1-f181.google.com with SMTP id 71dfb90a1353d-525b44ec88aso884912e0c.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:26:32 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748676391; x=1749281191; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=X0LYj/eW+1AU4BHmHS1Hd51x+t+f70loUF5+rqrYZxI=;
b=mVF3H8vJudZMrlnGnshjFuzUdweko06tEBl8b4UJ52uh+KP2QtcTmFavN8kud80HBY
HcyiRasg1RfAkMA4WOxMSS0e4DOGX0+vkQhaj6pFp9DbAvxnPJgmv/vhmxk8aPm/nF5P
AJnBVLBGTeO+BFqpungoaRPzm0V92qwO37DRm8a8bdJz+dhBH5lOxK5UoX1NscTIbzj8
lTZryJpe9teUSDaMeu7JJVdIjCYpTVgEEoZPXA0EYwlyl55Y8RY2hxhNtzxtIxb8jl9+
EynNYSMaggaydKTZODgwso689k95czVWem3vfTa+PPYvKMzcYyx7YXjS3d7PwbEJVf4v
2VLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748676391; x=1749281191;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=X0LYj/eW+1AU4BHmHS1Hd51x+t+f70loUF5+rqrYZxI=;
b=oPrR+xAAjMoHnIFK70hOOvx4lw7BknyH0LE1cLYen7TlIYj7boanhzs9qrForziN8a
8ePfDmCl+9xJV2lsS5Yemes1KVqpGWvT8j3NSL+mI2vH3EcPVv3QUmMsnsvg96iiJaPm
cQaJiE1p1h2onaATtQsJ4eSWDyIDXsWJkj5iEY29yZOfYeRqjE7KZG2va+HSg7nNHms+
5d8NuDmaVK9ryCZ3Doum/Xhly2MvPYdlZEgZcHCIgaLFwiIM9q9i73Bl75AYgv/q0DYU
xu9bfADAQ63vkfNBtZB+n1OKIbGDJ8ZgVIN3YvYEXMGzbGBjApVceC7hUKgKGfeD3KP/
WJ1g==
X-Forwarded-Encrypted: i=1; AJvYcCXgIo+gosGdm+hPZIIGWVpAaKV7ID+AbPjo01laVFPBeLf/xb88C9vbhXeBRdzhEQ5IH9En9ZNFlFpFnYY=@vger.kernel.org
X-Gm-Message-State: AOJu0Ywb6K4OeeD1bXwR+UiZ3to5wwTn4NEoMJ+Nla9W23KiBNsAIeje
uzWmpC266fR/NPpSCXCkVGqA59qN9D+Md90FDCBvIhXo7hSvVGIT07hgbzHLghlNGrfDXoo4N91
Y+BS7UIWSObhPJ01KNFtf93FuRFiGuFa3A4Op2Nvq
X-Gm-Gg: ASbGnctx+bP4EHSQ9giCW59eRrmG5IFsH0ZS1pAK4DL7ximQ/2cRCcvDkjjQkHQ0kZz
Y9x0eQ7St6K63K/0d/XIWK7OBXkte34haByvDxXHiOJ4rlYEWDtWOoYn1Eqbs+wNTICfQGnhJTL
NNsqJqcCt2BiqZdixbRTSOjm+Gd6XqFVj4tgERTCbp5cs=
X-Google-Smtp-Source: AGHT+IG7+8v8kogFT0/mnSqsIheQS6+VT2Gk/Es74puVTsuV9tUkd/CTGzoaKIcaMncezCtLdPZlZwKfCwPXYDgxLD4=
X-Received: by 2002:a05:6122:8285:b0:520:61ee:c814 with SMTP id
71dfb90a1353d-53093688632mr459050e0c.1.1748676390966; Sat, 31 May 2025
00:26:30 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250521222725.3895192-1-blakejones@xxxxxxxxxx>
<20250521222725.3895192-2-blakejones@xxxxxxxxxx> <aC9iF4_eASPkPxXd@x1>
<CAP_z_Cg_vH1+BAm87U4gYQ0hDRGtHkkYb2DHtTRSd_QNvg3ZLQ@xxxxxxxxxxxxxx>
<CAP_z_ChErhmooT5rhyXH8L-Ltkz3xdJ7PG20UKDpn9usMUgqTA@xxxxxxxxxxxxxx> <aDntjJcJsrQWfPkB@xxxxxxxxxx>
In-Reply-To: <aDntjJcJsrQWfPkB@xxxxxxxxxx>
From: Blake Jones <blakejones@xxxxxxxxxx>
Date: Sat, 31 May 2025 00:26:20 -0700
X-Gm-Features: AX0GCFvP4PKt3NFBYoQVdhXB4HmMLosfmYPKc30P1NvRJeaacdkCzkp9zNZYmwU
Message-ID: <CAP_z_CjLtMq_FvmijnFUQbD5UUw=T9jP_pHWCw5fS=38dgSh9g@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 1/3] perf: add support for printing BTF character arrays
as strings
To: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>, Alexei Starovoitov <ast@xxxxxxxxxx>,
Daniel Borkmann <daniel@xxxxxxxxxxxxx>, Andrii Nakryiko <andrii@xxxxxxxxxx>,
Martin KaFai Lau <martin.lau@xxxxxxxxx>, Eduard Zingerman <eddyz87@xxxxxxxxx>, Song Liu <song@xxxxxxxxxx>,
Yonghong Song <yonghong.song@xxxxxxxxx>, John Fastabend <john.fastabend@xxxxxxxxx>,
KP Singh <kpsingh@xxxxxxxxxx>, Stanislav Fomichev <sdf@xxxxxxxxxxx>, Hao Luo <haoluo@xxxxxxxxxx>,
Jiri Olsa <jolsa@xxxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>,
Mark Rutland <mark.rutland@xxxxxxx>,
Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>, Ian Rogers <irogers@xxxxxxxxxx>,
Adrian Hunter <adrian.hunter@xxxxxxxxx>, Kan Liang <kan.liang@xxxxxxxxxxxxxxx>,
Chun-Tse Shao <ctshao@xxxxxxxxxx>, Zhongqiu Han <quic_zhonhan@xxxxxxxxxxx>,
James Clark <james.clark@xxxxxxxxxx>, Charlie Jenkins <charlie@xxxxxxxxxxxx>,
Andi Kleen <ak@xxxxxxxxxxxxxxx>, Dmitry Vyukov <dvyukov@xxxxxxxxxx>, Leo Yan <leo.yan@xxxxxxx>,
Yujie Liu <yujie.liu@xxxxxxxxx>, Graham Woodward <graham.woodward@xxxxxxx>,
Yicong Yang <yangyicong@xxxxxxxxxxxxx>, Ben Gainey <ben.gainey@xxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, bpf@xxxxxxxxxxxxxxx,
linux-perf-users@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Namhyung,

On Fri, May 30, 2025 at 10:40=E2=80=AFAM Namhyung Kim <namhyung@xxxxxxxxxx>=
wrote:
> I think it's better to go to the bpf tree although it'd take longer to
> get your perf patches.

Thanks for the suggestion. I've sent this patch to the bpf tree, and I'll
resend the rest of this series once that change makes its way to this tree.

Blake


Return-Path: <linux-kernel+bounces-668990-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4C6FA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:38:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 1022A7A748B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:37:05 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E6BF922F74B;
Sat, 31 May 2025 07:38:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="N/3FjNM9"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 2C63ABE46;
Sat, 31 May 2025 07:38:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677092; cv=none; b=EiZB+3Jld+OawiXPYtYpRmZsQApBSoTPcavpU8yfa5e3hrl940sZWsIqzdmniiF/pUHcKr6RPrKbQPddLfz6e5fq7wYzvhsGG7E2MAcifwxEJxGOW9/L8SpTTqKKdaiLCUj+ABmoM2F5eHlW5zq73E+yftVZ4SFdBwmSlIVC2Bo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677092; c=relaxed/simple;
bh=sOSwqv8iikuP9e7lDjX6UD+qNQoBTAK/pKuD3jZ//KY=;
h=Mime-Version:Content-Type:Date:Message-Id:From:To:Cc:Subject:
References:In-Reply-To; b=GSp6mO9FVOzo7VbPhD/gMybEurLSBooeKsOOqTxoLXuqhLzps4mbRhuKTkFGeg87DnWA8n9u2KNuNyx0HnLzk2E19kV3ald0hN1fF6ADdV5GrrXXUOWU1TSzAmfsareuD+Scrn6qKFkTzOUjTDrxDlPv7IWdLKFo6V8sPyBSj10=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=N/3FjNM9; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7FFB0C4CEE3;
Sat, 31 May 2025 07:38:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748677090;
bh=sOSwqv8iikuP9e7lDjX6UD+qNQoBTAK/pKuD3jZ//KY=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=N/3FjNM9jAjzMYG5+ce6LfBiY+E6Yir+b2VSv4x8lOTBiSEz9oiIWi36zxJiZXSHV
2K05+jPMli7x/uFzbB3gQ3DT9fBFpCNcBYSmXZly9553FocdCBhR5qdl36KvAtQ0d6
HKvSiG6wbh2A67qa4sDS5HcJBuwE1WWoCOemFQy1geJytG4S2L6dkIVZ22GzkRnGMW
dVt8GweELAgKOWh+ALOJ3gaCgIbY5uZ00F8dMMZaDWDl1lcDBKdqE1mPsjNjJ9kLV/
baiZfKFes5vdPzcoxEhzdlStewwAeIUfpAZ8S0YROFjzvGiRT25ZQZ9KrSgYucDA42
bAyhcTE6IeosA==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 09:38:05 +0200
Message-Id: <DAA6AJ0N7JAA.WCEOCHKVFLDD@xxxxxxxxxx>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Sai Vishnu" <saivishnu725@xxxxxxxxx>, "Miguel Ojeda"
<miguel.ojeda.sandonis@xxxxxxxxx>
Cc: <rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>,
<ojeda@xxxxxxxxxx>, <alex.gaynor@xxxxxxxxx>, <boqun.feng@xxxxxxxxx>,
<gary@xxxxxxxxxxx>, <bjorn3_gh@xxxxxxxxxxxxxx>, <a.hindborg@xxxxxxxxxx>,
<aliceryhl@xxxxxxxxxx>, <tmgross@xxxxxxxxx>, <dakr@xxxxxxxxxx>,
<gregkh@xxxxxxxxxxxxxxxxxxx>, <daniel.almeida@xxxxxxxxxxxxx>,
<me@xxxxxxxxxx>
Subject: Re: [PATCH] rust: doc: Clean up formatting in io.rs
X-Mailer: aerc 0.20.1
References: <20250530123129.31505-2-saivishnu725@xxxxxxxxx>
<DA9QL5A8747E.17QE50WBD6JOT@xxxxxxxxxx>
<CANiq72npoVzz01syorhUcED=tcs9FJf8bFHthFrUQ-bE-AXJ8Q@xxxxxxxxxxxxxx>
<CAFttn54qYu3ajcBPWWnhjAS-6pQ8Ox3ujbTF6D=Q_BOMkTLq6g@xxxxxxxxxxxxxx>
In-Reply-To: <CAFttn54qYu3ajcBPWWnhjAS-6pQ8Ox3ujbTF6D=Q_BOMkTLq6g@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 4:57 AM CEST, Sai Vishnu wrote:
> On Sat, May 31, 2025 at 1:09=E2=80=AFAM Miguel Ojeda
> <miguel.ojeda.sandonis@xxxxxxxxx> wrote:
>>
>> We should also probably add "region" there, after "memory", or
>> similar, especially if we remove the second part.
>
> Thanks for the feedback! I=E2=80=99ve decided to update the comment to ju=
st:
>
> /// IO-mapped memory
>
> I=E2=80=99m new to kernel development. Should I just share the updated pa=
tch
> here or send a v2 that refers to this one? Thanks!

Normally, you send a v2 with a changelog and a link to each previous
version. For patch series with a cover letter it is often placed there.
Since you don't need one, you should put the changelog after the `---`
(anything that isn't a diff there will be ignored by git when applying).

I'd give others a few more days to review. (this patch there most likely
won't be any additional comments, but it also doesn't hurt)

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-668991-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C6FA441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:46:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E15354A30D6
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:46:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E060E22C35D;
Sat, 31 May 2025 07:46:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="t1+DShEQ"
Received: from casper.infradead.org (casper.infradead.org [90.155.50.34])
(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 44EBA143736;
Sat, 31 May 2025 07:46:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677600; cv=none; b=LWWZrVP22+0wTDI8aEsqdCwaAlgsgCD1Ig+aAoxb1lCF3cU3Z8/ScfVM9gS3mmgW9YQbuORg2EDMbflO8CoXMwwJpd27bL3swyC9HVMxW+KT2Tcs2AOpLdXx0+QN485rtTy7gEIFc5XzeXgRHnCvJ4xAiMC8FHWToRCKnXhKY3A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677600; c=relaxed/simple;
bh=PHXwHYatlzqnT0bA0XszBShyk4bieDVek0aNBqNmvIQ=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=CJs7XCINXfTNhqOORWy+9wnvTjdQWS4AgkveJdaToTTlErVzsky8tRiPppf3CcPlkL91rsVAuS34Iko1B36jn82I0xuRCCSfOTAanuPwDHoasuzXyX4e2B/4dgfdCXQDo6NG4g1yOwUUbUV+UFYunDkg3+k8m97f/AgBoGgBsIo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=t1+DShEQ; arc=none smtp.client-ip=90.155.50.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version:
References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:
Content-Transfer-Encoding:Content-ID:Content-Description;
bh=vHtJ0rUGHhX/CQdQbU6ZDVMIjLovSJXXeNJdF3gZOCs=; b=t1+DShEQzcDn5LQT0aspjXhRf/
7RxT5oLc5jrneWc82F5Dr0LTy9I3aEPpiNWX6OuKSE7V6wdElpBM9sLNZO07JvGZ8xu3M40Aztr+g
CdiSLVamsrgUoitOH+D6cqsxC5TFsyukFy41zbubp8nmarAGtLnLXy/eUJ8u/+JI6QIhDI9dBbNxK
8SU8A//s9ARGQlqB8IHniHCMIntW60Jmt1CEgjep0QI/z5ooPeFd54sk+QO7hQsRwm5nO2M05MMGb
TK9kIerCSNvF9Vm1IlYV+Yc7uIKodSbWa6akTkgN5bvH9zMXLs5j8Id5y2HtLRzABaHUzH4SaG5ou
HEh/X2zQ==;
Received: from 77-249-17-252.cable.dynamic.v4.ziggo.nl ([77.249.17.252] helo=noisy.programming.kicks-ass.net)
by casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLGv2-0000000Gb56-0pYT;
Sat, 31 May 2025 07:46:16 +0000
Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000)
id 90FE1300787; Sat, 31 May 2025 09:46:15 +0200 (CEST)
Date: Sat, 31 May 2025 09:46:15 +0200
From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
To: Alessandro Carminati <acarmina@xxxxxxxxxx>
Cc: linux-kselftest@xxxxxxxxxxxxxxx,
Dan Carpenter <dan.carpenter@xxxxxxxxxx>,
Kees Cook <keescook@xxxxxxxxxxxx>,
Daniel Diaz <daniel.diaz@xxxxxxxxxx>,
David Gow <davidgow@xxxxxxxxxx>,
Arthur Grillo <arthurgrillo@xxxxxxxxxx>,
Brendan Higgins <brendan.higgins@xxxxxxxxx>,
Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Maxime Ripard <mripard@xxxxxxxxxx>,
Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>,
Daniel Vetter <daniel@xxxxxxxx>, Guenter Roeck <linux@xxxxxxxxxxxx>,
Alessandro Carminati <alessandro.carminati@xxxxxxxxx>,
Jani Nikula <jani.nikula@xxxxxxxxx>,
Jeff Johnson <jeff.johnson@xxxxxxxxxxxxxxxx>,
Josh Poimboeuf <jpoimboe@xxxxxxxxxx>,
Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>,
Linux Kernel Functional Testing <lkft@xxxxxxxxxx>,
dri-devel@xxxxxxxxxxxxxxxxxxxxx, kunit-dev@xxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Mark Rutland <mark.rutland@xxxxxxx>
Subject: Re: [PATCH v5 1/5] bug/kunit: Core support for suppressing warning
backtraces
Message-ID: <20250531074615.GA19817@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250526132755.166150-1-acarmina@xxxxxxxxxx>
<20250526132755.166150-2-acarmina@xxxxxxxxxx>
<20250529090129.GZ24938@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<CAGegRW76X8Fk_5qqOBw_aqBwAkQTsc8kXKHEuu9ECeXzdJwMSw@xxxxxxxxxxxxxx>
<20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 04:01:40PM +0200, Peter Zijlstra wrote:

> I'm not really concerned with performance here, but more with the size
> of the code emitted by WARN_ONCE(). There are a *ton* of WARN sites,
> while only one report_bug() and printk().

We need a new and stronger unlikely(), resulting in the compiler being
forced to split a .cold sub-function/part which lives in .text.unlikely

At that point it becomes less of a concern I suppose.

AFAIK the only means of achieving that with the current compilers is
doing a manual function split and marking the part __cold -- which is
unfortunate.

At some point GCC explored label attributes, and we were able to mark
labels with cold, but that never really worked / went anywhere.


Return-Path: <linux-kernel+bounces-668992-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5BE5D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:47:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 771C41BA3C29
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:47:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6DE1322F769;
Sat, 31 May 2025 07:47:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="m4l+/YKI"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 87204143736;
Sat, 31 May 2025 07:47:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677627; cv=none; b=Rrr2J4ueAgRLv5QTQa7QLpkJMNrgYymkOnvgWEFmhEyRCwymLKORgRReYcPF0BVw5yr0mMaBrELG9nXIa7WYDicx9T13zVU9VzTn+me6l/WL1t3UFSs4aTFNxcnqe8f4H3CHgW5avF+lIJkx1IngpdnDNZf3OlagUVcI8/Cj678=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677627; c=relaxed/simple;
bh=sT8ax5dbTHlITwDR7EB59IJncQ2gJREmL936Z5hIaHo=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=De0DmsTMkWvYx2KTIqKGsNmMiZwDlwR7cRT7PX+IX59zuSycU8likPhc2zA5ZxciTDg5hb6E6WovPPuFuXUUDhGpy4/Gn4ThWWNhEBaXKalYlsVJdtxenshPaxqt4zUe9HHJOkOvMr/jGJ8XHfqaTBiU1hyixrKmEEeOb4ITPIg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=m4l+/YKI; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id EEAB7C4CEE3;
Sat, 31 May 2025 07:46:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748677627;
bh=sT8ax5dbTHlITwDR7EB59IJncQ2gJREmL936Z5hIaHo=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=m4l+/YKIs/KGay8y5vMJQ2bX/6i3fxjZ0gJ0+6SfB85gTMv9isMoswQqVsv4Dm+Yl
5gBNStHJ++v6+O0EtdOWObMpAyqqJtKiiiHCvqbrRYRGbqgk54Gsoto2+2xSaTGEX/
UjUmkcVswzLe8hErYSg4k60I8QKcdT/ikfO8I1+QYom9bCQCk6Jq/eiD5Mj9Y39hlp
sAiyJS/N7snMk3XQ2/Bvj/0wr0qADR+cJOCyKzCUqM5WQ0/2ASiXFMHCRpT2zrg06m
ciDBHHpS087W/LZIa9rTY4pgSp3axMokcqCHGPjdvNd0LKzornyQw2tVBbwFtOMgVG
zRx/WnEiPnYpA==
Date: Sat, 31 May 2025 10:46:52 +0300
From: Mike Rapoport <rppt@xxxxxxxxxx>
To: Ryan Roberts <ryan.roberts@xxxxxxx>
Cc: Lorenzo Stoakes <lorenzo.stoakes@xxxxxxxxxx>,
Catalin Marinas <catalin.marinas@xxxxxxx>,
Will Deacon <will@xxxxxxxxxx>,
Madhavan Srinivasan <maddy@xxxxxxxxxxxxx>,
Michael Ellerman <mpe@xxxxxxxxxxxxxx>,
Nicholas Piggin <npiggin@xxxxxxxxx>,
Christophe Leroy <christophe.leroy@xxxxxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Andreas Larsson <andreas@xxxxxxxxxxx>,
Juergen Gross <jgross@xxxxxxxx>,
Ajay Kaher <ajay.kaher@xxxxxxxxxxxx>,
Alexey Makhalov <alexey.makhalov@xxxxxxxxxxxx>,
Thomas Gleixner <tglx@xxxxxxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>,
Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>,
"H. Peter Anvin" <hpa@xxxxxxxxx>,
Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>,
"Aneesh Kumar K.V" <aneesh.kumar@xxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Arnd Bergmann <arnd@xxxxxxxx>, David Hildenbrand <david@xxxxxxxxxx>,
"Liam R. Howlett" <Liam.Howlett@xxxxxxxxxx>,
Vlastimil Babka <vbabka@xxxxxxx>,
Suren Baghdasaryan <surenb@xxxxxxxxxx>,
Michal Hocko <mhocko@xxxxxxxx>, Alexei Starovoitov <ast@xxxxxxxxxx>,
Andrey Ryabinin <ryabinin.a.a@xxxxxxxxx>,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linuxppc-dev@xxxxxxxxxxxxxxxx, sparclinux@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxxx,
linux-mm@xxxxxxxxx, Jann Horn <jannh@xxxxxxxxxx>
Subject: Re: [RFC PATCH v1 0/6] Lazy mmu mode fixes and improvements
Message-ID: <aDqz7H-oBo35FRXe@xxxxxxxxxx>
References: <20250530140446.2387131-1-ryan.roberts@xxxxxxx>
<5b5d6352-9018-4658-b8fe-6eadaad46881@lucifer.local>
<af9a96e1-064b-4627-bd34-e7e7e8a05452@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <af9a96e1-064b-4627-bd34-e7e7e8a05452@xxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Ryan,

On Fri, May 30, 2025 at 04:55:36PM +0100, Ryan Roberts wrote:
> On 30/05/2025 15:47, Lorenzo Stoakes wrote:
> > +cc Jann who is a specialist in all things page table-y and especially scary
> > edge cases :)
> >
> > On Fri, May 30, 2025 at 03:04:38PM +0100, Ryan Roberts wrote:
> >> Hi All,
> >>
> >> I recently added support for lazy mmu mode on arm64. The series is now in
> >> Linus's tree so should be in v6.16-rc1. But during testing in linux-next we
> >> found some ugly corners (unexpected nesting). I was able to fix those issues by
> >> making the arm64 implementation more permissive (like the other arches). But
> >> this is quite fragile IMHO. So I'd rather fix the root cause and ensure that
> >> lazy mmu mode never nests, and more importantly, that code never makes pgtable
> >> modifications expecting them to be immediate, not knowing that it's actually in
> >> lazy mmu mode so the changes get deferred.
> >
> > When you say fragile, are you confident it _works_ but perhaps not quite as well
> > as you want? Or are you concerned this might be broken upstream in any way?
>
> I'm confident that it _works_ for arm64 as it is, upstream. But if Dev's series
> were to go in _without_ the lazy_mmu bracketting in some manner, then it would
> be broken if the config includes CONFIG_DEBUG_PAGEALLOC.
>
> There's a lot more explanation in the later patches as to how it can be broken,
> but for arm64, the situation is currently like this, because our implementation
> of __change_memory_common() uses apply_to_page_range() which implicitly starts
> an inner lazy_mmu_mode. We enter multiple times, but we exit one the first call
> to exit. Everything works correctly but it's not optimal because C is no longer
> deferred:
>
> arch_enter_lazy_mmu_mode() << outer lazy mmu region
> <do some pte changes (A)>
> alloc_pages()
> debug_pagealloc_map_pages()
> __kernel_map_pages()
> __change_memory_common()
> arch_enter_lazy_mmu_mode() << inner lazy mmu region
> <change kernel pte to make valid (B)>
> arch_leave_lazy_mmu_mode() << exit; complete A + B
> clear_page()
> <do some more pte changes (C)> << no longer in lazy mode
> arch_leave_lazy_mmu_mode() << nop
>
> An alternative implementation would not add the nested lazy mmu mode, so we end
> up with this:
>
> arch_enter_lazy_mmu_mode() << outer lazy mmu region
> <do some pte changes (A)>
> alloc_pages()
> debug_pagealloc_map_pages()
> __kernel_map_pages()
> __change_memory_common()
> <change kernel pte to make valid (B)> << deferred due to lazy mmu
> clear_page() << BANG! B has not be actioned
> <do some more pte changes (C)>
> arch_leave_lazy_mmu_mode()
>
> This is clearly a much worse outcome. It's not happening today but it could in
> future. That's why I'm claiming it's fragile. It's much better (IMHO) to
> disallow calling the page allocator when in lazy mmu mode.

First, I think it should be handled completely inside arch/arm64. Page
allocation worked on lazy mmu mode on other architectures, no reason it
should be changed because of the way arm64 implements lazy mmu.

Second, DEBUG_PAGEALLOC already implies that performance is bad, for it to
be useful the kernel should be mapped with base pages and there's map/unmap
for every page allocation so optimizing a few pte changes (C in your
example) won't matter much.

If there's a potential correctness issue with Dev's patches, it should be
dealt with as a part of those patches with the necessary updates of how
lazy mmu is implemented on arm64 and used in pageattr.c.

And it seems to me that adding something along the lines below to
__kernel_map_pages() would solve DEBUG_PAGEALLOC issue:

void __kernel_map_pages(struct page *page, int numpages, int enable)
{
unsigned long flags;
bool lazy_mmu = false;

if (!can_set_direct_map())
return;

flags = read_thread_flags();
if (flags & BIT(TIF_LAZY_MMU))
lazy_mmu = true;

set_memory_valid((unsigned long)page_address(page), numpages, enable);

if (lazy_mmu)
set_thread_flag(TIF_LAZY_MMU);
}

> Thanks,
> Ryan

--
Sincerely yours,
Mike.


Return-Path: <linux-kernel+bounces-668993-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CE60A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:47:54 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id BFBBC16F240
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:47:55 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E0DB122D4F9;
Sat, 31 May 2025 07:47:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fD0Vs2jy"
Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 23B671A2C0B;
Sat, 31 May 2025 07:47:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677667; cv=none; b=I5BKYNidHv+xtMIuV6gDZWqPjMBOyJZrD3xnKpO5ekFi7Cb89GFfsvpbfEGSqYaLXh6jZXQdzoHGnHzM3u5QluhVL2TucbOnVwHgU0M/E1qV1xZ6tUjyE07rsSabmLzK3R89Dxx8t8IPiNcwSWNPA0vkEvapoc+0tjUm5uEPfq4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677667; c=relaxed/simple;
bh=yjPzyI7yBqAL56dE8kfsvym+2Bdn2WO7Ivdq8Oc6Qwo=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version; b=mHdl7TTDvFM1XjO7N9NrfMlk8amSN8y2HTdwEMz2Ac8KJUt+nPdqy2WW0dAmXOsR4MSWpz6EUAcC22pQ/auARsPHMNLW2KG1ZfIENAaKRPK7bavyWb8GMf/uRSoLjvJxqIgynTDBlRnsB9hXSvO4UUlEffwNJrbohO50e6DTNps=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fD0Vs2jy; arc=none smtp.client-ip=209.85.214.169
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-22c336fcdaaso25640475ad.3;
Sat, 31 May 2025 00:47:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748677662; x=1749282462; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=UAmG2goL53Cw5ew974oJqfpgUSyostqjHqftpfpF/AA=;
b=fD0Vs2jyrlhD/fH8osIz6IL60idiKRLuChdZLdx21D5UIn6e9tflxmL4ieXy5PyQVU
gWKqT0yD8xya64Epe1F0uO3/RdErgrvppczm36RpEA4L+Lo9ftMVcX08I3q8scj2AVlo
ERvjKTtlK+DpeYR+7YKEUaPO80sQy/HkoWnthG3wPyt9Nn0jAiUBYJznACQbjL+iktQ1
hNNHTGrQdZtWvqEoiClfD+2n2sisObb1hMR95N2ZcmCS3ua/PcH10LDsaZK+ieHz+1cj
ZWPdmsCRRqeruMueozKPayG+u4ytik36LpYvG4JJYm+n9zAwV09YKA/YkecNWJbqc0SC
ugBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748677662; x=1749282462;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=UAmG2goL53Cw5ew974oJqfpgUSyostqjHqftpfpF/AA=;
b=GdjsQWNd3i4esZu8RaPvPXRqUMo8xP/YaQ+7PA1wtxgDMnmGMPlbRQRSU3LLsvnQ/W
fdqjG94cNp4ltFKM4YETI9CCqau+TYQ7v5YZmsBdntCe5P1BssFhVWCgTpRLhsZOROp0
m4DC8b7jpHWHbnwQwyB1AhDkZbuE4DkcCx7jsBMrObV87sMlprTtYZwDGAP6iQNKupvf
tVRm2GkrpFD8EwrZ/PvdCWDyZ3f/sYKNpMr9r63qG+wLn05/Xeq9l4exjNb2yf27eOXx
Eh5S0Aib6QIILM4oLj60lA4+ufz3ZoooNuyfDp61MOF/vUXxcwRVXMAy15862rR/xoLA
xKaQ==
X-Forwarded-Encrypted: i=1; AJvYcCU29Dr9/z1gAYuA8QWAVOTQD6H3DJ4Gl3AJ8pMIWyalqOlZQczPBDXWTBZBkr39fvNDwqMAmwDuUxzKLHOMbUE=@vger.kernel.org
X-Gm-Message-State: AOJu0YyWUYNBM6s8JeiEnlf0jqSE8opYd1qpvGNasynKlVTczzm2qKtN
fdt/Y2P/bX9XfW5H8eWetCMYcKY9UJUvLEMykOdjWCgrjaWTxWlw9XY=
X-Gm-Gg: ASbGncscTe0USBglwZOJEQQfp7zzhICTeqUW3Wy/HvDiAI1TfPjR5IvrvLnP2T19Mru
+mu1fxbg6IEv/t7b8ISuzDfB101vkDtBD2YDFYo1kDrTXNYZGaxAmWE0HHJgtWNEf5RJCEIk38S
6WnC7ogux3wZka47q//gyTh7KLQzfBQ3wx5QuFFm/HJ0XIFnXuHKetdoGR8822X2pRjkCw0UWkA
DAOifSg4f8kOfVban8S9Ra1lP+cmJOCfhj/fkt71BYNhmMTn1QOT3T498Ud2woh3K/ub+erSDkA
7jOmTjGQQ9lEZ32OqFsQL7TE0btEifrQkiBFRyOTcOWPthZ83Vw2ruaMyDx5H3mUCxOW/buQdw=
=
X-Google-Smtp-Source: AGHT+IF1SmerG9I/ZzOxc023TRJRttRP2/QrlTz9GNkrP+iawmh958ziPbbk+Ce7cxfrbR9cZnE+eg==
X-Received: by 2002:a17:902:f682:b0:234:d399:f948 with SMTP id d9443c01a7336-2355f74fc98mr15789065ad.33.1748677661789;
Sat, 31 May 2025 00:47:41 -0700 (PDT)
Received: from debian.ujwal.com ([2409:40f2:3152:41fa:f908:b623:3840:6a0c])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506bc8a28sm38505125ad.51.2025.05.31.00.47.37
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 00:47:41 -0700 (PDT)
From: Ujwal Kundur <ujwal.kundur@xxxxxxxxx>
To: akpm@xxxxxxxxxxxxxxxxxxxx,
peterx@xxxxxxxxxx,
shuah@xxxxxxxxxx,
jackmanb@xxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx,
linux-kselftest@xxxxxxxxxxxxxxx,
linux-mm@xxxxxxxxx,
Ujwal Kundur <ujwal.kundur@xxxxxxxxx>
Subject: [PATCH v4 1/1] selftests/mm/uffd: Refactor non-composite global vars into struct
Date: Sat, 31 May 2025 13:16:25 +0530
Message-Id: <20250531074625.478-1-ujwal.kundur@xxxxxxxxx>
X-Mailer: git-send-email 2.20.1
In-Reply-To: <20250501163827.2598-1-ujwal.kundur@xxxxxxxxx>
References: <20250501163827.2598-1-ujwal.kundur@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Refactor macros and non-composite global variable definitions into a
struct that is defined at the start of a test and is passed around
instead of relying on global vars.

Renders the implementation / use of test_uffdio_copy_eexist
vestigial and will be addressed in a later patch.

Signed-off-by: Ujwal Kundur <ujwal.kundur@xxxxxxxxx>
---
Changes since v3:
- more formatting fixes
Changes since v2:
- redo patch on mm-new branch
Changes since v1:
- indentation fixes
- squash into single patch to assist bisections

tools/testing/selftests/mm/uffd-common.c | 268 ++++-----
tools/testing/selftests/mm/uffd-common.h | 78 +--
tools/testing/selftests/mm/uffd-stress.c | 224 ++++----
tools/testing/selftests/mm/uffd-unit-tests.c | 561 ++++++++++---------
tools/testing/selftests/mm/uffd-wp-mremap.c | 23 +-
5 files changed, 612 insertions(+), 542 deletions(-)

diff --git a/tools/testing/selftests/mm/uffd-common.c b/tools/testing/selftests/mm/uffd-common.c
index a37088a23ffe..6067cf4bdae6 100644
--- a/tools/testing/selftests/mm/uffd-common.c
+++ b/tools/testing/selftests/mm/uffd-common.c
@@ -7,18 +7,30 @@

#include "uffd-common.h"

-#define BASE_PMD_ADDR ((void *)(1UL << 30))
-
-volatile bool test_uffdio_copy_eexist = true;
-unsigned long nr_parallel, nr_pages, nr_pages_per_cpu, page_size;
-char *area_src, *area_src_alias, *area_dst, *area_dst_alias, *area_remap;
-int uffd = -1, uffd_flags, finished, *pipefd, test_type;
-bool map_shared;
-bool test_uffdio_wp = true;
-unsigned long long *count_verify;
uffd_test_ops_t *uffd_test_ops;
uffd_test_case_ops_t *uffd_test_case_ops;
-atomic_bool ready_for_fork;
+
+#define BASE_PMD_ADDR ((void *)(1UL << 30))
+
+/* pthread_mutex_t starts at page offset 0 */
+pthread_mutex_t *area_mutex(char *area, unsigned long nr, uffd_global_test_opts_t *gopts)
+{
+ return (pthread_mutex_t *) (area + nr * gopts->page_size);
+}
+
+/*
+ * count is placed in the page after pthread_mutex_t naturally aligned
+ * to avoid non alignment faults on non-x86 archs.
+ */
+volatile unsigned long long *area_count(
+ char *area, unsigned long nr,
+ uffd_global_test_opts_t *gopts)
+{
+ return (volatile unsigned long long *)
+ ((unsigned long)(area + nr * gopts->page_size +
+ sizeof(pthread_mutex_t) + sizeof(unsigned long long) - 1) &
+ ~(unsigned long)(sizeof(unsigned long long) - 1));
+}

static int uffd_mem_fd_create(off_t mem_size, bool hugetlb)
{
@@ -40,15 +52,15 @@ static int uffd_mem_fd_create(off_t mem_size, bool hugetlb)
return mem_fd;
}

-static void anon_release_pages(char *rel_area)
+static void anon_release_pages(uffd_global_test_opts_t *gopts, char *rel_area)
{
- if (madvise(rel_area, nr_pages * page_size, MADV_DONTNEED))
+ if (madvise(rel_area, gopts->nr_pages * gopts->page_size, MADV_DONTNEED))
err("madvise(MADV_DONTNEED) failed");
}

-static int anon_allocate_area(void **alloc_area, bool is_src)
+static int anon_allocate_area(uffd_global_test_opts_t *gopts, void **alloc_area, bool is_src)
{
- *alloc_area = mmap(NULL, nr_pages * page_size, PROT_READ | PROT_WRITE,
+ *alloc_area = mmap(NULL, gopts->nr_pages * gopts->page_size, PROT_READ | PROT_WRITE,
MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
if (*alloc_area == MAP_FAILED) {
*alloc_area = NULL;
@@ -57,31 +69,32 @@ static int anon_allocate_area(void **alloc_area, bool is_src)
return 0;
}

-static void noop_alias_mapping(__u64 *start, size_t len, unsigned long offset)
+static void noop_alias_mapping(uffd_global_test_opts_t *gopts, __u64 *start,
+ size_t len, unsigned long offset)
{
}

-static void hugetlb_release_pages(char *rel_area)
+static void hugetlb_release_pages(uffd_global_test_opts_t *gopts, char *rel_area)
{
- if (!map_shared) {
- if (madvise(rel_area, nr_pages * page_size, MADV_DONTNEED))
+ if (!gopts->map_shared) {
+ if (madvise(rel_area, gopts->nr_pages * gopts->page_size, MADV_DONTNEED))
err("madvise(MADV_DONTNEED) failed");
} else {
- if (madvise(rel_area, nr_pages * page_size, MADV_REMOVE))
+ if (madvise(rel_area, gopts->nr_pages * gopts->page_size, MADV_REMOVE))
err("madvise(MADV_REMOVE) failed");
}
}

-static int hugetlb_allocate_area(void **alloc_area, bool is_src)
+static int hugetlb_allocate_area(uffd_global_test_opts_t *gopts, void **alloc_area, bool is_src)
{
- off_t size = nr_pages * page_size;
+ off_t size = gopts->nr_pages * gopts->page_size;
off_t offset = is_src ? 0 : size;
void *area_alias = NULL;
char **alloc_area_alias;
int mem_fd = uffd_mem_fd_create(size * 2, true);

*alloc_area = mmap(NULL, size, PROT_READ | PROT_WRITE,
- (map_shared ? MAP_SHARED : MAP_PRIVATE) |
+ (gopts->map_shared ? MAP_SHARED : MAP_PRIVATE) |
(is_src ? 0 : MAP_NORESERVE),
mem_fd, offset);
if (*alloc_area == MAP_FAILED) {
@@ -89,7 +102,7 @@ static int hugetlb_allocate_area(void **alloc_area, bool is_src)
return -errno;
}

- if (map_shared) {
+ if (gopts->map_shared) {
area_alias = mmap(NULL, size, PROT_READ | PROT_WRITE,
MAP_SHARED, mem_fd, offset);
if (area_alias == MAP_FAILED)
@@ -97,9 +110,9 @@ static int hugetlb_allocate_area(void **alloc_area, bool is_src)
}

if (is_src) {
- alloc_area_alias = &area_src_alias;
+ alloc_area_alias = &gopts->area_src_alias;
} else {
- alloc_area_alias = &area_dst_alias;
+ alloc_area_alias = &gopts->area_dst_alias;
}
if (area_alias)
*alloc_area_alias = area_alias;
@@ -108,24 +121,25 @@ static int hugetlb_allocate_area(void **alloc_area, bool is_src)
return 0;
}

-static void hugetlb_alias_mapping(__u64 *start, size_t len, unsigned long offset)
+static void hugetlb_alias_mapping(uffd_global_test_opts_t *gopts, __u64 *start,
+ size_t len, unsigned long offset)
{
- if (!map_shared)
+ if (!gopts->map_shared)
return;

- *start = (unsigned long) area_dst_alias + offset;
+ *start = (unsigned long) gopts->area_dst_alias + offset;
}

-static void shmem_release_pages(char *rel_area)
+static void shmem_release_pages(uffd_global_test_opts_t *gopts, char *rel_area)
{
- if (madvise(rel_area, nr_pages * page_size, MADV_REMOVE))
+ if (madvise(rel_area, gopts->nr_pages * gopts->page_size, MADV_REMOVE))
err("madvise(MADV_REMOVE) failed");
}

-static int shmem_allocate_area(void **alloc_area, bool is_src)
+static int shmem_allocate_area(uffd_global_test_opts_t *gopts, void **alloc_area, bool is_src)
{
void *area_alias = NULL;
- size_t bytes = nr_pages * page_size, hpage_size = read_pmd_pagesize();
+ size_t bytes = gopts->nr_pages * gopts->page_size, hpage_size = read_pmd_pagesize();
unsigned long offset = is_src ? 0 : bytes;
char *p = NULL, *p_alias = NULL;
int mem_fd = uffd_mem_fd_create(bytes * 2, false);
@@ -159,22 +173,23 @@ static int shmem_allocate_area(void **alloc_area, bool is_src)
err("mmap of anonymous memory failed at %p", p_alias);

if (is_src)
- area_src_alias = area_alias;
+ gopts->area_src_alias = area_alias;
else
- area_dst_alias = area_alias;
+ gopts->area_dst_alias = area_alias;

close(mem_fd);
return 0;
}

-static void shmem_alias_mapping(__u64 *start, size_t len, unsigned long offset)
+static void shmem_alias_mapping(uffd_global_test_opts_t *gopts, __u64 *start,
+ size_t len, unsigned long offset)
{
- *start = (unsigned long)area_dst_alias + offset;
+ *start = (unsigned long)gopts->area_dst_alias + offset;
}

-static void shmem_check_pmd_mapping(void *p, int expect_nr_hpages)
+static void shmem_check_pmd_mapping(uffd_global_test_opts_t *gopts, void *p, int expect_nr_hpages)
{
- if (!check_huge_shmem(area_dst_alias, expect_nr_hpages,
+ if (!check_huge_shmem(gopts->area_dst_alias, expect_nr_hpages,
read_pmd_pagesize()))
err("Did not find expected %d number of hugepages",
expect_nr_hpages);
@@ -234,18 +249,18 @@ void uffd_stats_report(struct uffd_args *args, int n_cpus)
printf("\n");
}

-int userfaultfd_open(uint64_t *features)
+int userfaultfd_open(uffd_global_test_opts_t *gopts, uint64_t *features)
{
struct uffdio_api uffdio_api;

- uffd = uffd_open(UFFD_FLAGS);
- if (uffd < 0)
+ gopts->uffd = uffd_open(UFFD_FLAGS);
+ if (gopts->uffd < 0)
return -1;
- uffd_flags = fcntl(uffd, F_GETFD, NULL);
+ gopts->uffd_flags = fcntl(gopts->uffd, F_GETFD, NULL);

uffdio_api.api = UFFD_API;
uffdio_api.features = *features;
- if (ioctl(uffd, UFFDIO_API, &uffdio_api))
+ if (ioctl(gopts->uffd, UFFDIO_API, &uffdio_api))
/* Probably lack of CAP_PTRACE? */
return -1;
if (uffdio_api.api != UFFD_API)
@@ -255,59 +270,59 @@ int userfaultfd_open(uint64_t *features)
return 0;
}

-static inline void munmap_area(void **area)
+static inline void munmap_area(uffd_global_test_opts_t *gopts, void **area)
{
if (*area)
- if (munmap(*area, nr_pages * page_size))
+ if (munmap(*area, gopts->nr_pages * gopts->page_size))
err("munmap");

*area = NULL;
}

-void uffd_test_ctx_clear(void)
+void uffd_test_ctx_clear(uffd_global_test_opts_t *gopts)
{
size_t i;

- if (pipefd) {
- for (i = 0; i < nr_parallel * 2; ++i) {
- if (close(pipefd[i]))
+ if (gopts->pipefd) {
+ for (i = 0; i < gopts->nr_parallel * 2; ++i) {
+ if (close(gopts->pipefd[i]))
err("close pipefd");
}
- free(pipefd);
- pipefd = NULL;
+ free(gopts->pipefd);
+ gopts->pipefd = NULL;
}

- if (count_verify) {
- free(count_verify);
- count_verify = NULL;
+ if (gopts->count_verify) {
+ free(gopts->count_verify);
+ gopts->count_verify = NULL;
}

- if (uffd != -1) {
- if (close(uffd))
+ if (gopts->uffd != -1) {
+ if (close(gopts->uffd))
err("close uffd");
- uffd = -1;
+ gopts->uffd = -1;
}

- munmap_area((void **)&area_src);
- munmap_area((void **)&area_src_alias);
- munmap_area((void **)&area_dst);
- munmap_area((void **)&area_dst_alias);
- munmap_area((void **)&area_remap);
+ munmap_area(gopts, (void **)&gopts->area_src);
+ munmap_area(gopts, (void **)&gopts->area_src_alias);
+ munmap_area(gopts, (void **)&gopts->area_dst);
+ munmap_area(gopts, (void **)&gopts->area_dst_alias);
+ munmap_area(gopts, (void **)&gopts->area_remap);
}

-int uffd_test_ctx_init(uint64_t features, const char **errmsg)
+int uffd_test_ctx_init(uffd_global_test_opts_t *gopts, uint64_t features, const char **errmsg)
{
unsigned long nr, cpu;
int ret;

if (uffd_test_case_ops && uffd_test_case_ops->pre_alloc) {
- ret = uffd_test_case_ops->pre_alloc(errmsg);
+ ret = uffd_test_case_ops->pre_alloc(gopts, errmsg);
if (ret)
return ret;
}

- ret = uffd_test_ops->allocate_area((void **)&area_src, true);
- ret |= uffd_test_ops->allocate_area((void **)&area_dst, false);
+ ret = uffd_test_ops->allocate_area(gopts, (void **) &gopts->area_src, true);
+ ret |= uffd_test_ops->allocate_area(gopts, (void **) &gopts->area_dst, false);
if (ret) {
if (errmsg)
*errmsg = "memory allocation failed";
@@ -315,26 +330,26 @@ int uffd_test_ctx_init(uint64_t features, const char **errmsg)
}

if (uffd_test_case_ops && uffd_test_case_ops->post_alloc) {
- ret = uffd_test_case_ops->post_alloc(errmsg);
+ ret = uffd_test_case_ops->post_alloc(gopts, errmsg);
if (ret)
return ret;
}

- ret = userfaultfd_open(&features);
+ ret = userfaultfd_open(gopts, &features);
if (ret) {
if (errmsg)
*errmsg = "possible lack of privilege";
return ret;
}

- count_verify = malloc(nr_pages * sizeof(unsigned long long));
- if (!count_verify)
+ gopts->count_verify = malloc(gopts->nr_pages * sizeof(unsigned long long));
+ if (!gopts->count_verify)
err("count_verify");

- for (nr = 0; nr < nr_pages; nr++) {
- *area_mutex(area_src, nr) =
+ for (nr = 0; nr < gopts->nr_pages; nr++) {
+ *area_mutex(gopts->area_src, nr, gopts) =
(pthread_mutex_t)PTHREAD_MUTEX_INITIALIZER;
- count_verify[nr] = *area_count(area_src, nr) = 1;
+ gopts->count_verify[nr] = *area_count(gopts->area_src, nr, gopts) = 1;
/*
* In the transition between 255 to 256, powerpc will
* read out of order in my_bcmp and see both bytes as
@@ -342,7 +357,7 @@ int uffd_test_ctx_init(uint64_t features, const char **errmsg)
* after the count, to avoid my_bcmp to trigger false
* positives.
*/
- *(area_count(area_src, nr) + 1) = 1;
+ *(area_count(gopts->area_src, nr, gopts) + 1) = 1;
}

/*
@@ -363,13 +378,13 @@ int uffd_test_ctx_init(uint64_t features, const char **errmsg)
* proactively split the thp and drop any accidentally initialized
* pages within area_dst.
*/
- uffd_test_ops->release_pages(area_dst);
+ uffd_test_ops->release_pages(gopts, gopts->area_dst);

- pipefd = malloc(sizeof(int) * nr_parallel * 2);
- if (!pipefd)
+ gopts->pipefd = malloc(sizeof(int) * gopts->nr_parallel * 2);
+ if (!gopts->pipefd)
err("pipefd");
- for (cpu = 0; cpu < nr_parallel; cpu++)
- if (pipe2(&pipefd[cpu * 2], O_CLOEXEC | O_NONBLOCK))
+ for (cpu = 0; cpu < gopts->nr_parallel; cpu++)
+ if (pipe2(&gopts->pipefd[cpu * 2], O_CLOEXEC | O_NONBLOCK))
err("pipe");

return 0;
@@ -416,9 +431,9 @@ static void continue_range(int ufd, __u64 start, __u64 len, bool wp)
ret, (int64_t) req.mapped);
}

-int uffd_read_msg(int ufd, struct uffd_msg *msg)
+int uffd_read_msg(uffd_global_test_opts_t *gopts, struct uffd_msg *msg)
{
- int ret = read(uffd, msg, sizeof(*msg));
+ int ret = read(gopts->uffd, msg, sizeof(*msg));

if (ret != sizeof(*msg)) {
if (ret < 0) {
@@ -433,7 +448,8 @@ int uffd_read_msg(int ufd, struct uffd_msg *msg)
return 0;
}

-void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args)
+void uffd_handle_page_fault(uffd_global_test_opts_t *gopts, struct uffd_msg *msg,
+ struct uffd_args *args)
{
unsigned long offset;

@@ -442,7 +458,7 @@ void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args)

if (msg->arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WP) {
/* Write protect page faults */
- wp_range(uffd, msg->arg.pagefault.address, page_size, false);
+ wp_range(gopts->uffd, msg->arg.pagefault.address, gopts->page_size, false);
args->wp_faults++;
} else if (msg->arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_MINOR) {
uint8_t *area;
@@ -460,12 +476,12 @@ void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args)
* (UFFD-registered).
*/

- area = (uint8_t *)(area_dst +
- ((char *)msg->arg.pagefault.address -
- area_dst_alias));
- for (b = 0; b < page_size; ++b)
+ area = (uint8_t *)(gopts->area_dst +
+ ((char *)msg->arg.pagefault.address -
+ gopts->area_dst_alias));
+ for (b = 0; b < gopts->page_size; ++b)
area[b] = ~area[b];
- continue_range(uffd, msg->arg.pagefault.address, page_size,
+ continue_range(gopts->uffd, msg->arg.pagefault.address, gopts->page_size,
args->apply_wp);
args->minor_faults++;
} else {
@@ -493,10 +509,10 @@ void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args)
if (msg->arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE)
err("unexpected write fault");

- offset = (char *)(unsigned long)msg->arg.pagefault.address - area_dst;
- offset &= ~(page_size-1);
+ offset = (char *)(unsigned long)msg->arg.pagefault.address - gopts->area_dst;
+ offset &= ~(gopts->page_size-1);

- if (copy_page(uffd, offset, args->apply_wp))
+ if (copy_page(gopts, offset, args->apply_wp))
args->missing_faults++;
}
}
@@ -504,6 +520,7 @@ void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args)
void *uffd_poll_thread(void *arg)
{
struct uffd_args *args = (struct uffd_args *)arg;
+ uffd_global_test_opts_t *gopts = args->gopts;
unsigned long cpu = args->cpu;
struct pollfd pollfd[2];
struct uffd_msg msg;
@@ -514,12 +531,12 @@ void *uffd_poll_thread(void *arg)
if (!args->handle_fault)
args->handle_fault = uffd_handle_page_fault;

- pollfd[0].fd = uffd;
+ pollfd[0].fd = gopts->uffd;
pollfd[0].events = POLLIN;
- pollfd[1].fd = pipefd[cpu*2];
+ pollfd[1].fd = gopts->pipefd[cpu*2];
pollfd[1].events = POLLIN;

- ready_for_fork = true;
+ gopts->ready_for_fork = true;

for (;;) {
ret = poll(pollfd, 2, -1);
@@ -537,30 +554,30 @@ void *uffd_poll_thread(void *arg)
}
if (!(pollfd[0].revents & POLLIN))
err("pollfd[0].revents %d", pollfd[0].revents);
- if (uffd_read_msg(uffd, &msg))
+ if (uffd_read_msg(gopts, &msg))
continue;
switch (msg.event) {
default:
err("unexpected msg event %u\n", msg.event);
break;
case UFFD_EVENT_PAGEFAULT:
- args->handle_fault(&msg, args);
+ args->handle_fault(gopts, &msg, args);
break;
case UFFD_EVENT_FORK:
- close(uffd);
- uffd = msg.arg.fork.ufd;
- pollfd[0].fd = uffd;
+ close(gopts->uffd);
+ gopts->uffd = msg.arg.fork.ufd;
+ pollfd[0].fd = gopts->uffd;
break;
case UFFD_EVENT_REMOVE:
uffd_reg.range.start = msg.arg.remove.start;
uffd_reg.range.len = msg.arg.remove.end -
msg.arg.remove.start;
- if (ioctl(uffd, UFFDIO_UNREGISTER, &uffd_reg.range))
+ if (ioctl(gopts->uffd, UFFDIO_UNREGISTER, &uffd_reg.range))
err("remove failure");
break;
case UFFD_EVENT_REMAP:
- area_remap = area_dst; /* save for later unmap */
- area_dst = (char *)(unsigned long)msg.arg.remap.to;
+ gopts->area_remap = gopts->area_dst; /* save for later unmap */
+ gopts->area_dst = (char *)(unsigned long)msg.arg.remap.to;
break;
}
}
@@ -568,17 +585,18 @@ void *uffd_poll_thread(void *arg)
return NULL;
}

-static void retry_copy_page(int ufd, struct uffdio_copy *uffdio_copy,
+static void retry_copy_page(uffd_global_test_opts_t *gopts, struct uffdio_copy *uffdio_copy,
unsigned long offset)
{
- uffd_test_ops->alias_mapping(&uffdio_copy->dst,
+ uffd_test_ops->alias_mapping(gopts,
+ &uffdio_copy->dst,
uffdio_copy->len,
offset);
- if (ioctl(ufd, UFFDIO_COPY, uffdio_copy)) {
+ if (ioctl(gopts->uffd, UFFDIO_COPY, uffdio_copy)) {
/* real retval in ufdio_copy.copy */
if (uffdio_copy->copy != -EEXIST)
err("UFFDIO_COPY retry error: %"PRId64,
- (int64_t)uffdio_copy->copy);
+ (int64_t)uffdio_copy->copy);
} else {
err("UFFDIO_COPY retry unexpected: %"PRId64,
(int64_t)uffdio_copy->copy);
@@ -597,60 +615,60 @@ static void wake_range(int ufd, unsigned long addr, unsigned long len)
addr), exit(1);
}

-int __copy_page(int ufd, unsigned long offset, bool retry, bool wp)
+int __copy_page(uffd_global_test_opts_t *gopts, unsigned long offset, bool retry, bool wp)
{
struct uffdio_copy uffdio_copy;

- if (offset >= nr_pages * page_size)
+ if (offset >= gopts->nr_pages * gopts->page_size)
err("unexpected offset %lu\n", offset);
- uffdio_copy.dst = (unsigned long) area_dst + offset;
- uffdio_copy.src = (unsigned long) area_src + offset;
- uffdio_copy.len = page_size;
+ uffdio_copy.dst = (unsigned long) gopts->area_dst + offset;
+ uffdio_copy.src = (unsigned long) gopts->area_src + offset;
+ uffdio_copy.len = gopts->page_size;
if (wp)
uffdio_copy.mode = UFFDIO_COPY_MODE_WP;
else
uffdio_copy.mode = 0;
uffdio_copy.copy = 0;
- if (ioctl(ufd, UFFDIO_COPY, &uffdio_copy)) {
+ if (ioctl(gopts->uffd, UFFDIO_COPY, &uffdio_copy)) {
/* real retval in ufdio_copy.copy */
if (uffdio_copy.copy != -EEXIST)
err("UFFDIO_COPY error: %"PRId64,
(int64_t)uffdio_copy.copy);
- wake_range(ufd, uffdio_copy.dst, page_size);
- } else if (uffdio_copy.copy != page_size) {
+ wake_range(gopts->uffd, uffdio_copy.dst, gopts->page_size);
+ } else if (uffdio_copy.copy != gopts->page_size) {
err("UFFDIO_COPY error: %"PRId64, (int64_t)uffdio_copy.copy);
} else {
- if (test_uffdio_copy_eexist && retry) {
- test_uffdio_copy_eexist = false;
- retry_copy_page(ufd, &uffdio_copy, offset);
+ if (gopts->test_uffdio_copy_eexist && retry) {
+ gopts->test_uffdio_copy_eexist = false;
+ retry_copy_page(gopts, &uffdio_copy, offset);
}
return 1;
}
return 0;
}

-int copy_page(int ufd, unsigned long offset, bool wp)
+int copy_page(uffd_global_test_opts_t *gopts, unsigned long offset, bool wp)
{
- return __copy_page(ufd, offset, false, wp);
+ return __copy_page(gopts, offset, false, wp);
}

-int move_page(int ufd, unsigned long offset, unsigned long len)
+int move_page(uffd_global_test_opts_t *gopts, unsigned long offset, unsigned long len)
{
struct uffdio_move uffdio_move;

- if (offset + len > nr_pages * page_size)
+ if (offset + len > gopts->nr_pages * gopts->page_size)
err("unexpected offset %lu and length %lu\n", offset, len);
- uffdio_move.dst = (unsigned long) area_dst + offset;
- uffdio_move.src = (unsigned long) area_src + offset;
+ uffdio_move.dst = (unsigned long) gopts->area_dst + offset;
+ uffdio_move.src = (unsigned long) gopts->area_src + offset;
uffdio_move.len = len;
uffdio_move.mode = UFFDIO_MOVE_MODE_ALLOW_SRC_HOLES;
uffdio_move.move = 0;
- if (ioctl(ufd, UFFDIO_MOVE, &uffdio_move)) {
+ if (ioctl(gopts->uffd, UFFDIO_MOVE, &uffdio_move)) {
/* real retval in uffdio_move.move */
if (uffdio_move.move != -EEXIST)
err("UFFDIO_MOVE error: %"PRId64,
(int64_t)uffdio_move.move);
- wake_range(ufd, uffdio_move.dst, len);
+ wake_range(gopts->uffd, uffdio_move.dst, len);
} else if (uffdio_move.move != len) {
err("UFFDIO_MOVE error: %"PRId64, (int64_t)uffdio_move.move);
} else
diff --git a/tools/testing/selftests/mm/uffd-common.h b/tools/testing/selftests/mm/uffd-common.h
index 7700cbfa3975..37d3ca55905f 100644
--- a/tools/testing/selftests/mm/uffd-common.h
+++ b/tools/testing/selftests/mm/uffd-common.h
@@ -56,20 +56,17 @@

#define err(fmt, ...) errexit(1, fmt, ##__VA_ARGS__)

-/* pthread_mutex_t starts at page offset 0 */
-#define area_mutex(___area, ___nr) \
- ((pthread_mutex_t *) ((___area) + (___nr)*page_size))
-/*
- * count is placed in the page after pthread_mutex_t naturally aligned
- * to avoid non alignment faults on non-x86 archs.
- */
-#define area_count(___area, ___nr) \
- ((volatile unsigned long long *) ((unsigned long) \
- ((___area) + (___nr)*page_size + \
- sizeof(pthread_mutex_t) + \
- sizeof(unsigned long long) - 1) & \
- ~(unsigned long)(sizeof(unsigned long long) \
- - 1)))
+struct uffd_global_test_opts {
+ unsigned long nr_parallel, nr_pages, nr_pages_per_cpu, page_size;
+ char *area_src, *area_src_alias, *area_dst, *area_dst_alias, *area_remap;
+ int uffd, uffd_flags, finished, *pipefd, test_type;
+ bool map_shared;
+ bool test_uffdio_wp;
+ unsigned long long *count_verify;
+ volatile bool test_uffdio_copy_eexist;
+ atomic_bool ready_for_fork;
+};
+typedef struct uffd_global_test_opts uffd_global_test_opts_t;

/* Userfaultfd test statistics */
struct uffd_args {
@@ -79,50 +76,55 @@ struct uffd_args {
unsigned long missing_faults;
unsigned long wp_faults;
unsigned long minor_faults;
+ struct uffd_global_test_opts *gopts;

/* A custom fault handler; defaults to uffd_handle_page_fault. */
- void (*handle_fault)(struct uffd_msg *msg, struct uffd_args *args);
+ void (*handle_fault)(struct uffd_global_test_opts *gopts,
+ struct uffd_msg *msg,
+ struct uffd_args *args);
};

struct uffd_test_ops {
- int (*allocate_area)(void **alloc_area, bool is_src);
- void (*release_pages)(char *rel_area);
- void (*alias_mapping)(__u64 *start, size_t len, unsigned long offset);
- void (*check_pmd_mapping)(void *p, int expect_nr_hpages);
+ int (*allocate_area)(uffd_global_test_opts_t *gopts, void **alloc_area, bool is_src);
+ void (*release_pages)(uffd_global_test_opts_t *gopts, char *rel_area);
+ void (*alias_mapping)(uffd_global_test_opts_t *gopts,
+ __u64 *start,
+ size_t len,
+ unsigned long offset);
+ void (*check_pmd_mapping)(uffd_global_test_opts_t *gopts, void *p, int expect_nr_hpages);
};
typedef struct uffd_test_ops uffd_test_ops_t;

struct uffd_test_case_ops {
- int (*pre_alloc)(const char **errmsg);
- int (*post_alloc)(const char **errmsg);
+ int (*pre_alloc)(uffd_global_test_opts_t *gopts, const char **errmsg);
+ int (*post_alloc)(uffd_global_test_opts_t *gopts, const char **errmsg);
};
typedef struct uffd_test_case_ops uffd_test_case_ops_t;

-extern unsigned long nr_parallel, nr_pages, nr_pages_per_cpu, page_size;
-extern char *area_src, *area_src_alias, *area_dst, *area_dst_alias, *area_remap;
-extern int uffd, uffd_flags, finished, *pipefd, test_type;
-extern bool map_shared;
-extern bool test_uffdio_wp;
-extern unsigned long long *count_verify;
-extern volatile bool test_uffdio_copy_eexist;
-extern atomic_bool ready_for_fork;
-
+extern uffd_global_test_opts_t *uffd_gtest_opts;
extern uffd_test_ops_t anon_uffd_test_ops;
extern uffd_test_ops_t shmem_uffd_test_ops;
extern uffd_test_ops_t hugetlb_uffd_test_ops;
extern uffd_test_ops_t *uffd_test_ops;
extern uffd_test_case_ops_t *uffd_test_case_ops;

+pthread_mutex_t *area_mutex(char *area, unsigned long nr, uffd_global_test_opts_t *gopts);
+volatile unsigned long long *area_count(char *area,
+ unsigned long nr,
+ uffd_global_test_opts_t *gopts);
+
void uffd_stats_report(struct uffd_args *args, int n_cpus);
-int uffd_test_ctx_init(uint64_t features, const char **errmsg);
-void uffd_test_ctx_clear(void);
-int userfaultfd_open(uint64_t *features);
-int uffd_read_msg(int ufd, struct uffd_msg *msg);
+int uffd_test_ctx_init(uffd_global_test_opts_t *gopts, uint64_t features, const char **errmsg);
+void uffd_test_ctx_clear(uffd_global_test_opts_t *gopts);
+int userfaultfd_open(uffd_global_test_opts_t *gopts, uint64_t *features);
+int uffd_read_msg(uffd_global_test_opts_t *gopts, struct uffd_msg *msg);
void wp_range(int ufd, __u64 start, __u64 len, bool wp);
-void uffd_handle_page_fault(struct uffd_msg *msg, struct uffd_args *args);
-int __copy_page(int ufd, unsigned long offset, bool retry, bool wp);
-int copy_page(int ufd, unsigned long offset, bool wp);
-int move_page(int ufd, unsigned long offset, unsigned long len);
+void uffd_handle_page_fault(uffd_global_test_opts_t *gopts,
+ struct uffd_msg *msg,
+ struct uffd_args *args);
+int __copy_page(uffd_global_test_opts_t *gopts, unsigned long offset, bool retry, bool wp);
+int copy_page(uffd_global_test_opts_t *gopts, unsigned long offset, bool wp);
+int move_page(uffd_global_test_opts_t *gopts, unsigned long offset, unsigned long len);
void *uffd_poll_thread(void *arg);

int uffd_open_dev(unsigned int flags);
diff --git a/tools/testing/selftests/mm/uffd-stress.c b/tools/testing/selftests/mm/uffd-stress.c
index 40af7f67c407..bf3cd0abe203 100644
--- a/tools/testing/selftests/mm/uffd-stress.c
+++ b/tools/testing/selftests/mm/uffd-stress.c
@@ -76,54 +76,58 @@ static void usage(void)
exit(1);
}

-static void uffd_stats_reset(struct uffd_args *args, unsigned long n_cpus)
+static void uffd_stats_reset(uffd_global_test_opts_t *gopts, struct uffd_args *args,
+ unsigned long n_cpus)
{
int i;

for (i = 0; i < n_cpus; i++) {
args[i].cpu = i;
- args[i].apply_wp = test_uffdio_wp;
+ args[i].apply_wp = gopts->test_uffdio_wp;
args[i].missing_faults = 0;
args[i].wp_faults = 0;
args[i].minor_faults = 0;
+ args[i].gopts = gopts;
}
}

static void *locking_thread(void *arg)
{
- unsigned long cpu = (unsigned long) arg;
+ struct uffd_args *args = (struct uffd_args *) arg;
+ uffd_global_test_opts_t *gopts = args->gopts;
+ unsigned long cpu = (unsigned long) args->cpu;
unsigned long page_nr;
unsigned long long count;

if (!(bounces & BOUNCE_RANDOM)) {
page_nr = -bounces;
if (!(bounces & BOUNCE_RACINGFAULTS))
- page_nr += cpu * nr_pages_per_cpu;
+ page_nr += cpu * gopts->nr_pages_per_cpu;
}

- while (!finished) {
+ while (!gopts->finished) {
if (bounces & BOUNCE_RANDOM) {
if (getrandom(&page_nr, sizeof(page_nr), 0) != sizeof(page_nr))
err("getrandom failed");
} else
page_nr += 1;
- page_nr %= nr_pages;
- pthread_mutex_lock(area_mutex(area_dst, page_nr));
- count = *area_count(area_dst, page_nr);
- if (count != count_verify[page_nr])
+ page_nr %= gopts->nr_pages;
+ pthread_mutex_lock(area_mutex(gopts->area_dst, page_nr, gopts));
+ count = *area_count(gopts->area_dst, page_nr, gopts);
+ if (count != gopts->count_verify[page_nr])
err("page_nr %lu memory corruption %llu %llu",
- page_nr, count, count_verify[page_nr]);
+ page_nr, count, gopts->count_verify[page_nr]);
count++;
- *area_count(area_dst, page_nr) = count_verify[page_nr] = count;
- pthread_mutex_unlock(area_mutex(area_dst, page_nr));
+ *area_count(gopts->area_dst, page_nr, gopts) = gopts->count_verify[page_nr] = count;
+ pthread_mutex_unlock(area_mutex(gopts->area_dst, page_nr, gopts));
}

return NULL;
}

-static int copy_page_retry(int ufd, unsigned long offset)
+static int copy_page_retry(uffd_global_test_opts_t *gopts, unsigned long offset)
{
- return __copy_page(ufd, offset, true, test_uffdio_wp);
+ return __copy_page(gopts, offset, true, gopts->test_uffdio_wp);
}

pthread_mutex_t uffd_read_mutex = PTHREAD_MUTEX_INITIALIZER;
@@ -131,15 +135,16 @@ pthread_mutex_t uffd_read_mutex = PTHREAD_MUTEX_INITIALIZER;
static void *uffd_read_thread(void *arg)
{
struct uffd_args *args = (struct uffd_args *)arg;
+ uffd_global_test_opts_t *gopts = args->gopts;
struct uffd_msg msg;

pthread_mutex_unlock(&uffd_read_mutex);
/* from here cancellation is ok */

for (;;) {
- if (uffd_read_msg(uffd, &msg))
+ if (uffd_read_msg(gopts, &msg))
continue;
- uffd_handle_page_fault(&msg, args);
+ uffd_handle_page_fault(gopts, &msg, args);
}

return NULL;
@@ -147,32 +152,34 @@ static void *uffd_read_thread(void *arg)

static void *background_thread(void *arg)
{
- unsigned long cpu = (unsigned long) arg;
+ struct uffd_args *args = (struct uffd_args *) arg;
+ uffd_global_test_opts_t *gopts = args->gopts;
+ unsigned long cpu = (unsigned long) args->cpu;
unsigned long page_nr, start_nr, mid_nr, end_nr;

- start_nr = cpu * nr_pages_per_cpu;
- end_nr = (cpu+1) * nr_pages_per_cpu;
+ start_nr = cpu * gopts->nr_pages_per_cpu;
+ end_nr = (cpu+1) * gopts->nr_pages_per_cpu;
mid_nr = (start_nr + end_nr) / 2;

/* Copy the first half of the pages */
for (page_nr = start_nr; page_nr < mid_nr; page_nr++)
- copy_page_retry(uffd, page_nr * page_size);
+ copy_page_retry(gopts, page_nr * gopts->page_size);

/*
* If we need to test uffd-wp, set it up now. Then we'll have
* at least the first half of the pages mapped already which
* can be write-protected for testing
*/
- if (test_uffdio_wp)
- wp_range(uffd, (unsigned long)area_dst + start_nr * page_size,
- nr_pages_per_cpu * page_size, true);
+ if (gopts->test_uffdio_wp)
+ wp_range(gopts->uffd, (unsigned long)gopts->area_dst + start_nr * gopts->page_size,
+ gopts->nr_pages_per_cpu * gopts->page_size, true);

/*
* Continue the 2nd half of the page copying, handling write
* protection faults if any
*/
for (page_nr = mid_nr; page_nr < end_nr; page_nr++)
- copy_page_retry(uffd, page_nr * page_size);
+ copy_page_retry(gopts, page_nr * gopts->page_size);

return NULL;
}
@@ -180,17 +187,21 @@ static void *background_thread(void *arg)
static int stress(struct uffd_args *args)
{
unsigned long cpu;
- pthread_t locking_threads[nr_parallel];
- pthread_t uffd_threads[nr_parallel];
- pthread_t background_threads[nr_parallel];
+ uffd_global_test_opts_t *gopts = args->gopts;
+ pthread_t locking_threads[gopts->nr_parallel];
+ pthread_t uffd_threads[gopts->nr_parallel];
+ pthread_t background_threads[gopts->nr_parallel];

- finished = 0;
- for (cpu = 0; cpu < nr_parallel; cpu++) {
+ gopts->finished = 0;
+ for (cpu = 0; cpu < gopts->nr_parallel; cpu++) {
if (pthread_create(&locking_threads[cpu], &attr,
- locking_thread, (void *)cpu))
+ locking_thread, (void *)&args[cpu]))
return 1;
if (bounces & BOUNCE_POLL) {
- if (pthread_create(&uffd_threads[cpu], &attr, uffd_poll_thread, &args[cpu]))
+ if (pthread_create(&uffd_threads[cpu],
+ &attr,
+ uffd_poll_thread,
+ (void *) &args[cpu]))
err("uffd_poll_thread create");
} else {
if (pthread_create(&uffd_threads[cpu], &attr,
@@ -200,10 +211,10 @@ static int stress(struct uffd_args *args)
pthread_mutex_lock(&uffd_read_mutex);
}
if (pthread_create(&background_threads[cpu], &attr,
- background_thread, (void *)cpu))
+ background_thread, (void *)&args[cpu]))
return 1;
}
- for (cpu = 0; cpu < nr_parallel; cpu++)
+ for (cpu = 0; cpu < gopts->nr_parallel; cpu++)
if (pthread_join(background_threads[cpu], NULL))
return 1;

@@ -216,17 +227,17 @@ static int stress(struct uffd_args *args)
* UFFDIO_COPY without writing zero pages into area_dst
* because the background threads already completed).
*/
- uffd_test_ops->release_pages(area_src);
+ uffd_test_ops->release_pages(gopts, gopts->area_src);

- finished = 1;
- for (cpu = 0; cpu < nr_parallel; cpu++)
+ gopts->finished = 1;
+ for (cpu = 0; cpu < gopts->nr_parallel; cpu++)
if (pthread_join(locking_threads[cpu], NULL))
return 1;

- for (cpu = 0; cpu < nr_parallel; cpu++) {
+ for (cpu = 0; cpu < gopts->nr_parallel; cpu++) {
char c;
if (bounces & BOUNCE_POLL) {
- if (write(pipefd[cpu*2+1], &c, 1) != 1)
+ if (write(gopts->pipefd[cpu*2+1], &c, 1) != 1)
err("pipefd write error");
if (pthread_join(uffd_threads[cpu],
(void *)&args[cpu]))
@@ -242,26 +253,26 @@ static int stress(struct uffd_args *args)
return 0;
}

-static int userfaultfd_stress(void)
+static int userfaultfd_stress(uffd_global_test_opts_t *gopts)
{
void *area;
unsigned long nr;
- struct uffd_args args[nr_parallel];
- uint64_t mem_size = nr_pages * page_size;
+ struct uffd_args args[gopts->nr_parallel];
+ uint64_t mem_size = gopts->nr_pages * gopts->page_size;
int flags = 0;

- memset(args, 0, sizeof(struct uffd_args) * nr_parallel);
+ memset(args, 0, sizeof(struct uffd_args) * gopts->nr_parallel);

- if (features & UFFD_FEATURE_WP_UNPOPULATED && test_type == TEST_ANON)
+ if (features & UFFD_FEATURE_WP_UNPOPULATED && gopts->test_type == TEST_ANON)
flags = UFFD_FEATURE_WP_UNPOPULATED;

- if (uffd_test_ctx_init(flags, NULL))
+ if (uffd_test_ctx_init(gopts, flags, NULL))
err("context init failed");

- if (posix_memalign(&area, page_size, page_size))
+ if (posix_memalign(&area, gopts->page_size, gopts->page_size))
err("out of memory");
zeropage = area;
- bzero(zeropage, page_size);
+ bzero(zeropage, gopts->page_size);

pthread_mutex_lock(&uffd_read_mutex);

@@ -284,18 +295,18 @@ static int userfaultfd_stress(void)
fflush(stdout);

if (bounces & BOUNCE_POLL)
- fcntl(uffd, F_SETFL, uffd_flags | O_NONBLOCK);
+ fcntl(gopts->uffd, F_SETFL, gopts->uffd_flags | O_NONBLOCK);
else
- fcntl(uffd, F_SETFL, uffd_flags & ~O_NONBLOCK);
+ fcntl(gopts->uffd, F_SETFL, gopts->uffd_flags & ~O_NONBLOCK);

/* register */
- if (uffd_register(uffd, area_dst, mem_size,
- true, test_uffdio_wp, false))
+ if (uffd_register(gopts->uffd, gopts->area_dst, mem_size,
+ true, gopts->test_uffdio_wp, false))
err("register failure");

- if (area_dst_alias) {
- if (uffd_register(uffd, area_dst_alias, mem_size,
- true, test_uffdio_wp, false))
+ if (gopts->area_dst_alias) {
+ if (uffd_register(gopts->uffd, gopts->area_dst_alias, mem_size,
+ true, gopts->test_uffdio_wp, false))
err("register failure alias");
}

@@ -323,87 +334,88 @@ static int userfaultfd_stress(void)
* MADV_DONTNEED only after the UFFDIO_REGISTER, so it's
* required to MADV_DONTNEED here.
*/
- uffd_test_ops->release_pages(area_dst);
+ uffd_test_ops->release_pages(gopts, gopts->area_dst);

- uffd_stats_reset(args, nr_parallel);
+ uffd_stats_reset(gopts, args, gopts->nr_parallel);

/* bounce pass */
if (stress(args)) {
- uffd_test_ctx_clear();
+ uffd_test_ctx_clear(gopts);
return 1;
}

/* Clear all the write protections if there is any */
- if (test_uffdio_wp)
- wp_range(uffd, (unsigned long)area_dst,
- nr_pages * page_size, false);
+ if (gopts->test_uffdio_wp)
+ wp_range(gopts->uffd, (unsigned long)gopts->area_dst,
+ gopts->nr_pages * gopts->page_size, false);

/* unregister */
- if (uffd_unregister(uffd, area_dst, mem_size))
+ if (uffd_unregister(gopts->uffd, gopts->area_dst, mem_size))
err("unregister failure");
- if (area_dst_alias) {
- if (uffd_unregister(uffd, area_dst_alias, mem_size))
+ if (gopts->area_dst_alias) {
+ if (uffd_unregister(gopts->uffd, gopts->area_dst_alias, mem_size))
err("unregister failure alias");
}

/* verification */
if (bounces & BOUNCE_VERIFY)
- for (nr = 0; nr < nr_pages; nr++)
- if (*area_count(area_dst, nr) != count_verify[nr])
+ for (nr = 0; nr < gopts->nr_pages; nr++)
+ if (*area_count(gopts->area_dst, nr, gopts) !=
+ gopts->count_verify[nr])
err("error area_count %llu %llu %lu\n",
- *area_count(area_src, nr),
- count_verify[nr], nr);
+ *area_count(gopts->area_src, nr, gopts),
+ gopts->count_verify[nr], nr);

/* prepare next bounce */
- swap(area_src, area_dst);
+ swap(gopts->area_src, gopts->area_dst);

- swap(area_src_alias, area_dst_alias);
+ swap(gopts->area_src_alias, gopts->area_dst_alias);

- uffd_stats_report(args, nr_parallel);
+ uffd_stats_report(args, gopts->nr_parallel);
}
- uffd_test_ctx_clear();
+ uffd_test_ctx_clear(gopts);

return 0;
}

-static void set_test_type(const char *type)
+static void set_test_type(uffd_global_test_opts_t *gopts, const char *type)
{
if (!strcmp(type, "anon")) {
- test_type = TEST_ANON;
+ gopts->test_type = TEST_ANON;
uffd_test_ops = &anon_uffd_test_ops;
} else if (!strcmp(type, "hugetlb")) {
- test_type = TEST_HUGETLB;
+ gopts->test_type = TEST_HUGETLB;
uffd_test_ops = &hugetlb_uffd_test_ops;
- map_shared = true;
+ gopts->map_shared = true;
} else if (!strcmp(type, "hugetlb-private")) {
- test_type = TEST_HUGETLB;
+ gopts->test_type = TEST_HUGETLB;
uffd_test_ops = &hugetlb_uffd_test_ops;
} else if (!strcmp(type, "shmem")) {
- map_shared = true;
- test_type = TEST_SHMEM;
+ gopts->map_shared = true;
+ gopts->test_type = TEST_SHMEM;
uffd_test_ops = &shmem_uffd_test_ops;
} else if (!strcmp(type, "shmem-private")) {
- test_type = TEST_SHMEM;
+ gopts->test_type = TEST_SHMEM;
uffd_test_ops = &shmem_uffd_test_ops;
}
}

-static void parse_test_type_arg(const char *raw_type)
+static void parse_test_type_arg(uffd_global_test_opts_t *gopts, const char *raw_type)
{
- set_test_type(raw_type);
+ set_test_type(gopts, raw_type);

- if (!test_type)
+ if (!gopts->test_type)
err("failed to parse test type argument: '%s'", raw_type);

- if (test_type == TEST_HUGETLB)
- page_size = default_huge_page_size();
+ if (gopts->test_type == TEST_HUGETLB)
+ gopts->page_size = default_huge_page_size();
else
- page_size = sysconf(_SC_PAGE_SIZE);
+ gopts->page_size = sysconf(_SC_PAGE_SIZE);

- if (!page_size)
+ if (!gopts->page_size)
err("Unable to determine page size");
- if ((unsigned long) area_count(NULL, 0) + sizeof(unsigned long long) * 2
- > page_size)
+ if ((unsigned long) area_count(NULL, 0, gopts) + sizeof(unsigned long long) * 2
+ > gopts->page_size)
err("Impossible to run this test");

/*
@@ -415,21 +427,22 @@ static void parse_test_type_arg(const char *raw_type)
if (uffd_get_features(&features) && errno == ENOENT)
ksft_exit_skip("failed to get available features (%d)\n", errno);

- test_uffdio_wp = test_uffdio_wp &&
+ gopts->test_uffdio_wp = gopts->test_uffdio_wp &&
(features & UFFD_FEATURE_PAGEFAULT_FLAG_WP);

- if (test_type != TEST_ANON && !(features & UFFD_FEATURE_WP_HUGETLBFS_SHMEM))
- test_uffdio_wp = false;
+ if (gopts->test_type != TEST_ANON && !(features & UFFD_FEATURE_WP_HUGETLBFS_SHMEM))
+ gopts->test_uffdio_wp = false;

- close(uffd);
- uffd = -1;
+ close(gopts->uffd);
+ gopts->uffd = -1;
}

static void sigalrm(int sig)
{
if (sig != SIGALRM)
abort();
- test_uffdio_copy_eexist = true;
+ /* TODO: Remove or fix this test */
+ // gopts->test_uffdio_copy_eexist = true;
alarm(ALARM_INTERVAL_SECS);
}

@@ -438,6 +451,9 @@ int main(int argc, char **argv)
unsigned long nr_cpus;
size_t bytes;

+ uffd_global_test_opts_t *gopts =
+ (uffd_global_test_opts_t *) malloc(sizeof(uffd_global_test_opts_t));
+
if (argc < 4)
usage();

@@ -445,11 +461,11 @@ int main(int argc, char **argv)
err("failed to arm SIGALRM");
alarm(ALARM_INTERVAL_SECS);

- parse_test_type_arg(argv[1]);
+ parse_test_type_arg(gopts, argv[1]);
bytes = atol(argv[2]) * 1024 * 1024;

- if (test_type == TEST_HUGETLB &&
- get_free_hugepages() < bytes / page_size) {
+ if (gopts->test_type == TEST_HUGETLB &&
+ get_free_hugepages() < bytes / gopts->page_size) {
printf("skip: Skipping userfaultfd... not enough hugepages\n");
return KSFT_SKIP;
}
@@ -459,15 +475,15 @@ int main(int argc, char **argv)
/* Don't let calculation below go to zero. */
ksft_print_msg("_SC_NPROCESSORS_ONLN (%lu) too large, capping nr_threads to 32\n",
nr_cpus);
- nr_parallel = 32;
+ gopts->nr_parallel = 32;
} else {
- nr_parallel = nr_cpus;
+ gopts->nr_parallel = nr_cpus;
}

- nr_pages_per_cpu = bytes / page_size / nr_parallel;
- if (!nr_pages_per_cpu) {
+ gopts->nr_pages_per_cpu = bytes / gopts->page_size / gopts->nr_parallel;
+ if (!gopts->nr_pages_per_cpu) {
_err("pages_per_cpu = 0, cannot test (%lu / %lu / %lu)",
- bytes, page_size, nr_parallel);
+ bytes, gopts->page_size, gopts->nr_parallel);
usage();
}

@@ -476,11 +492,11 @@ int main(int argc, char **argv)
_err("invalid bounces");
usage();
}
- nr_pages = nr_pages_per_cpu * nr_parallel;
+ gopts->nr_pages = gopts->nr_pages_per_cpu * gopts->nr_parallel;

printf("nr_pages: %lu, nr_pages_per_cpu: %lu\n",
- nr_pages, nr_pages_per_cpu);
- return userfaultfd_stress();
+ gopts->nr_pages, gopts->nr_pages_per_cpu);
+ return userfaultfd_stress(gopts);
}

#else /* __NR_userfaultfd */
diff --git a/tools/testing/selftests/mm/uffd-unit-tests.c b/tools/testing/selftests/mm/uffd-unit-tests.c
index c73fd5d455c8..bed96f41c578 100644
--- a/tools/testing/selftests/mm/uffd-unit-tests.c
+++ b/tools/testing/selftests/mm/uffd-unit-tests.c
@@ -76,7 +76,7 @@ struct uffd_test_args {
typedef struct uffd_test_args uffd_test_args_t;

/* Returns: UFFD_TEST_* */
-typedef void (*uffd_test_fn)(uffd_test_args_t *);
+typedef void (*uffd_test_fn)(uffd_global_test_opts_t *, uffd_test_args_t *);

typedef struct {
const char *name;
@@ -181,33 +181,6 @@ static int test_uffd_api(bool use_dev)
return 1;
}

-/*
- * This function initializes the global variables. TODO: remove global
- * vars and then remove this.
- */
-static int
-uffd_setup_environment(uffd_test_args_t *args, uffd_test_case_t *test,
- mem_type_t *mem_type, const char **errmsg)
-{
- map_shared = mem_type->shared;
- uffd_test_ops = mem_type->mem_ops;
- uffd_test_case_ops = test->test_case_ops;
-
- if (mem_type->mem_flag & (MEM_HUGETLB_PRIVATE | MEM_HUGETLB))
- page_size = default_huge_page_size();
- else
- page_size = psize();
-
- /* Ensure we have at least 2 pages */
- nr_pages = MAX(UFFD_TEST_MEM_SIZE, page_size * 2) / page_size;
- /* TODO: remove this global var.. it's so ugly */
- nr_parallel = 1;
-
- /* Initialize test arguments */
- args->mem_type = mem_type;
-
- return uffd_test_ctx_init(test->uffd_feature_required, errmsg);
-}

static bool uffd_feature_supported(uffd_test_case_t *test)
{
@@ -237,7 +210,8 @@ static int pagemap_open(void)
} while (0)

typedef struct {
- int parent_uffd, child_uffd;
+ uffd_global_test_opts_t *gopts;
+ int child_uffd;
} fork_event_args;

static void *fork_event_consumer(void *data)
@@ -245,10 +219,10 @@ static void *fork_event_consumer(void *data)
fork_event_args *args = data;
struct uffd_msg msg = { 0 };

- ready_for_fork = true;
+ args->gopts->ready_for_fork = true;

/* Read until a full msg received */
- while (uffd_read_msg(args->parent_uffd, &msg));
+ while (uffd_read_msg(args->gopts, &msg));

if (msg.event != UFFD_EVENT_FORK)
err("wrong message: %u\n", msg.event);
@@ -304,9 +278,9 @@ static void unpin_pages(pin_args *args)
args->pinned = false;
}

-static int pagemap_test_fork(int uffd, bool with_event, bool test_pin)
+static int pagemap_test_fork(uffd_global_test_opts_t *gopts, bool with_event, bool test_pin)
{
- fork_event_args args = { .parent_uffd = uffd, .child_uffd = -1 };
+ fork_event_args args = { .gopts = gopts, .child_uffd = -1 };
pthread_t thread;
pid_t child;
uint64_t value;
@@ -314,10 +288,10 @@ static int pagemap_test_fork(int uffd, bool with_event, bool test_pin)

/* Prepare a thread to resolve EVENT_FORK */
if (with_event) {
- ready_for_fork = false;
+ gopts->ready_for_fork = false;
if (pthread_create(&thread, NULL, fork_event_consumer, &args))
err("pthread_create()");
- while (!ready_for_fork)
+ while (!gopts->ready_for_fork)
; /* Wait for the poll_thread to start executing before forking */
}

@@ -328,14 +302,14 @@ static int pagemap_test_fork(int uffd, bool with_event, bool test_pin)

fd = pagemap_open();

- if (test_pin && pin_pages(&args, area_dst, page_size))
+ if (test_pin && pin_pages(&args, gopts->area_dst, gopts->page_size))
/*
* Normally when reach here we have pinned in
* previous tests, so shouldn't fail anymore
*/
err("pin page failed in child");

- value = pagemap_get_entry(fd, area_dst);
+ value = pagemap_get_entry(fd, gopts->area_dst);
/*
* After fork(), we should handle uffd-wp bit differently:
*
@@ -361,70 +335,70 @@ static int pagemap_test_fork(int uffd, bool with_event, bool test_pin)
return result;
}

-static void uffd_wp_unpopulated_test(uffd_test_args_t *args)
+static void uffd_wp_unpopulated_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
uint64_t value;
int pagemap_fd;

- if (uffd_register(uffd, area_dst, nr_pages * page_size,
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size,
false, true, false))
err("register failed");

pagemap_fd = pagemap_open();

/* Test applying pte marker to anon unpopulated */
- wp_range(uffd, (uint64_t)area_dst, page_size, true);
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, true);
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, true);

/* Test unprotect on anon pte marker */
- wp_range(uffd, (uint64_t)area_dst, page_size, false);
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, false);
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, false);

/* Test zap on anon marker */
- wp_range(uffd, (uint64_t)area_dst, page_size, true);
- if (madvise(area_dst, page_size, MADV_DONTNEED))
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, true);
+ if (madvise(gopts->area_dst, gopts->page_size, MADV_DONTNEED))
err("madvise(MADV_DONTNEED) failed");
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, false);

/* Test fault in after marker removed */
- *area_dst = 1;
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ *gopts->area_dst = 1;
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, false);
/* Drop it to make pte none again */
- if (madvise(area_dst, page_size, MADV_DONTNEED))
+ if (madvise(gopts->area_dst, gopts->page_size, MADV_DONTNEED))
err("madvise(MADV_DONTNEED) failed");

/* Test read-zero-page upon pte marker */
- wp_range(uffd, (uint64_t)area_dst, page_size, true);
- *(volatile char *)area_dst;
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, true);
+ *(volatile char *)gopts->area_dst;
/* Drop it to make pte none again */
- if (madvise(area_dst, page_size, MADV_DONTNEED))
+ if (madvise(gopts->area_dst, gopts->page_size, MADV_DONTNEED))
err("madvise(MADV_DONTNEED) failed");

uffd_test_pass();
}

-static void uffd_wp_fork_test_common(uffd_test_args_t *args,
+static void uffd_wp_fork_test_common(uffd_global_test_opts_t *gopts, uffd_test_args_t *args,
bool with_event)
{
int pagemap_fd;
uint64_t value;

- if (uffd_register(uffd, area_dst, nr_pages * page_size,
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size,
false, true, false))
err("register failed");

pagemap_fd = pagemap_open();

/* Touch the page */
- *area_dst = 1;
- wp_range(uffd, (uint64_t)area_dst, page_size, true);
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ *gopts->area_dst = 1;
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, true);
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, true);
- if (pagemap_test_fork(uffd, with_event, false)) {
+ if (pagemap_test_fork(gopts, with_event, false)) {
uffd_test_fail("Detected %s uffd-wp bit in child in present pte",
with_event ? "missing" : "stall");
goto out;
@@ -442,79 +416,80 @@ static void uffd_wp_fork_test_common(uffd_test_args_t *args,
* to expose pte markers.
*/
if (args->mem_type->shared) {
- if (madvise(area_dst, page_size, MADV_DONTNEED))
+ if (madvise(gopts->area_dst, gopts->page_size, MADV_DONTNEED))
err("MADV_DONTNEED");
} else {
/*
* NOTE: ignore retval because private-hugetlb doesn't yet
* support swapping, so it could fail.
*/
- madvise(area_dst, page_size, MADV_PAGEOUT);
+ madvise(gopts->area_dst, gopts->page_size, MADV_PAGEOUT);
}

/* Uffd-wp should persist even swapped out */
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, true);
- if (pagemap_test_fork(uffd, with_event, false)) {
+ if (pagemap_test_fork(gopts, with_event, false)) {
uffd_test_fail("Detected %s uffd-wp bit in child in zapped pte",
with_event ? "missing" : "stall");
goto out;
}

/* Unprotect; this tests swap pte modifications */
- wp_range(uffd, (uint64_t)area_dst, page_size, false);
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, false);
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, false);

/* Fault in the page from disk */
- *area_dst = 2;
- value = pagemap_get_entry(pagemap_fd, area_dst);
+ *gopts->area_dst = 2;
+ value = pagemap_get_entry(pagemap_fd, gopts->area_dst);
pagemap_check_wp(value, false);
uffd_test_pass();
out:
- if (uffd_unregister(uffd, area_dst, nr_pages * page_size))
+ if (uffd_unregister(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size))
err("unregister failed");
close(pagemap_fd);
}

-static void uffd_wp_fork_test(uffd_test_args_t *args)
+static void uffd_wp_fork_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_wp_fork_test_common(args, false);
+ uffd_wp_fork_test_common(gopts, args, false);
}

-static void uffd_wp_fork_with_event_test(uffd_test_args_t *args)
+static void uffd_wp_fork_with_event_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_wp_fork_test_common(args, true);
+ uffd_wp_fork_test_common(gopts, args, true);
}

-static void uffd_wp_fork_pin_test_common(uffd_test_args_t *args,
+static void uffd_wp_fork_pin_test_common(uffd_global_test_opts_t *gopts,
+ uffd_test_args_t *args,
bool with_event)
{
int pagemap_fd;
pin_args pin_args = {};

- if (uffd_register(uffd, area_dst, page_size, false, true, false))
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->page_size, false, true, false))
err("register failed");

pagemap_fd = pagemap_open();

/* Touch the page */
- *area_dst = 1;
- wp_range(uffd, (uint64_t)area_dst, page_size, true);
+ *gopts->area_dst = 1;
+ wp_range(gopts->uffd, (uint64_t)gopts->area_dst, gopts->page_size, true);

/*
* 1. First pin, then fork(). This tests fork() special path when
* doing early CoW if the page is private.
*/
- if (pin_pages(&pin_args, area_dst, page_size)) {
+ if (pin_pages(&pin_args, gopts->area_dst, gopts->page_size)) {
uffd_test_skip("Possibly CONFIG_GUP_TEST missing "
"or unprivileged");
close(pagemap_fd);
- uffd_unregister(uffd, area_dst, page_size);
+ uffd_unregister(gopts->uffd, gopts->area_dst, gopts->page_size);
return;
}

- if (pagemap_test_fork(uffd, with_event, false)) {
+ if (pagemap_test_fork(gopts, with_event, false)) {
uffd_test_fail("Detected %s uffd-wp bit in early CoW of fork()",
with_event ? "missing" : "stall");
unpin_pages(&pin_args);
@@ -527,49 +502,50 @@ static void uffd_wp_fork_pin_test_common(uffd_test_args_t *args,
* 2. First fork(), then pin (in the child, where test_pin==true).
* This tests COR, aka, page unsharing on private memories.
*/
- if (pagemap_test_fork(uffd, with_event, true)) {
+ if (pagemap_test_fork(gopts, with_event, true)) {
uffd_test_fail("Detected %s uffd-wp bit when RO pin",
with_event ? "missing" : "stall");
goto out;
}
uffd_test_pass();
out:
- if (uffd_unregister(uffd, area_dst, page_size))
+ if (uffd_unregister(gopts->uffd, gopts->area_dst, gopts->page_size))
err("register failed");
close(pagemap_fd);
}

-static void uffd_wp_fork_pin_test(uffd_test_args_t *args)
+static void uffd_wp_fork_pin_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_wp_fork_pin_test_common(args, false);
+ uffd_wp_fork_pin_test_common(gopts, args, false);
}

-static void uffd_wp_fork_pin_with_event_test(uffd_test_args_t *args)
+static void uffd_wp_fork_pin_with_event_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_wp_fork_pin_test_common(args, true);
+ uffd_wp_fork_pin_test_common(gopts, args, true);
}

-static void check_memory_contents(char *p)
+static void check_memory_contents(uffd_global_test_opts_t *gopts, char *p)
{
unsigned long i, j;
uint8_t expected_byte;

- for (i = 0; i < nr_pages; ++i) {
+ for (i = 0; i < gopts->nr_pages; ++i) {
expected_byte = ~((uint8_t)(i % ((uint8_t)-1)));
- for (j = 0; j < page_size; j++) {
- uint8_t v = *(uint8_t *)(p + (i * page_size) + j);
+ for (j = 0; j < gopts->page_size; j++) {
+ uint8_t v = *(uint8_t *)(p + (i * gopts->page_size) + j);
if (v != expected_byte)
err("unexpected page contents");
}
}
}

-static void uffd_minor_test_common(bool test_collapse, bool test_wp)
+static void uffd_minor_test_common(uffd_global_test_opts_t *gopts, bool test_collapse, bool test_wp)
{
unsigned long p;
pthread_t uffd_mon;
char c;
struct uffd_args args = { 0 };
+ args.gopts = gopts;

/*
* NOTE: MADV_COLLAPSE is not yet compatible with WP, so testing
@@ -577,7 +553,7 @@ static void uffd_minor_test_common(bool test_collapse, bool test_wp)
*/
assert(!(test_collapse && test_wp));

- if (uffd_register(uffd, area_dst_alias, nr_pages * page_size,
+ if (uffd_register(gopts->uffd, gopts->area_dst_alias, gopts->nr_pages * gopts->page_size,
/* NOTE! MADV_COLLAPSE may not work with uffd-wp */
false, test_wp, true))
err("register failure");
@@ -586,9 +562,9 @@ static void uffd_minor_test_common(bool test_collapse, bool test_wp)
* After registering with UFFD, populate the non-UFFD-registered side of
* the shared mapping. This should *not* trigger any UFFD minor faults.
*/
- for (p = 0; p < nr_pages; ++p)
- memset(area_dst + (p * page_size), p % ((uint8_t)-1),
- page_size);
+ for (p = 0; p < gopts->nr_pages; ++p)
+ memset(gopts->area_dst + (p * gopts->page_size), p % ((uint8_t)-1),
+ gopts->page_size);

args.apply_wp = test_wp;
if (pthread_create(&uffd_mon, NULL, uffd_poll_thread, &args))
@@ -600,50 +576,51 @@ static void uffd_minor_test_common(bool test_collapse, bool test_wp)
* fault. uffd_poll_thread will resolve the fault by bit-flipping the
* page's contents, and then issuing a CONTINUE ioctl.
*/
- check_memory_contents(area_dst_alias);
+ check_memory_contents(gopts, gopts->area_dst_alias);

- if (write(pipefd[1], &c, sizeof(c)) != sizeof(c))
+ if (write(gopts->pipefd[1], &c, sizeof(c)) != sizeof(c))
err("pipe write");
if (pthread_join(uffd_mon, NULL))
err("join() failed");

if (test_collapse) {
- if (madvise(area_dst_alias, nr_pages * page_size,
+ if (madvise(gopts->area_dst_alias, gopts->nr_pages * gopts->page_size,
MADV_COLLAPSE)) {
/* It's fine to fail for this one... */
uffd_test_skip("MADV_COLLAPSE failed");
return;
}

- uffd_test_ops->check_pmd_mapping(area_dst,
- nr_pages * page_size /
+ uffd_test_ops->check_pmd_mapping(gopts,
+ gopts->area_dst,
+ gopts->nr_pages * gopts->page_size /
read_pmd_pagesize());
/*
* This won't cause uffd-fault - it purely just makes sure there
* was no corruption.
*/
- check_memory_contents(area_dst_alias);
+ check_memory_contents(gopts, gopts->area_dst_alias);
}

- if (args.missing_faults != 0 || args.minor_faults != nr_pages)
+ if (args.missing_faults != 0 || args.minor_faults != gopts->nr_pages)
uffd_test_fail("stats check error");
else
uffd_test_pass();
}

-void uffd_minor_test(uffd_test_args_t *args)
+void uffd_minor_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_minor_test_common(false, false);
+ uffd_minor_test_common(gopts, false, false);
}

-void uffd_minor_wp_test(uffd_test_args_t *args)
+void uffd_minor_wp_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_minor_test_common(false, true);
+ uffd_minor_test_common(gopts, false, true);
}

-void uffd_minor_collapse_test(uffd_test_args_t *args)
+void uffd_minor_collapse_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_minor_test_common(true, false);
+ uffd_minor_test_common(gopts, true, false);
}

static sigjmp_buf jbuf, *sigbuf;
@@ -678,7 +655,7 @@ static void sighndl(int sig, siginfo_t *siginfo, void *ptr)
* This also tests UFFD_FEATURE_EVENT_FORK event along with the signal
* feature. Using monitor thread, verify no userfault events are generated.
*/
-static int faulting_process(int signal_test, bool wp)
+static int faulting_process(uffd_global_test_opts_t *gopts, int signal_test, bool wp)
{
unsigned long nr, i;
unsigned long long count;
@@ -687,7 +664,7 @@ static int faulting_process(int signal_test, bool wp)
struct sigaction act;
volatile unsigned long signalled = 0;

- split_nr_pages = (nr_pages + 1) / 2;
+ split_nr_pages = (gopts->nr_pages + 1) / 2;

if (signal_test) {
sigbuf = &jbuf;
@@ -701,7 +678,7 @@ static int faulting_process(int signal_test, bool wp)

for (nr = 0; nr < split_nr_pages; nr++) {
volatile int steps = 1;
- unsigned long offset = nr * page_size;
+ unsigned long offset = nr * gopts->page_size;

if (signal_test) {
if (sigsetjmp(*sigbuf, 1) != 0) {
@@ -713,15 +690,15 @@ static int faulting_process(int signal_test, bool wp)
if (steps == 1) {
/* This is a MISSING request */
steps++;
- if (copy_page(uffd, offset, wp))
+ if (copy_page(gopts, offset, wp))
signalled++;
} else {
/* This is a WP request */
assert(steps == 2);
- wp_range(uffd,
- (__u64)area_dst +
+ wp_range(gopts->uffd,
+ (__u64)gopts->area_dst +
offset,
- page_size, false);
+ gopts->page_size, false);
}
} else {
signalled++;
@@ -730,51 +707,53 @@ static int faulting_process(int signal_test, bool wp)
}
}

- count = *area_count(area_dst, nr);
- if (count != count_verify[nr])
+ count = *area_count(gopts->area_dst, nr, gopts);
+ if (count != gopts->count_verify[nr])
err("nr %lu memory corruption %llu %llu\n",
- nr, count, count_verify[nr]);
+ nr, count, gopts->count_verify[nr]);
/*
* Trigger write protection if there is by writing
* the same value back.
*/
- *area_count(area_dst, nr) = count;
+ *area_count(gopts->area_dst, nr, gopts) = count;
}

if (signal_test)
return signalled != split_nr_pages;

- area_dst = mremap(area_dst, nr_pages * page_size, nr_pages * page_size,
- MREMAP_MAYMOVE | MREMAP_FIXED, area_src);
- if (area_dst == MAP_FAILED)
+ gopts->area_dst = mremap(gopts->area_dst, gopts->nr_pages * gopts->page_size,
+ gopts->nr_pages * gopts->page_size,
+ MREMAP_MAYMOVE | MREMAP_FIXED,
+ gopts->area_src);
+ if (gopts->area_dst == MAP_FAILED)
err("mremap");
/* Reset area_src since we just clobbered it */
- area_src = NULL;
+ gopts->area_src = NULL;

- for (; nr < nr_pages; nr++) {
- count = *area_count(area_dst, nr);
- if (count != count_verify[nr]) {
+ for (; nr < gopts->nr_pages; nr++) {
+ count = *area_count(gopts->area_dst, nr, gopts);
+ if (count != gopts->count_verify[nr]) {
err("nr %lu memory corruption %llu %llu\n",
- nr, count, count_verify[nr]);
+ nr, count, gopts->count_verify[nr]);
}
/*
* Trigger write protection if there is by writing
* the same value back.
*/
- *area_count(area_dst, nr) = count;
+ *area_count(gopts->area_dst, nr, gopts) = count;
}

- uffd_test_ops->release_pages(area_dst);
+ uffd_test_ops->release_pages(gopts, gopts->area_dst);

- for (nr = 0; nr < nr_pages; nr++)
- for (i = 0; i < page_size; i++)
- if (*(area_dst + nr * page_size + i) != 0)
+ for (nr = 0; nr < gopts->nr_pages; nr++)
+ for (i = 0; i < gopts->page_size; i++)
+ if (*(gopts->area_dst + nr * gopts->page_size + i) != 0)
err("page %lu offset %lu is not zero", nr, i);

return 0;
}

-static void uffd_sigbus_test_common(bool wp)
+static void uffd_sigbus_test_common(uffd_global_test_opts_t *gopts, bool wp)
{
unsigned long userfaults;
pthread_t uffd_mon;
@@ -782,25 +761,26 @@ static void uffd_sigbus_test_common(bool wp)
int err;
char c;
struct uffd_args args = { 0 };
+ args.gopts = gopts;

- ready_for_fork = false;
+ gopts->ready_for_fork = false;

- fcntl(uffd, F_SETFL, uffd_flags | O_NONBLOCK);
+ fcntl(gopts->uffd, F_SETFL, gopts->uffd_flags | O_NONBLOCK);

- if (uffd_register(uffd, area_dst, nr_pages * page_size,
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size,
true, wp, false))
err("register failure");

- if (faulting_process(1, wp))
+ if (faulting_process(gopts, 1, wp))
err("faulting process failed");

- uffd_test_ops->release_pages(area_dst);
+ uffd_test_ops->release_pages(gopts, gopts->area_dst);

args.apply_wp = wp;
if (pthread_create(&uffd_mon, NULL, uffd_poll_thread, &args))
err("uffd_poll_thread create");

- while (!ready_for_fork)
+ while (!gopts->ready_for_fork)
; /* Wait for the poll_thread to start executing before forking */

pid = fork();
@@ -808,12 +788,12 @@ static void uffd_sigbus_test_common(bool wp)
err("fork");

if (!pid)
- exit(faulting_process(2, wp));
+ exit(faulting_process(gopts, 2, wp));

waitpid(pid, &err, 0);
if (err)
err("faulting process failed");
- if (write(pipefd[1], &c, sizeof(c)) != sizeof(c))
+ if (write(gopts->pipefd[1], &c, sizeof(c)) != sizeof(c))
err("pipe write");
if (pthread_join(uffd_mon, (void **)&userfaults))
err("pthread_join()");
@@ -824,28 +804,29 @@ static void uffd_sigbus_test_common(bool wp)
uffd_test_pass();
}

-static void uffd_sigbus_test(uffd_test_args_t *args)
+static void uffd_sigbus_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_sigbus_test_common(false);
+ uffd_sigbus_test_common(gopts, false);
}

-static void uffd_sigbus_wp_test(uffd_test_args_t *args)
+static void uffd_sigbus_wp_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_sigbus_test_common(true);
+ uffd_sigbus_test_common(gopts, true);
}

-static void uffd_events_test_common(bool wp)
+static void uffd_events_test_common(uffd_global_test_opts_t *gopts, bool wp)
{
pthread_t uffd_mon;
pid_t pid;
int err;
char c;
struct uffd_args args = { 0 };
+ args.gopts = gopts;

- ready_for_fork = false;
+ gopts->ready_for_fork = false;

- fcntl(uffd, F_SETFL, uffd_flags | O_NONBLOCK);
- if (uffd_register(uffd, area_dst, nr_pages * page_size,
+ fcntl(gopts->uffd, F_SETFL, gopts->uffd_flags | O_NONBLOCK);
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size,
true, wp, false))
err("register failure");

@@ -853,7 +834,7 @@ static void uffd_events_test_common(bool wp)
if (pthread_create(&uffd_mon, NULL, uffd_poll_thread, &args))
err("uffd_poll_thread create");

- while (!ready_for_fork)
+ while (!gopts->ready_for_fork)
; /* Wait for the poll_thread to start executing before forking */

pid = fork();
@@ -861,39 +842,39 @@ static void uffd_events_test_common(bool wp)
err("fork");

if (!pid)
- exit(faulting_process(0, wp));
+ exit(faulting_process(gopts, 0, wp));

waitpid(pid, &err, 0);
if (err)
err("faulting process failed");
- if (write(pipefd[1], &c, sizeof(c)) != sizeof(c))
+ if (write(gopts->pipefd[1], &c, sizeof(c)) != sizeof(c))
err("pipe write");
if (pthread_join(uffd_mon, NULL))
err("pthread_join()");

- if (args.missing_faults != nr_pages)
+ if (args.missing_faults != gopts->nr_pages)
uffd_test_fail("Fault counts wrong");
else
uffd_test_pass();
}

-static void uffd_events_test(uffd_test_args_t *args)
+static void uffd_events_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_events_test_common(false);
+ uffd_events_test_common(gopts, false);
}

-static void uffd_events_wp_test(uffd_test_args_t *args)
+static void uffd_events_wp_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
- uffd_events_test_common(true);
+ uffd_events_test_common(gopts, true);
}

-static void retry_uffdio_zeropage(int ufd,
+static void retry_uffdio_zeropage(uffd_global_test_opts_t *gopts,
struct uffdio_zeropage *uffdio_zeropage)
{
- uffd_test_ops->alias_mapping(&uffdio_zeropage->range.start,
+ uffd_test_ops->alias_mapping(gopts, &uffdio_zeropage->range.start,
uffdio_zeropage->range.len,
0);
- if (ioctl(ufd, UFFDIO_ZEROPAGE, uffdio_zeropage)) {
+ if (ioctl(gopts->uffd, UFFDIO_ZEROPAGE, uffdio_zeropage)) {
if (uffdio_zeropage->zeropage != -EEXIST)
err("UFFDIO_ZEROPAGE error: %"PRId64,
(int64_t)uffdio_zeropage->zeropage);
@@ -903,16 +884,16 @@ static void retry_uffdio_zeropage(int ufd,
}
}

-static bool do_uffdio_zeropage(int ufd, bool has_zeropage)
+static bool do_uffdio_zeropage(uffd_global_test_opts_t *gopts, bool has_zeropage)
{
struct uffdio_zeropage uffdio_zeropage = { 0 };
int ret;
__s64 res;

- uffdio_zeropage.range.start = (unsigned long) area_dst;
- uffdio_zeropage.range.len = page_size;
+ uffdio_zeropage.range.start = (unsigned long) gopts->area_dst;
+ uffdio_zeropage.range.len = gopts->page_size;
uffdio_zeropage.mode = 0;
- ret = ioctl(ufd, UFFDIO_ZEROPAGE, &uffdio_zeropage);
+ ret = ioctl(gopts->uffd, UFFDIO_ZEROPAGE, &uffdio_zeropage);
res = uffdio_zeropage.zeropage;
if (ret) {
/* real retval in ufdio_zeropage.zeropage */
@@ -921,10 +902,10 @@ static bool do_uffdio_zeropage(int ufd, bool has_zeropage)
else if (res != -EINVAL)
err("UFFDIO_ZEROPAGE not -EINVAL");
} else if (has_zeropage) {
- if (res != page_size)
+ if (res != gopts->page_size)
err("UFFDIO_ZEROPAGE unexpected size");
else
- retry_uffdio_zeropage(ufd, &uffdio_zeropage);
+ retry_uffdio_zeropage(gopts, &uffdio_zeropage);
return true;
} else
err("UFFDIO_ZEROPAGE succeeded");
@@ -950,25 +931,29 @@ uffd_register_detect_zeropage(int uffd, void *addr, uint64_t len)
}

/* exercise UFFDIO_ZEROPAGE */
-static void uffd_zeropage_test(uffd_test_args_t *args)
+static void uffd_zeropage_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
bool has_zeropage;
int i;

- has_zeropage = uffd_register_detect_zeropage(uffd, area_dst, page_size);
- if (area_dst_alias)
+ has_zeropage = uffd_register_detect_zeropage(gopts->uffd,
+ gopts->area_dst,
+ gopts->page_size);
+ if (gopts->area_dst_alias)
/* Ignore the retval; we already have it */
- uffd_register_detect_zeropage(uffd, area_dst_alias, page_size);
+ uffd_register_detect_zeropage(gopts->uffd, gopts->area_dst_alias, gopts->page_size);

- if (do_uffdio_zeropage(uffd, has_zeropage))
- for (i = 0; i < page_size; i++)
- if (area_dst[i] != 0)
+ if (do_uffdio_zeropage(gopts, has_zeropage))
+ for (i = 0; i < gopts->page_size; i++)
+ if (gopts->area_dst[i] != 0)
err("data non-zero at offset %d\n", i);

- if (uffd_unregister(uffd, area_dst, page_size))
+ if (uffd_unregister(gopts->uffd, gopts->area_dst, gopts->page_size))
err("unregister");

- if (area_dst_alias && uffd_unregister(uffd, area_dst_alias, page_size))
+ if (gopts->area_dst_alias && uffd_unregister(gopts->uffd,
+ gopts->area_dst_alias,
+ gopts->page_size))
err("unregister");

uffd_test_pass();
@@ -987,26 +972,27 @@ static void uffd_register_poison(int uffd, void *addr, uint64_t len)
err("registered area doesn't support COPY and POISON ioctls");
}

-static void do_uffdio_poison(int uffd, unsigned long offset)
+static void do_uffdio_poison(uffd_global_test_opts_t *gopts, unsigned long offset)
{
struct uffdio_poison uffdio_poison = { 0 };
int ret;
__s64 res;

- uffdio_poison.range.start = (unsigned long) area_dst + offset;
- uffdio_poison.range.len = page_size;
+ uffdio_poison.range.start = (unsigned long) gopts->area_dst + offset;
+ uffdio_poison.range.len = gopts->page_size;
uffdio_poison.mode = 0;
- ret = ioctl(uffd, UFFDIO_POISON, &uffdio_poison);
+ ret = ioctl(gopts->uffd, UFFDIO_POISON, &uffdio_poison);
res = uffdio_poison.updated;

if (ret)
err("UFFDIO_POISON error: %"PRId64, (int64_t)res);
- else if (res != page_size)
+ else if (res != gopts->page_size)
err("UFFDIO_POISON unexpected size: %"PRId64, (int64_t)res);
}

-static void uffd_poison_handle_fault(
- struct uffd_msg *msg, struct uffd_args *args)
+static void uffd_poison_handle_fault(uffd_global_test_opts_t *gopts,
+ struct uffd_msg *msg,
+ struct uffd_args *args)
{
unsigned long offset;

@@ -1017,17 +1003,17 @@ static void uffd_poison_handle_fault(
(UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_MINOR))
err("unexpected fault type %llu", msg->arg.pagefault.flags);

- offset = (char *)(unsigned long)msg->arg.pagefault.address - area_dst;
- offset &= ~(page_size-1);
+ offset = (char *)(unsigned long)msg->arg.pagefault.address - gopts->area_dst;
+ offset &= ~(gopts->page_size-1);

/* Odd pages -> copy zeroed page; even pages -> poison. */
- if (offset & page_size)
- copy_page(uffd, offset, false);
+ if (offset & gopts->page_size)
+ copy_page(gopts, offset, false);
else
- do_uffdio_poison(uffd, offset);
+ do_uffdio_poison(gopts, offset);
}

-static void uffd_poison_test(uffd_test_args_t *targs)
+static void uffd_poison_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *targs)
{
pthread_t uffd_mon;
char c;
@@ -1036,10 +1022,12 @@ static void uffd_poison_test(uffd_test_args_t *targs)
unsigned long nr_sigbus = 0;
unsigned long nr;

- fcntl(uffd, F_SETFL, uffd_flags | O_NONBLOCK);
+ args.gopts = gopts;
+
+ fcntl(gopts->uffd, F_SETFL, gopts->uffd_flags | O_NONBLOCK);

- uffd_register_poison(uffd, area_dst, nr_pages * page_size);
- memset(area_src, 0, nr_pages * page_size);
+ uffd_register_poison(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size);
+ memset(gopts->area_src, 0, gopts->nr_pages * gopts->page_size);

args.handle_fault = uffd_poison_handle_fault;
if (pthread_create(&uffd_mon, NULL, uffd_poll_thread, &args))
@@ -1051,9 +1039,9 @@ static void uffd_poison_test(uffd_test_args_t *targs)
if (sigaction(SIGBUS, &act, 0))
err("sigaction");

- for (nr = 0; nr < nr_pages; ++nr) {
- unsigned long offset = nr * page_size;
- const char *bytes = (const char *) area_dst + offset;
+ for (nr = 0; nr < gopts->nr_pages; ++nr) {
+ unsigned long offset = nr * gopts->page_size;
+ const char *bytes = (const char *) gopts->area_dst + offset;
const char *i;

if (sigsetjmp(*sigbuf, 1)) {
@@ -1066,27 +1054,29 @@ static void uffd_poison_test(uffd_test_args_t *targs)
continue;
}

- for (i = bytes; i < bytes + page_size; ++i) {
+ for (i = bytes; i < bytes + gopts->page_size; ++i) {
if (*i)
err("nonzero byte in area_dst (%p) at %p: %u",
- area_dst, i, *i);
+ gopts->area_dst, i, *i);
}
}

- if (write(pipefd[1], &c, sizeof(c)) != sizeof(c))
+ if (write(gopts->pipefd[1], &c, sizeof(c)) != sizeof(c))
err("pipe write");
if (pthread_join(uffd_mon, NULL))
err("pthread_join()");

- if (nr_sigbus != nr_pages / 2)
+ if (nr_sigbus != gopts->nr_pages / 2)
err("expected to receive %lu SIGBUS, actually received %lu",
- nr_pages / 2, nr_sigbus);
+ gopts->nr_pages / 2, nr_sigbus);

uffd_test_pass();
}

static void
-uffd_move_handle_fault_common(struct uffd_msg *msg, struct uffd_args *args,
+uffd_move_handle_fault_common(uffd_global_test_opts_t *gopts,
+ struct uffd_msg *msg,
+ struct uffd_args *args,
unsigned long len)
{
unsigned long offset;
@@ -1098,28 +1088,32 @@ uffd_move_handle_fault_common(struct uffd_msg *msg, struct uffd_args *args,
(UFFD_PAGEFAULT_FLAG_WP | UFFD_PAGEFAULT_FLAG_MINOR | UFFD_PAGEFAULT_FLAG_WRITE))
err("unexpected fault type %llu", msg->arg.pagefault.flags);

- offset = (char *)(unsigned long)msg->arg.pagefault.address - area_dst;
+ offset = (char *)(unsigned long)msg->arg.pagefault.address - gopts->area_dst;
offset &= ~(len-1);

- if (move_page(uffd, offset, len))
+ if (move_page(gopts, offset, len))
args->missing_faults++;
}

-static void uffd_move_handle_fault(struct uffd_msg *msg,
+static void uffd_move_handle_fault(uffd_global_test_opts_t *gopts, struct uffd_msg *msg,
struct uffd_args *args)
{
- uffd_move_handle_fault_common(msg, args, page_size);
+ uffd_move_handle_fault_common(gopts, msg, args, gopts->page_size);
}

-static void uffd_move_pmd_handle_fault(struct uffd_msg *msg,
+static void uffd_move_pmd_handle_fault(uffd_global_test_opts_t *gopts, struct uffd_msg *msg,
struct uffd_args *args)
{
- uffd_move_handle_fault_common(msg, args, read_pmd_pagesize());
+ uffd_move_handle_fault_common(gopts, msg, args, read_pmd_pagesize());
}

static void
-uffd_move_test_common(uffd_test_args_t *targs, unsigned long chunk_size,
- void (*handle_fault)(struct uffd_msg *msg, struct uffd_args *args))
+uffd_move_test_common(uffd_global_test_opts_t *gopts,
+ uffd_test_args_t *targs,
+ unsigned long chunk_size,
+ void (*handle_fault)(struct uffd_global_test_opts *gopts,
+ struct uffd_msg *msg, struct uffd_args *args)
+)
{
unsigned long nr;
pthread_t uffd_mon;
@@ -1131,11 +1125,13 @@ uffd_move_test_common(uffd_test_args_t *targs, unsigned long chunk_size,
unsigned long src_offs = 0;
unsigned long dst_offs = 0;

+ args.gopts = gopts;
+
/* Prevent source pages from being mapped more than once */
- if (madvise(area_src, nr_pages * page_size, MADV_DONTFORK))
+ if (madvise(gopts->area_src, gopts->nr_pages * gopts->page_size, MADV_DONTFORK))
err("madvise(MADV_DONTFORK) failure");

- if (uffd_register(uffd, area_dst, nr_pages * page_size,
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size,
true, false, false))
err("register failure");

@@ -1143,22 +1139,22 @@ uffd_move_test_common(uffd_test_args_t *targs, unsigned long chunk_size,
if (pthread_create(&uffd_mon, NULL, uffd_poll_thread, &args))
err("uffd_poll_thread create");

- step_size = chunk_size / page_size;
- step_count = nr_pages / step_size;
+ step_size = chunk_size / gopts->page_size;
+ step_count = gopts->nr_pages / step_size;

- if (chunk_size > page_size) {
- char *aligned_src = ALIGN_UP(area_src, chunk_size);
- char *aligned_dst = ALIGN_UP(area_dst, chunk_size);
+ if (chunk_size > gopts->page_size) {
+ char *aligned_src = ALIGN_UP(gopts->area_src, chunk_size);
+ char *aligned_dst = ALIGN_UP(gopts->area_dst, chunk_size);

- if (aligned_src != area_src || aligned_dst != area_dst) {
- src_offs = (aligned_src - area_src) / page_size;
- dst_offs = (aligned_dst - area_dst) / page_size;
+ if (aligned_src != gopts->area_src || aligned_dst != gopts->area_dst) {
+ src_offs = (aligned_src - gopts->area_src) / gopts->page_size;
+ dst_offs = (aligned_dst - gopts->area_dst) / gopts->page_size;
step_count--;
}
- orig_area_src = area_src;
- orig_area_dst = area_dst;
- area_src = aligned_src;
- area_dst = aligned_dst;
+ orig_area_src = gopts->area_src;
+ orig_area_dst = gopts->area_dst;
+ gopts->area_src = aligned_src;
+ gopts->area_dst = aligned_dst;
}

/*
@@ -1172,34 +1168,34 @@ uffd_move_test_common(uffd_test_args_t *targs, unsigned long chunk_size,

/* Check area_src content */
for (i = 0; i < step_size; i++) {
- count = *area_count(area_src, nr + i);
- if (count != count_verify[src_offs + nr + i])
+ count = *area_count(gopts->area_src, nr + i, gopts);
+ if (count != gopts->count_verify[src_offs + nr + i])
err("nr %lu source memory invalid %llu %llu\n",
- nr + i, count, count_verify[src_offs + nr + i]);
+ nr + i, count, gopts->count_verify[src_offs + nr + i]);
}

/* Faulting into area_dst should move the page or the huge page */
for (i = 0; i < step_size; i++) {
- count = *area_count(area_dst, nr + i);
- if (count != count_verify[dst_offs + nr + i])
+ count = *area_count(gopts->area_dst, nr + i, gopts);
+ if (count != gopts->count_verify[dst_offs + nr + i])
err("nr %lu memory corruption %llu %llu\n",
- nr, count, count_verify[dst_offs + nr + i]);
+ nr, count, gopts->count_verify[dst_offs + nr + i]);
}

/* Re-check area_src content which should be empty */
for (i = 0; i < step_size; i++) {
- count = *area_count(area_src, nr + i);
+ count = *area_count(gopts->area_src, nr + i, gopts);
if (count != 0)
err("nr %lu move failed %llu %llu\n",
- nr, count, count_verify[src_offs + nr + i]);
+ nr, count, gopts->count_verify[src_offs + nr + i]);
}
}
- if (chunk_size > page_size) {
- area_src = orig_area_src;
- area_dst = orig_area_dst;
+ if (chunk_size > gopts->page_size) {
+ gopts->area_src = orig_area_src;
+ gopts->area_dst = orig_area_dst;
}

- if (write(pipefd[1], &c, sizeof(c)) != sizeof(c))
+ if (write(gopts->pipefd[1], &c, sizeof(c)) != sizeof(c))
err("pipe write");
if (pthread_join(uffd_mon, NULL))
err("join() failed");
@@ -1210,24 +1206,24 @@ uffd_move_test_common(uffd_test_args_t *targs, unsigned long chunk_size,
uffd_test_pass();
}

-static void uffd_move_test(uffd_test_args_t *targs)
+static void uffd_move_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *targs)
{
- uffd_move_test_common(targs, page_size, uffd_move_handle_fault);
+ uffd_move_test_common(gopts, targs, gopts->page_size, uffd_move_handle_fault);
}

-static void uffd_move_pmd_test(uffd_test_args_t *targs)
+static void uffd_move_pmd_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *targs)
{
- if (madvise(area_dst, nr_pages * page_size, MADV_HUGEPAGE))
+ if (madvise(gopts->area_dst, gopts->nr_pages * gopts->page_size, MADV_HUGEPAGE))
err("madvise(MADV_HUGEPAGE) failure");
- uffd_move_test_common(targs, read_pmd_pagesize(),
+ uffd_move_test_common(gopts, targs, read_pmd_pagesize(),
uffd_move_pmd_handle_fault);
}

-static void uffd_move_pmd_split_test(uffd_test_args_t *targs)
+static void uffd_move_pmd_split_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *targs)
{
- if (madvise(area_dst, nr_pages * page_size, MADV_NOHUGEPAGE))
+ if (madvise(gopts->area_dst, gopts->nr_pages * gopts->page_size, MADV_NOHUGEPAGE))
err("madvise(MADV_NOHUGEPAGE) failure");
- uffd_move_test_common(targs, read_pmd_pagesize(),
+ uffd_move_test_common(gopts, targs, read_pmd_pagesize(),
uffd_move_pmd_handle_fault);
}

@@ -1287,6 +1283,11 @@ typedef enum {
THR_STATE_UNINTERRUPTIBLE,
} thread_state;

+typedef struct {
+ uffd_global_test_opts_t *gopts;
+ volatile pid_t *pid;
+} mmap_changing_thread_args;
+
static void sleep_short(void)
{
usleep(1000);
@@ -1329,7 +1330,9 @@ static void thread_state_until(pid_t tid, thread_state state)

static void *uffd_mmap_changing_thread(void *opaque)
{
- volatile pid_t *pid = opaque;
+ mmap_changing_thread_args *args = opaque;
+ uffd_global_test_opts_t *gopts = args->gopts;
+ volatile pid_t *pid = args->pid;
int ret;

/* Unfortunately, it's only fetch-able from the thread itself.. */
@@ -1337,21 +1340,21 @@ static void *uffd_mmap_changing_thread(void *opaque)
*pid = syscall(SYS_gettid);

/* Inject an event, this will hang solid until the event read */
- ret = madvise(area_dst, page_size, MADV_REMOVE);
+ ret = madvise(gopts->area_dst, gopts->page_size, MADV_REMOVE);
if (ret)
err("madvise(MADV_REMOVE) failed");

return NULL;
}

-static void uffd_consume_message(int fd)
+static void uffd_consume_message(uffd_global_test_opts_t *gopts)
{
struct uffd_msg msg = { 0 };

- while (uffd_read_msg(fd, &msg));
+ while (uffd_read_msg(gopts, &msg));
}

-static void uffd_mmap_changing_test(uffd_test_args_t *targs)
+static void uffd_mmap_changing_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *targs)
{
/*
* This stores the real PID (which can be different from how tid is
@@ -1360,13 +1363,14 @@ static void uffd_mmap_changing_test(uffd_test_args_t *targs)
pid_t pid = 0;
pthread_t tid;
int ret;
+ mmap_changing_thread_args args = { gopts, &pid };

- if (uffd_register(uffd, area_dst, nr_pages * page_size,
+ if (uffd_register(gopts->uffd, gopts->area_dst, gopts->nr_pages * gopts->page_size,
true, false, false))
err("uffd_register() failed");

/* Create a thread to generate the racy event */
- ret = pthread_create(&tid, NULL, uffd_mmap_changing_thread, &pid);
+ ret = pthread_create(&tid, NULL, uffd_mmap_changing_thread, &args);
if (ret)
err("pthread_create() failed");

@@ -1380,26 +1384,26 @@ static void uffd_mmap_changing_test(uffd_test_args_t *targs)
/* Wait until the thread hangs at REMOVE event */
thread_state_until(pid, THR_STATE_UNINTERRUPTIBLE);

- if (!uffdio_mmap_changing_test_copy(uffd))
+ if (!uffdio_mmap_changing_test_copy(gopts->uffd))
return;

- if (!uffdio_mmap_changing_test_zeropage(uffd))
+ if (!uffdio_mmap_changing_test_zeropage(gopts->uffd))
return;

- if (!uffdio_mmap_changing_test_move(uffd))
+ if (!uffdio_mmap_changing_test_move(gopts->uffd))
return;

- if (!uffdio_mmap_changing_test_poison(uffd))
+ if (!uffdio_mmap_changing_test_poison(gopts->uffd))
return;

- if (!uffdio_mmap_changing_test_continue(uffd))
+ if (!uffdio_mmap_changing_test_continue(gopts->uffd))
return;

/*
* All succeeded above! Recycle everything. Start by reading the
* event so as to kick the thread roll again..
*/
- uffd_consume_message(uffd);
+ uffd_consume_message(gopts);

ret = pthread_join(tid, NULL);
assert(ret == 0);
@@ -1407,10 +1411,10 @@ static void uffd_mmap_changing_test(uffd_test_args_t *targs)
uffd_test_pass();
}

-static int prevent_hugepages(const char **errmsg)
+static int prevent_hugepages(uffd_global_test_opts_t *gopts, const char **errmsg)
{
/* This should be done before source area is populated */
- if (madvise(area_src, nr_pages * page_size, MADV_NOHUGEPAGE)) {
+ if (madvise(gopts->area_src, gopts->nr_pages * gopts->page_size, MADV_NOHUGEPAGE)) {
/* Ignore only if CONFIG_TRANSPARENT_HUGEPAGE=n */
if (errno != EINVAL) {
if (errmsg)
@@ -1421,10 +1425,10 @@ static int prevent_hugepages(const char **errmsg)
return 0;
}

-static int request_hugepages(const char **errmsg)
+static int request_hugepages(uffd_global_test_opts_t *gopts, const char **errmsg)
{
/* This should be done before source area is populated */
- if (madvise(area_src, nr_pages * page_size, MADV_HUGEPAGE)) {
+ if (madvise(gopts->area_src, gopts->nr_pages * gopts->page_size, MADV_HUGEPAGE)) {
if (errmsg) {
*errmsg = (errno == EINVAL) ?
"CONFIG_TRANSPARENT_HUGEPAGE is not set" :
@@ -1448,13 +1452,17 @@ struct uffd_test_case_ops uffd_move_test_pmd_case_ops = {
* Note that _UFFDIO_ZEROPAGE is tested separately in the zeropage test.
*/
static void
-do_register_ioctls_test(uffd_test_args_t *args, bool miss, bool wp, bool minor)
+do_register_ioctls_test(uffd_global_test_opts_t *gopts,
+ uffd_test_args_t *args,
+ bool miss,
+ bool wp,
+ bool minor)
{
uint64_t ioctls = 0, expected = BIT_ULL(_UFFDIO_WAKE);
mem_type_t *mem_type = args->mem_type;
int ret;

- ret = uffd_register_with_ioctls(uffd, area_dst, page_size,
+ ret = uffd_register_with_ioctls(gopts->uffd, gopts->area_dst, gopts->page_size,
miss, wp, minor, &ioctls);

/*
@@ -1485,18 +1493,18 @@ do_register_ioctls_test(uffd_test_args_t *args, bool miss, bool wp, bool minor)
"(miss=%d, wp=%d, minor=%d): expected=0x%"PRIx64", "
"returned=0x%"PRIx64, miss, wp, minor, expected, ioctls);

- if (uffd_unregister(uffd, area_dst, page_size))
+ if (uffd_unregister(gopts->uffd, gopts->area_dst, gopts->page_size))
err("unregister");
}

-static void uffd_register_ioctls_test(uffd_test_args_t *args)
+static void uffd_register_ioctls_test(uffd_global_test_opts_t *gopts, uffd_test_args_t *args)
{
int miss, wp, minor;

for (miss = 0; miss <= 1; miss++)
for (wp = 0; wp <= 1; wp++)
for (minor = 0; minor <= 1; minor++)
- do_register_ioctls_test(args, miss, wp, minor);
+ do_register_ioctls_test(gopts, args, miss, wp, minor);

uffd_test_pass();
}
@@ -1734,6 +1742,28 @@ int main(int argc, char *argv[])
}
for (j = 0; j < n_mems; j++) {
mem_type = &mem_types[j];
+
+ /* Initialize global test options */
+ uffd_global_test_opts_t gopts;
+
+ gopts.map_shared = mem_type->shared;
+ uffd_test_ops = mem_type->mem_ops;
+ uffd_test_case_ops = test->test_case_ops;
+
+ if (mem_type->mem_flag & (MEM_HUGETLB_PRIVATE | MEM_HUGETLB))
+ gopts.page_size = default_huge_page_size();
+ else
+ gopts.page_size = psize();
+
+ /* Ensure we have at least 2 pages */
+ gopts.nr_pages = MAX(UFFD_TEST_MEM_SIZE, gopts.page_size * 2)
+ / gopts.page_size;
+
+ gopts.nr_parallel = 1;
+
+ /* Initialize test arguments */
+ args.mem_type = mem_type;
+
if (!(test->mem_targets & mem_type->mem_flag))
continue;

@@ -1748,13 +1778,12 @@ int main(int argc, char *argv[])
uffd_test_skip("feature missing");
continue;
}
- if (uffd_setup_environment(&args, test, mem_type,
- &errmsg)) {
+ if (uffd_test_ctx_init(&gopts, test->uffd_feature_required, &errmsg)) {
uffd_test_skip(errmsg);
continue;
}
- test->uffd_fn(&args);
- uffd_test_ctx_clear();
+ test->uffd_fn(&gopts, &args);
+ uffd_test_ctx_clear(&gopts);
}
}

diff --git a/tools/testing/selftests/mm/uffd-wp-mremap.c b/tools/testing/selftests/mm/uffd-wp-mremap.c
index c2ba7d46c7b4..c286b1015f32 100644
--- a/tools/testing/selftests/mm/uffd-wp-mremap.c
+++ b/tools/testing/selftests/mm/uffd-wp-mremap.c
@@ -157,7 +157,11 @@ static bool range_is_swapped(void *addr, size_t size)
return true;
}

-static void test_one_folio(size_t size, bool private, bool swapout, bool hugetlb)
+static void test_one_folio(uffd_global_test_opts_t *gopts,
+ size_t size,
+ bool private,
+ bool swapout,
+ bool hugetlb)
{
struct uffdio_writeprotect wp_prms;
uint64_t features = 0;
@@ -181,21 +185,21 @@ static void test_one_folio(size_t size, bool private, bool swapout, bool hugetlb
}

/* Register range for uffd-wp. */
- if (userfaultfd_open(&features)) {
+ if (userfaultfd_open(gopts, &features)) {
if (errno == ENOENT)
ksft_test_result_skip("userfaultfd not available\n");
else
ksft_test_result_fail("userfaultfd_open() failed\n");
goto out;
}
- if (uffd_register(uffd, mem, size, false, true, false)) {
+ if (uffd_register(gopts->uffd, mem, size, false, true, false)) {
ksft_test_result_fail("uffd_register() failed\n");
goto out;
}
wp_prms.mode = UFFDIO_WRITEPROTECT_MODE_WP;
wp_prms.range.start = (uintptr_t)mem;
wp_prms.range.len = size;
- if (ioctl(uffd, UFFDIO_WRITEPROTECT, &wp_prms)) {
+ if (ioctl(gopts->uffd, UFFDIO_WRITEPROTECT, &wp_prms)) {
ksft_test_result_fail("ioctl(UFFDIO_WRITEPROTECT) failed\n");
goto out;
}
@@ -242,9 +246,9 @@ static void test_one_folio(size_t size, bool private, bool swapout, bool hugetlb
out:
if (mem)
munmap(mem, size);
- if (uffd >= 0) {
- close(uffd);
- uffd = -1;
+ if (gopts->uffd >= 0) {
+ close(gopts->uffd);
+ gopts->uffd = -1;
}
}

@@ -336,6 +340,7 @@ static const struct testcase testcases[] = {

int main(int argc, char **argv)
{
+ uffd_global_test_opts_t gopts;
struct thp_settings settings;
int i, j, plan = 0;

@@ -367,8 +372,8 @@ int main(int argc, char **argv)
const struct testcase *tc = &testcases[i];

for (j = 0; j < *tc->nr_sizes; j++)
- test_one_folio(tc->sizes[j], tc->private, tc->swapout,
- tc->hugetlb);
+ test_one_folio(&gopts, tc->sizes[j], tc->private,
+ tc->swapout, tc->hugetlb);
}

/* If THP is supported, restore original THP settings. */
--
2.20.1



Return-Path: <linux-kernel+bounces-668994-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4F72D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:49:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 0B2231BA46EF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:50:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id AB29223506C;
Sat, 31 May 2025 07:49:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="EPGZrbB9";
dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="qhpJQYvm"
Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55])
(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 1655122259C;
Sat, 31 May 2025 07:49:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677789; cv=none; b=IJH1LmnM3yjiLmdKbhVTkL5eOnrFDlgZ6+C53q5WuPA2FceNDdCKoqndFV7zZh92GoF3tPdX74QQg2kfXzGnHCAu4QG24upU0Or9NKCX/AUZqogZAI1F3uDhA40jqtUCypXC9Of/pK6HGHmzk8xhx83BL7ZGWePSjSbT7CNRx+w=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677789; c=relaxed/simple;
bh=C23frJRaDHSQk3U93KLhYqeyYDN3gwDTYfOh2Q08BMU=;
h=Date:From:To:Subject:Cc:In-Reply-To:References:MIME-Version:
Message-ID:Content-Type; b=SPoPzG78EOx0kGaGsWA0K3MJtTUQyCQJ9c5YuPGgDSJXLEPDB9htLKh3EW2uvFjjEu4C8mfJcf4AWn4I57Qdl0vGyW7S9X1+LjIqDG1wFR3HSa78r2xxVxrkuDRmPEv+41rlN/gwJwNC+OFtbqdgTgKssb7xgOrU68vfdtSuB6A=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=EPGZrbB9; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=qhpJQYvm; arc=none smtp.client-ip=193.142.43.55
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de
Date: Sat, 31 May 2025 07:49:44 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
s=2020; t=1748677786;
h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date:
message-id:message-id:to:to:cc:cc:mime-version:mime-version:
content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=D2dQZGZiVXbPX6pz1wr8QMCfnqgrExGw5IHm7j/528o=;
b=EPGZrbB9WRIoJAoGQvQFvUpdp1H9UPL+tenrWldvjxu6E4MluSabhAnpQPpT0nXgaraxPs
opki3EucJPYiprVCrVMiOaleIm3hP/r53JMOwatn3XZ9Q7WnrC1sY6cvvjbuGKOYULnsGA
BExOb5OCsUSo1N4qOrrNaTERnOMsd5qhKzWITa99CyRNikjn4xctoEML6BUQt9ZdYg54bM
J2cXfF5Zc3a6yMWftmp6QfCtvy3Dq9+bkTDe0/NFvguMB/QbgLzyFbLkofxx+cNH71+B1E
GgziFh5lGS6B3JAYM76MVsBVthZuBr9F8xLJgD2pOxWlb06epQ/zKLoPHSOfqw==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
s=2020e; t=1748677786;
h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date:
message-id:message-id:to:to:cc:cc:mime-version:mime-version:
content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=D2dQZGZiVXbPX6pz1wr8QMCfnqgrExGw5IHm7j/528o=;
b=qhpJQYvmmQikMjGCrfSAr+fStSRmCX1gBaHWX+vPX4bi3tzkoBK6G+SVUKpB0douBSRz1J
Pt6KWcaUwn0b5NDw==
From: "tip-bot2 for Steven Rostedt" <tip-bot2@xxxxxxxxxxxxx>
Sender: tip-bot2@xxxxxxxxxxxxx
Reply-to: linux-kernel@xxxxxxxxxxxxxxx
To: linux-tip-commits@xxxxxxxxxxxxxxx
Subject: [tip: x86/urgent] x86/fpu: Remove unused trace events
Cc: "Steven Rostedt (Google)" <rostedt@xxxxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>,
Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>,
Linux Trace Kernel <linux-trace-kernel@xxxxxxxxxxxxxxx>,
Masami Hiramatsu <mhiramat@xxxxxxxxxx>,
Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>,
Oleg Nesterov <oleg@xxxxxxxxxx>, x86@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
In-Reply-To: <20250529131024.7c2ef96f@xxxxxxxxxxxxxxxxxx # x86 submission>
References: <20250529131024.7c2ef96f@xxxxxxxxxxxxxxxxxx # x86 submission>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Message-ID: <174867778456.406.2535316646277526444.tip-bot2@tip-bot2>
Robot-ID: <tip-bot2@xxxxxxxxxxxxx>
Robot-Unsubscribe:
Contact <mailto:tglx@xxxxxxxxxxxxx> to get blacklisted from these emails
Precedence: bulk
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following commit has been merged into the x86/urgent branch of tip:

Commit-ID: 99850a1c93fe7ca40ad9efddc00acec6e85c5e48
Gitweb: https://git.kernel.org/tip/99850a1c93fe7ca40ad9efddc00acec6e85c5e48
Author: Steven Rostedt <rostedt@xxxxxxxxxxx>
AuthorDate: Thu, 29 May 2025 13:10:24 -04:00
Committer: Ingo Molnar <mingo@xxxxxxxxxx>
CommitterDate: Sat, 31 May 2025 09:40:40 +02:00

x86/fpu: Remove unused trace events

The following trace events are not used and defining them just wastes
memory:

x86_fpu_before_restore
x86_fpu_after_restore
x86_fpu_init_state

Simply remove them.

Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
Cc: H. Peter Anvin <hpa@xxxxxxxxx>
Cc: Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx>
Cc: Linux Trace Kernel <linux-trace-kernel@xxxxxxxxxxxxxxx>
Cc: Masami Hiramatsu <mhiramat@xxxxxxxxxx>
Cc: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
Cc: Oleg Nesterov <oleg@xxxxxxxxxx>
Link: https://lore.kernel.org/all/20250529130138.544ffec4@xxxxxxxxxxxxxxxxxx # background
Link: https://lore.kernel.org/r/20250529131024.7c2ef96f@xxxxxxxxxxxxxxxxxx # x86 submission
---
arch/x86/include/asm/trace/fpu.h | 15 ---------------
1 file changed, 15 deletions(-)

diff --git a/arch/x86/include/asm/trace/fpu.h b/arch/x86/include/asm/trace/fpu.h
index 0454d5e..721b408 100644
--- a/arch/x86/include/asm/trace/fpu.h
+++ b/arch/x86/include/asm/trace/fpu.h
@@ -44,16 +44,6 @@ DEFINE_EVENT(x86_fpu, x86_fpu_after_save,
TP_ARGS(fpu)
);

-DEFINE_EVENT(x86_fpu, x86_fpu_before_restore,
- TP_PROTO(struct fpu *fpu),
- TP_ARGS(fpu)
-);
-
-DEFINE_EVENT(x86_fpu, x86_fpu_after_restore,
- TP_PROTO(struct fpu *fpu),
- TP_ARGS(fpu)
-);
-
DEFINE_EVENT(x86_fpu, x86_fpu_regs_activated,
TP_PROTO(struct fpu *fpu),
TP_ARGS(fpu)
@@ -64,11 +54,6 @@ DEFINE_EVENT(x86_fpu, x86_fpu_regs_deactivated,
TP_ARGS(fpu)
);

-DEFINE_EVENT(x86_fpu, x86_fpu_init_state,
- TP_PROTO(struct fpu *fpu),
- TP_ARGS(fpu)
-);
-
DEFINE_EVENT(x86_fpu, x86_fpu_dropped,
TP_PROTO(struct fpu *fpu),
TP_ARGS(fpu)


Return-Path: <linux-kernel+bounces-668995-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 30F6941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:52:41 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3C2621BA5451
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:52:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B188E23644D;
Sat, 31 May 2025 07:52:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="fQn2Dy7d"
Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32])
(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 2BC8FF9CB;
Sat, 31 May 2025 07:52:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677951; cv=none; b=GnhtavdedCsJQ8h+zLjI/nKrisVmYukiCBMA8z4z9Q8nF4JJ7SiCDNntU/3XamOrw8D/8lssjEDRPUjc0lbKM3DqzIiLLrPfL6nct2RqCGtGK2C+vBxu4H3vrRs1w1lJorfF81BsBrlqCyshe7CEvmvvduF22I0I8qcbA3FNRiU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677951; c=relaxed/simple;
bh=tHojx3WnGS7eQ0SzezEGkt1EjWAPJ30dI6MnJxTgjM8=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=iftYM6jbtrFs4Disz+2086oHuKguKmhlN6JyEoBM4lvnlp9mt9uBP2zzpT5hQH6O5CYTrMhzGPh52ZrI1xVF5elXkqkRudoXZDcoRvF9SpJswiX3SZJYsOI5wNrf39Jknw/R2WDPE2DPBFndiqitN9AE31PJaCZZXeP+1C0qgcQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=fQn2Dy7d; arc=none smtp.client-ip=205.220.165.32
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com
Received: from pps.filterd (m0333521.ppops.net [127.0.0.1])
by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V5F2C4012423;
Sat, 31 May 2025 07:52:16 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc
:content-transfer-encoding:date:from:message-id:mime-version
:subject:to; s=corp-2025-04-25; bh=U/de0sLPbqSCHnDWBPAZlkOrRjPwz
POr/jCBm6y14z4=; b=fQn2Dy7dU/Mwi6+5/HaZVdFRdHhvS8obRHMsitkIQ89KR
5XKRAcm6cVDhNh29WVRlyTF54A3f6RshKJTGLdDOIY6JVmFZh9eXM1rmGcnyc20s
IDv1EBT5fFV/H9VZZsKxw+mg7CYRayC92YNa3k920zHubF8p/2a2DNZmNU1lR3FK
EuCbw3nQhVsC1PABb15d0aEFENbIOuskoBc4pYoWzpPyrP/P1wvUEZP6XBbp+4GG
cIMaALAaKkJhgbGYzf8bB//TAZnax7OaWT5ebg7F1aLwUzey3KYeAL1hw9AfA7RL
TS0t87y8JAKXUHW0SMxSz5/m/SDQeMvNHmWZ82nXA==
Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223])
by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46yrpe05rv-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
Sat, 31 May 2025 07:52:15 +0000 (GMT)
Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54V6VD7F040698;
Sat, 31 May 2025 07:52:14 GMT
Received: from pps.reinject (localhost [127.0.0.1])
by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46yr76n6nw-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
Sat, 31 May 2025 07:52:14 +0000
Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 54V7qDZX009425;
Sat, 31 May 2025 07:52:13 GMT
Received: from ca-dev112.us.oracle.com (ca-dev112.us.oracle.com [10.129.136.47])
by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 46yr76n6nq-1;
Sat, 31 May 2025 07:52:13 +0000
From: Alok Tiwari <alok.a.tiwari@xxxxxxxxxx>
To: dave@xxxxxxxxxxxx, jonathan.cameron@xxxxxxxxxx, dave.jiang@xxxxxxxxx,
alison.schofield@xxxxxxxxx, vishal.l.verma@xxxxxxxxx,
ira.weiny@xxxxxxxxx, dan.j.williams@xxxxxxxxx, corbet@xxxxxxx,
linux-cxl@xxxxxxxxxxxxxxx, linux-doc@xxxxxxxxxxxxxxx
Cc: alok.a.tiwari@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
darren.kenny@xxxxxxxxxx
Subject: [PATCH] Documentation: cxl: fix typos and improve clarity in memory-devices.rst
Date: Sat, 31 May 2025 00:51:58 -0700
Message-ID: <20250531075209.3334261-1-alok.a.tiwari@xxxxxxxxxx>
X-Mailer: git-send-email 2.47.1
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_03,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 adultscore=0 malwarescore=0
phishscore=0 mlxscore=0 mlxlogscore=999 suspectscore=0 bulkscore=0
classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2505160000
definitions=main-2505310067
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDA2OCBTYWx0ZWRfX9mSvu23lUmTe ZEzKciV+C8x+RSIB47ibN8EU/YW05929zCa3L5CST2XJh7slNIjWTOVCMa98skM8ZOj6Hc+Z1Dz nlt+AtrV/I1XHlrAOdBKV7RkBQ4jJGIPftK+9KgUKS/9TlsXzZ6B9LKZd3M/E1EqzbmVtAeVLGs
lCJow/hf1y3CtrIHm6LlfgCEsQMk8QGSs89VPvtGYg7YHWdZVwGiOF7qApaAb1+icsSKsndv+P+ e6NLxcdsxivXKBVN09o6pSRI1VLTeAoBE5tlrli8RDNy1sBUjo+QeY+pV1zauWtPak4huSFbDSi LM7Rh7hlNN9p+4ug0752ZLN1EKI+2Y/yXKFBh6/lDT8EchHDAUAmMyMOXQpTLTHLX3CkNNHbzyg
BJr9eSQvvNirIGUhytaeQQzIDIsvIit8DT4t1SG1ROB4wRRh6FPPMnepO97LYeIWxa85mb+F
X-Authority-Analysis: v=2.4 cv=NN7V+16g c=1 sm=1 tr=0 ts=683ab52f b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=dt9VzEwgFbYA:10 a=yPCof4ZbAAAA:8 a=434jntuLdbThvQkW9cEA:9 cc=ntf awl=host:13206
X-Proofpoint-GUID: tY2p2HxlxCnsdj_N1alDJ5HSJN6OP0_w
X-Proofpoint-ORIG-GUID: tY2p2HxlxCnsdj_N1alDJ5HSJN6OP0_w
X-Spam-Status: No, score=-3.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch corrects several typographical issues and improves phrasing
in memory-devices.rst:

- Fixes duplicate word ("1 one") and adjusts phrasing for clarity.
- Adds missing hyphen in "on-device".
- Corrects "a give memory device" to "a given memory device".
- fix singular/plural "decoder resource" -> "decoder resources".
- Clarifies "spans to Host Bridges" -> "spans two Host Bridges".

These changes improve readability and accuracy of the documentation.

Signed-off-by: Alok Tiwari <alok.a.tiwari@xxxxxxxxxx>
---
Documentation/driver-api/cxl/memory-devices.rst | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Documentation/driver-api/cxl/memory-devices.rst b/Documentation/driver-api/cxl/memory-devices.rst
index d732c42526df..e9e2952a967d 100644
--- a/Documentation/driver-api/cxl/memory-devices.rst
+++ b/Documentation/driver-api/cxl/memory-devices.rst
@@ -29,8 +29,8 @@ Platform firmware enumerates a menu of interleave options at the "CXL root port"
(Linux term for the top of the CXL decode topology). From there, PCIe topology
dictates which endpoints can participate in which Host Bridge decode regimes.
Each PCIe Switch in the path between the root and an endpoint introduces a point
-at which the interleave can be split. For example platform firmware may say at a
-given range only decodes to 1 one Host Bridge, but that Host Bridge may in turn
+at which the interleave can be split. For example, platform firmware may say at a
+given range only decodes to one Host Bridge, but that Host Bridge may in turn
interleave cycles across multiple Root Ports. An intervening Switch between a
port and an endpoint may interleave cycles across multiple Downstream Switch
Ports, etc.
@@ -187,7 +187,7 @@ decodes them to "ports", "ports" decode to "endpoints", and "endpoints"
represent the decode from SPA (System Physical Address) to DPA (Device Physical
Address).

-Continuing the RAID analogy, disks have both topology metadata and on device
+Continuing the RAID analogy, disks have both topology metadata and on-device
metadata that determine RAID set assembly. CXL Port topology and CXL Port link
status is metadata for CXL.mem set assembly. The CXL Port topology is enumerated
by the arrival of a CXL.mem device. I.e. unless and until the PCIe core attaches
@@ -197,7 +197,7 @@ the Linux PCI core to tear down switch-level CXL resources because the endpoint
->remove() event cleans up the port data that was established to support that
Memory Expander.

-The port metadata and potential decode schemes that a give memory device may
+The port metadata and potential decode schemes that a given memory device may
participate can be determined via a command like::

# cxl list -BDMu -d root -m mem3
@@ -249,8 +249,8 @@ participate can be determined via a command like::
...which queries the CXL topology to ask "given CXL Memory Expander with a kernel
device name of 'mem3' which platform level decode ranges may this device
participate". A given expander can participate in multiple CXL.mem interleave
-sets simultaneously depending on how many decoder resource it has. In this
-example mem3 can participate in one or more of a PMEM interleave that spans to
+sets simultaneously depending on how many decoder resources it has. In this
+example mem3 can participate in one or more of a PMEM interleave that spans two
Host Bridges, a PMEM interleave that targets a single Host Bridge, a Volatile
memory interleave that spans 2 Host Bridges, and a Volatile memory interleave
that only targets a single Host Bridge.
--
2.47.1



Return-Path: <linux-kernel+bounces-668996-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0F83541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:53:13 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 91B70A210A4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:52:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B7382367A3;
Sat, 31 May 2025 07:53:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="LaCzPK7E"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 5A162232376
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:53:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748677986; cv=none; b=TzzXNE3/+4UoQXdceEdCL5BQ7KWMA0d63+mNk1jnYERRL5vfLPK3K4pbEwXjQBEuM5ch9m6yXzWV2xvkCqL2HLa4B+iknbQ5qrLge9adho7VjvfgmxSBsq2KOxeMtoBzci4p/1oaXT5VkZEKJ7H/BBfCaujGs5lUvBzF86uMPNo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748677986; c=relaxed/simple;
bh=gi33k+BwXBcmYBnpVFvtvjKKqtQOvvRzm/GhWc+31uQ=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=SRKs5WEHKYJS6mzvwL5twMXLmNZbXXJEt+q+BWO+2fudG+ScLYLwOuvuebRPls2EdMMhP/A0ZUM1P60zMbEYhanrbvRu5DnPF7OEBCnF+SdrI6LSImWB2eEbgRvQERfk/1w2yw6ADf+WyKAJlkRlZf4fwI95P7AHBR/qfvqCkj4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=LaCzPK7E; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748677983;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=Ohg5fHfGT0uyzMgKziJAeADzuAKD9RxJfWVtgxptZlg=;
b=LaCzPK7EXSESs7qF/PxlGwtJ1DP4qZOlbTzKmglU/uZ3jAoUb8zZ36P3u1QAM3xIBgH9qy
eTqZHYC0EP9+3W8OxtZrDSaOYSQgIV2QfflOV0lsatZpaRJHEDlRpT6VtAuFaFp6CbF5aM
9QNUcSmlu0eek1DcgPWZzGU1cuKe8dY=
Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com
[209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS
(version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id
us-mta-650-aU4wOQm8P_6N86rlSLM42g-1; Sat, 31 May 2025 03:53:01 -0400
X-MC-Unique: aU4wOQm8P_6N86rlSLM42g-1
X-Mimecast-MFC-AGG-ID: aU4wOQm8P_6N86rlSLM42g_1748677980
Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-b2eb60594e8so1705281a12.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 00:53:00 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748677980; x=1749282780;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=Ohg5fHfGT0uyzMgKziJAeADzuAKD9RxJfWVtgxptZlg=;
b=fpSVXytCt1HWrdoK2gXBHlJFF/SliLOiSPhWY7YYzzgUsmVIgVGdHFNWiNO8p1rrfs
T0OPWg4ILW7peNni0MveYxitul0atuv8FnY/dtLiG5RpfKEx3c8Aj4IrGr6GSOLy35FC
oIzf3++cqHPGU4Eo22Krq5Mt/dnKKM1tucXhR+LhXbWPNcynw4MMJd2S6IURStl4TZC6
p61AxOTF7jRLyTcAz/bOxeHeCbMn5h6nFthq1F4OS3AKrfDFjng65dDwYkeBdkhrsTDz
tI1SvfP26VObmbk04d9o191ryMiA2tYyaiSH7NnvpKErnZRqDLzpFnGQFSCahxD7mRXy
yi5A==
X-Forwarded-Encrypted: i=1; AJvYcCX7+/ZT0TaS2Z7pFQed5blUhFUOsTSS8GNXJPrhMtgk1ZzhNsudr2UdX2HxlRWQM8ODeeDCCRtdI4WH738=@vger.kernel.org
X-Gm-Message-State: AOJu0YxrP1oC0p5Qai1B2kf+68pRU8xCphrIjY41Aq3CEFP1SXr+sOxz
kUPo1jdTTaa0Pv8YEOg2jIazTTTyPhnTpu2PYCb3q/KK+D0SYadpFCcFVM1oorEmY0KgeYs2sUS
P0/P9RncqkMTt2f2OJKYggEO5lhmOeMduQZKXnDrMa1JiwUkc7G3UopvNwCJX79H7S2kbA0U6W5
9m9SRrg3LXdo8CjqcR4GR231xF7mVPeCcEDjkFTNZI
X-Gm-Gg: ASbGncuVkWlWAXFal1DQDi51lrpF7y4YrlAQZqe7RtzlNPYCPjJgTrvOI0OqHpUWS4J
gVo52ROiwTwTA9ovPL7nLCaPoMqc5wWB99CuaG0TTRKB28hsKCdvwGYf6P0c10eeoDKY=
X-Received: by 2002:a17:90b:1646:b0:312:959:dc49 with SMTP id 98e67ed59e1d1-3127c6c6ac5mr1874355a91.13.1748677979875;
Sat, 31 May 2025 00:52:59 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IEwPb15HB+x5LlixDkbF7gwe9jHKDNEMcaqP3sUfYw07TfO/w5/C6AzdnYsr2gdlgDJLMrrXiAq57x6HSqDjjw=
X-Received: by 2002:a17:90b:1646:b0:312:959:dc49 with SMTP id
98e67ed59e1d1-3127c6c6ac5mr1874323a91.13.1748677979477; Sat, 31 May 2025
00:52:59 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250526132755.166150-1-acarmina@xxxxxxxxxx> <20250526132755.166150-2-acarmina@xxxxxxxxxx>
<20250529090129.GZ24938@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <CAGegRW76X8Fk_5qqOBw_aqBwAkQTsc8kXKHEuu9ECeXzdJwMSw@xxxxxxxxxxxxxx>
<20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
From: Alessandro Carminati <acarmina@xxxxxxxxxx>
Date: Sat, 31 May 2025 09:52:47 +0200
X-Gm-Features: AX0GCFvDRExJEUZAsyc3Pz18fgK0YsOWafT6qSf9X6kJzNpcf_7G6rLG7qkegQQ
Message-ID: <CAGegRW5phz1L7WF478jssaxhv4XDrH1H6wYer_MhU_h8gWQdfg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v5 1/5] bug/kunit: Core support for suppressing warning backtraces
To: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Cc: linux-kselftest@xxxxxxxxxxxxxxx, Dan Carpenter <dan.carpenter@xxxxxxxxxx>,
Kees Cook <keescook@xxxxxxxxxxxx>, Daniel Diaz <daniel.diaz@xxxxxxxxxx>,
David Gow <davidgow@xxxxxxxxxx>, Arthur Grillo <arthurgrillo@xxxxxxxxxx>,
Brendan Higgins <brendan.higgins@xxxxxxxxx>, Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, Maxime Ripard <mripard@xxxxxxxxxx>,
Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>, Daniel Vetter <daniel@xxxxxxxx>,
Guenter Roeck <linux@xxxxxxxxxxxx>, Alessandro Carminati <alessandro.carminati@xxxxxxxxx>,
Jani Nikula <jani.nikula@xxxxxxxxx>, Jeff Johnson <jeff.johnson@xxxxxxxxxxxxxxxx>,
Josh Poimboeuf <jpoimboe@xxxxxxxxxx>, Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>,
Linux Kernel Functional Testing <lkft@xxxxxxxxxx>, dri-devel@xxxxxxxxxxxxxxxxxxxxx,
kunit-dev@xxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Mark Rutland <mark.rutland@xxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello Peter,
thanks for the clear explanation.
I finally understand what was bothering you, it wasn=E2=80=99t the __bug_ta=
ble
size or the execution time overhead, but the code size itself.

On Fri, May 30, 2025 at 4:02=E2=80=AFPM Peter Zijlstra <peterz@xxxxxxxxxxxx=
g> wrote:
>
>
> +Mark because he loves a hack :-)
>
> On Thu, May 29, 2025 at 12:36:55PM +0200, Alessandro Carminati wrote:
>
> > > Like I said before; you need to do this on the report_bug() size of
> > > things.
> > >
> > I fully understand your concerns, and I truly appreciate both yours
> > and Josh=E2=80=99s feedback on this matter.
> > Please rest assured that I took your suggestions seriously and
> > carefully evaluated the possibility of consolidating all related logic
> > within the exception handler.
> > After a thorough investigation, however, I encountered several
> > limitations that led me to maintain the check in the macro.
> > I=E2=80=99d like to share the rationale behind this decision:
>
> > * In the case of WARN() messages, part of the output, the
> > user-specified content, is emitted directly by the macro, prior to
> > reaching the exception handler [1].
> > Moving the check solely to the exception handler would not prevent
> > this early output.
>
> Yeah, this has been really annoying me for a long while. WARN() code gen
> is often horrible crap because of that.
>
> Everything I've tried so far is worse though :/ So in the end I try to
> never use WARN(), its just not worth it.
>
> ... /me goes down the rabbit-hole again, because well, you can't let
> something simple like this defeat you ;-)
>
> Results of today's hackery below. It might actually be worth cleaning
> up.
>
> > * Unless we change the user-facing interface that allows suppression
> > based on function names, we still need to work with those names at
> > runtime.
>
> I'm not sure I understand this. What interface and what names? This is a
> new feature, so how can there be an interface that needs to be
> preserved?
>
> > * This leaves us with two main strategies: converting function names
> > to pointers (e.g., via kallsyms) or continuing to work with names.
> > The former requires name resolution at suppression time and pointer
> > comparison in the handler, but function names are often altered by the
> > compiler due to inlining or other optimizations[2].
> > Some WARN() sites are even marked __always_inline[3], making it
> > difficult to prevent inlining altogether.
>
> Arguably __func__ should be the function name of the function you get
> inlined into. C inlining does not preserve the sequence point, so there
> is absolutely no point in trying to preserve the inline name.
>
> I'm again confused though; [2] does not use __func__ at all.
>
> Anyway, when I do something like:
>
> void __attribute__((__always_inline__)) foo(void)
> {
> puts(__func__);
> }
>
> void bar(void)
> {
> foo();
> }
>
> it uses a "foo" string, which IMO is just plain wrong. Anyway, do both
> compilers guarantee it will always be foo? I don't think I've seen the
> GCC manual be explicit about this case.
On this point:
even if not explicitly stated, __func__ will always be "foo" in your exampl=
e.
I=E2=80=99m confident in this because, according to the GCC manual[1],
__func__ is inserted into the source as:
static const char __func__[] =3D "function-name";
At that point, the compiler doesn't yet know what the final code will
look like or whether it will be inlined.
I=E2=80=99m not a compiler expert, but this definition doesn=E2=80=99t leav=
e much room
for alternative interpretations.

>
> > * An alternative is to embed function names in the __bug_table.
> > While potentially workable, this increases the size of the table and
> > requires attention to handle position-independent builds
> > (-fPIC/-fPIE), such as using offsets relative to __start_rodata.
> >
> > However, the central challenge remains: any logic that aims to
> > suppress WARN() output must either move the entire message emission
> > into the exception handler or accept that user-specified parts of the
> > message will still be printed.
>
> Well, we can set suppress_printk and then all is quiet :-) Why isn't
> this good enough?
>
> > As a secondary point, there are also less common architectures where
> > it's unclear whether suppressing these warnings is a priority, which
> > might influence how broadly the effort is applied.
> > I hoped to have addressed the concern of having faster runtime, by
> > exposing a counter that could skip the logic.
> > Kess suggested using static branching that would make things even bette=
r.
> > Could Kess' suggestion mitigate your concern on this strategy?
> > I=E2=80=99m absolutely open to any further thoughts or suggestions you =
may
> > have, and I appreciate your continued guidance.
>
> I'm not really concerned with performance here, but more with the size
> of the code emitted by WARN_ONCE(). There are a *ton* of WARN sites,
> while only one report_bug() and printk().
>
> The really offensive thing is that this is for a feature most nobody
> will ever need :/
>
>
>
> The below results in:
>
> 03dc 7ac: 48 c7 c0 00 00 00 00 mov $0x0,%rax 7af: R_X8=
6_64_32S .rodata.str1.1+0x223
> 03e3 7b3: ba 2a 00 00 00 mov $0x2a,%edx
> 03e8 7b8: 48 0f b9 d0 ud1 %rax,%rdx
>
> And it even works :-)
>
> Hmm... I should try and stick the format string into the __bug_table,
> its const after all. Then I can get 2 arguments covered.
>
> ---
> diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
> index f0e9acf72547..88b305d49f35 100644
> --- a/arch/x86/include/asm/bug.h
> +++ b/arch/x86/include/asm/bug.h
The rework is impressive.
I=E2=80=99m not in a position to judge, but for what it=E2=80=99s worth, yo=
u have my admiration.

That said, I see a problem, the same I faced when embedding __func__
in the bug table.
__func__, and I believe also printk fmt, are constants, but their
pointers might not be, especially in position-independent code.
This causes issues depending on the compiler.
For example, my tests worked fine with recent GCC on x86_64, but
failed with Clang.
Changing architecture complicates things further, GCC added support
for this only in newer versions.
I ran into this in v3 when the s390x build failed[2].

As mentioned in the patchset cover letter, my solution to avoid
copying the strings into the bug table is to store their pointer as an
offset from __start_rodata.
[1]. https://gcc.gnu.org/onlinedocs/gcc/Function-Names.html
[2]. https://lore.kernel.org/all/202503200847.LbkIJIXa-lkp@xxxxxxxxx/



Return-Path: <linux-kernel+bounces-668997-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7642C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:54:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 6AE421BA5880
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:54:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 817182367AE;
Sat, 31 May 2025 07:53:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VExZfzv9"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C154613635E;
Sat, 31 May 2025 07:53:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748678031; cv=none; b=HeUREBT9nghamEE1Ykwd7qa8VKULfa6BwcdFtXXJzuHPy1CCBm2WTT5tvgkhSkXA95nLyXXQ09nN6h1m0g2CM7/OU9NuV7rFNlVLSWxJ12nog0aWhDJHs41WDbq6vt6ELqNMxgFPIEaxLhoR/sLyKkSOhfjjHaaDdY478O+R0o0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748678031; c=relaxed/simple;
bh=moi2gTk6n8ONkexxuDUEiaKnmWxJpznirQYCn6g3ixE=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=dcp9jjGM5Aaziar4FJBluOOrwT1B/N6lHuc7FkDPxaesBJ9VJzXcheiEoJN7v+pmLtwDb8TqpanUQnYcZ01M7mxkpC9QJ3wd8EuM7UJ8T9O4669a/ogvM1pUbGSw8UkPRC/1RCezKcdAp4TVSbmUWBiw/QrPXv82vs/3A5ZLs+8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VExZfzv9; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7A063C4CEE3;
Sat, 31 May 2025 07:53:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748678031;
bh=moi2gTk6n8ONkexxuDUEiaKnmWxJpznirQYCn6g3ixE=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=VExZfzv9y9vwuJOLnsWWMuL/nCW8gjlCrKg6ObmHmaI9pg0M/R1LmWEKIbtsqg3q/
aQqP7JkFFIlGQVlk6aHu+XjiQgvnWVpveIo/9tbt40u5b2PH5Smujcr/GE7v8pL6p0
IT5XZE8ITfY10XJ0CJQ+g06T2RIOHIz25PS/VfmzvikdV665mfl7amHi0EnkB4ErOz
BDnQWwfN5yptg7mZFGxjrU4TghjaCWmSqieVyRzioCB+Sw0FBbr2xRT7UOaBWT0daa
LeihNzWFhVhWHKkhk3KH5IIwAGv7ooNBSooYsgvqTrdhLbZeWKXLPOrvVil9V7xjtC
dnKeY2xyIsupA==
Date: Sat, 31 May 2025 09:53:44 +0200
From: Ingo Molnar <mingo@xxxxxxxxxx>
To: Ravi Bangoria <ravi.bangoria@xxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>,
Namhyung Kim <namhyung@xxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>,
Stephane Eranian <eranian@xxxxxxxxxx>,
Ian Rogers <irogers@xxxxxxxxxx>,
Kan Liang <kan.liang@xxxxxxxxxxxxxxx>,
James Clark <james.clark@xxxxxxxxxx>, Leo Yan <leo.yan@xxxxxxx>,
Joe Mario <jmario@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
linux-perf-users@xxxxxxxxxxxxxxx,
Santosh Shukla <santosh.shukla@xxxxxxx>,
Ananth Narayan <ananth.narayan@xxxxxxx>,
Sandipan Das <sandipan.das@xxxxxxx>
Subject: Re: [PATCH 1/4] perf/amd/ibs: Add load/store SW filters to IBS OP PMU
Message-ID: <aDq1iG3P9_BBnx7C@xxxxxxxxx>
References: <20250529123456.1801-1-ravi.bangoria@xxxxxxx>
<20250529123456.1801-2-ravi.bangoria@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250529123456.1801-2-ravi.bangoria@xxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


* Ravi Bangoria <ravi.bangoria@xxxxxxx> wrote:

> Since current IBS OP PMU does not have the capability to tag only load/
> stores instructions, tools like perf mem/c2c ends up recording lots of
> unwanted samples. So, introduce a load/store software filter in the IBS
> OP PMU:
>
> ibs_op/swfilt=1,ldop=1/ --> Only load samples
> ibs_op/swfilt=1,stop=1/ --> Only store samples
> ibs_op/swfilt=1,ldop=1,stop=1/ --> Load OR store samples
>
> Other HW or SW filters in combination with this ldst filter are logical
> AND. For ex:
>
> ibs_op/swfilt=1,ldop=1,stop=1/u is
> "privilege == userspace && (ldop == 1 || stop == 1)"
>
> ibs_op/swfilt=1,ldop=1,stop=1,l3missonly=1/ is
> "l3missonly == 1 && (ldop == 1 || stop == 1)"

No objections, but:

> An alternate approach is mem_op BPF filter:
>
> perf record --filter "mem_op == load || mem_op == store" ...
>
> However, there are few issues with it:
> o BPF filter is called after preparing entire perf sample. If the sample
> does not satisfy the filtering criteria, all the efforts of preparing
> perf sample gets wasted.

Could we add an 'early' BPF callback point as well, to fast-discard
samples?

> o BPF filter requires root privilege.

Could we add 'built-in', 'safe' BPF scripts that are specifically
prepared for perf events filtering purposes, that can be toggled by
non-root users as well? These could be toggled by tooling via sysfs or
so, or even via the perf syscall if that turns out to be the better
approach.

It would give us the flexibility and extensibility of BPF, combining it
with the safety & compatibility of the filtering functionality being
provided by the kernel.

It could be provided in the form of a BPF program crypto signature
registry of upstream-approved BPF scripts for perf BPF callback(s),
or so. (While root could load any BPF script.)

Thanks,

Ingo


Return-Path: <linux-kernel+bounces-668998-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0FAB541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:01:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 18ADC17F73E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:01:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 532322367AE;
Sat, 31 May 2025 08:01:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="hZ1CVKPz"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8F5F1AD5E;
Sat, 31 May 2025 08:01:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748678481; cv=none; b=LvU6kZyjUmpyVKz9ycQe9aE1GaEP+aah/lDmErONmrRSXgR0fi+8+5EsnCP6kJMOhJzCm2xo1Jqk/Uyof6QiuTteC0gHwaImcEDPUAstcggr/BV0OMaf7becs7z2sZDDqfDrApOZC7/N8ZX6FHiImZq9cFNuzIkWb41c9qrnl6Q=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748678481; c=relaxed/simple;
bh=GiFNV580WZ1Ace5VTRXQHO9zPun5iNtUfqXjhZo6LKI=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=sKLd0qwXnkMvH31GETx2TjQBTIf8Mf14yN8Sz5LgVbvHXxu8ICnInovKKP4K82PcrfPUVTZZ50xShX94/xJVa7BW9tt5X9ri0OCpanxZF6OMtsTSAmhKz/PbygH35NQnsfNTyxFo4/Cq2OIvFU/3v7C7qw7C64PxIEAa5WEEGEs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=hZ1CVKPz; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D4E7CC4CEE3;
Sat, 31 May 2025 08:01:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748678481;
bh=GiFNV580WZ1Ace5VTRXQHO9zPun5iNtUfqXjhZo6LKI=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=hZ1CVKPzwFiwYiKdQvv0CEwQ0vZ/+hfgrlDbibBeP5a6qdbtIR3ge5+azl9/OV1ry
1vFAGO/9j70OyevJwR8kTkOy/lPOH63v/mbaqK1ONbkINXtJ/NXmY49iwP3w51wi0N
PRJ+IwS/esW0EfxRvvLL+oQWo874FmjA+q5EHA06W6n+FmK9ZXsEWvK67i9h0AHlDV
JoFbsP9+XBxqkLLTEnzKgE33WqrXBnDb+dVuMIpib5Mc3A7rtRF6mRBX/uHjut7d6q
m/7/zpQGJGC1tkXaauKzhsCDEdSE07F4xepGit/jy52991Nbp6zUkqqrw7H4nsJYc1
LmfQ7eJJFowHg==
Date: Sat, 31 May 2025 10:01:15 +0200
From: Ingo Molnar <mingo@xxxxxxxxxx>
To: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>,
Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>,
Namhyung Kim <namhyung@xxxxxxxxxx>, Ian Rogers <irogers@xxxxxxxxxx>,
Adrian Hunter <adrian.hunter@xxxxxxxxx>,
Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>,
Kan Liang <kan.liang@xxxxxxxxxxxxxxx>,
Andi Kleen <ak@xxxxxxxxxxxxxxx>,
Eranian Stephane <eranian@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
linux-perf-users@xxxxxxxxxxxxxxx, Dapeng Mi <dapeng1.mi@xxxxxxxxx>
Subject: Re: [PATCH 1/2] perf/x86/intel: Fix IA32_PMC_x_CFG_B MSRs access
error
Message-ID: <aDq3S9lwO1YadCKT@xxxxxxxxx>
References: <20250529080236.2552247-1-dapeng1.mi@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250529080236.2552247-1-dapeng1.mi@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


* Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx> wrote:

> When running perf_fuzzer on PTL, sometimes the below "unchecked MSR
> access error" is seen when accessing IA32_PMC_x_CFG_B MSRs.
>
> [ 55.611268] unchecked MSR access error: WRMSR to 0x1986 (tried to write 0x0000000200000001) at rIP: 0xffffffffac564b28 (native_write_msr+0x8/0x30)
> [ 55.611280] Call Trace:
> [ 55.611282] <TASK>
> [ 55.611284] ? intel_pmu_config_acr+0x87/0x160
> [ 55.611289] intel_pmu_enable_acr+0x6d/0x80
> [ 55.611291] intel_pmu_enable_event+0xce/0x460
> [ 55.611293] x86_pmu_start+0x78/0xb0
> [ 55.611297] x86_pmu_enable+0x218/0x3a0
> [ 55.611300] ? x86_pmu_enable+0x121/0x3a0
> [ 55.611302] perf_pmu_enable+0x40/0x50
> [ 55.611307] ctx_resched+0x19d/0x220
> [ 55.611309] __perf_install_in_context+0x284/0x2f0
> [ 55.611311] ? __pfx_remote_function+0x10/0x10
> [ 55.611314] remote_function+0x52/0x70
> [ 55.611317] ? __pfx_remote_function+0x10/0x10
> [ 55.611319] generic_exec_single+0x84/0x150
> [ 55.611323] smp_call_function_single+0xc5/0x1a0
> [ 55.611326] ? __pfx_remote_function+0x10/0x10
> [ 55.611329] perf_install_in_context+0xd1/0x1e0
> [ 55.611331] ? __pfx___perf_install_in_context+0x10/0x10
> [ 55.611333] __do_sys_perf_event_open+0xa76/0x1040
> [ 55.611336] __x64_sys_perf_event_open+0x26/0x30
> [ 55.611337] x64_sys_call+0x1d8e/0x20c0
> [ 55.611339] do_syscall_64+0x4f/0x120
> [ 55.611343] entry_SYSCALL_64_after_hwframe+0x76/0x7e
>
> On PTL, GP counter 0 and 1 doesn't support auto counter reload feature,
> thus it would trigger a #GP when trying to write 1 on bit 0 of CFG_B MSR
> which requires to enable auto counter reload on GP counter 0.
>
> The root cause of causing this issue is the check for auto counter
> reload (ACR) counter mask from user space is incorrect in
> intel_pmu_acr_late_setup() helper. It leads to an invalid ACR counter
> mask from user space could be set into hw.config1 and then written into
> CFG_B MSRs and trigger the MSR access warning.
>
> e.g., User may create a perf event with ACR counter mask (config2=0xcb),
> and there is only 1 event created, so "cpuc->n_events" is 1.
>
> The correct check condition should be "i + idx >= cpuc->n_events"
> instead of "i + idx > cpuc->n_events" (it looks a typo). Otherwise,
> the counter mask would traverse twice and an invalid "cpuc->assign[1]"
> bit (bit 0) is set into hw.config1 and cause MSR accessing error.
>
> Besides, also check if the ACR counter mask corresponding events are
> ACR events. If not, filter out these counter mask. If a event is not a
> ACR event, it could be scheduled to an HW counter which doesn't support
> ACR. It's invalid to add their counter index in ACR counter mask.
>
> Furthermore, remove the WARN_ON_ONCE() since it's easily triggered as
> user could set any invalid ACR counter mask and the warning message
> could mislead users.
>
> Fixes: ec980e4facef ("perf/x86/intel: Support auto counter reload")
> Signed-off-by: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
> ---
> arch/x86/events/intel/core.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
> index 3a319cf6d364..8d046b1a237e 100644
> --- a/arch/x86/events/intel/core.c
> +++ b/arch/x86/events/intel/core.c
> @@ -2994,7 +2994,8 @@ static void intel_pmu_acr_late_setup(struct cpu_hw_events *cpuc)
> if (event->group_leader != leader->group_leader)
> break;
> for_each_set_bit(idx, (unsigned long *)&event->attr.config2, X86_PMC_IDX_MAX) {
> - if (WARN_ON_ONCE(i + idx > cpuc->n_events))
> + if (i + idx >= cpuc->n_events ||
> + !is_acr_event_group(cpuc->event_list[i + idx]))
> return;

Is this a normal condition?

- If it's normal then the 'return' is destructive, isn't it? Shouldn't
it be a 'break', if this condition is legitimate?

- If it's not normal, then the WARN_ON_ONCE() was justified, right?

Thanks,

Ingo


Return-Path: <linux-kernel+bounces-668999-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C9C0841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:03:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 56E609E7646
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:03:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 757BF2367AF;
Sat, 31 May 2025 08:03:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="CUUUdlZo"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18])
(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 8629913635E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:03:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.18
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748678632; cv=none; b=drUH/rZonpFgm5iYHEPB8hhePaj9H9m/wuzIoiSBaASDBIhUalPbi7TRiLB630EtAIjC7CFFFdwWHglRJP4GMqNV2kBXem4Smuv10pzJGP2hX9XRutLqHy1/uMvK+VyQVDv21G9SEGo6J01GqmRWOawDIzc+j7X71Vqyi6I/+3A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748678632; c=relaxed/simple;
bh=+OSHIvM7vjrRqEFHX70aF++PhNnu1uaitgh47TkZO7k=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=mYcIny1u4l3C97bt90kp3sn2qRrNWcNnOCLPE4GO0Tdagf46CxnLX+TPfm7h4RewjUMX+Y/WecngUfCbCce3337FYLXs0fK6Y6AUTiR8UV4i3SWGL6Gb62ac3xNinmPGZrDIpNUsej8Uv8s/wZL8H20FUR5cxtoWSTnO49Jciz4=
ARC-Authentication-Results:i=1; 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=CUUUdlZo; arc=none smtp.client-ip=198.175.65.18
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748678629; x=1780214629;
h=date:from:to:cc:subject:message-id:mime-version;
bh=+OSHIvM7vjrRqEFHX70aF++PhNnu1uaitgh47TkZO7k=;
b=CUUUdlZo0+u+G68+iS31vsiR64/nDYm9SGBudyBZmry1abZINcVBy2hq
MUSHBKvLSocAmShm9VcmLOIOm4oIZPggXw5WY8BZIsM8uCrlgvcLcQlSx
mJS1lwqbXZWJ7cgBnFuXXiTvQclweu4+FCh5yOu1B+bVQjsMOn0J2m1fm
D/twGD3gEI/I6bm2/8VDanMzHtrGa+1CT1USihbRgabx6RFtnXuQVOBgk
6gxddhSRCMHbylrYDRXiLDLaqW8U3xoGykO1ocpdWv9xR9f/OhylRqJ5S
wyMdzG5tqPnPyWqdKMaEdAUqH6SCLLkDzzC3Q5QWWAofOsm3gNesd6uau
w==;
X-CSE-ConnectionGUID: fSgr8HZZT2mfjFewABqNlA==
X-CSE-MsgGUID: j4GD3ZTdQLaoG8Wafx0j6w==
X-IronPort-AV: E=McAfee;i="6700,10204,11449"; a="50915926"
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="50915926"
Received: from orviesa010.jf.intel.com ([10.64.159.150])
by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 01:03:49 -0700
X-CSE-ConnectionGUID: lr2XGZ8pRoSDlkR97JCqkA==
X-CSE-MsgGUID: 9twQd524TnuUtcAbEplYdg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="144055189"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa010.jf.intel.com with ESMTP; 31 May 2025 01:03:47 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLHBw-000YHi-2i;
Sat, 31 May 2025 08:03:44 +0000
Date: Sat, 31 May 2025 16:03:36 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Chaoyi Chen <chaoyi.chen@xxxxxxxxxxxxxx>
Cc: oe-kbuild-all@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
"Rob Herring (Arm)" <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk@xxxxxxxxxx>
Subject: arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: dp@fec00000
(rockchip,rk3399-cdn-dp): ports: 'port@0' is a required property
Message-ID: <202505311543.03VDPaOD-lkp@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f70f5b08a47a3bc1a252e5f451a137cde7c98ce
commit: 70a299ed2e03e7ef26e5be7889bab1a47960ed25 dt-bindings: display: rockchip: Convert cdn-dp-rockchip.txt to yaml
date: 9 days ago
config: arm64-randconfig-052-20250529 (https://download.01.org/0day-ci/archive/20250531/202505311543.03VDPaOD-lkp@xxxxxxxxx/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8)
dtschema version: 2025.3.dev27+g32749b3
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250531/202505311543.03VDPaOD-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505311543.03VDPaOD-lkp@xxxxxxxxx/

dtcheck warnings: (new ones prefixed by >>)
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi:2180.20-2182.6: Warning (graph_child_address): /dp@ff970000/ports/port@1: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: pcie@0,0: wifi@0,0:interrupts:0:0: 8 is not one of [1, 2, 3, 4]
from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: pcie@0,0: wifi@0,0:interrupts:0: [8, 8] is too long
from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: usb@fe800000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: usb@fe900000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@0' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@1' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): Unevaluated properties are not allowed ('ports' was unexpected)
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: /syscon@ff770000/pcie-phy: failed to match any schema with compatible: ['rockchip,rk3399-pcie-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: /phy@ff7c0000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: /phy@ff800000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-bob.dtb: /sound: failed to match any schema with compatible: ['rockchip,rk3399-gru-sound']
--
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi:2180.20-2182.6: Warning (graph_child_address): /dp@ff970000/ports/port@1: graph node has single child node 'endpoint@0', #address-cells/#size-cells are not necessary
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: pcie@0,0: wifi@0,0:interrupts:0:0: 8 is not one of [1, 2, 3, 4]
from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: pcie@0,0: wifi@0,0:interrupts:0: [8, 8] is too long
from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: usb@fe800000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: usb@fe900000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@0' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@1' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): Unevaluated properties are not allowed ('ports' was unexpected)
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: /syscon@ff770000/pcie-phy: failed to match any schema with compatible: ['rockchip,rk3399-pcie-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: /phy@ff7c0000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: /phy@ff800000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-kevin.dtb: /sound: failed to match any schema with compatible: ['rockchip,rk3399-gru-sound']
--
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: pcie@0,0: wifi@0,0:reg: [[0, 0, 0, 0, 0], [50331664, 0, 0, 0, 2097152]] is too long
from schema $id: http://devicetree.org/schemas/pci/pci-bus-common.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: wifi@0,0 (qcom,ath10k): reg: [[0, 0, 0, 0, 0], [50331664, 0, 0, 0, 2097152]] is too long
from schema $id: http://devicetree.org/schemas/net/wireless/qcom,ath10k.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: usb@fe3a0000 (generic-ohci): bluetooth@1:compatible: ['usbcf3,e300', 'usb4ca,301a'] is too long
from schema $id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: usb@fe3a0000 (generic-ohci): Unevaluated properties are not allowed ('#address-cells', '#size-cells', 'bluetooth@1' were unexpected)
from schema $id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: usb@fe800000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@0' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@1' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): Unevaluated properties are not allowed ('ports' was unexpected)
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: /syscon@ff770000/pcie-phy: failed to match any schema with compatible: ['rockchip,rk3399-pcie-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: /phy@ff7c0000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: /phy@ff800000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: panel@0 (innolux,p097pfg): 'ports' does not match any of the regexes: '^pinctrl-[0-9]+$'
from schema $id: http://devicetree.org/schemas/display/panel/innolux,p097pfg.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-dumo.dtb: /sound: failed to match any schema with compatible: ['rockchip,rk3399-gru-sound']
--
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi:2104.26-2144.4: Warning (avoid_unnecessary_addr_size): /dsi@ff968000: unnecessary #address-cells/#size-cells without "ranges", "dma-ranges" or child "reg" property
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi:1947.9-1956.5: Warning (graph_child_address): /isp0@ff910000/ports: graph node has single child node 'port@0', #address-cells/#size-cells are not necessary
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: usb@fe3a0000 (generic-ohci): bluetooth@1:compatible: ['usbcf3,e300', 'usb4ca,301a'] is too long
from schema $id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: usb@fe3a0000 (generic-ohci): Unevaluated properties are not allowed ('#address-cells', '#size-cells', 'bluetooth@1' were unexpected)
from schema $id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: usb@fe800000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@0' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@1' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): Unevaluated properties are not allowed ('ports' was unexpected)
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: /syscon@ff770000/pcie-phy: failed to match any schema with compatible: ['rockchip,rk3399-pcie-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: /phy@ff7c0000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: /phy@ff800000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: panel@0 (innolux,p097pfg): 'ports' does not match any of the regexes: '^pinctrl-[0-9]+$'
from schema $id: http://devicetree.org/schemas/display/panel/innolux,p097pfg.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-inx.dtb: /sound: failed to match any schema with compatible: ['rockchip,rk3399-gru-sound']
--
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi:2104.26-2144.4: Warning (avoid_unnecessary_addr_size): /dsi@ff968000: unnecessary #address-cells/#size-cells without "ranges", "dma-ranges" or child "reg" property
arch/arm64/boot/dts/rockchip/rk3399-base.dtsi:1947.9-1956.5: Warning (graph_child_address): /isp0@ff910000/ports: graph node has single child node 'port@0', #address-cells/#size-cells are not necessary
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: usb@fe3a0000 (generic-ohci): bluetooth@1:compatible: ['usbcf3,e300', 'usb4ca,301a'] is too long
from schema $id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: usb@fe3a0000 (generic-ohci): Unevaluated properties are not allowed ('#address-cells', '#size-cells', 'bluetooth@1' were unexpected)
from schema $id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: usb@fe800000 (rockchip,rk3399-dwc3): 'extcon' does not match any of the regexes: '^pinctrl-[0-9]+$', '^usb@'
from schema $id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@0' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): ports: 'port@1' is a required property
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
>> arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: dp@fec00000 (rockchip,rk3399-cdn-dp): Unevaluated properties are not allowed ('ports' was unexpected)
from schema $id: http://devicetree.org/schemas/display/rockchip/rockchip,rk3399-cdn-dp.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: /syscon@ff770000/pcie-phy: failed to match any schema with compatible: ['rockchip,rk3399-pcie-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: /phy@ff7c0000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: /phy@ff800000: failed to match any schema with compatible: ['rockchip,rk3399-typec-phy']
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: panel@0 (kingdisplay,kd097d04): 'ports' does not match any of the regexes: '^pinctrl-[0-9]+$'
from schema $id: http://devicetree.org/schemas/display/panel/panel-simple-dsi.yaml#
arch/arm64/boot/dts/rockchip/rk3399-gru-scarlet-kd.dtb: /sound: failed to match any schema with compatible: ['rockchip,rk3399-gru-sound']

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669000-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 46C0D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:05:41 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 7E0FB4A629A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:05:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6EBC32367C5;
Sat, 31 May 2025 08:05:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jWpJcNER"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 64D891E521;
Sat, 31 May 2025 08:05:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748678733; cv=none; b=cpneVBDHvehFcR5sgDnBjc9q0WGSDIuk5c1If9iSoyS9udaa6Vj4hEnCYFOjt4aPy8r7kBQ6dXS6t9KHtRWBKBqEQdYOxUz+1u7bwld6tUA7Mp8ztQsioos+fkVQXBTktNIDoiCRhaOOQkkw24HslrBRSFrefpVC4K/fsry2efA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748678733; c=relaxed/simple;
bh=F5r43w35NHKTlsrYLQ9a3zkaYnsz4VCUfbpL1mD1jqk=;
h=Mime-Version:Content-Type:Date:Message-Id:From:To:Cc:Subject:
References:In-Reply-To; b=Umhtzxvs4SrjD02XBSkdSJD5A/5tea/f+aSHyHkMCLLM6uSpskqDrNnJh1A2FwKdD0YXkPvp5vPOGsf1564bMQtkrpxUjHfZzxBA7SexlI1krTLQllzN/aM1A9LIyf0/Fb1Hpg7hovE0dpWwrTHF/k0gQrLyt0TLQ/YiUhHDZv4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jWpJcNER; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 550FBC4CEE3;
Sat, 31 May 2025 08:05:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748678733;
bh=F5r43w35NHKTlsrYLQ9a3zkaYnsz4VCUfbpL1mD1jqk=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=jWpJcNEROKLWBSr/EfNTY7zodcFW+1saU83FFPZR7/ZSTVkbWutNcdRfC5O3FDY/+
QqnV3JyXEMKuQwjN2byxzMvyviQtRWAI4IGa7UQsGAxVUD0oGZSYSh1uMLfIAY+laq
s80GNoothsPukagokK+lOBCBFm1J+L3tCEwyREIwLrtWF2Y+ntSnAjgJdMWYpACWkX
WlDBxithuREh7De/6XoJUiOpJUeKMR8if2huQ4I8BK0PCcEL3GaFHyncRzluaCE5Jj
B8BYWMAdTLlmt9abfZCTcXb2yMtCtAXDrka1yRM1t6asYjIufRhiUiohRdXsCyMsGc
MzsV3BPNYLclQ==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 10:05:28 +0200
Message-Id: <DAA6VHUTDC13.3FLLGNXYINO9I@xxxxxxxxxx>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Danilo Krummrich" <dakr@xxxxxxxxxx>
Cc: <gregkh@xxxxxxxxxxxxxxxxxxx>, <rafael@xxxxxxxxxx>, <ojeda@xxxxxxxxxx>,
<alex.gaynor@xxxxxxxxx>, <boqun.feng@xxxxxxxxx>, <gary@xxxxxxxxxxx>,
<bjorn3_gh@xxxxxxxxxxxxxx>, <benno.lossin@xxxxxxxxx>,
<a.hindborg@xxxxxxxxxx>, <aliceryhl@xxxxxxxxxx>, <tmgross@xxxxxxxxx>,
<chrisi.schrefl@xxxxxxxxx>, <rust-for-linux@xxxxxxxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 5/7] rust: miscdevice: properly support device drivers
X-Mailer: aerc 0.20.1
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-6-dakr@xxxxxxxxxx>
<DA9RLBPS7QKE.3CGXHMYG1CDOU@xxxxxxxxxx> <aDouYRU-xSjfgMzJ@pollux>
In-Reply-To: <aDouYRU-xSjfgMzJ@pollux>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 12:17 AM CEST, Danilo Krummrich wrote:
> On Fri, May 30, 2025 at 10:06:55PM +0200, Benno Lossin wrote:
>> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
>> > @@ -40,44 +41,43 @@ pub const fn into_raw<T: MiscDevice>(self) -> bind=
ings::miscdevice {
>> > }
>> > }
>> > =20
>> > -/// A registration of a miscdevice.
>> > -///
>> > /// # Invariants
>> > ///
>> > -/// `inner` is a registered misc device.
>> > +/// - `inner` is a registered misc device,
>> > +/// - `data` is valid for the entire lifetime of `Self`.
>> > #[repr(C)]
>> > #[pin_data(PinnedDrop)]
>> > -pub struct MiscDeviceRegistration<T: MiscDevice> {
>> > +struct RawDeviceRegistration<T: MiscDevice> {
>> > #[pin]
>> > inner: Opaque<bindings::miscdevice>,
>> > - #[pin]
>> > - data: Opaque<T::RegistrationData>,
>> > + data: NonNull<T::RegistrationData>,
>> > _t: PhantomData<T>,
>>=20
>> You shouldn't need the `PhantomData` here.
>>=20
>> Also, do we need to ask for `T: MiscDevice` here? Could we instead have
>> just `T` and then below you write
>> `RawDeviceRegistration<T::RegistrationData>` instead? (`new` of course
>> needs to have a new generic: `U: MiscDevice<RegistrationData =3D T>`)
>
> Sure, is there any advantage? Your proposal seems more complicated at a f=
irst
> glance.

It would make `RawDeviceRegistration` simpler, but maybe it's not worth
it.

>> > }
>> > =20
>> > -// SAFETY:
>> > -// - It is allowed to call `misc_deregister` on a different thread fr=
om where you called
>> > -// `misc_register`.
>> > -// - Only implements `Send` if `MiscDevice::RegistrationData` is also=
`Send`.
>> > -unsafe impl<T: MiscDevice> Send for MiscDeviceRegistration<T> where T=
::RegistrationData: Send {}
>> > -
>> > -// SAFETY:
>> > -// - All `&self` methods on this type are written to ensure that it i=
s safe to call them in
>> > -// parallel.
>> > -// - `MiscDevice::RegistrationData` is always `Sync`.
>> > -unsafe impl<T: MiscDevice> Sync for MiscDeviceRegistration<T> {}
>> > -
>> > -impl<T: MiscDevice> MiscDeviceRegistration<T> {
>> > - /// Register a misc device.
>> > - pub fn register(
>> > +impl<T: MiscDevice> RawDeviceRegistration<T> {
>> > + fn new<'a>(
>> > opts: MiscDeviceOptions,
>> > - data: impl PinInit<T::RegistrationData, Error>,
>> > - ) -> impl PinInit<Self, Error> {
>> > + parent: Option<&'a Device<Bound>>,
>> > + data: &'a T::RegistrationData,
>> > + ) -> impl PinInit<Self, Error> + 'a
>> > + where
>> > + T: 'a,
>> > + {
>> > try_pin_init!(Self {
>> > - data <- Opaque::pin_init(data),
>> > + // INVARIANT: `Self` is always embedded in a `MiscDeviceR=
egistration<T>`, hence `data`
>> > + // is guaranteed to be valid for the entire lifetime of `=
Self`.
>> > + data: NonNull::from(data),
>>=20
>> Both the argument in the INVARIANT comment and way this works are a bit
>> flawed.
>
> Why is the argument flawed? Let's say we go with your proposal below, wha=
t would
> the safety requirement for RawDeviceRegistration::new and the invariant o=
f
> RawDeviceRegistration look like? Wouldn't it be the exact same argument?

So what I write below it not really true. But the argument relies on the
fact that `data` is pointing to a value that will stay alive for the
duration of the existence of `self`. That should be a safety requirement
of `new` (even if we take a reference as an argument).

>> Instead, I'd recommend directly taking the `NonNull` as a
>> parameter. Yes the function will need to be `unsafe`, but the lifetime
>> that you're creating below only lives for `'a`, but the object might
>> live much longer. You might still be fine, but I'd just recommend
>> staying in raw pointer land (or in this case `NonNull`).

>> > @@ -108,6 +108,108 @@ pub fn device(&self) -> &Device {
>> > unsafe { Device::as_ref((*self.as_raw()).this_device) }
>> > }
>> > =20
>> > + fn data(&self) -> &T::RegistrationData {
>> > + // SAFETY: The type invariant guarantees that `data` is valid=
for the entire lifetime of
>> > + // `Self`.
>> > + unsafe { self.data.as_ref() }
>> > + }
>> > +}
>> > +
>> > +#[pinned_drop]
>> > +impl<T: MiscDevice> PinnedDrop for RawDeviceRegistration<T> {
>> > + fn drop(self: Pin<&mut Self>) {
>> > + // SAFETY: We know that the device is registered by the type =
invariants.
>> > + unsafe { bindings::misc_deregister(self.inner.get()) };
>> > + }
>> > +}
>> > +
>> > +#[expect(dead_code)]
>> > +enum DeviceRegistrationInner<T: MiscDevice> {
>> > + Raw(Pin<KBox<RawDeviceRegistration<T>>>),
>> > + Managed(Devres<RawDeviceRegistration<T>>),
>>=20
>> These two names could be shortened (`DeviceRegistrationInner` and
>> `RawDeviceRegistration`) as they are only implementation details of this
>> file. How about `InnerRegistration` and `RawRegistration`? Or maybe
>> something even shorter.
>
> There's a reason why I keep them something with "DeviceRegistration" ever=
ywhere,
> which is to make it clear that it's both a device instance *and* a regist=
ration,
> which is actually rather uncommon and caused by the fact that device crea=
tion
> and registration needs to be done under the misc_mtx in misc_register().
>
> This is also the reason for those data structures to be a bit complicated=
; it
> would be much simpler if device creation and registration would be indepe=
ndent
> things.

Then keep the longer names.

>> > +}
>> > +
>> > +/// A registration of a miscdevice.
>> > +#[pin_data(PinnedDrop)]
>> > +pub struct MiscDeviceRegistration<T: MiscDevice> {
>> > + inner: DeviceRegistrationInner<T>,
>> > + #[pin]
>> > + data: Opaque<T::RegistrationData>,
>>=20
>> Why is it necessary to store `data` inside of `Opaque`?
>
> It was UnsafePinned before, but Alice proposed to go with Opaque for the
> meantime. Anyways, this is not introduced by this patch, it comes from
> Christians patch adding T::RegistrationData.

Ah then I'll re-read that discussion.

>> > + this_device: ARef<Device>,
>> > + _t: PhantomData<T>,
>> > +}

>> > + inner: {
>> > + // SAFETY:
>> > + // - `this` is a valid pointer to `Self`,
>> > + // - `data` was properly initialized above.
>> > + let data =3D unsafe { &*(*this.as_ptr()).data.get() }=
;
>>=20
>> As mentioned above, this creates a reference that is valid for this
>> *block*. So its lifetime will end after the `},` and before
>> `this_device` is initialized.
>>=20
>> It *might* be ok to turn it back into a raw pointer in
>> `RawDeviceRegistration::new`, but I wouldn't bet on it.
>
> Why? The reference is still valid in RawDeviceRegistration::new, no?

Yes the reference is still valid in the `new` function call. I was under
the impression that the pointer created in `new` would get invalidated,
because the struct would get reborrowed in the meantime, but that's not
the case, since this pointer is obtained by `get`. So you should be
good.

>> > +
>> > + let raw =3D RawDeviceRegistration::new(opts, parent, =
data);
>> > +
>> > + // FIXME: Work around a bug in rustc, to prevent the =
following warning:
>> > + //
>> > + // "warning: value captured by `dev` is never read.=
"
>> > + //
>> > + // Link: https://github.com/rust-lang/rust/issues/141=
615
>>=20
>> Note that the bug is that the compiler complains about the wrong span.
>> The original value of `dev` is `None` and that value is never used, so
>> the warning is justified. So this `let _ =3D dev;` still needs to stay
>> until `pin-init` supports accessing previously initialized fields (now
>> I'm pretty certain that I will implement that soon).
>
> Do you want to propose an alternative comment about this?

I think we don't need a comment here.

>> > + let _ =3D dev;
>> > +
>> > + if let Some(parent) =3D parent {
>> > + let devres =3D Devres::new(parent, raw, GFP_KERNE=
L)?;
>> > +
>> > + dev =3D Some(devres.access(parent)?.device().into=
());
>> > + DeviceRegistrationInner::Managed(devres)
>> > + } else {
>> > + let boxed =3D KBox::pin_init(raw, GFP_KERNEL)?;
>> > +
>> > + dev =3D Some(boxed.device().into());
>> > + DeviceRegistrationInner::Raw(boxed)
>> > + }
>> > + },
>> > + // Cache `this_device` within `Self` to avoid having to a=
ccess `Devres` in the managed
>> > + // case.
>> > + this_device: {
>> > + // SAFETY: `dev` is guaranteed to be set in the initi=
alizer of `inner` above.
>> > + unsafe { dev.unwrap_unchecked() }
>> > + },
>>=20
>> No need for the extra block, just do:
>>=20
>> // Cache `this_device` within `Self` to avoid having to access `Devr=
es` in the managed
>> // case.
>> // SAFETY: `dev` is guaranteed to be set in the initializer of `inne=
r` above.
>> this_device: unsafe { dev.unwrap_unchecked() },
>
> Yes, I know, but I found the above a bit cleaner -- I don't mind changing=
it
> though.
>
>> I'm also pretty sure that the compiler would optimize `.take().unwrap()`
>> and also this is only executed once per `MiscDeviceRegistration`, so
>> even if it isn't it wouldn't really matter. So I'd prefer if we don't
>> use `unsafe` here even if it is painfully obvious (if I'm fast enough
>> with implementing, you can rebase on top before you merge and then this
>> will be gone anyways :)
>
> Sounds good! :)
>
> But I think that unsafe is better than unwrap() in such cases; unsafe req=
uires
> us to explain why it's OK to do it, which makes it less likely to create =
bugs.

That's not exactly how I would think about it, but your argument makes
sense.

> (Just recently I wrote some code, hit the need for unsafe and, while writ=
ing up
> the safety comment, I had to explain to myself, why the way I was about t=
o
> implement this was pretty broken.)

That's great :)

> unwrap() on the other hand, doesn't require any explanation, but panics t=
he
> kernel in the worst case.

Yeah that is true. Ultimately for this case it won't matter, since I'll
just implement the access thing in pin-init.

It'll still take a while, because it will touch several parts that other
patches also touch. Thus I prefer to first pick the patches already on
the list, but for that I'll wait until the merge window closes.

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669001-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CCB6541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:11:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id D36394A7364
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:11:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6FD662367CD;
Sat, 31 May 2025 08:11:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="r9ivJzHU"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8D25A1E1E1B;
Sat, 31 May 2025 08:11:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679073; cv=none; b=QaSLduNJXez8Ka20tL98j1tuOy5+uzw+ZOEJiaIX+hufjOIoinp+6RYGfnegYa68N84j1VxSEq5VWEDV0pyntKmNvxiIQTQEzEU+Y4SLmNHRTPx4b/bqGs63fpV975nCn+7E6Joau+oAc+nLik5WAXlBR7K9xffRrVGYiMFGkFQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679073; c=relaxed/simple;
bh=5EpEz4W5NQgCGVf6NZUg8RK3U0K6LQ7ge9fPKoAs3mQ=;
h=Mime-Version:Content-Type:Date:Message-Id:Subject:From:To:Cc:
References:In-Reply-To; b=Dc7E4m3wJh6Hu4tzTC1ZvtnpKksbUHmMAgHwhGsy8+biptwQfE9O74kVUipfWAmT9xif+O1mUpuGBe5o8pebUiGRCqQ3WU73x9AjvD22f+0lfH6MkgaXqKdlDj1fliSWjKEtV0IVb+jUUomtquKkT553ck52BmuQ6EMHm2LJ8Wg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=r9ivJzHU; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1B123C4CEE3;
Sat, 31 May 2025 08:11:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748679073;
bh=5EpEz4W5NQgCGVf6NZUg8RK3U0K6LQ7ge9fPKoAs3mQ=;
h=Date:Subject:From:To:Cc:References:In-Reply-To:From;
b=r9ivJzHUl0Zj1DERPhTbtzbQIdaQvW/6387j4di/Ur+w6uIlvQXbmz+ATKxOLifau
Mo1F4Fd9yQ74tDzJG8OD3GdVuBzlU7AP/KTqmF3SFoZLPZ4BLgvyLGlbSeJN9zBHeg
BjHbUbMjLm55KsobyL22Tt5gdO7h3ebZq6rGsYVEPS13dk4f35lZtD5YsbSlbBWhkf
crY96JO6JqlmeVy7/2HHmfwJq3D5VXEvVEGbSVCWFb8zEaTvfH9f394UFeUzQFimk9
EoMl2fDNUkttjomcLCm7R2sSL/HyEQKJtFBo28Sr2L20lZKocvbAlpekJ52o+Upm1w
qIgIhCYVmQcqQ==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 10:11:08 +0200
Message-Id: <DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx>
Subject: Re: [PATCH 7/7] rust: sample: misc: implement device driver sample
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Danilo Krummrich" <dakr@xxxxxxxxxx>
Cc: <gregkh@xxxxxxxxxxxxxxxxxxx>, <rafael@xxxxxxxxxx>, <ojeda@xxxxxxxxxx>,
<alex.gaynor@xxxxxxxxx>, <boqun.feng@xxxxxxxxx>, <gary@xxxxxxxxxxx>,
<bjorn3_gh@xxxxxxxxxxxxxx>, <benno.lossin@xxxxxxxxx>,
<a.hindborg@xxxxxxxxxx>, <aliceryhl@xxxxxxxxxx>, <tmgross@xxxxxxxxx>,
<chrisi.schrefl@xxxxxxxxx>, <rust-for-linux@xxxxxxxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-8-dakr@xxxxxxxxxx>
<DA9RRZVPZSMW.1LGW9H4G0RLT5@xxxxxxxxxx> <aDowAzvEvrQcella@pollux>
In-Reply-To: <aDowAzvEvrQcella@pollux>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 12:24 AM CEST, Danilo Krummrich wrote:
> On Fri, May 30, 2025 at 10:15:37PM +0200, Benno Lossin wrote:
>> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
>> > In order to demonstrate and test a MiscDeviceRegistration with a paren=
t
>> > device, introduce CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT.
>> >
>> > If CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT=3Dy the misc device samp=
le
>> > is initialized with a parent device (faux), otherwise it is initialize=
d
>> > without a parent device, i.e. the exact same way as without this patch=
.
>> >
>> > Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx>
>> > ---
>> > samples/rust/Kconfig | 8 +++++
>> > samples/rust/rust_misc_device.rs | 50 +++++++++++++++++++++++++++++--=
-
>> > 2 files changed, 54 insertions(+), 4 deletions(-)
>> >
>> > diff --git a/samples/rust/Kconfig b/samples/rust/Kconfig
>> > index b1006ab4bc3c..9948ec0939ef 100644
>> > --- a/samples/rust/Kconfig
>> > +++ b/samples/rust/Kconfig
>> > @@ -30,6 +30,14 @@ config SAMPLE_RUST_MISC_DEVICE
>> > =20
>> > If unsure, say N.
>> > =20
>> > +config SAMPLE_RUST_MISC_DEVICE_WITH_PARENT
>> > + bool "Create a misc device with a parent device"
>> > + depends on SAMPLE_RUST_MISC_DEVICE
>> > + default n
>> > + help
>> > + Say Y here if you want the misc device sample to create a misc
>> > + device with a parent device.
>> > +
>>=20
>> Why not create a separate file? The `cfg`s might confuse newcomers
>> looking at the sample.
>
> It would be a lot of duplicated code, unless we really *only* exercise th=
e
> device creation and registration part, which would be a bit unfortunate, =
given
> that this sample is also a pretty good test.

We could separate the common parts into a single file and then
`include!` that file from the two samples. (Or if the build system
supports multi-file samples then just use that, but my gut feeling is
that it doesn't)

I really would like to avoid `cfg` in samples.

>> > config SAMPLE_RUST_PRINT
>> > tristate "Printing macros"
>> > help
>> > diff --git a/samples/rust/rust_misc_device.rs b/samples/rust/rust_misc=
_device.rs
>> > index 9bf1a0f64e6e..175638d6d341 100644
>> > --- a/samples/rust/rust_misc_device.rs
>> > +++ b/samples/rust/rust_misc_device.rs
>> > @@ -167,6 +167,9 @@
>> > uaccess::{UserSlice, UserSliceReader, UserSliceWriter},
>> > };
>> > =20
>> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
>> > +use kernel::faux;
>> > +
>> > const RUST_MISC_DEV_HELLO: u32 =3D _IO('|' as u32, 0x80);
>> > const RUST_MISC_DEV_GET_VALUE: u32 =3D _IOR::<i32>('|' as u32, 0x81);
>> > const RUST_MISC_DEV_SET_VALUE: u32 =3D _IOW::<i32>('|' as u32, 0x82);
>> > @@ -181,19 +184,33 @@
>> > license: "GPL",
>> > }
>> > =20
>> > +#[cfg(not(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT))]
>> > #[pin_data]
>> > struct RustMiscDeviceModule {
>> > #[pin]
>> > _miscdev: MiscDeviceRegistration<RustMiscDevice>,
>> > }
>> > =20
>> > -impl kernel::InPlaceModule for RustMiscDeviceModule {
>> > - fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error=
> {
>> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
>> > +struct RustMiscDeviceModule {
>> > + _faux: faux::Registration,
>> > + _miscdev: Pin<KBox<MiscDeviceRegistration<RustMiscDevice>>>,
>> > +}
>> > +
>> > +impl RustMiscDeviceModule {
>> > + fn init() -> MiscDeviceOptions {
>> > pr_info!("Initializing Rust Misc Device Sample\n");
>> > =20
>> > - let options =3D MiscDeviceOptions {
>> > + MiscDeviceOptions {
>> > name: c_str!("rust-misc-device"),
>> > - };
>> > + }
>> > + }
>> > +}
>> > +
>> > +#[cfg(not(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT))]
>> > +impl kernel::InPlaceModule for RustMiscDeviceModule {
>> > + fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error=
> {
>> > + let options =3D Self::init();
>> > =20
>> > try_pin_init!(Self {
>> > _miscdev <- MiscDeviceRegistration::register(
>> > @@ -205,6 +222,31 @@ fn init(_module: &'static ThisModule) -> impl Pin=
Init<Self, Error> {
>> > }
>> > }
>> > =20
>> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
>> > +impl kernel::Module for RustMiscDeviceModule {
>> > + fn init(_module: &'static ThisModule) -> Result<Self> {
>> > + let options =3D Self::init();
>> > + let faux =3D faux::Registration::new(c_str!("rust-misc-device=
-sample"), None)?;
>> > +
>> > + // For every other bus, this would be called from Driver::pro=
be(), which would return a

Missing '`' around Driver::probe().

>> > + // `Result<Pin<KBox<T>>>`, but faux always binds to a "dummy"=
driver, hence probe() is
>>=20
>> Not clear what `T` is supposed to be, do you mean `Self`?
>
> From the perspective of the type implementing the corresponding Driver tr=
ait it
> would indeed be `Self`. But I found it ambiguous to write `Self`, since I=
do *not*
> mean `RustMiscDeviceModule` with `Self`.

Yeah that makes sense, I already entered into the `impl Driver` context
:) How about we use `<T as Driver>::probe()` above and then `T` makes
sense?

Another thing: faux devices don't have a `probe` in rust, so saying "not
required" doesn't make much sense, right?

>> > + // not required.
>> > + let misc =3D KBox::pin_init(
>> > + MiscDeviceRegistration::register(
>> > + options,
>> > + Arc::pin_init(new_mutex!(Inner { value: 0_i32 }), GFP=
_KERNEL),
>> > + Some(faux.as_ref()),
>> > + ),
>> > + GFP_KERNEL,
>> > + )?;
>>=20
>> You could also initialize this module variation in-place. (this would
>> also require the pin-init change to reference initialized fields)
>
> Yes, I also thought about that. But this way is a bit closer to what thin=
gs
> would look like within a probe() callback.

Yeah then let's do that :)

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669002-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BD6DB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:12:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E9B2518921A7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:12:34 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 62A862367C9;
Sat, 31 May 2025 08:12:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SpmMpOF9"
Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 16FC8201100;
Sat, 31 May 2025 08:12:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679133; cv=none; b=dBLJIcQiu4Ba1p4+rBx6nv6IDn/8AkR56Y3fwBaOcCgAGAt8s++cDd6RpvErwXItXJxVDPV8f3TrmO71NZOFGrIrGsQ00OUy/vQI89odZryjHLK3rp4+o+BE7IE5Ne1CmneyqFx8GvcA1TzOe3O2FnVsRdKV4HXV7YvOj665Eq4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679133; c=relaxed/simple;
bh=P3pQFUlHC2T+Lsk5XbiDJySKsgqtLIg7wivM/Q6sk5E=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=FA5jY2oudaQoc7Rx+846JuOFmmKd9YeeHR+Sen1dHOK3BY6EGT4qcp3CQYJwBFFz+MMEC9mYWoUXErV1ts44y7+jVUXKqPIY6QxkzE6YnKsftM2tIov5KPToLToWhCuFgXytttfRhWhiTru+kriMmmvL9nEcL7MvMD66vddZfic=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SpmMpOF9; arc=none smtp.client-ip=209.85.208.54
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-602e203db66so4677190a12.1;
Sat, 31 May 2025 01:12:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748679128; x=1749283928; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=AfO4E8Rzlk2gOURhivC7ZagCRJfFLxz51Y/1loYq04U=;
b=SpmMpOF9P63R/sMgNIXf7AWhgnbNa+twYMCMtZJVRLSJ9dBPFQw6PSjMuYx+SOLKhW
O4z8h71vuy1fRHojmC76qPthMDo0nJJHWl0uS+KpNgQq4kLYbQUv3vQ2Q8Q89T5qyRVA
UXKXpYwOwUSxFzy5VjIstta75Qibkv1EXSqebdsaxsIpoIm/9jvIwih2/n6tR9cRpB81
PhK234A2ps/NdStH2RuTX/RV825XNteM/M8j1oJmyfhy43E5cbiDMn2T49U7LURDLRA1
jGWzpyqtSKr971He5D+rasOGtbknWqQhcLxpnF3RRSWuwXjiTVcB8IwTpj1BGMWAvBl9
NDww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748679128; x=1749283928;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=AfO4E8Rzlk2gOURhivC7ZagCRJfFLxz51Y/1loYq04U=;
b=orIJHQZKAkPIXX049LK1m/78A95nDNKE7Uulb8U4xgYZ1qIVjN2Rkesg2+Mj5kScg9
9GcNzs37/V9fmsto96jZHtRPqXSI1UWgjeoDPNrczqOIAnGrkoIUUS5o/z2D5Oro5Oi9
bLinVzPv4cuJ/Y1oTncpCPjPMBmh3Ctnz5O9RXhFMN/4dL3gK/RthkghkoqQY+nhjChX
cMpPE0sxo4J1Aar/sEY5JZX1itp85oy7CP0ae9ueA/2UtkNTDmj7kzTJ3iquiYOVR51A
uSFqZfq/Fy60+E1/pT2L6iiGwZ6Btqwh+djAA6ABEUesEqbO3ZxxXW6hJKy++Vrndc0U
o27g==
X-Forwarded-Encrypted: i=1; AJvYcCUrtTfsFitv3J6FYLpzrvs6VVoveADEO70tlKjvp+nbfk/3dlVyRJJkqrdAwbC3tKTn5Vk0g3EZoUFx@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YxAB26NjMnwdIiBJCpiFooAVgAcMGR939V4oe3u9DQIdzw0UiLd
YHD3c9lDYCqy5uJQneq0qNyOZ80q9vqVruIUKn1pshkilUf81gtuEhWqREHSOiEC
X-Gm-Gg: ASbGncvth7opwMl4idF009VwpgvgwaR7tkM/r0BE+jADNYxAq8HdaX3Ox143ICHPqPJ
UFIkyjw/yG7DO1rIvTmVqCeyrGLy8uWrs0j4PA8JGq5CfU//fRUZohBZqYSa6Wx4YLhXLr1Ycbm
HUjOTxwQenjfuVWwhkAtycTv7LI0RXnyJGsx5TVGF8zSNX1tcxU9iLoiglkA3ku4QbSjkosJ0D5
fb3SbSgR2kM5Uhncp51zI3v24H2d54ikjBW5BMRSegQcT9tPJVzEOnAmJSZ/x9A1iqsMxibGwG8
AaHchaTFamhC0WSpl0+yIkLVCWAbnuAjHoH/xSgiEspF+rBIWhA8EhnK8iOpSAMgI9Yl3HrMuXV
rl7QRHlQiTb5fhQ==
X-Google-Smtp-Source: AGHT+IGWHk4OucGEDJm7f3jkomn6fGr5i/tOtSrccUKqoTFVtwiiy0fzabYXBPVtBVVuj9Zg+B6IFg==
X-Received: by 2002:a17:907:9411:b0:ad8:87ae:3f66 with SMTP id a640c23a62f3a-adb495eabe6mr99990666b.60.1748679127694;
Sat, 31 May 2025 01:12:07 -0700 (PDT)
Received: from masalkhi.. (ip-109-43-114-141.web.vodafone.de. [109.43.114.141])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5e2bf05csm451352766b.113.2025.05.31.01.12.06
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 01:12:07 -0700 (PDT)
From: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx
Cc: robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx,
conor+dt@xxxxxxxxxx,
arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
abd.masalkhi@xxxxxxxxx
Subject: [PATCH 0/3] Add control driver for ST M24LR RFID/NFC EEPROM chips
Date: Sat, 31 May 2025 08:11:56 +0000
Message-ID: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch series adds support for the control interface of
STMicroelectronics M24LR RFID/NFC EEPROM devices, such as M24LR04E-R.

The device exposes two I2C addresses: one for the control interface
and another for EEPROM memory. To support this design, the driver
acts as an I2C mux (gate), exposing the EEPROM as a child node
handled by the standard at24 driver. Using the mux not only enables
clean separation of functions but also allows synchronize access to
the device.

Patches:
- Patch 1: Adds Device Tree binding for the control interface.
- Patch 2: Adds the sysfs-based control driver.
- Patch 3: Adds a MAINTAINERS entry for the driver.

Tested on: m24lr04e-r

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>

Abd-Alrhman Masalkhi (3):
dt-bindings: misc: Add binding for ST M24LR control interface
misc: add sysfs control driver for ST M24LR series RFID/NFC chips
MAINTAINERS: Add entry for ST M24LR control driver

.../devicetree/bindings/misc/st,m24lr.yaml | 70 ++
MAINTAINERS | 8 +
drivers/misc/Kconfig | 15 +
drivers/misc/Makefile | 1 +
drivers/misc/m24lr_ctl.c | 677 ++++++++++++++++++
5 files changed, 771 insertions(+)
create mode 100644 Documentation/devicetree/bindings/misc/st,m24lr.yaml
create mode 100644 drivers/misc/m24lr_ctl.c

--
2.43.0



Return-Path: <linux-kernel+bounces-669003-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0FD1841E003FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:12:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 748A17AFBAD
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:11:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CA7352367AE;
Sat, 31 May 2025 08:12:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QJ6qHbQ6"
Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51B51237194;
Sat, 31 May 2025 08:12:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679142; cv=none; b=C7ftAGMV8MeutAE1K3/CSJGm8lqYwWfP9mdtoG4lTIJIZNOLa/odHGh3tXKzP1dRrkAnS3h0AyC0iKS2C+BS1yTzphyIHeM0ir7aq4a6+DAawO4Q76txqrs6meyqBoNSm4XidRe+Y7DTeOFtZSNolX73lVP/Tggg73IK/dskv7M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679142; c=relaxed/simple;
bh=iayMRQ98qGrlv+ohmpwc93OMUZ+eFmNV8TLVa1jLUV0=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=JQLM3hbaXfEyUDskiAXoRQ3IF3gezkFcO55SGwh/DbUj2mhk2G82Q/WSXj3InotDMci63kQoVK5OnXzgm3j/ye1Qpx4TqOIrTRaE++RkD1htzBnSvLXUzp6Tvr2zzBPGtEFSzGKNrdk5G+IdwdELkY/HjacrKXF1MUqflkTZIHY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QJ6qHbQ6; arc=none smtp.client-ip=209.85.218.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-acacb8743a7so485396266b.1;
Sat, 31 May 2025 01:12:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748679137; x=1749283937; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=mhJev685Fr0kXE+aWbeZYAHB5uEBBNEX54M1joDMg6k=;
b=QJ6qHbQ6Iz/AICutFiVwq9qswlQY15OEykv5GfQlso1QJgjMQf4VuNlPKdm15+4678
U4xU15+FeTr4TjVi5dRkiG1KdVuOwstXjRMzdwwXoRSi0Qry+OlfsI1PIeTbrQo3dBWJ
D/MFbkoDrbW9Za/fB8B5HuXyckefUzX0GutEPg1TZtODLUHbh00jrB9AxEzt4dgyBgrd
4X/N918MuzNt4twSrbYbhc/tFIlpyYb7ylQRd6b8Bdm9OPquNpyFqXUSzhzd0oFcxL/M
DCDEJLWivi317PoCmROe0XIn6D0B/MY3RnvtGYLVP3lwb9BbZGFoXSMBUfiq5eHHEYuv
Mtzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748679137; x=1749283937;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=mhJev685Fr0kXE+aWbeZYAHB5uEBBNEX54M1joDMg6k=;
b=tshfe5+LVKXSfbR7twYfgmJvvWs9dHCtOxBvuMl9BQy839x4aZIiyAtxB5C9P03XHe
8YTUrC+ToZshINXuWYuQsd//It1N98Nqgfo+VICYLxrskvfkF1bJ0wfFuPoZHFuy84kM
DRVopiW4kRg/+7Qwbyqy1pQC0kXIpyP/vuWaTD9hqCpn35O4zP+oQQRotHJIICs002bv
4RcmhYT1dmjtg2rQbbfdBeKXB+G7vpTJFogtQV1dbHwbd7dJChuhDydxnzwaE7wBCR4E
V4VIbHmkYYS4vV/tWMfa989dESA8hS8NpkBNRhDJDaevTgs/IfN4Uxdslx/FD0EKbU7Q
Ca0A==
X-Forwarded-Encrypted: i=1; AJvYcCXkYKtcYBIlcrKbPDP1K+Nc1HmAuCd159TbNL75Y5f53+hsEmBWXsYei78FeOl9Dg+mU60AR+rMDw2c@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YwfUX+FZbVzz97lG2ZzY9Q5k4M/44+D4f2LyOsUbL8NFjWtBCxj
CrzEZMI4l2JQIq3O3bt6wvo+vWoR4U/dqhOL2hY8+jEezraNEsbjN6whGm23WR23
X-Gm-Gg: ASbGnctcmpGVXbls9OweTSqskozLivaoYQrqMvFfg8Ou3UNmsVXATrmzVcyDXoRKSV8
0PXoU9fXJ/K+yn5fmxpyA/xu/mrK3nO+fbGRo0KvLAHyDL+yRIgFAQw+pj0z+UpaWxcSsBaPKyD
1ofF09/6ysyPEAGnb255Bb88DgulShvcVmobFOgGs2oODtRKqe+TQ8MEWglrDmyKkhTkeEfbl/s
K3HMsf5BpJseNR+x/EdC0BUdnP7o5khO3tcUnf0ycejP4JIdQ+97mlVDZDaXSM31LbFHx4UZrVc
eklUvsseBNsHugYPCKWqQZI3BAJBEIUj9uYbsnoGXKm9tHWlsg1/gW4GfjVaUQc/jTq/MvfQV/p
dolX/osme9ButjjbhxofjAOtr
X-Google-Smtp-Source: AGHT+IGOr7L8a0oC+fGl279R6OI5GNPUvEzkCGzPfxDx509AZxOzjlBjT9czz5jOm3IxJ6gFa1hVrQ==
X-Received: by 2002:a17:906:c10e:b0:ad5:6258:996f with SMTP id a640c23a62f3a-ad8b0e38931mr853764466b.19.1748679137065;
Sat, 31 May 2025 01:12:17 -0700 (PDT)
Received: from masalkhi.. (ip-109-43-114-141.web.vodafone.de. [109.43.114.141])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5e2bf05csm451352766b.113.2025.05.31.01.12.15
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 01:12:16 -0700 (PDT)
From: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx
Cc: robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx,
conor+dt@xxxxxxxxxx,
arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
abd.masalkhi@xxxxxxxxx
Subject: [PATCH 1/3] dt-bindings: misc: Add binding for ST M24LR control interface
Date: Sat, 31 May 2025 08:11:57 +0000
Message-ID: <20250531081159.2007319-2-abd.masalkhi@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add a Device Tree binding for the STMicroelectronics M24LR series
RFID/NFC EEPROM chips (e.g., M24LR04E-R), which support a separate
I2C interface for control and configuration.

This binding documents the control interface that is managed by
a dedicated driver exposing sysfs attributes. The EEPROM memory
interface is handled by the standard 'at24' driver and is
represented as a child node in the Device Tree.

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
---
.../devicetree/bindings/misc/st,m24lr.yaml | 70 +++++++++++++++++++
1 file changed, 70 insertions(+)
create mode 100644 Documentation/devicetree/bindings/misc/st,m24lr.yaml

diff --git a/Documentation/devicetree/bindings/misc/st,m24lr.yaml b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
new file mode 100644
index 000000000000..5a8f5aef13ec
--- /dev/null
+++ b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
@@ -0,0 +1,70 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/misc/st,m24lr.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STMicroelectronics M24LR Series NFC/RFID EEPROM Control Interface
+
+maintainers:
+ - name: Abd-Alrhman Masalkhi
+ email: abd.masalkhi@xxxxxxxxx
+
+description: |
+ This binding describes the control interface for STMicroelectronics
+ M24LR series RFID/NFC EEPROM chips (e.g., M24LR04E-R, M24LR16E-R).
+ This driver provides sysfs access to device-specific control registers
+ (authentication, UID, etc.) over the I2C interface. It act as a
+ I2C gate for the EEPROM. Therefore, The EEPROM is represented as a
+ child node under a port and is accessed through a separate driver
+ (the standard 'at24' driver). This implementation is possible because
+ the M24LR chips uses two I2C addresses: one for accessing the
+ system parameter sector and another for the EEPROM.
+
+allOf:
+ - $ref: "i2c-mux.yaml#"
+
+properties:
+ compatible:
+ enum:
+ - st,m24lr04e-r
+ - st,m24lr16e-r
+ - st,m24lr64e-r
+
+ reg:
+ maxItems: 1
+ description: I2C address of the device.
+
+ pagesize:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: >
+ Maximum number of bytes that can be written in a single I2C
+ transaction. the default is 1.
+
+required:
+ - compatible
+ - reg
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ m24lr@57 {
+ compatible = "st,m24lr04e-r";
+ reg = <0x57>;
+
+ i2c-gate {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ m24lr_eeprom@53 {
+ compatible = "atmel,24c04";
+ reg = <0x53>;
+ address-width = <16>;
+ pagesize = <4>;
+ };
+ };
+ };
+ };
+...
\ No newline at end of file
--
2.43.0



Return-Path: <linux-kernel+bounces-669004-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 35D3D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:12:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0693A16B8FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:12:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 288BF236A9F;
Sat, 31 May 2025 08:12:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QpZoBaWK"
Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id EE7002376E6;
Sat, 31 May 2025 08:12:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679145; cv=none; b=X2UDis7phpKXIgg3h7CdOBul80QvNwvnzp4TU7f+u6PmQi/0neLGxGHj+9VHnjy+TaIBpvWn9WDng8366eAwy3BpiFmUPVFV7AeNK0v28kZJdG4MrWD0S63NvCDJRu2R9c4QpgNzBo6CkzuU3xTPqbd20SxrJkaSF/MDZgcKFFY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679145; c=relaxed/simple;
bh=Px3AdHY4Oljx0M5cjt9rpo75brdaDSUJdOjoIQv2P0Y=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=G0MH93dt+9pvSXTuNth+vkcryTXvewKpNONWkJJ56dvYv16trPPZTmUIjdhnlYULy6YOoSMYIQuKG6Fn148bOt3e74AhPIPtNX+KI5Q7KNnVI34g73dEeNfMK+uhRbpSqvGdVB/xU3K5omvZdszXhNu3mETTdLDKnrHVA8pqvj8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QpZoBaWK; arc=none smtp.client-ip=209.85.218.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-ad89c32a7b5so426220566b.2;
Sat, 31 May 2025 01:12:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748679141; x=1749283941; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=gxx5lgYrQ2Rpv6lmsUL4cEQO9FRoKo7wBRmhQPNxd5E=;
b=QpZoBaWKYuzanfB/SCKQ+TfLhiNePyKVqCZBFcIoAAWNu9/V2SJhcf7RA/2Ya60ZBy
PkicfCTXbuvoB5lhN9ZM7GiKTg4lQQK2Ypy6OgPajW8bJhH/7O0ZOpuBFHud+XIUuXGD
fSWKldOVN3x7TQlxBWrO/PpnYlQjdEAUXlS2Peb3xIY2pMMvedTAxWhBDPfBS5XfM+ER
9v+W5MCdHvgVxg6x2CQUmGLC8jUX4AhwgADjPuHhK0QDbKBKU+Auq8m90bol+2AWiyDL
B+9RM/F6SYoSX7T7KmQzX55j3OGwtbLDJjI4m0i2zNmDuhqBGYEjYdfPHkBBCjpU9SVo
JA7w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748679141; x=1749283941;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=gxx5lgYrQ2Rpv6lmsUL4cEQO9FRoKo7wBRmhQPNxd5E=;
b=PJZi3V6FQ7wDhFfr9f6PEyqYddONNZ5/pOMxsY1v39XJnvcIEFK69H35O4XZDJDOKx
xYZTlw5UCQ+CTl0z6+yP1TpYiBY1169mZf2x6J//EUkPogUG+CSzbj+ze6oTovhZUQAY
FIPoHFC3P+HYntlqm+mpXUcsBy4CUL89OJ3liqpqZVCl6eZxcbuEiYUzOKhhhoZGLrSx
Io0UquyOVfEOUjDHJwLkH2G56g0gZnTMYu8hGYB3rHtkOs/rPP47XoanJJf/llEzyktW
5KRXSrASKCd0ZXO2w45sx1R6cSb9qE2dzOBNsR3WclPml8wcKcVDd6dUuWTatk++biPL
iAjg==
X-Forwarded-Encrypted: i=1; AJvYcCXyxJKaticgkF1nVCSvei55KIuK7qpn8uqswZL8Jdy+hCzWR1oJNNzYY0jYq0ke0AocY6Z/7yWe16SP@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yxa5RjyRBryuuuMfer7BBFCX1u1uWRyiZOqODtFy7VL8/7K5EYx
k/S3tQ90z6WCXBrwcKzqG/fmJVf/13yLTu3h0VIv0Kku2Y0EQPbMCOS5M/gyFJ0J
X-Gm-Gg: ASbGncs6dYGVGls0ddX5A0Y5zGF8RYdoLmj6AfL1ETEOo7bwZcSVRau6k+U5u1zd8iO
DO6QgqYBJHmNJtrgFVl/UIUXaSQg3IKoz5TyiL/HOUrYq+/p6vzfHfvNrHv5oiBtujqMSgO2NRT
nhrVYLf5X/mvlI6QH1Xqj1PgJbTwAVpxG5cdMytszUJ+MElQW/XGSeqTqsLrpTCmLul7Z7tRCro
yKQgQXQAEzQ9mLM8Ppng8gZ+ahZUPs0sF5DCuKXU0IOxuF9sF+9L/wqykFwtfOvfw2YeCuG+f26
nS77r4A+Pfkz52KYigq6/rMohLaBaMiRfuuYEqh6bVTpsE89gA19AJ50d1lj7PkA534tS3D2dx2
/wzSCCNarUHs/zfUc5fqJ21bJ
X-Google-Smtp-Source: AGHT+IF4oGZfaYVDsm8Csuf4PRXaD81NJlFaPy9RDajkVHznaE0Vqc+nrnk+Xl5amuxn7cfzFwARgw==
X-Received: by 2002:a17:906:99c2:b0:ad6:53a8:32ad with SMTP id a640c23a62f3a-adb32598a6fmr583559166b.57.1748679140613;
Sat, 31 May 2025 01:12:20 -0700 (PDT)
Received: from masalkhi.. (ip-109-43-114-141.web.vodafone.de. [109.43.114.141])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5e2bf05csm451352766b.113.2025.05.31.01.12.19
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 01:12:20 -0700 (PDT)
From: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx
Cc: robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx,
conor+dt@xxxxxxxxxx,
arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
abd.masalkhi@xxxxxxxxx
Subject: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series RFID/NFC chips
Date: Sat, 31 May 2025 08:11:58 +0000
Message-ID: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add a sysfs-based control driver for the STMicroelectronics M24LR
series RFID/NFC EEPROM chips, such as the M24LR04E-R. It enables
access to control registers for features such as password
authentication, memory access, and device configuration. It also
synchronize access to the device. (The EEPROM uses a separate driver;
see the note below for details.)

This driver provides only the control interface for M24LR chips. It
also acts as an I2C mux (gate) for the EEPROM. Therefore, the EEPROM
is represented as a child node in the Device Tree and is accessed
through a separate driver (the standard 'at24' driver). This setup
is possible because M24LR chips use two I2C addresses: one for
accessing the system parameter sector, and another for accessing
the EEPROM.

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
---
drivers/misc/Kconfig | 15 +
drivers/misc/Makefile | 1 +
drivers/misc/m24lr_ctl.c | 677 +++++++++++++++++++++++++++++++++++++++
3 files changed, 693 insertions(+)
create mode 100644 drivers/misc/m24lr_ctl.c

diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index c161546d728f..c4152f03695f 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -644,6 +644,21 @@ config MCHP_LAN966X_PCI
- lan966x-miim (MDIO_MSCC_MIIM)
- lan966x-switch (LAN966X_SWITCH)

+config M24LR_CTL
+ tristate "M24LR I2C RFID/NFC Control Interface driver"
+ depends on I2C_MUX && SYSFS
+ select REGMAP_I2C
+ help
+ This driver provides support for the control interface of M24LR I2C
+ RFID/NFC chips.
+
+ Note This driver does not handle the EEPROM on the device. For EEPROM
+ access, use the standard 'at24' driver (drivers/misc/eeprom/at24.c),
+ which supports I2C-based EEPROMs.
+
+ To compile this driver as a module, choose M here: the
+ module will be called m24lr_ctl.
+
source "drivers/misc/c2port/Kconfig"
source "drivers/misc/eeprom/Kconfig"
source "drivers/misc/cb710/Kconfig"
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index 054cee9b08a4..5ae54112ad7e 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -75,3 +75,4 @@ lan966x-pci-objs := lan966x_pci.o
lan966x-pci-objs += lan966x_pci.dtbo.o
obj-$(CONFIG_MCHP_LAN966X_PCI) += lan966x-pci.o
obj-y += keba/
+obj-$(CONFIG_M24LR_CTL) += m24lr_ctl.o
diff --git a/drivers/misc/m24lr_ctl.c b/drivers/misc/m24lr_ctl.c
new file mode 100644
index 000000000000..c854ccc49811
--- /dev/null
+++ b/drivers/misc/m24lr_ctl.c
@@ -0,0 +1,677 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * m24lr_ctl.c - Sysfs control interface for ST M24LR series RFID/NFC chips
+ *
+ * Copyright (c) 2025 Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
+ *
+ * This driver implements a sysfs-based control interface for interacting with
+ * STMicroelectronics M24LR series chips (e.g., M24LR04E-R). It enables access
+ * to control registers for features such as password authentication, memory
+ * access, and device configuration. It also synchronize access to the device
+ * (the EEPROM uses a separate driver, see the note below for details)
+ *
+ * NOTE:
+ * This driver provides only the control interface for M24LR chips. It acts
+ * as an I2C mux (gate) for the EEPROM. Therefore, the EEPROM is represented
+ * as a child node in the Device Tree and is accessed through a separate driver
+ * (the standard 'at24' driver). This setup is possible because M24LR chips use
+ * two I2C addresses: one for accessing the system parameter sector, and another
+ * for accessing the EEPROM.
+ */
+
+#include <linux/i2c.h>
+#include <linux/regmap.h>
+#include <linux/module.h>
+#include <linux/i2c-mux.h>
+#include <linux/device.h>
+#include <linux/of.h>
+#include <linux/of_device.h>
+
+#define M24LR_CTL_PAGESIZE_DEFAULT 1u
+
+/*
+ * Limits the number of I/O control bytes to 64 to prevent holding the
+ * I2C bus for too long, especially important when operating at low I2C
+ * frequencies
+ */
+#define M24LR_CTL_PAGESIZE_LIMIT 64u
+#define M24LR_CTL_WRITE_TIMEOUT 25u
+#define M24LR_CTL_READ_TIMEOUT (M24LR_CTL_WRITE_TIMEOUT)
+
+#define to_sys_entry(attrp) container_of(attrp, struct m24lr_sys_entry, attr)
+
+/**
+ * struct m24lr_sys_entry - describes a sysfs entry for M24LR device access
+ * @reg_addr: register address in the M24LR device
+ * @reg_size: size of the register in bytes
+ * @attr: sysfs attribute used for exposing register access to userspace
+ *
+ * Used to define readable/writable register entries through sysfs.
+ */
+struct m24lr_sys_entry {
+ unsigned int reg_addr;
+ unsigned int reg_size;
+ struct device_attribute attr;
+};
+
+/**
+ * struct m24lr_ctl_chip - describes chip-specific sysfs layout
+ * @entries: array of sysfs entries specific to the chip variant
+ * @n_entries: number of entries in the array
+ * @n_sss_entries: number of sss entries required for the chip
+ *
+ * Supports multiple M24LR chip variants (e.g., M24LRxx) by allowing each
+ * to define its own set of sysfs attributes, depending on its available
+ * registers and features.
+ */
+struct m24lr_ctl_chip {
+ const struct m24lr_sys_entry *entries;
+ unsigned int n_entries;
+ unsigned int n_sss_entries;
+};
+
+/**
+ * struct m24lr_ctl - core driver data for M24LR chip control
+ * @page_size: chip-specific limit on the maximum number of bytes allowed
+ * in a single write operation.
+ * @muxc: mux core struct as the driver act as a gate for the eeprom
+ * @regmap: regmap interface for accessing chip registers
+ * @gate_lock: mutex to synchronize operations to the device from this
+ * driver and the eeprom driver
+ * @sss_entries: array of sssc sysfs entries specific to the chip variant
+ * @n_sss_entries: number of entries in the sss entries array
+ *
+ * Central data structure holding the state and resources used by the
+ * M24LR device driver.
+ */
+struct m24lr_ctl {
+ unsigned int page_size;
+ struct regmap *regmap;
+ struct i2c_mux_core *muxc;
+ struct mutex gate_lock; /* synchronize operations to the device */
+ struct m24lr_sys_entry *sss_entries;
+ unsigned int n_sss_entries;
+};
+
+static ssize_t m24lr_ctl_show(struct device *dev,
+ struct device_attribute *attr, char *buf);
+static ssize_t m24lr_ctl_store(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t count);
+static ssize_t m24lr04e_r_ctl_unlock_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count);
+static ssize_t m24lr04e_r_ctl_newpass_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count);
+
+static const struct regmap_range m24lr_ctl_vo_ranges[] = {
+ regmap_reg_range(0, 63),
+};
+
+static const struct regmap_access_table m24lr_ctl_vo_table = {
+ .yes_ranges = m24lr_ctl_vo_ranges,
+ .n_yes_ranges = ARRAY_SIZE(m24lr_ctl_vo_ranges),
+};
+
+static const struct regmap_config m24lr_ctl_regmap_conf = {
+ .name = "m24lr_ctl",
+ .reg_stride = 1,
+ .reg_bits = 16,
+ .val_bits = 8,
+ .disable_locking = false,
+ .cache_type = REGCACHE_RBTREE,/* Flat can't be used, there's huge gap */
+ .volatile_table = &m24lr_ctl_vo_table,
+};
+
+/* define the default sysfs entries specific to the M24LR */
+static const struct m24lr_sys_entry m24lr_ctl_sys_entry_default_table[] = {
+ {.attr = __ATTR(unlock, 0200, NULL, m24lr04e_r_ctl_unlock_store)},
+ {.attr = __ATTR(new_pass, 0200, NULL, m24lr04e_r_ctl_newpass_store)},
+ {.reg_addr = 2324, .reg_size = 8,
+ .attr = __ATTR(uid, 0444, m24lr_ctl_show, NULL)},
+ {.reg_addr = 2334, .reg_size = 1,
+ .attr = __ATTR(mem_size, 0400, m24lr_ctl_show, NULL)},
+};
+
+/* Chip descriptor for M24LR04E-R variant */
+static const struct m24lr_ctl_chip m24lr04e_r_chip = {
+ .entries = m24lr_ctl_sys_entry_default_table,
+ .n_entries = ARRAY_SIZE(m24lr_ctl_sys_entry_default_table),
+ .n_sss_entries = 4,
+};
+
+/* Chip descriptor for M24LR16E-R variant */
+static const struct m24lr_ctl_chip m24lr16e_r_chip = {
+ .entries = m24lr_ctl_sys_entry_default_table,
+ .n_entries = ARRAY_SIZE(m24lr_ctl_sys_entry_default_table),
+ .n_sss_entries = 16,
+};
+
+/* Chip descriptor for M24LR64E-R variant */
+static const struct m24lr_ctl_chip m24lr64e_r_chip = {
+ .entries = m24lr_ctl_sys_entry_default_table,
+ .n_entries = ARRAY_SIZE(m24lr_ctl_sys_entry_default_table),
+ .n_sss_entries = 64,
+};
+
+static const struct i2c_device_id m24lr_ctl_ids[] = {
+ { "m24lr04e-r", (kernel_ulong_t)&m24lr04e_r_chip},
+ { "m24lr16e-r", (kernel_ulong_t)&m24lr16e_r_chip},
+ { "m24lr64e-r", (kernel_ulong_t)&m24lr64e_r_chip},
+ { }
+};
+MODULE_DEVICE_TABLE(i2c, m24lr_ctl_ids);
+
+static const struct of_device_id m24lr_ctl_of_match[] = {
+ { .compatible = "st,m24lr04e-r", .data = &m24lr04e_r_chip},
+ { .compatible = "st,m24lr16e-r", .data = &m24lr16e_r_chip},
+ { .compatible = "st,m24lr64e-r", .data = &m24lr64e_r_chip},
+ { }
+};
+MODULE_DEVICE_TABLE(of, m24lr_ctl_of_match);
+
+static int m24lr_ctl_gate_select(struct i2c_mux_core *muxc,
+ unsigned int chan_id)
+{
+ struct m24lr_ctl *ctl = i2c_mux_priv(muxc);
+
+ mutex_lock(&ctl->gate_lock);
+
+ return 0;
+}
+
+static int m24lr_ctl_gate_deselect(struct i2c_mux_core *muxc,
+ unsigned int chan_id)
+{
+ struct m24lr_ctl *ctl = i2c_mux_priv(muxc);
+
+ mutex_unlock(&ctl->gate_lock);
+
+ return 0;
+}
+
+/**
+ * m24lr_parse_le_value - Parse hex string and convert to little-endian binary
+ * @buf: Input string buffer (hex format)
+ * @reg_size: Size of the register in bytes (must be 1, 2, 4, or 8)
+ * @output: Output buffer to store the value in little-endian format
+ *
+ * Converts a hexadecimal string to a numeric value of the given register size
+ * and writes it in little-endian byte order into the provided buffer.
+ *
+ * Return: 0 on success, or negative error code on failure
+ */
+static int m24lr_parse_le_value(const char *buf, u32 reg_size, u8 *output)
+{
+ int err;
+
+ switch (reg_size) {
+ case 1: {
+ u8 tmp;
+
+ err = kstrtou8(buf, 16, &tmp);
+ if (!err)
+ *output = tmp;
+ break;
+ }
+ case 2: {
+ u16 tmp;
+
+ err = kstrtou16(buf, 16, &tmp);
+ if (!err)
+ *(__le16 *)output = cpu_to_le16(tmp);
+ break;
+ }
+ case 4: {
+ u32 tmp;
+
+ err = kstrtou32(buf, 16, &tmp);
+ if (!err)
+ *(__le32 *)output = cpu_to_le32(tmp);
+ break;
+ }
+ case 8: {
+ u64 tmp;
+
+ err = kstrtou64(buf, 16, &tmp);
+ if (!err)
+ *(__le64 *)output = cpu_to_le64(tmp);
+ break;
+ }
+ default:
+ err = -EINVAL;
+ }
+
+ return err;
+}
+
+/**
+ * m24lr_ctl_regmap_read - read data using regmap with retry on failure
+ * @regmap: regmap instance for the device
+ * @buf: buffer to store the read data
+ * @size: number of bytes to read
+ * @offset: starting register address
+ *
+ * Attempts to read a block of data from the device with retries and timeout.
+ * Some M24LR chips may transiently NACK reads (e.g., during internal write
+ * cycles), so this function retries with a short sleep until the timeout
+ * expires.
+ *
+ * Returns:
+ * Number of bytes read on success,
+ * -ETIMEDOUT if the read fails within the timeout window.
+ */
+static ssize_t m24lr_ctl_regmap_read(struct regmap *regmap, u8 *buf,
+ size_t size, unsigned int offset)
+{
+ int err;
+ unsigned long timeout, read_time;
+ ssize_t ret = -ETIMEDOUT;
+
+ timeout = jiffies + msecs_to_jiffies(M24LR_CTL_READ_TIMEOUT);
+ do {
+ read_time = jiffies;
+
+ err = regmap_bulk_read(regmap, offset, buf, size);
+ if (!err) {
+ ret = size;
+ break;
+ }
+
+ usleep_range(1000, 2000);
+ } while (time_before(read_time, timeout));
+
+ return ret;
+}
+
+/**
+ * m24lr_ctl_regmap_write - write data using regmap with retry on failure
+ * @regmap: regmap instance for the device
+ * @buf: buffer containing the data to write
+ * @size: number of bytes to write
+ * @offset: starting register address
+ *
+ * Attempts to write a block of data to the device with retries and a timeout.
+ * Some M24LR devices may NACK I2C writes while an internal write operation
+ * is in progress. This function retries the write operation with a short delay
+ * until it succeeds or the timeout is reached.
+ *
+ * Returns:
+ * Number of bytes written on success,
+ * -ETIMEDOUT if the write fails within the timeout window.
+ */
+static ssize_t m24lr_ctl_regmap_write(struct regmap *regmap, const u8 *buf,
+ size_t size, unsigned int offset)
+{
+ int err;
+ unsigned long timeout, write_time;
+ ssize_t ret = -ETIMEDOUT;
+
+ timeout = jiffies + msecs_to_jiffies(M24LR_CTL_WRITE_TIMEOUT);
+
+ do {
+ write_time = jiffies;
+
+ err = regmap_bulk_write(regmap, offset, buf, size);
+ if (!err) {
+ ret = size;
+ break;
+ }
+
+ usleep_range(1000, 2000);
+ } while (time_before(write_time, timeout));
+
+ return ret;
+}
+
+static ssize_t m24lr_ctl_read(struct m24lr_ctl *ctl, u8 *buf,
+ size_t size, unsigned int offset)
+{
+ int ret = 0;
+ struct regmap *regmap = ctl->regmap;
+
+ if (unlikely(!size))
+ return ret;
+
+ m24lr_ctl_gate_select(ctl->muxc, 0);
+ ret = m24lr_ctl_regmap_read(regmap, buf, size, offset);
+ m24lr_ctl_gate_deselect(ctl->muxc, 0);
+
+ return ret;
+}
+
+/**
+ * m24lr_ctl_write - write buffer to M24LR device with page alignment handling
+ * @ctl: pointer to driver context
+ * @buf: data buffer to write
+ * @size: number of bytes to write
+ * @offset: target register address in the device
+ *
+ * Writes data to the M24LR device using regmap, split into chunks no larger
+ * than page_size to respect device-specific write limitations (e.g., page
+ * size or I2C hold-time concerns). Each chunk is aligned to the page boundary
+ * defined by page_size.
+ *
+ * Returns:
+ * Total number of bytes written on success,
+ * A negative error code if any write fails.
+ */
+static ssize_t m24lr_ctl_write(struct m24lr_ctl *ctl, const u8 *buf,
+ size_t size, unsigned int offset)
+{
+ unsigned int n, next_sector;
+ struct regmap *regmap = ctl->regmap;
+ int err;
+ ssize_t ret = 0;
+
+ if (unlikely(!size))
+ return ret;
+
+ n = min(size, ctl->page_size);
+ next_sector = roundup(offset + 1, ctl->page_size);
+ if (offset + n > next_sector)
+ n = next_sector - offset;
+
+ m24lr_ctl_gate_select(ctl->muxc, 0);
+ while (n) {
+ err = m24lr_ctl_regmap_write(regmap, buf, n, offset);
+ if (IS_ERR_VALUE(err)) {
+ m24lr_ctl_gate_deselect(ctl->muxc, 0);
+ if (ret)
+ return ret;
+ else
+ return err;
+ }
+
+ offset += n;
+ size -= n;
+ ret += n;
+ n = min(size, ctl->page_size);
+ }
+ m24lr_ctl_gate_deselect(ctl->muxc, 0);
+
+ return ret;
+}
+
+/**
+ * m24lr04e_r_ctl_write_pass - Write password to M24LR043-R using secure format
+ * @ctl: Pointer to device control structure
+ * @buf: Input buffer containing hex-encoded password
+ * @count: Number of bytes in @buf
+ * @code: Operation code to embed between password copies
+ *
+ * This function parses a 4-byte password, encodes it in big-endian format,
+ * and constructs a 9-byte sequence of the form:
+ *
+ * [BE(password), code, BE(password)]
+ *
+ * The result is written to register 0x0900 (2304), which is the password
+ * register in M24LR04E-R chip.
+ *
+ * Return: Number of bytes written on success, or negative error code on failure
+ */
+static ssize_t m24lr04e_r_ctl_write_pass(struct m24lr_ctl *ctl, const char *buf,
+ size_t count, u8 code)
+{
+ int ret;
+ u32 pass;
+ __be32 be_pass;
+ u8 output[9];
+
+ ret = kstrtou32(buf, 16, &pass);
+ if (ret)
+ return ret;
+
+ be_pass = cpu_to_be32(pass);
+
+ memcpy(output, &be_pass, sizeof(be_pass));
+ output[4] = code;
+ memcpy(output + 5, &be_pass, sizeof(be_pass));
+
+ m24lr_ctl_gate_select(ctl->muxc, 0);
+ ret = m24lr_ctl_regmap_write(ctl->regmap, output, 9, 2304);
+ m24lr_ctl_gate_deselect(ctl->muxc, 0);
+
+ return ret;
+}
+
+static ssize_t m24lr04e_r_ctl_newpass_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct m24lr_ctl *ctl = i2c_get_clientdata(to_i2c_client(dev));
+
+ return m24lr04e_r_ctl_write_pass(ctl, buf, count, 7);
+}
+
+static ssize_t m24lr04e_r_ctl_unlock_store(struct device *dev,
+ struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct m24lr_ctl *ctl = i2c_get_clientdata(to_i2c_client(dev));
+
+ return m24lr04e_r_ctl_write_pass(ctl, buf, count, 9);
+}
+
+static ssize_t m24lr_ctl_store(struct device *dev, struct device_attribute *attr,
+ const char *buf, size_t count)
+{
+ struct m24lr_ctl *ctl = i2c_get_clientdata(to_i2c_client(dev));
+ struct m24lr_sys_entry *entry = to_sys_entry(attr);
+ unsigned int reg_size = entry->reg_size;
+ unsigned int reg_addr = entry->reg_addr;
+ u8 output[8];
+ int err = 0;
+
+ if (unlikely(!is_power_of_2(reg_size) || reg_size > 8)) {
+ dev_err(dev,
+ "Invalid register size: must be a power of 2 and <= 8 bytes (%u)\n",
+ reg_size);
+ return -EIO;
+ }
+
+ err = m24lr_parse_le_value(buf, reg_size, output);
+ if (err)
+ return err;
+
+ return m24lr_ctl_write(ctl, (u8 *)&output, reg_size, reg_addr);
+}
+
+static ssize_t m24lr_ctl_show(struct device *dev, struct device_attribute *attr,
+ char *buf)
+{
+ int ret;
+ u64 val;
+ __le64 input = 0;
+ struct m24lr_ctl *ctl = i2c_get_clientdata(to_i2c_client(dev));
+ struct m24lr_sys_entry *entry = to_sys_entry(attr);
+ unsigned int reg_addr = entry->reg_addr;
+ unsigned int reg_size = entry->reg_size;
+
+ if (unlikely(!is_power_of_2(reg_size) || reg_size > 8)) {
+ dev_dbg(dev,
+ "Invalid register size: must be a power of 2 and <= 8 bytes (%u)\n",
+ reg_size);
+ return -EIO;
+ }
+
+ ret = m24lr_ctl_read(ctl, (u8 *)&input, reg_size, reg_addr);
+ if (IS_ERR_VALUE(ret))
+ return ret;
+
+ if (ret != reg_size)
+ return -EIO;
+
+ switch (reg_size) {
+ case 1:
+ val = *(u8 *)&input;
+ break;
+ case 2:
+ val = le16_to_cpu((__le16)input);
+ break;
+ case 4:
+ val = le32_to_cpu((__le32)input);
+ break;
+ case 8:
+ val = le64_to_cpu((__le64)input);
+ break;
+ };
+
+ return scnprintf(buf, PAGE_SIZE, "%llx\n", val);
+}
+
+static const struct m24lr_ctl_chip *m24lr_ctl_get_chip(struct device *dev)
+{
+ const struct m24lr_ctl_chip *ret;
+ const struct i2c_device_id *id;
+
+ id = i2c_match_id(m24lr_ctl_ids, to_i2c_client(dev));
+
+ if (dev->of_node && of_match_device(m24lr_ctl_of_match, dev))
+ ret = of_device_get_match_data(dev);
+ else if (id)
+ ret = (void *)id->driver_data;
+ else
+ ret = acpi_device_get_match_data(dev);
+
+ return ret;
+}
+
+static int m24lr_ctl_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct regmap *regmap;
+ struct m24lr_ctl *ctl;
+ struct i2c_mux_core *muxc;
+ const struct m24lr_ctl_chip *chip;
+ struct m24lr_sys_entry *sss = NULL;
+ unsigned int page_size;
+ unsigned int n_sss;
+ int i, err;
+ u8 test;
+ struct device *dev = &client->dev;
+
+ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
+ return -EOPNOTSUPP;
+
+ chip = m24lr_ctl_get_chip(dev);
+ if (!chip)
+ return -ENODEV;
+
+ ctl = devm_kzalloc(dev, sizeof(struct m24lr_ctl), GFP_KERNEL);
+ if (!ctl)
+ return -ENOMEM;
+
+ err = device_property_read_u32(dev, "pagesize", &page_size);
+ if (!err) {
+ if (!is_power_of_2(page_size)) {
+ dev_warn(dev,
+ "Invalid pagesize lenngth %d (not power of 2); using default %d byte\n",
+ page_size, M24LR_CTL_PAGESIZE_DEFAULT);
+ page_size = M24LR_CTL_PAGESIZE_DEFAULT;
+ }
+ if (page_size > M24LR_CTL_PAGESIZE_LIMIT) {
+ dev_info(dev,
+ "pagesize %d exceeds limit; rounded down to %d\n",
+ page_size, M24LR_CTL_PAGESIZE_LIMIT);
+ page_size = M24LR_CTL_PAGESIZE_LIMIT;
+ }
+ } else { /* use the default */
+ page_size = M24LR_CTL_PAGESIZE_DEFAULT;
+ }
+
+ for (i = 0; i < chip->n_entries; i++) {
+ const struct device_attribute *attr = &chip->entries[i].attr;
+
+ err = device_create_file(dev, attr);
+ if (err)
+ dev_warn(dev,
+ "Failed to create sysfs entry '%s'\n",
+ attr->attr.name, err);
+ }
+
+ n_sss = chip->n_sss_entries;
+ if (n_sss) {
+ sss = devm_kzalloc(dev, n_sss * sizeof(struct m24lr_sys_entry),
+ GFP_KERNEL);
+ if (!sss)
+ return -ENOMEM;
+
+ for (i = 0; i < n_sss; i++) {
+ char *name = kasprintf(GFP_KERNEL, "sss%02d", i);
+
+ sss[i].reg_size = 1;
+ sss[i].reg_addr = i;
+ sss[i].attr.attr.name = name;
+ sss[i].attr.attr.mode = 0600;
+ sss[i].attr.show = m24lr_ctl_show;
+ sss[i].attr.store = m24lr_ctl_store;
+
+ err = device_create_file(dev, &sss[i].attr);
+ if (err)
+ dev_warn(dev,
+ "Failed to create sysfs entry '%s'\n",
+ name, err);
+ }
+ }
+
+ regmap = devm_regmap_init_i2c(client, &m24lr_ctl_regmap_conf);
+ if (IS_ERR(regmap)) {
+ err = PTR_ERR(regmap);
+ dev_err(dev, "Failed to init regmap (error: %d)\n", err);
+ return err;
+ }
+
+ muxc = i2c_mux_alloc(client->adapter, &client->dev, 1, 0, I2C_MUX_GATE,
+ m24lr_ctl_gate_select, m24lr_ctl_gate_deselect);
+ if (!muxc)
+ return -ENOMEM;
+
+ muxc->priv = ctl;
+
+ mutex_init(&ctl->gate_lock);
+ ctl->page_size = page_size;
+ ctl->regmap = regmap;
+ ctl->muxc = muxc;
+ ctl->n_sss_entries = n_sss;
+ ctl->sss_entries = sss;
+
+ i2c_set_clientdata(client, ctl);
+
+ err = m24lr_ctl_read(ctl, &test, 1, 0);
+ if (IS_ERR_VALUE(err))
+ return -ENODEV;
+
+ err = i2c_mux_add_adapter(muxc, 0, 0, 0);
+ if (err)
+ return err;
+
+ dev_info(&client->dev, "control interface initialized for %s\n",
+ client->name);
+
+ return 0;
+}
+
+static int remove(struct i2c_client *client)
+{
+ struct m24lr_ctl *ctl = i2c_get_clientdata(client);
+
+ i2c_mux_del_adapters(ctl->muxc);
+
+ return 0;
+}
+
+static struct i2c_driver m24lr_ctl_driver = {
+ .driver = {
+ .name = "m24lr_ctl",
+ .of_match_table = m24lr_ctl_of_match,
+ },
+ .probe = m24lr_ctl_probe,
+ .remove = remove,
+ .id_table = m24lr_ctl_ids,
+};
+module_i2c_driver(m24lr_ctl_driver);
+
+MODULE_AUTHOR("Abd-Alrhman Masalkhi");
+MODULE_DESCRIPTION("st m24lr control driver");
+MODULE_LICENSE("GPL");
--
2.43.0



Return-Path: <linux-kernel+bounces-669005-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id EE3BE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:13:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id D36DB189635C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:13:04 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8532023816D;
Sat, 31 May 2025 08:12:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="A0JkRh8J"
Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 34D4B236A9C;
Sat, 31 May 2025 08:12:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679147; cv=none; b=mN65GPE0gwtsYbnqPssFroZ3ZzqStSumB1dbw4xk42Xv59RLtta3IJDO4vh/+ZV6Oh+qj7OkWIkWOSHQzIHzb8wzcbNIVMaGSoSVDUaFc9mHMDEC0ktd5wV2n5fCSEVG4M99cUXUzZ7U9+HgbNboHWj5UebYrbHlLZsIRTtSBOw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679147; c=relaxed/simple;
bh=8HwClmr2xVr+CmAlR/0BETSpOdsTD5SUPbqo4egfRO8=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=HTLvZn4PAK5RS4eClhD0rNNrn3uhaB1VPNMgeNQalSSyGB88kp8Mj2UZHusMZ8UY9sy0u3hCfLNS2EMOMaCss0dSurOLnyrNKIH/Qi7YJHNnmg3H0PlarGFowGSkYxo0GbjcjOVfmFSRoVljg5ojTKrBfgvFrNAX3K17wsQrFkE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A0JkRh8J; arc=none smtp.client-ip=209.85.218.42
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-ad89333d603so512662566b.2;
Sat, 31 May 2025 01:12:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748679144; x=1749283944; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=BLmUijDcOQlZSQu4QReLwYm78Nqw60uUPGdDyhjoijs=;
b=A0JkRh8Jb1KpaGd75vGh2JBrIgMAQJmrfoB1V/8h8FrbHyTjx11r8ALqtHgaGKnTFB
oJ+ybMbokzj19VqiImjJDxoUhAzy3Y1dlRhAAojaZPkd6mtVEJZQe4fHfFZ0Sc5EBfFY
4QmchyZyuJYvERj5MtVZnmHWHgs61T4yKM7YgG7W+0/2mjxdN3K4qidZ+iJSXA1ky4IE
2ZCnqxf02k2i5gn1x76vLce0+ODgA884bRO/LS9P0ukvV7RzWekxHSY6sivSnJzAGVPk
iD2c3z85MZbiP0KP3CRptsptyi53bKSMhnllAMlkwLHhe0w5sZWQ78KsM3rk9Wp/4pMR
zYxw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748679144; x=1749283944;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=BLmUijDcOQlZSQu4QReLwYm78Nqw60uUPGdDyhjoijs=;
b=c/zFZdXLrzGbsGBJOOqp4pLZfmWYTXc9la3DDzJPEuotln0bXaXlg3lyi90fMNoIr0
2jvvgm2X2kSSdzKAbgApKEdd5KlFNU72as1RvXW1kR1fel9rEIF5BD81SQKcBlk9ve0o
BJ1tP42u7uirXGLnkjYcqgEWEf74NftQR8mcZSpjrThroMC1F9A5ybtXgctJMJgUSPbb
EnKI+mKNNBkfyubuqZATqF3wkbSDiSB/zO1PY9MZvxKVGE/rg63YXglcEIZSSazQiISo
5/azw92ydo4T+5N3sx7Ds0b2Pc37QH1DjzHe6cZ/EH5WU/+CvIaklFrujmVziHmnfMjb
oFZg==
X-Forwarded-Encrypted: i=1; AJvYcCXlvBxZt+x+cy3lhsFisijljgEImPbf11O5SpjxjxkfVauMWWElbIDqR7VyR9H/pWMMmCES3Gwj9DL+@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YwvVlgJIKgXBG9z/CRwzs4oijZtb2PAlekyKVbDS7nLap4msHTr
Y1Jqw4Dxg0AgwLIugn3mAGEuht93syxS+Q2ngkMpn35avlAHR4fy1z0KYz8HKn9Y
X-Gm-Gg: ASbGncv1qWbpHw31RIL6fRoDbP8nhcF8SJ4Mg8GjIKXWYm2LV82PwDUWQaVKAPDjY4X
eKgBdsChZFF/qNMyL52BxVylF8gVUOiKQqvyQ0JJK27UgXXr8UiliLg/A41E8Gdhrrti278tRHw
BcN/KPvyGFDSEvBI98OeMuEgmnJXPiK005bkL7MCfilM1De8SOo73ggM1C9j7ryWTg17YiW+E5v
rFQxWnas2wOrU6+djTe0wl9vOm6HSgVZuBfk3aWjhmp8NKk1MtI0KZcRLCAUusO2qHVMTCGf0Pe
Sl/O0CQlPo/zcxnchdlWXyLA+VsFmCqjLb8zjYnAwoSMMgAqpWsx0Ylkj6vdGbvN8rhfVcT+IrQ
Zjh4WCrTjWhZYnx9kCE9CvM5E99TEm6grMrY=
X-Google-Smtp-Source: AGHT+IFd3hUrqJwk5ZcKpsNdJCVoow7Qh+Yu4NNlytx4myRDGgV3XmKKhbk2CzvDlF84MpiOqZNunQ==
X-Received: by 2002:a17:907:7206:b0:ad8:8529:4f73 with SMTP id a640c23a62f3a-adb3243a979mr552944366b.49.1748679144154;
Sat, 31 May 2025 01:12:24 -0700 (PDT)
Received: from masalkhi.. (ip-109-43-114-141.web.vodafone.de. [109.43.114.141])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5e2bf05csm451352766b.113.2025.05.31.01.12.23
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 01:12:23 -0700 (PDT)
From: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx
Cc: robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx,
conor+dt@xxxxxxxxxx,
arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
abd.masalkhi@xxxxxxxxx
Subject: [PATCH 3/3] MAINTAINERS: Add entry for ST M24LR control driver
Date: Sat, 31 May 2025 08:11:59 +0000
Message-ID: <20250531081159.2007319-4-abd.masalkhi@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add a MAINTAINERS entry for the newly introduced sysfs control driver
supporting STMicroelectronics M24LR series RFID/NFC EEPROM chips.

This entry includes the driver source, Device Tree binding, and assigns
maintainership to the original contributor.

Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
---
MAINTAINERS | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index eb11c6f57500..f08975ac4d9f 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -23017,6 +23017,14 @@ W: http://www.st.com/
F: Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml
F: drivers/iio/imu/st_lsm6dsx/

+ST M24LR CONTROL DRIVER
+M: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
+L: linux-kernel@xxxxxxxxxxxxxxx
+L: devicetree@xxxxxxxxxxxxxxx
+S: Maintained
+F: Documentation/devicetree/bindings/misc/st,m24lr.yaml
+F: drivers/misc/m24lr_ctl.c
+
ST MIPID02 CSI-2 TO PARALLEL BRIDGE DRIVER
M: Benjamin Mugnier <benjamin.mugnier@xxxxxxxxxxx>
M: Sylvain Petinot <sylvain.petinot@xxxxxxxxxxx>
--
2.43.0



Return-Path: <linux-kernel+bounces-669006-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AB62B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:24:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 83423189F691
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:24:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 47FF6236A99;
Sat, 31 May 2025 08:24:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="O5Dzxm2c"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 6E054156F28;
Sat, 31 May 2025 08:24:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679850; cv=none; b=YtEf6lvwnJPRFV5W4B6jVvJ9UoLMr4+VEPwOp+E4W2Mi7X+BeDzzIstsHCJT4i+FCv3XbT3vcebuhlYvdWqZPhybVXCjf7LKyqod/5pQAUOg2skaPSfhG45Pxj9gqqJ8dJC5sfmX/o75oahFX+jTwPZtN2zhiCcB52MGkUvxymo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679850; c=relaxed/simple;
bh=ZrQNziy5pLMUUO6PL2SqYbWHdIJAq1F10Q0TiH0CoCw=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=Fnv+ZBmPQT9RLu5G3npPX+2w5MpgP3KTXG6nIBYWULvrRkkmgabBp7Cg7zbLbw9rxIJo1OVpOvhOWBUyuOrlRzdHzzTHpPswTm69jXwwY/+BNfKRSjzmkszp0fpR/GVHrgIkvVlRv3W36S/BxqRTWgN5P4VdgO5HxpoA1ZpnbTc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=O5Dzxm2c; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 529D8C4CEE3;
Sat, 31 May 2025 08:24:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748679849;
bh=ZrQNziy5pLMUUO6PL2SqYbWHdIJAq1F10Q0TiH0CoCw=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=O5Dzxm2cPtx0MF/lWLq9+XoLv991VI9Ru6+/bMjvus0trIbNJijNP0Q9O066u5rQQ
VPHXNvrGIuFA2zn2/xtp60TwZkB/T25b8/efolBaj4g+Ryx1jaDlgtorJAajG2e/bl
iwBWnv70CqNTBAd+kv3dlcC/nbHlQFwA6BxXInzk=
Date: Sat, 31 May 2025 10:24:07 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx,
arnd@xxxxxxxx
Subject: Re: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series
RFID/NFC chips
Message-ID: <2025053131-starship-radiantly-2cd8@gregkh>
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
<20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 08:11:58AM +0000, Abd-Alrhman Masalkhi wrote:
> Add a sysfs-based control driver for the STMicroelectronics M24LR
> series RFID/NFC EEPROM chips, such as the M24LR04E-R. It enables
> access to control registers for features such as password
> authentication, memory access, and device configuration. It also
> synchronize access to the device. (The EEPROM uses a separate driver;
> see the note below for details.)
>
> This driver provides only the control interface for M24LR chips. It
> also acts as an I2C mux (gate) for the EEPROM. Therefore, the EEPROM
> is represented as a child node in the Device Tree and is accessed
> through a separate driver (the standard 'at24' driver). This setup
> is possible because M24LR chips use two I2C addresses: one for
> accessing the system parameter sector, and another for accessing
> the EEPROM.
>
> Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
> ---
> drivers/misc/Kconfig | 15 +
> drivers/misc/Makefile | 1 +
> drivers/misc/m24lr_ctl.c | 677 +++++++++++++++++++++++++++++++++++++++
> 3 files changed, 693 insertions(+)
> create mode 100644 drivers/misc/m24lr_ctl.c

If you are adding sysfs files, you must have Documentation/ABI/ entries
to describe this new user/kernel api that you are creating and must
support for the next 20+ years, and to give us a hint as to how to
review this driver properly.

One minor comment below:

> + err = i2c_mux_add_adapter(muxc, 0, 0, 0);
> + if (err)
> + return err;
> +
> + dev_info(&client->dev, "control interface initialized for %s\n",
> + client->name);

When drivers work properly, they are quiet, no need to spam the kernel
log for a correctly working system.

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-669007-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D574241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:25:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id AEC2817EA73
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:25:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A02322376E6;
Sat, 31 May 2025 08:25:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=wanadoo.fr header.i=@wanadoo.fr header.b="O1YaF8uH"
Received: from out.smtpout.orange.fr (out-68.smtpout.orange.fr [193.252.22.68])
(using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29EDB156F28;
Sat, 31 May 2025 08:25:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.252.22.68
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679914; cv=none; b=pgy78RSIwktjBGyeM9pnC746juHofKCVMtWlxwlSowZe1Wq9DmvnpdctvJ9vPH4iIoFWmt3C2JBA8kjWiGJeE91lkeI2oSJTxDKHEHCyahbIGx+SH5HsecM7CBJGwfeh12zzLbE4i6oCjD2iZcS/3BdRBxZZBD2V7TTVJXbv6kc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679914; c=relaxed/simple;
bh=MjVWmkwHnmmJoIjCB1pi36wZ5EN1mRelCrY/of1Y8Zo=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=pF8071ebZNmVdNPDjbldiXALCiq1P7BzEycUCuw+Jj2PJZi0Q19Vai/GjXvqqTYwgu2XsBWrG21EUKYEait/DO2J1VIRJTuU6ngnu5xj42jEiMvlnlbF9vId6uZHB2fvmGY+I/L1rxLP5X+Qwvl0+zLU/4DOjdNBzLUeEx0hsx8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wanadoo.fr; spf=pass smtp.mailfrom=wanadoo.fr; dkim=pass (2048-bit key) header.d=wanadoo.fr header.i=@wanadoo.fr header.b=O1YaF8uH; arc=none smtp.client-ip=193.252.22.68
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=wanadoo.fr
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=wanadoo.fr
Received: from [172.16.82.72] ([124.33.176.97])
by smtp.orange.fr with ESMTPA
id LHWVuydzdyzRELHWWuLXT6; Sat, 31 May 2025 10:25:02 +0200
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wanadoo.fr;
s=t20230301; t=1748679902;
bh=2UxUsLSI9cJnAR9lAWYLYOx2TiTSnICm96fYVIit21k=;
h=Message-ID:Date:MIME-Version:Subject:To:From;
b=O1YaF8uH8KMmQL8HJjbQO/2aipJ//smiKL0+vM2wf3cW3QdSrisft6Oh7elCmy9Sd
accSbF8BRyxbg32gAJAghDsmclcieke7o5kWWJAxp5Z6GHHhU4MJEd66Yl5YF1FjBZ
NuKweDCtBAFn5bVoMR5LWJv/33Za/W5dpV6gN4lkhNcfyKh8PeMASLrudi1ENMUZPA
vnoBR6RtXTybzsQlC4rhN+mlbpr+0Jxluo1vhi0d1LW/AH8sA6kFjFAXqTeOJYaQ1K
hGab/SegtEMaRU9+lrTv9vp/oRSA92Ryi8M3hbMdIrZWhZ8aLVzK1N9ULcEll0Ik3+
ceZFtSmOKCQ7w==
X-ME-Helo: [172.16.82.72]
X-ME-Auth: bWFpbGhvbC52aW5jZW50QHdhbmFkb28uZnI=
X-ME-Date: Sat, 31 May 2025 10:25:02 +0200
X-ME-IP: 124.33.176.97
Message-ID: <10ed3ec2-ac66-494a-9d3f-bf2df459ebc0@xxxxxxxxxx>
Date: Sat, 31 May 2025 17:24:58 +0900
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v6 4/6] can: netlink: add interface for CAN-FD Transmitter
Delay Compensation (TDC)
To: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
Cc: Marc Kleine-Budde <mkl@xxxxxxxxxxxxxx>, linux-can@xxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
=?UTF-8?Q?Stefan_M=C3=A4tje?= <Stefan.Maetje@xxxxxx>
References: <20210918095637.20108-1-mailhol.vincent@xxxxxxxxxx>
<20210918095637.20108-5-mailhol.vincent@xxxxxxxxxx>
<CAMuHMdVEBLoG084rhBtELcFO+3cA9_UrZrUfspOeLNo80zyb9g@xxxxxxxxxxxxxx>
Content-Language: en-US
From: Vincent Mailhol <mailhol.vincent@xxxxxxxxxx>
Autocrypt: addr=mailhol.vincent@xxxxxxxxxx; keydata=
xjMEZluomRYJKwYBBAHaRw8BAQdAf+/PnQvy9LCWNSJLbhc+AOUsR2cNVonvxhDk/KcW7FvN
LFZpbmNlbnQgTWFpbGhvbCA8bWFpbGhvbC52aW5jZW50QHdhbmFkb28uZnI+wrIEExYKAFoC
GwMFCQp/CJcFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AWIQTtj3AFdOZ/IOV06OKrX+uI
bbuZwgUCZx41XhgYaGtwczovL2tleXMub3BlbnBncC5vcmcACgkQq1/riG27mcIYiwEAkgKK
BJ+ANKwhTAAvL1XeApQ+2NNNEwFWzipVAGvTRigA+wUeyB3UQwZrwb7jsQuBXxhk3lL45HF5
8+y4bQCUCqYGzjgEZx4y8xIKKwYBBAGXVQEFAQEHQJrbYZzu0JG5w8gxE6EtQe6LmxKMqP6E
yR33sA+BR9pLAwEIB8J+BBgWCgAmFiEE7Y9wBXTmfyDldOjiq1/riG27mcIFAmceMvMCGwwF
CQPCZwAACgkQq1/riG27mcJU7QEA+LmpFhfQ1aij/L8VzsZwr/S44HCzcz5+jkxnVVQ5LZ4B
ANOCpYEY+CYrld5XZvM8h2EntNnzxHHuhjfDOQ3MAkEK
In-Reply-To: <CAMuHMdVEBLoG084rhBtELcFO+3cA9_UrZrUfspOeLNo80zyb9g@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Geert,

On 30/05/2025 at 20:44, Geert Uytterhoeven wrote:
> Hi Vincent,
>
> Thanks for your patch, which is now commit d99755f71a80df33
> ("can: netlink: add interface for CAN-FD Transmitter Delay
> Compensation (TDC)") in v5.16.
>
> On Sat, 18 Sept 2021 at 20:23, Vincent Mailhol
> <mailhol.vincent@xxxxxxxxxx> wrote:
>> Add the netlink interface for TDC parameters of struct can_tdc_const
>> and can_tdc.
>>
>> Contrary to the can_bittiming(_const) structures for which there is
>> just a single IFLA_CAN(_DATA)_BITTMING(_CONST) entry per structure,
>> here, we create a nested entry IFLA_CAN_TDC. Within this nested entry,
>> additional IFLA_CAN_TDC_TDC* entries are added for each of the TDC
>> parameters of the newly introduced struct can_tdc_const and struct
>> can_tdc.
>>
>> For struct can_tdc_const, these are:
>> IFLA_CAN_TDC_TDCV_MIN
>> IFLA_CAN_TDC_TDCV_MAX
>> IFLA_CAN_TDC_TDCO_MIN
>> IFLA_CAN_TDC_TDCO_MAX
>> IFLA_CAN_TDC_TDCF_MIN
>> IFLA_CAN_TDC_TDCF_MAX
>>
>> For struct can_tdc, these are:
>> IFLA_CAN_TDC_TDCV
>> IFLA_CAN_TDC_TDCO
>> IFLA_CAN_TDC_TDCF
>>
>> This is done so that changes can be applied in the future to the
>> structures without breaking the netlink interface.
>>
>> The TDC netlink logic works as follow:
>>
>> * CAN_CTRLMODE_FD is not provided:
>> - if any TDC parameters are provided: error.
>>
>> - TDC parameters not provided: TDC parameters unchanged.
>>
>> * CAN_CTRLMODE_FD is provided and is false:
>> - TDC is deactivated: both the structure and the
>> CAN_CTRLMODE_TDC_{AUTO,MANUAL} flags are flushed.
>>
>> * CAN_CTRLMODE_FD provided and is true:
>> - CAN_CTRLMODE_TDC_{AUTO,MANUAL} and tdc{v,o,f} not provided: call
>> can_calc_tdco() to automatically decide whether TDC should be
>> activated and, if so, set CAN_CTRLMODE_TDC_AUTO and uses the
>> calculated tdco value.
>
> This is not reflected in the code (see below).

Let me first repost what I wrote but this time using numerals and letters
instead of the bullet points:

The TDC netlink logic works as follow:

1. CAN_CTRLMODE_FD is not provided:
a) if any TDC parameters are provided: error.

b) TDC parameters not provided: TDC parameters unchanged.

2. CAN_CTRLMODE_FD is provided and is false:
a) TDC is deactivated: both the structure and the
CAN_CTRLMODE_TDC_{AUTO,MANUAL} flags are flushed.

3. CAN_CTRLMODE_FD provided and is true:
a) CAN_CTRLMODE_TDC_{AUTO,MANUAL} and tdc{v,o,f} not provided: call
can_calc_tdco() to automatically decide whether TDC should be
activated and, if so, set CAN_CTRLMODE_TDC_AUTO and uses the
calculated tdco value.

b) CAN_CTRLMODE_TDC_AUTO and tdco provided: set
CAN_CTRLMODE_TDC_AUTO and use the provided tdco value. Here,
tdcv is illegal and tdcf is optional.

c) CAN_CTRLMODE_TDC_MANUAL and both of tdcv and tdco provided: set
CAN_CTRLMODE_TDC_MANUAL and use the provided tdcv and tdco
value. Here, tdcf is optional.

d) CAN_CTRLMODE_TDC_{AUTO,MANUAL} are mutually exclusive. Whenever
one flag is turned on, the other will automatically be turned
off. Providing both returns an error.

e) Combination other than the one listed above are illegal and will
return an error.

You can double check that it is the exact same as before.

> By default, a CAN-FD interface comes up in TDC-AUTO mode (if supported),
> using a calculated tdco value. However, enabling "tdc-mode auto"
> explicitly from userland requires also specifying an explicit tdco
> value. I.e.
>
> ip link set can0 type can bitrate 500000 dbitrate 8000000 fd on
^^^^^
Here:

- CAN_CTRLMODE_FD provided and is true: so we are in close 3.

- CAN_CTRLMODE_TDC_{AUTO,MANUAL} and tdc{v,o,f} not provided: so we *are* in
sub-clause a)

3.a) tells that the framework will decide whether or not TDC should be
activated, and if activated, will set the TDCO.

> gives "can <FD,TDC-AUTO>" and "tdcv 0 tdco 3", while

Looks perfectly coherent with 3.a)

Note that with lower data bitrate, the framework might have decided to set TDC off.

> ip link set can0 type can bitrate 500000 dbitrate 8000000 fd on
> tdc-mode auto

This time:

- CAN_CTRLMODE_FD provided and is true: so we are in close 3.

- CAN_CTRLMODE_TDC_AUTO is provided, we are *not* in sub-clause a)

- tdco is not provided.

No explicit clauses matches this pattern so it defaults to the last
sub-clause: e), which means an error.

> gives:
>
> tdc-mode auto: RTNETLINK answers: Operation not supported

Looks perfectly coherent with 3.e)

> unless I add an explicit "tdco 3".

Yes, if you provide tcdo 3, then you are under 3.b).

> According to your commit description, this is not the expected behavior?
> Thanks!

Looking back to my commit, I admit that the explanation is convoluted and could
be hard to digest, but I do not see a mismatch between the description and the
behaviour.


Yours sincerely,
Vincent Mailhol



Return-Path: <linux-kernel+bounces-669008-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7F53341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:25:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 4D8729E2266
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:25:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6BC5D23816D;
Sat, 31 May 2025 08:25:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="iZEMTPPi";
dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b="IaLvCFRC"
Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55])
(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 A22C7235063;
Sat, 31 May 2025 08:25:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=193.142.43.55
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679916; cv=none; b=VNBaCfmyXV/jte8lpuxvt3xGrzFMPODhV7cUuVU9i95gCg8TTvSoPfzshiw0CLJN/0sofgLFRtq/xuFKu2hOwKQ/ZAqD7aN/CRSF4UXc273MOCRuM9sZsGHt8CtDVoyVMx/8uxoVxwgEeJet5igy9S8rnq4xj5SPyjLjRfnoxSU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679916; c=relaxed/simple;
bh=S281ecTmyndUMmjUYK2jNjX+90LVDd4UGPaTkJIYADk=;
h=Date:From:To:Subject:Cc:In-Reply-To:References:MIME-Version:
Message-ID:Content-Type; b=Tf7ouqxEyGrNtwjMX2cUwGWZ1Ic2PwnDAM5syGiTgtyR6JyRg3At63+wm/noitGSH2mMVfuyUYU62HjQ/aKrGwtUMiVKWLNnFrlkqyY4L8jHil4e8xTKV3aAbMG9Q0uhyYPjLVbUR+LkvZzuQrvCYsck9fq2tCXz6FOzo+6aKkE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de; spf=pass smtp.mailfrom=linutronix.de; dkim=pass (2048-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=iZEMTPPi; dkim=permerror (0-bit key) header.d=linutronix.de header.i=@linutronix.de header.b=IaLvCFRC; arc=none smtp.client-ip=193.142.43.55
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linutronix.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linutronix.de
Date: Sat, 31 May 2025 08:25:11 -0000
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de;
s=2020; t=1748679912;
h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date:
message-id:message-id:to:to:cc:cc:mime-version:mime-version:
content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=WWdp9jVmfLleahcnLH0hvf9/lXuG1BJJk6Y02LkIsCA=;
b=iZEMTPPi8IS/JexYkwaO0k/RZOG8FevOPZeswhwlsf4K2jyd7Zo9pS81V9tYfQuNNq6RI8
oQvLZEB0j3BEEYL/61bs+TFDGdUPd5caHW4DDS1y1WMgkUKrSdqZAQMKDh9CNTBny5xp+S
q1qyUXThoIwEBhi8BXxl92wwLUjxZl9WOdFx8PNLzxYYuA3/wgZCxoj5krgs42/8N7W/69
dt/Jq61AvJA619KcFtzn64TACNxPxI/gMuhezpW23ab/+gM3PObmhErAtkGHeSowhmB9zX
Za5dCAkPD83wkUJKj/omUgXmbGzrkNElzq60gT9mQ70Qk3zgRQjGbsu/EyuGVw==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de;
s=2020e; t=1748679912;
h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date:
message-id:message-id:to:to:cc:cc:mime-version:mime-version:
content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=WWdp9jVmfLleahcnLH0hvf9/lXuG1BJJk6Y02LkIsCA=;
b=IaLvCFRC80vDrXDqYcFNCZvHmlxqSx1eQaip0y+FlOqn+JdePFymNplwQQ1meenWI6V6DD
dMKbeFN5ku2CFiCA==
From: "tip-bot2 for Dapeng Mi" <tip-bot2@xxxxxxxxxxxxx>
Sender: tip-bot2@xxxxxxxxxxxxx
Reply-to: linux-kernel@xxxxxxxxxxxxxxx
To: linux-tip-commits@xxxxxxxxxxxxxxx
Subject: [tip: perf/urgent] perf/x86/intel: Fix incorrect MSR index
calculations in intel_pmu_config_acr()
Cc: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>,
Kan Liang <kan.liang@xxxxxxxxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
x86@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
In-Reply-To: <20250529080236.2552247-2-dapeng1.mi@xxxxxxxxxxxxxxx>
References: <20250529080236.2552247-2-dapeng1.mi@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Message-ID: <174867991161.406.9289935407362158037.tip-bot2@tip-bot2>
Robot-ID: <tip-bot2@xxxxxxxxxxxxx>
Robot-Unsubscribe:
Contact <mailto:tglx@xxxxxxxxxxxxx> to get blacklisted from these emails
Precedence: bulk
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following commit has been merged into the perf/urgent branch of tip:

Commit-ID: 86aa94cd50b138be0dd872b0779fa3036e641881
Gitweb: https://git.kernel.org/tip/86aa94cd50b138be0dd872b0779fa3036e641881
Author: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
AuthorDate: Thu, 29 May 2025 08:02:36
Committer: Ingo Molnar <mingo@xxxxxxxxxx>
CommitterDate: Sat, 31 May 2025 10:05:16 +02:00

perf/x86/intel: Fix incorrect MSR index calculations in intel_pmu_config_acr()

The MSR offset calculations in intel_pmu_config_acr() are buggy.

To calculate fixed counter MSR addresses in intel_pmu_config_acr(),
the HW counter index "idx" is subtracted by INTEL_PMC_IDX_FIXED.

This leads to the ACR mask value of fixed counters to be incorrectly
saved to the positions of GP counters in acr_cfg_b[], e.g.

For fixed counter 0, its ACR counter mask should be saved to
acr_cfg_b[32], but it's saved to acr_cfg_b[0] incorrectly.

Fix this issue.

[ mingo: Clarified & improved the changelog. ]

Fixes: ec980e4facef ("perf/x86/intel: Support auto counter reload")
Signed-off-by: Dapeng Mi <dapeng1.mi@xxxxxxxxxxxxxxx>
Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx>
Reviewed-by: Kan Liang <kan.liang@xxxxxxxxxxxxxxx>
Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Link: https://lore.kernel.org/r/20250529080236.2552247-2-dapeng1.mi@xxxxxxxxxxxxxxx
---
arch/x86/events/intel/core.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index 4662833..741b229 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -2900,6 +2900,7 @@ static void intel_pmu_config_acr(int idx, u64 mask, u32 reload)
{
struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
int msr_b, msr_c;
+ int msr_offset;

if (!mask && !cpuc->acr_cfg_b[idx])
return;
@@ -2907,19 +2908,20 @@ static void intel_pmu_config_acr(int idx, u64 mask, u32 reload)
if (idx < INTEL_PMC_IDX_FIXED) {
msr_b = MSR_IA32_PMC_V6_GP0_CFG_B;
msr_c = MSR_IA32_PMC_V6_GP0_CFG_C;
+ msr_offset = x86_pmu.addr_offset(idx, false);
} else {
msr_b = MSR_IA32_PMC_V6_FX0_CFG_B;
msr_c = MSR_IA32_PMC_V6_FX0_CFG_C;
- idx -= INTEL_PMC_IDX_FIXED;
+ msr_offset = x86_pmu.addr_offset(idx - INTEL_PMC_IDX_FIXED, false);
}

if (cpuc->acr_cfg_b[idx] != mask) {
- wrmsrl(msr_b + x86_pmu.addr_offset(idx, false), mask);
+ wrmsrl(msr_b + msr_offset, mask);
cpuc->acr_cfg_b[idx] = mask;
}
/* Only need to update the reload value when there is a valid config value. */
if (mask && cpuc->acr_cfg_c[idx] != reload) {
- wrmsrl(msr_c + x86_pmu.addr_offset(idx, false), reload);
+ wrmsrl(msr_c + msr_offset, reload);
cpuc->acr_cfg_c[idx] = reload;
}
}


Return-Path: <linux-kernel+bounces-669009-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DD22941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:25:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0258A17FA30
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:25:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 84E1A238C21;
Sat, 31 May 2025 08:25:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="EQh7NMA/"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 BB485238C09;
Sat, 31 May 2025 08:25:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748679918; cv=none; b=UlNlv3HHKbe3yOhpNi/NhhgbQK2u9SH8QRU1qi5/x5o0Sy3pVA6s+fVVE8PxQtLb0yq5wh6Do6IizOJetmV85MjGKh/Aypvm1Vdl9qdcHbiuVv7XLLZB+LSqBiSlbAu4KrL2OCkaIlacW5fArelEupo3rSck2lg8oytdSMJW7AY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748679918; c=relaxed/simple;
bh=rhHKUNdyzw5MLziyvEadGtZqK25u232WPPQdd6M7D0A=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=jf/wW0chE/7XwKyy+3smgxNJeXaUw10YWzvP9JI+4vR3wpO2yXWHzXFyPbAi1yFzOo1YD42U+PNDafsqZW7lcilZwuQFyu9Rc8fuoN+hlNgTFmTQjgmGqLph/xMd1PvJxXSOJcxXOKa16yVc+VHT/x4ykL3f+/sa1cc3xxqbkhM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=EQh7NMA/; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id F1C21C4CEF0;
Sat, 31 May 2025 08:25:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748679918;
bh=rhHKUNdyzw5MLziyvEadGtZqK25u232WPPQdd6M7D0A=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=EQh7NMA/eryeGDayMdjJOvBeWC36T79QjXZ0u5Zh8npFqf6GlhBwMCPKmIspkM0S8
7p/QsIZ/RjNZXBD2BJNrxfzSIaxD4VQ8rYAAsNTEZZAwRbWwPFSp8UzDgTqDNXG+Zt
jQZn7i7AKTj0mOOpK/vyszUcp2NuETxZj65R5NiI=
Date: Sat, 31 May 2025 10:25:15 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx,
arnd@xxxxxxxx
Subject: Re: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series
RFID/NFC chips
Message-ID: <2025053149-karate-stooge-8bc1@gregkh>
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
<20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 08:11:58AM +0000, Abd-Alrhman Masalkhi wrote:
> + return scnprintf(buf, PAGE_SIZE, "%llx\n", val);

Please use sysfs_emit() for writing data out in sysfs show callbacks.

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-669010-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C907E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:28:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 36F38189E3B4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:28:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B62FE2376E4;
Sat, 31 May 2025 08:27:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iJ2JfGT4"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 0182F22D9F8;
Sat, 31 May 2025 08:27:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748680070; cv=none; b=GWxlZI7Ylg58pTMGEny7xKyzRgmnOgtANny62g9H+PD6vy4NKM29q9SAnY76Nc5+FPK7d4Da1iLSG2UNzUHu43PcvDSCoIJD1HmHJBQMUU7VlqXaCqHv50Goug+3WN5+BExRQzfY4t87iEGUCyG9ZV0tfFVgM/UN+JZ0PwxWOGk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748680070; c=relaxed/simple;
bh=YV7jAOWu5f2uMd0mrJSv6w/Tw0RCII65EBVJz164jz8=;
h=Mime-Version:Content-Type:Date:Message-Id:Subject:From:To:Cc:
References:In-Reply-To; b=A1Mq6eHRzoYN+KfDqzzQ6Xl4zLcGrua2N/QHlqIg0tPlMvlPo6aGYzLkVLaTl+XoHeRc6mMJd7IcAWC3rf4QVVirJAseLV8BhC4K9cgb98U5wwEiTRs7BsTbj91liq67V606JjDczzBhSpWR1/YQ2VrLFGRZ0OMF0wAH3zbGeDE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iJ2JfGT4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7E941C4CEE3;
Sat, 31 May 2025 08:27:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748680069;
bh=YV7jAOWu5f2uMd0mrJSv6w/Tw0RCII65EBVJz164jz8=;
h=Date:Subject:From:To:Cc:References:In-Reply-To:From;
b=iJ2JfGT4BkPHgrhmvWfX1d06XnMTYiysW/CRPYMsQ6BDq37xVznYfbiPttwY0cgdO
DelfKC2Moizs2E5EgdMBzPHCT0/H8O5j4AQFtr3HC4aO7XvC9MIyZ2MhnAdYQCd+dd
i/JZ5LzMXAxzHaey9rQIPa1EONP69dPf2dPPQ6a+dkt3cDQzhpynuVqvUWbeCmFfVS
44b+rMK4JMCEebVGZcyPJ0OMGDZxizsBHsieCIKJVoPq+enLW9tUB2uQQxppQ9/bQx
0WFmwNbh2F2EM6QOia9jIk0B/yFRN4su8oxsH+dyHgrblGyanP+vxkQl32Ir+z5bKt
C7Ka0pPOHjrjg==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 10:27:44 +0200
Message-Id: <DAA7CJOUJPNL.F7UH9KD8JANF@xxxxxxxxxx>
Subject: Re: [PATCH 6/7] rust: miscdevice: expose the parent device as
&Device<Bound>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Danilo Krummrich" <dakr@xxxxxxxxxx>, <gregkh@xxxxxxxxxxxxxxxxxxx>,
<rafael@xxxxxxxxxx>, <ojeda@xxxxxxxxxx>, <alex.gaynor@xxxxxxxxx>,
<boqun.feng@xxxxxxxxx>, <gary@xxxxxxxxxxx>, <bjorn3_gh@xxxxxxxxxxxxxx>,
<benno.lossin@xxxxxxxxx>, <a.hindborg@xxxxxxxxxx>, <aliceryhl@xxxxxxxxxx>,
<tmgross@xxxxxxxxx>, <chrisi.schrefl@xxxxxxxxx>
Cc: <rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-7-dakr@xxxxxxxxxx>
In-Reply-To: <20250530142447.166524-7-dakr@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
> @@ -227,11 +229,21 @@ fn drop(self: Pin<&mut Self>) {
> }
> }
> =20
> +/// The arguments passed to the file operation callbacks of a [`MiscDevi=
ceRegistration`].
> +pub struct MiscArgs<'a, T: MiscDevice> {
> + /// The [`Device`] representation of the `struct miscdevice`.
> + pub device: &'a Device,
> + /// The parent [`Device`] of [`Self::device`].
> + pub parent: Option<&'a Device<Bound>>,
> + /// The `RegistrationData` passed to [`MiscDeviceRegistration::regis=
ter`].
> + pub data: &'a T::RegistrationData,

Here I would also just use `T`, remove the `MiscDevice` bound and then
use `MiscArgs<'_, Self::RegistrationData>` below.

> +}
> +
> /// Trait implemented by the private data of an open misc device.
> #[vtable]
> pub trait MiscDevice: Sized {
> /// What kind of pointer should `Self` be wrapped in.
> - type Ptr: ForeignOwnable + Send + Sync;
> + type Ptr: Send + Sync;

There is no info about this change in the commit message. Why are we
changing this? This seems a bit orthogonal to the other change, maybe do
it in a separate patch?

Also `Ptr` doesn't make much sense for the name, since now that the
`ForeignOwnable` bound is gone, I could set this to `Self` and then have
access to `&Self` in the callbacks.

Would that also make sense to use as a general change? So don't store
`Self::Ptr`, but `Self` directly?

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669011-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A639341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:30:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 8BF22189E882
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:30:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7C8E22376F2;
Sat, 31 May 2025 08:30:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="XWk0lN8D"
Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B55372608;
Sat, 31 May 2025 08:30:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748680220; cv=none; b=SmKz/00/I6VIiBY5UYw3LYrdNpSRftHpqHUDHdCF2eOepZ4R7IL5UIjCZbAimdOV49GYguAPiNFLKMmBvhJyBY4NSCjL2e4MXJw/93zfl2of5Su9gBepOm4+plJbI1FXZvMSB5drYpTYlAZ2qa7s0P4iEBQzW9GlhP0ZdvCymrY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748680220; c=relaxed/simple;
bh=SXSXDy40WaxtHCF6QED8ZGmEZ1lJdaaHt0UvQ6KDqhw=;
h=From:Date:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=uON9H7qNivlXG8JgCTwj8y31fMzI2zhDP0ZaYPKg/wa3zfrBmasYpPgkGR0Zg77gfkjAm6/XZRLke/YXZ7hzfiTJ2QtOZ+Q+TpkhG3vmETPODdP3L/t8xpDDCTseitDlAaeTQfya6az6TPR8qRRsmclJfehEGA2vl3JArS8DREs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=XWk0lN8D; arc=none smtp.client-ip=209.85.218.54
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-ad88d77314bso490411766b.1;
Sat, 31 May 2025 01:30:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748680217; x=1749285017; darn=vger.kernel.org;
h=in-reply-to:content-disposition:mime-version:references:message-id
:subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to;
bh=jPvaR31j5liYWmKFXeknzL+qjeQFmOq6Nv/68VW+G58=;
b=XWk0lN8DycXYhFhufFUwRy1csVb3MxJJbtHfaoOY6ncKc2k7POZ+xk41USKEyVfO4I
LhuDULfe+lMtq0c+b2yg2Gr4FkkwOAUSrneyd59umw4PzNZFrAHFOEp/KCybMghKW1Mi
FBWzwIyrDgqvpyQaSNXts1mghn1xsF2SNnUGMnNHwffP0A8LtiCQdhPg/gKtvWG6BpND
a0bFxWBVxZ1NdqE+wYcUcXXbeCvoUdZ8itRwZr3I+eZXihm9RNV0YN878v/ZyCG1vHlM
tQqKilxi3hEk8EnaQVlcBBcJVsFnBW8EdgWPG7IKkhSDifBRSUwenKCDJCD/j66qUQxn
Df6Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748680217; x=1749285017;
h=in-reply-to:content-disposition:mime-version:references:message-id
:subject:cc:to:date:from:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=jPvaR31j5liYWmKFXeknzL+qjeQFmOq6Nv/68VW+G58=;
b=rMMa4R9ti//z5z4RvV9kvHHRIZLZt5M6UM2uv2VnAu2OnofFFudYm1VrkAOT6lcyIJ
/ejSeGxoTV1X42FemIGLtuP9tNEKKg0tjgyyxtglq0uhSdjxJWHAH6zeynHz9rNLvSsM
HbjcMoDs4ivwc/+kfo8TTYYO3hpn5Vt+mvAOvzjqUzIxdMAPwGSFVeAA3/8Gq0Q9c3x9
Rv4a61j2hMbTghq0gZapFej2GJQsoud80c1vLNKGMveAP+VuCH9h3+a5ox/zkShlQfcW
DcZ1ZJV2PzM6CdJD5FW2rKBtDn5cfRdIaX/dB6u0BIPqB1sncWCSj0I942IlRT3YZqM/
75zQ==
X-Forwarded-Encrypted: i=1; AJvYcCVQDTGz3oOAfQJ8rEo8ZvfbXwv9g2JSsgsCXzju9Hgfmp2MvyxzNF2i2WehwfJWyy0bkp34x+6v3/pUC3Wj@xxxxxxxxxxxxxxx, AJvYcCW360cCqtuml/cRAbUQrmKoDC4go6YM+xYLp1l1x0wadM/chAFSFdEMmyQPYc5k2mifYCQ=@vger.kernel.org
X-Gm-Message-State: AOJu0YzqAFx6W7RjdV0Jl1rcyT4fPTbUEGIU/amTjoG7K0wRLTVk3QUt
MpJkP8hDVsqvqg8bRIj4J8aHtf+4FWeIXCLkcrbWvxdPXFIZI3i6vqtg
X-Gm-Gg: ASbGncs2J8fuh4Ea5xgSAqgyDmbQtHTkrlaYk9mgPtS7M5pxbPg+PwCnBmYYbSR3MkG
kMZS/vlUYceuoggnJ+r/cn5Q5WR+5OjaP7vRdkTisvacOvCxEE6SwwDdyBUF0JCyRCq6ReWH2yG
/3f7F1OkUhUOM/srY8tPuliqR+xo4h7O73dNvzM2CtJCdk9gGxPxxrKrcrA0nzi32S7aIeBzR1o
MO32A8lc+vM2+lrqd53Tu/BjDl4ziEAUYX5sMJPxUBwi1iXdmcJrLA7CU03Kj+rXZaE1SDhsk2T
GYbQcdlkTJvluQKRMnn/nPZDUmI6rTJTW8BQVC0SdIXSaZvcSw==
X-Google-Smtp-Source: AGHT+IGotvBseJAMbLvgO9Xrpod7ZwJRyG5Td7SuGZoIXVLVp59qbNcJuN7+yc4STOYDZfZx+msYYQ==
X-Received: by 2002:a17:907:9721:b0:ad2:4c38:5a22 with SMTP id a640c23a62f3a-adb3243dd27mr541887966b.51.1748680217139;
Sat, 31 May 2025 01:30:17 -0700 (PDT)
Received: from krava ([176.74.159.170])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-60566c2a762sm2899876a12.4.2025.05.31.01.30.16
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 01:30:16 -0700 (PDT)
From: Jiri Olsa <olsajiri@xxxxxxxxx>
X-Google-Original-From: Jiri Olsa <jolsa@xxxxxxxxxx>
Date: Sat, 31 May 2025 10:30:15 +0200
To: Tao Chen <chen.dylane@xxxxxxxxx>
Cc: ast@xxxxxxxxxx, daniel@xxxxxxxxxxxxx, andrii@xxxxxxxxxx,
martin.lau@xxxxxxxxx, eddyz87@xxxxxxxxx, song@xxxxxxxxxx,
yonghong.song@xxxxxxxxx, john.fastabend@xxxxxxxxx,
kpsingh@xxxxxxxxxx, sdf@xxxxxxxxxxx, qmo@xxxxxxxxxx,
bpf@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH bpf-next 1/3] bpf: Add cookie to raw_tp bpf_link_info
Message-ID: <aDq-F9nK4K74ubjo@krava>
References: <20250529165759.2536245-1-chen.dylane@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250529165759.2536245-1-chen.dylane@xxxxxxxxx>
X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=no
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 12:57:57AM +0800, Tao Chen wrote:
> After commit 68ca5d4eebb8 ("bpf: support BPF cookie in raw tracepoint
> (raw_tp, tp_btf) programs"), we can show the cookie in bpf_link_info
> like kprobe etc.
>
> Signed-off-by: Tao Chen <chen.dylane@xxxxxxxxx>
> ---
> include/uapi/linux/bpf.h | 1 +
> kernel/bpf/syscall.c | 1 +
> tools/include/uapi/linux/bpf.h | 1 +
> 3 files changed, 3 insertions(+)
>
> diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
> index 07ee73cdf9..7d0ad5c2b6 100644
> --- a/include/uapi/linux/bpf.h
> +++ b/include/uapi/linux/bpf.h
> @@ -6644,6 +6644,7 @@ struct bpf_link_info {
> struct {
> __aligned_u64 tp_name; /* in/out: tp_name buffer ptr */
> __u32 tp_name_len; /* in/out: tp_name buffer len */

there's hole now in here, let's add something like

__u32 reserved;

jirka


> + __u64 cookie;
> } raw_tracepoint;
> struct {
> __u32 attach_type;
> diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
> index 9794446bc8..1c3dbe44ac 100644
> --- a/kernel/bpf/syscall.c
> +++ b/kernel/bpf/syscall.c
> @@ -3687,6 +3687,7 @@ static int bpf_raw_tp_link_fill_link_info(const struct bpf_link *link,
> return -EINVAL;
>
> info->raw_tracepoint.tp_name_len = tp_len + 1;
> + info->raw_tracepoint.cookie = raw_tp_link->cookie;
>
> if (!ubuf)
> return 0;
> diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
> index 07ee73cdf9..7d0ad5c2b6 100644
> --- a/tools/include/uapi/linux/bpf.h
> +++ b/tools/include/uapi/linux/bpf.h
> @@ -6644,6 +6644,7 @@ struct bpf_link_info {
> struct {
> __aligned_u64 tp_name; /* in/out: tp_name buffer ptr */
> __u32 tp_name_len; /* in/out: tp_name buffer len */
> + __u64 cookie;
> } raw_tracepoint;
> struct {
> __u32 attach_type;
> --
> 2.43.0
>


Return-Path: <linux-kernel+bounces-669012-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0481141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:41:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id B28911BA10D2
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:41:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8AF7D238159;
Sat, 31 May 2025 08:41:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="i3bZKa+/"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 742AE22D4EB;
Sat, 31 May 2025 08:41:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748680883; cv=none; b=LYcX+zbmTU/XI01QkuCk/mtMTQMd6SE02ZjMgM4l40KSpH6+tOgI0NlpZhSn+mMoy4FLKdQ59wbqhGOKJV2vlKzJWshBLYJF1j87OjAiXrdrjuGEPT1Pqz0aYjaKHmSDjwK0kzWRQrsic2Y3bhRZA9Yl+mxTNNKt2jjyKqA8meM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748680883; c=relaxed/simple;
bh=799jq6gFPy5XEnSwpA8+a+qrM154nWLIKmOn7fwmLLM=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=vBHrfle7UTf4/JkvtUqgrc7tDTMJ6iTcunmLxGe473WcQm/rYTGYgxAvT3aVJ8vYtBW6GztZSZyJmxika86wHXVT5erekiYyfbLo/ehRPSqGgspf5GqNe1pSJnaMaJzdhwKohQjH/pp/3898xncUhSBzGa81ELV3+W/AhCjlR6I=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=i3bZKa+/; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748680271;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=jll3XeKX99pWqsCTGFwx78r84HFnraGM4zNForfuar4=;
b=i3bZKa+/0lAKv8gR00vmayeK2aJiwvdrqTxJxAaXTEBLkXOwvbc+zORX/B0oIwems0YMAN
tu5Sv+Sn0Pl2VSVzj8GwBCls8lvt8IS8RO+QwBCo8vYYPt+Ib5EHQmEFIACe0fAeXvF+NY
oiW/bKeKsUqSJdNcoLoAa9ErZ/nl78A=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject:
Re: [PATCH batadv 1/5] batman-adv: store hard_iface as iflink private data
Date: Sat, 31 May 2025 10:31:07 +0200
Message-ID: <4075596.ElGaqSPkdT@sven-desktop>
In-Reply-To:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart6691312.GXAFRqVoOG";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart6691312.GXAFRqVoOG
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 10:31:07 +0200
Message-ID: <4075596.ElGaqSPkdT@sven-desktop>
MIME-Version: 1.0

On Monday, 19 May 2025 22:46:28 CEST Matthias Schiffer wrote:
> By passing the hard_iface to netdev_master_upper_dev_link() as private
> data, we can iterate over hardifs of a mesh interface more efficiently
> using netdev_for_each_lower_private*() (instead of iterating over the
> global hardif list). In addition, this will enable resolving a hardif
> from its netdev using netdev_lower_dev_get_private() and getting rid of
> the global list altogether in the following patches.
>
> A similar approach can be seen in the bonding driver.
>
> Signed-off-by: Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
> ---
> net/batman-adv/bat_algo.h | 1 -
> net/batman-adv/bat_iv_ogm.c | 25 +++++++--------------
> net/batman-adv/bat_v.c | 6 ++---
> net/batman-adv/bat_v_elp.c | 7 ++----
> net/batman-adv/bat_v_ogm.c | 12 ++++------
> net/batman-adv/hard-interface.c | 39 ++++++++++++---------------------
> net/batman-adv/main.c | 6 ++---
> net/batman-adv/mesh-interface.c | 6 ++---
> net/batman-adv/multicast.c | 6 ++---
> net/batman-adv/netlink.c | 6 ++---
> net/batman-adv/originator.c | 6 ++---
> net/batman-adv/send.c | 6 ++---
> 12 files changed, 43 insertions(+), 83 deletions(-)

Looks mostly good - I just want to modify the includes slightly (if it is ok for you):

index c165dede..ba5bea4c 100644
--- a/net/batman-adv/bat_algo.c
+++ b/net/batman-adv/bat_algo.c
@@ -14,6 +14,7 @@
#include <linux/skbuff.h>
#include <linux/stddef.h>
#include <linux/string.h>
+#include <linux/types.h>
#include <net/genetlink.h>
#include <net/netlink.h>
#include <uapi/linux/batman_adv.h>
diff --git a/net/batman-adv/bat_algo.h b/net/batman-adv/bat_algo.h
index 898c71b5..cdd1ccfe 100644
--- a/net/batman-adv/bat_algo.h
+++ b/net/batman-adv/bat_algo.h
@@ -11,7 +11,6 @@

#include <linux/netlink.h>
#include <linux/skbuff.h>
-#include <linux/types.h>

extern char batadv_routing_algo[];

diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c
index 56b6216f..8df2dcc2 100644
--- a/net/batman-adv/bat_v_elp.c
+++ b/net/batman-adv/bat_v_elp.c
@@ -35,7 +35,6 @@
#include <net/cfg80211.h>
#include <uapi/linux/batadv_packet.h>

-#include "bat_algo.h"
#include "bat_v_ogm.h"
#include "hard-interface.h"
#include "log.h"
diff --git a/net/batman-adv/bat_v_ogm.c b/net/batman-adv/bat_v_ogm.c
index 5c955ac2..cab83d37 100644
--- a/net/batman-adv/bat_v_ogm.c
+++ b/net/batman-adv/bat_v_ogm.c
@@ -22,7 +22,6 @@
#include <linux/mutex.h>
#include <linux/netdevice.h>
#include <linux/random.h>
-#include <linux/rculist.h>
#include <linux/rcupdate.h>
#include <linux/skbuff.h>
#include <linux/slab.h>
@@ -33,7 +32,6 @@
#include <linux/workqueue.h>
#include <uapi/linux/batadv_packet.h>

-#include "bat_algo.h"
#include "hard-interface.h"
#include "hash.h"
#include "log.h"
diff --git a/net/batman-adv/main.c b/net/batman-adv/main.c
index af1e644b..d41ce799 100644
--- a/net/batman-adv/main.c
+++ b/net/batman-adv/main.c
@@ -27,7 +27,6 @@
#include <linux/module.h>
#include <linux/netdevice.h>
#include <linux/printk.h>
-#include <linux/rculist.h>
#include <linux/rcupdate.h>
#include <linux/skbuff.h>
#include <linux/slab.h>
diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c
index 35d7ecee..5afb1b70 100644
--- a/net/batman-adv/netlink.c
+++ b/net/batman-adv/netlink.c
@@ -20,7 +20,6 @@
#include <linux/if_vlan.h>
#include <linux/init.h>
#include <linux/limits.h>
-#include <linux/list.h>
#include <linux/minmax.h>
#include <linux/netdevice.h>
#include <linux/netlink.h>
diff --git a/net/batman-adv/originator.c b/net/batman-adv/originator.c
index 5e4168f8..c13e05d3 100644
--- a/net/batman-adv/originator.c
+++ b/net/batman-adv/originator.c
@@ -29,7 +29,6 @@
#include <linux/workqueue.h>
#include <uapi/linux/batadv_packet.h>

-#include "bat_algo.h"
#include "distributed-arp-table.h"
#include "fragmentation.h"
#include "gateway_client.h"
diff --git a/net/batman-adv/send.c b/net/batman-adv/send.c
index 788fcfd1..a9929948 100644
--- a/net/batman-adv/send.c
+++ b/net/batman-adv/send.c
@@ -21,7 +21,6 @@
#include <linux/list.h>
#include <linux/netdevice.h>
#include <linux/printk.h>
-#include <linux/rculist.h>
#include <linux/rcupdate.h>
#include <linux/skbuff.h>
#include <linux/slab.h>

Thanks,
Sven
--nextPart6691312.GXAFRqVoOG
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDq+SwAKCRBND3cr0xT1
y3drAQC++qUIxjP/5zx4qVUE0mPTESzY622rxoVLLdoMxpjWmwEAxQfC0Aj4rQZN
/JLZqkC1kiWXGPIigQVmK6Q+O3cnYQw=
=0ODT
-----END PGP SIGNATURE-----

--nextPart6691312.GXAFRqVoOG--





Return-Path: <linux-kernel+bounces-669013-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 595BD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:47:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 4D4C34A1478
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:47:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1715A2367A3;
Sat, 31 May 2025 08:47:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=digikod.net header.i=@digikod.net header.b="MHgeFy2R"
Received: from smtp-190b.mail.infomaniak.ch (smtp-190b.mail.infomaniak.ch [185.125.25.11])
(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 A94A3BE5E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:47:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.25.11
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748681245; cv=none; b=uWZzl84LWdKg+TqxSqbyLGbbq1evhgMwzl9kg2mMlscKdG6wSFyxMJe9lKL6NZQ6wZDBmOu8c/eimVwY5egk22YC4w60jHa9g5WenjOu1MaQr035QA1u48dtvs6k0cw0DEz73RsqspTPgooHsRXQLWk/CMlc2sisM7brfM8S2KI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748681245; c=relaxed/simple;
bh=sYZi93/yPJO5ZF2q+Up42YMESADN6on5s2Xc31n4Fx0=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=J3scparPV9psH4VK/gFpXyT6BijmREzo0CbDgllWsAGNb9K5Qyn0pNiDrSzg24A87GYZe1SdlkAqvX39OG1ZhESy0ZzoPNPefhOEAtv32hYqFmEf19j56FbY2bwNNucDncoQfaWBBmp2YYeXKxxCtiNLYrCscEVIVsKmhVULs48=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=digikod.net; spf=pass smtp.mailfrom=digikod.net; dkim=pass (1024-bit key) header.d=digikod.net header.i=@digikod.net header.b=MHgeFy2R; arc=none smtp.client-ip=185.125.25.11
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=digikod.net
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=digikod.net
Received: from smtp-4-0001.mail.infomaniak.ch (smtp-4-0001.mail.infomaniak.ch [10.7.10.108])
by smtp-4-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4b8YRt6G19zLCp;
Sat, 31 May 2025 10:39:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=digikod.net;
s=20191114; t=1748680746;
bh=y9YddgqwimNGVoqG1X5gr78LYtkCAqMi4STBWfmUjbE=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=MHgeFy2RsPFQaevV4qfTD4etw8+KjwqF5O9K9KIIRslX+FZuZZL3A9ukvGh6Sir6L
qf7IXhkZ+lyJSXGs18geyFYGwx1uF7GnNXGjrRJu83/2+pIHjk2XWGJOjH1aXmou6h
EwTkDw21Ciw/s8+snsFhgd/2UysyFgtH7Q+rFTRM=
Received: from unknown by smtp-4-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4b8YRs69dkz43W;
Sat, 31 May 2025 10:39:05 +0200 (CEST)
Date: Sat, 31 May 2025 10:39:02 +0200
From: =?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?= <mic@xxxxxxxxxxx>
To: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Cc: Song Liu <song@xxxxxxxxxx>, Jan Kara <jack@xxxxxxx>,
bpf@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-security-module@xxxxxxxxxxxxxxx, kernel-team@xxxxxxxx, andrii@xxxxxxxxxx, eddyz87@xxxxxxxxx,
ast@xxxxxxxxxx, daniel@xxxxxxxxxxxxx, martin.lau@xxxxxxxxx, brauner@xxxxxxxxxx,
kpsingh@xxxxxxxxxx, mattbobrowski@xxxxxxxxxx, amir73il@xxxxxxxxx, repnop@xxxxxxxxxx,
jlayton@xxxxxxxxxx, josef@xxxxxxxxxxxxxx, gnoack@xxxxxxxxxx,
Tingmao Wang <m@xxxxxxxxxx>
Subject: Re: [PATCH bpf-next 3/4] bpf: Introduce path iterator
Message-ID: <20250531.nie3chiew9Nu@xxxxxxxxxxx>
References: <20250529183536.GL2023217@ZenIV>
<CAPhsuW7LFP0ddFg_oqkDyO9s7DZX89GFQBOnX=4n5mV=VCP5oA@xxxxxxxxxxxxxx>
<20250529201551.GN2023217@ZenIV>
<CAPhsuW5DP1x_wyzT1aYjpj3hxUs4uB8vdK9iEp=+i46QLotiOg@xxxxxxxxxxxxxx>
<20250529214544.GO2023217@ZenIV>
<CAPhsuW5oXZVEaMwNpSF74O7wZ_f2Qr_44pu9L4_=LBwdW5T9=w@xxxxxxxxxxxxxx>
<20250529231018.GP2023217@ZenIV>
<CAPhsuW6-J+NUe=jX51wGVP=nMFjETu+1LUTsWZiBa1ckwq7b+w@xxxxxxxxxxxxxx>
<20250530.euz5beesaSha@xxxxxxxxxxx>
<20250530184348.GQ2023217@ZenIV>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20250530184348.GQ2023217@ZenIV>
X-Infomaniak-Routing: alpha
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 07:43:48PM +0100, Al Viro wrote:
> On Fri, May 30, 2025 at 02:20:39PM +0200, Mickaël Salaün wrote:
>
> > Without access to mount_lock, what would be the best way to fix this
> > Landlock issue while making it backportable?
> >
> > >
> > > If we update path_parent in this patchset with choose_mountpoint(),
> > > and use it in Landlock, we will close this race condition, right?
> >
> > choose_mountpoint() is currently private, but if we add a new filesystem
> > helper, I think the right approach would be to expose follow_dotdot(),
> > updating its arguments with public types. This way the intermediates
> > mount points will not be exposed, RCU optimization will be leveraged,
> > and usage of this new helper will be simplified.
>
> IMO anything that involves struct nameidata should remain inside
> fs/namei.c - something public might share helpers with it, but that's
> it. We had more than enough pain on changes in there, and I'm pretty
> sure that we are not done yet; in the area around atomic_open, but not
> only there. Parts of that are still too subtle, IMO - it got a lot
> better over the years, but I would really prefer to avoid the need
> to bring more code into analysis for any further massage.
>
> Are you sure that follow_dotdot() behaviour is what you really want?
>
> Note that it's not quite how the pathname resolution works. There we
> have the result of follow_dotdot() fed to step_into(), and that changes
> things. Try this:
>
> mkdir /tmp/foo
> mkdir /tmp/foo/bar
> cd /tmp/foo/bar
> mount -t tmpfs none /tmp/foo
> touch /tmp/foo/x
> ls -Uldi . .. /tmp/foo ../.. /tmp ../x
>
> and think about the results. Traversing .. is basically "follow_up as much
> as possible, then to parent, then follow_down as much as possible" and
> the last part (../x) explains why we do it that way.
>
> Which objects would you want to iterate through when dealing with the
> current directory in the experiment above? Simulation of pathwalk
> would have the root of overmounting filesystem as the second object
> visited; follow_dotdot() would yield the directory overmounted by
> that instead.
>
> I'm not saying that either behaviour is right for your case - just that
> they are not identical and it's something that needs to be consciously
> chosen.

Thanks, this helps. I didn't though about this semantic difference. We
don't want the handle_dots() semantic (which call follow_dotdot() and
step_into()), only the (backward) pathwalk one which is equivalent to
follow_dotdot(). I'll add Landlock tests for this specific scenario.


Return-Path: <linux-kernel+bounces-669014-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 77C4741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:49:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id CE7EE7A646B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:48:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5CB392367A3;
Sat, 31 May 2025 08:49:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=digikod.net header.i=@digikod.net header.b="jq0/Bi8+"
Received: from smtp-1908.mail.infomaniak.ch (smtp-1908.mail.infomaniak.ch [185.125.25.8])
(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 C7FEEBE5E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:49:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.25.8
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748681381; cv=none; b=o14rxztNh+OY2ajJRAJceBSebGMljSjfk8X7zYd2/WiXCAd8Nemv61b78pA7d7+klLXiR51mlIkPco/y00ixCOe5vugPIAKk60ZKhOfco0yD2I9k7uGZMclP+R8qPEqg8x5qoiiqWRsIw7cPWOQiIJeElMNFH7S7DSpfT0oRHvA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748681381; c=relaxed/simple;
bh=nTTvmO1cQS3F/SnYQlmbLHNx64KvT3g8uZsDvQW8aiM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=gY77unrc5intHQGT+Ca23qDY+qPADA7uUelASrjqufcoq+gqDC7tI++2an2V0mHYrKKvWv3S+D1acL2FQBSTxlzQYz/eVQci4rVTcHBbJMw76y5wu+7TH5+TABMFihrU3AGEVkg30v3viuh9JMoKQi459BmuMRBoHLv6i8TxPWE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=digikod.net; spf=pass smtp.mailfrom=digikod.net; dkim=pass (1024-bit key) header.d=digikod.net header.i=@digikod.net header.b=jq0/Bi8+; arc=none smtp.client-ip=185.125.25.8
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=digikod.net
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=digikod.net
Received: from smtp-3-0001.mail.infomaniak.ch (unknown [IPv6:2001:1600:4:17::246c])
by smtp-3-3000.mail.infomaniak.ch (Postfix) with ESMTPS id 4b8YTg2G0szT3S;
Sat, 31 May 2025 10:40:39 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=digikod.net;
s=20191114; t=1748680839;
bh=aDOO32soUx4ivBS0LOVNv8TRKSSec0lWi7HQfvCT8e8=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=jq0/Bi8+MOFNrvGElUvgAA7b3qMIfXmvs2twjH4EckrdBmPRh0NkPqeDhqTtGHKWj
dGyOIb/Vwxx8I3F21FPxR3kwyxqfjiZ94ePth/mpbkFxdUsG20sLI1so0QWMf8sbiq
B1ff02L/uAlw5HdyIhkoa527/lgUTp03qqNX0lbU=
Received: from unknown by smtp-3-0001.mail.infomaniak.ch (Postfix) with ESMTPA id 4b8YTf4WfDzSmT;
Sat, 31 May 2025 10:40:38 +0200 (CEST)
Date: Sat, 31 May 2025 10:40:37 +0200
From: =?utf-8?Q?Micka=C3=ABl_Sala=C3=BCn?= <mic@xxxxxxxxxxx>
To: Song Liu <song@xxxxxxxxxx>
Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>, Jan Kara <jack@xxxxxxx>,
bpf@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-security-module@xxxxxxxxxxxxxxx, kernel-team@xxxxxxxx, andrii@xxxxxxxxxx, eddyz87@xxxxxxxxx,
ast@xxxxxxxxxx, daniel@xxxxxxxxxxxxx, martin.lau@xxxxxxxxx, brauner@xxxxxxxxxx,
kpsingh@xxxxxxxxxx, mattbobrowski@xxxxxxxxxx, amir73il@xxxxxxxxx, repnop@xxxxxxxxxx,
jlayton@xxxxxxxxxx, josef@xxxxxxxxxxxxxx, gnoack@xxxxxxxxxx,
Tingmao Wang <m@xxxxxxxxxx>
Subject: Re: [PATCH bpf-next 3/4] bpf: Introduce path iterator
Message-ID: <20250531.NaQu4eic9ieN@xxxxxxxxxxx>
References: <20250529183536.GL2023217@ZenIV>
<CAPhsuW7LFP0ddFg_oqkDyO9s7DZX89GFQBOnX=4n5mV=VCP5oA@xxxxxxxxxxxxxx>
<20250529201551.GN2023217@ZenIV>
<CAPhsuW5DP1x_wyzT1aYjpj3hxUs4uB8vdK9iEp=+i46QLotiOg@xxxxxxxxxxxxxx>
<20250529214544.GO2023217@ZenIV>
<CAPhsuW5oXZVEaMwNpSF74O7wZ_f2Qr_44pu9L4_=LBwdW5T9=w@xxxxxxxxxxxxxx>
<20250529231018.GP2023217@ZenIV>
<CAPhsuW6-J+NUe=jX51wGVP=nMFjETu+1LUTsWZiBa1ckwq7b+w@xxxxxxxxxxxxxx>
<20250530.euz5beesaSha@xxxxxxxxxxx>
<CAPhsuW5U-nPk4MFdZSeBNds0qEHjQZrC=c5q+AGNpsKiveC2wA@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAPhsuW5U-nPk4MFdZSeBNds0qEHjQZrC=c5q+AGNpsKiveC2wA@xxxxxxxxxxxxxx>
X-Infomaniak-Routing: alpha
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 11:55:22AM -0700, Song Liu wrote:
> On Fri, May 30, 2025 at 5:20�AM Mickaël Salaün <mic@xxxxxxxxxxx> wrote:
> [...]
> > >
> > > If we update path_parent in this patchset with choose_mountpoint(),
> > > and use it in Landlock, we will close this race condition, right?
> >
> > choose_mountpoint() is currently private, but if we add a new filesystem
> > helper, I think the right approach would be to expose follow_dotdot(),
> > updating its arguments with public types. This way the intermediates
> > mount points will not be exposed, RCU optimization will be leveraged,
> > and usage of this new helper will be simplified.
>
> I think it is easier to add a helper similar to follow_dotdot(), but not with
> nameidata. follow_dotdot() touches so many things in nameidata, so it
> is better to keep it as-is. I am having the following:

I was not suggesting to expose nameidata (only struct path and int), but
yes, a standalone helper is OK and it will not tie it to the current
follow_dotdot() internals.

>
> /**
> * path_parent - Find the parent of path

Because we update @path, I'd suggest a name containing "walk", something
like path_walk_parent().

> * @path: input and output path.
> * @root: root of the path walk, do not go beyond this root. If @root is
> * zero'ed, walk all the way to real root.
> *
> * Given a path, find the parent path. Replace @path with the parent path.
> * If we were already at the real root or a disconnected root, @path is
> * not changed.

We should explain that the semantic is the same as follow_dotdot(), but
not follow_dots().

> *
> * Returns:
> * true - if @path is updated to its parent.
> * false - if @path is already the root (real root or @root).
> */
> bool path_parent(struct path *path, const struct path *root)
> {
> struct dentry *parent;
>
> if (path_equal(path, root))
> return false;
>
> if (unlikely(path->dentry == path->mnt->mnt_root)) {
> struct path p;
>
> if (!choose_mountpoint(real_mount(path->mnt), root, &p))
> return false;
> path_put(path);
> *path = p;
> return true;
> }
>
> if (unlikely(IS_ROOT(path->dentry)))
> return false;
>
> parent = dget_parent(path->dentry);
> if (unlikely(!path_connected(path->mnt, parent))) {
> dput(parent);
> return false;
> }
> dput(path->dentry);
> path->dentry = parent;
> return true;
> }
> EXPORT_SYMBOL_GPL(path_parent);
>
> And for Landlock, it is simply:
>
> if (path_parent(&walker_path, &root))
> continue;
>
> if (unlikely(IS_ROOT(walker_path.dentry))) {
> /*
> * Stops at disconnected or real root directories.
> * Only allows access to internal filesystems
> * (e.g. nsfs, which is reachable through
> * /proc/<pid>/ns/<namespace>).
> */
> if (walker_path.mnt->mnt_flags & MNT_INTERNAL) {
> allowed_parent1 = true;
> allowed_parent2 = true;
> }
> break;
> }
>
> Does this look right?

Yes, thanks.

Al, Christian, would that be OK to backport this helper to fix the
Landlock issue? If yes, Song could you please put it in in a place that
could be easily backported down to 5.15 e.g., just after handle_dots()?

>
> Thanks,
> Song
>


Return-Path: <linux-kernel+bounces-669015-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CF15A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:52:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3DBCB4A1F1C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:52:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C55F023817A;
Sat, 31 May 2025 08:52:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OfGgbmJX"
Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B16F20F081;
Sat, 31 May 2025 08:52:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748681528; cv=none; b=fB8NVB7wjKfDRAf7imm7S/RP+z/BOb4w7EScoe2v+4eBvVt5NIW1qDgvxF3B0Ke7lwcRhTIZTHszaa7SMznCEAnkr+WL0te99ZKaaaN0NP/uiB+xb6SDIsBPvEiB76j14baH/okzaT91yL7Galvc8tvAOX6k/WD2/DHQlum+8dU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748681528; c=relaxed/simple;
bh=REe60zlbqeu01BOJVePubuQZLx8kofDHdn8NxkEDkks=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=Vblc3wbrUEjjHjqzV0r1WzwN+Y04r5kHgA7p1rpgEGfALyDD48/6jV5Myyh12mZ2vckt07UartyglysDrMVQ9vsSW/SIDfUHdTRTLkMvzULWzmcviqeaybNt3KzaEZ+JAhDBiMBENdYcXg7EORI2DSuOecixdJpJe8UnhPo9vwI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OfGgbmJX; arc=none smtp.client-ip=209.85.210.171
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-747abb3cd0bso2271810b3a.1;
Sat, 31 May 2025 01:52:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748681526; x=1749286326; darn=vger.kernel.org;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:from:to:cc:subject:date:message-id:reply-to;
bh=REe60zlbqeu01BOJVePubuQZLx8kofDHdn8NxkEDkks=;
b=OfGgbmJXuMm78Aj4iSx6+p9leW+M+/20Imo7fyu9h5grrRJQGMyvrSu27mzEPEeJvI
VaC1+o3Yxu8JAA3GK2DDXcAC7Yb6NsvikX+krkuFi1a/vmXs4U0YlOJhO2z2vjVbIOtk
DBTpCMqE+DzNIWOYC5/5whoK5SFkcFuYDZVqYCwbpw6Yce1WJpG6o+verNUaXTE9nz33
3ShA0cfM4XqNyKbAC7cJc9tFPA8O90kT0tXoclQkFSH9XTEFFpWnnwDYV0ag78gYQ5BS
EghIYqx7y+J8dNBj4bRTlH+PxXMlACtzn/KOXBOvBqsL37JmlvyGHTpyo7vhSlu1xyLw
gP1A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748681526; x=1749286326;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=REe60zlbqeu01BOJVePubuQZLx8kofDHdn8NxkEDkks=;
b=iJvlp402iaAbL+80dN4DcdB+Zh3EA2A7KQP6lFqqkBClhqWG85/whBGgexqyrp4Br4
I5Ndy6EpkxAFI9IpQauggCUdoetyb6JTIMxVbJJDQhdbv1vu4/bbquDf04ST8pby2rXu
6fy8PrjyjD+qGDWc1jZ+Efr1ASkNiDa3FIWAsasj+fSyUSynePvKoHWDTEx5S4zt+jyF
VkqWoUp+WYC5zePNVQgedWVGroXUIL8c8anLEx/KjOWMH5XKoFG1RRwqEOjbH2/qbmkZ
Yv1MQzKNoUsjXwbtkcGD3WsDrQZSAoX3T3gZNcTcyJPnwcLk1Q9lAZ0usa89I+byuMQm
D0mQ==
X-Forwarded-Encrypted: i=1; AJvYcCVKpWehzOVBvFXctH/1P+wU/oTGWz52v2QNhdR7ecT3uwlmo4kEC1x4JLju7JilWP9yYY8=@vger.kernel.org, AJvYcCVsgL/LP2e6Cj3eaKEo8IEBOMirbOgg/hkkpLk3S8RoZqhYyLUpHJZ+2uMxao3ZkMrvQnn9Vbhe0/4MYoRJ@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Ywt73fvdcFU73J7YW2qQwRucRFBBSaDAyrFmcGdBj5jT/PHitHR
PWbnHGZzVBPu76pVrDOXVGQzalCrYk5LotzbgKQEb/cT6bIgTah96JYH
X-Gm-Gg: ASbGnctsX+3POIXwDxLtWP552ax8BTj54CDhc7DvUVvLNCU8LLRxvZCu33WYUOptsq8
YOSXBx5Z6bc3nC5XmKM8HbEEmaLqUOtqZlJt+qUzXKDMbt+HWG3yX2IWGsj4Eu2UCNUr5VfKGmL
k3X7ekkl9D0J8ZLF1f2dlNi20f/gU4tPXE9YdYm0BJIp27FMM4P3J4ygpj5+f2mNe+0tVhDIHd2
tuWJWAHnBiHWf1MFJqLEtsviMkLwOwazJyaPL3x5Md9K75ZwGnEh/JSc9qPgq8EDL+zXOrHFXtV
SfNCqz09hDLr33FhP4b2841CeelhenzPYsc5g011PnbH7xMAv+RfR3KTtkS2tSMjrkvR3ObDbE4
t721rVXI9FZ4JmH8/+y03nqGG/AThdzbwYDcnZslb
X-Google-Smtp-Source: AGHT+IFrK8g6/dGJ+qH8DK2puY7/mPl63dYSmPTZk3WE+0FNPHkZ94c11mvWpcO4rQ5k5aBxw+s1VQ==
X-Received: by 2002:a17:903:1a0b:b0:234:71c1:d34f with SMTP id d9443c01a7336-234f67a7c06mr152428215ad.8.1748681525735;
Sat, 31 May 2025 01:52:05 -0700 (PDT)
Received: from ?IPV6:2001:ee0:4f0e:fb30:af83:9564:6a79:4f18? ([2001:ee0:4f0e:fb30:af83:9564:6a79:4f18])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506cd362fsm39298485ad.116.2025.05.31.01.52.00
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 01:52:05 -0700 (PDT)
Message-ID: <ef4ac528-3f91-4004-b47b-e758a5712d28@xxxxxxxxx>
Date: Sat, 31 May 2025 15:51:57 +0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH net-next v2 2/2] selftests: net: add XDP socket tests
for virtio-net
To: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx>
Cc: netdev@xxxxxxxxxxxxxxx, "Michael S. Tsirkin" <mst@xxxxxxxxxx>,
Jason Wang <jasowang@xxxxxxxxxx>, Xuan Zhuo <xuanzhuo@xxxxxxxxxxxxxxxxx>,
=?UTF-8?Q?Eugenio_P=C3=A9rez?= <eperezma@xxxxxxxxxx>,
Andrew Lunn <andrew+netdev@xxxxxxx>, "David S. Miller"
<davem@xxxxxxxxxxxxx>, Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>, Paolo Abeni <pabeni@xxxxxxxxxx>,
Alexei Starovoitov <ast@xxxxxxxxxx>, Daniel Borkmann <daniel@xxxxxxxxxxxxx>,
Jesper Dangaard Brouer <hawk@xxxxxxxxxx>,
John Fastabend <john.fastabend@xxxxxxxxx>, virtualization@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, bpf@xxxxxxxxxxxxxxx
References: <20250527161904.75259-1-minhquangbui99@xxxxxxxxx>
<20250527161904.75259-3-minhquangbui99@xxxxxxxxx> <aDhCfxHo3M5dxlpH@boxer>
<fe162eed-fd44-4c18-a541-8243ccfc4252@xxxxxxxxx> <aDmaT1cmoRa6PaqK@boxer>
Content-Language: en-US
From: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
In-Reply-To: <aDmaT1cmoRa6PaqK@boxer>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/30/25 18:45, Maciej Fijalkowski wrote:
> On Thu, May 29, 2025 at 09:29:14PM +0700, Bui Quang Minh wrote:
>> On 5/29/25 18:18, Maciej Fijalkowski wrote:
>>> On Tue, May 27, 2025 at 11:19:04PM +0700, Bui Quang Minh wrote:
>>>> This adds a test to test the virtio-net rx when there is a XDP socket
>>>> bound to it. There are tests for both copy mode and zerocopy mode, both
>>>> cases when XDP program returns XDP_PASS and XDP_REDIRECT to a XDP socket.
>>>>
>>>> Signed-off-by: Bui Quang Minh <minhquangbui99@xxxxxxxxx>
>>> Hi Bui,
>>>
>>> have you considered adjusting xskxceiver for your needs? If yes and you
>>> decided to go with another test app then what were the issues around it?
>>>
>>> This is yet another approach for xsk testing where we already have a
>>> test framework.
>> Hi,
>>
>> I haven't tried much hard to adapt xskxceiver. I did have a look at
>> xskxceiver but I felt the supported topology is not suitable for my need. To
>> test the receiving side in virtio-net, I use Qemu to set up virtio-net in
>> the guest and vhost-net in the host side. The sending side is in the host
>> and the receiving is in the guest so I can't figure out how to do that with
>> xskxceiver.
> I see - couldn't the python side be executing xdpsock then instead of your
> own app?

I'm not aware of xdpsock. Could you give the path to that file?

> I wouldn't like to end up with several xsk tools for testing data path on
> different environments.


Return-Path: <linux-kernel+bounces-669016-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4F73241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:59:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id AD92F7AB7F0
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:58:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id AFABF238143;
Sat, 31 May 2025 08:59:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="3bWKtsEC";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="KkwGW0n1"
Received: from fout-a6-smtp.messagingengine.com (fout-a6-smtp.messagingengine.com [103.168.172.149])
(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 087C722D9E0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:59:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748681979; cv=none; b=cQhNnoVvpnMWAzGzDEKE3A2YOaGwqPB1B2mUHxkyfqwicj/FzOxaw/fKHSc/51zH20tAGrf+teQBPUht3m13LLMMtQQA4WZidMW8Hp1qB8gLD5XqGubYIiIqZ8X5esDgCyq336cJQrMTW2vCP0CtxuMvLS8c7eoAMcjvqruYPX8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748681979; c=relaxed/simple;
bh=7QsAYNa0feJJA5pQUSGqVFl/a3ERsItjJkFJ74hyHJ0=;
h=MIME-Version:Date:From:To:Cc:Message-Id:Subject:Content-Type; b=HFm2AOvxIE9o8v/jaQcktxKO6Jz0ffcDvpXKsYKWu8RC0cvJDjle8+X0zA+K21NjmY+b2pQCX5Lwx9iimLTAmLM2nDqSuvWse2f1AG/jfEJh6LocCeJTeCuzIGJ42s5c732AJ0q/isr4VoRNeLEqketN61nOKDE+KDag4DMppnQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=3bWKtsEC; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=KkwGW0n1; arc=none smtp.client-ip=103.168.172.149
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfout.phl.internal (Postfix) with ESMTP id 013441380333;
Sat, 31 May 2025 04:59:36 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 04:59:36 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:message-id:mime-version:reply-to
:subject:subject:to:to; s=fm3; t=1748681975; x=1748768375; bh=p2
OWAw12JJ0u5E469a4fqtcOE7dGCErKVTCQFCBSYSA=; b=3bWKtsECNZBBINyxHb
Yg/af0K6EOmegEQ00ktZZ6d+Cd8S9KN6wOmQq0SZsMSbUzIWkjgSOMxDaXs8fbct
KqbkrgugaDLcU0rBOqr8/B+Q5RnSzOXNQMfP0wOZ7Zec8nufmNMpBS23OVC8NxWL
+4QDygZVvLjRReCRqfqddUcYR/eAHVjtvo4/pP7AJxBX+gMMnzdjFepj0Og/qgyE
mW9pBOuSr4NE+cQwQrSnWjyy+bLyuLAbxjMsJG983dCkiGezgCoIzkVP36v/72O/
21ugfkBmL2IQN2NToXykdep47JxI/BSpmt5vBjbyjYIvkz0aKMZz4TvOrEyyNvKR
2jYA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:message-id:mime-version:reply-to:subject
:subject:to:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
fm1; t=1748681975; x=1748768375; bh=p2OWAw12JJ0u5E469a4fqtcOE7dG
CErKVTCQFCBSYSA=; b=KkwGW0n1jMpMmFnUOjY+0uzOUboxNjb2ruo1iPJARwwB
V2hlovINQUzE8pcqt4KDIoHyJs/Osg3XYuM2Wrqs8s4UuHWPefewrXS+zyUTwYRI
bYsbI5spawBiNfPOx0oMBtON4+9STpxEoFpgpGLmFJLDdwWsY4aSYtwAWQz5accd
6EpnPWXjB0eRVAO1Qe+Ar1REsdnWfGeFHyqFgsIJcB10IS81vniGExSseMWYdMKQ
K0UFkjfC4mc6VHzGgTgYSirpeFt4wGMB4KJZ5uN3jhjhjZ4+QUuD//0jJ7rJEutQ
xDZzXjxaoCABu7Lv4CqWqowu+gxgf1hEkSwQTwws7Q==
X-ME-Sender: <xms:98Q6aO8_CPwKy7ijfKw5fcwP8BDfRBXoLPBSPImaUEho1ks_Dns4GQ>
<xme:98Q6aOsOPjPqhPJ2DobMEtRLpxhGsOW1ySduX0zUYvcATZ4z-WxxOPcFIUGYiiI6a
JmJQ2VR7DpkBXZWvd0>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudegleculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
ufgtgfesthejredtredttdenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfdcuoe
grrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeffffffheeugfefhfdu
vefgleeijeektdfffeeijedthfevgfeiieevjeeuteefvdenucevlhhushhtvghrufhiii
gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegrrhhnugesrghrnhgusgdruggvpdhn
sggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehtohhrvh
grlhgusheslhhinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtoheplhhi
nhhugidqrghrmhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggurdhorhhgpd
hrtghpthhtohepshhotgeslhhishhtshdrlhhinhhugidruggvvhdprhgtphhtthhopehl
ihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:98Q6aEDU1xSi2iUqgjUyh1SNtfZKhy5BDS5m6FnHWeICol_AGRK4VQ>
<xmx:98Q6aGdLejjtIVQbHd0d0Xix2qtJzDwsHa8vwwBSIwMCLiCowy3pDQ>
<xmx:98Q6aDNpCP1tVUgKZzbtgAv4Upz2kCKwkCL8bT_jlY4UgEPSYqB07g>
<xmx:98Q6aAk5AwFW4HkJkPDX_e-Tjv6Z1vTHa6akHrCjSGlVMOXq89p_fA>
<xmx:98Q6aHG5AhKlmrby7wrWsywVVqiGioZSh3eq7qVwbIIEKAt3GPFvU-lI>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id 5BB54700060; Sat, 31 May 2025 04:59:35 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Date: Sat, 31 May 2025 10:59:15 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL 0/5] soc: updates for 6.16
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This is a fairly large update for the soc tree with 1125 patches,
mainly because a large part of the qualcomm changes came too late
last time. Other than that, there is not much interesting going
on. There are 65 new dts files for additional machines and 12 new
SoCs that are all similar to already supported ones. The sophgo
SG2044 SoC support comes in a separate branch to avoid a backmerge,
but it's also the largest one of the new chips.

The summarized dirstat is

0.5% Documentation/devicetree/bindings/arm/
1.6% Documentation/devicetree/bindings/
0.4% arch/arm/boot/dts/broadcom/
0.7% arch/arm/boot/dts/microchip/
1.2% arch/arm/boot/dts/nvidia/
0.7% arch/arm/boot/dts/qcom/
0.4% arch/arm/boot/dts/renesas/
1.3% arch/arm/boot/dts/st/
1.2% arch/arm/boot/dts/
1.2% arch/arm/mach-davinci/
2.0% arch/arm64/boot/dts/allwinner/
1.1% arch/arm64/boot/dts/amlogic/
4.4% arch/arm64/boot/dts/exynos/
15.7% arch/arm64/boot/dts/freescale/
7.9% arch/arm64/boot/dts/mediatek/
0.4% arch/arm64/boot/dts/nvidia/
24.3% arch/arm64/boot/dts/qcom/
2.4% arch/arm64/boot/dts/renesas/
10.2% arch/arm64/boot/dts/rockchip/
0.3% arch/arm64/boot/dts/st/
6.6% arch/arm64/boot/dts/ti/
1.2% arch/arm64/boot/dts/
4.1% arch/riscv/boot/dts/sophgo/
0.3% arch/
2.6% drivers/firmware/arm_scmi/vendors/imx/
0.7% drivers/firmware/arm_scmi/
0.7% drivers/firmware/
0.6% drivers/memory/
0.5% drivers/platform/cznic/
0.4% drivers/reset/
0.6% drivers/soc/amlogic/
0.6% drivers/soc/qcom/
0.9% drivers/soc/
939 files changed, 79999 insertions(+), 11861 deletions(-)

We had 264 contributors this time, and the most active ones
by number of patches are

72 Krzysztof Kozlowski
38 Dmitry Baryshkov
30 Luca Weiss
29 Konrad Dybcio
24 Stephan Gerhold
23 Wolfram Sang
23 Neil Armstrong
22 Heiko Stuebner
19 Johan Hovold
18 Rob Herring (Arm)
17 Primoz Fiser
16 Siddharth Vadapalli
14 Francesco Dolcini
14 Andre Przywara
13 Chukun Pan
13 Biju Das
13 AngeloGioacchino Del Regno
12 Judith Mendez
12 Inochi Amaoto
12 Dzmitry Sankouski
12 Alexander Stein
12 Abel Vesa
12 Aaron Kling
11 Adam Ford

One simple merge conflict came up in the drivers branch, where
a bunch of updates to the MAINTAINERS file clashed.

Arnd


Return-Path: <linux-kernel+bounces-669017-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2A6E941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:02:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0C1A34A3748
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:02:34 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 144B6236A9F;
Sat, 31 May 2025 09:02:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="X0FCzvrb";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="W8FsJV/Z"
Received: from fout-a6-smtp.messagingengine.com (fout-a6-smtp.messagingengine.com [103.168.172.149])
(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 017516FBF
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:02:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682145; cv=none; b=imc3tavjWz5yO/wZk8gUh/rLD1hlhZ/TLLcCj2PJQNHOqDx4CKBk2ozgaW/yCrHGzHock+Lp8I3zx13cmEzQQCAnRFvqKPragMUgjxOHHskyUslhTARNwZHXZ3XVlQEiZzd1wwtK08I1WogIL+DbJar5WJSL+//+bTvlHNYIio0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682145; c=relaxed/simple;
bh=CK2KcBQ7ajUircDsdXBE474KKn+OdAD+xLNZ/+d5oa4=;
h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References:
Subject:Content-Type; b=GU5MKq3TfiBfnY6bYDxRAohyH/E6ocwipdwUurfjwpQJ3ZeRyrmdjzVnLofLjVgX4ZmCGTUl8A/NLwyQmHuZ3ktoq88ixL2TorddfOSOhbymXxH3mdFre1XqIQ1balDLNj1spSjG2+uO+Esza7ig5/JfIxEFeuUIEA3GvddX1bw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=X0FCzvrb; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=W8FsJV/Z; arc=none smtp.client-ip=103.168.172.149
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfout.phl.internal (Postfix) with ESMTP id 1D829138031A;
Sat, 31 May 2025 05:02:20 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 05:02:20 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1748682140;
x=1748768540; bh=vPtcrMjaeIbFh4XZbRWa6u6U37WSb5JfkpC0WOWmjrY=; b=
X0FCzvrbKwgfzWVRwCbwJ03XglzqEO/ccxs+JfXMx24NYpy2DvaQY2BTpJp2w+xG
N+oN7kMWhbwX6+wdKGJx8j8ZzwNxnwgsXrnhRm1VqPJB7/nuBtZZwwjSxHklh0vE
bBFl9RKK+qk3BdEphEnzs1TZ1Xz6byGseyFVS4gPZ4OEphiro9+UEE9vs6jOjVY6
0JjlZxMP/if2QDOo9dQi8a1Bn+n0YPw1kj0rRY6mjRm5SVAAIDzOie/hbfPAQhhq
j7eb4hxbJjjgsVzxsLFYQGeP7W75axabIFAqOUSiWjloRpQeiV2U49bOvXAFAGb5
vBye4f80NIS8HZsSHn81jQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748682140; x=
1748768540; bh=vPtcrMjaeIbFh4XZbRWa6u6U37WSb5JfkpC0WOWmjrY=; b=W
8FsJV/Z2GqHRF3gKhQTP8jDHXBzkiHcSrF3eNiUvDj9ATzRZEs4yFTBB/6dp7bl2
+5pd5Q7Jjtx1fMaEzRuknPmqW+SbsYmAkwefm0aqoUN7oAuDa1EZzvyFBUqJZiKt
b3Ur5ADrzYYTgAhBq9+2hJe92MJrTSXbrFPkpbfgc9nqOxmH91dkKHmKJg+nY0nV
nHNSSTDg2htmSRQylS20YMq6MxCkBLT3XuljpEj3q51klXWVImN1knXYtPIYJPHW
6wTj8CERJUZqfBVORTChMB2Q+j/w0tQg2UxquCDCm+ygVPKowGhvD758cpKA8EhI
4spl6PN0JeVOvocdLgFmA==
X-ME-Sender: <xms:m8U6aDNXHeWQ5zh32xFnFpVU-ctUd6ofGZhNeTj5JmURjCalV4w1IA>
<xme:m8U6aN8O0M6K_jDo2bINOU2iwE3xzEVt5s_ijLyZf_nunJQy_eIq_BPljFzhGqcMS
N8msiFmny-iDY-fOkc>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudegleculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
jghfufgtgfesthhqredtredtjeenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfd
cuoegrrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeejfefhleeigfev
udekleekkeeujeeutdeigefgveektdejieffudegtdejueelueenucffohhmrghinhepkh
gvrhhnvghlrdhorhhgpdhgihhthhhusgdrtghomhdpphgvnhhguhhtrhhonhhigidruggv
necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheprghrnh
gusegrrhhnuggsrdguvgdpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphhouhht
pdhrtghpthhtohepthhorhhvrghlughssehlihhnuhigqdhfohhunhgurghtihhonhdroh
hrghdprhgtphhtthhopehlihhnuhigqdgrrhhmqdhkvghrnhgvlheslhhishhtshdrihhn
fhhrrgguvggrugdrohhrghdprhgtphhtthhopehsohgtsehlihhsthhsrdhlihhnuhigrd
guvghvpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghl
rdhorhhg
X-ME-Proxy: <xmx:m8U6aCQH5wrgKoxEQaueTK1sagrrEIrg6OoIENvgA54AkUdJAqjDBA>
<xmx:m8U6aHvO20Yhis2rqIiP0kqceGnk8Ullpbg-wejjq8yZ4bkwRm2dUA>
<xmx:m8U6aLcwweYFd1Qs1A1V3LBkYdZYLtjRrJjA_vtTGE2-ww7MNGQoAQ>
<xmx:m8U6aD3EoO2WzLWkjOyVeIl36XWB5z5X_juIY4mQJGSAHjwS1Nus1Q>
<xmx:nMU6aMUKiT9vy9iJL3-EwZP70KcxlbM2SDfJtbRUIhxEbzCD_nzZ8-I5>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id B581D700060; Sat, 31 May 2025 05:02:19 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Date: Sat, 31 May 2025 11:01:20 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <f44d3ad7-b518-4679-8f7b-949680b26ef7@xxxxxxxxxxxxxxxx>
In-Reply-To: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL 1/5] soc: drivers for 6.16
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following changes since commit 798dc3f19c9e3855c18c3afb610bc5d27195e=
f44:

memory: renesas-rpc-if: Add missing static keyword (2025-05-08 10:59:0=
7 +0200)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-d=
rivers-6.16

for you to fetch changes up to 5963edd98a2159f2114b08e402a7341c1e7dd293:

Merge tag 'soc_fsl-6.16-1' of https://github.com/chleroy/linux into so=
c/drivers (2025-05-22 13:22:07 +0200)

----------------------------------------------------------------
soc: drivers for 6.16

Updates are across the usual driver subsystems with SoC specific drivers:

- added soc specicific drivers for sophgo cv1800 and sg2044, qualcomm
sm8750, and amlogic c3 and s4 chips.

- cache controller updates for sifive chips, plus binding changes for
other cache descriptions.

- memory controller drivers for mediatek mt6893, stm32 and cleanups for=
a
few more drivers

- reset controller drivers for T-Head TH1502, Sophgo sg2044 and
Renesas RZ/V2H(P)

- SCMI firmware updates to better deal with buggy firmware, plus better
support for Qualcomm X1E and NXP i.MX specific interfaces

- a new platform driver for the crypto firmware on Cznic Turris Omnia/M=
OX

- cleanups for the TEE firmware subsystem and amdtee driver

- minor updates and fixes for freescale/nxp, qualcomm, google, aspeed,
wondermedia, ti, nxp, renesas, hisilicon, mediatek, broadcom and sams=
ung
SoCs

----------------------------------------------------------------
Aleksandrs Vinarskis (1):
firmware: qcom: scm: Allow QSEECOM on Asus Zenbook A14

Alexander Stein (1):
soc: ti: wkup_m3_ipc: Use dev_err_probe

Alexander Sverdlin (2):
Revert "bus: ti-sysc: Probe for l4_wkup and l4_cfg interconnect de=
vices first"
soc: sophgo: cv1800: rtcsys: New driver (handling RTC only)

Alexey Charkov (2):
dt-bindings: hwinfo: Add VIA/WonderMedia SoC identification
soc: Add VIA/WonderMedia SoC identification driver

Andr=C3=A9 Draszik (6):
firmware: exynos-acpm: use ktime APIs for timeout detection
firmware: exynos-acpm: allow use during system shutdown
dt-bindings: firmware: google,gs101-acpm-ipc: add PMIC child node
firmware: exynos-acpm: fix reading longer results
firmware: exynos-acpm: silence EPROBE_DEFER error on boot
firmware: exynos-acpm: introduce devm_acpm_get_by_node()

AngeloGioacchino Del Regno (5):
dt-bindings: soc: mediatek: dvfsrc: Add support for MT6893
soc: mediatek: mtk-dvfsrc: Rename and move bw constraints data
soc: mediatek: mtk-dvfsrc: Add support for Dimensity 1200 MT6893
dt-bindings: memory: mtk-smi: Add support for MT6893
memory: mtk-smi: Add support for Dimensity 1200 MT6893 SMI

Arnd Bergmann (29):
platform: cznic: fix function parameter names
firmware: turris-mox-rwtm: fix building without CONFIG_KEYS
platform: cznic: use ffs() instead of __bf_shf()
soc: mediatek: mtk-dvfsrc: remove an unused variable
Merge tag 'renesas-drivers-for-v6.16-tag1' of https://git.kernel.o=
rg/pub/scm/linux/kernel/git/geert/renesas-devel into soc/drivers
Merge tag 'samsung-drivers-6.16' of https://git.kernel.org/pub/scm=
/linux/kernel/git/krzk/linux into soc/drivers
Merge tag 'arm-soc/for-6.16/drivers' of https://github.com/Broadco=
m/stblinux into soc/drivers
Merge tag 'mtk-soc-for-v6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/mediatek/linux into soc/drivers
Merge tag 'scmi-updates-6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/sudeep.holla/linux into soc/drivers
Merge tag 'memory-controller-drv-renesas-6.16' of https://git.kern=
el.org/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into soc/drivers
Merge tag 'memory-controller-drv-6.16' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/krzk/linux-mem-ctrl into soc/drivers
Merge tag 'hisi-drivers-for-6.16' of https://github.com/hisilicon/=
linux-hisi into soc/drivers
Merge tag 'amd-tee-for-v6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/jenswi/linux-tee into soc/drivers
Merge tag 'renesas-drivers-for-v6.16-tag2' of https://git.kernel.o=
rg/pub/scm/linux/kernel/git/geert/renesas-devel into soc/drivers
Merge tag 'tee-for-v6.16' of https://git.kernel.org/pub/scm/linux/=
kernel/git/jenswi/linux-tee into soc/drivers
Merge tag 'omap-for-v6.16/drivers-signed' of https://git.kernel.or=
g/pub/scm/linux/kernel/git/khilman/linux-omap into soc/drivers
Merge branch 'cznic/platform' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/soc/soc into soc/drivers
Merge tag 'imx-drivers-6.16' of https://git.kernel.org/pub/scm/lin=
ux/kernel/git/shawnguo/linux into soc/drivers
Merge tag 'reset-for-v6.16' of git://git.pengutronix.de/pza/linux =
into soc/drivers
Merge tag 'ti-driver-soc-for-v6.16' of https://git.kernel.org/pub/=
scm/linux/kernel/git/ti/linux into soc/drivers
Merge tag 'amlogic-driver-for-v6.16' of https://git.kernel.org/pub=
/scm/linux/kernel/git/amlogic/linux into soc/drivers
Merge tag 'soc-drivers-6.16' of https://git.kernel.org/pub/scm/lin=
ux/kernel/git/krzk/linux-dt into soc/drivers
Merge tag 'qcom-drivers-for-6.16' of https://git.kernel.org/pub/sc=
m/linux/kernel/git/qcom/linux into soc/drivers
Merge tag 'riscv-sophgo-soc-for-v6.16' of https://github.com/sophg=
o/linux into soc/drivers
Merge tag 'samsung-drivers-6.16-2' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/krzk/linux into soc/drivers
Merge tag 'memory-controller-drv-6.16-2' of https://git.kernel.org=
/pub/scm/linux/kernel/git/krzk/linux-mem-ctrl into soc/drivers
Merge tag 'riscv-cache-for-v6.16' of https://git.kernel.org/pub/sc=
m/linux/kernel/git/conor/linux into soc/drivers
Merge tag 'qcom-drivers-for-6.16-2' of https://git.kernel.org/pub/=
scm/linux/kernel/git/qcom/linux into soc/drivers
Merge tag 'soc_fsl-6.16-1' of https://github.com/chleroy/linux int=
o soc/drivers

Barnab=C3=A1s Cz=C3=A9m=C3=A1n (1):
soc: qcom: smp2p: Fix fallback to qcom,ipc parse

Bartosz Golaszewski (2):
memory: omap-gpmc: use the dedicated define for GPIO direction
memory: omap-gpmc: remove GPIO set() and direction_output() callba=
cks

Ben Zong-You Xie (1):
dt-bindings: cache: add QiLai compatible to ax45mp

Chen Ni (3):
soc: ti: knav_qmss_queue: Remove unnecessary NULL check before fre=
e_percpu()
tee: optee: smc: remove unnecessary NULL check before release_firm=
ware()
soc: fsl: qe: Consolidate chained IRQ handler install/remove

Chuan Liu (6):
soc: amlogic: clk-measure: Optimize the memory size of clk-measure
soc: amlogic: clk-measure: Define MSR_CLK's register offset separa=
tely
dt-bindings: soc: amlogic: C3 supports clk-measure
dt-bindings: soc: amlogic: S4 supports clk-measure
soc: amlogic: clk-measure: Add support for C3
soc: amlogic: clk-measure: Add support for S4

Colin Ian King (1):
memory: stm32: Fix spelling mistake "resset" -> "reset"

Conor Dooley (1):
dt-bindings: cache: add specific RZ/Five compatible to ax45mp

Cristian Marussi (3):
firmware: arm_scmi: Add polling support to raw mode
firmware: arm_scmi: Add common framework to handle firmware quirks
firmware: arm_scmi: quirk: Fix CLOCK_DESCRIBE_RATES triplet

Dan Carpenter (2):
memory: stm32_omm: Fix error handling in stm32_omm_configure()
memory: stm32_omm: Fix NULL vs IS_ERR() check in probe()

Danila Tikhonov (1):
firmware: qcom: tzmem: disable sm7150 platform

Dmitry Baryshkov (2):
dt-bindings: soc: qcom,rpm: add missing clock-controller node
dt-bindings: soc: qcom: qcom,rpm: add missing clock/-names propert=
ies

George Moussalem (1):
dt-bindings: mfd: qcom,tcsr: Add compatible for ipq5018

Henry Martin (1):
soc: aspeed: Add NULL check in aspeed_lpc_enable_snoop()

Inochi Amaoto (2):
dt-bindings: reset: sophgo: Add SG2044 bindings.
soc: sophgo: sg2044: Add support for SG2044 TOP syscon device

Ioana Ciornei (3):
bus: fsl-mc: fix double-free on mc_dev
bus: fsl-mc: do not add a device-link for the UAPI used DPMCP devi=
ce
bus: fsl-mc: add the dprc_get_mem() command to the whitelist

Jann Horn (1):
tee: Prevent size calculation wraparound on 32-bit kernels

Jens Reidel (1):
soc: qcom: pd-mapper: Add support for SM7150

Jingbao Qiu (1):
dt-bindings: soc: sophgo: add RTC support for Sophgo CV1800 series

Joel Stanley (1):
ARM: aspeed: Don't select SRAM

Johan Hovold (3):
firmware: arm_scmi: quirk: Force perf level get fastchannel
soc: qcom: pmic_glink: enable UCSI on sc8280xp
soc: qcom: pmic_glink_altmode: fix spurious DP hotplug events

Juerg Haefliger (1):
firmware: qcom: scm: Allow QSEECOM for HP EliteBook Ultra G1q

Kees Cook (1):
soc: fsl: qbman: Remove const from portal->cgrs allocation type

Kendall Willis (1):
firmware: ti_sci: Convert CPU latency constraint from us to ms

Konrad Dybcio (1):
dt-bindings: soc: qcom,rpmh-rsc: Limit power-domains requirement

Krzysztof Kozlowski (6):
memory: Simplify 'default' choice in Kconfig
memory: tegra: Do not enable by default during compile testing
firmware: exynos-acpm: Correct kerneldoc and use typical np argume=
nt name
ARM: vt8500: MAINTAINERS: Include vt8500 soc driver in maintainers=
entry
bus: firewall: Fix missing static inline annotations for stubs
soc: fsl: Do not enable DPAA2_CONSOLE by default during compile te=
sting

Lad Prabhakar (5):
soc: renesas: Add config option for RZ/V2N (R9A09G056) SoC
soc: renesas: rz-sysc: Add SoC identification for RZ/V2N SoC
dt-bindings: reset: Document RZ/V2H(P) USB2PHY reset
reset: Add USB2PHY port reset driver for Renesas RZ/V2H(P)
MAINTAINERS: Add entry for Renesas RZ/V2H(P) USB2PHY Port Reset dr=
iver

Laurentiu Tudor (2):
bus: fsl-mc: drop useless cleanup
bus: fsl-mc: increase MC_CMD_COMPLETION_TIMEOUT_MS value

Marek Beh=C3=BAn (5):
platform: cznic: turris-omnia-mcu: Refactor requesting MCU interru=
pt
platform: cznic: Add keyctl helpers for Turris platform
platform: cznic: turris-omnia-mcu: Add support for digital message=
signing with HW private key
firmware: turris-mox-rwtm: Drop ECDSA signatures via debugfs
firmware: turris-mox-rwtm: Add support for ECDSA signatures with H=
W private key

Mario Limonciello (2):
amdtee: Use pr_fmt for messages
amdtee: Sort header includes

Melody Olvera (3):
dt-bindings: cache: qcom,llcc: Document SM8750 LLCC block
soc: qcom: llcc-qcom: Add support for LLCC V6
soc: qcom: llcc-qcom: Add support for SM8750

Michal Wilczynski (2):
dt-bindings: reset: Add T-HEAD TH1520 SoC Reset Controller
reset: thead: Add TH1520 reset controller driver

Mukesh Ojha (2):
dt-bindings: arm: qcom,ids: add SoC ID for SM8750
soc: qcom: socinfo: add SM8750 SoC ID

Ovidiu Panait (1):
bus: brcmstb_gisb: use dev_groups to register attribute groups

Patrice Chotard (5):
reset: Add devm_reset_control_array_get_exclusive_released()
dt-bindings: memory-controllers: Add STM32 Octo Memory Manager con=
troller
memory: Add STM32 Octo Memory Manager driver
MAINTAINERS: add entry for STM32 OCTO MEMORY MANAGER driver
memory: stm32_omm: Fix error handling in stm32_omm_disable_child()

Peng Fan (10):
firmware: arm_scmi: imx: Add LMM and CPU documentation
dt-bindings: firmware: Add i.MX95 SCMI LMM and CPU protocol
firmware: arm_scmi: imx: Add i.MX95 LMM protocol
firmware: arm_scmi: imx: Add i.MX95 CPU Protocol
firmware: imx: Add i.MX95 SCMI LMM driver
firmware: imx: Add i.MX95 SCMI CPU driver
MAINTAINERS: add entry for i.MX SCMI extensions
soc: imx8m: Cleanup with adding imx8m_soc_[un]prepare
soc: imx8m: Introduce soc_uid hook
soc: imx8m: Dump higher 64bits UID

Peter Griffin (4):
dt-bindings: soc: google: Add gs101-pmu-intr-gen binding documenta=
tion
dt-bindings: soc: samsung: exynos-pmu: gs101: add google,pmu-intr-=
gen phandle
MAINTAINERS: Add google,gs101-pmu-intr-gen.yaml binding file
soc: samsung: exynos-pmu: enable CPU hotplug support for gs101

Pinkesh Vaghela (1):
cache: sifive_ccache: Add ESWIN EIC7700 support

Pritesh Patel (1):
dt-bindings: cache: sifive,ccache0: Add ESWIN EIC7700 SoC compatib=
ility

Rob Herring (Arm) (2):
dt-bindings: cache: Convert marvell,{feroceon,kirkwood}-cache to D=
T schema
dt-bindings: cache: Convert marvell,tauros2-cache to DT schema

Robin Murphy (1):
bus: fsl_mc: Fix driver_managed_dma check

Salah Triki (1):
memory: bt1-l2-ctl: replace scnprintf() with sysfs_emit()

Sibi Sankar (1):
firmware: arm_scmi: Ensure that the message-id supports fastchannel

Su Hui (1):
soc: aspeed: lpc: Fix impossible judgment condition

Sudeep Holla (6):
firmware: arm_scmi: Ensure scmi_devices are always matched by name=
as well
firmware: arm_scmi: Refactor device matching logic to eliminate du=
plication
firmware: arm_scmi: Refactor error logging from SCMI device creati=
on to single helper
firmware: arm_scmi: Assign correct parent to arm-scmi platform dev=
ice
firmware: arm_scmi: Exclude transport devices from bus matching
soc: hisilicon: kunpeng_hccs: Simplify PCC shared memory region ha=
ndling

Tang Dongxing (1):
soc: ti: k3-ringacc: Use device_match_of_node()

Thorsten Blum (1):
bus: fsl-mc: Use strscpy() instead of strscpy_pad()

Tom Rix (1):
soc: fsl: qe: remove unused qe_ic_from_irq function

Tudor Ambarus (1):
firmware: exynos-acpm: populate devices from device tree data

Unnathi Chalicheemala (2):
soc: qcom: smem: Update max processor count
docs: firmware: qcom_scm: Fix kernel-doc warning

Uwe Kleine-K=C3=B6nig (1):
MAINTAINERS: Generalize ARM/RISC-V/RENESAS ARCHITECTURE

Vignesh Raghavendra (1):
soc: ti: k3-socinfo: Add JTAG ID for AM62LX

Wan Junjie (1):
bus: fsl-mc: fix GET/SET_TAILDROP command ids

Zelong Dong (1):
dt-bindings: reset: Add compatible for Amlogic A4/A5 Reset Control=
ler

Documentation/ABI/testing/debugfs-scmi-raw | 91 +++
Documentation/ABI/testing/debugfs-turris-mox-rwtm | 14 -
.../ABI/testing/sysfs-firmware-turris-mox-rwtm | 9 -
.../bindings/cache/andestech,ax45mp-cache.yaml | 20 +-
.../bindings/cache/marvell,feroceon-cache.txt | 16 -
.../bindings/cache/marvell,kirkwood-cache.yaml | 45 ++
.../bindings/cache/marvell,tauros2-cache.txt | 17 -
.../bindings/cache/marvell,tauros2-cache.yaml | 39 +
.../devicetree/bindings/cache/qcom,llcc.yaml | 2 +
.../devicetree/bindings/cache/sifive,ccache0.yaml | 44 +-
.../bindings/firmware/google,gs101-acpm-ipc.yaml | 35 +
.../bindings/firmware/nxp,imx95-scmi.yaml | 23 +
.../bindings/hwinfo/via,vt8500-scc-id.yaml | 37 +
.../memory-controllers/mediatek,smi-common.yaml | 1 +
.../memory-controllers/mediatek,smi-larb.yaml | 1 +
.../memory-controllers/st,stm32mp25-omm.yaml | 226 ++++++
.../devicetree/bindings/mfd/qcom,tcsr.yaml | 1 +
.../bindings/reset/amlogic,meson-reset.yaml | 22 +-
.../reset/renesas,rzv2h-usb2phy-reset.yaml | 56 ++
.../bindings/reset/sophgo,sg2042-reset.yaml | 7 +-
.../bindings/reset/thead,th1520-reset.yaml | 44 ++
.../soc/amlogic/amlogic,meson-gx-clk-measure.yaml | 2 +
.../soc/google/google,gs101-pmu-intr-gen.yaml | 35 +
.../soc/mediatek/mediatek,mt8183-dvfsrc.yaml | 1 +
.../devicetree/bindings/soc/qcom/qcom,rpm.yaml | 15 +
.../bindings/soc/qcom/qcom,rpmh-rsc.yaml | 24 +-
.../bindings/soc/samsung/exynos-pmu.yaml | 15 +
.../bindings/soc/sophgo/sophgo,cv1800b-rtc.yaml | 86 +++
MAINTAINERS | 33 +-
arch/arm/mach-aspeed/Kconfig | 1 -
drivers/bus/brcmstb_gisb.c | 10 +-
drivers/bus/fsl-mc/dprc-driver.c | 2 -
drivers/bus/fsl-mc/dprc.c | 4 +-
drivers/bus/fsl-mc/fsl-mc-allocator.c | 21 -
drivers/bus/fsl-mc/fsl-mc-bus.c | 12 +-
drivers/bus/fsl-mc/fsl-mc-private.h | 2 -
drivers/bus/fsl-mc/fsl-mc-uapi.c | 11 +-
drivers/bus/fsl-mc/mc-io.c | 19 +-
drivers/bus/fsl-mc/mc-sys.c | 2 +-
drivers/bus/ti-sysc.c | 49 --
drivers/cache/sifive_ccache.c | 2 +
drivers/firmware/Kconfig | 17 +
drivers/firmware/arm_scmi/Kconfig | 13 +
drivers/firmware/arm_scmi/Makefile | 1 +
drivers/firmware/arm_scmi/bus.c | 79 +-
drivers/firmware/arm_scmi/clock.c | 33 +-
drivers/firmware/arm_scmi/common.h | 1 +
drivers/firmware/arm_scmi/driver.c | 119 +--
drivers/firmware/arm_scmi/protocols.h | 2 +
drivers/firmware/arm_scmi/quirks.c | 322 ++++++++
drivers/firmware/arm_scmi/quirks.h | 52 ++
drivers/firmware/arm_scmi/raw_mode.c | 72 +-
drivers/firmware/arm_scmi/vendors/imx/Kconfig | 24 +
drivers/firmware/arm_scmi/vendors/imx/Makefile | 2 +
drivers/firmware/arm_scmi/vendors/imx/imx-sm-cpu.c | 276 +++++++
drivers/firmware/arm_scmi/vendors/imx/imx-sm-lmm.c | 263 +++++++
drivers/firmware/arm_scmi/vendors/imx/imx95.rst | 828 ++++++++++++++=
+++++++
drivers/firmware/imx/Kconfig | 22 +
drivers/firmware/imx/Makefile | 2 +
drivers/firmware/imx/sm-cpu.c | 85 +++
drivers/firmware/imx/sm-lmm.c | 91 +++
drivers/firmware/qcom/qcom_scm.c | 3 +
drivers/firmware/qcom/qcom_scm.h | 3 +
drivers/firmware/qcom/qcom_tzmem.c | 1 +
drivers/firmware/samsung/exynos-acpm-pmic.c | 16 +-
drivers/firmware/samsung/exynos-acpm.c | 58 +-
drivers/firmware/ti_sci.c | 14 +-
drivers/firmware/turris-mox-rwtm.c | 260 +++----
drivers/memory/Kconfig | 23 +-
drivers/memory/Makefile | 1 +
drivers/memory/bt1-l2-ctl.c | 2 +-
drivers/memory/mtk-smi.c | 52 ++
drivers/memory/omap-gpmc.c | 15 +-
drivers/memory/stm32_omm.c | 479 ++++++++++++
drivers/memory/tegra/Kconfig | 8 +-
drivers/platform/cznic/Kconfig | 17 +
drivers/platform/cznic/Makefile | 3 +
drivers/platform/cznic/turris-omnia-mcu-base.c | 4 +
drivers/platform/cznic/turris-omnia-mcu-gpio.c | 21 +-
drivers/platform/cznic/turris-omnia-mcu-keyctl.c | 162 ++++
drivers/platform/cznic/turris-omnia-mcu-trng.c | 17 +-
drivers/platform/cznic/turris-omnia-mcu.h | 33 +-
drivers/platform/cznic/turris-signing-key.c | 193 +++++
drivers/reset/Kconfig | 17 +
drivers/reset/Makefile | 2 +
drivers/reset/reset-rzv2h-usb2phy.c | 236 ++++++
drivers/reset/reset-th1520.c | 135 ++++
drivers/soc/Kconfig | 2 +
drivers/soc/Makefile | 2 +
drivers/soc/amlogic/meson-clk-measure.c | 461 +++++++++++-
drivers/soc/aspeed/aspeed-lpc-snoop.c | 17 +-
drivers/soc/fsl/Kconfig | 2 +-
drivers/soc/fsl/qbman/qman.c | 2 +-
drivers/soc/fsl/qe/qe_ic.c | 15 +-
drivers/soc/hisilicon/kunpeng_hccs.c | 42 +-
drivers/soc/hisilicon/kunpeng_hccs.h | 2 -
drivers/soc/imx/soc-imx8m.c | 177 +++--
drivers/soc/mediatek/mtk-dvfsrc.c | 53 +-
drivers/soc/qcom/llcc-qcom.c | 497 ++++++++++++-
drivers/soc/qcom/pmic_glink.c | 4 -
drivers/soc/qcom/pmic_glink_altmode.c | 30 +-
drivers/soc/qcom/qcom_pd_mapper.c | 11 +
drivers/soc/qcom/smem.c | 2 +-
drivers/soc/qcom/smp2p.c | 2 +-
drivers/soc/qcom/socinfo.c | 1 +
drivers/soc/renesas/Kconfig | 11 +
drivers/soc/renesas/Makefile | 1 +
drivers/soc/renesas/r9a09g056-sys.c | 75 ++
drivers/soc/renesas/rz-sysc.c | 3 +
drivers/soc/renesas/rz-sysc.h | 1 +
drivers/soc/samsung/exynos-pmu.c | 78 +-
drivers/soc/samsung/exynos-pmu.h | 1 +
drivers/soc/sophgo/Kconfig | 34 +
drivers/soc/sophgo/Makefile | 4 +
drivers/soc/sophgo/cv1800-rtcsys.c | 63 ++
drivers/soc/sophgo/sg2044-topsys.c | 45 ++
drivers/soc/ti/k3-ringacc.c | 2 +-
drivers/soc/ti/k3-socinfo.c | 2 +
drivers/soc/ti/knav_qmss_queue.c | 3 +-
drivers/soc/ti/wkup_m3_ipc.c | 8 +-
drivers/soc/vt8500/Kconfig | 19 +
drivers/soc/vt8500/Makefile | 2 +
drivers/soc/vt8500/wmt-socinfo.c | 125 ++++
drivers/tee/amdtee/core.c | 16 +-
drivers/tee/optee/smc_abi.c | 3 +-
drivers/tee/tee_core.c | 11 +-
include/dt-bindings/arm/qcom,ids.h | 1 +
include/dt-bindings/reset/thead,th1520-reset.h | 16 +
include/linux/bus/stm32_firewall_device.h | 15 +-
include/linux/firmware/imx/sm.h | 19 +
.../linux/firmware/samsung/exynos-acpm-protocol.h | 6 +-
include/linux/reset.h | 6 +
include/linux/scmi_imx_protocol.h | 42 ++
include/linux/soc/qcom/llcc-qcom.h | 8 +
include/linux/soc/samsung/exynos-regs-pmu.h | 11 +
include/linux/turris-signing-key.h | 35 +
136 files changed, 6457 insertions(+), 706 deletions(-)


Return-Path: <linux-kernel+bounces-669018-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3DD7241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:03:23 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3796E1BA3934
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:03:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4FB172376E6;
Sat, 31 May 2025 09:03:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="JBhdNhgf";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="j8f7sEAe"
Received: from fhigh-a1-smtp.messagingengine.com (fhigh-a1-smtp.messagingengine.com [103.168.172.152])
(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 ADE41211460
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:03:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682194; cv=none; b=pAI6uAanuQQav5xDD4uXzogzGtfjtqYddqNrzDnMMvV+ZYJi07+wb6Ot4JcAq+f28FkAzaFZwmVf7JQ3OwXU2Z8BeD+AhOLKxCL3hIcUCJwNwia4TnJR9ijj/WPex/Wp/gP4QLhiIwdho8U2tPYkhbU793MMVKbUHlPHwUH10B4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682194; c=relaxed/simple;
bh=gRfKPo99FxReVq87mOejFbww2m+Tchc2HeHyofuwyuM=;
h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References:
Subject:Content-Type; b=ZgGY49PaxkIwNZsMxBJZpsRkfflx7uBuDSWF+GYHj0D+O+tS6pV/nuIEdVlEGPH5Hiis3Db0IPdJz1flW+NeBcarhplwnrBvwkBBI25zwKwwj7tOWYgtrast6zTdIIiLPWbif/bIWhyFzVqu5WyXfqbEEcPG5ODATIYmZElj/WU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=JBhdNhgf; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=j8f7sEAe; arc=none smtp.client-ip=103.168.172.152
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfhigh.phl.internal (Postfix) with ESMTP id C5ED11140133;
Sat, 31 May 2025 05:03:10 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 05:03:10 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1748682190;
x=1748768590; bh=0oMwDLq+Cc90r6I5PN83nBy5IIQ6yNR0ch7EQ/+SVKM=; b=
JBhdNhgf8/rqlznPjQmw1B1AtFplc1x60MmWpuDszV3M6wWQlL9EKDiTANNFxDlh
ZSwEQv5LyKrElXYUyhUGJIeXCpYNFYoqsq1T67heTiKt4W3Gq0F2Gr9vrx0TLuNT
WwNonM+wBLa2MqIdT/++T2MzBNuCApxtFg1EDFuyl3BVkYPMiNIrEIbncqhnUeZv
idZv5JlJy5Y5COLh9Rjyg5gn9T8TEpgBq0nov1yv9FZ7fiJuuZZCRCOnFD2ofUGF
LbJKcRF6lfUtRh3lSzgbm71R5HHSYEF2gtwLc9stL2ZqCQ84rmo9/nTUEHowhpsE
ur4fnS0g2TeNL9MBZxaI2Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748682190; x=
1748768590; bh=0oMwDLq+Cc90r6I5PN83nBy5IIQ6yNR0ch7EQ/+SVKM=; b=j
8f7sEAeFQsY2sOwAyhU3Qazqt2jRYYZxkpqt7XXiX+hggthnAWZI0RTWHCjPaa75
XdvwnuDT9mI0VNQrXt1z6+1me9DBRQGXZD5v/XJiazlnv/l02NiFMdRAjvf1b8iu
qGl2AGAtiR3UiRewCha8m0JGn5gkEW/kistOA76VFlOC86aP5lAmc1yf0KwDJA/y
nUYUmT6Lazf/hOSLGDBKSiIPD0ue5lJQKl3742RhcLl9NMIByQVO8b2aZDRZh6k7
M1iAj6CEQg2hZYxEZGlyHIOvRu2/dzPByVf68fVZ98t5Ir2Oivn9fIouePKXNYwu
50RUP1aGun/fHY0Rok+1g==
X-ME-Sender: <xms:zsU6aANjTEAlnGiHWtWCffrNu8VWlhCKVGjtCGIP4yGsnEJduXgNmQ>
<xme:zsU6aG_2NCq5nvOkkDIDe-p8yai_bZjqVVMx05KZ5IXz2CSgrXN2hUXtu7WiSSo63
f6qp19o0laggI2dAps>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudegleculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
jghfufgtgfesthejredtredttdenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfd
cuoegrrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeefffelleduheeh
leejtdfhheegtdffhedtffeileehkeetffevtdegheduhfeiudenucffohhmrghinhepkh
gvrhhnvghlrdhorhhgpdhgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedt
necurfgrrhgrmhepmhgrihhlfhhrohhmpegrrhhnugesrghrnhgusgdruggvpdhnsggprh
gtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehtohhrvhgrlhgu
sheslhhinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtoheplhhinhhugi
dqrghrmhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggurdhorhhgpdhrtghp
thhtohepshhotgeslhhishhtshdrlhhinhhugidruggvvhdprhgtphhtthhopehlihhnuh
igqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:zsU6aHT_qPXIUat_cLmSbpwaeb0D0wbCwQ7nxDwVbhofMGZnpRnOng>
<xmx:zsU6aItoSsqYYiK6UlEw6MrfpMLePlQxgoR7MyKdg-6ws_8LKb4wDg>
<xmx:zsU6aIcpAyJwZrruElvN7x1ZmovPlSnCwb5Ljb1OfoHRcF-0LJFWoA>
<xmx:zsU6aM2UAi4m79AYAseT8yT1kLjhRgyqMsQlDbLD5ypYNHupsHyBJg>
<xmx:zsU6aNWpeym9QRoqb47kTH_xF-0NpyUDVBkvmFDaFalDZWN9uYSFE9Mk>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id 71D26700060; Sat, 31 May 2025 05:03:10 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-ThreadId: T97262eb0f1793ba4
Date: Sat, 31 May 2025 11:02:50 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <0744995a-856f-431f-b694-6919ca161c65@xxxxxxxxxxxxxxxx>
In-Reply-To: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL 2/5] ARM: soc updates for 6.16
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following changes since commit 9c32cda43eb78f78c73aee4aa344b777714e259b:

Linux 6.15-rc3 (2025-04-20 13:43:47 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-arm-6.16

for you to fetch changes up to 16066e29d3f5a45cd1ced62dacfce45c9560be1d:

Merge tag 'arm-soc/for-6.16/maintainers' of https://github.com/Broadcom/stblinux into soc/arm (2025-05-22 13:06:28 +0200)

----------------------------------------------------------------
ARM: soc updates for 6.16

The main update in size is the removal of the TI DaVinci DA830 SoC
support. DA830 is similar to DA850, which remain supported, but
only the reference board was ever supported, and we removed that
one 3 years ago as it had never been converted to devicetree.

There are some other cleanups for OMAP4 and a few boards using
old GPIO interfaces.

----------------------------------------------------------------
Adam Ford (1):
ARM: dts: davinci: da850-evm: Increase fifo threshold

Andreas Kemnade (2):
ARM: omap2plus_defconfig: enable I2C devices of GTA04
ARM: omap: pmic-cpcap: do not mess around without CPCAP or OMAP4

Andy Shevchenko (1):
ARM: s3c: stop including gpio.h

Arnd Bergmann (4):
Merge tag 'arm-gpio-set-conversion-for-v6.16-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into soc/arm
Merge tag 'omap-for-v6.16/soc-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap into soc/arm
Merge tag 'davinci-updates-for-v6.16-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into soc/arm
Merge tag 'arm-soc/for-6.16/maintainers' of https://github.com/Broadcom/stblinux into soc/arm

Bartosz Golaszewski (5):
ARM: orion/gpio: use new line value setter callbacks
ARM: sa1100/gpio: use new line value setter callbacks
ARM: scoop/gpio: use new line value setter callbacks
ARM: s3c/gpio: use new line value setter callbacks
ARM: davinci: remove support for da830

Krzysztof Kozlowski (1):
ARM: broadcom: MAINTAINERS: Cover bcm2712 files

Parvathi Pudi (1):
bus: ti-sysc: PRUSS OCP configuration

Sukrut Bellary (1):
ARM: OMAP2+: Fix l4ls clk domain handling in STANDBY

MAINTAINERS | 1 +
arch/arm/boot/dts/ti/davinci/da850-evm.dts | 2 +-
arch/arm/common/sa1111.c | 6 +-
arch/arm/common/scoop.c | 7 +-
arch/arm/configs/davinci_all_defconfig | 1 -
arch/arm/configs/multi_v5_defconfig | 1 -
arch/arm/configs/omap2plus_defconfig | 8 +
arch/arm/mach-davinci/Kconfig | 7 -
arch/arm/mach-davinci/Makefile | 1 -
arch/arm/mach-davinci/cputype.h | 1 -
arch/arm/mach-davinci/da830.c | 506 ----------------------------
arch/arm/mach-davinci/da850.c | 1 -
arch/arm/mach-davinci/da8xx.h | 2 -
arch/arm/mach-davinci/devices-da8xx.c | 1 -
arch/arm/mach-davinci/irqs.h | 27 --
arch/arm/mach-davinci/mux.h | 404 ----------------------
arch/arm/mach-davinci/psc.h | 3 -
arch/arm/mach-omap2/clockdomain.h | 1 +
arch/arm/mach-omap2/clockdomains33xx_data.c | 2 +-
arch/arm/mach-omap2/cm33xx.c | 14 +-
arch/arm/mach-omap2/pmic-cpcap.c | 6 +-
arch/arm/mach-s3c/gpio-samsung.c | 10 +-
arch/arm/plat-orion/gpio.c | 6 +-
drivers/bus/ti-sysc.c | 19 +-
24 files changed, 67 insertions(+), 970 deletions(-)
delete mode 100644 arch/arm/mach-davinci/da830.c


Return-Path: <linux-kernel+bounces-669019-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7AB7C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:06:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id B57DF1BA3BD0
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:06:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 833082376E6;
Sat, 31 May 2025 09:06:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="SI2Oc7/T";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="IcOOOHw8"
Received: from fout-a6-smtp.messagingengine.com (fout-a6-smtp.messagingengine.com [103.168.172.149])
(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 0008155E69
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:06:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682380; cv=none; b=BAFKRmUJUnVH7AJAV5pLdQYCyCpF85b7TEmALk/L9DQMDIEuJhTkBMRXDz/waXke7KIBnTPEP8lSOD+52gMlbRwsUmq2biXpZBlkDS5xAZrBzTR9b3a6Io35388FGqK4NJ4cn15Q/DeVUINHtiz/iXpzpHhpBqa8tTl7Chceguk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682380; c=relaxed/simple;
bh=WRXGXpztMvNElSTu3kAH+5cnzYFZ4yK6p6+w72tEU24=;
h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References:
Subject:Content-Type; b=vGEibIhKkKvF0FVVc+biQQA/TmeUObDoQhbNbfT1MWHtqztVtC6TbHVF71nx/8G/jeRKq67+LL/wLD0ZC3WHaaKk8XAR7j77d/3OgYXduqaaViO2GToxMZ28k3HkCNAEv5Cs1GL3sUA+654PPXdbqByln4ux+0FACXDzKlBfVKE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=SI2Oc7/T; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=IcOOOHw8; arc=none smtp.client-ip=103.168.172.149
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfout.phl.internal (Postfix) with ESMTP id 166CB13802B4;
Sat, 31 May 2025 05:06:14 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 05:06:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1748682374;
x=1748768774; bh=uKdbo3WnKQeAfAvhc/ViFElNu4LqcTYPpUpsUOiCxGE=; b=
SI2Oc7/Ta2ctvFnyZoL2X+rII28RaEjeblJO1/AwELyoMjXnETcXYOch80RLmNRi
eKvEYPCM+optRHUCPA7uMLUaTSLqaL+L864irUKX54e/8+aKPpe0edSTtlFtSETe
pWkE8U3tQqToTONubpxSjIoSqHJw1IXpwT0D4UWRzcyxQT1LBJc/Im7hKfuU7pru
c0RsyZjwGT/7NXSKDPBxVZxkt6UDL+DhO8Tui9ApCt0juMU29UmTA6Tz7K+nBo8U
QFRDb3zmAKlqCNmLpP77hOMX9w0uAIJbJQSIZyvYwi+J4PC1NFj1/9ESH3Zggqp1
qFIl/ADO+UBM6EoulZHJZw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748682374; x=
1748768774; bh=uKdbo3WnKQeAfAvhc/ViFElNu4LqcTYPpUpsUOiCxGE=; b=I
cOOOHw8cEhEskK21Tt5puAbXpCu7suwR57nXt12ChH0mGR6jwvQy1WJ98c8P4lQp
srCvK2IV8o2y58SknNA/WYHfgHDjmSu2vVpvIGeTB1wieRSYoGMOIggkqrlJcJcM
MbzxLQfwtOmsiTXh/xyyWIwviBPy3QwacujT0gdIgGTA8UrBABM1b3zs8JCJh4Vr
Do9FaZT1ZekOQcCBEteC78ZDKK/2zCRtyoCKMJSVVvXjuVUKZWPVzkAqtuDHzHSJ
yLsHXD9rtQpzC1vubCOqDRQuc2cbWVZUTyGUpY0QsB/mtCpF6GDwpwlTsl0Do5JY
sVexD7SurEFnM1dmrFdpA==
X-ME-Sender: <xms:hcY6aBtJ3cOgAqMPO0x7a2i-gfSh1XWFWgvYAZoOzWWbycq_397DPw>
<xme:hcY6aKd-wEsvTL0Z2PSFqCZciqhB2xF4mSlVS-BgZZneXVZXTli_TZhVQm8_47cq8
Wwy3hWV5C2LS8qhx8A>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudehtdculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
jghfufgtgfesthhqredtredtjeenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfd
cuoegrrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeekvdeuhfeitdeu
ieejvedtieeijeefleevffefleekieetjeffvdekgfetuefhgfenucffohhmrghinhepkh
gvrhhnvghlrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghi
lhhfrhhomheprghrnhgusegrrhhnuggsrdguvgdpnhgspghrtghpthhtohepgedpmhhoug
gvpehsmhhtphhouhhtpdhrtghpthhtohepthhorhhvrghlughssehlihhnuhigqdhfohhu
nhgurghtihhonhdrohhrghdprhgtphhtthhopehlihhnuhigqdgrrhhmqdhkvghrnhgvlh
eslhhishhtshdrihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehsohgtsehlihhs
thhsrdhlihhnuhigrdguvghvpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvgh
gvrhdrkhgvrhhnvghlrdhorhhg
X-ME-Proxy: <xmx:hcY6aExPFL7QIEEfZoiffm_Px8gNg00mRBqB6kJts3AVnI8M-jUMdA>
<xmx:hcY6aIN313SVt04dBpsMKFXfpISSQRRCKHROatgKikf-9pC7FQ6LTA>
<xmx:hcY6aB9ZJViutMSEYRTQckNRjmTnFfhRbGVRJpij7COhef7LCaLWUA>
<xmx:hcY6aIVoc6FKwgZWOfWegUQsMNlH_N-VBkHYUHDuriw2vkhi9ru9kA>
<xmx:hsY6aETUhpbgu6qgAa3-WkO38KZXUeiSJsVlB-LTC9a9dmWy6FkM8BUI>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id BCBE1700060; Sat, 31 May 2025 05:06:13 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Date: Sat, 31 May 2025 11:05:53 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <70c2f540-d534-4b17-8daf-4409845f3a5d@xxxxxxxxxxxxxxxx>
In-Reply-To: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL 3/5] soc: defconfig updates for 6.16
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following changes since commit 9c32cda43eb78f78c73aee4aa344b777714e2=
59b:

Linux 6.15-rc3 (2025-04-20 13:43:47 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-d=
efconfig-6.16

for you to fetch changes up to ae006498a0723e1cbb14fb7c56a1fa4642791897:

Merge tag 'v6.16-rockchip-defconfig64-1' of https://git.kernel.org/pub=
/scm/linux/kernel/git/mmind/linux-rockchip into soc/defconfig (2025-05-2=
2 13:01:41 +0200)

----------------------------------------------------------------
soc: defconfig updates for 6.16

The usual defconfig updates enable configuration options for drivers
that got added. A few SoC specific options are enabled in Kconfig
files instead, in place of the defconfig files.

----------------------------------------------------------------
Arnd Bergmann (7):
Merge tag 'renesas-arm-defconfig-for-v6.16-tag2' of https://git.ke=
rnel.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/defconfig
Merge tag 'imx-defconfig-6.16' of https://git.kernel.org/pub/scm/l=
inux/kernel/git/shawnguo/linux into soc/defconfig
Merge tag 'ti-k3-config-for-v6.16' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/ti/linux into soc/defconfig
Merge tag 'riscv-config-for-v6.16' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/conor/linux into soc/defconfig
Merge tag 'qcom-arm64-defconfig-for-6.16-2' of https://git.kernel.=
org/pub/scm/linux/kernel/git/qcom/linux into soc/defconfig
Merge tag 'mtk-defconfig-for-v6.16' of https://git.kernel.org/pub/=
scm/linux/kernel/git/mediatek/linux into soc/defconfig
Merge tag 'v6.16-rockchip-defconfig64-1' of https://git.kernel.org=
/pub/scm/linux/kernel/git/mmind/linux-rockchip into soc/defconfig

Biju Das (1):
arm64: defconfig: Enable Renesas RZ/G2L GPT config

Dominik Haller (1):
arm64: defconfig: Enable TMP102 as module

Francesco Dolcini (1):
arm64: defconfig: Add Toradex Embedded Controller config

Geert Uytterhoeven (1):
ARM: shmobile: defconfig: Enable more support for RZN1D-DB/EB

Haylen Chu (1):
riscv: defconfig: spacemit: enable clock controller driver for Spa=
cemiT K1

Jayesh Choudhary (1):
arm64: defconfig: Add CDNS_DSI and CDNS_PHY config

Judith Mendez (1):
arm64: defconfig: Enable hwspinlock and eQEP for K3

Kuninori Morimoto (1):
arm64: defconfig: Add Renesas MSIOF sound support

Lad Prabhakar (4):
soc: renesas: Kconfig: Enable SoCs by default when ARCH_RENESAS is=
set
arm64: defconfig: Remove individual Renesas SoC entries
arm: shmobile_defconfig: Drop individual Renesas SoC entries
arm: multi_v7_defconfig: Drop individual Renesas SoC entries

Michal Wilczynski (1):
riscv: Enable PM_GENERIC_DOMAINS for T-Head SoCs

Nicolas Frattaroli (1):
arm64: defconfig: Enable Rockchip SAI and ES8328

Nishanth Menon (1):
arm64: defconfig: Enable TPIC2810 GPIO expander

N=C3=ADcolas F. R. A. Prado (1):
arm64: defconfig: Enable configs for MediaTek Genio EVK boards

Sricharan Ramabadhran (1):
arm64: defconfig: Enable IPQ5424 RDP466 base configs

Tudor Ambarus (1):
arm64: defconfig: enable ACPM protocol and Exynos mailbox

Vignesh Raman (1):
arm64: defconfig: mediatek: enable PHY drivers

Yixun Lan (1):
riscv: defconfig: spacemit: enable gpio support for K1 SoC

arch/arm/configs/multi_v7_defconfig | 19 --------------
arch/arm/configs/shmobile_defconfig | 26 +++++--------------
arch/arm64/configs/defconfig | 51 ++++++++++++++++++++----------=
-------
arch/riscv/Kconfig.socs | 1 +
arch/riscv/configs/defconfig | 3 +++
drivers/soc/renesas/Kconfig | 42 ++++++++++++++++++++++++++++++
6 files changed, 80 insertions(+), 62 deletions(-)


Return-Path: <linux-kernel+bounces-669020-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6506E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:07:30 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 6C4A51BA43B9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:07:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 73B00236A9F;
Sat, 31 May 2025 09:07:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="MOWwqF/L";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="Oq9qFGg8"
Received: from fhigh-a1-smtp.messagingengine.com (fhigh-a1-smtp.messagingengine.com [103.168.172.152])
(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 62AE29460
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:07:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682436; cv=none; b=gdWU6eHsdp/Cc91pl5r2W6xv/ySEm1lLvmrSEvIY/OdWE+pa0BHqzJ58KTn6jn3YAWP4gDPtWZvZEZmqtv87NBrDs9WXUSMcQKWP5Hz0DTc+dhz2ku1NBSLAkiYPMbcQRf7F5CWgw3MFtUWNAPjTcqEhzIeyuoaSadmiLo+ZzZY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682436; c=relaxed/simple;
bh=4ZYLc8Zn1rfuN+c6iNApSM4/MwUITsXqpTrziZBVtf8=;
h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References:
Subject:Content-Type; b=D3lweVLWZErWbvKOOT19EM/dJuTswW0nYDerP5ywukmYx2xMXuklaiAeta6l0u1tCQWU7UbJwPa+qgxi3h9SRtvXHbZIL5P0m94ThlKC1AMhbIuCnO2n3eGqE/1OxuPeMxfVkVQfsmY8YgkFeaAk2E0TVazj92gGZ0QdMjskZFA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=MOWwqF/L; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=Oq9qFGg8; arc=none smtp.client-ip=103.168.172.152
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfhigh.phl.internal (Postfix) with ESMTP id 78AF41140138;
Sat, 31 May 2025 05:07:08 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 05:07:08 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1748682428;
x=1748768828; bh=WYZpE+1VdJaKRvjRDJJJu1Eh9gtXks9fzcVGHujkPsI=; b=
MOWwqF/Lh7jgy+pJpvFI66RgtTMtkVJ4g7T56vheaquc4gCw/fuHiN8AS11OK8oQ
RGzLTC3iXNtWcTuh8PP/VAo+EkLe886nvJ4x/TmdMgABk9KNPTlV8txCUw4W+J1r
lNzCqooKpuNgHB1Ho7LXC3CVpkzG1hZNTHAULJwK8nEPMAalFtgTbdPyXzo20YEv
1YhRGlkUO55jZE3WvBBCbpzgWQd2S6zChe0u0qcsFWYEzTSuOnecyuuAlrJdMYBl
ASv652UWmMhYDV7BaSHxWA754nusp16uOPvx+81o7ihlSJrV3CEoYHXUf8Vq9jsF
D+Kt25Gsy8RHT1R1cSXm6Q==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748682428; x=
1748768828; bh=WYZpE+1VdJaKRvjRDJJJu1Eh9gtXks9fzcVGHujkPsI=; b=O
q9qFGg8doLUZRZKtA1mB1z8CSZG1csyBkuYoBfQZTFHU19wvb4scK6tVAa0VgFz0
57o9CgaAqiwMf167bghb6Q8ZytXPewgDfMdaGIK44q1fvMcUzHekQ/LTKDCe5Op/
qz40A3NvpM5JsM8kuTNAtWuXpDBmzw1pI9aA3qghrcXdAzWXu/6qjkp08ntoiq1K
PM+HFwdLRF62EK3WJNCGJhonAxH6Fy5lc2rBVO6Aa2aZZ4Iec7jyVFxZ4s9loiys
HZQyZ1tzXt4WmtBbignrCpP3uEuwAKj2CBxGsOqNHWuVvBw4etB5FPjPd0aXDTwj
jz0WEu8onSttHcWN3bSBQ==
X-ME-Sender: <xms:vMY6aPCAZuPqEqzLQhWicTrAoftUWno-iJmh921PuvpvCB1GNeJDKw>
<xme:vMY6aFiisi_YFacr5i6uvfM5ZekjPBpDiAs71alkuV-kZpP0_ibquQTzbUZsTpBzp
6nyfSk9yWevsaO_V_0>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudehtdculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
jghfufgtgfesthhqredtredtjeenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfd
cuoegrrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeefueegkeffveeu
geehieehiedukeegfefhffeutdettdffteeluefhheetkeekvdenucffohhmrghinhepkh
gvrhhnvghlrdhorhhgpdhgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedt
necurfgrrhgrmhepmhgrihhlfhhrohhmpegrrhhnugesrghrnhgusgdruggvpdhnsggprh
gtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehtohhrvhgrlhgu
sheslhhinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtoheplhhinhhugi
dqrghrmhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggurdhorhhgpdhrtghp
thhtohepshhotgeslhhishhtshdrlhhinhhugidruggvvhdprhgtphhtthhopehlihhnuh
igqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:vMY6aKmHar0NSNIl9VwiKzAiRb8Ct2c9AIcJBlNXMGIqlALBSdaZkA>
<xmx:vMY6aBwF7T7ZYkVz9dpoaAFf-CY0PAI4lZzfSZwjRrSdIAagdG79Qg>
<xmx:vMY6aEQZlvcoObktoFgJt87FyQkraxQUHBQVzL2tGqlqHUSZMsXJyg>
<xmx:vMY6aEZ2MgnfTVPiHV37sQrEgmZLFrC4cdmEPRWC_190o8qu1VbyJw>
<xmx:vMY6aLaRIL6NrxAlzuvt7FNdEELyJVdEtwDBVPQMlasquP5JW8kQklGE>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id 27CCC700060; Sat, 31 May 2025 05:07:08 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-ThreadId: T97262eb0f1793ba4
Date: Sat, 31 May 2025 11:06:47 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
In-Reply-To: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL 4/5] soc: devicetree updates for 6.16
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following changes since commit 9c32cda43eb78f78c73aee4aa344b777714e2=
59b:

Linux 6.15-rc3 (2025-04-20 13:43:47 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-d=
t-6.16

for you to fetch changes up to 3f07353e2fd3e154921e539044b26e85ca910dbe:

Merge tag 'renesas-dts-for-v6.16-tag5' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/geert/renesas-devel into soc/dt (2025-05-30 09:10:42=
+0200)

----------------------------------------------------------------
soc: devicetree updates for 6.16

There are 11 newly supported SoCs, but these are all either new
variants of existing designs, or straig reuses of the existing
chip in a new package:

- RK3562 is a new chip based on the old Cortex-A53 core, apparently
a low-cost version of the Cortex-A55 based RK3568/RK3566.

- NXP i.MX94 is a minor variation of i.MX93/i.MX95 with a different
set of on-chip peripherals.

- Renesas RZ/V2N (R9A09G056) is a new member of the larger RZ/V2 family

- Amlogic S6/S7/S7D

- Samsung Exynos7870 is an older chip similar to Exynos7885

- WonderMedia wm8950 is a minor variation on the wm8850 chip
- Amlogic s805y is almost idential to s805x

- Allwinner A523 is similar to A527 and T527

- Qualcomm MSM8926 is a variant of MSM8226

- Qualcomm Snapdragon X1P42100 is related to R1E80100

There are also 65 boards, including reference designs for the chips
above, this includes

- 12 new boards based on TI K3 series chips, most of them from
Toradex

- 10 devices using Rockchips RK35xx and PX30 chips

- 2 phones and 2 laptops based on Qualcomm Snapdragon designs

- 10 NXP i.MX8/i.MX9 boards, mostly for embedded/industrial uses

- 3 Samsung Galaxy phones based on Exynos7870

- 5 Allwinner based boards using a variety of ARMv8 chips

- 9 32-bit machines, each based on a different SoC family

Aside from the new hardware, there is the usual set of cleanups and
newly added hardware support on existing machines, for a total of 965
devicetree changesets.

----------------------------------------------------------------
Aaron Kling (12):
arm64: tegra: Enable PWM fan on the Jetson TX1 Devkit
arm64: tegra: Enable PWM fan on the Jetson TX2 Devkit
arm64: tegra: Drop remaining serial clock-names and reset-names
arm64: tegra: Add DMA properties for Tegra186 and Tegra194 UARTs
arm64: tegra: p3310: Explicitly enable GPU
arm64: tegra: p2180: Explicitly enable GPU
arm64: tegra: Bump #address-cells and #size-cells on Tegra186
arm64: tegra: Add uartd serial alias for Jetson TX1 module
media: dt-bindings: Document Tegra186 and Tegra194 cec
arm64: tegra: Add fallback CEC compatibles
arm64: tegra: Add CEC controller on Tegra210
arm64: tegra: Wire up CEC to devkits

Abel Vesa (12):
arm64: dts: qcom: x1e80100-crd: Describe the Parade PS8830 retimers
arm64: dts: qcom: x1e80100-crd: Enable external DisplayPort support
arm64: dts: qcom: x1e80100-t14s: Describe the Parade PS8830 retime=
rs
arm64: dts: qcom: x1e80100-t14s: Enable external DisplayPort suppo=
rt
dt-bindings: arm: qcom: Document Lenovo ThinkPad T14s Gen 6 LCD an=
d OLED
arm64: dts: qcom: x1e78100-t14s: Add LCD variant with backlight su=
pport
arm64: dts: qcom: x1e78100-t14s: Add OLED variant
arm64: dts: qcom: x1e001de-devkit: Describe USB retimers resets pi=
n configs
arm64: dts: qcom: x1e001de-devkit: Fix pin config for USB0 retimer=
vregs
arm64: dts: qcom: x1e80100: Fix PCIe 3rd controller DBI size
arm64: dts: qcom: x1e80100-*: Drop useless DP3 compatible override
arm64: dts: qcom: x1e001de-devkit: Enable support for both Type-A =
USB ports

Abhinaba Rakshit (2):
arm64: dts: qcom: qcs615: add TRNG node
arm64: dts: qcom: qcs615: add QCrypto nodes

Adam Ford (10):
arm64: dts: imx8mm-beacon: Fix RTC capacitive load
arm64: dts: imx8mn-beacon: Fix RTC capacitive load
arm64: dts: imx8mp-beacon: Fix RTC capacitive load
arm64: dts: imx8mm-beacon: Set SAI5 MCLK direction to output for H=
DMI audio
arm64: dts: imx8mn-beacon: Set SAI5 MCLK direction to output for H=
DMI audio
arm64: dts: imx8mm-beacon: Configure Ethernet PHY reset and GPIO I=
RQ
arm64: dts: imx8mn-beacon: Configure Ethernet PHY reset and GPIO I=
RQ
arm64: dts: imx8mm-beacon: Enable RTC interrupt and wakeup-source
arm64: dts: imx8mn-beacon: Enable RTC interrupt and wakeup-source
arm64: dts: imx8mp-beacon: Enable RTC interrupt and wakeup-source

Ajit Pandey (1):
arm64: dts: qcom: sm4450: Add RPMh power domains support

Akhil R (1):
arm64: tegra: Add I2C aliases for Tegra234

Aleksandrs Vinarskis (6):
arm64: dts: qcom: x1e80100-dell-xps13-9345: Enable external DP sup=
port
arm64: dts: qcom: x1e001de-devkit: Enable HBR3 on external DPs
arm64: dts: qcom: x1e80100-hp-x14: Enable HBR3 on external DPs
arm64: dts: qcom: x1e80100-qcp: Enable HBR3 on external DPs
arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: enable MICs LDO
dt-bindings: arm: qcom: Add Asus Zenbook A14

Alexander Stein (11):
ARM: dts: ls1021a-tqmals1021a: Fix license
ARM: dts: ls1021a-tqmals1021a: Add vcc-supply for spi-nor
ARM: dts: ls1021a-tqmals1021a: Add HDMI overlay
ARM: dts: ls1021a-tqmals1021a: Add LVDS overlay for Tianma TM070JV=
GH33
ARM: dts: ls1021a-tqmals1021a: Add overlay for CDTech FC21 RGB dis=
play
ARM: dts: ls1021a-tqmals1021a: Add overlay for CDTech DC44 RGB dis=
play
ARM: dts: ls1021a-tqmals1021a: change sound card model name
arm64: dts: imx8mp-tqma8mpql-mba8mp-ras314: Add Raspberry Pi Camer=
a V2 overlay
arm64: dts: freescale: add initial device tree for TQMa8XxS
arm64: dt: imx95: Add TQMa95xxSA
dt: bindings: arm: add bindings for TQMa95xxSA

Alexey Charkov (4):
dt-bindings: arm: vt8500: Add VIA APC Rock/Paper boards
ARM: dts: vt8500: Add VIA APC Rock/Paper board
ARM: dts: vt8500: add DT nodes for the system config ID register
ARM: dts: vt8500: list all four timer interrupts

Alexey Klimov (1):
arm64: dts: qcom: qrb5165-rb5: add compressed playback support

Alexey Minnekhanov (5):
arm64: dts: qcom: sdm630: Add missing resets to mmc blocks
arm64: dts: qcom: sdm660-xiaomi-lavender: Add missing SD card dete=
ct GPIO
arm64: dts: qcom: sdm630: Add modem metadata mem
arm64: dts: qcom: sdm660-lavender: Add missing USB phy supply
arm64: dts: qcom: sda660-ifc6560: Fix dt-validate warning

Alok Tiwari (1):
arm64: dts: qcom: sm8350: Fix typo in pil_camera_mem node

Andre Przywara (14):
arm64: dts: allwinner: Add Allwinner A523 .dtsi file
dt-bindings: vendor-prefixes: Add YuzukiHD name
dt-bindings: arm: sunxi: Add new board names for A523 generation
arm64: dts: allwinner: a523: add Avaota-A1 router support
arm64: dts: allwinner: a523: add X96Q-Pro+ support
arm64: dts: allwinner: a523: add Radxa A5E support
dt-bindings: arm: sunxi: Add YuzukiHD Chameleon board name
arm64: dts: allwinner: h616: add YuzukiHD Chameleon support
arm64: dts: allwinner: h616: Add Mali GPU node
arm64: dts: allwinner: h616: enable Mali GPU for all boards
arm64: dts: allwinner: a100: set maximum MMC frequency
dt-bindings: vendor-prefixes: Add Liontron name
dt-bindings: arm: sunxi: Add Liontron H-A133L board name
arm64: dts: allwinner: a100: add Liontron H-A133L board support

Andreas Kemnade (2):
ARM: dts: omap4: panda: fix resources needed for Wifi
ARM: dts: omap4: panda: cleanup bluetooth

Andrej Picej (1):
arm64: dts: imx8mm-phyboard-polis-peb-av-10: Set lvds-vod-swing

Andrew Davis (7):
dt-bindings: soc: ti: ti,j721e-system-controller: Add PCIe ctrl pr=
operty
arm64: dts: ti: k3-j721e: Add PCIe ctrl node to scm_conf region
arm64: dts: ti: k3-j7200: Add PCIe ctrl node to scm_conf region
arm64: dts: ti: k3-j721s2: Add PCIe ctrl node to scm_conf region
arm64: dts: ti: k3-am64: Add PCIe ctrl node to main_conf region
dt-bindings: mfd: ti,j721e-system-controller: Add compatible strin=
g for AM654
arm64: dts: ti: am65x: Add missing power-supply for Rocktech-rk101=
panel

Andy Yan (9):
arm64: dts: rockchip: aliase sdhci as mmc0 for rk3566 box demo
ARM: dts: rockchip: Add aliases for rk3036-kylin MMC devices
arm64: dts: rockchip: Rename hdmi-con to hdmi0-con for Cool Pi CM5=
EVB
arm64: dts: rockchip: Enable HDMI1 on Cool Pi CM5 EVB
arm64: dts: rockchip: Enable HDMI audio outputs for Cool Pi CM5 EVB
arm64: dts: rockchip: Add eDP1 dt node for rk3588
arm64: dts: rockchip: Enable eDP display for Cool Pi GenBook
ARM: dts: rockchip: Add ref clk for hdmi
Revert "ARM: dts: rockchip: drop grf reference from rk3036 hdmi"

AngeloGioacchino Del Regno (8):
arm64: dts: mediatek: mt8195: Reparent vdec1/2 and venc1 power dom=
ains
dt-bindings: display: mediatek: Add compatibles for MT8188 MDP3
dt-bindings: media: mediatek: mdp3: Add compatibles for MT8188 MDP3
arm64: dts: mediatek: mt8188: Add all Multimedia Data Path 3 nodes
arm64: dts: mediatek: Add MT6893 pinmux macro header file
arm64: dts: mediatek: mt8390-genio-common: Add Display on DSI0
arm64: dts: mediatek: mt8188: Address binding warnings for MDP3 no=
des
Revert "arm64: dts: mediatek: mt8390-genio-common: Add firmware-na=
me for scp0"

Arnd Bergmann (43):
Merge tag 'socfpga_dts_updates_for_v6.15' of https://git.kernel.or=
g/pub/scm/linux/kernel/git/dinguyen/linux into soc/dt
Merge tag 'renesas-dt-bindings-for-v6.16-tag1' of https://git.kern=
el.org/pub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
Merge tag 'renesas-dts-for-v6.16-tag1' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
Merge tag 'renesas-dts-for-v6.16-tag2' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
Merge tag 'arm-soc/for-6.16/devicetree' of https://github.com/Broa=
dcom/stblinux into soc/dt
Merge tag 'arm-soc/for-6.16/devicetree-arm64' of https://github.co=
m/Broadcom/stblinux into soc/dt
Merge tag 'asahi-soc-dt-6.16' of https://github.com/AsahiLinux/lin=
ux into soc/dt
Merge tag 'v6.16-rockchip-dts64-1' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/mmind/linux-rockchip into soc/dt
Merge tag 'v6.16-rockchip-dts32-1' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/mmind/linux-rockchip into soc/dt
Merge tag 'tegra-for-6.16-dt-bindings' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/tegra/linux into soc/dt
Merge tag 'tegra-for-6.16-arm64-dt' of https://git.kernel.org/pub/=
scm/linux/kernel/git/tegra/linux into soc/dt
Merge tag 'tegra-for-6.16-arm-dt' of https://git.kernel.org/pub/sc=
m/linux/kernel/git/tegra/linux into soc/dt
Merge tag 'omap-for-v6.16/dt-signed' of https://git.kernel.org/pub=
/scm/linux/kernel/git/khilman/linux-omap into soc/dt
Merge tag 'imx-bindings-6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/shawnguo/linux into soc/dt
Merge tag 'imx-dt-6.16' of https://git.kernel.org/pub/scm/linux/ke=
rnel/git/shawnguo/linux into soc/dt
Merge tag 'imx-dt64-6.16' of https://git.kernel.org/pub/scm/linux/=
kernel/git/shawnguo/linux into soc/dt
Merge tag 'thead-dt-for-v6.16' of https://github.com/pdp7/linux in=
to soc/dt
Merge tag 'ti-k3-dt-for-v6.16' of https://git.kernel.org/pub/scm/l=
inux/kernel/git/ti/linux into soc/dt
Merge tag 'samsung-dt64-6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/krzk/linux into soc/dt
Merge tag 'amlogic-arm-dt-for-v6.16' of https://git.kernel.org/pub=
/scm/linux/kernel/git/amlogic/linux into soc/dt
Merge tag 'amlogic-arm64-dt-for-v6.16' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/amlogic/linux into soc/dt
Merge tag 'dt64-cleanup-6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/krzk/linux-dt into soc/dt
Merge tag 'nuvoton-arm-6.16-devicetree' of https://git.kernel.org/=
pub/scm/linux/kernel/git/joel/bmc into soc/dt
Merge tag 'qcom-arm64-for-6.16' of https://git.kernel.org/pub/scm/=
linux/kernel/git/qcom/linux into soc/dt
Merge tag 'dt-vt8500-6.16' of https://git.kernel.org/pub/scm/linux=
/kernel/git/krzk/linux-dt into soc/dt
Merge tag 'qcom-arm32-for-6.16' of https://git.kernel.org/pub/scm/=
linux/kernel/git/qcom/linux into soc/dt
Merge tag 'spacemit-dt-for-6.16-1' of https://github.com/spacemit-=
com/linux into soc/dt
Merge tag 'stm32-dt-for-v6.16-1' of https://git.kernel.org/pub/scm=
/linux/kernel/git/atorgue/stm32 into soc/dt
Merge tag 'sunxi-dt-for-6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/sunxi/linux into soc/dt
Merge tag 'at91-dt-6.16' of https://git.kernel.org/pub/scm/linux/k=
ernel/git/at91/linux into soc/dt
Merge tag 'microchip-dt64-6.16' of https://git.kernel.org/pub/scm/=
linux/kernel/git/at91/linux into soc/dt
Merge tag 'riscv-dt-for-v6.16' of https://git.kernel.org/pub/scm/l=
inux/kernel/git/conor/linux into soc/dt
Merge tag 'renesas-dts-for-v6.16-tag3' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
Merge tag 'renesas-dts-for-v6.16-tag4' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/geert/renesas-devel into soc/dt
Merge tag 'mvebu-dt64-6.16-1' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/gclement/mvebu into soc/dt
Merge tag 'v6.16-rockchip-dts64-2' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/mmind/linux-rockchip into soc/dt
Merge tag 'v6.16-rockchip-dts64-3' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/mmind/linux-rockchip into soc/dt
Merge tag 'v6.16-rockchip-dts32-2' of https://git.kernel.org/pub/s=
cm/linux/kernel/git/mmind/linux-rockchip into soc/dt
Merge tag 'mtk-dts64-for-v6.16-2' of https://git.kernel.org/pub/sc=
m/linux/kernel/git/mediatek/linux into soc/dt
Merge tag 'qcom-arm32-for-6.16-2' of https://git.kernel.org/pub/sc=
m/linux/kernel/git/qcom/linux into soc/dt
Merge tag 'qcom-arm64-for-6.16-2' of https://git.kernel.org/pub/sc=
m/linux/kernel/git/qcom/linux into soc/dt
Merge tag 'juno-updates-6.16' of https://git.kernel.org/pub/scm/li=
nux/kernel/git/sudeep.holla/linux into soc/dt
Merge tag 'renesas-dts-for-v6.16-tag5' of https://git.kernel.org/p=
ub/scm/linux/kernel/git/geert/renesas-devel into soc/dt

Artur Weber (3):
ARM: dts: bcm2166x-common: Add pinctrl node
ARM: dts: bcm2166x: Add bcm2166x-pinctrl DTSI
ARM: dts: Drop DTS for BCM59056 PMU

Axe Yang (1):
arm64: dts: mediatek: mt8186-corsola: make SDIO card removable

Barnab=C3=A1s Cz=C3=A9m=C3=A1n (1):
arm64: dts: qcom: msm8917-xiaomi-riva: Add display backlight

Ben Wolsieffer (1):
ARM: dts: stm32: add low power timer on STM32F746

Biju Das (13):
arm64: dts: renesas: r9a09g047: Add SDHI0-SDHI2 nodes
arm64: dts: renesas: r9a09g057: Add support for enabling SDHI inte=
rnal regulator
arm64: dts: renesas: rzg3e-smarc-som: Enable SDHI{0,2}
arm64: dts: renesas: rzg3e-smarc-som: Add support to enable SD on =
SDHI0
arm64: dts: renesas: r9a09g047e57-smarc: Enable SDHI1
arm64: dts: renesas: r9a09g047: Add ICU node
arm64: dts: renesas: Remove undocumented compatible micron,mt25qu5=
12a
arm64: dts: renesas: r9a09g047: Add CANFD node
arm64: dts: renesas: r9a09g047e57-smarc: Enable CANFD
arm64: dts: renesas: r9a09g047e57-smarc: Enable CAN Transceiver
arm64: dts: renesas: r9a07g044: Add GPT support
arm64: dts: renesas: r9a07g054: Add GPT support
arm64: dts: renesas: rzg2l-smarc: Enable GPT on carrier board

Bjorn Andersson (5):
Merge branch '20250203063427.358327-2-alexeymin@xxxxxxxxxxxxxxxx' =
into arm64-for-6.15
Merge branch '20250313110359.242491-1-quic_mmanikan@xxxxxxxxxxx' i=
nto arm64-for-6.15
Merge branch 'arm64-for-6.15' into arm64-for-6.16
Merge branch 'arm32-for-6.15' into arm64-for-6.16
Merge branch 'arm32-for-6.15' into arm32-for-6.16

Cathy Xu (1):
arm64: dts: mediatek: mt8196: Add pinmux macro header file

Chaoyi Chen (4):
dt-bindings: arm: rockchip: Add rk3588 evb2 board
arm64: dts: rockchip: Add rk3588 evb2 board
dt-bindings: arm: rockchip: Add rk3399 industry evaluation board
arm64: dts: rockchip: Add rk3399-evb-ind board

Charan Pedumuru (2):
ARM: tegra: Rename the apbdma nodename to match with common dma-co=
ntroller binding
dt-bindings: dma: nvidia,tegra20-apbdma: convert text based bindin=
g to json schema

Chen-Yu Tsai (1):
arm64: dts: mediatek: mt8188: Fix IOMMU device for rdma0

Cheng Jiang (1):
arm64: dts: qcom: sa8775p-ride: Add firmware-name in BT node

Chris Morgan (2):
arm64: dts: allwinner: h700: Add hp-det-gpios for Anbernic RG35XX
arm64: dts: rockchip: Enable HDMI0 audio output for Indiedroid Nova

Christian Hewitt (1):
arm64: dts: amlogic: gxlx-s905l-p271: add saradc compatible

Chuan Liu (2):
arm64: dts: amlogic: C3: Add clk-measure controller node
arm64: dts: amlogic: S4: Add clk-measure controller node

Chukun Pan (13):
arm64: dts: qcom: ipq6018: add 1.2GHz CPU Frequency
arm64: dts: qcom: ipq6018: add 1.5GHz CPU Frequency
arm64: dts: qcom: ipq6018: move mp5496 regulator out of soc dtsi
arm64: dts: qcom: ipq6018: rename labels of mp5496 regulator
arm64: dts: qcom: ipq6018: add LDOA2 regulator
arm64: dts: rockchip: Add missing uart3 interrupt for RK3528
arm64: dts: rockchip: Add DMA controller for RK3528
arm64: dts: rockchip: Add UART DMA support for RK3528
arm64: dts: rockchip: Move SHMEM memory to reserved memory on rk35=
88
arm64: dts: allwinner: correct the model name for Radxa Cubie A5E
arm64: dts: rockchip: Add pwm nodes for RK3528
arm64: dts: rockchip: Enable regulators for Radxa E20C
arm64: dts: rockchip: Move rk3568 PCIe3 MSI to use GIC ITS

Ciprian Marian Costea (1):
arm64: dts: s32gxxxa-rdb: Add PCA85073A RTC module over I2C0

Cl=C3=A9ment L=C3=A9ger (1):
ARM: dts: renesas: Add r9a06g032-rzn1d400-eb board device-tree

Conor Dooley (1):
riscv: dts: renesas: Add specific RZ/Five cache compatible

Da Xue (1):
arm64: dts: amlogic: gxl: set i2c bias to pull-up

Damon Ding (2):
arm64: dts: rockchip: Add eDP0 node for RK3588
arm64: dts: rockchip: Enable eDP0 display on RK3588S EVB1 board

Daniel Baluta (5):
arm64: dts: imx8mp: Use resets property
arm64: dts: imx8mp: Add mu2 root clock
arm64: dts: imx8mp: Configure dsp node for rproc usage
arm64: dts: imx8mp: Add DSP clocks
arm64: dts: imx8mp-evk: Enable DSP node for remoteproc usage

Daniel Schultz (6):
arm64: dts: ti: k3-am62a: Enable CPU freq throttling on thermal al=
ert
arm64: dts: ti: k3-am62x-phyboard-lyra-gpio-fan: Update cooling ma=
ps
arm64: dts: ti: k3-am62-phycore-som: Enable Co-processors
arm64: dts: ti: k3-am62a-phycore-som: Enable Co-processors
arm64: dts: ti: k3-am62a-phycore-som: Reserve main_rti4 for C7x DSP
arm64: dts: ti: k3-am62a-phycore-som: Reserve main_timer2 for C7x =
DSP

Daniil Titov (1):
arm64: dts: qcom: pm8937: Add LPG PWM driver

Danila Tikhonov (3):
arm64: dts: qcom: sm7325-nothing-spacewar: Add CAM fixed-regulators
arm64: dts: qcom: sm7325-nothing-spacewar: Enable camera EEPROMs
dt-bindings: arm: qcom: Add SM7150 Google Pixel 4a

Dario Binacchi (9):
ARM: dts: mxs: use padconfig macros
ARM: dts: stm32h7-pinctrl: add _a suffix to u[s]art_pins phandles
dt-bindings: arm: stm32: add compatible for stm32h747i-disco board
ARM: stm32: add a new SoC - STM32H747
dt-bindings: clock: stm32h7: rename USART{7,8}_CK to UART{7,8}_CK
ARM: dts: stm32: add uart8 node for stm32h743 MCU
ARM: dts: stm32: add pin map for UART8 controller on stm32h743
ARM: dts: stm32: add an extra pin map for USART1 on stm32h743
ARM: dts: stm32: support STM32h747i-disco board

David Heidelberg (2):
ARM: dts: nokia n900: remove useless io-channel-cells property
ARM: dts: qcom: apq8064-lg-nexus4-mako: Enable WiFi

Devarsh Thakkar (3):
arm64: dts: ti: k3-am62a-wakeup: Add R5F device node
arm64: dts: ti: k3-am62a7-sk: Enable IPC with remote processors
arm64: dts: ti: k3-am62p5-sk: Enable IPC with remote processors

Devi Priya (1):
arm64: dts: qcom: ipq9574: Add nsscc node

Diederik de Haas (8):
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3328-rock64
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3399-rockpr=
o64
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-pineta=
b2
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3588-rock-5b
arm64: dts: rockchip: Add phy-supply to gmac0 on NanoPi R5S
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-quartz=
64-b
arm64: dts: rockchip: Improve LED config for NanoPi R5S
arm64: dts: rockchip: Drop assigned-clock* from cpu nodes on rk3588

Dikshita Agarwal (1):
arm64: dts: qcom: sm8550: add iris DT node

Dmitry Baryshkov (36):
arm64: dts: qcom: sdm845-db845c: enable sensors DSP
arm64: dts: qcom: qrb5165-rb5: enable sensors DSP
arm64: dts: qcom: sar2130p: add PCIe EP device nodes
arm64: dts: qcom: sm8450: add PCIe EP device nodes
arm64: dts: qcom: sc7280: Use the header with DSI phy clock IDs
arm64: dts: qcom: sa8775p: mark MDP interconnects as ALWAYS on
arm64: dts: qcom: msm8998: use correct size for VBIF regions
arm64: dts: qcom: qcm2290: use correct size for VBIF regions
arm64: dts: qcom: sa8775p: use correct size for VBIF regions
arm64: dts: qcom: sc7180: use correct size for VBIF regions
arm64: dts: qcom: sc7280: use correct size for VBIF regions
arm64: dts: qcom: sc8180x: use correct size for VBIF regions
arm64: dts: qcom: sc8280xp: use correct size for VBIF regions
arm64: dts: qcom: sdm670: use correct size for VBIF regions
arm64: dts: qcom: sdm845: use correct size for VBIF regions
arm64: dts: qcom: sm6115: use correct size for VBIF regions
arm64: dts: qcom: sm6125: use correct size for VBIF regions
arm64: dts: qcom: sm6350: use correct size for VBIF regions
arm64: dts: qcom: sm8150: use correct size for VBIF regions
arm64: dts: qcom: sm8250: use correct size for VBIF regions
arm64: dts: qcom: sm8350: use correct size for VBIF regions
arm64: dts: qcom: sm8450: use correct size for VBIF regions
arm64: dts: qcom: sm8550: use correct size for VBIF regions
arm64: dts: qcom: sm8650: use correct size for VBIF regions
ARM: dts: qcom: apq8064: add missing clocks to the timer node
ARM: dts: qcom: apq8064 merge hw splinlock into corresponding sysc=
on device
ARM: dts: qcom: apq8064: use new compatible for SFPB device
ARM: dts: qcom: apq8064: use new compatible for SPS SIC device
ARM: dts: qcom: apq8064: move replicator out of soc node
arm64: dts: qcom: msm8998-lenovo-miix-630: add Venus node
ARM: dts: qcom: apq8064: link LVDS clocks
arm64: dts: qcom: sc8280xp-lenovo-thinkpad-x13s: enable sensors DSP
arm64: dts: qcom: qcm2290: fix (some) of QUP interconnects
ARM: dts: qcom: apq8064-ifc6410: drop HDMI HPD GPIO
arm64: dts: qcom: qrb2210-rb1: add Bluetooth support
arm64: dts: qcom: sar2130p: add display nodes

Dominik Haller (2):
dt-bindings: arm: ti: Add bindings for PHYTEC AM68x based hardware
arm64: dts: ti: Add basic support for phyBOARD-Izar-AM68x

Dzmitry Sankouski (12):
arm64: dts: qcom: sdm845: enable gmu
arm64: dts: qcom: sdm845-starqltechn: remove wifi
arm64: dts: qcom: sdm845-starqltechn: fix usb regulator mistake
arm64: dts: qcom: sdm845-starqltechn: refactor node order
arm64: dts: qcom: sdm845-starqltechn: remove excess reserved gpios
arm64: dts: qcom: sdm845-starqltechn: add gpio keys
arm64: dts: qcom: sdm845-starqltechn: add max77705 PMIC
arm64: dts: qcom: sdm845-starqltechn: add display PMIC
arm64: dts: qcom: sdm845-starqltechn: add touchscreen support
arm64: dts: qcom: sdm845-starqltechn: add initial sound support
arm64: dts: qcom: sdm845-starqltechn: add graphics support
arm64: dts: qcom: sdm845-starqltechn: add modem support

E Shattow (4):
riscv: dts: starfive: jh7110-common: add CPU BUS PERH QSPI clocks =
to syscrg
riscv: dts: starfive: jh7110-common: qspi flash setting read-delay=
2 cycles max 100MHz
riscv: dts: starfive: jh7110-common: add eeprom node to i2c5
riscv: dts: starfive: jh7110-common: bootph-pre-ram hinting needed=
by boot loader

Efe Can =C4=B0=C3=A7=C3=B6z (1):
ARM: dts: imx7d: update opp-table voltages

Emanuele Ghidoli (2):
arm64: dts: freescale: imx8mp-toradex-smarc: add embedded controll=
er
arm64: dts: freescale: imx8mp-toradex-smarc: add gpio expander

Eugene Lepshy (1):
arm64: dts: qcom: sm7325-nothing-spacewar: Enable panel and GPU

FUKAUMI Naoki (1):
dt-bindings: arm: rockchip: Add Radxa ROCK 5B+

Fabio Estevam (3):
ARM: dts: imx31/imx6: Use flash as the NOR node name
ARM: dts: imx: Fix the iim compatible string
ARM: dts: imx51-digi-connectcore-som: Fix MMA7455 compatible

Fabrice Gasnier (3):
arm64: defconfig: enable STM32 LP timer clockevent driver
arm64: dts: st: add low-power timer nodes on stm32mp251
arm64: dts: st: use lptimer3 as tick broadcast source on stm32mp25=
7f-ev1

Faraz Ata (1):
arm64: dts: exynos: Add DT node for all UART ports

Felix Kaechele (1):
arm64: dts: qcom: msm8953: Add uart_5

Ferass El Hafidi (2):
dt-bindings: arm: amlogic: add S805Y and Mi TV Stick
arm64: dts: amlogic: add support for xiaomi-aquaman/Mi TV Stick

Finley Xiao (2):
arm64: dts: rockchip: add core dtsi for RK3562 SoC
arm64: dts: rockchip: Add RK3562 evb2 devicetree

Francesco Dolcini (13):
arm64: dts: ti: k3-am625-verdin: Add EEPROM compatible fallback
arm64: dts: freescale: imx8mp-verdin: Add EEPROM compatible fallba=
ck
arm64: dts: freescale: imx8mm-verdin: Add EEPROM compatible fallba=
ck
ARM: dts: imx6q-apalis: remove pcie-switch node
dt-bindings: arm: ti: Add Toradex Verdin AM62P
arm64: dts: ti: Add Toradex Verdin AM62P
arm64: dts: ti: am62p-verdin: Add dahlia
arm64: dts: ti: am62p-verdin: Add mallow
arm64: dts: ti: am62p-verdin: Add yavia
arm64: dts: ti: am62p-verdin: Add ivy
ARM: tegra: apalis-eval: Remove pcie-switch node
arm64: dts: freescale: imx8mp-toradex-smarc: add fan PWM configura=
tion
arm64: dts: freescale: imx8mp-toradex-smarc: use generic gpio node=
name

Frank Li (9):
arm64: dts: imx8qm-mek: consolidate reserved-memory
arm64: dts: imx8: create unified pcie0 and pcie0_ep label for all =
chips
arm64: dts: imx8dxl-ss-hsio: correct irq number for imx8dxl
arm64: dts: imx8dxl-evk: Add pcie0-ep node and use unified pcie0 l=
abel
arm64: dts: imx8: use common imx-pcie0-ep.dtso to enable PCI ep fu=
nction
arm64: dts: imx95: add pcie1 ep overlay file and create pcie-ep dt=
b files
arm64: dts: imx8mm-evk: add pcie0-ep node and apply pcie0-ep overl=
ay file
arm64: dts: imx8mq: add pcie0-ep node
arm64: dts: imx8mq-evk: add pcie[0,1]-ep nodes

Frank Wunderlich (9):
dt-bindings: arm: mediatek: add bpi-r4 2g5 phy variant
arm64: dts: mediatek: mt7988a-bpi-r4: allow hw variants of bpi-r4
arm64: dts: mediatek: mt7988: Add xsphy for ssusb0/pcie2
arm64: dts: mediatek: mt7988a-bpi-r4: enable xsphy
arm64: dts: mediatek: mt7988: add spi controllers
arm64: dts: mediatek: mt7988: move uart0 and spi1 pins to soc dtsi
arm64: dts: mediatek: mt7988: add phy calibration efuse subnodes
arm64: dts: mediatek: mt7988a-bpi-r4: Add fan and coolingmaps
arm64: dts: mediatek: mt7988a-bpi-r4: configure spi-nodes

Gabor Juhos (1):
arm64: dts: ipq6018: drop standalone 'smem' node

Gabriel Gonzales (2):
dt-bindings: arm: qcom: Add Xiaomi Redmi Note 8
arm64: dts: qcom: sm6125: Initial support for xiaomi-ginkgo

Gaurav Kashyap (3):
arm64: dts: qcom: sm8750: Add QCrypto nodes
arm64: dts: qcom: sm8750: Add TRNG nodes
arm64: dts: qcom: sm8750: Add ICE nodes

Geert Uytterhoeven (4):
arm64: dts: renesas: r8a779f4: Add UFS tuning parameters in E-FUSE
Merge tag 'renesas-r9a09g056-dt-binding-defs-tag1' into renesas-dt=
s-for-v6.16
arm64: dts: renesas: white-hawk-single: Improve Ethernet TSN descr=
iption
arm64: dts: renesas: sparrow-hawk: Disable dtc spi_bus_bridge check

George Moussalem (1):
arm64: dts: qcom: ipq5018: enable the download mode support

Goran Ra=C4=91enovi=C4=87 (4):
dt-bindings: vendor-prefixes: Add Ultratronik
dt-bindings: arm: stm32: Document Ultratronik's Fly board DT bindi=
ng
MAINTAINERS: Add entry for ULTRATRONIK BOARD SUPPORT
ARM: dts: stm32: add initial support for stm32mp157-ultra-fly-sbc =
board

Hao Zhang (2):
ARM: dts: rockchip: Sonoff-iHost: adjust SDIO for stability
ARM: dts: rockchip: Sonoff-iHost: correct IO domain voltages

Hari Nagalla (6):
arm64: dts: ti: k3-am62-wakeup: Add wakeup R5F node
arm64: dts: ti: k3-am62a-mcu: Add R5F remote proc node
arm64: dts: ti: k3-am62x-sk-common: Enable IPC with remote process=
ors
arm64: dts: ti: k3-am62a7-sk: Reserve main_timer2 for C7x DSP
arm64: dts: ti: k3-am62a7-sk: Reserve main_rti4 for C7x DSP
arm64: dts: ti: k3-am64: Reserve timers used by MCU FW

Haylen Chu (3):
dt-bindings: soc: spacemit: Add spacemit,k1-syscon
dt-bindings: clock: spacemit: Add spacemit,k1-pll
riscv: dts: spacemit: Add clock tree for SpacemiT K1

Hector Martin (1):
arm64: dts: apple: Add PMIC NVMEM

Heiko Stuebner (23):
arm64: dts: rockchip: change rng reset id back to its constant val=
ue
arm64: dts: rockchip: add mipi dcphy nodes to rk3588
arm64: dts: rockchip: add dsi controller nodes on rk3588
arm64: dts: rockchip: add overlay for tiger-haikou video-demo adap=
ter
arm64: dts: rockchip: Add HDMI support for roc-rk3576-pc
ARM: dts: rockchip: enable hdmi on rk3066 marsboard
ARM: dts: rockchip: enable Mali gpu on rk3066 marsboard
Merge branch 'v6.16-shared/clkids' into v6.16-armsoc/dts64
arm64: dts: rockchip: drop wrong spdif clock from edp1 on rk3588
arm64: dts: rockchip: move rk3528 i2c+uart aliases to board files
ARM: dts: rockchip: add rk3036 usb2phy nodes and enable them on ky=
lin
arm64: dts: rockchip: add basic mdio node to px30
arm64: dts: rockchip: move reset to dedicated eth-phy node on ring=
neck
dt-bindings: arm: rockchip: add PX30-Cobra boards from Theobroma S=
ystems
arm64: dts: rockchip: add px30-cobra base dtsi and board variants
dt-bindings: arm: rockchip: add PX30-PP1516 boards from Theobroma =
Systems
arm64: dts: rockchip: add px30-pp1516 base dtsi and board variants
arm64: dts: rockchip: fix rk3576 pcie unit addresses
arm64: dts: rockchip: move rk3576 pinctrl node outside the soc node
arm64: dts: rockchip: remove a double-empty line from rk3576 core =
dtsi
arm64: dts: rockchip: move rk3528 pinctrl node outside the soc node
arm64: dts: rockchip: fix rk3562 pcie unit addresses
arm64: dts: rockchip: move rk3562 pinctrl node outside the soc node

Icenowy Zheng (1):
riscv: dts: starfive: jh7110-common: use macros for MMC0 pins

Imran Shaik (1):
arm64: dts: qcom: qcs8300: Add cpufreq scaling node

Ivan Belokobylskiy (1):
ARM: dts: qcom: Initial dts for LG Nexus 4

Ivaylo Ivanov (1):
arm64: dts: exynos: update all samsung,mode constants

J. Neusch=C3=A4fer (4):
dt-bindings: vendor-prefixes: Add TC Unterhaltungselektronik AG
dt-bindings: arm: amlogic: Add TCU Fernsehfee 3.0 board
ARM: dts: amlogic: Add TCU Fernsehfee 3.0
ARM: dts: amlogic: meson8-fernsehfee3: Describe regulators

Jacky Bai (3):
dt-bindings: arm: fsl: add i.MX943 EVK board
arm64: dts: freescale: Add basic dtsi for imx943
arm64: dts: freescale: Add minimal dts support for imx943 evk

Jacobe Zang (3):
arm64: dts: rockchip: Add bluetooth support to Khadas Edge2
arm64: dts: rockchip: Add HDMI & VOP2 to Khadas Edge2
arm64: dts: rockchip: enable HDMI out audio on Khadas Edge2

Jagadeesh Kona (1):
arm64: dts: qcom: sa8775p: Add LMH interrupts for cpufreq_hw node

Jai Luthra (1):
arm64: dts: ti: k3-am62a-main: Add C7xv device node

Jan Kiszka (1):
arm64: dts: ti: k3-am65-main: Add system controller compatible

Janaki Ramaiah Thota (1):
arm64: dts: qcom: qcs6490-rb3gen2: add and enable BT node

Jayesh Choudhary (1):
arm64: dts: ti: k3-j721e-common-proc-board-infotainment: Update to=
comply with device tree schema

Jens Glathe (1):
arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: add retimers, dp al=
tmode support

Jianeng Ceng (2):
dt-bindings: arm: mediatek: Add MT8186 Ponyta Chromebook
arm64: dts: mediatek: Add MT8186 Ponyta Chromebooks

Jianfeng Liu (1):
arm64: dts: rockchip: Enable HDMI ports on ArmSoM W3

Jie Gan (1):
arm64: dts: qcom: sa8775p: Add CTCU and ETR nodes

Jimmy Hon (1):
arm64: dts: rockchip: Enable bluetooth of AP6611s on OrangePI5 Max=
/Ultra

Joel Selvaraj (3):
arm64: dts: qcom: sdm845-xiaomi-beryllium-common: add touchscreen =
related nodes
arm64: dts: qcom: sdm845-xiaomi-beryllium-tianma: introduce touchs=
creen support
arm64: dts: qcom: sdm845-xiaomi-beryllium-ebbg: introduce touchscr=
een support

Johan Hovold (16):
arm64: dts: qcom: x1e80100-crd: add support for volume-up key
arm64: dts: qcom: x1e80100-crd: add gpio-keys label for lid switch
arm64: dts: qcom: sc8280xp-crd: add support for volume-up key
arm64: dts: qcom: x1e80100-crd: mark l12b and l15b always-on
arm64: dts: qcom: x1e78100-t14s: mark l12b and l15b always-on
arm64: dts: qcom: x1e001de-devkit: mark l12b and l15b always-on
arm64: dts: qcom: x1e80100-dell-xps13-9345: mark l12b and l15b alw=
ays-on
arm64: dts: qcom: x1e80100-hp-x14: mark l12b and l15b always-on
arm64: dts: qcom: x1e80100-yoga-slim7x: mark l12b and l15b always-=
on
arm64: dts: qcom: x1e80100-qcp: mark l12b and l15b always-on
arm64: dts: qcom: x1e78100-t14s: fix missing HID supplies
arm64: dts: qcom: sc8280xp-x13s: switch to uefi rtc offset
arm64: dts: qcom: x1e80100: enable rtc
arm64: dts: qcom: x1e001de-devkit: fix USB retimer reset polarity
arm64: dts: qcom: x1e78100-t14s: enable SDX62 modem
arm64: dts: qcom: x1e80100-hp-x14: drop bogus USB retimer

John Clark (1):
arm64: dts: rockchip: fix usb-c port functionality on rk3588-nanop=
c-t6

John Madieu (3):
arm64: dts: renesas: rzg3e-smarc-som: Add I2C2 device pincontrol
arm64: dts: renesas: rzg3e-smarc-som: Add RAA215300 pmic support
arm64: dts: renesas: rzg3e-smarc-som: Reduce I2C2 clock frequency

Jonas Karlman (2):
arm64: dts: rockchip: Add GMAC nodes for RK3528
arm64: dts: rockchip: Enable Ethernet controller on Radxa E20C

Judith Mendez (11):
arm64: dts: ti: k3-am62p5-sk: Enable PWM
arm64: dts: ti: k3-am62a7-sk: Enable PWM
arm64: dts: ti: k3-am625-sk: Enable PWM
arm64: dts: ti: k3-am6*: Add boot phase flag to support MMC boot
arm64: dts: ti: k3-am62*: Add non-removable flag for eMMC
arm64: dts: ti: k3-am6*: Remove disable-wp for eMMC
arm64: dts: ti: k3-am62-main: Set eMMC clock parent to default
arm64: dts: ti: k3-am62a-main: Set eMMC clock parent to default
arm64: dts: ti: k3-am62p-j722s-common-main: Set eMMC clock parent =
to default
arm64: dts: ti: k3-am65-main: Add missing taps to sdhci0
arm64: dts: ti: k3-am62: Add ATCM and BTCM cbass ranges

Juerg Haefliger (5):
arm64: dts: qcom: x1e80100-hp-omnibook-x14: Remove invalid bt-en-s=
leep node
arm64: dts: qcom: x1e80100-hp-omnibook-x14: Enable SMB2360 0 and 1
arm64: dts: qcom: x1e80100-hp-omnibook-x14: add sound label
dt-bindings: arm: qcom: Document HP EliteBook Ultra G1q
arm64: dts: qcom: x1e80100-hp-elitebook-ultra-g1q: DT for HP Elite=
Book Ultra G1q

Julien Massot (6):
arm64: dts: mediatek: mt8395-nio-12l: Add scp firmware-name
arm64: dts: mediatek: mt8395-genio-1200-evk: Add scp firmware-name
arm64: dts: mediatek: mt8395-nio-12l: Enable Audio DSP and sound c=
ard
arm64: dts: mt6359: Add missing 'compatible' property to regulator=
s node
arm64: dts: mediatek: mt8188: Add missing #reset-cells property
arm64: dts: mt6359: Rename RTC node to match binding expectations

Jyothi Kumar Seerapu (1):
arm64: dts: qcom: sm8750: Correct clocks property for uart14 node

Karthik Sanagavarapu (1):
arm64: dts: qcom: sa8775p: Remove cdsp compute-cb@10

Kaushal Kumar (3):
arm64: dts: qcom: sdx75: Add QPIC BAM support
arm64: dts: qcom: sdx75: Add QPIC NAND support
arm64: dts: qcom: sdx75-idp: Enable QPIC BAM & QPIC NAND support

Kaustabh Chakraborty (5):
dt-bindings: arm: samsung: add compatibles for exynos7870 devices
arm64: dts: exynos: add initial devicetree support for exynos7870
arm64: dts: exynos: add initial support for Samsung Galaxy J7 Prime
arm64: dts: exynos: add initial support for Samsung Galaxy A2 Core
arm64: dts: exynos: add initial support for Samsung Galaxy J6

Kever Yang (4):
arm64: dts: rockchip: Add rk3576 pcie nodes
dt-bindings: rockchip: pmu: Add rk3562 compatible
dt-bindings: soc: rockchip: Add rk3562 syscon compatibles
dt-bindings: arm: rockchip: Add rk3562 evb2 board

Kishon Vijay Abraham I (1):
arm64: dts: ti: k3-am62-main: Add PRUSS-M node

Konrad Dybcio (28):
arm64: dts: qcom: x1e80100: Set CPU interconnect paths as ACTIVE_O=
NLY
arm64: dts: qcom: x1e80100: Wire up PCIe PHY NOCSR resets
arm64: dts: qcom: Commonize X1 CRD DTSI
arm64: dts: qcom: Add X1P42100 SoC and CRD
arm64: dts: qcom: qcm6490-fairphone-fp5: Enable the GPU
arm64: dts: qcom: x1e80100-romulus: Keep L12B and L15B always on
arm64: dts: qcom: sdx75: Fix up the USB interrupt description
arm64: dts: qcom: sdx75: Rename AOSS_QMP to power-management
arm64: dts: qcom: qcs615: Rename AOSS_QMP to power-management
arm64: dts: qcom: sc8180x: Rename AOSS_QMP to power-management
arm64: dts: qcom: x1e80100-dell-xps13-9345: Drop clock-names from =
PS8830
arm64: dts: qcom: x1e80100-romulus: Drop clock-names from PS8830
arm64: dts: qcom: x1e001de-devkit: Drop clock-names from PS8830
arm64: dts: qcom: x1e80100-romulus: Enable DP over Type-C
arm64: dts: qcom: sc8280xp: Fix node order
arm64: dts: qcom: sc8280xp: Add SLPI
arm64: dts: qcom: sc8280xp-crd: Enable SLPI
arm64: dts: qcom: sc7180: Add specific APPS RSC compatible
arm64: dts: qcom: sdm845: Add specific APPS RSC compatible
arm64: dts: qcom: msm8998: Remove mdss_hdmi_phy phandle argument
arm64: dts: qcom: qcs615: Remove disallowed property from AOSS_QMP=
node
arm64: dts: qcom: msm8998-fxtec: Add QUSB2PHY VDD supply
arm64: dts: qcom: msm8998-mtp: Add QUSB2PHY VDD supply
arm64: dts: qcom: msm8998-yoshino: Add QUSB2PHY VDD supply
arm64: dts: qcom: sm6350-pdx213: Wire up USB regulators
arm64: dts: qcom: msm8996-oneplus: Add SLPI VDD_PX
arm64: dts: qcom: sa8775p: Clean up the PSCI PDs
arm64: dts: qcom: qcs615: Fix up UFS clocks

Krishna Chaitanya Chundru (1):
arm64: dts: qcom: x1e80100: Add PCIe lane equalization preset prop=
erties

Krishna Kurapati (1):
arm64: dts: qcom: qcs6490-rb3gen2: Add orientation gpio

Krzysztof Kozlowski (65):
arm64: dts: qcom: sa8775p: Partially revert "arm64: dts: qcom: sa8=
775p: add QCrypto nodes"
arm64: dts: qcom: qcs8300: Partially revert "arm64: dts: qcom: qcs=
8300: add QCrypto nodes"
arm64: dts: qcom: x1e80100-slim7x: Drop incorrect qcom,ath12k-cali=
bration-variant
ARM: dts: qcom: ipq4018: Switch to undeprecated qcom,calibration-v=
ariant
arm64: dts: qcom: msm8998: Switch to undeprecated qcom,calibration=
-variant
arm64: dts: qcom: qrb2210-rb1: Switch to undeprecated qcom,calibra=
tion-variant
arm64: dts: qcom: qrb4210-rb2: Switch to undeprecated qcom,calibra=
tion-variant
arm64: dts: qcom: sc7180: Switch to undeprecated qcom,calibration-=
variant
arm64: dts: qcom: sdm845: Switch to undeprecated qcom,calibration-=
variant
arm64: dts: qcom: sda660-ifc6560: Switch to undeprecated qcom,cali=
bration-variant
arm64: dts: qcom: sm6115: Switch to undeprecated qcom,calibration-=
variant
arm64: dts: qcom: sm8150-hdk: Switch to undeprecated qcom,calibrat=
ion-variant
arm64: dts: qcom: qcm6490: Switch to undeprecated qcom,calibration=
-variant
arm64: dts: qcom: sa8775p-ride: Switch to undeprecated qcom,calibr=
ation-variant
arm64: dts: qcom: sc8280xp: Switch to undeprecated qcom,calibratio=
n-variant
arm64: dts: qcom: sm8250-elish: Switch to undeprecated qcom,calibr=
ation-variant
arm64: dts: qcom: sm8750: Change labels to lower-case
arm64: dts: qcom: Correct white-space style
arm64: dts: qcom: Use recommended MBN firmware path
arm64: dts: qcom: sm8750: Add IPCC, SMP2P, AOSS and ADSP
arm64: dts: qcom: sm8750: Add LPASS macro codecs and pinctrl
arm64: dts: qcom: sm8750-mtp: Enable ADSP
arm64: dts: qcom: sm8750-qrd: Enable ADSP
arm64: dts: qcom: sm8750: Add CDSP
arm64: dts: qcom: sm8750-mtp: Enable CDSP
arm64: dts: qcom: sm8750-qrd: Enable CDSP
ARM: dts: nuvoton: Align GPIO hog name with bindings
ARM: dts: qcom: msm8226: Use the header with DSI phy clock IDs
ARM: dts: qcom: msm8974: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8916: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8917: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8939: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8953: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8976: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8996: Use the header with DSI phy clock IDs
arm64: dts: qcom: msm8998: Use the header with DSI phy clock IDs
arm64: dts: qcom: qcm2290: Use the header with DSI phy clock IDs
arm64: dts: qcom: sc7180: Use the header with DSI phy clock IDs
arm64: dts: qcom: sc8180x: Use the header with DSI phy clock IDs
arm64: dts: qcom: sdm630: Use the header with DSI phy clock IDs
arm64: dts: qcom: sdm670: Use the header with DSI phy clock IDs
arm64: dts: qcom: sdm845: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm6115: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm6125: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm6350: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8150: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8250: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8350: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8450: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8550: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8650: Use the header with DSI phy clock IDs
arm64: dts: qcom: sm8750: Add Modem / MPSS
arm64: dts: qcom: sm8750-mtp: Enable modem
arm64: dts: qcom: sm8750-qrd: Enable modem
arm64: dts: mediatek: mt7622: Align GPIO hog name with bindings
ARM: dts: nxp: Align NAND controller node name with bindings
arm64: dts: allwinner: Align wifi node name with bindings
ARM: dts: allwinner: Align wifi node name with bindings
arm64: dts: rockchip: Switch to undeprecated qcom,calibration-vari=
ant on RK3399
arm64: tegra: tegra210-p2894: Align GPIO hog node name with prefer=
red style
arm64: dts: renesas: beacon-renesom: Align wifi node name with bin=
dings
arm64: dts: imx: Align wifi node name with bindings
ARM: dts: nxp: Align wifi node name with bindings
ARM: dts: st: stm32: Align wifi node name with bindings
ARM: dts: samsung: sp5v210-aries: Align wifi node name with bindin=
gs

Kuninori Morimoto (1):
arm64: dts: renesas: sparrow-hawk: Add MSIOF Sound support

Lad Prabhakar (7):
arm64: dts: qcom: Drop `tx-sched-sp` property
dt-bindings: soc: renesas: Document Renesas RZ/V2N SoC variants an=
d EVK
dt-bindings: soc: renesas: Document SYS for RZ/V2N SoC
dt-bindings: clock: renesas: Document RZ/V2N SoC CPG
dt-bindings: pinctrl: renesas: Document RZ/V2N SoC
arm64: dts: renesas: Add initial SoC DTSI for RZ/V2N
arm64: dts: renesas: Add initial device tree for RZ/V2N EVK

Laurentiu Mihalcea (1):
arm64: dts: imx: add imx95 dts for sof

Leo Yan (1):
arm64: dts: fvp: Add ETE and TRBE nodes for Rev C model

Lijuan Gao (1):
arm64: dts: qcom: qcs615: Add Command DB support

Ling Xu (1):
arm64: dts: qcom: sa8775p: Remove extra entries from the iommus pr=
operty

Loic Poulain (1):
arm64: dts: qcom: qcm2290: Add crypto engine

Lorenzo Bianconi (2):
arm64: dts: airoha: en7581: Add gpio-ranges property for gpio cont=
roller
arm64: dts: airoha: en7581: Add PCIe nodes to EN7581 SoC evaluatio=
n board

Louis-Alexis Eyraud (4):
arm64: dts: mediatek: mt8390-genio-common: Fix pcie pinctrl dtbs_c=
heck error
arm64: dts: mediatek: mt8395-genio-1200-evk: Add display on DSI0
arm64: dts: mediatek: mt8390-genio-common: Set ssusb2 default dual=
role mode to host
arm64: dts: mt8365-evk: Add goodix touchscreen support

Luca Weiss (30):
arm64: dts: qcom: qcm6490-fairphone-fp5: Enable display
arm64: dts: qcom: sdm632-fairphone-fp3: Move status properties last
arm64: dts: qcom: sdm632-fairphone-fp3: Add newlines between regul=
ator nodes
arm64: dts: qcom: sdm632-fairphone-fp3: Add firmware-name for adsp=
& wcnss
arm64: dts: qcom: sdm632-fairphone-fp3: Enable modem
arm64: dts: qcom: sm8350: Reenable crypto & cryptobam
arm64: dts: qcom: qcm6490-fairphone-fp5: Add touchscreen node
ARM: dts: qcom: msm8226: Add modem remoteproc node
ARM: dts: qcom: msm8226: Add BAM DMUX Ethernet/IP device
ARM: dts: qcom: Introduce dtsi for LTE-capable MSM8926
ARM: dts: qcom: msm8926-htc-memul: Enable modem
arm64: dts: qcom: sm8650: Fix domain-idle-state for CPU2
arm64: dts: qcom: Remove unnecessary MM_[UD]L audio routes
arm64: dts: qcom: sc7280: Stop setting dmic01 pinctrl for va-macro
arm64: dts: qcom: sm6350: Align reg properties with latest style
arm64: dts: qcom: qcm6490-fairphone-fp5: Add PTN36502 redriver
arm64: dts: qcom: qcm6490-fairphone-fp5: Add OCP96011 audio switch
arm64: dts: qcom: qcm6490-fairphone-fp5: Hook up DisplayPort over =
USB-C
arm64: dts: qcom: apq8096-db820c: Use q6asm defines for reg
arm64: dts: qcom: msm8916-modem-qdsp6: Use q6asm defines for reg
arm64: dts: qcom: msm8953: Use q6asm defines for reg
arm64: dts: qcom: msm8996*: Use q6asm defines for reg
arm64: dts: qcom: qrb5165-rb5: Use q6asm defines for reg
arm64: dts: qcom: sc7180-acer-aspire1: Use q6asm defines for reg
arm64: dts: qcom: sc7280: Use q6asm defines for reg
arm64: dts: qcom: sdm845*: Use q6asm defines for reg
arm64: dts: qcom: sdm850*: Use q6asm defines for reg
arm64: dts: qcom: sm7325-nothing-spacewar: Use q6asm defines for r=
eg
arm64: dts: qcom: sm8350: Use q6asm defines for reg
arm64: dts: qcom: qcm6490-fairphone-fp5: Add DisplayPort sound sup=
port

Lukasz Czechowski (2):
dt-bindings: usb: cypress,hx3: Add support for all variants
arm64: dts: rockchip: fix internal USB hub instability on RK3399 P=
uma

Macpaul Lin (1):
arm64: dts: mediatek: mt8195: Add power domain for dp_intf0

Mahesh Rao (2):
dt-bindings: fpga: stratix10: Convert to json-schema
dt-bindings: firmware: stratix10: Convert to json-schema

Manikanta Mylavarapu (7):
arm64: dts: qcom: ipq5424: Add tsens node
arm64: dts: qcom: ipq5424: Add thermal zone nodes
arm64: dts: qcom: ipq9574: fix the msi interrupt numbers of pcie3
arm64: dts: qcom: ipq5424: add reserved memory region for bootload=
er
arm64: dts: qcom: ipq5424: enable GPIO based LEDs and Buttons
arm64: dts: qcom: ipq5424: Add PCIe PHYs and controller nodes
arm64: dts: qcom: ipq5424: Enable PCIe PHYs and controllers

Manish Nagar (1):
arm64: dts: qcom: qcs8300-ride: Enable second USB controller on QC=
S8300 Ride

Marcin Juszkiewicz (2):
arm64: dts: rockchip: enable HDMI1 on FriendlyElec NanoPC-T6
arm64: dts: rockchip: enable HDMI sound on FriendlyElec NanoPC-T6

Marek Vasut (3):
dt-bindings: vendor-prefixes: Add Retronix Technology Inc.
dt-bindings: soc: renesas: Document Retronix R-Car V4H Sparrow Haw=
k board support
arm64: dts: renesas: r8a779g3: Add Retronix R-Car V4H Sparrow Hawk=
board support

Mark Kettenis (1):
arm64: dts: qcom: x1e80100: Mark usb_2 as dma-coherent

Markus Niebel (6):
dt-bindings: arm: add MBa91xxCA Mainboard for TQMa93xxCA/LA SOM
arm64: add initial device tree for TQMa93xx/MBa91xxCA
Revert "arm64: dts: imx93-tqma9352-mba93xxca: enable Open Drain fo=
r MDIO"
Revert "arm64: dts: imx93-tqma9352-mba93xxla: enable Open Drain fo=
r MDIO"
dt-bindings: arm: add TQMa8XxS boards
arm64: dts: imx93-tqma9352-mba91xxca: disable Open Drain for MDIO

Markus Reichl (1):
arm64: dts: rockchip: Add vcc supply to spi flash on rk3399-roc-pc

Martin Blumenstingl (7):
ARM: dts: amlogic: meson8: enable UART RX and TX pull up by default
ARM: dts: amlogic: meson8b: enable UART RX and TX pull up by defau=
lt
arm64: dts: amlogic: gxbb: enable UART RX and TX pull up by default
arm64: dts: amlogic: gxl: enable UART RX and TX pull up by default
arm64: dts: amlogic: g12: enable UART RX and TX pull up by default
arm64: dts: amlogic: axg: enable UART RX and TX pull up by default
arm64: dts: amlogic: a1: enable UART RX and TX pull up by default

Martin Schmiedel (1):
arm64: dts: imx8mp-tqma8mpql-mba8mp-ras314: Add LVDS device tree o=
verlay

Martyn Welch (2):
dt-bindings: arm: fsl: Add Boundary Device Nitrogen8M Plus ENC Car=
rier Board
arm64: dts: imx8mp: Add device tree for Nitrogen8M Plus ENC Carrie=
r Board

Matt Coster (2):
arm64: dts: ti: k3-am62: New GPU binding details
arm64: dts: ti: k3-j721s2: Add GPU node

Matthew Gerlach (2):
arm64: dts: intel: socfpga_agilex: add frequencies to internal osc=
illators
dt-bindings: clock: socfpga: convert to yaml

Matti Lehtim=C3=A4ki (3):
ARM: dts: qcom: msm8226: Add node for TCSR halt regs
ARM: dts: qcom: msm8226: Add smsm node
ARM: dts: qcom: msm8226-samsung-matisse-common: Enable modem

Maud Spierings (3):
arm64: dts: qcom: x1e80100-vivobook-s15: Enable USB-A ports
arm64: dts: qcom: x1e80100-vivobook-s15: Enable micro-sd card read=
er
arm64: dts: qcom: x1e80100-vivobook-s15: Add bluetooth

Maulik Shah (3):
arm64: dts: qcom: sm8750: Add RPMh sleep stats
arm64: dts: qcom: sm8750: Fix cluster hierarchy for idle states
arm64: dts: qcom: qcs8300: Add RPMh sleep stats

Max Krummenacher (2):
arm64: dts: imx8-apalis: Add PCIe and SATA support
arm64: dts: imx8-colibri: Add PCIe support

Md Sadre Alam (3):
arm64: dts: qcom: ipq9574: Add SPI nand support
arm64: dts: qcom: ipq9574: Enable SPI NAND for ipq9574
arm64: dts: qcom: ipq9574: Remove eMMC node

Melody Olvera (1):
arm64: dts: qcom: sm8750: Add LLCC node

Michael Klein (1):
ARM: dts: bananapi: add support for PHY LEDs

Michael Walle (1):
arm64: dts: ti: k3-am62p-j722s: Add rng node

Michal Wilczynski (3):
riscv: dts: thead: Introduce power domain nodes with aon firmware
riscv: dts: thead: Introduce reset controller node
riscv: dts: thead: Add device tree VO clock controller

Mihai Sain (1):
ARM: dts: microchip: sama7g54_curiosity: Add fixed-partitions for =
spi-nor flash

Neil Armstrong (23):
arm64: dts: qcom: sm8650: add OSM L3 node
arm64: dts: qcom: sm8650: add cpu interconnect nodes
arm64: dts: qcom: sm8650: add cpu OPP table with DDR, LLCC & L3 ba=
ndwidths
arm64: dts: qcom: sm8650: drop cpu thermal passive trip points
arm64: dts: qcom: sm8650: setup gpu thermal with higher temperatur=
es
arm64: dts: qcom: sm8650: harmonize all unregulated thermal trip p=
oints
arm64: dts: qcom: sm8650: drop remaining polling-delay-passive pro=
perties
arm64: dts: qcom: sm8550: use ICC tag for all interconnect phandles
arm64: dts: qcom: sm8550: set CPU interconnect paths as ACTIVE_ONLY
arm64: dts: qcom: sm8550: add OPP table support to PCIe
arm64: dts: qcom: sm8550: add QUP serial engines OPP tables
arm64: dts: qcom: sm8650: use ICC tag for IPA interconnect phandles
arm64: dts: qcom: sm8650: set CPU interconnect paths as ACTIVE_ONLY
arm64: dts: qcom: sm8650: add USB interconnect paths
arm64: dts: qcom: sm8650: add OPP table support to PCIe
arm64: dts: qcom: sm8650: add QUP serial engines OPP tables
arm64: dts: qcom: sm8650: add UFS OPP table instead of freq-table-=
hz property
arm64: dts: qcom: sm8550: add missing cpu-cfg interconnect path in=
the mdss node
arm64: dts: qcom: sm8650: add missing cpu-cfg interconnect path in=
the mdss node
arm64: dts: qcom: sm8650: add all 8 coresight ETE nodes
arm64: dts: qcom: sm8650: switch to interrupt-cells 4 to add PPI p=
artitions
arm64: dts: qcom: sm8650: add PPI interrupt partitions for the ARM=
PMUs
arm64: dts: qcom: sc7280: add UFS operating points

Nick Chan (9):
arm64: dts: apple: s5l8960x: Add CPU caches
arm64: dts: apple: t7000: Add CPU caches
arm64: dts: apple: t7001: Add CPU caches
arm64: dts: apple: s800-0-3: Add CPU caches
arm64: dts: apple: s8001: Add CPU caches
arm64: dts: apple: t8010: Add CPU caches
arm64: dts: apple: t8011: Add CPU caches
arm64: dts: apple: t8012: Add CPU caches
arm64: dts: apple: t8015: Add CPU caches

Nicolas Frattaroli (8):
arm64: dts: rockchip: enable pcie on Sige5
arm64: dts: rockchip: add SATA nodes to RK3576
arm64: dts: rockchip: add RK3576 RNG node
dt-bindings: clock: rk3576: add IOC gated clocks
arm64: dts: rockchip: Add RK3576 SAI nodes
arm64: dts: rockchip: Add RK3576 HDMI audio
arm64: dts: rockchip: Add analog audio on RK3576 Sige5
arm64: dts: rockchip: Enable HDMI audio on Sige5

Nikita Travkin (7):
arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Drop CMA heap
arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Drop CMA heap
arm64: dts: qcom: sc7180: Add EL2 overlay for WoA devices
arm64: dts: qcom: sc8280xp: Add PCIe IOMMU
arm64: dts: qcom: sc8280xp: Add EL2 overlay for WoA devices
arm64: dts: qcom: x1e80100: Add PCIe IOMMU
arm64: dts: qcom: x1e/x1p: Add EL2 overlay for WoA devices

Niklas S=C3=B6derlund (3):
arm64: dts: renesas: r8a779a0: Add ISP core function block
arm64: dts: renesas: r8a779g0: Add ISP core function block
arm64: dts: renesas: r8a779h0: Add ISP core function block

Nikolaos Pasaloukos (1):
arm64: dts: blaize-blzp1600: Enable GPIO support

Niravkumar L Rabara (6):
dt-bindings: intel: document Agilex5 NAND daughter board
arm64: dts: socfpga: agilex5: add NAND daughter board
arm64: dts: socfpga: agilex5: fix gpio0 address
arm64: dts: socfpga: agilex5: add qspi flash node
arm64: dts: socfpga: agilex5: add led and memory nodes
arm64: dts: socfpga: agilex: Add dma channel id for spi

Nirmesh Kumar Singh (1):
arm64: dts: qcom: Add industrial mezzanine support for qcs6490-rb3=
gen2

Nishanth Menon (1):
arm64: dts: ti: k3-am67a-beagley-ai: Add bootph for main_gpio1

Nitheesh Sekar (2):
arm64: dts: qcom: ipq5018: Add PCIe related nodes
arm64: dts: qcom: ipq5018: Enable PCIe

N=C3=ADcolas F. R. A. Prado (4):
arm64: dts: mediatek: mt8188: Describe SCP as a cluster with two c=
ores
arm64: dts: mediatek: mt8390-genio-common: Add firmware-name for s=
cp0
arm64: dts: mediatek: mt6357: Drop regulator-fixed compatibles
arm64: dts: mediatek: mt8395-genio-1200-evk: Disable unused backli=
ght

Olivier Moysan (2):
ARM: dts: stm32: add vrefint calibration on stm32mp13
ARM: dts: stm32: add vrefint support to adc on stm32mp13

Patrice Chotard (3):
arm64: dts: st: Add OMM node on stm32mp251
arm64: dts: st: Add ospi port1 pinctrl entries in stm32mp25-pinctr=
l.dtsi
arm64: dts: st: Add SPI NOR flash support on stm32mp257f-ev1 board

Pengyu Luo (4):
arm64: dts: qcom: sc8280xp-pmics: Fix slave ID in interrupts confi=
guration
arm64: dts: qcom: sc8280xp-pmics: Add more temp-alarm devices
arm64: dts: qcom: sc8280xp: Fix clock for spi0 to spi7
arm64: dts: qcom: sm8650: add the missing l2 cache node

Peter Griffin (1):
arm64: dts: exynos: gs101: add pmu-intr-gen syscon node

Peter Robinson (4):
arm64: dts: allwinner: a64: Add WiFi/BT header on PINE A64
arm64: dts: allwinner: a64: Add WiFi/BT header on SOPINE Baseboard
arm64: dts: rockchip: Add vcc-supply to SPI flash on rk3566-rock3c
arm64: dts: rockchip: Update eMMC for NanoPi R5 series

Pin-yen Lin (1):
arm64: dts: mt8183: Add port node to mt8183.dtsi

Prasanth Babu Mantena (1):
arm64: dts: ti: k3-j721e-common-proc-board: Enable OSPI1 on J721E

Prashanth K (3):
arm64: dts: qcom: sm8150: Add snps,dis_u3_susphy_quirk
arm64: dts: qcom: sm8350: Add snps,dis_u3_susphy_quirk
arm64: dts: qcom: sm8450: Add snps,dis_u3_susphy_quirk

Pratham Pratap (2):
arm64: dts: qcom: qcs615: Add snps,dis_u3_susphy_quirk
arm64: dts: qcom: qdu1000: Add snps,dis_u3_susphy_quirk

Pratyush Brahma (2):
arm64: dts: qcom: qcs8300: Add device node for gfx_smmu
arm64: dts: qcom: qcs8300: add the pcie smmu node

Praveenkumar I (4):
arm64: dts: qcom: ipq5332: Add tsens node
arm64: dts: qcom: ipq5332: Add thermal zone nodes
arm64: dts: qcom: ipq5332: Add PCIe related nodes
arm64: dts: qcom: ipq5332-rdp441: Enable PCIe phys and controllers

Primoz Fiser (17):
arm64: dts: freescale: imx93-phycore-som: Add PMIC support
arm64: dts: freescale: imx93-phycore-som: Add EEPROM support
arm64: dts: freescale: imx93-phycore-som: Disable LED pull-up
arm64: dts: freescale: imx93-phycore-som: Enhance eMMC pinctrl
arm64: dts: freescale: imx93-phycore-som: Add eMMC no-1-8-v by def=
ault
arm64: dts: freescale: imx93-phyboard-segin: Drop eMMC no-1-8-v fl=
ag
arm64: dts: freescale: imx93-phyboard-segin: Disable SD-card write=
-protect
arm64: dts: freescale: imx93-phyboard-segin: Fix SD-card pinctrl
arm64: dts: freescale: imx93-phyboard-segin: Set CMD/DATA SION bit=
to fix ERR052021
arm64: dts: freescale: imx93-phyboard-segin: Add RTC support
arm64: dts: freescale: imx93-phyboard-segin: Add CAN support
arm64: dts: freescale: imx93-phyboard-segin: Add USB support
arm64: dts: freescale: imx93-phyboard-segin: Add I2S audio
arm64: dts: freescale: imx93-phyboard-segin: Add EQOS Ethernet
arm64: dts: freescale: imx93-phyboard-segin: Order node alphabetic=
ally
bindings: arm: fsl: Add PHYTEC phyBOARD-Nash-i.MX93 board
arm64: dts: freescale: Add PHYTEC phyBOARD-Nash-i.MX93 support

Quentin Schulz (4):
arm64: dts: rockchip: Enable HDMI audio output for RK3588 Jaguar
arm64: dts: rockchip: Enable HDMI audio output for RK3588 Tiger Ha=
ikou
arm64: dts: rockchip: disable unrouted USB controllers and PHY on =
RK3399 Puma
arm64: dts: rockchip: disable unrouted USB controllers and PHY on =
RK3399 Puma with Haikou

Rajendra Nayak (1):
arm64: dts: qcom: x1e80100: Add the watchdog device

Rakesh Kota (1):
arm64: dts: qcom: qcs6490-rb3gen2: Add vadc and adc-tm channels

Richard Acayan (1):
arm64: dts: qcom: sdm670: add camss and cci

Richard Zhu (1):
arm64: dts: imx8mq: Add linux,pci-domain into pcie-ep node

Rishikesh Donadkar (6):
arm64: dts: ti: k3-am62p5-sk: Add regulator nodes for AM62P
arm64: dts: ti: k3-am62x: Add required voltage supplies for IMX219
arm64: dts: ti: k3-am62x: Add required voltage supplies for OV5640
arm64: dts: ti: k3-am62x: Add required voltage supplies for TEVI-O=
V5640
arm64: dts: ti: k3-am625-beagleplay: Add required voltage supplies=
for OV5640
arm64: dts: ti: k3-am625-beagleplay: Add required voltage supplies=
for TEVI-OV5640

Rob Herring (Arm) (16):
arm64: dts: microchip: sparx5: Fix CPU node "enable-method" proper=
ty dependencies
arm64: dts: broadcom: bcm2712: Use "l2-cache" for L2 cache node na=
mes
arm64: dts: marvell: Drop unused "pinctrl-names"
arm64: dts: qcom: qdu1000: Fix qcom,freq-domain
arm64: dts: qcom: msm8939: Fix CPU node "enable-method" property d=
ependencies
arm64: dts: qcom: msm8992-lg-h815: Fix CPU node "enable-method" pr=
operty dependencies
ARM: dts: qcom: sdx55/sdx65: Fix CPU power-domain-names
arm64: dts: amlogic: Drop redundant CPU "clock-latency"
arm64: dts: imx: Drop redundant CPU "clock-latency"
ARM: dts: imx: Drop redundant CPU "clock-latency"
ARM: dts: rockchip: Drop redundant CPU "clock-latency"
arm/arm64: dts: allwinner: Use preferred node names for cooling ma=
ps
arm64: dts: allwinner: h5/h6: Drop spurious 'clock-latency-ns' pro=
perties
arm/arm64: dts: mediatek: Add missing "#sound-dai-cells" to linux,=
bt-sco
ARM: dts: qcom: ipq4019: Drop redundant CPU "clock-latency"
dt-bindings: interrupt-controller: Convert nvidia,tegra20-ictlr to=
DT schema

Robert Nelson (2):
dt-bindings: arm: ti: Add PocketBeagle2
arm64: dts: ti: Add k3-am62-pocketbeagle2

Rudraksha Gupta (3):
ARM: dts: qcom: msm8960: Add BAM
ARM: dts: qcom: msm8960: Add thermal sensor (tsens)
ARM: dts: qcom-msm8960: add missing clocks to the timer node

Russell King (Oracle) (1):
arm64: dts: qcom: remove max-speed =3D 1G for RGMII for ethernet

Ryan Wanner (8):
ARM: dts: microchip: sama7d65: Add gmac interfaces for sama7d65 SoC
ARM: dts: microchip: sama7d65: Add FLEXCOMs to sama7d65 SoC
ARM: dts: microchip: sama7d65: Enable GMAC interface
ARM: dts: microchip: sama7d65: Add MCP16502 to sama7d65 curiosity
ARM: dts: microchip: sama7d65_curiosity: add EEPROM
ARM: dts: microchip: sama7d65: Add SRAM and DRAM components support
ARM: dts: microchip: sama7d65: Add RTT and GPBR Support for sama7d=
65 SoC
ARM: dts: microchip: sama7d65: Add RTT timer to curiosity board

Sandie Cao (1):
riscv: dts: starfive: fml13v01: enable USB 3.0 port

Sanjay Chitroda (1):
ARM: dts: qcom: Fix indentation errors

Sasha Finkelstein (1):
arm64: dts: apple: Add SPMI controller nodes

Sebastian Reichel (3):
arm64: dts: rockchip: move rock 5b to include file
arm64: dts: rockchip: add Rock 5B+
arm64: dts: rockchip: Add missing SFC power-domains to rk3576

Shawn Lin (3):
arm64: dts: rockchip: Enable ufshc on rk3576 evb1 board
arm64: dts: rockchip: Rename vcc3v3_pcie0 to vcc3v3_pcie1 for rk35=
76-evb1-v10
arm64: dts: rockchip: Add pcie1 slot for rk3576 evb1 board

Shin Son (2):
arm64: dts: exynosautov920: add cpucl0 clock DT nodes
arm64: dts: exynosautov920: add cpucl1/2 clock DT nodes

Sibi Sankar (2):
arm64: dts: qcom: x1e80100: Add cpucp mailbox and sram nodes
arm64: dts: qcom: x1e80100: Enable cpufreq

Siddharth Vadapalli (16):
arm64: dts: ti: k3-j784s4-evm-usxgmii-exp1-exp2: drop pinctrl-names
arm64: dts: ti: k3-j722s-evm: Enable "serdes_wiz0" and "serdes_wiz=
1"
arm64: dts: ti: k3-j722s-main: Disable "serdes_wiz0" and "serdes_w=
iz1"
arm64: dts: ti: k3-j722s-main: Don't disable serdes0 and serdes1
arm64: dts: ti: k3-j722s-evm: Drop redundant status within serdes0=
/serdes1
arm64: dts: ti: k3-j784s4-j742s2-evm: Add overlay to enable USB0 T=
ype-A
arm64: dts: ti: k3-j784s4-j742s2-main-common: Fix length of serdes=
_ln_ctrl
arm64: dts: ti: k3-am64-main: Switch to 64-bit address space for P=
CIe0
arm64: dts: ti: k3-j7200-main: Switch to 64-bit address space for =
PCIe1
arm64: dts: ti: k3-j721e: Add ranges for PCIe0 DAT1 and PCIe1 DAT1
arm64: dts: ti: k3-j721e-main: Switch to 64-bit address space for =
PCIe0 and PCIe1
arm64: dts: ti: k3-j721s2-main: Switch to 64-bit address space for=
PCIe1
arm64: dts: ti: k3-j722s-main: Switch to 64-bit address space for =
PCIe0
arm64: dts: ti: k3-j784s4-j742s2-main-common: Switch to 64-bit add=
ress space for PCIe0 and PCIe1
arm64: dts: ti: k3-j784s4-j742s2-main-common: Add ACSPCIE0 node
arm64: dts: ti: k3-j784s4-j742s2-evm-common: Enable ACSPCIE0 outpu=
t for PCIe1

Srinivas Kandagatla (1):
arm64: dts: qcom: x1e78100-t14s: Enable audio headset support

Stanimir Varbanov (2):
arm64: dts: broadcom: bcm2712: Add PCIe DT nodes
arm64: dts: broadcom: bcm2712-rpi-5-b: Enable PCIe DT nodes

Stanislav Jakubek (4):
ARM: dts: qcom: msm8226-motorola-falcon: add clocks, power-domain =
to simpleFB
ARM: dts: qcom: msm8226-motorola-falcon: add I2C clock frequencies
ARM: dts: qcom: msm8226-motorola-falcon: limit TPS65132 to 5.4V
ARM: dts: qcom: msm8226-motorola-falcon: specify vddio_disp output=
voltage

Stefan Wahren (3):
dt-bindings: arm: bcm2835: Add Raspberry Pi 2 (2nd rev)
ARM: dts: bcm: Add support for Raspberry Pi 2 (2nd rev)
arm64: dts: bcm: Add reference to RPi 2 (2nd rev)

Stephan Gerhold (24):
arm64: dts: qcom: x1e80100: Fix video thermal zone
arm64: dts: qcom: x1e80100: Apply consistent critical thermal shut=
down
arm64: dts: qcom: x1e80100: Add GPU cooling
arm64: dts: qcom: x1e80100: Drop unused passive thermal trip point=
s for CPU
arm64: dts: qcom: x1e80100-qcp: Add WiFi/BT pwrseq
arm64: dts: qcom: sm8450: Add missing properties for cryptobam
arm64: dts: qcom: sm8550: Add missing properties for cryptobam
arm64: dts: qcom: sm8650: Add missing properties for cryptobam
arm64: dts: qcom: sa8775p: Add missing properties for cryptobam
arm64: dts: qcom: ipq9574: Add missing properties for cryptobam
arm64: dts: qcom: sc8280xp-x13s: Drop duplicate DMIC supplies
arm64: dts: qcom: x1e80100-crd: Drop duplicate DMIC supplies
arm64: dts: qcom: x1-crd: Fix vreg_l2j_1p2 voltage
arm64: dts: qcom: x1e001de-devkit: Fix vreg_l2j_1p2 voltage
arm64: dts: qcom: x1e80100-asus-vivobook-s15: Fix vreg_l2j_1p2 vol=
tage
arm64: dts: qcom: x1e80100-hp-omnibook-x14: Fix vreg_l2j_1p2 volta=
ge
arm64: dts: qcom: x1e80100-lenovo-yoga-slim7x: Fix vreg_l2j_1p2 vo=
ltage
arm64: dts: qcom: x1e80100-qcp: Fix vreg_l2j_1p2 voltage
arm64: dts: qcom: msm8916/39: Move UART pinctrl to board files
arm64: dts: qcom: msm8916/39: Introduce new UART console pinctrl
arm64: dts: qcom: msm8919/39: Use UART2 console pinctrl where appr=
opriate
arm64: dts: qcom: msm8916-motorola: Use UART1 console pinctrl
arm64: dts: qcom: msm8916: Drop generic UART pinctrl templates
arm64: dts: qcom: msm8939: Drop generic UART pinctrl templates

Sudeep Holla (4):
arm64: dts: fvp: Add system timer for broadcast during CPU idle
arm64: dts: fvp: Add CPU idle states for Rev C model
arm64: dts: fvp: Reserve 64MB for the FF-A firmware in memory map
arm64: dts: arm: Drop the clock-frequency property from timer nodes

Sukrut Bellary (1):
ARM: dts: am335x: Set wakeup-source for UART0

Sven Peter (1):
MAINTAINERS, mailmap: update Sven Peter's email address

Svyatoslav Ryhel (3):
dt-bindings: arm: tegra: Group Tegra30 based ASUS Transformers
dt-bindings: arm: tegra: Add Asus Transformer Pad TF300TL
ARM: tegra: Add device-tree for ASUS Transformer Pad LTE TF300TL

Swathi K S (2):
arm64: dts: fsd: Add Ethernet support for FSYS0 Block of FSD SoC
arm64: dts: fsd: Add Ethernet support for PERIC Block of FSD SoC

Taniya Das (3):
arm64: dts: qcom: qcm6490-idp: Update protected clocks list
arm64: dts: qcom: qcm6490-idp: Update the LPASS audio node
arm64: dts: qcom: qcs6490-rb3gen2: Update the LPASS audio node

Thierry Bultel (1):
dt-bindings: soc: renesas: Add Renesas RZ/T2H (R9A09G077) SoC

Thuan Nguyen (1):
arm64: dts: renesas: white-hawk-ard-audio: Fix TPU0 groups

Tingguo Cheng (3):
arm64: dts: qcom: qcs8300: Adds SPMI support
arm64: dts: qcom: qcs8300-ride: Enable PMIC peripherals
arm64: dts: qcom: qcs615: remove disallowed property in spmi bus n=
ode

Tommaso Merciai (2):
arm64: dts: renesas: r9a09g047: Add Mali-G52 GPU node
arm64: dts: renesas: rzg3e-smarc-som: Enable Mali-G52

Uwe Kleine-K=C3=B6nig (4):
dt-bindings: altera: Add compatible for Terasic's DE10-nano
ARM: dts: socfpga: Add basic support for Terrasic's de10-nano
arm64: dts: rockchip: Correct gmac phy address on QNAP TS433
arm64: dts: rockchip: Add gmac phy reset GPIO to QNAP TS433

Vaishnav Achath (2):
arm64: dts: ti: k3-j722s-evm: Add overlay for quad IMX219
arm64: dts: ti: k3-j722s-evm: Add overlay for TEVI OV5640

Varadarajan Narayanan (3):
arm64: dts: qcom: ipq5424: Enable MMC
arm64: dts: qcom: ipq9574: Fix USB vdd info
arm64: dts: qcom: ipq9574: Add MHI to pcie nodes

Vikash Garodia (1):
arm64: dts: qcom: sc7280: drop video decoder and encoder nodes

Viken Dadhaniya (2):
arm64: dts: qcom: qcs8300: Add QUPv3 configuration
arm64: dts: qcom: sa8775p: Add default pin configurations for QUP =
SEs

Vikram Sharma (2):
arm64: dts: qcom: sc7280: Add support for camss
arm64: dts: qcom: qcs6490-rb3gen2-vision-mezzanine: Add vision mez=
zanine

Vishwaroop A (1):
arm64: tegra: Configure QSPI clocks and add DMA

Vitor Soares (2):
dt-bindings: arm: fsl: add Toradex SMARC iMX8MP SoM and carrier
arm64: dts: freescale: add Toradex SMARC iMX8MP

Vladimir Lypak (1):
arm64: dts: qcom: msm8953: Add interconnects

William A. Kennington III (5):
ARM: dts: nuvoton: Add EDAC node
ARM: dts: nuvoton: Add UDC nodes
ARM: dts: nuvoton: Add OHCI node
ARM: dts: nuvoton: Add MMC Nodes
arm64: dts: nuvoton: Add pinctrl

Wojciech Slenska (1):
arm64: dts: qcom: qcm2290: Add uart3 node

Wolfram Sang (23):
ARM: dts: at91: usb_a9g20: add SPI EEPROM
ARM: dts: at91: usb_a9263: fix GPIO for Dataflash chip select
ARM: dts: at91: calao_usb: simplify memory node
ARM: dts: at91: usb_a9260: use 'stdout-path'
ARM: dts: at91: calao_usb: simplify chosen node
ARM: dts: at91: usb_a9g20: move wrong RTC node
ARM: dts: at91: at91sam9263: fix NAND chip selects
ARM: dts: renesas: r9a06g032: Describe I2C controllers
ARM: dts: renesas: r9a06g032-rzn1d400-db: Describe I2C bus
ARM: dts: renesas: r9a06g032-rzn1d400-eb: Describe I2C bus
ARM: dts: renesas: r9a06g032-rzn1d400-db: Describe keys
ARM: dts: renesas: r9a06g032: Describe SDHCI controllers
ARM: dts: renesas: r9a06g032-rzn1d400-eb: describe SD card port
ARM: dts: renesas: r9a06g032-rzn1d400-eb: Add GMAC1 port
ARM: dts: renesas: r9a06g032-rzn1d400-eb: Describe 9-pin D-sub ser=
ial port
ARM: dts: renesas: r9a06g032-rzn1d400-db: Enable USB device port
ARM: dts: renesas: r9a06g032-rzn1d400-db: Add pinmux for the CPLD
ARM: dts: renesas: r9a06g032-rzn1d400-eb: Enable USB host port
ARM: dts: marvell: use correct ohci/ehci node names
ARM: dts: nxp: lpc: use correct ohci/ehci node names
ARM: dts: st: use correct ohci/ehci node names
ARM: dts: ti: omap: use correct ohci/ehci node names
ARM: dts: vt8500: use correct ohci/ehci node names

Xianwei Zhao (7):
arm64: dts: amlogic: a4: add pinctrl node
dt-bindings: arm: amlogic: add S6 support
dt-bindings: arm: amlogic: add S7 support
dt-bindings: arm: amlogic: add S7D support
arm64: dts: add support for S6 based Amlogic BL209
arm64: dts: add support for S7 based Amlogic BP201
arm64: dts: add support for S7D based Amlogic BM202

Xilin Wu (2):
arm64: dts: qcom: sm8250: Fix CPU7 opp table
arm64: dts: qcom: sc7280: Mark FastRPC context banks as dma-cohere=
nt

Xu Yang (3):
arm64: dts: imx95: add USB2.0 nodes
arm64: dts: imx95-19x19-evk: enable USB2.0 node
arm64: dts: imx95-15x15-evk: enable USB2.0 node

Yannic Moog (3):
dt-bindings: arm: add imx8mp-libra-rdk-fpsc
arm64: dts: add imx8mp-libra-rdk-fpsc board
arm64: dts: add imx8mp-libra-rdk-fpsc LVDS panel overlay

Yao Zi (5):
arm64: dts: rockchip: Add I2C controllers for RK3528
arm64: dts: rockchip: Add onboard EEPROM for Radxa E20C
dt-bindings: clock: Add GRF clock definition for RK3528
arm64: dts: rockchip: Add SDMMC/SDIO controllers for RK3528
arm64: dts: rockchip: Enable SD-card interface on Radxa E20C

Yemike Abhilash Chandra (9):
arm64: dts: ti: k3-j721e-sk: Add DT nodes for power regulators
arm64: dts: ti: k3-am68-sk: Fix regulator hierarchy
arm64: dts: ti: k3-j721e-sk: Remove clock-names property from IMX2=
19 overlay
arm64: dts: ti: k3-j721e-sk: Add requiried voltage supplies for IM=
X219
arm64: dts: ti: k3-am62x: Remove clock-names property from IMX219 =
overlay
arm64: dts: ti: k3-am62x: Rename I2C switch to I2C mux in IMX219 o=
verlay
arm64: dts: ti: k3-am62x: Rename I2C switch to I2C mux in OV5640 o=
verlay
arm64: dts: ti: j722s-evm: Add DT nodes for power regulators
arm64: dts: ti: j722s-evm: Add MUX to control CSI2RX

Yixun Lan (9):
dt-bindings: sram: sunxi-sram: Add A523 compatible
arm64: dts: allwinner: a523: Add EMAC0 ethernet MAC
arm64: dts: allwinner: a527: add EMAC0 to Radxa A5E board
arm64: dts: allwinner: t527: add EMAC0 to Avaota-A1 board
Merge tag 'spacemit-clk-binding-for-6.16' of https://github.com/sp=
acemit-com/linux into spacemit-dt-for-6.16
riscv: dts: spacemit: Acquire clocks for pinctrl
riscv: dts: spacemit: Acquire clocks for UART
riscv: dts: spacemit: add gpio support for K1 SoC
riscv: dts: spacemit: add gpio LED for system heartbeat

Zelong Dong (2):
arm64: dts: amlogic: Add A4 Reset Controller
arm64: dts: amlogic: Add A5 Reset Controller

=C5=81ukasz Majczak (1):
arm64: dts: mediatek: mt8186: starmie: Fix external display

.mailmap | 1 +
Documentation/devicetree/bindings/arm/altera.yaml | 1 +
.../bindings/arm/altera/socfpga-clk-manager.yaml | 102 +-
Documentation/devicetree/bindings/arm/amlogic.yaml | 26 +
.../devicetree/bindings/arm/bcm/bcm2835.yaml | 1 +
Documentation/devicetree/bindings/arm/fsl.yaml | 61 +-
.../devicetree/bindings/arm/intel,socfpga.yaml | 1 +
.../devicetree/bindings/arm/mediatek.yaml | 11 +
Documentation/devicetree/bindings/arm/qcom.yaml | 14 +-
.../devicetree/bindings/arm/rockchip.yaml | 37 +-
.../devicetree/bindings/arm/rockchip/pmu.yaml | 2 +
.../bindings/arm/samsung/samsung-boards.yaml | 8 +
.../devicetree/bindings/arm/stm32/stm32.yaml | 9 +
Documentation/devicetree/bindings/arm/sunxi.yaml | 25 +
Documentation/devicetree/bindings/arm/tegra.yaml | 19 +-
Documentation/devicetree/bindings/arm/ti/k3.yaml | 32 +
Documentation/devicetree/bindings/arm/vt8500.yaml | 10 +-
.../devicetree/bindings/clock/altr_socfpga.txt | 30 -
.../bindings/clock/renesas,rzv2h-cpg.yaml | 5 +-
.../devicetree/bindings/clock/spacemit,k1-pll.yaml | 50 +
.../bindings/display/mediatek/mediatek,aal.yaml | 4 +
.../bindings/display/mediatek/mediatek,color.yaml | 4 +
.../bindings/display/mediatek/mediatek,merge.yaml | 4 +
.../display/mediatek/mediatek,padding.yaml | 10 +-
.../bindings/dma/nvidia,tegra20-apbdma.txt | 44 -
.../bindings/dma/nvidia,tegra20-apbdma.yaml | 90 +
.../bindings/firmware/intel,stratix10-svc.txt | 57 -
.../bindings/firmware/intel,stratix10-svc.yaml | 93 +
.../fpga/intel,stratix10-soc-fpga-mgr.yaml | 36 +
.../bindings/fpga/intel-stratix10-soc-fpga-mgr.txt | 18 -
.../interrupt-controller/nvidia,tegra20-ictlr.txt | 41 -
.../interrupt-controller/nvidia,tegra20-ictlr.yaml | 82 +
.../bindings/media/cec/nvidia,tegra114-cec.yaml | 14 +-
.../bindings/media/mediatek,mdp3-fg.yaml | 8 +-
.../bindings/media/mediatek,mdp3-hdr.yaml | 8 +-
.../bindings/media/mediatek,mdp3-rsz.yaml | 1 +
.../bindings/media/mediatek,mdp3-stitch.yaml | 8 +-
.../bindings/media/mediatek,mdp3-tcc.yaml | 8 +-
.../bindings/media/mediatek,mdp3-tdshp.yaml | 8 +-
.../bindings/media/mediatek,mdp3-wrot.yaml | 1 +
.../bindings/pinctrl/renesas,rzg2l-pinctrl.yaml | 2 +
.../soc/renesas/renesas,r9a09g057-sys.yaml | 1 +
.../devicetree/bindings/soc/renesas/renesas.yaml | 32 +
.../devicetree/bindings/soc/rockchip/grf.yaml | 7 +
.../bindings/soc/spacemit/spacemit,k1-syscon.yaml | 80 +
.../soc/ti/ti,j721e-system-controller.yaml | 23 +
.../sram/allwinner,sun4i-a10-system-control.yaml | 1 +
.../devicetree/bindings/usb/cypress,hx3.yaml | 19 +-
.../devicetree/bindings/vendor-prefixes.yaml | 10 +
MAINTAINERS | 9 +-
arch/arm/boot/dts/allwinner/sun7i-a20-bananapi.dts | 27 +
arch/arm/boot/dts/allwinner/sun8i-a83t.dtsi | 4 +-
.../boot/dts/allwinner/sun8i-h3-nanopi-neo-air.dts | 2 +-
arch/arm/boot/dts/allwinner/sun8i-h3.dtsi | 2 +-
arch/arm/boot/dts/allwinner/sun8i-r40.dtsi | 2 +-
arch/arm/boot/dts/amlogic/Makefile | 1 +
arch/arm/boot/dts/amlogic/meson8-fernsehfee3.dts | 306 ++
arch/arm/boot/dts/amlogic/meson8.dtsi | 22 +-
arch/arm/boot/dts/amlogic/meson8b.dtsi | 4 +-
arch/arm/boot/dts/broadcom/Makefile | 2 +
arch/arm/boot/dts/broadcom/bcm2166x-common.dtsi | 7 +
arch/arm/boot/dts/broadcom/bcm2166x-pinctrl.dtsi | 297 ++
arch/arm/boot/dts/broadcom/bcm28155-ap.dts | 68 +-
arch/arm/boot/dts/broadcom/bcm2837-rpi-2-b.dts | 130 +
arch/arm/boot/dts/broadcom/bcm59056.dtsi | 91 -
arch/arm/boot/dts/intel/socfpga/Makefile | 1 +
.../intel/socfpga/socfpga_cyclone5_de10nano.dts | 95 +
arch/arm/boot/dts/marvell/kirkwood-db.dtsi | 2 +-
arch/arm/boot/dts/marvell/kirkwood-dir665.dts | 2 +-
.../boot/dts/marvell/kirkwood-mv88f6281gtw-ge.dts | 2 +-
arch/arm/boot/dts/marvell/kirkwood.dtsi | 2 +-
arch/arm/boot/dts/marvell/orion5x.dtsi | 4 +-
arch/arm/boot/dts/mediatek/mt2701-evb.dts | 1 +
.../boot/dts/microchip/at91-sama7d65_curiosity.dts | 209 +
.../boot/dts/microchip/at91-sama7g54_curiosity.dts | 32 +
arch/arm/boot/dts/microchip/at91sam9263ek.dts | 2 +-
arch/arm/boot/dts/microchip/sama7d65.dtsi | 346 ++
arch/arm/boot/dts/microchip/tny_a9263.dts | 2 +-
arch/arm/boot/dts/microchip/usb_a9260.dts | 8 -
arch/arm/boot/dts/microchip/usb_a9260_common.dtsi | 9 +
arch/arm/boot/dts/microchip/usb_a9263.dts | 4 +-
arch/arm/boot/dts/microchip/usb_a9g20.dts | 17 +-
arch/arm/boot/dts/microchip/usb_a9g20_common.dtsi | 27 -
arch/arm/boot/dts/microchip/usb_a9g20_lpw.dts | 10 +-
.../boot/dts/nuvoton/nuvoton-common-npcm7xx.dtsi | 108 +
arch/arm/boot/dts/nuvoton/nuvoton-npcm730-gbs.dts | 12 +-
.../dts/nuvoton/nuvoton-npcm750-runbmc-olympus.dts | 120 +-
arch/arm/boot/dts/nuvoton/nuvoton-npcm750.dtsi | 65 +
arch/arm/boot/dts/nvidia/Makefile | 1 +
arch/arm/boot/dts/nvidia/tegra124-apalis-eval.dts | 5 -
.../boot/dts/nvidia/tegra124-apalis-v1.2-eval.dts | 5 -
arch/arm/boot/dts/nvidia/tegra20.dtsi | 2 +-
arch/arm/boot/dts/nvidia/tegra30-apalis-eval.dts | 5 -
.../boot/dts/nvidia/tegra30-apalis-v1.1-eval.dts | 5 -
arch/arm/boot/dts/nvidia/tegra30-asus-tf300tl.dts | 857 ++++
arch/arm/boot/dts/nvidia/tegra30.dtsi | 2 +-
arch/arm/boot/dts/nxp/imx/imx25.dtsi | 2 +-
arch/arm/boot/dts/nxp/imx/imx31-lite.dts | 2 +-
arch/arm/boot/dts/nxp/imx/imx31.dtsi | 2 +-
arch/arm/boot/dts/nxp/imx/imx35.dtsi | 2 +-
.../dts/nxp/imx/imx51-digi-connectcore-som.dtsi | 2 +-
arch/arm/boot/dts/nxp/imx/imx51.dtsi | 4 +-
arch/arm/boot/dts/nxp/imx/imx53.dtsi | 4 +-
arch/arm/boot/dts/nxp/imx/imx6q-apalis-eval.dts | 9 -
arch/arm/boot/dts/nxp/imx/imx6q-mccmon6.dts | 2 +-
arch/arm/boot/dts/nxp/imx/imx6qdl-sabreauto.dtsi | 2 +-
arch/arm/boot/dts/nxp/imx/imx6qp-prtwd3.dts | 2 +-
arch/arm/boot/dts/nxp/imx/imx7d-remarkable2.dts | 2 +-
arch/arm/boot/dts/nxp/imx/imx7d.dtsi | 6 +-
arch/arm/boot/dts/nxp/imx/imx7s.dtsi | 1 -
arch/arm/boot/dts/nxp/lpc/lpc32xx.dtsi | 2 +-
arch/arm/boot/dts/nxp/ls/Makefile | 9 +
.../nxp/ls/ls1021a-tqmls1021a-mbls1021a-hdmi.dtso | 32 +
...021a-tqmls1021a-mbls1021a-lvds-tm070jvhg33.dtso | 47 +
...1021a-tqmls1021a-mbls1021a-rgb-cdtech-dc44.dtso | 55 +
...1021a-tqmls1021a-mbls1021a-rgb-cdtech-fc21.dtso | 55 +
.../dts/nxp/ls/ls1021a-tqmls1021a-mbls1021a.dts | 5 +-
arch/arm/boot/dts/nxp/ls/ls1021a-tqmls1021a.dtsi | 3 +-
arch/arm/boot/dts/nxp/mxs/imx23-sansa.dts | 6 +-
arch/arm/boot/dts/nxp/mxs/imx23-xfi3.dts | 12 +-
arch/arm/boot/dts/nxp/mxs/imx28-btt3.dtsi | 2 +-
arch/arm/boot/dts/nxp/mxs/imx28-cfa10036.dts | 6 +-
arch/arm/boot/dts/qcom/Makefile | 1 +
arch/arm/boot/dts/qcom/msm8226-motorola-falcon.dts | 22 +-
arch/arm/boot/dts/qcom/msm8926.dtsi | 11 +
.../dts/qcom/qcom-apq8026-samsung-matisse-wifi.dts | 1 +
.../dts/qcom/qcom-apq8026-samsung-milletwifi.dts | 2 +
arch/arm/boot/dts/qcom/qcom-apq8064-ifc6410.dts | 1 -
.../boot/dts/qcom/qcom-apq8064-lg-nexus4-mako.dts | 359 ++
arch/arm/boot/dts/qcom/qcom-apq8064.dtsi | 104 +-
.../arm/boot/dts/qcom/qcom-apq8074-dragonboard.dts | 4 +-
arch/arm/boot/dts/qcom/qcom-ipq4018-ap120c-ac.dtsi | 2 +-
arch/arm/boot/dts/qcom/qcom-ipq4018-jalapeno.dts | 4 +-
arch/arm/boot/dts/qcom/qcom-ipq4019-ap.dk07.1.dtsi | 2 +-
arch/arm/boot/dts/qcom/qcom-ipq4019.dtsi | 6 +-
.../dts/qcom/qcom-msm8226-microsoft-common.dtsi | 6 +-
.../dts/qcom/qcom-msm8226-microsoft-dempsey.dts | 1 +
.../dts/qcom/qcom-msm8226-microsoft-makepeace.dts | 1 +
.../dts/qcom/qcom-msm8226-microsoft-moneypenny.dts | 1 +
.../qcom/qcom-msm8226-samsung-matisse-common.dtsi | 19 +-
arch/arm/boot/dts/qcom/qcom-msm8226.dtsi | 164 +-
arch/arm/boot/dts/qcom/qcom-msm8926-htc-memul.dts | 14 +-
.../qcom/qcom-msm8926-microsoft-superman-lte.dts | 1 +
.../boot/dts/qcom/qcom-msm8926-microsoft-tesla.dts | 1 +
.../dts/qcom/qcom-msm8926-motorola-peregrine.dts | 2 +-
.../dts/qcom/qcom-msm8926-samsung-matisselte.dts | 5 +
arch/arm/boot/dts/qcom/qcom-msm8960.dtsi | 101 +-
arch/arm/boot/dts/qcom/qcom-msm8974.dtsi | 21 +-
arch/arm/boot/dts/qcom/qcom-sdx55.dtsi | 2 +-
arch/arm/boot/dts/qcom/qcom-sdx65.dtsi | 2 +-
arch/arm/boot/dts/renesas/Makefile | 1 +
.../arm/boot/dts/renesas/r9a06g032-rzn1d400-db.dts | 124 +-
.../arm/boot/dts/renesas/r9a06g032-rzn1d400-eb.dts | 244 +
arch/arm/boot/dts/renesas/r9a06g032.dtsi | 46 +
arch/arm/boot/dts/rockchip/rk3036-kylin.dts | 18 +
arch/arm/boot/dts/rockchip/rk3036.dtsi | 40 +-
arch/arm/boot/dts/rockchip/rk3066a-marsboard.dts | 37 +
arch/arm/boot/dts/rockchip/rk3128.dtsi | 8 +-
arch/arm/boot/dts/rockchip/rk3188.dtsi | 1 -
arch/arm/boot/dts/rockchip/rk322x.dtsi | 1 -
arch/arm/boot/dts/rockchip/rk3288.dtsi | 5 +-
arch/arm/boot/dts/rockchip/rv1108.dtsi | 1 -
.../arm/boot/dts/rockchip/rv1126-sonoff-ihost.dtsi | 14 +-
arch/arm/boot/dts/samsung/s5pv210-aries.dtsi | 2 +-
arch/arm/boot/dts/st/Makefile | 4 +-
arch/arm/boot/dts/st/spear1310-evb.dts | 8 +-
arch/arm/boot/dts/st/spear1340-evb.dts | 8 +-
arch/arm/boot/dts/st/spear13xx.dtsi | 8 +-
arch/arm/boot/dts/st/spear300-evb.dts | 6 +-
arch/arm/boot/dts/st/spear310-evb.dts | 6 +-
arch/arm/boot/dts/st/spear320-evb.dts | 6 +-
arch/arm/boot/dts/st/spear320-hmi.dts | 6 +-
arch/arm/boot/dts/st/spear3xx.dtsi | 6 +-
arch/arm/boot/dts/st/spear600.dtsi | 8 +-
arch/arm/boot/dts/st/stm32f746.dtsi | 34 +
arch/arm/boot/dts/st/stm32h7-pinctrl.dtsi | 34 +-
arch/arm/boot/dts/st/stm32h743.dtsi | 8 +
arch/arm/boot/dts/st/stm32h743i-disco.dts | 2 +-
arch/arm/boot/dts/st/stm32h743i-eval.dts | 2 +-
arch/arm/boot/dts/st/stm32h747i-disco.dts | 136 +
arch/arm/boot/dts/st/stm32h750i-art-pi.dts | 8 +-
arch/arm/boot/dts/st/stm32mp131.dtsi | 5 +
arch/arm/boot/dts/st/stm32mp133.dtsi | 2 +
arch/arm/boot/dts/st/stm32mp135f-dk.dts | 2 +-
arch/arm/boot/dts/st/stm32mp13xx-dhcor-som.dtsi | 2 +-
arch/arm/boot/dts/st/stm32mp157a-iot-box.dts | 2 +-
arch/arm/boot/dts/st/stm32mp157c-dk2.dts | 2 +-
arch/arm/boot/dts/st/stm32mp157c-ultra-fly-sbc.dts | 1152 +++++
.../boot/dts/st/stm32mp15xx-dhcor-avenger96.dtsi | 2 +-
arch/arm/boot/dts/ti/omap/am335x-evm.dts | 2 +-
arch/arm/boot/dts/ti/omap/omap3-n900.dts | 2 -
arch/arm/boot/dts/ti/omap/omap3.dtsi | 4 +-
arch/arm/boot/dts/ti/omap/omap4-l4.dtsi | 4 +-
arch/arm/boot/dts/ti/omap/omap4-panda-common.dtsi | 39 +-
arch/arm/boot/dts/ti/omap/omap4-panda-es.dts | 32 -
arch/arm/boot/dts/ti/omap/omap5-l4.dtsi | 4 +-
arch/arm/boot/dts/vt8500/Makefile | 3 +-
arch/arm/boot/dts/vt8500/vt8500.dtsi | 9 +-
arch/arm/boot/dts/vt8500/wm8505.dtsi | 9 +-
arch/arm/boot/dts/vt8500/wm8650.dtsi | 9 +-
arch/arm/boot/dts/vt8500/wm8750.dtsi | 9 +-
arch/arm/boot/dts/vt8500/wm8850.dtsi | 9 +-
arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts | 21 +
arch/arm/boot/dts/vt8500/wm8950.dtsi | 11 +
arch/arm/mach-stm32/board-dt.c | 1 +
arch/arm64/boot/dts/airoha/en7581-evb.dts | 30 +
arch/arm64/boot/dts/airoha/en7581.dtsi | 105 +
arch/arm64/boot/dts/allwinner/Makefile | 5 +
arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi | 3 +
.../dts/allwinner/sun50i-a133-liontron-h-a133l.dts | 211 +
.../arm64/boot/dts/allwinner/sun50i-a64-pine64.dts | 12 +
.../dts/allwinner/sun50i-a64-sopine-baseboard.dts | 19 +
.../boot/dts/allwinner/sun50i-h313-tanix-tx1.dts | 5 +
arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi | 6 +-
.../boot/dts/allwinner/sun50i-h6-orangepi-3.dts | 2 +-
.../dts/allwinner/sun50i-h6-orangepi-lite2.dts | 2 +-
arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 4 -
.../dts/allwinner/sun50i-h616-bigtreetech-cb1.dtsi | 5 +
.../dts/allwinner/sun50i-h616-orangepi-zero.dtsi | 4 +
.../dts/allwinner/sun50i-h616-orangepi-zero2.dts | 4 +
.../boot/dts/allwinner/sun50i-h616-x96-mate.dts | 5 +
arch/arm64/boot/dts/allwinner/sun50i-h616.dtsi | 21 +
.../allwinner/sun50i-h618-longan-module-3h.dtsi | 5 +
.../dts/allwinner/sun50i-h618-orangepi-zero2w.dts | 5 +
.../dts/allwinner/sun50i-h618-orangepi-zero3.dts | 4 +
.../allwinner/sun50i-h618-transpeed-8k618-t.dts | 5 +
.../allwinner/sun50i-h618-yuzukihd-chameleon.dts | 222 +
.../allwinner/sun50i-h700-anbernic-rg35xx-2024.dts | 10 +-
arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi | 639 +++
.../boot/dts/allwinner/sun55i-a527-cubie-a5e.dts | 318 ++
.../boot/dts/allwinner/sun55i-h728-x96qpro+.dts | 287 ++
.../boot/dts/allwinner/sun55i-t527-avaota-a1.dts | 327 ++
arch/arm64/boot/dts/amlogic/Makefile | 4 +
arch/arm64/boot/dts/amlogic/amlogic-a4-reset.h | 93 +
arch/arm64/boot/dts/amlogic/amlogic-a4.dtsi | 133 +
arch/arm64/boot/dts/amlogic/amlogic-a5-reset.h | 95 +
arch/arm64/boot/dts/amlogic/amlogic-a5.dtsi | 8 +
arch/arm64/boot/dts/amlogic/amlogic-c3.dtsi | 5 +
.../boot/dts/amlogic/amlogic-s6-s905x5-bl209.dts | 42 +
arch/arm64/boot/dts/amlogic/amlogic-s6.dtsi | 97 +
.../boot/dts/amlogic/amlogic-s7-s805x3-bp201.dts | 41 +
arch/arm64/boot/dts/amlogic/amlogic-s7.dtsi | 99 +
.../boot/dts/amlogic/amlogic-s7d-s905x5m-bm202.dts | 41 +
arch/arm64/boot/dts/amlogic/amlogic-s7d.dtsi | 99 +
arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 1 +
arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 12 +-
arch/arm64/boot/dts/amlogic/meson-g12-common.dtsi | 10 +-
arch/arm64/boot/dts/amlogic/meson-g12a-fbx8am.dts | 4 -
.../boot/dts/amlogic/meson-g12a-radxa-zero.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-g12a-sei510.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-g12a-u200.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-g12a-x96-max.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-g12a.dtsi | 1 +
.../dts/amlogic/meson-g12b-a311d-libretech-cc.dts | 6 -
arch/arm64/boot/dts/amlogic/meson-g12b-a311d.dtsi | 2 +
.../boot/dts/amlogic/meson-g12b-bananapi-cm4.dtsi | 6 -
.../boot/dts/amlogic/meson-g12b-bananapi.dtsi | 6 -
.../boot/dts/amlogic/meson-g12b-khadas-vim3.dtsi | 6 -
.../dts/amlogic/meson-g12b-odroid-go-ultra.dts | 6 -
arch/arm64/boot/dts/amlogic/meson-g12b-odroid.dtsi | 6 -
.../boot/dts/amlogic/meson-g12b-radxa-zero2.dts | 6 -
arch/arm64/boot/dts/amlogic/meson-g12b-s922x.dtsi | 2 +
arch/arm64/boot/dts/amlogic/meson-g12b-w400.dtsi | 6 -
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 10 +-
.../dts/amlogic/meson-gxl-s805y-xiaomi-aquaman.dts | 262 ++
arch/arm64/boot/dts/amlogic/meson-gxl-s805y.dtsi | 10 +
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 22 +-
.../boot/dts/amlogic/meson-gxlx-s905l-p271.dts | 4 +
arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 5 +
arch/arm64/boot/dts/amlogic/meson-sm1-ac2xx.dtsi | 4 -
.../arm64/boot/dts/amlogic/meson-sm1-bananapi.dtsi | 4 -
.../boot/dts/amlogic/meson-sm1-khadas-vim3l.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-sm1-odroid.dtsi | 4 -
.../dts/amlogic/meson-sm1-s905d3-libretech-cc.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-sm1-sei610.dts | 4 -
arch/arm64/boot/dts/amlogic/meson-sm1.dtsi | 1 +
arch/arm64/boot/dts/apple/s5l8960x.dtsi | 13 +
arch/arm64/boot/dts/apple/s800-0-3.dtsi | 13 +
arch/arm64/boot/dts/apple/s8001.dtsi | 13 +
arch/arm64/boot/dts/apple/t6001.dtsi | 1 +
arch/arm64/boot/dts/apple/t6002.dtsi | 1 +
arch/arm64/boot/dts/apple/t600x-die0.dtsi | 57 +
arch/arm64/boot/dts/apple/t7000.dtsi | 13 +
arch/arm64/boot/dts/apple/t7001.dtsi | 16 +
arch/arm64/boot/dts/apple/t8010.dtsi | 13 +
arch/arm64/boot/dts/apple/t8011.dtsi | 16 +
arch/arm64/boot/dts/apple/t8012.dtsi | 13 +
arch/arm64/boot/dts/apple/t8015.dtsi | 32 +
arch/arm64/boot/dts/apple/t8103.dtsi | 58 +
arch/arm64/boot/dts/apple/t8112.dtsi | 57 +
arch/arm64/boot/dts/arm/corstone1000.dtsi | 1 -
arch/arm64/boot/dts/arm/foundation-v8.dtsi | 1 -
arch/arm64/boot/dts/arm/fvp-base-revc.dts | 101 +-
arch/arm64/boot/dts/arm/juno-base.dtsi | 1 -
arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts | 1 -
arch/arm64/boot/dts/blaize/blaize-blzp1600-cb2.dts | 36 +
arch/arm64/boot/dts/blaize/blaize-blzp1600.dtsi | 12 +
arch/arm64/boot/dts/broadcom/Makefile | 1 +
arch/arm64/boot/dts/broadcom/bcm2712-rpi-5-b.dts | 8 +
arch/arm64/boot/dts/broadcom/bcm2712.dtsi | 155 +-
arch/arm64/boot/dts/broadcom/bcm2837-rpi-2-b.dts | 2 +
arch/arm64/boot/dts/exynos/Makefile | 3 +
.../arm64/boot/dts/exynos/exynos7870-a2corelte.dts | 630 +++
arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts | 613 +++
arch/arm64/boot/dts/exynos/exynos7870-on7xelte.dts | 662 +++
arch/arm64/boot/dts/exynos/exynos7870-pinctrl.dtsi | 1021 ++++
arch/arm64/boot/dts/exynos/exynos7870.dtsi | 712 +++
arch/arm64/boot/dts/exynos/exynos850.dtsi | 14 +-
arch/arm64/boot/dts/exynos/exynosautov9.dtsi | 48 +-
arch/arm64/boot/dts/exynos/exynosautov920.dtsi | 536 ++-
.../boot/dts/exynos/google/gs101-pixel-common.dtsi | 4 +-
arch/arm64/boot/dts/exynos/google/gs101.dtsi | 8 +-
arch/arm64/boot/dts/freescale/Makefile | 40 +-
.../{imx8mp-evk-pcie-ep.dtso =3D> imx-pcie0-ep.dtso} | 6 +-
arch/arm64/boot/dts/freescale/imx-pcie1-ep.dtso | 15 +
.../arm64/boot/dts/freescale/imx8-apalis-eval.dtsi | 10 +-
.../boot/dts/freescale/imx8-apalis-ixora-v1.1.dtsi | 10 +-
.../boot/dts/freescale/imx8-apalis-ixora-v1.2.dtsi | 10 +-
.../arm64/boot/dts/freescale/imx8-apalis-v1.1.dtsi | 70 +-
arch/arm64/boot/dts/freescale/imx8dxl-evk.dts | 12 +-
arch/arm64/boot/dts/freescale/imx8dxl-ss-hsio.dtsi | 25 +-
.../dts/freescale/imx8dxp-tqma8xdps-mb-smarc-2.dts | 16 +
.../boot/dts/freescale/imx8dxp-tqma8xdps.dtsi | 24 +
.../arm64/boot/dts/freescale/imx8mm-beacon-kit.dts | 1 +
.../boot/dts/freescale/imx8mm-beacon-som.dtsi | 18 +-
arch/arm64/boot/dts/freescale/imx8mm-evk.dtsi | 13 +
.../freescale/imx8mm-phyboard-polis-peb-av-10.dtso | 2 +
arch/arm64/boot/dts/freescale/imx8mm-var-som.dtsi | 2 +-
arch/arm64/boot/dts/freescale/imx8mm-verdin.dtsi | 6 +-
arch/arm64/boot/dts/freescale/imx8mm.dtsi | 4 -
.../arm64/boot/dts/freescale/imx8mn-beacon-kit.dts | 1 +
.../boot/dts/freescale/imx8mn-beacon-som.dtsi | 18 +-
.../dts/freescale/imx8mn-bsh-smm-s2-common.dtsi | 2 +-
arch/arm64/boot/dts/freescale/imx8mn-var-som.dtsi | 2 +-
arch/arm64/boot/dts/freescale/imx8mn.dtsi | 4 -
.../boot/dts/freescale/imx8mp-beacon-som.dtsi | 12 +
.../arm64/boot/dts/freescale/imx8mp-dhcom-som.dtsi | 2 +-
arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 22 +-
.../imx8mp-libra-rdk-fpsc-lvds-etml1010g3dra.dtso | 44 +
.../boot/dts/freescale/imx8mp-libra-rdk-fpsc.dts | 290 ++
.../imx8mp-nitrogen-enc-carrier-board.dts | 452 ++
.../boot/dts/freescale/imx8mp-nitrogen-som.dtsi | 409 ++
.../boot/dts/freescale/imx8mp-phycore-fpsc.dtsi | 796 ++++
.../dts/freescale/imx8mp-toradex-smarc-dev.dts | 304 ++
.../boot/dts/freescale/imx8mp-toradex-smarc.dtsi | 1314 ++++++
.../imx8mp-tqma8mpql-mba8mp-ras314-imx219.dtso | 107 +
arch/arm64/boot/dts/freescale/imx8mp-verdin.dtsi | 6 +-
arch/arm64/boot/dts/freescale/imx8mp.dtsi | 30 +-
arch/arm64/boot/dts/freescale/imx8mq-evk.dts | 20 +
arch/arm64/boot/dts/freescale/imx8mq.dtsi | 40 +-
arch/arm64/boot/dts/freescale/imx8qm-apalis.dtsi | 10 +-
arch/arm64/boot/dts/freescale/imx8qm-ss-hsio.dtsi | 6 +-
.../boot/dts/freescale/imx8qxp-mek-pcie-ep.dtso | 22 -
arch/arm64/boot/dts/freescale/imx8qxp-mek.dts | 45 +-
arch/arm64/boot/dts/freescale/imx8qxp-ss-hsio.dtsi | 6 +
.../dts/freescale/imx8qxp-tqma8xqps-mb-smarc-2.dts | 16 +
.../boot/dts/freescale/imx8qxp-tqma8xqps.dtsi | 14 +
arch/arm64/boot/dts/freescale/imx8x-colibri.dtsi | 29 +-
.../boot/dts/freescale/imx93-phyboard-nash.dts | 317 ++
.../boot/dts/freescale/imx93-phyboard-segin.dts | 243 +-
.../boot/dts/freescale/imx93-phycore-som.dtsi | 165 +-
.../dts/freescale/imx93-tqma9352-mba91xxca.dts | 749 +++
.../dts/freescale/imx93-tqma9352-mba93xxca.dts | 8 +-
.../dts/freescale/imx93-tqma9352-mba93xxla.dts | 8 +-
arch/arm64/boot/dts/freescale/imx94-clock.h | 193 +
arch/arm64/boot/dts/freescale/imx94-pinfunc.h | 1570 +++++++
arch/arm64/boot/dts/freescale/imx94-power.h | 41 +
arch/arm64/boot/dts/freescale/imx94.dtsi | 1148 +++++
arch/arm64/boot/dts/freescale/imx943-evk.dts | 195 +
arch/arm64/boot/dts/freescale/imx943.dtsi | 148 +
arch/arm64/boot/dts/freescale/imx95-15x15-evk.dts | 23 +
.../boot/dts/freescale/imx95-19x19-evk-sof.dts | 84 +
arch/arm64/boot/dts/freescale/imx95-19x19-evk.dts | 30 +
.../dts/freescale/imx95-tqma9596sa-mb-smarc-2.dts | 324 ++
.../arm64/boot/dts/freescale/imx95-tqma9596sa.dtsi | 698 +++
arch/arm64/boot/dts/freescale/imx95.dtsi | 30 +
arch/arm64/boot/dts/freescale/s32gxxxa-rdb.dtsi | 5 +
.../boot/dts/freescale/tqma8xxs-mb-smarc-2.dtsi | 194 +
arch/arm64/boot/dts/freescale/tqma8xxs.dtsi | 768 +++
arch/arm64/boot/dts/intel/Makefile | 1 +
arch/arm64/boot/dts/intel/socfpga_agilex.dtsi | 6 +
arch/arm64/boot/dts/intel/socfpga_agilex5.dtsi | 4 +-
.../arm64/boot/dts/intel/socfpga_agilex5_socdk.dts | 51 +
.../boot/dts/intel/socfpga_agilex5_socdk_nand.dts | 89 +
arch/arm64/boot/dts/marvell/armada-7040-db.dts | 1 -
arch/arm64/boot/dts/marvell/armada-8040-db.dts | 2 -
arch/arm64/boot/dts/marvell/cn9130-db.dtsi | 1 -
arch/arm64/boot/dts/mediatek/Makefile | 4 +
arch/arm64/boot/dts/mediatek/mt6357.dtsi | 10 -
arch/arm64/boot/dts/mediatek/mt6359.dtsi | 4 +-
arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h | 1356 ++++++
.../boot/dts/mediatek/mt7622-bananapi-bpi-r64.dts | 2 +-
.../dts/mediatek/mt7988a-bananapi-bpi-r4-2g5.dts | 11 +
.../boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dts | 400 +-
.../boot/dts/mediatek/mt7988a-bananapi-bpi-r4.dtsi | 450 ++
arch/arm64/boot/dts/mediatek/mt7988a.dtsi | 115 +
arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi | 11 +-
arch/arm64/boot/dts/mediatek/mt8183.dtsi | 4 +
.../dts/mediatek/mt8186-corsola-ponyta-sku0.dts | 18 +
.../dts/mediatek/mt8186-corsola-ponyta-sku1.dts | 22 +
.../boot/dts/mediatek/mt8186-corsola-ponyta.dtsi | 49 +
.../boot/dts/mediatek/mt8186-corsola-starmie.dtsi | 45 -
arch/arm64/boot/dts/mediatek/mt8186-corsola.dtsi | 1 -
arch/arm64/boot/dts/mediatek/mt8188-evb.dts | 6 +-
arch/arm64/boot/dts/mediatek/mt8188.dtsi | 345 +-
arch/arm64/boot/dts/mediatek/mt8195.dtsi | 51 +-
arch/arm64/boot/dts/mediatek/mt8196-pinfunc.h | 1574 +++++++
arch/arm64/boot/dts/mediatek/mt8365-evk.dts | 40 +
.../boot/dts/mediatek/mt8390-genio-common.dtsi | 169 +-
.../boot/dts/mediatek/mt8395-genio-1200-evk.dts | 127 +-
.../boot/dts/mediatek/mt8395-radxa-nio-12l.dts | 59 +-
.../boot/dts/microchip/sparx5_pcb_common.dtsi | 2 +
.../boot/dts/nuvoton/nuvoton-common-npcm8xx.dtsi | 65 +
arch/arm64/boot/dts/nvidia/tegra186-p2771-0000.dts | 115 +
arch/arm64/boot/dts/nvidia/tegra186-p3310.dtsi | 6 +
.../dts/nvidia/tegra186-p3509-0000+p3636-0001.dts | 8 +
arch/arm64/boot/dts/nvidia/tegra186.dtsi | 162 +-
arch/arm64/boot/dts/nvidia/tegra194-p2888.dtsi | 2 +
arch/arm64/boot/dts/nvidia/tegra194-p2972-0000.dts | 6 +
.../arm64/boot/dts/nvidia/tegra194-p3509-0000.dtsi | 6 +
arch/arm64/boot/dts/nvidia/tegra194-p3668.dtsi | 2 +
arch/arm64/boot/dts/nvidia/tegra194.dtsi | 30 +-
arch/arm64/boot/dts/nvidia/tegra210-p2180.dtsi | 2 +
arch/arm64/boot/dts/nvidia/tegra210-p2371-2180.dts | 6 +
arch/arm64/boot/dts/nvidia/tegra210-p2597.dtsi | 75 +
arch/arm64/boot/dts/nvidia/tegra210-p2894.dtsi | 2 +-
arch/arm64/boot/dts/nvidia/tegra210-p3450-0000.dts | 6 +
arch/arm64/boot/dts/nvidia/tegra210.dtsi | 9 +
arch/arm64/boot/dts/nvidia/tegra234.dtsi | 22 +
arch/arm64/boot/dts/qcom/Makefile | 61 +-
arch/arm64/boot/dts/qcom/apq8016-sbc.dts | 21 +
.../boot/dts/qcom/apq8016-schneider-hmibsc.dts | 41 +-
arch/arm64/boot/dts/qcom/apq8039-t2.dts | 28 +-
arch/arm64/boot/dts/qcom/apq8096-db820c.dts | 11 +-
arch/arm64/boot/dts/qcom/ipq5018-rdp432-c2.dts | 40 +
arch/arm64/boot/dts/qcom/ipq5018.dtsi | 246 +-
arch/arm64/boot/dts/qcom/ipq5332-rdp441.dts | 76 +
arch/arm64/boot/dts/qcom/ipq5332.dtsi | 387 +-
arch/arm64/boot/dts/qcom/ipq5424-rdp466.dts | 91 +-
arch/arm64/boot/dts/qcom/ipq5424.dtsi | 733 ++-
arch/arm64/boot/dts/qcom/ipq6018-cp01-c1.dts | 2 +-
arch/arm64/boot/dts/qcom/ipq6018-mp5496.dtsi | 44 +
arch/arm64/boot/dts/qcom/ipq6018.dtsi | 37 +-
arch/arm64/boot/dts/qcom/ipq9574-rdp-common.dtsi | 55 +-
arch/arm64/boot/dts/qcom/ipq9574-rdp433.dts | 12 -
arch/arm64/boot/dts/qcom/ipq9574.dtsi | 146 +-
arch/arm64/boot/dts/qcom/msm8916-acer-a1-724.dts | 3 +
.../boot/dts/qcom/msm8916-alcatel-idol347.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-asus-z00l.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-gplus-fl8005a.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-huawei-g7.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-lg-c50.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-lg-m216.dts | 3 +
.../boot/dts/qcom/msm8916-longcheer-l8150.dts | 3 +
.../boot/dts/qcom/msm8916-longcheer-l8910.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-modem-qdsp6.dtsi | 8 +-
.../boot/dts/qcom/msm8916-motorola-common.dtsi | 11 +-
arch/arm64/boot/dts/qcom/msm8916-mtp.dts | 3 +
.../dts/qcom/msm8916-samsung-a2015-common.dtsi | 3 +
.../dts/qcom/msm8916-samsung-fortuna-common.dtsi | 3 +
.../boot/dts/qcom/msm8916-samsung-gt5-common.dtsi | 3 +
.../boot/dts/qcom/msm8916-samsung-j5-common.dtsi | 3 +
.../boot/dts/qcom/msm8916-samsung-serranove.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916-ufi.dtsi | 3 +
.../boot/dts/qcom/msm8916-wingtech-wt865x8.dtsi | 3 +
.../boot/dts/qcom/msm8916-wingtech-wt88047.dts | 3 +
arch/arm64/boot/dts/qcom/msm8916.dtsi | 64 +-
arch/arm64/boot/dts/qcom/msm8917-xiaomi-riva.dts | 27 +-
arch/arm64/boot/dts/qcom/msm8917.dtsi | 11 +-
arch/arm64/boot/dts/qcom/msm8939-huawei-kiwi.dts | 3 +
.../boot/dts/qcom/msm8939-longcheer-l9100.dts | 3 +
arch/arm64/boot/dts/qcom/msm8939-samsung-a7.dts | 3 +
.../boot/dts/qcom/msm8939-wingtech-wt82918.dtsi | 3 +
arch/arm64/boot/dts/qcom/msm8939.dtsi | 75 +-
arch/arm64/boot/dts/qcom/msm8953.dtsi | 158 +-
arch/arm64/boot/dts/qcom/msm8976.dtsi | 17 +-
arch/arm64/boot/dts/qcom/msm8992-lg-h815.dts | 6 +
.../boot/dts/qcom/msm8996-oneplus-common.dtsi | 11 +-
arch/arm64/boot/dts/qcom/msm8996-oneplus3.dts | 2 +
arch/arm64/boot/dts/qcom/msm8996-oneplus3t.dts | 2 +
arch/arm64/boot/dts/qcom/msm8996-xiaomi-gemini.dts | 11 +-
arch/arm64/boot/dts/qcom/msm8996.dtsi | 21 +-
.../boot/dts/qcom/msm8996pro-xiaomi-natrium.dts | 6 +-
.../boot/dts/qcom/msm8996pro-xiaomi-scorpio.dts | 6 +-
arch/arm64/boot/dts/qcom/msm8998-fxtec-pro1.dts | 1 +
.../boot/dts/qcom/msm8998-lenovo-miix-630.dts | 8 +-
arch/arm64/boot/dts/qcom/msm8998-mtp.dts | 1 +
.../boot/dts/qcom/msm8998-sony-xperia-yoshino.dtsi | 1 +
arch/arm64/boot/dts/qcom/msm8998.dtsi | 23 +-
arch/arm64/boot/dts/qcom/pm8937.dtsi | 8 +
arch/arm64/boot/dts/qcom/qcm2290.dtsi | 75 +-
arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts | 250 +-
arch/arm64/boot/dts/qcom/qcm6490-idp.dts | 28 +-
arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts | 2 +-
arch/arm64/boot/dts/qcom/qcs615.dtsi | 72 +-
.../qcom/qcs6490-rb3gen2-industrial-mezzanine.dtso | 21 +
.../dts/qcom/qcs6490-rb3gen2-vision-mezzanine.dtso | 89 +
arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 287 +-
arch/arm64/boot/dts/qcom/qcs8300-pmics.dtsi | 51 +
arch/arm64/boot/dts/qcom/qcs8300-ride.dts | 37 +-
arch/arm64/boot/dts/qcom/qcs8300.dtsi | 4919 +++++++++++++=
+------
arch/arm64/boot/dts/qcom/qdu1000.dtsi | 9 +-
arch/arm64/boot/dts/qcom/qrb2210-rb1.dts | 85 +-
arch/arm64/boot/dts/qcom/qrb4210-rb2.dts | 4 +-
.../dts/qcom/qrb5165-rb5-vision-mezzanine.dtso | 11 -
arch/arm64/boot/dts/qcom/qrb5165-rb5.dts | 31 +-
arch/arm64/boot/dts/qcom/sa8155p-adp.dts | 5 +-
arch/arm64/boot/dts/qcom/sa8540p-ride.dts | 4 -
arch/arm64/boot/dts/qcom/sa8775p-ride.dtsi | 138 +-
arch/arm64/boot/dts/qcom/sa8775p.dtsi | 1179 ++++-
arch/arm64/boot/dts/qcom/sar2130p.dtsi | 455 ++
arch/arm64/boot/dts/qcom/sc7180-acer-aspire1.dts | 8 +-
arch/arm64/boot/dts/qcom/sc7180-el2.dtso | 22 +
.../boot/dts/qcom/sc7180-trogdor-homestar.dtsi | 2 +-
.../boot/dts/qcom/sc7180-trogdor-kingoftown.dts | 2 +-
arch/arm64/boot/dts/qcom/sc7180-trogdor-lazor.dtsi | 2 +-
.../boot/dts/qcom/sc7180-trogdor-pazquel360.dtsi | 2 +-
.../arm64/boot/dts/qcom/sc7180-trogdor-pompom.dtsi | 2 +-
.../boot/dts/qcom/sc7180-trogdor-wormdingler.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sc7180.dtsi | 15 +-
.../qcom/sc7280-herobrine-audio-rt5682-3mic.dtsi | 1 +
.../dts/qcom/sc7280-herobrine-audio-wcd9385.dtsi | 3 +
arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 2 +
arch/arm64/boot/dts/qcom/sc7280.dtsi | 285 +-
arch/arm64/boot/dts/qcom/sc8180x.dtsi | 13 +-
arch/arm64/boot/dts/qcom/sc8280xp-crd.dts | 30 +-
arch/arm64/boot/dts/qcom/sc8280xp-el2.dtso | 44 +
.../dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts | 22 +-
.../boot/dts/qcom/sc8280xp-microsoft-arcata.dts | 2 +-
.../boot/dts/qcom/sc8280xp-microsoft-blackrock.dts | 2 +-
arch/arm64/boot/dts/qcom/sc8280xp-pmics.dtsi | 58 +-
arch/arm64/boot/dts/qcom/sc8280xp.dtsi | 745 +--
.../arm64/boot/dts/qcom/sda660-inforce-ifc6560.dts | 4 +-
.../boot/dts/qcom/sdm630-sony-xperia-nile.dtsi | 2 +-
arch/arm64/boot/dts/qcom/sdm630.dtsi | 20 +-
arch/arm64/boot/dts/qcom/sdm632-fairphone-fp3.dts | 46 +-
.../arm64/boot/dts/qcom/sdm660-xiaomi-lavender.dts | 3 +
arch/arm64/boot/dts/qcom/sdm660.dtsi | 12 +-
arch/arm64/boot/dts/qcom/sdm670.dtsi | 215 +-
arch/arm64/boot/dts/qcom/sdm845-cheza.dtsi | 4 -
.../qcom/sdm845-db845c-navigation-mezzanine.dtso | 11 -
arch/arm64/boot/dts/qcom/sdm845-db845c.dts | 29 +-
arch/arm64/boot/dts/qcom/sdm845-mtp.dts | 9 +-
.../arm64/boot/dts/qcom/sdm845-oneplus-common.dtsi | 16 +-
.../boot/dts/qcom/sdm845-samsung-starqltechn.dts | 600 ++-
arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts | 4 -
.../boot/dts/qcom/sdm845-sony-xperia-tama.dtsi | 4 -
.../dts/qcom/sdm845-xiaomi-beryllium-common.dtsi | 43 +-
.../boot/dts/qcom/sdm845-xiaomi-beryllium-ebbg.dts | 23 +
.../dts/qcom/sdm845-xiaomi-beryllium-tianma.dts | 23 +
arch/arm64/boot/dts/qcom/sdm845-xiaomi-polaris.dts | 10 +-
arch/arm64/boot/dts/qcom/sdm845.dtsi | 27 +-
.../boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 17 +-
arch/arm64/boot/dts/qcom/sdm850-samsung-w737.dts | 11 +-
arch/arm64/boot/dts/qcom/sdx75-idp.dts | 18 +
arch/arm64/boot/dts/qcom/sdx75.dtsi | 49 +-
arch/arm64/boot/dts/qcom/sm4450.dtsi | 68 +
arch/arm64/boot/dts/qcom/sm6115-fxtec-pro1x.dts | 2 +-
arch/arm64/boot/dts/qcom/sm6115.dtsi | 10 +-
arch/arm64/boot/dts/qcom/sm6115p-lenovo-j606f.dts | 2 +-
arch/arm64/boot/dts/qcom/sm6125-xiaomi-ginkgo.dts | 295 ++
arch/arm64/boot/dts/qcom/sm6125.dtsi | 10 +-
.../dts/qcom/sm6350-sony-xperia-lena-pdx213.dts | 7 +
arch/arm64/boot/dts/qcom/sm6350.dtsi | 212 +-
.../boot/dts/qcom/sm7325-nothing-spacewar.dts | 210 +-
arch/arm64/boot/dts/qcom/sm8150-hdk.dts | 5 +-
.../boot/dts/qcom/sm8150-microsoft-surface-duo.dts | 8 +-
arch/arm64/boot/dts/qcom/sm8150-mtp.dts | 8 +-
arch/arm64/boot/dts/qcom/sm8150.dtsi | 21 +-
.../boot/dts/qcom/sm8250-xiaomi-elish-common.dtsi | 5 +-
arch/arm64/boot/dts/qcom/sm8250.dtsi | 25 +-
arch/arm64/boot/dts/qcom/sm8350.dtsi | 34 +-
arch/arm64/boot/dts/qcom/sm8450.dtsi | 88 +-
arch/arm64/boot/dts/qcom/sm8550-hdk.dts | 4 +
arch/arm64/boot/dts/qcom/sm8550-mtp.dts | 4 +
arch/arm64/boot/dts/qcom/sm8550-qrd.dts | 4 +
arch/arm64/boot/dts/qcom/sm8550-samsung-q5q.dts | 12 +-
arch/arm64/boot/dts/qcom/sm8550.dtsi | 704 ++-
arch/arm64/boot/dts/qcom/sm8650.dtsi | 2885 ++++++++----
arch/arm64/boot/dts/qcom/sm8750-mtp.dts | 22 +
arch/arm64/boot/dts/qcom/sm8750-qrd.dts | 21 +
arch/arm64/boot/dts/qcom/sm8750.dtsi | 728 ++-
arch/arm64/boot/dts/qcom/x1-crd.dtsi | 1749 +++++++
arch/arm64/boot/dts/qcom/x1-el2.dtso | 52 +
arch/arm64/boot/dts/qcom/x1e001de-devkit.dts | 148 +-
.../qcom/x1e78100-lenovo-thinkpad-t14s-oled.dts | 12 +
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dts | 1126 +----
.../dts/qcom/x1e78100-lenovo-thinkpad-t14s.dtsi | 1576 +++++++
.../boot/dts/qcom/x1e80100-asus-vivobook-s15.dts | 314 +-
arch/arm64/boot/dts/qcom/x1e80100-crd.dts | 1270 +----
.../boot/dts/qcom/x1e80100-dell-xps13-9345.dts | 22 +-
.../dts/qcom/x1e80100-hp-elitebook-ultra-g1q.dts | 30 +
.../boot/dts/qcom/x1e80100-hp-omnibook-x14.dts | 173 +-
.../boot/dts/qcom/x1e80100-lenovo-yoga-slim7x.dts | 492 +-
.../boot/dts/qcom/x1e80100-microsoft-romulus.dtsi | 23 +-
arch/arm64/boot/dts/qcom/x1e80100-pmics.dtsi | 5 +-
arch/arm64/boot/dts/qcom/x1e80100-qcp.dts | 154 +-
arch/arm64/boot/dts/qcom/x1e80100.dtsi | 1084 ++---
arch/arm64/boot/dts/qcom/x1p42100-crd.dts | 17 +
arch/arm64/boot/dts/qcom/x1p42100.dtsi | 81 +
arch/arm64/boot/dts/renesas/Makefile | 7 +
.../arm64/boot/dts/renesas/beacon-renesom-som.dtsi | 2 +-
arch/arm64/boot/dts/renesas/r8a779a0.dtsi | 60 +-
arch/arm64/boot/dts/renesas/r8a779f4.dtsi | 17 +
arch/arm64/boot/dts/renesas/r8a779g0.dtsi | 30 +-
.../dts/renesas/r8a779g3-sparrow-hawk-fan-pwm.dtso | 43 +
.../boot/dts/renesas/r8a779g3-sparrow-hawk.dts | 772 +++
arch/arm64/boot/dts/renesas/r8a779h0.dtsi | 21 +-
arch/arm64/boot/dts/renesas/r9a07g044.dtsi | 115 +
arch/arm64/boot/dts/renesas/r9a07g044l2-smarc.dts | 7 +
arch/arm64/boot/dts/renesas/r9a07g054.dtsi | 115 +
arch/arm64/boot/dts/renesas/r9a07g054l2-smarc.dts | 7 +
arch/arm64/boot/dts/renesas/r9a09g047.dtsi | 259 ++
arch/arm64/boot/dts/renesas/r9a09g047e57-smarc.dts | 102 +
arch/arm64/boot/dts/renesas/r9a09g056.dtsi | 282 ++
.../boot/dts/renesas/r9a09g056n48-rzv2n-evk.dts | 114 +
arch/arm64/boot/dts/renesas/r9a09g057.dtsi | 21 +
arch/arm64/boot/dts/renesas/renesas-smarc2.dtsi | 47 +
.../boot/dts/renesas/rzg2l-smarc-pinfunction.dtsi | 5 +
arch/arm64/boot/dts/renesas/rzg2l-smarc-som.dtsi | 2 +-
arch/arm64/boot/dts/renesas/rzg2l-smarc.dtsi | 8 +
arch/arm64/boot/dts/renesas/rzg2lc-smarc-som.dtsi | 2 +-
arch/arm64/boot/dts/renesas/rzg3e-smarc-som.dtsi | 215 +
.../dts/renesas/white-hawk-ard-audio-da7212.dtso | 2 +-
arch/arm64/boot/dts/renesas/white-hawk-single.dtsi | 8 +-
arch/arm64/boot/dts/rockchip/Makefile | 15 +
.../dts/rockchip/px30-cobra-ltk050h3146w-a2.dts | 39 +
.../boot/dts/rockchip/px30-cobra-ltk050h3146w.dts | 39 +
.../boot/dts/rockchip/px30-cobra-ltk050h3148w.dts | 39 +
.../boot/dts/rockchip/px30-cobra-ltk500hd1829.dts | 73 +
arch/arm64/boot/dts/rockchip/px30-cobra.dtsi | 566 +++
.../dts/rockchip/px30-pp1516-ltk050h3146w-a2.dts | 39 +
.../boot/dts/rockchip/px30-pp1516-ltk050h3148w.dts | 39 +
arch/arm64/boot/dts/rockchip/px30-pp1516.dtsi | 602 +++
arch/arm64/boot/dts/rockchip/px30-ringneck.dtsi | 22 +-
arch/arm64/boot/dts/rockchip/px30.dtsi | 6 +
arch/arm64/boot/dts/rockchip/rk3328-rock64.dts | 1 +
arch/arm64/boot/dts/rockchip/rk3399-evb-ind.dts | 494 ++
.../boot/dts/rockchip/rk3399-gru-scarlet-dumo.dts | 2 +-
.../arm64/boot/dts/rockchip/rk3399-puma-haikou.dts | 8 -
arch/arm64/boot/dts/rockchip/rk3399-puma.dtsi | 48 +-
arch/arm64/boot/dts/rockchip/rk3399-roc-pc.dtsi | 1 +
arch/arm64/boot/dts/rockchip/rk3399-rockpro64.dtsi | 1 +
arch/arm64/boot/dts/rockchip/rk3528-radxa-e20c.dts | 149 +
arch/arm64/boot/dts/rockchip/rk3528.dtsi | 519 ++-
arch/arm64/boot/dts/rockchip/rk3562-evb2-v10.dts | 456 ++
arch/arm64/boot/dts/rockchip/rk3562-pinctrl.dtsi | 2352 ++++++++++
arch/arm64/boot/dts/rockchip/rk3562.dtsi | 1185 +++++
arch/arm64/boot/dts/rockchip/rk3566-box-demo.dts | 6 +-
arch/arm64/boot/dts/rockchip/rk3566-pinetab2.dtsi | 1 +
arch/arm64/boot/dts/rockchip/rk3566-quartz64-b.dts | 1 +
arch/arm64/boot/dts/rockchip/rk3566-rock-3c.dts | 1 +
arch/arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dts | 19 +-
.../arm64/boot/dts/rockchip/rk3568-nanopi-r5s.dtsi | 5 +-
arch/arm64/boot/dts/rockchip/rk3568-qnap-ts433.dts | 15 +-
arch/arm64/boot/dts/rockchip/rk3568.dtsi | 8 +-
.../boot/dts/rockchip/rk3576-armsom-sige5.dts | 87 +
arch/arm64/boot/dts/rockchip/rk3576-evb1-v10.dts | 17 +-
arch/arm64/boot/dts/rockchip/rk3576-roc-pc.dts | 47 +
arch/arm64/boot/dts/rockchip/rk3576.dtsi | 502 +-
arch/arm64/boot/dts/rockchip/rk3588-armsom-w3.dts | 101 +
arch/arm64/boot/dts/rockchip/rk3588-base.dtsi | 150 +-
.../boot/dts/rockchip/rk3588-coolpi-cm5-evb.dts | 62 +-
.../dts/rockchip/rk3588-coolpi-cm5-genbook.dts | 47 +
arch/arm64/boot/dts/rockchip/rk3588-evb2-v10.dts | 931 ++++
arch/arm64/boot/dts/rockchip/rk3588-extra.dtsi | 28 +
arch/arm64/boot/dts/rockchip/rk3588-jaguar.dts | 8 +
arch/arm64/boot/dts/rockchip/rk3588-nanopc-t6.dtsi | 75 +-
.../dts/rockchip/rk3588-orangepi-5-compact.dtsi | 36 +
.../boot/dts/rockchip/rk3588-rock-5b-plus.dts | 113 +
arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dts | 952 +---
arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtsi | 945 ++++
.../rockchip/rk3588-tiger-haikou-video-demo.dtso | 153 +
.../boot/dts/rockchip/rk3588-tiger-haikou.dts | 8 +
arch/arm64/boot/dts/rockchip/rk3588s-evb1-v10.dts | 55 +
.../boot/dts/rockchip/rk3588s-indiedroid-nova.dts | 8 +
.../boot/dts/rockchip/rk3588s-khadas-edge2.dts | 77 +-
arch/arm64/boot/dts/st/stm32mp25-pinctrl.dtsi | 51 +
arch/arm64/boot/dts/st/stm32mp251.dtsi | 231 +
arch/arm64/boot/dts/st/stm32mp257f-ev1.dts | 40 +
arch/arm64/boot/dts/tesla/fsd-evb.dts | 20 +
arch/arm64/boot/dts/tesla/fsd-pinctrl.dtsi | 112 +
arch/arm64/boot/dts/tesla/fsd.dtsi | 50 +
arch/arm64/boot/dts/ti/Makefile | 28 +
arch/arm64/boot/dts/ti/k3-am62-lp-sk.dts | 12 +
arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 96 +-
arch/arm64/boot/dts/ti/k3-am62-phycore-som.dtsi | 36 +-
arch/arm64/boot/dts/ti/k3-am62-pocketbeagle2.dts | 521 +++
arch/arm64/boot/dts/ti/k3-am62-verdin-dahlia.dtsi | 2 +-
arch/arm64/boot/dts/ti/k3-am62-verdin-yavia.dtsi | 2 +-
arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi | 25 +
arch/arm64/boot/dts/ti/k3-am62.dtsi | 8 +-
.../dts/ti/k3-am625-beagleplay-csi2-ov5640.dtso | 31 +
.../ti/k3-am625-beagleplay-csi2-tevi-ov5640.dtso | 31 +
arch/arm64/boot/dts/ti/k3-am625-beagleplay.dts | 2 +-
arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 14 +-
arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi | 25 +
arch/arm64/boot/dts/ti/k3-am62a-phycore-som.dtsi | 107 +-
arch/arm64/boot/dts/ti/k3-am62a-thermal.dtsi | 57 +-
arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi | 25 +
arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 149 +-
arch/arm64/boot/dts/ti/k3-am62a7.dtsi | 4 +
.../boot/dts/ti/k3-am62p-j722s-common-main.dtsi | 11 +-
arch/arm64/boot/dts/ti/k3-am62p-verdin-dahlia.dtsi | 228 +
arch/arm64/boot/dts/ti/k3-am62p-verdin-dev.dtsi | 245 +
arch/arm64/boot/dts/ti/k3-am62p-verdin-ivy.dtsi | 629 +++
arch/arm64/boot/dts/ti/k3-am62p-verdin-mallow.dtsi | 213 +
.../arm64/boot/dts/ti/k3-am62p-verdin-nonwifi.dtsi | 15 +
arch/arm64/boot/dts/ti/k3-am62p-verdin-wifi.dtsi | 31 +
arch/arm64/boot/dts/ti/k3-am62p-verdin-yavia.dtsi | 219 +
arch/arm64/boot/dts/ti/k3-am62p-verdin.dtsi | 1404 ++++++
arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 128 +-
.../dts/ti/k3-am62p5-verdin-nonwifi-dahlia.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-nonwifi-dev.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-nonwifi-ivy.dts | 22 +
.../dts/ti/k3-am62p5-verdin-nonwifi-mallow.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-nonwifi-yavia.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-wifi-dahlia.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-wifi-dev.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-wifi-ivy.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-wifi-mallow.dts | 22 +
.../boot/dts/ti/k3-am62p5-verdin-wifi-yavia.dts | 22 +
.../dts/ti/k3-am62x-phyboard-lyra-gpio-fan.dtso | 14 +-
arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 76 +-
.../arm64/boot/dts/ti/k3-am62x-sk-csi2-imx219.dtso | 34 +-
.../arm64/boot/dts/ti/k3-am62x-sk-csi2-ov5640.dtso | 34 +-
.../boot/dts/ti/k3-am62x-sk-csi2-tevi-ov5640.dtso | 34 +-
arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 13 +-
arch/arm64/boot/dts/ti/k3-am642-evm-pcie0-ep.dtso | 2 +-
arch/arm64/boot/dts/ti/k3-am642-evm.dts | 21 +-
arch/arm64/boot/dts/ti/k3-am642-sk.dts | 20 +
arch/arm64/boot/dts/ti/k3-am65-main.dtsi | 4 +-
.../k3-am654-base-board-rocktech-rk101-panel.dtso | 12 +
arch/arm64/boot/dts/ti/k3-am654-base-board.dts | 1 -
.../dts/ti/k3-am6548-iot2050-advanced-common.dtsi | 1 -
arch/arm64/boot/dts/ti/k3-am67a-beagley-ai.dts | 1 +
arch/arm64/boot/dts/ti/k3-am68-phyboard-izar.dts | 575 +++
arch/arm64/boot/dts/ti/k3-am68-phycore-som.dtsi | 601 +++
.../dts/ti/k3-am68-sk-base-board-pcie1-ep.dtso | 2 +-
arch/arm64/boot/dts/ti/k3-am68-sk-base-board.dts | 13 +-
arch/arm64/boot/dts/ti/k3-am69-sk.dts | 1 -
arch/arm64/boot/dts/ti/k3-j7200-evm-pcie1-ep.dtso | 2 +-
arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 13 +-
.../k3-j721e-common-proc-board-infotainment.dtso | 57 +-
.../boot/dts/ti/k3-j721e-common-proc-board.dts | 7 +-
arch/arm64/boot/dts/ti/k3-j721e-evm-pcie0-ep.dtso | 2 +-
arch/arm64/boot/dts/ti/k3-j721e-evm-pcie1-ep.dtso | 2 +-
arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 40 +-
.../boot/dts/ti/k3-j721e-sk-csi2-dual-imx219.dtso | 35 +-
arch/arm64/boot/dts/ti/k3-j721e-sk.dts | 31 +
arch/arm64/boot/dts/ti/k3-j721e.dtsi | 2 +
arch/arm64/boot/dts/ti/k3-j721s2-evm-pcie1-ep.dtso | 2 +-
arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi | 27 +-
.../ti/k3-j722s-evm-csi2-quad-rpi-cam-imx219.dtso | 329 ++
.../dts/ti/k3-j722s-evm-csi2-quad-tevi-ov5640.dtso | 323 ++
arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 46 +-
arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 14 +-
.../dts/ti/k3-j784s4-evm-usxgmii-exp1-exp2.dtso | 1 -
.../boot/dts/ti/k3-j784s4-j742s2-evm-common.dtsi | 6 +
.../dts/ti/k3-j784s4-j742s2-evm-usb0-type-a.dtso | 29 +
.../boot/dts/ti/k3-j784s4-j742s2-main-common.dtsi | 19 +-
arch/arm64/configs/defconfig | 2 +
arch/riscv/boot/dts/renesas/r9a07g043f.dtsi | 3 +-
arch/riscv/boot/dts/spacemit/k1-bananapi-f3.dts | 11 +
arch/riscv/boot/dts/spacemit/k1-pinctrl.dtsi | 3 +
arch/riscv/boot/dts/spacemit/k1.dtsi | 132 +-
arch/riscv/boot/dts/starfive/jh7110-common.dtsi | 52 +-
.../dts/starfive/jh7110-deepcomputing-fml13v01.dts | 19 +
arch/riscv/boot/dts/thead/th1520.dtsi | 21 +
include/dt-bindings/clock/renesas,r9a09g056-cpg.h | 24 +
include/dt-bindings/clock/rockchip,rk3528-cru.h | 6 +
include/dt-bindings/clock/rockchip,rk3576-cru.h | 10 +
include/dt-bindings/clock/spacemit,k1-syscon.h | 247 +
include/dt-bindings/clock/stm32h7-clks.h | 4 +-
774 files changed, 70391 insertions(+), 10084 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/clock/altr_socfpga=
.txt
create mode 100644 Documentation/devicetree/bindings/clock/spacemit,k1-=
pll.yaml
delete mode 100644 Documentation/devicetree/bindings/dma/nvidia,tegra20=
-apbdma.txt
create mode 100644 Documentation/devicetree/bindings/dma/nvidia,tegra20=
-apbdma.yaml
delete mode 100644 Documentation/devicetree/bindings/firmware/intel,str=
atix10-svc.txt
create mode 100644 Documentation/devicetree/bindings/firmware/intel,str=
atix10-svc.yaml
create mode 100644 Documentation/devicetree/bindings/fpga/intel,stratix=
10-soc-fpga-mgr.yaml
delete mode 100644 Documentation/devicetree/bindings/fpga/intel-stratix=
10-soc-fpga-mgr.txt
delete mode 100644 Documentation/devicetree/bindings/interrupt-controll=
er/nvidia,tegra20-ictlr.txt
create mode 100644 Documentation/devicetree/bindings/interrupt-controll=
er/nvidia,tegra20-ictlr.yaml
create mode 100644 Documentation/devicetree/bindings/soc/spacemit/space=
mit,k1-syscon.yaml
create mode 100644 arch/arm/boot/dts/amlogic/meson8-fernsehfee3.dts
create mode 100644 arch/arm/boot/dts/broadcom/bcm2166x-pinctrl.dtsi
create mode 100644 arch/arm/boot/dts/broadcom/bcm2837-rpi-2-b.dts
delete mode 100644 arch/arm/boot/dts/broadcom/bcm59056.dtsi
create mode 100644 arch/arm/boot/dts/intel/socfpga/socfpga_cyclone5_de1=
0nano.dts
delete mode 100644 arch/arm/boot/dts/microchip/usb_a9g20_common.dtsi
create mode 100644 arch/arm/boot/dts/nvidia/tegra30-asus-tf300tl.dts
create mode 100644 arch/arm/boot/dts/nxp/ls/ls1021a-tqmls1021a-mbls1021=
a-hdmi.dtso
create mode 100644 arch/arm/boot/dts/nxp/ls/ls1021a-tqmls1021a-mbls1021=
a-lvds-tm070jvhg33.dtso
create mode 100644 arch/arm/boot/dts/nxp/ls/ls1021a-tqmls1021a-mbls1021=
a-rgb-cdtech-dc44.dtso
create mode 100644 arch/arm/boot/dts/nxp/ls/ls1021a-tqmls1021a-mbls1021=
a-rgb-cdtech-fc21.dtso
create mode 100644 arch/arm/boot/dts/qcom/msm8926.dtsi
create mode 100644 arch/arm/boot/dts/qcom/qcom-apq8064-lg-nexus4-mako.d=
ts
create mode 100644 arch/arm/boot/dts/renesas/r9a06g032-rzn1d400-eb.dts
create mode 100644 arch/arm/boot/dts/st/stm32h747i-disco.dts
create mode 100644 arch/arm/boot/dts/st/stm32mp157c-ultra-fly-sbc.dts
create mode 100644 arch/arm/boot/dts/vt8500/wm8950-apc-rock.dts
create mode 100644 arch/arm/boot/dts/vt8500/wm8950.dtsi
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-a133-liontron-h=
-a133l.dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h618-yuzukihd-c=
hameleon.dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi
create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-a527-cubie-a5e.=
dts
create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.d=
ts
create mode 100644 arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.=
dts
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-a4-reset.h
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-a5-reset.h
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-s6-s905x5-bl209.=
dts
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-s6.dtsi
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-s7-s805x3-bp201.=
dts
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-s7.dtsi
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-s7d-s905x5m-bm20=
2.dts
create mode 100644 arch/arm64/boot/dts/amlogic/amlogic-s7d.dtsi
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s805y-xiaomi-a=
quaman.dts
create mode 100644 arch/arm64/boot/dts/amlogic/meson-gxl-s805y.dtsi
create mode 100644 arch/arm64/boot/dts/broadcom/bcm2837-rpi-2-b.dts
create mode 100644 arch/arm64/boot/dts/exynos/exynos7870-a2corelte.dts
create mode 100644 arch/arm64/boot/dts/exynos/exynos7870-j6lte.dts
create mode 100644 arch/arm64/boot/dts/exynos/exynos7870-on7xelte.dts
create mode 100644 arch/arm64/boot/dts/exynos/exynos7870-pinctrl.dtsi
create mode 100644 arch/arm64/boot/dts/exynos/exynos7870.dtsi
rename arch/arm64/boot/dts/freescale/{imx8mp-evk-pcie-ep.dtso =3D> imx-=
pcie0-ep.dtso} (64%)
create mode 100644 arch/arm64/boot/dts/freescale/imx-pcie1-ep.dtso
create mode 100644 arch/arm64/boot/dts/freescale/imx8dxp-tqma8xdps-mb-s=
marc-2.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx8dxp-tqma8xdps.dtsi
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-libra-rdk-fpsc-=
lvds-etml1010g3dra.dtso
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-libra-rdk-fpsc.=
dts
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-nitrogen-enc-ca=
rrier-board.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-nitrogen-som.dt=
si
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-phycore-fpsc.dt=
si
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-toradex-smarc-d=
ev.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-toradex-smarc.d=
tsi
create mode 100644 arch/arm64/boot/dts/freescale/imx8mp-tqma8mpql-mba8m=
p-ras314-imx219.dtso
delete mode 100644 arch/arm64/boot/dts/freescale/imx8qxp-mek-pcie-ep.dt=
so
create mode 100644 arch/arm64/boot/dts/freescale/imx8qxp-tqma8xqps-mb-s=
marc-2.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx8qxp-tqma8xqps.dtsi
create mode 100644 arch/arm64/boot/dts/freescale/imx93-phyboard-nash.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx93-tqma9352-mba91xx=
ca.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx94-clock.h
create mode 100644 arch/arm64/boot/dts/freescale/imx94-pinfunc.h
create mode 100644 arch/arm64/boot/dts/freescale/imx94-power.h
create mode 100644 arch/arm64/boot/dts/freescale/imx94.dtsi
create mode 100644 arch/arm64/boot/dts/freescale/imx943-evk.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx943.dtsi
create mode 100644 arch/arm64/boot/dts/freescale/imx95-19x19-evk-sof.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx95-tqma9596sa-mb-sm=
arc-2.dts
create mode 100644 arch/arm64/boot/dts/freescale/imx95-tqma9596sa.dtsi
create mode 100644 arch/arm64/boot/dts/freescale/tqma8xxs-mb-smarc-2.dt=
si
create mode 100644 arch/arm64/boot/dts/freescale/tqma8xxs.dtsi
create mode 100644 arch/arm64/boot/dts/intel/socfpga_agilex5_socdk_nand=
.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt6893-pinfunc.h
create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4=
-2g5.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt7988a-bananapi-bpi-r4=
.dtsi
create mode 100644 arch/arm64/boot/dts/mediatek/mt8186-corsola-ponyta-s=
ku0.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt8186-corsola-ponyta-s=
ku1.dts
create mode 100644 arch/arm64/boot/dts/mediatek/mt8186-corsola-ponyta.d=
tsi
create mode 100644 arch/arm64/boot/dts/mediatek/mt8196-pinfunc.h
create mode 100644 arch/arm64/boot/dts/qcom/ipq6018-mp5496.dtsi
create mode 100644 arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-industrial-=
mezzanine.dtso
create mode 100644 arch/arm64/boot/dts/qcom/qcs6490-rb3gen2-vision-mezz=
anine.dtso
create mode 100644 arch/arm64/boot/dts/qcom/qcs8300-pmics.dtsi
create mode 100644 arch/arm64/boot/dts/qcom/sc7180-el2.dtso
create mode 100644 arch/arm64/boot/dts/qcom/sc8280xp-el2.dtso
create mode 100644 arch/arm64/boot/dts/qcom/sm6125-xiaomi-ginkgo.dts
create mode 100644 arch/arm64/boot/dts/qcom/x1-crd.dtsi
create mode 100644 arch/arm64/boot/dts/qcom/x1-el2.dtso
create mode 100644 arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t1=
4s-oled.dts
create mode 100644 arch/arm64/boot/dts/qcom/x1e78100-lenovo-thinkpad-t1=
4s.dtsi
create mode 100644 arch/arm64/boot/dts/qcom/x1e80100-hp-elitebook-ultra=
-g1q.dts
create mode 100644 arch/arm64/boot/dts/qcom/x1p42100-crd.dts
create mode 100644 arch/arm64/boot/dts/qcom/x1p42100.dtsi
create mode 100644 arch/arm64/boot/dts/renesas/r8a779g3-sparrow-hawk-fa=
n-pwm.dtso
create mode 100644 arch/arm64/boot/dts/renesas/r8a779g3-sparrow-hawk.dts
create mode 100644 arch/arm64/boot/dts/renesas/r9a09g056.dtsi
create mode 100644 arch/arm64/boot/dts/renesas/r9a09g056n48-rzv2n-evk.d=
ts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-cobra-ltk050h3146w=
-a2.dts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-cobra-ltk050h3146w=
.dts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-cobra-ltk050h3148w=
.dts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-cobra-ltk500hd1829=
.dts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-cobra.dtsi
create mode 100644 arch/arm64/boot/dts/rockchip/px30-pp1516-ltk050h3146=
w-a2.dts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-pp1516-ltk050h3148=
w.dts
create mode 100644 arch/arm64/boot/dts/rockchip/px30-pp1516.dtsi
create mode 100644 arch/arm64/boot/dts/rockchip/rk3399-evb-ind.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3562-evb2-v10.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3562-pinctrl.dtsi
create mode 100644 arch/arm64/boot/dts/rockchip/rk3562.dtsi
create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-evb2-v10.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-rock-5b-plus.dts
create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-rock-5b.dtsi
create mode 100644 arch/arm64/boot/dts/rockchip/rk3588-tiger-haikou-vid=
eo-demo.dtso
create mode 100644 arch/arm64/boot/dts/ti/k3-am62-pocketbeagle2.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-dahlia.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-dev.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-ivy.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-mallow.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-nonwifi.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-wifi.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin-yavia.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-verdin.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-nonwifi-dahl=
ia.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-nonwifi-dev.=
dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-nonwifi-ivy.=
dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-nonwifi-mall=
ow.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-nonwifi-yavi=
a.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-wifi-dahlia.=
dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-wifi-dev.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-wifi-ivy.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-wifi-mallow.=
dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am62p5-verdin-wifi-yavia.d=
ts
create mode 100644 arch/arm64/boot/dts/ti/k3-am68-phyboard-izar.dts
create mode 100644 arch/arm64/boot/dts/ti/k3-am68-phycore-som.dtsi
create mode 100644 arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-rpi-ca=
m-imx219.dtso
create mode 100644 arch/arm64/boot/dts/ti/k3-j722s-evm-csi2-quad-tevi-o=
v5640.dtso
create mode 100644 arch/arm64/boot/dts/ti/k3-j784s4-j742s2-evm-usb0-typ=
e-a.dtso
create mode 100644 include/dt-bindings/clock/renesas,r9a09g056-cpg.h
create mode 100644 include/dt-bindings/clock/spacemit,k1-syscon.h


Return-Path: <linux-kernel+bounces-669021-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 73C1441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:08:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 728D74A48F4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:08:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 56B192367D6;
Sat, 31 May 2025 09:08:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="FkiD4rR+";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="WQ9vZ5Z9"
Received: from fhigh-a1-smtp.messagingengine.com (fhigh-a1-smtp.messagingengine.com [103.168.172.152])
(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 D319D9460
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:08:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.152
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682494; cv=none; b=l/NXz6pad41EKvQLSzLeao8+9cd0sTxZIiy4W02I7HpeF2Yddb+LlCSZcnhCBvE9rjghjpCcQSA3qqMh1mPYDmx8xn4ul/3vg7BcLfBTXbSx08OSTxidl9z7270dHaGAg956o9Mri//35e2Epld4vP6blfyRigIxXOcKdidCT/M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682494; c=relaxed/simple;
bh=K4TOYYT8nHtZXhM1aD4vCE1xpy0XKhOVbDXjLfKl5f4=;
h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References:
Subject:Content-Type; b=M22GRccxxU5me2DWlC/9ZcP6/h6pwUmx8qqXg4yLtSMpZ3MCTDL2cWCSnji+HzN5+ymTauFCTZq/hzs04bxdtn7MDmgtUqz1OKpusxnFeYUU/mJr7i8JmC8xBYMtuv1ZMuFq5TCgRliP+jey7ZiofAT8hFL9S6wSzBwR2ETJVOQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=FkiD4rR+; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=WQ9vZ5Z9; arc=none smtp.client-ip=103.168.172.152
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfhigh.phl.internal (Postfix) with ESMTP id 0F7D11140138;
Sat, 31 May 2025 05:08:12 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 05:08:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1748682492;
x=1748768892; bh=wvcVlRsTp9UBvTgpnxSSZSMuazuqeYvLY20AHwA431Y=; b=
FkiD4rR+Day+l+ahdkODGcXBtozfJGRiKS2vcnCY74JfeuhfdzJ14ODGOz+blDfK
Sw4Nk4pEqOtvTNDqaac27pPw5PdfpdjwVLgG+LKKOUcoWzTOSnwj8ZHgCJRaPyAL
gjU2n7kasv+kXWMHv3UYEhEY8Bq7VaE8DjZdKxo+aKkBGpkVDnVrWSlL8YnWt1m7
sEe3qjDNxsxRiBKomZ2Cd4H8H2ssU0H0ryM1h5CVJQ3O8gN4CdHVXYm1+R1N3HjN
De/+rP/oaDqeWfursMaM9ICja+Db5mawF7OxNcBklJj9AMxASR3eo3OOhkLxF+mh
sCe+4RN2MmCtVEiWP8kIXw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748682492; x=
1748768892; bh=wvcVlRsTp9UBvTgpnxSSZSMuazuqeYvLY20AHwA431Y=; b=W
Q9vZ5Z91lOY0ccUMnYK54tyQoRK6/0zMXS2IjIyd7UMq/qJAEfgUU5DfexGtViQk
C1FT9hk42j8vcHZOKjvOHiOZOfrpeS58zP/20YHiwnso/M2XEcwZsZw0EJj4dUhh
q6WU2AJtm0ftEmAGXpSv5JsFiSaWbo+Gby2IGfjKGjixMsmxmIX9sZOj0pi07HOs
gmpotYuGENKkcMSMIYopNyg5z5K2kJ+ja6HNyfrpzN/BxFzptsLE+BLMA2mUeGYo
LVcP120R3UlD5peZVLRgTeXkirTd8TQhX85d30T+VtvLh5JRa92I+jG33yaMF/n3
oWrng7/OnBSbV3lhfJiXw==
X-ME-Sender: <xms:-8Y6aABswAzZWF8zh0LSyneYqhkjfJ9J8_J09_K4x76rPD3mec5n2A>
<xme:-8Y6aCgY7CYwZkGsf4iTVa5dLFsEF2H0yp9GLwBNxcu7bXqCOglAbJjaHCW-SLzLW
7B9405LXxwPcIZyfOE>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudehtdculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
jghfufgtgfesthejredtredttdenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfd
cuoegrrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeefffelleduheeh
leejtdfhheegtdffhedtffeileehkeetffevtdegheduhfeiudenucffohhmrghinhepkh
gvrhhnvghlrdhorhhgpdhgihhthhhusgdrtghomhenucevlhhushhtvghrufhiiigvpedt
necurfgrrhgrmhepmhgrihhlfhhrohhmpegrrhhnugesrghrnhgusgdruggvpdhnsggprh
gtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehtohhrvhgrlhgu
sheslhhinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtoheplhhinhhugi
dqrghrmhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggurdhorhhgpdhrtghp
thhtohepshhotgeslhhishhtshdrlhhinhhugidruggvvhdprhgtphhtthhopehlihhnuh
igqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:-8Y6aDmRepwYIrUZHgQn5ULBv4Zh7oOOoK9Qr-dNYqlKzazM_9bFUg>
<xmx:-8Y6aGx3GFIAYgUJBwVrfw5ilD9emcopHoabArEPVFHHN7rqNI-HuQ>
<xmx:-8Y6aFSlietPKYPKJmY5ABxCljSgDx1SsqV5TXMGR4BfdpE7iPrXdg>
<xmx:-8Y6aBZ5e7aTl7SqP5_HyDFT-bdREkxDKjZVck2_PlGFJWqfrCAxmw>
<xmx:_MY6aAkHL2Y8m_0qQb8nNoNNiekU9mobYsZa0807IIgRSt4U9ilBllsR>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id AA599700061; Sat, 31 May 2025 05:08:11 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-ThreadId: T97262eb0f1793ba4
Date: Sat, 31 May 2025 11:07:48 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <d98adabb-a26a-4962-af9d-5707e1cb3715@xxxxxxxxxxxxxxxx>
In-Reply-To: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL 5/5] soc: sophgo devicetree updates for 6.16
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following changes since commit a5806cd506af5a7c19bcd596e4708b5c464bfd21:

Linux 6.15-rc7 (2025-05-18 13:57:29 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-newsoc-6.16

for you to fetch changes up to 9bba618694cc905b898661c18e3e40955573ef5e:

Merge tag 'riscv-sophgo-dt-for-v6.16' of https://github.com/sophgo/linux into soc/late (2025-05-23 23:59:45 +0200)

----------------------------------------------------------------
soc: sophgo devicetree updates for 6.16

The Sophgo SG2044 SoC is their second generation server chip
with 64 cores, following the SG2042.

In addition, there are minor updates for the cv180x SoCs.

----------------------------------------------------------------
Arnd Bergmann (1):
Merge tag 'riscv-sophgo-dt-for-v6.16' of https://github.com/sophgo/linux into soc/late

Inochi Amaoto (10):
riscv: dts: sophgo: sg2042: add pinctrl support
riscv: dts: sophgo: Move all soc specific device into soc dtsi file
riscv: dts: sophgo: Move riscv cpu definition to a separate file
riscv: dts: sophgo: rename header file cv18xx.dtsi to cv180x.dtsi
riscv: dts: sopgho: use SOC_PERIPHERAL_IRQ to calculate interrupt number
dt-bindings: interrupt-controller: Add Sophgo SG2044 CLINT mswi
dt-bindings: interrupt-controller: Add Sophgo SG2044 PLIC
dt-bindings: riscv: sophgo: Add SG2044 compatible string
riscv: dts: sophgo: Add initial device tree of Sophgo SRD3-10
riscv: dts: sophgo: switch precise compatible for existed clock device for CV18XX

Zixian Zeng (1):
riscv: sophgo: dts: Add spi controller for SG2042

.../interrupt-controller/sifive,plic-1.0.0.yaml | 1 +
.../thead,c900-aclint-mswi.yaml | 1 +
.../devicetree/bindings/riscv/sophgo.yaml | 4 +
arch/riscv/boot/dts/sophgo/Makefile | 1 +
arch/riscv/boot/dts/sophgo/cv1800b.dtsi | 39 +-
arch/riscv/boot/dts/sophgo/cv180x-cpus.dtsi | 36 +
.../boot/dts/sophgo/{cv18xx.dtsi => cv180x.dtsi} | 95 +-
arch/riscv/boot/dts/sophgo/cv1812h.dtsi | 39 +-
arch/riscv/boot/dts/sophgo/cv181x.dtsi | 2 +-
arch/riscv/boot/dts/sophgo/sg2002.dtsi | 39 +-
.../riscv/boot/dts/sophgo/sg2042-milkv-pioneer.dts | 72 +
arch/riscv/boot/dts/sophgo/sg2042.dtsi | 32 +
arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi | 3002 ++++++++++++++++++++
arch/riscv/boot/dts/sophgo/sg2044-reset.h | 128 +
.../boot/dts/sophgo/sg2044-sophgo-srd3-10.dts | 32 +
arch/riscv/boot/dts/sophgo/sg2044.dtsi | 86 +
16 files changed, 3502 insertions(+), 107 deletions(-)
create mode 100644 arch/riscv/boot/dts/sophgo/cv180x-cpus.dtsi
rename arch/riscv/boot/dts/sophgo/{cv18xx.dtsi => cv180x.dtsi} (75%)
create mode 100644 arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi
create mode 100644 arch/riscv/boot/dts/sophgo/sg2044-reset.h
create mode 100644 arch/riscv/boot/dts/sophgo/sg2044-sophgo-srd3-10.dts
create mode 100644 arch/riscv/boot/dts/sophgo/sg2044.dtsi


Return-Path: <linux-kernel+bounces-669022-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9D3E041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:10:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id C52A14A5384
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:10:25 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id DC86E238176;
Sat, 31 May 2025 09:10:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="sz4IZZbz";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="lDSX/gnq"
Received: from fout-a6-smtp.messagingengine.com (fout-a6-smtp.messagingengine.com [103.168.172.149])
(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 305BE78F4E;
Sat, 31 May 2025 09:10:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682616; cv=none; b=pikQSFsEY7Y8MTM3WPW7Zq/uMBrTkmPgFyoEMFL6wza5Kt01kfiOYXdRea6Ris2u9kR9DY2rHD22+0mLK7KhR85644EshvDsD48Qp7eD71hkrE5GdCZCXSN6jxml4UMw3FAUsEaMzKTXM8Q94KgAVbJOScq0TnGfTVEaMUJghr0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682616; c=relaxed/simple;
bh=S7wsb9tmfVZDNNnUG1r3Rq5K3E7DRT2sd2LlOM/ibMQ=;
h=MIME-Version:Date:From:To:Cc:Message-Id:Subject:Content-Type; b=QF5y+mTaxJrVksXEkaK4VrSWgwQhn2Q5HwiEFWj2Oh+WbTdmJX3h5WDiAwQDn6iRfVaObZefaZ8jSbeg0+pGKvss+RypzS1ccOdkBJUzEoZx9ck4GJOxnK30VW6d13u1Q1c1yHxctS8Cw9VK57crwhuoKNi6F+DMHnRt1YFZHr0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=sz4IZZbz; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=lDSX/gnq; arc=none smtp.client-ip=103.168.172.149
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfout.phl.internal (Postfix) with ESMTP id 55656138034E;
Sat, 31 May 2025 05:10:14 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 05:10:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:message-id:mime-version:reply-to
:subject:subject:to:to; s=fm3; t=1748682614; x=1748769014; bh=RX
O4f3Yp6Be71rD2cH9gM61HbHGWJD/s7+tuHyvcz5U=; b=sz4IZZbzEd7DDdVpIP
PcvuT23+ITNiLVgPM/ZwbxesELoZPwW5k6dEvBLAPTuMUQIsy6tRZNOH7QvB/dmJ
NFQLHWXj9R7XNM8httMvK2n3NyIaAvpUEVIidEoHqQc88LYKExFQd2PHiueDT/R3
s1cOaTIAmYfd4Zl2di0KogiuLcn86CkJnASeb2Skt9m35eaC8LBs79D7TAU2XkYY
SMJM+iJSKdBEPXfRYxmfqtujfowd8HThjyGe/9tL+BYLFthRnRNeoHh53B6N2XQ0
78gj7nZLJsomffo2rY09wU8G1Bw6A+zvwU+7rH4AT1GfdIQxejpG4MQgv6ynHTQH
qTsw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:message-id:mime-version:reply-to:subject
:subject:to:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=
fm1; t=1748682614; x=1748769014; bh=RXO4f3Yp6Be71rD2cH9gM61HbHGW
JD/s7+tuHyvcz5U=; b=lDSX/gnqofokQz3vlh2ZNFDjUTV/FIwwX0zhFNEmtcm7
cIAKkvmjnKFmlhwQsGoRNPxgHL09iRpqD+vjUXzjH0hCXMX8TLQtdHW6jMoQeDwW
mWw529YDvlkgyvUH6tpoKiBd4gPw7frqQViSEGc8CXbx62ivpx/tDyuNcMd3OD4S
Rqh421esWYP4jv425UXUtPpqYps4UiheSwV2wobami9nwo1EXCFAbQY9npvEvsw+
UHcghVkxi1T7+QNWlO3yOM/TQJUKD2kL4R8r/N8inNb5WHgecGSUlwmIkF6EUfco
vSHCGRLAweeTczuIQBISNpcH+5U4BrT3xDuALJQ6mw==
X-ME-Sender: <xms:dsc6aIhtHfr4LZdGNKoMy7tjoUrGxaTEshiQ8hJxjjjJMjzTZ2lnDw>
<xme:dsc6aBDvRSByIYaUh0tsGtfvBgdVWhYUfYHYr4lkiq4g65UNuJlUmn64UjHSIi1gj
oIH32iQQlMXY9SQyH8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudehudculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
ufgtgfesthejredtredttdenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfdcuoe
grrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpeduleeigeekveeugeet
tdejtddtleeghefhvdfhueehtefhudelffduvdeuleevteenucffohhmrghinhepkhgvrh
hnvghlrdhorhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhf
rhhomheprghrnhgusegrrhhnuggsrdguvgdpnhgspghrtghpthhtohepkedpmhhouggvpe
hsmhhtphhouhhtpdhrtghpthhtohepkhgvvghssehkvghrnhgvlhdrohhrghdprhgtphht
thhopeigkeeisehkvghrnhgvlhdrohhrghdprhgtphhtthhopehtohhrvhgrlhgusheslh
hinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtoheplhhinhhugidqrghr
mhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggurdhorhhgpdhrtghpthhtoh
eplhhinhhugidqrghrtghhsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohep
lhhinhhugidqhhgrrhguvghnihhnghesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtph
htthhopehlihhnuhigqdhksghuihhlugesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgt
phhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:dsc6aAGCr8yQaaseQMm_XQw4bZ095G5ZcWNy3prGMpNDFUCkKUcXUw>
<xmx:dsc6aJSsVtH9gcAsTJWgx2yz1bCs3TBYSBJtlX9KAM_Mj1yE7P4bfQ>
<xmx:dsc6aFw3qK1oBAaTZx1JPlv4RKKfH8K5kxcR1osQPu3OWGao_VlLGQ>
<xmx:dsc6aH7WEmQyHMUDTYsHrMIGmeCqAze97w2bgFFUe44teRBWQHKJNw>
<xmx:dsc6aHf5EfpfJKJ4dzibYskkAxRFVm6jl0WdKbgtXw1s1FYvv1tXWftn>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id F1CC9700060; Sat, 31 May 2025 05:10:13 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Date: Sat, 31 May 2025 11:09:53 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, Linux-Arch <linux-arch@xxxxxxxxxxxxxxx>,
linux-kbuild@xxxxxxxxxxxxxxx, "Kees Cook" <kees@xxxxxxxxxx>, x86@xxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-hardening@xxxxxxxxxxxxxxx
Message-Id: <feab370a-3857-4ae9-a22d-1ab6d992c73c@xxxxxxxxxxxxxxxx>
Subject: [GIT PULL] require gcc-8 and binutils-2.30
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The following changes since commit b4432656b36e5cc1d50a1f2dc15357543add530e:

Linux 6.15-rc4 (2025-04-27 15:19:23 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git tags/gcc-minimum-version-6.16

for you to fetch changes up to 582847f9702461b0a1cba3efdb2b8135bf940d53:

Makefile.kcov: apply needed compiler option unconditionally in CFLAGS_KCOV (2025-05-21 16:08:42 +0200)

----------------------------------------------------------------
require gcc-8 and binutils-2.30

x86 already uses gcc-8 as the minimum version, this changes all other
architectures to the same version. gcc-8 is used is Debian 10 and Red
Hat Enterprise Linux 8, both of which are still supported, and binutils
2.30 is the oldest corresponding version on those. Ubuntu Pro 18.04 and
SUSE Linux Enterprise Server 15 both use gcc-7 as the system compiler
but additionally include toolchains that remain supported.

With the new minimum toolchain versions, a number of workarounds for older
versions can be dropped, in particular on x86_64 and arm64. Importantly,
the updated compiler version allows removing two of the five remaining
gcc plugins, as support for sancov and structeak features is already
included in modern compiler versions.

I tried collecting the known changes that are possible based on the
new toolchain version, but expect that more cleanups will be possible.
Since this touches multiple architectures, I merged the patches through
the asm-generic tree.

----------------------------------------------------------------
Arnd Bergmann (6):
kbuild: require gcc-8 and binutils-2.30
raid6: skip avx512 checks
arm64: drop binutils version checks
Kbuild: remove structleak gcc plugin
gcc-plugins: remove SANCOV gcc plugin
Documentation: update binutils-2.30 version reference

Lukas Bulwahn (1):
Makefile.kcov: apply needed compiler option unconditionally in CFLAGS_KCOV

Documentation/admin-guide/README.rst | 2 +-
Documentation/kbuild/makefiles.rst | 4 +-
Documentation/process/changes.rst | 6 +-
.../translations/it_IT/process/changes.rst | 6 +-
.../translations/zh_CN/admin-guide/README.rst | 2 +-
arch/arm64/Kconfig | 37 +--
arch/arm64/Makefile | 21 +-
arch/arm64/include/asm/rwonce.h | 4 -
arch/arm64/kvm/Kconfig | 1 -
arch/arm64/lib/xor-neon.c | 2 +-
arch/um/Makefile | 4 +-
drivers/gpu/drm/panel/panel-tpo-td028ttec1.c | 6 +-
include/linux/unroll.h | 4 +-
kernel/gcov/gcc_4_7.c | 4 -
lib/Kconfig.debug | 10 +-
lib/raid6/algos.c | 6 -
lib/raid6/avx512.c | 4 -
lib/raid6/recov_avx512.c | 6 -
lib/raid6/test/Makefile | 3 -
lib/test_fortify/Makefile | 5 +-
lib/tests/stackinit_kunit.c | 10 +-
mm/mm_init.c | 6 -
scripts/Makefile.compiler | 2 +-
scripts/Makefile.gcc-plugins | 16 --
scripts/Makefile.kcov | 3 +-
scripts/gcc-plugins/Kconfig | 10 -
scripts/gcc-plugins/gcc-common.h | 45 ----
scripts/gcc-plugins/sancov_plugin.c | 134 -----------
scripts/gcc-plugins/structleak_plugin.c | 257 ---------------------
scripts/min-tool-version.sh | 6 +-
security/Kconfig.hardening | 76 ------
31 files changed, 25 insertions(+), 677 deletions(-)
delete mode 100644 scripts/gcc-plugins/sancov_plugin.c
delete mode 100644 scripts/gcc-plugins/structleak_plugin.c


Return-Path: <linux-kernel+bounces-669023-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5E90141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:10:39 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 982ED7A6FA7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:09:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BC164238C20;
Sat, 31 May 2025 09:10:24 +0000 (UTC)
Received: from mx0b-0064b401.pphosted.com (mx0b-0064b401.pphosted.com [205.220.178.238])
(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 617F62376F5;
Sat, 31 May 2025 09:10:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=205.220.178.238
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748682623; cv=fail; b=riCftoYfGE+Iy23xUxOcQ3RKDmZlznN2PlfhYOK8h2O46Xf5LSTz8W/IoH1h/O8ia5XaJWxD5hrtpDZc/AfFua48X2c7UD0aLmhTGqeEBEuYPnHV7HffPOnwLXYq8r4T+6HJHIhSECKHCLH05ex5KAuXVfHFb2L2brxGzBW9GvE=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748682623; c=relaxed/simple;
bh=klSLInOzh4giR5nPu/LkUMC5xaMBvYwQ38QsFqj3w+s=;
h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:
Content-Type:MIME-Version; b=L3EgLownk8hj0kQFS6bDZybFBQflBwBTgvFB5DIKWr1OVfOpEKUgCy08hGY0ezmpHrL/oo/rJx27sctDQZmZKqa4aBl98BPc9VbjJ0wSjZKPp9CuJjgGnbCNkMnU8Cs5jwW9INNb2kp/pOWXSiQ+718su2vaSFv200JMoPP4PD0=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com; spf=pass smtp.mailfrom=windriver.com; arc=fail smtp.client-ip=205.220.178.238
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=windriver.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=windriver.com
Received: from pps.filterd (m0250811.ppops.net [127.0.0.1])
by mx0a-0064b401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V8xkV3028561;
Sat, 31 May 2025 09:10:06 GMT
Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10on2069.outbound.protection.outlook.com [40.107.92.69])
by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 46yq00r8ce-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);
Sat, 31 May 2025 09:10:05 +0000 (GMT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=J2wz6k6WgVXboWkXzEQnmAtCa/1h0SS5zdhmEUQvhJF06JIs1VoxwODe1H8AQqYUcfrglf+LpRCjYPzXhcGJBexfIkSgkXGpiGJtHEdZX5jPyyK8jIvHSLY7KH+LFs52flNFWCmoQ/S+xyGJKke9Ush5hczt9hkzjsnNBp+1R1ssJLzLjY+Hz2+wPKzx0e6q1LCp2R+OtbE/y2pL8mgW/rjDcFBMpkjlt0VqCrIj2lkCUMeocMIUmMmVjCCNLpQfbCmDCQsibIyWnhECB1HdpGDZHZC8DJcldeiVED0fZku+sFfNWFD/yxKaH/djD9kosxzQb1XMBRCBZ8lj26qcVA==
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=klSLInOzh4giR5nPu/LkUMC5xaMBvYwQ38QsFqj3w+s=;
b=CT7OsJWzHQjtdIkQrE9Y1twCejdraPr0+zw23yLEU8AiHxigH0GyZ6tzr897CoDOznd/xLn8fWQgluyOjLbpkwe4hnVnBxuovb5UF4mr+8tDEzHSHC+VLbTtTy3euSL7x5lq/4Bph14/weeTTENojb69oKRFySY1Irpn2T6gXGX8yQJ20U0Y9p4NQ9lKK+3nYagHB3MHJehl4EC38U3aiwFyOqyqJncSpmcmfZKXQU5wX5nj3/GwZZS9ALUr/0nA/xlmLQYLzCnZcnKDEY2q/0J3kdOTUyHYonTT4QKXSnCBN+SRWEdP75/1DLnrg4Kd05Koua5fHzDpGD+xngkC7A==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=windriver.com; dmarc=pass action=none
header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none
Received: from CH3PR11MB8773.namprd11.prod.outlook.com (2603:10b6:610:1cb::13)
by CH2PR11MB8813.namprd11.prod.outlook.com (2603:10b6:610:282::16) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.32; Sat, 31 May
2025 09:10:03 +0000
Received: from CH3PR11MB8773.namprd11.prod.outlook.com
([fe80::c241:6bd2:b212:f4b2]) by CH3PR11MB8773.namprd11.prod.outlook.com
([fe80::c241:6bd2:b212:f4b2%4]) with mapi id 15.20.8769.025; Sat, 31 May 2025
09:10:02 +0000
From: "Li, Meng" <Meng.Li@xxxxxxxxxxxxx>
To: Frank Li <Frank.li@xxxxxxx>
CC: "Rob Herring (Arm)" <robh@xxxxxxxxxx>,
"devicetree@xxxxxxxxxxxxxxx"
<devicetree@xxxxxxxxxxxxxxx>,
"shawnguo@xxxxxxxxxx" <shawnguo@xxxxxxxxxx>,
"linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>,
"linux-arm-kernel@xxxxxxxxxxxxxxxxxxx"
<linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>,
"conor+dt@xxxxxxxxxx"
<conor+dt@xxxxxxxxxx>
Subject: RE: [PATCH] arch: arm64: dts: add big-endian property back into
watchdog node
Thread-Topic: [PATCH] arch: arm64: dts: add big-endian property back into
watchdog node
Thread-Index:
AQHbz8I6xeJIfWjuYEeXZYWwyKzMCLPn+wEAgAEDLlCAAMkqAIAAohLwgADhKYCAAS02UA==
Date: Sat, 31 May 2025 09:10:02 +0000
Message-ID:
<CH3PR11MB877339E63CAB05E269D7371DF160A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250528111751.3505224-1-Meng.Li@xxxxxxxxxxxxx>
<174843567469.3636722.5654586098186872724.robh@xxxxxxxxxx>
<CH3PR11MB877336C35ECB8432FF57C821F166A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<aDiFrp/firrNlFEY@lizhi-Precision-Tower-5810>
<CH3PR11MB8773E3192B27DD05E145556EF161A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<aDnKgx2L9/LL3U4z@lizhi-Precision-Tower-5810>
In-Reply-To: <aDnKgx2L9/LL3U4z@lizhi-Precision-Tower-5810>
Accept-Language: zh-CN, en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: CH3PR11MB8773:EE_|CH2PR11MB8813:EE_
x-ms-office365-filtering-correlation-id: bdf012b8-11de-40b9-25b4-08dda022ed54
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam:
BCL:0;ARA:13230040|366016|376014|1800799024|38070700018|13003099007;
x-microsoft-antispam-message-info:
=?utf-8?B?Vndtd2xEamJDdHg2ZUVPWmQwWEtUK3d1RktZVEl1b1QwZkJJWWdkR3pYT3Rl?=
=?utf-8?B?VkdRWEJSWkdaVVpKZitzWi9QTzZFWDNSYU9rRjk3eHRmbHJtdGJaeUx3NzM1?=
=?utf-8?B?SVdHWjhBTHVyajR5Nk5tK2N4TWcwZkdhUmY4UFhVVWgvL0hlczZ0UC8yOFVH?=
=?utf-8?B?VFpJMmhRZm9rU0hxd1B1MFZJRXhUL1d3S0RLL2ZqT1ZNYzNGc0F1UjNBZk84?=
=?utf-8?B?Tzg5WmpZKzBNMmo4blhQVENBZFhBLzhWbXVKYnVTMUFNNDdsSjZNV0IrU3Yx?=
=?utf-8?B?bmdMaG45MGtqYWNCdU90eWNWR0RURnJoYTYyK3BRbzZaeTR0YkZTb3kwcTRY?=
=?utf-8?B?ckhCdmNKTmJZb1U3NEl1cXBhbUNUMEFKZkozdkY4ZkU0aW5oLzc4UGhvOWRl?=
=?utf-8?B?TU1HSHFrMjBDN0wxSmoxOXplSTg4bUphSFFWamEwZitDSi9IYjBya1pBZ1NE?=
=?utf-8?B?ZWtQckJWTXNHb2l3bTh6c0ttY01oYUtUTFUxUW84alRyMGdNNStBT0xCTWpi?=
=?utf-8?B?Wm8vMmNrYnJLZkpTODdZck8yTkR0eTFJZGk1SGcxeWdzTTFDSE5HWnJZamtJ?=
=?utf-8?B?aGhTS3M3azdFNEpYYUs2SEFMcE02aXgzQlRKMDhjNEx5bldveUd0U1JDbjFr?=
=?utf-8?B?MytmcXNqajNRK2dZSWwzYkpWQWZzS0s1U3JYaUUwN2F3V3ZyMGRhcXQ3YXlE?=
=?utf-8?B?d2NjaS9BZzVxd2RFaUc0eDR1WmpTS25PcmJPTUtqdWM4T25Xd2tOaHo1ZXYy?=
=?utf-8?B?ZUJMNGlqYVlEbE0xYTFkZUcxczJ2LzBMd0lTZTFiak8zSUhQU2ZpTVF2a3Nm?=
=?utf-8?B?Yi9QZkdRVlpYc0lqSFgxbmpCWDc4SThQbmlCOXdaQlZ0djM2OHV1eVdzUzJa?=
=?utf-8?B?ZEozR29td0dPL1dVWUxhdElCd0V4dkxVUHM5dU4vb2FtOTdrejV3K0tSVzRw?=
=?utf-8?B?SVNRYXRMbW1oZnVIb2NYYW5MWXZxeVFjZVR1OTVaMnN0dVFBUDlkczl1bGNZ?=
=?utf-8?B?UDFwQ29PdUpTcStQL1hqdFE4WXh4MS9BRWpITFdmUUx6N0hVMHVpOEZ2Qlc2?=
=?utf-8?B?VmEvR2RMWFY4cTZKVjJwTDh3YVdRZndFcEhPdzJtb3UzeGhJWC8wRUhnREJK?=
=?utf-8?B?RmJ2SEpBZW9KZmttTlZDWVVMY2xnS3Vpd2VvdDBVVk5uWWZWZFg5dnJML09l?=
=?utf-8?B?YVFJRjFTSUxvSmlSbW9SalAwNUppRXoyd0RPaS9CRTFoRWdJT3JJYjVTeXdJ?=
=?utf-8?B?U2J2VFJmZFNXa05LNS9XZVkzbWhmTnpFNnlYekp1WlZtYkZ1SmFuQ3JFVjVQ?=
=?utf-8?B?UXZ4bXBWSnlNZFcrb3hZZ1JRbDNneTBCWWlLaUk5eTdjN01wRXFwNFltQ3U0?=
=?utf-8?B?SXdqL2JkeEFDQXpEU3dnMW9QNkhpR0ZoeE9GcjRrRDZDb3JrcjdlbmFmbDc2?=
=?utf-8?B?L2lMMmZjbjJjcFBLVUhWVnJsc0ZmNXlWRzNkUGI5eTJzVUNBZVVpcy9sbEpP?=
=?utf-8?B?d2hGZzdyQ29RQmhYaW5zNllVMzVMYWVjQmZIVmtJOGV6YTg0bmVCQXVScG5M?=
=?utf-8?B?djROMG5tRjArbXhYMm1BcDFjaFlyUXlRcUF3Z0pKYlFWVDU2UTNDNGlDNG4w?=
=?utf-8?B?czlqalUxejJSdHl1WThuTExBYjJKaG0rY29hQ2xHNWY2b3ROZTM5V3Y5d252?=
=?utf-8?B?NCt3RmViYXYrbGZFMkZRRGN5S3NyM0t0M29nOEc0czlYVkNXbUVMUXJhcW96?=
=?utf-8?B?bkJ0QmtKcnpGY29DWU5ycmdUWWpxRFdRV2MrMXNKekRBM0FYUlh3T1ByaC9n?=
=?utf-8?B?MEZLM3A2a3hsQThPN1VXRDlyZjBzUUdSMjJRelRZQlFNUVpJUFJVMmJMaGMv?=
=?utf-8?B?Rmo2cXNzbHJXSmJnNS9VT1M5SjM1QmxUM3IrZkVMK3FvRGF0aS9lSlVpSEVN?=
=?utf-8?Q?oRNz+Oqlsyw=3D?=
x-forefront-antispam-report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH3PR11MB8773.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(38070700018)(13003099007);DIR:OUT;SFP:1101;
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?utf-8?B?R1BiWHRob0MxMWlYbTRYS28xanBDMTFEZU81Q3pyNittN0Y3S2FCK1ZjUGpG?=
=?utf-8?B?aEtlR0RkZWtuVWVLTXBxOENMV2JxdkV1cnZQckU1ZEZ0MWcxTHBxUjhjM0xG?=
=?utf-8?B?Y21LT1JQZDh6dWF4a3hSbmp0Q3A3Wm5IbXhjVDRQOHVocWZJMGV6WVdNLzUy?=
=?utf-8?B?cGR2VEw4eTNPYjBEcWJuK3k3eUFZckdEU2M1Z3Uvd1lvbEF5eklqbU9ZSkJV?=
=?utf-8?B?WlpMY2VWeUNkVjNPVjlXZjdlRE1WZC9ZcTVHTldQLzE1Rm5Id1M1bjUvQzJs?=
=?utf-8?B?SEhBNG1OYzRxeWJwQU9RTXZzTDMyS3pjNG9pdXR2R0ZCQjd6T0lUK2JEUFQ1?=
=?utf-8?B?OEdWZ3NGcHFaa3A5UUlRT3dMcm9EOTF2TDJGL3FqMFNRYkNSelpXalRHdTFz?=
=?utf-8?B?cFZsK3gvRFJWUDY0UXRJZFV1WXR3VDBVSTdka09NYkdIMFhvaExnSTJqTWpR?=
=?utf-8?B?Z09XMng0eHFUQ0p6MW1tWEg0VXhzY2xSTGY2dDluZUwwMjlZRmdZWk95TzFT?=
=?utf-8?B?Z2NzVlhtMFJkTmREbm5NZWIxNW44Tkg1WDNHVE5WRjNhYnRNMThUMFhGZGZU?=
=?utf-8?B?U2dVQ25ZVmEvWDdwL0JpYVdHSXdPdXM0clNmQU9ja1lPc0drWTVDM3FyZHRw?=
=?utf-8?B?U0Y4S2kwbzVYNlYzRHorM2JjbHBEM2hrSDdaQTJJcUNEQnhJbmt6M2ZTMm1h?=
=?utf-8?B?aW4rc2dLcWs1MytRVElBSUVvTjdFRU9Obkd0TmZ4QkNCeVArcllSWG42SDI0?=
=?utf-8?B?RkZhZEgyRmE0aUEwNThCbzMzdENiUFhrL3RhYUh2VTM5SEVDaGxDQ0s1TWlt?=
=?utf-8?B?OUVTNlo4NVkyc0l5R2xVWlNmNWJ6cGV0aG5WSjBIR0cvQUQ2M1E1ZXRiT2FO?=
=?utf-8?B?VmhBY0dINitrSW02WUJWV3B0a0NpWmF1TFZUa0JLbDFFUFJRN3ROeWVWd0NU?=
=?utf-8?B?Nk0yaXpPUUZWc200Wm1TbHBXVUUvSThkN2ltZFNFdDdTQUY3N0EwUmh3Vng5?=
=?utf-8?B?TElUM2pDeGc4NW9PY3pzQlFEY1MwQUtzVmtzZ0wreW1YbG1QUUMrYjlhT1Vx?=
=?utf-8?B?cmZRdENHemp3TVd4ZWQxaEVvSkFCSm9TWXJ4V0p2WDc3VVNjc0JnWlJydzRM?=
=?utf-8?B?RFg5Wi9qVVR5aVB1TmpVZUN3MjNmQklsb25HdUZUWjJxYkpDODd6VlJncVNm?=
=?utf-8?B?ZmdnWGRjRnpLUEFocWFDTnpyS2VxVmZtMi9EWHNIWW1FaXllMi8yNFhZRlJE?=
=?utf-8?B?YVEvQ1hLZnlBYzk3ZlJpRjFRbzB5VSs5NXZzZ1ZCZVJFOTNIVEpkUHdONnZw?=
=?utf-8?B?Vnl5aGRqMUJVT3NKN2lVL0NjZERSZ21PNmkvREFaQ3NIbFkrQ2NtOE04dWRV?=
=?utf-8?B?aHRvRG5nSjMyck9iNnJrODI3MUE3cHVhZ0R5dVJCQzVxWExPdkdYMll2YUFK?=
=?utf-8?B?RDg1TTBDTVI4MUNJY0NMTzZqOVpmZHJ4ckF3UjNZcWt0VkE3eHVjNjJ0dXZZ?=
=?utf-8?B?ODRGU1ErQ3BhMmlFbTFXMlZSenZ2RWx2ZSsyZTJtTFh2NHhyTllJZUtpYVVQ?=
=?utf-8?B?VzgzenRib3AvdzNLV01qVTN0dUNoTjFuaTZYZ1Vwb3dEOE9NNHBqOGh2MnlV?=
=?utf-8?B?aFZDMlE0RmxubmJ3U1JLMmhXamtCVHhZbVNlQWcwVlcwN3Axcm9Vblh3ZFNF?=
=?utf-8?B?N2FqSzFsbzBzSVdTWWRsU3hQeS9oZFI4WFBwTzBGdGNiNmhXSFg5RDRpRHAx?=
=?utf-8?B?TjBreDF0NnMvNE9qUFhXOUxXTFRpalFKcEpuZHJwMUREb01mWHVuczVqZlE3?=
=?utf-8?B?dzBIdHVuNUxjcTkvRWN6ckVYNmdHU2U0K090bGF6WlNETUdJelFRa2F6cnlJ?=
=?utf-8?B?Z0pqRHlyQUlmTytScXVPUWJ5OTlVZDNndmozaEc0UXRueUpTMVFQcmZnS2RC?=
=?utf-8?B?RURCSG42ZnNSaVZ1TFk1SUlJNWcwSlMrVlZXUTREWlIzOHRjdlA2blp4T3FZ?=
=?utf-8?B?NVBGVTFOd1JHY3pxemxBRk1Zc1lTMFdhR3ZZU2xlKzFtMUxXYVo3QVh1bWo2?=
=?utf-8?B?SHEzTmpKODExVGZUblJCekhxNFhKRkIxcGxvM01KNHA2bE91bUhxSnp2U1FO?=
=?utf-8?Q?iKsVKT8ofSzChX+leVAmAN+yS?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: windriver.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: CH3PR11MB8773.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: bdf012b8-11de-40b9-25b4-08dda022ed54
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2025 09:10:02.7328
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 8ddb2873-a1ad-4a18-ae4e-4644631433be
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: 6mBLLSg7U8CpV+BStm7CogEUPm5vZNlUz1HE7Cq4ymvmzQRlvPBjn7h+e6VQvNCTtFMva0Nv3D+eW7C956KAzA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR11MB8813
X-Authority-Analysis: v=2.4 cv=EtXSrTcA c=1 sm=1 tr=0 ts=683ac76d cx=c_pps a=6WGvpOQPchLzK5RJBAehJQ==:117 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10
a=dt9VzEwgFbYA:10 a=gEfo2CItAAAA:8 a=8AirrxEcAAAA:8 a=t7CeM3EgAAAA:8 a=VwQbUJbxAAAA:8 a=JfrnYn6hAAAA:8 a=Or4K-HiavPDgvTth0TwA:9 a=QEXdDO2ut3YA:10 a=sptkURWiP4Gy88Gu7hUp:22 a=ST-jHhOKWsTCqRlWije3:22 a=FdTzh2GWekK77mhwV6Dw:22 a=1CNFftbPRP8L7MoqJWF3:22
X-Proofpoint-GUID: yxtS2aWQ5AGgJvhNaxIuhrV7iOYehExE
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDA4MCBTYWx0ZWRfX8jZjH6cS5PF/ riUJQY/D4U8yYB0v0CpfztwbEECXtIpdhMvU3PfO/fUpXCmjuEUNZsr64fvT9Zu+FjBe1t7jj/e VXQg3mQDGE7qKLERyPw4D0nbM+b2slnef1FeHdvKLJkfaO3HIhwmjyrkQk+EeYUu8hkY8H4vAoC
3nJy7nbHxrDdiccQNUAnga9gYsx3+2Fjs1okZDUzIUyuTKaZrOHgAEFvSLee+y0jRcStrocgoII Ca5MixAT8CW9UiGquQPcxHkr0b8vV6gDe+DKPwMxHgGDnFtf7jur9h2MzGr6RIaSAJruiSu39k8 Qgd/2Nj2dqLbaoJRnWN2Eveeab7gQlHkCYSvBwa75bxX6XC3i4SeDRAZWl97CUERz8owJWSZpdE
84oYFeyDl5HfvRDYK6/akXc9+ZjbZNlIQ2/PcpUHfI91wQB0AV/Ts05IghubY+tZIUA1T/Ah
X-Proofpoint-ORIG-GUID: yxtS2aWQ5AGgJvhNaxIuhrV7iOYehExE
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_04,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0
adultscore=0 spamscore=0 suspectscore=0 priorityscore=1501 mlxscore=0
bulkscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0
mlxlogscore=999 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2505160000
definitions=main-2505310080
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRnJhbmsgTGkgPEZyYW5r
LmxpQG54cC5jb20+DQo+IFNlbnQ6IEZyaWRheSwgTWF5IDMwLCAyMDI1IDExOjExIFBNDQo+IFRv
OiBMaSwgTWVuZyA8TWVuZy5MaUB3aW5kcml2ZXIuY29tPg0KPiBDYzogUm9iIEhlcnJpbmcgKEFy
bSkgPHJvYmhAa2VybmVsLm9yZz47IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOw0KPiBzaGF3
bmd1b0BrZXJuZWwub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBsaW51eC1hcm0t
DQo+IGtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBjb25vcitkdEBrZXJuZWwub3JnDQo+IFN1
YmplY3Q6IFJlOiBbUEFUQ0hdIGFyY2g6IGFybTY0OiBkdHM6IGFkZCBiaWctZW5kaWFuIHByb3Bl
cnR5IGJhY2sgaW50bw0KPiB3YXRjaGRvZyBub2RlDQo+IA0KPiBDQVVUSU9OOiBUaGlzIGVtYWls
IGNvbWVzIGZyb20gYSBub24gV2luZCBSaXZlciBlbWFpbCBhY2NvdW50IQ0KPiBEbyBub3QgY2xp
Y2sgbGlua3Mgb3Igb3BlbiBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6ZSB0aGUgc2Vu
ZGVyIGFuZA0KPiBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQo+IA0KPiBPbiBGcmksIE1heSAz
MCwgMjAyNSBhdCAwMjoxMjoyMEFNICswMDAwLCBMaSwgTWVuZyB3cm90ZToNCj4gPg0KPiA+DQo+
ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogRnJhbmsgTGkgPEZy
YW5rLmxpQG54cC5jb20+DQo+ID4gPiBTZW50OiBGcmlkYXksIE1heSAzMCwgMjAyNSAxMjowNSBB
TQ0KPiA+ID4gVG86IExpLCBNZW5nIDxNZW5nLkxpQHdpbmRyaXZlci5jb20+DQo+ID4gPiBDYzog
Um9iIEhlcnJpbmcgKEFybSkgPHJvYmhAa2VybmVsLm9yZz47IGRldmljZXRyZWVAdmdlci5rZXJu
ZWwub3JnOw0KPiA+ID4gc2hhd25ndW9Aa2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIua2Vy
bmVsLm9yZzsgbGludXgtYXJtLQ0KPiA+ID4ga2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGNv
bm9yK2R0QGtlcm5lbC5vcmcNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGFyY2g6IGFybTY0
OiBkdHM6IGFkZCBiaWctZW5kaWFuIHByb3BlcnR5IGJhY2sNCj4gPiA+IGludG8gd2F0Y2hkb2cg
bm9kZQ0KPiA+ID4NCj4gPiA+IENBVVRJT046IFRoaXMgZW1haWwgY29tZXMgZnJvbSBhIG5vbiBX
aW5kIFJpdmVyIGVtYWlsIGFjY291bnQhDQo+ID4gPiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3Bl
biBhdHRhY2htZW50cyB1bmxlc3MgeW91IHJlY29nbml6ZSB0aGUNCj4gPiA+IHNlbmRlciBhbmQg
a25vdyB0aGUgY29udGVudCBpcyBzYWZlLg0KPiA+ID4NCj4gPiA+IE9uIFRodSwgTWF5IDI5LCAy
MDI1IGF0IDA0OjA3OjI3QU0gKzAwMDAsIExpLCBNZW5nIHdyb3RlOg0KPiA+ID4gPiBIaSBGcmFu
aywNCj4gPiA+ID4NCj4gPiA+ID4gRG8geW91IGhhdmUgYW55IHN1Z2dlc3Rpb25zIGZvciB0aGlz
IGlzc3VlPw0KPiA+ID4gPiBDb3VsZCB5b3UgcGxlYXNlIGhlbHAgY2hlY2sgd2hldGhlciB3ZSBu
ZWVkIHRvIGZpeCB0aGlzIGlzc3VlPw0KPiA+ID4NCj4gPiA+IEZpeCBiaW5kaW5nIGRvYw0KPiA+
ID4NCj4gPiA+IGRpZmYgLS1naXQNCj4gPiA+IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL3dhdGNoZG9nL2ZzbC1pbXgtd2R0LnlhbWwNCj4gPiA+IGIvRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2ZzbC1pbXgtd2R0LnlhbWwNCj4gPiA+IGluZGV4
IDBkYTk1M2NiNzEyNzIuLjgwMDZlZmI2OWVjNzEgMTAwNjQ0DQo+ID4gPiAtLS0gYS9Eb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZnNsLWlteC13ZHQueWFtbA0KPiA+
ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2ZzbC1p
bXgtd2R0LnlhbWwNCj4gPiA+IEBAIC0zNiw2ICszNiw3IEBAIHByb3BlcnRpZXM6DQo+ID4gPiAg
ICAgICAgICAgICAgICAtIGZzbCxpbXg4bXEtd2R0DQo+ID4gPiAgICAgICAgICAgICAgICAtIGZz
bCxsczEwMTJhLXdkdA0KPiA+ID4gICAgICAgICAgICAgICAgLSBmc2wsbHMxMDQzYS13ZHQNCj4g
PiA+ICsgICAgICAgICAgICAgIC0gZnNsLGxzMTA0NmEtd2R0DQo+ID4gPiAgICAgICAgICAgICAg
ICAtIGZzbCx2ZjYxMC13ZHQNCj4gPiA+ICAgICAgICAgICAgLSBjb25zdDogZnNsLGlteDIxLXdk
dA0KPiA+ID4NCj4gPiA+IEBAIC0xMDMsNiArMTA0LDcgQEAgYWxsT2Y6DQo+ID4gPiAgICAgICAg
ICAgICAgICBlbnVtOg0KPiA+ID4gICAgICAgICAgICAgICAgICAtIGZzbCxsczEwMTJhLXdkdA0K
PiA+ID4gICAgICAgICAgICAgICAgICAtIGZzbCxsczEwNDNhLXdkdA0KPiA+ID4gKyAgICAgICAg
ICAgICAgICAtIGZzbCxsczEwNDZhLXdkdA0KPiA+ID4NCj4gPiA+IGZpeCBkdHNpDQo+ID4gPg0K
PiA+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEw
NDZhLmR0c2kNCj4gPiA+IGIvYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA0
NmEuZHRzaQ0KPiA+ID4gaW5kZXggMGJhZjI1NmI0NDAwMy4uMDk2ZWQ4MWE5YmM0ZCAxMDA2NDQN
Cj4gPiA+IC0tLSBhL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwNDZhLmR0
c2kNCj4gPiA+ICsrKyBiL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwNDZh
LmR0c2kNCj4gPiA+IEBAIC02ODcsNyArNjg3LDcgQEAgbHB1YXJ0NTogc2VyaWFsQDI5YTAwMDAg
ew0KPiA+ID4gICAgICAgICAgICAgICAgIH07DQo+ID4gPg0KPiA+ID4gICAgICAgICAgICAgICAg
IHdkb2cwOiB3YXRjaGRvZ0AyYWQwMDAwIHsNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAg
IGNvbXBhdGlibGUgPSAiZnNsLGlteDIxLXdkdCI7DQo+ID4gPiArICAgICAgICAgICAgICAgICAg
ICAgICBjb21wYXRpYmxlID0gImZzbCxsczEwNDZhLXdkdCIsDQo+ID4gPiArICJmc2wsaW14MjEt
d2R0IjsNCj4gPiA+DQo+ID4gPg0KPiA+DQo+ID4gSSBoYXZlIGEgcXVlc3Rpb24uDQo+ID4gSSBj
aGVja2VkIHRoZSBjb2RlIG9mIC4vZHJpdmVycy93YXRjaGRvZy9pbXgyX3dkdC5jLCB0aGVyZSBp
cyBiZWxvdw0KPiA+IGl0ZW0gaW14Ml93ZHRfZHRfaWRzW10geyAuY29tcGF0aWJsZSA9ICJmc2ws
bHMxMDQzYS13ZHQiLCAuZGF0YSA9DQo+ID4gJmlteF93ZHRfbGVnYWN5IH0sIERvIHlvdSB0aGlu
ayB3ZSBhbHNvIG5lZWQgdG8gYWRkIGFub3RoZXIgYmVsb3cgaXRlbQ0KPiBmb3IgbHMxMDQ2Pw0K
PiANCj4geyAuY29tcGF0aWJsZSA9ICJmc2wsaW14MjEtd2R0IiwgLmRhdGEgPSAmaW14X3dkdF9s
ZWdhY3kgfSwgaXQgaXMgZW5vdWdoIGJ5IHVzZQ0KPiBmYWxsYmFjayBmc2wsaW14MjEtd2R0Lg0K
PiANCj4gPiB7IC5jb21wYXRpYmxlID0gImZzbCxsczEwNDZhLXdkdCIsIC5kYXRhID0gJmlteF93
ZHRfbGVnYWN5IH0sDQo+ID4NCj4gPiBBbm90aGVyIHF1ZXN0aW9uDQo+ID4gSSBhbHNvIGNoZWNr
ZWQgdGhlIGNvZGUNCj4gPiAuL2FyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEw
NDNhLmR0c2ksIGFuZCBJIGZvdW5kIG91dA0KPiA+IGJlbG93IGl0ZW0gaW4gd2F0Y2hkb2dAMmFk
MDAwMCBub2RlIGNvbXBhdGlibGUgPSAiZnNsLGxzMTA0M2Etd2R0IiwNCj4gPiAiZnNsLGlteDIx
LXdkdCI7IGJ1dCBpbiBpbXgyX3dkdF9kdF9pZHNbXSwgdGhlcmUgaXMgYWxzbyB0aGUgYmVsb3cN
Cj4gPiBpdGVtLCBpdCBhbHNvIGNhbiBzdXBwb3J0IHRoZSBsczEwNDNhIGFuZCBsczEwNDZhIHBs
YXRmb3JtcyB7IC5jb21wYXRpYmxlID0NCj4gImZzbCxpbXgyMS13ZHQiLCAuZGF0YSA9ICZpbXhf
d2R0X2xlZ2FjeSB9LCBTbywgSSB0aGluayBtYXliZSB3ZSBjYW4gcmVtb3ZlDQo+IHRoZSB7IC5j
b21wYXRpYmxlID0gImZzbCxsczEwNDNhLXdkdCIsIC5kYXRhID0gJmlteF93ZHRfbGVnYWN5IH0u
DQo+IA0KPiBZZXMsIGJ1dCBub3QgbmVzc2VzYXJ5IHRvIGRvIHRoYXQuIGxlYXZlIGl0IGFzIGl0
Lg0KPiANCj4gPg0KPiA+IEJhc2VkIG9uIGFib3ZlIGRlc2NyaXB0aW9uLCB0aGVyZSBhcmUgMiBz
b2x1dGlvbnMsIGFkZCB7IC5jb21wYXRpYmxlID0NCj4gImZzbCxsczEwNDZhLXdkdCIsIC5kYXRh
ID0gJmlteF93ZHRfbGVnYWN5IH0sIG9yIHJlbW92ZSB7IC5jb21wYXRpYmxlID0NCj4gImZzbCxs
czEwNDNhLXdkdCIsIC5kYXRhID0gJmlteF93ZHRfbGVnYWN5IH0uDQo+ID4gV2hhdCBpcyB5b3Vy
IHN1Z2dlc3Rpb27vvJ8NCj4gDQo+IGxlYXZlIGRyaXZlciBjb2RlIHVuY2hhbmdlLiB0aGUgY3Vy
cmVudCBkcml2ZXIgY2FuIHdvcmsuDQo+IA0KDQpPayEgR290IGl0Lg0KSSBoYXZlIHNlbnQgdjIg
cGF0Y2ggcmV2aWV3Lg0KDQpUaGFua3MsDQpMaW1lbmcNCg0KPiBGcmFuaw0KPiANCj4gPg0KPiA+
IFRoYW5rcywNCj4gPiBMSW1lbmcNCj4gPg0KPiA+DQo+ID4NCj4gPiA+IEZyYW5rDQo+ID4gPiA+
DQo+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gTEltZW5nDQo+ID4gPiA+DQo+ID4gPiA+ID4gLS0t
LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiBGcm9tOiBSb2IgSGVycmluZyAoQXJt
KSA8cm9iaEBrZXJuZWwub3JnPg0KPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDI4LCAy
MDI1IDg6MzcgUE0NCj4gPiA+ID4gPiBUbzogTGksIE1lbmcgPE1lbmcuTGlAd2luZHJpdmVyLmNv
bT4NCj4gPiA+ID4gPiBDYzogZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IHNoYXduZ3VvQGtl
cm5lbC5vcmc7IGxpbnV4LQ0KPiA+ID4gPiA+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IEZyYW5r
LkxpQG54cC5jb207IGxpbnV4LWFybS0NCj4gPiA+ID4gPiBrZXJuZWxAbGlzdHMuaW5mcmFkZWFk
Lm9yZzsgY29ub3IrZHRAa2VybmVsLm9yZzsgTGksIE1lbmcNCj4gPiA+ID4gPiA8TWVuZy5MaUB3
aW5kcml2ZXIuY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIGFyY2g6IGFybTY0
OiBkdHM6IGFkZCBiaWctZW5kaWFuIHByb3BlcnR5DQo+ID4gPiA+ID4gYmFjayBpbnRvIHdhdGNo
ZG9nIG5vZGUNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IENBVVRJT046IFRoaXMgZW1haWwgY29tZXMg
ZnJvbSBhIG5vbiBXaW5kIFJpdmVyIGVtYWlsIGFjY291bnQhDQo+ID4gPiA+ID4gRG8gbm90IGNs
aWNrIGxpbmtzIG9yIG9wZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSByZWNvZ25pemUgdGhlDQo+
ID4gPiA+ID4gc2VuZGVyIGFuZCBrbm93IHRoZSBjb250ZW50IGlzIHNhZmUuDQo+ID4gPiA+ID4N
Cj4gPiA+ID4gPiBPbiBXZWQsIDI4IE1heSAyMDI1IDE5OjE3OjUxICswODAwLCBNZW5nIExpIHdy
b3RlOg0KPiA+ID4gPiA+ID4gV2hlbiB2ZXJpZnlpbmcgd2F0Y2hkb2cgZmVhdHVyZSBvbiBOWFAg
bHMxMDQ2YXJkYiBib2FyZCwgaXQNCj4gPiA+ID4gPiA+IGRvZXNuJ3Qgd29yay4gQmVjYXVzZSB0
aGUgYmlnLWVuZGlhbiBpcyBkZWxldGVkIGJ5IGFjY2lkZW50LCBhZGQgaXQNCj4gYmFjay4NCj4g
PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBGaXhlczogN2M4ZmZjNTU1NWNiICgiYXJtNjQ6IGR0czog
bGF5ZXJzY2FwZTogcmVtb3ZlDQo+ID4gPiA+ID4gPiBiaWctZW5kaWFuIGZvciBtbWMgbm9kZXMi
KQ0KPiA+ID4gPiA+ID4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+ID4gPiA+IFNp
Z25lZC1vZmYtYnk6IE1lbmcgTGkgPE1lbmcuTGlAd2luZHJpdmVyLmNvbT4NCj4gPiA+ID4gPiA+
IC0tLQ0KPiA+ID4gPiA+ID4gIGFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEw
NDZhLmR0c2kgfCAxICsNCj4gPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o
KykNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE15IGJvdCBm
b3VuZCBuZXcgRFRCIHdhcm5pbmdzIG9uIHRoZSAuZHRzIGZpbGVzIGFkZGVkIG9yIGNoYW5nZWQN
Cj4gPiA+ID4gPiBpbiB0aGlzIHNlcmllcy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNvbWUgd2Fy
bmluZ3MgbWF5IGJlIGZyb20gYW4gZXhpc3RpbmcgU29DIC5kdHNpLiBPciBwZXJoYXBzIHRoZQ0K
PiA+ID4gPiA+IHdhcm5pbmdzIGFyZSBmaXhlZCBieSBhbm90aGVyIHNlcmllcy4gVWx0aW1hdGVs
eSwgaXQgaXMgdXAgdG8NCj4gPiA+ID4gPiB0aGUgcGxhdGZvcm0gbWFpbnRhaW5lciB3aGV0aGVy
IHRoZXNlIHdhcm5pbmdzIGFyZSBhY2NlcHRhYmxlIG9yDQo+ID4gPiA+ID4gbm90LiBObyBuZWVk
IHRvIHJlcGx5IHVubGVzcyB0aGUgcGxhdGZvcm0gbWFpbnRhaW5lciBoYXMgY29tbWVudHMuDQo+
ID4gPiA+ID4NCj4gPiA+ID4gPiBJZiB5b3UgYWxyZWFkeSByYW4gRFQgY2hlY2tzIGFuZCBkaWRu
J3Qgc2VlIHRoZXNlIGVycm9yKHMpLCB0aGVuDQo+ID4gPiA+ID4gbWFrZSBzdXJlIGR0LSBzY2hl
bWEgaXMgdXAgdG8gZGF0ZToNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgcGlwMyBpbnN0YWxsIGR0
c2NoZW1hIC0tdXBncmFkZQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGlzIHBh
dGNoIHNlcmllcyB3YXMgYXBwbGllZCAodXNpbmcgYjQpIHRvIGJhc2U6DQo+ID4gPiA+ID4gIEJh
c2U6IGF0dGVtcHRpbmcgdG8gZ3Vlc3MgYmFzZS1jb21taXQuLi4NCj4gPiA+ID4gPiAgQmFzZTog
ZmFpbGVkIHRvIGd1ZXNzIGJhc2UNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IElmIHRoaXMgaXMgbm90
IHRoZSBjb3JyZWN0IGJhc2UsIHBsZWFzZSBhZGQgJ2Jhc2UtY29tbWl0JyB0YWcNCj4gPiA+ID4g
PiAob3IgdXNlIGI0IHdoaWNoIGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5KQ0KPiA+ID4gPiA+DQo+
ID4gPiA+ID4gTmV3IHdhcm5pbmdzIHJ1bm5pbmcgJ21ha2UgQ0hFQ0tfRFRCUz15IGZvcg0KPiA+
ID4gPiA+IGFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlLycgZm9yIDIwMjUwNTI4MTExNzUx
LjM1MDUyMjQtMS0NCj4gPiA+ID4gPiBNZW5nLkxpQHdpbmRyaXZlci5jb206DQo+ID4gPiA+ID4N
Cj4gPiA+ID4gPiBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDQ2YS1xZHMu
ZHRiOg0KPiA+ID4gPiA+IHdhdGNoZG9nQDJhZDAwMDANCj4gPiA+ID4gPiAoZnNsLGlteDIxLXdk
dCk6IGJpZy1lbmRpYW46IEZhbHNlIHNjaGVtYSBkb2VzIG5vdCBhbGxvdyBUcnVlDQo+ID4gPiA+
ID4gICAgICAgICBmcm9tIHNjaGVtYSAkaWQ6DQo+ID4gPiA+ID4gaHR0cDovL2RldmljZXRyZWUu
b3JnL3NjaGVtYXMvd2F0Y2hkb2cvZnNsLWlteC0NCj4gPiA+ID4gPiB3ZHQueWFtbCMNCj4gPiA+
ID4gPiBhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDQ2YS1mcnd5LmR0YjoN
Cj4gPiA+IHdhdGNoZG9nQDJhZDAwMDANCj4gPiA+ID4gPiAoZnNsLGlteDIxLXdkdCk6IGJpZy1l
bmRpYW46IEZhbHNlIHNjaGVtYSBkb2VzIG5vdCBhbGxvdyBUcnVlDQo+ID4gPiA+ID4gICAgICAg
ICBmcm9tIHNjaGVtYSAkaWQ6DQo+ID4gPiA+ID4gaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVt
YXMvd2F0Y2hkb2cvZnNsLWlteC0NCj4gPiA+ID4gPiB3ZHQueWFtbCMNCj4gPiA+ID4gPiBhcmNo
L2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDQ2YS1yZGIuZHRiOg0KPiA+ID4gPiA+
IHdhdGNoZG9nQDJhZDAwMDANCj4gPiA+ID4gPiAoZnNsLGlteDIxLXdkdCk6IGJpZy1lbmRpYW46
IEZhbHNlIHNjaGVtYSBkb2VzIG5vdCBhbGxvdyBUcnVlDQo+ID4gPiA+ID4gICAgICAgICBmcm9t
IHNjaGVtYSAkaWQ6DQo+ID4gPiA+ID4gaHR0cDovL2RldmljZXRyZWUub3JnL3NjaGVtYXMvd2F0
Y2hkb2cvZnNsLWlteC0NCj4gPiA+ID4gPiB3ZHQueWFtbCMNCj4gPiA+ID4gPiBhcmNoL2FybTY0
L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDQ2YS10cW1sczEwNDZhLQ0KPiBtYmxzMTB4eGEu
ZHRiOg0KPiA+ID4gPiA+IHdhdGNoZG9nQDJhZDAwMDAgKGZzbCxpbXgyMS13ZHQpOiBiaWctZW5k
aWFuOiBGYWxzZSBzY2hlbWEgZG9lcw0KPiA+ID4gPiA+IG5vdCBhbGxvdyBUcnVlDQo+ID4gPiA+
ID4gICAgICAgICBmcm9tIHNjaGVtYSAkaWQ6DQo+ID4gPiA+ID4gaHR0cDovL2RldmljZXRyZWUu
b3JnL3NjaGVtYXMvd2F0Y2hkb2cvZnNsLWlteC0NCj4gPiA+ID4gPiB3ZHQueWFtbCMNCj4gPiA+
ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPg0K


Return-Path: <linux-kernel+bounces-669024-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5728E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:16:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id EB1A24A5788
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:16:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BB887238C1F;
Sat, 31 May 2025 09:16:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="BG2WZ1dD"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 E6D581E519;
Sat, 31 May 2025 09:16:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748683009; cv=none; b=K5nff6htzvSl3H2PilN71OxsDyxIAuDo8GjGZOcu0gn23nnC+vIRfp0+gM82C7j04NeI42uLDZ5L+LQQWHzDV+s/Vwn49zOJvBtnYHKj3MP61341GD4s7du2jbL1arYdrevkUFJmNchkOapntzraY3kJDXKsAdslros7IZHCtRo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748683009; c=relaxed/simple;
bh=Nf9MPw+KHk4DbwHqcnlemdN1bMsyhVPmR+H46ueSbgk=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=T2BIKtXdv6Z+APXEsqR5jTcqrjDSCDUQzCL0FDCFyft9ZTKjlBoRuaoIqIJHpcexrzTo9EpErb9c45v7jMFF1Gwd50ebW7Hm7nOLASgTgFqAU+faPwWlFCLqTvrqm83geOD0KobB9QXdJMKiEkpGECG8XF0yaGEi6Iv6PqhXZC0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=BG2WZ1dD; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748683004;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=9e3ygM0jvmbE7HN2UFSQMTGTErfuZibV4CLp7vHuGEQ=;
b=BG2WZ1dD60ya0pAVPh+hdPXtTSW+DJ4yKrJtAXxJv5VB6kZTanThoKpm6xzDr05NLAd50i
3sEQhHzXjCdJf3EXt6eG7jggwjYcirULko5Bavrq5loJU0hN/bURHq3QqE2Xq2c25ZBD73
muErhrW/N+D390ue3h/ns6qNrrb33ac=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject:
Re: [PATCH batadv 2/5] batman-adv: only create hardif while a netdev is part
of a mesh
Date: Sat, 31 May 2025 11:16:30 +0200
Message-ID: <7760123.MhkbZ0Pkbq@sven-desktop>
In-Reply-To:
<e311c7d643fa1a7d13f2b518f6ee525eb6711f6c.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<e311c7d643fa1a7d13f2b518f6ee525eb6711f6c.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart3532761.VLH7GnMWUR";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart3532761.VLH7GnMWUR
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 11:16:30 +0200
Message-ID: <7760123.MhkbZ0Pkbq@sven-desktop>
MIME-Version: 1.0

On Monday, 19 May 2025 22:46:29 CEST Matthias Schiffer wrote:
> @@ -734,9 +768,6 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
> if (ret < 0)
> goto err_upper;
>
> - hard_iface->if_status = BATADV_IF_INACTIVE;
> -
> - kref_get(&hard_iface->refcount);
> hard_iface->batman_adv_ptype.type = ethertype;
> hard_iface->batman_adv_ptype.func = batadv_batman_skb_recv

This is confusing. You remove the reference for the batman_adv_ptype but kept
the `batadv_hardif_put(hard_iface);` after
`dev_remove_pack(&hard_iface->batman_adv_ptype);`.

I think this should be added again and instead following code should receive a
`batadv_hardif_put(hard_iface);` after the `list_del_rcu(&hard_iface->list);`:


> @@ -818,11 +849,16 @@ void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface)
> struct batadv_priv *bat_priv = netdev_priv(hard_iface->mesh_iface);
> struct batadv_hard_iface *primary_if = NULL;
>
> + ASSERT_RTNL();
> +
> batadv_hardif_deactivate_interface(hard_iface);
>
> if (hard_iface->if_status != BATADV_IF_INACTIVE)
> goto out;
>
> + list_del_rcu(&hard_iface->list);
> + batadv_hardif_generation++;
> +
> batadv_info(hard_iface->mesh_iface, "Removing interface: %s\n",
> hard_iface->net_dev->name);
> dev_remove_pack(&hard_iface->batman_adv_ptype);


And yes, this means that this needs to be removed in PATCH 3 again - together
with the `kref_get` from this chunk (from PATCH 3):

On Monday, 19 May 2025 22:46:31 CEST Matthias Schiffer wrote:
> @@ -738,8 +735,6 @@ int batadv_hardif_enable_interface(struct net_device *net_dev,
> batadv_v_hardif_init(hard_iface);
>
> kref_get(&hard_iface->refcount);
> - list_add_tail_rcu(&hard_iface->list, &batadv_hardif_list);
> - batadv_hardif_generation++;
>
> hardif_mtu = READ_ONCE(hard_iface->net_dev->mtu);
> required_mtu = READ_ONCE(mesh_iface->mtu) + max_header_len;



Just a question about this part (you don't really need to change it - I am
just interested). Why did you move this MTU check to such a late position in
the code?

> - hardif_mtu = READ_ONCE(hard_iface->net_dev->mtu);
> - required_mtu = READ_ONCE(mesh_iface->mtu) + max_header_len;
> + ASSERT_RTNL();
>
> - if (hardif_mtu < ETH_MIN_MTU + max_header_len)
> + if (!batadv_is_valid_iface(net_dev))
> return -EINVAL;
>
[...]
> + hard_iface = kzalloc(sizeof(*hard_iface), GFP_ATOMIC);
> + if (!hard_iface)
> + return -ENOMEM;
> +
> + netdev_hold(net_dev, &hard_iface->dev_tracker, GFP_ATOMIC);
> + hard_iface->net_dev = net_dev;
[...]
> + hardif_mtu = READ_ONCE(hard_iface->net_dev->mtu);
> + required_mtu = READ_ONCE(mesh_iface->mtu) + max_header_len;
> +
> + if (hardif_mtu < ETH_MIN_MTU + max_header_len) {
> + ret = -EINVAL;
> + goto err_put;
> + }

It made the error handling more complicated. And at the moment, I don't see
the reason. For me, It would have been been more logical to just a a minimal
invasive change like:

> - hardif_mtu = READ_ONCE(hard_iface->net_dev->mtu);
> + hardif_mtu = READ_ONCE(net_dev->mtu);



Thanks,
Sven

--nextPart3532761.VLH7GnMWUR
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDrI7gAKCRBND3cr0xT1
y07YAQDVyR/OScCqmjK6581lF8hCs9w6rB6o2vV6IV6R7NCsTQD9H6y3oePiuHOj
BvPM8kV+xcZ3a+jPr3egHm+0AQ4K5wg=
=9jGN
-----END PGP SIGNATURE-----

--nextPart3532761.VLH7GnMWUR--





Return-Path: <linux-kernel+bounces-669025-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 586FA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:18:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 2BE4A7B324F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:17:18 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EBA42238C36;
Sat, 31 May 2025 09:18:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="a/98SsFD"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 5621921FF22;
Sat, 31 May 2025 09:18:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748683107; cv=none; b=FaxN5NWFpf/enR5JhpoBgAT2QzB+OFgwMSrqvLP2QjD158s3JsnSXwlv91+SmVXvi+3NparIQFWtjUGy0TxeNTxAf0knw6M5KkAR4fITqguceVvOgYG6C1OIaoyCiU1MF61CKcquHEMi3e1/kqDoXpueqdLjZlGnOTd+oXu/K2o=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748683107; c=relaxed/simple;
bh=iWr0zkYv1wNHDiLMVdxrVbj3HpclaXjmHLi03DGv0tE=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=Lk8HbG4njSo+v1VuwQ4GYpIBr37aiGkCx1K/hbyLTOj/nl9R7CkLjdRA7CJZ6GF1LK5/HsyC0K/4sjRYdSqr3TpqRfbyInoHpdhn251JtqToPSR0shPUw0k3HgjzJtmBVtsGWcd7Yr0CE430kznyX1UsIfOxzP7QcjoK1Bo0icM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=a/98SsFD; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748683102;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=rQNzauAFKXYmmu3TktHsj7RSHhKaZTHxe8GsYvpuUP4=;
b=a/98SsFD5kXArAHzvHH8VpBQbRoH+MSrN4n6w4o6J67jYoailA6AHGxLcCKYxou7iDgZ2O
0TzCaG0awMXwf2X/17bBycrRHvcvjhTTnaNSufzqQIU19ro+mAK8ynzwtGzrwipXuJLIyv
yYiDma7+42C8gKY4zuQoEyfQixTLibk=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Subject:
Re: [PATCH batadv 3/5] batman-adv: remove BATADV_IF_NOT_IN_USE hardif state
Date: Sat, 31 May 2025 11:18:19 +0200
Message-ID: <3730915.usQuhbGJ8B@sven-desktop>
In-Reply-To:
<18929b62aafd4ce02940bea02b7a2bf6c5661089.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<18929b62aafd4ce02940bea02b7a2bf6c5661089.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart5256341.QJadu78ljV";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart5256341.QJadu78ljV
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 11:18:19 +0200
Message-ID: <3730915.usQuhbGJ8B@sven-desktop>
MIME-Version: 1.0

On Monday, 19 May 2025 22:46:30 CEST Matthias Schiffer wrote:
> With hardifs only existing while an interface is part of a mesh, the
> BATADV_IF_NOT_IN_USE state has become redundant.
>
> Signed-off-by: Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
> ---
> net/batman-adv/bat_iv_ogm.c | 3 +--
> net/batman-adv/bat_v_elp.c | 3 +--
> net/batman-adv/hard-interface.c | 9 ---------
> net/batman-adv/hard-interface.h | 6 ------
> net/batman-adv/originator.c | 4 ----
> 5 files changed, 2 insertions(+), 23 deletions(-)

Acked-by: Sven Eckelmann <sven@xxxxxxxxxxxxx>

Thanks,
Sven
--nextPart5256341.QJadu78ljV
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDrJWwAKCRBND3cr0xT1
y04gAPwMoJas4EzdQIDr04VKE1UCLzkUwpr53WaxvHRdT5BJDQD/fgj+8WPsYSSM
FX7YY8MrPBQD/KKyq+M4ZdC2rfVpkws=
=odll
-----END PGP SIGNATURE-----

--nextPart5256341.QJadu78ljV--





Return-Path: <linux-kernel+bounces-669026-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9ACAF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:21:23 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B8C914A56BC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:21:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 00501238C3A;
Sat, 31 May 2025 09:21:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (4096-bit key) header.d=alien8.de header.i=@alien8.de header.b="Eabi1BoP"
Received: from mail.alien8.de (mail.alien8.de [65.109.113.108])
(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 971708479;
Sat, 31 May 2025 09:21:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=65.109.113.108
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748683277; cv=none; b=rst5PfSz2wWAc0F7nz0RcXbkLjiNlH9vPZcdPzszznyhFDHz/qkaWVJ6/2hBAiK8Ft4whPxy9YVp6CcCrZEw5EQoXxh/rV6elKjmy7SjfaUwr/j2tT413BaFzdPD5bf1+HP2WZTkvoJ/T0UXbDfw1WhZTb38Ojev6nCvInLDh2w=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748683277; c=relaxed/simple;
bh=2cKWC+jp3T+h4rEeMC3I3qwW+MyoPZ9M8l6BinJBIvw=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=cpqK7YW63sWocy7wGnS/2OT7Yf4VmJ77ScXGBpxKDiUh7ELyGEzxwYwyKM3lHNiOg9gyhuPHTmWHc+PUW9ApxYyuPMfxgVehdIBEuI36zrN9UgXqRaEVeEKOYa/ghnf+DZUSHTiMVYo7qVjVbX9M6hekU+SoGGjkYkZ5dIiEqpU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=alien8.de; spf=pass smtp.mailfrom=alien8.de; dkim=pass (4096-bit key) header.d=alien8.de header.i=@alien8.de header.b=Eabi1BoP; arc=none smtp.client-ip=65.109.113.108
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=alien8.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=alien8.de
Received: from localhost (localhost.localdomain [127.0.0.1])
by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTP id 4E00A40E01B0;
Sat, 31 May 2025 09:21:11 +0000 (UTC)
X-Virus-Scanned: Debian amavisd-new at mail.alien8.de
Authentication-Results: mail.alien8.de (amavisd-new); dkim=pass (4096-bit key)
header.d=alien8.de
Received: from mail.alien8.de ([127.0.0.1])
by localhost (mail.alien8.de [127.0.0.1]) (amavisd-new, port 10026)
with ESMTP id C7FoGxDnSMSc; Sat, 31 May 2025 09:21:07 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=alien8;
t=1748683267; bh=hPncIQfmkOc9jGoevaB6tq3hVWi4s4eLHLj2UZams40=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=Eabi1BoPz0FpYimj5i2YRLX7/2E9Xtq4U8idvjkw8cbbHC0QwCeVLC7UgwkOPqnrm
0h+//cn/exUzXZSWpM6G/fpg7oFOAmc0GAs7JTWvdmzlWzADSxEsLJI8ok5Fk2HJRw
5Rpo3sHvt/JXvJPSGWSBt9udWuIwRDLhPqKoXbtdmqPAmxO2oqOQ9SpK8W1Jb8pk8W
BYr+pOMAoOQ2lTTtH10C+ZRdbLq2Vtssb8Ds1QiACiU4e9ZFxay1MYuCwuz7ol0pl2
RL31ECgAhjjngJ7Gijo93stVn546NZ3IIaB1JilP1tVqn0KWeQcJjkd+1bsa007mmI
tVSF2U0G2vZ56jU4NfSNe3yeFJOm/YV0Qr0+hEHO6HdKEdye+1fG/8MZmex8h8tlU2
oXvMwiY5OugDmUvM51P++Z/OJlKICZ0UY14K5ANqrGEWZco2/fSIa/ZmQBSRtRJ4L/
XJZ+PeuPV2tiyl7txx6dcBton+J+UDKMPplCCkW8m/8Ui3IkqOHt5h1/vlB0xpPSw7
DRlIKp5MPKDG6AsUYoAjHiK24YCnVhF6iDHYp6MIS198cYJS3roE85sxxlt81uDJcf
rxSkqL5J+q+kEe01zJi1ZWZM6JXsrxdLIl72r/LHrdSinNJk0rCrsK1yJe34JTobwF
g/MexLYzvAuNhvcpr6b/yhf4=
Received: from zn.tnic (p57969c58.dip0.t-ipconnect.de [87.150.156.88])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange ECDHE (P-256) server-signature ECDSA (P-256) server-digest SHA256)
(No client certificate requested)
by mail.alien8.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 32DF240E016A;
Sat, 31 May 2025 09:20:51 +0000 (UTC)
Date: Sat, 31 May 2025 11:20:50 +0200
From: Borislav Petkov <bp@xxxxxxxxx>
To: "Luck, Tony" <tony.luck@xxxxxxxxx>
Cc: Zaid Alali <zaidal@xxxxxxxxxxxxxxxxxxxxxx>, rafael@xxxxxxxxxx,
lenb@xxxxxxxxxx, james.morse@xxxxxxx, robert.moore@xxxxxxxxx,
Jonathan.Cameron@xxxxxxxxxx, ira.weiny@xxxxxxxxx,
Benjamin.Cheatham@xxxxxxx, dan.j.williams@xxxxxxxxx, arnd@xxxxxxxx,
Avadhut.Naik@xxxxxxx, john.allen@xxxxxxx,
linux-acpi@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
acpica-devel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v7 9/9] ACPI: APEI: EINJ: Update the documentation for
EINJv2 support
Message-ID: <20250531092050.GBaDrJ8iw7cNcpOKeA@fat_crate.local>
References: <20250506213814.2365788-1-zaidal@xxxxxxxxxxxxxxxxxxxxxx>
<20250506213814.2365788-10-zaidal@xxxxxxxxxxxxxxxxxxxxxx>
<20250530102711.GAaDmH_1O7lc6kuveY@fat_crate.local>
<aDoal24J-BMTIBCq@agluck-desk3>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <aDoal24J-BMTIBCq@agluck-desk3>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 01:52:39PM -0700, Luck, Tony wrote:
> Use case to inject to one device would be:
>
> # echo 1 > nr_components

What does that do?

The interface probably needs a little refinement, but...

> # echo 4 > component_id0
> # echo A5A5A5A5 > component_syndrome0
> ... set other files and finish with usual
> # echo 1 > error_inject
>
> There isn't a fancy "debugfs_create_x128_le()" helper to manage these
> 128-bit little endian numbers. So I've coded with the basic building
> blocks (though using copy_from_user() and copy_to_user() feels like
> back in the stone age). If there some helpers that I missed I'd be
> happy to see that part simplified.
>
> Patch is on top of the existing v7 set. Obviously it needs to be folded
> back into the earlier patches to make a clean history that doesn't add
> functions and then replace them with different code.

... yes, definitely much better.

Thanks!

--
Regards/Gruss,
Boris.

https://people.kernel.org/tglx/notes-about-netiquette


Return-Path: <linux-kernel+bounces-669027-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C5E4941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:22:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 52BD74A5CCB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:22:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8C896238D2B;
Sat, 31 May 2025 09:22:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="xE1048Mn"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 43C4D2CCC9;
Sat, 31 May 2025 09:22:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748683326; cv=none; b=RPPUJ3UfzmSpto3KMrIwIFpqlVko95D3kq09ChDhXsCioqbnO1lpFyerJ/hkUD6sGMOp477Z1bL1bI/5IccR8Vty70o0tOGoiJp0KOkbNT7tYfEa9hnMRdmWNagN9ZoP+0Ud5/Zcn2QqTJv4Bz0wBfskR+B+YwCtotOXmFajMFc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748683326; c=relaxed/simple;
bh=AdscRCctEiDVk+KrsLD7YZHALhZ8CgY98mZKJ9zDPeY=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=Sp4n7TsilUJInEmeZPSriIMahPBzOxZbsTj+l2rboaKk7hlrVY3txX+KHyvd7+4kgta7RCzmOJ+8dZHmZzl3SGwkdt30wI+8BoHL7q9Gs5UbeyWyS7VdKCAIaNMWptP5mzYMjnEzo2xotyke6NWZ8h8Bsgi95iEikiIVsANLhFM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=xE1048Mn; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748683322;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=j8v7hhYADUSDBALNMgGQ0eVg8nF9mMtO+msRRg6pCVQ=;
b=xE1048MnNYlE8NWyUEINeLcBKvFzOU3ZrUeJI91t1dMT8EufgIXw40OqgkALKjiomh5ZnQ
V7r0M8ACaKnWgOEQEw4JeoLD7fwgvB+hgLuiqmTwSO2IWrwdhKgupbbCeuuyNZtz8sTNUH
Z9k1AiJROhhvyqVaYuT9+L8Pkuc5JLc=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject:
Re: [PATCH batadv 2/5] batman-adv: only create hardif while a netdev is part
of a mesh
Date: Sat, 31 May 2025 11:21:59 +0200
Message-ID: <25663883.6Emhk5qWAg@sven-desktop>
In-Reply-To: <7760123.MhkbZ0Pkbq@sven-desktop>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<e311c7d643fa1a7d13f2b518f6ee525eb6711f6c.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<7760123.MhkbZ0Pkbq@sven-desktop>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart4362857.Lt9SDvczpP";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart4362857.Lt9SDvczpP
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 11:21:59 +0200
Message-ID: <25663883.6Emhk5qWAg@sven-desktop>
In-Reply-To: <7760123.MhkbZ0Pkbq@sven-desktop>
MIME-Version: 1.0

On Saturday, 31 May 2025 11:16:30 CEST Sven Eckelmann wrote:
> And yes, this means that this needs to be removed in PATCH 3 again - together
> with the `kref_get` from this chunk (from PATCH 3):


Sorry, I meant [PATCH batadv 4/5] batman-adv: remove global hardif list

Kind regards,
Sven
--nextPart4362857.Lt9SDvczpP
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDrKNwAKCRBND3cr0xT1
y/M0AP9g+BqAjjlxOI9kCnFV3nh+CKN2Ove7pEJWMkP87I5VgwEA5PqgyCOIwLh1
ubidCl1lIiLg5iFmDYyAEkgqy89H7AM=
=+h/T
-----END PGP SIGNATURE-----

--nextPart4362857.Lt9SDvczpP--





Return-Path: <linux-kernel+bounces-669028-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 73FFA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:25:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A0F614A6869
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:25:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9E833238D56;
Sat, 31 May 2025 09:25:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Fz1VZYlx"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 B63D61E520F;
Sat, 31 May 2025 09:25:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748683542; cv=none; b=cm4A25x1ecIIIPC9ObTKJKLPxQ0rfLpz5QyzdBVSyfyiWH0/Zilj4itvsk3HZ7tjHZhMCH1RZqAffoLMLsTa9YKdRz3+zXkgJulLZPZ0D9lattSC3Z8KtTpFcw0C+ijYCgm863KQ6/OahDI92aiOlGm7sbyLLq9PzMClZxmu3eo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748683542; c=relaxed/simple;
bh=gh1SR7miY5UdrONx8owoLj2CLoe9Kbv/kgJkX7nLA/I=;
h=Date:Content-Type:MIME-Version:From:Cc:To:In-Reply-To:References:
Message-Id:Subject; b=fNDdIwKigc8dtbPNd3k13Bgmt3bY3gPCdXaHHVWWEqrP9wWs/eLRN0JUOT1XxG6AUpG5dUxD+vtZkIQ6Qlzwe0uApSk9tRkDC26zJ7W04iR/n8huoGPeQ4pDbRCciMaVx+1G9UyYAxpcIdeqTxt3UiSmgbexsq4wiS2GjOFKjmM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Fz1VZYlx; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E6782C4CEE3;
Sat, 31 May 2025 09:25:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748683542;
bh=gh1SR7miY5UdrONx8owoLj2CLoe9Kbv/kgJkX7nLA/I=;
h=Date:From:Cc:To:In-Reply-To:References:Subject:From;
b=Fz1VZYlx0Intc+r890Ozgzaf+qe1xVhR5INS1LhDlYFJlulrWq6rlJHLwDnGeh4Bo
f2nOal6mWiMg/KEhhya/lJDPVWhLVOyWgW871COuLwHds/n1aSTF2BdtBTsU+5sO8D
teSlvChbpHfPwQjv60yx0aF0bvW3bhMFa7eFWNrUkwv4UN5dH/vej7nBuObWw6/Lt1
ceh/RHguDJeRDXmTdtiDFfw/VoQmdDIp3N0Geqtrydn7toPcinJwQ2vP47IMDNenSJ
iEqiagaD8b3BNvC9zAFciOHyfzxSQndYbHeTeSOGs7cu+l0TLec/7YRrDSdJyY41a0
+ov8tOVJGxNQg==
Date: Sat, 31 May 2025 04:25:39 -0500
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
From: "Rob Herring (Arm)" <robh@xxxxxxxxxx>
Cc: devicetree@xxxxxxxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, gregkh@xxxxxxxxxxxxxxxxxxx, arnd@xxxxxxxx
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
In-Reply-To: <20250531081159.2007319-2-abd.masalkhi@xxxxxxxxx>
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
<20250531081159.2007319-2-abd.masalkhi@xxxxxxxxx>
Message-Id: <174868353988.72600.7039743404673669325.robh@xxxxxxxxxx>
Subject: Re: [PATCH 1/3] dt-bindings: misc: Add binding for ST M24LR
control interface
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


On Sat, 31 May 2025 08:11:57 +0000, Abd-Alrhman Masalkhi wrote:
> Add a Device Tree binding for the STMicroelectronics M24LR series
> RFID/NFC EEPROM chips (e.g., M24LR04E-R), which support a separate
> I2C interface for control and configuration.
>
> This binding documents the control interface that is managed by
> a dedicated driver exposing sysfs attributes. The EEPROM memory
> interface is handled by the standard 'at24' driver and is
> represented as a child node in the Device Tree.
>
> Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
> ---
> .../devicetree/bindings/misc/st,m24lr.yaml | 70 +++++++++++++++++++
> 1 file changed, 70 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/misc/st,m24lr.yaml
>

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:
./Documentation/devicetree/bindings/misc/st,m24lr.yaml:25:11: [error] string value is redundantly quoted with any quotes (quoted-strings)
./Documentation/devicetree/bindings/misc/st,m24lr.yaml:30:5: [warning] wrong indentation: expected 6 but found 4 (indentation)
./Documentation/devicetree/bindings/misc/st,m24lr.yaml:70:4: [error] no new line character at the end of file (new-line-at-end-of-file)

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.yaml: maintainers:0: {'name': 'Abd-Alrhman Masalkhi', 'email': 'abd.masalkhi@xxxxxxxxx'} is not of type 'string'
from schema $id: http://devicetree.org/meta-schemas/base.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.yaml:
Error in referenced schema matching $id: http://devicetree.org/schemas/misc/i2c-mux.yaml
Tried these paths (check schema $id if path is wrong):
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/i2c-mux.yaml
/usr/local/lib/python3.11/dist-packages/dtschema/schemas/misc/i2c-mux.yaml
Documentation/devicetree/bindings/misc/st,m24lr.example.dts:21.13-26: Warning (reg_format): /example-0/i2c/m24lr@57:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (pci_device_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (simple_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/misc/st,m24lr.example.dts:18.13-35.11: Warning (i2c_bus_bridge): /example-0/i2c: incorrect #address-cells for I2C bus
Documentation/devicetree/bindings/misc/st,m24lr.example.dts:18.13-35.11: Warning (i2c_bus_bridge): /example-0/i2c: incorrect #size-cells for I2C bus
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (i2c_bus_reg): Failed prerequisite 'i2c_bus_bridge'
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/misc/st,m24lr.example.dts:19.20-34.13: Warning (avoid_default_addr_size): /example-0/i2c/m24lr@57: Relying on default #address-cells value
Documentation/devicetree/bindings/misc/st,m24lr.example.dts:19.20-34.13: Warning (avoid_default_addr_size): /example-0/i2c/m24lr@57: Relying on default #size-cells value
Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: Warning (unique_unit_address_if_enabled): Failed prerequisite 'avoid_default_addr_size'
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: m24lr@57 (st,m24lr04e-r): 'i2c-gate' does not match any of the regexes: '^pinctrl-[0-9]+$'
from schema $id: http://devicetree.org/schemas/misc/st,m24lr.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: m24lr@57 (st,m24lr04e-r): {'compatible': ['st,m24lr04e-r'], 'reg': [[87]], 'i2c-gate': {'#address-cells': 1, '#size-cells': 0, 'm24lr_eeprom@53': {'compatible': ['atmel,24c04'], 'reg': [[83]], 'address-width': 16, 'pagesize': 4}}, '$nodename': ['m24lr@57']} should not be valid under {'description': "Can't find referenced schema: http://devicetree.org/schemas/misc/i2c-mux.yaml#"}
from schema $id: http://devicetree.org/schemas/misc/st,m24lr.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: m24lr_eeprom@53 (atmel,24c04): $nodename:0: 'm24lr_eeprom@53' does not match '^eeprom@[0-9a-f]{1,2}$'
from schema $id: http://devicetree.org/schemas/eeprom/at24.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: m24lr_eeprom@53 (atmel,24c04): pagesize: 4 is not one of [1, 8, 16, 32, 64, 128, 256]
from schema $id: http://devicetree.org/schemas/eeprom/at24.yaml#
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/misc/st,m24lr.example.dtb: m24lr_eeprom@53 (atmel,24c04): Unevaluated properties are not allowed ('$nodename', 'pagesize' were unexpected)
from schema $id: http://devicetree.org/schemas/eeprom/at24.yaml#

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250531081159.2007319-2-abd.masalkhi@xxxxxxxxx

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.



Return-Path: <linux-kernel+bounces-669029-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C35C841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:38:05 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E7A5C189CF5D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:38:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0D6C123909F;
Sat, 31 May 2025 09:37:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="c3M4svPN"
Received: from lelvem-ot02.ext.ti.com (lelvem-ot02.ext.ti.com [198.47.23.235])
(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 61A1DEAD0;
Sat, 31 May 2025 09:37:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.23.235
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748684275; cv=none; b=QD4+JDTt+LvxxutB8s9SnZ98vExL8/Jo3MkxwXsfdVbdOGWrSVk+67zl7JwaBgVVT/M1lADWt/rIYgyMqJOdGXy2vWLPqaghhjzoiSVzVquoPmQ7NTKqcZIacczm3wWXiONvRxXXzvlyfSMGfPx9xwrAFfr/uZns9iSUexGCCrE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748684275; c=relaxed/simple;
bh=iYoiiZF3675d1cOL29QNB0MBlhtJ9YHSUGYiAeQGfuY=;
h=Message-ID:Date:MIME-Version:Subject:To:CC:References:From:
In-Reply-To:Content-Type; b=fmHH3tgarXXdGF/nvo1G23SKfdERjmFtasbrpvPAiLCKSGrtywjuFqDBbCNWrBmWY//BO7R0OE732DYwk1WKD6vkYB0wlY2SK5m+lbxeMHUwC8g6Pp7pZfao0Otzo2soiHk14OiUSpJNyVYTb+DYWD9WSgVqVdFORNamO7KAGAk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=c3M4svPN; arc=none smtp.client-ip=198.47.23.235
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com
Received: from fllvem-sh04.itg.ti.com ([10.64.41.54])
by lelvem-ot02.ext.ti.com (8.15.2/8.15.2) with ESMTP id 54V9bKUs2857327;
Sat, 31 May 2025 04:37:20 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com;
s=ti-com-17Q1; t=1748684240;
bh=YCcKjdVOPE9WOzG8bceQSsuc4dKtSsVhhPh6vA/1a2g=;
h=Date:Subject:To:CC:References:From:In-Reply-To;
b=c3M4svPNv/Svq3T8GOw8MFg7jOOkg2aAesUEjQWtoJEBv+DFpkRGCRkK0VNVE4ZSt
JTIRisJBwJITO1fdnrN0GII/v7HohiIOmQ7x7jOpfp4pzru/Rikr1lmGAOgSu8jQMj
h/508I1o80c235jqEi8bUROXyB6KmoLXKBkGhqnQ=
Received: from DFLE113.ent.ti.com (dfle113.ent.ti.com [10.64.6.34])
by fllvem-sh04.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 54V9bKSF1469677
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA256 bits=128 verify=FAIL);
Sat, 31 May 2025 04:37:20 -0500
Received: from DFLE115.ent.ti.com (10.64.6.36) by DFLE113.ent.ti.com
(10.64.6.34) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Sat, 31
May 2025 04:37:20 -0500
Received: from lelvem-mr05.itg.ti.com (10.180.75.9) by DFLE115.ent.ti.com
(10.64.6.36) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via
Frontend Transport; Sat, 31 May 2025 04:37:19 -0500
Received: from [10.250.148.85] ([10.250.148.85])
by lelvem-mr05.itg.ti.com (8.18.1/8.18.1) with ESMTP id 54V9bFxL146542;
Sat, 31 May 2025 04:37:16 -0500
Message-ID: <7024867d-91ac-40eb-b41f-eed811032f95@xxxxxx>
Date: Sat, 31 May 2025 15:07:14 +0530
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH v2 0/2] Extend mmio-mux driver to configure mux with
new DT property
To: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
CC: Conor Dooley <conor+dt@xxxxxxxxxx>,
Krzysztof Kozlowski
<krzk+dt@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>, Peter Rosin
<peda@xxxxxxxxxx>,
<s-vadapalli@xxxxxx>, <danishanwar@xxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>, <devicetree@xxxxxxxxxxxxxxx>,
Vignesh
Raghavendra <vigneshr@xxxxxx>, Nishanth Menon <nm@xxxxxx>,
Thomas Gleixner
<tglx@xxxxxxxxxxxxx>
References: <20250304102306.2977836-1-c-vankar@xxxxxx>
<f844e44e-6b71-442a-ae3c-7bbe74a908af@xxxxxx>
<2e80f6bc-2fb0-4f0d-9450-cbcf4dddca66@xxxxxx>
<2025053128-profound-importer-8436@gregkh>
Content-Language: en-US
From: "Vankar, Chintan" <c-vankar@xxxxxx>
In-Reply-To: <2025053128-profound-importer-8436@gregkh>
Content-Type: text/plain; charset="UTF-8"; format=flowed
Content-Transfer-Encoding: 7bit
X-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello Greg,

On 5/31/2025 11:22 AM, Greg Kroah-Hartman wrote:
> On Fri, May 30, 2025 at 10:35:24PM +0530, Vankar, Chintan wrote:
>> Hello Greg,
>>
>> I have tried to implement Timesync Router node to the suitable
>> Subsystems (Interrupt controller and Mux-controller). Thomas
>> has provided a feedback with a reason why Timesync Router is not
>> suitable for irqchip. But I didn't get a proper feedback for mux-
>> controller subsystem.
>
> What do you mean "proper feedback"?
>

By proper feedback, I meant, from the comments I was not able to figure
out whether Timesync Router will be acceptable in the "mux-controller"
subsystem or not.

>> Can you please help me deciding in which subsystem I should implement
>> it, if not mux-controller can it go in drivers/misc ?
>
> Why not mux? What's preventing that from happening? Why would misc be
> better?
>

Sure, if mux-controller subsystem is acceptable, I will implement the
Timesync Router with that and post a series.

I thought of misc, when mux-controller subsystem is not acceptable and I
could not find any other subsystem which is suitable for Timesync
Router.

Regards,
Chintan.

> thanks,
>
> greg k-h


Return-Path: <linux-kernel+bounces-669030-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2CECC41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:52:01 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 94B673B121C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:51:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B5D66239597;
Sat, 31 May 2025 09:51:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="T7kBy6U7"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 E1A2BBE5E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:51:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685115; cv=none; b=R6m82srqexxRcXmPji1atUILBT9eRWbC69WSPPtfbCVWXcbD8S0JRmgGx7vQYr6KrD9CJNi2ync2u/nh920DqdRRbzWThuLbo3n0qtY8vJlS23s8Qok+IJpV/BjA2Sq/5aWffYxMJRT+OHC0mgVY56O02jVnjgcd1gdStD4FuVQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685115; c=relaxed/simple;
bh=4DiOTn78rjZ6cFjchF613JePfpJ9oQFvNLTjXqBGvrw=;
h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=WF7WfyVe/3SGX4NERIQuV9NYo0b5ByHmebqofHOJNx08fABfzWqWPplNE3b3FCKrcKJadhv+A9D8dIonxfRNjL0MKNZyyxBASrRa6ZIKZp6NSYs/vQurGdK0YfVXLY3Mj7/VN2pRR/d2COjoRAlw5/75beH5u9pQwyWsxwrU9T4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=T7kBy6U7; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685111;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding;
bh=jJyUMglAGJzwPtxv28dkdLEq4lYUgcqEQo++4faeYEU=;
b=T7kBy6U7FDoe7uuD0gHx0Mn+cR5Gg+eYp/9J5CWPnJoRZIme14ZGpYP+oPPXDrNSCp/gkh
0i+UJ1aTuuuhzex7n7605OFQl5fKIc+Oue5oIvHcb2bEewTJWv9cj6jUMxk8vnyY9Gbdbe
es3JYNw/1d1+jSmnfYPCKBX+jmagD/Q=
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-204-_KqNT3NVM1WQp95UgT3aQA-1; Sat,
31 May 2025 05:51:49 -0400
X-MC-Unique: _KqNT3NVM1WQp95UgT3aQA-1
X-Mimecast-MFC-AGG-ID: _KqNT3NVM1WQp95UgT3aQA_1748685108
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 702E71800360;
Sat, 31 May 2025 09:51:48 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 23C03180049D;
Sat, 31 May 2025 09:51:43 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH v10 0/3] vhost: Add support of kthread API
Date: Sat, 31 May 2025 17:47:02 +0800
Message-ID: <20250531095135.159582-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

In commit 6e890c5d5021 ("vhost: use vhost_tasks for worker threads"),
the vhost now uses vhost_task and operates as a child of the
owner thread. This aligns with containerization principles.
However, this change has caused confusion for some legacy
userspace applications. Therefore, we are reintroducing
support for the kthread API.

In this series, a new UAPI is implemented to allow
userspace applications to configure their thread mode.

Changelog v2:
1. Change the module_param's name to enforce_inherit_owner, and the default value is true.
2. Change the UAPI's name to VHOST_SET_INHERIT_FROM_OWNER.

Changelog v3:
1. Change the module_param's name to inherit_owner_default, and the default value is true.
2. Add a structure for task function; the worker will select a different mode based on the value inherit_owner.
3. device will have their own inherit_owner in struct vhost_dev
4. Address other comments

Changelog v4:
1. remove the module_param, only keep the UAPI
2. remove the structure for task function; change to use the function pointer in vhost_worker
3. fix the issue in vhost_worker_create and vhost_dev_ioctl
4. Address other comments

Changelog v5:
1. Change wakeup and stop function pointers in struct vhost_worker to void.
2. merging patches 4, 5, 6 in a single patch
3. Fix spelling issues and address other comments.

Changelog v6:
1. move the check of VHOST_NEW_WORKER from vhost_scsi to vhost
2. Change the ioctl name VHOST_SET_INHERIT_FROM_OWNER to VHOST_FORK_FROM_OWNER
3. reuse the function __vhost_worker_flush
4. use a ops sturct to support worker relates function
5. reset the value of inherit_owner in vhost_dev_reset_owner.

Changelog v7:
1. add a KConfig knob to disable legacy app support
2. Split the changes into two patches to separately introduce the ops and add kthread support.
3. Utilized INX_MAX to avoid modifications in __vhost_worker_flush
4. Rebased on the latest kernel
5. Address other comments

Changelog v8:
1. Rebased on the latest kernel
2. Address some other comments

Changelog v9:
1. Rebased on the latest kernel.
2. Squashed patches 6â??7.
3. Squashed patches 2â??4.
4. Minor fixes in commit log


Changelog v10:
1.Add support for the module_param.
2.Squash patches 3 and 4.
3.Make minor fixes in the commit log.
4.Fix the mismatched tabs in Kconfig.
5.Rebase on the latest kernel.

Tested with QEMU with kthread mode/task mode/kthread+task mode

Cindy Lu (3):
vhost: Add a new modparam to allow userspace select kthread
vhost: Reintroduce kthread mode support in vhost
vhost: Add new UAPI to select kthread mode and KConfig to enable this
IOCTL

drivers/vhost/Kconfig | 13 +++
drivers/vhost/vhost.c | 223 +++++++++++++++++++++++++++++++++----
drivers/vhost/vhost.h | 22 ++++
include/uapi/linux/vhost.h | 16 +++
4 files changed, 255 insertions(+), 19 deletions(-)

--
2.45.0



Return-Path: <linux-kernel+bounces-669031-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BAA5241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:52:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 277401BA0682
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:34 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3F8F92376EC;
Sat, 31 May 2025 09:52:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="NlWbvbXk"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 CBB8F4503B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:51:58 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685120; cv=none; b=OMMisRiajbvca75vT624UYHWEo6rFN0VKx7dtvHqVf/dIT+dZlS552CzFUwWREQZRDpNBE/r4iOLhSdOf4rxflIfMOYtuWp9p6/FpNi2PLDRo3s4dRXMK4L6hhwYk4BG92SGky65KfnN4AQUk44nTPJDFa8c+Hd3nlA4YhlqyEg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685120; c=relaxed/simple;
bh=mw/Qer8CeHGw4edMlvresJ7xkZve9Gz7YMI12DPZe2E=;
h=From:To:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=KEe5fkjwwxoQ+lzuKi6pFyU8HqeBKzbOAOuMaa5aPT8g5lQQENwBQ9NjvRxmGzMYBVIjZ6Uwixvv7XrSETd+ovs+Nu7NQucQIRBHluC7oncvYe6Y09OM+H9xyPFStnEkh5kcQ+DpAmIPzDlXGRUxkebTkVaW2LhMHK0Ec6HS8ng=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=NlWbvbXk; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685117;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=nrPgdD64vKDtkpdzZC+la9VolCi4JsMi5slKhfemFX0=;
b=NlWbvbXktn5nSraF0M5ph+lU9GTUHKbz6Qvy5+hTY4u+xZfADbfDFd1qT6mqIynMEYfPBb
HTDrt30ZzzFwK8TKI9t813xluDEQoMPf4IoL+xkmf0gDBljdTi0MK8gCFzCoVNAbSvoqpn
9YnSzycMju3lv0EAMCtwEKEUd10gteI=
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-172-QjWVvrC3MwKxOniWVVTuQg-1; Sat,
31 May 2025 05:51:54 -0400
X-MC-Unique: QjWVvrC3MwKxOniWVVTuQg-1
X-Mimecast-MFC-AGG-ID: QjWVvrC3MwKxOniWVVTuQg_1748685113
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 2E34718004A7;
Sat, 31 May 2025 09:51:53 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1A9DF1800371;
Sat, 31 May 2025 09:51:48 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH v10 1/3] vhost: Add a new modparam to allow userspace select kthread
Date: Sat, 31 May 2025 17:47:03 +0800
Message-ID: <20250531095135.159582-2-lulu@xxxxxxxxxx>
In-Reply-To: <20250531095135.159582-1-lulu@xxxxxxxxxx>
References: <20250531095135.159582-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The vhost now uses vhost_task and workers as a child of the owner thread.
While this aligns with containerization principles, it confuses some
legacy userspace applications, therefore, we are reintroducing kthread
API support.

Add a new module parameter to allow userspace to select behavior
between using kthread and task.

By default, this parameter is set to true (task mode). This means the
default behavior remains unchanged by this patch.

Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx>
---
drivers/vhost/vhost.c | 5 +++++
drivers/vhost/vhost.h | 10 ++++++++++
2 files changed, 15 insertions(+)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 3a5ebb973dba..240ba78b1e3f 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -41,6 +41,10 @@ static int max_iotlb_entries = 2048;
module_param(max_iotlb_entries, int, 0444);
MODULE_PARM_DESC(max_iotlb_entries,
"Maximum number of iotlb entries. (default: 2048)");
+bool inherit_owner_default = true;
+module_param(inherit_owner_default, bool, 0444);
+MODULE_PARM_DESC(inherit_owner_default,
+ "Set task mode as the default(default: Y)");

enum {
VHOST_MEMORY_F_LOG = 0x1,
@@ -552,6 +556,7 @@ void vhost_dev_init(struct vhost_dev *dev,
dev->byte_weight = byte_weight;
dev->use_worker = use_worker;
dev->msg_handler = msg_handler;
+ dev->inherit_owner = inherit_owner_default;
init_waitqueue_head(&dev->wait);
INIT_LIST_HEAD(&dev->read_list);
INIT_LIST_HEAD(&dev->pending_list);
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index bb75a292d50c..c1ff4a92b925 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -176,6 +176,16 @@ struct vhost_dev {
int byte_weight;
struct xarray worker_xa;
bool use_worker;
+ /*
+ * If inherit_owner is true we use vhost_tasks to create
+ * the worker so all settings/limits like cgroups, NPROC,
+ * scheduler, etc are inherited from the owner. If false,
+ * we use kthreads and only attach to the same cgroups
+ * as the owner for compat with older kernels.
+ * here we use true as default value.
+ * The default value is set by modparam inherit_owner_default
+ */
+ bool inherit_owner;
int (*msg_handler)(struct vhost_dev *dev, u32 asid,
struct vhost_iotlb_msg *msg);
};
--
2.45.0



Return-Path: <linux-kernel+bounces-669032-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 525DB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:52:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3664F9E5077
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 42A4E23A9BB;
Sat, 31 May 2025 09:52:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="MxG0sRSW"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])
(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 8329A239E8C
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685123; cv=none; b=iA04olRjwTi33uTVnrMo48bGn7d+s74RIMejpikFq76q73Uz7B0NeSz9S/W0C5PkGKoWv/iDO7wulUjJtav7IXXalWxBkHxCMJxRpwBIkdZU1YDgR3Presvx4dFihmQLr2UjXhhxQuyT7uX3xSWu4G4nA65f0Dlhayah6GaD18Y=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685123; c=relaxed/simple;
bh=CcOpk8Xyc4VMwwKi2VpRLuGbaZey2YlSpo+8aANMhkg=;
h=From:To:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=p562dXq/gKeRQPcuznT4gNOITgTWRYaf+CAKy0jNAaRt+CkXCPMD1v26wYIJ1PLXMN9cl/fC5mSyes9evZAYaRZ2AReLA08smaRG+a6VjfSdO+dr5Be+iEnFXQy6JqMNtRvtiXYDYexGDVi6fFOt+4puJEgPzF4TLCGpPiQpdNU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=MxG0sRSW; arc=none smtp.client-ip=170.10.129.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685120;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=/eIhXFNCsuT8fyAjm28qjbco9E563cRybykc6t/pZX4=;
b=MxG0sRSWduBI5cA+lgZvDCXG+YexLfiHxdH+3HMK3ZjA1V+nLQd4cc//RjMNt+gLe5wv1X
Y524+j2O0HQ0ioaw4cDct2EWoewPjlfgxStcBTVDUjsA88NQzNHo/41RTVOqfcwAPlMs1N
krkwgmFC8dLXN0RJwA5iKAFcMWwg6m0=
Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-193-0rYBKxYlP_KOS9jjQYB26w-1; Sat,
31 May 2025 05:51:59 -0400
X-MC-Unique: 0rYBKxYlP_KOS9jjQYB26w-1
X-Mimecast-MFC-AGG-ID: 0rYBKxYlP_KOS9jjQYB26w_1748685118
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 088BC1800446;
Sat, 31 May 2025 09:51:58 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id EAB90180049D;
Sat, 31 May 2025 09:51:53 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH v10 2/3] vhost: Reintroduce kthread mode support in vhost
Date: Sat, 31 May 2025 17:47:04 +0800
Message-ID: <20250531095135.159582-3-lulu@xxxxxxxxxx>
In-Reply-To: <20250531095135.159582-1-lulu@xxxxxxxxxx>
References: <20250531095135.159582-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch reintroduces kthread mode support in vhost,
It also introduces struct vhost_worker_ops to abstract
worker create/stop/wakeup operations.

* Bring back the original vhost_worker() implementation,
and renamed to vhost_run_work_kthread_list().

* Add cgroup support for the kthread

* Introduce struct vhost_worker_ops:
- Encapsulates create / stop / wakeâ??up callbacks.
- vhost_worker_create() selects the proper ops according to
inherit_owner.

This partially reverts or improves upon:
commit 6e890c5d5021 ("vhost: use vhost_tasks for worker threads")
commit 1cdaafa1b8b4 ("vhost: replace single worker pointer with xarray")

Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx>
---
drivers/vhost/vhost.c | 188 ++++++++++++++++++++++++++++++++++++++----
drivers/vhost/vhost.h | 12 +++
2 files changed, 182 insertions(+), 18 deletions(-)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 240ba78b1e3f..2d2909be1bb2 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -22,6 +22,7 @@
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/kthread.h>
+#include <linux/cgroup.h>
#include <linux/module.h>
#include <linux/sort.h>
#include <linux/sched/mm.h>
@@ -246,7 +247,7 @@ static void vhost_worker_queue(struct vhost_worker *worker,
* test_and_set_bit() implies a memory barrier.
*/
llist_add(&work->node, &worker->work_list);
- vhost_task_wake(worker->vtsk);
+ worker->ops->wakeup(worker);
}
}

@@ -392,6 +393,44 @@ static void vhost_vq_reset(struct vhost_dev *dev,
__vhost_vq_meta_reset(vq);
}

+static int vhost_run_work_kthread_list(void *data)
+{
+ struct vhost_worker *worker = data;
+ struct vhost_work *work, *work_next;
+ struct vhost_dev *dev = worker->dev;
+ struct llist_node *node;
+
+ kthread_use_mm(dev->mm);
+
+ for (;;) {
+ /* mb paired w/ kthread_stop */
+ set_current_state(TASK_INTERRUPTIBLE);
+
+ if (kthread_should_stop()) {
+ __set_current_state(TASK_RUNNING);
+ break;
+ }
+ node = llist_del_all(&worker->work_list);
+ if (!node)
+ schedule();
+
+ node = llist_reverse_order(node);
+ /* make sure flag is seen after deletion */
+ smp_wmb();
+ llist_for_each_entry_safe(work, work_next, node, node) {
+ clear_bit(VHOST_WORK_QUEUED, &work->flags);
+ __set_current_state(TASK_RUNNING);
+ kcov_remote_start_common(worker->kcov_handle);
+ work->fn(work);
+ kcov_remote_stop();
+ cond_resched();
+ }
+ }
+ kthread_unuse_mm(dev->mm);
+
+ return 0;
+}
+
static bool vhost_run_work_list(void *data)
{
struct vhost_worker *worker = data;
@@ -586,6 +625,46 @@ long vhost_dev_check_owner(struct vhost_dev *dev)
}
EXPORT_SYMBOL_GPL(vhost_dev_check_owner);

+struct vhost_attach_cgroups_struct {
+ struct vhost_work work;
+ struct task_struct *owner;
+ int ret;
+};
+
+static void vhost_attach_cgroups_work(struct vhost_work *work)
+{
+ struct vhost_attach_cgroups_struct *s;
+
+ s = container_of(work, struct vhost_attach_cgroups_struct, work);
+ s->ret = cgroup_attach_task_all(s->owner, current);
+}
+
+static int vhost_attach_task_to_cgroups(struct vhost_worker *worker)
+{
+ struct vhost_attach_cgroups_struct attach;
+ int saved_cnt;
+
+ attach.owner = current;
+
+ vhost_work_init(&attach.work, vhost_attach_cgroups_work);
+ vhost_worker_queue(worker, &attach.work);
+
+ mutex_lock(&worker->mutex);
+
+ /*
+ * Bypass attachment_cnt check in __vhost_worker_flush:
+ * Temporarily change it to INT_MAX to bypass the check
+ */
+ saved_cnt = worker->attachment_cnt;
+ worker->attachment_cnt = INT_MAX;
+ __vhost_worker_flush(worker);
+ worker->attachment_cnt = saved_cnt;
+
+ mutex_unlock(&worker->mutex);
+
+ return attach.ret;
+}
+
/* Caller should have device mutex */
bool vhost_dev_has_owner(struct vhost_dev *dev)
{
@@ -631,7 +710,7 @@ static void vhost_worker_destroy(struct vhost_dev *dev,

WARN_ON(!llist_empty(&worker->work_list));
xa_erase(&dev->worker_xa, worker->id);
- vhost_task_stop(worker->vtsk);
+ worker->ops->stop(worker);
kfree(worker);
}

@@ -654,42 +733,115 @@ static void vhost_workers_free(struct vhost_dev *dev)
xa_destroy(&dev->worker_xa);
}

+static void vhost_task_wakeup(struct vhost_worker *worker)
+{
+ return vhost_task_wake(worker->vtsk);
+}
+
+static void vhost_kthread_wakeup(struct vhost_worker *worker)
+{
+ wake_up_process(worker->kthread_task);
+}
+
+static void vhost_task_do_stop(struct vhost_worker *worker)
+{
+ return vhost_task_stop(worker->vtsk);
+}
+
+static void vhost_kthread_do_stop(struct vhost_worker *worker)
+{
+ kthread_stop(worker->kthread_task);
+}
+
+static int vhost_task_worker_create(struct vhost_worker *worker,
+ struct vhost_dev *dev, const char *name)
+{
+ struct vhost_task *vtsk;
+ u32 id;
+ int ret;
+
+ vtsk = vhost_task_create(vhost_run_work_list, vhost_worker_killed,
+ worker, name);
+ if (IS_ERR(vtsk))
+ return PTR_ERR(vtsk);
+
+ worker->vtsk = vtsk;
+ vhost_task_start(vtsk);
+ ret = xa_alloc(&dev->worker_xa, &id, worker, xa_limit_32b, GFP_KERNEL);
+ if (ret < 0) {
+ vhost_task_do_stop(worker);
+ return ret;
+ }
+ worker->id = id;
+ return 0;
+}
+
+static int vhost_kthread_worker_create(struct vhost_worker *worker,
+ struct vhost_dev *dev, const char *name)
+{
+ struct task_struct *task;
+ u32 id;
+ int ret;
+
+ task = kthread_create(vhost_run_work_kthread_list, worker, "%s", name);
+ if (IS_ERR(task))
+ return PTR_ERR(task);
+
+ worker->kthread_task = task;
+ wake_up_process(task);
+ ret = xa_alloc(&dev->worker_xa, &id, worker, xa_limit_32b, GFP_KERNEL);
+ if (ret < 0)
+ goto stop_worker;
+
+ ret = vhost_attach_task_to_cgroups(worker);
+ if (ret)
+ goto stop_worker;
+
+ worker->id = id;
+ return 0;
+
+stop_worker:
+ vhost_kthread_do_stop(worker);
+ return ret;
+}
+
+static const struct vhost_worker_ops kthread_ops = {
+ .create = vhost_kthread_worker_create,
+ .stop = vhost_kthread_do_stop,
+ .wakeup = vhost_kthread_wakeup,
+};
+
+static const struct vhost_worker_ops vhost_task_ops = {
+ .create = vhost_task_worker_create,
+ .stop = vhost_task_do_stop,
+ .wakeup = vhost_task_wakeup,
+};
+
static struct vhost_worker *vhost_worker_create(struct vhost_dev *dev)
{
struct vhost_worker *worker;
- struct vhost_task *vtsk;
char name[TASK_COMM_LEN];
int ret;
- u32 id;
+ const struct vhost_worker_ops *ops =
+ dev->inherit_owner ? &vhost_task_ops : &kthread_ops;

worker = kzalloc(sizeof(*worker), GFP_KERNEL_ACCOUNT);
if (!worker)
return NULL;

worker->dev = dev;
+ worker->ops = ops;
snprintf(name, sizeof(name), "vhost-%d", current->pid);

- vtsk = vhost_task_create(vhost_run_work_list, vhost_worker_killed,
- worker, name);
- if (IS_ERR(vtsk))
- goto free_worker;
-
mutex_init(&worker->mutex);
init_llist_head(&worker->work_list);
worker->kcov_handle = kcov_common_handle();
- worker->vtsk = vtsk;
-
- vhost_task_start(vtsk);
-
- ret = xa_alloc(&dev->worker_xa, &id, worker, xa_limit_32b, GFP_KERNEL);
+ ret = ops->create(worker, dev, name);
if (ret < 0)
- goto stop_worker;
- worker->id = id;
+ goto free_worker;

return worker;

-stop_worker:
- vhost_task_stop(vtsk);
free_worker:
kfree(worker);
return NULL;
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index c1ff4a92b925..bef42ed51485 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -26,7 +26,18 @@ struct vhost_work {
unsigned long flags;
};

+struct vhost_worker;
+struct vhost_dev;
+
+struct vhost_worker_ops {
+ int (*create)(struct vhost_worker *worker, struct vhost_dev *dev,
+ const char *name);
+ void (*stop)(struct vhost_worker *worker);
+ void (*wakeup)(struct vhost_worker *worker);
+};
+
struct vhost_worker {
+ struct task_struct *kthread_task;
struct vhost_task *vtsk;
struct vhost_dev *dev;
/* Used to serialize device wide flushing with worker swapping. */
@@ -36,6 +47,7 @@ struct vhost_worker {
u32 id;
int attachment_cnt;
bool killed;
+ const struct vhost_worker_ops *ops;
};

/* Poll a file (eventfd or socket) */
--
2.45.0



Return-Path: <linux-kernel+bounces-669033-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8776741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:53:03 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 9F1493B3C19
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 885FB23BF9E;
Sat, 31 May 2025 09:52:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="WLHmrI1V"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])
(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 389EB239E76
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685130; cv=none; b=Vf6GB5A5sWBbIwfPZZ/6Fs+HeP2lk6Zoc41AN0ji7T2AzMBoecE4QLQpJuNS6JyLHMUXKxyZoRrs4NqpunCz97qVv9nOqUlbM0C5xnVDztfiWxRilvkE4wi1VsdVGeCvIi5QRoK6Sx1+b6bgPbT5k+/Jtr00hWg3/g0syVQbWMs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685130; c=relaxed/simple;
bh=tkHlihPALOeP3kvL2nF1g8VsHMqRk4StgVF01L5qPkY=;
h=From:To:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=kZezbZXwpUFde9STYEBn/Eyk5UnEXFqeyda8V1Q7znlFohfgT7YrlRdJYPXTlgl2xFcwwddxs+ULhU1oCW2m8z8iXm+buysyfYGgtG4jNpQPbaeSKY4ENbPgj6sszpIvBQir+JDAyf97cagGqAYjsMXnp/90/uLYtX1eyPftPPg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=WLHmrI1V; arc=none smtp.client-ip=170.10.129.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685128;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=bXrAvthADTqvlMjxkG4TzthDrm10AjntmLRtuzulA0I=;
b=WLHmrI1V4BtXZLZBXuLq+xqtyb4nASOQpL7le00yRXrhTi7ILYFBuFd5juTN//xWQLPin6
HfuwGtvmqjKqEDY/EweEQI90w7ZJHG/0ddhhYiqa5JJcF2eDSpQi6dviaRcCdllgNkXgQQ
BV3CfeSy2xuXYDlp95sgwGBUHOBxvFk=
Received: from mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com
(ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-321-krvCGQXNNWKTxc34OjevJg-1; Sat,
31 May 2025 05:52:04 -0400
X-MC-Unique: krvCGQXNNWKTxc34OjevJg-1
X-Mimecast-MFC-AGG-ID: krvCGQXNNWKTxc34OjevJg_1748685123
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-02.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5E5F81956089;
Sat, 31 May 2025 09:52:03 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 590BF1800371;
Sat, 31 May 2025 09:51:58 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH v10 3/3] vhost: Add new UAPI to select kthread mode and KConfig to enable this IOCTL
Date: Sat, 31 May 2025 17:47:05 +0800
Message-ID: <20250531095135.159582-4-lulu@xxxxxxxxxx>
In-Reply-To: <20250531095135.159582-1-lulu@xxxxxxxxxx>
References: <20250531095135.159582-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch introduces a new UAPI that allows the vhost device to select
in kthread mode. Userspace applications can utilize IOCTL
VHOST_FORK_FROM_OWNER to select between task and kthread modes, which
must be invoked before IOCTL VHOST_SET_OWNER, as the worker will be
created during that call.

The VHOST_NEW_WORKER requires the inherit_owner setting to be true, and
a check has been added to ensure proper configuration.

Additionally, a new KConfig option, CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL,
is introduced to control the availability of the IOCTL
VHOST_FORK_FROM_OWNER. When CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL is set
to n, the IOCTL is disabled, and any attempt to use it will result in a
failure.

Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx>
---
drivers/vhost/Kconfig | 13 +++++++++++++
drivers/vhost/vhost.c | 30 +++++++++++++++++++++++++++++-
include/uapi/linux/vhost.h | 16 ++++++++++++++++
3 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/drivers/vhost/Kconfig b/drivers/vhost/Kconfig
index 020d4fbb947c..300e474b60fd 100644
--- a/drivers/vhost/Kconfig
+++ b/drivers/vhost/Kconfig
@@ -96,3 +96,16 @@ config VHOST_CROSS_ENDIAN_LEGACY
If unsure, say "N".

endif
+
+config VHOST_ENABLE_FORK_OWNER_IOCTL
+ bool "Enable IOCTL VHOST_FORK_FROM_OWNER"
+ default n
+ help
+ This option enables the IOCTL VHOST_FORK_FROM_OWNER, allowing
+ userspace applications to modify the thread mode for vhost devices.
+
+ By default, `CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL` is set to `n`,
+ which disables the IOCTL. When enabled (y), the IOCTL allows
+ users to set the mode as needed.
+
+ If unsure, say "N".
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 2d2909be1bb2..673c2dc8607b 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -1022,6 +1022,13 @@ long vhost_worker_ioctl(struct vhost_dev *dev, unsigned int ioctl,
switch (ioctl) {
/* dev worker ioctls */
case VHOST_NEW_WORKER:
+ /*
+ * vhost_tasks will account for worker threads under the parent's
+ * NPROC value but kthreads do not. To avoid userspace overflowing
+ * the system with worker threads inherit_owner must be true.
+ */
+ if (!dev->inherit_owner)
+ return -EFAULT;
ret = vhost_new_worker(dev, &state);
if (!ret && copy_to_user(argp, &state, sizeof(state)))
ret = -EFAULT;
@@ -1138,7 +1145,7 @@ void vhost_dev_reset_owner(struct vhost_dev *dev, struct vhost_iotlb *umem)
int i;

vhost_dev_cleanup(dev);
-
+ dev->inherit_owner = true;
dev->umem = umem;
/* We don't need VQ locks below since vhost_dev_cleanup makes sure
* VQs aren't running.
@@ -2292,6 +2299,27 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp)
goto done;
}

+#ifdef CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL
+ if (ioctl == VHOST_FORK_FROM_OWNER) {
+ u8 inherit_owner;
+ /*inherit_owner can only be modified before owner is set*/
+ if (vhost_dev_has_owner(d)) {
+ r = -EBUSY;
+ goto done;
+ }
+ if (copy_from_user(&inherit_owner, argp, sizeof(u8))) {
+ r = -EFAULT;
+ goto done;
+ }
+ if (inherit_owner > 1) {
+ r = -EINVAL;
+ goto done;
+ }
+ d->inherit_owner = (bool)inherit_owner;
+ r = 0;
+ goto done;
+ }
+#endif
/* You must be the owner to do anything else */
r = vhost_dev_check_owner(d);
if (r)
diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h
index d4b3e2ae1314..d2692c7ef450 100644
--- a/include/uapi/linux/vhost.h
+++ b/include/uapi/linux/vhost.h
@@ -235,4 +235,20 @@
*/
#define VHOST_VDPA_GET_VRING_SIZE _IOWR(VHOST_VIRTIO, 0x82, \
struct vhost_vring_state)
+
+/**
+ * VHOST_FORK_FROM_OWNER - Set the inherit_owner flag for the vhost device,
+ * This ioctl must called before VHOST_SET_OWNER.
+ *
+ * @param inherit_owner: An 8-bit value that determines the vhost thread mode
+ *
+ * When inherit_owner is set to 1(default value):
+ * - Vhost will create tasks similar to processes forked from the owner,
+ * inheriting all of the owner's attributes.
+ *
+ * When inherit_owner is set to 0:
+ * - Vhost will create tasks as kernel thread.
+ */
+#define VHOST_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x83, __u8)
+
#endif
--
2.45.0



Return-Path: <linux-kernel+bounces-669034-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7E35F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:53:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E0ECC1BA0E14
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:53:28 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E288C239E98;
Sat, 31 May 2025 09:52:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="nUO6SsTZ"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 64A932376EC;
Sat, 31 May 2025 09:52:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685143; cv=none; b=qf7hkVczKoVhrzEkhHyI6J2kPTZOgTErjBpd6A5dL2lKcg8yecvk9VdASXmOWmuuJfkcXd92DdGlE+WR0jKv7gyVuJMllO8eW6P8NkcQi95mDYWwZzMEomOsjH7zaZgL896e02JY/rSVfnzQnayBgEJ99pNuCW/QWV4OyxAW9/4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685143; c=relaxed/simple;
bh=mcLu69E22oPtyjeUulYDLFJPoP+jaJ+5GOPJWv+7XyQ=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=ZpSvPG4yRulkBH8b2lthdRIZY8XiLYo5KIIIVSJZArDZ/ntrKaf5A0BVmvK5BFUnDY67GBAtOUcy+5qgzm8k2gure4iRrxo9vkcO+7EDcXzbrteGuO7b8tw0kVW8RXiQ2PiWpi/8dg/ujRx8gLirwYYoks3nN8D2yPIJAmtxKnE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=nUO6SsTZ; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748685138;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=yvo1gKEFvcCi1DSavYyf9wE/OfH4XiSCUbk32K7rcBQ=;
b=nUO6SsTZH54XbUvXnm3Ki3CChaZZZASBQx/bUv8hbtvqU5PiZUPFTbmxUu9k/yn5srJafl
k5CXPZdG/k8vTSCpGQa3b+CFO6elNPORIR2r0USjAJcoCUaMCLd6Xwwy3wbZ393/KKVX0N
ld/l6hZZXkLzBgccZIoVQ1O+Q9zUvsk=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Subject:
Re: [PATCH batadv 2/5] batman-adv: only create hardif while a netdev is part
of a mesh
Date: Sat, 31 May 2025 11:52:12 +0200
Message-ID: <6005840.1IzOArtZ34@sven-desktop>
In-Reply-To:
<e311c7d643fa1a7d13f2b518f6ee525eb6711f6c.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<e311c7d643fa1a7d13f2b518f6ee525eb6711f6c.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart4437374.BddDVKsqQX";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart4437374.BddDVKsqQX
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 11:52:12 +0200
Message-ID: <6005840.1IzOArtZ34@sven-desktop>
MIME-Version: 1.0

On Monday, 19 May 2025 22:46:29 CEST Matthias Schiffer wrote:
> -int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
> +int batadv_hardif_enable_interface(struct net_device *net_dev,
> struct net_device *mesh_iface)
> {
[....]
> + hard_iface->wifi_flags =3D batadv_wifi_flags_evaluate(net_dev);

Moving this here should break the WIFI TT flag in scenarios like this:

=E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=
=E2=94=80=E2=94=90 =20
=E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BCbr-lan=E2=94=9C=E2=94=80=
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =20
=E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=98 =E2=94=82 =20
=E2=94=82 =E2=94=82 =20
=E2=94=82 =E2=94=82 =20
=E2=94=8C=E2=94=80=E2=96=BC=E2=94=80=E2=94=90 =E2=
=94=8C=E2=94=80=E2=94=80=E2=96=BC=E2=94=80=E2=94=90 =20
=E2=94=82ap0=E2=94=82 =E2=94=82bat0=E2=94=82 =20
=E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=
=94=94=E2=94=80=E2=94=80=E2=94=AC=E2=94=80=E2=94=98 =20
=E2=94=82 =20
=E2=94=82 =20
=E2=94=8C=E2=94=80=E2=94=80=E2=96=BC=E2=94=80=
=E2=94=80=E2=94=90 =20
=E2=94=82mesh0=E2=94=82 =20
=E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=
=E2=94=80=E2=94=98 =20


ap0 is not the lower interface of any batadv mesh interface but TT ap=20
isolation is depending on the information stored for this hardif. See:



/**
* batadv_is_wifi_hardif() - check if the given hardif is a wifi interface
* @hard_iface: the device to check
*
* Return: true if the net device is a 802.11 wireless device, false otherw=
ise.
*/
bool batadv_is_wifi_hardif(struct batadv_hard_iface *hard_iface)
{
if (!hard_iface)
return false;

return hard_iface->wifi_flags !=3D 0;
}

bool batadv_tt_local_add(struct net_device *mesh_iface, const u8 *addr,
unsigned short vid, int ifindex, u32 mark)
{
[...]
if (ifindex !=3D BATADV_NULL_IFINDEX)
in_dev =3D dev_get_by_index(net, ifindex);

if (in_dev)
in_hardif =3D batadv_hardif_get_by_netdev(in_dev);
[...]
if (batadv_is_wifi_hardif(in_hardif))
tt_local->common.flags |=3D BATADV_TT_CLIENT_WIFI;
[...]


static bool
_batadv_is_ap_isolated(struct batadv_tt_local_entry *tt_local_entry,
struct batadv_tt_global_entry *tt_global_entry)
{
if (tt_local_entry->common.flags & BATADV_TT_CLIENT_WIFI &&
tt_global_entry->common.flags & BATADV_TT_CLIENT_WIFI)
return true;

/* check if the two clients are marked as isolated */
if (tt_local_entry->common.flags & BATADV_TT_CLIENT_ISOLA &&
tt_global_entry->common.flags & BATADV_TT_CLIENT_ISOLA)
return true;

return false;
}


Kind regards,
Sven
--nextPart4437374.BddDVKsqQX
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDrRTAAKCRBND3cr0xT1
yzUsAQCp/BGDaLgH0bq7xgYDPfCB+JWa1ATr3Z4n9blbzryMMgD/bOqU8Sjbwa9V
21JVjVIElBn4VBShwmvDlt2H82tdMQg=
=Ej70
-----END PGP SIGNATURE-----

--nextPart4437374.BddDVKsqQX--





Return-Path: <linux-kernel+bounces-669035-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 924DD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:56:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 996521685FF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:56:53 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 43A32239E62;
Sat, 31 May 2025 09:56:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="yXIApW4H"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 DF30842AA6;
Sat, 31 May 2025 09:56:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685402; cv=none; b=ccVRqhjqZsD0mwGttcBJOuvv6Mt46TR/Dhc0wFj8qQ1YouJVmiZITx3KXDc/VBFH13ODgVmTIZjLvKL1TItWO+5pJbJAtbtpwh3idmftbVOHOL5ZEdTva9khC7fxLAjsZdacgTlRjwIZlSdAvVzVjoIkhU9Srswfh5UWW56XdDI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685402; c=relaxed/simple;
bh=YH4FPc4zPeMtJdswC/DmhVLJXooDCtARO8fEo50NAeI=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=F88gSF1lCq24CVjM5mAAEqIqQZ27VwrZAoGzrQLD/tkjPJvqoBCLP4w7XYWZ07N3W/+vBVeyjk/a5WD5gMvBHhbj+fdph8DkW8+EkhuUgWZPwEB/y2hQGMg31FAcElIhStjKXvOhba4v6gRQ9AotrjhtsDQY2Z3MjdmyOAmmMkI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=yXIApW4H; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748685398;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=esolGE2tSmNnPRF4uWyr6841H7n9QIGFhdDzJ0qYsmo=;
b=yXIApW4HetJxcCx6PbYU2Q6MGzczG2zPhjkkhokn3Wrk5Q5F4MdxlWKesADIWWmNJOo548
VcTUqqQG9FvvAsjfF6eMVXMn93YX68dm4KK0EIhzX4oFIXTPlPCQpS6l35GJoMhqqPuOgJ
OUwp+cRrPEtZrF570WH7O4K/For/0DM=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [PATCH batadv 4/5] batman-adv: remove global hardif list
Date: Sat, 31 May 2025 11:56:34 +0200
Message-ID: <4860101.CbtlEUcBR6@sven-desktop>
In-Reply-To:
<262d5c5a5afe3d478d2e65187c0913a3a8c4781f.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<262d5c5a5afe3d478d2e65187c0913a3a8c4781f.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart6384946.cEBGB3zze1";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart6384946.cEBGB3zze1
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Subject: Re: [PATCH batadv 4/5] batman-adv: remove global hardif list
Date: Sat, 31 May 2025 11:56:34 +0200
Message-ID: <4860101.CbtlEUcBR6@sven-desktop>
MIME-Version: 1.0

On Monday, 19 May 2025 22:46:31 CEST Matthias Schiffer wrote:
> struct batadv_hard_iface *
> -batadv_hardif_get_by_netdev(const struct net_device *net_dev)
> +batadv_hardif_get_by_netdev(struct net_device *net_dev)
> {
> struct batadv_hard_iface *hard_iface;
> + struct net_device *mesh_iface;
> =20
> - rcu_read_lock();
> - list_for_each_entry_rcu(hard_iface, &batadv_hardif_list, list) {
> - if (hard_iface->net_dev =3D=3D net_dev &&
> - kref_get_unless_zero(&hard_iface->refcount))
> - goto out;
> - }
> + mesh_iface =3D netdev_master_upper_dev_get(net_dev);
> + if (!mesh_iface || !batadv_meshif_is_valid(mesh_iface))
> + return NULL;
> =20
> - hard_iface =3D NULL;
> + hard_iface =3D netdev_lower_dev_get_private(mesh_iface, net_dev);
> + if (!kref_get_unless_zero(&hard_iface->refcount))
> + return NULL;
> =20
> -out:
> - rcu_read_unlock();
> return hard_iface;
> }

This code is now relying on rtnl_lock() (see `ASSERT_RTNL` in=20
`netdev_master_upper_dev_get` and most likely some comments somwhere about =
the=20
lists used by `netdev_lower_dev_get_private`). But `batadv_tt_local_add` is=
=20
using this function without holding this lock all the time. For example dur=
ing
packet processing.

See for example `batadv_tt_local_add` calls in `batadv_interface_tx`. This=
=20
will happen when `skb->skb_iif` is not 0 (so it was forwarded).


Please double check this - I have not actually tested it but just went thro=
ugh=20
the code.


And saying this, the `batadv_hardif_get_by_netdev` call was also used to=20
retrieve additional information about alll kind of interfaces - even when t=
hey=20
are not used by batman-adv directly. For example for figuring out if it is =
a=20
wifi interface(for the TT wifi flag). With you change here, you are basical=
ly=20
breaking this functionality because you now require that the netdev is a lo=
wer=20
interface of batman-adv. Therefore, things like:


=E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=
=E2=94=80=E2=94=90 =20
=E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=BCbr-lan=E2=94=9C=E2=94=80=
=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=90 =20
=E2=94=82 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=
=94=80=E2=94=80=E2=94=98 =E2=94=82 =20
=E2=94=82 =E2=94=82 =20
=E2=94=82 =E2=94=82 =20
=E2=94=8C=E2=94=80=E2=96=BC=E2=94=80=E2=94=90 =E2=
=94=8C=E2=94=80=E2=94=80=E2=96=BC=E2=94=80=E2=94=90 =20
=E2=94=82ap0=E2=94=82 =E2=94=82bat0=E2=94=82 =20
=E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=98 =E2=
=94=94=E2=94=80=E2=94=80=E2=94=AC=E2=94=80=E2=94=98 =20
=E2=94=82 =20
=E2=94=82 =20
=E2=94=8C=E2=94=80=E2=94=80=E2=96=BC=E2=94=80=
=E2=94=80=E2=94=90 =20
=E2=94=82mesh0=E2=94=82 =20
=E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80=
=E2=94=80=E2=94=98 =20
=20
=20
Is not handled anymore correctly in TT because ap0 is not a lower interface=
of=20
any batadv mesh interface. And as result, the ap-isolation feature of TT
will break.

Kind regards,
Sven
--nextPart6384946.cEBGB3zze1
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDrSUwAKCRBND3cr0xT1
y1CLAP0XdjoI2bffn1RBFQJQ9/80BKTDk7uFDARhT1LU3ccLXgD/VigawRbVt5L8
GQJphRNf9pct+c3yAGqgAEw2JOpY7wA=
=BNYO
-----END PGP SIGNATURE-----

--nextPart6384946.cEBGB3zze1--





Return-Path: <linux-kernel+bounces-669036-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 05BB841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:58:30 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 490B24A02D3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:58:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 71970239E77;
Sat, 31 May 2025 09:58:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="gLsVnDHf"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124])
(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 F1AA7BE5E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:58:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685498; cv=none; b=tgKUOe9/pV2L8vOcqvQfEekFjNgDft+Z7dQXqGDEy1Gn1aN/W8XBOEo4CF5KroDBEv93B/JqWTAt1R3zNs9LKyj3EOVrepn7kVpffQ7jMzGtv0OsSV62XGc0kTydE/Mbe57lYsVVK75G8NKKcUlbnPMdX5xnZqX4Bsl7bh+DVy0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685498; c=relaxed/simple;
bh=htcIGQT/ssGQoVXxIOhF1ldkMjyiJzTn3btvkIt0uRw=;
h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type; b=A2Q9u/+fciLpkTZtoJ8/3A4DRPZQImIUPajtzd1xhXRNApgcY/PgNmTso+SZ76CzAUPgcBuSYxJOlyxjEEXPW2YNSDvz1PMnWmdzZyBW8m7/0BaJ9UDylYS6p+oIWoabLLlu4h5SMWV6iV6bb69AKzuQrqwod7oleirdqojabJI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=gLsVnDHf; arc=none smtp.client-ip=170.10.129.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685494;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding;
bh=jJyUMglAGJzwPtxv28dkdLEq4lYUgcqEQo++4faeYEU=;
b=gLsVnDHf0OfmQs0A3hsVI2HIbYhZWzU4ajo4RnwFaR1BXOPMbshL5lntExkoX734YcQkmo
Xd9nPAQQmlESrsWyV0LvzEsTkARYLj8Ultn/Gio7izuQd36qaFANGOXTW5V3YNef9rowJN
tqy+XI4HSjqyMhJ8EFvs9/tpwSl8iIw=
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-601-iXhbsLNPMBWemOHshKwxdw-1; Sat,
31 May 2025 05:58:11 -0400
X-MC-Unique: iXhbsLNPMBWemOHshKwxdw-1
X-Mimecast-MFC-AGG-ID: iXhbsLNPMBWemOHshKwxdw_1748685490
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5C66C1800360;
Sat, 31 May 2025 09:58:10 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 03D22180049D;
Sat, 31 May 2025 09:58:05 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND v10 0/3] vhost: Add support of kthread API
Date: Sat, 31 May 2025 17:57:25 +0800
Message-ID: <20250531095800.160043-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

In commit 6e890c5d5021 ("vhost: use vhost_tasks for worker threads"),
the vhost now uses vhost_task and operates as a child of the
owner thread. This aligns with containerization principles.
However, this change has caused confusion for some legacy
userspace applications. Therefore, we are reintroducing
support for the kthread API.

In this series, a new UAPI is implemented to allow
userspace applications to configure their thread mode.

Changelog v2:
1. Change the module_param's name to enforce_inherit_owner, and the default value is true.
2. Change the UAPI's name to VHOST_SET_INHERIT_FROM_OWNER.

Changelog v3:
1. Change the module_param's name to inherit_owner_default, and the default value is true.
2. Add a structure for task function; the worker will select a different mode based on the value inherit_owner.
3. device will have their own inherit_owner in struct vhost_dev
4. Address other comments

Changelog v4:
1. remove the module_param, only keep the UAPI
2. remove the structure for task function; change to use the function pointer in vhost_worker
3. fix the issue in vhost_worker_create and vhost_dev_ioctl
4. Address other comments

Changelog v5:
1. Change wakeup and stop function pointers in struct vhost_worker to void.
2. merging patches 4, 5, 6 in a single patch
3. Fix spelling issues and address other comments.

Changelog v6:
1. move the check of VHOST_NEW_WORKER from vhost_scsi to vhost
2. Change the ioctl name VHOST_SET_INHERIT_FROM_OWNER to VHOST_FORK_FROM_OWNER
3. reuse the function __vhost_worker_flush
4. use a ops sturct to support worker relates function
5. reset the value of inherit_owner in vhost_dev_reset_owner.

Changelog v7:
1. add a KConfig knob to disable legacy app support
2. Split the changes into two patches to separately introduce the ops and add kthread support.
3. Utilized INX_MAX to avoid modifications in __vhost_worker_flush
4. Rebased on the latest kernel
5. Address other comments

Changelog v8:
1. Rebased on the latest kernel
2. Address some other comments

Changelog v9:
1. Rebased on the latest kernel.
2. Squashed patches 6â??7.
3. Squashed patches 2â??4.
4. Minor fixes in commit log


Changelog v10:
1.Add support for the module_param.
2.Squash patches 3 and 4.
3.Make minor fixes in the commit log.
4.Fix the mismatched tabs in Kconfig.
5.Rebase on the latest kernel.

Tested with QEMU with kthread mode/task mode/kthread+task mode

Cindy Lu (3):
vhost: Add a new modparam to allow userspace select kthread
vhost: Reintroduce kthread mode support in vhost
vhost: Add new UAPI to select kthread mode and KConfig to enable this
IOCTL

drivers/vhost/Kconfig | 13 +++
drivers/vhost/vhost.c | 223 +++++++++++++++++++++++++++++++++----
drivers/vhost/vhost.h | 22 ++++
include/uapi/linux/vhost.h | 16 +++
4 files changed, 255 insertions(+), 19 deletions(-)

--
2.45.0



Return-Path: <linux-kernel+bounces-669037-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3180041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:58:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 32AB61BA13CC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:59:02 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5867423A989;
Sat, 31 May 2025 09:58:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="QFmPgYvo"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 1F758239E9E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:58:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685503; cv=none; b=jwTuOT1ZWYYsm5zzEO632brAoE7LEdU/C9cfxSHB7ETdD7lT62QAlfFrl6bnOAzEt6lbWn75J+F3zY7Wt0L+4CZUDdSaAVPPSbeTBuhwYm6mRDnyiSf6hgXwP2UFPJjOZb8AerssFyi7YjrbgAb8r+YHHOFyvg5MHE/vgweUcQE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685503; c=relaxed/simple;
bh=mw/Qer8CeHGw4edMlvresJ7xkZve9Gz7YMI12DPZe2E=;
h=From:To:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=GIMTd8VU5P6QkonnR+4jvQlcP/LC+rCAjQ+sh3Uz3LR4x9URXxhsMM3q0YFsABG1Ff+ikUS1rGeIcGaGsrY2XGe2czx3C6KtFH+oC58tSISjKHBgccBmjfxVXjuUhg6uUbJ9FzF3sn3WQ/KrnYgTYx8ezmGa4Qz7NVRorx2yz+Q=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=QFmPgYvo; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685499;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=nrPgdD64vKDtkpdzZC+la9VolCi4JsMi5slKhfemFX0=;
b=QFmPgYvoMq6pMASuIBiAZtX5xMiHWfjWWglnXoXib9vVAm/jd3fR0efSiEGNN2Vil3HV/N
fRJq5YDwQHztuQ57paihT7XDSLgRFvgwIvAsECUhpvnkZ5coy8F5NtRGHWiWnfu1Mlq8Jo
kzLoTFGMAM9/9MamYWX/OTTSa17N99M=
Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com
(ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-244-5PmC2kcHMq6FaqEdTUVv3g-1; Sat,
31 May 2025 05:58:16 -0400
X-MC-Unique: 5PmC2kcHMq6FaqEdTUVv3g-1
X-Mimecast-MFC-AGG-ID: 5PmC2kcHMq6FaqEdTUVv3g_1748685495
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 243C01956086;
Sat, 31 May 2025 09:58:15 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 03631180049D;
Sat, 31 May 2025 09:58:10 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND v10 1/3] vhost: Add a new modparam to allow userspace select kthread
Date: Sat, 31 May 2025 17:57:26 +0800
Message-ID: <20250531095800.160043-2-lulu@xxxxxxxxxx>
In-Reply-To: <20250531095800.160043-1-lulu@xxxxxxxxxx>
References: <20250531095800.160043-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The vhost now uses vhost_task and workers as a child of the owner thread.
While this aligns with containerization principles, it confuses some
legacy userspace applications, therefore, we are reintroducing kthread
API support.

Add a new module parameter to allow userspace to select behavior
between using kthread and task.

By default, this parameter is set to true (task mode). This means the
default behavior remains unchanged by this patch.

Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx>
---
drivers/vhost/vhost.c | 5 +++++
drivers/vhost/vhost.h | 10 ++++++++++
2 files changed, 15 insertions(+)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 3a5ebb973dba..240ba78b1e3f 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -41,6 +41,10 @@ static int max_iotlb_entries = 2048;
module_param(max_iotlb_entries, int, 0444);
MODULE_PARM_DESC(max_iotlb_entries,
"Maximum number of iotlb entries. (default: 2048)");
+bool inherit_owner_default = true;
+module_param(inherit_owner_default, bool, 0444);
+MODULE_PARM_DESC(inherit_owner_default,
+ "Set task mode as the default(default: Y)");

enum {
VHOST_MEMORY_F_LOG = 0x1,
@@ -552,6 +556,7 @@ void vhost_dev_init(struct vhost_dev *dev,
dev->byte_weight = byte_weight;
dev->use_worker = use_worker;
dev->msg_handler = msg_handler;
+ dev->inherit_owner = inherit_owner_default;
init_waitqueue_head(&dev->wait);
INIT_LIST_HEAD(&dev->read_list);
INIT_LIST_HEAD(&dev->pending_list);
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index bb75a292d50c..c1ff4a92b925 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -176,6 +176,16 @@ struct vhost_dev {
int byte_weight;
struct xarray worker_xa;
bool use_worker;
+ /*
+ * If inherit_owner is true we use vhost_tasks to create
+ * the worker so all settings/limits like cgroups, NPROC,
+ * scheduler, etc are inherited from the owner. If false,
+ * we use kthreads and only attach to the same cgroups
+ * as the owner for compat with older kernels.
+ * here we use true as default value.
+ * The default value is set by modparam inherit_owner_default
+ */
+ bool inherit_owner;
int (*msg_handler)(struct vhost_dev *dev, u32 asid,
struct vhost_iotlb_msg *msg);
};
--
2.45.0



Return-Path: <linux-kernel+bounces-669039-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 65E9641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:59:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A2C044A1713
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:59:17 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D3CB223BF9E;
Sat, 31 May 2025 09:58:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="bw6PoCFw"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 6F1D0239E69
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:58:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685510; cv=none; b=lE0AP46lflmh7bA9zCwpCOGDNpUv/6DZsfsKegsJhZRtjGjgXMkkxt4jqDA30xi26S5zPr0IBbTFezv5h3A1KuIkG65AihzGnDGnp6f+g2rAqWnf7E6O8cIY4pLiQKw06ZDd+TYHl4Fc8VBa2fGl64bB5dtdLvIRMEnLiyNM2xM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685510; c=relaxed/simple;
bh=MH2G2hfDbvU36nbcXul/7o/guuWSQyBF7jNQJARY0eE=;
h=From:To:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=ACktSST+OER9KQOBzZRfZZloR74nlzEwYHCjeLcvA9yQrQu2HRjDSa62/voYhN5ZomziWeXpYnTk9dVp7es/BJXH1wxtL2H63acAjMuhJPx0Cn8SNMdFoonzsrzgKR81VSqn7DT9k9LM3TtaYkckWb9azu3YnXUP+BaXw/lI9uE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=bw6PoCFw; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685507;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=7QVzfJTKlAfS/h4/7JwNwWZ1w2FS+9cWThTFrETjmZk=;
b=bw6PoCFwbrqtEP06rQZJIYlkc3pkhO2sqePoJjN8icTHInU1CC7nifVEEB9tjoVaw9kqf+
wNAFxk6T7Uz5bRVZDBF0ZFEB7utfUq3CUIeDi3sJfEa4H4PDKZNsPSoR9VCXjofKXoEluU
+2JcNNTHgqeIjXgfogZWWeVE/uCg+ss=
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-394-O6hR8a-POuaRKRIkNYS4ZQ-1; Sat,
31 May 2025 05:58:25 -0400
X-MC-Unique: O6hR8a-POuaRKRIkNYS4ZQ-1
X-Mimecast-MFC-AGG-ID: O6hR8a-POuaRKRIkNYS4ZQ_1748685504
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 894621800446;
Sat, 31 May 2025 09:58:24 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 99DF3180049D;
Sat, 31 May 2025 09:58:20 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND v10 3/3] vhost: Add new UAPI to select kthread mode and KConfig to enable this IOCTL
Date: Sat, 31 May 2025 17:57:28 +0800
Message-ID: <20250531095800.160043-4-lulu@xxxxxxxxxx>
In-Reply-To: <20250531095800.160043-1-lulu@xxxxxxxxxx>
References: <20250531095800.160043-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch introduces a new UAPI that allows the vhost device to select
in kthread mode. Userspace applications can utilize IOCTL
VHOST_FORK_FROM_OWNER to select between task and kthread modes, which
must be invoked before IOCTL VHOST_SET_OWNER, as the worker will be
created during that call.

The VHOST_NEW_WORKER requires the inherit_owner setting to be true, and
a check has been added to ensure proper configuration.

Additionally, a new KConfig option, CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL,
is introduced to control the availability of the IOCTL
VHOST_FORK_FROM_OWNER. When CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL is set
to n, the IOCTL is disabled, and any attempt to use it will result in a
failure.

Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx>
---
drivers/vhost/Kconfig | 13 +++++++++++++
drivers/vhost/vhost.c | 30 +++++++++++++++++++++++++++++-
include/uapi/linux/vhost.h | 16 ++++++++++++++++
3 files changed, 58 insertions(+), 1 deletion(-)

diff --git a/drivers/vhost/Kconfig b/drivers/vhost/Kconfig
index 020d4fbb947c..300e474b60fd 100644
--- a/drivers/vhost/Kconfig
+++ b/drivers/vhost/Kconfig
@@ -96,3 +96,16 @@ config VHOST_CROSS_ENDIAN_LEGACY
If unsure, say "N".

endif
+
+config VHOST_ENABLE_FORK_OWNER_IOCTL
+ bool "Enable IOCTL VHOST_FORK_FROM_OWNER"
+ default n
+ help
+ This option enables the IOCTL VHOST_FORK_FROM_OWNER, allowing
+ userspace applications to modify the thread mode for vhost devices.
+
+ By default, `CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL` is set to `n`,
+ which disables the IOCTL. When enabled (y), the IOCTL allows
+ users to set the mode as needed.
+
+ If unsure, say "N".
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 2d2909be1bb2..cfa60dc438f9 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -1022,6 +1022,13 @@ long vhost_worker_ioctl(struct vhost_dev *dev, unsigned int ioctl,
switch (ioctl) {
/* dev worker ioctls */
case VHOST_NEW_WORKER:
+ /*
+ * vhost_tasks will account for worker threads under the parent's
+ * NPROC value but kthreads do not. To avoid userspace overflowing
+ * the system with worker threads inherit_owner must be true.
+ */
+ if (!dev->inherit_owner)
+ return -EFAULT;
ret = vhost_new_worker(dev, &state);
if (!ret && copy_to_user(argp, &state, sizeof(state)))
ret = -EFAULT;
@@ -1138,7 +1145,7 @@ void vhost_dev_reset_owner(struct vhost_dev *dev, struct vhost_iotlb *umem)
int i;

vhost_dev_cleanup(dev);
-
+ dev->inherit_owner = inherit_owner_default;
dev->umem = umem;
/* We don't need VQ locks below since vhost_dev_cleanup makes sure
* VQs aren't running.
@@ -2292,6 +2299,27 @@ long vhost_dev_ioctl(struct vhost_dev *d, unsigned int ioctl, void __user *argp)
goto done;
}

+#ifdef CONFIG_VHOST_ENABLE_FORK_OWNER_IOCTL
+ if (ioctl == VHOST_FORK_FROM_OWNER) {
+ u8 inherit_owner;
+ /*inherit_owner can only be modified before owner is set*/
+ if (vhost_dev_has_owner(d)) {
+ r = -EBUSY;
+ goto done;
+ }
+ if (copy_from_user(&inherit_owner, argp, sizeof(u8))) {
+ r = -EFAULT;
+ goto done;
+ }
+ if (inherit_owner > 1) {
+ r = -EINVAL;
+ goto done;
+ }
+ d->inherit_owner = (bool)inherit_owner;
+ r = 0;
+ goto done;
+ }
+#endif
/* You must be the owner to do anything else */
r = vhost_dev_check_owner(d);
if (r)
diff --git a/include/uapi/linux/vhost.h b/include/uapi/linux/vhost.h
index d4b3e2ae1314..d2692c7ef450 100644
--- a/include/uapi/linux/vhost.h
+++ b/include/uapi/linux/vhost.h
@@ -235,4 +235,20 @@
*/
#define VHOST_VDPA_GET_VRING_SIZE _IOWR(VHOST_VIRTIO, 0x82, \
struct vhost_vring_state)
+
+/**
+ * VHOST_FORK_FROM_OWNER - Set the inherit_owner flag for the vhost device,
+ * This ioctl must called before VHOST_SET_OWNER.
+ *
+ * @param inherit_owner: An 8-bit value that determines the vhost thread mode
+ *
+ * When inherit_owner is set to 1(default value):
+ * - Vhost will create tasks similar to processes forked from the owner,
+ * inheriting all of the owner's attributes.
+ *
+ * When inherit_owner is set to 0:
+ * - Vhost will create tasks as kernel thread.
+ */
+#define VHOST_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x83, __u8)
+
#endif
--
2.45.0



Return-Path: <linux-kernel+bounces-669038-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 28C7F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:59:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id BFE627A5B83
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:57:41 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0E8BA239E9E;
Sat, 31 May 2025 09:58:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ilhO1XPr"
Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124])
(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 5562223A987
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:58:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685506; cv=none; b=nJEWMaOQ3qJN77EnnLlDzT9EKMxMUJgm+Gz5o1vKA9LkndnxBBeRaKr/uv864USiktBouyWfPQijeddEQ0MYrQDe+eHOh2lTFQeEhmaqnReiD3bka1+g4wnZ91UQm0E22Sx/FNVwYcyXHiDMzcqWEIpdi1AMXPFJsQuQzFRQ4qM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685506; c=relaxed/simple;
bh=CcOpk8Xyc4VMwwKi2VpRLuGbaZey2YlSpo+8aANMhkg=;
h=From:To:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=p3MPkbbY9fFaouL5bxIkiHnA0eLGUmuHzvPkAoS8z6oCEj/7WIKWKfNgd1VR71qF5RcVX23fpeds0RRUq1sSBVMUsnT+tObxLFWJYe3+wBZ/7934OjKqtQg34I4etUFC1Q2jIwEs5Cv2xsQqC+mWh1YGZsnU7MpWIk9YpySt0Gg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ilhO1XPr; arc=none smtp.client-ip=170.10.133.124
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;
s=mimecast20190719; t=1748685502;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=/eIhXFNCsuT8fyAjm28qjbco9E563cRybykc6t/pZX4=;
b=ilhO1XPrPkKkirBijvkIjMbSr148MgLS3J6fAaEqT7wyh9triHgx5n9KOZshuyTpD/LYHV
3kqhfAdqX6JVFxdWTD9k7HGatoMD8eV7pIiaihQ8CMpDbE6Hpakgu6Lzrj85bcTgC+klbG
TWUEX37dGR+L/21nrJFx7GtFbRLLo5I=
Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com
(ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by
relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,
cipher=TLS_AES_256_GCM_SHA384) id us-mta-246-0PY6_7P0MN-afYLu4e4gTA-1; Sat,
31 May 2025 05:58:21 -0400
X-MC-Unique: 0PY6_7P0MN-afYLu4e4gTA-1
X-Mimecast-MFC-AGG-ID: 0PY6_7P0MN-afYLu4e4gTA_1748685500
Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id D317C180034E;
Sat, 31 May 2025 09:58:19 +0000 (UTC)
Received: from server.redhat.com (unknown [10.72.112.30])
by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DD067180049D;
Sat, 31 May 2025 09:58:15 +0000 (UTC)
From: Cindy Lu <lulu@xxxxxxxxxx>
To: lulu@xxxxxxxxxx,
jasowang@xxxxxxxxxx,
mst@xxxxxxxxxx,
michael.christie@xxxxxxxxxx,
sgarzare@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND v10 2/3] vhost: Reintroduce kthread mode support in vhost
Date: Sat, 31 May 2025 17:57:27 +0800
Message-ID: <20250531095800.160043-3-lulu@xxxxxxxxxx>
In-Reply-To: <20250531095800.160043-1-lulu@xxxxxxxxxx>
References: <20250531095800.160043-1-lulu@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch reintroduces kthread mode support in vhost,
It also introduces struct vhost_worker_ops to abstract
worker create/stop/wakeup operations.

* Bring back the original vhost_worker() implementation,
and renamed to vhost_run_work_kthread_list().

* Add cgroup support for the kthread

* Introduce struct vhost_worker_ops:
- Encapsulates create / stop / wakeâ??up callbacks.
- vhost_worker_create() selects the proper ops according to
inherit_owner.

This partially reverts or improves upon:
commit 6e890c5d5021 ("vhost: use vhost_tasks for worker threads")
commit 1cdaafa1b8b4 ("vhost: replace single worker pointer with xarray")

Signed-off-by: Cindy Lu <lulu@xxxxxxxxxx>
---
drivers/vhost/vhost.c | 188 ++++++++++++++++++++++++++++++++++++++----
drivers/vhost/vhost.h | 12 +++
2 files changed, 182 insertions(+), 18 deletions(-)

diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index 240ba78b1e3f..2d2909be1bb2 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -22,6 +22,7 @@
#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/kthread.h>
+#include <linux/cgroup.h>
#include <linux/module.h>
#include <linux/sort.h>
#include <linux/sched/mm.h>
@@ -246,7 +247,7 @@ static void vhost_worker_queue(struct vhost_worker *worker,
* test_and_set_bit() implies a memory barrier.
*/
llist_add(&work->node, &worker->work_list);
- vhost_task_wake(worker->vtsk);
+ worker->ops->wakeup(worker);
}
}

@@ -392,6 +393,44 @@ static void vhost_vq_reset(struct vhost_dev *dev,
__vhost_vq_meta_reset(vq);
}

+static int vhost_run_work_kthread_list(void *data)
+{
+ struct vhost_worker *worker = data;
+ struct vhost_work *work, *work_next;
+ struct vhost_dev *dev = worker->dev;
+ struct llist_node *node;
+
+ kthread_use_mm(dev->mm);
+
+ for (;;) {
+ /* mb paired w/ kthread_stop */
+ set_current_state(TASK_INTERRUPTIBLE);
+
+ if (kthread_should_stop()) {
+ __set_current_state(TASK_RUNNING);
+ break;
+ }
+ node = llist_del_all(&worker->work_list);
+ if (!node)
+ schedule();
+
+ node = llist_reverse_order(node);
+ /* make sure flag is seen after deletion */
+ smp_wmb();
+ llist_for_each_entry_safe(work, work_next, node, node) {
+ clear_bit(VHOST_WORK_QUEUED, &work->flags);
+ __set_current_state(TASK_RUNNING);
+ kcov_remote_start_common(worker->kcov_handle);
+ work->fn(work);
+ kcov_remote_stop();
+ cond_resched();
+ }
+ }
+ kthread_unuse_mm(dev->mm);
+
+ return 0;
+}
+
static bool vhost_run_work_list(void *data)
{
struct vhost_worker *worker = data;
@@ -586,6 +625,46 @@ long vhost_dev_check_owner(struct vhost_dev *dev)
}
EXPORT_SYMBOL_GPL(vhost_dev_check_owner);

+struct vhost_attach_cgroups_struct {
+ struct vhost_work work;
+ struct task_struct *owner;
+ int ret;
+};
+
+static void vhost_attach_cgroups_work(struct vhost_work *work)
+{
+ struct vhost_attach_cgroups_struct *s;
+
+ s = container_of(work, struct vhost_attach_cgroups_struct, work);
+ s->ret = cgroup_attach_task_all(s->owner, current);
+}
+
+static int vhost_attach_task_to_cgroups(struct vhost_worker *worker)
+{
+ struct vhost_attach_cgroups_struct attach;
+ int saved_cnt;
+
+ attach.owner = current;
+
+ vhost_work_init(&attach.work, vhost_attach_cgroups_work);
+ vhost_worker_queue(worker, &attach.work);
+
+ mutex_lock(&worker->mutex);
+
+ /*
+ * Bypass attachment_cnt check in __vhost_worker_flush:
+ * Temporarily change it to INT_MAX to bypass the check
+ */
+ saved_cnt = worker->attachment_cnt;
+ worker->attachment_cnt = INT_MAX;
+ __vhost_worker_flush(worker);
+ worker->attachment_cnt = saved_cnt;
+
+ mutex_unlock(&worker->mutex);
+
+ return attach.ret;
+}
+
/* Caller should have device mutex */
bool vhost_dev_has_owner(struct vhost_dev *dev)
{
@@ -631,7 +710,7 @@ static void vhost_worker_destroy(struct vhost_dev *dev,

WARN_ON(!llist_empty(&worker->work_list));
xa_erase(&dev->worker_xa, worker->id);
- vhost_task_stop(worker->vtsk);
+ worker->ops->stop(worker);
kfree(worker);
}

@@ -654,42 +733,115 @@ static void vhost_workers_free(struct vhost_dev *dev)
xa_destroy(&dev->worker_xa);
}

+static void vhost_task_wakeup(struct vhost_worker *worker)
+{
+ return vhost_task_wake(worker->vtsk);
+}
+
+static void vhost_kthread_wakeup(struct vhost_worker *worker)
+{
+ wake_up_process(worker->kthread_task);
+}
+
+static void vhost_task_do_stop(struct vhost_worker *worker)
+{
+ return vhost_task_stop(worker->vtsk);
+}
+
+static void vhost_kthread_do_stop(struct vhost_worker *worker)
+{
+ kthread_stop(worker->kthread_task);
+}
+
+static int vhost_task_worker_create(struct vhost_worker *worker,
+ struct vhost_dev *dev, const char *name)
+{
+ struct vhost_task *vtsk;
+ u32 id;
+ int ret;
+
+ vtsk = vhost_task_create(vhost_run_work_list, vhost_worker_killed,
+ worker, name);
+ if (IS_ERR(vtsk))
+ return PTR_ERR(vtsk);
+
+ worker->vtsk = vtsk;
+ vhost_task_start(vtsk);
+ ret = xa_alloc(&dev->worker_xa, &id, worker, xa_limit_32b, GFP_KERNEL);
+ if (ret < 0) {
+ vhost_task_do_stop(worker);
+ return ret;
+ }
+ worker->id = id;
+ return 0;
+}
+
+static int vhost_kthread_worker_create(struct vhost_worker *worker,
+ struct vhost_dev *dev, const char *name)
+{
+ struct task_struct *task;
+ u32 id;
+ int ret;
+
+ task = kthread_create(vhost_run_work_kthread_list, worker, "%s", name);
+ if (IS_ERR(task))
+ return PTR_ERR(task);
+
+ worker->kthread_task = task;
+ wake_up_process(task);
+ ret = xa_alloc(&dev->worker_xa, &id, worker, xa_limit_32b, GFP_KERNEL);
+ if (ret < 0)
+ goto stop_worker;
+
+ ret = vhost_attach_task_to_cgroups(worker);
+ if (ret)
+ goto stop_worker;
+
+ worker->id = id;
+ return 0;
+
+stop_worker:
+ vhost_kthread_do_stop(worker);
+ return ret;
+}
+
+static const struct vhost_worker_ops kthread_ops = {
+ .create = vhost_kthread_worker_create,
+ .stop = vhost_kthread_do_stop,
+ .wakeup = vhost_kthread_wakeup,
+};
+
+static const struct vhost_worker_ops vhost_task_ops = {
+ .create = vhost_task_worker_create,
+ .stop = vhost_task_do_stop,
+ .wakeup = vhost_task_wakeup,
+};
+
static struct vhost_worker *vhost_worker_create(struct vhost_dev *dev)
{
struct vhost_worker *worker;
- struct vhost_task *vtsk;
char name[TASK_COMM_LEN];
int ret;
- u32 id;
+ const struct vhost_worker_ops *ops =
+ dev->inherit_owner ? &vhost_task_ops : &kthread_ops;

worker = kzalloc(sizeof(*worker), GFP_KERNEL_ACCOUNT);
if (!worker)
return NULL;

worker->dev = dev;
+ worker->ops = ops;
snprintf(name, sizeof(name), "vhost-%d", current->pid);

- vtsk = vhost_task_create(vhost_run_work_list, vhost_worker_killed,
- worker, name);
- if (IS_ERR(vtsk))
- goto free_worker;
-
mutex_init(&worker->mutex);
init_llist_head(&worker->work_list);
worker->kcov_handle = kcov_common_handle();
- worker->vtsk = vtsk;
-
- vhost_task_start(vtsk);
-
- ret = xa_alloc(&dev->worker_xa, &id, worker, xa_limit_32b, GFP_KERNEL);
+ ret = ops->create(worker, dev, name);
if (ret < 0)
- goto stop_worker;
- worker->id = id;
+ goto free_worker;

return worker;

-stop_worker:
- vhost_task_stop(vtsk);
free_worker:
kfree(worker);
return NULL;
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index c1ff4a92b925..bef42ed51485 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -26,7 +26,18 @@ struct vhost_work {
unsigned long flags;
};

+struct vhost_worker;
+struct vhost_dev;
+
+struct vhost_worker_ops {
+ int (*create)(struct vhost_worker *worker, struct vhost_dev *dev,
+ const char *name);
+ void (*stop)(struct vhost_worker *worker);
+ void (*wakeup)(struct vhost_worker *worker);
+};
+
struct vhost_worker {
+ struct task_struct *kthread_task;
struct vhost_task *vtsk;
struct vhost_dev *dev;
/* Used to serialize device wide flushing with worker swapping. */
@@ -36,6 +47,7 @@ struct vhost_worker {
u32 id;
int attachment_cnt;
bool killed;
+ const struct vhost_worker_ops *ops;
};

/* Poll a file (eventfd or socket) */
--
2.45.0



Return-Path: <linux-kernel+bounces-669040-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B5B5841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:59:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id C99359E56DC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:59:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1D6A7239E67;
Sat, 31 May 2025 09:59:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b="s4JsNElf"
Received: from dvalin.narfation.org (dvalin.narfation.org [213.160.73.56])
(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 86EEE238C39;
Sat, 31 May 2025 09:59:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.160.73.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748685561; cv=none; b=UtNfnA3gyLrmZal63m7s0B4Z7Md3AjiIPpimxBlRRolBVR7HwiDdgLMa33+LsuV4lBM4nQTfEfqaBQGofm2NwrkNVSh35aGqlJL/6nomYICRT6D+Sn7Gb+CbAN8bs9wO9xMO4webMWvnMvSQS3HgOAGs5GuSovSCvhZMJ08A8ms=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748685561; c=relaxed/simple;
bh=jHNdXiEkBPD/4hRFb5+gNLCWyeacWlbbq8GE5s0EJU0=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=H8+YxsjEtu68uPHeQj/ZrOZZ2adoYj7By6NRTIqbv0Ncge0PcCkFlcpl+1JMWm+Q/xMy6b8NESLczH2qVQRkNub/tyfXtgI4c7UvzWdj4itRHDwvbR3TL39l3iISmqbluJZlQ1Dwe+JjR8oogdHNh+fu8ZvWguYcTeRlq7ZCIF8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org; spf=pass smtp.mailfrom=narfation.org; dkim=pass (1024-bit key) header.d=narfation.org header.i=@narfation.org header.b=s4JsNElf; arc=none smtp.client-ip=213.160.73.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=narfation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=narfation.org
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=narfation.org;
s=20121; t=1748685555;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
in-reply-to:in-reply-to:references:references;
bh=F28uW/kKPBc+Y8EedF7wmeIStqF2kUtY2XQ+UTLAn34=;
b=s4JsNElftbgemCahvFHM5i7zibfPVAa5C95dnFlArOQD1Ow2PQokjqH5SBAe2F/rh5pjeT
9j9QS8md8jV5P3yncFR4uWkilj0xYGUNNEfnBhCVfHoZwdnjk/P0MnK0PhDMV63TYuAKgO
c72/3fSlpryMdWVFR03RgP4eMzXPEvk=
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
To: Marek Lindner <marek.lindner@xxxxxxxxxxx>,
Simon Wunderlich <sw@xxxxxxxxxxxxxxxxxx>,
Antonio Quartulli <antonio@xxxxxxxxxxxxx>,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Simon Horman <horms@xxxxxxxxxx>,
b.a.t.m.a.n@xxxxxxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Matthias Schiffer <mschiffer@xxxxxxxxxxxxxxxxxxxx>
Subject:
Re: [PATCH batadv 5/5] batman-adv: move hardif generation counter into
batadv_priv
Date: Sat, 31 May 2025 11:59:12 +0200
Message-ID: <15478494.dW097sEU6C@sven-desktop>
In-Reply-To:
<fd475dcf9ceaa7d14e4f0b4dca668f93e704f370.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
References:
<0b26554afea5203820faef1dfb498af7533a9b5d.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
<fd475dcf9ceaa7d14e4f0b4dca668f93e704f370.1747687504.git.mschiffer@xxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="nextPart26338690.ouqheUzb2q";
micalg="pgp-sha512"; protocol="application/pgp-signature"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--nextPart26338690.ouqheUzb2q
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="utf-8"; protected-headers="v1"
From: Sven Eckelmann <sven@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 11:59:12 +0200
Message-ID: <15478494.dW097sEU6C@sven-desktop>
MIME-Version: 1.0

On Monday, 19 May 2025 22:46:32 CEST Matthias Schiffer wrote:
> The counter doesn't need to be global.

Yes, with the changes from
[PATCH batadv 1/5] batman-adv: store hard_iface as iflink private data


Acked-by: Sven Eckelmann <sven@xxxxxxxxxxxxx>

Kind regards,
Sven

--nextPart26338690.ouqheUzb2q
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: This is a digitally signed message part.
Content-Transfer-Encoding: 7Bit

-----BEGIN PGP SIGNATURE-----

iHUEABYKAB0WIQS81G/PswftH/OW8cVND3cr0xT1ywUCaDrS8AAKCRBND3cr0xT1
y6P6AP9KRnJJUPOIrj7VPA28oI+6BCBzSpYDpPYREKPl1twT1gD/R6ggdPQFEeRJ
rWPV5+4jwZmGS4UipJNC3BrNZrs8UA8=
=f/dy
-----END PGP SIGNATURE-----

--nextPart26338690.ouqheUzb2q--





Return-Path: <linux-kernel+bounces-669041-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0333941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:12:40 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 81D0C9E5D58
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:12:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 26DC7239E61;
Sat, 31 May 2025 10:12:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Rt4BfImM"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 5924320A5E5;
Sat, 31 May 2025 10:12:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686351; cv=none; b=sUTVfOzYSYe8KcFeS9kurZ5SiXov3XR6HaW57BjnxccrKHTCHqOODGjmS3Wrhazsdd/ic72aQcPWNk+OKGGLpzgIXPSoi35wdZY4gytu74NbfRat7/EBohsewnrh9s080DnC3TbVs9P7XH1/xKHkFMl/ImeonpFBCNQ1HtkUZGc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686351; c=relaxed/simple;
bh=mJ5Rl0qcXcb/5doOfmKI8NZWnM2jDWsTV88Tpvy+T6s=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=DhaPc27K/6T1dsgbbtHcfF4/SWE3OKx3/yrm/RHY3Ll30FvDJRuLaHBz9Y2tuWO92u4gaqCwjGYOSjQ/0Zmo6a+nluGw2/jldNdx4KWM5YIHvMrcuvq6wvjU48N7U/mgvF/mrZpdzpuhfAKLJQ97wxmZKmkPChMJgCirhGhNX5g=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Rt4BfImM; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A432FC4CEE3;
Sat, 31 May 2025 10:12:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748686350;
bh=mJ5Rl0qcXcb/5doOfmKI8NZWnM2jDWsTV88Tpvy+T6s=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=Rt4BfImM1YnVSBaYAS8IPRSbIwVj91TOQs/cl8Z1bnYBr/N6Fv7DHQ0QXrIju/zH2
3KIR7O72VXDYNvAiGdgSk6uFDG0eDFqvc+71AGa9oNbt3zCDnn9yLmKFl6zr/3mwcT
+L4JlOPWEI+RnNOrxiAabvouK7Fqy8ILsp/WDxJgbd9MFkVaeHyjMxPde71iBI6bSi
Ra3H/Yct21uXvydBCuMsp+CSs0BrPmIY1Q3fiQta4UY3qoTec85Ehmo6hZEwGet1Gv
V9Y8M93PnQtD7LG60jPc73TJyN1W0YcJncvHea25CsX/TA9WtsUGbw5ViKac/sJSAy
tCt1TzdGST2aQ==
Date: Sat, 31 May 2025 12:12:24 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Igor Korotin <igor.korotin.linux@xxxxxxxxx>
Cc: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>,
"Rafael J . Wysocki" <rafael@xxxxxxxxxx>,
Len Brown <lenb@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
linux-acpi@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] rust: acpi: add `acpi::DeviceId` abstraction
Message-ID: <aDrWCBAxPnu7VY0P@pollux>
References: <20250530123815.1766726-1-igor.korotin.linux@xxxxxxxxx>
<aDnD_Bb3l6GiI_8K@cassiopeiae>
<CAG7QV92rtk7NUKzUoApkopv1LF2WVjqyNA9hPt=yCuEvdJjoCA@xxxxxxxxxxxxxx>
<2025053111-anteater-balsamic-8d01@gregkh>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <2025053111-anteater-balsamic-8d01@gregkh>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 07:49:46AM +0200, Greg KH wrote:
> On Fri, May 30, 2025 at 05:11:29PM +0100, Igor Korotin wrote:
> > On Fri, May 30, 2025 at 3:43â?¯PM Danilo Krummrich <dakr@xxxxxxxxxx> wrote:
> > >
> > > On Fri, May 30, 2025 at 01:38:06PM +0100, Igor Korotin wrote:
> > > > `acpi::DeviceId` is an abstraction around `struct acpi_device_id`.
> > > >
> > > > This is used by subsequent patches, in particular the i2c driver
> > > > abstractions, to create ACPI device ID tables.
> > > >
> > > > Signed-off-by: Igor Korotin <igor.korotin.linux@xxxxxxxxx>
> > >
> > > As Greg mentioned it would be nice to see the subsequent patches.
> >
> > Ok. There's a little misunderstanding from my side. I'm in the
> > progress of implementation
> > of I2C driver abstractions. I2C drivers can use either "of" or "acpi".
> > The idea was to push this
> > change first, because:
> > - It's quite standalone one.
> > - I'm not sure how much time it will take me to finalize I2C drivers
> > abstractions.
>
> If you don't need it now, then there's no rush to get it merged now :)
>
> > If it is not appropriate way of commits, I'll then keep it until all is done.
>
> We would like to see it be used first, to ensure that the code is
> actually correct.

Alternatively, if you want to upstream this dependency already you can send the
following patches:

- this acpi::DeviceId abstraction
- the glue code for the generic adapter trait in rust/kernel/driver.rs
- use this glue code in the platform abstraction
- add acpi support to the platform sample driver

This way we can already validate that the code works correctly. All this is
required anyways if the I2C device you write a driver for is on the platform
bus.


Return-Path: <linux-kernel+bounces-669042-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1D5B641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:13:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 049269E5EAA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:13:03 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3DA07239E63;
Sat, 31 May 2025 10:13:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KI2i9ajm"
Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E4FCFEAF9;
Sat, 31 May 2025 10:13:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686395; cv=none; b=O3HUJDEhdK537li17zgtEP/2BPAQaUe8UluZj39Nz2VKI9RkkDVa2CZLJXhFLYJujxYh/Yr+9KmG9UWGPc2CyN4rKgkQxXEpu5Hf40UW7X4fV5DOX6JEyhkkwmww5EwRdeFi4P6jPlc/giEOQ1u/6L7o9JKZRwO2Ca5qd6hrAjY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686395; c=relaxed/simple;
bh=fE9rjcOe73GczV4f3iFeM7TbM1yMFp+vz1ozRku4LIE=;
h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Type; b=HzrzQWHVXq5udoZAULST08WNHLT4MEEFhgzM65dJNTCgfWZReN48uwchakGLbKo+wwZ3O+k75d6bv4fP+5HRnKBgNtEKTD7V4uVg3rK+Qbd6VAWLdZmGfv/V6gMXPJQ48R4GJYvU0Beg05kseZ83Uhxpl3KH2Jxyf2egJtP79T4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=KI2i9ajm; arc=none smtp.client-ip=209.85.128.50
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-450cfb79177so13474085e9.0;
Sat, 31 May 2025 03:13:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686392; x=1749291192; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=rQyDzOUbw+LDtAyftP1KtxZK0csZCuFuzRG5f8sdr2M=;
b=KI2i9ajm5fonXYMYcOdLHRK44umKBiKvpQOf23Dmv8jsqOJoz03XL8qGzlMEVc5zAJ
DF1KH5uXFcseLljjnNMqZnkw1fyPYaq3CYzu47Fp2A1WjChE+ib2uy3m2H+QTIVrKziB
ilF070weQEArj3g9E70sAd+zMjpvXJpCgD6hjOn03XvYqNkMel6G03YOSure6mTzPeq/
2t8G0QFAG6IOI1LqiF2UaqGVxJ5VlJASoqAenjk1bydQfpG+jz4htOl55aqOwVXe5qnc
r0uls/Sc9iw6kYDAX9FplX9jQz1KO7tDtx4Fqqf8UMfRNsRBpv8bZbzpxjm2lPiFnm8A
AClg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686392; x=1749291192;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=rQyDzOUbw+LDtAyftP1KtxZK0csZCuFuzRG5f8sdr2M=;
b=oP+VCzWNCLsW3msDUH2BUeZrlMnT7bWrc1fS/WtHjpEg0E9N8gohrNiur98ZaBRoyx
CnRdU7j16OGTBjksPtqm/GSYXnwg/Cam6XHIcGBC5VsWTWpcqGUunSWLqsJW0qA3HEX/
Lxu4t8c5X57j48oenPLCjl0EkCcyHs6F/bT7iNFcwTyPEqODW4RBXaCLv0jXY1IucMdW
Jxa+T4RGZGPmDb8hb1RcxnWOqGEOkUn9QfiScGFUPi+3J9SlpVQWgWSIY0/ahFPlKdQV
kmp5s17JLkyz++Hp7Ja9uKVYxxAvSdqwozSeJm/7IfJ+X+lnrc/uE+1sFw4hgFtGrjn2
fs+g==
X-Forwarded-Encrypted: i=1; AJvYcCUMVt3ks9ZWQz/pfqw99QaM5putf7pMa/T2AY8NJtfxqp1n+ZfA5hEJYykwh+4iswe6D0Hi7o+0@xxxxxxxxxxxxxxx, AJvYcCWmU8xMsto1WLx7n8GHOHesFQUBim/65BHRSI+fCWvKvbq0l/vrWaiEKv3Vk8HuLatFqsc8v2j4E1iEG7g=@vger.kernel.org
X-Gm-Message-State: AOJu0Ywi8hem4d1QFNMatNPCT97BOWW+8eLwCi5NZsG/dzaUH4syc0rY
/qNe/uuO2/hdjauaeN6MoYta9T5GAGRWR1Mb7VSnj4yjHYjZO/Top9kH
X-Gm-Gg: ASbGncvRKDdX3cwW6UsfGChtouEsLzzSAv8Lkx850LEB6SpCR4jYy5k408eZPVi7BIb
BelVRL7TxTkHxJP7qliNNctlV+juVk/C50FBTR6EytgkyKRm2kmy9IuPccBQB/9qmifpCW8gFT/
h2B2HuOfZ9zBJQOCePiAYjnYZM+Ns2nwekBUp/DA/C197C8DCisZoaSxGs9qaZZxlIpskKwdc+f
Lk2Vj3qWIT+HreA2VMFKpwp1OnX9F61CXuX3b6a2aGgWJL18YGw7dTuyOmI2S0pOTYSOIgvAeBC
0CUIFqjjrzRvoHmwcVayw075qMMPrzJJD2JI7sUvi/4+yF64iB83coSsHdx7QRwC8srUu9XkLER
l0hsNcKQOQIbVnPd7ex/vR96pRlyOZ1YKSIfXWblATJQyrh+aPM3TOVKWvVuoEY0=
X-Google-Smtp-Source: AGHT+IH8gXomumzVn3X1fOVNK/UdIN3tXAOtzUrIbf95bqUOQc8bsc17bEKmD7i5aHj0OIc3P580Ag==
X-Received: by 2002:a05:600c:46c7:b0:450:d019:263 with SMTP id 5b1f17b1804b1-450d886f76amr53507445e9.18.1748686391844;
Sat, 31 May 2025 03:13:11 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.10
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:11 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 00/10] net: dsa: b53: fix BCM5325 support
Date: Sat, 31 May 2025 12:12:58 +0200
Message-Id: <20250531101308.155757-1-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

These patches get the BCM5325 switch working with b53.

There are still some sporadic errors related to FDB, but at least the
switch is working now:
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to add d6:67:0c:XX:XX:XX vid 1 to fdb: -28
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to add 5c:4c:a9:XX:XX:XX vid 0 to fdb: -28
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to add 5c:4c:a9:XX:XX:XX vid 1 to fdb: -28
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to delete d6:67:0c:XX:XX:XX vid 1 from fdb: -2

I'm not really sure that everything here is correct since I don't work for
Broadcom and all this is based on the public datasheet available for the
BCM5325 and my own experiments with a Huawei HG556a (BCM6358).

Florian Fainelli (1):
net: dsa: b53: add support for FDB operations on 5325/5365

�lvaro Fernández Rojas (9):
net: dsa: b53: prevent FAST_AGE access on BCM5325
net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
net: dsa: b53: prevent DIS_LEARNING access on BCM5325
net: dsa: b53: prevent BRCM_HDR access on BCM5325
net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325
net: dsa: b53: fix unicast/multicast flooding on BCM5325
net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
net: dsa: b53: ensure BCM5325 PHYs are enabled

drivers/net/dsa/b53/b53_common.c | 213 +++++++++++++++++++++++--------
drivers/net/dsa/b53/b53_priv.h | 57 ++++++---
drivers/net/dsa/b53/b53_regs.h | 47 ++++++-
3 files changed, 246 insertions(+), 71 deletions(-)

--
2.39.5



Return-Path: <linux-kernel+bounces-669043-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2FAD541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:13:40 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id DEF6E9E5D58
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:13:18 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0D4E523A564;
Sat, 31 May 2025 10:13:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CFnEGWlE"
Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id A86D5EAF9;
Sat, 31 May 2025 10:13:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686400; cv=none; b=TGhqS+5LsXgdkIJK5RNE1VqtMr85SBfvpnH7za/Lvm4CYWrYzAv173WW1mXZM259kN20TAyXAItM88hxCE8QyWXbXcuNZWHYM/hmvKpP/anoaeYjP0tipIUFJgMon6KqfhEBeO1o7qBvPDvgh5IkUnu1XzKIbUZpJsF2bn5Crig=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686400; c=relaxed/simple;
bh=+TCwMqM29MSzJsKIOwnIu90KDcktq7NRHGr/qWUAZvI=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=qCuhrkRYdinL1wrMqvWRYe2uXZaHFIrDld7amlPUpm00iG0rVSKarNo1hsxZ6lV3FtxzTm3gsEEJ1lX8SFU5MESY6wbPCGj/8F4Y+fWobDGuDAua8SWBNtMPaDcKDFANa/yi/SSmG/ca7Kci+B0Yl/XIfaM4kc9IXRAkp/KwWOk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CFnEGWlE; arc=none smtp.client-ip=209.85.128.45
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-442f4a3a4d6so16757495e9.0;
Sat, 31 May 2025 03:13:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686395; x=1749291195; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=Q6mdyCUnYClMxKpkumuq3qco0eqhBFAoCt9GF5tCKDQ=;
b=CFnEGWlECJs+6u3G10Cs+kIIN/r3HyeYbyca/EoFyjnxr6BTxpVAivYKcfos2EhJcv
X/D3oxqoPjKKe+RAyWKjWYGoof0wKmYaj/xWKvv2iVL5EEZa24qbHT6/jkdNJVUG4w0q
GFtp3xwrCvMFe+AcEdl9Q2XTEMjjMtzPCqVEgHptSOcjgnttkyjRW5JKzaDodKi2rsw5
T1/RTHtyELQ/HfzojIGT6dWPIzBG8+URYvIJO9P5BoWr9csUWitnyQyE7sxW2wb4rIr1
gQBcFnpsTC43OQVv0jN2pkH/W/MTkHPHVVaqmBYhPj/6adYuIVB3VElyDBw8W1hwJGJi
WGOA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686395; x=1749291195;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=Q6mdyCUnYClMxKpkumuq3qco0eqhBFAoCt9GF5tCKDQ=;
b=lLhohFZ8XVtCbSY+BpVqUP+v5ZsJg7k1E0/D0ZFy/rFWShjaA7e0cYTVE7wsVIsRMG
pI+y+ljVH5W9lD9+qrElhaNTxHDBdesQGG7g1GClTSKnRiiV2sufoLMwMQdlzmFjw7Pp
k7JnJw01IQCcVKQ6mxY46Uh1bX0svILf2CCh8XlbkSv7mWoV35LC/oSIkPZe0+1BALyo
R41o5p2OcPbe8fA8cH8/lb/odE0NVGwj9IJxJStZLQSfYguD48D32+44i8RECG23F1UX
dk4dyeE6mpj0ZNk1Mx1cvdQjcmLt/uoS+hz3YU26qv7RkJxNr93XC25ThhEURnZh3bwn
x4Bw==
X-Forwarded-Encrypted: i=1; AJvYcCVPDFrxloCyFIxlmmHDwBkGdBlgZaDj0NFCMfL0ZnBAzkW3bze+Oi0cRrM6995r/g5cJfSU4HMxy7pWUiU=@vger.kernel.org, AJvYcCVwcC8oZ5qQ4mQaY2DhjU7TaqXj0xYikaH4eyw0uXcjs9y/TNWEdtIACli3m9D9H94sRvaotlXK@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YzuVtlY21yFs7mQEtGqIQNcZG/w5sk+Rs2KbtPYVHknv/ViKEtY
yLXo0y/Rqe8KbIErzuA3C+cxO6FCk//TnfJfLqWv6MGENL4DpXi3X9kK
X-Gm-Gg: ASbGncvtYDllQoPt20zt0JZNCrqCSsMyo3UGvKSQ5xnjbUPGlLQrFGds3C2cQXFhTZJ
OnNropkHO1WB4k9cVHWgk0HLSkkmEp/+QjMuxBmtA8ngI6CGMAG9IlOdQ0nhq8xizA+UQTd0cgl
v8BXS+T8j7q8+MXvy7ZgV50+GT7pGMlxs1hkSBgNX9CkBKW9nwmoUJZyzJa4tt909gNYI7hu3/R
sqoqHeL3I905a4RwaBECgoUKjy6rTtYtAGqjGssvVayq5ZwtzBM8FGcolurgjbthVFcSVfxKfSo
XVOYazgeJT3uahzxoXwLkepTLehlIPDzvLnyrn+nFD+DqksjS/tZIYV8CBfXahQ9scpkThAt3n2
zarNDAkLum0+fGhME9vN198wHW5KsvyWLq/4yO5OAKqssOIA2XAKozJlo8KP/W20=
X-Google-Smtp-Source: AGHT+IEZO+tlyV0y5T3wPmejydYVu6b/z0NuYm+mLVa8S0sl+RrEV/XF03DQ4nSzYlV6FPXlIcB4Xw==
X-Received: by 2002:a05:600c:4f46:b0:43d:fa5f:7d30 with SMTP id 5b1f17b1804b1-450d6bd2efbmr48720975e9.16.1748686394491;
Sat, 31 May 2025 03:13:14 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.13
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:13 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 02/10] net: dsa: b53: prevent FAST_AGE access on BCM5325
Date: Sat, 31 May 2025 12:13:00 +0200
Message-Id: <20250531101308.155757-3-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement FAST_AGE registers so we should avoid reading or
writing them.

Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom RoboSwitch")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 03c1e2e75061..d1249aac6136 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -486,6 +486,9 @@ static int b53_flush_arl(struct b53_device *dev, u8 mask)
{
unsigned int i;

+ if (is5325(dev))
+ return 0;
+
b53_write8(dev, B53_CTRL_PAGE, B53_FAST_AGE_CTRL,
FAST_AGE_DONE | FAST_AGE_DYNAMIC | mask);

@@ -510,6 +513,9 @@ static int b53_flush_arl(struct b53_device *dev, u8 mask)

static int b53_fast_age_port(struct b53_device *dev, int port)
{
+ if (is5325(dev))
+ return 0;
+
b53_write8(dev, B53_CTRL_PAGE, B53_FAST_AGE_PORT_CTRL, port);

return b53_flush_arl(dev, FAST_AGE_PORT);
@@ -517,6 +523,9 @@ static int b53_fast_age_port(struct b53_device *dev, int port)

static int b53_fast_age_vlan(struct b53_device *dev, u16 vid)
{
+ if (is5325(dev))
+ return 0;
+
b53_write16(dev, B53_CTRL_PAGE, B53_FAST_AGE_VID_CTRL, vid);

return b53_flush_arl(dev, FAST_AGE_VLAN);
--
2.39.5



Return-Path: <linux-kernel+bounces-669045-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C8F7041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:14:04 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E4CEB4A375E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:14:05 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9591623958A;
Sat, 31 May 2025 10:13:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="O8wD5uJN"
Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 986FD239E92;
Sat, 31 May 2025 10:13:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686401; cv=none; b=ZXGXi+d1hyc8PJkb0bBpQSXl7SluuGNbjD75BC3sfy9Bjt2pqvLpQ++ISLvtOkZVdgmFjmK0QWXgIP93XJ3gmC+bEiMyN/HzBhQpcsOeVnrH2CfL4vX9ZUq0bZ+JDUgfrep5VcgIcRANBUTOfjFzkNVYt0vVrE/gTfXM8cjg/ug=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686401; c=relaxed/simple;
bh=BVLodL7VonUD/n+bxiZbWGzS0sRhhXUlSQa2zmJciWA=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=e6A9KWOQxusFCfWn+fSWIZq3TkWVIxwjKSDjDqciCN84xjxxRDrRikcNUXIBKXyYhzxm8Zs6k/p6LD4BS99ckgZui/Q0v9d9LFL3KqMd1c6zSi88XeZcz1lHE7XK0rjDbAKD1LIXHOCt0zWYZLYO7o7skwHtjEXvVMFu5bw/iiU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=O8wD5uJN; arc=none smtp.client-ip=209.85.221.44
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3a4f89c6e61so772092f8f.3;
Sat, 31 May 2025 03:13:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686393; x=1749291193; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=/4Pr6ng1LZCz94G4fnmML3y/fZWMRy6IyMWJKeqgTNs=;
b=O8wD5uJNSg/rSc95PY6rwmkE4qdP6638H+wHTNNKaPFGUcFLXEWl74/ugvi2/XE0BJ
2Hb5jmfanaJwXjER8pzilNyyZQnlySr9sQnHFCox9fDz1st8erXhfjVaZKoWTDqeXDr7
tQqGkODfleX4qeQG97tJ40n+E/T9yxxOH7bJdpE2/HddU6Ro8PmNwJjmORbFnn2UGZIs
hF+d0KNcdSSsUzonnRvKBJO50DRfkVcSbwG39p9e0IWtSgi/qP8Ew1Z5UcugcnfsPbZD
7rlmuinYVeTDKpFmoGVHt7f3ZJy1PIHvmRaRbKDk1Yp9quocsiB6iDp3cdme0ABDc1h6
7Plw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686393; x=1749291193;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=/4Pr6ng1LZCz94G4fnmML3y/fZWMRy6IyMWJKeqgTNs=;
b=N3buXU47yZzjFDAMbtA5Biejo+zODB3jPujJbTY6DP8BOoRhza8oNsB2tP9zBJ3qdr
UFiqjodVWEXvGgP77EnrE9y5RI/2BmKXw8tYvTKf93ffRW4YLI83J5tkIKqtoSelo4qa
lJ8Gq1Euc74hhiruT56TOmHzcovLDqWcRBL8XYmTxefTQ4Nx0xNjliRqwinNhrPL/74z
rFqwkYAOPlmX/2fhWj/kk27Hn+ia16bAst6rZ6NOx+DiToiZHwopEAudOtIHkHbXBUqo
G+hHLLTuB/CqnaLSzo8TP7AuKBJAeSuq6cw7C20PDrlGGv5Q05/WVapLk6o40h+nrRdt
havw==
X-Forwarded-Encrypted: i=1; AJvYcCU3ozZ5Eq6+CjktA1B6Fi0Xk756jFYDY/f/GOZO4gTCk8G7SBaqesAUqRNEzP7e7J6o4OrDc1ik@xxxxxxxxxxxxxxx, AJvYcCV/vKLNsqgoBHYGy7ewrs/llUU+3np1Oqy/LhghWreFJJbpkmecd11EtFGQWB0LLg4X9uX9e0NMUmevDcs=@vger.kernel.org
X-Gm-Message-State: AOJu0Yyh6RsEF5rVzE3S3iDjj+idxaLmScvj5xdpQgK7gBdGl76jUSHv
v4WIy+89rEcZD8xEsHUQydfXgwaopwAp+f1aLITMmu8Kpos7BLyeOUmE
X-Gm-Gg: ASbGnctkm3u3gj3sFnl3kqUWC+sPb/NSCTRLtW6sowOEVQw+cqIyzjObOT9C39PSnZ4
jdSKN9hwxku6f87G6UzlTn2P6/V4aq86Mnv1yNvdD1sre1LtZQK80ofw8nU7yR2WCd3hvmfcZUh
Ak3EcnNqFT9ztKtYJ1R+y4i1wlbeYK1kqTbrTei5TtJw20VdeRKCKWvvAKkyPcJfimvZo7y+/hB
FyL+qOZPhNH/+mEyUtDKzoVV6562YkfufVQLKS1XNsfi5vOy0faIOsmQNRDosZRAAGJBqsgZlrR
MDgRQZRrW5r0wyuvihwvvd0CfxvcbcmERB6n9temKUZcFc3u/yTdungIk7tHPYAIuNxvJcM3Wsr
jy2LRihvG/uSwfzfvZumiKmTu6R87VJ23x/QQgaO1axLur4n3lKzQ
X-Google-Smtp-Source: AGHT+IFCGhKTFhFdMf2cutlReI++c9wjRgdtgVVathqW7ed8loFYorLqGfQW4vQSXJwHu0NeDID06g==
X-Received: by 2002:a05:6000:2890:b0:3a4:d02e:84af with SMTP id ffacd0b85a97d-3a4fe3a816fmr1162119f8f.58.1748686393220;
Sat, 31 May 2025 03:13:13 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.12
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:12 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: Florian Fainelli <f.fainelli@xxxxxxxxx>,
=?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 01/10] net: dsa: b53: add support for FDB operations on 5325/5365
Date: Sat, 31 May 2025 12:12:59 +0200
Message-Id: <20250531101308.155757-2-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Florian Fainelli <f.fainelli@xxxxxxxxx>

BCM5325 and BCM5365 are part of a much older generation of switches which,
due to their limited number of ports and VLAN entries (up to 256) allowed
a single 64-bit register to hold a full ARL entry.
This requires a little bit of massaging when reading, writing and
converting ARL entries in both directions.

Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 60 +++++++++++++++++++++-----------
drivers/net/dsa/b53/b53_priv.h | 57 +++++++++++++++++++++---------
drivers/net/dsa/b53/b53_regs.h | 7 ++--
3 files changed, 84 insertions(+), 40 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 132683ed3abe..03c1e2e75061 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1760,9 +1760,11 @@ static int b53_arl_read(struct b53_device *dev, u64 mac,

b53_read64(dev, B53_ARLIO_PAGE,
B53_ARLTBL_MAC_VID_ENTRY(i), &mac_vid);
- b53_read32(dev, B53_ARLIO_PAGE,
- B53_ARLTBL_DATA_ENTRY(i), &fwd_entry);
- b53_arl_to_entry(ent, mac_vid, fwd_entry);
+
+ if (!is5325(dev) && !is5365(dev))
+ b53_read32(dev, B53_ARLIO_PAGE,
+ B53_ARLTBL_DATA_ENTRY(i), &fwd_entry);
+ b53_arl_to_entry(dev, ent, mac_vid, fwd_entry);

if (!(fwd_entry & ARLTBL_VALID)) {
set_bit(i, free_bins);
@@ -1795,7 +1797,8 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,

/* Perform a read for the given MAC and VID */
b53_write48(dev, B53_ARLIO_PAGE, B53_MAC_ADDR_IDX, mac);
- b53_write16(dev, B53_ARLIO_PAGE, B53_VLAN_ID_IDX, vid);
+ if (!is5325(dev))
+ b53_write16(dev, B53_ARLIO_PAGE, B53_VLAN_ID_IDX, vid);

/* Issue a read operation for this MAC */
ret = b53_arl_rw_op(dev, 1);
@@ -1846,12 +1849,14 @@ static int b53_arl_op(struct b53_device *dev, int op, int port,
ent.is_static = true;
ent.is_age = false;
memcpy(ent.mac, addr, ETH_ALEN);
- b53_arl_from_entry(&mac_vid, &fwd_entry, &ent);
+ b53_arl_from_entry(dev, &mac_vid, &fwd_entry, &ent);

b53_write64(dev, B53_ARLIO_PAGE,
B53_ARLTBL_MAC_VID_ENTRY(idx), mac_vid);
- b53_write32(dev, B53_ARLIO_PAGE,
- B53_ARLTBL_DATA_ENTRY(idx), fwd_entry);
+
+ if (!is5325(dev) && !is5365(dev))
+ b53_write32(dev, B53_ARLIO_PAGE,
+ B53_ARLTBL_DATA_ENTRY(idx), fwd_entry);

return b53_arl_rw_op(dev, 0);
}
@@ -1863,12 +1868,6 @@ int b53_fdb_add(struct dsa_switch *ds, int port,
struct b53_device *priv = ds->priv;
int ret;

- /* 5325 and 5365 require some more massaging, but could
- * be supported eventually
- */
- if (is5325(priv) || is5365(priv))
- return -EOPNOTSUPP;
-
mutex_lock(&priv->arl_mutex);
ret = b53_arl_op(priv, 0, port, addr, vid, true);
mutex_unlock(&priv->arl_mutex);
@@ -1895,10 +1894,15 @@ EXPORT_SYMBOL(b53_fdb_del);
static int b53_arl_search_wait(struct b53_device *dev)
{
unsigned int timeout = 1000;
- u8 reg;
+ u8 reg, offset;
+
+ if (is5325(dev) || is5365(dev))
+ offset = B53_ARL_SRCH_CTL_25;
+ else
+ offset = B53_ARL_SRCH_CTL;

do {
- b53_read8(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_CTL, &reg);
+ b53_read8(dev, B53_ARLIO_PAGE, offset, &reg);
if (!(reg & ARL_SRCH_STDN))
return 0;

@@ -1917,11 +1921,19 @@ static void b53_arl_search_rd(struct b53_device *dev, u8 idx,
u64 mac_vid;
u32 fwd_entry;

- b53_read64(dev, B53_ARLIO_PAGE,
- B53_ARL_SRCH_RSTL_MACVID(idx), &mac_vid);
- b53_read32(dev, B53_ARLIO_PAGE,
- B53_ARL_SRCH_RSTL(idx), &fwd_entry);
- b53_arl_to_entry(ent, mac_vid, fwd_entry);
+ if (is5325(dev)) {
+ b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_0_MACVID_25,
+ &mac_vid);
+ } else if (is5365(dev)) {
+ b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_0_MACVID_65,
+ &mac_vid);
+ } else {
+ b53_read64(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL_MACVID(idx),
+ &mac_vid);
+ b53_read32(dev, B53_ARLIO_PAGE, B53_ARL_SRCH_RSTL(idx),
+ &fwd_entry);
+ }
+ b53_arl_to_entry(dev, ent, mac_vid, fwd_entry);
}

static int b53_fdb_copy(int port, const struct b53_arl_entry *ent,
@@ -1942,14 +1954,20 @@ int b53_fdb_dump(struct dsa_switch *ds, int port,
struct b53_device *priv = ds->priv;
struct b53_arl_entry results[2];
unsigned int count = 0;
+ u8 offset;
int ret;
u8 reg;

mutex_lock(&priv->arl_mutex);

+ if (is5325(priv) || is5365(priv))
+ offset = B53_ARL_SRCH_CTL_25;
+ else
+ offset = B53_ARL_SRCH_CTL;
+
/* Start search operation */
reg = ARL_SRCH_STDN;
- b53_write8(priv, B53_ARLIO_PAGE, B53_ARL_SRCH_CTL, reg);
+ b53_write8(priv, offset, B53_ARL_SRCH_CTL, reg);

do {
ret = b53_arl_search_wait(priv);
diff --git a/drivers/net/dsa/b53/b53_priv.h b/drivers/net/dsa/b53/b53_priv.h
index a5ef7071ba07..05c5b9239bda 100644
--- a/drivers/net/dsa/b53/b53_priv.h
+++ b/drivers/net/dsa/b53/b53_priv.h
@@ -286,30 +286,55 @@ struct b53_arl_entry {
u8 is_static:1;
};

-static inline void b53_arl_to_entry(struct b53_arl_entry *ent,
+static inline void b53_arl_to_entry(struct b53_device *dev,
+ struct b53_arl_entry *ent,
u64 mac_vid, u32 fwd_entry)
{
memset(ent, 0, sizeof(*ent));
- ent->port = fwd_entry & ARLTBL_DATA_PORT_ID_MASK;
- ent->is_valid = !!(fwd_entry & ARLTBL_VALID);
- ent->is_age = !!(fwd_entry & ARLTBL_AGE);
- ent->is_static = !!(fwd_entry & ARLTBL_STATIC);
- u64_to_ether_addr(mac_vid, ent->mac);
- ent->vid = mac_vid >> ARLTBL_VID_S;
+ if (is5325(dev) || is5365(dev)) {
+ ent->port = (mac_vid >> ARLTBL_DATA_PORT_ID_S_25) &
+ ARLTBL_DATA_PORT_ID_MASK_25;
+ ent->is_valid = !!(mac_vid & ARLTBL_VALID_25);
+ ent->is_age = !!(mac_vid & ARLTBL_AGE_25);
+ ent->is_static = !!(mac_vid & ARLTBL_STATIC_25);
+ u64_to_ether_addr(mac_vid, ent->mac);
+ ent->vid = mac_vid >> ARLTBL_VID_S_65;
+ } else {
+ ent->port = fwd_entry & ARLTBL_DATA_PORT_ID_MASK;
+ ent->is_valid = !!(fwd_entry & ARLTBL_VALID);
+ ent->is_age = !!(fwd_entry & ARLTBL_AGE);
+ ent->is_static = !!(fwd_entry & ARLTBL_STATIC);
+ u64_to_ether_addr(mac_vid, ent->mac);
+ ent->vid = mac_vid >> ARLTBL_VID_S;
+ }
}

-static inline void b53_arl_from_entry(u64 *mac_vid, u32 *fwd_entry,
+static inline void b53_arl_from_entry(struct b53_device *dev,
+ u64 *mac_vid, u32 *fwd_entry,
const struct b53_arl_entry *ent)
{
*mac_vid = ether_addr_to_u64(ent->mac);
- *mac_vid |= (u64)(ent->vid & ARLTBL_VID_MASK) << ARLTBL_VID_S;
- *fwd_entry = ent->port & ARLTBL_DATA_PORT_ID_MASK;
- if (ent->is_valid)
- *fwd_entry |= ARLTBL_VALID;
- if (ent->is_static)
- *fwd_entry |= ARLTBL_STATIC;
- if (ent->is_age)
- *fwd_entry |= ARLTBL_AGE;
+ if (is5325(dev) || is5365(dev)) {
+ *mac_vid |= (u64)(ent->port & ARLTBL_DATA_PORT_ID_MASK_25) <<
+ ARLTBL_DATA_PORT_ID_S_25;
+ *mac_vid |= (u64)(ent->vid & ARLTBL_VID_MASK_25) <<
+ ARLTBL_VID_S_65;
+ if (ent->is_valid)
+ *mac_vid |= ARLTBL_VALID_25;
+ if (ent->is_static)
+ *mac_vid |= ARLTBL_STATIC_25;
+ if (ent->is_age)
+ *mac_vid |= ARLTBL_AGE_25;
+ } else {
+ *mac_vid |= (u64)(ent->vid & ARLTBL_VID_MASK) << ARLTBL_VID_S;
+ *fwd_entry = ent->port & ARLTBL_DATA_PORT_ID_MASK;
+ if (ent->is_valid)
+ *fwd_entry |= ARLTBL_VALID;
+ if (ent->is_static)
+ *fwd_entry |= ARLTBL_STATIC;
+ if (ent->is_age)
+ *fwd_entry |= ARLTBL_AGE;
+ }
}

#ifdef CONFIG_BCM47XX
diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index 1fbc5a204bc7..1f15332fb2a7 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -324,9 +324,10 @@
#define ARLTBL_VID_MASK 0xfff
#define ARLTBL_DATA_PORT_ID_S_25 48
#define ARLTBL_DATA_PORT_ID_MASK_25 0xf
-#define ARLTBL_AGE_25 BIT(61)
-#define ARLTBL_STATIC_25 BIT(62)
-#define ARLTBL_VALID_25 BIT(63)
+#define ARLTBL_VID_S_65 53
+#define ARLTBL_AGE_25 BIT_ULL(61)
+#define ARLTBL_STATIC_25 BIT_ULL(62)
+#define ARLTBL_VALID_25 BIT_ULL(63)

/* ARL Table Data Entry N Registers (32 bit) */
#define B53_ARLTBL_DATA_ENTRY(n) ((0x10 * (n)) + 0x18)
--
2.39.5



Return-Path: <linux-kernel+bounces-669044-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 671FE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:14:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 8AE2C7A7673
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:12:38 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1A22723956E;
Sat, 31 May 2025 10:13:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UOLGSBDf"
Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id A99B8239E93;
Sat, 31 May 2025 10:13:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686401; cv=none; b=tsI6+yAHdGGvYcTRSYK7e+jCK+k7iaXrzxm5IZ3stUBoPJryjRyTNISu7pmA/n/A64wVM65uFOzlisvspdJATs5jeU14q1vUvyyU9glWTYd26NBkEnnZGaOS3+AbNeewL1q8WAH5rxwsEJQKY84mYGdYggeoFwAJ+byM8CCuFzQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686401; c=relaxed/simple;
bh=8n3S98UFWmOvMsz5XubR+q5X7g2DT4KTgWdfDMAxh0U=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=nkT+2/hPZ4ug6ZROXrhJjSEaa8RfevvQ9xrZgiJ1Cmcz/gFXuEKa9whErpoNCng9hgzJWH3C5MM1v90K4mYR3pxnukunUYQYpJBy4WlJHHNdvHc2wqxkSYZ+SM4geiRpGAUdiVNl8Ay/HPQPlPgJ8dwjHogyl3llP/5NbrqhstM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UOLGSBDf; arc=none smtp.client-ip=209.85.221.52
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3a4fdc27c4aso198450f8f.3;
Sat, 31 May 2025 03:13:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686397; x=1749291197; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=MkE4jy2942B4PnMPCXZQ5ZLTCeZc8Bh/eDtFkQLFjmc=;
b=UOLGSBDfz8Zn0alCmTaY/hMphhyOf9L/34+wHDxEJxXDmrS5vnFvAVg5Lh7qxR0xmz
H96T2+Iz+pAVbY8Eo4/gaZ/mO3qLJPrVbaBtVAFq1zLFT8EX8mhstit8qD6CrGRK/Og9
C9GLb9zmFInI5Th31+Zb+RYtkJ1vU4qy5E2YWb5kmkucu0tas3hluTfmevanoHmdXRGY
1Dxeg7D5b9FyliKiSbJSKd4Eane5jWX17I+DFVGczzu2WP7y0Jj8idmqjiWj960xGeR0
CF7rPtHpWn+exAJXznT7Hx3L/6uOL0AiG7r96vrdqfL/t4kuMjftU0n+mvWo+C/4WBT6
FsEw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686397; x=1749291197;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=MkE4jy2942B4PnMPCXZQ5ZLTCeZc8Bh/eDtFkQLFjmc=;
b=J7ZSVzd5C37+Vl0hhxGex8A6hQpXApTZBq/m8ieN3mOnv2h4Zf44X+F6T0rou1JxZ9
y2+XQ4JYsD8CDIzIfS18AUXjoOOKs8Sa8wr5IhbknxqGYsjf6sOrC01KHSAeKVyg+RgD
1gFHLXu/bEvy9EawOxPAnbyijaCJkQssVUg6nX23BPM7yXI/Qk9CuSdH8Vjy4kItZpDL
a3B8wGsL8eKjH1mJ4VEB5AtCNKd86C14ZfTxUqi3DdHgAixt+zt21hTl25PPa8CcsqAQ
XlAB1s6GuELLMVVwhA48CXQO0KAugKTrKmH0SmpiU9oYGQOGny2P6cXJLC5ypBmJ/AxI
NWUQ==
X-Forwarded-Encrypted: i=1; AJvYcCWlULyhL5eBucp2hCBF9iJMsAl8eZsYhoGEqC8enhH+8BTuSBXu85BpOOvMCdjJtsSpZFdW5+pxA4OG6rg=@vger.kernel.org, AJvYcCXu4LVcSTkJQWAyGd2jlq/5xKicbsu4gEax53Gj0zST50xG9tfRANWd1brZBtMj8AhIKya8qlgO@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YxIGgpqYJEV9ogCSIYdUOc/5eXa3BRsV9bxCxzN+PLoHLpw5YdI
gx74ElLPz3rDDHfHGFb9JoHw0b9DysQGtIa6blZk9N2wdFG2DbC9qM+F
X-Gm-Gg: ASbGncuvQNz5x25TwxrVVK4gwNEbx1FGvy4IYmcnTsy8MZ+TphOMDNJmxhP9ntoOYiu
AF/1GGAAzX/K54avtf9CH6xzN0DvO+MTj4eas4Vb+OXL5oU4UJlPJxvgagu0gTdtrY/jXZ2xSzp
s+Z8j+WDi0BoOugRyYVYtQZFZ+GJMeinfgrdDQIVrVvuhf2cDyhfu8Xw3edHvcsKVTBvzQOsctJ
j2HGQGO2oMoiLbxsQA4s5zUjuJBnyipC/Nk0yQAF7a1muugauw8WMa9XSO/QxMzHvpGk+rpbqhG
Dei+pN30h62zGMFau4nAyGCv9fdz5c3Zv2t6L3jVcsKCriGegjRvIH6NW67UYsrx4laynpRETHC
QEfdkHK3ItM7tEKj/fwiFM1TDksXtkFJPT9FgfdvsJbGX67R8CpgEi08EH72hckg=
X-Google-Smtp-Source: AGHT+IExHMXwbfE+UDOP1fVswoEhC7rRyPuZatr9IuJMgWYcJJZVvO95zoN3HlOGW5ZuuH/pE6nh3w==
X-Received: by 2002:adf:a152:0:b0:3a4:f8fa:9116 with SMTP id ffacd0b85a97d-3a4f8fa9122mr3048641f8f.8.1748686396837;
Sat, 31 May 2025 03:13:16 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.14
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:16 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 03/10] net: dsa: b53: prevent SWITCH_CTRL access on BCM5325
Date: Sat, 31 May 2025 12:13:01 +0200
Message-Id: <20250531101308.155757-4-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement SWITCH_CTRL register so we should avoid reading
or writing it.

Fixes: a424f0de6163 ("net: dsa: b53: Include IMP/CPU port in dumb forwarding mode")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index d1249aac6136..f314aeb81643 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -360,11 +360,12 @@ static void b53_set_forwarding(struct b53_device *dev, int enable)

b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_MODE, mgmt);

- /* Include IMP port in dumb forwarding mode
- */
- b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, &mgmt);
- mgmt |= B53_MII_DUMB_FWDG_EN;
- b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
+ if (!is5325(dev)) {
+ /* Include IMP port in dumb forwarding mode */
+ b53_read8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, &mgmt);
+ mgmt |= B53_MII_DUMB_FWDG_EN;
+ b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
+ }

/* Look at B53_UC_FWD_EN and B53_MC_FWD_EN to decide whether
* frames should be flooded or not.
--
2.39.5



Return-Path: <linux-kernel+bounces-669046-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7013741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:14:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id D6B391BA331A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:14:34 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A562E23C50A;
Sat, 31 May 2025 10:13:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UiEmPxme"
Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3004A23A58E;
Sat, 31 May 2025 10:13:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686402; cv=none; b=sCQy+ToX5O65mZcW6BY7RaDF/lF2rfMjt/gCEa/nbx6k+KBzbJg5var5a29D+1JMp4WQK2idg9VZ3ohUV6DPVLuoIHhJ7Bv+Rcnw9vawKBMJnUIM2pTN2wFqvD3/huWGFYsRPubARJQAixuX85WVt7nFZRzf6EKBZd7arFj232M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686402; c=relaxed/simple;
bh=iYL0kWo8C57OTblWURhzlRKwScVsjVOvYR5N2tjG1Y8=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=LqU20lmKg+Vok4lorrrnK4cnkb4VVkXJ8nTI71LMMgA9nhUtmyuzNxwZOTp7bM3YWTAASSuPnta0iq++Ika3UF04zGkJBnmUH7WvgiBLw1PSl0fAg8AGdGmEMGtaSEq6odixj9+kyHNZl0YIxyeXH7InHfFjYaJM23Oo0rRYxCo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UiEmPxme; arc=none smtp.client-ip=209.85.128.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-450dd065828so6688695e9.2;
Sat, 31 May 2025 03:13:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686399; x=1749291199; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=Vh3R/TzUelfavHKA781XSSQcCKCc2NKqjhPYGHehZcc=;
b=UiEmPxmefcd+3NxDM1nA5AN1T2skmC+XamSwR31/qY4tZLG1XSGYDLlR/WQMMnCpDA
z/zSPBh2vRrvwgSUht8yL7XFKGuqBTwGDpOcAF/Ww/WZWFVnjl1UsD9sySg1zLPvv1SC
5gRB6bXghyThI6ZOt99P7gbwu3EJTNhUAq7ROYpWXAUjYh9ZOGZYqlBGzP6TI9hl1xb4
aNAtMeycnNhmr0AUX6hgbRNnYbPhS2Ju2Uyy6tPSgNlcf3zhfFdLLCKB1Bl6bMgRDiko
07hy8Moj0k0pnogkzzTaHFQyxHw6KmVXJ5uzCY+Tv/dBDjWy3gjtUp8U0X+POdcG6ys+
xgsQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686399; x=1749291199;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=Vh3R/TzUelfavHKA781XSSQcCKCc2NKqjhPYGHehZcc=;
b=cXrNUmJyNO3zAub3x/SqMxBuVnK5iJzDam2Me4YM2FjH31xqqIp8E09AJcyRwhtOgw
5BMteY2s1lPvZ96Zl962/gIc858AxqW4AG1xDWVgO8Nhiqx2Tws3ZiK0OmbiZ98BMSX2
V0k+h4a/6Bkv1QM0ulVUZKXIrhO4wHiv+FLaaIknBD9jUMJVUSIsEmbqM76aG2UY/LEg
gVDyCRi4+CzE6ZwzLySoRhFYc5njPBAwMSQFk9UhBr+Qy9gA6SGrkd8vgFAavpWc0eZw
GtQobbXXo3wFqWLy9Q1PWvNydKXedI0u5D3ekyUIv9USTQem3/EUx0XL4Pea57SE5yul
CDjg==
X-Forwarded-Encrypted: i=1; AJvYcCVD8BIy4qO1DzEIApxyI0LmubzPtd/7P+LCgyQxtYbOAW8Gs6FLiq8CGE/A9T1X/gki43cva+eolf1A+Og=@vger.kernel.org, AJvYcCWnHohYgGBCtxaE+IpnFzJFfbecFLpxG1Tj6dsbHoXlecX7ZCnfTHlJ55/2l/M2/Yj02BCTY/4u@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yx9hnr21u8Rcka72nrX6pW3nSjdxa2hEyhcNtNu3aJYEwlho5M+
xnK92rxj6yg4ssN4tZv8+NK9LDX0h9TEVO17UuujgNR1Nl7vCcxnnBp0
X-Gm-Gg: ASbGnctJUdDvxJv93XxTxLoaW/OWLqjsC56HfavkRDkCacCiwS0oM0vJzAGND+UQU7D
Re6OEcD7IM/uLKKSiPcSe6LYK/cpaWtej4fiCqWC0u7FeuYVUWXWWxyKlp0HGgJM2F4QU8Goy45
6dL+4w50KbmYtIfCYLT34Upg44BV/UxyPzCEIIeXBplacpqBBu5yR6p1PpplMSvLrQGJaTCZ7gL
XSB86Bp50uuyIDZtR3H/F2tThP8Ewt6FqrtP7nby0h0cFg6vDGL5aCo1zHG823htChZy4WTeSmj
hOg+f3Lhwv3OpvzBZRWkNpnY7kz600syaWCEiOgjB2dRttVhm/wbWFJ7ybauzv3wM7d6yR34i1e
yuPLHMAxiLyZN87BIC3kcjGVxikW2mC886JEz3vJlwxA13ERyM6cC
X-Google-Smtp-Source: AGHT+IGDsr6ifFUyjtVi70suMX9WCC3/QjJkvaQj2LDwz1Cbt6kd6e/IrJ8tt5SNLKqHnQNZc6Y9pQ==
X-Received: by 2002:a05:600c:5294:b0:43c:f513:958a with SMTP id 5b1f17b1804b1-450d883b9admr47493285e9.13.1748686398975;
Sat, 31 May 2025 03:13:18 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.16
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:17 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 04/10] net: dsa: b53: fix IP_MULTICAST_CTRL on BCM5325
Date: Sat, 31 May 2025 12:13:02 +0200
Message-Id: <20250531101308.155757-5-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement B53_UC_FWD_EN, B53_MC_FWD_EN or B53_IPMC_FWD_EN.

Fixes: 53568438e381 ("net: dsa: b53: Add support for port_egress_floods callback")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 13 +++++++++----
drivers/net/dsa/b53/b53_regs.h | 1 +
2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index f314aeb81643..6b2ad82aa95f 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -367,11 +367,16 @@ static void b53_set_forwarding(struct b53_device *dev, int enable)
b53_write8(dev, B53_CTRL_PAGE, B53_SWITCH_CTRL, mgmt);
}

- /* Look at B53_UC_FWD_EN and B53_MC_FWD_EN to decide whether
- * frames should be flooded or not.
- */
b53_read8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, &mgmt);
- mgmt |= B53_UC_FWD_EN | B53_MC_FWD_EN | B53_IPMC_FWD_EN;
+ if (is5325(dev)) {
+ /* Enable IP multicast address scheme. */
+ mgmt |= B53_IP_MCAST_25;
+ } else {
+ /* Look at B53_UC_FWD_EN and B53_MC_FWD_EN to decide whether
+ * frames should be flooded or not.
+ */
+ mgmt |= B53_UC_FWD_EN | B53_MC_FWD_EN | B53_IPMC_FWD_EN;
+ }
b53_write8(dev, B53_CTRL_PAGE, B53_IP_MULTICAST_CTRL, mgmt);
}

diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index 1f15332fb2a7..896684d7f594 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -106,6 +106,7 @@

/* IP Multicast control (8 bit) */
#define B53_IP_MULTICAST_CTRL 0x21
+#define B53_IP_MCAST_25 BIT(0)
#define B53_IPMC_FWD_EN BIT(1)
#define B53_UC_FWD_EN BIT(6)
#define B53_MC_FWD_EN BIT(7)
--
2.39.5



Return-Path: <linux-kernel+bounces-669048-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 977C741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:15:04 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 177E09E61BE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:14:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EA6AB23E340;
Sat, 31 May 2025 10:13:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="R4oFMm5J"
Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9421023CF12;
Sat, 31 May 2025 10:13:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686406; cv=none; b=ILbQbVFF04nsuU6p5t7vHPQZ/ifXS8Po6WiUAdyGyOvxth5KF+cFzLOpEU5Y/1j5sLLGzIyoQtk0a19DT+/lilAVz4CxWvKhhAy2lgY1+5dxNxGT7DD7dUn0TZwMDFb7RuQa0llMeJ/XZVFhd8uA2mOjXmMaMJx2E0pzugG2Tbk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686406; c=relaxed/simple;
bh=7/YhPWQDvdUVuI/1+XkZrLrSwyD+17gBCz4NIaKyjRo=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=qn4kx1pDaGQKnFUj1Lw6YHlSiRy+p9g1QFlQIn3vuZ4vgomeivud24jAqRJv9rtbHa59+cNPqxfsuZrlycW0u5BGBwzeEl6GOD2WFAE6jHgJbmGs88PvFGEgAEoFIprFTLn1TsoIIFH1U7zbNe17ppu/0yOryrgOHV5GXJ1b/4w=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=R4oFMm5J; arc=none smtp.client-ip=209.85.221.41
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3a4dc0f164fso2649642f8f.3;
Sat, 31 May 2025 03:13:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686403; x=1749291203; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=ghV/hDhB/JiuYoIk0aNe+BY/iAQV6v1+DxcZO2jXJFU=;
b=R4oFMm5J65yYPQMKLWNT5yDs299hsv3rse+tuebDFfkpLjGxYpCtwiJMnOZ8ms7Nv8
axc+dal6q0ohNotnK6jBCiWv1Wq6Zt8PJr6WdgCOEvWIXtXh364DzXKs5sC3riTKTIiS
Za46GtYtsGZen0KGV5Z18/anhlIyYd7Pm4KjZBiOwkgd3DMz/u+t2tFzXdiglxt6qGx+
4k+CwM6ffwVN+xWOuhQYUKa0GscPyIbAQyuwRUif4ktnYDNsmsV8ty0Kj1tPTIvKMt/3
U2H4HwPHGlcF1czuWA5XY9aUtLhYWgkPCxtmEY+g1zDMnAbakCYfs4bKNA3pWSFsaZyg
NRQg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686403; x=1749291203;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=ghV/hDhB/JiuYoIk0aNe+BY/iAQV6v1+DxcZO2jXJFU=;
b=Q9uq+NFnzorTF4ktfnrz4/X0NO//oqXdrwHoLgPUEB7i1m4in103Lj7sglsU8Zno6P
dAVz/CxGBSIHhoYF2mf8gULqEDyl2wEoxVAkA1PMQru/5uyXsEsyNerS9BvRxRswpRPF
3MdxPPv5MMrynazR+NSE4Bn/02xBDTfW5JHzkbDrVLsadLMDyz1DWOJ1IlNf7RcpZAWr
MYxuGTkRaAkjS2goFl5Oww5Bwh3jFCdEST0Ir7xGAdD6XCAdUJxBeb+w40X7We/1Rte9
l3s9coCIzJE28TPrrmSM1vc5XW9rvnexg7TfJcXgKy4Bo2nbjm/mVM6KnXmSlos456Jx
EYqg==
X-Forwarded-Encrypted: i=1; AJvYcCUuSBfoFr9ASnbKED41iETR6zX3IgUWk7V+/U2pB545JQQI3cc4Z8s/QqBSSsM+eNSZviiAVG6i@xxxxxxxxxxxxxxx, AJvYcCVKpR6xNusz4Kcn+3BHDyZKVIAuIbOeEJw4kTXbI+mE7RI3IIin2kBM8cxfb9js+J9aC1+Xry1P2ZDzqa4=@vger.kernel.org
X-Gm-Message-State: AOJu0YzIY1tJwj//TnTI99PlKltHH5U6pu7mAh5tiIUU27aw/wP19mpJ
LVm5+50rkb1yngFfMqAZjTMAu4m2/GKtxDgsZSheH46VGbs/tehvzGpO
X-Gm-Gg: ASbGncv0JJaYJcykzBqo8tHN9W9EgIvaM2TlOyBjubxBiSVHtifccRGPGm6mgVhrZQS
cMRqOM7LOoDl0QuIzT1PaWWcpWX+SuSWPR26NiPmt1e9HEwR4d7vO/lIU2KYxMFn8omSlhl3MJK
K/MkE8uiRbo3pBAbDYOpTw1gLROymRzeHC32ixe17M708Q0Uegy9YhCiTFQsXlHK+nGY4ZntqNF
yThQtgmXfrRQLveRW72bwV5avWNMfgQu9jHUAXv9q0Xei8rq6zU+sH3qiFmlV94m3HLrgWTv13a
DPqMkaim77moglNukNnXHtrnQJ8tBRxOb0I+BMUCF52thazFrGzPw9xxbflmvQfu7uP3NI7bwfe
AIQjs7VQ+0rs9NH+8tX9wCAMz3F7TCVxJMxfYw6UdQRajDwNSywiXeS2e3LqIRi4=
X-Google-Smtp-Source: AGHT+IG/T+QU4syZHvx6Gkj6jYjK8uO5S/YNUbYnYvz0Cibu+su3WnXnTYku6Y+bGL8hnotoT+M47w==
X-Received: by 2002:a05:6000:420a:b0:3a4:dd16:b287 with SMTP id ffacd0b85a97d-3a4fe178e98mr997698f8f.19.1748686402763;
Sat, 31 May 2025 03:13:22 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.20
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:22 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 06/10] net: dsa: b53: prevent BRCM_HDR access on BCM5325
Date: Sat, 31 May 2025 12:13:04 +0200
Message-Id: <20250531101308.155757-7-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement BRCM_HDR register so we should avoid reading or
writing it.

Fixes: b409a9efa183 ("net: dsa: b53: Move Broadcom header setup to b53")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 9667d4107139..fd0752100df8 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -730,6 +730,10 @@ void b53_brcm_hdr_setup(struct dsa_switch *ds, int port)
hdr_ctl |= GC_FRM_MGMT_PORT_M;
b53_write8(dev, B53_MGMT_PAGE, B53_GLOBAL_CONFIG, hdr_ctl);

+ /* B53_BRCM_HDR not present on BCM5325 */
+ if (is5325(dev))
+ return;
+
/* Enable Broadcom tags for IMP port */
b53_read8(dev, B53_MGMT_PAGE, B53_BRCM_HDR, &hdr_ctl);
if (tag_en)
--
2.39.5



Return-Path: <linux-kernel+bounces-669047-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CEA1141E003FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:15:04 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 576D67AEFC9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:13:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B64E823D28A;
Sat, 31 May 2025 10:13:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="L78DU7tV"
Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3E75A23BCF5;
Sat, 31 May 2025 10:13:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686403; cv=none; b=ujKK9PnWpfb++T7HRuthB/i4zNP5i59HIoEu5tddE8DWNadnAedntjI1ii2NIMug8zbNWGfefqVLfSM7KmRY2FvQ9utpeJtXjvtNZa5nTfvSuojtvek9xmH/Q71tVTCqSkqfdssUu0+o16D+3JcEerv6n+faqNCIEHzPDuZRZLA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686403; c=relaxed/simple;
bh=XVFRmgV0pGlN9XIErmdanh5MPfLR+GksS2fPkb/Rz7s=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=ZC7+HFYXAMZQSQAxS2RTGs2DaJwwxOjrCXZZtyNSr9vHVsrRUgA6E1+If0abwEOhnGTWPagNQZlBEDeastydrxM/gUOk3dGTA3HGKC24RW7+INXQ8hrObF9OkvIKVZDlctGtgYPD5Vg43faRP5QMuAQlrgIjXJaBFqQ9GeskrQc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=L78DU7tV; arc=none smtp.client-ip=209.85.128.52
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-442fda876a6so23338265e9.0;
Sat, 31 May 2025 03:13:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686400; x=1749291200; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=+zvHYVvOURfl5Z7WOGmCpL3hxIkk/tIzVjNzrR9W/TE=;
b=L78DU7tVGFTDGafj6fvSqh4uJ8ritHlqXA7oNcJD1E9Yu15gKj2STfD/yM/Ls965Eg
Q1XptTTaGFtZA2uG1ccbSrkyKNscwAziIfQcggw8TndMQnexB+TKKtgNv2EP8t9amHeA
Wtd0YHUyPd+C/38V0ceDz5NPj/kZg8oYDK1mrODAswMTtAjya+4xV3bu7AwKjD/pvaFS
RXCuBhdirAbr1sMe944KzySaJYjW5wwt0K0TjoZA+sW7VwgPIRlm0+vws/n5LMUGctS4
Dmw3frlMRxGTvlHsDOvnVzuLEwBFShpeXzC3+8vBFFcNMBhhBSVH3YDAcWePUzj8j8pi
avyg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686400; x=1749291200;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=+zvHYVvOURfl5Z7WOGmCpL3hxIkk/tIzVjNzrR9W/TE=;
b=tccr9zMJhDDAi24XrYN3x987d5gun2rGVVT9mqvjpU5fgmmhmhZ+FX4P0zc7t7SCJ/
PD06L/8BNEBiNoCnT6aO00fn/I/cwcO+/4dW5a2vxVQJjQo0EopQ/gjsOxXaqhoDlFRF
4jx+YXef44PDqUp7SvH4H64VmUFBhBBtKvfM6HVAD8C+aO7T9yxG6/Qu1p1WeN9Pv9Tx
W8R5IL0ii4mRlm5PpTL2sSk+CInnG+PqYMVhSB3NULZIb+q1oLJCGC1quYxXakTjE0OC
RTpwNFwyua39376XnTgGZG5pPMzLPOxXa4c//QgwfCDTpXBALeq0iRuPPRQLt3RWEA2y
FmxQ==
X-Forwarded-Encrypted: i=1; AJvYcCUwH3CZAWH32KmFdYhilha9zwTs/txKVNX3B1YCw/z88LLlU7OQ07y1i45veZryriS2v8TUlDG8@xxxxxxxxxxxxxxx, AJvYcCWBtb6jUVitDxz4lbQCsvzMq13FVaMcPn1Rqwf5k/tMcFmt97qvnZzjN/XzMMsYeJYGRHcPH6MRKhH+zrQ=@vger.kernel.org
X-Gm-Message-State: AOJu0YycamT4tkG4UCE95g0sYiedGQY/p7IWpCNoEMQAa4KrvfNeZdGs
0i9rTphPSTISscaT2PBp10i2nf3rWKaZ02Bfwy17X1NhEy1cDlV5vMxN
X-Gm-Gg: ASbGnctemHd+ik17FkiT4R81+8d/ANoieOti8CEQW6SSVBG0haEychgiUW2se2W0l27
KxL/fL6hPithMroQ72PWoRN6l3prFp8ov7ZTLuSqHgMYZjxgQCN5ODlQrAtO4BXslWQlr/ce3/d
sQJXdaIOQc7pkuxo73ct8gIu7shIA81DOYX8uVvJQGi1pAG/K7Gr7rPB7Qp+fJsH39+SNtbGOWp
XFZxAddS8TKAluwHv5N1qPdx6gW0NBJuAvgpRHM023JhSIE5A9mBEUhN1MfzPDUOZRR5qFXMtkS
1YESjvgYIJKTeSuqT7OuhRxmFqqiY8IHco98zO6OijW2JN6yLoU9M0dX8a9K/kJhc8/0z6zAk0P
ZFptxXsnmCc1sRVvy4mmn+QHFdosd4rdxwvuKKNonXM34OdUBQDO+
X-Google-Smtp-Source: AGHT+IG4SNj2HROMxyKZ9eRynGDDh4tdLTRworQTBkztDD0g8LBmHj9vpDxasmNoOqQFAfXPQubjzw==
X-Received: by 2002:a05:600c:8287:b0:43d:878c:7c40 with SMTP id 5b1f17b1804b1-4511ecc26a1mr16471375e9.10.1748686400370;
Sat, 31 May 2025 03:13:20 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.19
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:19 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 05/10] net: dsa: b53: prevent DIS_LEARNING access on BCM5325
Date: Sat, 31 May 2025 12:13:03 +0200
Message-Id: <20250531101308.155757-6-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement DIS_LEARNING register so we should avoid reading
or writing it.

Fixes: f9b3827ee66c ("net: dsa: b53: Support setting learning on port")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 6b2ad82aa95f..9667d4107139 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -593,6 +593,9 @@ static void b53_port_set_learning(struct b53_device *dev, int port,
{
u16 reg;

+ if (is5325(dev))
+ return;
+
b53_read16(dev, B53_CTRL_PAGE, B53_DIS_LEARNING, &reg);
if (learning)
reg &= ~BIT(port);
--
2.39.5



Return-Path: <linux-kernel+bounces-669049-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C7F5441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:15:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0A0C54A3890
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:15:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8810723F43C;
Sat, 31 May 2025 10:13:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Gwcmad6X"
Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F2A723D2B5;
Sat, 31 May 2025 10:13:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686407; cv=none; b=frwrSn82fMpBhSoF4SJ0/58PAQxw5kCw6krHxXp3c4nNQcX+Tq4k30nruw0CMqpRWxtQ597VP+3x75RGlF7hBsegNHk9U50uAgLL8whF69Qnn2EK+jXM2BekAIHW9M28VZindGurzv5UXvtWWfJAx81Y6a+UUy0Zn1aQbY+SgHY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686407; c=relaxed/simple;
bh=UPogUaLI9GrsYx9+mRcPUzXyxH5KbPYf6iaCZrW/0jM=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=ARITbzg9duGIX+Ou43eG3Ea8aOC7JBnJT1J93dj8fNtT26VYai8Mf/qal3tWaAi93N/x3z0qTWSi3ovFmC7s004JvprRilSEtRCIvWFakPw3sLRRwkHO+i1anT8Mztw1yws1hXZviDIsttihGe2jtGNr3jcv0s8E/CzXYMbJKs8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Gwcmad6X; arc=none smtp.client-ip=209.85.128.50
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-451d3f72391so225495e9.3;
Sat, 31 May 2025 03:13:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686404; x=1749291204; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=zFjP+Zg2G7kOQyTgmLTCQiSpHEqYR0UFFWfR0NRaGZ8=;
b=Gwcmad6XjjRsW14e/rITfMYfuN2ph3Jc/E7isE+JS0oqcuftMbpI11Hv6VQhS628+K
KQOngNrk13AQL1TnNJB2qL9pXkax47rdyDuLkRstGRhW0V2CSulrHFgeeFly24504jU8
gL4jk3XcVd9W/8uimcXX0x2h/v1DeHHc6JGNAW5H2V+ooXJWUjdtlv8GFU2oaCAXAMYH
qwcqXGji28TPTIxlpcKb80oTRSu+mWCFYKZzA6r8q/eH+RPvAFGPYjxuM+78K4QspE5X
n/RFdTxykJ1QJ/UTd/iubFD/jr2XCMHpi/5cfb3C3iADH3lpiAc3Oqx2S/TgfTZdCF26
7r+Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686404; x=1749291204;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=zFjP+Zg2G7kOQyTgmLTCQiSpHEqYR0UFFWfR0NRaGZ8=;
b=nr9qY339rAb43xUrzVcQB/XJIwfv5M5mV3Tb+2CaryhlwW9Nq/uQs4p6ulnVkkUnDW
WLCVdA5m/zVygWqkTyT+UJ4+meshpUtISabRGX6jBoMPYqoUguvwUx8t/vU7yxBGsu2L
BkYhCaANSwQcMahWeAkbQlWbN7UIqq+2L73Te4pPfOlX2gF7cK0h7LWtYYjLtUbuPenc
+1JrM6IVGO1bw/iimp97BgkbeJeSitAmCTusQCoi68Y0O0690Xxc+1O+7IDtrh07oRt9
m5A16QQWqjY/3MnZj0nkPJmMvhgFWHeNyMaDMhJh6KiKRX/pqh8lXwvAuAdSNpY+riLZ
/SSQ==
X-Forwarded-Encrypted: i=1; AJvYcCUmviKpqpCvoTx0CJjSuPvKaqTU3XSwVXgeaJB8+SCuBMCYuoV4jUod6P8YNKEXK/tQxRC+5pKTz827+PQ=@vger.kernel.org, AJvYcCW8WBRVYv2etEGDOVzzlAZ3t8PfYXrk+NCRKEOfWJ60WnqsZv7XNR/TXcPz7cdmNMdcoiUu1XNp@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YyOKsVNS+si6klrxR3Qm08WoVmHo3lQlRymknks1ynKlzsY6KHr
4XYU0RxdNXpyj2PsDnfanrpfuoymVXjzbfprb5yM51fSy/e27f3e3wS95CJ5+g==
X-Gm-Gg: ASbGnctls9CaG1MDsUISsQ7kSORftadx4eb+YbVrFVQSnUf1SQfTnnUk6GRq0VioLWx
wfV5fM4Gb3Yio3r4heVPMRyqNr/6Z0JaoBUqF6ch1xbopFG8e8+A97EYA0JRr5alhW6WjdoNofg
8vXdgeaK4Lnc3pWbYXNFPHN+EnLpQ7SHoH4/fYtdphuG9HXIRJ3DvuZxxTv6wvtuffCjfWFEitT
t4qM5Hn2H1+TNIG80reHo/CRyjl/p7RWTBM557VDcj5R7Nxt6Ugbh6nHC0K2q6gNTYJ9DYIetTu
jyvMVAsPvZPRieXutR3V9a8L9+hWKUNuSBErGQeRfysgW+/69v9qZVcdDrhXg4AXzNFnu4X50l9
J4ckQ3+UeaMzonleLgWX5j4ROz9ql9TyoPz+gJIpKj5YnLNZIeh6r
X-Google-Smtp-Source: AGHT+IEOdLROqZFhvh5vTjcQwbtV3FTLF/vN2D5rahFk2RZc1AswBX2qrnbhU0CeB+VezLLn39NS5g==
X-Received: by 2002:a05:600c:8206:b0:441:d437:e3b8 with SMTP id 5b1f17b1804b1-450d8867115mr44456465e9.23.1748686404015;
Sat, 31 May 2025 03:13:24 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.22
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:23 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 07/10] net: dsa: b53: prevent GMII_PORT_OVERRIDE_CTRL access on BCM5325
Date: Sat, 31 May 2025 12:13:05 +0200
Message-Id: <20250531101308.155757-8-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement GMII_PORT_OVERRIDE_CTRL register so we should
avoid reading or writing it.
PORT_OVERRIDE_RX_FLOW and PORT_OVERRIDE_TX_FLOW aren't defined on BCM5325
and we should use PORT_OVERRIDE_LP_FLOW_25 instead.

Fixes: 5e004460f874 ("net: dsa: b53: Add helper to set link parameters")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 21 +++++++++++++++++----
drivers/net/dsa/b53/b53_regs.h | 1 +
2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index fd0752100df8..387e1e7ec749 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1278,6 +1278,8 @@ static void b53_force_link(struct b53_device *dev, int port, int link)
if (port == dev->imp_port) {
off = B53_PORT_OVERRIDE_CTRL;
val = PORT_OVERRIDE_EN;
+ } else if (is5325(dev)) {
+ return;
} else {
off = B53_GMII_PORT_OVERRIDE_CTRL(port);
val = GMII_PO_EN;
@@ -1302,6 +1304,8 @@ static void b53_force_port_config(struct b53_device *dev, int port,
if (port == dev->imp_port) {
off = B53_PORT_OVERRIDE_CTRL;
val = PORT_OVERRIDE_EN;
+ } else if (is5325(dev)) {
+ return;
} else {
off = B53_GMII_PORT_OVERRIDE_CTRL(port);
val = GMII_PO_EN;
@@ -1332,10 +1336,19 @@ static void b53_force_port_config(struct b53_device *dev, int port,
return;
}

- if (rx_pause)
- reg |= PORT_OVERRIDE_RX_FLOW;
- if (tx_pause)
- reg |= PORT_OVERRIDE_TX_FLOW;
+ if (rx_pause) {
+ if (is5325(dev))
+ reg |= PORT_OVERRIDE_LP_FLOW_25;
+ else
+ reg |= PORT_OVERRIDE_RX_FLOW;
+ }
+
+ if (tx_pause) {
+ if (is5325(dev))
+ reg |= PORT_OVERRIDE_LP_FLOW_25;
+ else
+ reg |= PORT_OVERRIDE_TX_FLOW;
+ }

b53_write8(dev, B53_CTRL_PAGE, off, reg);
}
diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index 896684d7f594..ab15f36a135a 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -95,6 +95,7 @@
#define PORT_OVERRIDE_SPEED_10M (0 << PORT_OVERRIDE_SPEED_S)
#define PORT_OVERRIDE_SPEED_100M (1 << PORT_OVERRIDE_SPEED_S)
#define PORT_OVERRIDE_SPEED_1000M (2 << PORT_OVERRIDE_SPEED_S)
+#define PORT_OVERRIDE_LP_FLOW_25 BIT(3) /* BCM5325 only */
#define PORT_OVERRIDE_RV_MII_25 BIT(4) /* BCM5325 only */
#define PORT_OVERRIDE_RX_FLOW BIT(4)
#define PORT_OVERRIDE_TX_FLOW BIT(5)
--
2.39.5



Return-Path: <linux-kernel+bounces-669050-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8937741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:15:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id BD8644A3AF7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:15:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EE43F24166F;
Sat, 31 May 2025 10:13:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ViTUJIq7"
Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C76A23E347;
Sat, 31 May 2025 10:13:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686409; cv=none; b=Sg8ixCs+IofpJXf5KV34LecfszvbRb3O+zKMHi5rK5lnp3JGy8v8RrxH8pnoXkZ7CwmbI1uvWA23IgxZ6pDjPEgB5Xo3VppsWrqaOIxL3QJzcLxEYHljy40dZJtP8AMBBawxOScHKIvO6iCrYw3QJNMdWo9c7NqXZ0uORJc+A8k=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686409; c=relaxed/simple;
bh=bD4v3rEjOHD7pBG0pLzi4E/mT/KKCwu/auYMdQPIe/o=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=ZBuQCkn/x7UbP6JHgEmzZI0PQynceWD58nKS5uhjDC5Txhim9VFOOZmsxZEIBW3hbljsSvwIMy7M4+TIoBkcWpsFhv3lf/ab6JJx8xRku7S7TPY7n/73VV5Wjx+5LoQVwjQ2DQ0EYrFRyA2aY3VfbmQkG/ux2B2jsIZt4/qmdWc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ViTUJIq7; arc=none smtp.client-ip=209.85.221.52
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3a375888297so1662956f8f.1;
Sat, 31 May 2025 03:13:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686405; x=1749291205; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=zx4iJkMCoRJ2ebLIbOi4KlVLh5jV2VPfAaSVfx0MI7k=;
b=ViTUJIq7aUz+bfbL7ehCEljMZw/bfIojsyIcTWQBus/7NPll5Dt5vGncKaTm/TUHK2
/HyGDx/Z7lzd80s2GZeYV7amcoODFjlMr2HywIf4r/j7ia/BbPleh1JJqg+x5AZVFvs5
1/95HhXoWOAjxHzol2OGX4FbSBXnbZ4GFvJVf+0Z6PmT0FGtL5SsGlomrRzEntfpFTeS
M9tEzdJRQV3rZ3tSc0I//99ovCDBHugXf4oiJhkHalqWKBr8Q/gicEPqIzvqQTgktKEs
VlGHTEOoXmOdNIzucCH6Cf2lhUChzQZ/obxzR0HwV02NS/fHTkiIq58EUHgQ+TK9cCRb
cnZw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686405; x=1749291205;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=zx4iJkMCoRJ2ebLIbOi4KlVLh5jV2VPfAaSVfx0MI7k=;
b=Y9NLjpZHbAeTf3/FTA1tQWxmPyNfu9BooCcNpButYeMdBbxl4sFVz0ANb6Sz6olMb1
EDslFzByUO0ET1IhjfiS6QRmhLlSgOzFR35l1lfVf9BQQdnplVDzqDyFQpxOieDqa7+5
Q8YFdRZfMMeRI4m5Qf4aoLThvdINxgJk7hWbWpsKm6G7ClJP0ZVywuw25bQ4YHMO4Rn9
9oFyX/jmtAFNbPv9o4fe6IKc/kdOWpWlnEdSeQLYhLZDHNI+15DxRkuruZRwrJmdjDAm
cqotSZ14GJ7QQfWiz1CK1Rl4KLA9zM+HEsr1MGHUCdATD8+P9EtTMl26+D7Hu0SSedIl
IYjQ==
X-Forwarded-Encrypted: i=1; AJvYcCUNTseXOUk+Bd98JJkCAIZCZ8uNaaYQ94BuNxhgaiB6PreWqrLvy8zZK+L9Xm7cQdKH/LfGLe6C@xxxxxxxxxxxxxxx, AJvYcCX+aq5ho/PKrTpE2TdRCHW4t31pn1ETmDf5/n82gdrM+KNWZZnEOF8/TPnmjzj9svU9Liy1P5l9OGbXhYw=@vger.kernel.org
X-Gm-Message-State: AOJu0YyZUCB/uHh/T6ewFG+AefbwFox9DBKfzh65Ux2dGYiXE6C7Acfq
C9xVNKiJNMZMu1V2NbEZ1kf4BL1nqzeh0kFXMGjlRKlKpL3inqSIyMeY
X-Gm-Gg: ASbGnctjOCt2dl1yiSzqjYv6+qjZ0Qx3O0x7FiKYA0tSc016DJS5sj4+/kmBPZFhcwp
aMV/UOMalxbwYgJIHNnt2etmFSt1P/+YWqrk/NwCzwc+3rNmH48LIyZkU5YFqenZUTnBo2rOQx/
/4QRWhorLFS4kZpDHp43YU51d+DVNGNg5ln2eInU3GkUWSJ01A/8fC7J7EAHnC/njy2At4L8nCB
L5Ep4kui3saFecW5gvvx+AaTCbSXdY2xnadMLLyPcP+244nppHpLxm9ZKR99h5YlrZnJljlTfIP
DgIm4fonb2Q1Qq9ggmTlQzKRwzaZtOe6WPvbtSEQIdmhDVpVttf3rfLz/UKb/KpGnr9uZnaKfL2
BdPwniM6RBLp1O3St5N7uU3Z4k1GJLwQiyrQUxjkbaibqaOnsmypDDttSGWitCxw=
X-Google-Smtp-Source: AGHT+IGXWYOmOy4eaq+vw7hMeYOgIea4+jZ3G2ejxJrvD3nHs321mTWGMsM/ADWz9C53sBJ8lJSIpA==
X-Received: by 2002:a05:6000:18a2:b0:3a3:70ab:b274 with SMTP id ffacd0b85a97d-3a4eed99115mr9109768f8f.12.1748686405345;
Sat, 31 May 2025 03:13:25 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.24
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:24 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 08/10] net: dsa: b53: fix unicast/multicast flooding on BCM5325
Date: Sat, 31 May 2025 12:13:06 +0200
Message-Id: <20250531101308.155757-9-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

BCM5325 doesn't implement UC_FLOOD_MASK, MC_FLOOD_MASK and IPMC_FLOOD_MASK
registers.
This has to be handled differently with other pages and registers.

Fixes: a8b659e7ff75 ("net: dsa: act as passthrough for bridge port flags")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 85 +++++++++++++++++++++++++-------
drivers/net/dsa/b53/b53_regs.h | 38 ++++++++++++++
2 files changed, 105 insertions(+), 18 deletions(-)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 387e1e7ec749..d5216ea2c984 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -560,12 +560,36 @@ static void b53_port_set_ucast_flood(struct b53_device *dev, int port,
{
u16 uc;

- b53_read16(dev, B53_CTRL_PAGE, B53_UC_FLOOD_MASK, &uc);
- if (unicast)
- uc |= BIT(port);
- else
- uc &= ~BIT(port);
- b53_write16(dev, B53_CTRL_PAGE, B53_UC_FLOOD_MASK, uc);
+ if (is5325(dev)) {
+ u8 rc;
+
+ if (port == B53_CPU_PORT_25)
+ port = B53_CPU_PORT;
+
+ b53_read16(dev, B53_IEEE_PAGE, B53_IEEE_UCAST_DLF, &uc);
+ if (unicast)
+ uc |= BIT(port) | B53_IEEE_UCAST_DROP_EN;
+ else
+ uc &= ~BIT(port);
+ b53_write16(dev, B53_IEEE_PAGE, B53_IEEE_UCAST_DLF, uc);
+
+ if (port >= B53_CPU_PORT_25)
+ return;
+
+ b53_read8(dev, B53_RATE_CTL_PAGE, B53_RATE_CONTROL(port), &rc);
+ if (unicast)
+ rc |= (RC_DLF_EN | RC_BKT_SIZE_8K | RC_PERCENT_40);
+ else
+ rc &= ~(RC_DLF_EN);
+ b53_write8(dev, B53_RATE_CTL_PAGE, B53_RATE_CONTROL(port), rc);
+ } else {
+ b53_read16(dev, B53_CTRL_PAGE, B53_UC_FLOOD_MASK, &uc);
+ if (unicast)
+ uc |= BIT(port);
+ else
+ uc &= ~BIT(port);
+ b53_write16(dev, B53_CTRL_PAGE, B53_UC_FLOOD_MASK, uc);
+ }
}

static void b53_port_set_mcast_flood(struct b53_device *dev, int port,
@@ -573,19 +597,44 @@ static void b53_port_set_mcast_flood(struct b53_device *dev, int port,
{
u16 mc;

- b53_read16(dev, B53_CTRL_PAGE, B53_MC_FLOOD_MASK, &mc);
- if (multicast)
- mc |= BIT(port);
- else
- mc &= ~BIT(port);
- b53_write16(dev, B53_CTRL_PAGE, B53_MC_FLOOD_MASK, mc);
+ if (is5325(dev)) {
+ u8 rc;

- b53_read16(dev, B53_CTRL_PAGE, B53_IPMC_FLOOD_MASK, &mc);
- if (multicast)
- mc |= BIT(port);
- else
- mc &= ~BIT(port);
- b53_write16(dev, B53_CTRL_PAGE, B53_IPMC_FLOOD_MASK, mc);
+ if (port == B53_CPU_PORT_25)
+ port = B53_CPU_PORT;
+
+ b53_read16(dev, B53_IEEE_PAGE, B53_IEEE_MCAST_DLF, &mc);
+ if (multicast)
+ mc |= BIT(port) | B53_IEEE_MCAST_DROP_EN;
+ else
+ mc &= ~BIT(port);
+ b53_write16(dev, B53_IEEE_PAGE, B53_IEEE_MCAST_DLF, mc);
+
+ if (port >= B53_CPU_PORT_25)
+ return;
+
+ b53_read8(dev, B53_RATE_CTL_PAGE, B53_RATE_CONTROL(port), &rc);
+ if (multicast)
+ rc |= (RC_BCAST_EN | RC_MCAST_EN | RC_BKT_SIZE_8K |
+ RC_PERCENT_40);
+ else
+ rc &= ~(RC_BCAST_EN | RC_MCAST_EN);
+ b53_write8(dev, B53_RATE_CTL_PAGE, B53_RATE_CONTROL(port), rc);
+ } else {
+ b53_read16(dev, B53_CTRL_PAGE, B53_MC_FLOOD_MASK, &mc);
+ if (multicast)
+ mc |= BIT(port);
+ else
+ mc &= ~BIT(port);
+ b53_write16(dev, B53_CTRL_PAGE, B53_MC_FLOOD_MASK, mc);
+
+ b53_read16(dev, B53_CTRL_PAGE, B53_IPMC_FLOOD_MASK, &mc);
+ if (multicast)
+ mc |= BIT(port);
+ else
+ mc &= ~BIT(port);
+ b53_write16(dev, B53_CTRL_PAGE, B53_IPMC_FLOOD_MASK, mc);
+ }
}

static void b53_port_set_learning(struct b53_device *dev, int port,
diff --git a/drivers/net/dsa/b53/b53_regs.h b/drivers/net/dsa/b53/b53_regs.h
index ab15f36a135a..b0a7ba3d9b65 100644
--- a/drivers/net/dsa/b53/b53_regs.h
+++ b/drivers/net/dsa/b53/b53_regs.h
@@ -29,6 +29,7 @@
#define B53_ARLIO_PAGE 0x05 /* ARL Access */
#define B53_FRAMEBUF_PAGE 0x06 /* Management frame access */
#define B53_MEM_ACCESS_PAGE 0x08 /* Memory access */
+#define B53_IEEE_PAGE 0x0a /* IEEE 802.1X */

/* PHY Registers */
#define B53_PORT_MII_PAGE(i) (0x10 + (i)) /* Port i MII Registers */
@@ -47,6 +48,9 @@
/* VLAN Registers */
#define B53_VLAN_PAGE 0x34

+/* Rate Control Registers */
+#define B53_RATE_CTL_PAGE 0x35
+
/* Jumbo Frame Registers */
#define B53_JUMBO_PAGE 0x40

@@ -368,6 +372,18 @@
#define B53_ARL_SRCH_RSTL_MACVID(x) (B53_ARL_SRCH_RSTL_0_MACVID + ((x) * 0x10))
#define B53_ARL_SRCH_RSTL(x) (B53_ARL_SRCH_RSTL_0 + ((x) * 0x10))

+/*************************************************************************
+ * IEEE 802.1X Registers
+ *************************************************************************/
+
+/* Multicast DLF Drop Control register (16 bit) */
+#define B53_IEEE_MCAST_DLF 0x94
+#define B53_IEEE_MCAST_DROP_EN BIT(11)
+
+/* Unicast DLF Drop Control register (16 bit) */
+#define B53_IEEE_UCAST_DLF 0x96
+#define B53_IEEE_UCAST_DROP_EN BIT(11)
+
/*************************************************************************
* Port VLAN Registers
*************************************************************************/
@@ -478,6 +494,28 @@
/* VLAN Port Default Tag (16 bit) */
#define B53_VLAN_PORT_DEF_TAG(i) (0x10 + 2 * (i))

+/*************************************************************************
+ * Rate Control Page Registers
+ *************************************************************************/
+
+#define B53_RATE_CONTROL(i) (0x00 + (i))
+#define RC_PERCENT_S 0
+#define RC_PERCENT_10 (0 << RC_PERCENT_S)
+#define RC_PERCENT_20 (1 << RC_PERCENT_S)
+#define RC_PERCENT_30 (2 << RC_PERCENT_S)
+#define RC_PERCENT_40 (3 << RC_PERCENT_S)
+#define RC_PERCENT_MASK (3 << RC_PERCENT_S)
+#define RC_BKT_SIZE_S 2
+#define RC_BKT_SIZE_2K (0 << RC_BKT_SIZE_S)
+#define RC_BKT_SIZE_4K (1 << RC_BKT_SIZE_S)
+#define RC_BKT_SIZE_6K (2 << RC_BKT_SIZE_S)
+#define RC_BKT_SIZE_8K (3 << RC_BKT_SIZE_S)
+#define RC_BKT_SIZE_MASK (3 << RC_BKT_SIZE_S)
+#define RC_DLF_EN BIT(4)
+#define RC_BCAST_EN BIT(5)
+#define RC_MCAST_EN BIT(6)
+#define RC_DROP_FRAME BIT(7)
+
/*************************************************************************
* Jumbo Frame Page Registers
*************************************************************************/
--
2.39.5



Return-Path: <linux-kernel+bounces-669051-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E6CF441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:15:45 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3F3504A3A83
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:15:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9DB4E2417F2;
Sat, 31 May 2025 10:13:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="N2E846Cn"
Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4982A23F405;
Sat, 31 May 2025 10:13:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686409; cv=none; b=aXswev9tVTF0uoYNGmR7WXeTcRCBnht+/sHomYSI9bnZLEe14zJ4z6GJfBMLNY9dYRTq2mof04XpruJyC1TT6GCznDPqA1tdJRapy5UCfhZV4KDEJu4ZFhBYsM71P1Qzi1WXqX/KVogXdquW/T6Y4cLmwT2VcUcl9laFoSZRyyI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686409; c=relaxed/simple;
bh=UpNy+T/jEeXU+1/iDHTBtU2p5viCTPkkNk3fmI9mJGc=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=q+M7QC5ypCxXHCIxQQ4U04VN+8Vgy0dwZ8McCWykApu16BpYnJIzp7Z8oJjdTbc7R0kXjbLN4jNAW1tM1SuSp1JfvXMqOhMYobUsYxYI7IIRnr1L2un55aUnRN1Y1NeEgY3am0q33x/2Xv2/Cshy4VvWOUAV+oa5yxHNvQ8IUt4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=N2E846Cn; arc=none smtp.client-ip=209.85.128.43
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4508287895dso21790455e9.1;
Sat, 31 May 2025 03:13:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686407; x=1749291207; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=/UR8qDTsnmdHS6jO91Tr00ab8YJ0mbEjDWTOADy+HJM=;
b=N2E846CnP+xfAb1q9MHYWY/VdOlKwVJSq7TUYJIBXebcq+Tj6UrMOAvLBJDyRqx2Y9
XwIxEbqsrZ8u7hrwr6/UtSJWHdnVjpX2bpRFwzU6TkvO/yHwH6SK31RYoctcDmgKkgfl
BBjmqtCGRaBDTLaRmCQRjtZdH+mrAZaGr5msjoRfiSuQyRcKl6z6/3FHi3HWnf7Gb+fo
HFoi6RNyOhETwv+96Gk7p02fDOKGmVfKM5cN9utl0P1YCh5XJsII2m4zCLFd91MBOf7w
pCIVQecIXl9qMfOJDCnVgyGBSVldQ+qXrOYR5YcNNeu9MUMMeyYbZutBxx7pAUEO6y6o
mAUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686407; x=1749291207;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=/UR8qDTsnmdHS6jO91Tr00ab8YJ0mbEjDWTOADy+HJM=;
b=hT36wL9L9E+ullw1lwJYax+YAPHLvtWrPW6J0HUgcSIyZZjwlsB7MkrSNJiTI0iRYZ
3H/Hf3UCmdnFDO+ueuRjzJRooGE/Am00HVLEdw/oej+gY/qsasG7PjhPY4IOh4CySECz
hh5UgYbE+S0PIjLfW++B+0G9EnFtvtsTVZRuDDCH7eyhqa5Nnfk3nPGuGB1dSD14HygB
Mq76MXJdr4bKiLJfWRAp5sPdttP4QaoRT1Objzzt4a34jmcCryxiBKOLpZnAV8D7T9DL
fM6b139huoEVBLu9emMG9NAQ5uwTr2Ab+Ztjq/U2OvpUIlwGgGFUPcV1yYda+lsR6mpu
HQYg==
X-Forwarded-Encrypted: i=1; AJvYcCUvYIpxdWXHwjNzpoqzcFMK9zwxgMP5p62xVTZxDp2u1/6foDe5+EA4qdWrd3lFG0KfNcQCtPaw@xxxxxxxxxxxxxxx, AJvYcCW+Mps6qb7/7x/Q8TspWSsJvSHdj8vhVvvsFqbVxD4qa2/CdYmNWMIJs2qen2ZGHdZDJTPHVsRUJzdWcqw=@vger.kernel.org
X-Gm-Message-State: AOJu0Yz+TRjau3zQqNIbQJ/5S+YRkgMqh98GW2Hj5m4Fv/LTr+M+lOzS
BI+XbeMFf/dA1Ze8O8nB78If05OKI5PLUXlgkJZBqCzisBszTAnLR8K+
X-Gm-Gg: ASbGnctiq6qyOuBUvR/dlaRyfz4pAkb7l+ooAV40vTT6Kze3BH8FGuBLwTlRTuhYD+O
mn0DnfxYzEBgpfsHc1E3EPP91dIEJr00WFVGt6rpfIXk7YmyTmVGkNN7zhHEyYS7ZMu49W70oG6
ssgtrickSY5l3+gU+/ybqmmGLiahTHwITn8pNR46isiS8jAf4QFw5qqHgnfaRfi5AOuy3H4A9aq
xQ966kCSScICIvoiVHIBUfc5P5eEa0M7dfQ0hD8uGqbqEvRm1xK+1OwzPSV/66PIm54xU7sLXFD
73gbgv5PR4QIOhAL5HiNMtBLKe+2JQhUxUjiwGQXq/8NTzQ0hRtMJK20PBbieuSRqJG70Cnh7D4
ZpdTqsM/72gUm5XeEvZY8D2zO0QP+sDl6Pz2AVxQgn8dWIPKHicgS
X-Google-Smtp-Source: AGHT+IHu7dyYTJKj8oSLt/gG35ZMcoa2d/i2amrHpzYkdvrMMnM30Dnc/vOgmcQTBNRJdZD/kUDOXw==
X-Received: by 2002:adf:b356:0:b0:3a4:e238:6496 with SMTP id ffacd0b85a97d-3a4eedb8aabmr6875064f8f.18.1748686406581;
Sat, 31 May 2025 03:13:26 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.25
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:26 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 09/10] net: dsa: b53: fix b53_imp_vlan_setup for BCM5325
Date: Sat, 31 May 2025 12:13:07 +0200
Message-Id: <20250531101308.155757-10-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

CPU port should be B53_CPU_PORT instead of B53_CPU_PORT_25 for
B53_PVLAN_PORT_MASK register.

Fixes: ff39c2d68679 ("net: dsa: b53: Add bridge support")
Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index d5216ea2c984..802020eaea44 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -543,6 +543,10 @@ void b53_imp_vlan_setup(struct dsa_switch *ds, int cpu_port)
unsigned int i;
u16 pvlan;

+ /* BCM5325 CPU port is at 8 */
+ if ((is5325(dev) || is5365(dev)) && cpu_port == B53_CPU_PORT_25)
+ cpu_port = B53_CPU_PORT;
+
/* Enable the IMP port to be in the same VLAN as the other ports
* on a per-port basis such that we only have Port i and IMP in
* the same VLAN.
--
2.39.5



Return-Path: <linux-kernel+bounces-669052-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DCC4C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:16:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id B872C1BA3947
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:16:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1F99F242D68;
Sat, 31 May 2025 10:13:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Xkp0Bo2y"
Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C1DBA241664;
Sat, 31 May 2025 10:13:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686411; cv=none; b=Y6lUfuHelDD5P1qhSlhYf2V4vx7ao5mhetKp4wpsjEWIc2VssA5xpi7soDYo9J9pyUA8GR8xc1349+vObzn+mAB+iyw1RKEga20LAaAjHfOjPM/jPvIJrzOVlO1s672KlOmKCmofGQS1XdWx7NANzmJ1lcsLEWDNN1r8nHPBHnE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686411; c=relaxed/simple;
bh=LS49dlVCVfhP+stRhRD81356ZmEOJJqyVMdjDTH3+Bs=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version:Content-Type; b=rRQeSnvYjK2fDlpZNi5j9mLmdDovs7JIfNBq6RusAdzngcAGh5sJh2SZbCAEd/8xcUwxqcL6NVf+/w38bE/MIR9I+j7bERXELWgDb0CAX/8LxgM9inObVtLLuaw4efqtMBKi9/bPxBGo4l3MHsfMQ2eYZyIRJKVzAb3eLoAx4O4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Xkp0Bo2y; arc=none smtp.client-ip=209.85.221.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-3a36748920cso3102246f8f.2;
Sat, 31 May 2025 03:13:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748686408; x=1749291208; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=tq1QgWecPXKEOWBa1UyGhmKV+AVmn4AYKr6Ka0MIC54=;
b=Xkp0Bo2yNFf/3upmTCzF9bVz3/Vofy2VJokUf2xsrWUheOgwf/uixRKmfFhRyyMgLZ
uhSN2ijd7DMDyRkaorbTrux9QVFl4rx6xaG0HxDh9MgoKV5xTtexYRqr1gmx4kTGnA8J
ZQQKUZjaBWdOmxtGVkvdFwKZAt7zyoIWa1qzJpCD1gzs3jkPnCkX0HmOW4I1Mm5em5HJ
sNw8T1G8Ark4NPEmy8E/fILA5oyDrm0ULCoS+9ZUoHqu3YbTxuZXSmSWTnjBBmJiwLJg
znauhsu9X8BpaAaPcGhIGUKedJ9Sg8kQ4NKxVoJ4AuLPuLmZheUjaKQk/5z4uT5jXcuU
nl4w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748686408; x=1749291208;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=tq1QgWecPXKEOWBa1UyGhmKV+AVmn4AYKr6Ka0MIC54=;
b=QISP05l9e7jVCLXHDOYDTVeNtRXeMdCo9Vl+KvOm/1o+TFWurqjjSo5Lcyz/oje2Ap
l/hmKI1Jq5xdGKwKBcAocy4ajVf288Ml38YOtLA4n9SY/AFNtJpowkjIRBXK/2pxQNwN
A0kuKHw/ta1siNLE/H3n43jLc7xxHHgj2vqkQfiy15mArbRXxuDN2I3SgRz603YxoeWq
hMevm5oucyuCeKd8GnjkXmlVWRVL+LBO/pMH+6QoPiRhguPk02neN3UeyoNG6POaOq01
wlDBQBdONaZv5dOCg/9MQNdfisJK/avAhfW2h/XrJn4tM0aGtdKkEAW/FacreS19FXts
gabQ==
X-Forwarded-Encrypted: i=1; AJvYcCUk+wkJQB24VN41Mk7uQGWYmQLnXXlCs65OFZ3Y4dSWiZ2ISoTiURz8eYCx37/Mg2Kl49pnNSZ3NFZ0Ivo=@vger.kernel.org, AJvYcCVy1DPCW00tj5slDCactmm6h5u9TGwUCDWx9TikGni8WKhEzuN3fsSeseH65J+GYrIHFTX9ML9X@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YxFd4bJq742bGEe/MS8OE2A+QQzeU8Q85Tv9EpE29hUUeZtt9jV
Wc+Ohh4yvi3cEg6c8Vj4T3SkXJRYrYxu1amfHKOspmY9JllLmrt+lcgc
X-Gm-Gg: ASbGncsMn80vWaMWCrN+a3q93TxkoFRdcnCXA+F+nRjYNI9fe4syL8RnPHt8yp6jRsX
hBmSPx3HK9wO7YVSC2qUEt5I1s/Esz30FnXfJibLjZTirXZ+nV9ubqI9ICueXXxDI+bNK5HYkq4
8lT8vuM5SdURkbYJZf166il2T7vwdpZ2jrn6BoweTDTaOCDJgE6Un0aS0kuOTtOe7Fc5TjoDxrV
SKhta/xuJDVXaz23PoofWQ92TpdkoMho8ElG7biMLSfmz2+QyMU/hIlycGfr6yiuyK5VbDwpjPY
j8T0AyaevmjaRf4mp05hIADx26z+xzt2YQCTtZ/n1j0OBxA+m7cA8TYyt9VjYmUW21wlWQtiiZ/
W0mtO5WWyRDV1yjyEKC2XA7Y4muP80tBe6torVZo3FmWsf2i5egxK
X-Google-Smtp-Source: AGHT+IFq1s/33PU9NhVhaQIXLsSfqaM0L5mQsKy1IdijhQBIKAlU8lKlp8Te8KHbzSrKWn4AeqH/9A==
X-Received: by 2002:a05:6000:2dc6:b0:3a4:dc32:6cbb with SMTP id ffacd0b85a97d-3a4f89cd26dmr4137946f8f.31.1748686407933;
Sat, 31 May 2025 03:13:27 -0700 (PDT)
Received: from skynet.lan (2a02-9142-4580-1200-0000-0000-0000-0008.red-2a02-914.customerbaf.ipv6.rima-tde.net. [2a02:9142:4580:1200::8])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d8000d5dsm44500205e9.26.2025.05.31.03.13.26
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 03:13:27 -0700 (PDT)
From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
To: jonas.gorski@xxxxxxxxx,
florian.fainelli@xxxxxxxxxxxx,
andrew@xxxxxxx,
olteanv@xxxxxxxxx,
davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx,
kuba@xxxxxxxxxx,
pabeni@xxxxxxxxxx,
vivien.didelot@xxxxxxxxx,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
dgcbueu@xxxxxxxxx
Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@xxxxxxxxx>
Subject: [RFC PATCH 10/10] net: dsa: b53: ensure BCM5325 PHYs are enabled
Date: Sat, 31 May 2025 12:13:08 +0200
Message-Id: <20250531101308.155757-11-noltari@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531101308.155757-1-noltari@xxxxxxxxx>
References: <20250531101308.155757-1-noltari@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

According to the datasheet, BCM5325 uses B53_PD_MODE_CTRL_25 register to
disable clocking to individual PHYs.

Signed-off-by: �lvaro Fernández Rojas <noltari@xxxxxxxxx>
---
drivers/net/dsa/b53/b53_common.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index 802020eaea44..7b786d0d14cd 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1299,6 +1299,9 @@ static int b53_setup(struct dsa_switch *ds)

b53_reset_mib(dev);

+ if (is5325(dev))
+ b53_write8(dev, B53_CTRL_PAGE, B53_PD_MODE_CTRL_25, 0);
+
ret = b53_apply_config(dev);
if (ret) {
dev_err(ds->dev, "failed to apply configuration\n");
--
2.39.5



Return-Path: <linux-kernel+bounces-669053-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 958F141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:18:39 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 895EB7A73A8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:17:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EA98C239561;
Sat, 31 May 2025 10:18:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YxadSmhs"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 315AC217659;
Sat, 31 May 2025 10:18:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748686708; cv=none; b=UzQR/Uama3kMkHaGIFmFAeKR/46AXgh3oJ+JFCTKaVjOwhnZHdsbMR24DZt5RpVkWPfz8W3ONxc+mIqrx8Pi4qIIZuGu5Gnyr46yDHuRzbtA76VcdBqfYga6n8ZNZPGcEUmxAKoageBWPg92c4Vy8EK4ZeXyD0YD3/pJWq0RFd8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748686708; c=relaxed/simple;
bh=daIX+EyrWoEm7pabJxzyefxD7/8+85xoVsxKyfQTtvo=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=W9Np7QMwkO7qgQrBntmz74+hEnW+cj5eaJ035OyTvL4jAlv8RzuaI+SEIIVngQFgtbbzAb0ZjP2FVB5oX0/L+r7IgojxZ3scvGt229j4s/pruvPyP+iVte/CMEcdwouEkoLL4ngmQpqGF0RFKBO+fKomNNUmaw4FMO9BPZaJcL4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YxadSmhs; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 917EFC4CEEF;
Sat, 31 May 2025 10:18:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748686707;
bh=daIX+EyrWoEm7pabJxzyefxD7/8+85xoVsxKyfQTtvo=;
h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
b=YxadSmhsD/zt76/KXh1eWR3bEx4GbAt8oJ5BaxTtrlT0vL0yBv/BfDNpaupr/Gcvk
Qx2ndLLpsghBjYjwcI7PaxZeTIeC5Y+Hwbsm1dkDJjAz5F184zGudBvT4WaYRzr5o4
h7dMmz5rEf8vaKSlEPquofHKLcCgNR4B8d4sA8SRSovXTBcRniQw/ArT/xp9PybZU4
SEtzl1EqklJBjSenKUc+BXmjLnG/qAURLI1mK1C1LYXGl3fLKVocyUpcPCNli0RR+E
u0Po57BsfdR6TodlNFHjCp7ApLlLqu2tLKD9vH0hBl1mi63O55GjyvYFbb6XO24ExL
pbeEJj8ttu5/g==
Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-adb2e9fd208so383580066b.3;
Sat, 31 May 2025 03:18:27 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCUYQjEwpSPcK9kiX9U9ImphNI4+t+rktwhGtd2xPduZZGxR4tNCczbfkxBTnbj3iEvtT5Qn46jeiSWwsPox9ys=@vger.kernel.org, AJvYcCWuCCvH4Bot4islkplmdGjglOiNLtfG0JcyRom2+QhFUpG6slYWTuJh1hTXRmlQifP1N/8ACcxB6ERdfzg=@vger.kernel.org
X-Gm-Message-State: AOJu0Yx6cb0/wXBbrX4Y4YyEXsSxnR4NlzLTB6BmkiJgDDl1DK22MvgX
iN+MoTNlmf0k1XO2cwyMMiZ8mr+ysGrlCmoBh6UTEkeRF3AaSNiNS2Fu11aEm4+dduyIcrwaQoa
UiU9yINdAweCzUwIu5WOLZp3ld2+uStY=
X-Google-Smtp-Source: AGHT+IEDJqOa2yWDEGr2DGCbNEd8wT2szHYPbuYQA9ij+vJStx/hpNc2NyVeB01f0MjTWoT2l+lkdD0prsajJVJcqBg=
X-Received: by 2002:a17:906:6a0a:b0:ad5:3a97:8438 with SMTP id
a640c23a62f3a-adb3242e81fmr633622966b.41.1748686706194; Sat, 31 May 2025
03:18:26 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <D9Y0VJKOAQAY.2GJSAZ5II54VV@xxxxxxxxxx> <DA8G3G918FS4.X8D7PQMT4TGB@xxxxxxxxxx>
<2025052932-pyramid-unvisited-68f7@gregkh> <DA935OIFBM1H.3CMSHQ46LLG4P@xxxxxxxxxx>
<2025053047-theology-unsaid-d6ac@gregkh> <DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh> <DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh> <CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
<2025053148-gore-badass-1d1d@gregkh>
In-Reply-To: <2025053148-gore-badass-1d1d@gregkh>
From: Timur Tabi <timur@xxxxxxxxxx>
Date: Sat, 31 May 2025 05:17:48 -0500
X-Gmail-Original-Message-ID: <CAOZdJXVSByiwGWusdajdTVma2aC3ibZtSz9XBpRy4MJrKuxfvw@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFtUnO02snDc3OeKtKk-Mq0kTX0pe2-dVmvg0hBjLU_PXHFDLIwi0m9MQo8
Message-ID: <CAOZdJXVSByiwGWusdajdTVma2aC3ibZtSz9XBpRy4MJrKuxfvw@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] rust: add basic ELF sections parser
To: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
Cc: Timur Tabi <timur@xxxxxxxxxx>, Alexandre Courbot <acourbot@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, John Hubbard <jhubbard@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>, =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
rust-for-linux@xxxxxxxxxxxxxxx, Timur Tabi <ttabi@xxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 12:45=E2=80=AFAM Greg KH <gregkh@xxxxxxxxxxxxxxxxxx=
g> wrote:

> > IMHO, Nova should really do what Nouveau does, and just have the image
> > parser in the driver itself, without any generic Rust code to do it.
> > After all, what Nova needs to do with these images is driver-specific.
>
> Again, no, do not do any firmware image parsing in the kernel please
> unless you can prove exactly why it MUST be done there.

Nouveau is already doing all this, just in C. This entire argument is
over a 12-line function:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri=
vers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c#n1824

Nouveau needs to do this in kernel space because, once it finds the
appropriate section in the ELF image, it reads a hardware register to
determine how to patch it:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri=
vers/gpu/drm/nouveau/nvkm/falcon/gm200.c#n342

Since this hardware register cannot be read in user-space, this needs
to be done in the kernel.

Please note that there other drivers in Linux that iterate over ELF
sections in order to parse their firmware images:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri=
vers/gpu/drm/imagination/pvr_fw_util.c#n29
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri=
vers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c#n925
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/dri=
vers/remoteproc/qcom_q6v5_mss.c#n1374


Return-Path: <linux-kernel+bounces-669054-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2B32541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:23:48 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 331654A3892
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:23:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D728C23909F;
Sat, 31 May 2025 10:23:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="IMd38nGz"
Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199])
(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 3CE4741760;
Sat, 31 May 2025 10:23:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.92.199
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687021; cv=none; b=U02L6G7IjbO0y2N8G40CD9yk4/l56s6eJzlwAgvx9GT0lfWtHrfOnKSauCBzXhArmHiMFM9BmONKRetDDk5wZoL04UBVrggRX+lQdhGd/V0rq8fx+qMcpJH6hdzas+35oA9jeezzjrHy0w6rZXWTqxdEwjPPD4E0iHaUDl4lg6I=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687021; c=relaxed/simple;
bh=2AUZl1dxP5gms+0vwRI99b6G9DX6qOkXRh+TDthf3bk=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=msWHxloaghBrpelm4E73hm9NMyfToRqFeMis9C4wR/9R9tq5VsWl+t+i8RXQJNZdqn9VULMIv7GQIRJ3ZQXR3b1KTiniQ0NNHTQEaMD2izNHkbaT0n0m9L7i2TKqFdDbTwNHfRFJYuVbAXPSnWmCK0t+XImXpgOA/SofXOrGPvI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=IMd38nGz; arc=none smtp.client-ip=90.155.92.199
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=desiato.20200630; h=In-Reply-To:Content-Type:MIME-Version:
References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:
Content-Transfer-Encoding:Content-ID:Content-Description;
bh=zwMGUk+AbsVsmvDS23RbOZVDKaCTtLFw2JW5GjAg6Y0=; b=IMd38nGzOi3FLNYNHSNJy6Jh/N
mL8dl83XmHIVmx7sbnFLqcU4D6q67zjCSi/DNf8gjMV1sezz7HmywRNjr5QNf1cNHWK+JB9+Vf1xB
oyqMP3JW0wF6FdeeNQ9UEv13TuqpJdptncl/hxgX9Uqx+hFXCMwjYM60hxmncHuMq7ZA7hL5xvumr
oIa+FyPwUoJjjCmaCCfv+pBkJGCG7WDgqtCkFsiCsjf5BWZRzbZfCpqaQc13506mnPUOba9zXNy3p
JOe6+lRfhbXXE/3bcQK9d2rmTe25U7BOKjQLIK1H/KMjxWOVIjPB+u1LxVZjmkXh8oNCJ++HKa1VL
NIQ1e+9g==;
Received: from 77-249-17-252.cable.dynamic.v4.ziggo.nl ([77.249.17.252] helo=noisy.programming.kicks-ass.net)
by desiato.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLJMo-00000000LgD-0ufz;
Sat, 31 May 2025 10:23:07 +0000
Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000)
id 11B18300787; Sat, 31 May 2025 12:23:05 +0200 (CEST)
Date: Sat, 31 May 2025 12:23:04 +0200
From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
To: Kees Cook <kees@xxxxxxxxxx>
Cc: Alessandro Carminati <acarmina@xxxxxxxxxx>,
linux-kselftest@xxxxxxxxxxxxxxx,
Dan Carpenter <dan.carpenter@xxxxxxxxxx>,
Daniel Diaz <daniel.diaz@xxxxxxxxxx>,
David Gow <davidgow@xxxxxxxxxx>,
Arthur Grillo <arthurgrillo@xxxxxxxxxx>,
Brendan Higgins <brendan.higgins@xxxxxxxxx>,
Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Maxime Ripard <mripard@xxxxxxxxxx>,
Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>,
Daniel Vetter <daniel@xxxxxxxx>, Guenter Roeck <linux@xxxxxxxxxxxx>,
Alessandro Carminati <alessandro.carminati@xxxxxxxxx>,
Jani Nikula <jani.nikula@xxxxxxxxx>,
Jeff Johnson <jeff.johnson@xxxxxxxxxxxxxxxx>,
Josh Poimboeuf <jpoimboe@xxxxxxxxxx>,
Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>,
Linux Kernel Functional Testing <lkft@xxxxxxxxxx>,
dri-devel@xxxxxxxxxxxxxxxxxxxxx, kunit-dev@xxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Mark Rutland <mark.rutland@xxxxxxx>
Subject: Re: [PATCH v5 1/5] bug/kunit: Core support for suppressing warning
backtraces
Message-ID: <20250531102304.GF21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250526132755.166150-1-acarmina@xxxxxxxxxx>
<20250526132755.166150-2-acarmina@xxxxxxxxxx>
<20250529090129.GZ24938@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<CAGegRW76X8Fk_5qqOBw_aqBwAkQTsc8kXKHEuu9ECeXzdJwMSw@xxxxxxxxxxxxxx>
<20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<202505301037.D816A49@keescook>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <202505301037.D816A49@keescook>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 10:48:47AM -0700, Kees Cook wrote:
> On Fri, May 30, 2025 at 04:01:40PM +0200, Peter Zijlstra wrote:
> > I'm not really concerned with performance here, but more with the size
> > of the code emitted by WARN_ONCE(). There are a *ton* of WARN sites,
> > while only one report_bug() and printk().
> >
> > The really offensive thing is that this is for a feature most nobody
> > will ever need :/
>
> Well, it won't be enabled often -- this reminds me of ftrace: it needs
> to work, but it'll be off most of the time.

Well, ftrace is useful, but when would I *ever* care about this stuff? I
can't operate kunit, don't give a crap about kunit, and if I were to
magically run it, I would be more than capable of ignoring WARNs.


> I like the patch! Can you add a _little_ documentation, though? e.g.
> explaining that BUG_WARN ... BUG_WARN_END is for format string args,
> etc.

Cleaned it up a little bit... I'll add some comments on later :-)

I also need to go fix WARN_ONCE(), at least for the n<=2 cases that can
use BUGFLAG_ONCE now.

---
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
index f0e9acf72547..3aecedf46d0c 100644
--- a/arch/x86/include/asm/bug.h
+++ b/arch/x86/include/asm/bug.h
@@ -5,6 +5,7 @@
#include <linux/stringify.h>
#include <linux/instrumentation.h>
#include <linux/objtool.h>
+#include <linux/args.h>

/*
* Despite that some emulators terminate on UD2, we use it for WARN().
@@ -26,52 +27,52 @@
#define BUG_UD2 0xfffe
#define BUG_UD1 0xfffd
#define BUG_UD1_UBSAN 0xfffc
+#define BUG_UD1_WARN 0xfffb
#define BUG_EA 0xffea
#define BUG_LOCK 0xfff0

#ifdef CONFIG_GENERIC_BUG

+#define BUG_HAS_FORMAT
+
#ifdef CONFIG_X86_32
-# define __BUG_REL(val) ".long " __stringify(val)
+#define ASM_BUG_REL(val) .long val
#else
-# define __BUG_REL(val) ".long " __stringify(val) " - ."
+#define ASM_BUG_REL(val) .long val - .
#endif

#ifdef CONFIG_DEBUG_BUGVERBOSE
+#define ASM_BUGTABLE_VERBOSE(file, line) \
+ ASM_BUG_REL(file) ; \
+ .word line
+#define ASM_BUGTABLE_VERBOSE_SIZE 6
+#else
+#define ASM_BUGTABLE_VERBOSE(file, line)
+#define ASM_BUGTABLE_VERBOSE_SIZE 0
+#endif

-#define _BUG_FLAGS(ins, flags, extra) \
-do { \
- asm_inline volatile("1:\t" ins "\n" \
- ".pushsection __bug_table,\"aw\"\n" \
- "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \
- "\t" __BUG_REL(%c0) "\t# bug_entry::file\n" \
- "\t.word %c1" "\t# bug_entry::line\n" \
- "\t.word %c2" "\t# bug_entry::flags\n" \
- "\t.org 2b+%c3\n" \
- ".popsection\n" \
- extra \
- : : "i" (__FILE__), "i" (__LINE__), \
- "i" (flags), \
- "i" (sizeof(struct bug_entry))); \
-} while (0)
+#define ASM_BUGTABLE_FORMAT(format) \
+ ASM_BUG_REL(format)

-#else /* !CONFIG_DEBUG_BUGVERBOSE */
+#define ASM_BUGTABLE_FLAGS(at, format, file, line, flags) \
+ .pushsection __bug_table, "aw" ; \
+ 123: ASM_BUG_REL(at) ; \
+ ASM_BUGTABLE_FORMAT(format) ; \
+ ASM_BUGTABLE_VERBOSE(file, line) ; \
+ .word flags ; \
+ .org 123b + 6 + 4 + ASM_BUGTABLE_VERBOSE_SIZE ; \
+ .popsection

#define _BUG_FLAGS(ins, flags, extra) \
do { \
asm_inline volatile("1:\t" ins "\n" \
- ".pushsection __bug_table,\"aw\"\n" \
- "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \
- "\t.word %c0" "\t# bug_entry::flags\n" \
- "\t.org 2b+%c1\n" \
- ".popsection\n" \
- extra \
- : : "i" (flags), \
- "i" (sizeof(struct bug_entry))); \
+ __stringify(ASM_BUGTABLE_FLAGS(1b, %c[fmt], %c[file], %c[line], %c[fl])) "\n" \
+ extra \
+ : : [fmt] "i" (NULL), [file] "i" (__FILE__), \
+ [line] "i" (__LINE__), \
+ [fl] "i" (flags)); \
} while (0)

-#endif /* CONFIG_DEBUG_BUGVERBOSE */
-
#else

#define _BUG_FLAGS(ins, flags, extra) asm volatile(ins)
@@ -100,6 +101,62 @@ do { \
instrumentation_end(); \
} while (0)

+#ifndef __ASSEMBLER__
+struct pt_regs;
+extern void __warn_printf(const char *fmt, struct pt_regs *regs);
+#define __warn_printf __warn_printf
+#endif
+
+#define __WARN_printf_0(taint, format) \
+do { \
+ __auto_type __flags = BUGFLAG_WARNING | BUGFLAG_FORMAT | BUGFLAG_TAINT(taint); \
+ instrumentation_begin(); \
+ asm_inline volatile("1: ud2\n" \
+ ANNOTATE_REACHABLE(1b) \
+ __stringify(ASM_BUGTABLE_FLAGS(1b, %c[fmt], %c[file], %c[line], %c[fl])) "\n" \
+ : : [file] "i" (__FILE__), [line] "i" (__LINE__), \
+ [fl] "i" (__flags), [fmt] "i" (format)); \
+ instrumentation_end(); \
+} while (0)
+
+#define __WARN_printf_1(taint, format, arg1) \
+do { \
+ __auto_type __flags = BUGFLAG_WARNING | BUGFLAG_FORMAT | BUGFLAG_TAINT(taint); \
+ instrumentation_begin(); \
+ asm_inline volatile("1: ud1 (%%rcx), %[a1]\n" \
+ ANNOTATE_REACHABLE(1b) \
+ __stringify(ASM_BUGTABLE_FLAGS(1b, %c[fmt], %c[file], %c[line], %c[fl])) "\n" \
+ : : [file] "i" (__FILE__), [line] "i" (__LINE__), \
+ [fl] "i" (__flags), [fmt] "i" (format), \
+ [a1] "r" ((unsigned long)(arg1))); \
+ instrumentation_end(); \
+} while (0)
+
+#define __WARN_printf_2(taint, format, arg1, arg2) \
+do { \
+ __auto_type __flags = BUGFLAG_WARNING | BUGFLAG_FORMAT | BUGFLAG_TAINT(taint); \
+ instrumentation_begin(); \
+ asm_inline volatile("1: ud1 %[a2], %[a1]\n" \
+ ANNOTATE_REACHABLE(1b) \
+ __stringify(ASM_BUGTABLE_FLAGS(1b, %c[fmt], %c[file], %c[line], %c[fl])) "\n" \
+ : : [file] "i" (__FILE__), [line] "i" (__LINE__), \
+ [fl] "i" (__flags), [fmt] "i" (format), \
+ [a1] "r" ((unsigned long)(arg1)), \
+ [a2] "r" ((unsigned long)(arg2))); \
+ instrumentation_end(); \
+} while (0)
+
+#define __WARN_printf_n(taint, fmt, arg...) do { \
+ instrumentation_begin(); \
+ __warn_printk(fmt, arg); \
+ __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
+ instrumentation_end(); \
+ } while (0)
+
+#define WARN_ARGS(X...) __COUNT_ARGS(, ##X, n, n, n, n, n, n, n, n, n, n, n, n, n, 2, 1, 0)
+
+#define __WARN_printf(taint, fmt, arg...) CONCATENATE(__WARN_printf_, WARN_ARGS(arg))(taint, fmt, ## arg)
+
#include <asm-generic/bug.h>

#endif /* _ASM_X86_BUG_H */
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c
index 94c0236963c6..bb9193fd3d2d 100644
--- a/arch/x86/kernel/traps.c
+++ b/arch/x86/kernel/traps.c
@@ -81,18 +81,6 @@

DECLARE_BITMAP(system_vectors, NR_VECTORS);

-__always_inline int is_valid_bugaddr(unsigned long addr)
-{
- if (addr < TASK_SIZE_MAX)
- return 0;
-
- /*
- * We got #UD, if the text isn't readable we'd have gotten
- * a different exception.
- */
- return *(unsigned short *)addr == INSN_UD2;
-}
-
/*
* Check for UD1 or UD2, accounting for Address Size Override Prefixes.
* If it's a UD1, further decode to determine its use:
@@ -103,24 +91,39 @@ __always_inline int is_valid_bugaddr(unsigned long addr)
* UBSan{10}: 67 0f b9 40 10 ud1 0x10(%eax),%eax
* static_call: 0f b9 cc ud1 %esp,%ecx
*
- * Notably UBSAN uses EAX, static_call uses ECX.
+ * WARN_printf_0: ud2
+ * WARN_printf_1: ud1 (%ecx),%reg
+ * WARN_printf_2: ud1 %reg,%reg
+ *
+ * Notably UBSAN uses (%eax), static_call does not get a bug_entry.
*/
-__always_inline int decode_bug(unsigned long addr, s32 *imm, int *len)
+__always_inline int decode_bug(unsigned long addr, u32 *regs, s32 *imm, int *len)
{
unsigned long start = addr;
+ u8 v, rex = 0, reg, rm;
bool lock = false;
- u8 v;
+ int type = BUG_UD1;

if (addr < TASK_SIZE_MAX)
return BUG_NONE;

- v = *(u8 *)(addr++);
- if (v == INSN_ASOP)
+ for (;;) {
v = *(u8 *)(addr++);

- if (v == INSN_LOCK) {
- lock = true;
- v = *(u8 *)(addr++);
+ if (v == INSN_ASOP)
+ continue;
+
+ if (v == INSN_LOCK) {
+ lock = true;
+ continue;
+ }
+
+ if ((v & 0xf0) == 0x40) {
+ rex = v;
+ continue;
+ }
+
+ break;
}

switch (v) {
@@ -141,6 +144,9 @@ __always_inline int decode_bug(unsigned long addr, s32 *imm, int *len)
return BUG_NONE;
}

+ *regs = 0;
+ *imm = 0;
+
v = *(u8 *)(addr++);
if (v == SECOND_BYTE_OPCODE_UD2) {
*len = addr - start;
@@ -150,16 +156,22 @@ __always_inline int decode_bug(unsigned long addr, s32 *imm, int *len)
if (v != SECOND_BYTE_OPCODE_UD1)
return BUG_NONE;

- *imm = 0;
v = *(u8 *)(addr++); /* ModRM */
-
if (X86_MODRM_MOD(v) != 3 && X86_MODRM_RM(v) == 4)
addr++; /* SIB */

+ reg = X86_MODRM_REG(v) + 8*!!X86_REX_R(rex);
+ rm = X86_MODRM_RM(v) + 8*!!X86_REX_B(rex);
+ *regs = (rm << 4) | reg;
+
/* Decode immediate, if present */
switch (X86_MODRM_MOD(v)) {
case 0: if (X86_MODRM_RM(v) == 5)
- addr += 4; /* RIP + disp32 */
+ addr += 4; /* RIP + disp32 */
+ if (rm == 1) { /* CX */
+ type = BUG_UD1_WARN;
+ *regs |= 0x100;
+ }
break;

case 1: *imm = *(s8 *)addr;
@@ -170,18 +182,37 @@ __always_inline int decode_bug(unsigned long addr, s32 *imm, int *len)
addr += 4;
break;

- case 3: break;
+ case 3: type = BUG_UD1_WARN;
+ *regs |= 0x300;
+ break;
}

/* record instruction length */
*len = addr - start;

- if (X86_MODRM_REG(v) == 0) /* EAX */
+ if (!rm && X86_MODRM_MOD(v) != 3) /* (%eax) */
return BUG_UD1_UBSAN;

- return BUG_UD1;
+ return type;
}

+int is_valid_bugaddr(unsigned long addr)
+{
+ int ud_type, ud_len;
+ u32 ud_regs;
+ s32 ud_imm;
+
+ if (addr < TASK_SIZE_MAX)
+ return 0;
+
+ /*
+ * We got #UD, if the text isn't readable we'd have gotten
+ * a different exception.
+ */
+ ud_type = decode_bug(addr, &ud_regs, &ud_imm, &ud_len);
+
+ return ud_type == BUG_UD2 || ud_type == BUG_UD1_WARN;
+}

static nokprobe_inline int
do_trap_no_signal(struct task_struct *tsk, int trapnr, const char *str,
@@ -305,14 +336,42 @@ static inline void handle_invalid_op(struct pt_regs *regs)
ILL_ILLOPN, error_get_trap_addr(regs));
}

+static inline unsigned long pt_regs_val(struct pt_regs *regs, int nr)
+{
+ int offset = pt_regs_offset(regs, nr);
+ if (WARN_ON_ONCE(offset < -0))
+ return 0;
+ return *((unsigned long *)((void *)regs + offset));
+}
+
+void __warn_printf(const char *fmt, struct pt_regs *regs)
+{
+ u32 r = regs->orig_ax;
+ unsigned long a1 = pt_regs_val(regs, (r >> 0) & 0xf);
+ unsigned long a2 = pt_regs_val(regs, (r >> 4) & 0xf);
+
+ switch ((r >> 8) & 0x3) {
+ case 0:
+ printk(fmt);
+ return;
+ case 1:
+ printk(fmt, a1);
+ return;
+ case 3:
+ printk(fmt, a1, a2);
+ return;
+ }
+}
+
static noinstr bool handle_bug(struct pt_regs *regs)
{
unsigned long addr = regs->ip;
bool handled = false;
int ud_type, ud_len;
+ u32 ud_regs;
s32 ud_imm;

- ud_type = decode_bug(addr, &ud_imm, &ud_len);
+ ud_type = decode_bug(addr, &ud_regs, &ud_imm, &ud_len);
if (ud_type == BUG_NONE)
return handled;

@@ -334,7 +393,9 @@ static noinstr bool handle_bug(struct pt_regs *regs)
raw_local_irq_enable();

switch (ud_type) {
+ case BUG_UD1_WARN:
case BUG_UD2:
+ regs->orig_ax = ud_regs;
if (report_bug(regs->ip, regs) == BUG_TRAP_TYPE_WARN) {
handled = true;
break;
diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
index 387720933973..b8336259f81d 100644
--- a/include/asm-generic/bug.h
+++ b/include/asm-generic/bug.h
@@ -13,6 +13,7 @@
#define BUGFLAG_ONCE (1 << 1)
#define BUGFLAG_DONE (1 << 2)
#define BUGFLAG_NO_CUT_HERE (1 << 3) /* CUT_HERE already sent */
+#define BUGFLAG_FORMAT (1 << 4)
#define BUGFLAG_TAINT(taint) ((taint) << 8)
#define BUG_GET_TAINT(bug) ((bug)->flags >> 8)
#endif
@@ -36,6 +37,13 @@ struct bug_entry {
#else
signed int bug_addr_disp;
#endif
+#ifdef BUG_HAS_FORMAT
+#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
+ const char *format;
+#else
+ signed int format_disp;
+#endif
+#endif
#ifdef CONFIG_DEBUG_BUGVERBOSE
#ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
const char *file;
@@ -101,12 +109,16 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
} while (0)
#else
#define __WARN() __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN))
+
+#ifndef __WARN_printf
#define __WARN_printf(taint, arg...) do { \
instrumentation_begin(); \
__warn_printk(arg); \
__WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\
instrumentation_end(); \
} while (0)
+#endif
+
#define WARN_ON_ONCE(condition) ({ \
int __ret_warn_on = !!(condition); \
if (unlikely(__ret_warn_on)) \
@@ -114,6 +126,7 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
BUGFLAG_TAINT(TAINT_WARN)); \
unlikely(__ret_warn_on); \
})
+
#endif

/* used internally by panic.c */
@@ -148,8 +161,10 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
DO_ONCE_LITE_IF(condition, WARN_ON, 1)
#endif

+#ifndef WARN_ONCE
#define WARN_ONCE(condition, format...) \
DO_ONCE_LITE_IF(condition, WARN, 1, format)
+#endif

#define WARN_TAINT_ONCE(condition, taint, format...) \
DO_ONCE_LITE_IF(condition, WARN_TAINT, 1, taint, format)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 62b3416f5e43..4f7bc0e500ba 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -8703,6 +8703,10 @@ void __init sched_init(void)
preempt_dynamic_init();

scheduler_running = 1;
+
+ WARN(true, "Ultimate answer: %d\n", 42);
+ WARN(true, "XXX2 %d %d\n", 43, 44);
+ WARN(true, "XXX3 %d %d %d\n", 45, 46, 47);
}

#ifdef CONFIG_DEBUG_ATOMIC_SLEEP
diff --git a/lib/bug.c b/lib/bug.c
index b1f07459c2ee..085889e9c096 100644
--- a/lib/bug.c
+++ b/lib/bug.c
@@ -139,6 +139,17 @@ void bug_get_file_line(struct bug_entry *bug, const char **file,
#endif
}

+static const char *bug_get_format(struct bug_entry *bug)
+{
+ const char *format = NULL;
+#ifdef CONFIG_GENERIC_BUG_RELATIVE_POINTERS
+ format = (const char *)&bug->format_disp + bug->format_disp;
+#else
+ format = bug->format;
+#endif
+ return format;
+}
+
struct bug_entry *find_bug(unsigned long bugaddr)
{
struct bug_entry *bug;
@@ -150,6 +161,14 @@ struct bug_entry *find_bug(unsigned long bugaddr)
return module_find_bug(bugaddr);
}

+#ifndef __warn_printf
+static void __warn_printf(const char *fmt, struct pt_regs *regs)
+{
+ printk(fmt);
+}
+#define __warn_printf __warn_printf
+#endif
+
static enum bug_trap_type __report_bug(unsigned long bugaddr, struct pt_regs *regs)
{
struct bug_entry *bug;
@@ -190,6 +209,9 @@ static enum bug_trap_type __report_bug(unsigned long bugaddr, struct pt_regs *re
if ((bug->flags & BUGFLAG_NO_CUT_HERE) == 0)
printk(KERN_DEFAULT CUT_HERE);

+ if (bug->flags & BUGFLAG_FORMAT)
+ __warn_printf(bug_get_format(bug), regs);
+
if (warning) {
/* this is a WARN_ON rather than BUG/BUG_ON */
__warn(file, line, (void *)bugaddr, BUG_GET_TAINT(bug), regs,


Return-Path: <linux-kernel+bounces-669055-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1311941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:26:05 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E0F2F1BA2F9E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:26:17 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id AD970239561;
Sat, 31 May 2025 10:25:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="kh4TyDc1"
Received: from casper.infradead.org (casper.infradead.org [90.155.50.34])
(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 75B1041760;
Sat, 31 May 2025 10:25:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687157; cv=none; b=u6CImK4oVPBbSJflmsm78G4NqIktkYjYzptdC+ZD7GnG+KeDRWeCFjEDP3OV48eEGuBqqx8cc377eNKZ9oRoQ2CKLlQXOIYEKfJtFGbne6K3quhFGDqlCyi8O2PSCfsS2Je0wUVVmHcjjFP/iaqIiA66Zhh3fsl2fgWNvRTjwdw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687157; c=relaxed/simple;
bh=+gmjqDolMU/6cNi6kpQuNUUonuQoBi05ZwkqfJ4iIao=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=CHxCAvmOyqwy2G29mqzIMJ8uuybu2yrSrGwNgM2l/e0eZ8v1k5gzVphwImHR3iNQ8G0obYn7qxwWYC9Qkd31vsmPXWUBQw/IOHixTH2s4qXBL5DWXr19Im6c/CSIT7MgMKjFLl7wKQ1zQHDfT5OUL/Wo6fVPdFy+5tvEv3nJmcQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=kh4TyDc1; arc=none smtp.client-ip=90.155.50.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version:
References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:
Content-Transfer-Encoding:Content-ID:Content-Description;
bh=+gmjqDolMU/6cNi6kpQuNUUonuQoBi05ZwkqfJ4iIao=; b=kh4TyDc1EKRiFok397uA0uqi7j
CKseQl1q4Z20SDvCCTgSS8SJLnyba8wYht/a5sPDV3x0mrCVicMDDXVwxq77K1ZZNlZPzw7pv++Yt
yChJoaBxkdXbLtqqFgqYvvExW7p3L8BdSuH6a2YulPeg7smpt9KvRpl6s4mYW5hwDLlkXv4FAX1Ol
qcWY5183QrVr8G+s0e+M6HD5GOjA3QiiEmGh4bBpNOG2nANRtOSqAU1MmZpBQOjhVszI2wgi8nArR
w6yJUaJMnzY72enu8dvz+kS1CVrelWkgqKNP9sOmQRw2J7qEJR/7PKfTdJc2tKgb24hlIOXLaAaxY
hWpwzLAg==;
Received: from 77-249-17-252.cable.dynamic.v4.ziggo.nl ([77.249.17.252] helo=noisy.programming.kicks-ass.net)
by casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLJPH-0000000GhJM-1MCd;
Sat, 31 May 2025 10:25:39 +0000
Received: by noisy.programming.kicks-ass.net (Postfix, from userid 1000)
id 92D3F300787; Sat, 31 May 2025 12:25:38 +0200 (CEST)
Date: Sat, 31 May 2025 12:25:38 +0200
From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
To: Kees Cook <kees@xxxxxxxxxx>
Cc: Alessandro Carminati <acarmina@xxxxxxxxxx>,
linux-kselftest@xxxxxxxxxxxxxxx,
Dan Carpenter <dan.carpenter@xxxxxxxxxx>,
Daniel Diaz <daniel.diaz@xxxxxxxxxx>,
David Gow <davidgow@xxxxxxxxxx>,
Arthur Grillo <arthurgrillo@xxxxxxxxxx>,
Brendan Higgins <brendan.higgins@xxxxxxxxx>,
Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Maxime Ripard <mripard@xxxxxxxxxx>,
Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>,
Daniel Vetter <daniel@xxxxxxxx>, Guenter Roeck <linux@xxxxxxxxxxxx>,
Alessandro Carminati <alessandro.carminati@xxxxxxxxx>,
Jani Nikula <jani.nikula@xxxxxxxxx>,
Jeff Johnson <jeff.johnson@xxxxxxxxxxxxxxxx>,
Josh Poimboeuf <jpoimboe@xxxxxxxxxx>,
Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>,
Linux Kernel Functional Testing <lkft@xxxxxxxxxx>,
dri-devel@xxxxxxxxxxxxxxxxxxxxx, kunit-dev@xxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Mark Rutland <mark.rutland@xxxxxxx>
Subject: Re: [PATCH v5 1/5] bug/kunit: Core support for suppressing warning
backtraces
Message-ID: <20250531102538.GG21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250526132755.166150-1-acarmina@xxxxxxxxxx>
<20250526132755.166150-2-acarmina@xxxxxxxxxx>
<20250529090129.GZ24938@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<CAGegRW76X8Fk_5qqOBw_aqBwAkQTsc8kXKHEuu9ECeXzdJwMSw@xxxxxxxxxxxxxx>
<20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<202505301037.D816A49@keescook>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <202505301037.D816A49@keescook>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 10:48:47AM -0700, Kees Cook wrote:

> This needs docs too. I think this is collapsing 1 and 2 argument WARNs
> into the ud1, and anything larger is explicitly calling __warn_printk +
> __WARN_FLAGS? If only 1 and 2 args can be collapsed, why reserve 0xfe00
> through 0xfeff? I feel like I'm missing something here...

I did something really evil in that first version, I encoded the
registers into the bug type. I've fixed that and have decode_bug emit a
ud_regs thingy now.



Return-Path: <linux-kernel+bounces-669056-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C062C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:29:17 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 37D83A20D20
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:28:55 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D568D2397BF;
Sat, 31 May 2025 10:29:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="OcpWqGbW"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 EA5A720F081;
Sat, 31 May 2025 10:29:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687349; cv=none; b=dmZ4NxlIiQCk3PBorEPWy8CAvVqgAt+Xat1CVBxmHzHaqi1IuSXLXSBGuVsINSC9QHEBTZfjBvkuWcuaeIvVY43qVzzp8ZJsoUli+mo+ghKgTnIj0k5C/8RB0+Xn3Cp+LS0tpgeIE1Jxxr02uezokUQViiledpvWOoKRyPXSuaI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687349; c=relaxed/simple;
bh=sMGuKpxgeOPx3NneVHy9Y0kTkfFIKHETcLijemOUjWY=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=ctUZi0XUCXKy9LNHxdHc44iPSv3UTqIhpIArkLCFOgVM5+71ZCoKNGsvGJ2hxm1Ik3Dl6iXyFp8ESFIm1zjBVuWuT0QRX6EbWDWPJdlOV6WsLe5HJewyowkqWj+FWUKpMA28/NjQ6uTloPH5cWYM51idprNtqS/KAJ2bYCorUYs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=OcpWqGbW; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4EA71C4CEE3;
Sat, 31 May 2025 10:29:05 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748687348;
bh=sMGuKpxgeOPx3NneVHy9Y0kTkfFIKHETcLijemOUjWY=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=OcpWqGbWis1DGeTMbcz1vfMEey365f+xcDZfeYcVX23L1ifgEyFul2w2F37LLPDr8
zHO/n7oDHR+ykevD+9FzFShEtV9LwkdyDxRk8oidheM8yIEXTg9Gy2b1bmLfW06LZA
T2UG0i23ZI0rv+SSI/gysVGHa9XrpojlYhFed9d9LjN7ha6Ni33mHR7Bon0qrTnpM2
CZNpftjQYt0srUPZOrIL66IBP0tB8IIQo7uGBRsOnLirdrKEP2p94ENdicVUjT5tB6
XYDrc7vf9EI5UNBB5vBW4+T+vA7DDD5hmE3sojFLLWE6nAPXseP2AxnjWAz11rseb+
4hzIkCPZiITjg==
Date: Sat, 31 May 2025 12:29:02 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: gregkh@xxxxxxxxxxxxxxxxxxx, rafael@xxxxxxxxxx, ojeda@xxxxxxxxxx,
alex.gaynor@xxxxxxxxx, boqun.feng@xxxxxxxxx, gary@xxxxxxxxxxx,
bjorn3_gh@xxxxxxxxxxxxxx, benno.lossin@xxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
chrisi.schrefl@xxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH 7/7] rust: sample: misc: implement device driver sample
Message-ID: <aDrZ7ma_aNki3FRz@pollux>
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-8-dakr@xxxxxxxxxx>
<DA9RRZVPZSMW.1LGW9H4G0RLT5@xxxxxxxxxx>
<aDowAzvEvrQcella@pollux>
<DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 10:11:08AM +0200, Benno Lossin wrote:
> On Sat May 31, 2025 at 12:24 AM CEST, Danilo Krummrich wrote:
> > On Fri, May 30, 2025 at 10:15:37PM +0200, Benno Lossin wrote:
> >> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
> >> > In order to demonstrate and test a MiscDeviceRegistration with a parent
> >> > device, introduce CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT.
> >> >
> >> > If CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT=y the misc device sample
> >> > is initialized with a parent device (faux), otherwise it is initialized
> >> > without a parent device, i.e. the exact same way as without this patch.
> >> >
> >> > Signed-off-by: Danilo Krummrich <dakr@xxxxxxxxxx>
> >> > ---
> >> > samples/rust/Kconfig | 8 +++++
> >> > samples/rust/rust_misc_device.rs | 50 +++++++++++++++++++++++++++++---
> >> > 2 files changed, 54 insertions(+), 4 deletions(-)
> >> >
> >> > diff --git a/samples/rust/Kconfig b/samples/rust/Kconfig
> >> > index b1006ab4bc3c..9948ec0939ef 100644
> >> > --- a/samples/rust/Kconfig
> >> > +++ b/samples/rust/Kconfig
> >> > @@ -30,6 +30,14 @@ config SAMPLE_RUST_MISC_DEVICE
> >> >
> >> > If unsure, say N.
> >> >
> >> > +config SAMPLE_RUST_MISC_DEVICE_WITH_PARENT
> >> > + bool "Create a misc device with a parent device"
> >> > + depends on SAMPLE_RUST_MISC_DEVICE
> >> > + default n
> >> > + help
> >> > + Say Y here if you want the misc device sample to create a misc
> >> > + device with a parent device.
> >> > +
> >>
> >> Why not create a separate file? The `cfg`s might confuse newcomers
> >> looking at the sample.
> >
> > It would be a lot of duplicated code, unless we really *only* exercise the
> > device creation and registration part, which would be a bit unfortunate, given
> > that this sample is also a pretty good test.
>
> We could separate the common parts into a single file and then
> `include!` that file from the two samples. (Or if the build system
> supports multi-file samples then just use that, but my gut feeling is
> that it doesn't)

The samples are normal modules, where we can have multiple files. But I don't
see how that helps.

`include!` works, but I'm not sure it's that much better.

Another option would be to put the `cfg` on the module!() macro itself and have
two separate module types, this way there is only a `cfg` on the two module!()
invocations.

>
> I really would like to avoid `cfg` in samples.
>
> >> > config SAMPLE_RUST_PRINT
> >> > tristate "Printing macros"
> >> > help
> >> > diff --git a/samples/rust/rust_misc_device.rs b/samples/rust/rust_misc_device.rs
> >> > index 9bf1a0f64e6e..175638d6d341 100644
> >> > --- a/samples/rust/rust_misc_device.rs
> >> > +++ b/samples/rust/rust_misc_device.rs
> >> > @@ -167,6 +167,9 @@
> >> > uaccess::{UserSlice, UserSliceReader, UserSliceWriter},
> >> > };
> >> >
> >> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
> >> > +use kernel::faux;
> >> > +
> >> > const RUST_MISC_DEV_HELLO: u32 = _IO('|' as u32, 0x80);
> >> > const RUST_MISC_DEV_GET_VALUE: u32 = _IOR::<i32>('|' as u32, 0x81);
> >> > const RUST_MISC_DEV_SET_VALUE: u32 = _IOW::<i32>('|' as u32, 0x82);
> >> > @@ -181,19 +184,33 @@
> >> > license: "GPL",
> >> > }
> >> >
> >> > +#[cfg(not(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT))]
> >> > #[pin_data]
> >> > struct RustMiscDeviceModule {
> >> > #[pin]
> >> > _miscdev: MiscDeviceRegistration<RustMiscDevice>,
> >> > }
> >> >
> >> > -impl kernel::InPlaceModule for RustMiscDeviceModule {
> >> > - fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error> {
> >> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
> >> > +struct RustMiscDeviceModule {
> >> > + _faux: faux::Registration,
> >> > + _miscdev: Pin<KBox<MiscDeviceRegistration<RustMiscDevice>>>,
> >> > +}
> >> > +
> >> > +impl RustMiscDeviceModule {
> >> > + fn init() -> MiscDeviceOptions {
> >> > pr_info!("Initializing Rust Misc Device Sample\n");
> >> >
> >> > - let options = MiscDeviceOptions {
> >> > + MiscDeviceOptions {
> >> > name: c_str!("rust-misc-device"),
> >> > - };
> >> > + }
> >> > + }
> >> > +}
> >> > +
> >> > +#[cfg(not(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT))]
> >> > +impl kernel::InPlaceModule for RustMiscDeviceModule {
> >> > + fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error> {
> >> > + let options = Self::init();
> >> >
> >> > try_pin_init!(Self {
> >> > _miscdev <- MiscDeviceRegistration::register(
> >> > @@ -205,6 +222,31 @@ fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error> {
> >> > }
> >> > }
> >> >
> >> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
> >> > +impl kernel::Module for RustMiscDeviceModule {
> >> > + fn init(_module: &'static ThisModule) -> Result<Self> {
> >> > + let options = Self::init();
> >> > + let faux = faux::Registration::new(c_str!("rust-misc-device-sample"), None)?;
> >> > +
> >> > + // For every other bus, this would be called from Driver::probe(), which would return a
>
> Missing '`' around Driver::probe().
>
> >> > + // `Result<Pin<KBox<T>>>`, but faux always binds to a "dummy" driver, hence probe() is
> >>
> >> Not clear what `T` is supposed to be, do you mean `Self`?
> >
> > From the perspective of the type implementing the corresponding Driver trait it
> > would indeed be `Self`. But I found it ambiguous to write `Self`, since I do *not*
> > mean `RustMiscDeviceModule` with `Self`.
>
> Yeah that makes sense, I already entered into the `impl Driver` context
> :) How about we use `<T as Driver>::probe()` above and then `T` makes
> sense?

Yep, that sounds good.

> Another thing: faux devices don't have a `probe` in rust, so saying "not
> required" doesn't make much sense, right?

In Rust, faux does not have probe() indeed, but that's because it's "not
required"; I can't think of a use-case for a new driver (yet), where this isn't
just unnecessary overhead.

> >> > + // not required.
> >> > + let misc = KBox::pin_init(
> >> > + MiscDeviceRegistration::register(
> >> > + options,
> >> > + Arc::pin_init(new_mutex!(Inner { value: 0_i32 }), GFP_KERNEL),
> >> > + Some(faux.as_ref()),
> >> > + ),
> >> > + GFP_KERNEL,
> >> > + )?;
> >>
> >> You could also initialize this module variation in-place. (this would
> >> also require the pin-init change to reference initialized fields)
> >
> > Yes, I also thought about that. But this way is a bit closer to what things
> > would look like within a probe() callback.
>
> Yeah then let's do that :)
>
> ---
> Cheers,
> Benno


Return-Path: <linux-kernel+bounces-669057-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1B73241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:30:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 0D8B6189CD24
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:30:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5F3E923909F;
Sat, 31 May 2025 10:30:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SpEii1wJ"
Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6414419D897;
Sat, 31 May 2025 10:30:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687418; cv=none; b=cUpQ7ysnZtQ6j94CaESitNNKEMZCMaXNu2Oa0frhTkuJIetSFiZd/vrA8wJHPU6LCIpn5U/utMxE/w8t4CRo8QTU+rWkTARYyCWIezZffzh3h7md63pufK+num74qxa+iDziHdZ2jj77KjjU3YTHjzlZun5A+koAop2Hq0JQOZ4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687418; c=relaxed/simple;
bh=i718d8Duyh5E9uq4Nx7rsx3JGkX/J1FjKhmbX+FjY1s=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=F8F2xdftJhUNjnDYUPCHBY/ErbrzevT+AGYSHwKMsg2srFjd0iapEaiBSIBrBzuqhop15PtBnHm5IFiv/ghK2yM5XJv9d2DtaOzu78J2pdmrYfvbSQWin4APfvDycEly5aLVq20f1TUh7e54yxtNFqc9Zpzz/nsDO3sxRw+s8gs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SpEii1wJ; arc=none smtp.client-ip=209.85.215.172
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-b26ed911f4cso230021a12.3;
Sat, 31 May 2025 03:30:16 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748687415; x=1749292215; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=i718d8Duyh5E9uq4Nx7rsx3JGkX/J1FjKhmbX+FjY1s=;
b=SpEii1wJvWCQwpBRsbhWVLX2UjnI5TQBzBskl5qMEGzRSoAQUFyX3F46fxyXv51SP3
irMFT9bldCrsNn03A0iofJxnmX+UrW1dHmuXzMBq4hbo1jOsrMGPfw8PJw8njjnte9e/
tn5HcE5OotJ75m4Z135Du+cir8dYsxLTcXYB1s+3drlvXtjiAJO+eT++v4dui+wZ/jmj
kohEtaucgcqyAZydKAtp9e3z6uyh3XsEK18ZNTQotK08vnh1h8jkCvtskGSE5yXpzmf1
DF/A3mBGhGuHDmzKVUEb4Vk1u7ezf6AIl+BAwtpnht0qKE63/7EFaW1M4metshPo3KJK
2kXw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748687415; x=1749292215;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=i718d8Duyh5E9uq4Nx7rsx3JGkX/J1FjKhmbX+FjY1s=;
b=edD2o4HJNS0QHA6laHBNEqg8Wq4AEbLjdGhK373ZqxkyKah+JBdyajaYYnKr1/zWjt
Gt0Ar/VHK2sfgXzE4K0TH3rKdqNZjzcbWS/G2eQ/ktMJedPEwqhOfeaBJ/VK+Yx/IOPk
cYfjB4xJs0FIOdj9cFoYoKBdcg9YXlB5Kv75EbsHu9bAeyumvMkxZskKKhLRSR9Q6txB
1/GNj58U7d/bFW3yS7UXy9f2bLauxXeFyfzC03C0DHd9ojApIU7XXUKV+Icm/FhZFDLV
/2sX9n2TwpyThHRsK1ltug0ir5cGJ2RNEA0TEhelRhBN6jqfiPXmOzdIrjIXxubBizTQ
+q0w==
X-Forwarded-Encrypted: i=1; AJvYcCUWvuGuujGeStVsYCPDL9bqU9rLUViaYcUove4TvfRBHX4lAlqrYr8SqcYzyHx6ZwOmiAgixYc3HWu4yPzLRyI=@vger.kernel.org, AJvYcCXWYf93k17zbhGL+/CPobWa1WTzCcySv0E28W8gd/rR/dYzyhzHttUVNwMFKaEkyZ7w1FP+KZENJwtOdWE=@vger.kernel.org
X-Gm-Message-State: AOJu0YyLXT+H89cwPyn3NIpyYAOz98R2Hq4pLpymY87mCg210D/tI9+M
cKcQ7L+RW1KlPqE84z+DTRaZFT53XAV65FCeXuDc5rHxUX7PIJJF3Z/2jDEmi418Q5fUPnipS1v
++Ao+cuq5Ir4gADEKQSuU3CH/33GuwFk=
X-Gm-Gg: ASbGnctZEdGz6qINwc3YgEpOheqvXSwWiaFU0fzaAzH39NQ753cg+fqTi23NCpo4WIK
xAhThTnvcnGPURhu2wBAARMT/Yi0TYpV6etTUWjgnLerJkA3lfTPOc+6Q5kwwf9rEUY372WfQUL
X6UksLjbmd9imZrYuBuf7DsSIfyDB16Hqz
X-Google-Smtp-Source: AGHT+IEbO1ffe0caragupEno3gENSspwEftXpgcfxBUJd5P3Ep1cAVhmqn5914m+yG1FPZmmkUM89TYSRepSPIaMPZs=
X-Received: by 2002:a17:90b:1f81:b0:311:e8cc:4250 with SMTP id
98e67ed59e1d1-3124daf3e85mr3030330a91.3.1748687415466; Sat, 31 May 2025
03:30:15 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250511-rust_unsafe_pinned-v4-0-a86c32e47e3d@xxxxxxxxx>
<20250511-rust_unsafe_pinned-v4-1-a86c32e47e3d@xxxxxxxxx> <CANiq72n0EcibX3Vx95tiPEkd04DA4hjY-TJQs9YSOmHj=VZ_5g@xxxxxxxxxxxxxx>
<0dfe6958-1dc8-4e36-aab8-e83a6da4d0e0@xxxxxxxxx>
In-Reply-To: <0dfe6958-1dc8-4e36-aab8-e83a6da4d0e0@xxxxxxxxx>
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Date: Sat, 31 May 2025 12:30:03 +0200
X-Gm-Features: AX0GCFs3MXHNxZq2SeqMHg0ha8grcijFpwljtPcXMw29rIeS3ZM8W8eeSAE_A58
Message-ID: <CANiq72k2DyB2dCMxSz=uE5SCuECxOHM60d1fzF3A0MsTf=aZcg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 1/3] rust: add UnsafePinned type
To: Christian Schrefl <chrisi.schrefl@xxxxxxxxx>, Sky <sky@xxxxxxxx>
Cc: Miguel Ojeda <ojeda@xxxxxxxxxx>, Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, =?UTF-8?Q?Gerald_Wisb=C3=B6ck?= <gerald.wisboeck@xxxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>, Nick Desaulniers <nick.desaulniers+lkml@xxxxxxxxx>,
Bill Wendling <morbo@xxxxxxxxxx>, Justin Stitt <justinstitt@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
rust-for-linux@xxxxxxxxxxxxxxx, llvm@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 10:22=E2=80=AFPM Christian Schrefl
<chrisi.schrefl@xxxxxxxxx> wrote:
>
> Since it seems like Sky has not responded for 10 days
> is should be fine to just drop their COB & SOB.
>
> I only offered to add it since the upstream implementation
> that this is based on was entirely done by them.
>
> If you want to wait for some more time that's fine as well.

So Sky and I shared a couple emails in private a week ago, but I am
waiting on a reply. There is no rush, since this is not going into
this merge window, so it is fine.

As for the tags -- it is up to you both; just please make sure it is
fair and that the DCO is respected. You can also consider another tag
that is not a SoB, such as Inspired-by, if that is more fitting.

Thanks!

Cheers,
Miguel


Return-Path: <linux-kernel+bounces-669058-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7057941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:33:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id D07BC4A4500
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:33:52 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A9993239E60;
Sat, 31 May 2025 10:33:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="e9B/RQmo"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E8D4F23497B;
Sat, 31 May 2025 10:33:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687624; cv=none; b=ju9+EF0FjJIWrhecBHr7oGHMDwk/fWO0yWAaUmhdyiBpnn17tjEVHm8ptwlmisfSQ2q1XvzezECE1fdkhuBnIAfgid0LUc0Xk2/FoLvTcGXggxkNwaieYjdKgIQH9hDiJdSc9Nvxeko5nt7h2EDal2/aUSftg8h9SUpjjebwI2U=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687624; c=relaxed/simple;
bh=ULGIwiD4vDo7U1PKZxA32bG7xyqxYpPB3XqFFCKW09Y=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=KEVMRa4M2iQSgbd8b8+fhhIicBW7KjSzdcmI+ymcmp4/zquIxnJf2WWc4ECy2cfpVRvtlSQT0ZfR1gXGr8MfOGjioJ+P8d4VtuI1f4ybT//cKg4yct6BIcYvi4YX1Hdv+DBdxAJWhgGLHQUVo1fSuH4BtJTbT81TNhEsDHWYVUg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=e9B/RQmo; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4C709C4CEE3;
Sat, 31 May 2025 10:33:40 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748687623;
bh=ULGIwiD4vDo7U1PKZxA32bG7xyqxYpPB3XqFFCKW09Y=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=e9B/RQmoUMh2eAUOoLIgYeY5wVp+9YYoAT1lM9sjFmY6Av5O8mB4kivJ4lGawgB+t
+5+y6qarQw8t3yCzxKAzoI71lnGvyYTtnrPJVhjAN/+oHBkG1qphXSH22QcUkSB3cW
N8eEteiMMMrPMO5XHTh4pYcQ8qqJs6zZyR0Bef0K1MmK2DP9xzcenGmR5iI/6ohYjM
9BDeanWYkarqr3xgw2H7oOqo+EtlDRHUyZuvgS+YtlkZneGhVzHMp6S4OnKhbeORH9
73SNPt+oV7gc2MoXfxwXhSYPrKvVIErATUtsqVwEex5bugrUkuFbg07Ev4/Rvg6WG7
bFRx7NU02cq5Q==
Date: Sat, 31 May 2025 12:33:37 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: gregkh@xxxxxxxxxxxxxxxxxxx, rafael@xxxxxxxxxx, ojeda@xxxxxxxxxx,
alex.gaynor@xxxxxxxxx, boqun.feng@xxxxxxxxx, gary@xxxxxxxxxxx,
bjorn3_gh@xxxxxxxxxxxxxx, benno.lossin@xxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
chrisi.schrefl@xxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH 5/7] rust: miscdevice: properly support device drivers
Message-ID: <aDrbAWtDRPP80-xO@pollux>
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-6-dakr@xxxxxxxxxx>
<DA9RLBPS7QKE.3CGXHMYG1CDOU@xxxxxxxxxx>
<aDouYRU-xSjfgMzJ@pollux>
<DAA6VHUTDC13.3FLLGNXYINO9I@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <DAA6VHUTDC13.3FLLGNXYINO9I@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 10:05:28AM +0200, Benno Lossin wrote:
> On Sat May 31, 2025 at 12:17 AM CEST, Danilo Krummrich wrote:
> > On Fri, May 30, 2025 at 10:06:55PM +0200, Benno Lossin wrote:
> >> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
> >> > -impl<T: MiscDevice> MiscDeviceRegistration<T> {
> >> > - /// Register a misc device.
> >> > - pub fn register(
> >> > +impl<T: MiscDevice> RawDeviceRegistration<T> {
> >> > + fn new<'a>(
> >> > opts: MiscDeviceOptions,
> >> > - data: impl PinInit<T::RegistrationData, Error>,
> >> > - ) -> impl PinInit<Self, Error> {
> >> > + parent: Option<&'a Device<Bound>>,
> >> > + data: &'a T::RegistrationData,
> >> > + ) -> impl PinInit<Self, Error> + 'a
> >> > + where
> >> > + T: 'a,
> >> > + {
> >> > try_pin_init!(Self {
> >> > - data <- Opaque::pin_init(data),
> >> > + // INVARIANT: `Self` is always embedded in a `MiscDeviceRegistration<T>`, hence `data`
> >> > + // is guaranteed to be valid for the entire lifetime of `Self`.
> >> > + data: NonNull::from(data),
> >>
> >> Both the argument in the INVARIANT comment and way this works are a bit
> >> flawed.
> >
> > Why is the argument flawed? Let's say we go with your proposal below, what would
> > the safety requirement for RawDeviceRegistration::new and the invariant of
> > RawDeviceRegistration look like? Wouldn't it be the exact same argument?
>
> So what I write below it not really true. But the argument relies on the
> fact that `data` is pointing to a value that will stay alive for the
> duration of the existence of `self`. That should be a safety requirement
> of `new` (even if we take a reference as an argument).

Ok, that's fair -- I'll add the safety requirement.

> >> Instead, I'd recommend directly taking the `NonNull` as a
> >> parameter. Yes the function will need to be `unsafe`, but the lifetime
> >> that you're creating below only lives for `'a`, but the object might
> >> live much longer. You might still be fine, but I'd just recommend
> >> staying in raw pointer land (or in this case `NonNull`).


Return-Path: <linux-kernel+bounces-669059-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C446D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:34:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 175ED189B013
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:34:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9B548238D5A;
Sat, 31 May 2025 10:34:30 +0000 (UTC)
Received: from mail-il1-f207.google.com (mail-il1-f207.google.com [209.85.166.207])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 55C481F03D4
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:34:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.207
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687670; cv=none; b=jOZDen7/b8Qj//F3zXv8vn17hQ/uHKqwAUy0LcZ7ns6xczVYWVzFkQ2BwihpeC01ElbtEiS8sL3TEw6CydrLIAXm+ZXWRFBIoZP9uQv0ML7T9CSMyOAU2EsGKcD7SPGlrXLRzBKj81/hSdUni/IeN+BvlfOA6f0bGzFCF41hUBM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687670; c=relaxed/simple;
bh=p0GdD0P3oQXFyar99uyzcGnXSt+hLeX3pIWiTOrbnoY=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=SusGjj8YWZ5HvXR7Pg0il78P/Rk/BmayicFtP825NcnXL2X0dnovo4f6zhSPGi1Ruua19PdSeLNiLM81z+WfVrgaUEdFPoZcRV5TpEoBCK8YqtDDDsQxKhZnMGmtMrs6LfsIScs+UxXB13hpxE/UeVggBIMzHd/pQq5uLoYHcY8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.207
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f207.google.com with SMTP id e9e14a558f8ab-3dca2d01b84so54434515ab.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 03:34:28 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748687667; x=1749292467;
h=to:from:subject:message-id:date:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=fyaBfq3PuzUJlB4yVspAzmeiDgrDTp/E2EWcEzMPoCQ=;
b=ZSYgRQG/xnn3pE/muSK3QKcgq1yHL3r901rJn6u/ecOo7puyAswcyHtVkppXv4abiv
ULAE9H/OHjxtRP9uMD9OMP9BEhSvvQ8AnNCunnMcG6R57FchHBswqpnX0cbCMKwo5W6U
PGYBf+7dZab1ujfX1XsWJcfNn6wzCOaEy1pTMsTJiAbPYEmYtnWbkWkiQ8JOu09x5fFm
ufLBWXbRD2xgbUzRozNrU6DLqCGwvY0BIJEQJvwK4Q2+k87q8civubKA6U6uBENfVjiH
NDtj4j4JQwI8sKgJQHhWVoyO8H5II2QdrVJohqHPaqV5uy6ORnMPuEPkDzmOa5hl22+f
N80g==
X-Gm-Message-State: AOJu0YzxU+hEnIPhsFtvsSSmS+zDHLFFNGTWZ07hBok7diPtp1l/g5ec
JcxQhQyEMfo7pq25LAl0iELS/YRhaEjrXy+gHuP8RC4R4+frYD4C06NnwR0TLCEvscyglwPgLQp
LztHklDlDTSP6zLZXzfudt3LJMyC29Jo2tBCfh8rXxeaWkia5ITAweHePWgxdEw==
X-Google-Smtp-Source: AGHT+IGCOeynr8b3IxV6E3XtxIF4GQvWNyUuo2GyhpfRpF21HVdFj3o/5Lcql7Vj6SVz0SzF/0/MNfsnYMNUwa4sMDaFUBbGTAVC
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1569:b0:3d9:39f3:f250 with SMTP id
e9e14a558f8ab-3dd99bf85b3mr76811025ab.3.1748687667426; Sat, 31 May 2025
03:34:27 -0700 (PDT)
Date: Sat, 31 May 2025 03:34:27 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683adb33.a70a0220.1a6ae.000b.GAE@xxxxxxxxxx>
Subject: [syzbot] [kernel?] WARNING: bad unlock balance in copy_process
From: syzbot <syzbot+80cb3cc5c14fad191a10@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: 785cdec46e92 Merge tag 'x86-core-2025-05-25' of git://git...
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=132bbdf4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=628e87e3a98ec1c4
dashboard link: https://syzkaller.appspot.com/bug?extid=80cb3cc5c14fad191a10
compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/d900f083ada3/non_bootable_disk-785cdec4.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/259338148f62/vmlinux-785cdec4.xz
kernel image: https://storage.googleapis.com/syzbot-assets/436abe9bf6f7/bzImage-785cdec4.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+80cb3cc5c14fad191a10@xxxxxxxxxxxxxxxxxxxxxxxxx

=====================================
WARNING: bad unlock balance detected!
6.15.0-syzkaller-01958-g785cdec46e92 #0 Not tainted
-------------------------------------
syz.1.441/7809 is trying to release lock (&sighand->siglock) at:
[<ffffffff817a389e>] spin_unlock include/linux/spinlock.h:391 [inline]
[<ffffffff817a389e>] copy_process+0x5d6e/0x9170 kernel/fork.c:2686
but there are no more locks to release!

other info that might help us debug this:
1 lock held by syz.1.441/7809:
#0: ffffffff8e41c350 (cgroup_threadgroup_rwsem){++++}-{0:0}, at: copy_process+0x3de8/0x9170 kernel/fork.c:2528

stack backtrace:
CPU: 0 UID: 0 PID: 7809 Comm: syz.1.441 Not tainted 6.15.0-syzkaller-01958-g785cdec46e92 #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
print_unlock_imbalance_bug kernel/locking/lockdep.c:5301 [inline]
print_unlock_imbalance_bug+0x11b/0x130 kernel/locking/lockdep.c:5275
__lock_release kernel/locking/lockdep.c:5540 [inline]
lock_release+0x242/0x2f0 kernel/locking/lockdep.c:5892
__raw_spin_unlock include/linux/spinlock_api_smp.h:141 [inline]
_raw_spin_unlock+0x16/0x50 kernel/locking/spinlock.c:186
spin_unlock include/linux/spinlock.h:391 [inline]
copy_process+0x5d6e/0x9170 kernel/fork.c:2686
kernel_clone+0xfc/0x960 kernel/fork.c:2859
__do_sys_clone3+0x212/0x290 kernel/fork.c:3163
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xcd/0x260 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f6443fc31c9
Code: bf 08 00 48 8d 3d dc bf 08 00 e8 e2 28 f6 ff 66 90 b8 ea ff ff ff 48 85 ff 74 2c 48 85 d2 74 27 49 89 c8 b8 b3 01 00 00 0f 05 <48> 85 c0 7c 18 74 01 c3 31 ed 48 83 e4 f0 4c 89 c7 ff d2 48 89 c7
RSP: 002b:00007ffeb834dbb8 EFLAGS: 00000202 ORIG_RAX: 00000000000001b3
RAX: ffffffffffffffda RBX: 00007f6443f455b0 RCX: 00007f6443fc31c9
RDX: 00007f6443f455b0 RSI: 0000000000000058 RDI: 00007ffeb834dc00
RBP: 00007f6444dee6c0 R08: 00007f6444dee6c0 R09: 00007ffeb834dce7
R10: 0000000000000008 R11: 0000000000000202 R12: ffffffffffffffa8
R13: 000000000000000b R14: 00007ffeb834dc00 R15: 00007ffeb834dce8
</TASK>
------------[ cut here ]------------
pvqspinlock: lock 0xffff8880245e8940 has corrupted value 0x0!
WARNING: CPU: 0 PID: 7809 at kernel/locking/qspinlock_paravirt.h:504 __pv_queued_spin_unlock_slowpath+0x237/0x330 kernel/locking/qspinlock_paravirt.h:504
Modules linked in:
CPU: 0 UID: 0 PID: 7809 Comm: syz.1.441 Not tainted 6.15.0-syzkaller-01958-g785cdec46e92 #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
RIP: 0010:__pv_queued_spin_unlock_slowpath+0x237/0x330 kernel/locking/qspinlock_paravirt.h:504
Code: 03 0f b6 14 02 4c 89 e8 83 e0 07 83 c0 03 38 d0 7c 04 84 d2 75 67 41 8b 55 00 4c 89 ee 48 c7 c7 a0 79 8d 8b e8 ba e4 02 f6 90 <0f> 0b 90 90 e9 64 ff ff ff 90 0f 0b 48 89 df 4c 89 04 24 e8 31 e6
RSP: 0018:ffffc900034478d8 EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff8880245e8940 RCX: ffffffff817a98c8
RDX: ffff8880247b0000 RSI: ffffffff817a98d5 RDI: 0000000000000001
RBP: ffff8880245e8948 R08: 0000000000000001 R09: 0000000000000000
R10: 0000000000000001 R11: 6c6e697073717670 R12: ffff8880245e8950
R13: ffff8880245e8940 R14: 00000000fffffff4 R15: ffffc90003447d60
FS: 000055557a112500(0000) GS:ffff8880d69a6000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 000000110c2dcf78 CR3: 000000003467f000 CR4: 0000000000352ef0
Call Trace:
<TASK>
__raw_callee_save___pv_queued_spin_unlock_slowpath+0x15/0x30
.slowpath+0x9/0x18
pv_queued_spin_unlock arch/x86/include/asm/paravirt.h:562 [inline]
queued_spin_unlock arch/x86/include/asm/qspinlock.h:57 [inline]
do_raw_spin_unlock+0x172/0x230 kernel/locking/spinlock_debug.c:142
__raw_spin_unlock include/linux/spinlock_api_smp.h:142 [inline]
_raw_spin_unlock+0x1e/0x50 kernel/locking/spinlock.c:186
spin_unlock include/linux/spinlock.h:391 [inline]
copy_process+0x5d6e/0x9170 kernel/fork.c:2686
kernel_clone+0xfc/0x960 kernel/fork.c:2859
__do_sys_clone3+0x212/0x290 kernel/fork.c:3163
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xcd/0x260 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f6443fc31c9
Code: bf 08 00 48 8d 3d dc bf 08 00 e8 e2 28 f6 ff 66 90 b8 ea ff ff ff 48 85 ff 74 2c 48 85 d2 74 27 49 89 c8 b8 b3 01 00 00 0f 05 <48> 85 c0 7c 18 74 01 c3 31 ed 48 83 e4 f0 4c 89 c7 ff d2 48 89 c7
RSP: 002b:00007ffeb834dbb8 EFLAGS: 00000202 ORIG_RAX: 00000000000001b3
RAX: ffffffffffffffda RBX: 00007f6443f455b0 RCX: 00007f6443fc31c9
RDX: 00007f6443f455b0 RSI: 0000000000000058 RDI: 00007ffeb834dc00
RBP: 00007f6444dee6c0 R08: 00007f6444dee6c0 R09: 00007ffeb834dce7
R10: 0000000000000008 R11: 0000000000000202 R12: ffffffffffffffa8
R13: 000000000000000b R14: 00007ffeb834dc00 R15: 00007ffeb834dce8
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-669060-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8D72F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:36:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2C52C3AA6CF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:36:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7500E23958C;
Sat, 31 May 2025 10:36:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=kuruczgy.com header.i=@kuruczgy.com header.b="R1LY447n"
Received: from out-182.mta0.migadu.com (out-182.mta0.migadu.com [91.218.175.182])
(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 EDDA71F03D4
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:36:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=91.218.175.182
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748687804; cv=none; b=bQab3wwY9RiJYGWxJmVNpSULx7I0DFiMkw3kRzadLwhJGhDlI9DbzvGZ+xjK1Cs4zVJFmlRYab9BbzrrHNcHyWa2BgWZYImAzGYSM+n+G75aHNQvRto/UlqcuOrh4jS1sLXMbutskZT+CH65yC5dCAvM779eHdPnXBtwcbgVYPY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748687804; c=relaxed/simple;
bh=LCCWL2kDcC71cBm4psAu8hEsXTmwFcOHqF7dcs3bdUA=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=YAUs3Z28Pag+0uOOgTIgSinI3xr4ch7CaCKhRy64BlOZHwM0fuGJeXWu+onU+mAS7DZgAr17VA7cFvwRHg1BakGDiXYEB+Q96UnA/4ZLLFvwTA8b88O4OJzHzE0eaZ2+mR4KBKjsJGMlO0VVbtjkH8p9GIoCSgHgOOb44o+//DI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kuruczgy.com; spf=pass smtp.mailfrom=kuruczgy.com; dkim=pass (1024-bit key) header.d=kuruczgy.com header.i=@kuruczgy.com header.b=R1LY447n; arc=none smtp.client-ip=91.218.175.182
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=kuruczgy.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kuruczgy.com
Message-ID: <f2e0f1da-c626-4cf0-8158-8a5805138871@xxxxxxxxxxxx>
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kuruczgy.com;
s=default; t=1748687790;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:content-type:content-type:
content-transfer-encoding:content-transfer-encoding:
in-reply-to:in-reply-to:references:references;
bh=UxENrXFiNdrr2zkChFJJEF8ySg4LaGGh/I5I68/5WaI=;
b=R1LY447nICiWNxc1AeI717EBaqxuqxidlYGclnrwaFfXxxy7JHZSSb2HkdRUZnj0JNGeki
IjULbd61t+yeNxq9FSjgiQQSpKC8tjQqFgA0ngZyh8MRSXM5EiZO8rew8BIWgjKtwm7pak
7/w5e9hGRvi2wEVhnEYpcty4ey9N0pk=
Date: Sat, 31 May 2025 12:36:10 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Subject: Re: [PATCH v2 5/8] power: supply: qcom_battmgr: Add charge control
support
To: fenglin.wu@xxxxxxxxxxxxxxxx, Sebastian Reichel <sre@xxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley
<conor+dt@xxxxxxxxxx>, Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>,
Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Cc: Subbaraman Narayanamurthy <subbaraman.narayanamurthy@xxxxxxxxxxxxxxxx>,
David Collins <david.collins@xxxxxxxxxxxxxxxx>, linux-pm@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
kernel@xxxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-usb@xxxxxxxxxxxxxxx
References: <20250530-qcom_battmgr_update-v2-0-9e377193a656@xxxxxxxxxxxxxxxx>
<20250530-qcom_battmgr_update-v2-5-9e377193a656@xxxxxxxxxxxxxxxx>
Content-Language: en-US
X-Report-Abuse: Please report any abuse attempt to abuse@xxxxxxxxxx and include these headers.
From: =?UTF-8?Q?Gy=C3=B6rgy_Kurucz?= <me@xxxxxxxxxxxx>
In-Reply-To: <20250530-qcom_battmgr_update-v2-5-9e377193a656@xxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Migadu-Flow: FLOW_OUT
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

> Add charge control support for SM8550 and X1E80100.

Thank you for this, tested on my Lenovo Yoga Slim 7x, the limiting works
well, I finally don't have to worry about leaving my laptop plugged in
for too long.

One small thing I noticed is that after setting the sysfs values and
rebooting, they report 0 again. The limiting appears to stay in effect
though, so it seems that the firmware does keep the values, but Linux
does not read them back. Indeed, looking at the code, it seems that
actually reading back the values is only implemented for the SM8550.

Anyway, this is just a small nitpick, this does not really affect the
functionality, and I would support merging this series regardless of
whether the read back values are always correct.

György


Return-Path: <linux-kernel+bounces-669061-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DF78F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:47:04 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id C05523AB447
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:46:41 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 80A44239E82;
Sat, 31 May 2025 10:46:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Q0m4bpoc"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 BD2DD2367C9;
Sat, 31 May 2025 10:46:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748688415; cv=none; b=sG5rIJ66djXXLiPk/qpkMc8d63lZf2lYYjYTl/OpWLNMHb/qWI/R40SWrGPBMgpNzwe2JOohLovCXdxn5+46glKH1AdtDvg8uwIiwfMwOEwZryIU5rLLzU/uDzwowqERzOu5fjNyRXvZu+wHRMdTTSPuUVpoCG4yaOmCaL9NYM0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748688415; c=relaxed/simple;
bh=iQrS5JgFltebiHb7de2o18x5ZlgNqXQei0BNNbQpNpQ=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=l5XD7aiA7joJdjJHijW4alp4DimeMwn7dV3Qjgp7Cki5oeteX7ocngu8fAIoM4sxa/lgtPyutdM0OxiY6hH+zZ6OmOtk1bV4pMAefuRpC4IhD4BjB/rBduk9yTjDWs06V1+5is0nV4exd1rR4d6fHaQ5MBgUAbPynlQ1JodDNLs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q0m4bpoc; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4BD71C4CEE3;
Sat, 31 May 2025 10:46:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748688415;
bh=iQrS5JgFltebiHb7de2o18x5ZlgNqXQei0BNNbQpNpQ=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=Q0m4bpock+/RAVwGCQvkjx6zXGPaMkvt84Rx4avFqj2yutwrAixHzQiRg9ZY+MGhS
asrQQHtsE1uWvaq37rzKmiKy8XHvJlItHZJsri+NeCO+C8GVTafoTzoHQIqKLOBowp
Scf5whC8/pEqx5T9A5VjjboxzDhPiIF1G5DhhSbTOHz+mXepOMtdcYynHeeEimicUE
BZ0pBMzl0MGhH91I5Gll5LYixfvhDkgsBaIDjQpDqU/031P4+ZWN4mkWAmKb7i+eFr
zfrT3xXMjsN7uzTXAq4WVfzaLd4qh3akU98uS2CRVWJQrzVML3c/UJY00N8+oCLGX+
SHmKokW+TeTMA==
Date: Sat, 31 May 2025 12:46:49 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: gregkh@xxxxxxxxxxxxxxxxxxx, rafael@xxxxxxxxxx, ojeda@xxxxxxxxxx,
alex.gaynor@xxxxxxxxx, boqun.feng@xxxxxxxxx, gary@xxxxxxxxxxx,
bjorn3_gh@xxxxxxxxxxxxxx, benno.lossin@xxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
chrisi.schrefl@xxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH 6/7] rust: miscdevice: expose the parent device as
&Device<Bound>
Message-ID: <aDreGUcvyR4kjMGl@pollux>
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-7-dakr@xxxxxxxxxx>
<DAA7CJOUJPNL.F7UH9KD8JANF@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <DAA7CJOUJPNL.F7UH9KD8JANF@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 10:27:44AM +0200, Benno Lossin wrote:
> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
> > @@ -227,11 +229,21 @@ fn drop(self: Pin<&mut Self>) {
> > }
> > }
> >
> > +/// The arguments passed to the file operation callbacks of a [`MiscDeviceRegistration`].
> > +pub struct MiscArgs<'a, T: MiscDevice> {
> > + /// The [`Device`] representation of the `struct miscdevice`.
> > + pub device: &'a Device,
> > + /// The parent [`Device`] of [`Self::device`].
> > + pub parent: Option<&'a Device<Bound>>,
> > + /// The `RegistrationData` passed to [`MiscDeviceRegistration::register`].
> > + pub data: &'a T::RegistrationData,
>
> Here I would also just use `T`, remove the `MiscDevice` bound and then
> use `MiscArgs<'_, Self::RegistrationData>` below.

It has the disadvantage that the documentation of the `data` field above needs
to be much more vague, since we can't claim that it's the `RegistrationData`
passed to `MiscDeviceRegistration::register` anymore -- given that, I'm not sure
it's worth changing.

> > +}
> > +
> > /// Trait implemented by the private data of an open misc device.
> > #[vtable]
> > pub trait MiscDevice: Sized {
> > /// What kind of pointer should `Self` be wrapped in.
> > - type Ptr: ForeignOwnable + Send + Sync;
> > + type Ptr: Send + Sync;
>
> There is no info about this change in the commit message. Why are we
> changing this? This seems a bit orthogonal to the other change, maybe do
> it in a separate patch?

It's a consequence of the implementation:

A `Ptr` instance is created in the misc device's file operations open() callback
and dropped in the fops release() callback.

Previously, this was stored in the private data pointer of the struct file that
is passed for every file operation in open().

Also note that when open is called the private data pointer in a struct file
points to the corresponding struct miscdevice.

With this patch, we keep the pointer to the struct miscdevice in the private
data pointer of struct file, but instead store the `Ptr` instance in
`RawDeviceRegistration::private`.

Subsequently, ForeignOwnable is not a required trait anymore.

We need this in order to keep access to the `RawDeviceRegistration` throughout
file operations to be able to pass the misc device's parent as &Device<Bound>
through the `MiscArgs` above.

> Also `Ptr` doesn't make much sense for the name, since now that the
> `ForeignOwnable` bound is gone, I could set this to `Self` and then have
> access to `&Self` in the callbacks.

We can't make it `Self`, it might still be some pointer type, require pin-init,
etc. So, it has to be a generic type.

But, I agree that we should not name it `Ptr`, probably should never have been
named `Ptr`, but `Data`, `Private` or similar.

> Would that also make sense to use as a general change? So don't store
> `Self::Ptr`, but `Self` directly?

I think it can't be `Self`, see above.


Return-Path: <linux-kernel+bounces-669062-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8B4DB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:01:54 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 56F3918803CC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:02:02 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1B70023A984;
Sat, 31 May 2025 11:01:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="H0Wy1B28"
Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131])
(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 C792620C02A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:01:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748689296; cv=none; b=PI7/wS6IUfAUoZYpOMkxsYUhaVySMJ7caSPRYEgq95OZbR6PvTZ4eshOpvk2ZmhWghynEtePDG2aDpPaEgmXY+pjKNuOmHfcwtso1bXWGp2x50ADhCYuqHtwE3qmHUXsm8XmgSvJMXmIc62btfH2V86TNLitccg3c0jB7mG0asY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748689296; c=relaxed/simple;
bh=9jUhyhtYh/WjEsg9JLIeVwHyR1TB8Sf2degZczTD/RI=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=UCHnl+pQ3w8ksKRcKtqqOb2W6EBO7MhfAEwjFv0QmPWVz5J0cmBsaIx0AYbhQceq/DwXeAAASO0L4VCPxhRUR925gcCb6Rmcf6RElBQx6X6Hpkvf2AbN8bx2Zy6wyRTXeNs3LsrZnEZZ22C1P+I4a4kiRBKywsCdjy5bA5J51Yk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=H0Wy1B28; arc=none smtp.client-ip=205.220.168.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279864.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54VArp6V023933
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:01:27 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
aeCiqHx1yrJeitABKFiq1doyQJ7MQ/DROi2v0A5OQEI=; b=H0Wy1B284eB/s2xw
c+so37/X8FLl+d3vwwquG+v9bcjW5Zu9RWRlLyhhsKKp2ycgECXcRHcpk97//H9y
qnVoCka/767PcbW2hP/X6xGLX1xqVLwwzHf4A1KhP00Yq0el9THas4gm1KdkQv7p
dgzsqpgiXw2YMnpB7HBRictwXTLBRM9o6G5PiPG77VgaQjBxgOQ5gwSP6Z9F6fSt
sLTSncd5RRFmCVK68P1SzuF8E3txzzDnidy6EOetycO4v76r3q8q2hjm3kAvF+kv
W8+P200zSxjXOxI3Lhu82z0jePcpqnZ+PhefNjHrw2BwT4u9HYC5wIbfFDQIClQZ
Gcz4Jw==
Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytxm0fey-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:01:26 +0000 (GMT)
Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-7d09b74dc4bso62640585a.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:01:26 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748689285; x=1749294085;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=aeCiqHx1yrJeitABKFiq1doyQJ7MQ/DROi2v0A5OQEI=;
b=QL1iG3tdmdQ++y4ExAqcXpSVvp7M1saJCLEPy7R9CFz+85ia3IH6xHh9AbHzDDmmWJ
0thyxAURPmpgmTUk6pQB1aKh/5LVSyyWpgxb31/HLNwjd3SdfUj+eQxayFKNPS0ipLe/
p2ICodAlDQQOYrVlKbLI4oR04yi1uB33BrpMX3xKEN3TyHkjDyydEdOQypv58kkEQj9b
SWdpj4v5OsZe7WrEehU4YOyfGrnmT7e06YjtvocMrAN+RhQ4oQtazOI+ttNHYSgVXnZ2
oZbaHHIh5x84o3slMT2kG5jE0oQGMv3/Qm0nx2CCScSIHJ0X4vZHUHrQGQiVmzrCVtsK
wpXA==
X-Forwarded-Encrypted: i=1; AJvYcCVIAYbtoNLrcza3plnF0fCOyEFzaiqdeCRkaX1kwlETxc0l9vEd10PKEXKgm1Efw21242IBB8NZNav+fN4=@vger.kernel.org
X-Gm-Message-State: AOJu0Yzd83BI/BmVUWFppT1Zne3ZOwCGALThZ+aTSlyojKnA6YQ4FyoR
6lHQbSXGcc+84L73R4umCbRWszJt03M4ILmHrhjFUT4hwrqnv9RDKbf8i+ZpJJHxLJRbms7vBZy
xaAYnL/Ei1exrrpgrctFrI+nfNJdFb6avepbJtZuQB3AerukquLB9tXi1Qen+CdmvhSYwBl/1Ez
c=
X-Gm-Gg: ASbGncsY01WCf4Z5XQj9oOVvbNCHhPkA4yX2bXM+ie0t3ZKcwc3rWQXKfRAbyykSbJ3
tOLCigW7zxKUn6F8Ch4A1BYUWqjdFN9tZIZb9u+zwhatuqMNWlY4HV9jUFgPc7n6GKpaZD0Fzfp
Q64EyhPsBm1yARggRkjLrMoiSfVkgVQzQG/FRXpUzz54ZA+1n7K/7zQdokU/+/eutgAjgLrwTUH
h2dJGQJl782sixG2mynnP6XvNtvSrsxLgkwNzokDqSA3jevcZabVQ02TEMn0Cd4UNSggwPa58A+
O1YwS2wFA7M9J9pqK8KKiTUsbECt8CkQkmLJN/jTYR8shMwZ5XHOdI+ySdTflOVR6w==
X-Received: by 2002:a05:620a:600b:b0:7c0:b106:94ba with SMTP id af79cd13be357-7d0a3d9e14amr283128785a.7.1748689285474;
Sat, 31 May 2025 04:01:25 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFPhz34bJwNdP2FlxXdeGr04uffjVcOkUPbyMNe8pUCP22/47kesOrRkNv+OJ5Cac778GzJ5Q==
X-Received: by 2002:a05:620a:600b:b0:7c0:b106:94ba with SMTP id af79cd13be357-7d0a3d9e14amr283126085a.7.1748689285050;
Sat, 31 May 2025 04:01:25 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-60566c2abb4sm3098010a12.13.2025.05.31.04.01.22
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 04:01:24 -0700 (PDT)
Message-ID: <171f207c-85dc-4610-aa1f-9c986f7004f6@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 13:01:21 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 4/5] arm64: dts: qcom: ipq5018: Add MDIO buses
To: george.moussalem@xxxxxxxxxxx, Andrew Lunn <andrew@xxxxxxx>,
Heiner Kallweit <hkallweit1@xxxxxxxxx>,
Russell King
<linux@xxxxxxxxxxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley
<conor+dt@xxxxxxxxxx>,
Florian Fainelli <f.fainelli@xxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>,
Michael Turquette <mturquette@xxxxxxxxxxxx>,
Stephen Boyd <sboyd@xxxxxxxxxx>
Cc: netdev@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
linux-clk@xxxxxxxxxxxxxxx
References: <20250528-ipq5018-ge-phy-v2-0-dd063674c71c@xxxxxxxxxxx>
<20250528-ipq5018-ge-phy-v2-4-dd063674c71c@xxxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250528-ipq5018-ge-phy-v2-4-dd063674c71c@xxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Proofpoint-GUID: mQfUf26FwzqmfXAV0LfRDwIFxBAzuflY
X-Proofpoint-ORIG-GUID: mQfUf26FwzqmfXAV0LfRDwIFxBAzuflY
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDA5OCBTYWx0ZWRfXzuvZZiuPTUKS
EHQbgJrX83wYfVGevwgNk+vs+BmL5KKum/a56v6I2tnMq3GY9pQn84ZZ4jH7FB0MUazryaodwZ0
MUY1rQo10SrNNUBZ+n0IvtHejXgiAHgOOh9jZlN8n5qbVmeTT+jT6MoYGEXN2S4RKu2yJ71azYF
SbsDcs0NIgZ2MBv6vfcAW+JfbTjWAu5LXfr2Nuwbw7Snm8qsrJInN06xRZlmOw38FqKsGsNieLX
Q9Bagw5aEK+k9++VWj2BQoug+5Ig3ZwZ0gJZT9gJOSl5/fvbzNIAm9uvAg43OSvzWPnpFSZq6GP
YWvjifvK7HalxDVElKT61A2INzmh9OhdGTWurI8OwCGQ/bX5vh9/7Ns24jhaie2le1ccB3plMmu
Je+dtCvdVJw0SgEJlDm0UV8Bv3jSBlUpLaDpN0NseCpXRwGpMRKnrDK60t66NlbsGgCTkCeE
X-Authority-Analysis: v=2.4 cv=XdKJzJ55 c=1 sm=1 tr=0 ts=683ae187 cx=c_pps
a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=UqCG9HQmAAAA:8 a=EUspDBNiAAAA:8
a=WGRY1n-6GeFXo4cNehYA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_05,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
priorityscore=1501 mlxlogscore=731 spamscore=0 lowpriorityscore=0
suspectscore=0 phishscore=0 impostorscore=0 clxscore=1015 mlxscore=0
bulkscore=0 malwarescore=0 adultscore=0 classifier=spam authscore=0
authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1
engine=8.19.0-2505160000 definitions=main-2505310098
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/28/25 4:45 PM, George Moussalem via B4 Relay wrote:
> From: George Moussalem <george.moussalem@xxxxxxxxxxx>
>
> IPQ5018 contains two mdio buses of which one bus is used to control the
> SoC's internal GE PHY, while the other bus is connected to external PHYs
> or switches.
>
> There's already support for IPQ5018 in the mdio-ipq4019 driver, so let's
> simply add the mdio nodes for them.
>
> Signed-off-by: George Moussalem <george.moussalem@xxxxxxxxxxx>
> ---

Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Konrad


Return-Path: <linux-kernel+bounces-669063-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4FEAC41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:03:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id BF32B9E468A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:02:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B5EC0239570;
Sat, 31 May 2025 11:03:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SoTBEBB6"
Received: from mail-oo1-f66.google.com (mail-oo1-f66.google.com [209.85.161.66])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D25E22339
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:03:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.66
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748689381; cv=none; b=VUuQRS3tjfcDoo/HoqLfAREcZqAhcuxLPX5WuJi7FayBSIbELTbBfOEw33U4F3wumtkJvpLJq+r3B7hKRJKhtBmgo2cHBB56nwH/tOJBgKza5wHNoHKCas8CeJnFPMyT7JyikS1eubt+cDtZyFfydjACcJJi6390hIMeXDrQTic=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748689381; c=relaxed/simple;
bh=MQ0QsfN78p6M7ysS6rRwuQHFP9/bjaEB6BqUbOvdxvQ=;
h=MIME-Version:From:Date:Message-ID:Subject:To:Content-Type; b=mG1Dx/Sy8mx3asc+R3f555yTQwJwk/z5PEHqKs6MUNN8AchpWautIylY1La+74CARZNuOWKmFwatEwThPijSBW66h2USbhnXxKcqm8KuLKTIg7NNZdivCdyeY4NDi/gAHrU61RNOiWyi2Rg8hMxvnKj4yxbtTXwNTeJOsG/xJjU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SoTBEBB6; arc=none smtp.client-ip=209.85.161.66
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-oo1-f66.google.com with SMTP id 006d021491bc7-6021e3daeabso1457269eaf.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:03:00 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748689379; x=1749294179; darn=vger.kernel.org;
h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
:date:message-id:reply-to;
bh=8MJVpLnAhuiLyjmxqyPqgnL0s3rbxwXJq8Lbe3LlxTU=;
b=SoTBEBB6YgbRLvab8eW4EauoYVpDTBrbDB943CiNHo5j46H2SlrYarUJz/lPwe4FmY
fs9Yx7D3tYlCuiK/UclFG4dppGk/gdjr9o7cUOqnoME8DdgotcA1O9Cfkj774bbcD2Pq
uK6MYFuMxHRWHC303vHOeHMFQ0YD53w1nbSYoyCdEXeNOSSmEPmUJ/3H4DiJKF3569n9
IIfwlYQfJbGEqcVyUPpzhjflII4nRja7ZcNwDYvB4kVUzChS53+0LdZMud7eOGJ0SScV
7QfqoiF5Q+ixg81NOZXPeWDwvm844c59R/1PmUlVvyk+fKscgLuBNy3QFcIlHJ7kJ585
UjLQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748689379; x=1749294179;
h=to:subject:message-id:date:from:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=8MJVpLnAhuiLyjmxqyPqgnL0s3rbxwXJq8Lbe3LlxTU=;
b=jVFcC3y80qJ2UqAUqLLn+56qV7YFo3M9JgKr3YVofHwg1s+TJ0BdJM9xKzCLGubbpi
lUPoaQialOuP2aY7zmA+1Z8hh9aaL2+xjBEgY40S4qa3xd229QOUwfQrNaRWn1V7VZfw
WuVsYlt8pLKzNe36B81yUd1JL0hQwVJGBxSHBs/xnII6itURDeoFga30xOUP8NirWrkO
fu7W+nG4u4nHlFv7R9HIdmrbKvIFAm1IL6J1VfZkGoLwd2/Oi+27ylVpLGO43jCMOR+U
H4u/Pl/dqQ6dWAmt1BQbAxwnXnYl5KwamAY/u+eOYPN5QH3EtET3n6XM02+liIk2Tmls
Gcog==
X-Gm-Message-State: AOJu0Ywmw7DWIZlf+iJ+Y8rM8UBKr7N/Hw3OwPDNlAxIm1D3nNABZVcZ
anhjEdz7VLo7uxfM1nxv+1gmGb/nsDq0yC2yEqRXeHJs9KZ17tQU8RITp7K9Pm6QDP8YWEapM6h
+N4omgppxaahQgnBwSxMezs0Oi81x7uKTraWx7sk=
X-Gm-Gg: ASbGncsbjNjWALLd+ohiGVoPqK4+m2cedHOBnl6WBZCENF9JL9BmsBbg/tVs7Iv/W5V
AbDH4JfBid4ukm2xFePQIb5tPAKA4TnsG9J9cTPP4T98ioWpq2xXcWnkVcXwAC+5mWB525u1rHq
NXNiLr/pko53IgpjnB6C6j6jJqdYlAQ31PXU7j0McvAJIQ6uu8d0agoq2S7KrvUIwiZA==
X-Google-Smtp-Source: AGHT+IGKk5ajWyklz0mksu47OSabJcuFKa6zZAwQ3u32kPtPsEI4fkaKveNB9a9lshKcupoTDsKOPG0mPutK5pLEYXc=
X-Received: by 2002:a05:690c:7405:b0:70d:ecdd:9bd1 with SMTP id
00721157ae682-70f97fc644amr88028967b3.24.1748689368884; Sat, 31 May 2025
04:02:48 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
From: Amit <amitchoudhary0523@xxxxxxxxx>
Date: Sat, 31 May 2025 16:32:38 +0530
X-Gm-Features: AX0GCFtfD7ne3UV7afYofVX4jg2bI7lk0tE2wmsC0PzSBUBfjsSacL8g_vSND-k
Message-ID: <CAFf+5zic0=7ThhCZu2wwGd+OKEErsvbL31N0MSzRRO35CZaOVA@xxxxxxxxxxxxxx>
Subject: List of pthread functions and symbols.
To: linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS,TRACKER_ID autolearn=ham autolearn_force=no
version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

List of pthread functions and symbols.

---------
Functions
---------

int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *),
void *);
int pthread_detach(pthread_t);
int pthread_join(pthread_t, void **);
void pthread_exit(void *);

int pthread_attr_init(pthread_attr_t *);
int pthread_attr_setdetachstate(pthread_attr_t *, int);
int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
int pthread_attr_setstacksize(pthread_attr_t *, size_t);
int pthread_attr_getstacksize(const pthread_attr_t *, size_t *);
int pthread_attr_setguardsize(pthread_attr_t *, size_t);
int pthread_attr_getguardsize(const pthread_attr_t *, size_t *);
int pthread_attr_setstackaddr(pthread_attr_t *, void *);
int pthread_attr_getstackaddr(const pthread_attr_t *, void **);
int pthread_attr_destroy(pthread_attr_t *);

int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *);
int pthread_mutex_lock(pthread_mutex_t *);
int pthread_mutex_trylock(pthread_mutex_t *);
int pthread_mutex_unlock(pthread_mutex_t *);
int pthread_mutex_destroy(pthread_mutex_t *);

int pthread_mutexattr_init(pthread_mutexattr_t *);
int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *);
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *);
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *);
int pthread_mutexattr_destroy(pthread_mutexattr_t *);

int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *);
int pthread_cond_broadcast(pthread_cond_t *);
int pthread_cond_signal(pthread_cond_t *);
int pthread_cond_destroy(pthread_cond_t *);

int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *,
const struct timespec *);

int pthread_condattr_init(pthread_condattr_t *);
int pthread_condattr_setpshared(pthread_condattr_t *, int);
int pthread_condattr_getpshared(const pthread_condattr_t *, int *);
int pthread_condattr_destroy(pthread_condattr_t *);

int pthread_attr_getinheritsched(const pthread_attr_t *, int *);
int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *);
int pthread_attr_getschedpolicy(const pthread_attr_t *, int *);
int pthread_attr_getscope(const pthread_attr_t *, int *);
int pthread_attr_setinheritsched(pthread_attr_t *, int);
int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *);
int pthread_attr_setschedpolicy(pthread_attr_t *, int);
int pthread_attr_setscope(pthread_attr_t *, int);
int pthread_cancel(pthread_t);
void pthread_cleanup_push(void*), void *);
void pthread_cleanup_pop(int);
int pthread_equal(pthread_t, pthread_t);
int pthread_getconcurrency(void);
int pthread_getschedparam(pthread_t, int *, struct sched_param *);
void *pthread_getspecific(pthread_key_t);
int pthread_key_create(pthread_key_t *, void (*)(void *));
int pthread_key_delete(pthread_key_t);
int pthread_mutex_getprioceiling(const pthread_mutex_t *, int *);
int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *);
int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *);
int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
int pthread_once(pthread_once_t *, void (*)(void));

int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *);
int pthread_rwlock_rdlock(pthread_rwlock_t *);
int pthread_rwlock_tryrdlock(pthread_rwlock_t *);
int pthread_rwlock_wrlock(pthread_rwlock_t *);
int pthread_rwlock_trywrlock(pthread_rwlock_t *);
int pthread_rwlock_unlock(pthread_rwlock_t *);
int pthread_rwlock_destroy(pthread_rwlock_t *);

int pthread_rwlockattr_init(pthread_rwlockattr_t *);
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *);
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);

pthread_t pthread_self(void);
int pthread_setcancelstate(int, int *);
int pthread_setcanceltype(int, int *);
int pthread_setconcurrency(int);
int pthread_setschedparam(pthread_t, int, const struct sched_param *);
int pthread_setspecific(pthread_key_t, const void *);
void pthread_testcancel(void);

-------
Symbols
-------

PTHREAD_CREATE_DETACHED
PTHREAD_CREATE_JOINABLE

PTHREAD_MUTEX_INITIALIZER
PTHREAD_COND_INITIALIZER

PTHREAD_MUTEX_DEFAULT
PTHREAD_MUTEX_NORMAL
PTHREAD_MUTEX_RECURSIVE
PTHREAD_MUTEX_ERRORCHECK
PTHREAD_PROCESS_SHARED
PTHREAD_PROCESS_PRIVATE

PTHREAD_RWLOCK_INITIALIZER

PTHREAD_CANCEL_ASYNCHRONOUS
PTHREAD_CANCEL_ENABLE
PTHREAD_CANCEL_DEFERRED
PTHREAD_CANCEL_DISABLE
PTHREAD_CANCELED
PTHREAD_EXPLICIT_SCHED
PTHREAD_INHERIT_SCHED
PTHREAD_ONCE_INIT
PTHREAD_PRIO_INHERIT
PTHREAD_PRIO_NONE
PTHREAD_PRIO_PROTECT
PTHREAD_SCOPE_PROCESS
PTHREAD_SCOPE_SYSTEM

----


Return-Path: <linux-kernel+bounces-669064-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id F3A4E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:05:43 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 151B317DF28
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:05:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A0D9239E83;
Sat, 31 May 2025 11:05:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="l3x3cLQ5"
Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4543E220F56;
Sat, 31 May 2025 11:05:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748689536; cv=none; b=b22JGpYbvmV/qqphji26dUo1loFGettYdhHZEiCkcnNaq0mAgUxu7FfjGS6Lpq1j1ZoE5VOwbsgZs6oAth0juX5HlJ6OO+vadpS6hQk6UsLYilbroqpZlIp97QUyyWNcW09Pwbnv2NfTVPNbwRgNYvunN/Nl57sXoYv4jJAl84k=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748689536; c=relaxed/simple;
bh=dYDKXesgHkdXXeckfKtCNiqnxIHSWdQGcNNgbHW5FwE=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=YaQ5rrEdo/cmIGMMDj86L1e+DmmcykVgDXSXmqRt+Wr/6F8tn7eTcKCxXA/dUsWKv8sSzqGorwJMwgdWpL/mhGrTO9wjPNK1myevBUWzDyKFIyp0rk6zXlL4/Hg2VzFQFDGs6n3UyxjDFiqiOBiSNDjmcCvvuprxpJkvuxPkI1U=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=l3x3cLQ5; arc=none smtp.client-ip=209.85.214.182
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2322d8316f6so3661755ad.3;
Sat, 31 May 2025 04:05:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748689534; x=1749294334; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=dYDKXesgHkdXXeckfKtCNiqnxIHSWdQGcNNgbHW5FwE=;
b=l3x3cLQ5WhBv5FksNnJvzkefnH/11ApTYhw+PHXO2RH2T7cw8lmwKznrNM2c5NnbQp
vYTEp/X8Y/cjO1e0tcYlZpMay6rzCNBgXWV5HgsjDg5AR258UgnmyQrxBB6RYl7gF9uB
+KsY7OAn9OdcZWYe94d+2i/ki41IShtDa6PNZ7WMdSO8erQvSxikK47HcgSay1x4aI+2
9HhWisxEoRtlnwaGtK0/2kbrXtnjaq8UZdrIb4lbglZBxpbA0fya1y3T9Eg3WvK1kOk3
3ChAN73vkdkoTOX/08+WiSKO8/VKlF0GiN4JqaRIGV5wjuJKH3X6nFx6RyvLVNTgjXEu
p4uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748689534; x=1749294334;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=dYDKXesgHkdXXeckfKtCNiqnxIHSWdQGcNNgbHW5FwE=;
b=Qh+jprJDquA9hraffUrM7PB4000whTMAJbkcoj/TeHkfSLoyfSJj4Ozav0COvsuPrK
V8zSE524t6TxvXtDaJzcW+gUaK5vmKLFx13ZS7crg/iPq9P8oVXammUCZIjCi2tf5e0n
3cFAfa39AE5QMLz4XayoZxLA7PNpE2m27GeVMSZpDCaaCrhh/CUwGtD6NxPTrj793HWd
Y2JWQNxDiyv2i7fuDWO8agxzMqGwKJy8BY6aQrrpR1m9jD0JQKq5LX6iBwkJoqqEPQn9
UvQ5vR5XGYPxe00tBjldQk5kr/hLcKWh55EKjRxOL09c60R+oolWerQP+n488kYw1BaY
LtHw==
X-Forwarded-Encrypted: i=1; AJvYcCUuDOyoSenc9FXVYSqvxFiDKSBHGuCltdj8mBmQGXzT15LesMl1tPMPlD0ack7aIKjd3MFyKeXC8LBhtYw=@vger.kernel.org, AJvYcCXes27yghyu66B7W2yRyjAgcgO2Z8rTB7RJeq8HS0KbtTgmu2F69jWfUErcrJlourAhh8VYmdWLVQeg5WT2gVM=@vger.kernel.org
X-Gm-Message-State: AOJu0YzG7jdXp+NhVeR+lk6QHDsBinsUABV7OyyUKzSlihAwe2twziRQ
boceUZH/umL303Y1jSb7MdHqyrQ4gj76OcEmIXH27OUBA8KXRoR2VrCbYZhtF+Jmsd/efXKv/sV
7Yv6EpjNCQTH3b1T8OsrlqbdKPi+MthM=
X-Gm-Gg: ASbGncusEO6FVQwVEXkjqWJJQufSGPSOM+8LqLfFLqR/nx2qVtwbSAxpTApxVuBp+nb
ZqKSslb3+3xNgdDP1poXrJWatiufywMMmkTisqCFieBy/dB9g6DFX2uvezXEhJ7K8WXcM55tZSA
KX6V6oGbs+42jlmilzfEsDaQle+JP6FJq2H28zJmIpTvgaWjfXtc211g==
X-Google-Smtp-Source: AGHT+IHr0F8f28AYuxYXH9ARPMLJdMBMX5+b9+n3J5cdDU26jX1yTPwIm+xgtmwf171/lr9FNtaP2xnoPF9dJCvL0lc=
X-Received: by 2002:a17:903:1a68:b0:235:737:7a8 with SMTP id
d9443c01a7336-235351e09b0mr31579385ad.3.1748689534463; Sat, 31 May 2025
04:05:34 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530142447.166524-1-dakr@xxxxxxxxxx> <20250530142447.166524-8-dakr@xxxxxxxxxx>
<DA9RRZVPZSMW.1LGW9H4G0RLT5@xxxxxxxxxx> <aDowAzvEvrQcella@pollux> <DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx>
In-Reply-To: <DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx>
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Date: Sat, 31 May 2025 13:05:21 +0200
X-Gm-Features: AX0GCFvOph2vOvoPyYINMtiojBc1C6_u1HQWHSUz7m-6nP4AYTe1_0MCnlRK8co
Message-ID: <CANiq72nx8VNjKw_P+49AcMUuY_pE2jYoybLMCAyjhGv-Z-a22w@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 7/7] rust: sample: misc: implement device driver sample
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: Danilo Krummrich <dakr@xxxxxxxxxx>, gregkh@xxxxxxxxxxxxxxxxxxx, rafael@xxxxxxxxxx,
ojeda@xxxxxxxxxx, alex.gaynor@xxxxxxxxx, boqun.feng@xxxxxxxxx,
gary@xxxxxxxxxxx, bjorn3_gh@xxxxxxxxxxxxxx, benno.lossin@xxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
chrisi.schrefl@xxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 10:11=E2=80=AFAM Benno Lossin <lossin@xxxxxxxxxx> w=
rote:
>
> We could separate the common parts into a single file and then
> `include!` that file from the two samples. (Or if the build system
> supports multi-file samples then just use that, but my gut feeling is
> that it doesn't)

It does, in the sense that you can use Rust modules (i.e. different
files). Multi-file in the sense of linking several C files + a single
Rust crate root also works (we have a sample doing that).

Reusing the same `mod` from two different crate roots should also work
(well, unless `rustc` doesn't like it for some reason, but from a
quick test it seems OK), plus games with `#[path]` and symlinks.

> I really would like to avoid `cfg` in samples.

I think the `cfg` is not the end of the world w.r.t. learning (after
all, `cfg`s are part of the kernel all the time, and it is not the
first sample). In fact, one could argue that it is a good way to show
what `cfg` can do, in a way.

But another disadvantage of `cfg` is that then one cannot have both
modules at the same time, and thus 2 builds to test both etc.

Cheers,
Miguel


Return-Path: <linux-kernel+bounces-669065-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CBCC341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:11:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id DEE0D17FDAA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:11:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 53CC3239E9F;
Sat, 31 May 2025 11:11:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="G3ravUc4"
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131])
(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 05EC92236F3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:11:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748689871; cv=none; b=ju1tla0P81v2PR8LpyfNB1wIajp816DoDum+MRb/OIQCa64FThfuKjOs2JuuIJoNhEziSeiCfgMrvETr5YsNLf6ZNexw0jRkQco162p+1NBNcQRXJ67eA5TnnY4wB4PsjRhgs9DIOq9bdSi+JFZnRbPkvfR3xeX0WDNWA9fi2LU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748689871; c=relaxed/simple;
bh=5b46GiRsDSu/uXYhQaQ/gNjsb8GW7abqp6ixGsVYxaA=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=cEmP5ZLjg3PC9Jv5AQWBH483PSr6EOotXiJAni0bNzwXRkipmYcGxzSJbQlELX+BxhzCSl1eFEJOtZBv0165Og4mF6R++84GLn8rBTjtQFqSg9Btd2QUMnWdaU/woyBvtZ92y21C62R4ljo9Il3vH+6vGrNRFUxnovl6XNvAZY4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=G3ravUc4; arc=none smtp.client-ip=205.220.180.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279872.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V4MjiJ008158
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:11:08 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
NZ+vE5pX8HZbB5flVQGgvGJmT1zk4uOzkDXJe6TM4M4=; b=G3ravUc4nBNsbkOQ
Rjnu9S4rlJRPOyooCSimwQq0FtSVYBF1UVuI43oCa/NAuvo2OC6TXHwTo/dmwamh
osWY4F5qH82MNUs5wpxux6M7OkpU83ECW8OGOuJP0cbf4+b+eDJX1WLGr2uiYDK0
JV1I/5YzafEbaXxNJaHtjEuSW3SLcpgSib+cyaSLynzL9FtEDD5ZZg7TKz5YD5J5
SFEc9TxFrxchAIcVaM1falgXRASIXiKcu1md2yD+/swedlp978FzRN3554PyNYJn
+t0HETJV2aPW5wJGik0Ld6dq6B0wiFody0HYCf3ESwCb18a0k+NrgwHg5GG5DINL
E/PiwA==
Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytpergr7-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:11:08 +0000 (GMT)
Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-7d097083cc3so62239085a.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 04:11:08 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748689868; x=1749294668;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=NZ+vE5pX8HZbB5flVQGgvGJmT1zk4uOzkDXJe6TM4M4=;
b=F/9xFgbC9a40ZU/bIPs85CqX+Lymxa6VX2rA+Cou3FrdZ7/bTifaH6WiPj9TA9HA3/
00bK8eYRGdT5fJAAb/9IY9SY7KP7Chg+eilnvICojUQI63PaXqrAivD0jcG/IniijmLb
qZURcCKAfExiMYeUYUkoV7Bf3R80Z6UqAjhOvV6Vj53zEYYpGBvi8/QrdpCuM2L/h36l
TfDuYHCnRexghgRcavTA+Z93HVxKZ7czpav673emnyfjkXmiExPCY3yM/MDp+nXB37Et
yyMATyPzlMEC8SCqttRki43TPmLGPq5MdmMPBvsnt4Q7GBxP4S6i9OXtViM1yfb9iRvF
IoRQ==
X-Forwarded-Encrypted: i=1; AJvYcCWSNk/DtnzoAIwqPo4dADbRx8dOAtNNdb0ToVPpn9hF+w4GBV83TqbTR1S6zz8U8jTj+BUAhAgs2xKaLe4=@vger.kernel.org
X-Gm-Message-State: AOJu0Yy9bnpVi05KeviePJa2S1xxoaKH11EVD7Z4Ofqo1rvhKaZLVb0U
+Nde0LgMDlpoZQLvBiIs+QBIZ7i7XN5CRN62SVH/L9cv8CRTJ0RD7/5xI7+nSKcxsq3rCLHEJIb
7hXstQuLpWpAL4p6JAuhsccVV17OgS4H+74+JE/wcCCVSdCRxeKuPtIVgwZJByQP+jE4=
X-Gm-Gg: ASbGnct5G7yVeJxeO3GHYgwRuJw7CXT/oIbkGd3XRDhfkrU5WGcpgY4UqN7k42Nn7Cn
BLSDeu8fspwKC6ljoxTZBvuHo/V6dOE2htcWHdBJHBeqgleF30f3UYL7u3NJwSDU4NxQbhwSbml
yPBJ1QzSKZ7y/zvERwNu2ix5p4cTa8h41QTX9FueEciBKJcJzkuX8pD45cminDrlH56aoe23H6I
C9z6sxF1upM+prmBAqGnQt0VwKYkUaX3XZa7+YhNIJZd4/KT0lmICDnZjNQRUjRxQelaEdCiBMo
4dBR2WXCapii03FGiE/JNHGWc06QLB5qWpAh+B2FQqlkCFbAQGvCvY9pdbHgVqOSOQ==
X-Received: by 2002:a05:620a:40cb:b0:7c0:b018:5941 with SMTP id af79cd13be357-7d0a3d978d1mr297824785a.7.1748689867839;
Sat, 31 May 2025 04:11:07 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IHSvAl3+81zPxT8GtGObctxByRCmdXGFKJiq1TFWGEKnxHTfUWMUwJ0OE/8YtwwGaBL7+oiOg==
X-Received: by 2002:a05:620a:40cb:b0:7c0:b018:5941 with SMTP id af79cd13be357-7d0a3d978d1mr297823185a.7.1748689867482;
Sat, 31 May 2025 04:11:07 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d82e760sm486122566b.52.2025.05.31.04.11.05
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 04:11:07 -0700 (PDT)
Message-ID: <8c57ed65-002a-4ddc-9056-6b7908c0ff52@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 13:11:04 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v8 1/3] media: venus: pm_helpers: use opp-table for the
frequency
To: Renjiang Han <quic_renjiang@xxxxxxxxxxx>,
Vikash Garodia <quic_vgarodia@xxxxxxxxxxx>,
Dikshita Agarwal <quic_dikshita@xxxxxxxxxxx>,
Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>,
Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>
Cc: linux-media@xxxxxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
References: <20250530-add-venus-for-qcs615-v8-0-c0092ac616d0@xxxxxxxxxxx>
<20250530-add-venus-for-qcs615-v8-1-c0092ac616d0@xxxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250530-add-venus-for-qcs615-v8-1-c0092ac616d0@xxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Authority-Analysis: v=2.4 cv=H+fbw/Yi c=1 sm=1 tr=0 ts=683ae3cc cx=c_pps
a=qKBjSQ1v91RyAK45QCPf5w==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=3ipQxu46YsJ9vmREi38A:9
a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 a=TjNXssC_j7lpFel5tvFf:22
X-Proofpoint-GUID: d40uDVtfrn7Na2K_6U4CGALTW2EVV2fy
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDEwMCBTYWx0ZWRfXzWjYcEP1hVMl
sWxIlc9kBDY9Zuw3D97yuDEPHZRnMxAvUJAFcoNhS3tHcFmKZdOf+sOMhqPAl5LkHpYsESC134V
BaH9u6Lyj28K7ocHCWYcn7IxXCrR1WEtvpnKe2lSWfRQU0JtqAenCn/TRXb4yUtXgBDT/JT9Fbs
lqMkJhH8rMrt+xpI6aDi7obKbCGlAWtTthrimqG1yK6Orsw8FzGJtzy+rNdXrwjjZ/iNSdeXmZ1
BdGhp3n8QkXc7PNqHE+bBoVBEV00w1OZCFEQ6AfVgl7xpYnYm1BNJdiv7UMEX1ywPAz6URij6Dq
7eiqcS5eYIRcLhTyNuJuok6PwDhCs8jGrpAANOPgsxb5Q0QLzzt7JVXIJbn///Za+qT9vS/3foN
7nqrojmWSZgdxCRlHzj2jV4CezeMhAvET+QMhTyzRYHWThBrNJKT4OXo6DVhdVT7w30GNY8E
X-Proofpoint-ORIG-GUID: d40uDVtfrn7Na2K_6U4CGALTW2EVV2fy
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_05,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
impostorscore=0 bulkscore=0 lowpriorityscore=0 mlxscore=0 suspectscore=0
mlxlogscore=999 adultscore=0 clxscore=1015 phishscore=0 spamscore=0
priorityscore=1501 malwarescore=0 classifier=spam authscore=0 authtc=n/a
authcc= route=outbound adjust=0 reason=mlx scancount=1
engine=8.19.0-2505160000 definitions=main-2505310100
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/30/25 6:02 AM, Renjiang Han wrote:
> The frequency value in the opp-table in the device tree and the freq_tbl
> in the driver are the same.
>
> Therefore, update pm_helpers.c to use the opp-table for frequency values
> for the v4 core.
> If getting data from the opp table fails, fall back to using the frequency
> table.
>
> Reviewed-by: Vikash Garodia <quic_vgarodia@xxxxxxxxxxx>
> Signed-off-by: Renjiang Han <quic_renjiang@xxxxxxxxxxx>
> ---

You can save yourself some error-checking pain in this patch if you
do something like

ret = devm_pm_opp_of_add_table(dev);
if (ret == -ENODEV) {
for (i = 0; i < freq_tbl_len; i++)
dev_pm_opp_add(dev, freq_tbl[i], 0);
}

to programmatically migrate everyone to OPP..

But - tangent - I'd say efforts to preserve compatibility with DTs that
don't even contain frequency data for a given target are rather futile..
Such descriptions where we only know the frequency (be it the tables that
we currently have, or the constructed OPP tables that only contain frequency
data and no voltage corners) are incomplete, and if the system manages to
not crash if the driver requests a TURBO/max freq, it's all because we got
lucky, as this consumer is not voting on (MM)CX.

That said, it's probably to keep the breakage to minimum, especially
given this is an old driver for old hardware.. I'll add the missing
OPPs across platforms with an intention to drop the hardcoding somewhere
in the future

Konrad


Return-Path: <linux-kernel+bounces-669066-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 13BCB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:32:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 8C8B59E51EF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:32:06 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id ED8F5239E9A;
Sat, 31 May 2025 11:32:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b="Sqc5sypC"
Received: from mxout1.routing.net (mxout1.routing.net [134.0.28.11])
(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 3ADF118E20;
Sat, 31 May 2025 11:32:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=134.0.28.11
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691140; cv=none; b=mcW6qxFMF0+0IJOPX+CmUbA7yHXDsco3VxKusvw1U/QT/okBSidkzaUb89m0/qafDv8jkFHFeL1nG9RPSOyOL+sGB+watw2JBCz0E0juQk08XEkLaZ5Eq4+7eE6suDkKwXMhyyp2EMatsBZOSyb6MeCzHq0LdU35wfc3tBfmqiA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691140; c=relaxed/simple;
bh=A2DHo1HywB/qwxABiJK0abopHwRYGfy7HmZJoH0S/ZU=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=n9En52mGvRYJ8iHyije9sDx+v2VRK6Qe5qr6Fkw0c/9jJ42WCF3cVzADpkWBbZ2NHqTYUejJ5AVDHFNJaw3UoD3mzvf+uXNub70f/t1DuZGLxPQPz3l1wM3Jm1lgWc9Sllvnm0YVb3gaFKSDZjaRhC8JLgZcbRVQnzqVUl8Bnxg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de; spf=pass smtp.mailfrom=fw-web.de; dkim=pass (1024-bit key) header.d=mailerdienst.de header.i=@mailerdienst.de header.b=Sqc5sypC; arc=none smtp.client-ip=134.0.28.11
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=fw-web.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fw-web.de
Received: from mxbulk.masterlogin.de (unknown [192.168.10.85])
by mxout1.routing.net (Postfix) with ESMTP id 076673FD38;
Sat, 31 May 2025 11:24:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailerdienst.de;
s=20200217; t=1748690673;
h=from:from:reply-to:subject:subject:date:date:message-id:message-id:
to:to:cc:cc:mime-version:mime-version:
content-transfer-encoding:content-transfer-encoding;
bh=fWlDJZFGibouXI9Xxl4L3ttSojMBpE6uWpsKddJDyoY=;
b=Sqc5sypCBpxJrJDNGjSFApEEtY22xuSJ5xLurDITmfc/4AYyfZl/euSGGlmGJoB9ow6hh9
mb6pe6aNOMCXRZzFKZEW0VaIdC2tcbIFwPdm9phfyBp6t8bzEI0Sdc5mzlXneLd88t1YRm
KWtAC5fcXUNU0f7qKQgN5z6X1xx4gXU=
Received: from frank-u24.. (fttx-pool-217.61.150.8.bambit.de [217.61.150.8])
by mxbulk.masterlogin.de (Postfix) with ESMTPSA id BB9171226A5;
Sat, 31 May 2025 11:24:32 +0000 (UTC)
From: Frank Wunderlich <linux@xxxxxxxxx>
To: MyungJoo Ham <myungjoo.ham@xxxxxxxxxxx>,
Kyungmin Park <kyungmin.park@xxxxxxxxxxx>,
Chanwoo Choi <cw00.choi@xxxxxxxxxxx>,
Georgi Djakov <djakov@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Matthias Brugger <matthias.bgg@xxxxxxxxx>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>,
Jia-Wei Chang <jia-wei.chang@xxxxxxxxxxxx>,
Johnson Wang <johnson.wang@xxxxxxxxxxxx>
Cc: Frank Wunderlich <frank-w@xxxxxxxxxxxxxxx>,
linux-pm@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-mediatek@xxxxxxxxxxxxxxxxxxx
Subject: [PATCH v2] dt-bindings: interconnect: add mt7988-cci compatible
Date: Sat, 31 May 2025 13:24:23 +0200
Message-ID: <20250531112425.10525-1-linux@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Frank Wunderlich <frank-w@xxxxxxxxxxxxxxx>

Add compatible for Mediatek MT7988 SoC with mediatek,mt8183-cci fallback
which is taken by driver.

Signed-off-by: Frank Wunderlich <frank-w@xxxxxxxxxxxxxxx>
---
v2:
- no RFC
- drop "items" as sugested by conor
---
.../bindings/interconnect/mediatek,cci.yaml | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml b/Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
index 58611ba2a0f4..4d72525f407e 100644
--- a/Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
+++ b/Documentation/devicetree/bindings/interconnect/mediatek,cci.yaml
@@ -17,9 +17,14 @@ description: |

properties:
compatible:
- enum:
- - mediatek,mt8183-cci
- - mediatek,mt8186-cci
+ oneOf:
+ - enum:
+ - mediatek,mt8183-cci
+ - mediatek,mt8186-cci
+ - items:
+ - enum:
+ - mediatek,mt7988-cci
+ - const: mediatek,mt8183-cci

clocks:
items:
--
2.43.0



Return-Path: <linux-kernel+bounces-669067-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3D3B941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:39:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 4D8784A24F5
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:39:25 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3D12423A58B;
Sat, 31 May 2025 11:39:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="HL9lD6uo"
Received: from layka.disroot.org (layka.disroot.org [178.21.23.139])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E09C1239570
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:39:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691557; cv=none; b=YmB2xSbsXdtfp1pw6PUMC/yLQM63Fvhgu5s2kJEU3zXlkvUZRbL3avmbO9y7MHpgB7O+kNDACrtAcAyOXZJ39pkAn0nKDHQclkDn2WYkf04q339vRhUhLbwqBs83FbH9W3jKLnCGUsXvAQo1jacnsLZtczAdycgw+/KKf3nJe/s=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691557; c=relaxed/simple;
bh=FThwoyjp+lIKrPd5bzRRSkMXiwi1LjBL90jgimirWd8=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=RINANgt0X42B8tuUrn2WAEL2nGqiZ0lQ3xqqwG5etVzkHQ5yE6g+PMFKgubLJtenj8kKOcm0vzHbR1vK4k2rcXxcO0+QJ03/rej2oakzg3GbSI8Eq0Lc9D7BYYJ5+D9qyk0J9Zoq1qVE6JfowjDrlAPGG9Pdq/QO03agB8lanj0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=HL9lD6uo; arc=none smtp.client-ip=178.21.23.139
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org
Received: from mail01.disroot.lan (localhost [127.0.0.1])
by disroot.org (Postfix) with ESMTP id C10A525C1E;
Sat, 31 May 2025 13:39:06 +0200 (CEST)
X-Virus-Scanned: SPAM Filter at disroot.org
Received: from layka.disroot.org ([127.0.0.1])
by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP
id tdtcKqBGVBb8; Sat, 31 May 2025 13:39:06 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail;
t=1748691546; bh=FThwoyjp+lIKrPd5bzRRSkMXiwi1LjBL90jgimirWd8=;
h=From:To:Cc:Subject:Date;
b=HL9lD6uo72BQbIVpdfk9aqygljJNUq37nzFGQlzRKGG3MshIP9SaNNup4DsLt5p9h
B9PsAgeFWsDMmNsggg8mB+iqXSD/JnVm5SUL61hgjwpQLzA8+mOehWMNt4sjXpsm6O
bqvaMDB2slkCcxhCB23toOuysofKwdlQ0bJ4Y/07zQ1+VUVxmF/f4wHTOtU8BKE1hk
m85sG6t81pDZ1vY4JHX/N17FqvzkauOCjB0/3FDw04PC4lbDu7Ym/HoCqx92BtzX8+
EUrf1GDNmaWXKt8s+2Hxm+UKfnggtMbUvNpceLvAba2HWoxpHAb4FAzdRikwWSDYsW
mTUJsXrD0vNSg==
From: Yao Zi <ziyao@xxxxxxxxxxx>
To: Huacai Chen <chenhuacai@xxxxxxxxxx>,
Jianmin Lv <lvjianmin@xxxxxxxxxxx>,
WANG Xuerui <kernel@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx,
loongarch@xxxxxxxxxxxxxxx,
Mingcong Bai <jeffbai@xxxxxxx>,
Kexy Biscuit <kexybiscuit@xxxxxxx>,
Yao Zi <ziyao@xxxxxxxxxxx>
Subject: [PATCH 0/2] Backlight control improvements for loongson_laptop
Date: Sat, 31 May 2025 11:38:49 +0000
Message-ID: <20250531113851.21426-1-ziyao@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

I've observed strange screen brightness changes on TongFang L860-T2
3A5000 laptop after resumption. It's found that a brightness value that
doesn't match the hardware state before suspension is "restored" for the
EC, causing the strange behavior.

This series fixes the behavior by obtaining EC's brightness setting
instead of using a constant as current brightness on probe.

While digging through the code, I've found some unused,
power-control-related functions in the driver. They're cleaned up and
used to support power control of backlight in the second patch as well.

Yao Zi (2):
platform/loongarch: laptop: Get brightness setting from EC on probe
platform/loongarch: laptop: Support backlight power control

drivers/platform/loongarch/loongson-laptop.c | 55 +++++++-------------
1 file changed, 20 insertions(+), 35 deletions(-)

--
2.49.0



Return-Path: <linux-kernel+bounces-669068-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E130D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:39:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 4ABF47A5F28
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:38:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 989CC23A9B0;
Sat, 31 May 2025 11:39:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="d2v/VAyH"
Received: from layka.disroot.org (layka.disroot.org [178.21.23.139])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 509DD21CA0F
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:39:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691558; cv=none; b=Hr0y+yMgvzjL3Zpv20mhnYybbrXA76DgO7D8mMcPxVOy96a2k9PDf6QCO9Cy4IU/OBDPEBnx+PB7xwtOoTVgER+4CxXhq/xEZnOePhJMNnL0tXlqn2yIWNP8ucAPXLpTur7p4XrdfYqebQ+QcFe5NpuBOnM9hvxGqtqeN5tvx1s=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691558; c=relaxed/simple;
bh=m65zYeSVVsi7UqG52q+jGdWxFXgZln5/FXtFQtDgwvY=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=h2BSoM6uHCme0VlcbQ7kJrU76/60uyRNYY7iJU/uEOwBGufOLhwOBtbhn+LloFtPdexTwM8V+sTdnCoLC/pav1rnJ+gW1yAz1JZLXYd4D9Xr9Jjq33NJWNjYGj8etTW+TDK2NtrjqDGPVZzKYOIprbriJpkl3NHMoR9P7DBP/yk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=d2v/VAyH; arc=none smtp.client-ip=178.21.23.139
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org
Received: from mail01.disroot.lan (localhost [127.0.0.1])
by disroot.org (Postfix) with ESMTP id A654D26082;
Sat, 31 May 2025 13:39:14 +0200 (CEST)
X-Virus-Scanned: SPAM Filter at disroot.org
Received: from layka.disroot.org ([127.0.0.1])
by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP
id rG_HP7124bMt; Sat, 31 May 2025 13:39:13 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail;
t=1748691553; bh=m65zYeSVVsi7UqG52q+jGdWxFXgZln5/FXtFQtDgwvY=;
h=From:To:Cc:Subject:Date:In-Reply-To:References;
b=d2v/VAyH7QNvCtMsgYGlucRpVqiGaFGMUaXWP6g8Y3lfPmZGjBppnppFiBQadgOnC
UweEN3t6/0nO+PKcS+hWszcStqnxgfYEgnCr7H2BNGMpLJ6zT+vSpPuljZKRaErJLq
AZSF5Jy27K4wJNL8XOxfGc6NBp8Ik5QoRjaEC5JsCOtH5TsV7WYvv3P1HtdioaSGH0
TWwDGPP8SJnXBxANE9Pu/GoHGCnFDgyBr1dZEGjpe9mCR4zRkysv2T8tB3swxjhCMn
UP6MTO25EKdlh56E2lvgup9OQiOnztxjJHrjrcxvAmmZW6egGUSYOVGnf/E0Tg6HKp
JpzNJau5eMu0Q==
From: Yao Zi <ziyao@xxxxxxxxxxx>
To: Huacai Chen <chenhuacai@xxxxxxxxxx>,
Jianmin Lv <lvjianmin@xxxxxxxxxxx>,
WANG Xuerui <kernel@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx,
loongarch@xxxxxxxxxxxxxxx,
Mingcong Bai <jeffbai@xxxxxxx>,
Kexy Biscuit <kexybiscuit@xxxxxxx>,
Yao Zi <ziyao@xxxxxxxxxxx>
Subject: [PATCH 2/2] platform/loongarch: laptop: Support backlight power control
Date: Sat, 31 May 2025 11:38:51 +0000
Message-ID: <20250531113851.21426-3-ziyao@xxxxxxxxxxx>
In-Reply-To: <20250531113851.21426-1-ziyao@xxxxxxxxxxx>
References: <20250531113851.21426-1-ziyao@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

loongson_laptop_turn_{on,off}_backlight() are designed for controlling
power of the backlight, but they aren't really used in the driver
previously.

Unify these two functions since they only differ in arguments passed to
ACPI method, and wire up loongson_laptop_backlight_update() to update
power state of the backlight as well. Tested on TongFang L860-T2 3A5000
laptop.

Signed-off-by: Yao Zi <ziyao@xxxxxxxxxxx>
---
drivers/platform/loongarch/loongson-laptop.c | 53 +++++++-------------
1 file changed, 19 insertions(+), 34 deletions(-)

diff --git a/drivers/platform/loongarch/loongson-laptop.c b/drivers/platform/loongarch/loongson-laptop.c
index 828bd62e3596..f01e53b1c84d 100644
--- a/drivers/platform/loongarch/loongson-laptop.c
+++ b/drivers/platform/loongarch/loongson-laptop.c
@@ -56,8 +56,6 @@ static struct input_dev *generic_inputdev;
static acpi_handle hotkey_handle;
static struct key_entry hotkey_keycode_map[GENERIC_HOTKEY_MAP_MAX];

-int loongson_laptop_turn_on_backlight(void);
-int loongson_laptop_turn_off_backlight(void);
static int loongson_laptop_backlight_update(struct backlight_device *bd);

/* 2. ACPI Helpers and device model */
@@ -354,6 +352,22 @@ static int ec_backlight_level(u8 level)
return level;
}

+static int ec_backlight_set_power(bool state)
+{
+ int status;
+ union acpi_object arg0 = { ACPI_TYPE_INTEGER };
+ struct acpi_object_list args = { 1, &arg0 };
+
+ arg0.integer.value = state;
+ status = acpi_evaluate_object(NULL, "\\BLSW", &args, NULL);
+ if (ACPI_FAILURE(status)) {
+ pr_info("Loongson lvds error: 0x%x\n", status);
+ return -EIO;
+ }
+
+ return 0;
+}
+
static int loongson_laptop_backlight_update(struct backlight_device *bd)
{
int lvl = ec_backlight_level(bd->props.brightness);
@@ -363,6 +377,8 @@ static int loongson_laptop_backlight_update(struct backlight_device *bd)
if (ec_set_brightness(lvl))
return -EIO;

+ ec_backlight_set_power(bd->props.power == BACKLIGHT_POWER_ON ? true : false);
+
return 0;
}

@@ -394,6 +410,7 @@ static int laptop_backlight_register(void)

props.brightness = ec_get_brightness();
props.max_brightness = status;
+ props.power = BACKLIGHT_POWER_ON;
props.type = BACKLIGHT_PLATFORM;

backlight_device_register("loongson_laptop",
@@ -402,38 +419,6 @@ static int laptop_backlight_register(void)
return 0;
}

-int loongson_laptop_turn_on_backlight(void)
-{
- int status;
- union acpi_object arg0 = { ACPI_TYPE_INTEGER };
- struct acpi_object_list args = { 1, &arg0 };
-
- arg0.integer.value = 1;
- status = acpi_evaluate_object(NULL, "\\BLSW", &args, NULL);
- if (ACPI_FAILURE(status)) {
- pr_info("Loongson lvds error: 0x%x\n", status);
- return -ENODEV;
- }
-
- return 0;
-}
-
-int loongson_laptop_turn_off_backlight(void)
-{
- int status;
- union acpi_object arg0 = { ACPI_TYPE_INTEGER };
- struct acpi_object_list args = { 1, &arg0 };
-
- arg0.integer.value = 0;
- status = acpi_evaluate_object(NULL, "\\BLSW", &args, NULL);
- if (ACPI_FAILURE(status)) {
- pr_info("Loongson lvds error: 0x%x\n", status);
- return -ENODEV;
- }
-
- return 0;
-}
-
static int __init event_init(struct generic_sub_driver *sub_driver)
{
int ret;
--
2.49.0



Return-Path: <linux-kernel+bounces-669069-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 61A3541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:39:45 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 814FD189D28A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:39:56 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C184D239570;
Sat, 31 May 2025 11:39:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="coKGkj2E"
Received: from layka.disroot.org (layka.disroot.org [178.21.23.139])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 35D7523A563;
Sat, 31 May 2025 11:39:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691560; cv=none; b=HycAevO7XXXDik+le+PdZ9cmj46GI3z38a/XbcXBs/LMSnfwjpOnIFjZC7IHACF3Rd0AXStZIQytzfcZXiBXGOzgPsHkOP6aMZdmLQSkR85KTOeYaX2nnsYOZ2ORFqWm6QyLS5qbXfPVwgqGvPXT477rSU7zRSSvhdi35zW2z6A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691560; c=relaxed/simple;
bh=erN5D2e7bDlphwtOAn+dkHFnD3yn45/VsLbboj6zrxI=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=kKoGeiuOT9/Ay44rg+Ef498uHhUaCXlydPqbXZp4FJNQjeNZP3A0ZBUz8DFVyKF/6v07EOiqEwv/hl6ezU0UE77xAAzAVOd/oq/BcJoIL1WD6ph2z2glYmRD+0ZYHHth54IMNjK/WTAB9JU0CIvVlqI89Eot25Rucz2KZGPaZmk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=coKGkj2E; arc=none smtp.client-ip=178.21.23.139
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org
Received: from mail01.disroot.lan (localhost [127.0.0.1])
by disroot.org (Postfix) with ESMTP id C383D25DDA;
Sat, 31 May 2025 13:39:10 +0200 (CEST)
X-Virus-Scanned: SPAM Filter at disroot.org
Received: from layka.disroot.org ([127.0.0.1])
by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP
id d_qvBswCBNzt; Sat, 31 May 2025 13:39:10 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail;
t=1748691550; bh=erN5D2e7bDlphwtOAn+dkHFnD3yn45/VsLbboj6zrxI=;
h=From:To:Cc:Subject:Date:In-Reply-To:References;
b=coKGkj2EGAeXZzXzQthnKgSaBjMzg9y7BE4++nvKXRygjTM46d95x+NEpCDSJybNP
eXFrIcFlVCD4d8rOBjWZDgpZRfGW4DK64ixxiszauNvfwklr2cQ120uEFh0QtcIt25
EjyKZ9IbZRZ1wJHZ4GXhU4ezg6OkHWn9pmlg0W4nIciDWm81fGhQeGJhkK8kimt4mU
HxaU/jUvl9aQkCCHZ/MhdsV8ojzcvDC+v8dN8KxzVzN9aG798humwNhAX1x+iyQ/B4
Q2oKPP9OiOWVJjpT1OZi1ObEhZokJ0VvbrHUtQgjT627Q6FOuMWSzVXd5W4VzChK4u
SByg+BrwAaiVg==
From: Yao Zi <ziyao@xxxxxxxxxxx>
To: Huacai Chen <chenhuacai@xxxxxxxxxx>,
Jianmin Lv <lvjianmin@xxxxxxxxxxx>,
WANG Xuerui <kernel@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx,
loongarch@xxxxxxxxxxxxxxx,
Mingcong Bai <jeffbai@xxxxxxx>,
Kexy Biscuit <kexybiscuit@xxxxxxx>,
Yao Zi <ziyao@xxxxxxxxxxx>,
stable@xxxxxxxxxxxxxxx
Subject: [PATCH 1/2] platform/loongarch: laptop: Get brightness setting from EC on probe
Date: Sat, 31 May 2025 11:38:50 +0000
Message-ID: <20250531113851.21426-2-ziyao@xxxxxxxxxxx>
In-Reply-To: <20250531113851.21426-1-ziyao@xxxxxxxxxxx>
References: <20250531113851.21426-1-ziyao@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Previously 1 is unconditionally taken as current brightness value. This
causes problems since it's required to restore brightness settings on
resumption, and a value that doesn't match EC's state before suspension
will cause surprising changes of screen brightness.

Let's get brightness from EC and take it as the current brightness on
probe of the laptop driver to avoid the surprising behavior. Tested on
TongFang L860-T2 3A5000 laptop.

Cc: stable@xxxxxxxxxxxxxxx
Fixes: 6246ed09111f ("LoongArch: Add ACPI-based generic laptop driver")
Signed-off-by: Yao Zi <ziyao@xxxxxxxxxxx>
---
drivers/platform/loongarch/loongson-laptop.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/platform/loongarch/loongson-laptop.c b/drivers/platform/loongarch/loongson-laptop.c
index 99203584949d..828bd62e3596 100644
--- a/drivers/platform/loongarch/loongson-laptop.c
+++ b/drivers/platform/loongarch/loongson-laptop.c
@@ -392,7 +392,7 @@ static int laptop_backlight_register(void)
if (!acpi_evalf(hotkey_handle, &status, "ECLL", "d"))
return -EIO;

- props.brightness = 1;
+ props.brightness = ec_get_brightness();
props.max_brightness = status;
props.type = BACKLIGHT_PLATFORM;

--
2.49.0



Return-Path: <linux-kernel+bounces-669070-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AA62341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:40:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id EBA46189C179
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:40:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1740F23A984;
Sat, 31 May 2025 11:40:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=t-8ch.de header.i=@t-8ch.de header.b="fSI6RidY"
Received: from todd.t-8ch.de (todd.t-8ch.de [159.69.126.157])
(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 2F479238C2A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:40:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=159.69.126.157
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691624; cv=none; b=E1pci2O4ryk8XV7PE6tD2LH23vfzAlnotZJjufq1oi6IaeXjiRCtuNzK8ko27K/LrBdsrzLaqCGC22CkCA620qBzJKaZcgTitbPH8wfBdqX5qc/RUmJ60EbTKnfEmqcD9su1Ukilyb3fxmpdsiuOt/uIJmGB8GmzJp26I7ISuLQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691624; c=relaxed/simple;
bh=QmBowPy2XocnfyrqUSljY0nK1UfcMM28v5fKuvkAQHo=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=jq60WC8jrcIiXAIq3XwZZ3isNSzOr5lBhwBbU2BXCVoZu6zmRI+hgHv98QVvesLsC+hhNdiFH9f3AK1CIw05FzoCZ4j7p0i2X1GCjRK4ShXn2fXV8zvpKKwZEtcOqi6V/+nbR7pOujSAi/e3SlBpXfwsdBcv/t3r+ahUpmqco8Y=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=t-8ch.de; spf=pass smtp.mailfrom=t-8ch.de; dkim=pass (1024-bit key) header.d=t-8ch.de header.i=@t-8ch.de header.b=fSI6RidY; arc=none smtp.client-ip=159.69.126.157
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=t-8ch.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=t-8ch.de
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=t-8ch.de; s=mail;
t=1748691613; bh=QmBowPy2XocnfyrqUSljY0nK1UfcMM28v5fKuvkAQHo=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=fSI6RidYQ1iOYn1EHMbWUgNl4KFV3576+zpMGLfy+nAbpGB+5WyV3WuWFHUCCihMh
GSeovPhYQmXKjKBjcuQcdzigFnUwxf70Rq6DTMAyO542ln6y/qI7IgFmrbGR+DWmQq
LrRkjENCJyxS6NMY2Lm5iU/rnk71604f+LcIW6q8=
Date: Sat, 31 May 2025 13:40:13 +0200
From: Thomas =?utf-8?Q?Wei=C3=9Fschuh?= <thomas@xxxxxxxx>
To: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [GIT PULL] Driver core changes for 6.16-rc1
Message-ID: <39eaf3d6-3c69-4e06-a61e-cccc7aad578d@xxxxxxxx>
References: <aDcyRMojWUbAllVX@xxxxxxxxx>
<35e4b33f-d9e4-41d6-8a47-644fda5b1b7f@xxxxxxxx>
<2025052822-cavity-mortality-07d2@gregkh>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <2025052822-cavity-mortality-07d2@gregkh>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

(trimmed the CC-list)

Hi Greg,

On 2025-05-28 18:29:20+0200, Greg KH wrote:
> On Wed, May 28, 2025 at 06:16:21PM +0200, Thomas WeiÃ?schuh wrote:
> > On 2025-05-28 17:56:52+0200, Greg KH wrote:

<snip>

> > > Here are the driver core / kernfs changes for 6.16-rc1.
> > >
> > > Not a huge number of changes this development cycle, here's the summary
> > > of what is included in here:
> > > - kernfs locking tweaks, pushing some global locks down into a per-fs
> > > image lock
> > > - rust driver core and pci device bindings added for new features.
> >
> > > - sysfs const work for bin_attributes. This churn should now be
> > > completed for those types of attributes
> >
> > This is missing the switch away and removal of the transitional
> > struct members, "read_new", "write_new" and "bin_attrs_new".
> > These are the actually churny changes.

<snip>

> > Do you want me to resubmit it to you? Now or shortly before the end of
> > the merge window?
>
> Ah, yes, those are still in my "to apply after -rc1 is out" queue, sorry
> about that. And yes, I'll be glad to take updated versions as things
> have changed.

In case you don't see patches submitted during the merge window,
here is the updated series:

https://lore.kernel.org/lkml/20250530-sysfs-const-bin_attr-final-v3-0-724bfcf05b99@xxxxxxxxxxxxxx/

Based on linux-next to make sure that all changes that could go into the
merge window are accounted for.


Thomas


Return-Path: <linux-kernel+bounces-669071-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A893B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:41:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 168CD3A6B51
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:41:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B594D239E92;
Sat, 31 May 2025 11:41:38 +0000 (UTC)
Received: from out03.mta.xmission.com (out03.mta.xmission.com [166.70.13.233])
(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 90FF421CA0F
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:41:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=166.70.13.233
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691698; cv=none; b=Jm7Jm6X6rF7L7QaU5W5tluqiVzjCwBZNFpKeYY64tcysa/7albPZ3ge+bbgyedZb4PxAOJVm5r+aXexLck5IV2D70wAuJUrcGIcqHiellnjcJBFm7M//N4jC+p7byQrSA8igky3WAcZ7zXfUJerF3RcYFRyF7f9gP+dts29BQeA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691698; c=relaxed/simple;
bh=PJYUmQnYqamUhWh7o7uxI5LCMCjqaXJ/8M6Z+95fw5M=;
h=From:To:Cc:In-Reply-To:References:Date:Message-ID:MIME-Version:
Content-Type:Subject; b=QVUWCHVOgdUFprQKnUhE8Uk/GBIn1+55qo+jYUwOUNEiRZLPsHpXAQwi6ZEDy2Gf1fjmnGctYbQv5VM3fYjuIGJqPOptJB6ZCEDWz+DIKtoyLB06EWLwtno9N8vsByNFyE/B5INTx0qcFte0AL/eyyx6mkkR/8GN9S9O7x02GY0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=xmission.com; spf=pass smtp.mailfrom=xmission.com; arc=none smtp.client-ip=166.70.13.233
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=xmission.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=xmission.com
Received: from in02.mta.xmission.com ([166.70.13.52]:36380)
by out03.mta.xmission.com with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(Exim 4.93)
(envelope-from <ebiederm@xxxxxxxxxxxx>)
id 1uLK3s-0072Zk-6z; Sat, 31 May 2025 05:07:36 -0600
Received: from ip72-198-198-28.om.om.cox.net ([72.198.198.28]:36250 helo=email.froward.int.ebiederm.org.xmission.com)
by in02.mta.xmission.com with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(Exim 4.93)
(envelope-from <ebiederm@xxxxxxxxxxxx>)
id 1uLK3r-002sts-8B; Sat, 31 May 2025 05:07:35 -0600
From: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx>
To: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Cc: Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>, Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx>
In-Reply-To: <aDqq4rg9rTKRur8Y@xxxxxxxxxxxxxxxxxxx> (Herbert Xu's message of
"Sat, 31 May 2025 15:08:18 +0800")
References: <aDlty06JvlGwTfKk@xxxxxxxxxxxxxxxxxxx>
<87ldqegrf1.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
<aDqq4rg9rTKRur8Y@xxxxxxxxxxxxxxxxxxx>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Date: Sat, 31 May 2025 06:07:20 -0500
Message-ID: <877c1xghsn.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain
X-XM-SPF: eid=1uLK3r-002sts-8B;;;mid=<877c1xghsn.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>;;;hst=in02.mta.xmission.com;;;ip=72.198.198.28;;;frm=ebiederm@xxxxxxxxxxxx;;;spf=pass
X-XM-AID: U2FsdGVkX19vJFQhYd6rvInd2nAfpwQNCWGGf0wsLGw=
X-Spam-Level:
X-Spam-Virus: No
X-Spam-DCC: XMission; sa01 1397; Body=1 Fuz1=1 Fuz2=1
X-Spam-Combo: ;Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
X-Spam-Relay-Country:
X-Spam-Timing: total 395 ms - load_scoreonly_sql: 0.03 (0.0%),
signal_user_changed: 3.6 (0.9%), b_tie_ro: 2.4 (0.6%), parse: 0.95
(0.2%), extract_message_metadata: 13 (3.2%), get_uri_detail_list: 1.09
(0.3%), tests_pri_-2000: 14 (3.5%), tests_pri_-1000: 3.1 (0.8%),
tests_pri_-950: 1.65 (0.4%), tests_pri_-900: 1.06 (0.3%),
tests_pri_-90: 62 (15.7%), check_bayes: 61 (15.4%), b_tokenize: 4.2
(1.1%), b_tok_get_all: 6 (1.4%), b_comp_prob: 1.30 (0.3%),
b_tok_touch_all: 47 (11.9%), b_finish: 0.59 (0.2%), tests_pri_0: 285
(72.1%), check_dkim_signature: 0.36 (0.1%), check_dkim_adsp: 3.2
(0.8%), poll_dns_idle: 1.80 (0.5%), tests_pri_10: 1.70 (0.4%),
tests_pri_500: 6 (1.5%), rewrite_mail: 0.00 (0.0%)
Subject: Re: [PATCH] userns: Add forward declaration of struct seq_file in
user_namespace.h
X-SA-Exim-Connect-IP: 166.70.13.52
X-SA-Exim-Rcpt-To: akpm@xxxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, herbert@xxxxxxxxxxxxxxxxxxx
X-SA-Exim-Mail-From: ebiederm@xxxxxxxxxxxx
X-SA-Exim-Scanned: No (on out03.mta.xmission.com); SAEximRunCond expanded to false
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> writes:

> On Fri, May 30, 2025 at 08:27:14AM -0500, Eric W. Biederman wrote:
>>
>> That description seems to be lacking something. The code as has been
>> fine since 2014 and there is no conditional compilation involved.
>
> I'm happy to drop the fixes header. There is no need to backport
> this.

The fixes tag isn't wrong.

>> Did some other change cause a declaration of seq_file not to be present?
>> Did user_namespace.h get included somewhere new and that new location
>> doesn't wind up declaring seq_file?
>
> The seq_file forward declaration is currently being provided by
> linux/sched.h. I tried removing it and found this issue.

Thanks.

That is the interesting information that I would appreciate to see
in the change log.

If someone has to play code archaeologist and has to look at the
history, this is exactly the information that is needed to understand
why the change was made.

Eric



Return-Path: <linux-kernel+bounces-669072-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 89C2941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:44:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A3BE64A2860
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:44:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2E5AE23A99D;
Sat, 31 May 2025 11:44:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b="mioBR5A9"
Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32])
(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 E3B93156F28;
Sat, 31 May 2025 11:44:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.165.32
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691843; cv=none; b=qitgJJH/cK7i2ZADnOA0LrOgKLZMrnlNKvjyv+78tcUN62dPRO/iAy1owaLd0r7MF1BPkfWj38vLoXXE9529NyDQmWIvBKK7u2cYhbRX1/O30Kc40lXeV5xOyXtOohqQFVCU/J/EqLTx0b1EctpioxhGqVAiiSm70Ek28pl01cc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691843; c=relaxed/simple;
bh=DkqS88KswCE6eElc0WJt9rrEpqfehV3SZ4pLuufurPI=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=JpAddcVGHOG+yzXJ/RF56hTTAAlvO4z7dUjZwEyws2nW6ji0ELVaU0JYyvUeRkoagwX6iDZcKZoSQN15BMDd0FFwUAa/5G9vMMxmfOFrQItOHe0hh+hfxNwjKJejPNyjDm5WXGaAGYR4o1MzyKi3cHO/8mid2/yf0j1ZvgHXLcM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com; spf=pass smtp.mailfrom=oracle.com; dkim=pass (2048-bit key) header.d=oracle.com header.i=@oracle.com header.b=mioBR5A9; arc=none smtp.client-ip=205.220.165.32
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oracle.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oracle.com
Received: from pps.filterd (m0246617.ppops.net [127.0.0.1])
by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54VBNo6n012581;
Sat, 31 May 2025 11:43:50 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc
:content-transfer-encoding:date:from:message-id:mime-version
:subject:to; s=corp-2025-04-25; bh=t9bZw8QZfqhGsbVSOQB67yk33BS8b
HKTYP3OGG3cT+w=; b=mioBR5A94gnt/OVhg5v0U2kCpmrwX2dX3bMacS6AEEsDW
Z78tIHxgz+2eUBl0bppOW3gCsamjCWhgcwVJ7/nonhVTUSlMwAdp3L8H/kcCrGju
NH/fDtxLyuDQXYJATKac1XqQlFOj0xfFOSXaSb/YuJqmWgCShQSVeqfsIS3mg8E2
QxYe0oDEbgwv29gg2m11ls2Sww+IeENYIpVzR+7K3fJVlmTFmpGt6KnJaEniclo0
7eDpigepSCtSlBv3brCGBMWX5ZjFce2DtxakiUUu/JfW53YnaS05RO8XOJ/l46Qk
Sdy7VGfroq4r9vIkmM0I09zY6v7Cq+NzjW0okGxQg==
Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20])
by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46ytawg7p4-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
Sat, 31 May 2025 11:43:49 +0000 (GMT)
Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 54V6eVKe030620;
Sat, 31 May 2025 11:43:48 GMT
Received: from pps.reinject (localhost [127.0.0.1])
by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46yr76gace-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
Sat, 31 May 2025 11:43:48 +0000
Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 54VBhlI3024372;
Sat, 31 May 2025 11:43:48 GMT
Received: from ca-dev112.us.oracle.com (ca-dev112.us.oracle.com [10.129.136.47])
by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTP id 46yr76ga9m-1;
Sat, 31 May 2025 11:43:47 +0000
From: Alok Tiwari <alok.a.tiwari@xxxxxxxxxx>
To: dave@xxxxxxxxxxxx, jonathan.cameron@xxxxxxxxxx, dave.jiang@xxxxxxxxx,
alison.schofield@xxxxxxxxx, vishal.l.verma@xxxxxxxxx,
ira.weiny@xxxxxxxxx, dan.j.williams@xxxxxxxxx, shiju.jose@xxxxxxxxxx,
viro@xxxxxxxxxxxxxxxxxx, Smita.KoralahalliChannabasappa@xxxxxxx,
fabio.m.de.francesco@xxxxxxxxxxxxxxx, linux-cxl@xxxxxxxxxxxxxxx
Cc: alok.a.tiwari@xxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
darren.kenny@xxxxxxxxxx
Subject: [PATCH] cxl/trace: Fix typo in macro and spec reference
Date: Sat, 31 May 2025 04:41:58 -0700
Message-ID: <20250531114317.3341757-1-alok.a.tiwari@xxxxxxxxxx>
X-Mailer: git-send-email 2.47.1
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_05,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0
suspectscore=0 phishscore=0 adultscore=0 spamscore=0 mlxlogscore=999
mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1
engine=8.12.0-2505160000 definitions=main-2505310105
X-Proofpoint-GUID: vKQCz9NXjdTzJ8VHZUALbYJ0OE25nivm
X-Proofpoint-ORIG-GUID: vKQCz9NXjdTzJ8VHZUALbYJ0OE25nivm
X-Authority-Analysis: v=2.4 cv=ctObk04i c=1 sm=1 tr=0 ts=683aeb76 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=dt9VzEwgFbYA:10 a=yPCof4ZbAAAA:8 a=2xcyL-vh7mIpikw6uGIA:9 cc=ntf awl=host:14714
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDEwNSBTYWx0ZWRfX+e6tEKsjte02 YLSBrXA5sAah8HWMCpAVwOfi9UlppxmrE2pHdd8Z1jSfzEYcVt1XjgNbNsFgp/i1/POSsf2jPKG KKV6IKJ6ok0Kozxmo8l8gTQAu6C6UnBv3O8bjm2KJw0waacrTZXiigiWmfUTGotYvylL9CJh84q
LMKL6iNtYgJUfptPoYmbVXbBqfC7XC+JTKk+PlxmyDEXoHpR8QtdeGpjSRt4nBMM2RzrvwSSQMQ 9yocQEnMXaT4W5DEL162LmhBImnKQD16Sv8nWohEhxNWk8VkDVFl/ifboX1BDTpXmK2YJLMxILc IQAtjCYRDN9xg/oUlw8XDFdH2khkqxbUZsh/Tu+QBdCtZ0yDR07TdabZnw/tmCed8l2zeCvZpBA
scxrbetKC1adgVjYCQfrAeoqMAhuGOvmXH5teLBfnWQmMPwn/+pWSv/xJG+CITq8uqOF7AlR
X-Spam-Status: No, score=-3.9 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

- Corrects a typo in the macro name: CXL_RAS_CE_RETRY_THRESH
was previously misspelled as CLX_RAS_CE_RETRY_THRESH.

- fixes a typo in a spec reference from "res" to "rev"
in the CXL spec reference: "CXL rev 3.1 section 8.2.9.2.1.3"

Signed-off-by: Alok Tiwari <alok.a.tiwari@xxxxxxxxxx>
---
drivers/cxl/core/trace.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/cxl/core/trace.h b/drivers/cxl/core/trace.h
index 25ebfbc1616c..de0712a31d96 100644
--- a/drivers/cxl/core/trace.h
+++ b/drivers/cxl/core/trace.h
@@ -109,7 +109,7 @@ TRACE_EVENT(cxl_aer_uncorrectable_error,
#define CXL_RAS_CE_CACHE_DATA_ECC BIT(0)
#define CXL_RAS_CE_MEM_DATA_ECC BIT(1)
#define CXL_RAS_CE_CRC_THRESH BIT(2)
-#define CLX_RAS_CE_RETRY_THRESH BIT(3)
+#define CXL_RAS_CE_RETRY_THRESH BIT(3)
#define CXL_RAS_CE_CACHE_POISON BIT(4)
#define CXL_RAS_CE_MEM_POISON BIT(5)
#define CXL_RAS_CE_PHYS_LAYER_ERR BIT(6)
@@ -118,7 +118,7 @@ TRACE_EVENT(cxl_aer_uncorrectable_error,
{ CXL_RAS_CE_CACHE_DATA_ECC, "Cache Data ECC Error" }, \
{ CXL_RAS_CE_MEM_DATA_ECC, "Memory Data ECC Error" }, \
{ CXL_RAS_CE_CRC_THRESH, "CRC Threshold Hit" }, \
- { CLX_RAS_CE_RETRY_THRESH, "Retry Threshold" }, \
+ { CXL_RAS_CE_RETRY_THRESH, "Retry Threshold" }, \
{ CXL_RAS_CE_CACHE_POISON, "Received Cache Poison From Peer" }, \
{ CXL_RAS_CE_MEM_POISON, "Received Memory Poison From Peer" }, \
{ CXL_RAS_CE_PHYS_LAYER_ERR, "Received Error From Physical Layer" } \
@@ -684,7 +684,7 @@ TRACE_EVENT(cxl_dram,
/*
* Memory Module Event Record - MMER
*
- * CXL res 3.1 section 8.2.9.2.1.3; Table 8-47
+ * CXL rev 3.1 section 8.2.9.2.1.3; Table 8-47
*/
#define CXL_MMER_HEALTH_STATUS_CHANGE 0x00
#define CXL_MMER_MEDIA_STATUS_CHANGE 0x01
--
2.47.1



Return-Path: <linux-kernel+bounces-669073-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BE2C641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:45:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2FD033A799F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:45:06 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3796123BCF0;
Sat, 31 May 2025 11:45:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="MXY4APr8"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 71A82237163;
Sat, 31 May 2025 11:45:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748691917; cv=none; b=Ey9QKwY6MPopDg6rvUmfPilNGXqKimdMMzukPNoH58gc1vMz42HL22Y9TshBODEIUX4OfG5T2sQO88psePDD5QkGbFfJd1uS+hTx4fGvG+7oVQdBuACGVSUvWxtgpHrd5truAwYvagyxCTe6+Oix/AHI9GHeKnHqjPl4wuW83T4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748691917; c=relaxed/simple;
bh=DjXMkjtM4ppbS/skmByM816vF5rWXU+Al3ViHaB6/Tk=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=gdcOhIxDWzlZ1+PmPE5LO+k61059M8EfDRBZmKfzWH5usi5D+e9fod++WHWoL81Z7Lo8EmIzyn0MkJ+LVDIpzX73pCAwbpVKfk0rifQMs0FNH9cnFBmQuM+HhGJEG/Y0ANIVpvfINEeWn8mIZsXzrK6bPCM/xmh6Aii0gkrJ+b8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=MXY4APr8; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6435EC4CEE3;
Sat, 31 May 2025 11:45:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748691914;
bh=DjXMkjtM4ppbS/skmByM816vF5rWXU+Al3ViHaB6/Tk=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=MXY4APr8Hr1Hfl4lGe6RS+LXTv7fXAGtkFCyhSpcb4cWIm106bGW8KbmZqtgm7IKF
lary8+pGSqI8B7nWlvvmv4Am3kyJ6sEHxT+HWn8JPAwZHIit4BdSNoS/MaCB983oXh
t1T18gd+p8anH66a8JsRyJOTVsl7T8+hJMAht+Fm+pnaPObpNIdkZKN3u/Fpp3yoE9
dQGPgu0GcwEfI+qOZP9YSaV/036KANtzdI6b9shFB578MzgCsyRO6/Usuvdln5iElz
rT4EUnatU8KEPcXyBmcl3bCjSW9k6lwoDvm1YUJnDfzwP6BAOPshRdQ/vbOONGv9Pz
D3LuQW01qsxzw==
Date: Sat, 31 May 2025 08:45:11 -0300
From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
To: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Ian Rogers <irogers@xxxxxxxxxx>, Kan Liang <kan.liang@xxxxxxxxxxxxxxx>,
Jiri Olsa <jolsa@xxxxxxxxxx>,
Adrian Hunter <adrian.hunter@xxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
linux-perf-users@xxxxxxxxxxxxxxx, Song Liu <song@xxxxxxxxxx>,
bpf@xxxxxxxxxxxxxxx, Alexei Starovoitov <ast@xxxxxxxxxx>
Subject: Re: [PATCH] perf lock contention: Reject more than 10ms delays for
safety
Message-ID: <aDrrxwPcSslAFnpb@x1>
References: <20250515181042.555189-1-namhyung@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250515181042.555189-1-namhyung@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Thu, May 15, 2025 at 11:10:42AM -0700, Namhyung Kim wrote:
> Delaying kernel operations can be dangerous and the kernel may kill
> (non-sleepable) BPF programs running for long in the future.
>
> Limit the max delay to 10ms and update the document about it.
>
> $ sudo ./perf lock con -abl -J 100000us@cgroup_mutex true
> lock delay is too long: 100000us (> 10ms)
>
> Usage: perf lock contention [<options>]
>
> -J, --inject-delay <TIME@FUNC>
> Inject delays to specific locks
>
> Suggested-by: Alexei Starovoitov <ast@xxxxxxxxxx>
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>



Thanks, applied to perf-tools-next,

- Arnaldo

> ---
> tools/perf/Documentation/perf-lock.txt | 8 ++++++--
> tools/perf/builtin-lock.c | 5 +++++
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/Documentation/perf-lock.txt b/tools/perf/Documentation/perf-lock.txt
> index 2d9aecf630422aa6..c17b3e318169f9dc 100644
> --- a/tools/perf/Documentation/perf-lock.txt
> +++ b/tools/perf/Documentation/perf-lock.txt
> @@ -224,8 +224,12 @@ CONTENTION OPTIONS
> only with -b/--use-bpf.
>
> The 'time' is specified in nsec but it can have a unit suffix. Available
> - units are "ms" and "us". Note that it will busy-wait after it gets the
> - lock. Please use it at your own risk.
> + units are "ms", "us" and "ns". Currently it accepts up to 10ms of delays
> + for safety reasons.
> +
> + Note that it will busy-wait after it gets the lock. Delaying locks can
> + have significant consequences including potential kernel crashes. Please
> + use it at your own risk.
>
>
> SEE ALSO
> diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
> index 41f6f3d2b779b986..3b3ade7a39cad01f 100644
> --- a/tools/perf/builtin-lock.c
> +++ b/tools/perf/builtin-lock.c
> @@ -2537,6 +2537,11 @@ static bool add_lock_delay(char *spec)
> return false;
> }
>
> + if (duration > 10 * 1000 * 1000) {
> + pr_err("lock delay is too long: %s (> 10ms)\n", spec);
> + return false;
> + }
> +
> tmp = realloc(delays, (nr_delays + 1) * sizeof(*delays));
> if (tmp == NULL) {
> pr_err("Memory allocation failure\n");
> --
> 2.49.0.1101.gccaa498523-goog


Return-Path: <linux-kernel+bounces-669074-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8C1D241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:49:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3C6109E301D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:49:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CE27F23BCF0;
Sat, 31 May 2025 11:49:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TEigLghs"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 16D7EEAD0;
Sat, 31 May 2025 11:49:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748692164; cv=none; b=Ii9n6bzo6d8qnronXd9lR8SHD7/Az7o6X0LKsZyVFJYtXb/fwOozhEl5EeyLLuI8JFg7l9tm518L9adqNDDIb1lMyp2/s8NHzNm3EznIJgi9eGbTdJ7vbTgDeWO/+5oY5uyyYg8Cg1pLMEnLz6+uEbFnGFxp4LUlrTySmJhOWfo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748692164; c=relaxed/simple;
bh=Af8HaQZyJpqo1jRB+/Ioz25AGaCCmNcBiYyroVixhYE=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=q+HkHKSF+8/uv2ms2cs5kv1DSgnnEjN0p0DBd8LWEjx/SpIWv0jSb53Nl0QgA498eIW2Zp8HNfne6pNPjhrxJXvUbv+he5mi2Q9o5a7XN68AqGsJNpcMhGdoTQRt407WEWpbcKA9F5678cQ8i1VlNQUpCYSPshSvqaI5wxolC0Y=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TEigLghs; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id F0B02C4CEE3;
Sat, 31 May 2025 11:49:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748692163;
bh=Af8HaQZyJpqo1jRB+/Ioz25AGaCCmNcBiYyroVixhYE=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=TEigLghsEjebwnfmaWzIZ5IRtT/hfObwzEXTQ8Xrf0NraDdI9BxKvVpEfIRfyUKdI
/0xMCqtgKeTXOhGTsfqWy6U77gaq7n/52DNBUj64UXLWv3FoA6T+wyAqc8NmFlDeAp
rSxIV3jPteD9etdKv1FXVOxb4+SG3mgbqLWQq89MEJp80szksXbTpaYPaillKbAHJf
CriapOSmozuODEWbfG6yj+LIbcnSiuha19aZeePhoLsBFUeT2ees550idWHrMxYyQE
0uPyDG5SRBdH2IS9EuxY5vMzU96opEP49UZs5FcBITe94bMqIWj9e3W8lXaxfu4wxO
uNfnL0PIRWbHg==
Date: Sat, 31 May 2025 08:49:20 -0300
From: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
To: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Ian Rogers <irogers@xxxxxxxxxx>, Kan Liang <kan.liang@xxxxxxxxxxxxxxx>,
Jiri Olsa <jolsa@xxxxxxxxxx>,
Adrian Hunter <adrian.hunter@xxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
linux-perf-users@xxxxxxxxxxxxxxx, Song Liu <song@xxxxxxxxxx>,
bpf@xxxxxxxxxxxxxxx, Alexei Starovoitov <ast@xxxxxxxxxx>
Subject: Re: [PATCH] perf lock contention: Reject more than 10ms delays for
safety
Message-ID: <aDrswP62_-fy3vUC@x1>
References: <20250515181042.555189-1-namhyung@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250515181042.555189-1-namhyung@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Thu, May 15, 2025 at 11:10:42AM -0700, Namhyung Kim wrote:
> Delaying kernel operations can be dangerous and the kernel may kill
> (non-sleepable) BPF programs running for long in the future.
>
> Limit the max delay to 10ms and update the document about it.
>
> $ sudo ./perf lock con -abl -J 100000us@cgroup_mutex true
> lock delay is too long: 100000us (> 10ms)
>
> Usage: perf lock contention [<options>]
>
> -J, --inject-delay <TIME@FUNC>
> Inject delays to specific locks
>
> Suggested-by: Alexei Starovoitov <ast@xxxxxxxxxx>
> Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
> ---
> tools/perf/Documentation/perf-lock.txt | 8 ++++++--
> tools/perf/builtin-lock.c | 5 +++++
> 2 files changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/tools/perf/Documentation/perf-lock.txt b/tools/perf/Documentation/perf-lock.txt
> index 2d9aecf630422aa6..c17b3e318169f9dc 100644
> --- a/tools/perf/Documentation/perf-lock.txt
> +++ b/tools/perf/Documentation/perf-lock.txt
> @@ -224,8 +224,12 @@ CONTENTION OPTIONS
> only with -b/--use-bpf.
>
> The 'time' is specified in nsec but it can have a unit suffix. Available
> - units are "ms" and "us". Note that it will busy-wait after it gets the
> - lock. Please use it at your own risk.
> + units are "ms", "us" and "ns". Currently it accepts up to 10ms of delays
> + for safety reasons.
> +
> + Note that it will busy-wait after it gets the lock. Delaying locks can
> + have significant consequences including potential kernel crashes. Please
> + use it at your own risk.
>
>
> SEE ALSO
> diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c
> index 41f6f3d2b779b986..3b3ade7a39cad01f 100644
> --- a/tools/perf/builtin-lock.c
> +++ b/tools/perf/builtin-lock.c
> @@ -2537,6 +2537,11 @@ static bool add_lock_delay(char *spec)
> return false;
> }
>
> + if (duration > 10 * 1000 * 1000) {
> + pr_err("lock delay is too long: %s (> 10ms)\n", spec);
> + return false;
> + }
> +

Please consider to replace those 1000 * 1000 her and in other places
with NSEC_PER_MSEC in a followup patch for the next merge window.

- Arnaldo

> tmp = realloc(delays, (nr_delays + 1) * sizeof(*delays));
> if (tmp == NULL) {
> pr_err("Memory allocation failure\n");
> --
> 2.49.0.1101.gccaa498523-goog


Return-Path: <linux-kernel+bounces-669075-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2598041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 07:53:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id EF7823BE523
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:53:02 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B2FA123BCEE;
Sat, 31 May 2025 11:53:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@xxxxxxxxxxxx header.b="Y7krZN4J"
Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94])
(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 2CAD41531E3;
Sat, 31 May 2025 11:53:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748692396; cv=pass; b=eji5qDUbXJ9X67fki5RFlSJQyLZCkhcSFvJ37PEt7wza0HhhffuZGjqrGysG6gIM68GrXVbXh3sEy+kjCjB573ITLLesyoHXJtoRO1fR8I0RY7/eO50u6DSSINWCgiObOPg1iuFPzpyoOVnaIPcThLxRTjLSORBfBwqGlid+/RY=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748692396; c=relaxed/simple;
bh=sE+vy1zp0mDHtV2/qptAqzDjLE/OT24fQZody1FK3Aw=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=rcohhhO1CEgxKQPnZVSsnCbKqAJay2v9LAWyBykW2zP4UfF556xfQ8We0sVTahCv4gaeDRkbgK/+r0e7vlWqiWhb9+SE+oX2iSu/hm8q9sceqer5PihzxDEDl/2DBuljgNNBGLsLHEV4FTRx2SE9TJ7EIUfcdWtFJOXllx+Vk24=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@xxxxxxxxxxxx header.b=Y7krZN4J; arc=pass smtp.client-ip=136.143.188.94
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com
ARC-Seal: i=1; a=rsa-sha256; t=1748692380; cv=none;
d=zohomail.com; s=zohoarc;
b=mPmFtIIj3slRDXbZqMmWnU4CoUCqmmDSaP/fIvJhcuUG2waenOXG+YBqF0XQEMgOECJ/zXdL++2TSQsdrlzV3j1HgqAV2QCmf1tJ9mc1GSTBV24/eeqdBTQPk/PPwFWIk4zS+DG0et9gqWWEJmYv5oVoSDUcKwEMRjh0L+ZWS/w=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc;
t=1748692380; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To;
bh=r0zae7oBE4TZBjI7YyNtdXcZ/puNeLxBgQH4NeeIAg8=;
b=NHxD/Bu5t3lml53YH72wlSEolzSA5FGY9m91+MG/UfjV5UEmf7Uy2camEhBm6S18wAZW6Y3mmMjuEmAwEDRltVhPyTQ74bCQtTlqiaiM2J2lxPcojjYS2VZV9qpD4AdXI1NbN3c/xezFb42lQ2FbByDgY0OsSETyc43DoKOaZHk=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass header.i=zohomail.com;
spf=pass smtp.mailfrom=ming.li@xxxxxxxxxxxx;
dmarc=pass header.from=<ming.li@xxxxxxxxxxxx>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1748692380;
s=zm2022; d=zohomail.com; i=ming.li@xxxxxxxxxxxx;
h=Message-ID:Date:Date:MIME-Version:Subject:Subject:To:To:Cc:Cc:References:From:From:In-Reply-To:Content-Type:Content-Transfer-Encoding:Feedback-ID:Message-Id:Reply-To;
bh=r0zae7oBE4TZBjI7YyNtdXcZ/puNeLxBgQH4NeeIAg8=;
b=Y7krZN4JqOiEa3AcmQBq4aCtUougTYblwweQ0tJ0Ek38QZ4JrfuxCfNOx/6tsY3K
wG0vtOsIv2/5hPfYHPNFeXYa6z6Z5bh3/d7CwhVeXa2xdy+tAPBvWg7CQqeIxQi27pl
BxQJhXVhPtwmDWuogTsZjh+3ighIaiw6m3xOmWa0=
Received: by mx.zohomail.com with SMTPS id 1748692378368831.198778188815;
Sat, 31 May 2025 04:52:58 -0700 (PDT)
Message-ID: <71f1cf7c-eea9-44d8-8d56-28a507eef4ad@xxxxxxxxxxxx>
Date: Sat, 31 May 2025 19:52:54 +0800
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [RFC PATCH 1/1] cxl/edac: Fix the min_scrub_cycle of a region
miscalculation
To: Alison Schofield <alison.schofield@xxxxxxxxx>
Cc: dave@xxxxxxxxxxxx, jonathan.cameron@xxxxxxxxxx, dave.jiang@xxxxxxxxx,
vishal.l.verma@xxxxxxxxx, ira.weiny@xxxxxxxxx, dan.j.williams@xxxxxxxxx,
shiju.jose@xxxxxxxxxx, linux-cxl@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
References: <20250530122852.10139-1-ming.li@xxxxxxxxxxxx>
<aDn4o8Fw91vQ9D-D@xxxxxxxxxxxxxxxxxx>
From: Li Ming <ming.li@xxxxxxxxxxxx>
In-Reply-To: <aDn4o8Fw91vQ9D-D@xxxxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Feedback-ID: rr0801122751877404a3cf759f0557e87400001ad870fb3c8e3864193bf1168c444489a368d0f38bcafd791e:zu08011227ddc8d17ee9f4510022aa310d0000778f76ae4248828c73c47962e8088bb5576fa53c31f42ad0b6:rf0801122d05e50d11034d767c07780ed300007b10b88825f6e836f55fc0f6645f84769db0583111c49d41bb36acdc3470ba:ZohoMail
X-ZohoMailClient: External
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/31/2025 2:27 AM, Alison Schofield wrote:
> On Fri, May 30, 2025 at 08:28:52PM +0800, Li Ming wrote:
>> When trying to update the scrub_cycle value of a cxl region, which means
>> updating the scrub_cycle value of each memdev under a cxl region. cxl
>> driver needs to guarantee the new scrub_cycle value is greater than the
>> min_scrub_cycle value of a memdev, otherwise the updating operation will
>> fail(Per Table 8-223 in CXL r3.2 section 8.2.10.9.11.1).
>>
>> Current implementation logic of getting the min_scrub_cycle value of a
>> cxl region is that getting the min_scrub_cycle value of each memdevs
>> under the cxl region, then using the minimum min_scrub_cycle value as
>> the region's min_scrub_cycle. Checking if the new scrub_cycle value is
>> greater than this value. If yes, updating the new scrub_cycle value to
>> each memdevs. The issue is that the new scrub_cycle value is possibly
>> greater than the minimum min_scrub_cycle value of all memdevs but less
>> than the maximum min_scrub_cycle value of all memdevs if memdevs have
>> a different min_scrub_cycle value. The updating operation will always
>> fail on these memdevs which have a greater min_scrub_cycle than the new
>> scrub_cycle.
>>
>> The correct implementation logic is to get the maximum value of these
>> memdevs' min_scrub_cycle, check if the new scrub_cycle value is greater
>> than the value. If yes, the new scrub_cycle value is fit for the region.
>>
>> The change also impacts the result of
>> cxl_patrol_scrub_get_min_scrub_cycle(), the interface returned the
>> minimum min_scrub_cycle value among all memdevs under the region before
>> the change. The interface will return the maximum min_scrub_cycle value
>> among all memdevs under the region with the change.
>>
>> Signed-off-by: Li Ming <ming.li@xxxxxxxxxxxx>
>> ---
>> I made this change based on my understanding on the SPEC and current CXL
>> EDAC code, but I am not sure if it is a bug or it is designed this way.
> The attribute is defined to show (per Documentation/ABI/testing/sysfs-edac-scrub)
> "Supported minimum scrub cycle duration in seconds by the memory scrubber."
>
> Your fix, making the min the max of the mins, looks needed.
>
> I took a look at the max attribute. If the min is the max on the mins, then
> the max should be the max of the maxes. But, not true. We do this:
>
> instead: *max = U8_MAX * 3600; /* Max set by register size */
>
> The comment isn't helping me, esp since the sysfs description doesn't
> explain that we are using a constant max.
>
CXL spec implies the max value is FFh. You can take a look at the Table 8-222 and Table 8-223 in CXL r3.2 section 8.2.10.9.11.1.


Ming

>> base-commit: 9f153b7fb5ae45c7d426851f896487927f40e501 cxl/next
>> ---
>> drivers/cxl/core/edac.c | 8 ++++++--
>> 1 file changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/cxl/core/edac.c b/drivers/cxl/core/edac.c
>> index 2cbc664e5d62..ad243cfe00e7 100644
>> --- a/drivers/cxl/core/edac.c
>> +++ b/drivers/cxl/core/edac.c
>> @@ -103,10 +103,10 @@ static int cxl_scrub_get_attrbs(struct cxl_patrol_scrub_context *cxl_ps_ctx,
>> u8 *cap, u16 *cycle, u8 *flags, u8 *min_cycle)
>> {
>> struct cxl_mailbox *cxl_mbox;
>> - u8 min_scrub_cycle = U8_MAX;
>> struct cxl_region_params *p;
>> struct cxl_memdev *cxlmd;
>> struct cxl_region *cxlr;
>> + u8 min_scrub_cycle = 0;
>> int i, ret;
>>
>> if (!cxl_ps_ctx->cxlr) {
>> @@ -133,8 +133,12 @@ static int cxl_scrub_get_attrbs(struct cxl_patrol_scrub_context *cxl_ps_ctx,
>> if (ret)
>> return ret;
>>
>> + /*
>> + * The min_scrub_cycle of a region is the maximum value among
>> + * the min_scrub_cycle of all the memdevs under the region.
>> + */
>> if (min_cycle)
>> - min_scrub_cycle = min(*min_cycle, min_scrub_cycle);
>> + min_scrub_cycle = max(*min_cycle, min_scrub_cycle);
>> }
>>
>> if (min_cycle)
>> --
>> 2.34.1
>>



Return-Path: <linux-kernel+bounces-669076-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 84B5941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:03:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 0C23D7B0364
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:01:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8E9C923A990;
Sat, 31 May 2025 12:02:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="JgQJZLRo"
Received: from mail.zeus03.de (zeus03.de [194.117.254.33])
(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 9E0A222AE5D
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:02:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748692975; cv=none; b=p8zjlIwpUbq7dlTohKRXUGHnbRJHF2ExT7NS+Rrhr9DxD0i2owqfvi5UePri0dbEF+fp2noPrg9YL/ud/bkiUTixZ5OeInuyqb7efMUYcH6K9Izt0pYC/fhuAHngamVsKkJNja7Sh0suZr+w6vCsVnuqkHsnJRzHISAI7U5EgXw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748692975; c=relaxed/simple;
bh=g0Cl7sMjzvuqDdqrsXXlG3kYe+mPZeAnKJlI8HBSMhM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=e5078wU2D71IhqOeorGwFBYRYyIfdP9aoEVIdcOIpB4v2XZNVqKZhwzj02ly9018YI6g1ubXyhgHMELz6XTNY8dVe4tFrVMOzfXMZ8XNU/uk16Afqwf+eYws3GGbnEAJ5OnePWMJ8lp5FuPAU5qeNDr/MptGbgRszt5RLDQMcq0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=JgQJZLRo; arc=none smtp.client-ip=194.117.254.33
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
sang-engineering.com; h=date:from:to:cc:subject:message-id
:references:mime-version:content-type:in-reply-to; s=k1; bh=TxHX
LCe1dZHMohiA5MINyJwo0Jz8ubxxXqfTUG6sOEg=; b=JgQJZLRogIF06PXEz+du
iEyrMnNLdyLfeEFa5dRKLNxFFGK1eYKIGeLeOKesP6qTD4ohav0XO+hsZFOZPNzH
un5Jd2pQQBdb602Ekqv6C21XC5NbVZcq7MzXCryFIcMAYYvDuv4pc6Cx4L/xzZoI
aS+okx0U6/mv56pJC1q4thUCdH7fmgI6un5qjz45vpUSbnLUVt+bkYa7d6n99CRN
LbKq+Zd5OGUVcgICoJlgyTNdHIynzcj9WgLgDgDt54DVNZTaA8yYl7O2zdhbhlhX
Wf/nxbjeHRDvRgd2gQSP3QoMr2P4PFF0iZMCoodgBVcm8nhsqlOuFNwGrVhog4eO
yw==
Received: (qmail 2656174 invoked from network); 31 May 2025 14:02:42 +0200
Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 31 May 2025 14:02:42 +0200
X-UD-Smtp-Session: l3s3148p1@bcbRTm02O3ptKPEF
Date: Sat, 31 May 2025 14:02:41 +0200
From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Wolfram Sang <wsa@xxxxxxxxxx>, linux-i2c@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Bartosz Golaszewski <brgl@xxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>
Subject: Re: [PULL REQUEST] i2c-for-6.16-rc1
Message-ID: <aDrv4dY0j4lvSDdO@shikoro>
Mail-Followup-To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>,
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>,
Wolfram Sang <wsa@xxxxxxxxxx>, linux-i2c@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Bartosz Golaszewski <brgl@xxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>
References: <aDnYz2PB_euziA01@shikoro>
<CAHk-=wiKW=BPcDvBAsVDemdWBR0uh09A_WMOCoceqj3w3doGJg@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="Llq5oZ+P1Z8gB2ai"
Content-Disposition: inline
In-Reply-To: <CAHk-=wiKW=BPcDvBAsVDemdWBR0uh09A_WMOCoceqj3w3doGJg@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--Llq5oZ+P1Z8gB2ai
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable


> That
>=20
> mutex_destroy(&rxport->aliased_addrs_lock);
>=20
> is wrong - it needs to be "mutex_destroy(&it.export..."

Thank you, I will feed this back.


--Llq5oZ+P1Z8gB2ai
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg6790ACgkQFA3kzBSg
KbaPGw//bhguQD9I3qL2CJDxbttyu8XgljWOJa9dMmAd82MiHM9cW171PGKJUZbD
mYZz9COrPW8SAkJ9ly+DSwTH3/FiL8rPpcAWDpNm8yPUPP7gY6fPICS3K5F1LI3a
UnaPNaPAtJa86L0H9iC93mfiSmOqDUm7zY64TLhdYwp9XlJmZk74PjPQDWS+sXf6
kcIlFn4iMzfo6qfYL5wjouXw/FkXImipNRzzoz2EMx43pEGwF/DNgDonVgzvlcao
ebY+ERHsr+yWLXa8rj6rCbBudRMuQH9urxVxe1xERvfsgjtDNiGvOH+DEI0YBlWZ
Ydp47vRdVO99wfafch5zZMzg8FaNN/7ZzikhpSts5vzhj/IT12h0frCX4QhuCDec
TX2cBmMiepM9BpRw/t7zT6RnDLgPdaC/9SHYzopUPQXzzeIa9M5iFT0BGVGgwuca
CEyxuoBp3r9+YitGLoiUGamyiqLHvwH/F6biXSu7gkUbQCFdV/hFhh6WvDjJ/34+
tBPaH2giFwCOJCq1vU+RRL3EI7dV1QMOn1VoXehWdVImN4JG3CgQgaKpc4CP7HAo
7RE30mPB/qwv4Cst72/CODWkDXVo35dEWaj6gIqoi9VENjI8GJl4NVF6VrpxE5fv
0yg1gopX/VIz+NCIMxrkzQM6nL+/g8zociru3HjTuBv+pXugV0A=
=bTZx
-----END PGP SIGNATURE-----

--Llq5oZ+P1Z8gB2ai--


Return-Path: <linux-kernel+bounces-669077-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id F074441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:03:26 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id BCE1D16F513
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:03:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 26F9023BCF4;
Sat, 31 May 2025 12:03:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QQkLH5rk"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 66F2922AE5D;
Sat, 31 May 2025 12:03:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748692991; cv=none; b=kuc1TfmTNtDpMtcJ8sMUgdoHlRzh2PhZt32VoxLv3DdHKlY4SUdxsCrIYKHk+b6Wbxj3NJioXylxWDZix9GqLzqoaTRVwtsU0a1W7tUhrIWJw7BetxYuiJVJ0RRHmwXL/AotoOjtSC/e0KF5H1pA5AvPCt9PJCoXvcrU8TmbKs4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748692991; c=relaxed/simple;
bh=q33pR9reSdcNqx4kG8qjZBkh30ekK0o6hOTX6CGVhAg=;
h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To:
References:In-Reply-To; b=hbPt8fjtJBuhmTfRIcMiMoyFSBXEW+WYwu++qHGEdUlSQmiV3qndz9ajhaZvQXtKUIcP/nzbYD3rd9Sx+HqY47z/WQiZA9a3/dS4PGxhNdKN4CkS9Qh4+aO52AD5qU6umnPLGbjgOvbMSGyaHNKIUY4nDPhVrwdw15usDYOcDrs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QQkLH5rk; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 04D19C4CEE3;
Sat, 31 May 2025 12:03:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748692989;
bh=q33pR9reSdcNqx4kG8qjZBkh30ekK0o6hOTX6CGVhAg=;
h=Date:Cc:Subject:From:To:References:In-Reply-To:From;
b=QQkLH5rkCgzqmbY81WY69wflccWCGSaP7tI+avqyfWWbuApXbYCr9QCY24oD+1AK6
OW+dtvSrtgtSf9N4HF76KLlKJhG3RjpD3nU8x+oKoRZrsx/3mpLMxLAv2aoBpN4dj9
tI0sPNJYQRV+M4/9dF3fzQvwtCImmmIXCxcb75j0sF4hCcHHn6Uuft+cirbFciR7vZ
O/uvli1cPDsy8rFx8eStP9w9lY1gNvXQBfVWJS+cMSzHNMOUkk520QefTvpQ3pk2Ld
KF+3r4ywqKP/LWgY1nTtwR0tvo+39Si9Kr/LKThm8B3E/kBdH1icAssVcxgUuoLR58
zbryjnmuC3C4A==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 14:03:05 +0200
Message-Id: <DAABXF5QDYF0.21V01UJODPM89@xxxxxxxxxx>
Cc: <gregkh@xxxxxxxxxxxxxxxxxxx>, <rafael@xxxxxxxxxx>, <ojeda@xxxxxxxxxx>,
<alex.gaynor@xxxxxxxxx>, <boqun.feng@xxxxxxxxx>, <gary@xxxxxxxxxxx>,
<bjorn3_gh@xxxxxxxxxxxxxx>, <benno.lossin@xxxxxxxxx>,
<a.hindborg@xxxxxxxxxx>, <aliceryhl@xxxxxxxxxx>, <tmgross@xxxxxxxxx>,
<chrisi.schrefl@xxxxxxxxx>, <rust-for-linux@xxxxxxxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 7/7] rust: sample: misc: implement device driver sample
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Danilo Krummrich" <dakr@xxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-8-dakr@xxxxxxxxxx>
<DA9RRZVPZSMW.1LGW9H4G0RLT5@xxxxxxxxxx> <aDowAzvEvrQcella@pollux>
<DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx> <aDrZ7ma_aNki3FRz@pollux>
In-Reply-To: <aDrZ7ma_aNki3FRz@pollux>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 12:29 PM CEST, Danilo Krummrich wrote:
> On Sat, May 31, 2025 at 10:11:08AM +0200, Benno Lossin wrote:
>> On Sat May 31, 2025 at 12:24 AM CEST, Danilo Krummrich wrote:
>> > On Fri, May 30, 2025 at 10:15:37PM +0200, Benno Lossin wrote:
>> >> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
>> >> > +config SAMPLE_RUST_MISC_DEVICE_WITH_PARENT
>> >> > + bool "Create a misc device with a parent device"
>> >> > + depends on SAMPLE_RUST_MISC_DEVICE
>> >> > + default n
>> >> > + help
>> >> > + Say Y here if you want the misc device sample to create a misc
>> >> > + device with a parent device.
>> >> > +
>> >>=20
>> >> Why not create a separate file? The `cfg`s might confuse newcomers
>> >> looking at the sample.
>> >
>> > It would be a lot of duplicated code, unless we really *only* exercise=
the
>> > device creation and registration part, which would be a bit unfortunat=
e, given
>> > that this sample is also a pretty good test.
>>=20
>> We could separate the common parts into a single file and then
>> `include!` that file from the two samples. (Or if the build system
>> supports multi-file samples then just use that, but my gut feeling is
>> that it doesn't)
>
> The samples are normal modules, where we can have multiple files. But I d=
on't
> see how that helps.
>
> `include!` works, but I'm not sure it's that much better.
>
> Another option would be to put the `cfg` on the module!() macro itself an=
d have
> two separate module types, this way there is only a `cfg` on the two modu=
le!()
> invocations.

How about we do it like this:

We create samples/rust/rust_misc_device/{module.rs,parent.rs,common.rs}
and `module.rs`/`parent.rs` are the two entry points. Both of these
files:
* include `common.rs` using `include!` at the very top.
* define a `RustMiscDeviceModule` struct and implmement `InPlaceModule`
for it.

The module-level docs, common imports constants, `module!` invocation &
other definitions stay in `common.rs`.

This way we can build them at the same time and have no cfgs :)

>> >> > @@ -205,6 +222,31 @@ fn init(_module: &'static ThisModule) -> impl =
PinInit<Self, Error> {
>> >> > }
>> >> > }
>> >> > =20
>> >> > +#[cfg(CONFIG_SAMPLE_RUST_MISC_DEVICE_WITH_PARENT)]
>> >> > +impl kernel::Module for RustMiscDeviceModule {
>> >> > + fn init(_module: &'static ThisModule) -> Result<Self> {
>> >> > + let options =3D Self::init();
>> >> > + let faux =3D faux::Registration::new(c_str!("rust-misc-dev=
ice-sample"), None)?;
>> >> > +
>> >> > + // For every other bus, this would be called from Driver::=
probe(), which would return a
>>=20
>> Missing '`' around Driver::probe().
>>=20
>> >> > + // `Result<Pin<KBox<T>>>`, but faux always binds to a "dum=
my" driver, hence probe() is
>> >>=20
>> >> Not clear what `T` is supposed to be, do you mean `Self`?
>> >
>> > From the perspective of the type implementing the corresponding Driver=
trait it
>> > would indeed be `Self`. But I found it ambiguous to write `Self`, sinc=
e I do *not*
>> > mean `RustMiscDeviceModule` with `Self`.
>>=20
>> Yeah that makes sense, I already entered into the `impl Driver` context
>> :) How about we use `<T as Driver>::probe()` above and then `T` makes
>> sense?
>
> Yep, that sounds good.
>
>> Another thing: faux devices don't have a `probe` in rust, so saying "not
>> required" doesn't make much sense, right?
>
> In Rust, faux does not have probe() indeed, but that's because it's "not
> required"; I can't think of a use-case for a new driver (yet), where this=
isn't
> just unnecessary overhead.

I'd write something along the lines of "the faux rust abstractions do
not have a `probe`, since it's unnecessary, so we initialize the
registration here".

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669078-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E4FB341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:04:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 53BA47A3D3F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:03:02 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6DA27239E9F;
Sat, 31 May 2025 12:04:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=mebeim.net header.i=@mebeim.net header.b="eiCQzkLO"
Received: from h8.fbrelay.privateemail.com (h8.fbrelay.privateemail.com [162.0.218.231])
(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 A86807260A;
Sat, 31 May 2025 12:04:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=162.0.218.231
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693052; cv=none; b=Ghhyx/EhRWl+nOzbMfoLyo44932mjSMlAf4KgmmU4/edqmGBVvXXvGtT+4o/bZdsKYL1Wdxr9CkYOGDGAwzTH26xLf4bHqrk+QOUL9HA+feB4JFPw6xe7jo4rcmY/HIUzl7sQjnj7qc4XtTzSfjhtKfw3q171BUeUY06RdrC72U=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693052; c=relaxed/simple;
bh=ZqEA3lY58sHUP6hm3TaLzmg215uhz+4IvCjcFgwxtJY=;
h=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:
MIME-Version:Content-Type; b=dfKu7okpqwkF8wRzm93ZIsQqVsO4+h4j9JmgCFD5Ve8P3E8MXVqw7rQDNXMXiX2Hq0XLzbBUtGtPXmy9lh7XHbJxtPLcaS7I4CeoXEgCT+rsEKg6Ef0sReAA1q8FiMgYg7rblb8LR8paq2bWeLS8myN3ymE69IQXCekiSoT68SY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mebeim.net; spf=pass smtp.mailfrom=mebeim.net; dkim=pass (2048-bit key) header.d=mebeim.net header.i=@mebeim.net header.b=eiCQzkLO; arc=none smtp.client-ip=162.0.218.231
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mebeim.net
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mebeim.net
Received: from MTA-05-3.privateemail.com (mta-05.privateemail.com [198.54.127.60])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256)
(No client certificate requested)
by h7.fbrelay.privateemail.com (Postfix) with ESMTPSA id 4b8dlm2pTQz2xj0;
Sat, 31 May 2025 07:53:08 -0400 (EDT)
Received: from mta-05.privateemail.com (localhost [127.0.0.1])
by mta-05.privateemail.com (Postfix) with ESMTP id 4b8dlc38sqz3hhVV;
Sat, 31 May 2025 07:53:00 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=mebeim.net; s=default;
t=1748692380; bh=ZqEA3lY58sHUP6hm3TaLzmg215uhz+4IvCjcFgwxtJY=;
h=Date:From:To:Cc:In-Reply-To:References:Subject:From;
b=eiCQzkLOYvvS70DtlQVbO/wXbYTrj0ctl3ppfNKdpA+bEm4ZCwuvQe0h9YFWkKXit
B7OQF+zim8XVzkUWUqKb3LJMjbN7U1P3OhqL/a0RrpaRwD0mg+XIl/8VrmBQu7MCxp
oFY0wTYju1Ay7P7rTpM6BMsamF2GQ8xVFZX7UYHBI7vMsHus8s5Kw6lQRv6XEL868u
oPuiKmtc3ecg0lTjEfnREV1XxYcIlXaJaFOJm6d/7btzKKeMas0aK7Ue5Bg0/w6H8l
kSdguuoaGjr+xpAQ7wZQzpGvsYA1LLEuIxXUP+FovHDvV1TxZmLmPYGlHZtTsVDnWD
QnyFKtx69CORA==
Received: from APP-18 (unknown [10.50.14.242])
by mta-05.privateemail.com (Postfix) with ESMTPA;
Sat, 31 May 2025 07:52:51 -0400 (EDT)
Date: Sat, 31 May 2025 13:52:51 +0200 (CEST)
From: Marco Bonelli <marco@xxxxxxxxxx>
To: "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>
Cc: "terrelln@xxxxxx" <terrelln@xxxxxx>,
"rostedt@xxxxxxxxxxx" <rostedt@xxxxxxxxxxx>,
"mhiramat@xxxxxxxxxx" <mhiramat@xxxxxxxxxx>,
"mark.rutland@xxxxxxx" <mark.rutland@xxxxxxx>,
"linux-trace-kernel@xxxxxxxxxxxxxxx" <linux-trace-kernel@xxxxxxxxxxxxxxx>,
"paul.walmsley@xxxxxxxxxx" <paul.walmsley@xxxxxxxxxx>,
"palmer@xxxxxxxxxxx" <palmer@xxxxxxxxxxx>,
"aou@xxxxxxxxxxxxxxxxx" <aou@xxxxxxxxxxxxxxxxx>,
"linux-riscv@xxxxxxxxxxxxxxxxxxx" <linux-riscv@xxxxxxxxxxxxxxxxxxx>
Message-ID: <1552795452.650306.1748692371190@xxxxxxxxxxxxxxxx>
In-Reply-To: <960240908.630790.1748641210849@xxxxxxxxxxxxxxxx>
References: <960240908.630790.1748641210849@xxxxxxxxxxxxxxxx>
Subject: Re: Broken 32-bit riscv debug build with ZSTD and FTRACE
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Priority: 3
Importance: Normal
X-Mailer: Open-Xchange Mailer v7.10.6-Rev75
X-Originating-Client: open-xchange-appsuite
X-Virus-Scanned: ClamAV using ClamSMTP
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

> Steps to reproduce:
>
> export ARCH=riscv CROSS_COMPILE=riscv32-linux-
> make distclean
> make defconfig
> make 32-bit.config
> ./scripts/config \
> -e DEBUG_KERNEL \
> -e DEBUG_INFO \
> -e DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT \
> -d DEBUG_INFO_NONE \
> -d DEBUG_INFO_REDUCED
> make olddefconfig
> make -j vmlinux

Sorry, forgot to add "-e FTRACE" to the steps above. Here it is:

export ARCH=riscv CROSS_COMPILE=riscv32-linux-
make distclean
make defconfig
make 32-bit.config
./scripts/config \
-e DEBUG_KERNEL \
-e DEBUG_INFO \
-e DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT \
-d DEBUG_INFO_NONE \
-d DEBUG_INFO_REDUCED \
-e FTRACE
make olddefconfig
make -j vmlinux

Everything else still applies.

--
Marco Bonelli


Return-Path: <linux-kernel+bounces-669079-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DBD0541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:05:24 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id D8854189D6CB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:05:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 01A9423BCF4;
Sat, 31 May 2025 12:05:17 +0000 (UTC)
Received: from pokefinder.org (pokefinder.org [135.181.139.117])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8ECFF7260A;
Sat, 31 May 2025 12:05:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=135.181.139.117
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693116; cv=none; b=MSsuPzyLd+DLWVPyjwAn6dpp0qz0MNyO2UJ1SGYnHyPVMazYe0Q4jf4QQcaT4KbM4GTl8bXaQWVOzfrQOecXGBVN37gzTmiiXG1NURtbYQxzTsqQDJQuEHogKWaALE9PaKwiT+C7dFeAJ6QV41QVk/Vw6p08ezDqfho1rSlDsDY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693116; c=relaxed/simple;
bh=sp0NAPl4tOGpghuTGmrIS1hVWJ1MkV58/R+uN30n1As=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=bKIrq2MG+xx2OqnH6zQfSudD4WLvd0YGhNE3edt81h4cse5zYLFUwiw14zYPMzCwQGN97+gHZ538cpGUGYs6z8lAEioAAh0YazM3Ul3Aq/fwQPxLlE0a50ZI0AIKHIP7uPCdL0H/tK5mHLXP3jm8t5d7G1mu2cvExtRryn4QWiA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=the-dreams.de; spf=pass smtp.mailfrom=the-dreams.de; arc=none smtp.client-ip=135.181.139.117
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=the-dreams.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=the-dreams.de
Received: from localhost (ip-109-40-241-5.web.vodafone.de [109.40.241.5])
by pokefinder.org (Postfix) with UTF8SMTPSA id A2566A426EA;
Sat, 31 May 2025 14:05:04 +0200 (CEST)
Date: Sat, 31 May 2025 14:05:03 +0200
From: Wolfram Sang <wsa@xxxxxxxxxxxxx>
To: Romain Gantois <romain.gantois@xxxxxxxxxxx>
Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>,
Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>,
Hans Verkuil <hverkuil@xxxxxxxxx>,
Jai Luthra <jai.luthra@xxxxxxxxxxxxxxxx>,
Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>,
Linux Next Mailing List <linux-next@xxxxxxxxxxxxxxx>,
Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>,
Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx>
Subject: Re: linux-next: manual merge of the v4l-dvb tree with the i2c tree
Message-ID: <aDrwb1YvwFKQB8x1@shikoro>
Mail-Followup-To: Wolfram Sang <wsa@xxxxxxxxxxxxx>,
Romain Gantois <romain.gantois@xxxxxxxxxxx>,
Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>,
Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>,
Hans Verkuil <hverkuil@xxxxxxxxx>,
Jai Luthra <jai.luthra@xxxxxxxxxxxxxxxx>,
Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>,
Linux Next Mailing List <linux-next@xxxxxxxxxxxxxxx>,
Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>,
Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx>
References: <20250428104905.2b54643f@xxxxxxxxxxxxxxxx>
<20250428113052.38cf10da@xxxxxxxxxxxxxxxx>
<20250529124929.5217c6d9@xxxxxxxxxxxxxxxx>
<3352024.aeNJFYEL58@fw-rgant>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="q4AK4MLirR2Yt7dW"
Content-Disposition: inline
In-Reply-To: <3352024.aeNJFYEL58@fw-rgant>
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--q4AK4MLirR2Yt7dW
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline


> Below is the resolution I came up with.

Linus solved it differently [1]. I think he is right, but those
interested please double check.

[1] https://lore.kernel.org/all/CAHk-=wiKW=BPcDvBAsVDemdWBR0uh09A_WMOCoceqj3w3doGJg@xxxxxxxxxxxxxx/


--q4AK4MLirR2Yt7dW
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg68G8ACgkQFA3kzBSg
KbYY7w//RO5HdBP/QG6c7Y4jqcd1B1qyf0c3ysfo87auEWurE1B/lUzDZPsO+kkF
EyV8RljR9G/7D5cSkTSzRD2orm2mvnN748rsHiul3loxDyDCk+WDUUMNWdGhIok2
UGyXPIuw47JUAA1eyiYtcYtuIuQr+zMOVy4IgJkUZXQXGkaK/15ozTZ5WZ91rBo2
YQHEKJO6a0hJgPdN+3f6vwXm4T+T2N7PLYVBH6vf3gf25rseNr40SYYbwwWJaVVs
k3vXO/5Cj12zefqOyXAv1zFUKt7mJIBILB5M5pGWzdinWLhoEWfnxaf1fLSEjjhx
cBVNrCvSquaS3/V5jpaNN27E+3zVWSBnEANOn2/X6+wdMkpa8+QnsE0t3ANlF2LF
/HDffmy7QW/wVZuJZ6LPyomRBm2//HQKfVg/T6gDzcmq092Np/BotkIPgS+P/INd
jwZz/yHTIHuJ/OWQAhzeGmH5iIaDJxf3VlvKUkDxaSkm676ODOEEu6cpERRfXjFj
Mv+Vd1OHMFTFGPF2einWr7M1n4HcDSrOSPadL1TIvUSEAcXPrpuq+58WicWzf45N
n0vNr3y+3pozUgRG0Ij4vkA3xPBw+bv8e/C8cWruNrCpKIuM2Qx/kxQWDfycjJVT
6GykzT82aWStTP05uKZ4zpzB2jJODe2OKwEjd81XPZSn1ZLcnpY=
=15f7
-----END PGP SIGNATURE-----

--q4AK4MLirR2Yt7dW--


Return-Path: <linux-kernel+bounces-669080-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 598AF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:08:05 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 53D09175F6E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:08:06 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6723223A990;
Sat, 31 May 2025 12:08:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="XVfN13Ry"
Received: from mail.zeus03.de (zeus03.de [194.117.254.33])
(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 D6D5B239562
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:07:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693281; cv=none; b=WVOkCWp7Ql2LLzanjeSLEUfWyB0VPWSXBWA8wJ/I+hynsqag5nSIj6SwBllC6WISXs3QRLdpOyytRIiv9p2KMDgMQQO/ErPHOiIEVaNCDkT0wQ+wqMue7H93+y+SMYWV/v04i+Nn8TdmN47DDy5m3HOzpJPKMxjm0trhws28Eac=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693281; c=relaxed/simple;
bh=gLOQ2DwfSyVePBI9ROyu+NVZLusRuXyZQM6iHg2ADxY=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=kO+/xS/0HDfQahnCH1qSWcG+rwo/du1ym1irKw8o/hGMwEhMcap7gXtoUUN3K/UZcwiqNOeYtf2nXwF2C0yiAlmwGaaXkN/+DoG+CgcAcpWke6DoFdsvmUmF0ZP/TBHWALqf6t0xGm6PRmn4RxbKyl6oPQWcQUaAnqTh9NNl4Zs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=XVfN13Ry; arc=none smtp.client-ip=194.117.254.33
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
sang-engineering.com; h=date:from:to:cc:subject:message-id
:references:mime-version:content-type:in-reply-to; s=k1; bh=gLOQ
2DwfSyVePBI9ROyu+NVZLusRuXyZQM6iHg2ADxY=; b=XVfN13RyoO0iXW3iBQDE
PQcTO8X1CHnDhXGvif4cq0j+6eGV7wIJUmA4nJwmpuAaa260udtRGiCqhL3jUDyR
GZO3nPS3jsGQaiHeyPqCAKxKWQImidDPgvIKBGmJ/Yfr82wqC/1xABM4TptpVQyb
4YeHomxLv30+aHuPu312g6D/GXcR841Aq+UeJXlmuHE75fh7sJ7BgbjpK9P2a87S
MNhoEcgOH8PH65w/5tq5xdZjkFqp+VA9fqkYTwXsVqUHmyh5OtnH9A1FY+X8B3Ok
XcjPr7oWLVZTMnVzfENCFCscwnRu9muOVZVXWEk39nTZiKJqFoqkTg3bi06luJ2K
Xw==
Received: (qmail 2657188 invoked from network); 31 May 2025 14:07:51 +0200
Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 31 May 2025 14:07:51 +0200
X-UD-Smtp-Session: l3s3148p1@2pM+YW02a2FtKPEF
Date: Sat, 31 May 2025 14:07:50 +0200
From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>
Cc: Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 2/6] dt-bindings: i2c: renesas,riic: Document RZ/T2H
support
Message-ID: <aDrxFkvydIFa5Ph_@shikoro>
Mail-Followup-To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>,
Prabhakar <prabhakar.csengg@xxxxxxxxx>,
Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
References: <20250530143135.366417-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530143135.366417-3-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="8QgkULBUQ4eMwb6i"
Content-Disposition: inline
In-Reply-To: <20250530143135.366417-3-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--8QgkULBUQ4eMwb6i
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, May 30, 2025 at 03:31:31PM +0100, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> Document support for the I2C Bus Interface (RIIC) found on the Renesas
> RZ/T2H (R9A09G077) SoC. The RIIC IP on this SoC is similar to that on
> the RZ/V2H(P) SoC but supports fewer interrupts, lacks FM+ support and
> does not require resets. Due to these differences, add a new compatible
> string `renesas,riic-r9a09g077` for the RZ/T2H SoC.
>=20
> Unlike earlier SoCs that use eight distinct interrupts, the RZ/T2H uses
> only four, including a combined error/event interrupt. Update the binding
> schema to reflect this interrupt layout and skip the `resets` property
> check, as it is not required on these SoCs.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>

Reviewed-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>


--8QgkULBUQ4eMwb6i
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg68RYACgkQFA3kzBSg
Kbb1ZQ//aCSbFLJpI8qGDzC4KOVv3Gjfob3dJHLozemoZZNMsTZNA8SBtKqqKfXk
DH7sNlpuvYLCdXIH853wh2m/JnlxYoXcNMV6rON/bMEu9VIvEOGqEKwh1FasKIZQ
dKqdtQkVWEHBH/tg3Aqb+NamZEVdPMp/6S+EiDY6Hhx1xtJgPYB/0B+VSW1R8K/z
7pe+crv+/qSo2MfqA0S8MjaWV1gynhcEufhh6nviRfAIsJEb485sW0UtF2ts0iZu
dEU/vJsteCT0BbXgzWBBgVZd6k5PB0+Uc9SsuJLlmJed3uwUnt1xJgFB8aGtB+ak
klPp0l7/yxx8GpzLeAOgvMJZjtX64aB47RuSDevOO32G3WesCTZ3kf80JiEUqKCt
xiqxlBzq0jz3ubzwOcQex0JPSzj4FI/pDEwhkjHejpPh7qE03+AX1Ozx3oJt1tRF
fL6fUjvdxYYEgCL/tY3r6Vsh7yT3NoVwHLY8N+HyGdijc4qcZw9UjhHnDcp5NdZM
imsr1NxXw+0A/CuZ9D7hdBuQBdvg1RMxmWVYp0bdaX02hZO5fnugzwCVNHfqMcKE
GJpx6UrGWVfH/AZ0pCsLJ/Jkc20CexG42/3cqi9dIc+mkUMZforGDVOf3KizPMG5
kFovqaIDW21JNYT+1u3TD22GUsKkpJW+3TG5Hg7UAy5sMQfTJGY=
=Q3Jo
-----END PGP SIGNATURE-----

--8QgkULBUQ4eMwb6i--


Return-Path: <linux-kernel+bounces-669081-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9FA1941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:09:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id C9D9B175601
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:09:35 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 05E6123BD02;
Sat, 31 May 2025 12:09:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="Z78M1p4V"
Received: from mail.zeus03.de (zeus03.de [194.117.254.33])
(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 522FA237163
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:09:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693368; cv=none; b=VDoVUtaU/XGdtS8MGxkaAba3k4onaqaR15TX/RkJqLJ+2tcRbxbjBD7KB7w36xAowbGCfctOInW2B4pd+BoEsdK+Gper3lQZCEnWTw94+cZcXtWxXI+ndVDe9yz1GJxIS16saUmm4677Oq6VZqZ899AGo5SPq6sZqmU3bzMde5M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693368; c=relaxed/simple;
bh=n7wWJCased/X6Q4yYoEfM4pu56HoohPkE1nQd/iu6QM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=OMMyPkwJWT4qDTRCwxc1fkcPjYTcm8O425AFakfpOp3tr92F2NszYQPfWaBBqIybv23SUsfKpz66tIGMlzd/9ZKmFPbs6LiF4xtzyTh8Wsi4QorIo028A4pSlyzUbZVWdve318TJlCrXVC6ds4R7PXKmbWsnk24ciB0MViJybB8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=Z78M1p4V; arc=none smtp.client-ip=194.117.254.33
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
sang-engineering.com; h=date:from:to:cc:subject:message-id
:references:mime-version:content-type:in-reply-to; s=k1; bh=n7wW
JCased/X6Q4yYoEfM4pu56HoohPkE1nQd/iu6QM=; b=Z78M1p4VzQPxgoadfkJS
IzsLN9NTqJMqTMHnHBLngmDg7fu6EDcNFAJGFkTsCIILhDGk+MlB+S94//xHll3Z
0nBkQGx1JlLjdrr3bcNo2fhiugFb52VYfI0CmYoQuTs5rmI4UbOkUBHvoxVfYvm3
Xk+s3vUHQlTgrGby7Sf6ZgN7884+mDKSoPbYJCrM+ekyh71DRxQ/6iH8V4bXz5d/
mNrE78nzeuGViqowtse+/ntdO/GLkwQTtfJ85ioPuMvyN9B63NQ/qkBjk/UBK3ek
Fu5QK6dOo7odpDaql+hsmMzPEBiJrPozUFi/RejAbtd/yhdDlpUrIK1EtlvGR0IK
NQ==
Received: (qmail 2657626 invoked from network); 31 May 2025 14:09:19 +0200
Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 31 May 2025 14:09:19 +0200
X-UD-Smtp-Session: l3s3148p1@Mdh4Zm02biVtKPEF
Date: Sat, 31 May 2025 14:09:17 +0200
From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>
Cc: Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 3/6] dt-bindings: i2c: renesas,riic: Document RZ/N2H
support
Message-ID: <aDrxbYDvyWXkXQlE@shikoro>
Mail-Followup-To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>,
Prabhakar <prabhakar.csengg@xxxxxxxxx>,
Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
References: <20250530143135.366417-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530143135.366417-4-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="bBxDD11VtxK9pPgH"
Content-Disposition: inline
In-Reply-To: <20250530143135.366417-4-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--bBxDD11VtxK9pPgH
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, May 30, 2025 at 03:31:32PM +0100, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> Document support for the I2C Bus Interface (RIIC) found on the Renesas
> RZ/N2H (R9A09G087) SoC. The RIIC IP on this SoC is identical to that on
> the RZ/T2H SoC so `renesas,riic-r9a09g077` will be used as a fallback
> compatible.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>

Reviewed-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>


--bBxDD11VtxK9pPgH
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg68W0ACgkQFA3kzBSg
KbYUZBAAjdkeYP0JYQbYhVU+p2o9rq42ciltQR8VxNq5h2rVMh1DYf5TgXmTDPoF
jrr6OB49bS8RM0O10t73VSFTrTlRcpI3QWwxeU7AB4rVCZNukaTMQpoOGjjJJuQL
3aynlNVudceKVHJPws9RhTZh7u8ZnWzZ44wIvc4R3PDWgu8zEFCnmI4GiFYviddR
lNrwpuPJnH7SMwPsNkYqIcDKFC2M1X7z3WVgYrwr3+wuvGGLY4SvDzkIgWw3eLja
b9dtwFQl8AGINas3Je6jDhtRYe869SuerwO5n8SPmjmYneYZ4wvyLOOH0wqkdr7J
+gaOBErHVLEjOPw8gFBeEEKOKczvGawzaYCgIIq0Nlb+oKEbIoZG41g8uYuAK5sQ
H9WATkHbiq8u7cTGRolD5SN9QN69Nb/Dxj7aLH+x7gOA5NFzY6ItOKnP/k+RsH+C
WyQk2BHwMOhp0QXofTIFhKbYCyvng7hpoG/kAHKNA+pX1VYeNq2/dhBZqHlbSC+l
u4DKNT/9gIPWYR5kqHh2lH3nlL8ZOO5i31NRoOmb5GmvcPPzZIHnQt/dsLYBqt+/
BoqixJ7SKWbvfLLLjsITmgMrPkvaLDiUrEW31S3C0jZDs6Y1XGg+drhATJS7BwF5
LElu7HNimtV1mVPuExPYrt/5YcpB5pBVpbLLyX3hVx8x9T3MBLc=
=GG8A
-----END PGP SIGNATURE-----

--bBxDD11VtxK9pPgH--


Return-Path: <linux-kernel+bounces-669082-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0BCF441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:10:23 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 67602189E5DC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:10:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2A89A23BCFD;
Sat, 31 May 2025 12:10:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="s2lo5/yV"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 676627260A;
Sat, 31 May 2025 12:10:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693413; cv=none; b=GFSyk/6GSSZbDreYTGZoDI3NtlL4cj3JDVJMEy83JOfLrzrosXK2utBZJn7Zn2FgNemafgnvTSpqAOTHx/ibNXH5aeZHe96hbvHPdjj8i1UIwQM47linSa0hTmV/pQkJkRbllNzG2iuDzw483P639xr7w+yNbLL6cDu+3xBj+wI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693413; c=relaxed/simple;
bh=edR2Sg60IDTAJd9y49ifvck9u5o43rpFtj/a1phDKnU=;
h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To:
References:In-Reply-To; b=ZjPA19OqjzOwRHSlDjKxyMxVT22RsrmeNQBDfvSw7L3hND/H9NdvpTZet/IYa/hffo879SG96uXkdcLxEO04VakuTQQXTPfzVVsV7C+7fH5s2KRu5ELeF0Rqo8H5A4an3j0QQtg2dv+eVqXCKaaadiFMuaUUX2Cd5cuua0tSKTY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=s2lo5/yV; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E3519C4CEE3;
Sat, 31 May 2025 12:10:09 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748693412;
bh=edR2Sg60IDTAJd9y49ifvck9u5o43rpFtj/a1phDKnU=;
h=Date:Cc:Subject:From:To:References:In-Reply-To:From;
b=s2lo5/yV8L1MdzxV6i+KTg7CjrN6u6q7afEoin8eBHaZR+Pz33o1zZOiJ5H0ERjQ5
hHO3uJ7kbzA+9dww4dmY+oJqgpCrG7IVXVHZh6tEnTXiIjYhURhbq3+lMvYLfLWkn+
0s73VHRnC5yhFWAljLcsF6g50vV96vbwdtxscfg1ukSdrAjACY2m9Vk1OLW4mOOhKu
D5/yobhDgcesmRPZCPMjkOEgWIQjImPvdx8dorlaDz4rfNl9/jPE7/GOyDWRni+//n
KcYpXdcsMZshTWURyQkC5GYUDjllGkOwXyrPi9L1nhjhSNbeH1YFRW92safsN2rj9N
CYkCXOFUNmnrA==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 14:10:08 +0200
Message-Id: <DAAC2TIAOAEY.16STTUX7D2UNR@xxxxxxxxxx>
Cc: <gregkh@xxxxxxxxxxxxxxxxxxx>, <rafael@xxxxxxxxxx>, <ojeda@xxxxxxxxxx>,
<alex.gaynor@xxxxxxxxx>, <boqun.feng@xxxxxxxxx>, <gary@xxxxxxxxxxx>,
<bjorn3_gh@xxxxxxxxxxxxxx>, <benno.lossin@xxxxxxxxx>,
<a.hindborg@xxxxxxxxxx>, <aliceryhl@xxxxxxxxxx>, <tmgross@xxxxxxxxx>,
<chrisi.schrefl@xxxxxxxxx>, <rust-for-linux@xxxxxxxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 6/7] rust: miscdevice: expose the parent device as
&Device<Bound>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Danilo Krummrich" <dakr@xxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-7-dakr@xxxxxxxxxx>
<DAA7CJOUJPNL.F7UH9KD8JANF@xxxxxxxxxx> <aDreGUcvyR4kjMGl@pollux>
In-Reply-To: <aDreGUcvyR4kjMGl@pollux>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 12:46 PM CEST, Danilo Krummrich wrote:
> On Sat, May 31, 2025 at 10:27:44AM +0200, Benno Lossin wrote:
>> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
>> > @@ -227,11 +229,21 @@ fn drop(self: Pin<&mut Self>) {
>> > }
>> > }
>> > =20
>> > +/// The arguments passed to the file operation callbacks of a [`MiscD=
eviceRegistration`].
>> > +pub struct MiscArgs<'a, T: MiscDevice> {
>> > + /// The [`Device`] representation of the `struct miscdevice`.
>> > + pub device: &'a Device,
>> > + /// The parent [`Device`] of [`Self::device`].
>> > + pub parent: Option<&'a Device<Bound>>,
>> > + /// The `RegistrationData` passed to [`MiscDeviceRegistration::re=
gister`].
>> > + pub data: &'a T::RegistrationData,
>>=20
>> Here I would also just use `T`, remove the `MiscDevice` bound and then
>> use `MiscArgs<'_, Self::RegistrationData>` below.
>
> It has the disadvantage that the documentation of the `data` field above =
needs
> to be much more vague, since we can't claim that it's the `RegistrationDa=
ta`
> passed to `MiscDeviceRegistration::register` anymore -- given that, I'm n=
ot sure
> it's worth changing.

Yeah that's not ideal... Then keep it this way.

>> > +}
>> > +
>> > /// Trait implemented by the private data of an open misc device.
>> > #[vtable]
>> > pub trait MiscDevice: Sized {
>> > /// What kind of pointer should `Self` be wrapped in.
>> > - type Ptr: ForeignOwnable + Send + Sync;
>> > + type Ptr: Send + Sync;
>>=20
>> There is no info about this change in the commit message. Why are we
>> changing this? This seems a bit orthogonal to the other change, maybe do
>> it in a separate patch?
>
> It's a consequence of the implementation:
>
> A `Ptr` instance is created in the misc device's file operations open() c=
allback
> and dropped in the fops release() callback.
>
> Previously, this was stored in the private data pointer of the struct fil=
e that
> is passed for every file operation in open().
>
> Also note that when open is called the private data pointer in a struct f=
ile
> points to the corresponding struct miscdevice.
>
> With this patch, we keep the pointer to the struct miscdevice in the priv=
ate
> data pointer of struct file, but instead store the `Ptr` instance in
> `RawDeviceRegistration::private`.
>
> Subsequently, ForeignOwnable is not a required trait anymore.

That's true, but it also wouldn't hurt to keep it for this patch and do
the change in a separate one. Or mention it in the commit message :)

> We need this in order to keep access to the `RawDeviceRegistration` throu=
ghout
> file operations to be able to pass the misc device's parent as &Device<Bo=
und>
> through the `MiscArgs` above.
>
>> Also `Ptr` doesn't make much sense for the name, since now that the
>> `ForeignOwnable` bound is gone, I could set this to `Self` and then have
>> access to `&Self` in the callbacks.
>
> We can't make it `Self`, it might still be some pointer type, require pin=
-init,
> etc. So, it has to be a generic type.

`MiscDevice::open` could return an `impl PinInit<Self, Error>` :)

> But, I agree that we should not name it `Ptr`, probably should never have=
been
> named `Ptr`, but `Data`, `Private` or similar.
>
>> Would that also make sense to use as a general change? So don't store
>> `Self::Ptr`, but `Self` directly?
>
> I think it can't be `Self`, see above.

The rust_misc_device example would still work if we changed this to
`Self`. Now it's not a complicated user of the API and someone might
want to store `Self` in an `Arc` and then store that as the private
data, as the MiscDevice is also referenced from somewhere else. But I
don't know if that is common or an intended use-case :)

For simple use-cases however, I think that `Self` definitely is the
right choice (as opposed to `Pin<KBox<Self>>` for example, as that has
an extra allocation :)

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669083-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BB02E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:11:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 20E06189E66A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:11:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 092E223AE93;
Sat, 31 May 2025 12:11:31 +0000 (UTC)
Received: from mout-p-103.mailbox.org (mout-p-103.mailbox.org [80.241.56.161])
(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 1F1177260A;
Sat, 31 May 2025 12:11:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=80.241.56.161
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693490; cv=none; b=DxjAmu8oM8Wj3/Nmzl5v7dB9+ZTGXxr3xnQ7ACdCSZ6hiXLQ0G5/LsWxqGdsU2yWIR7bKL8nNiY0bb0lP0LKYVJMByNwJhHHR1swkXjAY3XSsGXR4QfdNr4TH9MgEcvVZ2urK1AQN9leXfAo45p6iea4abF5FUWPXmmNxwnceuI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693490; c=relaxed/simple;
bh=us2Py93GBDsSp0jD+73Gd0wAEBph6IjnFu+nDClLvYY=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Bi+Gt00L3UlUi+8XBq3BQqbl3ra3txB4rHrp85iRzX1kmSbkKgWwHGbgo14SgNKTzUqevdCla62W1lLByiudHFIGiw2yxkIn033/l1YZAeF7WlFgZb3wKSvHVp/fdA5KuoTheaBGrZ+N2A7ER2COs0/0XIc2IhyhH/SGXnLKtFs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=timmermann.space; spf=pass smtp.mailfrom=timmermann.space; arc=none smtp.client-ip=80.241.56.161
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=timmermann.space
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=timmermann.space
Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4b8f8q69K0z9skH;
Sat, 31 May 2025 14:11:23 +0200 (CEST)
From: Lukas Timmermann <linux@timmermann.space>
To: lee@xxxxxxxxxx,
pavel@xxxxxxxxxx
Cc: linux-leds@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Lukas Timmermann <linux@timmermann.space>
Subject: [PATCH v2 0/2] Support for Osram as3668 LED driver
Date: Sat, 31 May 2025 14:07:16 +0200
Message-ID: <20250531120715.302870-4-linux@timmermann.space>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This is v2 of the patch series adding support for the as3668 LED driver. I am sending v2 because I discovered major issues in v1 that required correction before review.

This patch adds basic support for the as3668 driver IC via I2C interface. The IC is capable of driving four individual LEDs up to 25.5mA per channel. Hardware blinking would be theoretically possible, but this chip only supports a few set on/off-delays which makes using that feature unfeasable, therefore my driver doesn't offer that capability. It's intended applications is in mobile devices such as phones, tablets and cameras. This driver was tested and is working on a samsung-manta which is running postmarketOS with a near mainline kernel.

Please note: This is my first suggested patch to the kernel. checkpatch.pl runs without warnings or errors. I've read the docs in regards to the led subsystem, coding style and submission of patches, but I'm still a bit unsure about the general workflow. I will try my best.

Changes in v2:
- Fixed reading led subnodes in dt incorrectly, which caused wrong numbering and a segfault when removing the driver module
- Fixed calling of_property_read_u8 with an int, causing a compiler error
- Added more error checking during writes to the i2c bus
- Link to v1: https://lore.kernel.org/linux-leds/20250530184219.78085-3-linux@timmermann.space/

Lukas Timmermann (2):
leds: as3668: Driver for the ams Osram 4-channel i2c LED driver
dt-bindings: leds: Add new as3668 support

.../devicetree/bindings/leds/leds-as3668.yaml | 76 +++++++
drivers/leds/Kconfig | 10 +
drivers/leds/Makefile | 1 +
drivers/leds/leds-as3668.c | 192 ++++++++++++++++++
4 files changed, 279 insertions(+)
create mode 100644 Documentation/devicetree/bindings/leds/leds-as3668.yaml
create mode 100644 drivers/leds/leds-as3668.c

--
2.49.0



Return-Path: <linux-kernel+bounces-669084-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0213041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:11:48 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 4DC2A189E765
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:12:01 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8674123BCE7;
Sat, 31 May 2025 12:11:42 +0000 (UTC)
Received: from mout-p-103.mailbox.org (mout-p-103.mailbox.org [80.241.56.161])
(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 ABDF37260A;
Sat, 31 May 2025 12:11:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=80.241.56.161
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693502; cv=none; b=Q3LteWD6fia/DDX0sEDa7yS01x3HrAUqDNRxh90p6L8KHLCTfZZDQVRBXOcLoX+EhEpYJl6M4vU967j9t13MbiKspOLybor9r5xNW4+RVIjqSoQN9emoUXo/F7jcV6KSKSWj/pBY/34ezByP3Ps0xH94RxOCKl3t5dHNjm3VHR8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693502; c=relaxed/simple;
bh=/8+CPHkd+SNv/bK+WKJCa28M+x6KDqAIx3Tzlggq2zw=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=bm4/95YTBzBnvRcrOlorsZNVi42rxG3awZbJMI44CFX19mWpIqqKe8wueCyce54mms6hJPnvZkB3bmFRihPl9EfoviRlxI05r8bSDX1+MxVWqBd+nMHOp5OFW3Pt4jd+sKh2oluFNPPK8mXOetILNNGUI0XGIqhN9Qilr02b9KY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=timmermann.space; spf=pass smtp.mailfrom=timmermann.space; arc=none smtp.client-ip=80.241.56.161
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=timmermann.space
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=timmermann.space
Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-103.mailbox.org (Postfix) with ESMTPS id 4b8f940QbLz9skH;
Sat, 31 May 2025 14:11:36 +0200 (CEST)
From: Lukas Timmermann <linux@timmermann.space>
To: lee@xxxxxxxxxx,
pavel@xxxxxxxxxx
Cc: linux-leds@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Lukas Timmermann <lukas@timmermann.space>
Subject: [PATCH v2 1/2] leds: as3668: Driver for the ams Osram 4-channel i2c
Date: Sat, 31 May 2025 14:07:18 +0200
Message-ID: <20250531120715.302870-6-linux@timmermann.space>
In-Reply-To: <20250531120715.302870-4-linux@timmermann.space>
References: <20250531120715.302870-4-linux@timmermann.space>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Lukas Timmermann <lukas@timmermann.space>

This is the actual driver for the as3668.

There were no related drivers in the kernel until now, so I created a new file. I've checked around for relatives of the as3668 but all of them are quite different, which is why wrote the driver just for the as3668.

---
drivers/leds/Kconfig | 10 ++
drivers/leds/Makefile | 1 +
drivers/leds/leds-as3668.c | 192 +++++++++++++++++++++++++++++++++++++
3 files changed, 203 insertions(+)
create mode 100644 drivers/leds/leds-as3668.c

diff --git a/drivers/leds/Kconfig b/drivers/leds/Kconfig
index a104cbb0a001..56477c170f0a 100644
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -100,6 +100,16 @@ config LEDS_ARIEL

Say Y to if your machine is a Dell Wyse 3020 thin client.

+config LEDS_AS3668
+ tristate "LED support for AMS AS3668"
+ depends on LEDS_CLASS
+ depends on I2C
+ help
+ This option enables support for the AMS AS3668 LED controller.
+
+ To compile this driver as a module, choose M here: the module
+ will be called leds-as3668.
+
config LEDS_AW200XX
tristate "LED support for Awinic AW20036/AW20054/AW20072/AW20108"
depends on LEDS_CLASS
diff --git a/drivers/leds/Makefile b/drivers/leds/Makefile
index 2f170d69dcbf..983811384fec 100644
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_LEDS_ADP5520) += leds-adp5520.o
obj-$(CONFIG_LEDS_AN30259A) += leds-an30259a.o
obj-$(CONFIG_LEDS_APU) += leds-apu.o
obj-$(CONFIG_LEDS_ARIEL) += leds-ariel.o
+obj-$(CONFIG_LEDS_AS3668) += leds-as3668.o
obj-$(CONFIG_LEDS_AW200XX) += leds-aw200xx.o
obj-$(CONFIG_LEDS_AW2013) += leds-aw2013.o
obj-$(CONFIG_LEDS_BCM6328) += leds-bcm6328.o
diff --git a/drivers/leds/leds-as3668.c b/drivers/leds/leds-as3668.c
new file mode 100644
index 000000000000..0168e1d89e9e
--- /dev/null
+++ b/drivers/leds/leds-as3668.c
@@ -0,0 +1,192 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * Osram AMS AS3668 LED Driver IC
+ *
+ * Copyright (C) 2025 Lukas Timmermann <linux@timmermann.space>
+ */
+
+#include <linux/i2c.h>
+#include <linux/leds.h>
+#include <linux/module.h>
+#include <linux/uleds.h>
+
+#define AS3668_MAX_LEDS 4
+
+/* Chip Registers */
+#define AS3668_CHIP_ID1 0x3e
+#define AS3668_CHIP_ID2 0x3f
+
+#define AS3668_CHIP_ID2_SERIAL_MASK GENMASK(7, 4)
+#define AS3668_CHIP_ID2_REV_MASK GENMASK(3, 0)
+
+#define AS3668_CURRX_CONTROL 0x01
+#define AS3668_CURR1 0x02
+#define AS3668_CURR2 0x03
+#define AS3668_CURR3 0x04
+#define AS3668_CURR4 0x05
+
+/* Constants */
+#define AS3668_CHIP_IDENT 0xa5
+#define AS3668_CHIP_REV1 0x01
+
+struct as3668_led {
+ struct led_classdev cdev;
+ struct as3668 *chip;
+ struct fwnode_handle *fwnode;
+
+ int num;
+};
+
+struct as3668 {
+ struct i2c_client *client;
+ struct as3668_led leds[AS3668_MAX_LEDS];
+};
+
+static int as3668_read_value(struct i2c_client *client, u8 reg)
+{
+ return i2c_smbus_read_byte_data(client, reg);
+}
+
+static int as3668_write_value(struct i2c_client *client, u8 reg, u8 value)
+{
+ int err = i2c_smbus_write_byte_data(client, reg, value);
+
+ if (err)
+ dev_err(&client->dev, "error writing to reg 0x%tx, returned %d", reg, err);
+
+ return err;
+}
+
+static enum led_brightness as3668_brightness_get(struct led_classdev *cdev)
+{
+ struct as3668_led *led = container_of(cdev, struct as3668_led, cdev);
+
+ return as3668_read_value(led->chip->client, AS3668_CURR1 + led->num);
+}
+
+static void as3668_brightness_set(struct led_classdev *cdev, enum led_brightness brightness)
+{
+ struct as3668_led *led = container_of(cdev, struct as3668_led, cdev);
+
+ as3668_write_value(led->chip->client, AS3668_CURR1 + led->num, brightness);
+}
+
+static int as3668_dt_init(struct as3668 *as3668)
+{
+ struct device *dev = &as3668->client->dev;
+ struct as3668_led *led;
+ struct led_init_data init_data = {};
+ int err;
+ u32 reg;
+ int i = 0;
+
+ for_each_available_child_of_node_scoped(dev_of_node(dev), child) {
+ err = of_property_read_u32(child, "reg", &reg);
+ if (err)
+ dev_err(dev, "unable to read device tree led reg, err %d", err);
+
+ i = reg;
+
+ if (i < 0 || i > AS3668_MAX_LEDS) {
+ dev_err(dev, "unsupported led reg %d\n", i);
+ return -EOPNOTSUPP;
+ }
+
+ led = &as3668->leds[i];
+ led->fwnode = of_fwnode_handle(child);
+
+ led->num = i;
+ led->chip = as3668;
+
+ led->cdev.max_brightness = U8_MAX;
+ led->cdev.brightness_get = as3668_brightness_get;
+ led->cdev.brightness_set = as3668_brightness_set;
+
+ init_data.fwnode = led->fwnode;
+ init_data.default_label = ":";
+
+ err = devm_led_classdev_register_ext(dev, &led->cdev, &init_data);
+ if (err) {
+ dev_err(dev, "failed to register %d LED\n", i);
+ return err;
+ }
+ }
+
+ return 0;
+}
+
+static int as3668_probe(struct i2c_client *client)
+{
+ u8 chip_id1, chip_id2, chip_serial, chip_rev;
+ struct as3668 *as3668;
+
+ /* Check for sensible i2c address */
+ if (client->addr != 0x42)
+ return dev_err_probe(&client->dev, -EFAULT, "unexpected address for as3668 device\n");
+
+ /* Read identifier from chip */
+ chip_id1 = as3668_read_value(client, AS3668_CHIP_ID1);
+
+ if (chip_id1 != AS3668_CHIP_IDENT)
+ return dev_err_probe(&client->dev, -ENODEV, "chip reported wrong id: 0x%tx\n", chip_id1);
+
+ /* Check the revision*/
+ chip_id2 = as3668_read_value(client, AS3668_CHIP_ID2);
+ chip_serial = FIELD_GET(AS3668_CHIP_ID2_SERIAL_MASK, chip_id2);
+ chip_rev = FIELD_GET(AS3668_CHIP_ID2_REV_MASK, chip_id2);
+
+ if (chip_rev != AS3668_CHIP_REV1)
+ dev_warn(&client->dev, "unexpected chip revision\n");
+
+ /* Print out information about the chip */
+ dev_dbg(&client->dev, "chip_id: 0x%tx | chip_id2: 0x%tx | chip_serial: 0x%tx | chip_rev: 0x%tx\n", chip_id1, chip_id2, chip_serial, chip_rev);
+
+ as3668 = devm_kzalloc(&client->dev, struct_size(as3668, leds, AS3668_MAX_LEDS), GFP_KERNEL);
+ as3668->client = client;
+
+ as3668_dt_init(as3668);
+
+ /* Initialize the chip */
+ as3668_write_value(client, AS3668_CURRX_CONTROL, 0x55);
+ as3668_write_value(client, AS3668_CURR1, 0x00);
+ as3668_write_value(client, AS3668_CURR2, 0x00);
+ as3668_write_value(client, AS3668_CURR3, 0x00);
+ as3668_write_value(client, AS3668_CURR4, 0x00);
+
+ return 0;
+}
+
+static void as3668_remove(struct i2c_client *client)
+{
+ as3668_write_value(client, AS3668_CURRX_CONTROL, 0x0);
+}
+
+static const struct i2c_device_id as3668_idtable[] = {
+ {"as3668"},
+ {}
+};
+
+MODULE_DEVICE_TABLE(i2c, as3668_idtable);
+
+static const struct of_device_id as3668_match_table[] = {
+ {.compatible = "ams,as3668"},
+ {}
+};
+
+MODULE_DEVICE_TABLE(of, as3668_match_table);
+
+static struct i2c_driver as3668_driver = {
+ .driver = {
+ .name = "leds_as3668",
+ .of_match_table = as3668_match_table,
+ },
+ .probe = as3668_probe,
+ .remove = as3668_remove,
+ .id_table = as3668_idtable,
+};
+
+module_i2c_driver(as3668_driver);
+
+MODULE_AUTHOR("Lukas Timmermann <linux@timmermann.space>");
+MODULE_DESCRIPTION("AS3668 LED driver");
+MODULE_LICENSE("GPL");
--
2.49.0



Return-Path: <linux-kernel+bounces-669085-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C6AB341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:12:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id F0B097AEE1F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:10:41 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A10E923BCF5;
Sat, 31 May 2025 12:11:55 +0000 (UTC)
Received: from mout-p-102.mailbox.org (mout-p-102.mailbox.org [80.241.56.152])
(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 67EF67260A;
Sat, 31 May 2025 12:11:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=80.241.56.152
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693515; cv=none; b=TcHFdaowweSePCyFRaBK4DpNguM8Va22V/5B3OC9x8a0odMFbcJ6cDuCw6i1v4PquIy+AJcOozVzoVDuCX6EhfeorlLVaW5HsZVe4si2FnA0qK+wOQTJ9PQaDTiq9C5pFBJw374V11JtY/K8zxc3Sd5tjurMMjaxQbPiE2DpNuk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693515; c=relaxed/simple;
bh=FVicUJnc7YWRCxGtgjPXOJI/+lxgKLgQ1bMJFFVcxSw=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=ZHvwMTfpLG3eDpSLLkGeCg8XyxmX257DOi/Bg7Pl9+OMUFG4KFojn5w43qHH/5Bs2B/rGSN8L2bbgLVrsWXxB5Ig/reZvsRCXvQmAMFy+aFgs/28Ia9hhjxIs1pbHziVICE1tZc1wMZoEgO/4L9k0dpgSLffumbn2McL4A55VjM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=timmermann.space; spf=pass smtp.mailfrom=timmermann.space; arc=none smtp.client-ip=80.241.56.152
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=timmermann.space
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=timmermann.space
Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256)
(No client certificate requested)
by mout-p-102.mailbox.org (Postfix) with ESMTPS id 4b8f9B3tj7z9sbm;
Sat, 31 May 2025 14:11:42 +0200 (CEST)
From: Lukas Timmermann <linux@timmermann.space>
To: lee@xxxxxxxxxx,
pavel@xxxxxxxxxx
Cc: linux-leds@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Lukas Timmermann <lukas@timmermann.space>
Subject: [PATCH v2 2/2] dt-bindings: leds: Add new as3668 support
Date: Sat, 31 May 2025 14:07:20 +0200
Message-ID: <20250531120715.302870-8-linux@timmermann.space>
In-Reply-To: <20250531120715.302870-4-linux@timmermann.space>
References: <20250531120715.302870-4-linux@timmermann.space>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Rspamd-Queue-Id: 4b8f9B3tj7z9sbm
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Lukas Timmermann <lukas@timmermann.space>

Document Osram as3668 LED driver devicetree bindings.

---
.../devicetree/bindings/leds/leds-as3668.yaml | 76 +++++++++++++++++++
1 file changed, 76 insertions(+)
create mode 100644 Documentation/devicetree/bindings/leds/leds-as3668.yaml

diff --git a/Documentation/devicetree/bindings/leds/leds-as3668.yaml b/Documentation/devicetree/bindings/leds/leds-as3668.yaml
new file mode 100644
index 000000000000..aae6248f5712
--- /dev/null
+++ b/Documentation/devicetree/bindings/leds/leds-as3668.yaml
@@ -0,0 +1,76 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/leds/leds-as3668.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Osram 4-channel i2c LED driver.
+
+maintainers:
+ - Lukas Timmermann <linux@timmermann.space>
+
+description: |
+ This IC can drive up to four separate LEDs.
+ Having four channels suggests it could be used with a single RGBW LED.
+
+properties:
+ compatible:
+ const: ams,as3668
+
+ reg:
+ maxItems: 1
+ description:
+ I2C slave address
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+patternProperties:
+ "^led@[0-3]$":
+ type: object
+ $ref: common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ reg:
+ maxItems: 1
+
+required:
+ - compatible
+ - reg
+ - "#address-cells"
+ - "#size-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/leds/common.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led-controller@42 {
+ compatible = "ams,as3668";
+ reg = <0x42>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ led@0 {
+ reg = <0x0>;
+ function = LED_FUNCTION_STATUS;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ led@1 {
+ reg = <0x1>;
+ function = LED_FUNCTION_STATUS;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+ };
+ };
+
--
2.49.0



Return-Path: <linux-kernel+bounces-669086-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B08B741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:12:14 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 42C159E3603
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:11:53 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 17CA423BD1D;
Sat, 31 May 2025 12:12:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="W996xeIM"
Received: from mail.zeus03.de (zeus03.de [194.117.254.33])
(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 79D7723A989
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:12:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693527; cv=none; b=AL3yhWDfEhV+5ezWSNdiP4+fhMgiwnd+jmJWO8U9CI2w3stMb6Pof4VNO277BhsON9NSzmhsbvgFmLo0U/mtIYxldcHhZJTFscXIvz9kx2JxucF0pyK/No1j5B4TzVBEpexyN11vY1TZrni/YWCW+2SapgVDMPPsTIJ/htwOoYw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693527; c=relaxed/simple;
bh=OooTgLOVDQGkTRpdrKb/JRSw1Klfe+kWwo2Ioe9HmYY=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=ASLIi8xIJIuDkCeJUXFaT9/vFdXDLfmvgCBXFMhzGnC/Iu2rmULqJdOrzAYVy/wedvK/7JXnGpb6qXUxq68QvBoD2jz1K7cjrNh+S2QTDmvc1BxCUX+VFZubrhVDkonjkMPFTpOpwIJ/SnQrTdde/IAKFgvIWhHmDya7G0Dwcpc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=W996xeIM; arc=none smtp.client-ip=194.117.254.33
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
sang-engineering.com; h=date:from:to:cc:subject:message-id
:references:mime-version:content-type:in-reply-to; s=k1; bh=OooT
gLOVDQGkTRpdrKb/JRSw1Klfe+kWwo2Ioe9HmYY=; b=W996xeIMRsgxLU6ataq+
WEmLoWaH81yeK+oWg3KBzslt6q/TwqaurH9CCVFk3tAXNCv1c74ZiOMkjFIGFt42
CIzTyEE9oU9ouREwLWS/GaXuSUn5zn9AH4EEsdEvw1gPZLdrykgyaEvMZ1vG8gxh
wL4xH1fQ0lkWFyf5sALsD7fNfTAexznzuVK47rVPdJgFDKG3aVBx+dYqr0jYiUXf
hT4gkvl36vhU3+xHhv8z4FB8d+U9Oh9PuDAbIv8LcM25bYv2TDotTs4PBEKDknhf
Umh5gLF4Wb0BkxF5JAmzMrTBSG6ZIGe9ei/haSYS7l9LKT2wtAmbzEE3PJKBz3W3
bQ==
Received: (qmail 2658426 invoked from network); 31 May 2025 14:12:02 +0200
Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 31 May 2025 14:12:02 +0200
X-UD-Smtp-Session: l3s3148p1@1okqcG02iTFtKPEF
Date: Sat, 31 May 2025 14:12:01 +0200
From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>
Cc: Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 4/6] i2c: riic: Pass IRQ desc array as part of OF data
Message-ID: <aDryEVl4VtZZqUdK@shikoro>
Mail-Followup-To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>,
Prabhakar <prabhakar.csengg@xxxxxxxxx>,
Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
References: <20250530143135.366417-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530143135.366417-5-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="a+76YYJ21yRC+UGR"
Content-Disposition: inline
In-Reply-To: <20250530143135.366417-5-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--a+76YYJ21yRC+UGR
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, May 30, 2025 at 03:31:33PM +0100, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> In preparation for adding support for Renesas RZ/T2H and RZ/N2H SoCs,
> which feature a combined error interrupt instead of individual error
> interrupts per condition, update the driver to support configurable IRQ
> layouts via OF data.
>=20
> Introduce a new `irqs` field and `num_irqs` count in `riic_of_data` to
> allow future SoCs to provide a custom IRQ layout. This patch is a
> non-functional change for existing SoCs and maintains compatibility with
> the current `riic_irqs` array.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>

Reviewed-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>

Did you test this on RZ/A1? I could do so next week?


--a+76YYJ21yRC+UGR
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg68hEACgkQFA3kzBSg
KbaQlg//QdyeM2ClWC9AmzDt40mA5yIlIkcwx6FQQEZ0spn/rqxgzwGIhLsxR6lw
XKBC6wSBLEbr7B2DCDhe1ctOTOPsCRzJQQLmG3ItfPJ9Kb7ba5NH9amsmy8wO1eW
XON1ubpJ5tu0/o8ej6LvFxTKSLs6MhH2laizAtLTaWe6dHz/rppYxc1A3FWwC4m3
0+PtntEoFFbFYRI9LRmCDJRpI0mSJwy7XP99Qwk4+n50u0yFs56E9nN9RNN/kOpO
SnKH4rsaEyiszJ9Rk2Y2fwoVolP25XXueyd6MX7wMgY/6iaxJYEcbelWbA6PSk5w
0U9+kcdhjmrSZPgiRiMq+v0UkvqJHT+lrfML/rD2FUfxZ6kJDAHPJkPDFY3JvCpG
Wsql15pVY7qigs8/1nKcrKSygJk01/HgC0vE30xU87ZGXg7shpkJv+9994X3h9dK
tIwSalxD2Zqy+vzEbSzbz1YE6TW4CSaSyD33/FcAH0rZq8SmhPvoqAusYcK9ORIv
U6mBfakTvPKp2JaQAuqZLLm9L4Ey7RPhspay5h0DzlMK/BJEA0C4N6HOF9fdSKCu
yHheO64PFKUS4AlRQB8d25y66oH+zWWrsONle+wAT2cN032XVwFTK34lqC6GtVPI
uZDah3UNktajyoIVEFqMOyBmt6zdOsyCL73/badvPUVSLRXB27U=
=NUkM
-----END PGP SIGNATURE-----

--a+76YYJ21yRC+UGR--


Return-Path: <linux-kernel+bounces-669087-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C0C2F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:12:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0258717BFF5
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:12:35 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BC77B23BCE7;
Sat, 31 May 2025 12:12:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@xxxxxxxxxx header.b="TXPlul1F"
Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15])
(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 C1A7C237A3B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:12:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693547; cv=pass; b=XsrC1UfUYADEjFSE1hiCBlK5kS9yZbvmoVgcrT3bPc6deq/XDaazF3527+9FHtdXbkQfK4KTju98nis55d0zXOeAfhJPN9qPJh4VndzBEOrQI1+EX58sH+E/m7+1lDsvCniiJoqHoPtcKzwdYPK/4mN+jdVLa8CK+XJb5X3AVjQ=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693547; c=relaxed/simple;
bh=50DqJ3xUiixaRqJKJj8lkIXYqReB0hVRTI46Qo3uIU8=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=eDJoR6zxwzoaIKYvDMwcR32Yz0kwB6xTQhHOk23LAk83WO9s4J8rNi8+JceuJXqBDLOecBluZzhAiYCUayT6LqrUNJhrAQecBoAEiu8rrItxKpDq0zILKnoizFWWxF6eX0Bn3E6ZBqOZo8LQqUI3/haN0cHSRoowcQyCjCbKu8I=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@xxxxxxxxxx header.b=TXPlul1F; arc=pass smtp.client-ip=136.143.188.15
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me
ARC-Seal: i=1; a=rsa-sha256; t=1748693519; cv=none;
d=zohomail.com; s=zohoarc;
b=NQFC0AIUY23FUQjQz62ed9qK5rpwaVURBiwk3dkDm82WhPJGCOJKKbfcP+vlRPBS/1DU/WCh4gWSA6UK9wlX4uSl9ZvSShgsKqW+NTtFDvtuxzxNAUAm5UpwjNfkOCck0MBxrR3b2cFFjN3mO2JC/xb2NgqZp74gv1mzdgzLhII=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc;
t=1748693519; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To;
bh=NYhJiwF0tBtC7BJnrVq4lhX1cQwG9XLjgrh95lCEAF8=;
b=R39n6y6IEwGkmMkC+XD7su8I642KC2vuar7b3J8ErQo9niEVyq/jjWv8mz13LmOYs+9/ksnm3lxpaqhDiz+WyKAo1uXvBNL2WAZFXMTsR0SIdQmDThbYAuNrCSw9FqX/ImDTNCQDux+Ocs+NKt/hAR9vVAlofEJ+MDqJgLKsj7Y=
ARC-Authentication-Results: i=1; mx.zohomail.com;
dkim=pass header.i=icenowy.me;
spf=pass smtp.mailfrom=uwu@xxxxxxxxxx;
dmarc=pass header.from=<uwu@xxxxxxxxxx>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1748693519;
s=zmail2; d=icenowy.me; i=uwu@xxxxxxxxxx;
h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To;
bh=NYhJiwF0tBtC7BJnrVq4lhX1cQwG9XLjgrh95lCEAF8=;
b=TXPlul1F6op3zLbL2y6z9iqPSXYOMf1WvhOe25kxqDfE72r6pspOW89nHTzBaI01
7+KUoAX8KN+lmxDkRFyx3t+4a/fqTxGj4gCvrhmTs7sDhgX6JIghMuWcUcNyfHfrccb
pDN7a/Fg4NJDBg08WhNoIZVWGrk5icvYU1dIdY0i5JGzDHZMTNbc02NwwVrcrOjrfsu
S6zyJtNrwZ6dlY7A8PQrXktKqw5tUtnwH/HnurkA6i+2DCNFNJVnmFfA7JpMYCKAyZQ
5RWarM3/2N9QwVNiLWKLWuCmIBrCiRcrpjDVMCwh6qdhwchqP0RYiiRp/nJ4Y5lVvIO
+h8QjqcBiQ==
Received: by mx.zohomail.com with SMTPS id 1748693516762703.3998524129344;
Sat, 31 May 2025 05:11:56 -0700 (PDT)
From: Icenowy Zheng <uwu@xxxxxxxxxx>
To: Chun-Kuang Hu <chunkuang.hu@xxxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>,
David Airlie <airlied@xxxxxxxxx>,
Simona Vetter <simona@xxxxxxxx>,
Matthias Brugger <matthias.bgg@xxxxxxxxx>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>,
Justin Green <greenjustin@xxxxxxxxxxxx>
Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx,
linux-mediatek@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
Icenowy Zheng <uwu@xxxxxxxxxx>
Subject: [PATCH] drm/mediatek: only announce AFBC if really supported
Date: Sat, 31 May 2025 20:11:40 +0800
Message-ID: <20250531121140.387661-1-uwu@xxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-ZohoMailClient: External
X-ZohoMail-Owner: <20250531121140.387661-1-uwu@xxxxxxxxxx>+zmo_0_
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Currently even the SoC's OVL does not declare the support of AFBC, AFBC
is still announced to the userspace within the IN_FORMATS blob, which
breaks modern Wayland compositors like KWin Wayland and others.

Gate passing modifiers to drm_universal_plane_init() behind querying the
driver of the hardware block for AFBC support.

Fixes: c410fa9b07c3 ("drm/mediatek: Add AFBC support to Mediatek DRM driver")
Signed-off-by: Icenowy Zheng <uwu@xxxxxxxxxx>
---
Patch tested on MT8183, on which KWin Wayland 5.27.12 is fixed.

In addition, I tried to fake supports_afbc in mt8183_ovl_driver_data and
mt8183_ovl_2l_driver_data, then KWin Wayland gets broken again and
modetest also shows the AFBC modifier in IN_FORMATS.

drivers/gpu/drm/mediatek/mtk_crtc.c | 3 ++-
drivers/gpu/drm/mediatek/mtk_ddp_comp.c | 1 +
drivers/gpu/drm/mediatek/mtk_ddp_comp.h | 9 +++++++++
drivers/gpu/drm/mediatek/mtk_disp_drv.h | 1 +
drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 7 +++++++
drivers/gpu/drm/mediatek/mtk_plane.c | 7 +++++--
drivers/gpu/drm/mediatek/mtk_plane.h | 3 ++-
7 files changed, 27 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_crtc.c b/drivers/gpu/drm/mediatek/mtk_crtc.c
index 8f6fba4217ece..53359c2465b65 100644
--- a/drivers/gpu/drm/mediatek/mtk_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_crtc.c
@@ -930,7 +930,8 @@ static int mtk_crtc_init_comp_planes(struct drm_device *drm_dev,
mtk_ddp_comp_supported_rotations(comp),
mtk_ddp_comp_get_blend_modes(comp),
mtk_ddp_comp_get_formats(comp),
- mtk_ddp_comp_get_num_formats(comp), i);
+ mtk_ddp_comp_get_num_formats(comp),
+ mtk_ddp_comp_is_afbc_supported(comp), i);
if (ret)
return ret;

diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c
index edc6417639e64..ac6620e10262e 100644
--- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.c
+++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.c
@@ -366,6 +366,7 @@ static const struct mtk_ddp_comp_funcs ddp_ovl = {
.get_blend_modes = mtk_ovl_get_blend_modes,
.get_formats = mtk_ovl_get_formats,
.get_num_formats = mtk_ovl_get_num_formats,
+ .is_afbc_supported = mtk_ovl_is_afbc_supported,
};

static const struct mtk_ddp_comp_funcs ddp_postmask = {
diff --git a/drivers/gpu/drm/mediatek/mtk_ddp_comp.h b/drivers/gpu/drm/mediatek/mtk_ddp_comp.h
index 39720b27f4e9e..7289b3dcf22f2 100644
--- a/drivers/gpu/drm/mediatek/mtk_ddp_comp.h
+++ b/drivers/gpu/drm/mediatek/mtk_ddp_comp.h
@@ -83,6 +83,7 @@ struct mtk_ddp_comp_funcs {
u32 (*get_blend_modes)(struct device *dev);
const u32 *(*get_formats)(struct device *dev);
size_t (*get_num_formats)(struct device *dev);
+ bool (*is_afbc_supported)(struct device *dev);
void (*connect)(struct device *dev, struct device *mmsys_dev, unsigned int next);
void (*disconnect)(struct device *dev, struct device *mmsys_dev, unsigned int next);
void (*add)(struct device *dev, struct mtk_mutex *mutex);
@@ -294,6 +295,14 @@ size_t mtk_ddp_comp_get_num_formats(struct mtk_ddp_comp *comp)
return 0;
}

+static inline bool mtk_ddp_comp_is_afbc_supported(struct mtk_ddp_comp *comp)
+{
+ if (comp->funcs && comp->funcs->is_afbc_supported)
+ return comp->funcs->is_afbc_supported(comp->dev);
+
+ return false;
+}
+
static inline bool mtk_ddp_comp_add(struct mtk_ddp_comp *comp, struct mtk_mutex *mutex)
{
if (comp->funcs && comp->funcs->add) {
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_drv.h b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
index 04217a36939cd..679d413bf10be 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_drv.h
+++ b/drivers/gpu/drm/mediatek/mtk_disp_drv.h
@@ -106,6 +106,7 @@ void mtk_ovl_disable_vblank(struct device *dev);
u32 mtk_ovl_get_blend_modes(struct device *dev);
const u32 *mtk_ovl_get_formats(struct device *dev);
size_t mtk_ovl_get_num_formats(struct device *dev);
+bool mtk_ovl_is_afbc_supported(struct device *dev);

void mtk_ovl_adaptor_add_comp(struct device *dev, struct mtk_mutex *mutex);
void mtk_ovl_adaptor_remove_comp(struct device *dev, struct mtk_mutex *mutex);
diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
index d0581c4e3c999..e0236353d4997 100644
--- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
+++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c
@@ -236,6 +236,13 @@ size_t mtk_ovl_get_num_formats(struct device *dev)
return ovl->data->num_formats;
}

+bool mtk_ovl_is_afbc_supported(struct device *dev)
+{
+ struct mtk_disp_ovl *ovl = dev_get_drvdata(dev);
+
+ return ovl->data->supports_afbc;
+}
+
int mtk_ovl_clk_enable(struct device *dev)
{
struct mtk_disp_ovl *ovl = dev_get_drvdata(dev);
diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c b/drivers/gpu/drm/mediatek/mtk_plane.c
index 655106bbb76d3..e08b771bc25e9 100644
--- a/drivers/gpu/drm/mediatek/mtk_plane.c
+++ b/drivers/gpu/drm/mediatek/mtk_plane.c
@@ -321,7 +321,8 @@ static const struct drm_plane_helper_funcs mtk_plane_helper_funcs = {
int mtk_plane_init(struct drm_device *dev, struct drm_plane *plane,
unsigned long possible_crtcs, enum drm_plane_type type,
unsigned int supported_rotations, const u32 blend_modes,
- const u32 *formats, size_t num_formats, unsigned int plane_idx)
+ const u32 *formats, size_t num_formats,
+ bool supports_afbc, unsigned int plane_idx)
{
int err;

@@ -332,7 +333,9 @@ int mtk_plane_init(struct drm_device *dev, struct drm_plane *plane,

err = drm_universal_plane_init(dev, plane, possible_crtcs,
&mtk_plane_funcs, formats,
- num_formats, modifiers, type, NULL);
+ num_formats,
+ supports_afbc ? modifiers : NULL,
+ type, NULL);
if (err) {
DRM_ERROR("failed to initialize plane\n");
return err;
diff --git a/drivers/gpu/drm/mediatek/mtk_plane.h b/drivers/gpu/drm/mediatek/mtk_plane.h
index 3b13b89989c7e..95c5fa5295d8a 100644
--- a/drivers/gpu/drm/mediatek/mtk_plane.h
+++ b/drivers/gpu/drm/mediatek/mtk_plane.h
@@ -49,5 +49,6 @@ to_mtk_plane_state(struct drm_plane_state *state)
int mtk_plane_init(struct drm_device *dev, struct drm_plane *plane,
unsigned long possible_crtcs, enum drm_plane_type type,
unsigned int supported_rotations, const u32 blend_modes,
- const u32 *formats, size_t num_formats, unsigned int plane_idx);
+ const u32 *formats, size_t num_formats,
+ bool supports_afbc, unsigned int plane_idx);
#endif
--
2.49.0



Return-Path: <linux-kernel+bounces-669088-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A212541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:14:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 581247A4E10
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:12:56 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1502923BD0E;
Sat, 31 May 2025 12:14:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="DnDqj2mA"
Received: from mail.zeus03.de (zeus03.de [194.117.254.33])
(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 7A5AB239562
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:14:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693645; cv=none; b=KfojZxwOupyLLBw4rKFX4lmt04azw8pZkET8RZLvGJhQZSnF03BdOq4u6zAG5R/SrUMgOf/l0thHUY3PyPxLJyD9P5Rs9aaUKMbw0Bd5mthrN11oNwPMRt7l4R3+DzvjLHThcfR+ql24WSh9E+mUVxns6kHST6OTkSqI2qIPK8A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693645; c=relaxed/simple;
bh=HMl4PQWBoHWBRHh4XGArGsA8WjQ66lGtWVooYYSem0g=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=lZSjUOE1kCXJWQvC0V1gA3qzQ3ce+BAl64vW4RKw/wG42cqD2iZGfKoLWwP/v0ma2ZFTAXKbvLwtgMBuMsRpVEIvAXCsmWcqafG+nXoCIsSGMR3vBhVB0fmsopOUZBMM+hc6x8fYDx5JSf/JdZ75yOKRdNIqW+kvwYih7Y81lps=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=DnDqj2mA; arc=none smtp.client-ip=194.117.254.33
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
sang-engineering.com; h=date:from:to:cc:subject:message-id
:references:mime-version:content-type:in-reply-to; s=k1; bh=HMl4
PQWBoHWBRHh4XGArGsA8WjQ66lGtWVooYYSem0g=; b=DnDqj2mAaP30sduefalv
xFAkYtCc+fovWh/FETm0ldveHwuu1GukF6Qn/hYuLDbbxhR3Rcc6HMY1kU4jgPL8
24MLCk8WkMAIHvWJNF0gImsY/rhAyA5J4R6fkQZEOxUKtUZTqSp8FjdwoJcT2Pb/
U0QDXwt0jAeSwfxToKs5g2c11Hos2IOZr7gCukfgK6X7DE38tY6EopRpMyHxKMbP
Gr1u/f9P/pEzqu2poOu6Q60UjNKel2PuyyX//DoYURcpitLm7Z9o/n2Q20BWk6vw
kD4jOw9CulNCE05Vz8AsoQ3VZ9dCxswgQrPeGk0Va4om6yHU8GXcAJ49ACPIiIp9
mA==
Received: (qmail 2658966 invoked from network); 31 May 2025 14:13:59 +0200
Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 31 May 2025 14:13:59 +0200
X-UD-Smtp-Session: l3s3148p1@6/sid202tGptKPEF
Date: Sat, 31 May 2025 14:13:58 +0200
From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>
Cc: Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 5/6] i2c: riic: Move generic compatible string to end of
array
Message-ID: <aDryhlkN0_Vtr9UD@shikoro>
Mail-Followup-To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>,
Prabhakar <prabhakar.csengg@xxxxxxxxx>,
Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
References: <20250530143135.366417-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530143135.366417-6-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="gbll7py7W20t0510"
Content-Disposition: inline
In-Reply-To: <20250530143135.366417-6-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--gbll7py7W20t0510
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, May 30, 2025 at 03:31:34PM +0100, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> Reorder the entry in `riic_i2c_dt_ids` to place the generic compatible
> string `renesas,riic-rz` at the end of the array, following the
> convention used in other Renesas drivers.
>=20
> Also, drop the unnecessary comma after the sentinel entry, as it is
> not needed.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>

Well, why not...

Reviewed-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>


--gbll7py7W20t0510
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg68oYACgkQFA3kzBSg
KbZ0bxAAngFf7yBjEOswiyYHqACvRFnoXeXM04KH1W8hzzyhA6H+pgvXeBbwtvaK
CUChYFl/A8t2wkKB80TJQqwh7hSs4Ht8f5OjwovRv+JncN3dpRMx8rJx1Q5JPAFJ
RzIveBEm2PCZkdUholYWvxB/N9Dsn+npaNm5kP8SCwid3lfRdQnLWwIDOMS9xCAr
0yh2ssaqe+pcievadu43HbtM6xoxgfZPJ6acqxTj9qSQNDUJ+euHA1H9v3FkzrGh
sSlKhY+fmBe8zka07LGjHCS2Mg2n4a/ECZEGqn4wJiYA6MC+RCWrzUjttlDt03k7
uh/uyQwikcKweLVivH0KymPeFsYVjEajCnV58D4r6reEzfY+WYaroImqsbE5ENAY
mbIsgt3hd8iV09yu279PsgqBu26GFVQHQPGvhxhA/diqOQMY7zqqrDxQabPL72B7
8zB7I5+E0a9VNHBM9+tFfLov2bCnaFm062AWuXg+wgrXmmoVJ7uUySPD2DL6KoDY
gDl3Ak1oUui83AWJQU6UwMvc+Jz5qeq7J5iR8pTsJNGdVmGlFQVkMOY+74ojTCM6
kIPBKt1YRQqS2TZTsjEL54qpifZcmO7IfkyGTHG+ZJN1kIPlGhLUP7HoMt29LIKJ
ZBUrJoAOd43zSTuTfW7DrsJ7XenRxycraMgW8XKE9FHIUK9P2Wg=
=C8el
-----END PGP SIGNATURE-----

--gbll7py7W20t0510--


Return-Path: <linux-kernel+bounces-669089-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B6A5241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:18:14 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id BF79F17ED21
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:18:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 274C423BD00;
Sat, 31 May 2025 12:18:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b="jgYRwBDk"
Received: from mail.zeus03.de (zeus03.de [194.117.254.33])
(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 B7AC9238D51
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:18:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.117.254.33
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693887; cv=none; b=WO5RPafd72WcvyDEUXdJVvB6qgsRjiy/qIKFGci3LsAjBbGNH4GyYwRJDqrNsgjeXT6f6Gzu5PWcQvWYyhl2DZvunE3kI2/zI/YOMhfEKZmvM3aTwoYzfOAzzt10M0WpTCCvBTcIzyvd73FXHh5jmEfpNBaNYFpsgwpNNiBYfkQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693887; c=relaxed/simple;
bh=+74Hhna9Izo6chE4zoXmt7brKd7FufFok0bY9M5FiWg=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=tGR+FfpiyfTg/Aa5SGttKersx2Xx9YOs4iIWGzC7kfGZjzMwoSIIoCF/Cq3IyKGhnXw/3mGnOiJW1fkPiTEGwyQbEq7SRAzNgVlon9RIIf0OmhGDnJRe3UGO1gSPvIWnH036b6QGRnSS4FHwgAh3+ac0Qpg/2PtIbP6qTo5OkY0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com; spf=pass smtp.mailfrom=sang-engineering.com; dkim=pass (2048-bit key) header.d=sang-engineering.com header.i=@sang-engineering.com header.b=jgYRwBDk; arc=none smtp.client-ip=194.117.254.33
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=sang-engineering.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sang-engineering.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
sang-engineering.com; h=date:from:to:cc:subject:message-id
:references:mime-version:content-type:in-reply-to; s=k1; bh=+74H
hna9Izo6chE4zoXmt7brKd7FufFok0bY9M5FiWg=; b=jgYRwBDk8Q+Hg6u4f/dS
LTko/KCwfnVXbCPqYz47HQzMSMYjT9N0a2c/bdGjmgnZPs8Tb6usLH85Kpxwi6eo
cHgNqHPQvLNXE5F/fsOpS2qbIsW8lkwAenP1LHjEOB73szBANlnqyEutK5NUqS2y
QhbHukFFJVG1unqSas0y74Mnj8PygAhJgOmDZ19kOkCB3aTxSAQtEyHsp0QXGyJ8
rOI6TQejHkcn7xbqza09NT8obBXq6chmKvZHXxg78vtVJ0zxcVtjyCZJOnLJlgEk
FjhX+llItTxheOaZ/eMr7FwzVMeCI/5BEtm6cFwmK6FEmaHhyqPD7DNB/OkPU6oj
qg==
Received: (qmail 2660063 invoked from network); 31 May 2025 14:18:03 +0200
Received: by mail.zeus03.de with UTF8SMTPSA (TLS_AES_256_GCM_SHA384 encrypted, authenticated); 31 May 2025 14:18:03 +0200
X-UD-Smtp-Session: l3s3148p1@ZYm3hW02kShtKPEF
Date: Sat, 31 May 2025 14:18:02 +0200
From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>
To: Prabhakar <prabhakar.csengg@xxxxxxxxx>
Cc: Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Subject: Re: [PATCH 6/6] i2c: riic: Add support for RZ/T2H SoC
Message-ID: <aDrzesrRpZUiyYBS@shikoro>
Mail-Followup-To: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>,
Prabhakar <prabhakar.csengg@xxxxxxxxx>,
Chris Brandt <chris.brandt@xxxxxxxxxxx>,
Andi Shyti <andi.shyti@xxxxxxxxxx>,
Geert Uytterhoeven <geert+renesas@xxxxxxxxx>,
Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Magnus Damm <magnus.damm@xxxxxxxxx>,
linux-renesas-soc@xxxxxxxxxxxxxxx, linux-i2c@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Biju Das <biju.das.jz@xxxxxxxxxxxxxx>,
Fabrizio Castro <fabrizio.castro.jz@xxxxxxxxxxx>,
Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
References: <20250530143135.366417-1-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
<20250530143135.366417-7-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg=pgp-sha512;
protocol="application/pgp-signature"; boundary="gYZcbJsgp7/D/9If"
Content-Disposition: inline
In-Reply-To: <20250530143135.366417-7-prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


--gYZcbJsgp7/D/9If
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, May 30, 2025 at 03:31:35PM +0100, Prabhakar wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>
>=20
> Add support for the Renesas RZ/T2H (R9A09G077) SoC, which features a
> different interrupt layout for the RIIC controller. Unlike other SoCs
> with individual error interrupts, RZ/T2H uses a combined error interrupt
> (EEI).
>=20
> Introduce a new IRQ descriptor table for RZ/T2H, along with a custom
> ISR (`riic_eei_isr`) to handle STOP and NACK detection from the shared
> interrupt.
>=20
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>

Reviewed-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx>


--gYZcbJsgp7/D/9If
Content-Type: application/pgp-signature; name="signature.asc"

-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEOZGx6rniZ1Gk92RdFA3kzBSgKbYFAmg683oACgkQFA3kzBSg
KbbNCg//Uka34eTPfHMIvTYOOwdCzZEHgfXKwkIiDPA6BxY58fZ5UcDB4gAPt+Na
xvwmGJ9BMdh1WhElVSVuqbeNbxm4/DaZC1z3Z0dqF5NrrA07kbu1aeyFjmCP35px
9Udr2NnXf4pJroxM8Gk/wpkpk3rBrxY1J2iFKI+yVgNRAGV9dhxOW6SNfZhZVVjg
VnHqRYu72m6Ni0jatCS6Ky/ybO0xWea6ExwWT37eTbX3XEgWCWoIsfeax34u93gc
Td+2f1ubcK5iGigm9osAsiMYHL9dGKodAIjlFsK8CdOXfpOEm1wv2FaOk+HvrZcg
dtJF4FgjcEpkmZ+MdoAVrx4p5nyS+3G4kK0eeuZkkkVCGbypE4XRR3bOFHk0+ykj
lHNchm7LclE7H73bN0QG1dXH2Zira6cTzI2xgULlrymD3DpFistNQ6cOq7FJGm33
y1ncWg4qjR2NTBaBjRttJGXgj0RUXUBQHUDPsRtD0OCTPg62CV8qtcQeXyGiDW7z
ihY/pKULtbztX8f4z56MatHT2kdPe65m0y8HVEU+iSdjha4xuk+G2j+DCddRopIF
NmJ8pEPL3SChO/PMh8f7p6NW4UWBlIbaJ+oqVIyWZ/MRVin0CjZKr5IY7ftLAPbm
BXitk/mwyYJXPWEY5TH9+BPJQHMsGfLW9wS5OfgO7eWD/UOo7ec=
=beBU
-----END PGP SIGNATURE-----

--gYZcbJsgp7/D/9If--


Return-Path: <linux-kernel+bounces-669090-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 340D441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:18:47 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id A98693BBCF1
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:18:25 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BCFB923BCE4;
Sat, 31 May 2025 12:18:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b="JTpHwJXN"
Received: from fllvem-ot03.ext.ti.com (fllvem-ot03.ext.ti.com [198.47.19.245])
(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 BEBF012B63;
Sat, 31 May 2025 12:18:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.47.19.245
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748693920; cv=none; b=e8OPg3mxRxY/wIKdugI4WUd4ulmV+SINV4cOGFsnr36y6US8pxAlbdJ+YbogBIYytrZnMXWvq8OY+aqj75Az8/0TMwoF7x/MjKawofYeUvnCzuNnT7JmrmNlDYZM7E4vSzSsOC4MJPOL8RW2r3WYfEgDPL/5qFbURaohi/sVlq4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748693920; c=relaxed/simple;
bh=yzynbwJvm3HS/5jmTL08InbBRr9Gg9nwk97p6mdiZPo=;
h=From:To:CC:Subject:Date:Message-ID:MIME-Version:Content-Type; b=JATzwjWBI8tcz1w+Nnoqd8W+ozyf3+fmk3HIUPkR72McVAQvoWSWrPaW7phkpJ7WZGhnMwVkwlUyfIL+LfUl+tw9ssFgtK8skji6ayIGnpqunuilDdTCmXUlTvXp4fFOEAGN7scvrXPCE/RZq9hgQaaKFCoDxzU/HRDvFnwY7yo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com; spf=pass smtp.mailfrom=ti.com; dkim=pass (1024-bit key) header.d=ti.com header.i=@ti.com header.b=JTpHwJXN; arc=none smtp.client-ip=198.47.19.245
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ti.com
Received: from lelvem-sh01.itg.ti.com ([10.180.77.71])
by fllvem-ot03.ext.ti.com (8.15.2/8.15.2) with ESMTP id 54VCI8jc4076149;
Sat, 31 May 2025 07:18:08 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com;
s=ti-com-17Q1; t=1748693888;
bh=/nQJ4eVfDTDgxUtEpAAOtlIXcJDiyoymSPdj71uUwTU=;
h=From:To:CC:Subject:Date;
b=JTpHwJXN/DgHpyixbJJRbWH9tn9eP2ZPp8nRdtTWwFdAkZXxBWQrCfl9frysWnr04
K85fnbpYPU341UBW1gIwB/Fohnk5EaTEixh/PpFD5+k9kyYc4DRHBj0+NR47nKFngZ
ZO511le0gkMZFoHWZm4UN4yNuEiWp16Sx9AWmB9M=
Received: from DFLE115.ent.ti.com (dfle115.ent.ti.com [10.64.6.36])
by lelvem-sh01.itg.ti.com (8.18.1/8.18.1) with ESMTPS id 54VCI8531521341
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA256 bits=128 verify=FAIL);
Sat, 31 May 2025 07:18:08 -0500
Received: from DFLE107.ent.ti.com (10.64.6.28) by DFLE115.ent.ti.com
(10.64.6.36) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Sat, 31
May 2025 07:18:07 -0500
Received: from lelvem-mr05.itg.ti.com (10.180.75.9) by DFLE107.ent.ti.com
(10.64.6.28) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via
Frontend Transport; Sat, 31 May 2025 07:18:07 -0500
Received: from lelvem-mr05.itg.ti.com ([10.250.165.138])
by lelvem-mr05.itg.ti.com (8.18.1/8.18.1) with ESMTP id 54VCI1wK284629;
Sat, 31 May 2025 07:18:03 -0500
From: Baojun Xu <baojun.xu@xxxxxx>
To: <tiwai@xxxxxxx>
CC: <broonie@xxxxxxxxxx>, <andriy.shevchenko@xxxxxxxxxxxxxxx>,
<alsa-devel@xxxxxxxxxxxxxxxx>, <shenghao-ding@xxxxxx>, <navada@xxxxxx>,
<13916275206@xxxxxxx>, <v-hampiholi@xxxxxx>, <v-po@xxxxxx>,
<linux-sound@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>,
<baojun.xu@xxxxxx>
Subject: [PATCH v1] ALSA: hda/tas2781: Add compatible for hardware id TIAS2781 and TXNW2781
Date: Sat, 31 May 2025 20:17:33 +0800
Message-ID: <20250531121733.17493-1-baojun.xu@xxxxxx>
X-Mailer: git-send-email 2.43.0.windows.1
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-C2ProcessedOrg: 333ef613-75bf-4e12-a4b1-8e3623f5dcea
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

TIAS2781 is unofficial hardware id in acpi for tas2781 in HDA,
has been used for several projects. TXNW is the official hardware
id for TI, will be used in new projects, including device on SPI bus.
This patch will support both TIAS2781 and TXNW2781 in acpi
with tas2781 under HDA.

Signed-off-by: Baojun Xu <baojun.xu@xxxxxx>
---
sound/pci/hda/patch_realtek.c | 21 +++++++++++++++++----
sound/pci/hda/tas2781_hda_i2c.c | 10 +++++++---
2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index cd0d7ba73..ff32ac25d 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -7323,7 +7323,7 @@ static void alc285_fixup_asus_ga403u(struct hda_codec *cdc, const struct hda_fix
alc_fixup_inv_dmic(cdc, fix, action);
}

-static void tas2781_fixup_i2c(struct hda_codec *cdc,
+static void tas2781_fixup_tias_i2c(struct hda_codec *cdc,
const struct hda_fixup *fix, int action)
{
comp_generic_fixup(cdc, action, "i2c", "TIAS2781", "-%s:00", 1);
@@ -7334,6 +7334,12 @@ static void tas2781_fixup_spi(struct hda_codec *cdc, const struct hda_fixup *fix
comp_generic_fixup(cdc, action, "spi", "TXNW2781", "-%s:00-tas2781-hda.%d", 2);
}

+static void tas2781_fixup_txnw_i2c(struct hda_codec *cdc,
+ const struct hda_fixup *fix, int action)
+{
+ comp_generic_fixup(cdc, action, "i2c", "TXNW2781", "-%s:00-tas2781-hda.%d", 1);
+}
+
static void yoga7_14arb7_fixup_i2c(struct hda_codec *cdc,
const struct hda_fixup *fix, int action)
{
@@ -8001,6 +8007,7 @@ enum {
ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI,
ALC287_FIXUP_TAS2781_I2C,
ALC245_FIXUP_TAS2781_SPI_2,
+ ALC287_FIXUP_TXNW2781_I2C,
ALC287_FIXUP_YOGA7_14ARB7_I2C,
ALC245_FIXUP_HP_MUTE_LED_COEFBIT,
ALC245_FIXUP_HP_MUTE_LED_V1_COEFBIT,
@@ -10251,7 +10258,7 @@ static const struct hda_fixup alc269_fixups[] = {
},
[ALC287_FIXUP_TAS2781_I2C] = {
.type = HDA_FIXUP_FUNC,
- .v.func = tas2781_fixup_i2c,
+ .v.func = tas2781_fixup_tias_i2c,
.chained = true,
.chain_id = ALC285_FIXUP_THINKPAD_HEADSET_JACK,
},
@@ -10261,6 +10268,12 @@ static const struct hda_fixup alc269_fixups[] = {
.chained = true,
.chain_id = ALC285_FIXUP_HP_GPIO_LED,
},
+ [ALC287_FIXUP_TXNW2781_I2C] = {
+ .type = HDA_FIXUP_FUNC,
+ .v.func = tas2781_fixup_txnw_i2c,
+ .chained = true,
+ .chain_id = ALC285_FIXUP_THINKPAD_HEADSET_JACK,
+ },
[ALC287_FIXUP_YOGA7_14ARB7_I2C] = {
.type = HDA_FIXUP_FUNC,
.v.func = yoga7_14arb7_fixup_i2c,
@@ -11318,8 +11331,8 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK(0x17aa, 0x3902, "Lenovo E50-80", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
SND_PCI_QUIRK(0x17aa, 0x390d, "Lenovo Yoga Pro 7 14ASP10", ALC287_FIXUP_YOGA9_14IAP7_BASS_SPK_PIN),
SND_PCI_QUIRK(0x17aa, 0x3913, "Lenovo 145", ALC236_FIXUP_LENOVO_INV_DMIC),
- SND_PCI_QUIRK(0x17aa, 0x391f, "Yoga S990-16 pro Quad YC Quad", ALC287_FIXUP_TAS2781_I2C),
- SND_PCI_QUIRK(0x17aa, 0x3920, "Yoga S990-16 pro Quad VECO Quad", ALC287_FIXUP_TAS2781_I2C),
+ SND_PCI_QUIRK(0x17aa, 0x391f, "Yoga S990-16 pro Quad YC Quad", ALC287_FIXUP_TXNW2781_I2C),
+ SND_PCI_QUIRK(0x17aa, 0x3920, "Yoga S990-16 pro Quad VECO Quad", ALC287_FIXUP_TXNW2781_I2C),
SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC),
SND_PCI_QUIRK(0x17aa, 0x3978, "Lenovo B50-70", ALC269_FIXUP_DMIC_THINKPAD_ACPI),
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
diff --git a/sound/pci/hda/tas2781_hda_i2c.c b/sound/pci/hda/tas2781_hda_i2c.c
index d91eed9f7..48c7af191 100644
--- a/sound/pci/hda/tas2781_hda_i2c.c
+++ b/sound/pci/hda/tas2781_hda_i2c.c
@@ -583,16 +583,19 @@ static int tas2781_hda_i2c_probe(struct i2c_client *clt)
if (!tas_hda->priv)
return -ENOMEM;

+ hda_priv->save_calibration = tas2781_save_calibration;
+ tas_hda->priv->global_addr = TAS2781_GLOBAL_ADDR;
if (strstr(dev_name(&clt->dev), "TIAS2781")) {
device_name = "TIAS2781";
- hda_priv->save_calibration = tas2781_save_calibration;
- tas_hda->priv->global_addr = TAS2781_GLOBAL_ADDR;
+ } else if (strstr(dev_name(&clt->dev), "TXNW2781:00-tas2781-hda.0")) {
+ device_name = "TXNW2781";
} else if (strstr(dev_name(&clt->dev), "INT8866")) {
device_name = "INT8866";
hda_priv->save_calibration = tas2563_save_calibration;
tas_hda->priv->global_addr = TAS2563_GLOBAL_ADDR;
- } else
+ } else {
return -ENODEV;
+ }

tas_hda->priv->irq = clt->irq;
ret = tas2781_read_acpi(tas_hda->priv, device_name);
@@ -723,6 +726,7 @@ static const struct i2c_device_id tas2781_hda_i2c_id[] = {

static const struct acpi_device_id tas2781_acpi_hda_match[] = {
{"TIAS2781", 0 },
+ {"TXNW2781", 0 },
{"INT8866", 0 },
{}
};
--
2.43.0



Return-Path: <linux-kernel+bounces-669091-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id F115141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:22:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 7DA147A2748
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:21:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 72F5923BF9C;
Sat, 31 May 2025 12:22:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Vw0vbB6M"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 ACB3412B63;
Sat, 31 May 2025 12:22:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694139; cv=none; b=NJGq+q4lEqY0zGvTETdcXicCSiiMWm5lCMwqllx8FYs2n+TycIfaVmyAWNl07TYeJum3ZJ6tevaootOV2NV9KYZAtgpJS7NWXIkcL9pXXzl7cUDiUfqYcMrhZrB1qdVFt1vs1Yn/Z2TLcnix30Lu4KBa8sCrRCqphEMEwc+63hg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694139; c=relaxed/simple;
bh=c+8ZXnRrXYl4BAukTBnGw3niuz/E3mzQnIUtiZYPVVs=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Mc6sOgKVnoOqQkzsA5sIPTxioKU5GJw4EZZBZQ3qMY6Ugp4syGuyGZ7g+SGtZaHE9WOEG9lesfw4VvOIsCBAOOptRGWSuk4DW7HhORjrYIGFZjAjpCvsMI3qNh+4X2MIGbmr9nCAalpF9V1bAjdwVoP6IWy/vCi1VMtpP4mdh6U=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Vw0vbB6M; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C236CC4CEEF;
Sat, 31 May 2025 12:22:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694139;
bh=c+8ZXnRrXYl4BAukTBnGw3niuz/E3mzQnIUtiZYPVVs=;
h=From:Date:Subject:To:Cc:From;
b=Vw0vbB6MST6xdt5/LQw4H+Mi9Yty1C2BBDjPi4eFmVXanb4yZlK+9sudFLT2Y/vSM
R9SJY/7yHf0qfOia8ZPL84uZio4gRolRPO+0KTqLCOQplH3srPOOKkvSp8ZW2wCzyV
3QMTnF0JRYU/osZ/GiWQ8KECb0E34dkQcw6264OjBTtxdQw9cYeA+n3F3TAvPittrz
0JISQ2cB9KOCXz2QK5D2tBsBqqIJ6MudFR2G4c2uLmCLHM1MImbwAOC9iMaRAWxuey
aymOcA5CinC/c3Y2woM463GLqROwkfm81tZFVGNSpaqSfPWL6yvzjLNYC/+q7zQd/L
+/Y7JZSmhCu3g==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:22:00 +0200
Subject: [PATCH] media: venus: Fix MSM8998 frequency table
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-topic-venus_98_tbl-v1-1-68e5523a39dc@xxxxxxxxxxxxxxxx>
X-B4-Tracking: v=1; b=H4sIAGf0OmgC/x3M3wpAMBSA8VfRubaaP8fwKpKYg1MabbOUvLvl8
nfxfQ84skwO2uQBS4EdHyYiSxPQ22hWEjxHQy5zlFhkwh8naxHIXG5o6sFPu0BVYaVwLDUhxPC
0tPD9T7v+fT8gveIqZAAAAA==
X-Change-ID: 20250531-topic-venus_98_tbl-5765675a4ce5
To: Vikash Garodia <quic_vgarodia@xxxxxxxxxxx>,
Dikshita Agarwal <quic_dikshita@xxxxxxxxxxx>,
Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>,
Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>,
Stanimir Varbanov <stanimir.k.varbanov@xxxxxxxxx>,
Marc Gonzalez <mgonzalez@xxxxxxxxxx>,
Pierre-Hugues Husson <phhusson@xxxxxxxxxx>,
Hans Verkuil <hverkuil@xxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-media@xxxxxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694135; l=1429;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=gomQyg18tv6Q8Zc9/9SZYn+kdr7+yotxTgG692Uq7VY=;
b=gPb55TPnGD4sQ4G2MDcWNEPl6U3XWKXNImSwmeGOoWybZ2rCj2dvJQvPh0NhtZUSmKSuuSqWp
R08hF+IarNDAMk/nRr+l83rr5t9oT30MvUVSDaScsWrK55cd78ZvosF
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Fill in the correct data for the production SKU.

Fixes: 193b3dac29a4 ("media: venus: add msm8998 support")
Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
drivers/media/platform/qcom/venus/core.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index d305d74bb152d21133c4dfa23805b17274426a5c..2bb514c322692475ed58198e17f906f894d81cf4 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -709,11 +709,11 @@ static const struct venus_resources msm8996_res = {
};

static const struct freq_tbl msm8998_freq_table[] = {
- { 1944000, 465000000 }, /* 4k UHD @ 60 (decode only) */
- { 972000, 465000000 }, /* 4k UHD @ 30 */
- { 489600, 360000000 }, /* 1080p @ 60 */
- { 244800, 186000000 }, /* 1080p @ 30 */
- { 108000, 100000000 }, /* 720p @ 30 */
+ { 1728000, 533000000 }, /* 4k UHD @ 60 (decode only) */
+ { 1036800, 444000000 }, /* 2k @ 120 */
+ { 829440, 355200000 }, /* 4k @ 44 */
+ { 489600, 269330000 },/* 4k @ 30 */
+ { 108000, 200000000 }, /* 1080p @ 60 */
};

static const struct reg_val msm8998_reg_preset[] = {

---
base-commit: 2a628f951ed54c30a232230b5b58349d2a8dbb11
change-id: 20250531-topic-venus_98_tbl-5765675a4ce5

Best regards,
--
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>



Return-Path: <linux-kernel+bounces-669092-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 383CB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:23:38 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id DD68F3BF203
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:23:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1EC8823BD1D;
Sat, 31 May 2025 12:23:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="D6S0NsHY"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 4AD2B23815B;
Sat, 31 May 2025 12:23:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694209; cv=none; b=U8Eo6eZx/zntFzfv9IrqB6Asx6hBwa6AXGPIrc7mVk7zpkmJfEtavTkN6JqmBAmAkj79aLN6UMAIrX/nn8jFvGRPXVeWv2dGM9dWKWAWMzp4HhupJvLb6B765Na+BHYhi7YPl0Wmo2m6u/Fv7HOoNlrs28RBl/PaoqV2+nPAb0w=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694209; c=relaxed/simple;
bh=QWLkZ5kheg/ARX1/KT1tH/POfsJpTnSnthqFZliEbE4=;
h=Mime-Version:Content-Type:Date:Message-Id:From:To:Cc:Subject:
References:In-Reply-To; b=kXZXvBEqfR+QkiLQnpWP82mCmGAvLYyPVdlEotacqhm2KFnonl1KzxV4MVJYzPWF2z9agd0p8w9wQmdkuqqNEL4YIRg68z6xddz5iF8Sv+feEEGeMb2vsHEA04bhY2T0+JzL2SFAzzGJy5kJG03CEg7wTU2Gn79ndXoJad1tYvw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=D6S0NsHY; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7583BC4CEE3;
Sat, 31 May 2025 12:23:25 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694208;
bh=QWLkZ5kheg/ARX1/KT1tH/POfsJpTnSnthqFZliEbE4=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=D6S0NsHY9Qx7yJQp8IlDOylqwH66QIc0zUrMC4TZ3PEMebZCFnl2YiwW/Wk288pJe
du43UL6BKHBR5iFm2fZ7XPf7/0DsQ7C/OUJDEGzptO0otwIyjPn5geLMD5jStcCT+c
ZYspdnVBjjZCEHnFTHt+MAnww+qxZ6abdZu3bc7wuez9Q0YUFxV5RRPYCYzzXWTOc5
mSP4Pof+xdy1MRP+OnHqikmDinVUxoUvf28zDhAWXXN/RbEFhIwoZQjMQBFlt31JiT
DSwLm4hIOiIpvXi+yK5U7RamDYICV1zQCoDOrdNhAY9a52vsWdR62qf9zqVBLgXqIv
XxOrZ+YA1MQ/Q==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 14:23:23 +0200
Message-Id: <DAACCYW3QRQE.1O75L2SHJYVPM@xxxxxxxxxx>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Christian Schrefl" <chrisi.schrefl@xxxxxxxxx>, "Miguel Ojeda"
<ojeda@xxxxxxxxxx>, "Danilo Krummrich" <dakr@xxxxxxxxxx>, "Alex Gaynor"
<alex.gaynor@xxxxxxxxx>, "Boqun Feng" <boqun.feng@xxxxxxxxx>, "Gary Guo"
<gary@xxxxxxxxxxx>, =?utf-8?q?Bj=C3=B6rn_Roy_Baron?=
<bjorn3_gh@xxxxxxxxxxxxxx>, "Andreas Hindborg" <a.hindborg@xxxxxxxxxx>,
"Alice Ryhl" <aliceryhl@xxxxxxxxxx>, "Trevor Gross" <tmgross@xxxxxxxxx>,
"Arnd Bergmann" <arnd@xxxxxxxx>, "Greg Kroah-Hartman"
<gregkh@xxxxxxxxxxxxxxxxxxx>, "Lee Jones" <lee@xxxxxxxxxx>, "Daniel
Almeida" <daniel.almeida@xxxxxxxxxxxxx>
Cc: =?utf-8?q?Gerald_Wisb=C3=B6ck?= <gerald.wisboeck@xxxxxxxxxxx>,
<rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 2/3] rust: miscdevice: add additional data to
MiscDeviceRegistration
X-Mailer: aerc 0.20.1
References: <20250530-b4-rust_miscdevice_registrationdata-v4-0-d313aafd7e59@xxxxxxxxx> <20250530-b4-rust_miscdevice_registrationdata-v4-2-d313aafd7e59@xxxxxxxxx>
In-Reply-To: <20250530-b4-rust_miscdevice_registrationdata-v4-2-d313aafd7e59@xxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri May 30, 2025 at 10:46 PM CEST, Christian Schrefl wrote:
> @@ -45,32 +46,46 @@ pub const fn into_raw<T: MiscDevice>(self) -> binding=
s::miscdevice {
> /// # Invariants
> ///
> /// `inner` is a registered misc device.
> -#[repr(transparent)]
> +#[repr(C)]

Why do we need linear layout? `container_of!` also works with the `Rust`
layout.

> #[pin_data(PinnedDrop)]
> -pub struct MiscDeviceRegistration<T> {
> +pub struct MiscDeviceRegistration<T: MiscDevice> {
> #[pin]
> inner: Opaque<bindings::miscdevice>,
> + #[pin]
> + data: Opaque<T::RegistrationData>,
> _t: PhantomData<T>,

No need to keep the `PhantomData` field around, since you're using `T`
above.

> }
> =20
> -// SAFETY: It is allowed to call `misc_deregister` on a different thread=
from where you called
> -// `misc_register`.
> -unsafe impl<T> Send for MiscDeviceRegistration<T> {}
> -// SAFETY: All `&self` methods on this type are written to ensure that i=
t is safe to call them in
> -// parallel.
> -unsafe impl<T> Sync for MiscDeviceRegistration<T> {}
> +// SAFETY:
> +// - It is allowed to call `misc_deregister` on a different thread from =
where you called
> +// `misc_register`.
> +// - Only implements `Send` if `MiscDevice::RegistrationData` is also `S=
end`.
> +unsafe impl<T: MiscDevice> Send for MiscDeviceRegistration<T> where T::R=
egistrationData: Send {}
> +
> +// SAFETY:
> +// - All `&self` methods on this type are written to ensure that it is s=
afe to call them in
> +// parallel.
> +// - `MiscDevice::RegistrationData` is always `Sync`.
> +unsafe impl<T: MiscDevice> Sync for MiscDeviceRegistration<T> {}

I would feel better if we still add the `T::RegistrationData: Sync`
bound here even if it is vacuous today.

> impl<T: MiscDevice> MiscDeviceRegistration<T> {
> /// Register a misc device.
> - pub fn register(opts: MiscDeviceOptions) -> impl PinInit<Self, Error=
> {
> + pub fn register(
> + opts: MiscDeviceOptions,
> + data: impl PinInit<T::RegistrationData, Error>,
> + ) -> impl PinInit<Self, Error> {
> try_pin_init!(Self {
> + data <- Opaque::pin_init(data),
> inner <- Opaque::try_ffi_init(move |slot: *mut bindings::mis=
cdevice| {
> // SAFETY: The initializer can write to the provided `sl=
ot`.
> unsafe { slot.write(opts.into_raw::<T>()) };
> =20
> - // SAFETY: We just wrote the misc device options to the =
slot. The miscdevice will
> - // get unregistered before `slot` is deallocated because=
the memory is pinned and
> - // the destructor of this type deallocates the memory.
> + // SAFETY:
> + // * We just wrote the misc device options to the slot. =
The miscdevice will
> + // get unregistered before `slot` is deallocated becau=
se the memory is pinned and
> + // the destructor of this type deallocates the memory.
> + // * `data` is Initialized before `misc_register` so no =
race with `fops->open()`
> + // is possible.
> // INVARIANT: If this returns `Ok(())`, then the `slot` =
will contain a registered
> // misc device.
> to_result(unsafe { bindings::misc_register(slot) })
> @@ -93,13 +108,24 @@ pub fn device(&self) -> &Device {
> // before the underlying `struct miscdevice` is destroyed.
> unsafe { Device::as_ref((*self.as_raw()).this_device) }
> }
> +
> + /// Access the additional data stored in this registration.
> + pub fn data(&self) -> &T::RegistrationData {
> + // SAFETY:
> + // * No mutable reference to the value contained by `self.data` =
can ever be created.
> + // * The value contained by `self.data` is valid for the entire =
lifetime of `&self`.

Please add type invariants for these two requirements.

> + unsafe { &*self.data.get() }
> + }
> }
> =20
> #[pinned_drop]
> -impl<T> PinnedDrop for MiscDeviceRegistration<T> {
> +impl<T: MiscDevice> PinnedDrop for MiscDeviceRegistration<T> {
> fn drop(self: Pin<&mut Self>) {
> // SAFETY: We know that the device is registered by the type inv=
ariants.
> unsafe { bindings::misc_deregister(self.inner.get()) };
> +
> + // SAFETY: `self.data` is valid for dropping and nothing uses it=
anymore.

Ditto.

> + unsafe { core::ptr::drop_in_place(self.data.get()) };
> }
> }
> =20
> @@ -109,6 +135,13 @@ pub trait MiscDevice: Sized {
> /// What kind of pointer should `Self` be wrapped in.
> type Ptr: ForeignOwnable + Send + Sync;
> =20
> + /// The additional data carried by the [`MiscDeviceRegistration`] fo=
r this [`MiscDevice`].
> + /// If no additional data is required than the unit type `()` should=
be used.
> + ///
> + /// This data can be accessed in [`MiscDevice::open()`] using
> + /// [`MiscDeviceRegistration::data()`].
> + type RegistrationData: Sync;

Why do we require `Sync` here?

We might want to give this a shorter name?

---
Cheers,
Benno

> +
> /// Called when the misc device is opened.
> ///
> /// The returned pointer will be stored as the private data for the =
file.


Return-Path: <linux-kernel+bounces-669093-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3FCE041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:25:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 4CA231BA00C3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:25:19 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 56F0923BD1D;
Sat, 31 May 2025 12:24:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XGthnRo1"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 98C7B1EDA02;
Sat, 31 May 2025 12:24:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694295; cv=none; b=Oai4HwHW9ikkrY7LB7caZf4vLShWAWephSPruKPhDnRGoqcmm57cRWI56Ck7ityIkj6177u4g72SAn5rPuwzu8DYv//wzlfr28cRGyKDbxaDH8ddGXloHOvGZ57lNG1UpE9Y0X4+4/nee6QQ+0mbBzyjkwR0DT+dlk+m65klHDc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694295; c=relaxed/simple;
bh=zjDPoVOSfkcrVTFow4R0P40L1Sy8ujWeHLMMwa94e+M=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=CrEHPZd2SnR9492v/fwXl6QQFGb4Liuyt8rN6Wj8IsNp4WUHYwzeInsn2z0bQxh+OGA8RMAUfn7GfyZziXI1po0ldNEyc1iittxzW9zNym2bkuKcNTHV/Rbj5egZ3bEVPPWrK5axF/2uU0cDwtNedmljZ+XkZDSZ/iyHJYtOQwY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XGthnRo1; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0B069C4CEE3;
Sat, 31 May 2025 12:24:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694295;
bh=zjDPoVOSfkcrVTFow4R0P40L1Sy8ujWeHLMMwa94e+M=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=XGthnRo1MzoqjktqwkqFm4ou8/ncQIGwt1L6vyGQnOwbPDj9vqHsXkrinolnhWmuE
WwhONxdMNxM5Hd0i0ZB3+FlItLVuCAs3rldE7M8lKhKVjiRv24nRSsOcEz6DO7aBF6
Rct/oWzuI4eKEsZO3Xb1/JCNCR+bbdjkKILiU5tyo9XKlrDvbrmz4HOc6IktX55VzJ
PJoSLvfjWVWFk+bCBJHJIKCZz9PYMIkY5fSEy+K4JI9QGtC40GVmxo22udt0Q6/sUD
xrnCr3EMUMmR5PRqydTNbzuMnyIGqlALXA00Abnpj7kuOiMWlpFtoPkpZlbq25bjSP
B04weEmWl5j+w==
Date: Sat, 31 May 2025 14:24:49 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: gregkh@xxxxxxxxxxxxxxxxxxx, rafael@xxxxxxxxxx, ojeda@xxxxxxxxxx,
alex.gaynor@xxxxxxxxx, boqun.feng@xxxxxxxxx, gary@xxxxxxxxxxx,
bjorn3_gh@xxxxxxxxxxxxxx, benno.lossin@xxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
chrisi.schrefl@xxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH 7/7] rust: sample: misc: implement device driver sample
Message-ID: <aDr1EWOIeDVgjau9@pollux>
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-8-dakr@xxxxxxxxxx>
<DA9RRZVPZSMW.1LGW9H4G0RLT5@xxxxxxxxxx>
<aDowAzvEvrQcella@pollux>
<DAA6ZTTNP0CM.270XX92YOFGWB@xxxxxxxxxx>
<aDrZ7ma_aNki3FRz@pollux>
<DAABXF5QDYF0.21V01UJODPM89@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <DAABXF5QDYF0.21V01UJODPM89@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 02:03:05PM +0200, Benno Lossin wrote:
> On Sat May 31, 2025 at 12:29 PM CEST, Danilo Krummrich wrote:
> > On Sat, May 31, 2025 at 10:11:08AM +0200, Benno Lossin wrote:
> >> On Sat May 31, 2025 at 12:24 AM CEST, Danilo Krummrich wrote:
> >> > On Fri, May 30, 2025 at 10:15:37PM +0200, Benno Lossin wrote:
> >> >> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
> >> >> > +config SAMPLE_RUST_MISC_DEVICE_WITH_PARENT
> >> >> > + bool "Create a misc device with a parent device"
> >> >> > + depends on SAMPLE_RUST_MISC_DEVICE
> >> >> > + default n
> >> >> > + help
> >> >> > + Say Y here if you want the misc device sample to create a misc
> >> >> > + device with a parent device.
> >> >> > +
> >> >>
> >> >> Why not create a separate file? The `cfg`s might confuse newcomers
> >> >> looking at the sample.
> >> >
> >> > It would be a lot of duplicated code, unless we really *only* exercise the
> >> > device creation and registration part, which would be a bit unfortunate, given
> >> > that this sample is also a pretty good test.
> >>
> >> We could separate the common parts into a single file and then
> >> `include!` that file from the two samples. (Or if the build system
> >> supports multi-file samples then just use that, but my gut feeling is
> >> that it doesn't)
> >
> > The samples are normal modules, where we can have multiple files. But I don't
> > see how that helps.
> >
> > `include!` works, but I'm not sure it's that much better.
> >
> > Another option would be to put the `cfg` on the module!() macro itself and have
> > two separate module types, this way there is only a `cfg` on the two module!()
> > invocations.
>
> How about we do it like this:
>
> We create samples/rust/rust_misc_device/{module.rs,parent.rs,common.rs}
> and `module.rs`/`parent.rs` are the two entry points. Both of these
> files:
> * include `common.rs` using `include!` at the very top.
> * define a `RustMiscDeviceModule` struct and implmement `InPlaceModule`
> for it.
>
> The module-level docs, common imports constants, `module!` invocation &
> other definitions stay in `common.rs`.
>
> This way we can build them at the same time and have no cfgs :)

Seems reasonable to me -- let's do that then.


Return-Path: <linux-kernel+bounces-669094-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E493941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:25:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 22A5E17F441
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:25:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 979A323BF9C;
Sat, 31 May 2025 12:25:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="fX5g9FKq"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 A94D123AE87;
Sat, 31 May 2025 12:25:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694319; cv=none; b=LfZ65Ax7KLsUKX96HaPicZV9M8pYyijqO+aQdgTqs0LiRG8pLMquxi0cMetEfbuiAKARlCvkY3dr1PRv2bVH0mqknj8C047+3f60JE7EOHsd2jIX66ShnLHUpodd7GMGflPT2xjj92skxUTCNVczlpI/vxC2nEjnlLZfLXssQok=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694319; c=relaxed/simple;
bh=bcljbFcD6OznCcHMG+UE0Av+yr3cs6EZ0rxpsiywH8s=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=X840llC3UUpmns4TFWgL8rvwOVsqiQjbjNHfbhJekQ3K6R8WDUmi2K2b0qIubRVQbLY4WcegkJ0mKohe/Oes5TCpZvHOQe4QQyco7zpuLxMsp3r/sMkVmMqZng6hWEWTepQiO/RwCu1SxaxnkoB8LwHWUmF7kgOUZ8Ycb0mw0H0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=fX5g9FKq; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6A96BC4CEE3;
Sat, 31 May 2025 12:25:14 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748694315;
bh=bcljbFcD6OznCcHMG+UE0Av+yr3cs6EZ0rxpsiywH8s=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=fX5g9FKqEh0uwgHwGYgHFdyIX2T6Bl3aqr9bnCzZ994c3M/EyoTAYZQETdJXjWTJq
4L0FmcyBp9xfzKgLhno35+nl4RWKZACUUd2pCskgOhLHawepqEYbV8cGtir8P1Po9O
PLzr6rW9jxV8XiO1JxE0Njzh8of8HeULXocSoan4=
Date: Sat, 31 May 2025 14:25:11 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Timur Tabi <timur@xxxxxxxxxx>
Cc: Alexandre Courbot <acourbot@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>,
John Hubbard <jhubbard@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
Timur Tabi <ttabi@xxxxxxxxxx>
Subject: Re: [PATCH] rust: add basic ELF sections parser
Message-ID: <2025053109-flatterer-error-7432@gregkh>
References: <2025052932-pyramid-unvisited-68f7@gregkh>
<DA935OIFBM1H.3CMSHQ46LLG4P@xxxxxxxxxx>
<2025053047-theology-unsaid-d6ac@gregkh>
<DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh>
<DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh>
<CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
<2025053148-gore-badass-1d1d@gregkh>
<CAOZdJXVSByiwGWusdajdTVma2aC3ibZtSz9XBpRy4MJrKuxfvw@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOZdJXVSByiwGWusdajdTVma2aC3ibZtSz9XBpRy4MJrKuxfvw@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 05:17:48AM -0500, Timur Tabi wrote:
> On Sat, May 31, 2025 at 12:45â?¯AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
>
> > > IMHO, Nova should really do what Nouveau does, and just have the image
> > > parser in the driver itself, without any generic Rust code to do it.
> > > After all, what Nova needs to do with these images is driver-specific.
> >
> > Again, no, do not do any firmware image parsing in the kernel please
> > unless you can prove exactly why it MUST be done there.
>
> Nouveau is already doing all this, just in C. This entire argument is
> over a 12-line function:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau/nvkm/subdev/gsp/rm/r535/gsp.c#n1824
>
> Nouveau needs to do this in kernel space because, once it finds the
> appropriate section in the ELF image, it reads a hardware register to
> determine how to patch it:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/nouveau/nvkm/falcon/gm200.c#n342
>
> Since this hardware register cannot be read in user-space, this needs
> to be done in the kernel.

What exactly do you mean by this? That is what I have been asking, what
is the specific reason why this can't be done in userspace? What
hardware "thing" can't be read by userspace, and why not? Userspace has
access to PCI devices directly, surely there is nothing "secret" here.

> Please note that there other drivers in Linux that iterate over ELF
> sections in order to parse their firmware images:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/gpu/drm/imagination/pvr_fw_util.c#n29
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c#n925
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/remoteproc/qcom_q6v5_mss.c#n1374

As pointed out before, those have "slipped in" and should not be used to
justify continuing to do the same thing.

Again, just do it in userspace, if it's "just" 12 lines in the kernel,
then put those 12 lines in userspace and you are fine.

And the proposed patch was NOT 12 lines of rust, so please don't
conflate the two things here. That's not what we are talking about.

greg k-h


Return-Path: <linux-kernel+bounces-669095-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7C8C241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:26:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2A2D09E02DE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:25:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5E3CB23AE87;
Sat, 31 May 2025 12:26:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="YJYuRgps"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 9FF851EDA02
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:26:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694362; cv=none; b=gW+5zYk8LwrPyH952935DfbNk4fR9HkymurAvnqc5hMelpQpP4gMFTLP+KFG+B1jf3FCu54cP6JE9QpOVTTkM5vZzxzH8G4pKtj/BuY6QJ3NOY13+U79wiOeRbYhD0c4MOegWvwKcrkbKJYwHOskUr6r8mQNKfwZxdM6Cpc5Kfc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694362; c=relaxed/simple;
bh=F9HwltFBCv1seZat4nMyQQRR1pH2BkQqheckHTr46To=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=BDpMxn2pUXpCryNTZsLmFt5tN58nrLigPuYh7tpCDD2Psd7v+pelcrPmUPFsXvU4XWEMK5LFScr+igUzf5SR2DMwAYqvVPiLHegXVNTNHCuNZOd3MHVWa6LPp9ZzJeaAU1CE9P/VSN6OTWjZKXmJNScd0AsKYnw6Pi0If6UcxVM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=YJYuRgps; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AEDB8C4CEE3;
Sat, 31 May 2025 12:26:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748694362;
bh=F9HwltFBCv1seZat4nMyQQRR1pH2BkQqheckHTr46To=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=YJYuRgpsh9Lb+e6pfpSdH5FpbHmgyHfK8TnH37VWU20XOnJimp9qup4NJq8pCsYW5
FTLrfAIzsxswhbKtbfyQpasmGX7UBuLi5eRnW3vn3NMAj23ggKjGqCKuIwY4TrkJzB
nSPHTDq144AjBfZDMi8GlI7HYNdl0obE4INz85Io=
Date: Sat, 31 May 2025 14:25:59 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Thomas =?iso-8859-1?Q?Wei=DFschuh?= <thomas@xxxxxxxx>
Cc: "Rafael J. Wysocki" <rafael@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [GIT PULL] Driver core changes for 6.16-rc1
Message-ID: <2025053142-comprised-vocally-6c11@gregkh>
References: <aDcyRMojWUbAllVX@xxxxxxxxx>
<35e4b33f-d9e4-41d6-8a47-644fda5b1b7f@xxxxxxxx>
<2025052822-cavity-mortality-07d2@gregkh>
<39eaf3d6-3c69-4e06-a61e-cccc7aad578d@xxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <39eaf3d6-3c69-4e06-a61e-cccc7aad578d@xxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 01:40:13PM +0200, Thomas Weißschuh wrote:
> (trimmed the CC-list)
>
> Hi Greg,
>
> On 2025-05-28 18:29:20+0200, Greg KH wrote:
> > On Wed, May 28, 2025 at 06:16:21PM +0200, Thomas Weißschuh wrote:
> > > On 2025-05-28 17:56:52+0200, Greg KH wrote:
>
> <snip>
>
> > > > Here are the driver core / kernfs changes for 6.16-rc1.
> > > >
> > > > Not a huge number of changes this development cycle, here's the summary
> > > > of what is included in here:
> > > > - kernfs locking tweaks, pushing some global locks down into a per-fs
> > > > image lock
> > > > - rust driver core and pci device bindings added for new features.
> > >
> > > > - sysfs const work for bin_attributes. This churn should now be
> > > > completed for those types of attributes
> > >
> > > This is missing the switch away and removal of the transitional
> > > struct members, "read_new", "write_new" and "bin_attrs_new".
> > > These are the actually churny changes.
>
> <snip>
>
> > > Do you want me to resubmit it to you? Now or shortly before the end of
> > > the merge window?
> >
> > Ah, yes, those are still in my "to apply after -rc1 is out" queue, sorry
> > about that. And yes, I'll be glad to take updated versions as things
> > have changed.
>
> In case you don't see patches submitted during the merge window,
> here is the updated series:
>
> https://lore.kernel.org/lkml/20250530-sysfs-const-bin_attr-final-v3-0-724bfcf05b99@xxxxxxxxxxxxxx/
>
> Based on linux-next to make sure that all changes that could go into the
> merge window are accounted for.

I saw them, thanks! I'll look at them at the end of next week.

greg k-h


Return-Path: <linux-kernel+bounces-669096-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D537341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:27:41 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id BA7A19E28C9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:27:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9B9B523BF83;
Sat, 31 May 2025 12:27:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="orS+MvcS"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 D16591EDA02;
Sat, 31 May 2025 12:27:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694452; cv=none; b=dcF31j7W/M1nrsAhMwwocgomFdSjRlP91chMMRowf8mTGiVIg0jO783XDHQ7BGfLACWFvocZ3KZfw9J/B56SNOWBCLu5K9OY66rzHY2UrM4IRJQWtuw3VW9t00pAXcNwn9jQbZIF+kf3sYSHsFm14mJ0YmbWTG3dejtUm6cgCwE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694452; c=relaxed/simple;
bh=Ncxe6chc0002MMyRlneAVwpJpUu4Ar6EKfMAWZOg24s=;
h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=qkTl19bKvdcIzYN85LwtUW+0VpxUE0J5JeYcFeKvbReV5XRM7n++pkj/+cvBBqjzxwr2xKtaPbLUzIbUxwILtHmjb7MRnnfm3spjsTd011CJIdOt1szFgtT5lzm7MzM1Mp7S8l5/q4AkJaBb00KVOmRrgxDJRjW5/Fmu3SjT9ZM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=orS+MvcS; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9381BC4CEE3;
Sat, 31 May 2025 12:27:28 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694452;
bh=Ncxe6chc0002MMyRlneAVwpJpUu4Ar6EKfMAWZOg24s=;
h=From:Subject:Date:To:Cc:From;
b=orS+MvcS5/y5G2YhaHeeitTKxaxZh2EXIKJ+vK3bFRpTuc5ckuF1bKLokdVenUGLS
zivDVEl4+4kJfLwAf/UR6AoLQr7/BWrpAqatEPNkehhSsXgUrXTBYdkzXGiIZT1jzV
unhPNnl6OWeFUiDjJOqKjXl4yJVrgcOu/OUiMqEzWiWoJD466Xo7vxKMfePBxxevER
CPqwqnXQ84j98sfJMvDMENNbW9p2I5HiUsu9NmGETe5tRu/xo7ydobEfK81dXrf029
ScgHrWUbNM4y4vP2fhFQgQuGMNL8dCc0PB46lRYRu9aZmyXSQ/FXP7kwZZwVkw6203
Lli+qsocHziOw==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Subject: [PATCH 0/5] Add missing OPP tables for Venus on qcom/arm64
Date: Sat, 31 May 2025 14:27:18 +0200
Message-Id: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAKb1OmgC/x3MTQqAIBBA4avErBO0P6urRIjVWLNIRSuC6O5Jy
2/x3gMRA2GEPnsg4EWRnE0QeQbzpu2KjJZkKHhR87oU7HCeZnahPaNy3isd9qZipWyxayfTcCk
gtT6gofv/DuP7fhiXYV9nAAAA
X-Change-ID: 20250531-topic-venus_opp_arm64-378e98bf6071
To: Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Rajendra Nayak <quic_rjendra@xxxxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694447; l=1066;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=Ncxe6chc0002MMyRlneAVwpJpUu4Ar6EKfMAWZOg24s=;
b=Ve9i0EBxqU+t5OZ/Dukz5MVHUM1UYtfsifnpLRhW5vtP4C067ExW2zxbcUq8ged/06sYhmb4I
EIhZ5UtLxZoBlyV8kNHkP1qxcZKVt07DSoOA7HeApiq061Gq5Ypo30V
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Sparked by <20250530-add-venus-for-qcs615-v8-0-c0092ac616d0@xxxxxxxxxxx>

No external dependencies

Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
Konrad Dybcio (5):
arm64: dts: qcom: msm8916: Add Venus OPP table
arm64: dts: qcom: msm8996: Add Venus OPP table
arm64: dts: qcom: msm8998: Add Venus OPP table
arm64: dts: qcom: sdm630: Add Venus OPP table
arm64: dts: qcom: sdm845: Fix Venus OPP entries

arch/arm64/boot/dts/qcom/msm8916.dtsi | 20 ++++++++++++++++++
arch/arm64/boot/dts/qcom/msm8996.dtsi | 39 ++++++++++++++++++++++++++++-------
arch/arm64/boot/dts/qcom/msm8998.dtsi | 30 +++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/sdm630.dtsi | 35 +++++++++++++++++++++++++++++++
arch/arm64/boot/dts/qcom/sdm845.dtsi | 24 ++++++++++-----------
5 files changed, 128 insertions(+), 20 deletions(-)
---
base-commit: 2a628f951ed54c30a232230b5b58349d2a8dbb11
change-id: 20250531-topic-venus_opp_arm64-378e98bf6071

Best regards,
--
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>



Return-Path: <linux-kernel+bounces-669097-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DC6FE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:27:54 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id C14359E29DE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:27:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2B41523C50D;
Sat, 31 May 2025 12:27:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="gNmxc/Qf"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 673FB1EDA02;
Sat, 31 May 2025 12:27:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694457; cv=none; b=qv5XAJT5pwcEZIW2pKT4JDhLjMtWh/G40uL8omosMqo8gGZ29xYG2xsQ69ok/rstzFV8aLibidnyQVhL+cXJfFW9nIrsEi7ShpGrQjeMOdMys0pnTcrR6Eu5ywZ5bG5rZ7Pls11qrW8pYsmUCc0uX4BFcQPyvMlZuxCzjMgFkzU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694457; c=relaxed/simple;
bh=yz8tt4Bpe7P5wcr9hZe8/onfR3J+A8Fn4wRTEIwzKZU=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=Z3Zf8s97yPQaGg7N+umT9NkaCms6GEpDTfhraqKMo19KBnAa5GyypIFR4VZF4kmir3IXr5jFtmt9b/igqjGxxhlq+wNHryDJzWL3XnvJNtwSx1O/wJANkg1XQjYcXs0ce1jOmWDB3TG3bkOKUxnKbdgXaKmfVyBeSmuYoZWPqeE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=gNmxc/Qf; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id F03DEC4CEE7;
Sat, 31 May 2025 12:27:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694456;
bh=yz8tt4Bpe7P5wcr9hZe8/onfR3J+A8Fn4wRTEIwzKZU=;
h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
b=gNmxc/QfKnfmr9QtOAEMftwGPUHMjJgIYpJG8ZuDO4neRNkkX0KA+z4CNF8WSp98o
0R8UOV7Q96EqcPOKHOsnSSFL7WgNZXVPjmniMsSu4Ickh7k+jBqfmF1X+Q+FkTQW2b
Ts28NFwrDezSvRfs23Eh2rl6oFz5pYmRjpEfTL0MbrvczaoO438f5MpCuWyu+LtDgb
GTJbFa8INvV6KcrUtuy5lrd1B/3P01kq63D2KhjGBHvlyGNjGdrvsXMqJoZsOTvilw
3JkICAQjUWaL4VBWrishXxbyjTknD2qQWrB7kvzYh2HKy7gKx7CpOwXY2dadhNcvQ0
03PN78JDLFfFQ==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:27:19 +0200
Subject: [PATCH 1/5] arm64: dts: qcom: msm8916: Add Venus OPP table
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-topic-venus_opp_arm64-v1-1-54c6c417839f@xxxxxxxxxxxxxxxx>
References: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
To: Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Rajendra Nayak <quic_rjendra@xxxxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694448; l=1465;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=fIhoSyVtynAkVAixTwm21sdXpM1mvhm8GRPJMHak1Gw=;
b=HPA3L5V9U+DUQpFC+9mCjHQaNglacI+kXaMlN5rT0d6KaHA+qVsmTrN9JHunTdvJtZy7QxkZy
SsP43Yb9919CTGTDEQFBux0fpF92YtcldV2cIgOO4cQUEj7RBNjR71V
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Describe the DVFS levels explicitly.

Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/msm8916.dtsi | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index de9fdc0dfc5f9b223ee252b80fc18d45c9bb6582..6749facabdc512879e17061b03d0ed9e41671642 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -1827,6 +1827,7 @@ venus: video-codec@1d00000 {
reg = <0x01d00000 0xff000>;
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&gcc VENUS_GDSC>;
+ operating-points-v2 = <&venus_opp_table>;
clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
<&gcc GCC_VENUS0_AHB_CLK>,
<&gcc GCC_VENUS0_AXI_CLK>;
@@ -1835,6 +1836,25 @@ venus: video-codec@1d00000 {
memory-region = <&venus_mem>;
status = "disabled";

+ venus_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-100000000 {
+ opp-hz = /bits/ 64 <100000000>;
+ required-opps = <&rpmpd_opp_svs_soc>;
+ };
+
+ opp-160000000 {
+ opp-hz = /bits/ 64 <160000000>;
+ required-opps = <&rpmpd_opp_nom>;
+ };
+
+ opp-228570000 {
+ opp-hz = /bits/ 64 <228570000>;
+ required-opps = <&rpmpd_opp_super_turbo>;
+ };
+ };
+
video-decoder {
compatible = "venus-decoder";
};

--
2.49.0



Return-Path: <linux-kernel+bounces-669098-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 23D7B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:28:11 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id ED0991BA0A14
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:28:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B0D4623C8AA;
Sat, 31 May 2025 12:27:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="XY2kD4IA"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E958D1EDA02;
Sat, 31 May 2025 12:27:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694463; cv=none; b=n9NoY9d0LHbG/m17kxHWRasPSIisN0VP4k/EcztMdJtXw3LefnWC8g9UvCEnQMfGh2E8h2tyoxrJ4F/LwPvGPOd06RjK1ekmgsqULWeWHtW6UXyBv0UVaT5AYwwctaeCPEpl8e9OZ8Bhukq8MLPxUJ6bRTLPCzMiF0A6FnLu6Sc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694463; c=relaxed/simple;
bh=Pao8pnOWWyQ6agK8/F33FMjbR7zODvlIga6VAVYclV0=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=AKoljcdTt0OR4o6tXfIUaxKpHYG3e8eUpv+8/HO6mAteDKDEhw4IlHj4UXJUlfLbMCvOA7NB7HOwTxUq1LC6vRMVp/pOcMrXxWXBx1zCCvHlnWHlUXjFsMgC6kKWUY999LiIe1RCG7xFzoUc7n+4wi/1fJvjKkzvuCVmRanEQpM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=XY2kD4IA; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 84D0EC4CEE3;
Sat, 31 May 2025 12:27:37 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694461;
bh=Pao8pnOWWyQ6agK8/F33FMjbR7zODvlIga6VAVYclV0=;
h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
b=XY2kD4IAtY53KEZbBbozmWiODOwUHekrsIo8l0wxlJLYBsJk4hWmHlUsd+y4zZC23
K6zB0NXvlif1yUWRdUUWTk5NjJCIGRB4JElYXY1Ahf/dmiN5Igf+aFu4rxUK8nEjvV
e4Pb8C9GF3gUUMVUqxZNDeBMxXQnBJLohaWpFe6HjfWvjgHsVBH5LNGymeIxF5JbGk
UiOfSmYcGhQIEBfMdRDHPAMTgJ8EZZ+J/yHb2JELG7QQkzgypuhfMqtUvrt9OdlfUU
Jl82MRkIdmM5b/sXz0V4AfHoXMhPpDVO+Pli9TZAYdbj6phfrTVy82gQDIbYTdjR1j
bW6dUbCCo8ctQ==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:27:20 +0200
Subject: [PATCH 2/5] arm64: dts: qcom: msm8996: Add Venus OPP table
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-topic-venus_opp_arm64-v1-2-54c6c417839f@xxxxxxxxxxxxxxxx>
References: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
To: Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Rajendra Nayak <quic_rjendra@xxxxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694448; l=2366;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=wRKMjzoSK2kOMrjP81qDbuzf9F50OOX/SsUs3T315ns=;
b=oF5nj0bYXC5XV+A2js3jCohUl2RTIpUDAEijxRQE4JlKFDlIVuL7URG77ZMQItHHE2nHqN/6c
C6D4TNpP0HYBjGIh3Bfg0tEruei98IHFSbtkSqVD+ZxLiOma8sI7UPt
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Describe the DVFS levels explicitly.

Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/msm8996.dtsi | 39 ++++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 8 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index ede851fbf628428f5740ca8add65ffc05360cc62..7bb34e60739b2e561ff5fd9e19a6e617fb601a60 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -491,27 +491,25 @@ rpmpd: power-controller {
rpmpd_opp_table: opp-table {
compatible = "operating-points-v2";

- rpmpd_opp1: opp1 {
+ rpmpd_opp_ret: opp1 {
opp-level = <1>;
};

- rpmpd_opp2: opp2 {
- opp-level = <2>;
- };
+ /* No SVS_KRAIT/SVS_LOW */

- rpmpd_opp3: opp3 {
+ rpmpd_opp_svs_soc: opp3 {
opp-level = <3>;
};

- rpmpd_opp4: opp4 {
+ rpmpd_opp_nom: opp4 {
opp-level = <4>;
};

- rpmpd_opp5: opp5 {
+ rpmpd_opp_turbo: opp5 {
opp-level = <5>;
};

- rpmpd_opp6: opp6 {
+ rpmpd_opp_super_turbo: opp6 {
opp-level = <6>;
};
};
@@ -2333,6 +2331,7 @@ venus: video-codec@c00000 {
reg = <0x00c00000 0xff000>;
interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&mmcc VENUS_GDSC>;
+ operating-points-v2 = <&venus_opp_table>;
clocks = <&mmcc VIDEO_CORE_CLK>,
<&mmcc VIDEO_AHB_CLK>,
<&mmcc VIDEO_AXI_CLK>,
@@ -2364,6 +2363,30 @@ venus: video-codec@c00000 {
memory-region = <&venus_mem>;
status = "disabled";

+ venus_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-75000000 {
+ opp-hz = /bits/ 64 <75000000>;
+ required-opps = <&rpmpd_opp_svs_soc>;
+ };
+
+ opp-150000000 {
+ opp-hz = /bits/ 64 <150000000>;
+ required-opps = <&rpmpd_opp_svs_soc>;
+ };
+
+ opp-346666667 {
+ opp-hz = /bits/ 64 <346666667>;
+ required-opps = <&rpmpd_opp_nom>;
+ };
+
+ opp-520000000 {
+ opp-hz = /bits/ 64 <520000000>;
+ required-opps = <&rpmpd_opp_turbo>;
+ };
+ };
+
video-decoder {
compatible = "venus-decoder";
clocks = <&mmcc VIDEO_SUBCORE0_CLK>;

--
2.49.0



Return-Path: <linux-kernel+bounces-669099-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D2E4941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:28:25 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 435DC1BA0C2A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:28:35 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5C40E23C4E1;
Sat, 31 May 2025 12:27:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="FVRSlNbE"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 96FC923D282;
Sat, 31 May 2025 12:27:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694465; cv=none; b=gtmFip3DcQ1+hyZasMQJ1XHHvJqaybqSO9dac7rus864jG7N9sEVlp7ve/g6Oj7IKKlojBwjoUL9kTd1KyEeyCr3vOjONbeCHP5NUlZMbG+fFvWrdulqpecv3SMqV1YMBIPHGZtNzeKI+xtYCu3+eAkGxY0JJAEir9qdSLD+2Cs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694465; c=relaxed/simple;
bh=+F1vXg/AAtz5oxl9FcYED3Q9njesbIHn0YR6CMxuNto=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=mAdbpDydEvFgU1AzlpcxqqcqDGsRy+qFAIHlSZJoUoxUtqoHvhEpVVLzguJAJ41Hpppk4pYCs1i/VwUYRXMwNY1YeeixFDPs2Cxo5NiMM0VB55Dbe6ecEqqdKtbhpaeDxtC6ciV4UXtMyHOeoLm9+RQA08QcIBjr06Ikuf4NnJU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=FVRSlNbE; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 19221C4CEE7;
Sat, 31 May 2025 12:27:41 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694465;
bh=+F1vXg/AAtz5oxl9FcYED3Q9njesbIHn0YR6CMxuNto=;
h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
b=FVRSlNbELy+GcYPIoYD3RrGuMWhGDhHsH0yHA0wPvm3nSZEP2xUyoqXo5i58MxlEn
XFYr5Z+NUFRAXUyI+csgVlQu0jhZZIxv9jxJYE4P0nu/mOkaHV6kezg1PJzrQu5gJO
A49IdyaTnUJ1K6q5wXVliYl36hJ08xLUqBXNp4gOSGa1ry+fl9lNP6JJuAxnoHNiY5
t6G8hQXUFqQeiGeVJ62DoFT8VO9+0pnw1rLZkKsiJXhSKOlOW+U/I15kg3F4zd+AEo
bwAAO9rI3/Pc3KKMh6B/55DT1xB07i99ysDHf8YmdO2NtTsPzx6QKNAyot3ELFFwYG
O6UMXLMgALJ3g==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:27:21 +0200
Subject: [PATCH 3/5] arm64: dts: qcom: msm8998: Add Venus OPP table
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-topic-venus_opp_arm64-v1-3-54c6c417839f@xxxxxxxxxxxxxxxx>
References: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
To: Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Rajendra Nayak <quic_rjendra@xxxxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694448; l=1728;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=yDZsBBZI7f9NYvTIyZujCFr+qic5oH4rSUKpCq7lZdE=;
b=hOdkHHgucquDuB0CLJ27V6Oh+BOZtt2BAk6ARwun+pKW3Inppu5dQJKQYXplBPgzhXk+WfKZE
MCznrd4oT8KCt6HJv9c1GEaNB37aa+egO/a1NMRvX00t7SlE8o1MZ+Q
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Describe the DVFS levels explicitly.

Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/msm8998.dtsi | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/msm8998.dtsi b/arch/arm64/boot/dts/qcom/msm8998.dtsi
index 58cee37cb8eecbdd43a474d548dcae1606aba6c7..76691e5b2608f33fa58b39ea338e41172a9e111d 100644
--- a/arch/arm64/boot/dts/qcom/msm8998.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8998.dtsi
@@ -3160,6 +3160,7 @@ venus: video-codec@cc00000 {
reg = <0x0cc00000 0xff000>;
interrupts = <GIC_SPI 287 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&mmcc VIDEO_TOP_GDSC>;
+ operating-points-v2 = <&venus_opp_table>;
clocks = <&mmcc VIDEO_CORE_CLK>,
<&mmcc VIDEO_AHB_CLK>,
<&mmcc VIDEO_AXI_CLK>,
@@ -3188,6 +3189,35 @@ venus: video-codec@cc00000 {
memory-region = <&venus_mem>;
status = "disabled";

+ venus_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-200000000 {
+ opp-hz = /bits/ 64 <200000000>;
+ required-opps = <&rpmpd_opp_low_svs>;
+ };
+
+ opp-269330000 {
+ opp-hz = /bits/ 64 <269330000>;
+ required-opps = <&rpmpd_opp_svs>;
+ };
+
+ opp-355200000 {
+ opp-hz = /bits/ 64 <355200000>;
+ required-opps = <&rpmpd_opp_svs_plus>;
+ };
+
+ opp-444000000 {
+ opp-hz = /bits/ 64 <444000000>;
+ required-opps = <&rpmpd_opp_nom>;
+ };
+
+ opp-533000000 {
+ opp-hz = /bits/ 64 <533000000>;
+ required-opps = <&rpmpd_opp_turbo>;
+ };
+ };
+
video-decoder {
compatible = "venus-decoder";
clocks = <&mmcc VIDEO_SUBCORE0_CLK>;

--
2.49.0



Return-Path: <linux-kernel+bounces-669100-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DEC9A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:28:39 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3A6BC1BA093F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:28:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3E13D23C4FB;
Sat, 31 May 2025 12:27:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="sCddSc3b"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 7BA7E23C4EF;
Sat, 31 May 2025 12:27:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694470; cv=none; b=f6DW3mVUvPxUtwHIzZdwbxKprVd7PigU/T9jX4c5tb4ZqPg2BBwZ4N6OlHPvBRR+Hm8esky3gKyVWV2jTVpisLV8yeTmH3eIG9x6vnMHxk4MJjQoU85fjoD/e/mVXMpyCvtCdRZL10Uj+d9ezDDrR/5cA32QSXiMa/ilx3HPGA0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694470; c=relaxed/simple;
bh=NNrpnLzrjqyBK5HogKnQfc9bVsaZZJIlyxM6FkVWPC0=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=M+Xdt4Dr6r6Sx2+03n45SODpE0wTunsBDoAvH90ROPYBwQs0jCisjL/w0qsGZmlHrSPKaEuO5O6GgpPYV2VOumeA4wF7tiTrG2ZsLVVu3hSCuAFWSZKkf/GVHUV10yIcA/WFdidmWylWxYJ/klWiQUR/9I5R0rfCru9VQ9jsk2o=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=sCddSc3b; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 15ED7C4AF0B;
Sat, 31 May 2025 12:27:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694469;
bh=NNrpnLzrjqyBK5HogKnQfc9bVsaZZJIlyxM6FkVWPC0=;
h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
b=sCddSc3baoBdsDCphGOTD6swrPmrBx5ctKzhwANr+CGLjRgIH3k8bKs/aPE/mfGSp
WMS6ekfmTHlk2FajL4CtiZyqD6xCW9+4SNrkyni6hdQX5ulw1Rtu4PG6GcK7AGfm9l
3SmX8g8hB2mzfdblLcHUmdDi0QhZC55Dx034W932x0QV8NcSXaftnms5LONS0TId9g
fp4f/GNlJWNsBwplb/9J/PKAUhY0DG2mdb6GSIm9zKb0jU7tO7+Jbz3BMlSqE9uqJU
ckRkBwL1QVBbsJqbdTWIvjS78jaql1RYuhAGYRnHYMQegDkfVuzOH0OKAzKnzlGkan
pQyyRDwiRvtfQ==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:27:22 +0200
Subject: [PATCH 4/5] arm64: dts: qcom: sdm630: Add Venus OPP table
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-topic-venus_opp_arm64-v1-4-54c6c417839f@xxxxxxxxxxxxxxxx>
References: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
To: Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Rajendra Nayak <quic_rjendra@xxxxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694448; l=1637;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=1U9ZJUS3BmSW1Kc5ga+UWTJHqsCyjs3M7onX7ZP5lv8=;
b=SmfGcrT4LgvkfySM9TZl03GI3yTj1IMZZNLZv6pQQhGFioAjErhd/ez/Xzdfbtzb5bEtyeDRr
ih18JGNGv8jCCdf82O8GmnA2OzMQKMba7Bef3gKd28rxsf8GSTomeS/
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Describe the DVFS levels explicitly.

Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/sdm630.dtsi | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sdm630.dtsi b/arch/arm64/boot/dts/qcom/sdm630.dtsi
index 8b1a45a4e56ed1ae02e5bb6e78ca6255d87add1c..445cab2ddb12ebb572788030a7913cb77e9f7f78 100644
--- a/arch/arm64/boot/dts/qcom/sdm630.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm630.dtsi
@@ -2202,8 +2202,43 @@ venus: video-codec@cc00000 {
<&mmss_smmu 0x431>;
memory-region = <&venus_region>;
power-domains = <&mmcc VENUS_GDSC>;
+ operating-points-v2 = <&venus_opp_table>;
status = "disabled";

+ venus_opp_table: opp-table {
+ compatible = "operating-points-v2";
+
+ opp-133330000 {
+ opp-hz = /bits/ 64 <133330000>;
+ required-opps = <&rpmpd_opp_low_svs>;
+ };
+
+ opp-269330000 {
+ opp-hz = /bits/ 64 <269330000>;
+ required-opps = <&rpmpd_opp_svs>;
+ };
+
+ opp-320000000 {
+ opp-hz = /bits/ 64 <320000000>;
+ required-opps = <&rpmpd_opp_svs_plus>;
+ };
+
+ opp-404000000 {
+ opp-hz = /bits/ 64 <404000000>;
+ required-opps = <&rpmpd_opp_nom>;
+ };
+
+ opp-441600000 {
+ opp-hz = /bits/ 64 <441600000>;
+ required-opps = <&rpmpd_opp_nom_plus>;
+ };
+
+ opp-518400000 {
+ opp-hz = /bits/ 64 <518400000>;
+ required-opps = <&rpmpd_opp_turbo>;
+ };
+ };
+
video-decoder {
compatible = "venus-decoder";
clocks = <&mmcc VIDEO_SUBCORE0_CLK>;

--
2.49.0



Return-Path: <linux-kernel+bounces-669101-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 41E8241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:29:09 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E251717F89B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:28:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 207E423E35B;
Sat, 31 May 2025 12:27:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="EESB5qZl"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 5C7D423E33F;
Sat, 31 May 2025 12:27:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694474; cv=none; b=eZI2zPs8PkejcCuTGa/r9gh416pcmwVENgwoAbqCYPuQaLXngspmI5dkn4y6k+hhJKRNm04w/QzXh/lWG61pmQcp6psAQ5u8UFJIYD3PMtgqaZApZiJ0NrqeKaajVuzofNVdy2PE8hq1k4QxZxs3Jg4DbwydeKC+gcA4JP2MIA0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694474; c=relaxed/simple;
bh=yZCnkZU4ApKN5ABAVzdggfWG88h4Av5rhIP1C5RtxMQ=;
h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References:
In-Reply-To:To:Cc; b=Yva04WRJjlEN5alwFLEZoT7EF1MlmEsTF8Bu2BxTp2JlkGIG1WhB62WCExonj5v9FyZeYMekvuIhYUVWR7htUVPNOkj/30tU7eeXe9DiKzL97CjkwnFdK5Qb5gK7SSUEJUFvog8Ck6/efnc95QWPxkc67Iwtv0EUYmkzmpvYGwI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=EESB5qZl; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 917EBC4CEE3;
Sat, 31 May 2025 12:27:50 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694474;
bh=yZCnkZU4ApKN5ABAVzdggfWG88h4Av5rhIP1C5RtxMQ=;
h=From:Date:Subject:References:In-Reply-To:To:Cc:From;
b=EESB5qZlGX7+MBpm+om4DGAc83HtkvRB64LD3wqh543iIpT4+Ekz/x8bdH3OR5yzl
oOnJVqCKmEpqIhxkZVpHevrsqN1ImUSUZktNBbiqsTI+Gzyzi4gETpQCgPXMzdTgc9
+4T7g0RBdXFSCRSwKckl/v1+EVONXkzvqUtlZUwTd4l5TjLZ7mGWqBubUWvM8OiLpC
1VZQI7VC0MELf6eHQuNOZW9uEWszLivLkODWEqQ7IGtREcYZew1xY8g4/z8Xy3Yean
fdYsR6xcSm8DeP+CzykO/up0F9mSTfIWjqsIzU3igH5vqpAQ1w11TXoB7/xqgxDar7
+bd7qqvRnpfHw==
From: Konrad Dybcio <konradybcio@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:27:23 +0200
Subject: [PATCH 5/5] arm64: dts: qcom: sdm845: Fix Venus OPP entries
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250531-topic-venus_opp_arm64-v1-5-54c6c417839f@xxxxxxxxxxxxxxxx>
References: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250531-topic-venus_opp_arm64-v1-0-54c6c417839f@xxxxxxxxxxxxxxxx>
To: Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Rajendra Nayak <quic_rjendra@xxxxxxxxxxx>
Cc: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
X-Mailer: b4 0.14.2
X-Developer-Signature: v=1; a=ed25519-sha256; t=1748694448; l=1835;
i=konrad.dybcio@xxxxxxxxxxxxxxxx; s=20230215; h=from:subject:message-id;
bh=JNLJKtc4vkDuPecJfLPup7DizZnsmi2MGVgJWaXnqo0=;
b=XARFExLx3TQAx3luuiRIL2X52D0ZkWmIdiTAKOCCDzn0XdwPXKy5c19RphKBtigsrpIaqLWNq
7O1Z+bgivL3A8lspKqYQnFcOYU9lIf4aTZbxXaSR1Vy4d1yJRo6XEZt
X-Developer-Key: i=konrad.dybcio@xxxxxxxxxxxxxxxx; a=ed25519;
pk=iclgkYvtl2w05SSXO5EjjSYlhFKsJ+5OSZBjOkQuEms=
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Make them aligned with both the Venus and clock drivers. The existing
ones seem to have been based on data for the non-final SKU.

Take the liberty to move the opp table subnode to retain alphabetical
order while at it.

Fixes: 137154871cf4 ("arm64: dts: qcom: sdm845: Add OPP tables and power-domains for venus")
Signed-off-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
---
arch/arm64/boot/dts/qcom/sdm845.dtsi | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/sdm845.dtsi b/arch/arm64/boot/dts/qcom/sdm845.dtsi
index 3bc8471c658bda987d6fcff3359d63b367148e89..7d22ecb908cd4dd792a36beaee0ede061c5abd0f 100644
--- a/arch/arm64/boot/dts/qcom/sdm845.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm845.dtsi
@@ -4254,14 +4254,6 @@ venus: video-codec@aa00000 {

status = "disabled";

- video-core0 {
- compatible = "venus-decoder";
- };
-
- video-core1 {
- compatible = "venus-encoder";
- };
-
venus_opp_table: opp-table {
compatible = "operating-points-v2";

@@ -4275,13 +4267,13 @@ opp-200000000 {
required-opps = <&rpmhpd_opp_low_svs>;
};

- opp-320000000 {
- opp-hz = /bits/ 64 <320000000>;
+ opp-330000000 {
+ opp-hz = /bits/ 64 <330000000>;
required-opps = <&rpmhpd_opp_svs>;
};

- opp-380000000 {
- opp-hz = /bits/ 64 <380000000>;
+ opp-404000000 {
+ opp-hz = /bits/ 64 <404000000>;
required-opps = <&rpmhpd_opp_svs_l1>;
};

@@ -4295,6 +4287,14 @@ opp-533000097 {
required-opps = <&rpmhpd_opp_turbo>;
};
};
+
+ video-core0 {
+ compatible = "venus-decoder";
+ };
+
+ video-core1 {
+ compatible = "venus-encoder";
+ };
};

videocc: clock-controller@ab00000 {

--
2.49.0



Return-Path: <linux-kernel+bounces-669102-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0DF8041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:29:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id CADDF16BF19
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:28:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6666A23F41F;
Sat, 31 May 2025 12:27:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QY8XYYPo"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 A5D1F239E69;
Sat, 31 May 2025 12:27:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694478; cv=none; b=DpZZ6wQuW+7XqXAWr6cwzBoXbrgGfDL258RamJY6GfYEbbzhi580OxjAWHsAGjwnZd2u2oI3wDx9B58v6jnuXs3WD6nRdb+nShR3m2FCv+NxNbaKODNsPIXeMSogPtEgtPWlRIY4iDOHsnY9cU6WxWCSFWezMaiJrHiiGdqAczc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694478; c=relaxed/simple;
bh=IByZ6WlZPwSQbjO0sWO/Yd7IpGttC7CWHDcGNpgLAHQ=;
h=Mime-Version:Content-Type:Date:Message-Id:To:Cc:Subject:From:
References:In-Reply-To; b=tgzXiL991xeQsXhFsPsZwHg1PKv3vXZmizjrgwpj9pHrgG2u0pLzzWQGXMAXLWxdrLhTnmQBCNeZG91joy6FryRNE2Zz3TYZQpdKosp2L1pjAg7ZoRSlfchZiMkSxrXpujnz04d1aGyc9xhLG+ITjS5R0zp1eCixtobZlECjhj4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QY8XYYPo; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1AA81C4CEE7;
Sat, 31 May 2025 12:27:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748694477;
bh=IByZ6WlZPwSQbjO0sWO/Yd7IpGttC7CWHDcGNpgLAHQ=;
h=Date:To:Cc:Subject:From:References:In-Reply-To:From;
b=QY8XYYPoDuFzVv7+ImEgRXg/Iw4+7BLUQmjYZHVmLkoU+368yc1XiUb+/HRbja4l4
ln2HXMXxYAf+3YOyoaS/C9NnZ2yHZ7XyYNF09NsWBkcxZEIRmWTcn5NOdqN+YhfGs7
jHoAKeS2R6UrrS58KKgwg+Tcwhme5Re9hx2tuKx3JC6ryl1NHIOYaNQCwMBjlPJ6es
bD6r37B+amwm+5PGX+PDRs4eErkM9FHwgXogo17AzI2WCCF/8xjJcyEIMiD+C7K+Gy
IEsYJhafuMqZ01/JqnLcBneEM6DmhSQyxcIWZIm57mnBgrEY08MUu8uuc9r0vk6eO+
QledHNfwXlKHA==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 14:27:52 +0200
Message-Id: <DAACGEDVW8D4.66KOF7PWD1I0@xxxxxxxxxx>
To: "Christian Schrefl" <chrisi.schrefl@xxxxxxxxx>, "Miguel Ojeda"
<ojeda@xxxxxxxxxx>, "Danilo Krummrich" <dakr@xxxxxxxxxx>, "Alex Gaynor"
<alex.gaynor@xxxxxxxxx>, "Boqun Feng" <boqun.feng@xxxxxxxxx>, "Gary Guo"
<gary@xxxxxxxxxxx>, =?utf-8?q?Bj=C3=B6rn_Roy_Baron?=
<bjorn3_gh@xxxxxxxxxxxxxx>, "Andreas Hindborg" <a.hindborg@xxxxxxxxxx>,
"Alice Ryhl" <aliceryhl@xxxxxxxxxx>, "Trevor Gross" <tmgross@xxxxxxxxx>,
"Arnd Bergmann" <arnd@xxxxxxxx>, "Greg Kroah-Hartman"
<gregkh@xxxxxxxxxxxxxxxxxxx>, "Lee Jones" <lee@xxxxxxxxxx>, "Daniel
Almeida" <daniel.almeida@xxxxxxxxxxxxx>
Cc: =?utf-8?q?Gerald_Wisb=C3=B6ck?= <gerald.wisboeck@xxxxxxxxxxx>,
<rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 3/3] rust: miscdevice: adjust the rust_misc_device
sample to use RegistrationData.
From: "Benno Lossin" <lossin@xxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250530-b4-rust_miscdevice_registrationdata-v4-0-d313aafd7e59@xxxxxxxxx> <20250530-b4-rust_miscdevice_registrationdata-v4-3-d313aafd7e59@xxxxxxxxx>
In-Reply-To: <20250530-b4-rust_miscdevice_registrationdata-v4-3-d313aafd7e59@xxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri May 30, 2025 at 10:46 PM CEST, Christian Schrefl wrote:
> Add a second mutex to the RustMiscDevice, which is shared between all
> instances of the device using an Arc and the RegistrationData of
> MiscDeviceRegistration.
>
> This is mostly to demonstrate the capability to share data in this way.
>
> Signed-off-by: Christian Schrefl <chrisi.schrefl@xxxxxxxxx>

Two nits below, with those fixed:

Reviewed-by: Benno Lossin <lossin@xxxxxxxxxx>

> @@ -94,7 +152,6 @@
> //! return 0;
> //! }
> //! ```
> -

Let's keep this newline.

> use core::pin::Pin;
> =20
> use kernel::{

> @@ -193,7 +263,6 @@ fn ioctl(me: Pin<&RustMiscDevice>, _file: &File, cmd:=
u32, arg: usize) -> Result
> Ok(0)
> }
> }
> -

This one too.

---
Cheers,
Benno

> #[pinned_drop]
> impl PinnedDrop for RustMiscDevice {
> fn drop(self: Pin<&mut Self>) {
> @@ -204,7 +273,7 @@ fn drop(self: Pin<&mut Self>) {
> impl RustMiscDevice {
> fn set_value(&self, mut reader: UserSliceReader) -> Result<isize> {
> let new_value =3D reader.read::<i32>()?;
> - let mut guard =3D self.inner.lock();
> + let mut guard =3D self.unique.lock();
> =20
> dev_info!(
> self.dev,


Return-Path: <linux-kernel+bounces-669104-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 87D3441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:29:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 34B7B9E35B9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:29:08 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 70B2823BD1F;
Sat, 31 May 2025 12:29:24 +0000 (UTC)
Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194])
(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 18E565674E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:29:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.194
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694564; cv=none; b=Fh1CiQA79cp/Oc7DpfOVCpKBHidDkUwhetwXjYNcTST8STX4rOdx9eRKNrO6QTaIBDTaw9lLrcVOti1monDVx7MEeZLfhDh6jYr8yiO66r+DgOFaCimLvkXJ0/Sj/a8PPikzeLMN0AvUkUicPgfSCaziPoMpREK4OEr6mz7Ang8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694564; c=relaxed/simple;
bh=Yg9kC64CMtNIIlt3Uj0hiP5VPJ5Z4qwfGaD2Qr7TK2E=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=CFKObiga4XWGCQny1rcvgVOIOIhd9ALeKN0sHQw6v1uFFXrwQXX7mr90j91/w+bGFOtNY+EmGXPKiu/q0XXgpwMqCxAHfdX6hp1msNBd4cra6oDmfjXFEd9eqSHjN9LUchocd3F32QBmqVa9wXFGQTqk38KcTh9boE/HzsrkP5c=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr; spf=pass smtp.mailfrom=ghiti.fr; arc=none smtp.client-ip=217.70.183.194
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ghiti.fr
Received: by mail.gandi.net (Postfix) with ESMTPSA id 0A7C743192;
Sat, 31 May 2025 12:29:10 +0000 (UTC)
Message-ID: <58244005-b071-4e21-ade1-8cdf4b35664f@xxxxxxxx>
Date: Sat, 31 May 2025 14:29:10 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/2] riscv: process: use unsigned int instead of unsigned
long for put_user()
To: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= <cleger@xxxxxxxxxxxx>,
linux-riscv@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx>,
Palmer Dabbelt <palmer@xxxxxxxxxxx>, Albert Ou <aou@xxxxxxxxxxxxxxxxx>
References: <20250530205658.624195-1-cleger@xxxxxxxxxxxx>
<20250530205658.624195-2-cleger@xxxxxxxxxxxx>
Content-Language: en-US
From: Alexandre Ghiti <alex@xxxxxxxx>
In-Reply-To: <20250530205658.624195-2-cleger@xxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-GND-State: clean
X-GND-Score: -100
X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudeltdculddtuddrgeefvddrtddtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepkfffgggfuffvvehfhfgjtgfgsehtkeertddtvdejnecuhfhrohhmpeetlhgvgigrnhgurhgvucfihhhithhiuceorghlvgigsehghhhithhirdhfrheqnecuggftrfgrthhtvghrnheptdeguefhhfevueejteevveeikeelkedvffdufeelveeggfeikeekgfeghfdttdevnecukfhppedujeeirddugeejrddugeehrdeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedujeeirddugeejrddugeehrdeggedphhgvlhhopegludelvddrudeikedruddrudehfegnpdhmrghilhhfrhhomheprghlvgigsehghhhithhirdhfrhdpnhgspghrtghpthhtohepiedprhgtphhtthhopegtlhgvghgvrhesrhhivhhoshhinhgtrdgtohhmpdhrtghpthhtoheplhhinhhugidqrhhishgtvheslhhishhtshdrihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehprghulhdrfigrlhhmshhlvgihsehsihhfihhvvgdrtghomhdprhgtphhtthhopehprghlmhgvrhesuggrsggsv
ghlthdrtghomhdprhgtphhtthhopegrohhusegvvggtshdrsggvrhhkvghlvgihrdgvughu
X-GND-Sasl: alex@xxxxxxxx
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Clément,

On 5/30/25 22:56, Clément Léger wrote:
> The specification of prctl() for GET_UNALIGN_CTL states that the value is
> returned in an unsigned int * address passed as an unsigned long. Change
> the type to match that and avoid an unaligned access as well.
>
> Signed-off-by: Clément Léger <cleger@xxxxxxxxxxxx>
> ---
> arch/riscv/kernel/process.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c
> index 15d8f75902f8..9ee6d816b98b 100644
> --- a/arch/riscv/kernel/process.c
> +++ b/arch/riscv/kernel/process.c
> @@ -57,7 +57,7 @@ int get_unalign_ctl(struct task_struct *tsk, unsigned long adr)
> if (!unaligned_ctl_available())
> return -EINVAL;
>
> - return put_user(tsk->thread.align_ctl, (unsigned long __user *)adr);
> + return put_user(tsk->thread.align_ctl, (unsigned int __user *)adr);
> }
>
> void __show_regs(struct pt_regs *regs)


Reviewed-by: Alexandre Ghiti <alexghiti@xxxxxxxxxxxx>

Thanks,

Alex



Return-Path: <linux-kernel+bounces-669103-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3E5AA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:29:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0C35E17D28F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:29:09 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1E10A23C390;
Sat, 31 May 2025 12:28:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="HffvQzyw"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 59BC7237163;
Sat, 31 May 2025 12:28:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694535; cv=none; b=pN9K4hILIACf+WFXGRsY5c5xYoTPSQU5/2Bwl63TYPAWEu8Yv0rjZJNokmbhfUa2w+zGvX96wAz3C9ydFNvEYxJQ0QQ68Xm7YkXW0PivY7L9JKgiX2J2KvAAnV8hH7PIK8s1yzPUCciojMoWODuRH7hkCPmQLkHh9az3FTzboCc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694535; c=relaxed/simple;
bh=mJoa3x7U+tCizGTJsmPnUc7kjQSy2vvPXrJdvKPHoeI=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=M/8+CmY9AWzuh9pn0q/+RJhvwL8QaixPSCseil7yOErNt6sEJEEALkZb8+6BPlnmWWJnhAN8P54ewE5Wt/ZP4drZK5Vzvr1Wtis3nhShZt82pMpL3y9TFOU3HyBLJky2oMUDwi16dV6P8A8WogrlMu+I4GcaeOHGH+Oao9VAChg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=HffvQzyw; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 40239C4CEE3;
Sat, 31 May 2025 12:28:54 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748694534;
bh=mJoa3x7U+tCizGTJsmPnUc7kjQSy2vvPXrJdvKPHoeI=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=HffvQzyw9fIqr5oxn9CbVtKzF85ggXdhgpR4pK0RYiby6LRFVGlaSe/fzsQC5yxiQ
fACcbchUKNozF0jMLn5+t8ixE7a46zeYukElndoFIb9KqFQ3lzUsvCKZNptWliwv7K
IR4fKm4fP/dkeVJwmqgrMhFG9txj/4UCCJAx8KoY=
Date: Sat, 31 May 2025 14:28:51 +0200
From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
To: "Vankar, Chintan" <c-vankar@xxxxxx>
Cc: Conor Dooley <conor+dt@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>, Peter Rosin <peda@xxxxxxxxxx>,
s-vadapalli@xxxxxx, danishanwar@xxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
Vignesh Raghavendra <vigneshr@xxxxxx>, Nishanth Menon <nm@xxxxxx>,
Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Subject: Re: [RFC PATCH v2 0/2] Extend mmio-mux driver to configure mux with
new DT property
Message-ID: <2025053121-sterile-doorman-57a0@gregkh>
References: <20250304102306.2977836-1-c-vankar@xxxxxx>
<f844e44e-6b71-442a-ae3c-7bbe74a908af@xxxxxx>
<2e80f6bc-2fb0-4f0d-9450-cbcf4dddca66@xxxxxx>
<2025053128-profound-importer-8436@gregkh>
<7024867d-91ac-40eb-b41f-eed811032f95@xxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <7024867d-91ac-40eb-b41f-eed811032f95@xxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 03:07:14PM +0530, Vankar, Chintan wrote:
> Hello Greg,
>
> On 5/31/2025 11:22 AM, Greg Kroah-Hartman wrote:
> > On Fri, May 30, 2025 at 10:35:24PM +0530, Vankar, Chintan wrote:
> > > Hello Greg,
> > >
> > > I have tried to implement Timesync Router node to the suitable
> > > Subsystems (Interrupt controller and Mux-controller). Thomas
> > > has provided a feedback with a reason why Timesync Router is not
> > > suitable for irqchip. But I didn't get a proper feedback for mux-
> > > controller subsystem.
> >
> > What do you mean "proper feedback"?
> >
>
> By proper feedback, I meant, from the comments I was not able to figure
> out whether Timesync Router will be acceptable in the "mux-controller"
> subsystem or not.

Did you submit a real patch to do so? Note, I know I do not read "RFC"
patches for the most part as that implies the submitter does not feel it
is ready to be merged, when I have other patches that submitters _do_
feel are ready to be merged that are still left to review.

> > > Can you please help me deciding in which subsystem I should implement
> > > it, if not mux-controller can it go in drivers/misc ?
> >
> > Why not mux? What's preventing that from happening? Why would misc be
> > better?
> >
>
> Sure, if mux-controller subsystem is acceptable, I will implement the
> Timesync Router with that and post a series.

Try it and see! We don't normally do "what if I did this" type of
review, we want to see patches that actually work.

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-669105-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 55DCE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:34:02 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 35AEB1BA13DE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:34:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0CEB823BF9C;
Sat, 31 May 2025 12:33:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="rXlKBDm7"
Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2065.outbound.protection.outlook.com [40.107.236.65])
(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 964661A2C11;
Sat, 31 May 2025 12:33:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.65
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694830; cv=fail; b=FD5/CuJ+ikqO9HZrNN+k20g/U0I9+8rHKRbdhyy+n5UEXZGFD/YKbMtrpmeFjrqvqc+VuapKBugizpZfmlXVogFSvhcMy2npTIXrHZYVSvrBWjlmk9Du965IMU0mk3479jEDy+LB02LyXXXJJ7XktbWy8y9FmUBq0GxpHIaNybs=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694830; c=relaxed/simple;
bh=sZBjLuQz6FPNZL6Fz/DiyDgGMHHx3V5PDZEPU2WiUvM=;
h=Content-Type:Date:Message-Id:To:Cc:Subject:From:References:
In-Reply-To:MIME-Version; b=Skn0M6ldymQ8ABSPby1+GywGSEiPSdsfNDeKdHYzN/++6VFsxdOGUy0567NJZYX5Ny5uO4wW/XKbAyrBxwBJvGSpgLrqxVXFgWTc5JO3I1/SVB1lJpQr5BRndqlvOb0HT1tnGq6IeoG4bvoFee+qfy7QTGT7ZJJxpmCh6zjeGLQ=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=rXlKBDm7; arc=fail smtp.client-ip=40.107.236.65
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=DGx4dS3nY8x0AIi7qs2RqEHUwaec62pUsOIsYcVGQj7XF7lsH8qX15gbB7BaB3tgP8/EhQid9lta1ymoZIZfwn7Rn5zCqYAaI9gaJOSzcfB4npI0ObC8yHShr3i/PcW8VnxTSWbw7UQLkBwoOYyMph0tHcriDcSZs01pWDUoZiqJ20pzvWpGwAtwydpjDhJrgg0zQXuWpd4eUJ9Ka+R+W0pmddDjhrVn2GYhfbmPsgghLk7KQ3E8go3I/ikmmTpT2vl6E+5QWRCnw5XaUXEPe/pdAIDxZQGgTSzuxNvx+4RvQkTrt0bCOTnN2D8XgX9GXT4k0MHv9tG31kbemZByAQ==
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=sZBjLuQz6FPNZL6Fz/DiyDgGMHHx3V5PDZEPU2WiUvM=;
b=pxy23ehWdWqnlPQZcMU6AQq78Az9TgSzh1F8JegNIL6Q4y0vga/uQVb06dOjDSQtLY4WQSNDwlk5Jgf4n02+I/hUWOCiDdzwM57hfpFLFKZbffSJrhgOC5LGPy2RkI8VCS/voeJy3dzWawWajGhxIk34EIF4lV/3iXkKkpQhRfTQHNKZtAE1zFJqUrWavQK84/eOpTEsEGvfMKvWMtj3gVcYYdD87kkmGeWMnLoJPWRG/T5dZwyiZqlbuei1iDea5Tocoj8mB8uVx28rEMrCzFOwt/zWV8jCbi5/uB6e3Af0PlmQ+RLtQnNecec5U9fJ1JVC9X+weVZ1Sv6zAIBMnA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=sZBjLuQz6FPNZL6Fz/DiyDgGMHHx3V5PDZEPU2WiUvM=;
b=rXlKBDm7GUwbDPcoxfFKrKu6poHmaDcyTvyRtw1BgVNXpYtbSKMihG+Ea4f7WC9jmi0fPW/Ze5s84fXfw2CmUTirsgnTDBimT8f4S5cnYsjVco6WqP85dds/F7SQHcZ9j85sdTkZULw6HcnfLL0X0BDiLKV1ipbTOgi46kfrL53lry4iuRhF7nuHC2fpXkwId7s4qiLQGWAnyaTWRisf+jMM+q0OUz6ObmEUl06MZJcIOhwNrv3vaCw+OJ+3eKMO6cfmhi0BaBXlafIPnQfGowUfLfhHxFhyenP9KQZKrqMYxp834KjLoYel1ca+xUx8EFMsMqhumt20pyXQuAPl+A==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by SJ2PR12MB8941.namprd12.prod.outlook.com (2603:10b6:a03:542::15) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sat, 31 May
2025 12:33:44 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sat, 31 May 2025
12:33:42 +0000
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 21:33:38 +0900
Message-Id: <DAACKTM8B9A1.3SI9LRGNMSBH3@xxxxxxxxxx>
To: "Greg KH" <gregkh@xxxxxxxxxxxxxxxxxxx>, "Timur Tabi" <timur@xxxxxxxxxx>
Cc: "Danilo Krummrich" <dakr@xxxxxxxxxx>, "John Hubbard"
<jhubbard@xxxxxxxxxx>, "Miguel Ojeda" <ojeda@xxxxxxxxxx>, "Alex Gaynor"
<alex.gaynor@xxxxxxxxx>, "Boqun Feng" <boqun.feng@xxxxxxxxx>, "Gary Guo"
<gary@xxxxxxxxxxx>, =?utf-8?q?Bj=C3=B6rn_Roy_Baron?=
<bjorn3_gh@xxxxxxxxxxxxxx>, "Benno Lossin" <benno.lossin@xxxxxxxxx>,
"Andreas Hindborg" <a.hindborg@xxxxxxxxxx>, "Alice Ryhl"
<aliceryhl@xxxxxxxxxx>, "Trevor Gross" <tmgross@xxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>, <rust-for-linux@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH] rust: add basic ELF sections parser
From: "Alexandre Courbot" <acourbot@xxxxxxxxxx>
Content-Transfer-Encoding: quoted-printable
X-Mailer: aerc 0.20.1-0-g2ecb8770224a
References: <D9Y0VJKOAQAY.2GJSAZ5II54VV@xxxxxxxxxx>
<DA8G3G918FS4.X8D7PQMT4TGB@xxxxxxxxxx>
<2025052932-pyramid-unvisited-68f7@gregkh>
<DA935OIFBM1H.3CMSHQ46LLG4P@xxxxxxxxxx>
<2025053047-theology-unsaid-d6ac@gregkh>
<DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh>
<DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh>
<CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
<2025053148-gore-badass-1d1d@gregkh>
In-Reply-To: <2025053148-gore-badass-1d1d@gregkh>
X-ClientProxiedBy: TYAPR01CA0060.jpnprd01.prod.outlook.com
(2603:1096:404:2b::24) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|SJ2PR12MB8941:EE_
X-MS-Office365-Filtering-Correlation-Id: 241191d7-ccb9-4d8b-c039-08dda03f6064
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|10070799003|366016|1800799024|7416014|376014|7053199007;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?c2pLQ0lIUTU0UTJXbXRncGFnbytNRzg0VW5FTWZmWEdpQVYwYjhzbHVWTWl5?=
=?utf-8?B?Tm5WSzV0dWdiWm1Fam5SNGxZVmJESDlOclRFY2hrM213eHVJakNLN2NUVHRS?=
=?utf-8?B?ZUN4cUs3ang1R2hkWjhoU21yTDRnRnFXUFRQTm53ZTJqQnk4UFhpbXllemhL?=
=?utf-8?B?Z1JrVGpjcGNYdWVBWkFrZGRaSitEdEEzTEJQcEdwY2ErSVJ2Njdzdk5nK2ZC?=
=?utf-8?B?dEdrVGFrd1pPckpjSFZZWnJWQS94ZFhMMDZpL2h2RGdQR1g5Zkh3V3VXb1J5?=
=?utf-8?B?YTlicjFGamZ5Rk53UFljVm9UL1JpcFZDdjZ5S3MvY1duTEtLTlZrSGpqQ0Yy?=
=?utf-8?B?cmJrM1pZNkJvZ0psVmVVQ1dUbVdkTnZvVXFoc0xzQkczZm45a1FHc3p3WGkz?=
=?utf-8?B?b3VCN0hCT0ttMzBscENjZ0NYZGVRTzcrRlFuK1Y5bWF4byt0WnBtT2FUbW0z?=
=?utf-8?B?S0t6S1l5aldlbHZSakpBUXZLS0VsSjBjSVk3dmUzL05RVDFnbFJuN0hDVklC?=
=?utf-8?B?QVMvL1Vyb1NiOENueEJqRk9Sdk8ySXlialRkbjBRTnRlbUhYeUoxV3J2aVlr?=
=?utf-8?B?VXdoTFRYUUtKbDE5aWtGeHFSc0crNDJqeHVyaFpOR0R4dG91OUJQQThQdTg3?=
=?utf-8?B?SlZnMldTMGhFOEV2SFZkMEFPcmZLRFZaeldoZXNCUFJQY2kvRktKbi9EZDNh?=
=?utf-8?B?RC8zbDBWT3dCNTFPWjdKMndTbTNUQm42eWhzSXhWU2o4ekVQNjRBaEVKRzcz?=
=?utf-8?B?VHI5c2hUUVBQai9Bckd6TFZhVVl6QkdLVjIzUi8wV2lnM1RZRklMSFEwNjRS?=
=?utf-8?B?YUl2b3NXR1hGRkNmc2ZJK2FkZUo4cHBqU2VkOTFIYTJuZ3hpYysyc3A2NE52?=
=?utf-8?B?OEsxbGVjZ3RIUDltQjF3SDd5SVloS3lZWW1lOWZlaGNuUEJReE5DQU9PS2Ny?=
=?utf-8?B?S0ZVZGQ1cEt6NzMvKzZlSTlrT0ttZVRkd2ZROWtYN3EyV2w5VHRNY3dIUGhz?=
=?utf-8?B?MVhEQ0NWT1Voa3RtZzh1WmVycE5OaWUwM0Q0Tm5zMDFjbVBzQ1podTZaMmw4?=
=?utf-8?B?WTA3RGFPZ3hVZGNGU3pKa3RZZXNJaE8xZFV4Q2lRYmVCQUsrZGZteUFBOUU0?=
=?utf-8?B?T3gwS1cySm5DelpOVDVTcHdwclhUS0dNcXZPdWJVWEpIcGVQL0Z0MTNxbFAy?=
=?utf-8?B?blYwSlJFbGxRMU9CRVJzZHg0dUY1dzNCSU5tTlRETVRqMjB6Q29kODJjdmM5?=
=?utf-8?B?ZXAwRFVTQWpmKzhxc2htWUdTK2t1WDZDa1hrM1ErTzN6ei9TZnc5TE84YXN3?=
=?utf-8?B?RlBFZWVKem9qY0ExK1RoZ01NaDVvWUoyMVdLRUJaaFlpTHhSZzVNRHJDWmh1?=
=?utf-8?B?bUt5QVNrMkkwdDlsRGgreHovSHJMMmVhT3pMaEE2WXRXeHR1MWpOd3RrRDh5?=
=?utf-8?B?ZjVPK3FFNXA2Ym9mNzNGZXN3Nld6MGtsWm9aK3pLNjZmbDRpRjRBd1lveno3?=
=?utf-8?B?eXZLSEw4RGxMSTJaUW4wTDRXeVRDRjhEZStLL2F2VERtRzBBVmc5dTFXbUhr?=
=?utf-8?B?dGhSWFFjL0w4Um9LTVpiaG02eXFydXE5TUFUNk91aFhIZmtoRVQ4cDRwUDhC?=
=?utf-8?B?azdJKzNHckMxTFNUK2tqRDUrck5yNHZCWkN5eVE3ZUhWSEhQNnBWSEFwTnA3?=
=?utf-8?B?WVd3VlJRWHViZ0hWWGF2aXhDU0dBaVpaSW5tS1RNS3RZVFYzSUFxdEg5U3Uz?=
=?utf-8?B?NmVoMGNWaHdyWUJ1bnhCM25nd2h2bkp3NUtrRkE1ZzNaSVpNSVVzL0phUWpR?=
=?utf-8?B?S1RTREFiSkdOSXJDSlFjdUNWdE9VUkFidUFzcGo3N3ZOSUdaWVJnbzRYdGJp?=
=?utf-8?B?djZLY0M2Z1hiL09EMis0NTNiQmpybXNDZVZOdUZnR2dsRGVGREs3aHI1ZWNr?=
=?utf-8?Q?tAvTekC/nAw=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(1800799024)(7416014)(376014)(7053199007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?Tml0emZmYTMwei85VEFIenhFZWFabmZ6RlFwUVplMnNpNGFzejBLQ3lGMVZa?=
=?utf-8?B?aXA2RFJxRmdnQXdkTFcwM3NnSWZYREw3SWNETXF1SXZHTWYzaE9IMWZDNkhU?=
=?utf-8?B?dTNJbC8yeTBQbUUyWEtURDBUdGh0NDY4RnIvYm1YcUFHdmFOUmROUXpKNFg3?=
=?utf-8?B?MGJ4cGlHUnowcFQzTUVRTHQ5M3N0T3hmZXVQQUJZbVYybWZjNFk1R0psRnhl?=
=?utf-8?B?eElYVzhSNE9ERmh1OVh0RGpDSDFEV0JZditsSU9sYWV2b1hSckttakhxWHZo?=
=?utf-8?B?cjByM3k0NEVIVDJxRWdPQ0JXT0gzQ2VnRUFuaFkvK0lCSWlITStRT1RsQ0FU?=
=?utf-8?B?SEhWT2haSVMyMWlMK0l6ZnNCSERaRFJHS0dVMGlDdHZVNDRYVEc1QUlybU1x?=
=?utf-8?B?cloxdXY1RjhxcXZHQjc1Ty84SFczak52cVBiVk5UdVo1cmI0aGdqem1YRzBQ?=
=?utf-8?B?WVJsM0NMNzQ3S0JxYk9sWUlrRFJuY3NTaisza2FwRDVGVUJ2ckg5TDdHbTJi?=
=?utf-8?B?U1lIbnh2Zk02aFhtQlh6aVBRSWtScC9qUlE5UGFNd0xtd292b29ueDdvWTJ4?=
=?utf-8?B?YncxOW5Ib09wRHpFbktoRStMMVhBKzNKUzFjcTh3ekdUTUJjcHVDclg1blli?=
=?utf-8?B?VG9rVG1CeklTWEhpTDEvQ3NOS3dJZ1M2TkhDcTZWL1NpUWxDNWlTWnlpOVov?=
=?utf-8?B?ZVlqR1V4TVc5T1ZJWllyYTQ5OE9ubW9wMmJWMU1WNFNDOXZ0VXFCZ1IwVjJm?=
=?utf-8?B?WFc5bkV1eTZtR3Vra3kyOUw2Mi8zRSs5ZFRTVWt6YzNHYnE3K1ErclI1QkRH?=
=?utf-8?B?QzFYVHlhK2pHRUprUVBJNUhDQVVnWDJWMGJvSGR1YS9FaFQ0RjJWRlJaWGx1?=
=?utf-8?B?WXJMYXJJc2EwbmVrUnk0dmZ1Y0NOMGxiMitiRjNweDhOeFJhT2ZYdlJEdFg0?=
=?utf-8?B?YW5qbUUwVDBwUy9VY0tXYy9ra2JOSWwyVU83Z3kvSmoxYS9JeHJ2OUFnd3hq?=
=?utf-8?B?Sk5MdWN2Yk4ralFZVkFVZmZaM0U3TElua29DWGVMSDY4MWh0VGdFYVl6SHRN?=
=?utf-8?B?WWdSWUczUXVkSFRNemNrWTMxYzV3NFlEWWlHQkUwUG83YU82b3plSmxsZ1Iz?=
=?utf-8?B?T3AwRzBJM3pzK2J6Nk5xa0pBQTJrMzk4M2lodGt1TkZwekxobytDR2VWTVRv?=
=?utf-8?B?N0Jacmw3TEZLTVUyWW0vbjBhT21JVFM2VE9vN3RrQmwvaENjQ21aZEFtL3k4?=
=?utf-8?B?MFJnSEwvOVBMTHJnWDNLV0htRlJJTFBrT0N2ZXdFNjlsbDNrU2NhN2pHVURI?=
=?utf-8?B?R251L0R0WDF3ZVVjb2oyMEMxZlp0MFN1SUgxalA4MWpuaytJQkZjNlhGYU9w?=
=?utf-8?B?T0JpSDNuTEhwb2ZTdVFxOGNaTk12MEt0ZjRhVTBmemRMNmFrT1hrQXZwdGMr?=
=?utf-8?B?ckJibnVlT2ZTSmdnbUQvbkJjdDlnQW5FWThrQkJwd2ZXbnZDR0xQYnMzTGV6?=
=?utf-8?B?emVvdWF0R0NNbER2ck1vQ0JjYlVhM0o4UjNwVjRUdlNHMkk2V3RBYzJNb0JK?=
=?utf-8?B?RlB6cXhZdFVGYVJacU85eUwrbGNDSnhwMy9MS04rcm5uR0tIT1lSQmYvU2hC?=
=?utf-8?B?ZzJCaXpRcWg5TnNEQlFkQk85OGEwNkJqYlJsblpFQmdFd2RMM1FKYWpEQ1I3?=
=?utf-8?B?S29VNWFiTGFvUXdRR01NVk5kRnVpZlN4RDFVSkpva1NPR0tsdjF3eEphTDFH?=
=?utf-8?B?d1hrUTBEWmcvMSt0bDZMQWt6N25oQzY4ZG1oNzFCSWZVSmdqL3lqVys1TVN5?=
=?utf-8?B?cWdheTg1VUQwRmxadHdlNEc2RmZmd0Mxdys4OVBuZzFzWDRrRU1TUlQzSjlX?=
=?utf-8?B?dE95Q2pzUkQ0S2JOZldQMEJ3Y1ZiOEVhajJsemE5M3NRbGJFeUlUTkNjVy9S?=
=?utf-8?B?aWpJdGVLOGd0MU9relVQZWp5bWVGMmVYTS9RZERpaE56MVFRQU5ZNFdaRVFW?=
=?utf-8?B?RmZySzZRb1QydGczcTIwbCtXQWkrdTBMWGNuaXg1cCt2N3UweENaZkJvWExa?=
=?utf-8?B?aTNPdnZVTUFBbE5YMEx6dy8rZUpaQTdObWoyZTJIemlBNVljbFdZYnhmR2d1?=
=?utf-8?B?M2FLKy9kc1lNM3FIUXg4RzRCaElDaWZ4MTNxd0Q5N3VFdHFEZXZUeFh6aGJS?=
=?utf-8?Q?q8blxuX/Uh6F9CMmYCQu6K4xa1m36hxV4e7xPCxgp4y4?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 241191d7-ccb9-4d8b-c039-08dda03f6064
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 12:33:41.9043
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: O3i1ZSmcjcz+cnQnlpUXFMIR6Y8Lz8ETbtwAwrRiW5TFdwB5Wf9CB9IZk+21PpE2zwmYEz+vF/JJpky0cQt+2w==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8941
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Greg,

On Sat May 31, 2025 at 2:45 PM JST, Greg KH wrote:
> On Fri, May 30, 2025 at 01:10:50PM -0500, Timur Tabi wrote:
>> On Fri, May 30, 2025 at 10:42=E2=80=AFAM Greg KH <gregkh@linuxfoundation=
.org> wrote:
>> >
>> > On Fri, May 30, 2025 at 11:34:02PM +0900, Alexandre Courbot wrote:
>> > > So to try to answer your question, I am not disagreeing that userspa=
ce
>> > > is capable of doing what we currently do in the kernel. My follow-up
>> > > questions to that are: how do we command userspace to do that work f=
or
>> > > us when we request the firmware, how do we provide the result to the
>> > > kernel, and is this something that distros can adopt easily? I'm hap=
py
>> > > to consider doing things this way, but would need a few pointers to =
look
>> > > into.
>> >
>> > Again, look at how your firmware for your devices in your laptop are
>> > loaded today.
>
> Note, I am talking about non-gpu firmare images here (wifi, usb
> controllers, etc.) that are using the firmware download subsystem for
> ages as examples of what to look at as to how to trigger a firmware
> image to be loaded by userspace into the device.

I would really appreciate it if you could point me precisely to one
example (a link, a function, a file) of what you are describing because
I'm starting to wonder whether we are talking about the same thing.

Previously I mentioned udev and CONFIG_FW_LOADER_USER_HELPER, but you
haven't confirmed whether that was what you had in mind or not. Assuming
that udev is involved, I tried to snoop events while a
`request_firwmare` call is performed using `udevadm monitor`, but that
revealed no event related to firmware loading. Then looking deeper into
the kernel documentation confirmed that the kernel does indeed a direct
filesystem lookup in request_firmware [1]. IOW, the kernel looks for the
requested file, and if it cannot find it it's game over. This matches my
observations with udevadm, as I tried requesting a non-existing file and
no uevent was generated. I don't see what user-space can do here.

I also tried to look up this "firmware download subsystem" you
mentioned, but couldn't find anything under that name - I suspect you
are talking about the sysfs loading mechanism, but AFAIU this depends on=20
CONFIG_FW_LOADER_USER_HELPER which doesn't seem to be widely enabled
(not on my distro at least).

What I am trying to say is that I am more than willing to look into
having this work done by user-space, but despite this conversation and
hours of research and testing I still don't have even a thread to
unravel. If you know the answer for how to do this, please share it.

[1] https://docs.kernel.org/driver-api/firmware/direct-fs-lookup.html


Return-Path: <linux-kernel+bounces-669106-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 19F6B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:35:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2FC959E4651
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:35:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EC21E23C4ED;
Sat, 31 May 2025 12:35:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="R5wT/oTZ"
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131])
(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 8957E23BCF0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:35:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694921; cv=none; b=BS9EZoinEv1cPdakZ2It7OIqXC8XJZv1TEm0N3vRTTVxpo8+zfQOfmRiXeXA0xtrxB/Erei7a6XI4VUppxbndPtZTDw3V7CLWHkYxX8iqg72UqY77kUO1DTvwjHh6n+2YDKPNTEJSQ7lwzyyUYhwJP886vRbc3YaVNChWiG+2bQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694921; c=relaxed/simple;
bh=fcsNL8Jr3V1Z+L+0UjZINlA1Qo0B6Y1X6uk25v4J7ZI=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=J1c6CVyB8o8LJl/NGY7kGNiB9ZThz93ezhQYL5aZFACvLiyGSrqtIipGC6suvvRybAH9qVcTbuA/Hjx5ZdlJRrQk5g8FaEiZFT6lRE+ZVHOwRNz+oZk94sJxPCB8EZflj0mouEUDvoSaHOrztKmnp8fGstEA4hrKWCT0TjHPE3M=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=R5wT/oTZ; arc=none smtp.client-ip=205.220.180.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279868.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54V4JVfu005804
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:35:17 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
9S0yvnR5M8oQbjjOZBfaKlPYmTY49vYzeIuyHaPRtpQ=; b=R5wT/oTZ+k/atVwz
akac9bkVfTDUZ0s9t2yQ3edFAlChnAhVDdzYFDpLJbGHP3GDJ9BIoA9rBujwqOmb
t/9O2rFJFBsxlT2lv2AATzfJalvE4xxUd80WmBfCCcSaiOWtncVAFEDlDJU+MrUD
PgzzWKp5gom8WA92G4oL7hFIQie0hY6MLsDyn2eq526obuxsXTMgAlQoRuRmdfSc
vp22AkmjLYD1+OCakBdTidTiKM18e8vipAhs3v8hL7XFf2qm4Pdz5e9YgYh6ng+L
3MiHm5UlW/6DqbsTCIzjYxTI+ZCftEg6C34xc5xmIHP2d+DWL485Zbd1xh9pTdLl
BQxXcQ==
Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytm68ntt-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:35:17 +0000 (GMT)
Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-4a42e9c8577so7767551cf.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 05:35:17 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748694916; x=1749299716;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=9S0yvnR5M8oQbjjOZBfaKlPYmTY49vYzeIuyHaPRtpQ=;
b=fGAW7VeWHMEwnlY8wlQWgYFf8cWuFojgnaK3SCFO/puipDSMjvZi1M+x6X4TwADJds
zh9SlhUCb8kA/RbYaFaFaCFlXWqhZyGlkGqFKQHpt2UQBK++1W/BhhLSr9E01N9+6VAM
UfigliUJrVpOZHHn8auXAiuG/ba5jrSq5rB70DmFgYwhwCuCXQhJcaG8LxPpCh3ir5c5
caCV86mlqqt4x/plHGmsQDBs55bM2pahHaisLee3e2p/sEDNNbDWXOzqXe/5W9zD0iy2
PvPPnkrtDnZw3nhrp9/QjqBR4KpZjo4Pz5Ovms9cqRoRditWnGx2GVs8PCR3GN3mzRGd
vDiQ==
X-Forwarded-Encrypted: i=1; AJvYcCVtCQpzfBfi6PLl6C1VwHhgAwVMSTpYZVyA5Cm9xx32pO3UyuZtXrNw+cZFMHh4NPC/VVVyiYkgD/rFs5g=@vger.kernel.org
X-Gm-Message-State: AOJu0YzGyL3/G5tOOwS1LarOHmHWkiTk78DepXgW5+bkJH0GKyH4KGr9
dWzCyKEXN4tImIxvR9uvYbS9MV6gt6VAVe4BdUSVsTh58327OeSJ2bVjTFHQ+hlCzFuQ3X3iSjE
0dCFtkWZBHKV8TbRiaQaSRjJddCNSLSlwTejMH4VZ29aAC5AGEO0aFd/cb7ly8FS3zd8=
X-Gm-Gg: ASbGncsNNJi0DCPIeXgWIjEjQ9ezBarAtBTZPlS5rdZ3dogqf/QNYlU+A8co44Qieyp
8aRc0XI4cgA3D0OmqVhKfI/5CxSNNlfzXRi8R3AVJobFSXJG5+SdDq0qLlxMQPYwFfoIOeON/OY
/8EYjNBPVpwQT5cy6FdQC0dsclJ3/Y7RqaA2o4bcPRaYYeEGv5OtM2uwzav4mdPiWWzjVrgrxRK
Dt9PfSPpCgpbXmPOP8Zz1LTuz7rx2D+7fKlJzj7sO1T+TdHdylOp0aAAT+pXex5ybNLbYCVDCkE
Y5F+1sAvXYIokqZb4LblY1dDnZ9IAqh6mbqou1bpIEQYcXvyRovcJ0q6o/8ZMzZISw==
X-Received: by 2002:a05:622a:1995:b0:47a:ecd7:6714 with SMTP id d75a77b69052e-4a44319ad30mr35732921cf.9.1748694916343;
Sat, 31 May 2025 05:35:16 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGAFHOKZwSa7Oj9a9fuVNjpeDyKERIwciylzFXlOnRCQf2AWDWhuEfkezhvglK3hxxCoL2fQA==
X-Received: by 2002:a05:622a:1995:b0:47a:ecd7:6714 with SMTP id d75a77b69052e-4a44319ad30mr35732611cf.9.1748694915801;
Sat, 31 May 2025 05:35:15 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-60566c7332bsm3179441a12.35.2025.05.31.05.35.13
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 05:35:15 -0700 (PDT)
Message-ID: <43581d09-4e30-42bc-9c5f-9c40f5d2cb39@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 14:35:12 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 7/8] arm64: dts: qcom: qcm6490-idp: Add WSA8830
speakers and WCD9370 headset codec
To: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Linus Walleij <linus.walleij@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley
<conor+dt@xxxxxxxxxx>,
Srinivas Kandagatla <srini@xxxxxxxxxx>,
Liam Girdwood <lgirdwood@xxxxxxxxx>, Mark Brown <broonie@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>
Cc: cros-qcom-dts-watchers@xxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-sound@xxxxxxxxxxxxxxx,
kernel@xxxxxxxxxxxxxxxx, Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
References: <20250527111227.2318021-1-quic_pkumpatl@xxxxxxxxxxx>
<20250527111227.2318021-8-quic_pkumpatl@xxxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250527111227.2318021-8-quic_pkumpatl@xxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDExMyBTYWx0ZWRfX5MhgD+zE3QFW
94rJ5jcrFLB3IAhnWb5aNWv8p+JekmlZgj+GQEjNBgaUAeulLkP0DB3zqd0LH3axAolZbvZJyUI
saE40CpAnNkuasrfmv2dHkCP7oY3JvTIjTNALJXOQc8yl2pQQWn3DfviauoM+BNsU1A/H3rizBC
QbZ5u3fTrv8klumrxk45ZKSa6xRkqpTLIBXk/PTWQzGLUbpt/Dl9xk8pVJ5MP/3xQ333gWRv91s
YNryKA01mdRI6oX4wn+XSXdAomecnL0/VqnUknBzarqOl3zDtCck/oSuGg/cuIzOY8ImyLgf9Ci
CqdAuz6ZTnrTgonOsbumuhRNWH4xukt8fHOC7qxxf8apUxugNi2qP6cZ/lOeCONmGYN+AhyACaD
3Ksd7VB+k3cgwXJ9e11C5++046Q/9jL2Mxk9P/yjXCEVfa6FgZorTq7WL2oOyMQP7FQikvIR
X-Authority-Analysis: v=2.4 cv=EOIG00ZC c=1 sm=1 tr=0 ts=683af785 cx=c_pps
a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=7yl-E-j_GsxE4UPiD6YA:9
a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 a=TjNXssC_j7lpFel5tvFf:22
X-Proofpoint-GUID: sazLm41SGTAhwUawq7XjsEt7ZhU-VCZv
X-Proofpoint-ORIG-GUID: sazLm41SGTAhwUawq7XjsEt7ZhU-VCZv
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_06,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
malwarescore=0 mlxlogscore=824 adultscore=0 lowpriorityscore=0 mlxscore=0
phishscore=0 impostorscore=0 spamscore=0 bulkscore=0 priorityscore=1501
clxscore=1015 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505160000
definitions=main-2505310113
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/27/25 1:12 PM, Prasad Kumpatla wrote:
> From: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
>
> Add nodes for WSA8830 speakers and WCD9370 headset codec
> on qcm6490-idp board.
>
> Enable lpass macros along with audio support pin controls.
>
> Signed-off-by: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
> Co-developed-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
> Signed-off-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
> ---

[...]

> &uart5 {
> diff --git a/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi b/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi
> index 542a39ca72bb..2e75e7706fb4 100644
> --- a/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi
> +++ b/arch/arm64/boot/dts/qcom/qcs6490-audioreach.dtsi
> @@ -29,6 +29,30 @@ &lpass_dmic23_data {
> bias-pull-down;
> };
>
> +&lpass_rx_swr_clk {
> + drive-strength = <2>;
> + slew-rate = <1>;
> + bias-disable;
> +};
> +
> +&lpass_rx_swr_data {
> + drive-strength = <2>;
> + slew-rate = <1>;
> + bias-bus-hold;
> +};
> +
> +&lpass_tx_swr_clk {
> + drive-strength = <2>;
> + slew-rate = <1>;
> + bias-disable;
> +};
> +
> +&lpass_tx_swr_data {
> + drive-strength = <2>;
> + slew-rate = <1>;
> + bias-bus-hold;
> +};

All other DTs that overwrite these pins seem to be setting the
exact same settings.. And given this pin is connected to an on-SoC
peripheral, I think it would make sense to consolidate these in
sc7280.dtsi

Konrad


Return-Path: <linux-kernel+bounces-669107-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6DFC541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:36:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B2E3B4A18BD
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:36:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8505323BD01;
Sat, 31 May 2025 12:36:14 +0000 (UTC)
Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200])
(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 A4A071A2C11
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:36:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.200
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748694974; cv=none; b=a5/Lx6AyszwlNo4Sa41B1BkQR/Jn1FoEmXN4FRTkpgjfazeU1d7yFOIHhYmTbyVb1AAJ0+lensChnFqKn7a9bN0PtLxo2FyV8nqHnSCKtDEFoHrE1vt+KbkGlq8nCbb0VTANNe22OY33aZzik4L3CyR2YB/C8ESOkZGCUaQR7Fc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748694974; c=relaxed/simple;
bh=Rf4rxyjVhUINgA5zoGPDB7LfaeBTQp5xV/XYw83VW0c=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=etkvkqsh+fGEhPIhAv6t5081PS9pEfqL+3wbB4FsB53UcYWaISbOULRRcjyullQ/cM3I6NRpFTDixZK/r90/NrTGGzSLOwZJ8OEcQ6FT5rvqjT/4FSOGTjuCgoQwobaksfOwqQLw0Yi2T2vpsQGqGSF7i1bwtEE2A3Bx3L65eM8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr; spf=pass smtp.mailfrom=ghiti.fr; arc=none smtp.client-ip=217.70.183.200
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ghiti.fr
Received: by mail.gandi.net (Postfix) with ESMTPSA id E704543920;
Sat, 31 May 2025 12:36:00 +0000 (UTC)
Message-ID: <718fb1d7-9f0c-4637-abe8-5a34305c3ae2@xxxxxxxx>
Date: Sat, 31 May 2025 14:35:58 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 2/2] riscv: uaccess: do not do misaligned accesses in
get/put_user()
To: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= <cleger@xxxxxxxxxxxx>,
linux-riscv@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx>,
Palmer Dabbelt <palmer@xxxxxxxxxxx>, Albert Ou <aou@xxxxxxxxxxxxxxxxx>
References: <20250530205658.624195-1-cleger@xxxxxxxxxxxx>
<20250530205658.624195-3-cleger@xxxxxxxxxxxx>
Content-Language: en-US
From: Alexandre Ghiti <alex@xxxxxxxx>
In-Reply-To: <20250530205658.624195-3-cleger@xxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-GND-State: clean
X-GND-Score: -100
X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefudelvdculddtuddrgeefvddrtddtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepkfffgggfuffvvehfhfgjtgfgsehtkeertddtvdejnecuhfhrohhmpeetlhgvgigrnhgurhgvucfihhhithhiuceorghlvgigsehghhhithhirdhfrheqnecuggftrfgrthhtvghrnheptdeguefhhfevueejteevveeikeelkedvffdufeelveeggfeikeekgfeghfdttdevnecukfhppedujeeirddugeejrddugeehrdeggeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpedujeeirddugeejrddugeehrdeggedphhgvlhhopegludelvddrudeikedruddrudehfegnpdhmrghilhhfrhhomheprghlvgigsehghhhithhirdhfrhdpnhgspghrtghpthhtohepiedprhgtphhtthhopegtlhgvghgvrhesrhhivhhoshhinhgtrdgtohhmpdhrtghpthhtoheplhhinhhugidqrhhishgtvheslhhishhtshdrihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehprghulhdrfigrlhhmshhlvgihsehsihhfihhvvgdrtghomhdprhgtphhtthhopehprghlmhgvrhesuggrsggsv
ghlthdrtghomhdprhgtphhtthhopegrohhusegvvggtshdrsggvrhhkvghlvgihrdgvughu
X-GND-Sasl: alex@xxxxxxxx
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/30/25 22:56, Clément Léger wrote:
> Doing misaligned access to userspace memory would make a trap on
> platform where it is emulated. Latest fixes removed the kernel
> capability to do unaligned accesses to userspace memory safely since
> interrupts are kept disabled at all time during that. Thus doing so
> would crash the kernel.
>
> Such behavior was detected with GET_UNALIGN_CTL() that was doing
> a put_user() with an unsigned long* address that should have been an
> unsigned int*. Reenabling kernel misaligned access emulation is a bit
> risky and it would also degrade performances. Rather than doing that,
> we will try to avoid any misaligned accessed by using copy_from/to_user()
> which does not do any misaligned accesses. This can be done only for
> !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS and thus allows to only generate
> a bit more code for this config.
>
> Signed-off-by: Clément Léger <cleger@xxxxxxxxxxxx>
> ---
> arch/riscv/include/asm/uaccess.h | 28 ++++++++++++++++++++++------
> 1 file changed, 22 insertions(+), 6 deletions(-)
>
> diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/uaccess.h
> index 046de7ced09c..b542c05f394f 100644
> --- a/arch/riscv/include/asm/uaccess.h
> +++ b/arch/riscv/include/asm/uaccess.h
> @@ -169,8 +169,21 @@ do { \
>
> #endif /* CONFIG_64BIT */
>
> +unsigned long __must_check __asm_copy_to_user(void __user *to,
> + const void *from, unsigned long n);
> +unsigned long __must_check __asm_copy_from_user(void *to,
> + const void __user *from, unsigned long n);
> +
> #define __get_user_nocheck(x, __gu_ptr, label) \
> do { \
> + if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) { \
> + if (!IS_ALIGNED((uintptr_t)__gu_ptr, sizeof(*__gu_ptr))) { \


Nit: I would use && instead of 2 ifs.


> + if (__asm_copy_from_user(&(x), __gu_ptr, sizeof(*__gu_ptr))) \
> + goto label; \
> + else \
> + break; \


Here I would remove the else


> + } \
> + } \
> switch (sizeof(*__gu_ptr)) { \
> case 1: \
> __get_user_asm("lb", (x), __gu_ptr, label); \
> @@ -297,6 +310,15 @@ do { \
>
> #define __put_user_nocheck(x, __gu_ptr, label) \
> do { \
> + if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) { \
> + if (!IS_ALIGNED((uintptr_t)__gu_ptr, sizeof(*__gu_ptr))) { \
> + unsigned long val = (unsigned long)(x); \


Here it sems like __inttype(*(__gu_ptr)) is more accurate than unsigned
long, even though I think unsigned long works fine too.


> + if (__asm_copy_to_user(__gu_ptr, &(val), sizeof(*__gu_ptr))) \
> + goto label; \
> + else \
> + break; \
> + } \
> + } \
> switch (sizeof(*__gu_ptr)) { \
> case 1: \
> __put_user_asm("sb", (x), __gu_ptr, label); \
> @@ -385,12 +407,6 @@ err_label: \
> -EFAULT; \
> })
>
> -
> -unsigned long __must_check __asm_copy_to_user(void __user *to,
> - const void *from, unsigned long n);
> -unsigned long __must_check __asm_copy_from_user(void *to,
> - const void __user *from, unsigned long n);
> -
> static inline unsigned long
> raw_copy_from_user(void *to, const void __user *from, unsigned long n)
> {


Return-Path: <linux-kernel+bounces-669108-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3D87A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:39:17 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0C50D17A31C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:39:18 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4B05A23C397;
Sat, 31 May 2025 12:39:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="k9d168P1"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 7FD1217A305;
Sat, 31 May 2025 12:39:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748695148; cv=none; b=S2NdL1ZsXJkyOzpOep/lmS7vqibqdEGry+TxHVSX9Zo1GX2vhnyEOeTq9cPE+fh/LBdG6wdAcz+aJgwVXkxetFt6W1xQSfXLXxUhEMslBwxIAZn5dIo4fKIwUfOqMeSxtSosUXBl0D7ZmUN/F0+ngXfyOEyfnwGG7rNL35SGJic=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748695148; c=relaxed/simple;
bh=937gUmW36AESKs9XN1Za5V8VBJiQPs9tBQbIEdzh6fQ=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=bT7D3C3LZXKEUPmi17jCORp5az/lnpdVA6eUKwPwXUxM/2onfaHJZyR6WevjCGQUcVHyiE+E937OPtGKWJ6LcN+jy2rGESFXQgsXsiMPEFM2Q+mza1OWhMEBtzfypyyvzQ3j6KZr30u5i/WH+YhjeVxG2YDTPX5nm7RvvCRojzc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=k9d168P1; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B1A56C4CEE3;
Sat, 31 May 2025 12:39:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748695147;
bh=937gUmW36AESKs9XN1Za5V8VBJiQPs9tBQbIEdzh6fQ=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=k9d168P12xhA8fm1jtFDMpw/LsRh2jsOHwpN3/xuEgTGW1kVrEWCg/17PBzzMiVSj
4Gk0jFzXRnTmOoVGAwzb/+fgUf8n3IOx2EJhVtFnDxY37KSCv5qPepGGFl9gmRjngP
o578fyIiJHCndctJMBEAPp/LzsTXKxMYMRajiWpjkqlm+q6cuCBUn7LmNFB7j2sJJm
eEQBiJysBvu/SgvlisJIwHfyPC2usR1d8fyBBs6+xDQQBjVfRAqk+9PQmHJYjia3qZ
K7i4wQELhJG0oFtSSmeo3UXW32+m2GviVGZNBXNhpIH7c2TJ3tPmJsMVgdXvkyyUR8
6ZBeeqhxQifSA==
Date: Sat, 31 May 2025 14:39:01 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: gregkh@xxxxxxxxxxxxxxxxxxx, rafael@xxxxxxxxxx, ojeda@xxxxxxxxxx,
alex.gaynor@xxxxxxxxx, boqun.feng@xxxxxxxxx, gary@xxxxxxxxxxx,
bjorn3_gh@xxxxxxxxxxxxxx, benno.lossin@xxxxxxxxx,
a.hindborg@xxxxxxxxxx, aliceryhl@xxxxxxxxxx, tmgross@xxxxxxxxx,
chrisi.schrefl@xxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH 6/7] rust: miscdevice: expose the parent device as
&Device<Bound>
Message-ID: <aDr4ZUjBX9q1c89S@pollux>
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-7-dakr@xxxxxxxxxx>
<DAA7CJOUJPNL.F7UH9KD8JANF@xxxxxxxxxx>
<aDreGUcvyR4kjMGl@pollux>
<DAAC2TIAOAEY.16STTUX7D2UNR@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <DAAC2TIAOAEY.16STTUX7D2UNR@xxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 02:10:08PM +0200, Benno Lossin wrote:
> On Sat May 31, 2025 at 12:46 PM CEST, Danilo Krummrich wrote:
> > On Sat, May 31, 2025 at 10:27:44AM +0200, Benno Lossin wrote:
> >> On Fri May 30, 2025 at 4:24 PM CEST, Danilo Krummrich wrote:
> >> > @@ -227,11 +229,21 @@ fn drop(self: Pin<&mut Self>) {
> >> > }
> >> > }
> >> >
> >> > +/// The arguments passed to the file operation callbacks of a [`MiscDeviceRegistration`].
> >> > +pub struct MiscArgs<'a, T: MiscDevice> {
> >> > + /// The [`Device`] representation of the `struct miscdevice`.
> >> > + pub device: &'a Device,
> >> > + /// The parent [`Device`] of [`Self::device`].
> >> > + pub parent: Option<&'a Device<Bound>>,
> >> > + /// The `RegistrationData` passed to [`MiscDeviceRegistration::register`].
> >> > + pub data: &'a T::RegistrationData,
> >>
> >> Here I would also just use `T`, remove the `MiscDevice` bound and then
> >> use `MiscArgs<'_, Self::RegistrationData>` below.
> >
> > It has the disadvantage that the documentation of the `data` field above needs
> > to be much more vague, since we can't claim that it's the `RegistrationData`
> > passed to `MiscDeviceRegistration::register` anymore -- given that, I'm not sure
> > it's worth changing.
>
> Yeah that's not ideal... Then keep it this way.
>
> >> > +}
> >> > +
> >> > /// Trait implemented by the private data of an open misc device.
> >> > #[vtable]
> >> > pub trait MiscDevice: Sized {
> >> > /// What kind of pointer should `Self` be wrapped in.
> >> > - type Ptr: ForeignOwnable + Send + Sync;
> >> > + type Ptr: Send + Sync;
> >>
> >> There is no info about this change in the commit message. Why are we
> >> changing this? This seems a bit orthogonal to the other change, maybe do
> >> it in a separate patch?
> >
> > It's a consequence of the implementation:
> >
> > A `Ptr` instance is created in the misc device's file operations open() callback
> > and dropped in the fops release() callback.
> >
> > Previously, this was stored in the private data pointer of the struct file that
> > is passed for every file operation in open().
> >
> > Also note that when open is called the private data pointer in a struct file
> > points to the corresponding struct miscdevice.
> >
> > With this patch, we keep the pointer to the struct miscdevice in the private
> > data pointer of struct file, but instead store the `Ptr` instance in
> > `RawDeviceRegistration::private`.
> >
> > Subsequently, ForeignOwnable is not a required trait anymore.
>
> That's true, but it also wouldn't hurt to keep it for this patch and do
> the change in a separate one. Or mention it in the commit message :)
>
> > We need this in order to keep access to the `RawDeviceRegistration` throughout
> > file operations to be able to pass the misc device's parent as &Device<Bound>
> > through the `MiscArgs` above.
> >
> >> Also `Ptr` doesn't make much sense for the name, since now that the
> >> `ForeignOwnable` bound is gone, I could set this to `Self` and then have
> >> access to `&Self` in the callbacks.
> >
> > We can't make it `Self`, it might still be some pointer type, require pin-init,
> > etc. So, it has to be a generic type.
>
> `MiscDevice::open` could return an `impl PinInit<Self, Error>` :)
>
> > But, I agree that we should not name it `Ptr`, probably should never have been
> > named `Ptr`, but `Data`, `Private` or similar.
> >
> >> Would that also make sense to use as a general change? So don't store
> >> `Self::Ptr`, but `Self` directly?
> >
> > I think it can't be `Self`, see above.
>
> The rust_misc_device example would still work if we changed this to
> `Self`. Now it's not a complicated user of the API and someone might
> want to store `Self` in an `Arc` and then store that as the private
> data, as the MiscDevice is also referenced from somewhere else. But I
> don't know if that is common or an intended use-case :)
>
> For simple use-cases however, I think that `Self` definitely is the
> right choice (as opposed to `Pin<KBox<Self>>` for example, as that has
> an extra allocation :)

The data returned by open() can be anything. It can also be some arbitrary
Arc<T> that already exists and is looked up in open(). It can also be something
new that is created within open() and requires in-place initialization.

So, if we want to change this, we could return an `impl PinInit<Self, Error>` as
you suggest above and initialize it in-place in
`RawDeviceRegistration::private`.

I agree that this is the correct thing to do, but that really sounds like a
subsequent patch.


Return-Path: <linux-kernel+bounces-669109-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B40A341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:47:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id B9E4D1893917
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:47:27 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1B2CF238C3B;
Sat, 31 May 2025 12:47:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YtPNB8Nc"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 524E242AA6;
Sat, 31 May 2025 12:47:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748695626; cv=none; b=HTbQeC7x51Z6yvG9LRxdDtx2YbZ59FYIgAw+pm3G5l4srI2MyEhJj7IuGMCGXykIHeCCxDwlHgfSsKwdJ4UymJVLfQofJHAX4OAprvjdmkp6e7Yh5GLsPtCVwhPFUmEq4NMxnVOPf4kLRwfQk+/JnuGrjfTUJ+8Ad+dlGoFXOkI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748695626; c=relaxed/simple;
bh=dNuv/8Q/+MpCzVJGAmYAa2z15t50v7g6RAPYjtxmSG8=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=SUSPAC/Q589YvJY5ex8cDF/JGQvkK2S8D6oCBvdFBeIsaxTEcuOgfZ5HgVuyXPEiRaDU2+uSXbtQV+XCVO17LT28ta9RBTCtca1X0aIgsTz5HHU/hoIKJrPoLMTQdM5TWhFJgHGByR/8BRN/xI2RzZDN8Yuq0UZk4XivpmisVmU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YtPNB8Nc; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0D340C4CEE3;
Sat, 31 May 2025 12:47:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748695625;
bh=dNuv/8Q/+MpCzVJGAmYAa2z15t50v7g6RAPYjtxmSG8=;
h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
b=YtPNB8NcThT6CtGiCQVyD+tA2X+Ztn5KZseEOGXbS8XFkPAnrWfOw4aT4PfLyo2zx
/KTxtQcR+UK8k575BTm8vCkl9Cl7IIkoomiKHMC+wcpI2WWZyDvWw+y6tlNQh7jKvc
so7j2M0wil/Pm8X8UKxB5cvPLQw2m7mH/Q/hV8kkLT4vlub/vtAcaRqShtRJq8JgUU
9v4awH1Nx19mnoLKdvcKUMurXbVtVa5/mdBCl1/OlyGBBikX2D5A2yra0e+ilJeD9U
Xl8klhDiRHDa5QL6TxpJIDmYe9F96q4uMK86Y3PvyZp/LairzN+KlfIJJvm9JRXYm1
pTM7K7rh5l78w==
Message-ID: <1caebcc8-8c4a-4a83-9e68-f59b92ca7bab@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:47:01 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v2 2/2] dt-bindings: leds: Add new as3668 support
To: Lukas Timmermann <linux@timmermann.space>, lee@xxxxxxxxxx,
pavel@xxxxxxxxxx
Cc: linux-leds@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Lukas Timmermann <lukas@timmermann.space>
References: <20250531120715.302870-4-linux@timmermann.space>
<20250531120715.302870-8-linux@timmermann.space>
From: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
Content-Language: en-US
Autocrypt: addr=krzk@xxxxxxxxxx; keydata=
xsFNBFVDQq4BEAC6KeLOfFsAvFMBsrCrJ2bCalhPv5+KQF2PS2+iwZI8BpRZoV+Bd5kWvN79
cFgcqTTuNHjAvxtUG8pQgGTHAObYs6xeYJtjUH0ZX6ndJ33FJYf5V3yXqqjcZ30FgHzJCFUu
JMp7PSyMPzpUXfU12yfcRYVEMQrmplNZssmYhiTeVicuOOypWugZKVLGNm0IweVCaZ/DJDIH
gNbpvVwjcKYrx85m9cBVEBUGaQP6AT7qlVCkrf50v8bofSIyVa2xmubbAwwFA1oxoOusjPIE
J3iadrwpFvsZjF5uHAKS+7wHLoW9hVzOnLbX6ajk5Hf8Pb1m+VH/E8bPBNNYKkfTtypTDUCj
NYcd27tjnXfG+SDs/EXNUAIRefCyvaRG7oRYF3Ec+2RgQDRnmmjCjoQNbFrJvJkFHlPeHaeS
BosGY+XWKydnmsfY7SSnjAzLUGAFhLd/XDVpb1Een2XucPpKvt9ORF+48gy12FA5GduRLhQU
vK4tU7ojoem/G23PcowM1CwPurC8sAVsQb9KmwTGh7rVz3ks3w/zfGBy3+WmLg++C2Wct6nM
Pd8/6CBVjEWqD06/RjI2AnjIq5fSEH/BIfXXfC68nMp9BZoy3So4ZsbOlBmtAPvMYX6U8VwD
TNeBxJu5Ex0Izf1NV9CzC3nNaFUYOY8KfN01X5SExAoVTr09ewARAQABzSVLcnp5c3p0b2Yg
S296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+wsGVBBMBCgA/AhsDBgsJCAcDAgYVCAIJCgsE
FgIDAQIeAQIXgBYhBJvQfg4MUfjVlne3VBuTQ307QWKbBQJoF1BKBQkWlnSaAAoJEBuTQ307
QWKbHukP/3t4tRp/bvDnxJfmNdNVn0gv9ep3L39IntPalBFwRKytqeQkzAju0whYWg+R/rwp
+r2I1Fzwt7+PTjsnMFlh1AZxGDmP5MFkzVsMnfX1lGiXhYSOMP97XL6R1QSXxaWOpGNCDaUl
ajorB0lJDcC0q3xAdwzRConxYVhlgmTrRiD8oLlSCD5baEAt5Zw17UTNDnDGmZQKR0fqLpWy
786Lm5OScb7DjEgcA2PRm17st4UQ1kF0rQHokVaotxRM74PPDB8bCsunlghJl1DRK9s1aSuN
hL1Pv9VD8b4dFNvCo7b4hfAANPU67W40AaaGZ3UAfmw+1MYyo4QuAZGKzaP2ukbdCD/DYnqi
tJy88XqWtyb4UQWKNoQqGKzlYXdKsldYqrLHGoMvj1UN9XcRtXHST/IaLn72o7j7/h/Ac5EL
8lSUVIG4TYn59NyxxAXa07Wi6zjVL1U11fTnFmE29ALYQEXKBI3KUO1A3p4sQWzU7uRmbuxn
naUmm8RbpMcOfa9JjlXCLmQ5IP7Rr5tYZUCkZz08LIfF8UMXwH7OOEX87Y++EkAB+pzKZNNd
hwoXulTAgjSy+OiaLtuCys9VdXLZ3Zy314azaCU3BoWgaMV0eAW/+gprWMXQM1lrlzvwlD/k
whyy9wGf0AEPpLssLVt9VVxNjo6BIkt6d1pMg6mHsUEVzsFNBFVDXDQBEADNkrQYSREUL4D3
Gws46JEoZ9HEQOKtkrwjrzlw/tCmqVzERRPvz2Xg8n7+HRCrgqnodIYoUh5WsU84N03KlLue
MNsWLJBvBaubYN4JuJIdRr4dS4oyF1/fQAQPHh8Thpiz0SAZFx6iWKB7Qrz3OrGCjTPcW6ei
OMheesVS5hxietSmlin+SilmIAPZHx7n242u6kdHOh+/SyLImKn/dh9RzatVpUKbv34eP1wA
GldWsRxbf3WP9pFNObSzI/Bo3kA89Xx2rO2roC+Gq4LeHvo7ptzcLcrqaHUAcZ3CgFG88CnA
6z6lBZn0WyewEcPOPdcUB2Q7D/NiUY+HDiV99rAYPJztjeTrBSTnHeSBPb+qn5ZZGQwIdUW9
YegxWKvXXHTwB5eMzo/RB6vffwqcnHDoe0q7VgzRRZJwpi6aMIXLfeWZ5Wrwaw2zldFuO4Dt
91pFzBSOIpeMtfgb/Pfe/a1WJ/GgaIRIBE+NUqckM+3zJHGmVPqJP/h2Iwv6nw8U+7Yyl6gU
BLHFTg2hYnLFJI4Xjg+AX1hHFVKmvl3VBHIsBv0oDcsQWXqY+NaFahT0lRPjYtrTa1v3tem/
JoFzZ4B0p27K+qQCF2R96hVvuEyjzBmdq2esyE6zIqftdo4MOJho8uctOiWbwNNq2U9pPWmu
4vXVFBYIGmpyNPYzRm0QPwARAQABwsF8BBgBCgAmAhsMFiEEm9B+DgxR+NWWd7dUG5NDfTtB
YpsFAmgXUF8FCRaWWyoACgkQG5NDfTtBYptO0w//dlXJs5/42hAXKsk+PDg3wyEFb4NpyA1v
qmx7SfAzk9Hf6lWwU1O6AbqNMbh6PjEwadKUk1m04S7EjdQLsj/MBSgoQtCT3MDmWUUtHZd5
RYIPnPq3WVB47GtuO6/u375tsxhtf7vt95QSYJwCB+ZUgo4T+FV4hquZ4AsRkbgavtIzQisg
Dgv76tnEv3YHV8Jn9mi/Bu0FURF+5kpdMfgo1sq6RXNQ//TVf8yFgRtTUdXxW/qHjlYURrm2
H4kutobVEIxiyu6m05q3e9eZB/TaMMNVORx+1kM3j7f0rwtEYUFzY1ygQfpcMDPl7pRYoJjB
dSsm0ZuzDaCwaxg2t8hqQJBzJCezTOIkjHUsWAK+tEbU4Z4SnNpCyM3fBqsgYdJxjyC/tWVT
AQ18NRLtPw7tK1rdcwCl0GFQHwSwk5pDpz1NH40e6lU+NcXSeiqkDDRkHlftKPV/dV+lQXiu
jWt87ecuHlpL3uuQ0ZZNWqHgZoQLXoqC2ZV5KrtKWb/jyiFX/sxSrodALf0zf+tfHv0FZWT2
zHjUqd0t4njD/UOsuIMOQn4Ig0SdivYPfZukb5cdasKJukG1NOpbW7yRNivaCnfZz6dTawXw
XRIV/KDsHQiyVxKvN73bThKhONkcX2LWuD928tAR6XMM2G5ovxLe09vuOzzfTWQDsm++9UKF a/A=
In-Reply-To: <20250531120715.302870-8-linux@timmermann.space>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 31/05/2025 14:07, Lukas Timmermann wrote:
> From: Lukas Timmermann <lukas@timmermann.space>
>
> Document Osram as3668 LED driver devicetree bindings.

Please run scripts/checkpatch.pl on the patches and fix reported
warnings. After that, run also 'scripts/checkpatch.pl --strict' on the
patches and (probably) fix more warnings. Some warnings can be ignored,
especially from --strict run, but the code here looks like it needs a
fix. Feel free to get in touch if the warning is not clear.

<form letter>
Please use scripts/get_maintainers.pl to get a list of necessary people
and lists to CC. It might happen, that command when run on an older
kernel, gives you outdated entries. Therefore please be sure you base
your patches on recent Linux kernel.

Tools like b4 or scripts/get_maintainer.pl provide you proper list of
people, so fix your workflow. Tools might also fail if you work on some
ancient tree (don't, instead use mainline) or work on fork of kernel
(don't, instead use mainline). Just use b4 and everything should be
fine, although remember about `b4 prep --auto-to-cc` if you added new
patches to the patchset.

You missed at least devicetree list (maybe more), so this won't be
tested by automated tooling. Performing review on untested code might be
a waste of time.

Please kindly resend and include all necessary To/Cc entries.
</form letter>


Best regards,
Krzysztof


Return-Path: <linux-kernel+bounces-669110-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4B6AA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:54:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 6960E17F9EC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:54:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B8D14237707;
Sat, 31 May 2025 12:54:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="C6E0wcYt"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11])
(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 6828A22DFB5
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:54:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.11
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748696055; cv=none; b=kCXoqvwXPCMHObCVFIo0ZTO8jb4wZ4gPiLQVcRow5DzEwyCizp148FGi8eX3HZEHqrlwQMvL0D8F66VrNLytwjDMCQ0QS1zrZzuO++bu9NiEmmGQ4+z0n3Y1OqpvacP56Uhs09qbwFtMHBWmf/LSyrdMvLeJwBsLyhC3I13lAtU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748696055; c=relaxed/simple;
bh=+EmJmBR4BbbJOaqh99VTAFfhrshaX7fqFFRRNgGBdFs=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=AHQcoxz4AGgDMQW6f20b3kI2dq+cW5X+6nlz7h9sAwD4J0l7Z+h7KYqKtEl4nk0uQzsKgqQrJSyXxDtrZCi2ODxe5SjbkAr8fvGURn3hPM6Uqkv93x/DBMFNckHoHWTRnIF+uwyTfIdOvGwDQOdQL/Cq0MRvr5YFKCnp2nubHyg=
ARC-Authentication-Results:i=1; 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=C6E0wcYt; arc=none smtp.client-ip=192.198.163.11
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748696053; x=1780232053;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=+EmJmBR4BbbJOaqh99VTAFfhrshaX7fqFFRRNgGBdFs=;
b=C6E0wcYtyZorg1gtXDrLXta+9pJZkyYOyLSE3B8/+ZadxnVUH2ZUD7Ap
UlKEE7k39lOBWatX6ObP1QBf+2I3vOdyBmAlwa9O5U+F0r59CmsaKFvs9
izcHpM6PltMu7sN8b164/hSRbXasnYwKf+EerJRj1utpccf+ws1wt5gYQ
6K9osRPJmzKSF17HgSS/xBwiVtQheasQogRpdc6ofCc/3+PqWTmqQPMfR
uq0ocUs9ChfjrM49fIo2w9c2ALClBIdqDsRhZVI9fiw4WHzeHBCcgPcKF
GCAro3Q00eUoYW6JOdeXRw2bpVD59wleY6IMq/Q6zH3tUx301To4YCqaE
Q==;
X-CSE-ConnectionGUID: GcrjoB4qQaO7tmMp2SEwqg==
X-CSE-MsgGUID: jI2ozdRLQqWzh+QQgmJD2g==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="61398425"
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="61398425"
Received: from fmviesa009.fm.intel.com ([10.60.135.149])
by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 05:54:13 -0700
X-CSE-ConnectionGUID: CBk3yu9jQiKyfvTpCjuIcg==
X-CSE-MsgGUID: ByTmpPphRiSlFVKyMFfvbA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="145093181"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by fmviesa009.fm.intel.com with ESMTP; 31 May 2025 05:54:10 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLLix-000YPY-2T;
Sat, 31 May 2025 12:54:07 +0000
Date: Sat, 31 May 2025 20:53:12 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Binbin Zhou <zhoubinbin@xxxxxxxxxxx>,
Binbin Zhou <zhoubb.aaron@xxxxxxxxx>,
Huacai Chen <chenhuacai@xxxxxxxxxxx>, Lee Jones <lee@xxxxxxxxxx>,
Corey Minyard <minyard@xxxxxxx>
Cc: oe-kbuild-all@xxxxxxxxxxxxxxx, Xuerui Wang <kernel@xxxxxxxxxx>,
loongarch@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
openipmi-developer@xxxxxxxxxxxxxxxxxxxxx, jeffbai@xxxxxxx,
kexybiscuit@xxxxxxx, wangyao@xxxxxxxxxx,
Chong Qiao <qiaochong@xxxxxxxxxxx>
Subject: Re: [PATCH v3 2/3] ipmi: Add Loongson-2K BMC support
Message-ID: <202505312022.QmFmGE1F-lkp@xxxxxxxxx>
References: <01805f8d1b9c8e6564a2d6d83964f78ed29b8f1f.1748505446.git.zhoubinbin@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <01805f8d1b9c8e6564a2d6d83964f78ed29b8f1f.1748505446.git.zhoubinbin@xxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Binbin,

kernel test robot noticed the following build errors:

[auto build test ERROR on 08effa6b77f7dbb4727f811daef0f6085c0d63c8]

url: https://github.com/intel-lab-lkp/linux/commits/Binbin-Zhou/mfd-ls2kbmc-Introduce-Loongson-2K-BMC-core-driver/20250529-202628
base: 08effa6b77f7dbb4727f811daef0f6085c0d63c8
patch link: https://lore.kernel.org/r/01805f8d1b9c8e6564a2d6d83964f78ed29b8f1f.1748505446.git.zhoubinbin%40loongson.cn
patch subject: [PATCH v3 2/3] ipmi: Add Loongson-2K BMC support
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20250531/202505312022.QmFmGE1F-lkp@xxxxxxxxx/config)
compiler: loongarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250531/202505312022.QmFmGE1F-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505312022.QmFmGE1F-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

>> drivers/char/ipmi/ipmi_si_ls2k.c:180:6: error: redefinition of 'ipmi_si_ls2k_init'
180 | void ipmi_si_ls2k_init(void)
| ^~~~~~~~~~~~~~~~~
In file included from drivers/char/ipmi/ipmi_si_ls2k.c:17:
drivers/char/ipmi/ipmi_si.h:108:20: note: previous definition of 'ipmi_si_ls2k_init' with type 'void(void)'
108 | static inline void ipmi_si_ls2k_init(void) { }
| ^~~~~~~~~~~~~~~~~
>> drivers/char/ipmi/ipmi_si_ls2k.c:186:6: error: redefinition of 'ipmi_si_ls2k_shutdown'
186 | void ipmi_si_ls2k_shutdown(void)
| ^~~~~~~~~~~~~~~~~~~~~
drivers/char/ipmi/ipmi_si.h:109:20: note: previous definition of 'ipmi_si_ls2k_shutdown' with type 'void(void)'
109 | static inline void ipmi_si_ls2k_shutdown(void) { }
| ^~~~~~~~~~~~~~~~~~~~~


vim +/ipmi_si_ls2k_init +180 drivers/char/ipmi/ipmi_si_ls2k.c

179
> 180 void ipmi_si_ls2k_init(void)
181 {
182 platform_driver_register(&ipmi_ls2k_platform_driver);
183 ls2k_registered = true;
184 }
185
> 186 void ipmi_si_ls2k_shutdown(void)

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669111-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 31A3541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:54:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 9D71317FF9D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:54:35 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1F48323C50A;
Sat, 31 May 2025 12:54:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="iuzipejc"
Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2089.outbound.protection.outlook.com [40.107.94.89])
(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 6C76322DFB5;
Sat, 31 May 2025 12:54:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.89
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748696068; cv=fail; b=MNrQrOjvDuqa5pCjHMP+eSV8UGtecIEkTRNxfd0YRizyn/CDg+y/pH0e8neTRZcBlL7C7zPlPl+HcZMjte6s/Ta7VkTjm53vbk4ADAn9OSd7ggIYyvz6dCy9B525LvMDvCXHhMhGXOXfy1ZRWAVSaNyLJ7LMO1LYv2kSSgWCI7k=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748696068; c=relaxed/simple;
bh=dC9iaYOtgUahTmQXtqSKDRdMkbsI9hr+VHCloU/Avz0=;
h=Content-Type:Date:Message-Id:Cc:Subject:From:To:References:
In-Reply-To:MIME-Version; b=Tjq/arVMkRxvW605g1cqwapRmz2b9guhSPfj51hIlRIxJ+pWXxa62dbc7gMwV0qH+c6ApWCkntcLwT94+Hza5xUaTi0M1XM0cJ5vt6YQq3VnrRXpQ4axBozfWuXz/iEihUEz9jiLk59YqyuGECOJiFNWz8DcauLh8xhumdGBcCM=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=iuzipejc; arc=fail smtp.client-ip=40.107.94.89
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=b+iuPKVHkqERUufIFGV1o3DCEcY+OYT9O0bjkCLVKIZa6q7NVlRnUqlalCCSe/SpMLDXjfcKtwC9a6BSKRJuJjM7yX3gKYXVl2A2ndELcEc8nzOB1eDDslGSrTDkBRzP6zFKfvf+4TX75e16yq/DSj6L+Ez6cv2oVPRNDqTqM6t5u1FSx7WCwhwGQtWijhzRsnpZVomPhv2IyTmZTNCyzehE3guu92yvrZiFahMXv5Eh+XvEMIHlI6hev+1S26fqj4q4OQHZyPPvDsaG3AXUgWmUJIo8GJJHQaX8t1pkF96ZpRl5KyNkhYZt76eaCI87GtgzMA0V7k6gyKWjOscUsg==
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=dC9iaYOtgUahTmQXtqSKDRdMkbsI9hr+VHCloU/Avz0=;
b=LukF0FwxOKfzt1CspIxUtPXVlVNMdppcIDO+Bq34/+3HoFyM/+ekyDLZxoQEEBLJrYxXbMGOBzOfWKbXbwl6zpN/HC55AthlX7U1+r6F6MB2YUXb0pFmqK6bTZa49oSbxHu9s4f/Cg2+viHShrRWh6/RgBYh/WIWCM0t0/6r8FgbmH5kFTa6td7xBW91POXULoLUZb6chhmd8lRpomTtp0aicc03NQQ6A5xdith31MbwTKqqG9RdYhrsiP9GPfSDVyHfpsKrOU7ILlPU85xZHT5J6ar9EDyy1eRrA/TVgFyClcU8qjTHFh/oVm1WaXUFY/hL1x5bocRcmUgMy4g/Yg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=dC9iaYOtgUahTmQXtqSKDRdMkbsI9hr+VHCloU/Avz0=;
b=iuzipejcPVQqeyM8sy9Ll0j6LrrjHgpWqoQwjoSfzAJcuAkF1UfkiYFGwOxfFJMXhj8jTriWHDR+tJqssXQx+Xy09GaE0fCo+fulpPlgo30vZjAr6gQK1lIDKOkmRIGIX5lwPhGAi2IdB5bKfe+bsKwsFJTKub7/iRC0OgnkFCY3BtJdx64pYiY5cNSRaGy+H6MmzeUvlgkkc4SCulqozspubWFW+UWoGYDO1Y8+ZhznUAXSmUR7znCEJ+TnwZDqDr420a8YVCO1kSga22nACSC9JWNL342UlTcRiWaylAFgu5bkpawI9f58ud5/Z78nS1wAO/bm+rM64qeDOs+uZA==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by DS0PR12MB8219.namprd12.prod.outlook.com (2603:10b6:8:de::10) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.34; Sat, 31 May
2025 12:54:24 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sat, 31 May 2025
12:54:24 +0000
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 21:54:20 +0900
Message-Id: <DAAD0NZOCHS5.9FTVJIOI12QI@xxxxxxxxxx>
Cc: "Abdiel Janulgue" <abdiel.janulgue@xxxxxxxxx>, <dakr@xxxxxxxxxx>,
<lyude@xxxxxxxxxx>, "Miguel Ojeda" <ojeda@xxxxxxxxxx>, "Alex Gaynor"
<alex.gaynor@xxxxxxxxx>, "Boqun Feng" <boqun.feng@xxxxxxxxx>, "Gary Guo"
<gary@xxxxxxxxxxx>, =?utf-8?q?Bj=C3=B6rn_Roy_Baron?=
<bjorn3_gh@xxxxxxxxxxxxxx>, "Benno Lossin" <benno.lossin@xxxxxxxxx>,
"Andreas Hindborg" <a.hindborg@xxxxxxxxxx>, "Alice Ryhl"
<aliceryhl@xxxxxxxxxx>, "Trevor Gross" <tmgross@xxxxxxxxx>, "Valentin Obst"
<kernel@xxxxxxxxxxxxxxx>, "open list" <linux-kernel@xxxxxxxxxxxxxxx>,
"Marek Szyprowski" <m.szyprowski@xxxxxxxxxxx>, "Robin Murphy"
<robin.murphy@xxxxxxx>, <airlied@xxxxxxxxxx>,
<rust-for-linux@xxxxxxxxxxxxxxx>, "open list:DMA MAPPING HELPERS"
<iommu@xxxxxxxxxxxxxxx>, "Petr Tesarik" <petr@xxxxxxxxxxx>, "Andrew Morton"
<akpm@xxxxxxxxxxxxxxxxxxxx>, "Herbert Xu" <herbert@xxxxxxxxxxxxxxxxxxx>,
"Sui Jingfeng" <sui.jingfeng@xxxxxxxxx>, "Randy Dunlap"
<rdunlap@xxxxxxxxxxxxx>, "Michael Kelley" <mhklinux@xxxxxxxxxxx>
Subject: Re: [PATCH 1/2] rust: add initial scatterlist bindings
From: "Alexandre Courbot" <acourbot@xxxxxxxxxx>
To: "Jason Gunthorpe" <jgg@xxxxxxxx>
X-Mailer: aerc 0.20.1-0-g2ecb8770224a
References: <20250528221525.1705117-1-abdiel.janulgue@xxxxxxxxx>
<20250528221525.1705117-2-abdiel.janulgue@xxxxxxxxx>
<20250529004550.GB192517@xxxxxxxx> <DA9JTYA0EQU8.26M0ZX80FOBWY@xxxxxxxxxx>
<20250530141419.GA292183@xxxxxxxx> <DA9KQF9CY77R.77PBMU8Y1FPY@xxxxxxxxxx>
<20250530145026.GB293473@xxxxxxxx>
In-Reply-To: <20250530145026.GB293473@xxxxxxxx>
X-ClientProxiedBy: TYAPR01CA0040.jpnprd01.prod.outlook.com
(2603:1096:404:28::28) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS0PR12MB8219:EE_
X-MS-Office365-Filtering-Correlation-Id: 1ce8dfd6-4858-4b8f-b162-08dda042449e
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|10070799003|376014|7416014|1800799024|366016;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?V3FrbEh2TWk4OFFqdmVEbEJtcTRQdlBpR2Y2c0I4TExaOVIvQVY5c2VVTEFC?=
=?utf-8?B?MTloam1aM2YrNE5ac08rY3FiT3RvZjQycFBUUG0xUzlrdDkzT2tyeWorNTAy?=
=?utf-8?B?QXNmMlZ5UWlTTWZER0d1SW8yUWJBWkYvVWMybDh0TE5ITWM5UnNaWHEvUk5h?=
=?utf-8?B?ZWFzd29JaUtqOGdGNk1RM0ZWbmtpSzF5MXB0djlYRXNoaW5ZWnErV2JxQ0NP?=
=?utf-8?B?Vkk1ck5OaDM4VlJ1eVhITlpUbHptdmJrUFJpSFdPdUdMMHN4VDFIVWNDYkpN?=
=?utf-8?B?cnJSekFzMll0VTlFSlZaN3FTUFBmeUs4Szd3MXNRK0tuM3M5SVZYS0ZuZWJn?=
=?utf-8?B?K0tQT0xCb25ZTkxTK3lYVWZBQ3J0dmQ1dHVITTRLTTdBWkkrWHB4Y0R5MUtW?=
=?utf-8?B?d1BRcmY5UWRlblUzcWZsYVpTcGtSMzVHajZxeDh1bzQ2MmhOell2eDlKRCtQ?=
=?utf-8?B?Y1VHdjcvTFV4UTJSaDZ6QTJ1dW1zM0J6ZHU5WUFyYW1TWEx2L2M1YXF1UytD?=
=?utf-8?B?ZWd2TlFwYzRRMTI3ZWZGa2E5OEZ5Q0UzWUE4OUxVYzV6VjJFalhiNEVLTHBU?=
=?utf-8?B?b25HblhXaVJWSklRajdEcitTZHk4M0NFYnZBU24yL0FZZXV1UnMwbS9TYnFr?=
=?utf-8?B?QWhoVmxEVDZ3Ly9Wdy9vbnNWRHpTZDc2Zksvd2t2ZDNzUHVJU3BVYmI3WkhX?=
=?utf-8?B?Q0J0ejBwaXJoZXk4K0E1ZEd5U3VXUUdNeVlWSUhEa0JjYW9sdm5lVXNTWE9q?=
=?utf-8?B?Zjk0Y3FEVklGaG9EQU5ycTE5bUZmY2NaNFhJMEZjU0tiRTdySjVnVUVaSEU0?=
=?utf-8?B?d29KeUhqcDZhVXBydEhtNU1nZFhWTlFxN3p0RXhWdE0ydURXYmx1dmdLaXlU?=
=?utf-8?B?SjhuOUJvMDhKRWo2OUFKY29KTHFSTkwzMFpsdTk2dTEyOUZaQnVyV3VoWTJ1?=
=?utf-8?B?NHQwc2FMaW5kQ0VITFlwQmlGdlFFZDlmMC90YWRpT1dOaUErNXdHL2tvRWFG?=
=?utf-8?B?WkxBUWpmaUNIK3psbTZZZ0EwRnZrLzQ5UTYwcEthYjNmNlVaMktIdEFzU2JZ?=
=?utf-8?B?b2F3Z1NMNVAyVTJZaThKaEhuZjN0TldEOWJ0MUUzTjR0Z0d3ZU9KUTlCMDc4?=
=?utf-8?B?cXNWcHh6RWVUeWxMWTE2ODc1S0hmOUovS1lyTndUcTVkWWFxT0xLQVpLYXRX?=
=?utf-8?B?VmVteFFsNkpXMlliY2VHZWNSTGhVZG5sKzh5eFU0L3VsVDBhaW9hR2o5dWw4?=
=?utf-8?B?R29SMjFMSjZWOGhqbHgwMU9paDF0eDhqOS9MNnJIWE9GZFliVWVkSVluRXFW?=
=?utf-8?B?NlNnWXRWZzkzeDlQRjZSMTBkVVhhSmkrYWJOOVlyOVBSaDBiT2xPWlVpanBG?=
=?utf-8?B?UTZqaWg1Z21LZDE0a0NZWDdaay8rUHZzb2ZXMWJ2bkFYUzA4eHVKcmE5QURo?=
=?utf-8?B?ZTMrZVRTaFliam53NCtUcjU1NWYxMjRhdTU2OUJ0RnpjMzJLWnFvejFkNHhC?=
=?utf-8?B?bEU0RTFSY0kxOUVJSExPZWNPWGI0WFNJSm5Db1dBWjFTVTg3NmNqRFZ2VzFv?=
=?utf-8?B?UHRaUkVhTWhtSXVrdVRXT2FTMk5UZlB2K0tqNmNvZEljYStlUzRyK3lPSTVN?=
=?utf-8?B?dnd1SGdxQ3JzWUdpbk55MEkrbjdXSHluUGxoNE9ha1Focm4ycytkeUlEbDAx?=
=?utf-8?B?bWQ4VzdXTXVWVWVIMHJlekdRMDVPSk9keUJVSzNrTDFTTUE5bk02Zm9PUUhp?=
=?utf-8?B?OHRRVm1xYlgvckVzMUtWK0VRRXlxbmMxSzZaMWphSWdNd1ppUlVDeUNhTTZv?=
=?utf-8?B?MlJKMTh1VlZ3bmZ2TzBHYlhLR1lmR2hwcmMrN0twc3pXNnNQQ3lFVGpBZ2xB?=
=?utf-8?B?MkdkYUFOUWtqUFJkWVQwaDlQS0lXSnptUTY5dWpwYmR2VWhWMm01bUM2UnBE?=
=?utf-8?Q?u5i6TTPhC3w=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(7416014)(1800799024)(366016);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?WWppZUJ5RGFydGpZV3cvRm9CVVNTRjl0QmZiVXlVVDIyRW5BZGhXdFJHY0Rh?=
=?utf-8?B?NllkenozOFZ3OWowaWdUS1ljcm9mM215MDdHZEJhNE9oZ2lZdVJ1ajZPU0dq?=
=?utf-8?B?QnJ1QnpqL2hvMDU4c0h2bFRCUzB1Y0crUDBQSGYvMS9RNENzSzRwQzNoaiti?=
=?utf-8?B?bWVVNHRYdDNKdElGNlJtcGxTeHhldVJpTFhCQ2J6RWhySlJldXlJckxtOENV?=
=?utf-8?B?QVphWkZKZEFnSy9mYTJhbFB6K1JpL1VpY1ZoYzFIbHRDbUJiV0dRNlNEV1Ni?=
=?utf-8?B?cjhQZHZnbzV4b3hFS3gvMHA0VTJjNjI4RDlYYXY1RzFES2tZVEh2T1dZQXNa?=
=?utf-8?B?ZnZyY083bzc3Y3ExbHF2S2pKUmdhK2FWY2doM1JjN0xVKzZkdnFIZXJMNzB2?=
=?utf-8?B?MzNCKzNiSnRwY1RuVFE0TkN0T0RIc1V6czYzd3dSMmc5VmMwaEtFckVLYVNB?=
=?utf-8?B?S0lwZVdTa3VCMEdXWnE4QmdNTU5GTGorMjFYZi82V003eVp5WnVxWUticU9U?=
=?utf-8?B?MGZWL29ZNzVVS3lNY1I3bWRvUEtyU0ltM1l5WnJTRDUxM2M0MUFnb3pkNHEz?=
=?utf-8?B?YU9tTU9jaTlzYlhhNzc0eUZFUHNDeURnZVhqa2FHQnRFUTY0NXR3VnoxRkwy?=
=?utf-8?B?UTQ3dXpxUk5DWG8xT3hhYzlPR1ltMnRYeUtJczlucDJTbGxHQ2NuUzQ4d21S?=
=?utf-8?B?MmNPL01iMTdZdjVXMjNtTFFROGVaNDdaS3RRNWdTRkQrMlc3eTRpUVBLRnRm?=
=?utf-8?B?NVl2aGFrcUxuRG9BQjNLYlZURnhNb2R4YXVjUll4MkJtZjQyQ3pKVG4xUkVs?=
=?utf-8?B?NmhTYlY2Z0ZRSk1IWkdxZ1NaR2twTlNKVGlRdy9KM2NScXRaWFNPdmpTd3lZ?=
=?utf-8?B?WHErb1crVlh2V1BEVGlNRVdGRGZyaGVnazZsVzc3S2UrRE8zSVpJYUh2Y3Q1?=
=?utf-8?B?a1paTFlBOGtDZjJCcldaODNlazU5L3c3L2N0YkErWjR5TXVJM3ZReEN4bXRj?=
=?utf-8?B?VXNUeU1UUEFJYW9sMWtOamZzMC9hNGRIT3Z5TlpVQzNqN3FuazYvK1I1Nkdo?=
=?utf-8?B?dmxvVnpMRzl1WEFyWEFOQnBsYTJrSG1CbkhEelViMXc3Yk5pV25rdjQ4cGhB?=
=?utf-8?B?NGQ4a1JmWmt5bi9KVjYzMXhVM2txVGhuZ2VFb0hIblQ1M1ByVDBJeXc2L0hi?=
=?utf-8?B?K3RCWVhZU2FjYWVCUENLY1VXRkZYUy9IQXJad1oyblNrT0h4aEszRjdBNmwv?=
=?utf-8?B?cDNIay9LdU1QMUowNXQyUTlNekY4Y2VYVVN5K2ZsalpXUnBkTFJ6TFQrcm9l?=
=?utf-8?B?UTNObHJzYWFFNHM1WWloZmhxeWczNXZnQjdwK2VadnlMVndYLzh1ZzFnM1Bk?=
=?utf-8?B?U08zaDFnWlBnamdSSjJSSWtvMmpaL0hJT1EyTTJYTS9RL1ArSXI1ZkNDbG5D?=
=?utf-8?B?MEdBS1I3U1R3U1o1WWdNUmlTYkpUSUo2VlFOOGNPNnV4bGdsUUNGYzE4N2g4?=
=?utf-8?B?S2FGMDhZNjNFL2RqTXZyMHZ5RFFNcmlVWk1ZeUpIQjVSdlRaR2JQZ0RHMXR4?=
=?utf-8?B?SXllODJnaG9jbk9QcnA4ZDk1STJjY3FyMXc2K0tIR0ZyOUloZXN0eno0NzZC?=
=?utf-8?B?dDNQZVR4a3lCcEJHL2g2NnVFWjRNQ0tJWUlnWC9HV2NhQk1WYWdNQkJRcWxF?=
=?utf-8?B?VkZYMytWNTZWOHYxdUNMTkZOa2gyUDMrNUhHemZPejJkOHMzNmkyaXRpN2V0?=
=?utf-8?B?Y2dpdFZGUWVnME01a2pSaFpiYUhYVk1kTDBuY0tGV1FON2tDTEhtRURzcmlD?=
=?utf-8?B?OXQzcS9wcDUyZ3R5eHJWYzFYTnVkMy9ia3N3ODF5M2svbmFNenhNOXVWTGU2?=
=?utf-8?B?RHlESm9MTlB0RDhGQXdWMGJYd0lHckY5aEh5Y1VoTkx4S0YxSlRpT0pIZFd3?=
=?utf-8?B?Zk9EMHpXSVhPT3V0U3dyYzFMbGZSZjczdzZDa3BYR0ZvMVdOaGkzTUFGWXkr?=
=?utf-8?B?cTZWS3RkYmx5T0hBZ2FwVnFhVjlpVHg5ZFpOMkNVUFg5SWZPL3VPWWVwR0tw?=
=?utf-8?B?SmZaQ0UrN2w3RUtZZGlON1h2OExzbGhsNGNtZVg1YXZLU1hGMlEzSzVsdFJt?=
=?utf-8?B?aXZ0ZXBFYjFrNTRscm5Xd0hiZElYV1c5dnl5cUxadUcxTDdEWnNlbDZPLzBI?=
=?utf-8?Q?SqgaDnjZ1PS3z4beEtr4BKZV6KNA5xWlRpFVxldPetNl?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 1ce8dfd6-4858-4b8f-b162-08dda042449e
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 12:54:23.9496
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: YdWtojJdx96ekxukuZx53EAyX6CmxoptSFFYc4E24Bfst5YJ+n2cSUriN0tudTe0tae/CKQb4qQWfFwovg76qg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8219
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri May 30, 2025 at 11:50 PM JST, Jason Gunthorpe wrote:
> On Fri, May 30, 2025 at 11:44:26PM +0900, Alexandre Courbot wrote:
>
>> I would be fully on board with a simpler design, definitely. The reason
>> why I've tried to keep some doors open is that as you mentioned
>> scatterlist is used in many different ways, and I am not familiar enough
>> with all these uses to draw a line and say "we will never ever need to
>> do that".
>
> I think it would be better to grow as needed. It is hard to speculate.
>
> We also have the new two step DMA API, so it may very well be the only
> use for this stuff is very simple mappings of VVec like things for
> DMA, and maybe this all gets rewritten to use the new DMA API and not
> scatterlist.
>
> Having a rust user facing API that allows for that would be a great
> thing.
>
> IOW I would maybe reframe the task here, it is not to create simple
> naive wrappers around scatterlist but to provide a nice rust API to go
> from VVec/etc to DMA mapping of that VVec/etc.

I like this focus on the practical instead of abstracting the C APIs as
closely as possible. Maybe we have been too focused on the tool rather
than the goal.

So if I understood your idea correctly, this would mean creating the
SGTable and mapping it in one call, eschewing the typestate entirely?
And the `SGTable` would own the backing data, and only release it upon
destruction and unmapping?

I guess the `SGTablePages` (or some renamed variant) would still be useful
to build the list and make sure the core types (e.g. `VVec`) are
ready-to-use with this new API.

One interesting thing to look at after a first version is available
would be a mechanism to ensure only one device (or only the CPU) can
access a buffer that has multiple mappings at any given time, with the
required synchronization performed transparently.

But for now I agree the simple use-case of single-device mapping is a
good way to get started.


Return-Path: <linux-kernel+bounces-669112-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AA0B041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:55:43 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 4348C9E63A3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:55:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8A06E23C4EB;
Sat, 31 May 2025 12:55:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="BWB81DaZ"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8])
(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 51F8642AA6
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:55:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.8
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748696137; cv=none; b=MP1CAwW/6wfLVzGuvGusEBEzjrRRX41lr0SS8z9HvNqvF/UVrxuWR/DZasLoq9EB1R2uKMNLkxfIUr9Dl4gw4n28Y8Yx+6LCNBUZWHVzZifoyjDKaVVwSV+b7Fu2xd5fi/YyqoU54UJGPP8NzvmrYPQN+FAbGDl0cFc7c9xWNuM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748696137; c=relaxed/simple;
bh=DbCyxorTZ8S/KCIHRCV0I83HsPxX4olKOvblnRSuDAA=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=rEXvtFjELZHYYP7G9c407MsvBn03nMbrZwqJa37rdk46SebectTL9iQWn46XUJnCb1Mk8+s+bEAFptyGTdSUpMeNQ2vW56GPOXvBqIpYb02W5E0ydptQhUYyaxeqLSIRA09YWQ09oE6ex7y42BpO0s8NvsX3uID+Anc7DEDCMm4=
ARC-Authentication-Results:i=1; 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=BWB81DaZ; arc=none smtp.client-ip=192.198.163.8
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748696136; x=1780232136;
h=date:from:to:cc:subject:message-id:mime-version;
bh=DbCyxorTZ8S/KCIHRCV0I83HsPxX4olKOvblnRSuDAA=;
b=BWB81DaZObm/O+gvO4OFFKLGmC6G4h6fXVJWAdc9xCYB86vwDc2UcugO
FR1S6SIMWbAijTUqPZsMbuqtcu0y6lxAEF69aQ5HZ0N9mrvr5L8b6R2P6
z3b+ySjwk/2+b+ktxEETqTkkO74AOhDLUYU+y4ZldYqy9WVMTVDetpiU8
l5QFJypu0k1wh5YGBYTo+tL6Sr14xKo+uYFh1xG3E/euCMSGZyPyS1Skp
QYHNmXl6HvIy0oFUFNlKqjytcwaQqR+QF8e14gw0AWLxa45kbqI4P5Qsm
izJrTkc5jNkfh0EuGnyqT2vnTm4yWY2YwZR+jJLcuBWJENdPjAluSoUhk
A==;
X-CSE-ConnectionGUID: 2CS1p0KuR1ODN6DwWlCFCQ==
X-CSE-MsgGUID: GapAWLI2TaSQasi63kNHKQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="68324522"
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="68324522"
Received: from orviesa006.jf.intel.com ([10.64.159.146])
by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 05:55:35 -0700
X-CSE-ConnectionGUID: kWKQ4t8hQzOE7tamm/2q3w==
X-CSE-MsgGUID: mNhABQDASf25xEOUrqoTPw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="144026934"
Received: from igk-lkp-server01.igk.intel.com (HELO b69e6467d450) ([10.211.3.150])
by orviesa006.jf.intel.com with ESMTP; 31 May 2025 05:55:34 -0700
Received: from kbuild by b69e6467d450 with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLLkJ-000116-1n;
Sat, 31 May 2025 12:55:31 +0000
Date: Sat, 31 May 2025 20:54:44 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Eric Sandeen <sandeen@xxxxxxxxxx>
Cc: llvm@xxxxxxxxxxxxxxx, oe-kbuild-all@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Al Viro <viro@xxxxxxxxxxxxxxxxxx>
Subject: fs/ufs/super.c:1246:15: warning: variable 'ufstype' set but not used
Message-ID: <202505312056.JEiEGBI7-lkp@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f70f5b08a47a3bc1a252e5f451a137cde7c98ce
commit: b70cb459890b7590c6d909da8c1e7ecfaf6535fb ufs: convert ufs to the new mount API
date: 2 weeks ago
config: i386-buildonly-randconfig-2003-20250531 (https://download.01.org/0day-ci/archive/20250531/202505312056.JEiEGBI7-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250531/202505312056.JEiEGBI7-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505312056.JEiEGBI7-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> fs/ufs/super.c:1246:15: warning: variable 'ufstype' set but not used [-Wunused-but-set-variable]
1246 | unsigned int ufstype;
| ^
1 warning generated.


vim +/ufstype +1246 fs/ufs/super.c

1238
1239 static int ufs_reconfigure(struct fs_context *fc)
1240 {
1241 struct ufs_sb_private_info * uspi;
1242 struct ufs_super_block_first * usb1;
1243 struct ufs_super_block_third * usb3;
1244 struct ufs_fs_context *ctx = fc->fs_private;
1245 struct super_block *sb = fc->root->d_sb;
> 1246 unsigned int ufstype;
1247 unsigned int flags;
1248
1249 sync_filesystem(sb);
1250 mutex_lock(&UFS_SB(sb)->s_lock);
1251 uspi = UFS_SB(sb)->s_uspi;
1252 flags = UFS_SB(sb)->s_flags;
1253 usb1 = ubh_get_usb_first(uspi);
1254 usb3 = ubh_get_usb_third(uspi);
1255
1256 ufstype = UFS_SB(sb)->s_flavour;
1257
1258 if ((bool)(fc->sb_flags & SB_RDONLY) == sb_rdonly(sb)) {
1259 UFS_SB(sb)->s_on_err = ctx->on_err;
1260 mutex_unlock(&UFS_SB(sb)->s_lock);
1261 return 0;
1262 }
1263
1264 /*
1265 * fs was mouted as rw, remounting ro
1266 */
1267 if (fc->sb_flags & SB_RDONLY) {
1268 ufs_put_super_internal(sb);
1269 usb1->fs_time = ufs_get_seconds(sb);
1270 if ((flags & UFS_ST_MASK) == UFS_ST_SUN
1271 || (flags & UFS_ST_MASK) == UFS_ST_SUNOS
1272 || (flags & UFS_ST_MASK) == UFS_ST_SUNx86)
1273 ufs_set_fs_state(sb, usb1, usb3,
1274 UFS_FSOK - fs32_to_cpu(sb, usb1->fs_time));
1275 ubh_mark_buffer_dirty (USPI_UBH(uspi));
1276 sb->s_flags |= SB_RDONLY;
1277 } else {
1278 /*
1279 * fs was mounted as ro, remounting rw
1280 */
1281 #ifndef CONFIG_UFS_FS_WRITE
1282 pr_err("ufs was compiled with read-only support, can't be mounted as read-write\n");
1283 mutex_unlock(&UFS_SB(sb)->s_lock);
1284 return -EINVAL;
1285 #else
1286 if (ufstype != UFS_MOUNT_UFSTYPE_SUN &&
1287 ufstype != UFS_MOUNT_UFSTYPE_SUNOS &&
1288 ufstype != UFS_MOUNT_UFSTYPE_44BSD &&
1289 ufstype != UFS_MOUNT_UFSTYPE_SUNx86 &&
1290 ufstype != UFS_MOUNT_UFSTYPE_UFS2) {
1291 pr_err("this ufstype is read-only supported\n");
1292 mutex_unlock(&UFS_SB(sb)->s_lock);
1293 return -EINVAL;
1294 }
1295 if (!ufs_read_cylinder_structures(sb)) {
1296 pr_err("failed during remounting\n");
1297 mutex_unlock(&UFS_SB(sb)->s_lock);
1298 return -EPERM;
1299 }
1300 sb->s_flags &= ~SB_RDONLY;
1301 #endif
1302 }
1303 UFS_SB(sb)->s_on_err = ctx->on_err;
1304 mutex_unlock(&UFS_SB(sb)->s_lock);
1305 return 0;
1306 }
1307

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669113-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 41B2841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:59:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id DF9AA3B224C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:59:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5BDA123C50F;
Sat, 31 May 2025 12:59:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b="qhj/8mZE"
Received: from gloria.sntech.de (gloria.sntech.de [185.11.138.130])
(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 1CF2842AA6;
Sat, 31 May 2025 12:59:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.11.138.130
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748696382; cv=none; b=dTvSnEUf37cxnu4+uu/Pu5Z8D3ILwMkJGLhE0P/wZn9Kxt4dneqYcMzKr042xP7ZY9E26gK4ksYWuDWg8ofbI8tpK3hzGyyGxKDGogBKpekjxzEP/62UptcfOBB66FVrwZ9R2Op0QTd8+iG+5lELW1rqtogslmORL3J+U9vLrNg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748696382; c=relaxed/simple;
bh=3oX8Ytt7icyUJ0L4uW63iWAERBXG8/haXvAsNX7fWMw=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=Hj2k7oCiQb9wm5sUuIPp1ArGlyyyWgkG9ByiGw4CRcp8+GIDBnCOV8698NXyx9mkyV3CbTl0WrO0xjDbTUsDxmsleK9SQvrGCOcnnpYWT9SCXTciHcbKuZU54Xeg+YI+r//CoboTKf+XKC9kSCpP+aVUH4MU/xmgCPP0EfK2uHI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de; spf=pass smtp.mailfrom=sntech.de; dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b=qhj/8mZE; arc=none smtp.client-ip=185.11.138.130
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sntech.de
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de;
s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version:
References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID;
bh=/QvtLNBteUL/eoLfwenUJUkU6N99pIrssBMZcazvFXE=; b=qhj/8mZElYbDGGnYnH5ZkSah2m
r+HVjvfjaV4NJVyvl05yBCjwXMsUNBkYXAC3g6ou8vEpMRh1a03Dw1kNzLw9/5CFnSCMEX2ETxzuR
xFKMKrhOpPeydmV2oe0ocsYfUVcw/obPOpOzCU8V8mm/eXfhWRCUDW85qieblAwRtv1Cit1jy9Fz2
Pu6U6b5oOZOKsQrGVV9jfra5Vdvqu2CkyjqEA1kPCPsZCZ0g9I/Xz7pvNho9FjRo5k8psmadmS/wO
260bSocfh4be5JXcffZpDDoS/Y984BBAN64KBxnfDYemIwh5yW3Q/OlYme6CxFPVBuusLoh9uvGXh
dnihS9qg==;
Received: from i53875a3e.versanet.de ([83.135.90.62] helo=diego.localnet)
by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(Exim 4.94.2)
(envelope-from <heiko@xxxxxxxxx>)
id 1uLLo0-0002Xd-EM; Sat, 31 May 2025 14:59:20 +0200
From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= <heiko@xxxxxxxxx>
To: Linus Walleij <linus.walleij@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley <conor+dt@xxxxxxxxxx>,
Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= <ukleinek@xxxxxxxxxx>,
William Breathitt Gray <wbg@xxxxxxxxxx>,
Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>,
Kever Yang <kever.yang@xxxxxxxxxxxxxx>,
Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
Cc: linux-gpio@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-rockchip@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-pwm@xxxxxxxxxxxxxxx,
linux-iio@xxxxxxxxxxxxxxx, kernel@xxxxxxxxxxxxx,
Jonas Karlman <jonas@xxxxxxxxx>,
Detlev Casanova <detlev.casanova@xxxxxxxxxxxxx>,
Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
Subject:
Re: [PATCH 1/7] dt-bindings: pinctrl: rockchip: increase max amount of device
functions
Date: Sat, 31 May 2025 14:59:17 +0200
Message-ID: <23957563.6Emhk5qWAg@diego>
In-Reply-To: <20250408-rk3576-pwm-v1-1-a49286c2ca8e@xxxxxxxxxxxxx>
References:
<20250408-rk3576-pwm-v1-0-a49286c2ca8e@xxxxxxxxxxxxx>
<20250408-rk3576-pwm-v1-1-a49286c2ca8e@xxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Am Dienstag, 8. April 2025, 14:32:13 Mitteleurop=C3=A4ische Sommerzeit schr=
ieb Nicolas Frattaroli:
> With the introduction of the RK3576, the maximum device function ID used
> increased to 14, as anyone can easily verify for themselves with:
>=20
> rg -g '*-pinctrl.dtsi' '<\d+\s+RK_P..\s+(?<func>\d+)\s.*>;$' --trim \
> -NI -r '$func' arch/arm64/boot/dts/rockchip/ | sort -g | uniq
>=20
> Unfortunately, this wasn't caught by dt-validate as those pins are
> omit-if-no-ref and we had no reference to them in any tree so far.
>=20
> Once again kick the can down the road by increasing the limit to 14.
>=20
> Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>

Reviewed-by: Heiko Stuebner <heiko@xxxxxxxxx>




Return-Path: <linux-kernel+bounces-669114-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5F90541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:02:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id D5A56189C91B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:02:27 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 79D7D23A9BD;
Sat, 31 May 2025 13:02:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=fail reason="signature verification failed" (2048-bit key) header.d=bit-philosophy.net header.i=@bit-philosophy.net header.b="RMPSKxum"
Received: from smtp.domeneshop.no (smtp.domeneshop.no [194.63.252.55])
(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 CE285DDAB
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:02:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=194.63.252.55
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748696526; cv=none; b=dgPlA0F0YBFkV4UDmpiqgozempGYdYruyiODKOl7Zw++8WF7dM6SWh1COBrbRJXz5Dzvw04+Sh1RuySxZ8G/yM2IyphGLHwFQNR5Dqsg4USe/ICoStxogUlrGLtswsDwBW1H5oy3ZaFvcb44Ff73tgq0NikHPDmAst5NglAlceU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748696526; c=relaxed/simple;
bh=oKChN1JBaeQ+gwAQa+b3HnjxeSRpjAUhNez89dkTwjw=;
h=Message-ID:Date:MIME-Version:To:From:Subject:Content-Type; b=OHgqsIuFUy5hsQeyy1hk797glesuRoUjBW2i96FMW3V50Er+Iwnv/9FdwAeX45BLRRmPumV1nNi+ug6a+aM9HHpNUAZHiV23xwxcxqrYiYUCVt97Ag4S2Q+rQJ3q3k5BGb3dz+O+NhDqKHOyzJd5dDhTwGeo2FJTYOeHhd9nBzc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bit-philosophy.net; spf=pass smtp.mailfrom=bit-philosophy.net; dkim=pass (2048-bit key) header.d=bit-philosophy.net header.i=@bit-philosophy.net header.b=RMPSKxum; arc=none smtp.client-ip=194.63.252.55
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=bit-philosophy.net
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bit-philosophy.net
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=bit-philosophy.net; s=ds202411; h=Content-Transfer-Encoding:Content-Type:
Subject:From:To:MIME-Version:Date:Message-ID:From:Sender:Reply-To:Subject:
Date:Message-ID:To:Cc:MIME-Version:Content-Type:Content-Transfer-Encoding:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id:
List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive;
bh=tjyw5wyD/Rz8LAtKIWWnEb0NtlUKOOzZD+jVWNTFIkE=; b=RMPSKxumYZjc0MOWK8e5KMgCwF
UoWkPQtaMEQbtVMdqo+i8d/2c7dgsytAyDXDFcFd2/8Jm5eq0TG/A2hDbGZUnbCoZSN5BfXkMatAA
LlAfvyPfeN1/788J2yFQp+5ONcKf+eZTphZS6QOxFb8elKrtPA8VHop1+BdVY32lqqr9M6gv7L67E
56/CLxje50HAtMbsGcKQ/HcbmzdRcCiQpSUxPIrn0GZXyIiw3cBUbZyId+Cdn6z7+6UqxbUCryHCr
muMyH1Ja5ocbTCYK5HD7KHaACa0DZqnx03Yi39u5CM2bo8XTgRjnsiyEi7TPqHXfmPnzpJrTCkFC3
qYYZQqKw==;
Received: from smtp
by smtp.domeneshop.no with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(Exim 4.95)
id 1uLLqW-0046F0-Fh
for linux-kernel@xxxxxxxxxxxxxxx;
Sat, 31 May 2025 15:01:56 +0200
Message-ID: <2510ed40-b795-4772-98c2-bd9a6675c61e@xxxxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 15:01:55 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: linux-kernel@xxxxxxxxxxxxxxx
From: =?UTF-8?Q?Ywe_C=C3=A6rlyn?= <budi@xxxxxxxxxxxxxxxxxx>
Subject: Sen Concepts (was Fair Pay Philosophy, Low Jitter)
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Consolidated my CPU, Wavelet and DAW concepts in Sen.

Sen Wavelet, Sen CPU, and Sen DAW.

Sen Wavelet used for compression has relevance factor. Used as filter it
has perfect Q-Normalization (a worlds first?)

Sen CPU reduces bus bandwith to 1/3, and avoids the need for
compilation, using a C like instruction set, and follow up to Go.

Sen DAW, is a music app, that uses Sen Wavelet, for patent free operation.

All set to work with the fair pay philosophical background, discussed on
my research page: https://bit-philosophy.net/ (now v0.99)

LIGHT!
Ywe Cærlyn
Budi, Bitstreams OS.



Return-Path: <linux-kernel+bounces-669115-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B7A5341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:19:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id A5B419E2292
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:19:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 27B0A23C38C;
Sat, 31 May 2025 13:19:30 +0000 (UTC)
Received: from mail-il1-f205.google.com (mail-il1-f205.google.com [209.85.166.205])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AEC9B238C2F
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:19:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.205
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748697569; cv=none; b=kYZLkyccZWpTYQIFPMJHBr7DOnpN72O8oFiAmyhmbChSb5WTc+klGC4VIoBrB6fn0d0udndq2rGUqssEOPZYMRXfWTr+N8GcqFxNZdCDOrYdE+PYjxVl8xk/fAOGqkJWI9265xzEtLzu+c9fgt49z9981TDNSidwlnCGKXPvoI4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748697569; c=relaxed/simple;
bh=75vO5bAg0mmoxKQNMdC8+Jw704lsdM4wtphxrMDvmSs=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=Wqy6+3w2xd/US/kMo8czUAmJ68xO5Woa1BJX1+a0cvJUCs/bLRNWJO9k6FPr6PsiuT7bXUkmR4YyIs2ftmRPV1WXv5Sgk1lEi1kH2XrKmOolVuUYVr+HXB0jA4Me8qhhPgm5ChQqu/gelZmfxfNFNh4YurYZWWfMMbHjBWSTxw8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.205
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f205.google.com with SMTP id e9e14a558f8ab-3dd75f23947so25851795ab.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:19:27 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748697567; x=1749302367;
h=to:from:subject:message-id:date:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=FBI91K8uB+RDcd0LMyH7RlMPNa3HZlVIkIx4V4UNB2Q=;
b=UYMFihpu/BC9F6BeYmCB2Qwlz7XZ88KddQZgdMha/RfFoQaI588HoeUChf8yO3xMc6
rZHZFwXXI7omM3TEZ4JSJ81cVRN5P4ZAPZylWhdXL6vt/3YSR3jXlBng29cUPdmwPcNZ
oQgWeX9mdsVG6WbXiENZxO3LVgF7EhdBD+gcTxD2thK7RNWLgrbKe2PeZQD3jDr2M5XE
c4cM4Yk12P6xcmGtNzuSYdd1tu0B13tw8TGxzJZ1GuwXLSMgUzUhfVYpKfPs7N0A+HDS
RPnNm+CS5fIP7ZFy41Lr86UE+w2h5els4SFseMPuru3nfGxIZrKUXpAr9ncN/JwovJUw
XbnQ==
X-Gm-Message-State: AOJu0YxYsbag2EDnCrU9SJUqxhsDx/MxMaAsXHFwl7CI7BN1k0ObobxL
oJBhWoqvu6u8pUWXOIPPLOsv/M0f7qkAT9WNfgviCCiuvXYcwNZThEFT3TvxazpRmbZvPR+CEm3
bDQ14dO3LEgyyiXnjiJ5tqsv5f4e3KviMFUcYFm8/qeWM7duH3SYI+a2cwkdkew==
X-Google-Smtp-Source: AGHT+IEnz2yOwbK2uabUndM6JHR2B1CyRoic/50eSSclJsW4v2CdRN4gISkeQEZeOBSbkDCKgxG6W0WV3Cqes31lEu0ggE8BhJMh
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1c29:b0:3dc:8b29:3090 with SMTP id
e9e14a558f8ab-3dd99c2b6b5mr80622725ab.15.1748697566767; Sat, 31 May 2025
06:19:26 -0700 (PDT)
Date: Sat, 31 May 2025 06:19:26 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b01de.a70a0220.1a6ae.000c.GAE@xxxxxxxxxx>
Subject: [syzbot] kernel panic: Fatal exception (4)
From: syzbot <syzbot+7373cb2b2891da299db6@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: e0797d3b91de Merge tag 'fs_for_v6.16-rc1' of git://git.ker..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=163777f4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=bae947dc86168857
dashboard link: https://syzkaller.appspot.com/bug?extid=7373cb2b2891da299db6
compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=113787f4580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=10329ed4580000

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/d900f083ada3/non_bootable_disk-e0797d3b.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/fff3ec96d8a9/vmlinux-e0797d3b.xz
kernel image: https://storage.googleapis.com/syzbot-assets/04b015b9be19/bzImage-e0797d3b.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+7373cb2b2891da299db6@xxxxxxxxxxxxxxxxxxxxxxxxx

CR2: 0000000020000000 CR3: 000000000e182000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Kernel panic - not syncing: Fatal exception in interrupt
Kernel Offset: disabled


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-669116-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D3EAB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:26:26 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id A25C5189E095
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:26:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4D70B23C51F;
Sat, 31 May 2025 13:26:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Bc4d6XKQ"
Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA332101F2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:26:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748697976; cv=none; b=bdqsI/TItzZJnKzm7j8xuOBWOGXmCKs9I9cU+XYQv5t328jBM4Ox13qEpiB+CO093074syWbxt28JguO+VRbrPzHZXHUhtnH717I/eFHpUqoNTn37uFnHuGcXb0PXS+tUdOEipkVDFHdG9syb0b8Wx67cPMebUGeYKzChaLGLjo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748697976; c=relaxed/simple;
bh=W9KCPpIgVUVF2Ha44C+Ff3OIGGXCprwabXjXMKOwsHU=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=risfn/E/K7ueG2kM69vYw1JAm+s4hbWaGRJcTdRrGmSZDAISljBTkPFpkB7DXVK07bSziNs4oB2V3ekD3PeWL6Xc1y5kLaFb4TkFNf6wNIcPchFYUFDuNo5VQjJDgWLz11+Gc0Un/hyk9oqNgJwK/iD/kKWv+sGO6Ifxj4TKE7I=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=Bc4d6XKQ; arc=none smtp.client-ip=209.85.128.41
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-450cf214200so24690055e9.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:26:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748697973; x=1749302773; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=T9DR5NCa957iPYKZxiFu8GdXDM88JZymN1Uk+Vzg6j0=;
b=Bc4d6XKQ433wM3240xQSB3Y2/73iq9D1mYEDzR+q4KisO7lfjh9yHUj6dDJlD9pyvr
K3ZPeuKac3FH1Ht2CcfYmwNzhlvpK/gJnKsQXcpK0Xo72Kpx10+9ZAJRX4/ulG9cz2F0
8zvQHbdhg5rDFml8bDtk2QVcXCecO29LcgatUyI1dJYm8Q6ilZFJRcf3Vg9CV59dDFKC
7uy1d2iTiLoeR6RZj0kR/F4M19lFSXATAcy1CqECy/MH7JdeNQ1lnrzFehhx4LHxNpyu
UdUY9XZuFx6/50VMpVckAOXTYCqasgsnFtDvz7gegicWix8vcuyt8WqsrNinExveGn6U
JlIw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748697973; x=1749302773;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=T9DR5NCa957iPYKZxiFu8GdXDM88JZymN1Uk+Vzg6j0=;
b=whtautGeYO69N8szNvjmVhQjJb92v891jV0dzJN4Jp6A1EFuA11ymOMHF2xrPyIvGr
NkVnU17QOalacx6BJUULmjlM9JZNgR2psnK9Ucbi6RrnT/u9C5U1S/Zeg6mVFhGhbo+g
/54ZxoJAX8xnmOzQ6hZP41uJZsuC9+HeE99T5J3P2M1nfM/8D2WB41//enADmNHIODce
DAaYjCMTTXUAEvEH5DvisKYhgU/RGw4XXx/5zTsiOzJ30u+VdPWUwIAhT0d/Xq21fu1s
I0+JBtqdgF1VwEqHtdt9FxlpxdjPassO1dMKTP3bIQ1o2zlducxfz5IeID4OxA7/D5+W
vEUw==
X-Forwarded-Encrypted: i=1; AJvYcCXuJ6R8Rp8W8Bh6zku3DzY1UtiHy3g6eWGT5dfT4vs5k/CRJIz2yGats9lekJvWPKd9KTJyyFmd6VkG7eE=@vger.kernel.org
X-Gm-Message-State: AOJu0YzaV8PS5M+4LayxWfXGawuCjOHjRPBiw41Mz6zbYn6Ht4rgtpUs
ukRh3JFGYMBTg49mgNbFQNmUYWoinzfcllXkRoe0iSA7mMsNJEfTP89+5snbIEVjau6wS+hBDcB
wZyj+gnXt6xRgGwzm2V19qESrkmRUCM2nwhtuU0p8
X-Gm-Gg: ASbGncsCUJGinQI/hmGS6DrTe/BzwiogjHWHVr/ZcBx6KlxQGImO7sa51P5BODHaDkX
Md+teA+i/3nHBqOBvlKDYl9mmdRT77AIJpTqzuTEB7awy7wF2ui/C72WkoaCdUcYMrbClA0Io4t
Ta11eOdGN70p9nUxjyWsu1h5Vcko3N1ITZ9fxPNvqhW+H+
X-Google-Smtp-Source: AGHT+IGfp7hAa2spWVj2SPN735mg85khi0WUeYTJjMXgdY9zq6ZssaO+bV4k8ffrTsF1yUBZ29L6uhBVYwowFKEqnHk=
X-Received: by 2002:a05:600c:4f87:b0:442:cd03:3e2 with SMTP id
5b1f17b1804b1-450d87fd991mr56835405e9.2.1748697972759; Sat, 31 May 2025
06:26:12 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-2-82168470d472@xxxxxxxxxx> <DA9P904SL0KL.1QNQAI240QLH6@xxxxxxxxxx>
In-Reply-To: <DA9P904SL0KL.1QNQAI240QLH6@xxxxxxxxxx>
From: Alice Ryhl <aliceryhl@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:25:59 +0200
X-Gm-Features: AX0GCFtznRzZkf4kQM1n1yrj4tNMoC1t-3RZZV41dZwGVCOxltkfbwDODmlvkuU
Message-ID: <CAH5fLgjZrJ66VnW0J_CHc-3yUFOt+DRWgTCNxoftACga+Lw+fA@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 2/2] uaccess: rust: add UserSliceReader::strcpy_into_buf
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: Miguel Ojeda <ojeda@xxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Trevor Gross <tmgross@xxxxxxxxx>, Danilo Krummrich <dakr@xxxxxxxxxx>, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 8:16=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> wr=
ote:
>
> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
> > This patch adds a more convenient method for reading C strings from
> > userspace. Logic is added to NUL-terminate the buffer when necessary so
> > that a &CStr can be returned.
> >
> > Note that we treat attempts to read past `self.length` as a fault, so
> > this returns EFAULT if that limit is exceeded before `buf.len()` is
> > reached.
> >
> > Reviewed-by: Danilo Krummrich <dakr@xxxxxxxxxx>
> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
> > ---
> > rust/kernel/uaccess.rs | 56 ++++++++++++++++++++++++++++++++++++++++++=
+++++++-
> > 1 file changed, 55 insertions(+), 1 deletion(-)
> >
> > diff --git a/rust/kernel/uaccess.rs b/rust/kernel/uaccess.rs
> > index 9b1e4016fca2c25a44a8417c7e35e0fcf08aa959..e6534b52a1920254d61f834=
9426d4cdb38286089 100644
> > --- a/rust/kernel/uaccess.rs
> > +++ b/rust/kernel/uaccess.rs
> > @@ -293,6 +293,61 @@ pub fn read_all<A: Allocator>(mut self, buf: &mut =
Vec<u8, A>, flags: Flags) -> R
> > unsafe { buf.set_len(buf.len() + len) };
> > Ok(())
> > }
> > +
> > + /// Read a NUL-terminated string from userspace and return it.
> > + ///
> > + /// The string is read into `buf` and a NUL-terminator is added if=
the end of `buf` is reached.
> > + /// Since there must be space to add a NUL-terminator, the buffer =
must not be empty. The
> > + /// returned `&CStr` points into `buf`.
> > + ///
> > + /// Fails with [`EFAULT`] if the read happens on a bad address (so=
me data may have been
> > + /// copied).
> > + #[doc(alias =3D "strncpy_from_user")]
> > + pub fn strcpy_into_buf<'buf>(self, buf: &'buf mut [u8]) -> Result<=
&'buf CStr> {
> > + if buf.is_empty() {
> > + return Err(EINVAL);
> > + }
> > +
> > + // SAFETY: The types are compatible and `strncpy_from_user` do=
esn't write uninitialized
> > + // bytes to `buf`.
> > + let mut dst =3D unsafe { &mut *(buf as *mut [u8] as *mut [Mayb=
eUninit<u8>]) };
> > +
> > + // We never read more than `self.length` bytes.
> > + if dst.len() > self.length {
> > + dst =3D &mut dst[..self.length];
> > + }
> > +
> > + let mut len =3D raw_strncpy_from_user(dst, self.ptr)?;
> > + if len < dst.len() {
> > + // Add one to include the NUL-terminator.
> > + len +=3D 1;
> > + } else if len < buf.len() {
> > + // This implies that `len =3D=3D dst.len() < buf.len()`.
> > + //
> > + // This means that we could not fill the entire buffer, bu=
t we had to stop reading
> > + // because we hit the `self.length` limit of this `UserSli=
ceReader`. Since we did not
> > + // fill the buffer, we treat this case as if we tried to r=
ead past the `self.length`
> > + // limit and received a page fault, which is consistent wi=
th other `UserSliceReader`
> > + // methods that also return page faults when you exceed `s=
elf.length`.
> > + return Err(EFAULT);
> > + } else {
> > + // This implies that len =3D=3D buf.len().
> > + //
> > + // This means that we filled the buffer exactly. In this c=
ase, we add a NUL-terminator
> > + // and return it. Unlike the `len < dst.len()` branch, don=
't modify `len` because it
> > + // already represents the length including the NUL-termina=
tor.
> > + //
> > + // SAFETY: Due to the check at the beginning, the buffer i=
s not empty.
> > + unsafe { *buf.last_mut().unwrap_unchecked() =3D 0 };
>
> In this case you're overwriting the last character read. Should we give
> `raw_strncpy_from_user` access to one less byte and then write NUL into
> that?

Why? I'm not interested in changing the implementation just because.
It needs to be significantly simpler, and I do not think it is.

Alice


Return-Path: <linux-kernel+bounces-669117-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 96AA641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:27:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id BB48717D35B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:27:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4B82623C8AE;
Sat, 31 May 2025 13:27:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b="Mu8596DQ"
Received: from gloria.sntech.de (gloria.sntech.de [185.11.138.130])
(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 83D93101F2;
Sat, 31 May 2025 13:26:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.11.138.130
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698021; cv=none; b=AUcAerOuOFUBlWhaUOt5J3bvmECnlHMthJXMSCrsdZQZBgjKVlAbfbF5K886bymFHu6hYCLdmbIqfOEky6E4XgUUiYWXQ5NVe+zBlqRl8I2rUNJN0qMDzOMzNE5ZfCrEKrv4J4avWJJlCYxYcxBZ18p4AjEQJt7GpC4bLigYrI4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698021; c=relaxed/simple;
bh=/wIF/TryaTRf16TItuBGroDgD3DysoPOltvJzZR8kfw=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=okBZ+WXLBGFMM9L/NzNj9VYuPJ0u9OVMrX4EywnQtRnwMtX9eTH9qwZ71psCg0yutiudc7oEcoUDXe6CMOZ0rVHWXWr2xUjmmXKPN5nmj6qTldh3Rwv64qgty1O67BvmxHBQ6W+tAEmxJPROTpib39j3TNj9vUKGrmvP9Njwa8U=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de; spf=pass smtp.mailfrom=sntech.de; dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b=Mu8596DQ; arc=none smtp.client-ip=185.11.138.130
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sntech.de
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de;
s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version:
References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID;
bh=71D51htRSeJGCuuHOHD8b943bYQGqpFoTtzqn/JTPCw=; b=Mu8596DQ4iCe89ntwpBhl75Pbp
UheiA2gyCWpuQhWw8b+IX+5gbOtCZswwY5Xe8KuS/I4A48P8o/P4mEZISgII/se1hHD6R6IxbsHgV
e9BdNKzWi7CpVokSVpeCfkBjrnSPDGRB/w9vroZHTQbQTBZTG2TED1T6hwk/euJVOmfb9G2A3dkYv
uSne6voiWy5YpvDLrxPwEFPmEIOiCkm6LGZve9/GjbZVivXqmDjkBl01K6nf7Zzdkggh8En1GCF6l
NmZKWsqO4E8i1MUsHSf784QwDDMlnFzqg6z+X53hre+VK2rG5jaDs0E/fzbuter6WUOugo8zwX+Yk
Ql/UoCMA==;
Received: from i53875a3e.versanet.de ([83.135.90.62] helo=diego.localnet)
by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(Exim 4.94.2)
(envelope-from <heiko@xxxxxxxxx>)
id 1uLMEd-0002yn-Tg; Sat, 31 May 2025 15:26:51 +0200
From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= <heiko@xxxxxxxxx>
To: Linus Walleij <linus.walleij@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley <conor+dt@xxxxxxxxxx>,
Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= <ukleinek@xxxxxxxxxx>,
William Breathitt Gray <wbg@xxxxxxxxxx>,
Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>,
Kever Yang <kever.yang@xxxxxxxxxxxxxx>,
Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
Cc: linux-gpio@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-rockchip@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-pwm@xxxxxxxxxxxxxxx,
linux-iio@xxxxxxxxxxxxxxx, kernel@xxxxxxxxxxxxx,
Jonas Karlman <jonas@xxxxxxxxx>,
Detlev Casanova <detlev.casanova@xxxxxxxxxxxxx>,
Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
Subject:
Re: [PATCH 3/7] soc: rockchip: add utils header for things shared across
drivers
Date: Sat, 31 May 2025 15:26:50 +0200
Message-ID: <1895349.atdPhlSkOF@diego>
In-Reply-To: <20250408-rk3576-pwm-v1-3-a49286c2ca8e@xxxxxxxxxxxxx>
References:
<20250408-rk3576-pwm-v1-0-a49286c2ca8e@xxxxxxxxxxxxx>
<20250408-rk3576-pwm-v1-3-a49286c2ca8e@xxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi,

Am Dienstag, 8. April 2025, 14:32:15 Mitteleurop=C3=A4ische Sommerzeit schr=
ieb Nicolas Frattaroli:
> Rockchip hardware has some functionality that is shared across many
> hardware IPs, and therefore many drivers for them.
>=20
> Most notably is "HIWORD_UPDATE", a macro with slightly different
> semantics replicated across many a rockchip driver. It currently can be
> found defined in 19 files, of which 18 are Rockchip drivers.
>=20
> Instead of continuing this tradition with yet another version of it in
> my new drivers, add a rockchip soc header for utility macros and such.
> In this header, we define a new set of macros: REG_UPDATE_WE and its
> little brother REG_UPDATE_BIT_WE. These are purposefully named something
> other than "HIWORD_UPDATE", to reduce the likelihood of macro
> redefinitions and also reduce the potential to mislead any adopter into
> thinking this HIWORD_UPDATE is just like their HIWORD_UPDATE.
>=20
> Old drivers can be moved over to the new macros over the next while if
> their maintainers think it makes sense for them, which it probably does.
>=20
> Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>

when you're doing these fancy nice new macros, I think they might want to
be even more centrally located for _everyone_ :-) .


Because while true, Rockchip seems to be the biggest user of hiword-mask-
registers, they're not the only one.

Just simply grepping for HIWORD in kernel drivers revealed
=2D Sunplus sp7021 clock and reset drivers [0]
=2D a number of hisilicon clock drivers [1]
=2D some other clock drivers

and as the naming is not really standarized, I guess there will be more
of the same thing under different names in other places.

Similarly, we already have a FIELD_PREP_HIWORD in [2], so all in all
I think all of this wants to move in with the other bitfield stuff like
=46IELD_PREP.


Heiko


[0] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/clk/clk-sp7021.c#n42
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/reset/reset-sunplus.c
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/clk/hisilicon/clk-hi3620.c
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/clk/hisilicon/clk-hi3660.c
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/clk/hisilicon/clk-hi3670.c
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/clk/hisilicon/clk-hi6220.c
[2] https://elixir.bootlin.com/linux/v6.15/source/drivers/phy/rockchip/phy-=
rockchip-samsung-dcphy.c#L23

> ---
> include/soc/rockchip/utils.h | 76 ++++++++++++++++++++++++++++++++++++++=
++++++
> 1 file changed, 76 insertions(+)
>=20
> diff --git a/include/soc/rockchip/utils.h b/include/soc/rockchip/utils.h
> new file mode 100644
> index 0000000000000000000000000000000000000000..3349069e75ff51ebd7a22089a=
f796feafd227ffb
> --- /dev/null
> +++ b/include/soc/rockchip/utils.h
> @@ -0,0 +1,76 @@
> +/* SPDX-License-Identifier: GPL-2.0-or-later */
> +/*
> + * Copyright (c) 2025 Collabora Ltd.
> + *
> + * Utility types, inline functions, and macros that are used across seve=
ral
> + * Rockchip-specific drivers.
> + *
> + * Authors:
> + * Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
> + */
> +
> +#ifndef __SOC_ROCKCHIP_UTILS_H__
> +#define __SOC_ROCKCHIP_UTILS_H__
> +
> +#include <linux/bits.h>
> +#include <linux/build_bug.h>
> +#include <linux/limits.h>
> +
> +/*
> + * Incoming macro basilisks, stare directly at them at your own peril.
> + * As a gentle reminder to help with code comprehension: BUILD_BUG_ON_ZE=
RO
> + * is confusingly named; it's a version of BUILD_BUG_ON that evaluates t=
o zero
> + * if it does not trigger, i.e. the assertion within the macro still che=
cks
> + * for a truthy value, not zero.
> + */
> +
> +/**
> + * REG_UPDATE_WE - generate a register write value with a write-enable m=
ask
> + * @_val: unshifted value we wish to update between @_low and @_high
> + * @_low: index of the low bit of the bit range we want to update
> + * @_high: index of the high bit of the bit range we want to update
> + *
> + * This macro statically generates a value consisting of @_val shifted t=
o the
> + * left by @_low, and a write-enable mask in the upper 16 bits of the va=
lue
> + * that sets bit ``i << 16`` to ``1`` if bit ``i`` is within the @_low t=
o @_high
> + * range. Only up to bit (@_high - @_low) of @_val is used for safety, i=
=2Ee.
> + * trying to write a value that doesn't fit in the specified range will =
simply
> + * truncate it.
> + *
> + * This is useful for some hardware, like some of Rockchip's registers, =
where
> + * a 32-bit width register is divided into a value low half, and a write=
enable
> + * high half. Bits in the low half are only update if the corresponding =
bit in
> + * the high half is ``1``, allowing for lock-free atomic updates of a re=
gister.
> + *
> + * This macro replaces the venerable ``HIWORD_UPDATE``, which is copied =
and
> + * pasted in slightly different forms across many different Rockchip dri=
vers.
> + * Before switching drivers to use it, familiarise yourself with the sem=
antics
> + * of your specific ``HIWORD_UPDATE`` compared to this function-like mac=
ro's
> + * semantics.
> + *
> + * Return: the value, shifted into place, with the required write-enable=
bits
> + */
> +#define REG_UPDATE_WE(_val, _low, _high) ( \
> + BUILD_BUG_ON_ZERO(const_true((_low) > (_high))) + \
> + BUILD_BUG_ON_ZERO(const_true((_high) > 15)) + \
> + BUILD_BUG_ON_ZERO(const_true((_low) < 0)) + \
> + BUILD_BUG_ON_ZERO(const_true((u64) (_val) > U16_MAX)) + \
> + ((_val & GENMASK((_high) - (_low), 0)) << (_low) | \
> + (GENMASK((_high), (_low)) << 16)))
> +
> +/**
> + * REG_UPDATE_BIT_WE - update a bit with a write-enable mask
> + * @__val: new value of the bit, either ``0`` 0r ``1``
> + * @__bit: bit index to modify, 0 <=3D @__bit < 16.
> + *
> + * This is like REG_UPDATE_WE() but only modifies a single bit, thereby =
making
> + * invocation easier by avoiding having to pass a repeated value.
> + *
> + * Return: a value with bit @__bit set to @__val and @__bit << 16 set to=
``1``
> + */
> +#define REG_UPDATE_BIT_WE(__val, __bit) ( \
> + BUILD_BUG_ON_ZERO(const_true((__val) > 1)) + \
> + BUILD_BUG_ON_ZERO(const_true((__val) < 0)) + \
> + REG_UPDATE_WE((__val), (__bit), (__bit)))
> +
> +#endif /* __SOC_ROCKCHIP_UTILS_H__ */
>=20
>=20






Return-Path: <linux-kernel+bounces-669118-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 583EF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:28:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 2460D189E7A4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:28:21 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2608423C8A2;
Sat, 31 May 2025 13:27:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="wX8d+tdN"
Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA4CE12D758
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:27:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698078; cv=none; b=VdDw6EMtmo8dU3EUPORocH/uB7n0cf7DRjzmZryNHsE2bxhcBwlC9hkVZdS+KJxZBQ9+UW5BDpqnTNFe0q4qv27PeMq0IGDT986tpff/l3XwtIXiWDDl4oCVQWwnR+3Jc5bL1BEal1IwhZb0wL8/xLzv6alW0KDqfzaseMNc5CE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698078; c=relaxed/simple;
bh=dnZGVEmP8lQ2yjLmNRMNfQCk7G7HPch0ofnn/V7NCB4=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=cEku3i+V+T7Dpvl1ZXkiJLQZj4uPNI5u7GVNJFMi+3/IY+6EB5RAuCzykamwCMIgbbNAnKQCHI2p9Kw6HGki+0yE74QF58JtR+Mwd3Cx6WrcPw3i2KDxc434mvwvDDBe7dRxEmua2wJnosgYRx1CxJq7MGRKAcHzCm1Nsl/qdrU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=wX8d+tdN; arc=none smtp.client-ip=209.85.221.48
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-3a363d15c64so1962490f8f.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 06:27:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748698075; x=1749302875; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=AnpqmHgYLPI4hzWL/k8NVMbgoWIzDssICv/avNSiu+Y=;
b=wX8d+tdN+MZ9tvcGZ7FV8CJOVQc5kqRyZmn+Ve1vZur7aBsPbn/lC+GOWv7wX0eUFs
zwPtS2rqAZSA+Jt8QgeqJDSFWqvVFdVzApeI/4tDUqo6cuU8icd1FRCCPmRLcrzaSBvi
wlZJNZv39fFWuCCPXagtAWuX//IU9g2xASyowUudMoA+UdDqeL5GDHZQTOKmWJQnVcLH
WpxqgaTxWXcHg7hQTarjIrMDfOMRtyl9rRWOG+4ig/3FNr5rbaMJDxmMpDP2lFbPgD/f
RPhrmdW97s7vcInmFTJz2zqd+9AVgWAgvJLclYtP9BUqcrFZNQuCRX1FyniAs0N7oSvA
yqcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748698075; x=1749302875;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=AnpqmHgYLPI4hzWL/k8NVMbgoWIzDssICv/avNSiu+Y=;
b=IkL38tSMqZ16CxdoOljv1QV9rifT60xMuJY1vpaVPbBhcMWPYFqn8tfvzr9yM5MPB9
XDnJC7LvqkSAxD9Fe6YRo4JjiUdrRFGhpEbg3ZDuktn8OWO5tprKkrX4lD46EqwF6jdX
X2RAx7GZpJw2/gx2oj9PMjlYBbpyYB67EjxOyH1b+P+50hxb8aPY2ULxsQZ4MRHuKETu
uxIVSX2heS333uUTD6PhbkGgFPwE9RzuGduRQsj3oD6hLbDU+RQHTBKBz+SLnFeB70Ii
QNYH5Mqjoga5KWjMJqpmOIgTeDjMdaA9SyB4tJdSZ3WzaldSbOdnrrn7ctJIWuBnrj5q
nyBQ==
X-Forwarded-Encrypted: i=1; AJvYcCX6XOG92SXcOqpaXQ2guNrk5VM88Hl/xBj97rTzKBSgDjnaz01MOIi7uA9Bo0D6tCIHLl48NHUj9h0fOeM=@vger.kernel.org
X-Gm-Message-State: AOJu0Ywt44S9AN1pjgmYvKHijEuZFqh94aBx1YRHSM1Qj+1fa2KomFal
Eg+k76z/1zdKnL4SnmVRNBUB/WNA9N+1tIcOvtZnU8uGayLJ7XQA9vyXHI+InQLB0E/JuMGKUb7
hY8ag6WKPUacMDyUoPtUoNF62PPxWNgQcZETsaNzW
X-Gm-Gg: ASbGncu+SvCQhhuaAwG5FFsh8nu61iG0F24cDPChO/Oi73bE4TgsElyXelRgfIio1Oj
BjzjlWVQQcM8TW4hsoEww7GJWZOwlf//H427vg664BSUgbFJZ6XvAbW5i09niQK4Uccq1cT7mKx
ZPzXILEAZVzq2cNZZKrcr1y1bCUhEDvMRTdZklVSE3RYazkliZ9MEYhqM=
X-Google-Smtp-Source: AGHT+IHz4dGneNsz3I86jpWfUkTX0LdPSNEr1rfeK531BxSj7yoVtYDQ9VtZtSXN1TJMVHmK3I6ahTgb51RGXdmNNKo=
X-Received: by 2002:a5d:64ed:0:b0:3a4:e672:deef with SMTP id
ffacd0b85a97d-3a4f7a6cd16mr5014540f8f.36.1748698074866; Sat, 31 May 2025
06:27:54 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-1-82168470d472@xxxxxxxxxx> <DA9P6CSP6563.1OYPZXIP5S7N1@xxxxxxxxxx>
In-Reply-To: <DA9P6CSP6563.1OYPZXIP5S7N1@xxxxxxxxxx>
From: Alice Ryhl <aliceryhl@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:27:41 +0200
X-Gm-Features: AX0GCFsyOpodom7COF6Q47O6GbdlFNGm3NxxkLS6_i0l2e9VkeQHWf9q4FIx-EI
Message-ID: <CAH5fLgjoX5AEO8NvDdj+05HUtpoVUPpOa7ri5UG6Djp98vQDxQ@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 1/2] uaccess: rust: add strncpy_from_user
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: Miguel Ojeda <ojeda@xxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Trevor Gross <tmgross@xxxxxxxxx>, Danilo Krummrich <dakr@xxxxxxxxxx>, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 8:13=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> wr=
ote:
>
> This patch's title should be adjusted, as it's adding
> `raw_strncpy_from_user` and not `strncpy_from_user`.
>
> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
> > +/// Reads a nul-terminated string into `dst` and returns the length.
> > +///
> > +/// This reads from userspace until a NUL byte is encountered, or unti=
l `dst.len()` bytes have been
> > +/// read. Fails with [`EFAULT`] if a read happens on a bad address (so=
me data may have been
> > +/// copied). When the end of the buffer is encountered, no NUL byte is=
added, so the string is
> > +/// *not* guaranteed to be NUL-terminated when `Ok(dst.len())` is retu=
rned.
> > +///
> > +/// # Guarantees
> > +///
> > +/// When this function returns `Ok(len)`, it is guaranteed that the fi=
rst `len` bytes of `dst` are
> > +/// initialized and non-zero. Furthermore, if `len < dst.len()`, then =
`dst[len]` is a NUL byte.
> > +/// Unsafe code may rely on these guarantees.
>
> I would remove the last sentence, it already is implied.

I do not mind that.

> > +#[inline]
> > +#[expect(dead_code)]
> > +fn raw_strncpy_from_user(dst: &mut [MaybeUninit<u8>], src: UserPtr) ->=
Result<usize> {
> > + // CAST: Slice lengths are guaranteed to be `<=3D isize::MAX`.
> > + let len =3D dst.len() as isize;
> > +
> > + // SAFETY: `dst` is valid for writing `dst.len()` bytes.
> > + let res =3D unsafe {
> > + bindings::strncpy_from_user(dst.as_mut_ptr().cast::<c_char>(),=
src as *const c_char, len)
> > + };
> > +
> > + if res < 0 {
> > + return Err(Error::from_errno(res as i32));
> > + }
> > +
> > + #[cfg(CONFIG_RUST_OVERFLOW_CHECKS)]
> > + assert!(res <=3D len);
> > +
> > + Ok(res as usize)
>
> We probably should add a `GUARANTEES` comment here, no?

I can see the idea behind such comments, but I do not believe we've
used them so far.

Alice


Return-Path: <linux-kernel+bounces-669119-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 17CFD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:30:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 04E0517D917
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:30:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1FAE723C8A3;
Sat, 31 May 2025 13:29:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hvTlOkkH"
Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 06CED12D758;
Sat, 31 May 2025 13:29:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698196; cv=none; b=LyMGKxafafCXLDrg460R/Ymf/UsYBol3zoEjS5QudmSAM+EqqhYkmpWh/cACTlfUiCckM8CzdR2+nNJJuUBCfSHAmE0NYdtwvnP7SkfMVrfJNRVidVU/eg2H2sCafrb7nHFuYdzKhQlEp/DoaCV3RqBNqUj6lQZ17jzyZh6bqjM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698196; c=relaxed/simple;
bh=zSj9/PjjaEIB5uOSkwm3Y4/KEH+ENHZ6nr2kv8di2fA=;
h=Message-ID:Date:From:To:Cc:Subject:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=Sz6vXjFcISzr87UaPsxVZ3IkiP7TwjitpEn3EYvixyuPjnxpwn8RxWJj5gRwrmkOW40/FKV9Avgy1ZrzCNlxsIlsFgwTEL/80MxSL32qaHbItDmUleuKyc51zVysY7VVO9tatM300NFxosUvGEGO/jioqEo84q1GRtSviE/MyxE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hvTlOkkH; arc=none smtp.client-ip=209.85.221.54
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3a4f72cba73so1206476f8f.1;
Sat, 31 May 2025 06:29:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748698192; x=1749302992; darn=vger.kernel.org;
h=in-reply-to:content-disposition:mime-version:references:subject:cc
:to:from:date:message-id:from:to:cc:subject:date:message-id:reply-to;
bh=W4v4c+bhDQgFaiZRLYL4mV2XqDTJDvDSCztvfLO0B1k=;
b=hvTlOkkHmyuHotLFKMzPDhmP6D08RydLEel4xkAkNiDdSA5la+v5bDl/ba+lFylaKi
TV2r9nOUcAmbZxTFDXq7ED1B15MLNqOW33jxcKqPWzEhzOhLCTURwRdQl4zik/ZelHW7
crNcD64Fx/Y6qUQSrY8xtelEgN/1ZaJOiuGdmhZ5PMtKLKjfL/2CF97znnkCljmIGOVU
zc9lWSd+ZXCBs59ltYxp5iNzvaD4aqHBpGG599x2MglCTkvs97/320X6/dKNvPwfDJ0Q
OryTN/DCZoNuQYX+BSs6F1swrvtGXl9pcXAZ0U6SkuIj9IyOtYSSDz75qMv5/tTltT7k
Fjbg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748698192; x=1749302992;
h=in-reply-to:content-disposition:mime-version:references:subject:cc
:to:from:date:message-id:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=W4v4c+bhDQgFaiZRLYL4mV2XqDTJDvDSCztvfLO0B1k=;
b=nfamMdHzWpoMjCsm5Ra9Ul/Jg2E1gyntjq1LuH1iC/5db1k1ErIVtQEEDq+qXuc0Sz
0FvB6J8qt9mSDHULsXyNC2/1NF4YbyTOi9JesYiNpFC9sKMe1r/Dzcmq5Zp5T6n62fc/
+eeorHob/bL0Ivpmjdp4XJbHCQxxJty0oKncDo+9T1+lR5olXs5SThEq8MUhn+gguv2R
pdbyAZznDxzhPgrsrf4rVWYk0q13DYRJH1NZ2cRnLzljqh5zPXQhlOHy92jT1jnsgrKA
NrZg2R/GPPrNRjj5rzmj4F+jfDeQPIHxUOra44uWU1ttKVuCWxjq6uj3lVsopV/r0DSg
s4nQ==
X-Forwarded-Encrypted: i=1; AJvYcCU5/x0Xm1gkLnyF6d0cAuwYW/iaUHAoyF42Uau5Z3PNR23OoTEFhqlz5gdKUD9bZznspZ2vmjKspcQAzBWV@xxxxxxxxxxxxxxx, AJvYcCUgEG+5QS+WdAhSRtCqZZoyFMEZZoetcf9tgl4BarOWONP2r/v9ZOVgVXoQ5CidQ8xhtIkEFQs4zREH@xxxxxxxxxxxxxxx, AJvYcCWlN2wRkWlPPOi8yOGxUyQAtmcfNIzAoiA8bHsHmFEtRvBMdXxG4WbwLUAn5tWs3ncNyPTSnZI71Ec4fw==@vger.kernel.org
X-Gm-Message-State: AOJu0Yxf2W4YY3ce34NFrsngmQEn52GT+yvqw2LFhz847oS1hkr57V7Q
b6QCPGC/BxRx38L/aSRP9Uyb6ZEdPWmLOj7J3Hi/uHY7r81pBSi9Xzwu
X-Gm-Gg: ASbGnctSE+5TClFe3368iGAyW8ER5Uw++ZqW9X+uzusXAlmVlnaxZwZhRS+UfaqAaIh
CfeqQ7m4aBuvoG0bql+F8qAhr4UWZr3yQZGEs9HjOteXpT3dGRhLuJyr7hS4pAK3rkWm3Gz+wyB
a5iYudmMP/rw3YC8KydaKlpboaYhLXPnUqDlch6OtiMxc1XpcVpe5S1AZtFDnIPhWp03yQ0azIR
CqwUqVfnOLYcTnBvO4HPrNvUEPaWtx6+fHaiDR9ro033wxWACMDQcL2Pzkg8pl7sxmWCnUDKBHp
hNEZVKIXdt/fG3aXnX6LW+W2MCm2/CEdmPM4WA5E1Ks/RmmgXPrLYL2cPNO/
X-Google-Smtp-Source: AGHT+IEsx8KC2h3Xow01s+ziLAeI3k6QomVjm2yFbyU8tdvm/GXEy75IolDw690RJ/ZWcIpFA/ku8w==
X-Received: by 2002:a05:600c:1da6:b0:442:d9fb:d9a5 with SMTP id 5b1f17b1804b1-450d6b7cc08mr58334415e9.9.1748698191872;
Sat, 31 May 2025 06:29:51 -0700 (PDT)
Received: from Ansuel-XPS. ([62.18.208.82])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d7f8f1e7sm50001555e9.1.2025.05.31.06.29.49
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 06:29:50 -0700 (PDT)
Message-ID: <683b044e.050a0220.11338b.f6c8@xxxxxxxxxxxxx>
X-Google-Original-Message-ID: <aDsETJJtJHbxdI4a@Ansuel-XPS.>
Date: Sat, 31 May 2025 15:29:48 +0200
From: Christian Marangi <ansuelsmth@xxxxxxxxx>
To: Lorenzo Bianconi <lorenzo@xxxxxxxxxx>
Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Sean Wang <sean.wang@xxxxxxxxxx>,
Matthias Brugger <matthias.bgg@xxxxxxxxx>,
AngeloGioacchino Del Regno <angelogioacchino.delregno@xxxxxxxxxxxxx>,
Benjamin Larsson <benjamin.larsson@xxxxxxxxxx>,
linux-mediatek@xxxxxxxxxxxxxxxxxxx, linux-gpio@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Subject: Re: [PATCH 2/6] pinctrl: mediatek: airoha: generalize
pins/group/function/confs handling
References: <20250527222040.32000-1-ansuelsmth@xxxxxxxxx>
<20250527222040.32000-3-ansuelsmth@xxxxxxxxx>
<aDbESUHdO4DgOtsm@lore-desk>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <aDbESUHdO4DgOtsm@lore-desk>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Wed, May 28, 2025 at 10:07:37AM +0200, Lorenzo Bianconi wrote:
> > In preparation for support of Airoha AN7583, generalize
> > pins/group/function/confs handling and move them in match_data.
> > Inner function will base the values on the pinctrl priv struct instead of
> > relying on hardcoded struct.
> >
> > This permits to use different PIN data while keeping the same logic.
> >
> > Signed-off-by: Christian Marangi <ansuelsmth@xxxxxxxxx>
>
> Hi Christian,
>
> I think the approach is fine, just some comments inline.
>
> Regards,
> Lorenzo
>
> > ---
> > drivers/pinctrl/mediatek/pinctrl-airoha.c | 569 ++++++++++++----------
> > 1 file changed, 319 insertions(+), 250 deletions(-)
> >
> > diff --git a/drivers/pinctrl/mediatek/pinctrl-airoha.c b/drivers/pinctrl/mediatek/pinctrl-airoha.c
> > index 8ef7f88477aa..8af9109db992 100644
> > --- a/drivers/pinctrl/mediatek/pinctrl-airoha.c
> > +++ b/drivers/pinctrl/mediatek/pinctrl-airoha.c
> > @@ -30,20 +30,20 @@
> > #include "../pinconf.h"
> > #include "../pinmux.h"
> >
> > -#define PINCTRL_PIN_GROUP(id) \
> > - PINCTRL_PINGROUP(#id, id##_pins, ARRAY_SIZE(id##_pins))
> > +#define PINCTRL_PIN_GROUP(id, table) \
>
> since this is now just used for the name pointer, I guess you can rename it in
> "name".
>

Sure.

> > + PINCTRL_PINGROUP(id, table##_pins, ARRAY_SIZE(table##_pins))
> >
> > -#define PINCTRL_FUNC_DESC(id) \
> > +#define PINCTRL_FUNC_DESC(id, table) \
> > { \
> > .desc = { \
> > .func = { \
> > - .name = #id, \
> > - .groups = id##_groups, \
> > - .ngroups = ARRAY_SIZE(id##_groups), \
> > + .name = id, \
> > + .groups = table##_groups, \
> > + .ngroups = ARRAY_SIZE(table##_groups), \
> > } \
> > }, \
> > - .groups = id##_func_group, \
> > - .group_size = ARRAY_SIZE(id##_func_group), \
> > + .groups = table##_func_group, \
> > + .group_size = ARRAY_SIZE(table##_func_group), \
> > }
> >
> > #define PINCTRL_CONF_DESC(p, offset, mask) \
> > @@ -359,16 +359,46 @@ struct airoha_pinctrl_gpiochip {
> > u32 irq_type[AIROHA_NUM_PINS];
> > };
> >
> > +struct airoha_pinctrl_confs_info {
> > + const struct airoha_pinctrl_conf *confs;
> > + unsigned int num_confs;
> > +};
> > +
> > +enum airoha_pinctrl_confs_type {
> > + AIROHA_PINCTRL_CONFS_PULLUP,
> > + AIROHA_PINCTRL_CONFS_PULLDOWN,
> > + AIROHA_PINCTRL_CONFS_DRIVE_E2,
> > + AIROHA_PINCTRL_CONFS_DRIVE_E4,
> > + AIROHA_PINCTRL_CONFS_PCIE_RST_OD,
> > +
> > + AIROHA_PINCTRL_CONFS_MAX,
>
> I guess with the approach suggested below we can get rid of AIROHA_PINCTRL_CONFS_MAX
>
> > +};
> > +
> > struct airoha_pinctrl {
> > struct pinctrl_dev *ctrl;
> >
> > + struct pinctrl_desc desc;
> > + const struct pingroup *grps;
> > + const struct airoha_pinctrl_func *funcs;
> > + const struct airoha_pinctrl_confs_info *confs_info;
> > +
> > struct regmap *chip_scu;
> > struct regmap *regmap;
> >
> > struct airoha_pinctrl_gpiochip gpiochip;
> > };
> >
> > -static struct pinctrl_pin_desc airoha_pinctrl_pins[] = {
> > +struct airoha_pinctrl_match_data {
> > + const struct pinctrl_pin_desc *pins;
> > + const unsigned int num_pins;
> > + const struct pingroup *grps;
> > + const unsigned int num_grps;
> > + const struct airoha_pinctrl_func *funcs;
> > + const unsigned int num_funcs;
> > + const struct airoha_pinctrl_confs_info confs_info[AIROHA_PINCTRL_CONFS_MAX];
>
> In order to generalize the approach, I guess we can use a
> airoha_pinctrl_confs_info pointer here, something like:
>
> const struct airoha_pinctrl_confs_info *confs_info;
> const unsigned int num_confs;
>

You mean putting the entry on a dedicated table.

For num confs I'm not sure as we use the same function and in theory
every pinctrl needs to define them.

> > +};
> > +
> > +static struct pinctrl_pin_desc en7581_pinctrl_pins[] = {
> > PINCTRL_PIN(0, "uart1_txd"),
> > PINCTRL_PIN(1, "uart1_rxd"),
> > PINCTRL_PIN(2, "i2c_scl"),
> > @@ -429,172 +459,172 @@ static struct pinctrl_pin_desc airoha_pinctrl_pins[] = {
> > PINCTRL_PIN(63, "pcie_reset2"),
> > };
> >
> > -static const int pon_pins[] = { 49, 50, 51, 52, 53, 54 };
> > -static const int pon_tod_1pps_pins[] = { 46 };
> > -static const int gsw_tod_1pps_pins[] = { 46 };
> > -static const int sipo_pins[] = { 16, 17 };
> > -static const int sipo_rclk_pins[] = { 16, 17, 43 };
> > -static const int mdio_pins[] = { 14, 15 };
> > -static const int uart2_pins[] = { 48, 55 };
> > -static const int uart2_cts_rts_pins[] = { 46, 47 };
> > -static const int hsuart_pins[] = { 28, 29 };
> > -static const int hsuart_cts_rts_pins[] = { 26, 27 };
> > -static const int uart4_pins[] = { 38, 39 };
> > -static const int uart5_pins[] = { 18, 19 };
> > -static const int i2c0_pins[] = { 2, 3 };
> > -static const int i2c1_pins[] = { 14, 15 };
> > -static const int jtag_udi_pins[] = { 16, 17, 18, 19, 20 };
> > -static const int jtag_dfd_pins[] = { 16, 17, 18, 19, 20 };
> > -static const int i2s_pins[] = { 26, 27, 28, 29 };
> > -static const int pcm1_pins[] = { 22, 23, 24, 25 };
> > -static const int pcm2_pins[] = { 18, 19, 20, 21 };
> > -static const int spi_quad_pins[] = { 32, 33 };
> > -static const int spi_pins[] = { 4, 5, 6, 7 };
> > -static const int spi_cs1_pins[] = { 34 };
> > -static const int pcm_spi_pins[] = { 18, 19, 20, 21, 22, 23, 24, 25 };
> > -static const int pcm_spi_int_pins[] = { 14 };
> > -static const int pcm_spi_rst_pins[] = { 15 };
> > -static const int pcm_spi_cs1_pins[] = { 43 };
> > -static const int pcm_spi_cs2_pins[] = { 40 };
> > -static const int pcm_spi_cs2_p128_pins[] = { 40 };
> > -static const int pcm_spi_cs2_p156_pins[] = { 40 };
> > -static const int pcm_spi_cs3_pins[] = { 41 };
> > -static const int pcm_spi_cs4_pins[] = { 42 };
> > -static const int emmc_pins[] = { 4, 5, 6, 30, 31, 32, 33, 34, 35, 36, 37 };
> > -static const int pnand_pins[] = { 4, 5, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42 };
> > -static const int gpio0_pins[] = { 13 };
> > -static const int gpio1_pins[] = { 14 };
> > -static const int gpio2_pins[] = { 15 };
> > -static const int gpio3_pins[] = { 16 };
> > -static const int gpio4_pins[] = { 17 };
> > -static const int gpio5_pins[] = { 18 };
> > -static const int gpio6_pins[] = { 19 };
> > -static const int gpio7_pins[] = { 20 };
> > -static const int gpio8_pins[] = { 21 };
> > -static const int gpio9_pins[] = { 22 };
> > -static const int gpio10_pins[] = { 23 };
> > -static const int gpio11_pins[] = { 24 };
> > -static const int gpio12_pins[] = { 25 };
> > -static const int gpio13_pins[] = { 26 };
> > -static const int gpio14_pins[] = { 27 };
> > -static const int gpio15_pins[] = { 28 };
> > -static const int gpio16_pins[] = { 29 };
> > -static const int gpio17_pins[] = { 30 };
> > -static const int gpio18_pins[] = { 31 };
> > -static const int gpio19_pins[] = { 32 };
> > -static const int gpio20_pins[] = { 33 };
> > -static const int gpio21_pins[] = { 34 };
> > -static const int gpio22_pins[] = { 35 };
> > -static const int gpio23_pins[] = { 36 };
> > -static const int gpio24_pins[] = { 37 };
> > -static const int gpio25_pins[] = { 38 };
> > -static const int gpio26_pins[] = { 39 };
> > -static const int gpio27_pins[] = { 40 };
> > -static const int gpio28_pins[] = { 41 };
> > -static const int gpio29_pins[] = { 42 };
> > -static const int gpio30_pins[] = { 43 };
> > -static const int gpio31_pins[] = { 44 };
> > -static const int gpio33_pins[] = { 46 };
> > -static const int gpio34_pins[] = { 47 };
> > -static const int gpio35_pins[] = { 48 };
> > -static const int gpio36_pins[] = { 49 };
> > -static const int gpio37_pins[] = { 50 };
> > -static const int gpio38_pins[] = { 51 };
> > -static const int gpio39_pins[] = { 52 };
> > -static const int gpio40_pins[] = { 53 };
> > -static const int gpio41_pins[] = { 54 };
> > -static const int gpio42_pins[] = { 55 };
> > -static const int gpio43_pins[] = { 56 };
> > -static const int gpio44_pins[] = { 57 };
> > -static const int gpio45_pins[] = { 58 };
> > -static const int gpio46_pins[] = { 59 };
> > -static const int pcie_reset0_pins[] = { 61 };
> > -static const int pcie_reset1_pins[] = { 62 };
> > -static const int pcie_reset2_pins[] = { 63 };
> > -
> > -static const struct pingroup airoha_pinctrl_groups[] = {
> > - PINCTRL_PIN_GROUP(pon),
> > - PINCTRL_PIN_GROUP(pon_tod_1pps),
> > - PINCTRL_PIN_GROUP(gsw_tod_1pps),
> > - PINCTRL_PIN_GROUP(sipo),
> > - PINCTRL_PIN_GROUP(sipo_rclk),
> > - PINCTRL_PIN_GROUP(mdio),
> > - PINCTRL_PIN_GROUP(uart2),
> > - PINCTRL_PIN_GROUP(uart2_cts_rts),
> > - PINCTRL_PIN_GROUP(hsuart),
> > - PINCTRL_PIN_GROUP(hsuart_cts_rts),
> > - PINCTRL_PIN_GROUP(uart4),
> > - PINCTRL_PIN_GROUP(uart5),
> > - PINCTRL_PIN_GROUP(i2c0),
> > - PINCTRL_PIN_GROUP(i2c1),
> > - PINCTRL_PIN_GROUP(jtag_udi),
> > - PINCTRL_PIN_GROUP(jtag_dfd),
> > - PINCTRL_PIN_GROUP(i2s),
> > - PINCTRL_PIN_GROUP(pcm1),
> > - PINCTRL_PIN_GROUP(pcm2),
> > - PINCTRL_PIN_GROUP(spi),
> > - PINCTRL_PIN_GROUP(spi_quad),
> > - PINCTRL_PIN_GROUP(spi_cs1),
> > - PINCTRL_PIN_GROUP(pcm_spi),
> > - PINCTRL_PIN_GROUP(pcm_spi_int),
> > - PINCTRL_PIN_GROUP(pcm_spi_rst),
> > - PINCTRL_PIN_GROUP(pcm_spi_cs1),
> > - PINCTRL_PIN_GROUP(pcm_spi_cs2_p128),
> > - PINCTRL_PIN_GROUP(pcm_spi_cs2_p156),
> > - PINCTRL_PIN_GROUP(pcm_spi_cs2),
> > - PINCTRL_PIN_GROUP(pcm_spi_cs3),
> > - PINCTRL_PIN_GROUP(pcm_spi_cs4),
> > - PINCTRL_PIN_GROUP(emmc),
> > - PINCTRL_PIN_GROUP(pnand),
> > - PINCTRL_PIN_GROUP(gpio0),
> > - PINCTRL_PIN_GROUP(gpio1),
> > - PINCTRL_PIN_GROUP(gpio2),
> > - PINCTRL_PIN_GROUP(gpio3),
> > - PINCTRL_PIN_GROUP(gpio4),
> > - PINCTRL_PIN_GROUP(gpio5),
> > - PINCTRL_PIN_GROUP(gpio6),
> > - PINCTRL_PIN_GROUP(gpio7),
> > - PINCTRL_PIN_GROUP(gpio8),
> > - PINCTRL_PIN_GROUP(gpio9),
> > - PINCTRL_PIN_GROUP(gpio10),
> > - PINCTRL_PIN_GROUP(gpio11),
> > - PINCTRL_PIN_GROUP(gpio12),
> > - PINCTRL_PIN_GROUP(gpio13),
> > - PINCTRL_PIN_GROUP(gpio14),
> > - PINCTRL_PIN_GROUP(gpio15),
> > - PINCTRL_PIN_GROUP(gpio16),
> > - PINCTRL_PIN_GROUP(gpio17),
> > - PINCTRL_PIN_GROUP(gpio18),
> > - PINCTRL_PIN_GROUP(gpio19),
> > - PINCTRL_PIN_GROUP(gpio20),
> > - PINCTRL_PIN_GROUP(gpio21),
> > - PINCTRL_PIN_GROUP(gpio22),
> > - PINCTRL_PIN_GROUP(gpio23),
> > - PINCTRL_PIN_GROUP(gpio24),
> > - PINCTRL_PIN_GROUP(gpio25),
> > - PINCTRL_PIN_GROUP(gpio26),
> > - PINCTRL_PIN_GROUP(gpio27),
> > - PINCTRL_PIN_GROUP(gpio28),
> > - PINCTRL_PIN_GROUP(gpio29),
> > - PINCTRL_PIN_GROUP(gpio30),
> > - PINCTRL_PIN_GROUP(gpio31),
> > - PINCTRL_PIN_GROUP(gpio33),
> > - PINCTRL_PIN_GROUP(gpio34),
> > - PINCTRL_PIN_GROUP(gpio35),
> > - PINCTRL_PIN_GROUP(gpio36),
> > - PINCTRL_PIN_GROUP(gpio37),
> > - PINCTRL_PIN_GROUP(gpio38),
> > - PINCTRL_PIN_GROUP(gpio39),
> > - PINCTRL_PIN_GROUP(gpio40),
> > - PINCTRL_PIN_GROUP(gpio41),
> > - PINCTRL_PIN_GROUP(gpio42),
> > - PINCTRL_PIN_GROUP(gpio43),
> > - PINCTRL_PIN_GROUP(gpio44),
> > - PINCTRL_PIN_GROUP(gpio45),
> > - PINCTRL_PIN_GROUP(gpio46),
> > - PINCTRL_PIN_GROUP(pcie_reset0),
> > - PINCTRL_PIN_GROUP(pcie_reset1),
> > - PINCTRL_PIN_GROUP(pcie_reset2),
> > +static const int en7581_pon_pins[] = { 49, 50, 51, 52, 53, 54 };
> > +static const int en7581_pon_tod_1pps_pins[] = { 46 };
> > +static const int en7581_gsw_tod_1pps_pins[] = { 46 };
> > +static const int en7581_sipo_pins[] = { 16, 17 };
> > +static const int en7581_sipo_rclk_pins[] = { 16, 17, 43 };
> > +static const int en7581_mdio_pins[] = { 14, 15 };
> > +static const int en7581_uart2_pins[] = { 48, 55 };
> > +static const int en7581_uart2_cts_rts_pins[] = { 46, 47 };
> > +static const int en7581_hsuart_pins[] = { 28, 29 };
> > +static const int en7581_hsuart_cts_rts_pins[] = { 26, 27 };
> > +static const int en7581_uart4_pins[] = { 38, 39 };
> > +static const int en7581_uart5_pins[] = { 18, 19 };
> > +static const int en7581_i2c0_pins[] = { 2, 3 };
> > +static const int en7581_i2c1_pins[] = { 14, 15 };
> > +static const int en7581_jtag_udi_pins[] = { 16, 17, 18, 19, 20 };
> > +static const int en7581_jtag_dfd_pins[] = { 16, 17, 18, 19, 20 };
> > +static const int en7581_i2s_pins[] = { 26, 27, 28, 29 };
> > +static const int en7581_pcm1_pins[] = { 22, 23, 24, 25 };
> > +static const int en7581_pcm2_pins[] = { 18, 19, 20, 21 };
> > +static const int en7581_spi_quad_pins[] = { 32, 33 };
> > +static const int en7581_spi_pins[] = { 4, 5, 6, 7 };
> > +static const int en7581_spi_cs1_pins[] = { 34 };
> > +static const int en7581_pcm_spi_pins[] = { 18, 19, 20, 21, 22, 23, 24, 25 };
> > +static const int en7581_pcm_spi_int_pins[] = { 14 };
> > +static const int en7581_pcm_spi_rst_pins[] = { 15 };
> > +static const int en7581_pcm_spi_cs1_pins[] = { 43 };
> > +static const int en7581_pcm_spi_cs2_pins[] = { 40 };
> > +static const int en7581_pcm_spi_cs2_p128_pins[] = { 40 };
> > +static const int en7581_pcm_spi_cs2_p156_pins[] = { 40 };
> > +static const int en7581_pcm_spi_cs3_pins[] = { 41 };
> > +static const int en7581_pcm_spi_cs4_pins[] = { 42 };
> > +static const int en7581_emmc_pins[] = { 4, 5, 6, 30, 31, 32, 33, 34, 35, 36, 37 };
> > +static const int en7581_pnand_pins[] = { 4, 5, 6, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42 };
> > +static const int en7581_gpio0_pins[] = { 13 };
> > +static const int en7581_gpio1_pins[] = { 14 };
> > +static const int en7581_gpio2_pins[] = { 15 };
> > +static const int en7581_gpio3_pins[] = { 16 };
> > +static const int en7581_gpio4_pins[] = { 17 };
> > +static const int en7581_gpio5_pins[] = { 18 };
> > +static const int en7581_gpio6_pins[] = { 19 };
> > +static const int en7581_gpio7_pins[] = { 20 };
> > +static const int en7581_gpio8_pins[] = { 21 };
> > +static const int en7581_gpio9_pins[] = { 22 };
> > +static const int en7581_gpio10_pins[] = { 23 };
> > +static const int en7581_gpio11_pins[] = { 24 };
> > +static const int en7581_gpio12_pins[] = { 25 };
> > +static const int en7581_gpio13_pins[] = { 26 };
> > +static const int en7581_gpio14_pins[] = { 27 };
> > +static const int en7581_gpio15_pins[] = { 28 };
> > +static const int en7581_gpio16_pins[] = { 29 };
> > +static const int en7581_gpio17_pins[] = { 30 };
> > +static const int en7581_gpio18_pins[] = { 31 };
> > +static const int en7581_gpio19_pins[] = { 32 };
> > +static const int en7581_gpio20_pins[] = { 33 };
> > +static const int en7581_gpio21_pins[] = { 34 };
> > +static const int en7581_gpio22_pins[] = { 35 };
> > +static const int en7581_gpio23_pins[] = { 36 };
> > +static const int en7581_gpio24_pins[] = { 37 };
> > +static const int en7581_gpio25_pins[] = { 38 };
> > +static const int en7581_gpio26_pins[] = { 39 };
> > +static const int en7581_gpio27_pins[] = { 40 };
> > +static const int en7581_gpio28_pins[] = { 41 };
> > +static const int en7581_gpio29_pins[] = { 42 };
> > +static const int en7581_gpio30_pins[] = { 43 };
> > +static const int en7581_gpio31_pins[] = { 44 };
> > +static const int en7581_gpio33_pins[] = { 46 };
> > +static const int en7581_gpio34_pins[] = { 47 };
> > +static const int en7581_gpio35_pins[] = { 48 };
> > +static const int en7581_gpio36_pins[] = { 49 };
> > +static const int en7581_gpio37_pins[] = { 50 };
> > +static const int en7581_gpio38_pins[] = { 51 };
> > +static const int en7581_gpio39_pins[] = { 52 };
> > +static const int en7581_gpio40_pins[] = { 53 };
> > +static const int en7581_gpio41_pins[] = { 54 };
> > +static const int en7581_gpio42_pins[] = { 55 };
> > +static const int en7581_gpio43_pins[] = { 56 };
> > +static const int en7581_gpio44_pins[] = { 57 };
> > +static const int en7581_gpio45_pins[] = { 58 };
> > +static const int en7581_gpio46_pins[] = { 59 };
> > +static const int en7581_pcie_reset0_pins[] = { 61 };
> > +static const int en7581_pcie_reset1_pins[] = { 62 };
> > +static const int en7581_pcie_reset2_pins[] = { 63 };
> > +
> > +static const struct pingroup en7581_pinctrl_groups[] = {
> > + PINCTRL_PIN_GROUP("pon", en7581_pon),
> > + PINCTRL_PIN_GROUP("pon_tod_1pps", en7581_pon_tod_1pps),
> > + PINCTRL_PIN_GROUP("gsw_tod_1pps", en7581_gsw_tod_1pps),
> > + PINCTRL_PIN_GROUP("sipo", en7581_sipo),
> > + PINCTRL_PIN_GROUP("sipo_rclk", en7581_sipo_rclk),
> > + PINCTRL_PIN_GROUP("mdio", en7581_mdio),
> > + PINCTRL_PIN_GROUP("uart2", en7581_uart2),
> > + PINCTRL_PIN_GROUP("uart2_cts_rts", en7581_uart2_cts_rts),
> > + PINCTRL_PIN_GROUP("hsuart", en7581_hsuart),
> > + PINCTRL_PIN_GROUP("hsuart_cts_rts", en7581_hsuart_cts_rts),
> > + PINCTRL_PIN_GROUP("uart4", en7581_uart4),
> > + PINCTRL_PIN_GROUP("uart5", en7581_uart5),
> > + PINCTRL_PIN_GROUP("i2c0", en7581_i2c0),
> > + PINCTRL_PIN_GROUP("i2c1", en7581_i2c1),
> > + PINCTRL_PIN_GROUP("jtag_udi", en7581_jtag_udi),
> > + PINCTRL_PIN_GROUP("jtag_dfd", en7581_jtag_dfd),
> > + PINCTRL_PIN_GROUP("i2s", en7581_i2s),
> > + PINCTRL_PIN_GROUP("pcm1", en7581_pcm1),
> > + PINCTRL_PIN_GROUP("pcm2", en7581_pcm2),
> > + PINCTRL_PIN_GROUP("spi", en7581_spi),
> > + PINCTRL_PIN_GROUP("spi_quad", en7581_spi_quad),
> > + PINCTRL_PIN_GROUP("spi_cs1", en7581_spi_cs1),
> > + PINCTRL_PIN_GROUP("pcm_spi", en7581_pcm_spi),
> > + PINCTRL_PIN_GROUP("pcm_spi_int", en7581_pcm_spi_int),
> > + PINCTRL_PIN_GROUP("pcm_spi_rst", en7581_pcm_spi_rst),
> > + PINCTRL_PIN_GROUP("pcm_spi_cs1", en7581_pcm_spi_cs1),
> > + PINCTRL_PIN_GROUP("pcm_spi_cs2_p128", en7581_pcm_spi_cs2_p128),
> > + PINCTRL_PIN_GROUP("pcm_spi_cs2_p156", en7581_pcm_spi_cs2_p156),
> > + PINCTRL_PIN_GROUP("pcm_spi_cs2", en7581_pcm_spi_cs2),
> > + PINCTRL_PIN_GROUP("pcm_spi_cs3", en7581_pcm_spi_cs3),
> > + PINCTRL_PIN_GROUP("pcm_spi_cs4", en7581_pcm_spi_cs4),
> > + PINCTRL_PIN_GROUP("emmc", en7581_emmc),
> > + PINCTRL_PIN_GROUP("pnand", en7581_pnand),
> > + PINCTRL_PIN_GROUP("gpio0", en7581_gpio0),
> > + PINCTRL_PIN_GROUP("gpio1", en7581_gpio1),
> > + PINCTRL_PIN_GROUP("gpio2", en7581_gpio2),
> > + PINCTRL_PIN_GROUP("gpio3", en7581_gpio3),
> > + PINCTRL_PIN_GROUP("gpio4", en7581_gpio4),
> > + PINCTRL_PIN_GROUP("gpio5", en7581_gpio5),
> > + PINCTRL_PIN_GROUP("gpio6", en7581_gpio6),
> > + PINCTRL_PIN_GROUP("gpio7", en7581_gpio7),
> > + PINCTRL_PIN_GROUP("gpio8", en7581_gpio8),
> > + PINCTRL_PIN_GROUP("gpio9", en7581_gpio9),
> > + PINCTRL_PIN_GROUP("gpio10", en7581_gpio10),
> > + PINCTRL_PIN_GROUP("gpio11", en7581_gpio11),
> > + PINCTRL_PIN_GROUP("gpio12", en7581_gpio12),
> > + PINCTRL_PIN_GROUP("gpio13", en7581_gpio13),
> > + PINCTRL_PIN_GROUP("gpio14", en7581_gpio14),
> > + PINCTRL_PIN_GROUP("gpio15", en7581_gpio15),
> > + PINCTRL_PIN_GROUP("gpio16", en7581_gpio16),
> > + PINCTRL_PIN_GROUP("gpio17", en7581_gpio17),
> > + PINCTRL_PIN_GROUP("gpio18", en7581_gpio18),
> > + PINCTRL_PIN_GROUP("gpio19", en7581_gpio19),
> > + PINCTRL_PIN_GROUP("gpio20", en7581_gpio20),
> > + PINCTRL_PIN_GROUP("gpio21", en7581_gpio21),
> > + PINCTRL_PIN_GROUP("gpio22", en7581_gpio22),
> > + PINCTRL_PIN_GROUP("gpio23", en7581_gpio23),
> > + PINCTRL_PIN_GROUP("gpio24", en7581_gpio24),
> > + PINCTRL_PIN_GROUP("gpio25", en7581_gpio25),
> > + PINCTRL_PIN_GROUP("gpio26", en7581_gpio26),
> > + PINCTRL_PIN_GROUP("gpio27", en7581_gpio27),
> > + PINCTRL_PIN_GROUP("gpio28", en7581_gpio28),
> > + PINCTRL_PIN_GROUP("gpio29", en7581_gpio29),
> > + PINCTRL_PIN_GROUP("gpio30", en7581_gpio30),
> > + PINCTRL_PIN_GROUP("gpio31", en7581_gpio31),
> > + PINCTRL_PIN_GROUP("gpio33", en7581_gpio33),
> > + PINCTRL_PIN_GROUP("gpio34", en7581_gpio34),
> > + PINCTRL_PIN_GROUP("gpio35", en7581_gpio35),
> > + PINCTRL_PIN_GROUP("gpio36", en7581_gpio36),
> > + PINCTRL_PIN_GROUP("gpio37", en7581_gpio37),
> > + PINCTRL_PIN_GROUP("gpio38", en7581_gpio38),
> > + PINCTRL_PIN_GROUP("gpio39", en7581_gpio39),
> > + PINCTRL_PIN_GROUP("gpio40", en7581_gpio40),
> > + PINCTRL_PIN_GROUP("gpio41", en7581_gpio41),
> > + PINCTRL_PIN_GROUP("gpio42", en7581_gpio42),
> > + PINCTRL_PIN_GROUP("gpio43", en7581_gpio43),
> > + PINCTRL_PIN_GROUP("gpio44", en7581_gpio44),
> > + PINCTRL_PIN_GROUP("gpio45", en7581_gpio45),
> > + PINCTRL_PIN_GROUP("gpio46", en7581_gpio46),
> > + PINCTRL_PIN_GROUP("pcie_reset0", en7581_pcie_reset0),
> > + PINCTRL_PIN_GROUP("pcie_reset1", en7581_pcie_reset1),
> > + PINCTRL_PIN_GROUP("pcie_reset2", en7581_pcie_reset2),
> > };
> >
> > static const char *const pon_groups[] = { "pon" };
> > @@ -1957,33 +1987,33 @@ static const struct airoha_pinctrl_func_group phy4_led1_func_group[] = {
> > },
> > };
> >
> > -static const struct airoha_pinctrl_func airoha_pinctrl_funcs[] = {
> > - PINCTRL_FUNC_DESC(pon),
> > - PINCTRL_FUNC_DESC(tod_1pps),
> > - PINCTRL_FUNC_DESC(sipo),
> > - PINCTRL_FUNC_DESC(mdio),
> > - PINCTRL_FUNC_DESC(uart),
> > - PINCTRL_FUNC_DESC(i2c),
> > - PINCTRL_FUNC_DESC(jtag),
> > - PINCTRL_FUNC_DESC(pcm),
> > - PINCTRL_FUNC_DESC(spi),
> > - PINCTRL_FUNC_DESC(pcm_spi),
> > - PINCTRL_FUNC_DESC(i2s),
> > - PINCTRL_FUNC_DESC(emmc),
> > - PINCTRL_FUNC_DESC(pnand),
> > - PINCTRL_FUNC_DESC(pcie_reset),
> > - PINCTRL_FUNC_DESC(pwm),
> > - PINCTRL_FUNC_DESC(phy1_led0),
> > - PINCTRL_FUNC_DESC(phy2_led0),
> > - PINCTRL_FUNC_DESC(phy3_led0),
> > - PINCTRL_FUNC_DESC(phy4_led0),
> > - PINCTRL_FUNC_DESC(phy1_led1),
> > - PINCTRL_FUNC_DESC(phy2_led1),
> > - PINCTRL_FUNC_DESC(phy3_led1),
> > - PINCTRL_FUNC_DESC(phy4_led1),
> > +static const struct airoha_pinctrl_func en7581_pinctrl_funcs[] = {
> > + PINCTRL_FUNC_DESC("pon", pon),
> > + PINCTRL_FUNC_DESC("tod_1pps", tod_1pps),
> > + PINCTRL_FUNC_DESC("sipo", sipo),
> > + PINCTRL_FUNC_DESC("mdio", mdio),
> > + PINCTRL_FUNC_DESC("uart", uart),
> > + PINCTRL_FUNC_DESC("i2c", i2c),
> > + PINCTRL_FUNC_DESC("jtag", jtag),
> > + PINCTRL_FUNC_DESC("pcm", pcm),
> > + PINCTRL_FUNC_DESC("spi", spi),
> > + PINCTRL_FUNC_DESC("pcm_spi", pcm_spi),
> > + PINCTRL_FUNC_DESC("i2s", i2s),
> > + PINCTRL_FUNC_DESC("emmc", emmc),
> > + PINCTRL_FUNC_DESC("pnand", pnand),
> > + PINCTRL_FUNC_DESC("pcie_reset", pcie_reset),
> > + PINCTRL_FUNC_DESC("pwm", pwm),
> > + PINCTRL_FUNC_DESC("phy1_led0", phy1_led0),
> > + PINCTRL_FUNC_DESC("phy2_led0", phy2_led0),
> > + PINCTRL_FUNC_DESC("phy3_led0", phy3_led0),
> > + PINCTRL_FUNC_DESC("phy4_led0", phy4_led0),
> > + PINCTRL_FUNC_DESC("phy1_led1", phy1_led1),
> > + PINCTRL_FUNC_DESC("phy2_led1", phy2_led1),
> > + PINCTRL_FUNC_DESC("phy3_led1", phy3_led1),
> > + PINCTRL_FUNC_DESC("phy4_led1", phy4_led1),
> > };
> >
> > -static const struct airoha_pinctrl_conf airoha_pinctrl_pullup_conf[] = {
> > +static const struct airoha_pinctrl_conf en7581_pinctrl_pullup_conf[] = {
> > PINCTRL_CONF_DESC(0, REG_I2C_SDA_PU, UART1_TXD_PU_MASK),
> > PINCTRL_CONF_DESC(1, REG_I2C_SDA_PU, UART1_RXD_PU_MASK),
> > PINCTRL_CONF_DESC(2, REG_I2C_SDA_PU, I2C_SDA_PU_MASK),
> > @@ -2044,7 +2074,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_pullup_conf[] = {
> > PINCTRL_CONF_DESC(63, REG_I2C_SDA_PU, PCIE2_RESET_PU_MASK),
> > };
> >
> > -static const struct airoha_pinctrl_conf airoha_pinctrl_pulldown_conf[] = {
> > +static const struct airoha_pinctrl_conf en7581_pinctrl_pulldown_conf[] = {
> > PINCTRL_CONF_DESC(0, REG_I2C_SDA_PD, UART1_TXD_PD_MASK),
> > PINCTRL_CONF_DESC(1, REG_I2C_SDA_PD, UART1_RXD_PD_MASK),
> > PINCTRL_CONF_DESC(2, REG_I2C_SDA_PD, I2C_SDA_PD_MASK),
> > @@ -2105,7 +2135,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_pulldown_conf[] = {
> > PINCTRL_CONF_DESC(63, REG_I2C_SDA_PD, PCIE2_RESET_PD_MASK),
> > };
> >
> > -static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e2_conf[] = {
> > +static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e2_conf[] = {
> > PINCTRL_CONF_DESC(0, REG_I2C_SDA_E2, UART1_TXD_E2_MASK),
> > PINCTRL_CONF_DESC(1, REG_I2C_SDA_E2, UART1_RXD_E2_MASK),
> > PINCTRL_CONF_DESC(2, REG_I2C_SDA_E2, I2C_SDA_E2_MASK),
> > @@ -2166,7 +2196,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e2_conf[] = {
> > PINCTRL_CONF_DESC(63, REG_I2C_SDA_E2, PCIE2_RESET_E2_MASK),
> > };
> >
> > -static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e4_conf[] = {
> > +static const struct airoha_pinctrl_conf en7581_pinctrl_drive_e4_conf[] = {
> > PINCTRL_CONF_DESC(0, REG_I2C_SDA_E4, UART1_TXD_E4_MASK),
> > PINCTRL_CONF_DESC(1, REG_I2C_SDA_E4, UART1_RXD_E4_MASK),
> > PINCTRL_CONF_DESC(2, REG_I2C_SDA_E4, I2C_SDA_E4_MASK),
> > @@ -2227,7 +2257,7 @@ static const struct airoha_pinctrl_conf airoha_pinctrl_drive_e4_conf[] = {
> > PINCTRL_CONF_DESC(63, REG_I2C_SDA_E4, PCIE2_RESET_E4_MASK),
> > };
> >
> > -static const struct airoha_pinctrl_conf airoha_pinctrl_pcie_rst_od_conf[] = {
> > +static const struct airoha_pinctrl_conf en7581_pinctrl_pcie_rst_od_conf[] = {
> > PINCTRL_CONF_DESC(61, REG_PCIE_RESET_OD, PCIE0_RESET_OD_MASK),
> > PINCTRL_CONF_DESC(62, REG_PCIE_RESET_OD, PCIE1_RESET_OD_MASK),
> > PINCTRL_CONF_DESC(63, REG_PCIE_RESET_OD, PCIE2_RESET_OD_MASK),
> > @@ -2548,12 +2578,17 @@ airoha_pinctrl_get_conf_reg(const struct airoha_pinctrl_conf *conf,
> > }
> >
> > static int airoha_pinctrl_get_conf(struct airoha_pinctrl *pinctrl,
> > - const struct airoha_pinctrl_conf *conf,
> > - int conf_size, int pin, u32 *val)
> > + enum airoha_pinctrl_confs_type conf_type,
> > + int pin, u32 *val)
> > {
> > + const struct airoha_pinctrl_confs_info *confs_info;
> > const struct airoha_pinctrl_reg *reg;
> >
> > - reg = airoha_pinctrl_get_conf_reg(conf, conf_size, pin);
> > + confs_info = &pinctrl->confs_info[conf_type];
> > +
> > + reg = airoha_pinctrl_get_conf_reg(confs_info->confs,
> > + confs_info->num_confs,
> > + pin);
> > if (!reg)
> > return -EINVAL;
> >
> > @@ -2566,12 +2601,17 @@ static int airoha_pinctrl_get_conf(struct airoha_pinctrl *pinctrl,
> > }
> >
> > static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl,
> > - const struct airoha_pinctrl_conf *conf,
> > - int conf_size, int pin, u32 val)
> > + enum airoha_pinctrl_confs_type conf_type,
> > + int pin, u32 val)
> > {
> > + const struct airoha_pinctrl_confs_info *confs_info;
> > const struct airoha_pinctrl_reg *reg = NULL;
> >
> > - reg = airoha_pinctrl_get_conf_reg(conf, conf_size, pin);
> > + confs_info = &pinctrl->confs_info[conf_type];
> > +
> > + reg = airoha_pinctrl_get_conf_reg(confs_info->confs,
> > + confs_info->num_confs,
> > + pin);
> > if (!reg)
> > return -EINVAL;
> >
> > @@ -2584,44 +2624,34 @@ static int airoha_pinctrl_set_conf(struct airoha_pinctrl *pinctrl,
> > }
> >
> > #define airoha_pinctrl_get_pullup_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_pullup_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_pullup_conf), \
> > + airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLUP, \
> > (pin), (val))
> > #define airoha_pinctrl_get_pulldown_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_pulldown_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_pulldown_conf), \
> > + airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLDOWN, \
> > (pin), (val))
> > #define airoha_pinctrl_get_drive_e2_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_drive_e2_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_drive_e2_conf), \
> > + airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E2, \
> > (pin), (val))
> > #define airoha_pinctrl_get_drive_e4_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_drive_e4_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_drive_e4_conf), \
> > + airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E4, \
> > (pin), (val))
> > #define airoha_pinctrl_get_pcie_rst_od_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_get_conf((pinctrl), airoha_pinctrl_pcie_rst_od_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_pcie_rst_od_conf), \
> > + airoha_pinctrl_get_conf((pinctrl), AIROHA_PINCTRL_CONFS_PCIE_RST_OD, \
> > (pin), (val))
> > #define airoha_pinctrl_set_pullup_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_pullup_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_pullup_conf), \
> > + airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLUP, \
> > (pin), (val))
> > #define airoha_pinctrl_set_pulldown_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_pulldown_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_pulldown_conf), \
> > + airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_PULLDOWN, \
> > (pin), (val))
> > #define airoha_pinctrl_set_drive_e2_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_drive_e2_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_drive_e2_conf), \
> > + airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E2, \
> > (pin), (val))
> > #define airoha_pinctrl_set_drive_e4_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_drive_e4_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_drive_e4_conf), \
> > + airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_DRIVE_E4, \
> > (pin), (val))
> > #define airoha_pinctrl_set_pcie_rst_od_conf(pinctrl, pin, val) \
> > - airoha_pinctrl_set_conf((pinctrl), airoha_pinctrl_pcie_rst_od_conf, \
> > - ARRAY_SIZE(airoha_pinctrl_pcie_rst_od_conf), \
> > + airoha_pinctrl_set_conf((pinctrl), AIROHA_PINCTRL_CONFS_PCIE_RST_OD, \
> > (pin), (val))
> >
> > static int airoha_pinconf_get_direction(struct pinctrl_dev *pctrl_dev, u32 p)
> > @@ -2798,12 +2828,13 @@ static int airoha_pinconf_set(struct pinctrl_dev *pctrl_dev,
> > static int airoha_pinconf_group_get(struct pinctrl_dev *pctrl_dev,
> > unsigned int group, unsigned long *config)
> > {
> > + struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
> > u32 cur_config = 0;
> > int i;
> >
> > - for (i = 0; i < airoha_pinctrl_groups[group].npins; i++) {
> > + for (i = 0; i < pinctrl->grps[group].npins; i++) {
> > if (airoha_pinconf_get(pctrl_dev,
> > - airoha_pinctrl_groups[group].pins[i],
> > + pinctrl->grps[group].pins[i],
> > config))
> > return -EOPNOTSUPP;
> >
> > @@ -2820,13 +2851,14 @@ static int airoha_pinconf_group_set(struct pinctrl_dev *pctrl_dev,
> > unsigned int group, unsigned long *configs,
> > unsigned int num_configs)
> > {
> > + struct airoha_pinctrl *pinctrl = pinctrl_dev_get_drvdata(pctrl_dev);
> > int i;
> >
> > - for (i = 0; i < airoha_pinctrl_groups[group].npins; i++) {
> > + for (i = 0; i < pinctrl->grps[group].npins; i++) {
> > int err;
> >
> > err = airoha_pinconf_set(pctrl_dev,
> > - airoha_pinctrl_groups[group].pins[i],
> > + pinctrl->grps[group].pins[i],
> > configs, num_configs);
> > if (err)
> > return err;
> > @@ -2852,23 +2884,16 @@ static const struct pinctrl_ops airoha_pctlops = {
> > .dt_free_map = pinconf_generic_dt_free_map,
> > };
> >
> > -static struct pinctrl_desc airoha_pinctrl_desc = {
> > - .name = KBUILD_MODNAME,
> > - .owner = THIS_MODULE,
> > - .pctlops = &airoha_pctlops,
> > - .pmxops = &airoha_pmxops,
> > - .confops = &airoha_confops,
> > - .pins = airoha_pinctrl_pins,
> > - .npins = ARRAY_SIZE(airoha_pinctrl_pins),
> > -};
> > -
> > static int airoha_pinctrl_probe(struct platform_device *pdev)
> > {
> > + const struct airoha_pinctrl_match_data *data;
> > struct device *dev = &pdev->dev;
> > struct airoha_pinctrl *pinctrl;
> > struct regmap *map;
> > int err, i;
> >
> > + data = device_get_match_data(dev);
> > +
> > pinctrl = devm_kzalloc(dev, sizeof(*pinctrl), GFP_KERNEL);
> > if (!pinctrl)
> > return -ENOMEM;
> > @@ -2883,14 +2908,23 @@ static int airoha_pinctrl_probe(struct platform_device *pdev)
> >
> > pinctrl->chip_scu = map;
> >
> > - err = devm_pinctrl_register_and_init(dev, &airoha_pinctrl_desc,
> > + /* Init pinctrl desc struct */
> > + pinctrl->desc.name = KBUILD_MODNAME;
> > + pinctrl->desc.owner = THIS_MODULE,
> > + pinctrl->desc.pctlops = &airoha_pctlops,
> > + pinctrl->desc.pmxops = &airoha_pmxops,
> > + pinctrl->desc.confops = &airoha_confops,
> > + pinctrl->desc.pins = data->pins,
> > + pinctrl->desc.npins = data->num_pins,
> > +
> > + err = devm_pinctrl_register_and_init(dev, &pinctrl->desc,
> > pinctrl, &pinctrl->ctrl);
> > if (err)
> > return err;
> >
> > /* build pin groups */
> > - for (i = 0; i < ARRAY_SIZE(airoha_pinctrl_groups); i++) {
> > - const struct pingroup *grp = &airoha_pinctrl_groups[i];
> > + for (i = 0; i < data->num_grps; i++) {
> > + const struct pingroup *grp = &data->grps[i];
> >
> > err = pinctrl_generic_add_group(pinctrl->ctrl, grp->name,
> > grp->pins, grp->npins,
> > @@ -2903,10 +2937,10 @@ static int airoha_pinctrl_probe(struct platform_device *pdev)
> > }
> >
> > /* build functions */
> > - for (i = 0; i < ARRAY_SIZE(airoha_pinctrl_funcs); i++) {
> > + for (i = 0; i < data->num_funcs; i++) {
> > const struct airoha_pinctrl_func *func;
> >
> > - func = &airoha_pinctrl_funcs[i];
> > + func = &data->funcs[i];
> > err = pinmux_generic_add_function(pinctrl->ctrl,
> > func->desc.func.name,
> > func->desc.func.groups,
> > @@ -2919,6 +2953,10 @@ static int airoha_pinctrl_probe(struct platform_device *pdev)
> > }
> > }
> >
> > + pinctrl->grps = data->grps;
> > + pinctrl->funcs = data->funcs;
> > + pinctrl->confs_info = data->confs_info;
>
> I guess we can just use a airoha_pinctrl_match_data pointer here.
>

Yep it was to prevent too much redirection. Maybe I can just add to the
priv struct pointer to match_data ?

> > +
> > err = pinctrl_enable(pinctrl->ctrl);
> > if (err)
> > return err;
> > @@ -2927,8 +2965,39 @@ static int airoha_pinctrl_probe(struct platform_device *pdev)
> > return airoha_pinctrl_add_gpiochip(pinctrl, pdev);
> > }
> >
> > +static const struct airoha_pinctrl_match_data en7581_pinctrl_match_data = {
> > + .pins = en7581_pinctrl_pins,
> > + .num_pins = ARRAY_SIZE(en7581_pinctrl_pins),
> > + .grps = en7581_pinctrl_groups,
> > + .num_grps = ARRAY_SIZE(en7581_pinctrl_groups),
> > + .funcs = en7581_pinctrl_funcs,
> > + .num_funcs = ARRAY_SIZE(en7581_pinctrl_funcs),
> > + .confs_info = {
> > + [AIROHA_PINCTRL_CONFS_PULLUP] = {
> > + .confs = en7581_pinctrl_pullup_conf,
> > + .num_confs = ARRAY_SIZE(en7581_pinctrl_pullup_conf),
> > + },
> > + [AIROHA_PINCTRL_CONFS_PULLDOWN] = {
> > + .confs = en7581_pinctrl_pulldown_conf,
> > + .num_confs = ARRAY_SIZE(en7581_pinctrl_pulldown_conf),
> > + },
> > + [AIROHA_PINCTRL_CONFS_DRIVE_E2] = {
> > + .confs = en7581_pinctrl_drive_e2_conf,
> > + .num_confs = ARRAY_SIZE(en7581_pinctrl_drive_e2_conf),
> > + },
> > + [AIROHA_PINCTRL_CONFS_DRIVE_E4] = {
> > + .confs = en7581_pinctrl_drive_e4_conf,
> > + .num_confs = ARRAY_SIZE(en7581_pinctrl_drive_e4_conf),
> > + },
> > + [AIROHA_PINCTRL_CONFS_PCIE_RST_OD] = {
> > + .confs = en7581_pinctrl_pcie_rst_od_conf,
> > + .num_confs = ARRAY_SIZE(en7581_pinctrl_pcie_rst_od_conf),
> > + },
> > + },
> > +};
> > +
> > static const struct of_device_id airoha_pinctrl_of_match[] = {
> > - { .compatible = "airoha,en7581-pinctrl" },
> > + { .compatible = "airoha,en7581-pinctrl", .data = &en7581_pinctrl_match_data },
> > { /* sentinel */ }
> > };
> > MODULE_DEVICE_TABLE(of, airoha_pinctrl_of_match);
> > --
> > 2.48.1
> >

--
Ansuel


Return-Path: <linux-kernel+bounces-669120-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 849A341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:30:38 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7EA273B1C65
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:30:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8D9304C80;
Sat, 31 May 2025 13:30:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="t9uq+fwv"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 9CA49DF49;
Sat, 31 May 2025 13:30:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698230; cv=none; b=GHYY8itIWqpG8JqUJO4rFZw+Z3eFL6y6Ch6pJdV2JN7b/BvbRHYhJc/UCTObU6zlVM8ReDDDxmRVZA1sN2qQ/NA2M5VVKhw3fQLy61t6bLOlo5Dr9rCtEXoMwf+Wat3nTQYQ4AlaxjKaaVcYPttHX/0VAawaXvhD4QHV7oHYR4A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698230; c=relaxed/simple;
bh=zj+WBrSuNwFmmoBsrUNBJ+MTo+uK/TgeY97Q8lyyqDY=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=SRH7FvEnnl+hd5UY8ngSyw0MfwzDnm7DuPccWqVyrosI3eKaQXwMeW1I/GcSiN5PKtDh437R5RqQJJVMNOYjy3nSCxlBGfacHD6WjPoFXZ8wIjx5SPmapgDgL77HxxSNFtmVwB5JzRQrOzbwVoI0YMEBw8RUWhlttEjzjMjwpdc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=t9uq+fwv; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1CF31C4CEE3;
Sat, 31 May 2025 13:30:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748698229;
bh=zj+WBrSuNwFmmoBsrUNBJ+MTo+uK/TgeY97Q8lyyqDY=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=t9uq+fwvwNpBw6Zg2xtaPoeEFzwPv9A8f3nSC3OswmaWszFXpX2ocYpIg57T2Pjzp
QcYk5a8k10SRBZ5to1ZIUd3i/q9wIdRQ2WDh9x5Qr8sY9bhaAKzvQ5tIo48Jme/24f
x196EAAskCHYpb5/Gk4Cyd0NMbxdE/sS4k+XByWA=
Date: Sat, 31 May 2025 15:30:26 +0200
From: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
To: Alexandre Courbot <acourbot@xxxxxxxxxx>
Cc: Timur Tabi <timur@xxxxxxxxxx>, Danilo Krummrich <dakr@xxxxxxxxxx>,
John Hubbard <jhubbard@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] rust: add basic ELF sections parser
Message-ID: <2025053117-snowy-tradition-eb9e@gregkh>
References: <2025052932-pyramid-unvisited-68f7@gregkh>
<DA935OIFBM1H.3CMSHQ46LLG4P@xxxxxxxxxx>
<2025053047-theology-unsaid-d6ac@gregkh>
<DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh>
<DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh>
<CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
<2025053148-gore-badass-1d1d@gregkh>
<DAACKTM8B9A1.3SI9LRGNMSBH3@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <DAACKTM8B9A1.3SI9LRGNMSBH3@xxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 09:33:38PM +0900, Alexandre Courbot wrote:
> Hi Greg,
>
> On Sat May 31, 2025 at 2:45 PM JST, Greg KH wrote:
> > On Fri, May 30, 2025 at 01:10:50PM -0500, Timur Tabi wrote:
> >> On Fri, May 30, 2025 at 10:42â?¯AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> >> >
> >> > On Fri, May 30, 2025 at 11:34:02PM +0900, Alexandre Courbot wrote:
> >> > > So to try to answer your question, I am not disagreeing that userspace
> >> > > is capable of doing what we currently do in the kernel. My follow-up
> >> > > questions to that are: how do we command userspace to do that work for
> >> > > us when we request the firmware, how do we provide the result to the
> >> > > kernel, and is this something that distros can adopt easily? I'm happy
> >> > > to consider doing things this way, but would need a few pointers to look
> >> > > into.
> >> >
> >> > Again, look at how your firmware for your devices in your laptop are
> >> > loaded today.
> >
> > Note, I am talking about non-gpu firmare images here (wifi, usb
> > controllers, etc.) that are using the firmware download subsystem for
> > ages as examples of what to look at as to how to trigger a firmware
> > image to be loaded by userspace into the device.
>
> I would really appreciate it if you could point me precisely to one
> example (a link, a function, a file) of what you are describing because
> I'm starting to wonder whether we are talking about the same thing.
>
> Previously I mentioned udev and CONFIG_FW_LOADER_USER_HELPER, but you
> haven't confirmed whether that was what you had in mind or not. Assuming
> that udev is involved, I tried to snoop events while a
> `request_firwmare` call is performed using `udevadm monitor`, but that
> revealed no event related to firmware loading. Then looking deeper into
> the kernel documentation confirmed that the kernel does indeed a direct
> filesystem lookup in request_firmware [1]. IOW, the kernel looks for the
> requested file, and if it cannot find it it's game over. This matches my
> observations with udevadm, as I tried requesting a non-existing file and
> no uevent was generated. I don't see what user-space can do here.
>
> I also tried to look up this "firmware download subsystem" you
> mentioned, but couldn't find anything under that name - I suspect you
> are talking about the sysfs loading mechanism, but AFAIU this depends on
> CONFIG_FW_LOADER_USER_HELPER which doesn't seem to be widely enabled
> (not on my distro at least).

Yes, that is what I am referring to, as you all seem to want to do
"complex things without a specific filename choosen". Look at
Documentation/driver-api/firmware/fallback-mechanisms.rst for the
details there.

Or, better yet, just have your driver name all of the individual files
that must be loaded and then no userspace things are needed. That "big"
firmware file will have already been split up into the different parts
when you write it out to the filesystem, so no need to parse anything.

If this isn't going to work for some reason, I think we need a better
"this is EXACTLY what we need to send to the hardware for the firmware
image(s) it requires" as I'm totally confused based on the different
people talking on this thread about totally different hypotheticals
(i.e. 12 line elf parsers in C vs. a giant elf parser in rust, random
hypothetical hardware values that userspace "can not know", pointing at
obsolete crazy interfaces like remoteproc that just happen to do crazy
things, etc.)

So step back, come up with a solid design document, and let's start over
please.

thanks,

greg k-h


Return-Path: <linux-kernel+bounces-669121-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B284A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:32:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 7B453189EE63
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:33:04 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6CD3E126C1E;
Sat, 31 May 2025 13:32:44 +0000 (UTC)
Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200])
(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 181604C80
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:32:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.70.183.200
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698364; cv=none; b=ovHBndNuT7vcaWPWznfsVuKv11oTwYJoEmZHP4ky7ies3cjojRLTr9eSInSGExpBBfYzIBOFCfGz6QJ9NCssyFx9KypkIdh1U9qQ/DserH8r7ratAqL7CMvoD5Trnpv5cErYGqLHH+D6Vlx+cbiv7u5+C842mQRkE7wivTgSDT8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698364; c=relaxed/simple;
bh=oloUOBeG/cmfjpJKwirGN+A9VCP2ftNPG2HJGL2IJtY=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=cdJIssm+ovpxyFprct+9dJLwdIpK3NaUOMFWUQFlNk5pyoNh6rf3lnq/GeRoIrtRMJE22A/3FS7tsWCGCsFNcocWWHuV4Rf1a4hf0eBq3pkZt5Ze0NQvI2DqIue5Z9ff6l24i/P8GkznqVKtkTbIlwuP3fdNmVJJspaMojmiEeE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr; spf=pass smtp.mailfrom=ghiti.fr; arc=none smtp.client-ip=217.70.183.200
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ghiti.fr
Received: by mail.gandi.net (Postfix) with ESMTPSA id 380464316C;
Sat, 31 May 2025 13:32:38 +0000 (UTC)
Message-ID: <1aefb8dc-9145-4cee-b262-7d4212159444@xxxxxxxx>
Date: Sat, 31 May 2025 15:32:37 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 0/2] riscv: misaligned: fix misaligned accesses handling
in put/get_user()
To: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= <cleger@xxxxxxxxxxxx>,
linux-riscv@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Cc: Paul Walmsley <paul.walmsley@xxxxxxxxxx>,
Palmer Dabbelt <palmer@xxxxxxxxxxx>, Albert Ou <aou@xxxxxxxxxxxxxxxxx>
References: <20250530205658.624195-1-cleger@xxxxxxxxxxxx>
Content-Language: en-US
From: Alexandre Ghiti <alex@xxxxxxxx>
In-Reply-To: <20250530205658.624195-1-cleger@xxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-GND-State: clean
X-GND-Score: -100
X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefvddtfeculddtuddrgeefvddrtddtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfitefpfffkpdcuggftfghnshhusghstghrihgsvgenuceurghilhhouhhtmecufedtudenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurhepkfffgggfuffvvehfhfgjtgfgsehtkeertddtvdejnecuhfhrohhmpeetlhgvgigrnhgurhgvucfihhhithhiuceorghlvgigsehghhhithhirdhfrheqnecuggftrfgrthhtvghrnhepieffvdeiveeuhfegvddvuefhveejhfffudffhfdufeeuudegtdfguddthfetledvnecuffhomhgrihhnpehgihhthhhusgdrtghomhenucfkphepvddttddumeekiedumeeffeekvdemvghfledtmegrfedtkeemieelledtmedvjehfsgemlegrtggrnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepvddttddumeekiedumeeffeekvdemvghfledtmegrfedtkeemieelledtmedvjehfsgemlegrtggrpdhhvghloheplgfkrfggieemvddttddumeekiedumeeffeekvdemvghfledtmegrfedtkeemieelledtmedvjehfsgemlegrtggrngdpmhgrihhlfhhrohhmpegrlhgvgiesghhhihhtihdrfhhrpdhnsggprhgtphhtthhopeeipdhrtghpthhtoheptghlvghgvghrsehrihhvohhsihhntgdrtghomhdprhgtphhtthhopehlihhnuhigqdhrihhstghvsehlihhsthhsrdhinhhfr
hgruggvrggurdhorhhgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhgpdhrtghpthhtohepphgruhhlrdifrghlmhhslhgvhiesshhifhhivhgvrdgtohhmpdhrtghpthhtohepphgrlhhmvghrsegurggssggvlhhtrdgtohhmpdhrtghpthhtoheprghouhesvggvtghsrdgsvghrkhgvlhgvhidrvgguuh
X-GND-Sasl: alex@xxxxxxxx
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/30/25 22:56, Clément Léger wrote:
> While debugging a few problems with the misaligned access kselftest,
> Alexandre discovered some crash with the current code. Indeed, some
> misaligned access was done by the kernel using put_user(). This
> was resulting in trap and a kernel crash since. The path was the
> following:
> user -> kernel -> access to user memory -> misaligned trap -> trap ->
> kernel -> misaligned handling -> memcpy -> crash due to failed page fault
> while in interrupt disabled section.
>
> Last discussion about kernel misaligned handling and interrupt reenabling
> were actually not to reenable interrupt when handling misaligned access
> being done by kernel. The best solution being not to do any misaligned
> accesses to userspace memory, we considered a few options:
>
> - Remove any call to put/get_user() potientally doing misaligned
> accesses
> - Do not do any misaligned accesses in put/get_user() itself
>
> The second solution was the one chosen as there are too many callsite to
> put/get_user() that could potentially do misaligned accesses. We tried
> two approaches for that, either split access in two aligned accesses
> (and do RMW for put_user()) or call copy_from/to_user() which does not
> do any misaligned accesses. The later one was the simpler to implement
> (although the performances are probably lower than split aligned
> accesses but still way better than doing misaligned access emulation)
> and allows to support what we wanted.
>
> These commits are based on top of Alex dev/alex/get_user_misaligned_v1
> branch.
>
> Clément Léger (2):
> riscv: process: use unsigned int instead of unsigned long for
> put_user()
> riscv: uaccess: do not do misaligned accesses in get/put_user()
>
> arch/riscv/include/asm/uaccess.h | 28 ++++++++++++++++++++++------
> arch/riscv/kernel/process.c | 2 +-
> 2 files changed, 23 insertions(+), 7 deletions(-)


We also need to prevent unsafe routines to trigger misaligned accesses,
I have a patch for this here
https://github.com/linux-riscv/linux/commit/7c172121aeb235dedeb6f5e06740527530edd6af

Clément, can you add this one to the series please?

I have just  triggered a CI with those fixes on top of my sbi 3.0 branch.

Thanks,

Alex




Return-Path: <linux-kernel+bounces-669122-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C422541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:37:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 4F5439E184B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:37:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8879823BD1F;
Sat, 31 May 2025 13:37:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Rerwrqdn"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 9B40F6ADD;
Sat, 31 May 2025 13:37:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698645; cv=none; b=B9vZnolBaPLJAjqydx3wOknMBM7ELYCobjgCce7rJQEvmZSM3bOtYG3FeLhNtU5dGY37VW5L262OOt+Xroz7/88Ww3eiC63WHqwpMfntY+zdz9E2c6bhAR5CaBGWeeXrNZcIX1CTxQYNslImGLjUlRg9EgPertyA6jymYUmnxsA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698645; c=relaxed/simple;
bh=jS+4UXLX5Uc7d7YlVW9psi30HLFQRfavURIV9nY/8KQ=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=GaJaOYCsOafSBqZN3h/2bR/kwEiFkk66bfTffv0D95hwVFkTvzpw0MjrvozqQsUpu35sW1NS5xMdJBok52HqkjrP32BOxL0eilRHCXvRfnrvMq34ZqNC4Kh5qeOnB1FjFUl27khYbzpriY7VJK+b9sGCMN35+0MacVur3+WFXwY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Rerwrqdn; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 122A0C4CEE3;
Sat, 31 May 2025 13:37:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748698645;
bh=jS+4UXLX5Uc7d7YlVW9psi30HLFQRfavURIV9nY/8KQ=;
h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
b=Rerwrqdnw5JB787JyR6KzHSYypA9WknH4QSmvnTCVwKLM73NOW0Hl6oSb37JWpEe4
ZxiveukIsTA2i/eBM1kXGfFsUsIm4aro9hTklyLQwAh3Irj8rTrE2VFl3vlPvreSkx
XnqYExxagd3QI/wtf8aYkGT6RtNaItqNulMYodb8X7mHk1qQLNoqJTHAaizM63S7+U
Nl3TMDEVdnyHJsBVEujG4QdJxoM5ZrPYqsiSiuS4/EyEFpBKg830VDq7CvFAFnt1fi
v46s4PszSW7XPKeVe4yR9TpBnlDwWuPzlMOBKrIDtiHy3lxaAo7BQkY+nmFi4MY1E6
uE+JSiXV6ewxw==
Message-ID: <852ef4fd-6c26-4f79-a1d4-b3e37926ed7a@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:37:21 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 1/3] dt-bindings: misc: Add binding for ST M24LR control
interface
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
Cc: robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx, arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
<20250531081159.2007319-2-abd.masalkhi@xxxxxxxxx>
From: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
Content-Language: en-US
Autocrypt: addr=krzk@xxxxxxxxxx; keydata=
xsFNBFVDQq4BEAC6KeLOfFsAvFMBsrCrJ2bCalhPv5+KQF2PS2+iwZI8BpRZoV+Bd5kWvN79
cFgcqTTuNHjAvxtUG8pQgGTHAObYs6xeYJtjUH0ZX6ndJ33FJYf5V3yXqqjcZ30FgHzJCFUu
JMp7PSyMPzpUXfU12yfcRYVEMQrmplNZssmYhiTeVicuOOypWugZKVLGNm0IweVCaZ/DJDIH
gNbpvVwjcKYrx85m9cBVEBUGaQP6AT7qlVCkrf50v8bofSIyVa2xmubbAwwFA1oxoOusjPIE
J3iadrwpFvsZjF5uHAKS+7wHLoW9hVzOnLbX6ajk5Hf8Pb1m+VH/E8bPBNNYKkfTtypTDUCj
NYcd27tjnXfG+SDs/EXNUAIRefCyvaRG7oRYF3Ec+2RgQDRnmmjCjoQNbFrJvJkFHlPeHaeS
BosGY+XWKydnmsfY7SSnjAzLUGAFhLd/XDVpb1Een2XucPpKvt9ORF+48gy12FA5GduRLhQU
vK4tU7ojoem/G23PcowM1CwPurC8sAVsQb9KmwTGh7rVz3ks3w/zfGBy3+WmLg++C2Wct6nM
Pd8/6CBVjEWqD06/RjI2AnjIq5fSEH/BIfXXfC68nMp9BZoy3So4ZsbOlBmtAPvMYX6U8VwD
TNeBxJu5Ex0Izf1NV9CzC3nNaFUYOY8KfN01X5SExAoVTr09ewARAQABzSVLcnp5c3p0b2Yg
S296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+wsGVBBMBCgA/AhsDBgsJCAcDAgYVCAIJCgsE
FgIDAQIeAQIXgBYhBJvQfg4MUfjVlne3VBuTQ307QWKbBQJoF1BKBQkWlnSaAAoJEBuTQ307
QWKbHukP/3t4tRp/bvDnxJfmNdNVn0gv9ep3L39IntPalBFwRKytqeQkzAju0whYWg+R/rwp
+r2I1Fzwt7+PTjsnMFlh1AZxGDmP5MFkzVsMnfX1lGiXhYSOMP97XL6R1QSXxaWOpGNCDaUl
ajorB0lJDcC0q3xAdwzRConxYVhlgmTrRiD8oLlSCD5baEAt5Zw17UTNDnDGmZQKR0fqLpWy
786Lm5OScb7DjEgcA2PRm17st4UQ1kF0rQHokVaotxRM74PPDB8bCsunlghJl1DRK9s1aSuN
hL1Pv9VD8b4dFNvCo7b4hfAANPU67W40AaaGZ3UAfmw+1MYyo4QuAZGKzaP2ukbdCD/DYnqi
tJy88XqWtyb4UQWKNoQqGKzlYXdKsldYqrLHGoMvj1UN9XcRtXHST/IaLn72o7j7/h/Ac5EL
8lSUVIG4TYn59NyxxAXa07Wi6zjVL1U11fTnFmE29ALYQEXKBI3KUO1A3p4sQWzU7uRmbuxn
naUmm8RbpMcOfa9JjlXCLmQ5IP7Rr5tYZUCkZz08LIfF8UMXwH7OOEX87Y++EkAB+pzKZNNd
hwoXulTAgjSy+OiaLtuCys9VdXLZ3Zy314azaCU3BoWgaMV0eAW/+gprWMXQM1lrlzvwlD/k
whyy9wGf0AEPpLssLVt9VVxNjo6BIkt6d1pMg6mHsUEVzsFNBFVDXDQBEADNkrQYSREUL4D3
Gws46JEoZ9HEQOKtkrwjrzlw/tCmqVzERRPvz2Xg8n7+HRCrgqnodIYoUh5WsU84N03KlLue
MNsWLJBvBaubYN4JuJIdRr4dS4oyF1/fQAQPHh8Thpiz0SAZFx6iWKB7Qrz3OrGCjTPcW6ei
OMheesVS5hxietSmlin+SilmIAPZHx7n242u6kdHOh+/SyLImKn/dh9RzatVpUKbv34eP1wA
GldWsRxbf3WP9pFNObSzI/Bo3kA89Xx2rO2roC+Gq4LeHvo7ptzcLcrqaHUAcZ3CgFG88CnA
6z6lBZn0WyewEcPOPdcUB2Q7D/NiUY+HDiV99rAYPJztjeTrBSTnHeSBPb+qn5ZZGQwIdUW9
YegxWKvXXHTwB5eMzo/RB6vffwqcnHDoe0q7VgzRRZJwpi6aMIXLfeWZ5Wrwaw2zldFuO4Dt
91pFzBSOIpeMtfgb/Pfe/a1WJ/GgaIRIBE+NUqckM+3zJHGmVPqJP/h2Iwv6nw8U+7Yyl6gU
BLHFTg2hYnLFJI4Xjg+AX1hHFVKmvl3VBHIsBv0oDcsQWXqY+NaFahT0lRPjYtrTa1v3tem/
JoFzZ4B0p27K+qQCF2R96hVvuEyjzBmdq2esyE6zIqftdo4MOJho8uctOiWbwNNq2U9pPWmu
4vXVFBYIGmpyNPYzRm0QPwARAQABwsF8BBgBCgAmAhsMFiEEm9B+DgxR+NWWd7dUG5NDfTtB
YpsFAmgXUF8FCRaWWyoACgkQG5NDfTtBYptO0w//dlXJs5/42hAXKsk+PDg3wyEFb4NpyA1v
qmx7SfAzk9Hf6lWwU1O6AbqNMbh6PjEwadKUk1m04S7EjdQLsj/MBSgoQtCT3MDmWUUtHZd5
RYIPnPq3WVB47GtuO6/u375tsxhtf7vt95QSYJwCB+ZUgo4T+FV4hquZ4AsRkbgavtIzQisg
Dgv76tnEv3YHV8Jn9mi/Bu0FURF+5kpdMfgo1sq6RXNQ//TVf8yFgRtTUdXxW/qHjlYURrm2
H4kutobVEIxiyu6m05q3e9eZB/TaMMNVORx+1kM3j7f0rwtEYUFzY1ygQfpcMDPl7pRYoJjB
dSsm0ZuzDaCwaxg2t8hqQJBzJCezTOIkjHUsWAK+tEbU4Z4SnNpCyM3fBqsgYdJxjyC/tWVT
AQ18NRLtPw7tK1rdcwCl0GFQHwSwk5pDpz1NH40e6lU+NcXSeiqkDDRkHlftKPV/dV+lQXiu
jWt87ecuHlpL3uuQ0ZZNWqHgZoQLXoqC2ZV5KrtKWb/jyiFX/sxSrodALf0zf+tfHv0FZWT2
zHjUqd0t4njD/UOsuIMOQn4Ig0SdivYPfZukb5cdasKJukG1NOpbW7yRNivaCnfZz6dTawXw
XRIV/KDsHQiyVxKvN73bThKhONkcX2LWuD928tAR6XMM2G5ovxLe09vuOzzfTWQDsm++9UKF a/A=
In-Reply-To: <20250531081159.2007319-2-abd.masalkhi@xxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 31/05/2025 10:11, Abd-Alrhman Masalkhi wrote:
> Add a Device Tree binding for the STMicroelectronics M24LR series
> RFID/NFC EEPROM chips (e.g., M24LR04E-R), which support a separate
> I2C interface for control and configuration.
>
> This binding documents the control interface that is managed by
> a dedicated driver exposing sysfs attributes. The EEPROM memory
> interface is handled by the standard 'at24' driver and is
> represented as a child node in the Device Tree.
>
> Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
> ---
> .../devicetree/bindings/misc/st,m24lr.yaml | 70 +++++++++++++++++++

That's not a misc device, but eeprom. Place it in appropriate directory.

A nit, subject: drop second/last, redundant "binding for". The
"dt-bindings" prefix is already stating that these are bindings.
See also:
https://elixir.bootlin.com/linux/v6.7-rc8/source/Documentation/devicetree/bindings/submitting-patches.rst#L18


> 1 file changed, 70 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/misc/st,m24lr.yaml
>
> diff --git a/Documentation/devicetree/bindings/misc/st,m24lr.yaml b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
> new file mode 100644
> index 000000000000..5a8f5aef13ec
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/misc/st,m24lr.yaml
> @@ -0,0 +1,70 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/misc/st,m24lr.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: STMicroelectronics M24LR Series NFC/RFID EEPROM Control Interface
> +
> +maintainers:
> + - name: Abd-Alrhman Masalkhi
> + email: abd.masalkhi@xxxxxxxxx
> +
> +description: |
> + This binding describes the control interface for STMicroelectronics

Describe the hardware, not the binding.

> + M24LR series RFID/NFC EEPROM chips (e.g., M24LR04E-R, M24LR16E-R).
> + This driver provides sysfs access to device-specific control registers
> + (authentication, UID, etc.) over the I2C interface. It act as a

Describe hardware, not drivers.

> + I2C gate for the EEPROM. Therefore, The EEPROM is represented as a
> + child node under a port and is accessed through a separate driver
> + (the standard 'at24' driver). This implementation is possible because

again, describe hardware not driver

> + the M24LR chips uses two I2C addresses: one for accessing the
> + system parameter sector and another for the EEPROM.

This suggests you have two I2C addresses for one device, not two devices
with parent child relationship.

> +
> +allOf:
> + - $ref: "i2c-mux.yaml#"

Drop quotes. So this is I2C mux or EEPROM?

> +
> +properties:
> + compatible:
> + enum:
> + - st,m24lr04e-r
> + - st,m24lr16e-r
> + - st,m24lr64e-r
> +
> + reg:
> + maxItems: 1
> + description: I2C address of the device.

Drop description, redundant.


This device is not compatible with AT24?

> +
> + pagesize:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + description: >
> + Maximum number of bytes that can be written in a single I2C
> + transaction. the default is 1.

enum:
default:

and drop redundant free form text.

> +
> +required:
> + - compatible
> + - reg
> +
> +additionalProperties: false

unevaluatedProperties instead

> +
> +examples:
> + - |
> + i2c {
> + m24lr@57 {

Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation


> + compatible = "st,m24lr04e-r";
> + reg = <0x57>;
> +
> + i2c-gate {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + m24lr_eeprom@53 {

Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation


> + compatible = "atmel,24c04";
> + reg = <0x53>;
> + address-width = <16>;
> + pagesize = <4>;
> + };
> + };
> + };
> + };
> +...
> \ No newline at end of file


Best regards,
Krzysztof


Return-Path: <linux-kernel+bounces-669123-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 72D8341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:38:04 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 9831F189F7BE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:38:17 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8C6B56ADD;
Sat, 31 May 2025 13:37:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QShM57XW"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C405023BCEE;
Sat, 31 May 2025 13:37:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698675; cv=none; b=GSip/NGcLZy/3aJFZJauZUeGj0/d0ENXMcJLZ3akIIFdcgja6nPuK+JuFw75i9pJaqxrOXTtSg9YKZOjDMPqH4gU8uS5SuX5L6fbUMJDsIQNLjrZjtrLcLAtGgsaTx/92J2IV8hT+5fbww/clcHpLm3RECpUMlemWIXASzTi5q4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698675; c=relaxed/simple;
bh=rjjPu5dGr9a4QbxmvBYD88SkS3ybRl9lB9DXA1praDY=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=ZCXeJHE7Fs1qenr5qEfgn6iVx6VhCLFkRXgN2b1Lshx7sMJujth/bj7+g03GVhMECzm3Dw9REHQ6gzmRXzlp7g6NQoPa81QxzYGsGfcJwEJBylvCgHL9djejSKrlhYM+8hxBtVTukbkmjOugLhp4hDCZCwhtsxFIJC14OGgkVsI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QShM57XW; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 47108C4CEE3;
Sat, 31 May 2025 13:37:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748698675;
bh=rjjPu5dGr9a4QbxmvBYD88SkS3ybRl9lB9DXA1praDY=;
h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
b=QShM57XWoybn8l3OYli3gqLxJFW5KgQD4J6QwBBUl3BNEWvCwztNCm83q20kV2xuU
pUq8TOg91vwsuwbmixnozAk3JVkOfCxzKU7E8ZeSzJp0SQppa0Ow7HrxDvyX/+MCEd
jz6iuX4vfeOCRDj9EWVrmGmWZNko56P0QbVfmAmmNbvmdHjwE8FodGxG4aw32I3i8I
+JFcir7m6jEPKMAsc1rYkhnYBsn4NlKiLh/eTgCd/KjZOTvLThe60zXB9S5LqVDSTT
37oz3u9j5lCofwPwefDeJjwT6WhGuGQs0j2VbHXvTljxLhko0pdJ+IIS43Wmii6ICz
n843TBylT/+jA==
Message-ID: <fc418c21-00aa-4cdb-91e9-c86f3121b837@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:37:51 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH 3/3] MAINTAINERS: Add entry for ST M24LR control driver
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
Cc: robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx, arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx
References: <20250531081159.2007319-1-abd.masalkhi@xxxxxxxxx>
<20250531081159.2007319-4-abd.masalkhi@xxxxxxxxx>
From: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
Content-Language: en-US
Autocrypt: addr=krzk@xxxxxxxxxx; keydata=
xsFNBFVDQq4BEAC6KeLOfFsAvFMBsrCrJ2bCalhPv5+KQF2PS2+iwZI8BpRZoV+Bd5kWvN79
cFgcqTTuNHjAvxtUG8pQgGTHAObYs6xeYJtjUH0ZX6ndJ33FJYf5V3yXqqjcZ30FgHzJCFUu
JMp7PSyMPzpUXfU12yfcRYVEMQrmplNZssmYhiTeVicuOOypWugZKVLGNm0IweVCaZ/DJDIH
gNbpvVwjcKYrx85m9cBVEBUGaQP6AT7qlVCkrf50v8bofSIyVa2xmubbAwwFA1oxoOusjPIE
J3iadrwpFvsZjF5uHAKS+7wHLoW9hVzOnLbX6ajk5Hf8Pb1m+VH/E8bPBNNYKkfTtypTDUCj
NYcd27tjnXfG+SDs/EXNUAIRefCyvaRG7oRYF3Ec+2RgQDRnmmjCjoQNbFrJvJkFHlPeHaeS
BosGY+XWKydnmsfY7SSnjAzLUGAFhLd/XDVpb1Een2XucPpKvt9ORF+48gy12FA5GduRLhQU
vK4tU7ojoem/G23PcowM1CwPurC8sAVsQb9KmwTGh7rVz3ks3w/zfGBy3+WmLg++C2Wct6nM
Pd8/6CBVjEWqD06/RjI2AnjIq5fSEH/BIfXXfC68nMp9BZoy3So4ZsbOlBmtAPvMYX6U8VwD
TNeBxJu5Ex0Izf1NV9CzC3nNaFUYOY8KfN01X5SExAoVTr09ewARAQABzSVLcnp5c3p0b2Yg
S296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+wsGVBBMBCgA/AhsDBgsJCAcDAgYVCAIJCgsE
FgIDAQIeAQIXgBYhBJvQfg4MUfjVlne3VBuTQ307QWKbBQJoF1BKBQkWlnSaAAoJEBuTQ307
QWKbHukP/3t4tRp/bvDnxJfmNdNVn0gv9ep3L39IntPalBFwRKytqeQkzAju0whYWg+R/rwp
+r2I1Fzwt7+PTjsnMFlh1AZxGDmP5MFkzVsMnfX1lGiXhYSOMP97XL6R1QSXxaWOpGNCDaUl
ajorB0lJDcC0q3xAdwzRConxYVhlgmTrRiD8oLlSCD5baEAt5Zw17UTNDnDGmZQKR0fqLpWy
786Lm5OScb7DjEgcA2PRm17st4UQ1kF0rQHokVaotxRM74PPDB8bCsunlghJl1DRK9s1aSuN
hL1Pv9VD8b4dFNvCo7b4hfAANPU67W40AaaGZ3UAfmw+1MYyo4QuAZGKzaP2ukbdCD/DYnqi
tJy88XqWtyb4UQWKNoQqGKzlYXdKsldYqrLHGoMvj1UN9XcRtXHST/IaLn72o7j7/h/Ac5EL
8lSUVIG4TYn59NyxxAXa07Wi6zjVL1U11fTnFmE29ALYQEXKBI3KUO1A3p4sQWzU7uRmbuxn
naUmm8RbpMcOfa9JjlXCLmQ5IP7Rr5tYZUCkZz08LIfF8UMXwH7OOEX87Y++EkAB+pzKZNNd
hwoXulTAgjSy+OiaLtuCys9VdXLZ3Zy314azaCU3BoWgaMV0eAW/+gprWMXQM1lrlzvwlD/k
whyy9wGf0AEPpLssLVt9VVxNjo6BIkt6d1pMg6mHsUEVzsFNBFVDXDQBEADNkrQYSREUL4D3
Gws46JEoZ9HEQOKtkrwjrzlw/tCmqVzERRPvz2Xg8n7+HRCrgqnodIYoUh5WsU84N03KlLue
MNsWLJBvBaubYN4JuJIdRr4dS4oyF1/fQAQPHh8Thpiz0SAZFx6iWKB7Qrz3OrGCjTPcW6ei
OMheesVS5hxietSmlin+SilmIAPZHx7n242u6kdHOh+/SyLImKn/dh9RzatVpUKbv34eP1wA
GldWsRxbf3WP9pFNObSzI/Bo3kA89Xx2rO2roC+Gq4LeHvo7ptzcLcrqaHUAcZ3CgFG88CnA
6z6lBZn0WyewEcPOPdcUB2Q7D/NiUY+HDiV99rAYPJztjeTrBSTnHeSBPb+qn5ZZGQwIdUW9
YegxWKvXXHTwB5eMzo/RB6vffwqcnHDoe0q7VgzRRZJwpi6aMIXLfeWZ5Wrwaw2zldFuO4Dt
91pFzBSOIpeMtfgb/Pfe/a1WJ/GgaIRIBE+NUqckM+3zJHGmVPqJP/h2Iwv6nw8U+7Yyl6gU
BLHFTg2hYnLFJI4Xjg+AX1hHFVKmvl3VBHIsBv0oDcsQWXqY+NaFahT0lRPjYtrTa1v3tem/
JoFzZ4B0p27K+qQCF2R96hVvuEyjzBmdq2esyE6zIqftdo4MOJho8uctOiWbwNNq2U9pPWmu
4vXVFBYIGmpyNPYzRm0QPwARAQABwsF8BBgBCgAmAhsMFiEEm9B+DgxR+NWWd7dUG5NDfTtB
YpsFAmgXUF8FCRaWWyoACgkQG5NDfTtBYptO0w//dlXJs5/42hAXKsk+PDg3wyEFb4NpyA1v
qmx7SfAzk9Hf6lWwU1O6AbqNMbh6PjEwadKUk1m04S7EjdQLsj/MBSgoQtCT3MDmWUUtHZd5
RYIPnPq3WVB47GtuO6/u375tsxhtf7vt95QSYJwCB+ZUgo4T+FV4hquZ4AsRkbgavtIzQisg
Dgv76tnEv3YHV8Jn9mi/Bu0FURF+5kpdMfgo1sq6RXNQ//TVf8yFgRtTUdXxW/qHjlYURrm2
H4kutobVEIxiyu6m05q3e9eZB/TaMMNVORx+1kM3j7f0rwtEYUFzY1ygQfpcMDPl7pRYoJjB
dSsm0ZuzDaCwaxg2t8hqQJBzJCezTOIkjHUsWAK+tEbU4Z4SnNpCyM3fBqsgYdJxjyC/tWVT
AQ18NRLtPw7tK1rdcwCl0GFQHwSwk5pDpz1NH40e6lU+NcXSeiqkDDRkHlftKPV/dV+lQXiu
jWt87ecuHlpL3uuQ0ZZNWqHgZoQLXoqC2ZV5KrtKWb/jyiFX/sxSrodALf0zf+tfHv0FZWT2
zHjUqd0t4njD/UOsuIMOQn4Ig0SdivYPfZukb5cdasKJukG1NOpbW7yRNivaCnfZz6dTawXw
XRIV/KDsHQiyVxKvN73bThKhONkcX2LWuD928tAR6XMM2G5ovxLe09vuOzzfTWQDsm++9UKF a/A=
In-Reply-To: <20250531081159.2007319-4-abd.masalkhi@xxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 31/05/2025 10:11, Abd-Alrhman Masalkhi wrote:
> Add a MAINTAINERS entry for the newly introduced sysfs control driver
> supporting STMicroelectronics M24LR series RFID/NFC EEPROM chips.
>
> This entry includes the driver source, Device Tree binding, and assigns
> maintainership to the original contributor.
>
> Signed-off-by: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
> ---
> MAINTAINERS | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index eb11c6f57500..f08975ac4d9f 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -23017,6 +23017,14 @@ W: http://www.st.com/
> F: Documentation/devicetree/bindings/iio/imu/st,lsm6dsx.yaml
> F: drivers/iio/imu/st_lsm6dsx/
>
> +ST M24LR CONTROL DRIVER
> +M: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>
> +L: linux-kernel@xxxxxxxxxxxxxxx
> +L: devicetree@xxxxxxxxxxxxxxx

No, drop. There are no entries like that.


Best regards,
Krzysztof


Return-Path: <linux-kernel+bounces-669124-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 25AA141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:40:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 65018189F923
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:40:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 04E5223C4FF;
Sat, 31 May 2025 13:40:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="U+5pLDPm"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 37F876ADD;
Sat, 31 May 2025 13:39:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698800; cv=none; b=KhitqpzODet0kgvZmxoSdu46Ps7qD/VSE6us6VK5bvJjinGPEcXrqk/5YtSA7jjDcBLNBQLjn3h2Hft09d9gLL6YEs7sytSeJ2g6qrumoQ4TyOrkgH5P7z8ykUFNaRPdzWLPjDZ96h+/Ha2OjguFmAoFBFH0pfQQ6U4vU9jn878=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698800; c=relaxed/simple;
bh=RyP8MxcAjStXqK5TBc4mN3vd2YK/1GreKNWYk8YXfZI=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=H/lkWVpw7Jw9ga39SeTzrX4y1dvRVO/BJUEC9vhkWh+Vhwvga4QBMd3IoagILEU0q7Ui2QggbTuc1wM2xAyil/pYWtbFNrsP/YqVwfSCeI7yxehkyjbt7IAwhzQ9N639I2rPv603lw1uiXaN9ZWPeUtVyk/a7srTjYgXeRMOX8g=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=U+5pLDPm; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E830EC4CEE3;
Sat, 31 May 2025 13:39:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748698799;
bh=RyP8MxcAjStXqK5TBc4mN3vd2YK/1GreKNWYk8YXfZI=;
h=Date:Subject:To:Cc:References:From:In-Reply-To:From;
b=U+5pLDPmNlxYoSIeUrF6sFVa6lzw9JaJSmlldotouFY3vAWB6dNvtCmwzng7E/R7V
VXGy3bY5dwX0aEbBqaGEWvxXUbxfs6SqoyDfCrU+tuwT+6nU9CMlHaooiYTbmvJFOI
YazyjkgV34/h6bNighng8JSXSwT+31ATdU13JTbFgL/PuUeo9356AS0pahF2zOLvac
fBG7Aun9yab1mXnPg2s80YEatf/o1Ttvz3Z90VP4tMfQvhWSWyrVl81sAqpjllUUnL
iCG5D/y8ZsUUKJ8avxirH27kC1qfe0tLExfFUAjNtNuJa2CODJcAfyZhGK9WGGCRwu
SazfMtG2/ZEbQ==
Message-ID: <ead6711d-8e38-43b7-bc50-bcc3f7cddb70@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:39:55 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: pmdomain: renesas: rcar: Use str_on_off() helper in
rcar_sysc_power() and rcar_gen4_sysc_power()
To: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
Cc: shao.mingyin@xxxxxxxxxx, ulf.hansson@xxxxxxxxxx, magnus.damm@xxxxxxxxx,
linux-pm@xxxxxxxxxxxxxxx, linux-renesas-soc@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, yang.yang29@xxxxxxxxxx, xu.xin16@xxxxxxxxxx,
yang.tao172@xxxxxxxxxx, ye.xingchen@xxxxxxxxxx
References: <20250529101305686S2ehGmiFg5bnKwSa__96W@xxxxxxxxxx>
<6eca9bc9-ac12-4aec-85c7-66397f70fca0@xxxxxxxxxx>
<CAMuHMdVojqSZVg9xCQBUaonTsaDZ5ORsh_ttueOrhKgr10omiw@xxxxxxxxxxxxxx>
From: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
Content-Language: en-US
Autocrypt: addr=krzk@xxxxxxxxxx; keydata=
xsFNBFVDQq4BEAC6KeLOfFsAvFMBsrCrJ2bCalhPv5+KQF2PS2+iwZI8BpRZoV+Bd5kWvN79
cFgcqTTuNHjAvxtUG8pQgGTHAObYs6xeYJtjUH0ZX6ndJ33FJYf5V3yXqqjcZ30FgHzJCFUu
JMp7PSyMPzpUXfU12yfcRYVEMQrmplNZssmYhiTeVicuOOypWugZKVLGNm0IweVCaZ/DJDIH
gNbpvVwjcKYrx85m9cBVEBUGaQP6AT7qlVCkrf50v8bofSIyVa2xmubbAwwFA1oxoOusjPIE
J3iadrwpFvsZjF5uHAKS+7wHLoW9hVzOnLbX6ajk5Hf8Pb1m+VH/E8bPBNNYKkfTtypTDUCj
NYcd27tjnXfG+SDs/EXNUAIRefCyvaRG7oRYF3Ec+2RgQDRnmmjCjoQNbFrJvJkFHlPeHaeS
BosGY+XWKydnmsfY7SSnjAzLUGAFhLd/XDVpb1Een2XucPpKvt9ORF+48gy12FA5GduRLhQU
vK4tU7ojoem/G23PcowM1CwPurC8sAVsQb9KmwTGh7rVz3ks3w/zfGBy3+WmLg++C2Wct6nM
Pd8/6CBVjEWqD06/RjI2AnjIq5fSEH/BIfXXfC68nMp9BZoy3So4ZsbOlBmtAPvMYX6U8VwD
TNeBxJu5Ex0Izf1NV9CzC3nNaFUYOY8KfN01X5SExAoVTr09ewARAQABzSVLcnp5c3p0b2Yg
S296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+wsGVBBMBCgA/AhsDBgsJCAcDAgYVCAIJCgsE
FgIDAQIeAQIXgBYhBJvQfg4MUfjVlne3VBuTQ307QWKbBQJoF1BKBQkWlnSaAAoJEBuTQ307
QWKbHukP/3t4tRp/bvDnxJfmNdNVn0gv9ep3L39IntPalBFwRKytqeQkzAju0whYWg+R/rwp
+r2I1Fzwt7+PTjsnMFlh1AZxGDmP5MFkzVsMnfX1lGiXhYSOMP97XL6R1QSXxaWOpGNCDaUl
ajorB0lJDcC0q3xAdwzRConxYVhlgmTrRiD8oLlSCD5baEAt5Zw17UTNDnDGmZQKR0fqLpWy
786Lm5OScb7DjEgcA2PRm17st4UQ1kF0rQHokVaotxRM74PPDB8bCsunlghJl1DRK9s1aSuN
hL1Pv9VD8b4dFNvCo7b4hfAANPU67W40AaaGZ3UAfmw+1MYyo4QuAZGKzaP2ukbdCD/DYnqi
tJy88XqWtyb4UQWKNoQqGKzlYXdKsldYqrLHGoMvj1UN9XcRtXHST/IaLn72o7j7/h/Ac5EL
8lSUVIG4TYn59NyxxAXa07Wi6zjVL1U11fTnFmE29ALYQEXKBI3KUO1A3p4sQWzU7uRmbuxn
naUmm8RbpMcOfa9JjlXCLmQ5IP7Rr5tYZUCkZz08LIfF8UMXwH7OOEX87Y++EkAB+pzKZNNd
hwoXulTAgjSy+OiaLtuCys9VdXLZ3Zy314azaCU3BoWgaMV0eAW/+gprWMXQM1lrlzvwlD/k
whyy9wGf0AEPpLssLVt9VVxNjo6BIkt6d1pMg6mHsUEVzsFNBFVDXDQBEADNkrQYSREUL4D3
Gws46JEoZ9HEQOKtkrwjrzlw/tCmqVzERRPvz2Xg8n7+HRCrgqnodIYoUh5WsU84N03KlLue
MNsWLJBvBaubYN4JuJIdRr4dS4oyF1/fQAQPHh8Thpiz0SAZFx6iWKB7Qrz3OrGCjTPcW6ei
OMheesVS5hxietSmlin+SilmIAPZHx7n242u6kdHOh+/SyLImKn/dh9RzatVpUKbv34eP1wA
GldWsRxbf3WP9pFNObSzI/Bo3kA89Xx2rO2roC+Gq4LeHvo7ptzcLcrqaHUAcZ3CgFG88CnA
6z6lBZn0WyewEcPOPdcUB2Q7D/NiUY+HDiV99rAYPJztjeTrBSTnHeSBPb+qn5ZZGQwIdUW9
YegxWKvXXHTwB5eMzo/RB6vffwqcnHDoe0q7VgzRRZJwpi6aMIXLfeWZ5Wrwaw2zldFuO4Dt
91pFzBSOIpeMtfgb/Pfe/a1WJ/GgaIRIBE+NUqckM+3zJHGmVPqJP/h2Iwv6nw8U+7Yyl6gU
BLHFTg2hYnLFJI4Xjg+AX1hHFVKmvl3VBHIsBv0oDcsQWXqY+NaFahT0lRPjYtrTa1v3tem/
JoFzZ4B0p27K+qQCF2R96hVvuEyjzBmdq2esyE6zIqftdo4MOJho8uctOiWbwNNq2U9pPWmu
4vXVFBYIGmpyNPYzRm0QPwARAQABwsF8BBgBCgAmAhsMFiEEm9B+DgxR+NWWd7dUG5NDfTtB
YpsFAmgXUF8FCRaWWyoACgkQG5NDfTtBYptO0w//dlXJs5/42hAXKsk+PDg3wyEFb4NpyA1v
qmx7SfAzk9Hf6lWwU1O6AbqNMbh6PjEwadKUk1m04S7EjdQLsj/MBSgoQtCT3MDmWUUtHZd5
RYIPnPq3WVB47GtuO6/u375tsxhtf7vt95QSYJwCB+ZUgo4T+FV4hquZ4AsRkbgavtIzQisg
Dgv76tnEv3YHV8Jn9mi/Bu0FURF+5kpdMfgo1sq6RXNQ//TVf8yFgRtTUdXxW/qHjlYURrm2
H4kutobVEIxiyu6m05q3e9eZB/TaMMNVORx+1kM3j7f0rwtEYUFzY1ygQfpcMDPl7pRYoJjB
dSsm0ZuzDaCwaxg2t8hqQJBzJCezTOIkjHUsWAK+tEbU4Z4SnNpCyM3fBqsgYdJxjyC/tWVT
AQ18NRLtPw7tK1rdcwCl0GFQHwSwk5pDpz1NH40e6lU+NcXSeiqkDDRkHlftKPV/dV+lQXiu
jWt87ecuHlpL3uuQ0ZZNWqHgZoQLXoqC2ZV5KrtKWb/jyiFX/sxSrodALf0zf+tfHv0FZWT2
zHjUqd0t4njD/UOsuIMOQn4Ig0SdivYPfZukb5cdasKJukG1NOpbW7yRNivaCnfZz6dTawXw
XRIV/KDsHQiyVxKvN73bThKhONkcX2LWuD928tAR6XMM2G5ovxLe09vuOzzfTWQDsm++9UKF a/A=
In-Reply-To: <CAMuHMdVojqSZVg9xCQBUaonTsaDZ5ORsh_ttueOrhKgr10omiw@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 30/05/2025 10:07, Geert Uytterhoeven wrote:
> Hi Krzysztof,
>
> On Thu, 29 May 2025 at 08:41, Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:
>> On 29/05/2025 04:13, shao.mingyin@xxxxxxxxxx wrote:
>>> From: Shao Mingyin <shao.mingyin@xxxxxxxxxx>
>>>
>>> Remove hard-coded strings by using the str_on_off() helper function.
>>>
>>> Signed-off-by: Shao Mingyin <shao.mingyin@xxxxxxxxxx>
>>> ---
>>> drivers/pmdomain/renesas/rcar-gen4-sysc.c | 3 ++-
>>> drivers/pmdomain/renesas/rcar-sysc.c | 3 ++-
>>
>> Stop sending such trivial patches one driver per patch, but entire
>> subsystem in one patch. That's a lot of churn, considering this was
>> rejected:
>
> Was it? I only see my Rb, and a review comment asking for more...
>
>> https://lore.kernel.org/all/20250114203547.1013010-1-krzysztof.kozlowski@xxxxxxxxxx/
Indeed this one was not, but my other patchsets were - several
subsystems clearly expressed that this is just a churn. So if doing
this, because you do not consider it a churn, do it all at once to, not
line by line.

Best regards,
Krzysztof


Return-Path: <linux-kernel+bounces-669125-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A1B5841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:40:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 63C2F9E2781
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:40:00 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5C16623C50A;
Sat, 31 May 2025 13:40:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="tOA7fp1q"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 9227023815B;
Sat, 31 May 2025 13:40:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698814; cv=none; b=OUL61qCULgSk7YmF3LK7By9RRorNTjNFiOYz8v6oQpofDHsPIKXng6MC9704y+jOt/8vPstmcnpVebaCYySFIxleEfmLr2X8WsDT16vbxCpbxOnKq/GuOUH3GEXOXgpWue8xNsynicbB8J70vFWWrqxLTa1TaKpnyoE03nIX7wk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698814; c=relaxed/simple;
bh=XqWPDWiRyz4buOXC7JUMJhnKN++3un3+UjTzL+RenBA=;
h=Date:From:To:CC:Subject:In-Reply-To:References:Message-ID:
MIME-Version:Content-Type; b=ByH7KkJUAJboj67b5EFnh5jz0z7Zr1JtnYT3EnkBTnHQkSeNpvey7FZvJkePmoFjHKeYi8df/IKXUVPXiJThv48sRy1AoF7EgCS8G0yKlm2sJjdxgkAigwybo1jV/AqrMjBJtN905AlYRyPpZq5OxMqinRDE+B0+nDcfsPIlWDY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=tOA7fp1q; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E0886C4CEE3;
Sat, 31 May 2025 13:40:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748698814;
bh=XqWPDWiRyz4buOXC7JUMJhnKN++3un3+UjTzL+RenBA=;
h=Date:From:To:CC:Subject:In-Reply-To:References:From;
b=tOA7fp1qHt40RpiZGeKAKx1tLrPTsroFaTIV25L001kqllbEbTArnrZdiI1eHl/Zs
YnMESXwMzlvRCp3jEBoypdBP371/9osSa/CeAiCEDaRgz6W+oxfjWe1IflUTrFH1yj
7ASwYpKIgkyMJMkUfszVTlSoXs61DQbHzQ4FyBUgWrBCy+K1s50VYjEFZ5P1NO9DSi
HlIK5Mz2w+UYQVgTQMzYKsHYTbm38S1e2wlQvorSmEeuwN9COeRG3euRYKPssVCqCg
e3WH55EzKOXf+m70hoEjD8H0qtaWxgr67xKcbvHpj5FdjmYP1zI7plW9CIRBr+dz/T
abH3O3CrljJmg==
Date: Sat, 31 May 2025 06:40:09 -0700
From: Kees Cook <kees@xxxxxxxxxx>
To: Arnd Bergmann <arnd@xxxxxxxx>, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
CC: linux-kernel@xxxxxxxxxxxxxxx, Linux-Arch <linux-arch@xxxxxxxxxxxxxxx>,
linux-kbuild@xxxxxxxxxxxxxxx, x86@xxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-hardening@xxxxxxxxxxxxxxx
Subject: Re: [GIT PULL] require gcc-8 and binutils-2.30
User-Agent: K-9 Mail for Android
In-Reply-To: <feab370a-3857-4ae9-a22d-1ab6d992c73c@xxxxxxxxxxxxxxxx>
References: <feab370a-3857-4ae9-a22d-1ab6d992c73c@xxxxxxxxxxxxxxxx>
Message-ID: <D46A2AE5-F7F8-482F-8D26-C7179D8115CE@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain;
charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu



On May 31, 2025 2:09:53 AM PDT, Arnd Bergmann <arnd@arndb=2Ede> wrote:
> Kbuild: remove structleak gcc plugin
> gcc-plugins: remove SANCOV gcc plugin

I didn't see either of these emailed out, but we'd talked about it earlier=
and the resulting changes look good to me=2E Thanks!=20

Acked-by: Kees Cook<kees@kernel=2Eorg>

--=20
Kees Cook


Return-Path: <linux-kernel+bounces-669126-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7547841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:40:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 825A517867E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:40:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0DCF823D29F;
Sat, 31 May 2025 13:40:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c4+EE4Hk"
Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 069EF23C4F8;
Sat, 31 May 2025 13:40:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748698816; cv=none; b=tfscMufjN171mG+ZLgkNqmu7ojJka9iq6bQKd6dWc4MEgX0jdlAhd8aXhYt9IlQisdZ/SfcKLZcuAFFbcl2Epq9mCBLBLr3jcPQ2rAMZxvRrsdEz7AD1iaFiMeLsgj1r9nBp75owwWoUVdilDog/CUxzD6QYtW1vBRhHi2w/TuM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748698816; c=relaxed/simple;
bh=bWDjmSzU2yzp+AegH1vxwlklLZWf4yPOlRPht57hKkc=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=cMBes/3sclmxswjW6/HGft11S46+ZpqNY9r6XCTnn1lfmcS6ejKJIgJ0HEGXT5huTR1xZQkT61b2Wsz5Vw1oq/eG6VlUGEa2yoh9WuhInyh+QaIqd1fbObz1CTTm3tkruRNdQb/1+s5+IKpJpcrH2omjU0wZpy2BZVhQAhZdPO0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=c4+EE4Hk; arc=none smtp.client-ip=209.85.214.180
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-234b9b01a76so2508935ad.3;
Sat, 31 May 2025 06:40:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748698814; x=1749303614; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=TjytCL6VHWdVLEYo4df5YAeMdP0m5fLZbWIXvH9pJt8=;
b=c4+EE4Hkwd+/77kokQpAfQ3P8BvrylpjZENvYN5KvDqUY6fUhgxySR76Xof1826BtH
qQv8/J3Dmn23u3sSZ5dE+A62iFYaBgz7VMBOBZuL6S9ML/YhQmYQb7ogk6dynxEmDiZT
kbyuLxzDsKVsV3e6BU/njiG3w613PikhBHWkOqSq7PtSzUOUJUSwZR4OPh4Fi203hVC4
iwthqJWu/fN/xGSiD5hrNzIP9euKYhuilxtZBm3Gn73Ldpjt8Nj6hclXori5W024YcXw
pNxpArlAu+RCSRfmnBm4/xeHoszr3yfY8ENci33SUCdv4lOea5Sz66lpmmT6MKWjCaiQ
GUGg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748698814; x=1749303614;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=TjytCL6VHWdVLEYo4df5YAeMdP0m5fLZbWIXvH9pJt8=;
b=QhwbzJVLTyfL1D2lwN4VpxufNTD52G7kiUKgC0/uBfILp24ZS9z31CYX1fotypzDfm
FoHINYOUZKX+U18K6nxDrzm3lXAVWf2PyFMu09S6qKGxuD9E3xJ/P0ME88SmV03g5IJ5
xiRbMpwMnMg0J8o8yWLsb/rblT4+4uKZRL6DlKYG1v2iPjRbtzVN+4gZUYb55kq0AAQ/
lNFWO+FctK+S3NmgAbSzuNm3tFZkScch0oo0/XMliQ+BRhm028D9eEzHOcXHIls8FhVm
utp+M59pJd1Dd+KBXsWzI2UhTVJW9lyAqYjaVBeZth1DhbjwcEmZJkWF12f2qF9iQ4JM
Wb9g==
X-Forwarded-Encrypted: i=1; AJvYcCW2CXyJYVXwxoN3yY4nFxlvwkntbMF4c7V9gbLxX3ACorI1vdMxLxhPzA7HurcbNRrZWFjmzSx3cxgOtTim1fo=@vger.kernel.org, AJvYcCWK9X8Fb3mkv4fa9lfgJVHLnM+Nu6RsHdDlYzYyTKoGQxnup2uNn6UbZZYfwFJ9yHzv65rv1aNF2sHrC7M=@vger.kernel.org
X-Gm-Message-State: AOJu0YxJZz8fd4DM51Y9BiZw86gKbHF7VY1xgmFRFJSX0fbgm33NHfHb
vkWL5M5TmYHKhDkwqvGsxmwyNaC0bB/dUyvvwuqMAw25heOTO3pp3DKRgGQw5mqKPMsXFkzkR9k
jTyK/SNCga3Sr83XpJJjNB5jAYn5nTRc=
X-Gm-Gg: ASbGncsL3ChOu0RenCbq6MQuSqiPlZ1CzQ7BOwKW555apKuDbVUqdD+TH+j+luY0WmH
iqEfvrHXkbt6avRI5cw5YqLzRFmPrufDJZvFKkfuLNw9Gn2M/5weWxdw9GPhhfhL6PciIlqGWwz
rHJQ050RLRqFm4OeGC9OVJAzGFr8qwguBb2Vv3KAfPGSc=
X-Google-Smtp-Source: AGHT+IGM/VopKp/r6apLhI9rmp9l1qxkDiRkPFj/MKpgaRuzrg6NcdRAoIs0amXnu7mRkqF+MHQp9zxNSktQEX8jyuI=
X-Received: by 2002:a17:902:ce82:b0:22e:6d69:1775 with SMTP id
d9443c01a7336-2352960ce85mr39194065ad.11.1748698814133; Sat, 31 May 2025
06:40:14 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250530-b4-rust_miscdevice_registrationdata-v4-0-d313aafd7e59@xxxxxxxxx>
<20250530-b4-rust_miscdevice_registrationdata-v4-3-d313aafd7e59@xxxxxxxxx> <DAACGEDVW8D4.66KOF7PWD1I0@xxxxxxxxxx>
In-Reply-To: <DAACGEDVW8D4.66KOF7PWD1I0@xxxxxxxxxx>
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Date: Sat, 31 May 2025 15:40:01 +0200
X-Gm-Features: AX0GCFsJX8q4mifGojT5sQ1ck48NjEHPefut2SFVLV2ufOJhDgn09COymBLeliA
Message-ID: <CANiq72=mdaekPrR-LWzfM5hKkNaQ=zGqDFh42Mbi8eqQT71tLg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 3/3] rust: miscdevice: adjust the rust_misc_device
sample to use RegistrationData.
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: Christian Schrefl <chrisi.schrefl@xxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>, Alice Ryhl <aliceryhl@xxxxxxxxxx>,
Trevor Gross <tmgross@xxxxxxxxx>, Arnd Bergmann <arnd@xxxxxxxx>,
Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>, Lee Jones <lee@xxxxxxxxxx>,
Daniel Almeida <daniel.almeida@xxxxxxxxxxxxx>,
=?UTF-8?Q?Gerald_Wisb=C3=B6ck?= <gerald.wisboeck@xxxxxxxxxxx>,
rust-for-linux@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 2:27=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> wr=
ote:
>
> Let's keep this newline.

There is also another apparently spurious change:

> - pr_info!("Initialising Rust Misc Device Sample\n");
> + pr_info!("Initializing Rust Misc Device Sample\n");

In general, please try to avoid unrelated changes in patches.

Thanks!

Cheers,
Miguel


Return-Path: <linux-kernel+bounces-669128-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3319B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:03 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 947917AE34B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:50:43 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4BC3E23C510;
Sat, 31 May 2025 13:51:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="SH5ih7RK"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 7CEBD23BCF7;
Sat, 31 May 2025 13:51:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748699514; cv=none; b=rKm+GzyFDTbAef8XxJkNZOjuxZOY+zM67jqPaXpvWEvLPjJ5ORypsmkK85Rx8DszVkw0x5orpbtcOedM4vKr8cOKyBcs4LkQ+r5ZUaeI8iOomLUklph4riN4IYA6NJbANtLmK+BOXKsGOitomMnlcJRiSr6QbXj2XSUHbi+MHVo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748699514; c=relaxed/simple;
bh=TjkQgG4bvyolCjKm8gpgiWDCkKosYaVkELekZFpxnvY=;
h=Date:From:To:CC:Subject:In-Reply-To:References:Message-ID:
MIME-Version:Content-Type; b=Ztk8AzWxSGNwWcA1DHmpXA2MFao6QVGNEjCEX6cCpHe8ncK3cmGxjckg5Fz2LiRsnTkCpgOHmxl41cPUY37FgHFBPpoXjkx8EcWgxRUgILHRX2Yw7b5KNQPHIVFblsoNIsHcTKdFMvxf1gpUJGfsDnRZUAThYEb43LWTIsPTmBM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=SH5ih7RK; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B74DFC4CEEF;
Sat, 31 May 2025 13:51:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748699513;
bh=TjkQgG4bvyolCjKm8gpgiWDCkKosYaVkELekZFpxnvY=;
h=Date:From:To:CC:Subject:In-Reply-To:References:From;
b=SH5ih7RKSdqexXT5A8Sic37lsM0a8noboX5JnN+uGHXoUwZGIHVW4K843gW0HQge1
Zjbyg2QGUa4wU7ow6xYB3H8jG/m+j0mxPJAKyf9b0Cr0aaC2IBLayCioPH4suhqbyF
b1RB/0v6SaOPntHrLJ7Ct804Rfw6rmUvGkxDJWW01c4sY3Atw0s3d/cruXQEYIODIH
GPytMwaL8xaoHz3is0J/TtVbjJX5RHzwbq3U7UH3L+pV77zI5CuYipGpbHHXhcvwlx
gN0ia2vxUfI5nlhmIpybV/v+K6r8IR8IPBymXStVpKAZSqp2jpsCm5ZB+qIsGdrnSv
62Ywf2OFX5sIA==
Date: Sat, 31 May 2025 06:51:50 -0700
From: Kees Cook <kees@xxxxxxxxxx>
To: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
CC: Alessandro Carminati <acarmina@xxxxxxxxxx>, linux-kselftest@xxxxxxxxxxxxxxx,
Dan Carpenter <dan.carpenter@xxxxxxxxxx>,
Daniel Diaz <daniel.diaz@xxxxxxxxxx>, David Gow <davidgow@xxxxxxxxxx>,
Arthur Grillo <arthurgrillo@xxxxxxxxxx>,
Brendan Higgins <brendan.higgins@xxxxxxxxx>,
Naresh Kamboju <naresh.kamboju@xxxxxxxxxx>,
Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Maxime Ripard <mripard@xxxxxxxxxx>,
Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx>,
Daniel Vetter <daniel@xxxxxxxx>, Guenter Roeck <linux@xxxxxxxxxxxx>,
Alessandro Carminati <alessandro.carminati@xxxxxxxxx>,
Jani Nikula <jani.nikula@xxxxxxxxx>,
Jeff Johnson <jeff.johnson@xxxxxxxxxxxxxxxx>,
Josh Poimboeuf <jpoimboe@xxxxxxxxxx>, Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>,
Linux Kernel Functional Testing <lkft@xxxxxxxxxx>,
dri-devel@xxxxxxxxxxxxxxxxxxxxx, kunit-dev@xxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Mark Rutland <mark.rutland@xxxxxxx>
Subject: =?US-ASCII?Q?Re=3A_=5BPATCH_v5_1/5=5D_bug/kunit=3A_Core_sup?=
=?US-ASCII?Q?port_for_suppressing_warning_backtraces?=
User-Agent: K-9 Mail for Android
In-Reply-To: <20250531102304.GF21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
References: <20250526132755.166150-1-acarmina@xxxxxxxxxx> <20250526132755.166150-2-acarmina@xxxxxxxxxx> <20250529090129.GZ24938@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <CAGegRW76X8Fk_5qqOBw_aqBwAkQTsc8kXKHEuu9ECeXzdJwMSw@xxxxxxxxxxxxxx> <20250530140140.GE21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> <202505301037.D816A49@keescook> <20250531102304.GF21197@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Message-ID: <8C5E309E-03E5-4353-8515-67A53EC6C9E3@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain;
charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu



On May 31, 2025 3:23:04 AM PDT, Peter Zijlstra <peterz@infradead=2Eorg> wr=
ote:
>On Fri, May 30, 2025 at 10:48:47AM -0700, Kees Cook wrote:
>> On Fri, May 30, 2025 at 04:01:40PM +0200, Peter Zijlstra wrote:
>> > I'm not really concerned with performance here, but more with the siz=
e
>> > of the code emitted by WARN_ONCE()=2E There are a *ton* of WARN sites=
,
>> > while only one report_bug() and printk()=2E
>> >=20
>> > The really offensive thing is that this is for a feature most nobody
>> > will ever need :/
>>=20
>> Well, it won't be enabled often -- this reminds me of ftrace: it needs
>> to work, but it'll be off most of the time=2E
>
>Well, ftrace is useful, but when would I *ever* care about this stuff? I
>can't operate kunit, don't give a crap about kunit, and if I were to
>magically run it, I would be more than capable of ignoring WARNs=2E

It's not for you, then=2E :) I can't operate ftrace, but I use kunit almos=
t daily=2E Ignoring WARNs makes this much nicer, and especially for CIs=2E

>Cleaned it up a little bit=2E=2E=2E I'll add some comments on later :-)
>
>I also need to go fix WARN_ONCE(), at least for the n<=3D2 cases that can
>use BUGFLAG_ONCE now=2E

Cool! I'll expand the WARN tests in LKDTM so we can get wider behavioral a=
nd architectural coverage=2E

-Kees


--=20
Kees Cook


Return-Path: <linux-kernel+bounces-669127-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6F93441E003FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:52:03 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 382783AFDDD
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:51:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 040DF23C8A1;
Sat, 31 May 2025 13:51:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=maowtm.org header.i=@maowtm.org header.b="SMumDkZY";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="eeUXMRF/"
Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138])
(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 7672717597;
Sat, 31 May 2025 13:51:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748699491; cv=none; b=KgxKzyK9KAoE9W0VaEwOC3KESYXYCdwFBC2gPgtvGwu4uyklHfN0mPzRar1EgKMF4kC+CMkdH7O8ZE568wAu71GGJ+A78zq1isyN+dpcPVN/xiD1h+1XvMFES96q3nLdpI1LG/u9+zLXq+qsJXhSYm77qSf7KcCADAYoiclXaI4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748699491; c=relaxed/simple;
bh=/raXh0dUOshGWJWEiIMnLA2Onw6RDiCXkqUbcvlMGY4=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=jo96AvXGPabpIy384oiHSID4+8mA+nqpSzXrHDOh2O8+s+KxC9wU01Rt0akPTu2ht+dBC53TS1T7jqh8dmDj0Kmn00suBTDz5jMsldbDSqvqDxCluX+YlYA8uoU+riACus/GLwQrgcsRR6YGu6kAfpz0DPQTfjCHi+4WfaFF+c4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=maowtm.org; spf=pass smtp.mailfrom=maowtm.org; dkim=pass (2048-bit key) header.d=maowtm.org header.i=@maowtm.org header.b=SMumDkZY; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=eeUXMRF/; arc=none smtp.client-ip=202.12.124.138
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=maowtm.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=maowtm.org
Received: from phl-compute-04.internal (phl-compute-04.phl.internal [10.202.2.44])
by mailflow.stl.internal (Postfix) with ESMTP id B50D91D4054D;
Sat, 31 May 2025 09:51:27 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
by phl-compute-04.internal (MEProxy); Sat, 31 May 2025 09:51:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maowtm.org; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm1; t=1748699487;
x=1748706687; bh=gWomyldKWxU7l0zsMN1/xB5c7EUkzuXCPvf0zYP8PZ4=; b=
SMumDkZYeEFdxYEwIPRvgGcRaFptC5I03xhTEC7lcLpqIyR2HFJmFqE/QhaTKrYx
8lK9tzoMqur9vmr/XgGwvzDbIvYBK8ntRRtPJFrNCEm3hS6ne149RHBR7SR2tDn1
zMF3zxN6dz/cWEI4GwZCBCG0EYu0J1s1CSe2bzVyYqWm226onhKZDVxuqWE2USmd
9ecX3wT9ozkDOkZS0T2aURCezWrfzHiv/k5lElAx3oYHpxi46YNgpid5dbMj4jTQ
XaxOninPuTJtMY/CxY5j+pkCRc3Ai4XMi8aK5xXF8dJR0nLuwGKj8DdHyjD2rdsd
rVNfSgKlcWRektmJf4TCXw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748699487; x=
1748706687; bh=gWomyldKWxU7l0zsMN1/xB5c7EUkzuXCPvf0zYP8PZ4=; b=e
eUXMRF/Lo0eFxfrq0NAeGCwmsR1xEbHVGZVT0Dmu65lMW869StEqobbjP6O8oq+X
WkdWpI6SFBRlGLYpLwwnerSChPIR2WW/uBuQuMeCjbbs08R+L5NXP3VRymtFkQwv
Fk3fGR3C0XhoE5poGXjhHt6cbVPBxlXn5SV5EaBdShum1ECK6QzGOw9yT26IHCT1
UNw/bBdJckTiGb+HZBVxVCjfaospkzBGVXOMCZnUOu8i+MmNqzJO0WFEUL/Ep8ZJ
fRmAOz5WOa58H6Pl2lloS2FP1p2d66saczD2pPgnMeniIDpxsKBPdD3xxaA+E7o1
BaI0BwUDhCAKfQW+iawhg==
X-ME-Sender: <xms:Xgk7aGiOdOhVjen6OmUFvL_p0fQJRnni4o4ca7lPTDORvSeg61Nrww>
<xme:Xgk7aHAuaHEZR64dbv_CyB5PAtee7pZSifTJc1LacryTElyhVu45vGjSfiR85kMVh
2mf9sC7MttODMyIuf0>
X-ME-Received: <xmr:Xgk7aOG9tMnKmp4qz57kvjot_YKUtUzpPO5nTUX0w6-W-NhP8qvj7hA3J9yNOFGh3X8l0ozuKeXPMlXIYcokVeuP>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefvddtjeculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefkffggfgfuvfev
fhfhjggtgfesthekredttddvjeenucfhrhhomhepvfhinhhgmhgrohcuhggrnhhguceomh
esmhgrohifthhmrdhorhhgqeenucggtffrrghtthgvrhhnpedukeevhfegvedvveeihedv
vdeghfeglefgudegfeetvdekiefgledtheeggefhgfenucevlhhushhtvghrufhiiigvpe
dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmsehmrghofihtmhdrohhrghdpnhgspghr
tghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehsohhngheskh
gvrhhnvghlrdhorhhgpdhrtghpthhtohepmhhitgesughighhikhhougdrnhgvthdprhgt
phhtthhopehlihhnuhigqdhfshguvghvvghlsehvghgvrhdrkhgvrhhnvghlrdhorhhgpd
hrtghpthhtoheplhhinhhugidqshgvtghurhhithihqdhmohguuhhlvgesvhhgvghrrdhk
vghrnhgvlhdrohhrghdprhgtphhtthhopegsphhfsehvghgvrhdrkhgvrhhnvghlrdhorh
hgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgvrhhnvghlrdho
rhhgpdhrtghpthhtohepkhgvrhhnvghlqdhtvggrmhesmhgvthgrrdgtohhmpdhrtghpth
htoheprghnughrihhisehkvghrnhgvlhdrohhrghdprhgtphhtthhopegvugguhiiikeej
sehgmhgrihhlrdgtohhm
X-ME-Proxy: <xmx:Xgk7aPRq3LKHnyDPYB8J2-GI7IgQO1xi_1ovkUSq_79KrdOK6z9e8Q>
<xmx:Xgk7aDyGJJ2wi3hiDbcLYNW2QKSMghPo2aaqsynNBSdqDQhTIVGVZw>
<xmx:Xgk7aN6rXQHwb2F4VS8UVNtQAZhn3ixZgLc7vr7dEi5Y36hsagogOA>
<xmx:Xgk7aAwzkSTonorkKVOpUg5J3b4_Np8pLOF5RlU5D8jXgJNnChHCsg>
<xmx:Xwk7aBxZzVzzDblqzACFNj5vCV1uKCO21d0ztZYnOllXey41gPsPX-eL>
Feedback-ID: i580e4893:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat,
31 May 2025 09:51:23 -0400 (EDT)
Message-ID: <027d5190-b37a-40a8-84e9-4ccbc352bcdf@xxxxxxxxxx>
Date: Sat, 31 May 2025 14:51:22 +0100
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH bpf-next 2/4] landlock: Use path_parent()
To: Song Liu <song@xxxxxxxxxx>, =?UTF-8?Q?Micka=C3=ABl_Sala=C3=BCn?=
<mic@xxxxxxxxxxx>, linux-fsdevel@xxxxxxxxxxxxxxx,
linux-security-module@xxxxxxxxxxxxxxx
Cc: bpf@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, kernel-team@xxxxxxxx,
andrii@xxxxxxxxxx, eddyz87@xxxxxxxxx, ast@xxxxxxxxxx, daniel@xxxxxxxxxxxxx,
martin.lau@xxxxxxxxx, viro@xxxxxxxxxxxxxxxxxx, brauner@xxxxxxxxxx,
jack@xxxxxxx, kpsingh@xxxxxxxxxx, mattbobrowski@xxxxxxxxxx,
amir73il@xxxxxxxxx, repnop@xxxxxxxxxx, jlayton@xxxxxxxxxx,
josef@xxxxxxxxxxxxxx, gnoack@xxxxxxxxxx
References: <20250528222623.1373000-1-song@xxxxxxxxxx>
<20250528222623.1373000-3-song@xxxxxxxxxx>
Content-Language: en-US
From: Tingmao Wang <m@xxxxxxxxxx>
In-Reply-To: <20250528222623.1373000-3-song@xxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/28/25 23:26, Song Liu wrote:
> Use path_parent() to walk a path up to its parent.
>
> While path_parent() has an extra check with path_connected() than existing
> code, there is no functional changes intended for landlock.
>
> Signed-off-by: Song Liu <song@xxxxxxxxxx>
> ---
> security/landlock/fs.c | 34 +++++++++++++++++-----------------
> 1 file changed, 17 insertions(+), 17 deletions(-)
>
> diff --git a/security/landlock/fs.c b/security/landlock/fs.c
> index 6fee7c20f64d..32a24758ad6e 100644
> --- a/security/landlock/fs.c
> +++ b/security/landlock/fs.c
> @@ -837,7 +837,6 @@ static bool is_access_to_paths_allowed(
> * restriction.
> */
> while (true) {
> - struct dentry *parent_dentry;
> const struct landlock_rule *rule;
>
> /*
> @@ -896,19 +895,17 @@ static bool is_access_to_paths_allowed(
> if (allowed_parent1 && allowed_parent2)
> break;
> jump_up:
> - if (walker_path.dentry == walker_path.mnt->mnt_root) {
> - if (follow_up(&walker_path)) {
> - /* Ignores hidden mount points. */
> - goto jump_up;
> - } else {
> - /*
> - * Stops at the real root. Denies access
> - * because not all layers have granted access.
> - */
> - break;
> - }
> - }
> - if (unlikely(IS_ROOT(walker_path.dentry))) {
> + switch (path_parent(&walker_path)) {
> + case PATH_PARENT_CHANGED_MOUNT:
> + /* Ignores hidden mount points. */
> + goto jump_up;
> + case PATH_PARENT_REAL_ROOT:
> + /*
> + * Stops at the real root. Denies access
> + * because not all layers have granted access.
> + */
> + goto walk_done;
> + case PATH_PARENT_DISCONNECTED_ROOT:
> /*
> * Stops at disconnected root directories. Only allows
> * access to internal filesystems (e.g. nsfs, which is

I was looking at the existing handling of disconnected root in Landlock
and I realized that the comment here confused me a bit:

/*
* Stops at disconnected root directories. Only allows
* access to internal filesystems (e.g. nsfs, which is
* reachable through /proc/<pid>/ns/<namespace>).
*/

In the original code, this was under a

if (unlikely(IS_ROOT(walker_path.dentry)))

which means that it only stops walking if we found out we're disconnected
after reaching a filesystem boundary. However if before we got to this
point, we have already collected enough rules to allow access, access
would be allowed, even if we're currently disconnected. Demo:

/ # cd /
/ # cp /linux/samples/landlock/sandboxer .
/ # mkdir a b
/ # mkdir a/foo
/ # echo baz > a/foo/bar
/ # mount --bind a b
/ # LL_FS_RO=/ LL_FS_RW=/ ./sandboxer bash
Executing the sandboxed command...
/ # cd /b/foo
/b/foo # cat bar
baz
/b/foo # mv /a/foo /foo
/b/foo # cd .. # <- We're now disconnected
bash: cd: ..: No such file or directory
/b/foo # cat bar
baz # <- but landlock still lets us read the file

However, I think this patch will change this behavior due to the use of
path_connected

root@10a8fff999ce:/# mkdir a b
root@10a8fff999ce:/# mkdir a/foo
root@10a8fff999ce:/# echo baz > a/foo/bar
root@10a8fff999ce:/# mount --bind a b
root@10a8fff999ce:/# LL_FS_RO=/ LL_FS_RW=/ ./sandboxer bash
Executing the sandboxed command...
bash: cannot set terminal process group (191): Inappropriate ioctl for device
bash: no job control in this shell
root@10a8fff999ce:/# cd /b/foo
root@10a8fff999ce:/b/foo# cat bar
baz
root@10a8fff999ce:/b/foo# mv /a/foo /foo
root@10a8fff999ce:/b/foo# cd ..
bash: cd: ..: No such file or directory
root@10a8fff999ce:/b/foo# cat bar
cat: bar: Permission denied

I'm not sure if the original behavior was intentional, but since this
technically counts as a functional changes, just pointing this out.

Also I'm slightly worried about the performance overhead of doing
path_connected for every hop in the iteration (but ultimately it's
Mickaël's call). At least for Landlock, I think if we want to block all
access to disconnected files, as long as we eventually realize we have
been disconnected (by doing the "if dentry == path.mnt" check once when we
reach root), and in that case deny access, we should be good.


> @@ -918,12 +915,15 @@ static bool is_access_to_paths_allowed(
> allowed_parent1 = true;
> allowed_parent2 = true;
> }
> + goto walk_done;
> + case PATH_PARENT_SAME_MOUNT:
> break;
> + default:
> + WARN_ON_ONCE(1);
> + goto walk_done;
> }
> - parent_dentry = dget_parent(walker_path.dentry);
> - dput(walker_path.dentry);
> - walker_path.dentry = parent_dentry;
> }
> +walk_done:
> path_put(&walker_path);
>
> if (!allowed_parent1) {



Return-Path: <linux-kernel+bounces-669129-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4CC1041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:56:25 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 5C4BC17DD1F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:56:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2C38A23C4FB;
Sat, 31 May 2025 13:56:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="gN6kXzDG"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12])
(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 5936279D0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:56:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.12
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748699780; cv=none; b=urappcCCpls+JSiU0FnuHuIp9+g9+tGDAyOTcoINRFwFXP9A2NrPIuyyYORwFu4jXQ0jzOhFPQKr+2HG7+kchy9NJz6d/2szMAkPhCM2wbHQq0JbVYc+42igwnaseYjwKJM+KG+QVCU74duMsUV75ET5fAK2lBsvNjdyGsQztFw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748699780; c=relaxed/simple;
bh=xc/jaFtGUdS9VtsThMr6l64Wu8Kp6Q3DfbpAKtANsIA=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=BOWcg/B7jt/jTBgE0HNuWTrNrT2f2KFbMjeCTuKXcZuKk0J6CPc1UiTuMaakzzRAHqqq6V9YZctZaYMj12L1aEQrbxyhiEe/nJQYdnPtfbvur0wM8hkGbLjbo+YKnZ6TJWxNhMb51F59ZfMvCLprZIO/sYlsng07t0QLQIDXM2s=
ARC-Authentication-Results:i=1; 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=gN6kXzDG; arc=none smtp.client-ip=198.175.65.12
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748699778; x=1780235778;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=xc/jaFtGUdS9VtsThMr6l64Wu8Kp6Q3DfbpAKtANsIA=;
b=gN6kXzDGoglLCsX+VCukvQR2a5ZVIyPoYwJrVL3h3k86B3hYgr++UtSr
Urz/TLwzk4bHBlZtYaKdVGpyY/AO9EkgLJKohpVcY+K6Pe/jSLdNZem8y
g+ygH8MZFwTGaruuabhjNx8R9fztqBSnF5gqi8LLv3JtXthEuzxM/Ol86
jol5Lpdo0FHx9UvebHPXrAcWaGKx+D3/1ibrXobIOm8JqdibvpmsS36IU
QriFZ8seNI7x2xxQG0z7wN0aOXokqjRYKh4yomRrCsU32fQkEoWwePCSs
9crxVrc1IuZsKh79/EdzNfHKWfcCj2jWNu2QO0LxoL/2DBLWy0K5StCIN
A==;
X-CSE-ConnectionGUID: Mv8J/4SjTdWj7P1oYI/nfA==
X-CSE-MsgGUID: evXEn8c4RY+ATmlIrQEmTg==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="62174504"
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="62174504"
Received: from orviesa006.jf.intel.com ([10.64.159.146])
by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 06:56:17 -0700
X-CSE-ConnectionGUID: q7bPbGEoSpyff7xrJgoRbQ==
X-CSE-MsgGUID: PNhqCaQqR/WwEs0XsP3beA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="144034593"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa006.jf.intel.com with ESMTP; 31 May 2025 06:56:15 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLMh2-000YQu-0S;
Sat, 31 May 2025 13:56:12 +0000
Date: Sat, 31 May 2025 21:55:17 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Qingfang Deng <dqfext@xxxxxxxxx>,
Paul Walmsley <paul.walmsley@xxxxxxxxxx>,
Palmer Dabbelt <palmer@xxxxxxxxxxx>,
Albert Ou <aou@xxxxxxxxxxxxxxxxx>, Alexandre Ghiti <alex@xxxxxxxx>,
linux-riscv@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Cc: llvm@xxxxxxxxxxxxxxx, oe-kbuild-all@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] riscv: use generic MMIO accessors
Message-ID: <202505312115.47xDnzAe-lkp@xxxxxxxxx>
References: <20250530032252.3092502-1-dqfext@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530032252.3092502-1-dqfext@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Qingfang,

kernel test robot noticed the following build warnings:

[auto build test WARNING on linus/master]
[also build test WARNING on v6.15]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Qingfang-Deng/riscv-use-generic-MMIO-accessors/20250530-112455
base: linus/master
patch link: https://lore.kernel.org/r/20250530032252.3092502-1-dqfext%40gmail.com
patch subject: [PATCH] riscv: use generic MMIO accessors
config: riscv-allmodconfig (https://download.01.org/0day-ci/archive/20250531/202505312115.47xDnzAe-lkp@xxxxxxxxx/config)
compiler: clang version 21.0.0git (https://github.com/llvm/llvm-project f819f46284f2a79790038e1f6649172789734ae8)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250531/202505312115.47xDnzAe-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505312115.47xDnzAe-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> drivers/gpu/drm/omapdrm/dss/dispc.c:4720:27: warning: stack frame size (2304) exceeds limit (2048) in 'dispc_runtime_suspend' [-Wframe-larger-than]
4720 | static __maybe_unused int dispc_runtime_suspend(struct device *dev)
| ^
drivers/gpu/drm/omapdrm/dss/dispc.c:4735:27: warning: stack frame size (2432) exceeds limit (2048) in 'dispc_runtime_resume' [-Wframe-larger-than]
4735 | static __maybe_unused int dispc_runtime_resume(struct device *dev)
| ^
2 warnings generated.


vim +/dispc_runtime_suspend +4720 drivers/gpu/drm/omapdrm/dss/dispc.c

060b6d9cbab03f drivers/video/omap2/dss/dispc.c Senthilvadivu Guruswamy 2011-01-24 4719
d6c75c295f67b2 drivers/gpu/drm/omapdrm/dss/dispc.c Arnd Bergmann 2021-12-05 @4720 static __maybe_unused int dispc_runtime_suspend(struct device *dev)
4fbafaf371be78 drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2011-05-27 4721 {
1f6b6b6267ebe6 drivers/gpu/drm/omapdrm/dss/dispc.c Laurent Pinchart 2018-02-13 4722 struct dispc_device *dispc = dev_get_drvdata(dev);
1f6b6b6267ebe6 drivers/gpu/drm/omapdrm/dss/dispc.c Laurent Pinchart 2018-02-13 4723
1f6b6b6267ebe6 drivers/gpu/drm/omapdrm/dss/dispc.c Laurent Pinchart 2018-02-13 4724 dispc->is_enabled = false;
0925afc9a4851c drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2014-04-11 4725 /* ensure the dispc_irq_handler sees the is_enabled value */
0925afc9a4851c drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2014-04-11 4726 smp_wmb();
0925afc9a4851c drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2014-04-11 4727 /* wait for current handler to finish before turning the DISPC off */
1f6b6b6267ebe6 drivers/gpu/drm/omapdrm/dss/dispc.c Laurent Pinchart 2018-02-13 4728 synchronize_irq(dispc->irq);
0925afc9a4851c drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2014-04-11 4729
1f6b6b6267ebe6 drivers/gpu/drm/omapdrm/dss/dispc.c Laurent Pinchart 2018-02-13 4730 dispc_save_context(dispc);
4fbafaf371be78 drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2011-05-27 4731
4fbafaf371be78 drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2011-05-27 4732 return 0;
4fbafaf371be78 drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2011-05-27 4733 }
4fbafaf371be78 drivers/video/omap2/dss/dispc.c Tomi Valkeinen 2011-05-27 4734

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669130-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5120B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:00:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7A2C49E54A8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:59:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 730CF23C518;
Sat, 31 May 2025 14:00:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="c9y+vgDO"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 B19F623C50F;
Sat, 31 May 2025 14:00:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748700002; cv=none; b=qDKcMlNX5BnzDavUpL3frdSa+yf9/Gy6uLTsO4NDsAWVppzl4GkTnjv8IgOfUtOBcCudXoXGu4IB+4lNlNla6a9FkCr72D9DHI+B0ikFVHzK8vjOoLETzz4IgsqgP8y9d8U/VEhzhTIZ2+M4eMvjvTBErbSlDUymZjixvL4GChw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748700002; c=relaxed/simple;
bh=w40llQNqhsUdvYKnHf7RQNenStlQPIZxcEYBgaiNGT0=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=LfDdQDVPbYPuC6nUu0ICA3xFX4bu1wf1CqG5LwBy5LubTNMw2k7FkWelr/Hq6MMh+Qn576rCDC9God6OweVQwA8eFZatMPZJnBIuJK6SKSQSQSErqoFKM7lEPYJEKiCKG5D1T6EOPa9u2uFG+aP/CNs5oYNrd4z4l4RbB43eQPQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=c9y+vgDO; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1ADCCC4AF09;
Sat, 31 May 2025 14:00:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748700002;
bh=w40llQNqhsUdvYKnHf7RQNenStlQPIZxcEYBgaiNGT0=;
h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
b=c9y+vgDO3M+HaixqZ9knl1SuKVQeqlvh9hJLLO6/b585GVWD+FQ3U1gUujDPCDsxJ
2q7N6bmPkBFmFcgiBie3AmA/wzy0mDmz4JsILePcffCGjoZjbh1FLP3ZP1GaJ9ajTw
cTeYxWpP3ObfWU+sSFF2jdQblkIhEESRPGrbrgxTsvnzpeMauF8IR2ann0B8vA612y
HvWzSmKpPiPUG+TUdl0WDVvHbE8aLe3OeV/J54Sb4E5R9+y/1cty6v5tM+O/8OydfF
4yiwzlPkBu9RZyDPzR3h1G6+PWTvX1mPsAHEcBFwmLlglmwgLgYDLxR2Sw4IBxP7NQ
LjkTzUpqJ2A/w==
Received: by mail-lf1-f49.google.com with SMTP id 2adb3069b0e04-54b0d638e86so4462955e87.1;
Sat, 31 May 2025 07:00:01 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCV2Z5jEWc2E0YY6IynVNw5mRgmpPhRhRRAGB78fb+C5J+KOET8a9i+7HqcjNJaLgV6sqPnE2FJLyjgEvzhs@xxxxxxxxxxxxxxx, AJvYcCXBCmEzbpK5GKF/798T42Xpkpb+7FPvMuvYMcXkKT+pQEjwt84vn6xze1juYTC6HjZp0hBacxiE9JGze98=@vger.kernel.org
X-Gm-Message-State: AOJu0YxFSdECdtqind/8xw7+eXVNyFapT37rs8Fi+b59FQtgGwXu646V
XSl3lPwMNqPX12nFVzxncXqhys6GB1RxttJLGiaH75VaTSIUochrFjE7cHVTZ9xVuyEhpTFQHz6
lX+pTZ7et9s8YHPJFTYUmj/jdlDQui5c=
X-Google-Smtp-Source: AGHT+IEizyomkzm+23rhwY3vKDd+/vm3NmPAc9IXAQOQp1ZWvNb6EzU9xDKlHySNB2sc4OMypej4gnIGzM74DTKuE7Y=
X-Received: by 2002:a05:6512:31c7:b0:553:3665:366d with SMTP id
2adb3069b0e04-5533d15e1a0mr1717573e87.21.1748700000764; Sat, 31 May 2025
07:00:00 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250527142318.14175-1-petr.pavlu@xxxxxxxx>
In-Reply-To: <20250527142318.14175-1-petr.pavlu@xxxxxxxx>
From: Masahiro Yamada <masahiroy@xxxxxxxxxx>
Date: Sat, 31 May 2025 22:59:24 +0900
X-Gmail-Original-Message-ID: <CAK7LNAR_-2rpXDk_ago9_6au8rWZMBvkzZtS4Oq75n+8CF9_iA@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFtev1wM929Q59RImdEEe0W-fcfzTqH403kvyFaFiGjZwB3L7UUerqa1nKs
Message-ID: <CAK7LNAR_-2rpXDk_ago9_6au8rWZMBvkzZtS4Oq75n+8CF9_iA@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] genksyms: Fix enum consts from a reference affecting new values
To: Petr Pavlu <petr.pavlu@xxxxxxxx>
Cc: Nathan Chancellor <nathan@xxxxxxxxxx>, Nicolas Schier <nicolas@xxxxxxxxx>, linux-kbuild@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Tue, May 27, 2025 at 11:23=E2=80=AFPM Petr Pavlu <petr.pavlu@xxxxxxxx> w=
rote:

> @@ -225,6 +221,23 @@ static struct symbol *__add_symbol(const char *name,=
enum symbol_type type,
> return NULL;
> }
>
> + return defn;
> +}
> +
> +static struct symbol *__add_symbol(const char *name, enum symbol_type ty=
pe,
> + struct string_list *defn, int is_extern,
> + int is_reference)
> +{
> + unsigned long h;
> + struct symbol *sym;
> + enum symbol_status status =3D STATUS_UNCHANGED;
> +
> + if ((type =3D=3D SYM_ENUM_CONST || type =3D=3D SYM_ENUM) && !is_r=
eference) {
> + defn =3D process_enum(name, type, defn);


process_enum() is only called when type is SYM_ENUM_CONST
or SYM_ENUM.


process_enum()
{
if (type =3D=3D SYM_ENUM_CONST) {
...
} else if (type =3D=3D SYM_ENUM) {
...
}
}


can be sampled into:



process_enum()
{
if (type =3D=3D SYM_ENUM_CONST) {
...
} else {
...
}
}


The other parts look good to me.




> + if (defn =3D=3D NULL)
> + return NULL;
> + }
> +
> h =3D crc32(name);
> hash_for_each_possible(symbol_hashtable, sym, hnode, h) {
> if (map_to_ns(sym->type) !=3D map_to_ns(type) ||
>
> base-commit: 914873bc7df913db988284876c16257e6ab772c6
> --
> 2.43.0
>


--
Best Regards
Masahiro Yamada


Return-Path: <linux-kernel+bounces-669131-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A51AA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:06:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 6E45C7B0218
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:04:52 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D887523C8CD;
Sat, 31 May 2025 14:05:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=maowtm.org header.i=@maowtm.org header.b="moVj1CYq";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="RTGBixEH"
Received: from flow-b3-smtp.messagingengine.com (flow-b3-smtp.messagingengine.com [202.12.124.138])
(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 B7EFD8F40;
Sat, 31 May 2025 14:05:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.138
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748700355; cv=none; b=nIu/HV+dSCTXV6POskytd/ZdCSgdeIDPcVlK5c97BEPHCaw0NOWM5ljR5JmPngpsYKmpeRwkb6cg8ts3IFlbsL/Vod2lRuMbgUoOxfOXAy/2gbj8pDM4PLSEBXrJ4LDJhzxs4jvRu37EdcmzPSHK8skvLmo0AeqIuRKu4xziZvc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748700355; c=relaxed/simple;
bh=batWj7URm34wWw9sXlRBBBteLVUWZCIEeamnoUIO5tA=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=a1I+b2+vbY+CwK5oHbqb+MhdVOwadtay9By6jrGjoNwKQytrGxIA+oQek8/Djn7F5Du9eed6bql+1gc+OIPJLNmKPjFcVL0XuTUaklI5qc/WVPLUz+2jjib+UoaN6shwvZf7YxuhSHEHVhJAhfi0uRAlmzkwjJeOHi0wzp4cZLI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=maowtm.org; spf=pass smtp.mailfrom=maowtm.org; dkim=pass (2048-bit key) header.d=maowtm.org header.i=@maowtm.org header.b=moVj1CYq; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=RTGBixEH; arc=none smtp.client-ip=202.12.124.138
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=maowtm.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=maowtm.org
Received: from phl-compute-12.internal (phl-compute-12.phl.internal [10.202.2.52])
by mailflow.stl.internal (Postfix) with ESMTP id 321771D402D4;
Sat, 31 May 2025 10:05:52 -0400 (EDT)
Received: from phl-mailfrontend-02 ([10.202.2.163])
by phl-compute-12.internal (MEProxy); Sat, 31 May 2025 10:05:52 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maowtm.org; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm1; t=1748700352;
x=1748707552; bh=A+gTdLvLewZ3oziHVaenP3eeBdz5U2TDYfESpkgT7nQ=; b=
moVj1CYqwNmsbH3Gx2RV6/WscvhkB7/Is5dUl2plqq4kiNTa+Ey+45lJUAUmjkDj
2ToU533fS7eel48t/qS+NirklWOio9AOksNRzuyOd8oGGVT0bTxsIZxGjt8O5u2t
kj/Myt9RMLeLxDqVM2TWi5O3A7ySbFBGaaPBer9lq4ia7p72foiT59qSG+DG312V
I2pEz0pK7Z7HROV0QQDRd0zBP2OTlEegBKVwjWeQlgnKuWkxfdpqD6/sx4vAd5M+
6cKxOKcn0kUgkaOYyfJsVjzjhU5RKkQ/jEhju6fuUM/jhFWFoocM7YWYQufVXspJ
kaOJAG6zNQELiBopp1ogow==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748700352; x=
1748707552; bh=A+gTdLvLewZ3oziHVaenP3eeBdz5U2TDYfESpkgT7nQ=; b=R
TGBixEHEd1P+t1+wxUa5xSz+LLmZixAuDfgmUlDJL/jZcjMaCqUNjCc90VRG+PJr
/EiniRBC645fJ+GR+YdkSvPusr8fUiEP/JCmclIRkn40HUm4DDhdOfjelTYlkkOd
teGaZQgfO9DzGlVpmb2gUEQofgbOrkle3Hi0lPw3LWRmJq5wW4P1Bn+VVpitrGUX
eRmFxaj8nTJNYG3QpShi9P8x6BXgG4fyDhgNbN9F/YvU0jjrlaZP/k4sgy+P0SsT
LeYB5wJHPlnbmx6RcXWIyjh6NpiXbfBqcKTccxwfXUNPcoHQnJ+RjBd2Gbpo8vSM
K8f2ndIttdXbXOtMY5rkQ==
X-ME-Sender: <xms:vgw7aOf2yFvZIQsubZLLT8lBkCFBM_P9W5T25AlVg4SmktGrymw6aw>
<xme:vgw7aIPGTtn1RVZJjBzSjFy9dRXzodTqvLjdyOXu_QHNm1G_Pp5vUXoFIDM4zdJu1
TvxG4USXMPRO9HGp_Q>
X-ME-Received: <xmr:vgw7aPiPCN9YKYMLJCgt0KSQUyUUGfrgQhLwIJu8xUyGBibTdNs8S0iQHKlE4QtPYw4CgMshSpKC4gI3gVGiuOVn>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefvddutdculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefkffggfgfuvfev
fhfhjggtgfesthekredttddvjeenucfhrhhomhepvfhinhhgmhgrohcuhggrnhhguceomh
esmhgrohifthhmrdhorhhgqeenucggtffrrghtthgvrhhnpedukeevhfegvedvveeihedv
vdeghfeglefgudegfeetvdekiefgledtheeggefhgfenucevlhhushhtvghrufhiiigvpe
dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehmsehmrghofihtmhdrohhrghdpnhgspghr
tghpthhtohepvddvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehsohhngheskh
gvrhhnvghlrdhorhhgpdhrtghpthhtohepmhhitgesughighhikhhougdrnhgvthdprhgt
phhtthhopehvihhrohesiigvnhhivhdrlhhinhhugidrohhrghdruhhkpdhrtghpthhtoh
epjhgrtghksehsuhhsvgdrtgiipdhrtghpthhtohepsghpfhesvhhgvghrrdhkvghrnhgv
lhdrohhrghdprhgtphhtthhopehlihhnuhigqdhfshguvghvvghlsehvghgvrhdrkhgvrh
hnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqkhgvrhhnvghlsehvghgvrhdrkhgv
rhhnvghlrdhorhhgpdhrtghpthhtoheplhhinhhugidqshgvtghurhhithihqdhmohguuh
hlvgesvhhgvghrrdhkvghrnhgvlhdrohhrghdprhgtphhtthhopehkvghrnhgvlhdqthgv
rghmsehmvghtrgdrtghomh
X-ME-Proxy: <xmx:vgw7aL-IgbW0ZGo43QjiyaZ4u0q9Kg-UnZu6EuDecNhtRVN5h1C5YQ>
<xmx:vgw7aKuXWpcqGrImvuZ3fcc0wZDB0g2MgKgfEvjgNSav_ZE8x4p-TQ>
<xmx:vgw7aCHSYHJGGpJODPOzaJEAX1bPMTj951ipWPFQi2xf79hSmQN_dQ>
<xmx:vgw7aJOvDHf1eEzAJuEbYDwLvLQyUyMCrMyqsbhOuW2c0j0Kg-JfaA>
<xmx:wAw7aO-8dn3ojXS0NCoV5anjiPuwX4nI_2yYrGvP4CI4w8DZHUX-KeNW>
Feedback-ID: i580e4893:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat,
31 May 2025 10:05:48 -0400 (EDT)
Message-ID: <c2d0bae8-691f-4bb6-9c0e-64ab7cdaebd6@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:05:46 +0100
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH bpf-next 3/4] bpf: Introduce path iterator
To: Song Liu <song@xxxxxxxxxx>, =?UTF-8?Q?Micka=C3=ABl_Sala=C3=BCn?=
<mic@xxxxxxxxxxx>
Cc: Al Viro <viro@xxxxxxxxxxxxxxxxxx>, Jan Kara <jack@xxxxxxx>,
bpf@xxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-security-module@xxxxxxxxxxxxxxx,
kernel-team@xxxxxxxx, andrii@xxxxxxxxxx, eddyz87@xxxxxxxxx, ast@xxxxxxxxxx,
daniel@xxxxxxxxxxxxx, martin.lau@xxxxxxxxx, brauner@xxxxxxxxxx,
kpsingh@xxxxxxxxxx, mattbobrowski@xxxxxxxxxx, amir73il@xxxxxxxxx,
repnop@xxxxxxxxxx, jlayton@xxxxxxxxxx, josef@xxxxxxxxxxxxxx,
gnoack@xxxxxxxxxx
References: <20250529173810.GJ2023217@ZenIV>
<CAPhsuW5pAvH3E1dVa85Kx2QsUSheSLobEMg-b0mOdtyfm7s4ug@xxxxxxxxxxxxxx>
<20250529183536.GL2023217@ZenIV>
<CAPhsuW7LFP0ddFg_oqkDyO9s7DZX89GFQBOnX=4n5mV=VCP5oA@xxxxxxxxxxxxxx>
<20250529201551.GN2023217@ZenIV>
<CAPhsuW5DP1x_wyzT1aYjpj3hxUs4uB8vdK9iEp=+i46QLotiOg@xxxxxxxxxxxxxx>
<20250529214544.GO2023217@ZenIV>
<CAPhsuW5oXZVEaMwNpSF74O7wZ_f2Qr_44pu9L4_=LBwdW5T9=w@xxxxxxxxxxxxxx>
<20250529231018.GP2023217@ZenIV>
<CAPhsuW6-J+NUe=jX51wGVP=nMFjETu+1LUTsWZiBa1ckwq7b+w@xxxxxxxxxxxxxx>
<20250530.euz5beesaSha@xxxxxxxxxxx>
<CAPhsuW5U-nPk4MFdZSeBNds0qEHjQZrC=c5q+AGNpsKiveC2wA@xxxxxxxxxxxxxx>
Content-Language: en-US
From: Tingmao Wang <m@xxxxxxxxxx>
In-Reply-To: <CAPhsuW5U-nPk4MFdZSeBNds0qEHjQZrC=c5q+AGNpsKiveC2wA@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/30/25 19:55, Song Liu wrote:
> On Fri, May 30, 2025 at 5:20�AM Mickaël Salaün <mic@xxxxxxxxxxx> wrote:
> [...]
>>>
>>> If we update path_parent in this patchset with choose_mountpoint(),
>>> and use it in Landlock, we will close this race condition, right?
>>
>> choose_mountpoint() is currently private, but if we add a new filesystem
>> helper, I think the right approach would be to expose follow_dotdot(),
>> updating its arguments with public types. This way the intermediates
>> mount points will not be exposed, RCU optimization will be leveraged,
>> and usage of this new helper will be simplified.
>
> I think it is easier to add a helper similar to follow_dotdot(), but not with
> nameidata. follow_dotdot() touches so many things in nameidata, so it
> is better to keep it as-is. I am having the following:
>
> /**
> * path_parent - Find the parent of path
> * @path: input and output path.
> * @root: root of the path walk, do not go beyond this root. If @root is
> * zero'ed, walk all the way to real root.
> *
> * Given a path, find the parent path. Replace @path with the parent path.
> * If we were already at the real root or a disconnected root, @path is
> * not changed.
> *
> * Returns:
> * true - if @path is updated to its parent.
> * false - if @path is already the root (real root or @root).
> */
> bool path_parent(struct path *path, const struct path *root)
> {
> struct dentry *parent;
>
> if (path_equal(path, root))
> return false;
>
> if (unlikely(path->dentry == path->mnt->mnt_root)) {
> struct path p;
>
> if (!choose_mountpoint(real_mount(path->mnt), root, &p))
> return false;
> path_put(path);
> *path = p;
> return true;
> }
>
> if (unlikely(IS_ROOT(path->dentry)))
> return false;
>
> parent = dget_parent(path->dentry);
> if (unlikely(!path_connected(path->mnt, parent))) {
> dput(parent);
> return false;
> }
> dput(path->dentry);
> path->dentry = parent;
> return true;
> }
> EXPORT_SYMBOL_GPL(path_parent);
>
> And for Landlock, it is simply:
>
> if (path_parent(&walker_path, &root))
> continue;
>
> if (unlikely(IS_ROOT(walker_path.dentry))) {
> /*
> * Stops at disconnected or real root directories.
> * Only allows access to internal filesystems
> * (e.g. nsfs, which is reachable through
> * /proc/<pid>/ns/<namespace>).
> */
> if (walker_path.mnt->mnt_flags & MNT_INTERNAL) {
> allowed_parent1 = true;
> allowed_parent2 = true;
> }
> break;


Hi, maybe I'm missing the complete picture of this code, but since
path_parent doesn't change walker_path if it returns false (e.g. if it's
disconnected, or choose_mountpoint fails), I think this `break;` should be
outside the

if (unlikely(IS_ROOT(walker_path.dentry)))

right? (Assuming this whole thing is under a `while (true)`) Otherwise we
might get stuck at the current path and get infinite loop?

> }
>
> Does this look right?
>
> Thanks,
> Song



Return-Path: <linux-kernel+bounces-669132-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1935F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:09:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3329F17E7C4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:09:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 51B2A23C510;
Sat, 31 May 2025 14:09:22 +0000 (UTC)
Received: from bmailout3.hostsharing.net (bmailout3.hostsharing.net [176.9.242.62])
(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 62FA92AEF5;
Sat, 31 May 2025 14:09:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=176.9.242.62
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748700561; cv=none; b=TBRV89GIBgmuLTl6rhTeYT3lZxJhYdiQXRk4GogCE4Hai140j+ezs3Aep+DcF2fT8LzebRFXMefETXqmPQMDOpF2wVSZ7+N8jdq8J8CiPyk86fkC21/f2ovOTdPZ/1nUeWaWBqlpYlaQczZG2Xg1RJ4o06+LO+ZlMVitR69y+D0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748700561; c=relaxed/simple;
bh=FKxShnEbZSjUaa6Uz60/biiqzLbGuCdxYMgF+Qa81tA=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=d62RTA2Rlxp9MYCgrcNi2cLYYgqncJTkabrQaPEEBOCDTGn6cLrLsLdg6NLvzKOaDZsecS1Atb0XIkW4EpFq5YUrt3hHRXFwLB8nHHCvZFwK9Gxa3RZamT+grJr1nf1oH3G0uxLWND5QXcBMF7FZt0vnd8L7uywydItSmbSA1pc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wunner.de; spf=none smtp.mailfrom=h08.hostsharing.net; arc=none smtp.client-ip=176.9.242.62
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wunner.de
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=h08.hostsharing.net
Received: from h08.hostsharing.net (h08.hostsharing.net [83.223.95.28])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
client-signature RSA-PSS (4096 bits) client-digest SHA256)
(Client CN "*.hostsharing.net", Issuer "RapidSSL TLS RSA CA G1" (verified OK))
by bmailout3.hostsharing.net (Postfix) with ESMTPS id 7A1392C000A5;
Sat, 31 May 2025 16:09:09 +0200 (CEST)
Received: by h08.hostsharing.net (Postfix, from userid 100393)
id 5DF9A2473D9; Sat, 31 May 2025 16:09:09 +0200 (CEST)
Date: Sat, 31 May 2025 16:09:09 +0200
From: Lukas Wunner <lukas@xxxxxxxxx>
To: Graham Whyte <grwhyte@xxxxxxxxxxxxxxxxxxx>
Cc: linux-pci@xxxxxxxxxxxxxxx, shyamsaini@xxxxxxxxxxxxxxxxxxx,
code@xxxxxxxxxxx, Okaya@xxxxxxxxxx, bhelgaas@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v2] PCI: Reduce delay after FLR of Microsoft MANA devices
Message-ID: <aDsNhVIv5xt3S7KQ@xxxxxxxxx>
References: <20250528181047.1748794-1-grwhyte@xxxxxxxxxxxxxxxxxxx>
<aDg4PE4Zbzwps71E@xxxxxxxxx>
<b23fb8f4-0da7-4403-8a2d-665d5675be9c@xxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <b23fb8f4-0da7-4403-8a2d-665d5675be9c@xxxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 09:26:16AM -0700, Graham Whyte wrote:
> On 5/29/2025 3:34 AM, Lukas Wunner wrote:
> > On Wed, May 28, 2025 at 06:10:47PM +0000, grwhyte@xxxxxxxxxxxxxxxxxxx wrote:
> > > Add a device-specific reset for Microsoft MANA devices with the FLR
> > > delay reduced from 100ms to 10ms. While this is not compliant with the
> > > pci spec, these devices safely complete the FLR much quicker than 100ms
> > > and this can be reduced to optimize certain scenarios
> >
> > How often do you reset these devices that 90 msec makes a difference?
> > What are these "certain scenarios"?
>
> VF removal and rescan is the main scenario for runtime repairs and driver
> updates.
> Doing this on scale with 100ms adds up to significant time across multiple
> VFs.

Please mention this in the commit message to avoid head-scratching
by someone reading it down the road.

Thanks,

Lukas


Return-Path: <linux-kernel+bounces-669133-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 819DB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:09:54 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id EE51C17ED96
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:09:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1355523CEE5;
Sat, 31 May 2025 14:09:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="NnjXSF9F"
Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E716C23A9B8;
Sat, 31 May 2025 14:09:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748700584; cv=none; b=gqkcxFDqUdFy6iNIrO9R7h9QkevSE5w+5Hi3tW9UPDiBYOdAjpMu0q98zdsvPsh0IopTPHCArsENq8senkwZ7Wl+p4zjs7dI8VQSgbBRg48TUlWtFeihGPLoD89kS4wYYHG+xLo/bLI868tsYOdXA7NldI9/sCp+RS7q3+FsZY0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748700584; c=relaxed/simple;
bh=rfYdJxC6jgp4ss8D+DPbehl2pgusuRgqNoAAJ5YwPDE=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=O5OcO9GQ0rE2/bY0OJgcZSjVT75JzRDWg8xz9ksxljgV65P+TCRj0nbpWVch+1OPm9i0LxOpfpKJiVtmzXFjp94AKKclDcs2bIbm5HYwcxbKmk9GwCaSxJ0Nm8JjNBVN0etJrYuJ+ycR29bi+fjdJdtvK+WR/Rr2vB2zw68qqkU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=NnjXSF9F; arc=none smtp.client-ip=209.85.210.174
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-742c1145a38so513537b3a.3;
Sat, 31 May 2025 07:09:42 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748700582; x=1749305382; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=jUoEx8H/KVzfoUg1ZEZiII0xV0maDmmY5gK2aXzz3UA=;
b=NnjXSF9FJcDK/ujhubkulyDzLdYvjvK6DkUX+fOs7aEeKRw2G7j0ygGTjulUq2yZYa
CKBLIwx4HTpHLCjlMblEPtdyGUGkJ8CHLGoVlVXfbRt6w124ySlp6De3FIMGI6ixn146
ED6gdPWk8g3yg6/fjqm7IIwMUa7jOLyGfAaY9HRoIwPsS/8xxj00i38hd2n6rWWfcPmP
Sv9ugpNBPY+2E/E42VfAKPTDlQSJ/P1S1rzLhobGttQVq87o6aXxbY3QJFZB04Vwne5w
9K8vk/qK2uv5RrOtQdr9wZcBJukNruvFtBcEpnW+wy7/WrwMd9sQ65OhgoZpjs1EAak+
O4ww==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748700582; x=1749305382;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=jUoEx8H/KVzfoUg1ZEZiII0xV0maDmmY5gK2aXzz3UA=;
b=BJ3k07ezLny1FDqfCVhyA5LSdAKCh38MPW7mCcJ3K3nDTc6Nn+osaT/AKlyrHsYji1
R94c1Sj1Hqpx3HypSyVD1dWOM7WezBqyu6ZWcbb/AJLzB0uwlMexns2/EOXePXNblLJE
530hFRpqSAKWM2YlS1xHWMpahsdaXZwcOPYWoGpereFVAnUQ0mNBSGCqRepy87Z0ONJX
JWcCvPQZSLazvykuZqTvyZi16z1lYpuNFnQwVIzdmVytLFWNJtd35gbP/myx2NbRCREJ
FMq0lVmzwKL2SrAs9hmUskpp4Ct58XfEaxKqlqiWIUXjO6DA6OMwtdjXq+/yZiuyJj2l
YWsA==
X-Forwarded-Encrypted: i=1; AJvYcCV2vOMehwNuHZ31FO5qM/M1m9xnaJZuUs7G6Ze7JkDDdgCE8vuFGnUkQJiRvz68SPQhs2hBsBzV85Adnmk=@vger.kernel.org, AJvYcCX56d7LIvMiN49tJdw3WyWhloVC57OWxv9F486DZiFwsQLNuaPH8X+di+5cXWnJXAVRH71DZvDmVlxre1lKySk=@vger.kernel.org
X-Gm-Message-State: AOJu0Yya9vqwUpCZ20SwHlb29iqnrkbMgvmcnyJOxVw6ZyYKSsFKKves
t/QbEH8fxRAngzg+mje8A1Pn3sWtbimvunh+S5fo40r6QUkWiWk/xPM1iylfqdmm1GELYxUEeJN
lzoX19PodaIlDYcglh/nnBvFbHNl2OJw=
X-Gm-Gg: ASbGnctZnE03eZYoUyrX3pOfS7+rPDhaCG1Iv6xskk1G3BnqvMCzXkn4EhO7/P91E+K
fAC4dqWM4yMzF/7SCqwGlC7PmahftuHC5LqUOzpfXNiwBE87T3thPOhv1R5tnyLrsfZlRU0B51q
1xY8LieVV69x41hPBj1zZKzi5eCwn1zcM/
X-Google-Smtp-Source: AGHT+IEspOjKjrSMaDPUZm3os+Lu9UscySkhErkqZ+b2ldXhGBsFlg8mPJC77+6o2Bz6O5zQXWG7deG8XDVluRWv3GM=
X-Received: by 2002:a17:90b:3c85:b0:311:c939:c855 with SMTP id
98e67ed59e1d1-3124db050femr3602044a91.3.1748700582022; Sat, 31 May 2025
07:09:42 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250521-nova-frts-v4-0-05dfd4f39479@xxxxxxxxxx>
<20250521-nova-frts-v4-11-05dfd4f39479@xxxxxxxxxx> <adbf5fa1104978df76ae40705e5df13dfbe59bb8.camel@xxxxxxxxxx>
In-Reply-To: <adbf5fa1104978df76ae40705e5df13dfbe59bb8.camel@xxxxxxxxxx>
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Date: Sat, 31 May 2025 16:09:29 +0200
X-Gm-Features: AX0GCFswDAyLG96-rV_NBPeq61h0apxRhahuyfPFqf41zfiQeci120cEPxAvoNk
Message-ID: <CANiq72n42hbKPmED4PnzCADsy8iM-i0R2dizypTd_Vui5GctJg@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 11/20] gpu: nova-core: wait for GFW_BOOT completion
To: Lyude Paul <lyude@xxxxxxxxxx>
Cc: Alexandre Courbot <acourbot@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>, =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, David Airlie <airlied@xxxxxxxxx>, Simona Vetter <simona@xxxxxxxx>,
Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>, Maxime Ripard <mripard@xxxxxxxxxx>,
Thomas Zimmermann <tzimmermann@xxxxxxx>, John Hubbard <jhubbard@xxxxxxxxxx>,
Ben Skeggs <bskeggs@xxxxxxxxxx>, Joel Fernandes <joelagnelf@xxxxxxxxxx>,
Timur Tabi <ttabi@xxxxxxxxxx>, Alistair Popple <apopple@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
rust-for-linux@xxxxxxxxxxxxxxx, nouveau@xxxxxxxxxxxxxxxxxxxxx,
dri-devel@xxxxxxxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, May 30, 2025 at 11:51=E2=80=AFPM Lyude Paul <lyude@xxxxxxxxxx> wrot=
e:
>
> JFYI: You can actually just say Result here, since () is the default type=
for
> the kernel's Result type

+1

> TBH - we should really add some safe bindings for sleeps instead of calli=
ng
> this unsafely, I'd be happy to review them if you do

In case it helps, there is:

https://lore.kernel.org/rust-for-linux/20250423192857.199712-6-fujita.t=
omonori@xxxxxxxxx/

I think that is the last one -- we have been going back and forth a
bit on it (e.g. we had `coarse_sleep()` in the old `rust` pre-merge
branch), but, yeah, let's try to get the abstraction(s) in.

Cheers,
Miguel


Return-Path: <linux-kernel+bounces-669134-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0F02B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:14:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id D1B5B7A2C56
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:12:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9F38C23C8C9;
Sat, 31 May 2025 14:14:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iv4VoH58"
Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C7F32BCF5;
Sat, 31 May 2025 14:13:58 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748700839; cv=none; b=esC/yHP//Y0H+nqQybGJ3xTtKyfyXerSNaE9h2L5G8i/QpPtCcf+taFAUPj1HN+KTiBii5/tWbDcRPsJz0vww6rgfpaNElrcH9vA/GAuvh/ZUc3Qbe71j7OQgToOoBMkH8H57g8301xiZLf1segms2eskT6gH0UfJ8FP4h6/1lY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748700839; c=relaxed/simple;
bh=jClOl4d/ELwIaidMD0YDUkJojPmuj94eLxAmlAxnuR4=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=XQglfFcqEK2KNkPzUAp3N2r+6AJ+qGMhF2O8FFMiYiVGDGZLLZrVlWmdUgFhpeD3tG9BSlQSQ1YiuBdAFVFCRhbs5Ni0Dsx8M7P29Sa94Aw6DSxaHpEhBTDT52QSGBn6QSkFpcZuEKV4uLrc8o85tXB1ISwqdpITDMNMusprFTo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iv4VoH58; arc=none smtp.client-ip=209.85.216.51
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-312150900afso3019742a91.1;
Sat, 31 May 2025 07:13:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748700838; x=1749305638; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=ZByPvqrueKC3c9aa9kKxrMQLY2qgkp2Pbw7suNhDht0=;
b=iv4VoH585LXr0A/tTf2l+zqIEihaxxYTxlwx36H56sHoDEMjMKq1BzYQb6/7zXv7KU
rGKlCmmuC61iyrtD5zWGGMVPw6SWpl1QziKhmsr2d9IjY2nTjzrXHCxV0ia2EClgYU7u
3J4abned+Sav0Diqj9mT1Zj0aMzD2Ba0UXE4eTC+YdkhzE7MYMkzeQEAOurFczuw3Y47
XwLBdfw5QaxEIJCGP/jVC3dwVFtWXazcbr7EfyN3+O5nWJmyRmHvwA+WJheOZ+lsrUPA
SktX839+5Km57hJLkGL/8kE50ToPmUPSkDz/Nb4/nWv1pIKa9FkIE5fgJ23c2RQCBdLb
9j3A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748700838; x=1749305638;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=ZByPvqrueKC3c9aa9kKxrMQLY2qgkp2Pbw7suNhDht0=;
b=usDhMj87UwjGgewu48FKcFKVF0tT1SHPO6PkiRmxh193ETVpaJpoVAZrknEskXiGFM
fVU9GtCBLUm+ht2IawzjdafNNT3J8MhYVZJAih4m6dNjXC/QYfIAsfPkXjnC0cao2G2v
xOBGInJPqvd94Gg6tfwnO+8fR+7/2IzeMQyWyWJB2HEnFmEHS6P4D1CdRkBjKmj3ICIo
WJastaSMCMGIDO4hsmDpWKkP84PL+yP26EjsMbs5R/JUtoj8eafRkuMaPRtdkju5KirB
sK6k32n2gHQC96p9pOF8Qo4eMN+I4EZ7EqYvgHtSZJNs/iL762ZGH40ho4lxlR7MvpJd
/6Jg==
X-Forwarded-Encrypted: i=1; AJvYcCUTRGxVDxLK/+jLWFyF2FuNPy0Tkf7k6MDvG8xZXRI6ykGRGdc5l/C6n7gIXTmUbjIIdDGwBS15A/GchoI=@vger.kernel.org, AJvYcCWaZtsKJmpsr0f3nT4YaeYYqPT8BmBlLGsOu0CA0b5aHZajUTrgURNHNirxaKl/JrCFw301B5hd9oRO1g==@vger.kernel.org
X-Gm-Message-State: AOJu0Yw2/IBxeuq6yEVgOgfvEu7WXt0nsN6KadT0GmLQRtw6sGSOcwV3
xYmrihjyz7QuUKEYasJWXj02Pm7X+Bk0YmY2p3zgURg9SahTU/5p5SF8TOzH1oy/
X-Gm-Gg: ASbGncuNevE7nygua+lPNzAgCt1YFRYjGN3dtnaB17uoWZHXASi4zCXRcpXI+czMHD/
jwMBFhZrwebTgza0FzPdVgOxJZPBbiOA8lkOzFGpR5W7UmaTQIHZq9jbZgaAqNMguTYBOgCab27
WMozVKVI5s3n5m2ufkMEU2xyrft/hGDWG37DM5rzu3jNjwkhxqmcTKX4CvJXijsZzEWhZ1GOgn3
Grg4Xk6rmZtxhmxXJE1Xg4ZcrQHksKrCUQMTCVDxx635jNqys9HKCobeKjOiHqTpjoGW4uG3C2z
esNSlD0Uz+6o7198/6t6ZCMEuZj6Q820vdkb/LUPh+ZhcDV8JA6ky3jvAYCNnB5GiQ84pvTv/LS
piw==
X-Google-Smtp-Source: AGHT+IFYU4KVCP8B3byl3tmb0tTbxJppAnwli3RGwvqFUoEzTzVn13HOAyXwmQfc7P7gQn9gi+RgOw==
X-Received: by 2002:a17:90a:ec8d:b0:312:1e41:3a58 with SMTP id 98e67ed59e1d1-3127c871ca7mr2752786a91.34.1748700837652;
Sat, 31 May 2025 07:13:57 -0700 (PDT)
Received: from yn386-ZK.. (p1273134-ipoe.ipoe.ocn.ne.jp. [122.26.118.133])
by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3124e29f883sm2774643a91.1.2025.05.31.07.13.55
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 07:13:57 -0700 (PDT)
From: Yuuki NAGAO <wf.yn386@xxxxxxxxx>
To: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxx>,
Jarkko Nikula <jarkko.nikula@xxxxxxxxxx>,
Liam Girdwood <lgirdwood@xxxxxxxxx>,
Mark Brown <broonie@xxxxxxxxxx>,
Jaroslav Kysela <perex@xxxxxxxx>,
Takashi Iwai <tiwai@xxxxxxxx>
Cc: linux-sound@xxxxxxxxxxxxxxx,
linux-omap@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Yuuki NAGAO <wf.yn386@xxxxxxxxx>
Subject: [PATCH] ASoC: ti: omap-hdmi: Re-add dai_link->platform to fix card init
Date: Sat, 31 May 2025 23:13:41 +0900
Message-ID: <20250531141341.81164-1-wf.yn386@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The removed dai_link->platform component cause a fail which
is exposed at runtime. (ex: when a sound tool is used)
This patch re-adds the dai_link->platform component to have
a full card registered.

Before this patch:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 1: HDMI [HDMI], device 0: HDMI snd-soc-dummy-dai-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

$ speaker-test -D plughw:1,0 -t sine
speaker-test 1.2.8
Playback device is plughw:1,0
Stream parameters are 48000Hz, S16_LE, 1 channels
Sine wave rate is 440.0000Hz
Playback open error: -22,Invalid argument

After this patch which restores the platform component:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: HDMI [HDMI], device 0: HDMI snd-soc-dummy-dai-0 [HDMI snd-soc-dummy-dai-0]
Subdevices: 0/1
Subdevice #0: subdevice #0

-> Resolve the playback error.

Fixes: 3b0db249cf8f ("ASoC: ti: remove unnecessary dai_link->platform")

Signed-off-by: Yuuki NAGAO <wf.yn386@xxxxxxxxx>
---
sound/soc/ti/omap-hdmi.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/sound/soc/ti/omap-hdmi.c b/sound/soc/ti/omap-hdmi.c
index cf43ac19c4a6..55e7cb96858f 100644
--- a/sound/soc/ti/omap-hdmi.c
+++ b/sound/soc/ti/omap-hdmi.c
@@ -361,17 +361,20 @@ static int omap_hdmi_audio_probe(struct platform_device *pdev)
if (!card->dai_link)
return -ENOMEM;

- compnent = devm_kzalloc(dev, sizeof(*compnent), GFP_KERNEL);
+ compnent = devm_kzalloc(dev, 2 * sizeof(*compnent), GFP_KERNEL);
if (!compnent)
return -ENOMEM;
- card->dai_link->cpus = compnent;
+ card->dai_link->cpus = &compnent[0];
card->dai_link->num_cpus = 1;
card->dai_link->codecs = &snd_soc_dummy_dlc;
card->dai_link->num_codecs = 1;
+ card->dai_link->platforms = &compnent[1];
+ card->dai_link->num_platforms = 1;

card->dai_link->name = card->name;
card->dai_link->stream_name = card->name;
card->dai_link->cpus->dai_name = dev_name(ad->dssdev);
+ card->dai_link->platforms->name = dev_name(ad->dssdev);
card->num_links = 1;
card->dev = dev;

--
2.43.0



Return-Path: <linux-kernel+bounces-669135-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B4BB041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:15:54 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 485B53BF829
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:15:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id ECE7E23D28C;
Sat, 31 May 2025 14:15:46 +0000 (UTC)
Received: from bmailout3.hostsharing.net (bmailout3.hostsharing.net [176.9.242.62])
(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 B365F1758B;
Sat, 31 May 2025 14:15:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=176.9.242.62
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748700946; cv=none; b=VBGNmfKoNlPGfqog5BLGdbSK3+5eToRFObNjy9UMFrvgScezi/KAAEOmLsf1rRVnhcK2nuzQfXkD0DmTLxbqtUuocLEi1HN9kA7MxFI98nbRirnmMW2hX29Y/86DMFWD1FonSG69fZ+XGSJo0ZDNteJ196wfLaIqcU1olrGj3Ac=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748700946; c=relaxed/simple;
bh=+AbBPIg8jujjvnsIiFys7cvXSxsuoXKAm1dwhoDtFuM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=N8/lA3T8wvZdMnEOqFPhHfKabgoFs0yo3cNI12n5i3PZOnNdvRO8GHwKX43oSW1SJTonWwpBN4U3y1e6n9AN+MW3duBH2rYWuoIJg14Bzx485FezyIblSfyq4hTwb1dDJyVrd1vodf/achVLxVp21lQr37ZT/L+mF1bu8ttRVBU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wunner.de; spf=none smtp.mailfrom=h08.hostsharing.net; arc=none smtp.client-ip=176.9.242.62
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=wunner.de
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=h08.hostsharing.net
Received: from h08.hostsharing.net (h08.hostsharing.net [83.223.95.28])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256
client-signature RSA-PSS (4096 bits) client-digest SHA256)
(Client CN "*.hostsharing.net", Issuer "RapidSSL TLS RSA CA G1" (verified OK))
by bmailout3.hostsharing.net (Postfix) with ESMTPS id 4B5182C000A5;
Sat, 31 May 2025 16:15:41 +0200 (CEST)
Received: by h08.hostsharing.net (Postfix, from userid 100393)
id 2251CC9C53; Sat, 31 May 2025 16:15:41 +0200 (CEST)
Date: Sat, 31 May 2025 16:15:41 +0200
From: Lukas Wunner <lukas@xxxxxxxxx>
To: Shuai Xue <xueshuai@xxxxxxxxxxxxxxxxx>
Cc: Ilpo =?iso-8859-1?Q?J=E4rvinen?= <ilpo.jarvinen@xxxxxxxxxxxxxxx>,
Bjorn Helgaas <bhelgaas@xxxxxxxxxx>, rostedt@xxxxxxxxxxx,
linux-pci@xxxxxxxxxxxxxxx, LKML <linux-kernel@xxxxxxxxxxxxxxx>,
linux-edac@xxxxxxxxxxxxxxx, linux-trace-kernel@xxxxxxxxxxxxxxx,
helgaas@xxxxxxxxxx, tony.luck@xxxxxxxxx, bp@xxxxxxxxx,
mhiramat@xxxxxxxxxx, mathieu.desnoyers@xxxxxxxxxxxx,
oleg@xxxxxxxxxx, naveen@xxxxxxxxxx, davem@xxxxxxxxxxxxx,
anil.s.keshavamurthy@xxxxxxxxx, mark.rutland@xxxxxxx,
peterz@xxxxxxxxxxxxx, tianruidong@xxxxxxxxxxxxxxxxx
Subject: Re: [PATCH v8] PCI: hotplug: Add a generic RAS tracepoint for
hotplug event
Message-ID: <aDsPDTVkH5kkc_Fk@xxxxxxxxx>
References: <20250512013839.45960-1-xueshuai@xxxxxxxxxxxxxxxxx>
<87b1f8c6-bd72-b1a8-40a6-bbf552552806@xxxxxxxxxxxxxxx>
<650cd4e4-561b-4d50-9cf2-c601518c9b9f@xxxxxxxxxxxxxxxxx>
<31693574-e8bc-9a56-bad0-6a22280c4b6b@xxxxxxxxxxxxxxx>
<aCxdFm_BpgOTFFUv@xxxxxxxxx>
<aCxxA-4HEnZ-O2W0@xxxxxxxxx>
<9b46a12b-90e2-c1ba-9394-5caa23a5cad7@xxxxxxxxxxxxxxx>
<aCx_aXy9MEs6XKZE@xxxxxxxxx>
<6af283ea-bd36-44a7-949a-2ab8c80cf136@xxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <6af283ea-bd36-44a7-949a-2ab8c80cf136@xxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Thu, May 22, 2025 at 05:50:05PM +0800, Shuai Xue wrote:
> As @Lukas points out, link speed changes and device plug/unplug events are
> orthogonal issues.
>
> Based on this thread discussion, I believe we need additional tweaking to
> introduce a new tracepoint (perhaps named PCI_LINK_EVENT) to handle
> link speed changes separately.
>
> Regarding our next steps, would it be acceptable to merge the
> PCI_HOTPLUG_EVENT to mainline first, and then work on implementing
> the new link event tracepoint afterward?

Yes I think so, I think this patch is ready to go in.

However I'm not part of the PCI maintainer team,
it would have to be applied by them (barring any objections).

We're now in the merge window and it may be too late to squeeze it
into the v6.16 pull request, but maybe it can be applied after
the merge window has closed (in 1 week).

Thanks,

Lukas


Return-Path: <linux-kernel+bounces-669136-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4A54441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:25:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id B8DA53BD058
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:25:28 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CE05F23D28C;
Sat, 31 May 2025 14:25:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="a1Fcj70a"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9])
(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 0D7AC4C74
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:25:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748701543; cv=none; b=nMzxfRRKVU7VfrGeISJcVQ2aCsGE4MMhqt8kpr+Z9NORTX7YQU/6WeI1klZOXzpScns04HGiYjQg7LHrioNs3xYM2B8JtDspa1kpFUQac/Nl92vMeVLEkDeyACXKZeP24/g/JzQTdGgDXsY7Ms/bKW3in2M2FCZeKJ0bznbKLsI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748701543; c=relaxed/simple;
bh=xuDCvCvdHEHm3JsKagYF8rxk9+nEuh+sV/bde5HWyJs=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=EfiR+xuGqIp38N+7bBKr1RZn0YElR3IBP9rSxgOTnV+NNZRbJBa0UkJyfRrrQeB7Ppt8Yki7eg5Qa1aJPMM+iVPwfVX2VMwDGy44/+fRsWtDzfqrQa8p00q5LJnqpr7698zZnhKolNY7jGk0pEJea0/MmFg8vFhUbsIws9i00nU=
ARC-Authentication-Results:i=1; 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=a1Fcj70a; arc=none smtp.client-ip=192.198.163.9
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748701541; x=1780237541;
h=date:from:to:cc:subject:message-id:mime-version;
bh=xuDCvCvdHEHm3JsKagYF8rxk9+nEuh+sV/bde5HWyJs=;
b=a1Fcj70aj25gsA42UEPI04IY1xMwdjxnKYk7+4QW1JEgOR9KWtQXKtov
2QIEoMRs1BJMJCfVEp+eJ0MIqYfsROq0mR6x0xdA5ZNPf568CpjAjno4b
aKzC+ItxvNisjMuYIoM0sRCldUtW+CVqrI9b+lp8sijGibZVQs3Ef6lZM
2+ySMjmvlYpmBwev8tFnhGo0z9GPFwbxxwMBU8z4ShC2Zq5aWiCTRY5ze
TsUpb8aJaQAbIWZG+5ukm37AiI2hwbIiJvkDBFBQDaE711t7d9YAVa+0/
phrjkPK4b9FWyt6ZDYQYkevkEKw7HOJYkTsOZrCQlVf2c06d9uoUfC57K
A==;
X-CSE-ConnectionGUID: ClLb40EAQMS0KJjhicAPLw==
X-CSE-MsgGUID: 037/w4esQeOxs3fA/UiKww==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="61444928"
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="61444928"
Received: from fmviesa002.fm.intel.com ([10.60.135.142])
by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 07:25:40 -0700
X-CSE-ConnectionGUID: Xm9pf0XRSJyonE3c40gLbg==
X-CSE-MsgGUID: hzGyegY7QHqecWTpXY6J3w==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,198,1744095600";
d="scan'208";a="167324262"
Received: from igk-lkp-server01.igk.intel.com (HELO b69e6467d450) ([10.211.3.150])
by fmviesa002.fm.intel.com with ESMTP; 31 May 2025 07:25:39 -0700
Received: from kbuild by b69e6467d450 with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLN9U-00011S-2t;
Sat, 31 May 2025 14:25:36 +0000
Date: Sat, 31 May 2025 22:24:46 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Pohsun Su <pohsuns@xxxxxxxxxx>
Cc: oe-kbuild-all@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Daniel Lezcano <daniel.lezcano@xxxxxxxxxx>,
Robert Lin <robelin@xxxxxxxxxx>
Subject: drivers/clocksource/timer-tegra186.c:282: undefined reference to
`__udivdi3'
Message-ID: <202505312203.NmHWLzpj-lkp@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f70f5b08a47a3bc1a252e5f451a137cde7c98ce
commit: 28c842c8b0f5d1c2da823b11326e63cdfdbc3def clocksource/drivers/timer-tegra186: Add WDIOC_GETTIMELEFT support
date: 2 weeks ago
config: i386-buildonly-randconfig-2002-20250531 (https://download.01.org/0day-ci/archive/20250531/202505312203.NmHWLzpj-lkp@xxxxxxxxx/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250531/202505312203.NmHWLzpj-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202505312203.NmHWLzpj-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

ld: drivers/clocksource/timer-tegra186.o: in function `tegra186_wdt_get_timeleft':
>> drivers/clocksource/timer-tegra186.c:282: undefined reference to `__udivdi3'


vim +282 drivers/clocksource/timer-tegra186.c

241
242 static unsigned int tegra186_wdt_get_timeleft(struct watchdog_device *wdd)
243 {
244 struct tegra186_wdt *wdt = to_tegra186_wdt(wdd);
245 u32 expiration, val;
246 u64 timeleft;
247
248 if (!watchdog_active(&wdt->base)) {
249 /* return zero if the watchdog timer is not activated. */
250 return 0;
251 }
252
253 /*
254 * Reset occurs on the fifth expiration of the
255 * watchdog timer and so when the watchdog timer is configured,
256 * the actual value programmed into the counter is 1/5 of the
257 * timeout value. Once the counter reaches 0, expiration count
258 * will be increased by 1 and the down counter restarts.
259 * Hence to get the time left before system reset we must
260 * combine 2 parts:
261 * 1. value of the current down counter
262 * 2. (number of counter expirations remaining) * (timeout/5)
263 */
264
265 /* Get the current number of counter expirations. Should be a
266 * value between 0 and 4
267 */
268 val = readl_relaxed(wdt->regs + WDTSR);
269 expiration = FIELD_GET(WDTSR_CURRENT_EXPIRATION_COUNT, val);
270 if (WARN_ON_ONCE(expiration > 4))
271 return 0;
272
273 /* Get the current counter value in microsecond. */
274 val = readl_relaxed(wdt->tmr->regs + TMRSR);
275 timeleft = FIELD_GET(TMRSR_PCV, val);
276
277 /*
278 * Calculate the time remaining by adding the time for the
279 * counter value to the time of the counter expirations that
280 * remain.
281 */
> 282 timeleft += (((u64)wdt->base.timeout * USEC_PER_SEC) / 5) * (4 - expiration);
283
284 /*
285 * Convert the current counter value to seconds,
286 * rounding up to the nearest second. Cast u64 to
287 * u32 under the assumption that no overflow happens
288 * when coverting to seconds.
289 */
290 timeleft = DIV_ROUND_CLOSEST_ULL(timeleft, USEC_PER_SEC);
291
292 if (WARN_ON_ONCE(timeleft > U32_MAX))
293 return U32_MAX;
294
295 return lower_32_bits(timeleft);
296 }
297

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669137-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 619E241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:37:33 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 25F1A189D6EB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:37:44 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0B8C323C8B3;
Sat, 31 May 2025 14:37:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DSeMVG/F"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 3F1B329D19;
Sat, 31 May 2025 14:37:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748702241; cv=none; b=jMRPHzf8G+aQZePVNdBciG34kiKbwPKY7dwcdlOOj9xKT6jeqyf+yRdnxsEPUkSfkWaz7EHqsyOLQR6A5CNGf6XWMTuUqtAIBsHepXrluwjxy91PGHI07a021K7FK8oIqzKT6iXiPvffuAWYgOm+qSU8hywG9fBBnZoPHYyx0yE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748702241; c=relaxed/simple;
bh=fivt1Mk4Yw5WXYfrIwOJfSKG3z+m2LyIrjnukMMgFOg=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=JUVJhtt6ymHLHPbEZjeTKHlDTYeTV7GgLvOFrcGPNNkn4eSK90gJRceyJeKWvoZIXzwJtl+hl6VjBoxadJsmdhlbBPSEk0IRnBTVQd+ZI0VahBj/Agwlg9SzfoF6ax43qZB62PEYerxlpRWenaTIXSqDsuhr+hofD8NkhLXWi7E=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DSeMVG/F; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AF4CFC4CEE3;
Sat, 31 May 2025 14:37:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748702240;
bh=fivt1Mk4Yw5WXYfrIwOJfSKG3z+m2LyIrjnukMMgFOg=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=DSeMVG/Fbe4qRBejiZw0EyatWeyiWsE20b6NZA1wBfJWpepek0YCiHbxmDi/Mb0gA
YvT1GDR0JgkrXPMEXnskuvgMpIxBIia/wv9AEZFvb8mJ9bKRGsuKfUfbHjQDaVTLqO
tteVaN0kse0EAUXGjtVD3idwokMzsGoi9l23MVq/J8ZnRSxOgCM8pzbX9ZiroqYtAx
tu+YSV3yG0bys0FsnbU5PPjpg1kkC4VGSF+612EPLKmNtGdAc49h5+AkeFtJUarRSk
Vtm4GfcJfJkvP9fKwRXo1G2dwMCcQAmwalOWUIRRBZlHfqXr0aDbl+gmHjbCeJT7qF
bimcc3X3iNdww==
Date: Sat, 31 May 2025 16:37:12 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Cc: Lyude Paul <lyude@xxxxxxxxxx>, Alexandre Courbot <acourbot@xxxxxxxxxx>,
Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
David Airlie <airlied@xxxxxxxxx>, Simona Vetter <simona@xxxxxxxx>,
Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>,
Maxime Ripard <mripard@xxxxxxxxxx>,
Thomas Zimmermann <tzimmermann@xxxxxxx>,
John Hubbard <jhubbard@xxxxxxxxxx>, Ben Skeggs <bskeggs@xxxxxxxxxx>,
Joel Fernandes <joelagnelf@xxxxxxxxxx>,
Timur Tabi <ttabi@xxxxxxxxxx>, Alistair Popple <apopple@xxxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
nouveau@xxxxxxxxxxxxxxxxxxxxx, dri-devel@xxxxxxxxxxxxxxxxxxxxx
Subject: Re: [PATCH v4 11/20] gpu: nova-core: wait for GFW_BOOT completion
Message-ID: <aDsUGGrjbJ_8KyrP@pollux>
References: <20250521-nova-frts-v4-0-05dfd4f39479@xxxxxxxxxx>
<20250521-nova-frts-v4-11-05dfd4f39479@xxxxxxxxxx>
<adbf5fa1104978df76ae40705e5df13dfbe59bb8.camel@xxxxxxxxxx>
<CANiq72n42hbKPmED4PnzCADsy8iM-i0R2dizypTd_Vui5GctJg@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CANiq72n42hbKPmED4PnzCADsy8iM-i0R2dizypTd_Vui5GctJg@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 04:09:29PM +0200, Miguel Ojeda wrote:
> On Fri, May 30, 2025 at 11:51â?¯PM Lyude Paul <lyude@xxxxxxxxxx> wrote:
> > TBH - we should really add some safe bindings for sleeps instead of calling
> > this unsafely, I'd be happy to review them if you do
>
> In case it helps, there is:
>
> https://lore.kernel.org/rust-for-linux/20250423192857.199712-6-fujita.tomonori@xxxxxxxxx/
>
> I think that is the last one -- we have been going back and forth a
> bit on it (e.g. we had `coarse_sleep()` in the old `rust` pre-merge
> branch), but, yeah, let's try to get the abstraction(s) in.

We've already discussed this on previous versions of this patch series, where I
also pointed to the patch series linked above.

I agreed to take this code without waiting for those abstractions, but with a
TODO to fix things up once they land.

- Danilo


Return-Path: <linux-kernel+bounces-669138-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 979BD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:39:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id BE13F189D6A1
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:39:25 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 328C623C8C5;
Sat, 31 May 2025 14:39:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="O6uevtla"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 6B4AD22AE5D;
Sat, 31 May 2025 14:39:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748702343; cv=none; b=BtL3X0dlk9GNIRrOOoOB45tn1uFfXtlzAiRWnefNOq7B1vczF8yAArWmTz092QLneyGF/b6v8xdgEgx//H2xmEhrzFYBcq0OiR5HteifDcTTTVyV/kggJpXTp6Jd3fRiQKFXHFa9UzrSu5x6/JFMn4rkMM7qf97mFcrs57Noalg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748702343; c=relaxed/simple;
bh=lBf2EFRLJRkJ6YvVPQCtN/ai1rjRjdDDD2Xrd3KVxfY=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=oTK9CwLi5629evS+9Gqgn85JiOOsky0smILrPcaImagjjFthK8T2irE/1uccQdD6XfeCFuXZjHlo7DAt42r36d3+BLGnXt3AvpqOs47dgxalCA1rayV4us/N67T5dQc9KfN8SDEnqxiGSTMBv9i3JDSOBnmNYCm4uXHqpKYiBKk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=O6uevtla; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D7826C4CEEE;
Sat, 31 May 2025 14:39:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748702342;
bh=lBf2EFRLJRkJ6YvVPQCtN/ai1rjRjdDDD2Xrd3KVxfY=;
h=References:In-Reply-To:From:Date:Subject:To:Cc:From;
b=O6uevtlagdIwTwWPfZh62h1WsHKmbkrJAoV69y2wHYTAnexi8Y0VVRZRPik2t/ppy
QcX0fI1/Ji0EDxGZLmJ+cjPYobukt/nWkbP1/DMcbSmutVumgKvwr0IeJF3KOu3iVK
HnLYqLUbcdOzyiPTcopdafKtTFTiy+oRaoph/DzwUOTnMdgG4Zd7z6FOfPlMrbkntE
oO7eEEyXRoIfGSnAZP+qiZ+tIGvSb31MtjWofEXSGi8At3PGZamxxvHzuqnYtqe9fx
0rLJluET+pxTIUszITMC/X1ITxgf/PBKlGn0kkEfB7X1sDpTmHXmbVGmfBDDUae1CN
gYnXiJ+HW+kJw==
Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-ad55d6aeb07so453759966b.0;
Sat, 31 May 2025 07:39:02 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCV8C/1UODTWM4EAykoNLcacv0wpZed2AGwyV8FhWVFoxk+StbLSA6450PIt8jmqQx6yKoZIf7+Nnq2mC+i6qcg=@vger.kernel.org, AJvYcCWaLBn+VPzvV8QrTYtnOWp/j02RAmrdh1+3zGvIF2naa3zyEgr698pqP99bttKbRdk8pr3Tpe9SuOpXz6s=@vger.kernel.org
X-Gm-Message-State: AOJu0YzzBFR9FZyFUC4cPAN0Jz8MHeEglcedm8wsJMtOrJDVxDJOHIz7
Q5bFrYzAOYOZ4EmcGhfn9S1yhmMkXBauh7Q67PKAnLhIVsDLP4P8oKI2w07bmTc8R6y2Yp/T4cT
uexZ6ZF++cdAsk/2ORwfSvUln9j2BM4o=
X-Google-Smtp-Source: AGHT+IH8YZwXZcj2fodr9EXx2yhE8MWBitTa7ARBMMIbzbNxAqUXEDaLEMhyWcKuZsTQrajJJn5rDiatQbI4A2oYiW4=
X-Received: by 2002:a17:907:3e24:b0:ad5:1c28:3c4b with SMTP id
a640c23a62f3a-adb36c18668mr557781866b.52.1748702341487; Sat, 31 May 2025
07:39:01 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <2025052932-pyramid-unvisited-68f7@gregkh> <DA935OIFBM1H.3CMSHQ46LLG4P@xxxxxxxxxx>
<2025053047-theology-unsaid-d6ac@gregkh> <DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh> <DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh> <CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
<2025053148-gore-badass-1d1d@gregkh> <CAOZdJXVSByiwGWusdajdTVma2aC3ibZtSz9XBpRy4MJrKuxfvw@xxxxxxxxxxxxxx>
<2025053109-flatterer-error-7432@gregkh>
In-Reply-To: <2025053109-flatterer-error-7432@gregkh>
From: Timur Tabi <timur@xxxxxxxxxx>
Date: Sat, 31 May 2025 09:38:24 -0500
X-Gmail-Original-Message-ID: <CAOZdJXU1ftLfem40v82NJp3S0WqZoMbqYrqQMw4vZEUbpa6Uag@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFupw7ukgTpkTTP1FSn-U3y6iF-JIRAqFNsNgeyuFZpHn4NSWxcIh9bLs6I
Message-ID: <CAOZdJXU1ftLfem40v82NJp3S0WqZoMbqYrqQMw4vZEUbpa6Uag@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] rust: add basic ELF sections parser
To: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>
Cc: Timur Tabi <timur@xxxxxxxxxx>, Alexandre Courbot <acourbot@xxxxxxxxxx>,
Danilo Krummrich <dakr@xxxxxxxxxx>, John Hubbard <jhubbard@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>, =?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
rust-for-linux@xxxxxxxxxxxxxxx, Timur Tabi <ttabi@xxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 7:25=E2=80=AFAM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx=
> wrote:
>
> What exactly do you mean by this? That is what I have been asking, what
> is the specific reason why this can't be done in userspace? What
> hardware "thing" can't be read by userspace, and why not? Userspace has
> access to PCI devices directly, surely there is nothing "secret" here.

Why in the world would you want user space to read hardware registers,
when the driver is already doing it???????

And please note that the driver has to read and parse a lot of other
register in order to know which register contains the fuse settings,
and even whether that register exists, and at what address. The fuse
register is hardware-specific. It doesn't exist on Turing, it does
exist on Ampere and Ada (but just GA10x, not GA100), and it's not used
on Hopper and Blackwell. You want to duplicate all this code in
user-space (assuming that registers really are accessible in user
space), just avoid a 12-line function that already exists and works in
Nouveau?????????

Please make it make sense, Greg.

> > Please note that there other drivers in Linux that iterate over ELF
> > sections in order to parse their firmware images:
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/gpu/drm/imagination/pvr_fw_util.c#n29
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/media/platform/st/sti/c8sectpfe/c8sectpfe-core.c#n925
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree=
/drivers/remoteproc/qcom_q6v5_mss.c#n1374
>
> As pointed out before, those have "slipped in" and should not be used to
> justify continuing to do the same thing.
>
> Again, just do it in userspace, if it's "just" 12 lines in the kernel,
> then put those 12 lines in userspace and you are fine.

Those 12 lines are used to determine how to patch the image. We would
need to move all that patching code and all the GPU detection code, as
well as the list of all the relevant GPU registers into user-space.

> And the proposed patch was NOT 12 lines of rust, so please don't
> conflate the two things here. That's not what we are talking about.

We can easily strip it down to the bare minimum and keep it private to
Nova, if you want. After all, that's how Nouveau does this.


Return-Path: <linux-kernel+bounces-669139-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2E4CE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:45:53 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 5478D3B9255
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:45:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 89DC422D9F4;
Sat, 31 May 2025 14:45:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mubeVN+O"
Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8597079D2;
Sat, 31 May 2025 14:45:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748702744; cv=none; b=RpEbahu895xBvMhbsXo4hos5/SDRYiUnhjuTsGuoDk/UArdVr9f8vjh3EGMREp/KDS19tFlsYMZBb4SWXYSzegxNKz9HVW6fAkwq0SoHmKMY169rk/khOr3emhiRk5rUTln9EhuerfnTpL6Gtpn+XMl553qh1L74QfuWb7XVFPE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748702744; c=relaxed/simple;
bh=x4wSRF4D7tcqiDPh/zMgCb/oT5kl8g0v4lmEyYJjR80=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=f0YlocHx9RofZJ3XLrXQI3ODm51rkyjbE4wS6RVQkpipNbKKyvs30xyEecXa3E5OM/+GLGed09H4rNm/HC+EwHyREL6VxQBpYst5Qv/V1591RV8seKkSFcyhD3TvYBCehOb5yoldJxPeARlLSQ4KsaluRBCroeOmcdt+vFVPm04=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mubeVN+O; arc=none smtp.client-ip=209.85.214.177
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2355360ea87so773775ad.1;
Sat, 31 May 2025 07:45:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748702743; x=1749307543; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=x4wSRF4D7tcqiDPh/zMgCb/oT5kl8g0v4lmEyYJjR80=;
b=mubeVN+ODQx5vCcmeQMWHi65pI2t8UXUPgfoDb4JsvTmGDRRtiQN28lTDmZyVA/+Na
OC6QPjMzTztvjZ2fTC3X5n1/VgyRwE4zK3XcIXkPdxAa0NsnyZkkUAcRqqwbCuWlOfH3
a3dGxF+pFD2xy4IhuDvBRJ3WGiqiuxnlSIBTgP1+x05E0YLgsU2OSfsKtCKGWESyeYmg
ay1lyXlFUZb8ER9bEeWQLKZifkesPaMSv0ZfsXD4dLZghZRDqxSICuzCuKyXmDKDonH3
BQR86wVrkR8NQ/iPkLu28DFpBAtsmQdLy8KlTGUEywki9T0i2/9qr9NS6YWbXg9S20lx
+QhA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748702743; x=1749307543;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=x4wSRF4D7tcqiDPh/zMgCb/oT5kl8g0v4lmEyYJjR80=;
b=bcDrcq+n+NxxseDLgQtNSFbXvvj6ql+Nm3KDYFBGVbUqWadMaDm1IwVrnj1QLK25D+
vAGVk8emnY6lnF2bSvuiSvInLfj85qCXzao9Q739je4wLrCmYIWPOinZOxD/UyKaKtAy
gMHBmmeHfAVh3iysFRcSpcarJGlx5EQ517i6Ck4Gqc3Hbijkb92fNJmwyOBEZO+ED0vM
u3qexbX5a0I5HXe1OXN48N3t995j/x6dTXiy/Ov/HvSAIcdfchzsBu1FcayfOOnBzOPN
8bX1z7m0syRRIieCHLuvFHGGmkLT6r8doRFDFx8aqmzmwU0438BrJlR6X/hObml41Kzt
dMgA==
X-Forwarded-Encrypted: i=1; AJvYcCWwF2WdGCTXd1lU5iuSvf5qod26YLkGJrghKdw2v/MXCyKtdfm8JKHCFaEt5tS9t3GLofibSjFnk4XW664=@vger.kernel.org, AJvYcCXQ62ecOhDRaeR9z4CUl3HixsxDldAxznzxKqVt97I4pJLdLPRgmQvhRkVOFM5/pBQZnUgZrpq8ZXKYMkZT6C8=@vger.kernel.org
X-Gm-Message-State: AOJu0YyC5L5jmzG7p7RvE8MvgDlTyTg3c0AYYslz6NpNnNVQv6ffIRqV
eBdGfsSPK3M5OeeOqV/u3JRJ9a/gxcMSLY1SPYvvZQAAm9PZQX+YJX6j7d4VcQ2z2zMyAKd+AK+
zfrhUsPgh7aSes60eI2Dvjyi+Gg5LMms=
X-Gm-Gg: ASbGncvUrXJ1CmKxnPBofM0L56nHwKF6ZE09nN4iO1YnA6x8nw0tJI6PVHHSHuUF1Q2
pA9gbphwPnQj0/FDPSmfz2y0NdSnjtOUqWBCUGkIZUlUplIe/TcMY4hiDJw/wFSsG+brA3yjBz2
z2ugW5ncHdTWc/o/s4ta6mLaDYwtLK/HXuKGI10pK2gFs=
X-Google-Smtp-Source: AGHT+IFimDKf0uhMz1Pm+sxkfWAXjxIQKSLG8ZsfEBVP66REKw0R8SSDLyW7zbCkypPq0nHPd0I5KL58g5NH5rGKm2U=
X-Received: by 2002:a17:902:f684:b0:235:1ae7:a9ab with SMTP id
d9443c01a7336-235354f690amr32413915ad.3.1748702742699; Sat, 31 May 2025
07:45:42 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250521-nova-frts-v4-0-05dfd4f39479@xxxxxxxxxx>
<20250521-nova-frts-v4-11-05dfd4f39479@xxxxxxxxxx> <adbf5fa1104978df76ae40705e5df13dfbe59bb8.camel@xxxxxxxxxx>
<CANiq72n42hbKPmED4PnzCADsy8iM-i0R2dizypTd_Vui5GctJg@xxxxxxxxxxxxxx> <aDsUGGrjbJ_8KyrP@pollux>
In-Reply-To: <aDsUGGrjbJ_8KyrP@pollux>
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Date: Sat, 31 May 2025 16:45:30 +0200
X-Gm-Features: AX0GCFuc_Ey-USita16CQWi2QDpIFG9DVBZbSOSdhPXU6kT0GjHTGnfskNlToTs
Message-ID: <CANiq72mebLFY7X4mRaN2An1sUAO4DuGko-1JPQ0Rnc7wgzKdug@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 11/20] gpu: nova-core: wait for GFW_BOOT completion
To: Danilo Krummrich <dakr@xxxxxxxxxx>
Cc: Lyude Paul <lyude@xxxxxxxxxx>, Alexandre Courbot <acourbot@xxxxxxxxxx>,
Miguel Ojeda <ojeda@xxxxxxxxxx>, Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
David Airlie <airlied@xxxxxxxxx>, Simona Vetter <simona@xxxxxxxx>,
Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>, Maxime Ripard <mripard@xxxxxxxxxx>,
Thomas Zimmermann <tzimmermann@xxxxxxx>, John Hubbard <jhubbard@xxxxxxxxxx>,
Ben Skeggs <bskeggs@xxxxxxxxxx>, Joel Fernandes <joelagnelf@xxxxxxxxxx>,
Timur Tabi <ttabi@xxxxxxxxxx>, Alistair Popple <apopple@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
rust-for-linux@xxxxxxxxxxxxxxx, nouveau@xxxxxxxxxxxxxxxxxxxxx,
dri-devel@xxxxxxxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 4:37=E2=80=AFPM Danilo Krummrich <dakr@xxxxxxxxxx> =
wrote:
>
> I agreed to take this code without waiting for those abstractions, but wi=
th a
> TODO to fix things up once they land.

That sounds good, yeah.

Cheers,
Miguel


Return-Path: <linux-kernel+bounces-669140-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 029FC41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:00:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id DA6A7189EFC9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:00:38 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0852F42A92;
Sat, 31 May 2025 15:00:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="aVdWJoig"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 4AB91DF58
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:00:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748703617; cv=none; b=EmYeSWIOw1QZmqWuFlnzpwp1Onkm+0JfMX5MmteNBJPV5heHax8PrQfvHRHkyuAWwi6xKmYpvMu27qftqhFekdP2RHTWZmOYu378aGgLLwa7R7vAJ4sCDcboUA9wQuMSEmZuV3nelbjyFhCxbkWzNIhNkIlBQJ/jbqf2qMUAhjY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748703617; c=relaxed/simple;
bh=AKrD+BrLm9rh9l/fBpVix8SwWqW2uwuCOjjWdXnDErs=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=me7fIsm+TPNto5wwLT2rXgpY0NNGBmDjXUNZw+7KCXx3uH0+03PuzeCYwlK2Yu96GarbnHeOnh1mBpo7WmjRceE7eykha46RA80lHQ8QY1n66KnZo4i7yM8m86K56fzwEKCrq+5AsygDOWtvdNMppgQAbsKneIdLp8sx6y4RZvY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=aVdWJoig; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 115EEC4CEEE;
Sat, 31 May 2025 15:00:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748703617;
bh=AKrD+BrLm9rh9l/fBpVix8SwWqW2uwuCOjjWdXnDErs=;
h=Date:From:To:Cc:Subject:From;
b=aVdWJoigiCSX8NDdS3C0ZhC63XNMFjFIXN9Y1GEoD4dwfHrTaVNxCnm6td9VYmi+D
pw0hA6fFge/lBUu54HNgeKltiuzmBekUPV2fTEcW232Dd4JAG7RNzuVly0V9Mgeom4
xljyeHz0e9UExXmR1FWM2itWWBhgxypeZOEtSeanyEPdMLy53t3elKlQBOofMRMxKf
O3VsIT8yb3HU8jzIdibG6pOWPUEFjWHV9M9h2h5dTp55j7EcH2JLY4m1VfJIZqy9BS
nvnB3INxYvK+VbvVfXmoXUrCCWCHxbqN2m+26aeWesS7q8sSVelTH7Nz+aG3rJ5Qqv
96I/1S8Czsppw==
Date: Sat, 31 May 2025 08:00:14 -0700
From: Kees Cook <kees@xxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, Eric Biggers <ebiggers@xxxxxxxxxx>,
Ingo Saitz <ingo@xxxxxxxxxxxxxxx>, Kees Cook <kees@xxxxxxxxxx>,
kernel test robot <oliver.sang@xxxxxxxxx>,
Marco Elver <elver@xxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>,
Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Subject: [GIT PULL] hardening fixes for v6.16-rc1
Message-ID: <202505310759.3A40AD051@keescook>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Linus,

Please pull this small handful of hardening fixes for v6.16-rc1.

Thanks!

-Kees

The following changes since commit f8b59a0f90a2adfce5a9206ce5589ed0dc19543c:

Merge tag 'driver-core-6.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core (2025-05-29 09:11:39 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git tags/hardening-v6.16-rc1-fix1

for you to fetch changes up to 7ea1ca94c1278615c55a9f61f63d2286b1b10853:

randstruct: gcc-plugin: Fix attribute addition (2025-05-31 07:51:14 -0700)

----------------------------------------------------------------
hardening fixes for v6.16-rc1

- randstruct: gcc-plugin: Fix attribute addition with GCC 15

- ubsan: integer-overflow: depend on BROKEN to keep this out of CI

- overflow: Introduce __DEFINE_FLEX for having no initializer

- wifi: iwlwifi: mld: Work around Clang loop unrolling bug

----------------------------------------------------------------
Kees Cook (4):
wifi: iwlwifi: mld: Work around Clang loop unrolling bug
ubsan: integer-overflow: depend on BROKEN to keep this out of CI
overflow: Introduce __DEFINE_FLEX for having no initializer
randstruct: gcc-plugin: Fix attribute addition

lib/Kconfig.ubsan | 2 ++
scripts/gcc-plugins/gcc-common.h | 32 +++++++++++++++++++++++++++
scripts/gcc-plugins/randomize_layout_plugin.c | 22 +++++++++---------
include/linux/overflow.h | 25 ++++++++++++++++-----
drivers/net/wireless/intel/iwlwifi/mld/d3.c | 2 +-
5 files changed, 65 insertions(+), 18 deletions(-)

--
Kees Cook


Return-Path: <linux-kernel+bounces-669141-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0BD2E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:08:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 1A5599E0374
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:08:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6C50D23D28A;
Sat, 31 May 2025 15:08:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="G9CCeHPv"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 AB45723A9AE;
Sat, 31 May 2025 15:08:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704106; cv=none; b=c2LRj2Lssd2kRExSlPUR1Ke7/HHOSKrOVFq5JFI5CceYe4RusRGT4iy8CmjEaDdbQQR1hmQwLc3fEMmcaF3Ves3JodRiDb74Ljct8ino2fx5tRQi5ZSBQhR4Di7xhH8OCuVgmYI4oLvUw2lNDPBQXfmF20bCslAejdaD+vrrtsY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704106; c=relaxed/simple;
bh=8dEJQ3ur5tpd16Psc/n5nL0w2GV8FT1cgYwb/BiBv8I=;
h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=XMw0/+Pg7Uib/krLMvXlZburLLaeyqhR/JI9LjoK/H7qC0AInj7tAiv08QPSZKHMrTJ3eFvWyvWmAu7COeTMNAe5vm/85oJMAonQ/kKxXFQGHnrjQUxm1hE2DLCVhK8QIdCik0olQU5Emj3F01FJtspWf0L1VpKBMW5Tt1OftmU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=G9CCeHPv; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E9C2FC4CEEE;
Sat, 31 May 2025 15:08:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748704106;
bh=8dEJQ3ur5tpd16Psc/n5nL0w2GV8FT1cgYwb/BiBv8I=;
h=From:To:Cc:Subject:Date:From;
b=G9CCeHPvgf6PD9x4QasuV24wtiyzQ4Ql8VMFuKVh1mXGyiDUHZomUA7+QTPTkY671
O0TknkaYQ5DOWtU33uR4UiYxvkFfjeEFr0HCJl0ykAHAK473ObcdQHSSjtO0MRQucQ
J//dzXJpfET99MRXqsqljJPyVWMqO92U0ExFelOR9wAmXAaHWb8qVaXQneGxzTl/Zh
0meuz95VxGwmbZAW46qv1n7iBC/EpULkMjl91/b01cCj1a8EwuT0U4PwCow6w4dHyo
KpuCdnBi34aWYkUWvyxR9UR9y9V2HWlygLeQlCeMVPbVNvJGqPG0EV64iSi9OgTi9G
ZkV30zagOqHFg==
From: deller@xxxxxxxxxx
To: linux-kernel@xxxxxxxxxxxxxxx,
apparmor@xxxxxxxxxxxxxxxx,
John Johansen <john.johansen@xxxxxxxxxxxxx>,
linux-security-module@xxxxxxxxxxxxxxx
Cc: Helge Deller <deller@xxxxxx>
Subject: [PATCH 0/2] apparmor unaligned memory fixes
Date: Sat, 31 May 2025 17:08:20 +0200
Message-ID: <20250531150822.135803-1-deller@xxxxxxxxxx>
X-Mailer: git-send-email 2.47.0
Content-Type: text/plain; charset="utf-8"
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Helge Deller <deller@xxxxxx>

Two patches which fix unaligned memory accesses in apparmor.
Both triggered on the parisc platform, which is much more
memory alignment sensitive and will report violations.
Please check and apply.

Helge

Helge Deller (2):
apparmor: Fix 8-byte alignment for initial dfa blob streams
apparmor: Fix unaligned memory accesses in KUnit test

security/apparmor/lsm.c | 4 ++--
security/apparmor/policy_unpack_test.c | 6 ++++--
2 files changed, 6 insertions(+), 4 deletions(-)

--
2.47.0



Return-Path: <linux-kernel+bounces-669142-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 64F5B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:08:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 9B5FC17E4CF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:08:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0007723DEB6;
Sat, 31 May 2025 15:08:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="A20P97Hv"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 39A3523D298;
Sat, 31 May 2025 15:08:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704108; cv=none; b=V4yw5lBn4JCX07QW2yTaQVEPiOgISmrZY4ucUttUSHx941LDfqxmPp4NprMgQT7tjrS4j7CfJYa5hLNJ4p4bE+MfHFXtQbHU2EnphI6ThLbGPz5d7xjyPEBOdR5w9BsbfcCdOpy5sC88D3iqtnooGeEK8Tdq/vpgjxlZa6NmOXw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704108; c=relaxed/simple;
bh=ziBZwwqyZQT5qEjnp8U1zRRFZPCFs+iLXjzMT4hxT2o=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=bDtdnJoTHoCdtmQhUoOSaU3Mu96T6jIbbNvZT6x75TtvbLVjJ+RRyleJHXW52+3ZwxOUexUfmPrUAprFT2fkd3Vx/NxyNX5+dU0EmW6Mlim0JVPriLDMp8FDLD72bwfG7P0pSBxJ4apAn7nhTIvUjVxES4nfjhFwy7ScVVnji00=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=A20P97Hv; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A4180C4CEE3;
Sat, 31 May 2025 15:08:26 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748704108;
bh=ziBZwwqyZQT5qEjnp8U1zRRFZPCFs+iLXjzMT4hxT2o=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
b=A20P97HvewqwS6oSqh1AcgsBzKx4B/EI0jILDNiaqyscvlIrQcdps2VY6+znKtluv
TKFoHkxWKzewnqvyi+sLZlLWSHyORl4Jr6NZb4PJ35wL648PcSTrG3ceb7loopObab
JuUAerlnQWiKPRbwvOmZsjCY8EkPZlQNomallrFT25c2EirMjthJLin6JxN7glvKWM
9skXpJhz0J0/jbHFXI31e2cozi2yQNDhs+iO+vgK8hLyzBjzeWfnptVQPpn4U9abc8
wMVdmmw2lvOnsVxaiHiBGVQXKFwn/3bacmSqHmzEvAEzWx1hu+AVAV5rqZMXT7sHur
jw4mNJ21c+rsA==
From: deller@xxxxxxxxxx
To: linux-kernel@xxxxxxxxxxxxxxx,
apparmor@xxxxxxxxxxxxxxxx,
John Johansen <john.johansen@xxxxxxxxxxxxx>,
linux-security-module@xxxxxxxxxxxxxxx
Cc: Helge Deller <deller@xxxxxx>,
stable@xxxxxxxxxxxxxxx
Subject: [PATCH 1/2] apparmor: Fix 8-byte alignment for initial dfa blob streams
Date: Sat, 31 May 2025 17:08:21 +0200
Message-ID: <20250531150822.135803-2-deller@xxxxxxxxxx>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20250531150822.135803-1-deller@xxxxxxxxxx>
References: <20250531150822.135803-1-deller@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Helge Deller <deller@xxxxxx>

The dfa blob stream for the aa_dfa_unpack() function is expected to be aligned
on a 8 byte boundary.

The static nulldfa_src[] and stacksplitdfa_src[] arrays store the inital
apparmor dfa blob streams, but since they are declared as an array-of-chars
the compiler and linker will only ensure a "char" (1-byte) alignment.

Add an __aligned(8) annotation to the arrays to tell the linker to always
align them on a 8-byte boundary. This avoids runtime warnings at startup on
alignment-sensitive platforms like parisc such as:

Kernel: unaligned access to 0x7f2a584a in aa_dfa_unpack+0x124/0x788 (iir 0xca0109f)
Kernel: unaligned access to 0x7f2a584e in aa_dfa_unpack+0x210/0x788 (iir 0xca8109c)
Kernel: unaligned access to 0x7f2a586a in aa_dfa_unpack+0x278/0x788 (iir 0xcb01090)

Signed-off-by: Helge Deller <deller@xxxxxx>
Cc: stable@xxxxxxxxxxxxxxx
---
security/apparmor/lsm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
index 9b6c2f157f83..531bde29cccb 100644
--- a/security/apparmor/lsm.c
+++ b/security/apparmor/lsm.c
@@ -2149,12 +2149,12 @@ static int __init apparmor_nf_ip_init(void)
__initcall(apparmor_nf_ip_init);
#endif

-static char nulldfa_src[] = {
+static char nulldfa_src[] __aligned(8) = {
#include "nulldfa.in"
};
static struct aa_dfa *nulldfa;

-static char stacksplitdfa_src[] = {
+static char stacksplitdfa_src[] __aligned(8) = {
#include "stacksplitdfa.in"
};
struct aa_dfa *stacksplitdfa;
--
2.47.0



Return-Path: <linux-kernel+bounces-669143-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CAFAD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:08:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 13EFB17DB32
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:09:01 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2FFA323ED76;
Sat, 31 May 2025 15:08:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UvE0RzRT"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 70FEF23E344;
Sat, 31 May 2025 15:08:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704110; cv=none; b=gip54EOz1wUJRhVcN+IfgkVMi+hXXsdf6C19IYdsPYLCGkDWpp3YJWVpYHV/t6ljr2uo7ywjNXGUtQVtrbCmsXrW7eSMLn/jqRRB3qPzASgisg62tCmg8N2ZzlSxve69fmdGFS+U/ptvFjyswVfp/2sdnayaSiiKontr3+ZJ7WU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704110; c=relaxed/simple;
bh=zeCNSk/4KTUwlgpHWG41sxNyfJ5kt9EedTqhnme5Y+Q=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=Z7KE3dHj7IflzhQgE8AU7wsulBv7x93+rhglD9dWDyJERT2BdKGISUOxK9pqV03PYO5rJh5x5/2FQwxDm5ezZhAQdmq22bgBfL+lVY1lqLMEbn7X5YXNfQd7w/8guqBC+40vFbnUDu3RKfAkIsnYQzNIIiuCNp3EDEUZn2GoEIM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UvE0RzRT; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 801B4C4CEEE;
Sat, 31 May 2025 15:08:28 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748704109;
bh=zeCNSk/4KTUwlgpHWG41sxNyfJ5kt9EedTqhnme5Y+Q=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
b=UvE0RzRTvjbxPlvj54q6DyE3S+GwS52MAc5RYxdBBs/xN4n93hFk7J0e2dHMN23Ul
Yu8IgHKfeeDZ0zb0syLXynyDId9My1VWCNivUStvkqDBtIHiONsnL2mTCwsZzqpADo
A9F3iHP2wDsC2GJ5GfKOPPI1PWMon1bdHOs0lXdeeXpfJcFe4hbxcf5hMk4WOnNYZC
BED9lvtLrL+L4oIPH7m63qpLrC0Uasaixb1wCEWATYHOg9Pwz9AOpJAJ/98IllsZPg
0V83pzNvdhXaLrwmapAUv20/Ge6YicRJpgkFfTtMY9GmOZmx/8cR5Ul98f5+suGmXn
XsRQ8lEb50OTQ==
From: deller@xxxxxxxxxx
To: linux-kernel@xxxxxxxxxxxxxxx,
apparmor@xxxxxxxxxxxxxxxx,
John Johansen <john.johansen@xxxxxxxxxxxxx>,
linux-security-module@xxxxxxxxxxxxxxx
Cc: Helge Deller <deller@xxxxxx>
Subject: [PATCH 2/2] apparmor: Fix unaligned memory accesses in KUnit test
Date: Sat, 31 May 2025 17:08:22 +0200
Message-ID: <20250531150822.135803-3-deller@xxxxxxxxxx>
X-Mailer: git-send-email 2.47.0
In-Reply-To: <20250531150822.135803-1-deller@xxxxxxxxxx>
References: <20250531150822.135803-1-deller@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Helge Deller <deller@xxxxxx>

The testcase triggers some unneccessary unaligned memory accesses on the
parisc architecture:
Kernel: unaligned access to 0x12f28e27 in policy_unpack_test_init+0x180/0x374 (iir 0x0cdc1280)
Kernel: unaligned access to 0x12f28e67 in policy_unpack_test_init+0x270/0x374 (iir 0x64dc00ce)

Use the existing helper functions put_unaligned_le32() and
put_unaligned_le16() to avoid such warnings on architectures which
prefer aligned memory accesses.

Signed-off-by: Helge Deller <deller@xxxxxx>
---
security/apparmor/policy_unpack_test.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/security/apparmor/policy_unpack_test.c b/security/apparmor/policy_unpack_test.c
index 5b2ba88ae9e2..cf18744dafe2 100644
--- a/security/apparmor/policy_unpack_test.c
+++ b/security/apparmor/policy_unpack_test.c
@@ -9,6 +9,8 @@
#include "include/policy.h"
#include "include/policy_unpack.h"

+#include <linux/unaligned.h>
+
#define TEST_STRING_NAME "TEST_STRING"
#define TEST_STRING_DATA "testing"
#define TEST_STRING_BUF_OFFSET \
@@ -80,7 +82,7 @@ static struct aa_ext *build_aa_ext_struct(struct policy_unpack_fixture *puf,
*(buf + 1) = strlen(TEST_U32_NAME) + 1;
strscpy(buf + 3, TEST_U32_NAME, e->end - (void *)(buf + 3));
*(buf + 3 + strlen(TEST_U32_NAME) + 1) = AA_U32;
- *((__le32 *)(buf + 3 + strlen(TEST_U32_NAME) + 2)) = cpu_to_le32(TEST_U32_DATA);
+ put_unaligned_le32(TEST_U32_DATA, buf + 3 + strlen(TEST_U32_NAME) + 2);

buf = e->start + TEST_NAMED_U64_BUF_OFFSET;
*buf = AA_NAME;
@@ -103,7 +105,7 @@ static struct aa_ext *build_aa_ext_struct(struct policy_unpack_fixture *puf,
*(buf + 1) = strlen(TEST_ARRAY_NAME) + 1;
strscpy(buf + 3, TEST_ARRAY_NAME, e->end - (void *)(buf + 3));
*(buf + 3 + strlen(TEST_ARRAY_NAME) + 1) = AA_ARRAY;
- *((__le16 *)(buf + 3 + strlen(TEST_ARRAY_NAME) + 2)) = cpu_to_le16(TEST_ARRAY_SIZE);
+ put_unaligned_le16(TEST_ARRAY_SIZE, buf + 3 + strlen(TEST_ARRAY_NAME) + 2);

return e;
}
--
2.47.0



Return-Path: <linux-kernel+bounces-669144-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5C5C241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:09:39 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A7C7517E586
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:09:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9B9E423C8D5;
Sat, 31 May 2025 15:09:32 +0000 (UTC)
Received: from mail-il1-f205.google.com (mail-il1-f205.google.com [209.85.166.205])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C02E23A9AE
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:09:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.205
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704172; cv=none; b=LnSDXuIjOebxsTuIhqJSjeSikOl4Q3pdUhx2R9YVZfljMPppj14sOT9YeZO2wJDSCOsajuki7Rt0ax0BoX+LgvIud4GlCUsJZCMY97FUkIfBVPxDb0rtGIV+SeFKkZq3fJki6NfYSam5sjd7/a7BO9UemQZEytWuobjACweTidA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704172; c=relaxed/simple;
bh=93CTDjAEeete/R0+aItsc4Xp81vKNUARVLfomt68FpE=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=sxneRMX/PXyldTJC230t6vgNr52ocZTKZoL3HvpdMht+cpDAuaCtLvHrefyznLYQdFtbtZKHGPQU+LwVCMCOarpEwGAJufwiD8k4Mlq67mc4eIgOFjLb31Ef8ovw5i+TurrslA/jxtBLkZj4NzyYg2YC8O9+XuBvjofHQrrZ1/o=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.205
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f205.google.com with SMTP id e9e14a558f8ab-3da644c8ffeso37636035ab.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:09:30 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748704169; x=1749308969;
h=to:from:subject:message-id:date:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=WE8P8A1gyjt3ODkAsUD5vrdPdzj1YbuWYd41n4eMzfE=;
b=d+i50H35j9vS+SC4FqeMqVqg3nFP8h+UnUypWNaNf1TwNOv+qlvR7RJBwIjGaILi3U
zWqBPUHeUVCGbCcAIdiO0NDHgjAOBSeTEDEAxDT7Vaqqw8jIIOQ/Kb+Xgdz657mpkCN1
reuqkmZIg3Oa2jZWXtJ7AJo1nklNB1BRw2gcWwWEgt1LE9sz9A9IFqMaqajRictQLPNQ
kWYY8iCmEBEgjhirPg7/FqI0omP78jXTUdi/GUWnTcIaGoxbP5vcyJMZK2GrEs0DpNRB
gnzMTEKRejGcnd9ByLcai9pxVtersRX4WtD8Ogyz+z/3lR58qAHtaXoaCSJ1+HGnOb4l
UhBA==
X-Forwarded-Encrypted: i=1; AJvYcCXZVryPdkXDdJKkseWTvod5ApWxy4Nxg140w6Bw798b1wVTxqWlvdajM+yXfEKNgEjaBSRvaLzTycUgXys=@vger.kernel.org
X-Gm-Message-State: AOJu0Yz/5TbPrMA02UpQyVf+Pp7E62qH5zWbrKZz778+f+DNvwchBSHS
c56jkYsJ4r8OczB/b2ZMnH+Flm+DrgnqxjMvqpRD88E2pw4uU04nk1XYiq99JWlS5vFDPuSP31v
AWd2vkyVh/Xt/Aw4GlYyH0sTOaXS/pEDXpprU3WWGg+mmL6MXVSp0VAgbNto=
X-Google-Smtp-Source: AGHT+IEd4aWdUvLJ1nbpNE26CWMzem3tFRHP4TBrQsPrEiC3oXuUjUoGfMZUsrttt+HTz5aHYPZyIAlRB+xgYKhDWGpU697gfhT0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1fef:b0:3dd:792d:ce42 with SMTP id
e9e14a558f8ab-3dd9c738eb3mr60576285ab.0.1748704169599; Sat, 31 May 2025
08:09:29 -0700 (PDT)
Date: Sat, 31 May 2025 08:09:29 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b1ba9.a00a0220.d8eae.0019.GAE@xxxxxxxxxx>
Subject: [syzbot] [bcachefs?] WARNING in lookup_object_or_alloc
From: syzbot <syzbot+88e6a26b68fb670364e1@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: kent.overstreet@xxxxxxxxx, linux-bcachefs@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: 015a99fa7665 Merge tag 'nolibc-20250526-for-6.16-1' of git..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=16fcedf4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=231a962e5fdb804b
dashboard link: https://syzkaller.appspot.com/bug?extid=88e6a26b68fb670364e1
compiler: gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/f68bd0ec2940/disk-015a99fa.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/8c78735943b8/vmlinux-015a99fa.xz
kernel image: https://storage.googleapis.com/syzbot-assets/7d9332085f01/bzImage-015a99fa.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+88e6a26b68fb670364e1@xxxxxxxxxxxxxxxxxxxxxxxxx

ODEBUG: object ffffc9000d537a98 is on stack ffffc9000d530000, but NOT annotated.
------------[ cut here ]------------
WARNING: CPU: 1 PID: 16496 at lib/debugobjects.c:655 debug_object_is_on_stack lib/debugobjects.c:655 [inline]
WARNING: CPU: 1 PID: 16496 at lib/debugobjects.c:655 lookup_object_or_alloc.part.0+0x2b1/0x590 lib/debugobjects.c:688
Modules linked in:
CPU: 1 UID: 0 PID: 16496 Comm: bch-copygc/loop Not tainted 6.15.0-syzkaller-02443-g015a99fa7665 #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
RIP: 0010:debug_object_is_on_stack lib/debugobjects.c:655 [inline]
RIP: 0010:lookup_object_or_alloc.part.0+0x2b1/0x590 lib/debugobjects.c:688
Code: 0e 48 8d 7d 20 48 89 fa 48 c1 ea 03 80 3c 02 00 0f 85 58 02 00 00 48 8b 55 20 4c 89 e6 48 c7 c7 c0 07 f5 8b e8 60 ff bf fc 90 <0f> 0b 90 48 83 c4 18 48 89 d8 5b 5d 41 5c 41 5d 41 5e 41 5f e9 b1
RSP: 0018:ffffc9000d5377b0 EFLAGS: 00010086
RAX: 0000000000000050 RBX: ffff8880347347a8 RCX: ffffffff819a71b9
RDX: 0000000000000000 RSI: ffffffff819af046 RDI: 0000000000000005
RBP: ffff88801f7e3c00 R08: 0000000000000005 R09: 0000000000000000
R10: 0000000080000001 R11: 0000000000002be0 R12: ffffc9000d537a98
R13: ffff88801f7e3c00 R14: 0000000000000000 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffff888124aaa000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fdb0980f000 CR3: 0000000030dfd000 CR4: 0000000000350ef0
Call Trace:
<TASK>
lookup_object_or_alloc lib/debugobjects.c:665 [inline]
__debug_object_init+0x2a9/0x3d0 lib/debugobjects.c:743
__init_work+0x4c/0x60 kernel/workqueue.c:677
rhashtable_init_noprof+0x49f/0x7e0 lib/rhashtable.c:1085
bch2_copygc_thread+0xf6/0xdd0 fs/bcachefs/movinggc.c:355
kthread+0x3c5/0x780 kernel/kthread.c:464
ret_from_fork+0x5d7/0x6f0 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-669145-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AB7C341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:10:42 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E339117E94D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:10:43 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 18C7B23D293;
Sat, 31 May 2025 15:10:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="QNWGX2Tk"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 5751623A9AE;
Sat, 31 May 2025 15:10:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704236; cv=none; b=bwPFAaZIennr5eTJyuNmlixmgwcTgFHhMQePcUzAdJQDO28cnlkCAjx2ECNOvaENs8td8/txsw3s6jm4cutMxLCTIUQrkIYUwm9F4lb0qXo4L1Csf2PUEOOY30MEvo2LDS3INBFSVeKjsFpi63Ww5ulqCWoEKlxKlf1yMNyw3rw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704236; c=relaxed/simple;
bh=ZMHrF29e4Q0OwlSJeMtEVlrgKuLi7VCVY7xQQc19E3o=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=jI6yXtxPf9sGERITRRXzf8eBciCC77so9Mxj6lvN9vLUvQ11meIadfEydw/bMNgXfyOjDZAUjRIeUUnbzxj7aT81vOmu+diObGb23TYRfwaU05aZR+i7+8zd+cR8wB/mj0txN6HwfzM1cS/lTMriApuBSrfAfnNVmkl6DupIVgE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=QNWGX2Tk; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id DEC8DC4CEE3;
Sat, 31 May 2025 15:10:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748704235;
bh=ZMHrF29e4Q0OwlSJeMtEVlrgKuLi7VCVY7xQQc19E3o=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=QNWGX2TkEuQg0+tuSvottoUNgI4LinPejvb+o22rbtBIAKxj2kLhM9ywJzv+ynB4R
Hxn6a/nbz804MIbdCwQgReiLhwcsYORmarTB6MTQ3yMQ/X/poMg4cierNCxSX6IU5A
DIO2D1eBq5fcjUwvC28zz0yg3VND7wqwRGOlxBd7eFu3dgc/PLMMcqd/mDsHq8i1sA
rH4q8dQQYzOAQGpePt3k9y1weDiOFIRmHYq9ZocoRJYv/NuocesRLdqX8o1JSxOud+
ll7MwGSHMj3DM5MzlvV7EhaMdg2LY0n5kq8Q0bCo4wdVthhgQG+rDKwLsVusPM3JmE
6NiYGYVe1cDdQ==
Date: Sat, 31 May 2025 16:10:29 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Waqar Hameed <waqar.hameed@xxxxxxxx>
Cc: Lars-Peter Clausen <lars@xxxxxxxxxx>, <kernel@xxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>, <linux-iio@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 3/3] iio: Add driver for Nicera D3-323-AA PIR sensor
Message-ID: <20250531161029.4010a3d6@jic23-huawei>
In-Reply-To: <pndecwa85z5.fsf@xxxxxxxx>
References: <cover.1746802541.git.waqar.hameed@xxxxxxxx>
<c5184074d85b68ca35ccb29ab94d774203b93535.1746802541.git.waqar.hameed@xxxxxxxx>
<20250511131432.1c6e381c@jic23-huawei>
<pndldqwiihi.fsf@xxxxxxxx>
<20250518183852.7e9afdac@jic23-huawei>
<pndo6vnfrnp.fsf@xxxxxxxx>
<20250525103019.3773be94@jic23-huawei>
<pndecwa85z5.fsf@xxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Tue, 27 May 2025 16:48:30 +0200
Waqar Hameed <waqar.hameed@xxxxxxxx> wrote:

> On Sun, May 25, 2025 at 10:30 +0100 Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>
> > On Tue, 20 May 2025 13:27:54 +0200
> > Waqar Hameed <waqar.hameed@xxxxxxxx> wrote:
> >
> >> On Sun, May 18, 2025 at 18:38 +0100 Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
> >>
> >> >> >> +#define D3323AA_DRV_NAME "d3323aa"
> >> >> >
> >> >> > Put that inline where used. A define like this both implies that various values
> >> >> > must be the same when they need not be and means that we have to go find the
> >> >> > define to fine out what they are set to. Just setting the strings directly
> >> >> > tends to end up more readable.
> >> >>
> >> >> Sure, we can do that. (There are a bunch of IIO-drivers doing this, so I
> >> >> just thought that was the "convention".)
> >> >
> >> > I'm sometimes in less fussy mood. One day I might just clean those up
> >> > so there is nothing to copy into new drivers!
> >>
> >> A quick search tells that there are (at least) 105 of those:
> >>
> >> rgrep -A 30 "\.driver" drivers/iio/ | grep "\.name" | grep -v '"'
> >>
> >> I was just about to write a small Python script to fix those, but just
> >> wanted to confirm with you before spending more time on this. So if you
> >> don't want to do this yourself, I can help your here :)
> >
> > It's probably not worth the churn on the ones that have the string repeated
> > multiple times. However, perhaps any that are only using it for .name would
> > be good to tidy up? Those are less a case of it being 'taste' vs it being silly
> > to have a define!
>
> I think if you use it in multiple places, it should definitively be a
> macro definition. I just sent some patches for those that only used it
> once (I didn't include those with `KBUILD_MODNAME`. We can discuss if we
> should also address those in that thread).

I would disagree slightly. If it is used in multiple places because there
is some inherent reason they should have same string then I absolutely agree.
If it's just because it's a convenient string that is used twice in places
that could have had different string then not so much.

>
> However, there are a bunch of drivers that _only_ use a macro definition
> in `.name` and `indio_dev->name`, including this one. That _is_ more
> than one place, so we should actually leave it? Or do you still think we
> should have the same string literal in both places, as you originally
> commented above?

I'd prefer that for new code, but it is a less clear cut case than the ones
you have tidied up, so not worth the churn of tidying up unless people
are otherwise working on the relevant drivers.

Jonathan

>



Return-Path: <linux-kernel+bounces-669146-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B720041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:12:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id AD8F91898462
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:12:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8E12623D2A4;
Sat, 31 May 2025 15:12:33 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eFgV0h6j"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 CCB8011185;
Sat, 31 May 2025 15:12:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704352; cv=none; b=PKhORr0D6HJzLDF7oOPIa79JQCeCHZzRnqvJHEJ5TcePdHDY10n5CzYxDO2MRIlYKqZqn3KGxQccjOOAiKbRYNuHS/4aPN3fH/IrTkabCiBViJLU0hycmJMymsrlcijtVhL4Q0ZCD41YHIfqLaK7l5AtPtTjG/DGrL1C1tIyiHc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704352; c=relaxed/simple;
bh=a/CYO3EFHzzYEb/19ljV50AWmmdfszpreES9zq3QWTk=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=uVP9wWQB4Kuz4kR5hFOOU2FyYL67HlCQjed2s0StoifEMw5BhZ6mtP8QT8UmIF4OH9ZEqHqZwWnbe+75BGc32xZU5RI0yzUa4tPRAFr6jQTGqzjM0ykum9n+RvBv+N4mAAEXwaQARUCxTNXEyvzElltHFbAiskSoecKMjhid4x8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eFgV0h6j; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F3FAC4CEE3;
Sat, 31 May 2025 15:12:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748704352;
bh=a/CYO3EFHzzYEb/19ljV50AWmmdfszpreES9zq3QWTk=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=eFgV0h6jx3RLbFFKtVT34IJ34cVcSLqGfjbcJffl9lFMn4DFd0KqlOASUUHC42vj/
dCxibdSYzWoygv/myAsin7K5ECjOkBFNIzjkk4NT8RQPNflhBMYVnPZ7OR0Y+zUmsm
4RA9VMdwvs1rWC8ZNbL5L2IZgVnHgrV0Bx3NGuiqqGgrYcfF91UNAF8urwoPBLl4in
JEw68aeeUIggCe8OlvdQS0o2IkTC5y/iKxu0kyDQUs+91c+H1vYV2JXq19GkI9BbNa
pHryHHjelNMHkimyQv5yvX0ovQdqGmzFk1KRTJ3+5s/gUovtE4MKPAXG/X9LGFJX97
dpTSU5t+2parw==
Date: Sat, 31 May 2025 16:12:25 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Waqar Hameed <waqar.hameed@xxxxxxxx>
Cc: Lars-Peter Clausen <lars@xxxxxxxxxx>, Michael Hennerich
<Michael.Hennerich@xxxxxxxxxx>, Haibo Chen <haibo.chen@xxxxxxx>,
<kernel@xxxxxxxx>, <linux-iio@xxxxxxxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 0/4] iio: Clean up macro definitions
Message-ID: <20250531161225.5c9658e9@jic23-huawei>
In-Reply-To: <cover.1748356671.git.waqar.hameed@xxxxxxxx>
References: <cover.1748356671.git.waqar.hameed@xxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Tue, 27 May 2025 16:45:41 +0200
Waqar Hameed <waqar.hameed@xxxxxxxx> wrote:

> Currently there are a bunch of drivers using macro definitions for
> string literals that are only used once. There seem to be a "style
> guide" to not do this, and this is often mentioned during the reviews
> (if caught). And since developers most often look at other drivers for
> inspiration (or just trying to figure out the "style guide") when
> writing a new one, it is desirable to have some consistency.
>
> In this patch series we identify the drivers that have macro definitions
> for string literals that are only used once. The most common one is the
> driver name. These can be identified by
>
> rgrep -A 10 "\.driver" drivers/iio/ | grep "\.name" | grep -v '"'
>
> And then count the number of occurrences of the particular macro
> definition (e.g. with `grep -c`). Most drivers use these macro
> definitions for `.name` in `struct device_driver` and `indio_dev->name`
> (which could be justified with a macro definition). However, the ones
> with only one occurrence are identified and removed in this patch
> series.
>
> There are also drivers that have a mixture, e.g. macro definition for
> `indio_dev->name` but in-line string literal for `.name` in `struct
> device_driver`). The following have therefore not been touched (but
> should maybe use the macro definition for both places):
>
> drivers/iio/accel/stk8ba50.c
> drivers/iio/accel/mma7660.c
> drivers/iio/humidity/am2315.c
> drivers/iio/light/stk3310.c
>
> Likewise, there are drivers that only use `KBUILD_MODNAME` in one place.
> These have also been left for the same reasons.
>
> Finally, while cleaning up these ones, other similar macro definitions
> could be identified with the same "style guide" issue: macro definitions
> for IRQ name and `regmap` name. There are even unused macro definitions.
> All of these are also addressed in this patch series.

Thanks for tidying all these up!
Applied to the testing branch of iio.git which will be rebased on rc1
once available.

Jonathan

>
> Waqar Hameed (4):
> iio: Remove single use of macro definition for driver name
> iio: Remove single use of macro definition for IRQ name
> iio: Remove single use of macro definition for regmap name
> iio: Remove unused macro definition for driver and IRQ name
>
> drivers/iio/accel/bma180.c | 3 ---
> drivers/iio/accel/bmc150-accel-core.c | 5 +----
> drivers/iio/accel/kxcjk-1013.c | 7 ++-----
> drivers/iio/accel/mma9551.c | 6 ++----
> drivers/iio/accel/mma9553.c | 7 ++-----
> drivers/iio/accel/mxc4005.c | 6 ++----
> drivers/iio/accel/mxc6255.c | 3 +--
> drivers/iio/accel/sca3300.c | 4 +---
> drivers/iio/accel/stk8312.c | 3 +--
> drivers/iio/accel/stk8ba50.c | 3 +--
> drivers/iio/adc/hi8435.c | 4 +---
> drivers/iio/adc/max9611.c | 4 +---
> drivers/iio/adc/vf610_adc.c | 5 +----
> drivers/iio/chemical/atlas-sensor.c | 3 +--
> drivers/iio/dac/max517.c | 4 +---
> drivers/iio/dac/mcp4725.c | 4 +---
> drivers/iio/gyro/bmg160_core.c | 4 +---
> drivers/iio/health/max30100.c | 3 +--
> drivers/iio/health/max30102.c | 3 +--
> drivers/iio/humidity/dht11.c | 4 +---
> drivers/iio/imu/kmx61.c | 7 ++-----
> drivers/iio/light/adux1020.c | 3 +--
> drivers/iio/light/apds9160.c | 4 +---
> drivers/iio/light/apds9300.c | 3 +--
> drivers/iio/light/apds9960.c | 3 +--
> drivers/iio/light/jsa1212.c | 3 +--
> drivers/iio/light/ltr501.c | 8 ++------
> drivers/iio/light/rpr0521.c | 6 ++----
> drivers/iio/light/stk3310.c | 6 ++----
> drivers/iio/light/vcnl4035.c | 6 ++----
> drivers/iio/magnetometer/bmc150_magn.c | 5 +----
> drivers/iio/magnetometer/mmc35240.c | 3 +--
> drivers/iio/proximity/sx9500.c | 3 +--
> drivers/iio/resolver/ad2s1200.c | 3 +--
> 34 files changed, 42 insertions(+), 106 deletions(-)
>
>
> base-commit: 914873bc7df913db988284876c16257e6ab772c6



Return-Path: <linux-kernel+bounces-669147-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7562541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:14:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A4C78168991
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:14:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D98F723D295;
Sat, 31 May 2025 15:14:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="RJ3aU8yr"
Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 29A18DDCD
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:14:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704470; cv=none; b=qjLh/UGgqIzO79LFeDW5v8YvPuy/PCL7Zh/XitXBvogar8uNiPUucP1yznEZWwKPv9AlJGv/6XTAjUwaT7yZml5z701IPKj2C5689hh99s103MehSt+CVVC0laIKtAztIpbuTueabeitkSyFBrXho+euGthPios4AYpt6NI9hhA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704470; c=relaxed/simple;
bh=T1nOel4UvVfsq0pDQKlA8OugRmHexP8T6OeA7iXIDdQ=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=M5XdNngdTzeSSrt4cTTdsBLx16fzu9HStca6P9aZBlUsu0JMkW4VIRLXs+KxZi+Ka2DcjBhggkOdA8rdsKH2XzyYOFxLUpu9RdW4rnmo6BFYFX/ws5sEsshdwyWNFcc3ucCUfkfWATDh9KVtvvtayIKrT8oaSYkSkpL7eLoJWB4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=RJ3aU8yr; arc=none smtp.client-ip=209.85.218.52
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org
Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-ad8a6c202ffso567169666b.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:14:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linux-foundation.org; s=google; t=1748704466; x=1749309266; darn=vger.kernel.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=lSSawh4TJNRt/0sWPEPpqG3dCXsETs6+b32NUQaU2jQ=;
b=RJ3aU8yrGpjNYmv9AHpESofl+dBvgfx62FPcETkNiy3+OsgaLfC0G7DXa604GO40Z2
TdhczAjue2BLGrVc4LwSNDbUPQFNEjD4v4DlpaYsM5E6Gytmq/gahLM+r8v/4tqcpLQ7
aqgjlPkeSfj7sym6CsNWwnGN3+vsbg3XdpG+4=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748704466; x=1749309266;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=lSSawh4TJNRt/0sWPEPpqG3dCXsETs6+b32NUQaU2jQ=;
b=MJBnzECpKSaTjRSCvWp0ri9+N9/5m2qhfB4kTvPEUYuwBuHRRA3dR6OVlWfQlcppc6
w+l37p+IOAKRC37Ie242t2NWd5rgso1A0OwrVm9QunJOSDFVbSCzaLHDoUJUWRwxYK/q
DrwYtBOnOiQDDrC7JxhpySg9B1DG4eoDOUmKYw0J77PdK9PDUIbUaou+j7p1hHunQH77
dMu+nJViM/0tAjaCeRNMYE+sOAYuMWBOg8z+FyOsJye+9WQeGWBmsW4Pw984J3hB0d7z
38ik09Oax1xRyPWqNOjPuiASdA7gJSxoTCF8vmkhu4zaJ1BZxwoWmJRJAKUvzmrtDrpl
bjeA==
X-Forwarded-Encrypted: i=1; AJvYcCUyst9n86KQveacbQx66fE9i1YG9EID7jafw5vrlvKV3VMf3LyAK94fc2N2zJKlhpcwM3cCYCnHonJWjKs=@vger.kernel.org
X-Gm-Message-State: AOJu0Yyra/fiibR5dZLxDososydI0SzzU6hMDlA6ewKpXbTq4l23reXc
Rm2a+ZByopXs3ribnXKpy8Nbb3Am5TdNbIQkQRbBF7CRa7tYx4kkfDgoqc88uPj5P/rycufWUyV
fwX6ImfU=
X-Gm-Gg: ASbGncu3vCwWI9Yj0OiSWoxEXb5ydiyaeLlTXiJ39d8dr4f2cv3utjzV1Lq3to815tG
j8wtaM/fEye0UWgTnvlXNTrbn1aR6KERy9LSCKaltuTc0lKicXnAGQqXR1oy+fkKNjq+PSgkKjx
5Oz7iidPIVue/RcUnsz6rO3TU/8xg4vawcvQiDjY5az88IEnk/UT2DzXOeURJwC9xKci7NOFCVH
P8OUGPSdCHC+ugLBZbnLmtMQRQWIK9q6zk5Hau7QgpuxBcjl3G4ZDQ+0Uq6YmJyV6XwjkVxIog9
gN0/t+F6mchkEf9pLz8O7bESCLsKt0c6J2MVI8UY3YFMlv+J9hs1VKSUIKVGnyjEFvpKg7GJh8V
4FQeEjJRh3OsB+OnmqIftE7vDhQ==
X-Google-Smtp-Source: AGHT+IH9vckQUJER7cQpyOzte7YD49iPuuICHtwcmk0ahSJRi5tUurwhV/4RhJX0OPmzOt5ZRv9Fyg==
X-Received: by 2002:a17:907:d8b:b0:ad2:48f4:5968 with SMTP id a640c23a62f3a-adb4940d70fmr198544766b.25.1748704466168;
Sat, 31 May 2025 08:14:26 -0700 (PDT)
Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com. [209.85.208.52])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada6ad39f08sm513991066b.144.2025.05.31.08.14.24
for <linux-kernel@xxxxxxxxxxxxxxx>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 08:14:24 -0700 (PDT)
Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-604e2a2f200so5601205a12.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:14:24 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCV1TRpR3ZF+Db7iSUpjyKJQz8U2Uc6s2IwnY7ewW6lFHIamiH+mBun0+usByMu6N+bwwJLlilkeJmTFsuw=@vger.kernel.org
X-Received: by 2002:a05:6402:42cb:b0:601:dc49:a99f with SMTP id
4fb4d7f45d1cf-605b7748f23mr2083379a12.18.1748704464453; Sat, 31 May 2025
08:14:24 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx> <ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
In-Reply-To: <ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 08:14:07 -0700
X-Gmail-Original-Message-ID: <CAHk-=wgHeidY7Y65-4N9AJEy69jEJRo1S9yQzEJ7_J6jpJMfVg@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFuT43-u4qtV8M_qs-fcu_pSqgRGcd6qMnD3Ro4tTsTKzf_cc8MjRwFbJzA
Message-ID: <CAHk-=wgHeidY7Y65-4N9AJEy69jEJRo1S9yQzEJ7_J6jpJMfVg@xxxxxxxxxxxxxx>
Subject: Re: [GIT PULL 4/5] soc: devicetree updates for 6.16
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, 31 May 2025 at 02:07, Arnd Bergmann <arnd@xxxxxxxx> wrote:
>
> There are 11 newly supported SoCs [...]

.. and then you go on to list ten of them. Or 12 if you count Amlogic
S6/S7/S7D individually.

Just checking that I'm awake?

Linus


Return-Path: <linux-kernel+bounces-669148-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BBAAB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:23:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id F390F189B4ED
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:23:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 466231F03C7;
Sat, 31 May 2025 15:23:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="pK3SqPfy"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8425823C8A8;
Sat, 31 May 2025 15:23:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748704985; cv=none; b=WMbezWbeDyVnC8EDOluZ7lWXZ7COB9evV8oJbHbaarMxalp8Eak/3vcKkWqpVnY1maOdhySvHlgb1DT3IJyV6Calbgnbyh0h8zayBTlLTUT/jH8Bo7YHRRDhTc2HN8+D4jXpudyu/X+jyCj8aLE46r9uyT+nkvNjZjNyu79/FpE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748704985; c=relaxed/simple;
bh=zwHQVI0/pNMJZ1ybXwmumUWIVKyedXJpst3QJjnQhyA=;
h=Mime-Version:Content-Type:Date:Message-Id:From:To:Cc:Subject:
References:In-Reply-To; b=K4q+RTXIloVuNZG1PC3KdSF36BLZKkPZOlMQlLjO7MdkQdSz43I3KM/TEPRJMOtl3l4g+hH0qEOxM/uS1hr4z+9MrUU1v34hs/eJJ5wkgN4SW1W0hr4wOECYc5Xg4TA9hmjDRFVMhcGt2WKOi/gzA47XnJV5F+oEOXKIOoMietg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=pK3SqPfy; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7BA65C4CEEF;
Sat, 31 May 2025 15:23:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748704985;
bh=zwHQVI0/pNMJZ1ybXwmumUWIVKyedXJpst3QJjnQhyA=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=pK3SqPfyN04F2RHqC3No94VNlAPN2UTUJ1KbiwRWxZ0atA7I4BTNFqBpXPFdijCy3
S0JLKi4FVlTuw9uDGGkJB6Bq677Wh7X8z7vzKnTe0CSPBj0AoofJ6lSu9914537EW8
NDf2z5JblYWNYCZNrZsWHML0IpYP7ybuPzDtmIRjCz+5h/cjrJyYptbh0toCVj5swD
fFc9Gtbd4J7w+tN1CxxQrvMEkuPWZrh79Lp7RKIGFD9MbpXT2myX/VCOFipyNjHUfG
NuD7n6A36UqnDhjrr+SSqx8RPNy1c+WvkS3txsgeM597FRfKbT+WP2pnHtMMwN/3Ew
C10QkZP9dFG9Q==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 17:23:00 +0200
Message-Id: <DAAG6HNJ42IJ.1AWL4SUJDUGO5@xxxxxxxxxx>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Danilo Krummrich" <dakr@xxxxxxxxxx>
Cc: <gregkh@xxxxxxxxxxxxxxxxxxx>, <rafael@xxxxxxxxxx>, <ojeda@xxxxxxxxxx>,
<alex.gaynor@xxxxxxxxx>, <boqun.feng@xxxxxxxxx>, <gary@xxxxxxxxxxx>,
<bjorn3_gh@xxxxxxxxxxxxxx>, <benno.lossin@xxxxxxxxx>,
<a.hindborg@xxxxxxxxxx>, <aliceryhl@xxxxxxxxxx>, <tmgross@xxxxxxxxx>,
<chrisi.schrefl@xxxxxxxxx>, <rust-for-linux@xxxxxxxxxxxxxxx>,
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 6/7] rust: miscdevice: expose the parent device as
&Device<Bound>
X-Mailer: aerc 0.20.1
References: <20250530142447.166524-1-dakr@xxxxxxxxxx>
<20250530142447.166524-7-dakr@xxxxxxxxxx>
<DAA7CJOUJPNL.F7UH9KD8JANF@xxxxxxxxxx> <aDreGUcvyR4kjMGl@pollux>
<DAAC2TIAOAEY.16STTUX7D2UNR@xxxxxxxxxx> <aDr4ZUjBX9q1c89S@pollux>
In-Reply-To: <aDr4ZUjBX9q1c89S@pollux>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 2:39 PM CEST, Danilo Krummrich wrote:
> On Sat, May 31, 2025 at 02:10:08PM +0200, Benno Lossin wrote:
>> On Sat May 31, 2025 at 12:46 PM CEST, Danilo Krummrich wrote:
>> > But, I agree that we should not name it `Ptr`, probably should never h=
ave been
>> > named `Ptr`, but `Data`, `Private` or similar.
>> >
>> >> Would that also make sense to use as a general change? So don't store
>> >> `Self::Ptr`, but `Self` directly?
>> >
>> > I think it can't be `Self`, see above.
>>=20
>> The rust_misc_device example would still work if we changed this to
>> `Self`. Now it's not a complicated user of the API and someone might
>> want to store `Self` in an `Arc` and then store that as the private
>> data, as the MiscDevice is also referenced from somewhere else. But I
>> don't know if that is common or an intended use-case :)
>>=20
>> For simple use-cases however, I think that `Self` definitely is the
>> right choice (as opposed to `Pin<KBox<Self>>` for example, as that has
>> an extra allocation :)
>
> The data returned by open() can be anything. It can also be some arbitrar=
y
> Arc<T> that already exists and is looked up in open(). It can also be som=
ething
> new that is created within open() and requires in-place initialization.
>
> So, if we want to change this, we could return an `impl PinInit<Self, Err=
or>` as
> you suggest above and initialize it in-place in
> `RawDeviceRegistration::private`.
>
> I agree that this is the correct thing to do, but that really sounds like=
a
> subsequent patch.

Sounds good.

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669149-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id EF54241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:24:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id C2EA79E4CEF
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:24:27 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9813E23D2B1;
Sat, 31 May 2025 15:24:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="agO2V/6f"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 D997523C8AA;
Sat, 31 May 2025 15:24:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705082; cv=none; b=jZ9GX5i4dHdQV0B078YNBgI7InffijS9wHqhw/NTNaFVgtg3OxGukNOp97uUDe5XXDejqR1C4YrtsgWAerAcgMl+gYkNxaE79qGVaGQMehs2uNfawT1/qCJbp2h/Er0yEySOQEsfv0DkI+WPBpFPYvKXqXDjcXmYdlt+r4X0UQ4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705082; c=relaxed/simple;
bh=yd4Pp8qjfcD/sAUM0i3LEQZurmg2V7XgoLJekg3Orj0=;
h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To:
References:In-Reply-To; b=qQGwSoR8kNRTckEE7rIsaLNRdTeYKXr5UWX1AWGlEh5xOAzM1m7ipRkTmhErqM4nXp/Vp9OcdQ+WetItDF94XXZuoL+sxkHa0XPsGLV5D5jOEClUlbMbU7Znlasiz1EU3zxz0NlX9sCkC2rXvKFNaYB6QGtKX7TgzrZBgx+UDao=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=agO2V/6f; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 01574C4CEE3;
Sat, 31 May 2025 15:24:39 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705082;
bh=yd4Pp8qjfcD/sAUM0i3LEQZurmg2V7XgoLJekg3Orj0=;
h=Date:Cc:Subject:From:To:References:In-Reply-To:From;
b=agO2V/6fRY1XWP94nVkXBvN2DhBauOPIah8KJAaCsThsapwPzCh1c4iTbq9SejxJm
d0RMFWsAHYO/v/OnqtodeV2JfpegB0iDCjmN8WWQe2JMSf7BbbmWaM1+CPK5VgLxMz
qMGnS4HaHGFSYgvrzuzQ0Y80VrdrLABL+EoJS1OWDXUniB5NhQqxm9Cg5aEAauV11U
4NWoAPm5UzJP/uhM+ryZg2B5tRwhQsuxt4FJv6+RxVBSwQqLHK44+Cci6NC55NCs8m
5jXBSFdBl9+NBaj7TW51JiRuQ4oeRKIdAZ2E64/uuk81EBsdKMZChIa0yOd6zswJFh
H/YiBAYUvs9fw==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 17:24:38 +0200
Message-Id: <DAAG7QOYXDFA.37VBAYSFJYJCF@xxxxxxxxxx>
Cc: "Miguel Ojeda" <ojeda@xxxxxxxxxx>, "Andrew Morton"
<akpm@xxxxxxxxxxxxxxxxxxxx>, "Alexander Viro" <viro@xxxxxxxxxxxxxxxxxx>,
"Greg Kroah-Hartman" <gregkh@xxxxxxxxxxxxxxxxxxx>, "Boqun Feng"
<boqun.feng@xxxxxxxxx>, "Gary Guo" <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>, "Benno Lossin"
<benno.lossin@xxxxxxxxx>, "Andreas Hindborg" <a.hindborg@xxxxxxxxxx>,
"Trevor Gross" <tmgross@xxxxxxxxx>, "Danilo Krummrich" <dakr@xxxxxxxxxx>,
<rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 1/2] uaccess: rust: add strncpy_from_user
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Alice Ryhl" <aliceryhl@xxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-1-82168470d472@xxxxxxxxxx>
<DA9P6CSP6563.1OYPZXIP5S7N1@xxxxxxxxxx>
<CAH5fLgjoX5AEO8NvDdj+05HUtpoVUPpOa7ri5UG6Djp98vQDxQ@xxxxxxxxxxxxxx>
In-Reply-To: <CAH5fLgjoX5AEO8NvDdj+05HUtpoVUPpOa7ri5UG6Djp98vQDxQ@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 3:27 PM CEST, Alice Ryhl wrote:
> On Fri, May 30, 2025 at 8:13=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> =
wrote:
>> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
>> > +#[inline]
>> > +#[expect(dead_code)]
>> > +fn raw_strncpy_from_user(dst: &mut [MaybeUninit<u8>], src: UserPtr) -=
> Result<usize> {
>> > + // CAST: Slice lengths are guaranteed to be `<=3D isize::MAX`.
>> > + let len =3D dst.len() as isize;
>> > +
>> > + // SAFETY: `dst` is valid for writing `dst.len()` bytes.
>> > + let res =3D unsafe {
>> > + bindings::strncpy_from_user(dst.as_mut_ptr().cast::<c_char>()=
, src as *const c_char, len)
>> > + };
>> > +
>> > + if res < 0 {
>> > + return Err(Error::from_errno(res as i32));
>> > + }
>> > +
>> > + #[cfg(CONFIG_RUST_OVERFLOW_CHECKS)]
>> > + assert!(res <=3D len);
>> > +
>> > + Ok(res as usize)
>>
>> We probably should add a `GUARANTEES` comment here, no?
>
> I can see the idea behind such comments, but I do not believe we've
> used them so far.

Yes, but we also haven't really used `# Guarantees` all that often.

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669150-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3DC3141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:25:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id C72B71BA07AA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:25:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B06B9239E79;
Sat, 31 May 2025 15:25:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=cs.ucla.edu header.i=@cs.ucla.edu header.b="AMpsqAdj"
Received: from mail.cs.ucla.edu (mail.cs.ucla.edu [131.179.128.66])
(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 A9C6ADDAD;
Sat, 31 May 2025 15:25:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=131.179.128.66
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705117; cv=none; b=Ab5yTWP4WS1PrRKqSgQqcHbDLsbsgO0YpY1dvJVdhK+AItW5jQQ35f4e5/mKMkkl13VbrRl4EZ4A4rl/4gTSI7d/ON90mQtb1QmEbV1OWlsKItbP2/6TKby7Kk97mwgVikq2zHauYMLeLf6cc3rXwTw7cVwgviqcBtYGvIMKaLE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705117; c=relaxed/simple;
bh=9nQXULhGaUY3fT+0057uy4rFTlDoovaGBf5GLq37yzc=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=cXoM5pPLlKX9jLZbXSFuv/JWq2iY5Zwv3RIm4M1yGjVfVo/P6MehwoMenxaf/rJntnLsfcK+9ipsmh7mu5lefwekplbGoDxwxG4GRWKyA0Vx2IvAmCG20MDa59kIUdoActdWgkTdTQ9JTdFMjf1S+acVFC3AwEuUkRU8Cscod10=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cs.ucla.edu; spf=pass smtp.mailfrom=cs.ucla.edu; dkim=pass (2048-bit key) header.d=cs.ucla.edu header.i=@cs.ucla.edu header.b=AMpsqAdj; arc=none smtp.client-ip=131.179.128.66
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=cs.ucla.edu
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cs.ucla.edu
Received: from localhost (localhost [127.0.0.1])
by mail.cs.ucla.edu (Postfix) with ESMTP id 3C6E13C010860;
Sat, 31 May 2025 08:25:08 -0700 (PDT)
Received: from mail.cs.ucla.edu ([127.0.0.1])
by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP
id OU7HBfK13_e8; Sat, 31 May 2025 08:25:08 -0700 (PDT)
Received: from localhost (localhost [127.0.0.1])
by mail.cs.ucla.edu (Postfix) with ESMTP id 10EAB3C0149D7;
Sat, 31 May 2025 08:25:08 -0700 (PDT)
DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 10EAB3C0149D7
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu;
s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1748705108;
bh=9nQXULhGaUY3fT+0057uy4rFTlDoovaGBf5GLq37yzc=;
h=Message-ID:Date:MIME-Version:To:From;
b=AMpsqAdj5fMZEDTVG6PjdjtR/ph15+glOYhRx/z/MfWcLAg1W8ATvjgbUCNePSRNy
Fqq5iwmVB23cEj7qemKjJXOW9mnitb1XNaVloBM2su9isYX6E5V5L2IU8uIsQZ6h0u
TIxJq4NRfaXFWO5EYvSFAIRrCCSio2N9NyuThLjfRYdyDKdZIC+tjd6c+oMcm7MW2f
aNvuLYLOHQU4zQbW7n/CoQC19mZe4NW8TH07w30bRJ5bnQEnx86y1blrLwli5JKlDb
30f2Ey4G/px1mr4qL+hXZ6htzpOQz7tVXgV/IoAZ6OvuiYZmHZ0+YNH+73qo3bJnlw
e/KJ5qxgipkNw==
X-Virus-Scanned: amavis at mail.cs.ucla.edu
Received: from mail.cs.ucla.edu ([127.0.0.1])
by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP
id OCT5IDQ-QFp4; Sat, 31 May 2025 08:25:07 -0700 (PDT)
Received: from penguin.cs.ucla.edu (unknown [47.143.215.226])
by mail.cs.ucla.edu (Postfix) with ESMTPSA id DF1053C010860;
Sat, 31 May 2025 08:25:07 -0700 (PDT)
Message-ID: <be46b324-db6c-4ebb-96c3-0280d32aac66@xxxxxxxxxxx>
Date: Sat, 31 May 2025 08:25:07 -0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#77597: listxattr() should return ENOTSUP for sysfs / tmpfs
entries, not 0
To: =?UTF-8?Q?P=C3=A1draig_Brady?= <P@xxxxxxxxxxxxxx>,
Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>,
linux-security-module@xxxxxxxxxxxxxxx,
Stephen Smalley <stephen.smalley.work@xxxxxxxxx>
Cc: 77597@xxxxxxxxxxxxxxx, Rahul Sandhu <nvraxn@xxxxxxxxx>
References: <D8Z6FP3UZG2G.I8H42ZV6DM08@xxxxxxxxx>
<41067aa3-0e72-456f-b3f2-7bd713242457@xxxxxxxxxxx>
<c7d16a13-79c9-4e81-996a-0f32bcff79cc@xxxxxxxxxxxxxx>
<2e24f40d-b475-4199-b53b-e4c266d0d314@xxxxxxxxxxx>
<60b2252d-9295-4d03-921e-a596444da960@xxxxxxxxxxxxxx>
<64b14829-381d-4295-8878-f6b06906ef3c@xxxxxxxxxxxxxx>
<c0a1f475-b973-40a8-a7cc-6947791af38a@xxxxxxxxxxxxxx>
Content-Language: en-US
From: Paul Eggert <eggert@xxxxxxxxxxx>
Organization: UCLA Computer Science Department
In-Reply-To: <c0a1f475-b973-40a8-a7cc-6947791af38a@xxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 2025-05-23 04:38, P=C3=A1draig Brady wrote:
> FYI this should be addressed with:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/comm=
it/?id=3D8b0ba61d

Thanks for letting me know, as this led me to further testing that found=20
some other kernel bugs in this area, possibly introduced by that kernel=20
commit. Please see:

"flistxattr with right size wrongly fails with ERANGE, breaking 'cp -a'=20
etc" <https://bugzilla.redhat.com/show_bug.cgi?id=3D2369561>

The email thread starting at "[PATCH] Fix listxattr-related races and=20
stack overflows"=20
<https://lists.nongnu.org/archive/html/acl-devel/2025-05/msg00003.html>.


Return-Path: <linux-kernel+bounces-669151-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CC9CB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:26:20 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3CB7D189FF5A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:25:55 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4956D23E324;
Sat, 31 May 2025 15:25:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="oK98iY+c"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 7CB262D600;
Sat, 31 May 2025 15:25:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705127; cv=none; b=m60IYUxfXJe4hL/L1zThYhQBPS94NqnXkfTicpMDaAbziS54h+RC1lr+yW4k7v+p/iISfx+NqER6xbBJPDYJjH03LQblJsR95FYvZ14lJZBrmH440PMHoYnWq/JqMnwDMa9IPS8fe8y6Q+3HM6wmghRTz1X8NxkRfPv888uUZ4M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705127; c=relaxed/simple;
bh=wft+J8TL24I3IwuPe2nf3OWSwEu8ht1cNDHENrSRZCQ=;
h=Mime-Version:Content-Type:Date:Message-Id:From:To:Cc:Subject:
References:In-Reply-To; b=Vta5fFeNidji3+SbXPEBjsGeVkbSZLmEhcV8ZsmgFA4R1SyCtiVLd2HsGKN82b+QmoAnOpDgrrcf2IE8B71UeERjifAP7IY1q33QJoN5pnd/I7zO5/p1+K7IfqwFB82IoU2DBiVagKZh1p7tligxgfhxMZsuTSGTtI8f9it6Jzo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=oK98iY+c; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E11D5C4CEEF;
Sat, 31 May 2025 15:25:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705127;
bh=wft+J8TL24I3IwuPe2nf3OWSwEu8ht1cNDHENrSRZCQ=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=oK98iY+cNAhz3uLA5VcHWnAtz9hq3q9j5jKdefIgP648xJ6PJ3d1zajgubpal+0Ji
ieuKH2f/JojeD8YCxSfdHEkuvN053xwrn0jxfum1DqM2y1xN/hEbxABD//mw2xv/eU
MyGhHX5B2QoXf6bfVCEU4PjATmOYR1V/Nv3wAlAh74XXpcSUXDKZXl0zU32ofvbHT0
rfo322vLR8i1tbC6MUCQhNN0F5g60/54xXVgP+QpBxABheVp8X3OtHQZvMjHdjfJm/
6r3oGOwhx0MJ0ps8sE2kfCuT44UmS1d3dSfKaeuxgcvxn60lM+RtslA96wCDFueDPm
XiAxFJP4O4bzQ==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 17:25:22 +0200
Message-Id: <DAAG8AUG7GE2.EVO9Y6PZTHDI@xxxxxxxxxx>
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Alice Ryhl" <aliceryhl@xxxxxxxxxx>
Cc: "Miguel Ojeda" <ojeda@xxxxxxxxxx>, "Andrew Morton"
<akpm@xxxxxxxxxxxxxxxxxxxx>, "Alexander Viro" <viro@xxxxxxxxxxxxxxxxxx>,
"Greg Kroah-Hartman" <gregkh@xxxxxxxxxxxxxxxxxxx>, "Boqun Feng"
<boqun.feng@xxxxxxxxx>, "Gary Guo" <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>, "Benno Lossin"
<benno.lossin@xxxxxxxxx>, "Andreas Hindborg" <a.hindborg@xxxxxxxxxx>,
"Trevor Gross" <tmgross@xxxxxxxxx>, "Danilo Krummrich" <dakr@xxxxxxxxxx>,
<rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 2/2] uaccess: rust: add
UserSliceReader::strcpy_into_buf
X-Mailer: aerc 0.20.1
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-2-82168470d472@xxxxxxxxxx>
<DA9P904SL0KL.1QNQAI240QLH6@xxxxxxxxxx>
<CAH5fLgjZrJ66VnW0J_CHc-3yUFOt+DRWgTCNxoftACga+Lw+fA@xxxxxxxxxxxxxx>
In-Reply-To: <CAH5fLgjZrJ66VnW0J_CHc-3yUFOt+DRWgTCNxoftACga+Lw+fA@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 3:25 PM CEST, Alice Ryhl wrote:
> On Fri, May 30, 2025 at 8:16=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> =
wrote:
>> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
>> > This patch adds a more convenient method for reading C strings from
>> > userspace. Logic is added to NUL-terminate the buffer when necessary s=
o
>> > that a &CStr can be returned.
>> >
>> > Note that we treat attempts to read past `self.length` as a fault, so
>> > this returns EFAULT if that limit is exceeded before `buf.len()` is
>> > reached.
>> >
>> > Reviewed-by: Danilo Krummrich <dakr@xxxxxxxxxx>
>> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
>> > ---
>> > rust/kernel/uaccess.rs | 56 +++++++++++++++++++++++++++++++++++++++++=
++++++++-
>> > 1 file changed, 55 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/rust/kernel/uaccess.rs b/rust/kernel/uaccess.rs
>> > index 9b1e4016fca2c25a44a8417c7e35e0fcf08aa959..e6534b52a1920254d61f83=
49426d4cdb38286089 100644
>> > --- a/rust/kernel/uaccess.rs
>> > +++ b/rust/kernel/uaccess.rs
>> > @@ -293,6 +293,61 @@ pub fn read_all<A: Allocator>(mut self, buf: &mut=
Vec<u8, A>, flags: Flags) -> R
>> > unsafe { buf.set_len(buf.len() + len) };
>> > Ok(())
>> > }
>> > +
>> > + /// Read a NUL-terminated string from userspace and return it.
>> > + ///
>> > + /// The string is read into `buf` and a NUL-terminator is added i=
f the end of `buf` is reached.
>> > + /// Since there must be space to add a NUL-terminator, the buffer=
must not be empty. The
>> > + /// returned `&CStr` points into `buf`.
>> > + ///
>> > + /// Fails with [`EFAULT`] if the read happens on a bad address (s=
ome data may have been
>> > + /// copied).
>> > + #[doc(alias =3D "strncpy_from_user")]
>> > + pub fn strcpy_into_buf<'buf>(self, buf: &'buf mut [u8]) -> Result=
<&'buf CStr> {
>> > + if buf.is_empty() {
>> > + return Err(EINVAL);
>> > + }
>> > +
>> > + // SAFETY: The types are compatible and `strncpy_from_user` d=
oesn't write uninitialized
>> > + // bytes to `buf`.
>> > + let mut dst =3D unsafe { &mut *(buf as *mut [u8] as *mut [May=
beUninit<u8>]) };
>> > +
>> > + // We never read more than `self.length` bytes.
>> > + if dst.len() > self.length {
>> > + dst =3D &mut dst[..self.length];
>> > + }
>> > +
>> > + let mut len =3D raw_strncpy_from_user(dst, self.ptr)?;
>> > + if len < dst.len() {
>> > + // Add one to include the NUL-terminator.
>> > + len +=3D 1;
>> > + } else if len < buf.len() {
>> > + // This implies that `len =3D=3D dst.len() < buf.len()`.
>> > + //
>> > + // This means that we could not fill the entire buffer, b=
ut we had to stop reading
>> > + // because we hit the `self.length` limit of this `UserSl=
iceReader`. Since we did not
>> > + // fill the buffer, we treat this case as if we tried to =
read past the `self.length`
>> > + // limit and received a page fault, which is consistent w=
ith other `UserSliceReader`
>> > + // methods that also return page faults when you exceed `=
self.length`.
>> > + return Err(EFAULT);
>> > + } else {
>> > + // This implies that len =3D=3D buf.len().
>> > + //
>> > + // This means that we filled the buffer exactly. In this =
case, we add a NUL-terminator
>> > + // and return it. Unlike the `len < dst.len()` branch, do=
n't modify `len` because it
>> > + // already represents the length including the NUL-termin=
ator.
>> > + //
>> > + // SAFETY: Due to the check at the beginning, the buffer =
is not empty.
>> > + unsafe { *buf.last_mut().unwrap_unchecked() =3D 0 };
>>
>> In this case you're overwriting the last character read. Should we give
>> `raw_strncpy_from_user` access to one less byte and then write NUL into
>> that?
>
> Why? I'm not interested in changing the implementation just because.
> It needs to be significantly simpler, and I do not think it is.

Sure, but then I think we should document this behavior.

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669152-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5D97141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:29:13 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id A34859E6E1D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:28:50 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C73D022FE0A;
Sat, 31 May 2025 15:29:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="RM2tHDor"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 177A61531E3;
Sat, 31 May 2025 15:29:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705345; cv=none; b=jfzsecN4cJ5iVgPS3p3au5RCxnPa9gfc/K9fPART9CvIjDHVs7swDRiCZnHIOngkNVHk4ggW35EBKq6jAMU/Vnm0NqzkBOsKTmyLYOguM6JS90Qtl3O7FM1IWwSorWpuSR3UmlPe2UxWohYbF7l4gWhuyTbDbQm8JPxvNfpGYo8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705345; c=relaxed/simple;
bh=spupGMDpZclgrfVrT7R3JNeLbM5FYVyG+Lxyt87Ekwg=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=mxGlvzL84/5SAEwCoX1MeAqDG8udJuoazRJP8PTJdpVR2PGAEW4BNIj4qKtqbgpEJck4TGpcw6wEGeATCmQtzVGSEBfSOPR9COgs13IxmIt5PzusYa6A1IDRVT7Rbu6sTxoLmfUyoQjFe78dnTA+me3jnFG+7MhCKIGTel1lmxY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=RM2tHDor; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B4C1FC4CEEE;
Sat, 31 May 2025 15:29:01 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705345;
bh=spupGMDpZclgrfVrT7R3JNeLbM5FYVyG+Lxyt87Ekwg=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=RM2tHDorFEehNFssgvcklF/+Xy5dj3KWqbgNaIU6SBBlWgjd+ff95OeVPVjMBW2mc
sha0oYGmOnVd2yZUXvOPvkGGPD6WbVV0pny55PaBUxb/CfCEDgkV/qDwtPbEnvQ23u
Uh713RPIeqszcdzeCrJPxWL+slW9vsW4vbsZ4hgETWyBb15M9Pf0r1yrTlveX1YFDl
dTmx6fKLHjCqIAc2dFEHKoFZVnilzIIdXfUvraodvv7T+uKwsR2zsTBA8by8PQigu4
28VA4ujWZQQ9g3jO+R2tb4VOXlMp+5Svy/c6bpEtq2eTEahX+58lYj7WgocZvOSy9Y
wSzemaga7ln3A==
Date: Sat, 31 May 2025 17:28:59 +0200
From: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Timur Tabi <timur@xxxxxxxxxx>
Cc: Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>,
Alexandre Courbot <acourbot@xxxxxxxxxx>,
John Hubbard <jhubbard@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?iso-8859-1?Q?Bj=F6rn?= Roy Baron <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>,
Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, rust-for-linux@xxxxxxxxxxxxxxx,
Timur Tabi <ttabi@xxxxxxxxxx>
Subject: Re: [PATCH] rust: add basic ELF sections parser
Message-ID: <aDsgO3mq9aJwe3XF@pollux>
References: <2025053047-theology-unsaid-d6ac@gregkh>
<DA9AU3OBT29Z.3CX827C91I3IH@xxxxxxxxxx>
<2025053050-maggot-landfall-d5eb@gregkh>
<DA9KIGDH4IF6.2T383ZVLTJN0G@xxxxxxxxxx>
<2025053039-reselect-thinness-e0a2@gregkh>
<CAOZdJXVvmDro0Mv36grqQ6LB_1O5GzwPx+Dde+wsfu9Cu_me7A@xxxxxxxxxxxxxx>
<2025053148-gore-badass-1d1d@gregkh>
<CAOZdJXVSByiwGWusdajdTVma2aC3ibZtSz9XBpRy4MJrKuxfvw@xxxxxxxxxxxxxx>
<2025053109-flatterer-error-7432@gregkh>
<CAOZdJXU1ftLfem40v82NJp3S0WqZoMbqYrqQMw4vZEUbpa6Uag@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <CAOZdJXU1ftLfem40v82NJp3S0WqZoMbqYrqQMw4vZEUbpa6Uag@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 09:38:24AM -0500, Timur Tabi wrote:
> On Sat, May 31, 2025 at 7:25â?¯AM Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote:
> >
> > What exactly do you mean by this? That is what I have been asking, what
> > is the specific reason why this can't be done in userspace? What
> > hardware "thing" can't be read by userspace, and why not? Userspace has
> > access to PCI devices directly, surely there is nothing "secret" here.
>
> Why in the world would you want user space to read hardware registers,
> when the driver is already doing it???????

You're probably talking past each other; maybe Greg was thinking of information
that is also accessible via sysfs, e.g. configuration space registers, etc.

Anyways, I also suggest to take a step back and write up a few lines that
provide a slightly broader context how that process of loading the firmware
works and what the technical requirements are.

It feels like the discussion is missing a common understanding of what are the
exact problems that should be solved here -- let's get this common understanding
first and then let's figure out if the idea of parsing the full ELF image is the
correct solution, is part of the correct solution or whether it can be solved
differently as well.

--

Like I mentioned previously, there's no need to make this discussion a blocker
for progressing nova-core. If we have to, I'm fine to apply the required code
in nova-core in the meantime.

But at the same time I also want to make sure that we discussed this - with a
common understanding of the problem - and find consensus on what's the correct
thing to solve this properly.


Return-Path: <linux-kernel+bounces-669155-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 20B5B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:30:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id D390E4A4B5D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 73E7523E330;
Sat, 31 May 2025 15:30:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bCCzJvuy"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 B663E23E331
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705413; cv=none; b=pzVIPWt9VNrJEhgja2Sj4KfCWdPT5xQAP9fAJ9BHl3QulkweZRbSB6Ng5h9Wp9RMcF1AQzAjzlqPI7ZGmXx5YV60d5AaG/qHuIssOtszQoJPdKBg0L7R/AfLjzcftBckPulgXa0bfvxiPjbdbySUr1X+wxJDyTMRzQ2xtmbWHeg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705413; c=relaxed/simple;
bh=f3w/QKfVhdsdgVV46mtMyXteNTwc3yYGGi0cwy8wT20=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=QfxgkBzjtuFR9yqkPkCVvsdM9msJiJYLL8Pfdr5FaJAg9VZNX4RgYqvTib3Ex/9tfyIlkr4XA9G0dFyCbiC7VO5R8O/Sd8fbN9yu3AcKMziGk+NVOao4tFNrdek0vGNOy3dLYm/CvKXjA2HT5xL2FjDINGNniBunfjeOAVYMsJA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bCCzJvuy; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8B693C4CEEE;
Sat, 31 May 2025 15:30:13 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705413;
bh=f3w/QKfVhdsdgVV46mtMyXteNTwc3yYGGi0cwy8wT20=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=bCCzJvuyQN4euZR1QohjTvRJ3ZHnEEcDgFWi2ktMAKD+JE/wRUdi/1crkNcIYj/bc
l/kaJSnt2Er8z1tVI/Bccy9CpxvKhkdN0ib29zLC67EFIvbi6ss7p8k/OPogEB26vO
qTtSMfOOvjPiWB6JGdsOhRy4E6ZdrxlIT/cW5fqfyyzgmTHQGa8/6LSNPEZ+9aeyNf
aimj0dXlW6p13sitm5ujTlpNUP2/SPBk+aS0yosoQeI+1eDEDPNzX37v4PoD7abMPj
tedh1KD+z5M4Ywz2dkVXxV7hW0yoN0Y9YD0Fkt9WL3edWRRIjW5GGe9kkrbXkyUNI+
fbLYgKTaAKCbA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id EB035380AA70;
Sat, 31 May 2025 15:30:47 +0000 (UTC)
Subject: Re: [GIT PULL] ring-buffer: Updates for v6.16
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <20250530095958.494ad94e@xxxxxxxxxxxxxxxxxx>
References: <20250530095958.494ad94e@xxxxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <20250530095958.494ad94e@xxxxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-ringbuffer-v6.16
X-PR-Tracked-Commit-Id: 99d232804405e35d7a9af1536a057578a1442e81
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 8bf722c684b31368a6f1fba7abcffb0da99722ed
Message-Id: <174870544645.163157.10514516245822097116.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:46 +0000
To: Steven Rostedt <rostedt@xxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>, Masami Hiramatsu <mhiramat@xxxxxxxxxx>, Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Fri, 30 May 2025 09:59:58 -0400:

> git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace.git trace-ringbuffer-v6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/8bf722c684b31368a6f1fba7abcffb0da99722ed

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669157-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 718E241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:30:50 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 268304A4D34
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:47 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D18782405F8;
Sat, 31 May 2025 15:30:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rumRNEui"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 200BF23FC5F;
Sat, 31 May 2025 15:30:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705418; cv=none; b=CDHDL3QsaMGYxnCGeWnuXHWrPa7yfsq03K/ZH1w9NSP2eMFdKWgdlak5G5Gmas0nOZ1XNP3/0O3/y9xiy8/pSIW1wEcb5jAQl8sIk1A7U2MreGCNvx2BI8/mOG71jeDNu0F10u+EucZt/GPpHjxnF9y3gtnwTuwVZzBtYfpMuSM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705418; c=relaxed/simple;
bh=/aV+mxMZ3EDv8/MoJK4yjwQOt7JNJvr+1eK2NXFLV78=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=kKu+uqvlHinUQX5wmP9fxXoICib9DceIA+V3Ux3Tyw/bkDWyVP+JpOcPQHORHlqlHBzHOxqtk9Qe0bG/rQYGk5LW29nWtBCyhl3hD5tbPuRl2CNPYaOf3lu7cVPr6TlUNTd5G8hCafivsIf+ZGPZlQgzkDUqI7E41OZAEYrcaN8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rumRNEui; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 01BA6C4CEE3;
Sat, 31 May 2025 15:30:18 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705418;
bh=/aV+mxMZ3EDv8/MoJK4yjwQOt7JNJvr+1eK2NXFLV78=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=rumRNEuie4jf5TuZ5ntFi/P/iTU9qILW2oLhJBITJ75rtqQa4loDUPlwJNRK1H+eS
LRJRMkWj9HFSBI4+tUO7mEWlxifnIB5cToGrPEq0oRVeewaTEwXpNH0Siz2sCKh+Gv
/gHt53zahTdbi7KUPtyB1bOYlMmRdQc82cutK93dSsbr0jcQIZCMm+Vdk20jAj+CRC
5WRq167X2NGkpnIEyhZP61PYmbD6plGGGBRgNAJj6IWYsJibhZtb5YfyeY/LY4sk6i
4be8NR5j9HZGUzgPlXaPNTPmnX+arQt9X6SSZ+DmUxDmiMITdfT9/x3Cn/wMieizpU
x430Gb9uhXcIA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id 70DE1380AA70;
Sat, 31 May 2025 15:30:52 +0000 (UTC)
Subject: Re: [GIT PULL 2/5] ARM: soc updates for 6.16
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <0744995a-856f-431f-b694-6919ca161c65@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx> <0744995a-856f-431f-b694-6919ca161c65@xxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <0744995a-856f-431f-b694-6919ca161c65@xxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-arm-6.16
X-PR-Tracked-Commit-Id: 16066e29d3f5a45cd1ced62dacfce45c9560be1d
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 500af1defbcbb6113c9a958b791517d0562b8d6d
Message-Id: <174870545090.163157.3390188665573038835.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:50 +0000
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 11:02:50 +0200:

> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-arm-6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/500af1defbcbb6113c9a958b791517d0562b8d6d

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669158-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6C7CE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:31:02 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1BD5A4A4F61
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 240B623FC5F;
Sat, 31 May 2025 15:30:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="TiebD5/Y"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 65FAB24113A;
Sat, 31 May 2025 15:30:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705420; cv=none; b=WOmnjDc2fVqA0il3fx6uKkZl1a4NY8HVawPXZuCyORZ+FEA41JgpYEtkUkOutEWrIc79X4aGk2slIJCXLOUtYYg8OOzEdwFbsmv9mtbN/AtvCTmv8Kex45TpN+5pGPrgzKVEyba6l4FDWiu1ZzUvWEc24j5SnvESBaH6Vle6HsY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705420; c=relaxed/simple;
bh=aSKBR3OAdZzFDbue9Xcbehqpq5MXM8tMVL4HWVjGvRg=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=CBJqhQ1Ujq6PVufbvZTCY867UakfMF4WBDCiXshExgk6XmjlYq25vIKrYHIHAtTajUyGmuwhFhYNDSOusNgnaEriQ9npe0W4N+ownvd+qE4d3yEvIChSou5AoVT8ZUVq41xeiDATXd+8W6UCh10ytuZ4SPTnxMZ9X+NQgvU8ixA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=TiebD5/Y; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 41A53C4CEEE;
Sat, 31 May 2025 15:30:20 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705420;
bh=aSKBR3OAdZzFDbue9Xcbehqpq5MXM8tMVL4HWVjGvRg=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=TiebD5/Yxe2n6WnCnmLQMq58d5Yk0/NkRa5HdrJDqLTNYhDdMTV9EOvQ8ZJ6g+pHD
M45uvg5Mia3W3QS6xrQyvyN1G5Sr5KdmSNieBR3bYaI8Ld0lxSkdV0GrNyoAdq0SfX
4YwPlrnAybSSALNY0Be/mCbGzh++7I+zVCuLpd+bNpJTlad3nMfwtnfZPHqoYnQfp8
+y9RK9QKeBl/YGY3pB4tyfhsL3NPzAGT3oXMlxiNGHOYLEakM0e1JLRRUwuU409rD7
DPSs4Z6xY1981Kxgxe/I271wwAJqheNnfKcEvI5owCTAsPAb1xTdfOXEoZpuPCAsXd
LzQgyBZvBpKcQ==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id AE052380AA70;
Sat, 31 May 2025 15:30:54 +0000 (UTC)
Subject: Re: [GIT PULL 3/5] soc: defconfig updates for 6.16
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <70c2f540-d534-4b17-8daf-4409845f3a5d@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx> <70c2f540-d534-4b17-8daf-4409845f3a5d@xxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <70c2f540-d534-4b17-8daf-4409845f3a5d@xxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-defconfig-6.16
X-PR-Tracked-Commit-Id: ae006498a0723e1cbb14fb7c56a1fa4642791897
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: f79749a8e42b3a6dcb980e87f3ef752962b9f094
Message-Id: <174870545315.163157.15508675521389745146.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:53 +0000
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 11:05:53 +0200:

> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-defconfig-6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/f79749a8e42b3a6dcb980e87f3ef752962b9f094

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669159-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 48ADE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:31:13 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 193E64A4D76
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:31:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 471A72417F0;
Sat, 31 May 2025 15:30:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GDAM3pyT"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 88809241696;
Sat, 31 May 2025 15:30:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705422; cv=none; b=GIw4LoZxwCK8SN5fbmfcWDi+w52KQ5ENVFIJjGlav0xDUwfx5ptXXcjYYkTaYOGAJgjGGHpFpWRacS3ab25TN07yRSf+MS2u+eI51dfOFRhyLZcvxB9GgRCfkmSTMHiOWEzN3bx9ebMA6IpoZw7d0NR0349y2/+k/7SxhaLEFOU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705422; c=relaxed/simple;
bh=8fXpeC8lBPDgsJUiXz7eqiDdYLAKyepb0wBS5l2htGs=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=ekUsPSxWXjjeE1tqLd8Adpjf+CoJs9Gplx4JWumUwC/qtfpZiYlGONNAusHzEX4v7FMNBMb5+nhDOS11GOknMJvDyq3sEw0Glle8nOoDP7iWNywKoQsUznrFWQAw8tCZE6tRPeT1nFITnHgD5yTOiFVLIIDOmzrzVTer3ynhzQQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GDAM3pyT; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6C4BBC4CEE3;
Sat, 31 May 2025 15:30:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705422;
bh=8fXpeC8lBPDgsJUiXz7eqiDdYLAKyepb0wBS5l2htGs=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=GDAM3pyToeNbnZXw6Gm/aEPL6IiipxARDy2GDnVoUv1rIoqqL3C6BRSx9EFR6IGCl
Ru1ijLBT3ogRIAixTyvP4KUvtTzQqmReCgoFZI7n1hzN3n/b4be43DLh1CWwcZ8eUG
1fMcYXqVD15Lj6tZBhxj/63nA82po8/qxN8CLfkOOtx9IQQ2RSpdNtC4XHuQfYzmbn
e+f/tKa83g4fGmmhOCVMuj/yCARHN2WBv6RSFsESvJcE4oH4uvVRlQoqWebnrn/u8W
wlgieJ+YN8tGiS1jFeQ2SaVKOPXjGD2PYQ/oRlJfxu6HhiROnctrVtjQCLOAMwg10S
Oz2LZ6FjWYwbA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id ADED1380AA70;
Sat, 31 May 2025 15:30:56 +0000 (UTC)
Subject: Re: [GIT PULL 4/5] soc: devicetree updates for 6.16
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx> <ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-dt-6.16
X-PR-Tracked-Commit-Id: 3f07353e2fd3e154921e539044b26e85ca910dbe
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: ec71f661a572a770d7c861cd52a50cbbb0e1a8d1
Message-Id: <174870545544.163157.7191295860821501844.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:55 +0000
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 11:06:47 +0200:

> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-dt-6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/ec71f661a572a770d7c861cd52a50cbbb0e1a8d1

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669160-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 02F1D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:31:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7D2199E78EE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B2D0F23ED68;
Sat, 31 May 2025 15:30:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="khq+2SyK"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 02661242900;
Sat, 31 May 2025 15:30:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705425; cv=none; b=MBGcmmZ0sFrVCjRF85xXQuimiUPvzphvgpZ8VANXVOD+1hsZyquCOB9Kk0V/a5E2zLefsl4bTj25N/qgSrlRbpR8th12fg9yEVkeFSyqNFHvphTmi0F5jcUWcdrAdEw58JyKWRynivzIKr76nMf3e6+oHrupEQOw3RUJ2v6034M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705425; c=relaxed/simple;
bh=iiL5VxW3Twj1IIHwwMPR65Wl/S/cUTQU/lOhciGZy9g=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=Qj7Mr5v6dZI1XmxzLmHXkYr/GfRbBs11QINzvlV4qGGCPoZaLSG4KI3GMg1GzL87VyZvwBJxMKbsLtWoccysrmMozgUWE52yc5ZD1WtjjFlVo6Mx6aO5YbP2d8EEZ0jFJRkhGv/y2eBvDr/LXRnFXwWruskCkqau3OMf68fItlE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=khq+2SyK; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7EB99C4CEE3;
Sat, 31 May 2025 15:30:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705424;
bh=iiL5VxW3Twj1IIHwwMPR65Wl/S/cUTQU/lOhciGZy9g=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=khq+2SyKs9dPTLUaY0jJZzmH8OgkAySXMuGx6bADtwkTT42aUJ45lNIUMS8N/jgGC
sWHt0Hcel+D3jGA34xiAlh2jRJdZ3iiMai+5pSbkUKt/b4OQhligXaK+N0grYy0ZUm
5JNcMxZdnxE2HX5vAm1DMUytk73mdRtZo3ebmcmc36bqDUH3YVD+MChBiG+Ey930O+
xUmXq4frg1BsGB/jmM1nWNh22UvJL5SIh+R3kw/LRNGXIH49nJ5fhRItkIUgCsZYbW
8oG110uWvjIHjSl9DwzZqxXe9vejnYnIFrHfZXUPzKU75XpVtrXdmeDhyeyo0lnwBf
kmi9x5DQ3t5QQ==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id EAAE5380AA70;
Sat, 31 May 2025 15:30:58 +0000 (UTC)
Subject: Re: [GIT PULL 5/5] soc: sophgo devicetree updates for 6.16
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <d98adabb-a26a-4962-af9d-5707e1cb3715@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx> <d98adabb-a26a-4962-af9d-5707e1cb3715@xxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <d98adabb-a26a-4962-af9d-5707e1cb3715@xxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-newsoc-6.16
X-PR-Tracked-Commit-Id: 9bba618694cc905b898661c18e3e40955573ef5e
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 31848987f177a6c0944fd0254a55ffd7c52a8c50
Message-Id: <174870545744.163157.4670024390186583728.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:57 +0000
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 11:07:48 +0200:

> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-newsoc-6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/31848987f177a6c0944fd0254a55ffd7c52a8c50

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669153-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 93F8041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:32:14 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E41171BA53C2
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:08 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 367D723BD1F;
Sat, 31 May 2025 15:29:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IVF4UGyj"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 718D079D0;
Sat, 31 May 2025 15:29:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705386; cv=none; b=ZGwaCDQTNt3LW42QrmzDviXjJMI1rz3OpKFW9zSZfbIK5zSh2Ut7nYTyS9XvqngwZyIvTN7W+vEHoWWIWEKNUgU0Fnn+LQm3uoQjjT3QHKgMrmDJOMDwrmXadKpqAjj8WK2PgvpFZ3gFn2wY0SaBDljj+8ZDzKPNCf7af6wtqgI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705386; c=relaxed/simple;
bh=faSEr/ZDlFC0XgCH0YCQ45nbWzlbbpXlLkx4FVTW9ow=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=AjsCOlgrEySlZuGEyUnpIS5d+e3Z9iWNsqLYHYU1xgn+TynkY/6ZwJ+wB5ThrLkoHQSOxCwlgVyZDwag8FD/avYD5HPJqLRZpiyI7AmplR9z4D/s+HwJR+gf7dUvpPZcExg7WdHKItFvVu93sdhHapae6nSH/bozW4EoLBzDQKM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IVF4UGyj; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 474D2C4CEE3;
Sat, 31 May 2025 15:29:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705386;
bh=faSEr/ZDlFC0XgCH0YCQ45nbWzlbbpXlLkx4FVTW9ow=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=IVF4UGyjqp38xG73gTpKgMsAM0G+XV0xRgm9aflQKAULcw8EEQvLGdwteSBlNasDk
E0DIC3YVvveVp1q07UWoIpgEk6ZW4GmcD3Pt/3I7YvBgjbcF1Tyw6f2FUfmQaOrLi1
O4J4Jz8K0HsFTy/T+k2R8nOu4SgBrlUUDh0xhvNRiPMin/2pwfzAQSv0Pw1p12gtYr
ET6dPdHl/QTJz9tnhSt+PDCDB0oAjpXnj11qRUIUsgolJ7TwJCiJbxN8DGJFDtvD6v
dH0pNTXVUh6JLdWl9tiofV/SIeQBj+kv7SssnEtT8cmXtIUkzCxS6aOcWRnMAloTGi
Dfbl96mgzChsA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id AE38C380AA70;
Sat, 31 May 2025 15:30:20 +0000 (UTC)
Subject: Re: [GIT PULL] require gcc-8 and binutils-2.30
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <feab370a-3857-4ae9-a22d-1ab6d992c73c@xxxxxxxxxxxxxxxx>
References: <feab370a-3857-4ae9-a22d-1ab6d992c73c@xxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kbuild.vger.kernel.org>
X-PR-Tracked-Message-Id: <feab370a-3857-4ae9-a22d-1ab6d992c73c@xxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git tags/gcc-minimum-version-6.16
X-PR-Tracked-Commit-Id: 582847f9702461b0a1cba3efdb2b8135bf940d53
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: dee264c16a6334dcdbea5c186f5ff35f98b1df42
Message-Id: <174870541922.163157.8980112873932103512.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:19 +0000
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, Linux-Arch <linux-arch@xxxxxxxxxxxxxxx>, linux-kbuild@xxxxxxxxxxxxxxx, Kees Cook <kees@xxxxxxxxxx>, x86@xxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-hardening@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 11:09:53 +0200:

> https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git tags/gcc-minimum-version-6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/dee264c16a6334dcdbea5c186f5ff35f98b1df42

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669154-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 60FE441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:32:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id CFC5A1BA261D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 228C423E340;
Sat, 31 May 2025 15:30:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ZYQHXFBi"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 63BB323E330
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705411; cv=none; b=RLAsNHTDNh7mWRmxFIFFxdMDnRp59aZrwEU+pXr0HDIF0B0kx9UdkFI6xds8l3Rck3wFktas5HGUclVWcPgALIBCyyM/5MhQcFo0raa7tEhOVYw2Q86J4R65dAYYRDjIeA9+FVQQ+RR0NfUdfBdTgs7+NFfp+4GrejJghTrCb3g=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705411; c=relaxed/simple;
bh=8WIVGSreGVenL0bh0jXMVo9HrtbPl5Nlrt4rMb9d1TY=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=TnSGrXX+JoWtqJlBhsPQVlsBSBsWqLffMdR7rut1MQIu7z4dB4oOPXNFWf/c6ipODwpuD4lkNBjtKNXrKXLMSdwTgnTgrzCr/rc81+LFfr+zFung5+aWxhhqMCthla+9GFK0HANQLsEqGCB+iQUBdL9jH9rACN2HCZxTS5uHssI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ZYQHXFBi; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4496CC4CEE3;
Sat, 31 May 2025 15:30:11 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705411;
bh=8WIVGSreGVenL0bh0jXMVo9HrtbPl5Nlrt4rMb9d1TY=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=ZYQHXFBis5MrCEFvmspre2o1A/Wr1MlyK+yKuLroLE/GyZm7aDRSa+yziMTA4KCvO
CWeY997jWXmdviOKS2uciZ9Enfi0I1olM9R/S5O/gSPcyvRsD6NWwecirbL+Jh83sC
ICPNJXjS0PZB46Vwt8SuQ7tFlwknPC2tpaWUdLtEjqDG3EEuYhWy1dOS2pjInXVqy+
b3kIcntxkXM09oVRaUNgDf4swtgsTMzZXaDXddwh0UeHBxyPPNUU3nM3TQ9WqhO46j
+wGk4GTSMhePYqO+nvpxvthw0URGJrk6W6kyqbNtAGEg16jUurh/lCO3lss18vZzxx
WBpRcIBojihRA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id AE04A380AA70;
Sat, 31 May 2025 15:30:45 +0000 (UTC)
Subject: Re: [GIT PULL] arch/microblaze patches for 6.16-rc1
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <379179de-2d0f-4a0a-9534-46b10d254e40@xxxxxxxxx>
References: <379179de-2d0f-4a0a-9534-46b10d254e40@xxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <379179de-2d0f-4a0a-9534-46b10d254e40@xxxxxxxxx>
X-PR-Tracked-Remote: git://git.monstr.eu/linux-2.6-microblaze.git tags/microblaze-v6.16
X-PR-Tracked-Commit-Id: 52b70e5b605c38996b74788a140702e69f34d2e1
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 03ebff0c837b3636f0a33901e9b2cd66a13f5f3b
Message-Id: <174870544425.163157.17780236236108380821.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:44 +0000
To: Michal Simek <monstr@xxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, Linux Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Fri, 30 May 2025 08:10:25 +0200:

> git://git.monstr.eu/linux-2.6-microblaze.git tags/microblaze-v6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/03ebff0c837b3636f0a33901e9b2cd66a13f5f3b

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669156-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8989D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:33:02 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 930D71BA6E02
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:30:50 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9B10A23F40C;
Sat, 31 May 2025 15:30:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kr+NmFCM"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 DC33E23E340;
Sat, 31 May 2025 15:30:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705416; cv=none; b=YFWQaYyInyGfUjayF07+P/IbaWAdp/q3HStknxHVMgIZ8180V3dmhpoi9MBRwId26d8RRStkouCok6Gkly7z5LNrhnRAz0uOQtDqA6ykCUyar+W/OBZNwspRKcen27mVkrxKkmxEA6dnMCzGGNLg6sFs6LfW93m7NEFHjDjH/Y4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705416; c=relaxed/simple;
bh=QZs8cZpTJY2GYyXFmJ1cbxgzHKLLlva4Qev0J55Op7s=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=Z1gXPOu7ag9s7OGoDjar0jYfQS/lnabFwIFO9dJ1DAeng3xg8/KH5YQxgzBMhUTwFx6eP2KO4cuvTGNPeT5t9BHdeeMgsRVO7AMn88XuB8d5B8JEAOYWqxHXKkxMgALlAWMbs7UNM7/8DByi/TT3+j1qdpYuQ9KtW9vTp6b2UPY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kr+NmFCM; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id BFDFFC4CEE3;
Sat, 31 May 2025 15:30:15 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748705415;
bh=QZs8cZpTJY2GYyXFmJ1cbxgzHKLLlva4Qev0J55Op7s=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=kr+NmFCMehV0biK5Tk/hYTvrUWCfaRfbB6pR2M32fEEPwPKGvlv5SQnUk78m/VKMM
NR8bnHd47rrCysdN57DkNNPiQv4l9HN/jIVpskyTJaBuo8FqIfghcUf0hj2yAkODZB
XIB8nOGwyR2Ts1l86LvrBMRLrhNnxYzz8vWfhD2ZZz54cjjMy5gUOPyhQrdFohoVeE
yqpoEtTBNDalgh5++XtYpBS7E7fZeMeMqHMCLI9Hf4KGbV7r+Bi+dAGKykOrrU71s0
mVU64Kg9RwXkMSJCn+Jvj5/8wzpHXos2ecwthnyH+NdgPANq9VoN/a9VWKzX2yaCyn
w80lDZYDzXBgA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id 33DFD380AA70;
Sat, 31 May 2025 15:30:50 +0000 (UTC)
Subject: Re: [GIT PULL 1/5] soc: drivers for 6.16
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <f44d3ad7-b518-4679-8f7b-949680b26ef7@xxxxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx> <f44d3ad7-b518-4679-8f7b-949680b26ef7@xxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <f44d3ad7-b518-4679-8f7b-949680b26ef7@xxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-drivers-6.16
X-PR-Tracked-Commit-Id: 5963edd98a2159f2114b08e402a7341c1e7dd293
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 297d9111e9fcf47dd1dcc6f79bba915f35378d01
Message-Id: <174870544866.163157.4319179356868633377.pr-tracker-bot@xxxxxxxxxx>
Date: Sat, 31 May 2025 15:30:48 +0000
To: Arnd Bergmann <arnd@xxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 11:01:20 +0200:

> https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git tags/soc-drivers-6.16

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/297d9111e9fcf47dd1dcc6f79bba915f35378d01

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669161-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8FB6C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:39:55 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id AFE334A3507
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:39:56 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B5DE923D281;
Sat, 31 May 2025 15:39:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mXXYUSuY"
Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id A979C238D32
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:39:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748705990; cv=none; b=J99EpzkeY/TO1TwLWZpgPtWljlyRPlM2H2/2Pf10D4b1KnQAVBcpsaqsTCH143VhEUircQ/kLrP5fbWQ2FhAtF9FX1JW9rsCgQsezWbQp7qo/tZQnQmSABglx/ujpUgviSMCxx7SYXvBG7xO/RhztD/dntJgYQUNorRZng2AtA0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748705990; c=relaxed/simple;
bh=gU9laCodEqgFk7Nl1GeUd8LpwRSNdhguSR7gzLHmTs0=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=ek092yNYZPcOXIqvCzomo9oW5qkPmLn/pbQZ5aU76muIiSr66gDVPfAi74WdAMyMZvtl1w1DhF7O1TJ6Gy0XEdVVjvTLNAwZRWMDXGnCTpNO3fqTcS+51mrpCwV1lcSHOeZ3Ipd5Zv90p9aYyO3uvvBThmiKwC1JTOJJHi42VLA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mXXYUSuY; arc=none smtp.client-ip=209.85.216.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pj1-f47.google.com with SMTP id 98e67ed59e1d1-30eccc61f96so507300a91.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 08:39:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748705988; x=1749310788; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=gU9laCodEqgFk7Nl1GeUd8LpwRSNdhguSR7gzLHmTs0=;
b=mXXYUSuYU9GuWW6woMg48mjSjP8zTHYwerlqjn9GdM+EOT/AUHCl7dhSk4tscVRerm
e/lq9pyv5IC0o6h+uqH9n8Q70bFKrgdqh4ttJMuiwd0rdL0qrcEbLKZ/G93knKalr9tk
GMUzB5JCUBp6RhzvzZIMVgmauaDQzuTw3GK/s2klvfpA9ozf6WqwlgyNq+ro5pHnmNnH
G4ZLakf7d0udoDed/oHTmWieNk7ZLRHR91f2h22fE2MSdsyOdeMKvlzG6u9EnYbbRDLe
wdi04VVBSctMUInvwtFRo73Diu6d4DkcJFS97l6w8ZkDEh34dQQ6Q/DAkKp40eaLvuTL
mrTQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748705988; x=1749310788;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=gU9laCodEqgFk7Nl1GeUd8LpwRSNdhguSR7gzLHmTs0=;
b=q/Y+NEy74Mnrf9dH5o9gn9f6LZ2vn5SLMJZXC/nrc8EF7IG2mdS/ML/BjBn2/Y/8jJ
HVH1p9H073ktr5nBruzdBESjRrSf+spLngc5vPc7+EFr/xIXv5SLNVc5uqF2nsA7ekRh
ZqyKxcnQawvSDTW1ibsmiBQN1EHxuR8RhPu+S193puRbF2mpxsVnBTVRCmhyVGBGcWpb
BK1yulGKcNgq2spy6t+U7spfqmeBwMI31cKBCxDaF99BD7YsshkqY3igUZ6QyuyPDsSb
zKsQ9XiZLC52WWdszw+D5VVU6HuTI4eojyfVohlIXZzam876aCzh6IVR8ph4ckT7Zp6o
nVMw==
X-Forwarded-Encrypted: i=1; AJvYcCVKoCFaPSiAmd1OzzncIUIGRg2lsYJC0JnTZ2jjrtdapb4yC6CKaNCittMuBxNudkgZabq/2C3dF6wVeao=@vger.kernel.org
X-Gm-Message-State: AOJu0YwNb9yZrKsBatEdUuTdnzBY60zodUbB5uMjnT/deDECx4dW6/as
B5exlKVmc+SM6XeHIXc8rug1AqDXuTPcEKwBbf3kuL/KZNyYukL8/ZoHDpIbHuJfJEtkFWM1Yye
12OFYuYK3vQM14IeMMDbVbww5LfkzPe0=
X-Gm-Gg: ASbGnct6uInScQsjqHuIsZot5SOo9TeMUB4R9bA6xV0PNPJYo6GHuMJcPSORa9D5PIa
/PCauGrTYJ0c4013fMt5Tca434tZjBJmtWzQoJFn3tmwMwnkRikzhJow7ag/shOQ/Hm5XenN31W
4HC8MkENsFf3kHSQ4PSSZ/y8WrRnQ81TI3wJ1Au3YFpKE=
X-Google-Smtp-Source: AGHT+IHl6zouE4LWARtWKof5FoX2/BnOqPpqC+poFZfUJPlE46SCdWhcUwZ/kirEdrkRwdjAkYmAGKCIoWWAMRBa2wc=
X-Received: by 2002:a17:90b:4f4d:b0:310:8d79:dfe4 with SMTP id
98e67ed59e1d1-31241849819mr4211406a91.4.1748705987877; Sat, 31 May 2025
08:39:47 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250529002509.GA161456@ax162>
In-Reply-To: <20250529002509.GA161456@ax162>
From: Miguel Ojeda <miguel.ojeda.sandonis@xxxxxxxxx>
Date: Sat, 31 May 2025 17:39:35 +0200
X-Gm-Features: AX0GCFvKLgSzAfNJ19aRo-_vAJqqHWKC-i3DNuV70pOA1O5Q3qSVFZf8BAgbIoM
Message-ID: <CANiq72mbAvxhT37xQFAPur_vfpDN7ufbtPeyF+UnU3f7i5sRkg@xxxxxxxxxxxxxx>
Subject: Re: Prebuilt LLVM 20.1.6 uploaded
To: Nathan Chancellor <nathan@xxxxxxxxxx>
Cc: llvm@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, ojeda@xxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Thu, May 29, 2025 at 2:25=E2=80=AFAM Nathan Chancellor <nathan@xxxxxxxxx=
g> wrote:
>
> I have built and uploaded LLVM 20.1.6 to
> https://mirrors.edge.kernel.org/pub/tools/llvm/.
>
> If there are any issues found, please let us know via email or
> https://github.com/ClangBuiltLinux/linux/issues/new, so that we have an
> opportunity to get them fixed in main and backported before the 20.x
> series is no longer supported.

As usual, thanks! The combined package works for a x86_64 Rust enabled buil=
d:

Tested-by: Miguel Ojeda <ojeda@xxxxxxxxx>

Cheers,
Miguel


Return-Path: <linux-kernel+bounces-669162-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8029A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:40:11 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B65DC4A3741
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:40:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8F91A23D2A9;
Sat, 31 May 2025 15:40:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Sy3F6lDL"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 2D287238D32;
Sat, 31 May 2025 15:40:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748706005; cv=none; b=s4Tx+znh5JheVf8tPUVWcr44jfHd3uPUDXRmqcVlxU+jMxKcCJhFoq2Dis1Y4vJZMv8SlomajCM9wLXsLsCc63YcdZFpmo4aUREGNngzP6RTRTNWL0vnW9PSQOH0KVySDALx8AknHReymvEqJZgFKZbKNzh5DTHmwwKbXAnHiO4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748706005; c=relaxed/simple;
bh=Q740V4g6+YWYiMOROFQ5FZm71j0aeRFIn3JtF8HgRVo=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=XfZw+HAP55MwHD9lAZXuoag3zT4kLe3wNoYaz0NO0wZvD90fgs4XBp/S1EsL/VSOmueWfCyj9aRE1xSyQMplZeF+NKOt9SvGVf3nxKHtb2lfn3p5Pvt9cwvwY57ProfuZzBgByT8EJqKQQznoRyDzsz9PcCqB1PBcRjI0S7FJcw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Sy3F6lDL; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8284C4CEE3;
Sat, 31 May 2025 15:40:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748706005;
bh=Q740V4g6+YWYiMOROFQ5FZm71j0aeRFIn3JtF8HgRVo=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=Sy3F6lDLumf2YdjzTKWgOSxceKoYYizMbxkmsUAavtHqf0NPRsR9uOSsbVhU5rpy7
aIJZDl6Htq8j1Xr1QnBBHh0EV4wXkWNy8bmQ5Jj1un8L2zYIbCsWsBFZ/ebkLO7XJq
Kj9yDkTaQawHzlKSHPDjiz5O0pLLZQYIWzoZfXud+AvyjB+Z8qlAxxbFZNPPviNsSj
z9CAGEuERJUyyj1t6+HTcQFU/XKaC4Td8FkwkWPJgIQnC1P894ZiisnA0qcYKRkz1Z
bpQmtRxFpaG4NaeBot6FvKrxfORQOgQgOT8wQvWC6Ta4p6pzmqpJlLPxxngqWVC4wL
e1K2SusySnAmg==
Date: Sat, 31 May 2025 16:39:58 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Lothar Rubusch <l.rubusch@xxxxxxxxx>
Cc: lars@xxxxxxxxxx, Michael.Hennerich@xxxxxxxxxx,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
eraretuya@xxxxxxxxx
Subject: Re: [PATCH v8 6/7] iio: accel: adxl345: add freefall feature
Message-ID: <20250531163958.211467a5@jic23-huawei>
In-Reply-To: <CAFXKEHY3aWk8+M9DhV--_2Z2G8L7jFCZvjuPB5xLrf_LwEF8AQ@xxxxxxxxxxxxxx>
References: <20250510224405.17910-1-l.rubusch@xxxxxxxxx>
<20250510224405.17910-7-l.rubusch@xxxxxxxxx>
<20250525181902.72178be9@jic23-huawei>
<CAFXKEHY3aWk8+M9DhV--_2Z2G8L7jFCZvjuPB5xLrf_LwEF8AQ@xxxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Tue, 27 May 2025 09:31:57 +0200
Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote:

> On Sun, May 25, 2025 at 7:19=E2=80=AFPM Jonathan Cameron <jic23@xxxxxxxxx=
g> wrote:
> >
> > On Sat, 10 May 2025 22:44:04 +0000
> > Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote:
> > =20
> > > Add the freefall detection of the sensor together with a threshold and
> > > time parameter. A freefall magnitude event is detected if the measuri=
ng
> > > signal falls below the threshold.
> > >
> > > Introduce a freefall threshold stored in regmap cache, and a freefall
> > > time, having the scaled time value stored as a member variable in the
> > > state instance.
> > >
> > > The generated IIO event is a magnitude event on x&y&z and thus identi=
cal
> > > to what inactivity (with DC-coupling default) would generate. Thus a
> > > separate set of sysfs handles are setup to configure and enable freef=
all
> > > events.
> > >
> > > Signed-off-by: Lothar Rubusch <l.rubusch@xxxxxxxxx> =20
> > Hi Lothar,
> >
> > Up until here all looked good to me but the custom ABI in here
> > would need documenting in Documentation/ABI/testing/sysfs-bus-iio* and
> > runs into the normal problem with custom ABI. It's basically pointless
> > because no generic code will use it. Current code assume freefall
> > is a standard magnitude falling threshold on X&Y&Z.
> >
> > So it doesn't provide a solution for inactivity DC and freefall effecti=
vely
> > being the same type of detection with different timing parameters.
> >
> > The only thing I have come up with that is at least close to standard
> > ABI in this annoying corner case is to use an additional fake channel
> > with it's own controls as in_accel1_X&Y&Z_*
> > We can use label to indicate to a user that it is meant for freefall but
> > labels are also effectively custom ABI (though ABI that is easy to just
> > pass through to a user interface) so that's not great. Also, so far
> > the concept of multiple 'fake' channels isn't a thing so userspace is
> > unlikely to cope with that well either.
> >
> > The decision way back to not have multiple events of one type on a given
> > channel has bitten us a few times before, but this is a little unusual
> > in that it's not just stacked threshold like you get on hwmon chips whe=
re
> > people don't want to keep changing thresholds when warning levels are
> > passed because of that temporal element. Those can be dealt with via
> > more sophisticated userspace code.
> >
> > No comments below. I haven't looked closely given this fundamental
> > ABI difference.
> >
> > Maybe best bet is mere everything other than freefall detection and
> > basically kick this into the long grass until we figure out a solution =
that
> > can sit in the normal ABI without breaking old software (which a change
> > to a new free fall interface would unfortunately do.)
> >
> > Sorry not to have a better idea :(
> > =20
>=20
> No problem, this answer was already expected. I will exclude freefall
> from the current patch set.
>=20
> Note, at the moment you still did not go through activity, inactivity
> and link bit. Pls, don't apply them now. While working on the adxl313,
> I found that the ADXL345 implementation still needs a small fix.
> Aside, I'd like to use my new regmap favorite regmap_assign_bits()
> here, too. Anyway I'd appreciate feedback on the current
> activity/inactivity patches, though.

I did look through them but had nothing useful to say as they looked
good to me. I'll probably take a final look when you post the version
with the changes you mention though.

>=20
> The "freefall inactivity dilemma" is a bit annoying for actually two
> reasons. First, it does not feel well to surrender in front of two
> simple events as such. Second, it's not just about dropping freefall,
> but also leaves another question aside. Activity/inactivity are now
> linked when both are enabled - shouldn't there be a way to allow for
> activity / inactivity un-linked? I mean, just as events and not
> coupled to auto-sleep? Actually this feels a bit like
> MAG_EV_REFERENCED having MAG_EV_STATECHANGE or INFO_STATECHANGE. And
> this smells probably too much like custom API... Just kidding, but I
> just wanted to mention it, and like to shift this question also to a
> separate patch set.

(As you know) custom ABI is a pain for this and the only thing we have
that is close is hysteresis. If they were both on the same channel
boolean operation (say both were x&y&z) then we could just use that
with the hysteresis value being the difference between the two thresholds.
With one being x&y&z and the other x|y|z we can't really do this.

It might be possible to define a coupling ABI / chaining of events
style thing that would allow us to define this cleanly but it is likely
that would get complex to understand and we'd need to fully understand
the use cases across a range of devices to try and figure out the commonali=
ty.

The autosleep is kind of separate again from the link. That falls into
the common problem area of power saving functionality. There is a silly lev=
el
of complexity in what different devices do in the way of power saving
tricks so we either map them to something else (e.g. whatever
mode suits the sampling frequency) or try to make best attempt to auto
adjust them in the driver. Maybe here we should disable autosleep
if buffered mode is in use (on basis user is asking for consistent
data) and otherwise enable it because lower sampling frequency is
probably fine for monitoring. Ultimately we do have the option of
per event sampling frequencies in_accel_x&y&z_mag_rising_sampling_frequency
that could be used to control the frequency at which we check for
activity to be either the sleep mode mode or the normal one.
That's not a common bit of ABI but is there for the case of
devices that have a monitor mode but no dataready type signal
so the frequency is only relevant for events.
Note that the only documented version of that bit of the ABI today
is the one that applies to all events.

/sys/bus/iio/devices/iio:deviceX/events/sampling_frequency

I'd not be against adding per event versions as they are consistent
with the existing ABI. The quirk around what they mean are a bit
non-obvious as we define per channel sampling_frequency differently
from sampling_frequency when it comes to effective overall rates.
How that applies to events will need specific documentation.

See docs for /sys/bus/iio/devices/iio:deviceX/in_voltageY_sampling_frequency
for the info on that wrinkle of the existing ABI.=20

That's not really a problem if we only define one of these though
as no periods to add :)

>=20
> Some freefall idea: Practically given, a freefall is an inactivity MAG
> event with low inactivity time, and inactivity is an inactivity MAG
> event with larger inactivity time.

For this device yes that's the case for DC coupling anyway. Worth
keeping in mind that other sensors use entirely different things
for 'activity' detection.

> After reasoning a bit more, I can think of some exclusive
> implementation based on the threshold times [this is nothing new, I
> think you mentioned something into this direction already?]. Unsure if
> this is possible, I may try this here and in case present it
> separately: Say, if inactivity time obtained by sysfs is greater than
> x seconds, a freefall event will be set up. If smaller, an inactivity
> event will be set up. If freefall is enabled (and, in case, activity),
> both will remain unlinked. If inactivity and activity are enabled,
> i.e. the larger inactivity time setting - both events will be linked
> with autosleep.

That could definitely be done and I think makes reasonable sense.
If someone wants freefall detection they are unlikely to set a long
period (as the device will hit the ground!)

The link thing and autosleep is kind of us trying to do the right
thing for what we guess the user wants so that is fine too.

Jonathan

>=20
> Best,
> L
>=20
> > Jonathan
> >
> > =20
> > > ---
> > > drivers/iio/accel/adxl345_core.c | 226 +++++++++++++++++++++++++++++=
++
> > > 1 file changed, 226 insertions(+)
> > >
> > > diff --git a/drivers/iio/accel/adxl345_core.c b/drivers/iio/accel/adx=
l345_core.c
> > > index c6f75d6b0db9..c35a5727852c 100644
> > > --- a/drivers/iio/accel/adxl345_core.c
> > > +++ b/drivers/iio/accel/adxl345_core.c
> > > @@ -193,6 +193,7 @@ struct adxl345_state {
> > > u32 tap_duration_us;
> > > u32 tap_latent_us;
> > > u32 tap_window_us;
> > > + u32 ff_time_ms;
> > >
> > > __le16 fifo_buf[ADXL345_DIRS * ADXL345_FIFO_SIZE + 1] __aligned=
(IIO_DMA_MINALIGN);
> > > };
> > > @@ -825,6 +826,63 @@ static int adxl345_set_tap_latent(struct adxl345=
_state *st, u32 val_int,
> > > return _adxl345_set_tap_time(st, ADXL345_TAP_TIME_LATENT, val_f=
ract_us);
> > > }
> > >
> > > +/* free-fall */
> > > +
> > > +static int adxl345_is_ff_en(struct adxl345_state *st, bool *en)
> > > +{
> > > + int ret;
> > > + unsigned int regval;
> > > +
> > > + ret =3D regmap_read(st->regmap, ADXL345_REG_INT_ENABLE, &regval=
);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + *en =3D FIELD_GET(ADXL345_INT_FREE_FALL, regval) > 0;
> > > +
> > > + return 0;
> > > +}
> > > +
> > > +static int adxl345_set_ff_en(struct adxl345_state *st, bool cmd_en)
> > > +{
> > > + unsigned int regval, ff_threshold;
> > > + bool en;
> > > + int ret;
> > > +
> > > + ret =3D regmap_read(st->regmap, ADXL345_REG_THRESH_FF, &ff_thre=
shold);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + en =3D cmd_en && ff_threshold > 0 && st->ff_time_ms > 0;
> > > +
> > > + regval =3D en ? ADXL345_INT_FREE_FALL : 0x00;
> > > +
> > > + return regmap_update_bits(st->regmap, ADXL345_REG_INT_ENABLE,
> > > + ADXL345_INT_FREE_FALL, regval);
> > > +}
> > > +
> > > +static int adxl345_set_ff_time(struct adxl345_state *st, u32 val_int,
> > > + u32 val_fract_us)
> > > +{
> > > + unsigned int regval;
> > > + int val_ms;
> > > +
> > > + /*
> > > + * max value is 255 * 5000 us =3D 1.275000 seconds
> > > + *
> > > + * Note: the scaling is similar to the scaling in the ADXL380
> > > + */
> > > + if (1000000 * val_int + val_fract_us > 1275000)
> > > + return -EINVAL;
> > > +
> > > + val_ms =3D val_int * 1000 + DIV_ROUND_UP(val_fract_us, 1000);
> > > + st->ff_time_ms =3D val_ms;
> > > +
> > > + regval =3D DIV_ROUND_CLOSEST(val_ms, 5);
> > > +
> > > + /* Values between 100ms and 350ms (0x14 to 0x46) are recommende=
d. */
> > > + return regmap_write(st->regmap, ADXL345_REG_TIME_FF, min(regval=
, 0xff));
> > > +}
> > > +
> > > static int adxl345_find_odr(struct adxl345_state *st, int val,
> > > int val2, enum adxl345_odr *odr)
> > > {
> > > @@ -1689,6 +1747,17 @@ static int adxl345_push_event(struct iio_dev *=
indio_dev, int int_stat,
> > > return ret;
> > > }
> > >
> > > + if (FIELD_GET(ADXL345_INT_FREE_FALL, int_stat)) {
> > > + ret =3D iio_push_event(indio_dev,
> > > + IIO_MOD_EVENT_CODE(IIO_ACCEL, 0,
> > > + IIO_MOD_X_AND_Y=
_AND_Z,
> > > + IIO_EV_TYPE_MAG,
> > > + IIO_EV_DIR_FALL=
ING),
> > > + ts);
> > > + if (ret)
> > > + return ret;
> > > + }
> > > +
> > > if (FIELD_GET(ADXL345_INT_WATERMARK, int_stat)) {
> > > samples =3D adxl345_get_samples(st);
> > > if (samples < 0)
> > > @@ -1763,7 +1832,156 @@ static irqreturn_t adxl345_irq_handler(int ir=
q, void *p)
> > > return IRQ_HANDLED;
> > > }
> > >
> > > +/* free-fall sysfs */
> > > +
> > > +static ssize_t in_accel_mag_freefall_en_show(struct device *dev,
> > > + struct device_attribute *a=
ttr,
> > > + char *buf)
> > > +{
> > > + struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> > > + struct adxl345_state *st =3D iio_priv(indio_dev);
> > > + bool en;
> > > + int val, ret;
> > > +
> > > + ret =3D adxl345_is_ff_en(st, &en);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + val =3D en ? 1 : 0;
> > > +
> > > + return iio_format_value(buf, IIO_VAL_INT, 1, &val);
> > > +}
> > > +
> > > +static ssize_t in_accel_mag_freefall_en_store(struct device *dev,
> > > + struct device_attribute *=
attr,
> > > + const char *buf, size_t l=
en)
> > > +{
> > > + struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> > > + struct adxl345_state *st =3D iio_priv(indio_dev);
> > > + int val, ret;
> > > +
> > > + ret =3D kstrtoint(buf, 0, &val);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_measure_en(st, false);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_ff_en(st, val > 0);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_measure_en(st, true);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + return len;
> > > +}
> > > +static IIO_DEVICE_ATTR_RW(in_accel_mag_freefall_en, 0);
> > > +
> > > +static ssize_t in_accel_mag_freefall_value_show(struct device *dev,
> > > + struct device_attribute=
*attr,
> > > + char *buf)
> > > +{
> > > + struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> > > + struct adxl345_state *st =3D iio_priv(indio_dev);
> > > + unsigned int val;
> > > + int ret;
> > > +
> > > + ret =3D regmap_read(st->regmap, ADXL345_REG_THRESH_FF, &val);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + return iio_format_value(buf, IIO_VAL_INT, 1, &val);
> > > +}
> > > +
> > > +static ssize_t in_accel_mag_freefall_value_store(struct device *dev,
> > > + struct device_attribut=
e *attr,
> > > + const char *buf, size_=
t len)
> > > +{
> > > + struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> > > + struct adxl345_state *st =3D iio_priv(indio_dev);
> > > + int val, ret;
> > > +
> > > + ret =3D kstrtoint(buf, 0, &val);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + if (val < 0 || val > 255)
> > > + return -EINVAL;
> > > +
> > > + ret =3D adxl345_set_measure_en(st, false);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D regmap_write(st->regmap, ADXL345_REG_THRESH_FF, val);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_measure_en(st, true);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + return len;
> > > +}
> > > +static IIO_DEVICE_ATTR_RW(in_accel_mag_freefall_value, 0);
> > > +
> > > +static ssize_t in_accel_mag_freefall_period_show(struct device *dev,
> > > + struct device_attribut=
e *attr,
> > > + char *buf)
> > > +{
> > > + struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> > > + struct adxl345_state *st =3D iio_priv(indio_dev);
> > > + int vals[2];
> > > +
> > > + vals[0] =3D st->ff_time_ms;
> > > + vals[1] =3D 1000;
> > > +
> > > + return iio_format_value(buf, IIO_VAL_FRACTIONAL, 2, vals);
> > > +}
> > > +
> > > +static ssize_t in_accel_mag_freefall_period_store(struct device *dev,
> > > + struct device_attribu=
te *attr,
> > > + const char *buf, size=
_t len)
> > > +{
> > > + struct iio_dev *indio_dev =3D dev_to_iio_dev(dev);
> > > + struct adxl345_state *st =3D iio_priv(indio_dev);
> > > + int val_int, val_fract_us, ret;
> > > +
> > > + ret =3D iio_str_to_fixpoint(buf, 100000, &val_int, &val_fract_u=
s);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_measure_en(st, false);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_ff_time(st, val_int, val_fract_us);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + ret =3D adxl345_set_measure_en(st, true);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + return len;
> > > +}
> > > +static IIO_DEVICE_ATTR_RW(in_accel_mag_freefall_period, 0);
> > > +
> > > +static struct attribute *adxl345_event_attrs[] =3D {
> > > + &iio_dev_attr_in_accel_mag_freefall_en.dev_attr.attr,
> > > + &iio_dev_attr_in_accel_mag_freefall_value.dev_attr.attr,
> > > + &iio_dev_attr_in_accel_mag_freefall_period.dev_attr.attr,
> > > + NULL
> > > +};
> > > +
> > > +static const struct attribute_group adxl345_event_attrs_group =3D {
> > > + .attrs =3D adxl345_event_attrs,
> > > +};
> > > +
> > > static const struct iio_info adxl345_info =3D {
> > > + .event_attrs =3D &adxl345_event_attrs_group,
> > > .read_raw =3D adxl345_read_raw,
> > > .write_raw =3D adxl345_write_raw,
> > > .read_avail =3D adxl345_read_avail,
> > > @@ -1806,6 +2024,7 @@ int adxl345_core_probe(struct device *dev, stru=
ct regmap *regmap,
> > > ADXL345_DATA_FORMAT_FULL_RES |
> > > ADXL345_DATA_FORMAT_SELF_TEST);
> > > unsigned int tap_threshold;
> > > + unsigned int ff_threshold;
> > > int ret;
> > >
> > > indio_dev =3D devm_iio_device_alloc(dev, sizeof(*st));
> > > @@ -1825,6 +2044,9 @@ int adxl345_core_probe(struct device *dev, stru=
ct regmap *regmap,
> > > st->tap_window_us =3D 64; /* 64 [0x40] -> .08=
0 */
> > > st->tap_latent_us =3D 16; /* 16 [0x10] -> .02=
0 */
> > >
> > > + ff_threshold =3D 8; /* 8 [0x08] =
*/
> > > + st->ff_time_ms =3D 32; /* 32 [0x20] -> 0.1=
6 */
> > > +
> > > indio_dev->name =3D st->info->name;
> > > indio_dev->info =3D &adxl345_info;
> > > indio_dev->modes =3D INDIO_DIRECT_MODE;
> > > @@ -1936,6 +2158,10 @@ int adxl345_core_probe(struct device *dev, str=
uct regmap *regmap,
> > > if (ret)
> > > return ret;
> > >
> > > + ret =3D regmap_write(st->regmap, ADXL345_REG_THRESH_FF,=
ff_threshold);
> > > + if (ret)
> > > + return ret;
> > > +
> > > /* FIFO_STREAM mode is going to be activated later */
> > > ret =3D devm_iio_kfifo_buffer_setup(dev, indio_dev, &ad=
xl345_buffer_ops);
> > > if (ret) =20
> > =20



Return-Path: <linux-kernel+bounces-669163-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E8E6941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:43:14 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id BF0114A1CBC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:43:13 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BA89C23D2AD;
Sat, 31 May 2025 15:43:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ujryb/xX"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 0891111185;
Sat, 31 May 2025 15:43:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748706185; cv=none; b=dVB9lpmS9YUHh+bf9HUl3sp1joKVd6xcbuc7k56dXU20o41tEt0AYVIC4eoN4jr8AnNvOZs1VaLNy/6QhMQsUlJm2GpI1WVEWLYsRCkh33LbSiIlDTn1SWJxhaV5nc1KZN/afWX2vnkA3WTILof+c8Xl2MZAU4qu+IltGZWSI1Y=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748706185; c=relaxed/simple;
bh=RJrqCSxOJMSjx2fTZncUiQV6/mnDlT5rbVx7f21sSIg=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=cdY4dJk4imus1Prl2CEzUAZZ5KXeSsOZsX1sFUc3n4ArrtFCZR2Zqi+FkRrwm95CVd0tsLBQ5PVNPLbm7Oe3n3N6Y8jLKEvehq0vZPIw00ZRKXhomBmxHQiNSngOLkdNH0hepY39I4FgCOk0Jsn+Ea31RsZC70UB42O4S+3TEPU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ujryb/xX; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C853BC4CEEF;
Sat, 31 May 2025 15:43:02 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748706184;
bh=RJrqCSxOJMSjx2fTZncUiQV6/mnDlT5rbVx7f21sSIg=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=Ujryb/xXZchzHDW5TkUX8DUjsFoL1Ym96UVgQeFTGwefIBFpvAIrq+ywpACA39Z9x
zDdp7e8fTzhRhVZ/46VTSF0kzv/IQ9cf1o3yQ3qcaFSWhUvpEdxEbp6Dk5nW59dv+d
RmWTdvTNo8PLYqaHa2T3zpyPa4l+n3WSey49Qh695o7oXcqcECh7axbwfKQTjzDyiF
7/SdpEXvvXPC8zcd0gPnlP1OChhViADSpa0/j+qfk/1NuspW0D6F7HzUFwU5zEjZtz
JOCCeGtaoh2hpph5k/ySXNICJ6cJ5jR2UuH7wmv/fl8Zs0BwZHrGFiBnw0/DdFXnaG
IU7w5E1PAHJPA==
Date: Sat, 31 May 2025 16:42:58 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Matti Vaittinen <mazziesaccount@xxxxxxxxx>
Cc: Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx>, Lars-Peter Clausen
<lars@xxxxxxxxxx>, Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] iio: adc: ad7476: Support ROHM BU79100G
Message-ID: <20250531164258.47f0d1a2@jic23-huawei>
In-Reply-To: <aDk2qNE9LTVnfAFM@mva-rohm>
References: <aDk2qNE9LTVnfAFM@mva-rohm>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 07:40:08 +0300
Matti Vaittinen <mazziesaccount@xxxxxxxxx> wrote:

> ROHM BU79100G is a 12-bit, single channel ADC. From the software point
> of view it is identical to the TI's ADS7866. Support reading ADC
> measurements using the ad7476.c
>
> Signed-off-by: Matti Vaittinen <mazziesaccount@xxxxxxxxx>
Applied.
> ---
>
> Please, see the relevant discussion (as to why an ID for a fallback is
> added) in:
> https://lore.kernel.org/all/f8ec547a-5924-4563-aa1d-dde8227844fa@xxxxxxxxx/
>
> This patch was based on v6.15-rc1. I can rebase if needed.
>
> drivers/iio/adc/ad7476.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/iio/adc/ad7476.c b/drivers/iio/adc/ad7476.c
> index 37b0515cf4fc..d48ee8f1d547 100644
> --- a/drivers/iio/adc/ad7476.c
> +++ b/drivers/iio/adc/ad7476.c
> @@ -435,6 +435,13 @@ static const struct spi_device_id ad7476_id[] = {
> { "ads7866", ID_ADS7866 },
> { "ads7867", ID_ADS7867 },
> { "ads7868", ID_ADS7868 },
> + /*
> + * The ROHM BU79100G is identical to the TI's ADS7866 from the software
> + * point of view. The binding document mandates the ADS7866 to be
> + * marked as a fallback for the BU79100G, but we still need the SPI ID
> + * here to make the module loading work.
> + */
> + { "bu79100g", ID_ADS7866 },
> { "ltc2314-14", ID_LTC2314_14 },
> { }
> };



Return-Path: <linux-kernel+bounces-669164-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3437841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:50:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 4F48E4A1FCC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:50:52 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 10698155A59;
Sat, 31 May 2025 15:50:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DBtwwE+k"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 42B6117BB6;
Sat, 31 May 2025 15:50:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748706642; cv=none; b=mLdTn/ZzlMhH4ZpdJ8XzvdS2sGXyO8woQk8glUZD21DDWR5VK90UeRprL/C8QAjMnrVZ0DW8o61lgwTcfX3i2L5JQV0UFA5ocD82ATExVXQfIWxNC2+LY09C7bH+Xen5kCn4DGQB1GlZU2ewrmiHefklNmqKbJUpkj9o/c9FijA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748706642; c=relaxed/simple;
bh=eI19CTNEOdH781i8gsxlfOonT+Lz1KC/cydNhSmDoFQ=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=TQuOWl/m/W8uo2qcAgC4TOcWd02kqbJFcOBaNpzLmDTos1JwnqJMsREiJTiH78XShfwHHeRLO/Y0zIr5OShflRVdJ5GQL5+KFqFm9auyqeWgVURmClawiuserw6RxREyygVHtoIDXZ7Ce+BlcivjeeujY3d5x3a7Pf/GmLI64RQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DBtwwE+k; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 08393C4CEE3;
Sat, 31 May 2025 15:50:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748706641;
bh=eI19CTNEOdH781i8gsxlfOonT+Lz1KC/cydNhSmDoFQ=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=DBtwwE+kYQHknxs+X6DNnCMF+j+ncLJtzpvuJWAAGXZ1XfEPud4DLMdf4tWt2o28X
mHxAfnw90M/hJGeQDdXn2FVilxn+0wBl9y3ldetLAhBkSto0py+16kdlXtoLECMDer
sQ6T5rCVjrhZSAoJAZLlcSbyK/tKXCD62N9t0WpabWAZVUc0NNcYUNtvbTz6dOOtcu
EO4cEsX5U9Qwk6BmbT/WXUq1h9nAHiz4BdeJlovgEHJ7UQns23rAIsJHRBSGO3QkeU
lv0fvDO7gMz4Ehq/BqUw15NlLVa0rO4aZQ7Yyd29AYKs9u8JgXlSqhNyS28hsG8mOf
3zQu2uN41H5IQ==
Date: Sat, 31 May 2025 16:50:30 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Marcelo Schmitt <marcelo.schmitt1@xxxxxxxxx>
Cc: Marcelo Schmitt <marcelo.schmitt@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-gpio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, lars@xxxxxxxxxx,
Michael.Hennerich@xxxxxxxxxx, dlechner@xxxxxxxxxxxx, nuno.sa@xxxxxxxxxx,
andy@xxxxxxxxxx, robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx,
linus.walleij@xxxxxxxxxx, brgl@xxxxxxxx
Subject: Re: [PATCH v3 01/10] dt-bindings: iio: adc: Add AD4170
Message-ID: <20250531165030.17916667@jic23-huawei>
In-Reply-To: <aDTkVFDNYeyIldBs@debian-BULLSEYE-live-builder-AMD64>
References: <cover.1747083143.git.marcelo.schmitt@xxxxxxxxxx>
<5fa867cff437c0c6d3f0122af823e1677a12d189.1747083143.git.marcelo.schmitt@xxxxxxxxxx>
<20250525111148.4ca96a55@jic23-huawei>
<aDTkVFDNYeyIldBs@debian-BULLSEYE-live-builder-AMD64>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 18:59:48 -0300
Marcelo Schmitt <marcelo.schmitt1@xxxxxxxxx> wrote:

> Hi Jonathan,
>
> I'm still working on the changes suggested for this set.
> Just to mention, I've updated the dt-binding to declare only channel nodes under
> the ADC node.
>
> ...
> > > + adi,sensor-type:
> > > + description: |
> > > + Type of sensor connected to the device. Depending on the sensor type
> > > + (weigh scale, RTD, or thermocouple) the values of sensor-node
> > > + properties have slightly different constraints. This property
> > > + specifies which particular external sensor is connected to the ADC so
> > > + the sensor-node properties can be properly parsed and verified. The
> > > + possible sensor types are:
> > > + 0: weigh scale;
> > > + 1: RTD;
> > > + 2: thermocouple.
> > > + $ref: /schemas/types.yaml#/definitions/uint8
> >
> > I think this should be an enum of strings. That will give us a clean
> > way to extend it for other sensor types in future.
> Ack
>
> ...
> > > +
> > > + interrupts:
> > > + maxItems: 1
> >
> > What if they are both wired? At that point shouldn't software
> > make up it's mind which to use?
>
> Not sure I understand the concern here. Is 'interrupt-names' property expected
> to precede 'interrupts' in dt-doc? For AD4170 and similar parts, the data
> ready signal (/RDY) is by default provided on the SDO line after the completion
> of a conversion. Alternatively, it can be provided on the DIG_AUX1 pin in
> which case the chip disables the RDY function on SDO. So, there can only be one
> data ready interrupt enabled at a time. Guess I'll add some description to make
> clear only one interrupt can be enabled.

DT is describing the wiring, not what should be enabled by the driver.

There is no need for it to restrict to 1 interrupt if someone has wired them
both that I can think of. In that circumstance the driver gets to decide
between the mess of shared SDO / dataready handling vs a nice
separate signal on dig_aux1

If both are wired to the host on appropriate pins, up to the driver to
decide what it wants. A driver may also only supports the
dig_aux1 combination or only the sdo combination and so just fail to load
if it isn't happy with the one the DT author thought mattered.
Providing both if that is what is wired, gives the flexibility to find
the right one.

>
> > > +
> > > + interrupt-names:
> > > + description:
> > > + Specify which pin should be configured as Data Ready interrupt.
> > > + enum:
> > > + - sdo
> > > + - dig_aux1
> > > + default: sdo
> > > +
>
> Thanks,
> Marcelo
>



Return-Path: <linux-kernel+bounces-669165-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D3C7841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:56:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 08FB117E1CA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:56:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6ED9B158A09;
Sat, 31 May 2025 15:56:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lWQZrisG"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 B19AA17BB6;
Sat, 31 May 2025 15:56:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748707004; cv=none; b=jr+MDq2JawBAzcDF0cRgkb/aG56T9oPNnern+kNmp5Kbt6DQuF9MuxW3acpW16QnYmezC8Ya7uK9qysY7raHKpTdHT7b1geUIzFJlTn7n5xVqkCOfslDkEplRxt5COtF8zaaocIhX0vwdhI3j7vJMdwt96QsLdmq1ucguCZ/AWY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748707004; c=relaxed/simple;
bh=Si0gaSTIfmA9UreI5SjdzlMFGHES65UvOtKJTsLJWeU=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=D+iGpWdtjCJ/it5MZVumjBOYmBGt+wxPSuhi1qekTx1g8/KBwIQN4CcH/yxypIXivhQZBrFRMxjE6AxKwYoEoSS6U7KMNY6RjQVQCs3MrQAE9ocCoyRGXtMNCJeTM81coYbQp/oALw2XobOMgFsieGmgXpPHGq7L01p1s2xA5+Q=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lWQZrisG; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E90EBC4CEE3;
Sat, 31 May 2025 15:56:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748707004;
bh=Si0gaSTIfmA9UreI5SjdzlMFGHES65UvOtKJTsLJWeU=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=lWQZrisGAesr6zhFA4NExGYhOrZS8k5bUecjEphb+vIBGYHPwTBeqB50DJHsFf6g4
wJxcUDzXyg1sxo6zg2VhlpzelUyteHsGQe+xpjCMwTNt6RAtOIMqj3U8BWjIr/DyUT
IPhro+M4iwUH/6LIylWdCUwzGsn0F9dLfWkPG2TYSh7RTMG47E+L3rAByuJ0r4H2IF
tDBBmefxYoGefboyx6ohp3VOOuFovzk7k2hrr1+Bv9p97h0Avkiix4mJTt/tQj0YUk
Sz2d7f0wxpd54jYj04AszohRxesb3wcEnk1uA7PKDsRxNm57yZq/br3R+EVNXAH0ok
sxQwY08AnAQkw==
Date: Sat, 31 May 2025 16:56:35 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx>
Cc: Nuno =?UTF-8?B?U8Oh?= <noname.nuno@xxxxxxxxx>, Chen Ni
<nichen@xxxxxxxxxxx>, <dlechner@xxxxxxxxxxxx>, <nuno.sa@xxxxxxxxxx>,
<andy@xxxxxxxxxx>, <mcoquelin.stm32@xxxxxxxxx>,
<alexandre.torgue@xxxxxxxxxxx>, <u.kleine-koenig@xxxxxxxxxxxx>,
<tglx@xxxxxxxxxxxxx>, <robh@xxxxxxxxxx>, <jirislaby@xxxxxxxxxx>,
<linux-iio@xxxxxxxxxxxxxxx>, <linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>,
<linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>,
Olivier Moysan <olivier.moysan@xxxxxxxxxxx>
Subject: Re: [PATCH v2] iio: adc: stm32-adc: Fix race in installing chained
IRQ handler
Message-ID: <20250531165635.262839dc@jic23-huawei>
In-Reply-To: <ab75c390-b172-4dbb-b46b-8cbf64d4600a@xxxxxxxxxxx>
References: <20250515083101.3811350-1-nichen@xxxxxxxxxxx>
<229cf78caaa7e9f2bb4cfa62c019acd51a1cd684.camel@xxxxxxxxx>
<20250525120703.5dd89fc2@jic23-huawei>
<ab75c390-b172-4dbb-b46b-8cbf64d4600a@xxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 17:48:31 +0200
Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx> wrote:

> On 5/25/25 13:07, Jonathan Cameron wrote:
> > On Thu, 15 May 2025 11:26:56 +0100
> > Nuno S=C3=A1 <noname.nuno@xxxxxxxxx> wrote:
> > =20
> >> On Thu, 2025-05-15 at 16:31 +0800, Chen Ni wrote: =20
> >>> Fix a race where a pending interrupt could be received and the handler
> >>> called before the handler's data has been setup, by converting to
> >>> irq_set_chained_handler_and_data().
> >>>
> >>> Fixes: d58c67d1d851 ("iio: adc: stm32-adc: add support for STM32MP1")
> >>> Signed-off-by: Chen Ni <nichen@xxxxxxxxxxx>
> >>> --- =20
> >>
> >> Reviewed-by: Nuno S=C3=A1 <nuno.sa@xxxxxxxxxx> =20
> > Looks good to me and I've queued it up for after rc1. If any
> > ST folk have time to take a look that would be great. =20
>=20
> Hi Jonathan,
>=20
> One minor comment at my end, not sure if that changes a lot...
> This could be a fix for the older commit:
> 1add69880240 ("iio: adc: Add support for STM32 ADC core")

Agreed. I've tweaked the message. It won't apply cleanly all that way
but at least we flagged it for anyone who cares to backport past the code
movement in the Fixes tag Chen used.

>=20
> Apart from that, you can add my:
> Tested-by: Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx>
> Reviewed-by: Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx>
Added.
>=20
> BR,
> Fabrice
>=20
> >=20
> > Jonathan
> > =20
> >> =20
> >>> Changelog:
> >>>
> >>> v1 -> v2:
> >>>
> >>> 1. Add Fixes tag.
> >>> ---
> >>> =C2=A0drivers/iio/adc/stm32-adc-core.c | 7 +++----
> >>> =C2=A01 file changed, 3 insertions(+), 4 deletions(-)
> >>>
> >>> diff --git a/drivers/iio/adc/stm32-adc-core.c b/drivers/iio/adc/stm32=
-adc-
> >>> core.c
> >>> index bd3458965bff..21c04a98b3b6 100644
> >>> --- a/drivers/iio/adc/stm32-adc-core.c
> >>> +++ b/drivers/iio/adc/stm32-adc-core.c
> >>> @@ -430,10 +430,9 @@ static int stm32_adc_irq_probe(struct platform_d=
evice
> >>> *pdev,
> >>> =C2=A0 return -ENOMEM;
> >>> =C2=A0 }
> >>> =C2=A0
> >>> - for (i =3D 0; i < priv->cfg->num_irqs; i++) {
> >>> - irq_set_chained_handler(priv->irq[i], stm32_adc_irq_handler);
> >>> - irq_set_handler_data(priv->irq[i], priv);
> >>> - }
> >>> + for (i =3D 0; i < priv->cfg->num_irqs; i++)
> >>> + irq_set_chained_handler_and_data(priv->irq[i],
> >>> + stm32_adc_irq_handler,
> >>> priv);
> >>> =C2=A0
> >>> =C2=A0 return 0;
> >>> =C2=A0} =20
> > =20
>=20



Return-Path: <linux-kernel+bounces-669166-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A4DC941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:05:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E179A189E811
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:05:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2225F1624DF;
Sat, 31 May 2025 16:04:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bb2T6rnb"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 547F2DF42;
Sat, 31 May 2025 16:04:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748707498; cv=none; b=acNzAqh96T3fA/juWqrfWC0noaypLd1LVjD0FiNT/C3lVHvZw84WsZH7HTYXHmLd9atXgQ5a2xIL+Wn+zMJnvkTCSaaSGhF8V5Xx1GF/KxXkmaJReDT/p25+9OpdcVXMhaFDIUV8eyJzjk+yzYpwu4EeKizVJSNGpYcnbCxeB94=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748707498; c=relaxed/simple;
bh=QwnqlQc8eO59QC1iazn3MfJicRUUxiL9Sp8eFgFfSYc=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=rjQfSp50L2bCRrrk9RQZQt9cN0VSJN2rKIxDUGxmUIxtxKRy0xMaiDAc/ce7J3CzD+yNir7fxIDAUqU1PM8jFcUNzMbHw/7L6FPbw0l2HF8CPN8sxXQ3ARgl18d2+WFKi1XkuH94uWXDHLpW4MHXlKYi+JfIZVtVU83eHgYnFq4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bb2T6rnb; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E52BFC4CEE3;
Sat, 31 May 2025 16:04:52 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748707497;
bh=QwnqlQc8eO59QC1iazn3MfJicRUUxiL9Sp8eFgFfSYc=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=bb2T6rnbeL11klfDAZkf76s7ljB1hTCcQ9j3PkpMyAug+lI/60Lmy8ihrTP6Z6gqL
crMZxzP/pl/9PARi3sQwkrF7KKxxkI2GLt9t/+zP5qkm22//tyHvGYeI8LqkA8Aahl
jq5+DlrDPZ2FfOZkJ7nMe7quG78IA37maZajH09xDuPWY8hvV/hFGGvZgurFdDjyXo
e9sQqvQA/zIUSfnbe2wcmX+k9/aaHMoe8HAYbhtxKRY10jHMR60Rl29EFkhoS349nA
cOT9nYWhNEFEyPzoiNB85RN7/63uC3SK6vPmDz2hvT/2K2hIy4Pq6haf1ZpUK0WxMr
oe+jSCxMtipOg==
Date: Sat, 31 May 2025 17:04:48 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
Cc: Nuno Sa <nuno.sa@xxxxxxxxxx>, Lars-Peter Clausen <lars@xxxxxxxxxx>,
Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>, David Lechner
<dlechner@xxxxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>, Rob Herring
<robh@xxxxxxxxxx>, Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley
<conor+dt@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Jonathan Cameron
<Jonathan.Cameron@xxxxxxxxxx>, devicetree@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v2] dt-bindings: iio: adc: adi,ad7606: fix dt_schema
validation warning
Message-ID: <20250531170448.2be25330@jic23-huawei>
In-Reply-To: <20250526-wip-bl-ad7606-dtschema-fixes-v2-1-9bd56d039489@xxxxxxxxxxxx>
References: <20250526-wip-bl-ad7606-dtschema-fixes-v2-1-9bd56d039489@xxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 15:19:08 +0200
Angelo Dureghello <adureghello@xxxxxxxxxxxx> wrote:

> From: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
>
> Fix following dt_schema warning when offload is used:
>
> DTC [C] arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ad7606.dtb
> /home/angelo/dev-baylibre/linux-iio/arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ad7606.dtb: adc@0: 'oneOf' conditional failed, one must be fixed:
> 'interrupts' is a required property
> 'io-backends' is a required property
> from schema $id: http://devicetree.org/schemas/iio/adc/adi,ad7606.yaml#
>
> There isn't any reason that we couldn't have interrupts wired up at the
> same time we are using io-backends or SPI offload, so dropping off the
> related "oneOf" block entirely.
>
> Fixes: ccf8c3f106a2 ("dt-bindings: iio: adc: adi,ad7606: add SPI offload properties")
That ID seems to be wrong. Probably down to the messy rebase I had to do pre pull
request. Fixed up to be 81fe5529e812

Applied to the fixes-togreg-for-6.16 branch that will become fixes-togreg after rc1
is available to rebase on.

Thanks,

Jonathan

> Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
> ---
> Fix dt_schema validation warning.
>
> Link: https://lore.kernel.org/linux-iio/20250408-wip-bl-ad3552r-fixes-v4-0-b33c0264bd78@xxxxxxxxxxxx
> ---
> Changes in v2:
> - Change removing the related oneOf block.
> - Link to v1: https://lore.kernel.org/r/20250523-wip-bl-ad7606-dtschema-fixes-v1-1-d9147fb2a199@xxxxxxxxxxxx
> ---
> Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
> index 29f12d650442b8ff2eb455306ce59a0e87867ddd..1a5209139e1338f803c66ad2b4d63ad53cc11d96 100644
> --- a/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
> +++ b/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
> @@ -223,12 +223,6 @@ allOf:
> - required:
> - pwms
>
> - - oneOf:
> - - required:
> - - interrupts
> - - required:
> - - io-backends
> -
> - if:
> properties:
> compatible:
>
> ---
> base-commit: 3964c6e5877f054497ffccc7d00f8f7add307d0d
> change-id: 20250523-wip-bl-ad7606-dtschema-fixes-5e6ab342e043
>
> Best regards,



Return-Path: <linux-kernel+bounces-669167-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id F1E8041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:07:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 1F569189ED81
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:07:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id ADD42170A23;
Sat, 31 May 2025 16:07:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="O9wFa3tv"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E77D7DF42;
Sat, 31 May 2025 16:07:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748707655; cv=none; b=oV26+ai0X0KKLllNIq/lp+rW8PkntTkh9DfTBLbCeiiEYlaKsuqe4m8WqbUXlx5KTZteZWvmhro6pBwur4t6d2lMykmX9H2Mu/fCdeDBfqv1zHUmZtOJV+XgQU9acUm4e29PoraYneY6C43BtKcXzWixRDOL6JwacjTZ/WC5D78=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748707655; c=relaxed/simple;
bh=1FC4MvVxMQ36EngaozUWlCkIiO99uwphbqFgEWrruRk=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=eoJpfd/l4xPZRXSvwL3Ep9J+49oHjML0jWfmvscZbQQ0mRaCEdLv88xF47UeWQcl8NnYHmlufLo/b65BJKRcV0VhBiQsImUUtcDA6TlJHmMcQmCNusUVtB41/wAG88GFThavyzhro1WVxMSziAOkcAu1XHErgB96s5CN09YOuVM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=O9wFa3tv; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 19746C4CEE3;
Sat, 31 May 2025 16:07:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748707654;
bh=1FC4MvVxMQ36EngaozUWlCkIiO99uwphbqFgEWrruRk=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=O9wFa3tvHznaSClIqfzBwnBZqBdeA9+lYZOHWXLSLE5sjUWAfFBs2dyOj+I6LHDck
prTql7KGRScldruTcEDeqD3in9ZgHaTWsmRbHoCpCoNGljDs8Yzh/kKPMb6dIRqBsN
7swqrhUqBwlYhxMFNU0wSIkGFMq58KzHPyxVAsE2Cq3akxBrichUenH4bCxK4jrXMc
NBJ/RpdH4bcXsfTjvR84N58ZiaoYNcwDJr98xycIcSvVsUqWtZtRTXBjx4CV56yIVa
L9p0Fz3hD0sr9VAMYR5g3w5RY94oxU2wuEfj4ANxOaQgRSLqmE43tIiNx48wEUfGLJ
3xe3JICeiA7hg==
Date: Sat, 31 May 2025 17:07:24 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>, Lars-Peter Clausen
<lars@xxxxxxxxxx>, Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>, Rob
Herring <robh@xxxxxxxxxx>, Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor
Dooley <conor+dt@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v7 1/6] Documentation: ABI: IIO: add calibconv_delay
documentation
Message-ID: <20250531170724.12373532@jic23-huawei>
In-Reply-To: <20250526-wip-bl-ad7606-calibration-v7-1-b487022ce199@xxxxxxxxxxxx>
References: <20250526-wip-bl-ad7606-calibration-v7-0-b487022ce199@xxxxxxxxxxxx>
<20250526-wip-bl-ad7606-calibration-v7-1-b487022ce199@xxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 12:03:16 +0200
Angelo Dureghello <adureghello@xxxxxxxxxxxx> wrote:

> From: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
>
> Add new IIO "convdelay" documentation.
That's not what the patch title says... It's called calibconv_delay still
there.

I'd fix that and version number, but looks like you are going to be doing
a v8 anyway based on David's feedback on patch 6.

Jonathan

>
> The ad7606 implements a phase calibation feature, in nanoseconds.
> Being this a time delay, using the convdelay suffix.
>
> Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
> ---
> Documentation/ABI/testing/sysfs-bus-iio | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
> index ef52c427a015cf47bb9847782e13afbee01e9f31..7e59cbd5acb85fd0909c1d56f9d76a84933d418a 100644
> --- a/Documentation/ABI/testing/sysfs-bus-iio
> +++ b/Documentation/ABI/testing/sysfs-bus-iio
> @@ -559,6 +559,30 @@ Description:
> - a small discrete set of values like "0 2 4 6 8"
> - a range specified as "[min step max]"
>
> +What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_convdelay
> +KernelVersion: 6.16
> +Contact: linux-iio@xxxxxxxxxxxxxxx
> +Description:
> + Delay of start of conversion from common reference point shared
> + by all channels. Can be writable when used to compensate for
> + delay variation introduced by external filters feeding a
> + simultaneous sampling ADC.
> +
> + E.g., for the ad7606 ADC series, this value is intended as a
> + configurable time delay in seconds, to correct delay introduced
> + by an optional external filtering circuit.
> +
> +What: /sys/bus/iio/devices/iio:deviceX/in_voltageY_convdelay_available
> +KernelVersion: 6.16
> +Contact: linux-iio@xxxxxxxxxxxxxxx
> +Description:
> + Available values of convdelay. Maybe expressed as:
> +
> + - a range specified as "[min step max]"
> +
> + If shared across all channels, <type>_convdelay_available
> + is used.
> +
> What: /sys/bus/iio/devices/iio:deviceX/in_accel_x_calibscale
> What: /sys/bus/iio/devices/iio:deviceX/in_accel_y_calibscale
> What: /sys/bus/iio/devices/iio:deviceX/in_accel_z_calibscale
>



Return-Path: <linux-kernel+bounces-669168-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0E8C041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:09:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2FFAF9E2B55
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:09:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BD34A1714AC;
Sat, 31 May 2025 16:09:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Prg4Dp2v"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 0279A17E0;
Sat, 31 May 2025 16:09:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748707766; cv=none; b=lzyFGqRsXEoGMDxV1KGT6mq4DKUjPzBfpIai8YutmdH6aHHVymv3h+Q8F12JH/QhAfXEag9JVRxRRyaLiVMi4yAVXejK3H75up1Ddae+s3D4jCLYmHJrbwywV7/QAdiPw34CC6AIVLDkHiVB9Wfazt0BL587GaFZBxodAMmEYBU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748707766; c=relaxed/simple;
bh=65lTG7OakIavgaG/FQQzB/iJVoTPCcemuDT8rAnL5KI=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=r/UG0l91ZUkzyfBeR3Gabscv0LsbSIpc4hn8FCHFa0QRlVj/lhyeys1X9znXY1tvggBdC1yl2n465cj6gkjIJ5LSMLd8TYZ/Dbe5Ko9ABpRbCglfY+GwdbJfaz5HlCJSQ8f8lPdgWxzrfOgjnuBEStq/NUxzYlgmcXlAgoniMzk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Prg4Dp2v; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 37027C4CEE3;
Sat, 31 May 2025 16:09:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748707765;
bh=65lTG7OakIavgaG/FQQzB/iJVoTPCcemuDT8rAnL5KI=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=Prg4Dp2vuL6U3ibgpHcWV5PSEYg/8SgVec1MsB6MMQ+h1fjDqjt66SyedBZ+LK+A6
1EjgVH5gQsZ61qkYv8xN/+fyMY65Q7nHnWypJRA0BzQz4cmVpPU7yYxTrjt/sSKT1j
0H3z00II3RSw/wlJpVL1loKaiBZ3feHkyb0JuKrBHaSru7zpOlD3rapWimtxA1yfbE
xPms1W3ztvNYRyJLeZua9YWf6aeJGhdDcMN3OEJrQKwSKCg/TIx8YLPPjaRQxpyEq9
S9hDl/Hh75g5hCR72TcyD18Ius9OL1ke16c/JfeBPNPSJM/hZj5JvN1kaddMk39NMs
MKy6hpLiAK1aQ==
Date: Sat, 31 May 2025 17:09:16 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>, Lars-Peter Clausen
<lars@xxxxxxxxxx>, Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>, Rob
Herring <robh@xxxxxxxxxx>, Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor
Dooley <conor+dt@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v7 3/6] iio: adc: ad7606: add offset and phase
calibration support
Message-ID: <20250531170917.56210a5c@jic23-huawei>
In-Reply-To: <20250526-wip-bl-ad7606-calibration-v7-3-b487022ce199@xxxxxxxxxxxx>
References: <20250526-wip-bl-ad7606-calibration-v7-0-b487022ce199@xxxxxxxxxxxx>
<20250526-wip-bl-ad7606-calibration-v7-3-b487022ce199@xxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 12:03:18 +0200
Angelo Dureghello <adureghello@xxxxxxxxxxxx> wrote:

> From: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
>=20
> Add support for offset and phase calibration, only for
> devices that support software mode, that are:

Really trivial but wrap nearer 75 chars.

>=20
> ad7606b
> ad7606c-16
> ad7606c-18
>=20
> Tested-by: David Lechner <dlechner@xxxxxxxxxxxx>
> Reviewed-by: Nuno S=C3=A1 <nuno.sa@xxxxxxxxxx>
> Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx>




Return-Path: <linux-kernel+bounces-669169-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6D3CA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:15:43 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 7B71118945C5
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:15:56 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6E4E3178CF8;
Sat, 31 May 2025 16:15:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P8cw/xQc"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 AD5C515E96;
Sat, 31 May 2025 16:15:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748708134; cv=none; b=WsIS5jXpi0gfybGWvNigJYYWa8mY3nRnNVTP7ib8Qjkt2TjOOzEjY1ImvUYBOcFzJTyftpJMn2zakdy3jWsU+wrpoEhfqM/jxuWDJLt9Iuul7R8U84pUY6f+wnOUpxFvOtA54kPlMyBVaaTNTAsvwMF2JTMS9/iyAK3KfWkcXtI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748708134; c=relaxed/simple;
bh=triALQDZdrI8N+OpvJBoFVb40OEfCWpbOrTjgR0NXnA=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=HogDLR2SELeQYkJmuA40kysHyYbZdZsh2bpYbhml4TES+0sz0Ej9xAm2HfFbopOkM4mzygmyTbWBcX5cEetIG/AkxO1acfjsEsq054H7Tou27TCbhxFcdmKocPIg7gX89CUN+3gAQ4AEGcQ/8ejNuvo3DjdGTxZzXHQar0jqayQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P8cw/xQc; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D8DF5C4CEE3;
Sat, 31 May 2025 16:15:30 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748708134;
bh=triALQDZdrI8N+OpvJBoFVb40OEfCWpbOrTjgR0NXnA=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=P8cw/xQcV401k5Qj6Q11ydVwR0q0Xk/4pK9q22OSv79CcDQBV4k0L7TmMXYX9LKwK
6mPYCwT/eFmtnTtmWab4ybLK4McAmUWUMHU7qVlsp+hQmfQgJmDJ7PAYRpD+87KTLR
arf/HsvGUtGkiZr7brhsibduwaZ3wtIay3fgumh19vXxZqp+x2GRihfc13F7W/teg2
KxMKOulwiFQ9Uy2rn617OZYqDaWL4DUr4tf70bFZFtfT4Gy/MjAI2yKFWDE3wwtSYZ
HEaJy/l8KJ4k2Hl4qI9xXZGTPQvMnUS+57LfhaqtTsNM0I3kJzE7sxT8KBW2R+wBMJ
NL7r0SHWSf7MQ==
Date: Sat, 31 May 2025 17:15:27 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: David Lechner <dlechner@xxxxxxxxxxxx>
Cc: Angelo Dureghello <adureghello@xxxxxxxxxxxx>, Lars-Peter Clausen
<lars@xxxxxxxxxx>, Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>, Nuno
=?UTF-8?B?U8Oh?= <nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v2 2/2] iio: adc: ad7606: add enabling of optional
Vrefin voltage
Message-ID: <20250531171527.2b12b2a2@jic23-huawei>
In-Reply-To: <73be8e49-3130-4dcd-9286-689ef55badd9@xxxxxxxxxxxx>
References: <20250530-wip-bl-ad7606-reference-voltages-v2-0-d5e1ad7e6f14@xxxxxxxxxxxx>
<20250530-wip-bl-ad7606-reference-voltages-v2-2-d5e1ad7e6f14@xxxxxxxxxxxx>
<73be8e49-3130-4dcd-9286-689ef55badd9@xxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 10:39:27 -0500
David Lechner <dlechner@xxxxxxxxxxxx> wrote:

> On 5/30/25 9:27 AM, Angelo Dureghello wrote:
> > From: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
> >
> > Add optional refin voltage enabling. The property "refin-supply" is
> > already available and optional in the current fdt dt_schema.
> >
> > Signed-off-by: Angelo Dureghello <adureghello@xxxxxxxxxxxx>
Tweaked and applied.

I also added:

Note that the driver does not need to take any actions if the supply
is not present because a pin strap is used to change the behavior
of the device if an external reference is connected.

To the description

(applied patch 1 as well)

> > ---
> > drivers/iio/adc/ad7606.c | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/drivers/iio/adc/ad7606.c b/drivers/iio/adc/ad7606.c
> > index 3bbe9c05b5edbc11e8016c995c6ab64104836e7b..4fd9638eb6e56f800c7c97425e45e04f269e3df7 100644
> > --- a/drivers/iio/adc/ad7606.c
> > +++ b/drivers/iio/adc/ad7606.c
> > @@ -1335,6 +1335,11 @@ int ad7606_probe(struct device *dev, int irq, void __iomem *base_address,
> > return dev_err_probe(dev, ret,
> > "Failed to enable Vdrive supply\n");
> >
> > + ret = devm_regulator_get_enable_optional(dev, "refin");
> > + if (ret && ret != -ENODEV)
> > + return dev_err_probe(dev, ret,
> > + "failed to enable REFIN voltage\n");
>
> s/failed/Failed/
> s/voltage/supply/
>
> to be consistent with AVcc and Vdrive messages
>
> > +
> > st->chip_info = chip_info;
> >
> > if (st->chip_info->oversampling_num) {
> >
>



Return-Path: <linux-kernel+bounces-669170-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1956841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:18:53 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id B67F69E1FDC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:18:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A36917A2FC;
Sat, 31 May 2025 16:18:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IVSQ+vYl"
Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4DEC117E0;
Sat, 31 May 2025 16:18:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748708323; cv=none; b=RBsj6Kts9bANKdLiVW/Q+SLOsd8JciFW1qF2DcQDPhS06QvUrm9rY5dWAZ4Dvf2NRXHHEDEcG6elrn/j4Qx1baoID8kWDPk9hwFX7MxuERIGsRqLvFeH7FxxgjVh7OdjK2Kaln1OT8ZOwNpXgnZndaTiz2Lm2Rm3vxIwJU0YwuU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748708323; c=relaxed/simple;
bh=pWx0JtByz5bQLz9/8RlWnYuB53qfTidcpdVzrM66O4A=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=pQGbqLZjrZ8V+ZfcsD8ijrw8gCk8ads0qyCrvtHnvazUFRCNvhzfCaPU0UfeYevB3QqVAXAxBfU1evobWcNgYKNkvDXirLMWlXALdCN8EHu0wBgu+rBomo9L61BiBGo+EpksHv9gAKuO+fx5ij8rHKi3yx+i7yTgGr0+u7UFSvY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IVSQ+vYl; arc=none smtp.client-ip=209.85.221.49
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-3a4ebfaa623so415002f8f.1;
Sat, 31 May 2025 09:18:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748708319; x=1749313119; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=7amG+fgm0XQ6pvWnBFAM72MHD6qJuia+zLfGed4C86Q=;
b=IVSQ+vYlcFg3eyhB+sCJuyWO+BE4vtXbGja140pTM/IShoctUALwd/roFZggtRMgMB
tXnRvwo02iM7iQfi0ryO4Vo2tIIM/SZIfaG4a+foU9mgMdwrQ9Ar66yEEelq1/O6+p79
i/qgx3lZXTzMmw5NbzUrksee9Jhzl/e+j1za0lysgLmylIWHlebNePTwWI4F4GaYs6JE
2JpJy437F1Tw8K0Qq3Htje8ILSop80yQtnUM5weSVx3iVc8GKACAdLC0d+vBxks3uy7k
p3YSt+4N9dnAUMVpYI0AkQoucFjQ0EqD6yBogfBNDBkpz86pFRKj6JuWAcXcur6nNwJG
UQUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748708319; x=1749313119;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=7amG+fgm0XQ6pvWnBFAM72MHD6qJuia+zLfGed4C86Q=;
b=FAY3yFSScX2ei4PzEAct8OkdmRxFa5XH40bTwYuQdhXD5CPmI93++5xDSA0dVGvpEd
OB1yNEMRzfkLFhE6QLdKebOHgyw5D6js7mlLEmWhLjESnEkiaXeZxZ5JjuqPs4wOYAqz
gg/4edWww5LhEJvtYiAA9Y4OMFeY3k5P7W4/W0ZvIxM81kZbDsQt1mptSKwgr43HEeUs
GtY31r51w5jVAMDbqb6iMoplNaF1QDyvJor3RXRKP3Xv4hGGVv4XcxN8jIc9bnlJgodg
6U03bBpHZyV3KF3ISoGcKXVrWfOVR3axOha2p2VHnNI48Hr57aiXcWrnG+IQRv97GR98
AytA==
X-Forwarded-Encrypted: i=1; AJvYcCWfMizWRoI86dxSY0fm3WIWX3iAVYnKDAoTfHxlOgJ87dPAc4sf6pcz9S4bHdc1bl0xDdc=@vger.kernel.org, AJvYcCXbz7ZdCyo1c9EAhePWV+nMBm7p4L/2irOx5jv3gi3HP0zbX5qf6E8lNctasMOP/e3pdjb5uGhmok0vyfJF@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yz16GcTPR/kOQw3s/BQCZNpydtY1RKsZ0PsxASo0FjsoNwC0eTq
kgBo0GD9cPsMrAMTgnNsiGar0HO1lJZ4SHtKbLkWv+RFSETsMbfa5VM=
X-Gm-Gg: ASbGncududfVtxTxOZBmgJlBFnuHP7xhrtp3lSdXdCfgGvJD6eZd3c51dthBIVfQGoU
9XS7WbIp6d2k2WVxLNLYmPBuThhPHJUnH0cJDj0xDpU1n3B4K6xX5/KJtMcJ43hz61jOoccPvPy
pfr2CUmN95SRXAdeBHzsMOzpMUYP9sNK1IU4kJ++yezbPOjhEXYnMq8RrOVYs9RZq45vu2sGz5m
HrOSoytR3oVgELCKzPfkcBr///JNIKE4N7OIrHIB3XV7Yv+T/7wRR/byXmpLkzFSaXb+5Wm230Y
hsXtEfZnmpcp7+LABhJ3qppzDTS6xuRU7tvezR8oDtoZjMkdFCztP6AftI7K4i+oJIJ/sQxl6ZZ
NHcIQLfp7M93P44k=
X-Google-Smtp-Source: AGHT+IF9bBR1PKckeUO+MJfzEpp1rgDSET7GZgiUK6KY0LN83z9QYZ1kxXD3RKW2wAP2M4isY2TISA==
X-Received: by 2002:a5d:64ed:0:b0:3a4:e8c8:fba1 with SMTP id ffacd0b85a97d-3a4f897ee54mr1918196f8f.10.1748708319258;
Sat, 31 May 2025 09:18:39 -0700 (PDT)
Received: from localhost (131.red-80-39-31.staticip.rima-tde.net. [80.39.31.131])
by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a4efe73f22sm8367944f8f.43.2025.05.31.09.18.37
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 09:18:37 -0700 (PDT)
From: Xose Vazquez Perez <xose.vazquez@xxxxxxxxx>
To:
Cc: Xose Vazquez Perez <xose.vazquez@xxxxxxxxx>,
Kirti Wankhede <kwankhede@xxxxxxxxxx>,
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>,
KVM ML <kvm@xxxxxxxxxxxxxxx>,
KERNEL ML <linux-kernel@xxxxxxxxxxxxxxx>
Subject: [PATCH] samples: vfio-mdev: mtty.c: delete MODULE_VERSION
Date: Sat, 31 May 2025 18:18:36 +0200
Message-ID: <20250531161836.102346-1-xose.vazquez@xxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Patchwork-Bot: notify
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_SBL_CSS,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=no
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Reminiscence of ancient times when modules were developed outside the kernel.

Cc: Kirti Wankhede <kwankhede@xxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: KVM ML <kvm@xxxxxxxxxxxxxxx>
Cc: KERNEL ML <linux-kernel@xxxxxxxxxxxxxxx>
---
samples/vfio-mdev/mtty.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/samples/vfio-mdev/mtty.c b/samples/vfio-mdev/mtty.c
index 59eefe2fed10..f9f7472516c9 100644
--- a/samples/vfio-mdev/mtty.c
+++ b/samples/vfio-mdev/mtty.c
@@ -35,7 +35,6 @@
* #defines
*/

-#define VERSION_STRING "0.1"
#define DRIVER_AUTHOR "NVIDIA Corporation"

#define MTTY_CLASS_NAME "mtty"
@@ -2057,5 +2056,4 @@ module_exit(mtty_dev_exit)

MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("Test driver that simulate serial port over PCI");
-MODULE_VERSION(VERSION_STRING);
MODULE_AUTHOR(DRIVER_AUTHOR);
--
2.49.0



Return-Path: <linux-kernel+bounces-669171-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4C81D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:19:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id F1BF79E3D72
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:18:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 635B418A6A9;
Sat, 31 May 2025 16:18:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="W+CRmwRm"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 9F02117A31D;
Sat, 31 May 2025 16:18:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748708324; cv=none; b=DSwXZWzekZb2ISc88T7+esSANWodto0QUkXF4bcpGpVTXVOQ49vdBhw02/+FvuacqTzk1eOUz7VnjA3drSMCEnJQFrG1wxiPyeNtj+jpe2khPmqNlNcDHpGmn81ejld41dxLyvCivMFJENYFOXuftnZepnU8zVqTVibs8jfDoP0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748708324; c=relaxed/simple;
bh=6XW6rvHYYe6NmPi1aP+xp49GhLfblEpiI49g8P2fQCo=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=dbc01hiSYuyMcEuDYY3PmblwFW6dzogW42UMgxtlNIxRUa22qLNcRy/THk6cZDr9KY6RNBU0LXnseXwPVbyQxVUQCwOILZLhQG0PqneUToLKVhBHUZ1FfXKjPlWmubwHSdVlvUK6K1eLD9veDT45X/S7rTCPE+T5qCJJ/y8YNwA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W+CRmwRm; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 83D69C4CEE3;
Sat, 31 May 2025 16:18:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748708324;
bh=6XW6rvHYYe6NmPi1aP+xp49GhLfblEpiI49g8P2fQCo=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=W+CRmwRmFU8uaIsjGDgRT3CVvlci4orRZbUsCVLLv/nq+AVeNNNXsXNA32r+/UoLr
leYRBoJYCcVYBNrUO2eQ/u5nNwemPFAOtf12IdRAZZqFAtdFg2oHc5juFotn7OZUXI
7rSwyC8ui515g9fTbBUmsKJKK954HwLPS6qVp8ebF7gJIqXU2AbDrFkUkNnp/BZOYk
K3FsuRC88S+mQuzUID9CbeclTTtz9PV0okK+Z0jOJYJPzcLeFYK8UHxb3UazFy5MLl
27Mt8gc1pcU6dOjPM8sQwY9+PK8k2HfCM7+2T6ugxAnPpRaU9igsmcgNwYflAcm8mD
9AFu3YnX7iWEA==
Date: Sat, 31 May 2025 17:18:37 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: David Lechner <dlechner@xxxxxxxxxxxx>
Cc: Michael Hennerich <Michael.Hennerich@xxxxxxxxxx>, Angelo Dureghello
<adureghello@xxxxxxxxxxxx>, Guillaume Stols <gstols@xxxxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
stable@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v2] iio: adc: adi-axi-adc: fix ad7606_bus_reg_read()
Message-ID: <20250531171837.1490051a@jic23-huawei>
In-Reply-To: <20250530-iio-adc-adi-axi-adc-fix-ad7606_bus_reg_read-v2-1-ad2dfc0694ce@xxxxxxxxxxxx>
References: <20250530-iio-adc-adi-axi-adc-fix-ad7606_bus_reg_read-v2-1-ad2dfc0694ce@xxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 16:50:14 -0500
David Lechner <dlechner@xxxxxxxxxxxx> wrote:

> Mask the value read before returning it. The value read over the
> parallel bus via the AXI ADC IP block contains both the address and
> the data, but callers expect val to only contain the data.
>
> axi_adc_raw_write() takes a u32 parameter, so addr was the wrong type.
> This wasn't causing any issues but is corrected anyway since we are
> touching the same line to add a new variable.
>
> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: 79c47485e438 ("iio: adc: adi-axi-adc: add support for AD7606 register writing")
> Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx>
I've applied this to my temporary fixes-togreg-for-6.16 branch for now.
That will get rebased on rc1 once available. As such I'm fine adding
tags or indeed dropping it again if others have feedback!

Jonathan

> ---
> Changes in v2:
> - Use ADI_AXI_REG_VALUE_MASK instead of hard-coding 0xFF.
> - Introduce local variable and use FIELD_PREP() instead of modifying val.
> - Link to v1: https://lore.kernel.org/r/20250530-iio-adc-adi-axi-adc-fix-ad7606_bus_reg_read-v1-1-ce8f7cb4d663@xxxxxxxxxxxx
> ---
> drivers/iio/adc/adi-axi-adc.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/iio/adc/adi-axi-adc.c b/drivers/iio/adc/adi-axi-adc.c
> index cf942c043457ccea49207c3900153ee371b3774f..fc745297bcb82cf2cf7f30c7fcf9bba2d861a48c 100644
> --- a/drivers/iio/adc/adi-axi-adc.c
> +++ b/drivers/iio/adc/adi-axi-adc.c
> @@ -445,7 +445,7 @@ static int axi_adc_raw_read(struct iio_backend *back, u32 *val)
> static int ad7606_bus_reg_read(struct iio_backend *back, u32 reg, u32 *val)
> {
> struct adi_axi_adc_state *st = iio_backend_get_priv(back);
> - int addr;
> + u32 addr, reg_val;
>
> guard(mutex)(&st->lock);
>
> @@ -455,7 +455,9 @@ static int ad7606_bus_reg_read(struct iio_backend *back, u32 reg, u32 *val)
> */
> addr = FIELD_PREP(ADI_AXI_REG_ADDRESS_MASK, reg) | ADI_AXI_REG_READ_BIT;
> axi_adc_raw_write(back, addr);
> - axi_adc_raw_read(back, val);
> + axi_adc_raw_read(back, &reg_val);
> +
> + *val = FIELD_GET(ADI_AXI_REG_VALUE_MASK, reg_val);
>
> /* Write 0x0 on the bus to get back to ADC mode */
> axi_adc_raw_write(back, 0);
>
> ---
> base-commit: 7cdfbc0113d087348b8e65dd79276d0f57b89a10
> change-id: 20250530-iio-adc-adi-axi-adc-fix-ad7606_bus_reg_read-f2bbb503db8b
>
> Best regards,



Return-Path: <linux-kernel+bounces-669172-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B668D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:20:17 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 065D51899D5D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:20:28 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A7E4618858C;
Sat, 31 May 2025 16:20:04 +0000 (UTC)
Received: from mail-il1-f200.google.com (mail-il1-f200.google.com [209.85.166.200])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C688222094
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:20:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.200
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748708404; cv=none; b=HfH4pGQG2kA4mD7tmTkNE7eQXCVcmmjU/0HXOxhS8L3mHI79de4kSmfQ+52uZEMsxq9D00uZUlRLG3blMnH4isILIPczTGzWGAp32Vrj5r0gXE8lL8HSZ0g1REHKhEa+jtlaQ/5mTTdLxf8IH/g/jiBxqFCBXnoNW7WYLqbXeAo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748708404; c=relaxed/simple;
bh=sgPA9Q230YlwYNsgLsUAGT+EIJ3MJXCV8CkuV+njEC8=;
h=MIME-Version:Date:In-Reply-To:Message-ID:Subject:From:To:
Content-Type; b=h++K/4vpIsvYxikqgHRuSKSL0BaOQGLUGXCSsWkLQB3Eiq/92MlvaQXyNMwlvfLdB5/qZiUtnC1q916U6noZAfNnIkjUDcKI2mjjyLRZcVcwOY+JsN7HXhc8/HCfnTKA3WbX/Q8O+ncaNMufKhF6h2MV+yZaWBqhIorK4Thk9KQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.200
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f200.google.com with SMTP id e9e14a558f8ab-3dc9cd70437so37060045ab.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 09:20:02 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748708402; x=1749313202;
h=to:from:subject:message-id:in-reply-to:date:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=jOT3+3dtKmIMbjiKp4WKPYIYOuy19lzYdhT8ETpxuvo=;
b=qVeGp8fJwHgX4Xc+8c0MNs9aM8bT/eVBzO0sTE9uUCKnRpK4qXzvWy09HalvurNBOp
CXILtdgktLlxken89yQ7eNV33Zd6O661Edum5Aii0wLkyJfEDZpCJE1Xhib/F5mKXc53
HlBYwtXWgIH9d8QfHQqVqMAxakhHb5JUiesmg+qXRRX7WOWwTsE400U8aQf07K48BdFa
3x6LknYWySmfRb2DA1FdjlEYSeYpij0RUUKocw0PHX10g8bBIXz6CB/6dLGIHr9OAiFU
zU2porlUtLuYRCAxHQVHoyNdlfeawqfexS5VaFq0D2foO3BP00Wgk6O1LOJjSRTiOc3H
+Prg==
X-Forwarded-Encrypted: i=1; AJvYcCXSWM9uZJxxKeVYSvjFcQ3FFzunKOtgj2LG6De7rwoArmHxtK3/YTSnRN9aP4VrHikZOKLlMwwf5aGLXLA=@vger.kernel.org
X-Gm-Message-State: AOJu0YzjDSUHmQQ3OkgaOWwVlhVJGFlu4SwsU0zznlN7ZP2WPUf32dkR
Ehit3DrVCGIkpi85j7gkX2Wsqd3D9dSfRQe3WMxLecrSwR8QTRG4OjRkxy1F4pME9RnZ1ZS9AP1
Rai3kkyN/RE8cFQNWgqzYJDi1v+LQlmIv/YeytroHyJlvEV+/7YaT5mVrdvI=
X-Google-Smtp-Source: AGHT+IGdap3ueor/+dC4QVfuI3dEjhxnuRezgHUx4IFWYUjshQSu+2Ssy2m7Z8B44GaIOMUzHwVmDX58Z5+KnBdSnlu+zMS+qDxq
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1568:b0:3dd:8a06:4db3 with SMTP id
e9e14a558f8ab-3dda339232emr19169295ab.19.1748708401944; Sat, 31 May 2025
09:20:01 -0700 (PDT)
Date: Sat, 31 May 2025 09:20:01 -0700
In-Reply-To: <000000000000ec1f6b061ba43f7d@xxxxxxxxxx>
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b2c31.a00a0220.d8eae.001b.GAE@xxxxxxxxxx>
Subject: Re: [syzbot] [smc?] possible deadlock in smc_switch_to_fallback (2)
From: syzbot <syzbot+bef85a6996d1737c1a2f@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: agordeev@xxxxxxxxxxxxx, alibuda@xxxxxxxxxxxxxxxxx, davem@xxxxxxxxxxxxx,
edumazet@xxxxxxxxxx, guwen@xxxxxxxxxxxxxxxxx, horms@xxxxxxxxxx,
jaka@xxxxxxxxxxxxx, kuba@xxxxxxxxxx, kuniyu@xxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-rdma@xxxxxxxxxxxxxxx,
linux-s390@xxxxxxxxxxxxxxx, netdev@xxxxxxxxxxxxxxx, pabeni@xxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx, tonylu@xxxxxxxxxxxxxxxxx,
wenjia@xxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-0.5 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SORTED_RECIPS,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no
version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

syzbot suspects this issue was fixed by commit:

commit 752e2217d789be2c6a6ac66554b981cd71cd9f31
Author: Kuniyuki Iwashima <kuniyu@xxxxxxxxxx>
Date: Mon Apr 7 17:03:17 2025 +0000

smc: Fix lockdep false-positive for IPPROTO_SMC.

bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=13833ed4580000
start commit: 47e55e4b410f openvswitch: fix lockup on tx to unregisterin..
git tree: net
kernel config: https://syzkaller.appspot.com/x/.config?x=4ef22c4fce5135b4
dashboard link: https://syzkaller.appspot.com/bug?extid=bef85a6996d1737c1a2f
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=14832cb0580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=17e17218580000

If the result looks correct, please mark the issue as fixed by replying with:

#syz fix: smc: Fix lockdep false-positive for IPPROTO_SMC.

For information about bisection process see: https://goo.gl/tpsmEJ#bisection


Return-Path: <linux-kernel+bounces-669173-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7E51041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:33:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id C9B223B0183
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:33:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F2BF11537C8;
Sat, 31 May 2025 16:33:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="WTq/D0BQ"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 04D3C17A2EF;
Sat, 31 May 2025 16:33:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748709219; cv=none; b=m+dSHwh/1QXUXin7zj/RNque+j8yeLqbPKur5UP3jHVMBVt+jbvUWp5l5moqBONv9dJIvkF/1xQOGrgN22ZlgnIx9oqYve38N0GPQpYBKAoX8htNG8iskjn3qqVNlE7L3DmRNG8E8WSG9JRJWAd4QLlGtn6olNvWBSZV3CRPiSo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748709219; c=relaxed/simple;
bh=B97QqIpCY6V/3BaPtrDVnyViN6IWZPEPLmJYDSMdDTs=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=fdVLxbfs6ZXIZjN9+hPKQKOY5cqqKYTl5MB/5OY7sjqsMcGeNIy9oE8clFA35b3cA7OM/aGPldpLgkQK8zz4DKptELJOtLgMp8a62+OWyo8pqyflbziJZWMVfjUmL0PIfD25+5rcn7XFxly92ioRP+YfCsB1yScje9+N3wVjGOk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=WTq/D0BQ; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 131FDC4CEE3;
Sat, 31 May 2025 16:33:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748709218;
bh=B97QqIpCY6V/3BaPtrDVnyViN6IWZPEPLmJYDSMdDTs=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=WTq/D0BQd1zlkfM6f8MqKVEPGSOk8UJ0KtaC8axY0Y2L9B18+YQaLLm9RhcKZYlOF
aFy46Pbg8LGickEFm9eD547wEnEqkiMUdI2fVs1ezWOtHgsRTrI6h/TqkrZGIL7LE5
fiInn4yMcWGpdCQmwz567NS01gKurcV+iccUgPtKzOQUjyk9sOMn0TgGujglIpPbBL
gTgwSC/0jWJs0zoD5gWk3Xx+9Kwj7p0Z3OIH3+MGhaPzexgHpGOqR9+iz5D498/5xL
JEnOEmCDL+/rrJW+vzCGtVptCdwpAtrY9G7PPD/igjEBBoCIL/faqK7bd7ho01rfap
LlJIGeVZWmoZA==
Date: Sat, 31 May 2025 17:33:30 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Lothar Rubusch <l.rubusch@xxxxxxxxx>
Cc: dlechner@xxxxxxxxxxxx, nuno.sa@xxxxxxxxxx, andy@xxxxxxxxxx,
corbet@xxxxxxx, lucas.p.stankus@xxxxxxxxx, lars@xxxxxxxxxx,
Michael.Hennerich@xxxxxxxxxx, linux-iio@xxxxxxxxxxxxxxx,
linux-doc@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v3 07/12] iio: accel: adxl313: add basic interrupt
handling
Message-ID: <20250531173330.4d913f65@jic23-huawei>
In-Reply-To: <CAFXKEHaM1xEk-v7rXdKoxdXKV-k=_Leu+hMBukDyKoWr3irVRQ@xxxxxxxxxxxxxx>
References: <20250523223523.35218-1-l.rubusch@xxxxxxxxx>
<20250523223523.35218-8-l.rubusch@xxxxxxxxx>
<20250525134831.68b3c905@jic23-huawei>
<CAFXKEHaM1xEk-v7rXdKoxdXKV-k=_Leu+hMBukDyKoWr3irVRQ@xxxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Wed, 28 May 2025 22:52:55 +0200
Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote:

> Hi Jonathan,
>
> I feel here either I have some missunderstanding or it needs more
> (better?) explanation. Perhaps I'm using the wrong terminology.
>
> One point, I forgot, do I actually need to add a Reviewed-by tag or
> something like that for Andys review? Or if so, they will let me know,
> I guess?

Only add a tag if Andy gives it.

>
> First of all, introducing the adxl313_fifo_reset(data) here is the
> crucial part. So, the title I chose is not matching with the topic, or
> is too general. I'll answer and try to better explain down below.

I'd misunderstood somewhat what we had here which probably didn't help.
Partly this was down to patch break up and you putting something called
reset in temporarily covering the normal read path (threshold interrupt).

> >
> > > static const struct regmap_range adxl312_readable_reg_range[] = {
> > > regmap_reg_range(ADXL313_REG_DEVID0, ADXL313_REG_DEVID0),
> > > regmap_reg_range(ADXL313_REG_OFS_AXIS(0), ADXL313_REG_OFS_AXIS(2)),
> > > @@ -62,6 +71,7 @@ bool adxl313_is_volatile_reg(struct device *dev, unsigned int reg)
> > > case ADXL313_REG_DATA_AXIS(4):
> > > case ADXL313_REG_DATA_AXIS(5):
> > > case ADXL313_REG_FIFO_STATUS:
> > > + case ADXL313_REG_INT_SOURCE:
> > > return true;
> > > default:
> > > return false;
> > > @@ -363,6 +373,118 @@ static int adxl313_write_raw(struct iio_dev *indio_dev,
> > > }
> > > }
> > >
> > > +static int adxl313_get_samples(struct adxl313_data *data)
> >
> > I doubt this gets called from multiple places. I'd just put
> > the code inline and no have this helper at all.
> >
>
> It will be a called at least in two places. First, when reading the
> measurements and second when clearing the fifo in the reset.

Ok. Then this is fine to keep.

> > > +static int adxl313_fifo_transfer(struct adxl313_data *data, int samples)
> > > +{
> > > + size_t count;
> > > + unsigned int i;
> > > + int ret;
> > > +
> > > + count = array_size(sizeof(data->fifo_buf[0]), ADXL313_NUM_AXIS);
> > > + for (i = 0; i < samples; i++) {
> > > + ret = regmap_bulk_read(data->regmap, ADXL313_REG_XYZ_BASE,
> > > + data->fifo_buf + (i * count / 2), count);
> >
> > that 2 is I'd guessed based on size of some data store element?
> > I'd guess sizeof(data->fifo_buf[0]) is appropriate.
> >
>
> My calculation was the following:
> * samples := number of "lines" in the FIFO e.g. by watermark
> * count := number of bytes per "line"
> * ADXL313_NUM_AXIS := 3 for the three axis here
> There's a bulk read per "line" of the FIFO. A "line" comprises
> measurement for x, y and z axis. Each measurement consists of 2 bytes,
> i.e. count has 6 bytes.
>
> At a second look now, probably count/2 can be replaced directly by
> ADXL313_NUM_AXIS. If so, I don't need the count variable. I see,
> count/2 being already a constant expression here smells somehow. I
> guess, this might be your point? I'll change that and need verify.

I was only commenting on the 2. But sure, using ADXL313_NUM_AXIS
resolves that and is better still.
Not sure I'd bother with array_size() here, probably simply
using sizeof(data->fifo_buf[0]) * ADXL313_NUM_AXIS for that
final parameter is fine given we know it can't over flow and it's
the size of a subset of a larger array rather than an array
(kind of anyway!)


> >
> > > + if (ret)
> > > + return ret;
> > > + }
> > > + return 0;
> > > +}
> > > +
> > > +/**
> > > + * adxl313_fifo_reset() - Reset the FIFO and interrupt status registers.
> > > + * @data: The device data.
> > > + *
> > > + * Reset the FIFO status registers. Reading out status registers clears the
> >
> > I think you already read it before calling this. So how is it ever set?
> >
> > > + * FIFO and interrupt configuration. Thus do not evaluate regmap return values.
> > > + * Ignore particular read register content. Register content is not processed
> > > + * any further. Therefore the function returns void.
> > > + */
> > > +static void adxl313_fifo_reset(struct adxl313_data *data)
> >
> > As below. This isn't a reset. Fifo reset is normally the term used
> > for when we have lost tracking of what is in the fifo and drop all data,
> > not normal readback.
> >
> > > +{
> > > + unsigned int regval;
> > > + int samples;
> > > +
> > > + adxl313_set_measure_en(data, false);
> > Disabling measurement to read a fifo is unusual - is this really necessary
> > as it presumably puts a gap in the data, which is what we are trying
> > to avoid by using a fifo.
> >
> > > +
> > > + samples = adxl313_get_samples(data);
> > > + if (samples > 0)
> > > + adxl313_fifo_transfer(data, samples);
> > > +
> > > + regmap_read(data->regmap, ADXL313_REG_INT_SOURCE, &regval);
> >
> > Not processing the convents of INT_SOURCE every time you read it
> > introduces race conditions. This logic needs a rethink so that
> > never happens. I guess this is why you are disabling measurement
> > to stop the status changing? Just whatever each read of INT_SOURCE
> > tells us we need to handle and all should be fine without disabling
> > measurement. That read should only clear bits that are set, so no
> > race conditions.
> >
>
> When the ADXL345 triggers an interrupt for e.g. watermark, data ready,
> or overrun,... it will stop from triggerring further interrupts until
> the status registers, INT_SOURCE and FIFO_STATUS are cleared. This I
> call "reset". In consequence the FIFO will simply run full.

Hmm. I'd not use the reset term so broadly. Reset for a fifo typically means
dropping all data on the floor after an overflow or other error condition.

>
> Usually when the interrupt handler reads the interrupt status
> (INT_SOURCE). In case of, say, watermark, it then reads the
> FIFO_STATUS to obtain number of entries and reads this number of
> samples by a linewise bulk read from the sensor DATA registers.
> Reading all FIFO entries from the DATA register clears FIFO_STATUS,
> and this clears INT_SOURCE.
>
> Now, in case of error or overrun, I'd use this reset function as a
> fallback error handling. I stop measurement i.e. I set the sensor to
> standby. The sensor should not accept further measurements. Then I
> read out the fifo entries to clear FIFO_STATUS and I (already) read
> INT_SOURCE to clear interrupt status. Eventually I turn on measurement
> to bring the sensor back to operational. I ignore the read
> measurements, I'm reading here.
>
> As alternative approaches I also saw for similar sensors (not Linux)
> to e.g. switch FIFO_STREAM mode to FIFO_BYPASS and back. This works
> here too, but only for the FIFO_STATUS not for INT_SOURCE. Another
> idea I can imagine with the ADXL313, there is a soft reset register,
> but never tried that.
>
> In this initial patch, the reset function will resume the interrupt
> handler function. With the follow up patches, this will form rather
> the error handling. It is easy to get into this kind of overrun
> situation, if the interrupt handler is still not working correctly.
> I'm actually pretty confident, that it now works only as a fallback
> error handling, but perhaps I'm doing something wrong here?

This is where I got confused - because it wasn't just the error
paths. All made sense after later patches. Stopping measurements when
you enter an error condition is fine.
>

> > > + return IRQ_NONE;
> > > +
> > > + adxl313_fifo_reset(data);
> >
> > Given we don't know it had anything to do with the fifo at this point
> > resetting the fifo doesn't make much sense. I'd expect a check
> > on int_status, probably for overrun, before doing this.
> >
> > Ah. On closer inspection this isn't resetting the fifo, it's just
> > reading it. Rename that function and make it dependent on what
> > was in int_stat.
> >
>
> As mentioned before, I used the term "reset" to clear the status
> registers. This can occur for typically overrun, but also would cover
> all events which are still not handled by the interrupt handler. I
> could give it a try to see if the soft reset here would be a better
> fit.

No need to change the code, just don't use the term reset if you
are not clearing all data (without using it) and any outstanding
interrupt status. Pick a different term clear_int for example.

Soft reset is massive overkill for an overrun event.

Jonathan

>
> Best,
> L
>
> >
> > > +
> > > + return IRQ_HANDLED;
> > > +}
> >



Return-Path: <linux-kernel+bounces-669174-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 278F041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:34:48 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 2A98117E3FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:34:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2EBC518DB16;
Sat, 31 May 2025 16:34:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bfZFuyHp"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 6CD281448E0;
Sat, 31 May 2025 16:34:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748709281; cv=none; b=Gtd1fA10LZOsaFwkPZEWqeqnjDbPjglML2c+TZ9Q34tfao+r5vAjpfJ3lTpeTftvBdma1/GVMGVCbxQj+cb2tY8UvcVW4PHLzDbGIQmo67165uGi2Q5YJCetS5QFapzZE2VmMkBdOYOTov+hdlyacM80w+IWVhNs/menqNUyUx4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748709281; c=relaxed/simple;
bh=LBeZakZJii6oUPSZqeG48dOeeJUonlf7KQZttFKzggE=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=mrs7busEYOolW/0Pc/itoRiE3B0yPlAFfe+9comBYKNaExocByDGAbvCvL5R55waCOC3z9sbfScw/EPxDu40ejUoLpmLZjKnfP8fuOF1zU/Zu7AQzgLC5mGVQ0RCFTQHXo9tngS/tMxgZY2VZkT/ldfRzgdyvpyrfYVv0VpbknQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bfZFuyHp; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5B7AC4CEE3;
Sat, 31 May 2025 16:34:36 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748709280;
bh=LBeZakZJii6oUPSZqeG48dOeeJUonlf7KQZttFKzggE=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=bfZFuyHpddDVrAtTdyjGqEt9xMdd215skpdu8NjNLoehzJp0Pz4P08QCvD6BrBk3j
fO1J8CHUmOdEKXQXXmhmO3xca29NFHOTJABdO2Mo0v/HrwOHGWiSQ+CF3s2UCYRBU6
a9qbeZsCJGzPNgh6kcMqH3ZpWzI4vzyCZpoO7l8FrpCd4dboY2Bh/aTZs2WTqbM3nF
bhMOYscrqaTSwTHqRok4rW47zYW64HaDDi2/4Vkio9GWtP6mC5J9pf0q4PAwZs/rbl
L8BZoPlZjmupCb9PduJu2XTWFJTO0l1BR27eeHakFc/dXVf/WjqYy3Ak7qW2ep/OuK
1T15TPzvhP3Ow==
Date: Sat, 31 May 2025 17:34:31 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Lothar Rubusch <l.rubusch@xxxxxxxxx>
Cc: dlechner@xxxxxxxxxxxx, nuno.sa@xxxxxxxxxx, andy@xxxxxxxxxx,
corbet@xxxxxxx, lucas.p.stankus@xxxxxxxxx, lars@xxxxxxxxxx,
Michael.Hennerich@xxxxxxxxxx, linux-iio@xxxxxxxxxxxxxxx,
linux-doc@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v3 09/12] iio: accel: adxl313: add activity sensing
Message-ID: <20250531173431.3a5a535d@jic23-huawei>
In-Reply-To: <CAFXKEHb96Kyr_L_Mw3UQxxD=nR8X2bU3TCcgH6OWsqYfaQtE+Q@xxxxxxxxxxxxxx>
References: <20250523223523.35218-1-l.rubusch@xxxxxxxxx>
<20250523223523.35218-10-l.rubusch@xxxxxxxxx>
<20250525140351.559be514@jic23-huawei>
<CAFXKEHb96Kyr_L_Mw3UQxxD=nR8X2bU3TCcgH6OWsqYfaQtE+Q@xxxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Thu, 29 May 2025 18:22:50 +0200
Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote:

> Hi Jonathan,
>=20
> On Sun, May 25, 2025 at 3:04=E2=80=AFPM Jonathan Cameron <jic23@xxxxxxxxx=
g> wrote:
> >
> > On Fri, 23 May 2025 22:35:20 +0000
> > Lothar Rubusch <l.rubusch@xxxxxxxxx> wrote:
> > =20
> > > Add possibilities to set a threshold for activity sensing. Extend the
> > > interrupt handler to process activity interrupts. Provide functions t=
o set
> > > the activity threshold and to enable/disable activity sensing. Furthe=
r add
> > > a fake channel for having x, y and z axis anded on the iio channel.
> > >
> > > This is a preparatory patch. Some of the definitions and functions are
> > > supposed to be extended for inactivity later on.
> > >
> > > Signed-off-by: Lothar Rubusch <l.rubusch@xxxxxxxxx> =20
> > One comment I found confusing.
> >
> > I see this hardware is similar to our friend the axl345 so some of the =
outcomes
> > of final reviews on that series may apply here as well. =20
>=20
> Yes. To be honest with you, I already saw several places, where I
> probably need to send you some refac for the ADXL345 as well.
> Implementing the same type of source a second time, sometimes leads
> [me] to different[/better?] solutions and brings different insights.
>=20
> > =20
> > > ---
> > > drivers/iio/accel/adxl313_core.c | 229 +++++++++++++++++++++++++++++=
+-
> > > 1 file changed, 227 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/iio/accel/adxl313_core.c b/drivers/iio/accel/adx=
l313_core.c
> > > index 80991cd9bd79..74bb7cfe8a55 100644
> > > --- a/drivers/iio/accel/adxl313_core.c
> > > +++ b/drivers/iio/accel/adxl313_core.c =20
> > =20
> > > static const unsigned long adxl313_scan_masks[] =3D {
> > > @@ -300,6 +334,60 @@ static int adxl313_read_freq_avail(struct iio_de=
v *indio_dev,
> > > }
> > > }
> > >
> > > +static int adxl313_is_act_inact_en(struct adxl313_data *data,
> > > + enum adxl313_activity_type type)
> > > +{
> > > + unsigned int axis_ctrl;
> > > + unsigned int regval;
> > > + int axis_en, int_en, ret;
> > > +
> > > + ret =3D regmap_read(data->regmap, ADXL313_REG_ACT_INACT_CTL, &a=
xis_ctrl);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + /* Check if axis for activity are enabled */ =20
> >
> > If all 3 axis perhaps? Or If any axis? I'm not sure what intent is he=
re. =20
>=20
> For the ADXL313 I do generally all axis, i.e. x-, y-, z-axis - enabled
> and disabled, respectively. I'll modify the comment.
>=20
> Sry about spamming the ML with my emails about the reset function. I
> oversaw your other mail. Patches will be merged.

Lol. I did the same thing just now. Don't worry about it!

J
>=20
> Best,
> L
>=20
> > =20
> > > + if (type !=3D ADXL313_ACTIVITY)
> > > + return 0;
> > > +
> > > + axis_en =3D FIELD_GET(ADXL313_ACT_XYZ_EN, axis_ctrl);
> > > +
> > > + /* The axis are enabled, now check if specific interrupt is ena=
bled */
> > > + ret =3D regmap_read(data->regmap, ADXL313_REG_INT_ENABLE, &regv=
al);
> > > + if (ret)
> > > + return ret;
> > > +
> > > + int_en =3D adxl313_act_int_reg[type] & regval;
> > > +
> > > + return axis_en && int_en;
> > > +} =20
> > =20



Return-Path: <linux-kernel+bounces-669175-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8F1A541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:38:03 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3C1F11BA1553
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:38:14 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id DD41A18FDAF;
Sat, 31 May 2025 16:37:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="jbkq1Ayv"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12])
(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 25E0B149E13
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:37:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.12
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748709473; cv=none; b=JT1RFsMCJy41EYFAtKT1Z9b/NKiMbPfKceRLOkTiORPuvn8nWCpyHHL9Aa6KMs8u8+mtweYgt1Vvvzv11MAOKLj6hJudPt6rLfvtI1VZ9o/MxdVXI4XrDW68SW36MnW4IZdV79T7jPY9wO+Uu0KIQ58zFZqh7tRD7Tbbm5P12tM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748709473; c=relaxed/simple;
bh=J46ycYqTQ3m/ESNE1CTZvd1Nnu4qoRy2cn0CP7+u6Ug=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=lcpcOsNJe7Dfj80dUYn2DIV9vHU9F9oCQO4WvtbDqPAcXDFVp3PECulrssRnLDrHFh5CHGWnQfTkGLq+CFzzrg/X9nsGEC/sdCqrkIDZdONXdvPSDk1iURpCvH/mmLSVv/ZqERUq1AY02x2gO7HvBCrFpop1pyffLQYYMSCmXGE=
ARC-Authentication-Results:i=1; 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=jbkq1Ayv; arc=none smtp.client-ip=198.175.65.12
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748709471; x=1780245471;
h=date:from:to:cc:subject:message-id:mime-version;
bh=J46ycYqTQ3m/ESNE1CTZvd1Nnu4qoRy2cn0CP7+u6Ug=;
b=jbkq1AyviNg/uqcPGpO6TxpxDSamI3ZypFdtpu7vwCqzGgrjl4KNcWZU
I709yHxAvO95WS8TAkqoo7KU4DzZJ+Qnq+s7EBXZE7kD4csnLXB7wAPV1
Tuls79sQKlgKaiPkYKINKD8KJYZ7GFUg2de2LjIdVlf73TTnhV7PagIvg
Qcyute/JB/LUMWXYhpir7H5Rp5U3ChaAp0Ef0O7skg2jyBn5+M8jfYEP9
sKrOojmiaAEVjLVK+tQza80bqfRiHYJRAV7Ny5/Rq0O0vpr5Z1MNftdJL
usunRzlKIerkghrMearuokp/p67WFEi/ta48SeeUKampYhUg3DOM4kMKc
Q==;
X-CSE-ConnectionGUID: PluhBg+kSFq3INnsdgNS0g==
X-CSE-MsgGUID: zct7CTj2Tha7MA0FqojFJw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="62179612"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="62179612"
Received: from orviesa010.jf.intel.com ([10.64.159.150])
by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 09:37:50 -0700
X-CSE-ConnectionGUID: YNJujgcBSeWUnGWC926QYQ==
X-CSE-MsgGUID: XylBVezvQcmOz61TMYfGKw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144121636"
Received: from igk-lkp-server01.igk.intel.com (HELO b69e6467d450) ([10.211.3.150])
by orviesa010.jf.intel.com with ESMTP; 31 May 2025 09:37:48 -0700
Received: from kbuild by b69e6467d450 with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLPDM-00012Q-33;
Sat, 31 May 2025 16:37:44 +0000
Date: Sun, 1 Jun 2025 00:37:01 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Kent Overstreet <kent.overstreet@xxxxxxxxx>
Cc: llvm@xxxxxxxxxxxxxxx, oe-kbuild-all@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: fs/bcachefs/super.c:954:25: warning: result of comparison of
constant 65536 with expression of type 'u16' (aka 'unsigned short') is
always false
Message-ID: <202506010012.GabD1fud-lkp@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 0f70f5b08a47a3bc1a252e5f451a137cde7c98ce
commit: 9caea9208fc3fbdbd4a41a2de8c6a0c969b030f9 bcachefs: Don't mount bs > ps without TRANSPARENT_HUGEPAGE
date: 8 days ago
config: hexagon-randconfig-2004-20250531 (https://download.01.org/0day-ci/archive/20250601/202506010012.GabD1fud-lkp@xxxxxxxxx/config)
compiler: clang version 20.1.2 (https://github.com/llvm/llvm-project 58df0ef89dd64126512e4ee27b4ac3fd8ddf6247)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250601/202506010012.GabD1fud-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506010012.GabD1fud-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> fs/bcachefs/super.c:954:25: warning: result of comparison of constant 65536 with expression of type 'u16' (aka 'unsigned short') is always false [-Wtautological-constant-out-of-range-compare]
954 | c->opts.block_size > PAGE_SIZE) {
| ~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~
1 warning generated.


vim +954 fs/bcachefs/super.c

837
838 static struct bch_fs *bch2_fs_alloc(struct bch_sb *sb, struct bch_opts *opts,
839 bch_sb_handles *sbs)
840 {
841 struct bch_fs *c;
842 struct printbuf name = PRINTBUF;
843 unsigned i, iter_size;
844 int ret = 0;
845
846 c = kvmalloc(sizeof(struct bch_fs), GFP_KERNEL|__GFP_ZERO);
847 if (!c) {
848 c = ERR_PTR(-BCH_ERR_ENOMEM_fs_alloc);
849 goto out;
850 }
851
852 c->stdio = (void *)(unsigned long) opts->stdio;
853
854 __module_get(THIS_MODULE);
855
856 closure_init(&c->cl, NULL);
857
858 c->kobj.kset = bcachefs_kset;
859 kobject_init(&c->kobj, &bch2_fs_ktype);
860 kobject_init(&c->internal, &bch2_fs_internal_ktype);
861 kobject_init(&c->opts_dir, &bch2_fs_opts_dir_ktype);
862 kobject_init(&c->time_stats, &bch2_fs_time_stats_ktype);
863 kobject_init(&c->counters_kobj, &bch2_fs_counters_ktype);
864
865 c->minor = -1;
866 c->disk_sb.fs_sb = true;
867
868 init_rwsem(&c->state_lock);
869 mutex_init(&c->sb_lock);
870 mutex_init(&c->replicas_gc_lock);
871 mutex_init(&c->btree_root_lock);
872 INIT_WORK(&c->read_only_work, bch2_fs_read_only_work);
873
874 refcount_set(&c->ro_ref, 1);
875 init_waitqueue_head(&c->ro_ref_wait);
876
877 for (i = 0; i < BCH_TIME_STAT_NR; i++)
878 bch2_time_stats_init(&c->times[i]);
879
880 bch2_fs_allocator_background_init(c);
881 bch2_fs_allocator_foreground_init(c);
882 bch2_fs_btree_cache_init_early(&c->btree_cache);
883 bch2_fs_btree_gc_init_early(c);
884 bch2_fs_btree_interior_update_init_early(c);
885 bch2_fs_btree_iter_init_early(c);
886 bch2_fs_btree_key_cache_init_early(&c->btree_key_cache);
887 bch2_fs_btree_write_buffer_init_early(c);
888 bch2_fs_copygc_init(c);
889 bch2_fs_ec_init_early(c);
890 bch2_fs_journal_init_early(&c->journal);
891 bch2_fs_journal_keys_init(c);
892 bch2_fs_move_init(c);
893 bch2_fs_nocow_locking_init_early(c);
894 bch2_fs_quota_init(c);
895 bch2_fs_recovery_passes_init(c);
896 bch2_fs_sb_errors_init_early(c);
897 bch2_fs_snapshots_init_early(c);
898 bch2_fs_subvolumes_init_early(c);
899
900 INIT_LIST_HEAD(&c->list);
901
902 mutex_init(&c->bio_bounce_pages_lock);
903 mutex_init(&c->snapshot_table_lock);
904 init_rwsem(&c->snapshot_create_lock);
905
906 spin_lock_init(&c->btree_write_error_lock);
907
908 INIT_LIST_HEAD(&c->journal_iters);
909
910 INIT_LIST_HEAD(&c->fsck_error_msgs);
911 mutex_init(&c->fsck_error_msgs_lock);
912
913 seqcount_init(&c->usage_lock);
914
915 sema_init(&c->io_in_flight, 128);
916
917 INIT_LIST_HEAD(&c->vfs_inodes_list);
918 mutex_init(&c->vfs_inodes_lock);
919
920 c->journal.flush_write_time = &c->times[BCH_TIME_journal_flush_write];
921 c->journal.noflush_write_time = &c->times[BCH_TIME_journal_noflush_write];
922 c->journal.flush_seq_time = &c->times[BCH_TIME_journal_flush_seq];
923
924 mutex_init(&c->sectors_available_lock);
925
926 ret = percpu_init_rwsem(&c->mark_lock);
927 if (ret)
928 goto err;
929
930 mutex_lock(&c->sb_lock);
931 ret = bch2_sb_to_fs(c, sb);
932 mutex_unlock(&c->sb_lock);
933
934 if (ret)
935 goto err;
936
937 /* Compat: */
938 if (le16_to_cpu(sb->version) <= bcachefs_metadata_version_inode_v2 &&
939 !BCH_SB_JOURNAL_FLUSH_DELAY(sb))
940 SET_BCH_SB_JOURNAL_FLUSH_DELAY(sb, 1000);
941
942 if (le16_to_cpu(sb->version) <= bcachefs_metadata_version_inode_v2 &&
943 !BCH_SB_JOURNAL_RECLAIM_DELAY(sb))
944 SET_BCH_SB_JOURNAL_RECLAIM_DELAY(sb, 100);
945
946 c->opts = bch2_opts_default;
947 ret = bch2_opts_from_sb(&c->opts, sb);
948 if (ret)
949 goto err;
950
951 bch2_opts_apply(&c->opts, *opts);
952
953 if (!IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) &&
> 954 c->opts.block_size > PAGE_SIZE) {
955 bch_err(c, "cannot mount bs > ps filesystem without CONFIG_TRANSPARENT_HUGEPAGE");
956 ret = -EINVAL;
957 goto err;
958 }
959
960 c->btree_key_cache_btrees |= 1U << BTREE_ID_alloc;
961 if (c->opts.inodes_use_key_cache)
962 c->btree_key_cache_btrees |= 1U << BTREE_ID_inodes;
963 c->btree_key_cache_btrees |= 1U << BTREE_ID_logged_ops;
964
965 c->block_bits = ilog2(block_sectors(c));
966 c->btree_foreground_merge_threshold = BTREE_FOREGROUND_MERGE_THRESHOLD(c);
967
968 if (bch2_fs_init_fault("fs_alloc")) {
969 bch_err(c, "fs_alloc fault injected");
970 ret = -EFAULT;
971 goto err;
972 }
973
974 if (c->sb.multi_device)
975 pr_uuid(&name, c->sb.user_uuid.b);
976 else
977 prt_bdevname(&name, sbs->data[0].bdev);
978
979 ret = name.allocation_failure ? -BCH_ERR_ENOMEM_fs_name_alloc : 0;
980 if (ret)
981 goto err;
982
983 strscpy(c->name, name.buf, sizeof(c->name));
984 printbuf_exit(&name);
985
986 iter_size = sizeof(struct sort_iter) +
987 (btree_blocks(c) + 1) * 2 *
988 sizeof(struct sort_iter_set);
989
990 if (!(c->btree_read_complete_wq = alloc_workqueue("bcachefs_btree_read_complete",
991 WQ_HIGHPRI|WQ_FREEZABLE|WQ_MEM_RECLAIM, 512)) ||
992 enumerated_ref_init(&c->writes, BCH_WRITE_REF_NR,
993 bch2_writes_disabled) ||
994 mempool_init_kmalloc_pool(&c->fill_iter, 1, iter_size) ||
995 bioset_init(&c->btree_bio, 1,
996 max(offsetof(struct btree_read_bio, bio),
997 offsetof(struct btree_write_bio, wbio.bio)),
998 BIOSET_NEED_BVECS) ||
999 !(c->pcpu = alloc_percpu(struct bch_fs_pcpu)) ||
1000 !(c->usage = alloc_percpu(struct bch_fs_usage_base)) ||
1001 !(c->online_reserved = alloc_percpu(u64)) ||
1002 mempool_init_kvmalloc_pool(&c->btree_bounce_pool, 1,
1003 c->opts.btree_node_size) ||
1004 mempool_init_kmalloc_pool(&c->large_bkey_pool, 1, 2048)) {
1005 ret = -BCH_ERR_ENOMEM_fs_other_alloc;
1006 goto err;
1007 }
1008
1009 ret =
1010 bch2_fs_async_obj_init(c) ?:
1011 bch2_fs_btree_cache_init(c) ?:
1012 bch2_fs_btree_iter_init(c) ?:
1013 bch2_fs_btree_key_cache_init(&c->btree_key_cache) ?:
1014 bch2_fs_buckets_waiting_for_journal_init(c) ?:
1015 bch2_io_clock_init(&c->io_clock[READ]) ?:
1016 bch2_io_clock_init(&c->io_clock[WRITE]) ?:
1017 bch2_fs_compress_init(c) ?:
1018 bch2_fs_counters_init(c) ?:
1019 bch2_fs_ec_init(c) ?:
1020 bch2_fs_encryption_init(c) ?:
1021 bch2_fs_fsio_init(c) ?:
1022 bch2_fs_fs_io_direct_init(c) ?:
1023 bch2_fs_io_read_init(c) ?:
1024 bch2_fs_rebalance_init(c) ?:
1025 bch2_fs_sb_errors_init(c) ?:
1026 bch2_fs_vfs_init(c);
1027 if (ret)
1028 goto err;
1029

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669176-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 99B0341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:53:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 287529E2ED4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:52:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 603A5193436;
Sat, 31 May 2025 16:53:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="I+ygO6e4"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8DD1014A0A8;
Sat, 31 May 2025 16:53:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748710390; cv=none; b=QVdTOSYvfIb62rpcyXK4MV0wH85fpmgqE2vJo5zUnXSLurgE43zaJ6btj5fLVL7trLR4nx/BANUbKMwffisDG6BSvyPQn5b/5739Z1d5AI3X/6tKoqTpMSsdvr0F5Zd2ltfcRnOvfuCjowob/UB23CuMu6EjHt+xN6VIMX8q7Nw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748710390; c=relaxed/simple;
bh=ki2fiF5byquHZpQLnvRzyCUzg28bY60LyC64A4xgFis=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=eyFs97czN2jr03vJdRg4A388Lysm0OKTt7uhnetXScI04mDQF1yCCbucrjBifq5WLWYzlhvpR39mXyhUUMily3UqOosdJlaU3QTm23mQf/qgYFduIWvND7na+AEDTttLwHcvD5uOcaH3F3AfRz5Azek4SHWrbdQbS0ua6z6Fkj8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=I+ygO6e4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D8399C4CEEF;
Sat, 31 May 2025 16:53:06 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748710390;
bh=ki2fiF5byquHZpQLnvRzyCUzg28bY60LyC64A4xgFis=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=I+ygO6e4pt7WlsySCqfKWdadJCI7zFjT5gt5SuuT6sfllHDtZFadQlvrkLcnjM6+f
o3tPpbp5i7CG7k1rs/BQlMYhfI/fngWWCNy5BDM7lnzZRz9gdqIhpONnqurqfyd5WN
a6kWhONV4Ys0E7G4eyytnNyWle5188imJI7JVsxnMx7A6LzoxaL8CoCIPis+D+XSX7
1g4+fof/T1VhZwvKvQ7dl5DNfcYVnrbxzLxnYJ8dkUCpbcl6IgmiofrbKhTSd0uY12
9E4grHFbTNGKYhinirLwMqQJMbPQnZHHItstwSqn+juRzlm01ZR11y9B1wbYYOS6wk
dhrmQxQ60/Pew==
Date: Sat, 31 May 2025 17:53:02 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Sean Nyekjaer <sean@xxxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>, Jonathan Cameron
<Jonathan.Cameron@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, stable@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] iio: accel: fxls8962af: Fix use after free in
fxls8962af_fifo_flush
Message-ID: <20250531175302.05b2da17@jic23-huawei>
In-Reply-To: <20250524-fxlsrace-v1-1-dec506dc87ae@xxxxxxxxxx>
References: <20250524-fxlsrace-v1-1-dec506dc87ae@xxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, 24 May 2025 12:34:09 +0200
Sean Nyekjaer <sean@xxxxxxxxxx> wrote:

> fxls8962af_fifo_flush() uses indio_dev->active_scan_mask (with
> iio_for_each_active_channel()) without making sure the indio_dev
> stays in buffer mode.
> There is a race if indio_dev exits buffer mode in the middle of the
> interrupt that flushes the fifo. Fix this by calling
> iio_device_claim_buffer_mode() to ensure indio_dev can't exit buffer
> mode during the flush.
>
> Unable to handle kernel NULL pointer dereference at virtual address 00000000 when read
> [...]
> _find_first_bit_le from fxls8962af_fifo_flush+0x17c/0x290
> fxls8962af_fifo_flush from fxls8962af_interrupt+0x80/0x178
> fxls8962af_interrupt from irq_thread_fn+0x1c/0x7c
> irq_thread_fn from irq_thread+0x110/0x1f4
> irq_thread from kthread+0xe0/0xfc
> kthread from ret_from_fork+0x14/0x2c
>
> Fixes: 79e3a5bdd9ef ("iio: accel: fxls8962af: add hw buffered sampling")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Sean Nyekjaer <sean@xxxxxxxxxx>

That's nasty and a case I'd never thought about. Most of the
races around disabling end up with an extra sample or two which then gets
dropped because there are no buffers enabled.

We need to consider the active scan mask as part of the buffer state.
So effectively taking mlock if we enter this code will delay the state
transition (and change of active_scan_mask until after this interrupt is done).

If David's synchronize_irq() is enough maybe that's a lighter weight path?

Jonathan



> ---
> drivers/iio/accel/fxls8962af-core.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/drivers/iio/accel/fxls8962af-core.c b/drivers/iio/accel/fxls8962af-core.c
> index 6d23da3e7aa22c61f2d9348bb91d70cc5719a732..7db83ebeea823173d79bf8ff484add16f575edfc 100644
> --- a/drivers/iio/accel/fxls8962af-core.c
> +++ b/drivers/iio/accel/fxls8962af-core.c
> @@ -973,6 +973,9 @@ static int fxls8962af_fifo_flush(struct iio_dev *indio_dev)
> if (ret)
> return ret;
>
> + if (iio_device_claim_buffer_mode(indio_dev) < 0)
> + return 0;
> +
> /* Demux hw FIFO into kfifo. */
> for (i = 0; i < count; i++) {
> int j, bit;
> @@ -989,6 +992,8 @@ static int fxls8962af_fifo_flush(struct iio_dev *indio_dev)
> tstamp += sample_period;
> }
>
> + iio_device_release_buffer_mode(indio_dev);
> +
> return count;
> }
>
>
> ---
> base-commit: 5c3fcb36c92443a9a037683626a2e43d8825f783
> change-id: 20250524-fxlsrace-f4d20e29fb29
>
> Best regards,



Return-Path: <linux-kernel+bounces-669177-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4BEBF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:57:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 236F6189D636
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:58:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D24D9187876;
Sat, 31 May 2025 16:57:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="vS4O4fxK"
Received: from casper.infradead.org (casper.infradead.org [90.155.50.34])
(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 20A1286323;
Sat, 31 May 2025 16:57:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748710669; cv=none; b=uqCXoxe+nNF/QDrQTkLPvA3i4ZcJpX2F8VbsyBQ0fD/hQQfEOetCfDN5Qg9PwFoDQw5z0JSD6V6x2CRTlQsN+U+GFiScc/eXXfg8jyDhVkrKPpxbl4ZWd6xApxHietEaNavUz8J4f7EGKgFkdIdpauvICdqZzMarPcxzib4YBKQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748710669; c=relaxed/simple;
bh=MeOtkIrLMT6IjO2sNqCraauEVwJylK9XitUYKe63gT8=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=unA6m2RlPdjgUUSv9MIJz4e9+eWINhvLyA9PltHqcFhtAbmk67y/eaQSZQlIhRFaWNtAWT/zji7UulsdesASdT6oRh6o2oAXn/7G3NUGQSfyeEu2MJCR610pqwr1ul8iDgnsk/3uQwFYyhJJ1VEwsQwDOitMwtABekPaibnN/e4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=vS4O4fxK; arc=none smtp.client-ip=90.155.50.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type:
In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender
:Reply-To:Content-ID:Content-Description;
bh=Otdj8ujGAF2QmUcG8kvdd7R/HPnA2c9NJiQzWXZJi3w=; b=vS4O4fxKFnEbTgQGKLGoqXmXFL
pLw/6RbtSBMAcyaOmCL9SyDQyJT2ezrbf66EvB6gpih7lKsflY9guCr6t35Dd3RCytIftnY3yx9Mo
PmiX9J/GpezlJwXgaILEElJs8AuCyhOPZdcpXCjaD5X9rExWbdGu5zpmcWuI9XhCdMamMgOY0r7w/
UkAV0NBMfkL8HeCKdlSeVLpYKHNrwMyJTrC67HmQc+gEPv17L5mTCeMnVEXRpgMO72tlAUL/Gxmbm
MZDIkw4seT4zOei06JtMBdQyWJvKI7TSDKWhL5kQm3/SSEY54/v57Yd1WqYER0U35gnS5Sxpw8UwX
QLTICNAQ==;
Received: from [50.53.25.54] (helo=[192.168.254.17])
by casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLPWa-0000000Gvr7-41Bt;
Sat, 31 May 2025 16:57:37 +0000
Message-ID: <863ff758-d9a1-4800-8746-ee63ee2a4e63@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 09:57:33 -0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH] Documentation: cxl: fix typos and improve clarity in
memory-devices.rst
Content-Language: en-US
To: Alok Tiwari <alok.a.tiwari@xxxxxxxxxx>, dave@xxxxxxxxxxxx,
jonathan.cameron@xxxxxxxxxx, dave.jiang@xxxxxxxxx,
alison.schofield@xxxxxxxxx, vishal.l.verma@xxxxxxxxx, ira.weiny@xxxxxxxxx,
dan.j.williams@xxxxxxxxx, corbet@xxxxxxx, linux-cxl@xxxxxxxxxxxxxxx,
linux-doc@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx, darren.kenny@xxxxxxxxxx
References: <20250531075209.3334261-1-alok.a.tiwari@xxxxxxxxxx>
From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
In-Reply-To: <20250531075209.3334261-1-alok.a.tiwari@xxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu



On 5/31/25 12:51 AM, Alok Tiwari wrote:
> This patch corrects several typographical issues and improves phrasing
> in memory-devices.rst:
>
> - Fixes duplicate word ("1 one") and adjusts phrasing for clarity.
> - Adds missing hyphen in "on-device".
> - Corrects "a give memory device" to "a given memory device".
> - fix singular/plural "decoder resource" -> "decoder resources".
> - Clarifies "spans to Host Bridges" -> "spans two Host Bridges".
>
> These changes improve readability and accuracy of the documentation.
>
> Signed-off-by: Alok Tiwari <alok.a.tiwari@xxxxxxxxxx>

Reviewed-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

Thanks.

(This time not in html.)


> ---
> Documentation/driver-api/cxl/memory-devices.rst | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/driver-api/cxl/memory-devices.rst b/Documentation/driver-api/cxl/memory-devices.rst
> index d732c42526df..e9e2952a967d 100644
> --- a/Documentation/driver-api/cxl/memory-devices.rst
> +++ b/Documentation/driver-api/cxl/memory-devices.rst
> @@ -29,8 +29,8 @@ Platform firmware enumerates a menu of interleave options at the "CXL root port"
> (Linux term for the top of the CXL decode topology). From there, PCIe topology
> dictates which endpoints can participate in which Host Bridge decode regimes.
> Each PCIe Switch in the path between the root and an endpoint introduces a point
> -at which the interleave can be split. For example platform firmware may say at a
> -given range only decodes to 1 one Host Bridge, but that Host Bridge may in turn
> +at which the interleave can be split. For example, platform firmware may say at a
> +given range only decodes to one Host Bridge, but that Host Bridge may in turn
> interleave cycles across multiple Root Ports. An intervening Switch between a
> port and an endpoint may interleave cycles across multiple Downstream Switch
> Ports, etc.
> @@ -187,7 +187,7 @@ decodes them to "ports", "ports" decode to "endpoints", and "endpoints"
> represent the decode from SPA (System Physical Address) to DPA (Device Physical
> Address).
>
> -Continuing the RAID analogy, disks have both topology metadata and on device
> +Continuing the RAID analogy, disks have both topology metadata and on-device
> metadata that determine RAID set assembly. CXL Port topology and CXL Port link
> status is metadata for CXL.mem set assembly. The CXL Port topology is enumerated
> by the arrival of a CXL.mem device. I.e. unless and until the PCIe core attaches
> @@ -197,7 +197,7 @@ the Linux PCI core to tear down switch-level CXL resources because the endpoint
> ->remove() event cleans up the port data that was established to support that
> Memory Expander.
>
> -The port metadata and potential decode schemes that a give memory device may
> +The port metadata and potential decode schemes that a given memory device may
> participate can be determined via a command like::
>
> # cxl list -BDMu -d root -m mem3
> @@ -249,8 +249,8 @@ participate can be determined via a command like::
> ...which queries the CXL topology to ask "given CXL Memory Expander with a kernel
> device name of 'mem3' which platform level decode ranges may this device
> participate". A given expander can participate in multiple CXL.mem interleave
> -sets simultaneously depending on how many decoder resource it has. In this
> -example mem3 can participate in one or more of a PMEM interleave that spans to
> +sets simultaneously depending on how many decoder resources it has. In this
> +example mem3 can participate in one or more of a PMEM interleave that spans two
> Host Bridges, a PMEM interleave that targets a single Host Bridge, a Volatile
> memory interleave that spans 2 Host Bridges, and a Volatile memory interleave
> that only targets a single Host Bridge.

--
~Randy


Return-Path: <linux-kernel+bounces-669178-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8FB1B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:59:31 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 0E9A5189EABA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:59:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id ACA28192B96;
Sat, 31 May 2025 16:59:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="ceM3X11a"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E0DF5187876;
Sat, 31 May 2025 16:59:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748710763; cv=none; b=h29teyGpqzs6C1/AToUTBTAqd83zbDwSTDqcS/P26zn+pAu+SdQuk4MzsGGG6NfTkHPs+GWY57UKwEB6Du77PaJqs+tSvu8HmWP9gx+PUNjW0igp+5JglMaCJiJBO85LbWPtNvgtCyWGK9gQA7S1YVsQSRezQJJsp2wyi1nTkqM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748710763; c=relaxed/simple;
bh=020HNIG7VGv4tWglrR3QM9zbyoK4KILepGoPbR3KKYo=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=sq9mt2PVf+TXHi6ksZaf3HkhyXzyp+15ZCyLlBse1vxsPpPsb+1XaMpHpfp5MdkIx3lRcsv1pgWpo7SxplWNI8kiD35fk6HcBE1AC74i6ukvc+eRRfJdG+1gyYsD3EKXrw92p4VStp1zAuk2VlbkFosyS9G0A+BYF3+kSGe8lMQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=ceM3X11a; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id ECFB6C4CEE3;
Sat, 31 May 2025 16:59:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748710762;
bh=020HNIG7VGv4tWglrR3QM9zbyoK4KILepGoPbR3KKYo=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=ceM3X11ayXqkmDcFAw3UJfnl2nF43MG7ei8iTLYD7TLfUJ7byPXpdGkuh3vNXvavC
0WtgSPcGjJFRqc1xtVrhjp1ogdKWeZas7Zk2Oomz+qcdn4Yu/IlGVQMyRTkOCOqnIi
l0UaB8D/nMcmPRI5C24/gOqwTcycjE7ifiq3qG9/LVodanzD5g70CdyBrIAXlzFegR
rWDuhGP4/EublgUfn4P6CzvB0YHMw3P3lbL+ZST+iBod7tnuz2ZIyjlCAhExcc9x0b
WW+YHMvBNBOieV2Zl/Us4b8ZzYIj6U7nHvZSZiII4FKlkkPZbEwZPHWE4GOTptrAY/
uBwQPZbBN02Xw==
Date: Sat, 31 May 2025 17:59:13 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Denis Benato <benato.denis96@xxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Alex Lanzano <lanzano.alex@xxxxxxxxx>, Andy
Shevchenko <andy@xxxxxxxxxx>, Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?=
<u.kleine-koenig@xxxxxxxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Danila Tikhonov <danila@xxxxxxxxxxx>, Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx>,
"Derek J . Clark" <derekjohn.clark@xxxxxxxxx>, Philip =?UTF-8?B?TcO8bGxl?=
=?UTF-8?B?cg==?= <philm@xxxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, Justin Weiss <justin@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v2 1/2] iio: bmi270: suspend and resume triggering on
relevant pm operations
Message-ID: <20250531175913.251d64d3@jic23-huawei>
In-Reply-To: <20250525142530.71955-2-benato.denis96@xxxxxxxxx>
References: <20250525142530.71955-1-benato.denis96@xxxxxxxxx>
<20250525142530.71955-2-benato.denis96@xxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sun, 25 May 2025 16:25:29 +0200
Denis Benato <benato.denis96@xxxxxxxxx> wrote:

> Prevent triggers from stop working after the device has entered sleep:
> use iio_device_suspend_triggering and iio_device_resume_triggering helpers.
>
> Closes: https://lore.kernel.org/all/31d7f7aa-e834-4fd0-a66a-e0ff528425dc@xxxxxxxxx

This is a tag, so no blank line here.

I've fixed this in both patches and applied them to the to testing branch of iio.
Currently I'm not planning to rush these in but I could treat them as fixes if
general view is that I should.

>
> Signed-off-by: Denis Benato <benato.denis96@xxxxxxxxx>
> Tested-by: Justin Weiss <justin@xxxxxxxxxxxxxxx>
> ---
> drivers/iio/imu/bmi270/bmi270.h | 2 ++
> drivers/iio/imu/bmi270/bmi270_core.c | 20 ++++++++++++++++++++
> drivers/iio/imu/bmi270/bmi270_i2c.c | 2 ++
> drivers/iio/imu/bmi270/bmi270_spi.c | 2 ++
> 4 files changed, 26 insertions(+)
>
> diff --git a/drivers/iio/imu/bmi270/bmi270.h b/drivers/iio/imu/bmi270/bmi270.h
> index d94525f6aee8..a6c4204032fc 100644
> --- a/drivers/iio/imu/bmi270/bmi270.h
> +++ b/drivers/iio/imu/bmi270/bmi270.h
> @@ -20,4 +20,6 @@ struct device;
> int bmi270_core_probe(struct device *dev, struct regmap *regmap,
> const struct bmi270_chip_info *chip_info);
>
> +extern const struct dev_pm_ops bmi270_core_pm_ops;
> +
> #endif /* BMI270_H_ */
> diff --git a/drivers/iio/imu/bmi270/bmi270_core.c b/drivers/iio/imu/bmi270/bmi270_core.c
> index 2e4469f30d53..b54658f972ad 100644
> --- a/drivers/iio/imu/bmi270/bmi270_core.c
> +++ b/drivers/iio/imu/bmi270/bmi270_core.c
> @@ -982,6 +982,7 @@ int bmi270_core_probe(struct device *dev, struct regmap *regmap,
> indio_dev->available_scan_masks = bmi270_avail_scan_masks;
> indio_dev->modes = INDIO_DIRECT_MODE;
> indio_dev->info = &bmi270_info;
> + dev_set_drvdata(data->dev, indio_dev);
>
> ret = bmi270_trigger_probe(data, indio_dev);
> if (ret)
> @@ -997,6 +998,25 @@ int bmi270_core_probe(struct device *dev, struct regmap *regmap,
> }
> EXPORT_SYMBOL_NS_GPL(bmi270_core_probe, "IIO_BMI270");
>
> +static int bmi270_core_runtime_suspend(struct device *dev)
> +{
> + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> +
> + return iio_device_suspend_triggering(indio_dev);
> +}
> +
> +static int bmi270_core_runtime_resume(struct device *dev)
> +{
> + struct iio_dev *indio_dev = dev_get_drvdata(dev);
> +
> + return iio_device_resume_triggering(indio_dev);
> +}
> +
> +const struct dev_pm_ops bmi270_core_pm_ops = {
> + RUNTIME_PM_OPS(bmi270_core_runtime_suspend, bmi270_core_runtime_resume, NULL)
> +};
> +EXPORT_SYMBOL_NS_GPL(bmi270_core_pm_ops, "IIO_BMI270");
> +
> MODULE_AUTHOR("Alex Lanzano");
> MODULE_DESCRIPTION("BMI270 driver");
> MODULE_LICENSE("GPL");
> diff --git a/drivers/iio/imu/bmi270/bmi270_i2c.c b/drivers/iio/imu/bmi270/bmi270_i2c.c
> index 44699ab58909..c77839b03a96 100644
> --- a/drivers/iio/imu/bmi270/bmi270_i2c.c
> +++ b/drivers/iio/imu/bmi270/bmi270_i2c.c
> @@ -4,6 +4,7 @@
> #include <linux/iio/iio.h>
> #include <linux/module.h>
> #include <linux/mod_devicetable.h>
> +#include <linux/pm.h>
> #include <linux/regmap.h>
>
> #include "bmi270.h"
> @@ -52,6 +53,7 @@ static const struct of_device_id bmi270_of_match[] = {
> static struct i2c_driver bmi270_i2c_driver = {
> .driver = {
> .name = "bmi270_i2c",
> + .pm = pm_ptr(&bmi270_core_pm_ops),
> .acpi_match_table = bmi270_acpi_match,
> .of_match_table = bmi270_of_match,
> },
> diff --git a/drivers/iio/imu/bmi270/bmi270_spi.c b/drivers/iio/imu/bmi270/bmi270_spi.c
> index 88a77aba5e4f..19dd7734f9d0 100644
> --- a/drivers/iio/imu/bmi270/bmi270_spi.c
> +++ b/drivers/iio/imu/bmi270/bmi270_spi.c
> @@ -3,6 +3,7 @@
> #include <linux/iio/iio.h>
> #include <linux/mod_devicetable.h>
> #include <linux/module.h>
> +#include <linux/pm.h>
> #include <linux/regmap.h>
> #include <linux/spi/spi.h>
>
> @@ -79,6 +80,7 @@ static const struct of_device_id bmi270_of_match[] = {
> static struct spi_driver bmi270_spi_driver = {
> .driver = {
> .name = "bmi270",
> + .pm = pm_ptr(&bmi270_core_pm_ops),
> .of_match_table = bmi270_of_match,
> },
> .probe = bmi270_spi_probe,



Return-Path: <linux-kernel+bounces-669179-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id AA21541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:03:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id B35BA7A6011
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:02:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 14194188A0E;
Sat, 31 May 2025 17:03:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="AOo4/ZeE"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E7CAD290F;
Sat, 31 May 2025 17:03:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748711009; cv=none; b=I1o3Z9eswraUbKQimyYracxEdTfrIrwQ/EHdEZPwgsrFhpqfn2mBr5xuGKK+wxFXgVeKbcc2VcdqGlhhnBscQGFS+47tLBiGMRDL6RL4ro6Fe0Udnz3+cej5O0Smw8obCTMr+JJuMuwHz/08DwLStyf/X5FWhhdSRY3nZLOUH5U=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748711009; c=relaxed/simple;
bh=zELDVTQmOQiapIfQpA7SV2UfpOmvrTozdeB+kwVTqZ4=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=TOmpvDn9+KNjfZcJhD0dnSCgGfPfgGbmfEoWxhcYcq54Aa9cb0IFGRTv1D4AYyJxBPxN5XcQE3PC0ZbRtIhP7bkEPU3Uu48XoIxetixvBRiQM5Aw4pR+1v5u3XlcR/qaDPsKl1fVtTb6dFyiJRjds2M7+I5UrDE2UH3Jtqv60qE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=AOo4/ZeE; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A98CEC4CEE3;
Sat, 31 May 2025 17:03:24 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748711008;
bh=zELDVTQmOQiapIfQpA7SV2UfpOmvrTozdeB+kwVTqZ4=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=AOo4/ZeEg9jBo2TBmwAobYHj77/Aa7gij5kmklFMwoxh9ZXTcKQShJ9616tSF+lfW
SPoc4ulZdsWAG0wOL3gcORATRWI1RGwiZ+eeL4vxxK2qL+U/PziSCrHYQMk+GTxyPO
mq4US6BRcsDVfgSjfwggzyTURCADRT3IAzsDRrOr42zbQH86rIAuY7Ym4EOT9VrDDc
IFXDRh87RWhTHIVrjJcvDIgBl4kMVJ3em6WNrhES2IbPr2Txzq4eITXeEb+8Ub6gVa
hIQHyIEu/SJKka5qPffXlzJ644oXjYyk3+Z42xbXMmY5OYdERcw5mnhGwn+R6Ydgeh
gknPOuR9CW97A==
Date: Sat, 31 May 2025 18:03:19 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Maud Spierings via B4 Relay
<devnull+maudspierings.gocontroll.com@xxxxxxxxxx>
Cc: maudspierings@xxxxxxxxxxxxxx, David Lechner <dlechner@xxxxxxxxxxxx>,
Nuno =?UTF-8?B?U8Oh?= <nuno.sa@xxxxxxxxxx>, Andy Shevchenko
<andy@xxxxxxxxxx>, Christian Heusel <christian@xxxxxxxxx>, Linus Walleij
<linus.walleij@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, stable@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v4] iio: common: st_sensors: Fix use of uninitialize
device structs
Message-ID: <20250531180319.21365159@jic23-huawei>
In-Reply-To: <20250527-st_iio_fix-v4-1-12d89801c761@xxxxxxxxxxxxxx>
References: <20250527-st_iio_fix-v4-1-12d89801c761@xxxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Tue, 27 May 2025 08:36:08 +0200
Maud Spierings via B4 Relay <devnull+maudspierings.gocontroll.com@xxxxxxxxxx> wrote:

> From: Maud Spierings <maudspierings@xxxxxxxxxxxxxx>
>
> Throughout the various probe functions &indio_dev->dev is used before it
> is initialized. This caused a kernel panic in st_sensors_power_enable()
> when the call to devm_regulator_bulk_get_enable() fails and then calls
> dev_err_probe() with the uninitialized device.
>
> This seems to only cause a panic with dev_err_probe(), dev_err(),
> dev_warn() and dev_info() don't seem to cause a panic, but are fixed
> as well.
>
> The issue is reported and traced here: [1]
>
> Link: https://lore.kernel.org/all/AM7P189MB100986A83D2F28AF3FFAF976E39EA@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ [1]
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Maud Spierings <maudspierings@xxxxxxxxxxxxxx>
> ---
> When I search for general &indio_dev->dev usage, I see quite a lot more
> hits, but I am not sure if there are issues with those too.

For probe error messages I'd like to see them all moved over to the parent
device but more generally it may make sense to use indio_dev->dev

As per the earlier discussion I still wonder if we should harden
device_set_deferred_reason() against this condition just as a
defense in depth thing.

Anyhow, this is a good change in any case. Applied to the fixes-togreg-for-6.16 branch
that I'll rebase on rc1 once available.

Thanks,

Jonathan


>
> This issue has existed for a long time it seems and therefore it is
> nearly impossible to find a proper fixes tag. I would love to see it at
> least backported to 6.12 as that is where I encountered it, and I
> believe the patch should apply without conflicts.
> ---
> Changes in v4:
> - Put the link to the original issue in a proper link tag
> - Remove stray newline
> - Link to v3: https://lore.kernel.org/r/20250526-st_iio_fix-v3-1-039fec38707c@xxxxxxxxxxxxxx
>
> Changes in v3:
> - Added the stable cc to the commit message
> - Move the link to the original issue to the commit message
> - Fix function notation in the commit message
> - Move some more of the dev_*() calls to one line
> - Link to v2: https://lore.kernel.org/r/20250522-st_iio_fix-v2-1-07a32655a996@xxxxxxxxxxxxxx
>
> Changes in v2:
> - Added SoB in commit message
> - Link to v1: https://lore.kernel.org/r/20250522-st_iio_fix-v1-1-d689b35f1612@xxxxxxxxxxxxxx
> ---
> drivers/iio/accel/st_accel_core.c | 10 +++---
> drivers/iio/common/st_sensors/st_sensors_core.c | 36 ++++++++++------------
> drivers/iio/common/st_sensors/st_sensors_trigger.c | 20 ++++++------
> 3 files changed, 31 insertions(+), 35 deletions(-)
>
> diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
> index 99cb661fabb2d9cc1943fa8d0a6f3becb71126e6..a7961c610ed203d039bbf298c8883031a578fb0b 100644
> --- a/drivers/iio/accel/st_accel_core.c
> +++ b/drivers/iio/accel/st_accel_core.c
> @@ -1353,6 +1353,7 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev)
> union acpi_object *ont;
> union acpi_object *elements;
> acpi_status status;
> + struct device *parent = indio_dev->dev.parent;
> int ret = -EINVAL;
> unsigned int val;
> int i, j;
> @@ -1371,7 +1372,7 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev)
> };
>
>
> - adev = ACPI_COMPANION(indio_dev->dev.parent);
> + adev = ACPI_COMPANION(parent);
> if (!adev)
> return -ENXIO;
>
> @@ -1380,8 +1381,7 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev)
> if (status == AE_NOT_FOUND) {
> return -ENXIO;
> } else if (ACPI_FAILURE(status)) {
> - dev_warn(&indio_dev->dev, "failed to execute _ONT: %d\n",
> - status);
> + dev_warn(parent, "failed to execute _ONT: %d\n", status);
> return status;
> }
>
> @@ -1457,12 +1457,12 @@ static int apply_acpi_orientation(struct iio_dev *indio_dev)
> }
>
> ret = 0;
> - dev_info(&indio_dev->dev, "computed mount matrix from ACPI\n");
> + dev_info(parent, "computed mount matrix from ACPI\n");
>
> out:
> kfree(buffer.pointer);
> if (ret)
> - dev_dbg(&indio_dev->dev,
> + dev_dbg(parent,
> "failed to apply ACPI orientation data: %d\n", ret);
>
> return ret;
> diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
> index 8ce1dccfea4f5aaff45d3d40f6542323dd1f0b09..dac593be56958fd0be92e13f628350fcfd0f040d 100644
> --- a/drivers/iio/common/st_sensors/st_sensors_core.c
> +++ b/drivers/iio/common/st_sensors/st_sensors_core.c
> @@ -154,7 +154,7 @@ static int st_sensors_set_fullscale(struct iio_dev *indio_dev, unsigned int fs)
> return err;
>
> st_accel_set_fullscale_error:
> - dev_err(&indio_dev->dev, "failed to set new fullscale.\n");
> + dev_err(indio_dev->dev.parent, "failed to set new fullscale.\n");
> return err;
> }
>
> @@ -231,8 +231,7 @@ int st_sensors_power_enable(struct iio_dev *indio_dev)
> ARRAY_SIZE(regulator_names),
> regulator_names);
> if (err)
> - return dev_err_probe(&indio_dev->dev, err,
> - "unable to enable supplies\n");
> + return dev_err_probe(parent, err, "unable to enable supplies\n");
>
> return 0;
> }
> @@ -241,13 +240,14 @@ EXPORT_SYMBOL_NS(st_sensors_power_enable, "IIO_ST_SENSORS");
> static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev,
> struct st_sensors_platform_data *pdata)
> {
> + struct device *parent = indio_dev->dev.parent;
> struct st_sensor_data *sdata = iio_priv(indio_dev);
>
> /* Sensor does not support interrupts */
> if (!sdata->sensor_settings->drdy_irq.int1.addr &&
> !sdata->sensor_settings->drdy_irq.int2.addr) {
> if (pdata->drdy_int_pin)
> - dev_info(&indio_dev->dev,
> + dev_info(parent,
> "DRDY on pin INT%d specified, but sensor does not support interrupts\n",
> pdata->drdy_int_pin);
> return 0;
> @@ -256,29 +256,27 @@ static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev,
> switch (pdata->drdy_int_pin) {
> case 1:
> if (!sdata->sensor_settings->drdy_irq.int1.mask) {
> - dev_err(&indio_dev->dev,
> - "DRDY on INT1 not available.\n");
> + dev_err(parent, "DRDY on INT1 not available.\n");
> return -EINVAL;
> }
> sdata->drdy_int_pin = 1;
> break;
> case 2:
> if (!sdata->sensor_settings->drdy_irq.int2.mask) {
> - dev_err(&indio_dev->dev,
> - "DRDY on INT2 not available.\n");
> + dev_err(parent, "DRDY on INT2 not available.\n");
> return -EINVAL;
> }
> sdata->drdy_int_pin = 2;
> break;
> default:
> - dev_err(&indio_dev->dev, "DRDY on pdata not valid.\n");
> + dev_err(parent, "DRDY on pdata not valid.\n");
> return -EINVAL;
> }
>
> if (pdata->open_drain) {
> if (!sdata->sensor_settings->drdy_irq.int1.addr_od &&
> !sdata->sensor_settings->drdy_irq.int2.addr_od)
> - dev_err(&indio_dev->dev,
> + dev_err(parent,
> "open drain requested but unsupported.\n");
> else
> sdata->int_pin_open_drain = true;
> @@ -336,6 +334,7 @@ EXPORT_SYMBOL_NS(st_sensors_dev_name_probe, "IIO_ST_SENSORS");
> int st_sensors_init_sensor(struct iio_dev *indio_dev,
> struct st_sensors_platform_data *pdata)
> {
> + struct device *parent = indio_dev->dev.parent;
> struct st_sensor_data *sdata = iio_priv(indio_dev);
> struct st_sensors_platform_data *of_pdata;
> int err = 0;
> @@ -343,7 +342,7 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
> mutex_init(&sdata->odr_lock);
>
> /* If OF/DT pdata exists, it will take precedence of anything else */
> - of_pdata = st_sensors_dev_probe(indio_dev->dev.parent, pdata);
> + of_pdata = st_sensors_dev_probe(parent, pdata);
> if (IS_ERR(of_pdata))
> return PTR_ERR(of_pdata);
> if (of_pdata)
> @@ -370,7 +369,7 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
> if (err < 0)
> return err;
> } else
> - dev_info(&indio_dev->dev, "Full-scale not possible\n");
> + dev_info(parent, "Full-scale not possible\n");
>
> err = st_sensors_set_odr(indio_dev, sdata->odr);
> if (err < 0)
> @@ -405,7 +404,7 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev,
> mask = sdata->sensor_settings->drdy_irq.int2.mask_od;
> }
>
> - dev_info(&indio_dev->dev,
> + dev_info(parent,
> "set interrupt line to open drain mode on pin %d\n",
> sdata->drdy_int_pin);
> err = st_sensors_write_data_with_mask(indio_dev, addr,
> @@ -593,21 +592,20 @@ EXPORT_SYMBOL_NS(st_sensors_get_settings_index, "IIO_ST_SENSORS");
> int st_sensors_verify_id(struct iio_dev *indio_dev)
> {
> struct st_sensor_data *sdata = iio_priv(indio_dev);
> + struct device *parent = indio_dev->dev.parent;
> int wai, err;
>
> if (sdata->sensor_settings->wai_addr) {
> err = regmap_read(sdata->regmap,
> sdata->sensor_settings->wai_addr, &wai);
> if (err < 0) {
> - dev_err(&indio_dev->dev,
> - "failed to read Who-Am-I register.\n");
> - return err;
> + return dev_err_probe(parent, err,
> + "failed to read Who-Am-I register.\n");
> }
>
> if (sdata->sensor_settings->wai != wai) {
> - dev_warn(&indio_dev->dev,
> - "%s: WhoAmI mismatch (0x%x).\n",
> - indio_dev->name, wai);
> + dev_warn(parent, "%s: WhoAmI mismatch (0x%x).\n",
> + indio_dev->name, wai);
> }
> }
>
> diff --git a/drivers/iio/common/st_sensors/st_sensors_trigger.c b/drivers/iio/common/st_sensors/st_sensors_trigger.c
> index 9d4bf822a15dfcdd6c2835f6b9d7698cd3cb0b08..8a8ab688d7980f6dd43c660f90a0eba32c38388b 100644
> --- a/drivers/iio/common/st_sensors/st_sensors_trigger.c
> +++ b/drivers/iio/common/st_sensors/st_sensors_trigger.c
> @@ -127,7 +127,7 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> sdata->trig = devm_iio_trigger_alloc(parent, "%s-trigger",
> indio_dev->name);
> if (sdata->trig == NULL) {
> - dev_err(&indio_dev->dev, "failed to allocate iio trigger.\n");
> + dev_err(parent, "failed to allocate iio trigger.\n");
> return -ENOMEM;
> }
>
> @@ -143,7 +143,7 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> case IRQF_TRIGGER_FALLING:
> case IRQF_TRIGGER_LOW:
> if (!sdata->sensor_settings->drdy_irq.addr_ihl) {
> - dev_err(&indio_dev->dev,
> + dev_err(parent,
> "falling/low specified for IRQ but hardware supports only rising/high: will request rising/high\n");
> if (irq_trig == IRQF_TRIGGER_FALLING)
> irq_trig = IRQF_TRIGGER_RISING;
> @@ -156,21 +156,19 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> sdata->sensor_settings->drdy_irq.mask_ihl, 1);
> if (err < 0)
> return err;
> - dev_info(&indio_dev->dev,
> + dev_info(parent,
> "interrupts on the falling edge or active low level\n");
> }
> break;
> case IRQF_TRIGGER_RISING:
> - dev_info(&indio_dev->dev,
> - "interrupts on the rising edge\n");
> + dev_info(parent, "interrupts on the rising edge\n");
> break;
> case IRQF_TRIGGER_HIGH:
> - dev_info(&indio_dev->dev,
> - "interrupts active high level\n");
> + dev_info(parent, "interrupts active high level\n");
> break;
> default:
> /* This is the most preferred mode, if possible */
> - dev_err(&indio_dev->dev,
> + dev_err(parent,
> "unsupported IRQ trigger specified (%lx), enforce rising edge\n", irq_trig);
> irq_trig = IRQF_TRIGGER_RISING;
> }
> @@ -179,7 +177,7 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> if (irq_trig == IRQF_TRIGGER_FALLING ||
> irq_trig == IRQF_TRIGGER_RISING) {
> if (!sdata->sensor_settings->drdy_irq.stat_drdy.addr) {
> - dev_err(&indio_dev->dev,
> + dev_err(parent,
> "edge IRQ not supported w/o stat register.\n");
> return -EOPNOTSUPP;
> }
> @@ -214,13 +212,13 @@ int st_sensors_allocate_trigger(struct iio_dev *indio_dev,
> sdata->trig->name,
> sdata->trig);
> if (err) {
> - dev_err(&indio_dev->dev, "failed to request trigger IRQ.\n");
> + dev_err(parent, "failed to request trigger IRQ.\n");
> return err;
> }
>
> err = devm_iio_trigger_register(parent, sdata->trig);
> if (err < 0) {
> - dev_err(&indio_dev->dev, "failed to register iio trigger.\n");
> + dev_err(parent, "failed to register iio trigger.\n");
> return err;
> }
> indio_dev->trig = iio_trigger_get(sdata->trig);
>
> ---
> base-commit: 7bac2c97af4078d7a627500c9bcdd5b033f97718
> change-id: 20250522-st_iio_fix-1c58fdd4d420
>
> Best regards,



Return-Path: <linux-kernel+bounces-669180-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DB91A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:05:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 8C7029E3CAE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:05:06 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F03F51465A1;
Sat, 31 May 2025 17:05:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="lss9qpmC"
Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79BBD13790B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:05:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748711122; cv=none; b=gHbi3Zwjw0nrhNOM7Ayjbi5WGMiJd9JPj/wubVpmc1bAbNVCCJOwp/AALylm6f0vjERXgimx52v4oUMeaHpliOauUNZ0ZtA5ykBWmynlLa9HC3uacqxA76y1xm0P0jyNqrtel3vNllIY8iZzxVkq/vI3gihlMYuzFXWvETpVSAg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748711122; c=relaxed/simple;
bh=x0iEMPA1LrYRc3lyTC/SW6IUNprH/IgN7GM+dmDoORE=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=uYN54aUTMLlGc1uwbzSqAaMe+AvTQdEgwwqY2Dw1p+RhlmNKxPY4JOB5FKyqUznJL286R+O3ho728A/hT4nplpeEud65zeoqwKvGle6+l/meX9GA2XljFyBQCNy2q5GpW5ddO+MZFPrMNBdOhxhcXeFTixbWcJokyBEGpv0HH0w=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=lss9qpmC; arc=none smtp.client-ip=209.85.210.174
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org
Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-7406c6dd2b1so3354247b3a.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:05:20 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linaro.org; s=google; t=1748711120; x=1749315920; darn=vger.kernel.org;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date:from:to
:cc:subject:date:message-id:reply-to;
bh=lM+Vm1sxzlwErSkujNdEr6GDSE2t0p0EBV3tSTtUlbs=;
b=lss9qpmCSOmcyVxg7ceJQ2HnWtOtDRTEcskH7JBtdCeCig+9Gzp+EUpc4PswxaAEAE
IVx2zhpMLc9Vs4sStL85NsIYuP2g7BAWCsurnBvCiTidbIHfTtJCl/XX3sRmF/se9ytE
PlkGHztNyMplHmeU0L/UDko1afRsjUfLoksysftg2xJMyaaM7PPWdRo7BcOPjr9M3ue9
MPsLcbkkgRPio3MWHaR0WobUYHuZ3R6D9uqmOQvEFBiDlp7UoeeI7nbdCuGAq2qAjzkS
NQJKDWYhJSBp+fQcCl50ImhCP+DFIvBovcVw+QLhwTw9N8apodn3VB3O1ZhOyPOR9SCN
03nA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748711120; x=1749315920;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=lM+Vm1sxzlwErSkujNdEr6GDSE2t0p0EBV3tSTtUlbs=;
b=S3aJgsybE6N30Fq2M0o9DDgH2Spck5Q6QtP1hyz0nu0NKyPdOL9qmNAr4uxEyXSkYp
lZgSDWRUexyuVKrrtFmVS9xHlirlDnwD1BwOA3bmVYDL2TUj10xxE9LOUgx7ArTLO9+i
zb1TZJSEMoUqJlDddOVbjmCEgoP9JVREX1qGrE0vi5xYQAqNDw0PM/FrL8S6pPvOJYk9
sK6swRvwwvefSDZ9+yGM7kCL9RysLd+Xho90YhnTBJvv+8pZt7Nt37IrnYxyvKsQu7IV
xlhNW2Jsd4MnnuyxnghazG+kVCawE3Yy/Enw84GBkesRZq9fjhFX5bbYwbcgSdsh8gqS
+XXA==
X-Forwarded-Encrypted: i=1; AJvYcCW7FVmFBlYCxg4fZHdAGbKab1Y34BxBeqbRlw3O6vr+lR4OByD3xX25AYphcy7qlnxU5KCRFnxUqIJs9vw=@vger.kernel.org
X-Gm-Message-State: AOJu0Yxg/zxTftUAWnshURup/8DhCKbtws1fxCLIwO0imMDOLZBS4oex
gWEzabRoHp5tJI9KYoPr5kh0Qr8vk5DDc/g8e+B0Lt3t93qK+kbJ0uXos2A3+mzwzQ==
X-Gm-Gg: ASbGnctoPMOXqa6qaz+6WEItt9pvpblYB8egNzp4DWT9v9wiyQomD+VRWC4c0Xlt0s+
bAr5CR5px4ja5u5Re3ncIkocj4yO5H6KshKi9OO8R4y/J2vok0SFyLfvRoVF9WmLycenoslMPjh
vvDfAG60ZsBmfZuQqCGEHT3ur0aFn7LKP00kBqPn+LmezPng6jESdAEYa4QlXzNWU9TUBHwo6H5
FgxGIvHKCfZdkQy8SPh1xnJfDftQeo0XrivZZz7mAfr1aQE3JXWClnzQbW1Bb/FC5wNmkShAZyX
/ZngWIg9Q0YSZMMvXwp/3T1+d2N3uReM5tygmJJsh5lCTQ6yQgeSdq40KkgNpA==
X-Google-Smtp-Source: AGHT+IFdEaiMsq9p/fY62ZuESsu9h6XTS78Q7H6VtGsbnxe3keQhoidzBkD/oQVVVD2Dr/Suvz582Q==
X-Received: by 2002:a17:902:e74f:b0:234:9fe1:8fc6 with SMTP id d9443c01a7336-234f6a08ab9mr185502615ad.18.1748711119638;
Sat, 31 May 2025 10:05:19 -0700 (PDT)
Received: from thinkpad ([120.56.204.95])
by smtp.gmail.com with ESMTPSA id d9443c01a7336-23506cd38e0sm44835625ad.138.2025.05.31.10.05.15
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 10:05:19 -0700 (PDT)
Date: Sat, 31 May 2025 22:35:12 +0530
From: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
To: shao.mingyin@xxxxxxxxxx
Cc: lpieralisi@xxxxxxxxxx, kw@xxxxxxxxx, robh@xxxxxxxxxx,
bhelgaas@xxxxxxxxxx, michal.simek@xxxxxxx, linux-pci@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, yang.yang29@xxxxxxxxxx,
xu.xin16@xxxxxxxxxx, ye.xingchen@xxxxxxxxxx, xie.ludan@xxxxxxxxxx
Subject: Re: [PATCH] PCI: xilinx-xdma: Use =?utf-8?Q?devm=5Fplatform=5Fior?=
=?utf-8?B?ZW1hcF9yZXNvdXJjZV9ieW5hbWXCoMKg?=
Message-ID: <i4qf2oycket7gkvyd3tfdzub32xlx27oydcporfb6thc4yosbq@grgbbjgymvgw>
References: <20250403154654546Uoj1gN_pronbxhSLPEIUn@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20250403154654546Uoj1gN_pronbxhSLPEIUn@xxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Thu, Apr 03, 2025 at 03:46:54PM +0800, shao.mingyin@xxxxxxxxxx wrote:
> From: Xie Ludan <xie.ludan@xxxxxxxxxx>
>
> Introduce devm_platform_ioremap_resource_byname() to simplify
> resource retrieval and mapping.This new function consolidates
> platform_get_resource_byname() and devm_ioremap_resource() into a single
> call, improving code readability and reducing API call overhead.
>
> Signed-off-by: Xie Ludan <xie.ludan@xxxxxxxxxx>
> Signed-off-by: Shao Mingyin <shao.mingyin@xxxxxxxxxx>
> ---
> drivers/pci/controller/pcie-xilinx-dma-pl.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/pci/controller/pcie-xilinx-dma-pl.c b/drivers/pci/controller/pcie-xilinx-dma-pl.c
> index dd117f07fc95..238deec3b948 100644
> --- a/drivers/pci/controller/pcie-xilinx-dma-pl.c
> +++ b/drivers/pci/controller/pcie-xilinx-dma-pl.c
> @@ -753,8 +753,7 @@ static int xilinx_pl_dma_pcie_parse_dt(struct pl_dma_pcie *port,
>
> if (port->variant->version == QDMA) {
> port->cfg_base = port->cfg->win;
> - res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg");
> - port->reg_base = devm_ioremap_resource(dev, res);
> + port->reg_base = devm_platform_ioremap_resource_byname(pdev, "breg");

This patch is entirely wrong as 'res' is used below. Please do not send buggy
cleanup patches.

- Mani

--
மணிவண�ணன� �தா�ிவம�


Return-Path: <linux-kernel+bounces-669181-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3869441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:08:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 0E89F7AE0FE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:06:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C604F187876;
Sat, 31 May 2025 17:08:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UUnA6Hly"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 13AEA45C14;
Sat, 31 May 2025 17:07:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748711280; cv=none; b=ooY0w+wz5FFp5eAJaODxPXaD2F+jK5MhlVQwBFk3BHs8uUnJW6o52f+uVJb2ngDWbrLN95ISC7v2k8L2thMfZHelO/J8eQmecmnIz2Xgua4BGk967m6M0Sn9+3iTh6Vg8x3bs50LDMGFQaHD4KRLfpfg+C9hXWXq7xiXEW8VCT0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748711280; c=relaxed/simple;
bh=aSOMo378xDNB/Q1bUszkJNg9T/8HO79eDD4pINt+f9I=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=hwS9lqhhHKNC3d1O4B536QAeQSBHe6beIeYsRzTPe41QO30VOaTi1Df1Iluh1/E9RGx0JJAkPTuzGQPw+ZtjC0o7F5hQe9HN0PIaw+CimJgFjtF2UHW+nInRdRRFJA557B8gChV/9HsWSLvQqYS7EfHNlFWsmA/eB3PzsjVXqsA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UUnA6Hly; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8C7B2C4CEEE;
Sat, 31 May 2025 17:07:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748711279;
bh=aSOMo378xDNB/Q1bUszkJNg9T/8HO79eDD4pINt+f9I=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=UUnA6HlyqXLjdyhxTOguPm9aghp8EJvU+JZ1h2VkY7aZ3E5DtJ8DUgmBAP5YHYmgI
zkWDrc0Y0tv37uSFMcENWdlDDVi+B8E5ZXsCd4/4ekrtPfex3nQN4aVjCiF4pUVtFg
qPEBihGQQmbAXNiqLpjTjtMvzf6COL4eX26EA+DCqpM3om+bHHS54BF4PhWloXxU9B
n0rTuq7xARSM55BRpsjxtQha1p3sSEc4g5Pz9gQdzoM9YQ3L1KO87QfHX9Y7mITTDj
3/EKwmjYU5dSpgtx/LZKB5+N0mgmvkA0fIk3horV5Y1Jwz6kY8jk6m1RpBEEdPpJw8
spjLU1yWCphGQ==
Date: Sat, 31 May 2025 18:07:53 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx>
Cc: <linux-iio@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>, Nuno
=?UTF-8?B?U8Oh?= <nuno.sa@xxxxxxxxxx>
Subject: Re: [PATCH v2 1/2] iio: adc: ad4080: use lowercase device name
Message-ID: <20250531180753.12357ec5@jic23-huawei>
In-Reply-To: <20250526082228.4961-1-antoniu.miclaus@xxxxxxxxxx>
References: <20250526082228.4961-1-antoniu.miclaus@xxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 11:22:27 +0300
Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx> wrote:

> Update the .name field in the ad4080_chip_info struct
> from "AD4080" to "ad4080" to follow the common convention
> in IIO drivers of using lowercase names for device identifiers.
>=20
> Fixes: 1ff3f56f846b ("iio: adc: ad4080: add driver support")
> Reviewed-by: Nuno S=C3=A1 <nuno.sa@xxxxxxxxxx>
> Signed-off-by: Antoniu Miclaus <antoniu.miclaus@xxxxxxxxxx>
I squashed both patches into the original commit as that is still
on a tree that I can rebase as I'll do that on rc1 anyway once available.

Thanks,

Jonathan

> ---
> changes in v2:
> - drop "no functional changes" from commit body
> - add fixes tag
> drivers/iio/adc/ad4080.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>=20
> diff --git a/drivers/iio/adc/ad4080.c b/drivers/iio/adc/ad4080.c
> index e8b2e5e7a68a..c36eb41d738a 100644
> --- a/drivers/iio/adc/ad4080.c
> +++ b/drivers/iio/adc/ad4080.c
> @@ -433,7 +433,7 @@ static const struct iio_chan_spec ad4080_channel =3D {
> };
> =20
> static const struct ad4080_chip_info ad4080_chip_info =3D {
> - .name =3D "AD4080",
> + .name =3D "ad4080",
> .product_id =3D AD4080_CHIP_ID,
> .scale_table =3D ad4080_scale_table,
> .num_scales =3D ARRAY_SIZE(ad4080_scale_table),



Return-Path: <linux-kernel+bounces-669182-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 76E7741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:13:45 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3D4DA189E724
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:13:58 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CCA4118A959;
Sat, 31 May 2025 17:13:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="JgQd6BcD"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 1A3404C74;
Sat, 31 May 2025 17:13:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748711616; cv=none; b=BWdKxaYVNEOVw1MgvwkA208RSg5eBO3b6+R0ezpfuJiBTO7t/d9y76+M73XAmfMtoJcUCywWEPyBcytu1areBIoEn6VLxJuaRG3rROB34zcqdeBN1fssHeOSI8LhuotpU2C8QlRIu3tTZMXCQ8PX4pH0ECUNcUwRq8yYbzevYR4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748711616; c=relaxed/simple;
bh=WlJNuiE+C9mhjb6dd0QzBTMplOmQ0UM3DzsGqoxwTyE=;
h=Date:From:To:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=J9nBj+PIsEkk96Fd5CxTHoYH1jomDaBGiQe/mi3TLt2LtUR4iq7QKZs9/cMB4+sXGsvBHZsYfGnyOzsavVghV6XPWW9xKnwucenoqF608PMp7HsBIAfDBy/fCeJWJbMF1MZZgBR5GuKB5MF8kWUZ0q4JPmygTBzdDWGCTzIZpJc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=JgQd6BcD; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2A448C4CEE3;
Sat, 31 May 2025 17:13:33 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748711615;
bh=WlJNuiE+C9mhjb6dd0QzBTMplOmQ0UM3DzsGqoxwTyE=;
h=Date:From:To:Subject:From;
b=JgQd6BcDzdLrL6qzYhrttppJeaI0GY/PdGr8PBpKyN0HXXNL8MFk25yHN1bIpDBmU
33UJYBOdeJugeHPrNul0ZQ3Qb9rpqqhAHpuWtSW/J0cH3B/nE1b8+M6CmLEf0zPFUs
wuXMko98VD3gDbaVGplhWRhB7ATqfoYvCBv4Q5NFvOaN2WewfjhB72Lk7aZwz/ayPD
TmLy0gVTP3uheYOtQHInDlTbE+zYeDRpYxewAThmj2qiQ9CnpKpcB3Iqp+2S6jf28r
tU2LcKa85PdqGUE5N6+fuQh+IKraFjneu1Fd0H7A/ivCDKDXp3YIU2jORyiwVXkz5l
MXIOkvlPNuoRg==
Date: Sat, 31 May 2025 19:13:31 +0200
From: Helge Deller <deller@xxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, linux-fbdev@xxxxxxxxxxxxxxx,
dri-devel@xxxxxxxxxxxxxxxxxxxxx
Subject: [GIT PULL] fbdev updates for v6.16-rc1
Message-ID: <aDs4uwcxU_M4mpVE@carbonx1>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Linus,

please pull the fbdev fixes and updates for 6.16-rc1:

Many small but important fixes for special cases in the fbdev, fbcon and vgacon
code, some smaller code cleanups in the nvidiafb, arkfb, atyfb and viafb drivers
and two spelling fixes.

Thanks!
Helge

PS: All patches have been sitting in for-next for at least two days (the
majority of patches since weeks). I did a rebase because fast-forward merging
with head didn't work.

----------------------------------------------------------------
The following changes since commit 0f70f5b08a47a3bc1a252e5f451a137cde7c98ce:

Merge tag 'pull-automount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs (2025-05-30 15:38:29 -0700)

are available in the Git repository at:

http://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev.git tags/fbdev-for-6.16-rc1

for you to fetch changes up to 05f6e183879d9785a3cdf2f08a498bc31b7a20aa:

fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var (2025-05-31 10:24:02 +0200)

----------------------------------------------------------------
fbdev fixes and updates for 6.16-rc1:

Various bug fixes for corner cases which were found with Syzkaller,
Svace and other tools by various people and teams (e.g. Linux Verification Center):
fbdev: Fix do_register_framebuffer to prevent null-ptr-deref in fb_videomode_to_var [Murad Masimov]
fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var [Murad Masimov]
fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod() [Sergey Shtylyov]
fbcon: Make sure modelist not set on unregistered console [Kees Cook]
vgacon: Add check for vc_origin address range in vgacon_scroll() [GONG Ruiqi]

Minor coding fixes in:
nvidiafb, arkfb, atyfb, viafb.

Spelling fixes in:
sstfb.rst and carminefb.

----------------------------------------------------------------
Andy Shevchenko (1):
fbdev: atyfb: Remove unused PCI vendor ID

Bartosz Golaszewski (1):
fbdev: via: use new GPIO line value setter callbacks

Colin Ian King (1):
fbdev: carminefb: Fix spelling mistake of CARMINE_TOTAL_DIPLAY_MEM

GONG Ruiqi (1):
vgacon: Add check for vc_origin address range in vgacon_scroll()

Kees Cook (2):
fbdev: arkfb: Cast ics5342_init() allocation type
fbcon: Make sure modelist not set on unregistered console

Murad Masimov (2):
fbdev: Fix do_register_framebuffer to prevent null-ptr-deref in fb_videomode_to_var
fbdev: Fix fb_set_var to prevent null-ptr-deref in fb_videomode_to_var

Rujra Bhatt (1):
fbdev: sstfb.rst: Fix spelling mistake

Sergey Shtylyov (1):
fbdev: core: fbcvt: avoid division by 0 in fb_cvt_hperiod()

Zijun Hu (1):
fbdev: nvidiafb: Correct const string length in nvidiafb_setup()

Documentation/fb/sstfb.rst | 2 +-
drivers/video/console/vgacon.c | 2 +-
drivers/video/fbdev/arkfb.c | 5 +++--
drivers/video/fbdev/carminefb.c | 8 ++++----
drivers/video/fbdev/carminefb.h | 2 +-
drivers/video/fbdev/core/fbcon.c | 7 ++++++-
drivers/video/fbdev/core/fbcvt.c | 2 +-
drivers/video/fbdev/core/fbmem.c | 22 ++++++++++++++--------
drivers/video/fbdev/nvidia/nvidia.c | 2 +-
drivers/video/fbdev/via/via-gpio.c | 10 +++++-----
include/video/mach64.h | 3 ---
11 files changed, 37 insertions(+), 28 deletions(-)


Return-Path: <linux-kernel+bounces-669183-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D500641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:20:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id F076317CC65
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:20:50 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8BE04190664;
Sat, 31 May 2025 17:20:41 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mJgEF4I4"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C4CFCD299;
Sat, 31 May 2025 17:20:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748712040; cv=none; b=CiXuR7yuP0THD27sMKFQgQHOpaU034QqQ/d6lOmOxa762gX1tI16N5CB8vC/cHYLvhA3/erMuH1Mn8ibaii6nkUb8q26o5gK7Dq7oz+3eGKbEgHXLSZjisKz/Gz6kqpiWYtKCk7D+KGErY8SCtJiDSme09jCgvIlaFa+9glT+Ic=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748712040; c=relaxed/simple;
bh=1EDss7/Ay/i1p27ZciMHXO4Rvu9BaVSbs48i//gkFgc=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=lGkgpb8cVcSxyO7TFy4WCAS3SDUhV7QA5xgWXSMWOlZ2TljAtdyQwQ2vFZ2cZYHFENXfNINQz0c/jW+5CKLPkpPR2YzvcFbwAG6lFVTT4wN5Nr9R7il2lMKxrm9uCf2QFWOIjtBbIVFK81e791UZsYX2g31PTcXMJ0OhOtyTlzk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mJgEF4I4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1CF31C4CEF1;
Sat, 31 May 2025 17:20:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748712040;
bh=1EDss7/Ay/i1p27ZciMHXO4Rvu9BaVSbs48i//gkFgc=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=mJgEF4I4K68oYDlLRwi0ws0xjYgVej9CL94HG2mmcH90WoNkZtUuJerFwDEcpPXX9
gMhvyvuA+w52V88lzV7XK2PhA35C0AWvLeC86LIIlRsFAAnV+VWFjWgWXqbdOPVDSM
lFTY2lV86tx6J5yDNVpv8Xl1/rVNB3b9hzum8NYcizR7uceM2k78WcX+ygUnr0D4u0
YsywmgL/JFBAhGh0kvEzKOZItAe+I3COS15tRqGJRr8HiX3vhKIOgkRz7CktTlKVvk
46A9j8DG60i5RKfHZlJo/aU4rJHhz7QJAjfDoMs88yVkSjG6UU7pHDAePi+EBDZgV0
cVvmKNcYL0w6Q==
Date: Sat, 31 May 2025 18:20:31 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Andreas Klinger <ak@xxxxxxxxxxxxx>
Cc: robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx,
lars@xxxxxxxxxx, javier.carrasco.cruz@xxxxxxxxx, mazziesaccount@xxxxxxxxx,
andriy.shevchenko@xxxxxxxxxxxxxxx, arthur.becker@xxxxxxxxxx,
perdaniel.olsson@xxxxxxxx, mgonellabolduc@xxxxxxxxxxxx,
muditsharma.info@xxxxxxxxx, clamor95@xxxxxxxxx, emil.gedenryd@xxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-iio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v5 2/3] iio: light: add support for veml6046x00 RGBIR
color sensor
Message-ID: <20250531182031.453ca161@jic23-huawei>
In-Reply-To: <20250526085041.9197-3-ak@xxxxxxxxxxxxx>
References: <20250526085041.9197-1-ak@xxxxxxxxxxxxx>
<20250526085041.9197-3-ak@xxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 26 May 2025 10:50:40 +0200
Andreas Klinger <ak@xxxxxxxxxxxxx> wrote:

> Add Vishay VEML6046X00 high accuracy RGBIR color sensor.
>
> This sensor provides three colour (red, green and blue) as well as one
> infrared (IR) channel through I2C.
>
> Support direct and buffered mode.
>
> An optional interrupt for signaling green colour threshold underflow or
> overflow is not supported so far.
>
> Signed-off-by: Andreas Klinger <ak@xxxxxxxxxxxxx>

Hi Andreas,

I missed a channel type issue. See below.

> diff --git a/drivers/iio/light/veml6046x00.c b/drivers/iio/light/veml6046x00.c
> new file mode 100644
> index 000000000000..9972eeb57fd2
> --- /dev/null
> +++ b/drivers/iio/light/veml6046x00.c
> @@ -0,0 +1,1007 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * VEML6046X00 High Accuracy RGBIR Color Sensor
> + *
> + * Copyright (c) 2025 Andreas Klinger <ak@xxxxxxxxxxxxx>
> + */

> +static const struct iio_chan_spec veml6046x00_channels[] = {
> + {
> + .type = IIO_LIGHT,

Sorry - I've been half asleep on earlier versions or maybe we discussed this
before and I've forgotten. IIO_LIGHT is for illuminance with units of lux.

How does that apply to a colour channel given it's a measure of a specific
sensitivity curve for the human eye and such a thing only applies to 'whiteish'
light.

Normally we cover colour channels as IIO_INTENSITY which doesn't have
strong rules for scaling - so lets us get away with the many weird and wonderful
ideals different sensor manufacturers have of what RED / GREEN / BLUE
mean. (There is an oddity for historical reasons IIRC of an IR light channel
but don't use that for new code).

So basically the request is to use .type = IIO_INTENSITY for these

> + .address = VEML6046X00_REG_R,
> + .modified = 1,
> + .channel2 = IIO_MOD_LIGHT_RED,
> + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> + .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .scan_index = VEML6046X00_SCAN_R,
> + .scan_type = {
> + .sign = 'u',
> + .realbits = 16,
> + .storagebits = 16,
> + .endianness = IIO_LE,
> + },
> + },
> + {
> + .type = IIO_LIGHT,
> + .address = VEML6046X00_REG_G,
> + .modified = 1,
> + .channel2 = IIO_MOD_LIGHT_GREEN,
> + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> + .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .scan_index = VEML6046X00_SCAN_G,
> + .scan_type = {
> + .sign = 'u',
> + .realbits = 16,
> + .storagebits = 16,
> + .endianness = IIO_LE,
> + },
> + },
> + {
> + .type = IIO_LIGHT,
> + .address = VEML6046X00_REG_B,
> + .modified = 1,
> + .channel2 = IIO_MOD_LIGHT_BLUE,
> + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> + .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .scan_index = VEML6046X00_SCAN_B,
> + .scan_type = {
> + .sign = 'u',
> + .realbits = 16,
> + .storagebits = 16,
> + .endianness = IIO_LE,
> + },
> + },
> + {
> + .type = IIO_LIGHT,
> + .address = VEML6046X00_REG_IR,
> + .modified = 1,
> + .channel2 = IIO_MOD_LIGHT_IR,
> + .info_mask_separate = BIT(IIO_CHAN_INFO_RAW),
> + .info_mask_shared_by_all = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .info_mask_shared_by_all_available = BIT(IIO_CHAN_INFO_INT_TIME) |
> + BIT(IIO_CHAN_INFO_SCALE),
> + .scan_index = VEML6046X00_SCAN_IR,
> + .scan_type = {
> + .sign = 'u',
> + .realbits = 16,
> + .storagebits = 16,
> + .endianness = IIO_LE,
> + },
> + },
> + IIO_CHAN_SOFT_TIMESTAMP(VEML6046X00_SCAN_TIMESTAMP),
> +};


Return-Path: <linux-kernel+bounces-669184-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8DF7841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:27:08 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 592277A229A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:25:48 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3D8E31946A0;
Sat, 31 May 2025 17:26:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="rStIi3o5"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 6CCC13B19A;
Sat, 31 May 2025 17:26:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748712415; cv=none; b=Lj0x2YJ4mMisB7hragDnjfGquMcv/ymS/2JE+BM+qqeLBolzS5UXrJyxZRk92hsfTBQSRar0K8ETK/ilOuuPbv3MgGoAneCbfLtjhJ13AXVotZdcmNWVvBLFuqr+85IygKTw7YyjIXklO7hx1O++vLRwp2U9+2TOt5DE+kzeH24=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748712415; c=relaxed/simple;
bh=WHsi1ccAgcNzO9ODFLpSz1YM367cGiZ7LVA7rEgY1II=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=GcdjcR3jR1+VX+c9rlxJWGu6Mqq2K61BgfPF1fl2tdKqhalyE/9E5RJVzX5Sa9IR1QA7ZcGEePETSbnv8omvCuX97VuTDHTyJWZ5zmIKLFw3g1YnLXwhnpAjZJ/4uzkGVwCId5cHNZn2CkJRg/0NFQ6UtcnpzwQxJ/fWcm5FqeQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=rStIi3o5; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4E975C4CEE3;
Sat, 31 May 2025 17:26:48 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748712414;
bh=WHsi1ccAgcNzO9ODFLpSz1YM367cGiZ7LVA7rEgY1II=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=rStIi3o5dKFpDvK0+IpnTBAPpOWXeT/I2GuXvSF0XaFk5/0dHmGTVWlXKXtiSF0Gn
+qOrmk1q9RnZMN3ONT6xzn+KDaRJgq8Ux/TYiu8YEfFxWX4D8ilSrnCKuGoyuhCo7X
pUQRReVui4v1vTnPXNkV0mz8LFx9m2VBuzJWB6trtW7rI4/9e3A8PrFDKyWHvkXJzQ
RTC+SEwPOgA/CeRboUYzsBKr7hxbKI2LufNzuj33bKQHatuNp/LVSOlvc21uUpbIV/
Wli19bMAi3jyXZAbO2ZhttcN0/86SjEEwWMDA6FlLvrpjlrFMa5q32OpyOT5wQksmg
UpDCoYAvZGBcg==
Date: Sat, 31 May 2025 18:26:43 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx>
Cc: Rodrigo Gobbi <rodrigo.gobbi.7@xxxxxxxxx>, <robh@xxxxxxxxxx>,
<krzk+dt@xxxxxxxxxx>, <conor+dt@xxxxxxxxxx>, <dlechner@xxxxxxxxxxxx>,
<nuno.sa@xxxxxxxxxx>, <andy@xxxxxxxxxx>, <manuel.stahl@xxxxxxxxxxxxxxxxx>,
<~lkcamp/patches@xxxxxxxxxxx>, <linux-iio@xxxxxxxxxxxxxxx>,
<devicetree@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v2] dt-bindings: iio: gyroscope: invensense,itg3200: add
binding
Message-ID: <20250531182643.78a54688@jic23-huawei>
In-Reply-To: <20250530175649.000005d0@xxxxxxxxxx>
References: <20250527210308.4693-1-rodrigo.gobbi.7@xxxxxxxxx>
<20250530175649.000005d0@xxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 17:56:49 +0100
Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> wrote:

> On Tue, 27 May 2025 17:55:28 -0300
> Rodrigo Gobbi <rodrigo.gobbi.7@xxxxxxxxx> wrote:
>
> > There is no txt file for it, add yaml for invensense,itg3200 gyroscope.
> >
> > Signed-off-by: Rodrigo Gobbi <rodrigo.gobbi.7@xxxxxxxxx>
> > ---
> > Originally I`ve added @Jonathan as the binding maintainer due another thread
> > but @Krzysztof mentioned at v1: "...this should be someone interested in the hardware".
> > I`m not sure who might be this person in this case, a reasonable choice would be
> > the original author of the driver, but looks like his last patch is from a
> > long time ago [2] but I`ll ping here.
> >
> > Dear @Manuel Stahl, I`ve noticed that since the driver was added,
> > there was no binding doc for it and this is what this patch is addressing.
> > In this case, a maintainer ref is required inside the .yaml file and I would
> > like to ask if I can add you in this case.
> > I would appreciate your comment or suggestion over this topic.
>
> Manuel has not been active for quite a while. You never know though!
>
> Fall back to me if needed given I end up seeing all these changes anyway.
>
> I can make that change whilst applying.
>
Tweaked to change this and add the note from Krzysztof to the commit
message. Applied

Thanks,

Jonathan

> Jonathan
>
> >
> > Tks all and regards.
> >
> > Changelog:
> > v2:
> > - removed the register map link; there is no datasheet available at public ref. At [1],
> > it is just a product overview, so we can`t use it;
> > - add supplies and external clocks (I`ve used as ref iio/gyroscope/invensense,mpu3050.yaml);
> > - add the author of the driver as the maintainer of this file but I`m CC him in
> > order to get his opinion about it;
> > - adding some CC missing at v1;
> >
> > v1: https://lore.kernel.org/linux-devicetree/20250515002817.81863-1-rodrigo.gobbi.7@xxxxxxxxx/
> >
> > [1] https://invensense.tdk.com/products/motion-tracking/3-axis/itg-3200/
> > [2] https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/?qt=author&q=Manuel+Stahl
> > ---
> > .../iio/gyroscope/invensense,itg3200.yaml | 59 +++++++++++++++++++
> > 1 file changed, 59 insertions(+)
> > create mode 100644 Documentation/devicetree/bindings/iio/gyroscope/invensense,itg3200.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/iio/gyroscope/invensense,itg3200.yaml b/Documentation/devicetree/bindings/iio/gyroscope/invensense,itg3200.yaml
> > new file mode 100644
> > index 000000000000..4b2f9a57c6ea
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/iio/gyroscope/invensense,itg3200.yaml
> > @@ -0,0 +1,59 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/iio/gyroscope/invensense,itg3200.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Invensense ITG-3200 Gyroscope
> > +
> > +maintainers:
> > + - Manuel Stahl <manuel.stahl@xxxxxxxxxxxxxxxxx>
> > +
> > +description: |
> > + Triple-axis, digital output gyroscope with a three 16-bit analog-to-digital
> > + converters (ADCs) for digitizing the gyro outputs, a user-selectable internal
> > + low-pass filter bandwidth, and a Fast-Mode I2C.
> > +
> > +properties:
> > + compatible:
> > + const: invensense,itg3200
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + vdd-supply: true
> > +
> > + vlogic-supply: true
> > +
> > + interrupts:
> > + maxItems: 1
> > +
> > + mount-matrix:
> > + description: an optional 3x3 mounting rotation matrix.
> > +
> > + clocks:
> > + maxItems: 1
> > +
> > + clock-names:
> > + items:
> > + - const: ext_clock
> > +
> > +required:
> > + - compatible
> > + - reg
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + #include <dt-bindings/interrupt-controller/irq.h>
> > + i2c {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + gyroscope@68 {
> > + compatible = "invensense,itg3200";
> > + reg = <0x68>;
> > + interrupt-parent = <&gpio2>;
> > + interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
> > + };
> > + };
>



Return-Path: <linux-kernel+bounces-669185-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A9E7741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:29:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id BC04C18982A7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:30:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id AE952198845;
Sat, 31 May 2025 17:29:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mMaLHcdN"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 EAC1D290F;
Sat, 31 May 2025 17:29:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748712591; cv=none; b=d1EcJSd4EzqwDOQ7WWECIBcY3e8FmncSLrgeqbsdNMciab4JzBOK2q5icx0l4Scp/z9xOv/aEQcyT7fP4DNAyd1ygAyA06EXEuL7SaUc2mhCBg36mXd8CM/epwOWwegMqysXUs60xo6sRm1XEUhHUkm4HSFwYTFCOhAcNrO0kpU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748712591; c=relaxed/simple;
bh=MiJ3W0UWWO3SczXh3w70YfSSrfIeau2mBBSZz1zZRhA=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=eahsqme6Xu1y+kYfH9YhIZNahadgy4qZMuFZEC6CZHw6pI/7WS8l7olPRsWczai91J7RH0a0fEnARKjBQq6iSpswuB8AeyOt8BLzuYGOFk+IBOPy0NdxS8hzySdxRi+0qeWcQ+5Ev89oxYpZJctjG29g0YRbSOqqBZsIsAbvXLw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mMaLHcdN; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id BFD99C4CEE3;
Sat, 31 May 2025 17:29:46 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748712590;
bh=MiJ3W0UWWO3SczXh3w70YfSSrfIeau2mBBSZz1zZRhA=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=mMaLHcdNl4k9nS+dWbaRBK3m7SMoTPw8BylFi/iTZgWDCVUfTm7jDEL+0jN8t9IFd
GkylHGZ93UgxAuz9EQOKTwWNBzl5y8IH7vZOMDLv/TF4TNsVNf1TFfdFTypzEGIhMB
afhnBHQC9TX/2DPRCmqK0qTt5to0S42Dffuyyn8umrvHUV//oymE+vfVw43sfyN4tn
7nEksqAi2peHs7FDdGEjPrXNsX6N8zB459GLUFI1vMnKmzqJc+zx48jNhUqBCeNJcN
KKGlBoygd3PWnS61BMvdED0yxb/2rdlJRMSF1NCv2sz/a9mlKEcua+9Ic00h8M37NA
nv29ernm9liIA==
Date: Sat, 31 May 2025 18:29:41 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
Cc: Rodrigo Gobbi <rodrigo.gobbi.7@xxxxxxxxx>, linus.walleij@xxxxxxxxxx,
dlechner@xxxxxxxxxxxx, nuno.sa@xxxxxxxxxx, andy@xxxxxxxxxx,
robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx,
~lkcamp/patches@xxxxxxxxxxx, linux-iio@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH] dt-bindings: iio: gyro: invensense,mpu3050: change irq
maxItems
Message-ID: <20250531182941.3d274d5c@jic23-huawei>
In-Reply-To: <ad946c3b-b2b9-4fdd-8b70-6fd493dc5dab@xxxxxxxxxx>
References: <20250527215818.13000-1-rodrigo.gobbi.7@xxxxxxxxx>
<ad946c3b-b2b9-4fdd-8b70-6fd493dc5dab@xxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Wed, 28 May 2025 07:55:40 +0200
Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:

> On 27/05/2025 23:51, Rodrigo Gobbi wrote:
> > The mpu3050 datasheet describes that this IC only supports one INT pin,
> > which means one item with two cells inside binding.
> > Change max to match this description.
> Fixes: 749787477ae4 ("dt-bindings:iio:gyro:invensense,mpu3050: txt to yaml format conversion.")
>
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@xxxxxxxxxx>
Applied to the fixes-togreg-for-6.16 branch of iio.git.

>
> Best regards,
> Krzysztof



Return-Path: <linux-kernel+bounces-669186-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id EAB4D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:39:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 93FFB18990CE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:39:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 0B63E199934;
Sat, 31 May 2025 17:39:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="qf1RFcfK"
Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 559BB13AA3C
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:38:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748713139; cv=none; b=n8GuhdPFm0BUWhyNsVcvMn+oj2BcZ4MKh3yoop/Cg5+Xl+QONCfhoQVcnwqF/UYDhIjev1eBv/FWoERnUL9gQU59Tf5V5uFlpcc08dDwoD2OFgj3W4hgEAd0sgN8d17fN2mcNmFbiNLyS/BlZmpegbJVfujoQ5WTeKC7/17fyes=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748713139; c=relaxed/simple;
bh=+yiCfGe4fW0XffAwNncdBCVmgxhtqqA4Z5ANJlPMTug=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=ZaHLfvfy5BYZysilfO8tPGpnGOg5/c6pVM3XnfITwyGmnIlOhkI0CS6K9YT92E4AIzkBnxuG0++9MGe8/+1duEBW9ERv4Xp6BOV32gV2Bd2VDu3ZKUYh+fagW1XJbQZeX1oxYdzwHmpaFhgi3DKTeYn+220tQiYX04OR6nIZb0w=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=qf1RFcfK; arc=none smtp.client-ip=209.85.221.52
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3a3798794d3so2567322f8f.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:38:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748713135; x=1749317935; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=eLCLVg3DRY+kdQKI3UOmRBlx/q2NwNG+bRafEeb9LK4=;
b=qf1RFcfKwcW5/Hk47bNBUBgraAI0lhsiNe/xpJiwQSRUWCLo5lg7d9SLEvoZzC8e+F
iidoSxdM8HhaLQZqa2YgjLf6fCGUqT8qYCTl7NIWYw9hNgJoITjzaXSFj8bXajyL3MFg
mBkIxodI48Idcv4OdNVPXeYjl+P4erJOtvCtvSWj5oONdrOterSXseVtGvj2ipIhyD8v
Wly6cA/KvVmWyXqEr6InEVPcjiJ6E0Lgc+oojO9EjfYtrAyfd7+qIHU0KUS8oKUI0Gfv
vEhnTEpVU0cWmxmEkUYYPco/a+c2I8csdeAGGAR/ek5Rfsgl4sf64IyiFbpphr2kG8YK
sFiQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748713135; x=1749317935;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=eLCLVg3DRY+kdQKI3UOmRBlx/q2NwNG+bRafEeb9LK4=;
b=UsMQ8h9LeUBxtdmnaf9pu5kUX1UH0DcR9sjlSjxZeUl1NKWxTBeA0unN3PiJPgvWwi
FL9r6f5+934riL3++cvfYTi+ubPkgIFtKO6UiiLm+JrwIWBYkkQPHIyQgp9j+J4TvaHp
pZ/Zz6Fap8dQDrwwXw90974cgmNDyf/lZCUBBgU6zUet6gF5uSU7Jngm5w3BqWwqOHsy
Ht0o3h+SQjxncf0qnuvJHa9veNZJ76Ge3D+1X8mhuj9pPwP7EKU94EOqOOiaEL1F5xDC
WIF9s/71GGodklVZ7BymZLuq+mZOqQrkj4ZDzgdcc1lnMxXqw+sEy6LLnSCZvg3SEXsw
He8A==
X-Forwarded-Encrypted: i=1; AJvYcCVPtX/+x/M9S4y5UjrmP+r/94rEvGu/jmPhxxWlmf1x3soBJF6Y0pUdmV2m3reigRIrLrSE4Xqj4rHaBF8=@vger.kernel.org
X-Gm-Message-State: AOJu0YxuxFtSioXQsG1DffBt9yCbJmF6UpDEgco/OrnLwYCKcn+6RKx9
hTMGkdV5t6lVSQLLhFAbxnUebr3pzXHBk4uHRX6uthbyyQbrcdeP0ZziZyf6y6LSMWXY+6Wwn3l
9oxq7l+qeihJ4rAUpQl5p5aTgkevhyWbfCnHY0mJx
X-Gm-Gg: ASbGncs45Jp+saMd0xwxw2G7O/l7yohR1z0mTuZB1veTGSEmbbQh6Ixa+pWbVUoPNib
aFc8LbCSlXfBDars1z8e0Z+dR6iIcIRb2KoitGezCJK7bldmzfB8bYCXaX3z8W5HyDlCgfXZ5DN
lRN8nMiWwqFPdCKyyR4flWTaxyLaIUycKEZHPjRrEO5k1N
X-Google-Smtp-Source: AGHT+IFcQc7PhrlU3iGzooaB91LCZp9G23UHEC8GFDWBqsB6YALAnfq0jsP/gQvtcHrgFUl7d6tErACA3KF7ENhU2+U=
X-Received: by 2002:a5d:64e2:0:b0:3a4:e1e1:777f with SMTP id
ffacd0b85a97d-3a4fe160ce4mr1952606f8f.1.1748713135419; Sat, 31 May 2025
10:38:55 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-2-82168470d472@xxxxxxxxxx> <DA9P904SL0KL.1QNQAI240QLH6@xxxxxxxxxx>
<CAH5fLgjZrJ66VnW0J_CHc-3yUFOt+DRWgTCNxoftACga+Lw+fA@xxxxxxxxxxxxxx> <DAAG8AUG7GE2.EVO9Y6PZTHDI@xxxxxxxxxx>
In-Reply-To: <DAAG8AUG7GE2.EVO9Y6PZTHDI@xxxxxxxxxx>
From: Alice Ryhl <aliceryhl@xxxxxxxxxx>
Date: Sat, 31 May 2025 19:38:43 +0200
X-Gm-Features: AX0GCFupvoH_OV-ioJo2JO2JFQ27ZZjQte_A5hZNPm4JMyO-baMu7qThPLV4JKs
Message-ID: <CAH5fLgjNCQV8zsfdeq21iXiu_VOpt=WGnm9nMp-B0bOEMEBctw@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 2/2] uaccess: rust: add UserSliceReader::strcpy_into_buf
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: Miguel Ojeda <ojeda@xxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Trevor Gross <tmgross@xxxxxxxxx>, Danilo Krummrich <dakr@xxxxxxxxxx>, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 5:25=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> wr=
ote:
>
> On Sat May 31, 2025 at 3:25 PM CEST, Alice Ryhl wrote:
> > On Fri, May 30, 2025 at 8:16=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx=
> wrote:
> >> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
> >> > This patch adds a more convenient method for reading C strings from
> >> > userspace. Logic is added to NUL-terminate the buffer when necessary=
so
> >> > that a &CStr can be returned.
> >> >
> >> > Note that we treat attempts to read past `self.length` as a fault, s=
o
> >> > this returns EFAULT if that limit is exceeded before `buf.len()` is
> >> > reached.
> >> >
> >> > Reviewed-by: Danilo Krummrich <dakr@xxxxxxxxxx>
> >> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
> >> > ---
> >> > rust/kernel/uaccess.rs | 56 +++++++++++++++++++++++++++++++++++++++=
++++++++++-
> >> > 1 file changed, 55 insertions(+), 1 deletion(-)
> >> >
> >> > diff --git a/rust/kernel/uaccess.rs b/rust/kernel/uaccess.rs
> >> > index 9b1e4016fca2c25a44a8417c7e35e0fcf08aa959..e6534b52a1920254d61f=
8349426d4cdb38286089 100644
> >> > --- a/rust/kernel/uaccess.rs
> >> > +++ b/rust/kernel/uaccess.rs
> >> > @@ -293,6 +293,61 @@ pub fn read_all<A: Allocator>(mut self, buf: &m=
ut Vec<u8, A>, flags: Flags) -> R
> >> > unsafe { buf.set_len(buf.len() + len) };
> >> > Ok(())
> >> > }
> >> > +
> >> > + /// Read a NUL-terminated string from userspace and return it.
> >> > + ///
> >> > + /// The string is read into `buf` and a NUL-terminator is added=
if the end of `buf` is reached.
> >> > + /// Since there must be space to add a NUL-terminator, the buff=
er must not be empty. The
> >> > + /// returned `&CStr` points into `buf`.
> >> > + ///
> >> > + /// Fails with [`EFAULT`] if the read happens on a bad address =
(some data may have been
> >> > + /// copied).
> >> > + #[doc(alias =3D "strncpy_from_user")]
> >> > + pub fn strcpy_into_buf<'buf>(self, buf: &'buf mut [u8]) -> Resu=
lt<&'buf CStr> {
> >> > + if buf.is_empty() {
> >> > + return Err(EINVAL);
> >> > + }
> >> > +
> >> > + // SAFETY: The types are compatible and `strncpy_from_user`=
doesn't write uninitialized
> >> > + // bytes to `buf`.
> >> > + let mut dst =3D unsafe { &mut *(buf as *mut [u8] as *mut [M=
aybeUninit<u8>]) };
> >> > +
> >> > + // We never read more than `self.length` bytes.
> >> > + if dst.len() > self.length {
> >> > + dst =3D &mut dst[..self.length];
> >> > + }
> >> > +
> >> > + let mut len =3D raw_strncpy_from_user(dst, self.ptr)?;
> >> > + if len < dst.len() {
> >> > + // Add one to include the NUL-terminator.
> >> > + len +=3D 1;
> >> > + } else if len < buf.len() {
> >> > + // This implies that `len =3D=3D dst.len() < buf.len()`=
.
> >> > + //
> >> > + // This means that we could not fill the entire buffer,=
but we had to stop reading
> >> > + // because we hit the `self.length` limit of this `User=
SliceReader`. Since we did not
> >> > + // fill the buffer, we treat this case as if we tried t=
o read past the `self.length`
> >> > + // limit and received a page fault, which is consistent=
with other `UserSliceReader`
> >> > + // methods that also return page faults when you exceed=
`self.length`.
> >> > + return Err(EFAULT);
> >> > + } else {
> >> > + // This implies that len =3D=3D buf.len().
> >> > + //
> >> > + // This means that we filled the buffer exactly. In thi=
s case, we add a NUL-terminator
> >> > + // and return it. Unlike the `len < dst.len()` branch, =
don't modify `len` because it
> >> > + // already represents the length including the NUL-term=
inator.
> >> > + //
> >> > + // SAFETY: Due to the check at the beginning, the buffe=
r is not empty.
> >> > + unsafe { *buf.last_mut().unwrap_unchecked() =3D 0 };
> >>
> >> In this case you're overwriting the last character read. Should we giv=
e
> >> `raw_strncpy_from_user` access to one less byte and then write NUL int=
o
> >> that?
> >
> > Why? I'm not interested in changing the implementation just because.
> > It needs to be significantly simpler, and I do not think it is.
>
> Sure, but then I think we should document this behavior.

Document what? I understood your suggestion as a change to the
implementation of strcpy_into_buf that would not change its behavior.
Did I misunderstand?

Alice


Return-Path: <linux-kernel+bounces-669187-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0007D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:43:07 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 1047F3BEFA4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:42:43 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D2EEA19C556;
Sat, 31 May 2025 17:42:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iCAuOuZc"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 080E23B19A;
Sat, 31 May 2025 17:42:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748713375; cv=none; b=jfpDbMCW7Y8mDKY0Y2wXkwMHdtkye/MyPYATqt4RKDcZFReT3idZ/fw5LV7NR4Hbk3L+bqqe/O4i8bFhVUVVIPf21FO6qi87z1AHHcPI85WHmq+X9SlR/ljYKRVTRxEv1bJFKxrY26WfbmyZdZT/KxmzknQ1LH/YIlfgZS4tZpw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748713375; c=relaxed/simple;
bh=Iva5rHF/MAVSoSgGRlbmsQ1Mf85wBltXL8rYWFF5QzY=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=HRtav2EBVDZ67L6xSj+wDNEFEwg68DgwpAOdam6F7+CUCqk9UymARGkII1h1xVDJr/aINkbvLrH0SkXVj1t4OS3fRoWqM8+Xd65PLNUkDVsjn42qmAafsY6Hk2sXETMITqGjqIRohDbN/fkLQsZYO1KYA0Osikhw0H8o2OjkdQ4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iCAuOuZc; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C2912C4CEE3;
Sat, 31 May 2025 17:42:47 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748713374;
bh=Iva5rHF/MAVSoSgGRlbmsQ1Mf85wBltXL8rYWFF5QzY=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=iCAuOuZccwSniju3wtQ1/YL9YqNaTH2yu61vHn1g4dZ2nHLwe1LAVeZKm7qn/33bB
2FIjNOOeg7q3Gb7WbN716cp6sauzZuYJ2ONRo4I7w99uo23Zr3Yt/6uCiUOdsCeMn3
GMeSg3thU3fDis892ECaOvSnIdl6Ra4PLAhR6d3WGsfereNBb/ZUoaKUgeA6KITfMC
X/JgXBzlvlPpWe+3c+WNYwVTJzVJ67LZD/mDeFh+zYXpPNHgHRWJKoSAdV4q9XAgJ3
/3kgbEAR806TcWJAi0htKC4lOkpxExlcvKxPmK3w+/7aGiFJ50REvqBxblZRYJjqMe
KgFerdgsoTsGQ==
Date: Sat, 31 May 2025 18:42:42 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Andy Shevchenko <andy@xxxxxxxxxx>
Cc: Jonathan Santos <Jonathan.Santos@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx, linux-acpi@xxxxxxxxxxxxxxx, nuno.sa@xxxxxxxxxx,
Michael.Hennerich@xxxxxxxxxx, marcelo.schmitt@xxxxxxxxxx, robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx, marcelo.schmitt1@xxxxxxxxx,
linus.walleij@xxxxxxxxxx, brgl@xxxxxxxx, lgirdwood@xxxxxxxxx,
broonie@xxxxxxxxxx, jonath4nns@xxxxxxxxx, dlechner@xxxxxxxxxxxx,
rafael@xxxxxxxxxx, djrscally@xxxxxxxxx
Subject: Re: [PATCH v9 09/12] iio: adc: ad7768-1: add support for
Synchronization over SPI
Message-ID: <20250531184242.468e9e27@jic23-huawei>
In-Reply-To: <aDnuvAdkcTAP2tMt@xxxxxxxxxxxxxxxxxx>
References: <cover.1748447035.git.Jonathan.Santos@xxxxxxxxxx>
<27cccb51cc56f1bb57cb06d279854a503d779e25.1748447035.git.Jonathan.Santos@xxxxxxxxxx>
<aDnuvAdkcTAP2tMt@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 20:45:32 +0300
Andy Shevchenko <andy@xxxxxxxxxx> wrote:

> On Thu, May 29, 2025 at 07:50:29PM -0300, Jonathan Santos wrote:
> > The synchronization method using GPIO requires the generated pulse to be
> > truly synchronous with the base MCLK signal. When it is not possible to
> > do that in hardware, the datasheet recommends using synchronization over
> > SPI, where the generated pulse is already synchronous with MCLK. This
> > requires the SYNC_OUT pin to be connected to the SYNC_IN pin.
> >
> > Use trigger-sources property to enable device synchronization over SPI
> > and multi-device synchronization while replacing sync-in-gpios property.
>
> ...
>
> > struct ad7768_state {
>
> > struct iio_trigger *trig;
> > struct gpio_desc *gpio_sync_in;
> > struct gpio_desc *gpio_reset;
>
> > + bool en_spi_sync;
>
> I'm wondering if moving this...
>
> > const char *labels[ARRAY_SIZE(ad7768_channels)];
> > struct gpio_chip gpiochip;
>
> ...to here saves a few bytes in accordance to `pahole`.
>
> > };
>
> ...
>
> > +static int ad7768_trigger_sources_sync_setup(struct device *dev,
> > + struct fwnode_handle *dev_fwnode,
> > + struct ad7768_state *st)
> > +{
> > + struct fwnode_reference_args args;
> > +
> > + struct fwnode_handle *fwnode __free(fwnode_handle) =
> > + fwnode_find_reference_args(dev_fwnode, "trigger-sources",
> > + "#trigger-source-cells", 0,
> > + AD7768_TRIGGER_SOURCE_SYNC_IDX, &args);
>
> I don't see how args are being used. This puts in doubt the need of the first
> patch.

That did get discussed (more context needed in the commit message for patch 1).
I wasn't happy with ignoring #trigger-source-cells which is required in the
binding but here is known to be 0.

If it was larger than 0 but we didn't care about the arguments I believe
we'd still need to use this call to take the right stride through the
data array that this is coming from.
Ultimately I think that is this bit of code establishing the end of the phandle.
https://elixir.bootlin.com/linux/v6.15/source/drivers/of/base.c#L1300

I might have gotten it wrong how this all works though!

J


Return-Path: <linux-kernel+bounces-669188-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E4B8141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:44:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 1B160177B2A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:44:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5CCCE19CD0E;
Sat, 31 May 2025 17:44:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DJkaYG3k"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8C3683B19A;
Sat, 31 May 2025 17:44:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748713450; cv=none; b=gplDpybsTfrnuSyCRY/9ldRlBz9daSMKZMY2Hhk5vNfAElgWS5F/3oYC/hQyEa4mRjVme0mfN3rGbw5kWKLkyyqz3NaRp3ub3m7Bz7gEXsOrYHvZ9St5wzDiVIfsY9RPIAtJHe2CNmKcubm5BdxOtai8K0RQ4g/htFYCXr0vIyk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748713450; c=relaxed/simple;
bh=KC9jA8H6pw4xmOntDgmQriU+FOali29eerNw8ZrueTI=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=tz73x+rjLvor+204hyKlNJ3BbkIJ3raEft3vMPWCllc3oc6Jmt1q/0ZkKo8XKlvAfGmV4AHWgIE8ZDhwnrbxAqoMbCM+bKfCpCTJCIk+6k588FJZOU3WiDaNUGI2oIGUh+FjD3UogqbAK4pq529MqU0NCffS7MWY43K6IlQHJgw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DJkaYG3k; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8BD66C4CEE3;
Sat, 31 May 2025 17:44:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748713450;
bh=KC9jA8H6pw4xmOntDgmQriU+FOali29eerNw8ZrueTI=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=DJkaYG3kfIrGX/51HLUKbnjounNPT6yudtEKzVFylbcRa2Fl6ObjuQykMzY3zhGzQ
HivxyzCFxaIiHzfNzB8d/c0Di5E740awtQgJWNv4jSBsZANSt8uwQQDN7jov+sf0rc
Fs9+mhSQxbIsLvXAh9kRa3F9ehr0wSrBcPp0dWOeIFZDMnHUcRKXFaqrm+LMBEQtuq
3bLoxiqJ/e8RcJk5Zmz2kcg+kAkSrnfe0aEeZQ5GxM599A/OOiy6Jvz4y3jHebK/U+
rWkOxc05fka53tA6JCFMsYJ3BL6F9uEclPUceBbRLDquLtue1tE+iA2NprYNcEqqz0
sBnDIjyUfYnXg==
Date: Sat, 31 May 2025 18:43:59 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Andy Shevchenko <andy@xxxxxxxxxx>
Cc: Jonathan Santos <Jonathan.Santos@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx, linux-acpi@xxxxxxxxxxxxxxx, nuno.sa@xxxxxxxxxx,
Michael.Hennerich@xxxxxxxxxx, marcelo.schmitt@xxxxxxxxxx, robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx, marcelo.schmitt1@xxxxxxxxx,
linus.walleij@xxxxxxxxxx, brgl@xxxxxxxx, lgirdwood@xxxxxxxxx,
broonie@xxxxxxxxxx, jonath4nns@xxxxxxxxx, dlechner@xxxxxxxxxxxx,
rafael@xxxxxxxxxx, djrscally@xxxxxxxxx
Subject: Re: [PATCH v9 01/12] device property: add
fwnode_find_reference_args()
Message-ID: <20250531184359.370d4629@jic23-huawei>
In-Reply-To: <aDnvXkwDSh_RCd7K@xxxxxxxxxxxxxxxxxx>
References: <cover.1748447035.git.Jonathan.Santos@xxxxxxxxxx>
<55924e747e4891ae75288343d9f3ad2361174bd2.1748447035.git.Jonathan.Santos@xxxxxxxxxx>
<aDnvXkwDSh_RCd7K@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 20:48:14 +0300
Andy Shevchenko <andy@xxxxxxxxxx> wrote:

> On Thu, May 29, 2025 at 07:48:17PM -0300, Jonathan Santos wrote:
> > Similarly to fwnode_find_reference(), find and return a named reference
> > to a fwnode handle, including its arguments. This wrapper facilitates
> > cleanup handling and improves readability.
>
> In principle I'm okay with the code, but I probably missed how this new API is
> being used (in terms of a need of those arguments to be retrieved).
>

Good point - this needs a little more justification, particularly with respect
to why we are using it in this driver.

J


Return-Path: <linux-kernel+bounces-669189-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 351DE41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:47:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 80AF87A3625
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:46:16 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6222219ADA4;
Sat, 31 May 2025 17:47:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="h3t1Y6k/"
Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 73CA878F4A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:47:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748713645; cv=none; b=JxeeIKYnom1FrUlLLoi3Pc+neUinOGskLRUn2w3RIJcl2noNXycSh83pZcqOuMtucZivB5dzC7G7d095oALfhVklcFnlgBVwnwmRAtGVbwrmCEzz+/PcDcVWDE4+tFzTpsveCcovOPwtLHVX8RKiFHqq+FbBNzXZPC1G1kl72Nc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748713645; c=relaxed/simple;
bh=rTj2AIRIccwVu0KtTjttNFvLcxNqqZA9tQ/jwxhFYzY=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=hKB17CZopISdFE4Fct63Sxo+CYmsetxSkAOleuRp/QRUtK7ah6dsM3SOW0QgK4Feb+t1578yZ67tW1z2o56MQhtIhDxjb6admx8SCZio0PR8tzzpfNirSx6an5h6qACiRaxCgl+zRIz65CayMqNGjuBUOh1jFHxjZzzQpHX106M=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=h3t1Y6k/; arc=none smtp.client-ip=209.85.210.177
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org
Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-74264d1832eso3318040b3a.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:47:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linaro.org; s=google; t=1748713643; x=1749318443; darn=vger.kernel.org;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date:from:to
:cc:subject:date:message-id:reply-to;
bh=YBHGQdqSeWvGB9mY6qlXaI9AwWyEpcoU+ydjWvyeZw8=;
b=h3t1Y6k/qUeH3/OyheL2Qc5U9XXq767CYrkUJh2/0GRhwZ5MIb6iRmmT8Ib1ZDl1Jq
sYi0cxWlipa/QjkmEjH2YlTwsU1oGeN1PEfFBVpwc7bjDZ2J7Y2qRNm4gzA4TcKPqRtG
lWhyPlYFI9TCJ30T16vP/JF61LSSWH8ey0NTSCbkJCd3jgUiyj35dB/zH69b7YHG3NXG
FWIkA9Sct15kcXlEQWpvGrILtN8eVkyElwhmT73Jo3cUeUdr3ELig5uc9j5EZjxHsdGc
crtZMDITwmggJYgyDa9BgXKZs0ANlCODLu1698n9ybCV6q8lmeMzNt7fulB5Pt6jeokE
QFuQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748713643; x=1749318443;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=YBHGQdqSeWvGB9mY6qlXaI9AwWyEpcoU+ydjWvyeZw8=;
b=vLjEDa+Gv+CPMYeN7jnmd2abbUsRfmvQH4OGhjDVLbW6gtgu4zEfVX3qzf6zx2wUhu
I1It9qPRCHcq7S/z01ttXGmEOgm/cIBEdHVg6So6jr7xfqoSb2jaansJULrmCUEnyCtf
kofyEgHaDvkDFoyWHRR1mbISMNstAAz3fvgBklMc1WNmvHQg/yrkT9C1xxC4go2MKO9A
aeBuTAuwDbIkyCmT239/jNiuxaExFR/Yx/nMeJkrALOY/vgl8X4MEDnZVe75gz+qTAGQ
q2Bao2R4dID69TD8GK6y5aKR13P18i08c3DqNtT/ljg7tRsozloOzsvpaPWHnnDb2yiW
zv6w==
X-Forwarded-Encrypted: i=1; AJvYcCWKHfkdX+1v+tl+UgM3Ugq1RkHAkYUZNohjO1BscrdMI/VTJFLOpz3eJnc7vmYE3jWDno7henPi6gx9Onw=@vger.kernel.org
X-Gm-Message-State: AOJu0YxUBkVrgb5Lb/Y8HGsKW5XdvZ2CQDgZ/FP4/FmgpURz/gKcAOf6
50/2NviZ0/ZDP5dYhih6u5zxJAQsEpRbUj4ISQpO9HQc1Z1eBcs+L5uFofyNromacg==
X-Gm-Gg: ASbGncuxRCXLQFAAFtyw+FHE3Eo/Gbb5C4HLM7LtEzRhtInUpt2pi2rMxLAtCgEqyxf
m9pZHCMvqflxE/Y4oxxxGzde9mLQ4bHW3l8bKY7JWoNzswOsdZhONMB0PbwCJkp2ZWUpuYOGm3Q
E8B+IYj84I2BG/72ZTI4RJwTdeu/ZUzfPv56WfK3B7ZOg1x6FU5km779Tt8MJrMvFXnO1rDKKnn
0Ye/eHvPc9Yk5zGD5w3kH5bKYtl4MUScVtVYn2dUxOm9TP9vMFQEhUEWp5r4VfVvPhhPQLmYeZx
UlpEbJbdYjqyw6qqZPb2KYfrc2sJTM5MK9PJrMRJ4O1bBM5eit4XiuzJU94uldDnXiyBJnwByTP
emPia5yk=
X-Google-Smtp-Source: AGHT+IEQudPQU3BshE97L4wC1n51Mdqw3QLAzjvyvN2bu8Bm77uJvbC7suQxxrFON6iwO1js+sJc9Q==
X-Received: by 2002:a05:6a00:8d0:b0:73e:970:731 with SMTP id d2e1a72fcca58-747d1ab6968mr3580149b3a.16.1748713642662;
Sat, 31 May 2025 10:47:22 -0700 (PDT)
Received: from thinkpad ([120.56.204.95])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747affcf6ebsm5018495b3a.141.2025.05.31.10.47.15
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 10:47:19 -0700 (PDT)
Date: Sat, 31 May 2025 23:17:13 +0530
From:
"manivannan.sadhasivam@xxxxxxxxxx" <manivannan.sadhasivam@xxxxxxxxxx>
To: Hongxing Zhu <hongxing.zhu@xxxxxxx>
Cc: Bjorn Helgaas <helgaas@xxxxxxxxxx>,
Krishna Chaitanya Chundru <quic_krichai@xxxxxxxxxxx>, "jingoohan1@xxxxxxxxx" <jingoohan1@xxxxxxxxx>,
Frank Li <frank.li@xxxxxxx>, "l.stach@xxxxxxxxxxxxxx" <l.stach@xxxxxxxxxxxxxx>,
"lpieralisi@xxxxxxxxxx" <lpieralisi@xxxxxxxxxx>, "kw@xxxxxxxxx" <kw@xxxxxxxxx>,
"robh@xxxxxxxxxx" <robh@xxxxxxxxxx>, "bhelgaas@xxxxxxxxxx" <bhelgaas@xxxxxxxxxx>,
"shawnguo@xxxxxxxxxx" <shawnguo@xxxxxxxxxx>, "s.hauer@xxxxxxxxxxxxxx" <s.hauer@xxxxxxxxxxxxxx>,
"kernel@xxxxxxxxxxxxxx" <kernel@xxxxxxxxxxxxxx>, "festevam@xxxxxxxxx" <festevam@xxxxxxxxx>,
"linux-pci@xxxxxxxxxxxxxxx" <linux-pci@xxxxxxxxxxxxxxx>,
"linux-arm-kernel@xxxxxxxxxxxxxxxxxxx" <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>, "imx@xxxxxxxxxxxxxxx" <imx@xxxxxxxxxxxxxxx>,
"linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v1 1/4] PCI: dwc: Add quirk to fix hang issue in L2 poll
of suspend
Message-ID: <tv67nul5owjqywhqmekb2cf5q2acyb3jpcfvz6k62jd6sxd5gv@izy7uomaakei>
References: <20250408065221.1941928-2-hongxing.zhu@xxxxxxx>
<20250408145840.GA231894@bhelgaas>
<AS8PR04MB86766063C3A9E969234779EB8CB42@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <AS8PR04MB86766063C3A9E969234779EB8CB42@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Wed, Apr 09, 2025 at 02:31:22AM +0000, Hongxing Zhu wrote:
> > -----Original Message-----
> > From: Bjorn Helgaas <helgaas@xxxxxxxxxx>
> > Sent: 2025å¹´4æ??8æ?¥ 22:59
> > To: Hongxing Zhu <hongxing.zhu@xxxxxxx>
> > Cc: jingoohan1@xxxxxxxxx; Frank Li <frank.li@xxxxxxx>;
> > l.stach@xxxxxxxxxxxxxx; lpieralisi@xxxxxxxxxx; kw@xxxxxxxxx;
> > manivannan.sadhasivam@xxxxxxxxxx; robh@xxxxxxxxxx;
> > bhelgaas@xxxxxxxxxx; shawnguo@xxxxxxxxxx; s.hauer@xxxxxxxxxxxxxx;
> > kernel@xxxxxxxxxxxxxx; festevam@xxxxxxxxx; linux-pci@xxxxxxxxxxxxxxx;
> > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; imx@xxxxxxxxxxxxxxx;
> > linux-kernel@xxxxxxxxxxxxxxx
> > Subject: Re: [PATCH v1 1/4] PCI: dwc: Add quirk to fix hang issue in L2 poll of
> > suspend
> >
> > On Tue, Apr 08, 2025 at 02:52:18PM +0800, Richard Zhu wrote:
> > > i.MX6QP PCIe is hang in L2 poll during suspend when one endpoint
> > > device is connected, for example the Intel e1000e network card.
> > >
> > > Refer to Figure5-1 Link Power Management State Flow Diagram of PCI
> > > Express Base Spec Rev6.0. L0 can be transferred to LDn directly.
> >
> > Please include the section number. Section numbers are easy to find
> > because they're in the spec PDF contents, but figures are not. E.g., "PCIe
> > r6.0, sec 5.2, fig 5-1"
> >
> Okay, would add them later.
>
> > > It's harmless to let dw_pcie_suspend_noirq() proceed suspend after the
> > > PME_Turn_Off is sent out, whatever the ltssm state is in L2 or L3 on
> > > some PME_Turn_Off handshake broken platforms.
> >
> > Maybe we don't need to poll for these LTSSM states on *any* platform, and
> > we could just remove the poll and timeout completely?
> >
> Yes, I used to suggest remove the L2 poll and timeout in the following
> discussion.
> https://lkml.org/lkml/2024/11/18/200
> Hi Krishna:
> Is it feasible to eliminate the L2 poll and timeout in this context?
>

Spec r6.0, sec 5.2 mandates L2/L3 Ready state:

"L2/L3 Ready transition protocol support is required."

Also in many places, it suggests waiting for L2/L3 Ready state before powering
down the device. So I don't think we should just remove the poll for all
platforms.

> > If not, we need to explain why it is safe to skip the poll on some platforms.
> > "Skipping the poll avoids a hang" is not a sufficient explanation.
> >

So the issue is that the device doesn't transition to L2/L3 Ready state and the
host platform just 'hangs'? Do we know why the hang happens?

> > s/ltssm/LTSSM/
> Okay.
> >
> > > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> > > @@ -947,7 +947,7 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci) {
> > > u8 offset = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP);
> > > u32 val;
> > > - int ret;
> > > + int ret = 0;
> > >
> > > /*
> > > * If L1SS is supported, then do not put the link into L2 as some @@
> > > -964,15 +964,17 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci)
> > > return ret;
> > > }
> > >
> > > - ret = read_poll_timeout(dw_pcie_get_ltssm, val,
> > > - val == DW_PCIE_LTSSM_L2_IDLE ||
> > > - val <= DW_PCIE_LTSSM_DETECT_WAIT,
> > > - PCIE_PME_TO_L2_TIMEOUT_US/10,
> > > - PCIE_PME_TO_L2_TIMEOUT_US, false, pci);
> > > - if (ret) {
> > > - /* Only log message when LTSSM isn't in DETECT or POLL */
> > > - dev_err(pci->dev, "Timeout waiting for L2 entry! LTSSM: 0x%x\n",
> > val);
> > > - return ret;
> > > + if (!dwc_check_quirk(pci, QUIRK_NOL2POLL_IN_PM)) {
> > > + ret = read_poll_timeout(dw_pcie_get_ltssm, val,
> > > + val == DW_PCIE_LTSSM_L2_IDLE ||
> > > + val <= DW_PCIE_LTSSM_DETECT_WAIT,
> > > + PCIE_PME_TO_L2_TIMEOUT_US/10,
> > > + PCIE_PME_TO_L2_TIMEOUT_US, false, pci);
> > > + if (ret) {
> > > + /* Only log message when LTSSM isn't in DETECT or POLL */
> > > + dev_err(pci->dev, "Timeout waiting for L2 entry! LTSSM:
> > 0x%x\n", val);
> > > + return ret;
> > > + }
> > > }
> > >
> > > /*
> > > diff --git a/drivers/pci/controller/dwc/pcie-designware.h
> > > b/drivers/pci/controller/dwc/pcie-designware.h
> > > index 56aafdbcdaca..05fe654d7761 100644
> > > --- a/drivers/pci/controller/dwc/pcie-designware.h
> > > +++ b/drivers/pci/controller/dwc/pcie-designware.h
> > > @@ -282,6 +282,9 @@
> > > /* Default eDMA LLP memory size */
> > > #define DMA_LLP_MEM_SIZE PAGE_SIZE
> > >
> > > +#define QUIRK_NOL2POLL_IN_PM BIT(0)
> > > +#define dwc_check_quirk(pci, val) (pci->quirk_flag & val)
> >
> > Maybe just my personal preference, but I don't like things named "check"
> > because that just means "look at"; it doesn't give any hint about how to
> > interpret the result of looking at it.
> >
> How about dwc_match_quirk(pci, val) (pci->quirk_flag & val)?
>

Maybe just dwc_quirk()?

- Mani

--
மணிவண�ணன� �தா�ிவம�


Return-Path: <linux-kernel+bounces-669190-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 71EF041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:50:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 52069189F87A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:50:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A454219924D;
Sat, 31 May 2025 17:50:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ayz/B4Bl"
Received: from mail-pf1-f173.google.com (mail-pf1-f173.google.com [209.85.210.173])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 54AEF17A2F3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:50:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.173
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748713824; cv=none; b=qDTbeWVNkxjbUccN8hT1aGGofT4WLWYhN/htZTJlq4njHfa7zC+KLJI/n2XZfsnAitv+34opAbTqhK+H7eg38ZWinRUtRuoGhiKfiP5FIQOCjN1WvywZWddItHuKvBkQMA7uGVGrnfA7jKSjZ2UU4NnAn7P7WphfxnmlA1ZyABI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748713824; c=relaxed/simple;
bh=HCvJG+sgtpgwdiZu6mAcUtxYGNjIK0MPNLZyapgK+HM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=B9J2xbEhJc5uOEC6OMZD/lPowE+k5fdfBoD1ds6OY+Wem2yWtUm+YCojGWYCCF1MdddjJpj2eDGCO93d6VMnxPZf2p9fRcdoT7H6jFZA9Ppad7svBAyZJKsn0FeW9volzznTfkLlQ1+WpKHyWG4gOs7g1Z7zydMiy3J5EQBk6zE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ayz/B4Bl; arc=none smtp.client-ip=209.85.210.173
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org
Received: by mail-pf1-f173.google.com with SMTP id d2e1a72fcca58-742c27df0daso2450801b3a.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 10:50:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linaro.org; s=google; t=1748713822; x=1749318622; darn=vger.kernel.org;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date:from:to
:cc:subject:date:message-id:reply-to;
bh=5AbNlKkJboN5wZoU7ozNTe8jKHTn2i9ktrC3fw6ibsc=;
b=ayz/B4Bl1f0vbCmPrEobj2Hc7pK91Xq9mBPz9GSC7upwbgD2P5zITF9x6JQaTKCAio
cxUeeI31Xo8zGewuLV6/QBjqnrYEQMK7hcKEGTHxuoI1A/o/vpJHyhBZxFdGjzbDPidh
dok1NZ2kamfvvsrdHpAUXOqaxwZYilk7pBtPJvmCvmWgTc0fyDzG0SXVfBmWJOAZ8E4B
bQVi3bdzlsYZGfLp0zYYzHveSSTVauuDnk7YR/wDvzLgwGY0ha6HXFock1nOUslzE1A3
fGti3slAHQaN3hDUz15IBsldCfLaKYMKbzkRsx8W6QEJfL3PVDaYXW51JhUDgIkU1vYP
0Low==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748713822; x=1749318622;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=5AbNlKkJboN5wZoU7ozNTe8jKHTn2i9ktrC3fw6ibsc=;
b=q19hX9U9hGPGmL4MeZTkl2iL2/A9CRPNc6MhY9zaIs0xxKeVaPjZgFT1u6CVg3Hr04
Lv2XZAsvr/RlM64tAp59gJSN4u+oh8uiT5nR69LWSh51T5juTBnvMYPcvcemIfwnLNyK
ispRCnlSAbisVfwYJtelbpmN7cpzov3v+BucGb6UWhDUkZW6yEE7/o0uP67PmibDg89u
OzzP+bgT5b4k3kotqtJ+eN/ZD326ZpfF+mkhtxvkkUZ8gXmEGQJ4sNa7GI/0fQZV/s1q
bHDkXUxqz+5S713m/uEMMVK/d4wqb2F+fsywx/jM7KJ5EP5Tz7s1VEXLN9laXItJvgkz
nFwg==
X-Forwarded-Encrypted: i=1; AJvYcCUc+H6eCj5M6JQGBfzXGqMqRVOQRHLOnKkxpVoYOSJa0FeltROfar+IpuaCuzBzOeF9zKEIoEuMwQw5MQM=@vger.kernel.org
X-Gm-Message-State: AOJu0Yxi9uyv0XWadg2f5qkQlAsfkhBfiQC0zn+W1yAVlNM9Ep32zD4Z
G5zABg8t7DbzgA4Z+DQnAToZB/qHRM2FZ+RZo82/d0jrsDHv9AZNKZk52uRWc+t8RA==
X-Gm-Gg: ASbGncuEVRWtCqGe2eSyED27X1D9v01dxhSCG0kUxx/GkjfNO3euZgE9RgKxRb6QKxr
sxZvumiCUsyFNot9wvKGnsbIPHMh1fu7XqRnqnXlGHjp2Y6OVBh1IXyBS/MhX3U1rewoNwaOwtd
s94VElo2ybd77P/vxnbG4qS/Moyn4P3sCgG0ZBaTfMzleQ/6IFr8eSMGYpKoH45iNEgpeZ+6Tsi
xBUX7kBsNTPcBokxrWjuJGidxVhR628gegZPY63rsZSanBui89NV7T/bWwm5So8bGEEVNRC2ECr
2yJtK/bfoNdYRX7aGTD44J43L8s2qgsrxdUkJmylCYzqIeXeAyM/nyeWs+m2jw==
X-Google-Smtp-Source: AGHT+IEdPK+JHZ+t44u8hV+Tuwo0Dn5k2WtHvYf+YRYNtFb+Y0T4pf/Gas2+IG+qUK9yX+xyBHPdxg==
X-Received: by 2002:a05:6a20:1583:b0:218:76dd:a66 with SMTP id adf61e73a8af0-21ad95636d1mr11124498637.13.1748713822539;
Sat, 31 May 2025 10:50:22 -0700 (PDT)
Received: from thinkpad ([120.56.204.95])
by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-b2ecebb4834sm2748724a12.74.2025.05.31.10.50.16
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 10:50:20 -0700 (PDT)
Date: Sat, 31 May 2025 23:20:15 +0530
From: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx>
To: Richard Zhu <hongxing.zhu@xxxxxxx>
Cc: jingoohan1@xxxxxxxxx, frank.li@xxxxxxx, l.stach@xxxxxxxxxxxxxx,
lpieralisi@xxxxxxxxxx, kw@xxxxxxxxx, robh@xxxxxxxxxx, bhelgaas@xxxxxxxxxx,
shawnguo@xxxxxxxxxx, s.hauer@xxxxxxxxxxxxxx, kernel@xxxxxxxxxxxxxx,
festevam@xxxxxxxxx, linux-pci@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
imx@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v1 2/4] PCI: dwc: Add quirk to fix hang issue when send
out PME_Turn_Off Msg TLP
Message-ID: <xq6ojgyh5tpm4zbpymb2wvtf4at3xq7bai3ztuublgh63e7qdn@vfxan6mew3os>
References: <20250408065221.1941928-1-hongxing.zhu@xxxxxxx>
<20250408065221.1941928-3-hongxing.zhu@xxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <20250408065221.1941928-3-hongxing.zhu@xxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Tue, Apr 08, 2025 at 02:52:19PM +0800, Richard Zhu wrote:
> When no endpoint is connected on i.MX7D PCIe, chip would be freeze when do
> the dummy write in dw_pcie_pme_turn_off() to issue a PME_Turn_Off Msg TLP.
>
> Add one quirk to issue the PME_Turn_Off only when link is up to avoid
> this problem on the PME_Turn_Off handshake broken platform, for example
> the i.MX7D.
>

Why do we need to send PME_Turn_Off if there is no endpoint connected? We should
skip PME_Turn_Off and L2/L3 Ready transitions in that case.

- Mani

> Signed-off-by: Richard Zhu <hongxing.zhu@xxxxxxx>
> ---
> .../pci/controller/dwc/pcie-designware-host.c | 16 +++++++++++-----
> drivers/pci/controller/dwc/pcie-designware.h | 1 +
> 2 files changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 0817df5b8a59..a62bf7e0ade8 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -956,12 +956,18 @@ int dw_pcie_suspend_noirq(struct dw_pcie *pci)
> if (dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKCTL) & PCI_EXP_LNKCTL_ASPM_L1)
> return 0;
>
> - if (pci->pp.ops->pme_turn_off) {
> - pci->pp.ops->pme_turn_off(&pci->pp);
> + if (dw_pcie_get_ltssm(pci) <= DW_PCIE_LTSSM_DETECT_WAIT &&
> + dwc_check_quirk(pci, QUIRK_NOLINK_NOPME)) {
> + /* Don't send the PME_TURN_OFF when link is down. */
> + ;
> } else {
> - ret = dw_pcie_pme_turn_off(pci);
> - if (ret)
> - return ret;
> + if (pci->pp.ops->pme_turn_off) {
> + pci->pp.ops->pme_turn_off(&pci->pp);
> + } else {
> + ret = dw_pcie_pme_turn_off(pci);
> + if (ret)
> + return ret;
> + }
> }
>
> if (!dwc_check_quirk(pci, QUIRK_NOL2POLL_IN_PM)) {
> diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h
> index 05fe654d7761..d752af660e95 100644
> --- a/drivers/pci/controller/dwc/pcie-designware.h
> +++ b/drivers/pci/controller/dwc/pcie-designware.h
> @@ -283,6 +283,7 @@
> #define DMA_LLP_MEM_SIZE PAGE_SIZE
>
> #define QUIRK_NOL2POLL_IN_PM BIT(0)
> +#define QUIRK_NOLINK_NOPME BIT(1)
> #define dwc_check_quirk(pci, val) (pci->quirk_flag & val)
>
> struct dw_pcie;
> --
> 2.37.1
>

--
மணிவண�ணன� �தா�ிவம�


Return-Path: <linux-kernel+bounces-669191-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E7DDA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 13:57:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id A62EC7A964B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:56:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A5075273FD;
Sat, 31 May 2025 17:57:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="TOFDgwhJ"
Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12olkn2034.outbound.protection.outlook.com [40.92.23.34])
(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 1511A645;
Sat, 31 May 2025 17:56:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.23.34
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748714187; cv=fail; b=LbiHHsrss7u22haAeQj1yI4QDoHMbiHgGSWG7zUPXsOZ6spzF7ODrqCylfjFYXAcmKBZSL2px0Sa8vWYvjsnxlc4XOgH9KqdoygNm67SRbNtPW/KD/tr7bSIAG4nOzyWAOaUb9q+TzPrwgS50MsUHCCZY8qHYbH/T9jV/SvOgWk=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748714187; c=relaxed/simple;
bh=BFH7F/+iWs0T+x4GHCTcEm+VTzqopCRiaqfuJWWNaJs=;
h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=YEcfRPiYo7FjrdkQ7N4/IfM9ieQIjIPa2HS0Nz3xiz9EAWDZGhsJNxGus3vwEcUx1lUKMMVT29SupGJi7KYY2HpeCShsbC01o2nOF79q/podCHzlHuXX/dA+3TCCru84hruO1lMf9SJzTA1Lm/w2ExuUmiAlJghr6GJoc9DXyKg=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=TOFDgwhJ; arc=fail smtp.client-ip=40.92.23.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=sPEuYBpn8t/CUzVdCp0PfN6pWTlvSuhi1w9ViK9Yk+jGh6GmvMEzF6etQ3rBxAYCia0hrkPuuUpFArhPDWhZgSra4ymY3/FyssvpeHC8yCQD7W2lqIo5WGc92WNNzkAwv426KH76cCf0ScUiX9ArQquAA8t/R82wMguxeG5QCz5rVPpHylyHQ93LODlEcb2f7QIumavGl+eUC2/Byzzo+osoxyrddqI04kYoTA0+x4Z+97bwGmjLiean+xgwLb5fla0drRyAXmDXEyui9AzGd8GTtBrgR3zxX5vmLuuaUkGQ8MKq5f3mFbCkPY8/tFESYqrBWPYmNdhzV0jy2Vg1cw==
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=szpMWXfoxWGr51Ku0bF1PDKtIeZOYDB0+DOxAqNbwFc=;
b=xuox2cRDzyqOnzrSCzeeDGuULngW/IrvqyCbnQy7AL114/P7zBwrhMglas4gBUFPyahUusT6yS2cfMga8dBga6vwKHMawPYFlLPPEYECMDXjCYGn6Trx2uRDYL9qBj/daTJ4bgx90QkNKVuzg7qcLeEXujxc/eKxm81ZiI9kmADt1MFl77S/FVxqf9SnzI9SEt31NalL34yuQzdlDT5P8ev2YiUaJWyMoQAdx8hwDadq2WXNnoCxNNGNxwbXj99dcJmJpsSiIc3jdJgPOfMP86QWFxwRuE8Ld7AibJIFj/mBW80tp6b7iCKT0X9cjEV4lvgpmycxDmklUczbCFvIKw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=szpMWXfoxWGr51Ku0bF1PDKtIeZOYDB0+DOxAqNbwFc=;
b=TOFDgwhJ0W4M/iA0JhY8lEJAVMBVWG4gg47Cvb6fCm1oEFqA96wvt/OmrLNx8AZwIq80o2/3r2R3gDEa06kJhEWlImwxo/Z92p5bg0mQZKIobdyrJBt4YgCFcfcJzc/yvfDGj542absemy0q4cUnZ23rfz+HhwVJsN7oYY6QbiOaKPwzV71K54G+WLawW6VrOpvNaSmmFkLrNcBxbPA6l2sQHAykDCzpG6jhoysH2XJNvA+qgARfveeKZgf/B1TRVIlGu2TIpTe+p88IKnZlFaWm56o4UIosSdGBwjsjJ+AFnyUDoKwOM2SubIxVoSVHIIo9WrDqeH+c5d0a2yxEXQ==
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:34::10)
by CPWP152MB6177.LAMP152.PROD.OUTLOOK.COM (2603:10d6:103:210::5) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.32; Sat, 31 May
2025 17:56:19 +0000
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1]) by SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1%6]) with mapi id 15.20.8769.035; Sat, 31 May 2025
17:56:19 +0000
From: =?utf-8?B?4oSw8J2Tg/Cdk4/ihLQg4oSx8J2TivCdk4DihK8=?=
<milesonerd@xxxxxxxxxxx>
To: "paul@xxxxxxxxxxxxxx" <paul@xxxxxxxxxxxxxx>, "jmorris@xxxxxxxxx"
<jmorris@xxxxxxxxx>, "serge@xxxxxxxxxx" <serge@xxxxxxxxxx>
CC: "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>,
"linux-security-module@xxxxxxxxxxxxxxx"
<linux-security-module@xxxxxxxxxxxxxxx>, "torvalds@xxxxxxxxxxxxxxxxxxxx"
<torvalds@xxxxxxxxxxxxxxxxxxxx>
Subject: [PATCH 0/3] security: add Lilium - Linux Integrity Lock-In User
Module
Thread-Topic: [PATCH 0/3] security: add Lilium - Linux Integrity Lock-In User
Module
Thread-Index: AQHb0lFQZ8gIcN7jsk6X7W1gh1P1nw==
Date: Sat, 31 May 2025 17:56:19 +0000
Message-ID:
<SCYP152MB626161A0730BFC8A7AD1CF20B060A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Accept-Language: en-GB, pt-BR, en-US
Content-Language: en-GB
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
msip_labels:
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SCYP152MB6261:EE_|CPWP152MB6177:EE_
x-ms-office365-filtering-correlation-id: c9902a13-d8d8-413d-0d85-08dda06c725f
x-microsoft-antispam:
BCL:0;ARA:14566002|19110799006|21061999006|15080799009|6092099012|15030799003|461199028|8060799009|8062599006|7092599006|5062599005|102099032|440099028|13095399003|3412199025|26115399003;
x-microsoft-antispam-message-info:
=?utf-8?B?UzE0WWxkdGdNYWUvemdxQ2Jmd2NEN3hmcjc3aVZ2dHk0a2MyMy9JdGlidzlk?=
=?utf-8?B?QXQvbXh4TENrRkowM3VuSzFFNkI2eGdseXAvWGx4ZU1QeWJOYlQ5SDB3azJu?=
=?utf-8?B?anNvTzNENDVaTTdTaTRRUHB4ejRXNHNlVkJqWFd0WmtOYkpJVEtFWTd3bHJo?=
=?utf-8?B?YWR4NFBOb0cvMTcxbEFoR0tzTnp4K3NBOHRsNHdxT0xCeU1QS1FOUkJwYzJw?=
=?utf-8?B?TmpZakd5UEdvbVJBbVdMOW4xUXBSVmZZUnlRTWdFOTFlclhhK09WWWxIRjB3?=
=?utf-8?B?b2pnTHNwSWpnK2xXTUZ5Z05lbWc2Qllld0NrMzZjaGgxTDh5N0VKcjdJbThC?=
=?utf-8?B?SUorcklISE5EcVRlZ2c0d2dVcTMzS1I0RWlwYkNLTUwyRklYckgrdlBIbXFk?=
=?utf-8?B?dm11NzBMZmtrd1RIVmxTZXVtVnd4WUd5NWxwZFJBNHRpOVcrTVFOZ3BqUmVt?=
=?utf-8?B?Vk50TGZBalhBTXFmS212NVN0UzZCSEZpcDVLdTdDY2tqWnJKRjJLVElpazM4?=
=?utf-8?B?ZVg4SEUybkJZUjRMVDBIOXdkWjQ0Rm9oZmVkMVh2N1BkbUwyTHVjU0d1MklI?=
=?utf-8?B?V3B0aTAvSnF2N2ZLMHYxOVpUUUhGR2E2MFZHci8yL3pjdFltL0NucGJISFY3?=
=?utf-8?B?d0xIbHp4NlNKU01lZ0QxZzVubzFJYitwRVRZV3dSRjRYY1dyUFN3UGxoZUs5?=
=?utf-8?B?MzJFa25TQi94SWNtT0RrbGh4Q2l3OEFJeGU3Tm52MHF3UkRDSEhmTFRYblk3?=
=?utf-8?B?cEdNZkgyeS9hdGMzSHkzZSsyT2d3OUczRE1zY255b3VYenpON3NVQnFjRDg2?=
=?utf-8?B?TExNbXJJQnE3T1g2WERSb3dCcUZYZnhyWG4wNHlRU043c0RhdjEvb20xemxN?=
=?utf-8?B?ejdpT1JQYnEzY0JjMVNsRjJBajFHdFhERXA4T2hVVEZVa2NNbW1waHU3aC9n?=
=?utf-8?B?N2VMb05OeSttQkZyS3VvTG1SOG1Rdk9GcWlSbWxGMi9YWC8rY1FRSWtVeFVP?=
=?utf-8?B?cGxFbW9mZ0ZGdzY1Z0Q3QW5mcmNFWGJKaldqOFRGc0tlWDRBczZUbU9rRWZq?=
=?utf-8?B?bGpTZ1JoZ1V3UmFOam9jSE9qNkNWQVhtU3BFMWphaDVrMjZhOVgrUmhveUli?=
=?utf-8?B?YXBxWXVPRDZwRElVSVVaTzEwNUU0amFkN0FKOXZvSEdONVRVUVg0TFhKN3Bn?=
=?utf-8?B?NGlVcGE1UGQ5YzZVanhoMjRyWkxNNnMzR2NsUUxvTHh1ZjVnK2Y4bk5yVTE4?=
=?utf-8?B?Z2ROWlU0VDhTdmp5cFk4Q3daT1NVWHpoVGJuaythemxHOEZOQkNRdTBkS3dD?=
=?utf-8?B?anI3SUFzcEtmNzF5ekpRWE95aTNTZHFVMUVsdnhObG13REswaTZkbzRlMms2?=
=?utf-8?B?YURKbERwckJ0cE9IbVZHcno1azlabC9tN0NTRVp5c3lLQVl3TXlpTld2RDUv?=
=?utf-8?B?Z2kvVnE4N1NDUHdNd2xBSENGaVlIOVZKT0VLbm5JK0NrUE5URlBqTjU0NU93?=
=?utf-8?B?dGZablIrSTJ0cFRtbjVPK2tFV2pKaU1tc1FpaVpnaXhqdmQ0dHhzbzRyL2lp?=
=?utf-8?B?ZEg1YlJQTUkwaGhJRDZLNVB3U2IweHBnUmFFLzFQNVRzcFRYRGlZK2ZjSi9i?=
=?utf-8?B?MVpsc1hoOUMxZkRLSTBJaUQ3THF2QlF4M0ZlZGhJSVdsWmY0SXZHbFlmOGVS?=
=?utf-8?B?LzNlczVya3p4dG9FR2U1Y2p6NUljVTY2TE14KzZwdGY5aEQvSENBVjJGdnZB?=
=?utf-8?Q?cddezYcigAcyitRsnk=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?utf-8?B?MjZSWDhwTTRMMDZxYXoySlZmQXpCOFlvWG9sZnhzTXVIcDg1ZmVwbFAyMlBy?=
=?utf-8?B?TURYdi9OU2daMjB6S0dyZ1d2NHFKTU1CeFNzSlZIYmJKbkplcjEzYnllei85?=
=?utf-8?B?YURYZks1UlpRd0FPelR2cWI1MmpVWFkzcFJ6ZEFHcEZsN25GMWprWVN6SXBn?=
=?utf-8?B?Z0NybU1nZE9JanpjaXBOQThWM0tCeDRMNFVUUE1VVmw1VWttWHJOMUpLRTBn?=
=?utf-8?B?Z2o1UEY1b0NHTG40Nkk5UjZOWENKM3FJejEyT3Q4NlhMSWs0WlUxbk96eXht?=
=?utf-8?B?Tmo2TVRSQzNZRDdBUTFiNFFMbjdvMVgyUmUvRGczbzZPK3lIWDZtNE9Tbk5n?=
=?utf-8?B?aVNZbjlrYldmZWJvTWlNQlZ3N1lxOVNleTIxMjRGNHU0QzJjN29rcWQ0UUxL?=
=?utf-8?B?NGNSZWhYOHlUekxiMkk0djBMOUNra2QyNG1jQlZRMW9keEE4RUk2Nk8zdVZH?=
=?utf-8?B?OFBIMThucXVTMGFkeGxudWRxNHlSVGxvQzFKeHZaQnJSU2R0SGY5WGE0b2Zj?=
=?utf-8?B?UmdNTFRsYThKV1NCenNvOFFpdmZQWFJ5WWs2MElsWXFnQTJUVldhRTk0UkFl?=
=?utf-8?B?T2MvdTMvUGFFcm9jUHpVa3I4SVRIL04wYi9OYlE0QUN6NWdiR09QdzlELzdI?=
=?utf-8?B?WDg0ZXN1WHlBY3pZUmc3L0RiQWhRLzB4VlBEYUM0ZjN6SmlDSndrM01ZNmJo?=
=?utf-8?B?VE9FQ040UEJnempuSXdEWVlIRDkybFhxemFLSUcyZmt6R203MGZMOXZaMWcz?=
=?utf-8?B?eE1iR0VZN3I4aVR4c29mbVJYQTl1dmtVYmlYcTBuSVdVc1dJMEJ5czh2TEt0?=
=?utf-8?B?N3UvR3BLdmJ3V1Vlb2tVcEhNc2xINlFWd2Q4Q3hvV1VESXh6TlNSQlF5Nllm?=
=?utf-8?B?OE4xdkx4clFoK1lOOUJiYStxNjl3MVhDQ200V2Vpa0pUeEVHRkZ5ZW0yRllP?=
=?utf-8?B?Mi94VVVadjgwVjdNUm45N21mb21ZM2dGVGdmeU1ETnV5dkRvV1JvN0dIN2c5?=
=?utf-8?B?R1RndDNSRENYSm9VTG1tSnlyUDJTaU9RdWRhRmY0M3p0eDFVZmFTR3FGUURm?=
=?utf-8?B?WVAvWis1RDMxWHpOUDRSUUpvRWJGOVdOSGt3U0ltYlBkeEdoTzBHV2xXMGNX?=
=?utf-8?B?L0dEMUVXbVFNM01uc1gza2wyTzVqWlJqMGt2V0hnT08zcnlXUm9BbGxrZ3dF?=
=?utf-8?B?TFJ2alhZSThSc3p2Q1hNMjhDcFBFQWJMTWptS05ZSVVZeGdrWE1hNUtJeEMy?=
=?utf-8?B?dE9JTThTblE0M2g4MytnbHZpZWpET0cxdG1sRDkyQjNNbDBWL3RXNkxPbWdR?=
=?utf-8?B?aFJzSmQxU2xkcGxaZUR6RncwdytZK1o3ZG5YN3BKbDAxdGdHYy84dzY0SHE1?=
=?utf-8?B?UmNsclBsS3QxbmFhU0N2K3F6dWNqcjU4RXJsK25vQlR6OUo5aG5Da2I5OGlJ?=
=?utf-8?B?Z2VoM3liSUN5UTJFdHdaa1ViMkpLL0RLZmYxbEFEbW9NSTBRbEtrQ1hVdGdR?=
=?utf-8?B?eHpoUXB0eDFPSTBBZzcwaEFLVENqM040WTVyd0ppcW5YeGVKWGFxRFI1M1Ry?=
=?utf-8?B?UHJQTEd2STJ1VXZGRWhTalJsbFUyclVCSzc4NHh0QzVSRTR3ZWI4NW94N0VK?=
=?utf-8?B?N09rUzBkempXQnh4YlllQzRITlo1cUhnakVXV3ptTWhGRTRhbUltRzZ2NnNo?=
=?utf-8?Q?+j7aZQ6wVFSVKgUYdLZw?=
Content-Type: multipart/mixed;
boundary="_006_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_"
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: c9902a13-d8d8-413d-0d85-08dda06c725f
X-MS-Exchange-CrossTenant-originalarrivaltime: 31 May 2025 17:56:19.1752
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CPWP152MB6177

--_006_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_
Content-Type: multipart/alternative;
boundary="_000_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_"

--_000_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

VGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBMaWxpdW0gKExpbnV4IEludGVncml0eSBMb2NrLUlu
IFVzZXIgTW9kdWxlKSAgc2VjdXJpdHkgbW9kdWxlLiBMaWxpdW0gYWltcyB0byBpbXByb3ZlIHN5
c3RlbSBoYXJkZW5pbmcgYnkgYmxvY2tpbmcgIGEgc2V0IG9mIGhpZ2gtcmlzayBvcGVyYXRpb25z
IG9mdGVuIHRhcmdldGVkIGJ5IGV4cGxvaXRzIG9yIHVud2FudGVkICBydW50aW1lIGJlaGF2aW91
ci4NCg0KU3BlY2lmaWNhbGx5LCBMaWxpdW0gcmVzdHJpY3RzOg0KDQoNCiAgKg0KIHB0cmFjZQ0K
ICAqDQogbW1hcC9tcHJvdGVjdCB3aXRoIFBST1RfRVhFQw0KICAqDQoga2V4ZWNfbG9hZA0KICAq
DQogY2xvbmUgYW5kIHVuc2hhcmUNCiAgKg0KIG9wZW4vb3BlbmF0DQogICoNCiBpb2N0bA0KDQpM
aWxpdW0gaXMgZGVzaWduZWQgdG8gYmUgbW9kdWxhciBhbmQgY29uZmlndXJhYmxlIHZpYSBzeXNm
cywgYWxsb3dpbmcgdXNlcnMgdG8gZW5hYmxlIHByb3RlY3Rpb25zIGluZGl2aWR1YWxseSBvciBp
biBjb21iaW5hdGlvbiwgIGRlcGVuZGluZyBvbiB0aGVpciBzZWN1cml0eSBuZWVkcy4gQnkgZGVm
YXVsdCwgTGlsaXVtIGlzIGRpc2FibGVkICB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGV4aXN0
aW5nIHdvcmtmbG93cy4NCg0KVGhlIGdvYWwgaXMgdG8gcHJvdmlkZSBhIGxpZ2h0d2VpZ2h0LCBm
bGV4aWJsZSBMU00gZm9jdXNlZCBvbiB1c2VyLXNwYWNlICBpbnRlZ3JpdHkgbG9ja2Rvd25zLCB1
c2VmdWwgaW4gaGFyZGVuZWQgZW52aXJvbm1lbnRzLCBjb250YWluZXJzLCBvciAgbWluaW1hbGlz
dCBkaXN0cm9zLg0KDQpTaWduZWQtb2ZmLWJ5OiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9v
ay5jb20+DQo=

--_000_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgc3R5bGU9
ImRpc3BsYXk6bm9uZTsiPiBQIHttYXJnaW4tdG9wOjA7bWFyZ2luLWJvdHRvbTowO30gPC9zdHls
ZT4NCjwvaGVhZD4NCjxib2R5IGRpcj0ibHRyIj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m
IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01T
Rm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx
MnB0OyBjb2xvcjogYmxhY2s7Ij4NClRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgTGlsaXVtIChM
aW51eCBJbnRlZ3JpdHkgTG9jay1JbiBVc2VyIE1vZHVsZSkmbmJzcDsgc2VjdXJpdHkgbW9kdWxl
LiBMaWxpdW0gYWltcyB0byBpbXByb3ZlIHN5c3RlbSBoYXJkZW5pbmcgYnkgYmxvY2tpbmcgJm5i
c3A7YSBzZXQgb2YgaGlnaC1yaXNrIG9wZXJhdGlvbnMgb2Z0ZW4gdGFyZ2V0ZWQgYnkgZXhwbG9p
dHMgb3IgdW53YW50ZWQgJm5ic3A7cnVudGltZSBiZWhhdmlvdXIuPC9kaXY+DQo8ZGl2IGNsYXNz
PSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRvcywgQXB0b3NfRW1iZWRk
ZWRGb250LCBBcHRvc19NU0ZvbnRTZXJ2aWNlLCBDYWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2Vy
aWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IGJsYWNrOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYg
Y2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19F
bWJlZGRlZEZvbnQsIEFwdG9zX01TRm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fu
cy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogYmxhY2s7Ij4NClNwZWNpZmljYWxseSwg
TGlsaXVtIHJlc3RyaWN0czo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHls
ZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01TRm9udFNl
cnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBj
b2xvcjogYmxhY2s7Ij4NCjxicj4NCjwvZGl2Pg0KPHVsIGRhdGEtZWRpdGluZy1pbmZvPSJ7JnF1
b3Q7YXBwbHlMaXN0U3R5bGVGcm9tTGV2ZWwmcXVvdDs6ZmFsc2UsJnF1b3Q7dW5vcmRlcmVkU3R5
bGVUeXBlJnF1b3Q7OjJ9IiBzdHlsZT0ibWFyZ2luLXRvcDogMHB4OyBtYXJnaW4tYm90dG9tOiAw
cHg7Ij4NCjxsaSBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQs
IEFwdG9zX01TRm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9u
dC1zaXplOiAxMnB0OyBjb2xvcjogYmxhY2s7IGxpc3Qtc3R5bGUtdHlwZTogJnF1b3Q7LSAmcXVv
dDs7Ij4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4mbmJzcDtwdHJhY2U8L2Rpdj4NCjwv
bGk+PGxpIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFwdG9zX0VtYmVkZGVkRm9udCwgQXB0
b3NfTVNGb250U2VydmljZSwgQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp
emU6IDEycHQ7IGNvbG9yOiBibGFjazsgbGlzdC1zdHlsZS10eXBlOiAmcXVvdDstICZxdW90Ozsi
Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPiZuYnNwO21tYXAvbXByb3RlY3Qgd2l0aCBQ
Uk9UX0VYRUM8L2Rpdj4NCjwvbGk+PGxpIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFwdG9z
X0VtYmVkZGVkRm9udCwgQXB0b3NfTVNGb250U2VydmljZSwgQ2FsaWJyaSwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiBibGFjazsgbGlzdC1zdHlsZS10eXBl
OiAmcXVvdDstICZxdW90OzsiPg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPiZuYnNwO2tl
eGVjX2xvYWQ8L2Rpdj4NCjwvbGk+PGxpIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFwdG9z
X0VtYmVkZGVkRm9udCwgQXB0b3NfTVNGb250U2VydmljZSwgQ2FsaWJyaSwgSGVsdmV0aWNhLCBz
YW5zLXNlcmlmOyBmb250LXNpemU6IDEycHQ7IGNvbG9yOiBibGFjazsgbGlzdC1zdHlsZS10eXBl
OiAmcXVvdDstICZxdW90OzsiPg0KPGRpdiBjbGFzcz0iZWxlbWVudFRvUHJvb2YiPiZuYnNwO2Ns
b25lIGFuZCB1bnNoYXJlPC9kaXY+DQo8L2xpPjxsaSBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9z
LCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01TRm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZl
dGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogYmxhY2s7IGxpc3Qtc3R5
bGUtdHlwZTogJnF1b3Q7LSAmcXVvdDs7Ij4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIj4m
bmJzcDtvcGVuL29wZW5hdDwvZGl2Pg0KPC9saT48bGkgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcHRv
cywgQXB0b3NfRW1iZWRkZWRGb250LCBBcHRvc19NU0ZvbnRTZXJ2aWNlLCBDYWxpYnJpLCBIZWx2
ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IGJsYWNrOyBsaXN0LXN0
eWxlLXR5cGU6ICZxdW90Oy0gJnF1b3Q7OyI+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiI+
Jm5ic3A7aW9jdGw8L2Rpdj4NCjwvbGk+PC91bD4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29m
IiBzdHlsZT0iZm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01T
Rm9udFNlcnZpY2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx
MnB0OyBjb2xvcjogYmxhY2s7Ij4NCjxicj4NCjwvZGl2Pg0KPGRpdiBjbGFzcz0iZWxlbWVudFRv
UHJvb2YiIHN0eWxlPSJmb250LWZhbWlseTogQXB0b3MsIEFwdG9zX0VtYmVkZGVkRm9udCwgQXB0
b3NfTVNGb250U2VydmljZSwgQ2FsaWJyaSwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNp
emU6IDEycHQ7IGNvbG9yOiBibGFjazsiPg0KTGlsaXVtIGlzIGRlc2lnbmVkIHRvIGJlIG1vZHVs
YXIgYW5kIGNvbmZpZ3VyYWJsZSB2aWEgc3lzZnMsIGFsbG93aW5nIHVzZXJzIHRvIGVuYWJsZSBw
cm90ZWN0aW9ucyBpbmRpdmlkdWFsbHkgb3IgaW4gY29tYmluYXRpb24sICZuYnNwO2RlcGVuZGlu
ZyBvbiB0aGVpciBzZWN1cml0eSBuZWVkcy4gQnkgZGVmYXVsdCwgTGlsaXVtIGlzDQo8Yj5kaXNh
YmxlZDwvYj4mbmJzcDsgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBleGlzdGluZyB3b3JrZmxv
d3MuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQtZmFtaWx5
OiBBcHRvcywgQXB0b3NfRW1iZWRkZWRGb250LCBBcHRvc19NU0ZvbnRTZXJ2aWNlLCBDYWxpYnJp
LCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IGJsYWNrOyI+
DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0iZm9udC1m
YW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01TRm9udFNlcnZpY2UsIENh
bGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xvcjogYmxh
Y2s7Ij4NClRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgYSBsaWdodHdlaWdodCwgZmxleGlibGUgTFNN
IGZvY3VzZWQgb24gdXNlci1zcGFjZSAmbmJzcDtpbnRlZ3JpdHkgbG9ja2Rvd25zLCB1c2VmdWwg
aW4gaGFyZGVuZWQgZW52aXJvbm1lbnRzLCBjb250YWluZXJzLCBvciAmbmJzcDttaW5pbWFsaXN0
IGRpc3Ryb3MuPC9kaXY+DQo8ZGl2IGNsYXNzPSJlbGVtZW50VG9Qcm9vZiIgc3R5bGU9ImZvbnQt
ZmFtaWx5OiBBcHRvcywgQXB0b3NfRW1iZWRkZWRGb250LCBBcHRvc19NU0ZvbnRTZXJ2aWNlLCBD
YWxpYnJpLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJwdDsgY29sb3I6IGJs
YWNrOyI+DQo8YnI+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImVsZW1lbnRUb1Byb29mIiBzdHlsZT0i
Zm9udC1mYW1pbHk6IEFwdG9zLCBBcHRvc19FbWJlZGRlZEZvbnQsIEFwdG9zX01TRm9udFNlcnZp
Y2UsIENhbGlicmksIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB0OyBjb2xv
cjogYmxhY2s7Ij4NClNpZ25lZC1vZmYtYnk6IEVuem8gRnVrZSAmbHQ7bWlsZXNvbmVyZEBvdXRs
b29rLmNvbSZndDs8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4NCg==

--_000_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_--

--_006_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_
Content-Type: application/octet-stream;
name="0003-MAINTAINERS-Add-my-name-because-I-am-the-creator-of-.patch"
Content-Description:
0003-MAINTAINERS-Add-my-name-because-I-am-the-creator-of-.patch
Content-Disposition: attachment;
filename="0003-MAINTAINERS-Add-my-name-because-I-am-the-creator-of-.patch";
size=859200; creation-date="Sat, 31 May 2025 17:27:41 GMT";
modification-date="Sat, 31 May 2025 17:28:27 GMT"
Content-Transfer-Encoding: base64

RnJvbSA0MDAyZmM3Mzk5ZjVjNzY1MDEyZDkxODZkNTcwNTlkY2ZhNzlkOTllIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CkRh
dGU6IFNhdCwgMzEgTWF5IDIwMjUgMTI6MzI6MDEgKzAwMDAKU3ViamVjdDogW1BBVENIIDIvMl0g
TUFJTlRBSU5FUlM6IEFkZCBteSBuYW1lLCBiZWNhdXNlIEkgYW0gdGhlIGNyZWF0b3Igb2YKIExJ
TElVTQoKLS0tCiBNQUlOVEFJTkVSUyB8IDI3MjQwICsrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjcyNDAgaW5zZXJ0aW9u
cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5UQUlORVJTCgpkaWZmIC0tZ2l0IGEvTUFJTlRB
SU5FUlMgYi9NQUlOVEFJTkVSUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m
Mzk2OGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTAsMCArMSwyNzI0MCBA
QAorTGlzdCBvZiBtYWludGFpbmVycworPT09PT09PT09PT09PT09PT09PQorCitEZXNjcmlwdGlv
bnMgb2Ygc2VjdGlvbiBlbnRyaWVzIGFuZCBwcmVmZXJyZWQgb3JkZXIKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJTTogKk1haWwqIHBhdGNo
ZXMgdG86IEZ1bGxOYW1lIDxhZGRyZXNzQGRvbWFpbj4KKwlSOiBEZXNpZ25hdGVkICpSZXZpZXdl
cio6IEZ1bGxOYW1lIDxhZGRyZXNzQGRvbWFpbj4KKwkgICBUaGVzZSByZXZpZXdlcnMgc2hvdWxk
IGJlIENDZWQgb24gcGF0Y2hlcy4KKwlMOiAqTWFpbGluZyBsaXN0KiB0aGF0IGlzIHJlbGV2YW50
IHRvIHRoaXMgYXJlYQorCVM6ICpTdGF0dXMqLCBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKwkgICBT
dXBwb3J0ZWQ6CVNvbWVvbmUgaXMgYWN0dWFsbHkgcGFpZCB0byBsb29rIGFmdGVyIHRoaXMuCisJ
ICAgTWFpbnRhaW5lZDoJU29tZW9uZSBhY3R1YWxseSBsb29rcyBhZnRlciBpdC4KKwkgICBPZGQg
Rml4ZXM6CUl0IGhhcyBhIG1haW50YWluZXIgYnV0IHRoZXkgZG9uJ3QgaGF2ZSB0aW1lIHRvIGRv
CisJCQltdWNoIG90aGVyIHRoYW4gdGhyb3cgdGhlIG9kZCBwYXRjaCBpbi4gU2VlIGJlbG93Li4K
KwkgICBPcnBoYW46CU5vIGN1cnJlbnQgbWFpbnRhaW5lciBbYnV0IG1heWJlIHlvdSBjb3VsZCB0
YWtlIHRoZQorCQkJcm9sZSBhcyB5b3Ugd3JpdGUgeW91ciBuZXcgY29kZV0uCisJICAgT2Jzb2xl
dGU6CU9sZCBjb2RlLiBTb21ldGhpbmcgdGFnZ2VkIG9ic29sZXRlIGdlbmVyYWxseSBtZWFucwor
CQkJaXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgYSBiZXR0ZXIgc3lzdGVtIGFuZCB5b3UKKwkJCXNo
b3VsZCBiZSB1c2luZyB0aGF0LgorCVc6ICpXZWItcGFnZSogd2l0aCBzdGF0dXMvaW5mbworCVE6
ICpQYXRjaHdvcmsqIHdlYiBiYXNlZCBwYXRjaCB0cmFja2luZyBzeXN0ZW0gc2l0ZQorCUI6IFVS
SSBmb3Igd2hlcmUgdG8gZmlsZSAqYnVncyouIEEgd2ViLXBhZ2Ugd2l0aCBkZXRhaWxlZCBidWcK
KwkgICBmaWxpbmcgaW5mbywgYSBkaXJlY3QgYnVnIHRyYWNrZXIgbGluaywgb3IgYSBtYWlsdG86
IFVSSS4KKwlDOiBVUkkgZm9yICpjaGF0KiBwcm90b2NvbCwgc2VydmVyIGFuZCBjaGFubmVsIHdo
ZXJlIGRldmVsb3BlcnMKKwkgICB1c3VhbGx5IGhhbmcgb3V0LCBmb3IgZXhhbXBsZSBpcmM6Ly9z
ZXJ2ZXIvY2hhbm5lbC4KKwlQOiAqU3Vic3lzdGVtIFByb2ZpbGUqIGRvY3VtZW50IGZvciBtb3Jl
IGRldGFpbHMgc3VibWl0dGluZworCSAgIHBhdGNoZXMgdG8gdGhlIGdpdmVuIHN1YnN5c3RlbS4g
VGhpcyBpcyBlaXRoZXIgYW4gaW4tdHJlZSBmaWxlLAorCSAgIG9yIGEgVVJJLiBTZWUgRG9jdW1l
bnRhdGlvbi9tYWludGFpbmVyL21haW50YWluZXItZW50cnktcHJvZmlsZS5yc3QKKwkgICBmb3Ig
ZGV0YWlscy4KKwlUOiAqU0NNKiB0cmVlIHR5cGUgYW5kIGxvY2F0aW9uLgorCSAgIFR5cGUgaXMg
b25lIG9mOiBnaXQsIGhnLCBxdWlsdCwgc3RnaXQsIHRvcGdpdAorCUY6ICpGaWxlcyogYW5kIGRp
cmVjdG9yaWVzIHdpbGRjYXJkIHBhdHRlcm5zLgorCSAgIEEgdHJhaWxpbmcgc2xhc2ggaW5jbHVk
ZXMgYWxsIGZpbGVzIGFuZCBzdWJkaXJlY3RvcnkgZmlsZXMuCisJICAgRjoJZHJpdmVycy9uZXQv
CWFsbCBmaWxlcyBpbiBhbmQgYmVsb3cgZHJpdmVycy9uZXQKKwkgICBGOglkcml2ZXJzL25ldC8q
CWFsbCBmaWxlcyBpbiBkcml2ZXJzL25ldCwgYnV0IG5vdCBiZWxvdworCSAgIEY6CSovbmV0LyoJ
CWFsbCBmaWxlcyBpbiAiYW55IHRvcCBsZXZlbCBkaXJlY3RvcnkiL25ldAorCSAgIE9uZSBwYXR0
ZXJuIHBlciBsaW5lLiAgTXVsdGlwbGUgRjogbGluZXMgYWNjZXB0YWJsZS4KKwlYOiAqRXhjbHVk
ZWQqIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGF0IGFyZSBOT1QgbWFpbnRhaW5lZCwgc2FtZQor
CSAgIHJ1bGVzIGFzIEY6LiBGaWxlcyBleGNsdXNpb25zIGFyZSB0ZXN0ZWQgYmVmb3JlIGZpbGUg
bWF0Y2hlcy4KKwkgICBDYW4gYmUgdXNlZnVsIGZvciBleGNsdWRpbmcgYSBzcGVjaWZpYyBzdWJk
aXJlY3RvcnksIGZvciBpbnN0YW5jZToKKwkgICBGOgluZXQvCisJICAgWDoJbmV0L2lwdjYvCisJ
ICAgbWF0Y2hlcyBhbGwgZmlsZXMgaW4gYW5kIGJlbG93IG5ldCBleGNsdWRpbmcgbmV0L2lwdjYv
CisJTjogRmlsZXMgYW5kIGRpcmVjdG9yaWVzICpSZWdleCogcGF0dGVybnMuCisJICAgTjoJW15h
LXpddGVncmEJYWxsIGZpbGVzIHdob3NlIHBhdGggY29udGFpbnMgdGVncmEKKwkgICAgICAgICAg
ICAgICAgICAgICAgICAobm90IGluY2x1ZGluZyBmaWxlcyBsaWtlIGludGVncmF0b3IpCisJICAg
T25lIHBhdHRlcm4gcGVyIGxpbmUuICBNdWx0aXBsZSBOOiBsaW5lcyBhY2NlcHRhYmxlLgorCSAg
IHNjcmlwdHMvZ2V0X21haW50YWluZXIucGwgaGFzIGRpZmZlcmVudCBiZWhhdmlvciBmb3IgZmls
ZXMgdGhhdAorCSAgIG1hdGNoIEY6IHBhdHRlcm4gYW5kIG1hdGNoZXMgb2YgTjogcGF0dGVybnMu
ICBCeSBkZWZhdWx0LAorCSAgIGdldF9tYWludGFpbmVyIHdpbGwgbm90IGxvb2sgYXQgZ2l0IGxv
ZyBoaXN0b3J5IHdoZW4gYW4gRjogcGF0dGVybgorCSAgIG1hdGNoIG9jY3Vycy4gIFdoZW4gYW4g
TjogbWF0Y2ggb2NjdXJzLCBnaXQgbG9nIGhpc3RvcnkgaXMgdXNlZAorCSAgIHRvIGFsc28gbm90
aWZ5IHRoZSBwZW9wbGUgdGhhdCBoYXZlIGdpdCBjb21taXQgc2lnbmF0dXJlcy4KKwlLOiAqQ29u
dGVudCByZWdleCogKHBlcmwgZXh0ZW5kZWQpIHBhdHRlcm4gbWF0Y2ggaW4gYSBwYXRjaCBvciBm
aWxlLgorCSAgIEZvciBpbnN0YW5jZToKKwkgICBLOiBvZl9nZXRfcHJvZmlsZQorCSAgICAgIG1h
dGNoZXMgcGF0Y2hlcyBvciBmaWxlcyB0aGF0IGNvbnRhaW4gIm9mX2dldF9wcm9maWxlIgorCSAg
IEs6IFxiKHByaW50a3xwcl8oaW5mb3xlcnIpKVxiCisJICAgICAgbWF0Y2hlcyBwYXRjaGVzIG9y
IGZpbGVzIHRoYXQgY29udGFpbiBvbmUgb3IgbW9yZSBvZiB0aGUgd29yZHMKKwkgICAgICBwcmlu
dGssIHByX2luZm8gb3IgcHJfZXJyCisJICAgT25lIHJlZ2V4IHBhdHRlcm4gcGVyIGxpbmUuICBN
dWx0aXBsZSBLOiBsaW5lcyBhY2NlcHRhYmxlLgorCitNYWludGFpbmVycyBMaXN0CistLS0tLS0t
LS0tLS0tLS0tCisKKy4uIG5vdGU6OiBXaGVuIHJlYWRpbmcgdGhpcyBsaXN0LCBwbGVhc2UgbG9v
ayBmb3IgdGhlIG1vc3QgcHJlY2lzZSBhcmVhcworICAgICAgICAgIGZpcnN0LiBXaGVuIGFkZGlu
ZyB0byB0aGlzIGxpc3QsIHBsZWFzZSBrZWVwIHRoZSBlbnRyaWVzIGluCisgICAgICAgICAgYWxw
aGFiZXRpY2FsIG9yZGVyLgorCiszQzU5WCBORVRXT1JLIERSSVZFUgorTToJU3RlZmZlbiBLbGFz
c2VydCA8a2xhc3NlcnRAa2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU9kZCBGaXhlcworRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0
aGVybmV0LzNjb20vdm9ydGV4LnJzdAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS8zYzU5
eC5jCisKKzNDUjk5MCBORVRXT1JLIERSSVZFUgorTToJRGF2aWQgRGlsbG93IDxkYXZlQHRoZWRp
bGxvd3Mub3JnPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9uZXQvZXRoZXJuZXQvM2NvbS90eXBob29uKgorCiszV0FSRSBTQVMvU0FUQS1SQUlE
IFNDU0kgRFJJVkVSUyAoM1ctWFhYWCwgM1ctOVhYWCwgM1ctU0FTKQorTToJQWRhbSBSYWRmb3Jk
IDxhcmFkZm9yZEBnbWFpbC5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwOi8vd3d3LmxzaS5jb20KK0Y6CWRyaXZlcnMvc2NzaS8zdy0qCisK
KzUzQzcwMCBBTkQgNTNDNzAwLTY2IFNDU0kgRFJJVkVSCitNOgkiSmFtZXMgRS5KLiBCb3R0b21s
ZXkiIDxKYW1lcy5Cb3R0b21sZXlASGFuc2VuUGFydG5lcnNoaXAuY29tPgorTDoJbGludXgtc2Nz
aUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvc2NzaS81M2M3MDAq
CisKKzZMT1dQQU4gR0VORVJJQyAoQlRMRS9JRUVFIDgwMi4xNS40KQorTToJQWxleGFuZGVyIEFy
aW5nIDxhbGV4LmFyaW5nQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5l
bC5vcmcKK0w6CWxpbnV4LXdwYW5Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL25ldHdvcmtpbmcvNmxvd3Bhbi5yc3QKK0Y6CWluY2x1ZGUvbmV0LzZsb3dw
YW4uaAorRjoJbmV0LzZsb3dwYW4vCisKKzZQQUNLIE5FVFdPUksgRFJJVkVSIEZPUiBBWC4yNQor
TToJQW5kcmVhcyBLb2Vuc2dlbiA8YWprQGNvbW5ldHMudW5pLWJyZW1lbi5kZT4KK0w6CWxpbnV4
LWhhbXNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9oYW1y
YWRpby82cGFjay5jCisKKzgwMi4xMSAoaW5jbHVkaW5nIENGRzgwMjExL05MODAyMTEpCitNOglK
b2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorTDoJbGludXgtd2lyZWxl
c3NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL3dpcmVsZXNzLndp
a2kua2VybmVsLm9yZy8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9s
aW51eC13aXJlbGVzcy9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20v
bGludXgva2VybmVsL2dpdC93aXJlbGVzcy93aXJlbGVzcy5naXQKK1Q6CWdpdCBnaXQ6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvd2lyZWxlc3Mvd2lyZWxlc3MtbmV4
dC5naXQKK0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS84MDIxMS9jZmc4MDIxMS5yc3QKK0Y6
CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9yZWd1bGF0b3J5LnJzdAorRjoJaW5jbHVkZS9saW51
eC9pZWVlODAyMTEuaAorRjoJaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAorRjoJaW5jbHVkZS9uZXQv
aWVlZTgwMjExX3JhZGlvdGFwLmgKK0Y6CWluY2x1ZGUvbmV0L2l3X2hhbmRsZXIuaAorRjoJaW5j
bHVkZS9uZXQvd2V4dC5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oCitOOglpbmNs
dWRlL3VhcGkvbGludXgvbmw4MDIxMS0uKgorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3dpcmVsZXNz
LmgKK0Y6CW5ldC93aXJlbGVzcy8KKworODE2OSAxMC8xMDAvMTAwMCBHSUdBQklUIEVUSEVSTkVU
IERSSVZFUgorTToJSGVpbmVyIEthbGx3ZWl0IDxoa2FsbHdlaXQxQGdtYWlsLmNvbT4KK006CW5p
Y19zd3NkQHJlYWx0ZWsuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3I4MTY5KgorCis4MjUwLzE2PzUw
IChBTkQgQ0xPTkUgVUFSVFMpIFNFUklBTCBEUklWRVIKK006CUdyZWcgS3JvYWgtSGFydG1hbiA8
Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitMOglsaW51eC1zZXJpYWxAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L2dyZWdraC90dHkuZ2l0CitGOglkcml2ZXJzL3R0eS9zZXJpYWwvODI1
MCoKK0Y6CWluY2x1ZGUvbGludXgvc2VyaWFsXzgyNTAuaAorCis4MzkwIE5FVFdPUksgRFJJVkVS
UyBbV0Q4MHgzL1NNQy1FTElURSwgU01DLVVMVFJBLCBORTIwMDAsIDNDNTAzLCBldGMuXQorTDoJ
bmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuIC8gT2Jzb2xldGUKK0Y6CWRyaXZlcnMv
bmV0L2V0aGVybmV0LzgzOTAvCisKKzlQIEZJTEUgU1lTVEVNCitNOglFcmljIFZhbiBIZW5zYmVy
Z2VuIDxlcmljdmhAa2VybmVsLm9yZz4KK006CUxhdGNoZXNhciBJb25rb3YgPGx1Y2hvQGlvbmtv
di5uZXQ+CitNOglEb21pbmlxdWUgTWFydGluZXQgPGFzbWFkZXVzQGNvZGV3cmVjay5vcmc+CitS
OglDaHJpc3RpYW4gU2Nob2VuZWJlY2sgPGxpbnV4X29zc0BjcnVkZWJ5dGUuY29tPgorTDoJdjlm
c0BsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9naXRodWIuY29tL3Y5
ZnMKK1E6CWh0dHA6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L3Y5ZnMtZGV2ZWwvbGlz
dC8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
ZXJpY3ZoL3Y5ZnMuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0aHViLmNvbS9tYXJ0aW5ldGQvbGludXgu
Z2l0CitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zLzlwLnJzdAorRjoJZnMvOXAvCitGOglp
bmNsdWRlL25ldC85cC8KK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzLzlwLmgKK0Y6CWluY2x1ZGUv
dWFwaS9saW51eC92aXJ0aW9fOXAuaAorRjoJbmV0LzlwLworCitBNjRGWCBESUFHIERSSVZFUgor
TToJSGl0b21pIEhhc2VnYXdhIDxoYXNlZ2F3YS1oaXRvbWlAZnVqaXRzdS5jb20+CitTOglTdXBw
b3J0ZWQKK0Y6CWRyaXZlcnMvc29jL2Z1aml0c3UvYTY0ZngtZGlhZy5jCisKK0E4MjkzIE1FRElB
IERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0
dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVj
dC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2E4Mjkz
KgorCitBQUNSQUlEIFNDU0kgUkFJRCBEUklWRVIKK006CUFkYXB0ZWMgT0VNIFJhaWQgU29sdXRp
b25zIDxhYWNyYWlkQG1pY3Jvc2VtaS5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9y
ZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3LmFkYXB0ZWMuY29tLworRjoJRG9jdW1lbnRh
dGlvbi9zY3NpL2FhY3JhaWQucnN0CitGOglkcml2ZXJzL3Njc2kvYWFjcmFpZC8KKworQUFFT04g
VVBCT0FSRCBGUEdBIE1GRCBEUklWRVIKK006CVRob21hcyBSaWNoYXJkIDx0aG9tYXMucmljaGFy
ZEBib290bGluLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbGVkcy9sZWRzLXVwYm9h
cmQuYworRjoJZHJpdmVycy9tZmQvdXBib2FyZC1mcGdhLmMKK0Y6CWRyaXZlcnMvcGluY3RybC9w
aW5jdHJsLXVwYm9hcmQuYworRjoJaW5jbHVkZS9saW51eC9tZmQvdXBib2FyZC1mcGdhLmgKKwor
QUI4NTAwIEJBVFRFUlkgQU5EIENIQVJHRVIgRFJJVkVSUworTToJTGludXMgV2FsbGVpaiA8bGlu
dXMud2FsbGVpakBsaW5hcm8ub3JnPgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3Bvd2VyL3N1cHBseS8qYWI4NTAwKgorRjoJZHJpdmVycy9wb3dlci9zdXBwbHkvKmFiODUw
MCoKKworQUJJL0FQSQorTDoJbGludXgtYXBpQHZnZXIua2VybmVsLm9yZworRjoJaW5jbHVkZS9s
aW51eC9zeXNjYWxscy5oCitGOglrZXJuZWwvc3lzX25pLmMKK1g6CWFyY2gvKi9pbmNsdWRlL3Vh
cGkvCitYOglpbmNsdWRlL3VhcGkvCisKK0FCSVQgVUdVUlUgMSwyIEhBUkRXQVJFIE1PTklUT1Ig
RFJJVkVSCitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgt
aHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2h3bW9uL2Fi
aXR1Z3VydS5jCisKK0FCSVQgVUdVUlUgMyBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJQWxp
c3RhaXIgSm9obiBTdHJhY2hhbiA8YWxpc3RhaXJAZGV2emVyby5jby51az4KK0w6CWxpbnV4LWh3
bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9od21vbi9hYml0
dWd1cnUzLmMKKworQUNDRVMgMTA0LURJTy00OEUgR1BJTyBEUklWRVIKK006CVdpbGxpYW0gQnJl
YXRoaXR0IEdyYXkgPHdiZ0BrZXJuZWwub3JnPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLTEwNC1kaW8tNDhlLmMKKwor
QUNDRVMgMTA0LUlESS00OCBHUElPIERSSVZFUgorTToJV2lsbGlhbSBCcmVhdGhpdHQgR3JheSA8
d2JnQGtlcm5lbC5vcmc+CitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tMTA0LWlkaS00OC5jCisKK0FDQ0VTIDEwNC1JRElP
LTE2IEdQSU8gRFJJVkVSCitNOglXaWxsaWFtIEJyZWF0aGl0dCBHcmF5IDx3YmdAa2VybmVsLm9y
Zz4KK0w6CWxpbnV4LWdwaW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL2dwaW8vZ3Bpby0xMDQtaWRpby0xNi5jCisKK0FDQ0VTIDEwNC1RVUFELTggRFJJVkVSCitN
OglXaWxsaWFtIEJyZWF0aGl0dCBHcmF5IDx3YmdAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlpb0B2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvY291bnRlci8xMDQtcXVh
ZC04LmMKKworQUNDRVMgSURJTy0xNiBHUElPIExJQlJBUlkKK006CVdpbGxpYW0gQnJlYXRoaXR0
IEdyYXkgPHdiZ0BrZXJuZWwub3JnPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWlkaW8tMTYuYworRjoJZHJpdmVycy9n
cGlvL2dwaW8taWRpby0xNi5oCisKK0FDQ0VTIFBDSS1JRElPLTE2IEdQSU8gRFJJVkVSCitNOglX
aWxsaWFtIEJyZWF0aGl0dCBHcmF5IDx3YmdAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWdwaW9Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1wY2ktaWRp
by0xNi5jCisKK0FDQ0VTIFBDSWUtSURJTy0yNCBHUElPIERSSVZFUgorTToJV2lsbGlhbSBCcmVh
dGhpdHQgR3JheSA8d2JnQGtlcm5lbC5vcmc+CitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tcGNpZS1pZGlvLTI0LmMKKwor
QUNFTklDIERSSVZFUgorTToJSmVzIFNvcmVuc2VuIDxqZXNAdHJhaW5lZC1tb25rZXkub3JnPgor
TDoJbGludXgtYWNlbmljQHN1bnNpdGUuZGsKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0
L2V0aGVybmV0L2FsdGVvbi9hY2VuaWMqCisKK0FDRVIgQVNQSVJFIE9ORSBURU1QRVJBVFVSRSBB
TkQgRkFOIERSSVZFUgorTToJUGV0ZXIgS2Flc3RsZSA8cGV0ZXJAcGlpZS5uZXQ+CitMOglwbGF0
Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDov
L3BpaWUubmV0Lz9zZWN0aW9uPWFjZXJoZGYKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2FjZXJo
ZGYuYworCitBQ0VSIFdNSSBMQVBUT1AgRVhUUkFTCitNOgkiTGVlLCBDaHVuLVlpIiA8amxlZUBz
dXNlLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9hY2VyLXdtaS5jCisKK0FDUEkKK006CSJS
YWZhZWwgSi4gV3lzb2NraSIgPHJhZmFlbEBrZXJuZWwub3JnPgorUjoJTGVuIEJyb3duIDxsZW5i
QGtlcm5lbC5vcmc+CitMOglsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtYWNwaS9saXN0
LworQjoJaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JhZmFlbC9saW51eC1wbQorRjoJRG9jdW1l
bnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy1hY3BpCitGOglEb2N1bWVudGF0aW9uL0FCSS90
ZXN0aW5nL3N5c2ZzLWJ1cy1hY3BpCitGOglEb2N1bWVudGF0aW9uL2Zpcm13YXJlLWd1aWRlL2Fj
cGkvCitGOglhcmNoL3g4Ni9rZXJuZWwvYWNwaS8KK0Y6CWFyY2gveDg2L3BjaS9hY3BpLmMKK0Y6
CWRyaXZlcnMvYWNwaS8KK0Y6CWRyaXZlcnMvcGNpLyovKmFjcGkqCitGOglkcml2ZXJzL3BjaS8q
YWNwaSoKK0Y6CWRyaXZlcnMvcG5wL3BucGFjcGkvCitGOglpbmNsdWRlL2FjcGkvCitGOglpbmNs
dWRlL2xpbnV4L2FjcGkuaAorRjoJaW5jbHVkZS9saW51eC9md25vZGUuaAorRjoJaW5jbHVkZS9s
aW51eC9md190YWJsZS5oCitGOglsaWIvZndfdGFibGUuYworRjoJdG9vbHMvcG93ZXIvYWNwaS8K
KworQUNQSSBBUEVJCitNOgkiUmFmYWVsIEouIFd5c29ja2kiIDxyYWZhZWxAa2VybmVsLm9yZz4K
K1I6CUxlbiBCcm93biA8bGVuYkBrZXJuZWwub3JnPgorUjoJSmFtZXMgTW9yc2UgPGphbWVzLm1v
cnNlQGFybS5jb20+CitSOglUb255IEx1Y2sgPHRvbnkubHVja0BpbnRlbC5jb20+CitSOglCb3Jp
c2xhdiBQZXRrb3YgPGJwQGFsaWVuOC5kZT4KK0w6CWxpbnV4LWFjcGlAdmdlci5rZXJuZWwub3Jn
CitGOglkcml2ZXJzL2FjcGkvYXBlaS8KKworQUNQSSBDT01QT05FTlQgQVJDSElURUNUVVJFIChB
Q1BJQ0EpCitNOglSb2JlcnQgTW9vcmUgPHJvYmVydC5tb29yZUBpbnRlbC5jb20+CitNOgkiUmFm
YWVsIEouIFd5c29ja2kiIDxyYWZhZWwuai53eXNvY2tpQGludGVsLmNvbT4KK0w6CWxpbnV4LWFj
cGlAdmdlci5rZXJuZWwub3JnCitMOglhY3BpY2EtZGV2ZWxAbGlzdHMubGludXguZGV2CitTOglT
dXBwb3J0ZWQKK1c6CWh0dHBzOi8vYWNwaWNhLm9yZy8KK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9h
Y3BpY2EvYWNwaWNhLworUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xp
bnV4LWFjcGkvbGlzdC8KK0I6CWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZworQjoJaHR0cHM6
Ly9idWdzLmFjcGljYS5vcmcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp
bnV4L2tlcm5lbC9naXQvcmFmYWVsL2xpbnV4LXBtCitGOglkcml2ZXJzL2FjcGkvYWNwaWNhLwor
RjoJaW5jbHVkZS9hY3BpLworRjoJdG9vbHMvcG93ZXIvYWNwaS8KKworQUNQSSBGT1IgQVJNNjQg
KEFDUEkvYXJtNjQpCitNOglMb3JlbnpvIFBpZXJhbGlzaSA8bHBpZXJhbGlzaUBrZXJuZWwub3Jn
PgorTToJSGFuanVuIEd1byA8Z3VvaGFuanVuQGh1YXdlaS5jb20+CitNOglTdWRlZXAgSG9sbGEg
PHN1ZGVlcC5ob2xsYUBhcm0uY29tPgorTDoJbGludXgtYWNwaUB2Z2VyLmtlcm5lbC5vcmcKK0w6
CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24t
c3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2FjcGkvYXJtNjQKK0Y6CWlu
Y2x1ZGUvbGludXgvYWNwaV9pb3J0LmgKKworQUNQSSBGT1IgUklTQy1WIChBQ1BJL3Jpc2N2KQor
TToJU3VuaWwgViBMIDxzdW5pbHZsQHZlbnRhbmFtaWNyby5jb20+CitMOglsaW51eC1hY3BpQHZn
ZXIua2VybmVsLm9yZworTDoJbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9hY3BpL3Jpc2N2LworCitBQ1BJIFBDQyhQbGF0Zm9ybSBDb21t
dW5pY2F0aW9uIENoYW5uZWwpIE1BSUxCT1ggRFJJVkVSCitNOglTdWRlZXAgSG9sbGEgPHN1ZGVl
cC5ob2xsYUBhcm0uY29tPgorTDoJbGludXgtYWNwaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorRjoJZHJpdmVycy9tYWlsYm94L3BjYy5jCisKK0FDUEkgUE1JQyBEUklWRVJTCitNOgki
UmFmYWVsIEouIFd5c29ja2kiIDxyYWZhZWxAa2VybmVsLm9yZz4KK006CUxlbiBCcm93biA8bGVu
YkBrZXJuZWwub3JnPgorUjoJQW5keSBTaGV2Y2hlbmtvIDxhbmR5QGtlcm5lbC5vcmc+CitSOglN
aWthIFdlc3RlcmJlcmcgPHdlc3RlcmlAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFjcGlAdmdlci5r
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcv
cHJvamVjdC9saW51eC1hY3BpL2xpc3QvCitCOglodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcK
K1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcmFm
YWVsL2xpbnV4LXBtCitGOglkcml2ZXJzL2FjcGkvcG1pYy8KKworQUNQSSBRVUlDS1NUQVJUIERS
SVZFUgorTToJQXJtaW4gV29sZiA8V19Bcm1pbkBnbXguZGU+CitMOglwbGF0Zm9ybS1kcml2ZXIt
eDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94
ODYvcXVpY2tzdGFydC5jCisKK0FDUEkgU0VSSUFMIE1VTFRJIElOU1RBTlRJQVRFIERSSVZFUgor
TToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZl
ci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3Jt
L3g4Ni9zZXJpYWwtbXVsdGktaW5zdGFudGlhdGUuYworCitBQ1BJIFRIRVJNQUwgRFJJVkVSCitN
OglSYWZhZWwgSi4gV3lzb2NraSA8cmFmYWVsQGtlcm5lbC5vcmc+CitSOglaaGFuZyBSdWkgPHJ1
aS56aGFuZ0BpbnRlbC5jb20+CitMOglsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZworUzoJU3Vw
cG9ydGVkCitCOglodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcKK0Y6CWRyaXZlcnMvYWNwaS8q
dGhlcm1hbCoKKworQUNQSSBWSU9UIERSSVZFUgorTToJSmVhbi1QaGlsaXBwZSBCcnVja2VyIDxq
ZWFuLXBoaWxpcHBlQGxpbmFyby5vcmc+CitMOglsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZwor
TDoJaW9tbXVAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2FjcGkv
dmlvdC5jCitGOglpbmNsdWRlL2xpbnV4L2FjcGlfdmlvdC5oCisKK0FDUEkgV01JIERSSVZFUgor
TToJQXJtaW4gV29sZiA8V19Bcm1pbkBnbXguZGU+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu
Zy9zeXNmcy1idXMtd21pCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvd21pLnJzdAorRjoJ
RG9jdW1lbnRhdGlvbi93bWkvCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni93bWkuYworRjoJaW5j
bHVkZS91YXBpL2xpbnV4L3dtaS5oCisKK0FDUk4gSFlQRVJWSVNPUiBTRVJWSUNFIE1PRFVMRQor
TToJRmVpIExpIDxmZWkxLmxpQGludGVsLmNvbT4KK0w6CWFjcm4tZGV2QGxpc3RzLnByb2plY3Rh
Y3JuLm9yZyAoc3Vic2NyaWJlcnMtb25seSkKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9wcm9q
ZWN0YWNybi5vcmcKK0Y6CURvY3VtZW50YXRpb24vdmlydC9hY3JuLworRjoJZHJpdmVycy92aXJ0
L2Fjcm4vCitGOglpbmNsdWRlL3VhcGkvbGludXgvYWNybi5oCisKK0FEMTg4OSBBTFNBIFNPVU5E
IERSSVZFUgorTDoJbGludXgtcGFyaXNjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VzoJaHR0cHM6Ly9wYXJpc2Mud2lraS5rZXJuZWwub3JnL2luZGV4LnBocC9BRDE4ODkKK0Y6CXNv
dW5kL3BjaS9hZDE4ODkuKgorCitBRDUxMTAgQU5BTE9HIERFVklDRVMgRElHSVRBTCBQT1RFTlRJ
T01FVEVSUyBEUklWRVIKK006CU11Z2lscmFqIERoYXZhY2hlbHZhbiA8ZG11Z2lsMjAwMEBnbWFp
bC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRy
aXZlcnMvaWlvL3BvdGVudGlvbWV0ZXIvYWQ1MTEwLmMKKworQUQ1MjVYIEFOQUxPRyBERVZJQ0VT
IERJR0lUQUwgUE9URU5USU9NRVRFUlMgRFJJVkVSCitNOglNaWNoYWVsIEhlbm5lcmljaCA8bWlj
aGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3dpa2ku
YW5hbG9nLmNvbS9BRDUyNTQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2Fy
ZS1kcml2ZXJzCitGOglkcml2ZXJzL21pc2MvYWQ1MjV4X2Rwb3QuYworCitBRDUzOTggQ1VSUkVO
VCBSRUdVTEFUT1IgRFJJVkVSIChBRDUzOTgvQUQ1ODIxKQorTToJTWljaGFlbCBIZW5uZXJpY2gg
PG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93
aWtpLmFuYWxvZy5jb20vQUQ1Mzk4CitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29m
dHdhcmUtZHJpdmVycworRjoJZHJpdmVycy9yZWd1bGF0b3IvYWQ1Mzk4LmMKKworQUQ3MTRYIENB
UEFDSVRBTkNFIFRPVUNIIFNFTlNPUiBEUklWRVIgKEFENzE0Mi8zLzcvOC83QSkKK006CU1pY2hh
ZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cuY29tPgorUzoJU3VwcG9ydGVk
CitXOglodHRwOi8vd2lraS5hbmFsb2cuY29tL0FENzE0MgorVzoJaHR0cHM6Ly9lei5hbmFsb2cu
Y29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CWRyaXZlcnMvaW5wdXQvbWlzYy9hZDcxNHgu
YworCitBRDczOFggQURDIERSSVZFUiAoQUQ3MzgwLzEvMi80KQorTToJTWljaGFlbCBIZW5uZXJp
Y2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CitNOglOdW5vIFPDoSA8bnVuby5zYUBh
bmFsb2cuY29tPgorUjoJRGF2aWQgTGVjaG5lciA8ZGxlY2huZXJAYmF5bGlicmUuY29tPgorUzoJ
U3VwcG9ydGVkCitXOglodHRwczovL3dpa2kuYW5hbG9nLmNvbS9yZXNvdXJjZXMvdG9vbHMtc29m
dHdhcmUvbGludXgtZHJpdmVycy9paW8tYWRjL2FkNzM4eAorVzoJaHR0cHM6Ly9lei5hbmFsb2cu
Y29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9paW8vYWRjL2FkaSxhZDczODAueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9paW8vYWQ3
MzgwLnJzdAorRjoJZHJpdmVycy9paW8vYWRjL2FkNzM4MC5jCisKK0FENzg3NyBUT1VDSFNDUkVF
TiBEUklWRVIKK006CU1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cu
Y29tPgorUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd2lraS5hbmFsb2cuY29tL0FENzg3NworVzoJ
aHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CWRyaXZlcnMv
aW5wdXQvdG91Y2hzY3JlZW4vYWQ3ODc3LmMKKworQUQ3ODc5IFRPVUNIU0NSRUVOIERSSVZFUiAo
QUQ3ODc5L0FENzg4OSkKK006CU1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBh
bmFsb2cuY29tPgorUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd2lraS5hbmFsb2cuY29tL0FENzg3
OQorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CWRy
aXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vYWQ3ODc5LmMKKworQUQ3OTQ0IEFEQyBEUklWRVIgKEFE
Nzk0NC9BRDc5ODUvQUQ3OTg2KQorTToJTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVy
aWNoQGFuYWxvZy5jb20+CitNOglOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgorUjoJRGF2
aWQgTGVjaG5lciA8ZGxlY2huZXJAYmF5bGlicmUuY29tPgorUzoJU3VwcG9ydGVkCitXOglodHRw
czovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYWRpLGFkNzk0NC55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2lpby9hZDc5NDQucnN0CitGOglkcml2ZXJzL2lpby9hZGMvYWQ3OTQ0LmMKKworQURB
RlJVSVQgTUlOSSBJMkMgR0FNRVBBRAorTToJQW5zaHVsIERhbGFsIDxhbnNodWx1c3JAZ21haWwu
Y29tPgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvYWRhZnJ1aXQsc2Vlc2F3LWdh
bWVwYWQueWFtbAorRjoJZHJpdmVycy9pbnB1dC9qb3lzdGljay9hZGFmcnVpdC1zZWVzYXcuYwor
CitBRERSRVNTIFNQQUNFIExBWU9VVCBSQU5ET01JWkFUSU9OIChBU0xSKQorTToJSmlyaSBLb3Np
bmEgPGppa29zQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCisKK0FERjcyNDIgSUVFRSA4MDIu
MTUuNCBSQURJTyBEUklWRVIKK006CU1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmlj
aEBhbmFsb2cuY29tPgorTDoJbGludXgtd3BhbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVzoJaHR0cHM6Ly93aWtpLmFuYWxvZy5jb20vQURGNzI0MgorVzoJaHR0cHM6Ly9lei5hbmFs
b2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9uZXQvaWVlZTgwMjE1NC9hZGY3MjQyLnR4dAorRjoJZHJpdmVycy9uZXQvaWVl
ZTgwMjE1NC9hZGY3MjQyLmMKKworQURNMTAyNSBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJ
SmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9hZG0xMDI1LnJz
dAorRjoJZHJpdmVycy9od21vbi9hZG0xMDI1LmMKKworQURNMTAyOSBIQVJEV0FSRSBNT05JVE9S
IERSSVZFUgorTToJQ29yZW50aW4gTGFiYmUgPGNsYWJiZS5tb250am9pZUBnbWFpbC5jb20+CitM
OglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
aHdtb24vYWRtMTAyOS5jCisKK0FETTgyMTEgV0lSRUxFU1MgRFJJVkVSCitMOglsaW51eC13aXJl
bGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9uZXQvd2lyZWxlc3Mv
YWRtdGVrLworCitBRFAxMDUwIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglSYWR1IFNhYmF1
IDxyYWR1LnNhYmF1QGFuYWxvZy5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRy
aXZlcnMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9wbWJ1cy9h
ZGksYWRwMTA1MC55YW1sCisKK0FEUDE2NTMgRkxBU0ggQ09OVFJPTExFUiBEUklWRVIKK006CVNh
a2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGlraS5maT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL2kyYy9hZGksYWRwMTY1My50eHQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2FkcDE2
NTMuYworRjoJaW5jbHVkZS9tZWRpYS9pMmMvYWRwMTY1My5oCisKK0FEUDU1MjAgQkFDS0xJR0hU
IERSSVZFUiBXSVRIIElPIEVYUEFOREVSIChBRFA1NTIwL0FEUDU1MDEpCitNOglNaWNoYWVsIEhl
bm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KK1M6CVN1cHBvcnRlZAorVzoJ
aHR0cDovL3dpa2kuYW5hbG9nLmNvbS9BRFA1NTIwCitXOglodHRwczovL2V6LmFuYWxvZy5jb20v
bGludXgtc29mdHdhcmUtZHJpdmVycworRjoJZHJpdmVycy9ncGlvL2dwaW8tYWRwNTUyMC5jCitG
Oglkcml2ZXJzL2lucHV0L2tleWJvYXJkL2FkcDU1MjAta2V5cy5jCitGOglkcml2ZXJzL2xlZHMv
bGVkcy1hZHA1NTIwLmMKK0Y6CWRyaXZlcnMvbWZkL2FkcDU1MjAuYworRjoJZHJpdmVycy92aWRl
by9iYWNrbGlnaHQvYWRwNTUyMF9ibC5jCisKK0FEUDU1ODUgR1BJTyBFWFBBTkRFUiwgUFdNIEFO
RCBLRVlQQUQgQ09OVFJPTExFUiBEUklWRVIKK006CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQu
cGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK0w6CWxpbnV4LWdwaW9Admdlci5rZXJuZWwub3Jn
CitMOglsaW51eC1wd21Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvKi9hZGksYWRwNTU4NSoueWFtbAorRjoJZHJpdmVy
cy9ncGlvL2dwaW8tYWRwNTU4NS5jCitGOglkcml2ZXJzL21mZC9hZHA1NTg1LmMKK0Y6CWRyaXZl
cnMvcHdtL3B3bS1hZHA1NTg1LmMKK0Y6CWluY2x1ZGUvbGludXgvbWZkL2FkcDU1ODUuaAorCitB
RFA1NTg4IFFXRVJUWSBLRVlQQUQgQU5EIElPIEVYUEFOREVSIERSSVZFUiAoQURQNTU4OC9BRFA1
NTg3KQorTToJTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+
CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93aWtpLmFuYWxvZy5jb20vQURQNTU4OAorVzoJaHR0
cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9hZGksYWRwNTU4OC55YW1sCitGOglkcml2ZXJz
L2lucHV0L2tleWJvYXJkL2FkcDU1ODgta2V5cy5jCisKK0FEUDg4NjAgQkFDS0xJR0hUIERSSVZF
UiAoQURQODg2MC9BRFA4ODYxL0FEUDg4NjMpCitNOglNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFl
bC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3dpa2kuYW5h
bG9nLmNvbS9BRFA4ODYwCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUt
ZHJpdmVycworRjoJZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYWRwODg2MF9ibC5jCisKK0FEVDc0
NlggRkFOIERSSVZFUgorTToJQ29saW4gTGVyb3kgPGNvbGluQGNvbGluby5uZXQ+CitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL21hY2ludG9zaC90aGVybV9hZHQ3NDZ4LmMKKworQURUNzQ3NSBI
QVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmNv
bT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9od21vbi9hZHQ3NDc1LnJzdAorRjoJZHJpdmVycy9od21vbi9hZHQ3NDc1LmMK
KworQURWQU5TWVMgU0NTSSBEUklWRVIKK006CU1hdHRoZXcgV2lsY294IDx3aWxseUBpbmZyYWRl
YWQub3JnPgorTToJSGFubmVzIFJlaW5lY2tlIDxoYXJlQHN1c2UuY29tPgorTDoJbGludXgtc2Nz
aUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vc2NzaS9h
ZHZhbnN5cy5yc3QKK0Y6CWRyaXZlcnMvc2NzaS9hZHZhbnN5cy5jCisKK0FEVkFOVEVDSCBTV0JU
TiBEUklWRVIKK006CUFuZHJlYSBIbyA8QW5kcmVhLkhvQGFkdmFudGVjaC5jb20udHc+CitMOglw
bGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9wbGF0Zm9ybS94ODYvYWR2X3N3YnV0dG9uLmMKKworQURYTDMxMyBUSFJFRS1BWElTIERJ
R0lUQUwgQUNDRUxFUk9NRVRFUiBEUklWRVIKK006CUx1Y2FzIFN0YW5rdXMgPGx1Y2FzLnAuc3Rh
bmt1c0BnbWFpbC5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9paW8vYWNjZWwvYWRpLGFkeGwzMTMueWFtbAorRjoJZHJpdmVycy9paW8vYWNj
ZWwvYWR4bDMxMyoKKworQURYTDM0WCBUSFJFRS1BWElTIERJR0lUQUwgQUNDRUxFUk9NRVRFUiBE
UklWRVIgKEFEWEwzNDUvQURYTDM0NikKK006CU1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhl
bm5lcmljaEBhbmFsb2cuY29tPgorUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd2lraS5hbmFsb2cu
Y29tL0FEWEwzNDUKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2
ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2VsL2FkaSxh
ZHhsMzQ1LnlhbWwKK0Y6CWRyaXZlcnMvaW5wdXQvbWlzYy9hZHhsMzR4LmMKKworQURYTDM1NSBU
SFJFRS1BWElTIERJR0lUQUwgQUNDRUxFUk9NRVRFUiBEUklWRVIKK006CVB1cmFuamF5IE1vaGFu
IDxwdXJhbmpheUBrZXJuZWwub3JnPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2Vs
L2FkaSxhZHhsMzU1LnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNTUuaAorRjoJZHJp
dmVycy9paW8vYWNjZWwvYWR4bDM1NV9jb3JlLmMKK0Y6CWRyaXZlcnMvaWlvL2FjY2VsL2FkeGwz
NTVfaTJjLmMKK0Y6CWRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNTVfc3BpLmMKKworQURYTDM2NyBU
SFJFRS1BWElTIERJR0lUQUwgQUNDRUxFUk9NRVRFUiBEUklWRVIKK006CUNvc21pbiBUYW5pc2xh
diA8Y29zbWluLnRhbmlzbGF2QGFuYWxvZy5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2Fy
ZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FjY2Vs
L2FkaSxhZHhsMzY3LnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FjY2VsL2FkeGwzNjcqCisKK0FEWEwz
NzIgVEhSRUUtQVhJUyBESUdJVEFMIEFDQ0VMRVJPTUVURVIgRFJJVkVSCitNOglNaWNoYWVsIEhl
bm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KK1M6CVN1cHBvcnRlZAorVzoJ
aHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWNjZWwvYWRpLGFkeGwzNzIueWFtbAorRjoJ
ZHJpdmVycy9paW8vYWNjZWwvYWR4bDM3Mi5jCitGOglkcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcy
X2kyYy5jCitGOglkcml2ZXJzL2lpby9hY2NlbC9hZHhsMzcyX3NwaS5jCisKK0FEWEwzODAgVEhS
RUUtQVhJUyBESUdJVEFMIEFDQ0VMRVJPTUVURVIgRFJJVkVSCitNOglSYW1vbmEgR3JhZGluYXJp
dSA8cmFtb25hLmdyYWRpbmFyaXVAYW5hbG9nLmNvbT4KK006CUFudG9uaXUgTWljbGF1cyA8YW50
b25pdS5taWNsYXVzQGFuYWxvZy5jb20+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5h
bG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvaWlvL2FjY2VsL2FkaSxhZHhsMzgwLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2Fj
Y2VsL2FkeGwzODAuYworRjoJZHJpdmVycy9paW8vYWNjZWwvYWR4bDM4MC5oCitGOglkcml2ZXJz
L2lpby9hY2NlbC9hZHhsMzgwX2kyYy5jCitGOglkcml2ZXJzL2lpby9hY2NlbC9hZHhsMzgwX3Nw
aS5jCisKK0FFT05TRU1JIFBIWSBEUklWRVIKK006CUNocmlzdGlhbiBNYXJhbmdpIDxhbnN1ZWxz
bXRoQGdtYWlsLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYWVvbnNlbWksYXMyMXh4
eC55YW1sCitGOglkcml2ZXJzL25ldC9waHkvYXMyMXh4eC5jCisKK0FGODEzM0ogVEhSRUUtQVhJ
UyBNQUdORVRPTUVURVIgRFJJVkVSCitNOglPbmTFmWVqIEppcm1hbiA8bWVnaUB4ZmYuY3o+CitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL21h
Z25ldG9tZXRlci92b2x0YWZpZWxkLGFmODEzM2oueWFtbAorRjoJZHJpdmVycy9paW8vbWFnbmV0
b21ldGVyL2FmODEzM2ouYworCitBRjkwMTMgTUVESUEgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0
cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglk
cml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYWY5MDEzKgorCitBRjkwMzMgTUVESUEgRFJJVkVS
CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9s
aW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4
LW1lZGlhL2xpc3QvCitGOglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvYWY5MDMzKgorCitB
RkZTIEZJTEUgU1lTVEVNCitNOglEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+CitMOgls
aW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitGOglEb2N1bWVudGF0
aW9uL2ZpbGVzeXN0ZW1zL2FmZnMucnN0CitGOglmcy9hZmZzLworCitBRlMgRklMRVNZU1RFTQor
TToJRGF2aWQgSG93ZWxscyA8ZGhvd2VsbHNAcmVkaGF0LmNvbT4KK006CU1hcmMgRGlvbm5lIDxt
YXJjLmRpb25uZUBhdXJpc3Rvci5jb20+CitMOglsaW51eC1hZnNAbGlzdHMuaW5mcmFkZWFkLm9y
ZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL3d3dy5pbmZyYWRlYWQub3JnL35kaG93ZWxscy9r
YWZzLworRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hZnMucnN0CitGOglmcy9hZnMvCitG
OglpbmNsdWRlL3RyYWNlL2V2ZW50cy9hZnMuaAorCitBR1BHQVJUIERSSVZFUgorTToJRGF2aWQg
QWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0
b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Au
b3JnL2RybS9rZXJuZWwuZ2l0CitGOglkcml2ZXJzL2NoYXIvYWdwLworRjoJaW5jbHVkZS9saW51
eC9hZ3AqCitGOglpbmNsdWRlL3VhcGkvbGludXgvYWdwKgorCitBSEExNTJYIFNDU0kgRFJJVkVS
CitNOgkiSnVlcmdlbiBFLiBGaXNjaGVyIiA8ZmlzY2hlckBub3JiaXQuZGU+CitMOglsaW51eC1z
Y3NpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zY3NpL2FoYTE1
MngqCitGOglkcml2ZXJzL3Njc2kvcGNtY2lhL2FoYTE1MngqCisKK0FJQzdYWFggLyBBSUM3OVhY
IFNDU0kgRFJJVkVSCitNOglIYW5uZXMgUmVpbmVja2UgPGhhcmVAc3VzZS5jb20+CitMOglsaW51
eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zY3NpL2Fp
Yzd4eHgvCisKK0FJTVNMQUIgRk0gUkFESU8gUkVDRUlWRVIgRFJJVkVSCitNOglIYW5zIFZlcmt1
aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4
dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1haW1zbGFiKgor
CitBSU8KK006CUJlbmphbWluIExhSGFpc2UgPGJjcmxAa3ZhY2sub3JnPgorTDoJbGludXgtYWlv
QGt2YWNrLm9yZworUzoJU3VwcG9ydGVkCitGOglmcy9haW8uYworRjoJaW5jbHVkZS9saW51eC8q
YWlvKi5oCisKK0FJUk9IQSBFVEhFUk5FVCBEUklWRVIKK006CUxvcmVuem8gQmlhbmNvbmkgPGxv
cmVuem9Aa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1tZWRpYXRla0BsaXN0
cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9uZXQvYWlyb2hhLGVuNzU4MS1ldGgueWFtbAorRjoJZHJpdmVycy9uZXQv
ZXRoZXJuZXQvYWlyb2hhLworCitBSVJPSEEgUENJRSBQSFkgRFJJVkVSCitNOglMb3JlbnpvIEJp
YW5jb25pIDxsb3JlbnpvQGtlcm5lbC5vcmc+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9haXJvaGEsZW43NTgx
LXBjaWUtcGh5LnlhbWwKK0Y6CWRyaXZlcnMvcGh5L3BoeS1haXJvaGEtcGNpZS1yZWdzLmgKK0Y6
CWRyaXZlcnMvcGh5L3BoeS1haXJvaGEtcGNpZS5jCisKK0FJUk9IQSBTUEkgU05GSSBEUklWRVIK
K006CUxvcmVuem8gQmlhbmNvbmkgPGxvcmVuem9Aa2VybmVsLm9yZz4KK006CVJheSBMaXUgPHJh
eS5saXVAYWlyb2hhLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1zcGlAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvc3BpL2Fpcm9oYSxlbjc1ODEtc25hbmQueWFtbAorRjoJZHJpdmVycy9zcGkvc3BpLWFpcm9o
YS1zbmZpLmMKKworQUlSU1BZIE1FRElBIERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJu
ZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRj
aHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9t
ZWRpYS91c2IvYWlyc3B5LworCitBTEFDUklURUNIIEdJR0FCSVQgRVRIRVJORVQgRFJJVkVSCitN
OglMaW5vIFNhbmZpbGlwcG8gPExpbm9TYW5maWxpcHBvQGdteC5kZT4KK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2FsYWNyaXRlY2gvKgorCitBTENBVEVMIFNQRUVEVE9V
Q0ggVVNCIERSSVZFUgorTToJRHVuY2FuIFNhbmRzIDxkdW5jYW4uc2FuZHNAZnJlZS5mcj4KK0w6
CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cu
bGludXgtdXNiLm9yZy9TcGVlZFRvdWNoLworRjoJZHJpdmVycy91c2IvYXRtL3NwZWVkdGNoLmMK
K0Y6CWRyaXZlcnMvdXNiL2F0bS91c2JhdG0uYworCitBTENIRU1ZIEFVMVhYMCBNTUMgRFJJVkVS
CitNOglNYW51ZWwgTGF1c3MgPG1hbnVlbC5sYXVzc0BnbWFpbC5jb20+CitTOglNYWludGFpbmVk
CitGOglkcml2ZXJzL21tYy9ob3N0L2F1MXhtbWMuYworCitBTEkxNTYzIEkyQyBEUklWRVIKK006
CVJ1ZG9sZiBNYXJlayA8ci5tYXJla0Bhc3NlbWJsZXIuY3o+CitMOglsaW51eC1pMmNAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJj
LWFsaTE1NjMucnN0CitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1NjMuYworCitBTElC
QUJBIEVMQVNUSUMgUkRNQSBEUklWRVIKK006CUNoZW5nIFh1IDxjaGVuZ3lvdUBsaW51eC5hbGli
YWJhLmNvbT4KK006CUthaSBTaGVuIDxrYWlzaGVuQGxpbnV4LmFsaWJhYmEuY29tPgorTDoJbGlu
dXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pbmZpbmli
YW5kL2h3L2VyZG1hCitGOglpbmNsdWRlL3VhcGkvcmRtYS9lcmRtYS1hYmkuaAorCitBTElCQUJB
IFBNVSBEUklWRVIKK006CVNodWFpIFh1ZSA8eHVlc2h1YWlAbGludXguYWxpYmFiYS5jb20+CitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcGVyZi9hbGliYWJhX3Bt
dS5yc3QKK0Y6CWRyaXZlcnMvcGVyZi9hbGliYWJhX3VuY29yZV9kcndfcG11LmMKKworQUxJRU5X
QVJFIFdNSSBEUklWRVIKK006CUt1cnQgQm9yamEgPGt1dXJ0YkBnbWFpbC5jb20+CitMOglwbGF0
Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworTDoJRGVsbC5DbGllbnQuS2VybmVsQGRl
bGwuY29tCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL2RlYnVn
ZnMtYWxpZW53YXJlLXdtaQorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1wbGF0
Zm9ybS1hbGllbndhcmUtd21pCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2xhcHRvcHMv
YWxpZW53YXJlLXdtaS5yc3QKK0Y6CURvY3VtZW50YXRpb24vd21pL2RldmljZXMvYWxpZW53YXJl
LXdtaS5yc3QKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwvYWxpZW53YXJlLXdtaSoKKwor
QUxMRUdSTyBEVlQgVklERU8gSVAgQ09SRSBEUklWRVIKK006CU1pY2hhZWwgVHJldHRlciA8bS50
cmV0dGVyQHBlbmd1dHJvbml4LmRlPgorUjoJUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5l
bEBwZW5ndXRyb25peC5kZT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2FsbGVn
cm8sYWw1ZS55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FsbGVncm8tZHZ0LworCitB
TExJRUQgVklTSU9OIEFMVklVTSBDQU1FUkEgRFJJVkVSCitNOglUb21tYXNvIE1lcmNpYWkgPHRv
bW0ubWVyY2lhaUBnbWFpbC5jb20+CitNOglNYXJ0aW4gSGVjaHQgPG1hcnRpbi5oZWNodEBhdm5l
dC5ldT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9hbGxpZWR2aXNpb24s
YWx2aXVtLWNzaTIueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuYworRjoJ
ZHJpdmVycy9tZWRpYS9pMmMvYWx2aXVtLWNzaTIuaAorCitBTExXSU5ORVIgQTEwIENTSSBEUklW
RVIKK006CU1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3Jn
L21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2Fs
bHdpbm5lcixzdW40aS1hMTAtY3NpLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3Vu
eGkvc3VuNGktY3NpLworCitBTExXSU5ORVIgQTMxIENTSSBEUklWRVIKK006CVlvbmcgRGVuZyA8
eW9uZy5kZW5nQG1hZ2V3ZWxsLmNvbT4KK006CVBhdWwgS29jaWFsa293c2tpIDxwYXVsa0BzeXMt
YmFzZS5pbz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtY3NpLnlhbWwKK0Y6CWRy
aXZlcnMvbWVkaWEvcGxhdGZvcm0vc3VueGkvc3VuNmktY3NpLworCitBTExXSU5ORVIgQTMxIElT
UCBEUklWRVIKK006CVBhdWwgS29jaWFsa293c2tpIDxwYXVsa0BzeXMtYmFzZS5pbz4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xp
bnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L21lZGlhL2FsbHdpbm5lcixzdW42aS1hMzEtaXNwLnlhbWwKK0Y6CWRyaXZlcnMvc3RhZ2luZy9t
ZWRpYS9zdW54aS9zdW42aS1pc3AvCitGOglkcml2ZXJzL3N0YWdpbmcvbWVkaWEvc3VueGkvc3Vu
NmktaXNwL3VhcGkvc3VuNmktaXNwLWNvbmZpZy5oCisKK0FMTFdJTk5FUiBBMzEgTUlQSSBDU0kt
MiBCUklER0UgRFJJVkVSCitNOglQYXVsIEtvY2lhbGtvd3NraSA8cGF1bGtAc3lzLWJhc2UuaW8+
CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBn
aXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9tZWRpYS9hbGx3aW5uZXIsc3VuNmktYTMxLW1pcGktY3NpMi55YW1sCitGOglkcml2
ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjZpLW1pcGktY3NpMi8KKworQUxMV0lOTkVSIENQ
VUZSRVEgRFJJVkVSCitNOglZYW5ndGFvIExpIDx0aW55LndpbmR6ekBnbWFpbC5jb20+CitMOgls
aW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9vcHAvYWxsd2lubmVyLHN1bjUwaS1oNi1vcGVyYXRpbmctcG9p
bnRzLnlhbWwKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9zdW41MGktY3B1ZnJlcS1udm1lbS5jCisKK0FM
TFdJTk5FUiBDUllQVE8gRFJJVkVSUworTToJQ29yZW50aW4gTGFiYmUgPGNsYWJiZS5tb250am9p
ZUBnbWFpbC5jb20+CitMOglsaW51eC1jcnlwdG9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL2NyeXB0by9hbGx3aW5uZXIvCisKK0FMTFdJTk5FUiBETUlDIERSSVZF
UlMKK006CUJhbiBUYW8gPGZlbmd6aGVuZzkyM0BnbWFpbC5jb20+CitMOglsaW51eC1zb3VuZEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9zb3VuZC9hbGx3aW5uZXIsc3VuNTBpLWg2LWRtaWMueWFtbAorRjoJc291bmQv
c29jL3N1bnhpL3N1bjUwaS1kbWljLmMKKworQUxMV0lOTkVSIEhBUkRXQVJFIFNQSU5MT0NLIFNV
UFBPUlQKK006CVdpbGtlbiBHb3R0d2FsdCA8d2lsa2VuLmdvdHR3YWx0QHBvc3Rlby5uZXQ+CitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdsb2Nr
L2FsbHdpbm5lcixzdW42aS1hMzEtaHdzcGlubG9jay55YW1sCitGOglkcml2ZXJzL2h3c3Bpbmxv
Y2svc3VuNmlfaHdzcGlubG9jay5jCisKK0FMTFdJTk5FUiBUSEVSTUFMIERSSVZFUgorTToJVmFz
aWx5IEtob3J1emhpY2sgPGFuYXJzb3VsQGdtYWlsLmNvbT4KK006CVlhbmd0YW8gTGkgPHRpbnku
d2luZHp6QGdtYWlsLmNvbT4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvYWxsd2lu
bmVyLHN1bjhpLWE4M3QtdGhzLnlhbWwKK0Y6CWRyaXZlcnMvdGhlcm1hbC9zdW44aV90aGVybWFs
LmMKKworQUxMV0lOTkVSIFZQVSBEUklWRVIKK006CU1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2Vy
bmVsLm9yZz4KK006CVBhdWwgS29jaWFsa293c2tpIDxwYXVsa0BzeXMtYmFzZS5pbz4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zdGFn
aW5nL21lZGlhL3N1bnhpL2NlZHJ1cy8KKworQUxQSEEgUE9SVAorTToJUmljaGFyZCBIZW5kZXJz
b24gPHJpY2hhcmQuaGVuZGVyc29uQGxpbmFyby5vcmc+CitNOglNYXR0IFR1cm5lciA8bWF0dHN0
ODhAZ21haWwuY29tPgorTDoJbGludXgtYWxwaGFAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4
ZXMKK0Y6CWFyY2gvYWxwaGEvCisKK0FMUFMgUFMvMiBUT1VDSFBBRCBEUklWRVIKK1I6CVBhbGkg
Um9ow6FyIDxwYWxpQGtlcm5lbC5vcmc+CitGOglkcml2ZXJzL2lucHV0L21vdXNlL2FscHMuKgor
CitBTFRFUkEgTUFJTEJPWCBEUklWRVIKK006CU11biBZZXcgVGhhbSA8bXVuLnlldy50aGFtQGlu
dGVsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWFpbGJveC9tYWlsYm94LWFsdGVy
YS5jCisKK0FMVEVSQSBNU0dETUEgSVAgQ09SRSBEUklWRVIKK006CU9saXZpZXIgRGF1dHJpY291
cnQgPG9saXZpZXJkYXV0cmljb3VydEBnbWFpbC5jb20+CitSOglTdGVmYW4gUm9lc2UgPHNyQGRl
bnguZGU+CitMOglkbWFlbmdpbmVAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYWx0cixtc2dkbWEueWFtbAorRjoJ
ZHJpdmVycy9kbWEvYWx0ZXJhLW1zZ2RtYS5jCisKK0FMVEVSQSBQSU8gRFJJVkVSCitNOglNdW4g
WWV3IFRoYW0gPG11bi55ZXcudGhhbUBpbnRlbC5jb20+CitMOglsaW51eC1ncGlvQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tYWx0ZXJhLmMKKwor
QUxURVJBIFRSSVBMRSBTUEVFRCBFVEhFUk5FVCBEUklWRVIKK006CUpveWNlIE9vaSA8am95Y2Uu
b29pQGludGVsLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS8KKworQUxURVJBIFVBUlQvSlRBRyBVQVJU
IFNFUklBTCBEUklWRVJTCitNOglUb2JpYXMgS2xhdXNlciA8dGtsYXVzZXJAZGlzdGFuei5jaD4K
K0w6CWxpbnV4LXNlcmlhbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvdHR5L3NlcmlhbC9hbHRlcmFfanRhZ3VhcnQuYworRjoJZHJpdmVycy90dHkvc2VyaWFsL2Fs
dGVyYV91YXJ0LmMKK0Y6CWluY2x1ZGUvbGludXgvYWx0ZXJhX2p0YWd1YXJ0LmgKK0Y6CWluY2x1
ZGUvbGludXgvYWx0ZXJhX3VhcnQuaAorCitBTUFaT04gQU5OQVBVUk5BIExBQlMgRklDIERSSVZF
UgorTToJVGFsZWwgU2hlbmhhciA8dGFsZWxAYW1hem9uLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9h
bWF6b24sYWwtZmljLnlhbWwKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtYWwtZmljLmMKKworQU1B
Wk9OIEFOTkFQVVJOQSBMQUJTIE1FTU9SWSBDT05UUk9MTEVSIEVEQUMKK006CVRhbGVsIFNoZW5o
YXIgPHRhbGVsQGFtYXpvbi5jb20+CitNOglUYWxlbCBTaGVuaGFyIDx0YWxlbHNoZW5oYXJAZ21h
aWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2VkYWMvYW1hem9uLGFsLW1jLWVkYWMueWFtbAorRjoJZHJpdmVycy9lZGFjL2FsX21jX2Vk
YWMuYworCitBTUFaT04gQU5OQVBVUk5BIExBQlMgVEhFUk1BTCBNTUlPIERSSVZFUgorTToJVGFs
ZWwgU2hlbmhhciA8dGFsZWxAYW1hem9uLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2FtYXpvbixhbC10aGVybWFsLnR4dAor
RjoJZHJpdmVycy90aGVybWFsL3RoZXJtYWxfbW1pby5jCisKK0FNQVpPTiBFVEhFUk5FVCBEUklW
RVJTCitNOglTaGF5IEFncm9za2luIDxzaGF5YWdyQGFtYXpvbi5jb20+CitNOglBcnRodXIgS2l5
YW5vdnNraSA8YWtpeWFub0BhbWF6b24uY29tPgorUjoJRGF2aWQgQXJpbnpvbiA8ZGFyaW56b25A
YW1hem9uLmNvbT4KK1I6CVNhZWVkIEJpc2hhcmEgPHNhZWVkYkBhbWF6b24uY29tPgorTDoJbmV0
ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3
b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2FtYXpvbi9lbmEucnN0CitGOglkcml2ZXJz
L25ldC9ldGhlcm5ldC9hbWF6b24vCisKK0FNQVpPTiBSRE1BIEVGQSBEUklWRVIKK006CU1pY2hh
ZWwgTWFyZ29saW4gPG1yZ29saW5AYW1hem9uLmNvbT4KK1I6CUdhbCBQcmVzc21hbiA8Z2FsLnBy
ZXNzbWFuQGxpbnV4LmRldj4KK1I6CVlvc3NpIExleWJvdmljaCA8c2xleWJvQGFtYXpvbi5jb20+
CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwczov
L3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtcmRtYS9saXN0LworRjoJZHJpdmVy
cy9pbmZpbmliYW5kL2h3L2VmYS8KK0Y6CWluY2x1ZGUvdWFwaS9yZG1hL2VmYS1hYmkuaAorCitB
TUQgM0QgVi1DQUNIRSBQRVJGT1JNQU5DRSBPUFRJTUlaRVIgRFJJVkVSCitNOglCYXNhdmFyYWog
TmF0aWthciA8QmFzYXZhcmFqLk5hdGlrYXJAYW1kLmNvbT4KK1I6CU1hcmlvIExpbW9uY2llbGxv
IDxtYXJpby5saW1vbmNpZWxsb0BhbWQuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9z
eXNmcy1idXMtcGxhdGZvcm0tZHJpdmVycy1hbWRfeDNkX3ZjYWNoZQorRjoJZHJpdmVycy9wbGF0
Zm9ybS94ODYvYW1kL3gzZF92Y2FjaGUuYworCitBTUQgQUREUkVTUyBUUkFOU0xBVElPTiBMSUJS
QVJZIChBVEwpCitNOglZYXplbiBHaGFubmFtIDxZYXplbi5HaGFubmFtQGFtZC5jb20+CitMOgls
aW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Jhcy9h
bWQvYXRsLyoKKworQU1EIEFFNERNQSBEUklWRVIKK006CUJhc2F2YXJhaiBOYXRpa2FyIDxCYXNh
dmFyYWouTmF0aWthckBhbWQuY29tPgorTDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitGOglkcml2ZXJzL2RtYS9hbWQvYWU0ZG1hLworCitBTUQgQVhJIFcxIERSSVZF
UgorTToJS3JpcyBDaGFwbGluIDxrcmlzLmNoYXBsaW5AYW1kLmNvbT4KK1I6CVRob21hcyBEZWxl
diA8dGhvbWFzLmRlbGV2QGFtZC5jb20+CitSOglNaWNoYWwgU2ltZWsgPG1pY2hhbC5zaW1la0Bh
bWQuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3cxL2FtZCxheGktMXdpcmUtaG9zdC55YW1sCitGOglkcml2ZXJzL3cxL21hc3RlcnMvYW1k
X2F4aV93MS5jCisKK0FNRCBDRFggQlVTIERSSVZFUgorTToJTmlwdW4gR3VwdGEgPG5pcHVuLmd1
cHRhQGFtZC5jb20+CitNOglOaWtoaWwgQWdhcndhbCA8bmlraGlsLmFnYXJ3YWxAYW1kLmNvbT4K
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMv
eGxueCx2ZXJzYWwtbmV0LWNkeC55YW1sCitGOglkcml2ZXJzL2NkeC8qCitGOglpbmNsdWRlL2xp
bnV4L2NkeC8qCisKK0FNRCBDUllQVE9HUkFQSElDIENPUFJPQ0VTU09SIChDQ1ApIERSSVZFUgor
TToJVG9tIExlbmRhY2t5IDx0aG9tYXMubGVuZGFja3lAYW1kLmNvbT4KK006CUpvaG4gQWxsZW4g
PGpvaG4uYWxsZW5AYW1kLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJZHJpdmVycy9jcnlwdG8vY2NwLworRjoJaW5jbHVkZS9saW51eC9jY3Au
aAorCitBTUQgQ1JZUFRPR1JBUEhJQyBDT1BST0NFU1NPUiAoQ0NQKSBEUklWRVIgLSBTRVYgU1VQ
UE9SVAorTToJQXNoaXNoIEthbHJhIDxhc2hpc2gua2FscmFAYW1kLmNvbT4KK006CVRvbSBMZW5k
YWNreSA8dGhvbWFzLmxlbmRhY2t5QGFtZC5jb20+CitMOglsaW51eC1jcnlwdG9Admdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvY3J5cHRvL2NjcC9zZXYqCitGOglpbmNs
dWRlL3VhcGkvbGludXgvcHNwLXNldi5oCisKK0FNRCBDUllQVE9HUkFQSElDIENPUFJPQ0VTU09S
IChDQ1ApIERSSVZFUiAtIERCQyBTVVBQT1JUCitNOglNYXJpbyBMaW1vbmNpZWxsbyA8bWFyaW8u
bGltb25jaWVsbG9AYW1kLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJZHJpdmVycy9jcnlwdG8vY2NwL2RiYy5jCitGOglkcml2ZXJzL2NyeXB0
by9jY3AvZGJjLmgKK0Y6CWRyaXZlcnMvY3J5cHRvL2NjcC9wbGF0Zm9ybS1hY2Nlc3MuYworRjoJ
ZHJpdmVycy9jcnlwdG8vY2NwL3BsYXRmb3JtLWFjY2Vzcy5oCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvcHNwLWRiYy5oCitGOgl0b29scy9jcnlwdG8vY2NwLyouYworRjoJdG9vbHMvY3J5cHRvL2Nj
cC8qLnB5CisKK0FNRCBDUllQVE9HUkFQSElDIENPUFJPQ0VTU09SIChDQ1ApIERSSVZFUiAtIEhT
VEkgU1VQUE9SVAorTToJTWFyaW8gTGltb25jaWVsbG8gPG1hcmlvLmxpbW9uY2llbGxvQGFtZC5j
b20+CitMOglsaW51eC1jcnlwdG9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRy
aXZlcnMvY3J5cHRvL2NjcC9oc3RpLioKKworQU1EIERJU1BMQVkgQ09SRQorTToJSGFycnkgV2Vu
dGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+CitNOglMZW8gTGkgPHN1bnBlbmcubGlAYW1k
LmNvbT4KK1I6CVJvZHJpZ28gU2lxdWVpcmEgPHNpcXVlaXJhQGlnYWxpYS5jb20+CitMOglhbWQt
Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9n
aXRsYWIuZnJlZWRlc2t0b3Aub3JnL2FnZDVmL2xpbnV4LmdpdAorRjoJZHJpdmVycy9ncHUvZHJt
L2FtZC9kaXNwbGF5LworCitBTUQgRElTUExBWSBDT1JFIC0gRE1MCitNOglBdXN0aW4gWmhlbmcg
PGF1c3Rpbi56aGVuZ0BhbWQuY29tPgorTToJSnVuIExlaSA8anVuLmxlaUBhbWQuY29tPgorUzoJ
U3VwcG9ydGVkCitGOglkcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvZG1sLworRjoJZHJp
dmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2RtbDIvCisKK0FNRCBGQU0xNUggUFJPQ0VTU09S
IFBPV0VSIE1PTklUT1JJTkcgRFJJVkVSCitNOglIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29t
PgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3Vt
ZW50YXRpb24vaHdtb24vZmFtMTVoX3Bvd2VyLnJzdAorRjoJZHJpdmVycy9od21vbi9mYW0xNWhf
cG93ZXIuYworCitBTUQgRkNIIEdQSU8gRFJJVkVSCitNOglFbnJpY28gV2VpZ2VsdCwgbWV0dXgg
SVQgY29uc3VsdCA8aW5mb0BtZXR1eC5uZXQ+CitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tYW1kLWZjaC5jCitGOglpbmNs
dWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvZ3Bpby9ncGlvLWFtZC1mY2guaAorCitBTUQgR0VPREUg
Q1M1NTM2IFVTQiBERVZJQ0UgQ09OVFJPTExFUiBEUklWRVIKK0w6CWxpbnV4LWdlb2RlQGxpc3Rz
LmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJT3JwaGFu
CitGOglkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2FtZDU1MzZ1ZGMuKgorCitBTUQgR0VPREUgUFJP
Q0VTU09SL0NISVBTRVQgU1VQUE9SVAorTToJQW5kcmVzIFNhbG9tb24gPGRpbGluZ2VyQHF1ZXVl
ZC5uZXQ+CitMOglsaW51eC1nZW9kZUBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9y
IG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5hbWQuY29tL3Vz
LWVuL0Nvbm5lY3Rpdml0eVNvbHV0aW9ucy9UZWNobmljYWxSZXNvdXJjZXMvMCwsNTBfMjMzNF8y
NDUyXzExMzYzLDAwLmh0bWwKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL2dlb2RlLmgKK0Y6CWRy
aXZlcnMvY2hhci9od19yYW5kb20vZ2VvZGUtcm5nLmMKK0Y6CWRyaXZlcnMvY3J5cHRvL2dlb2Rl
KgorRjoJZHJpdmVycy92aWRlby9mYmRldi9nZW9kZS8KKworQU1EIEhTTVAgRFJJVkVSCitNOglO
YXZlZW4gS3Jpc2huYSBDaGF0cmFkaGkgPG5hdmVlbmtyaXNobmEuY2hhdHJhZGhpQGFtZC5jb20+
CitSOglDYXJsb3MgQmlsYmFvIDxjYXJsb3MuYmlsYmFvQGtlcm5lbC5vcmc+CitMOglwbGF0Zm9y
bS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9hcmNoL3g4Ni9hbWRfaHNtcC5yc3QKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL2FtZC9o
c21wLmgKK0Y6CWFyY2gveDg2L2luY2x1ZGUvdWFwaS9hc20vYW1kX2hzbXAuaAorRjoJZHJpdmVy
cy9wbGF0Zm9ybS94ODYvYW1kL2hzbXAvCisKK0FNRCBJT01NVSAoQU1ELVZJKQorTToJSm9lcmcg
Um9lZGVsIDxqb3JvQDhieXRlcy5vcmc+CitSOglTdXJhdmVlIFN1dGhpa3VscGFuaXQgPHN1cmF2
ZWUuc3V0aGlrdWxwYW5pdEBhbWQuY29tPgorTDoJaW9tbXVAbGlzdHMubGludXguZGV2CitTOglN
YWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L2lvbW11L2xpbnV4LmdpdAorRjoJZHJpdmVycy9pb21tdS9hbWQvCitGOglpbmNsdWRl
L2xpbnV4L2FtZC1pb21tdS5oCisKK0FNRCBLRkQKK006CUZlbGl4IEt1ZWhsaW5nIDxGZWxpeC5L
dWVobGluZ0BhbWQuY29tPgorTDoJYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1
cHBvcnRlZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9hZ2Q1Zi9saW51
eC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmQqLltjaF0K
K0Y6CWRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkLworRjoJZHJpdmVycy9ncHUvZHJtL2FtZC9p
bmNsdWRlL2Npa19zdHJ1Y3RzLmgKK0Y6CWRyaXZlcnMvZ3B1L2RybS9hbWQvaW5jbHVkZS9rZ2Rf
a2ZkX2ludGVyZmFjZS5oCitGOglkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUvdjlfc3RydWN0
cy5oCitGOglkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUvdmlfc3RydWN0cy5oCitGOglpbmNs
dWRlL3VhcGkvbGludXgva2ZkX2lvY3RsLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9rZmRfc3lz
ZnMuaAorCitBTUQgTVAyIEkyQyBEUklWRVIKK006CUVsaWUgTW9yaXNzZSA8c3luaXVyZ2VAZ21h
aWwuY29tPgorTToJU2h5YW0gU3VuZGFyIFMgSyA8c2h5YW0tc3VuZGFyLnMta0BhbWQuY29tPgor
TDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9p
MmMvYnVzc2VzL2kyYy1hbWQtbXAyKgorCitBTUQgQVNGIEkyQyBEUklWRVIKK006CVNoeWFtIFN1
bmRhciBTIEsgPHNoeWFtLXN1bmRhci5zLWtAYW1kLmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbWQtYXNm
LXBsYXQuYworCitBTUQgTk9ERSBEUklWRVIKK006CU1hcmlvIExpbW9uY2llbGxvIDxtYXJpby5s
aW1vbmNpZWxsb0BhbWQuY29tPgorTToJWWF6ZW4gR2hhbm5hbSA8eWF6ZW4uZ2hhbm5hbUBhbWQu
Y29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglh
cmNoL3g4Ni9pbmNsdWRlL2FzbS9hbWQvbm9kZS5oCitGOglhcmNoL3g4Ni9rZXJuZWwvYW1kX25v
ZGUuYworCitBTUQgUERTIENPUkUgRFJJVkVSCitNOglTaGFubm9uIE5lbHNvbiA8c2hhbm5vbi5u
ZWxzb25AYW1kLmNvbT4KK006CUJyZXR0IENyZWVsZXkgPGJyZXR0LmNyZWVsZXlAYW1kLmNvbT4K
K0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9hbWQvcGRzX2NvcmUucnN0CitG
Oglkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQvcGRzX2NvcmUvCitGOglpbmNsdWRlL2xpbnV4L3Bk
cy8KKworQU1EIFBNQyBEUklWRVIKK006CVNoeWFtIFN1bmRhciBTIEsgPFNoeWFtLXN1bmRhci5T
LWtAYW1kLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2FtZC9wbWMvCisKK0FNRCBQTUYgRFJJ
VkVSCitNOglTaHlhbSBTdW5kYXIgUyBLIDxTaHlhbS1zdW5kYXIuUy1rQGFtZC5jb20+CitMOglw
bGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1
bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWFtZC1wbWYKK0Y6CWRyaXZlcnMvcGxhdGZvcm0v
eDg2L2FtZC9wbWYvCisKK0FNRCBQT1dFUlBMQVkgQU5EIFNXU01VCitNOglLZW5uZXRoIEZlbmcg
PGtlbm5ldGguZmVuZ0BhbWQuY29tPgorTDoJYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK
K1M6CVN1cHBvcnRlZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9hZ2Q1
Zi9saW51eC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9hbWQvcG0vCisKK0FNRCBQU1RBVEUgRFJJ
VkVSCitNOglIdWFuZyBSdWkgPHJheS5odWFuZ0BhbWQuY29tPgorTToJR2F1dGhhbSBSLiBTaGVu
b3kgPGdhdXRoYW0uc2hlbm95QGFtZC5jb20+CitNOglNYXJpbyBMaW1vbmNpZWxsbyA8bWFyaW8u
bGltb25jaWVsbG9AYW1kLmNvbT4KK1I6CVBlcnJ5IFl1YW4gPHBlcnJ5Lnl1YW5AYW1kLmNvbT4K
K0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0
aW9uL2FkbWluLWd1aWRlL3BtL2FtZC1wc3RhdGUucnN0CitGOglkcml2ZXJzL2NwdWZyZXEvYW1k
LXBzdGF0ZSoKK0Y6CXRvb2xzL3Bvd2VyL3g4Ni9hbWRfcHN0YXRlX3RyYWNlci9hbWRfcHN0YXRl
X3RyYWNlLnB5CisKK0FNRCBQVERNQSBEUklWRVIKK006CUJhc2F2YXJhaiBOYXRpa2FyIDxCYXNh
dmFyYWouTmF0aWthckBhbWQuY29tPgorTDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitGOglkcml2ZXJzL2RtYS9hbWQvcHRkbWEvCisKK0FNRCBRRE1BIERSSVZFUgor
TToJTmlzaGFkIFNhcmFmIDxuaXNoYWRzQGFtZC5jb20+CitNOglMaXpoaSBIb3UgPGxpemhpLmhv
dUBhbWQuY29tPgorTDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitG
Oglkcml2ZXJzL2RtYS9hbWQvcWRtYS8KK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9h
bWRfcWRtYS5oCisKK0FNRCBTRUFUVExFIERFVklDRSBUUkVFIFNVUFBPUlQKK006CVN1cmF2ZWUg
U3V0aGlrdWxwYW5pdCA8c3VyYXZlZS5zdXRoaWt1bHBhbml0QGFtZC5jb20+CitNOglUb20gTGVu
ZGFja3kgPHRob21hcy5sZW5kYWNreUBhbWQuY29tPgorUzoJU3VwcG9ydGVkCitGOglhcmNoL2Fy
bTY0L2Jvb3QvZHRzL2FtZC8KKworQU1EIFNFTlNPUiBGVVNJT04gSFVCIERSSVZFUgorTToJQmFz
YXZhcmFqIE5hdGlrYXIgPGJhc2F2YXJhai5uYXRpa2FyQGFtZC5jb20+CitMOglsaW51eC1pbnB1
dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaGlkL2Ft
ZC1zZmgqCitGOglkcml2ZXJzL2hpZC9hbWQtc2ZoLWhpZC8KKworQU1EIFNQSSBEUklWRVIKK006
CVJhanUgUmFuZ29qdSA8UmFqdS5SYW5nb2p1QGFtZC5jb20+CitMOglsaW51eC1zcGlAdmdlci5r
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvc3BpL3NwaS1hbWQtcGNpLmMKK0Y6
CWRyaXZlcnMvc3BpL3NwaS1hbWQuYworRjoJZHJpdmVycy9zcGkvc3BpLWFtZC5oCisKK0FNRCBY
RE5BIERSSVZFUgorTToJTWluIE1hIDxtaW4ubWFAYW1kLmNvbT4KK006CUxpemhpIEhvdSA8bGl6
aGkuaG91QGFtZC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglT
dXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mv
a2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hY2NlbC9hbWR4ZG5hLworRjoJZHJpdmVycy9h
Y2NlbC9hbWR4ZG5hLworRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvYW1keGRuYS5oCitGOglpbmNs
dWRlL3VhcGkvZHJtL2FtZHhkbmFfYWNjZWwuaAorCitBTUQgWEdCRSBEUklWRVIKK006CSJTaHlh
bSBTdW5kYXIgUyBLIiA8U2h5YW0tc3VuZGFyLlMta0BhbWQuY29tPgorTDoJbmV0ZGV2QHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm02NC9ib290L2R0cy9hbWQvYW1k
LXNlYXR0bGUteGdiZSouZHRzaQorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUvCisK
K0FNTE9HSUMgQkxVRVRPT1RIIERSSVZFUgorTToJWWFuZyBMaSA8eWFuZy5saUBhbWxvZ2ljLmNv
bT4KK0w6CWxpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL2FtbG9naWMs
dzE1NXMyLWJ0LnlhbWwKK0Y6CWRyaXZlcnMvYmx1ZXRvb3RoL2hjaV9hbWwuYworCitBTUxPR0lD
IEREUiBQTVUgRFJJVkVSCitNOglKaXVjaGVuZyBYdSA8aml1Y2hlbmcueHVAYW1sb2dpYy5jb20+
CitMOglsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJ
aHR0cDovL3d3dy5hbWxvZ2ljLmNvbQorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wZXJm
L21lc29uLWRkci1wbXUucnN0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
cGVyZi9hbWxvZ2ljLGcxMi1kZHItcG11LnlhbWwKK0Y6CWRyaXZlcnMvcGVyZi9hbWxvZ2ljLwor
RjoJaW5jbHVkZS9zb2MvYW1sb2dpYy8KKworQU1MT0dJQyBJU1AgRFJJVkVSCitNOglLZWtlIExp
IDxrZWtlLmxpQGFtbG9naWMuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21lZGlhL2MzLWlzcC5k
b3QKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbWVkaWEvYzMtaXNwLnJzdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2FtbG9naWMsYzMtaXNwLnlhbWwK
K0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92NGwvbWV0YWZtdC1jMy1pc3Au
cnN0CitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvYzMvaXNwLworRjoJaW5jbHVk
ZS91YXBpL2xpbnV4L21lZGlhL2FtbG9naWMvCisKK0FNTE9HSUMgTUlQSSBBREFQVEVSIERSSVZF
UgorTToJS2VrZSBMaSA8a2VrZS5saUBhbWxvZ2ljLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL21lZGlhL2FtbG9naWMsYzMtbWlwaS1hZGFwdGVyLnlhbWwKK0Y6CWRyaXZlcnMvbWVk
aWEvcGxhdGZvcm0vYW1sb2dpYy9jMy9taXBpLWFkYXB0ZXIvCisKK0FNTE9HSUMgTUlQSSBDU0ky
IERSSVZFUgorTToJS2VrZSBMaSA8a2VrZS5saUBhbWxvZ2ljLmNvbT4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL21lZGlhL2FtbG9naWMsYzMtbWlwaS1jc2kyLnlhbWwKK0Y6CWRyaXZlcnMv
bWVkaWEvcGxhdGZvcm0vYW1sb2dpYy9jMy9taXBpLWNzaTIvCisKK0FNTE9HSUMgUElOQ1RSTCBE
UklWRVIKK006CVhpYW53ZWkgWmhhbyA8eGlhbndlaS56aGFvQGFtbG9naWMuY29tPgorTDoJbGlu
dXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCitMOglsaW51eC1ncGlvQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3BpbmN0cmwvYW1sb2dpYyxwaW5jdHJsLWE0LnlhbWwKK0Y6CWRyaXZlcnMvcGluY3RybC9tZXNv
bi9waW5jdHJsLWFtbG9naWMtYTQuYworCitBTUxPR0lDIFJUQyBEUklWRVIKK006CVlpdGluZyBE
ZW5nIDx5aXRpbmcuZGVuZ0BhbWxvZ2ljLmNvbT4KK006CVhpYW53ZWkgWmhhbyA8eGlhbndlaS56
aGFvQGFtbG9naWMuY29tPgorTDoJbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL2Ft
bG9naWMsYTQtcnRjLnlhbWwKK0Y6CWRyaXZlcnMvcnRjL3J0Yy1hbWxvZ2ljLWE0LmMKKworQU1Q
SEVOT0wgQ0hJUENBUCAyIERSSVZFUgorTToJSmF2aWVyIENhcnJhc2NvIDxqYXZpZXIuY2FycmFz
Y28uY3J1ekBnbWFpbC5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9hbXBo
ZW5vbCxjaGlwY2FwMi55YW1sCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2NoaXBjYXAyLnJzdAor
RjoJZHJpdmVycy9od21vbi9jaGlwY2FwMi5jCisKK0FNUEhJT04gVlBVIENPREVDIFY0TDIgRFJJ
VkVSCitNOglNaW5nIFFpYW4gPG1pbmcucWlhbkBueHAuY29tPgorTToJWmhvdSBQZW5nIDxlYWds
ZS56aG91QG54cC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9hbXBoaW9u
LHZwdS55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtcGhpb24vCisKK0FNUyBBUzcz
MjExIERSSVZFUgorTToJQ2hyaXN0aWFuIEVnZ2VycyA8Y2VnZ2Vyc0BhcnJpLmRlPgorTDoJbGlu
dXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9hbXMsYXM3MzIxMS55YW1sCitGOglkcml2ZXJz
L2lpby9saWdodC9hczczMjExLmMKKworQU1UIChBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGlu
ZykKK006CVRhZWhlZSBZb28gPGFwNDIwMDczQGdtYWlsLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvbmV0ZGV2L25ldC5naXQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbmV0ZGV2L25ldC1uZXh0LmdpdAorRjoJ
ZHJpdmVycy9uZXQvYW10LmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFEMzU1MlIgRFJJVkVSCitN
OglOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdh
cmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMv
YWRpLGFkMzU1MnIueWFtbAorRjoJZHJpdmVycy9paW8vZGFjL2FkMzU1MnIuYworCitBTkFMT0cg
REVWSUNFUyBJTkMgQUQ0MDAwIERSSVZFUgorTToJTWFyY2VsbyBTY2htaXR0IDxtYXJjZWxvLnNj
aG1pdHRAYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2FkaSxhZDQwMDAueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9paW8vYWQ0MDAwLnJzdAorRjoJZHJpdmVycy9paW8vYWRjL2Fk
NDAwMC5jCisKK0FENDAzMCBBREMgRFJJVkVSIChBRDQwMzAtMjQvQUQ0NjMwLTE2L0FENDYzMC0y
NC9BRDQ2MzItMTYvQUQ0NjMyLTI0KQorTToJTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVu
bmVyaWNoQGFuYWxvZy5jb20+CitNOglOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgorUjoJ
RXN0ZWJhbiBCbGFuYyA8ZWJsYW5jQGJheWxpYnJlLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNv
ZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8v
YWRjL2FkaSxhZDQwMzAueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9paW8vYWQ0MDMwLnJzdAorRjoJ
ZHJpdmVycy9paW8vYWRjL2FkNDAzMC5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRDQxMzAgRFJJ
VkVSCitNOglDb3NtaW4gVGFuaXNsYXYgPGNvc21pbi50YW5pc2xhdkBhbmFsb2cuY29tPgorTDoJ
bGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFu
YWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVz
dGluZy9zeXNmcy1idXMtaWlvLWFkYy1hZDQxMzAKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9paW8vYWRjL2FkaSxhZDQxMzAueWFtbAorRjoJZHJpdmVycy9paW8vYWRjL2Fk
NDEzMC5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRDQ2OTUgRFJJVkVSCitNOglNaWNoYWVsIEhl
bm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KK006CU51bm8gU8OhIDxudW5v
LnNhQGFuYWxvZy5jb20+CitSOglEYXZpZCBMZWNobmVyIDxkbGVjaG5lckBiYXlsaWJyZS5jb20+
CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8v
ZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9hZGksYWQ0Njk1LnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vaWlvL2FkNDY5NS5yc3QKK0Y6CWRyaXZlcnMvaWlvL2FkYy9hZDQ2OTUuYworRjoJaW5jbHVk
ZS9kdC1iaW5kaW5ncy9paW8vYWRjL2FkaSxhZDQ2OTUuaAorCitBTkFMT0cgREVWSUNFUyBJTkMg
QUQ3MDkxUiBEUklWRVIKK006CU1hcmNlbG8gU2NobWl0dCA8bWFyY2Vsby5zY2htaXR0QGFuYWxv
Zy5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0
dHA6Ly9lei5hbmFsb2cuY29tL2NvbW11bml0eS9saW51eC1kZXZpY2UtZHJpdmVycworRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYWRpLGFkNzA5MXIqCitGOglk
cml2ZXJzL2lpby9hZGMvYWQ3MDkxcioKKworQU5BTE9HIERFVklDRVMgSU5DIEFENzE5MSBEUklW
RVIKK006CUFsaXNhLURhcmlhbmEgUm9tYW4gPGFsaXNhLnJvbWFuQGFuYWxvZy5jb20+CitMOgls
aW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5h
bG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvaWlvL2FkYy9hZGksYWQ3MTkxLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vaWlv
L2FkNzE5MS5yc3QKK0Y6CWRyaXZlcnMvaWlvL2FkYy9hZDcxOTEuYworCitBTkFMT0cgREVWSUNF
UyBJTkMgQUQ3MTkyIERSSVZFUgorTToJQWxpc2EtRGFyaWFuYSBSb21hbiA8YWxpc2Eucm9tYW5A
YW5hbG9nLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAor
VzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2FkaSxhZDcxOTIueWFtbAorRjoJ
ZHJpdmVycy9paW8vYWRjL2FkNzE5Mi5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRDcyOTIgRFJJ
VkVSCitNOglNYXJjZWxvIFNjaG1pdHQgPG1hcmNlbG8uc2NobWl0dDFAZ21haWwuY29tPgorTDoJ
bGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFu
YWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2lpby9hZGMvYWRpLGFkNzI5Mi55YW1sCitGOglkcml2ZXJzL2lpby9hZGMv
YWQ3MjkyLmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFENzI5MyBEUklWRVIKK006CUFudG9uaXUg
TWljbGF1cyA8YW50b25pdS5taWNsYXVzQGFuYWxvZy5jb20+CitMOglsaW51eC1paW9Admdlci5r
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1z
b2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlv
L2RhYy9hZGksYWQ3MjkzLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2RhYy9hZDcyOTMuYworCitBTkFM
T0cgREVWSUNFUyBJTkMgQUQ3NDExNSBEUklWRVIKK006CUNvc21pbiBUYW5pc2xhdiA8Y29zbWlu
LnRhbmlzbGF2QGFuYWxvZy5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJz
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkZGFjL2FkaSxhZDc0
MTE1LnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkZGFjL2FkNzQxMTUuYworCitBTkFMT0cgREVWSUNF
UyBJTkMgQUQ3NDQxM1IgRFJJVkVSCitNOglDb3NtaW4gVGFuaXNsYXYgPGNvc21pbi50YW5pc2xh
dkBhbmFsb2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGRhYy9hZGksYWQ3NDQxM3IueWFt
bAorRjoJZHJpdmVycy9paW8vYWRkYWMvYWQ3NDQxM3IuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5n
cy9paW8vYWRkYWMvYWRpLGFkNzQ0MTNyLmgKKworQU5BTE9HIERFVklDRVMgSU5DIEFENzYyNSBE
UklWRVIKK006CU1pY2hhZWwgSGVubmVyaWNoIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFsb2cuY29t
PgorTToJTnVubyBTw6EgPG51bm8uc2FAYW5hbG9nLmNvbT4KK1I6CVRyZXZvciBHYW1ibGluIDx0
Z2FtYmxpbkBiYXlsaWJyZS5jb20+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9n
LmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitXOglodHRwOi8vYW5hbG9nZGV2aWNlc2luYy5n
aXRodWIuaW8vaGRsL3Byb2plY3RzL3B1bHNhcl9sdmRzL2luZGV4Lmh0bWwKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2FkaSxhZDc2MjUueWFtbAorRjoJRG9j
dW1lbnRhdGlvbi9paW8vYWQ3NjI1LnJzdAorRjoJZHJpdmVycy9paW8vYWRjL2FkNzYyNS5jCisK
K0FOQUxPRyBERVZJQ0VTIElOQyBBRDc3NjgtMSBEUklWRVIKK006CU1pY2hhZWwgSGVubmVyaWNo
IDxNaWNoYWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdh
cmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMv
YWRpLGFkNzc2OC0xLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy9hZDc3NjgtMS5jCisKK0FOQUxP
RyBERVZJQ0VTIElOQyBBRDc3ODAgRFJJVkVSCitNOglNaWNoYWVsIEhlbm5lcmljaCA8TWljaGFl
bC5IZW5uZXJpY2hAYW5hbG9nLmNvbT4KK006CVJlbmF0byBMdWkgR2VoIDxyZW5hdG9nZWhAZ21h
aWwuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglo
dHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYWRpLGFkNzc4MC55YW1sCitGOglkcml2
ZXJzL2lpby9hZGMvYWQ3NzgwLmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFEOTQ2NyBEUklWRVIK
K006CU1pY2hhZWwgSGVubmVyaWNoIDxNaWNoYWVsLkhlbm5lcmljaEBhbmFsb2cuY29tPgorTToJ
TnVubyBTYSA8bnVuby5zYUBhbmFsb2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9y
ZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUt
ZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWlpby1hZDk0NjcK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2FkaSxhZDk0Njcu
eWFtbAorRjoJZHJpdmVycy9paW8vYWRjL2FkOTQ2Ny5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBB
RDg0NjAgRFJJVkVSCitNOglNYXJpZWwgVGluYWNvIDxNYXJpZWwuVGluYWNvQGFuYWxvZy5jb20+
CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8v
ZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvaWlvL2RhYy9hZGksYWQ4NDYwLnlhbWwKK0Y6CWRyaXZlcnMvaWlv
L2RhYy9hZDg0NjAuYworCitBTkFMT0cgREVWSUNFUyBJTkMgQUQ5NzM5YSBEUklWRVIKK006CU51
bm8gU2EgPG51bm8uc2FAYW5hbG9nLmNvbT4KK006CURyYWdvcyBCb2dkYW4gPGRyYWdvcy5ib2dk
YW5AYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vZGFjL2FkaSxhZDk3MzlhLnlhbWwK
K0Y6CWRyaXZlcnMvaWlvL2RhYy9hZDk3MzlhLmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFEQTQy
NTAgRFJJVkVSCitNOglBbnRvbml1IE1pY2xhdXMgPGFudG9uaXUubWljbGF1c0BhbmFsb2cuY29t
PgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczov
L2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hbXBsaWZpZXJzL2FkaSxhZGE0MjUwLnlhbWwKK0Y6CWRy
aXZlcnMvaWlvL2FtcGxpZmllcnMvYWRhNDI1MC5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBREY0
Mzc3IERSSVZFUgorTToJQW50b25pdSBNaWNsYXVzIDxhbnRvbml1Lm1pY2xhdXNAYW5hbG9nLmNv
bT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6
Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vZnJlcXVlbmN5L2FkaSxhZGY0Mzc3LnlhbWwKK0Y6CWRy
aXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZGY0Mzc3LmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFER1Mx
NDA4IERSSVZFUgorTToJTWlyY2VhIENhcHJpb3J1IDxtaXJjZWEuY2FwcmlvcnVAYW5hbG9nLmNv
bT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL211
eC9hZGksYWRnczE0MDgudHh0CitGOglkcml2ZXJzL211eC9hZGdzMTQwOC5jCisKK0FOQUxPRyBE
RVZJQ0VTIElOQyBBRElOIERSSVZFUgorTToJTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVu
bmVyaWNoQGFuYWxvZy5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0
ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2FkaSxhZGluLnlhbWwKK0Y6CWRy
aXZlcnMvbmV0L3BoeS9hZGluLmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFESVMgRFJJVkVSIExJ
QlJBUlkKK006CU51bm8gU2EgPG51bm8uc2FAYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9paW8vaW11L2FkaXMuYworRjoJ
ZHJpdmVycy9paW8vaW11L2FkaXNfYnVmZmVyLmMKK0Y6CWRyaXZlcnMvaWlvL2ltdS9hZGlzX3Ry
aWdnZXIuYworRjoJaW5jbHVkZS9saW51eC9paW8vaW11L2FkaXMuaAorCitBTkFMT0cgREVWSUNF
UyBJTkMgQURJUzE2NDYwIERSSVZFUgorTToJRHJhZ29zIEJvZ2RhbiA8ZHJhZ29zLmJvZ2RhbkBh
bmFsb2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitX
OglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9pbXUvYWRpLGFkaXMxNjQ2MC55YW1sCitG
Oglkcml2ZXJzL2lpby9pbXUvYWRpczE2NDYwLmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFESVMx
NjQ3NSBEUklWRVIKK006CU51bm8gU2EgPG51bm8uc2FAYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWlp
b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29t
L2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9paW8vaW11L2FkaSxhZGlzMTY0NzUueWFtbAorRjoJZHJpdmVycy9paW8vaW11L2FkaXMx
NjQ3NS5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRElTMTY1NTAgRFJJVkVSCitNOglOdW5vIFNh
IDxudW5vLnNhQGFuYWxvZy5jb20+CitNOglSYW1vbmEgR3JhZGluYXJpdSA8cmFtb25hLmdyYWRp
bmFyaXVAYW5hbG9nLmNvbT4KK006CUFudG9uaXUgTWljbGF1cyA8YW50b25pdS5taWNsYXVzQGFu
YWxvZy5jb20+CitNOglSb2JlcnQgQnVkYWkgPHJvYmVydC5idWRhaUBhbmFsb2cuY29tPgorTDoJ
bGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFu
YWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2lpby9pbXUvYWRpLGFkaXMxNjU1MC55YW1sCisKK0FOQUxPRyBERVZJQ0VT
IElOQyBBRE0xMTc3IERSSVZFUgorTToJTWljaGFlbCBIZW5uZXJpY2ggPE1pY2hhZWwuSGVubmVy
aWNoQGFuYWxvZy5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9hZGksYWRtMTE3Ny55YW1s
CitGOglkcml2ZXJzL2h3bW9uL2FkbTExNzcuYworCitBTkFMT0cgREVWSUNFUyBJTkMgQURNRk0y
MDAwIERSSVZFUgorTToJS2ltIFNlZXIgUGFsbGVyIDxraW1zZWVyLnBhbGxlckBhbmFsb2cuY29t
PgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczov
L2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9mcmVxdWVuY3kvYWRpLGFkbWZtMjAwMC55YW1sCitGOglk
cml2ZXJzL2lpby9mcmVxdWVuY3kvYWRtZm0yMDAwLmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFE
TVYxMDEzIERSSVZFUgorTToJQW50b25pdSBNaWNsYXVzIDxhbnRvbml1Lm1pY2xhdXNAYW5hbG9n
LmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0
cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vZnJlcXVlbmN5L2FkaSxhZG12MTAxMy55YW1sCitG
Oglkcml2ZXJzL2lpby9mcmVxdWVuY3kvYWRtdjEwMTMuYworCitBTkFMT0cgREVWSUNFUyBJTkMg
QURNVjEwMTQgRFJJVkVSCitNOglBbnRvbml1IE1pY2xhdXMgPGFudG9uaXUubWljbGF1c0BhbmFs
b2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglo
dHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9mcmVxdWVuY3kvYWRpLGFkbXYxMDE0LnlhbWwK
K0Y6CWRyaXZlcnMvaWlvL2ZyZXF1ZW5jeS9hZG12MTAxNC5jCisKK0FOQUxPRyBERVZJQ0VTIElO
QyBBRE1WODgxOCBEUklWRVIKK006CUFudG9uaXUgTWljbGF1cyA8YW50b25pdS5taWNsYXVzQGFu
YWxvZy5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2ZpbHRlci9hZGksYWRtdjg4MTgueWFtbAor
RjoJZHJpdmVycy9paW8vZmlsdGVyL2FkbXY4ODE4LmMKKworQU5BTE9HIERFVklDRVMgSU5DIEFE
UDUwNTUgRFJJVkVSCitNOglBbGV4aXMgQ3plemFyIFRvcnJlbm8gPGFsZXhpc2N6ZXphci50b3Jy
ZW5vQGFuYWxvZy5jb20+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9s
aW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvcmVndWxhdG9yL2FkaSxhZHA1MDU1LXJlZ3VsYXRvci55YW1sCitGOglkcml2ZXJzL3JlZ3Vs
YXRvci9hZHA1MDU1LXJlZ3VsYXRvci5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRFA1MDYxIERS
SVZFUgorTToJTWljaGFlbCBIZW5uZXJpY2ggPE1pY2hhZWwuSGVubmVyaWNoQGFuYWxvZy5jb20+
CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9l
ei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CWRyaXZlcnMvcG93ZXIvc3Vw
cGx5L2FkcDUwNjEuYworCitBTkFMT0cgREVWSUNFUyBJTkMgQURSRjY3ODAgRFJJVkVSCitNOglB
bnRvbml1IE1pY2xhdXMgPGFudG9uaXUubWljbGF1c0BhbmFsb2cuY29tPgorTDoJbGludXgtaWlv
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20v
bGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2lpby9mcmVxdWVuY3kvYWRpLGFkcmY2NzgwLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2ZyZXF1
ZW5jeS9hZHJmNjc4MC5jCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRFY3MTgwIERSSVZFUgorTToJ
TGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFmb28uZGU+CitMOglsaW51eC1tZWRpYUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4
LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9t
ZWRpYS9pMmMvYWRpLGFkdjcxODAueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYWR2NzE4MC5j
CisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRFY3NDhYIERSSVZFUgorTToJS2llcmFuIEJpbmdoYW0g
PGtpZXJhbi5iaW5naGFtQGlkZWFzb25ib2FyZC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9tZWRpYS9pMmMvYWRpLGFkdjc0OHgueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYWR2
NzQ4eC8qCisKK0FOQUxPRyBERVZJQ0VTIElOQyBBRFY3NTExIERSSVZFUgorTToJSGFucyBWZXJr
dWlsIDxodmVya3VpbC1jaXNjb0B4czRhbGwubmw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2Fkdjc1MTEqCisKK0FO
QUxPRyBERVZJQ0VTIElOQyBBRFY3NjA0IERSSVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3Vp
bC1jaXNjb0B4czRhbGwubmw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMv
YWRpLGFkdjc2MDQueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYWR2NzYwNCoKKworQU5BTE9H
IERFVklDRVMgSU5DIEFEVjc4NDIgRFJJVkVSCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsLWNp
c2NvQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYWR2Nzg0MioKKworQU5BTE9HIERFVklDRVMgSU5D
IEFEWFJTMjkwIERSSVZFUgorTToJTmlzaGFudCBNYWxwYW5pIDxuaXNoLm1hbHBhbmkyNUBnbWFp
bC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vZ3lyb3Njb3BlL2FkaSxhZHhyczI5
MC55YW1sCitGOglkcml2ZXJzL2lpby9neXJvL2FkeHJzMjkwLmMKKworQU5BTE9HIERFVklDRVMg
SU5DIEFTT0MgQ09ERUMgRFJJVkVSUworTToJTGFycy1QZXRlciBDbGF1c2VuIDxsYXJzQG1ldGFm
b28uZGU+CitNOglOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgorTDoJbGludXgtc291bmRA
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93aWtpLmFuYWxvZy5jb20v
CitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2FkaSwqCitGOglzb3VuZC9zb2Mv
Y29kZWNzL2FkMSoKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvYWQ3KgorRjoJc291bmQvc29jL2NvZGVj
cy9hZGF1KgorRjoJc291bmQvc29jL2NvZGVjcy9hZGF2KgorRjoJc291bmQvc29jL2NvZGVjcy9z
aWdtYWRzcC4qCitGOglzb3VuZC9zb2MvY29kZWNzL3NzbSoKKworQU5BTE9HIERFVklDRVMgSU5D
IEFYSSBEQUMgRFJJVkVSCitNOglOdW5vIFNhIDxudW5vLnNhQGFuYWxvZy5jb20+CitMOglsaW51
eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9n
LmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvaWlvL2RhYy9hZGksYXhpLWRhYy55YW1sCitGOglkcml2ZXJzL2lpby9kYWMvYWRp
LWF4aS1kYWMuYworCitBTkFMT0cgREVWSUNFUyBJTkMgRE1BIERSSVZFUlMKK006CUxhcnMtUGV0
ZXIgQ2xhdXNlbiA8bGFyc0BtZXRhZm9vLmRlPgorUzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6
LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJZHJpdmVycy9kbWEvZG1hLWF4
aS1kbWFjLmMKKworQU5BTE9HIERFVklDRVMgSU5DIElJTyBEUklWRVJTCitNOglMYXJzLVBldGVy
IENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT4KK006CU1pY2hhZWwgSGVubmVyaWNoIDxNaWNoYWVs
Lkhlbm5lcmljaEBhbmFsb2cuY29tPgorUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd2lraS5hbmFs
b2cuY29tLworVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMK
K0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1mcmVxdWVuY3ktYWQ5
NTIzCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tZnJlcXVlbmN5
LWFkZjQzNTAKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vKi9hZGks
KgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvbGx0YyxsdGMy
NDk2LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2xs
dGMsbHRjMjQ5Ny55YW1sCitGOglEb2N1bWVudGF0aW9uL2lpby9hZDc2MDYucnN0CitGOglkcml2
ZXJzL2lpby8qL2FkKgorRjoJZHJpdmVycy9paW8vYWRjL2x0YzI0OSoKK0Y6CWRyaXZlcnMvaWlv
L2FtcGxpZmllcnMvaG1jNDI1YS5jCitGOglkcml2ZXJzL3N0YWdpbmcvaWlvLyovYWQqCitYOglk
cml2ZXJzL2lpby8qL2FkamQqCisKK0FOQUxPR0JJVFMgUExMIExJQlJBUklFUworTToJUGF1bCBX
YWxtc2xleSA8cGF1bC53YWxtc2xleUBzaWZpdmUuY29tPgorTToJU2FtdWVsIEhvbGxhbmQgPHNh
bXVlbC5ob2xsYW5kQHNpZml2ZS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvY2xrL2Fu
YWxvZ2JpdHMvKgorRjoJaW5jbHVkZS9saW51eC9jbGsvYW5hbG9nYml0cyoKKworQU5EUk9JRCBE
UklWRVJTCitNOglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3Jn
PgorTToJQXJ2ZSBIasO4bm5ldsOlZyA8YXJ2ZUBhbmRyb2lkLmNvbT4KK006CVRvZGQgS2pvcyA8
dGtqb3NAYW5kcm9pZC5jb20+CitNOglNYXJ0aWpuIENvZW5lbiA8bWFjb0BhbmRyb2lkLmNvbT4K
K006CUpvZWwgRmVybmFuZGVzIDxqb2VsYWduZWxmQG52aWRpYS5jb20+CitNOglDaHJpc3RpYW4g
QnJhdW5lciA8Y2hyaXN0aWFuQGJyYXVuZXIuaW8+CitNOglDYXJsb3MgTGxhbWFzIDxjbWxsYW1h
c0Bnb29nbGUuY29tPgorTToJU3VyZW4gQmFnaGRhc2FyeWFuIDxzdXJlbmJAZ29vZ2xlLmNvbT4K
K0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdp
dDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ncmVna2gvc3RhZ2lu
Zy5naXQKK0Y6CWRyaXZlcnMvYW5kcm9pZC8KKworQU5EUk9JRCBHT0xERklTSCBQSUMgRFJJVkVS
CitNOglNaW9kcmFnIERpbmljIDxtaW9kcmFnLmRpbmljQG1pcHMuY29tPgorUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xs
ZXIvZ29vZ2xlLGdvbGRmaXNoLXBpYy55YW1sCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLWdvbGRm
aXNoLXBpYy5jCisKK0FORFJPSUQgR09MREZJU0ggUlRDIERSSVZFUgorTToJSmlheHVuIFlhbmcg
PGppYXh1bi55YW5nQGZseWdvYXQuY29tPgorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3J0Yy9y
dGMtZ29sZGZpc2guYworCitBT0EgKEFwcGxlIE9uYm9hcmQgQXVkaW8pIEFMU0EgRFJJVkVSCitN
OglKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorTDoJbGludXhwcGMt
ZGV2QGxpc3RzLm96bGFicy5vcmcKK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJc291bmQvYW9hLworCitBUEVYIEVNQkVEREVEIFNZU1RFTVMgU1RYMTA0
IElJTyBEUklWRVIKK006CVdpbGxpYW0gQnJlYXRoaXR0IEdyYXkgPHdiZ0BrZXJuZWwub3JnPgor
TDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9p
aW8vYWRkYWMvc3R4MTA0LmMKKworQVBNIERSSVZFUgorTToJSmlyaSBLb3NpbmEgPGppa29zQGtl
cm5lbC5vcmc+CitTOglPZGQgZml4ZXMKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvamlrb3MvYXBtLmdpdAorRjoJYXJjaC94ODYva2VybmVsL2Fw
bV8zMi5jCitGOglkcml2ZXJzL2NoYXIvYXBtLWVtdWxhdGlvbi5jCitGOglpbmNsdWRlL2xpbnV4
L2FwbV9iaW9zLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9hcG1fYmlvcy5oCisKK0FQUEFSTU9S
IFNFQ1VSSVRZIE1PRFVMRQorTToJSm9obiBKb2hhbnNlbiA8am9obi5qb2hhbnNlbkBjYW5vbmlj
YWwuY29tPgorTToJSm9obiBKb2hhbnNlbiA8am9obkBhcHBhcm1vci5uZXQ+CitMOglhcHBhcm1v
ckBsaXN0cy51YnVudHUuY29tIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1
cHBvcnRlZAorVzoJYXBwYXJtb3IubmV0CitCOglodHRwczovL2dpdGxhYi5jb20vYXBwYXJtb3Iv
YXBwYXJtb3Ita2VybmVsCitDOglpcmM6Ly9pcmMub2Z0Yy5uZXQvYXBwYXJtb3IKK1Q6CWdpdCBn
aXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamovbGludXgtYXBw
YXJtb3IKK1Q6CWh0dHBzOi8vZ2l0bGFiLmNvbS9hcHBhcm1vci9hcHBhcm1vci1rZXJuZWwuZ2l0
CitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL0xTTS9hcHBhcm1vci5yc3QKK0Y6CXNlY3Vy
aXR5L2FwcGFybW9yLworCitBUFBMRSBCQ001OTc0IE1VTFRJVE9VQ0ggRFJJVkVSCitNOglIZW5y
aWsgUnlkYmVyZyA8cnlkYmVyZ0BiaXRtYXRoLm9yZz4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2Vy
bmVsLm9yZworUzoJT2RkIGZpeGVzCitGOglkcml2ZXJzL2lucHV0L21vdXNlL2JjbTU5NzQuYwor
CitBUFBMRSBQQ0lFIENPTlRST0xMRVIgRFJJVkVSCitNOglBbHlzc2EgUm9zZW56d2VpZyA8YWx5
c3NhQHJvc2VuendlaWcuaW8+CitNOglNYXJjIFp5bmdpZXIgPG1hekBrZXJuZWwub3JnPgorTDoJ
bGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wY2kv
Y29udHJvbGxlci9wY2llLWFwcGxlLmMKKworQVBQTEUgU01DIERSSVZFUgorTToJSGVucmlrIFJ5
ZGJlcmcgPHJ5ZGJlcmdAYml0bWF0aC5vcmc+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU9kZCBmaXhlcworRjoJZHJpdmVycy9od21vbi9hcHBsZXNtYy5jCisKK0FQUExFVEFM
SyBORVRXT1JLIExBWUVSCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglPZGQgZml4ZXMK
K0Y6CWluY2x1ZGUvbGludXgvYXRhbGsuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2F0YWxrLmgK
K0Y6CW5ldC9hcHBsZXRhbGsvCisKK0FQUExJRUQgTUlDUk8gKEFQTSkgWC1HRU5FIERFVklDRSBU
UkVFIFNVUFBPUlQKK006CUtodW9uZyBEaW5oIDxraHVvbmdAb3MuYW1wZXJlY29tcHV0aW5nLmNv
bT4KK1M6CVN1cHBvcnRlZAorRjoJYXJjaC9hcm02NC9ib290L2R0cy9hcG0vCisKK0FQUExJRUQg
TUlDUk8gKEFQTSkgWC1HRU5FIFNPQyBFREFDCitNOglLaHVvbmcgRGluaCA8a2h1b25nQG9zLmFt
cGVyZWNvbXB1dGluZy5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9lZGFjL2FwbS14Z2VuZS1lZGFjLnR4dAorRjoJZHJpdmVycy9lZGFjL3hn
ZW5lX2VkYWMuYworCitBUFBMSUVEIE1JQ1JPIChBUE0pIFgtR0VORSBTT0MgRVRIRVJORVQgKFYy
KSBEUklWRVIKK006CUl5YXBwYW4gU3VicmFtYW5pYW4gPGl5YXBwYW5Ab3MuYW1wZXJlY29tcHV0
aW5nLmNvbT4KK006CUtleXVyIENodWRnYXIgPGtleXVyQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUtdjIvCisK
K0FQUExJRUQgTUlDUk8gKEFQTSkgWC1HRU5FIFNPQyBFVEhFUk5FVCBEUklWRVIKK006CUl5YXBw
YW4gU3VicmFtYW5pYW4gPGl5YXBwYW5Ab3MuYW1wZXJlY29tcHV0aW5nLmNvbT4KK006CUtleXVy
IENodWRnYXIgPGtleXVyQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+CitNOglRdWFuIE5ndXllbiA8
cXVhbkBvcy5hbXBlcmVjb21wdXRpbmcuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hcG0teGdlbmUtZW5ldC50eHQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYXBtLXhnZW5lLW1kaW8udHh0CitGOglk
cml2ZXJzL25ldC9ldGhlcm5ldC9hcG0veGdlbmUvCitGOglkcml2ZXJzL25ldC9tZGlvL21kaW8t
eGdlbmUuYworCitBUFBMSUVEIE1JQ1JPIChBUE0pIFgtR0VORSBTT0MgUE1VCitNOglLaHVvbmcg
RGluaCA8a2h1b25nQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURv
Y3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcGVyZi94Z2VuZS1wbXUucnN0CitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGVyZi9hcG0teGdlbmUtcG11LnR4dAorRjoJZHJpdmVy
cy9wZXJmL3hnZW5lX3BtdS5jCisKK0FQUExJRUQgTUlDUk8gUVQyMDI1IFBIWSBEUklWRVIKK006
CUZVSklUQSBUb21vbm9yaSA8ZnVqaXRhLnRvbW9ub3JpQGdtYWlsLmNvbT4KK1I6CVRyZXZvciBH
cm9zcyA8dG1ncm9zc0B1bWljaC5lZHU+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitMOgly
dXN0LWZvci1saW51eEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
bmV0L3BoeS9xdDIwMjUucnMKKworQVBUSU5BIENBTUVSQSBTRU5TT1IgUExMCitNOglMYXVyZW50
IFBpbmNoYXJ0IDxMYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJj
L2FwdGluYS1wbGwuKgorCitBUVVBQ09NUFVURVIgRDUgTkVYVCBQVU1QIFNFTlNPUiBEUklWRVIK
K006CUFsZWtzYSBTYXZpYyA8c2F2aWNhbGVrc2E4M0BnbWFpbC5jb20+CitNOglKYWNrIERvYW4g
PG1lQGphY2tkb2FuLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9hcXVhY29tcHV0ZXJfZDVuZXh0LnJzdAor
RjoJZHJpdmVycy9od21vbi9hcXVhY29tcHV0ZXJfZDVuZXh0LmMKKworQVFVQU5USUEgRVRIRVJO
RVQgRFJJVkVSIChhdGxhbnRpYykKK006CUlnb3IgUnVzc2tpa2ggPGlydXNza2lraEBtYXJ2ZWxs
LmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBz
Oi8vd3d3Lm1hcnZlbGwuY29tLworUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9q
ZWN0L25ldGRldmJwZi9saXN0LworRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9k
cml2ZXJzL2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljLnJzdAorRjoJZHJpdmVycy9uZXQvZXRo
ZXJuZXQvYXF1YW50aWEvYXRsYW50aWMvCisKK0FRVUFOVElBIEVUSEVSTkVUIERSSVZFUiBQVFAg
U1VCU1lTVEVNCitNOglFZ29yIFBvbW96b3YgPGVwb21vem92QG1hcnZlbGwuY29tPgorTDoJbmV0
ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5hcXVhbnRp
YS5jb20KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2FxdWFudGlhL2F0bGFudGljL2FxX3B0cCoK
KworQVIwNTIxIE9OIFNFTUlDT05EVUNUT1IgQ0FNRVJBIFNFTlNPUiBEUklWRVIKK006CUtyenlz
enRvZiBIYcWCYXNhIDxraGFsYXNhQHBpYXAucGw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9tZWRpYS9pMmMvb25ubixhcjA1MjEueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYXIwNTIx
LmMKKworQVJBU0FOIE5BTkQgQ09OVFJPTExFUiBEUklWRVIKK006CU1pcXVlbCBSYXluYWwgPG1p
cXVlbC5yYXluYWxAYm9vdGxpbi5jb20+CitSOglNaWNoYWwgU2ltZWsgPG1pY2hhbC5zaW1la0Bh
bWQuY29tPgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYXJhc2FuLG5hbmQtY29u
dHJvbGxlci55YW1sCitGOglkcml2ZXJzL210ZC9uYW5kL3Jhdy9hcmFzYW4tbmFuZC1jb250cm9s
bGVyLmMKKworQVJDIEZSQU1FQlVGRkVSIERSSVZFUgorTToJSmF5YSBLdW1hciA8amF5YWxrQGlu
dHdvcmtzLmJpej4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvYXJjZmIu
YworRjoJZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2RlZmlvLmMKKworQVJDIFBHVSBEUk0g
RFJJVkVSCitNOglBbGV4ZXkgQnJvZGtpbiA8YWJyb2RraW5Ac3lub3BzeXMuY29tPgorUzoJU3Vw
cG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9zbnBz
LGFyY3BndS50eHQKK0Y6CWRyaXZlcnMvZ3B1L2RybS90aW55L2FyY3BndS5jCisKK0FSQ05FVCBO
RVRXT1JLIExBWUVSCitNOglNaWNoYWVsIEdyemVzY2hpayA8bS5ncnplc2NoaWtAcGVuZ3V0cm9u
aXguZGU+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL25ldC9hcmNuZXQvCitGOglpbmNsdWRlL3VhcGkvbGludXgvaWZfYXJjbmV0LmgKKworQVJN
IEFORCBBUk02NCBTb0MgU1VCLUFSQ0hJVEVDVFVSRVMgKENPTU1PTiBQQVJUUykKK006CUFybmQg
QmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh
ZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJc29jQGxpc3RzLmxp
bnV4LmRldgorUzoJTWFpbnRhaW5lZAorUDoJRG9jdW1lbnRhdGlvbi9wcm9jZXNzL21haW50YWlu
ZXItc29jLnJzdAorQzoJaXJjOi8vaXJjLmxpYmVyYS5jaGF0L2FybWxpbnV4CitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3NvYy9zb2MuZ2l0CitG
OglEb2N1bWVudGF0aW9uL3Byb2Nlc3MvbWFpbnRhaW5lci1zb2MqLnJzdAorRjoJYXJjaC9hcm0v
Ym9vdC9kdHMvTWFrZWZpbGUKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvTWFrZWZpbGUKKworQVJN
IEFSQ0hJVEVDVEVEIFRJTUVSIERSSVZFUgorTToJTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRA
YXJtLmNvbT4KK006CU1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+CitMOglsaW51eC1hcm0t
a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaF90aW1lci5oCitG
OglhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2FyY2hfdGltZXIuaAorRjoJZHJpdmVycy9jbG9ja3Nv
dXJjZS9hcm1fYXJjaF90aW1lci5jCisKK0FSTSBHRU5FUklDIElOVEVSUlVQVCBDT05UUk9MTEVS
IERSSVZFUlMKK006CU1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+CitMOglsaW51eC1hcm0t
a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lu
dGVycnVwdC1jb250cm9sbGVyL2FybSxnaWMqCitGOglhcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNo
X2dpY3YzLmgKK0Y6CWFyY2gvYXJtNjQvaW5jbHVkZS9hc20vYXJjaF9naWN2My5oCitGOglkcml2
ZXJzL2lycWNoaXAvaXJxLWdpYyouW2NoXQorRjoJaW5jbHVkZS9saW51eC9pcnFjaGlwL2FybS1n
aWMqLmgKK0Y6CWluY2x1ZGUvbGludXgvaXJxY2hpcC9hcm0tdmdpYy1pbmZvLmgKKworQVJNIEhE
TENEIERSTSBEUklWRVIKK006CUxpdml1IER1ZGF1IDxsaXZpdS5kdWRhdUBhcm0uY29tPgorUzoJ
U3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9h
cm0saGRsY2QueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL2FybS9oZGxjZF8qCisKK0FSTSBJTlRF
R1JBVE9SLCBWRVJTQVRJTEUgQU5EIFJFQUxWSUVXIFNVUFBPUlQKK006CUxpbnVzIFdhbGxlaWog
PGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m
cmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybSxpbnRlZ3JhdG9y
LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtLHJlYWx2
aWV3LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vYXJtLHZl
cnNhdGlsZS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2Fy
bSx2ZXhwcmVzcy1qdW5vLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9hdXhkaXNwbGF5L2FybSx2ZXJzYXRpbGUtbGNkLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9jbG9jay9hcm0sc3lzY29uLWljc3QueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9hcm0saTJjLXZlcnNhdGlsZS55YW1sCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJt
LHZlcnNhdGlsZS1mcGdhLWlycS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbXRkL210ZC1waHlzbWFwLnlhbWwKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL2FybS9hcm0t
cmVhbHZpZXctKgorRjoJYXJjaC9hcm0vYm9vdC9kdHMvYXJtL2ludGVncmF0b3IqCitGOglhcmNo
L2FybS9ib290L2R0cy9hcm0vdmVyc2F0aWxlKgorRjoJYXJjaC9hcm0vbWFjaC12ZXJzYXRpbGUv
CitGOglkcml2ZXJzL2J1cy9hcm0taW50ZWdyYXRvci1sbS5jCitGOglkcml2ZXJzL2Nsay92ZXJz
YXRpbGUvCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLXZlcnNhdGlsZS5jCitGOglkcml2ZXJz
L2lycWNoaXAvaXJxLXZlcnNhdGlsZS1mcGdhLmMKK0Y6CWRyaXZlcnMvbXRkL21hcHMvcGh5c21h
cC12ZXJzYXRpbGUuKgorRjoJZHJpdmVycy9wb3dlci9yZXNldC9hcm0tdmVyc2F0aWxlLXJlYm9v
dC5jCitGOglkcml2ZXJzL3NvYy92ZXJzYXRpbGUvCisKK0FSTSBJTlRFUkNPTk5FQ1QgUE1VIERS
SVZFUlMKK006CVJvYmluIE11cnBoeSA8cm9iaW4ubXVycGh5QGFybS5jb20+CitTOglTdXBwb3J0
ZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcGVyZi9hcm0tY21uLnJzdAorRjoJRG9j
dW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wZXJmL2FybS1uaS5yc3QKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9wZXJmL2FybSxjbW4ueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3BlcmYvYXJtLG5pLnlhbWwKK0Y6CWRyaXZlcnMvcGVyZi9hcm0t
Y21uLmMKK0Y6CWRyaXZlcnMvcGVyZi9hcm0tbmkuYworRjoJdG9vbHMvcGVyZi9wbXUtZXZlbnRz
L2FyY2gvYXJtNjQvYXJtL2Ntbi8KKworQVJNIEtPTUVEQSBEUk0tS01TIERSSVZFUgorTToJTGl2
aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+CitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBodHRw
czovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYXJtLGtvbWVkYS55YW1sCitGOglE
b2N1bWVudGF0aW9uL2dwdS9rb21lZGEta21zLnJzdAorRjoJZHJpdmVycy9ncHUvZHJtL2FybS9k
aXNwbGF5L2luY2x1ZGUvCitGOglkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhLwor
CitBUk0gTUFMSSBQQU5GUk9TVCBEUk0gRFJJVkVSCitNOglCb3JpcyBCcmV6aWxsb24gPGJvcmlz
LmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgorTToJUm9iIEhlcnJpbmcgPHJvYmhAa2VybmVsLm9y
Zz4KK1I6CVN0ZXZlbiBQcmljZSA8c3RldmVuLnByaWNlQGFybS5jb20+CitMOglkcmktZGV2ZWxA
bGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxh
Yi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9n
cHUvcGFuZnJvc3QucnN0CitGOglkcml2ZXJzL2dwdS9kcm0vY2kveGZhaWxzL3BhbmZyb3N0Kgor
RjoJZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0LworRjoJaW5jbHVkZS91YXBpL2RybS9wYW5mcm9z
dF9kcm0uaAorCitBUk0gTUFMSSBQQU5USE9SIERSTSBEUklWRVIKK006CUJvcmlzIEJyZXppbGxv
biA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+CitNOglTdGV2ZW4gUHJpY2UgPHN0ZXZl
bi5wcmljZUBhcm0uY29tPgorTToJTGl2aXUgRHVkYXUgPGxpdml1LmR1ZGF1QGFybS5jb20+CitM
OglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBo
dHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwdS9hcm0sbWFsaS12YWxoYWxsLWNzZi55
YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFudGhvci8KK0Y6CWluY2x1ZGUvdWFwaS9kcm0vcGFu
dGhvcl9kcm0uaAorCitBUk0gTUFMSS1EUCBEUk0gRFJJVkVSCitNOglMaXZpdSBEdWRhdSA8bGl2
aXUuZHVkYXVAYXJtLmNvbT4KK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZy
ZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcm0sbWFsaWRwLnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
Z3B1L2FmYmMucnN0CitGOglkcml2ZXJzL2dwdS9kcm0vYXJtLworCitBUk0gTUZNIEFORCBGTE9Q
UFkgRFJJVkVSUworTToJSWFuIE1vbHRvbiA8c3B5cm9AZjJzLmNvbT4KK1M6CU1haW50YWluZWQK
K0Y6CWFyY2gvYXJtL2luY2x1ZGUvYXNtL2Zsb3BweS5oCitGOglhcmNoL2FybS9tYWNoLXJwYy9m
bG9wcHlkbWEuUworCitBUk0gUE1VIFBST0ZJTElORyBBTkQgREVCVUdHSU5HCitNOglXaWxsIERl
YWNvbiA8d2lsbEBrZXJuZWwub3JnPgorTToJTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJt
LmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVk
IGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1wZXJmLXVzZXJzQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Fy
bS9wbXUueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BlcmYvCitG
OglhcmNoL2FybSovaW5jbHVkZS9hc20vaHdfYnJlYWtwb2ludC5oCitGOglhcmNoL2FybSovaW5j
bHVkZS9hc20vcGVyZl9ldmVudC5oCitGOglhcmNoL2FybSova2VybmVsL2h3X2JyZWFrcG9pbnQu
YworRjoJYXJjaC9hcm0qL2tlcm5lbC9wZXJmXyoKK0Y6CWRyaXZlcnMvcGVyZi8KK0Y6CWluY2x1
ZGUvbGludXgvcGVyZi9hcm1fcG11Ki5oCisKK0FSTSBQT1JUCitNOglSdXNzZWxsIEtpbmcgPGxp
bnV4QGFybWxpbnV4Lm9yZy51az4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk
Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglPZGQgRml4ZXMKK1c6CWh0
dHA6Ly93d3cuYXJtbGludXgub3JnLnVrLworVDoJZ2l0IGdpdDovL2dpdC5hcm1saW51eC5vcmcu
dWsvfnJtay9saW51eC1hcm0uZ2l0CitGOglhcmNoL2FybS8KK1g6CWFyY2gvYXJtL2Jvb3QvZHRz
LworCitBUk0gUFJJTUVDRUxMIEFBQ0kgUEwwNDEgRFJJVkVSCitNOglSdXNzZWxsIEtpbmcgPGxp
bnV4QGFybWxpbnV4Lm9yZy51az4KK1M6CU9kZCBGaXhlcworRjoJc291bmQvYXJtL2FhY2kuKgor
CitBUk0gUFJJTUVDRUxMIEJVUyBTVVBQT1JUCitNOglSdXNzZWxsIEtpbmcgPGxpbnV4QGFybWxp
bnV4Lm9yZy51az4KK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9hbWJhLworRjoJaW5jbHVkZS9s
aW51eC9hbWJhL2J1cy5oCisKK0FSTSBQUklNRUNFTEwgS01JIFBMMDUwIERSSVZFUgorTToJUnVz
c2VsbCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CitTOglPZGQgRml4ZXMKK0Y6CWRyaXZl
cnMvaW5wdXQvc2VyaW8vYW1iYWttaS4qCitGOglpbmNsdWRlL2xpbnV4L2FtYmEva21pLmgKKwor
QVJNIFBSSU1FQ0VMTCBNTUNJIFBMMTgwLzEgRFJJVkVSCitNOglSdXNzZWxsIEtpbmcgPGxpbnV4
QGFybWxpbnV4Lm9yZy51az4KK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9tbWMvaG9zdC9tbWNp
LioKK0Y6CWluY2x1ZGUvbGludXgvYW1iYS9tbWNpLmgKKworQVJNIFBSSU1FQ0VMTCBQTDM1WCBO
QU5EIENPTlRST0xMRVIgRFJJVkVSCitNOglNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJv
b3RsaW4uY29tPgorUjoJTWljaGFsIFNpbWVrIDxtaWNoYWwuc2ltZWtAYW1kLmNvbT4KK0w6CWxp
bnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2FybSxwbDM1My1uYW5kLXIycDEueWFtbAorRjoJ
ZHJpdmVycy9tdGQvbmFuZC9yYXcvcGwzNXgtbmFuZC1jb250cm9sbGVyLmMKKworQVJNIFBSSU1F
Q0VMTCBQTDM1WCBTTUMgRFJJVkVSCitNOglNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJv
b3RsaW4uY29tPgorUjoJTWljaGFsIFNpbWVrIDxtaWNoYWwuc2ltZWtAYW1kLmNvbT4KK0w6CWxp
bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vi
c2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL2FybSxwbDM1eC1zbWMueWFtbAorRjoJZHJpdmVycy9t
ZW1vcnkvcGwzNTMtc21jLmMKKworQVJNIFBSSU1FQ0VMTCBTU1AgUEwwMjIgU1BJIERSSVZFUgor
TToJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgorTDoJbGludXgtYXJt
LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVy
cykKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9z
cGkvc3BpLXBsMDIyLnlhbWwKK0Y6CWRyaXZlcnMvc3BpL3NwaS1wbDAyMi5jCisKK0FSTSBQUklN
RUNFTEwgVUFSVCBQTDAxMCBBTkQgUEwwMTEgRFJJVkVSUworTToJUnVzc2VsbCBLaW5nIDxsaW51
eEBhcm1saW51eC5vcmcudWs+CitTOglPZGQgRml4ZXMKK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9h
bWJhLXBsMDEqLmMKK0Y6CWluY2x1ZGUvbGludXgvYW1iYS9zZXJpYWwuaAorCitBUk0gUFJJTUVD
RUxMIFZJQyBQTDE5MC9QTDE5MiBEUklWRVIKK006CUxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxl
aWpAbGluYXJvLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAo
bW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXJtLHZpYy55
YW1sCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLXZpYy5jCisKK0FSTSBTTUMgV0FUQ0hET0cgRFJJ
VkVSCitNOglKdWxpdXMgV2VybmVyIDxqd2VybmVyQGNocm9taXVtLm9yZz4KK1I6CUV2YW4gQmVu
biA8ZXZhbmJlbm5AY2hyb21pdW0ub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dhdGNoZG9nL2FybS1zbWMtd2R0LnlhbWwKK0Y6CWRyaXZl
cnMvd2F0Y2hkb2cvYXJtX3NtY193ZHQuYworCitBUk0gU01NVSBEUklWRVJTCitNOglXaWxsIERl
YWNvbiA8d2lsbEBrZXJuZWwub3JnPgorUjoJUm9iaW4gTXVycGh5IDxyb2Jpbi5tdXJwaHlAYXJt
LmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVk
IGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvaW9tbXUvYXJtLHNtbXUqCitGOglkcml2ZXJzL2lvbW11L2FybS8K
K0Y6CWRyaXZlcnMvaW9tbXUvaW8tcGd0YWJsZS1hcm0qCisKK0FSTSBTTU1VIFNWQSBTVVBQT1JU
CitSOglKZWFuLVBoaWxpcHBlIEJydWNrZXIgPGplYW4tcGhpbGlwcGVAbGluYXJvLm9yZz4KK0Y6
CWRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLXN2YS5jCisKK0FSTSBT
VUItQVJDSElURUNUVVJFUworTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0M6CWlyYzov
L2lyYy5saWJlcmEuY2hhdC9hcm1saW51eAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9zb2Mvc29jLmdpdAorRjoJYXJjaC9hcm0vbWFjaC0qLwor
RjoJYXJjaC9hcm0vcGxhdC0qLworCitBUk0vQUNUSU9OUyBTRU1JIEFSQ0hJVEVDVFVSRQorTToJ
QW5kcmVhcyBGw6RyYmVyIDxhZmFlcmJlckBzdXNlLmRlPgorTToJTWFuaXZhbm5hbiBTYWRoYXNp
dmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJu
ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitM
OglsaW51eC1hY3Rpb25zQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL2FybS9hY3Rpb25zLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9jbG9jay9hY3Rpb25zLG93bC1jbXUueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2RtYS9vd2wtZG1hLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9pMmMvaTJjLW93bC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYWN0aW9ucyxvd2wtc2lycS55YW1sCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL293bC1tbWMueWFtbAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9hY3Rpb25zLG93bC1lbWFjLnlhbWwK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2FjdGlvbnMsKgor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2FjdGlvbnMsb3dsLXNw
cy50eHQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aW1lci9hY3Rpb25z
LG93bC10aW1lci55YW1sCitGOglhcmNoL2FybS9ib290L2R0cy9hY3Rpb25zLworRjoJYXJjaC9h
cm0vbWFjaC1hY3Rpb25zLworRjoJYXJjaC9hcm02NC9ib290L2R0cy9hY3Rpb25zLworRjoJZHJp
dmVycy9jbGsvYWN0aW9ucy8KK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItb3dsKgorRjoJ
ZHJpdmVycy9kbWEvb3dsLWRtYS5jCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLW93bC5jCitG
Oglkcml2ZXJzL2lycWNoaXAvaXJxLW93bC1zaXJxLmMKK0Y6CWRyaXZlcnMvbW1jL2hvc3Qvb3ds
LW1tYy5jCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zLworRjoJZHJpdmVycy9waW5j
dHJsL2FjdGlvbnMvKgorRjoJZHJpdmVycy9wbWRvbWFpbi9hY3Rpb25zLworRjoJaW5jbHVkZS9k
dC1iaW5kaW5ncy9wb3dlci9vd2wtKgorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9hY3Rp
b25zLCoKK0Y6CWluY2x1ZGUvbGludXgvc29jL2FjdGlvbnMvCitOOglvd2wKKworQVJNL0FJUk9I
QSBTT0MgU1VQUE9SVAorTToJTWF0dGhpYXMgQnJ1Z2dlciA8bWF0dGhpYXMuYmdnQGdtYWlsLmNv
bT4KK006CUFuZ2Vsb0dpb2FjY2hpbm8gRGVsIFJlZ25vIDxhbmdlbG9naW9hY2NoaW5vLmRlbHJl
Z25vQGNvbGxhYm9yYS5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v
cmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtbWVkaWF0ZWtAbGlz
dHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglPZGQg
Rml4ZXMKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL2Fpcm9oYS8KK0Y6CWFyY2gvYXJtNjQvYm9vdC9k
dHMvYWlyb2hhLworCitBUk0vQWxsd2lubmVyIFNvQyBDbG9jayBTdXBwb3J0CitNOglFbWlsaW8g
TMOzcGV6IDxlbWlsaW9AZWxvcGV6LmNvbS5hcj4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
Y2xrL3N1bnhpLworCitBUk0vQWxsd2lubmVyIHN1blhpIFNvQyBzdXBwb3J0CitNOglDaGVuLVl1
IFRzYWkgPHdlbnNAY3NpZS5vcmc+CitNOglKZXJuZWogU2tyYWJlYyA8amVybmVqLnNrcmFiZWNA
Z21haWwuY29tPgorTToJU2FtdWVsIEhvbGxhbmQgPHNhbXVlbEBzaG9sbGFuZC5vcmc+CitMOgls
aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorTDoJbGludXgtc3VueGlAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3N1
bnhpL2xpbnV4LmdpdAorRjoJYXJjaC9hcm0vbWFjaC1zdW54aS8KK0Y6CWFyY2gvYXJtNjQvYm9v
dC9kdHMvYWxsd2lubmVyLworRjoJZHJpdmVycy9jbGsvc3VueGktbmcvCitGOglkcml2ZXJzL3Bp
bmN0cmwvc3VueGkvCitGOglkcml2ZXJzL3NvYy9zdW54aS8KK046CWFsbHdpbm5lcgorTjoJc3Vu
W3g0NTY3ODldaQorTjoJc3VuWzI1XTBpCisKK0FSTS9BTFBIQVNDQUxFIEFSQ0hJVEVDVFVSRQor
TToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtl
cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykK
K1M6CU9kZCBGaXhlcworRjoJYXJjaC9hcm0vYm9vdC9kdHMvYWxwaGFzY2FsZS8KK0Y6CWRyaXZl
cnMvY2xrL2Nsay1hc205MjYwLmMKK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvYXNtOTI2MF90aW1l
ci5jCitGOglkcml2ZXJzL3J0Yy9ydGMtYXNtOTI2MC5jCitGOglkcml2ZXJzL3dhdGNoZG9nL2Fz
bTkyNjBfd2R0LmMKKworQVJNL0FNRCBQRU5TQU5ETyBBUk02NCBBUkNISVRFQ1RVUkUKK006CUJy
YWQgTGFyc29uIDxibGFyc29uQGFtZC5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvKi9hbWQscGVuc2FuZG8qCitG
OglhcmNoL2FybTY0L2Jvb3QvZHRzL2FtZC9lbGJhKgorCitBUk0vQW1sb2dpYyBNZXNvbiBTb0Mg
Q0xPQ0sgRlJBTUVXT1JLCitNOglOZWlsIEFybXN0cm9uZyA8bmVpbC5hcm1zdHJvbmdAbGluYXJv
Lm9yZz4KK006CUplcm9tZSBCcnVuZXQgPGpicnVuZXRAYmF5bGlicmUuY29tPgorTDoJbGludXgt
YW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svYW1sb2dpYyoKK0Y6CWRyaXZlcnMvY2xrL21l
c29uLworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9hbWxvZ2ljLGExKgorRjoJaW5jbHVk
ZS9kdC1iaW5kaW5ncy9jbG9jay9neGJiKgorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9t
ZXNvbioKKworQVJNL0FtbG9naWMgTWVzb24gU29DIENyeXB0byBEcml2ZXJzCitNOglDb3JlbnRp
biBMYWJiZSA8Y2xhYmJlQGJheWxpYnJlLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5l
bC5vcmcKK0w6CWxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9hbWxvZ2ljKgor
RjoJZHJpdmVycy9jcnlwdG8vYW1sb2dpYy8KKworQVJNL0FtbG9naWMgTWVzb24gU29DIFNvdW5k
IERyaXZlcnMKK006CUplcm9tZSBCcnVuZXQgPGpicnVuZXRAYmF5bGlicmUuY29tPgorTDoJbGlu
dXgtc291bmRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYW1sb2dpYyoKK0Y6CXNvdW5kL3NvYy9tZXNvbi8K
KworQVJNL0FtbG9naWMgTWVzb24gU29DIHN1cHBvcnQKK006CU5laWwgQXJtc3Ryb25nIDxuZWls
LmFybXN0cm9uZ0BsaW5hcm8ub3JnPgorTToJS2V2aW4gSGlsbWFuIDxraGlsbWFuQGJheWxpYnJl
LmNvbT4KK1I6CUplcm9tZSBCcnVuZXQgPGpicnVuZXRAYmF5bGlicmUuY29tPgorUjoJTWFydGlu
IEJsdW1lbnN0aW5nbCA8bWFydGluLmJsdW1lbnN0aW5nbEBnb29nbGVtYWlsLmNvbT4KK0w6CWxp
bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vi
c2NyaWJlcnMpCitMOglsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50
YWluZWQKK1c6CWh0dHA6Ly9saW51eC1tZXNvbi5jb20vCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvcGh5L2FtbG9naWMqCitGOglhcmNoL2FybS9ib290L2R0cy9hbWxvZ2lj
LworRjoJYXJjaC9hcm0vbWFjaC1tZXNvbi8KK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvYW1sb2dp
Yy8KK0Y6CWRyaXZlcnMvcG1kb21haW4vYW1sb2dpYy8KK0Y6CWRyaXZlcnMvbW1jL2hvc3QvbWVz
b24qCitGOglkcml2ZXJzL3BoeS9hbWxvZ2ljLworRjoJZHJpdmVycy9waW5jdHJsL21lc29uLwor
RjoJZHJpdmVycy9ydGMvcnRjLW1lc29uKgorRjoJZHJpdmVycy9zb2MvYW1sb2dpYy8KK046CW1l
c29uCisKK0FSTS9Bbm5hcHVybmEgTGFicyBBTFBJTkUgQVJDSElURUNUVVJFCitNOglBbnRvaW5l
IFRlbmFydCA8YXRlbmFydEBrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p
bmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU9kZCBGaXhl
cworRjoJYXJjaC9hcm0vYm9vdC9kdHMvYW1hem9uLworRjoJYXJjaC9hcm0vbWFjaC1hbHBpbmUv
CitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL2FtYXpvbi8KK0Y6CWRyaXZlcnMvKi8qYWxwaW5lKgor
CitBUk0vQVBQTEUgTUFDSElORSBTT1VORCBEUklWRVJTCitNOglNYXJ0aW4gUG92acWhZXIgPHBv
dmlrK2xpbkBjdXRlYml0Lm9yZz4KK0w6CWFzYWhpQGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgt
c291bmRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvc291bmQvYWRpLHNzbTM1MTUueWFtbAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2NpcnJ1cyxjczQybDg0LnlhbWwKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9hcHBsZSwqCitGOglzb3VuZC9zb2Mv
YXBwbGUvKgorRjoJc291bmQvc29jL2NvZGVjcy9jczQybDgzLWkyYy5jCitGOglzb3VuZC9zb2Mv
Y29kZWNzL2NzNDJsODQuKgorRjoJc291bmQvc29jL2NvZGVjcy9zc20zNTE1LmMKKworQVJNL0FQ
UExFIE1BQ0hJTkUgU1VQUE9SVAorTToJU3ZlbiBQZXRlciA8c3ZlbkBzdmVucGV0ZXIuZGV2Pgor
TToJSmFubmUgR3J1bmF1IDxqQGphbm5hdS5uZXQ+CitSOglBbHlzc2EgUm9zZW56d2VpZyA8YWx5
c3NhQHJvc2VuendlaWcuaW8+CitSOglOZWFsIEdvbXBhIDxuZWFsQGdvbXBhLmRldj4KK0w6CWFz
YWhpQGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu
b3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1c6CWh0
dHBzOi8vYXNhaGlsaW51eC5vcmcKK0I6CWh0dHBzOi8vZ2l0aHViLmNvbS9Bc2FoaUxpbnV4L2xp
bnV4L2lzc3VlcworQzoJaXJjOi8vaXJjLm9mdGMubmV0L2FzYWhpLWRldgorVDoJZ2l0IGh0dHBz
Oi8vZ2l0aHViLmNvbS9Bc2FoaUxpbnV4L2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL2FybS9hcHBsZS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvYXJtL2FwcGxlLyoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9jbG9jay9hcHBsZSxuY28ueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL2NwdWZyZXEvYXBwbGUsY2x1c3Rlci1jcHVmcmVxLnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvYXBwbGUsYWRtYWMueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9hcHBsZSxpMmMueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2FwcGxlLHoyLW11bHRp
dG91Y2gueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVw
dC1jb250cm9sbGVyL2FwcGxlLCoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9pb21tdS9hcHBsZSxkYXJ0LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9pb21tdS9hcHBsZSxzYXJ0LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9sZWRzL2JhY2tsaWdodC9hcHBsZSxkd2ktYmwueWFtbAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYXBwbGUsbWFpbGJveC55YW1sCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9icmNtLGJjbTQzNzct
Ymx1ZXRvb3RoLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9udm1l
L2FwcGxlLG52bWUtYW5zLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9udm1lbS9hcHBsZSxlZnVzZXMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL3BjaS9hcHBsZSxwY2llLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9waW5jdHJsL2FwcGxlLHBpbmN0cmwueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3Bvd2VyL2FwcGxlKgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3B3bS9hcHBsZSxzNWwtZnB3bS55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3Mvc3BpL2FwcGxlLHNwaS55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYXBwbGUsd2R0LnlhbWwKK0Y6CWFyY2gvYXJtNjQvYm9v
dC9kdHMvYXBwbGUvCitGOglkcml2ZXJzL2JsdWV0b290aC9oY2lfYmNtNDM3Ny5jCitGOglkcml2
ZXJzL2Nsay9jbGstYXBwbGUtbmNvLmMKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9hcHBsZS1zb2MtY3B1
ZnJlcS5jCitGOglkcml2ZXJzL2RtYS9hcHBsZS1hZG1hYy5jCitGOglkcml2ZXJzL3BtZG9tYWlu
L2FwcGxlLworRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1wYXNlbWktY29yZS5jCitGOglkcml2
ZXJzL2kyYy9idXNzZXMvaTJjLXBhc2VtaS1wbGF0Zm9ybS5jCitGOglkcml2ZXJzL2lucHV0L3Rv
dWNoc2NyZWVuL2FwcGxlX3oyLmMKK0Y6CWRyaXZlcnMvaW9tbXUvYXBwbGUtZGFydC5jCitGOglk
cml2ZXJzL2lvbW11L2lvLXBndGFibGUtZGFydC5jCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLWFw
cGxlLWFpYy5jCitGOglkcml2ZXJzL252bWUvaG9zdC9hcHBsZS5jCitGOglkcml2ZXJzL252bWVt
L2FwcGxlLWVmdXNlcy5jCitGOglkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1hcHBsZS1ncGlvLmMK
K0Y6CWRyaXZlcnMvcHdtL3B3bS1hcHBsZS5jCitGOglkcml2ZXJzL3NvYy9hcHBsZS8qCitGOglk
cml2ZXJzL3NwaS9zcGktYXBwbGUuYworRjoJZHJpdmVycy92aWRlby9iYWNrbGlnaHQvYXBwbGVf
ZHdpX2JsLmMKK0Y6CWRyaXZlcnMvd2F0Y2hkb2cvYXBwbGVfd2R0LmMKK0Y6CWluY2x1ZGUvZHQt
YmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvYXBwbGUtYWljLmgKK0Y6CWluY2x1ZGUvZHQt
YmluZGluZ3MvcGluY3RybC9hcHBsZS5oCitGOglpbmNsdWRlL2xpbnV4L3NvYy9hcHBsZS8qCitG
OglpbmNsdWRlL3VhcGkvZHJtL2FzYWhpX2RybS5oCisKK0FSTS9BUlRQRUMgTUFDSElORSBTVVBQ
T1JUCitNOglKZXNwZXIgTmlsc3NvbiA8amVzcGVyLm5pbHNzb25AYXhpcy5jb20+CitNOglMYXJz
IFBlcnNzb24gPGxhcnMucGVyc3NvbkBheGlzLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAYXhp
cy5jb20KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9waW5jdHJsL2F4aXMsYXJ0cGVjNi1waW5jdHJsLnR4dAorRjoJYXJjaC9hcm0vYm9vdC9kdHMv
YXhpcy8KK0Y6CWFyY2gvYXJtL21hY2gtYXJ0cGVjCitGOglkcml2ZXJzL2Nsay9heGlzCitGOglk
cml2ZXJzL2NyeXB0by9heGlzCitGOglkcml2ZXJzL21tYy9ob3N0L3VzZGhpNnJvbDAuYworRjoJ
ZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtYXJ0cGVjKgorCitBUk0vQVNQRUVEIEkyQyBEUklWRVIK
K006CVJ5YW4gQ2hlbiA8cnlhbl9jaGVuQGFzcGVlZHRlY2guY29tPgorUjoJQmVuamFtaW4gSGVy
cmVuc2NobWlkdCA8YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPgorUjoJSm9lbCBTdGFubGV5IDxq
b2VsQGptcy5pZC5hdT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK0w6CW9wZW5ibWNA
bGlzdHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2FzcGVlZCxp
MmMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1j
b250cm9sbGVyL2FzcGVlZCxhc3QyNDAwLWkyYy1pYy55YW1sCitGOglkcml2ZXJzL2kyYy9idXNz
ZXMvaTJjLWFzcGVlZC5jCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLWFzcGVlZC1pMmMtaWMuYwor
CitBUk0vQVNQRUVEIE1BQ0hJTkUgU1VQUE9SVAorTToJSm9lbCBTdGFubGV5IDxqb2VsQGptcy5p
ZC5hdT4KK006CUFuZHJldyBKZWZmZXJ5IDxhbmRyZXdAY29kZWNvbnN0cnVjdC5jb20uYXU+CitM
OglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9u
LXN1YnNjcmliZXJzKQorTDoJbGludXgtYXNwZWVkQGxpc3RzLm96bGFicy5vcmcgKG1vZGVyYXRl
ZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitROglodHRwczovL3BhdGNod29y
ay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtYXNwZWVkL2xpc3QvCitUOglnaXQgZ2l0Oi8vZ2l0
Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2pvZWwvYm1jLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hc3BlZWQvCitGOglhcmNoL2FybS9i
b290L2R0cy9hc3BlZWQvCitGOglhcmNoL2FybS9tYWNoLWFzcGVlZC8KK046CWFzcGVlZAorCitB
Uk0vQVhNIExTSSBTT0MKK006CUtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4K
K0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBu
b24tc3Vic2NyaWJlcnMpCitTOglPZGQgRml4ZXMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9hcm0vYXh4aWEueWFtbAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvaW50ZWwvYXht
LworRjoJYXJjaC9hcm0vbWFjaC1heHhpYS8KKworQVJNL0JJVE1BSU4gQVJDSElURUNUVVJFCitN
OglNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8ub3Jn
PgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9y
IG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9hcm0vYml0bWFpbi55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvY2xvY2svYml0bWFpbixibTE4ODAtY2xrLnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2JpdG1haW4sYm0xODgwLXBpbmN0cmwudHh0
CitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL2JpdG1haW4vCitGOglkcml2ZXJzL2Nsay9jbGstYm0x
ODgwLmMKK0Y6CWRyaXZlcnMvcGluY3RybC9waW5jdHJsLWJtMTg4MC5jCisKK0FSTS9CTEFJWkUg
QVJDSElURUNUVVJFCitNOglKYW1lcyBDb3dnaWxsIDxqYW1lcy5jb3dnaWxsQGJsYWl6ZS5jb20+
CitNOglNYXR0IFJlZGZlYXJuIDxtYXR0LnJlZGZlYXJuQGJsYWl6ZS5jb20+CitNOglOZWlsIEpv
bmVzIDxuZWlsLmpvbmVzQGJsYWl6ZS5jb20+CitNOglOaWtvbGFvcyBQYXNhbG91a29zIDxuaWtv
bGFvcy5wYXNhbG91a29zQGJsYWl6ZS5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2JsYWl6ZS55YW1sCitGOglhcmNoL2FybTY0L2Jv
b3QvZHRzL2JsYWl6ZS8KKworQVJNL0NBTFhFREEgSElHSEJBTksgQVJDSElURUNUVVJFCitNOglB
bmRyZSBQcnp5d2FyYSA8YW5kcmUucHJ6eXdhcmFAYXJtLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJu
ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitT
OglNYWludGFpbmVkCitGOglhcmNoL2FybS9ib290L2R0cy9jYWx4ZWRhLworRjoJYXJjaC9hcm0v
bWFjaC1oaWdoYmFuay8KKworQVJNL0NBVklVTSBUSFVOREVSIE5FVFdPUksgRFJJVkVSCitNOglT
dW5pbCBHb3V0aGFtIDxzZ291dGhhbUBtYXJ2ZWxsLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxA
bGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vdGh1bmRlci8KKworQVJN
L0NJUlJVUyBMT0dJQyBCSzMgTUFDSElORSBTVVBQT1JUCitNOglMdWthc3ogTWFqZXdza2kgPGx1
a21hQGRlbnguZGU+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1v
ZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm0v
bWFjaC1lcDkzeHgvdHM3Mnh4LmMKKworQVJNL0NJUlJVUyBMT0dJQyBFUDkzWFggQVJNIEFSQ0hJ
VEVDVFVSRQorTToJSGFydGxleSBTd2VldGVuIDxoc3dlZXRlbkB2aXNpb25lbmdyYXZlcnMuY29t
PgorTToJQWxleGFuZGVyIFN2ZXJkbGluIDxhbGV4YW5kZXIuc3ZlcmRsaW5AZ21haWwuY29tPgor
TToJTmlraXRhIFNodWJpbiA8bmlraXRhLnNodWJpbkBtYXF1ZWZlbC5tZT4KK0w6CWxpbnV4LWFy
bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl
cnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aWlvL2FkYy9jaXJydXMsZXA5MzAxLWFkYy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3Mvc291bmQvY2lycnVzLGVwOTMwMS0qCitGOglhcmNoL2FybS9ib290L2NvbXBy
ZXNzZWQvbWlzYy1lcDkzeHguaAorRjoJYXJjaC9hcm0vbWFjaC1lcDkzeHgvCitGOglkcml2ZXJz
L2lpby9hZGMvZXA5M3h4X2FkYy5jCisKK0FSTS9DTEtERVYgU1VQUE9SVAorTToJUnVzc2VsbCBL
aW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGdpdDovL2dpdC5hcm1saW51eC5vcmcudWsvfnJtay9saW51eC1hcm0uZ2l0IGNs
a2RldgorRjoJZHJpdmVycy9jbGsvY2xrZGV2LmMKKworQVJNL0NPTkVYQU5UIERJR0lDT0xPUiBN
QUNISU5FIFNVUFBPUlQKK006CUJhcnVjaCBTaWFjaCA8YmFydWNoQHRrb3MuY28uaWw+CitMOgls
aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvY254dC8KK046
CWRpZ2ljb2xvcgorCitBUk0vQ09SRVNJR0hUIEZSQU1FV09SSyBBTkQgRFJJVkVSUworTToJU3V6
dWtpIEsgUG91bG9zZSA8c3V6dWtpLnBvdWxvc2VAYXJtLmNvbT4KK1I6CU1pa2UgTGVhY2ggPG1p
a2UubGVhY2hAbGluYXJvLm9yZz4KK1I6CUphbWVzIENsYXJrIDxqYW1lcy5jbGFya0BsaW5hcm8u
b3JnPgorTDoJY29yZXNpZ2h0QGxpc3RzLmxpbmFyby5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvY29yZXNpZ2h0L2xpbnV4Lmdp
dAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY29yZXNpZ2h0LWRldmlj
ZXMtKgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0sY29yZXNp
Z2h0LSoueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0s
ZW1iZWRkZWQtdHJhY2UtZXh0ZW5zaW9uLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9hcm0vYXJtLHRyYWNlLWJ1ZmZlci1leHRlbnNpb24ueWFtbAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9xY29tLGNvcmVzaWdodC0qLnlhbWwKK0Y6
CURvY3VtZW50YXRpb24vdHJhY2UvY29yZXNpZ2h0LyoKK0Y6CWRyaXZlcnMvaHd0cmFjaW5nL2Nv
cmVzaWdodC8qCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2FybS9jb3Jlc2lnaHQtY3RpLWR0LmgK
K0Y6CWluY2x1ZGUvbGludXgvY29yZXNpZ2h0KgorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2NvcmVz
aWdodCoKK0Y6CXNhbXBsZXMvY29yZXNpZ2h0LyoKK0Y6CXRvb2xzL3BlcmYvRG9jdW1lbnRhdGlv
bi9hcm0tY29yZXNpZ2h0LnR4dAorRjoJdG9vbHMvcGVyZi9hcmNoL2FybS91dGlsL2F1eHRyYWNl
LmMKK0Y6CXRvb2xzL3BlcmYvYXJjaC9hcm0vdXRpbC9jcy1ldG0uYworRjoJdG9vbHMvcGVyZi9h
cmNoL2FybS91dGlsL2NzLWV0bS5oCitGOgl0b29scy9wZXJmL2FyY2gvYXJtL3V0aWwvcG11LmMK
K0Y6CXRvb2xzL3BlcmYvdGVzdHMvc2hlbGwvKmNvcmVzaWdodCoKK0Y6CXRvb2xzL3BlcmYvdGVz
dHMvc2hlbGwvY29yZXNpZ2h0LyoKK0Y6CXRvb2xzL3BlcmYvdGVzdHMvc2hlbGwvbGliLypjb3Jl
c2lnaHQqCitGOgl0b29scy9wZXJmL3V0aWwvY3MtZXRtLWRlY29kZXIvKgorRjoJdG9vbHMvcGVy
Zi91dGlsL2NzLWV0bS4qCisKK0FSTS9DT1JUSU5BIFNZU1RFTVMgR0VNSU5JIEFSTSBBUkNISVRF
Q1RVUkUKK006CUhhbnMgVWxsaSBLcm9sbCA8dWxsaS5rcm9sbEBnb29nbGVtYWlsLmNvbT4KK006
CUxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KK0w6CWxpbnV4LWFybS1r
ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMp
CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0aHViLmNvbS91bGxpLWtyb2xsL2xpbnV4
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9nZW1pbmkueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jb3J0aW5hLGdlbWlu
aS1ldGhlcm5ldC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGlu
Y3RybC9jb3J0aW5hLGdlbWluaS1waW5jdHJsLnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL3J0Yy9mYXJhZGF5LGZ0cnRjMDEwLnlhbWwKK0Y6CWFyY2gvYXJtL2Jvb3Qv
ZHRzL2dlbWluaS8KK0Y6CWFyY2gvYXJtL21hY2gtZ2VtaW5pLworRjoJZHJpdmVycy9jcnlwdG8v
Z2VtaW5pLworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS8KK0Y6CWRyaXZlcnMvcGlu
Y3RybC9waW5jdHJsLWdlbWluaS5jCitGOglkcml2ZXJzL3J0Yy9ydGMtZnRydGMwMTAuYworCitB
Uk0vQ1ouTklDIFRVUlJJUyBTVVBQT1JUCitNOglNYXJlayBCZWjDum4gPGthYmVsQGtlcm5lbC5v
cmc+CitTOglNYWludGFpbmVkCitXOglodHRwczovL3d3dy50dXJyaXMuY3ovCitGOglEb2N1bWVu
dGF0aW9uL0FCSS90ZXN0aW5nL2RlYnVnZnMtbW94dGV0CitGOglEb2N1bWVudGF0aW9uL0FCSS90
ZXN0aW5nL3N5c2ZzLWJ1cy1pMmMtZGV2aWNlcy10dXJyaXMtb21uaWEtbWN1CitGOglEb2N1bWVu
dGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1tb3h0ZXQtZGV2aWNlcworRjoJRG9jdW1lbnRh
dGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2FyZS10dXJyaXMtbW94LXJ3dG0KK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvbW94dGV0LnR4dAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Zpcm13YXJlL2N6bmljLHR1cnJpcy1tb3gtcnd0bS50
eHQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9maXJtd2FyZS9jem5pYyx0
dXJyaXMtb21uaWEtbWN1LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9ncGlvL2dwaW8tbW94dGV0LnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2ludGVycnVwdC1jb250cm9sbGVyL21hcnZlbGwsbXBpYy55YW1sCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9jem5pYyx0dXJyaXMtb21uaWEtbGVkcy55YW1s
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvYXJtYWRhLTM3
eHgtd2R0LnR4dAorRjoJZHJpdmVycy9idXMvbW94dGV0LmMKK0Y6CWRyaXZlcnMvZmlybXdhcmUv
dHVycmlzLW1veC1yd3RtLmMKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLW1veHRldC5jCitGOglkcml2
ZXJzL2xlZHMvbGVkcy10dXJyaXMtb21uaWEuYworRjoJZHJpdmVycy9tYWlsYm94L2FybWFkYS0z
N3h4LXJ3dG0tbWFpbGJveC5jCitGOglkcml2ZXJzL3BsYXRmb3JtL2N6bmljLworRjoJZHJpdmVy
cy93YXRjaGRvZy9hcm1hZGFfMzd4eF93ZHQuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9idXMv
bW94dGV0LmgKK0Y6CWluY2x1ZGUvbGludXgvYXJtYWRhLTM3eHgtcnd0bS1tYWlsYm94LmgKK0Y6
CWluY2x1ZGUvbGludXgvbW94dGV0LmgKK0Y6CWluY2x1ZGUvbGludXgvdHVycmlzLW9tbmlhLW1j
dS1pbnRlcmZhY2UuaAorCitBUk0vRkFSQURBWSBGQTUyNiBQT1JUCitNOglIYW5zIFVsbGkgS3Jv
bGwgPHVsbGkua3JvbGxAZ29vZ2xlbWFpbC5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3Rz
LmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRh
aW5lZAorVDoJZ2l0IGdpdDovL2dpdC5iZXJsaW9zLmRlL2dlbWluaS1ib2FyZAorRjoJYXJjaC9h
cm0vbW0vKi1mYSoKKworQVJNL0ZPT1RCUklER0UgQVJDSElURUNUVVJFCitNOglSdXNzZWxsIEtp
bmcgPGxpbnV4QGFybWxpbnV4Lm9yZy51az4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m
cmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVk
CitXOglodHRwOi8vd3d3LmFybWxpbnV4Lm9yZy51ay8KK0Y6CWFyY2gvYXJtL2luY2x1ZGUvYXNt
L2hhcmR3YXJlL2RlYzIxMjg1LmgKK0Y6CWFyY2gvYXJtL21hY2gtZm9vdGJyaWRnZS8KKworQVJN
L0ZSRUVTQ0FMRSBJTVggLyBNWEMgQVJNIEFSQ0hJVEVDVFVSRQorTToJU2hhd24gR3VvIDxzaGF3
bmd1b0BrZXJuZWwub3JnPgorTToJU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRl
PgorUjoJUGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT4KK1I6
CUZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdtYWlsLmNvbT4KK0w6CWlteEBsaXN0cy5saW51eC5k
ZXYKK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZv
ciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3NoYXduZ3VvL2xpbnV4LmdpdAorRjoJYXJj
aC9hcm0vYm9vdC9kdHMvbnhwL2lteC8KK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL254cC9teHMvCitG
OglhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS8KK1g6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvCitYOglhcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2Fs
ZS9mc2wtKgorWDoJYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvcW9yaXEtKgorWDoJZHJp
dmVycy9tZWRpYS9pMmMvCitOOglpbXgKK046CW14cworTjoJXGJteGNbXlxkXQorCitBUk0vRlJF
RVNDQUxFIExBWUVSU0NBUEUgQVJNIEFSQ0hJVEVDVFVSRQorTToJU2hhd24gR3VvIDxzaGF3bmd1
b0BrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnICht
b2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc2hhd25ndW8vbGludXgu
Z2l0CitGOglhcmNoL2FybS9ib290L2R0cy9ueHAvbHMvCitGOglhcmNoL2FybTY0L2Jvb3QvZHRz
L2ZyZWVzY2FsZS9mc2wtKgorRjoJYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvcW9yaXEt
KgorCitBUk0vRlJFRVNDQUxFIFZZQlJJRCBBUk0gQVJDSElURUNUVVJFCitNOglTaGF3biBHdW8g
PHNoYXduZ3VvQGtlcm5lbC5vcmc+CitNOglTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9u
aXguZGU+CitSOglQZW5ndXRyb25peCBLZXJuZWwgVGVhbSA8a2VybmVsQHBlbmd1dHJvbml4LmRl
PgorUjoJU3RlZmFuIEFnbmVyIDxzdGVmYW5AYWduZXIuY2g+CitMOglsaW51eC1hcm0ta2VybmVs
QGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC9zaGF3bmd1by9saW51eC5naXQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL254cC92Zi8K
K0Y6CWFyY2gvYXJtL21hY2gtaW14Lyp2ZjYxMCoKKworQVJNL0dVTVNUSVggTUFDSElORSBTVVBQ
T1JUCitNOglTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWFybS1r
ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMp
CitTOglNYWludGFpbmVkCisKK0FSTS9ISVNJTElDT04gU09DIFNVUFBPUlQKK006CVdlaSBYdSA8
eHV3ZWk1QGhpc2lsaWNvbi5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh
ZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitXOglo
dHRwOi8vd3d3Lmhpc2lsaWNvbi5jb20KK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vaGlzaWxp
Y29uL2xpbnV4LWhpc2kuZ2l0CitGOglhcmNoL2FybS9ib290L2R0cy9oaXNpbGljb24vCitGOglh
cmNoL2FybS9tYWNoLWhpc2kvCitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL2hpc2lsaWNvbi8KKwor
QVJNL0hQIEpPUk5BREEgN1hYIE1BQ0hJTkUgU1VQUE9SVAorTToJS3Jpc3RvZmZlciBFcmljc29u
IDxrcmlzdG9mZmVyLmVyaWNzb25AZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorVzoJd3d3Lmps
aW1lLmNvbQorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs
L2dpdC9rcmlzdG9mZmVyL2xpbnV4LWhwYy5naXQKK0Y6CWFyY2gvYXJtL21hY2gtc2ExMTAwL2lu
Y2x1ZGUvbWFjaC9qb3JuYWRhNzIwLmgKK0Y6CWFyY2gvYXJtL21hY2gtc2ExMTAwL2pvcm5hZGE3
MjAuYworCitBUk0vSFBFIEdYUCBBUkNISVRFQ1RVUkUKK006CUplYW4tTWFyaWUgVmVyZHVuIDx2
ZXJkdW5AaHBlLmNvbT4KK006CU5pY2sgSGF3a2lucyA8bmljay5oYXdraW5zQGhwZS5jb20+CitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2hw
ZSxneHAueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2hw
ZSxneHAtZmFuLWN0cmwueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2kyYy9ocGUsZ3hwLWkyYy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvc3BpL2hwZSxneHAtc3BpZmkueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL3RpbWVyL2hwZSxneHAtdGltZXIueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9n
eHAtZmFuLWN0cmwucnN0CitGOglhcmNoL2FybS9ib290L2R0cy9ocGUvCitGOglhcmNoL2FybS9t
YWNoLWhwZS8KK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItZ3hwLmMKK0Y6CWRyaXZlcnMv
aHdtb24vZ3hwLWZhbi1jdHJsLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZ3hwLmMKK0Y6
CWRyaXZlcnMvc3BpL3NwaS1neHAuYworRjoJZHJpdmVycy93YXRjaGRvZy9neHAtd2R0LmMKKwor
QVJNL0lHRVAgTUFDSElORSBTVVBQT1JUCitNOglFbnJpYyBCYWxsZXRibyBpIFNlcnJhIDxlYmFs
bGV0Ym9AZ21haWwuY29tPgorTToJSmF2aWVyIE1hcnRpbmV6IENhbmlsbGFzIDxqYXZpZXJAZG93
aGlsZTAub3JnPgorTDoJbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1r
ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMp
CitTOglNYWludGFpbmVkCitGOglhcmNoL2FybS9ib290L2R0cy90aS9vbWFwL29tYXAzLWlnZXAq
CisKK0FSTS9JTlRFTCBJWFA0WFggQVJNIEFSQ0hJVEVDVFVSRQorTToJTGludXMgV2FsbGVpaiA8
bGludXN3QGtlcm5lbC5vcmc+CitNOglJbXJlIEthbG96IDxrYWxvekBvcGVud3J0Lm9yZz4KK0w6
CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24t
c3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvYXJtL2ludGVsLWl4cDR4eC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvZ3Bpby9pbnRlbCxpeHA0eHgtZ3Bpby55YW1sCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvaW50ZWwsaXhwNHh4LWlu
dGVycnVwdC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5
LWNvbnRyb2xsZXJzL2ludGVsLGl4cDR4eC1leHBhbnNpb24qCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvcm5nL2ludGVsLGl4cDQ2eC1ybmcueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RpbWVyL2ludGVsLGl4cDR4eC10aW1lci55YW1sCitG
OglhcmNoL2FybS9ib290L2R0cy9pbnRlbC9peHAvCitGOglhcmNoL2FybS9tYWNoLWl4cDR4eC8K
K0Y6CWRyaXZlcnMvYnVzL2ludGVsLWl4cDR4eC1lYi5jCitGOglkcml2ZXJzL2NoYXIvaHdfcmFu
ZG9tL2l4cDR4eC1ybmcuYworRjoJZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1peHA0eHguYwor
RjoJZHJpdmVycy9jcnlwdG8vaW50ZWwvaXhwNHh4L2l4cDR4eF9jcnlwdG8uYworRjoJZHJpdmVy
cy9ncGlvL2dwaW8taXhwNHh4LmMKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtaXhwNHh4LmMKK0Y6
CWRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMKK0Y6CWRyaXZlcnMvbmV0
L3dhbi9peHA0eHhfaHNzLmMKK0Y6CWRyaXZlcnMvc29jL2l4cDR4eC9peHA0eHgtbnBlLmMKK0Y6
CWRyaXZlcnMvc29jL2l4cDR4eC9peHA0eHgtcW1nci5jCitGOglpbmNsdWRlL2xpbnV4L3NvYy9p
eHA0eHgvbnBlLmgKK0Y6CWluY2x1ZGUvbGludXgvc29jL2l4cDR4eC9xbWdyLmgKKworQVJNL0lO
VEVMIEtFRU1CQVkgQVJDSElURUNUVVJFCitNOglQYXVsIEouIE11cnBoeSA8cGF1bC5qLm11cnBo
eUBpbnRlbC5jb20+CitNOglEYW5pZWxlIEFsZXNzYW5kcmVsbGkgPGRhbmllbGUuYWxlc3NhbmRy
ZWxsaUBpbnRlbC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvYXJtL2ludGVsLGtlZW1iYXkueWFtbAorRjoJYXJjaC9hcm02NC9ib290L2R0
cy9pbnRlbC9rZWVtYmF5LWV2bS5kdHMKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvaW50ZWwva2Vl
bWJheS1zb2MuZHRzaQorCitBUk0vSU5URUwgWFNDMyAoTUFOWkFOTykgQVJNIENPUkUKK006CUxl
bm5lcnQgQnV5dGVuaGVrIDxrZXJuZWxAd2FudHN0b2ZseS5vcmc+CitMOglsaW51eC1hcm0ta2Vy
bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQor
UzoJTWFpbnRhaW5lZAorCitBUk0vTEcxSyBBUkNISVRFQ1RVUkUKK006CUNoYW5obyBNaW4gPGNo
YW5oby5taW5AbGdlLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglhcmNo
L2FybTY0L2Jvb3QvZHRzL2xnLworCitBUk0vTFBDMThYWCBBUkNISVRFQ1RVUkUKK006CVZsYWRp
bWlyIFphcG9sc2tpeSA8dnpAbWxlaWEuY29tPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p
bmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvbnhwLGxwYzE3ODgt
aTJjLnlhbWwKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL254cC9scGMvbHBjNDMqCitGOglkcml2ZXJz
L2kyYy9idXNzZXMvaTJjLWxwYzJrLmMKK0Y6CWRyaXZlcnMvbWVtb3J5L3BsMTcyLmMKK0Y6CWRy
aXZlcnMvbXRkL3NwaS1ub3IvY29udHJvbGxlcnMvbnhwLXNwaWZpLmMKK0Y6CWRyaXZlcnMvcnRj
L3J0Yy1scGMyNHh4LmMKK046CWxwYzE4eHgKKworQVJNL0xQQzMyWFggU09DIFNVUFBPUlQKK006
CVZsYWRpbWlyIFphcG9sc2tpeSA8dnpAbWxlaWEuY29tPgorTToJUGlvdHIgV29qdGFzemN6eWsg
PHBpb3RyLndvanRhc3pjenlrQHRpbWVzeXMuY29tPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0
cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50
YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXRodWIuY29tL3Z6YXBvbHNraXkvbGludXgtbHBjMzJ4eC5n
aXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvbnhwLHBueC1pMmMu
eWFtbAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvbnhwL2xwYy9scGMzMioKK0Y6CWFyY2gvYXJtL21h
Y2gtbHBjMzJ4eC8KK0Y6CWRyaXZlcnMvZG1hL2xwYzMyeHgtZG1hbXV4LmMKK0Y6CWRyaXZlcnMv
aTJjL2J1c3Nlcy9pMmMtcG54LmMKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L254cC9scGNfZXRo
LmMKK0Y6CWRyaXZlcnMvdXNiL2hvc3Qvb2hjaS1ueHAuYworRjoJZHJpdmVycy93YXRjaGRvZy9w
bng0MDA4X3dkdC5jCitOOglscGMzMnh4CisKK0xQQzMyWFggRE1BTVVYIFNVUFBPUlQKK006CUou
TS5CLiBEb3duaW5nIDxqb25hdGhhbi5kb3duaW5nQG5hdXRlbC5jb20+CitNOglQaW90ciBXb2p0
YXN6Y3p5ayA8cGlvdHIud29qdGFzemN6eWtAdGltZXN5cy5jb20+CitSOglWbGFkaW1pciBaYXBv
bHNraXkgPHZ6QG1sZWlhLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk
Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL254cCxscGMzMjIwLWRtYW11eC55
YW1sCisKK0FSTS9NYXJ2ZWxsIERvdmUvTVY3OHh4MC9PcmlvbiBTT0Mgc3VwcG9ydAorTToJQW5k
cmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgorTToJU2ViYXN0aWFuIEhlc3NlbGJhcnRoIDxzZWJh
c3RpYW4uaGVzc2VsYmFydGhAZ21haWwuY29tPgorTToJR3JlZ29yeSBDbGVtZW50IDxncmVnb3J5
LmNsZW1lbnRAYm9vdGxpbi5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh
ZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9nY2xlbWVu
dC9tdmVidS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vbWFy
dmVsbC9tYXJ2ZWxsLGRvdmUudHh0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvYXJtL21hcnZlbGwvbWFydmVsbCxvcmlvbjV4LnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3NvYy9kb3ZlLworRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9k
b3ZlKgorRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9vcmlvbjV4KgorRjoJYXJjaC9hcm0v
bWFjaC1kb3ZlLworRjoJYXJjaC9hcm0vbWFjaC1tdjc4eHgwLworRjoJYXJjaC9hcm0vbWFjaC1v
cmlvbjV4LworRjoJYXJjaC9hcm0vcGxhdC1vcmlvbi8KK0Y6CWRyaXZlcnMvYnVzL212ZWJ1LW1i
dXMuYworRjoJZHJpdmVycy9zb2MvZG92ZS8KKworQVJNL01hcnZlbGwgS2lya3dvb2QgYW5kIEFy
bWFkYSAzNzAsIDM3NSwgMzh4LCAzOXgsIFhQLCAzNzAwLCA3Sy84SywgQ045MTMwIFNPQyBzdXBw
b3J0CitNOglBbmRyZXcgTHVubiA8YW5kcmV3QGx1bm4uY2g+CitNOglHcmVnb3J5IENsZW1lbnQg
PGdyZWdvcnkuY2xlbWVudEBib290bGluLmNvbT4KK006CVNlYmFzdGlhbiBIZXNzZWxiYXJ0aCA8
c2ViYXN0aWFuLmhlc3NlbGJhcnRoQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlz
dHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWlu
dGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L2djbGVtZW50L212ZWJ1LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2FybS9tYXJ2ZWxsLworRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9hcm1hZGEqCitG
OglhcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2tpcmt3b29kKgorRjoJYXJjaC9hcm0vY29uZmln
cy9tdmVidV8qX2RlZmNvbmZpZworRjoJYXJjaC9hcm0vbWFjaC1tdmVidS8KK0Y6CWFyY2gvYXJt
NjQvYm9vdC9kdHMvbWFydmVsbC8KK0Y6CWRyaXZlcnMvY2xrL212ZWJ1LworRjoJZHJpdmVycy9j
cHVmcmVxL2FybWFkYS0zN3h4LWNwdWZyZXEuYworRjoJZHJpdmVycy9jcHVmcmVxL2FybWFkYS04
ay1jcHVmcmVxLmMKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9tdmVidS1jcHVmcmVxLmMKK0Y6CWRyaXZl
cnMvaXJxY2hpcC9pcnEtYXJtYWRhLTM3MC14cC5jCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLW12
ZWJ1LSoKK0Y6CWRyaXZlcnMvcGluY3RybC9tdmVidS8KK0Y6CWRyaXZlcnMvcnRjL3J0Yy1hcm1h
ZGEzOHguYworCitBUk0vTWVkaWF0ZWsgUlRDIERSSVZFUgorTToJRWRkaWUgSHVhbmcgPGVkZGll
Lmh1YW5nQG1lZGlhdGVrLmNvbT4KK006CVNlYW4gV2FuZyA8c2Vhbi53YW5nQG1lZGlhdGVrLmNv
bT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZv
ciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1tZWRpYXRla0BsaXN0cy5pbmZyYWRlYWQub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMvbWVkaWF0ZWssbXQyNzEyLXJ0Yy55YW1s
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL21lZGlhdGVrLG10NzYy
Mi1ydGMueWFtbAorRjoJZHJpdmVycy9ydGMvcnRjLW10MjcxMi5jCitGOglkcml2ZXJzL3J0Yy9y
dGMtbXQ2Mzk3LmMKK0Y6CWRyaXZlcnMvcnRjL3J0Yy1tdDc2MjIuYworCitBUk0vTWVkaWF0ZWsg
U29DIHN1cHBvcnQKK006CU1hdHRoaWFzIEJydWdnZXIgPG1hdHRoaWFzLmJnZ0BnbWFpbC5jb20+
CitNOglBbmdlbG9HaW9hY2NoaW5vIERlbCBSZWdubyA8YW5nZWxvZ2lvYWNjaGluby5kZWxyZWdu
b0Bjb2xsYWJvcmEuY29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGlu
dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJz
Y3JpYmVycykKK0w6CWxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRl
ZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9tdGsud2lr
aS5rZXJuZWwub3JnLworQzoJaXJjOi8vaXJjLmxpYmVyYS5jaGF0L2xpbnV4LW1lZGlhdGVrCitG
OglhcmNoL2FybS9ib290L2R0cy9tZWRpYXRlay8KK0Y6CWFyY2gvYXJtL21hY2gtbWVkaWF0ZWsv
CitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL21lZGlhdGVrLworRjoJZHJpdmVycy9zb2MvbWVkaWF0
ZWsvCitOOgltdGsKK046CW10WzI2NzhdCitLOgltZWRpYXRlaworCitBUk0vTWVkaWF0ZWsgVVNC
MyBQSFkgRFJJVkVSCitNOglDaHVuZmVuZyBZdW4gPGNodW5mZW5nLnl1bkBtZWRpYXRlay5jb20+
CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Ig
bm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMuaW5mcmFkZWFkLm9yZyAo
bW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L21lZGlhdGVrLCoKK0Y6CWRyaXZlcnMvcGh5
L21lZGlhdGVrLworCitBUk0vTUlDUk9DSElQIChBUk02NCkgU29DIHN1cHBvcnQKK006CUNvbm9y
IERvb2xleSA8Y29ub3JAa2VybmVsLm9yZz4KK006CU5pY29sYXMgRmVycmUgPG5pY29sYXMuZmVy
cmVAbWljcm9jaGlwLmNvbT4KK006CUNsYXVkaXUgQmV6bmVhIDxjbGF1ZGl1LmJlem5lYUB0dXhv
bi5kZXY+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRl
ZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYXQ5MS9saW51eC5naXQKK0Y6CWFy
Y2gvYXJtNjQvYm9vdC9kdHMvbWljcm9jaGlwLworCitBUk0vTWljcm9jaGlwIChBVDkxKSBTb0Mg
c3VwcG9ydAorTToJTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBtaWNyb2NoaXAuY29tPgor
TToJQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4uY29tPgorTToJ
Q2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRldj4KK0w6CWxpbnV4LWFybS1r
ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMp
CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93d3cubGludXg0c2FtLm9yZworVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hdDkxL2xpbnV4LmdpdAor
RjoJYXJjaC9hcm0vYm9vdC9kdHMvbWljcm9jaGlwLworRjoJYXJjaC9hcm0vaW5jbHVkZS9kZWJ1
Zy9hdDkxLlMKK0Y6CWFyY2gvYXJtL21hY2gtYXQ5MS8KK0Y6CWRyaXZlcnMvbWVtb3J5L2F0bWVs
KgorRjoJZHJpdmVycy93YXRjaGRvZy9zYW1hNWQ0X3dkdC5jCitGOglpbmNsdWRlL3NvYy9hdDkx
LworWDoJZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9hdG1lbF9teHRfdHMuYworTjoJYXQ5MQor
TjoJYXRtZWwKKworQVJNL01pY3JvY2hpcCBTcGFyeDUgU29DIHN1cHBvcnQKK006CVN0ZWVuIEhl
Z2VsdW5kIDxTdGVlbi5IZWdlbHVuZEBtaWNyb2NoaXAuY29tPgorTToJRGFuaWVsIE1hY2hvbiA8
ZGFuaWVsLm1hY2hvbkBtaWNyb2NoaXAuY29tPgorTToJVU5HTGludXhEcml2ZXJAbWljcm9jaGlw
LmNvbQorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQg
Zm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRlZAorRjoJYXJjaC9hcm02NC9ib290L2R0
cy9taWNyb2NoaXAvc3BhcngqCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNh
cC8KK0Y6CWRyaXZlcnMvcGluY3RybC9waW5jdHJsLW1pY3JvY2hpcC1zZ3Bpby5jCitOOglzcGFy
eDUKKworQVJNL01JTEJFQVVUIEFSQ0hJVEVDVFVSRQorTToJVGFpY2hpIFN1Z2F5YSA8c3VnYXlh
LnRhaWNoaUBzb2Npb25leHQuY29tPgorTToJVGFrYW8gT3JpdG8gPG9yaXRvLnRha2FvQHNvY2lv
bmV4dC5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVy
YXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm0vYm9v
dC9kdHMvc29jaW9uZXh0L21pbGJlYXV0KgorRjoJYXJjaC9hcm0vbWFjaC1taWxiZWF1dC8KK046
CW1pbGJlYXV0CisKK0FSTS9NT1JFTExPIFBMQVRGT1JNCitNOglWaW5jZW56byBGcmFzY2lubyA8
dmluY2Vuem8uZnJhc2Npbm9AYXJtLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m
cmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2FybSxtb3JlbGxvLnlh
bWwKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvYXJtL21vcmVsbG8qCisKK0FSTS9NT1hBIEFSVCBT
T0MKK006CUtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFy
bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl
cnMpCitTOglPZGQgRml4ZXMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9h
cm0vbW94YXJ0LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9j
ay9tb3hhLG1veGFydC1jbG9jay50eHQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL21veGEvCitGOglk
cml2ZXJzL2Nsay9jbGstbW94YXJ0LmMKKworQVJNL01TdGFyL1NpZ21hc3RhciBBcm12NyBTb0Mg
c3VwcG9ydAorTToJRGFuaWVsIFBhbG1lciA8ZGFuaWVsQHRoaW5neS5qcD4KK006CVJvbWFpbiBQ
ZXJpZXIgPHJvbWFpbi5wZXJpZXJAZ21haWwuY29tPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0
cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50
YWluZWQKK1c6CWh0dHA6Ly9saW51eC1jaGVueGluZy5vcmcvCitUOglnaXQgZ2l0Oi8vZ2l0aHVi
LmNvbS9saW51eC1jaGVueGluZy9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9hcm0vbXN0YXIvKgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2Nsb2NrL21zdGFyLG1zYzMxMy1tcGxsLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9ncGlvL21zdGFyLG1zYzMxMy1ncGlvLnlhbWwKK0Y6CWFyY2gvYXJtL2Jv
b3QvZHRzL3NpZ21hc3Rhci8KK0Y6CWFyY2gvYXJtL21hY2gtbXN0YXIvCitGOglkcml2ZXJzL2Ns
ay9tc3Rhci8KK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXItbXNjMzEzZS5jCitGOglkcml2
ZXJzL2dwaW8vZ3Bpby1tc2MzMTMuYworRjoJZHJpdmVycy9ydGMvcnRjLW1zYzMxMy5jCitGOglk
cml2ZXJzL3dhdGNoZG9nL21zYzMxM2Vfd2R0LmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv
Y2svbXN0YXItKgorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9ncGlvL21zYzMxMy1ncGlvLmgKKwor
QVJNL05PTUFESUsvVXg1MDAgQVJDSElURUNUVVJFUworTToJTGludXMgV2FsbGVpaiA8bGludXMu
d2FsbGVpakBsaW5hcm8ub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu
b3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdp
dCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbGludXN3L2xp
bnV4LW5vbWFkaWsuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJt
L3N0ZS0qCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3V4NTAwLnlh
bWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdXg1MDAvCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zdCxub21hZGlrLWdwaW8ueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9zdCxub21hZGlrLWky
Yy55YW1sCitGOglhcmNoL2FybS9ib290L2R0cy9zdC9zdGUtKgorRjoJYXJjaC9hcm0vbWFjaC1u
b21hZGlrLworRjoJYXJjaC9hcm0vbWFjaC11eDUwMC8KK0Y6CWRyaXZlcnMvY2xrL2Nsay1ub21h
ZGlrLmMKK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvY2xrc3JjLWRieDUwMC1wcmNtdS5jCitGOglk
cml2ZXJzL2RtYS9zdGVfZG1hNDAqCitGOglkcml2ZXJzL3BtZG9tYWluL3N0L3N0ZS11eDUwMC1w
bS1kb21haW4uYworRjoJZHJpdmVycy9ncGlvL2dwaW8tbm9tYWRpay5jCitGOglkcml2ZXJzL2h3
c3BpbmxvY2svdTg1MDBfaHNlbS5jCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsu
YworRjoJZHJpdmVycy9paW8vYWRjL2FiODUwMC1ncGFkYy5jCitGOglkcml2ZXJzL21mZC9hYjg1
MDAqCitGOglkcml2ZXJzL21mZC9hYng1MDAqCitGOglkcml2ZXJzL21mZC9kYjg1MDAqCitGOglk
cml2ZXJzL3BpbmN0cmwvbm9tYWRpay8KK0Y6CWRyaXZlcnMvcnRjL3J0Yy1hYjg1MDAuYworRjoJ
ZHJpdmVycy9ydGMvcnRjLXBsMDMxLmMKK0Y6CWRyaXZlcnMvc29jL3V4NTAwLworCitBUk0vTlVW
T1RPTiBNQTM1IEFSQ0hJVEVDVFVSRQorTToJSmFja3kgSHVhbmcgPHljaHVhbmczQG51dm90b24u
Y29tPgorTToJU2hhbi1DaHVuIEh1bmcgPHNjaHVuZ0BudXZvdG9uLmNvbT4KK0w6CWxpbnV4LWFy
bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl
cnMpCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8q
LyovKm1hMzUqCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvKi8qbWEzNSoK
K0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvbnV2b3Rvbi8qbWEzNSoKK0Y6CWRyaXZlcnMvKi8qLypt
YTM1KgorRjoJZHJpdmVycy8qLyptYTM1KgorSzoJbWEzNWQxCisKK0FSTS9OVVZPVE9OIE5QQ00g
QVJDSElURUNUVVJFCitNOglBdmkgRmlzaG1hbiA8YXZpZmlzaG1hbjcwQGdtYWlsLmNvbT4KK006
CVRvbWVyIE1haW1vbiA8dG1haW1vbjc3QGdtYWlsLmNvbT4KK006CVRhbGkgUGVycnkgPHRhbGku
cGVycnkxQGdtYWlsLmNvbT4KK1I6CVBhdHJpY2sgVmVudHVyZSA8dmVudHVyZUBnb29nbGUuY29t
PgorUjoJTmFuY3kgWXVlbiA8eXVlbm5AZ29vZ2xlLmNvbT4KK1I6CUJlbmphbWluIEZhaXIgPGJl
bmphbWluZmFpckBnb29nbGUuY29tPgorTDoJb3BlbmJtY0BsaXN0cy5vemxhYnMub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzLyovKi8qbnBjbSoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy8qLypucGNtKgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3J0Yy9udXZvdG9uLG5jdDMwMTh5LnlhbWwKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL251dm90
b24vbnV2b3Rvbi1ucGNtKgorRjoJYXJjaC9hcm0vbWFjaC1ucGNtLworRjoJYXJjaC9hcm02NC9i
b290L2R0cy9udXZvdG9uLworRjoJZHJpdmVycy8qLyovKm5wY20qCitGOglkcml2ZXJzLyovKm5w
Y20qCitGOglkcml2ZXJzL3J0Yy9ydGMtbmN0MzAxOHkuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5n
cy9jbG9jay9udXZvdG9uLG5wY203eHgtY2xvY2suaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9j
bG9jay9udXZvdG9uLG5wY204NDUtY2xrLmgKKworQVJNL05VVk9UT04gTlBDTSBWSURFTyBFTkdJ
TkUgRFJJVkVSCitNOglKb3NlcGggTGl1IDxrd2xpdUBudXZvdG9uLmNvbT4KK006CU1hcnZpbiBM
aW4gPGtmbGluQG51dm90b24uY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitM
OglvcGVuYm1jQGxpc3RzLm96bGFicy5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21l
ZGlhL251dm90b24sbnBjbS1lY2UueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL21lZGlhL251dm90b24sbnBjbS12Y2QueWFtbAorRjoJRG9jdW1lbnRhdGlvbi91c2Vy
c3BhY2UtYXBpL21lZGlhL2RyaXZlcnMvbnBjbS12aWRlby5yc3QKK0Y6CWRyaXZlcnMvbWVkaWEv
cGxhdGZvcm0vbnV2b3Rvbi8KK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9ucGNtLXZpZGVvLmgKKwor
QVJNL05VVk9UT04gV1BDTTQ1MCBBUkNISVRFQ1RVUkUKK006CUpvbmF0aGFuIE5ldXNjaMOkZmVy
IDxqLm5ldXNjaGFlZmVyQGdteC5uZXQ+CitMOglvcGVuYm1jQGxpc3RzLm96bGFicy5vcmcgKG1v
ZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9n
aXRodWIuY29tL25ldXNjaGFlZmVyL3dwY200NTAvd2lraQorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzLyovKndwY20qCitGOglhcmNoL2FybS9ib290L2R0cy9udXZvdG9uL251
dm90b24td3BjbTQ1MCoKK0Y6CWFyY2gvYXJtL2NvbmZpZ3Mvd3BjbTQ1MF9kZWZjb25maWcKK0Y6
CWFyY2gvYXJtL21hY2gtbnBjbS93cGNtNDUwLmMKK0Y6CWRyaXZlcnMvKi8qLyp3cGNtKgorRjoJ
ZHJpdmVycy8qLyp3cGNtKgorCitBUk0vTlhQIFMzMkcgQVJDSElURUNUVVJFCitSOglDaGVzdGVy
IExpbiA8Y2hlc3RlcjYyNTE1QGdtYWlsLmNvbT4KK1I6CU1hdHRoaWFzIEJydWdnZXIgPG1icnVn
Z2VyQHN1c2UuY29tPgorUjoJR2hlbm5hZGkgUHJvY29wY2l1YyA8Z2hlbm5hZGkucHJvY29wY2l1
Y0Bvc3MubnhwLmNvbT4KK1I6CU5YUCBTMzIgTGludXggVGVhbSA8czMyQG54cC5jb20+CitMOgls
aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2Nh
bGUvczMyZyouZHRzKgorRjoJZHJpdmVycy9waW5jdHJsL254cC8KKworQVJNL05YUCBTMzJHL1Mz
MlIgRFdNQUMgRVRIRVJORVQgRFJJVkVSCitNOglKYW4gUGV0cm91cyA8amFuLnBldHJvdXNAb3Nz
Lm54cC5jb20+CitSOglzMzJAbnhwLmNvbQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ueHAsczMyLWR3bWFjLnlhbWwKK0Y6CWRyaXZlcnMv
bmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXMzMi5jCisKK0FSTS9PcmlvbiBTb0Mv
VGVjaG5vbG9naWMgU3lzdGVtcyBUUy03OHh4IHBsYXRmb3JtIHN1cHBvcnQKK006CUFsZXhhbmRl
ciBDbG91dGVyIDxhbGV4QGRpZ3Jpei5vcmcudWs+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3Rz
LmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRh
aW5lZAorVzoJaHR0cDovL3d3dy5kaWdyaXoub3JnLnVrL3RzNzh4eC9rZXJuZWwKK0Y6CWFyY2gv
YXJtL21hY2gtb3Jpb241eC90czc4eHgtKgorCitBUk0vUVVBTENPTU0gQ0hST01FQk9PSyBTVVBQ
T1JUCitSOgljcm9zLXFjb20tZHRzLXdhdGNoZXJzQGNocm9taXVtLm9yZworRjoJYXJjaC9hcm02
NC9ib290L2R0cy9xY29tL3NjNzE4MCoKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvcWNvbS9zYzcy
ODAqCitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vc2RtODQ1LWNoZXphKgorCitBUk0vUVVB
TENPTU0gTUFJTElORyBMSVNUCitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworQzoJ
aXJjOi8vaXJjLm9mdGMubmV0L2xpbnV4LW1zbQorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzLyovcWNvbSoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9z
b2MvcWNvbS8KK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL3Fjb20vCitGOglhcmNoL2FybS9jb25maWdz
L3Fjb21fZGVmY29uZmlnCitGOglhcmNoL2FybS9tYWNoLXFjb20vCitGOglhcmNoL2FybTY0L2Jv
b3QvZHRzL3Fjb20vCitGOglkcml2ZXJzLyovKi9wbTg/Pz8tKgorRjoJZHJpdmVycy8qLyovcWNv
bSoKK0Y6CWRyaXZlcnMvKi8qL3Fjb20vCitGOglkcml2ZXJzLyovcWNvbSoKK0Y6CWRyaXZlcnMv
Ki9xY29tLworRjoJZHJpdmVycy9ibHVldG9vdGgvYnRxY29tc21kLmMKK0Y6CWRyaXZlcnMvY2xv
Y2tzb3VyY2UvdGltZXItcWNvbS5jCitGOglkcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1xY29tLXNw
bS5jCitGOglkcml2ZXJzL2V4dGNvbi9leHRjb24tcWNvbSoKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nl
cy9pMmMtcWNvbS1nZW5pLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcXVwLmMKK0Y6CWRy
aXZlcnMvaW9tbXUvbXNtKgorRjoJZHJpdmVycy9tZmQvc3NiaS5jCitGOglkcml2ZXJzL21tYy9o
b3N0L21tY2lfcWNvbSoKK0Y6CWRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktbXNtLmMKK0Y6CWRyaXZl
cnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtcWNvbSoKK0Y6CWRyaXZlcnMvcGh5L3F1YWxjb21t
LworRjoJZHJpdmVycy9wb3dlci8qL21zbSoKK0Y6CWRyaXZlcnMvcmVzZXQvcmVzZXQtcWNvbS0q
CitGOglkcml2ZXJzL3J0Yy9ydGMtcG04eHh4LmMKK0Y6CWRyaXZlcnMvc3BpL3NwaS1nZW5pLXFj
b20uYworRjoJZHJpdmVycy9zcGkvc3BpLXFjb20tcXNwaS5jCitGOglkcml2ZXJzL3NwaS9zcGkt
cXVwLmMKK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9tc21fc2VyaWFsLmMKK0Y6CWRyaXZlcnMvdWZz
L2hvc3QvdWZzLXFjb20qCitGOglkcml2ZXJzL3VzYi9kd2MzL2R3YzMtcWNvbS5jCitGOglpbmNs
dWRlL2R0LWJpbmRpbmdzLyovcWNvbSoKK0Y6CWluY2x1ZGUvbGludXgvKi9xY29tKgorRjoJaW5j
bHVkZS9saW51eC9zb2MvcWNvbS8KKworQVJNL1FVQUxDT01NIFNVUFBPUlQKK006CUJqb3JuIEFu
ZGVyc3NvbiA8YW5kZXJzc29uQGtlcm5lbC5vcmc+CitNOglLb25yYWQgRHliY2lvIDxrb25yYWR5
YmNpb0BrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0M6CWlyYzovL2lyYy5vZnRjLm5ldC9saW51eC1tc20KK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcWNvbS9saW51eC5naXQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcWNvbS1zb2MueWFtbAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9xY29tLnlhbWwKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9idXMvcWNvbSoKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9jYWNoZS9xY29tLGxsY2MueWFtbAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Zpcm13YXJlL3Fjb20sc2NtLnlhbWwKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNlcnZlZC1tZW1vcnkvcWNvbSoKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbS8KK0Y6CWFyY2gvYXJtL2Jvb3Qv
ZHRzL3Fjb20vCitGOglhcmNoL2FybS9jb25maWdzL3Fjb21fZGVmY29uZmlnCitGOglhcmNoL2Fy
bS9tYWNoLXFjb20vCitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL3Fjb20vCitGOglkcml2ZXJzL2J1
cy9xY29tKgorRjoJZHJpdmVycy9maXJtd2FyZS9xY29tLworRjoJZHJpdmVycy9zb2MvcWNvbS8K
K0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvYXJtL3Fjb20saWRzLmgKK0Y6CWluY2x1ZGUvZHQtYmlu
ZGluZ3MvZmlybXdhcmUvcWNvbSxzY20uaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9zb2MvcWNv
bSoKK0Y6CWluY2x1ZGUvbGludXgvZmlybXdhcmUvcWNvbQorRjoJaW5jbHVkZS9saW51eC9zb2Mv
cWNvbS8KK0Y6CWluY2x1ZGUvc29jL3Fjb20vCisKK0FSTS9SREEgTUlDUk8gQVJDSElURUNUVVJF
CitNOglNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8u
b3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQg
Zm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CWxpbnV4LXVuaXNvY0BsaXN0cy5pbmZyYWRlYWQub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vcmRhLnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tcmRhLnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQtY29udHJvbGxlci9yZGEsODgxMHBsLWlu
dGMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9yZGEs
ODgxMHBsLXVhcnQueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Rp
bWVyL3JkYSw4ODEwcGwtdGltZXIueWFtbAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvdW5pc29jLwor
RjoJZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1yZGEuYworRjoJZHJpdmVycy9ncGlvL2dwaW8t
cmRhLmMKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtcmRhLWludGMuYworRjoJZHJpdmVycy90dHkv
c2VyaWFsL3JkYS11YXJ0LmMKKworQVJNL1JFQUxURUsgQVJDSElURUNUVVJFCitNOglBbmRyZWFz
IEbDpHJiZXIgPGFmYWVyYmVyQHN1c2UuZGU+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtcmVh
bHRlay1zb2NAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl
cnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
YXJtL3JlYWx0ZWsueWFtbAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvcmVhbHRlay8KK0Y6CWFyY2gv
YXJtL21hY2gtcmVhbHRlay8KK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvcmVhbHRlay8KKworQVJN
L1JJU0MtVi9SRU5FU0FTIEFSQ0hJVEVDVFVSRQorTToJR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVy
dCtyZW5lc2FzQGdsaWRlci5iZT4KK006CU1hZ251cyBEYW1tIDxtYWdudXMuZGFtbUBnbWFpbC5j
b20+CitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAor
UToJaHR0cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtcmVuZXNhcy1zb2Mv
bGlzdC8KK0M6CWlyYzovL2lyYy5saWJlcmEuY2hhdC9yZW5lc2FzLXNvYworVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9nZWVydC9yZW5lc2FzLWRl
dmVsLmdpdCBuZXh0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdpbmZv
L3JlbmVzYXMscHJyLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9u
dm1lbS9yZW5lc2FzLCoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2Mv
cmVuZXNhcy8KK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL3JlbmVzYXMvCitGOglhcmNoL2FybS9jb25m
aWdzL3NobW9iaWxlX2RlZmNvbmZpZworRjoJYXJjaC9hcm0vaW5jbHVkZS9kZWJ1Zy9yZW5lc2Fz
LXNjaWYuUworRjoJYXJjaC9hcm0vbWFjaC1zaG1vYmlsZS8KK0Y6CWFyY2gvYXJtNjQvYm9vdC9k
dHMvcmVuZXNhcy8KK0Y6CWFyY2gvcmlzY3YvYm9vdC9kdHMvcmVuZXNhcy8KK0Y6CWRyaXZlcnMv
bnZtZW0vcmNhci1lZnVzZS5jCitGOglkcml2ZXJzL3BtZG9tYWluL3JlbmVzYXMvCitGOglkcml2
ZXJzL3NvYy9yZW5lc2FzLworRjoJaW5jbHVkZS9saW51eC9zb2MvcmVuZXNhcy8KK0s6CVxicmVu
ZXNhcywKKworQVJNL1JJU0NQQyBBUkNISVRFQ1RVUkUKK006CVJ1c3NlbGwgS2luZyA8bGludXhA
YXJtbGludXgub3JnLnVrPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6
Ly93d3cuYXJtbGludXgub3JnLnVrLworRjoJYXJjaC9hcm0vaW5jbHVkZS9hc20vaGFyZHdhcmUv
aW9jLmgKK0Y6CWFyY2gvYXJtL2luY2x1ZGUvYXNtL2hhcmR3YXJlL2lvbWQuaAorRjoJYXJjaC9h
cm0vaW5jbHVkZS9hc20vaGFyZHdhcmUvbWVtYy5oCitGOglhcmNoL2FybS9tYWNoLXJwYy8KK0Y6
CWRyaXZlcnMvbmV0L2V0aGVybmV0LzgzOTAvZXRoZXJoLmMKK0Y6CWRyaXZlcnMvbmV0L2V0aGVy
bmV0L2k4MjV4eC9ldGhlcjEqCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9zZWVxL2V0aGVyMyoK
K0Y6CWRyaXZlcnMvc2NzaS9hcm0vCisKK0FSTS9Sb2NrY2hpcCBTb0Mgc3VwcG9ydAorTToJSGVp
a28gU3R1ZWJuZXIgPGhlaWtvQHNudGVjaC5kZT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMu
aW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1y
b2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L21taW5kL2xpbnV4LXJvY2tj
aGlwLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtcmsz
eC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL3JvY2tjaGlw
LWR3LW1zaGMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9z
cGktcm9ja2NoaXAueWFtbAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvcm9ja2NoaXAvCitGOglhcmNo
L2FybS9tYWNoLXJvY2tjaGlwLworRjoJZHJpdmVycy8qLyovKnJvY2tjaGlwKgorRjoJZHJpdmVy
cy8qLypyb2NrY2hpcCoKK0Y6CWRyaXZlcnMvY2xrL3JvY2tjaGlwLworRjoJZHJpdmVycy9pMmMv
YnVzc2VzL2kyYy1yazN4LmMKK0Y6CXNvdW5kL3NvYy9yb2NrY2hpcC8KK046CXJvY2tjaGlwCisK
K0FSTS9TQU1TVU5HIFMzQywgUzVQIEFORCBFWFlOT1MgQVJNIEFSQ0hJVEVDVFVSRVMKK006CUty
enlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK1I6CUFsaW0gQWtodGFyIDxhbGlt
LmFraHRhckBzYW1zdW5nLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk
Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1zYW1zdW5nLXNv
Y0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1A6CURvY3VtZW50YXRpb24vcHJvY2Vz
cy9tYWludGFpbmVyLXNvYy1jbGVhbi1kdHMucnN0CitROglodHRwczovL3BhdGNod29yay5rZXJu
ZWwub3JnL3Byb2plY3QvbGludXgtc2Ftc3VuZy1zb2MvbGlzdC8KK0I6CW1haWx0bzpsaW51eC1z
YW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK0M6CWlyYzovL2lyYy5saWJlcmEuY2hhdC9saW51
eC1leHlub3MKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQva3J6ay9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vYXJjaC9hcm0vc2Ftc3VuZy8K
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vc2Ftc3VuZy8KK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2luZm8vc2Ftc3VuZywqCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXIvcGQtc2Ftc3VuZy55YW1sCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3NhbXN1bmcvCitGOglhcmNoL2Fy
bS9ib290L2R0cy9zYW1zdW5nLworRjoJYXJjaC9hcm0vbWFjaC1leHlub3MqLworRjoJYXJjaC9h
cm0vbWFjaC1zM2MvCitGOglhcmNoL2FybS9tYWNoLXM1cCovCitGOglhcmNoL2FybTY0L2Jvb3Qv
ZHRzL2V4eW5vcy8KK0Y6CWRyaXZlcnMvKi8qLypzM2MyNCoKK0Y6CWRyaXZlcnMvKi8qczNjMjQq
CitGOglkcml2ZXJzLyovKnMzYzY0eHgqCitGOglkcml2ZXJzLyovKnM1cHYyMTAqCitGOglkcml2
ZXJzL2Nsb2Nrc291cmNlL3NhbXN1bmdfcHdtX3RpbWVyLmMKK0Y6CWRyaXZlcnMvZmlybXdhcmUv
c2Ftc3VuZy8KK0Y6CWRyaXZlcnMvbWFpbGJveC9leHlub3MtbWFpbGJveC5jCitGOglkcml2ZXJz
L21lbW9yeS9zYW1zdW5nLworRjoJZHJpdmVycy9wd20vcHdtLXNhbXN1bmcuYworRjoJZHJpdmVy
cy9zb2Mvc2Ftc3VuZy8KK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nKgorRjoJaW5jbHVk
ZS9jbG9ja3NvdXJjZS9zYW1zdW5nX3B3bS5oCitGOglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2Rh
dGEvKnMzYyoKK0Y6CWluY2x1ZGUvbGludXgvc2VyaWFsX3MzYy5oCitGOglpbmNsdWRlL2xpbnV4
L3NvYy9zYW1zdW5nLworTjoJZXh5bm9zCitOOglzM2M2NHh4CitOOglzNXB2MjEwCisKK0FSTS9T
QU1TVU5HIFM1UCBTRVJJRVMgMkQgR1JBUEhJQ1MgQUNDRUxFUkFUSU9OIChHMkQpIFNVUFBPUlQK
K006CcWBdWthc3ogU3RlbG1hY2ggPGwuc3RlbG1hY2hAc2Ftc3VuZy5jb20+CitMOglsaW51eC1h
cm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmli
ZXJzKQorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczVwLWcyZC8KKworQVJNL1NBTVNVTkcgUzVQ
IFNFUklFUyBIRE1JIENFQyBTVUJTWVNURU0gU1VQUE9SVAorTToJTWFyZWsgU3p5cHJvd3NraSA8
bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgorTDoJbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJu
ZWwub3JnCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9jZWMvc2Ftc3VuZyxzNXAt
Y2VjLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvY2VjL3BsYXRmb3JtL3M1cC8KKworQVJNL1NBTVNV
TkcgUzVQIFNFUklFUyBKUEVHIENPREVDIFNVUFBPUlQKK006CUFuZHJ6ZWogUGlldHJhc2lld2lj
eiA8YW5kcnplanRwMjAxMEBnbWFpbC5jb20+CitNOglKYWNlayBBbmFzemV3c2tpIDxqYWNlay5h
bmFzemV3c2tpQGdtYWlsLmNvbT4KK006CVN5bHdlc3RlciBOYXdyb2NraSA8cy5uYXdyb2NraUBz
YW1zdW5nLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9k
ZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9t
ZWRpYS9zYW1zdW5nLHM1cHYyMTAtanBlZy55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3Jt
L3NhbXN1bmcvczVwLWpwZWcvCisKK0FSTS9TQU1TVU5HIFM1UCBTRVJJRVMgTXVsdGkgRm9ybWF0
IENvZGVjIChNRkMpIFNVUFBPUlQKK006CU1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBz
YW1zdW5nLmNvbT4KK006CUFuZHJ6ZWogSGFqZGEgPGFuZHJ6ZWouaGFqZGFAaW50ZWwuY29tPgor
TDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5v
bi1zdWJzY3JpYmVycykKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmcs
czVwLW1mYy55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcvczVwLW1mYy8K
KworQVJNL1NPQ0ZQR0EgQVJDSElURUNUVVJFCitNOglEaW5oIE5ndXllbiA8ZGluZ3V5ZW5Aa2Vy
bmVsLm9yZz4KK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cucm9ja2V0Ym9hcmRzLm9yZwor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kaW5n
dXllbi9saW51eC5naXQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL2ludGVsL3NvY2ZwZ2EvCitGOglh
cmNoL2FybS9jb25maWdzL3NvY2ZwZ2FfZGVmY29uZmlnCitGOglhcmNoL2FybS9tYWNoLXNvY2Zw
Z2EvCitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL2FsdGVyYS8KK0Y6CWFyY2gvYXJtNjQvYm9vdC9k
dHMvaW50ZWwvCisKK0FSTS9TT0NGUEdBIENMT0NLIEZSQU1FV09SSyBTVVBQT1JUCitNOglEaW5o
IE5ndXllbiA8ZGluZ3V5ZW5Aa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
Y2xrL3NvY2ZwZ2EvCisKK0FSTS9TT0NGUEdBIERXTUFDIEdMVUUgTEFZRVIKK006CU1heGltZSBD
aGV2YWxsaWVyIDxtYXhpbWUuY2hldmFsbGllckBib290bGluLmNvbT4KK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvc29jZnBnYS1kd21hYy50
eHQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXNvY2ZwZ2Eu
YworCitBUk0vU09DRlBHQSBFREFDIEJJTkRJTkdTCitNOglNYXR0aGV3IEdlcmxhY2ggPG1hdHRo
ZXcuZ2VybGFjaEBhbHRlcmEuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2VkYWMvYWx0cixzb2NmcGdhLWVjYy1tYW5hZ2VyLnlhbWwKKwor
QVJNL1NPQ0ZQR0EgRURBQyBTVVBQT1JUCitNOglEaW5oIE5ndXllbiA8ZGluZ3V5ZW5Aa2VybmVs
Lm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRhYy9hbHRlcmFfZWRhYy5bY2hdCisK
K0FSTS9TUFJFQURUUlVNIFNvQyBTVVBQT1JUCitNOglPcnNvbiBaaGFpIDxvcnNvbnpoYWlAZ21h
aWwuY29tPgorTToJQmFvbGluIFdhbmcgPGJhb2xpbi53YW5nN0BnbWFpbC5jb20+CitSOglDaHVu
eWFuIFpoYW5nIDx6aGFuZy5seXJhQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWFyY2gv
YXJtNjQvYm9vdC9kdHMvc3ByZAorTjoJc3ByZAorTjoJc2MyN3h4CitOOglzYzI3MzEKKworQVJN
L1NUSSBBUkNISVRFQ1RVUkUKK006CVBhdHJpY2UgQ2hvdGFyZCA8cGF0cmljZS5jaG90YXJkQGZv
c3Muc3QuY29tPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cu
c3RsaW51eC5jb20KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvc3Qs
c3RpLWkyYy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3N0
LHNzYy1zcGkueWFtbAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvc3Qvc3RpKgorRjoJYXJjaC9hcm0v
bWFjaC1zdGkvCitGOglkcml2ZXJzL2F0YS9haGNpX3N0LmMKK0Y6CWRyaXZlcnMvY2hhci9od19y
YW5kb20vc3Qtcm5nLmMKK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvYXJtX2dsb2JhbF90aW1lci5j
CitGOglkcml2ZXJzL2Nsb2Nrc291cmNlL2Nsa3NyY19zdF9scGMuYworRjoJZHJpdmVycy9jcHVm
cmVxL3N0aS1jcHVmcmVxLmMKK0Y6CWRyaXZlcnMvZG1hL3N0X2ZkbWEqCitGOglkcml2ZXJzL2ky
Yy9idXNzZXMvaTJjLXN0LmMKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3Qvc3RpL2M4c2Vj
dHBmZS8KK0Y6CWRyaXZlcnMvbWVkaWEvcmMvc3RfcmMuYworRjoJZHJpdmVycy9tbWMvaG9zdC9z
ZGhjaS1zdC5jCitGOglkcml2ZXJzL3BoeS9zdC9waHktbWlwaHkyOGxwLmMKK0Y6CWRyaXZlcnMv
cGh5L3N0L3BoeS1zdGloNDA3LXVzYi5jCitGOglkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1zdC5j
CitGOglkcml2ZXJzL3JlbW90ZXByb2Mvc3RfcmVtb3RlcHJvYy5jCitGOglkcml2ZXJzL3JlbW90
ZXByb2Mvc3Rfc2xpbV9ycHJvYy5jCitGOglkcml2ZXJzL3Jlc2V0L3N0aS8KK0Y6CWRyaXZlcnMv
cnRjL3J0Yy1zdC1scGMuYworRjoJZHJpdmVycy90dHkvc2VyaWFsL3N0LWFzYy5jCitGOglkcml2
ZXJzL3VzYi9kd2MzL2R3YzMtc3QuYworRjoJZHJpdmVycy91c2IvaG9zdC9laGNpLXN0LmMKK0Y6
CWRyaXZlcnMvdXNiL2hvc3Qvb2hjaS1zdC5jCitGOglkcml2ZXJzL3dhdGNoZG9nL3N0X2xwY193
ZHQuYworRjoJaW5jbHVkZS9saW51eC9yZW1vdGVwcm9jL3N0X3NsaW1fcnByb2MuaAorCitBUk0v
U1RNMzIgQVJDSElURUNUVVJFCitNOglNYXhpbWUgQ29xdWVsaW4gPG1jb3F1ZWxpbi5zdG0zMkBn
bWFpbC5jb20+CitNOglBbGV4YW5kcmUgVG9yZ3VlIDxhbGV4YW5kcmUudG9yZ3VlQGZvc3Muc3Qu
Y29tPgorTDoJbGludXgtc3RtMzJAc3QtbWQtbWFpbG1hbi5zdG9ybXJlcGx5LmNvbSAobW9kZXJh
dGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh
ZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hdG9y
Z3VlL3N0bTMyLmdpdCBzdG0zMi1uZXh0CitGOglhcmNoL2FybS9ib290L2R0cy9zdC9zdG0zMioK
K0Y6CWFyY2gvYXJtL21hY2gtc3RtMzIvCitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL3N0LworRjoJ
ZHJpdmVycy9jbG9ja3NvdXJjZS9hcm12N21fc3lzdGljay5jCitOOglzdG0zMgorTjoJc3RtCisK
K0FSTS9TVU5QTFVTIFNQNzAyMSBTT0MgU1VQUE9SVAorTToJUWluIEppYW4gPHFpbmppYW5AY3Fw
bHVzMS5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVy
YXRlZCBmb3IgbW9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9zdW5w
bHVzLXRpYmJvLmF0bGFzc2lhbi5uZXQvd2lraS9zcGFjZXMvZG9jL292ZXJ2aWV3CitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3N1bnBsdXMsc3A3MDIxLnlhbWwKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdW5wbHVzLHNwNzAyMS1j
bGtjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQt
Y29udHJvbGxlci9zdW5wbHVzLHNwNzAyMS1pbnRjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdW5wbHVzLHJlc2V0LnlhbWwKK0Y6CWFyY2gvYXJtL2Jv
b3QvZHRzL3N1bnBsdXMvCitGOglhcmNoL2FybS9jb25maWdzL3NwNzAyMV8qZGVmY29uZmlnCitG
Oglkcml2ZXJzL2Nsay9jbGstc3A3MDIxLmMKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtc3A3MDIx
LWludGMuYworRjoJZHJpdmVycy9yZXNldC9yZXNldC1zdW5wbHVzLmMKK0Y6CWluY2x1ZGUvZHQt
YmluZGluZ3MvY2xvY2svc3VucGx1cyxzcDcwMjEtY2xrYy5oCitGOglpbmNsdWRlL2R0LWJpbmRp
bmdzL3Jlc2V0L3N1bnBsdXMsc3A3MDIxLXJlc2V0LmgKKworQVJNL1N5bmFwdGljcyBTb0Mgc3Vw
cG9ydAorTToJSmlzaGVuZyBaaGFuZyA8anN6aGFuZ0BrZXJuZWwub3JnPgorTToJU2ViYXN0aWFu
IEhlc3NlbGJhcnRoIDxzZWJhc3RpYW4uaGVzc2VsYmFydGhAZ21haWwuY29tPgorTDoJbGludXgt
YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3Jp
YmVycykKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL3N5bmFwdGljcy8KK0Y6
CWFyY2gvYXJtL21hY2gtYmVybGluLworRjoJYXJjaC9hcm02NC9ib290L2R0cy9zeW5hcHRpY3Mv
CisKK0FSTS9URUdSQSBIRE1JIENFQyBTVUJTWVNURU0gU1VQUE9SVAorTToJSGFucyBWZXJrdWls
IDxodmVya3VpbC1jaXNjb0B4czRhbGwubmw+CitMOglsaW51eC10ZWdyYUB2Z2VyLmtlcm5lbC5v
cmcKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2NlYy9udmlkaWEsdGVncmExMTQt
Y2VjLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvY2VjL3BsYXRmb3JtL3RlZ3JhLworCitBUk0vVEVT
TEEgRlNEIFNvQyBTVVBQT1JUCitNOglBbGltIEFraHRhciA8YWxpbS5ha2h0YXJAc2Ftc3VuZy5j
b20+CitNOglsaW51eC1mc2RAdGVzbGEuY29tCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtc2Ft
c3VuZy1zb2NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglhcmNoL2FybTY0L2Jv
b3QvZHRzL3Rlc2xhLworCitBUk0vVEVYQVMgSU5TVFJVTUVOVCBBRU1JRi9FTUlGIERSSVZFUlMK
K006CVNhbnRvc2ggU2hpbGlta2FyIDxzc2FudG9zaEBrZXJuZWwub3JnPgorTDoJbGludXgta2Vy
bmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tZW1vcnkvKmVt
aWYqCisKK0FSTS9URVhBUyBJTlNUUlVNRU5UIEtFWVNUT05FIEFSQ0hJVEVDVFVSRQorTToJTmlz
aGFudGggTWVub24gPG5tQHRpLmNvbT4KK006CVNhbnRvc2ggU2hpbGlta2FyIDxzc2FudG9zaEBr
ZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGkvbGludXguZ2l0CitGOglh
cmNoL2FybS9ib290L2R0cy90aS9rZXlzdG9uZS8KK0Y6CWFyY2gvYXJtL21hY2gta2V5c3RvbmUv
CisKK0FSTS9URVhBUyBJTlNUUlVNRU5UIEtFWVNUT05FIENMT0NLIEZSQU1FV09SSworTToJU2Fu
dG9zaCBTaGlsaW1rYXIgPHNzYW50b3NoQGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJuZWxAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2Nsay9rZXlzdG9uZS8KKwor
QVJNL1RFWEFTIElOU1RSVU1FTlQgS0VZU1RPTkUgQ0xPQ0tTT1VSQ0UKK006CVNhbnRvc2ggU2hp
bGlta2FyIDxzc2FudG9zaEBrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5p
bmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CWxpbnV4LWtl
cm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvY2xvY2tzb3Vy
Y2UvdGltZXIta2V5c3RvbmUuYworCitBUk0vVEVYQVMgSU5TVFJVTUVOVCBLRVlTVE9ORSBSRVNF
VCBEUklWRVIKK006CVNhbnRvc2ggU2hpbGlta2FyIDxzc2FudG9zaEBrZXJuZWwub3JnPgorTDoJ
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9w
b3dlci9yZXNldC9rZXlzdG9uZS1yZXNldC5jCisKK0FSTS9URVhBUyBJTlNUUlVNRU5UUyBLMyBB
UkNISVRFQ1RVUkUKK006CU5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+CitNOglWaWduZXNoIFJh
Z2hhdmVuZHJhIDx2aWduZXNockB0aS5jb20+CitNOglUZXJvIEtyaXN0byA8a3Jpc3RvQGtlcm5l
bC5vcmc+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRl
ZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvYXJtL3RpL2szLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9od2luZm8vdGksazMtc29jaW5mby55YW1sCitGOglhcmNoL2FybTY0L2Jv
b3QvZHRzL3RpL01ha2VmaWxlCitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL3RpL2szLSoKKworQVJN
L1RFWEFTIElOU1RSVU1FTlRTIE5TUElSRSBBUkNISVRFQ1RVUkUKK006CUtyenlzenRvZiBLb3ps
b3dza2kgPGtyemtAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk
ZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglPZGQgRml4ZXMKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8qLyovdGksbnNwaXJlKgorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzLyovdGksbnNwaXJlKgorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS90aS9uc3BpcmUueWFtbAorRjoJYXJjaC9hcm0v
Ym9vdC9kdHMvbnNwaXJlLworCitBUk0vVE9TSElCQSBWSVNDT05USSBBUkNISVRFQ1RVUkUKK006
CU5vYnVoaXJvIEl3YW1hdHN1IDxub2J1aGlybzEuaXdhbWF0c3VAdG9zaGliYS5jby5qcD4KK0w6
CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24t
c3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvaXdhbWF0c3UvbGludXgtdmlzY29udGkuZ2l0CitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL3Rvc2hpYmEueWFtbAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Rvc2hpYmEsdG1wdjc3MHgtcGlw
bGxjdC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdG9z
aGliYSx0bXB2NzcweC1waXNtdS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvZ3Bpby90b3NoaWJhLGdwaW8tdmlzY29udGkueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL25ldC90b3NoaWJhLHZpc2NvbnRpLWR3bWFjLnlhbWwKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvdG9zaGliYSx2aXNjb250aS1wY2ll
LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3Rvc2hp
YmEsdmlzY29udGktcGluY3RybC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3Mvd2F0Y2hkb2cvdG9zaGliYSx2aXNjb250aS13ZHQueWFtbAorRjoJYXJjaC9hcm02NC9i
b290L2R0cy90b3NoaWJhLworRjoJZHJpdmVycy9jbGsvdmlzY29udGkvCitGOglkcml2ZXJzL2dw
aW8vZ3Bpby12aXNjb250aS5jCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1h
Yy9kd21hYy12aXNjb250aS5jCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLXZp
c2NvbnRpLmMKK0Y6CWRyaXZlcnMvcGluY3RybC92aXNjb250aS8KK0Y6CWRyaXZlcnMvd2F0Y2hk
b2cvdmlzY29udGlfd2R0LmMKK046CXZpc2NvbnRpCisKK0FSTS9VTklQSElFUiBBUkNISVRFQ1RV
UkUKK006CUt1bmloaWtvIEhheWFzaGkgPGhheWFzaGkua3VuaWhpa29Ac29jaW9uZXh0LmNvbT4K
K006CU1hc2FtaSBIaXJhbWF0c3UgPG1oaXJhbWF0QGtlcm5lbC5vcmc+CitMOglsaW51eC1hcm0t
a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Fy
bS9zb2Npb25leHQvdW5pcGhpZXIueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL2dwaW8vc29jaW9uZXh0LHVuaXBoaWVyLWdwaW8ueWFtbAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvc29jaW9uZXh0LHVuaXBoaWVyLXBpbmN0cmwu
eWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9zb2Npb25leHQv
c29jaW9uZXh0LHVuaXBoaWVyKi55YW1sCitGOglhcmNoL2FybS9ib290L2R0cy9zb2Npb25leHQv
dW5pcGhpZXIqCitGOglhcmNoL2FybS9pbmNsdWRlL2FzbS9oYXJkd2FyZS9jYWNoZS11bmlwaGll
ci5oCitGOglhcmNoL2FybS9tbS9jYWNoZS11bmlwaGllci5jCitGOglhcmNoL2FybTY0L2Jvb3Qv
ZHRzL3NvY2lvbmV4dC91bmlwaGllcioKK0Y6CWRyaXZlcnMvYnVzL3VuaXBoaWVyLXN5c3RlbS1i
dXMuYworRjoJZHJpdmVycy9jbGsvdW5pcGhpZXIvCitGOglkcml2ZXJzL2RtYS91bmlwaGllci1t
ZG1hYy5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpby11bmlwaGllci5jCitGOglkcml2ZXJzL2kyYy9i
dXNzZXMvaTJjLXVuaXBoaWVyKgorRjoJZHJpdmVycy9pcnFjaGlwL2lycS11bmlwaGllci1haWRl
dC5jCitGOglkcml2ZXJzL21tYy9ob3N0L3VuaXBoaWVyLXNkLmMKK0Y6CWRyaXZlcnMvcGluY3Ry
bC91bmlwaGllci8KK0Y6CWRyaXZlcnMvcmVzZXQvcmVzZXQtdW5pcGhpZXIuYworRjoJZHJpdmVy
cy90dHkvc2VyaWFsLzgyNTAvODI1MF91bmlwaGllci5jCitOOgl1bmlwaGllcgorCitBUk0vVkVS
U0FUSUxFIEVYUFJFU1MgUExBVEZPUk0KK006CUxpdml1IER1ZGF1IDxsaXZpdS5kdWRhdUBhcm0u
Y29tPgorTToJU3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KK006CUxvcmVuem8g
UGllcmFsaXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+CitMOglsaW51eC1hcm0ta2VybmVsQGxp
c3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFp
bnRhaW5lZAorTjoJbXBzMgorTjoJdmV4cHJlc3MKK0Y6CWFyY2gvYXJtL21hY2gtdmVyc2F0aWxl
LworRjoJYXJjaC9hcm02NC9ib290L2R0cy9hcm0vCitGOglkcml2ZXJzL2Nsb2Nrc291cmNlL3Rp
bWVyLXZlcnNhdGlsZS5jCitYOglkcml2ZXJzL2NwdWZyZXEvdmV4cHJlc3Mtc3BjLWNwdWZyZXEu
YworWDoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9hcm0sdmV4cHJlc3Mt
anVuby55YW1sCisKK0FSTS9WRlAgU1VQUE9SVAorTToJUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1s
aW51eC5vcmcudWs+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1v
ZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3
dy5hcm1saW51eC5vcmcudWsvCitGOglhcmNoL2FybS92ZnAvCisKK0FSTS9WVDg1MDAgQVJNIEFS
Q0hJVEVDVFVSRQorTToJQWxleGV5IENoYXJrb3YgPGFsY2hhcmtAZ21haWwuY29tPgorTToJS3J6
eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBs
aXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU9k
ZCBGaXhlcworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy93bSx3bTg1
MDUtaTJjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1
cHQtY29udHJvbGxlci92aWEsdnQ4NTAwLWludGMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3B3bS92aWEsdnQ4NTAwLXB3bS55YW1sCitGOglhcmNoL2FybS9ib290
L2R0cy92dDg1MDAvCitGOglhcmNoL2FybS9tYWNoLXZ0ODUwMC8KK0Y6CWRyaXZlcnMvY2xvY2tz
b3VyY2UvdGltZXItdnQ4NTAwLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdmlhaTJjLXdt
dC5jCitGOglkcml2ZXJzL21tYy9ob3N0L3dtdC1zZG1tYy5jCitGOglkcml2ZXJzL3B3bS9wd20t
dnQ4NTAwLmMKK0Y6CWRyaXZlcnMvcnRjL3J0Yy12dDg1MDAuYworRjoJZHJpdmVycy90dHkvc2Vy
aWFsL3Z0ODUwMF9zZXJpYWwuYworRjoJZHJpdmVycy92aWRlby9mYmRldi92dDg1MDBsY2RmYi4q
CitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L3dtODUwNWZiKgorRjoJZHJpdmVycy92aWRlby9mYmRl
di93bXRfZ2Vfcm9wcy4qCisKK0FSTS9aWU5RIEFSQ0hJVEVDVFVSRQorTToJTWljaGFsIFNpbWVr
IDxtaWNoYWwuc2ltZWtAYW1kLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk
ZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHA6Ly93aWtpLnhpbGlueC5jb20KK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vWGlsaW54
L2xpbnV4LXhsbnguZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJj
L2NkbnMsaTJjLXIxcDEwLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9pMmMveGxueCx4cHMtaWljLTIuMDAuYS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL3NucHMsZHctdW1jdGwyLWRkcmMueWFtbAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy94
bG54LHp5bnEtZGRyYy1hMDUueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3NvYy94aWxpbngveGlsaW54LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9zcGkveGxueCx6eW5xLXFzcGkueWFtbAorRjoJYXJjaC9hcm0vbWFjaC16eW5xLwor
RjoJZHJpdmVycy9jbG9ja3NvdXJjZS90aW1lci1jYWRlbmNlLXR0Yy5jCitGOglkcml2ZXJzL2Nw
dWlkbGUvY3B1aWRsZS16eW5xLmMKK0Y6CWRyaXZlcnMvZWRhYy9zeW5vcHN5c19lZGFjLmMKK0Y6
CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtY2FkZW5jZS5jCitGOglkcml2ZXJzL2kyYy9idXNzZXMv
aTJjLXhpaWMuYworRjoJZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hcmFzYW4uYworTjoJenlu
cQorTjoJeGlsaW54CisKK0FSTTY0IEZJVCBTVVBQT1JUCitNOglTaW1vbiBHbGFzcyA8c2pnQGNo
cm9taXVtLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9k
ZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglhcmNoL2FybTY0
L2Jvb3QvTWFrZWZpbGUKK0Y6CXNjcmlwdHMvbWFrZV9maXQucHkKKworQVJNNjQgUExBVEZPUk0g
RFJJVkVSUworTToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK006CUlscG8g
SsOkcnZpbmVuIDxpbHBvLmphcnZpbmVuQGxpbnV4LmludGVsLmNvbT4KK1I6CUJyeWFuIE8nRG9u
b2dodWUgPGJyeWFuLm9kb25vZ2h1ZUBsaW5hcm8ub3JnPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4
NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtl
cm5lbC5vcmcvcHJvamVjdC9wbGF0Zm9ybS1kcml2ZXIteDg2L2xpc3QvCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BkeDg2L3BsYXRmb3JtLWRy
aXZlcnMteDg2LmdpdAorRjoJZHJpdmVycy9wbGF0Zm9ybS9hcm02NC8KKworQVJNNjQgUE9SVCAo
QUFSQ0g2NCBBUkNISVRFQ1RVUkUpCitNOglDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFyaW5h
c0Bhcm0uY29tPgorTToJV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFy
bS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl
cnMpCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L2FybTY0L2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hcmNoL2Fy
bTY0LworRjoJYXJjaC9hcm02NC8KK0Y6CWRyaXZlcnMvdmlydC9jb2NvL2FybS1jY2EtZ3Vlc3Qv
CitGOglkcml2ZXJzL3ZpcnQvY29jby9wa3ZtLWd1ZXN0LworRjoJdG9vbHMvdGVzdGluZy9zZWxm
dGVzdHMvYXJtNjQvCitYOglhcmNoL2FybTY0L2Jvb3QvZHRzLworCitBUlJPVyBTUEVFRENISVBT
IFhSUzcwMDAgU0VSSUVTIEVUSEVSTkVUIFNXSVRDSCBEUklWRVIKK006CUdlb3JnZSBNY0NvbGxp
c3RlciA8Z2VvcmdlLm1jY29sbGlzdGVyQGdtYWlsLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9uZXQvZHNhL2Fycm93LHhyczcwMHgueWFtbAorRjoJZHJpdmVycy9uZXQvZHNhL3hyczcwMHgv
KgorRjoJbmV0L2RzYS90YWdfeHJzNzAweC5jCisKK0FTMzY0NUEgTEVEIEZMQVNIIENPTlRST0xM
RVIgRFJJVkVSCitNOglTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0Bpa2kuZmk+CitMOglsaW51
eC1sZWRzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9sZWRzL2Zs
YXNoL2xlZHMtYXMzNjQ1YS5jCisKK0FTQUhJIEtBU0VJIEFLNzM3NSBMRU5TIFZPSUNFIENPSUwg
RFJJVkVSCitNOglUaWFuc2h1IFFpdSA8dGlhbi5zaHUucWl1QGludGVsLmNvbT4KK0w6CWxpbnV4
LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4
dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21l
ZGlhL2kyYy9hc2FoaS1rYXNlaSxhazczNzUueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvYWs3
Mzc1LmMKKworQVNBSEkgS0FTRUkgQUs4OTc0IERSSVZFUgorTToJTGludXMgV2FsbGVpaiA8bGlu
dXMud2FsbGVpakBsaW5hcm8ub3JnPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwOi8vd3d3LmFrbS5jb20vCitGOglkcml2ZXJzL2lpby9tYWduZXRv
bWV0ZXIvYWs4OTc0LmMKKworQU9TT05HIEFHUzAyTUEgVFZPQyBTRU5TT1IgRFJJVkVSCitNOglB
bnNodWwgRGFsYWwgPGFuc2h1bHVzckBnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvaWlvL2NoZW1pY2FsL2Fvc29uZyxhZ3MwMm1hLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2NoZW1p
Y2FsL2FnczAybWEuYworCitBU0M3NjIxIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglHZW9y
Z2UgSm9zZXBoIDxnZW9yZ2Uuam9zZXBoQGZhaXJ2aWV3NS5jb20+CitMOglsaW51eC1od21vbkB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vYXNj
NzYyMS5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vYXNjNzYyMS5jCisKK0FTSVggQVg4ODc5NkMgU1BJ
IEVUSEVSTkVUIEFEQVBURVIKK006CcWBdWthc3ogU3RlbG1hY2ggPGwuc3RlbG1hY2hAc2Ftc3Vu
Zy5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvbmV0L2FzaXgsYXg4ODc5NmMueWFtbAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvYXNpeC9h
eDg4Nzk2Y18qCisKK0FTSVggUEhZIERSSVZFUiBbUlVTVF0KK006CUZVSklUQSBUb21vbm9yaSA8
ZnVqaXRhLnRvbW9ub3JpQGdtYWlsLmNvbT4KK1I6CVRyZXZvciBHcm9zcyA8dG1ncm9zc0B1bWlj
aC5lZHU+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitMOglydXN0LWZvci1saW51eEB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9y
dXN0LnJzCisKK0FTUEVFRCBDUllQVE8gRFJJVkVSCitNOglOZWFsIExpdSA8bmVhbF9saXVAYXNw
ZWVkdGVjaC5jb20+CitMOglsaW51eC1hc3BlZWRAbGlzdHMub3psYWJzLm9yZyAobW9kZXJhdGVk
IGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2FzcGVlZCwqCitGOglkcml2ZXJzL2NyeXB0by9hc3Bl
ZWQvCisKK0FTUEVFRCBQRUNJIENPTlRST0xMRVIKK006CUl3b25hIFdpbmlhcnNrYSA8aXdvbmEu
d2luaWFyc2thQGludGVsLmNvbT4KK0w6CWxpbnV4LWFzcGVlZEBsaXN0cy5vemxhYnMub3JnICht
b2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CW9wZW5ibWNAbGlzdHMub3psYWJzLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wZWNpL3BlY2ktYXNwZWVkLnlhbWwKK0Y6CWRy
aXZlcnMvcGVjaS9jb250cm9sbGVyL3BlY2ktYXNwZWVkLmMKKworQVNQRUVEIFBJTkNUUkwgRFJJ
VkVSUworTToJQW5kcmV3IEplZmZlcnkgPGFuZHJld0Bjb2RlY29uc3RydWN0LmNvbS5hdT4KK0w6
CWxpbnV4LWFzcGVlZEBsaXN0cy5vemxhYnMub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3Jp
YmVycykKK0w6CW9wZW5ibWNAbGlzdHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vi
c2NyaWJlcnMpCitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvYXNwZWVkLCoKK0Y6
CWRyaXZlcnMvcGluY3RybC9hc3BlZWQvCisKK0FTUEVFRCBTQ1UgSU5URVJSVVBUIENPTlRST0xM
RVIgRFJJVkVSCitNOglFZGRpZSBKYW1lcyA8ZWFqYW1lc0BsaW51eC5pYm0uY29tPgorTDoJbGlu
dXgtYXNwZWVkQGxpc3RzLm96bGFicy5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lu
dGVycnVwdC1jb250cm9sbGVyL2FzcGVlZCxhc3QyNTAwLXNjdS1pYy55YW1sCitGOglkcml2ZXJz
L2lycWNoaXAvaXJxLWFzcGVlZC1zY3UtaWMuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9pbnRl
cnJ1cHQtY29udHJvbGxlci9hc3BlZWQtc2N1LWljLmgKKworQVNQRUVEIFNEL01NQyBEUklWRVIK
K006CUFuZHJldyBKZWZmZXJ5IDxhbmRyZXdAY29kZWNvbnN0cnVjdC5jb20uYXU+CitMOglsaW51
eC1hc3BlZWRAbGlzdHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMp
CitMOglvcGVuYm1jQGxpc3RzLm96bGFicy5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmli
ZXJzKQorTDoJbGludXgtbW1jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9hc3BlZWQsc2RoY2kueWFtbAorRjoJ
ZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hc3BlZWQqCisKK0FTUEVFRCBTTUMgU1BJIERSSVZF
UgorTToJQ2hpbi1UaW5nIEt1byA8Y2hpbi10aW5nX2t1b0Bhc3BlZWR0ZWNoLmNvbT4KK006CUPD
qWRyaWMgTGUgR29hdGVyIDxjbGdAa2FvZC5vcmc+CitMOglsaW51eC1hc3BlZWRAbGlzdHMub3ps
YWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglvcGVuYm1jQGxpc3Rz
Lm96bGFicy5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtc3Bp
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL3NwaS9hc3BlZWQsYXN0MjYwMC1mbWMueWFtbAorRjoJZHJpdmVycy9zcGkv
c3BpLWFzcGVlZC1zbWMuYworCitBU1BFRUQgVVNCIFVEQyBEUklWRVIKK006CU5lYWwgTGl1IDxu
ZWFsX2xpdUBhc3BlZWR0ZWNoLmNvbT4KK0w6CWxpbnV4LWFzcGVlZEBsaXN0cy5vemxhYnMub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYXNwZWVkLGFzdDI2MDAtdWRjLnlhbWwK
K0Y6CWRyaXZlcnMvdXNiL2dhZGdldC91ZGMvYXNwZWVkX3VkYy5jCisKK0FTUEVFRCBWSURFTyBF
TkdJTkUgRFJJVkVSCitNOglFZGRpZSBKYW1lcyA8ZWFqYW1lc0BsaW51eC5pYm0uY29tPgorTDoJ
bGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitMOglvcGVuYm1jQGxpc3RzLm96bGFicy5vcmcg
KG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2FzcGVlZCx2aWRlby1lbmdpbmUueWFt
bAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9hc3BlZWQvCisKK0FTVVMgRUMgSEFSRFdBUkUg
TU9OSVRPUiBEUklWRVIKK006CUV1Z2VuZSBTaGFseWdpbiA8ZXVnZW5lLnNoYWx5Z2luQGdtYWls
LmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9od21vbi9hc3VzLWVjLXNlbnNvcnMuYworCitBU1VTIE5PVEVCT09LUyBBTkQgRUVF
UEMgQUNQSS9XTUkgRVhUUkFTIERSSVZFUlMKK006CUNvcmVudGluIENoYXJ5IDxjb3JlbnRpbi5j
aGFyeUBnbWFpbC5jb20+CitNOglMdWtlIEQuIEpvbmVzIDxsdWtlQGxqb25lcy5kZXY+CitMOglw
bGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0
cHM6Ly9hc3VzLWxpbnV4Lm9yZy8KK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2FzdXMqLmMKK0Y6
CWRyaXZlcnMvcGxhdGZvcm0veDg2L2VlZXBjKi5jCisKK0FTVVMgVEYxMDNDIERPQ0sgRFJJVkVS
CitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJcGxhdGZvcm0tZHJp
dmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcGR4ODYvcGxhdGZvcm0tZHJpdmVy
cy14ODYuZ2l0CitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9hc3VzLXRmMTAzYy1kb2NrLmMKKwor
QVNVUyBST0cgUllVSklOIEFJTyBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJQWxla3NhIFNh
dmljIDxzYXZpY2FsZWtzYTgzQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9od21vbi9hc3VzX3JvZ19yeXVqaW4uYwor
CitBU1VTIFdJUkVMRVNTIFJBRElPIENPTlRST0wgRFJJVkVSCitNOglKb8OjbyBQYXVsbyBSZWNo
aSBWaXRhIDxqcHJ2aXRhQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9hc3VzLXdp
cmVsZXNzLmMKKworQVNVUyBXTUkgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIKK006CUVkIEJyaW5k
bGV5IDxrZXJuZWxAbWFpZGF2YWxlLm9yZz4KK006CURlbmlzIFBhdWsgPHBhdWsuZGVuaXNAZ21h
aWwuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL2h3bW9uL2FzdXNfd21pX3NlbnNvcnMuYworCitBU1lNTUVUUklDIEtFWVMKK006
CURhdmlkIEhvd2VsbHMgPGRob3dlbGxzQHJlZGhhdC5jb20+CitNOglMdWthcyBXdW5uZXIgPGx1
a2FzQHd1bm5lci5kZT4KK006CUlnbmF0IEtvcmNoYWdpbiA8aWduYXRAY2xvdWRmbGFyZS5jb20+
CitMOglrZXlyaW5nc0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vY3J5cHRvL2FzeW1tZXRyaWMt
a2V5cy5yc3QKK0Y6CWNyeXB0by9hc3ltbWV0cmljX2tleXMvCitGOglpbmNsdWRlL2NyeXB0by9w
a2NzNy5oCitGOglpbmNsdWRlL2NyeXB0by9wdWJsaWNfa2V5LmgKK0Y6CWluY2x1ZGUva2V5cy9h
c3ltbWV0cmljLSouaAorRjoJaW5jbHVkZS9saW51eC92ZXJpZmljYXRpb24uaAorCitBU1lNTUVU
UklDIEtFWVMgLSBFQ0RTQQorTToJTHVrYXMgV3VubmVyIDxsdWthc0B3dW5uZXIuZGU+CitNOglJ
Z25hdCBLb3JjaGFnaW4gPGlnbmF0QGNsb3VkZmxhcmUuY29tPgorUjoJU3RlZmFuIEJlcmdlciA8
c3RlZmFuYkBsaW51eC5pYm0uY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJY3J5cHRvL2VjYyoKK0Y6CWNyeXB0by9lY2RzYSoKK0Y6CWluY2x1
ZGUvY3J5cHRvL2VjYyoKKworQVNZTU1FVFJJQyBLRVlTIC0gR09TVAorTToJTHVrYXMgV3VubmVy
IDxsdWthc0B3dW5uZXIuZGU+CitNOglJZ25hdCBLb3JjaGFnaW4gPGlnbmF0QGNsb3VkZmxhcmUu
Y29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJT2RkIGZpeGVzCitGOglj
cnlwdG8vZWNyZHNhKgorCitBU1lNTUVUUklDIEtFWVMgLSBSU0EKK006CUx1a2FzIFd1bm5lciA8
bHVrYXNAd3VubmVyLmRlPgorTToJSWduYXQgS29yY2hhZ2luIDxpZ25hdEBjbG91ZGZsYXJlLmNv
bT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWNy
eXB0by9yc2EqCisKK0FTWU5DSFJPTk9VUyBUUkFOU0ZFUlMvVFJBTlNGT1JNUyAoSU9BVCkgQVBJ
CitSOglEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KK1M6CU9kZCBmaXhl
cworVzoJaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy94c2NhbGVpb3AKK0Y6CURvY3Vt
ZW50YXRpb24vY3J5cHRvL2FzeW5jLXR4LWFwaS5yc3QKK0Y6CWNyeXB0by9hc3luY190eC8KK0Y6
CWluY2x1ZGUvbGludXgvYXN5bmNfdHguaAorCitBVDI0IEVFUFJPTSBEUklWRVIKK006CUJhcnRv
c3ogR29sYXN6ZXdza2kgPGJyZ2xAYmdkZXYucGw+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L2JyZ2wvbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvZWVwcm9tL2F0MjQueWFtbAorRjoJZHJpdmVycy9taXNjL2VlcHJvbS9hdDI0
LmMKKworQVRBIE9WRVIgRVRIRVJORVQgKEFPRSkgRFJJVkVSCitNOgkiSnVzdGluIFNhbmRlcnMi
IDxqdXN0aW5AY29yYWlkLmNvbT4KK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5vcGVuYW9l
Lm9yZy8KK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYW9lLworRjoJZHJpdmVycy9ibG9j
ay9hb2UvCisKK0FUQzI2MFggUE1JQyBNRkQgRFJJVkVSCitNOglNYW5pdmFubmFuIFNhZGhhc2l2
YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8ub3JnPgorTToJQ3Jpc3RpYW4gQ2lvY2Fs
dGVhIDxjcmlzdGlhbi5jaW9jYWx0ZWFAZ21haWwuY29tPgorTDoJbGludXgtYWN0aW9uc0BsaXN0
cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvbWZkL2FjdGlvbnMsYXRjMjYweC55YW1sCitGOglkcml2ZXJzL2lucHV0L21p
c2MvYXRjMjYweC1vbmtleS5jCitGOglkcml2ZXJzL21mZC9hdGMyNjAqCitGOglkcml2ZXJzL3Bv
d2VyL3Jlc2V0L2F0YzI2MHgtcG93ZXJvZmYuYworRjoJZHJpdmVycy9yZWd1bGF0b3IvYXRjMjYw
eC1yZWd1bGF0b3IuYworRjoJaW5jbHVkZS9saW51eC9tZmQvYXRjMjYweC8qCisKK0FUSEVST1Mg
NzFYWC85WFhYIEdQSU8gRFJJVkVSCitNOglBbGJhbiBCZWRlbCA8YWxiZXVAZnJlZS5mcj4KK1M6
CU1haW50YWluZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9BbGJhbkJlZGVsL2xpbnV4CitUOgln
aXQgZ2l0Oi8vZ2l0aHViLmNvbS9BbGJhbkJlZGVsL2xpbnV4CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLWF0aDc5LnR4dAorRjoJZHJpdmVycy9ncGlvL2dw
aW8tYXRoNzkuYworCitBVEhFUk9TIDcxWFgvOVhYWCBVU0IgUEhZIERSSVZFUgorTToJQWxiYW4g
QmVkZWwgPGFsYmV1QGZyZWUuZnI+CitTOglNYWludGFpbmVkCitXOglodHRwczovL2dpdGh1Yi5j
b20vQWxiYW5CZWRlbC9saW51eAorVDoJZ2l0IGdpdDovL2dpdGh1Yi5jb20vQWxiYW5CZWRlbC9s
aW51eAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9waHktYXRoNzkt
dXNiLnR4dAorRjoJZHJpdmVycy9waHkvcXVhbGNvbW0vcGh5LWF0aDc5LXVzYi5jCisKK0FUSEVS
T1MgQVRIIEdFTkVSSUMgVVRJTElUSUVTCitNOglKZWZmIEpvaG5zb24gPGpqb2huc29uQGtlcm5l
bC5vcmc+CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAor
RjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoLyoKKworQVRIRVJPUyBBVEg1SyBXSVJFTEVTUyBE
UklWRVIKK006CUppcmkgU2xhYnkgPGppcmlzbGFieUBrZXJuZWwub3JnPgorTToJTmljayBLb3Nz
aWZpZGlzIDxtaWNrZmxlbW1AZ21haWwuY29tPgorTToJTHVpcyBDaGFtYmVybGFpbiA8bWNncm9m
QGtlcm5lbC5vcmc+CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK1c6CWh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZl
cnMvYXRoNWsKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay8KKworQVRIRVJPUyBB
VEg2S0wgV0lSRUxFU1MgRFJJVkVSCitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CU9ycGhhbgorVzoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMv
RHJpdmVycy9hdGg2a2wKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvCisKK0FU
SV9SRU1PVEUyIERSSVZFUgorTToJVmlsbGUgU3lyamFsYSA8c3lyamFsYUBzY2kuZmk+CitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL2lucHV0L21pc2MvYXRpX3JlbW90ZTIuYworCitBVEswMTEw
IEhXTU9OIERSSVZFUgorTToJTHVjYSBUZXR0YW1hbnRpIDxrcm9ub3MuaXRAZ21haWwuY29tPgor
TDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L2h3bW9uL2FzdXNfYXRrMDExMC5jCisKK0FUTFggRVRIRVJORVQgRFJJVkVSUworTToJQ2hyaXMg
U25vb2sgPGNocmlzLnNub29rQGdtYWlsLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvYXRsMQor
VzoJaHR0cDovL2F0bDEuc291cmNlZm9yZ2UubmV0CitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9h
dGhlcm9zLworCitBVE0KK006CUNoYXMgV2lsbGlhbXMgPDNjaGFzM0BnbWFpbC5jb20+CitMOgls
aW51eC1hdG0tZ2VuZXJhbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgKG1vZGVyYXRlZCBmb3Igbm9u
LXN1YnNjcmliZXJzKQorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VzoJaHR0cDovL2xpbnV4LWF0bS5zb3VyY2Vmb3JnZS5uZXQKK0Y6CWRyaXZlcnMvYXRtLworRjoJ
aW5jbHVkZS9saW51eC9hdG0qCitGOglpbmNsdWRlL2xpbnV4L3NvbmV0LmgKK0Y6CWluY2x1ZGUv
dWFwaS9saW51eC9hdG0qCitGOglpbmNsdWRlL3VhcGkvbGludXgvc29uZXQuaAorCitBVE1FTCBN
QUNCIEVUSEVSTkVUIERSSVZFUgorTToJTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBtaWNy
b2NoaXAuY29tPgorTToJQ2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRldj4K
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvCisKK0FUTUVM
IE1BWFRPVUNIIERSSVZFUgorTToJTmljayBEeWVyIDxuaWNrQHNobWFuYWhhci5vcmc+CitTOglN
YWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0aHViLmNvbS9uZHllci9saW51eC5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9hdG1lbCxtYXh0b3VjaC55YW1s
CitGOglkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2F0bWVsX214dF90cy5jCisKK0FUT01JQyBJ
TkZSQVNUUlVDVFVSRQorTToJV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz4KK006CVBldGVy
IFppamxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KK1I6CUJvcXVuIEZlbmcgPGJvcXVuLmZl
bmdAZ21haWwuY29tPgorUjoJTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KK0w6
CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vYXRvbWljXyoudHh0CitGOglhcmNoLyovaW5jbHVkZS9hc20vYXRvbWljKi5oCitGOglp
bmNsdWRlLyovYXRvbWljKi5oCitGOglpbmNsdWRlL2xpbnV4L3JlZmNvdW50LmgKK0Y6CXNjcmlw
dHMvYXRvbWljLworCitBVFRPIEVYUFJFU1NTQVMgU0FTL1NBVEEgUkFJRCBTQ1NJIERSSVZFUgor
TToJQnJhZGxleSBHcm92ZSA8bGludXhkcml2ZXJzQGF0dG90ZWNoLmNvbT4KK0w6CWxpbnV4LXNj
c2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93d3cuYXR0b3RlY2gu
Y29tCitGOglkcml2ZXJzL3Njc2kvZXNhczJyCisKK0FUVVNCIElFRUUgODAyLjE1LjQgUkFESU8g
RFJJVkVSCitNOglTdGVmYW4gU2NobWlkdCA8c3RlZmFuQGRhdGVuZnJlaWhhZmVuLm9yZz4KK0w6
CWxpbnV4LXdwYW5Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25l
dC9pZWVlODAyMTU0L2F0ODZyZjIzMC5oCitGOglkcml2ZXJzL25ldC9pZWVlODAyMTU0L2F0dXNi
LmMKK0Y6CWRyaXZlcnMvbmV0L2llZWU4MDIxNTQvYXR1c2IuaAorCitBVURJVCBTVUJTWVNURU0K
K006CVBhdWwgTW9vcmUgPHBhdWxAcGF1bC1tb29yZS5jb20+CitNOglFcmljIFBhcmlzIDxlcGFy
aXNAcmVkaGF0LmNvbT4KK0w6CWF1ZGl0QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitX
OglodHRwczovL2dpdGh1Yi5jb20vbGludXgtYXVkaXQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtl
cm5lbC5vcmcvcHJvamVjdC9hdWRpdC9saXN0CitCOgltYWlsdG86YXVkaXRAdmdlci5rZXJuZWwu
b3JnCitQOglodHRwczovL2dpdGh1Yi5jb20vbGludXgtYXVkaXQvYXVkaXQta2VybmVsL2Jsb2Iv
bWFpbi9SRUFETUUubWQKK1Q6CWdpdCBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu
dXgva2VybmVsL2dpdC9wY21vb3JlL2F1ZGl0LmdpdAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9h
dWRpdF8qLmgKK0Y6CWluY2x1ZGUvbGludXgvYXVkaXQuaAorRjoJaW5jbHVkZS9saW51eC9hdWRp
dF9hcmNoLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9hdWRpdC5oCitGOglrZXJuZWwvYXVkaXQq
CitGOglsaWIvKmF1ZGl0LmMKK0s6CVxiYXVkaXRfW2Etel8wLTldXCtcYgorCitBVVRPRkRPIEJV
SUxECitNOglSb25nIFh1IDx4dXJAZ29vZ2xlLmNvbT4KK006CUhhbiBTaGVuIDxzaGVuaGFuQGdv
b2dsZS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2LXRvb2xzL2F1dG9m
ZG8ucnN0CitGOglzY3JpcHRzL01ha2VmaWxlLmF1dG9mZG8KKworQVVYSUxJQVJZIEJVUyBEUklW
RVIKK006CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitS
OglEYXZlIEVydG1hbiA8ZGF2aWQubS5lcnRtYW5AaW50ZWwuY29tPgorUjoJSXJhIFdlaW55IDxp
cmEud2VpbnlAaW50ZWwuY29tPgorUjoJTGVvbiBSb21hbm92c2t5IDxsZW9uQGtlcm5lbC5vcmc+
CitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvZHJpdmVyLWNvcmUvZHJpdmVyLWNvcmUuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RyaXZlci1hcGkvYXV4aWxpYXJ5X2J1cy5yc3QKK0Y6CWRyaXZlcnMvYmFzZS9hdXhpbGlhcnku
YworRjoJaW5jbHVkZS9saW51eC9hdXhpbGlhcnlfYnVzLmgKK0Y6CXJ1c3QvaGVscGVycy9hdXhp
bGlhcnkuYworRjoJcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzCitGOglzYW1wbGVzL3J1c3QvcnVz
dF9kcml2ZXJfYXV4aWxpYXJ5LnJzCisKK0FVWElMSUFSWSBESVNQTEFZIERSSVZFUlMKK006CUFu
ZHkgU2hldmNoZW5rbyA8YW5keUBrZXJuZWwub3JnPgorUjoJR2VlcnQgVXl0dGVyaG9ldmVuIDxn
ZWVydEBsaW51eC1tNjhrLm9yZz4KK1M6CU9kZCBGaXhlcworVDoJZ2l0IGdpdDovL2dpdC5rZXJu
ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hbmR5L2xpbnV4LWF1eGRpc3BsYXkuZ2l0
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXV4ZGlzcGxheS8KK0Y6CWRy
aXZlcnMvYXV4ZGlzcGxheS8KK0Y6CWluY2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oCitGOglpbmNs
dWRlL3VhcGkvbGludXgvbWFwX3RvXzE0c2VnbWVudC5oCitGOglpbmNsdWRlL3VhcGkvbGludXgv
bWFwX3RvXzdzZWdtZW50LmgKKworQVZBR08gQVBEUzkzMDYgQU1CSUVOVCBMSUdIVCBTRU5TT1Ig
RFJJVkVSCitNOglTdWJoYWppdCBHaG9zaCA8c3ViaGFqaXQuZ2hvc2hAdHdlYWtsb2dpYy5jb20+
CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L2F2YWdvLGFwZHM5MzAwLnlhbWwK
K0Y6CWRyaXZlcnMvaWlvL2xpZ2h0L2FwZHM5MzA2LmMKKworQVZJQSBIWDcxMSBBTkFMT0cgRElH
SVRBTCBDT05WRVJURVIgSUlPIERSSVZFUgorTToJQW5kcmVhcyBLbGluZ2VyIDxha0BpdC1rbGlu
Z2VyLmRlPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYXZpYS1oeDcxMS55YW1s
CitGOglkcml2ZXJzL2lpby9hZGMvaHg3MTEuYworCitBWC4yNSBORVRXT1JLIExBWUVSCitMOgls
aW51eC1oYW1zQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4LWF4
MjUuaW4tYmVybGluLmRlCitGOglpbmNsdWRlL25ldC9heDI1LmgKK0Y6CWluY2x1ZGUvdWFwaS9s
aW51eC9heDI1LmgKK0Y6CW5ldC9heDI1LworCitBWEVOVElBIEFSTSBERVZJQ0VTCitNOglQZXRl
ciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy
YWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQK
K0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL21pY3JvY2hpcC9hdDkxLWxpbmVhLmR0c2kKK0Y6CWFyY2gv
YXJtL2Jvb3QvZHRzL21pY3JvY2hpcC9hdDkxLW5hdHRlLmR0c2kKK0Y6CWFyY2gvYXJtL2Jvb3Qv
ZHRzL21pY3JvY2hpcC9hdDkxLW5hdHRpcy0yLW5hdHRlLTIuZHRzCitGOglhcmNoL2FybS9ib290
L2R0cy9taWNyb2NoaXAvYXQ5MS10c2U4NTAtMy5kdHMKKworQVhFTlRJQSBBU09DIERSSVZFUlMK
K006CVBldGVyIFJvc2luIDxwZWRhQGF4ZW50aWEuc2U+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9zb3VuZC9heGVudGlhLCoKK0Y6CXNvdW5kL3NvYy9hdG1lbC90c2U4NTAtcGNtNTE0Mi5j
CisKK0FYSS1GQU4tQ09OVFJPTCBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJTnVubyBTw6Eg
PG51bm8uc2FAYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVy
cworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2FkaSxheGktZmFu
LWNvbnRyb2wueWFtbAorRjoJZHJpdmVycy9od21vbi9heGktZmFuLWNvbnRyb2wuYworCitBWEkg
U1BJIEVOR0lORQorTToJTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxv
Zy5jb20+CitNOglOdW5vIFPDoSA8bnVuby5zYUBhbmFsb2cuY29tPgorUjoJRGF2aWQgTGVjaG5l
ciA8ZGxlY2huZXJAYmF5bGlicmUuY29tPgorTDoJbGludXgtc3BpQHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJp
dmVycworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9hZGksYXhpLXNw
aS1lbmdpbmUueWFtbAorRjoJZHJpdmVycy9zcGkvc3BpLWF4aS1zcGktZW5naW5lLmMKKworQVhJ
IFBXTSBHRU5FUkFUT1IKK006CU1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBh
bmFsb2cuY29tPgorTToJTnVubyBTw6EgPG51bm8uc2FAYW5hbG9nLmNvbT4KK1I6CVRyZXZvciBH
YW1ibGluIDx0Z2FtYmxpbkBiYXlsaWJyZS5jb20+CitMOglsaW51eC1wd21Admdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2Fy
ZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2FkaSxh
eGktcHdtZ2VuLnlhbWwKK0Y6CWRyaXZlcnMvcHdtL3B3bS1heGktcHdtZ2VuLmMKKworQVo2MDA3
IERWQiBEUklWRVIKK006CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3Jn
PgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRw
czovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglk
cml2ZXJzL21lZGlhL3VzYi9kdmItdXNiLXYyL2F6NjAwNy5jCisKK0FaVEVDSCBGTSBSQURJTyBS
RUNFSVZFUiBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJ
bGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xp
bnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJz
L21lZGlhL3JhZGlvL3JhZGlvLWF6dGVjaCoKKworQjQzIFdJUkVMRVNTIERSSVZFUgorTDoJbGlu
dXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnCitMOgliNDMtZGV2QGxpc3RzLmluZnJhZGVhZC5v
cmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNl
cnMvRHJpdmVycy9iNDMKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0My8KKwor
QjQzTEVHQUNZIFdJUkVMRVNTIERSSVZFUgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwu
b3JnCitMOgliNDMtZGV2QGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6
Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9iNDMKK0Y6CWRyaXZl
cnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2I0M2xlZ2FjeS8KKworQkFDS0xJR0hUIENMQVNTL1NV
QlNZU1RFTQorTToJTGVlIEpvbmVzIDxsZWVAa2VybmVsLm9yZz4KK006CURhbmllbCBUaG9tcHNv
biA8ZGFuaWVsdEBrZXJuZWwub3JnPgorTToJSmluZ29vIEhhbiA8amluZ29vaGFuMUBnbWFpbC5j
b20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitU
OglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2xlZS9i
YWNrbGlnaHQuZ2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtY2xhc3MtYmFj
a2xpZ2h0CitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWJhY2tsaWdo
dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0CitG
Oglkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC8KK0Y6CWluY2x1ZGUvbGludXgvYmFja2xpZ2h0LmgK
K0Y6CWluY2x1ZGUvbGludXgvcHdtX2JhY2tsaWdodC5oCisKK0JBUkNPIFA1MCBHUElPIERSSVZF
UgorTToJU2FudG9zaCBLdW1hciBZYWRhdiA8c2FudG9zaGt1bWFyLnlhZGF2QGJhcmNvLmNvbT4K
K006CVBldGVyIEtvcnNnYWFyZCA8cGV0ZXIua29yc2dhYXJkQGJhcmNvLmNvbT4KK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2JhcmNvLXA1MC1ncGlvLmMKKworQkFUTUFO
IEFEVkFOQ0VECitNOglNYXJlayBMaW5kbmVyIDxtYXJlay5saW5kbmVyQG1haWxib3gub3JnPgor
TToJU2ltb24gV3VuZGVybGljaCA8c3dAc2ltb253dW5kZXJsaWNoLmRlPgorTToJQW50b25pbyBR
dWFydHVsbGkgPGFudG9uaW9AbWFuZGVsYml0LmNvbT4KK006CVN2ZW4gRWNrZWxtYW5uIDxzdmVu
QG5hcmZhdGlvbi5vcmc+CitMOgliLmEudC5tLmEubkBsaXN0cy5vcGVuLW1lc2gub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vd3d3
Lm9wZW4tbWVzaC5vcmcvCitROglodHRwczovL3BhdGNod29yay5vcGVuLW1lc2gub3JnL3Byb2pl
Y3QvYmF0bWFuL2xpc3QvCitCOglodHRwczovL3d3dy5vcGVuLW1lc2gub3JnL3Byb2plY3RzL2Jh
dG1hbi1hZHYvaXNzdWVzCitDOglpcmNzOi8vaXJjLmhhY2tpbnQub3JnL2JhdGFkdgorVDoJZ2l0
IGh0dHBzOi8vZ2l0Lm9wZW4tbWVzaC5vcmcvbGludXgtbWVyZ2UuZ2l0CitGOglEb2N1bWVudGF0
aW9uL25ldHdvcmtpbmcvYmF0bWFuLWFkdi5yc3QKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9iYXRh
ZHZfcGFja2V0LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9iYXRtYW5fYWR2LmgKK0Y6CW5ldC9i
YXRtYW4tYWR2LworCitCQVlDT00vSERMQ0RSViBEUklWRVJTIEZPUiBBWC4yNQorTToJVGhvbWFz
IFNhaWxlciA8dC5zYWlsZXJAYWx1bW5pLmV0aHouY2g+CitMOglsaW51eC1oYW1zQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5iYXljb20ub3JnL350b20vaGFt
L2hhbS5odG1sCitGOglkcml2ZXJzL25ldC9oYW1yYWRpby9iYXljb20qCisKK0JDQUNIRSAoQkxP
Q0sgTEFZRVIgQ0FDSEUpCitNOglDb2x5IExpIDxjb2x5bGlAa2VybmVsLm9yZz4KK006CUtlbnQg
T3ZlcnN0cmVldCA8a2VudC5vdmVyc3RyZWV0QGxpbnV4LmRldj4KK0w6CWxpbnV4LWJjYWNoZUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9iY2FjaGUuZXZpbHBpZXBp
cmF0ZS5vcmcKK0M6CWlyYzovL2lyYy5vZnRjLm5ldC9iY2FjaGUKK0Y6CWRyaXZlcnMvbWQvYmNh
Y2hlLworCitCQ0FDSEVGUworTToJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAbGlu
dXguZGV2PgorTDoJbGludXgtYmNhY2hlZnNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQK
K0M6CWlyYzovL2lyYy5vZnRjLm5ldC9iY2FjaGUKK1A6ICAgICAgRG9jdW1lbnRhdGlvbi9maWxl
c3lzdGVtcy9iY2FjaGVmcy9TdWJtaXR0aW5nUGF0Y2hlcy5yc3QKK1Q6CWdpdCBodHRwczovL2V2
aWxwaWVwaXJhdGUub3JnL2dpdC9iY2FjaGVmcy5naXQKK0Y6CWZzL2JjYWNoZWZzLworRjoJRG9j
dW1lbnRhdGlvbi9maWxlc3lzdGVtcy9iY2FjaGVmcy8KKworQkRJU1AgU1QgTUVESUEgRFJJVkVS
CitNOglGYWJpZW4gRGVzc2VubmUgPGZhYmllbi5kZXNzZW5uZUBmb3NzLnN0LmNvbT4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2xpbnV4
dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21l
ZGlhL3BsYXRmb3JtL3N0L3N0aS9iZGlzcAorCitCRUNLSE9GRiBDWDUwMjAgRVRIRVJDQVQgTUFT
VEVSIERSSVZFUgorTToJRGFyaXVzeiBNYXJjaW5raWV3aWN6IDxyZWtzaW9AbmV3dGVybS5wbD4K
K0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0
L2V0aGVybmV0L2VjX2JoZi5jCisKK0JFRlMgRklMRSBTWVNURU0KK006CUx1aXMgZGUgQmV0aGVu
Y291cnQgPGx1aXNiZ0BrZXJuZWwub3JnPgorTToJU2FsYWggVHJpa2kgPHNhbGFoLnRyaWtpQGdt
YWlsLmNvbT4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvbHVpc2JnL2xpbnV4LWJlZnMuZ2l0CitGOglEb2N1bWVudGF0
aW9uL2ZpbGVzeXN0ZW1zL2JlZnMucnN0CitGOglmcy9iZWZzLworCitCRlEgSS9PIFNDSEVEVUxF
UgorTToJWXUgS3VhaSA8eXVrdWFpM0BodWF3ZWkuY29tPgorTDoJbGludXgtYmxvY2tAdmdlci5r
ZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK0Y6CURvY3VtZW50YXRpb24vYmxvY2svYmZxLWlvc2No
ZWQucnN0CitGOglibG9jay9iZnEtKgorCitCRlMgRklMRSBTWVNURU0KK006CSJUaWdyYW4gQS4g
QWl2YXppYW4iIDxhaXZhemlhbi50aWdyYW5AZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9iZnMucnN0CitGOglmcy9iZnMvCitGOglpbmNsdWRl
L3VhcGkvbGludXgvYmZzX2ZzLmgKKworQklOTUFOCitNOglTaW1vbiBHbGFzcyA8c2pnQGNocm9t
aXVtLm9yZz4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL210ZC9wYXJ0aXRpb25zL2Jpbm1hbioKKworQklUTUFQIEFQSQorTToJWXVyeSBOb3JvdiA8
eXVyeS5ub3JvdkBnbWFpbC5jb20+CitSOglSYXNtdXMgVmlsbGVtb2VzIDxsaW51eEByYXNtdXN2
aWxsZW1vZXMuZGs+CitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL2xpbnV4L2JpdGZpZWxkLmgK
K0Y6CWluY2x1ZGUvbGludXgvYml0bWFwLXN0ci5oCitGOglpbmNsdWRlL2xpbnV4L2JpdG1hcC5o
CitGOglpbmNsdWRlL2xpbnV4L2JpdHMuaAorRjoJaW5jbHVkZS9saW51eC9jcHVtYXNrLmgKK0Y6
CWluY2x1ZGUvbGludXgvY3B1bWFza190eXBlcy5oCitGOglpbmNsdWRlL2xpbnV4L2ZpbmQuaAor
RjoJaW5jbHVkZS9saW51eC9ub2RlbWFzay5oCitGOglpbmNsdWRlL2xpbnV4L25vZGVtYXNrX3R5
cGVzLmgKK0Y6CWluY2x1ZGUvdmRzby9iaXRzLmgKK0Y6CWxpYi9iaXRtYXAtc3RyLmMKK0Y6CWxp
Yi9iaXRtYXAuYworRjoJbGliL2NwdW1hc2suYworRjoJbGliL2ZpbmRfYml0LmMKK0Y6CWxpYi9m
aW5kX2JpdF9iZW5jaG1hcmsuYworRjoJbGliL3Rlc3RfYml0bWFwLmMKK0Y6CWxpYi90ZXN0cy9j
cHVtYXNrX2t1bml0LmMKK0Y6CXRvb2xzL2luY2x1ZGUvbGludXgvYml0ZmllbGQuaAorRjoJdG9v
bHMvaW5jbHVkZS9saW51eC9iaXRtYXAuaAorRjoJdG9vbHMvaW5jbHVkZS9saW51eC9iaXRzLmgK
K0Y6CXRvb2xzL2luY2x1ZGUvbGludXgvZmluZC5oCitGOgl0b29scy9pbmNsdWRlL3Zkc28vYml0
cy5oCitGOgl0b29scy9saWIvYml0bWFwLmMKK0Y6CXRvb2xzL2xpYi9maW5kX2JpdC5jCisKK0JJ
VE1BUCBBUEkgQklORElOR1MgW1JVU1RdCitNOglZdXJ5IE5vcm92IDx5dXJ5Lm5vcm92QGdtYWls
LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CXJ1c3QvaGVscGVycy9jcHVtYXNrLmMKKworQklUT1BT
IEFQSQorTToJWXVyeSBOb3JvdiA8eXVyeS5ub3JvdkBnbWFpbC5jb20+CitSOglSYXNtdXMgVmls
bGVtb2VzIDxsaW51eEByYXNtdXN2aWxsZW1vZXMuZGs+CitTOglNYWludGFpbmVkCitGOglhcmNo
LyovaW5jbHVkZS9hc20vYml0b3BzLmgKK0Y6CWFyY2gvKi9pbmNsdWRlL2FzbS9iaXRvcHNfMzIu
aAorRjoJYXJjaC8qL2luY2x1ZGUvYXNtL2JpdG9wc182NC5oCitGOglhcmNoLyovbGliL2JpdG9w
cy5jCitGOglpbmNsdWRlL2FzbS1nZW5lcmljL2JpdG9wcworRjoJaW5jbHVkZS9hc20tZ2VuZXJp
Yy9iaXRvcHMuaAorRjoJaW5jbHVkZS9saW51eC9iaXRvcHMuaAorRjoJbGliL3Rlc3RfYml0b3Bz
LmMKK0Y6CXRvb2xzLyovYml0b3BzKgorCitCTElOS00gUkdCIExFRCBEUklWRVIKK006CUphbi1T
aW1vbiBNb2VsbGVyIDxqYW5zaW1vbi5tb2VsbGVyQGdteC5kZT4KK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvbGVkcy9sZWRzLWJsaW5rbS5jCisKK0JMT0NLIExBWUVSCitNOglKZW5zIEF4Ym9l
IDxheGJvZUBrZXJuZWwuZGs+CitMOglsaW51eC1ibG9ja0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvYXhib2UvbGludXgtYmxvY2suZ2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS9zdGFibGUv
c3lzZnMtYmxvY2sKK0Y6CURvY3VtZW50YXRpb24vYmxvY2svCitGOglibG9jay8KK0Y6CWRyaXZl
cnMvYmxvY2svCitGOglpbmNsdWRlL2xpbnV4L2Jpby5oCitGOglpbmNsdWRlL2xpbnV4L2JsayoK
K0Y6CWtlcm5lbC90cmFjZS9ibGt0cmFjZS5jCitGOglsaWIvc2JpdG1hcC5jCisKK0JMT0NLIExB
WUVSIERFVklDRSBEUklWRVIgQVBJIFtSVVNUXQorTToJQW5kcmVhcyBIaW5kYm9yZyA8YS5oaW5k
Ym9yZ0BrZXJuZWwub3JnPgorUjoJQm9xdW4gRmVuZyA8Ym9xdW4uZmVuZ0BnbWFpbC5jb20+CitM
OglsaW51eC1ibG9ja0B2Z2VyLmtlcm5lbC5vcmcKK0w6CXJ1c3QtZm9yLWxpbnV4QHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL3J1c3QtZm9yLWxpbnV4LmNvbQorQjoJ
aHR0cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4L2xpbnV4L2lzc3VlcworQzoJaHR0cHM6
Ly9ydXN0LWZvci1saW51eC56dWxpcGNoYXQuY29tLyNuYXJyb3cvc3RyZWFtL0Jsb2NrCitUOgln
aXQgaHR0cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4L2xpbnV4LmdpdCBydXN0LWJsb2Nr
LW5leHQKK0Y6CWRyaXZlcnMvYmxvY2svcm51bGwucnMKK0Y6CXJ1c3Qva2VybmVsL2Jsb2NrLnJz
CitGOglydXN0L2tlcm5lbC9ibG9jay8KKworQkxPQ0syTVREIERSSVZFUgorTToJSm9lcm4gRW5n
ZWwgPGpvZXJuQGxhenliYXN0YXJkLm9yZz4KK0w6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQu
b3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL210ZC9kZXZpY2VzL2Jsb2NrMm10ZC5jCisK
K0JMVUVUT09USCBEUklWRVJTCitNOglNYXJjZWwgSG9sdG1hbm4gPG1hcmNlbEBob2x0bWFubi5v
cmc+CitNOglMdWl6IEF1Z3VzdG8gdm9uIERlbnR6IDxsdWl6LmRlbnR6QGdtYWlsLmNvbT4KK0w6
CWxpbnV4LWJsdWV0b290aEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDov
L3d3dy5ibHVlei5vcmcvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51
eC9rZXJuZWwvZ2l0L2JsdWV0b290aC9ibHVldG9vdGguZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JsdWV0b290aC9ibHVldG9vdGgtbmV4
dC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3Ro
LworRjoJZHJpdmVycy9ibHVldG9vdGgvCisKK0JMVUVUT09USCBTVUJTWVNURU0KK006CU1hcmNl
bCBIb2x0bWFubiA8bWFyY2VsQGhvbHRtYW5uLm9yZz4KK006CUpvaGFuIEhlZGJlcmcgPGpvaGFu
LmhlZGJlcmdAZ21haWwuY29tPgorTToJTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei5kZW50
ekBnbWFpbC5jb20+CitMOglsaW51eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK1c6CWh0dHA6Ly93d3cuYmx1ZXoub3JnLworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ibHVldG9vdGgvYmx1ZXRvb3RoLmdpdAorVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ibHVldG9v
dGgvYmx1ZXRvb3RoLW5leHQuZ2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMt
Y2xhc3MtYmx1ZXRvb3RoCitGOglpbmNsdWRlL25ldC9ibHVldG9vdGgvCitGOgluZXQvYmx1ZXRv
b3RoLworCitCTFpQMTYwMCBHUElPIERSSVZFUgorTToJSmFtZXMgQ293Z2lsbCA8amFtZXMuY293
Z2lsbEBibGFpemUuY29tPgorTToJTWF0dCBSZWRmZWFybiA8bWF0dC5yZWRmZWFybkBibGFpemUu
Y29tPgorTToJTmVpbCBKb25lcyA8bmVpbC5qb25lc0BibGFpemUuY29tPgorTToJTmlrb2xhb3Mg
UGFzYWxvdWtvcyA8bmlrb2xhb3MucGFzYWxvdWtvc0BibGFpemUuY29tPgorTDoJbGludXgtZ3Bp
b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9ncGlvL2JsYWl6ZSxibHpwMTYwMC1ncGlvLnlhbWwKK0Y6CWRyaXZlcnMv
Z3Bpby9ncGlvLWJsenAxNjAwLmMKKworQk9ORElORyBEUklWRVIKK006CUpheSBWb3NidXJnaCA8
anZAanZvc2J1cmdoLm5ldD4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnJzdAorRjoJZHJpdmVycy9u
ZXQvYm9uZGluZy8KK0Y6CWluY2x1ZGUvbmV0L2JvbmQqCitGOglpbmNsdWRlL3VhcGkvbGludXgv
aWZfYm9uZGluZy5oCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25k
aW5nLworCitCT1NDSCBTRU5TT1JURUMgQk1BNDAwIEFDQ0VMRVJPTUVURVIgSUlPIERSSVZFUgor
TToJRGFuIFJvYmVydHNvbiA8ZGFuQGRscm9iZXJ0c29uLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9paW8vYWNjZWwvYm9zY2gsYm1hNDAwLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FjY2Vs
L2JtYTQwMCoKKworQk9TQ0ggU0VOU09SVEVDIEJNSTI3MCBJTVUgSUlPIERSSVZFUgorTToJQWxl
eCBMYW56YW5vIDxsYW56YW5vLmFsZXhAZ21haWwuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2lpby9pbXUvYm9zY2gsYm1pMjcwLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2ltdS9ibWkyNzAv
CisKK0JPU0NIIFNFTlNPUlRFQyBCTUkzMjMgSU1VIElJTyBEUklWRVIKK006CUphZ2F0aCBKb2cg
SiA8amFnYXRoam9nMTk5NkBnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlv
L2ltdS9ib3NjaCxibWkzMjMueWFtbAorRjoJZHJpdmVycy9paW8vaW11L2JtaTMyMy8KKworQlBG
IEpJVCBmb3IgQVJDCitNOglTaGFoYWIgVmFoZWRpIDxsaXN0K2JwZkB2YWhlZGkub3JnPgorTDoJ
YnBmQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcmMvbmV0LworCitC
UEYgSklUIGZvciBBUk0KK006CVJ1c3NlbGwgS2luZyA8bGludXhAYXJtbGludXgub3JnLnVrPgor
TToJUHVyYW5qYXkgTW9oYW4gPHB1cmFuamF5QGtlcm5lbC5vcmc+CitMOglicGZAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglhcmNoL2FybS9uZXQvCisKK0JQRiBKSVQgZm9yIEFS
TTY0CitNOglEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgorTToJQWxleGVp
IFN0YXJvdm9pdG92IDxhc3RAa2VybmVsLm9yZz4KK006CVB1cmFuamF5IE1vaGFuIDxwdXJhbmph
eUBrZXJuZWwub3JnPgorUjoJWHUgS3VvaGFpIDx4dWt1b2hhaUBodWF3ZWljbG91ZC5jb20+CitM
OglicGZAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gvYXJtNjQvbmV0Lwor
CitCUEYgSklUIGZvciBMT09OR0FSQ0gKK006CVRpZXpodSBZYW5nIDx5YW5ndGllemh1QGxvb25n
c29uLmNuPgorUjoJSGVuZ3FpIENoZW4gPGhlbmdxaS5jaGVuQGdtYWlsLmNvbT4KK0w6CWJwZkB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvbG9vbmdhcmNoL25ldC8KKwor
QlBGIEpJVCBmb3IgTUlQUyAoMzItQklUIEFORCA2NC1CSVQpCitNOglKb2hhbiBBbG1ibGFkaCA8
am9oYW4uYWxtYmxhZGhAYW55ZmluZXR3b3Jrcy5jb20+CitNOglQYXVsIEJ1cnRvbiA8cGF1bGJ1
cnRvbkBrZXJuZWwub3JnPgorTDoJYnBmQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJYXJjaC9taXBzL25ldC8KKworQlBGIEpJVCBmb3IgTkZQIE5JQ3MKK006CUpha3ViIEtpY2lu
c2tpIDxrdWJhQGtlcm5lbC5vcmc+CitMOglicGZAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4
ZXMKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvYnBmLworCitCUEYgSklU
IGZvciBQT1dFUlBDICgzMi1CSVQgQU5EIDY0LUJJVCkKK006CUhhcmkgQmF0aGluaSA8aGJhdGhp
bmlAbGludXguaWJtLmNvbT4KK006CUNocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lA
Y3Nncm91cC5ldT4KK1I6CU5hdmVlbiBOIFJhbyA8bmF2ZWVuQGtlcm5lbC5vcmc+CitMOglicGZA
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gvcG93ZXJwYy9uZXQvCisKK0JQ
RiBKSVQgZm9yIFJJU0MtViAoMzItYml0KQorTToJTHVrZSBOZWxzb24gPGx1a2Uuci5uZWxzQGdt
YWlsLmNvbT4KK006CVhpIFdhbmcgPHhpLndhbmdAZ21haWwuY29tPgorTDoJYnBmQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9yaXNjdi9uZXQvCitYOglhcmNoL3Jpc2N2
L25ldC9icGZfaml0X2NvbXA2NC5jCisKK0JQRiBKSVQgZm9yIFJJU0MtViAoNjQtYml0KQorTToJ
QmrDtnJuIFTDtnBlbCA8Ympvcm5Aa2VybmVsLm9yZz4KK1I6CVB1IExlaHVpIDxwdWxlaHVpQGh1
YXdlaS5jb20+CitSOglQdXJhbmpheSBNb2hhbiA8cHVyYW5qYXlAa2VybmVsLm9yZz4KK0w6CWJw
ZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvcmlzY3YvbmV0LworWDoJ
YXJjaC9yaXNjdi9uZXQvYnBmX2ppdF9jb21wMzIuYworCitCUEYgSklUIGZvciBTMzkwCitNOglJ
bHlhIExlb3Noa2V2aWNoIDxpaWlAbGludXguaWJtLmNvbT4KK006CUhlaWtvIENhcnN0ZW5zIDxo
Y2FAbGludXguaWJtLmNvbT4KK006CVZhc2lseSBHb3JiaWsgPGdvckBsaW51eC5pYm0uY29tPgor
TDoJYnBmQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglhcmNoL3MzOTAvbmV0Lwor
WDoJYXJjaC9zMzkwL25ldC9wbmV0LmMKKworQlBGIEpJVCBmb3IgU1BBUkMgKDMyLUJJVCBBTkQg
NjQtQklUKQorTToJRGF2aWQgUy4gTWlsbGVyIDxkYXZlbUBkYXZlbWxvZnQubmV0PgorTDoJYnBm
QHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitGOglhcmNoL3NwYXJjL25ldC8KKworQlBG
IEpJVCBmb3IgWDg2IDMyLUJJVAorTToJV2FuZyBZYW5RaW5nIDx1ZGtuaWdodEBnbWFpbC5jb20+
CitMOglicGZAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK0Y6CWFyY2gveDg2L25ldC9i
cGZfaml0X2NvbXAzMi5jCisKK0JQRiBKSVQgZm9yIFg4NiA2NC1CSVQKK006CUFsZXhlaSBTdGFy
b3ZvaXRvdiA8YXN0QGtlcm5lbC5vcmc+CitNOglEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dl
YXJib3gubmV0PgorTDoJYnBmQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglhcmNo
L3g4Ni9uZXQvCitYOglhcmNoL3g4Ni9uZXQvYnBmX2ppdF9jb21wMzIuYworCitCUEYgW0JURl0K
K006CU1hcnRpbiBLYUZhaSBMYXUgPG1hcnRpbi5sYXVAbGludXguZGV2PgorTDoJYnBmQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC9idGYqCitGOglrZXJu
ZWwvYnBmL2J0Zi5jCisKK0JQRiBbQ09SRV0KK006CUFsZXhlaSBTdGFyb3ZvaXRvdiA8YXN0QGtl
cm5lbC5vcmc+CitNOglEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgorUjoJ
Sm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4KK0w6CWJwZkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvbGludXgvYnBmKgorRjoJaW5jbHVk
ZS9saW51eC9maWx0ZXIuaAorRjoJaW5jbHVkZS9saW51eC90bnVtLmgKK0Y6CWtlcm5lbC9icGYv
Y29yZS5jCitGOglrZXJuZWwvYnBmL2Rpc3BhdGNoZXIuYworRjoJa2VybmVsL2JwZi9tcHJvZy5j
CitGOglrZXJuZWwvYnBmL3N5c2NhbGwuYworRjoJa2VybmVsL2JwZi90bnVtLmMKK0Y6CWtlcm5l
bC9icGYvdHJhbXBvbGluZS5jCitGOglrZXJuZWwvYnBmL3ZlcmlmaWVyLmMKKworQlBGIFtDUllQ
VE9dCitNOglWYWRpbSBGZWRvcmVua28gPHZhZGltLmZlZG9yZW5rb0BsaW51eC5kZXY+CitMOgli
cGZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOgljcnlwdG8vYnBmX2NyeXB0b19z
a2NpcGhlci5jCitGOglpbmNsdWRlL2xpbnV4L2JwZl9jcnlwdG8uaAorRjoJa2VybmVsL2JwZi9j
cnlwdG8uYworCitCUEYgW0RPQ1VNRU5UQVRJT05dIChSZWxhdGVkIHRvIFN0YW5kYXJkaXphdGlv
bikKK1I6CURhdmlkIFZlcm5ldCA8dm9pZEBtYW5pZmF1bHQuY29tPgorTDoJYnBmQHZnZXIua2Vy
bmVsLm9yZworTDoJYnBmQGlldGYub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2JwZi9zdGFuZGFyZGl6YXRpb24vCisKK0JQRiBbR0VORVJBTF0gKFNhZmUgRHluYW1pYyBQcm9n
cmFtcyBhbmQgVG9vbHMpCitNOglBbGV4ZWkgU3Rhcm92b2l0b3YgPGFzdEBrZXJuZWwub3JnPgor
TToJRGFuaWVsIEJvcmttYW5uIDxkYW5pZWxAaW9nZWFyYm94Lm5ldD4KK006CUFuZHJpaSBOYWty
eWlrbyA8YW5kcmlpQGtlcm5lbC5vcmc+CitSOglNYXJ0aW4gS2FGYWkgTGF1IDxtYXJ0aW4ubGF1
QGxpbnV4LmRldj4KK1I6CUVkdWFyZCBaaW5nZXJtYW4gPGVkZHl6ODdAZ21haWwuY29tPgorUjoJ
U29uZyBMaXUgPHNvbmdAa2VybmVsLm9yZz4KK1I6CVlvbmdob25nIFNvbmcgPHlvbmdob25nLnNv
bmdAbGludXguZGV2PgorUjoJSm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNv
bT4KK1I6CUtQIFNpbmdoIDxrcHNpbmdoQGtlcm5lbC5vcmc+CitSOglTdGFuaXNsYXYgRm9taWNo
ZXYgPHNkZkBmb21pY2hldi5tZT4KK1I6CUhhbyBMdW8gPGhhb2x1b0Bnb29nbGUuY29tPgorUjoJ
SmlyaSBPbHNhIDxqb2xzYUBrZXJuZWwub3JnPgorTDoJYnBmQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwczovL2JwZi5pby8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5l
bC5vcmcvcHJvamVjdC9uZXRkZXZicGYvbGlzdC8/ZGVsZWdhdGU9MTIxMTczCitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JwZi9icGYuZ2l0CitU
OglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JwZi9i
cGYtbmV4dC5naXQKK0Y6CURvY3VtZW50YXRpb24vYnBmLworRjoJRG9jdW1lbnRhdGlvbi9uZXR3
b3JraW5nL2ZpbHRlci5yc3QKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9lYnBmLwor
RjoJYXJjaC8qL25ldC8qCitGOglpbmNsdWRlL2xpbnV4L2JwZioKK0Y6CWluY2x1ZGUvbGludXgv
YnRmKgorRjoJaW5jbHVkZS9saW51eC9maWx0ZXIuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMv
eGRwLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9icGYqCitGOglpbmNsdWRlL3VhcGkvbGludXgv
YnRmKgorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2ZpbHRlci5oCitGOglrZXJuZWwvYnBmLworRjoJ
a2VybmVsL3RyYWNlL2JwZl90cmFjZS5jCitGOglsaWIvYnVpbGRpZC5jCitGOglhcmNoLyovaW5j
bHVkZS9hc20vcnFzcGlubG9jay5oCitGOglpbmNsdWRlL2FzbS1nZW5lcmljL3Jxc3BpbmxvY2su
aAorRjoJbGliL3Rlc3RfYnBmLmMKK0Y6CW5ldC9icGYvCitGOgluZXQvY29yZS9maWx0ZXIuYwor
RjoJbmV0L3NjaGVkL2FjdF9icGYuYworRjoJbmV0L3NjaGVkL2Nsc19icGYuYworRjoJc2FtcGxl
cy9icGYvCitGOglzY3JpcHRzL2JwZl9kb2MucHkKK0Y6CXNjcmlwdHMvTWFrZWZpbGUuYnRmCitG
OglzY3JpcHRzL3BhaG9sZS12ZXJzaW9uLnNoCitGOgl0b29scy9icGYvCitGOgl0b29scy9saWIv
YnBmLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLworCitCUEYgW0lURVJBVE9SXQor
TToJWW9uZ2hvbmcgU29uZyA8eW9uZ2hvbmcuc29uZ0BsaW51eC5kZXY+CitMOglicGZAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglrZXJuZWwvYnBmLyppdGVyLmMKKworQlBGIFtM
NyBGUkFNRVdPUktdIChzb2NrbWFwKQorTToJSm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5k
QGdtYWlsLmNvbT4KK006CUpha3ViIFNpdG5pY2tpIDxqYWt1YkBjbG91ZGZsYXJlLmNvbT4KK0w6
CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWJwZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWluY2x1ZGUvbGludXgvc2ttc2cuaAorRjoJbmV0L2NvcmUvc2ttc2cuYworRjoJ
bmV0L2NvcmUvc29ja19tYXAuYworRjoJbmV0L2lwdjQvdGNwX2JwZi5jCitGOgluZXQvaXB2NC91
ZHBfYnBmLmMKK0Y6CW5ldC91bml4L3VuaXhfYnBmLmMKKworQlBGIFtMSUJSQVJZXSAobGliYnBm
KQorTToJQW5kcmlpIE5ha3J5aWtvIDxhbmRyaWlAa2VybmVsLm9yZz4KK006CUVkdWFyZCBaaW5n
ZXJtYW4gPGVkZHl6ODdAZ21haWwuY29tPgorTDoJYnBmQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJdG9vbHMvbGliL2JwZi8KKworQlBGIFtNSVNDXQorTDoJYnBmQHZnZXIua2Vy
bmVsLm9yZworUzoJT2RkIEZpeGVzCitLOgkoPzpcYnxfKWJwZig/OlxifF8pCisKK0JQRiBbTkVU
S0lUXSAoQlBGLXByb2dyYW1tYWJsZSBuZXR3b3JrIGRldmljZSkKK006CURhbmllbCBCb3JrbWFu
biA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CitNOglOaWtvbGF5IEFsZWtzYW5kcm92IDxyYXpvckBi
bGFja3dhbGwub3JnPgorTDoJYnBmQHZnZXIua2VybmVsLm9yZworTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL25ldC9uZXRraXQuYworRjoJaW5jbHVk
ZS9uZXQvbmV0a2l0LmgKKworQlBGIFtORVRXT1JLSU5HXSAoc3RydWN0X29wcywgcmV1c2Vwb3J0
KQorTToJTWFydGluIEthRmFpIExhdSA8bWFydGluLmxhdUBsaW51eC5kZXY+CitMOglicGZAdmdl
ci5rZXJuZWwub3JnCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
OglrZXJuZWwvYnBmL2JwZl9zdHJ1Y3QqCisKK0JQRiBbTkVUV09SS0lOR10gKHRjeCAmIHRjIEJQ
Riwgc29ja19hZGRyKQorTToJTWFydGluIEthRmFpIExhdSA8bWFydGluLmxhdUBsaW51eC5kZXY+
CitNOglEYW5pZWwgQm9ya21hbm4gPGRhbmllbEBpb2dlYXJib3gubmV0PgorUjoJSm9obiBGYXN0
YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4KK0w6CWJwZkB2Z2VyLmtlcm5lbC5vcmcK
K0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvbmV0
L3RjeC5oCitGOglrZXJuZWwvYnBmL3RjeC5jCitGOgluZXQvY29yZS9maWx0ZXIuYworRjoJbmV0
L3NjaGVkL2FjdF9icGYuYworRjoJbmV0L3NjaGVkL2Nsc19icGYuYworCitCUEYgW1JJTkdCVUZd
CitNOglBbmRyaWkgTmFrcnlpa28gPGFuZHJpaUBrZXJuZWwub3JnPgorTDoJYnBmQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJa2VybmVsL2JwZi9yaW5nYnVmLmMKKworQlBGIFtT
RUNVUklUWSAmIExTTV0gKFNlY3VyaXR5IEF1ZGl0IGFuZCBFbmZvcmNlbWVudCB1c2luZyBCUEYp
CitNOglLUCBTaW5naCA8a3BzaW5naEBrZXJuZWwub3JnPgorTToJTWF0dCBCb2Jyb3dza2kgPG1h
dHRib2Jyb3dza2lAZ29vZ2xlLmNvbT4KK0w6CWJwZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYnBmL3Byb2dfbHNtLnJzdAorRjoJaW5jbHVkZS9saW51
eC9icGZfbHNtLmgKK0Y6CWtlcm5lbC9icGYvYnBmX2xzbS5jCitGOglrZXJuZWwvdHJhY2UvYnBm
X3RyYWNlLmMKK0Y6CXNlY3VyaXR5L2JwZi8KKworQlBGIFtTRUxGVEVTVFNdIChUZXN0IFJ1bm5l
cnMgJiBJbmZyYXN0cnVjdHVyZSkKK006CUFuZHJpaSBOYWtyeWlrbyA8YW5kcmlpQGtlcm5lbC5v
cmc+CitNOglFZHVhcmQgWmluZ2VybWFuIDxlZGR5ejg3QGdtYWlsLmNvbT4KK1I6CU15a29sYSBM
eXNlbmtvIDxteWtvbGFsQGZiLmNvbT4KK0w6CWJwZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8KKworQlBGIFtTVE9SQUdFICYg
Q0dST1VQU10KK006CU1hcnRpbiBLYUZhaSBMYXUgPG1hcnRpbi5sYXVAbGludXguZGV2PgorTDoJ
YnBmQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJa2VybmVsL2JwZi8qc3RvcmFn
ZS5jCitGOglrZXJuZWwvYnBmL2JwZl9scnUqCitGOglrZXJuZWwvYnBmL2Nncm91cC5jCisKK0JQ
RiBbVE9PTElOR10gKGJwZnRvb2wpCitNOglRdWVudGluIE1vbm5ldCA8cW1vQGtlcm5lbC5vcmc+
CitMOglicGZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglrZXJuZWwvYnBmL2Rp
c2FzbS4qCitGOgl0b29scy9icGYvYnBmdG9vbC8KKworQlBGIFtUUkFDSU5HXQorTToJU29uZyBM
aXUgPHNvbmdAa2VybmVsLm9yZz4KK1I6CUppcmkgT2xzYSA8am9sc2FAa2VybmVsLm9yZz4KK0w6
CWJwZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWtlcm5lbC9icGYvc3RhY2tt
YXAuYworRjoJa2VybmVsL3RyYWNlL2JwZl90cmFjZS5jCitGOglsaWIvYnVpbGRpZC5jCisKK0JS
T0FEQ09NIEFQRFM5MTYwIEFNQklFTlQgTElHSFQgU0VOU09SIEFORCBQUk9YSU1JVFkgRFJJVkVS
CitNOglNaWthZWwgR29uZWxsYS1Cb2xkdWMgPG0uZ29uZWxsYS5ib2xkdWNAZ21haWwuY29tPgor
TDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9icmNtLGFwZHM5MTYwLnlhbWwKK0Y6
CWRyaXZlcnMvaWlvL2xpZ2h0L2FwZHM5MTYwLmMKKworQlJPQURDT00gQVNQIDIuMCBFVEhFUk5F
VCBEUklWRVIKK006CUp1c3RpbiBDaGVuIDxqdXN0aW4uY2hlbkBicm9hZGNvbS5jb20+CitNOglG
bG9yaWFuIEZhaW5lbGxpIDxmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNvbT4KK0w6CWJjbS1r
ZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25l
dC9icmNtLGFzcC12Mi4wLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2Fz
cDIvCisKK0JST0FEQ09NIEI0NCAxMC8xMDAgRVRIRVJORVQgRFJJVkVSCitNOglNaWNoYWVsIENo
YW4gPG1pY2hhZWwuY2hhbkBicm9hZGNvbS5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuKgor
CitCUk9BRENPTSBCNTMvU0YyIEVUSEVSTkVUIFNXSVRDSCBEUklWRVIKK006CUZsb3JpYW4gRmFp
bmVsbGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRjb20uY29tPgorTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworTDoJb3BlbndydC1kZXZlbEBsaXN0cy5vcGVud3J0Lm9yZyAoc3Vic2NyaWJlcnMt
b25seSkKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L25ldC9kc2EvYnJjbSxiNTMueWFtbAorRjoJZHJpdmVycy9uZXQvZHNhL2I1My8qCitGOglkcml2
ZXJzL25ldC9kc2EvYmNtX3NmMioKK0Y6CWluY2x1ZGUvbGludXgvZHNhL2JyY20uaAorRjoJaW5j
bHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2I1My5oCisKK0JST0FEQ09NIEJDTTI3MTEvQkNNMjgz
NSBBUk0gQVJDSElURUNUVVJFCitNOglGbG9yaWFuIEZhaW5lbGxpIDxmbG9yaWFuLmZhaW5lbGxp
QGJyb2FkY29tLmNvbT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8
YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LXJwaS1rZXJu
ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitM
OglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9u
LXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9i
cm9hZGNvbS9zdGJsaW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9wY2kvYnJjbSxzdGItcGNpZS55YW1sCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUt
YnJjbXN0Yi5jCitGOglkcml2ZXJzL3N0YWdpbmcvdmMwNF9zZXJ2aWNlcworTjoJYmNtMjcxMQor
TjoJYmNtMjgzKgorTjoJcmFzcGJlcnJ5cGkKKworQlJPQURDT00gQkNNMjgxWFgvQkNNMTFYWFgv
QkNNMjE2WFggQVJNIEFSQ0hJVEVDVFVSRQorTToJRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5m
YWluZWxsaUBicm9hZGNvbS5jb20+CitNOglSYXkgSnVpIDxyanVpQGJyb2FkY29tLmNvbT4KK006
CVNjb3R0IEJyYW5kZW4gPHNicmFuZGVuQGJyb2FkY29tLmNvbT4KK1I6CUJyb2FkY29tIGludGVy
bmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29t
LmNvbT4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vYnJvYWRjb20v
bWFjaC1iY20KK0Y6CWFyY2gvYXJtL21hY2gtYmNtLworTjoJYmNtMjgxKgorTjoJYmNtMTEzKgor
TjoJYmNtMjE2KgorTjoJa29uYQorCitCUk9BRENPTSBCQ00yODM1IENBTUVSQSBEUklWRVJTCitN
OglSYXNwYmVycnkgUGkgS2VybmVsIE1haW50ZW5hbmNlIDxrZXJuZWwtbGlzdEByYXNwYmVycnlw
aS5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9icmNtLGJjbTI4MzUtdW5p
Y2FtLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYnJvYWRjb20vYmNtMjgzNS11bmlj
YW0qCisKK0JST0FEQ09NIEJDTTQ3WFggTUlQUyBBUkNISVRFQ1RVUkUKK006CUhhdWtlIE1laHJ0
ZW5zIDxoYXVrZUBoYXVrZS1tLmRlPgorTToJUmFmYcWCIE1pxYJlY2tpIDx6YWplYzVAZ21haWwu
Y29tPgorTDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL2JyY20vCitGOglhcmNoL21pcHMv
YmNtNDd4eC8qCitGOglhcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY200N3h4LyoKKworQlJP
QURDT00gQkNNNDkwOCBFVEhFUk5FVCBEUklWRVIKK006CVJhZmHFgiBNacWCZWNraSA8cmFmYWxA
bWlsZWNraS5wbD4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNt
LWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9uZXQvYnJjbSxiY200OTA4LWVuZXQueWFtbAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJv
YWRjb20vYmNtNDkwOF9lbmV0LioKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3Vu
aW1hYy5oCisKK0JST0FEQ09NIEJDTTQ5MDggUElOTVVYIERSSVZFUgorTToJUmFmYcWCIE1pxYJl
Y2tpIDxyYWZhbEBtaWxlY2tpLnBsPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmll
dyBsaXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbGludXgt
Z3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL2JyY20sYmNtNDkwOC1waW5jdHJsLnlhbWwKK0Y6CWRy
aXZlcnMvcGluY3RybC9iY20vcGluY3RybC1iY200OTA4LmMKKworQlJPQURDT00gQkNNNTMwMVgg
QVJNIEFSQ0hJVEVDVFVSRQorTToJRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBi
cm9hZGNvbS5jb20+CitNOglIYXVrZSBNZWhydGVucyA8aGF1a2VAaGF1a2UtbS5kZT4KK006CVJh
ZmHFgiBNacWCZWNraSA8emFqZWM1QGdtYWlsLmNvbT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtl
cm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4K
K0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBu
b24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglhcmNoL2FybS9ib290L2R0cy9icm9h
ZGNvbS9iY20tbnMuZHRzaQorRjoJYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNDcwKgor
RjoJYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNTMwMSoKK0Y6CWFyY2gvYXJtL2Jvb3Qv
ZHRzL2Jyb2FkY29tL2JjbTk1MzAxMioKK0Y6CWFyY2gvYXJtL21hY2gtYmNtL2JjbV81MzAxeC5j
CisKK0JST0FEQ09NIEJDTTUzNTczIEFSTSBBUkNISVRFQ1RVUkUKK006CUZsb3JpYW4gRmFpbmVs
bGkgPGZsb3JpYW4uZmFpbmVsbGlAYnJvYWRjb20uY29tPgorTToJUmFmYcWCIE1pxYJlY2tpIDxy
YWZhbEBtaWxlY2tpLnBsPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmlldyBsaXN0
IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbGludXgtYXJtLWtl
cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykK
K1M6CU1haW50YWluZWQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL2Jyb2FkY29tL2JjbTQ3MTg5Kgor
RjoJYXJjaC9hcm0vYm9vdC9kdHMvYnJvYWRjb20vYmNtNTM1NzMqCisKK0JST0FEQ09NIEJDTTYz
WFgvQkNNMzNYWCBVREMgRFJJVkVSCitNOglLZXZpbiBDZXJuZWtlZSA8Y2VybmVrZWVAZ21haWwu
Y29tPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy91c2IvZ2FkZ2V0L3VkYy9iY202M3h4X3VkYy4qCisKK0JST0FEQ09NIEJDTTdYWFggQVJN
IEFSQ0hJVEVDVFVSRQorTToJRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9h
ZGNvbS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1r
ZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxp
c3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFp
bnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9icm9hZGNvbS9zdGJsaW51eC5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYnJjbSxzdGItcGNpZS55
YW1sCitGOglhcmNoL2FybS9ib290L2R0cy9icm9hZGNvbS9iY203Ki5kdHMqCitGOglhcmNoL2Fy
bS9pbmNsdWRlL2FzbS9oYXJkd2FyZS9jYWNoZS1iMTUtcmFjLmgKK0Y6CWFyY2gvYXJtL21hY2gt
YmNtLypicmNtc3RiKgorRjoJYXJjaC9hcm0vbW0vY2FjaGUtYjE1LXJhYy5jCitGOglkcml2ZXJz
L2J1cy9icmNtc3RiX2dpc2IuYworRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWJyY21z
dGIuYworTjoJYnJjbXN0YgorTjoJYmNtNzAzOAorTjoJYmNtNzEyMAorCitCUk9BRENPTSBCQ01C
Q0EgQVJNIEFSQ0hJVEVDVFVSRQorTToJV2lsbGlhbSBaaGFuZyA8d2lsbGlhbS56aGFuZ0Bicm9h
ZGNvbS5jb20+CitNOglBbmFuZCBHb3JlIDxhbmFuZC5nb3JlQGJyb2FkY29tLmNvbT4KK006CUt1
cnNhZCBPbmV5IDxrdXJzYWQub25leUBicm9hZGNvbS5jb20+CitNOglGbG9yaWFuIEZhaW5lbGxp
IDxmbG9yaWFuLmZhaW5lbGxpQGJyb2FkY29tLmNvbT4KK006CVJhZmHFgiBNacWCZWNraSA8cmFm
YWxAbWlsZWNraS5wbD4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8
YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJu
ZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitT
OglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL2Jyb2FkY29tL3N0YmxpbnV4
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9iY20vYnJjbSxi
Y21iY2EueWFtbAorRjoJYXJjaC9hcm02NC9ib290L2R0cy9icm9hZGNvbS9iY21iY2EvKgorTjoJ
YmNtYmNhCitOOgliY21bOV0/NDc2MjIKK046CWJjbVs5XT80OTEyCitOOgliY21bOV0/NjMxMzgK
K046CWJjbVs5XT82MzE0NgorTjoJYmNtWzldPzYzMTQ4CitOOgliY21bOV0/NjMxNTgKK046CWJj
bVs5XT82MzE3OAorTjoJYmNtWzldPzY3NTYKK046CWJjbVs5XT82ODEzCitOOgliY21bOV0/Njg0
NgorTjoJYmNtWzldPzY4NTUKK046CWJjbVs5XT82ODU2CitOOgliY21bOV0/Njg1OAorTjoJYmNt
WzldPzY4NzgKKworQlJPQURDT00gQkRDIERSSVZFUgorTToJSnVzdGluIENoZW4gPGp1c3Rpbi5j
aGVuQGJyb2FkY29tLmNvbT4KK006CUFsIENvb3BlciA8YWxjb29wZXJ4QGdtYWlsLmNvbT4KK1I6
CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFj
ay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvYnJjbSxi
ZGMueWFtbAorRjoJZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9iZGMvCisKK0JST0FEQ09NIEJNSVBT
IENQVUZSRVEgRFJJVkVSCitNOglNYXJrdXMgTWF5ZXIgPG1tYXllckBicm9hZGNvbS5jb20+CitS
OglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJh
Y2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9ibWlwcy1jcHVmcmVxLmMKKworQlJPQURDT00g
Qk1JUFMgTUlQUyBBUkNISVRFQ1RVUkUKK006CUZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4uZmFp
bmVsbGlAYnJvYWRjb20uY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmlldyBs
aXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbGludXgtbWlw
c0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5j
b20vYnJvYWRjb20vc3RibGludXguZ2l0CitGOglhcmNoL21pcHMvYm1pcHMvKgorRjoJYXJjaC9t
aXBzL2Jvb3QvZHRzL2JyY20vYmNtKi5kdHMqCitGOglhcmNoL21pcHMvaW5jbHVkZS9hc20vbWFj
aC1ibWlwcy8qCitGOglhcmNoL21pcHMva2VybmVsLypibWlwcyoKK0Y6CWRyaXZlcnMvaXJxY2hp
cC9pcnEtYmNtNjMqCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLWJjbTcqCitGOglkcml2ZXJzL2ly
cWNoaXAvaXJxLWJyY21zdGIqCitGOglkcml2ZXJzL3BtZG9tYWluL2JjbS9iY202M3h4LXBvd2Vy
LmMKK0Y6CWluY2x1ZGUvbGludXgvYmNtOTYzeHhfbnZyYW0uaAorRjoJaW5jbHVkZS9saW51eC9i
Y205NjN4eF90YWcuaAorCitCUk9BRENPTSBCTlgyIEdJR0FCSVQgRVRIRVJORVQgRFJJVkVSCitN
OglSYXNlc2ggTW9keSA8cm1vZHlAbWFydmVsbC5jb20+CitNOglHUi1MaW51eC1OSUMtRGV2QG1h
cnZlbGwuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyLioKK0Y6CWRyaXZlcnMvbmV0L2V0aGVy
bmV0L2Jyb2FkY29tL2JueDJfKgorCitCUk9BRENPTSBCTlgyRkMgMTAgR0lHQUJJVCBGQ09FIERS
SVZFUgorTToJU2F1cmF2IEthc2h5YXAgPHNrYXNoeWFwQG1hcnZlbGwuY29tPgorTToJSmF2ZWQg
SGFzYW4gPGpoYXNhbkBtYXJ2ZWxsLmNvbT4KK006CUdSLVFMb2dpYy1TdG9yYWdlLVVwc3RyZWFt
QG1hcnZlbGwuY29tCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglkcml2ZXJzL3Njc2kvYm54MmZjLworCitCUk9BRENPTSBCTlgySSAxLzEwIEdJR0FCSVQg
aVNDU0kgRFJJVkVSCitNOglOaWxlc2ggSmF2YWxpIDxuamF2YWxpQG1hcnZlbGwuY29tPgorTToJ
TWFuaXNoIFJhbmdhbmthciA8bXJhbmdhbmthckBtYXJ2ZWxsLmNvbT4KK006CUdSLVFMb2dpYy1T
dG9yYWdlLVVwc3RyZWFtQG1hcnZlbGwuY29tCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9y
ZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Njc2kvYm54MmkvCisKK0JST0FEQ09NIEJOWDJY
IDEwIEdJR0FCSVQgRVRIRVJORVQgRFJJVkVSCitNOglTdWRhcnNhbmEgS2FsbHVydSA8c2thbGx1
cnVAbWFydmVsbC5jb20+CitNOglNYW5pc2ggQ2hvcHJhIDxtYW5pc2hjQG1hcnZlbGwuY29tPgor
TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQv
ZXRoZXJuZXQvYnJvYWRjb20vYm54MngvCisKK0JST0FEQ09NIEJOWFRfRU4gNTAgR0lHQUJJVCBF
VEhFUk5FVCBEUklWRVIKK006CU1pY2hhZWwgQ2hhbiA8bWljaGFlbC5jaGFuQGJyb2FkY29tLmNv
bT4KK006CVBhdmFuIENoZWJiaSA8cGF2YW4uY2hlYmJpQGJyb2FkY29tLmNvbT4KK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZmlybXdhcmUvYnJv
YWRjb20vdGVlX2JueHRfZncuYworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54
dC8KK0Y6CWluY2x1ZGUvbGludXgvZmlybXdhcmUvYnJvYWRjb20vdGVlX2JueHRfZncuaAorCitC
Uk9BRENPTSBCUkNNODAyMTEgSUVFRTgwMi4xMSBXSVJFTEVTUyBEUklWRVJTCitNOglBcmVuZCB2
YW4gU3ByaWVsIDxhcmVuZC52YW5zcHJpZWxAYnJvYWRjb20uY29tPgorTDoJbGludXgtd2lyZWxl
c3NAdmdlci5rZXJuZWwub3JnCitMOglicmNtODAyMTFAbGlzdHMubGludXguZGV2CitMOglicmNt
ODAyMTEtZGV2LWxpc3QucGRsQGJyb2FkY29tLmNvbQorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJz
L25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvCitGOglpbmNsdWRlL2xpbnV4L3BsYXRm
b3JtX2RhdGEvYnJjbWZtYWMuaAorCitCUk9BRENPTSBCUkNNU1RCIEdQSU8gRFJJVkVSCitNOglE
b3VnIEJlcmdlciA8b3BlbmRtYkBnbWFpbC5jb20+CitNOglGbG9yaWFuIEZhaW5lbGxpIDxmbG9y
aWFuLmZhaW5lbGxpQGJyb2FkY29tLmNvbT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCBy
ZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK1M6CVN1
cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vYnJjbSxi
cmNtc3RiLWdwaW8ueWFtbAorRjoJZHJpdmVycy9ncGlvL2dwaW8tYnJjbXN0Yi5jCisKK0JST0FE
Q09NIEJSQ01TVEIgSTJDIERSSVZFUgorTToJS2FtYWwgRGFzdSA8a2FtYWwuZGFzdUBicm9hZGNv
bS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJu
ZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9p
MmMvYnJjbSxicmNtc3RiLWkyYy55YW1sCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWJyY21z
dGIuYworCitCUk9BRENPTSBCUkNNU1RCIFVBUlQgRFJJVkVSCitNOglBbCBDb29wZXIgPGFsY29v
cGVyeEBnbWFpbC5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3Qg
PGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1zZXJpYWxA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3Mvc2VyaWFsL2JyY20sYmNtNzI3MS11YXJ0LnlhbWwKK0Y6CWRyaXZlcnMvdHR5
L3NlcmlhbC84MjUwLzgyNTBfYmNtNzI3MS5jCisKK0JST0FEQ09NIEJSQ01TVEIgVVNCIEVIQ0kg
RFJJVkVSCitNOglKdXN0aW4gQ2hlbiA8anVzdGluLmNoZW5AYnJvYWRjb20uY29tPgorTToJQWwg
Q29vcGVyIDxhbGNvb3BlcnhAZ21haWwuY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVs
IHJldmlldyBsaXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJ
bGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9icmNtLGJjbTc0NDUtZWhjaS55YW1sCitGOglkcml2
ZXJzL3VzYi9ob3N0L2VoY2ktYnJjbS4qCisKK0JST0FEQ09NIEJSQ01TVEIgVVNCIFBJTiBNQVAg
RFJJVkVSCitNOglBbCBDb29wZXIgPGFsY29vcGVyeEBnbWFpbC5jb20+CitSOglCcm9hZGNvbSBp
bnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9h
ZGNvbS5jb20+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL2JyY20sdXNiLXBpbm1hcC55
YW1sCitGOglkcml2ZXJzL3VzYi9taXNjL2JyY21zdGItdXNiLXBpbm1hcC5jCisKK0JST0FEQ09N
IEJSQ01TVEIgVVNCMiBhbmQgVVNCMyBQSFkgRFJJVkVSCitNOglKdXN0aW4gQ2hlbiA8anVzdGlu
LmNoZW5AYnJvYWRjb20uY29tPgorTToJQWwgQ29vcGVyIDxhbGNvb3BlcnhAZ21haWwuY29tPgor
UjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmlldyBsaXN0IDxiY20ta2VybmVsLWZlZWRi
YWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9waHkvYnJvYWRjb20vcGh5LWJyY20tdXNiKgorCitC
Uk9BRENPTSBCcm9hZGJhbmQgU29DIEhpZ2ggU3BlZWQgU1BJIENvbnRyb2xsZXIgRFJJVkVSCitN
OglXaWxsaWFtIFpoYW5nIDx3aWxsaWFtLnpoYW5nQGJyb2FkY29tLmNvbT4KK006CUt1cnNhZCBP
bmV5IDxrdXJzYWQub25leUBicm9hZGNvbS5jb20+CitNOglKb25hcyBHb3Jza2kgPGpvbmFzLmdv
cnNraUBnbWFpbC5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3Qg
PGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1zcGlAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3Mvc3BpL2JyY20sYmNtNjN4eC1oc3NwaS55YW1sCitGOglkcml2ZXJzL3NwaS9zcGkt
YmNtNjN4eC1oc3NwaS5jCitGOglkcml2ZXJzL3NwaS9zcGktYmNtYmNhLWhzc3BpLmMKKworQlJP
QURDT00gQkNNNjM0OC9CQ002MzU4IFNQSSBjb250cm9sbGVyIERSSVZFUgorTToJSm9uYXMgR29y
c2tpIDxqb25hcy5nb3Jza2lAZ21haWwuY29tPgorTDoJbGludXgtc3BpQHZnZXIua2VybmVsLm9y
ZworUzoJT2RkIEZpeGVzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3Bp
L2JyY20sYmNtNjN4eC1zcGkueWFtbAorRjoJZHJpdmVycy9zcGkvc3BpLWJjbTYzeHguYworCitC
Uk9BRENPTSBFVEhFUk5FVCBQSFkgRFJJVkVSUworTToJRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlh
bi5mYWluZWxsaUBicm9hZGNvbS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2
aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOgluZXRk
ZXZAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9uZXQvYnJvYWRjb20tYmNtODd4eC50eHQKK0Y6CWRyaXZlcnMvbmV0L3Bo
eS9iY20qLltjaF0KK0Y6CWRyaXZlcnMvbmV0L3BoeS9icm9hZGNvbS5jCitGOglpbmNsdWRlL2xp
bnV4L2JyY21waHkuaAorCitCUk9BRENPTSBHRU5FVCBFVEhFUk5FVCBEUklWRVIKK006CURvdWcg
QmVyZ2VyIDxvcGVuZG1iQGdtYWlsLmNvbT4KK006CUZsb3JpYW4gRmFpbmVsbGkgPGZsb3JpYW4u
ZmFpbmVsbGlAYnJvYWRjb20uY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmll
dyBsaXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbmV0ZGV2
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL25ldC9icmNtLGJjbWdlbmV0LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSx1bmltYWMtbWRpby55YW1sCitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2Fk
Y29tL3VuaW1hYy5oCitGOglkcml2ZXJzL25ldC9tZGlvL21kaW8tYmNtLXVuaW1hYy5jCitGOglp
bmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvYmNtZ2VuZXQuaAorRjoJaW5jbHVkZS9saW51eC9w
bGF0Zm9ybV9kYXRhL21kaW8tYmNtLXVuaW1hYy5oCisKK0JST0FEQ09NIElQUk9DIEFSTSBBUkNI
SVRFQ1RVUkUKK006CVJheSBKdWkgPHJqdWlAYnJvYWRjb20uY29tPgorTToJU2NvdHQgQnJhbmRl
biA8c2JyYW5kZW5AYnJvYWRjb20uY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJl
dmlldyBsaXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbGlu
dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJz
Y3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vYnJvYWRj
b20vc3RibGludXguZ2l0CitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL2Jyb2FkY29tL25vcnRoc3Rh
cjIvKgorRjoJYXJjaC9hcm02NC9ib290L2R0cy9icm9hZGNvbS9zdGluZ3JheS8qCitGOglkcml2
ZXJzL2Nsay9iY20vY2xrLW5zKgorRjoJZHJpdmVycy9jbGsvYmNtL2Nsay1zcioKK0Y6CWRyaXZl
cnMvcGluY3RybC9iY20vcGluY3RybC1ucyoKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2sv
YmNtLXNyKgorTjoJaXByb2MKK046CWN5Z251cworTjoJYmNtWy1fXW5zcAorTjoJYmNtOTExMyoK
K046CWJjbTk1ODMqCitOOgliY205NTg1KgorTjoJYmNtOTU4NioKK046CWJjbTk4ODMxMgorTjoJ
YmNtMTEzKgorTjoJYmNtNTgzKgorTjoJYmNtNTg1KgorTjoJYmNtNTg2KgorTjoJYmNtODgzMTIK
K046CWhyMgorTjoJc3RpbmdyYXkKKworQlJPQURDT00gSVBST0MgR0JJVCBFVEhFUk5FVCBEUklW
RVIKK006CVJhZmHFgiBNacWCZWNraSA8cmFmYWxAbWlsZWNraS5wbD4KK1I6CUJyb2FkY29tIGlu
dGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2Fk
Y29tLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYnJjbSxhbWFjLnlhbWwKK0Y6CWRy
aXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjKgorRjoJZHJpdmVycy9uZXQvZXRoZXJu
ZXQvYnJvYWRjb20vdW5pbWFjLmgKKworQlJPQURDT00gS09OQSBHUElPIERSSVZFUgorTToJUmF5
IEp1aSA8cmp1aUBicm9hZGNvbS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2
aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitTOglTdXBw
b3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2JyY20sa29u
YS1ncGlvLnlhbWwKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWJjbS1rb25hLmMKKworQlJPQURDT00g
TVBJMyBTVE9SQUdFIENPTlRST0xMRVIgRFJJVkVSCitNOglTYXRoeWEgUHJha2FzaCBWZWVyaWNo
ZXR0eSA8c2F0aHlhLnByYWthc2hAYnJvYWRjb20uY29tPgorTToJS2FzaHlhcCBEZXNhaSA8a2Fz
aHlhcC5kZXNhaUBicm9hZGNvbS5jb20+CitNOglTdW1pdCBTYXhlbmEgPHN1bWl0LnNheGVuYUBi
cm9hZGNvbS5jb20+CitNOglTcmVla2FudGggUmVkZHkgPHNyZWVrYW50aC5yZWRkeUBicm9hZGNv
bS5jb20+CitMOgltcGkzbXItbGludXhkcnYucGRsQGJyb2FkY29tLmNvbQorTDoJbGludXgtc2Nz
aUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly93d3cuYnJvYWRjb20u
Y29tL3N1cHBvcnQvc3RvcmFnZQorRjoJZHJpdmVycy9zY3NpL21waTNtci8KKworQlJPQURDT00g
TkVUWFRSRU1FLUUgUk9DRSBEUklWRVIKK006CVNlbHZpbiBYYXZpZXIgPHNlbHZpbi54YXZpZXJA
YnJvYWRjb20uY29tPgorTToJS2FsZXNoIEFQIDxrYWxlc2gtYW5ha2t1ci5wdXJheWlsQGJyb2Fk
Y29tLmNvbT4KK0w6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHA6Ly93d3cuYnJvYWRjb20uY29tCitGOglkcml2ZXJzL2luZmluaWJhbmQvaHcvYm54dF9y
ZS8KK0Y6CWluY2x1ZGUvdWFwaS9yZG1hL2JueHRfcmUtYWJpLmgKKworQlJPQURDT00gTlZSQU0g
RFJJVkVSCitNOglSYWZhxYIgTWnFgmVja2kgPHphamVjNUBnbWFpbC5jb20+CitMOglsaW51eC1t
aXBzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9maXJtd2FyZS9i
cm9hZGNvbS8qCisKK0JST0FEQ09NIFBNQiAoUE9XRVIgTUFOQUdFTUVOVCBCVVMpIERSSVZFUgor
TToJUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxlY2tpLnBsPgorTToJRmxvcmlhbiBGYWluZWxs
aSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBr
ZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+
CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRw
czovL2dpdGh1Yi5jb20vYnJvYWRjb20vc3RibGludXguZ2l0CitGOglkcml2ZXJzL3BtZG9tYWlu
L2JjbS9iY20tcG1iLmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mvc29jL2JjbS1wbWIuaAorCitC
Uk9BRENPTSBTUEVDSUZJQyBBTUJBIERSSVZFUiAoQkNNQSkKK006CVJhZmHFgiBNacWCZWNraSA8
emFqZWM1QGdtYWlsLmNvbT4KK0w6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9iY21hLworRjoJaW5jbHVkZS9saW51eC9iY21hLworCitC
Uk9BRENPTSBTUEkgRFJJVkVSCitNOglLYW1hbCBEYXN1IDxrYW1hbC5kYXN1QGJyb2FkY29tLmNv
bT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1m
ZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvYnJjbSxzcGktYmNtLXFzcGkueWFtbAorRjoJZHJp
dmVycy9zcGkvc3BpLWJjbS1xc3BpLioKK0Y6CWRyaXZlcnMvc3BpL3NwaS1icmNtc3RiLXFzcGku
YworRjoJZHJpdmVycy9zcGkvc3BpLWlwcm9jLXFzcGkuYworCitCUk9BRENPTSBTVEIgQVZTIENQ
VUZSRVEgRFJJVkVSCitNOglNYXJrdXMgTWF5ZXIgPG1tYXllckBicm9hZGNvbS5jb20+CitSOglC
cm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2st
bGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcHVmcmVxL2JyY20s
c3RiLWF2cy1jcHUtZnJlcS50eHQKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9icmNtc3RiKgorCitCUk9B
RENPTSBTVEIgQVZTIFRNT04gRFJJVkVSCitNOglNYXJrdXMgTWF5ZXIgPG1tYXllckBicm9hZGNv
bS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJu
ZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90
aGVybWFsL2JyY20sYXZzLXRtb24ueWFtbAorRjoJZHJpdmVycy90aGVybWFsL2Jyb2FkY29tL2Jy
Y21zdGIqCisKK0JST0FEQ09NIFNUQiBEUEZFIERSSVZFUgorTToJTWFya3VzIE1heWVyIDxtbWF5
ZXJAYnJvYWRjb20uY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmlldyBsaXN0
IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorTDoJbGludXgtYXJtLWtl
cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZW1v
cnktY29udHJvbGxlcnMvYnJjbSxkcGZlLWNwdS55YW1sCitGOglkcml2ZXJzL21lbW9yeS9icmNt
c3RiX2RwZmUuYworCitCUk9BRENPTSBTVEIgTkFORCBGTEFTSCBEUklWRVIKK006CUJyaWFuIE5v
cnJpcyA8Y29tcHV0ZXJzZm9ycGVhY2VAZ21haWwuY29tPgorTToJS2FtYWwgRGFzdSA8a2FtYWwu
ZGFzdUBicm9hZGNvbS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxp
c3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1tdGRA
bGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tdGQvbmFuZC9y
YXcvYnJjbW5hbmQvCitGOglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvYnJjbW5hbmQuaAor
CitCUk9BRENPTSBTVEIgUENJRSBEUklWRVIKK006CUppbSBRdWlubGFuIDxqaW0yMTAxMDI0QGdt
YWlsLmNvbT4KK006CU5pY29sYXMgU2FlbnogSnVsaWVubmUgPG5zYWVuekBrZXJuZWwub3JnPgor
TToJRmxvcmlhbiBGYWluZWxsaSA8Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+CitSOglC
cm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2st
bGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2JyY20sc3Ri
LXBjaWUueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWJyY21zdGIuYworCitC
Uk9BRENPTSBTWVNURU1QT1JUIEVUSEVSTkVUIERSSVZFUgorTToJRmxvcmlhbiBGYWluZWxsaSA8
Zmxvcmlhbi5mYWluZWxsaUBicm9hZGNvbS5jb20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJu
ZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JyY20sc3lzdGVtcG9ydC55YW1sCitGOglkcml2ZXJz
L25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LioKK0Y6CWRyaXZlcnMvbmV0L2V0aGVy
bmV0L2Jyb2FkY29tL3VuaW1hYy5oCisKK0JST0FEQ09NIFRHMyBHSUdBQklUIEVUSEVSTkVUIERS
SVZFUgorTToJUGF2YW4gQ2hlYmJpIDxwYXZhbi5jaGViYmlAYnJvYWRjb20uY29tPgorTToJTWlj
aGFlbCBDaGFuIDxtY2hhbkBicm9hZGNvbS5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuKgor
CitCUk9BRENPTSBWSyBEUklWRVIKK006CVNjb3R0IEJyYW5kZW4gPHNjb3R0LmJyYW5kZW5AYnJv
YWRjb20uY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwga2VybmVsIHJldmlldyBsaXN0IDxiY20t
a2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29tPgorUzoJU3VwcG9ydGVkCitGOglkcml2
ZXJzL21pc2MvYmNtLXZrLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L21pc2MvYmNtX3ZrLmgKKwor
QlJPQ0FERSBCRkEgRkMgU0NTSSBEUklWRVIKK006CUFuaWwgR3VydW11cnRoeSA8YW5pbC5ndXJ1
bXVydGh5QHFsb2dpYy5jb20+CitNOglTdWRhcnNhbmEgS2FsbHVydSA8c3VkYXJzYW5hLmthbGx1
cnVAcWxvZ2ljLmNvbT4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0
ZWQKK0Y6CWRyaXZlcnMvc2NzaS9iZmEvCisKK0JST0NBREUgQk5BIDEwIEdJR0FCSVQgRVRIRVJO
RVQgRFJJVkVSCitNOglSYXNlc2ggTW9keSA8cm1vZHlAbWFydmVsbC5jb20+CitNOglTdWRhcnNh
bmEgS2FsbHVydSA8c2thbGx1cnVAbWFydmVsbC5jb20+CitNOglHUi1MaW51eC1OSUMtRGV2QG1h
cnZlbGwuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS8KKworQlNHIChibG9jayBsYXllciBnZW5l
cmljIHNnIHY0IGRyaXZlcikKK006CUZVSklUQSBUb21vbm9yaSA8ZnVqaXRhLnRvbW9ub3JpQGxh
Yi5udHQuY28uanA+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglibG9jay9ic2cuYworRjoJaW5jbHVkZS9saW51eC9ic2cuaAorRjoJaW5jbHVkZS91YXBp
L2xpbnV4L2JzZy5oCisKK0JUODdYIEFVRElPIERSSVZFUgorTToJQ2xlbWVucyBMYWRpc2NoIDxj
bGVtZW5zQGxhZGlzY2guZGU+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvdGl3YWkvc291bmQuZ2l0CitGOglEb2N1bWVudGF0aW9uL3NvdW5kL2NhcmRzL2J0ODd4
LnJzdAorRjoJc291bmQvcGNpL2J0ODd4LmMKKworQlQ4WFhHUElPIERSSVZFUgorTToJTWljaGFl
bCBCdWVzY2ggPG1AYnVlcy5jaD4KK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9idTNzY2guZGUv
YnRncGlvLnBocAorRjoJZHJpdmVycy9ncGlvL2dwaW8tYnQ4eHguYworCitCVFJGUyBGSUxFIFNZ
U1RFTQorTToJQ2hyaXMgTWFzb24gPGNsbUBmYi5jb20+CitNOglKb3NlZiBCYWNpayA8am9zZWZA
dG94aWNwYW5kYS5jb20+CitNOglEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+CitMOgls
aW51eC1idHJmc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vYnRy
ZnMucmVhZHRoZWRvY3MuaW8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVj
dC9saW51eC1idHJmcy9saXN0LworQzoJaXJjOi8vaXJjLmxpYmVyYS5jaGF0L2J0cmZzCitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2xp
bnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9idHJmcy5yc3QKK0Y6CWZzL2J0
cmZzLworRjoJaW5jbHVkZS9saW51eC9idHJmcyoKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2J0
cmZzLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9idHJmcyoKKworQlRUViBWSURFTzRMSU5VWCBE
UklWRVIKK006CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPgorTDoJ
bGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPZGQgZml4ZXMKK1c6CWh0dHBzOi8vbGlu
dXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50
YXRpb24vZHJpdmVyLWFwaS9tZWRpYS9kcml2ZXJzL2J0dHYqCitGOglkcml2ZXJzL21lZGlhL3Bj
aS9idDh4eC9idHR2KgorCitCVVMgRlJFUVVFTkNZIERSSVZFUiBGT1IgU0FNU1VORyBFWFlOT1MK
K006CUNoYW53b28gQ2hvaSA8Y3cwMC5jaG9pQHNhbXN1bmcuY29tPgorTDoJbGludXgtcG1Admdl
ci5rZXJuZWwub3JnCitMOglsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvY2hhbndvby9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9pbnRlcmNvbm5lY3Qvc2Ftc3VuZyxleHlub3MtYnVzLnlhbWwKK0Y6CWRyaXZlcnMvZGV2
ZnJlcS9leHlub3MtYnVzLmMKKworQlVTTE9HSUMgU0NTSSBEUklWRVIKK006CUtoYWxpZCBBeml6
IDxraGFsaWRAZ29uZWhpa2luZy5vcmc+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zY3NpL0J1c0xvZ2ljLioKK0Y6CWRyaXZlcnMvc2Nz
aS9GbGFzaFBvaW50LioKKworQlhDQU4gQ0FOIE5FVFdPUksgRFJJVkVSCitNOglEYXJpbyBCaW5h
Y2NoaSA8ZGFyaW8uYmluYWNjaGlAYW1hcnVsYXNvbHV0aW9ucy5jb20+CitMOglsaW51eC1jYW5A
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvbmV0L2Nhbi9zdCxzdG0zMi1ieGNhbi55YW1sCitGOglkcml2ZXJzL25ldC9j
YW4vYnhjYW4uYworCitDLU1FRElBIENNSTg3ODggRFJJVkVSCitNOglDbGVtZW5zIExhZGlzY2gg
PGNsZW1lbnNAbGFkaXNjaC5kZT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC90aXdhaS9zb3VuZC5naXQKK0Y6CXNvdW5kL3BjaS9veHlnZW4vCisKK0MtU0tZIEFS
Q0hJVEVDVFVSRQorTToJR3VvIFJlbiA8Z3VvcmVuQGtlcm5lbC5vcmc+CitMOglsaW51eC1jc2t5
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29t
L2Mtc2t5L2Nza3ktbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvY3NreS8KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnRlcnJ1cHQt
Y29udHJvbGxlci9jc2t5LCoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90
aW1lci9jc2t5LCoKK0Y6CWFyY2gvY3NreS8KK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvdGltZXIt
Z3g2NjA1cy5jCitGOglkcml2ZXJzL2Nsb2Nrc291cmNlL3RpbWVyLW1wLWNza3kuYworRjoJZHJp
dmVycy9pcnFjaGlwL2lycS1jc2t5LSoKK046CWNza3kKK0s6CWNza3kKKworQ0E4MjEwIElFRUUt
ODAyLjE1LjQgUkFESU8gRFJJVkVSCitMOglsaW51eC13cGFuQHZnZXIua2VybmVsLm9yZworUzoJ
T3JwaGFuCitXOglodHRwczovL2dpdGh1Yi5jb20vQ2FzY29kYS9jYTgyMTAtbGludXguZ2l0CitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2llZWU4MDIxNTQvY2E4MjEw
LnR4dAorRjoJZHJpdmVycy9uZXQvaWVlZTgwMjE1NC9jYTgyMTAuYworCitDQUNIRUZJTEVTOiBG
Uy1DQUNIRSBCQUNLRU5EIEZPUiBDQUNISU5HIE9OIE1PVU5URUQgRklMRVNZU1RFTVMKK006CURh
dmlkIEhvd2VsbHMgPGRob3dlbGxzQHJlZGhhdC5jb20+CitMOgluZXRmc0BsaXN0cy5saW51eC5k
ZXYKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL2Nh
Y2hlZmlsZXMucnN0CitGOglmcy9jYWNoZWZpbGVzLworCitDQUNIRVNUQVQ6IFBBR0UgQ0FDSEUg
U1RBVFMgRk9SIEEgRklMRQorTToJTmhhdCBQaGFtIDxucGhhbWNzQGdtYWlsLmNvbT4KK006CUpv
aGFubmVzIFdlaW5lciA8aGFubmVzQGNtcHhjaGcub3JnPgorTDoJbGludXgtbW1Aa3ZhY2sub3Jn
CitTOglNYWludGFpbmVkCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jYWNoZXN0YXQvdGVz
dF9jYWNoZXN0YXQuYworCitDQURFTkNFIE1JUEktQ1NJMiBCUklER0VTCitNOglNYXhpbWUgUmlw
YXJkIDxtcmlwYXJkQGtlcm5lbC5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRp
YS9jZG5zLCoudHh0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEv
Y2Rucyxjc2kycngueWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9jYWRlbmNlL2NkbnMt
Y3NpMioKKworQ0FERU5DRSBOQU5EIERSSVZFUgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVh
ZC5vcmcKK1M6CU9ycGhhbgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210
ZC9jZG5zLGhwLW5mYy55YW1sCitGOglkcml2ZXJzL210ZC9uYW5kL3Jhdy9jYWRlbmNlLW5hbmQt
Y29udHJvbGxlci5jCisKK0NBREVOQ0UgVVNCMyBEUkQgSVAgRFJJVkVSCitNOglQZXRlciBDaGVu
IDxwZXRlci5jaGVuQGtlcm5lbC5vcmc+CitNOglQYXdlbCBMYXN6Y3phayA8cGF3ZWxsQGNhZGVu
Y2UuY29tPgorUjoJUm9nZXIgUXVhZHJvcyA8cm9nZXJxQGtlcm5lbC5vcmc+CitMOglsaW51eC11
c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BldGVyLmNoZW4vdXNiLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9jZG5zLHVzYjMueWFtbAorRjoJZHJp
dmVycy91c2IvY2RuczMvCitYOglkcml2ZXJzL3VzYi9jZG5zMy9jZG5zcCoKKworQ0FERU5DRSBV
U0JIUyBEUklWRVIKK006CVBhd2VsIExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+CitMOgls
aW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3VzYi9n
YWRnZXQvdWRjL2NkbnMyCisKK0NBREVOQ0UgVVNCU1NQIERSRCBJUCBEUklWRVIKK006CVBhd2Vs
IExhc3pjemFrIDxwYXdlbGxAY2FkZW5jZS5jb20+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L3BldGVyLmNoZW4vdXNiLmdpdAorRjoJZHJpdmVycy91c2IvY2RuczMv
CitYOglkcml2ZXJzL3VzYi9jZG5zMy9jZG5zMyoKKworQ0FERVQgRk0vQU0gUkFESU8gUkVDRUlW
RVIgRFJJVkVSCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4
LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2
Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRp
YS9yYWRpby9yYWRpby1jYWRldCoKKworQ0FGRSBDTU9TIElOVEVHUkFURUQgQ0FNRVJBIENPTlRS
T0xMRVIgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgor
VDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1p
bi1ndWlkZS9tZWRpYS9jYWZlX2NjaWMqCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL21hcnZl
bGwvCisKK0NBSUYgTkVUV09SSyBMQVlFUgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJ
T3JwaGFuCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi8KK0Y6CWRyaXZlcnMvbmV0
L2NhaWYvCitGOglpbmNsdWRlL25ldC9jYWlmLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L2NhaWYv
CitGOgluZXQvY2FpZi8KKworQ0FLRSBRRElTQworTToJVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu
IDx0b2tlQHRva2UuZGs+CitMOgljYWtlQGxpc3RzLmJ1ZmZlcmJsb2F0Lm5ldCAobW9kZXJhdGVk
IGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOgluZXQvc2NoZWQvc2NoX2Nh
a2UuYworCitDQU4gTkVUV09SSyBEUklWRVJTCitNOglNYXJjIEtsZWluZS1CdWRkZSA8bWtsQHBl
bmd1dHJvbml4LmRlPgorTToJVmluY2VudCBNYWlsaG9sIDxtYWlsaG9sLnZpbmNlbnRAd2FuYWRv
by5mcj4KK0w6CWxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0
dHBzOi8vZ2l0aHViLmNvbS9saW51eC1jYW4KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbWtsL2xpbnV4LWNhbi5naXQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbWtsL2xpbnV4LWNhbi1uZXh0
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3RpLHRjYW4xMDR4LWNhbi55YW1s
CitGOglkcml2ZXJzL25ldC9jYW4vCitGOglkcml2ZXJzL3BoeS9waHktY2FuLXRyYW5zY2VpdmVy
LmMKK0Y6CWluY2x1ZGUvbGludXgvY2FuL2JpdHRpbWluZy5oCitGOglpbmNsdWRlL2xpbnV4L2Nh
bi9kZXYuaAorRjoJaW5jbHVkZS9saW51eC9jYW4vbGVuZ3RoLmgKK0Y6CWluY2x1ZGUvbGludXgv
Y2FuL3BsYXRmb3JtLworRjoJaW5jbHVkZS9saW51eC9jYW4vcngtb2ZmbG9hZC5oCitGOglpbmNs
dWRlL3VhcGkvbGludXgvY2FuL2Vycm9yLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9jYW4vbmV0
bGluay5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvY2FuL3Z4Y2FuLmgKKworQ0FOIE5FVFdPUksg
TEFZRVIKK006CU9saXZlciBIYXJ0a29wcCA8c29ja2V0Y2FuQGhhcnRrb3BwLm5ldD4KK006CU1h
cmMgS2xlaW5lLUJ1ZGRlIDxta2xAcGVuZ3V0cm9uaXguZGU+CitMOglsaW51eC1jYW5Admdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2dpdGh1Yi5jb20vbGludXgtY2Fu
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L21r
bC9saW51eC1jYW4uZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51
eC9rZXJuZWwvZ2l0L21rbC9saW51eC1jYW4tbmV4dC5naXQKK0Y6CURvY3VtZW50YXRpb24vbmV0
d29ya2luZy9jYW4ucnN0CitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXNvMTU3NjUtMi5y
c3QKK0Y6CWluY2x1ZGUvbGludXgvY2FuL2Nhbi1tbC5oCitGOglpbmNsdWRlL2xpbnV4L2Nhbi9j
b3JlLmgKK0Y6CWluY2x1ZGUvbGludXgvY2FuL3NrYi5oCitGOglpbmNsdWRlL25ldC9uZXRucy9j
YW4uaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2Nhbi5oCitGOglpbmNsdWRlL3VhcGkvbGludXgv
Y2FuL2JjbS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvY2FuL2d3LmgKK0Y6CWluY2x1ZGUvdWFw
aS9saW51eC9jYW4vaXNvdHAuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2Nhbi9yYXcuaAorRjoJ
bmV0L2Nhbi8KK0Y6CW5ldC9zY2hlZC9lbV9jYW5pZC5jCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0
ZXN0cy9uZXQvY2FuLworCitDQU4tSjE5MzkgTkVUV09SSyBMQVlFUgorTToJUm9iaW4gdmFuIGRl
ciBHcmFjaHQgPHJvYmluQHByb3RvbmljLm5sPgorTToJT2xla3NpaiBSZW1wZWwgPG8ucmVtcGVs
QHBlbmd1dHJvbml4LmRlPgorUjoJa2VybmVsQHBlbmd1dHJvbml4LmRlCitMOglsaW51eC1jYW5A
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtp
bmcvajE5MzkucnN0CitGOglpbmNsdWRlL3VhcGkvbGludXgvY2FuL2oxOTM5LmgKK0Y6CW5ldC9j
YW4vajE5MzkvCisKK0NBTkFBTi9LRU5EUllURSBLMjEwIFNPQyBGUElPQSBEUklWRVIKK006CURh
bWllbiBMZSBNb2FsIDxkbGVtb2FsQGtlcm5lbC5vcmc+CitMOglsaW51eC1yaXNjdkBsaXN0cy5p
bmZyYWRlYWQub3JnCitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9yZyAocGluY3RybCBkcml2
ZXIpCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9jYW5hYW4s
azIxMC1mcGlvYS55YW1sCitGOglkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1rMjEwLmMKKworQ0FO
QUFOL0tFTkRSWVRFIEsyMTAgU09DIFJFU0VUIENPTlRST0xMRVIgRFJJVkVSCitNOglEYW1pZW4g
TGUgTW9hbCA8ZGxlbW9hbEBrZXJuZWwub3JnPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVs
Lm9yZworTDoJbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2V0L2NhbmFhbixrMjEwLXJz
dC55YW1sCitGOglkcml2ZXJzL3Jlc2V0L3Jlc2V0LWsyMTAuYworCitDQU5BQU4vS0VORFJZVEUg
SzIxMCBTT0MgU1lTVEVNIENPTlRST0xMRVIgRFJJVkVSCitNOglEYW1pZW4gTGUgTW9hbCA8ZGxl
bW9hbEBrZXJuZWwub3JnPgorTDoJbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9jYW5h
YW4sazIxMC1zeXNjdGwueWFtbAorRjoJZHJpdmVycy9zb2MvY2FuYWFuLworRjoJaW5jbHVkZS9z
b2MvY2FuYWFuLworCitDQVBBQklMSVRJRVMKK006CVNlcmdlIEhhbGx5biA8c2VyZ2VAaGFsbHlu
LmNvbT4KK0w6CWxpbnV4LXNlY3VyaXR5LW1vZHVsZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorRjoJaW5jbHVkZS9saW51eC9jYXBhYmlsaXR5LmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZl
bnRzL2NhcGFiaWxpdHkuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2NhcGFiaWxpdHkuaAorRjoJ
a2VybmVsL2NhcGFiaWxpdHkuYworRjoJc2VjdXJpdHkvY29tbW9uY2FwLmMKKworQ0FQRUxMQSBN
SUNST1NZU1RFTVMgTElHSFQgU0VOU09SIERSSVZFUgorTToJS2V2aW4gVHNhaSA8a3RzYWlAY2Fw
ZWxsYW1pY3JvLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaWlvL2xpZ2h0L2NtKgor
CitDQVJMOTE3MCBMSU5VWCBDT01NVU5JVFkgV0lSRUxFU1MgRFJJVkVSCitNOglDaHJpc3RpYW4g
TGFtcGFydGVyIDxjaHVua2VleUBnb29nbGVtYWlsLmNvbT4KK0w6CWxpbnV4LXdpcmVsZXNzQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtl
cm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9jYXJsOTE3MAorRjoJZHJpdmVycy9uZXQvd2lyZWxl
c3MvYXRoL2Nhcmw5MTcwLworCitDQVZJVU0gSTJDIERSSVZFUgorTToJUm9iZXJ0IFJpY2h0ZXIg
PHJyaWNAa2VybmVsLm9yZz4KK1M6CU9kZCBGaXhlcworVzoJaHR0cDovL3d3dy5tYXJ2ZWxsLmNv
bQorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1vY3Rlb24qCitGOglkcml2ZXJzL2kyYy9idXNz
ZXMvaTJjLXRodW5kZXJ4KgorCitDQVZJVU0gTElRVUlESU8gTkVUV09SSyBEUklWRVIKK0w6CW5l
dGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cDovL3d3dy5tYXJ2ZWxsLmNv
bQorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvLworCitDQVZJVU0gTU1D
IERSSVZFUgorTToJUm9iZXJ0IFJpY2h0ZXIgPHJyaWNAa2VybmVsLm9yZz4KK1M6CU9kZCBGaXhl
cworVzoJaHR0cDovL3d3dy5tYXJ2ZWxsLmNvbQorRjoJZHJpdmVycy9tbWMvaG9zdC9jYXZpdW0q
CisKK0NBVklVTSBPQ1RFT04tVFggQ1JZUFRPIERSSVZFUgorTToJR2VvcmdlIENoZXJpYW4gPGdj
aGVyaWFuQG1hcnZlbGwuY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwOi8vd3d3Lm1hcnZlbGwuY29tCitGOglkcml2ZXJzL2NyeXB0by9j
YXZpdW0vY3B0LworCitDQVZJVU0gVEhVTkRFUlgyIEFSTTY0IFNPQworTToJUm9iZXJ0IFJpY2h0
ZXIgPHJyaWNAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFk
Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglPZGQgRml4ZXMKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vY2F2aXVtLXRodW5kZXIyLnR4dAor
RjoJYXJjaC9hcm02NC9ib290L2R0cy9jYXZpdW0vdGh1bmRlcjItOTl4eCoKKworQ0JTL0VURi9U
QVBSSU8gUURJU0NTCitNOglWaW5pY2l1cyBDb3N0YSBHb21lcyA8dmluaWNpdXMuZ29tZXNAaW50
ZWwuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJbmV0
L3NjaGVkL3NjaF9jYnMuYworRjoJbmV0L3NjaGVkL3NjaF9ldGYuYworRjoJbmV0L3NjaGVkL3Nj
aF90YXByaW8uYworCitDQzI1MjAgSUVFRS04MDIuMTUuNCBSQURJTyBEUklWRVIKK006CVN0ZWZh
biBTY2htaWR0IDxzdGVmYW5AZGF0ZW5mcmVpaGFmZW4ub3JnPgorTDoJbGludXgtd3BhbkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL25ldC9pZWVlODAyMTU0L2NjMjUyMC50eHQKK0Y6CWRyaXZlcnMvbmV0L2llZWU4MDIx
NTQvY2MyNTIwLmMKKworQ0NSRUUgQVJNIFRSVVNUWk9ORSBDUllQVE9DRUxMIFJFRSBEUklWRVIK
K006CUdpbGFkIEJlbi1Zb3NzZWYgPGdpbGFkQGJlbnlvc3NlZi5jb20+CitMOglsaW51eC1jcnlw
dG9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZGV2ZWxvcGVyLmFy
bS5jb20vcHJvZHVjdHMvc3lzdGVtLWlwL3RydXN0em9uZS1jcnlwdG9jZWxsL2NyeXB0b2NlbGwt
NzAwLWZhbWlseQorRjoJZHJpdmVycy9jcnlwdG8vY2NyZWUvCisKK0NDVFJORyBBUk0gVFJVU1Ra
T05FIENSWVBUT0NFTEwgVFJVRSBSQU5ET00gTlVNQkVSIEdFTkVSQVRPUiAoVFJORykgRFJJVkVS
CitNOglIYWRhciBHYXQgPGhhZGFyLmdhdEBhcm0uY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2RldmVsb3Blci5hcm0uY29tL3By
b2R1Y3RzL3N5c3RlbS1pcC90cnVzdHpvbmUtY3J5cHRvY2VsbC9jcnlwdG9jZWxsLTcwMC1mYW1p
bHkKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvYXJtLWNjdHJuZy55
YW1sCitGOglkcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2NjdHJuZy5jCitGOglkcml2ZXJzL2NoYXIv
aHdfcmFuZG9tL2NjdHJuZy5oCisKK0NFQyBGUkFNRVdPUksKK006CUhhbnMgVmVya3VpbCA8aHZl
cmt1aWwtY2lzY29AeHM0YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYu
b3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWNlYy1l
cnJvci1pbmoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9jZWMv
Y2VjLWNvbW1vbi55YW1sCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvY2VjLWNv
cmUucnN0CitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvY2VjCitGOglkcml2
ZXJzL21lZGlhL2NlYy8KK0Y6CWRyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1jZWMuYworRjoJ
aW5jbHVkZS9tZWRpYS9jZWMtbm90aWZpZXIuaAorRjoJaW5jbHVkZS9tZWRpYS9jZWMuaAorRjoJ
aW5jbHVkZS91YXBpL2xpbnV4L2NlYy1mdW5jcy5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvY2Vj
LmgKKworQ0VDIEdQSU8gRFJJVkVSCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsLWNpc2NvQHhz
NGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitX
OglodHRwOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9jZWMvY2VjLWdwaW8u
eWFtbAorRjoJZHJpdmVycy9tZWRpYS9jZWMvcGxhdGZvcm0vY2VjLWdwaW8vCisKK0NFTEwgQlJP
QURCQU5EIEVOR0lORSBBUkNISVRFQ1RVUkUKK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMu
b3JnCitTOglPcnBoYW4KK0Y6CWFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jZWxsKi5oCitGOglh
cmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3B1Ki5oCitGOglhcmNoL3Bvd2VycGMvaW5jbHVkZS91
YXBpL2FzbS9zcHUqLmgKK0Y6CWFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC8KKworQ0VMTFdJ
U0UgQ1cyMDE1IEJBVFRFUlkgRFJJVkVSCitNOglUb2JpYXMgU2NocmFtbW0gPHQuc2NocmFtbUBt
YW5qYXJvLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9wb3dlci9zdXBwbHkvY3cyMDE1X2JhdHRlcnkueWFtbAorRjoJZHJpdmVycy9wb3dl
ci9zdXBwbHkvY3cyMDE1X2JhdHRlcnkuYworCitDRVBIIENPTU1PTiBDT0RFIChMSUJDRVBIKQor
TToJSWx5YSBEcnlvbW92IDxpZHJ5b21vdkBnbWFpbC5jb20+CitNOglYaXVibyBMaSA8eGl1Ymxp
QHJlZGhhdC5jb20+CitMOgljZXBoLWRldmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitXOglodHRwOi8vY2VwaC5jb20vCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL2NlcGgvY2Vw
aC1jbGllbnQuZ2l0CitGOglpbmNsdWRlL2xpbnV4L2NlcGgvCitGOglpbmNsdWRlL2xpbnV4L2Ny
dXNoLworRjoJbmV0L2NlcGgvCisKK0NFUEggRElTVFJJQlVURUQgRklMRSBTWVNURU0gQ0xJRU5U
IChDRVBIKQorTToJWGl1Ym8gTGkgPHhpdWJsaUByZWRoYXQuY29tPgorTToJSWx5YSBEcnlvbW92
IDxpZHJ5b21vdkBnbWFpbC5jb20+CitMOgljZXBoLWRldmVsQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwOi8vY2VwaC5jb20vCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29t
L2NlcGgvY2VwaC1jbGllbnQuZ2l0CitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NlcGgu
cnN0CitGOglmcy9jZXBoLworCitDRVJUSUZJQ0FURSBIQU5ETElORworTToJRGF2aWQgSG93ZWxs
cyA8ZGhvd2VsbHNAcmVkaGF0LmNvbT4KK006CURhdmlkIFdvb2Rob3VzZSA8ZHdtdzJAaW5mcmFk
ZWFkLm9yZz4KK0w6CWtleXJpbmdzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tb2R1bGUtc2lnbmluZy5yc3QKK0Y6CWNlcnRzLwor
RjoJc2NyaXB0cy9zaWduLWZpbGUuYworRjoJc2NyaXB0cy9zc2wtY29tbW9uLmgKK0Y6CXRvb2xz
L2NlcnRzLworCitDRkFHMTI4NjRCIExDRCBEUklWRVIKK006CU1pZ3VlbCBPamVkYSA8b2plZGFA
a2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvYXV4ZGlzcGxheS9jZmFnMTI4
NjRiLmMKK0Y6CWluY2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oCisKK0NGQUcxMjg2NEJGQiBMQ0Qg
RlJBTUVCVUZGRVIgRFJJVkVSCitNOglNaWd1ZWwgT2plZGEgPG9qZWRhQGtlcm5lbC5vcmc+CitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL2F1eGRpc3BsYXkvY2ZhZzEyODY0YmZiLmMKK0Y6CWlu
Y2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oCisKK0NIQVIgYW5kIE1JU0MgRFJJVkVSUworTToJQXJu
ZCBCZXJnbWFubiA8YXJuZEBhcm5kYi5kZT4KK006CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2to
QGxpbnV4Zm91bmRhdGlvbi5vcmc+CitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3JlZ2toL2NoYXItbWlzYy5naXQKK0Y6
CWRyaXZlcnMvY2hhci8KK0Y6CWRyaXZlcnMvbWlzYy8KK0Y6CWluY2x1ZGUvbGludXgvbWlzY2Rl
dmljZS5oCitGOglzYW1wbGVzL3J1c3QvcnVzdF9taXNjX2RldmljZS5ycworWDoJZHJpdmVycy9j
aGFyL2FncC8KK1g6CWRyaXZlcnMvY2hhci9od19yYW5kb20vCitYOglkcml2ZXJzL2NoYXIvaXBt
aS8KK1g6CWRyaXZlcnMvY2hhci9yYW5kb20uYworWDoJZHJpdmVycy9jaGFyL3RwbS8KKworQ0hB
UkdFUkxBQiBQT1dFUi1aIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglUaG9tYXMgV2Vpw59z
Y2h1aCA8bGludXhAd2Vpc3NzY2h1aC5uZXQ+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vcG93ZXJ6LnJzdAorRjoJ
ZHJpdmVycy9od21vbi9wb3dlcnouYworCitDSEVDS1BBVENICitNOglBbmR5IFdoaXRjcm9mdCA8
YXB3QGNhbm9uaWNhbC5jb20+CitNOglKb2UgUGVyY2hlcyA8am9lQHBlcmNoZXMuY29tPgorUjoJ
RHdhaXBheWFuIFJheSA8ZHdhaXBheWFucmF5MUBnbWFpbC5jb20+CitSOglMdWthcyBCdWx3YWhu
IDxsdWthcy5idWx3YWhuQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CXNjcmlwdHMvY2hl
Y2twYXRjaC5wbAorCitDSEVDS1BBVENIIERPQ1VNRU5UQVRJT04KK006CUR3YWlwYXlhbiBSYXkg
PGR3YWlwYXlhbnJheTFAZ21haWwuY29tPgorTToJTHVrYXMgQnVsd2FobiA8bHVrYXMuYnVsd2Fo
bkBnbWFpbC5jb20+CitSOglKb2UgUGVyY2hlcyA8am9lQHBlcmNoZXMuY29tPgorUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvY2hlY2twYXRjaC5yc3QKKworQ0hJTkVT
RSBET0NVTUVOVEFUSU9OCitNOglBbGV4IFNoaSA8YWxleHNAa2VybmVsLm9yZz4KK006CVlhbnRl
bmcgU2kgPHNpLnlhbnRlbmdAbGludXguZGV2PgorUjoJRG9uZ2xpYW5nIE11IDxkem05MUBodXN0
LmVkdS5jbj4KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvYWxleHMvbGludXguZ2l0CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3Ry
YW5zbGF0aW9ucy96aF9DTi8KKworQ0hJUElERUEgVVNCIEhJR0ggU1BFRUQgRFVBTCBST0xFIENP
TlRST0xMRVIKK006CVBldGVyIENoZW4gPHBldGVyLmNoZW5Aa2VybmVsLm9yZz4KK0w6CWxpbnV4
LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcGV0ZXIuY2hlbi91c2IuZ2l0CitGOglk
cml2ZXJzL3VzYi9jaGlwaWRlYS8KKworQ0hJUE9ORSBJQ044MzE4IEkyQyBUT1VDSFNDUkVFTiBE
UklWRVIKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitMOglsaW51eC1p
bnB1dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9jaGlwb25lLGljbjgzMTgueWFtbAor
RjoJZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jaGlwb25lX2ljbjgzMTguYworCitDSElQT05F
IElDTjg1MDUgSTJDIFRPVUNIU0NSRUVOIERSSVZFUgorTToJSGFucyBkZSBHb2VkZSA8aGRlZ29l
ZGVAcmVkaGF0LmNvbT4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jaGlwb25lX2ljbjg1MDUuYworCitD
SFJPTUUgSEFSRFdBUkUgUExBVEZPUk0gU1VQUE9SVAorTToJQmVuc29uIExldW5nIDxibGV1bmdA
Y2hyb21pdW0ub3JnPgorTToJVHp1bmctQmkgU2hpaCA8dHp1bmdiaUBrZXJuZWwub3JnPgorTDoJ
Y2hyb21lLXBsYXRmb3JtQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdp
dDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jaHJvbWUtcGxhdGZv
cm0vbGludXguZ2l0CitGOglkcml2ZXJzL3BsYXRmb3JtL2Nocm9tZS8KKworQ0hST01FT1MgRUMg
Q09ERUMgRFJJVkVSCitNOglDaGVuZy1ZaSBDaGlhbmcgPGN5Y2hpYW5nQGNocm9taXVtLm9yZz4K
K006CVR6dW5nLUJpIFNoaWggPHR6dW5nYmlAa2VybmVsLm9yZz4KK1I6CUd1ZW50ZXIgUm9lY2sg
PGdyb2Vja0BjaHJvbWl1bS5vcmc+CitMOgljaHJvbWUtcGxhdGZvcm1AbGlzdHMubGludXguZGV2
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291
bmQvZ29vZ2xlLGNyb3MtZWMtY29kZWMueWFtbAorRjoJc291bmQvc29jL2NvZGVjcy9jcm9zX2Vj
X2NvZGVjLioKKworQ0hST01FT1MgRUMgQ0hBUkdFIENPTlRST0wKK006CVRob21hcyBXZWnDn3Nj
aHVoIDxsaW51eEB3ZWlzc3NjaHVoLm5ldD4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcG93
ZXIvc3VwcGx5L2Nyb3NfY2hhcmdlLWNvbnRyb2wuYworCitDSFJPTUVPUyBFQyBIQVJEV0FSRSBN
T05JVE9SSU5HCitNOglUaG9tYXMgV2Vpw59zY2h1aCA8bGludXhAd2Vpc3NzY2h1aC5uZXQ+CitM
OgljaHJvbWUtcGxhdGZvcm1AbGlzdHMubGludXguZGV2CitMOglsaW51eC1od21vbkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vY3Jvc19lY19o
d21vbi5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vY3Jvc19lY19od21vbi5jCisKK0NIUk9NRU9TIEVD
IExFRCBEUklWRVIKK006CVRob21hcyBXZWnDn3NjaHVoIDxsaW51eEB3ZWlzc3NjaHVoLm5ldD4K
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbGVkcy9sZWRzLWNyb3NfZWMuYworCitDSFJPTUVP
UyBFQyBTVUJEUklWRVJTCitNOglCZW5zb24gTGV1bmcgPGJsZXVuZ0BjaHJvbWl1bS5vcmc+CitS
OglHdWVudGVyIFJvZWNrIDxncm9lY2tAY2hyb21pdW0ub3JnPgorTDoJY2hyb21lLXBsYXRmb3Jt
QGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wb3dlci9zdXBwbHkv
Y3Jvc19jaGFyZ2UtY29udHJvbC5jCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9jcm9zX3VzYnBk
LWNoYXJnZXIuYworTjoJY3Jvc19lYworTjoJY3Jvcy1lYworCitDSFJPTUVPUyBFQyBVQVJUIERS
SVZFUgorTToJQmhhbnUgUHJha2FzaCBNYWl5YSA8YmhhbnVtYWl5YUBjaHJvbWl1bS5vcmc+CitS
OglCZW5zb24gTGV1bmcgPGJsZXVuZ0BjaHJvbWl1bS5vcmc+CitSOglUenVuZy1CaSBTaGloIDx0
enVuZ2JpQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL2No
cm9tZS9jcm9zX2VjX3VhcnQuYworCitDSFJPTUVPUyBFQyBVU0IgUEQgTk9USUZZIERSSVZFUgor
TToJxYF1a2FzeiBCYXJ0b3NpayA8dWthc3piQGNocm9taXVtLm9yZz4KK006CUFuZHJlaSBLdWNo
eW5za2kgPGFrdWNoeW5za2lAY2hyb21pdW0ub3JnPgorTToJSmFtZXNvbiBUaGllcyA8anRoaWVz
QGdvb2dsZS5jb20+CitMOgljaHJvbWUtcGxhdGZvcm1AbGlzdHMubGludXguZGV2CitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL2Nocm9tZS9jcm9zX3VzYnBkX25vdGlmeS5jCitG
OglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvY3Jvc191c2JwZF9ub3RpZnkuaAorCitDSFJP
TUVPUyBFQyBVU0IgVFlQRS1DIERSSVZFUgorTToJQmVuc29uIExldW5nIDxibGV1bmdAY2hyb21p
dW0ub3JnPgorTToJQWJoaXNoZWsgUGFuZGl0LVN1YmVkaSA8YWJoaXNoZWtwYW5kaXRAY2hyb21p
dW0ub3JnPgorTToJSmFtZXNvbiBUaGllcyA8anRoaWVzQGdvb2dsZS5jb20+CitNOglBbmRyZWkg
S3VjaHluc2tpIDxha3VjaHluc2tpQGNocm9taXVtLm9yZz4KK0w6CWNocm9tZS1wbGF0Zm9ybUBs
aXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0vY2hyb21l
L2Nyb3NfZWNfdHlwZWMuKgorRjoJZHJpdmVycy9wbGF0Zm9ybS9jaHJvbWUvY3Jvc190eXBlY19h
bHRtb2RlLioKK0Y6CWRyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfdHlwZWNfc3dpdGNoLmMK
K0Y6CWRyaXZlcnMvcGxhdGZvcm0vY2hyb21lL2Nyb3NfdHlwZWNfdmRtLioKKworQ0hST01FT1Mg
SFBTIERSSVZFUgorTToJRGFuIENhbGxhZ2hhbiA8ZGNhbGxhZ2hAY2hyb21pdW0ub3JnPgorUjoJ
U2FtaSBLecO2c3RpbMOkIDxza3lvc3RpbEBjaHJvbWl1bS5vcmc+CitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL3BsYXRmb3JtL2Nocm9tZS9jcm9zX2hwc19pMmMuYworCitDSFJPTUVPUyBFQyBX
QVRDSERPRworTToJTHVrYXN6IE1hamN6YWsgPGxtYUBjaHJvbWl1bS5vcmc+CitMOgljaHJvbWUt
cGxhdGZvcm1AbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3dhdGNo
ZG9nL2Nyb3NfZWNfd2R0LmMKKworQ0hST01FT1MgVUNTSSBEUklWRVIKK006CUFiaGlzaGVrIFBh
bmRpdC1TdWJlZGkgPGFiaGlzaGVrcGFuZGl0QGNocm9taXVtLm9yZz4KK006CcWBdWthc3ogQmFy
dG9zaWsgPHVrYXN6YkBjaHJvbWl1bS5vcmc+CitNOglKYW1lc29uIFRoaWVzIDxqdGhpZXNAZ29v
Z2xlLmNvbT4KK006CUFuZHJlaSBLdWNoeW5za2kgPGFrdWNoeW5za2lAY2hyb21pdW0ub3JnPgor
TDoJY2hyb21lLXBsYXRmb3JtQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy91c2IvdHlwZWMvdWNzaS9jcm9zX2VjX3Vjc2kuYworCitDSFJPTlRFTCBDSDczMjIgQ0VD
IERSSVZFUgorTToJSm9lIFRlc3NsZXIgPGpydEBnb29nbGUuY29tPgorTDoJbGludXgtbWVkaWFA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJj
L2Nocm9udGVsLGNoNzMyMi55YW1sCitGOglkcml2ZXJzL21lZGlhL2NlYy9pMmMvY2g3MzIyLmMK
KworQ0lSUlVTIExPR0lDIEFVRElPIENPREVDIERSSVZFUlMKK006CURhdmlkIFJob2RlcyA8ZGF2
aWQucmhvZGVzQGNpcnJ1cy5jb20+CitNOglSaWNoYXJkIEZpdHpnZXJhbGQgPHJmQG9wZW5zb3Vy
Y2UuY2lycnVzLmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworTDoJcGF0Y2hl
c0BvcGVuc291cmNlLmNpcnJ1cy5jb20KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jaXJydXMsY3MqCitGOglEb2N1bWVudGF0aW9uL3Nv
dW5kL2NvZGVjcy9jcyoKK0Y6CWRyaXZlcnMvbWZkL2NzNDJsNDMqCitGOglkcml2ZXJzL3BpbmN0
cmwvY2lycnVzL3BpbmN0cmwtY3M0Mmw0MyoKK0Y6CWRyaXZlcnMvc3BpL3NwaS1jczQybDQzKgor
RjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9zb3VuZC9jcyoKK0Y6CWluY2x1ZGUvbGludXgvbWZkL2Nz
NDJsNDMqCitGOglpbmNsdWRlL3NvdW5kL2NzKgorRjoJc291bmQvcGNpL2hkYS9jaXJydXMqCitG
Oglzb3VuZC9wY2kvaGRhL2NzKgorRjoJc291bmQvcGNpL2hkYS9oZGFfY29tcG9uZW50KgorRjoJ
c291bmQvc29jL2NvZGVjcy9jcyoKKworQ0lSUlVTIExPR0lDIEhBUFRJQyBEUklWRVJTCitNOglK
YW1lcyBPZ2xldHJlZSA8am9nbGV0cmVAb3BlbnNvdXJjZS5jaXJydXMuY29tPgorTToJRnJlZCBU
cmV2ZW4gPGZyZWQudHJldmVuQGNpcnJ1cy5jb20+CitNOglCZW4gQnJpZ2h0IDxiZW4uYnJpZ2h0
QGNpcnJ1cy5jb20+CitMOglwYXRjaGVzQG9wZW5zb3VyY2UuY2lycnVzLmNvbQorUzoJU3VwcG9y
dGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvY2lycnVzLGNz
NDBsNTAueWFtbAorRjoJZHJpdmVycy9pbnB1dC9taXNjL2NzNDBsKgorRjoJZHJpdmVycy9tZmQv
Y3M0MGwqCitGOglpbmNsdWRlL2xpbnV4L21mZC9jczQwbCoKK0Y6CXNvdW5kL3NvYy9jb2RlY3Mv
Y3M0MGwqCisKK0NJUlJVUyBMT0dJQyBEU1AgRklSTVdBUkUgRFJJVkVSCitNOglTaW1vbiBUcmlt
bWVyIDxzaW1vbnRAb3BlbnNvdXJjZS5jaXJydXMuY29tPgorTToJQ2hhcmxlcyBLZWVwYXggPGNr
ZWVwYXhAb3BlbnNvdXJjZS5jaXJydXMuY29tPgorTToJUmljaGFyZCBGaXR6Z2VyYWxkIDxyZkBv
cGVuc291cmNlLmNpcnJ1cy5jb20+CitMOglwYXRjaGVzQG9wZW5zb3VyY2UuY2lycnVzLmNvbQor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL2dpdGh1Yi5jb20vQ2lycnVzTG9naWMvbGludXgtZHJp
dmVycy93aWtpCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL0NpcnJ1c0xvZ2ljL2xpbnV4LWRy
aXZlcnMuZ2l0CitGOglkcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy8KK0Y6CWluY2x1ZGUvbGludXgv
ZmlybXdhcmUvY2lycnVzLworCitDSVJSVVMgTE9HSUMgRVA5M1hYIEVUSEVSTkVUIERSSVZFUgor
TToJSGFydGxleSBTd2VldGVuIDxoc3dlZXRlbkB2aXNpb25lbmdyYXZlcnMuY29tPgorTDoJbmV0
ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJu
ZXQvY2lycnVzL2VwOTN4eF9ldGguYworCitDSVJSVVMgTE9HSUMgTE9DSE5BR0FSIERSSVZFUgor
TToJQ2hhcmxlcyBLZWVwYXggPGNrZWVwYXhAb3BlbnNvdXJjZS5jaXJydXMuY29tPgorTToJUmlj
aGFyZCBGaXR6Z2VyYWxkIDxyZkBvcGVuc291cmNlLmNpcnJ1cy5jb20+CitMOglwYXRjaGVzQG9w
ZW5zb3VyY2UuY2lycnVzLmNvbQorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvY2xvY2svY2lycnVzLGxvY2huYWdhci55YW1sCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vY2lycnVzLGxvY2huYWdhci55YW1sCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2NpcnJ1cyxsb2NobmFnYXIueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvY2lycnVzLGxv
Y2huYWdhci55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQv
Y2lycnVzLGxvY2huYWdhci55YW1sCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2xvY2huYWdhci5y
c3QKK0Y6CWRyaXZlcnMvY2xrL2Nsay1sb2NobmFnYXIuYworRjoJZHJpdmVycy9od21vbi9sb2No
bmFnYXItaHdtb24uYworRjoJZHJpdmVycy9tZmQvbG9jaG5hZ2FyLWkyYy5jCitGOglkcml2ZXJz
L3BpbmN0cmwvY2lycnVzL3BpbmN0cmwtbG9jaG5hZ2FyLmMKK0Y6CWRyaXZlcnMvcmVndWxhdG9y
L2xvY2huYWdhci1yZWd1bGF0b3IuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9sb2No
bmFnYXIuaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9waW5jdHJsL2xvY2huYWdhci5oCitGOglp
bmNsdWRlL2xpbnV4L21mZC9sb2NobmFnYXIqCitGOglzb3VuZC9zb2MvY29kZWNzL2xvY2huYWdh
ci1zYy5jCisKK0NJUlJVUyBMT0dJQyBNQURFUkEgQ09ERUMgRFJJVkVSUworTToJQ2hhcmxlcyBL
ZWVwYXggPGNrZWVwYXhAb3BlbnNvdXJjZS5jaXJydXMuY29tPgorTToJUmljaGFyZCBGaXR6Z2Vy
YWxkIDxyZkBvcGVuc291cmNlLmNpcnJ1cy5jb20+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5l
bC5vcmcKK0w6CXBhdGNoZXNAb3BlbnNvdXJjZS5jaXJydXMuY29tCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHBzOi8vZ2l0aHViLmNvbS9DaXJydXNMb2dpYy9saW51eC1kcml2ZXJzL3dpa2kKK1Q6CWdp
dCBodHRwczovL2dpdGh1Yi5jb20vQ2lycnVzTG9naWMvbGludXgtZHJpdmVycy5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvY2lycnVzLG1hZGVyYS55YW1sCitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9jaXJydXMsbWFkZXJh
LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9jaXJydXMs
bWFkZXJhLnlhbWwKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLW1hZGVyYSoKK0Y6CWRyaXZlcnMvaXJx
Y2hpcC9pcnEtbWFkZXJhKgorRjoJZHJpdmVycy9tZmQvY3M0N2wqCitGOglkcml2ZXJzL21mZC9t
YWRlcmEqCitGOglkcml2ZXJzL3BpbmN0cmwvY2lycnVzLyoKK0Y6CWluY2x1ZGUvZHQtYmluZGlu
Z3Mvc291bmQvbWFkZXJhKgorRjoJaW5jbHVkZS9saW51eC9pcnFjaGlwL2lycS1tYWRlcmEqCitG
OglpbmNsdWRlL2xpbnV4L21mZC9tYWRlcmEvKgorRjoJaW5jbHVkZS9zb3VuZC9tYWRlcmEqCitG
Oglzb3VuZC9zb2MvY29kZWNzL2NzNDdsKgorRjoJc291bmQvc29jL2NvZGVjcy9tYWRlcmEqCisK
K0NJU0NPIEZDT0UgSEJBIERSSVZFUgorTToJU2F0aXNoIEtoYXJhdCA8c2F0aXNoa2hAY2lzY28u
Y29tPgorTToJU2VzaWRoYXIgQmFkZGVsYSA8c2ViYWRkZWxAY2lzY28uY29tPgorTToJS2FyYW4g
VGlsYWsgS3VtYXIgPGthcnRpbGFrQGNpc2NvLmNvbT4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvc2NzaS9mbmljLworCitDSVNDTyBTQ1NJ
IEhCQSBEUklWRVIKK006CUthcmFuIFRpbGFrIEt1bWFyIDxrYXJ0aWxha0BjaXNjby5jb20+CitN
OglTZXNpZGhhciBCYWRkZWxhIDxzZWJhZGRlbEBjaXNjby5jb20+CitMOglsaW51eC1zY3NpQHZn
ZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Njc2kvc25pYy8KKworQ0lT
Q08gVklDIEVUSEVSTkVUIE5JQyBEUklWRVIKK006CUNocmlzdGlhbiBCZW52ZW51dGkgPGJlbnZl
QGNpc2NvLmNvbT4KK006CVNhdGlzaCBLaGFyYXQgPHNhdGlzaGtoQGNpc2NvLmNvbT4KK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvCisKK0NJU0NPIFZJ
QyBMT1cgTEFURU5DWSBOSUMgRFJJVkVSCitNOglDaHJpc3RpYW4gQmVudmVudXRpIDxiZW52ZUBj
aXNjby5jb20+CitNOglOZWxzb24gRXNjb2JhciA8bmVlc2NvYmFAY2lzY28uY29tPgorUzoJU3Vw
cG9ydGVkCitGOglkcml2ZXJzL2luZmluaWJhbmQvaHcvdXNuaWMvCisKK0NMQU5HIENPTlRST0wg
RkxPVyBJTlRFR1JJVFkgU1VQUE9SVAorTToJU2FtaSBUb2x2YW5lbiA8c2FtaXRvbHZhbmVuQGdv
b2dsZS5jb20+CitNOglLZWVzIENvb2sgPGtlZXNAa2VybmVsLm9yZz4KK1I6CU5hdGhhbiBDaGFu
Y2VsbG9yIDxuYXRoYW5Aa2VybmVsLm9yZz4KK0w6CWxsdm1AbGlzdHMubGludXguZGV2CitTOglT
dXBwb3J0ZWQKK0I6CWh0dHBzOi8vZ2l0aHViLmNvbS9DbGFuZ0J1aWx0TGludXgvbGludXgvaXNz
dWVzCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0
L2tlZXMvbGludXguZ2l0IGZvci1uZXh0L2hhcmRlbmluZworRjoJaW5jbHVkZS9saW51eC9jZmku
aAorRjoJa2VybmVsL2NmaS5jCisKK0NMQU5HLUZPUk1BVCBGSUxFCitNOglNaWd1ZWwgT2plZGEg
PG9qZWRhQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitGOgkuY2xhbmctZm9ybWF0CisKK0NM
QU5HL0xMVk0gQlVJTEQgU1VQUE9SVAorTToJTmF0aGFuIENoYW5jZWxsb3IgPG5hdGhhbkBrZXJu
ZWwub3JnPgorUjoJTmljayBEZXNhdWxuaWVycyA8bmljay5kZXNhdWxuaWVycytsa21sQGdtYWls
LmNvbT4KK1I6CUJpbGwgV2VuZGxpbmcgPG1vcmJvQGdvb2dsZS5jb20+CitSOglKdXN0aW4gU3Rp
dHQgPGp1c3RpbnN0aXR0QGdvb2dsZS5jb20+CitMOglsbHZtQGxpc3RzLmxpbnV4LmRldgorUzoJ
U3VwcG9ydGVkCitXOglodHRwczovL2NsYW5nYnVpbHRsaW51eC5naXRodWIuaW8vCitCOglodHRw
czovL2dpdGh1Yi5jb20vQ2xhbmdCdWlsdExpbnV4L2xpbnV4L2lzc3VlcworQzoJaXJjOi8vaXJj
LmxpYmVyYS5jaGF0L2NsYW5nYnVpbHRsaW51eAorRjoJRG9jdW1lbnRhdGlvbi9rYnVpbGQvbGx2
bS5yc3QKK0Y6CWluY2x1ZGUvbGludXgvY29tcGlsZXItY2xhbmcuaAorRjoJc2NyaXB0cy9NYWtl
ZmlsZS5jbGFuZworRjoJc2NyaXB0cy9jbGFuZy10b29scy8KK0s6CVxiKD9pOmNsYW5nfGxsdm0p
XGIKKworQ0xLIEFQSQorTToJUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CitM
OglsaW51eC1jbGtAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL2xp
bnV4L2Nsay5oCisKK0NMT0NLU09VUkNFLCBDTE9DS0VWRU5UIERSSVZFUlMKK006CURhbmllbCBM
ZXpjYW5vIDxkYW5pZWwubGV6Y2Fub0BsaW5hcm8ub3JnPgorTToJVGhvbWFzIEdsZWl4bmVyIDx0
Z2x4QGxpbnV0cm9uaXguZGU+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvdGlwL3RpcC5naXQgdGltZXJzL2NvcmUKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy90aW1lci8KK0Y6CWRyaXZlcnMvY2xvY2tzb3VyY2UvCisKK0NMT1NVUkVTCitN
OglLZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBsaW51eC5kZXY+CitMOglsaW51eC1i
Y2FjaGVmc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorQzoJaXJjOi8vaXJjLm9mdGMu
bmV0L2JjYWNoZQorRjoJaW5jbHVkZS9saW51eC9jbG9zdXJlLmgKK0Y6CWxpYi9jbG9zdXJlLmMK
KworQ01QQyBBQ1BJIERSSVZFUgorTToJVGhhZGV1IExpbWEgZGUgU291emEgQ2FzY2FyZG8gPGNh
c2NhcmRvQGhvbG9zY29waW8uY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvY2xhc3NtYXRlLWxh
cHRvcC5jCisKK0NPQkFMVCBNRURJQSBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWwt
Y2lzY29AeHM0YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9t
ZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcGNpL2NvYmFsdC8KKworQ09DQ0lORUxMRS9TZW1h
bnRpYyBQYXRjaGVzIChTbVBMKQorTToJSnVsaWEgTGF3YWxsIDxKdWxpYS5MYXdhbGxAaW5yaWEu
ZnI+CitNOglOaWNvbGFzIFBhbGl4IDxuaWNvbGFzLnBhbGl4QGltYWcuZnI+CitMOgljb2NjaUBp
bnJpYS5mciAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHBzOi8vY29jY2luZWxsZS5naXRsYWJwYWdlcy5pbnJpYS5mci93ZWJzaXRlLworVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9qbGF3YWxsL2xp
bnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMvY29jY2luZWxsZS5yc3QKK0Y6CXNj
cmlwdHMvY29jY2ljaGVjaworRjoJc2NyaXB0cy9jb2NjaW5lbGxlLworCitDT0RBIEZJTEUgU1lT
VEVNCitNOglKYW4gSGFya2VzIDxqYWhhcmtlc0Bjcy5jbXUuZWR1PgorTToJY29kYUBjcy5jbXUu
ZWR1CitMOgljb2RhbGlzdEBjb2RhLmNzLmNtdS5lZHUKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6
Ly93d3cuY29kYS5jcy5jbXUuZWR1LworRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jb2Rh
LnJzdAorRjoJZnMvY29kYS8KK0Y6CWluY2x1ZGUvbGludXgvY29kYSouaAorRjoJaW5jbHVkZS91
YXBpL2xpbnV4L2NvZGEqLmgKKworQ09EQSBWNEwyIE1FTTJNRU0gRFJJVkVSCitNOglQaGlsaXBw
IFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvbWVkaWEvY29kYS55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2NoaXBzLW1lZGlh
L2NvZGEKKworQ09ERSBPRiBDT05EVUNUCitNOglHcmVnIEtyb2FoLUhhcnRtYW4gPGdyZWdraEBs
aW51eGZvdW5kYXRpb24ub3JnPgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL3Byb2Nl
c3MvY29kZS1vZi1jb25kdWN0LWludGVycHJldGF0aW9uLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9w
cm9jZXNzL2NvZGUtb2YtY29uZHVjdC5yc3QKKworQ09ERSBUQUdHSU5HCitNOglTdXJlbiBCYWdo
ZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUuY29tPgorTToJS2VudCBPdmVyc3RyZWV0IDxrZW50Lm92
ZXJzdHJlZXRAbGludXguZGV2PgorUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9hc20tZ2VuZXJp
Yy9jb2RldGFnLmxkcy5oCitGOglpbmNsdWRlL2xpbnV4L2NvZGV0YWcuaAorRjoJbGliL2NvZGV0
YWcuYworCitDT01FREkgRFJJVkVSUworTToJSWFuIEFiYm90dCA8YWJib3R0aUBtZXYuY28udWs+
CitNOglIIEhhcnRsZXkgU3dlZXRlbiA8aHN3ZWV0ZW5AdmlzaW9uZW5ncmF2ZXJzLmNvbT4KK1M6
CU9kZCBGaXhlcworRjoJZHJpdmVycy9jb21lZGkvCitGOglpbmNsdWRlL2xpbnV4L2NvbWVkaS8K
K0Y6CWluY2x1ZGUvdWFwaS9saW51eC9jb21lZGkuaAorCitDT01NT04gQ0xLIEZSQU1FV09SSwor
TToJTWljaGFlbCBUdXJxdWV0dGUgPG10dXJxdWV0dGVAYmF5bGlicmUuY29tPgorTToJU3RlcGhl
biBCb3lkIDxzYm95ZEBrZXJuZWwub3JnPgorTDoJbGludXgtY2xrQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorUToJaHR0cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGlu
dXgtY2xrL2xpc3QvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L2Nsay9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9jbG9jay8KK0Y6CWRyaXZlcnMvY2xrLworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9j
ay8KK0Y6CWluY2x1ZGUvbGludXgvY2xrLXByKgorRjoJaW5jbHVkZS9saW51eC9jbGsvCitGOglp
bmNsdWRlL2xpbnV4L29mX2Nsay5oCitGOglydXN0L2hlbHBlcnMvY2xrLmMKK0Y6CXJ1c3Qva2Vy
bmVsL2Nsay5ycworWDoJZHJpdmVycy9jbGsvY2xrZGV2LmMKKworQ09NTU9OIElOVEVSTkVUIEZJ
TEUgU1lTVEVNIENMSUVOVCAoQ0lGUyBhbmQgU01CMykKK006CVN0ZXZlIEZyZW5jaCA8c2ZyZW5j
aEBzYW1iYS5vcmc+CitNOglTdGV2ZSBGcmVuY2ggPHNtZnJlbmNoQGdtYWlsLmNvbT4KK1I6CVBh
dWxvIEFsY2FudGFyYSA8cGNAbWFuZ3VlYml0LmNvbT4gKERGUywgZ2xvYmFsIG5hbWUgc3BhY2Up
CitSOglSb25uaWUgU2FobGJlcmcgPHJvbm5pZXNhaGxiZXJnQGdtYWlsLmNvbT4gKGRpcmVjdG9y
eSBsZWFzZXMsIHNwYXJzZSBmaWxlcykKK1I6CVNoeWFtIFByYXNhZCBOIDxzcHJhc2FkQG1pY3Jv
c29mdC5jb20+IChtdWx0aWNoYW5uZWwpCitSOglUb20gVGFscGV5IDx0b21AdGFscGV5LmNvbT4g
KFJETUEsIHNtYmRpcmVjdCkKK1I6CUJoYXJhdGggU00gPGJoYXJhdGhzbUBtaWNyb3NvZnQuY29t
PiAoZGVmZXJyZWQgY2xvc2UsIGRpcmVjdG9yeSBsZWFzZXMpCitMOglsaW51eC1jaWZzQHZnZXIu
a2VybmVsLm9yZworTDoJc2FtYmEtdGVjaG5pY2FsQGxpc3RzLnNhbWJhLm9yZyAobW9kZXJhdGVk
IGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vd2lraS5zYW1i
YS5vcmcvaW5kZXgucGhwL0xpbnV4Q0lGUworVDoJZ2l0IGdpdDovL2dpdC5zYW1iYS5vcmcvc2Zy
ZW5jaC9jaWZzLTIuNi5naXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvY2lmcy8KK0Y6
CWZzL3NtYi9jbGllbnQvCitGOglmcy9zbWIvY29tbW9uLworRjoJaW5jbHVkZS91YXBpL2xpbnV4
L2NpZnMKKworQ09NUEFDVFBDSSBIT1RQTFVHIENPUkUKK006CVNjb3R0IE11cnJheSA8c2NvdHRA
c3BpdGVmdWwub3JnPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9wY2kvaG90cGx1Zy9jcGNpX2hvdHBsdWcqCisKK0NPTVBBQ1RQQ0kgSE9U
UExVRyBHRU5FUklDIERSSVZFUgorTToJU2NvdHQgTXVycmF5IDxzY290dEBzcGl0ZWZ1bC5vcmc+
CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L3BjaS9ob3RwbHVnL2NwY2locF9nZW5lcmljLmMKKworQ09NUEFDVFBDSSBIT1RQTFVHIFpJQVRF
Q0ggWlQ1NTUwIERSSVZFUgorTToJU2NvdHQgTXVycmF5IDxzY290dEBzcGl0ZWZ1bC5vcmc+CitM
OglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3Bj
aS9ob3RwbHVnL2NwY2locF96dDU1NTAuKgorCitDT01QQUwgTEFQVE9QIFNVUFBPUlQKK006CUNl
emFyeSBKYWNraWV3aWN6IDxjZXphcnkuamFja2lld2ljekBnbWFpbC5jb20+CitMOglwbGF0Zm9y
bS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9w
bGF0Zm9ybS94ODYvY29tcGFsLWxhcHRvcC5jCisKK0NPTVBJTEVSIEFUVFJJQlVURVMKK006CU1p
Z3VlbCBPamVkYSA8b2plZGFAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUv
bGludXgvY29tcGlsZXJfYXR0cmlidXRlcy5oCisKK0NPTVBVVEUgRVhQUkVTUyBMSU5LIChDWEwp
CitNOglEYXZpZGxvaHIgQnVlc28gPGRhdmVAc3Rnb2xhYnMubmV0PgorTToJSm9uYXRoYW4gQ2Ft
ZXJvbiA8am9uYXRoYW4uY2FtZXJvbkBodWF3ZWkuY29tPgorTToJRGF2ZSBKaWFuZyA8ZGF2ZS5q
aWFuZ0BpbnRlbC5jb20+CitNOglBbGlzb24gU2Nob2ZpZWxkIDxhbGlzb24uc2Nob2ZpZWxkQGlu
dGVsLmNvbT4KK006CVZpc2hhbCBWZXJtYSA8dmlzaGFsLmwudmVybWFAaW50ZWwuY29tPgorTToJ
SXJhIFdlaW55IDxpcmEud2VpbnlAaW50ZWwuY29tPgorTToJRGFuIFdpbGxpYW1zIDxkYW4uai53
aWxsaWFtc0BpbnRlbC5jb20+CitMOglsaW51eC1jeGxAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvY3hsCitGOglEb2N1bWVudGF0aW9u
L3VzZXJzcGFjZS1hcGkvZndjdGwvZndjdGwtY3hsLnJzdAorRjoJZHJpdmVycy9jeGwvCitGOglp
bmNsdWRlL2N4bC8KK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9jeGxfbWVtLmgKK0Y6CXRvb2xzL3Rl
c3RpbmcvY3hsLworCitDT01QVVRFIEVYUFJFU1MgTElOSyBQTVUgKENQTVUpCitNOglKb25hdGhh
biBDYW1lcm9uIDxqb25hdGhhbi5jYW1lcm9uQGh1YXdlaS5jb20+CitMOglsaW51eC1jeGxAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRl
L3BlcmYvY3hsLnJzdAorRjoJZHJpdmVycy9wZXJmL2N4bF9wbXUuYworCitDT05FWEFOVCBBQ0NF
U1NSVU5ORVIgVVNCIERSSVZFUgorTDoJYWNjZXNzcnVubmVyLWdlbmVyYWxAbGlzdHMuc291cmNl
Zm9yZ2UubmV0CitTOglPcnBoYW4KK1c6CWh0dHA6Ly9hY2Nlc3NydW5uZXIuc291cmNlZm9yZ2Uu
bmV0LworRjoJZHJpdmVycy91c2IvYXRtL2N4YWNydS5jCisKK0NPTkZJREVOVElBTCBDT01QVVRJ
TkcgVEhSRUFUIE1PREVMIEZPUiBYODYgVklSVFVBTElaQVRJT04gKFNOUC9URFgpCitNOglFbGVu
YSBSZXNoZXRvdmEgPGVsZW5hLnJlc2hldG92YUBpbnRlbC5jb20+CitNOglDYXJsb3MgQmlsYmFv
IDxjYXJsb3MuYmlsYmFvQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL3NlY3VyaXR5L3NucC10ZHgtdGhyZWF0LW1vZGVsLnJzdAorCitDT05GSUdGUworTToJQW5k
cmVhcyBIaW5kYm9yZyA8YS5oaW5kYm9yZ0BrZXJuZWwub3JnPgorUjoJQnJlbm8gTGVpdGFvIDxs
ZWl0YW9AZGViaWFuLm9yZz4KK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hLmhpbmRib3JnL2xpbnV4LmdpdCBjb25maWdm
cy1uZXh0CitGOglmcy9jb25maWdmcy8KK0Y6CWluY2x1ZGUvbGludXgvY29uZmlnZnMuaAorRjoJ
cnVzdC9rZXJuZWwvY29uZmlnZnMucnMKK0Y6CXNhbXBsZXMvY29uZmlnZnMvCitGOglzYW1wbGVz
L3J1c3QvcnVzdF9jb25maWdmcy5ycworCitDT05HQVRFQyBCT0FSRCBDT05UUk9MTEVSIE1GRCBE
UklWRVIKK006CVRob21hcyBSaWNoYXJkIDx0aG9tYXMucmljaGFyZEBib290bGluLmNvbT4KK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWNnYmMuYworRjoJZHJpdmVycy9od21v
bi9jZ2JjLWh3bW9uLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtY2diYy5jCitGOglkcml2
ZXJzL21mZC9jZ2JjLWNvcmUuYworRjoJZHJpdmVycy93YXRjaGRvZy9jZ2JjX3dkdC5jCitGOglp
bmNsdWRlL2xpbnV4L21mZC9jZ2JjLmgKKworQ09OU09MRSBTVUJTWVNURU0KK006CUdyZWcgS3Jv
YWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitTOglTdXBwb3J0ZWQKK0Y6
CWRyaXZlcnMvdmlkZW8vY29uc29sZS8KK0Y6CWluY2x1ZGUvbGludXgvY29uc29sZSoKKworQ09O
VEVYVCBUUkFDS0lORworTToJRnJlZGVyaWMgV2Vpc2JlY2tlciA8ZnJlZGVyaWNAa2VybmVsLm9y
Zz4KK006CSJQYXVsIEUuIE1jS2VubmV5IiA8cGF1bG1ja0BrZXJuZWwub3JnPgorUzoJTWFpbnRh
aW5lZAorRjoJaW5jbHVkZS9saW51eC9jb250ZXh0X3RyYWNraW5nKgorRjoJa2VybmVsL2NvbnRl
eHRfdHJhY2tpbmcuYworCitDT05UUk9MIEdST1VQIChDR1JPVVApCitNOglUZWp1biBIZW8gPHRq
QGtlcm5lbC5vcmc+CitNOglKb2hhbm5lcyBXZWluZXIgPGhhbm5lc0BjbXB4Y2hnLm9yZz4KK006
CU1pY2hhbCBLb3V0bsO9IDxta291dG55QHN1c2UuY29tPgorTDoJY2dyb3Vwc0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvdGovY2dyb3VwLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1n
dWlkZS9jZ3JvdXAtdjEvCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Nncm91cC12Mi5y
c3QKK0Y6CWluY2x1ZGUvbGludXgvY2dyb3VwKgorRjoJa2VybmVsL2Nncm91cC8KK0Y6CXRvb2xz
L3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC8KKworQ09OVFJPTCBHUk9VUCAtIEJMT0NLIElPIENP
TlRST0xMRVIgKEJMS0lPKQorTToJVGVqdW4gSGVvIDx0akBrZXJuZWwub3JnPgorTToJSm9zZWYg
QmFjaWsgPGpvc2VmQHRveGljcGFuZGEuY29tPgorTToJSmVucyBBeGJvZSA8YXhib2VAa2VybmVs
LmRrPgorTDoJY2dyb3Vwc0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWJsb2NrQHZnZXIua2Vy
bmVsLm9yZworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwuZGsvbGludXgtYmxvY2sKK0Y6CURvY3Vt
ZW50YXRpb24vYWRtaW4tZ3VpZGUvY2dyb3VwLXYxL2Jsa2lvLWNvbnRyb2xsZXIucnN0CitGOgli
bG9jay9iZnEtY2dyb3VwLmMKK0Y6CWJsb2NrL2Jsay1jZ3JvdXAuYworRjoJYmxvY2svYmxrLWlv
Y29zdC5jCitGOglibG9jay9ibGstaW9sYXRlbmN5LmMKK0Y6CWJsb2NrL2Jsay10aHJvdHRsZS5j
CitGOglpbmNsdWRlL2xpbnV4L2Jsay1jZ3JvdXAuaAorCitDT05UUk9MIEdST1VQIC0gQ1BVU0VU
CitNOglXYWltYW4gTG9uZyA8bG9uZ21hbkByZWRoYXQuY29tPgorTDoJY2dyb3Vwc0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvdGovY2dyb3VwLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1p
bi1ndWlkZS9jZ3JvdXAtdjEvY3B1c2V0cy5yc3QKK0Y6CWluY2x1ZGUvbGludXgvY3B1c2V0LmgK
K0Y6CWtlcm5lbC9jZ3JvdXAvY3B1c2V0LWludGVybmFsLmgKK0Y6CWtlcm5lbC9jZ3JvdXAvY3B1
c2V0LXYxLmMKK0Y6CWtlcm5lbC9jZ3JvdXAvY3B1c2V0LmMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2Vs
ZnRlc3RzL2Nncm91cC90ZXN0X2NwdXNldC5jCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9j
Z3JvdXAvdGVzdF9jcHVzZXRfcHJzLnNoCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3Jv
dXAvdGVzdF9jcHVzZXRfdjFfYmFzZS5zaAorCitDT05UUk9MIEdST1VQIC0gREVWSUNFIE1FTU9S
WSBDT05UUk9MTEVSIChETUVNKQorTToJTWFhcnRlbiBMYW5raG9yc3QgPGRldkBsYW5raG9yc3Qu
c2U+CitNOglNYXhpbWUgUmlwYXJkIDxtcmlwYXJkQGtlcm5lbC5vcmc+CitNOglOYXRhbGllIFZv
Y2sgPG5hdGFsaWUudm9ja0BnbXguZGU+CitMOgljZ3JvdXBzQHZnZXIua2VybmVsLm9yZworTDoJ
ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0
dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglpbmNs
dWRlL2xpbnV4L2Nncm91cF9kbWVtLmgKK0Y6CWtlcm5lbC9jZ3JvdXAvZG1lbS5jCisKK0NPTlRS
T0wgR1JPVVAgLSBNRU1PUlkgUkVTT1VSQ0UgQ09OVFJPTExFUiAoTUVNQ0cpCitNOglKb2hhbm5l
cyBXZWluZXIgPGhhbm5lc0BjbXB4Y2hnLm9yZz4KK006CU1pY2hhbCBIb2NrbyA8bWhvY2tvQGtl
cm5lbC5vcmc+CitNOglSb21hbiBHdXNoY2hpbiA8cm9tYW4uZ3VzaGNoaW5AbGludXguZGV2Pgor
TToJU2hha2VlbCBCdXR0IDxzaGFrZWVsLmJ1dHRAbGludXguZGV2PgorUjoJTXVjaHVuIFNvbmcg
PG11Y2h1bi5zb25nQGxpbnV4LmRldj4KK0w6CWNncm91cHNAdmdlci5rZXJuZWwub3JnCitMOgls
aW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvbGludXgvbWVtY29u
dHJvbC5oCitGOgltbS9tZW1jb250cm9sLmMKK0Y6CW1tL21lbWNvbnRyb2wtdjEuYworRjoJbW0v
bWVtY29udHJvbC12MS5oCitGOgltbS9zd2FwX2Nncm91cC5jCitGOglzYW1wbGVzL2Nncm91cC8q
CitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvbWVtY2dfcHJvdGVjdGlvbi5tCitG
Ogl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvdGVzdF9odWdldGxiX21lbWNnLmMKK0Y6
CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC90ZXN0X2ttZW0uYworRjoJdG9vbHMvdGVz
dGluZy9zZWxmdGVzdHMvY2dyb3VwL3Rlc3RfbWVtY29udHJvbC5jCisKK0NPUkVURU1QIEhBUkRX
QVJFIE1PTklUT1JJTkcgRFJJVkVSCitNOglGZW5naHVhIFl1IDxmZW5naHVhLnl1QGludGVsLmNv
bT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9od21vbi9jb3JldGVtcC5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vY29yZXRlbXAu
YworCitDT1JTQUlSLUNQUk8gSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIKK006CU1hcml1cyBaYWNo
bWFubiA8bWFpbEBtYXJpdXN6YWNobWFubi5kZT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9od21vbi9jb3JzYWlyLWNwcm8uYworCitD
T1JTQUlSLVBTVSBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJV2lsa2VuIEdvdHR3YWx0IDx3
aWxrZW4uZ290dHdhbHRAcG9zdGVvLm5ldD4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9jb3JzYWlyLXBzdS5yc3QK
K0Y6CWRyaXZlcnMvaHdtb24vY29yc2Fpci1wc3UuYworCitDT1VOVEVSIFNVQlNZU1RFTQorTToJ
V2lsbGlhbSBCcmVhdGhpdHQgR3JheSA8d2JnQGtlcm5lbC5vcmc+CitMOglsaW51eC1paW9Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3diZy9jb3VudGVyLmdpdAorRjoJRG9jdW1lbnRhdGlv
bi9BQkkvdGVzdGluZy9zeXNmcy1idXMtY291bnRlcgorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXIt
YXBpL2dlbmVyaWMtY291bnRlci5yc3QKK0Y6CWRyaXZlcnMvY291bnRlci8KK0Y6CWluY2x1ZGUv
bGludXgvY291bnRlci5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvY291bnRlci5oCitGOgl0b29s
cy9jb3VudGVyLworCitDT1VOVEVSIFdBVENIIEVWRU5UUyBUT09MCitNOglGYWJyaWNlIEdhc25p
ZXIgPGZhYnJpY2UuZ2FzbmllckBmb3NzLnN0LmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CXRvb2xzL2NvdW50ZXIvY291bnRlcl93YXRjaF9ldmVu
dHMuYworCitDUDI2MTUgSTJDIERSSVZFUgorTToJQmVuY2UgQ3PDs2vDoXMgPGJlbmNlOThAc2No
LmJtZS5odT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtY3AyNjE1
LmMKKworQ1BVIEZSRVFVRU5DWSBEUklWRVJTIC0gVkVYUFJFU1MgU1BDIEFSTSBCSUcgTElUVExF
CitNOglWaXJlc2ggS3VtYXIgPHZpcmVzaC5rdW1hckBsaW5hcm8ub3JnPgorTToJU3VkZWVwIEhv
bGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5hcm0uY29tL3Byb2R1Y3RzL3Byb2Nlc3NvcnMv
dGVjaG5vbG9naWVzL2JpZ2xpdHRsZXByb2Nlc3NpbmcucGhwCitGOglkcml2ZXJzL2NwdWZyZXEv
dmV4cHJlc3Mtc3BjLWNwdWZyZXEuYworCitDUFUgRlJFUVVFTkNZIFNDQUxJTkcgRlJBTUVXT1JL
CitNOgkiUmFmYWVsIEouIFd5c29ja2kiIDxyYWZhZWxAa2VybmVsLm9yZz4KK006CVZpcmVzaCBL
dW1hciA8dmlyZXNoLmt1bWFyQGxpbmFyby5vcmc+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0I6CWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZworVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yYWZhZWwvbGlu
dXgtcG0uZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L3ZpcmVzaGsvcG0uZ2l0IChGb3IgQVJNIFVwZGF0ZXMpCitGOglEb2N1bWVudGF0aW9u
L2FkbWluLWd1aWRlL3BtL2NwdWZyZXEucnN0CitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRl
L3BtL2ludGVsX3BzdGF0ZS5yc3QKK0Y6CURvY3VtZW50YXRpb24vY3B1LWZyZXEvCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3B1ZnJlcS8KK0Y6CWRyaXZlcnMvY3B1ZnJl
cS8KK0Y6CWluY2x1ZGUvbGludXgvY3B1ZnJlcS5oCitGOglpbmNsdWRlL2xpbnV4L3NjaGVkL2Nw
dWZyZXEuaAorRjoJa2VybmVsL3NjaGVkL2NwdWZyZXEqLmMKK0Y6CXJ1c3Qva2VybmVsL2NwdWZy
ZXEucnMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2NwdWZyZXEvCisKK0NQVSBIT1RQTFVH
CitNOglUaG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KK006CVBldGVyIFppamxz
dHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp
bnV4L2tlcm5lbC9naXQvdGlwL3RpcC5naXQgc21wL2NvcmUKK0Y6CWluY2x1ZGUvbGludXgvY3B1
LmgKK0Y6CWluY2x1ZGUvbGludXgvY3B1aG90cGx1Zy5oCitGOglpbmNsdWRlL2xpbnV4L3NtcGJv
b3QuaAorRjoJa2VybmVsL2NwdS5jCitGOglrZXJuZWwvc21wYm9vdC4qCitGOglydXN0L2tlcm5l
bC9jcHUucnMKKworQ1BVIElETEUgVElNRSBNQU5BR0VNRU5UIEZSQU1FV09SSworTToJIlJhZmFl
bCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5vcmc+CitNOglEYW5pZWwgTGV6Y2FubyA8ZGFu
aWVsLmxlemNhbm9AbGluYXJvLm9yZz4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorQjoJaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JhZmFlbC9saW51eC1wbS5n
aXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG0vY3B1aWRsZS5yc3QKK0Y6CURvY3Vt
ZW50YXRpb24vZHJpdmVyLWFwaS9wbS9jcHVpZGxlLnJzdAorRjoJZHJpdmVycy9jcHVpZGxlLwor
RjoJaW5jbHVkZS9saW51eC9jcHVpZGxlLmgKKworQ1BVIFBPV0VSIE1PTklUT1JJTkcgU1VCU1lT
VEVNCitNOglUaG9tYXMgUmVubmluZ2VyIDx0cmVubkBzdXNlLmNvbT4KK006CVNodWFoIEtoYW4g
PHNodWFoQGtlcm5lbC5vcmc+CitNOglTaHVhaCBLaGFuIDxza2hhbkBsaW51eGZvdW5kYXRpb24u
b3JnPgorTToJSm9obiBCLiBXeWF0dCBJViA8and5YXR0QHJlZGhhdC5jb20+CitNOglKb2huIEIu
IFd5YXR0IElWIDxzYWdlb2ZyZWRvbmRvQGdtYWlsLmNvbT4KK006CUpvaG4gS2FjdXIgPGprYWN1
ckByZWRoYXQuY29tPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOgl0b29scy9wb3dlci9jcHVwb3dlci8KKworQ1BVSUQvTVNSIERSSVZFUgorTToJIkguIFBl
dGVyIEFudmluIiA8aHBhQHp5dG9yLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWFyY2gveDg2L2tl
cm5lbC9jcHVpZC5jCitGOglhcmNoL3g4Ni9rZXJuZWwvbXNyLmMKKworQ1BVSURMRSBEUklWRVIg
LSBBUk0gQklHIExJVFRMRQorTToJTG9yZW56byBQaWVyYWxpc2kgPGxwaWVyYWxpc2lAa2VybmVs
Lm9yZz4KK006CURhbmllbCBMZXpjYW5vIDxkYW5pZWwubGV6Y2Fub0BsaW5hcm8ub3JnPgorTDoJ
bGludXgtcG1Admdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh
ZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yYWZh
ZWwvbGludXgtcG0uZ2l0CitGOglkcml2ZXJzL2NwdWlkbGUvY3B1aWRsZS1iaWdfbGl0dGxlLmMK
KworQ1BVSURMRSBEUklWRVIgLSBBUk0gRVhZTk9TCitNOglEYW5pZWwgTGV6Y2FubyA8ZGFuaWVs
LmxlemNhbm9AbGluYXJvLm9yZz4KK006CUt1a2ppbiBLaW0gPGtnZW5lQGtlcm5lbC5vcmc+CitS
OglLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CitMOglsaW51eC1wbUB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJYXJjaC9hcm0vbWFjaC1leHlub3MvcG0uYworRjoJZHJpdmVycy9jcHVpZGxl
L2NwdWlkbGUtZXh5bm9zLmMKK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9jcHVpZGxl
LWV4eW5vcy5oCisKK0NQVUlETEUgRFJJVkVSIC0gQVJNIFBTQ0kKK006CUxvcmVuem8gUGllcmFs
aXNpIDxscGllcmFsaXNpQGtlcm5lbC5vcmc+CitNOglTdWRlZXAgSG9sbGEgPHN1ZGVlcC5ob2xs
YUBhcm0uY29tPgorTToJVWxmIEhhbnNzb24gPHVsZi5oYW5zc29uQGxpbmFyby5vcmc+CitMOgls
aW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk
ZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK1Q6
CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdWxmaC9s
aW51eC1wbS5naXQKK0Y6CWRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuYworCitDUFVJRExF
IERSSVZFUiAtIEFSTSBQU0NJIFBNIERPTUFJTgorTToJVWxmIEhhbnNzb24gPHVsZi5oYW5zc29u
QGxpbmFyby5vcmc+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1r
ZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMp
CitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvdWxmaC9saW51eC1wbS5naXQKK0Y6CWRyaXZlcnMvY3B1aWRsZS9jcHVpZGxl
LXBzY2ktZG9tYWluLmMKK0Y6CWRyaXZlcnMvY3B1aWRsZS9jcHVpZGxlLXBzY2kuaAorCitDUFVJ
RExFIERSSVZFUiAtIERUIElETEUgUE0gRE9NQUlOCitNOglVbGYgSGFuc3NvbiA8dWxmLmhhbnNz
b25AbGluYXJvLm9yZz4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3Vs
ZmgvbGludXgtcG0uZ2l0CitGOglkcml2ZXJzL2NwdWlkbGUvZHRfaWRsZV9nZW5wZC5jCitGOglk
cml2ZXJzL2NwdWlkbGUvZHRfaWRsZV9nZW5wZC5oCisKK0NQVUlETEUgRFJJVkVSIC0gUklTQy1W
IFNCSQorTToJQW51cCBQYXRlbCA8YW51cEBicmFpbmZhdWx0Lm9yZz4KK0w6CWxpbnV4LXBtQHZn
ZXIua2VybmVsLm9yZworTDoJbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9jcHVpZGxlL2NwdWlkbGUtcmlzY3Ytc2JpLmMKKworQ1BVTUFT
SyBBUEkgW1JVU1RdCitNOglWaXJlc2ggS3VtYXIgPHZpcmVzaC5rdW1hckBsaW5hcm8ub3JnPgor
UjoJWXVyeSBOb3JvdiA8eXVyeS5ub3JvdkBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOgly
dXN0L2tlcm5lbC9jcHVtYXNrLnJzCisKK0NSQU1GUyBGSUxFU1lTVEVNCitNOglOaWNvbGFzIFBp
dHJlIDxuaWNvQGZsdXhuaWMubmV0PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9m
aWxlc3lzdGVtcy9jcmFtZnMucnN0CitGOglmcy9jcmFtZnMvCisKK0NSQyBMSUJSQVJZCitNOglF
cmljIEJpZ2dlcnMgPGViaWdnZXJzQGtlcm5lbC5vcmc+CitSOglBcmQgQmllc2hldXZlbCA8YXJk
YkBrZXJuZWwub3JnPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L2ViaWdnZXJzL2xpbnV4LmdpdCBjcmMtbmV4dAorRjoJRG9jdW1lbnRhdGlvbi9zdGFnaW5n
L2NyYyoKK0Y6CWFyY2gvKi9saWIvY3JjKgorRjoJaW5jbHVkZS9saW51eC9jcmMqCitGOglsaWIv
Y3JjKgorRjoJbGliL3Rlc3RzL2NyY19rdW5pdC5jCitGOglzY3JpcHRzL2dlbi1jcmMtY29uc3Rz
LnB5CisKK0NSRUFUSVZFIFNCMDU0MAorTToJQmFzdGllbiBOb2NlcmEgPGhhZGVzc0BoYWRlc3Mu
bmV0PgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL2hpZC9oaWQtY3JlYXRpdmUtc2IwNTQwLmMKKworQ1JFREVOVElBTFMKK006CVBhdWwg
TW9vcmUgPHBhdWxAcGF1bC1tb29yZS5jb20+CitSOglTZXJnZSBIYWxseW4gPHNlcmdlaEBrZXJu
ZWwub3JnPgorTDoJbGludXgtc2VjdXJpdHktbW9kdWxlQHZnZXIua2VybmVsLm9yZworUzoJU3Vw
cG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvcGNtb29yZS9sc20uZ2l0CitGOglpbmNsdWRlL2xpbnV4L2NyZWQuaAorRjoJa2VybmVs
L2NyZWQuYworRjoJRG9jdW1lbnRhdGlvbi9zZWN1cml0eS9jcmVkZW50aWFscy5yc3QKKworSU5U
RUwgQ1JQUyBDT01NT04gUkVEVU5EQU5UIFBTVSBEUklWRVIKK006CU5pbmFkIFBhbHN1bGUgPG5p
bmFkQGxpbnV4LmlibS5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vY3Jwcy5yc3QKK0Y6CWRyaXZlcnMvaHdt
b24vcG1idXMvY3Jwcy5jCisKK0NSWVBUTyBBUEkKK006CUhlcmJlcnQgWHUgPGhlcmJlcnRAZ29u
ZG9yLmFwYW5hLm9yZy5hdT4KK006CSJEYXZpZCBTLiBNaWxsZXIiIDxkYXZlbUBkYXZlbWxvZnQu
bmV0PgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9oZXJiZXJ0
L2NyeXB0b2Rldi0yLjYuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L2hlcmJlcnQvY3J5cHRvLTIuNi5naXQKK0Y6CURvY3VtZW50YXRpb24v
Y3J5cHRvLworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by8KK0Y6
CWFyY2gvKi9jcnlwdG8vCitGOglhcmNoLyovbGliL2NyeXB0by8KK0Y6CWNyeXB0by8KK0Y6CWRy
aXZlcnMvY3J5cHRvLworRjoJaW5jbHVkZS9jcnlwdG8vCitGOglpbmNsdWRlL2xpbnV4L2NyeXB0
byoKK0Y6CWxpYi9jcnlwdG8vCisKK0NSWVBUTyBTUEVFRCBURVNUIENPTVBBUkUKK006CVdhbmcg
SmluY2hhbyA8d2FuZ2ppbmNoYW9AeGZ1c2lvbi5jb20+CitMOglsaW51eC1jcnlwdG9Admdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOgl0b29scy9jcnlwdG8vdGNyeXB0L3RjcnlwdF9z
cGVlZF9jb21wYXJlLnB5CisKK0NSWVBUT0dSQVBISUMgUkFORE9NIE5VTUJFUiBHRU5FUkFUT1IK
K006CU5laWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+CitMOglsaW51eC1jcnlwdG9A
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOgljcnlwdG8vYW5zaV9jcHJuZy5jCitG
OgljcnlwdG8vcm5nLmMKKworQ1MzMzA4IE1FRElBIERSSVZFUgorTToJSGFucyBWZXJrdWlsIDxo
dmVya3VpbEB4czRhbGwubmw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9k
ZCBGaXhlcworVzoJaHR0cDovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy9jczMzMDguYworCitDUzU1MzUgQXVkaW8g
QUxTQSBkcml2ZXIKK006CUpheWEgS3VtYXIgPGpheWFrdW1hci5hbHNhQGdtYWlsLmNvbT4KK1M6
CU1haW50YWluZWQKK0Y6CXNvdW5kL3BjaS9jczU1MzVhdWRpby8KKworQ1RVIENBTiBGRCBEUklW
RVIKK006CVBhdmVsIFBpc2EgPHBpc2FAY21wLmZlbGsuY3Z1dC5jej4KK006CU9uZHJlaiBJbGxl
IDxvbmRyZWouaWxsZUBnbWFpbC5jb20+CitMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nh
bi9jdHUsY3R1Y2FuZmQueWFtbAorRjoJZHJpdmVycy9uZXQvY2FuL2N0dWNhbmZkLworCitDVkUg
QVNTSUdOTUVOVCBDT05UQUNUCitNOglDVkUgQXNzaWdubWVudCBUZWFtIDxjdmVAa2VybmVsLm9y
Zz4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vcHJvY2Vzcy9jdmUucnN0CisKK0NX
MTIwMCBXTEFOIGRyaXZlcgorUzoJT3JwaGFuCitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5l
bC5vcmcKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3N0LworRjoJaW5jbHVkZS9saW51eC9wbGF0
Zm9ybV9kYXRhL25ldC1jdzEyMDAuaAorCitDWDE4IFZJREVPNExJTlVYIERSSVZFUgorTToJQW5k
eSBXYWxscyA8YXdhbGxzQG1kLm1ldHJvY2FzdC5uZXQ+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBn
aXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcGNpL2N4MTgvCitG
OglpbmNsdWRlL3VhcGkvbGludXgvaXZ0dioKKworQ1gyMzQxWCBNUEVHIEVOQ09ERVIgSEVMUEVS
IE1PRFVMRQorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwubmw+CitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEv
Y29tbW9uL2N4MjM0MXgqCitGOglpbmNsdWRlL21lZGlhL2Rydi1pbnRmL2N4MjM0MXguaAorCitD
WDI0MTIwIE1FRElBIERSSVZFUgorTToJSmVtbWEgRGVuc29uIDxqZGVuc29uQGdtYWlsLmNvbT4K
K006CVBhdHJpY2sgQm9ldHRjaGVyIDxwYXRyaWNrLmJvZXR0Y2hlckBwb3N0ZW8uZGU+CitMOgls
aW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGlu
dXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1t
ZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2N4MjQxMjAqCisKK0NY
ODggVklERU80TElOVVggRFJJVkVSCitNOglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJA
a2VybmVsLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT2RkIGZpeGVz
CitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEu
Z2l0CitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvZHJpdmVycy9jeDg4KgorRjoJ
ZHJpdmVycy9tZWRpYS9wY2kvY3g4OC8KKworQ1hEMjgyMFIgTUVESUEgRFJJVkVSCitMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9y
ZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xp
c3QvCitGOglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvY3hkMjgyMHIqCisKK0NYR0IzIEVU
SEVSTkVUIERSSVZFUiAoQ1hHQjMpCitNOglQb3RudXJpIEJoYXJhdCBUZWphIDxiaGFyYXRAY2hl
bHNpby5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglo
dHRwOi8vd3d3LmNoZWxzaW8uY29tCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4
Z2IzLworCitDWEdCMyBJU0NTSSBEUklWRVIgKENYR0IzSSkKK006CVZhcnVuIFByYWthc2ggPHZh
cnVuQGNoZWxzaW8uY29tPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorVzoJaHR0cDovL3d3dy5jaGVsc2lvLmNvbQorRjoJZHJpdmVycy9zY3NpL2N4Z2JpL2N4
Z2IzaQorCitDWEdCNCBDUllQVE8gRFJJVkVSIChjaGNyKQorTToJQXl1c2ggU2F3YWwgPGF5dXNo
LnNhd2FsQGNoZWxzaW8uY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwOi8vd3d3LmNoZWxzaW8uY29tCitGOglkcml2ZXJzL2NyeXB0by9j
aGVsc2lvCisKK0NYR0I0IEVUSEVSTkVUIERSSVZFUiAoQ1hHQjQpCitNOglQb3RudXJpIEJoYXJh
dCBUZWphIDxiaGFyYXRAY2hlbHNpby5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitXOglodHRwOi8vd3d3LmNoZWxzaW8uY29tCitGOglkcml2ZXJzL25ldC9l
dGhlcm5ldC9jaGVsc2lvL2N4Z2I0LworCitDWEdCNCBJTkxJTkUgQ1JZUFRPIERSSVZFUgorTToJ
QXl1c2ggU2F3YWwgPGF5dXNoLnNhd2FsQGNoZWxzaW8uY29tPgorTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5jaGVsc2lvLmNvbQorRjoJZHJp
dmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9pbmxpbmVfY3J5cHRvLworCitDWEdCNCBJU0NTSSBE
UklWRVIgKENYR0I0SSkKK006CVZhcnVuIFByYWthc2ggPHZhcnVuQGNoZWxzaW8uY29tPgorTDoJ
bGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5j
aGVsc2lvLmNvbQorRjoJZHJpdmVycy9zY3NpL2N4Z2JpL2N4Z2I0aQorCitDWEdCNCBJV0FSUCBS
TklDIERSSVZFUiAoSVdfQ1hHQjQpCitNOglQb3RudXJpIEJoYXJhdCBUZWphIDxiaGFyYXRAY2hl
bHNpby5jb20+CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitX
OglodHRwOi8vd3d3Lm9wZW5mYWJyaWNzLm9yZworRjoJZHJpdmVycy9pbmZpbmliYW5kL2h3L2N4
Z2I0LworRjoJaW5jbHVkZS91YXBpL3JkbWEvY3hnYjQtYWJpLmgKKworQ1hHQjRWRiBFVEhFUk5F
VCBEUklWRVIgKENYR0I0VkYpCitNOglQb3RudXJpIEJoYXJhdCBUZWphIDxiaGFyYXRAY2hlbHNp
by5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRw
Oi8vd3d3LmNoZWxzaW8uY29tCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0
dmYvCisKK0NZQkVSUFJPIEZCIERSSVZFUgorTToJUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1saW51
eC5vcmcudWs+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVy
YXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5h
cm1saW51eC5vcmcudWsvCitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L2N5YmVyMjAwMGZiLioKKwor
Q1lDTEFERVMgUEMzMDAgRFJJVkVSCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvbmV0L3dhbi9wYzMw
MCoKKworQ1lQUkVTUyBDWThDOTVYMCBQSU5DVFJMIERSSVZFUgorTToJUGF0cmljayBSdWRvbHBo
IDxwYXRyaWNrLnJ1ZG9scGhAOWVsZW1lbnRzLmNvbT4KK0w6CWxpbnV4LWdwaW9Admdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1jeThjOTV4
MC5jCisKK0NZUFJFU1MgQ1k4Q1RNQTE0MCBUT1VDSFNDUkVFTiBEUklWRVIKK006CUxpbnVzIFdh
bGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9jeThj
dG1hMTQwLmMKKworQ1lQUkVTUyBTVFJFRVRGSUdIVEVSIFRPVUNIS0VZUyBEUklWRVIKK006CVlh
c3NpbmUgT3VkamFuYSA8eS5vdWRqYW5hQHByb3Rvbm1haWwuY29tPgorTDoJbGludXgtaW5wdXRA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvaW5wdXQvY3lwcmVzcy1zZi55YW1sCitGOglkcml2ZXJzL2lucHV0L2tleWJv
YXJkL2N5cHJlc3Mtc2YuYworCitDWVBSRVNTX0ZJUk1XQVJFIE1FRElBIERSSVZFUgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9s
aXN0LworRjoJZHJpdmVycy9tZWRpYS9jb21tb24vY3lwcmVzc19maXJtd2FyZSoKKworQ1lUVFNQ
IFRPVUNIU0NSRUVOIERSSVZFUgorTToJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5h
cm8ub3JnPgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2N5dHRzcCoKKworRC1MSU5LIERJUi02ODUgVE9V
Q0hLRVlTIERSSVZFUgorTToJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3Jn
PgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZl
cnMvaW5wdXQva2V5Ym9hcmQvZGxpbmstZGlyNjg1LXRvdWNoa2V5cy5jCisKK0RBTExBUy9NQVhJ
TSBEUzE2ODUtRkFNSUxZIFJFQUwgVElNRSBDTE9DSworTToJSm9zaHVhIEtpbmFyZCA8a3VtYmFA
Z2VudG9vLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcnRjL3J0Yy1kczE2ODUuYwor
RjoJaW5jbHVkZS9saW51eC9ydGMvZHMxNjg1LmgKKworREFNQSBTTEFWRSBmb3IgQVguMjUKK006
CUpvZXJnIFJldXRlciA8anJldXRlckB5YWluYS5kZT4KK0w6CWxpbnV4LWhhbXNAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwOi8veWFpbmEuZGUvanJldXRlci8KK1c6CWh0
dHA6Ly93d3cucXNsLm5ldC9kbDFia2UvCitGOgluZXQvYXgyNS9hZl9heDI1LmMKK0Y6CW5ldC9h
eDI1L2F4MjVfZGV2LmMKK0Y6CW5ldC9heDI1L2F4MjVfZHNfKgorRjoJbmV0L2F4MjUvYXgyNV9p
bi5jCitGOgluZXQvYXgyNS9heDI1X291dC5jCitGOgluZXQvYXgyNS9heDI1X3RpbWVyLmMKK0Y6
CW5ldC9heDI1L3N5c2N0bF9uZXRfYXgyNS5jCisKK0RBU0hBUk8gQUNQSSBQTEFURk9STSBEUklW
RVIKK006CU1pY2hhxYIgS29wZcSHIDxtaWNoYWwua29wZWNAM21kZWIuY29tPgorUzoJTWFpbnRh
aW5lZAorVzoJaHR0cHM6Ly9kb2NzLmRhc2hhcm8uY29tLworRjoJZHJpdmVycy9wbGF0Zm9ybS94
ODYvZGFzaGFyby1hY3BpLmMKKworREFUQSBBQ0NFU1MgTU9OSVRPUgorTToJU2VvbmdKYWUgUGFy
ayA8c2pAa2VybmVsLm9yZz4KK0w6CWRhbW9uQGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgtbW1A
a3ZhY2sub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2RhbW9uaXRvci5naXRodWIuaW8K
K1A6CURvY3VtZW50YXRpb24vbW0vZGFtb24vbWFpbnRhaW5lci1wcm9maWxlLnJzdAorVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ha3BtL21tCitU
OglxdWlsdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWtw
bS8yNS1uZXcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvc2ovbGludXguZ2l0IGRhbW9uL25leHQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rp
bmcvc3lzZnMta2VybmVsLW1tLWRhbW9uCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21t
L2RhbW9uLworRjoJRG9jdW1lbnRhdGlvbi9tbS9kYW1vbi8KK0Y6CWluY2x1ZGUvbGludXgvZGFt
b24uaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvZGFtb24uaAorRjoJbW0vZGFtb24vCitGOglz
YW1wbGVzL2RhbW9uLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZGFtb24vCisKK0RBVklD
T00gRkFTVCBFVEhFUk5FVCAoRE1GRSkgTkVUV09SSyBEUklWRVIKK0w6CW5ldGRldkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9k
cml2ZXJzL2V0aGVybmV0L2RlYy9kbWZlLnJzdAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvZGVj
L3R1bGlwL2RtZmUuYworCitEQzM5MC9BTTUzQzk3NCBTQ1NJIGRyaXZlcgorTToJSGFubmVzIFJl
aW5lY2tlIDxoYXJlQHN1c2UuY29tPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvc2NzaS9hbTUzYzk3NC5jCisKK0RDMzk1eCBTQ1NJIGRy
aXZlcgorTToJT2xpdmVyIE5ldWt1bSA8b2xpdmVyQG5ldWt1bS5vcmc+CitNOglBbGkgQWtjYWFn
YWMgPGFsaWFrY0B3ZWIuZGU+CitNOglKYW1pZSBMZW5laGFuIDxsZW5laGFuQHR3aWJibGUub3Jn
PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9zY3NpL2RjMzk1eC5yc3QKK0Y6CWRy
aXZlcnMvc2NzaS9kYzM5NXguKgorCitERUJVR09CSkVDVFM6CitNOglUaG9tYXMgR2xlaXhuZXIg
PHRnbHhAbGludXRyb25peC5kZT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl
cm5lbC9naXQvdGlwL3RpcC5naXQgY29yZS9kZWJ1Z29iamVjdHMKK0Y6CWluY2x1ZGUvbGludXgv
ZGVidWdvYmplY3RzLmgKK0Y6CWxpYi9kZWJ1Z29iamVjdHMuYworCitERUNTVEFUSU9OIFBMQVRG
T1JNIFNVUFBPUlQKK006CSJNYWNpZWogVy4gUm96eWNraSIgPG1hY3JvQG9yY2FtLm1lLnVrPgor
TDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvbWlw
cy9kZWMvCitGOglhcmNoL21pcHMvaW5jbHVkZS9hc20vZGVjLworRjoJYXJjaC9taXBzL2luY2x1
ZGUvYXNtL21hY2gtZGVjLworCitERUZYWCBGRERJIE5FVFdPUksgRFJJVkVSCitNOgkiTWFjaWVq
IFcuIFJvenlja2kiIDxtYWNyb0BvcmNhbS5tZS51az4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvbmV0L2ZkZGkvZGVmeHguKgorCitERUZaQSBGRERJIE5FVFdPUksgRFJJVkVSCitNOgkiTWFj
aWVqIFcuIFJvenlja2kiIDxtYWNyb0BvcmNhbS5tZS51az4KK1M6CU1haW50YWluZWQKK0Y6CWRy
aXZlcnMvbmV0L2ZkZGkvZGVmemEuKgorCitERUlOVEVSTEFDRSBEUklWRVJTIEZPUiBBTExXSU5O
RVIgSDMKK006CUplcm5laiBTa3JhYmVjIDxqZXJuZWouc2tyYWJlY0BnbWFpbC5jb20+CitMOgls
aW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9s
aW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9tZWRpYS9hbGx3aW5uZXIsc3VuOGktaDMtZGVpbnRlcmxhY2UueWFtbAorRjoJZHJpdmVycy9t
ZWRpYS9wbGF0Zm9ybS9zdW54aS9zdW44aS1kaS8KKworREVMTCBMQVBUT1AgRFJJVkVSCitNOglN
YXR0aGV3IEdhcnJldHQgPG1qZzU5QHNyY2YudWNhbS5vcmc+CitNOglQYWxpIFJvaMOhciA8cGFs
aUBrZXJuZWwub3JnPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwvZGVsbC1sYXB0b3AuYwor
CitERUxMIExBUFRPUCBGUkVFRkFMTCBEUklWRVIKK006CVBhbGkgUm9ow6FyIDxwYWxpQGtlcm5l
bC5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsL2RlbGwt
c21vODgwMC5jCisKK0RFTEwgTEFQVE9QIFJCVE4gRFJJVkVSCitNOglQYWxpIFJvaMOhciA8cGFs
aUBrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVs
bC9kZWxsLXJidG4uKgorCitERUxMIExBUFRPUCBTTU0gRFJJVkVSCitNOglQYWxpIFJvaMOhciA8
cGFsaUBrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvb2Jz
b2xldGUvcHJvY2ZzLWk4aworRjoJZHJpdmVycy9od21vbi9kZWxsLXNtbS1od21vbi5jCitGOglp
bmNsdWRlL3VhcGkvbGludXgvaThrLmgKKworREVMTCBQQyBEUklWRVIKK006CUx5bmRvbiBTYW5j
aGUgPGxzYW5jaGVAbHluZGVuby5jYT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsL2RlbGwt
cGMuYworCitERUxMIFJFTU9URSBCSU9TIFVQREFURSBEUklWRVIKK006CVN0dWFydCBIYXllcyA8
c3R1YXJ0LncuaGF5ZXNAZ21haWwuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwvZGVs
bF9yYnUuYworCitERUxMIFNNQklPUyBEUklWRVIKK006CVBhbGkgUm9ow6FyIDxwYWxpQGtlcm5l
bC5vcmc+CitMOglEZWxsLkNsaWVudC5LZXJuZWxAZGVsbC5jb20KK0w6CXBsYXRmb3JtLWRyaXZl
ci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3Jt
L3g4Ni9kZWxsL2RlbGwtc21iaW9zLioKKworREVMTCBTTUJJT1MgU01NIERSSVZFUgorTDoJRGVs
bC5DbGllbnQuS2VybmVsQGRlbGwuY29tCitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC9kZWxs
LXNtYmlvcy1zbW0uYworCitERUxMIFNNQklPUyBXTUkgRFJJVkVSCitMOglEZWxsLkNsaWVudC5L
ZXJuZWxAZGVsbC5jb20KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsL2RlbGwtc21iaW9zLXdt
aS5jCitGOgl0b29scy93bWkvZGVsbC1zbWJpb3MtZXhhbXBsZS5jCisKK0RFTEwgU1lTVEVNUyBN
QU5BR0VNRU5UIEJBU0UgRFJJVkVSIChkY2RiYXMpCitNOglTdHVhcnQgSGF5ZXMgPHN0dWFydC53
LmhheWVzQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvZGNkYmFzLnJz
dAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvZGVsbC9kY2RiYXMuKgorCitERUxMIFdNSSBERFYg
RFJJVkVSCitNOglBcm1pbiBXb2xmIDxXX0FybWluQGdteC5kZT4KK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1kZWxsLXdtaS1kZHYKK0Y6CURvY3Vt
ZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tZGVsbC13bWktZGR2CitGOglEb2N1
bWVudGF0aW9uL3dtaS9kZXZpY2VzL2RlbGwtd21pLWRkdi5yc3QKK0Y6CWRyaXZlcnMvcGxhdGZv
cm0veDg2L2RlbGwvZGVsbC13bWktZGR2LmMKKworREVMTCBXTUkgREVTQ1JJUFRPUiBEUklWRVIK
K0w6CURlbGwuQ2xpZW50Lktlcm5lbEBkZWxsLmNvbQorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9wbGF0Zm9ybS94ODYvZGVsbC9kZWxsLXdtaS1kZXNjcmlwdG9yLmMKKworREVMTCBXTUkgSEFS
RFdBUkUgUFJJVkFDWSBTVVBQT1JUCitMOglEZWxsLkNsaWVudC5LZXJuZWxAZGVsbC5jb20KK0w6
CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL3BsYXRmb3JtL3g4Ni9kZWxsL2RlbGwtd21pLXByaXZhY3kuYworCitERUxMIFdNSSBO
T1RJRklDQVRJT05TIERSSVZFUgorTToJTWF0dGhldyBHYXJyZXR0IDxtamc1OUBzcmNmLnVjYW0u
b3JnPgorTToJUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvcGxhdGZvcm0veDg2L2RlbGwvZGVsbC13bWktYmFzZS5jCisKK0RFTEwgV01JIFNZ
U01BTiBEUklWRVIKK006CVByYXNhbnRoIEtzciA8cHJhc2FudGgua3NyQGRlbGwuY29tPgorTDoJ
RGVsbC5DbGllbnQuS2VybmVsQGRlbGwuY29tCitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9z
eXNmcy1jbGFzcy1maXJtd2FyZS1hdHRyaWJ1dGVzCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9k
ZWxsL2RlbGwtd21pLXN5c21hbi8KKworREVMVEEgQUhFLTUwREMgRkFOIENPTlRST0wgTU9EVUxF
IERSSVZFUgorTToJWmV2IFdlaXNzIDx6ZXZAYmV3aWxkZXJiZWVzdC5uZXQ+CitMOglsaW51eC1o
d21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaHdtb24vcG1i
dXMvZGVsdGEtYWhlNTBkYy1mYW4uYworCitERUxUQSBEUFM5MjBBQiBQU1UgRFJJVkVSCitNOglS
b2JlcnQgTWFya28gPHJvYmVydC5tYXJrb0BzYXJ0dXJhLmhyPgorTDoJbGludXgtaHdtb25Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2Rwczky
MGFiLnJzdAorRjoJZHJpdmVycy9od21vbi9wbWJ1cy9kcHM5MjBhYi5jCisKK0RFTFRBIE5FVFdP
UktTIFRONDhNIENQTEQgRFJJVkVSUworTToJUm9iZXJ0IE1hcmtvIDxyb2JlcnQubWFya29Ac2Fy
dHVyYS5ocj4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9ncGlvL2RlbHRhLHRuNDhtLWdwaW8ueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL21mZC9kZWx0YSx0bjQ4bS1jcGxkLnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9kZWx0YSx0bjQ4bS1yZXNldC55YW1sCitGOglkcml2
ZXJzL2dwaW8vZ3Bpby10bjQ4bS5jCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L2RlbHRh
LHRuNDhtLXJlc2V0LmgKKworREVMVEEgU1QgTUVESUEgRFJJVkVSCitNOglIdWd1ZXMgRnJ1Y2hl
dCA8aHVndWVzLmZydWNoZXRAZm9zcy5zdC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDov
L2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdC9zdGkv
ZGVsdGEKKworREVOQUxJIE5BTkQgRFJJVkVSCitMOglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFk
Lm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL210ZC9uYW5kL3Jhdy9kZW5hbGkqCisKK0RFU0lH
TldBUkUgRURNQSBDT1JFIElQIERSSVZFUgorTToJTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxtYW5p
dmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9yZz4KK0w6CWRtYWVuZ2luZUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZG1hL2R3LWVkbWEvCitGOglpbmNsdWRlL2xp
bnV4L2RtYS9lZG1hLmgKKworREVTSUdOV0FSRSBVU0IyIERSRCBJUCBEUklWRVIKK006CU1pbmFz
IEhhcnV0eXVueWFuIDxobWluYXNAc3lub3BzeXMuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9z
Y20vbGludXgva2VybmVsL2dpdC9iYWxiaS91c2IuZ2l0CitGOglkcml2ZXJzL3VzYi9kd2MyLwor
CitERVNJR05XQVJFIFVTQjMgRFJEIElQIERSSVZFUgorTToJVGhpbmggTmd1eWVuIDxUaGluaC5O
Z3V5ZW5Ac3lub3BzeXMuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy91c2IvZHdjMy8KKworREVTSUdOV0FSRSBYREFUQSBJUCBEUklW
RVIKK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJRG9jdW1lbnRh
dGlvbi9taXNjLWRldmljZXMvZHcteGRhdGEtcGNpZS5yc3QKK0Y6CWRyaXZlcnMvbWlzYy9kdy14
ZGF0YS1wY2llLmMKKworREVWQU5URUNIIFNSRiBVTFRSQVNPTklDIFJBTkdFUiBJSU8gRFJJVkVS
CitNOglBbmRyZWFzIEtsaW5nZXIgPGFrQGl0LWtsaW5nZXIuZGU+CitMOglsaW51eC1paW9Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5n
L3N5c2ZzLWJ1cy1paW8tZGlzdGFuY2Utc3JmMDgKK0Y6CWRyaXZlcnMvaWlvL3Byb3hpbWl0eS9z
cmYqLmMKKworREVWSUNFIENPUkVEVU1QIChERVZfQ09SRURVTVApCitNOglKb2hhbm5lcyBCZXJn
IDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9iYXNlL2RldmNvcmVkdW1wLmMKK0Y6CWlu
Y2x1ZGUvbGludXgvZGV2Y29yZWR1bXAuaAorCitERVZJQ0UgREVQRU5ERU5DWSBIRUxQRVIgU0NS
SVBUCitNOglTYXJhdmFuYSBLYW5uYW4gPHNhcmF2YW5ha0Bnb29nbGUuY29tPgorTDoJbGludXgt
a2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJc2NyaXB0cy9kZXYtbmVl
ZHMuc2gKKworREVWSUNFIERJUkVDVCBBQ0NFU1MgKERBWCkKK006CURhbiBXaWxsaWFtcyA8ZGFu
Lmoud2lsbGlhbXNAaW50ZWwuY29tPgorTToJVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52ZXJtYUBp
bnRlbC5jb20+CitNOglEYXZlIEppYW5nIDxkYXZlLmppYW5nQGludGVsLmNvbT4KK0w6CW52ZGlt
bUBsaXN0cy5saW51eC5kZXYKK0w6CWxpbnV4LWN4bEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorRjoJZHJpdmVycy9kYXgvCisKK0RFVklDRSBGUkVRVUVOQ1kgKERFVkZSRVEpCitNOglN
eXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNvbT4KK006CUt5dW5nbWluIFBhcmsg
PGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CitNOglDaGFud29vIENob2kgPGN3MDAuY2hvaUBz
YW1zdW5nLmNvbT4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jaGFu
d29vL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RldmZy
ZXEvCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJjb25uZWN0L21l
ZGlhdGVrLGNjaS55YW1sCitGOglkcml2ZXJzL2RldmZyZXEvCitGOglpbmNsdWRlL2xpbnV4L2Rl
dmZyZXEuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvZGV2ZnJlcS5oCisKK0RFVklDRSBGUkVR
VUVOQ1kgRVZFTlQgKERFVkZSRVEtRVZFTlQpCitNOglDaGFud29vIENob2kgPGN3MDAuY2hvaUBz
YW1zdW5nLmNvbT4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitU
OglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2NoYW53
b28vbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGV2ZnJl
cS9ldmVudC8KK0Y6CWRyaXZlcnMvZGV2ZnJlcS9kZXZmcmVxLWV2ZW50LmMKK0Y6CWRyaXZlcnMv
ZGV2ZnJlcS9ldmVudC8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvcG11L2V4eW5vc19wcG11LmgK
K0Y6CWluY2x1ZGUvbGludXgvZGV2ZnJlcS1ldmVudC5oCisKK0RFVklDRSBSRVNPVVJDRSBNQU5B
R0VNRU5UIEhFTFBFUlMKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitS
OglNYXR0aSBWYWl0dGluZW4gPG1henppZXNhY2NvdW50QGdtYWlsLmNvbT4KK1M6CU1haW50YWlu
ZWQKK0Y6CWluY2x1ZGUvbGludXgvZGV2bS1oZWxwZXJzLmgKKworREVWSUNFLU1BUFBFUiAgKExW
TSkKK006CUFsYXNkYWlyIEtlcmdvbiA8YWdrQHJlZGhhdC5jb20+CitNOglNaWtlIFNuaXR6ZXIg
PHNuaXR6ZXJAa2VybmVsLm9yZz4KK006CU1pa3VsYXMgUGF0b2NrYSA8bXBhdG9ja2FAcmVkaGF0
LmNvbT4KK0w6CWRtLWRldmVsQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorUToJaHR0
cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvZG0tZGV2ZWwvbGlzdC8KK1Q6CWdpdCBn
aXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGV2aWNlLW1hcHBl
ci9saW51eC1kbS5naXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvZGV2aWNlLW1hcHBl
ci8KK0Y6CWRyaXZlcnMvbWQvS2NvbmZpZworRjoJZHJpdmVycy9tZC9NYWtlZmlsZQorRjoJZHJp
dmVycy9tZC9kbSoKK0Y6CWRyaXZlcnMvbWQvcGVyc2lzdGVudC1kYXRhLworRjoJaW5jbHVkZS9s
aW51eC9kZXZpY2UtbWFwcGVyLmgKK0Y6CWluY2x1ZGUvbGludXgvZG0tKi5oCitGOglpbmNsdWRl
L3VhcGkvbGludXgvZG0tKi5oCisKK0RFVklDRS1NQVBQRVIgVkRPIFRBUkdFVAorTToJTWF0dGhl
dyBTYWthaSA8bXNha2FpQHJlZGhhdC5jb20+CitMOglkbS1kZXZlbEBsaXN0cy5saW51eC5kZXYK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvZGV2aWNlLW1hcHBl
ci92ZG8qLnJzdAorRjoJZHJpdmVycy9tZC9kbS12ZG8vCisKK0RFVkxJTksKK006CUppcmkgUGly
a28gPGppcmlAcmVzbnVsbGkudXM+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZsaW5rCitGOglpbmNsdWRlL25l
dC9kZXZsaW5rLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9kZXZsaW5rLmgKK0Y6CW5ldC9kZXZs
aW5rLworCitERlJPQk9UIFNEMjQwNUFMIFJUQyBEUklWRVIKK006CVTDs3RoIErDoW5vcyA8Z29t
YmEwMDdAZ21haWwuY29tPgorTDoJbGludXgtcnRjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9ydGMvcnRjLXNkMjQwNWFsLmMKKworREggRUxFQ1RST05JQ1MgREhT
T00gU09NIEFORCBCT0FSRCBTVVBQT1JUCitNOglDaHJpc3RvcGggTmllZGVybWFpZXIgPGNuaWVk
ZXJtYWllckBkaC1lbGVjdHJvbmljcy5jb20+CitNOglNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5k
ZT4KK0w6CWtlcm5lbEBkaC1lbGVjdHJvbmljcy5jb20KK1M6CU1haW50YWluZWQKK046CWRoY29t
CitOOglkaGNvcgorTjoJZGhzb20KKworRElBTE9HIFNFTUlDT05EVUNUT1IgRFJJVkVSUworTToJ
U3VwcG9ydCBPcGVuc291cmNlIDxzdXBwb3J0Lm9wZW5zb3VyY2VAZGlhc2VtaS5jb20+CitTOglT
dXBwb3J0ZWQKK1c6CWh0dHA6Ly93d3cuZGlhbG9nLXNlbWljb25kdWN0b3IuY29tL3Byb2R1Y3Rz
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5wdXQvZGxnLGRhNzI/Py50
eHQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pbnB1dC9kbGcsZGE5MDYy
LW9ua2V5LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvZGE5
MCoudHh0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL2RsZyxkYTkw
Ki55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL2Rh
OTIqLnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci9k
bGcsZGE5Ki55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVndWxh
dG9yL2RsZyxzbGc1MTAwMC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvc291bmQvZGFbNzldKi50eHQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9zb3VuZC9kbGcsZGE3MjEzLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy90aGVybWFsL2RsZyxkYTkwNjItdGhlcm1hbC55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvZGxnLGRhOTA2Mi13YXRjaGRvZy55YW1sCitGOglE
b2N1bWVudGF0aW9uL2h3bW9uL2RhOTA/Py5yc3QKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWRhOTA/
Py5jCitGOglkcml2ZXJzL2h3bW9uL2RhOTA/Py1od21vbi5jCitGOglkcml2ZXJzL2lpby9hZGMv
ZGE5MT8/LSouYworRjoJZHJpdmVycy9pbnB1dC9taXNjL2RhNzI/Py5bY2hdCitGOglkcml2ZXJz
L2lucHV0L21pc2MvZGE5MD8/X29ua2V5LmMKK0Y6CWRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4v
ZGE5MDUyX3RzaS5jCitGOglkcml2ZXJzL2xlZHMvbGVkcy1kYTkwPz8uYworRjoJZHJpdmVycy9t
ZmQvZGE5MDN4LmMKK0Y6CWRyaXZlcnMvbWZkL2RhOTA/Py0qLmMKK0Y6CWRyaXZlcnMvbWZkL2Rh
OTE/Py0qLmMKK0Y6CWRyaXZlcnMvcGluY3RybC9waW5jdHJsLWRhOTA/Py5jCitGOglkcml2ZXJz
L3Bvd2VyL3N1cHBseS9kYTkwNTItYmF0dGVyeS5jCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9k
YTkxPz8tKi5jCitGOglkcml2ZXJzL3JlZ3VsYXRvci9kYTk/Pz8tcmVndWxhdG9yLltjaF0KK0Y6
CWRyaXZlcnMvcmVndWxhdG9yL3NsZzUxMDAwLXJlZ3VsYXRvci5bY2hdCitGOglkcml2ZXJzL3J0
Yy9ydGMtZGE5MD8/LmMKK0Y6CWRyaXZlcnMvdGhlcm1hbC9kYTkwPz8tdGhlcm1hbC5jCitGOglk
cml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9kYTkwPz9fYmwuYworRjoJZHJpdmVycy93YXRjaGRvZy9k
YTkwPz9fd2R0LmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvcmVndWxhdG9yL2RsZyxkYTkqLXJl
Z3VsYXRvci5oCitGOglpbmNsdWRlL2xpbnV4L21mZC9kYTkwM3guaAorRjoJaW5jbHVkZS9saW51
eC9tZmQvZGE5MDUyLworRjoJaW5jbHVkZS9saW51eC9tZmQvZGE5MDU1LworRjoJaW5jbHVkZS9s
aW51eC9tZmQvZGE5MDYyLworRjoJaW5jbHVkZS9saW51eC9tZmQvZGE5MDYzLworRjoJaW5jbHVk
ZS9saW51eC9tZmQvZGE5MTUwLworRjoJaW5jbHVkZS9saW51eC9yZWd1bGF0b3IvZGE5MjExLmgK
K0Y6CWluY2x1ZGUvc291bmQvZGFbNzldKi5oCitGOglzb3VuZC9zb2MvY29kZWNzL2RhWzc5XSou
W2NoXQorCitESUFNT05EIFNZU1RFTVMgR1BJTy1NTSBHUElPIERSSVZFUgorTToJV2lsbGlhbSBC
cmVhdGhpdHQgR3JheSA8d2JnQGtlcm5lbC5vcmc+CitMOglsaW51eC1ncGlvQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tZ3Bpby1tbS5jCisKK0RJ
R0lURVEgQVVUT01PVElWRSBNR0I0IFY0TDIgRFJJVkVSCitNOglNYXJ0aW4gVHVtYSA8bWFydGlu
LnR1bWFAZGlnaXRlcWF1dG9tb3RpdmUuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21lZGlhL21n
YjQucnN0CitGOglkcml2ZXJzL21lZGlhL3BjaS9tZ2I0LworCitESU9MQU4gVTJDLTEyIEkyQyBE
UklWRVIKK006CUd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KK0w6CWxpbnV4LWky
Y0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9p
MmMtZGlvbGFuLXUyYy5jCisKK0RJUkVDVE9SWSBOT1RJRklDQVRJT04gKEROT1RJRlkpCitNOglK
YW4gS2FyYSA8amFja0BzdXNlLmN6PgorUjoJQW1pciBHb2xkc3RlaW4gPGFtaXI3M2lsQGdtYWls
LmNvbT4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
OglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2Rub3RpZnkucnN0CitGOglmcy9ub3RpZnkvZG5v
dGlmeS8KK0Y6CWluY2x1ZGUvbGludXgvZG5vdGlmeS5oCisKK0RJU0sgR0VPTUVUUlkgQU5EIFBB
UlRJVElPTiBIQU5ETElORworTToJQW5kcmllcyBCcm91d2VyIDxhZWJAY3dpLm5sPgorUzoJTWFp
bnRhaW5lZAorVzoJaHR0cDovL3d3dy53aW4udHVlLm5sL35hZWIvbGludXgvTGFyZ2UtRGlzay5o
dG1sCitXOglodHRwOi8vd3d3Lndpbi50dWUubmwvfmFlYi9saW51eC96aXAvemlwLTEuaHRtbAor
VzoJaHR0cDovL3d3dy53aW4udHVlLm5sL35hZWIvcGFydGl0aW9ucy9wYXJ0aXRpb25fdHlwZXMt
MS5odG1sCisKK0RJU0tRVU9UQQorTToJSmFuIEthcmEgPGphY2tAc3VzZS5jb20+CitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3F1b3RhLnJzdAorRjoJZnMvcXVv
dGEvCitGOglpbmNsdWRlL2xpbnV4L3F1b3RhKi5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvcXVv
dGEqLmgKKworRElTUExBWUxJTksgVVNCIDIuMCBGUkFNRUJVRkZFUiBEUklWRVIgKFVETEZCKQor
TToJQmVybmllIFRob21wc29uIDxiZXJuaWVAcGx1Z2FibGUuY29tPgorTDoJbGludXgtZmJkZXZA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwOi8vcGx1Z2FibGUuY29tL2Nh
dGVnb3J5L3Byb2plY3RzL3VkbGZiLworRjoJRG9jdW1lbnRhdGlvbi9mYi91ZGxmYi5yc3QKK0Y6
CWRyaXZlcnMvdmlkZW8vZmJkZXYvdWRsZmIuYworRjoJaW5jbHVkZS92aWRlby91ZGxmYi5oCisK
K0RJU1RSSUJVVEVEIExPQ0sgTUFOQUdFUiAoRExNKQorTToJQWxleGFuZGVyIEFyaW5nIDxhYWhy
aW5nb0ByZWRoYXQuY29tPgorTToJRGF2aWQgVGVpZ2xhbmQgPHRlaWdsYW5kQHJlZGhhdC5jb20+
CitMOglnZnMyQGxpc3RzLmxpbnV4LmRldgorUzoJU3VwcG9ydGVkCitXOglodHRwczovL3BhZ3Vy
ZS5pby9kbG0KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvdGVpZ2xhbmQvbGludXgtZGxtLmdpdAorRjoJZnMvZGxtLworCitETUEgQlVGRkVSIFNI
QVJJTkcgRlJBTUVXT1JLCitNOglTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5hcm8ub3Jn
PgorTToJQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au
b3JnCitMOglsaW5hcm8tbW0tc2lnQGxpc3RzLmxpbmFyby5vcmcgKG1vZGVyYXRlZCBmb3Igbm9u
LXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVk
ZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1h
cGkvZG1hLWJ1Zi5yc3QKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9kbWEtYnVmLWFs
bG9jLWV4Y2hhbmdlLnJzdAorRjoJZHJpdmVycy9kbWEtYnVmLworRjoJaW5jbHVkZS9saW51eC8q
ZmVuY2UuaAorRjoJaW5jbHVkZS9saW51eC9kbWEtYnVmLmgKK0Y6CWluY2x1ZGUvbGludXgvZG1h
LXJlc3YuaAorSzoJXGJkbWFfKD86YnVmfGZlbmNlfHJlc3YpXGIKKworRE1BIEdFTkVSSUMgT0ZG
TE9BRCBFTkdJTkUgU1VCU1lTVEVNCitNOglWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPgor
TDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9w
YXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LWRtYWVuZ2luZS9saXN0LworVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC92a291bC9kbWFl
bmdpbmUuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hLworRjoJ
RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RtYWVuZ2luZS8KK0Y6CWRyaXZlcnMvZG1hLworRjoJ
aW5jbHVkZS9kdC1iaW5kaW5ncy9kbWEvCitGOglpbmNsdWRlL2xpbnV4L2RtYS8KK0Y6CWluY2x1
ZGUvbGludXgvZG1hZW5naW5lLmgKK0Y6CWluY2x1ZGUvbGludXgvb2ZfZG1hLmgKKworRE1BIE1B
UFBJTkcgQkVOQ0hNQVJLCitNOglYaWFuZyBDaGVuIDxjaGVueGlhbmc2NkBoaXNpbGljb24uY29t
PgorTDoJaW9tbXVAbGlzdHMubGludXguZGV2CitGOglrZXJuZWwvZG1hL21hcF9iZW5jaG1hcmsu
YworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZG1hLworCitETUEgTUFQUElORyBIRUxQRVJT
CitNOglNYXJlayBTenlwcm93c2tpIDxtLnN6eXByb3dza2lAc2Ftc3VuZy5jb20+CitSOglSb2Jp
biBNdXJwaHkgPHJvYmluLm11cnBoeUBhcm0uY29tPgorTDoJaW9tbXVAbGlzdHMubGludXguZGV2
CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9oY2gvZG1h
LW1hcHBpbmcuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvaGNoL2Rt
YS1tYXBwaW5nLmdpdAorRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9kbWEtbWFwcGluZy5oCitGOglp
bmNsdWRlL2xpbnV4L2RtYS1kaXJlY3QuaAorRjoJaW5jbHVkZS9saW51eC9kbWEtbWFwLW9wcy5o
CitGOglpbmNsdWRlL2xpbnV4L2RtYS1tYXBwaW5nLmgKK0Y6CWluY2x1ZGUvbGludXgvc3dpb3Rs
Yi5oCitGOglrZXJuZWwvZG1hLworCitETUEgTUFQUElORyBIRUxQRVJTIERFVklDRSBEUklWRVIg
QVBJIFtSVVNUXQorTToJQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAZ21haWwuY29t
PgorTToJRGFuaWxvIEtydW1tcmljaCA8ZGFrckBrZXJuZWwub3JnPgorUjoJRGFuaWVsIEFsbWVp
ZGEgPGRhbmllbC5hbG1laWRhQGNvbGxhYm9yYS5jb20+CitSOglSb2JpbiBNdXJwaHkgPHJvYmlu
Lm11cnBoeUBhcm0uY29tPgorUjoJQW5kcmVhcyBIaW5kYm9yZyA8YS5oaW5kYm9yZ0BrZXJuZWwu
b3JnPgorTDoJcnVzdC1mb3ItbGludXhAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHBzOi8vcnVzdC1mb3ItbGludXguY29tCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL1J1
c3QtZm9yLUxpbnV4L2xpbnV4LmdpdCBhbGxvYy1uZXh0CitGOglydXN0L2hlbHBlcnMvZG1hLmMK
K0Y6CXJ1c3Qva2VybmVsL2RtYS5ycworRjoJc2FtcGxlcy9ydXN0L3J1c3RfZG1hLnJzCisKK0RN
QS1CVUYgSEVBUFMgRlJBTUVXT1JLCitNOglTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5h
cm8ub3JnPgorUjoJQmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGNvbGxhYm9y
YS5jb20+CitSOglCcmlhbiBTdGFya2V5IDxCcmlhbi5TdGFya2V5QGFybS5jb20+CitSOglKb2hu
IFN0dWx0eiA8anN0dWx0ekBnb29nbGUuY29tPgorUjoJVC5KLiBNZXJjaWVyIDx0am1lcmNpZXJA
Z29vZ2xlLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworTDoJZHJpLWRldmVs
QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworTDoJbGluYXJvLW1tLXNpZ0BsaXN0cy5saW5hcm8ub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBo
dHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL2RtYS1idWYtaGVhcHMucnN0CitGOglkcml2ZXJzL2Rt
YS1idWYvZG1hLWhlYXAuYworRjoJZHJpdmVycy9kbWEtYnVmL2hlYXBzLyoKK0Y6CWluY2x1ZGUv
bGludXgvZG1hLWhlYXAuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1oZWFwLmgKK0Y6CXRv
b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RtYWJ1Zi1oZWFwcy8KKworRE1DIEZSRVFVRU5DWSBEUklW
RVIgRk9SIFNBTVNVTkcgRVhZTk9TNTQyMgorTToJTHVrYXN6IEx1YmEgPGx1a2Fzei5sdWJhQGFy
bS5jb20+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXNhbXN1bmctc29j
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy9zYW1zdW5nLGV4eW5vczU0MjItZG1jLnlh
bWwKK0Y6CWRyaXZlcnMvbWVtb3J5L3NhbXN1bmcvZXh5bm9zNTQyMi1kbWMuYworCitETUUxNzM3
IEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglKdWVyZyBIYWVmbGlnZXIgPGp1ZXJnaEBwcm90
b24ubWU+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vaHdtb24vZG1lMTczNy5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vZG1lMTcz
Ny5jCisKK0RNSS9TTUJJT1MgU1VQUE9SVAorTToJSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNl
LmNvbT4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvamRlbHZhcmUvc3RhZ2luZy5naXQgZG1pLWZvci1uZXh0CitGOglE
b2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZpcm13YXJlLWRtaS10YWJsZXMKK0Y6CWRy
aXZlcnMvZmlybXdhcmUvZG1pLWlkLmMKK0Y6CWRyaXZlcnMvZmlybXdhcmUvZG1pX3NjYW4uYwor
RjoJaW5jbHVkZS9saW51eC9kbWkuaAorCitET0NVTUVOVEFUSU9OCitNOglKb25hdGhhbiBDb3Ji
ZXQgPGNvcmJldEBsd24ubmV0PgorTDoJbGludXgtZG9jQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorUDoJRG9jdW1lbnRhdGlvbi9kb2MtZ3VpZGUvbWFpbnRhaW5lci1wcm9maWxlLnJz
dAorVDoJZ2l0IGdpdDovL2dpdC5sd24ubmV0L2xpbnV4LmdpdCBkb2NzLW5leHQKK0Y6CURvY3Vt
ZW50YXRpb24vCitGOglzY3JpcHRzL2NoZWNrLXZhcmlhYmxlLWZvbnRzLnNoCitGOglzY3JpcHRz
L2RvY3VtZW50YXRpb24tZmlsZS1yZWYtY2hlY2sKK0Y6CXNjcmlwdHMvZ2V0X2FiaS5weQorRjoJ
c2NyaXB0cy9rZXJuZWwtZG9jKgorRjoJc2NyaXB0cy9saWIvYWJpLyoKK0Y6CXNjcmlwdHMvbGli
L2tkb2MvKgorRjoJc2NyaXB0cy9zcGhpbngtcHJlLWluc3RhbGwKK1g6CURvY3VtZW50YXRpb24v
QUJJLworWDoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tZWRpYS8KK1g6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS8KK1g6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS8KK1g6CURv
Y3VtZW50YXRpb24vZmlybXdhcmUtZ3VpZGUvYWNwaS8KK1g6CURvY3VtZW50YXRpb24vaTJjLwor
WDoJRG9jdW1lbnRhdGlvbi9uZXRsaW5rLworWDoJRG9jdW1lbnRhdGlvbi9wb3dlci8KK1g6CURv
Y3VtZW50YXRpb24vc3BpLworWDoJRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhLwor
CitET0NVTUVOVEFUSU9OIFBST0NFU1MKK006CUpvbmF0aGFuIENvcmJldCA8Y29yYmV0QGx3bi5u
ZXQ+CitMOgl3b3JrZmxvd3NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2Rldi10b29scy8KK0Y6CURvY3VtZW50YXRpb24vbWFpbnRhaW5lci8KK0Y6CURv
Y3VtZW50YXRpb24vcHJvY2Vzcy8KKworRE9DVU1FTlRBVElPTiBSRVBPUlRJTkcgSVNTVUVTCitN
OglUaG9yc3RlbiBMZWVtaHVpcyA8bGludXhAbGVlbWh1aXMuaW5mbz4KK0w6CWxpbnV4LWRvY0B2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3Vp
ZGUvYnVnLWJpc2VjdC5yc3QKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcXVpY2tseS1i
dWlsZC10cmltbWVkLWxpbnV4LnJzdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yZXBv
cnRpbmctaXNzdWVzLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS92ZXJpZnktYnVn
cy1hbmQtYmlzZWN0LXJlZ3Jlc3Npb25zLnJzdAorCitET0NVTUVOVEFUSU9OIFNDUklQVFMKK006
CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPgorTDoJbGludXgtZG9j
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9zcGhpbngv
cGFyc2UtaGVhZGVycy5wbAorRjoJc2NyaXB0cy9kb2N1bWVudGF0aW9uLWZpbGUtcmVmLWNoZWNr
CitGOglzY3JpcHRzL3NwaGlueC1wcmUtaW5zdGFsbAorCitET0NVTUVOVEFUSU9OL0lUQUxJQU4K
K006CUZlZGVyaWNvIFZhZ2EgPGZlZGVyaWNvLnZhZ2FAdmFnYS5wdi5pdD4KK0w6CWxpbnV4LWRv
Y0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vdHJhbnNs
YXRpb25zL2l0X0lUCisKK0RPQ1VNRU5UQVRJT04vSkFQQU5FU0UKK1I6CUFraXJhIFlva29zYXdh
IDxha2l5a3NAZ21haWwuY29tPgorTDoJbGludXgtZG9jQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvamFfSlAKKworRE9OR1dPT04g
RFc5NzE0IExFTlMgVk9JQ0UgQ09JTCBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2FrYXJpLmFp
bHVzQGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9kb25nd29vbixkdzk3MTQueWFt
bAorRjoJZHJpdmVycy9tZWRpYS9pMmMvZHc5NzE0LmMKKworRE9OR1dPT04gRFc5NzE5IExFTlMg
Vk9JQ0UgQ09JTCBEUklWRVIKK006CURhbmllbCBTY2FsbHkgPGRqcnNjYWxseUBnbWFpbC5jb20+
CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBn
aXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2R3OTcxOS5j
CisKK0RPTkdXT09OIERXOTc2OCBMRU5TIFZPSUNFIENPSUwgRFJJVkVSCitMOglsaW51eC1tZWRp
YUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21l
ZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9k
b25nd29vbixkdzk3NjgueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvZHc5NzY4LmMKKworRE9O
R1dPT04gRFc5ODA3IExFTlMgVk9JQ0UgQ09JTCBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2Fr
YXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9kb25nd29vbixkdzk4
MDctdmNtLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2R3OTgwNy12Y20uYworCitET1VCTEVU
QUxLIERSSVZFUgorTToJIkphbWVzIFIuIFZhbiBaYW5kdCIgPGpydkB2YW56YW5kdC5tdi5jb20+
CitMOglibGludXgtbGlzdEByZWRoYXQuY29tCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2No
YXIvZHRsay5jCitGOglpbmNsdWRlL2xpbnV4L2R0bGsuaAorCitEUEFBMiBEQVRBUEFUSCBJL08g
KERQSU8pIERSSVZFUgorTToJUm95IFBsZWRnZSA8Um95LlBsZWRnZUBueHAuY29tPgorTDoJbGlu
dXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zb2Mv
ZnNsL2RwaW8KKworRFBBQTIgRVRIRVJORVQgRFJJVkVSCitNOglJb2FuYSBDaW9ybmVpIDxpb2Fu
YS5jaW9ybmVpQG54cC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQv
ZnJlZXNjYWxlL2RwYWEyL2V0aGVybmV0LWRyaXZlci5yc3QKK0Y6CURvY3VtZW50YXRpb24vbmV0
d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvbWFjLXBoeS1z
dXBwb3J0LnJzdAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25m
aWcKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9NYWtlZmlsZQorRjoJ
ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLWV0aCoKK0Y6CWRyaXZl
cnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMqCitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTIteHNrKgorRjoJZHJpdmVycy9uZXQvZXRo
ZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2Rwa2cuaAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJl
ZXNjYWxlL2RwYWEyL2RwbWFjKgorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2Rw
YWEyL2RwbmkqCisKK0RQQUEyIEVUSEVSTkVUIFNXSVRDSCBEUklWRVIKK006CUlvYW5hIENpb3Ju
ZWkgPGlvYW5hLmNpb3JuZWlAbnhwLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9l
dGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QKK0Y6CWRyaXZlcnMvbmV0
L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1zd2l0Y2gqCitGOglkcml2ZXJzL25ldC9l
dGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBzdyoKKworRFBMTCBTVUJTWVNURU0KK006CVZhZGlt
IEZlZG9yZW5rbyA8dmFkaW0uZmVkb3JlbmtvQGxpbnV4LmRldj4KK006CUFya2FkaXVzeiBLdWJh
bGV3c2tpIDxhcmthZGl1c3oua3ViYWxld3NraUBpbnRlbC5jb20+CitNOglKaXJpIFBpcmtvIDxq
aXJpQHJlc251bGxpLnVzPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZHBsbC5yc3QKK0Y6CWRyaXZlcnMvZHBsbC8q
CitGOglpbmNsdWRlL2xpbnV4L2RwbGwuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2RwbGwuaAor
CitEUkJEIERSSVZFUgorTToJUGhpbGlwcCBSZWlzbmVyIDxwaGlsaXBwLnJlaXNuZXJAbGluYml0
LmNvbT4KK006CUxhcnMgRWxsZW5iZXJnIDxsYXJzLmVsbGVuYmVyZ0BsaW5iaXQuY29tPgorTToJ
Q2hyaXN0b3BoIELDtmhtd2FsZGVyIDxjaHJpc3RvcGguYm9laG13YWxkZXJAbGluYml0LmNvbT4K
K0w6CWRyYmQtZGV2QGxpc3RzLmxpbmJpdC5jb20KK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3
dy5kcmJkLm9yZworVDoJZ2l0IGdpdDovL2dpdC5saW5iaXQuY29tL2xpbnV4LWRyYmQuZ2l0CitU
OglnaXQgZ2l0Oi8vZ2l0LmxpbmJpdC5jb20vZHJiZC04LjQuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2FkbWluLWd1aWRlL2Jsb2NrZGV2LworRjoJZHJpdmVycy9ibG9jay9kcmJkLworRjoJaW5jbHVk
ZS9saW51eC9kcmJkKgorRjoJbGliL2xydV9jYWNoZS5jCisKK0RSSVZFUiBDT01QT05FTlQgRlJB
TUVXT1JLCitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitGOglkcml2ZXJzL2Jh
c2UvY29tcG9uZW50LmMKK0Y6CWluY2x1ZGUvbGludXgvY29tcG9uZW50LmgKKworRFJJVkVSIENP
UkUsIEtPQkpFQ1RTLCBERUJVR0ZTIEFORCBTWVNGUworTToJR3JlZyBLcm9haC1IYXJ0bWFuIDxn
cmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK006CSJSYWZhZWwgSi4gV3lzb2NraSIgPHJhZmFl
bEBrZXJuZWwub3JnPgorTToJRGFuaWxvIEtydW1tcmljaCA8ZGFrckBrZXJuZWwub3JnPgorUzoJ
U3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L2RyaXZlci1jb3JlL2RyaXZlci1jb3JlLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9jb3Jl
LWFwaS9rb2JqZWN0LnJzdAorRjoJZHJpdmVycy9iYXNlLworRjoJZnMvZGVidWdmcy8KK0Y6CWZz
L3N5c2ZzLworRjoJaW5jbHVkZS9saW51eC9kZXZpY2UvCitGOglpbmNsdWRlL2xpbnV4L2RlYnVn
ZnMuaAorRjoJaW5jbHVkZS9saW51eC9kZXZpY2UuaAorRjoJaW5jbHVkZS9saW51eC9md25vZGUu
aAorRjoJaW5jbHVkZS9saW51eC9rb2JqKgorRjoJaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oCitG
OglpbmNsdWRlL2xpbnV4L3N5c2ZzLmgKK0Y6CWxpYi9rb2JqKgorRjoJcnVzdC9rZXJuZWwvZGV2
aWNlLnJzCitGOglydXN0L2tlcm5lbC9kZXZpY2VfaWQucnMKK0Y6CXJ1c3Qva2VybmVsL2RldnJl
cy5ycworRjoJcnVzdC9rZXJuZWwvZHJpdmVyLnJzCitGOglydXN0L2tlcm5lbC9mYXV4LnJzCitG
OglydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycworRjoJc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3Bs
YXRmb3JtLnJzCitGOglzYW1wbGVzL3J1c3QvcnVzdF9kcml2ZXJfZmF1eC5ycworCitEUklWRVJT
IEZPUiBPTUFQIEFEQVBUSVZFIFZPTFRBR0UgU0NBTElORyAoQVZTKQorTToJTmlzaGFudGggTWVu
b24gPG5tQHRpLmNvbT4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9zb2MvdGkvc21hcnRyZWZsZXguYworRjoJaW5jbHVkZS9saW51eC9wb3dl
ci9zbWFydHJlZmxleC5oCisKK0RSTSBBQ0NFTCBEUklWRVJTIEZPUiBJTlRFTCBWUFUKK006CUph
Y2VrIExhd3J5bm93aWN6IDxqYWNlay5sYXdyeW5vd2ljekBsaW51eC5pbnRlbC5jb20+CitNOglN
YWNpZWogRmFsa293c2tpIDxtYWNpZWouZmFsa293c2tpQGxpbnV4LmludGVsLmNvbT4KK0w6CWRy
aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGh0dHBz
Oi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglkcml2ZXJz
L2FjY2VsL2l2cHUvCitGOglpbmNsdWRlL3VhcGkvZHJtL2l2cHVfYWNjZWwuaAorCitEUk0gQ09N
UFVURSBBQ0NFTEVSQVRPUlMgRFJJVkVSUyBBTkQgRlJBTUVXT1JLCitNOglPZGVkIEdhYmJheSA8
b2dhYmJheUBrZXJuZWwub3JnPgorTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwor
UzoJTWFpbnRhaW5lZAorQzoJaXJjOi8vaXJjLm9mdGMubmV0L2RyaS1kZXZlbAorVDoJZ2l0IGh0
dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L29nYWJiYXkvYWNj
ZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2FjY2VsLworRjoJZHJpdmVycy9hY2NlbC8KK0Y6CWlu
Y2x1ZGUvZHJtL2RybV9hY2NlbC5oCisKK0RSTSBEUklWRVIgRk9SIEFMTFdJTk5FUiBERTIgQU5E
IERFMyBFTkdJTkUKK006CU1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KK006CUNo
ZW4tWXUgVHNhaSA8d2Vuc0Bjc2llLm9yZz4KK1I6CUplcm5laiBTa3JhYmVjIDxqZXJuZWouc2ty
YWJlY0BnbWFpbC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglT
dXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mv
a2VybmVsLmdpdAorRjoJZHJpdmVycy9ncHUvZHJtL3N1bjRpL3N1bjhpKgorCitEUk0gRFJJVkVS
IEZPUiBBUFBMRSBUT1VDSCBCQVJTCitNOglBdW4tQWxpIFphaWRpIDxhZG1pbkBrb2RlaXQubmV0
PgorTToJQWRpdHlhIEdhcmcgPGdhcmdhZGl0eWEwOEBsaXZlLmNvbT4KK0w6CWRyaS1kZXZlbEBs
aXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxh
Yi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJZHJpdmVycy9ncHUvZHJt
L3RpbnkvYXBwbGV0YmRybS5jCisKK0RSTSBEUklWRVIgRk9SIEFSTSBQTDExMSBDTENECitNOglM
aW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitTOglNYWludGFpbmVkCitU
OglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQK
K0Y6CWRyaXZlcnMvZ3B1L2RybS9wbDExMS8KKworRFJNIERSSVZFUiBGT1IgQVJNIFZFUlNBVElM
RSBURlQgUEFORUxTCitNOglMaW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+
CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2Ry
bS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9k
aXNwbGF5L3BhbmVsL2FybSx2ZXJzYXRpbGUtdGZ0LXBhbmVsLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1
L2RybS9wYW5lbC9wYW5lbC1hcm0tdmVyc2F0aWxlLmMKKworRFJNIERSSVZFUiBGT1IgQVNQRUVE
IEJNQyBHRlgKK006CUpvZWwgU3RhbmxleSA8am9lbEBqbXMuaWQuYXU+CitMOglsaW51eC1hc3Bl
ZWRAbGlzdHMub3psYWJzLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglT
dXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mv
a2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwdS9hc3Bl
ZWQtZ2Z4LnR4dAorRjoJZHJpdmVycy9ncHUvZHJtL2FzcGVlZC8KKworRFJNIERSSVZFUiBGT1Ig
QVNUIFNFUlZFUiBHUkFQSElDUyBDSElQUworTToJRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0
LmNvbT4KK1I6CVRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgorUjoJSm9j
ZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRoYXQuY29tPgorTDoJZHJpLWRldmVsQGxpc3RzLmZy
ZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRl
c2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9hc3QvCisK
K0RSTSBEUklWRVIgRk9SIEJPQ0hTIFZJUlRVQUwgR1BVCitNOglHZXJkIEhvZmZtYW5uIDxrcmF4
ZWxAcmVkaGF0LmNvbT4KK0w6CXZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LmRldgorUzoJTWFp
bnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9r
ZXJuZWwuZ2l0CitGOglkcml2ZXJzL2dwdS9kcm0vdGlueS9ib2Nocy5jCisKK0RSTSBEUklWRVIg
Rk9SIEJPRSBISU1BWDgyNzlEIFBBTkVMUworTToJSmVycnkgSGFuIDxoYW54dTVAaHVhcWluLmNv
cnAtcGFydG5lci5nb29nbGUuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvYm9lLGhpbWF4ODI3OWQueWFtbAorRjoJ
ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWJvZS1oaW1heDgyNzlkLmMKKworRFJNIERSSVZF
UiBGT1IgQ0hJUE9ORSBJQ042MjExIE1JUEktRFNJIHRvIFJHQiBDT05WRVJURVIgQlJJREdFCitN
OglKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9jaGlw
b25lLGljbjYyMTEueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9jaGlwb25lLWljbjYy
MTEuYworCitEUk0gRFJJVkVSIEZPUiBFQkJHIEZUODcxOSBQQU5FTAorTToJSm9lbCBTZWx2YXJh
aiA8am9AanNmYW1pbHkuaW4+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIu
ZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2ViYmcsZnQ4NzE5LnlhbWwKK0Y6CWRyaXZl
cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1lYmJnLWZ0ODcxOS5jCisKK0RSTSBEUklWRVIgRk9SIEZB
UkFEQVkgVFZFMjAwIFRWIEVOQ09ERVIKK006CUxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpA
bGluYXJvLm9yZz4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVz
a3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJZHJpdmVycy9ncHUvZHJtL3R2ZTIwMC8K
KworRFJNIERSSVZFUiBGT1IgRkVJWElOIEsxMDEgSU0yQkEwMiBNSVBJLURTSSBMQ0QgUEFORUxT
CitNOglJY2Vub3d5IFpoZW5nIDxpY2Vub3d5QGFvc2MuaW8+CitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9mZWl4aW4sazEw
MS1pbTJiYTAyLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1mZWl4aW4tazEw
MS1pbTJiYTAyLmMKKworRFJNIERSSVZFUiBGT1IgRkVJWUFORyBGWTA3MDI0REkyNkEzMC1EIE1J
UEktRFNJIExDRCBQQU5FTFMKK006CUphZ2FuIFRla2kgPGphZ2FuQGFtYXJ1bGFzb2x1dGlvbnMu
Y29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2Rpc3BsYXkvcGFuZWwvZmVpeWFuZyxmeTA3MDI0ZGkyNmEzMGQueWFtbAorRjoJZHJpdmVycy9n
cHUvZHJtL3BhbmVsL3BhbmVsLWZlaXlhbmctZnkwNzAyNGRpMjZhMzBkLmMKKworRFJNIERSSVZF
UiBGT1IgRklSTVdBUkUgRlJBTUVCVUZGRVJTCitNOglUaG9tYXMgWmltbWVybWFubiA8dHppbW1l
cm1hbm5Ac3VzZS5kZT4KK006CUphdmllciBNYXJ0aW5leiBDYW5pbGxhcyA8amF2aWVybUByZWRo
YXQuY29tPgorTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwu
Z2l0CitGOglkcml2ZXJzL2dwdS9kcm0vc3lzZmIvCitGOglkcml2ZXJzL3ZpZGVvL2FwZXJ0dXJl
LmMKK0Y6CWRyaXZlcnMvdmlkZW8vbm9tb2Rlc2V0LmMKK0Y6CWluY2x1ZGUvbGludXgvYXBlcnR1
cmUuaAorRjoJaW5jbHVkZS92aWRlby9ub21vZGVzZXQuaAorCitEUk0gRFJJVkVSIEZPUiBHRU5F
UklDIEVEUCBQQU5FTFMKK1I6CURvdWdsYXMgQW5kZXJzb24gPGRpYW5kZXJzQGNocm9taXVtLm9y
Zz4KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3Bh
bmVsLWVkcC55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtZWRwLmMKKworRFJN
IERSSVZFUiBGT1IgR0VORVJJQyBVU0IgRElTUExBWQorUzoJT3JwaGFuCitXOglodHRwczovL2dp
dGh1Yi5jb20vbm90cm8vZ3VkL3dpa2kKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3Rv
cC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJZHJpdmVycy9ncHUvZHJtL2d1ZC8KK0Y6CWlu
Y2x1ZGUvZHJtL2d1ZC5oCisKK0RSTSBEUklWRVIgRk9SIEdSQUlOIE1FRElBIEdNMTJVMzIwIFBS
T0pFQ1RPUlMKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitTOglNYWlu
dGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tl
cm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS90aW55L2dtMTJ1MzIwLmMKKworRFJNIERSSVZF
UiBGT1IgSElNQVggSFg4Mzk0IE1JUEktRFNJIExDRCBwYW5lbHMKK006CU9uZHJlaiBKaXJtYW4g
PG1lZ2lAeGZmLmN6PgorTToJSmF2aWVyIE1hcnRpbmV6IENhbmlsbGFzIDxqYXZpZXJtQHJlZGhh
dC5jb20+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Au
b3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9kaXNwbGF5L3BhbmVsL2hpbWF4LGh4ODM5NC55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0v
cGFuZWwvcGFuZWwtaGltYXgtaHg4Mzk0LmMKKworRFJNIERSSVZFUiBGT1IgSFg4MzU3RCBQQU5F
TFMKK1M6CU9ycGhhbgorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0v
bWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlz
cGxheS9oaW1heCxoeDgzNTdkLnR4dAorRjoJZHJpdmVycy9ncHUvZHJtL3RpbnkvaHg4MzU3ZC5j
CisKK0RSTSBEUklWRVIgRk9SIEhZUEVSViBTWU5USEVUSUMgVklERU8gREVWSUNFCitNOglEZWVw
YWsgUmF3YXQgPGRyYXdhdC5mbG9zc0BnbWFpbC5jb20+CitMOglsaW51eC1oeXBlcnZAdmdlci5r
ZXJuZWwub3JnCitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFp
bmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5l
bC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9oeXBlcnYKKworRFJNIERSSVZFUiBGT1IgSUxJVEVL
IElMSTkyMjUgUEFORUxTCitNOglEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9sb2d5LmNvbT4K
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJt
L21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rp
c3BsYXkvaWxpdGVrLGlsaTkyMjUudHh0CitGOglkcml2ZXJzL2dwdS9kcm0vdGlueS9pbGk5MjI1
LmMKKworRFJNIERSSVZFUiBGT1IgSUxJVEVLIElMSTk0ODYgUEFORUxTCitNOglLYW1sZXNoIEd1
cnVkYXNhbmkgPGthbWxlc2guZ3VydWRhc2FuaUBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitU
OglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2lsaXRlayxpbGk5
NDg2LnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS90aW55L2lsaTk0ODYuYworCitEUk0gRFJJVkVS
IEZPUiBJTElURUsgSUxJOTgwNSBQQU5FTFMKK006CU1pY2hhZWwgVHJpbWFyY2hpIDxtaWNoYWVs
QGFtYXJ1bGFzb2x1dGlvbnMuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvaWxpdGVrLGlsaTk4MDUueWFtbAorRjoJ
ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWlsaXRlay1pbGk5ODA1LmMKKworRFJNIERSSVZF
UiBGT1IgSUxJVEVLIElMSTk4MDZFIFBBTkVMUworTToJTWljaGFlbCBXYWxsZSA8bXdhbGxlQGtl
cm5lbC5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwt
aWxpdGVrLWlsaTk4MDZlLmMKKworRFJNIERSSVZFUiBGT1IgSkFEQVJEIEpEOTM2NURBLUgzIE1J
UEktRFNJIExDRCBQQU5FTFMKK006CUphZ2FuIFRla2kgPGphZ2FuQGVkZ2VibGUuYWk+CitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9w
YW5lbC9qYWRhcmQsamQ5MzY1ZGEtaDMueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3BhbmVsL3Bh
bmVsLWphZGFyZC1qZDkzNjVkYS1oMy5jCisKK0RSTSBEUklWRVIgRk9SIExHIFNXNDM0MDggUEFO
RUxTCitNOglTdW1pdCBTZW13YWwgPHN1bWl0LnNlbXdhbEBsaW5hcm8ub3JnPgorTToJQ2FsZWIg
Q29ubm9sbHkgPGNhbGViLmNvbm5vbGx5QGxpbmFyby5vcmc+CitTOglNYWludGFpbmVkCitUOgln
aXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL2xnLHN3NDM0
MDgueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWxnLXN3NDM0MDguYworCitE
Uk0gRFJJVkVSIEZPUiBMT0dJQ1ZDIERJU1BMQVkgQ09OVFJPTExFUgorTToJUGF1bCBLb2NpYWxr
b3dza2kgPHBhdWxrQHN5cy1iYXNlLmlvPgorUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9n
aXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1
L2RybS9sb2dpY3ZjLworCitEUk0gRFJJVkVSIEZPUiBMVkRTIFBBTkVMUworTToJTGF1cmVudCBQ
aW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgorTDoJZHJpLWRldmVs
QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0
bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9sdmRzLnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3BhbmVsLWx2ZHMueWFtbAorRjoJZHJp
dmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLWx2ZHMuYworCitEUk0gRFJJVkVSIEZPUiBNQU5USVgg
TUxBRjA1N1dFNTEgUEFORUxTCitNOglHdWlkbyBHw7xudGhlciA8YWd4QHNpZ3hjcHUub3JnPgor
UjoJUHVyaXNtIEtlcm5lbCBUZWFtIDxrZXJuZWxAcHVyaS5zbT4KK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL21hbnRpeCxt
bGFmMDU3d2U1MS14LnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1tYW50aXgt
bWxhZjA1N3dlNTEuYworCitEUk0gRFJJVkVSIEZPUiBNR0EgRzIwMCBHUkFQSElDUyBDSElQUwor
TToJRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KK1I6CVRob21hcyBaaW1tZXJtYW5u
IDx0emltbWVybWFubkBzdXNlLmRlPgorUjoJSm9jZWx5biBGYWxlbXBlIDxqZmFsZW1wZUByZWRo
YXQuY29tPgorTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5n
aXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwLworCitEUk0gRFJJVkVSIEZPUiBNSTAyODNR
VAorTToJQWxleCBMYW56YW5vIDxsYW56YW5vLmFsZXhAZ21haWwuY29tPgorUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwu
Z2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9tdWx0aS1p
bm5vLG1pMDI4M3F0LnR4dAorRjoJZHJpdmVycy9ncHUvZHJtL3RpbnkvbWkwMjgzcXQuYworCitE
Uk0gRFJJVkVSIEZPUiBNSVBJIERCSSBjb21wYXRpYmxlIHBhbmVscworUzoJT3JwaGFuCitXOglo
dHRwczovL2dpdGh1Yi5jb20vbm90cm8vcGFuZWwtbWlwaS1kYmkvd2lraQorVDoJZ2l0IGh0dHBz
Oi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9wYW5lbC1taXBpLWRiaS1z
cGkueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3RpbnkvcGFuZWwtbWlwaS1kYmkuYworCitEUk0g
RFJJVkVSIGZvciBRdWFsY29tbSBBZHJlbm8gR1BVcworTToJUm9iIENsYXJrIDxyb2JkY2xhcmtA
Z21haWwuY29tPgorUjoJU2VhbiBQYXVsIDxzZWFuQHBvb3JseS5ydW4+CitSOglLb25yYWQgRHli
Y2lvIDxrb25yYWR5YmNpb0BrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtlcm5l
bC5vcmcKK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0w6CWZyZWVkcmVub0Bs
aXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CU1haW50YWluZWQKK0I6CWh0dHBzOi8vZ2l0bGFiLmZy
ZWVkZXNrdG9wLm9yZy9kcm0vbXNtLy0vaXNzdWVzCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJl
ZWRlc2t0b3Aub3JnL2RybS9tc20uZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvZGlzcGxheS9tc20vZ3B1LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9vcHAvb3BwLXYyLXFjb20tYWRyZW5vLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9t
c20vYWRyZW5vLworRjoJZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ3B1LioKK0Y6CWRyaXZlcnMv
Z3B1L2RybS9tc20vbXNtX2dwdV9kZXZmcmVxLioKK0Y6CWRyaXZlcnMvZ3B1L2RybS9tc20vbXNt
X3JpbmdidWZmZXIuKgorRjoJZHJpdmVycy9ncHUvZHJtL21zbS9yZWdpc3RlcnMvYWRyZW5vLwor
RjoJaW5jbHVkZS91YXBpL2RybS9tc21fZHJtLmgKKworRFJNIERSSVZFUiBmb3IgUXVhbGNvbW0g
ZGlzcGxheSBoYXJkd2FyZQorTToJUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgorTToJ
QWJoaW5hdiBLdW1hciA8cXVpY19hYmhpbmF2a0BxdWljaW5jLmNvbT4KK006CURtaXRyeSBCYXJ5
c2hrb3YgPGx1bWFnQGtlcm5lbC5vcmc+CitSOglTZWFuIFBhdWwgPHNlYW5AcG9vcmx5LnJ1bj4K
K1I6CU1hcmlqbiBTdWlqdGVuIDxtYXJpam4uc3VpanRlbkBzb21haW5saW5lLm9yZz4KK0w6CWxp
bnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0
b3Aub3JnCitMOglmcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVk
CitCOglodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21zbS8tL2lzc3VlcworVDoJ
Z2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbXNtLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvbXNtLworRjoJZHJpdmVycy9ncHUv
ZHJtL2NpL3hmYWlscy9tc20qCitGOglkcml2ZXJzL2dwdS9kcm0vbXNtLworRjoJaW5jbHVkZS9k
dC1iaW5kaW5ncy9jbG9jay9xY29tLGRzaS1waHktMjhubS5oCitGOglpbmNsdWRlL3VhcGkvZHJt
L21zbV9kcm0uaAorCitEUk0gRFJJVkVSIEZPUiBOT1ZBVEVLIE5UMzU1MTAgUEFORUxTCitNOglM
aW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitTOglNYWludGFpbmVkCitU
OglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL25vdmF0
ZWssbnQzNTUxMC55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbm92YXRlay1u
dDM1NTEwLmMKKworRFJNIERSSVZFUiBGT1IgTk9WQVRFSyBOVDM1NTYwIFBBTkVMUworTToJTGlu
dXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgorUzoJTWFpbnRhaW5lZAorVDoJ
Z2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zb255LGFj
eDQyNGFrcC55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbm92YXRlay1udDM1
NTYwLmMKKworRFJNIERSSVZFUiBGT1IgTk9WQVRFSyBOVDM2NTIzIFBBTkVMUworTToJSmlhbmh1
YSBMdSA8bHVqaWFuaHVhMDAwQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRw
czovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbm92YXRlayxudDM2NTIz
LnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1ub3ZhdGVrLW50MzY1MjMuYwor
CitEUk0gRFJJVkVSIEZPUiBOT1ZBVEVLIE5UMzY2NzJBIFBBTkVMUworTToJU3VtaXQgU2Vtd2Fs
IDxzdW1pdC5zZW13YWxAbGluYXJvLm9yZz4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczov
L2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvbm92YXRlayxudDM2NjcyYS55
YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbm92YXRlay1udDM2NjcyYS5jCisK
K0RSTSBEUklWRVIgRk9SIE5PVkFURUsgTlQzNzgwMSBQQU5FTFMKK006CUtyenlzenRvZiBLb3ps
b3dza2kgPGtyemtAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL25vdmF0ZWssbnQzNzgwMS55YW1sCitG
Oglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtbm92YXRlay1udDM3ODAxLmMKKworRFJNIERS
SVZFUiBGT1IgTlZJRElBIEdFRk9SQ0UvUVVBRFJPIEdQVVMKK006CUx5dWRlIFBhdWwgPGx5dWRl
QHJlZGhhdC5jb20+CitNOglEYW5pbG8gS3J1bW1yaWNoIDxkYWtyQGtlcm5lbC5vcmc+CitMOglk
cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitMOglub3V2ZWF1QGxpc3RzLmZyZWVkZXNr
dG9wLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL25vdXZlYXUuZnJlZWRlc2t0b3Aub3Jn
LworUToJaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Byb2plY3Qvbm91dmVhdS8K
K1E6CWh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbm91dmVhdS8tL21lcmdlX3Jl
cXVlc3RzCitCOglodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL25vdXZlYXUvLS9p
c3N1ZXMKK0M6CWlyYzovL2lyYy5vZnRjLm5ldC9ub3V2ZWF1CitUOglnaXQgaHR0cHM6Ly9naXRs
YWIuZnJlZWRlc2t0b3Aub3JnL2RybS9ub3V2ZWF1LmdpdAorRjoJZHJpdmVycy9ncHUvZHJtL25v
dXZlYXUvCitGOglpbmNsdWRlL3VhcGkvZHJtL25vdXZlYXVfZHJtLmgKKworQ09SRSBEUklWRVIg
Rk9SIE5WSURJQSBHUFVTIFtSVVNUXQorTToJRGFuaWxvIEtydW1tcmljaCA8ZGFrckBrZXJuZWwu
b3JnPgorTDoJbm91dmVhdUBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1cHBvcnRlZAorUToJ
aHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3Byb2plY3Qvbm91dmVhdS8KK0I6CWh0
dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbm92YS8tL2lzc3VlcworQzoJaXJjOi8v
aXJjLm9mdGMubmV0L25vdXZlYXUKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5v
cmcvZHJtL25vdmEuZ2l0IG5vdmEtbmV4dAorRjoJRG9jdW1lbnRhdGlvbi9ncHUvbm92YS8KK0Y6
CWRyaXZlcnMvZ3B1L25vdmEtY29yZS8KKworRFJNIERSSVZFUiBGT1IgTlZJRElBIEdQVVMgW1JV
U1RdCitNOglEYW5pbG8gS3J1bW1yaWNoIDxkYWtyQGtlcm5lbC5vcmc+CitMOglub3V2ZWF1QGxp
c3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwczovL3BhdGNod29yay5m
cmVlZGVza3RvcC5vcmcvcHJvamVjdC9ub3V2ZWF1LworQjoJaHR0cHM6Ly9naXRsYWIuZnJlZWRl
c2t0b3Aub3JnL2RybS9ub3ZhLy0vaXNzdWVzCitDOglpcmM6Ly9pcmMub2Z0Yy5uZXQvbm91dmVh
dQorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbm92YS5naXQgbm92
YS1uZXh0CitGOglEb2N1bWVudGF0aW9uL2dwdS9ub3ZhLworRjoJZHJpdmVycy9ncHUvZHJtL25v
dmEvCitGOglpbmNsdWRlL3VhcGkvZHJtL25vdmFfZHJtLmgKKworRFJNIERSSVZFUiBGT1IgT0xJ
TUVYIExDRC1PTElOVVhJTk8gUEFORUxTCitNOglTdGVmYW4gTWF2cm9kaWV2IDxzdGVmYW5Ab2xp
bWV4LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9kaXNwbGF5L3BhbmVsL29saW1leCxsY2Qtb2xpbnV4aW5vLnlhbWwKK0Y6CWRyaXZlcnMv
Z3B1L2RybS9wYW5lbC9wYW5lbC1vbGltZXgtbGNkLW9saW51eGluby5jCisKK0RSTSBEUklWRVIg
Rk9SIFBBUkFERSBQUzg2NDAgQlJJREdFIENISVAKK1I6CURvdWdsYXMgQW5kZXJzb24gPGRpYW5k
ZXJzQGNocm9taXVtLm9yZz4KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9k
aXNwbGF5L2JyaWRnZS9wczg2NDAueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9wYXJh
ZGUtcHM4NjQwLmMKKworRFJNIERSSVZFUiBGT1IgUEVSVkFTSVZFIERJU1BMQVlTIFJFUEFQRVIg
UEFORUxTCitNOglBbGV4IExhbnphbm8gPGxhbnphbm8uYWxleEBnbWFpbC5jb20+CitTOglNYWlu
dGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tl
cm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3Jl
cGFwZXIudHh0CitGOglkcml2ZXJzL2dwdS9kcm0vdGlueS9yZXBhcGVyLmMKKworRFJNIERSSVZF
UiBGT1IgUUVNVSdTIENJUlJVUyBERVZJQ0UKK006CURhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhh
dC5jb20+CitNOglHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KK0w6CXZpcnR1YWxp
emF0aW9uQGxpc3RzLmxpbnV4LmRldgorUzoJT2Jzb2xldGUKK1c6CWh0dHBzOi8vd3d3LmtyYXhl
bC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC8K
K1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdp
dAorRjoJZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYworCitEUk0gRFJJVkVSIEZP
UiBRWEwgVklSVFVBTCBHUFUKK006CURhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CitN
OglHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT4KK0w6CXZpcnR1YWxpemF0aW9uQGxp
c3RzLmxpbnV4LmRldgorTDoJc3BpY2UtZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglN
YWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNj
L2tlcm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9xeGwvCitGOglpbmNsdWRlL3VhcGkvZHJt
L3F4bF9kcm0uaAorCitEUk0gRFJJVkVSIEZPUiBSQVlESVVNIFJNNjcxOTEgUEFORUxTCitNOglS
b2JlcnQgQ2hpcmFzIDxyb2JlcnQuY2hpcmFzQG54cC5jb20+CitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9yYXlkaXVtLHJt
NjcxOTEueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXJheWRpdW0tcm02NzE5
MS5jCisKK0RSTSBEUklWRVIgRk9SIFNBTVNVTkcgREI3NDMwIFBBTkVMUworTToJTGludXMgV2Fs
bGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgorUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0
dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zYW1zdW5nLGxtczM5
N2tmMDQueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctZGI3NDMw
LmMKKworRFJNIERSSVZFUiBGT1IgU0FNU1VORyBNSVBJIERTSU0gQlJJREdFCitNOglJbmtpIERh
ZSA8aW5raS5kYWVAc2Ftc3VuZy5jb20+CitNOglKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29s
dXRpb25zLmNvbT4KK006CU1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNv
bT4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcv
ZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2Rpc3BsYXkvYnJpZGdlL3NhbXN1bmcsbWlwaS1kc2ltLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2Ry
bS9icmlkZ2Uvc2Ftc3VuZy1kc2ltLmMKK0Y6CWluY2x1ZGUvZHJtL2JyaWRnZS9zYW1zdW5nLWRz
aW0uaAorCitEUk0gRFJJVkVSIEZPUiBTQU1TVU5HIFM2RDI3QTEgUEFORUxTCitNOglNYXJrdXNz
IEJyb2tzIDxtYXJrdXNzLmJyb2tzQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1bmcsczZkMjdh
MS55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtc2Ftc3VuZy1zNmQyN2ExLmMK
KworRFJNIERSSVZFUiBGT1IgU0FNU1VORyBTNkQ3QUEwIFBBTkVMUworTToJQXJ0dXIgV2ViZXIg
PGF3ZWJlci5rZXJuZWxAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvc2Ftc3VuZyxzNmQ3YWEwLnlhbWwK
K0Y6CWRyaXZlcnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zYW1zdW5nLXM2ZDdhYTAuYworCitEUk0g
RFJJVkVSIEZPUiBTQU1TVU5HIFM2RTNIQTggUEFORUxTCitNOglEem1pdHJ5IFNhbmtvdXNraSA8
ZHNhbmtvdXNraUBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zYW1zdW5nLHM2ZTNoYTgueWFtbAorRjoJ
ZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXNhbXN1bmctczZlM2hhOC5jCisKK0RSTSBEUklW
RVIgRk9SIFNIQVJQIE1FTU9SWSBMQ0QKK006CUFsZXggTGFuemFubyA8bGFuemFuby5hbGV4QGdt
YWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9kaXNwbGF5L3NoYXJwLGxzMDEwYjdkaDA0LnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS90
aW55L3NoYXJwLW1lbW9yeS5jCisKK0RSTSBEUklWRVIgRk9SIFNJVFJPTklYIFNUNzU4NiBQQU5F
TFMKK006CURhdmlkIExlY2huZXIgPGRhdmlkQGxlY2hub2xvZ3kuY29tPgorUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwu
Z2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9zaXRyb25p
eCxzdDc1ODYudHh0CitGOglkcml2ZXJzL2dwdS9kcm0vc2l0cm9uaXgvc3Q3NTg2LmMKKworRFJN
IERSSVZFUiBGT1IgU0lUUk9OSVggU1Q3NTcxIFBBTkVMUworTToJTWFyY3VzIEZvbGtlc3NvbiA8
bWFyY3VzLmZvbGtlc3NvbkBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9zaXRyb25peCxzdDc1NzEueWFtbAorRjoJ
ZHJpdmVycy9ncHUvZHJtL3NpdHJvbml4L3N0NzU3MS1pMmMuYworCitEUk0gRFJJVkVSIEZPUiBT
SVRST05JWCBTVDc3MDEgUEFORUxTCitNOglKYWdhbiBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRp
b25zLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9kaXNwbGF5L3BhbmVsL3NpdHJvbml4LHN0NzcwMS55YW1sCitGOglkcml2ZXJzL2dwdS9k
cm0vcGFuZWwvcGFuZWwtc2l0cm9uaXgtc3Q3NzAxLmMKKworRFJNIERSSVZFUiBGT1IgU0lUUk9O
SVggU1Q3NzAzIFBBTkVMUworTToJR3VpZG8gR8O8bnRoZXIgPGFneEBzaWd4Y3B1Lm9yZz4KK1I6
CVB1cmlzbSBLZXJuZWwgVGVhbSA8a2VybmVsQHB1cmkuc20+CitSOglPbmRyZWogSmlybWFuIDxt
ZWdpQHhmZi5jej4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9kaXNwbGF5L3BhbmVsL3JvY2t0ZWNoLGpoMDU3bjAwOTAwLnlhbWwKK0Y6CWRyaXZl
cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zaXRyb25peC1zdDc3MDMuYworCitEUk0gRFJJVkVSIEZP
UiBTSVRST05JWCBTVDc3MzVSIFBBTkVMUworTToJRGF2aWQgTGVjaG5lciA8ZGF2aWRAbGVjaG5v
bG9neS5jb20+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0
b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9kaXNwbGF5L3NpdHJvbml4LHN0NzczNXIueWFtbAorRjoJZHJpdmVycy9ncHUvZHJt
L3NpdHJvbml4L3N0NzczNXIuYworCitEUk0gRFJJVkVSIEZPUiBTT0xPTU9OIFNTRDEzMFggT0xF
RCBESVNQTEFZUworTToJSmF2aWVyIE1hcnRpbmV6IENhbmlsbGFzIDxqYXZpZXJtQHJlZGhhdC5j
b20+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3Jn
L2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9kaXNwbGF5L3NvbG9tb24sc3NkLWNvbW1vbi55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvZGlzcGxheS9zb2xvbW9uLHNzZDEzKi55YW1sCitGOglkcml2ZXJzL2dw
dS9kcm0vc29sb21vbi9zc2QxMzB4KgorCitEUk0gRFJJVkVSIEZPUiBTVC1FUklDU1NPTiBNQ0RF
CitNOglMaW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitTOglNYWludGFp
bmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5l
bC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0ZSxt
Y2RlLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9tY2RlLworCitEUk0gRFJJVkVSIEZPUiBTWU5B
UFRJQ1MgUjYzMzUzIFBBTkVMUworTToJTWljaGFlbCBUcmltYXJjaGkgPG1pY2hhZWxAYW1hcnVs
YXNvbHV0aW9ucy5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvZGlzcGxheS9wYW5lbC9zeW5hcHRpY3MscjYzMzUzLnlhbWwKK0Y6CWRyaXZl
cnMvZ3B1L2RybS9wYW5lbC9wYW5lbC1zeW5hcHRpY3MtcjYzMzUzLmMKKworRFJNIERSSVZFUiBG
T1IgVEkgRExQQzM0MzMgTUlQSSBEU0kgVE8gRE1EIEJSSURHRQorTToJSmFnYW4gVGVraSA8amFn
YW5AYW1hcnVsYXNvbHV0aW9ucy5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvdGksZGxwYzM0MzMueWFtbAorRjoJ
ZHJpdmVycy9ncHUvZHJtL2JyaWRnZS90aS1kbHBjMzQzMy5jCisKK0RSTSBEUklWRVIgRk9SIFRJ
IFNONjVEU0k4NiBCUklER0UgQ0hJUAorUjoJRG91Z2xhcyBBbmRlcnNvbiA8ZGlhbmRlcnNAY2hy
b21pdW0ub3JnPgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkv
YnJpZGdlL3RpLHNuNjVkc2k4Ni55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vYnJpZGdlL3RpLXNu
NjVkc2k4Ni5jCisKK0RSTSBEUklWRVIgRk9SIFRQTyBUUEcxMTAgUEFORUxTCitNOglMaW51cyBX
YWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitTOglNYWludGFpbmVkCitUOglnaXQg
aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3Rwbyx0cGcxMTAu
eWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3BhbmVsL3BhbmVsLXRwby10cGcxMTAuYworCitEUk0g
RFJJVkVSIEZPUiBVU0IgRElTUExBWUxJTksgVklERU8gQURBUFRFUlMKK006CURhdmUgQWlybGll
IDxhaXJsaWVkQHJlZGhhdC5jb20+CitSOglTZWFuIFBhdWwgPHNlYW5AcG9vcmx5LnJ1bj4KK1I6
CVRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgorTDoJZHJpLWRldmVsQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIu
ZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS91
ZGwvCisKK0RSTSBEUklWRVIgRk9SIFZJUlRVQUwgS0VSTkVMIE1PREVTRVRUSU5HIChWS01TKQor
TToJTG91aXMgQ2hhdXZldCA8bG91aXMuY2hhdXZldEBib290bGluLmNvbT4KK1I6CUhhbmVlbiBN
b2hhbW1lZCA8aGFtb2hhbW1lZC5zYUBnbWFpbC5jb20+CitSOglTaW1vbmEgVmV0dGVyIDxzaW1v
bmFAZmZ3bGwuY2g+CitSOglNZWxpc3NhIFdlbiA8bWVsaXNzYS5zcndAZ21haWwuY29tPgorTDoJ
ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0
dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1
bWVudGF0aW9uL2dwdS92a21zLnJzdAorRjoJZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy92a21z
KgorRjoJZHJpdmVycy9ncHUvZHJtL3ZrbXMvCisKK0RSTSBEUklWRVIgRk9SIFZJUlRVQUxCT1gg
VklSVFVBTCBHUFUKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitMOglk
cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0
cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZl
cnMvZ3B1L2RybS92Ym94dmlkZW8vCisKK0RSTSBEUklWRVIgRk9SIFZNV0FSRSBWSVJUVUFMIEdQ
VQorTToJWmFjayBSdXNpbiA8emFjay5ydXNpbkBicm9hZGNvbS5jb20+CitSOglCcm9hZGNvbSBp
bnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBicm9h
ZGNvbS5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0
ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVs
LmdpdAorRjoJZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC8KK0Y6CWluY2x1ZGUvdWFwaS9kcm0vdm13
Z2Z4X2RybS5oCisKK0RSTSBEUklWRVIgRk9SIFdJREVDSElQUyBXUzI0MDEgUEFORUxTCitNOglM
aW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitTOglNYWludGFpbmVkCitU
OglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3BhbmVsL3NhbXN1
bmcsbG1zMzgwa2YwMS55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vcGFuZWwvcGFuZWwtd2lkZWNo
aXBzLXdzMjQwMS5jCisKK0RSTSBEUklWRVJTCitNOglEYXZpZCBBaXJsaWUgPGFpcmxpZWRAZ21h
aWwuY29tPgorTToJU2ltb25hIFZldHRlciA8c2ltb25hQGZmd2xsLmNoPgorTDoJZHJpLWRldmVs
QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorQjoJaHR0cHM6Ly9naXRsYWIu
ZnJlZWRlc2t0b3Aub3JnL2RybQorQzoJaXJjOi8vaXJjLm9mdGMubmV0L2RyaS1kZXZlbAorVDoJ
Z2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0va2VybmVsLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvZ3B1LworRjoJRG9jdW1lbnRhdGlvbi9ncHUvCitGOglkcml2
ZXJzL2dwdS8KK0Y6CXJ1c3Qva2VybmVsL2RybS8KK0Y6CWluY2x1ZGUvZHJtLworRjoJaW5jbHVk
ZS9saW51eC92Z2EqCitGOglpbmNsdWRlL3VhcGkvZHJtLworCitEUk0gRFJJVkVSUyBBTkQgTUlT
QyBHUFUgUEFUQ0hFUworTToJTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxp
bnV4LmludGVsLmNvbT4KK006CU1heGltZSBSaXBhcmQgPG1yaXBhcmRAa2VybmVsLm9yZz4KK006
CVRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgorUzoJTWFpbnRhaW5lZAor
VzoJaHR0cHM6Ly9kcm0ucGFnZXMuZnJlZWRlc2t0b3Aub3JnL21haW50YWluZXItdG9vbHMvZHJt
LW1pc2MuaHRtbAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlz
Yy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxh
eS8KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvCitGOglEb2N1bWVu
dGF0aW9uL2dwdS8KK0Y6CWRyaXZlcnMvZ3B1L2RybS8KK0Y6CWRyaXZlcnMvZ3B1L3ZnYS8KK0Y6
CXJ1c3Qva2VybmVsL2RybS8KK0Y6CWluY2x1ZGUvZHJtL2RybQorRjoJaW5jbHVkZS9saW51eC92
Z2EqCitGOglpbmNsdWRlL3VhcGkvZHJtLworWDoJZHJpdmVycy9ncHUvZHJtL2FtZC8KK1g6CWRy
aXZlcnMvZ3B1L2RybS9hcm1hZGEvCitYOglkcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi8KK1g6CWRy
aXZlcnMvZ3B1L2RybS9leHlub3MvCitYOglkcml2ZXJzL2dwdS9kcm0vaTkxNS8KK1g6CWRyaXZl
cnMvZ3B1L2RybS9rbWIvCitYOglkcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvCitYOglkcml2ZXJz
L2dwdS9kcm0vbXNtLworWDoJZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvCitYOglkcml2ZXJzL2dw
dS9kcm0vcmFkZW9uLworWDoJZHJpdmVycy9ncHUvZHJtL3RlZ3JhLworWDoJZHJpdmVycy9ncHUv
ZHJtL3hlLworCitEUk0gRFJJVkVSUyBGT1IgQUxMV0lOTkVSIEExMAorTToJTWF4aW1lIFJpcGFy
ZCA8bXJpcGFyZEBrZXJuZWwub3JnPgorTToJQ2hlbi1ZdSBUc2FpIDx3ZW5zQGNzaWUub3JnPgor
TDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQg
aHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FsbHdpbm5lcioKK0Y6CWRy
aXZlcnMvZ3B1L2RybS9zdW40aS8KKworRFJNIERSSVZFUlMgRk9SIEFNTE9HSUMgU09DUworTToJ
TmVpbCBBcm1zdHJvbmcgPG5laWwuYXJtc3Ryb25nQGxpbmFyby5vcmc+CitMOglkcmktZGV2ZWxA
bGlzdHMuZnJlZWRlc2t0b3Aub3JnCitMOglsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5v
cmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL2xpbnV4LW1lc29uLmNvbS8KK1Q6CWdpdCBodHRw
czovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvYW1sb2dpYyxtZXNvbi1kdy1oZG1p
LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FtbG9n
aWMsbWVzb24tdnB1LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZ3B1L21lc29uLnJzdAorRjoJZHJp
dmVycy9ncHUvZHJtL2NpL3hmYWlscy9tZXNvbioKK0Y6CWRyaXZlcnMvZ3B1L2RybS9tZXNvbi8K
KworRFJNIERSSVZFUlMgRk9SIEFUTUVMIEhMQ0RDCitNOglNYW5pa2FuZGFuIE11cmFsaWRoYXJh
biA8bWFuaWthbmRhbi5tQG1pY3JvY2hpcC5jb20+CitNOglEaGFybWEgQmFsYXN1YmlyYW1hbmkg
PGRoYXJtYS5iQG1pY3JvY2hpcC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au
b3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcv
ZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2Rpc3BsYXkvYXRtZWwvCitGOglkcml2ZXJzL2dwdS9kcm0vYXRtZWwtaGxjZGMvCisKK0RSTSBE
UklWRVJTIEZPUiBCUklER0UgQ0hJUFMKK006CUFuZHJ6ZWogSGFqZGEgPGFuZHJ6ZWouaGFqZGFA
aW50ZWwuY29tPgorTToJTmVpbCBBcm1zdHJvbmcgPG5laWwuYXJtc3Ryb25nQGxpbmFyby5vcmc+
CitNOglSb2JlcnQgRm9zcyA8cmZvc3NAa2VybmVsLm9yZz4KK1I6CUxhdXJlbnQgUGluY2hhcnQg
PExhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK1I6CUpvbmFzIEthcmxtYW4gPGpv
bmFzQGt3aWJvby5zZT4KK1I6CUplcm5laiBTa3JhYmVjIDxqZXJuZWouc2tyYWJlY0BnbWFpbC5j
b20+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3Jn
L2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9kaXNwbGF5L2JyaWRnZS8KK0Y6CWRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvCitGOglkcml2ZXJz
L2dwdS9kcm0vZGlzcGxheS9kcm1fYnJpZGdlX2Nvbm5lY3Rvci5jCitGOglkcml2ZXJzL2dwdS9k
cm0vZHJtX2JyaWRnZS5jCitGOglpbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgKK0Y6CWluY2x1ZGUv
ZHJtL2RybV9icmlkZ2VfY29ubmVjdG9yLmgKKworRFJNIERSSVZFUlMgRk9SIEVYWU5PUworTToJ
SW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgorTToJU2V1bmctV29vIEtpbSA8c3cwMzEy
LmtpbUBzYW1zdW5nLmNvbT4KK006CUt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3Vu
Zy5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQK
K1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGFl
aW5raS9kcm0tZXh5bm9zLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2Rpc3BsYXkvc2Ftc3VuZy8KK0Y6CWRyaXZlcnMvZ3B1L2RybS9leHlub3MvCitGOglpbmNsdWRl
L3VhcGkvZHJtL2V4eW5vc19kcm0uaAorCitEUk0gRFJJVkVSUyBGT1IgRlJFRVNDQUxFIERDVQor
TToJU3RlZmFuIEFnbmVyIDxzdGVmYW5AYWduZXIuY2g+CitNOglBbGlzb24gV2FuZyA8YWxpc29u
LndhbmdAbnhwLmNvbT4KK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CVN1
cHBvcnRlZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9r
ZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9m
c2wsZGN1LnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkv
ZnNsLHZmNjEwLXRjb24ueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL2ZzbC1kY3UvCisKK0RSTSBE
UklWRVJTIEZPUiBGUkVFU0NBTEUgSU1YIDUvNgorTToJUGhpbGlwcCBaYWJlbCA8cC56YWJlbEBw
ZW5ndXRyb25peC5kZT4KK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CU1h
aW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mv
a2VybmVsLmdpdAorVDoJZ2l0IGdpdDovL2dpdC5wZW5ndXRyb25peC5kZS9naXQvcHphL2xpbnV4
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvCitGOglk
cml2ZXJzL2dwdS9kcm0vaW14L2lwdXYzLworRjoJZHJpdmVycy9ncHUvaXB1LXYzLworCitEUk0g
RFJJVkVSUyBGT1IgRlJFRVNDQUxFIElNWCBCUklER0UKK006CUxpdSBZaW5nIDx2aWN0b3IubGl1
QG54cC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uv
ZnNsLGlteDhxeHAtbGRiLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9kaXNwbGF5L2JyaWRnZS9mc2wsaW14OHF4cC1waXhlbC1jb21iaW5lci55YW1sCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvZnNsLGlteDhxeHAt
cGl4ZWwtbGluay55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlz
cGxheS9icmlkZ2UvZnNsLGlteDhxeHAtcHhsMmRwaS55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0v
YnJpZGdlL2lteC8KKworRFJNIERSSVZFUlMgRk9SIEdNQTUwMCAoUG91bHNibywgTW9vcmVzdG93
biBhbmQgZGVyaXZhdGl2ZSBjaGlwc2V0cykKK006CVBhdHJpayBKYWtvYnNzb24gPHBhdHJpay5y
Lmpha29ic3NvbkBnbWFpbC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn
CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2Ry
bS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9nbWE1MDAvCisKK0RSTSBEUklW
RVJTIEZPUiBISVNJTElDT04KK006CVhpbmxpYW5nIExpdSA8eGlubGlhbmcubGl1QGxpbmFyby5v
cmc+CitNOglUaWFuIFRhbyAgPHRpYW50YW82QGhpc2lsaWNvbi5jb20+CitSOglYaW53ZWkgS29u
ZyA8a29uZy5rb25neGlud2VpQGhpc2lsaWNvbi5jb20+CitSOglTdW1pdCBTZW13YWwgPHN1bWl0
LnNlbXdhbEBsaW5hcm8ub3JnPgorUjoJWW9uZ3FpbiBMaXUgPHlvbmdxaW4ubGl1QGxpbmFyby5v
cmc+CitSOglKb2huIFN0dWx0eiA8anN0dWx0ekBnb29nbGUuY29tPgorTDoJZHJpLWRldmVsQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFi
LmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9oaXNpbGljb24vCitGOglkcml2ZXJzL2dwdS9kcm0v
aGlzaWxpY29uLworCitEUk0gRFJJVkVSUyBGT1IgTElNQQorTToJUWlhbmcgWXUgPHl1cTgyNUBn
bWFpbC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitMOglsaW1hQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglN
YWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNj
L2tlcm5lbC5naXQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9saW1hLworRjoJaW5jbHVkZS91YXBpL2Ry
bS9saW1hX2RybS5oCisKK0RSTSBEUklWRVJTIEZPUiBMT09OR1NPTgorTToJU3VpIEppbmdmZW5n
IDxzdWlqaW5nZmVuZ0Bsb29uZ3Nvbi5jbj4KK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv
cC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9y
Zy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglkcml2ZXJzL2dwdS9kcm0vbG9vbmdzb24vCisKK0RS
TSBEUklWRVJTIEZPUiBNRURJQVRFSworTToJQ2h1bi1LdWFuZyBIdSA8Y2h1bmt1YW5nLmh1QGtl
cm5lbC5vcmc+CitNOglQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgorTDoJ
ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMu
aW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L21lZGlhdGVr
LworRjoJZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy9tZWRpYXRlayoKK0Y6CWRyaXZlcnMvZ3B1
L2RybS9tZWRpYXRlay8KK0Y6CWRyaXZlcnMvcGh5L21lZGlhdGVrL3BoeS1tdGstZHAuYworRjoJ
ZHJpdmVycy9waHkvbWVkaWF0ZWsvcGh5LW10ay1oZG1pKgorRjoJZHJpdmVycy9waHkvbWVkaWF0
ZWsvcGh5LW10ay1taXBpKgorCitEUk0gRFJJVkVSUyBGT1IgTlZJRElBIFRFR1JBCitNOglUaGll
cnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwuY29tPgorTToJTWlra28gUGVydHR1bmVu
IDxtcGVydHR1bmVuQG52aWRpYS5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au
b3JnCitMOglsaW51eC10ZWdyYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0
IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vdGVncmEuZ2l0CitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90ZWdyYS9udmlkaWEsdGVncmEyMC1o
b3N0MXgueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwdS9ob3N0
MXgvCitGOglkcml2ZXJzL2dwdS9kcm0vdGVncmEvCitGOglkcml2ZXJzL2dwdS9ob3N0MXgvCitG
OglpbmNsdWRlL2xpbnV4L2hvc3QxeC5oCitGOglpbmNsdWRlL3VhcGkvZHJtL3RlZ3JhX2RybS5o
CisKK0RSTSBEUklWRVJTIEZPUiBQUkUtRENQIEFQUExFIERJU1BMQVkgT1VUUFVUCitNOglTYXNo
YSBGaW5rZWxzdGVpbiA8Zm5rbC5rZXJuZWxAZ21haWwuY29tPgorUjoJSmFubmUgR3J1bmF1IDxq
QGphbm5hdS5uZXQ+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitMOglhc2Fo
aUBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vYXNhaGlsaW51eC5v
cmcKK0I6CWh0dHBzOi8vZ2l0aHViLmNvbS9Bc2FoaUxpbnV4L2xpbnV4L2lzc3VlcworQzoJaXJj
Oi8vaXJjLm9mdGMubmV0L2FzYWhpLWRldgorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNr
dG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvZGlzcGxheS9hcHBsZSxoNy1kaXNwbGF5LXBpcGUtbWlwaS55YW1sCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9hcHBsZSxoNy1kaXNwbGF5LXBp
cGUueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFu
ZWwvYXBwbGUsc3VtbWl0LnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9hZHAvCitGOglkcml2ZXJz
L2dwdS9kcm0vcGFuZWwvcGFuZWwtc3VtbWl0LmMKKworRFJNIERSSVZFUlMgRk9SIFJFTkVTQVMg
Ui1DQVIKK006CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnQrcmVuZXNhc0BpZGVh
c29uYm9hcmQuY29tPgorTToJVG9taSBWYWxrZWluZW4gPHRvbWkudmFsa2VpbmVuK3JlbmVzYXNA
aWRlYXNvbmJvYXJkLmNvbT4KK1I6CUtpZXJhbiBCaW5naGFtIDxraWVyYW4uYmluZ2hhbStyZW5l
c2FzQGlkZWFzb25ib2FyZC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn
CitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJ
Z2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2UvcmVuZXNh
cyxkc2ktY3NpMi10eC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
ZGlzcGxheS9icmlkZ2UvcmVuZXNhcyxkdy1oZG1pLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9yZW5lc2FzLGx2ZHMueWFtbAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcmVuZXNhcyxkdS55YW1sCitG
Oglkcml2ZXJzL2dwdS9kcm0vcmVuZXNhcy9yY2FyLWR1LworCitEUk0gRFJJVkVSUyBGT1IgUkVO
RVNBUyBSWgorTToJQmlqdSBEYXMgPGJpanUuZGFzLmp6QGJwLnJlbmVzYXMuY29tPgorTDoJZHJp
LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0
b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9kaXNwbGF5L3JlbmVzYXMscnpnMmwtZHUueWFtbAorRjoJZHJpdmVycy9ncHUvZHJt
L3JlbmVzYXMvcnotZHUvCisKK0RSTSBEUklWRVJTIEZPUiBSRU5FU0FTIFNITU9CSUxFCitNOglM
YXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitNOglH
ZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0K3JlbmVzYXNAZ2xpZGVyLmJlPgorTDoJZHJpLWRldmVs
QGxpc3RzLmZyZWVkZXNrdG9wLm9yZworTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcv
ZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2Rpc3BsYXkvcmVuZXNhcyxzaG1vYmlsZS1sY2RjLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9y
ZW5lc2FzL3NobW9iaWxlLworRjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3NobW9iX2Ry
bS5oCisKK0RSTSBEUklWRVJTIEZPUiBST0NLQ0hJUAorTToJU2FuZHkgSHVhbmcgPGhqY0Byb2Nr
LWNoaXBzLmNvbT4KK006CUhlaWtvIFN0w7xibmVyIDxoZWlrb0BzbnRlY2guZGU+CitNOglBbmR5
IFlhbiA8YW5keS55YW5Acm9jay1jaGlwcy5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRl
c2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0
b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9kaXNwbGF5L3JvY2tjaGlwLworRjoJZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy9y
b2NrY2hpcCoKK0Y6CWRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC8KKworRFJNIERSSVZFUlMgRk9S
IFNUSQorTToJQWxhaW4gVm9sbWF0IDxhbGFpbi52b2xtYXRAZm9zcy5zdC5jb20+CitNOglSYXBo
YWVsIEdhbGxhaXMtUG91IDxyZ2FsbGFpc3BvdUBnbWFpbC5jb20+CitMOglkcmktZGV2ZWxAbGlz
dHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIu
ZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0LHN0aWg0eHgudHh0CitGOglkcml2ZXJzL2dwdS9k
cm0vc3RpCisKK0RSTSBEUklWRVJTIEZPUiBTVE0KK006CVlhbm5pY2sgRmVydHJlIDx5YW5uaWNr
LmZlcnRyZUBmb3NzLnN0LmNvbT4KK006CVJhcGhhZWwgR2FsbGFpcy1Qb3UgPHJhcGhhZWwuZ2Fs
bGFpcy1wb3VAZm9zcy5zdC5jb20+CitNOglQaGlsaXBwZSBDb3JudSA8cGhpbGlwcGUuY29ybnVA
Zm9zcy5zdC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWlu
dGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tl
cm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3N0
LHN0bTMyLWx0ZGMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rp
c3BsYXkvc3Qsc3RtMzJtcDI1LWx2ZHMueWFtbAorRjoJZHJpdmVycy9ncHUvZHJtL3N0bQorCitE
Uk0gRFJJVkVSUyBGT1IgVEkgS0VZU1RPTkUKK006CUp5cmkgU2FyaGEgPGp5cmkuc2FyaGFAaWtp
LmZpPgorTToJVG9taSBWYWxrZWluZW4gPHRvbWkudmFsa2VpbmVuQGlkZWFzb25ib2FyZC5jb20+
CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOgln
aXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpL3RpLGFtNjV4LWRz
cy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aS90
aSxqNzIxZS1kc3MueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rp
c3BsYXkvdGkvdGksazJnLWRzcy55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vdGlkc3MvCisKK0RS
TSBEUklWRVJTIEZPUiBUSSBMQ0RDCitNOglKeXJpIFNhcmhhIDxqeXJpLnNhcmhhQGlraS5maT4K
K006CVRvbWkgVmFsa2VpbmVuIDx0b21pLnZhbGtlaW5lbkBpZGVhc29uYm9hcmQuY29tPgorTDoJ
ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0
dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS90aWxjZGMvCitGOglkcml2ZXJz
L2dwdS9kcm0vdGlsY2RjLworCitEUk0gRFJJVkVSUyBGT1IgVEkgT01BUAorTToJVG9taSBWYWxr
ZWluZW4gPHRvbWkudmFsa2VpbmVuQGlkZWFzb25ib2FyZC5jb20+CitMOglkcmktZGV2ZWxAbGlz
dHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIu
ZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3RpLworRjoJZHJpdmVycy9ncHUvZHJtL29tYXBkcm0v
CisKK0RSTSBEUklWRVJTIEZPUiBWM0QKK006CU1lbGlzc2EgV2VuIDxtd2VuQGlnYWxpYS5jb20+
CitNOglNYcOtcmEgQ2FuYWwgPG1jYW5hbEBpZ2FsaWEuY29tPgorUzoJU3VwcG9ydGVkCitUOgln
aXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncHUvYnJjbSxiY20tdjNkLnlhbWwK
K0Y6CWRyaXZlcnMvZ3B1L2RybS92M2QvCitGOglpbmNsdWRlL3VhcGkvZHJtL3YzZF9kcm0uaAor
CitEUk0gRFJJVkVSUyBGT1IgVkM0CitNOglNYXhpbWUgUmlwYXJkIDxtcmlwYXJkQGtlcm5lbC5v
cmc+CitNOglEYXZlIFN0ZXZlbnNvbiA8ZGF2ZS5zdGV2ZW5zb25AcmFzcGJlcnJ5cGkuY29tPgor
UjoJTWHDrXJhIENhbmFsIDxtY2FuYWxAaWdhbGlhLmNvbT4KK1I6CVJhc3BiZXJyeSBQaSBLZXJu
ZWwgTWFpbnRlbmFuY2UgPGtlcm5lbC1saXN0QHJhc3BiZXJyeXBpLmNvbT4KK1M6CVN1cHBvcnRl
ZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwu
Z2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmNtLGJj
bTI4MzUtKi55YW1sCitGOglkcml2ZXJzL2dwdS9kcm0vdmM0LworRjoJaW5jbHVkZS91YXBpL2Ry
bS92YzRfZHJtLmgKKworRFJNIERSSVZFUlMgRk9SIFZJVkFOVEUgR1BVIElQCitNOglMdWNhcyBT
dGFjaCA8bC5zdGFjaEBwZW5ndXRyb25peC5kZT4KK1I6CVJ1c3NlbGwgS2luZyA8bGludXgrZXRu
YXZpdkBhcm1saW51eC5vcmcudWs+CitSOglDaHJpc3RpYW4gR21laW5lciA8Y2hyaXN0aWFuLmdt
ZWluZXJAZ21haWwuY29tPgorTDoJZXRuYXZpdkBsaXN0cy5mcmVlZGVza3RvcC5vcmcgKG1vZGVy
YXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2dwdS92aXZhbnRlLGdjLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9ldG5hdml2LworRjoJaW5j
bHVkZS91YXBpL2RybS9ldG5hdml2X2RybS5oCisKK0RSTSBEUklWRVJTIEZPUiBYRU4KK006CU9s
ZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4K
K0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK0w6CXhlbi1kZXZlbEBsaXN0cy54
ZW5wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglTdXBwb3J0
ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVs
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9ncHUveGVuLWZyb250LnJzdAorRjoJZHJpdmVycy9ncHUv
ZHJtL3hlbi8KKworRFJNIERSSVZFUlMgRk9SIFhJTElOWAorTToJTGF1cmVudCBQaW5jaGFydCA8
bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgorTToJVG9taSBWYWxrZWluZW4gPHRv
bWkudmFsa2VpbmVuQGlkZWFzb25ib2FyZC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRl
c2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0
b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9kaXNwbGF5L3hsbngvCitGOglEb2N1bWVudGF0aW9uL2dwdS96eW5xbXAucnN0CitG
Oglkcml2ZXJzL2dwdS9kcm0veGxueC8KKworRFJNIEdQVSBTQ0hFRFVMRVIKK006CU1hdHRoZXcg
QnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgorTToJRGFuaWxvIEtydW1tcmljaCA8ZGFr
ckBrZXJuZWwub3JnPgorTToJUGhpbGlwcCBTdGFubmVyIDxwaGFzdGFAa2VybmVsLm9yZz4KK1I6
CUNocmlzdGlhbiBLw7ZuaWcgPGNrb2VuaWcubGVpY2h0enVtZXJrZW5AZ21haWwuY29tPgorTDoJ
ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0
cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZl
cnMvZ3B1L2RybS9zY2hlZHVsZXIvCitGOglpbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKKwor
RFJNIFBBTkVMIERSSVZFUlMKK006CU5laWwgQXJtc3Ryb25nIDxuZWlsLmFybXN0cm9uZ0BsaW5h
cm8ub3JnPgorUjoJSmVzc2ljYSBaaGFuZyA8cXVpY19qZXNzemhhbkBxdWljaW5jLmNvbT4KK0w6
CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBo
dHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvcGFuZWwvCitGOglkcml2ZXJz
L2dwdS9kcm0vZHJtX3BhbmVsLmMKK0Y6CWRyaXZlcnMvZ3B1L2RybS9wYW5lbC8KK0Y6CWluY2x1
ZGUvZHJtL2RybV9wYW5lbC5oCisKK0RSTSBQUklWQUNZLVNDUkVFTiBDTEFTUworTToJSGFucyBk
ZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz
a3RvcC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3Rv
cC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJZHJpdmVycy9ncHUvZHJtL2RybV9wcml2YWN5
X3NjcmVlbioKK0Y6CWluY2x1ZGUvZHJtL2RybV9wcml2YWN5X3NjcmVlbioKKworRFJNIFRUTSBT
VUJTWVNURU0KK006CUNocmlzdGlhbiBLb2VuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4K
K006CUh1YW5nIFJ1aSA8cmF5Lmh1YW5nQGFtZC5jb20+CitSOglNYXR0aGV3IEF1bGQgPG1hdHRo
ZXcuYXVsZEBpbnRlbC5jb20+CitSOglNYXR0aGV3IEJyb3N0IDxtYXR0aGV3LmJyb3N0QGludGVs
LmNvbT4KK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CU1haW50YWluZWQK
K1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdp
dAorRjoJZHJpdmVycy9ncHUvZHJtL3R0bS8KK0Y6CWluY2x1ZGUvZHJtL3R0bS8KKworRFJNIEFV
VE9NQVRFRCBURVNUSU5HCitNOglIZWxlbiBLb2lrZSA8aGVsZW4uZm9ybmF6aWVyQGdtYWlsLmNv
bT4KK006CVZpZ25lc2ggUmFtYW4gPHZpZ25lc2gucmFtYW5AY29sbGFib3JhLmNvbT4KK0w6CWRy
aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRw
czovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9ncHUvYXV0b21hdGVkX3Rlc3RpbmcucnN0CitGOglkcml2ZXJzL2dwdS9kcm0vY2kv
CisKK0RTQlIxMDAgVVNCIEZNIFJBRElPIERSSVZFUgorTToJQWxleGV5IEtsaW1vdiA8YWxleGV5
LmtsaW1vdkBsaW5hcm8ub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJz
L21lZGlhL3JhZGlvL2RzYnIxMDAuYworCitEVDMxNTUgTUVESUEgRFJJVkVSCitNOglIYW5zIFZl
cmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJT2RkIEZpeGVzCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGlu
dXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3BjaS9kdDMxNTUvCisKK0RWQl9V
U0JfQUY5MDE1IE1FRElBIERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitT
OglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGlu
dXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS91c2Iv
ZHZiLXVzYi12Mi9hZjkwMTUqCisKK0RWQl9VU0JfQUY5MDM1IE1FRElBIERSSVZFUgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9s
aXN0LworRjoJZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi12Mi9hZjkwMzUqCisKK0RWQl9VU0Jf
QU5ZU0VFIE1FRElBIERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglP
cnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0
di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS91c2IvZHZi
LXVzYi12Mi9hbnlzZWUqCisKK0RWQl9VU0JfQVU2NjEwIE1FRElBIERSSVZFUgorTDoJbGludXgt
bWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcK
K1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0
LworRjoJZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi12Mi9hdTY2MTAqCisKK0RWQl9VU0JfQ0U2
MjMwIE1FRElBIERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBo
YW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5v
cmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS91c2IvZHZiLXVz
Yi12Mi9jZTYyMzAqCisKK0RWQl9VU0JfQ1hVU0IgTUVESUEgRFJJVkVSCitNOglNaWNoYWVsIEty
dWZreSA8bWtydWZreUBsaW51eHR2Lm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVzoJaHR0cDovL2dpdGh1
Yi5jb20vbWtydWZreQorUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xp
bnV4LW1lZGlhL2xpc3QvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglk
cml2ZXJzL21lZGlhL3VzYi9kdmItdXNiL2N4dXNiKgorCitEVkJfVVNCX0VDMTY4IE1FRElBIERS
SVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBz
Oi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9s
aW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS91c2IvZHZiLXVzYi12Mi9lYzE2OCoK
KworRFZCX1VTQl9HTDg2MSBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVs
Lm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0Y2h3
b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVk
aWEvdXNiL2R2Yi11c2ItdjIvZ2w4NjEqCisKK0RWQl9VU0JfTVhMMTExU0YgTUVESUEgRFJJVkVS
CitNOglNaWNoYWVsIEtydWZreSA8bWtydWZreUBsaW51eHR2Lm9yZz4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZwor
VzoJaHR0cDovL2dpdGh1Yi5jb20vbWtydWZreQorUToJaHR0cDovL3BhdGNod29yay5saW51eHR2
Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWtydWZreS9teGwxMTFzZi5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvdXNiL2R2Yi11c2ItdjIvbXhs
MTExc2YqCisKK0RWQl9VU0JfUlRMMjhYWFUgTUVESUEgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0
cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglk
cml2ZXJzL21lZGlhL3VzYi9kdmItdXNiLXYyL3J0bDI4eHh1KgorCitEVkJfVVNCX1YyIE1FRElB
IERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0
dHBzOi8vbGludXh0di5vcmcKK1c6CWh0dHA6Ly9wYWxvc2FhcmkuZmkvbGludXgvCitROglodHRw
Oi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRy
aXZlcnMvbWVkaWEvdXNiL2R2Yi11c2ItdjIvZHZiX3VzYioKK0Y6CWRyaXZlcnMvbWVkaWEvdXNi
L2R2Yi11c2ItdjIvdXNiX3VyYi5jCisKK0RZTkFNSUMgREVCVUcKK006CUphc29uIEJhcm9uIDxq
YmFyb25AYWthbWFpLmNvbT4KK006CUppbSBDcm9taWUgPGppbS5jcm9taWVAZ21haWwuY29tPgor
UzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC9keW5hbWljX2RlYnVnLmgKK0Y6CWxpYi9k
eW5hbWljX2RlYnVnLmMKK0Y6CWxpYi90ZXN0X2R5bmFtaWNfZGVidWcuYworCitEWU5BTUlDIElO
VEVSUlVQVCBNT0RFUkFUSU9OCitNOglUYWwgR2lsYm9hIDx0YWxnaUBudmlkaWEuY29tPgorUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9kaW0ucnN0CitGOglp
bmNsdWRlL2xpbnV4L2RpbS5oCitGOglsaWIvZGltLworCitEWU5BTUlDIFRIRVJNQUwgUE9XRVIg
TUFOQUdFTUVOVCAoRFRQTSkKK006CURhbmllbCBMZXpjYW5vIDxkYW5pZWwubGV6Y2Fub0BrZXJu
ZWwub3JnPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0I6CWh0
dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9yYWZhZWwvbGludXgtcG0KK0Y6CWRyaXZlcnMvcG93ZXJj
YXAvZHRwbSoKK0Y6CWluY2x1ZGUvbGludXgvZHRwbS5oCisKK0RaIERFQ1NUQVRJT04gRFoxMSBT
RVJJQUwgRFJJVkVSCitNOgkiTWFjaWVqIFcuIFJvenlja2kiIDxtYWNyb0BvcmNhbS5tZS51az4K
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9kei4qCisKK0UzWDAgUE9XRVIg
QlVUVE9OIERSSVZFUgorTToJTW9yaXR6IEZpc2NoZXIgPG1vcml0ei5maXNjaGVyQGV0dHVzLmNv
bT4KK0w6CXVzcnAtdXNlcnNAbGlzdHMuZXR0dXMuY29tCitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6
Ly93d3cuZXR0dXMuY29tCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5w
dXQvZTN4MC1idXR0b24udHh0CitGOglkcml2ZXJzL2lucHV0L21pc2MvZTN4MC1idXR0b24uYwor
CitFNDAwMCBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
T3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4
dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvdHVuZXJz
L2U0MDAwKgorCitFQVJUSF9QVDEgTUVESUEgRFJJVkVSCitNOglBa2loaXJvIFRzdWthZGEgPHRz
a2QwOEBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBG
aXhlcworRjoJZHJpdmVycy9tZWRpYS9wY2kvcHQxLworCitFQVJUSF9QVDMgTUVESUEgRFJJVkVS
CitNOglBa2loaXJvIFRzdWthZGEgPHRza2QwOEBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9tZWRpYS9wY2kvcHQzLwor
CitFQzEwMCBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
T3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4
dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvZHZiLWZy
b250ZW5kcy9lYzEwMCoKKworRUNSWVBUIEZJTEUgU1lTVEVNCitNOglUeWxlciBIaWNrcyA8Y29k
ZUB0eWhpY2tzLmNvbT4KK0w6CWVjcnlwdGZzQHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVz
CitXOglodHRwOi8vZWNyeXB0ZnMub3JnCitXOglodHRwczovL2xhdW5jaHBhZC5uZXQvZWNyeXB0
ZnMKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
dHloaWNrcy9lY3J5cHRmcy5naXQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZWNyeXB0
ZnMucnN0CitGOglmcy9lY3J5cHRmcy8KKworRURBQy1BTUQ2NAorTToJWWF6ZW4gR2hhbm5hbSA8
eWF6ZW4uZ2hhbm5hbUBhbWQuY29tPgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJZHJpdmVycy9lZGFjL2FtZDY0X2VkYWMqCitGOglkcml2ZXJzL2VkYWMv
bWNlX2FtZCoKKworRURBQy1BUk1BREEKK006CUphbiBMdWViYmUgPGpsdUBwZW5ndXRyb25peC5k
ZT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRyb2xsZXJzL21hcnZlbGws
bXZlYnUtc2RyYW0tY29udHJvbGxlci55YW1sCitGOglkcml2ZXJzL2VkYWMvYXJtYWRhX3hwXyoK
KworRURBQy1BU1QyNTAwCitNOglTdGVmYW4gU2NoYWVja2VsZXIgPHNzY2hhZWNrQGNpc2NvLmNv
bT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Vk
YWMvYXNwZWVkLXNkcmFtLWVkYWMudHh0CitGOglkcml2ZXJzL2VkYWMvYXNwZWVkX2VkYWMuYwor
CitFREFDLUJMVUVGSUVMRAorTToJU2hyYXZhbiBLdW1hciBSYW1hbmkgPHNocmF2YW5rckBudmlk
aWEuY29tPgorTToJRGF2aWQgVGhvbXBzb24gPGRhdnRob21wc29uQG52aWRpYS5jb20+CitTOglT
dXBwb3J0ZWQKK0Y6CWRyaXZlcnMvZWRhYy9ibHVlZmllbGRfZWRhYy5jCisKK0VEQUMtQ0FMWEVE
QQorTToJQW5kcmUgUHJ6eXdhcmEgPGFuZHJlLnByenl3YXJhQGFybS5jb20+CitMOglsaW51eC1l
ZGFjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9lZGFjL2hpZ2hi
YW5rKgorCitFREFDLUNBVklVTSBPQ1RFT04KK006CVRob21hcyBCb2dlbmRvZXJmZXIgPHRzYm9n
ZW5kQGFscGhhLmZyYW5rZW4uZGU+CitMOglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworTDoJ
bGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRh
Yy9vY3Rlb25fZWRhYyoKKworRURBQy1DQVZJVU0gVEhVTkRFUlgKK006CVJvYmVydCBSaWNodGVy
IDxycmljQGtlcm5lbC5vcmc+CitMOglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworUzoJT2Rk
IEZpeGVzCitGOglkcml2ZXJzL2VkYWMvdGh1bmRlcnhfZWRhYyoKKworRURBQy1DT1JFCitNOglC
b3Jpc2xhdiBQZXRrb3YgPGJwQGFsaWVuOC5kZT4KK006CVRvbnkgTHVjayA8dG9ueS5sdWNrQGlu
dGVsLmNvbT4KK1I6CUphbWVzIE1vcnNlIDxqYW1lcy5tb3JzZUBhcm0uY29tPgorUjoJTWF1cm8g
Q2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFiQGtlcm5lbC5vcmc+CitSOglSb2JlcnQgUmljaHRlciA8
cnJpY0BrZXJuZWwub3JnPgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp
dC9yYXMvcmFzLmdpdCBlZGFjLWZvci1uZXh0CitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkv
ZWRhYy5yc3QKK0Y6CWRyaXZlcnMvZWRhYy8KK0Y6CWluY2x1ZGUvbGludXgvZWRhYy5oCisKK0VE
QUMtRE1DNTIwCitNOglMZWkgV2FuZyA8bGV3YW5AbWljcm9zb2Z0LmNvbT4KK0w6CWxpbnV4LWVk
YWNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvZWRhYy9kbWM1MjBf
ZWRhYy5jCisKK0VEQUMtRTc1MlgKK006CU1hcmsgR3Jvc3MgPG1hcmtncm9zc0BrZXJuZWwub3Jn
PgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvZWRhYy9lNzUyeF9lZGFjLmMKKworRURBQy1FN1hYWAorTDoJbGludXgtZWRhY0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRhYy9lN3h4eF9lZGFjLmMKKwor
RURBQy1GU0xfRERSCitSOglGcmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KK0w6CWlteEBsaXN0
cy5saW51eC5kZXYKK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOglkcml2ZXJzL2VkYWMvZnNsX2Rkcl9lZGFjLioKKworRURBQy1HSEVTCitNOglNYXVybyBD
YXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWVkYWNAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2VkYWMvZ2hlc19lZGFjLmMKKwor
RURBQy1JMTBOTQorTToJVG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29tPgorTDoJbGludXgt
ZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRhYy9pMTBu
bV9iYXNlLmMKKworRURBQy1JMzAwMAorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CU9ycGhhbgorRjoJZHJpdmVycy9lZGFjL2kzMDAwX2VkYWMuYworCitFREFDLUk1MDAwCitMOgls
aW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9lZGFj
L2k1MDAwX2VkYWMuYworCitFREFDLUk1NDAwCitNOglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1j
aGVoYWJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL2VkYWMvaTU0MDBfZWRhYy5jCisKK0VEQUMtSTczMDAKK006CU1h
dXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPgorTDoJbGludXgtZWRhY0B2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRhYy9pNzMwMF9lZGFj
LmMKKworRURBQy1JN0NPUkUKK006CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJu
ZWwub3JnPgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvZWRhYy9pN2NvcmVfZWRhYy5jCisKK0VEQUMtSTgyNDQzQlhHWAorTToJVGltIFNt
YWxsIDx0aW1AYnV0dGVyc2lkZXVwLmNvbT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2VkYWMvaTgyNDQzYnhneF9lZGFjLmMKKworRURB
Qy1JODI5NzVYCitNOgkiQXJ2aW5kIFIuIiA8YXJ2aW5vNTVAZ21haWwuY29tPgorTDoJbGludXgt
ZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZWRhYy9pODI5
NzV4X2VkYWMuYworCitFREFDLUlFMzEyMDAKK006CUphc29uIEJhcm9uIDxqYmFyb25AYWthbWFp
LmNvbT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL2VkYWMvaWUzMTIwMF9lZGFjLmMKKworRURBQy1JR0VONgorTToJVG9ueSBMdWNrIDx0
b255Lmx1Y2tAaW50ZWwuY29tPgorUjoJUWl1eHUgWmh1byA8cWl1eHUuemh1b0BpbnRlbC5jb20+
CitMOglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9lZGFjL2lnZW42X2VkYWMuYworCitFREFDLU1QQzg1WFgKK006CUpvaGFubmVzIFRodW1zaGly
biA8bW9yYmlkcnNhQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL2VkYWMvbXBjODV4eF9lZGFjLltjaF0KKworRURBQy1O
UENNCitNOglNYXJ2aW4gTGluIDxrZmxpbkBudXZvdG9uLmNvbT4KK006CVN0YW5sZXkgQ2h1IDx5
c2NodUBudXZvdG9uLmNvbT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVtb3J5LWNvbnRy
b2xsZXJzL251dm90b24sbnBjbS1tZW1vcnktY29udHJvbGxlci55YW1sCitGOglkcml2ZXJzL2Vk
YWMvbnBjbV9lZGFjLmMKKworRURBQy1QQVNFTUkKK006CUVnb3IgTWFydG92ZXRza3kgPGVnb3JA
cGFzZW1pLmNvbT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOglkcml2ZXJzL2VkYWMvcGFzZW1pX2VkYWMuYworCitFREFDLVBORDIKK006CVRvbnkgTHVj
ayA8dG9ueS5sdWNrQGludGVsLmNvbT4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL2VkYWMvcG5kMl9lZGFjLltjaF0KKworRURBQy1RQ09N
CitNOglNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8u
b3JnPgorTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWVkYWNAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2VkYWMvcWNvbV9lZGFjLmMK
KworRURBQy1SODI2MDAKK006CVRpbSBTbWFsbCA8dGltQGJ1dHRlcnNpZGV1cC5jb20+CitMOgls
aW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9lZGFj
L3I4MjYwMF9lZGFjLmMKKworRURBQy1TQlJJREdFCitNOglUb255IEx1Y2sgPHRvbnkubHVja0Bp
bnRlbC5jb20+CitSOglRaXV4dSBaaHVvIDxxaXV4dS56aHVvQGludGVsLmNvbT4KK0w6CWxpbnV4
LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2VkYWMvc2Jf
ZWRhYy5jCisKK0VEQUMtU0tZTEFLRQorTToJVG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29t
PgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvZWRhYy9za3hfKi5bY2hdCisKK0VEQUMtVEkKK006CVRlcm8gS3Jpc3RvIDxrcmlzdG9Aa2Vy
bmVsLm9yZz4KK0w6CWxpbnV4LWVkYWNAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK0Y6
CWRyaXZlcnMvZWRhYy90aV9lZGFjLmMKKworRURJUk9MIFVBLTEwMS9VQS0xMDAwIERSSVZFUgor
TToJQ2xlbWVucyBMYWRpc2NoIDxjbGVtZW5zQGxhZGlzY2guZGU+CitMOglsaW51eC1zb3VuZEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9y
Zy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGl3YWkvc291bmQuZ2l0CitGOglzb3VuZC91c2Iv
bWlzYy91YTEwMS5jCisKK0VGSSBURVNUIERSSVZFUgorTToJSXZhbiBIdSA8aXZhbi5odUBjYW5v
bmljYWwuY29tPgorTToJQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4KK0w6CWxpbnV4
LWVmaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZmlybXdhcmUv
ZWZpL3Rlc3QvCisKK0VGSSBWQVJJQUJMRSBGSUxFU1lTVEVNCitNOglKZXJlbXkgS2VyciA8amtA
b3psYWJzLm9yZz4KK006CUFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+CitMOglsaW51
eC1lZmlAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2VmaS9lZmkuZ2l0CitGOglmcy9lZml2
YXJmcy8KKworRUZJRkIgRlJBTUVCVUZGRVIgRFJJVkVSCitNOglQZXRlciBKb25lcyA8cGpvbmVz
QHJlZGhhdC5jb20+CitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvZWZpZmIuYworCitFRlMgRklMRVNZU1RFTQorUzoJ
T3JwaGFuCitXOglodHRwOi8vYWVzY2hpLmNoLmV1Lm9yZy9lZnMvCitGOglmcy9lZnMvCisKK0VI
RUEgKElCTSBwU2VyaWVzIGVIRUEgMTBHYiBldGhlcm5ldCBhZGFwdGVyKSBEUklWRVIKK0w6CW5l
dGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQv
aWJtL2VoZWEvCisKK0VMTTMyNyBDQU4gTkVUV09SSyBEUklWRVIKK006CU1heCBTdGF1ZHQgPG1h
eEBlbnBhcy5vcmc+CitMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvY2FuL2NhbjMyNy5y
c3QKK0Y6CWRyaXZlcnMvbmV0L2Nhbi9jYW4zMjcuYworCitFTTI4WFggVklERU80TElOVVggRFJJ
VkVSCitNOglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAa2VybmVsLm9yZz4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51
eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRh
dGlvbi9hZG1pbi1ndWlkZS9tZWRpYS9lbTI4eHgqCitGOglkcml2ZXJzL21lZGlhL3VzYi9lbTI4
eHgvCisKK0VNTUMgQ01EUSBIT1NUIENPTlRST0xMRVIgSU5URVJGQUNFIChDUUhDSSkgRFJJVkVS
CitNOglBZHJpYW4gSHVudGVyIDxhZHJpYW4uaHVudGVyQGludGVsLmNvbT4KK006CUFzdXRvc2gg
RGFzIDxxdWljX2FzdXRvc2hkQHF1aWNpbmMuY29tPgorUjoJUml0ZXNoIEhhcmphbmkgPHJpdGVz
aC5saXN0QGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1tY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorRjoJZHJpdmVycy9tbWMvaG9zdC9jcWhjaSoKKworRU1TIENQQy1QQ0kgQ0FOIERSSVZF
UgorTToJR2VyaGFyZCBVdHRlbnRoYWxlciA8dXR0ZW50aGFsZXJAZW1zLXd1ZW5zY2hlLmNvbT4K
K006CXN1cHBvcnRAZW1zLXd1ZW5zY2hlLmNvbQorTDoJbGludXgtY2FuQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvZW1zX3BjaS5jCisK
K0VNVUxFWCAxMEdicHMgaVNDU0kgLSBPbmVDb25uZWN0IERSSVZFUgorTToJS2V0YW4gTXVrYWRh
bSA8a2V0YW4ubXVrYWRhbUBicm9hZGNvbS5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3LmJyb2FkY29tLmNvbQorRjoJZHJpdmVy
cy9zY3NpL2JlMmlzY3NpLworCitFTVVMRVggMTBHYnBzIE5JQyBCRTIsIEJFMy1SLCBMYW5jZXIs
IFNreWhhd2stUiBEUklWRVIgKGJlMm5ldCkKK006CUFqaXQgS2hhcGFyZGUgPGFqaXQua2hhcGFy
ZGVAYnJvYWRjb20uY29tPgorTToJU3JpaGFyc2hhIEJhc2F2YXBhdG5hIDxzcmloYXJzaGEuYmFz
YXZhcGF0bmFAYnJvYWRjb20uY29tPgorTToJU29tbmF0aCBLb3R1ciA8c29tbmF0aC5rb3R1ckBi
cm9hZGNvbS5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitX
OglodHRwOi8vd3d3LmVtdWxleC5jb20KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9i
ZW5ldC8KKworRU1VTEVYIE9ORUNPTk5FQ1QgUk9DRSBEUklWRVIKK006CVNlbHZpbiBYYXZpZXIg
PHNlbHZpbi54YXZpZXJAYnJvYWRjb20uY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU9kZCBGaXhlcworVzoJaHR0cDovL3d3dy5icm9hZGNvbS5jb20KK0Y6CWRyaXZlcnMv
aW5maW5pYmFuZC9ody9vY3JkbWEvCitGOglpbmNsdWRlL3VhcGkvcmRtYS9vY3JkbWEtYWJpLmgK
KworRU1VTEVYL0JST0FEQ09NIEVGQ1QgRkMvRkNPRSBTQ1NJIFRBUkdFVCBEUklWRVIKK006CUph
bWVzIFNtYXJ0IDxqYW1lcy5zbWFydEBicm9hZGNvbS5jb20+CitNOglSYW0gVmVnZXNuYSA8cmFt
LnZlZ2VzbmFAYnJvYWRjb20uY29tPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK0w6
CXRhcmdldC1kZXZlbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3
dy5icm9hZGNvbS5jb20KK0Y6CWRyaXZlcnMvc2NzaS9lbHgvCisKK0VNVUxFWC9CUk9BRENPTSBM
UEZDIEZDL0ZDT0UgU0NTSSBEUklWRVIKK006CUphbWVzIFNtYXJ0IDxqYW1lcy5zbWFydEBicm9h
ZGNvbS5jb20+CitNOglEaWNrIEtlbm5lZHkgPGRpY2sua2VubmVkeUBicm9hZGNvbS5jb20+CitM
OglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3
LmJyb2FkY29tLmNvbQorRjoJZHJpdmVycy9zY3NpL2xwZmMvCisKK0VORSBDQjcxMCBGTEFTSCBD
QVJEIFJFQURFUiBEUklWRVIKK006CU1pY2hhxYIgTWlyb3PFgmF3IDxtaXJxLWxpbnV4QHJlcmUu
cW1xbS5wbD4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWlzYy9jYjcxMC8KK0Y6CWRyaXZl
cnMvbW1jL2hvc3QvY2I3MTAtbW1jLioKK0Y6CWluY2x1ZGUvbGludXgvY2I3MTAuaAorCitFTkUg
S0IyNDI2IChFTkUwMTAwL0VORTAyMFhYKSBJTkZSQVJFRCBSRUNFSVZFUgorTToJTWF4aW0gTGV2
aXRza3kgPG1heGltbGV2aXRza3lAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9tZWRpYS9yYy9lbmVfaXIuKgorCitFTkVSR1kgTU9ERUwKK006CUx1a2FzeiBMdWJhIDxsdWth
c3oubHViYUBhcm0uY29tPgorTToJIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5v
cmc+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWtlcm5l
bC9wb3dlci9lbmVyZ3lfbW9kZWwuYworRjoJaW5jbHVkZS9saW51eC9lbmVyZ3lfbW9kZWwuaAor
RjoJRG9jdW1lbnRhdGlvbi9wb3dlci9lbmVyZ3ktbW9kZWwucnN0CisKK0VQQVBSIEhZUEVSVklT
T1IgQllURSBDSEFOTkVMIERFVklDRSBEUklWRVIKK006CUxhdXJlbnRpdSBUdWRvciA8bGF1cmVu
dGl1LnR1ZG9yQG54cC5jb20+CitMOglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy90dHkvZWh2X2J5dGVjaGFuLmMKKworRVBTT04gUzFEMTNY
WFggRlJBTUVCVUZGRVIgRFJJVkVSCitNOglLcmlzdG9mZmVyIEVyaWNzb24gPGtyaXN0b2ZmZXIu
ZXJpY3NvbkBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tyaXN0b2ZmZXIvbGludXgtaHBjLmdpdAor
RjoJZHJpdmVycy92aWRlby9mYmRldi9zMWQxM3h4eGZiLmMKK0Y6CWluY2x1ZGUvdmlkZW8vczFk
MTN4eHhmYi5oCisKK0VST0ZTIEZJTEUgU1lTVEVNCitNOglHYW8gWGlhbmcgPHhpYW5nQGtlcm5l
bC5vcmc+CitNOglDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+CitSOglZdWUgSHUgPHpiZXN0YWh1
QGdtYWlsLmNvbT4KK1I6CUplZmZsZSBYdSA8amVmZmxleHVAbGludXguYWxpYmFiYS5jb20+CitS
OglTYW5kZWVwIERoYXZhbGUgPGRoYXZhbGVAZ29vZ2xlLmNvbT4KK1I6CUhvbmdibyBMaSA8bGlo
b25nYm8yMkBodWF3ZWkuY29tPgorTDoJbGludXgtZXJvZnNAbGlzdHMub3psYWJzLm9yZworUzoJ
TWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9lcm9mcy5kb2NzLmtlcm5lbC5vcmcKK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQveGlhbmcvZXJvZnMuZ2l0
CitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLWVyb2ZzCitGOglEb2N1bWVu
dGF0aW9uL2ZpbGVzeXN0ZW1zL2Vyb2ZzLnJzdAorRjoJZnMvZXJvZnMvCitGOglpbmNsdWRlL3Ry
YWNlL2V2ZW50cy9lcm9mcy5oCisKK0VSUlNFUSBFUlJPUiBUUkFDS0lORyBJTkZSQVNUUlVDVFVS
RQorTToJSmVmZiBMYXl0b24gPGpsYXl0b25Aa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6
CWluY2x1ZGUvbGludXgvZXJyc2VxLmgKK0Y6CWxpYi9lcnJzZXEuYworCitFU0QgQ0FOIE5FVFdP
UksgRFJJVkVSUworTToJU3RlZmFuIE3DpHRqZSA8c3RlZmFuLm1hZXRqZUBlc2QuZXU+CitSOglz
b2NrZXRjYW5AZXNkLmV1CitMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL25ldC9jYW4vZXNkLworCitFU0QgQ0FOL1VTQiBEUklWRVJTCitNOglG
cmFuayBKdW5nY2xhdXMgPGZyYW5rLmp1bmdjbGF1c0Blc2QuZXU+CitSOglzb2NrZXRjYW5AZXNk
LmV1CitMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IuYworCitFVDEzMVggTkVUV09SSyBEUklWRVIKK006CU1h
cmsgRWlub24gPG1hcmsuZWlub25AZ21haWwuY29tPgorUzoJT2RkIEZpeGVzCitGOglkcml2ZXJz
L25ldC9ldGhlcm5ldC9hZ2VyZS8KKworRVRBUyBFUzU4WCBDQU4vVVNCIERSSVZFUgorTToJVmlu
Y2VudCBNYWlsaG9sIDxtYWlsaG9sLnZpbmNlbnRAd2FuYWRvby5mcj4KK0w6CWxpbnV4LWNhbkB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2lu
Zy9kZXZsaW5rL2V0YXNfZXM1OHgucnN0CitGOglkcml2ZXJzL25ldC9jYW4vdXNiL2V0YXNfZXM1
OHgvCisKK0VUSEVSTkVUIEJSSURHRQorTToJTmlrb2xheSBBbGVrc2FuZHJvdiA8cmF6b3JAYmxh
Y2t3YWxsLm9yZz4KK006CUlkbyBTY2hpbW1lbCA8aWRvc2NoQG52aWRpYS5jb20+CitMOglicmlk
Z2VAbGlzdHMubGludXguZGV2CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitXOglodHRwOi8vd3d3LmxpbnV4Zm91bmRhdGlvbi5vcmcvZW4vTmV0OkJyaWRnZQorRjoJ
aW5jbHVkZS9saW51eC9pZl9icmlkZ2UuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2lmX2JyaWRn
ZS5oCitGOglpbmNsdWRlL2xpbnV4L25ldGZpbHRlcl9icmlkZ2UvCitGOgluZXQvYnJpZGdlLwor
CitFVEhFUk5FVCBQSFkgTElCUkFSWQorTToJQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgor
TToJSGVpbmVyIEthbGx3ZWl0IDxoa2FsbHdlaXQxQGdtYWlsLmNvbT4KK1I6CVJ1c3NlbGwgS2lu
ZyA8bGludXhAYXJtbGludXgub3JnLnVrPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1uZXQt
cGh5ZGV2CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2V0aGVybmV0
LXBoeS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21kaW8q
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3FjYSxhcjgwM3gueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QKK0Y6CWRyaXZlcnMvbmV0L21k
aW8vCitGOglkcml2ZXJzL25ldC9tZGlvL2FjcGlfbWRpby5jCitGOglkcml2ZXJzL25ldC9tZGlv
L2Z3bm9kZV9tZGlvLmMKK0Y6CWRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jCitGOglkcml2ZXJz
L25ldC9wY3MvCitGOglkcml2ZXJzL25ldC9waHkvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL25l
dC9xY2EtYXI4MDN4LmgKK0Y6CWluY2x1ZGUvbGludXgvKm1kaW8qLmgKK0Y6CWluY2x1ZGUvbGlu
dXgvbGlua21vZGUuaAorRjoJaW5jbHVkZS9saW51eC9tZGlvLyouaAorRjoJaW5jbHVkZS9saW51
eC9taWkuaAorRjoJaW5jbHVkZS9saW51eC9vZl9uZXQuaAorRjoJaW5jbHVkZS9saW51eC9waHku
aAorRjoJaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaAorRjoJaW5jbHVkZS9saW51eC9waHlfbGlu
a190b3BvbG9neS5oCitGOglpbmNsdWRlL2xpbnV4L3BoeWxpYl9zdHVicy5oCitGOglpbmNsdWRl
L2xpbnV4L3BsYXRmb3JtX2RhdGEvbWRpby1iY20tdW5pbWFjLmgKK0Y6CWluY2x1ZGUvbGludXgv
cGxhdGZvcm1fZGF0YS9tZGlvLWdwaW8uaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvbWRpby5o
CitGOglpbmNsdWRlL3VhcGkvbGludXgvbWRpby5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvbWlp
LmgKK0Y6CW5ldC9jb3JlL29mX25ldC5jCisKK0VUSEVSTkVUIFBIWSBMSUJSQVJZIFtSVVNUXQor
TToJRlVKSVRBIFRvbW9ub3JpIDxmdWppdGEudG9tb25vcmlAZ21haWwuY29tPgorUjoJVHJldm9y
IEdyb3NzIDx0bWdyb3NzQHVtaWNoLmVkdT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6
CXJ1c3QtZm9yLWxpbnV4QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJcnVzdC9r
ZXJuZWwvbmV0L3BoeS5ycworRjoJcnVzdC9rZXJuZWwvbmV0L3BoeS9yZWcucnMKKworRVhFQyAm
IEJJTkZNVCBBUEksIEVMRgorTToJS2VlcyBDb29rIDxrZWVzQGtlcm5lbC5vcmc+CitMOglsaW51
eC1tbUBrdmFjay5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3Jn
L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZWVzL2xpbnV4LmdpdCBmb3ItbmV4dC9leGVjdmUK
K0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9FTEYucnN0CitGOglmcy8qYmluZm10Xyou
YworRjoJZnMvS2NvbmZpZy5iaW5mbXQKK0Y6CWZzL2V4ZWMuYworRjoJZnMvdGVzdHMvYmluZm10
Xypfa3VuaXQuYworRjoJZnMvdGVzdHMvZXhlY19rdW5pdC5jCitGOglpbmNsdWRlL2xpbnV4L2Jp
bmZtdHMuaAorRjoJaW5jbHVkZS9saW51eC9lbGYuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2F1
eHZlYy5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvYmluZm10cy5oCitGOglpbmNsdWRlL3VhcGkv
bGludXgvZWxmLmgKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2V4ZWMvCitOOglhc20vZWxm
LmgKK046CWJpbmZtdAorCitFWEZBVCBGSUxFIFNZU1RFTQorTToJTmFtamFlIEplb24gPGxpbmtp
bmplb25Aa2VybmVsLm9yZz4KK006CVN1bmdqb25nIFNlbyA8c2oxNTU3LnNlb0BzYW1zdW5nLmNv
bT4KK1I6CVl1ZXpoYW5nIE1vIDx5dWV6aGFuZy5tb0Bzb255LmNvbT4KK0w6CWxpbnV4LWZzZGV2
ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2xpbmtpbmplb24vZXhmYXQuZ2l0CitGOglm
cy9leGZhdC8KKworRVhQUkVTU1dJUkUgUFJPVE9DT0wgTElCUkFSWQorTToJRHVqZSBNaWhhbm92
acSHIDxkdWplLm1paGFub3ZpY0Bza29sZS5ocj4KK0w6CWxpbnV4LWxlZHNAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2xlZHMvbGVkcy1leHByZXNzd2lyZS5jCitG
OglpbmNsdWRlL2xpbnV4L2xlZHMtZXhwcmVzc3dpcmUuaAorCitFWFQyIEZJTEUgU1lTVEVNCitN
OglKYW4gS2FyYSA8amFja0BzdXNlLmNvbT4KK0w6CWxpbnV4LWV4dDRAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDIucnN0CitU
OglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2phY2sv
bGludXgtZnMuZ2l0CitGOglmcy9leHQyLworRjoJaW5jbHVkZS9saW51eC9leHQyKgorCitFWFQ0
IEZJTEUgU1lTVEVNCitNOgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitNOglBbmRy
ZWFzIERpbGdlciA8YWRpbGdlci5rZXJuZWxAZGlsZ2VyLmNhPgorTDoJbGludXgtZXh0NEB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9leHQ0Lndpa2kua2VybmVsLm9y
ZworUToJaHR0cDovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtZXh0NC9saXN0
LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90
eXRzby9leHQ0LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LworRjoJZnMv
ZXh0NC8KK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2V4dDQuaAorRjoJaW5jbHVkZS91YXBpL2xp
bnV4L2V4dDQuaAorCitFeHRlbmRlZCBWZXJpZmljYXRpb24gTW9kdWxlIChFVk0pCitNOglNaW1p
IFpvaGFyIDx6b2hhckBsaW51eC5pYm0uY29tPgorTToJUm9iZXJ0byBTYXNzdSA8cm9iZXJ0by5z
YXNzdUBodWF3ZWkuY29tPgorTDoJbGludXgtaW50ZWdyaXR5QHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L3pvaGFyL2xpbnV4LWludGVncml0eS5naXQKK0Y6CXNlY3VyaXR5L2ludGVncml0eS8K
K0Y6CXNlY3VyaXR5L2ludGVncml0eS9ldm0vCisKK0VYVEVOU0lCTEUgRklSTVdBUkUgSU5URVJG
QUNFIChFRkkpCitNOglBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgorTDoJbGludXgt
ZWZpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJu
ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9lZmkvZWZpLmdpdAorRjoJRG9jdW1lbnRh
dGlvbi9hZG1pbi1ndWlkZS9lZmktc3R1Yi5yc3QKK0Y6CWFyY2gvKi9pbmNsdWRlL2FzbS9lZmku
aAorRjoJYXJjaC8qL2tlcm5lbC9lZmkuYworRjoJYXJjaC9hcm0vYm9vdC9jb21wcmVzc2VkL2Vm
aS1oZWFkZXIuUworRjoJYXJjaC94ODYvcGxhdGZvcm0vZWZpLworRjoJZHJpdmVycy9maXJtd2Fy
ZS9lZmkvCitGOglpbmNsdWRlL2xpbnV4L2VmaSouaAorCitFWFRFUk5BTCBDT05ORUNUT1IgU1VC
U1lTVEVNIChFWFRDT04pCitNOglNeXVuZ0pvbyBIYW0gPG15dW5nam9vLmhhbUBzYW1zdW5nLmNv
bT4KK006CUNoYW53b28gQ2hvaSA8Y3cwMC5jaG9pQHNhbXN1bmcuY29tPgorTDoJbGludXgta2Vy
bmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJu
ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jaGFud29vL2V4dGNvbi5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vCitGOglEb2N1bWVudGF0aW9u
L2RyaXZlci1hcGkvZXh0Y29uLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9h
Y3BpL2V4dGNvbi1pbnRlbC1pbnQzNDk2LnJzdAorRjoJZHJpdmVycy9leHRjb24vCitGOglpbmNs
dWRlL2xpbnV4L2V4dGNvbi5oCitGOglpbmNsdWRlL2xpbnV4L2V4dGNvbi8KKworRVhUUkEgQk9P
VCBDT05GSUcKK006CU1hc2FtaSBIaXJhbWF0c3UgPG1oaXJhbWF0QGtlcm5lbC5vcmc+CitMOgls
aW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC10cmFjZS1rZXJuZWxAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3Jn
L3Byb2plY3QvbGludXgtdHJhY2Uta2VybmVsL2xpc3QvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RyYWNlL2xpbnV4LXRyYWNlLmdpdAorRjoJ
RG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ib290Y29uZmlnLnJzdAorRjoJZnMvcHJvYy9ib290
Y29uZmlnLmMKK0Y6CWluY2x1ZGUvbGludXgvYm9vdGNvbmZpZy5oCitGOglsaWIvYm9vdGNvbmZp
Zy1kYXRhLlMKK0Y6CWxpYi9ib290Y29uZmlnLmMKK0Y6CXRvb2xzL2Jvb3Rjb25maWcvKgorRjoJ
dG9vbHMvYm9vdGNvbmZpZy9zY3JpcHRzLyoKKworRVhUUk9OIERBIEhEIDRLIFBMVVMgQ0VDIERS
SVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwubmw+CitMOglsaW51eC1tZWRp
YUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9y
Zy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvY2VjL3VzYi9leHRyb24tZGEtaGQtNGstcGx1
cy8KKworRVhZTk9TIERQIERSSVZFUgorTToJSmluZ29vIEhhbiA8amluZ29vaGFuMUBnbWFpbC5j
b20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcCoKKworRVhZTk9TIFNZU01NVSAoSU9N
TVUpIGRyaXZlcgorTToJTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1bmcuY29t
PgorTDoJaW9tbXVAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2lv
bW11L2V4eW5vcy1pb21tdS5jCisKK0YyRlMgRklMRSBTWVNURU0KK006CUphZWdldWsgS2ltIDxq
YWVnZXVrQGtlcm5lbC5vcmc+CitNOglDaGFvIFl1IDxjaGFvQGtlcm5lbC5vcmc+CitMOglsaW51
eC1mMmZzLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorUzoJTWFpbnRhaW5lZAorVzoJaHR0
cHM6Ly9mMmZzLndpa2kua2VybmVsLm9yZy8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5v
cmcvcHJvamVjdC9mMmZzL2xpc3QvCitCOglodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvZW50
ZXJfYnVnLmNnaT9wcm9kdWN0PUZpbGUlMjBTeXN0ZW0mY29tcG9uZW50PWYyZnMKK1Q6CWdpdCBn
aXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamFlZ2V1ay9mMmZz
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1mcy1mMmZzCitGOglEb2N1
bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2YyZnMucnN0CitGOglmcy9mMmZzLworRjoJaW5jbHVkZS9s
aW51eC9mMmZzX2ZzLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2YyZnMuaAorRjoJaW5jbHVk
ZS91YXBpL2xpbnV4L2YyZnMuaAorCitGNzE4MDVGIEhBUkRXQVJFIE1PTklUT1JJTkcgRFJJVkVS
CitNOglKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuY29tPgorTDoJbGludXgtaHdtb25Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2Y3MTgw
NWYucnN0CitGOglkcml2ZXJzL2h3bW9uL2Y3MTgwNWYuYworCitGQUREUjJMSU5FCitNOglKb3No
IFBvaW1ib2V1ZiA8anBvaW1ib2VAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CXNjcmlw
dHMvZmFkZHIybGluZQorCitGQUlMT1ZFUiBNT0RVTEUKK006CVNyaWRoYXIgU2FtdWRyYWxhIDxz
cmlkaGFyLnNhbXVkcmFsYUBpbnRlbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9mYWlsb3Zlci5yc3QKK0Y6
CWluY2x1ZGUvbmV0L2ZhaWxvdmVyLmgKK0Y6CW5ldC9jb3JlL2ZhaWxvdmVyLmMKKworRkFOT1RJ
RlkKK006CUphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CitSOglBbWlyIEdvbGRzdGVpbiA8YW1pcjcz
aWxAZ21haWwuY29tPgorUjoJTWF0dGhldyBCb2Jyb3dza2kgPHJlcG5vcEBnb29nbGUuY29tPgor
TDoJbGludXgtZnNkZXZlbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWZzL25v
dGlmeS9mYW5vdGlmeS8KK0Y6CWluY2x1ZGUvbGludXgvZmFub3RpZnkuaAorRjoJaW5jbHVkZS91
YXBpL2xpbnV4L2Zhbm90aWZ5LmgKKworRkFSQURBWSBGT1RHMjEwIFVTQjIgRFVBTC1ST0xFIENP
TlRST0xMRVIKK006CUxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KK0w6
CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdXNi
L2ZvdGcyMTAvCisKK0ZBUlNZTkMgU1lOQ0hST05PVVMgRFJJVkVSCitNOglLZXZpbiBDdXJ0aXMg
PGtldmluLmN1cnRpc0BmYXJzaXRlLmNvLnVrPgorUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3
LmZhcnNpdGUuY28udWsvCitGOglkcml2ZXJzL25ldC93YW4vZmFyc3luYy4qCisKK0ZBVUxUIElO
SkVDVElPTiBTVVBQT1JUCitNOglBa2lub2J1IE1pdGEgPGFraW5vYnUubWl0YUBnbWFpbC5jb20+
CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZmF1bHQtaW5qZWN0aW9uLworRjoJbGli
L2ZhdWx0LWluamVjdC5jCitGOgl0b29scy90ZXN0aW5nL2ZhdWx0LWluamVjdGlvbi8KKworRkJU
RlQgRnJhbWVidWZmZXIgZHJpdmVycworTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y
ZworTDoJbGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMv
c3RhZ2luZy9mYnRmdC8KKworRkMwMDExIFRVTkVSIERSSVZFUgorTToJTWljaGFlbCBCdWVzY2gg
PG1AYnVlcy5jaD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9tZWRpYS90dW5lcnMvZmMwMDExLmMKK0Y6CWRyaXZlcnMvbWVkaWEvdHVu
ZXJzL2ZjMDAxMS5oCisKK0ZDMjU4MCBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8v
cGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZl
cnMvbWVkaWEvdHVuZXJzL2ZjMjU4MCoKKworRkNPRSBTVUJTWVNURU0gKGxpYmZjLCBsaWJmY29l
LCBmY29lKQorTToJSGFubmVzIFJlaW5lY2tlIDxoYXJlQHN1c2UuZGU+CitMOglsaW51eC1zY3Np
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOgl3d3cuT3Blbi1GQ29FLm9yZworRjoJ
ZHJpdmVycy9zY3NpL2Zjb2UvCitGOglkcml2ZXJzL3Njc2kvbGliZmMvCitGOglpbmNsdWRlL3Nj
c2kvZmMvCitGOglpbmNsdWRlL3Njc2kvbGliZmMuaAorRjoJaW5jbHVkZS9zY3NpL2xpYmZjb2Uu
aAorRjoJaW5jbHVkZS91YXBpL3Njc2kvZmMvCisKK0ZJTEUgTE9DS0lORyAoZmxvY2soKSBhbmQg
ZmNudGwoKS9sb2NrZigpKQorTToJSmVmZiBMYXl0b24gPGpsYXl0b25Aa2VybmVsLm9yZz4KK006
CUNodWNrIExldmVyIDxjaHVjay5sZXZlckBvcmFjbGUuY29tPgorUjoJQWxleGFuZGVyIEFyaW5n
IDxhbGV4LmFyaW5nQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglmcy9mY250bC5jCitGOglmcy9sb2Nrcy5jCitGOglpbmNsdWRl
L2xpbnV4L2ZjbnRsLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9mY250bC5oCisKK0ZJTEVTWVNU
RU0gRElSRUNUIEFDQ0VTUyAoREFYKQorTToJRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0Bp
bnRlbC5jb20+CitSOglNYXR0aGV3IFdpbGNveCA8d2lsbHlAaW5mcmFkZWFkLm9yZz4KK1I6CUph
biBLYXJhIDxqYWNrQHN1c2UuY3o+CitMOglsaW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZwor
TDoJbnZkaW1tQGxpc3RzLmxpbnV4LmRldgorUzoJU3VwcG9ydGVkCitGOglmcy9kYXguYworRjoJ
aW5jbHVkZS9saW51eC9kYXguaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvZnNfZGF4LmgKKwor
RklMRVNZU1RFTVMgKFZGUyBhbmQgaW5mcmFzdHJ1Y3R1cmUpCitNOglBbGV4YW5kZXIgVmlybyA8
dmlyb0B6ZW5pdi5saW51eC5vcmcudWs+CitNOglDaHJpc3RpYW4gQnJhdW5lciA8YnJhdW5lckBr
ZXJuZWwub3JnPgorUjoJSmFuIEthcmEgPGphY2tAc3VzZS5jej4KK0w6CWxpbnV4LWZzZGV2ZWxA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdmZzL3Zmcy5naXQKK0Y6CWZzLyoKK0Y6CWlu
Y2x1ZGUvbGludXgvZnMuaAorRjoJaW5jbHVkZS9saW51eC9mc190eXBlcy5oCitGOglpbmNsdWRl
L3VhcGkvbGludXgvZnMuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L29wZW5hdDIuaAorRjoJRG9j
dW1lbnRhdGlvbi9kcml2ZXItYXBpL2Vhcmx5LXVzZXJzcGFjZS9idWZmZXItZm9ybWF0LnJzdAor
RjoJaW5pdC9kb19tb3VudHMqCitGOglpbml0Lyppbml0cmFtZnMqCisKK0ZJTEVTWVNURU1TIFtF
WFBPUlRGU10KK006CUNodWNrIExldmVyIDxjaHVjay5sZXZlckBvcmFjbGUuY29tPgorTToJSmVm
ZiBMYXl0b24gPGpsYXl0b25Aa2VybmVsLm9yZz4KK1I6CUFtaXIgR29sZHN0ZWluIDxhbWlyNzNp
bEBnbWFpbC5jb20+CitMOglsaW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgt
bmZzQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2ZpbGVz
eXN0ZW1zL25mcy9leHBvcnRpbmcucnN0CitGOglmcy9leHBvcnRmcy8KK0Y6CWZzL2ZoYW5kbGUu
YworRjoJaW5jbHVkZS9saW51eC9leHBvcnRmcy5oCisKK0ZJTEVTWVNURU1TIFtJRE1BUFBFRCBN
T1VOVFNdCitNOglDaHJpc3RpYW4gQnJhdW5lciA8YnJhdW5lckBrZXJuZWwub3JnPgorTToJU2V0
aCBGb3JzaGVlIDxzZm9yc2hlZUBrZXJuZWwub3JnPgorTDoJbGludXgtZnNkZXZlbEB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvaWRt
YXBwaW5ncy5yc3QKK0Y6CWZzL21udF9pZG1hcHBpbmcuYworRjoJaW5jbHVkZS9saW51eC9tbnRf
aWRtYXBwaW5nLioKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21vdW50X3NldGF0dHIvCisK
K0ZJTEVTWVNURU1TIFtJT01BUF0KK006CUNocmlzdGlhbiBCcmF1bmVyIDxicmF1bmVyQGtlcm5l
bC5vcmc+CitSOglEYXJyaWNrIEouIFdvbmcgPGRqd29uZ0BrZXJuZWwub3JnPgorTDoJbGludXgt
eGZzQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtZnNkZXZlbEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9pb21hcC8qCitGOglmcy9p
b21hcC8KK0Y6CWluY2x1ZGUvbGludXgvaW9tYXAuaAorCitGSUxFU1lTVEVNUyBbTkVURlMgTElC
UkFSWV0KK006CURhdmlkIEhvd2VsbHMgPGRob3dlbGxzQHJlZGhhdC5jb20+CitNOglQYXVsbyBB
bGNhbnRhcmEgPHBjQG1hbmd1ZWJpdC5jb20+CitMOgluZXRmc0BsaXN0cy5saW51eC5kZXYKK0w6
CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50
YXRpb24vZmlsZXN5c3RlbXMvY2FjaGluZy8KK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMv
bmV0ZnNfbGlicmFyeS5yc3QKK0Y6CWZzL25ldGZzLworRjoJaW5jbHVkZS9saW51eC9mc2NhY2hl
Ki5oCitGOglpbmNsdWRlL2xpbnV4L25ldGZzLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2Zz
Y2FjaGUuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvbmV0ZnMuaAorCitGSUxFU1lTVEVNUyBb
U1RBQ0tBQkxFXQorTToJTWlrbG9zIFN6ZXJlZGkgPG1pa2xvc0BzemVyZWRpLmh1PgorTToJQW1p
ciBHb2xkc3RlaW4gPGFtaXI3M2lsQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5r
ZXJuZWwub3JnCitMOglsaW51eC11bmlvbmZzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZnMvYmFja2luZy1maWxlLmMKK0Y6CWluY2x1ZGUvbGludXgvYmFja2luZy1maWxlLmgK
KworRklOVEVLIEY3NTM3NVMgSEFSRFdBUkUgTU9OSVRPUiBBTkQgRkFOIENPTlRST0xMRVIgRFJJ
VkVSCitNOglSaWt1IFZvaXBpbyA8cmlrdS52b2lwaW9AaWtpLmZpPgorTDoJbGludXgtaHdtb25A
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2h3bW9uL2Y3NTM3NXMu
YworRjoJaW5jbHVkZS9saW51eC9mNzUzNzVzLmgKKworRklOVEVLIEY4MTYwNCBVU0IgdG8gMnhD
QU5CVVMgREVWSUNFIERSSVZFUgorTToJSmktWmUgSG9uZyAoUGV0ZXIgSG9uZykgPHBldGVyX2hv
bmdAZmludGVrLmNvbS50dz4KK0w6CWxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2Nhbi91c2IvZjgxNjA0LmMKKworRklSRVdJUkUgQVVESU8g
RFJJVkVSUyBhbmQgSUVDIDYxODgzLTEvNiBQQUNLRVQgU1RSRUFNSU5HIEVOR0lORQorTToJQ2xl
bWVucyBMYWRpc2NoIDxjbGVtZW5zQGxhZGlzY2guZGU+CitNOglUYWthc2hpIFNha2Ftb3RvIDxv
LXRha2FzaGlAc2FrYW1vY2NoaS5qcD4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgv
a2VybmVsL2dpdC90aXdhaS9zb3VuZC5naXQKK0Y6CWluY2x1ZGUvdWFwaS9zb3VuZC9maXJld2ly
ZS5oCitGOglzb3VuZC9maXJld2lyZS8KKworRklSRVdJUkUgTUVESUEgRFJJVkVSUyAoZmlyZWR0
dikKK006CVN0ZWZhbiBSaWNodGVyIDxzdGVmYW5yQHM1cjYuaW4tYmVybGluLmRlPgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitMOglsaW51eDEzOTQtZGV2ZWxAbGlzdHMuc291cmNl
Zm9yZ2UubmV0CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L21jaGVoYWIvbGludXgtbWVkaWEuZ2l0CitGOglkcml2ZXJz
L21lZGlhL2ZpcmV3aXJlLworCitGSVJFV0lSRSBTQlAtMiBUQVJHRVQKK006CUNocmlzIEJvb3Qg
PGJvb3RjQGJvb3RjLm5ldD4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitMOgl0YXJn
ZXQtZGV2ZWxAdmdlci5rZXJuZWwub3JnCitMOglsaW51eDEzOTQtZGV2ZWxAbGlzdHMuc291cmNl
Zm9yZ2UubmV0CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L25hYi9saW8tY29yZS0yLjYuZ2l0IG1hc3RlcgorRjoJZHJp
dmVycy90YXJnZXQvc2JwLworCitGSVJFV0lSRSBTVUJTWVNURU0KK006CVRha2FzaGkgU2FrYW1v
dG8gPG8tdGFrYXNoaUBzYWthbW9jY2hpLmpwPgorTToJVGFrYXNoaSBTYWthbW90byA8dGFrYXN3
aWVAa2VybmVsLm9yZz4KK0w6CWxpbnV4MTM5NC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQK
K1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9pZWVlMTM5NC5kb2NzLmtlcm5lbC5vcmcvCitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2llZWUxMzk0
L2xpbnV4MTM5NC5naXQKK0Y6CWRyaXZlcnMvZmlyZXdpcmUvCitGOglpbmNsdWRlL2xpbnV4L2Zp
cmV3aXJlLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9maXJld2lyZSouaAorRjoJdG9vbHMvZmly
ZXdpcmUvCisKK0ZJUk1XQVJFIEZSQU1FV09SSyBGT1IgQVJNVjgtQQorTToJU3VkZWVwIEhvbGxh
IDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk
ZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL2Zpcm13YXJlL2FybV9mZmEvCitGOglpbmNsdWRlL2xpbnV4L2FybV9mZmEuaAor
CitGSVJNV0FSRSBMT0FERVIgKHJlcXVlc3RfZmlybXdhcmUpCitNOglMdWlzIENoYW1iZXJsYWlu
IDxtY2dyb2ZAa2VybmVsLm9yZz4KK006CVJ1c3MgV2VpZ2h0IDxydXNzLndlaWdodEBsaW51eC5k
ZXY+CitNOglEYW5pbG8gS3J1bW1yaWNoIDxkYWtyQGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJu
ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Zpcm13
YXJlX2NsYXNzLworRjoJZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci8KK0Y6CXJ1c3Qva2Vy
bmVsL2Zpcm13YXJlLnJzCitGOglpbmNsdWRlL2xpbnV4L2Zpcm13YXJlLmgKKworRkxFWFRJTUVS
IEZUTS1RVUFEREVDIERSSVZFUgorTToJUGF0cmljayBIYXZlbGFuZ2UgPHBhdHJpY2suaGF2ZWxh
bmdlQGVzc2Vuc2l1bS5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY291bnRlci9mc2ws
ZnRtLXF1YWRkZWMueWFtbAorRjoJZHJpdmVycy9jb3VudGVyL2Z0bS1xdWFkZGVjLmMKKworRkxP
UFBZIERSSVZFUgorTToJRGVuaXMgRWZyZW1vdiA8ZWZyZW1vdkBsaW51eC5jb20+CitMOglsaW51
eC1ibG9ja0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9ibG9jay9m
bG9wcHkuYworCitGTFlTS1kgRlNJQTZCIFJDIFJFQ0VJVkVSCitNOglNYXJrdXMgS29jaCA8bWFy
a3VzQG5vdHN5bmNpbmcubmV0PgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL2lucHV0L2pveXN0aWNrL2ZzaWE2Yi5jCisKK0ZPQ1VTUklU
RSBDT05UUk9MIFBST1RPQ09ML1NDQVJMRVRUMiBNSVhFUiBEUklWRVJTIChTY2FybGV0dCBHZW4g
MissIENsYXJldHQsIGFuZCBWb2Nhc3RlcikKK006CUdlb2ZmcmV5IEQuIEJlbm5ldHQgPGdAYjQu
dnU+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0
dHBzOi8vZ2l0aHViLmNvbS9nZW9mZnJleWJlbm5ldHQvbGludXgtZmNwCitCOglodHRwczovL2dp
dGh1Yi5jb20vZ2VvZmZyZXliZW5uZXR0L2xpbnV4LWZjcC9pc3N1ZXMKK1Q6CWdpdCBodHRwczov
L2dpdGh1Yi5jb20vZ2VvZmZyZXliZW5uZXR0L2xpbnV4LWZjcC5naXQKK0Y6CWluY2x1ZGUvdWFw
aS9zb3VuZC9mY3AuaAorRjoJaW5jbHVkZS91YXBpL3NvdW5kL3NjYXJsZXR0Mi5oCitGOglzb3Vu
ZC91c2IvZmNwLmMKK0Y6CXNvdW5kL3VzYi9taXhlcl9zY2FybGV0dDIuYworCitGT1JDRURFVEgg
R0lHQUJJVCBFVEhFUk5FVCBEUklWRVIKK006CVJhaW4gUml2ZXIgPHJhaW4uMTk4Ni4wOC4xMkBn
bWFpbC5jb20+CitNOglaaHUgWWFuanVuIDx6eWp6eWoyMDAwQGdtYWlsLmNvbT4KK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0
L252aWRpYS8qCisKK0ZPUlRJRllfU09VUkNFCitNOglLZWVzIENvb2sgPGtlZXNAa2VybmVsLm9y
Zz4KK0w6CWxpbnV4LWhhcmRlbmluZ0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZWVzL2xp
bnV4LmdpdCBmb3ItbmV4dC9oYXJkZW5pbmcKK0Y6CWluY2x1ZGUvbGludXgvZm9ydGlmeS1zdHJp
bmcuaAorRjoJbGliL3Rlc3RfZm9ydGlmeS8qCitGOglsaWIvdGVzdHMvZm9ydGlmeV9rdW5pdC5j
CitGOglsaWIvdGVzdHMvbWVtY3B5X2t1bml0LmMKK0s6CVxidW5zYWZlX21lbWNweVxiCitLOglc
Yl9fTk9fRk9SVElGWVxiCisKK0ZQR0EgREZMIERSSVZFUlMKK006CVd1IEhhbyA8aGFvLnd1QGlu
dGVsLmNvbT4KK1I6CVRvbSBSaXggPHRyaXhAcmVkaGF0LmNvbT4KK0w6CWxpbnV4LWZwZ2FAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5n
L3N5c2ZzLWJ1cy1kZmwqCitGOglEb2N1bWVudGF0aW9uL2ZwZ2EvZGZsLnJzdAorRjoJZHJpdmVy
cy9mcGdhL2RmbCoKK0Y6CWRyaXZlcnMvdWlvL3Vpb19kZmwuYworRjoJaW5jbHVkZS9saW51eC9k
ZmwuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2ZwZ2EtZGZsLmgKKworRlBHQSBNQU5BR0VSIEZS
QU1FV09SSworTToJTW9yaXR6IEZpc2NoZXIgPG1kZkBrZXJuZWwub3JnPgorTToJV3UgSGFvIDxo
YW8ud3VAaW50ZWwuY29tPgorTToJWHUgWWlsdW4gPHlpbHVuLnh1QGludGVsLmNvbT4KK1I6CVRv
bSBSaXggPHRyaXhAcmVkaGF0LmNvbT4KK0w6CWxpbnV4LWZwZ2FAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitROglodHRwOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51
eC1mcGdhL2xpc3QvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L2ZwZ2EvbGludXgtZnBnYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9mcGdhLworRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2ZwZ2EvCitGOglE
b2N1bWVudGF0aW9uL2ZwZ2EvCitGOglkcml2ZXJzL2ZwZ2EvCitGOglpbmNsdWRlL2xpbnV4L2Zw
Z2EvCisKK0ZQVSBFTVVMQVRPUgorTToJQmlsbCBNZXR6ZW50aGVuIDxiaWxsbUBtZWxicGMub3Jn
LmF1PgorUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9mbG9hdGluZ3BvaW50LmJpbGxtLmF1Lwor
RjoJYXJjaC94ODYvbWF0aC1lbXUvCisKK0ZSQU1FQlVGRkVSIENPUkUKK006CVNpbW9uYSBWZXR0
ZXIgPHNpbW9uYUBmZndsbC5jaD4KK1M6CU9kZCBGaXhlcworVDoJZ2l0IGh0dHBzOi8vZ2l0bGFi
LmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglkcml2ZXJzL3ZpZGVvL2Zi
ZGV2L2NvcmUvCisKK0ZSQU1FQlVGRkVSIERSQVdJTkcKK006CVpzb2x0IEthanRhciA8c29jaUBj
NjQucnVsZXoub3JnPgorUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUv
Y2ZiY29weWFyZWEuYworRjoJZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2NmYmZpbGxyZWN0LmMK
K0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9jZmJpbWdibHQuYworRjoJZHJpdmVycy92aWRl
by9mYmRldi9jb3JlL2NmYm1lbS5oCitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJfY29w
eWFyZWEuaAorRjoJZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZiX2RyYXcuaAorRjoJZHJpdmVy
cy92aWRlby9mYmRldi9jb3JlL2ZiX2ZpbGxyZWN0LmgKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYv
Y29yZS9mYl9pbWFnZWJsaXQuaAorRjoJZHJpdmVycy92aWRlby9mYmRldi9jb3JlL3N5c2NvcHlh
cmVhLmMKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvY29yZS9zeXNmaWxscmVjdC5jCitGOglkcml2
ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvc3lzaW1nYmx0LmMKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYv
Y29yZS9zeXNtZW0uaAorCitGUkFNRUJVRkZFUiBMQVlFUgorTToJSGVsZ2UgRGVsbGVyIDxkZWxs
ZXJAZ214LmRlPgorTDoJbGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnCitMOglkcmktZGV2ZWxA
bGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitROglodHRwOi8vcGF0Y2h3b3Jr
Lmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1mYmRldi9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kZWxsZXIvbGludXgtZmJkZXYuZ2l0
CitGOglEb2N1bWVudGF0aW9uL2ZiLworRjoJZHJpdmVycy92aWRlby8KK0Y6CWluY2x1ZGUvbGlu
dXgvZmIuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2ZiLmgKK0Y6CWluY2x1ZGUvdWFwaS92aWRl
by8KK0Y6CWluY2x1ZGUvdmlkZW8vCisKK0ZSRUVTQ0FMRSBDQUFNIChDcnlwdG9ncmFwaGljIEFj
Y2VsZXJhdGlvbiBhbmQgQXNzdXJhbmNlIE1vZHVsZSkgRFJJVkVSCitNOglIb3JpYSBHZWFudMSD
IDxob3JpYS5nZWFudGFAbnhwLmNvbT4KK006CVBhbmthaiBHdXB0YSA8cGFua2FqLmd1cHRhQG54
cC5jb20+CitNOglHYXVyYXYgSmFpbiA8Z2F1cmF2LmphaW5AbnhwLmNvbT4KK0w6CWxpbnV4LWNy
eXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vZnNsLHNlYy12NC4wKgorRjoJZHJpdmVycy9jcnlwdG8v
Y2FhbS8KKworRlJFRVNDQUxFIENPTERGSVJFIE01NDQxWCBNTUMgRFJJVkVSCitNOglBbmdlbG8g
RHVyZWdoZWxsbyA8YWR1cmVnaGVsbG9AYmF5bGlicmUuY29tPgorTDoJbGludXgtbW1jQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1lc2Ro
Yy1tY2YuYworRjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL21tYy1lc2RoYy1tY2YuaAor
CitGUkVFU0NBTEUgRElVIEZSQU1FQlVGRkVSIERSSVZFUgorTToJVGltdXIgVGFiaSA8dGltdXJA
a2VybmVsLm9yZz4KK0w6CWxpbnV4LWZiZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy92aWRlby9mYmRldi9mc2wtZGl1LWZiLioKKworRlJFRVNDQUxFIERNQSBE
UklWRVIKK006CVpoYW5nIFdlaSA8endAemgta2VybmVsLm9yZz4KK0w6CWxpbnV4cHBjLWRldkBs
aXN0cy5vemxhYnMub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2RtYS9mc2xkbWEuKgor
CitGUkVFU0NBTEUgRFNQSSBEUklWRVIKK006CVZsYWRpbWlyIE9sdGVhbiA8b2x0ZWFudkBnbWFp
bC5jb20+CitMOglsaW51eC1zcGlAdmdlci5rZXJuZWwub3JnCitMOglpbXhAbGlzdHMubGludXgu
ZGV2CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
c3BpL2ZzbCxkc3BpKi55YW1sCitGOglkcml2ZXJzL3NwaS9zcGktZnNsLWRzcGkuYworRjoJaW5j
bHVkZS9saW51eC9zcGkvc3BpLWZzbC1kc3BpLmgKKworRlJFRVNDQUxFIGVETUEgRFJJVkVSCitN
OglGcmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KK0w6CWlteEBsaXN0cy5saW51eC5kZXYKK0w6
CWRtYWVuZ2luZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvZnNsLGVkbWEueWFtbAorRjoJZHJpdmVycy9kbWEv
ZnNsLWVkbWEqLioKKworRlJFRVNDQUxFIEVORVRDIEVUSEVSTkVUIERSSVZFUlMKK006CUNsYXVk
aXUgTWFub2lsIDxjbGF1ZGl1Lm1hbm9pbEBueHAuY29tPgorTToJVmxhZGltaXIgT2x0ZWFuIDx2
bGFkaW1pci5vbHRlYW5AbnhwLmNvbT4KK006CVdlaSBGYW5nIDx3ZWkuZmFuZ0BueHAuY29tPgor
TToJQ2xhcmsgV2FuZyA8eGlhb25pbmcud2FuZ0BueHAuY29tPgorTDoJaW14QGxpc3RzLmxpbnV4
LmRldgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wsZW5ldGMqLnlhbWwKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbnhwLG5ldGMtYmxrLWN0cmwueWFtbAor
RjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjLworRjoJaW5jbHVkZS9saW51
eC9mc2wvZW5ldGNfbWRpby5oCitGOglpbmNsdWRlL2xpbnV4L2ZzbC9uZXRjX2dsb2JhbC5oCitG
OglpbmNsdWRlL2xpbnV4L2ZzbC9udG1wLmgKKworRlJFRVNDQUxFIGVUU0VDIEVUSEVSTkVUIERS
SVZFUiAoR0lBTkZBUikKK006CUNsYXVkaXUgTWFub2lsIDxjbGF1ZGl1Lm1hbm9pbEBueHAuY29t
PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wtdHNlYy1waHkudHh0CitGOglkcml2ZXJz
L25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhcioKKworRlJFRVNDQUxFIEdQTUkgTkFORCBE
UklWRVIKK006CUhhbiBYdSA8aGFuLnh1QG54cC5jb20+CitMOglpbXhAbGlzdHMubGludXguZGV2
CitMOglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9tdGQvbmFuZC9yYXcvZ3BtaS1uYW5kLyoKKworRlJFRVNDQUxFIEkyQyBDUE0gRFJJVkVS
CitNOglKb2NoZW4gRnJpZWRyaWNoIDxqb2NoZW5Ac2NyYW0uZGU+CitMOglsaW51eHBwYy1kZXZA
bGlzdHMub3psYWJzLm9yZworTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1jcG0uYworCitGUkVFU0NBTEUgSU1YIC8g
TVhDIEZFQyBEUklWRVIKK006CVdlaSBGYW5nIDx3ZWkuZmFuZ0BueHAuY29tPgorUjoJU2hlbndl
aSBXYW5nIDxzaGVud2VpLndhbmdAbnhwLmNvbT4KK1I6CUNsYXJrIFdhbmcgPHhpYW9uaW5nLndh
bmdAbnhwLmNvbT4KK0w6CWlteEBsaXN0cy5saW51eC5kZXYKK0w6CW5ldGRldkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9uZXQvZnNsLGZlYy55YW1sCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVj
LmgKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCitGOglkcml2
ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jCisKK0ZSRUVTQ0FMRSBJTVggLyBN
WEMgRlJBTUVCVUZGRVIgRFJJVkVSCitNOglTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9u
aXguZGU+CitSOglQZW5ndXRyb25peCBLZXJuZWwgVGVhbSA8a2VybmVsQHBlbmd1dHJvbml4LmRl
PgorTDoJbGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxp
c3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy92aWRlby9mYmRldi9pbXhmYi5jCisKK0ZSRUVTQ0FMRSBJTVgg
RERSIFBNVSBEUklWRVIKK006CUZyYW5rIExpIDxGcmFuay5saUBueHAuY29tPgorTDoJbGludXgt
YXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3Jp
YmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcGVyZi9p
bXgtZGRyLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BlcmYvZnNs
LWlteC1kZHIueWFtbAorRjoJZHJpdmVycy9wZXJmL2ZzbF9pbXg4X2Rkcl9wZXJmLmMKKworRlJF
RVNDQUxFIElNWCBJMkMgRFJJVkVSCitNOglPbGVrc2lqIFJlbXBlbCA8by5yZW1wZWxAcGVuZ3V0
cm9uaXguZGU+CitSOglQZW5ndXRyb25peCBLZXJuZWwgVGVhbSA8a2VybmVsQHBlbmd1dHJvbml4
LmRlPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtaW14LnlhbWwKK0Y6CWRyaXZl
cnMvaTJjL2J1c3Nlcy9pMmMtaW14LmMKKworRlJFRVNDQUxFIElNWCBMUEkyQyBEUklWRVIKK006
CURvbmcgQWlzaGVuZyA8YWlzaGVuZy5kb25nQG54cC5jb20+CitMOglsaW51eC1pMmNAdmdlci5r
ZXJuZWwub3JnCitMOglpbXhAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1pbXgtbHBpMmMueWFtbAorRjoJ
ZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbXgtbHBpMmMuYworCitGUkVFU0NBTEUgSU1YIExQU1BJ
IERSSVZFUgorTToJRnJhbmsgTGkgPEZyYW5rLkxpQG54cC5jb20+CitMOglsaW51eC1zcGlAdmdl
ci5rZXJuZWwub3JnCitMOglpbXhAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NwaS1mc2wtbHBzcGkueWFtbAor
RjoJZHJpdmVycy9zcGkvc3BpLWZzbC1scHNwaS5jCisKK0ZSRUVTQ0FMRSBNUEMgSTJDIERSSVZF
UgorTToJQ2hyaXMgUGFja2hhbSA8Y2hyaXMucGFja2hhbUBhbGxpZWR0ZWxlc2lzLmNvLm56Pgor
TDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9pMmMtbXBjLnlhbWwKK0Y6CWRyaXZlcnMvaTJj
L2J1c3Nlcy9pMmMtbXBjLmMKKworRlJFRVNDQUxFIFFPUklRIERQQUEgRVRIRVJORVQgRFJJVkVS
CitNOglNYWRhbGluIEJ1Y3VyIDxtYWRhbGluLmJ1Y3VyQG54cC5jb20+CitMOgluZXRkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVl
c2NhbGUvZHBhYQorCitGUkVFU0NBTEUgUU9SSVEgRFBBQSBGTUFOIERSSVZFUgorTToJTWFkYWxp
biBCdWN1ciA8bWFkYWxpbi5idWN1ckBueHAuY29tPgorUjoJU2VhbiBBbmRlcnNvbiA8c2Vhbi5h
bmRlcnNvbkBzZWNvLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLGZtYW4qLnlh
bWwKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuCisKK0ZSRUVTQ0FMRSBR
T1JJUSBQVFAgQ0xPQ0sgRFJJVkVSCitNOglZYW5nYm8gTHUgPHlhbmdiby5sdUBueHAuY29tPgor
TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B0cC9mc2wscHRwLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2V0
aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1wdHAqCitGOglkcml2ZXJzL25ldC9ldGhlcm5l
dC9mcmVlc2NhbGUvZHBhYTIvZHBydGMqCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2Nh
bGUvZW5ldGMvZW5ldGNfcHRwLmMKK0Y6CWRyaXZlcnMvcHRwL3B0cF9xb3JpcS5jCitGOglkcml2
ZXJzL3B0cC9wdHBfcW9yaXFfZGVidWdmcy5jCitGOglpbmNsdWRlL2xpbnV4L2ZzbC9wdHBfcW9y
aXEuaAorCitGUkVFU0NBTEUgUVVBRCBTUEkgRFJJVkVSCitNOglIYW4gWHUgPGhhbi54dUBueHAu
Y29tPgorTDoJbGludXgtc3BpQHZnZXIua2VybmVsLm9yZworTDoJaW14QGxpc3RzLmxpbnV4LmRl
dgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Nw
aS9mc2wsc3BpLWZzbC1xc3BpLnlhbWwKK0Y6CWRyaXZlcnMvc3BpL3NwaS1mc2wtcXNwaS5jCisK
K0ZSRUVTQ0FMRSBRVUlDQyBFTkdJTkUgTElCUkFSWQorTToJUWlhbmcgWmhhbyA8cWlhbmcuemhh
b0BueHAuY29tPgorTToJQ2hyaXN0b3BoZSBMZXJveSA8Y2hyaXN0b3BoZS5sZXJveUBjc2dyb3Vw
LmV1PgorTDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvc29jL2ZzbC9xZS8KK0Y6CWluY2x1ZGUvc29jL2ZzbC9xZS8KKworRlJFRVNDQUxF
IFFVSUNDIEVOR0lORSBRTUMgRFJJVkVSCitNOglIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNvZGluYUBi
b290bGluLmNvbT4KK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL2ZzbC9jcG1fcWUv
ZnNsLGNwbTEtc2NjLXFtYy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvc29jL2ZzbC9jcG1fcWUvZnNsLHFlLXVjYy1xbWMueWFtbAorRjoJZHJpdmVycy9zb2MvZnNs
L3FlL3FtYy5jCitGOglpbmNsdWRlL3NvYy9mc2wvcWUvcW1jLmgKKworRlJFRVNDQUxFIFFVSUND
IEVOR0lORSBRTUMgSERMQyBEUklWRVIKK006CUhlcnZlIENvZGluYSA8aGVydmUuY29kaW5hQGJv
b3RsaW4uY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJbGludXhwcGMtZGV2QGxp
c3RzLm96bGFicy5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L3dhbi9mc2xfcW1j
X2hkbGMuYworCitGUkVFU0NBTEUgUVVJQ0MgRU5HSU5FIFRTQSBEUklWRVIKK006CUhlcnZlIENv
ZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPgorTDoJbGludXhwcGMtZGV2QGxpc3RzLm96
bGFicy5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9zb2MvZnNsL2NwbV9xZS9mc2wsY3BtMS10c2EueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9mc2wvY3BtX3FlL2ZzbCxxZS10c2EueWFtbAorRjoJZHJp
dmVycy9zb2MvZnNsL3FlL3RzYS5jCitGOglkcml2ZXJzL3NvYy9mc2wvcWUvdHNhLmgKK0Y6CWlu
Y2x1ZGUvZHQtYmluZGluZ3Mvc29jL2NwbTEtZnNsLHRzYS5oCitGOglpbmNsdWRlL2R0LWJpbmRp
bmdzL3NvYy9xZS1mc2wsdHNhLmgKKworRlJFRVNDQUxFIFFVSUNDIEVOR0lORSBVQ0MgRVRIRVJO
RVQgRFJJVkVSCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitMOglsaW51eHBwYy1kZXZAbGlz
dHMub3psYWJzLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2Nh
bGUvdWNjX2dldGgqCisKK0ZSRUVTQ0FMRSBRVUlDQyBFTkdJTkUgVUNDIEhETEMgRFJJVkVSCitN
OglaaGFvIFFpYW5nIDxxaWFuZy56aGFvQG54cC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwu
b3JnCitMOglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9uZXQvd2FuL2ZzbF91Y2NfaGRsYyoKKworRlJFRVNDQUxFIFFVSUNDIEVOR0lORSBV
Q0MgVUFSVCBEUklWRVIKK006CVRpbXVyIFRhYmkgPHRpbXVyQGtlcm5lbC5vcmc+CitMOglsaW51
eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy90dHkv
c2VyaWFsL3VjY191YXJ0LmMKKworRlJFRVNDQUxFIFNPQyBEUklWRVJTCitNOglDaHJpc3RvcGhl
IExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+CitMOglsaW51eHBwYy1kZXZAbGlz
dHMub3psYWJzLm9yZworTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnICht
b2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxkcGFhMi1jb25zb2xlLnlhbWwKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvZnNsLworRjoJZHJpdmVycy9z
b2MvZnNsLworRjoJaW5jbHVkZS9saW51eC9mc2wvCitGOglpbmNsdWRlL3NvYy9mc2wvCisKK0ZS
RUVTQ0FMRSBTT0MgRlNfRU5FVCBEUklWRVIKK006CVBhbnRlbGlzIEFudG9uaW91IDxwYW50ZWxp
cy5hbnRvbmlvdUBnbWFpbC5jb20+CitMOglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZwor
TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQv
ZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvCisKK0ZSRUVTQ0FMRSBTT0MgU09VTkQgRFJJVkVS
UworTToJU2hlbmdqaXUgV2FuZyA8c2hlbmdqaXUud2FuZ0BnbWFpbC5jb20+CitNOglYaXVibyBM
aSA8WGl1Ym8uTGVlQGdtYWlsLmNvbT4KK1I6CUZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdtYWls
LmNvbT4KK1I6CU5pY29saW4gQ2hlbiA8bmljb2xlb3RzdWthQGdtYWlsLmNvbT4KK0w6CWxpbnV4
LXNvdW5kQHZnZXIua2VybmVsLm9yZworTDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CXNvdW5kL3NvYy9mc2wvZnNsKgorRjoJc291bmQvc29jL2ZzbC9p
bXgqCisKK0ZSRUVTQ0FMRSBTT0MgTFBDMzJYWCBTT1VORCBEUklWRVJTCitNOglKLk0uQi4gRG93
bmluZyA8am9uYXRoYW4uZG93bmluZ0BuYXV0ZWwuY29tPgorTToJUGlvdHIgV29qdGFzemN6eWsg
PHBpb3RyLndvanRhc3pjenlrQHRpbWVzeXMuY29tPgorUjoJVmxhZGltaXIgWmFwb2xza2l5IDx2
ekBtbGVpYS5jb20+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4cHBj
LWRldkBsaXN0cy5vemxhYnMub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvc291bmQvbnhwLGxwYzMyMjAtaTJzLnlhbWwKK0Y6CXNvdW5kL3Nv
Yy9mc2wvbHBjM3h4eC0qCisKK0ZSRUVTQ0FMRSBTT0MgU09VTkQgUU1DIERSSVZFUgorTToJSGVy
dmUgQ29kaW5hIDxoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+CitMOglsaW51eC1zb3VuZEB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvZnNsLHFtYy1h
dWRpby55YW1sCitGOglzb3VuZC9zb2MvZnNsL2ZzbF9xbWNfYXVkaW8uYworCitGUkVFU0NBTEUg
VVNCIFBFUklQSEVSQUwgRFJJVkVSUworTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworTDoJ
bGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy91c2Iv
Z2FkZ2V0L3VkYy9mc2wqCisKK0ZSRUVTQ0FMRSBVU0IgUEhZIERSSVZFUgorTDoJbGludXgtdXNi
QHZnZXIua2VybmVsLm9yZworTDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK1M6CU9y
cGhhbgorRjoJZHJpdmVycy91c2IvcGh5L3BoeS1mc2wtdXNiKgorCitGUkVFVlhGUyBGSUxFU1lT
VEVNCitNOglDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGluZnJhZGVhZC5vcmc+CitTOglNYWludGFp
bmVkCitXOglmdHA6Ly9mdHAub3BlbmxpbnV4Lm9yZy9wdWIvcGVvcGxlL2hjaC92eGZzCitGOglm
cy9mcmVldnhmcy8KKworRlJFRVpFUgorTToJIlJhZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtl
cm5lbC5vcmc+CitNOglQYXZlbCBNYWNoZWsgPHBhdmVsQGtlcm5lbC5vcmc+CitMOglsaW51eC1w
bUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9wb3dlci9m
cmVlemluZy1vZi10YXNrcy5yc3QKK0Y6CWluY2x1ZGUvbGludXgvZnJlZXplci5oCitGOglrZXJu
ZWwvZnJlZXplci5jCisKK0ZTQ1JZUFQ6IEZJTEUgU1lTVEVNIExFVkVMIEVOQ1JZUFRJT04gU1VQ
UE9SVAorTToJRXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0BrZXJuZWwub3JnPgorTToJVGhlb2RvcmUg
WS4gVHMnbyA8dHl0c29AbWl0LmVkdT4KK006CUphZWdldWsgS2ltIDxqYWVnZXVrQGtlcm5lbC5v
cmc+CitMOglsaW51eC1mc2NyeXB0QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitROglo
dHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtZnNjcnlwdC9saXN0Lwor
VDoJZ2l0IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy9mc2NyeXB0L2xpbnV4Lmdp
dAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9mc2NyeXB0LnJzdAorRjoJZnMvY3J5cHRv
LworRjoJaW5jbHVkZS9saW51eC9mc2NyeXB0LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9mc2Ny
eXB0LmgKKworRlNJIFNVQlNZU1RFTQorTToJRWRkaWUgSmFtZXMgPGVhamFtZXNAbGludXguaWJt
LmNvbT4KK1I6CU5pbmFkIFBhbHN1bGUgPG5pbmFkQGxpbnV4LmlibS5jb20+CitMOglsaW51eC1m
c2lAbGlzdHMub3psYWJzLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwOi8vcGF0Y2h3b3JrLm96
bGFicy5vcmcvcHJvamVjdC9saW51eC1mc2kvbGlzdC8KK0Y6CWRyaXZlcnMvZnNpLworRjoJaW5j
bHVkZS9saW51eC9mc2kqLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2ZzaSouaAorCitGU0kt
QVRUQUNIRUQgSTJDIERSSVZFUgorTToJRWRkaWUgSmFtZXMgPGVhamFtZXNAbGludXguaWJtLmNv
bT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK0w6CW9wZW5ibWNAbGlzdHMub3psYWJz
Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL2libSxpMmMtZnNpLnlhbWwKK0Y6
CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZnNpLmMKKworRlNJLUFUVEFDSEVEIFNQSSBEUklWRVIK
K006CUVkZGllIEphbWVzIDxlYWphbWVzQGxpbnV4LmlibS5jb20+CitMOglsaW51eC1zcGlAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvZnNpL2libSxmc2kyc3BpLnlhbWwKK0Y6CWRyaXZlcnMvc3BpL3NwaS1mc2kuYwor
CitGU05PVElGWTogRklMRVNZU1RFTSBOT1RJRklDQVRJT04gSU5GUkFTVFJVQ1RVUkUKK006CUph
biBLYXJhIDxqYWNrQHN1c2UuY3o+CitSOglBbWlyIEdvbGRzdGVpbiA8YW1pcjczaWxAZ21haWwu
Y29tPgorTDoJbGludXgtZnNkZXZlbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6
CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamFjay9s
aW51eC1mcy5naXQgZnNub3RpZnkKK0Y6CWZzL25vdGlmeS8KK0Y6CWluY2x1ZGUvbGludXgvZnNu
b3RpZnkqLmgKKworRlNWRVJJVFk6IFJFQUQtT05MWSBGSUxFLUJBU0VEIEFVVEhFTlRJQ0lUWSBQ
Uk9URUNUSU9OCitNOglFcmljIEJpZ2dlcnMgPGViaWdnZXJzQGtlcm5lbC5vcmc+CitNOglUaGVv
ZG9yZSBZLiBUcydvIDx0eXRzb0BtaXQuZWR1PgorTDoJZnN2ZXJpdHlAbGlzdHMubGludXguZGV2
CitTOglTdXBwb3J0ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9m
c3Zlcml0eS9saXN0LworVDoJZ2l0IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy9m
c3Zlcml0eS9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZnN2ZXJpdHku
cnN0CitGOglmcy92ZXJpdHkvCitGOglpbmNsdWRlL2xpbnV4L2ZzdmVyaXR5LmgKK0Y6CWluY2x1
ZGUvdWFwaS9saW51eC9mc3Zlcml0eS5oCisKK0ZUMjYwIEZUREkgVVNCLUhJRCBUTyBJMkMgQlJJ
REdFIERSSVZFUgorTToJTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29t
PgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtaW5wdXRAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2hpZC9oaWQtZnQyNjAuYworCitGVUpJ
VFNVIExBUFRPUCBFWFRSQVMKK006CUpvbmF0aGFuIFdvaXRoZSA8andvaXRoZUBqdXN0NDIubmV0
PgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2Z1aml0c3UtbGFwdG9wLmMKKworRlVKSVRTVSBUQUJM
RVQgRVhUUkFTCitNOglSb2JlcnQgR2VybGFjaCA8a2huekBnbXguZGU+CitMOglwbGF0Zm9ybS1k
cml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0
Zm9ybS94ODYvZnVqaXRzdS10YWJsZXQuYworCitGVU5DVElPTiBIT09LUyAoRlRSQUNFKQorTToJ
U3RldmVuIFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5vcmc+CitNOglNYXNhbWkgSGlyYW1hdHN1
IDxtaGlyYW1hdEBrZXJuZWwub3JnPgorUjoJTWFyayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJt
LmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXRyYWNlLWtl
cm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3Jr
Lmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC10cmFjZS1rZXJuZWwvbGlzdC8KK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdHJhY2UvbGludXgtdHJh
Y2UuZ2l0CitGOglEb2N1bWVudGF0aW9uL3RyYWNlL2Z0cmFjZSoKK0Y6CWFyY2gvKi8qLyovKmZ0
cmFjZSoKK0Y6CWFyY2gvKi8qLypmdHJhY2UqCitGOglpbmNsdWRlLyovZnRyYWNlLmgKK0Y6CWtl
cm5lbC90cmFjZS9mZ3JhcGguYworRjoJa2VybmVsL3RyYWNlL2Z0cmFjZSoKK0Y6CXNhbXBsZXMv
ZnRyYWNlCisKK0ZVTkdJQkxFIEVUSEVSTkVUIERSSVZFUlMKK006CURpbWl0cmlzIE1pY2hhaWxp
ZGlzIDxkbWljaGFpbEBmdW5naWJsZS5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9mdW5naWJsZS8KKworRlVTRTog
RklMRVNZU1RFTSBJTiBVU0VSU1BBQ0UKK006CU1pa2xvcyBTemVyZWRpIDxtaWtsb3NAc3plcmVk
aS5odT4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitX
OglodHRwczovL2dpdGh1Yi5jb20vbGliZnVzZS8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9y
Zy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbXN6ZXJlZGkvZnVzZS5naXQKK0Y6CURvY3VtZW50
YXRpb24vZmlsZXN5c3RlbXMvZnVzZS5yc3QKK0Y6CWZzL2Z1c2UvCitGOglpbmNsdWRlL3VhcGkv
bGludXgvZnVzZS5oCisKK0ZVVEVYIFNVQlNZU1RFTQorTToJVGhvbWFzIEdsZWl4bmVyIDx0Z2x4
QGxpbnV0cm9uaXguZGU+CitNOglJbmdvIE1vbG5hciA8bWluZ29AcmVkaGF0LmNvbT4KK1I6CVBl
dGVyIFppamxzdHJhIDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KK1I6CURhcnJlbiBIYXJ0IDxkdmhh
cnRAaW5mcmFkZWFkLm9yZz4KK1I6CURhdmlkbG9ociBCdWVzbyA8ZGF2ZUBzdGdvbGFicy5uZXQ+
CitSOglBbmRyw6kgQWxtZWlkYSA8YW5kcmVhbG1laWRAaWdhbGlhLmNvbT4KK0w6CWxpbnV4LWtl
cm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGlwL3RpcC5naXQgbG9ja2luZy9jb3Jl
CitGOglEb2N1bWVudGF0aW9uL2xvY2tpbmcvKmZ1dGV4KgorRjoJaW5jbHVkZS9hc20tZ2VuZXJp
Yy9mdXRleC5oCitGOglpbmNsdWRlL2xpbnV4L2Z1dGV4LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51
eC9mdXRleC5oCitGOglrZXJuZWwvZnV0ZXgvKgorRjoJdG9vbHMvcGVyZi9iZW5jaC9mdXRleCoK
K0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Z1dGV4LworCitGV0NUTCBTVUJTWVNURU0KK006
CURhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50ZWwuY29tPgorTToJSmFzb24gR3VudGhvcnBlIDxq
Z2dAbnZpZGlhLmNvbT4KK006CVNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbnZpZGlhLmNvbT4KK1I6
CUpvbmF0aGFuIENhbWVyb24gPEpvbmF0aGFuLkNhbWVyb25AaHVhd2VpLmNvbT4KK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9md2N0bC8KK0Y6CWRyaXZlcnMv
ZndjdGwvCitGOglpbmNsdWRlL2xpbnV4L2Z3Y3RsLmgKK0Y6CWluY2x1ZGUvdWFwaS9md2N0bC8K
KworRldDVEwgTUxYNSBEUklWRVIKK006CVNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbnZpZGlhLmNv
bT4KK1I6CUl0YXkgQXZyYWhhbSA8aXRheWF2ckBudmlkaWEuY29tPgorTDoJbGludXgta2VybmVs
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9md2N0bC9tbHg1Lwor
CitGV0NUTCBQRFMgRFJJVkVSCitNOglCcmV0dCBDcmVlbGV5IDxicmV0dC5jcmVlbGV5QGFtZC5j
b20+CitSOglTaGFubm9uIE5lbHNvbiA8c2hhbm5vbi5uZWxzb25AYW1kLmNvbT4KK0w6CWxpbnV4
LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvZndjdGwv
cGRzLworCitHQUxBWFlDT1JFIEdDMDMwOCBDQU1FUkEgU0VOU09SIERSSVZFUgorTToJU2ViYXN0
aWFuIFJlaWNoZWwgPHNyZUBrZXJuZWwub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
bWVkaWEvaTJjL2dhbGF4eWNvcmUsZ2MwMzA4LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2dj
MDMwOC5jCisKK0dBTEFYWUNPUkUgR0MwNWEyIENBTUVSQSBTRU5TT1IgRFJJVkVSCitNOglaaGkg
TWFvIDx6aGkubWFvQG1lZGlhdGVrLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21l
ZGlhL2kyYy9nYWxheHljb3JlLGdjMDVhMi55YW1sCitGOglkcml2ZXJzL21lZGlhL2kyYy9nYzA1
YTIuYworCitHQUxBWFlDT1JFIEdDMDhBMyBDQU1FUkEgU0VOU09SIERSSVZFUgorTToJWmhpIE1h
byA8emhpLm1hb0BtZWRpYXRlay5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRp
YS9pMmMvZ2FsYXh5Y29yZSxnYzA4YTMueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvZ2MwOGEz
LmMKKworR0FMQVhZQ09SRSBHQzIxNDUgU0VOU09SIERSSVZFUgorTToJQWxhaW4gVm9sbWF0IDxh
bGFpbi52b2xtYXRAZm9zcy5zdC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvZ2FsYXh5Y29yZSxnYzIx
NDUueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvZ2MyMTQ1LmMKKworR0FURVdPUktTIFNZU1RF
TSBDT05UUk9MTEVSIChHU0MpIERSSVZFUgorTToJVGltIEhhcnZleSA8dGhhcnZleUBnYXRld29y
a3MuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21mZC9nYXRld29ya3MtZ3NjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vZ3NjLWh3
bW9uLnJzdAorRjoJZHJpdmVycy9od21vbi9nc2MtaHdtb24uYworRjoJZHJpdmVycy9tZmQvZ2F0
ZXdvcmtzLWdzYy5jCitGOglpbmNsdWRlL2xpbnV4L21mZC9nc2MuaAorRjoJaW5jbHVkZS9saW51
eC9wbGF0Zm9ybV9kYXRhL2dzY19od21vbi5oCisKK0dDQyBQTFVHSU5TCitNOglLZWVzIENvb2sg
PGtlZXNAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWhhcmRlbmluZ0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl
cm5lbC9naXQva2Vlcy9saW51eC5naXQgZm9yLW5leHQvaGFyZGVuaW5nCitGOglEb2N1bWVudGF0
aW9uL2tidWlsZC9nY2MtcGx1Z2lucy5yc3QKK0Y6CWluY2x1ZGUvbGludXgvc3RhY2tsZWFrLmgK
K0Y6CWtlcm5lbC9zdGFja2xlYWsuYworRjoJc2NyaXB0cy9NYWtlZmlsZS5nY2MtcGx1Z2lucwor
RjoJc2NyaXB0cy9nY2MtcGx1Z2lucy8KKworR0NPViBCQVNFRCBLRVJORUwgUFJPRklMSU5HCitN
OglQZXRlciBPYmVycGFybGVpdGVyIDxvYmVycGFyQGxpbnV4LmlibS5jb20+CitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2Rldi10b29scy9nY292LnJzdAorRjoJa2VybmVsL2djb3Yv
CisKK0dEQiBLRVJORUwgREVCVUdHSU5HIEhFTFBFUiBTQ1JJUFRTCitNOglKYW4gS2lzemthIDxq
YW4ua2lzemthQHNpZW1lbnMuY29tPgorTToJS2llcmFuIEJpbmdoYW0gPGtiaW5naGFtQGtlcm5l
bC5vcmc+CitTOglTdXBwb3J0ZWQKK0Y6CXNjcmlwdHMvZ2RiLworCitHRSBIRUFMVEhDQVJFIFBN
QyBBREMgRFJJVkVSCitNOglIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNvZGluYUBib290bGluLmNvbT4K
K0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2dlaGMscG1jLWFkYy55YW1sCitGOglk
cml2ZXJzL2lpby9hZGMvZ2VoYy1wbWMtYWRjLmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvaWlv
L2FkYy9nZWhjLHBtYy1hZGMuaAorCitHRU1JTkkgQ1JZUFRPIERSSVZFUgorTToJQ29yZW50aW4g
TGFiYmUgPGNsYWJiZUBiYXlsaWJyZS5jb20+CitMOglsaW51eC1jcnlwdG9Admdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2NyeXB0by9nZW1pbmkvCisKK0dFTVRFSyBG
TSBSQURJTyBSRUNFSVZFUiBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxs
Lm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglo
dHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitG
Oglkcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLWdlbXRlayoKKworR0VORFdBUkZLU1lNUworTToJ
U2FtaSBUb2x2YW5lbiA8c2FtaXRvbHZhbmVuQGdvb2dsZS5jb20+CitMOglsaW51eC1tb2R1bGVz
QHZnZXIua2VybmVsLm9yZworTDoJbGludXgta2J1aWxkQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJc2NyaXB0cy9nZW5kd2FyZmtzeW1zLworCitHRU5FUklDIEFSQ0hJVEVDVFVS
RSBUT1BPTE9HWQorTToJU3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KK0w6CWxp
bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvYmFz
ZS9hcmNoX3RvcG9sb2d5LmMKK0Y6CWluY2x1ZGUvbGludXgvYXJjaF90b3BvbG9neS5oCisKK0dF
TkVSSUMgRU5UUlkgQ09ERQorTToJVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+
CitNOglQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CitNOglBbmR5IEx1dG9t
aXJza2kgPGx1dG9Aa2VybmVsLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvdGlwL3RpcC5naXQgY29yZS9lbnRyeQorRjoJaW5jbHVkZS9saW51eC9lbnRy
eS1jb21tb24uaAorRjoJaW5jbHVkZS9saW51eC9lbnRyeS1rdm0uaAorRjoJa2VybmVsL2VudHJ5
LworCitHRU5FUklDIEdQSU8gSTJDIERSSVZFUgorTToJV29sZnJhbSBTYW5nIDx3c2ErcmVuZXNh
c0BzYW5nLWVuZ2luZWVyaW5nLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pMmMvYnVz
c2VzL2kyYy1ncGlvLmMKK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9pMmMtZ3Bpby5o
CisKK0dFTkVSSUMgR1BJTyBJMkMgTVVMVElQTEVYRVIgRFJJVkVSCitNOglQZXRlciBLb3JzZ2Fh
cmQgPHBldGVyLmtvcnNnYWFyZEBiYXJjby5jb20+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vaTJjL211eGVzL2kyYy1tdXgtZ3Bp
by5yc3QKK0Y6CWRyaXZlcnMvaTJjL211eGVzL2kyYy1tdXgtZ3Bpby5jCitGOglpbmNsdWRlL2xp
bnV4L3BsYXRmb3JtX2RhdGEvaTJjLW11eC1ncGlvLmgKKworR0VORVJJQyBHUElPIFJFU0VUIERS
SVZFUgorTToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9yZXNldC9yZXNldC1ncGlvLmMKKworR0VORVJJQyBIRExDIChXQU4p
IERSSVZFUlMKK006CUtyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+CitTOglNYWludGFp
bmVkCitXOglodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL25ldC9oZGxjLwor
RjoJZHJpdmVycy9uZXQvd2FuL2MxMDEuYworRjoJZHJpdmVycy9uZXQvd2FuL2hkNjQ1NyoKK0Y6
CWRyaXZlcnMvbmV0L3dhbi9oZGxjKgorRjoJZHJpdmVycy9uZXQvd2FuL24yLmMKK0Y6CWRyaXZl
cnMvbmV0L3dhbi9wYzMwMHRvby5jCitGOglkcml2ZXJzL25ldC93YW4vcGNpMjAwc3luLmMKK0Y6
CWRyaXZlcnMvbmV0L3dhbi93YW54bCoKKworR0VORVJJQyBJTkNMVURFL0FTTSBIRUFERVIgRklM
RVMKK006CUFybmQgQmVyZ21hbm4gPGFybmRAYXJuZGIuZGU+CitMOglsaW51eC1hcmNoQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9hcm5kL2FzbS1nZW5lcmljLmdpdAorRjoJaW5jbHVkZS9h
c20tZ2VuZXJpYy8KK0Y6CWluY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy8KKworR0VORVJJQyBQSFkg
RlJBTUVXT1JLCitNOglWaW5vZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPgorTToJS2lzaG9uIFZp
amF5IEFicmFoYW0gSSA8a2lzaG9uQGtlcm5lbC5vcmc+CitMOglsaW51eC1waHlAbGlzdHMuaW5m
cmFkZWFkLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3Jn
L3Byb2plY3QvbGludXgtcGh5L2xpc3QvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L3BoeS9saW51eC1waHkuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvcGh5LworRjoJZHJpdmVycy9waHkvCitGOglpbmNsdWRlL2R0
LWJpbmRpbmdzL3BoeS8KK0Y6CWluY2x1ZGUvbGludXgvcGh5LworCitHRU5FUklDIFBJTkNUUkwg
STJDIERFTVVMVElQTEVYRVIgRFJJVkVSCitNOglXb2xmcmFtIFNhbmcgPHdzYStyZW5lc2FzQHNh
bmctZW5naW5lZXJpbmcuY29tPgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvaTJjL2kyYy1kZW11eC1waW5jdHJsLnlhbWwKK0Y6CWRyaXZlcnMvaTJj
L211eGVzL2kyYy1kZW11eC1waW5jdHJsLmMKKworR0VORVJJQyBQTSBET01BSU5TCitNOglVbGYg
SGFuc3NvbiA8dWxmLmhhbnNzb25AbGluYXJvLm9yZz4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
cG93ZXIvcG93ZXI/ZG9tYWluKgorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20v
bGludXgva2VybmVsL2dpdC91bGZoL2xpbnV4LXBtLmdpdAorRjoJZHJpdmVycy9wbWRvbWFpbi8K
K0Y6CWluY2x1ZGUvbGludXgvcG1fZG9tYWluLmgKKworR0VORVJJQyBSQURJWCBUUkVFCitNOglL
ZW50IE92ZXJzdHJlZXQgPGtlbnQub3ZlcnN0cmVldEBsaW51eC5kZXY+CitTOglTdXBwb3J0ZWQK
K0M6CWlyYzovL2lyYy5vZnRjLm5ldC9iY2FjaGUKK0Y6CWluY2x1ZGUvbGludXgvZ2VuZXJpYy1y
YWRpeC10cmVlLmgKK0Y6CWxpYi9nZW5lcmljLXJhZGl4LXRyZWUuYworCitHRU5FUklDIFJFU0lT
VElWRSBUT1VDSFNDUkVFTiBBREMgRFJJVkVSCitNOglFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlz
dGV2QG1pY3JvY2hpcC5jb20+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vcmVzaXN0aXZlLWFkYy10b3Vj
aC5jCisKK0dFTkVSSUMgU1RSSU5HIExJQlJBUlkKK006CUtlZXMgQ29vayA8a2Vlc0BrZXJuZWwu
b3JnPgorUjoJQW5keSBTaGV2Y2hlbmtvIDxhbmR5QGtlcm5lbC5vcmc+CitMOglsaW51eC1oYXJk
ZW5pbmdAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2Vlcy9saW51eC5naXQgZm9yLW5leHQv
aGFyZGVuaW5nCitGOglpbmNsdWRlL2xpbnV4L3N0cmluZy5oCitGOglpbmNsdWRlL2xpbnV4L3N0
cmluZ19jaG9pY2VzLmgKK0Y6CWluY2x1ZGUvbGludXgvc3RyaW5nX2hlbHBlcnMuaAorRjoJbGli
L3N0cmluZy5jCitGOglsaWIvc3RyaW5nX2hlbHBlcnMuYworRjoJbGliL3Rlc3RzL3N0cmluZ19o
ZWxwZXJzX2t1bml0LmMKK0Y6CWxpYi90ZXN0cy9zdHJpbmdfa3VuaXQuYworRjoJc2NyaXB0cy9j
b2NjaW5lbGxlL2FwaS9zdHJpbmdfY2hvaWNlcy5jb2NjaQorCitHRU5FUklDIFVJTyBEUklWRVIg
Rk9SIFBDSSBERVZJQ0VTCitNOgkiTWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+
CitMOglrdm1Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvdWlvL3Vp
b19wY2lfZ2VuZXJpYy5jCisKK0dFTkVSSUMgVkRTTyBMSUJSQVJZCitNOglBbmR5IEx1dG9taXJz
a2kgPGx1dG9Aa2VybmVsLm9yZz4KK006CVRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4
LmRlPgorTToJVmluY2Vuem8gRnJhc2Npbm8gPHZpbmNlbnpvLmZyYXNjaW5vQGFybS5jb20+CitM
OglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RpcC90aXAuZ2l0IHRp
bWVycy92ZHNvCitGOglpbmNsdWRlL2FzbS1nZW5lcmljL3Zkc28vdnN5c2NhbGwuaAorRjoJaW5j
bHVkZS92ZHNvLworRjoJa2VybmVsL3RpbWUvdnN5c2NhbGwuYworRjoJbGliL3Zkc28vCitGOgl0
b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92RFNPLworCitHRU5XUUUgKElCTSBHZW5lcmljIFdvcmtx
dWV1ZSBDYXJkKQorTToJRnJhbmsgSGF2ZXJrYW1wIDxoYXZlckBsaW51eC5pYm0uY29tPgorUzoJ
U3VwcG9ydGVkCitGOglkcml2ZXJzL21pc2MvZ2Vud3FlLworCitHRVRfTUFJTlRBSU5FUiBTQ1JJ
UFQKK006CUpvZSBQZXJjaGVzIDxqb2VAcGVyY2hlcy5jb20+CitTOglNYWludGFpbmVkCitGOglz
Y3JpcHRzL2dldF9tYWludGFpbmVyLnBsCisKK0dGUzIgRklMRSBTWVNURU0KK006CUFuZHJlYXMg
R3J1ZW5iYWNoZXIgPGFncnVlbmJhQHJlZGhhdC5jb20+CitMOglnZnMyQGxpc3RzLmxpbnV4LmRl
dgorUzoJU3VwcG9ydGVkCitCOglodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5vcmcvZW50ZXJfYnVn
LmNnaT9wcm9kdWN0PUZpbGUlMjBTeXN0ZW0mY29tcG9uZW50PWdmczIKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ2ZzMi9saW51eC1nZnMyLmdp
dAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyKgorRjoJZnMvZ2ZzMi8KK0Y6CWlu
Y2x1ZGUvdWFwaS9saW51eC9nZnMyX29uZGlzay5oCisKK0dJR0FCWVRFIFdBVEVSRk9SQ0UgU0VO
U09SIERSSVZFUgorTToJQWxla3NhIFNhdmljIDxzYXZpY2FsZWtzYTgzQGdtYWlsLmNvbT4KK0w6
CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9od21vbi9naWdhYnl0ZV93YXRlcmZvcmNlLnJzdAorRjoJZHJpdmVycy9od21vbi9naWdh
Ynl0ZV93YXRlcmZvcmNlLmMKKworR0lHQUJZVEUgV01JIERSSVZFUgorTToJVGhvbWFzIFdlacOf
c2NodWggPGxpbnV4QHdlaXNzc2NodWgubmV0PgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2dpZ2Fi
eXRlLXdtaS5jCisKK0dOU1MgU1VCU1lTVEVNCitNOglKb2hhbiBIb3ZvbGQgPGpvaGFuQGtlcm5l
bC5vcmc+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L2pvaGFuL2duc3MuZ2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS90
ZXN0aW5nL3N5c2ZzLWNsYXNzLWduc3MKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9nbnNzLworRjoJZHJpdmVycy9nbnNzLworRjoJaW5jbHVkZS9saW51eC9nbnNzLmgKKwor
R083MDA3IE1QRUcgQ09ERUMKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWwtY2lzY29AeHM0YWxs
Lm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL21lZGlhL3VzYi9nbzcwMDcvCisKK0dPQ09OVFJPTEwgTU9EVUxJTkUgTU9EVUxFIFNM
T1QKK006CU1hdWQgU3BpZXJpbmdzIDxtYXVkc3BpZXJpbmdzQGdvY29udHJvbGwuY29tPgorUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nvbm5lY3Rv
ci9nb2NvbnRyb2xsLG1vZHVsaW5lLW1vZHVsZS1zbG90LnlhbWwKKworR09PRElYIFRPVUNIU0NS
RUVOCitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgtaW5w
dXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2lucHV0L3RvdWNo
c2NyZWVuL2dvb2RpeCoKKworR09PR0xFIEVUSEVSTkVUIERSSVZFUlMKK006CUplcm9lbiBkZSBC
b3JzdCA8amVyb2VuZGJAZ29vZ2xlLmNvbT4KK006CUhhcnNoaXRoYSBSYW1hbXVydGh5IDxocmFt
YW11cnRoeUBnb29nbGUuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0
L2dvb2dsZS9ndmUucnN0CitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUKKworR09PR0xF
IEZJUk1XQVJFIERSSVZFUlMKK006CVR6dW5nLUJpIFNoaWggPHR6dW5nYmlAa2VybmVsLm9yZz4K
K1I6CUJyaWFuIE5vcnJpcyA8YnJpYW5ub3JyaXNAY2hyb21pdW0ub3JnPgorUjoJSnVsaXVzIFdl
cm5lciA8andlcm5lckBjaHJvbWl1bS5vcmc+CitMOgljaHJvbWUtcGxhdGZvcm1AbGlzdHMubGlu
dXguZGV2CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L2Nocm9tZS1wbGF0Zm9ybS9saW51eC5naXQKK0Y6CWRyaXZlcnMv
ZmlybXdhcmUvZ29vZ2xlLworCitHT09HTEUgVEVOU09SIFNvQyBTVVBQT1JUCitNOglQZXRlciBH
cmlmZmluIDxwZXRlci5ncmlmZmluQGxpbmFyby5vcmc+CitSOglBbmRyw6kgRHJhc3ppayA8YW5k
cmUuZHJhc3ppa0BsaW5hcm8ub3JnPgorUjoJVHVkb3IgQW1iYXJ1cyA8dHVkb3IuYW1iYXJ1c0Bs
aW5hcm8ub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CWxpbnV4LXNhbXN1bmctc29jQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorQzoJaXJjOi8vaXJjLm9mdGMubmV0L3BpeGVsNi1rZXJu
ZWwtZGV2CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svZ29vZ2xl
LGdzMTAxLWNsb2NrLnlhbWwKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2dvb2dsZS8K
K0Y6CWRyaXZlcnMvY2xrL3NhbXN1bmcvY2xrLWdzMTAxLmMKK0Y6CWRyaXZlcnMvcGh5L3NhbXN1
bmcvcGh5LWdzMTAxLXVmcy5jCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2dvb2dsZSxn
czEwMS5oCitLOglbZ0ddb29nbGUuP1t0VF1lbnNvcgorCitHUEQgUE9DS0VUIEZBTiBEUklWRVIK
K006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitMOglwbGF0Zm9ybS1kcml2
ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9y
bS94ODYvZ3BkLXBvY2tldC1mYW4uYworCitHUElCIERSSVZFUlMKK006CURhdmUgUGVua2xlciA8
ZHBlbmtsZXJAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zdGFnaW5nL2dw
aWIvCisKK0dQSU8gQUNQSSBTVVBQT1JUCitNOglNaWthIFdlc3RlcmJlcmcgPHdlc3RlcmlAa2Vy
bmVsLm9yZz4KK006CUFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50
ZWwuY29tPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFjcGlAdmdl
ci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYW5keS9saW51eC1ncGlvLWludGVsLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9maXJtd2FyZS1ndWlkZS9hY3BpL2dwaW8tcHJvcGVydGllcy5yc3QKK0Y6CWRy
aXZlcnMvZ3Bpby9ncGlvbGliLWFjcGktKi5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpb2xpYi1hY3Bp
LmgKKworR1BJTyBBR0dSRUdBVE9SCitNOglHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0K3JlbmVz
YXNAZ2xpZGVyLmJlPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ncGlvL2dwaW8tYWdncmVnYXRvci5yc3QK
K0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWFnZ3JlZ2F0b3IuYworCitHUElPIElSIFRyYW5zbWl0dGVy
CitNOglTZWFuIFlvdW5nIDxzZWFuQG1lc3Mub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvbGVkcy9pcmxlZC9ncGlvLWlyLXR4LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcmMvZ3Bpby1p
ci10eC5jCisKK0dQSU8gTU9DS1VQIERSSVZFUgorTToJQmFtdm9yIEppYW4gWmhhbmcgPGJhbXYy
MDA1QGdtYWlsLmNvbT4KK0w6CWxpbnV4LWdwaW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1tb2NrdXAuYworRjoJdG9vbHMvdGVzdGluZy9zZWxm
dGVzdHMvZ3Bpby8KKworR1BJTyBSRUdNQVAKK006CU1pY2hhZWwgV2FsbGUgPG13YWxsZUBrZXJu
ZWwub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tcmVnbWFwLmMKK0Y6
CWluY2x1ZGUvbGludXgvZ3Bpby9yZWdtYXAuaAorSzoJKGRldm1fKT9ncGlvX3JlZ21hcF8odW4p
P3JlZ2lzdGVyCisKK0dQSU8gU0xPUFBZIExPR0lDIEFOQUxZWkVSCitNOglXb2xmcmFtIFNhbmcg
PHdzYStyZW5lc2FzQHNhbmctZW5naW5lZXJpbmcuY29tPgorUzoJU3VwcG9ydGVkCitGOglEb2N1
bWVudGF0aW9uL2Rldi10b29scy9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5yc3QKK0Y6CWRy
aXZlcnMvZ3Bpby9ncGlvLXNsb3BweS1sb2dpYy1hbmFseXplci5jCitGOgl0b29scy9ncGlvL2dw
aW8tc2xvcHB5LWxvZ2ljLWFuYWx5emVyLnNoCisKK0dQSU8gU1VCU1lTVEVNCitNOglMaW51cyBX
YWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitNOglCYXJ0b3N6IEdvbGFzemV3c2tp
IDxicmdsQGJnZGV2LnBsPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n
aXQvYnJnbC9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvZ3Bpby8KK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvLworRjoJRG9jdW1lbnRhdGlv
bi9kcml2ZXItYXBpL2dwaW8vCitGOglkcml2ZXJzL2dwaW8vCitGOglpbmNsdWRlL2R0LWJpbmRp
bmdzL2dwaW8vCitGOglpbmNsdWRlL2xpbnV4L2dwaW8uaAorRjoJaW5jbHVkZS9saW51eC9ncGlv
LworRjoJaW5jbHVkZS9saW51eC9vZl9ncGlvLmgKK0s6CShkZXZtXyk/Z3Bpb18ocmVxdWVzdHxm
cmVlfGRpcmVjdGlvbnxnZXR8c2V0KQorSzoJR1BJT0RfRkxBR1NfQklUX05PTkVYQ0xVU0lWRQor
SzoJZGV2bV9ncGlvZF91bmhpbmdlCisKK0dQSU8gVUFQSQorTToJQmFydG9zeiBHb2xhc3pld3Nr
aSA8YnJnbEBiZ2Rldi5wbD4KK1I6CUtlbnQgR2lic29uIDx3YXJ0aG9nNjE4QGdtYWlsLmNvbT4K
K0w6CWxpbnV4LWdwaW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2JyZ2wvbGludXguZ2l0
CitGOglEb2N1bWVudGF0aW9uL0FCSS9vYnNvbGV0ZS9zeXNmcy1ncGlvCitGOglEb2N1bWVudGF0
aW9uL0FCSS90ZXN0aW5nL2dwaW8tY2RldgorRjoJRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBp
L2dwaW8vCitGOglkcml2ZXJzL2dwaW8vZ3Bpb2xpYi1jZGV2LmMKK0Y6CWluY2x1ZGUvdWFwaS9s
aW51eC9ncGlvLmgKK0Y6CXRvb2xzL2dwaW8vCisKK0dSRVRIIDEwLzEwMC8xRyBFdGhlcm5ldCBN
QUMgZGV2aWNlIGRyaXZlcgorTToJQW5kcmVhcyBMYXJzc29uIDxhbmRyZWFzQGdhaXNsZXIuY29t
PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9u
ZXQvZXRoZXJuZXQvYWVyb2ZsZXgvCisKK0dSRVlCVVMgQVVESU8gUFJPVE9DT0xTIERSSVZFUlMK
K006CVZhaWJoYXYgQWdhcndhbCA8dmFpYmhhdi5zckBnbWFpbC5jb20+CitNOglNYXJrIEdyZWVy
IDxtZ3JlZXJAYW5pbWFsY3JlZWsuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zdGFn
aW5nL2dyZXlidXMvYXVkaW9fYXBicmlkZ2VhLmMKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVz
L2F1ZGlvX2FwYnJpZGdlYS5oCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9hdWRpb19jb2Rl
Yy5jCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9hdWRpb19jb2RlYy5oCitGOglkcml2ZXJz
L3N0YWdpbmcvZ3JleWJ1cy9hdWRpb19nYi5jCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9h
dWRpb19tYW5hZ2VyLmMKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL2F1ZGlvX21hbmFnZXIu
aAorRjoJZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvYXVkaW9fbWFuYWdlcl9tb2R1bGUuYworRjoJ
ZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvYXVkaW9fbWFuYWdlcl9wcml2YXRlLmgKK0Y6CWRyaXZl
cnMvc3RhZ2luZy9ncmV5YnVzL2F1ZGlvX21hbmFnZXJfc3lzZnMuYworRjoJZHJpdmVycy9zdGFn
aW5nL2dyZXlidXMvYXVkaW9fbW9kdWxlLmMKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL2F1
ZGlvX3RvcG9sb2d5LmMKKworR1JFWUJVUyBGVy9ISUQvU1BJIFBST1RPQ09MUyBEUklWRVJTCitN
OglWaXJlc2ggS3VtYXIgPHZpcmVzaGtAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRy
aXZlcnMvc3RhZ2luZy9ncmV5YnVzL2F1dGhlbnRpY2F0aW9uLmMKK0Y6CWRyaXZlcnMvc3RhZ2lu
Zy9ncmV5YnVzL2Jvb3Ryb20uYworRjoJZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvZmlybXdhcmUu
aAorRjoJZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvZnctY29yZS5jCitGOglkcml2ZXJzL3N0YWdp
bmcvZ3JleWJ1cy9mdy1kb3dubG9hZC5jCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9mdy1t
YW5hZ2VtZW50LmMKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL2dyZXlidXNfYXV0aGVudGlj
YXRpb24uaAorRjoJZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvZ3JleWJ1c19maXJtd2FyZS5oCitG
Oglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9oaWQuYworRjoJZHJpdmVycy9zdGFnaW5nL2dyZXli
dXMvaTJjLmMKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL3NwaS5jCitGOglkcml2ZXJzL3N0
YWdpbmcvZ3JleWJ1cy9zcGlsaWIuYworRjoJZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvc3BpbGli
LmgKKworR1JFWUJVUyBMT09QQkFDSyBEUklWRVIKK006CUJyeWFuIE8nRG9ub2dodWUgPHB1cmUu
bG9naWNAbmV4dXMtc29mdHdhcmUuaWU+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3N0YWdp
bmcvZ3JleWJ1cy9sb29wYmFjay5jCisKK0dSRVlCVVMgUExBVEZPUk0gRFJJVkVSUworTToJVmFp
YmhhdiBIaXJlbWF0aCA8aHZhaWJoYXYubGludXhAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAor
RjoJZHJpdmVycy9zdGFnaW5nL2dyZXlidXMvYXJjaGUtYXBiLWN0cmwuYworRjoJZHJpdmVycy9z
dGFnaW5nL2dyZXlidXMvYXJjaGUtcGxhdGZvcm0uYworRjoJZHJpdmVycy9zdGFnaW5nL2dyZXli
dXMvYXJjaGVfcGxhdGZvcm0uaAorCitHUkVZQlVTIFNESU8vR1BJTy9TUEkgUFJPVE9DT0xTIERS
SVZFUlMKK006CVJ1aSBNaWd1ZWwgU2lsdmEgPHJtZnJmc0BnbWFpbC5jb20+CitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9ncGlvLmMKK0Y6CWRyaXZlcnMvc3RhZ2lu
Zy9ncmV5YnVzL2xpZ2h0LmMKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL3Bvd2VyX3N1cHBs
eS5jCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9zZGlvLmMKK0Y6CWRyaXZlcnMvc3RhZ2lu
Zy9ncmV5YnVzL3NwaS5jCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy9zcGlsaWIuYworCitH
UkVZQlVTIEJFQUdMRVBMQVkgRFJJVkVSUworTToJQXl1c2ggU2luZ2ggPGF5dXNoZGV2ZWwxMzI1
QGdtYWlsLmNvbT4KK0w6CWdyZXlidXMtZGV2QGxpc3RzLmxpbmFyby5vcmcgKG1vZGVyYXRlZCBm
b3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL25ldC90aSxjYzEzNTJwNy55YW1sCitGOglkcml2ZXJzL2dyZXlidXMv
Z2ItYmVhZ2xlcGxheS5jCisKK0dSRVlCVVMgU1VCU1lTVEVNCitNOglKb2hhbiBIb3ZvbGQgPGpv
aGFuQGtlcm5lbC5vcmc+CitNOglBbGV4IEVsZGVyIDxlbGRlckBrZXJuZWwub3JnPgorTToJR3Jl
ZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK0w6CWdyZXlidXMt
ZGV2QGxpc3RzLmxpbmFyby5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncmV5YnVzLworRjoJZHJpdmVycy9zdGFnaW5nL2dyZXli
dXMvCitGOglpbmNsdWRlL2xpbnV4L2dyZXlidXMuaAorRjoJaW5jbHVkZS9saW51eC9ncmV5YnVz
LworCitHUkVZQlVTIFVBUlQgUFJPVE9DT0xTIERSSVZFUlMKK006CURhdmlkIExpbiA8ZHR3bGlu
QGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvc3RhZ2luZy9ncmV5YnVzL2xv
Zy5jCitGOglkcml2ZXJzL3N0YWdpbmcvZ3JleWJ1cy91YXJ0LmMKKworR1MxNjYyIFZJREVPIFNF
UklBTElaRVIKK006CUNoYXJsZXMtQW50b2luZSBDb3VyZXQgPGNoYXJsZXMtYW50b2luZS5jb3Vy
ZXRAbmV4dmlzaW9uLmZyPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21l
ZGlhL3NwaS9nczE2NjIuYworCitHU1BDQSBGSU5FUElYIFNVQkRSSVZFUgorTToJRnJhbmsgWmFn
byA8ZnJhbmtAemFnby5uZXQ+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMv
bWVkaWEvdXNiL2dzcGNhL2ZpbmVwaXguYworCitHU1BDQSBHTDg2MCBTVUJEUklWRVIKK006CU9s
aXZpZXIgTG9yaW4gPG8ubG9yaW5AbGFwb3N0ZS5uZXQ+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5n
aXQKK0Y6CWRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL2dsODYwLworCitHU1BDQSBNNTYwMiBTVUJE
UklWRVIKK006CUVyaWsgQW5kcmVuIDxlcmlrLmFuZHJlbkBnbWFpbC5jb20+CitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2
Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhL201NjAyLworCitHU1BD
QSBQQUMyMDcgU09OSVhCIFNVQkRSSVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRh
bGwubmw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworVDoJ
Z2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS91c2IvZ3Nw
Y2EvcGFjMjA3LmMKKworR1NQQ0EgU045QzIwWCBTVUJEUklWRVIKK006CUJyaWFuIEpvaG5zb24g
PGJyaWpvaG5AZ21haWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJz
L21lZGlhL3VzYi9nc3BjYS9zbjljMjB4LmMKKworR1NQQ0EgVDYxMyBTVUJEUklWRVIKK006CUxl
YW5kcm8gQ29zdGFudGlubyA8bGNvc3RhbnRpbm9AZ21haWwuY29tPgorTDoJbGludXgtbWVkaWFA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3VzYi9nc3BjYS90NjEzLmMKKworR1NQQ0EgVVNC
IFdFQkNBTSBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJ
bGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK1Q6CWdpdCBnaXQ6Ly9s
aW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvdXNiL2dzcGNhLworCitHVFAg
KEdQUlMgVHVubmVsaW5nIFByb3RvY29sKQorTToJUGFibG8gTmVpcmEgQXl1c28gPHBhYmxvQG5l
dGZpbHRlci5vcmc+CitNOglIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAZ251bW9ua3Mub3JnPgorTDoJ
b3Ntb2NvbS1uZXQtZ3Byc0BsaXN0cy5vc21vY29tLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wYWJsby9ndHAu
Z2l0CitGOglkcml2ZXJzL25ldC9ndHAuYworCitHVUlEIFBBUlRJVElPTiBUQUJMRSAoR1BUKQor
TToJRGF2aWRsb2hyIEJ1ZXNvIDxkYXZlQHN0Z29sYWJzLm5ldD4KK0w6CWxpbnV4LWVmaUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWJsb2NrL3BhcnRpdGlvbnMvZWZpLioKKwor
SEFCQU5BTEFCUyBQQ0kgRFJJVkVSCitNOglPZmlyIEJpdHRvbiA8b2JpdHRvbkBoYWJhbmEuYWk+
CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQKK0M6CWly
YzovL2lyYy5vZnRjLm5ldC9kcmktZGV2ZWwKK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vSGFi
YW5hQUkvZHJpdmVycy5hY2NlbC5oYWJhbmFsYWJzLmtlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRp
b24vQUJJL3Rlc3RpbmcvZGVidWdmcy1kcml2ZXItaGFiYW5hbGFicworRjoJRG9jdW1lbnRhdGlv
bi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaGFiYW5hbGFicworRjoJZHJpdmVycy9hY2NlbC9o
YWJhbmFsYWJzLworRjoJaW5jbHVkZS9saW51eC9oYWJhbmFsYWJzLworRjoJaW5jbHVkZS90cmFj
ZS9ldmVudHMvaGFiYW5hbGFicy5oCitGOglpbmNsdWRlL3VhcGkvZHJtL2hhYmFuYWxhYnNfYWNj
ZWwuaAorCitIQUNLUkYgTUVESUEgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29y
ay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglkcml2ZXJzL21lZGlh
L3VzYi9oYWNrcmYvCisKK0hBTkRTSEFLRSBVUENBTEwgRk9SIFRSQU5TUE9SVCBMQVlFUiBTRUNV
UklUWQorTToJQ2h1Y2sgTGV2ZXIgPGNodWNrLmxldmVyQG9yYWNsZS5jb20+CitMOglrZXJuZWwt
dGxzLWhhbmRzaGFrZUBsaXN0cy5saW51eC5kZXYKK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9oYW5kc2hha2Uu
eWFtbAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3Rscy1oYW5kc2hha2UucnN0CitGOglp
bmNsdWRlL25ldC9oYW5kc2hha2UuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvaGFuZHNoYWtl
LmgKK0Y6CW5ldC9oYW5kc2hha2UvCisKK0hBTlRSTyBWUFUgQ09ERUMgRFJJVkVSCitNOglOaWNv
bGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CitNOglCZW5qYW1p
biBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29sbGFib3JhLmNvbT4KK006CVBoaWxpcHAg
WmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9uaXguZGU+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK0w6CWxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9ueHAsaW14OG1x
LXZwdS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvcm9j
a2NoaXAscmszNTY4LXZlcHUueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL3JvY2tjaGlwLXZwdS55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zl
cmlzaWxpY29uLworCitIQVJEIERSSVZFIEFDVElWRSBQUk9URUNUSU9OIFNZU1RFTSAoSERBUFMp
IERSSVZFUgorTToJRnJhbmsgU2VpZGVsIDxmcmFua0BmLXNlaWRlbC5kZT4KK0w6CXBsYXRmb3Jt
LWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwOi8vd3d3
Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2tlcm5lbC9wZW9wbGUvZnNlaWRlbC9oZGFwcy8KK0Y6CWRy
aXZlcnMvcGxhdGZvcm0veDg2L2hkYXBzLmMKKworSEFSRFdBUkUgTU9OSVRPUklORworTToJSmVh
biBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmNvbT4KK006CUd1ZW50ZXIgUm9lY2sgPGxpbnV4QHJv
ZWNrLXVzLm5ldD4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVzoJaHR0cDovL2h3bW9uLndpa2kua2VybmVsLm9yZy8KK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3JvZWNrL2xpbnV4LXN0YWdpbmcuZ2l0
CitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLWh3bW9uCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vCitGOglEb2N1bWVudGF0aW9uL2h3
bW9uLworRjoJZHJpdmVycy9od21vbi8KK0Y6CWluY2x1ZGUvbGludXgvaHdtb24qLmgKK0Y6CWlu
Y2x1ZGUvdHJhY2UvZXZlbnRzL2h3bW9uKi5oCitLOgkoZGV2bV8pP2h3bW9uX2RldmljZV8odW4p
P3JlZ2lzdGVyKHxfd2l0aF9ncm91cHN8X3dpdGhfaW5mbykKKworSEFSRFdBUkUgUkFORE9NIE5V
TUJFUiBHRU5FUkFUT1IgQ09SRQorTToJT2xpdmlhIE1hY2thbGwgPG9saXZpYUBzZWxlbmljLmNv
bT4KK006CUhlcmJlcnQgWHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KK0w6CWxpbnV4
LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBmaXhlcworRjoJRG9jdW1lbnRhdGlvbi9h
ZG1pbi1ndWlkZS9od19yYW5kb20ucnN0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3Mvcm5nLworRjoJZHJpdmVycy9jaGFyL2h3X3JhbmRvbS8KK0Y6CWluY2x1ZGUvbGludXgv
aHdfcmFuZG9tLmgKKworSEFSRFdBUkUgU1BJTkxPQ0sgQ09SRQorTToJQmpvcm4gQW5kZXJzc29u
IDxhbmRlcnNzb25Aa2VybmVsLm9yZz4KK1I6CUJhb2xpbiBXYW5nIDxiYW9saW4ud2FuZzdAZ21h
aWwuY29tPgorTDoJbGludXgtcmVtb3RlcHJvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
YW5kZXJzc29uL3JlbW90ZXByb2MuZ2l0IGh3c3BpbmxvY2stbmV4dAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bG9jay8KK0Y6CURvY3VtZW50YXRpb24vbG9ja2luZy9o
d3NwaW5sb2NrLnJzdAorRjoJZHJpdmVycy9od3NwaW5sb2NrLworRjoJaW5jbHVkZS9saW51eC9o
d3NwaW5sb2NrLmgKKworSEFSRFdBUkUgVFJBQ0lORyBGQUNJTElUSUVTCitNOglBbGV4YW5kZXIg
U2hpc2hraW4gPGFsZXhhbmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL2h3dHJhY2luZy8KKworSEFSTU9OWSBTT1VORCBEUklWRVIKK0w6CWxp
bnV4LXBhcmlzY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CXNvdW5kL3Bhcmlz
Yy9oYXJtb255LioKKworSERQVlIgVVNCIFZJREVPIEVOQ09ERVIgRFJJVkVSCitNOglIYW5zIFZl
cmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJT2RkIEZpeGVzCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGlu
dXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3VzYi9oZHB2ci8KKworSEVXTEVU
VCBQQUNLQVJEIEVOVEVSUFJJU0UgSUxPIENISUYgRFJJVkVSCitNOglLZW5nLVl1IExpbiA8a2Vu
Zy15dS5saW5AaHBlLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9taXNjL2hwaWxvLltj
aF0KKworSEVXTEVUVCBQQUNLQVJEIEVOVEVSUFJJU0UgSUxPIE5NSSBXQVRDSERPRyBEUklWRVIK
K006CUplcnJ5IEhvZW1hbm4gPGplcnJ5LmhvZW1hbm5AaHBlLmNvbT4KK1M6CVN1cHBvcnRlZAor
RjoJRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC5yc3QKK0Y6CWRyaXZlcnMvd2F0Y2hkb2cv
aHB3ZHQuYworCitIRVdMRVRULVBBQ0tBUkQgU01BUlQgQVJSQVkgUkFJRCBEUklWRVIgKGhwc2Ep
CitNOglEb24gQnJhY2UgPGRvbi5icmFjZUBtaWNyb2NoaXAuY29tPgorTDoJc3RvcmFnZWRldkBt
aWNyb2NoaXAuY29tCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL3Njc2kvaHBzYS5yc3QKK0Y6CWRyaXZlcnMvc2NzaS9ocHNhKi5b
Y2hdCitGOglpbmNsdWRlL2xpbnV4L2NjaXNzKi5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvY2Np
c3MqLmgKKworSEZJMSBEUklWRVIKK006CURlbm5pcyBEYWxlc3NhbmRybyA8ZGVubmlzLmRhbGVz
c2FuZHJvQGNvcm5lbGlzbmV0d29ya3MuY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pbmZpbmliYW5kL2h3L2hmaTEKKworSEZTIEZJ
TEVTWVNURU0KK006CVZpYWNoZXNsYXYgRHViZXlrbyA8c2xhdmFAZHViZXlrby5jb20+CitNOglK
b2huIFBhdWwgQWRyaWFuIEdsYXViaXR6IDxnbGF1Yml0ekBwaHlzaWsuZnUtYmVybGluLmRlPgor
TToJWWFuZ3RhbyBMaSA8ZnJhbmsubGlAdml2by5jb20+CitMOglsaW51eC1mc2RldmVsQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9o
ZnMucnN0CitGOglmcy9oZnMvCisKK0hGU1BMVVMgRklMRVNZU1RFTQorTToJVmlhY2hlc2xhdiBE
dWJleWtvIDxzbGF2YUBkdWJleWtvLmNvbT4KK006CUpvaG4gUGF1bCBBZHJpYW4gR2xhdWJpdHog
PGdsYXViaXR6QHBoeXNpay5mdS1iZXJsaW4uZGU+CitNOglZYW5ndGFvIExpIDxmcmFuay5saUB2
aXZvLmNvbT4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2hmc3BsdXMucnN0CitGOglmcy9oZnNwbHVz
LworCitIR0EgRlJBTUVCVUZGRVIgRFJJVkVSCitNOglGZXJlbmMgQmFrb255aSA8ZmVyb0BkcmFt
YS5vYnVkYS5rYW5kby5odT4KK0w6CWxpbnV4LW52aWRpYUBsaXN0cy5zdXJmc291dGguY29tCitT
OglNYWludGFpbmVkCitXOglodHRwOi8vZHJhbWEub2J1ZGEua2FuZG8uaHUvfmZlcm8vY2dpLWJp
bi9oZ2FmYi5zaHRtbAorRjoJZHJpdmVycy92aWRlby9mYmRldi9oZ2FmYi5jCisKK0hJQkVSTkFU
SU9OIChha2EgU29mdHdhcmUgU3VzcGVuZCwgYWthIHN3c3VzcCkKK006CSJSYWZhZWwgSi4gV3lz
b2NraSIgPHJhZmFlbEBrZXJuZWwub3JnPgorTToJUGF2ZWwgTWFjaGVrIDxwYXZlbEBrZXJuZWwu
b3JnPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0I6CWh0dHBz
Oi8vYnVnemlsbGEua2VybmVsLm9yZworRjoJYXJjaC8qL2luY2x1ZGUvYXNtL3N1c3BlbmQqLmgK
K0Y6CWFyY2gveDg2L3Bvd2VyLworRjoJZHJpdmVycy9iYXNlL3Bvd2VyLworRjoJaW5jbHVkZS9s
aW51eC9mcmVlemVyLmgKK0Y6CWluY2x1ZGUvbGludXgvcG0uaAorRjoJaW5jbHVkZS9saW51eC9z
dXNwZW5kLmgKK0Y6CWtlcm5lbC9wb3dlci8KKworSElEIENPUkUgTEFZRVIKK006CUppcmkgS29z
aW5hIDxqaWtvc0BrZXJuZWwub3JnPgorTToJQmVuamFtaW4gVGlzc29pcmVzIDxiZW50aXNzQGtl
cm5lbC5vcmc+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvaGlk
L2hpZC5naXQKK0Y6CURvY3VtZW50YXRpb24vaGlkLworRjoJZHJpdmVycy9oaWQvCitGOglpbmNs
dWRlL2xpbnV4L2hpZCoKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9oaWQqCitGOglzYW1wbGVzL2hp
ZC8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC8KKworSElEIExPR0lURUNIIERSSVZF
UlMKK1I6CUZpbGlwZSBMYcOtbnMgPGxhaW5zQHJpc2V1cC5uZXQ+CitMOglsaW51eC1pbnB1dEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaGlkL2hpZC1sb2dpdGVj
aC0qCisKK0hJRCBOVklESUEgU0hJRUxEIERSSVZFUgorTToJUmFodWwgUmFtZXNoYmFidSA8cnJh
bWVzaGJhYnVAbnZpZGlhLmNvbT4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9oaWQvaGlkLW52aWRpYS1zaGllbGQuYworCitISUQgUEhP
RU5JWCBSQyBGTElHSFQgQ09OVFJPTExFUgorTToJTWFyY3VzIEZvbGtlc3NvbiA8bWFyY3VzLmZv
bGtlc3NvbkBnbWFpbC5jb20+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvaGlkL2hpZC1weHJjLmMKKworSElEIFBMQVlTVEFUSU9OIERS
SVZFUgorTToJUm9kZXJpY2sgQ29sZW5icmFuZGVyIDxyb2Rlcmljay5jb2xlbmJyYW5kZXJAc29u
eS5jb20+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
ZHJpdmVycy9oaWQvaGlkLXBsYXlzdGF0aW9uLmMKKworSElEIFNFTlNPUiBIVUIgRFJJVkVSUwor
TToJSmlyaSBLb3NpbmEgPGppa29zQGtlcm5lbC5vcmc+CitNOglKb25hdGhhbiBDYW1lcm9uIDxq
aWMyM0BrZXJuZWwub3JnPgorTToJU3Jpbml2YXMgUGFuZHJ1dmFkYSA8c3Jpbml2YXMucGFuZHJ1
dmFkYUBsaW51eC5pbnRlbC5jb20+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK0w6
CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vaGlkL2hpZC1zZW5zb3IqCitGOglkcml2ZXJzL2hpZC9oaWQtc2Vuc29yLSoKK0Y6CWRyaXZl
cnMvaWlvLyovaGlkLSoKK0Y6CWluY2x1ZGUvbGludXgvaGlkLXNlbnNvci0qCisKK0hJRCBVTklW
RVJTQUwgUElERkYgRFJJVkVSCitNOglUb21hc3ogUGFrdcWCYSA8dG9tYXN6LnBha3VsYS5vZmlj
amFsbnlAZ21haWwuY29tPgorTToJT2xlZyBNYWthcmVua28gPG9sZWdAbWFrYXJlbmsub29vPgor
TDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitCOglodHRwczov
L2dpdGh1Yi5jb20vSmFjS2VUVXMvdW5pdmVyc2FsLXBpZGZmL2lzc3VlcworRjoJZHJpdmVycy9o
aWQvaGlkLXVuaXZlcnNhbC1waWRmZi5jCisKK0hJRCBWUkMtMiBDQVIgQ09OVFJPTExFUiBEUklW
RVIKK006CU1hcmN1cyBGb2xrZXNzb24gPG1hcmN1cy5mb2xrZXNzb25AZ21haWwuY29tPgorTDoJ
bGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2hp
ZC9oaWQtdnJjMi5jCisKK0hJRCBXQUNPTSBEUklWRVIKK006CVBpbmcgQ2hlbmcgPHBpbmcuY2hl
bmdAd2Fjb20uY29tPgorTToJSmFzb24gR2VyZWNrZSAgPGphc29uLmdlcmVja2VAd2Fjb20uY29t
PgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL2hpZC93YWNvbS5oCitGOglkcml2ZXJzL2hpZC93YWNvbV8qCisKK0hJRCsrIExPR0lURUNI
IERSSVZFUlMKK1I6CUZpbGlwZSBMYcOtbnMgPGxhaW5zQHJpc2V1cC5uZXQ+CitSOglCYXN0aWVu
IE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaGlkL2hpZC1sb2dpdGVjaC1oaWRwcC5jCisK
K0hJR0gtUkVTT0xVVElPTiBUSU1FUlMsIFRJTUVSIFdIRUVMLCBDTE9DS0VWRU5UUworTToJQW5u
YS1NYXJpYSBCZWhuc2VuIDxhbm5hLW1hcmlhQGxpbnV0cm9uaXguZGU+CitNOglGcmVkZXJpYyBX
ZWlzYmVja2VyIDxmcmVkZXJpY0BrZXJuZWwub3JnPgorTToJVGhvbWFzIEdsZWl4bmVyIDx0Z2x4
QGxpbnV0cm9uaXguZGU+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L3RpcC90aXAuZ2l0IHRpbWVycy9jb3JlCitGOglEb2N1bWVudGF0aW9uL3RpbWVycy8KK0Y6
CWluY2x1ZGUvbGludXgvY2xvY2tjaGlwcy5oCitGOglpbmNsdWRlL2xpbnV4L2RlbGF5LmgKK0Y6
CWluY2x1ZGUvbGludXgvaHJ0aW1lci5oCitGOglpbmNsdWRlL2xpbnV4L3RpbWVyLmgKK0Y6CWtl
cm5lbC90aW1lL2Nsb2NrZXZlbnRzLmMKK0Y6CWtlcm5lbC90aW1lL2hydGltZXIuYworRjoJa2Vy
bmVsL3RpbWUvc2xlZXBfdGltZW91dC5jCitGOglrZXJuZWwvdGltZS90aW1lci5jCitGOglrZXJu
ZWwvdGltZS90aW1lcl9saXN0LmMKK0Y6CWtlcm5lbC90aW1lL3RpbWVyX21pZ3JhdGlvbi4qCitG
Ogl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90aW1lcnMvCisKK0hJR0gtUkVTT0xVVElPTiBUSU1F
UlMgW1JVU1RdCitNOglBbmRyZWFzIEhpbmRib3JnIDxhLmhpbmRib3JnQGtlcm5lbC5vcmc+CitS
OglCb3F1biBGZW5nIDxib3F1bi5mZW5nQGdtYWlsLmNvbT4KK1I6CUZyZWRlcmljIFdlaXNiZWNr
ZXIgPGZyZWRlcmljQGtlcm5lbC5vcmc+CitSOglMeXVkZSBQYXVsIDxseXVkZUByZWRoYXQuY29t
PgorUjoJVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CitSOglBbm5hLU1hcmlh
IEJlaG5zZW4gPGFubmEtbWFyaWFAbGludXRyb25peC5kZT4KK0w6CXJ1c3QtZm9yLWxpbnV4QHZn
ZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL3J1c3QtZm9yLWxpbnV4LmNv
bQorQjoJaHR0cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4L2xpbnV4L2lzc3VlcworVDoJ
Z2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9SdXN0LWZvci1MaW51eC9saW51eC5naXQgaHJ0aW1lci1u
ZXh0CitGOglydXN0L2tlcm5lbC90aW1lL2hydGltZXIucnMKK0Y6CXJ1c3Qva2VybmVsL3RpbWUv
aHJ0aW1lci8KKworSElHSC1TUEVFRCBTQ0MgRFJJVkVSIEZPUiBBWC4yNQorTDoJbGludXgtaGFt
c0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9uZXQvaGFtcmFkaW8vc2Nj
LmMKKworSElHSFBPSU5UIFJPQ0tFVFJBSUQgM3h4eCBSQUlEIERSSVZFUgorTToJSGlnaFBvaW50
IExpbnV4IFRlYW0gPGxpbnV4QGhpZ2hwb2ludC10ZWNoLmNvbT4KK1M6CVN1cHBvcnRlZAorVzoJ
aHR0cDovL3d3dy5oaWdocG9pbnQtdGVjaC5jb20KK0Y6CURvY3VtZW50YXRpb24vc2NzaS9ocHRp
b3AucnN0CitGOglkcml2ZXJzL3Njc2kvaHB0aW9wLmMKKworSElLRVk5NjAgT05CT0FSRCBVU0Ig
R1BJTyBIVUIgRFJJVkVSCitNOglKb2huIFN0dWx0eiA8anN0dWx0ekBnb29nbGUuY29tPgorTDoJ
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9t
aXNjL2hpc2lfaGlrZXlfdXNiLmMKKworSElNQVggSFg4MzExMkIgVE9VQ0hTQ1JFRU4gU1VQUE9S
VAorTToJSm9iIE5vb3JtYW4gPGpvYkBub29ybWFuLmluZm8+CitMOglsaW51eC1pbnB1dEB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9pbnB1dC90b3VjaHNjcmVlbi9oaW1heCxoeDgzMTEyYi55YW1sCitGOglkcml2ZXJz
L2lucHV0L3RvdWNoc2NyZWVuL2hpbWF4X2h4ODMxMTJiLmMKKworSElQUEkKK006CUplcyBTb3Jl
bnNlbiA8amVzQHRyYWluZWQtbW9ua2V5Lm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
bmV0L2hpcHBpLworRjoJaW5jbHVkZS9saW51eC9oaXBwaWRldmljZS5oCitGOglpbmNsdWRlL3Vh
cGkvbGludXgvaWZfaGlwcGkuaAorRjoJbmV0LzgwMi9oaXBwaS5jCisKK0hJUlNDSE1BTk4gSEVM
TENSRUVLIEVUSEVSTkVUIFNXSVRDSCBEUklWRVIKK006CUt1cnQgS2FuemVuYmFjaCA8a3VydEBs
aW51dHJvbml4LmRlPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9kc2EvaGlyc2NobWFubixo
ZWxsY3JlZWsueWFtbAorRjoJZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vKgorRjoJaW5jbHVk
ZS9saW51eC9wbGF0Zm9ybV9kYXRhL2hpcnNjaG1hbm4taGVsbGNyZWVrLmgKK0Y6CW5ldC9kc2Ev
dGFnX2hlbGxjcmVlay5jCisKK0hJU0lMSUNPTiBETUEgRFJJVkVSCitNOglaaG91IFdhbmcgPHdh
bmd6aG91MUBoaXNpbGljb24uY29tPgorTToJSmllIEhhaSA8aGFpamllMUBodWF3ZWkuY29tPgor
TDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9k
bWEvaGlzaV9kbWEuYworCitISVNJTElDT04gR1BJTyBEUklWRVIKK006CUpheSBGYW5nIDxmLmZh
bmdqaWFuQGh1YXdlaS5jb20+CitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vaGlzaWxp
Y29uLGFzY2VuZDkxMC1ncGlvLnlhbWwKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWhpc2kuYworCitI
SVNJTElDT04gSElHSCBQRVJGT1JNQU5DRSBSU0EgRU5HSU5FIERSSVZFUiAoSFBSRSkKK006CVpo
aXFpIFNvbmcgPHNvbmd6aGlxaTFAaHVhd2VpLmNvbT4KK006CUxvbmdmYW5nIExpdSA8bGl1bG9u
Z2ZhbmdAaHVhd2VpLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1oaXNpLWhwcmUK
K0Y6CWRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9ocHJlL2hwcmUuaAorRjoJZHJpdmVycy9jcnlw
dG8vaGlzaWxpY29uL2hwcmUvaHByZV9jcnlwdG8uYworRjoJZHJpdmVycy9jcnlwdG8vaGlzaWxp
Y29uL2hwcmUvaHByZV9tYWluLmMKKworSElTSUxJQ09OIEhOUzMgUE1VIERSSVZFUgorTToJSmlq
aWUgU2hhbyA8c2hhb2ppamllQGh1YXdlaS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50
YXRpb24vYWRtaW4tZ3VpZGUvcGVyZi9obnMzLXBtdS5yc3QKK0Y6CWRyaXZlcnMvcGVyZi9oaXNp
bGljb24vaG5zM19wbXUuYworCitISVNJTElDT04gSTJDIENPTlRST0xMRVIgRFJJVkVSCitNOglZ
aWNvbmcgWWFuZyA8eWFuZ3lpY29uZ0BoaXNpbGljb24uY29tPgorTDoJbGludXgtaTJjQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly93d3cuaGlzaWxpY29uLmNvbQor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9oaXNpbGljb24sYXNjZW5k
OTEwLWkyYy55YW1sCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWhpc2kuYworCitISVNJTElD
T04gS1VOUEVORyBTT0MgSENDUyBEUklWRVIKK006CUh1aXNvbmcgTGkgPGxpaHVpc29uZ0BodWF3
ZWkuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNm
cy1kZXZpY2VzLXBsYXRmb3JtLWt1bnBlbmdfaGNjcworRjoJZHJpdmVycy9zb2MvaGlzaWxpY29u
L2t1bnBlbmdfaGNjcy5jCitGOglkcml2ZXJzL3NvYy9oaXNpbGljb24va3VucGVuZ19oY2NzLmgK
KworSElTSUxJQ09OIExQQyBCVVMgRFJJVkVSCitNOglKYXkgRmFuZyA8Zi5mYW5namlhbkBodWF3
ZWkuY29tPgorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5oaXNpbGljb24uY29tCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2hpc2lsaWNvbi9sb3ctcGluLWNv
dW50LnlhbWwKK0Y6CWRyaXZlcnMvYnVzL2hpc2lfbHBjLmMKKworSElTSUxJQ09OIE5FVFdPUksg
U1VCU1lTVEVNIDMgRFJJVkVSIChITlMzKQorTToJSmlhbiBTaGVuIDxzaGVuamlhbjE1QGh1YXdl
aS5jb20+CitNOglTYWxpbCBNZWh0YSA8c2FsaWwubWVodGFAaHVhd2VpLmNvbT4KK006CUppamll
IFNoYW8gPHNoYW9qaWppZUBodWF3ZWkuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5oaXNpbGljb24uY29tCitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC9oaXNpbGljb24vaG5zMy8KKworSElTSUxJQ09OIE5FVFdPUksgSElCTUNHRSBE
UklWRVIKK006CUppamllIFNoYW8gPHNoYW9qaWppZUBodWF3ZWkuY29tPgorTDoJbmV0ZGV2QHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlz
aWxpY29uL2hpYm1jZ2UvCisKK0hJU0lMSUNPTiBORVRXT1JLIFNVQlNZU1RFTSBEUklWRVIKK006
CUppYW4gU2hlbiA8c2hlbmppYW4xNUBodWF3ZWkuY29tPgorTToJU2FsaWwgTWVodGEgPHNhbGls
Lm1laHRhQGh1YXdlaS5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitXOglodHRwOi8vd3d3Lmhpc2lsaWNvbi5jb20KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9uZXQvaGlzaWxpY29uKi50eHQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0
L2hpc2lsaWNvbi8KKworSElTSUxJQ09OIFBNVSBEUklWRVIKK006CVlpY29uZyBZYW5nIDx5YW5n
eWljb25nQGhpc2lsaWNvbi5jb20+CitNOglKb25hdGhhbiBDYW1lcm9uIDxqb25hdGhhbi5jYW1l
cm9uQGh1YXdlaS5jb20+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93d3cuaGlzaWxpY29uLmNv
bQorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wZXJmL2hpc2ktcGNpZS1wbXUucnN0CitG
OglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3BlcmYvaGlzaS1wbXUucnN0CitGOglkcml2ZXJz
L3BlcmYvaGlzaWxpY29uCisKK0hJU0lMSUNPTiBQVFQgRFJJVkVSCitNOglZaWNvbmcgWWFuZyA8
eWFuZ3lpY29uZ0BoaXNpbGljb24uY29tPgorTToJSm9uYXRoYW4gQ2FtZXJvbiA8am9uYXRoYW4u
Y2FtZXJvbkBodWF3ZWkuY29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZXZlbnRf
c291cmNlLWRldmljZXMtaGlzaV9wdHQKK0Y6CURvY3VtZW50YXRpb24vdHJhY2UvaGlzaS1wdHQu
cnN0CitGOglkcml2ZXJzL2h3dHJhY2luZy9wdHQvCitGOgl0b29scy9wZXJmL2FyY2gvYXJtNjQv
dXRpbC9oaXNpLXB0dC5jCitGOgl0b29scy9wZXJmL3V0aWwvaGlzaS1wdHQqCitGOgl0b29scy9w
ZXJmL3V0aWwvaGlzaS1wdHQtZGVjb2Rlci8qCisKK0hJU0lMSUNPTiBRTSBEUklWRVIKK006CVdl
aWxpIFFpYW4gPHFpYW53ZWlsaUBodWF3ZWkuY29tPgorTToJWmhvdSBXYW5nIDx3YW5nemhvdTFA
aGlzaWxpY29uLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9LY29uZmlnCitGOglkcml2ZXJzL2Ny
eXB0by9oaXNpbGljb24vTWFrZWZpbGUKK0Y6CWRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9xbS5j
CitGOglkcml2ZXJzL2NyeXB0by9oaXNpbGljb24vc2dsLmMKK0Y6CWluY2x1ZGUvbGludXgvaGlz
aV9hY2NfcW0uaAorCitISVNJTElDT04gUk9DRSBEUklWRVIKK006CUNoZW5nY2hhbmcgVGFuZyA8
dGFuZ2NoZW5nY2hhbmdAaHVhd2VpLmNvbT4KK006CUp1bnhpYW4gSHVhbmcgPGh1YW5nanVueGlh
bjZAaGlzaWxpY29uLmNvbT4KK0w6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5maW5pYmFuZC9o
aXNpbGljb24taG5zLXJvY2UudHh0CitGOglkcml2ZXJzL2luZmluaWJhbmQvaHcvaG5zLworCitI
SVNJTElDT04gU0FTIENvbnRyb2xsZXIKK006CVlpaGFuZyBMaSA8bGl5aWhhbmc5QGh1YXdlaS5j
b20+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93d3cuaGlzaWxpY29uLmNvbQorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Njc2kvaGlzaWxpY29uLXNhcy50eHQKK0Y6CWRy
aXZlcnMvc2NzaS9oaXNpX3Nhcy8KKworSElTSUxJQ09OIFNFQ1VSSVRZIEVOR0lORSBWMiBEUklW
RVIgKFNFQzIpCitNOglMb25nZmFuZyBMaXUgPGxpdWxvbmdmYW5nQGh1YXdlaS5jb20+CitMOgls
aW51eC1jcnlwdG9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL0FCSS90ZXN0aW5nL2RlYnVnZnMtaGlzaS1zZWMKK0Y6CWRyaXZlcnMvY3J5cHRvL2hpc2ls
aWNvbi9zZWMyL3NlYy5oCitGOglkcml2ZXJzL2NyeXB0by9oaXNpbGljb24vc2VjMi9zZWNfY3J5
cHRvLmMKK0Y6CWRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi9zZWMyL3NlY19jcnlwdG8uaAorRjoJ
ZHJpdmVycy9jcnlwdG8vaGlzaWxpY29uL3NlYzIvc2VjX21haW4uYworCitISVNJTElDT04gU1BJ
IENvbnRyb2xsZXIgRFJJVkVSIEZPUiBLVU5QRU5HIFNPQ1MKK006CUpheSBGYW5nIDxmLmZhbmdq
aWFuQGh1YXdlaS5jb20+CitMOglsaW51eC1zcGlAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitXOglodHRwOi8vd3d3Lmhpc2lsaWNvbi5jb20KK0Y6CWRyaXZlcnMvc3BpL3NwaS1oaXNp
LWt1bnBlbmcuYworCitISVNJTElDT04gU1BNSSBDT05UUk9MTEVSIERSSVZFUiBGT1IgSElLRVkg
OTcwCitNOglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWIraHVhd2VpQGtlcm5lbC5vcmc+
CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BtaS9oaXNpbGljb24saGlzaS1zcG1pLWNv
bnRyb2xsZXIueWFtbAorRjoJZHJpdmVycy9zcG1pL2hpc2ktc3BtaS1jb250cm9sbGVyLmMKKwor
SElTSUxJQ09OIFNQTUkgUE1JQyBEUklWRVIgRk9SIEhJS0VZIDY0MjF2NjAwCitNOglNYXVybyBD
YXJ2YWxobyBDaGVoYWIgPG1jaGVoYWIraHVhd2VpQGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJu
ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvbWZkL2hpc2lsaWNvbixoaTY0MjEtc3BtaS1wbWljLnlhbWwKK0Y6CWRy
aXZlcnMvbWZkL2hpNjQyMS1zcG1pLXBtaWMuYworCitISVNJTElDT04gVFJVRSBSQU5ET00gTlVN
QkVSIEdFTkVSQVRPUiBWMiBTVVBQT1JUCitNOglXZWlsaSBRaWFuIDxxaWFud2VpbGlAaHVhd2Vp
LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvY3J5cHRvL2hpc2lsaWNvbi90cm5nL3Ry
bmcuYworCitISVNJTElDT04gVjNYWCBTUEkgTk9SIEZMQVNIIENvbnRyb2xsZXIgRHJpdmVyCitN
OglKYXkgRmFuZyA8Zi5mYW5namlhbkBodWF3ZWkuY29tPgorUzoJTWFpbnRhaW5lZAorVzoJaHR0
cDovL3d3dy5oaXNpbGljb24uY29tCitGOglkcml2ZXJzL3NwaS9zcGktaGlzaS1zZmMtdjN4eC5j
CisKK0hJU0lMSUNPTiBaSVAgQ29udHJvbGxlciBEUklWRVIKK006CVlhbmcgU2hlbiA8c2hlbnlh
bmczOUBodWF3ZWkuY29tPgorTToJWmhvdSBXYW5nIDx3YW5nemhvdTFAaGlzaWxpY29uLmNvbT4K
K0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1oaXNpLXppcAorRjoJZHJpdmVycy9jcnlwdG8v
aGlzaWxpY29uL3ppcC8KKworSE1NIC0gSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudAor
TToJSsOpcsO0bWUgR2xpc3NlIDxqZ2xpc3NlQHJlZGhhdC5jb20+CitMOglsaW51eC1tbUBrdmFj
ay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbW0vaG1tLnJzdAorRjoJaW5j
bHVkZS9saW51eC9obW0qCitGOglsaWIvdGVzdF9obW0qCitGOgltbS9obW0qCitGOgl0b29scy90
ZXN0aW5nL3NlbGZ0ZXN0cy9tbS8qaG1tKgorCitIT05FWVdFTEwgSFNDMDMwUEEgUFJFU1NVUkUg
U0VOU09SIFNFUklFUyBJSU8gRFJJVkVSCitNOglQZXRyZSBSb2RhbiA8cGV0cmUucm9kYW5Ac3Vi
ZGltZW5zaW9uLnJvPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9wcmVzc3VyZS9ob25l
eXdlbGwsaHNjMDMwcGEueWFtbAorRjoJZHJpdmVycy9paW8vcHJlc3N1cmUvaHNjMDMwcGEqCisK
K0hPTkVZV0VMTCBNUFJMUzAwMjVQQSBQUkVTU1VSRSBTRU5TT1IgU0VSSUVTIElJTyBEUklWRVIK
K006CUFuZHJlYXMgS2xpbmdlciA8YWtAaXQta2xpbmdlci5kZT4KK006CVBldHJlIFJvZGFuIDxw
ZXRyZS5yb2RhbkBzdWJkaW1lbnNpb24ucm8+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlv
L3ByZXNzdXJlL2hvbmV5d2VsbCxtcHJsczAwMjVwYS55YW1sCitGOglkcml2ZXJzL2lpby9wcmVz
c3VyZS9tcHJsczAwMjVwYSoKKworSFAgQklPU0NGRyBEUklWRVIKK006CUpvcmdlIExvcGV6IDxq
b3JnZS5sb3BlejJAaHAuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2hwL2hwLWJpb3NjZmcv
CisKK0hQIENPTVBBUSBUQzExMDAgVEFCTEVUIFdNSSBFWFRSQVMgRFJJVkVSCitMOglwbGF0Zm9y
bS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL3BsYXRm
b3JtL3g4Ni9ocC90YzExMDAtd21pLmMKKworSFAgV01JIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVS
CitNOglKYW1lcyBTZW8gPGphbWVzQGVxdWl2LnRlY2g+CitMOglsaW51eC1od21vbkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vaHAtd21pLXNl
bnNvcnMucnN0CitGOglkcml2ZXJzL2h3bW9uL2hwLXdtaS1zZW5zb3JzLmMKKworSFBFVDoJSGln
aCBQcmVjaXNpb24gRXZlbnQgVGltZXJzIGRyaXZlcgorTToJQ2xlbWVucyBMYWRpc2NoIDxjbGVt
ZW5zQGxhZGlzY2guZGU+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3RpbWVycy9o
cGV0LnJzdAorRjoJZHJpdmVycy9jaGFyL2hwZXQuYworRjoJaW5jbHVkZS9saW51eC9ocGV0LmgK
K0Y6CWluY2x1ZGUvdWFwaS9saW51eC9ocGV0LmgKKworSFBFVDoJeDg2CitTOglPcnBoYW4KK0Y6
CWFyY2gveDg2L2luY2x1ZGUvYXNtL2hwZXQuaAorRjoJYXJjaC94ODYva2VybmVsL2hwZXQuYwor
CitIUEZTIEZJTEVTWVNURU0KK006CU1pa3VsYXMgUGF0b2NrYSA8bWlrdWxhc0BhcnRheC5rYXJs
aW4ubWZmLmN1bmkuY3o+CitTOglNYWludGFpbmVkCitXOglodHRwOi8vYXJ0YXgua2FybGluLm1m
Zi5jdW5pLmN6L35taWt1bGFzL3Z5cGxvZHkvaHBmcy9pbmRleC1lLmNnaQorRjoJZnMvaHBmcy8K
KworSFMzMDAxIEhhcmR3YXJlIFRlbXBlcmF0dXJlIGFuZCBIdW1pZGl0eSBTZW5zb3IKK006CUFu
ZHJlIFdlcm5lciA8YW5kcmUud2VybmVyQHN5c3RlYy1lbGVjdHJvbmljLmNvbT4KK0w6CWxpbnV4
LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9od21vbi9o
czMwMDEuYworCitIU0kgU1VCU1lTVEVNCitNOglTZWJhc3RpYW4gUmVpY2hlbCA8c3JlQGtlcm5l
bC5vcmc+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L3NyZS9saW51eC1oc2kuZ2l0CitGOglEb2N1bWVudGF0aW9uL0FC
SS90ZXN0aW5nL3N5c2ZzLWJ1cy1oc2kKK0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9oc2ku
cnN0CitGOglkcml2ZXJzL2hzaS8KK0Y6CWluY2x1ZGUvbGludXgvaHNpLworRjoJaW5jbHVkZS91
YXBpL2xpbnV4L2hzaS8KKworSFNPIDNHIE1PREVNIERSSVZFUgorTDoJbGludXgtdXNiQHZnZXIu
a2VybmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL25ldC91c2IvaHNvLmMKKworSFNSIE5F
VFdPUksgUFJPVE9DT0wKK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJ
bmV0L2hzci8KKworSFQxNkszMyBMRUQgQ09OVFJPTExFUiBEUklWRVIKK006CVJvYmluIHZhbiBk
ZXIgR3JhY2h0IDxyb2JpbkBwcm90b25pYy5ubD4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hdXhkaXNwbGF5L2hvbHRlayxodDE2azMzLnlhbWwK
K0Y6CWRyaXZlcnMvYXV4ZGlzcGxheS9odDE2azMzLmMKKworSFRDUEVOIFRPVUNIU0NSRUVOIERS
SVZFUgorTToJUGF1IE9saXZhIEZvcmEgPHBvZkBlc2xhY2sub3JnPgorTDoJbGludXgtaW5wdXRA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2lucHV0L3RvdWNoc2Ny
ZWVuL2h0Y3Blbi5jCisKK0hURSBTVUJTWVNURU0KK006CURpcGVuIFBhdGVsIDxkaXBlbnBAbnZp
ZGlhLmNvbT4KK0w6CXRpbWVzdGFtcEBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK1E6
CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC90aW1lc3RhbXAvbGlzdC8KK1Q6
CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcGF0ZWxk
aXBlbjE5ODQvbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
dGltZXN0YW1wLworRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2h0ZS8KK0Y6CWRyaXZlcnMv
aHRlLworRjoJaW5jbHVkZS9saW51eC9odGUuaAorCitIVFMyMjEgVEVNUEVSQVRVUkUtSFVNSURJ
VFkgSUlPIERSSVZFUgorTToJTG9yZW56byBCaWFuY29uaSA8bG9yZW56b0BrZXJuZWwub3JnPgor
TDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3
dy5zdC5jb20vCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2h1bWlk
aXR5L3N0LGh0czIyMS55YW1sCitGOglkcml2ZXJzL2lpby9odW1pZGl0eS9odHMyMjEqCisKK0hU
VTMxIEhhcmR3YXJlIFRlbXBlcmF0dXJlIGFuZCBIdW1pZGl0eSBTZW5zb3IKK006CUFuZHJlaSBM
YWxhZXYgPGFuZHJleS5sYWxhZXZAZ21haWwuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2h3bW9uL2h0dTMxLmMKKworSFVBV0VJ
IEVUSEVSTkVUIERSSVZFUgorTToJQ2FpIEh1b3FpbmcgPGNhaS5odW9xaW5nQGxpbnV4LmRldj4K
K0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9odWF3ZWkvaGluaWMucnN0CitG
Oglkcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMvCisKK0hVQVdFSSAzUkQgR0VOIEVU
SEVSTkVUIERSSVZFUgorTToJRmFuIEdvbmcgPGdvbmdmYW4xQGh1YXdlaS5jb20+CitMOgluZXRk
ZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL25ldHdv
cmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy5yc3QKK0Y6CWRyaXZl
cnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvCisKK0hVQVdFSSBNQVRFQk9PSyBFIEdPIEVN
QkVEREVEIENPTlRST0xMRVIgRFJJVkVSCitNOglQZW5neXUgTHVvIDxtaXRsdGxhdGx0bEBnbWFp
bC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvcGxhdGZvcm0vaHVhd2VpLGdhb2t1bi1lYy55YW1sCitGOglkcml2ZXJzL3BsYXRmb3JtL2Fy
bTY0L2h1YXdlaS1nYW9rdW4tZWMuYworRjoJZHJpdmVycy9wb3dlci9zdXBwbHkvaHVhd2VpLWdh
b2t1bi1iYXR0ZXJ5LmMKK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9odWF3ZWktZ2Fv
a3VuLWVjLmgKKworSFVHRVRMQiBTVUJTWVNURU0KK006CU11Y2h1biBTb25nIDxtdWNodW4uc29u
Z0BsaW51eC5kZXY+CitSOglPc2NhciBTYWx2YWRvciA8b3NhbHZhZG9yQHN1c2UuZGU+CitMOgls
aW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rl
c3Rpbmcvc3lzZnMta2VybmVsLW1tLWh1Z2VwYWdlcworRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1n
dWlkZS9tbS9odWdldGxicGFnZS5yc3QKK0Y6CURvY3VtZW50YXRpb24vbW0vaHVnZXRsYmZzX3Jl
c2Vydi5yc3QKK0Y6CURvY3VtZW50YXRpb24vbW0vdm1lbW1hcF9kZWR1cC5yc3QKK0Y6CWZzL2h1
Z2V0bGJmcy8KK0Y6CWluY2x1ZGUvbGludXgvaHVnZXRsYi5oCitGOglpbmNsdWRlL3RyYWNlL2V2
ZW50cy9odWdldGxiZnMuaAorRjoJbW0vaHVnZXRsYi5jCitGOgltbS9odWdldGxiX2NtYS5jCitG
OgltbS9odWdldGxiX2NtYS5oCitGOgltbS9odWdldGxiX3ZtZW1tYXAuYworRjoJbW0vaHVnZXRs
Yl92bWVtbWFwLmgKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC90ZXN0X2h1Z2V0
bGJfbWVtY2cuYworCitIVkEgU1QgTUVESUEgRFJJVkVSCitNOglKZWFuLUNocmlzdG9waGUgVHJv
dGluIDxqZWFuLWNocmlzdG9waGUudHJvdGluQGZvc3Muc3QuY29tPgorTDoJbGludXgtbWVkaWFA
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6
CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZv
cm0vc3Qvc3RpL2h2YQorCitIV1BPSVNPTiBNRU1PUlkgRkFJTFVSRSBIQU5ETElORworTToJTWlh
b2hlIExpbiA8bGlubWlhb2hlQGh1YXdlaS5jb20+CitSOglOYW95YSBIb3JpZ3VjaGkgPG5hby5o
b3JpZ3VjaGlAZ21haWwuY29tPgorTDoJbGludXgtbW1Aa3ZhY2sub3JnCitTOglNYWludGFpbmVk
CitGOgltbS9od3BvaXNvbi1pbmplY3QuYworRjoJbW0vbWVtb3J5LWZhaWx1cmUuYworCitIWUNP
TiBIWTQ2WFggVE9VQ0hTQ1JFRU4gU1VQUE9SVAorTToJR2l1bGlvIEJlbmV0dGkgPGdpdWxpby5i
ZW5ldHRpQGJlbmV0dGllbmdpbmVlcmluZy5jb20+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9pbnB1dC90b3VjaHNjcmVlbi9oeWNvbixoeTQ2eHgueWFtbAorRjoJZHJpdmVycy9pbnB1dC90
b3VjaHNjcmVlbi9oeWNvbi1oeTQ2eHguYworCitIWUdPTiBQUk9DRVNTT1IgU1VQUE9SVAorTToJ
UHUgV2VuIDxwdXdlbkBoeWdvbi5jbj4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CWFyY2gveDg2L2tlcm5lbC9jcHUvaHlnb24uYworCitIWU5JWCBI
STU1NiBTRU5TT1IgRFJJVkVSCitNOglTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0BsaW51eC5p
bnRlbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJj
L2hpNTU2LmMKKworSFlOSVggSEk4NDYgU0VOU09SIERSSVZFUgorTToJTWFydGluIEtlcHBsaW5n
ZXIgPG1hcnRpbi5rZXBwbGluZ2VyQHB1cmkuc20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2hpODQ2LmMKKworSFlO
SVggSEk4NDcgU0VOU09SIERSSVZFUgorTToJU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAbGlu
dXguaW50ZWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL21lZGlhL2kyYy9oaTg0Ny5jCisKK0h5cGVyLVYvQXp1cmUgQ09SRSBB
TkQgRFJJVkVSUworTToJIksuIFkuIFNyaW5pdmFzYW4iIDxreXNAbWljcm9zb2Z0LmNvbT4KK006
CUhhaXlhbmcgWmhhbmcgPGhhaXlhbmd6QG1pY3Jvc29mdC5jb20+CitNOglXZWkgTGl1IDx3ZWku
bGl1QGtlcm5lbC5vcmc+CitNOglEZXh1YW4gQ3VpIDxkZWN1aUBtaWNyb3NvZnQuY29tPgorTDoJ
bGludXgtaHlwZXJ2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2h5cGVydi9saW51eC5naXQK
K0Y6CURvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtdm1idXMKK0Y6CURvY3VtZW50
YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1oeXBlcnYKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9idXMvbWljcm9zb2Z0LHZtYnVzLnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9taWNyb3NvZnQvbmV0dnNjLnJzdAor
RjoJRG9jdW1lbnRhdGlvbi92aXJ0L2h5cGVydgorRjoJYXJjaC9hcm02NC9oeXBlcnYKK0Y6CWFy
Y2gvYXJtNjQvaW5jbHVkZS9hc20vbXNoeXBlcnYuaAorRjoJYXJjaC94ODYvaHlwZXJ2CitGOglh
cmNoL3g4Ni9pbmNsdWRlL2FzbS9tc2h5cGVydi5oCitGOglhcmNoL3g4Ni9pbmNsdWRlL2FzbS90
cmFjZS9oeXBlcnYuaAorRjoJYXJjaC94ODYva2VybmVsL2NwdS9tc2h5cGVydi5jCitGOglkcml2
ZXJzL2Nsb2Nrc291cmNlL2h5cGVydl90aW1lci5jCitGOglkcml2ZXJzL2hpZC9oaWQtaHlwZXJ2
LmMKK0Y6CWRyaXZlcnMvaHYvCitGOglkcml2ZXJzL2lucHV0L3NlcmlvL2h5cGVydi1rZXlib2Fy
ZC5jCitGOglkcml2ZXJzL2lvbW11L2h5cGVydi1pb21tdS5jCitGOglkcml2ZXJzL25ldC9ldGhl
cm5ldC9taWNyb3NvZnQvCitGOglkcml2ZXJzL25ldC9oeXBlcnYvCitGOglkcml2ZXJzL3BjaS9j
b250cm9sbGVyL3BjaS1oeXBlcnYtaW50Zi5jCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj
aS1oeXBlcnYuYworRjoJZHJpdmVycy9zY3NpL3N0b3J2c2NfZHJ2LmMKK0Y6CWRyaXZlcnMvdWlv
L3Vpb19odl9nZW5lcmljLmMKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvaHlwZXJ2X2ZiLmMKK0Y6
CWluY2x1ZGUvYXNtLWdlbmVyaWMvbXNoeXBlcnYuaAorRjoJaW5jbHVkZS9jbG9ja3NvdXJjZS9o
eXBlcnZfdGltZXIuaAorRjoJaW5jbHVkZS9oeXBlcnYvaHZnZGsuaAorRjoJaW5jbHVkZS9oeXBl
cnYvaHZnZGtfZXh0LmgKK0Y6CWluY2x1ZGUvaHlwZXJ2L2h2Z2RrX21pbmkuaAorRjoJaW5jbHVk
ZS9oeXBlcnYvaHZoZGsuaAorRjoJaW5jbHVkZS9oeXBlcnYvaHZoZGtfbWluaS5oCitGOglpbmNs
dWRlL2xpbnV4L2h5cGVydi5oCitGOglpbmNsdWRlL25ldC9tYW5hCitGOglpbmNsdWRlL3VhcGkv
bGludXgvaHlwZXJ2LmgKK0Y6CW5ldC92bXdfdnNvY2svaHlwZXJ2X3RyYW5zcG9ydC5jCitGOgl0
b29scy9odi8KKworSFlQRVJCVVMgU1VQUE9SVAorTToJVmlnbmVzaCBSYWdoYXZlbmRyYSA8dmln
bmVzaHJAdGkuY29tPgorUjoJVHVkb3IgQW1iYXJ1cyA8dHVkb3IuYW1iYXJ1c0BsaW5hcm8ub3Jn
PgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorUToJaHR0
cDovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtbXRkL2xpc3QvCitDOglpcmM6
Ly9pcmMub2Z0Yy5uZXQvbXRkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L210ZC9saW51eC5naXQgY2ZpL25leHQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvdGksYW02NTQtaGJtYy55YW1sCitGOglkcml2ZXJzL210
ZC9oeXBlcmJ1cy8KK0Y6CWluY2x1ZGUvbGludXgvbXRkL2h5cGVyYnVzLmgKKworSFlQRVJWSVNP
UiBWSVJUVUFMIENPTlNPTEUgRFJJVkVSCitMOglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9y
ZworUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL3R0eS9odmMvCisKK0hVTkcgVEFTSyBERVRFQ1RP
UgorTToJQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK1I6CUxhbmNl
IFlhbmcgPGxhbmNlLnlhbmdAbGludXguZGV2PgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC9odW5nX3Rhc2suaAorRjoJa2Vy
bmVsL2h1bmdfdGFzay5jCisKK0kyQyBBQ1BJIFNVUFBPUlQKK006CU1pa2EgV2VzdGVyYmVyZyA8
d2VzdGVyaUBrZXJuZWwub3JnPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworTDoJbGlu
dXgtYWNwaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaTJjL2ky
Yy1jb3JlLWFjcGkuYworCitJMkMgQUREUkVTUyBUUkFOU0xBVE9SIChBVFIpCitNOglUb21pIFZh
bGtlaW5lbiA8dG9taS52YWxrZWluZW5AaWRlYXNvbmJvYXJkLmNvbT4KK1I6CUx1Y2EgQ2VyZXNv
bGkgPGx1Y2EuY2VyZXNvbGlAYm9vdGxpbi5jb20+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2kyYy9pMmMtYXRyLmMKK0Y6CWluY2x1ZGUv
bGludXgvaTJjLWF0ci5oCisKK0kyQyBDT05UUk9MTEVSIERSSVZFUiBGT1IgTlZJRElBIEdQVQor
TToJQWpheSBHdXB0YSA8YWpheWdAbnZpZGlhLmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtbnZp
ZGlhLWdwdS5yc3QKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbnZpZGlhLWdwdS5jCisKK0ky
QyBNVVhFUworTToJUGV0ZXIgUm9zaW4gPHBlZGFAYXhlbnRpYS5zZT4KK0w6CWxpbnV4LWkyY0B2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9pMmMvaTJjLWFyYioKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9pMmMvaTJjLWdhdGUqCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aTJjL2kyYy1tdXgqCitGOglEb2N1bWVudGF0aW9uL2kyYy9pMmMtdG9wb2xvZ3kucnN0CitGOglE
b2N1bWVudGF0aW9uL2kyYy9tdXhlcy8KK0Y6CWRyaXZlcnMvaTJjL2kyYy1tdXguYworRjoJZHJp
dmVycy9pMmMvbXV4ZXMvCitGOglpbmNsdWRlL2xpbnV4L2kyYy1tdXguaAorCitJMkMgTVY2NFhY
WCBNQVJWRUxMIEFORCBBTExXSU5ORVIgRFJJVkVSCitNOglHcmVnb3J5IENMRU1FTlQgPGdyZWdv
cnkuY2xlbWVudEBib290bGluLmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvbWFy
dmVsbCxtdjY0eHh4LWkyYy55YW1sCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLW12NjR4eHgu
YworCitJMkMgT0YgQ09NUE9ORU5UIFBST0JFUgorTToJQ2hlbi1ZdSBUc2FpIDx3ZW5zdEBjaHJv
bWl1bS5vcmc+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnCitMOglkZXZpY2V0cmVlQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9pMmMvaTJjLWNvcmUtb2Yt
cHJvYmVyLmMKK0Y6CWluY2x1ZGUvbGludXgvaTJjLW9mLXByb2Jlci5oCisKK0kyQyBPVkVSIFBB
UkFMTEVMIFBPUlQKK006CUplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5jb20+CitMOglsaW51
eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2ky
Yy9idXNzZXMvaTJjLXBhcnBvcnQucnN0CitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLXBhcnBv
cnQuYworCitJMkMgU1VCU1lTVEVNCitNOglXb2xmcmFtIFNhbmcgPHdzYStyZW5lc2FzQHNhbmct
ZW5naW5lZXJpbmcuY29tPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVzoJaHR0cHM6Ly9pMmMud2lraS5rZXJuZWwub3JnLworUToJaHR0cHM6Ly9wYXRjaHdv
cmsub3psYWJzLm9yZy9wcm9qZWN0L2xpbnV4LWkyYy9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC93c2EvbGludXguZ2l0CitGOglEb2N1
bWVudGF0aW9uL2kyYy8KK0Y6CWRyaXZlcnMvaTJjLyoKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mv
aTJjL2kyYy5oCitGOglpbmNsdWRlL2xpbnV4L2kyYy1kZXYuaAorRjoJaW5jbHVkZS9saW51eC9p
MmMtc21idXMuaAorRjoJaW5jbHVkZS9saW51eC9pMmMuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4
L2kyYy0qLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9pMmMuaAorCitJMkMgU1VCU1lTVEVNIEhP
U1QgRFJJVkVSUworTToJQW5kaSBTaHl0aSA8YW5kaS5zaHl0aUBrZXJuZWwub3JnPgorTDoJbGlu
dXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9pMmMud2lr
aS5rZXJuZWwub3JnLworUToJaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wcm9qZWN0L2xp
bnV4LWkyYy9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgv
a2VybmVsL2dpdC9hbmRpLnNoeXRpL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2kyYy8KK0Y6CWRyaXZlcnMvaTJjL2FsZ29zLworRjoJZHJpdmVycy9pMmMv
YnVzc2VzLworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9pMmMvCisKK0kyQy1UQU9TLUVWTSBEUklW
RVIKK006CUplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5jb20+CitMOglsaW51eC1pMmNAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2kyYy9idXNzZXMv
aTJjLXRhb3MtZXZtLnJzdAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10YW9zLWV2bS5jCisK
K0kyQy1USU5ZLVVTQiBEUklWRVIKK006CVRpbGwgSGFyYmF1bSA8dGlsbEBoYXJiYXVtLm9yZz4K
K0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93
d3cuaGFyYmF1bS5vcmcvdGlsbC9pMmNfdGlueV91c2IKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9p
MmMtdGlueS11c2IuYworCitJMkMvU01CVVMgQ09OVFJPTExFUiBEUklWRVJTIEZPUiBQQworTToJ
SmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNlLmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYWxp
MTUzNS5yc3QKK0Y6CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYWxpMTU2My5yc3QKK0Y6
CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtYWxpMTV4My5yc3QKK0Y6CURvY3VtZW50YXRp
b24vaTJjL2J1c3Nlcy9pMmMtYW1kNzU2LnJzdAorRjoJRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2Vz
L2kyYy1hbWQ4MTExLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1pODAxLnJz
dAorRjoJRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1uZm9yY2UyLnJzdAorRjoJRG9jdW1l
bnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1waWl4NC5yc3QKK0Y6CURvY3VtZW50YXRpb24vaTJjL2J1
c3Nlcy9pMmMtc2lzNTU5NS5yc3QKK0Y6CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lz
NjMwLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1zaXM5NngucnN0CitGOglE
b2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXZpYS5yc3QKK0Y6CURvY3VtZW50YXRpb24vaTJj
L2J1c3Nlcy9pMmMtdmlhcHJvLnJzdAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNTM1
LmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTU2My5jCitGOglkcml2ZXJzL2kyYy9i
dXNzZXMvaTJjLWFsaTE1eDMuYworRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbWQ3NTYuYwor
RjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbWQ4MTExLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nl
cy9pMmMtaTgwMS5jCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYworRjoJZHJpdmVy
cy9pMmMvYnVzc2VzL2kyYy1uZm9yY2UyLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcGlp
eDQuKgorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zaXM1NTk1LmMKK0Y6CWRyaXZlcnMvaTJj
L2J1c3Nlcy9pMmMtc2lzNjMwLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4LmMK
K0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdmlhLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9p
MmMtdmlhcHJvLmMKKworSTJDL1NNQlVTIElOVEVMIENIVCBXSElTS0VZIENPVkUgUE1JQyBEUklW
RVIKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitMOglsaW51eC1pMmNA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJj
LWNodC13Yy5jCisKK0kyQy9TTUJVUyBJU01UIERSSVZFUgorTToJTmVpbCBIb3JtYW4gPG5ob3Jt
YW5AdHV4ZHJpdmVyLmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK0Y6CURvY3Vt
ZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtaXNtdC5yc3QKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9p
MmMtaXNtdC5jCisKK0kyQy9TTUJVUyBaSEFPWElOIERSSVZFUgorTToJSGFucyBIdSA8aGFuc2h1
QHpoYW94aW4uY29tPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVzoJaHR0cHM6Ly93d3cuemhhb3hpbi5jb20KK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMt
dmlhaTJjLWNvbW1vbi5jCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLXZpYWkyYy16aGFveGlu
LmMKKworSTJDL1NNQlVTIFNUVUIgRFJJVkVSCitNOglKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1
c2UuY29tPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9pMmMvaTJjLXN0dWIuYworCitJM0MgRFJJVkVSIEZPUiBBU1BFRUQgQVNUMjYwMAor
TToJSmVyZW15IEtlcnIgPGprQGNvZGVjb25zdHJ1Y3QuY29tLmF1PgorUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kzYy9hc3BlZWQsYXN0MjYwMC1p
M2MueWFtbAorRjoJZHJpdmVycy9pM2MvbWFzdGVyL2FzdDI2MDAtaTNjLW1hc3Rlci5jCisKK0kz
QyBEUklWRVIgRk9SIENBREVOQ0UgSTNDIE1BU1RFUiBJUAorTToJUHJ6ZW15c8WCYXcgR2FqIDxw
Z2FqQGNhZGVuY2UuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2kzYy9jZG5zLGkzYy1tYXN0ZXIueWFtbAorRjoJZHJpdmVycy9pM2MvbWFz
dGVyL2kzYy1tYXN0ZXItY2Rucy5jCisKK0kzQyBEUklWRVIgRk9SIFNZTk9QU1lTIERFU0lHTldB
UkUKK1M6CU9ycGhhbgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kzYy9z
bnBzLGR3LWkzYy1tYXN0ZXIueWFtbAorRjoJZHJpdmVycy9pM2MvbWFzdGVyL2R3KgorCitJM0Mg
U1VCU1lTVEVNCitNOglBbGV4YW5kcmUgQmVsbG9uaSA8YWxleGFuZHJlLmJlbGxvbmlAYm9vdGxp
bi5jb20+CitSOglGcmFuayBMaSA8RnJhbmsuTGlAbnhwLmNvbT4KK0w6CWxpbnV4LWkzY0BsaXN0
cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50
YWluZWQKK0M6CWlyYzovL2NoYXQuZnJlZW5vZGUubmV0L2xpbnV4LWkzYworVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9pM2MvbGludXguZ2l0CitG
OglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1pM2MKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9pM2MvCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkv
aTNjCitGOglkcml2ZXJzL2kzYy8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvaTNjLworRjoJaW5j
bHVkZS9saW51eC9pM2MvCisKK0lCTSBPcGVyYXRpb24gUGFuZWwgSW5wdXQgRHJpdmVyCitNOglF
ZGRpZSBKYW1lcyA8ZWFqYW1lc0BsaW51eC5pYm0uY29tPgorTDoJbGludXgtaW5wdXRAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvaW5wdXQvaWJtLG9wLXBhbmVsLnlhbWwKK0Y6CWRyaXZlcnMvaW5wdXQvbWlzYy9pYm0t
cGFuZWwuYworCitJQk0gUG93ZXIgODQyIGNvbXByZXNzaW9uIGFjY2VsZXJhdG9yCitNOglIYXJl
biBNeW5lbmkgPGhhcmVuQHVzLmlibS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWNyeXB0by84NDIu
YworRjoJZHJpdmVycy9jcnlwdG8vbngvS2NvbmZpZworRjoJZHJpdmVycy9jcnlwdG8vbngvTWFr
ZWZpbGUKK0Y6CWRyaXZlcnMvY3J5cHRvL254L254LTg0MioKK0Y6CWluY2x1ZGUvbGludXgvc3c4
NDIuaAorRjoJbGliLzg0Mi8KKworSUJNIFBvd2VyIGluLU5lc3QgQ3J5cHRvIEFjY2VsZXJhdGlv
bgorTToJQnJlbm8gTGVpdMOjbyA8bGVpdGFvQGRlYmlhbi5vcmc+CitNOglOYXluYSBKYWluIDxu
YXluYUBsaW51eC5pYm0uY29tPgorTToJUGF1bG8gRmxhYmlhbm8gU21vcmlnbyA8cGZzbW9yaWdv
QGdtYWlsLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy9jcnlwdG8vbngvS2NvbmZpZworRjoJZHJpdmVycy9jcnlwdG8vbngvTWFr
ZWZpbGUKK0Y6CWRyaXZlcnMvY3J5cHRvL254L254LWFlcyoKK0Y6CWRyaXZlcnMvY3J5cHRvL254
L254LXNoYSoKK0Y6CWRyaXZlcnMvY3J5cHRvL254L254LioKK0Y6CWRyaXZlcnMvY3J5cHRvL254
L254X2NzYmNwYi5oCitGOglkcml2ZXJzL2NyeXB0by9ueC9ueF9kZWJ1Z2ZzLmMKKworSUJNIFBv
d2VyIElPIERMUEFSIERyaXZlciBmb3IgUlBBLWNvbXBsaWFudCBQUEM2NCBwbGF0Zm9ybQorTToJ
VHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgorTDoJbGludXgtcGNpQHZnZXIu
a2VybmVsLm9yZworTDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFkbHBhcioKKworSUJNIFBvd2VyIExpbnV4IFJB
SUQgYWRhcHRlcgorTToJQnJpYW4gS2luZyA8YnJraW5nQHVzLmlibS5jb20+CitTOglTdXBwb3J0
ZWQKK0Y6CWRyaXZlcnMvc2NzaS9pcHIuKgorCitJQk0gUG93ZXIgUENJIEhvdHBsdWcgRHJpdmVy
IGZvciBSUEEtY29tcGxpYW50IFBQQzY0IHBsYXRmb3JtCitNOglUeXJlbCBEYXR3eWxlciA8dHly
ZWxkQGxpbnV4LmlibS5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51
eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3BjaS9o
b3RwbHVnL3JwYXBocCoKKworSUJNIFBvd2VyIFNSSU9WIFZpcnR1YWwgTklDIERldmljZSBEcml2
ZXIKK006CUhhcmVuIE15bmVuaSA8aGFyZW5AbGludXguaWJtLmNvbT4KK006CVJpY2sgTGluZHNs
ZXkgPHJpY2tsaW5kQGxpbnV4LmlibS5jb20+CitSOglOaWNrIENoaWxkIDxubmFjMTIzQGxpbnV4
LmlibS5jb20+CitSOglUaG9tYXMgRmFsY29uIDx0bGZhbGNvbkBsaW51eC5pYm0uY29tPgorTDoJ
bmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRo
ZXJuZXQvaWJtL2libXZuaWMuKgorCitJQk0gUG93ZXIgVkZJTyBTdXBwb3J0CitNOglUaW1vdGh5
IFBlYXJzb24gPHRwZWFyc29uQHJhcHRvcmVuZ2luZWVyaW5nLmNvbT4KK1M6CVN1cHBvcnRlZAor
RjoJZHJpdmVycy92ZmlvL3ZmaW9faW9tbXVfc3BhcHJfdGNlLmMKKworSUJNIFBvd2VyIFZpcnR1
YWwgRXRoZXJuZXQgRGV2aWNlIERyaXZlcgorTToJTmljayBDaGlsZCA8bm5hYzEyM0BsaW51eC5p
Ym0uY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9uZXQvZXRoZXJuZXQvaWJtL2libXZldGguKgorCitJQk0gUG93ZXIgVmlydHVhbCBGQyBE
ZXZpY2UgRHJpdmVycworTToJVHlyZWwgRGF0d3lsZXIgPHR5cmVsZEBsaW51eC5pYm0uY29tPgor
TDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9z
Y3NpL2libXZzY3NpL2libXZmYyoKKworSUJNIFBvd2VyIFZpcnR1YWwgTWFuYWdlbWVudCBDaGFu
bmVsIERyaXZlcgorTToJQnJhZCBXYXJydW0gPGJ3YXJydW1AbGludXguaWJtLmNvbT4KK006CVJp
dHUgQWdhcndhbCA8cml0dWFnYXJAbGludXguaWJtLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJZHJp
dmVycy9taXNjL2libXZtYy4qCisKK0lCTSBQb3dlciBWaXJ0dWFsIFNDU0kgRGV2aWNlIERyaXZl
cnMKK006CVR5cmVsIERhdHd5bGVyIDx0eXJlbGRAbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LXNj
c2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvc2NzaS9pYm12c2Nz
aS9pYm12c2NzaSoKK0Y6CWluY2x1ZGUvc2NzaS92aW9zcnAuaAorCitJQk0gUG93ZXIgVmlydHVh
bCBTQ1NJIERldmljZSBUYXJnZXQgRHJpdmVyCitNOglUeXJlbCBEYXR3eWxlciA8dHlyZWxkQGxp
bnV4LmlibS5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworTDoJdGFyZ2V0LWRl
dmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Njc2kvaWJtdnNj
c2lfdGd0LworCitJQk0gUG93ZXIgVk1YIENyeXB0b2dyYXBoaWMgaW5zdHJ1Y3Rpb25zCitNOglC
cmVubyBMZWl0w6NvIDxsZWl0YW9AZGViaWFuLm9yZz4KK006CU5heW5hIEphaW4gPG5heW5hQGxp
bnV4LmlibS5jb20+CitNOglQYXVsbyBGbGFiaWFubyBTbW9yaWdvIDxwZnNtb3JpZ29AZ21haWwu
Y29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglh
cmNoL3Bvd2VycGMvY3J5cHRvL0tjb25maWcKK0Y6CWFyY2gvcG93ZXJwYy9jcnlwdG8vTWFrZWZp
bGUKK0Y6CWFyY2gvcG93ZXJwYy9jcnlwdG8vYWVzLmMKK0Y6CWFyY2gvcG93ZXJwYy9jcnlwdG8v
YWVzX2NiYy5jCitGOglhcmNoL3Bvd2VycGMvY3J5cHRvL2Flc19jdHIuYworRjoJYXJjaC9wb3dl
cnBjL2NyeXB0by9hZXNfeHRzLmMKK0Y6CWFyY2gvcG93ZXJwYy9jcnlwdG8vYWVzcDgtcHBjLioK
K0Y6CWFyY2gvcG93ZXJwYy9jcnlwdG8vZ2hhc2guYworRjoJYXJjaC9wb3dlcnBjL2NyeXB0by9n
aGFzaHA4LXBwYy5wbAorRjoJYXJjaC9wb3dlcnBjL2NyeXB0by9wcGMteGxhdGUucGwKK0Y6CWFy
Y2gvcG93ZXJwYy9jcnlwdG8vdm14LmMKKworSUJNIFNlcnZlUkFJRCBSQUlEIERSSVZFUgorUzoJ
T3JwaGFuCitGOglkcml2ZXJzL3Njc2kvaXBzLioKKworSUNIIExQQyBBTkQgR1BJTyBEUklWRVIK
K006CVBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+CitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL2dwaW8vZ3Bpby1pY2guYworRjoJZHJpdmVycy9tZmQvbHBjX2ljaC5jCisKK0lDWSBJ
MkMgRFJJVkVSCitNOglNYXggU3RhdWR0IDxtYXhAZW5wYXMub3JnPgorTDoJbGludXgtaTJjQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1p
Y3kuYworCitJREVBUEFEIExBUFRPUCBFWFRSQVMgRFJJVkVSCitNOglJa2UgUGFuaGMgPGlrZXBh
bmhjQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitXOglodHRwOi8vbGF1bmNocGFkLm5ldC9pZGVhcGFkLWxhcHRvcAorRjoJ
ZHJpdmVycy9wbGF0Zm9ybS94ODYvaWRlYXBhZC1sYXB0b3AuYworCitJREVBUEFEIExBUFRPUCBT
TElERUJBUiBEUklWRVIKK006CUFuZHJleSBNb2lzZWV2IDxvMmcub3JnLnJ1QGdtYWlsLmNvbT4K
K0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6
Ly9naXRodWIuY29tL28yZ2VudW0vaWRlYXBhZC1zbGlkZWJhcgorRjoJZHJpdmVycy9pbnB1dC9t
aXNjL2lkZWFwYWRfc2xpZGViYXIuYworCitJRFQgVmVyc2FDbG9jayA1IENMT0NLIERSSVZFUgor
TToJTHVjYSBDZXJlc29saSA8bHVjYUBsdWNhY2VyZXNvbGkubmV0PgorUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL2lkdCx2ZXJzYWNsb2Nr
NS55YW1sCitGOglkcml2ZXJzL2Nsay9jbGstdmVyc2FjbG9jazUuYworCitJRUVFIDgwMi4xNS40
IFNVQlNZU1RFTQorTToJQWxleGFuZGVyIEFyaW5nIDxhbGV4LmFyaW5nQGdtYWlsLmNvbT4KK006
CVN0ZWZhbiBTY2htaWR0IDxzdGVmYW5AZGF0ZW5mcmVpaGFmZW4ub3JnPgorTToJTWlxdWVsIFJh
eW5hbCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4KK0w6CWxpbnV4LXdwYW5Admdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4LXdwYW4ub3JnLworUToJaHR0
cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LXdwYW4vbGlzdC8KK1Q6CWdp
dCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvd3Bhbi93cGFu
LmdpdAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp
dC93cGFuL3dwYW4tbmV4dC5naXQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZWVlODAy
MTU0LnJzdAorRjoJZHJpdmVycy9uZXQvaWVlZTgwMjE1NC8KK0Y6CWluY2x1ZGUvbGludXgvaWVl
ZTgwMjE1NC5oCitGOglpbmNsdWRlL2xpbnV4L25sODAyMTU0LmgKK0Y6CWluY2x1ZGUvbmV0L2Fm
X2llZWU4MDIxNTQuaAorRjoJaW5jbHVkZS9uZXQvY2ZnODAyMTU0LmgKK0Y6CWluY2x1ZGUvbmV0
L2llZWU4MDIxNTRfbmV0ZGV2LmgKK0Y6CWluY2x1ZGUvbmV0L21hYzgwMjE1NC5oCitGOglpbmNs
dWRlL25ldC9ubDgwMjE1NC5oCitGOgluZXQvaWVlZTgwMjE1NC8KK0Y6CW5ldC9tYWM4MDIxNTQv
CisKK0ludGVsIFZJUlRJTyBEQVRBIFBBVEggQUNDRUxFUkFUT1IKK006CVpodSBMaW5nc2hhbiA8
bGluZ3NoYW4uemh1QGtlcm5lbC5vcmc+CitMOgl2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC5k
ZXYKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy92ZHBhL2lmY3ZmLworCitJRkUgUFJPVE9DT0wK
K006CVlvdGFtIEdpZ2kgPHlvdGFtLmdpQGdtYWlsLmNvbT4KK006CUphbWFsIEhhZGkgU2FsaW0g
PGpoc0Btb2phdGF0dS5jb20+CitGOglpbmNsdWRlL25ldC9pZmUuaAorRjoJaW5jbHVkZS91YXBp
L2xpbnV4L2lmZS5oCitGOgluZXQvaWZlCisKK0lHT1JQTFVHLVVTQiBJUiBSRUNFSVZFUgorTToJ
U2VhbiBZb3VuZyA8c2VhbkBtZXNzLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tZWRpYS9yYy9pZ29ycGx1Z3VzYi5jCisKK0lH
VUFOQVdPUktTIFVTQiBJUiBUUkFOU0NFSVZFUgorTToJU2VhbiBZb3VuZyA8c2VhbkBtZXNzLm9y
Zz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9tZWRpYS9yYy9pZ3VhbmFpci5jCisKK0lJTyBCQUNLRU5EIEZSQU1FV09SSworTToJTnVu
byBTYSA8bnVuby5zYUBhbmFsb2cuY29tPgorUjoJT2xpdmllciBNb3lzYW4gPG9saXZpZXIubW95
c2FuQGZvc3Muc3QuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9kZWJ1Z2ZzLWlpby1iYWNrZW5kCitG
Oglkcml2ZXJzL2lpby9pbmR1c3RyaWFsaW8tYmFja2VuZC5jCitGOglpbmNsdWRlL2xpbnV4L2lp
by9iYWNrZW5kLmgKKworSUlPIERJR0lUQUwgUE9URU5USU9NRVRFUiBEQUMKK006CVBldGVyIFJv
c2luIDxwZWRhQGF4ZW50aWEuc2U+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tZGFj
LWRwb3QtZGFjCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2RhYy9k
cG90LWRhYy55YW1sCitGOglkcml2ZXJzL2lpby9kYWMvZHBvdC1kYWMuYworCitJSU8gRU5WRUxP
UEUgREVURUNUT1IKK006CVBldGVyIFJvc2luIDxwZWRhQGF4ZW50aWEuc2U+CitMOglsaW51eC1p
aW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90
ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tYWRjLWVudmVsb3BlLWRldGVjdG9yCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9lbnZlbG9wZS1kZXRlY3Rvci55YW1sCitG
Oglkcml2ZXJzL2lpby9hZGMvZW52ZWxvcGUtZGV0ZWN0b3IuYworCitJSU8gTElHSFQgU0VOU09S
IEdBSU4tVElNRS1TQ0FMRSBIRUxQRVJTCitNOglNYXR0aSBWYWl0dGluZW4gPG1henppZXNhY2Nv
dW50QGdtYWlsLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CWRyaXZlcnMvaWlvL2luZHVzdHJpYWxpby1ndHMtaGVscGVyLmMKK0Y6CWluY2x1ZGUv
bGludXgvaWlvL2lpby1ndHMtaGVscGVyLmgKK0Y6CWRyaXZlcnMvaWlvL3Rlc3QvaWlvLXRlc3Qt
Z3RzLmMKKworSUlPIE1VTFRJUExFWEVSCitNOglQZXRlciBSb3NpbiA8cGVkYUBheGVudGlhLnNl
PgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9tdWx0aXBsZXhlci9pby1jaGFubmVsLW11
eC55YW1sCitGOglkcml2ZXJzL2lpby9tdWx0aXBsZXhlci9paW8tbXV4LmMKKworSUlPIFNDTUkg
QkFTRUQgRFJJVkVSCitNOglKeW90aSBCaGF5YW5hIDxqYmhheWFuYUBnb29nbGUuY29tPgorTDoJ
bGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9paW8v
Y29tbW9uL3NjbWlfc2Vuc29ycy9zY21pX2lpby5jCisKK0lJTyBTVUJTWVNURU0gQU5EIERSSVZF
UlMKK006CUpvbmF0aGFuIENhbWVyb24gPGppYzIzQGtlcm5lbC5vcmc+CitSOglMYXJzLVBldGVy
IENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvamljMjMvaWlvLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9j
b25maWdmcy1paW8qCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1paW8q
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvLworRjoJRG9jdW1lbnRh
dGlvbi9paW8vCitGOglkcml2ZXJzL2lpby8KK0Y6CWRyaXZlcnMvc3RhZ2luZy9paW8vCitGOglp
bmNsdWRlL2R0LWJpbmRpbmdzL2lpby8KK0Y6CWluY2x1ZGUvbGludXgvaWlvLworRjoJdG9vbHMv
aWlvLworCitJSU8gVU5JVCBDT05WRVJURVIKK006CVBldGVyIFJvc2luIDxwZWRhQGF4ZW50aWEu
c2U+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FmZS9jdXJyZW50LXNlbnNlLWFtcGxp
Zmllci55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FmZS9j
dXJyZW50LXNlbnNlLXNodW50LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9paW8vYWZlL3ZvbHRhZ2UtZGl2aWRlci55YW1sCitGOglkcml2ZXJzL2lpby9hZmUvaWlv
LXJlc2NhbGUuYworCitJS0FOT1MvQURJIEVBR0xFIEFEU0wgVVNCIERSSVZFUgorTToJTWF0dGhp
ZXUgQ2FzdGV0IDxjYXN0ZXQubWF0dGhpZXVAZnJlZS5mcj4KK006CVN0YW5pc2xhdyBHcnVzemth
IDxzdGZfeGxAd3AucGw+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3VzYi9hdG0vdWVhZ2xl
LWF0bS5jCisKK0lNQUdJUyBUT1VDSFNDUkVFTiBEUklWRVIKK006CU1hcmt1c3MgQnJva3MgPG1h
cmt1c3MuYnJva3NAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3RvdWNoc2NyZWVuL2ltYWdpcyxpc3QzMDM4Yy55YW1s
CitGOglkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2ltYWdpcy5jCisKK0lNR1RFQyBBU0NJSSBM
Q0QgRFJJVkVSCitNOglQYXVsIEJ1cnRvbiA8cGF1bGJ1cnRvbkBrZXJuZWwub3JnPgorUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2F1eGRpc3BsYXkv
aW1nLGFzY2lpLWxjZC55YW1sCitGOglkcml2ZXJzL2F1eGRpc3BsYXkvaW1nLWFzY2lpLWxjZC5j
CisKK0lNR1RFQyBKUEVHIEVOQ09ERVIgRFJJVkVSCitNOglEZXZhcnNoIFRoYWtrYXIgPGRldmFy
c2h0QHRpLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaW1nLGU1MDEwLWpw
ZWctZW5jLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vaW1hZ2luYXRpb24vZTUwMTAq
CisKK0lNR1RFQyBJUiBERUNPREVSIERSSVZFUgorUzoJT3JwaGFuCitGOglkcml2ZXJzL21lZGlh
L3JjL2ltZy1pci8KKworSU1HVEVDIFBPV0VSVlIgRFJNIERSSVZFUgorTToJRnJhbmsgQmlubnMg
PGZyYW5rLmJpbm5zQGltZ3RlYy5jb20+CitNOglNYXR0IENvc3RlciA8bWF0dC5jb3N0ZXJAaW1n
dGVjLmNvbT4KK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9w
Lm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvZ3B1L2ltZyxwb3dlcnZyLXJvZ3VlLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9ncHUvaW1nLHBvd2VydnItc2d4LnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
Z3B1L2ltYWdpbmF0aW9uLworRjoJZHJpdmVycy9ncHUvZHJtL2NpL3hmYWlscy9wb3dlcnZyKgor
RjoJZHJpdmVycy9ncHUvZHJtL2ltYWdpbmF0aW9uLworRjoJaW5jbHVkZS91YXBpL2RybS9wdnJf
ZHJtLmgKKworSU1PTiBTT1VOREdSQVBIIFVTQiBJUiBSRUNFSVZFUgorTToJU2VhbiBZb3VuZyA8
c2VhbkBtZXNzLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9tZWRpYS9yYy9pbW9uLmMKK0Y6CWRyaXZlcnMvbWVkaWEvcmMvaW1v
bl9yYXcuYworCitJTVMgVFdJTlRVUkJPIEZSQU1FQlVGRkVSIERSSVZFUgorTDoJbGludXgtZmJk
ZXZAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvaW1z
dHRmYi5jCisKK0lOQTIzMyBIQVJEV0FSRSBNT05JVE9SIERSSVZFUlMKK006CUxlbyBZYW5nIDxs
ZW8ueWFuZy5zeTBAZ21haWwuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2luYTIzMy5yc3QKK0Y6CWRyaXZl
cnMvaHdtb24vcG1idXMvaW5hMjMzLmMKKworSU5ERVggT0YgRlVSVEhFUiBLRVJORUwgRE9DVU1F
TlRBVElPTgorTToJQ2FybG9zIEJpbGJhbyA8Y2FybG9zLmJpbGJhb0BrZXJuZWwub3JnPgorUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2tlcm5lbC1kb2NzLnJzdAorCitJ
TkRVU1RSWSBQQUNLIFNVQlNZU1RFTSAoSVBBQ0spCitNOglWYWliaGF2IEd1cHRhIDx2YWliaGF2
Z3VwdGE0MEBnbWFpbC5jb20+CitNOglKZW5zIFRhcHJvZ2dlIDxqZW5zLnRhcHJvZ2dlQHRhcHJv
Z2dlLm9yZz4KK006CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5v
cmc+CitMOglpbmR1c3RyeXBhY2stZGV2ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0CitTOglNYWlu
dGFpbmVkCitXOglodHRwOi8vaW5kdXN0cnlwYWNrLnNvdXJjZWZvcmdlLm5ldAorRjoJZHJpdmVy
cy9pcGFjay8KKworSU5GSU5FT04gRFBTMzEwIERyaXZlcgorTToJRWRkaWUgSmFtZXMgPGVhamFt
ZXNAbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvaWlvL3ByZXNzdXJlL2RwczMxMC5jCisKK0lORklORU9OIFBFQjI0
NjYgQVNvQyBDT0RFQworTToJSGVydmUgQ29kaW5hIDxoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+
CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9pbmZpbmVvbixwZWIyNDY2LnlhbWwK
K0Y6CXNvdW5kL3NvYy9jb2RlY3MvcGViMjQ2Ni5jCisKK0lORklOSUJBTkQgU1VCU1lTVEVNCitN
OglKYXNvbiBHdW50aG9ycGUgPGpnZ0BudmlkaWEuY29tPgorTToJTGVvbiBSb21hbm92c2t5IDxs
ZW9ucm9AbnZpZGlhLmNvbT4KK0w6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZQorUToJaHR0
cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtcmRtYS9saXN0LworVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yZG1hL3JkbWEu
Z2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5maW5pYmFuZC8KK0Y6
CURvY3VtZW50YXRpb24vaW5maW5pYmFuZC8KK0Y6CWRyaXZlcnMvaW5maW5pYmFuZC8KK0Y6CWlu
Y2x1ZGUvcmRtYS8KK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2liX21hZC5oCitGOglpbmNsdWRl
L3RyYWNlL2V2ZW50cy9pYl91bWFkLmgKK0Y6CWluY2x1ZGUvdHJhY2UvbWlzYy9yZG1hLmgKK0Y6
CWluY2x1ZGUvdWFwaS9saW51eC9pZl9pbmZpbmliYW5kLmgKK0Y6CWluY2x1ZGUvdWFwaS9yZG1h
LworRjoJc2FtcGxlcy9icGYvaWJ1bWFkX2tlcm4uYworRjoJc2FtcGxlcy9icGYvaWJ1bWFkX3Vz
ZXIuYworCitJTkdFTklDIEpaNDc4MCBOQU5EIERSSVZFUgorTToJSGFydmV5IEh1bnQgPGhhcnZl
eWh1bnRuZXh1c0BnbWFpbC5jb20+CitMOglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZwor
TDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
bXRkL25hbmQvcmF3L2luZ2VuaWMvCisKK0lOR0VOSUMgSlo0N3h4IFNvQ3MKK006CVBhdWwgQ2Vy
Y3VlaWwgPHBhdWxAY3JhcG91aWxsb3UubmV0PgorTDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvbWlwcy9ib290L2R0cy9pbmdlbmljLworRjoJYXJj
aC9taXBzL2dlbmVyaWMvYm9hcmQtaW5nZW5pYy5jCitGOglhcmNoL21pcHMvaW5jbHVkZS9hc20v
bWFjaC1pbmdlbmljLworRjoJYXJjaC9taXBzL2luZ2VuaWMvS2NvbmZpZworRjoJZHJpdmVycy9j
bGsvaW5nZW5pYy8KK0Y6CWRyaXZlcnMvZG1hL2RtYS1qejQ3ODAuYworRjoJZHJpdmVycy9ncHUv
ZHJtL2luZ2VuaWMvCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWp6NDc4MC5jCitGOglkcml2
ZXJzL2lpby9hZGMvaW5nZW5pYy1hZGMuYworRjoJZHJpdmVycy9pcnFjaGlwL2lycS1pbmdlbmlj
LmMKK0Y6CWRyaXZlcnMvbWVtb3J5L2p6NDc4MC1uZW1jLmMKK0Y6CWRyaXZlcnMvbW1jL2hvc3Qv
ano0NzQwX21tYy5jCitGOglkcml2ZXJzL210ZC9uYW5kL3Jhdy9pbmdlbmljLworRjoJZHJpdmVy
cy9waW5jdHJsL3BpbmN0cmwtaW5nZW5pYy5jCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9pbmdl
bmljLWJhdHRlcnkuYworRjoJZHJpdmVycy9wd20vcHdtLWp6NDc0MC5jCitGOglkcml2ZXJzL3Jl
bW90ZXByb2MvaW5nZW5pY19ycHJvYy5jCitGOglkcml2ZXJzL3J0Yy9ydGMtano0NzQwLmMKK0Y6
CWRyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfaW5nZW5pYy5jCitGOglkcml2ZXJzL3VzYi9t
dXNiL2p6NDc0MC5jCitGOglkcml2ZXJzL3dhdGNoZG9nL2p6NDc0MF93ZHQuYworRjoJaW5jbHVk
ZS9kdC1iaW5kaW5ncy9paW8vYWRjL2luZ2VuaWMsYWRjLmgKK0Y6CWluY2x1ZGUvbGludXgvbWZk
L2luZ2VuaWMtdGN1LmgKK0Y6CXNvdW5kL3NvYy9jb2RlY3Mvano0NyoKK0Y6CXNvdW5kL3NvYy9q
ejQ3NDAvCisKK0lOSk9JTklDIElQNXh4eCBQT1dFUiBCQU5LIElDIERSSVZFUgorTToJU2FtdWVs
IEhvbGxhbmQgPHNhbXVlbEBzaG9sbGFuZC5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L3Bvd2VyL3N1cHBseS9pcDV4eHhfcG93ZXIuYworCitJTk9USUZZCitNOglKYW4gS2FyYSA8amFj
a0BzdXNlLmN6PgorUjoJQW1pciBHb2xkc3RlaW4gPGFtaXI3M2lsQGdtYWlsLmNvbT4KK0w6CWxp
bnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2ZpbGVzeXN0ZW1zL2lub3RpZnkucnN0CitGOglmcy9ub3RpZnkvaW5vdGlmeS8KK0Y6CWlu
Y2x1ZGUvbGludXgvaW5vdGlmeS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvaW5vdGlmeS5oCisK
K0lOUFVUIChLRVlCT0FSRCwgTU9VU0UsIEpPWVNUSUNLLCBUT1VDSFNDUkVFTikgRFJJVkVSUwor
TToJRG1pdHJ5IFRvcm9raG92IDxkbWl0cnkudG9yb2tob3ZAZ21haWwuY29tPgorTDoJbGludXgt
aW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitROglodHRwOi8vcGF0Y2h3b3Jr
Lmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1pbnB1dC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kdG9yL2lucHV0LmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0LworRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlvLworRjoJRG9jdW1lbnRhdGlvbi9pbnB1dC8KK0Y6CWRy
aXZlcnMvaW5wdXQvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2lucHV0LworRjoJaW5jbHVkZS9s
aW51eC9nYW1lcG9ydC5oCitGOglpbmNsdWRlL2xpbnV4L2k4MDQyLmgKK0Y6CWluY2x1ZGUvbGlu
dXgvaW5wdXQuaAorRjoJaW5jbHVkZS9saW51eC9pbnB1dC8KK0Y6CWluY2x1ZGUvbGludXgvbGli
cHMyLmgKK0Y6CWluY2x1ZGUvbGludXgvc2VyaW8uaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2dh
bWVwb3J0LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9pbnB1dC1ldmVudC1jb2Rlcy5oCitGOglp
bmNsdWRlL3VhcGkvbGludXgvaW5wdXQuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3NlcmlvLmgK
K0Y6CWluY2x1ZGUvdWFwaS9saW51eC91aW5wdXQuaAorCitJTlBVVCBNVUxUSVRPVUNIIChNVCkg
UFJPVE9DT0wKK006CUhlbnJpayBSeWRiZXJnIDxyeWRiZXJnQGJpdG1hdGgub3JnPgorTDoJbGlu
dXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglPZGQgZml4ZXMKK0Y6CURvY3VtZW50YXRpb24v
aW5wdXQvbXVsdGktdG91Y2gtcHJvdG9jb2wucnN0CitGOglkcml2ZXJzL2lucHV0L2lucHV0LW10
LmMKK0s6CVxiKEFCU3xTWU4pX01UXworCitJTlNJREUgU0VDVVJFIENSWVBUTyBEUklWRVIKK006
CUFudG9pbmUgVGVuYXJ0IDxhdGVuYXJ0QGtlcm5lbC5vcmc+CitMOglsaW51eC1jcnlwdG9Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2NyeXB0by9pbnNpZGUtc2Vj
dXJlLworCitJTlNJREUgU0VDVVJFIEVJUDkzIENSWVBUTyBEUklWRVIKK006CUNocmlzdGlhbiBN
YXJhbmdpIDxhbnN1ZWxzbXRoQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9jcnlwdG8vaW5zaWRlLXNlY3VyZSxzYWZleGNlbC1laXA5My55YW1sCitGOglkcml2ZXJzL2Ny
eXB0by9pbnNpZGUtc2VjdXJlL2VpcDkzLworCitJTlRFR1JJVFkgTUVBU1VSRU1FTlQgQVJDSElU
RUNUVVJFIChJTUEpCitNOglNaW1pIFpvaGFyIDx6b2hhckBsaW51eC5pYm0uY29tPgorTToJUm9i
ZXJ0byBTYXNzdSA8cm9iZXJ0by5zYXNzdUBodWF3ZWkuY29tPgorTToJRG1pdHJ5IEthc2F0a2lu
IDxkbWl0cnkua2FzYXRraW5AZ21haWwuY29tPgorUjoJRXJpYyBTbm93YmVyZyA8ZXJpYy5zbm93
YmVyZ0BvcmFjbGUuY29tPgorTDoJbGludXgtaW50ZWdyaXR5QHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L3pvaGFyL2xpbnV4LWludGVncml0eS5naXQKK0Y6CXNlY3VyaXR5L2ludGVncml0eS8K
K0Y6CXNlY3VyaXR5L2ludGVncml0eS9pbWEvCisKK0lOVEVHUklUWSBQT0xJQ1kgRU5GT1JDRU1F
TlQgKElQRSkKK006CUZhbiBXdSA8d3VmYW5Aa2VybmVsLm9yZz4KK0w6CWxpbnV4LXNlY3VyaXR5
LW1vZHVsZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC93dWZhbi9pcGUuZ2l0CitGOglEb2N1
bWVudGF0aW9uL2FkbWluLWd1aWRlL0xTTS9pcGUucnN0CitGOglEb2N1bWVudGF0aW9uL3NlY3Vy
aXR5L2lwZS5yc3QKK0Y6CXNjcmlwdHMvaXBlLworRjoJc2VjdXJpdHkvaXBlLworCitJTlRFTCA4
MTAvODE1IEZSQU1FQlVGRkVSIERSSVZFUgorTToJQW50b25pbm8gRGFwbGFzIDxhZGFwbGFzQGdt
YWlsLmNvbT4KK0w6CWxpbnV4LWZiZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJZHJpdmVycy92aWRlby9mYmRldi9pODEwLworCitJTlRFTCA4MjU0IENPVU5URVIgRFJJVkVS
CitNOglXaWxsaWFtIEJyZWF0aGl0dCBHcmF5IDx3YmdAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlp
b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvY291bnRlci9pODI1
NC5jCitGOglpbmNsdWRlL2xpbnV4L2k4MjU0LmgKKworSU5URUwgODI1NSBHUElPIERSSVZFUgor
TToJV2lsbGlhbSBCcmVhdGhpdHQgR3JheSA8d2JnQGtlcm5lbC5vcmc+CitMOglsaW51eC1ncGlv
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8taTgy
NTUuYworRjoJZHJpdmVycy9ncGlvL2dwaW8taTgyNTUuaAorCitJTlRFTCBBU29DIERSSVZFUlMK
K006CUNlemFyeSBSb2pld3NraSA8Y2V6YXJ5LnJvamV3c2tpQGludGVsLmNvbT4KK006CUxpYW0g
R2lyZHdvb2QgPGxpYW0uci5naXJkd29vZEBsaW51eC5pbnRlbC5jb20+CitNOglQZXRlciBVamZh
bHVzaSA8cGV0ZXIudWpmYWx1c2lAbGludXguaW50ZWwuY29tPgorTToJQmFyZCBMaWFvIDx5dW5n
LWNodWFuLmxpYW9AbGludXguaW50ZWwuY29tPgorTToJUmFuamFuaSBTcmlkaGFyYW4gPHJhbmph
bmkuc3JpZGhhcmFuQGxpbnV4LmludGVsLmNvbT4KK006CUthaSBWZWhtYW5lbiA8a2FpLnZlaG1h
bmVuQGxpbnV4LmludGVsLmNvbT4KK1I6CVBpZXJyZS1Mb3VpcyBCb3NzYXJ0IDxwaWVycmUtbG91
aXMuYm9zc2FydEBsaW51eC5kZXY+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJc291bmQvc29jL2ludGVsLworCitJTlRFTCBBVE9NSVNQMiBEVU1NWSAv
IFBPV0VSLU1BTkFHRU1FTlQgRFJJVkVSCitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRo
YXQuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2F0b21pc3AyL3BtLmMKKworSU5U
RUwgQVRPTUlTUDIgTEVEIERSSVZFUgorTToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0
LmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9hdG9taXNwMi9sZWQuYworCitJTlRF
TCBCSU9TIFNBUiBJTlQxMDkyIERSSVZFUgorTToJU2hyYXZhbiBTdWRoYWthciA8cy5zaHJhdmFu
QGludGVsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9pbnQxMDkyLworCitJTlRF
TCBCUk9YVE9OIFBNQyBEUklWRVIKK006CU1pa2EgV2VzdGVyYmVyZyA8bWlrYS53ZXN0ZXJiZXJn
QGxpbnV4LmludGVsLmNvbT4KK006CVpoYSBRaXBlbmcgPHFpcGVuZy56aGFAaW50ZWwuY29tPgor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tZmQvaW50ZWxfcG1jX2J4dC5jCitGOglpbmNsdWRl
L2xpbnV4L21mZC9pbnRlbF9wbWNfYnh0LmgKKworSU5URUwgQzYwMCBTRVJJRVMgU0FTIENPTlRS
T0xMRVIgRFJJVkVSCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitU
OglnaXQgZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvaW50ZWwtc2FzL2lzY2kKK0Y6CWRyaXZlcnMv
c2NzaS9pc2NpLworCitJTlRFTCBDUFUgZmFtaWx5IG1vZGVsIG51bWJlcnMKK006CVRvbnkgTHVj
ayA8dG9ueS5sdWNrQGludGVsLmNvbT4KK006CXg4NkBrZXJuZWwub3JnCitMOglsaW51eC1rZXJu
ZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNt
L2ludGVsLWZhbWlseS5oCisKK0lOVEVMIERSTSBESVNQTEFZIEZPUiBYRSBBTkQgSTkxNSBEUklW
RVJTCitNOglKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgorTToJUm9k
cmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgorTDoJaW50ZWwtZ2Z4QGxpc3RzLmZy
ZWVkZXNrdG9wLm9yZworTDoJaW50ZWwteGVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBw
b3J0ZWQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvCitGOglkcml2ZXJzL2dwdS9k
cm0veGUvZGlzcGxheS8KK0Y6CWRyaXZlcnMvZ3B1L2RybS94ZS9jb21wYXQtaTkxNS1oZWFkZXJz
CitGOglpbmNsdWRlL2RybS9pbnRlbC8KKworSU5URUwgRFJNIEk5MTUgRFJJVkVSIChNZXRlb3Ig
TGFrZSwgREcyIGFuZCBvbGRlciBleGNsdWRpbmcgUG91bHNibywgTW9vcmVzdG93biBhbmQgZGVy
aXZhdGl2ZSkKK006CUphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CitN
OglKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CitNOglS
b2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+CitNOglUdnJ0a28gVXJzdWxpbiA8
dHVyc3VsaW5AdXJzdWxpbi5uZXQ+CitMOglpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn
CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZHJtLnBhZ2VzLmZyZWVkZXNrdG9wLm9yZy9pbnRl
bC1kb2NzLworUToJaHR0cDovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcHJvamVjdC9pbnRl
bC1nZngvCitCOglodHRwczovL2RybS5wYWdlcy5mcmVlZGVza3RvcC5vcmcvaW50ZWwtZG9jcy9o
b3ctdG8tZmlsZS1pOTE1LWJ1Z3MuaHRtbAorQzoJaXJjOi8vaXJjLm9mdGMubmV0L2ludGVsLWdm
eAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0vaTkxNS9rZXJuZWwu
Z2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWRyaXZlci1pbnRlbC1pOTE1
LWh3bW9uCitGOglEb2N1bWVudGF0aW9uL2dwdS9pOTE1LnJzdAorRjoJZHJpdmVycy9ncHUvZHJt
L2NpL3hmYWlscy9pOTE1KgorRjoJZHJpdmVycy9ncHUvZHJtL2k5MTUvCitGOglpbmNsdWRlL2Ry
bS9pbnRlbC8KK0Y6CWluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorCitJTlRFTCBEUk0gWEUg
RFJJVkVSIChMdW5hciBMYWtlIGFuZCBuZXdlcikKK006CUx1Y2FzIERlIE1hcmNoaSA8bHVjYXMu
ZGVtYXJjaGlAaW50ZWwuY29tPgorTToJVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ry
b21AbGludXguaW50ZWwuY29tPgorTToJUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwu
Y29tPgorTDoJaW50ZWwteGVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQKK1c6
CWh0dHBzOi8vZHJtLnBhZ2VzLmZyZWVkZXNrdG9wLm9yZy9pbnRlbC1kb2NzLworUToJaHR0cDov
L3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcHJvamVjdC9pbnRlbC14ZS8KK0I6CWh0dHBzOi8v
Z2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0veGUva2VybmVsLy0vaXNzdWVzCitDOglpcmM6Ly9p
cmMub2Z0Yy5uZXQveGUKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJt
L3hlL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZHJpdmVy
LWludGVsLXhlLWh3bW9uCitGOglEb2N1bWVudGF0aW9uL2dwdS94ZS8KK0Y6CWRyaXZlcnMvZ3B1
L2RybS94ZS8KK0Y6CWluY2x1ZGUvZHJtL2ludGVsLworRjoJaW5jbHVkZS91YXBpL2RybS94ZV9k
cm0uaAorCitJTlRFTCBFVEhFUk5FVCBEUklWRVJTCitNOglUb255IE5ndXllbiA8YW50aG9ueS5s
Lm5ndXllbkBpbnRlbC5jb20+CitNOglQcnplbWVrIEtpdHN6ZWwgPHByemVteXNsYXcua2l0c3pl
bEBpbnRlbC5jb20+CitMOglpbnRlbC13aXJlZC1sYW5AbGlzdHMub3N1b3NsLm9yZyAobW9kZXJh
dGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitXOglodHRwczovL3d3dy5p
bnRlbC5jb20vY29udGVudC93d3cvdXMvZW4vc3VwcG9ydC5odG1sCitROglodHRwczovL3BhdGNo
d29yay5vemxhYnMub3JnL3Byb2plY3QvaW50ZWwtd2lyZWQtbGFuL2xpc3QvCitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RuZ3V5L25ldC1xdWV1
ZS5naXQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n
aXQvdG5ndXkvbmV4dC1xdWV1ZS5naXQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZp
Y2VfZHJpdmVycy9ldGhlcm5ldC9pbnRlbC8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVs
LworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvKi8KK0Y6CWluY2x1ZGUvbGludXgvYXZm
L3ZpcnRjaG5sLmgKK0Y6CWluY2x1ZGUvbGludXgvbmV0L2ludGVsLyovCisKK0lOVEVMIEVUSEVS
TkVUIFBST1RPQ09MIERSSVZFUiBGT1IgUkRNQQorTToJTXVzdGFmYSBJc21haWwgPG11c3RhZmEu
aXNtYWlsQGludGVsLmNvbT4KK006CVRhdHlhbmEgTmlrb2xvdmEgPHRhdHlhbmEuZS5uaWtvbG92
YUBpbnRlbC5jb20+CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglkcml2ZXJzL2luZmluaWJhbmQvaHcvaXJkbWEvCitGOglpbmNsdWRlL3VhcGkvcmRtYS9p
cmRtYS1hYmkuaAorCitJTlRFTCBHUElPIERSSVZFUlMKK006CUFuZHkgU2hldmNoZW5rbyA8YW5k
eUBrZXJuZWwub3JnPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9h
bmR5L2xpbnV4LWdwaW8taW50ZWwuZ2l0CitGOglkcml2ZXJzL2dwaW8vZ3Bpby1lbGtoYXJ0bGFr
ZS5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1ncmFuaXRlcmFwaWRzLmMKK0Y6CWRyaXZlcnMvZ3Bp
by9ncGlvLWljaC5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1tZXJyaWZpZWxkLmMKK0Y6CWRyaXZl
cnMvZ3Bpby9ncGlvLW1sLWlvaC5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1wY2guYworRjoJZHJp
dmVycy9ncGlvL2dwaW8tc2NoLmMKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLXNvZGF2aWxsZS5jCitG
Oglkcml2ZXJzL2dwaW8vZ3Bpby10YW5naWVyLmMKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLXRhbmdp
ZXIuaAorCitJTlRFTCBHVlQtZyBEUklWRVJTIChJbnRlbCBHUFUgVmlydHVhbGl6YXRpb24pCitS
OglaaGVueXUgV2FuZyA8emhlbnl1dy5saW51eEBnbWFpbC5jb20+CitSOglaaGkgV2FuZyA8emhp
LndhbmcubGludXhAZ21haWwuY29tPgorUzoJT2RkIEZpeGVzCitXOglodHRwczovL2dpdGh1Yi5j
b20vaW50ZWwvZ3Z0LWxpbnV4L3dpa2kKK0Y6CWRyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC8KKwor
SU5URUwgSElEIEVWRU5UIERSSVZFUgorTToJQWxleCBIdW5nIDxhbGV4aHVuZ0BnbWFpbC5jb20+
CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvaGlkLmMKKworSU5URUwgSS9PQVQgRE1BIERS
SVZFUgorTToJRGF2ZSBKaWFuZyA8ZGF2ZS5qaWFuZ0BpbnRlbC5jb20+CitSOglEYW4gV2lsbGlh
bXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4KK0w6CWRtYWVuZ2luZUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0
L2xpbnV4LWRtYWVuZ2luZS9saXN0LworRjoJZHJpdmVycy9kbWEvaW9hdCoKKworSU5URUwgSUFB
IENSWVBUTyBEUklWRVIKK006CUtyaXN0ZW4gQWNjYXJkaSA8a3Jpc3Rlbi5jLmFjY2FyZGlAaW50
ZWwuY29tPgorTToJVmluaWNpdXMgQ29zdGEgR29tZXMgPHZpbmljaXVzLmdvbWVzQGludGVsLmNv
bT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9j
dW1lbnRhdGlvbi9kcml2ZXItYXBpL2NyeXB0by9pYWEvaWFhLWNyeXB0by5yc3QKK0Y6CWRyaXZl
cnMvY3J5cHRvL2ludGVsL2lhYS8qCisKK0lOVEVMIElETEUgRFJJVkVSCitNOglSYWZhZWwgSi4g
V3lzb2NraSA8cmFmYWVsQGtlcm5lbC5vcmc+CitNOglBcnRlbSBCaXR5dXRza2l5IDxhcnRlbS5i
aXR5dXRza2l5QGxpbnV4LmludGVsLmNvbT4KK006CUFydGVtIEJpdHl1dHNraXkgPGRlZGVraW5k
MUBnbWFpbC5jb20+CitSOglMZW4gQnJvd24gPGxlbmJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBt
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitCOglodHRwczovL2J1Z3ppbGxhLmtlcm5l
bC5vcmcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n
aXQvcmFmYWVsL2xpbnV4LXBtLmdpdAorRjoJZHJpdmVycy9pZGxlL2ludGVsX2lkbGUuYworCitJ
TlRFTCBJRFhEIERSSVZFUgorTToJVmluaWNpdXMgQ29zdGEgR29tZXMgPHZpbmljaXVzLmdvbWVz
QGludGVsLmNvbT4KK1I6CURhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50ZWwuY29tPgorTDoJZG1h
ZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2RtYS9pZHhk
LyoKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9pZHhkLmgKKworSU5URUwgSU4gRklFTEQgU0NBTiAo
SUZTKSBERVZJQ0UKK006CUppdGh1IEpvc2VwaCA8aml0aHUuam9zZXBoQGludGVsLmNvbT4KK1I6
CUFzaG9rIFJhaiA8YXNob2sucmFqLmxpbnV4QGdtYWlsLmNvbT4KK1I6CVRvbnkgTHVjayA8dG9u
eS5sdWNrQGludGVsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2
L2ludGVsL2lmcworRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvaW50ZWxfaWZzLmgKK0Y6CXRvb2xz
L3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL2lmcy8KKworSU5U
RUwgSU5URUdSQVRFRCBTRU5TT1IgSFVCIERSSVZFUgorTToJU3Jpbml2YXMgUGFuZHJ1dmFkYSA8
c3Jpbml2YXMucGFuZHJ1dmFkYUBsaW51eC5pbnRlbC5jb20+CitNOglKaXJpIEtvc2luYSA8amlr
b3NAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9oaWQvaW50ZWwtaXNoLWhpZC8KKworSU5URUwgSU9NTVUgKFZULWQp
CitNOglEYXZpZCBXb29kaG91c2UgPGR3bXcyQGluZnJhZGVhZC5vcmc+CitNOglMdSBCYW9sdSA8
YmFvbHUubHVAbGludXguaW50ZWwuY29tPgorTDoJaW9tbXVAbGlzdHMubGludXguZGV2CitTOglT
dXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvaW9tbXUvbGludXguZ2l0CitGOglkcml2ZXJzL2lvbW11L2ludGVsLworCitJTlRFTCBJ
UFUzIENTSS0yIENJTzIgRFJJVkVSCitNOglZb25nIFpoaSA8eW9uZy56aGlAaW50ZWwuY29tPgor
TToJU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAbGludXguaW50ZWwuY29tPgorTToJQmluZ2J1
IENhbyA8YmluZ2J1LmNhb0BpbnRlbC5jb20+CitNOglEYW4gU2NhbGx5IDxkanJzY2FsbHlAZ21h
aWwuY29tPgorUjoJVGlhbnNodSBRaXUgPHRpYW4uc2h1LnFpdUBpbnRlbC5jb20+CitMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51
eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS92
NGwvcGl4Zm10LXNyZ2diMTAtaXB1My5yc3QKK0Y6CWRyaXZlcnMvbWVkaWEvcGNpL2ludGVsL2lw
dTMvCisKK0lOVEVMIElQVTMgQ1NJLTIgSU1HVSBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2Fr
YXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK1I6CUJpbmdidSBDYW8gPGJpbmdidS5jYW9AaW50
ZWwuY29tPgorUjoJVGlhbnNodSBRaXUgPHRpYW4uc2h1LnFpdUBpbnRlbC5jb20+CitMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
YWRtaW4tZ3VpZGUvbWVkaWEvaXB1My5yc3QKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUv
bWVkaWEvaXB1M19yY2Iuc3ZnCitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEv
djRsL21ldGFmbXQtaW50ZWwtaXB1My5yc3QKK0Y6CWRyaXZlcnMvc3RhZ2luZy9tZWRpYS9pcHUz
LworCitJTlRFTCBJUFU2IElOUFVUIFNZU1RFTSBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2Fr
YXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK006CUJpbmdidSBDYW8gPGJpbmdidS5jYW9AaW50
ZWwuY29tPgorUjoJVGlhbnNodSBRaXUgPHRpYW4uc2h1LnFpdUBpbnRlbC5jb20+CitMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51
eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbWVkaWEvaXB1
Ni1pc3lzLnJzdAorRjoJZHJpdmVycy9tZWRpYS9wY2kvaW50ZWwvaXB1Ni8KKworSU5URUwgSVNI
VFAgRUNMSVRFIERSSVZFUgorTToJU3Jpbml2YXMgUGFuZHJ1dmFkYSA8c3Jpbml2YXMucGFuZHJ1
dmFkYUBsaW51eC5pbnRlbC5jb20+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9pc2h0cF9l
Y2xpdGUuYworCitJTlRFTCBJWFA0WFggQ1JZUFRPIFNVUFBPUlQKK006CUNvcmVudGluIExhYmJl
IDxjbGFiYmVAYmF5bGlicmUuY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9jcnlwdG8vaW50ZWwvaXhwNHh4L2l4cDR4eF9jcnlw
dG8uYworCitJTlRFTCBLRUVNIEJBWSBEUk0gRFJJVkVSCitNOglBbml0aGEgQ2hyaXNhbnRodXMg
PGFuaXRoYS5jaHJpc2FudGh1c0BpbnRlbC5jb20+CitNOglFZG11bmQgRGVhIDxlZG11bmQuai5k
ZWFAaW50ZWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL2Rpc3BsYXkvaW50ZWwsa2VlbWJheS1kaXNwbGF5LnlhbWwKK0Y6CWRyaXZlcnMv
Z3B1L2RybS9rbWIvCisKK0lOVEVMIEtFRU0gQkFZIE9DUyBBRVMvU000IENSWVBUTyBEUklWRVIK
K006CURhbmllbGUgQWxlc3NhbmRyZWxsaSA8ZGFuaWVsZS5hbGVzc2FuZHJlbGxpQGludGVsLmNv
bT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9j
cnlwdG8vaW50ZWwsa2VlbWJheS1vY3MtYWVzLnlhbWwKK0Y6CWRyaXZlcnMvY3J5cHRvL2ludGVs
L2tlZW1iYXkvS2NvbmZpZworRjoJZHJpdmVycy9jcnlwdG8vaW50ZWwva2VlbWJheS9NYWtlZmls
ZQorRjoJZHJpdmVycy9jcnlwdG8vaW50ZWwva2VlbWJheS9rZWVtYmF5LW9jcy1hZXMtY29yZS5j
CitGOglkcml2ZXJzL2NyeXB0by9pbnRlbC9rZWVtYmF5L29jcy1hZXMuYworRjoJZHJpdmVycy9j
cnlwdG8vaW50ZWwva2VlbWJheS9vY3MtYWVzLmgKKworSU5URUwgS0VFTSBCQVkgT0NTIEVDQyBD
UllQVE8gRFJJVkVSCitNOglEYW5pZWxlIEFsZXNzYW5kcmVsbGkgPGRhbmllbGUuYWxlc3NhbmRy
ZWxsaUBpbnRlbC5jb20+CitNOglQcmFiaGpvdCBLaHVyYW5hIDxwcmFiaGpvdC5raHVyYW5hQGlu
dGVsLmNvbT4KK006CU1hcmsgR3Jvc3MgPG1ncm9zc0BsaW51eC5pbnRlbC5jb20+CitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL2ludGVs
LGtlZW1iYXktb2NzLWVjYy55YW1sCitGOglkcml2ZXJzL2NyeXB0by9pbnRlbC9rZWVtYmF5L0tj
b25maWcKK0Y6CWRyaXZlcnMvY3J5cHRvL2ludGVsL2tlZW1iYXkvTWFrZWZpbGUKK0Y6CWRyaXZl
cnMvY3J5cHRvL2ludGVsL2tlZW1iYXkva2VlbWJheS1vY3MtZWNjLmMKKworSU5URUwgS0VFTSBC
QVkgT0NTIEhDVSBDUllQVE8gRFJJVkVSCitNOglEYW5pZWxlIEFsZXNzYW5kcmVsbGkgPGRhbmll
bGUuYWxlc3NhbmRyZWxsaUBpbnRlbC5jb20+CitNOglEZWNsYW4gTXVycGh5IDxkZWNsYW4ubXVy
cGh5QGludGVsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9jcnlwdG8vaW50ZWwsa2VlbWJheS1vY3MtaGN1LnlhbWwKK0Y6CWRyaXZlcnMv
Y3J5cHRvL2ludGVsL2tlZW1iYXkvS2NvbmZpZworRjoJZHJpdmVycy9jcnlwdG8vaW50ZWwva2Vl
bWJheS9NYWtlZmlsZQorRjoJZHJpdmVycy9jcnlwdG8vaW50ZWwva2VlbWJheS9rZWVtYmF5LW9j
cy1oY3UtY29yZS5jCitGOglkcml2ZXJzL2NyeXB0by9pbnRlbC9rZWVtYmF5L29jcy1oY3UuYwor
RjoJZHJpdmVycy9jcnlwdG8vaW50ZWwva2VlbWJheS9vY3MtaGN1LmgKKworSU5URUwgTEEgSk9M
TEEgQ09WRSBBREFQVEVSIChMSkNBKSBVU0IgSS9PIEVYUEFOREVSIERSSVZFUlMKK006CVdlbnRv
bmcgV3UgPHdlbnRvbmcud3VAaW50ZWwuY29tPgorTToJU2FrYXJpIEFpbHVzIDxzYWthcmkuYWls
dXNAbGludXguaW50ZWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ncGlvL2dwaW8t
bGpjYS5jCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWxqY2EuYworRjoJZHJpdmVycy9zcGkv
c3BpLWxqY2EuYworRjoJZHJpdmVycy91c2IvbWlzYy91c2ItbGpjYS5jCitGOglpbmNsdWRlL2xp
bnV4L3VzYi9samNhLmgKKworSU5URUwgTUFOQUdFTUVOVCBFTkdJTkUgKG1laSkKK006CUFsZXhh
bmRlciBVc3lza2luIDxhbGV4YW5kZXIudXN5c2tpbkBpbnRlbC5jb20+CitMOglsaW51eC1rZXJu
ZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZHJpdmVy
LWFwaS9tZWkvKgorRjoJZHJpdmVycy9taXNjL21laS8KK0Y6CWRyaXZlcnMvd2F0Y2hkb2cvbWVp
X3dkdC5jCitGOglpbmNsdWRlL2xpbnV4L21laV9hdXguaAorRjoJaW5jbHVkZS9saW51eC9tZWlf
Y2xfYnVzLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9tZWkuaAorRjoJaW5jbHVkZS91YXBpL2xp
bnV4L21laV91dWlkLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC91dWlkLmgKK0Y6CXNhbXBsZXMv
bWVpLyoKKworSU5URUwgTUFYIDEwIEJNQyBNRkQgRFJJVkVSCitNOglYdSBZaWx1biA8eWlsdW4u
eHVAaW50ZWwuY29tPgorUjoJVG9tIFJpeCA8dHJpeEByZWRoYXQuY29tPgorUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtbTEwLWJt
YworRjoJRG9jdW1lbnRhdGlvbi9od21vbi9pbnRlbC1tMTAtYm1jLWh3bW9uLnJzdAorRjoJZHJp
dmVycy9od21vbi9pbnRlbC1tMTAtYm1jLWh3bW9uLmMKK0Y6CWRyaXZlcnMvbWZkL2ludGVsLW0x
MC1ibWMqCitGOglpbmNsdWRlL2xpbnV4L21mZC9pbnRlbC1tMTAtYm1jLmgKKworSU5URUwgTUFY
MTAgQk1DIFNFQ1VSRSBVUERBVEVTCitNOglQZXRlciBDb2xiZXJnIDxwZXRlci5jb2xiZXJnQGFs
dGVyYS5jb20+CitMOglsaW51eC1mcGdhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItaW50ZWwtbTEwLWJtYy1z
ZWMtdXBkYXRlCitGOglkcml2ZXJzL2ZwZ2EvaW50ZWwtbTEwLWJtYy1zZWMtdXBkYXRlLmMKKwor
SU5URUwgTUlEIChNb2JpbGUgSW50ZXJuZXQgRGV2aWNlKSBQTEFURk9STQorTToJQW5keSBTaGV2
Y2hlbmtvIDxhbmR5QGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3Jn
CitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL2ludGVsLW1pZC5oCitGOglh
cmNoL3g4Ni9wY2kvaW50ZWxfbWlkX3BjaS5jCitGOglhcmNoL3g4Ni9wbGF0Zm9ybS9pbnRlbC1t
aWQvCitGOglkcml2ZXJzL2RtYS9oc3UvCitGOglkcml2ZXJzL2V4dGNvbi9leHRjb24taW50ZWwt
bXJmbGQuYworRjoJZHJpdmVycy9ncGlvL2dwaW8tbWVycmlmaWVsZC5jCitGOglkcml2ZXJzL2dw
aW8vZ3Bpby10YW5naWVyLioKK0Y6CWRyaXZlcnMvaWlvL2FkYy9pbnRlbF9tcmZsZF9hZGMuYwor
RjoJZHJpdmVycy9tZmQvaW50ZWxfc29jX3BtaWNfbXJmbGQuYworRjoJZHJpdmVycy9waW5jdHJs
L2ludGVsL3BpbmN0cmwtbWVycmlmaWVsZC5jCitGOglkcml2ZXJzL3BpbmN0cmwvaW50ZWwvcGlu
Y3RybC1tb29yZWZpZWxkLmMKK0Y6CWRyaXZlcnMvcGluY3RybC9pbnRlbC9waW5jdHJsLXRhbmdp
ZXIuKgorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWwvbXJmbGRfcHdyYnRuLmMKK0Y6CWRy
aXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX3NjdV8qCitGOglkcml2ZXJzL3N0YWdpbmcvbWVkaWEv
YXRvbWlzcC8KK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC84MjUwLzgyNTBfbWlkLmMKK0Y6CWRyaXZl
cnMvd2F0Y2hkb2cvaW50ZWwtbWlkX3dkdC5jCitGOglpbmNsdWRlL2xpbnV4L21mZC9pbnRlbF9z
b2NfcG1pY19tcmZsZC5oCitGOglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEveDg2L2ludGVs
LW1pZF93ZHQuaAorRjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3g4Ni9pbnRlbF9zY3Vf
aXBjLmgKKworSU5URUwgUC1Vbml0IElQQyBEUklWRVIKK006CVpoYSBRaXBlbmcgPHFpcGVuZy56
aGFAaW50ZWwuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL2ludGVsX3B1bml0X2lwYy5oCitG
Oglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wdW5pdF9pcGMuYworCitJTlRFTCBQTUMgQ09S
RSBEUklWRVIKK006CVJham5lZXNoIEJoYXJkd2FqIDxpcmVuaWMucmFqbmVlc2hAZ21haWwuY29t
PgorTToJRGF2aWQgRSBCb3ggPGRhdmlkLmUuYm94QGludGVsLmNvbT4KK0w6CXBsYXRmb3JtLWRy
aXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L0FCSS90ZXN0aW5nL3N5c2ZzLXBsYXRmb3JtLWludGVsLXBtYworRjoJZHJpdmVycy9wbGF0Zm9y
bS94ODYvaW50ZWwvcG1jLworRjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3g4Ni9pbnRl
bF9wbWNfaXBjLmgKKworSU5URUwgUE1JQyBHUElPIERSSVZFUlMKK006CUFuZHkgU2hldmNoZW5r
byA8YW5keUBrZXJuZWwub3JnPgorUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2FuZHkvbGludXgtZ3Bpby1pbnRlbC5naXQK
K0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLSpjb3ZlLmMKKworSU5URUwgUE1JQyBNVUxUSUZVTkNUSU9O
IERFVklDRSBEUklWRVJTCitNOglBbmR5IFNoZXZjaGVua28gPGFuZHlAa2VybmVsLm9yZz4KK1M6
CVN1cHBvcnRlZAorRjoJZHJpdmVycy9tZmQvaW50ZWxfc29jX3BtaWMqCitGOglpbmNsdWRlL2xp
bnV4L21mZC9pbnRlbF9zb2NfcG1pYyoKKworSU5URUwgUE1UIERSSVZFUlMKK006CURhdmlkIEUu
IEJveCA8ZGF2aWQuZS5ib3hAbGludXguaW50ZWwuY29tPgorUzoJU3VwcG9ydGVkCitGOglkcml2
ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC9wbXQvCisKK0lOVEVMIFBSTy9XSVJFTEVTUyAyMTAwLCAy
MjAwQkcsIDI5MTVBQkcgTkVUV09SSyBDT05ORUNUSU9OIFNVUFBPUlQKK006CVN0YW5pc2xhdiBZ
YWtvdmxldiA8c3Rhcy55YWtvdmxldkBnbWFpbC5jb20+CitMOglsaW51eC13aXJlbGVzc0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9k
ZXZpY2VfZHJpdmVycy93aWZpL2ludGVsL2lwdzIxMDAucnN0CitGOglEb2N1bWVudGF0aW9uL25l
dHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvd2lmaS9pbnRlbC9pcHcyMjAwLnJzdAorRjoJZHJpdmVy
cy9uZXQvd2lyZWxlc3MvaW50ZWwvaXB3MngwMC8KKworSU5URUwgUFNUQVRFIERSSVZFUgorTToJ
U3Jpbml2YXMgUGFuZHJ1dmFkYSA8c3Jpbml2YXMucGFuZHJ1dmFkYUBsaW51eC5pbnRlbC5jb20+
CitNOglMZW4gQnJvd24gPGxlbmJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2NwdWZyZXEvaW50ZWxfcHN0YXRlLmMKKwor
SU5URUwgUFRQIERGTCBUb0QgRFJJVkVSCitNOglUaWFuZmVpIFpoYW5nIDx0aWFuZmVpLnpoYW5n
QGludGVsLmNvbT4KK0w6CWxpbnV4LWZwZ2FAdmdlci5rZXJuZWwub3JnCitMOgluZXRkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3B0cC9wdHBfZGZsX3RvZC5j
CisKK0lOVEVMIFFVQURSQVRVUkUgRU5DT0RFUiBQRVJJUEhFUkFMIERSSVZFUgorTToJSmFya2tv
IE5pa3VsYSA8amFya2tvLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+CitMOglsaW51eC1paW9Admdl
ci5rZXJuZWwub3JnCitGOglkcml2ZXJzL2NvdW50ZXIvaW50ZWwtcWVwLmMKKworSU5URUwgU0NV
IERSSVZFUlMKK006CU1pa2EgV2VzdGVyYmVyZyA8bWlrYS53ZXN0ZXJiZXJnQGxpbnV4LmludGVs
LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX3NjdV8q
CitGOglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEveDg2L2ludGVsX3NjdV9pcGMuaAorCitJ
TlRFTCBTRFNJIERSSVZFUgorTToJRGF2aWQgRS4gQm94IDxkYXZpZC5lLmJveEBsaW51eC5pbnRl
bC5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3Nkc2ku
YworRjoJdG9vbHMvYXJjaC94ODYvaW50ZWxfc2RzaS8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRl
c3RzL2RyaXZlcnMvc2RzaS8KKworSU5URUwgU0dYCitNOglKYXJra28gU2Fra2luZW4gPGphcmtr
b0BrZXJuZWwub3JnPgorUjoJRGF2ZSBIYW5zZW4gPGRhdmUuaGFuc2VuQGxpbnV4LmludGVsLmNv
bT4KK0w6CWxpbnV4LXNneEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorUToJaHR0cHM6
Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2ludGVsLXNneC9saXN0LworVDoJZ2l0IGdp
dDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXAvdGlwLmdpdCB4
ODYvc2d4CitGOglEb2N1bWVudGF0aW9uL2FyY2gveDg2L3NneC5yc3QKK0Y6CWFyY2gveDg2L2Vu
dHJ5L3Zkc28vdnNneC5TCitGOglhcmNoL3g4Ni9pbmNsdWRlL2FzbS9zZ3guaAorRjoJYXJjaC94
ODYvaW5jbHVkZS91YXBpL2FzbS9zZ3guaAorRjoJYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvKgor
RjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc2d4LyoKK0s6CVxiU0dYXworCitJTlRFTCBTS1lM
QUtFIElOVDM0NzIgQUNQSSBERVZJQ0UgRFJJVkVSCitNOglEYW5pZWwgU2NhbGx5IDxkanJzY2Fs
bHlAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50
ZWwvaW50MzQ3Mi8KK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS94ODYvaW50MzQ3Mi5o
CisKK0lOVEVMIFNQRUVEIFNFTEVDVCBURUNITk9MT0dZCitNOglTcmluaXZhcyBQYW5kcnV2YWRh
IDxzcmluaXZhcy5wYW5kcnV2YWRhQGxpbnV4LmludGVsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZl
ci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3Jt
L3g4Ni9pbnRlbC9zcGVlZF9zZWxlY3RfaWYvCitGOglpbmNsdWRlL3VhcGkvbGludXgvaXNzdF9p
Zi5oCitGOgl0b29scy9wb3dlci94ODYvaW50ZWwtc3BlZWQtc2VsZWN0LworCitJTlRFTCBTVFJB
VElYMTAgRklSTVdBUkUgRFJJVkVSUworTToJRGluaCBOZ3V5ZW4gPGRpbmd1eWVuQGtlcm5lbC5v
cmc+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Rpbmd1eWVu
L2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZpY2VzLXBs
YXRmb3JtLXN0cmF0aXgxMC1yc3UKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9maXJtd2FyZS9pbnRlbCxzdHJhdGl4MTAtc3ZjLnR4dAorRjoJZHJpdmVycy9maXJtd2FyZS9z
dHJhdGl4MTAtcnN1LmMKK0Y6CWRyaXZlcnMvZmlybXdhcmUvc3RyYXRpeDEwLXN2Yy5jCitGOglp
bmNsdWRlL2xpbnV4L2Zpcm13YXJlL2ludGVsL3N0cmF0aXgxMC1zbWMuaAorRjoJaW5jbHVkZS9s
aW51eC9maXJtd2FyZS9pbnRlbC9zdHJhdGl4MTAtc3ZjLWNsaWVudC5oCisKK0lOVEVMIFRFTEVN
RVRSWSBEUklWRVIKK006CVJham5lZXNoIEJoYXJkd2FqIDxpcmVuaWMucmFqbmVlc2hAZ21haWwu
Y29tPgorTToJIkRhdmlkIEUuIEJveCIgPGRhdmlkLmUuYm94QGxpbnV4LmludGVsLmNvbT4KK0w6
CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglh
cmNoL3g4Ni9pbmNsdWRlL2FzbS9pbnRlbF90ZWxlbWV0cnkuaAorRjoJZHJpdmVycy9wbGF0Zm9y
bS94ODYvaW50ZWwvdGVsZW1ldHJ5LworCitJTlRFTCBUT1VDSCBIT1NUIENPTlRST0xMRVIgKFRI
QykgRFJJVkVSCitNOglFdmVuIFh1IDxldmVuLnh1QGludGVsLmNvbT4KK006CVhpbnBlbmcgU3Vu
IDx4aW5wZW5nLnN1bkBpbnRlbC5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2hpZC9p
bnRlbC10aGMtaGlkLworCitJTlRFTCBUUE1JIERSSVZFUgorTToJU3Jpbml2YXMgUGFuZHJ1dmFk
YSA8c3Jpbml2YXMucGFuZHJ1dmFkYUBsaW51eC5pbnRlbC5jb20+CitMOglwbGF0Zm9ybS1kcml2
ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9B
QkkvdGVzdGluZy9kZWJ1Z2ZzLXRwbWkKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3Zz
ZWNfdHBtaS5jCitGOglpbmNsdWRlL2xpbnV4L2ludGVsX3RwbWkuaAorCitJTlRFTCBVTkNPUkUg
RlJFUVVFTkNZIENPTlRST0wKK006CVNyaW5pdmFzIFBhbmRydXZhZGEgPHNyaW5pdmFzLnBhbmRy
dXZhZGFAbGludXguaW50ZWwuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcG0vaW50
ZWxfdW5jb3JlX2ZyZXF1ZW5jeV9zY2FsaW5nLnJzdAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYv
aW50ZWwvdW5jb3JlLWZyZXF1ZW5jeS8KKworSU5URUwgVkVORE9SIFNQRUNJRklDIEVYVEVOREVE
IENBUEFCSUxJVElFUyBEUklWRVIKK006CURhdmlkIEUuIEJveCA8ZGF2aWQuZS5ib3hAbGludXgu
aW50ZWwuY29tPgorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC92
c2VjLmMKK0Y6CWluY2x1ZGUvbGludXgvaW50ZWxfdnNlYy5oCisKK0lOVEVMIFZJUlRVQUwgQlVU
VE9OIERSSVZFUgorTToJQWNlTGFuIEthbyA8YWNlbGFuLmthb0BjYW5vbmljYWwuY29tPgorTDoJ
cGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRy
aXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3ZidG4uYworCitJTlRFTCBXSVJFTEVTUyAzOTQ1QUJH
L0JHLCA0OTY1QUdOIChpd2xlZ2FjeSkKK006CVN0YW5pc2xhdyBHcnVzemthIDxzdGZfeGxAd3Au
cGw+CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
ZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsZWdhY3kvCisKK0lOVEVMIFdJUkVMRVNTIFdJ
RkkgTElOSyAoaXdsd2lmaSkKK006CU1pcmkgS29yZW5ibGl0IDxtaXJpYW0ucmFjaGVsLmtvcmVu
YmxpdEBpbnRlbC5jb20+CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1
cHBvcnRlZAorVzoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvZHJp
dmVycy9pd2x3aWZpCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L2l3bHdpZmkvaXdsd2lmaS5naXQKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2lu
dGVsL2l3bHdpZmkvCisKK0lOVEVMIFdNSSBTTElNIEJPT1RMT0FERVIgKFNCTCkgRklSTVdBUkUg
VVBEQVRFIERSSVZFUgorTToJSml0aHUgSm9zZXBoIDxqaXRodS5qb3NlcGhAaW50ZWwuY29tPgor
UzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9zbGltYm9vdGxvYWRlci5naXRodWIuaW8vc2VjdXJp
dHkvZmlybXdhcmUtdXBkYXRlLmh0bWwKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsL3dt
aS9zYmwtZnctdXBkYXRlLmMKKworSU5URUwgV01JIFRIVU5ERVJCT0xUIEZPUkNFIFBPV0VSIERS
SVZFUgorTDoJRGVsbC5DbGllbnQuS2VybmVsQGRlbGwuY29tCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbC93bWkvdGh1bmRlcmJvbHQuYworCitJTlRFTCBXV0FO
IElPU00gRFJJVkVSCitNOglNIENoZXRhbiBLdW1hciA8bS5jaGV0YW4ua3VtYXJAaW50ZWwuY29t
PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9u
ZXQvd3dhbi9pb3NtLworCitJTlRFTChSKSBGTEVYSUJMRSBSRVRVUk4gQU5EIEVWRU5UIERFTElW
RVJZCitNOglYaW4gTGkgPHhpbkB6eXRvci5jb20+CitNOgkiSC4gUGV0ZXIgQW52aW4iIDxocGFA
enl0b3IuY29tPgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2FyY2gveDg2L3g4Nl82
NC9mcmVkLnJzdAorRjoJYXJjaC94ODYvZW50cnkvZW50cnlfNjRfZnJlZC5TCitGOglhcmNoL3g4
Ni9lbnRyeS9lbnRyeV9mcmVkLmMKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL2ZyZWQuaAorRjoJ
YXJjaC94ODYva2VybmVsL2ZyZWQuYworCitJTlRFTChSKSBUUkFDRSBIVUIKK006CUFsZXhhbmRl
ciBTaGlzaGtpbiA8YWxleGFuZGVyLnNoaXNoa2luQGxpbnV4LmludGVsLmNvbT4KK1M6CVN1cHBv
cnRlZAorRjoJRG9jdW1lbnRhdGlvbi90cmFjZS9pbnRlbF90aC5yc3QKK0Y6CWRyaXZlcnMvaHd0
cmFjaW5nL2ludGVsX3RoLworRjoJaW5jbHVkZS9saW51eC9pbnRlbF90aC5oCisKK0lOVEVMKFIp
IFRSVVNURUQgRVhFQ1VUSU9OIFRFQ0hOT0xPR1kgKFRYVCkKK006CU5pbmcgU3VuIDxuaW5nLnN1
bkBpbnRlbC5jb20+CitMOgl0Ym9vdC1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKK1M6CVN1
cHBvcnRlZAorVzoJaHR0cDovL3Rib290LnNvdXJjZWZvcmdlLm5ldAorVDoJaGcgaHR0cDovL3Ri
b290LmhnLnNvdXJjZWZvcmdlLm5ldDo4MDAwL2hncm9vdC90Ym9vdC90Ym9vdAorRjoJRG9jdW1l
bnRhdGlvbi9hcmNoL3g4Ni9pbnRlbF90eHQucnN0CitGOglhcmNoL3g4Ni9rZXJuZWwvdGJvb3Qu
YworRjoJaW5jbHVkZS9saW51eC90Ym9vdC5oCisKK0lOVEVSQ09OTkVDVCBBUEkKK006CUdlb3Jn
aSBEamFrb3YgPGRqYWtvdkBrZXJuZWwub3JnPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51
eC9rZXJuZWwvZ2l0L2RqYWtvdi9pY2MuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvaW50ZXJjb25uZWN0LworRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2ludGVy
Y29ubmVjdC5yc3QKK0Y6CWRyaXZlcnMvaW50ZXJjb25uZWN0LworRjoJaW5jbHVkZS9kdC1iaW5k
aW5ncy9pbnRlcmNvbm5lY3QvCitGOglpbmNsdWRlL2xpbnV4L2ludGVyY29ubmVjdC1wcm92aWRl
ci5oCitGOglpbmNsdWRlL2xpbnV4L2ludGVyY29ubmVjdC5oCisKK0lOVEVSUlVQVCBDT1VOVEVS
IERSSVZFUgorTToJT2xla3NpaiBSZW1wZWwgPG8ucmVtcGVsQHBlbmd1dHJvbml4LmRlPgorUjoJ
UGVuZ3V0cm9uaXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT4KK0w6CWxpbnV4
LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9jb3VudGVyL2ludGVycnVwdC1jb3VudGVyLnlhbWwKK0Y6CWRyaXZlcnMvY291bnRlci9pbnRl
cnJ1cHQtY250LmMKKworSU5URVJTSUwgSVNMNzk5OFggVklERU8gREVDT0RFUiBEUklWRVIKK006
CU1pY2hhZWwgVHJldHRlciA8bS50cmV0dGVyQHBlbmd1dHJvbml4LmRlPgorUjoJUGVuZ3V0cm9u
aXggS2VybmVsIFRlYW0gPGtlcm5lbEBwZW5ndXRyb25peC5kZT4KK0w6CWxpbnV4LW1lZGlhQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL21lZGlhL2kyYy9pc2lsLGlzbDc5OTg3LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEv
aTJjL2lzbDc5OTh4LmMKKworSU5WRU5TRU5TRSBJQ00tNDI2eHggSU1VIERSSVZFUgorTToJSmVh
bi1CYXB0aXN0ZSBNYW5leXJvbCA8amVhbi1iYXB0aXN0ZS5tYW5leXJvbEB0ZGsuY29tPgorTDoJ
bGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9pbnZl
bnNlbnNlLnRkay5jb20vCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1p
aW8taW52X2ljbTQyNjAwCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlv
L2ltdS9pbnZlbnNlbnNlLGljbTQyNjAwLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2ltdS9pbnZfaWNt
NDI2MDAvCisKK0lOVkVOU0VOU0UgTVBVLTMwNTAgR1lST1NDT1BFIERSSVZFUgorTToJTGludXMg
V2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgorTDoJbGludXgtaWlvQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2lpby9neXJvc2NvcGUvaW52ZW5zZW5zZSxtcHUzMDUwLnlhbWwKK0Y6CWRyaXZlcnMvaWlv
L2d5cm8vbXB1MzA1MCoKKworSU5WRU5TRU5TRSBNUFUtNjA1MCBJTVUgRFJJVkVSCitNOglKZWFu
LUJhcHRpc3RlIE1hbmV5cm9sIDxqZWFuLWJhcHRpc3RlLm1hbmV5cm9sQHRkay5jb20+CitMOgls
aW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2ludmVu
c2Vuc2UudGRrLmNvbS8KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8v
aW11L2ludmVuc2Vuc2UsbXB1NjA1MC55YW1sCitGOglkcml2ZXJzL2lpby9pbXUvaW52X21wdTYw
NTAvCisKK0lPQzMgRVRIRVJORVQgRFJJVkVSCitNOglUaG9tYXMgQm9nZW5kb2VyZmVyIDx0c2Jv
Z2VuZEBhbHBoYS5mcmFua2VuLmRlPgorTDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3NnaS9pb2MzLWV0aC5jCisKK0lP
TU1VIERNQS1BUEkgTEFZRVIKK006CVJvYmluIE11cnBoeSA8cm9iaW4ubXVycGh5QGFybS5jb20+
CitMOglpb21tdUBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvaW9tbXUvbGludXguZ2l0CitG
Oglkcml2ZXJzL2lvbW11L2RtYS1pb21tdS5jCitGOglkcml2ZXJzL2lvbW11L2RtYS1pb21tdS5o
CitGOglkcml2ZXJzL2lvbW11L2lvdmEuYworRjoJaW5jbHVkZS9saW51eC9pb21tdS1kbWEuaAor
RjoJaW5jbHVkZS9saW51eC9pb3ZhLmgKKworSU9NTVUgU1VCU1lTVEVNCitNOglKb2VyZyBSb2Vk
ZWwgPGpvcm9AOGJ5dGVzLm9yZz4KK006CVdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+CitS
OglSb2JpbiBNdXJwaHkgPHJvYmluLm11cnBoeUBhcm0uY29tPgorTDoJaW9tbXVAbGlzdHMubGlu
dXguZGV2CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L2lvbW11L2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL2lvbW11LworRjoJZHJpdmVycy9pb21tdS8KK0Y6CWluY2x1ZGUvbGlu
dXgvaW9tbXUuaAorRjoJaW5jbHVkZS9saW51eC9pb3ZhLmgKK0Y6CWluY2x1ZGUvbGludXgvb2Zf
aW9tbXUuaAorCitJT01NVUZECitNOglKYXNvbiBHdW50aG9ycGUgPGpnZ0BudmlkaWEuY29tPgor
TToJS2V2aW4gVGlhbiA8a2V2aW4udGlhbkBpbnRlbC5jb20+CitMOglpb21tdUBsaXN0cy5saW51
eC5kZXYKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvamdnL2lvbW11ZmQuZ2l0CitGOglEb2N1bWVudGF0aW9uL3VzZXJz
cGFjZS1hcGkvaW9tbXVmZC5yc3QKK0Y6CWRyaXZlcnMvaW9tbXUvaW9tbXVmZC8KK0Y6CWluY2x1
ZGUvbGludXgvaW9tbXVmZC5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvaW9tbXVmZC5oCitGOgl0
b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9pb21tdS8KKworSU9TWVMtTUFQIEhFTFBFUlMKK006CVRo
b21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgorTDoJZHJpLWRldmVsQGxpc3Rz
LmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFiLmZy
ZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglpbmNsdWRlL2xpbnV4L2lvc3lz
LW1hcC5oCisKK0lPX1VSSU5HCitNOglKZW5zIEF4Ym9lIDxheGJvZUBrZXJuZWwuZGs+CitNOglQ
YXZlbCBCZWd1bmtvdiA8YXNtbC5zaWxlbmNlQGdtYWlsLmNvbT4KK0w6CWlvLXVyaW5nQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwuZGsvbGlu
dXgtYmxvY2sKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLmRrL2xpYnVyaW5nCitGOglpbmNsdWRl
L2xpbnV4L2lvX3VyaW5nLworRjoJaW5jbHVkZS9saW51eC9pb191cmluZy5oCitGOglpbmNsdWRl
L2xpbnV4L2lvX3VyaW5nX3R5cGVzLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2lvX3VyaW5n
LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9pb191cmluZy5oCitGOglpb191cmluZy8KKworSVBN
SSBTVUJTWVNURU0KK006CUNvcmV5IE1pbnlhcmQgPGNvcmV5QG1pbnlhcmQubmV0PgorTDoJb3Bl
bmlwbWktZGV2ZWxvcGVyQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAobW9kZXJhdGVkIGZvciBub24t
c3Vic2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly9vcGVuaXBtaS5zb3VyY2Vmb3Jn
ZS5uZXQvCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL2NtaW55YXJkL2xpbnV4LWlwbWkuZ2l0
IGZvci1uZXh0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaXBtaS8KK0Y6
CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9pcG1pLnJzdAorRjoJZHJpdmVycy9jaGFyL2lwbWkv
CitGOglpbmNsdWRlL2xpbnV4L2lwbWkqCitGOglpbmNsdWRlL3VhcGkvbGludXgvaXBtaSoKKwor
SVBTIFNDU0kgUkFJRCBEUklWRVIKK006CUFkYXB0ZWMgT0VNIFJhaWQgU29sdXRpb25zIDxhYWNy
YWlkQG1pY3Jvc2VtaS5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorVzoJaHR0cDovL3d3dy5hZGFwdGVjLmNvbS8KK0Y6CWRyaXZlcnMvc2NzaS9pcHMq
CisKK0lQVlMKK006CVNpbW9uIEhvcm1hbiA8aG9ybXNAdmVyZ2UubmV0LmF1PgorTToJSnVsaWFu
IEFuYXN0YXNvdiA8amFAc3NpLmJnPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJbHZz
LWRldmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ob3Jtcy9pcHZzLW5leHQuZ2l0CitU
OglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2hvcm1z
L2lwdnMuZ2l0CitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaXB2cy1zeXNjdGwucnN0CitG
OglpbmNsdWRlL25ldC9pcF92cy5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvaXBfdnMuaAorRjoJ
bmV0L25ldGZpbHRlci9pcHZzLworCitJUFdJUkVMRVNTIERSSVZFUgorTToJSmlyaSBLb3NpbmEg
PGppa29zQGtlcm5lbC5vcmc+CitNOglEYXZpZCBTdGVyYmEgPGRzdGVyYmFAc3VzZS5jb20+CitT
OglPZGQgRml4ZXMKK0Y6CWRyaXZlcnMvdHR5L2lwd2lyZWxlc3MvCisKK0lST04gREVWSUNFIEFV
RElPIENPREVDIERSSVZFUlMKK006CUtpc2VvayBKbyA8a2lzZW9rLmpvQGlyb25kZXZpY2UuY29t
PgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvaXJvbmRldmljZSwqCitGOglzb3Vu
ZC9zb2MvY29kZWNzL3NtYSoKKworSVJRIERPTUFJTlMgKElSUSBOVU1CRVIgTUFQUElORyBMSUJS
QVJZKQorTToJVGhvbWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CitTOglNYWludGFp
bmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0
L3RpcC90aXAuZ2l0IGlycS9jb3JlCitGOglEb2N1bWVudGF0aW9uL2NvcmUtYXBpL2lycS9pcnEt
ZG9tYWluLnJzdAorRjoJaW5jbHVkZS9saW51eC9pcnFkb21haW4uaAorRjoJaW5jbHVkZS9saW51
eC9pcnFkb21haW5fZGVmcy5oCitGOglrZXJuZWwvaXJxL2lycWRvbWFpbi5jCitGOglrZXJuZWwv
aXJxL21zaS5jCisKK0lSUSBTVUJTWVNURU0KK006CVRob21hcyBHbGVpeG5lciA8dGdseEBsaW51
dHJvbml4LmRlPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90
aXAvdGlwLmdpdCBpcnEvY29yZQorRjoJaW5jbHVkZS9saW51eC9ncm91cF9jcHVzLmgKK0Y6CWlu
Y2x1ZGUvbGludXgvaXJxLmgKK0Y6CWluY2x1ZGUvbGludXgvaXJxaGFuZGxlci5oCitGOglpbmNs
dWRlL2xpbnV4L2lycW5yLmgKK0Y6CWluY2x1ZGUvbGludXgvaXJxcmV0dXJuLmgKK0Y6CWtlcm5l
bC9pcnEvCitGOglsaWIvZ3JvdXBfY3B1cy5jCisKK0lSUUNISVAgRFJJVkVSUworTToJVGhvbWFz
IEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L3RpcC90aXAuZ2l0IGlycS9jb3JlCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvCitGOglkcml2ZXJzL2ly
cWNoaXAvCitGOglpbmNsdWRlL2xpbnV4L2lycWNoaXAuaAorCitJU0EKK006CVdpbGxpYW0gQnJl
YXRoaXR0IEdyYXkgPHdiZ0BrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kcml2ZXItYXBpL2lzYS5yc3QKK0Y6CWRyaXZlcnMvYmFzZS9pc2EuYworRjoJaW5jbHVk
ZS9saW51eC9pc2EuaAorCitJU0EgUkFESU8gTU9EVUxFCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJr
dWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21l
ZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1pc2EqCisKK0lTQVBOUAorTToJ
SmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vdXNlcnNwYWNlLWFwaS9pc2FwbnAucnN0CitGOglkcml2ZXJzL3BucC9pc2FwbnAv
CitGOglpbmNsdWRlL2xpbnV4L2lzYXBucC5oCisKK0lTQ1NJCitNOglMZWUgRHVuY2FuIDxsZHVu
Y2FuQHN1c2UuY29tPgorTToJQ2hyaXMgTGVlY2ggPGNsZWVjaEByZWRoYXQuY29tPgorTToJTWlr
ZSBDaHJpc3RpZSA8bWljaGFlbC5jaHJpc3RpZUBvcmFjbGUuY29tPgorTDoJb3Blbi1pc2NzaUBn
b29nbGVncm91cHMuY29tCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVzoJd3d3Lm9wZW4taXNjc2kuY29tCitGOglkcml2ZXJzL3Njc2kvKmlzY3NpKgorRjoJ
aW5jbHVkZS9zY3NpLyppc2NzaSoKKworaVNDU0kgQk9PVCBGSVJNV0FSRSBUQUJMRSAoaUJGVCkg
RFJJVkVSCitNOglQZXRlciBKb25lcyA8cGpvbmVzQHJlZGhhdC5jb20+CitNOglLb25yYWQgUnpl
c3p1dGVrIFdpbGsgPGtvbnJhZEBrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9maXJtd2FyZS9pc2NzaV9pYmZ0KgorCitJU0NTSSBFWFRFTlNJT05TIEZPUiBSRE1BIChJU0VS
KSBJTklUSUFUT1IKK006CVNhZ2kgR3JpbWJlcmcgPHNhZ2lAZ3JpbWJlcmcubWU+CitNOglNYXgg
R3VydG92b3kgPG1ndXJ0b3ZveUBudmlkaWEuY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5vcGVuZmFicmljcy5vcmcKK1c6CXd3
dy5vcGVuLWlzY3NpLm9yZworUToJaHR0cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3Qv
bGludXgtcmRtYS9saXN0LworRjoJZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyLworCitJU0NT
SSBFWFRFTlNJT05TIEZPUiBSRE1BIChJU0VSKSBUQVJHRVQKK006CVNhZ2kgR3JpbWJlcmcgPHNh
Z2lAZ3JpbWJlcmcubWU+CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworTDoJdGFyZ2V0
LWRldmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L25hYi90YXJnZXQtcGVuZGluZy5naXQg
bWFzdGVyCitGOglkcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0CisKK0lTRE4vQ01UUCBPVkVS
IEJMVUVUT09USAorTToJS2Fyc3RlbiBLZWlsIDxpc2RuQGxpbnV4LXBpbmdpLmRlPgorTDoJaXNk
bjRsaW51eEBsaXN0c2Vydi5pc2RuNGxpbnV4LmRlIChzdWJzY3JpYmVycy1vbmx5KQorTDoJbmV0
ZGV2QHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitXOglodHRwOi8vd3d3LmlzZG40bGlu
dXguZGUKK0Y6CURvY3VtZW50YXRpb24vaXNkbi8KK0Y6CWRyaXZlcnMvaXNkbi9jYXBpLworRjoJ
aW5jbHVkZS9saW51eC9pc2RuLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L2lzZG4vCitGOgluZXQv
Ymx1ZXRvb3RoL2NtdHAvCisKK0lTRE4vbUlTRE4gU1VCU1lTVEVNCitNOglLYXJzdGVuIEtlaWwg
PGlzZG5AbGludXgtcGluZ2kuZGU+CitMOglpc2RuNGxpbnV4QGxpc3RzZXJ2LmlzZG40bGludXgu
ZGUgKHN1YnNjcmliZXJzLW9ubHkpCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitXOglodHRwOi8vd3d3LmlzZG40bGludXguZGUKK0Y6CWRyaXZlcnMvaXNkbi9LY29u
ZmlnCitGOglkcml2ZXJzL2lzZG4vTWFrZWZpbGUKK0Y6CWRyaXZlcnMvaXNkbi9oYXJkd2FyZS8K
K0Y6CWRyaXZlcnMvaXNkbi9tSVNETi8KKworSVNMMjgwMjIgSEFSRFdBUkUgTU9OSVRPUklORyBE
UklWRVIKK006CUNhcnN0ZW4gU3BpZcOfIDxtYWlsQGNhcnN0ZW4tc3BpZXNzLmRlPgorTDoJbGlu
dXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vcmVuZXNhcyxpc2wyODAyMi55YW1sCitGOglEb2N1
bWVudGF0aW9uL2h3bW9uL2lzbDI4MDIyLnJzdAorRjoJZHJpdmVycy9od21vbi9pc2wyODAyMi5j
CisKK0lTT0ZTIEZJTEVTWVNURU0KK006CUphbiBLYXJhIDxqYWNrQHN1c2UuY3o+CitMOglsaW51
eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9maWxlc3lzdGVtcy9pc29mcy5yc3QKK0Y6CWZzL2lzb2ZzLworCitJVDg3IEhBUkRXQVJFIE1P
TklUT1JJTkcgRFJJVkVSCitNOglKZWFuIERlbHZhcmUgPGpkZWx2YXJlQHN1c2UuY29tPgorTDoJ
bGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2h3bW9uL2l0ODcucnN0CitGOglkcml2ZXJzL2h3bW9uL2l0ODcuYworCitJVDkxM1ggTUVE
SUEgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJ
aHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9q
ZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglkcml2ZXJzL21lZGlhL3R1bmVycy9pdDkxM3gqCisK
K0lURSBJVDYyNjMgTFZEUyBUTyBIRE1JIEJSSURHRSBEUklWRVIKK006CUxpdSBZaW5nIDx2aWN0
b3IubGl1QG54cC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglN
YWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNj
L2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5
L2JyaWRnZS9pdGUsaXQ2MjYzLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9icmlkZ2UvaXRlLWl0
NjI2My5jCisKK0lURSBJVDY2MTIxIEhETUkgQlJJREdFIERSSVZFUgorTToJUGhvbmcgTEUgPHBs
ZUBiYXlsaWJyZS5jb20+CitNOglOZWlsIEFybXN0cm9uZyA8bmVpbC5hcm1zdHJvbmdAbGluYXJv
Lm9yZz4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5v
cmcvZHJtL21pc2Mva2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2Rpc3BsYXkvYnJpZGdlL2l0ZSxpdDY2MTIxLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9i
cmlkZ2UvaXRlLWl0NjYxMjEuYworCitJVlRWIFZJREVPNExJTlVYIERSSVZFUgorTToJQW5keSBX
YWxscyA8YXdhbGxzQG1kLm1ldHJvY2FzdC5uZXQ+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6
Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbWVk
aWEvaXZ0dioKK0Y6CWRyaXZlcnMvbWVkaWEvcGNpL2l2dHYvCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvaXZ0dioKKworSVgyNTA1ViBNRURJQSBEUklWRVIKK006CU1hbGNvbG0gUHJpZXN0bGV5IDx0
dmJveHNweUBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGlu
dXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS9kdmIt
ZnJvbnRlbmRzL2l4MjUwNXYqCisKK0pBSUxIT1VTRSBIWVBFUlZJU09SIElOVEVSRkFDRQorTToJ
SmFuIEtpc3prYSA8amFuLmtpc3prYUBzaWVtZW5zLmNvbT4KK0w6CWphaWxob3VzZS1kZXZAZ29v
Z2xlZ3JvdXBzLmNvbQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC94ODYvaW5jbHVkZS9hc20vamFp
bGhvdXNlX3BhcmEuaAorRjoJYXJjaC94ODYva2VybmVsL2phaWxob3VzZS5jCisKK0pGUyBGSUxF
U1lTVEVNCitNOglEYXZlIEtsZWlrYW1wIDxzaGFnZ3lAa2VybmVsLm9yZz4KK0w6CWpmcy1kaXNj
dXNzaW9uQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorUzoJT2RkIEZpeGVzCitXOglodHRwOi8vamZz
LnNvdXJjZWZvcmdlLm5ldC8KK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20va2xlaWthbXAvbGlu
dXgtc2hhZ2d5LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9qZnMucnN0CitGOglm
cy9qZnMvCisKK0pNRSBORVRXT1JLIERSSVZFUgorTToJR3VvLUZ1IFRzZW5nIDxjb29sZGF2aWRA
Y29vbGRhdmlkLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcwor
RjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvam1lLioKKworSk9VUk5BTExJTkcgRkxBU0ggRklMRSBT
WVNURU0gVjIgKEpGRlMyKQorTToJRGF2aWQgV29vZGhvdXNlIDxkd213MkBpbmZyYWRlYWQub3Jn
PgorTToJUmljaGFyZCBXZWluYmVyZ2VyIDxyaWNoYXJkQG5vZC5hdD4KK0w6CWxpbnV4LW10ZEBs
aXN0cy5pbmZyYWRlYWQub3JnCitTOglPZGQgRml4ZXMKK1c6CWh0dHA6Ly93d3cubGludXgtbXRk
LmluZnJhZGVhZC5vcmcvZG9jL2pmZnMyLmh0bWwKK1Q6CWdpdCBnaXQ6Ly9naXQuaW5mcmFkZWFk
Lm9yZy91Ymlmcy0yLjYuZ2l0CitGOglmcy9qZmZzMi8KK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9q
ZmZzMi5oCisKK0pPVVJOQUxMSU5HIExBWUVSIEZPUiBCTE9DSyBERVZJQ0VTIChKQkQyKQorTToJ
IlRoZW9kb3JlIFRzJ28iIDx0eXRzb0BtaXQuZWR1PgorTToJSmFuIEthcmEgPGphY2tAc3VzZS5j
b20+CitMOglsaW51eC1leHQ0QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZnMv
amJkMi8KK0Y6CWluY2x1ZGUvbGludXgvamJkMi5oCisKK0pQVSBWNEwyIE1FTTJNRU0gRFJJVkVS
IEZPUiBSRU5FU0FTCitNOglNaWtoYWlsIFVseWFub3YgPG1pa2hhaWwudWx5YW5vdkBjb2dlbnRl
bWJlZGRlZC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJl
bmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tZWRp
YS9wbGF0Zm9ybS9yZW5lc2FzL3JjYXJfanB1LmMKKworSlNNIE5lbyBQQ0kgYmFzZWQgc2VyaWFs
IGNhcmQKK0w6CWxpbnV4LXNlcmlhbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJZHJp
dmVycy90dHkvc2VyaWFsL2pzbS8KKworSzEwVEVNUCBIQVJEV0FSRSBNT05JVE9SSU5HIERSSVZF
UgorTToJQ2xlbWVucyBMYWRpc2NoIDxjbGVtZW5zQGxhZGlzY2guZGU+CitMOglsaW51eC1od21v
bkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24v
azEwdGVtcC5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vazEwdGVtcC5jCisKK0s4VEVNUCBIQVJEV0FS
RSBNT05JVE9SSU5HIERSSVZFUgorTToJUnVkb2xmIE1hcmVrIDxyLm1hcmVrQGFzc2VtYmxlci5j
ej4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9od21vbi9rOHRlbXAucnN0CitGOglkcml2ZXJzL2h3bW9uL2s4dGVtcC5jCisK
K0tBU0FOCitNOglBbmRyZXkgUnlhYmluaW4gPHJ5YWJpbmluLmEuYUBnbWFpbC5jb20+CitSOglB
bGV4YW5kZXIgUG90YXBlbmtvIDxnbGlkZXJAZ29vZ2xlLmNvbT4KK1I6CUFuZHJleSBLb25vdmFs
b3YgPGFuZHJleWtudmxAZ21haWwuY29tPgorUjoJRG1pdHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29n
bGUuY29tPgorUjoJVmluY2Vuem8gRnJhc2Npbm8gPHZpbmNlbnpvLmZyYXNjaW5vQGFybS5jb20+
CitMOglrYXNhbi1kZXZAZ29vZ2xlZ3JvdXBzLmNvbQorUzoJTWFpbnRhaW5lZAorQjoJaHR0cHM6
Ly9idWd6aWxsYS5rZXJuZWwub3JnL2J1Z2xpc3QuY2dpP2NvbXBvbmVudD1TYW5pdGl6ZXJzJnBy
b2R1Y3Q9TWVtb3J5JTIwTWFuYWdlbWVudAorRjoJRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva2Fz
YW4ucnN0CitGOglhcmNoLyovaW5jbHVkZS9hc20vKmthc2FuLmgKK0Y6CWFyY2gvKi9tbS9rYXNh
bl9pbml0KgorRjoJaW5jbHVkZS9saW51eC9rYXNhbiouaAorRjoJbGliL0tjb25maWcua2FzYW4K
K0Y6CW1tL2thc2FuLworRjoJc2NyaXB0cy9NYWtlZmlsZS5rYXNhbgorCitLQ09ORklHCitNOglN
YXNhaGlybyBZYW1hZGEgPG1hc2FoaXJveUBrZXJuZWwub3JnPgorTDoJbGludXgta2J1aWxkQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVs
Lm9yZy9wcm9qZWN0L2xpbnV4LWtidWlsZC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9tYXNhaGlyb3kvbGludXgta2J1aWxkLmdpdCBr
YnVpbGQKK0Y6CURvY3VtZW50YXRpb24va2J1aWxkL2tjb25maWcqCitGOglzY3JpcHRzL0tjb25m
aWcuaW5jbHVkZQorRjoJc2NyaXB0cy9rY29uZmlnLworCitLQ09SRQorTToJT21hciBTYW5kb3Zh
bCA8b3NhbmRvdkBvc2FuZG92LmNvbT4KK0w6CWxpbnV4LWRlYnVnZ2Vyc0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWZzL3Byb2Mva2NvcmUuYworRjoJaW5jbHVkZS9saW51eC9r
Y29yZS5oCisKK0tDT1YKK1I6CURtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4KK1I6
CUFuZHJleSBLb25vdmFsb3YgPGFuZHJleWtudmxAZ21haWwuY29tPgorTDoJa2FzYW4tZGV2QGdv
b2dsZWdyb3Vwcy5jb20KK1M6CU1haW50YWluZWQKK0I6CWh0dHBzOi8vYnVnemlsbGEua2VybmVs
Lm9yZy9idWdsaXN0LmNnaT9jb21wb25lbnQ9U2FuaXRpemVycyZwcm9kdWN0PU1lbW9yeSUyME1h
bmFnZW1lbnQKK0Y6CURvY3VtZW50YXRpb24vZGV2LXRvb2xzL2tjb3YucnN0CitGOglpbmNsdWRl
L2xpbnV4L2tjb3YuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2tjb3YuaAorRjoJa2VybmVsL2tj
b3YuYworRjoJc2NyaXB0cy9NYWtlZmlsZS5rY292CisKK0tDU0FOCitNOglNYXJjbyBFbHZlciA8
ZWx2ZXJAZ29vZ2xlLmNvbT4KK1I6CURtaXRyeSBWeXVrb3YgPGR2eXVrb3ZAZ29vZ2xlLmNvbT4K
K0w6CWthc2FuLWRldkBnb29nbGVncm91cHMuY29tCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2Rldi10b29scy9rY3Nhbi5yc3QKK0Y6CWluY2x1ZGUvbGludXgva2NzYW4qLmgKK0Y6
CWtlcm5lbC9rY3Nhbi8KK0Y6CWxpYi9LY29uZmlnLmtjc2FuCitGOglzY3JpcHRzL01ha2VmaWxl
Lmtjc2FuCisKK0tEVU1QCitNOglBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24u
b3JnPgorTToJQmFvcXVhbiBIZSA8YmhlQHJlZGhhdC5jb20+CitSOglWaXZlayBHb3lhbCA8dmdv
eWFsQHJlZGhhdC5jb20+CitSOglEYXZlIFlvdW5nIDxkeW91bmdAcmVkaGF0LmNvbT4KK0w6CWtl
eGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9sc2Uuc291
cmNlZm9yZ2UubmV0L2tkdW1wLworRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9rZHVtcC8K
K0Y6CWZzL3Byb2Mvdm1jb3JlLmMKK0Y6CWluY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCitGOglp
bmNsdWRlL2xpbnV4L2NyYXNoX2R1bXAuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZtY29yZS5o
CitGOglrZXJuZWwvY3Jhc2hfKi5jCisKK0tFRU5FIEZNIFJBRElPIFRSQU5TTUlUVEVSIERSSVZF
UgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwubmw+CitMOglsaW51eC1tZWRpYUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6
CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcmFkaW8v
cmFkaW8ta2VlbmUqCisKK0tFUk5FTCBBVVRPTU9VTlRFUgorTToJSWFuIEtlbnQgPHJhdmVuQHRo
ZW1hdy5uZXQ+CitMOglhdXRvZnNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglm
cy9hdXRvZnMvCisKK0tFUk5FTCBCVUlMRCArIGZpbGVzIGJlbG93IHNjcmlwdHMvICh1bmxlc3Mg
bWFpbnRhaW5lZCBlbHNld2hlcmUpCitNOglNYXNhaGlybyBZYW1hZGEgPG1hc2FoaXJveUBrZXJu
ZWwub3JnPgorUjoJTmF0aGFuIENoYW5jZWxsb3IgPG5hdGhhbkBrZXJuZWwub3JnPgorUjoJTmlj
b2xhcyBTY2hpZXIgPG5pY29sYXNAZmphc2xlLmV1PgorTDoJbGludXgta2J1aWxkQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9w
cm9qZWN0L2xpbnV4LWtidWlsZC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9tYXNhaGlyb3kvbGludXgta2J1aWxkLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9rYnVpbGQvCitGOglNYWtlZmlsZQorRjoJc2NyaXB0cy8qdm1saW51eCoKK0Y6
CXNjcmlwdHMvS2J1aWxkKgorRjoJc2NyaXB0cy9NYWtlZmlsZSoKK0Y6CXNjcmlwdHMvYmFzaC1j
b21wbGV0aW9uLworRjoJc2NyaXB0cy9iYXNpYy8KK0Y6CXNjcmlwdHMvY2xhbmctdG9vbHMvCitG
OglzY3JpcHRzL2R1bW15LXRvb2xzLworRjoJc2NyaXB0cy9pbmNsdWRlLworRjoJc2NyaXB0cy9t
ayoKK0Y6CXNjcmlwdHMvbW9kLworRjoJc2NyaXB0cy9wYWNrYWdlLworRjoJdXNyLworCitLRVJO
RUwgSEFSREVOSU5HIChub3QgY292ZXJlZCBieSBvdGhlciBhcmVhcykKK006CUtlZXMgQ29vayA8
a2Vlc0BrZXJuZWwub3JnPgorUjoJR3VzdGF2byBBLiBSLiBTaWx2YSA8Z3VzdGF2b2Fyc0BrZXJu
ZWwub3JnPgorTDoJbGludXgtaGFyZGVuaW5nQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tl
ZXMvbGludXguZ2l0IGZvci1uZXh0L2hhcmRlbmluZworRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVz
dGluZy9zeXNmcy1rZXJuZWwtb29wc19jb3VudAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu
Zy9zeXNmcy1rZXJuZWwtd2Fybl9jb3VudAorRjoJYXJjaC8qL2NvbmZpZ3MvaGFyZGVuaW5nLmNv
bmZpZworRjoJaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oCitGOglpbmNsdWRlL2xpbnV4L3JhbmRv
bWl6ZV9rc3RhY2suaAorRjoJaW5jbHVkZS9saW51eC91Y29weXNpemUuaAorRjoJa2VybmVsL2Nv
bmZpZ3MvaGFyZGVuaW5nLmNvbmZpZworRjoJbGliL3Rlc3RzL3JhbmRzdHJ1Y3Rfa3VuaXQuYwor
RjoJbGliL3Rlc3RzL3VzZXJjb3B5X2t1bml0LmMKK0Y6CW1tL3VzZXJjb3B5LmMKK0Y6CXNlY3Vy
aXR5L0tjb25maWcuaGFyZGVuaW5nCitLOglcYihhZGR8Y2hvb3NlKV9yYW5kb21fa3N0YWNrX29m
ZnNldFxiCitLOglcYl9fY2hlY2tfKG9iamVjdF9zaXplfGhlYXBfb2JqZWN0KVxiCitLOglcYl9f
Y291bnRlZF9ieShfbGV8X2JlKT9cYgorCitLRVJORUwgSkFOSVRPUlMKK0w6CWtlcm5lbC1qYW5p
dG9yc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworVzoJaHR0cDovL2tlcm5lbG5ld2Jp
ZXMub3JnL0tlcm5lbEphbml0b3JzCisKK0tFUk5FTCBORlNELCBTVU5SUEMsIEFORCBMT0NLRCBT
RVJWRVJTCitNOglDaHVjayBMZXZlciA8Y2h1Y2subGV2ZXJAb3JhY2xlLmNvbT4KK006CUplZmYg
TGF5dG9uIDxqbGF5dG9uQGtlcm5lbC5vcmc+CitSOglOZWlsQnJvd24gPG5laWxAYnJvd24ubmFt
ZT4KK1I6CU9sZ2EgS29ybmlldnNrYWlhIDxva29ybmlldkByZWRoYXQuY29tPgorUjoJRGFpIE5n
byA8RGFpLk5nb0BvcmFjbGUuY29tPgorUjoJVG9tIFRhbHBleSA8dG9tQHRhbHBleS5jb20+CitM
OglsaW51eC1uZnNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0I6CWh0dHBzOi8vYnVn
emlsbGEua2VybmVsLm9yZworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu
dXgva2VybmVsL2dpdC9jZWwvbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1z
L25mcy8KK0Y6CWZzL2xvY2tkLworRjoJZnMvbmZzX2NvbW1vbi8KK0Y6CWZzL25mc2QvCitGOglp
bmNsdWRlL2xpbnV4L2xvY2tkLworRjoJaW5jbHVkZS9saW51eC9zdW5ycGMvCitGOglpbmNsdWRl
L3RyYWNlL2V2ZW50cy9ycGNnc3MuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvcnBjcmRtYS5o
CitGOglpbmNsdWRlL3RyYWNlL2V2ZW50cy9zdW5ycGMuaAorRjoJaW5jbHVkZS90cmFjZS9taXNj
L2ZzLmgKK0Y6CWluY2x1ZGUvdHJhY2UvbWlzYy9uZnMuaAorRjoJaW5jbHVkZS90cmFjZS9taXNj
L3N1bnJwYy5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvbmZzZC8KK0Y6CWluY2x1ZGUvdWFwaS9s
aW51eC9zdW5ycGMvCitGOgluZXQvc3VucnBjLworRjoJdG9vbHMvbmV0L3N1bnJwYy8KKworS0VS
TkVMIFBBQ01BTiBQQUNLQUdJTkcgKGluIGFkZGl0aW9uIHRvIGdlbmVyaWMgS0VSTkVMIEJVSUxE
KQorTToJVGhvbWFzIFdlacOfc2NodWggPGxpbnV4QHdlaXNzc2NodWgubmV0PgorUjoJQ2hyaXN0
aWFuIEhldXNlbCA8Y2hyaXN0aWFuQGhldXNlbC5ldT4KK1I6CU5hdGhhbiBDaGFuY2VsbG9yIDxu
YXRoYW5Aa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CXNjcmlwdHMvcGFja2FnZS9QS0dC
VUlMRAorCitLRVJORUwgUkVHUkVTU0lPTlMKK006CVRob3JzdGVuIExlZW1odWlzIDxsaW51eEBs
ZWVtaHVpcy5pbmZvPgorTDoJcmVncmVzc2lvbnNAbGlzdHMubGludXguZGV2CitTOglTdXBwb3J0
ZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvcmVwb3J0aW5nLXJlZ3Jlc3Npb25zLnJz
dAorRjoJRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2hhbmRsaW5nLXJlZ3Jlc3Npb25zLnJzdAorCitL
RVJORUwgU0VMRlRFU1QgRlJBTUVXT1JLCitNOglTaHVhaCBLaGFuIDxzaHVhaEBrZXJuZWwub3Jn
PgorTToJU2h1YWggS2hhbiA8c2toYW5AbGludXhmb3VuZGF0aW9uLm9yZz4KK0w6CWxpbnV4LWtz
ZWxmdGVzdEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1E6CWh0dHBzOi8vcGF0Y2h3
b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1rc2VsZnRlc3QvbGlzdC8KK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc2h1YWgvbGludXgta3Nl
bGZ0ZXN0LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva3NlbGZ0ZXN0KgorRjoJdG9v
bHMvdGVzdGluZy9zZWxmdGVzdHMvCisKK0tFUk5FTCBTTUIzIFNFUlZFUiAoS1NNQkQpCitNOglO
YW1qYWUgSmVvbiA8bGlua2luamVvbkBrZXJuZWwub3JnPgorTToJTmFtamFlIEplb24gPGxpbmtp
bmplb25Ac2FtYmEub3JnPgorTToJU3RldmUgRnJlbmNoIDxzbWZyZW5jaEBnbWFpbC5jb20+CitN
OglTdGV2ZSBGcmVuY2ggPHNmcmVuY2hAc2FtYmEub3JnPgorUjoJU2VyZ2V5IFNlbm96aGF0c2t5
IDxzZW5vemhhdHNreUBjaHJvbWl1bS5vcmc+CitSOglUb20gVGFscGV5IDx0b21AdGFscGV5LmNv
bT4KK0w6CWxpbnV4LWNpZnNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQg
Z2l0Oi8vZ2l0LnNhbWJhLm9yZy9rc21iZC5naXQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3Rl
bXMvc21iL2tzbWJkLnJzdAorRjoJZnMvc21iL2NvbW1vbi8KK0Y6CWZzL3NtYi9zZXJ2ZXIvCisK
K0tFUk5FTCBVTklUIFRFU1RJTkcgRlJBTUVXT1JLIChLVW5pdCkKK006CUJyZW5kYW4gSGlnZ2lu
cyA8YnJlbmRhbi5oaWdnaW5zQGxpbnV4LmRldj4KK006CURhdmlkIEdvdyA8ZGF2aWRnb3dAZ29v
Z2xlLmNvbT4KK1I6CVJhZSBNb2FyIDxybW9hckBnb29nbGUuY29tPgorTDoJbGludXgta3NlbGZ0
ZXN0QHZnZXIua2VybmVsLm9yZworTDoJa3VuaXQtZGV2QGdvb2dsZWdyb3Vwcy5jb20KK1M6CU1h
aW50YWluZWQKK1c6CWh0dHBzOi8vZ29vZ2xlLmdpdGh1Yi5pby9rdW5pdC1kb2NzL3RoaXJkX3Bh
cnR5L2tlcm5lbC9kb2NzLworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGlu
dXgva2VybmVsL2dpdC9zaHVhaC9saW51eC1rc2VsZnRlc3QuZ2l0IGt1bml0CitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3NodWFoL2xpbnV4LWtz
ZWxmdGVzdC5naXQga3VuaXQtZml4ZXMKK0Y6CURvY3VtZW50YXRpb24vZGV2LXRvb2xzL2t1bml0
LworRjoJaW5jbHVkZS9rdW5pdC8KK0Y6CWxpYi9rdW5pdC8KK0Y6CXJ1c3Qva2VybmVsL2t1bml0
LnJzCitGOglydXN0L21hY3Jvcy9rdW5pdC5ycworRjoJc2NyaXB0cy9ydXN0ZG9jX3Rlc3RfKgor
RjoJdG9vbHMvdGVzdGluZy9rdW5pdC8KKworS0VSTkVMIFVTRVJNT0RFIEhFTFBFUgorTToJTHVp
cyBDaGFtYmVybGFpbiA8bWNncm9mQGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJuZWxAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL2xpbnV4L3VtaC5oCitGOglrZXJu
ZWwvdW1oLmMKKworS0VSTkVMIFZJUlRVQUwgTUFDSElORSAoS1ZNKQorTToJUGFvbG8gQm9uemlu
aSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KK0w6CWt2bUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorVzoJaHR0cDovL3d3dy5saW51eC1rdm0ub3JnCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS92aXJ0L2t2bS9rdm0uZ2l0CitGOglEb2N1bWVudGF0aW9uL3ZpcnQva3Zt
LworRjoJaW5jbHVkZS9hc20tZ2VuZXJpYy9rdm0qCitGOglpbmNsdWRlL2t2bS9pb2Rldi5oCitG
OglpbmNsdWRlL2xpbnV4L2t2bSoKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2t2bS5oCitGOglp
bmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMva3ZtKgorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2t2bSoK
K0Y6CXRvb2xzL2t2bS8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8KK0Y6CXZpcnQv
a3ZtLyoKKworS0VSTkVMIFZJUlRVQUwgTUFDSElORSBGT1IgQVJNNjQgKEtWTS9hcm02NCkKK006
CU1hcmMgWnluZ2llciA8bWF6QGtlcm5lbC5vcmc+CitNOglPbGl2ZXIgVXB0b24gPG9saXZlci51
cHRvbkBsaW51eC5kZXY+CitSOglKb2V5IEdvdWx5IDxqb2V5LmdvdWx5QGFybS5jb20+CitSOglT
dXp1a2kgSyBQb3Vsb3NlIDxzdXp1a2kucG91bG9zZUBhcm0uY29tPgorUjoJWmVuZ2h1aSBZdSA8
eXV6ZW5naHVpQGh1YXdlaS5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh
ZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJa3ZtYXJtQGxpc3RzLmxp
bnV4LmRldgorUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9z
Y20vbGludXgva2VybmVsL2dpdC9rdm1hcm0va3ZtYXJtLmdpdAorRjoJRG9jdW1lbnRhdGlvbi92
aXJ0L2t2bS9hcm0vCitGOglEb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2RldmljZXMvYXJtKgorRjoJ
YXJjaC9hcm02NC9pbmNsdWRlL2FzbS9rdm0qCitGOglhcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9h
c20va3ZtKgorRjoJYXJjaC9hcm02NC9rdm0vCitGOglpbmNsdWRlL2t2bS9hcm1fKgorRjoJdG9v
bHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyovYXJtNjQvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0
ZXN0cy9rdm0vYXJtNjQvCisKK0tFUk5FTCBWSVJUVUFMIE1BQ0hJTkUgRk9SIExPT05HQVJDSCAo
S1ZNL0xvb25nQXJjaCkKK006CVRpYW5ydWkgWmhhbyA8emhhb3RpYW5ydWlAbG9vbmdzb24uY24+
CitNOglCaWJvIE1hbyA8bWFvYmlib0Bsb29uZ3Nvbi5jbj4KK006CUh1YWNhaSBDaGVuIDxjaGVu
aHVhY2FpQGtlcm5lbC5vcmc+CitMOglrdm1Admdlci5rZXJuZWwub3JnCitMOglsb29uZ2FyY2hA
bGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5v
cmcvcHViL3NjbS92aXJ0L2t2bS9rdm0uZ2l0CitGOglEb2N1bWVudGF0aW9uL3ZpcnQva3ZtL2xv
b25nYXJjaC8KK0Y6CWFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL2t2bSoKK0Y6CWFyY2gvbG9v
bmdhcmNoL2luY2x1ZGUvdWFwaS9hc20va3ZtKgorRjoJYXJjaC9sb29uZ2FyY2gva3ZtLworRjoJ
dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyovbG9vbmdhcmNoLworRjoJdG9vbHMvdGVzdGlu
Zy9zZWxmdGVzdHMva3ZtL2xpYi9sb29uZ2FyY2gvCisKK0tFUk5FTCBWSVJUVUFMIE1BQ0hJTkUg
Rk9SIE1JUFMgKEtWTS9taXBzKQorTToJSHVhY2FpIENoZW4gPGNoZW5odWFjYWlAa2VybmVsLm9y
Zz4KK0w6CWxpbnV4LW1pcHNAdmdlci5rZXJuZWwub3JnCitMOglrdm1Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS92aXJ0
L2t2bS9rdm0uZ2l0CitGOglhcmNoL21pcHMvaW5jbHVkZS9hc20va3ZtKgorRjoJYXJjaC9taXBz
L2luY2x1ZGUvdWFwaS9hc20va3ZtKgorRjoJYXJjaC9taXBzL2t2bS8KKworS0VSTkVMIFZJUlRV
QUwgTUFDSElORSBGT1IgUE9XRVJQQyAoS1ZNL3Bvd2VycGMpCitNOglNYWRoYXZhbiBTcmluaXZh
c2FuIDxtYWRkeUBsaW51eC5pYm0uY29tPgorUjoJTmljaG9sYXMgUGlnZ2luIDxucGlnZ2luQGdt
YWlsLmNvbT4KK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitMOglrdm1Admdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkIChCb29rM1MgNjQtYml0IEhWKQorUzoJT2RkIGZpeGVz
IChCb29rM1MgNjQtYml0IFBSKQorUzoJT3JwaGFuIChCb29rM0UgYW5kIDMyLWJpdCkKK1Q6CWdp
dCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcG93ZXJwYy9s
aW51eC5naXQgdG9waWMvcHBjLWt2bQorRjoJYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2t2bSoK
K0Y6CWFyY2gvcG93ZXJwYy9pbmNsdWRlL3VhcGkvYXNtL2t2bSoKK0Y6CWFyY2gvcG93ZXJwYy9r
ZXJuZWwva3ZtKgorRjoJYXJjaC9wb3dlcnBjL2t2bS8KKworS0VSTkVMIFZJUlRVQUwgTUFDSElO
RSBGT1IgUklTQy1WIChLVk0vcmlzY3YpCitNOglBbnVwIFBhdGVsIDxhbnVwQGJyYWluZmF1bHQu
b3JnPgorUjoJQXRpc2ggUGF0cmEgPGF0aXNocEBhdGlzaHBhdHJhLm9yZz4KK0w6CWt2bUB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWt2bS1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCitMOglsaW51eC1y
aXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9n
aXRodWIuY29tL2t2bS1yaXNjdi9saW51eC5naXQKK0Y6CWFyY2gvcmlzY3YvaW5jbHVkZS9hc20v
a3ZtKgorRjoJYXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2t2bSoKK0Y6CWFyY2gvcmlzY3Yv
a3ZtLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMva3ZtLyovcmlzY3YvCitGOgl0b29scy90
ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vcmlzY3YvCisKK0tFUk5FTCBWSVJUVUFMIE1BQ0hJTkUgZm9y
IHMzOTAgKEtWTS9zMzkwKQorTToJQ2hyaXN0aWFuIEJvcm50cmFlZ2VyIDxib3JudHJhZWdlckBs
aW51eC5pYm0uY29tPgorTToJSmFub3NjaCBGcmFuayA8ZnJhbmtqYUBsaW51eC5pYm0uY29tPgor
TToJQ2xhdWRpbyBJbWJyZW5kYSA8aW1icmVuZGFAbGludXguaWJtLmNvbT4KK1I6CURhdmlkIEhp
bGRlbmJyYW5kIDxkYXZpZEByZWRoYXQuY29tPgorTDoJa3ZtQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L2t2bXMzOTAvbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL3ZpcnQva3ZtL3MzOTAq
CitGOglhcmNoL3MzOTAvaW5jbHVkZS9hc20vZ21hcC5oCitGOglhcmNoL3MzOTAvaW5jbHVkZS9h
c20va3ZtKgorRjoJYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20va3ZtKgorRjoJYXJjaC9zMzkw
L2luY2x1ZGUvdWFwaS9hc20vdXZkZXZpY2UuaAorRjoJYXJjaC9zMzkwL2tlcm5lbC91di5jCitG
OglhcmNoL3MzOTAva3ZtLworRjoJYXJjaC9zMzkwL21tL2dtYXAuYworRjoJZHJpdmVycy9zMzkw
L2NoYXIvdXZkZXZpY2UuYworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9zMzkw
eC91dmRldmljZS8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS8qL3MzOTAvCitGOgl0
b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rdm0vczM5MC8KKworS0VSTkVMIFZJUlRVQUwgTUFDSElO
RSBGT1IgWDg2IChLVk0veDg2KQorTToJU2VhbiBDaHJpc3RvcGhlcnNvbiA8c2VhbmpjQGdvb2ds
ZS5jb20+CitNOglQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29tPgorTDoJa3ZtQHZn
ZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitQOglEb2N1bWVudGF0aW9uL3Byb2Nlc3MvbWFp
bnRhaW5lci1rdm0teDg2LnJzdAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20v
dmlydC9rdm0va3ZtLmdpdAorRjoJYXJjaC94ODYvaW5jbHVkZS9hc20va3ZtKgorRjoJYXJjaC94
ODYvaW5jbHVkZS9hc20vc3ZtLmgKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL3ZteCouaAorRjoJ
YXJjaC94ODYvaW5jbHVkZS91YXBpL2FzbS9rdm0qCitGOglhcmNoL3g4Ni9pbmNsdWRlL3VhcGkv
YXNtL3N2bS5oCitGOglhcmNoL3g4Ni9pbmNsdWRlL3VhcGkvYXNtL3ZteC5oCitGOglhcmNoL3g4
Ni9rdm0vCitGOglhcmNoL3g4Ni9rdm0vKi8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2
bS8qL3g4Ni8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2t2bS94ODYvCisKK0tFUk5GUwor
TToJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK006CVRl
anVuIEhlbyA8dGpAa2VybmVsLm9yZz4KK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kcml2ZXItY29yZS9kcml2ZXItY29y
ZS5naXQKK0Y6CWZzL2tlcm5mcy8KK0Y6CWluY2x1ZGUvbGludXgva2VybmZzLmgKKworS0VYRUMK
K006CUFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CitNOglCYW9xdWFu
IEhlIDxiaGVAcmVkaGF0LmNvbT4KK0w6CWtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKK1c6CWh0
dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy9rZXJuZWwva2V4ZWMvCitGOglpbmNsdWRl
L2xpbnV4L2tleGVjLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9rZXhlYy5oCitGOglrZXJuZWwv
a2V4ZWMqCisKK0tFWVMtRU5DUllQVEVECitNOglNaW1pIFpvaGFyIDx6b2hhckBsaW51eC5pYm0u
Y29tPgorTDoJbGludXgtaW50ZWdyaXR5QHZnZXIua2VybmVsLm9yZworTDoJa2V5cmluZ3NAdmdl
ci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vc2VjdXJpdHkva2V5
cy90cnVzdGVkLWVuY3J5cHRlZC5yc3QKK0Y6CWluY2x1ZGUva2V5cy9lbmNyeXB0ZWQtdHlwZS5o
CitGOglzZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzLworCitLRVlTLVRSVVNURUQKK006CUph
bWVzIEJvdHRvbWxleSA8SmFtZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbT4KK006
CUphcmtrbyBTYWtraW5lbiA8amFya2tvQGtlcm5lbC5vcmc+CitNOglNaW1pIFpvaGFyIDx6b2hh
ckBsaW51eC5pYm0uY29tPgorTDoJbGludXgtaW50ZWdyaXR5QHZnZXIua2VybmVsLm9yZworTDoJ
a2V5cmluZ3NAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24v
c2VjdXJpdHkva2V5cy90cnVzdGVkLWVuY3J5cHRlZC5yc3QKK0Y6CWluY2x1ZGUva2V5cy90cnVz
dGVkLXR5cGUuaAorRjoJaW5jbHVkZS9rZXlzL3RydXN0ZWRfdHBtLmgKK0Y6CXNlY3VyaXR5L2tl
eXMvdHJ1c3RlZC1rZXlzLworCitLRVlTLVRSVVNURUQtQ0FBTQorTToJQWhtYWQgRmF0b3VtIDxh
LmZhdG91bUBwZW5ndXRyb25peC5kZT4KK1I6CVBlbmd1dHJvbml4IEtlcm5lbCBUZWFtIDxrZXJu
ZWxAcGVuZ3V0cm9uaXguZGU+CitMOglsaW51eC1pbnRlZ3JpdHlAdmdlci5rZXJuZWwub3JnCitM
OglrZXlyaW5nc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUva2V5
cy90cnVzdGVkX2NhYW0uaAorRjoJc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9j
YWFtLmMKKworS0VZUy1UUlVTVEVELURDUAorTToJRGF2aWQgR3N0aXIgPGRhdmlkQHNpZ21hLXN0
YXIuYXQ+CitSOglzaWdtYSBzdGFyIEtlcm5lbCBUZWFtIDx1cHN0cmVhbStkY3BAc2lnbWEtc3Rh
ci5hdD4KK0w6CWxpbnV4LWludGVncml0eUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWtleXJpbmdzQHZn
ZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglpbmNsdWRlL2tleXMvdHJ1c3RlZF9kY3Au
aAorRjoJc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9kY3AuYworCitLRVlTLVRS
VVNURUQtVEVFCitNOglTdW1pdCBHYXJnIDxzdW1pdC5nYXJnQGtlcm5lbC5vcmc+CitMOglsaW51
eC1pbnRlZ3JpdHlAdmdlci5rZXJuZWwub3JnCitMOglrZXlyaW5nc0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorRjoJaW5jbHVkZS9rZXlzL3RydXN0ZWRfdGVlLmgKK0Y6CXNlY3VyaXR5
L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfdGVlLmMKKworS0VZUy9LRVlSSU5HUworTToJRGF2
aWQgSG93ZWxscyA8ZGhvd2VsbHNAcmVkaGF0LmNvbT4KK006CUphcmtrbyBTYWtraW5lbiA8amFy
a2tvQGtlcm5lbC5vcmc+CitMOglrZXlyaW5nc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vc2VjdXJpdHkva2V5cy9jb3JlLnJzdAorRjoJaW5jbHVkZS9r
ZXlzLworRjoJaW5jbHVkZS9saW51eC9rZXktdHlwZS5oCitGOglpbmNsdWRlL2xpbnV4L2tleS5o
CitGOglpbmNsdWRlL2xpbnV4L2tleWN0bC5oCitGOglpbmNsdWRlL3VhcGkvbGludXgva2V5Y3Rs
LmgKK0Y6CXNlY3VyaXR5L2tleXMvCisKK0tFWVMvS0VZUklOR1NfSU5URUdSSVRZCitNOglKYXJr
a28gU2Fra2luZW4gPGphcmtrb0BrZXJuZWwub3JnPgorTToJTWltaSBab2hhciA8em9oYXJAbGlu
dXguaWJtLmNvbT4KK0w6CWxpbnV4LWludGVncml0eUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWtleXJp
bmdzQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2tlcm5zZWMub3Jn
L3dpa2kvaW5kZXgucGhwL0xpbnV4X0tlcm5lbF9JbnRlZ3JpdHkKK0Y6CXNlY3VyaXR5L2ludGVn
cml0eS9wbGF0Zm9ybV9jZXJ0cworCitLRkVOQ0UKK006CUFsZXhhbmRlciBQb3RhcGVua28gPGds
aWRlckBnb29nbGUuY29tPgorTToJTWFyY28gRWx2ZXIgPGVsdmVyQGdvb2dsZS5jb20+CitSOglE
bWl0cnkgVnl1a292IDxkdnl1a292QGdvb2dsZS5jb20+CitMOglrYXNhbi1kZXZAZ29vZ2xlZ3Jv
dXBzLmNvbQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva2ZlbmNl
LnJzdAorRjoJYXJjaC8qL2luY2x1ZGUvYXNtL2tmZW5jZS5oCitGOglpbmNsdWRlL2xpbnV4L2tm
ZW5jZS5oCitGOglsaWIvS2NvbmZpZy5rZmVuY2UKK0Y6CW1tL2tmZW5jZS8KKworS0ZJRk8KK006
CVN0ZWZhbmkgU2VpYm9sZCA8c3RlZmFuaUBzZWlib2xkLm5ldD4KK1M6CU1haW50YWluZWQKK0Y6
CWluY2x1ZGUvbGludXgva2ZpZm8uaAorRjoJbGliL2tmaWZvLmMKK0Y6CXNhbXBsZXMva2ZpZm8v
CisKK0tHREIgLyBLREIgL2RlYnVnX2NvcmUKK006CUphc29uIFdlc3NlbCA8amFzb24ud2Vzc2Vs
QHdpbmRyaXZlci5jb20+CitNOglEYW5pZWwgVGhvbXBzb24gPGRhbmllbHRAa2VybmVsLm9yZz4K
K1I6CURvdWdsYXMgQW5kZXJzb24gPGRpYW5kZXJzQGNocm9taXVtLm9yZz4KK0w6CWtnZGItYnVn
cmVwb3J0QGxpc3RzLnNvdXJjZWZvcmdlLm5ldAorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL2tn
ZGIud2lraS5rZXJuZWwub3JnLworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20v
bGludXgva2VybmVsL2dpdC9qd2Vzc2VsL2tnZGIuZ2l0CitGOglEb2N1bWVudGF0aW9uL3Byb2Nl
c3MvZGVidWdnaW5nL2tnZGIucnN0CitGOglkcml2ZXJzL21pc2Mva2dkYnRzLmMKK0Y6CWRyaXZl
cnMvdHR5L3NlcmlhbC9rZ2Rib2MuYworRjoJaW5jbHVkZS9saW51eC9rZGIuaAorRjoJaW5jbHVk
ZS9saW51eC9rZ2RiLmgKK0Y6CWtlcm5lbC9kZWJ1Zy8KK0Y6CWtlcm5lbC9tb2R1bGUva2RiLmMK
KworS0hBREFTIE1DVSBNRkQgRFJJVkVSCitNOglOZWlsIEFybXN0cm9uZyA8bmVpbC5hcm1zdHJv
bmdAbGluYXJvLm9yZz4KK0w6CWxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9raGFk
YXMsbWN1LnlhbWwKK0Y6CWRyaXZlcnMvbWZkL2toYWRhcy1tY3UuYworRjoJZHJpdmVycy90aGVy
bWFsL2toYWRhc19tY3VfZmFuLmMKK0Y6CWluY2x1ZGUvbGludXgvbWZkL2toYWRhcy1tY3UuaAor
CitLSU9OSVgvUk9ITSBLWDAyMkEgQUNDRUxFUk9NRVRFUgorTToJTWF0dGkgVmFpdHRpbmVuIDxt
YXp6aWVzYWNjb3VudEBnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvaWlvL2FjY2VsL2tpb25peC1reDAyMmEqCisKK0tNRU1M
RUFLCitNOglDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPgorUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXYtdG9vbHMva21lbWxlYWsucnN0CitGOglpbmNs
dWRlL2xpbnV4L2ttZW1sZWFrLmgKK0Y6CW1tL2ttZW1sZWFrLmMKK0Y6CXNhbXBsZXMva21lbWxl
YWsva21lbWxlYWstdGVzdC5jCisKK0tNU0FOCitNOglBbGV4YW5kZXIgUG90YXBlbmtvIDxnbGlk
ZXJAZ29vZ2xlLmNvbT4KK1I6CU1hcmNvIEVsdmVyIDxlbHZlckBnb29nbGUuY29tPgorUjoJRG1p
dHJ5IFZ5dWtvdiA8ZHZ5dWtvdkBnb29nbGUuY29tPgorTDoJa2FzYW4tZGV2QGdvb2dsZWdyb3Vw
cy5jb20KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2LXRvb2xzL2ttc2FuLnJz
dAorRjoJYXJjaC8qL2luY2x1ZGUvYXNtL2ttc2FuLmgKK0Y6CWFyY2gvKi9tbS9rbXNhbl8qCitG
OglpbmNsdWRlL2xpbnV4L2ttc2FuKi5oCitGOglsaWIvS2NvbmZpZy5rbXNhbgorRjoJbW0va21z
YW4vCitGOglzY3JpcHRzL01ha2VmaWxlLmttc2FuCisKK0tQUk9CRVMKK006CU5hdmVlbiBOIFJh
byA8bmF2ZWVuQGtlcm5lbC5vcmc+CitNOglBbmlsIFMgS2VzaGF2YW11cnRoeSA8YW5pbC5zLmtl
c2hhdmFtdXJ0aHlAaW50ZWwuY29tPgorTToJIkRhdmlkIFMuIE1pbGxlciIgPGRhdmVtQGRhdmVt
bG9mdC5uZXQ+CitNOglNYXNhbWkgSGlyYW1hdHN1IDxtaGlyYW1hdEBrZXJuZWwub3JnPgorTDoJ
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtdHJhY2Uta2VybmVsQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9y
Zy9wcm9qZWN0L2xpbnV4LXRyYWNlLWtlcm5lbC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJu
ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90cmFjZS9saW51eC10cmFjZS5naXQKK0Y6
CURvY3VtZW50YXRpb24vdHJhY2Uva3Byb2Jlcy5yc3QKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMv
a3Byb2Jlcy5oCitGOglpbmNsdWRlL2xpbnV4L2twcm9iZXMuaAorRjoJa2VybmVsL2twcm9iZXMu
YworRjoJbGliL3Rlc3RzL3Rlc3Rfa3Byb2Jlcy5jCitGOglzYW1wbGVzL2twcm9iZXMKKworS1Mw
MTA4IExDRCBDT05UUk9MTEVSIERSSVZFUgorTToJTWlndWVsIE9qZWRhIDxvamVkYUBrZXJuZWwu
b3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9hdXhkaXNw
bGF5L2tzMDEwOC5yc3QKK0Y6CWRyaXZlcnMvYXV4ZGlzcGxheS9rczAxMDguYworRjoJaW5jbHVk
ZS9saW51eC9rczAxMDguaAorCitLVEQyNTMgQkFDS0xJR0hUIERSSVZFUgorTToJTGludXMgV2Fs
bGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2xlZHMvYmFja2xpZ2h0L2tpbmV0aWMsa3RkMjUz
LnlhbWwKK0Y6CWRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2t0ZDI1My1iYWNrbGlnaHQuYworCitL
VEQyODAxIEJBQ0tMSUdIVCBEUklWRVIKK006CUR1amUgTWloYW5vdmnEhyA8ZHVqZS5taWhhbm92
aWNAc2tvbGUuaHI+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvbGVkcy9iYWNrbGlnaHQva2luZXRpYyxrdGQyODAxLnlhbWwKK0Y6CWRyaXZlcnMv
dmlkZW8vYmFja2xpZ2h0L2t0ZDI4MDEtYmFja2xpZ2h0LmMKKworS1RFU1QKK006CVN0ZXZlbiBS
b3N0ZWR0IDxyb3N0ZWR0QGdvb2RtaXMub3JnPgorTToJSm9obiBIYXdsZXkgPHdhcnRob2c5QGVh
Z2xlc2NyYWcubmV0PgorUzoJTWFpbnRhaW5lZAorRjoJdG9vbHMvdGVzdGluZy9rdGVzdAorCitL
VFo4ODY2IEJBQ0tMSUdIVCBEUklWRVIKK006CUppYW5odWEgTHUgPGx1amlhbmh1YTAwMEBnbWFp
bC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvbGVkcy9iYWNrbGlnaHQva2luZXRpYyxrdHo4ODY2LnlhbWwKK0Y6CWRyaXZlcnMvdmlkZW8v
YmFja2xpZ2h0L2t0ejg4NjYuYworCitLVk0gUEFSQVZJUlQgKEtWTS9wYXJhdmlydCkKK006CVBh
b2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CitSOglWaXRhbHkgS3V6bmV0c292IDx2
a3V6bmV0c0ByZWRoYXQuY29tPgorTDoJa3ZtQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS92aXJ0L2t2bS9rdm0uZ2l0CitG
OglhcmNoL3VtL2luY2x1ZGUvYXNtL2t2bV9wYXJhLmgKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNt
L2t2bV9wYXJhLmgKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL3B2Y2xvY2stYWJpLmgKK0Y6CWFy
Y2gveDg2L2luY2x1ZGUvdWFwaS9hc20va3ZtX3BhcmEuaAorRjoJYXJjaC94ODYva2VybmVsL2t2
bS5jCitGOglhcmNoL3g4Ni9rZXJuZWwva3ZtY2xvY2suYworRjoJaW5jbHVkZS9hc20tZ2VuZXJp
Yy9rdm1fcGFyYS5oCitGOglpbmNsdWRlL2xpbnV4L2t2bV9wYXJhLmgKK0Y6CWluY2x1ZGUvdWFw
aS9hc20tZ2VuZXJpYy9rdm1fcGFyYS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgva3ZtX3BhcmEu
aAorCitLVk0gWDg2IEhZUEVSLVYgKEtWTS9oeXBlci12KQorTToJVml0YWx5IEt1em5ldHNvdiA8
dmt1em5ldHNAcmVkaGF0LmNvbT4KK006CVNlYW4gQ2hyaXN0b3BoZXJzb24gPHNlYW5qY0Bnb29n
bGUuY29tPgorTToJUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KK0w6CWt2bUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3Jn
L3B1Yi9zY20vdmlydC9rdm0va3ZtLmdpdAorRjoJYXJjaC94ODYva3ZtL2h5cGVydi4qCitGOglh
cmNoL3g4Ni9rdm0va3ZtX29uaHlwZXJ2LioKK0Y6CWFyY2gveDg2L2t2bS9zdm0vaHlwZXJ2LioK
K0Y6CWFyY2gveDg2L2t2bS9zdm0vc3ZtX29uaHlwZXJ2LioKK0Y6CWFyY2gveDg2L2t2bS92bXgv
aHlwZXJ2LioKKworS1ZNIFg4NiBYZW4gKEtWTS9YZW4pCitNOglEYXZpZCBXb29kaG91c2UgPGR3
bXcyQGluZnJhZGVhZC5vcmc+CitNOglQYXVsIER1cnJhbnQgPHBhdWxAeGVuLm9yZz4KK006CVNl
YW4gQ2hyaXN0b3BoZXJzb24gPHNlYW5qY0Bnb29nbGUuY29tPgorTToJUGFvbG8gQm9uemluaSA8
cGJvbnppbmlAcmVkaGF0LmNvbT4KK0w6CWt2bUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdmlydC9rdm0va3ZtLmdpdAor
RjoJYXJjaC94ODYva3ZtL3hlbi4qCisKK0wzTURFVgorTToJRGF2aWQgQWhlcm4gPGRzYWhlcm5A
a2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWluY2x1ZGUvbmV0L2wzbWRldi5oCitGOgluZXQvbDNtZGV2CisKK0xBTkRMT0NLIFNFQ1VSSVRZ
IE1PRFVMRQorTToJTWlja2HDq2wgU2FsYcO8biA8bWljQGRpZ2lrb2QubmV0PgorUjoJR8O8bnRo
ZXIgTm9hY2sgPGdub2Fja0Bnb29nbGUuY29tPgorTDoJbGludXgtc2VjdXJpdHktbW9kdWxlQHZn
ZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2xhbmRsb2NrLmlvCitUOgln
aXQgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbWljL2xp
bnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9MU00vbGFuZGxvY2sucnN0CitG
OglEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2xhbmRsb2NrLnJzdAorRjoJRG9jdW1lbnRhdGlvbi91
c2Vyc3BhY2UtYXBpL2xhbmRsb2NrLnJzdAorRjoJZnMvaW9jdGwuYworRjoJaW5jbHVkZS91YXBp
L2xpbnV4L2xhbmRsb2NrLmgKK0Y6CXNhbXBsZXMvbGFuZGxvY2svCitGOglzZWN1cml0eS9sYW5k
bG9jay8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2xhbmRsb2NrLworSzoJbGFuZGxvY2sK
K0s6CUxBTkRMT0NLCisKK0xBTlRJUSAvIElOVEVMIEV0aGVybmV0IGRyaXZlcnMKK006CUhhdWtl
IE1laHJ0ZW5zIDxoYXVrZUBoYXVrZS1tLmRlPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9k
c2EvbGFudGlxLGdzd2lwLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2RzYS9sYW50aXFfZ3N3aXAuYwor
RjoJZHJpdmVycy9uZXQvZHNhL2xhbnRpcV9wY2UuaAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQv
bGFudGlxX3hyeDIwMC5jCitGOgluZXQvZHNhL3RhZ19nc3dpcC5jCisKK0xBTlRJUSBNSVBTIEFS
Q0hJVEVDVFVSRQorTToJSm9obiBDcmlzcGluIDxqb2huQHBocm96ZW4ub3JnPgorTDoJbGludXgt
bWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvbWlwcy9sYW50aXEK
K0Y6CWRyaXZlcnMvc29jL2xhbnRpcQorCitMQU5USVEgUEVGMjI1NiBEUklWRVIKK006CUhlcnZl
IENvZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9sYW50aXEscGVmMjI1Ni55YW1sCitG
Oglkcml2ZXJzL25ldC93YW4vZnJhbWVyL3BlZjIyNTYvCitGOglkcml2ZXJzL3BpbmN0cmwvcGlu
Y3RybC1wZWYyMjU2LmMKK0Y6CWluY2x1ZGUvbGludXgvZnJhbWVyL3BlZjIyNTYuaAorCitMQVNJ
IDUzYzcwMCBkcml2ZXIgZm9yIFBBUklTQworTToJIkphbWVzIEUuSi4gQm90dG9tbGV5IiA8SmFt
ZXMuQm90dG9tbGV5QEhhbnNlblBhcnRuZXJzaGlwLmNvbT4KK0w6CWxpbnV4LXNjc2lAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3Njc2kvNTNjNzAwLnJz
dAorRjoJZHJpdmVycy9zY3NpLzUzYzcwMCoKKworTEVBS0lOR19BRERSRVNTRVMKK006CVR5Y2hv
IEFuZGVyc2VuIDx0eWNob0B0eWNoby5waXp6YT4KK1I6CUtlZXMgQ29vayA8a2Vlc0BrZXJuZWwu
b3JnPgorTDoJbGludXgtaGFyZGVuaW5nQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZWVz
L2xpbnV4LmdpdCBmb3ItbmV4dC9oYXJkZW5pbmcKK0Y6CXNjcmlwdHMvbGVha2luZ19hZGRyZXNz
ZXMucGwKKworTEVEIFNVQlNZU1RFTQorTToJTGVlIEpvbmVzIDxsZWVAa2VybmVsLm9yZz4KK006
CVBhdmVsIE1hY2hlayA8cGF2ZWxAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWxlZHNAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L2xlZS9sZWRzLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2xlZHMvCitGOglEb2N1bWVudGF0aW9uL2xlZHMvCitGOglkcml2ZXJzL2xl
ZHMvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2xlZHMvCitGOglpbmNsdWRlL2xpbnV4L2xlZHMu
aAorCitMRUdPIE1JTkRTVE9STVMgRVYzCitSOglEYXZpZCBMZWNobmVyIDxkYXZpZEBsZWNobm9s
b2d5LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9wb3dlci9zdXBwbHkvbGVnbyxldjMtYmF0dGVyeS55YW1sCitGOglhcmNoL2FybS9ib290
L2R0cy90aS9kYXZpbmNpL2RhODUwLWxlZ28tZXYzLmR0cworRjoJZHJpdmVycy9wb3dlci9zdXBw
bHkvbGVnb19ldjNfYmF0dGVyeS5jCisKK0xFR08gVVNCIFRvd2VyIGRyaXZlcgorTToJSnVlcmdl
biBTdHViZXIgPHN0YXJibHVlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0w6CWxlZ291c2ItZGV2
ZWxAbGlzdHMuc291cmNlZm9yZ2UubmV0CitTOglNYWludGFpbmVkCitXOglodHRwOi8vbGVnb3Vz
Yi5zb3VyY2Vmb3JnZS5uZXQvCitGOglkcml2ZXJzL3VzYi9taXNjL2xlZ291c2J0b3dlci5jCisK
K0xFTk9WTyBXTUkgSE9US0VZIFVUSUxJVElFUyBEUklWRVIKK006CUphY2tpZSBEb25nIDx4eS1q
YWNraWVAMTM5LmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9sZW5vdm8td21pLWhvdGtleS11
dGlsaXRpZXMuYworCitMRVRTS0VUQ0ggSElEIFRBQkxFVCBEUklWRVIKK006CUhhbnMgZGUgR29l
ZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvaGlkL2hpZC5naXQKK0Y6CWRyaXZlcnMvaGlkL2hpZC1sZXRza2V0Y2guYwor
CitMRyBMQVBUT1AgRVhUUkFTCitNOglNYXRhbiBaaXYtQXYgPG1hdGFuQHN2Z2FsaWIub3JnPgor
TDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tbGctbGFwdG9wCitGOglE
b2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2xhcHRvcHMvbGctbGFwdG9wLnJzdAorRjoJZHJpdmVy
cy9wbGF0Zm9ybS94ODYvbGctbGFwdG9wLmMKKworTEcyMTYwIE1FRElBIERSSVZFUgorTToJTWlj
aGFlbCBLcnVma3kgPG1rcnVma3lAbGludXh0di5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1c6CWh0dHA6
Ly9naXRodWIuY29tL21rcnVma3kKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJv
amVjdC9saW51eC1tZWRpYS9saXN0LworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21rcnVma3kv
dHVuZXJzLmdpdAorRjoJZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2xnMjE2MC4qCisKK0xH
RFQzMzA1IE1FRElBIERSSVZFUgorTToJTWljaGFlbCBLcnVma3kgPG1rcnVma3lAbGludXh0di5v
cmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0
dHBzOi8vbGludXh0di5vcmcKK1c6CWh0dHA6Ly9naXRodWIuY29tL21rcnVma3kKK1E6CWh0dHA6
Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworVDoJZ2l0
IGdpdDovL2xpbnV4dHYub3JnL21rcnVma3kvdHVuZXJzLmdpdAorRjoJZHJpdmVycy9tZWRpYS9k
dmItZnJvbnRlbmRzL2xnZHQzMzA1LioKKworTElCQVRBIFBBVEEgQVJBU0FOIENPTVBBQ1QgRkxB
U0ggQ09OVFJPTExFUgorTToJVmlyZXNoIEt1bWFyIDx2aXJlc2hrQGtlcm5lbC5vcmc+CitMOgls
aW51eC1pZGVAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2F0YS9w
YXRhX2FyYXNhbl9jZi5jCitGOglpbmNsdWRlL2xpbnV4L3BhdGFfYXJhc2FuX2NmX2RhdGEuaAor
CitMSUJBVEEgUEFUQSBGQVJBREFZIEZUSURFMDEwIEFORCBHRU1JTkkgU0FUQSBCUklER0UgRFJJ
VkVSUworTToJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgorTDoJbGlu
dXgtaWRlQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9hdGEvcGF0
YV9mdGlkZTAxMC5jCitGOglkcml2ZXJzL2F0YS9zYXRhX2dlbWluaS5jCitGOglkcml2ZXJzL2F0
YS9zYXRhX2dlbWluaS5oCisKK0xJQkFUQSBTQVRBIEFIQ0kgUExBVEZPUk0gZGV2aWNlcyBzdXBw
b3J0CitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgtaWRl
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9hdGEvYWhjaV9wbGF0
Zm9ybS5jCitGOglkcml2ZXJzL2F0YS9saWJhaGNpX3BsYXRmb3JtLmMKK0Y6CWluY2x1ZGUvbGlu
dXgvYWhjaV9wbGF0Zm9ybS5oCisKK0xJQkFUQSBTQVRBIFBST01JU0UgVFgyL1RYNCBDT05UUk9M
TEVSIERSSVZFUgorTToJTWlrYWVsIFBldHRlcnNzb24gPG1pa3BlbGludXhAZ21haWwuY29tPgor
TDoJbGludXgtaWRlQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9h
dGEvc2F0YV9wcm9taXNlLioKKworTElCQVRBIFNVQlNZU1RFTSAoU2VyaWFsIGFuZCBQYXJhbGxl
bCBBVEEgZHJpdmVycykKK006CURhbWllbiBMZSBNb2FsIDxkbGVtb2FsQGtlcm5lbC5vcmc+CitN
OglOaWtsYXMgQ2Fzc2VsIDxjYXNzZWxAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlkZUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvbGliYXRhL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9B
QkkvdGVzdGluZy9zeXNmcy1hdGEKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9hdGEvCitGOglkcml2ZXJzL2F0YS8KK0Y6CWluY2x1ZGUvbGludXgvYXRhLmgKK0Y6CWluY2x1
ZGUvbGludXgvbGliYXRhLmgKKworTElCRVRIIENPTU1PTiBFVEhFUk5FVCBMSUJSQVJZCitNOglB
bGV4YW5kZXIgTG9iYWtpbiA8YWxla3NhbmRlci5sb2Jha2luQGludGVsLmNvbT4KK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWludGVsLXdpcmVkLWxhbkBsaXN0cy5vc3Vvc2wub3JnICht
b2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRw
czovL2dpdGh1Yi5jb20vYWxvYmFraW4vbGludXguZ2l0CitGOglkcml2ZXJzL25ldC9ldGhlcm5l
dC9pbnRlbC9saWJldGgvCitGOglpbmNsdWRlL25ldC9saWJldGgvCitLOglsaWJldGgKKworTElC
SUUgQ09NTU9OIElOVEVMIEVUSEVSTkVUIExJQlJBUlkKK006CUFsZXhhbmRlciBMb2Jha2luIDxh
bGVrc2FuZGVyLmxvYmFraW5AaW50ZWwuY29tPgorTDoJaW50ZWwtd2lyZWQtbGFuQGxpc3RzLm9z
dW9zbC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbmV0ZGV2QHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9hbG9i
YWtpbi9saW51eC5naXQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmllLworRjoJ
aW5jbHVkZS9saW51eC9uZXQvaW50ZWwvbGliaWUvCitLOglsaWJpZQorCitMSUJOVkRJTU0gQlRU
OiBCTE9DSyBUUkFOU0xBVElPTiBUQUJMRQorTToJVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52ZXJt
YUBpbnRlbC5jb20+CitNOglEYW4gV2lsbGlhbXMgPGRhbi5qLndpbGxpYW1zQGludGVsLmNvbT4K
K006CURhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50ZWwuY29tPgorTDoJbnZkaW1tQGxpc3RzLmxp
bnV4LmRldgorUzoJU3VwcG9ydGVkCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3By
b2plY3QvbGludXgtbnZkaW1tL2xpc3QvCitQOglEb2N1bWVudGF0aW9uL252ZGltbS9tYWludGFp
bmVyLWVudHJ5LXByb2ZpbGUucnN0CitGOglkcml2ZXJzL252ZGltbS9idHQqCisKK0xJQk5WRElN
TSBQTUVNOiBQRVJTSVNURU5UIE1FTU9SWSBEUklWRVIKK006CURhbiBXaWxsaWFtcyA8ZGFuLmou
d2lsbGlhbXNAaW50ZWwuY29tPgorTToJVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52ZXJtYUBpbnRl
bC5jb20+CitNOglEYXZlIEppYW5nIDxkYXZlLmppYW5nQGludGVsLmNvbT4KK0w6CW52ZGltbUBs
aXN0cy5saW51eC5kZXYKK1M6CVN1cHBvcnRlZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVs
Lm9yZy9wcm9qZWN0L2xpbnV4LW52ZGltbS9saXN0LworUDoJRG9jdW1lbnRhdGlvbi9udmRpbW0v
bWFpbnRhaW5lci1lbnRyeS1wcm9maWxlLnJzdAorRjoJZHJpdmVycy9udmRpbW0vcG1lbSoKKwor
TElCTlZESU1NOiBERVZJQ0VUUkVFIEJJTkRJTkdTCitNOglPbGl2ZXIgTydIYWxsb3JhbiA8b29o
YWxsQGdtYWlsLmNvbT4KK0w6CW52ZGltbUBsaXN0cy5saW51eC5kZXYKK1M6CVN1cHBvcnRlZAor
UToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LW52ZGltbS9saXN0
LworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BtZW0vcG1lbS1yZWdpb24u
dHh0CitGOglkcml2ZXJzL252ZGltbS9vZl9wbWVtLmMKKworTElCTlZESU1NOiBOT04tVk9MQVRJ
TEUgTUVNT1JZIERFVklDRSBTVUJTWVNURU0KK006CURhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlh
bXNAaW50ZWwuY29tPgorTToJVmlzaGFsIFZlcm1hIDx2aXNoYWwubC52ZXJtYUBpbnRlbC5jb20+
CitNOglEYXZlIEppYW5nIDxkYXZlLmppYW5nQGludGVsLmNvbT4KK006CUlyYSBXZWlueSA8aXJh
LndlaW55QGludGVsLmNvbT4KK0w6CW52ZGltbUBsaXN0cy5saW51eC5kZXYKK1M6CVN1cHBvcnRl
ZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LW52ZGltbS9s
aXN0LworUDoJRG9jdW1lbnRhdGlvbi9udmRpbW0vbWFpbnRhaW5lci1lbnRyeS1wcm9maWxlLnJz
dAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9u
dmRpbW0vbnZkaW1tLmdpdAorRjoJZHJpdmVycy9hY3BpL25maXQvKgorRjoJZHJpdmVycy9udmRp
bW0vKgorRjoJaW5jbHVkZS9saW51eC9saWJudmRpbW0uaAorRjoJaW5jbHVkZS9saW51eC9uZC5o
CitGOglpbmNsdWRlL3VhcGkvbGludXgvbmRjdGwuaAorRjoJdG9vbHMvdGVzdGluZy9udmRpbW0v
CisKK0xJQlJBUlkgQ09ERQorTToJQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9u
Lm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ha3BtL21t
LmdpdCBtbS1ub25tbS11bnN0YWJsZQorRjoJbGliLyoKKworTElDRU5TRVMgYW5kIFNQRFggc3R1
ZmYKK006CVRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorTToJR3JlZyBLcm9h
aC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK0w6CWxpbnV4LXNwZHhAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dyZWdraC9zcGR4LmdpdAorRjoJQ09QWUlORworRjoJ
RG9jdW1lbnRhdGlvbi9wcm9jZXNzL2xpY2Vuc2UtcnVsZXMucnN0CitGOglMSUNFTlNFUy8KK0Y6
CXNjcmlwdHMvc3BkeGNoZWNrLXRlc3Quc2gKK0Y6CXNjcmlwdHMvc3BkeGNoZWNrLnB5CitGOglz
Y3JpcHRzL3NwZHhleGNsdWRlCisKK0xJTElVTSBTRUNVUklUWSBNT0RVTEUKK006ICAgICAgRW56
byBGdWtlIDxtaWxlc29uZXJkQG91dGxvb2suY29tPgorTDoJCWxpbnV4LXNlY3VyaXR5LW1vZHVs
ZUB2Z2VyLmtlcm5lbC5vcmcKK1M6ICAgICAgTWFpbnRhaW5lZAorRjogICAgICBEb2N1bWVudGF0
aW9uL3NlY3VyaXR5L2xpbGl1bS5yc3QKK0Y6ICAgICAgc2VjdXJpdHkvbGlsaXVtLyoKK0I6ICAg
ICAgaHR0cHM6Ly9naXRodWIuY29tL01pbGVzT05lcmQvbGlsaXVtL2lzc3VlcworCitMSU5FQVIg
UkFOR0VTIEhFTFBFUlMKK006CU1hcmsgQnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz4KK1I6CU1h
dHRpIFZhaXR0aW5lbiA8bWF6emllc2FjY291bnRAZ21haWwuY29tPgorRjoJaW5jbHVkZS9saW51
eC9saW5lYXJfcmFuZ2UuaAorRjoJbGliL2xpbmVhcl9yYW5nZXMuYworRjoJbGliL3Rlc3RzL3Rl
c3RfbGluZWFyX3Jhbmdlcy5jCisKK0xJTlVYIEZPUiBQT1dFUiBNQUNJTlRPU0gKK0w6CWxpbnV4
cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitTOglPcnBoYW4KK0Y6CWFyY2gvcG93ZXJwYy9wbGF0
Zm9ybXMvcG93ZXJtYWMvCitGOglkcml2ZXJzL21hY2ludG9zaC8KK1g6CWRyaXZlcnMvbWFjaW50
b3NoL2FkYi1pb3AuYworWDoJZHJpdmVycy9tYWNpbnRvc2gvdmlhLW1hY2lpLmMKKworTElOVVgg
Rk9SIFBPV0VSUEMgKDMyLUJJVCBBTkQgNjQtQklUKQorTToJTWFkaGF2YW4gU3Jpbml2YXNhbiA8
bWFkZHlAbGludXguaWJtLmNvbT4KK006CU1pY2hhZWwgRWxsZXJtYW4gPG1wZUBlbGxlcm1hbi5p
ZC5hdT4KK1I6CU5pY2hvbGFzIFBpZ2dpbiA8bnBpZ2dpbkBnbWFpbC5jb20+CitSOglDaHJpc3Rv
cGhlIExlcm95IDxjaHJpc3RvcGhlLmxlcm95QGNzZ3JvdXAuZXU+CitMOglsaW51eHBwYy1kZXZA
bGlzdHMub3psYWJzLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2dpdGh1Yi5jb20vbGlu
dXhwcGMvd2lraS93aWtpCitROglodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9s
aW51eHBwYy1kZXYvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp
bnV4L2tlcm5lbC9naXQvcG93ZXJwYy9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3N0
YWJsZS9zeXNmcy1maXJtd2FyZS1vcGFsLSoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9pMmMvaTJjLW9wYWwudHh0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvcG93ZXJwYy8KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ydGMv
cnRjLW9wYWwudHh0CitGOglEb2N1bWVudGF0aW9uL2FyY2gvcG93ZXJwYy8KK0Y6CWFyY2gvcG93
ZXJwYy8KK0Y6CWRyaXZlcnMvKi8qLypwYXNlbWkqCitGOglkcml2ZXJzLyovKnBhc2VtaSoKK0Y6
CWRyaXZlcnMvY2hhci90cG0vdHBtX2libXZ0cG0qCitGOglkcml2ZXJzL2NyeXB0by9ueC8KK0Y6
CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb3BhbC5jCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9p
Ym0vaWJtdmV0aC4qCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vaWJtdm5pYy4qCitGOglk
cml2ZXJzL3BjaS9ob3RwbHVnL3Budl9waHAuYworRjoJZHJpdmVycy9wY2kvaG90cGx1Zy9ycGEq
CitGOglkcml2ZXJzL3J0Yy9ydGMtb3BhbC5jCitGOglkcml2ZXJzL3Njc2kvaWJtdnNjc2kvCitG
Oglkcml2ZXJzL3R0eS9odmMvaHZjX29wYWwuYworRjoJZHJpdmVycy93YXRjaGRvZy93ZHJ0YXMu
YworRjoJaW5jbHVkZS9saW51eC9wYXByX3NjbS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvcGFw
cl9wZHNtLmgKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VycGMKK046CS9wbWFjCitO
Oglwb3dlcm1hYworTjoJcG93ZXJudgorTjoJW15hLXowLTldcHMzCitOOglwc2VyaWVzCisKK0xJ
TlVYIEZPUiBQT1dFUlBDIEVNQkVEREVEIE1QQzVYWFgKK006CUFuYXRvbGlqIEd1c3RzY2hpbiA8
YWd1c3RAZGVueC5kZT4KK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitTOglPZGQg
Rml4ZXMKK0Y6CWFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTEyeC8KK0Y6CWFyY2gvcG93ZXJwYy9w
bGF0Zm9ybXMvNTJ4eC8KKworTElOVVggRk9SIFBPV0VSUEMgRU1CRURERUQgUFBDNFhYCitMOgls
aW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworUzoJT3JwaGFuCitGOglhcmNoL3Bvd2VycGMv
cGxhdGZvcm1zLzQ0eC8KKworTElOVVggRk9SIFBPV0VSUEMgRU1CRURERUQgUFBDODVYWAorTToJ
U2NvdHQgV29vZCA8b3NzQGJ1c2Vycm9yLm5ldD4KK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxh
YnMub3JnCitTOglPZGQgZml4ZXMKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvc2NvdHR3b29kL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2NhY2hlL2ZyZWVzY2FsZS1sMmNhY2hlLnR4dAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsLworRjoJYXJjaC9wb3dlcnBj
L3BsYXRmb3Jtcy84NXh4LworCitMSU5VWCBGT1IgUE9XRVJQQyBFTUJFRERFRCBQUEM4WFggQU5E
IFBQQzgzWFgKK006CUNocmlzdG9waGUgTGVyb3kgPGNocmlzdG9waGUubGVyb3lAY3Nncm91cC5l
dT4KK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitTOglNYWludGFpbmVkCitGOglh
cmNoL3Bvd2VycGMvcGxhdGZvcm1zLzh4eC8KK0Y6CWFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvODN4
eC8KKworTElOVVggS0VSTkVMIERVTVAgVEVTVCBNT0RVTEUgKExLRFRNKQorTToJS2VlcyBDb29r
IDxrZWVzQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21pc2MvbGtkdG0v
KgorRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbGtkdG0vKgorCitMSU5VWCBLRVJORUwgTUVN
T1JZIENPTlNJU1RFTkNZIE1PREVMIChMS01NKQorTToJQWxhbiBTdGVybiA8c3Rlcm5Acm93bGFu
ZC5oYXJ2YXJkLmVkdT4KK006CUFuZHJlYSBQYXJyaSA8cGFycmkuYW5kcmVhQGdtYWlsLmNvbT4K
K006CVdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+CitNOglQZXRlciBaaWpsc3RyYSA8cGV0
ZXJ6QGluZnJhZGVhZC5vcmc+CitNOglCb3F1biBGZW5nIDxib3F1bi5mZW5nQGdtYWlsLmNvbT4K
K006CU5pY2hvbGFzIFBpZ2dpbiA8bnBpZ2dpbkBnbWFpbC5jb20+CitNOglEYXZpZCBIb3dlbGxz
IDxkaG93ZWxsc0ByZWRoYXQuY29tPgorTToJSmFkZSBBbGdsYXZlIDxqLmFsZ2xhdmVAdWNsLmFj
LnVrPgorTToJTHVjIE1hcmFuZ2V0IDxsdWMubWFyYW5nZXRAaW5yaWEuZnI+CitNOgkiUGF1bCBF
LiBNY0tlbm5leSIgPHBhdWxtY2tAa2VybmVsLm9yZz4KK1I6CUFraXJhIFlva29zYXdhIDxha2l5
a3NAZ21haWwuY29tPgorUjoJRGFuaWVsIEx1c3RpZyA8ZGx1c3RpZ0BudmlkaWEuY29tPgorUjoJ
Sm9lbCBGZXJuYW5kZXMgPGpvZWxhZ25lbGZAbnZpZGlhLmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2
Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCitMOglsa21tQGxp
c3RzLmxpbnV4LmRldgorUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JjdS9saW51eC5naXQgcmN1L2RldgorRjoJRG9jdW1l
bnRhdGlvbi9hdG9taWNfYml0b3BzLnR4dAorRjoJRG9jdW1lbnRhdGlvbi9hdG9taWNfdC50eHQK
K0Y6CURvY3VtZW50YXRpb24vY29yZS1hcGkvcmVmY291bnQtdnMtYXRvbWljLnJzdAorRjoJRG9j
dW1lbnRhdGlvbi9saXRtdXMtdGVzdHMvCitGOglEb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVy
cy50eHQKK0Y6CXRvb2xzL21lbW9yeS1tb2RlbC8KKworTElOVVgtTkVYVCBUUkVFCitNOglTdGVw
aGVuIFJvdGh3ZWxsIDxzZnJAY2FuYi5hdXVnLm9yZy5hdT4KK0w6CWxpbnV4LW5leHRAdmdlci5r
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0I6CW1haWx0bzpsaW51eC1uZXh0QHZnZXIua2VybmVs
Lm9yZyBhbmQgdGhlIGFwcHJvcHJpYXRlIGRldmVsb3BtZW50IHRyZWUKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbmV4dC9saW51eC1uZXh0Lmdp
dC8KKworTElTM0xWMDJEIEFDQ0VMRVJPTUVURVIgRFJJVkVSCitNOglFcmljIFBpZWwgPGVyaWMu
cGllbEB0cmVtcGxpbi11dGMubmV0PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9t
aXNjLWRldmljZXMvbGlzM2x2MDJkLnJzdAorRjoJZHJpdmVycy9taXNjL2xpczNsdjAyZC8KK0Y6
CWRyaXZlcnMvcGxhdGZvcm0veDg2L2hwL2hwX2FjY2VsLmMKKworTElTVCBLVU5JVCBURVNUCitN
OglEYXZpZCBHb3cgPGRhdmlkZ293QGdvb2dsZS5jb20+CitMOglsaW51eC1rc2VsZnRlc3RAdmdl
ci5rZXJuZWwub3JnCitMOglrdW5pdC1kZXZAZ29vZ2xlZ3JvdXBzLmNvbQorUzoJTWFpbnRhaW5l
ZAorRjoJbGliL3Rlc3RzL2xpc3QtdGVzdC5jCisKK0xJVEVYIFBMQVRGT1JNCitNOglLYXJvbCBH
dWdhbGEgPGtndWdhbGFAYW50bWljcm8uY29tPgorTToJTWF0ZXVzeiBIb2xlbmtvIDxtaG9sZW5r
b0BhbnRtaWNyby5jb20+CitNOglHYWJyaWVsIFNvbWxvIDxnc29tbG9AZ21haWwuY29tPgorTToJ
Sm9lbCBTdGFubGV5IDxqb2VsQGptcy5pZC5hdT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8qL2xpdGV4LCoueWFtbAorRjoJYXJjaC9vcGVucmlz
Yy9ib290L2R0cy9vcjFrbGl0ZXguZHRzCitGOglkcml2ZXJzL21tYy9ob3N0L2xpdGV4X21tYy5j
CitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9saXRleC8qCitGOglkcml2ZXJzL3NvYy9saXRleC8q
CitGOglkcml2ZXJzL3R0eS9zZXJpYWwvbGl0ZXVhcnQuYworRjoJaW5jbHVkZS9saW51eC9saXRl
eC5oCitOOglsaXRleAorCitMSVZFIFBBVENISU5HCitNOglKb3NoIFBvaW1ib2V1ZiA8anBvaW1i
b2VAa2VybmVsLm9yZz4KK006CUppcmkgS29zaW5hIDxqaWtvc0BrZXJuZWwub3JnPgorTToJTWly
b3NsYXYgQmVuZXMgPG1iZW5lc0BzdXNlLmN6PgorTToJUGV0ciBNbGFkZWsgPHBtbGFkZWtAc3Vz
ZS5jb20+CitSOglKb2UgTGF3cmVuY2UgPGpvZS5sYXdyZW5jZUByZWRoYXQuY29tPgorTDoJbGl2
ZS1wYXRjaGluZ0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbGl2ZXBhdGNoaW5nL2xpdmVw
YXRjaGluZy5naXQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMta2VybmVsLWxp
dmVwYXRjaAorRjoJRG9jdW1lbnRhdGlvbi9saXZlcGF0Y2gvCitGOglhcmNoL3Bvd2VycGMvaW5j
bHVkZS9hc20vbGl2ZXBhdGNoLmgKK0Y6CWluY2x1ZGUvbGludXgvbGl2ZXBhdGNoLmgKK0Y6CWtl
cm5lbC9saXZlcGF0Y2gvCitGOglrZXJuZWwvbW9kdWxlL2xpdmVwYXRjaC5jCitGOglzYW1wbGVz
L2xpdmVwYXRjaC8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2xpdmVwYXRjaC8KKworTExD
ICg4MDIuMikKK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBmaXhlcworRjoJaW5j
bHVkZS9saW51eC9sbGMuaAorRjoJaW5jbHVkZS9uZXQvbGxjKgorRjoJaW5jbHVkZS91YXBpL2xp
bnV4L2xsYy5oCitGOgluZXQvbGxjLworCitMTTczIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitN
OglHdWlsbGF1bWUgTGlnbmV1bCA8Z3VpbGxhdW1lLmxpZ25ldWxAZ21haWwuY29tPgorTDoJbGlu
dXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2h3bW9u
L2xtNzMuYworCitMTTc4IEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglKZWFuIERlbHZhcmUg
PGpkZWx2YXJlQHN1c2UuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2xtNzgucnN0CitGOglkcml2ZXJzL2h3
bW9uL2xtNzguYworCitMTTgzIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglKZWFuIERlbHZh
cmUgPGpkZWx2YXJlQHN1c2UuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2xtODMucnN0CitGOglkcml2ZXJz
L2h3bW9uL2xtODMuYworCitMTTkwIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglKZWFuIERl
bHZhcmUgPGpkZWx2YXJlQHN1c2UuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdt
b24vbmF0aW9uYWwsbG05MC55YW1sCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL2xtOTAucnN0CitG
Oglkcml2ZXJzL2h3bW9uL2xtOTAuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy90aGVybWFsL2xt
OTAuaAorCitMTUUyNTEwIE1FRElBIERSSVZFUgorTToJTWFsY29sbSBQcmllc3RsZXkgPHR2Ym94
c3B5QGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2
Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglkcml2ZXJzL21lZGlhL3VzYi9kdmIt
dXNiLXYyL2xtZWRtMDQqCisKK0xPQURQSU4gU0VDVVJJVFkgTU9EVUxFCitNOglLZWVzIENvb2sg
PGtlZXNAa2VybmVsLm9yZz4KK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZWVzL2xpbnV4LmdpdCBmb3ItbmV4dC9oYXJk
ZW5pbmcKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvTFNNL0xvYWRQaW4ucnN0CitGOglz
ZWN1cml0eS9sb2FkcGluLworCitMT0NLRE9XTiBTRUNVUklUWSBNT0RVTEUKK0w6CWxpbnV4LXNl
Y3VyaXR5LW1vZHVsZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworVDoJZ2l0IGh0dHBz
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BjbW9vcmUvbHNtLmdp
dAorRjoJc2VjdXJpdHkvbG9ja2Rvd24vCisKK0xPQ0tJTkcgUFJJTUlUSVZFUworTToJUGV0ZXIg
WmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgorTToJSW5nbyBNb2xuYXIgPG1pbmdvQHJl
ZGhhdC5jb20+CitNOglXaWxsIERlYWNvbiA8d2lsbEBrZXJuZWwub3JnPgorTToJQm9xdW4gRmVu
ZyA8Ym9xdW4uZmVuZ0BnbWFpbC5jb20+IChMT0NLREVQICYgUlVTVCkKK1I6CVdhaW1hbiBMb25n
IDxsb25nbWFuQHJlZGhhdC5jb20+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L3RpcC90aXAuZ2l0IGxvY2tpbmcvY29yZQorRjoJRG9jdW1lbnRhdGlvbi9sb2Nr
aW5nLworRjoJYXJjaC8qL2luY2x1ZGUvYXNtL3NwaW5sb2NrKi5oCitGOglpbmNsdWRlL2xpbnV4
L2xvY2tkZXAqLmgKK0Y6CWluY2x1ZGUvbGludXgvbXV0ZXgqLmgKK0Y6CWluY2x1ZGUvbGludXgv
cndsb2NrKi5oCitGOglpbmNsdWRlL2xpbnV4L3J3c2VtKi5oCitGOglpbmNsdWRlL2xpbnV4L3Nl
cWxvY2suaAorRjoJaW5jbHVkZS9saW51eC9zcGlubG9jayouaAorRjoJa2VybmVsL2xvY2tpbmcv
CitGOglsaWIvbG9ja2luZyouW2NoXQorRjoJcnVzdC9oZWxwZXJzL211dGV4LmMKK0Y6CXJ1c3Qv
aGVscGVycy9zcGlubG9jay5jCitGOglydXN0L2tlcm5lbC9zeW5jL2xvY2sucnMKK0Y6CXJ1c3Qv
a2VybmVsL3N5bmMvbG9jay8KK0Y6CXJ1c3Qva2VybmVsL3N5bmMvbG9ja2VkX2J5LnJzCitYOglr
ZXJuZWwvbG9ja2luZy9sb2NrdG9ydHVyZS5jCisKK0xPR0lDQUwgRElTSyBNQU5BR0VSIFNVUFBP
UlQgKExETSwgV2luZG93cyAyMDAwL1hQL1Zpc3RhIER5bmFtaWMgRGlza3MpCitNOgkiUmljaGFy
ZCBSdXNzb24gKEZsYXRDYXApIiA8bGRtQGZsYXRjYXAub3JnPgorTDoJbGludXgtbnRmcy1kZXZA
bGlzdHMuc291cmNlZm9yZ2UubmV0CitTOglNYWludGFpbmVkCitXOglodHRwOi8vd3d3LmxpbnV4
LW50ZnMub3JnL2NvbnRlbnQvdmlldy8xOS8zNy8KK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3Vp
ZGUvbGRtLnJzdAorRjoJYmxvY2svcGFydGl0aW9ucy9sZG0uKgorCitMT0dJVEVDSCBISUQgR0FN
SU5HIEtFWUJPQVJEUworTToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6
CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9oaWQvaGlkLmdpdAorRjoJ
ZHJpdmVycy9oaWQvaGlkLWxnLWcxNS5jCisKK0xPTlRJVU0gTFQ4OTEyQiBNSVBJIFRPIEhETUkg
QlJJREdFCitNOglBZHJpZW4gR3Jhc3NlaW4gPGFkcmllbi5ncmFzc2VpbkBnbWFpbC5jb20+CitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxh
eS9icmlkZ2UvbG9udGl1bSxsdDg5MTJiLnlhbWwKK0Y6CWRyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv
bG9udGl1bS1sdDg5MTJiLmMKKworTE9PTkdBUkNICitNOglIdWFjYWkgQ2hlbiA8Y2hlbmh1YWNh
aUBrZXJuZWwub3JnPgorUjoJV0FORyBYdWVydWkgPGtlcm5lbEB4ZW4wbi5uYW1lPgorTDoJbG9v
bmdhcmNoQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9jaGVuaHVhY2FpL2xpbnV4LWxvb25n
c29uLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hcmNoL2xvb25nYXJjaC8KK0Y6CURvY3VtZW50YXRp
b24vdHJhbnNsYXRpb25zL3poX0NOL2FyY2gvbG9vbmdhcmNoLworRjoJYXJjaC9sb29uZ2FyY2gv
CitGOglkcml2ZXJzLyovKmxvb25nYXJjaCoKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9sb29uZ3NvbjNf
Y3B1ZnJlcS5jCisKK0xPT05HU09OIEdQSU8gRFJJVkVSCitNOglZaW5ibyBaaHUgPHpodXlpbmJv
QGxvb25nc29uLmNuPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2xvb25nc29uLGxz
LWdwaW8ueWFtbAorRjoJZHJpdmVycy9ncGlvL2dwaW8tbG9vbmdzb24tNjRiaXQuYworCitMT09O
R1NPTi0yIEFQQiBETUEgRFJJVkVSCitNOglCaW5iaW4gWmhvdSA8emhvdWJpbmJpbkBsb29uZ3Nv
bi5jbj4KK0w6CWRtYWVuZ2luZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbG9vbmdzb24sbHMyeC1hcGJkbWEu
eWFtbAorRjoJZHJpdmVycy9kbWEvbG9vbmdzb24yLWFwYi1kbWEuYworCitMT09OR1NPTiBMUzJY
IEkyQyBEUklWRVIKK006CUJpbmJpbiBaaG91IDx6aG91YmluYmluQGxvb25nc29uLmNuPgorTDoJ
bGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9sb29uZ3NvbixsczJ4LWkyYy55YW1sCitGOglkcml2
ZXJzL2kyYy9idXNzZXMvaTJjLWxzMnguYworCitMT09OR1NPTiBQV00gRFJJVkVSCitNOglCaW5i
aW4gWmhvdSA8emhvdWJpbmJpbkBsb29uZ3Nvbi5jbj4KK0w6CWxpbnV4LXB3bUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9wd20vbG9vbmdzb24sbHM3YS1wd20ueWFtbAorRjoJZHJpdmVycy9wd20vcHdtLWxvb25nc29u
LmMKKworTE9PTkdTT04tMiBTT0MgU0VSSUVTIENMT0NLIERSSVZFUgorTToJWWluYm8gWmh1IDx6
aHV5aW5ib0Bsb29uZ3Nvbi5jbj4KK0w6CWxpbnV4LWNsa0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9sb29u
Z3NvbixsczJrLWNsay55YW1sCitGOglkcml2ZXJzL2Nsay9jbGstbG9vbmdzb24yLmMKK0Y6CWlu
Y2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svbG9vbmdzb24sbHMyay1jbGsuaAorCitMT09OR1NPTiBT
UEkgRFJJVkVSCitNOglZaW5ibyBaaHUgPHpodXlpbmJvQGxvb25nc29uLmNuPgorTDoJbGludXgt
c3BpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3NwaS9sb29uZ3NvbixsczJrLXNwaS55YW1sCitGOglkcml2ZXJzL3Nw
aS9zcGktbG9vbmdzb24tY29yZS5jCitGOglkcml2ZXJzL3NwaS9zcGktbG9vbmdzb24tcGNpLmMK
K0Y6CWRyaXZlcnMvc3BpL3NwaS1sb29uZ3Nvbi1wbGF0LmMKK0Y6CWRyaXZlcnMvc3BpL3NwaS1s
b29uZ3Nvbi5oCisKK0xPT05HU09OLTIgU09DIFNFUklFUyBHVVRTIERSSVZFUgorTToJWWluYm8g
Wmh1IDx6aHV5aW5ib0Bsb29uZ3Nvbi5jbj4KK0w6CWxvb25nYXJjaEBsaXN0cy5saW51eC5kZXYK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od2lu
Zm8vbG9vbmdzb24sbHMyay1jaGlwaWQueWFtbAorRjoJZHJpdmVycy9zb2MvbG9vbmdzb24vbG9v
bmdzb24yX2d1dHMuYworCitMT09OR1NPTi0yIFNPQyBTRVJJRVMgUE0gRFJJVkVSCitNOglZaW5i
byBaaHUgPHpodXlpbmJvQGxvb25nc29uLmNuPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29j
L2xvb25nc29uL2xvb25nc29uLGxzMmstcG1jLnlhbWwKK0Y6CWRyaXZlcnMvc29jL2xvb25nc29u
L2xvb25nc29uMl9wbS5jCisKK0xPT05HU09OLTIgU09DIFNFUklFUyBQSU5DVFJMIERSSVZFUgor
TToJemhhbmdob25nY2hlbiA8emhhbmdob25nY2hlbkBsb29uZ3Nvbi5jbj4KK006CVlpbmJvIFpo
dSA8emh1eWluYm9AbG9vbmdzb24uY24+CitMOglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0
cmwvbG9vbmdzb24sbHMyay1waW5jdHJsLnlhbWwKK0Y6CWRyaXZlcnMvcGluY3RybC9waW5jdHJs
LWxvb25nc29uMi5jCisKK0xPT05HU09OLTIgU09DIFNFUklFUyBUSEVSTUFMIERSSVZFUgorTToJ
emhhbmdob25nY2hlbiA8emhhbmdob25nY2hlbkBsb29uZ3Nvbi5jbj4KK006CVlpbmJvIFpodSA8
emh1eWluYm9AbG9vbmdzb24uY24+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL2xv
b25nc29uLGxzMmstdGhlcm1hbC55YW1sCitGOglkcml2ZXJzL3RoZXJtYWwvbG9vbmdzb24yX3Ro
ZXJtYWwuYworCitMT09OR1NPTiBFREFDIERSSVZFUgorTToJWmhhbyBRdW5xaW4gPHpoYW9xdW5x
aW5AbG9vbmdzb24uY24+CitMOglsaW51eC1lZGFjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9lZGFjL2xvb25nc29uX2VkYWMuYworCitMU0lMT0dJQyBNUFQgRlVT
SU9OIERSSVZFUlMgKEZDL1NBUy9TUEkpCitNOglTYXRoeWEgUHJha2FzaCA8c2F0aHlhLnByYWth
c2hAYnJvYWRjb20uY29tPgorTToJU3JlZWthbnRoIFJlZGR5IDxzcmVla2FudGgucmVkZHlAYnJv
YWRjb20uY29tPgorTToJU3VnYW5hdGggUHJhYnUgU3VicmFtYW5pIDxzdWdhbmF0aC1wcmFidS5z
dWJyYW1hbmlAYnJvYWRjb20uY29tPgorTDoJTVBULUZ1c2lvbkxpbnV4LnBkbEBicm9hZGNvbS5j
b20KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6
Ly93d3cuYXZhZ290ZWNoLmNvbS9zdXBwb3J0LworRjoJZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi8K
K0Y6CWRyaXZlcnMvc2NzaS9tcHQzc2FzLworCitMU0lMT0dJQy9TWU1CSU9TL05DUiA1M0M4WFgg
YW5kIDUzQzEwMTAgUENJLVNDU0kgZHJpdmVycworTToJTWF0dGhldyBXaWxjb3ggPHdpbGx5QGlu
ZnJhZGVhZC5vcmc+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yLworCitMVEMxNjYwIERBQyBEUklWRVIKK006
CU1hcmN1cyBGb2xrZXNzb24gPG1hcmN1cy5mb2xrZXNzb25AZ21haWwuY29tPgorTDoJbGludXgt
aWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvbGx0YyxsdGMxNjYwLnlhbWwKK0Y6CWRyaXZlcnMvaWlv
L2RhYy9sdGMxNjYwLmMKKworTFRDMjY2NCBJSU8gREFDIERSSVZFUgorTToJTWljaGFlbCBIZW5u
ZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+CitNOglLaW0gU2VlciBQYWxsZXIg
PGtpbXNlZXIucGFsbGVyQGFuYWxvZy5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3Jn
CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNvbS9saW51eC1zb2Z0d2FyZS1k
cml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2RhYy9hZGks
bHRjMjY2NC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2Rh
Yy9hZGksbHRjMjY3Mi55YW1sCitGOglkcml2ZXJzL2lpby9kYWMvbHRjMjY2NC5jCisKK0xUQzI2
ODggSUlPIERBQyBEUklWRVIKK006CU51bm8gU8OhIDxudW5vLnNhQGFuYWxvZy5jb20+CitMOgls
aW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5h
bG9nLmNvbS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0
aW5nL3N5c2ZzLWJ1cy1paW8tZGFjLWx0YzI2ODgKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9paW8vZGFjL2FkaSxsdGMyNjg4LnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2RhYy9s
dGMyNjg4LmMKKworTFRDMjk0NyBIQVJEV0FSRSBNT05JVE9SIERSSVZFUgorTToJTnVubyBTw6Eg
PG51bm8uc2FAYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVy
cworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL2FkaSxsdGMyOTQ3
LnlhbWwKK0Y6CWRyaXZlcnMvaHdtb24vbHRjMjk0Ny1jb3JlLmMKK0Y6CWRyaXZlcnMvaHdtb24v
bHRjMjk0Ny1pMmMuYworRjoJZHJpdmVycy9od21vbi9sdGMyOTQ3LXNwaS5jCitGOglkcml2ZXJz
L2h3bW9uL2x0YzI5NDcuaAorCitMVEMyOTkxIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglB
bnRvbml1IE1pY2xhdXMgPGFudG9uaXUubWljbGF1c0BhbmFsb2cuY29tPgorTDoJbGludXgtaHdt
b25Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZXouYW5hbG9nLmNv
bS9saW51eC1zb2Z0d2FyZS1kcml2ZXJzCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvaHdtb24vYWRpLGx0YzI5OTEueWFtbAorRjoJZHJpdmVycy9od21vbi9sdGMyOTkxLmMK
KworTFRDMjk4MyBJSU8gVEVNUEVSQVRVUkUgRFJJVkVSCitNOglOdW5vIFPDoSA8bnVuby5zYUBh
bmFsb2cuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitX
OglodHRwczovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby90ZW1wZXJhdHVyZS9hZGksbHRjMjk4My55
YW1sCitGOglkcml2ZXJzL2lpby90ZW1wZXJhdHVyZS9sdGMyOTgzLmMKKworTFRDNDI4MiBIQVJE
V0FSRSBNT05JVE9SIERSSVZFUgorTToJTnVubyBTYSA8bnVuby5zYUBhbmFsb2cuY29tPgorTDoJ
bGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9hZGksbHRjNDI4Mi55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2h3bW9uL2x0YzQyODIucnN0CitGOglkcml2ZXJzL2h3bW9uL2x0YzQyODIuYworCitM
VEM0Mjg2IEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglEZWxwaGluZSBDQyBDaGl1IDxEZWxw
aGluZV9DQ19DaGl1QFdpd3lubi5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21v
bi9sbHRjLGx0YzQyODYueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9sdGM0Mjg2LnJzdAor
RjoJZHJpdmVycy9od21vbi9wbWJ1cy9sdGM0Mjg2LmMKKworTFRDNDMwNiBJMkMgTVVMVElQTEVY
RVIgRFJJVkVSCitNOglNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9n
LmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0
cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW11eC1sdGM0MzA2LnR4dAorRjoJZHJpdmVy
cy9pMmMvbXV4ZXMvaTJjLW11eC1sdGM0MzA2LmMKKworTFRQIChMaW51eCBUZXN0IFByb2plY3Qp
CitNOglBbmRyZWEgQ2VydmVzYXRvIDxhbmRyZWEuY2VydmVzYXRvQHN1c2UuY29tPgorTToJQ3ly
aWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+CitNOglKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVk
aGF0LmNvbT4KK006CVBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorTToJTGkgV2FuZyA8bGl3
YW5nQHJlZGhhdC5jb20+CitNOglZYW5nIFh1IDx4dXlhbmcyMDE4Lmp5QGZ1aml0c3UuY29tPgor
TToJWGlhbyBZYW5nIDx5YW5neC5qeUBmdWppdHN1LmNvbT4KK0w6CWx0cEBsaXN0cy5saW51eC5p
dCAoc3Vic2NyaWJlcnMtb25seSkKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXgtdGVz
dC1wcm9qZWN0LnJlYWR0aGVkb2NzLmlvLworVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51
eC10ZXN0LXByb2plY3QvbHRwLmdpdAorCitMVFIzOTAgQU1CSUVOVC9VViBMSUdIVCBTRU5TT1Ig
RFJJVkVSCitNOglBbnNodWwgRGFsYWwgPGFuc2h1bHVzckBnbWFpbC5jb20+CitMOglsaW51eC1p
aW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvaWlvL2xpZ2h0L2xpdGVvbixsdHIzOTAueWFtbAorRjoJZHJpdmVycy9p
aW8vbGlnaHQvbHRyMzkwLmMKKworTFlOWCAyOEcgU0VSREVTIFBIWSBEUklWRVIKK006CUlvYW5h
IENpb3JuZWkgPGlvYW5hLmNpb3JuZWlAbnhwLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bo
eS9mc2wsbHlueC0yOGcueWFtbAorRjoJZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtbHlu
eC0yOGcuYworCitMWU5YIFBDUyBNT0RVTEUKK006CUlvYW5hIENpb3JuZWkgPGlvYW5hLmNpb3Ju
ZWlAbnhwLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
ZHJpdmVycy9uZXQvcGNzL3Bjcy1seW54LmMKK0Y6CWluY2x1ZGUvbGludXgvcGNzLWx5bnguaAor
CitNNjhLIEFSQ0hJVEVDVFVSRQorTToJR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydEBsaW51eC1t
NjhrLm9yZz4KK0w6CWxpbnV4LW02OGtAbGlzdHMubGludXgtbTY4ay5vcmcKK1M6CU1haW50YWlu
ZWQKK1c6CWh0dHA6Ly93d3cubGludXgtbTY4ay5vcmcvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5l
bC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dlZXJ0L2xpbnV4LW02OGsuZ2l0CitGOglh
cmNoL202OGsvCitGOglkcml2ZXJzL3pvcnJvLworCitNNjhLIE9OIEFQUExFIE1BQ0lOVE9TSAor
TToJSm9zaHVhIFRob21wc29uIDxmdW5haG9AanVyYWkub3JnPgorTDoJbGludXgtbTY4a0BsaXN0
cy5saW51eC1tNjhrLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5tYWMubGludXgt
bTY4ay5vcmcvCitGOglhcmNoL202OGsvbWFjLworRjoJZHJpdmVycy9tYWNpbnRvc2gvYWRiLWlv
cC5jCitGOglkcml2ZXJzL21hY2ludG9zaC92aWEtbWFjaWkuYworCitNNjhLIE9OIEhQOTAwMC8z
MDAKK006CVBoaWxpcCBCbHVuZGVsbCA8cGhpbGJAZ251Lm9yZz4KK1M6CU1haW50YWluZWQKK1c6
CWh0dHA6Ly93d3cudGF6ZW5kYS5kZW1vbi5jby51ay9waGlsL2xpbnV4LWhwCitGOglhcmNoL202
OGsvaHAzMDAvCisKK004OERTMzEwMyBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8v
cGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZl
cnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tODhkczMxMDMqCisKK004OFJTMjAwMCBNRURJQSBEUklW
RVIKK006CU1hbGNvbG0gUHJpZXN0bGV5IDx0dmJveHNweUBnbWFpbC5jb20+CitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9s
aXN0LworRjoJZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL204OHJzMjAwMCoKKworTUE5MDEg
TUFTVEVSS0lUIFVTQiBGTSBSQURJTyBEUklWRVIKK006CUFsZXhleSBLbGltb3YgPGFsZXhleS5r
bGltb3ZAbGluYXJvLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9t
ZWRpYS9yYWRpby9yYWRpby1tYTkwMS5jCisKK01BQzgwMjExCitNOglKb2hhbm5lcyBCZXJnIDxq
b2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy8K
K1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC13aXJlbGVzcy9s
aXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp
dC93aXJlbGVzcy93aXJlbGVzcy5naXQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvd2lyZWxlc3Mvd2lyZWxlc3MtbmV4dC5naXQKK0Y6CURvY3Vt
ZW50YXRpb24vbmV0d29ya2luZy9tYWM4MDIxMS1pbmplY3Rpb24ucnN0CitGOglEb2N1bWVudGF0
aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0vbWFjODAyMTFfaHdzaW0ucnN0CitGOglkcml2
ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltLltjaF0KK0Y6CWluY2x1ZGUv
bmV0L21hYzgwMjExLmgKK0Y6CW5ldC9tYWM4MDIxMS8KKworTUFJTEJPWCBBUEkKK006CUphc3Np
IEJyYXIgPGphc3Npc2luZ2hicmFyQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvamFzc2licmFyL21haWxib3guZ2l0IGZvci1uZXh0CitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJveC8KK0Y6CWRyaXZlcnMvbWFp
bGJveC8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvbWFpbGJveC8KK0Y6CWluY2x1ZGUvbGludXgv
bWFpbGJveF9jbGllbnQuaAorRjoJaW5jbHVkZS9saW51eC9tYWlsYm94X2NvbnRyb2xsZXIuaAor
CitNQUlMQk9YIEFSTSBNSFV2MgorTToJVmlyZXNoIEt1bWFyIDx2aXJlc2gua3VtYXJAbGluYXJv
Lm9yZz4KK006CVR1c2hhciBLaGFuZGVsd2FsIDxUdXNoYXIuS2hhbmRlbHdhbEBhcm0uY29tPgor
TDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21haWxib3gvYXJtLG1odXYyLnlhbWwKK0Y6CWRy
aXZlcnMvbWFpbGJveC9hcm1fbWh1djIuYworRjoJaW5jbHVkZS9saW51eC9tYWlsYm94L2FybV9t
aHV2Ml9tZXNzYWdlLmgKKworTUFJTEJPWCBBUk0gTUhVdjMKK006CVN1ZGVlcCBIb2xsYSA8c3Vk
ZWVwLmhvbGxhQGFybS5jb20+CitNOglDcmlzdGlhbiBNYXJ1c3NpIDxjcmlzdGlhbi5tYXJ1c3Np
QGFybS5jb20+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0t
a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21h
aWxib3gvYXJtLG1odXYzLnlhbWwKK0Y6CWRyaXZlcnMvbWFpbGJveC9hcm1fbWh1djMuYworCitN
QU4tUEFHRVM6IE1BTlVBTCBQQUdFUyBGT1IgTElOVVggLS0gU2VjdGlvbnMgMiwgMywgNCwgNSwg
YW5kIDcKK006CUFsZWphbmRybyBDb2xvbWFyIDxhbHhAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW1h
bkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cua2VybmVsLm9y
Zy9kb2MvbWFuLXBhZ2VzCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9kb2Nz
L21hbi1wYWdlcy9tYW4tcGFnZXMuZ2l0CitUOglnaXQgZ2l0Oi8vd3d3LmFsZWphbmRyby1jb2xv
bWFyLmVzL3NyYy9hbHgvbGludXgvbWFuLXBhZ2VzL21hbi1wYWdlcy5naXQKKworTUFOQUdFTUVO
VCBDT01QT05FTlQgVFJBTlNQT1JUIFBST1RPQ09MIChNQ1RQKQorTToJSmVyZW15IEtlcnIgPGpr
QGNvZGVjb25zdHJ1Y3QuY29tLmF1PgorTToJTWF0dCBKb2huc3RvbiA8bWF0dEBjb2RlY29uc3Ry
dWN0LmNvbS5hdT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9tY3RwLnJzdAorRjoJZHJpdmVycy9uZXQvbWN0cC8K
K0Y6CWluY2x1ZGUvbGludXgvdXNiL21jdHAtdXNiLmgKK0Y6CWluY2x1ZGUvbmV0L21jdHAuaAor
RjoJaW5jbHVkZS9uZXQvbWN0cGRldmljZS5oCitGOglpbmNsdWRlL25ldC9uZXRucy9tY3RwLmgK
K0Y6CW5ldC9tY3RwLworCitNQVBMRSBUUkVFCitNOglMaWFtIFIuIEhvd2xldHQgPExpYW0uSG93
bGV0dEBvcmFjbGUuY29tPgorTDoJbWFwbGUtdHJlZUBsaXN0cy5pbmZyYWRlYWQub3JnCitMOgls
aW51eC1tbUBrdmFjay5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9jb3JlLWFw
aS9tYXBsZV90cmVlLnJzdAorRjoJaW5jbHVkZS9saW51eC9tYXBsZV90cmVlLmgKK0Y6CWluY2x1
ZGUvdHJhY2UvZXZlbnRzL21hcGxlX3RyZWUuaAorRjoJbGliL21hcGxlX3RyZWUuYworRjoJbGli
L3Rlc3RfbWFwbGVfdHJlZS5jCitGOgl0b29scy90ZXN0aW5nL3JhZGl4LXRyZWUvbWFwbGUuYwor
RjoJdG9vbHMvdGVzdGluZy9zaGFyZWQvbGludXgvbWFwbGVfdHJlZS5oCisKK01BUkRVSyAoQ1JF
QVRPUiBDSTQwKSBERVZJQ0UgVFJFRSBTVVBQT1JUCitNOglSYWh1bCBCZWRhcmthciA8cmFodWxi
ZWRhcmthcjg5QGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1pcHNAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglhcmNoL21pcHMvYm9vdC9kdHMvaW1nL3Bpc3RhY2hpbyoKKworTUFSVkVM
TCA4OEU2WFhYIEVUSEVSTkVUIFNXSVRDSCBGQUJSSUMgRFJJVkVSCitNOglBbmRyZXcgTHVubiA8
YW5kcmV3QGx1bm4uY2g+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9tYXJ2ZWxsLG12
ODhlNjA2MC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Rz
YS9tYXJ2ZWxsLG12ODhlNnh4eC55YW1sCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2
bGluay9tdjg4ZTZ4eHgucnN0CitGOglkcml2ZXJzL25ldC9kc2EvbXY4OGU2eHh4LworRjoJaW5j
bHVkZS9saW51eC9kc2EvbXY4OGU2eHh4LmgKK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0
YS9tdjg4ZTZ4eHguaAorCitNQVJWRUxMIDg4UE04ODYgUE1JQyBEUklWRVIKK006CUthcmVsIEJh
bGVqIDxiYWxlamtAbWF0Znl6LmN6PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXJ2ZWxsLDg4cG04ODYtYTEueWFtbAorRjoJZHJpdmVy
cy9pbnB1dC9taXNjLzg4cG04ODYtb25rZXkuYworRjoJZHJpdmVycy9tZmQvODhwbTg4Ni5jCitG
Oglkcml2ZXJzL3JlZ3VsYXRvci84OHBtODg2LXJlZ3VsYXRvci5jCitGOglkcml2ZXJzL3J0Yy9y
dGMtODhwbTg4Ni5jCitGOglpbmNsdWRlL2xpbnV4L21mZC84OHBtODg2LmgKKworTUFSVkVMTCBB
Uk1BREEgMzcwMCBQSFkgRFJJVkVSUworTToJTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJheW5hbEBi
b290bGluLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9waHkvbWFydmVsbCxhcm1hZGEtMzcwMC11dG1pLXBoeS55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3BoeS1tdmVidS1jb21waHkudHh0CitGOglk
cml2ZXJzL3BoeS9tYXJ2ZWxsL3BoeS1tdmVidS1hMzcwMC1jb21waHkuYworRjoJZHJpdmVycy9w
aHkvbWFydmVsbC9waHktbXZlYnUtYTM3MDAtdXRtaS5jCisKK01BUlZFTEwgQVJNQURBIDM3MDAg
U0VSSUFMIERSSVZFUgorTToJUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9tYXJ2ZWxs
LGFybWFkYS0zNzAwLXVhcnQtY2xvY2sueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3NlcmlhbC9tdmVidS11YXJ0LnR4dAorRjoJZHJpdmVycy90dHkvc2VyaWFsL212
ZWJ1LXVhcnQuYworCitNQVJWRUxMIEFSTUFEQSBEUk0gU1VQUE9SVAorTToJUnVzc2VsbCBLaW5n
IDxsaW51eEBhcm1saW51eC5vcmcudWs+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0
LmFybWxpbnV4Lm9yZy51ay9+cm1rL2xpbnV4LWFybS5naXQgZHJtLWFybWFkYS1kZXZlbAorVDoJ
Z2l0IGdpdDovL2dpdC5hcm1saW51eC5vcmcudWsvfnJtay9saW51eC1hcm0uZ2l0IGRybS1hcm1h
ZGEtZml4ZXMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2Fy
bWFkYS8KK0Y6CWRyaXZlcnMvZ3B1L2RybS9hcm1hZGEvCitGOglpbmNsdWRlL3VhcGkvZHJtL2Fy
bWFkYV9kcm0uaAorCitNQVJWRUxMIENSWVBUTyBEUklWRVIKK006CVNydWphbmEgQ2hhbGxhIDxz
Y2hhbGxhQG1hcnZlbGwuY29tPgorTToJQmhhcmF0IEJodXNoYW4gPGJiaHVzaGFuMkBtYXJ2ZWxs
LmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvY3J5cHRvL21hcnZlbGwvCitGOglpbmNsdWRlL2xpbnV4L3NvYy9tYXJ2ZWxsL29j
dGVvbnR4Mi8KKworTUFSVkVMTCBHSUdBQklUIEVUSEVSTkVUIERSSVZFUlMgKHNrZ2Uvc2t5MikK
K006CU1pcmtvIExpbmRuZXIgPG1saW5kbmVyQG1hcnZlbGwuY29tPgorTToJU3RlcGhlbiBIZW1t
aW5nZXIgPHN0ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPgorTDoJbmV0ZGV2QHZnZXIua2VybmVs
Lm9yZworUzoJT2RkIGZpeGVzCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3NrKgor
CitNQVJWRUxMIExJQkVSVEFTIFdJUkVMRVNTIERSSVZFUgorTDoJbGludXgtd2lyZWxlc3NAdmdl
ci5rZXJuZWwub3JnCitMOglsaWJlcnRhcy1kZXZAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJT3Jw
aGFuCitGOglkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL2xpYmVydGFzLworRjoJZHJpdmVy
cy9uZXQvd2lyZWxlc3MvbWFydmVsbC9saWJlcnRhc190Zi8KKworTUFSVkVMTCBNQUNDSElBVE9C
SU4gU1VQUE9SVAorTToJUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CitMOgls
aW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxs
L2FybWFkYS04MDQwLW1jYmluLmR0cworCitNQVJWRUxMIE1WNjQzWFggRVRIRVJORVQgRFJJVkVS
CitNOglTZWJhc3RpYW4gSGVzc2VsYmFydGggPHNlYmFzdGlhbi5oZXNzZWxiYXJ0aEBnbWFpbC5j
b20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212NjQzeHhfZXRoLioKKworTUFSVkVMTCBNVjg4WDMzMTAg
UEhZIERSSVZFUgorTToJUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CitNOglN
YXJlayBCZWjDum4gPGthYmVsQGtlcm5lbC5vcmc+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9waHkvbWFydmVsbDEwZy5jCisKK01BUlZF
TEwgTVZFQlUgVEhFUk1BTCBEUklWRVIKK006CU1pcXVlbCBSYXluYWwgPG1pcXVlbC5yYXluYWxA
Ym9vdGxpbi5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3RoZXJtYWwvYXJtYWRhX3Ro
ZXJtYWwuYworCitNQVJWRUxMIE1WTkVUQSBFVEhFUk5FVCBEUklWRVIKK006CU1hcmNpbiBXb2p0
YXMgPG1hcmNpbi5zLndvanRhc0BnbWFpbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YSoK
KworTUFSVkVMTCBNVlBQMiBFVEhFUk5FVCBEUklWRVIKK006CU1hcmNpbiBXb2p0YXMgPG1hcmNp
bi5zLndvanRhc0BnbWFpbC5jb20+CitNOglSdXNzZWxsIEtpbmcgPGxpbnV4QGFybWxpbnV4Lm9y
Zy51az4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbWFydmVsbCxwcDIueWFtbAorRjoJZHJp
dmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi8KKworTUFSVkVMTCBNV0lGSUVYIFdJUkVM
RVNTIERSSVZFUgorTToJQnJpYW4gTm9ycmlzIDxicmlhbm5vcnJpc0BjaHJvbWl1bS5vcmc+CitS
OglGcmFuY2VzY28gRG9sY2luaSA8ZnJhbmNlc2NvQGRvbGNpbmkuaXQ+CitMOglsaW51eC13aXJl
bGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9uZXQvd2lyZWxl
c3MvbWFydmVsbC9td2lmaWV4LworCitNQVJWRUxMIE1XTDhLIFdJUkVMRVNTIERSSVZFUgorTDoJ
bGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvbmV0
L3dpcmVsZXNzL21hcnZlbGwvbXdsOGsuYworCitNQVJWRUxMIE5BTkQgQ09OVFJPTExFUiBEUklW
RVIKK006CU1pcXVlbCBSYXluYWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+CitMOglsaW51
eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tdGQv
bmFuZC9yYXcvbWFydmVsbF9uYW5kLmMKKworTUFSVkVMTCBPQ1RFT04gRU5EUE9JTlQgRFJJVkVS
CitNOglWZWVyYXNlbmFyZWRkeSBCdXJydSA8dmJ1cnJ1QG1hcnZlbGwuY29tPgorTToJU2F0aGVz
aCBFZGFyYSA8c2VkYXJhQG1hcnZlbGwuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb25fZXAK
KworTUFSVkVMTCBPQ1RFT04gRU5EUE9JTlQgVkYgRFJJVkVSCitNOglWZWVyYXNlbmFyZWRkeSBC
dXJydSA8dmJ1cnJ1QG1hcnZlbGwuY29tPgorTToJU2F0aGVzaCBFZGFyYSA8c2VkYXJhQG1hcnZl
bGwuY29tPgorTToJU2hpbmFzIFJhc2hlZWQgPHNyYXNoZWVkQG1hcnZlbGwuY29tPgorTToJU2F0
YW5hbmRhIEJ1cmxhIDxzYnVybGFAbWFydmVsbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVv
bl9lcF92ZgorCitNQVJWRUxMIE9DVEVPTlRYMiBQSFlTSUNBTCBGVU5DVElPTiBEUklWRVIKK006
CVN1bmlsIEdvdXRoYW0gPHNnb3V0aGFtQG1hcnZlbGwuY29tPgorTToJR2VldGhhIHNvd2phbnlh
IDxnYWt1bGFAbWFydmVsbC5jb20+CitNOglTdWJiYXJheWEgU3VuZGVlcCA8c2JoYXR0YUBtYXJ2
ZWxsLmNvbT4KK006CWhhcmlwcmFzYWQgPGhrZWxhbUBtYXJ2ZWxsLmNvbT4KK006CUJoYXJhdCBC
aHVzaGFuIDxiYmh1c2hhbjJAbWFydmVsbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4
Mi9uaWMvCitGOglpbmNsdWRlL2xpbnV4L3NvYy9tYXJ2ZWxsL29jdGVvbnR4Mi8KKworTUFSVkVM
TCBPQ1RFT05UWDIgUlZVIEFETUlOIEZVTkNUSU9OIERSSVZFUgorTToJU3VuaWwgR291dGhhbSA8
c2dvdXRoYW1AbWFydmVsbC5jb20+CitNOglMaW51IENoZXJpYW4gPGxjaGVyaWFuQG1hcnZlbGwu
Y29tPgorTToJR2VldGhhIHNvd2phbnlhIDxnYWt1bGFAbWFydmVsbC5jb20+CitNOglKZXJpbiBK
YWNvYiA8amVyaW5qQG1hcnZlbGwuY29tPgorTToJaGFyaXByYXNhZCA8aGtlbGFtQG1hcnZlbGwu
Y29tPgorTToJU3ViYmFyYXlhIFN1bmRlZXAgPHNiaGF0dGFAbWFydmVsbC5jb20+CitMOgluZXRk
ZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL25ldHdv
cmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIucnN0CitGOglk
cml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi8KKworTUFSVkVMTCBQRU0g
UE1VIERSSVZFUgorTToJTGludSBDaGVyaWFuIDxsY2hlcmlhbkBtYXJ2ZWxsLmNvbT4KK006CUdv
d3RoYW1pIFRoaWFnYXJhamFuIDxndGhpYWdhcmFqYW5AbWFydmVsbC5jb20+CitTOglTdXBwb3J0
ZWQKK0Y6CWRyaXZlcnMvcGVyZi9tYXJ2ZWxsX3BlbV9wbXUuYworCitNQVJWRUxMIFBSRVNURVJB
IEVUSEVSTkVUIFNXSVRDSCBEUklWRVIKK006CVRhcmFzIENob3JueWkgPHRhcmFzLmNob3JueWlA
cGx2aXNpb24uZXU+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9NYXJ2ZWxs
LXN3aXRjaGluZy9zd2l0Y2hkZXYtcHJlc3RlcmEKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L21h
cnZlbGwvcHJlc3RlcmEvCisKK01BUlZFTEwgU09DIE1NQy9TRC9TRElPIENPTlRST0xMRVIgRFJJ
VkVSCitNOglOaWNvbGFzIFBpdHJlIDxuaWNvQGZsdXhuaWMubmV0PgorUzoJT2RkIEZpeGVzCitG
Oglkcml2ZXJzL21tYy9ob3N0L212c2Rpby4qCisKK01BUlZFTEwgVVNCIE1ESU8gQ09OVFJPTExF
UiBEUklWRVIKK006CVRvYmlhcyBXYWxkZWtyYW56IDx0b2JpYXNAd2FsZGVrcmFuei5jb20+CitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbmV0L21hcnZlbGwsbXZ1c2IueWFtbAorRjoJZHJpdmVycy9u
ZXQvbWRpby9tZGlvLW12dXNiLmMKKworTUFSVkVMTCBYRU5PTiBNTUMvU0QvU0RJTyBIT1NUIENP
TlRST0xMRVIgRFJJVkVSCitNOglIdSBaaWppIDxodXppamlAbWFydmVsbC5jb20+CitMOglsaW51
eC1tbWNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9tbWMvbWFydmVsbCx4ZW5vbi1zZGhjaS55YW1sCitGOglkcml2ZXJz
L21tYy9ob3N0L3NkaGNpLXhlbm9uKgorCitNQVJWRUxMIE9DVEVPTiBDTjEwSyBEUEkgRFJJVkVS
CitNOglWYW1zaSBBdHR1bnVydSA8dmF0dHVudXJ1QG1hcnZlbGwuY29tPgorUzoJU3VwcG9ydGVk
CitGOglkcml2ZXJzL21pc2MvbXJ2bF9jbjEwa19kcGkuYworCitNQVJWRUxMIE9DVEVPTiBFTkRQ
T0lOVCBWSVJUSU8gREFUQSBQQVRIIEFDQ0VMRVJBVE9SCitSOglzY2hhbGxhQG1hcnZlbGwuY29t
CitSOgl2YXR0dW51cnVAbWFydmVsbC5jb20KK0Y6CWRyaXZlcnMvdmRwYS9vY3Rlb25fZXAvCisK
K01BUlZFTEwgT0NURU9OIEhPVFBMVUcgRFJJVkVSCitSOglTaGlqaXRoIFRob3R0b24gPHN0aG90
dG9uQG1hcnZlbGwuY29tPgorUjoJVmFtc2kgQXR0dW51cnUgPHZhdHR1bnVydUBtYXJ2ZWxsLmNv
bT4KK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9wY2kvaG90cGx1Zy9vY3RlcF9ocC5jCisKK01B
VFJPWCBGUkFNRUJVRkZFUiBEUklWRVIKK0w6CWxpbnV4LWZiZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJT3JwaGFuCitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L21hdHJveC9tYXRyb3hmYl8qCitGOglp
bmNsdWRlL3VhcGkvbGludXgvbWF0cm94ZmIuaAorCitNQVgxNTMwMSBEUklWRVIKK006CURhbmll
bCBOaWxzc29uIDxkYW5pZWwubmlsc3NvbkBmbGV4LmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9tYXgxNTMw
MS5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vcG1idXMvbWF4MTUzMDEuYworCitNQVgyMTc1IFNEUiBU
VU5FUiBEUklWRVIKK006CVJhbWVzaCBTaGFubXVnYXN1bmRhcmFtIDxyYXNoYW5tdUBnbWFpbC5j
b20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdp
dCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9tZWRpYS9pMmMvbWF4aW0sbWF4MjE3NS50eHQKK0Y6CURvY3VtZW50YXRpb24v
dXNlcnNwYWNlLWFwaS9tZWRpYS9kcml2ZXJzL21heDIxNzUucnN0CitGOglkcml2ZXJzL21lZGlh
L2kyYy9tYXgyMTc1KgorRjoJaW5jbHVkZS91YXBpL2xpbnV4L21heDIxNzUuaAorCitNQVgzMTMz
NSBSVEMgRFJJVkVSCitNOglBbnRvbml1IE1pY2xhdXMgPGFudG9uaXUubWljbGF1c0BhbmFsb2cu
Y29tPgorTDoJbGludXgtcnRjQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRw
czovL2V6LmFuYWxvZy5jb20vbGludXgtc29mdHdhcmUtZHJpdmVycworRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3J0Yy9hZGksbWF4MzEzMzUueWFtbAorRjoJZHJpdmVycy9y
dGMvcnRjLW1heDMxMzM1LmMKKworTUFYNjY1MCBIQVJEV0FSRSBNT05JVE9SIEFORCBGQU4gQ09O
VFJPTExFUiBEUklWRVIKK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFu
CitGOglEb2N1bWVudGF0aW9uL2h3bW9uL21heDY2NTAucnN0CitGOglkcml2ZXJzL2h3bW9uL21h
eDY2NTAuYworCitNQVg5Mjg2IFFVQUQgR01TTCBERVNFUklBTElaRVIgRFJJVkVSCitNOglKYWNv
cG8gTW9uZGkgPGphY29wbytyZW5lc2FzQGptb25kaS5vcmc+CitNOglLaWVyYW4gQmluZ2hhbSA8
a2llcmFuLmJpbmdoYW0rcmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgorTToJTGF1cmVudCBQaW5j
aGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+CitNOglOaWts
YXMgU8O2ZGVybHVuZCA8bmlrbGFzLnNvZGVybHVuZCtyZW5lc2FzQHJhZ25hdGVjaC5zZT4KK0w6
CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9tYXhpbSxtYXg5Mjg2LnlhbWwKK0Y6
CWRyaXZlcnMvbWVkaWEvaTJjL21heDkyODYuYworCitNQVg5NjcxMiBRVUFEIEdNU0wyIERFU0VS
SUFMSVpFUiBEUklWRVIKK006CU5pa2xhcyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJsdW5kQHJh
Z25hdGVjaC5zZT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9tYXhpbSxt
YXg5NjcxMi55YW1sCitGOglkcml2ZXJzL3N0YWdpbmcvbWVkaWEvbWF4OTY3MTIvbWF4OTY3MTIu
YworCitNQVg5NjcxNCBHTVNMMiBERVNFUklBTElaRVIgRFJJVkVSCitNOglKdWxpZW4gTWFzc290
IDxqdWxpZW4ubWFzc290QGNvbGxhYm9yYS5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9tZWRpYS9pMmMvbWF4aW0sbWF4OTY3MTQueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvbWF4
OTY3MTQuYworCitNQVg5NjcxNyBHTVNMMiBTRVJJQUxJWkVSIERSSVZFUgorTToJSnVsaWVuIE1h
c3NvdCA8anVsaWVuLm1hc3NvdEBjb2xsYWJvcmEuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbWVkaWEvaTJjL21heGltLG1heDk2NzE3LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJj
L21heDk2NzE3LmMKKworTUFYOTg2MCBNT05PIEFVRElPIFZPSUNFIENPREVDIERSSVZFUgorTToJ
UGV0ZXIgUm9zaW4gPHBlZGFAYXhlbnRpYS5zZT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3NvdW5kL21heDk4NjAudHh0CitGOglzb3VuZC9zb2MvY29kZWNzL21heDk4NjAuKgorCitNQVhC
T1RJWCBVTFRSQVNPTklDIFJBTkdFUiBJSU8gRFJJVkVSCitNOglBbmRyZWFzIEtsaW5nZXIgPGFr
QGl0LWtsaW5nZXIuZGU+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3Byb3hpbWl0eS9t
YXhib3RpeCxtYjEyMzIueWFtbAorRjoJZHJpdmVycy9paW8vcHJveGltaXR5L21iMTIzMi5jCisK
K01BWElNIE1BWDExMjA1IERSSVZFUgorTToJUmFtb25hIEJvbGJvYWNhIDxyYW1vbmEuYm9sYm9h
Y2FAYW5hbG9nLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVzoJaHR0cHM6Ly9lei5hbmFsb2cuY29tL2xpbnV4LXNvZnR3YXJlLWRyaXZlcnMKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21heGltLG1heDExMjA1Lnlh
bWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy9tYXgxMTIwNS5jCisKK01BWElNIE1BWDE3MDQwIEZBTUlM
WSBGVUVMIEdBVUdFIERSSVZFUlMKK1I6CUlza3JlbiBDaGVybmV2IDxpc2tyZW4uY2hlcm5ldkBn
bWFpbC5jb20+CitSOglLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CitSOglN
YXJlayBTenlwcm93c2tpIDxtLnN6eXByb3dza2lAc2Ftc3VuZy5jb20+CitSOglNYXRoZXVzIENh
c3RlbGxvIDxtYXRoZXVzQGNhc3RlbGxvLmVuZy5icj4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3Bvd2VyL3N1cHBseS9tYXhpbSxtYXgxNzA0MC55YW1sCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBs
eS9tYXgxNzA0MF9iYXR0ZXJ5LmMKKworTUFYSU0gTUFYMTcwNDIgRkFNSUxZIEZVRUwgR0FVR0Ug
RFJJVkVSUworUjoJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK1I6CUtyenlz
enRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK1I6CU1hcmVrIFN6eXByb3dza2kgPG0u
c3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KK1I6CVNlYmFzdGlhbiBLcnp5c3prb3dpYWsgPHNlYmFz
dGlhbi5rcnp5c3prb3dpYWtAcHVyaS5zbT4KK1I6CVB1cmlzbSBLZXJuZWwgVGVhbSA8a2VybmVs
QHB1cmkuc20+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9zdXBwbHkvbWF4aW0sbWF4
MTcwNDIueWFtbAorRjoJZHJpdmVycy9wb3dlci9zdXBwbHkvbWF4MTcwNDJfYmF0dGVyeS5jCisK
K01BWElNIE1BWDIwMDg2IENBTUVSQSBQT1dFUiBQUk9URUNUT1IgRFJJVkVSCitNOglMYXVyZW50
IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitMOglsaW51eC1r
ZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21heGltLG1heDIwMDg2LnlhbWwKK0Y6CWRyaXZl
cnMvcmVndWxhdG9yL21heDIwMDg2LXJlZ3VsYXRvci5jCisKK01BWElNIE1BWDMwMjA4IFRFTVBF
UkFUVVJFIFNFTlNPUiBEUklWRVIKK006CVJhamF0IEtoYW5kZWx3YWwgPHJhamF0LmtoYW5kZWx3
YWxAbGludXguaW50ZWwuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9paW8vdGVtcGVyYXR1cmUvbWF4MzAyMDguYworCitNQVhJTSBN
QVg3NzY1MCBQTUlDIE1GRCBEUklWRVIKK006CUJhcnRvc3ogR29sYXN6ZXdza2kgPGJyZ2xAYmdk
ZXYucGw+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvKi8qbWF4Nzc2NTAueWFtbAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzLyovbWF4Nzc2NTAqLnlhbWwKK0Y6CWRy
aXZlcnMvZ3Bpby9ncGlvLW1heDc3NjUwLmMKK0Y6CWRyaXZlcnMvaW5wdXQvbWlzYy9tYXg3NzY1
MC1vbmtleS5jCitGOglkcml2ZXJzL2xlZHMvbGVkcy1tYXg3NzY1MC5jCitGOglkcml2ZXJzL21m
ZC9tYXg3NzY1MC5jCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9tYXg3NzY1MC1jaGFyZ2VyLmMK
K0Y6CWRyaXZlcnMvcmVndWxhdG9yL21heDc3NjUwLXJlZ3VsYXRvci5jCitGOglpbmNsdWRlL2xp
bnV4L21mZC9tYXg3NzY1MC5oCisKK01BWElNIE1BWDc3NzE0IFBNSUMgTUZEIERSSVZFUgorTToJ
THVjYSBDZXJlc29saSA8bHVjYUBsdWNhY2VyZXNvbGkubmV0PgorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tYXhpbSxtYXg3NzcxNC55YW1s
CitGOglkcml2ZXJzL21mZC9tYXg3NzcxNC5jCitGOglpbmNsdWRlL2xpbnV4L21mZC9tYXg3Nzcx
NC5oCisKK01BWElNIE1BWDc3NzU5IFBNSUMgTUZEIERSSVZFUgorTToJQW5kcsOpIERyYXN6aWsg
PGFuZHJlLmRyYXN6aWtAbGluYXJvLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy8q
L21heGltLG1heDc3NzU5Ki55YW1sCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1tYXg3Nzc1OS5jCitG
Oglkcml2ZXJzL21mZC9tYXg3Nzc1OS5jCitGOglkcml2ZXJzL252bWVtL21heDc3NzU5LW52bWVt
LmMKK0Y6CWluY2x1ZGUvbGludXgvbWZkL21heDc3NzU5LmgKKworTUFYSU0gTUFYNzc4MDIgUE1J
QyBSRUdVTEFUT1IgREVWSUNFIERSSVZFUgorTToJSmF2aWVyIE1hcnRpbmV6IENhbmlsbGFzIDxq
YXZpZXJAZG93aGlsZTAub3JnPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvKi8qbWF4Nzc4
MDIueWFtbAorRjoJZHJpdmVycy9yZWd1bGF0b3IvbWF4Nzc4MDItcmVndWxhdG9yLmMKK0Y6CWlu
Y2x1ZGUvZHQtYmluZGluZ3MvKi8qbWF4Nzc4MDIuaAorCitNQVhJTSBNQVg3Nzk3NiBCQVRURVJZ
IENIQVJHRVIKK006CUx1Y2EgQ2VyZXNvbGkgPGx1Y2FAbHVjYWNlcmVzb2xpLm5ldD4KK1M6CVN1
cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3N1cHBs
eS9tYXhpbSxtYXg3Nzk3Ni55YW1sCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9tYXg3Nzk3Nl9j
aGFyZ2VyLmMKKworTUFYSU0gTVVJQyBDSEFSR0VSIERSSVZFUlMgRk9SIEVYWU5PUyBCQVNFRCBC
T0FSRFMKK006CUtyenlzenRvZiBLb3psb3dza2kgPGtyemtAa2VybmVsLm9yZz4KK0w6CWxpbnV4
LXBtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorQjoJbWFpbHRvOmxpbnV4LXNhbXN1
bmctc29jQHZnZXIua2VybmVsLm9yZworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3Bvd2VyL3N1cHBseS9tYXhpbSxtYXgxNDU3Ny55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvcG93ZXIvc3VwcGx5L21heGltLG1heDc3NjkzLnlhbWwKK0Y6CWRy
aXZlcnMvcG93ZXIvc3VwcGx5L21heDE0NTc3X2NoYXJnZXIuYworRjoJZHJpdmVycy9wb3dlci9z
dXBwbHkvbWF4Nzc2OTNfY2hhcmdlci5jCisKK01BWElNIFBNSUMgQU5EIE1VSUMgRFJJVkVSUyBG
T1IgRVhZTk9TIEJBU0VEIEJPQVJEUworTToJQ2hhbndvbyBDaG9pIDxjdzAwLmNob2lAc2Ftc3Vu
Zy5jb20+CitNOglLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CitMOglsaW51
eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitCOgltYWlsdG86bGludXgt
c2Ftc3VuZy1zb2NAdmdlci5rZXJuZWwub3JnCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvKi9tYXhpbSxtYXgxNDU3Ny55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvKi9tYXhpbSxtYXg3NzY4Ni55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvKi9tYXhpbSxtYXg3NzY5My55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvKi9tYXhpbSxtYXg3NzcwNSoueWFtbAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzLyovbWF4aW0sbWF4Nzc4NDMueWFtbAorRjoJZHJpdmVycy9s
ZWRzL2xlZHMtbWF4Nzc3MDUuYworRjoJZHJpdmVycy8qLyptYXg3Nzg0My5jCitGOglkcml2ZXJz
LyovbWF4MTQ1NzcqLmMKK0Y6CWRyaXZlcnMvKi9tYXg3NzY4NiouYworRjoJZHJpdmVycy8qL21h
eDc3NjkzKi5jCitGOglkcml2ZXJzLyovbWF4Nzc3MDUqLmMKK0Y6CWRyaXZlcnMvY2xrL2Nsay1t
YXg3NzY4Ni5jCitGOglkcml2ZXJzL2V4dGNvbi9leHRjb24tbWF4MTQ1NzcuYworRjoJZHJpdmVy
cy9leHRjb24vZXh0Y29uLW1heDc3NjkzLmMKK0Y6CWRyaXZlcnMvcnRjL3J0Yy1tYXg3NzY4Ni5j
CitGOglpbmNsdWRlL2xpbnV4L21mZC9tYXgxNDU3NyouaAorRjoJaW5jbHVkZS9saW51eC9tZmQv
bWF4Nzc2ODYqLmgKK0Y6CWluY2x1ZGUvbGludXgvbWZkL21heDc3NjkzKi5oCitGOglpbmNsdWRl
L2xpbnV4L21mZC9tYXg3NzcwNSouaAorCitNQVhJUkFESU8gRk0gUkFESU8gUkVDRUlWRVIgRFJJ
VkVSCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZwor
VDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9yYWRp
by9yYWRpby1tYXhpcmFkaW8qCisKK01BWExJTkVBUiBFVEhFUk5FVCBQSFkgRFJJVkVSCitNOglY
dSBMaWFuZyA8bHh1QG1heGxpbmVhci5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbmV0L3BoeS9teGwtODYxMTAuYworRjoJZHJpdmVycy9u
ZXQvcGh5L214bC1ncHkuYworCitNQ0FOIE1NSU8gREVWSUNFIERSSVZFUgorTToJQ2hhbmRyYXNl
a2FyIFJhbWFrcmlzaG5hbiA8cmNzZWthckBzYW1zdW5nLmNvbT4KK0w6CWxpbnV4LWNhbkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9uZXQvY2FuL2Jvc2NoLG1fY2FuLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2Nhbi9tX2Nh
bi9tX2Nhbi5jCitGOglkcml2ZXJzL25ldC9jYW4vbV9jYW4vbV9jYW4uaAorRjoJZHJpdmVycy9u
ZXQvY2FuL21fY2FuL21fY2FuX3BsYXRmb3JtLmMKKworTUNCQSBNSUNST0NISVAgQ0FOIEJVUyBB
TkFMWVpFUiBUT09MIERSSVZFUgorUjoJWWFzdXNoaSBTSE9KSSA8eWFzaGlAc3BhY2VjdWJpY3Mu
Y29tPgorTDoJbGludXgtY2FuQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9uZXQvY2FuL3VzYi9tY2JhX3VzYi5jCisKK01DUDIyMjFBIE1JQ1JPQ0hJUCBVU0ItSElE
IFRPIEkyQyBCUklER0UgRFJJVkVSCitNOglSaXNoaSBHdXB0YSA8Z3VwdDIxQGdtYWlsLmNvbT4K
K0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9oaWQvaGlkLW1jcDIyMjEuYworCitNQ1Ay
NTFYRkQgU1BJLUNBTiBORVRXT1JLIERSSVZFUgorTToJTWFyYyBLbGVpbmUtQnVkZGUgPG1rbEBw
ZW5ndXRyb25peC5kZT4KK006CU1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRo
YXNpdmFtQGxpbmFyby5vcmc+CitSOglUaG9tYXMgS29wcCA8dGhvbWFzLmtvcHBAbWljcm9jaGlw
LmNvbT4KK0w6CWxpbnV4LWNhbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2FuL21pY3JvY2hpcCxtY3AyNTF4
ZmQueWFtbAorRjoJZHJpdmVycy9uZXQvY2FuL3NwaS9tY3AyNTF4ZmQvCisKK01DUDQwMTggQU5E
IE1DUDQ1MzEgTUlDUk9DSElQIERJR0lUQUwgUE9URU5USU9NRVRFUiBEUklWRVJTCitNOglQZXRl
ciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtaWlv
LXBvdGVudGlvbWV0ZXItbWNwNDUzMQorRjoJZHJpdmVycy9paW8vcG90ZW50aW9tZXRlci9tY3A0
MDE4LmMKK0Y6CWRyaXZlcnMvaWlvL3BvdGVudGlvbWV0ZXIvbWNwNDUzMS5jCisKK01DUDQ4MjEg
REFDIERSSVZFUgorTToJQW5zaHVsIERhbGFsIDxhbnNodWx1c3JAZ21haWwuY29tPgorTDoJbGlu
dXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMvbWljcm9jaGlwLG1jcDQ4MjEueWFtbAorRjoJZHJp
dmVycy9paW8vZGFjL21jcDQ4MjEuYworCitNQ1IyMEEgSUVFRS04MDIuMTUuNCBSQURJTyBEUklW
RVIKK006CVN0ZWZhbiBTY2htaWR0IDxzdGVmYW5AZGF0ZW5mcmVpaGFmZW4ub3JnPgorTDoJbGlu
dXgtd3BhbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworVzoJaHR0cHM6Ly9naXRodWIu
Y29tL3h1ZWxpdS9tY3IyMGEtbGludXgKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9uZXQvaWVlZTgwMjE1NC9tY3IyMGEudHh0CitGOglkcml2ZXJzL25ldC9pZWVlODAyMTU0
L21jcjIwYS5jCitGOglkcml2ZXJzL25ldC9pZWVlODAyMTU0L21jcjIwYS5oCisKK01ESU8gUkVH
TUFQIERSSVZFUgorTToJTWF4aW1lIENoZXZhbGxpZXIgPG1heGltZS5jaGV2YWxsaWVyQGJvb3Rs
aW4uY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9uZXQvbWRpby9tZGlvLXJlZ21hcC5jCitGOglpbmNsdWRlL2xpbnV4L21kaW8vbWRpby1y
ZWdtYXAuaAorCitNRUFTVVJFTUVOVCBDT01QVVRJTkcgQ0lPLURBQyBJSU8gRFJJVkVSCitNOglX
aWxsaWFtIEJyZWF0aGl0dCBHcmF5IDx3YmdAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlpb0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaWlvL2RhYy9jaW8tZGFjLmMK
KworTUVESUEgQ09OVFJPTExFUiBGUkFNRVdPUksKK006CVNha2FyaSBBaWx1cyA8c2FrYXJpLmFp
bHVzQGxpbnV4LmludGVsLmNvbT4KK006CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hh
cnRAaWRlYXNvbmJvYXJkLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitXOglodHRwczovL3d3dy5saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4
dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9tYy8KK0Y6CWluY2x1ZGUvbWVkaWEv
bWVkaWEtKi5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvbWVkaWEuaAorCitNRURJQSBEUklWRVIg
Rk9SIEZSRUVTQ0FMRSBJTVggUFhQCitNOglQaGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJv
bml4LmRlPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitU
OglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3BsYXRm
b3JtL254cC9pbXgtcHhwLltjaF0KKworTUVESUEgRFJJVkVSUyBGT1IgQVNDT1QyRQorTToJQWJ5
bGF5IE9zcGFuIDxhb3NwYW5AYW1hem9uLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitXOglodHRwOi8vbmV0
dXAudHYvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21l
ZGlhL2R2Yi1mcm9udGVuZHMvYXNjb3QyZSoKKworTUVESUEgRFJJVkVSUyBGT1IgQ1hEMjA5OUFS
IENJIENPTlRST0xMRVJTCitNOglKYXNtaW4gSmVzc2ljaCA8amFzbWluQGFudy5hdD4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51
eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9t
ZWRpYS9kdmItZnJvbnRlbmRzL2N4ZDIwOTkqCisKK01FRElBIERSSVZFUlMgRk9SIENYRDI4NDFF
UgorTToJQWJ5bGF5IE9zcGFuIDxhb3NwYW5AYW1hem9uLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZn
ZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitXOglo
dHRwOi8vbmV0dXAudHYvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglk
cml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvY3hkMjg0MWVyKgorCitNRURJQSBEUklWRVJTIEZP
UiBDWEQyODgwCitNOglZYXN1bmFyaSBUYWtpZ3VjaGkgPFlhc3VuYXJpLlRha2lndWNoaUBzb255
LmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglo
dHRwOi8vbGludXh0di5vcmcvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitG
Oglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvY3hkMjg4MC8qCitGOglkcml2ZXJzL21lZGlh
L3NwaS9jeGQyODgwKgorCitNRURJQSBEUklWRVJTIEZPUiBESUdJVEFMIERFVklDRVMgUENJRSBE
RVZJQ0VTCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0
cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJ
ZHJpdmVycy9tZWRpYS9wY2kvZGRicmlkZ2UvKgorCitNRURJQSBEUklWRVJTIEZPUiBGUkVFU0NB
TEUgSU1YCitNOglTdGV2ZSBMb25nZXJiZWFtIDxzbG9uZ2VyYmVhbUBnbWFpbC5jb20+CitNOglQ
aGlsaXBwIFphYmVsIDxwLnphYmVsQHBlbmd1dHJvbml4LmRlPgorTDoJbGludXgtbWVkaWFAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVk
aWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21lZGlhL2lteC5yc3QKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9mc2wsaW14Ni1taXBpLWNzaTIu
eWFtbAorRjoJZHJpdmVycy9zdGFnaW5nL21lZGlhL2lteC8KK0Y6CWluY2x1ZGUvbGludXgvaW14
LW1lZGlhLmgKK0Y6CWluY2x1ZGUvbWVkaWEvaW14LmgKKworTUVESUEgRFJJVkVSUyBGT1IgRlJF
RVNDQUxFIElNWDcvOAorTToJUnVpIE1pZ3VlbCBTaWx2YSA8cm1mcmZzQGdtYWlsLmNvbT4KK006
CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK006
CU1hcnRpbiBLZXBwbGluZ2VyIDxtYXJ0aW4ua2VwcGxpbmdlckBwdXJpLnNtPgorUjoJUHVyaXNt
IEtlcm5lbCBUZWFtIDxrZXJuZWxAcHVyaS5zbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAor
RjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tZWRpYS9pbXg3LnJzdAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL254cCxpbXgtbWlwaS1jc2kyLnlhbWwKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9ueHAsaW14Ny1jc2kueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL254cCxpbXg4bXEt
bWlwaS1jc2kyLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnhwL2lteC1taXBpLWNz
aXMuYworRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9ueHAvaW14Ny1tZWRpYS1jc2kuYworRjoJ
ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9ueHAvaW14OG1xLW1pcGktY3NpMi5jCisKK01FRElBIERS
SVZFUlMgRk9SIEhFTEVORQorTToJQWJ5bGF5IE9zcGFuIDxhb3NwYW5AYW1hem9uLmNvbT4KK0w6
CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL2xp
bnV4dHYub3JnCitXOglodHRwOi8vbmV0dXAudHYvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvaGVsZW5lKgorCitNRURJ
QSBEUklWRVJTIEZPUiBIT1JVUzNBCitNOglBYnlsYXkgT3NwYW4gPGFvc3BhbkBhbWF6b24uY29t
PgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBz
Oi8vbGludXh0di5vcmcKK1c6CWh0dHA6Ly9uZXR1cC50di8KK1Q6CWdpdCBnaXQ6Ly9saW51eHR2
Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ob3J1czNhKgor
CitNRURJQSBEUklWRVJTIEZPUiBMTkJIMjUKK006CUFieWxheSBPc3BhbiA8YW9zcGFuQGFtYXpv
bi5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJ
aHR0cHM6Ly9saW51eHR2Lm9yZworVzoJaHR0cDovL25ldHVwLnR2LworVDoJZ2l0IGdpdDovL2xp
bnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL2xuYmgy
NSoKKworTUVESUEgRFJJVkVSUyBGT1IgTVhMNVhYIFRVTkVSIERFTU9EVUxBVE9SUworTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEv
ZHZiLWZyb250ZW5kcy9teGw1eHgqCisKK01FRElBIERSSVZFUlMgRk9SIE5FVFVQIFBDSSBVTklW
RVJTQUwgRFZCIGRldmljZXMKK006CUFieWxheSBPc3BhbiA8YW9zcGFuQGFtYXpvbi5jb20+CitM
OglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9s
aW51eHR2Lm9yZworVzoJaHR0cDovL25ldHVwLnR2LworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3Jn
L21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9wY2kvbmV0dXBfdW5pZHZiLyoKKworTUVESUEg
RFJJVkVSUyBGT1IgTlZJRElBIFRFR1JBIC0gVkRFCitNOglEbWl0cnkgT3NpcGVua28gPGRpZ2V0
eEBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXRl
Z3JhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYu
b3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlh
L252aWRpYSx0ZWdyYS12ZGUueWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9udmlkaWEv
dGVncmEtdmRlLworCitNRURJQSBEUklWRVJTIEZPUiBSRU5FU0FTIC0gQ0VVCitNOglKYWNvcG8g
TW9uZGkgPGphY29wb0BqbW9uZGkub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3Jn
CitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJ
Z2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL21lZGlhL3JlbmVzYXMsY2V1LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxh
dGZvcm0vcmVuZXNhcy9yZW5lc2FzLWNldS5jCitGOglpbmNsdWRlL21lZGlhL2Rydi1pbnRmL3Jl
bmVzYXMtY2V1LmgKKworTUVESUEgRFJJVkVSUyBGT1IgUkVORVNBUyAtIERSSUYKK006CUZhYnJp
emlvIENhc3RybyA8ZmFicml6aW8uY2FzdHJvLmp6QHJlbmVzYXMuY29tPgorTDoJbGludXgtbWVk
aWFAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JlbmVzYXMsZHJpZi55YW1sCitG
Oglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvcmNhcl9kcmlmLmMKKworTUVESUEgRFJJ
VkVSUyBGT1IgUkVORVNBUyAtIEZDUAorTToJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5j
aGFydEBpZGVhc29uYm9hcmQuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitM
OglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0
IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL21lZGlhL3JlbmVzYXMsZmNwLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZv
cm0vcmVuZXNhcy9yY2FyLWZjcC5jCitGOglpbmNsdWRlL21lZGlhL3JjYXItZmNwLmgKKworTUVE
SUEgRFJJVkVSUyBGT1IgUkVORVNBUyAtIEZEUDEKK006CUtpZXJhbiBCaW5naGFtIDxraWVyYW4u
YmluZ2hhbStyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvcmVuZXNhcyxmZHAxLnlhbWwKK0Y6CWRyaXZlcnMv
bWVkaWEvcGxhdGZvcm0vcmVuZXNhcy9yY2FyX2ZkcDEuYworCitNRURJQSBEUklWRVJTIEZPUiBS
RU5FU0FTIC0gVklOCitNOglOaWtsYXMgU8O2ZGVybHVuZCA8bmlrbGFzLnNvZGVybHVuZEByYWdu
YXRlY2guc2U+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVz
YXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vbGludXh0
di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVk
aWEvcmVuZXNhcyxjc2kyLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9tZWRpYS9yZW5lc2FzLGlzcC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbWVkaWEvcmVuZXNhcyx2aW4ueWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9y
ZW5lc2FzL3JjYXItY3NpMi5jCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvcmNh
ci1pc3AvCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvcmNhci12aW4vCisKK01F
RElBIERSSVZFUlMgRk9SIFJFTkVTQVMgLSBWU1AxCitNOglMYXVyZW50IFBpbmNoYXJ0IDxsYXVy
ZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitNOglLaWVyYW4gQmluZ2hhbSA8a2llcmFu
LmJpbmdoYW0rcmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5r
ZXJuZWwub3JnCitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JlbmVzYXMsdnNwMS55YW1sCitGOglkcml2ZXJz
L21lZGlhL3BsYXRmb3JtL3JlbmVzYXMvdnNwMS8KKworTUVESUEgRFJJVkVSUyBGT1IgU1QgU1RW
MDkxMCBERU1PRFVMQVRPUiBJQ3MKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
T3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvc3R2MDkxMCoKKworTUVE
SUEgRFJJVkVSUyBGT1IgU1QgU1RWNjExMSBUVU5FUiBJQ3MKK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0
Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMv
c3R2NjExMSoKKworTUVESUEgRFJJVkVSUyBGT1IgU1RNMzIgLSBDU0kKK006CUFsYWluIFZvbG1h
dCA8YWxhaW4udm9sbWF0QGZvc3Muc3QuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYV90cmVlLmdp
dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3N0LHN0bTMybXAy
NS1jc2kueWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdC9zdG0zMi9zdG0zMi1jc2ku
YworCitNRURJQSBEUklWRVJTIEZPUiBTVE0zMiAtIERDTUkgLyBEQ01JUFAKK006CUh1Z3VlcyBG
cnVjaGV0IDxodWd1ZXMuZnJ1Y2hldEBmb3NzLnN0LmNvbT4KK006CUFsYWluIFZvbG1hdCA8YWxh
aW4udm9sbWF0QGZvc3Muc3QuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdCxzdG0zMi1kY21pLnlhbWwKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zdCxzdG0zMi1kY21pcHAu
eWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9zdC9zdG0zMi9zdG0zMi1kY21pLmMKK0Y6
CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vc3Qvc3RtMzIvc3RtMzItZGNtaXBwLyoKKworTUVESUEg
SU5QVVQgSU5GUkFTVFJVQ1RVUkUgKFY0TC9EVkIpCitNOglNYXVybyBDYXJ2YWxobyBDaGVoYWIg
PG1jaGVoYWJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5r
ZXJuZWwub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9saW51eHR2
Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbWVkaWEvCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvCitGOglEb2N1bWVudGF0aW9u
L2RyaXZlci1hcGkvbWVkaWEvCitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEv
CitGOglkcml2ZXJzL21lZGlhLworRjoJZHJpdmVycy9zdGFnaW5nL21lZGlhLworRjoJaW5jbHVk
ZS9kdC1iaW5kaW5ncy9tZWRpYS8KK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9tZWRp
YS8KK0Y6CWluY2x1ZGUvbWVkaWEvCitGOglpbmNsdWRlL3VhcGkvbGludXgvZHZiLworRjoJaW5j
bHVkZS91YXBpL2xpbnV4L2l2dHYqCitGOglpbmNsdWRlL3VhcGkvbGludXgvbWVkaWEuaAorRjoJ
aW5jbHVkZS91YXBpL2xpbnV4L3V2Y3ZpZGVvLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92NGwy
LSoKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92aWRlb2RldjIuaAorCitNRURJQVRFSyBCTFVFVE9P
VEggRFJJVkVSCitNOglTZWFuIFdhbmcgPHNlYW4ud2FuZ0BtZWRpYXRlay5jb20+CitMOglsaW51
eC1ibHVldG9vdGhAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1tZWRpYXRla0BsaXN0cy5pbmZy
YWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvYmx1ZXRvb3RoL21lZGlh
dGVrLGJsdWV0b290aC50eHQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9u
ZXQvYmx1ZXRvb3RoL21lZGlhdGVrLG10NzkyMXMtYmx1ZXRvb3RoLnlhbWwKK0Y6CWRyaXZlcnMv
Ymx1ZXRvb3RoL2J0bXRrdWFydC5jCisKK01FRElBVEVLIEJPQVJEIExFVkVMIFNIVVRET1dOIERS
SVZFUlMKK006CVNlbiBDaHUgPHNlbi5jaHVAbWVkaWF0ZWsuY29tPgorTToJU2VhbiBXYW5nIDxz
ZWFuLndhbmdAbWVkaWF0ZWsuY29tPgorTToJTWFjcGF1bCBMaW4gPG1hY3BhdWwubGluQG1lZGlh
dGVrLmNvbT4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tZWRpYXRlayxtdDYzOTcueWFt
bAorRjoJZHJpdmVycy9wb3dlci9yZXNldC9tdDYzMjMtcG93ZXJvZmYuYworCitNRURJQVRFSyBD
SVIgRFJJVkVSCitNOglTZWFuIFdhbmcgPHNlYW4ud2FuZ0BtZWRpYXRlay5jb20+CitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL21lZGlhL3JjL210ay1jaXIuYworCitNRURJQVRFSyBETUEgRFJJ
VkVSCitNOglTZWFuIFdhbmcgPHNlYW4ud2FuZ0BtZWRpYXRlay5jb20+CitMOglkbWFlbmdpbmVA
dmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcg
KG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMu
aW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL21lZGlhdGVrLCoK
K0Y6CWRyaXZlcnMvZG1hL21lZGlhdGVrLworCitNRURJQVRFSyBFVEhFUk5FVCBEUklWRVIKK006
CUZlbGl4IEZpZXRrYXUgPG5iZEBuYmQubmFtZT4KK006CVNlYW4gV2FuZyA8c2Vhbi53YW5nQG1l
ZGlhdGVrLmNvbT4KK006CUxvcmVuem8gQmlhbmNvbmkgPGxvcmVuem9Aa2VybmVsLm9yZz4KK0w6
CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0
aGVybmV0L21lZGlhdGVrLworCitNRURJQVRFSyBFVEhFUk5FVCBQQ1MgRFJJVkVSCitNOglBbGV4
YW5kZXIgQ291emVucyA8bHlueGlzQGZlODAuZXU+CitNOglEYW5pZWwgR29sbGUgPGRhbmllbEBt
YWtyb3RvcGlhLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMKK0Y6CWluY2x1ZGUvbGludXgvcGNz
L3Bjcy1tdGstbHlueGkuaAorCitNRURJQVRFSyBFVEhFUk5FVCBQSFkgRFJJVkVSUworTToJRGFu
aWVsIEdvbGxlIDxkYW5pZWxAbWFrcm90b3BpYS5vcmc+CitNOglRaW5nZmFuZyBEZW5nIDxkcWZl
eHRAZ21haWwuY29tPgorTToJU2t5TGFrZSBIdWFuZyA8U2t5TGFrZS5IdWFuZ0BtZWRpYXRlay5j
b20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L25ldC9waHkvbWVkaWF0ZWsvbXRrLTJwNWdlLmMKK0Y6CWRyaXZlcnMvbmV0L3BoeS9tZWRpYXRl
ay9tdGstZ2Utc29jLmMKK0Y6CWRyaXZlcnMvbmV0L3BoeS9tZWRpYXRlay9tdGstcGh5LWxpYi5j
CitGOglkcml2ZXJzL25ldC9waHkvbWVkaWF0ZWsvbXRrLWdlLmMKK0Y6CWRyaXZlcnMvbmV0L3Bo
eS9tZWRpYXRlay9tdGsuaAorRjoJZHJpdmVycy9waHkvbWVkaWF0ZWsvcGh5LW10ay14ZmktdHBo
eS5jCisKK01FRElBVEVLIEkyQyBDT05UUk9MTEVSIERSSVZFUgorTToJUWlpIFdhbmcgPHFpaS53
YW5nQG1lZGlhdGVrLmNvbT4KK0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvaTJjLW10NjV4
eC55YW1sCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLW10NjV4eC5jCisKK01FRElBVEVLIElP
TU1VIERSSVZFUgorTToJWW9uZyBXdSA8eW9uZy53dUBtZWRpYXRlay5jb20+CitMOglpb21tdUBs
aXN0cy5saW51eC5kZXYKK0w6CWxpbnV4LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1v
ZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW9tbXUvbWVkaWF0ZWsqCitGOglkcml2ZXJzL2lvbW11
L210a19pb21tdSoKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvbWVtb3J5L21lZGlhdGVrLG10Ki1w
b3J0LmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvbWVtb3J5L210Ki1wb3J0LmgKKworTUVESUFU
RUsgSlBFRyBEUklWRVIKK006CUJpbiBMaXUgPGJpbi5saXVAbWVkaWF0ZWsuY29tPgorUzoJU3Vw
cG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbWVkaWF0
ZWstanBlZy0qLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVkaWF0ZWsvanBlZy8K
KworTUVESUFURUsgS0VZUEFEIERSSVZFUgorTToJTWF0dGlqcyBLb3JwZXJzaG9layA8bWtvcnBl
cnNob2VrQGtlcm5lbC5vcmc+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9pbnB1dC9tZWRpYXRlayxtdDY3Nzkta2V5cGFkLnlhbWwKK0Y6CWRyaXZl
cnMvaW5wdXQva2V5Ym9hcmQvbXQ2Nzc5LWtleXBhZC5jCisKK01FRElBVEVLIE1EUCBEUklWRVIK
K006CU1pbmdoc2l1IFRzYWkgPG1pbmdoc2l1LnRzYWlAbWVkaWF0ZWsuY29tPgorTToJSG91bG9u
ZyBXZWkgPGhvdWxvbmcud2VpQG1lZGlhdGVrLmNvbT4KK006CUFuZHJldy1DVCBDaGVuIDxhbmRy
ZXctY3QuY2hlbkBtZWRpYXRlay5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9tZWRpYXRlay1tZHAudHh0CitGOglkcml2ZXJzL21l
ZGlhL3BsYXRmb3JtL21lZGlhdGVrL21kcC8KK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVk
aWF0ZWsvdnB1LworCitNRURJQVRFSyBNRURJQSBEUklWRVIKK006CVRpZmZhbnkgTGluIDx0aWZm
YW55LmxpbkBtZWRpYXRlay5jb20+CitNOglBbmRyZXctQ1QgQ2hlbiA8YW5kcmV3LWN0LmNoZW5A
bWVkaWF0ZWsuY29tPgorTToJWXVuZmVpIERvbmcgPHl1bmZlaS5kb25nQG1lZGlhdGVrLmNvbT4K
K1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlh
L21lZGlhdGVrLHZjb2RlYyoueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL21lZGlhdGVrLXZwdS50eHQKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbWVk
aWF0ZWsvdmNvZGVjLworRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tZWRpYXRlay92cHUvCisK
K01FRElBVEVLIE1JUEktQ1NJIENEUEhZIERSSVZFUgorTToJSnVsaWVuIFN0ZXBoYW4gPGpzdGVw
aGFuQGJheWxpYnJlLmNvbT4KK006CUFuZHkgSHNpZWggPGFuZHkuaHNpZWhAbWVkaWF0ZWsuY29t
PgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5
L21lZGlhdGVrLG10ODM2NS1jc2ktcngueWFtbAorRjoJZHJpdmVycy9waHkvbWVkaWF0ZWsvcGh5
LW10ay1taXBpLWNzaS0wLTUqCisKK01FRElBVEVLIE1NQy9TRC9TRElPIERSSVZFUgorTToJQ2hh
b3RpYW4gSmluZyA8Y2hhb3RpYW4uamluZ0BtZWRpYXRlay5jb20+CitTOglNYWludGFpbmVkCitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbW1jL210ay1zZC55YW1sCitGOglk
cml2ZXJzL21tYy9ob3N0L210ay1zZC5jCisKK01FRElBVEVLIE1UNjczNSBDTE9DSyAmIFJFU0VU
IERSSVZFUlMKK006CVlhc3NpbmUgT3VkamFuYSA8eS5vdWRqYW5hQHByb3Rvbm1haWwuY29tPgor
TDoJbGludXgtY2xrQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMuaW5m
cmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVk
CitGOglkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzM1LWFwbWl4ZWRzeXMuYworRjoJZHJp
dmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NjczNS1pbWdzeXMuYworRjoJZHJpdmVycy9jbGsvbWVk
aWF0ZWsvY2xrLW10NjczNS1pbmZyYWNmZy5jCitGOglkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGst
bXQ2NzM1LW1mZ2NmZy5jCitGOglkcml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzM1LXBlcmlj
ZmcuYworRjoJZHJpdmVycy9jbGsvbWVkaWF0ZWsvY2xrLW10NjczNS10b3Bja2dlbi5jCitGOglk
cml2ZXJzL2Nsay9tZWRpYXRlay9jbGstbXQ2NzM1LXZkZWNzeXMuYworRjoJZHJpdmVycy9jbGsv
bWVkaWF0ZWsvY2xrLW10NjczNS12ZW5jc3lzLmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv
Y2svbWVkaWF0ZWssbXQ2NzM1LWFwbWl4ZWRzeXMuaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9j
bG9jay9tZWRpYXRlayxtdDY3MzUtaW1nc3lzLmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv
Y2svbWVkaWF0ZWssbXQ2NzM1LWluZnJhY2ZnLmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv
Y2svbWVkaWF0ZWssbXQ2NzM1LW1mZ2NmZy5oCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2Nr
L21lZGlhdGVrLG10NjczNS1wZXJpY2ZnLmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2sv
bWVkaWF0ZWssbXQ2NzM1LXRvcGNrZ2VuLmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xvY2sv
bWVkaWF0ZWssbXQ2NzM1LXZkZWNzeXMuaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9jbG9jay9t
ZWRpYXRlayxtdDY3MzUtdmVuY3N5cy5oCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L21l
ZGlhdGVrLG10NjczNS1pbmZyYWNmZy5oCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L21l
ZGlhdGVrLG10NjczNS1tZmdjZmcuaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9tZWRp
YXRlayxtdDY3MzUtcGVyaWNmZy5oCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0L21lZGlh
dGVrLG10NjczNS12ZGVjc3lzLmgKKworTUVESUFURUsgTVQ3NiBXSVJFTEVTUyBMQU4gRFJJVkVS
CitNOglGZWxpeCBGaWV0a2F1IDxuYmRAbmJkLm5hbWU+CitNOglMb3JlbnpvIEJpYW5jb25pIDxs
b3JlbnpvQGtlcm5lbC5vcmc+CitNOglSeWRlciBMZWUgPHJ5ZGVyLmxlZUBtZWRpYXRlay5jb20+
CitSOglTaGF5bmUgQ2hlbiA8c2hheW5lLmNoZW5AbWVkaWF0ZWsuY29tPgorUjoJU2VhbiBXYW5n
IDxzZWFuLndhbmdAbWVkaWF0ZWsuY29tPgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL25iZDE2OC93aXJl
bGVzcworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9t
ZWRpYXRlayxtdDc2LnlhbWwKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYv
CisKK01FRElBVEVLIE1UNzYwMVUgV0lSRUxFU1MgTEFOIERSSVZFUgorTToJSmFrdWIgS2ljaW5z
a2kgPGt1YmFAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3NjAxdS8K
KworTUVESUFURUsgTVQ3NjIxIENMT0NLIERSSVZFUgorTToJU2VyZ2lvIFBhcmFjdWVsbG9zIDxz
ZXJnaW8ucGFyYWN1ZWxsb3NAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21lZGlhdGVrLG10NzYyMS1zeXNjLnlhbWwK
K0Y6CWRyaXZlcnMvY2xrL3JhbGluay9jbGstbXQ3NjIxLmMKKworTUVESUFURUsgTVQ3NjIxIFBD
SUUgQ09OVFJPTExFUiBEUklWRVIKK006CVNlcmdpbyBQYXJhY3VlbGxvcyA8c2VyZ2lvLnBhcmFj
dWVsbG9zQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9wY2kvbWVkaWF0ZWssbXQ3NjIxLXBjaWUueWFtbAorRjoJZHJpdmVycy9w
Y2kvY29udHJvbGxlci9wY2llLW10NzYyMS5jCisKK01FRElBVEVLIE1UNzYyMSBQSFkgUENJIERS
SVZFUgorTToJU2VyZ2lvIFBhcmFjdWVsbG9zIDxzZXJnaW8ucGFyYWN1ZWxsb3NAZ21haWwuY29t
PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bo
eS9tZWRpYXRlayxtdDc2MjEtcGNpLXBoeS55YW1sCitGOglkcml2ZXJzL3BoeS9yYWxpbmsvcGh5
LW10NzYyMS1wY2kuYworCitNRURJQVRFSyBNVDc2MjEvMjgvODggSTJDIERSSVZFUgorTToJU3Rl
ZmFuIFJvZXNlIDxzckBkZW54LmRlPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9tZWRp
YXRlayxtdDc2MjEtaTJjLnlhbWwKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbXQ3NjIxLmMK
KworTUVESUFURUsgTVRNSVBTIENMT0NLIERSSVZFUgorTToJU2VyZ2lvIFBhcmFjdWVsbG9zIDxz
ZXJnaW8ucGFyYWN1ZWxsb3NAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL21lZGlhdGVrLG10bWlwcy1zeXNjLnlhbWwK
K0Y6CWRyaXZlcnMvY2xrL3JhbGluay9jbGstbXRtaXBzLmMKKworTUVESUFURUsgTkFORCBDT05U
Uk9MTEVSIERSSVZFUgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU9ycGhh
bgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9tZWRpYXRlayxtdGst
bmZjLnlhbWwKK0Y6CWRyaXZlcnMvbXRkL25hbmQvcmF3L210a18qCisKK01FRElBVEVLIFBNSUMg
TEVEIERSSVZFUgorTToJU2VuIENodSA8c2VuLmNodUBtZWRpYXRlay5jb20+CitNOglTZWFuIFdh
bmcgPHNlYW4ud2FuZ0BtZWRpYXRlay5jb20+CitNOglNYWNwYXVsIExpbiA8bWFjcGF1bC5saW5A
bWVkaWF0ZWsuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL21mZC9tZWRpYXRlayxtdDYzOTcueWFtbAorRjoJZHJpdmVycy9sZWRzL2xlZHMt
bXQ2MzIzLmMKKworTUVESUFURUsgUkFORE9NIE5VTUJFUiBHRU5FUkFUT1IgU1VQUE9SVAorTToJ
U2VhbiBXYW5nIDxzZWFuLndhbmdAbWVkaWF0ZWsuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9jaGFyL2h3X3JhbmRvbS9tdGstcm5nLmMKKworTUVESUFURUsgU01JIERSSVZFUgorTToJ
WW9uZyBXdSA8eW9uZy53dUBtZWRpYXRlay5jb20+CitMOglsaW51eC1tZWRpYXRla0BsaXN0cy5p
bmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRl
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVy
cy9tZWRpYXRlayxzbWkqCitGOglkcml2ZXJzL21lbW9yeS9tdGstc21pLmMKK0Y6CWluY2x1ZGUv
c29jL21lZGlhdGVrL3NtaS5oCisKK01FRElBVEVLIFNXSVRDSCBEUklWRVIKK006CUNoZXN0ZXIg
QS4gVW5hbCA8Y2hlc3Rlci5hLnVuYWxAYXJpbmM5LmNvbT4KK006CURhbmllbCBHb2xsZSA8ZGFu
aWVsQG1ha3JvdG9waWEub3JnPgorTToJREVORyBRaW5nZmFuZyA8ZHFmZXh0QGdtYWlsLmNvbT4K
K006CVNlYW4gV2FuZyA8c2Vhbi53YW5nQG1lZGlhdGVrLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2RzYS9tdDc1MzAtbWRpby5j
CitGOglkcml2ZXJzL25ldC9kc2EvbXQ3NTMwLW1taW8uYworRjoJZHJpdmVycy9uZXQvZHNhL210
NzUzMC4qCitGOgluZXQvZHNhL3RhZ19tdGsuYworCitNRURJQVRFSyBUN1hYIDVHIFdXQU4gTU9E
RU0gRFJJVkVSCitNOglDaGFuZHJhc2hla2FyIERldmVnb3dkYSA8Y2hhbmRyYXNoZWthci5kZXZl
Z293ZGFAaW50ZWwuY29tPgorUjoJQ2hpcmFuamVldmkgUmFwb2x1IDxjaGlyYW5qZWV2aS5yYXBv
bHVAbGludXguaW50ZWwuY29tPgorUjoJTGl1IEhhaWp1biA8aGFpanVuLmxpdUBtZWRpYXRlay5j
b20+CitSOglNIENoZXRhbiBLdW1hciA8bS5jaGV0YW4ua3VtYXJAbGludXguaW50ZWwuY29tPgor
UjoJUmljYXJkbyBNYXJ0aW5leiA8cmljYXJkby5tYXJ0aW5lekBsaW51eC5pbnRlbC5jb20+CitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbmV0L3d3
YW4vdDd4eC8KKworTUVESUFURUsgVVNCMyBEUkQgSVAgRFJJVkVSCitNOglDaHVuZmVuZyBZdW4g
PGNodW5mZW5nLnl1bkBtZWRpYXRlay5jb20+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3Jn
CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Ig
bm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMuaW5mcmFkZWFkLm9yZyAo
bW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL21lZGlhdGVrLCoKK0Y6CWRyaXZlcnMvdXNi
L2hvc3QveGhjaS1tdGsqCitGOglkcml2ZXJzL3VzYi9tdHUzLworCitNRUdBQ0hJUFMgU1REUFhY
WFgtR0UtQjg1MFYzLUZXIExWRFMvRFArKyBCUklER0VTCitNOglQZXRlciBTZW5uYSBUc2NodWRp
biA8cGV0ZXIuc2VubmFAZ21haWwuY29tPgorTToJSWFuIFJheSA8aWFuLnJheUBnZS5jb20+CitN
OglNYXJ0eW4gV2VsY2ggPG1hcnR5bi53ZWxjaEBjb2xsYWJvcmEuY28udWs+CitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9icmlkZ2Uv
bWVnYWNoaXBzLXN0ZHB4eHh4LWdlLWI4NTB2My1mdy50eHQKK0Y6CWRyaXZlcnMvZ3B1L2RybS9i
cmlkZ2UvbWVnYWNoaXBzLXN0ZHB4eHh4LWdlLWI4NTB2My1mdy5jCisKK01FR0FSQUlEIFNDU0kv
U0FTIERSSVZFUlMKK006CUthc2h5YXAgRGVzYWkgPGthc2h5YXAuZGVzYWlAYnJvYWRjb20uY29t
PgorTToJU3VtaXQgU2F4ZW5hIDxzdW1pdC5zYXhlbmFAYnJvYWRjb20uY29tPgorTToJU2hpdmFz
aGFyYW4gUyA8c2hpdmFzaGFyYW4uc3Jpa2FudGVzaHdhcmFAYnJvYWRjb20uY29tPgorTToJQ2hh
bmRyYWthbnRoIHBhdGlsIDxjaGFuZHJha2FudGgucGF0aWxAYnJvYWRjb20uY29tPgorTDoJbWVn
YXJhaWRsaW51eC5wZGxAYnJvYWRjb20uY29tCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5hdmFnb3RlY2guY29tL3N1cHBvcnQvCitG
OglEb2N1bWVudGF0aW9uL3Njc2kvbWVnYXJhaWQucnN0CitGOglkcml2ZXJzL3Njc2kvbWVnYXJh
aWQuKgorRjoJZHJpdmVycy9zY3NpL21lZ2FyYWlkLworCitNRUxFWElTIE1MWDkwNjE0IERSSVZF
UgorTToJQ3J0IE1vcmkgPGNtb0BtZWxleGlzLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5tZWxleGlzLmNvbQorRjoJZHJpdmVy
cy9paW8vdGVtcGVyYXR1cmUvbWx4OTA2MTQuYworCitNRUxFWElTIE1MWDkwNjMyIERSSVZFUgor
TToJQ3J0IE1vcmkgPGNtb0BtZWxleGlzLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5tZWxleGlzLmNvbQorRjoJZHJpdmVycy9p
aW8vdGVtcGVyYXR1cmUvbWx4OTA2MzIuYworCitNRUxFWElTIE1MWDkwNjM1IERSSVZFUgorTToJ
Q3J0IE1vcmkgPGNtb0BtZWxleGlzLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5tZWxleGlzLmNvbQorRjoJZHJpdmVycy9paW8v
dGVtcGVyYXR1cmUvbWx4OTA2MzUuYworCitNRUxGQVMgTUlQNCBUT1VDSFNDUkVFTiBEUklWRVIK
K006CVNhbmd3b24gSmVlIDxqZWVzd0BtZWxmYXMuY29tPgorUzoJU3VwcG9ydGVkCitXOglodHRw
Oi8vd3d3Lm1lbGZhcy5jb20KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9p
bnB1dC90b3VjaHNjcmVlbi9tZWxmYXNfbWlwNC50eHQKK0Y6CWRyaXZlcnMvaW5wdXQvdG91Y2hz
Y3JlZW4vbWVsZmFzX21pcDQuYworCitNRUxMQU5PWCBCTFVFRklFTEQgSTJDIERSSVZFUgorTToJ
S2hhbGlsIEJsYWllY2ggPGtibGFpZWNoQG52aWRpYS5jb20+CitNOglBc21hYSBNbmViaGkgPGFz
bWFhQG52aWRpYS5jb20+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0
ZWQKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbWx4YmYuYworCitNRUxMQU5PWCBFVEhFUk5F
VCBEUklWRVIgKG1seDRfZW4pCitNOglUYXJpcSBUb3VrYW4gPHRhcmlxdEBudmlkaWEuY29tPgor
TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly93d3cu
bnZpZGlhLmNvbS9uZXR3b3JraW5nLworUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9w
cm9qZWN0L25ldGRldmJwZi9saXN0LworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gv
bWx4NC9lbl8qCisKK01FTExBTk9YIEVUSEVSTkVUIERSSVZFUiAobWx4NWUpCitNOglTYWVlZCBN
YWhhbWVlZCA8c2FlZWRtQG52aWRpYS5jb20+CitNOglUYXJpcSBUb3VrYW4gPHRhcmlxdEBudmlk
aWEuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0
cHM6Ly93d3cubnZpZGlhLmNvbS9uZXR3b3JraW5nLworUToJaHR0cHM6Ly9wYXRjaHdvcmsua2Vy
bmVsLm9yZy9wcm9qZWN0L25ldGRldmJwZi9saXN0LworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQv
bWVsbGFub3gvbWx4NS9jb3JlL2VuXyoKKworTUVMTEFOT1ggRVRIRVJORVQgSU5OT1ZBIERSSVZF
UlMKK1I6CUJvcmlzIFBpc21lbm55IDxib3Jpc3BAbnZpZGlhLmNvbT4KK0w6CW5ldGRldkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vd3d3Lm52aWRpYS5jb20vbmV0
d29ya2luZy8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9uZXRkZXZi
cGYvbGlzdC8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9h
Y2NlbC8qCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZnBnYS8q
CitGOglpbmNsdWRlL2xpbnV4L21seDUvbWx4NV9pZmNfZnBnYS5oCisKK01FTExBTk9YIEVUSEVS
TkVUIFNXSVRDSCBEUklWRVJTCitNOglJZG8gU2NoaW1tZWwgPGlkb3NjaEBudmlkaWEuY29tPgor
TToJUGV0ciBNYWNoYXRhIDxwZXRybUBudmlkaWEuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL3d3dy5udmlkaWEuY29tL25ldHdvcmtpbmcv
CitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbmV0ZGV2YnBmL2xpc3Qv
CitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHhzdy8KK0Y6CXRvb2xzL3Rlc3Rp
bmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L21seHN3LworCitNRUxMQU5PWCBGSVJNV0FSRSBGTEFT
SCBMSUJSQVJZIChtbHhmdykKK006CW1seHN3QG52aWRpYS5jb20KK0w6CW5ldGRldkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly93d3cubnZpZGlhLmNvbS9uZXR3b3Jr
aW5nLworUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L25ldGRldmJwZi9s
aXN0LworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4ZncvCisKK01FTExBTk9Y
IEhBUkRXQVJFIFBMQVRGT1JNIFNVUFBPUlQKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJl
ZGhhdC5jb20+CitNOglJbHBvIErDpHJ2aW5lbiA8aWxwby5qYXJ2aW5lbkBsaW51eC5pbnRlbC5j
b20+CitNOglWYWRpbSBQYXN0ZXJuYWsgPHZhZGltcEBudmlkaWEuY29tPgorTDoJcGxhdGZvcm0t
ZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlv
bi9BQkkvc3RhYmxlL3N5c2ZzLWRyaXZlci1tbHhyZWctaW8KK0Y6CURvY3VtZW50YXRpb24vQUJJ
L3Rlc3Rpbmcvc3lzZnMtcGxhdGZvcm0tbWVsbGFub3gtYm9vdGN0bAorRjoJZHJpdmVycy9wbGF0
Zm9ybS9tZWxsYW5veC8KK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9tbHhyZWcuaAor
CitNRUxMQU5PWCBNTFg0IGNvcmUgVlBJIGRyaXZlcgorTToJVGFyaXEgVG91a2FuIDx0YXJpcXRA
bnZpZGlhLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJkbWFAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL3d3dy5udmlkaWEuY29tL25l
dHdvcmtpbmcvCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbmV0ZGV2
YnBmL2xpc3QvCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0LworRjoJaW5j
bHVkZS9saW51eC9tbHg0LworCitNRUxMQU5PWCBNTFg0IElCIGRyaXZlcgorTToJWWlzaGFpIEhh
ZGFzIDx5aXNoYWloQG52aWRpYS5jb20+CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL3d3dy5udmlkaWEuY29tL25ldHdvcmtpbmcvCitROglo
dHRwOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1yZG1hL2xpc3QvCitGOglk
cml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NC8KK0Y6CWluY2x1ZGUvbGludXgvbWx4NC8KK0Y6CWlu
Y2x1ZGUvdWFwaS9yZG1hL21seDQtYWJpLmgKKworTUVMTEFOT1ggTUxYNSBjb3JlIFZQSSBkcml2
ZXIKK006CVNhZWVkIE1haGFtZWVkIDxzYWVlZG1AbnZpZGlhLmNvbT4KK006CUxlb24gUm9tYW5v
dnNreSA8bGVvbnJvQG52aWRpYS5jb20+CitNOglUYXJpcSBUb3VrYW4gPHRhcmlxdEBudmlkaWEu
Y29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vd3d3Lm52aWRpYS5jb20vbmV0d29ya2lu
Zy8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9uZXRkZXZicGYvbGlz
dC8KK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9t
ZWxsYW5veC8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS8KK0Y6
CWluY2x1ZGUvbGludXgvbWx4NS8KKworTUVMTEFOT1ggTUxYNSBJQiBkcml2ZXIKK006CUxlb24g
Um9tYW5vdnNreSA8bGVvbnJvQG52aWRpYS5jb20+CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovL3d3dy5udmlkaWEuY29tL25ldHdvcmtpbmcv
CitROglodHRwOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1yZG1hL2xpc3Qv
CitGOglkcml2ZXJzL2luZmluaWJhbmQvaHcvbWx4NS8KK0Y6CWluY2x1ZGUvbGludXgvbWx4NS8K
K0Y6CWluY2x1ZGUvdWFwaS9yZG1hL21seDUtYWJpLmgKKworTUVMTEFOT1ggTUxYNSBWRFBBIERS
SVZFUgorTToJRHJhZ29zIFRhdHVsZWEgPGR0YXR1bGVhQG52aWRpYS5jb20+CitMOgl2aXJ0dWFs
aXphdGlvbkBsaXN0cy5saW51eC5kZXYKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy92ZHBhL21s
eDUvCisKK01FTExBTk9YIE1MWENQTEQgSTJDIEFORCBNVVggRFJJVkVSCitNOglWYWRpbSBQYXN0
ZXJuYWsgPHZhZGltcEBudmlkaWEuY29tPgorTToJTWljaGFlbCBTaHljaCA8bWljaGFlbHNoQG52
aWRpYS5jb20+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6
CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtbWx4Y3BsZC5yc3QKK0Y6CWRyaXZlcnMvaTJj
L2J1c3Nlcy9pMmMtbWx4Y3BsZC5jCitGOglkcml2ZXJzL2kyYy9tdXhlcy9pMmMtbXV4LW1seGNw
bGQuYworCitNRUxMQU5PWCBNTFhDUExEIExFRCBEUklWRVIKK006CVZhZGltIFBhc3Rlcm5hayA8
dmFkaW1wQG52aWRpYS5jb20+CitMOglsaW51eC1sZWRzQHZnZXIua2VybmVsLm9yZworUzoJU3Vw
cG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2xlZHMvbGVkcy1tbHhjcGxkLnJzdAorRjoJZHJpdmVy
cy9sZWRzL2xlZHMtbWx4Y3BsZC5jCitGOglkcml2ZXJzL2xlZHMvbGVkcy1tbHhyZWcuYworCitN
RU1CQVJSSUVSIFNVUFBPUlQKK006CU1hdGhpZXUgRGVzbm95ZXJzIDxtYXRoaWV1LmRlc25veWVy
c0BlZmZpY2lvcy5jb20+CitNOgkiUGF1bCBFLiBNY0tlbm5leSIgPHBhdWxtY2tAa2VybmVsLm9y
Zz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9j
dW1lbnRhdGlvbi9zY2hlZHVsZXIvbWVtYmFycmllci5yc3QKK0Y6CWFyY2gvKi9pbmNsdWRlL2Fz
bS9tZW1iYXJyaWVyLmgKK0Y6CWFyY2gvKi9pbmNsdWRlL2FzbS9zeW5jX2NvcmUuaAorRjoJaW5j
bHVkZS91YXBpL2xpbnV4L21lbWJhcnJpZXIuaAorRjoJa2VybmVsL3NjaGVkL21lbWJhcnJpZXIu
YworCitNRU1CTE9DSyBBTkQgTUVNT1JZIE1BTkFHRU1FTlQgSU5JVElBTElaQVRJT04KK006CU1p
a2UgUmFwb3BvcnQgPHJwcHRAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW1tQGt2YWNrLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9ib290LXRpbWUtbW0ucnN0CitG
OglpbmNsdWRlL2xpbnV4L21lbWJsb2NrLmgKK0Y6CW1tL21lbWJsb2NrLmMKK0Y6CW1tL21tX2lu
aXQuYworRjoJdG9vbHMvdGVzdGluZy9tZW1ibG9jay8KKworTUVNT1JZIEFMTE9DQVRJT04gUFJP
RklMSU5HCitNOglTdXJlbiBCYWdoZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUuY29tPgorTToJS2Vu
dCBPdmVyc3RyZWV0IDxrZW50Lm92ZXJzdHJlZXRAbGludXguZGV2PgorTDoJbGludXgtbW1Aa3Zh
Y2sub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL21tL2FsbG9jYXRpb24tcHJv
ZmlsaW5nLnJzdAorRjoJaW5jbHVkZS9saW51eC9hbGxvY190YWcuaAorRjoJaW5jbHVkZS9saW51
eC9wZ2FsbG9jX3RhZy5oCitGOglsaWIvYWxsb2NfdGFnLmMKKworTUVNT1JZIENPTlRST0xMRVIg
RFJJVkVSUworTToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorTDoJbGlu
dXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorQjoJbWFpbHRvOmtyenlz
enRvZi5rb3psb3dza2lAbGluYXJvLm9yZworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9rcnprL2xpbnV4LW1lbS1jdHJsLmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy8KK0Y6CWRyaXZl
cnMvbWVtb3J5LworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9tZW1vcnkvCitGOglpbmNsdWRlL21l
bW9yeS8KKworTUVNT1JZIEZSRVFVRU5DWSBTQ0FMSU5HIERSSVZFUlMgRk9SIE5WSURJQSBURUdS
QQorTToJRG1pdHJ5IE9zaXBlbmtvIDxkaWdldHhAZ21haWwuY29tPgorTDoJbGludXgtcG1Admdl
ci5rZXJuZWwub3JnCitMOglsaW51eC10ZWdyYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
Y2hhbndvby9saW51eC5naXQKK0Y6CWRyaXZlcnMvZGV2ZnJlcS90ZWdyYTMwLWRldmZyZXEuYwor
CitNRU1PUlkgSE9UKFVOKVBMVUcKK006CURhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEByZWRoYXQu
Y29tPgorTToJT3NjYXIgU2FsdmFkb3IgPG9zYWx2YWRvckBzdXNlLmRlPgorTDoJbGludXgtbW1A
a3ZhY2sub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21t
L21lbW9yeS1ob3RwbHVnLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9jb3JlLWFwaS9tZW1vcnktaG90
cGx1Zy5yc3QKK0Y6CWRyaXZlcnMvYmFzZS9tZW1vcnkuYworRjoJaW5jbHVkZS9saW51eC9tZW1v
cnlfaG90cGx1Zy5oCitGOgltbS9tZW1vcnlfaG90cGx1Zy5jCitGOgl0b29scy90ZXN0aW5nL3Nl
bGZ0ZXN0cy9tZW1vcnktaG90cGx1Zy8KKworTUVNT1JZIE1BTkFHRU1FTlQKK006CUFuZHJldyBN
b3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CitMOglsaW51eC1tbUBrdmFjay5vcmcK
K1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cubGludXgtbW0ub3JnCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2FrcG0vbW0KK1Q6CXF1aWx0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ha3BtLzI1LW5l
dworRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS8KK0Y6CURvY3VtZW50YXRpb24vbW0v
CitGOglpbmNsdWRlL2xpbnV4L2dmcC5oCitGOglpbmNsdWRlL2xpbnV4L2dmcF90eXBlcy5oCitG
OglpbmNsdWRlL2xpbnV4L21lbWZkLmgKK0Y6CWluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcu
aAorRjoJaW5jbHVkZS9saW51eC9tZW1vcnktdGllcnMuaAorRjoJaW5jbHVkZS9saW51eC9tZW1w
b2xpY3kuaAorRjoJaW5jbHVkZS9saW51eC9tZW1wb29sLmgKK0Y6CWluY2x1ZGUvbGludXgvbWVt
cmVtYXAuaAorRjoJaW5jbHVkZS9saW51eC9tbXpvbmUuaAorRjoJaW5jbHVkZS9saW51eC9tbXVf
bm90aWZpZXIuaAorRjoJaW5jbHVkZS9saW51eC9wYWdld2Fsay5oCitGOglpbmNsdWRlL3RyYWNl
L2V2ZW50cy9rc20uaAorRjoJbW0vCitGOgl0b29scy9tbS8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2Vs
ZnRlc3RzL21tLworTjoJaW5jbHVkZS9saW51eC9wYWdlWy1fXSoKKworTUVNT1JZIE1BTkFHRU1F
TlQgLSBDT1JFCitNOglBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgor
TToJRGF2aWQgSGlsZGVuYnJhbmQgPGRhdmlkQHJlZGhhdC5jb20+CitSOglMb3JlbnpvIFN0b2Fr
ZXMgPGxvcmVuem8uc3RvYWtlc0BvcmFjbGUuY29tPgorUjoJTGlhbSBSLiBIb3dsZXR0IDxMaWFt
Lkhvd2xldHRAb3JhY2xlLmNvbT4KK1I6CVZsYXN0aW1pbCBCYWJrYSA8dmJhYmthQHN1c2UuY3o+
CitSOglNaWtlIFJhcG9wb3J0IDxycHB0QGtlcm5lbC5vcmc+CitSOglTdXJlbiBCYWdoZGFzYXJ5
YW4gPHN1cmVuYkBnb29nbGUuY29tPgorUjoJTWljaGFsIEhvY2tvIDxtaG9ja29Ac3VzZS5jb20+
CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cubGlu
dXgtbW0ub3JnCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L2FrcG0vbW0KK0Y6CWluY2x1ZGUvbGludXgvbWVtb3J5LmgKK0Y6CWluY2x1ZGUvbGlu
dXgvbW0uaAorRjoJaW5jbHVkZS9saW51eC9tbV8qLmgKK0Y6CWluY2x1ZGUvbGludXgvbW1kZWJ1
Zy5oCitGOglpbmNsdWRlL2xpbnV4L3BhZ2V3YWxrLmgKK0Y6CW1tL0tjb25maWcKK0Y6CW1tL2Rl
YnVnLmMKK0Y6CW1tL2luaXQtbW0uYworRjoJbW0vbWVtb3J5LmMKK0Y6CW1tL3BhZ2V3YWxrLmMK
K0Y6CW1tL3V0aWwuYworCitNRU1PUlkgTUFOQUdFTUVOVCAtIEVYRUNNRU0KK006CUFuZHJldyBN
b3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CitNOglNaWtlIFJhcG9wb3J0IDxycHB0
QGtlcm5lbC5vcmc+CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWlu
Y2x1ZGUvbGludXgvZXhlY21lbS5oCitGOgltbS9leGVjbWVtLmMKKworTUVNT1JZIE1BTkFHRU1F
TlQgLSBHVVAgKEdFVCBVU0VSIFBBR0VTKQorTToJQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1m
b3VuZGF0aW9uLm9yZz4KK006CURhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEByZWRoYXQuY29tPgor
UjoJSmFzb24gR3VudGhvcnBlIDxqZ2dAbnZpZGlhLmNvbT4KK1I6CUpvaG4gSHViYmFyZCA8amh1
YmJhcmRAbnZpZGlhLmNvbT4KK1I6CVBldGVyIFh1IDxwZXRlcnhAcmVkaGF0LmNvbT4KK0w6CWxp
bnV4LW1tQGt2YWNrLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5saW51eC1tbS5v
cmcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
YWtwbS9tbQorRjoJbW0vZ3VwLmMKKworTUVNT1JZIE1BTkFHRU1FTlQgLSBLU00gKEtlcm5lbCBT
YW1lcGFnZSBNZXJnaW5nKQorTToJQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9u
Lm9yZz4KK006CURhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEByZWRoYXQuY29tPgorUjoJWHUgWGlu
IDx4dS54aW4xNkB6dGUuY29tLmNuPgorUjoJQ2hlbmdtaW5nIFpob3UgPGNoZW5nbWluZy56aG91
QGxpbnV4LmRldj4KK0w6CWxpbnV4LW1tQGt2YWNrLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0
cDovL3d3dy5saW51eC1tbS5vcmcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvYWtwbS9tbQorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9t
bS9rc20ucnN0CitGOglEb2N1bWVudGF0aW9uL21tL2tzbS5yc3QKK0Y6CWluY2x1ZGUvbGludXgv
a3NtLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL2tzbS5oCitGOgltbS9rc20uYworCitNRU1P
UlkgTUFOQUdFTUVOVCAtIE1FTU9SWSBQT0xJQ1kgQU5EIE1JR1JBVElPTgorTToJQW5kcmV3IE1v
cnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK006CURhdmlkIEhpbGRlbmJyYW5kIDxk
YXZpZEByZWRoYXQuY29tPgorUjoJWmkgWWFuIDx6aXlAbnZpZGlhLmNvbT4KK1I6CU1hdHRoZXcg
QnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPgorUjoJSm9zaHVhIEhhaG4gPGpvc2h1YS5o
YWhuanlAZ21haWwuY29tPgorUjoJUmFraWUgS2ltIDxyYWtpZS5raW1Ac2suY29tPgorUjoJQnl1
bmdjaHVsIFBhcmsgPGJ5dW5nY2h1bEBzay5jb20+CitSOglHcmVnb3J5IFByaWNlIDxnb3VycnlA
Z291cnJ5Lm5ldD4KK1I6CVlpbmcgSHVhbmcgPHlpbmcuaHVhbmdAbGludXguYWxpYmFiYS5jb20+
CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cubGlu
dXgtbW0ub3JnCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJu
ZWwvZ2l0L2FrcG0vbW0KK0Y6CWluY2x1ZGUvbGludXgvbWVtcG9saWN5LmgKK0Y6CWluY2x1ZGUv
bGludXgvbWlncmF0ZS5oCitGOgltbS9tZW1wb2xpY3kuYworRjoJbW0vbWlncmF0ZS5jCitGOglt
bS9taWdyYXRlX2RldmljZS5jCisKK01FTU9SWSBNQU5BR0VNRU5UIC0gTlVNQSBNRU1CTE9DS1Mg
QU5EIE5VTUEgRU1VTEFUSU9OCitNOglBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRp
b24ub3JnPgorTToJTWlrZSBSYXBvcG9ydCA8cnBwdEBrZXJuZWwub3JnPgorTDoJbGludXgtbW1A
a3ZhY2sub3JnCitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL2xpbnV4L251bWFfbWVtYmxrcy5o
CitGOgltbS9udW1hLmMKK0Y6CW1tL251bWFfZW11bGF0aW9uLmMKK0Y6CW1tL251bWFfbWVtYmxr
cy5jCisKK01FTU9SWSBNQU5BR0VNRU5UIC0gUEFHRSBBTExPQ0FUT1IKK006CUFuZHJldyBNb3J0
b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CitNOglWbGFzdGltaWwgQmFia2EgPHZiYWJr
YUBzdXNlLmN6PgorUjoJU3VyZW4gQmFnaGRhc2FyeWFuIDxzdXJlbmJAZ29vZ2xlLmNvbT4KK1I6
CU1pY2hhbCBIb2NrbyA8bWhvY2tvQHN1c2UuY29tPgorUjoJQnJlbmRhbiBKYWNrbWFuIDxqYWNr
bWFuYkBnb29nbGUuY29tPgorUjoJSm9oYW5uZXMgV2VpbmVyIDxoYW5uZXNAY21weGNoZy5vcmc+
CitSOglaaSBZYW4gPHppeUBudmlkaWEuY29tPgorTDoJbGludXgtbW1Aa3ZhY2sub3JnCitTOglN
YWludGFpbmVkCitGOglpbmNsdWRlL2xpbnV4L2NvbXBhY3Rpb24uaAorRjoJaW5jbHVkZS9saW51
eC9nZnAuaAorRjoJaW5jbHVkZS9saW51eC9wYWdlLWlzb2xhdGlvbi5oCitGOgltbS9jb21wYWN0
aW9uLmMKK0Y6CW1tL3BhZ2VfYWxsb2MuYworRjoJbW0vcGFnZV9pc29sYXRpb24uYworCitNRU1P
UlkgTUFOQUdFTUVOVCAtIFJFQ0xBSU0KK006CUFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91
bmRhdGlvbi5vcmc+CitNOglKb2hhbm5lcyBXZWluZXIgPGhhbm5lc0BjbXB4Y2hnLm9yZz4KK1I6
CURhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEByZWRoYXQuY29tPgorUjoJTWljaGFsIEhvY2tvIDxt
aG9ja29Aa2VybmVsLm9yZz4KK1I6CVFpIFpoZW5nIDx6aGVuZ3FpLmFyY2hAYnl0ZWRhbmNlLmNv
bT4KK1I6CVNoYWtlZWwgQnV0dCA8c2hha2VlbC5idXR0QGxpbnV4LmRldj4KK1I6CUxvcmVuem8g
U3RvYWtlcyA8bG9yZW56by5zdG9ha2VzQG9yYWNsZS5jb20+CitMOglsaW51eC1tbUBrdmFjay5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CW1tL3B0X3JlY2xhaW0uYworRjoJbW0vdm1zY2FuLmMKKwor
TUVNT1JZIE1BTkFHRU1FTlQgLSBSTUFQIChSRVZFUlNFIE1BUFBJTkcpCitNOglBbmRyZXcgTW9y
dG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorTToJRGF2aWQgSGlsZGVuYnJhbmQgPGRh
dmlkQHJlZGhhdC5jb20+CitNOglMb3JlbnpvIFN0b2FrZXMgPGxvcmVuem8uc3RvYWtlc0BvcmFj
bGUuY29tPgorUjoJUmlrIHZhbiBSaWVsIDxyaWVsQHN1cnJpZWwuY29tPgorUjoJTGlhbSBSLiBI
b3dsZXR0IDxMaWFtLkhvd2xldHRAb3JhY2xlLmNvbT4KK1I6CVZsYXN0aW1pbCBCYWJrYSA8dmJh
YmthQHN1c2UuY3o+CitSOglIYXJyeSBZb28gPGhhcnJ5Lnlvb0BvcmFjbGUuY29tPgorTDoJbGlu
dXgtbW1Aa3ZhY2sub3JnCitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL2xpbnV4L3JtYXAuaAor
RjoJbW0vcm1hcC5jCisKK01FTU9SWSBNQU5BR0VNRU5UIC0gU0VDUkVUTUVNCitNOglBbmRyZXcg
TW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorTToJTWlrZSBSYXBvcG9ydCA8cnBw
dEBrZXJuZWwub3JnPgorTDoJbGludXgtbW1Aa3ZhY2sub3JnCitTOglNYWludGFpbmVkCitGOglp
bmNsdWRlL2xpbnV4L3NlY3JldG1lbS5oCitGOgltbS9zZWNyZXRtZW0uYworCitNRU1PUlkgTUFO
QUdFTUVOVCAtIFRIUCAoVFJBTlNQQVJFTlQgSFVHRSBQQUdFKQorTToJQW5kcmV3IE1vcnRvbiA8
YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK006CURhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEBy
ZWRoYXQuY29tPgorUjoJWmkgWWFuIDx6aXlAbnZpZGlhLmNvbT4KK1I6CUJhb2xpbiBXYW5nIDxi
YW9saW4ud2FuZ0BsaW51eC5hbGliYWJhLmNvbT4KK1I6CUxvcmVuem8gU3RvYWtlcyA8bG9yZW56
by5zdG9ha2VzQG9yYWNsZS5jb20+CitSOglMaWFtIFIuIEhvd2xldHQgPExpYW0uSG93bGV0dEBv
cmFjbGUuY29tPgorUjoJTmljbyBQYWNoZSA8bnBhY2hlQHJlZGhhdC5jb20+CitSOglSeWFuIFJv
YmVydHMgPHJ5YW4ucm9iZXJ0c0Bhcm0uY29tPgorUjoJRGV2IEphaW4gPGRldi5qYWluQGFybS5j
b20+CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cu
bGludXgtbW0ub3JnCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L2FrcG0vbW0KK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdHJhbnNo
dWdlLnJzdAorRjoJaW5jbHVkZS9saW51eC9odWdlX21tLmgKK0Y6CWluY2x1ZGUvbGludXgva2h1
Z2VwYWdlZC5oCitGOglpbmNsdWRlL3RyYWNlL2V2ZW50cy9odWdlX21lbW9yeS5oCitGOgltbS9o
dWdlX21lbW9yeS5jCitGOgltbS9raHVnZXBhZ2VkLmMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRl
c3RzL21tL2todWdlcGFnZWQuYworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vc3BsaXRf
aHVnZV9wYWdlX3Rlc3QuYworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vdHJhbnNodWdl
LXN0cmVzcy5jCisKK01FTU9SWSBNQU5BR0VNRU5UIC0gVVNFUkZBVUxURkQKK006CUFuZHJldyBN
b3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+CitSOglQZXRlciBYdSA8cGV0ZXJ4QHJl
ZGhhdC5jb20+CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vdXNlcmZhdWx0ZmQucnN0CitGOglmcy91c2VyZmF1bHRm
ZC5jCitGOglpbmNsdWRlL2FzbS1nZW5lcmljL3BndGFibGVfdWZmZC5oCitGOglpbmNsdWRlL2xp
bnV4L3VzZXJmYXVsdGZkX2suaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3VzZXJmYXVsdGZkLmgK
K0Y6CW1tL3VzZXJmYXVsdGZkLmMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL3VmZmQt
Ki5bY2hdCisKK01FTU9SWSBNQVBQSU5HCitNOglBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZv
dW5kYXRpb24ub3JnPgorTToJTGlhbSBSLiBIb3dsZXR0IDxMaWFtLkhvd2xldHRAb3JhY2xlLmNv
bT4KK006CUxvcmVuem8gU3RvYWtlcyA8bG9yZW56by5zdG9ha2VzQG9yYWNsZS5jb20+CitSOglW
bGFzdGltaWwgQmFia2EgPHZiYWJrYUBzdXNlLmN6PgorUjoJSmFubiBIb3JuIDxqYW5uaEBnb29n
bGUuY29tPgorUjoJUGVkcm8gRmFsY2F0byA8cGZhbGNhdG9Ac3VzZS5kZT4KK0w6CWxpbnV4LW1t
QGt2YWNrLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5saW51eC1tbS5vcmcKK1Q6
CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWtwbS9t
bQorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvbW1hcC5oCitGOgltbS9tbG9jay5jCitGOgltbS9t
bWFwLmMKK0Y6CW1tL21wcm90ZWN0LmMKK0Y6CW1tL21yZW1hcC5jCitGOgltbS9tc2VhbC5jCitG
OgltbS92bWEuYworRjoJbW0vdm1hLmgKK0Y6CW1tL3ZtYV9pbnRlcm5hbC5oCitGOgl0b29scy90
ZXN0aW5nL3ZtYS8KKworTUVNT1JZIE1BUFBJTkcgLSBMT0NLSU5HCitNOglBbmRyZXcgTW9ydG9u
IDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorTToJU3VyZW4gQmFnaGRhc2FyeWFuIDxzdXJl
bmJAZ29vZ2xlLmNvbT4KK006CUxpYW0gUi4gSG93bGV0dCA8TGlhbS5Ib3dsZXR0QG9yYWNsZS5j
b20+CitNOglMb3JlbnpvIFN0b2FrZXMgPGxvcmVuem8uc3RvYWtlc0BvcmFjbGUuY29tPgorUjoJ
Vmxhc3RpbWlsIEJhYmthIDx2YmFia2FAc3VzZS5jej4KK1I6CVNoYWtlZWwgQnV0dCA8c2hha2Vl
bC5idXR0QGxpbnV4LmRldj4KK0w6CWxpbnV4LW1tQGt2YWNrLm9yZworUzoJTWFpbnRhaW5lZAor
VzoJaHR0cDovL3d3dy5saW51eC1tbS5vcmcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWtwbS9tbQorRjoJRG9jdW1lbnRhdGlvbi9tbS9wcm9j
ZXNzX2FkZHJzLnJzdAorRjoJaW5jbHVkZS9saW51eC9tbWFwX2xvY2suaAorRjoJaW5jbHVkZS90
cmFjZS9ldmVudHMvbW1hcF9sb2NrLmgKK0Y6CW1tL21tYXBfbG9jay5jCisKK01FTU9SWSBNQVBQ
SU5HIC0gTUFEVklTRSAoTUVNT1JZIEFEVklDRSkKK006CUFuZHJldyBNb3J0b24gPGFrcG1AbGlu
dXgtZm91bmRhdGlvbi5vcmc+CitNOglMaWFtIFIuIEhvd2xldHQgPExpYW0uSG93bGV0dEBvcmFj
bGUuY29tPgorTToJTG9yZW56byBTdG9ha2VzIDxsb3JlbnpvLnN0b2FrZXNAb3JhY2xlLmNvbT4K
K006CURhdmlkIEhpbGRlbmJyYW5kIDxkYXZpZEByZWRoYXQuY29tPgorUjoJVmxhc3RpbWlsIEJh
YmthIDx2YmFia2FAc3VzZS5jej4KK1I6CUphbm4gSG9ybiA8amFubmhAZ29vZ2xlLmNvbT4KK0w6
CWxpbnV4LW1tQGt2YWNrLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5saW51eC1t
bS5vcmcKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n
aXQvYWtwbS9tbQorRjoJaW5jbHVkZS91YXBpL2FzbS1nZW5lcmljL21tYW4tY29tbW9uLmgKK0Y6
CW1tL21hZHZpc2UuYworCitNRU1PUlkgVEVDSE5PTE9HWSBERVZJQ0VTIChNVEQpCitNOglNaXF1
ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgorTToJUmljaGFyZCBXZWluYmVy
Z2VyIDxyaWNoYXJkQG5vZC5hdD4KK006CVZpZ25lc2ggUmFnaGF2ZW5kcmEgPHZpZ25lc2hyQHRp
LmNvbT4KK0w6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitX
OglodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLworUToJaHR0cDovL3BhdGNod29y
ay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtbXRkL2xpc3QvCitDOglpcmM6Ly9pcmMub2Z0Yy5u
ZXQvbXRkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L210ZC9saW51eC5naXQgbXRkL2ZpeGVzCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L210ZC9saW51eC5naXQgbXRkL25leHQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvCitGOglkcml2ZXJzL210ZC8KK0Y6CWlu
Y2x1ZGUvbGludXgvbXRkLworRjoJaW5jbHVkZS91YXBpL210ZC8KKworTUVOIEEyMSBXQVRDSERP
RyBEUklWRVIKK006CUpvaGFubmVzIFRodW1zaGlybiA8bW9yYmlkcnNhQGdtYWlsLmNvbT4KK0w6
CWxpbnV4LXdhdGNoZG9nQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy93YXRjaGRvZy9tZW5hMjFfd2R0LmMKKworTUVOIENIQU1FTEVPTiBCVVMgKG1jYikKK006CUpv
aGFubmVzIFRodW1zaGlybiA8bW9yYmlkcnNhQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZW4tY2hhbWVsZW9uLWJ1cy5yc3QKK0Y6CWRyaXZl
cnMvbWNiLworRjoJaW5jbHVkZS9saW51eC9tY2IuaAorCitNRU4gRjIxQk1DIChCb2FyZCBNYW5h
Z2VtZW50IENvbnRyb2xsZXIpCitNOglBbmRyZWFzIFdlcm5lciA8YW5kcmVhcy53ZXJuZXJAbWVu
LmRlPgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL21lbmYyMWJtYy5yc3QK
K0Y6CWRyaXZlcnMvaHdtb24vbWVuZjIxYm1jX2h3bW9uLmMKK0Y6CWRyaXZlcnMvbGVkcy9sZWRz
LW1lbmYyMWJtYy5jCitGOglkcml2ZXJzL21mZC9tZW5mMjFibWMuYworRjoJZHJpdmVycy93YXRj
aGRvZy9tZW5mMjFibWNfd2R0LmMKKworTUVOIFowNjkgV0FUQ0hET0cgRFJJVkVSCitNOglKb2hh
bm5lcyBUaHVtc2hpcm4gPGp0aEBrZXJuZWwub3JnPgorTDoJbGludXgtd2F0Y2hkb2dAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3dhdGNoZG9nL21lbno2OV93ZHQu
YworCitNRVNPTiBBTyBDRUMgRFJJVkVSIEZPUiBBTUxPR0lDIFNPQ1MKK006CU5laWwgQXJtc3Ry
b25nIDxuZWlsLmFybXN0cm9uZ0BsaW5hcm8ub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJu
ZWwub3JnCitMOglsaW51eC1hbWxvZ2ljQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRl
ZAorVzoJaHR0cDovL2xpbnV4LW1lc29uLmNvbS8KK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9t
ZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9jZWMv
YW1sb2dpYyxtZXNvbi1neC1hby1jZWMueWFtbAorRjoJZHJpdmVycy9tZWRpYS9jZWMvcGxhdGZv
cm0vbWVzb24vYW8tY2VjLWcxMmEuYworRjoJZHJpdmVycy9tZWRpYS9jZWMvcGxhdGZvcm0vbWVz
b24vYW8tY2VjLmMKKworTUVTT04gR0UyRCBEUklWRVIgRk9SIEFNTE9HSUMgU09DUworTToJTmVp
bCBBcm1zdHJvbmcgPG5laWwuYXJtc3Ryb25nQGxpbmFyby5vcmc+CitMOglsaW51eC1tZWRpYUB2
Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJ
U3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvYW1sb2dpYyxheGctZ2UyZC55YW1sCitG
Oglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2FtbG9naWMvbWVzb24tZ2UyZC8KKworTUVTT04gTkFO
RCBDT05UUk9MTEVSIERSSVZFUiBGT1IgQU1MT0dJQyBTT0NTCitNOglMaWFuZyBZYW5nIDxsaWFu
Zy55YW5nQGFtbG9naWMuY29tPgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvYW1s
b2dpYyxtZXNvbi1uYW5kLnlhbWwKK0Y6CWRyaXZlcnMvbXRkL25hbmQvcmF3L21lc29uXyoKKwor
TUVTT04gVklERU8gREVDT0RFUiBEUklWRVIgRk9SIEFNTE9HSUMgU09DUworTToJTmVpbCBBcm1z
dHJvbmcgPG5laWwuYXJtc3Ryb25nQGxpbmFyby5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK0w6CWxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJU3VwcG9y
dGVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvYW1sb2dpYyxneC12ZGVjLnlhbWwKK0Y6CWRyaXZl
cnMvc3RhZ2luZy9tZWRpYS9tZXNvbi92ZGVjLworCitNRVRBIEVUSEVSTkVUIERSSVZFUlMKK006
CUFsZXhhbmRlciBEdXljayA8YWxleGFuZGVyZHV5Y2tAZmIuY29tPgorTToJSmFrdWIgS2ljaW5z
a2kgPGt1YmFAa2VybmVsLm9yZz4KK1I6CWtlcm5lbC10ZWFtQG1ldGEuY29tCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQv
bWV0YS8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvCisKK01FVEhPREUgVURQVSBTVVBQ
T1JUCitNOglSb2JlcnQgTWFya28gPHJvYmVydC5tYXJrb0BzYXJ0dXJhLmhyPgorUzoJTWFpbnRh
aW5lZAorRjoJYXJjaC9hcm02NC9ib290L2R0cy9tYXJ2ZWxsL2FybWFkYS0zNzIwLWVEUFUuZHRz
CitGOglhcmNoL2FybTY0L2Jvb3QvZHRzL21hcnZlbGwvYXJtYWRhLTM3MjAtdURQVS4qCisKK01I
SSBCVVMKK006CU1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNpdmFtQGxp
bmFyby5vcmc+CitMOgltaGlAbGlzdHMubGludXguZGV2CitMOglsaW51eC1hcm0tbXNtQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9tYW5pL21oaS5naXQKK0Y6CURvY3VtZW50YXRpb24vQUJJ
L3N0YWJsZS9zeXNmcy1idXMtbWhpCitGOglEb2N1bWVudGF0aW9uL21oaS8KK0Y6CWRyaXZlcnMv
YnVzL21oaS8KK0Y6CWRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLW1oaS5j
CitGOglpbmNsdWRlL2xpbnV4L21oaS5oCisKK01JQ1JPQkxBWkUgQVJDSElURUNUVVJFCitNOglN
aWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93
d3cubW9uc3RyLmV1L2ZkdC8KK1Q6CWdpdCBnaXQ6Ly9naXQubW9uc3RyLmV1L2xpbnV4LTIuNi1t
aWNyb2JsYXplLmdpdAorRjoJYXJjaC9taWNyb2JsYXplLworCitNSUNST0JMQVpFIFRNUiBJTkpF
Q1QKK006CUFwcGFuYSBEdXJnYSBLZWRhcmVzd2FyYSByYW8gPGFwcGFuYS5kdXJnYS5rZWRhcmVz
d2FyYS5yYW9AYW1kLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL21pc2MveGxueCx0bXItaW5qZWN0LnlhbWwKK0Y6CWRyaXZlcnMvbWlzYy94
aWxpbnhfdG1yX2luamVjdC5jCisKK01JQ1JPQkxBWkUgVE1SIE1BTkFHRVIKK006CUFwcGFuYSBE
dXJnYSBLZWRhcmVzd2FyYSByYW8gPGFwcGFuYS5kdXJnYS5rZWRhcmVzd2FyYS5yYW9AYW1kLmNv
bT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2
ZXIteGlsaW54LXRtci1tYW5hZ2VyCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvbWlzYy94bG54LHRtci1tYW5hZ2VyLnlhbWwKK0Y6CWRyaXZlcnMvbWlzYy94aWxpbnhfdG1y
X21hbmFnZXIuYworCitNSUNST0NISVAgQVQ5MSBETUEgRFJJVkVSUworTToJTHVkb3ZpYyBEZXNy
b2NoZXMgPGx1ZG92aWMuZGVzcm9jaGVzQG1pY3JvY2hpcC5jb20+CitMOglsaW51eC1hcm0ta2Vy
bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQor
TDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2F0bWVsLGF0OTFzYW05ZzQ1LWRtYS55YW1sCitG
Oglkcml2ZXJzL2RtYS9hdF9oZG1hYy5jCitGOglkcml2ZXJzL2RtYS9hdF94ZG1hYy5jCitGOglp
bmNsdWRlL2R0LWJpbmRpbmdzL2RtYS9hdDkxLmgKKworTUlDUk9DSElQIEFUOTEgU0VSSUFMIERS
SVZFUgorTToJUmljaGFyZCBHZW5vdWQgPHJpY2hhcmQuZ2Vub3VkQGJvb3RsaW4uY29tPgorUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NlcmlhbC9h
dG1lbCxhdDkxLXVzYXJ0LnlhbWwKK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9hdG1lbF9zZXJpYWwu
YworRjoJZHJpdmVycy90dHkvc2VyaWFsL2F0bWVsX3NlcmlhbC5oCisKK01JQ1JPQ0hJUCBBVDkx
IFVTQVJUIE1GRCBEUklWRVIKK006CVJhZHUgUGlyZWEgPHJhZHVfbmljb2xhZS5waXJlYUB1cGIu
cm8+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zZXJpYWwvYXRtZWwsYXQ5MS11c2FydC55
YW1sCitGOglkcml2ZXJzL21mZC9hdDkxLXVzYXJ0LmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mv
bWZkL2F0OTEtdXNhcnQuaAorCitNSUNST0NISVAgQVQ5MSBVU0FSVCBTUEkgRFJJVkVSCitNOglS
YWR1IFBpcmVhIDxyYWR1X25pY29sYWUucGlyZWFAdXBiLnJvPgorTDoJbGludXgtc3BpQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3Mvc2VyaWFsL2F0bWVsLGF0OTEtdXNhcnQueWFtbAorRjoJZHJpdmVycy9zcGkvc3BpLWF0
OTEtdXNhcnQuYworCitNSUNST0NISVAgQVVESU8gQVNPQyBEUklWRVJTCitNOglDbGF1ZGl1IEJl
em5lYSA8Y2xhdWRpdS5iZXpuZWFAdHV4b24uZGV2PgorTToJQW5kcmVpIFNpbWlvbiA8YW5kcmVp
LnNpbWlvbkBtaWNyb2NoaXAuY29tPgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9h
dG1lbCoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9heGVudGlh
LHRzZTg1MC1wY201MTQyLnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3NvdW5kL21pY3JvY2hpcCxzYW1hN2c1LSoKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9zb3VuZC9taWtyb2UsbWlrcm9lLXByb3RvLnR4dAorRjoJc291bmQvc29jL2F0bWVs
CisKK01JQ1JPQ0hJUCBDU0kyREMgRFJJVkVSCitNOglFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlz
dGV2QG1pY3JvY2hpcC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1
cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL21pY3Jv
Y2hpcCxjc2kyZGMueWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9taWNyb2NoaXAvbWlj
cm9jaGlwLWNzaTJkYy5jCisKK01JQ1JPQ0hJUCBFQ0MgRFJJVkVSCitMOglsaW51eC1jcnlwdG9A
dmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvY3J5cHRvL2F0bWVsLWVjYy4q
CisKK01JQ1JPQ0hJUCBFSUMgRFJJVkVSCitNOglDbGF1ZGl1IEJlem5lYSA8Y2xhdWRpdS5iZXpu
ZWFAdHV4b24uZGV2PgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnICht
b2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21pY3JvY2hpcCxz
YW1hN2c1LWVpYy55YW1sCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLW1jaHAtZWljLmMKKworTUlD
Uk9DSElQIEkyQyBEUklWRVIKK006CUNvZHJpbiBDaXVib3Rhcml1IDxjb2RyaW4uY2l1Ym90YXJp
dUBtaWNyb2NoaXAuY29tPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWF0OTEtKi5jCitGOglkcml2ZXJzL2kyYy9i
dXNzZXMvaTJjLWF0OTEuaAorCitNSUNST0NISVAgSVNDIERSSVZFUgorTToJRXVnZW4gSHJpc3Rl
diA8ZXVnZW4uaHJpc3RldkBtaWNyb2NoaXAuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9tZWRpYS9hdG1lbCxpc2MueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL21pY3JvY2hpcCx4aXNjLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0v
bWljcm9jaGlwL21pY3JvY2hpcC1pc2MqCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL21pY3Jv
Y2hpcC9taWNyb2NoaXAtc2FtYSotaXNjKgorRjoJZHJpdmVycy9zdGFnaW5nL21lZGlhL2RlcHJl
Y2F0ZWQvYXRtZWwvYXRtZWwtaXNjKgorRjoJZHJpdmVycy9zdGFnaW5nL21lZGlhL2RlcHJlY2F0
ZWQvYXRtZWwvYXRtZWwtc2FtYSotaXNjKgorRjoJaW5jbHVkZS9saW51eC9hdG1lbC1pc2MtbWVk
aWEuaAorCitNSUNST0NISVAgSVNJIERSSVZFUgorTToJRXVnZW4gSHJpc3RldiA8ZXVnZW4uaHJp
c3RldkBtaWNyb2NoaXAuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvYXRtZWwtaXNpLmMKK0Y6
CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vYXRtZWwvYXRtZWwtaXNpLmgKKworTUlDUk9DSElQIEtT
WiBTRVJJRVMgRVRIRVJORVQgU1dJVENIIERSSVZFUgorTToJV29vanVuZyBIdWggPHdvb2p1bmcu
aHVoQG1pY3JvY2hpcC5jb20+CitNOglVTkdMaW51eERyaXZlckBtaWNyb2NoaXAuY29tCitMOglu
ZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9taWNyb2NoaXAsa3N6LnlhbWwKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZHNhL21pY3JvY2hpcCxsYW45Mzd4LnlhbWwK
K0Y6CWRyaXZlcnMvbmV0L2RzYS9taWNyb2NoaXAvKgorRjoJaW5jbHVkZS9saW51eC9kc2Eva3N6
X2NvbW1vbi5oCitGOglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvbWljcm9jaGlwLWtzei5o
CitGOgluZXQvZHNhL3RhZ19rc3ouYworCitNSUNST0NISVAgTEFONzQzWCBFVEhFUk5FVCBEUklW
RVIKK006CUJyeWFuIFdoaXRlaGVhZCA8YnJ5YW4ud2hpdGVoZWFkQG1pY3JvY2hpcC5jb20+CitN
OglVTkdMaW51eERyaXZlckBtaWNyb2NoaXAuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQz
eF8qCisKK01JQ1JPQ0hJUCBMQU44NjUwLzEgMTBCQVNFLVQxUyBNQUNQSFkgRVRIRVJORVQgRFJJ
VkVSCitNOglQYXJ0aGliYW4gVmVlcmFzb29yYW4gPHBhcnRoaWJhbi52ZWVyYXNvb3JhbkBtaWNy
b2NoaXAuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFuODY1MC55
YW1sCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuODY1eC9sYW44NjV4LmMK
KworTUlDUk9DSElQIExBTjg3eHgvTEFOOTM3eCBUMSBQSFkgRFJJVkVSCitNOglBcnVuIFJhbWFk
b3NzIDxhcnVuLnJhbWFkb3NzQG1pY3JvY2hpcC5jb20+CitSOglVTkdMaW51eERyaXZlckBtaWNy
b2NoaXAuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL25ldC9waHkvbWljcm9jaGlwX3QxLmMKKworTUlDUk9DSElQIExBTjk2NlggRVRIRVJO
RVQgRFJJVkVSCitNOglIb3JhdGl1IFZ1bHR1ciA8aG9yYXRpdS52dWx0dXJAbWljcm9jaGlwLmNv
bT4KK006CVVOR0xpbnV4RHJpdmVyQG1pY3JvY2hpcC5jb20KK0w6CW5ldGRldkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9s
YW45NjZ4LyoKKworTUlDUk9DSElQIExBTjk2NlggT0lDIERSSVZFUgorTToJSGVydmUgQ29kaW5h
IDxoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvbWljcm9jaGlwLGxh
bjk2Nngtb2ljLnlhbWwKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtbGFuOTY2eC1vaWMuYworCitN
SUNST0NISVAgTEFOOTY2WCBQQ0kgRFJJVkVSCitNOglIZXJ2ZSBDb2RpbmEgPGhlcnZlLmNvZGlu
YUBib290bGluLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWlzYy9sYW45NjZ4X3Bj
aS5jCitGOglkcml2ZXJzL21pc2MvbGFuOTY2eF9wY2kuZHRzbworCitNSUNST0NISVAgTEFOOTY5
WCBFVEhFUk5FVCBEUklWRVIKK006CURhbmllbCBNYWNob24gPGRhbmllbC5tYWNob25AbWljcm9j
aGlwLmNvbT4KK006CVVOR0xpbnV4RHJpdmVyQG1pY3JvY2hpcC5jb20KK0w6CW5ldGRldkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3Jv
Y2hpcC9zcGFyeDUvbGFuOTY5eC8qCisKK01JQ1JPQ0hJUCBMQ0RGQiBEUklWRVIKK006CU5pY29s
YXMgRmVycmUgPG5pY29sYXMuZmVycmVAbWljcm9jaGlwLmNvbT4KK0w6CWxpbnV4LWZiZGV2QHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy92aWRlby9mYmRldi9hdG1l
bF9sY2RmYi5jCitGOglpbmNsdWRlL3ZpZGVvL2F0bWVsX2xjZGMuaAorCitNSUNST0NISVAgTUNQ
MTY1MDIgUE1JQyBEUklWRVIKK006CUNsYXVkaXUgQmV6bmVhIDxjbGF1ZGl1LmJlem5lYUB0dXhv
bi5kZXY+CitNOglBbmRyZWkgU2ltaW9uIDxhbmRyZWkuc2ltaW9uQG1pY3JvY2hpcC5jb20+CitM
OglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9u
LXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvcmVndWxhdG9yL21pY3JvY2hpcCxtY3AxNjUwMi55YW1sCitGOglkcml2ZXJzL3Jl
Z3VsYXRvci9tY3AxNjUwMi5jCisKK01JQ1JPQ0hJUCBNQ1AzNTY0IEFEQyBEUklWRVIKK006CU1h
cml1cyBDcmlzdGVhIDxtYXJpdXMuY3Jpc3RlYUBtaWNyb2NoaXAuY29tPgorTDoJbGludXgtaWlv
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0
aW5nL3N5c2ZzLWJ1cy1paW8tYWRjLW1jcDM1NjQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9paW8vYWRjL21pY3JvY2hpcCxtY3AzNTY0LnlhbWwKK0Y6CWRyaXZlcnMvaWlv
L2FkYy9tY3AzNTY0LmMKKworTUlDUk9DSElQIE1DUDM5MTEgQURDIERSSVZFUgorTToJTWFyY3Vz
IEZvbGtlc3NvbiA8bWFyY3VzLmZvbGtlc3NvbkBnbWFpbC5jb20+CitNOglLZW50IEd1c3RhdnNz
b24gPGtlbnRAbWlub3Jpcy5zZT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21p
Y3JvY2hpcCxtY3AzOTExLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy9tY3AzOTExLmMKKworTUlD
Uk9DSElQIE1NQy9TRC9TRElPIE1DSSBEUklWRVIKK006CUF1YmluIENvbnN0YW5zIDxhdWJpbi5j
b25zdGFuc0BtaWNyb2NoaXAuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tbWMvaG9z
dC9hdG1lbC1tY2kuYworCitNSUNST0NISVAgTkFORCBEUklWRVIKK0w6CWxpbnV4LW10ZEBsaXN0
cy5pbmZyYWRlYWQub3JnCitTOglPcnBoYW4KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9tdGQvYXRtZWwtbmFuZC50eHQKK0Y6CWRyaXZlcnMvbXRkL25hbmQvcmF3L2F0bWVs
LyoKKworTUlDUk9DSElQIE9UUEMgRFJJVkVSCitNOglDbGF1ZGl1IEJlem5lYSA8Y2xhdWRpdS5i
ZXpuZWFAdHV4b24uZGV2PgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn
IChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL252bWVtL21pY3JvY2hpcCxzYW1hN2c1LW90cGMu
eWFtbAorRjoJZHJpdmVycy9udm1lbS9taWNyb2NoaXAtb3RwYy5jCitGOglpbmNsdWRlL2R0LWJp
bmRpbmdzL252bWVtL21pY3JvY2hpcCxzYW1hN2c1LW90cGMuaAorCitNSUNST0NISVAgUEFDMTky
MSBQT1dFUi9DVVJSRU5UIE1PTklUT1IgRFJJVkVSCitNOglNYXR0ZW8gTWFydGVsbGkgPG1hdHRl
b21hcnRlbGxpM0BnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL21p
Y3JvY2hpcCxwYWMxOTIxLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy9wYWMxOTIxLmMKKworTUlD
Uk9DSElQIFBBQzE5MzQgUE9XRVIvRU5FUkdZIE1PTklUT1IgRFJJVkVSCitNOglNYXJpdXMgQ3Jp
c3RlYSA8bWFyaXVzLmNyaXN0ZWFAbWljcm9jaGlwLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2lpby9hZGMvbWljcm9jaGlwLHBhYzE5MzQueWFtbAorRjoJZHJpdmVycy9paW8vYWRjL3Bh
YzE5MzQuYworCitNSUNST0NISVAgUENJMVhYWFggR1AgRFJJVkVSCitNOglWYWliaGFhdiBSYW0g
VC5MIDx2YWliaGFhdnJhbS50bEBtaWNyb2NoaXAuY29tPgorTToJS3VtYXJhdmVsIFRoaWFnYXJh
amFuIDxrdW1hcmF2ZWwudGhpYWdhcmFqYW5AbWljcm9jaGlwLmNvbT4KK0w6CWxpbnV4LWdwaW9A
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbWlzYy9tY2hwX3BjaTF4
eHh4L21jaHBfcGNpMXh4eHhfZ3AuYworRjoJZHJpdmVycy9taXNjL21jaHBfcGNpMXh4eHgvbWNo
cF9wY2kxeHh4eF9ncC5oCitGOglkcml2ZXJzL21pc2MvbWNocF9wY2kxeHh4eC9tY2hwX3BjaTF4
eHh4X2dwaW8uYworRjoJZHJpdmVycy9taXNjL21jaHBfcGNpMXh4eHgvbWNocF9wY2kxeHh4eF9v
dHBlMnAuYworCitNSUNST0NISVAgUENJMVhYWFggSTJDIERSSVZFUgorTToJVGhhcnVuIEt1bWFy
IFAgPHRoYXJ1bmt1bWFyLnBhc3VtYXJ0aGlAbWljcm9jaGlwLmNvbT4KK006CUt1bWFyYXZlbCBU
aGlhZ2FyYWphbiA8a3VtYXJhdmVsLnRoaWFnYXJhamFuQG1pY3JvY2hpcC5jb20+CitNOglNaWNy
b2NoaXAgTGludXggRHJpdmVyIFN1cHBvcnQgPFVOR0xpbnV4RHJpdmVyQG1pY3JvY2hpcC5jb20+
CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L2kyYy9idXNzZXMvaTJjLW1jaHAtcGNpMXh4eHguYworCitNSUNST0NISVAgUENJZSBVQVJUIERS
SVZFUgorTToJS3VtYXJhdmVsIFRoaWFnYXJhamFuIDxrdW1hcmF2ZWwudGhpYWdhcmFqYW5AbWlj
cm9jaGlwLmNvbT4KK006CVRoYXJ1biBLdW1hciBQIDx0aGFydW5rdW1hci5wYXN1bWFydGhpQG1p
Y3JvY2hpcC5jb20+CitMOglsaW51eC1zZXJpYWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX3BjaTF4eHh4LmMKKworTUlDUk9D
SElQIFBPTEFSRklSRSBGUEdBIERSSVZFUlMKK006CUNvbm9yIERvb2xleSA8Y29ub3IuZG9vbGV5
QG1pY3JvY2hpcC5jb20+CitMOglsaW51eC1mcGdhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZnBnYS9taWNyb2NoaXAs
bXBmLXNwaS1mcGdhLW1nci55YW1sCitGOglkcml2ZXJzL2ZwZ2EvbWljcm9jaGlwLXNwaS5jCisK
K01JQ1JPQ0hJUCBQV00gRFJJVkVSCitNOglDbGF1ZGl1IEJlem5lYSA8Y2xhdWRpdS5iZXpuZWFA
dHV4b24uZGV2PgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2Rl
cmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CWxpbnV4LXB3bUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS9h
dG1lbCxhdDkxc2FtLXB3bS55YW1sCitGOglkcml2ZXJzL3B3bS9wd20tYXRtZWwuYworCitNSUNS
T0NISVAgU0FNOXg3LUNPTVBBVElCTEUgTFZEUyBDT05UUk9MTEVSCitNOglNYW5pa2FuZGFuIE11
cmFsaWRoYXJhbiA8bWFuaWthbmRhbi5tQG1pY3JvY2hpcC5jb20+CitNOglEaGFybWEgQmFsYXN1
YmlyYW1hbmkgPGRoYXJtYS5iQG1pY3JvY2hpcC5jb20+CitMOglkcmktZGV2ZWxAbGlzdHMuZnJl
ZWRlc2t0b3Aub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9kaXNwbGF5L2JyaWRnZS9taWNyb2NoaXAsc2FtOXg3NS1sdmRzLnlhbWwKK0Y6CWRy
aXZlcnMvZ3B1L2RybS9icmlkZ2UvbWljcm9jaGlwLWx2ZHMuYworCitNSUNST0NISVAgU0FNQTVE
Mi1DT01QQVRJQkxFIEFEQyBEUklWRVIKK006CUV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZA
bWljcm9jaGlwLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvYXRtZWwsc2Ft
YTVkMi1hZGMueWFtbAorRjoJZHJpdmVycy9paW8vYWRjL2F0OTEtc2FtYTVkMl9hZGMuYworRjoJ
aW5jbHVkZS9kdC1iaW5kaW5ncy9paW8vYWRjL2F0OTEtc2FtYTVkMl9hZGMuaAorCitNSUNST0NI
SVAgU0FNQTVEMi1DT01QQVRJQkxFIFNIVVRET1dOIENPTlRST0xMRVIKK006CUNsYXVkaXUgQmV6
bmVhIDxjbGF1ZGl1LmJlem5lYUB0dXhvbi5kZXY+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC9hdG1lbCxzYW1hNWQyLXNoZHdj
LnlhbWwKK0Y6CWRyaXZlcnMvcG93ZXIvcmVzZXQvYXQ5MS1zYW1hNWQyX3NoZHdjLmMKKworTUlD
Uk9DSElQIFNPQyBEUklWRVJTCitNOglDb25vciBEb29sZXkgPGNvbm9yQGtlcm5lbC5vcmc+CitT
OglTdXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgv
a2VybmVsL2dpdC9jb25vci9saW51eC5naXQvCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3Mvc29jL21pY3JvY2hpcC8KK0Y6CWRyaXZlcnMvc29jL21pY3JvY2hpcC8KKworTUlD
Uk9DSElQIFNQSSBEUklWRVIKK006CVJ5YW4gV2FubmVyIDxyeWFuLndhbm5lckBtaWNyb2NoaXAu
Y29tPgorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3NwaS9zcGktYXRtZWwuKgorCitNSUNST0NI
SVAgU1NDIERSSVZFUgorTToJQ2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRl
dj4KK006CUFuZHJlaSBTaW1pb24gPGFuZHJlaS5zaW1pb25AbWljcm9jaGlwLmNvbT4KK0w6CWxp
bnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vi
c2NyaWJlcnMpCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9zb3VuZC9hdG1lbCxhdDkxLXNzYy55YW1sCitGOglkcml2ZXJzL21pc2MvYXRtZWwtc3Nj
LmMKK0Y6CWluY2x1ZGUvbGludXgvYXRtZWwtc3NjLmgKKworTWljcm9jaGlwIFRpbWVyIENvdW50
ZXIgQmxvY2sgKFRDQikgQ2FwdHVyZSBEcml2ZXIKK006CUthbWVsIEJvdWhhcmEgPGthbWVsLmJv
dWhhcmFAYm9vdGxpbi5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5v
cmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtaWlvQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9jb3VudGVyL21pY3JvY2hpcC10Y2It
Y2FwdHVyZS5jCitGOglpbmNsdWRlL3VhcGkvbGludXgvY291bnRlci9taWNyb2NoaXAtdGNiLWNh
cHR1cmUuaAorCitNSUNST0NISVAgVVNCMjUxWEIgRFJJVkVSCitNOglSaWNoYXJkIExlaXRuZXIg
PHJpY2hhcmQubGVpdG5lckBza2lkYXRhLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91
c2IvdXNiMjUxeGIueWFtbAorRjoJZHJpdmVycy91c2IvbWlzYy91c2IyNTF4Yi5jCisKK01JQ1JP
Q0hJUCBVU0JBIFVEQyBEUklWRVIKK006CUNyaXN0aWFuIEJpcnNhbiA8Y3Jpc3RpYW4uYmlyc2Fu
QG1pY3JvY2hpcC5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcg
KG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJz
L3VzYi9nYWRnZXQvdWRjL2F0bWVsX3VzYmFfdWRjLioKKworTUlDUk9DSElQIFdJTEMxMDAwIFdJ
RkkgRFJJVkVSCitNOglBamF5IFNpbmdoIDxhamF5LmthdGhhdEBtaWNyb2NoaXAuY29tPgorTToJ
Q2xhdWRpdSBCZXpuZWEgPGNsYXVkaXUuYmV6bmVhQHR1eG9uLmRldj4KK0w6CWxpbnV4LXdpcmVs
ZXNzQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL25ldC93aXJlbGVz
cy9taWNyb2NoaXAvCisKK01JQ1JPU0VNSSBNSVBTIFNPQ1MKK006CUFsZXhhbmRyZSBCZWxsb25p
IDxhbGV4YW5kcmUuYmVsbG9uaUBib290bGluLmNvbT4KK006CVVOR0xpbnV4RHJpdmVyQG1pY3Jv
Y2hpcC5jb20KK0w6CWxpbnV4LW1pcHNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXBzL21zY2MudHh0CitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L21zY2MsdnNjNzUxNC1zZXJkZXMueWFt
bAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0L29jZWxv
dC1yZXNldC50eHQKK0Y6CWFyY2gvbWlwcy9ib290L2R0cy9tc2NjLworRjoJYXJjaC9taXBzL2Nv
bmZpZ3MvZ2VuZXJpYy9ib2FyZC1vY2Vsb3QuY29uZmlnCitGOglhcmNoL21pcHMvZ2VuZXJpYy9i
b2FyZC1vY2Vsb3QuYworCitNSUNST1NFTUkgU01BUlQgQVJSQVkgU01BUlRQUUkgRFJJVkVSIChz
bWFydHBxaSkKK006CURvbiBCcmFjZSA8ZG9uLmJyYWNlQG1pY3JvY2hpcC5jb20+CitMOglzdG9y
YWdlZGV2QG1pY3JvY2hpcC5jb20KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vc2NzaS9zbWFydHBxaS5yc3QKK0Y6CWRyaXZlcnMv
c2NzaS9zbWFydHBxaS9LY29uZmlnCitGOglkcml2ZXJzL3Njc2kvc21hcnRwcWkvTWFrZWZpbGUK
K0Y6CWRyaXZlcnMvc2NzaS9zbWFydHBxaS9zbWFydHBxaSouW2NoXQorRjoJaW5jbHVkZS9saW51
eC9jY2lzcyouaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2NjaXNzKi5oCisKK01JQ1JPU09GVCBN
QU5BIFJETUEgRFJJVkVSCitNOglMb25nIExpIDxsb25nbGlAbWljcm9zb2Z0LmNvbT4KK006CUtv
bnN0YW50aW4gVGFyYW5vdiA8a290YXJhbm92QG1pY3Jvc29mdC5jb20+CitMOglsaW51eC1yZG1h
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2luZmluaWJhbmQvaHcv
bWFuYS8KK0Y6CWluY2x1ZGUvbmV0L21hbmEKK0Y6CWluY2x1ZGUvdWFwaS9yZG1hL21hbmEtYWJp
LmgKKworTUlDUk9TT0ZUIFNVUkZBQ0UgQUdHUkVHQVRPUiBUQUJMRVQtTU9ERSBTV0lUQ0gKK006
CU1heGltaWxpYW4gTHV6IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRy
aXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRm
b3JtL3N1cmZhY2Uvc3VyZmFjZV9hZ2dyZWdhdG9yX3RhYmxldHN3LmMKKworTUlDUk9TT0ZUIFNV
UkZBQ0UgQkFUVEVSWSBBTkQgQUMgRFJJVkVSUworTToJTWF4aW1pbGlhbiBMdXogPGx1em1heGlt
aWxpYW5AZ21haWwuY29tPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitMOglwbGF0Zm9y
bS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9w
b3dlci9zdXBwbHkvc3VyZmFjZV9iYXR0ZXJ5LmMKK0Y6CWRyaXZlcnMvcG93ZXIvc3VwcGx5L3N1
cmZhY2VfY2hhcmdlci5jCisKK01JQ1JPU09GVCBTVVJGQUNFIERUWCBEUklWRVIKK006CU1heGlt
aWxpYW4gTHV6IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14
ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RyaXZl
ci1hcGkvc3VyZmFjZV9hZ2dyZWdhdG9yL2NsaWVudHMvZHR4LnJzdAorRjoJZHJpdmVycy9wbGF0
Zm9ybS9zdXJmYWNlL3N1cmZhY2VfZHR4LmMKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9zdXJmYWNl
X2FnZ3JlZ2F0b3IvZHR4LmgKKworTUlDUk9TT0ZUIFNVUkZBQ0UgU0VOU09SIEZBTiBEUklWRVIK
K006CU1heGltaWxpYW4gTHV6IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4KK006CUl2b3IgV2Fu
ZGVycyA8aXZvckBpd2FuZGVycy5uZXQ+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vc3VyZmFjZV9mYW4ucnN0CitG
Oglkcml2ZXJzL2h3bW9uL3N1cmZhY2VfZmFuLmMKKworTUlDUk9TT0ZUIFNVUkZBQ0UgU0VOU09S
IFRIRVJNQUwgRFJJVkVSCitNOglNYXhpbWlsaWFuIEx1eiA8bHV6bWF4aW1pbGlhbkBnbWFpbC5j
b20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRy
aXZlcnMvaHdtb24vc3VyZmFjZV90ZW1wLmMKKworTUlDUk9TT0ZUIFNVUkZBQ0UgR1BFIExJRCBT
VVBQT1JUIERSSVZFUgorTToJTWF4aW1pbGlhbiBMdXogPGx1em1heGltaWxpYW5AZ21haWwuY29t
PgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9zdXJmYWNlX2dwZS5jCisKK01JQ1JPU09GVCBT
VVJGQUNFIEhBUkRXQVJFIFBMQVRGT1JNIFNVUFBPUlQKK006CUhhbnMgZGUgR29lZGUgPGhkZWdv
ZWRlQHJlZGhhdC5jb20+CitNOglJbHBvIErDpHJ2aW5lbiA8aWxwby5qYXJ2aW5lbkBsaW51eC5p
bnRlbC5jb20+CitNOglNYXhpbWlsaWFuIEx1eiA8bHV6bWF4aW1pbGlhbkBnbWFpbC5jb20+CitM
OglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wZHg4Ni9w
bGF0Zm9ybS1kcml2ZXJzLXg4Ni5naXQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS8KKwor
TUlDUk9TT0ZUIFNVUkZBQ0UgSElEIFRSQU5TUE9SVCBEUklWRVIKK006CU1heGltaWxpYW4gTHV6
IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9y
ZworTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvaGlkL3N1cmZhY2UtaGlkLworCitNSUNST1NPRlQgU1VSRkFDRSBIT1QtUExV
RyBEUklWRVIKK006CU1heGltaWxpYW4gTHV6IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4KK0w6
CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL3BsYXRmb3JtL3N1cmZhY2Uvc3VyZmFjZV9ob3RwbHVnLmMKKworTUlDUk9TT0ZUIFNV
UkZBQ0UgUExBVEZPUk0gUFJPRklMRSBEUklWRVIKK006CU1heGltaWxpYW4gTHV6IDxsdXptYXhp
bWlsaWFuQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3N1cmZhY2Uvc3VyZmFjZV9wbGF0
Zm9ybV9wcm9maWxlLmMKKworTUlDUk9TT0ZUIFNVUkZBQ0UgUFJPIDMgQlVUVE9OIERSSVZFUgor
TToJQ2hlbiBZdSA8eXUuYy5jaGVuQGludGVsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZA
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0vc3VyZmFj
ZS9zdXJmYWNlcHJvM19idXR0b24uYworCitNSUNST1NPRlQgU1VSRkFDRSBTWVNURU0gQUdHUkVH
QVRPUiBIVUIgRFJJVkVSCitNOglNYXhpbWlsaWFuIEx1eiA8bHV6bWF4aW1pbGlhbkBnbWFpbC5j
b20+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL3N1cmZhY2VfYWdncmVnYXRvcl9odWIuYwor
CitNSUNST1NPRlQgU1VSRkFDRSBTWVNURU0gQUdHUkVHQVRPUiBTVUJTWVNURU0KK006CU1heGlt
aWxpYW4gTHV6IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14
ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2dpdGh1Yi5jb20v
bGludXgtc3VyZmFjZS9zdXJmYWNlLWFnZ3JlZ2F0b3ItbW9kdWxlCitDOglpcmM6Ly9pcmMubGli
ZXJhLmNoYXQvbGludXgtc3VyZmFjZQorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3N1cmZh
Y2VfYWdncmVnYXRvci8KK0Y6CWRyaXZlcnMvcGxhdGZvcm0vc3VyZmFjZS9hZ2dyZWdhdG9yLwor
RjoJZHJpdmVycy9wbGF0Zm9ybS9zdXJmYWNlL3N1cmZhY2VfYWNwaV9ub3RpZnkuYworRjoJZHJp
dmVycy9wbGF0Zm9ybS9zdXJmYWNlL3N1cmZhY2VfYWdncmVnYXRvcl9jZGV2LmMKK0Y6CWRyaXZl
cnMvcGxhdGZvcm0vc3VyZmFjZS9zdXJmYWNlX2FnZ3JlZ2F0b3JfcmVnaXN0cnkuYworRjoJaW5j
bHVkZS9saW51eC9zdXJmYWNlX2FjcGlfbm90aWZ5LmgKK0Y6CWluY2x1ZGUvbGludXgvc3VyZmFj
ZV9hZ2dyZWdhdG9yLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3N1cmZhY2VfYWdncmVnYXRvci8K
KworTUlDUk9URUsgWDYgU0NBTk5FUgorTToJT2xpdmVyIE5ldWt1bSA8b2xpdmVyQG5ldWt1bS5v
cmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3VzYi9pbWFnZS9taWNyb3Rlay4qCisKK01J
S1JPVElLIENSUzNYWCA5OERYMzIzNiBCT0FSRCBTVVBQT1JUCitNOglMdWthIEtvdmFjaWMgPGx1
a2Eua292YWNpY0BzYXJ0dXJhLmhyPgorTToJTHVrYSBQZXJrb3YgPGx1a2EucGVya292QHNhcnR1
cmEuaHI+CitTOglNYWludGFpbmVkCitGOglhcmNoL2FybS9ib290L2R0cy9tYXJ2ZWxsL2FybWFk
YS14cC1jcnMzMDUtMWctNHMtYml0LmR0cworRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9h
cm1hZGEteHAtY3JzMzA1LTFnLTRzLmR0cworRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9h
cm1hZGEteHAtY3JzMzI2LTI0Zy0ycy1iaXQuZHRzCitGOglhcmNoL2FybS9ib290L2R0cy9tYXJ2
ZWxsL2FybWFkYS14cC1jcnMzMjYtMjRnLTJzLmR0cworRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFy
dmVsbC9hcm1hZGEteHAtY3JzMzI4LTRjLTIwcy00cy1iaXQuZHRzCitGOglhcmNoL2FybS9ib290
L2R0cy9tYXJ2ZWxsL2FybWFkYS14cC1jcnMzMjgtNGMtMjBzLTRzLmR0cworCitNSU4gSEVBUAor
TToJS3Vhbi1XZWkgQ2hpdSA8dmlzaXRvcmNrd0BnbWFpbC5jb20+CitMOglsaW51eC1rZXJuZWxA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2NvcmUtYXBp
L21pbl9oZWFwLnJzdAorRjoJaW5jbHVkZS9saW51eC9taW5faGVhcC5oCitGOglsaWIvbWluX2hl
YXAuYworRjoJbGliL3Rlc3RfbWluX2hlYXAuYworCitNSVBJIENDUywgU01JQSBBTkQgU01JQSsr
IElNQUdFIFNFTlNPUiBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGxpbnV4
LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9taXBpLWNj
cy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvZHJpdmVycy9jY3MvCitG
OglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbWVkaWEvZHJpdmVycy9jY3MucnN0CitGOglk
cml2ZXJzL21lZGlhL2kyYy9jY3MtcGxsLmMKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2Njcy1wbGwu
aAorRjoJZHJpdmVycy9tZWRpYS9pMmMvY2NzLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L2Njcy5o
CitGOglpbmNsdWRlL3VhcGkvbGludXgvc21pYXBwLmgKKworTUlQUworTToJVGhvbWFzIEJvZ2Vu
ZG9lcmZlciA8dHNib2dlbmRAYWxwaGEuZnJhbmtlbi5kZT4KK0w6CWxpbnV4LW1pcHNAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3Jn
L3Byb2plY3QvbGludXgtbWlwcy9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9taXBzL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvCitGOglEb2N1bWVudGF0aW9uL2FyY2gvbWlwcy8KK0Y6
CWFyY2gvbWlwcy8KK0Y6CWRyaXZlcnMvcGxhdGZvcm0vbWlwcy8KK0Y6CWluY2x1ZGUvZHQtYmlu
ZGluZ3MvbWlwcy8KKworTUlQUyBCT1NUT04gREVWRUxPUE1FTlQgQk9BUkQKK006CVBhdWwgQnVy
dG9uIDxwYXVsYnVydG9uQGtlcm5lbC5vcmc+CitMOglsaW51eC1taXBzQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Ns
b2NrL2ltZyxib3N0b24tY2xvY2sudHh0CitGOglhcmNoL21pcHMvYm9vdC9kdHMvaW1nL2Jvc3Rv
bi5kdHMKK0Y6CWFyY2gvbWlwcy9jb25maWdzL2dlbmVyaWMvYm9hcmQtYm9zdG9uLmNvbmZpZwor
RjoJZHJpdmVycy9jbGsvaW1ndGVjL2Nsay1ib3N0b24uYworRjoJaW5jbHVkZS9kdC1iaW5kaW5n
cy9jbG9jay9ib3N0b24tY2xvY2suaAorCitNSVBTIENPUkUgRFJJVkVSUworTToJVGhvbWFzIEJv
Z2VuZG9lcmZlciA8dHNib2dlbmRAYWxwaGEuZnJhbmtlbi5kZT4KK0w6CWxpbnV4LW1pcHNAdmdl
ci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvYnVzL21pcHNfY2RtbS5jCitG
Oglkcml2ZXJzL2Nsb2Nrc291cmNlL21pcHMtZ2ljLXRpbWVyLmMKK0Y6CWRyaXZlcnMvY3B1aWRs
ZS9jcHVpZGxlLWNwcy5jCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLW1pcHMtY3B1LmMKK0Y6CWRy
aXZlcnMvaXJxY2hpcC9pcnEtbWlwcy1naWMuYworCitNSVBTIEdFTkVSSUMgUExBVEZPUk0KK006
CVBhdWwgQnVydG9uIDxwYXVsYnVydG9uQGtlcm5lbC5vcmc+CitMOglsaW51eC1taXBzQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvcG93ZXIvbXRpLG1pcHMtY3BjLnlhbWwKK0Y6CWFyY2gvbWlwcy9nZW5lcmljLworRjoJ
YXJjaC9taXBzL3Rvb2xzL2dlbmVyaWMtYm9hcmQtY29uZmlnLnNoCisKK01JUFMgUklOVCBJTlNU
UlVDVElPTiBFTVVMQVRJT04KK006CUFsZWtzYW5kYXIgTWFya292aWMgPGFsZWtzYW5kYXIubWFy
a292aWNAbWlwcy5jb20+CitMOglsaW51eC1taXBzQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitGOglhcmNoL21pcHMvbWF0aC1lbXUvZHBfcmludC5jCitGOglhcmNoL21pcHMvbWF0aC1l
bXUvc3BfcmludC5jCisKK01JUFMvTE9PTkdTT04xIEFSQ0hJVEVDVFVSRQorTToJS2VndWFuZyBa
aGFuZyA8a2VndWFuZy56aGFuZ0BnbWFpbC5jb20+CitMOglsaW51eC1taXBzQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
LyovbG9vbmdzb24sbHMxKi55YW1sCitGOglhcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1sb29u
Z3NvbjMyLworRjoJYXJjaC9taXBzL2xvb25nc29uMzIvCitGOglkcml2ZXJzLyovKmxvb25nc29u
MSoKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLWxvb25nc29u
MS5jCitGOglzb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb24xX2FjOTcuYworCitNSVBTL0xPT05H
U09OMkVGIEFSQ0hJVEVDVFVSRQorTToJSmlheHVuIFlhbmcgPGppYXh1bi55YW5nQGZseWdvYXQu
Y29tPgorTDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFy
Y2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWxvb25nc29uMmVmLworRjoJYXJjaC9taXBzL2xvb25n
c29uMmVmLworRjoJZHJpdmVycy9jcHVmcmVxL2xvb25nc29uMl9jcHVmcmVxLmMKKworTUlQUy9M
T09OR1NPTjY0IEFSQ0hJVEVDVFVSRQorTToJSHVhY2FpIENoZW4gPGNoZW5odWFjYWlAa2VybmVs
Lm9yZz4KK006CUppYXh1biBZYW5nIDxqaWF4dW4ueWFuZ0BmbHlnb2F0LmNvbT4KK0w6CWxpbnV4
LW1pcHNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglhcmNoL21pcHMvaW5jbHVk
ZS9hc20vbWFjaC1sb29uZ3NvbjY0LworRjoJYXJjaC9taXBzL2xvb25nc29uNjQvCitGOglkcml2
ZXJzL2lycWNoaXAvaXJxLWxvb25nc29uKgorRjoJZHJpdmVycy9wbGF0Zm9ybS9taXBzL2NwdV9o
d21vbi5jCisKK01JUk9TT1VORCBQQ00yMCBGTSBSQURJTyBSRUNFSVZFUiBEUklWRVIKK006CUhh
bnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJu
ZWwub3JnCitTOglPZGQgRml4ZXMKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6
Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tbWly
b3BjbTIwKgorCitNSVRTVU1JIE1NODAxMyBGRyBEUklWRVIKK006CUtvbnJhZCBEeWJjaW8gPGtv
bnJhZHliY2lvQGtlcm5lbC5vcmc+CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvcG93ZXIvc3VwcGx5L21pdHN1bWksbW04MDEzLnlhbWwKK0Y6CWRyaXZlcnMvcG93ZXIvc3Vw
cGx5L21tODAxMy5jCisKK01NUCBTVVBQT1JUCitSOglMdWJvbWlyIFJpbnRlbCA8bGt1bmRyYWtA
djMuc2s+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRl
ZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJT2RkIEZpeGVzCitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2xrdW5kcmFrL2xpbnV4LW1tcC5naXQK
K0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL21hcnZlbGwvbW1wKgorRjoJYXJjaC9hcm0vbWFjaC1tbXAv
CitGOglpbmNsdWRlL2xpbnV4L3NvYy9tbXAvCisKK01NUCBVU0IgUEhZIERSSVZFUlMKK1I6CUx1
Ym9taXIgUmludGVsIDxsa3VuZHJha0B2My5zaz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMu
aW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL3BoeS9tYXJ2ZWxsL3BoeS1tbXAzLXVzYi5jCitGOglkcml2ZXJzL3Bo
eS9tYXJ2ZWxsL3BoeS1weGEtdXNiLmMKKworTU1VIEdBVEhFUiBBTkQgVExCIElOVkFMSURBVElP
TgorTToJV2lsbCBEZWFjb24gPHdpbGxAa2VybmVsLm9yZz4KK006CSJBbmVlc2ggS3VtYXIgSy5W
IiA8YW5lZXNoLmt1bWFyQGtlcm5lbC5vcmc+CitNOglBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4
LWZvdW5kYXRpb24ub3JnPgorTToJTmljayBQaWdnaW4gPG5waWdnaW5AZ21haWwuY29tPgorTToJ
UGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgorTDoJbGludXgtYXJjaEB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWxpbnV4LW1tQGt2YWNrLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJj
aC8qL2luY2x1ZGUvYXNtL3RsYi5oCitGOglpbmNsdWRlL2FzbS1nZW5lcmljL3RsYi5oCitGOglt
bS9tbXVfZ2F0aGVyLmMKKworTU44ODQ3MiBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZn
ZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRw
Oi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRy
aXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9tbjg4NDcyKgorCitNTjg4NDczIE1FRElBIERSSVZF
UgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8v
bGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51
eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS9kdmItZnJvbnRlbmRzL21uODg0NzMqCisK
K01PQklMRVlFIE1JUFMgU09DUworTToJVmxhZGltaXIgS29uZHJhdGlldiA8dmxhZGltaXIua29u
ZHJhdGlldkBtb2JpbGV5ZS5jb20+CitNOglHcmVnb3J5IENMRU1FTlQgPGdyZWdvcnkuY2xlbWVu
dEBib290bGluLmNvbT4KK006CVRow6lvIExlYnJ1biA8dGhlby5sZWJydW5AYm9vdGxpbi5jb20+
CitMOglsaW51eC1taXBzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcHMvbW9iaWxleWUueWFtbAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy9tb2JpbGV5ZS8KK0Y6CWFyY2gvbWlwcy9i
b290L2R0cy9tb2JpbGV5ZS8KK0Y6CWFyY2gvbWlwcy9jb25maWdzL2V5ZXE1X2RlZmNvbmZpZwor
RjoJYXJjaC9taXBzL21vYmlsZXllL2JvYXJkLWVwbTUuaXRzLlMKK0Y6CWRyaXZlcnMvY2xrL2Ns
ay1leWVxLmMKK0Y6CWRyaXZlcnMvcGluY3RybC9waW5jdHJsLWV5ZXE1LmMKK0Y6CWRyaXZlcnMv
cmVzZXQvcmVzZXQtZXllcS5jCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL21vYmlsZXll
LGV5ZXE1LWNsay5oCisKK01PRFVMRSBTVVBQT1JUCitNOglMdWlzIENoYW1iZXJsYWluIDxtY2dy
b2ZAa2VybmVsLm9yZz4KK006CVBldHIgUGF2bHUgPHBldHIucGF2bHVAc3VzZS5jb20+CitSOglT
YW1pIFRvbHZhbmVuIDxzYW1pdG9sdmFuZW5AZ29vZ2xlLmNvbT4KK1I6CURhbmllbCBHb21leiA8
ZGEuZ29tZXpAc2Ftc3VuZy5jb20+CitMOglsaW51eC1tb2R1bGVzQHZnZXIua2VybmVsLm9yZwor
TDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdp
dDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9tY2dyb2YvbGludXgu
Z2l0IG1vZHVsZXMtbmV4dAorRjoJaW5jbHVkZS9saW51eC9rbW9kLmgKK0Y6CWluY2x1ZGUvbGlu
dXgvbW9kdWxlKi5oCitGOglrZXJuZWwvbW9kdWxlLworRjoJbGliL3Rlc3Rfa21vZC5jCitGOgls
aWIvdGVzdHMvbW9kdWxlLworRjoJc2NyaXB0cy9tb2R1bGUqCitGOgl0b29scy90ZXN0aW5nL3Nl
bGZ0ZXN0cy9rbW9kLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW9kdWxlLworCitNT05P
TElUSElDIFBPV0VSIFNZU1RFTSBQTUlDIERSSVZFUgorTToJU2FyYXZhbmFuIFNla2FyIDxzcmF2
YW5ob21lQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9tZmQvbXBzLG1wMjYyOS55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvcmVndWxhdG9yL21wcyxtcCoueWFtbAorRjoJZHJpdmVycy9od21vbi9w
bWJ1cy9tcHE3OTMyLmMKK0Y6CWRyaXZlcnMvaWlvL2FkYy9tcDI2MjlfYWRjLmMKK0Y6CWRyaXZl
cnMvbWZkL21wMjYyOS5jCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9tcDI2MjlfY2hhcmdlci5j
CitGOglkcml2ZXJzL3JlZ3VsYXRvci9tcDU0MTYuYworRjoJZHJpdmVycy9yZWd1bGF0b3IvbXBx
NzkyMC5jCitGOglkcml2ZXJzL3JlZ3VsYXRvci9tcHE3OTIwLmgKK0Y6CWluY2x1ZGUvbGludXgv
bWZkL21wMjYyOS5oCisKK01PU1QoUikgVEVDSE5PTE9HWSBEUklWRVIKK006CVBhcnRoaWJhbiBW
ZWVyYXNvb3JhbiA8cGFydGhpYmFuLnZlZXJhc29vcmFuQG1pY3JvY2hpcC5jb20+CitNOglDaHJp
c3RpYW4gR3JvbW0gPGNocmlzdGlhbi5ncm9tbUBtaWNyb2NoaXAuY29tPgorUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9jb25maWdmcy1tb3N0CitGOglEb2N1bWVu
dGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1tb3N0CitGOglkcml2ZXJzL21vc3QvCitGOglk
cml2ZXJzL3N0YWdpbmcvbW9zdC8KK0Y6CWluY2x1ZGUvbGludXgvbW9zdC5oCisKK01PVE9SQ09N
TSBQSFkgRFJJVkVSCitNOglGcmFuayA8RnJhbmsuU2FlQG1vdG9yLWNvbW0uY29tPgorTDoJbmV0
ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL25ldC9tb3RvcmNvbW0seXQ4eHh4LnlhbWwKK0Y6CWRyaXZlcnMvbmV0
L3BoeS9tb3RvcmNvbW0uYworCitNT1hBIFNNQVJUSU8vSU5EVVNUSU8vSU5URUxMSU8gU0VSSUFM
IENBUkQKK006CUppcmkgU2xhYnkgPGppcmlzbGFieUBrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3R0eS9tb3hhLXNtYXJ0aW8ucnN0CitGOglk
cml2ZXJzL3R0eS9teHNlci4qCisKK01QMzMwOUMgQkFDS0xJR0hUIERSSVZFUgorTToJRmxhdmlv
IFN1bGlnb2kgPGYuc3VsaWdvaUBhc2VtLml0PgorTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr
dG9wLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2xlZHMvYmFja2xpZ2h0L21wcyxtcDMzMDljLnlhbWwKK0Y6CWRyaXZlcnMvdmlkZW8vYmFj
a2xpZ2h0L21wMzMwOWMuYworCitNUFMgTVAyODkxIERSSVZFUgorTToJTm9haCBXYW5nIDxub2Fo
d2FuZy53YW5nQG91dGxvb2suY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL21wMjg5MS5yc3QKK0Y6CWRyaXZl
cnMvaHdtb24vcG1idXMvbXAyODkxLmMKKworTVBTIE1QMjk5MyBEUklWRVIKK006CU5vYWggV2Fu
ZyA8bm9haHdhbmcud2FuZ0BvdXRsb29rLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9tcDI5OTMucnN0CitG
Oglkcml2ZXJzL2h3bW9uL3BtYnVzL21wMjk5My5jCisKK01QUyBNUDk5NDEgRFJJVkVSCitNOglO
b2FoIFdhbmcgPG5vYWh3YW5nLndhbmdAb3V0bG9vay5jb20+CitMOglsaW51eC1od21vbkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vbXA5OTQx
LnJzdAorRjoJZHJpdmVycy9od21vbi9wbWJ1cy9tcDk5NDEuYworCitNUjgwMCBBVkVSTUVESUEg
VVNCIEZNIFJBRElPIERSSVZFUgorTToJQWxleGV5IEtsaW1vdiA8YWxleGV5LmtsaW1vdkBsaW5h
cm8ub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitU
OglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3JhZGlv
L3JhZGlvLW1yODAwLmMKKworTVJGMjRKNDAgSUVFRSA4MDIuMTUuNCBSQURJTyBEUklWRVIKK006
CVN0ZWZhbiBTY2htaWR0IDxzdGVmYW5AZGF0ZW5mcmVpaGFmZW4ub3JnPgorTDoJbGludXgtd3Bh
bkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL25ldC9pZWVlODAyMTU0L21yZjI0ajQwLnR4dAorRjoJZHJpdmVycy9uZXQv
aWVlZTgwMjE1NC9tcmYyNGo0MC5jCisKK01TSSBFQyBEUklWRVIKK006CU5pa2l0YSBLcmF2ZXRz
IDx0ZWFja290QGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2dpdGh1Yi5jb20vQmVhcmRPdmVyZmxvdy9t
c2ktZWMKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L21zaS1lYy4qCisKK01TSSBMQVBUT1AgU1VQ
UE9SVAorTToJIkxlZSwgQ2h1bi1ZaSIgPGpsZWVAc3VzZS5jb20+CitMOglwbGF0Zm9ybS1kcml2
ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9y
bS94ODYvbXNpLWxhcHRvcC5jCisKK01TSSBXTUkgU1VQUE9SVAorTDoJcGxhdGZvcm0tZHJpdmVy
LXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYv
bXNpLXdtaS5jCisKK01TSSBXTUkgUExBVEZPUk0gRkVBVFVSRVMKK006CUFybWluIFdvbGYgPFdf
QXJtaW5AZ214LmRlPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3RpbmcvZGVidWdmcy1tc2ktd21p
LXBsYXRmb3JtCitGOglEb2N1bWVudGF0aW9uL3dtaS9kZXZpY2VzL21zaS13bWktcGxhdGZvcm0u
cnN0CitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9tc2ktd21pLXBsYXRmb3JtLmMKKworTVNJMDAx
IE1FRElBIERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4K
K1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcv
cHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS90dW5lcnMvbXNpMDAx
KgorCitNU0kyNTAwIE1FRElBIERSSVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3Jn
CitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsu
bGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS91
c2IvbXNpMjUwMC8KKworTVNUQVIgSU5URVJSVVBUIENPTlRST0xMRVIgRFJJVkVSCitNOglNYXJr
LVBLIFRzYWkgPG1hcmstcGsudHNhaUBtZWRpYXRlay5jb20+CitNOglEYW5pZWwgUGFsbWVyIDxk
YW5pZWxAdGhpbmd5LmpwPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL21zdGFyLG1zdC1pbnRjLnlhbWwKK0Y6
CWRyaXZlcnMvaXJxY2hpcC9pcnEtbXN0LWludGMuYworCitNU1lTVEVNUyBESVNLT05DSElQIEcz
IE1URCBEUklWRVIKK006CVJvYmVydCBKYXJ6bWlrIDxyb2JlcnQuamFyem1pa0BmcmVlLmZyPgor
TDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvbXRkL2RldmljZXMvZG9jZzMqCisKK01UOU0xMTQgT05TRU1JIFNFTlNPUiBEUklWRVIKK006
CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK0w6
CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDov
L2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL2kyYy9vbm5uLG10OW0xMTQueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvbXQ5
bTExNC5jCisKK01UOVAwMzEgQVBUSU5BIENBTUVSQSBTRU5TT1IKK006CUxhdXJlbnQgUGluY2hh
cnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21l
ZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9h
cHRpbmEsbXQ5cDAzMS55YW1sCitGOglkcml2ZXJzL21lZGlhL2kyYy9tdDlwMDMxLmMKKworTVQ5
VDExMiBBUFRJTkEgQ0FNRVJBIFNFTlNPUgorTToJSmFjb3BvIE1vbmRpIDxqYWNvcG9Aam1vbmRp
Lm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitUOgln
aXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy9tdDl0
MTEyLmMKK0Y6CWluY2x1ZGUvbWVkaWEvaTJjL210OXQxMTIuaAorCitNVDlWMDMyIEFQVElOQSBD
QU1FUkEgU0VOU09SCitNOglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFz
b25ib2FyZC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvYXB0aW5hLG10OXYwMzIudHh0CitGOglkcml2
ZXJzL21lZGlhL2kyYy9tdDl2MDMyLmMKK0Y6CWluY2x1ZGUvbWVkaWEvaTJjL210OXYwMzIuaAor
CitNVDlWMTExIEFQVElOQSBDQU1FUkEgU0VOU09SCitNOglKYWNvcG8gTW9uZGkgPGphY29wb0Bq
bW9uZGkub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL2FwdGluYSxtdDl2MTExLnlhbWwKK0Y6CWRyaXZl
cnMvbWVkaWEvaTJjL210OXYxMTEuYworCitNVUxUSUZVTkNUSU9OIERFVklDRVMgKE1GRCkKK006
CUxlZSBKb25lcyA8bGVlQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2xlZS9tZmQuZ2l0CitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkLworRjoJZHJpdmVycy9tZmQvCitG
OglpbmNsdWRlL2R0LWJpbmRpbmdzL21mZC8KK0Y6CWluY2x1ZGUvbGludXgvbWZkLworCitNVUxU
SU1FRElBIENBUkQgKE1NQykgRVRDLiBPVkVSIFNQSQorUzoJT3JwaGFuCitGOglkcml2ZXJzL21t
Yy9ob3N0L21tY19zcGkuYworRjoJaW5jbHVkZS9saW51eC9zcGkvbW1jX3NwaS5oCisKK01VTFRJ
TUVESUEgQ0FSRCAoTU1DKSwgU0VDVVJFIERJR0lUQUwgKFNEKSBBTkQgU0RJTyBTVUJTWVNURU0K
K006CVVsZiBIYW5zc29uIDx1bGYuaGFuc3NvbkBsaW5hcm8ub3JnPgorTDoJbGludXgtbW1jQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3Jn
L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC91bGZoL21tYy5naXQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvCitGOglkcml2ZXJzL21tYy8KK0Y6CWluY2x1ZGUvbGlu
dXgvbW1jLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L21tYy8KKworTVVMVElQTEVYRVIgU1VCU1lT
VEVNCitNOglQZXRlciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPgorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1tdXgqCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXV4LworRjoJZHJpdmVycy9tdXgvCitGOglpbmNsdWRl
L2R0LWJpbmRpbmdzL211eC8KK0Y6CWluY2x1ZGUvbGludXgvbXV4LworCitNVVNCIE1VTFRJUE9J
TlQgSElHSCBTUEVFRCBEVUFMLVJPTEUgQ09OVFJPTExFUgorTToJQmluIExpdSA8Yi1saXVAdGku
Y29tPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy91c2IvbXVzYi8KKworTVhMMzAxUkYgTUVESUEgRFJJVkVSCitNOglBa2loaXJvIFRzdWth
ZGEgPHRza2QwOEBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU9kZCBGaXhlcworRjoJZHJpdmVycy9tZWRpYS90dW5lcnMvbXhsMzAxcmYqCisKK01YTDUwMDdU
IE1FRElBIERSSVZFUgorTToJTWljaGFlbCBLcnVma3kgPG1rcnVma3lAbGludXh0di5vcmc+CitM
OglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8v
bGludXh0di5vcmcKK1c6CWh0dHA6Ly9naXRodWIuY29tL21rcnVma3kKK1E6CWh0dHA6Ly9wYXRj
aHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0LworVDoJZ2l0IGdpdDov
L2xpbnV4dHYub3JnL21rcnVma3kvdHVuZXJzLmdpdAorRjoJZHJpdmVycy9tZWRpYS90dW5lcnMv
bXhsNTAwN3QuKgorCitNWFNGQiBEUk0gRFJJVkVSCitNOglNYXJlayBWYXN1dCA8bWFyZXhAZGVu
eC5kZT4KK006CVN0ZWZhbiBBZ25lciA8c3RlZmFuQGFnbmVyLmNoPgorTDoJZHJpLWRldmVsQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIu
ZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2ZzbCxsY2RpZi55YW1sCitGOglkcml2ZXJzL2dwdS9k
cm0vbXhzZmIvCisKK01ZTEVYIERBQzk2MCBQQ0kgUkFJRCBDb250cm9sbGVyCitNOglIYW5uZXMg
UmVpbmVja2UgPGhhcmVAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3Jn
CitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvc2NzaS9teXJiLioKK0Y6CWRyaXZlcnMvc2NzaS9t
eXJzLioKKworTVlSSUNPTSBNWVJJLTEwRyAxMEdiRSBEUklWRVIgKE1ZUkkxMEdFKQorTDoJbmV0
ZGV2QHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL3d3dy5jc3BpLmNvbS9l
dGhlcm5ldC1wcm9kdWN0cy9zdXBwb3J0L2Rvd25sb2Fkcy8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVy
bmV0L215cmljb20vbXlyaTEwZ2UvCisKK05BTkQgRkxBU0ggU1VCU1lTVEVNCitNOglNaXF1ZWwg
UmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgorUjoJUmljaGFyZCBXZWluYmVyZ2Vy
IDxyaWNoYXJkQG5vZC5hdD4KK0w6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglN
YWludGFpbmVkCitXOglodHRwOi8vd3d3LmxpbnV4LW10ZC5pbmZyYWRlYWQub3JnLworUToJaHR0
cDovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtbXRkL2xpc3QvCitDOglpcmM6
Ly9pcmMub2Z0Yy5uZXQvbXRkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L210ZC9saW51eC5naXQgbmFuZC9uZXh0CitGOglkcml2ZXJzL210ZC9u
YW5kLworRjoJaW5jbHVkZS9saW51eC9tdGQvKm5hbmQqLmgKKworTkFUSU9OQUwgSU5TVFJVTUVO
VFMgU0VSSUFMIERSSVZFUgorTToJQ2hhaXRhbnlhIFZhZHJldnUgPGNoYWl0YW55YS52YWRyZXZ1
QGVtZXJzb24uY29tPgorTDoJbGludXgtc2VyaWFsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy90dHkvc2VyaWFsLzgyNTAvODI1MF9uaS5jCisKK05BVElWRSBJTlNU
UlVNRU5UUyBVU0IgU09VTkQgSU5URVJGQUNFIERSSVZFUgorTToJRGFuaWVsIE1hY2sgPHpvbnF1
ZUBnbWFpbC5jb20+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1c6CWh0dHA6Ly93d3cubmF0aXZlLWluc3RydW1lbnRzLmNvbQorRjoJc291bmQvdXNiL2Nh
aWFxLworCitOQVRTRU1JIEVUSEVSTkVUIERSSVZFUiAoRFA4MzgxeCkKK1M6CU9ycGhhbgorRjoJ
ZHJpdmVycy9uZXQvZXRoZXJuZXQvbmF0c2VtaS9uYXRzZW1pLmMKKworTkNSIDUzODAgU0NTSSBE
UklWRVJTCitNOglGaW5uIFRoYWluIDxmdGhhaW5AbGludXgtbTY4ay5vcmc+CitNOglNaWNoYWVs
IFNjaG1pdHogPHNjaG1pdHptaWNAZ21haWwuY29tPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vc2NzaS9nX05DUjUzODAucnN0
CitGOglkcml2ZXJzL3Njc2kvTkNSNTM4MC4qCitGOglkcml2ZXJzL3Njc2kvYXJtL2N1bWFuYV8x
LmMKK0Y6CWRyaXZlcnMvc2NzaS9hcm0vb2FrLmMKK0Y6CWRyaXZlcnMvc2NzaS9hdGFyaV9zY3Np
LioKK0Y6CWRyaXZlcnMvc2NzaS9kbXgzMTkxZC5jCitGOglkcml2ZXJzL3Njc2kvZ19OQ1I1Mzgw
LioKK0Y6CWRyaXZlcnMvc2NzaS9tYWNfc2NzaS4qCitGOglkcml2ZXJzL3Njc2kvc3VuM19zY3Np
LioKK0Y6CWRyaXZlcnMvc2NzaS9zdW4zX3Njc2lfdm1lLmMKKworTkNTSSBMSUJSQVJZCitNOglT
YW11ZWwgTWVuZG96YS1Kb25hcyA8c2FtQG1lbmRvemFqb25hcy5jb20+CitSOglQYXVsIEZlcnRz
ZXIgPGZlcmNlcnBhdkBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOgluZXQvbmNzaS8KKwor
TkNUNjc3NSBIQVJEV0FSRSBNT05JVE9SIERSSVZFUiAtIEkyQyBEUklWRVIKK006CVpldiBXZWlz
cyA8emV2QGJld2lsZGVyYmVlc3QubmV0PgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdt
b24vbnV2b3RvbixuY3Q2Nzc1LnlhbWwKK0Y6CWRyaXZlcnMvaHdtb24vbmN0Njc3NS1pMmMuYwor
CitOQ1Q3MzYzIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglCYW4gRmVuZyA8a2NmZW5nMEBu
dXZvdG9uLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2h3bW9uL251dm90b24sbmN0
NzM2My55YW1sCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL25jdDczNjMucnN0CitGOglkcml2ZXJz
L2h3bW9uL25jdDczNjMuYworCitORVRDT05TT0xFCitNOglCcmVubyBMZWl0YW8gPGxlaXRhb0Bk
ZWJpYW4ub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25l
dGNvbnNvbGUucnN0CitGOglkcml2ZXJzL25ldC9uZXRjb25zb2xlLmMKK0Y6CXRvb2xzL3Rlc3Rp
bmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2xpYi9zaC9saWJfbmV0Y29ucy5zaAorRjoJdG9vbHMv
dGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvbmV0Y29uc1wqCisKK05FVERFVlNJTQorTToJ
SmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvbmV0L25ldGRldnNpbS8qCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25l
dC9uZXRkZXZzaW0vKgorCitORVRFTSBORVRXT1JLIEVNVUxBVE9SCitNOglTdGVwaGVuIEhlbW1p
bmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+CitMOgluZXRkZXZAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOgluZXQvc2NoZWQvc2NoX25ldGVtLmMKKworTkVURVJJT04g
MTBHYkUgRFJJVkVSUyAoczJpbykKK006CUpvbiBNYXNvbiA8amRtYXNvbkBrdWR6dS51cz4KK0w6
CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
bmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9uZXRlcmlvbi9zMmlvLnJzdAorRjoJ
ZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0ZXJpb24vCisKK05FVEZJTFRFUgorTToJUGFibG8gTmVp
cmEgQXl1c28gPHBhYmxvQG5ldGZpbHRlci5vcmc+CitNOglKb3pzZWYgS2FkbGVjc2lrIDxrYWRs
ZWNAbmV0ZmlsdGVyLm9yZz4KK0w6CW5ldGZpbHRlci1kZXZlbEB2Z2VyLmtlcm5lbC5vcmcKK0w6
CWNvcmV0ZWFtQG5ldGZpbHRlci5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cubmV0
ZmlsdGVyLm9yZy8KK1c6CWh0dHA6Ly93d3cuaXB0YWJsZXMub3JnLworVzoJaHR0cDovL3d3dy5u
ZnRhYmxlcy5vcmcvCitROglodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9uZXRm
aWx0ZXItZGV2ZWwvbGlzdC8KK0M6CWlyYzovL2lyYy5saWJlcmEuY2hhdC9uZXRmaWx0ZXIKK1Q6
CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbmV0Zmls
dGVyL25mLmdpdAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC9uZXRmaWx0ZXIvbmYtbmV4dC5naXQKK0Y6CWluY2x1ZGUvbGludXgvbmV0ZmlsdGVy
KgorRjoJaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvCitGOglpbmNsdWRlL25ldC9uZXRmaWx0ZXIv
CitGOglpbmNsdWRlL3VhcGkvbGludXgvbmV0ZmlsdGVyKgorRjoJaW5jbHVkZS91YXBpL2xpbnV4
L25ldGZpbHRlci8KK0Y6CW5ldC8qL25ldGZpbHRlci5jCitGOgluZXQvKi9uZXRmaWx0ZXIvCitG
OgluZXQvYnJpZGdlL2JyX25ldGZpbHRlciouYworRjoJbmV0L25ldGZpbHRlci8KK0Y6CXRvb2xz
L3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvCisKK05FVFJPTSBORVRXT1JLIExBWUVS
CitMOglsaW51eC1oYW1zQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xp
bnV4LWF4MjUuaW4tYmVybGluLmRlCitGOglpbmNsdWRlL25ldC9uZXRyb20uaAorRjoJaW5jbHVk
ZS91YXBpL2xpbnV4L25ldHJvbS5oCitGOgluZXQvbmV0cm9tLworCitORVRST05JWCBFTUJFRERF
RCBDT05UUk9MTEVSCitNOglKb25hdGhhbiBOZXVzY2jDpGZlciA8ai5uZXVzY2hhZWZlckBnbXgu
bmV0PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L21mZC9uZXRyb25peCxudHhlYy55YW1sCitGOglkcml2ZXJzL21mZC9udHhlYy5jCitGOglkcml2
ZXJzL3B3bS9wd20tbnR4ZWMuYworRjoJZHJpdmVycy9ydGMvcnRjLW50eGVjLmMKK0Y6CWluY2x1
ZGUvbGludXgvbWZkL250eGVjLmgKKworTkVUUk9OT01FIEVUSEVSTkVUIERSSVZFUlMKK006CUxv
dWlzIFBlZW5zIDxsb3Vpcy5wZWVuc0Bjb3JpZ2luZS5jb20+CitSOglKYWt1YiBLaWNpbnNraSA8
a3ViYUBrZXJuZWwub3JnPgorTDoJb3NzLWRyaXZlcnNAY29yaWdpbmUuY29tCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvCisKK05FVFdPUksgQkxPQ0sg
REVWSUNFIChOQkQpCitNOglKb3NlZiBCYWNpayA8am9zZWZAdG94aWNwYW5kYS5jb20+CitMOgls
aW51eC1ibG9ja0B2Z2VyLmtlcm5lbC5vcmcKK0w6CW5iZEBvdGhlci5kZWJpYW4ub3JnCitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Jsb2NrZGV2L25iZC5yc3QK
K0Y6CWRyaXZlcnMvYmxvY2svbmJkLmMKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL25iZC5oCitG
OglpbmNsdWRlL3VhcGkvbGludXgvbmJkLmgKKworTkVUV09SSyBEUk9QIE1PTklUT1IKK006CU5l
aWwgSG9ybWFuIDxuaG9ybWFuQHR1eGRyaXZlci5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvZHJvcHdhdGNo
LworRjoJaW5jbHVkZS91YXBpL2xpbnV4L25ldF9kcm9wbW9uLmgKK0Y6CW5ldC9jb3JlL2Ryb3Bf
bW9uaXRvci5jCisKK05FVFdPUktJTkcgRFJJVkVSUworTToJQW5kcmV3IEx1bm4gPGFuZHJldytu
ZXRkZXZAbHVubi5jaD4KK006CSJEYXZpZCBTLiBNaWxsZXIiIDxkYXZlbUBkYXZlbWxvZnQubmV0
PgorTToJRXJpYyBEdW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgorTToJSmFrdWIgS2ljaW5z
a2kgPGt1YmFAa2VybmVsLm9yZz4KK006CVBhb2xvIEFiZW5pIDxwYWJlbmlAcmVkaGF0LmNvbT4K
K0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1A6CURvY3VtZW50YXRp
b24vcHJvY2Vzcy9tYWludGFpbmVyLW5ldGRldi5yc3QKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtl
cm5lbC5vcmcvcHJvamVjdC9uZXRkZXZicGYvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbmV0ZGV2L25ldC5naXQKK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbmV0ZGV2L25ldC1uZXh0
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC8KK0Y6CURvY3Vt
ZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdAorRjoJZHJp
dmVycy9jb25uZWN0b3IvCitGOglkcml2ZXJzL25ldC8KK0Y6CWRyaXZlcnMvcHRwLworRjoJZHJp
dmVycy9zMzkwL25ldC8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvbmV0LworRjoJaW5jbHVkZS9s
aW51eC9jbl9wcm9jLmgKK0Y6CWluY2x1ZGUvbGludXgvZXRoZXJkZXZpY2UuaAorRjoJaW5jbHVk
ZS9saW51eC9ldGh0b29sX25ldGxpbmsuaAorRjoJaW5jbHVkZS9saW51eC9mY2RldmljZS5oCitG
OglpbmNsdWRlL2xpbnV4L2ZkZGlkZXZpY2UuaAorRjoJaW5jbHVkZS9saW51eC9oaXBwaWRldmlj
ZS5oCitGOglpbmNsdWRlL2xpbnV4L2lmXyoKK0Y6CWluY2x1ZGUvbGludXgvaW5ldGRldmljZS5o
CitGOglpbmNsdWRlL2xpbnV4L2lzbS5oCitGOglpbmNsdWRlL2xpbnV4L25ldGRldioKK0Y6CWlu
Y2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS93aXpuZXQuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4
L2NuX3Byb2MuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2V0aHRvb2xfbmV0bGluayoKK0Y6CWlu
Y2x1ZGUvdWFwaS9saW51eC9pZl8qCitGOglpbmNsdWRlL3VhcGkvbGludXgvbmV0X3NoYXBlci5o
CitGOglpbmNsdWRlL3VhcGkvbGludXgvbmV0ZGV2KgorRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVz
dHMvZHJpdmVycy9uZXQvCitYOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0
L2JsdWV0b290aC8KK1g6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvY2Fu
LworWDoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy8KK1g6
CWRyaXZlcnMvbmV0L2Nhbi8KK1g6CWRyaXZlcnMvbmV0L3dpcmVsZXNzLworCitORVRXT1JLSU5H
IERSSVZFUlMgKFdJUkVMRVNTKQorTToJSm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRp
b25zLm5ldD4KK0w6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVzoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvCitROglodHRwczovL3BhdGNo
d29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtd2lyZWxlc3MvbGlzdC8KK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvd2lyZWxlc3Mvd2lyZWxl
c3MuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L3dpcmVsZXNzL3dpcmVsZXNzLW5leHQuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvbmV0L3dpcmVsZXNzLworRjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvCitYOglk
cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvCitYOglkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNv
bS8KK1g6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsLworWDoJZHJpdmVycy9uZXQvd2lyZWxl
c3MvaW50ZXJzaWwvCitYOglkcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsLworWDoJZHJpdmVy
cy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni8KK1g6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL21l
ZGlhdGVrL210NzYwMXUvCitYOglkcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvCitYOglk
cml2ZXJzL25ldC93aXJlbGVzcy9wdXJlbGlmaS8KK1g6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3F1
YW50ZW5uYS8KK1g6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3JhbGluay8KK1g6CWRyaXZlcnMvbmV0
L3dpcmVsZXNzL3JlYWx0ZWsvCitYOglkcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvCitYOglkcml2
ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvCitYOglkcml2ZXJzL25ldC93aXJlbGVzcy9zdC8KK1g6
CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpLworWDoJZHJpdmVycy9uZXQvd2lyZWxlc3MvenlkYXMv
CisKK05FVFdPUktJTkcgW0RTQV0KK006CUFuZHJldyBMdW5uIDxhbmRyZXdAbHVubi5jaD4KK006
CVZsYWRpbWlyIE9sdGVhbiA8b2x0ZWFudkBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS8KK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZXRoZXJuZXQtc3dpdGNoLXBvcnQueWFtbAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9ldGhlcm5ldC1zd2l0Y2gueWFt
bAorRjoJZHJpdmVycy9uZXQvZHNhLworRjoJaW5jbHVkZS9saW51eC9kc2EvCitGOglpbmNsdWRl
L2xpbnV4L3BsYXRmb3JtX2RhdGEvZHNhLmgKK0Y6CWluY2x1ZGUvbmV0L2RzYS5oCitGOgluZXQv
ZHNhLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvZHNhLworCitORVRX
T1JLSU5HIFtFVEhUT09MXQorTToJQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgorTToJSmFr
dWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz4KK0Y6CURvY3VtZW50YXRpb24vbmV0bGluay9z
cGVjcy9ldGh0b29sLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9ldGh0b29sLW5l
dGxpbmsucnN0CitGOglpbmNsdWRlL2xpbnV4L2V0aHRvb2wqCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvZXRodG9vbCoKK0Y6CW5ldC9ldGh0b29sLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMv
ZHJpdmVycy9uZXQvKi9ldGh0b29sKgorCitORVRXT1JLSU5HIFtFVEhUT09MIENBQkxFIFRFU1Rd
CitNOglBbmRyZXcgTHVubiA8YW5kcmV3QGx1bm4uY2g+CitGOgluZXQvZXRodG9vbC9jYWJsZXRl
c3QuYworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvKi9ldGh0b29sKgor
SzoJY2FibGVfdGVzdAorCitORVRXT1JLSU5HIFtFVEhUT09MIE1BQyBNRVJHRV0KK006CVZsYWRp
bWlyIE9sdGVhbiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+CitGOgluZXQvZXRodG9vbC9tbS5j
CitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9ldGh0b29sX21tLnNo
CitLOglldGh0b29sX21tCisKK05FVFdPUktJTkcgW0VUSFRPT0wgUEhZIFRPUE9MT0dZXQorTToJ
TWF4aW1lIENoZXZhbGxpZXIgPG1heGltZS5jaGV2YWxsaWVyQGJvb3RsaW4uY29tPgorRjoJRG9j
dW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS1saW5rLXRvcG9sb2d5LnJzdAorRjoJZHJpdmVycy9u
ZXQvcGh5L3BoeV9saW5rX3RvcG9sb2d5LmMKK0Y6CWluY2x1ZGUvbGludXgvcGh5X2xpbmtfdG9w
b2xvZ3kuaAorRjoJbmV0L2V0aHRvb2wvcGh5LmMKKworTkVUV09SS0lORyBbR0VORVJBTF0KK006
CSJEYXZpZCBTLiBNaWxsZXIiIDxkYXZlbUBkYXZlbWxvZnQubmV0PgorTToJRXJpYyBEdW1hemV0
IDxlZHVtYXpldEBnb29nbGUuY29tPgorTToJSmFrdWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9y
Zz4KK006CVBhb2xvIEFiZW5pIDxwYWJlbmlAcmVkaGF0LmNvbT4KK1I6CVNpbW9uIEhvcm1hbiA8
aG9ybXNAa2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1A6CURvY3VtZW50YXRpb24vcHJvY2Vzcy9tYWludGFpbmVyLW5ldGRldi5yc3QKK1E6CWh0
dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9uZXRkZXZicGYvbGlzdC8KK0I6CW1h
aWx0bzpuZXRkZXZAdmdlci5rZXJuZWwub3JnCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L25ldGRldi9uZXQuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0
Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L25ldGRldi9uZXQtbmV4dC5naXQK
K0Y6CURvY3VtZW50YXRpb24vY29yZS1hcGkvbmV0bGluay5yc3QKK0Y6CURvY3VtZW50YXRpb24v
bmV0bGluay8KK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy8KK0Y6CURvY3VtZW50YXRpb24v
bmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy8KK0Y6CURvY3VtZW50YXRpb24vcHJvY2Vzcy9tYWlu
dGFpbmVyLW5ldGRldi5yc3QKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9uZXRsaW5r
LworRjoJaW5jbHVkZS9saW51eC9ldGh0b29sLmgKK0Y6CWluY2x1ZGUvbGludXgvZnJhbWVyL2Zy
YW1lci1wcm92aWRlci5oCitGOglpbmNsdWRlL2xpbnV4L2ZyYW1lci9mcmFtZXIuaAorRjoJaW5j
bHVkZS9saW51eC9pbi5oCitGOglpbmNsdWRlL2xpbnV4L2luZGlyZWN0X2NhbGxfd3JhcHBlci5o
CitGOglpbmNsdWRlL2xpbnV4L2luZXQuaAorRjoJaW5jbHVkZS9saW51eC9pbmV0X2RpYWcuaAor
RjoJaW5jbHVkZS9saW51eC9uZXQuaAorRjoJaW5jbHVkZS9saW51eC9uZXRkZXYqCitGOglpbmNs
dWRlL2xpbnV4L25ldGxpbmsuaAorRjoJaW5jbHVkZS9saW51eC9uZXRwb2xsLmgKK0Y6CWluY2x1
ZGUvbGludXgvcnRuZXRsaW5rLmgKK0Y6CWluY2x1ZGUvbGludXgvc2N0cC5oCitGOglpbmNsdWRl
L2xpbnV4L3NlcV9maWxlX25ldC5oCitGOglpbmNsdWRlL2xpbnV4L3NrYnVmZioKK0Y6CWluY2x1
ZGUvbmV0LworRjoJaW5jbHVkZS91YXBpL2xpbnV4L2V0aHRvb2wuaAorRjoJaW5jbHVkZS91YXBp
L2xpbnV4L2dlbmV0bGluay5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvaHNyX25ldGxpbmsuaAor
RjoJaW5jbHVkZS91YXBpL2xpbnV4L2luLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9pbmV0X2Rp
YWcuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L25iZC1uZXRsaW5rLmgKK0Y6CWluY2x1ZGUvdWFw
aS9saW51eC9uZXQuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L25ldF9uYW1lc3BhY2UuaAorRjoJ
aW5jbHVkZS91YXBpL2xpbnV4L25ldGNvbmYuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L25ldGRl
dioKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9uZXRsaW5rLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51
eC9uZXRsaW5rX2RpYWcuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3J0bmV0bGluay5oCitGOglp
bmNsdWRlL3VhcGkvbGludXgvc2N0cC5oCitGOglsaWIvbmV0X3V0aWxzLmMKK0Y6CWxpYi9yYW5k
b20zMi5jCitGOgluZXQvCitGOglzYW1wbGVzL3BrdGdlbi8KK0Y6CXRvb2xzL25ldC8KK0Y6CXRv
b2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC8KK1g6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9t
YWM4MDIxMS1pbmplY3Rpb24ucnN0CitYOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAy
MTFfaHdzaW0vCitYOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmVndWxhdG9yeS5yc3QKK1g6
CWluY2x1ZGUvbmV0L2NmZzgwMjExLmgKK1g6CWluY2x1ZGUvbmV0L2llZWU4MDIxMV9yYWRpb3Rh
cC5oCitYOglpbmNsdWRlL25ldC9pd19oYW5kbGVyLmgKK1g6CWluY2x1ZGUvbmV0L21hYzgwMjEx
LmgKK1g6CWluY2x1ZGUvbmV0L3dleHQuaAorWDoJbmV0LzlwLworWDoJbmV0L2JsdWV0b290aC8K
K1g6CW5ldC9jYW4vCitYOgluZXQvY2VwaC8KK1g6CW5ldC9tYWM4MDIxMS8KK1g6CW5ldC9yZmtp
bGwvCitYOgluZXQvd2lyZWxlc3MvCitYOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY2Fu
LworCitORVRXT1JLSU5HIFtJUFNFQ10KK006CVN0ZWZmZW4gS2xhc3NlcnQgPHN0ZWZmZW4ua2xh
c3NlcnRAc2VjdW5ldC5jb20+CitNOglIZXJiZXJ0IFh1IDxoZXJiZXJ0QGdvbmRvci5hcGFuYS5v
cmcuYXU+CitNOgkiRGF2aWQgUy4gTWlsbGVyIiA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KK0w6CW5l
dGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2xhc3NlcnQvaXBzZWMuZ2l0CitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tsYXNzZXJ0
L2lwc2VjLW5leHQuZ2l0CitGOglpbmNsdWRlL25ldC94ZnJtLmgKK0Y6CWluY2x1ZGUvdWFwaS9s
aW51eC94ZnJtLmgKK0Y6CW5ldC9pcHY0L2FoNC5jCitGOgluZXQvaXB2NC9lc3A0KgorRjoJbmV0
L2lwdjQvaXBfdnRpLmMKK0Y6CW5ldC9pcHY0L2lwY29tcC5jCitGOgluZXQvaXB2NC94ZnJtKgor
RjoJbmV0L2lwdjYvYWg2LmMKK0Y6CW5ldC9pcHY2L2VzcDYqCitGOgluZXQvaXB2Ni9pcDZfdnRp
LmMKK0Y6CW5ldC9pcHY2L2lwY29tcDYuYworRjoJbmV0L2lwdjYveGZybSoKK0Y6CW5ldC9rZXkv
CitGOgluZXQveGZybS8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9pcHNlYy5jCisK
K05FVFdPUktJTkcgW0lQdjQvSVB2Nl0KK006CSJEYXZpZCBTLiBNaWxsZXIiIDxkYXZlbUBkYXZl
bWxvZnQubmV0PgorTToJRGF2aWQgQWhlcm4gPGRzYWhlcm5Aa2VybmVsLm9yZz4KK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbmV0ZGV2L25ldC5naXQKK0Y6CWFyY2gveDg2
L25ldC8qCitGOglpbmNsdWRlL2xpbnV4L2lwLmgKK0Y6CWluY2x1ZGUvbGludXgvaXB2NioKK0Y6
CWluY2x1ZGUvbmV0L2ZpYioKK0Y6CWluY2x1ZGUvbmV0L2lwKgorRjoJaW5jbHVkZS9uZXQvcm91
dGUuaAorRjoJbmV0L2lwdjQvCitGOgluZXQvaXB2Ni8KKworTkVUV09SS0lORyBbTEFCRUxFRF0g
KE5ldExhYmVsLCBMYWJlbGVkIElQc2VjLCBTRUNNQVJLKQorTToJUGF1bCBNb29yZSA8cGF1bEBw
YXVsLW1vb3JlLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXNlY3Vy
aXR5LW1vZHVsZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9naXRo
dWIuY29tL25ldGxhYmVsCitGOglEb2N1bWVudGF0aW9uL25ldGxhYmVsLworRjoJaW5jbHVkZS9u
ZXQvY2FsaXBzby5oCitGOglpbmNsdWRlL25ldC9jaXBzb19pcHY0LmgKK0Y6CWluY2x1ZGUvbmV0
L25ldGxhYmVsLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9uZXRmaWx0ZXIveHRfQ09OTlNFQ01B
UksuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L25ldGZpbHRlci94dF9TRUNNQVJLLmgKK0Y6CW5l
dC9pcHY0L2NpcHNvX2lwdjQuYworRjoJbmV0L2lwdjYvY2FsaXBzby5jCitGOgluZXQvbmV0Zmls
dGVyL3h0X0NPTk5TRUNNQVJLLmMKK0Y6CW5ldC9uZXRmaWx0ZXIveHRfU0VDTUFSSy5jCitGOglu
ZXQvbmV0bGFiZWwvCisKK05FVFdPUktJTkcgW01BQ1NFQ10KK006CVNhYnJpbmEgRHVicm9jYSA8
c2RAcXVlYXN5c25haWwubmV0PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9uZXQvbWFjc2VjLmMKK0Y6CWluY2x1ZGUvbmV0L21hY3NlYy5oCitG
OglpbmNsdWRlL3VhcGkvbGludXgvaWZfbWFjc2VjLmgKK0s6CW1hY3NlYworSzoJXGJtZG9fCisK
K05FVFdPUktJTkcgW01QVENQXQorTToJTWF0dGhpZXUgQmFlcnRzIDxtYXR0dGJlQGtlcm5lbC5v
cmc+CitNOglNYXQgTWFydGluZWF1IDxtYXJ0aW5lYXVAa2VybmVsLm9yZz4KK1I6CUdlbGlhbmcg
VGFuZyA8Z2VsaWFuZ0BrZXJuZWwub3JnPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJ
bXB0Y3BAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitXOglodHRwczovL2dpdGh1Yi5j
b20vbXVsdGlwYXRoLXRjcC9tcHRjcF9uZXQtbmV4dC93aWtpCitCOglodHRwczovL2dpdGh1Yi5j
b20vbXVsdGlwYXRoLXRjcC9tcHRjcF9uZXQtbmV4dC9pc3N1ZXMKK1Q6CWdpdCBodHRwczovL2dp
dGh1Yi5jb20vbXVsdGlwYXRoLXRjcC9tcHRjcF9uZXQtbmV4dC5naXQgZXhwb3J0LW5ldAorVDoJ
Z2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9tdWx0aXBhdGgtdGNwL21wdGNwX25ldC1uZXh0LmdpdCBl
eHBvcnQKK0Y6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9tcHRjcF9wbS55YW1sCitGOglE
b2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbXB0Y3AqLnJzdAorRjoJaW5jbHVkZS9uZXQvbXB0Y3Au
aAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvbXB0Y3AuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4
L21wdGNwKi5oCitGOgluZXQvbXB0Y3AvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYv
Ki8qbXB0Y3AqLltjaF0KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9tcHRjcC8KKwor
TkVUV09SS0lORyBbU1J2Nl0KK006CUFuZHJlYSBNYXllciA8YW5kcmVhLm1heWVyQHVuaXJvbWEy
Lml0PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdp
dDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9uZXRkZXYvbmV0Lmdp
dAorRjoJaW5jbHVkZS9saW51eC9zZWc2KgorRjoJaW5jbHVkZS9uZXQvc2VnNioKK0Y6CWluY2x1
ZGUvdWFwaS9saW51eC9zZWc2KgorRjoJbmV0L2lwdjYvc2VnNioKK0Y6CXRvb2xzL3Rlc3Rpbmcv
c2VsZnRlc3RzL25ldC9zcnY2KgorCitORVRXT1JLSU5HIFtUQ1BdCitNOglFcmljIER1bWF6ZXQg
PGVkdW1hemV0QGdvb2dsZS5jb20+CitNOglOZWFsIENhcmR3ZWxsIDxuY2FyZHdlbGxAZ29vZ2xl
LmNvbT4KK1I6CUt1bml5dWtpIEl3YXNoaW1hIDxrdW5peXVAYW1hem9uLmNvbT4KK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29y
a2luZy9uZXRfY2FjaGVsaW5lcy90Y3Bfc29jay5yc3QKK0Y6CWluY2x1ZGUvbGludXgvdGNwLmgK
K0Y6CWluY2x1ZGUvbmV0L3RjcC5oCitGOglpbmNsdWRlL3RyYWNlL2V2ZW50cy90Y3AuaAorRjoJ
aW5jbHVkZS91YXBpL2xpbnV4L3RjcC5oCitGOgluZXQvaXB2NC9pbmV0X2Nvbm5lY3Rpb25fc29j
ay5jCitGOgluZXQvaXB2NC9pbmV0X2hhc2h0YWJsZXMuYworRjoJbmV0L2lwdjQvaW5ldF90aW1l
d2FpdF9zb2NrLmMKK0Y6CW5ldC9pcHY0L3N5bmNvb2tpZXMuYworRjoJbmV0L2lwdjQvdGNwKi5j
CitGOgluZXQvaXB2Ni9pbmV0Nl9jb25uZWN0aW9uX3NvY2suYworRjoJbmV0L2lwdjYvaW5ldDZf
aGFzaHRhYmxlcy5jCitGOgluZXQvaXB2Ni9zeW5jb29raWVzLmMKK0Y6CW5ldC9pcHY2L3RjcCou
YworCitORVRXT1JLSU5HIFtUTFNdCitNOglCb3JpcyBQaXNtZW5ueSA8Ym9yaXNwQG52aWRpYS5j
b20+CitNOglKb2huIEZhc3RhYmVuZCA8am9obi5mYXN0YWJlbmRAZ21haWwuY29tPgorTToJSmFr
dWIgS2ljaW5za2kgPGt1YmFAa2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvbmV0L3Rscy5oCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvdGxzLmgKK0Y6CW5ldC90bHMvKgorCitORVRXT1JLSU5HIFtTT0NLRVRTXQorTToJRXJpYyBE
dW1hemV0IDxlZHVtYXpldEBnb29nbGUuY29tPgorTToJS3VuaXl1a2kgSXdhc2hpbWEgPGt1bml5
dUBhbWF6b24uY29tPgorTToJUGFvbG8gQWJlbmkgPHBhYmVuaUByZWRoYXQuY29tPgorTToJV2ls
bGVtIGRlIEJydWlqbiA8d2lsbGVtYkBnb29nbGUuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJaW5j
bHVkZS9saW51eC9zb2NrX2RpYWcuaAorRjoJaW5jbHVkZS9saW51eC9zb2NrZXQuaAorRjoJaW5j
bHVkZS9saW51eC9zb2NrcHRyLmgKK0Y6CWluY2x1ZGUvbmV0L3NvY2suaAorRjoJaW5jbHVkZS9u
ZXQvc29ja19yZXVzZXBvcnQuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3NvY2tldC5oCitGOglu
ZXQvY29yZS8qc29jayoKK0Y6CW5ldC9jb3JlL3NjbS5jCitGOgluZXQvc29ja2V0LmMKKworTkVU
V09SS0lORyBbVU5JWCBTT0NLRVRTXQorTToJS3VuaXl1a2kgSXdhc2hpbWEgPGt1bml5dUBhbWF6
b24uY29tPgorUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9uZXQvYWZfdW5peC5oCitGOglpbmNs
dWRlL25ldC9uZXRucy91bml4LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC91bml4X2RpYWcuaAor
RjoJbmV0L3VuaXgvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvYWZfdW5peC8KKwor
TkVUWEVOICgxLzEwKSBHYkUgU1VQUE9SVAorTToJTWFuaXNoIENob3ByYSA8bWFuaXNoY0BtYXJ2
ZWxsLmNvbT4KK006CVJhaHVsIFZlcm1hIDxyYWh1bHZAbWFydmVsbC5jb20+CitNOglHUi1MaW51
eC1OSUMtRGV2QG1hcnZlbGwuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvbmV0eGVuLworCitORVRfRkFJ
TE9WRVIgTU9EVUxFCitNOglTcmlkaGFyIFNhbXVkcmFsYSA8c3JpZGhhci5zYW11ZHJhbGFAaW50
ZWwuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1
bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2ZhaWxvdmVyLnJzdAorRjoJZHJpdmVycy9uZXQvbmV0
X2ZhaWxvdmVyLmMKK0Y6CWluY2x1ZGUvbmV0L25ldF9mYWlsb3Zlci5oCisKK05FWFRIT1AKK006
CURhdmlkIEFoZXJuIDxkc2FoZXJuQGtlcm5lbC5vcmc+CitMOgluZXRkZXZAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL25ldC9uZXRucy9uZXh0aG9wLmgKK0Y6CWlu
Y2x1ZGUvbmV0L25leHRob3AuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L25leHRob3AuaAorRjoJ
bmV0L2lwdjQvbmV4dGhvcC5jCisKK05GQyBTVUJTWVNURU0KK006CUtyenlzenRvZiBLb3psb3dz
a2kgPGtyemtAa2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvbmZjLworRjoJ
ZHJpdmVycy9uZmMvCitGOglpbmNsdWRlL25ldC9uZmMvCitGOglpbmNsdWRlL3VhcGkvbGludXgv
bmZjLmgKK0Y6CW5ldC9uZmMvCisKK05GQyBWSVJUVUFMIE5DSSBERVZJQ0UgRFJJVkVSCitNOglC
b25nc3UgSmVvbiA8Ym9uZ3N1Lmplb25Ac2Ftc3VuZy5jb20+CitMOgluZXRkZXZAdmdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbmZjL3ZpcnR1YWxfbmNpZGV2LmMKK0Y6
CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25jaS8KKworTkZTLCBTVU5SUEMsIEFORCBMT0NLRCBD
TElFTlRTCitNOglUcm9uZCBNeWtsZWJ1c3QgPHRyb25kbXlAa2VybmVsLm9yZz4KK006CUFubmEg
U2NodW1ha2VyIDxhbm5hQGtlcm5lbC5vcmc+CitMOglsaW51eC1uZnNAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitXOglodHRwOi8vY2xpZW50LmxpbnV4LW5mcy5vcmcKK1Q6CWdpdCBn
aXQ6Ly9naXQubGludXgtbmZzLm9yZy9wcm9qZWN0cy90cm9uZG15L2xpbnV4LW5mcy5naXQKK0Y6
CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbmZzLworRjoJZnMvbG9ja2QvCitGOglmcy9uZnMv
CitGOglmcy9uZnNfY29tbW9uLworRjoJaW5jbHVkZS9saW51eC9sb2NrZC8KK0Y6CWluY2x1ZGUv
bGludXgvbmZzKgorRjoJaW5jbHVkZS9saW51eC9zdW5ycGMvCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvbmZzKgorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3N1bnJwYy8KK0Y6CW5ldC9zdW5ycGMvCisK
K05JTEZTMiBGSUxFU1lTVEVNCitNOglSeXVzdWtlIEtvbmlzaGkgPGtvbmlzaGkucnl1c3VrZUBn
bWFpbC5jb20+CitMOglsaW51eC1uaWxmc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAor
VzoJaHR0cHM6Ly9uaWxmcy5zb3VyY2Vmb3JnZS5pby8KK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5j
b20va29uaXMvbmlsZnMyLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9uaWxmczIu
cnN0CitGOglmcy9uaWxmczIvCitGOglpbmNsdWRlL3RyYWNlL2V2ZW50cy9uaWxmczIuaAorRjoJ
aW5jbHVkZS91YXBpL2xpbnV4L25pbGZzMl9hcGkuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L25p
bGZzMl9vbmRpc2suaAorCitOSU5KQSBTQ1NJLTMgLyBOSU5KQSBTQ1NJLTMyQmkgKDE2Yml0L0Nh
cmRCdXMpIFBDTUNJQSBTQ1NJIEhPU1QgQURBUFRFUiBEUklWRVIKK006CVlPS09UQSBIaXJvc2hp
IDx5b2tvdGFAbmV0bGFiLmlzLnRzdWt1YmEuYWMuanA+CitTOglNYWludGFpbmVkCitXOglodHRw
Oi8vd3d3Lm5ldGxhYi5pcy50c3VrdWJhLmFjLmpwL355b2tvdGEvaXp1bWkvbmluamEvCitGOglE
b2N1bWVudGF0aW9uL3Njc2kvTmluamFTQ1NJLnJzdAorRjoJZHJpdmVycy9zY3NpL3BjbWNpYS9u
c3BfKgorCitOSU5KQSBTQ1NJLTMyQmkvVURFIFBDSS9DQVJEQlVTIFNDU0kgSE9TVCBBREFQVEVS
IERSSVZFUgorTToJR09UTyBNYXNhbm9yaSA8Z290b21AZGViaWFuLm9yLmpwPgorTToJWU9LT1RB
IEhpcm9zaGkgPHlva290YUBuZXRsYWIuaXMudHN1a3ViYS5hYy5qcD4KK1M6CU1haW50YWluZWQK
K1c6CWh0dHA6Ly93d3cubmV0bGFiLmlzLnRzdWt1YmEuYWMuanAvfnlva290YS9penVtaS9uaW5q
YS8KK0Y6CURvY3VtZW50YXRpb24vc2NzaS9OaW5qYVNDU0kucnN0CitGOglkcml2ZXJzL3Njc2kv
bnNwMzIqCisKK05JTlRFTkRPIEhJRCBEUklWRVIKK006CURhbmllbCBKLiBPZ29yY2hvY2sgPGRq
b2dvcmNob2NrQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9oaWQvaGlkLW5pbnRlbmRvKgorCitOSU9TMiBBUkNISVRF
Q1RVUkUKK006CURpbmggTmd1eWVuIDxkaW5ndXllbkBrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9k
aW5ndXllbi9saW51eC5naXQKK0Y6CWFyY2gvbmlvczIvCisKK05JVFJPIEVOQ0xBVkVTIChORSkK
K006CUFsZXhhbmRydSBDaW9ib3RhcnUgPGFsY2lvYUBhbWF6b24uY29tPgorUjoJVGhlIEFXUyBO
aXRybyBFbmNsYXZlcyBUZWFtIDxhd3Mtbml0cm8tZW5jbGF2ZXMtZGV2ZWxAYW1hem9uLmNvbT4K
K0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6
Ly9hd3MuYW1hem9uLmNvbS9lYzIvbml0cm8vbml0cm8tZW5jbGF2ZXMvCitGOglEb2N1bWVudGF0
aW9uL3ZpcnQvbmVfb3ZlcnZpZXcucnN0CitGOglkcml2ZXJzL3ZpcnQvbml0cm9fZW5jbGF2ZXMv
CitGOglpbmNsdWRlL2xpbnV4L25pdHJvX2VuY2xhdmVzLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51
eC9uaXRyb19lbmNsYXZlcy5oCitGOglzYW1wbGVzL25pdHJvX2VuY2xhdmVzLworCitOSVRSTyBT
RUNVUkUgTU9EVUxFIChOU00pCitNOglBbGV4YW5kZXIgR3JhZiA8Z3JhZkBhbWF6b24uY29tPgor
UjoJVGhlIEFXUyBOaXRybyBFbmNsYXZlcyBUZWFtIDxhd3Mtbml0cm8tZW5jbGF2ZXMtZGV2ZWxA
YW1hem9uLmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVzoJaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9lYzIvbml0cm8vbml0cm8tZW5jbGF2ZXMvCitG
Oglkcml2ZXJzL21pc2MvbnNtLmMKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9uc20uaAorCitOT0ha
LCBEWU5USUNLUyBTVVBQT1JUCitNOglBbm5hLU1hcmlhIEJlaG5zZW4gPGFubmEtbWFyaWFAbGlu
dXRyb25peC5kZT4KK006CUZyZWRlcmljIFdlaXNiZWNrZXIgPGZyZWRlcmljQGtlcm5lbC5vcmc+
CitNOglJbmdvIE1vbG5hciA8bWluZ29Aa2VybmVsLm9yZz4KK006CVRob21hcyBHbGVpeG5lciA8
dGdseEBsaW51dHJvbml4LmRlPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC90aXAvdGlwLmdpdCB0aW1lcnMvbm9oegorRjoJaW5jbHVkZS9saW51eC9zY2hlZC9u
b2h6LmgKK0Y6CWluY2x1ZGUvbGludXgvdGljay5oCitGOglrZXJuZWwvdGltZS90aWNrKi4qCisK
K05PS0lBIE45MDAgQ0FNRVJBIFNVUFBPUlQgKEVUOEVLOCBTRU5TT1IsIEFENTgyMCBGT0NVUykK
K006CVBhdmVsIE1hY2hlayA8cGF2ZWxAa2VybmVsLm9yZz4KK006CVNha2FyaSBBaWx1cyA8c2Fr
YXJpLmFpbHVzQGlraS5maT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9h
ZGksYWQ1ODIwLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2FkNTgyMC5jCitGOglkcml2ZXJz
L21lZGlhL2kyYy9ldDhlazgKKworTk9LSUEgTjkwMCBQT1dFUiBTVVBQTFkgRFJJVkVSUworUjoJ
UGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KK0Y6CWRyaXZlcnMvcG93ZXIvc3VwcGx5L2Jx
MjQxNXhfY2hhcmdlci5jCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI3eHh4X2JhdHRlcnku
YworRjoJZHJpdmVycy9wb3dlci9zdXBwbHkvYnEyN3h4eF9iYXR0ZXJ5X2kyYy5jCitGOglkcml2
ZXJzL3Bvd2VyL3N1cHBseS9pc3AxNzA0X2NoYXJnZXIuYworRjoJZHJpdmVycy9wb3dlci9zdXBw
bHkvcng1MV9iYXR0ZXJ5LmMKK0Y6CWluY2x1ZGUvbGludXgvcG93ZXIvYnEyNDE1eF9jaGFyZ2Vy
LmgKK0Y6CWluY2x1ZGUvbGludXgvcG93ZXIvYnEyN3h4eF9iYXR0ZXJ5LmgKKworTk9MSUJDIEhF
QURFUiBGSUxFCitNOglXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4KK006CVRob21hcyBXZWnDn3Nj
aHVoIDxsaW51eEB3ZWlzc3NjaHVoLm5ldD4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbm9saWJjL2xpbnV4LW5vbGli
Yy5naXQKK0Y6CXRvb2xzL2luY2x1ZGUvbm9saWJjLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVz
dHMvbm9saWJjLworCitOT1ZBVEVLIE5WVC1UUyBJMkMgVE9VQ0hTQ1JFRU4gRFJJVkVSCitNOglI
YW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgtaW5wdXRAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvaW5wdXQvdG91Y2hzY3JlZW4vbm92YXRlayxudnQtdHMueWFtbAorRjoJZHJpdmVycy9p
bnB1dC90b3VjaHNjcmVlbi9ub3ZhdGVrLW52dC10cy5jCisKK05TREVQUworTToJTWF0dGhpYXMg
TWFlbm5pY2ggPG1hZW5uaWNoQGdvb2dsZS5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2NvcmUtYXBpL3N5bWJvbC1uYW1lc3BhY2VzLnJzdAorRjoJc2NyaXB0cy9uc2RlcHMK
KworTlRCIEFNRCBEUklWRVIKK006CVNoeWFtIFN1bmRhciBTIEsgPFNoeWFtLXN1bmRhci5TLWtA
YW1kLmNvbT4KK0w6CW50YkBsaXN0cy5saW51eC5kZXYKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVy
cy9udGIvaHcvYW1kLworCitOVEIgRFJJVkVSIENPUkUKK006CUpvbiBNYXNvbiA8amRtYXNvbkBr
dWR6dS51cz4KK006CURhdmUgSmlhbmcgPGRhdmUuamlhbmdAaW50ZWwuY29tPgorTToJQWxsZW4g
SHViYmUgPGFsbGVuYmhAZ21haWwuY29tPgorTDoJbnRiQGxpc3RzLmxpbnV4LmRldgorUzoJU3Vw
cG9ydGVkCitXOglodHRwczovL2dpdGh1Yi5jb20vam9ubWFzb24vbnRiL3dpa2kKK1Q6CWdpdCBo
dHRwczovL2dpdGh1Yi5jb20vam9ubWFzb24vbnRiLmdpdAorRjoJZHJpdmVycy9uZXQvbnRiX25l
dGRldi5jCitGOglkcml2ZXJzL250Yi8KK0Y6CWRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9u
cy9wY2ktZXBmLSpudGIuYworRjoJaW5jbHVkZS9saW51eC9udGIuaAorRjoJaW5jbHVkZS9saW51
eC9udGJfdHJhbnNwb3J0LmgKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL250Yi8KKworTlRC
IElOVEVMIERSSVZFUgorTToJRGF2ZSBKaWFuZyA8ZGF2ZS5qaWFuZ0BpbnRlbC5jb20+CitMOglu
dGJAbGlzdHMubGludXguZGV2CitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9k
YXZlamlhbmcvbGludXgvd2lraQorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXZlamlhbmcv
bGludXguZ2l0CitGOglkcml2ZXJzL250Yi9ody9pbnRlbC8KKworTlRGUzMgRklMRVNZU1RFTQor
TToJS29uc3RhbnRpbiBLb21hcm92IDxhbG1hei5hbGV4YW5kcm92aWNoQHBhcmFnb24tc29mdHdh
cmUuY29tPgorTDoJbnRmczNAbGlzdHMubGludXguZGV2CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6
Ly93d3cucGFyYWdvbi1zb2Z0d2FyZS5jb20vCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL1Bh
cmFnb24tU29mdHdhcmUtR3JvdXAvbGludXgtbnRmczMuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Zp
bGVzeXN0ZW1zL250ZnMzLnJzdAorRjoJZnMvbnRmczMvCisKK05UU1lOQyBTWU5DSFJPTklaQVRJ
T04gUFJJTUlUSVZFIERSSVZFUgorTToJRWxpemFiZXRoIEZpZ3VyYSA8emZpZ3VyYUBjb2Rld2Vh
dmVycy5jb20+CitMOgl3aW5lLWRldmVsQHdpbmVocS5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9j
dW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL250c3luYy5yc3QKK0Y6CWRyaXZlcnMvbWlzYy9udHN5
bmMuYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L250c3luYy5oCitGOgl0b29scy90ZXN0aW5nL3Nl
bGZ0ZXN0cy9kcml2ZXJzL250c3luYy8KKworTlVCVVMgU1VCU1lTVEVNCitNOglGaW5uIFRoYWlu
IDxmdGhhaW5AbGludXgtbTY4ay5vcmc+CitMOglsaW51eC1tNjhrQGxpc3RzLmxpbnV4LW02OGsu
b3JnCitTOglNYWludGFpbmVkCitGOglhcmNoLyovaW5jbHVkZS9hc20vbnVidXMuaAorRjoJZHJp
dmVycy9udWJ1cy8KK0Y6CWluY2x1ZGUvbGludXgvbnVidXMuaAorRjoJaW5jbHVkZS91YXBpL2xp
bnV4L251YnVzLmgKKworTlZJRElBIChyaXZhZmIgYW5kIG52aWRpYWZiKSBGUkFNRUJVRkZFUiBE
UklWRVIKK006CUFudG9uaW5vIERhcGxhcyA8YWRhcGxhc0BnbWFpbC5jb20+CitMOglsaW51eC1m
YmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdmlkZW8vZmJk
ZXYvbnZpZGlhLworRjoJZHJpdmVycy92aWRlby9mYmRldi9yaXZhLworCitOVklESUEgV01JIEVD
IEJBQ0tMSUdIVCBEUklWRVIKK006CURhbmllbCBEYWRhcCA8ZGRhZGFwQG52aWRpYS5jb20+CitM
OglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglk
cml2ZXJzL3BsYXRmb3JtL3g4Ni9udmlkaWEtd21pLWVjLWJhY2tsaWdodC5jCitGOglpbmNsdWRl
L2xpbnV4L3BsYXRmb3JtX2RhdGEveDg2L252aWRpYS13bWktZWMtYmFja2xpZ2h0LmgKKworTlZN
IEVYUFJFU1MgRFJJVkVSCitNOglLZWl0aCBCdXNjaCA8a2J1c2NoQGtlcm5lbC5vcmc+CitNOglK
ZW5zIEF4Ym9lIDxheGJvZUBmYi5jb20+CitNOglDaHJpc3RvcGggSGVsbHdpZyA8aGNoQGxzdC5k
ZT4KK006CVNhZ2kgR3JpbWJlcmcgPHNhZ2lAZ3JpbWJlcmcubWU+CitMOglsaW51eC1udm1lQGxp
c3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL2dpdC5pbmZyYWRlYWQu
b3JnL252bWUuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbnZtZS5naXQKK0Y6
CURvY3VtZW50YXRpb24vbnZtZS8KK0Y6CWRyaXZlcnMvbnZtZS9jb21tb24vCitGOglkcml2ZXJz
L252bWUvaG9zdC8KK0Y6CWluY2x1ZGUvbGludXgvbnZtZS0qLmgKK0Y6CWluY2x1ZGUvbGludXgv
bnZtZS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvbnZtZV9pb2N0bC5oCisKK05WTSBFWFBSRVNT
IEZBQlJJQ1MgQVVUSEVOVElDQVRJT04KK006CUhhbm5lcyBSZWluZWNrZSA8aGFyZUBzdXNlLmRl
PgorTDoJbGludXgtbnZtZUBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRy
aXZlcnMvbnZtZS9ob3N0L2F1dGguYworRjoJZHJpdmVycy9udm1lL3RhcmdldC9hdXRoLmMKK0Y6
CWRyaXZlcnMvbnZtZS90YXJnZXQvZmFicmljcy1jbWQtYXV0aC5jCitGOglpbmNsdWRlL2xpbnV4
L252bWUtYXV0aC5oCisKK05WTSBFWFBSRVNTIEZDIFRSQU5TUE9SVCBEUklWRVJTCitNOglKYW1l
cyBTbWFydCA8amFtZXMuc21hcnRAYnJvYWRjb20uY29tPgorTDoJbGludXgtbnZtZUBsaXN0cy5p
bmZyYWRlYWQub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbnZtZS9ob3N0L2ZjLmMKK0Y6
CWRyaXZlcnMvbnZtZS90YXJnZXQvZmMuYworRjoJZHJpdmVycy9udm1lL3RhcmdldC9mY2xvb3Au
YworRjoJaW5jbHVkZS9saW51eC9udm1lLWZjLWRyaXZlci5oCitGOglpbmNsdWRlL2xpbnV4L252
bWUtZmMuaAorCitOVk0gRVhQUkVTUyBIQVJEV0FSRSBNT05JVE9SSU5HIFNVUFBPUlQKK006CUd1
ZW50ZXIgUm9lY2sgPGxpbnV4QHJvZWNrLXVzLm5ldD4KK0w6CWxpbnV4LW52bWVAbGlzdHMuaW5m
cmFkZWFkLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL252bWUvaG9zdC9od21vbi5jCisK
K05WTSBFWFBSRVNTIFRBUkdFVCBEUklWRVIKK006CUNocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0
LmRlPgorTToJU2FnaSBHcmltYmVyZyA8c2FnaUBncmltYmVyZy5tZT4KK006CUNoYWl0YW55YSBL
dWxrYXJuaSA8a2NoQG52aWRpYS5jb20+CitMOglsaW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5v
cmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL2dpdC5pbmZyYWRlYWQub3JnL252bWUuZ2l0CitU
OglnaXQgZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvbnZtZS5naXQKK0Y6CWRyaXZlcnMvbnZtZS90
YXJnZXQvCisKK05WTUVNIEZSQU1FV09SSworTToJU3Jpbml2YXMgS2FuZGFnYXRsYSA8c3JpbmlA
a2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3JpbmkvbnZtZW0uZ2l0CitGOglEb2N1bWVudGF0aW9u
L0FCSS9zdGFibGUvc3lzZnMtYnVzLW52bWVtCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvbnZtZW0vCitGOglkcml2ZXJzL252bWVtLworRjoJaW5jbHVkZS9kdC1iaW5kaW5n
cy9udm1lbS8KK0Y6CWluY2x1ZGUvbGludXgvbnZtZW0tY29uc3VtZXIuaAorRjoJaW5jbHVkZS9s
aW51eC9udm1lbS1wcm92aWRlci5oCisKK05YUCBCTFVFVE9PVEggV0lSRUxFU1MgRFJJVkVSUwor
TToJQW1pdGt1bWFyIEthcndhciA8YW1pdGt1bWFyLmthcndhckBueHAuY29tPgorTToJTmVlcmFq
IEthbGUgPG5lZXJhai5zYW5qYXlrYWxlQG54cC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2JsdWV0b290aC9ueHAsODh3ODk4Ny1i
dC55YW1sCitGOglkcml2ZXJzL2JsdWV0b290aC9idG54cHVhcnQuYworCitOWFAgQzQ1IFRKQTEx
WFggUEhZIERSSVZFUgorTToJQW5kcmVpIEJvdGlsYSA8YW5kcmVpLmJvdGlsYUBvc3MubnhwLmNv
bT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
bmV0L3BoeS9ueHAtYzQ1LXRqYTExeHgqCisKK05YUCBGU1BJIERSSVZFUgorTToJSGFuIFh1IDxo
YW4ueHVAbnhwLmNvbT4KK006CUhhaWJvIENoZW4gPGhhaWJvLmNoZW5AbnhwLmNvbT4KK1I6CVlv
Z2VzaCBHYXVyIDx5b2dlc2hnYXVyLjgzQGdtYWlsLmNvbT4KK0w6CWxpbnV4LXNwaUB2Z2VyLmtl
cm5lbC5vcmcKK0w6CWlteEBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLW54cC1mc3BpLnlhbWwKK0Y6CWRy
aXZlcnMvc3BpL3NwaS1ueHAtZnNwaS5jCisKK05YUCBGWEFTMjEwMDJDIERSSVZFUgorTToJUnVp
IE1pZ3VlbCBTaWx2YSA8cm1mcmZzQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9paW8vZ3lyb3Njb3BlL254cCxmeGFzMjEwMDJjLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2d5cm8v
ZnhhczIxMDAyYy5oCitGOglkcml2ZXJzL2lpby9neXJvL2Z4YXMyMTAwMmNfY29yZS5jCitGOglk
cml2ZXJzL2lpby9neXJvL2Z4YXMyMTAwMmNfaTJjLmMKK0Y6CWRyaXZlcnMvaWlvL2d5cm8vZnhh
czIxMDAyY19zcGkuYworCitOWFAgaS5NWCA3RC82U1gvNlVMLzkzIEFORCBWRjYxMCBBREMgRFJJ
VkVSCitNOglIYWlibyBDaGVuIDxoYWliby5jaGVuQG54cC5jb20+CitMOglsaW51eC1paW9Admdl
ci5rZXJuZWwub3JnCitMOglpbXhAbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy9mc2wsaW14N2QtYWRjLnlh
bWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vYWRjL2ZzbCx2ZjYx
MC1hZGMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMv
bnhwLGlteDkzLWFkYy55YW1sCitGOglkcml2ZXJzL2lpby9hZGMvaW14N2RfYWRjLmMKK0Y6CWRy
aXZlcnMvaWlvL2FkYy9pbXg5M19hZGMuYworRjoJZHJpdmVycy9paW8vYWRjL3ZmNjEwX2FkYy5j
CisKK05YUCBpLk1YIDhNIElTSSBEUklWRVIKK006CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQu
cGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21l
ZGlhL254cCxpbXg4LWlzaS55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL254cC9pbXg4
LWlzaS8KKworTlhQIGkuTVggOE1QIERXMTAwIFY0TDIgRFJJVkVSCitNOglYYXZpZXIgUm91bWVn
dWUgPHhhdmllci5yb3VtZWd1ZUBvc3MubnhwLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL254cCxkdzEwMC55YW1sCitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkv
bWVkaWEvZHJpdmVycy9kdzEwMC5yc3QKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbnhwL2R3
MTAwLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L2R3MTAwLmgKKworTlhQIGkuTVggOE1RIERDU1Mg
RFJJVkVSCitNOglMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBvc3MubnhwLmNvbT4K
K1I6CUx1Y2FzIFN0YWNoIDxsLnN0YWNoQHBlbmd1dHJvbml4LmRlPgorTDoJZHJpLWRldmVsQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFi
LmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvZGlzcGxheS9pbXgvbnhwLGlteDhtcS1kY3NzLnlhbWwKK0Y6CWRy
aXZlcnMvZ3B1L2RybS9pbXgvZGNzcy8KKworTlhQIGkuTVggOFFYUCBBREMgRFJJVkVSCitNOglD
YWkgSHVvcWluZyA8Y2FpLmh1b3FpbmdAbGludXguZGV2PgorTToJSGFpYm8gQ2hlbiA8aGFpYm8u
Y2hlbkBueHAuY29tPgorTDoJaW14QGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgtaWlvQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL2lpby9hZGMvbnhwLGlteDhxeHAtYWRjLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy9p
bXg4cXhwLWFkYy5jCisKK05YUCBpLk1YIDhRWFAvOFFNIEpQRUcgVjRMMiBEUklWRVIKK006CU1p
cmVsYSBSYWJ1bGVhIDxtaXJlbGEucmFidWxlYUBueHAuY29tPgorTDoJaW14QGxpc3RzLmxpbnV4
LmRldgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvbnhwLGlteDgtanBlZy55YW1s
CitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL254cC9pbXgtanBlZworCitOWFAgaS5NWCBDTE9D
SyBEUklWRVJTCitNOglBYmVsIFZlc2EgPGFiZWx2ZXNhQGtlcm5lbC5vcmc+CitSOglQZW5nIEZh
biA8cGVuZy5mYW5AbnhwLmNvbT4KK0w6CWxpbnV4LWNsa0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWlt
eEBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWJlbHZlc2EvbGludXguZ2l0IGNsay9pbXgK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9pbXgqCitGOglkcml2
ZXJzL2Nsay9pbXgvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL2lteCoKKworTlhQIFBG
ODEwMC9QRjgxMjFBL1BGODIwMCBQTUlDIFJFR1VMQVRPUiBERVZJQ0UgRFJJVkVSCitNOglKYWdh
biBUZWtpIDxqYWdhbkBhbWFydWxhc29sdXRpb25zLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3IvbnhwLHBmOHgwMC1yZWd1
bGF0b3IueWFtbAorRjoJZHJpdmVycy9yZWd1bGF0b3IvcGY4eDAwLXJlZ3VsYXRvci5jCisKK05Y
UCBQVE41MTUwQSBDQyBMT0dJQyBBTkQgRVhUQ09OIERSSVZFUgorTToJS3J6eXN6dG9mIEtvemxv
d3NraSA8a3J6a0BrZXJuZWwub3JnPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2V4dGNv
bi9leHRjb24tcHRuNTE1MC55YW1sCitGOglkcml2ZXJzL2V4dGNvbi9leHRjb24tcHRuNTE1MC5j
CisKK05YUCBTR1RMNTAwMCBEUklWRVIKK006CUZhYmlvIEVzdGV2YW0gPGZlc3RldmFtQGdtYWls
LmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL2ZzbCxzZ3RsNTAwMC55YW1s
CitGOglzb3VuZC9zb2MvY29kZWNzL3NndGw1MDAwKgorCitOWFAgU0pBMTEwNSBFVEhFUk5FVCBT
V0lUQ0ggRFJJVkVSCitNOglWbGFkaW1pciBPbHRlYW4gPG9sdGVhbnZAZ21haWwuY29tPgorTDoJ
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9u
ZXQvZHNhL3NqYTExMDUKK0Y6CWRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy1ueHAuYworCitOWFAg
VERBOTk4WCBEUk0gRFJJVkVSCitNOglSdXNzZWxsIEtpbmcgPGxpbnV4QGFybWxpbnV4Lm9yZy51
az4KK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQuYXJtbGludXgub3JnLnVrL35ybWsv
bGludXgtYXJtLmdpdCBkcm0tdGRhOTk4eC1kZXZlbAorVDoJZ2l0IGdpdDovL2dpdC5hcm1saW51
eC5vcmcudWsvfnJtay9saW51eC1hcm0uZ2l0IGRybS10ZGE5OTh4LWZpeGVzCitGOglkcml2ZXJz
L2dwdS9kcm0vYnJpZGdlL3RkYTk5OHhfZHJ2LmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvZGlz
cGxheS90ZGE5OTh4LmgKK0s6CSJueHAsdGRhOTk4eCIKKworTlhQIFRGQTk4NzkgRFJJVkVSCitN
OglQZXRlciBSb3NpbiA8cGVkYUBheGVudGlhLnNlPgorTDoJbGludXgtc291bmRAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvc291bmQvbnhwLHRmYTk4NzkueWFtbAorRjoJc291bmQvc29jL2NvZGVjcy90ZmE5ODc5Kgor
CitOWFAtTkNJIE5GQyBEUklWRVIKK1M6CU9ycGhhbgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL25ldC9uZmMvbnhwLG5jaS55YW1sCitGOglkcml2ZXJzL25mYy9ueHAtbmNp
CisKK05YUC9Hb29kaXggVEZBOTg5WCAoVEZBMSkgRFJJVkVSCitNOglTdGVwaGFuIEdlcmhvbGQg
PHN0ZXBoYW5AZ2VyaG9sZC5uZXQ+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9u
eHAsdGZhOTg5eC55YW1sCitGOglzb3VuZC9zb2MvY29kZWNzL3RmYTk4OXguYworCitOWlhULUtS
QUtFTjIgSEFSRFdBUkUgTU9OSVRPUklORyBEUklWRVIKK006CUpvbmFzIE1hbGFjbyA8am9uYXNA
cHJvdG9jdWJvLmlvPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL256eHQta3Jha2VuMi5yc3QKK0Y6CWRyaXZlcnMv
aHdtb24vbnp4dC1rcmFrZW4yLmMKKworTlpYVC1LUkFLRU4zIEhBUkRXQVJFIE1PTklUT1JJTkcg
RFJJVkVSCitNOglKb25hcyBNYWxhY28gPGpvbmFzQHByb3RvY3Viby5pbz4KK006CUFsZWtzYSBT
YXZpYyA8c2F2aWNhbGVrc2E4M0BnbWFpbC5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vbnp4dC1rcmFrZW4z
LnJzdAorRjoJZHJpdmVycy9od21vbi9uenh0LWtyYWtlbjMuYworCitPQkpBR0cKK006CUppcmkg
UGlya28gPGppcmlAcmVzbnVsbGkudXM+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CWluY2x1ZGUvbGludXgvb2JqYWdnLmgKK0Y6CWxpYi9vYmphZ2cuYworRjoJ
bGliL3Rlc3Rfb2JqYWdnLmMKKworT0JKUE9PTAorTToJTWF0dCBXdSA8d3VxaWFuZy5tYXR0QGJ5
dGVkYW5jZS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWluY2x1ZGUvbGludXgvb2JqcG9vbC5oCitG
OglsaWIvb2JqcG9vbC5jCitGOglsaWIvdGVzdF9vYmpwb29sLmMKKworT0JKVE9PTAorTToJSm9z
aCBQb2ltYm9ldWYgPGpwb2ltYm9lQGtlcm5lbC5vcmc+CitNOglQZXRlciBaaWpsc3RyYSA8cGV0
ZXJ6QGluZnJhZGVhZC5vcmc+CitTOglTdXBwb3J0ZWQKK0Y6CWluY2x1ZGUvbGludXgvb2JqdG9v
bCouaAorRjoJdG9vbHMvb2JqdG9vbC8KKworT0NFTE9UIEVUSEVSTkVUIFNXSVRDSCBEUklWRVIK
K006CVZsYWRpbWlyIE9sdGVhbiA8dmxhZGltaXIub2x0ZWFuQG54cC5jb20+CitNOglDbGF1ZGl1
IE1hbm9pbCA8Y2xhdWRpdS5tYW5vaWxAbnhwLmNvbT4KK006CUFsZXhhbmRyZSBCZWxsb25pIDxh
bGV4YW5kcmUuYmVsbG9uaUBib290bGluLmNvbT4KK006CVVOR0xpbnV4RHJpdmVyQG1pY3JvY2hp
cC5jb20KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVy
cy9uZXQvZHNhL29jZWxvdC8qCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjLworRjoJaW5j
bHVkZS9zb2MvbXNjYy9vY2Vsb3QqCitGOgluZXQvZHNhL3RhZ19vY2Vsb3QuYworRjoJbmV0L2Rz
YS90YWdfb2NlbG90XzgwMjFxLmMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMv
bmV0L29jZWxvdC8qCisKK09DRUxPVCBFWFRFUk5BTCBTV0lUQ0ggQ09OVFJPTAorTToJQ29saW4g
Rm9zdGVyIDxjb2xpbi5mb3N0ZXJAaW4tYWR2YW50YWdlLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC9tc2NjLG9jZWxvdC55YW1sCitG
Oglkcml2ZXJzL21mZC9vY2Vsb3QqCitGOglkcml2ZXJzL25ldC9kc2Evb2NlbG90L29jZWxvdF9l
eHQuYworRjoJaW5jbHVkZS9saW51eC9tZmQvb2NlbG90LmgKKworT0NYTCAoT3BlbiBDb2hlcmVu
dCBBY2NlbGVyYXRvciBQcm9jZXNzb3IgSW50ZXJmYWNlIE9wZW5DQVBJKSBEUklWRVIKK006CUZy
ZWRlcmljIEJhcnJhdCA8ZmJhcnJhdEBsaW51eC5pYm0uY29tPgorTToJQW5kcmV3IERvbm5lbGxh
biA8YWpkQGxpbnV4LmlibS5jb20+CitMOglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZwor
UzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvYWNjZWxlcmF0b3Jz
L29jeGwucnN0CitGOglhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcG52LW9jeGwuaAorRjoJYXJj
aC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L29jeGwuYworRjoJZHJpdmVycy9taXNjL29jeGwv
CitGOglpbmNsdWRlL21pc2Mvb2N4bCoKK0Y6CWluY2x1ZGUvdWFwaS9taXNjL29jeGwuaAorCitP
TUFQIEFVRElPIFNVUFBPUlQKK006CVBldGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVzaUBnbWFp
bC5jb20+CitNOglKYXJra28gTmlrdWxhIDxqYXJra28ubmlrdWxhQGJpdG1lci5jb20+CitMOgls
aW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglzb3VuZC9zb2MvdGkvbjgxMC5jCitGOglzb3VuZC9zb2MvdGkv
b21hcCoKK0Y6CXNvdW5kL3NvYy90aS9yeDUxLmMKK0Y6CXNvdW5kL3NvYy90aS9zZG1hLXBjbS4q
CisKK09NQVAgQ0xPQ0sgRlJBTUVXT1JLIFNVUFBPUlQKK006CVBhdWwgV2FsbXNsZXkgPHBhdWxA
cHdzYW4uY29tPgorTDoJbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWFyY2gvYXJtLypvbWFwKi8qY2xvY2sqCisKK09NQVAgREVWSUNFIFRSRUUgU1VQUE9SVAor
TToJVG9ueSBMaW5kZ3JlbiA8dG9ueUBhdG9taWRlLmNvbT4KK0w6CWxpbnV4LW9tYXBAdmdlci5r
ZXJuZWwub3JnCitMOglkZXZpY2V0cmVlQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJYXJjaC9hcm0vYm9vdC9kdHMvdGkvb21hcC8KKworT01BUCBESVNQTEFZIFNVQlNZU1RFTSBh
bmQgRlJBTUVCVUZGRVIgU1VQUE9SVCAoRFNTMikKK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJuZWwu
b3JnCitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJRG9jdW1l
bnRhdGlvbi9hcmNoL2FybS9vbWFwL2Rzcy5yc3QKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvb21h
cDIvCisKK09NQVAgRlJBTUVCVUZGRVIgU1VQUE9SVAorTDoJbGludXgtZmJkZXZAdmdlci5rZXJu
ZWwub3JnCitMOglsaW51eC1vbWFwQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2
ZXJzL3ZpZGVvL2ZiZGV2L29tYXAvCisKK09NQVAgR0VORVJBTCBQVVJQT1NFIE1FTU9SWSBDT05U
Uk9MTEVSIFNVUFBPUlQKK006CVJvZ2VyIFF1YWRyb3MgPHJvZ2VycUBrZXJuZWwub3JnPgorTToJ
VG9ueSBMaW5kZ3JlbiA8dG9ueUBhdG9taWRlLmNvbT4KK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglhcmNoL2FybS9tYWNoLW9tYXAyLypncG1jKgorRjoJ
ZHJpdmVycy9tZW1vcnkvb21hcC1ncG1jLmMKKworT01BUCBHUElPIERSSVZFUgorTToJR3J5Z29y
aWkgU3RyYXNoa28gPGdyeWdvcmlpLnN0cmFzaGtvQHRpLmNvbT4KK006CVNhbnRvc2ggU2hpbGlt
a2FyIDxzc2FudG9zaEBrZXJuZWwub3JnPgorTToJS2V2aW4gSGlsbWFuIDxraGlsbWFuQGtlcm5l
bC5vcmc+CitMOglsaW51eC1vbWFwQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vdGksb21hcC1ncGlvLnlhbWwK
K0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLW9tYXAuYworCitPTUFQIEhBUkRXQVJFIFNQSU5MT0NLIFNV
UFBPUlQKK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZl
cnMvaHdzcGlubG9jay9vbWFwX2h3c3BpbmxvY2suYworCitPTUFQIEhTIE1NQyBTVVBQT1JUCitM
OglsaW51eC1tbWNAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1vbWFwQHZnZXIua2VybmVsLm9y
ZworUzoJT3JwaGFuCitGOglkcml2ZXJzL21tYy9ob3N0L29tYXBfaHNtbWMuYworCitPTUFQIEhX
TU9EIERBVEEKK006CVBhdWwgV2FsbXNsZXkgPHBhdWxAcHdzYW4uY29tPgorTDoJbGludXgtb21h
cEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvYXJtL21hY2gtb21hcDIv
b21hcF9od21vZCpkYXRhKgorCitPTUFQIEhXTU9EIFNVUFBPUlQKK006CVBhdWwgV2FsbXNsZXkg
PHBhdWxAcHdzYW4uY29tPgorTDoJbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWFyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZC4qCisKK09NQVAgSTJDIERS
SVZFUgorTToJVmlnbmVzaCBSIDx2aWduZXNockB0aS5jb20+CitMOglsaW51eC1vbWFwQHZnZXIu
a2VybmVsLm9yZworTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy90aSxvbWFwNC1pMmMueWFt
bAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1vbWFwLmMKKworT01BUCBNTUMgU1VQUE9SVAor
TToJQWFybyBLb3NraW5lbiA8YWFyby5rb3NraW5lbkBpa2kuZmk+CitMOglsaW51eC1vbWFwQHZn
ZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL21tYy9ob3N0L29tYXAuYwor
CitPTUFQIFBPV0VSIE1BTkFHRU1FTlQgU1VQUE9SVAorTToJS2V2aW4gSGlsbWFuIDxraGlsbWFu
QGtlcm5lbC5vcmc+CitMOglsaW51eC1vbWFwQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJYXJjaC9hcm0vKm9tYXAqLypwbSoKK0Y6CWRyaXZlcnMvY3B1ZnJlcS9vbWFwLWNwdWZy
ZXEuYworCitPTUFQIFBPV0VSRE9NQUlOIFNPQyBBREFQVEFUSU9OIExBWUVSIFNVUFBPUlQKK006
CVBhdWwgV2FsbXNsZXkgPHBhdWxAcHdzYW4uY29tPgorTDoJbGludXgtb21hcEB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvYXJtL21hY2gtb21hcDIvcHJtKgorCitPTUFQ
IFJBTkRPTSBOVU1CRVIgR0VORVJBVE9SIFNVUFBPUlQKK006CURlZXBhayBTYXhlbmEgPGRzYXhl
bmFAcGxleGl0eS5uZXQ+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2NoYXIvaHdfcmFuZG9t
L29tYXAtcm5nLmMKKworT01BUCBVU0IgU1VQUE9SVAorTDoJbGludXgtdXNiQHZnZXIua2VybmVs
Lm9yZworTDoJbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJYXJjaC9h
cm0vKm9tYXAqL3VzYioKK0Y6CWRyaXZlcnMvdXNiLyovKm9tYXAqCisKK09NQVAvTkVXRkxPVyBO
QU5PQk9ORSBNQUNISU5FIFNVUFBPUlQKK006CU1hcmsgSmFja3NvbiA8bXBmakBuZXdmbG93LmNv
LnVrPgorTDoJbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWFy
Y2gvYXJtL2Jvb3QvZHRzL3RpL29tYXAvYW0zMzV4LW5hbm8uZHRzCisKK09NQVAxIFNVUFBPUlQK
K006CUFhcm8gS29za2luZW4gPGFhcm8ua29za2luZW5AaWtpLmZpPgorTToJSmFudXN6IEtyenlz
enRvZmlrIDxqbWtyenlzenRAZ21haWwuY29tPgorUjoJVG9ueSBMaW5kZ3JlbiA8dG9ueUBhdG9t
aWRlLmNvbT4KK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitR
OglodHRwOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1vbWFwL2xpc3QvCitU
OglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RtbGlu
ZC9saW51eC1vbWFwLmdpdAorRjoJYXJjaC9hcm0vY29uZmlncy9vbWFwMV9kZWZjb25maWcKK0Y6
CWFyY2gvYXJtL21hY2gtb21hcDEvCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLW9tYXAuYwor
RjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2Ftcy1kZWx0YS1maXEuaAorRjoJaW5jbHVk
ZS9saW51eC9wbGF0Zm9ybV9kYXRhL2kyYy1vbWFwLmgKKworT01BUDIrIFNVUFBPUlQKK006CUFh
cm8gS29za2luZW4gPGFhcm8ua29za2luZW5AaWtpLmZpPgorTToJQW5kcmVhcyBLZW1uYWRlIDxh
bmRyZWFzQGtlbW5hZGUuaW5mbz4KK006CUtldmluIEhpbG1hbiA8a2hpbG1hbkBiYXlsaWJyZS5j
b20+CitNOglSb2dlciBRdWFkcm9zIDxyb2dlcnFAa2VybmVsLm9yZz4KK006CVRvbnkgTGluZGdy
ZW4gPHRvbnlAYXRvbWlkZS5jb20+CitMOglsaW51eC1vbWFwQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVzoJaHR0cDovL2xpbnV4Lm9tYXAuY29tLworUToJaHR0cDovL3BhdGNod29y
ay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtb21hcC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90bWxpbmQvbGludXgtb21hcC5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0vdGkvb21hcC55YW1sCitG
OglhcmNoL2FybS9jb25maWdzL29tYXAycGx1c19kZWZjb25maWcKK0Y6CWFyY2gvYXJtL21hY2gt
b21hcDIvCitGOglkcml2ZXJzL2J1cy9vbWFwKi5bY2hdCitGOglkcml2ZXJzL2J1cy90aS1zeXNj
LmMKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLXRwczY1MjE5LmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nl
cy9pMmMtb21hcC5jCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLW9tYXAtaW50Yy5jCitGOglkcml2
ZXJzL21mZC8qb21hcCouYworRjoJZHJpdmVycy9tZmQvbWVuZWxhdXMuYworRjoJZHJpdmVycy9t
ZmQvcGFsbWFzLmMKK0Y6CWRyaXZlcnMvbWZkL3RwczY1MjE3LmMKK0Y6CWRyaXZlcnMvbWZkL3Rw
czY1MjE4LmMKK0Y6CWRyaXZlcnMvbWZkL3RwczY1MjE5LmMKK0Y6CWRyaXZlcnMvbWZkL3RwczY1
OTEwLmMKK0Y6CWRyaXZlcnMvbWZkL3R3bC1jb3JlLltjaF0KK0Y6CWRyaXZlcnMvbWZkL3R3bDQw
MzAqLmMKK0Y6CWRyaXZlcnMvbWZkL3R3bDYwMzAqLmMKK0Y6CWRyaXZlcnMvbWZkL3R3bDYwNDAq
LmMKK0Y6CWRyaXZlcnMvcmVndWxhdG9yL3BhbG1hcy1yZWd1bGF0b3IqLmMKK0Y6CWRyaXZlcnMv
cmVndWxhdG9yL3BiaWFzLXJlZ3VsYXRvci5jCitGOglkcml2ZXJzL3JlZ3VsYXRvci90cHM2NTIx
Ny1yZWd1bGF0b3IuYworRjoJZHJpdmVycy9yZWd1bGF0b3IvdHBzNjUyMTgtcmVndWxhdG9yLmMK
K0Y6CWRyaXZlcnMvcmVndWxhdG9yL3RwczY1MjE5LXJlZ3VsYXRvci5jCitGOglkcml2ZXJzL3Jl
Z3VsYXRvci90cHM2NTkxMC1yZWd1bGF0b3IuYworRjoJZHJpdmVycy9yZWd1bGF0b3IvdHdsLXJl
Z3VsYXRvci5jCitGOglkcml2ZXJzL3JlZ3VsYXRvci90d2w2MDMwLXJlZ3VsYXRvci5jCitGOglp
bmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEvaTJjLW9tYXAuaAorRjoJaW5jbHVkZS9saW51eC9w
bGF0Zm9ybV9kYXRhL3RpLXN5c2MuaAorCitPTUZTIEZJTEVTWVNURU0KK006CUJvYiBDb3BlbGFu
ZCA8bWVAYm9iY29wZWxhbmQuY29tPgorTDoJbGludXgta2FybWEtZGV2ZWxAbGlzdHMuc291cmNl
Zm9yZ2UubmV0CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL29t
ZnMucnN0CitGOglmcy9vbWZzLworCitPTU5JVklTSU9OIE9HMDFBMUIgU0VOU09SIERSSVZFUgor
TToJU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAbGludXguaW50ZWwuY29tPgorTDoJbGludXgt
bWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292dGksb2cwMWExYi55YW1sCitGOglkcml2ZXJz
L21lZGlhL2kyYy9vZzAxYTFiLmMKKworT01OSVZJU0lPTiBPVjAxQTEwIFNFTlNPUiBEUklWRVIK
K006CUJpbmdidSBDYW8gPGJpbmdidS5jYW9AaW50ZWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVk
aWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjAxYTEwLmMKKworT01OSVZJU0lPTiBPVjAy
QTEwIFNFTlNPUiBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3Jw
aGFuCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292dGksb3YwMmExMC55YW1sCitGOglkcml2
ZXJzL21lZGlhL2kyYy9vdjAyYTEwLmMKKworT01OSVZJU0lPTiBPVjAyQzEwIFNFTlNPUiBEUklW
RVIKK006CUhhbnMgZGUgR29lZGUgPGhhbnNnQGtlcm5lbC5vcmc+CitSOglCcnlhbiBPJ0Rvbm9n
aHVlIDxib2RAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVy
cy9tZWRpYS9pMmMvb3YwMmMxMC5jCisKK09NTklWSVNJT04gT1YwMkUxMCBTRU5TT1IgRFJJVkVS
CitNOglCcnlhbiBPJ0Rvbm9naHVlIDxib2RAa2VybmVsLm9yZz4KK006CUhhbnMgZGUgR29lZGUg
PGhhbnNnQGtlcm5lbC5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3Z0aSxvdjAyZTEwLnlhbWwKK0Y6
CWRyaXZlcnMvbWVkaWEvaTJjL292MDJlMTAuYworCitPTU5JVklTSU9OIE9WMDhEMTAgU0VOU09S
IERSSVZFUgorTToJSmltbXkgU3UgPGppbW15LnN1QGludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3Jn
L21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9pMmMvb3YwOGQxMC5jCisKK09NTklWSVNJT04g
T1YwOFg0MCBTRU5TT1IgRFJJVkVSCitNOglKYXNvbiBDaGVuIDxqYXNvbi56LmNoZW5AaW50ZWwu
Y29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOgln
aXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjA4
eDQwLmMKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3Z0
aSxvdjA4eDQwLnlhbWwKKworT01OSVZJU0lPTiBPVjEzODU4IFNFTlNPUiBEUklWRVIKK006CVNh
a2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3Jn
L21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9pMmMvb3YxMzg1OC5jCisKK09NTklWSVNJT04g
T1YxM0IxMCBTRU5TT1IgRFJJVkVSCitNOglBcmVjIEthbyA8YXJlYy5rYW9AaW50ZWwuY29tPgor
TDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0
Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjEzYjEwLmMK
KworT01OSVZJU0lPTiBPVjI2ODAgU0VOU09SIERSSVZFUgorTToJUnVpIE1pZ3VlbCBTaWx2YSA8
cm1mcmZzQGdtYWlsLmNvbT4KK006CUhhbnMgZGUgR29lZGUgPGhhbnNnQGtlcm5lbC5vcmc+CitM
OglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6
Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9tZWRpYS9pMmMvb3Z0aSxvdjI2ODAueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvb3Yy
NjgwLmMKKworT01OSVZJU0lPTiBPVjI2ODUgU0VOU09SIERSSVZFUgorTToJU2h1bnFpYW4gWmhl
bmcgPHpoZW5nc3FAcm9jay1jaGlwcy5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3Z0aSxvdjI2ODUu
eWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvb3YyNjg1LmMKKworT01OSVZJU0lPTiBPVjI3NDAg
U0VOU09SIERSSVZFUgorTToJVGlhbnNodSBRaXUgPHRpYW4uc2h1LnFpdUBpbnRlbC5jb20+CitS
OglTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20+CitSOglCaW5nYnUg
Q2FvIDxiaW5nYnUuY2FvQGludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJ
ZHJpdmVycy9tZWRpYS9pMmMvb3YyNzQwLmMKKworT01OSVZJU0lPTiBPVjQ2ODkgU0VOU09SIERS
SVZFUgorTToJTWlraGFpbCBSdWRlbmtvIDxtaWtlLnJ1ZGVua29AZ21haWwuY29tPgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGlu
dXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
bWVkaWEvaTJjL292dGksb3Y0Njg5LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL292NDY4OS5j
CisKK09NTklWSVNJT04gT1Y1NjQwIFNFTlNPUiBEUklWRVIKK006CVN0ZXZlIExvbmdlcmJlYW0g
PHNsb25nZXJiZWFtQGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJp
dmVycy9tZWRpYS9pMmMvb3Y1NjQwLmMKKworT01OSVZJU0lPTiBPVjU2NDcgU0VOU09SIERSSVZF
UgorTToJRGF2ZSBTdGV2ZW5zb24gPGRhdmUuc3RldmVuc29uQHJhc3BiZXJyeXBpLmNvbT4KK006
CUphY29wbyBNb25kaSA8amFjb3BvQGptb25kaS5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5n
aXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvb3Z0aSxv
djU2NDcueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvb3Y1NjQ3LmMKKworT01OSVZJU0lPTiBP
VjU2NzAgU0VOU09SIERSSVZFUgorTToJU2FrYXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAbGludXgu
aW50ZWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292dGksb3Y1NjcwLnlhbWwKK0Y6CWRyaXZlcnMv
bWVkaWEvaTJjL292NTY3MC5jCisKK09NTklWSVNJT04gT1Y1Njc1IFNFTlNPUiBEUklWRVIKK006
CVNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1l
ZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYu
b3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlh
L2kyYy9vdnRpLG92NTY3NS55YW1sCitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjU2NzUuYworCitP
TU5JVklTSU9OIE9WNTY5MyBTRU5TT1IgRFJJVkVSCitNOglEYW5pZWwgU2NhbGx5IDxkanJzY2Fs
bHlAZ21haWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292dGksb3Y1NjkzLnlhbWwKK0Y6CWRyaXZl
cnMvbWVkaWEvaTJjL292NTY5My5jCisKK09NTklWSVNJT04gT1Y1Njk1IFNFTlNPUiBEUklWRVIK
K006CVNodW5xaWFuIFpoZW5nIDx6aGVuZ3NxQHJvY2stY2hpcHMuY29tPgorTDoJbGludXgtbWVk
aWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5v
cmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjU2OTUuYworCitPTU5JVklTSU9O
IE9WNjRBNDAgU0VOU09SIERSSVZFUgorTToJSmFjb3BvIE1vbmRpIDxqYWNvcG8ubW9uZGlAaWRl
YXNvbmJvYXJkLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9vdnRpLG92NjRhNDAueWFtbAorRjoJZHJp
dmVycy9tZWRpYS9pMmMvb3Y2NGE0MC5jCisKK09NTklWSVNJT04gT1Y3NjcwIFNFTlNPUiBEUklW
RVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitUOglnaXQgZ2l0
Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbWVkaWEvaTJjL292dGksb3Y3NjcwLnR4dAorRjoJZHJpdmVycy9tZWRpYS9pMmMvb3Y3
NjcwLmMKKworT01OSVZJU0lPTiBPVjc3MnggU0VOU09SIERSSVZFUgorTToJSmFjb3BvIE1vbmRp
IDxqYWNvcG9Aam1vbmRpLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
T2RkIGZpeGVzCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292dGksb3Y3NzJ4LnlhbWwKK0Y6
CWRyaXZlcnMvbWVkaWEvaTJjL292NzcyeC5jCitGOglpbmNsdWRlL21lZGlhL2kyYy9vdjc3Mngu
aAorCitPTU5JVklTSU9OIE9WNzc0MCBTRU5TT1IgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdp
dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9vdnRpLG92
Nzc0MC50eHQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL292Nzc0MC5jCisKK09NTklWSVNJT04gT1Y4
ODU2IFNFTlNPUiBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVzQGxpbnV4Lmlu
dGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9vdnRpLG92ODg1Ni55YW1sCitGOglkcml2ZXJzL21l
ZGlhL2kyYy9vdjg4NTYuYworCitPTU5JVklTSU9OIE9WODg1OCBTRU5TT1IgRFJJVkVSCitNOglK
YWNvcG8gTW9uZGkgPGphY29wby5tb25kaUBpZGVhc29uYm9hcmQuY29tPgorTToJTmljaG9sYXMg
Um90aCA8bmljaG9sYXNAcm90aGVtYWlsLm5ldD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9vdnRpLG92ODg1
OC55YW1sCitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjg4NTguYworCitPTU5JVklTSU9OIE9WOTI4
MiBTRU5TT1IgRFJJVkVSCitNOglEYXZlIFN0ZXZlbnNvbiA8ZGF2ZS5zdGV2ZW5zb25AcmFzcGJl
cnJ5cGkuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL292dGksb3Y5MjgyLnlhbWwKK0Y6CWRyaXZlcnMv
bWVkaWEvaTJjL292OTI4Mi5jCisKK09NTklWSVNJT04gT1Y5NjQwIFNFTlNPUiBEUklWRVIKK006
CVBldHIgQ3ZlayA8cGV0cmN2ZWtjekBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL292OTY0MC4qCisK
K09NTklWSVNJT04gT1Y5NjUwIFNFTlNPUiBEUklWRVIKK006CVNha2FyaSBBaWx1cyA8c2FrYXJp
LmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK1I6CUFraW5vYnUgTWl0YSA8YWtpbm9idS5taXRhQGdt
YWlsLmNvbT4KK1I6CVN5bHdlc3RlciBOYXdyb2NraSA8cy5uYXdyb2NraUBzYW1zdW5nLmNvbT4K
K0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdp
dDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL21lZGlhL2kyYy9vdnRpLG92OTY1MC50eHQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL292
OTY1MC5jCisKK09NTklWSVNJT04gT1Y5NzM0IFNFTlNPUiBEUklWRVIKK006CVRpYW5zaHUgUWl1
IDx0aWFuLnNodS5xaXVAaW50ZWwuY29tPgorUjoJQmluZ2J1IENhbyA8YmluZ2J1LmNhb0BpbnRl
bC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6
CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL292
OTczNC5jCisKK09OQk9BUkQgVVNCIEhVQiBEUklWRVIKK006CU1hdHRoaWFzIEthZWhsY2tlIDxt
a2FAY2hyb21pdW0ub3JnPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtcGxhdGZvcm0tb25i
b2FyZC11c2ItZGV2CitGOglkcml2ZXJzL3VzYi9taXNjL29uYm9hcmRfdXNiX2Rldi5jCisKK09O
RU5BTkQgRkxBU0ggRFJJVkVSCitNOglLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1
bmcuY29tPgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvbXRkL25hbmQvb25lbmFuZC8KK0Y6CWluY2x1ZGUvbGludXgvbXRkL29uZW5h
bmQqLmgKKworT05FWFBMQVlFUiBQTEFURk9STSBFQyBEUklWRVIKK006CUFudGhlYXMgS2FwZW5l
a2FraXMgPGxrbWxAYW50aGVhcy5kZXY+CitNOglEZXJlayBKb2huIENsYXJrIDxkZXJla2pvaG4u
Y2xhcmtAZ21haWwuY29tPgorTToJSm9hcXXDrW4gSWduYWNpbyBBcmFtZW5kw61hIDxzYW1zYWdh
eEBnbWFpbC5jb20+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvb3hwZWMuYworCitPTklFIFRMViBO
Vk1FTSBMQVlPVVQgRFJJVkVSCitNOglNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3Rs
aW4uY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL252bWVtL2xheW91dHMvb25pZSx0bHYtbGF5b3V0LnlhbWwKK0Y6CWRyaXZlcnMvbnZtZW0v
bGF5b3V0cy9vbmllLXRsdi5jCisKK09OSU9OIE9NRUdBMisgQk9BUkQKK006CUhhcnZleSBIdW50
IDxoYXJ2ZXlodW50bmV4dXNAZ21haWwuY29tPgorTDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvbWlwcy9ib290L2R0cy9yYWxpbmsvb21lZ2EycC5k
dHMKKworT05TRU1JIEVUSEVSTkVUIFBIWSBEUklWRVJTCitNOglQaWVyZ2lvcmdpbyBCZXJ1dG8g
PHBpZXJnaW9yZ2lvLmJlcnV0b0BnbWFpbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly93d3cub25zZW1pLmNvbQorRjoJZHJpdmVycy9uZXQv
cGh5L25jbioKKworT1AtVEVFIERSSVZFUgorTToJSmVucyBXaWtsYW5kZXIgPGplbnMud2lrbGFu
ZGVyQGxpbmFyby5vcmc+CitMOglvcC10ZWVAbGlzdHMudHJ1c3RlZGZpcm13YXJlLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtb3B0ZWUt
ZGV2aWNlcworRjoJZHJpdmVycy90ZWUvb3B0ZWUvCisKK09QLVRFRSBSQU5ET00gTlVNQkVSIEdF
TkVSQVRPUiAoUk5HKSBEUklWRVIKK006CVN1bWl0IEdhcmcgPHN1bWl0LmdhcmdAa2VybmVsLm9y
Zz4KK0w6CW9wLXRlZUBsaXN0cy50cnVzdGVkZmlybXdhcmUub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL2NoYXIvaHdfcmFuZG9tL29wdGVlLXJuZy5jCisKK09QLVRFRSBSVEMgRFJJVkVS
CitNOglDbMOpbWVudCBMw6lnZXIgPGNsZW1lbnQubGVnZXJAYm9vdGxpbi5jb20+CitMOglsaW51
eC1ydGNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3J0Yy9ydGMt
b3B0ZWUuYworCitPUEEtVk5JQyBEUklWRVIKK006CURlbm5pcyBEYWxlc3NhbmRybyA8ZGVubmlz
LmRhbGVzc2FuZHJvQGNvcm5lbGlzbmV0d29ya3MuY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pbmZpbmliYW5kL3VscC9vcGFfdm5p
YworCitPUEVOIEFMTElBTkNFIDEwQkFTRS1UMVMgTUFDUEhZIFNFUklBTCBJTlRFUkZBQ0UgRlJB
TUVXT1JLCitNOglQYXJ0aGliYW4gVmVlcmFzb29yYW4gPHBhcnRoaWJhbi52ZWVyYXNvb3JhbkBt
aWNyb2NoaXAuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29hLXRjNi1mcmFtZXdvcmsucnN0CitGOglkcml2
ZXJzL25ldC9ldGhlcm5ldC9vYV90YzYuYworRjoJaW5jbHVkZS9saW51eC9vYV90YzYuaAorCitP
UEVOIEZJUk1XQVJFIEFORCBGTEFUVEVORUQgREVWSUNFIFRSRUUKK006CVJvYiBIZXJyaW5nIDxy
b2JoQGtlcm5lbC5vcmc+CitNOglTYXJhdmFuYSBLYW5uYW4gPHNhcmF2YW5ha0Bnb29nbGUuY29t
PgorTDoJZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6
Ly93d3cuZGV2aWNldHJlZS5vcmcvCitDOglpcmM6Ly9pcmMubGliZXJhLmNoYXQvZGV2aWNldHJl
ZQorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9y
b2JoL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1maXJtd2Fy
ZS1vZncKK0Y6CWRyaXZlcnMvb2YvCitGOglpbmNsdWRlL2xpbnV4L29mKi5oCitGOglydXN0L2tl
cm5lbC9vZi5ycworRjoJc2NyaXB0cy9kdGMvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9k
dC8KK0s6CW9mX292ZXJsYXlfbm90aWZpZXJfCitLOglvZl9vdmVybGF5X2ZkdF9hcHBseQorSzoJ
b2Zfb3ZlcmxheV9yZW1vdmUKKworT1BFTiBGSVJNV0FSRSBBTkQgRkxBVFRFTkVEIERFVklDRSBU
UkVFIEJJTkRJTkdTCitNOglSb2IgSGVycmluZyA8cm9iaEBrZXJuZWwub3JnPgorTToJS3J6eXN6
dG9mIEtvemxvd3NraSA8a3J6aytkdEBrZXJuZWwub3JnPgorTToJQ29ub3IgRG9vbGV5IDxjb25v
citkdEBrZXJuZWwub3JnPgorTDoJZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK1E6CWh0dHA6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wcm9qZWN0L2RldmljZXRyZWUt
YmluZGluZ3MvbGlzdC8KK0M6CWlyYzovL2lyYy5saWJlcmEuY2hhdC9kZXZpY2V0cmVlCitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JvYmgvbGlu
dXguZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvCitGOglhcmNoLyovYm9vdC9kdHMv
CitGOglpbmNsdWRlL2R0LWJpbmRpbmdzLworCitPUEVOQ09NUFVURSBQVFAgQ0xPQ0sgRFJJVkVS
CitNOglKb25hdGhhbiBMZW1vbiA8am9uYXRoYW4ubGVtb25AZ21haWwuY29tPgorTToJVmFkaW0g
RmVkb3JlbmtvIDx2YWRpbS5mZWRvcmVua29AbGludXguZGV2PgorTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wdHAvcHRwX29jcC5jCisKK09QRU5D
T1JFUyBJMkMgQlVTIERSSVZFUgorTToJUGV0ZXIgS29yc2dhYXJkIDxwZXRlckBrb3JzZ2FhcmQu
Y29tPgorTToJQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPgorTDoJbGludXgtaTJjQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL2kyYy9vcGVuY29yZXMsaTJjLW9jb3Jlcy55YW1sCitGOglEb2N1bWVudGF0aW9uL2ky
Yy9idXNzZXMvaTJjLW9jb3Jlcy5yc3QKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtb2NvcmVz
LmMKK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9pMmMtb2NvcmVzLmgKKworT1BFTlJJ
U0MgQVJDSElURUNUVVJFCitNOglKb25hcyBCb25uIDxqb25hc0Bzb3V0aHBvbGUuc2U+CitNOglT
dGVmYW4gS3Jpc3RpYW5zc29uIDxzdGVmYW4ua3Jpc3RpYW5zc29uQHNhdW5hbGFodGkuZmk+CitN
OglTdGFmZm9yZCBIb3JuZSA8c2hvcm5lQGdtYWlsLmNvbT4KK0w6CWxpbnV4LW9wZW5yaXNjQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL29wZW5yaXNjLmlvCitUOgln
aXQgaHR0cHM6Ly9naXRodWIuY29tL29wZW5yaXNjL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlv
bi9hcmNoL29wZW5yaXNjLworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL29w
ZW5yaXNjLworRjoJYXJjaC9vcGVucmlzYy8KK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtb21waWMu
YworRjoJZHJpdmVycy9pcnFjaGlwL2lycS1vcjFrLSoKKworT1BFTlZQTiBEQVRBIENIQU5ORUwg
T0ZGTE9BRAorTToJQW50b25pbyBRdWFydHVsbGkgPGFudG9uaW9Ab3BlbnZwbi5uZXQ+CitSOglT
YWJyaW5hIER1YnJvY2EgPHNkQHF1ZWFzeXNuYWlsLm5ldD4KK0w6CW9wZW52cG4tZGV2ZWxAbGlz
dHMuc291cmNlZm9yZ2UubmV0IChzdWJzY3JpYmVycy1vbmx5KQorTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL09wZW5WUE4v
b3Zwbi1uZXQtbmV4dC5naXQKK0Y6CURvY3VtZW50YXRpb24vbmV0bGluay9zcGVjcy9vdnBuLnlh
bWwKK0Y6CWRyaXZlcnMvbmV0L292cG4vCitGOglpbmNsdWRlL3VhcGkvbGludXgvb3Zwbi5oCitG
Ogl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvb3Zwbi8KKworT1BFTlZTV0lUQ0gKK006CUFh
cm9uIENvbm9sZSA8YWNvbm9sZUByZWRoYXQuY29tPgorTToJRWVsY28gQ2hhdWRyb24gPGVjaGF1
ZHJvQHJlZGhhdC5jb20+CitNOglJbHlhIE1heGltZXRzIDxpLm1heGltZXRzQG92bi5vcmc+CitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitMOglkZXZAb3BlbnZzd2l0Y2gub3JnCitTOglNYWlu
dGFpbmVkCitXOglodHRwOi8vb3BlbnZzd2l0Y2gub3JnCitGOglEb2N1bWVudGF0aW9uL25ldHdv
cmtpbmcvb3BlbnZzd2l0Y2gucnN0CitGOglpbmNsdWRlL3VhcGkvbGludXgvb3BlbnZzd2l0Y2gu
aAorRjoJbmV0L29wZW52c3dpdGNoLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L29w
ZW52c3dpdGNoLworCitPUEVSQVRJTkcgUEVSRk9STUFOQ0UgUE9JTlRTIChPUFApCitNOglWaXJl
c2ggS3VtYXIgPHZpcmVzaGtAa2VybmVsLm9yZz4KK006CU5pc2hhbnRoIE1lbm9uIDxubUB0aS5j
b20+CitNOglTdGVwaGVuIEJveWQgPHNib3lkQGtlcm5lbC5vcmc+CitMOglsaW51eC1wbUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdmlyZXNoay9wbS5naXQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9vcHAvCitGOglEb2N1bWVudGF0aW9uL3Bvd2VyL29wcC5yc3QK
K0Y6CWRyaXZlcnMvb3BwLworRjoJaW5jbHVkZS9saW51eC9wbV9vcHAuaAorRjoJcnVzdC9rZXJu
ZWwvb3BwLnJzCisKK09QTDQgRFJJVkVSCitNOglDbGVtZW5zIExhZGlzY2ggPGNsZW1lbnNAbGFk
aXNjaC5kZT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXdh
aS9zb3VuZC5naXQKK0Y6CXNvdW5kL2RyaXZlcnMvb3BsNC8KKworT1JBQ0xFIENMVVNURVIgRklM
RVNZU1RFTSAyIChPQ0ZTMikKK006CU1hcmsgRmFzaGVoIDxtYXJrQGZhc2hlaC5jb20+CitNOglK
b2VsIEJlY2tlciA8amxiZWNAZXZpbHBsYW4ub3JnPgorTToJSm9zZXBoIFFpIDxqb3NlcGgucWlA
bGludXguYWxpYmFiYS5jb20+CitMOglvY2ZzMi1kZXZlbEBsaXN0cy5saW51eC5kZXYKK1M6CVN1
cHBvcnRlZAorVzoJaHR0cDovL29jZnMyLndpa2kua2VybmVsLm9yZworRjoJRG9jdW1lbnRhdGlv
bi9maWxlc3lzdGVtcy9kbG1mcy5yc3QKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb2Nm
czIucnN0CitGOglmcy9vY2ZzMi8KKworT1JBTkdFRlMgRklMRVNZU1RFTQorTToJTWlrZSBNYXJz
aGFsbCA8aHViY2FwQG9tbmlib25kLmNvbT4KK1I6CU1hcnRpbiBCcmFuZGVuYnVyZyA8bWFydGlu
QG9tbmlib25kLmNvbT4KK0w6CWRldmVsQGxpc3RzLm9yYW5nZWZzLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2h1
YmNhcC9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb3JhbmdlZnMucnN0
CitGOglmcy9vcmFuZ2Vmcy8KKworT1YyNjU5IE9NTklWSVNJT04gU0VOU09SIERSSVZFUgorTToJ
IkxhZCwgUHJhYmhha2FyIiA8cHJhYmhha2FyLmNzZW5nZ0BnbWFpbC5jb20+CitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9s
aXN0LworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21oYWRsaS92NGwtZHZiLWRhdmluY2lfZGV2
aWNlcy5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMv
b3Z0aSxvdjI2NTkudHh0CitGOglkcml2ZXJzL21lZGlhL2kyYy9vdjI2NTkuYworRjoJaW5jbHVk
ZS9tZWRpYS9pMmMvb3YyNjU5LmgKKworT1ZFUkxBWSBGSUxFU1lTVEVNCitNOglNaWtsb3MgU3pl
cmVkaSA8bWlrbG9zQHN6ZXJlZGkuaHU+CitNOglBbWlyIEdvbGRzdGVpbiA8YW1pcjczaWxAZ21h
aWwuY29tPgorTDoJbGludXgtdW5pb25mc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9vdmVy
bGF5ZnMvdmZzLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vdmVybGF5ZnMucnN0
CitGOglmcy9vdmVybGF5ZnMvCisKK1A1NCBXSVJFTEVTUyBEUklWRVIKK006CUNocmlzdGlhbiBM
YW1wYXJ0ZXIgPGNodW5rZWV5QGdvb2dsZW1haWwuY29tPgorTDoJbGludXgtd2lyZWxlc3NAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL3dpcmVsZXNzLndpa2kua2Vy
bmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL3A1NAorRjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50
ZXJzaWwvCisKK1BBQ0tFVCBTT0NLRVRTCitNOglXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1kZWJy
dWlqbi5rZXJuZWxAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS91YXBpL2xp
bnV4L2lmX3BhY2tldC5oCitGOgluZXQvcGFja2V0L2FmX3BhY2tldC5jCisKK1BBQ0tJTkcKK006
CVZsYWRpbWlyIE9sdGVhbiA8b2x0ZWFudkBnbWFpbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vY29yZS1hcGkvcGFja2luZy5y
c3QKK0Y6CWluY2x1ZGUvbGludXgvcGFja2luZy5oCitGOglsaWIvcGFja2luZy5jCitGOglsaWIv
cGFja2luZ190ZXN0LmMKK0Y6CXNjcmlwdHMvZ2VuX3BhY2tlZF9maWVsZF9jaGVja3MuYworCitQ
QURBVEEgUEFSQUxMRUwgRVhFQ1VUSU9OIE1FQ0hBTklTTQorTToJU3RlZmZlbiBLbGFzc2VydCA8
c3RlZmZlbi5rbGFzc2VydEBzZWN1bmV0LmNvbT4KK006CURhbmllbCBKb3JkYW4gPGRhbmllbC5t
LmpvcmRhbkBvcmFjbGUuY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworTDoJ
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9jb3JlLWFwaS9wYWRhdGEucnN0CitGOglpbmNsdWRlL2xpbnV4L3BhZGF0YS5oCitGOglr
ZXJuZWwvcGFkYXRhLmMKKworUEFHRSBDQUNIRQorTToJTWF0dGhldyBXaWxjb3ggKE9yYWNsZSkg
PHdpbGx5QGluZnJhZGVhZC5vcmc+CitMOglsaW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0LmluZnJhZGVhZC5vcmcvdXNlcnMvd2lsbHkv
cGFnZWNhY2hlLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9sb2NraW5nLnJzdAor
RjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMucnN0CitGOglpbmNsdWRlL2xpbnV4L3Bh
Z2VtYXAuaAorRjoJbW0vZmlsZW1hcC5jCitGOgltbS9wYWdlLXdyaXRlYmFjay5jCitGOgltbS9y
ZWFkYWhlYWQuYworRjoJbW0vdHJ1bmNhdGUuYworCitQQUdFIFBPT0wKK006CUplc3BlciBEYW5n
YWFyZCBCcm91ZXIgPGhhd2tAa2VybmVsLm9yZz4KK006CUlsaWFzIEFwYWxvZGltYXMgPGlsaWFz
LmFwYWxvZGltYXNAbGluYXJvLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1
cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BhZ2VfcG9vbC5yc3QKK0Y6CWlu
Y2x1ZGUvbmV0L3BhZ2VfcG9vbC8KK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL3BhZ2VfcG9vbC5o
CitGOgluZXQvY29yZS9wYWdlX3Bvb2wuYworCitQQUdFIFRBQkxFIENIRUNLCitNOglQYXNoYSBU
YXRhc2hpbiA8cGFzaGEudGF0YXNoaW5Ac29sZWVuLmNvbT4KK006CUFuZHJldyBNb3J0b24gPGFr
cG1AbGludXgtZm91bmRhdGlvbi5vcmc+CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbW0vcGFnZV90YWJsZV9jaGVjay5yc3QKK0Y6CWluY2x1
ZGUvbGludXgvcGFnZV90YWJsZV9jaGVjay5oCitGOgltbS9wYWdlX3RhYmxlX2NoZWNrLmMKKwor
UEFOQVNPTklDIExBUFRPUCBBQ1BJIEVYVFJBUyBEUklWRVIKK006CUtlbm5ldGggQ2hhbiA8a2Vu
bmV0aC50LmNoYW5AZ21haWwuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L3BhbmFzb25pYy1s
YXB0b3AuYworCitQQVJBTExBWCBQSU5HIElJTyBTRU5TT1IgRFJJVkVSCitNOglBbmRyZWFzIEts
aW5nZXIgPGFrQGl0LWtsaW5nZXIuZGU+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3By
b3hpbWl0eS9wYXJhbGxheC1waW5nLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL3Byb3hpbWl0eS9waW5n
LmMKKworUEFSQUxMRUwgTENEL0tFWVBBRCBQQU5FTCBEUklWRVIKK006CVdpbGx5IFRhcnJlYXUg
PHdpbGx5QGhhcHJveHkuY29tPgorTToJS3NlbmlqYSBTdGFub2pldmljIDxrc2VuaWphLnN0YW5v
amV2aWNAZ21haWwuY29tPgorUzoJT2RkIEZpeGVzCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1
aWRlL2xjZC1wYW5lbC1jZ3JhbS5yc3QKK0Y6CWRyaXZlcnMvYXV4ZGlzcGxheS9wYW5lbC5jCisK
K1BBUkFMTEVMIFBPUlQgU1VCU1lTVEVNCitNOglTdWRpcCBNdWtoZXJqZWUgPHN1ZGlwbS5tdWto
ZXJqZWVAZ21haWwuY29tPgorTToJU3VkaXAgTXVraGVyamVlIDxzdWRpcC5tdWtoZXJqZWVAY29k
ZXRoaW5rLmNvLnVrPgorTDoJbGludXgtcGFycG9ydEBsaXN0cy5pbmZyYWRlYWQub3JnIChzdWJz
Y3JpYmVycy1vbmx5KQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBp
L3BhcnBvcnQqLnJzdAorRjoJZHJpdmVycy9jaGFyL3BwZGV2LmMKK0Y6CWRyaXZlcnMvcGFycG9y
dC8KK0Y6CWluY2x1ZGUvbGludXgvcGFycG9ydCouaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3Bw
ZGV2LmgKKworUEFSQVZJUlRfT1BTIElOVEVSRkFDRQorTToJSnVlcmdlbiBHcm9zcyA8amdyb3Nz
QHN1c2UuY29tPgorUjoJQWpheSBLYWhlciA8YWpheS5rYWhlckBicm9hZGNvbS5jb20+CitSOglB
bGV4ZXkgTWFraGFsb3YgPGFsZXhleS5tYWtoYWxvdkBicm9hZGNvbS5jb20+CitSOglCcm9hZGNv
bSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwtZmVlZGJhY2stbGlzdEBi
cm9hZGNvbS5jb20+CitMOgl2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC5kZXYKK0w6CXg4NkBr
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvdGlwL3RpcC5naXQgeDg2L2NvcmUKK0Y6CURvY3VtZW50YXRp
b24vdmlydC9wYXJhdmlydF9vcHMucnN0CitGOglhcmNoLyovaW5jbHVkZS9hc20vcGFyYXZpcnQq
LmgKK0Y6CWFyY2gvKi9rZXJuZWwvcGFyYXZpcnQqCitGOglpbmNsdWRlL2xpbnV4L2h5cGVydmlz
b3IuaAorCitQQVJJU0MgQVJDSElURUNUVVJFCitNOgkiSmFtZXMgRS5KLiBCb3R0b21sZXkiIDxK
YW1lcy5Cb3R0b21sZXlASGFuc2VuUGFydG5lcnNoaXAuY29tPgorTToJSGVsZ2UgRGVsbGVyIDxk
ZWxsZXJAZ214LmRlPgorTDoJbGludXgtcGFyaXNjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVzoJaHR0cHM6Ly9wYXJpc2Mud2lraS5rZXJuZWwub3JnCitROglodHRwOi8vcGF0Y2h3
b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1wYXJpc2MvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvamVqYi9wYXJpc2MtMi42Lmdp
dAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9k
ZWxsZXIvcGFyaXNjLWxpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hcmNoL3BhcmlzYy8KK0Y6
CWFyY2gvcGFyaXNjLworRjoJZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmMKK0Y6CWRyaXZl
cnMvaW5wdXQvbWlzYy9ocF9zZGNfcnRjLmMKK0Y6CWRyaXZlcnMvaW5wdXQvc2VyaW8vZ3NjcHMy
LmMKK0Y6CWRyaXZlcnMvaW5wdXQvc2VyaW8vaHBfc2RjKgorRjoJZHJpdmVycy9wYXJpc2MvCitG
Oglkcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9nc2MuKgorRjoJZHJpdmVycy90dHkvc2VyaWFsLzgy
NTAvODI1MF9wYXJpc2MuYworRjoJZHJpdmVycy92aWRlby9jb25zb2xlL3N0aSoKK0Y6CWRyaXZl
cnMvdmlkZW8vZmJkZXYvc3RpKgorRjoJZHJpdmVycy92aWRlby9sb2dvL2xvZ29fcGFyaXNjKgor
RjoJaW5jbHVkZS9saW51eC9ocF9zZGMuaAorCitQQVJNQU4KK006CUppcmkgUGlya28gPGppcmlA
cmVzbnVsbGkudXM+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6
CWluY2x1ZGUvbGludXgvcGFybWFuLmgKK0Y6CWxpYi9wYXJtYW4uYworRjoJbGliL3Rlc3RfcGFy
bWFuLmMKKworUEMgRU5HSU5FUyBBUFUgQk9BUkQgRFJJVkVSCitNOglFbnJpY28gV2VpZ2VsdCwg
bWV0dXggSVQgY29uc3VsdCA8aW5mb0BtZXR1eC5uZXQ+CitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL3BsYXRmb3JtL3g4Ni9wY2VuZ2luZXMtYXB1djIuYworCitQQzg3MzYwIEhBUkRXQVJFIE1P
TklUT1JJTkcgRFJJVkVSCitNOglKaW0gQ3JvbWllIDxqaW0uY3JvbWllQGdtYWlsLmNvbT4KK0w6
CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9od21vbi9wYzg3MzYwLnJzdAorRjoJZHJpdmVycy9od21vbi9wYzg3MzYwLmMKKworUEM4
NzM2eCBHUElPIERSSVZFUgorTToJSmltIENyb21pZSA8amltLmNyb21pZUBnbWFpbC5jb20+CitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL2NoYXIvcGM4NzM2eF9ncGlvLmMKKworUEM4NzQyNyBI
QVJEV0FSRSBNT05JVE9SSU5HIERSSVZFUgorTToJSmVhbiBEZWx2YXJlIDxqZGVsdmFyZUBzdXNl
LmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9od21vbi9wYzg3NDI3LnJzdAorRjoJZHJpdmVycy9od21vbi9wYzg3NDI3
LmMKKworUENBOTUzMiBMRUQgRFJJVkVSCitNOglSaWt1IFZvaXBpbyA8cmlrdS52b2lwaW9AaWtp
LmZpPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jCitGOglp
bmNsdWRlL2xpbnV4L2xlZHMtcGNhOTUzMi5oCisKK1BDSSBEUklWRVIgRk9SIEFBUkRWQVJLIChN
YXJ2ZWxsIEFybWFkYSAzNzAwKQorTToJVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9u
aUBib290bGluLmNvbT4KK006CVBhbGkgUm9ow6FyIDxwYWxpQGtlcm5lbC5vcmc+CitMOglsaW51
eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh
ZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9hYXJkdmFyay1wY2kudHh0CitG
Oglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1hYXJkdmFyay5jCisKK1BDSSBEUklWRVIgRk9S
IEFMVEVSQSBQQ0lFIElQCitNOglKb3ljZSBPb2kgPGpveWNlLm9vaUBpbnRlbC5jb20+CitMOgls
aW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvYWx0cixwY2llLXJvb3QtcG9ydC55YW1sCitGOglkcml2
ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtYWx0ZXJhLmMKKworUENJIERSSVZFUiBGT1IgQVBQTElF
RE1JQ1JPIFhHRU5FCitNOglUb2FuIExlIDx0b2FuQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+CitM
OglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94Z2VuZS1wY2kudHh0
CitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS14Z2VuZS5jCisKK1BDSSBEUklWRVIgRk9S
IEFSTSBWRVJTQVRJTEUgUExBVEZPUk0KK006CVJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+
CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3Rz
LmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS92ZXJzYXRpbGUu
eWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktdmVyc2F0aWxlLmMKKworUENJIERS
SVZFUiBGT1IgQVJNQURBIDhLCitNOglUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25p
QGJvb3RsaW4uY29tPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtYXJt
LWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVy
cykKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9w
Y2kvcGNpLWFybWFkYThrLnR4dAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1h
cm1hZGE4ay5jCisKK1BDSSBEUklWRVIgRk9SIENBREVOQ0UgUENJRSBJUAorTDoJbGludXgtcGNp
QHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvcGNpL2NkbnMsKgorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlLypj
YWRlbmNlKgorCitQQ0kgRFJJVkVSIEZPUiBGUkVFU0NBTEUgTEFZRVJTQ0FQRQorTToJTWluZ2h1
YW4gTGlhbiA8bWluZ2h1YW4uTGlhbkBueHAuY29tPgorTToJTWluZ2thaSBIdSA8bWluZ2thaS5o
dUBueHAuY29tPgorTToJUm95IFphbmcgPHJveS56YW5nQG54cC5jb20+CitMOglsaW51eHBwYy1k
ZXZAbGlzdHMub3psYWJzLm9yZworTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworTDoJbGlu
dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJz
Y3JpYmVycykKK0w6CWlteEBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvcGNpL2NvbnRyb2xsZXIvZHdjLypsYXllcnNjYXBlKgorCitQQ0kgRFJJVkVSIEZPUiBGVTc0
MAorTToJUGF1bCBXYWxtc2xleSA8cGF1bC53YWxtc2xleUBzaWZpdmUuY29tPgorTToJR3JlZW50
aW1lIEh1IDxncmVlbnRpbWUuaHVAc2lmaXZlLmNvbT4KK006CVNhbXVlbCBIb2xsYW5kIDxzYW11
ZWwuaG9sbGFuZEBzaWZpdmUuY29tPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9zaWZp
dmUsZnU3NDAtcGNpZS55YW1sCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWZ1
NzQwLmMKKworUENJIERSSVZFUiBGT1IgR0VORVJJQyBPRiBIT1NUUworTToJV2lsbCBEZWFjb24g
PHdpbGxAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4
LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2Ny
aWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvcGNpL2hvc3QtZ2VuZXJpYy1wY2kueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9w
Y2ktaG9zdC1jb21tb24uYworRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ktaG9zdC1nZW5l
cmljLmMKKworUENJIERSSVZFUiBGT1IgSU1YNgorTToJUmljaGFyZCBaaHUgPGhvbmd4aW5nLnpo
dUBueHAuY29tPgorTToJTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+CitMOgls
aW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJh
ZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJaW14QGxpc3RzLmxp
bnV4LmRldgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3BjaS9mc2wsaW14NnEtcGNpZS1jb21tb24ueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3BjaS9mc2wsaW14NnEtcGNpZS1lcC55YW1sCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2ZzbCxpbXg2cS1wY2llLnlhbWwKK0Y6CWRyaXZl
cnMvcGNpL2NvbnRyb2xsZXIvZHdjLyppbXg2KgorCitQQ0kgRFJJVkVSIEZPUiBJTlRFTCBJWFA0
WFgKK006CUxpbnVzIFdhbGxlaWogPGxpbnVzLndhbGxlaWpAbGluYXJvLm9yZz4KK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvaW50ZWwsaXhw
NHh4LXBjaS55YW1sCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaS1peHA0eHguYworCitQ
Q0kgRFJJVkVSIEZPUiBJTlRFTCBWT0xVTUUgTUFOQUdFTUVOVCBERVZJQ0UgKFZNRCkKK006CU5p
cm1hbCBQYXRlbCA8bmlybWFsLnBhdGVsQGxpbnV4LmludGVsLmNvbT4KK1I6CUpvbmF0aGFuIERl
cnJpY2sgPGpvbmF0aGFuLmRlcnJpY2tAbGludXguZGV2PgorTDoJbGludXgtcGNpQHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jCisK
K1BDSSBEUklWRVIgRk9SIE1JQ1JPU0VNSSBTV0lUQ0hURUMKK006CUt1cnQgU2Nod2VtbWVyIDxr
dXJ0LnNjaHdlbW1lckBtaWNyb3NlbWkuY29tPgorTToJTG9nYW4gR3VudGhvcnBlIDxsb2dhbmdA
ZGVsdGF0ZWUuY29tPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1zd2l0Y2h0ZWMKK0Y6
CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9zd2l0Y2h0ZWMucnN0CitGOglkcml2ZXJzL250Yi9o
dy9tc2NjLworRjoJZHJpdmVycy9wY2kvc3dpdGNoL3N3aXRjaHRlYyoKK0Y6CWluY2x1ZGUvbGlu
dXgvc3dpdGNodGVjLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9zd2l0Y2h0ZWNfaW9jdGwuaAor
CitQQ0kgRFJJVkVSIEZPUiBNT0JJVkVJTCBQQ0lFIElQCitNOglLYXJ0aGlrZXlhbiBNaXRyYW4g
PG0ua2FydGhpa2V5YW5AbW9iaXZlaWwuY28uaW4+CitNOglIb3UgWmhpcWlhbmcgPFpoaXFpYW5n
LkhvdUBueHAuY29tPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL21idmwsZ3BleDQwLXBj
aWUueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWls
KgorCitQQ0kgRFJJVkVSIEZPUiBNVkVCVSAoTWFydmVsbCBBcm1hZGEgMzcwIGFuZCBBcm1hZGEg
WFAgU09DIHN1cHBvcnQpCitNOglUaG9tYXMgUGV0YXp6b25pIDx0aG9tYXMucGV0YXp6b25pQGJv
b3RsaW4uY29tPgorTToJUGFsaSBSb2jDoXIgPHBhbGlAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBj
aUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL3BjaS9jb250cm9sbGVyLyptdmVidSoKKworUENJIERSSVZFUiBGT1IgTlZJRElBIFRFR1JB
CitNOglUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwuY29tPgorTDoJbGludXgt
dGVncmFAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvbnZpZGlh
LHRlZ3JhMjAtcGNpZS50eHQKK0Y6CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpLXRlZ3JhLmMK
KworUENJIERSSVZFUiBGT1IgTlhQIExBWUVSU0NBUEUgR0VONCBDT05UUk9MTEVSCitNOglIb3Ug
WmhpcWlhbmcgPFpoaXFpYW5nLkhvdUBueHAuY29tPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVs
Lm9yZworTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQg
Zm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGNpL2NvbnRy
b2xsZXIvbW9iaXZlaWwvcGNpZS1sYXllcnNjYXBlLWdlbjQuYworCitQQ0kgRFJJVkVSIEZPUiBQ
TERBIFBDSUUgSVAKK006CURhaXJlIE1jTmFtYXJhIDxkYWlyZS5tY25hbWFyYUBtaWNyb2NoaXAu
Y29tPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9wbGRhLHhwcmVzc3JpY2gzLWF4aS1j
b21tb24ueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wbGRhL3BjaWUtcGxkYS1ob3N0
LmMKK0Y6CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGxkYS9wY2llLXBsZGEuaAorCitQQ0kgRFJJ
VkVSIEZPUiBSRU5FU0FTIFItQ0FSCitNOglNYXJlayBWYXN1dCA8bWFyZWsudmFzdXQrcmVuZXNh
c0BnbWFpbC5jb20+CitNOglZb3NoaWhpcm8gU2hpbW9kYSA8eW9zaGloaXJvLnNoaW1vZGEudWhA
cmVuZXNhcy5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1yZW5l
c2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvKnJjYXIqCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVy
LypyY2FyKgorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvKnJjYXIqCisKK1BDSSBEUklW
RVIgRk9SIFNBTVNVTkcgRVhZTk9TCitNOglKaW5nb28gSGFuIDxqaW5nb29oYW4xQGdtYWlsLmNv
bT4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlz
dHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51
eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
cGNpL2NvbnRyb2xsZXIvZHdjL3BjaS1leHlub3MuYworCitQQ0kgRFJJVkVSIEZPUiBTWU5PUFNZ
UyBERVNJR05XQVJFCitNOglKaW5nb28gSGFuIDxqaW5nb29oYW4xQGdtYWlsLmNvbT4KK006CU1h
bml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNpdmFtQGxpbmFyby5vcmc+CitM
OglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3NucHMsZHctcGNpZS1lcC55YW1sCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3NucHMsZHctcGNpZS55YW1sCitGOglk
cml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy8qZGVzaWdud2FyZSoKK0Y6CWluY2x1ZGUvbGludXgv
cGNpZS1kd2MuaAorCitQQ0kgRFJJVkVSIEZPUiBUSSBEUkE3WFgvSjcyMUUKK006CVZpZ25lc2gg
UmFnaGF2ZW5kcmEgPHZpZ25lc2hyQHRpLmNvbT4KK1I6CVNpZGRoYXJ0aCBWYWRhcGFsbGkgPHMt
dmFkYXBhbGxpQHRpLmNvbT4KK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJuZWwub3JnCitMOglsaW51
eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh
ZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3RpLXBjaS50eHQKK0Y6CWRyaXZl
cnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2ktajcyMWUuYworRjoJZHJpdmVycy9wY2kvY29u
dHJvbGxlci9kd2MvcGNpLWRyYTd4eC5jCisKK1BDSSBEUklWRVIgRk9SIFYzIFNFTUlDT05EVUNU
T1IgVjM2MEVQQworTToJTGludXMgV2FsbGVpaiA8bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgor
TDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS92My12MzYwZXBjLXBjaS50eHQKK0Y6CWRyaXZl
cnMvcGNpL2NvbnRyb2xsZXIvcGNpLXYzLXNlbWkuYworCitQQ0kgRFJJVkVSIEZPUiBYSUxJTlgg
VkVSU0FMIENQTQorTToJQmhhcmF0IEt1bWFyIEdvZ2FkYSA8YmhhcmF0Lmt1bWFyLmdvZ2FkYUBh
bWQuY29tPgorTToJTWljaGFsIFNpbWVrIDxtaWNoYWwuc2ltZWtAYW1kLmNvbT4KK0w6CWxpbnV4
LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9wY2kveGlsaW54LXZlcnNhbC1jcG0ueWFtbAorRjoJZHJpdmVycy9w
Y2kvY29udHJvbGxlci9wY2llLXhpbGlueC1jcG0uYworCitQQ0kgRU5EUE9JTlQgU1VCU1lTVEVN
CitNOglNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8u
b3JnPgorTToJS3J6eXN6dG9mIFdpbGN6ecWEc2tpIDxrd0BsaW51eC5jb20+CitSOglLaXNob24g
VmlqYXkgQWJyYWhhbSBJIDxraXNob25Aa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9w
cm9qZWN0L2xpbnV4LXBjaS9saXN0LworQjoJaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnCitD
OglpcmM6Ly9pcmMub2Z0Yy5uZXQvbGludXgtcGNpCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5v
cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BjaS9wY2kuZ2l0CitGOglEb2N1bWVudGF0aW9u
L1BDSS9lbmRwb2ludC8qCitGOglEb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9wY2ktZW5kcG9p
bnQtdGVzdC5yc3QKK0Y6CWRyaXZlcnMvbWlzYy9wY2lfZW5kcG9pbnRfdGVzdC5jCitGOglkcml2
ZXJzL3BjaS9lbmRwb2ludC8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3BjaV9lbmRwb2lu
dC8KKworUENJIEVOSEFOQ0VEIEVSUk9SIEhBTkRMSU5HIChFRUgpIEZPUiBQT1dFUlBDCitNOglN
YWhlc2ggSiBTYWxnYW9ua2FyIDxtYWhlc2hAbGludXguaWJtLmNvbT4KK1I6CU9saXZlciBPJ0hh
bGxvcmFuIDxvb2hhbGxAZ21haWwuY29tPgorTDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5v
cmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9QQ0kvcGNpLWVycm9yLXJlY292ZXJ5
LnJzdAorRjoJRG9jdW1lbnRhdGlvbi9hcmNoL3Bvd2VycGMvZWVoLXBjaS1lcnJvci1yZWNvdmVy
eS5yc3QKK0Y6CWFyY2gvcG93ZXJwYy9pbmNsdWRlLyovZWVoKi5oCitGOglhcmNoL3Bvd2VycGMv
a2VybmVsL2VlaCouYworRjoJYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy8qL2VlaCouYworRjoJZHJp
dmVycy9wY2kvcGNpZS9hZXIuYworRjoJZHJpdmVycy9wY2kvcGNpZS9kcGMuYworRjoJZHJpdmVy
cy9wY2kvcGNpZS9lcnIuYworCitQQ0kgRVJST1IgUkVDT1ZFUlkKK006CUxpbmFzIFZlcHN0YXMg
PGxpbmFzdmVwc3Rhc0BnbWFpbC5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vUENJL3BjaS1lcnJvci1yZWNvdmVyeS5yc3QK
KworUENJIE1TSSBEUklWRVIgRk9SIEFMVEVSQSBNU0kgSVAKK006CUpveWNlIE9vaSA8am95Y2Uu
b29pQGludGVsLmNvbT4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9s
bGVyL2FsdHIsbXNpLWNvbnRyb2xsZXIueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9w
Y2llLWFsdGVyYS1tc2kuYworCitQQ0kgTVNJIERSSVZFUiBGT1IgQVBQTElFRE1JQ1JPIFhHRU5F
CitNOglUb2FuIExlIDx0b2FuQG9zLmFtcGVyZWNvbXB1dGluZy5jb20+CitMOglsaW51eC1wY2lA
dmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcg
KG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS94Z2VuZS1wY2ktbXNpLnR4dAorRjoJZHJp
dmVycy9wY2kvY29udHJvbGxlci9wY2kteGdlbmUtbXNpLmMKKworUENJIE5BVElWRSBIT1NUIEJS
SURHRSBBTkQgRU5EUE9JTlQgRFJJVkVSUworTToJTG9yZW56byBQaWVyYWxpc2kgPGxwaWVyYWxp
c2lAa2VybmVsLm9yZz4KK006CUtyenlzenRvZiBXaWxjennFhHNraSA8a3dAbGludXguY29tPgor
TToJTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9y
Zz4KK1I6CVJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+CitMOglsaW51eC1wY2lAdmdlci5r
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcv
cHJvamVjdC9saW51eC1wY2kvbGlzdC8KK0I6CWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZwor
QzoJaXJjOi8vaXJjLm9mdGMubmV0L2xpbnV4LXBjaQorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wY2kvcGNpLmdpdAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS8KK0Y6CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvCitG
Oglkcml2ZXJzL3BjaS9wY2ktYnJpZGdlLWVtdWwuYworRjoJZHJpdmVycy9wY2kvcGNpLWJyaWRn
ZS1lbXVsLmgKKworUENJIFBFRVItVE8tUEVFUiBETUEgKFAyUERNQSkKK006CUJqb3JuIEhlbGdh
YXMgPGJoZWxnYWFzQGdvb2dsZS5jb20+CitNOglMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0BkZWx0
YXRlZS5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1E6
CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1wY2kvbGlzdC8KK0I6
CWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZworQzoJaXJjOi8vaXJjLm9mdGMubmV0L2xpbnV4
LXBjaQorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp
dC9wY2kvcGNpLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3BjaS9wMnBkbWEucnN0
CitGOglkcml2ZXJzL3BjaS9wMnBkbWEuYworRjoJaW5jbHVkZS9saW51eC9wY2ktcDJwZG1hLmgK
KworUENJIFBPV0VSIENPTlRST0wKK006CUJhcnRvc3ogR29sYXN6ZXdza2kgPGJyZ2xAYmdkZXYu
cGw+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQg
Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BjaS9wY2kuZ2l0
CitGOglkcml2ZXJzL3BjaS9wd3JjdHJsLyoKK0Y6CWluY2x1ZGUvbGludXgvcGNpLXB3cmN0cmwu
aAorCitQQ0kgU1VCU1lTVEVNCitNOglCam9ybiBIZWxnYWFzIDxiaGVsZ2Fhc0Bnb29nbGUuY29t
PgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwczov
L3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtcGNpL2xpc3QvCitCOglodHRwczov
L2J1Z3ppbGxhLmtlcm5lbC5vcmcKK0M6CWlyYzovL2lyYy5vZnRjLm5ldC9saW51eC1wY2kKK1Q6
CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcGNpL3Bj
aS5naXQKK0Y6CURvY3VtZW50YXRpb24vUENJLworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3BjaS8KK0Y6CWFyY2gveDg2L2tlcm5lbC9lYXJseS1xdWlya3MuYworRjoJYXJj
aC94ODYva2VybmVsL3F1aXJrcy5jCitGOglhcmNoL3g4Ni9wY2kvCitGOglkcml2ZXJzL2FjcGkv
cGNpKgorRjoJZHJpdmVycy9wY2kvCitGOglpbmNsdWRlL2FzbS1nZW5lcmljL3BjaSoKK0Y6CWlu
Y2x1ZGUvbGludXgvb2ZfcGNpLmgKK0Y6CWluY2x1ZGUvbGludXgvcGNpKgorRjoJaW5jbHVkZS91
YXBpL2xpbnV4L3BjaSoKKworUENJIFNVQlNZU1RFTSBbUlVTVF0KK006CURhbmlsbyBLcnVtbXJp
Y2ggPGRha3JAa2VybmVsLm9yZz4KK1I6CUJqb3JuIEhlbGdhYXMgPGJoZWxnYWFzQGdvb2dsZS5j
b20+CitSOglLcnp5c3p0b2YgV2lsY3p5xYRza2kgPGt3aWxjenluc2tpQGtlcm5lbC5vcmc+CitM
OglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitDOglpcmM6Ly9pcmMu
b2Z0Yy5uZXQvbGludXgtcGNpCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L3BjaS9wY2kuZ2l0CitGOglydXN0L2hlbHBlcnMvcGNpLmMKK0Y6CXJ1
c3Qva2VybmVsL3BjaS5ycworRjoJc2FtcGxlcy9ydXN0L3J1c3RfZHJpdmVyX3BjaS5ycworCitQ
Q0lFIEJBTkRXSURUSCBDT05UUk9MTEVSCitNOglJbHBvIErDpHJ2aW5lbiA8aWxwby5qYXJ2aW5l
bkBsaW51eC5pbnRlbC5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK0Y6CWRyaXZlcnMvcGNpL3BjaWUvYndjdHJsLmMKK0Y6CWRyaXZlcnMvdGhlcm1hbC9w
Y2llX2Nvb2xpbmcuYworRjoJaW5jbHVkZS9saW51eC9wY2ktYndjdHJsLmgKK0Y6CXRvb2xzL3Rl
c3Rpbmcvc2VsZnRlc3RzL3BjaWVfYndjdHJsLworCitQQ0lFIERSSVZFUiBGT1IgQU1BWk9OIEFO
TkFQVVJOQSBMQUJTCitNOglKb25hdGhhbiBDaG9jcm9uIDxqb25ueWNAYW1hem9uLmNvbT4KK0w6
CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvcGNpZS1hbC50eHQKK0Y6CWRyaXZlcnMvcGNpL2Nv
bnRyb2xsZXIvZHdjL3BjaWUtYWwuYworCitQQ0lFIERSSVZFUiBGT1IgQU1MT0dJQyBNRVNPTgor
TToJWXVlIFdhbmcgPHl1ZS53YW5nQEFtbG9naWMuY29tPgorTDoJbGludXgtcGNpQHZnZXIua2Vy
bmVsLm9yZworTDoJbGludXgtYW1sb2dpY0BsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktbWVzb24uYworCitQQ0lFIERS
SVZFUiBGT1IgQVhJUyBBUlRQRUMKK006CUplc3BlciBOaWxzc29uIDxqZXNwZXIubmlsc3NvbkBh
eGlzLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAYXhpcy5jb20KK0w6CWxpbnV4LXBjaUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9wY2kvYXhpcyxhcnRwZWMqCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy8q
YXJ0cGVjKgorCitQQ0lFIERSSVZFUiBGT1IgQ0FWSVVNIFRIVU5ERVJYCitNOglSb2JlcnQgUmlj
aHRlciA8cnJpY0BrZXJuZWwub3JnPgorTDoJbGludXgtcGNpQHZnZXIua2VybmVsLm9yZworTDoJ
bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1z
dWJzY3JpYmVycykKK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2kt
dGh1bmRlci0qCisKK1BDSUUgRFJJVkVSIEZPUiBISVNJTElDT04KK006CVpob3UgV2FuZyA8d2Fu
Z3pob3UxQGhpc2lsaWNvbi5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWhpc2kuYworCitQ
Q0lFIERSSVZFUiBGT1IgSElTSUxJQ09OIEtJUklOCitNOglYaWFvd2VpIFNvbmcgPHNvbmd4aWFv
d2VpQGhpc2lsaWNvbi5jb20+CitNOglCaW5naHVpIFdhbmcgPHdhbmdiaW5naHVpQGhpc2lsaWNv
bi5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL2hpc2lsaWNvbixraXJpbi1wY2ll
LnlhbWwKK0Y6CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUta2lyaW4uYworCitQQ0lF
IERSSVZFUiBGT1IgSElTSUxJQ09OIFNUQgorTToJU2hhd24gR3VvIDxzaGF3bi5ndW9AbGluYXJv
Lm9yZz4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvaGlzaWxpY29uLWhpc3RiLXBjaWUu
dHh0CitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWhpc3RiLmMKKworUENJRSBE
UklWRVIgRk9SIElOVEVMIEtFRU0gQkFZCitNOglTcmlrYW50aCBUaG9rYWxhIDxzcmlrYW50aC50
aG9rYWxhQGludGVsLmNvbT4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9pbnRlbCxrZWVt
YmF5LXBjaWUqCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWtlZW1iYXkuYwor
CitQQ0lFIERSSVZFUiBGT1IgSU5URUwgTEdNIEdXIFNPQworTToJQ2h1YW5odWEgTGVpIDxsY2h1
YW5odWFAbWF4bGluZWFyLmNvbT4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvaW50ZWwt
Z3ctcGNpZS55YW1sCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWludGVsLWd3
LmMKKworUENJRSBEUklWRVIgRk9SIE1FRElBVEVLCitNOglSeWRlciBMZWUgPHJ5ZGVyLmxlZUBt
ZWRpYXRlay5jb20+CitNOglKaWFuanVuIFdhbmcgPGppYW5qdW4ud2FuZ0BtZWRpYXRlay5jb20+
CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1tZWRpYXRla0BsaXN0cy5p
bmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRl
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9tZWRpYXRlayoKK0Y6
CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvKm1lZGlhdGVrKgorCitQQ0lFIERSSVZFUiBGT1IgTUlD
Uk9DSElQCitNOglEYWlyZSBNY05hbWFyYSA8ZGFpcmUubWNuYW1hcmFAbWljcm9jaGlwLmNvbT4K
K0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9taWNyb2NoaXAqCitGOglkcml2ZXJzL3BjaS9j
b250cm9sbGVyL3BsZGEvKm1pY3JvY2hpcCoKKworUENJRSBEUklWRVIgRk9SIFFVQUxDT01NIE1T
TQorTToJTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJv
Lm9yZz4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3
Yy9wY2llLXFjb20tY29tbW9uLmMKK0Y6CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUt
cWNvbS5jCisKK1BDSUUgRFJJVkVSIEZPUiBST0NLQ0hJUAorTToJU2hhd24gTGluIDxzaGF3bi5s
aW5Acm9jay1jaGlwcy5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51
eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3JvY2tjaGlwLHJrMzM5OS1wY2llKgorRjoJ
ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwKgorCitQQ0lFIERSSVZFUiBGT1Ig
U09DSU9ORVhUIFVOSVBISUVSCitNOglLdW5paGlrbyBIYXlhc2hpIDxoYXlhc2hpLmt1bmloaWtv
QHNvY2lvbmV4dC5jb20+CitMOglsaW51eC1wY2lAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGNpL3NvY2lvbmV4dCx1
bmlwaGllci1wY2llKgorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS11bmlwaGll
cioKKworUENJRSBEUklWRVIgRk9SIFNUIFNQRUFSMTNYWAorTToJUHJhdHl1c2ggQW5hbmQgPHBy
YXR5dXNoLmFuYW5kQGdtYWlsLmNvbT4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjLypzcGVhcioKKworUENJ
RSBEUklWRVIgRk9SIFNUQVJGSVZFIEpINzF4MAorTToJS2V2aW4gWGllIDxrZXZpbi54aWVAc3Rh
cmZpdmV0ZWNoLmNvbT4KK0w6CWxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wY2kvc3RhcmZpdmUsamg3
MTEwLXBjaWUueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9wbGRhL3BjaWUtc3RhcmZp
dmUuYworCitQQ0lFIEVORFBPSU5UIERSSVZFUiBGT1IgUVVBTENPTU0KK006CU1hbml2YW5uYW4g
U2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNpdmFtQGxpbmFyby5vcmc+CitMOglsaW51eC1w
Y2lAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BjaS9xY29t
LHBjaWUtZXAueWFtbAorRjoJZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1xY29tLWNv
bW1vbi5jCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLXFjb20tZXAuYworCitQ
Q01DSUEgU1VCU1lTVEVNCitNOglEb21pbmlrIEJyb2Rvd3NraSA8bGludXhAZG9taW5pa2Jyb2Rv
d3NraS5uZXQ+CitTOglPZGQgRml4ZXMKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvYnJvZG8vbGludXguZ2l0CitGOglEb2N1bWVudGF0aW9uL3Bj
bWNpYS8KK0Y6CWRyaXZlcnMvcGNtY2lhLworRjoJaW5jbHVkZS9wY21jaWEvCitGOgl0b29scy9w
Y21jaWEvCisKK1BDTkVUMzIgTkVUV09SSyBEUklWRVIKK006CURvbiBGcnkgPHBjbmV0MzJAZnJv
bnRpZXIuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3BjbmV0MzIuYworCitQQ1JZUFQgUEFSQUxMRUwgQ1JZ
UFRPIEVOR0lORQorTToJU3RlZmZlbiBLbGFzc2VydCA8c3RlZmZlbi5rbGFzc2VydEBzZWN1bmV0
LmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWNyeXB0by9wY3J5cHQuYworRjoJaW5jbHVkZS9jcnlwdG8vcGNyeXB0LmgKKworUERTIERTQyBW
SVJUSU8gREFUQSBQQVRIIEFDQ0VMRVJBVE9SCitSOglTaGFubm9uIE5lbHNvbiA8c2hhbm5vbi5u
ZWxzb25AYW1kLmNvbT4KK0Y6CWRyaXZlcnMvdmRwYS9wZHMvCisKK1BFQ0kgSEFSRFdBUkUgTU9O
SVRPUklORyBEUklWRVJTCitNOglJd29uYSBXaW5pYXJza2EgPGl3b25hLndpbmlhcnNrYUBpbnRl
bC5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
RG9jdW1lbnRhdGlvbi9od21vbi9wZWNpLWNwdXRlbXAucnN0CitGOglEb2N1bWVudGF0aW9uL2h3
bW9uL3BlY2ktZGltbXRlbXAucnN0CitGOglkcml2ZXJzL2h3bW9uL3BlY2kvCisKK1BFQ0kgU1VC
U1lTVEVNCitNOglJd29uYSBXaW5pYXJza2EgPGl3b25hLndpbmlhcnNrYUBpbnRlbC5jb20+CitM
OglvcGVuYm1jQGxpc3RzLm96bGFicy5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGVj
aS8KK0Y6CURvY3VtZW50YXRpb24vcGVjaS8KK0Y6CWRyaXZlcnMvcGVjaS8KK0Y6CWluY2x1ZGUv
bGludXgvcGVjaS1jcHUuaAorRjoJaW5jbHVkZS9saW51eC9wZWNpLmgKKworUEVOU0FORE8gRVRI
RVJORVQgRFJJVkVSUworTToJU2hhbm5vbiBOZWxzb24gPHNoYW5ub24ubmVsc29uQGFtZC5jb20+
CitNOglCcmV0dCBDcmVlbGV5IDxicmV0dC5jcmVlbGV5QGFtZC5jb20+CitMOgluZXRkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcv
ZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvcGVuc2FuZG8vaW9uaWMucnN0CitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC9wZW5zYW5kby8KKworUEVSLUNQVSBNRU1PUlkgQUxMT0NBVE9SCitNOglEZW5u
aXMgWmhvdSA8ZGVubmlzQGtlcm5lbC5vcmc+CitNOglUZWp1biBIZW8gPHRqQGtlcm5lbC5vcmc+
CitNOglDaHJpc3RvcGggTGFtZXRlciA8Y2xAbGludXguY29tPgorTDoJbGludXgtbW1Aa3ZhY2su
b3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L2Rlbm5pcy9wZXJjcHUuZ2l0CitGOglhcmNoLyovaW5jbHVkZS9hc20v
cGVyY3B1LmgKK0Y6CWluY2x1ZGUvbGludXgvcGVyY3B1Ki5oCitGOglsaWIvcGVyY3B1Ki5jCitG
OgltbS9wZXJjcHUqLmMKKworUEVSLVRBU0sgREVMQVkgQUNDT1VOVElORworTToJQmFsYmlyIFNp
bmdoIDxic2luZ2hhcm9yYUBnbWFpbC5jb20+CitNOglZYW5nIFlhbmcgPHlhbmcueWFuZzI5QHp0
ZS5jb20uY24+CitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL2xpbnV4L2RlbGF5YWNjdC5oCitG
OglrZXJuZWwvZGVsYXlhY2N0LmMKKworUEVSRk9STUFOQ0UgRVZFTlRTIFNVQlNZU1RFTQorTToJ
UGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgorTToJSW5nbyBNb2xuYXIgPG1p
bmdvQHJlZGhhdC5jb20+CitNOglBcm5hbGRvIENhcnZhbGhvIGRlIE1lbG8gPGFjbWVAa2VybmVs
Lm9yZz4KK006CU5hbWh5dW5nIEtpbSA8bmFtaHl1bmdAa2VybmVsLm9yZz4KK1I6CU1hcmsgUnV0
bGFuZCA8bWFyay5ydXRsYW5kQGFybS5jb20+CitSOglBbGV4YW5kZXIgU2hpc2hraW4gPGFsZXhh
bmRlci5zaGlzaGtpbkBsaW51eC5pbnRlbC5jb20+CitSOglKaXJpIE9sc2EgPGpvbHNhQGtlcm5l
bC5vcmc+CitSOglJYW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+CitSOglBZHJpYW4gSHVu
dGVyIDxhZHJpYW4uaHVudGVyQGludGVsLmNvbT4KK1I6CSJMaWFuZywgS2FuIiA8a2FuLmxpYW5n
QGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LXBlcmYtdXNlcnNAdmdlci5rZXJuZWwub3JnCitM
OglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8v
cGVyZi53aWtpLmtlcm5lbC5vcmcvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L3RpcC90aXAuZ2l0IHBlcmYvY29yZQorVDoJZ2l0IGdpdDovL2dp
dC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wZXJmL3BlcmYtdG9vbHMuZ2l0
IHBlcmYtdG9vbHMKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl
cm5lbC9naXQvcGVyZi9wZXJmLXRvb2xzLW5leHQuZ2l0IHBlcmYtdG9vbHMtbmV4dAorRjoJYXJj
aC8qL2V2ZW50cy8qCitGOglhcmNoLyovZXZlbnRzLyovKgorRjoJYXJjaC8qL2luY2x1ZGUvYXNt
L3BlcmZfZXZlbnQuaAorRjoJYXJjaC8qL2tlcm5lbC8qLyovcGVyZl9ldmVudCouYworRjoJYXJj
aC8qL2tlcm5lbC8qL3BlcmZfZXZlbnQqLmMKK0Y6CWFyY2gvKi9rZXJuZWwvcGVyZl9jYWxsY2hh
aW4uYworRjoJYXJjaC8qL2tlcm5lbC9wZXJmX2V2ZW50Ki5jCitGOglpbmNsdWRlL2xpbnV4L3Bl
cmZfZXZlbnQuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3BlcmZfZXZlbnQuaAorRjoJa2VybmVs
L2V2ZW50cy8qCitGOgl0b29scy9saWIvcGVyZi8KK0Y6CXRvb2xzL3BlcmYvCisKK1BFUkZPUk1B
TkNFIEVWRU5UUyBUT09MSU5HIEFSTTY0CitSOglKb2huIEdhcnJ5IDxqb2huLmcuZ2FycnlAb3Jh
Y2xlLmNvbT4KK1I6CVdpbGwgRGVhY29uIDx3aWxsQGtlcm5lbC5vcmc+CitSOglKYW1lcyBDbGFy
ayA8amFtZXMuY2xhcmtAbGluYXJvLm9yZz4KK1I6CU1pa2UgTGVhY2ggPG1pa2UubGVhY2hAbGlu
YXJvLm9yZz4KK1I6CUxlbyBZYW4gPGxlby55YW5AbGludXguZGV2PgorTDoJbGludXgtYXJtLWtl
cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykK
K1M6CVN1cHBvcnRlZAorRjoJdG9vbHMvYnVpbGQvZmVhdHVyZS90ZXN0LWxpYm9wZW5jc2QuYwor
RjoJdG9vbHMvcGVyZi9hcmNoL2FybSovCitGOgl0b29scy9wZXJmL3BtdS1ldmVudHMvYXJjaC9h
cm02NC8KK0Y6CXRvb2xzL3BlcmYvdXRpbC9hcm0tc3BlKgorRjoJdG9vbHMvcGVyZi91dGlsL2Nz
LWV0bSoKKworUEVSU09OQUxJVFkgSEFORExJTkcKK006CUNocmlzdG9waCBIZWxsd2lnIDxoY2hA
aW5mcmFkZWFkLm9yZz4KK0w6CWxpbnV4LWFiaS1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQK
K1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvbGludXgvcGVyc29uYWxpdHkuaAorRjoJaW5jbHVk
ZS91YXBpL2xpbnV4L3BlcnNvbmFsaXR5LmgKKworUEhPRU5JWCBSQyBGTElHSFQgQ09OVFJPTExF
UiBBREFQVEVSCitNOglNYXJjdXMgRm9sa2Vzc29uIDxtYXJjdXMuZm9sa2Vzc29uQGdtYWlsLmNv
bT4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9pbnB1dC9kZXZpY2VzL3B4cmMucnN0CitGOglkcml2ZXJzL2lucHV0L2pveXN0
aWNrL3B4cmMuYworCitQSE9ORVQgUFJPVE9DT0wKK006CVJlbWkgRGVuaXMtQ291cm1vbnQgPGNv
dXJtaXNjaEBnbWFpbC5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29y
a2luZy9waG9uZXQucnN0CitGOglpbmNsdWRlL2xpbnV4L3Bob25ldC5oCitGOglpbmNsdWRlL25l
dC9waG9uZXQvCitGOglpbmNsdWRlL3VhcGkvbGludXgvcGhvbmV0LmgKK0Y6CW5ldC9waG9uZXQv
CisKK1BIUkFNIE1URCBEUklWRVIKK006CUpvZXJuIEVuZ2VsIDxqb2VybkBsYXp5YmFzdGFyZC5v
cmc+CitMOglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9tdGQvZGV2aWNlcy9waHJhbS5jCisKK1BJQ09MQ0QgSElEIERSSVZFUgorTToJQnJ1
bm8gUHLDqW1vbnQgPGJvbmJvbnNAbGludXgtdnNlcnZlci5vcmc+CitMOglsaW51eC1pbnB1dEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaGlkL2hpZC1waWNvbGNk
KgorCitQSURGRCBBUEkKK006CUNocmlzdGlhbiBCcmF1bmVyIDxjaHJpc3RpYW5AYnJhdW5lci5p
bz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdp
dCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYnJhdW5lci9s
aW51eC5naXQKK0Y6CXNhbXBsZXMvcGlkZmQvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9j
bG9uZTMvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9waWRfbmFtZXNwYWNlLworRjoJdG9v
bHMvdGVzdGluZy9zZWxmdGVzdHMvcGlkZmQvCitLOgkoP2kpcGlkZmQKK0s6CSg/aSljbG9uZTMK
K0s6CVxiKGNsb25lX2FyZ3N8a2VybmVsX2Nsb25lX2FyZ3MpXGIKKworUElOIENPTlRST0wgU1VC
U1lTVEVNCitNOglMaW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitMOgls
aW51eC1ncGlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dp
dC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9saW51c3cvbGludXgtcGluY3Ry
bC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsLworRjoJ
RG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Bpbi1jb250cm9sLnJzdAorRjoJZHJpdmVycy9waW5j
dHJsLworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9waW5jdHJsLworRjoJaW5jbHVkZS9saW51eC9w
aW5jdHJsLworCitQSU4gQ09OVFJPTExFUiAtIEFJUk9IQQorTToJTG9yZW56byBCaWFuY29uaSA8
bG9yZW56b0BrZXJuZWwub3JnPgorTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMuaW5mcmFkZWFkLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9haXJvaGEsZW43NTgxLXBpbmN0
cmwueWFtbAorRjoJZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtYWlyb2hhLmMKKwor
UElOIENPTlRST0xMRVIgLSBBTUQKK006CUJhc2F2YXJhaiBOYXRpa2FyIDxCYXNhdmFyYWouTmF0
aWthckBhbWQuY29tPgorTToJU2h5YW0gU3VuZGFyIFMgSyA8U2h5YW0tc3VuZGFyLlMta0BhbWQu
Y29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtYW1kLmMKKwor
UElOIENPTlRST0xMRVIgLSBGUkVFU0NBTEUKK006CURvbmcgQWlzaGVuZyA8YWlzaGVuZy5kb25n
QG54cC5jb20+CitNOglGYWJpbyBFc3RldmFtIDxmZXN0ZXZhbUBnbWFpbC5jb20+CitNOglTaGF3
biBHdW8gPHNoYXduZ3VvQGtlcm5lbC5vcmc+CitNOglKYWNreSBCYWkgPHBpbmcuYmFpQG54cC5j
b20+CitSOglQZW5ndXRyb25peCBLZXJuZWwgVGVhbSA8a2VybmVsQHBlbmd1dHJvbml4LmRlPgor
UjoJTlhQIFMzMiBMaW51eCBUZWFtIDxzMzJAbnhwLmNvbT4KK0w6CWxpbnV4LWdwaW9Admdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvcGluY3RybC9mc2wsKgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3BpbmN0cmwvbnhwLHMzMioKK0Y6CWRyaXZlcnMvcGluY3RybC9mcmVlc2NhbGUvCitGOglkcml2
ZXJzL3BpbmN0cmwvbnhwLworCitQSU4gQ09OVFJPTExFUiAtIElOVEVMCitNOglNaWthIFdlc3Rl
cmJlcmcgPG1pa2Eud2VzdGVyYmVyZ0BsaW51eC5pbnRlbC5jb20+CitNOglBbmR5IFNoZXZjaGVu
a28gPGFuZHlAa2VybmVsLm9yZz4KK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJu
ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9waW5jdHJsL2ludGVsLmdpdAorRjoJZHJp
dmVycy9waW5jdHJsL2ludGVsLworCitQSU4gQ09OVFJPTExFUiAtIEtFRU1CQVkKK006CUxha3No
bWkgU293amFueWEgRCA8bGFrc2htaS5zb3dqYW55YS5kQGludGVsLmNvbT4KK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy9waW5jdHJsL3BpbmN0cmwta2VlbWJheSoKKworUElOIENPTlRST0xMRVIg
LSBNRURJQVRFSworTToJU2VhbiBXYW5nIDxzZWFuLndhbmdAa2VybmVsLm9yZz4KK0w6CWxpbnV4
LW1lZGlhdGVrQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmli
ZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3BpbmN0cmwvbWVkaWF0ZWssbXQ2NXh4LXBpbmN0cmwueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWVkaWF0ZWssbXQ2Nzc5LXBpbmN0cmwueWFtbAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvbWVkaWF0ZWssbXQ3
NjIyLXBpbmN0cmwueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bp
bmN0cmwvbWVkaWF0ZWssbXQ4MTgzLXBpbmN0cmwueWFtbAorRjoJZHJpdmVycy9waW5jdHJsL21l
ZGlhdGVrLworCitQSU4gQ09OVFJPTExFUiAtIE1FRElBVEVLIE1JUFMKK006CUNoZXN0ZXIgQS4g
VW5hbCA8Y2hlc3Rlci5hLnVuYWxAYXJpbmM5LmNvbT4KK006CVNlcmdpbyBQYXJhY3VlbGxvcyA8
c2VyZ2lvLnBhcmFjdWVsbG9zQGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1lZGlhdGVrQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtbWlw
c0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9waW5jdHJsL21lZGlhdGVrLG10NzYyMC1waW5jdHJsLnlhbWwKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL21lZGlhdGVrLG10NzYyMS1w
aW5jdHJsLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJs
L21lZGlhdGVrLG10NzZ4OC1waW5jdHJsLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9waW5jdHJsL3JhbGluayxydDI4ODAtcGluY3RybC55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9yYWxpbmsscnQzMDV4LXBpbmN0cmwu
eWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BpbmN0cmwvcmFsaW5r
LHJ0MzM1Mi1waW5jdHJsLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9waW5jdHJsL3JhbGluayxydDM4ODMtcGluY3RybC55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9yYWxpbmsscnQ1MzUwLXBpbmN0cmwueWFtbAorRjoJ
ZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXQ3NjIwLmMKK0Y6CWRyaXZlcnMvcGlu
Y3RybC9tZWRpYXRlay9waW5jdHJsLW10NzYyMS5jCitGOglkcml2ZXJzL3BpbmN0cmwvbWVkaWF0
ZWsvcGluY3RybC1tdDc2eDguYworRjoJZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwt
bXRtaXBzLioKK0Y6CWRyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJsLXJ0Mjg4MC5jCitG
Oglkcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1ydDMwNXguYworRjoJZHJpdmVycy9w
aW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtcnQzODgzLmMKKworUElOIENPTlRST0xMRVIgLSBNSUNS
T0NISVAgQVQ5MQorTToJTHVkb3ZpYyBEZXNyb2NoZXMgPGx1ZG92aWMuZGVzcm9jaGVzQG1pY3Jv
Y2hpcC5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVy
YXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9ncGlvL2dwaW8tc2FtYTVkMi1waW9idS5jCitGOglk
cml2ZXJzL3BpbmN0cmwvcGluY3RybC1hdDkxKgorCitQSU4gQ09OVFJPTExFUiAtIFFVQUxDT01N
CitNOglCam9ybiBBbmRlcnNzb24gPGFuZGVyc3NvbkBrZXJuZWwub3JnPgorTDoJbGludXgtYXJt
LW1zbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0M6CWlyYzovL2lyYy5vZnRjLm5l
dC9saW51eC1tc20KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJs
L3Fjb20sKgorRjoJZHJpdmVycy9waW5jdHJsL3Fjb20vCisKK1BJTiBDT05UUk9MTEVSIC0gUkVO
RVNBUworTToJR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydCtyZW5lc2FzQGdsaWRlci5iZT4KK0w6
CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQg
Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dlZXJ0L3JlbmVz
YXMtZHJpdmVycy5naXQgcmVuZXNhcy1waW5jdHJsCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvcGluY3RybC9yZW5lc2FzLCoKK0Y6CWRyaXZlcnMvcGluY3RybC9yZW5lc2Fz
LworCitQSU4gQ09OVFJPTExFUiAtIFNBTVNVTkcKK006CUtyenlzenRvZiBLb3psb3dza2kgPGty
emtAa2VybmVsLm9yZz4KK006CVN5bHdlc3RlciBOYXdyb2NraSA8cy5uYXdyb2NraUBzYW1zdW5n
LmNvbT4KK1I6CUFsaW0gQWtodGFyIDxhbGltLmFraHRhckBzYW1zdW5nLmNvbT4KK0w6CWxpbnV4
LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2Ny
aWJlcnMpCitMOglsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1zYW1zdW5n
LXNvYy9saXN0LworQjoJbWFpbHRvOmxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZwor
QzoJaXJjOi8vaXJjLmxpYmVyYS5jaGF0L2xpbnV4LWV4eW5vcworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9waW5jdHJsL3NhbXN1bmcuZ2l0CitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGluY3RybC9zYW1zdW5nLHBpbmN0
cmwqeWFtbAorRjoJZHJpdmVycy9waW5jdHJsL3NhbXN1bmcvCisKK1BJTiBDT05UUk9MTEVSIC0g
U0lOR0xFCitNOglUb255IExpbmRncmVuIDx0b255QGF0b21pZGUuY29tPgorTToJSGFvamlhbiBa
aHVhbmcgPGhhb2ppYW4uemh1YW5nQGxpbmFyby5vcmc+CitMOglsaW51eC1hcm0ta2VybmVsQGxp
c3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJbGlu
dXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGluY3Ry
bC9waW5jdHJsLXNpbmdsZS5jCisKK1BJTiBDT05UUk9MTEVSIC0gU1VOUExVUyAvIFRJQkJPCitN
OglEdm9ya2luIERtaXRyeSA8ZHZvcmtpbkB0aWJiby5jb20+CitNOglXZWxscyBMdSA8d2VsbHNs
dXR3QGdtYWlsLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAo
bW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitXOglodHRwczov
L3N1bnBsdXMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2Mvb3ZlcnZpZXcKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waW5jdHJsL3N1bnBsdXMsKgorRjoJZHJpdmVy
cy9waW5jdHJsL3N1bnBsdXMvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3BpbmN0cmwvc3BwY3Rs
Ki5oCisKK1BJTkU2NCBQSU5FUEhPTkUgS0VZQk9BUkQgRFJJVkVSCitNOglTYW11ZWwgSG9sbGFu
ZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lucHV0L3BpbmU2NCxwaW5lcGhvbmUta2V5Ym9hcmQueWFtbAor
RjoJZHJpdmVycy9pbnB1dC9rZXlib2FyZC9waW5lcGhvbmUta2V5Ym9hcmQuYworCitQS1RDRFZE
IERSSVZFUgorTToJbGludXgtYmxvY2tAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRy
aXZlcnMvYmxvY2svcGt0Y2R2ZC5jCitGOglpbmNsdWRlL2xpbnV4L3BrdGNkdmQuaAorRjoJaW5j
bHVkZS91YXBpL2xpbnV4L3BrdGNkdmQuaAorCitQTEFOVE9XRVIgUE1TNzAwMyBBSVIgUE9MTFVU
SU9OIFNFTlNPUiBEUklWRVIKK006CVRvbWFzeiBEdXN6eW5za2kgPHRkdXN6eW5zQGdtYWlsLmNv
bT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9p
aW8vY2hlbWljYWwvcGxhbnRvd2VyLHBtczcwMDMueWFtbAorRjoJZHJpdmVycy9paW8vY2hlbWlj
YWwvcG1zNzAwMy5jCisKK1BMQ0EgUkVDT05DSUxJQVRJT04gU1VCTEFZRVIgKElFRUU4MDIuMyBD
bGF1c2UgMTQ4KQorTToJUGllcmdpb3JnaW8gQmVydXRvIDxwaWVyZ2lvcmdpby5iZXJ1dG9AZ21h
aWwuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9uZXQvcGh5L21kaW8tb3Blbi1hbGxpYW5jZS5oCitGOgluZXQvZXRodG9vbC9wbGNhLmMK
KworUExETUZXIExJQlJBUlkKK006CUphY29iIEtlbGxlciA8amFjb2IuZS5rZWxsZXJAaW50ZWwu
Y29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3BsZG1mdy8K
K0Y6CWluY2x1ZGUvbGludXgvcGxkbWZ3LmgKK0Y6CWxpYi9wbGRtZncvCisKK1BMWCBETUEgRFJJ
VkVSCitNOglMb2dhbiBHdW50aG9ycGUgPGxvZ2FuZ0BkZWx0YXRlZS5jb20+CitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL2RtYS9wbHhfZG1hLmMKKworUE0tR1JBUEggVVRJTElUWQorTToJIlRv
ZGQgRSBCcmFuZHQiIDx0b2RkLmUuYnJhbmR0QGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LXBt
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwczovLzAxLm9yZy9wbS1ncmFw
aAorQjoJaHR0cHM6Ly9idWd6aWxsYS5rZXJuZWwub3JnL2J1Z2xpc3QuY2dpP2NvbXBvbmVudD1w
bS1ncmFwaCZwcm9kdWN0PVRvb2xzCitUOglnaXQgZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC9wbS1n
cmFwaAorRjoJdG9vbHMvcG93ZXIvcG0tZ3JhcGgKKworUE02NzY0VFIgRFJJVkVSCitNOglDaGFy
bGVzIEhzdQk8aHN1Lnl1bmd0ZW5nQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9wbTY3NjR0ci5y
c3QKK0Y6CWRyaXZlcnMvaHdtb24vcG1idXMvcG02NzY0dHIuYworCitQTUMgU0lFUlJBIE1heFJB
SUQgRFJJVkVSCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglo
dHRwOi8vd3d3LnBtYy1zaWVycmEuY29tLworRjoJZHJpdmVycy9zY3NpL3BtY3JhaWQuKgorCitQ
TUMgU0lFUlJBIFBNODAwMSBEUklWRVIKK006CUphY2sgV2FuZyA8amlucHUud2FuZ0BjbG91ZC5p
b25vcy5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitG
Oglkcml2ZXJzL3Njc2kvcG04MDAxLworCitQTkkgUk0zMTAwIElJTyBEUklWRVIKK006CVNvbmcg
UWlhbmcgPHNvbmdxaWFuZzEzMDQ1MjFAZ21haWwuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL2lpby9tYWduZXRvbWV0ZXIvcG5pLHJtMzEwMC55YW1sCitGOglkcml2ZXJzL2lpby9tYWdu
ZXRvbWV0ZXIvcm0zMTAwKgorCitQTlAgU1VQUE9SVAorTToJIlJhZmFlbCBKLiBXeXNvY2tpIiA8
cmFmYWVsLmoud3lzb2NraUBpbnRlbC5jb20+CitMOglsaW51eC1hY3BpQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbnAvCitGOglpbmNsdWRlL2xpbnV4L3BucC5o
CisKK1BPUlRXRUxMIEVDIERSSVZFUgorTToJWWVuLUNoaSBIdWFuZyA8amVzc2UuaHVhbmdAcG9y
dHdlbGwuY29tLnR3PgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L3BvcnR3ZWxsLWVjLmMKKworUE9T
SVggQ0xPQ0tTIGFuZCBUSU1FUlMKK006CUFubmEtTWFyaWEgQmVobnNlbiA8YW5uYS1tYXJpYUBs
aW51dHJvbml4LmRlPgorTToJRnJlZGVyaWMgV2Vpc2JlY2tlciA8ZnJlZGVyaWNAa2VybmVsLm9y
Zz4KK006CVRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorTDoJbGludXgta2Vy
bmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJu
ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXAvdGlwLmdpdCB0aW1lcnMvY29yZQor
RjoJZnMvdGltZXJmZC5jCitGOglpbmNsdWRlL2xpbnV4L3RpbWVfbmFtZXNwYWNlLmgKK0Y6CWlu
Y2x1ZGUvbGludXgvdGltZXJmZC5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvdGltZS5oCitGOglp
bmNsdWRlL3VhcGkvbGludXgvdGltZXJmZC5oCitGOglpbmNsdWRlL3RyYWNlL2V2ZW50cy90aW1l
cioKK0Y6CWtlcm5lbC90aW1lL2l0aW1lci5jCitGOglrZXJuZWwvdGltZS9wb3NpeC0qCitGOglr
ZXJuZWwvdGltZS9uYW1lc3BhY2UuYworCitQT1dFUiBNQU5BR0VNRU5UIENPUkUKK006CSJSYWZh
ZWwgSi4gV3lzb2NraSIgPHJhZmFlbEBrZXJuZWwub3JnPgorTDoJbGludXgtcG1Admdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0I6CWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZworVDoJ
Z2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yYWZhZWwv
bGludXgtcG0KK0Y6CWRyaXZlcnMvYmFzZS9wb3dlci8KK0Y6CWRyaXZlcnMvcG93ZXJjYXAvCitG
OglpbmNsdWRlL2xpbnV4L2ludGVsX3JhcGwuaAorRjoJaW5jbHVkZS9saW51eC9wbS5oCitGOglp
bmNsdWRlL2xpbnV4L3BtXyoKK0Y6CWluY2x1ZGUvbGludXgvcG93ZXJjYXAuaAorRjoJa2VybmVs
L2NvbmZpZ3Mvbm9wbS5jb25maWcKKworUE9XRVIgU0VRVUVOQ0lORworTToJQmFydG9zeiBHb2xh
c3pld3NraSA8YnJnbEBiZ2Rldi5wbD4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC9icmdsL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3B3cnNl
cS5yc3QKK0Y6CWRyaXZlcnMvcG93ZXIvc2VxdWVuY2luZy8KK0Y6CWluY2x1ZGUvbGludXgvcHdy
c2VxLworCitQT1dFUiBTVEFURSBDT09SRElOQVRJT04gSU5URVJGQUNFIChQU0NJKQorTToJTWFy
ayBSdXRsYW5kIDxtYXJrLnJ1dGxhbmRAYXJtLmNvbT4KK006CUxvcmVuem8gUGllcmFsaXNpIDxs
cGllcmFsaXNpQGtlcm5lbC5vcmc+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVh
ZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FybS9wc2NpLnlhbWwKK0Y6CWRyaXZl
cnMvZmlybXdhcmUvcHNjaS8KK0Y6CWluY2x1ZGUvbGludXgvcHNjaS5oCitGOglpbmNsdWRlL3Vh
cGkvbGludXgvcHNjaS5oCisKK1BPV0VSIFNVUFBMWSBDTEFTUy9TVUJTWVNURU0gYW5kIERSSVZF
UlMKK006CVNlYmFzdGlhbiBSZWljaGVsIDxzcmVAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBtQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3Jn
L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9zcmUvbGludXgtcG93ZXItc3VwcGx5LmdpdAorRjoJ
RG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1jbGFzcy1wb3dlcgorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3N1cHBseS8KK0Y6CWRyaXZlcnMvcG93ZXIv
c3VwcGx5LworRjoJaW5jbHVkZS9saW51eC9wb3dlci8KK0Y6CWluY2x1ZGUvbGludXgvcG93ZXJf
c3VwcGx5LmgKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Bvd2VyX3N1cHBseS8KKworUE9X
RVJOViBPUEVSQVRPUiBQQU5FTCBMQ0QgRElTUExBWSBEUklWRVIKK006CVN1cmFqIEppdGluZGFy
IFNpbmdoIDxzaml0aW5kYXJzaW5naEBnbWFpbC5jb20+CitMOglsaW51eHBwYy1kZXZAbGlzdHMu
b3psYWJzLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9jaGFyL3Bvd2VybnYtb3AtcGFu
ZWwuYworCitQUFAgT1ZFUiBBVE0gKFJGQyAyMzY0KQorTToJTWl0Y2hlbGwgQmxhbmsgSnIgPG1p
dGNoQHNmZ290aC5jb20+CitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL3VhcGkvbGludXgvYXRt
cHBwLmgKK0Y6CW5ldC9hdG0vcHBwb2F0bS5jCisKK1BQUCBPVkVSIEVUSEVSTkVUCitNOglNaWNo
YWwgT3N0cm93c2tpIDxtb3N0cm93c0BlYXJ0aGxpbmsubmV0PgorUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9uZXQvcHBwL3BwcG9lLmMKK0Y6CWRyaXZlcnMvbmV0L3BwcC9wcHBveC5jCisKK1BQ
UCBPVkVSIEwyVFAKK006CUphbWVzIENoYXBtYW4gPGpjaGFwbWFuQGthdGFsaXguY29tPgorUzoJ
TWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC9pZl9wcHBvbDJ0cC5oCitGOglpbmNsdWRlL3Vh
cGkvbGludXgvaWZfcHBwb2wydHAuaAorRjoJbmV0L2wydHAvbDJ0cF9wcHAuYworCitQUFAgUFJP
VE9DT0wgRFJJVkVSUyBBTkQgQ09NUFJFU1NPUlMKK0w6CWxpbnV4LXBwcEB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9uZXQvcHBwL3BwcF8qCisKK1BQUyBTVVBQT1JUCitN
OglSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+CitMOglsaW51eHBwc0Bt
bC5lbm5lZW5uZS5jb20gKHN1YnNjcmliZXJzLW9ubHkpCitTOglNYWludGFpbmVkCitXOglodHRw
Oi8vd2lraS5lbm5lZW5uZS5jb20vaW5kZXgucGhwL0xpbnV4UFBTX3N1cHBvcnQKK0Y6CURvY3Vt
ZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcHBzCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0
aW5nL3N5c2ZzLXBwcy1nZW4KK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtcHBz
LWdlbi10aW8KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wcHMvcHBzLWdw
aW8ueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Bwcy5yc3QKK0Y6CWRyaXZlcnMv
cHBzLworRjoJaW5jbHVkZS9saW51eC9wcHMqLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9wcHMu
aAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3Bwc19nZW4uaAorCitQUkVTU1VSRSBTVEFMTCBJTkZP
Uk1BVElPTiAoUFNJKQorTToJSm9oYW5uZXMgV2VpbmVyIDxoYW5uZXNAY21weGNoZy5vcmc+CitN
OglTdXJlbiBCYWdoZGFzYXJ5YW4gPHN1cmVuYkBnb29nbGUuY29tPgorUjoJUGV0ZXIgWmlsanN0
cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51
eC9wc2kqCitGOglrZXJuZWwvc2NoZWQvcHNpLmMKKworUFJPUEVMTEVSIEJVSUxECitNOglSb25n
IFh1IDx4dXJAZ29vZ2xlLmNvbT4KK006CUhhbiBTaGVuIDxzaGVuaGFuQGdvb2dsZS5jb20+CitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2LXRvb2xzL3Byb3BlbGxlci5yc3QKK0Y6
CXNjcmlwdHMvTWFrZWZpbGUucHJvcGVsbGVyCisKK1BSSU5USworTToJUGV0ciBNbGFkZWsgPHBt
bGFkZWtAc3VzZS5jb20+CitSOglTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBnb29kbWlzLm9yZz4K
K1I6CUpvaG4gT2duZXNzIDxqb2huLm9nbmVzc0BsaW51dHJvbml4LmRlPgorUjoJU2VyZ2V5IFNl
bm96aGF0c2t5IDxzZW5vemhhdHNreUBjaHJvbWl1bS5vcmc+CitTOglNYWludGFpbmVkCitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3ByaW50ay9s
aW51eC5naXQKK0Y6CWluY2x1ZGUvbGludXgvcHJpbnRrLmgKK0Y6CWtlcm5lbC9wcmludGsvCisK
K1BSSU5USyBJTkRFWElORworUjoJQ2hyaXMgRG93biA8Y2hyaXNAY2hyaXNkb3duLm5hbWU+CitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3ByaW50ay1pbmRleC5yc3QK
K0Y6CWtlcm5lbC9wcmludGsvaW5kZXguYworSzoJcHJpbnRrX2luZGV4CisKK1BST0MgRklMRVNZ
U1RFTQorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtZnNkZXZlbEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3Rl
bXMvcHJvYy5yc3QKK0Y6CWZzL3Byb2MvCitGOglpbmNsdWRlL2xpbnV4L3Byb2NfZnMuaAorRjoJ
dG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcHJvYy8KKworUFJPQyBTWVNDVEwKK006CUtlZXMgQ29v
ayA8a2Vlc0BrZXJuZWwub3JnPgorTToJSm9lbCBHcmFuYWRvcyA8am9lbC5ncmFuYWRvc0BrZXJu
ZWwub3JnPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtZnNkZXZl
bEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvc3lzY3RsL3N5c2N0bC5naXQgc3lzY3RsLW5l
eHQKK0Y6CWZzL3Byb2MvcHJvY19zeXNjdGwuYworRjoJaW5jbHVkZS9saW51eC9zeXNjdGwuaAor
RjoJa2VybmVsL3N5c2N0bCoKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3N5c2N0bC8qCitG
OglsaWIvdGVzdF9zeXNjdGwuYworRjoJc2NyaXB0cy9jaGVjay1zeXNjdGwtZG9jcworCitQUzMg
TkVUV09SSyBTVVBQT1JUCitNOglHZW9mZiBMZXZhbmQgPGdlb2ZmQGluZnJhZGVhZC5vcmc+CitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitMOglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvdG9zaGliYS9wczNfZ2Vs
aWNfbmV0LioKKworUFMzIFBMQVRGT1JNIFNVUFBPUlQKK006CUdlb2ZmIExldmFuZCA8Z2VvZmZA
aW5mcmFkZWFkLm9yZz4KK0w6CWxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnCitTOglNYWlu
dGFpbmVkCitGOglhcmNoL3Bvd2VycGMvYm9vdC9wczMqCitGOglhcmNoL3Bvd2VycGMvaW5jbHVk
ZS9hc20vbHYxY2FsbC5oCitGOglhcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHMzKi5oCitGOglh
cmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzMy8KK0Y6CWRyaXZlcnMvKi9wczMqCitGOglkcml2ZXJz
L3BzMy8KK0Y6CWRyaXZlcnMvcnRjL3J0Yy1wczMuYworRjoJZHJpdmVycy91c2IvaG9zdC8qcHMz
LmMKK0Y6CXNvdW5kL3BwYy9zbmRfcHMzKgorCitQUzNWUkFNIERSSVZFUgorTToJSmltIFBhcmlz
IDxqaW1AanRhbi5jb20+CitNOglHZW9mZiBMZXZhbmQgPGdlb2ZmQGluZnJhZGVhZC5vcmc+CitM
OglsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9ibG9jay9wczN2cmFtLmMKKworUFNBTVBMRSBQQUNLRVQgU0FNUExJTkcgU1VQUE9SVAorTToJ
WW90YW0gR2lnaSA8eW90YW0uZ2lAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVk
ZS9uZXQvcHNhbXBsZS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvcHNhbXBsZS5oCitGOgluZXQv
cHNhbXBsZQorCitQU0UgTkVUV09SSyBEUklWRVIKK006CU9sZWtzaWogUmVtcGVsIDxvLnJlbXBl
bEBwZW5ndXRyb25peC5kZT4KK006CUtvcnkgTWFpbmNlbnQgPGtvcnkubWFpbmNlbnRAYm9vdGxp
bi5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3BzZS1wZC8KK0Y6CWRyaXZlcnMvbmV0
L3BzZS1wZC8KK0Y6CW5ldC9ldGh0b29sL3BzZS1wZC5jCisKK1BTVE9SRSBGSUxFU1lTVEVNCitN
OglLZWVzIENvb2sgPGtlZXNAa2VybmVsLm9yZz4KK1I6CVRvbnkgTHVjayA8dG9ueS5sdWNrQGlu
dGVsLmNvbT4KK1I6CUd1aWxoZXJtZSBHLiBQaWNjb2xpIDxncGljY29saUBpZ2FsaWEuY29tPgor
TDoJbGludXgtaGFyZGVuaW5nQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQg
Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tlZXMvbGludXgu
Z2l0IGZvci1uZXh0L3BzdG9yZQorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wc3RvcmUt
YmxrLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9yYW1vb3BzLnJzdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Jlc2VydmVkLW1lbW9yeS9yYW1vb3BzLnlh
bWwKK0Y6CWRyaXZlcnMvYWNwaS9hcGVpL2Vyc3QuYworRjoJZHJpdmVycy9maXJtd2FyZS9lZmkv
ZWZpLXBzdG9yZS5jCitGOglmcy9wc3RvcmUvCitGOglpbmNsdWRlL2xpbnV4L3BzdG9yZSoKK0s6
CVxiKHBzdG9yZXxyYW1vb3BzKQorCitQVDUxNjFMIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitN
OglDb3NtbyBDaG91IDxjb3Ntby5jaG91QHF1YW50YXR3LmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9wdDUx
NjFsLnJzdAorRjoJZHJpdmVycy9od21vbi9wdDUxNjFsLmMKKworUFRQIEhBUkRXQVJFIENMT0NL
IFNVUFBPUlQKK006CVJpY2hhcmQgQ29jaHJhbiA8cmljaGFyZGNvY2hyYW5AZ21haWwuY29tPgor
TDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL2xpbnV4
cHRwLnNvdXJjZWZvcmdlLm5ldC8KK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMt
cHRwCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcHRwLnJzdAorRjoJZHJpdmVycy9uZXQv
cGh5L2RwODM2NDAqCitGOglkcml2ZXJzL3B0cC8qCitGOglpbmNsdWRlL2xpbnV4L3B0cF9jbCoK
K0s6CSg/OlxifF8pcHRwKD86XGJ8XykKKworUFRQIE1PQ0tVUCBDTE9DSyBTVVBQT1JUCitNOglW
bGFkaW1pciBPbHRlYW4gPHZsYWRpbWlyLm9sdGVhbkBueHAuY29tPgorTDoJbmV0ZGV2QHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wdHAvcHRwX21vY2suYworRjoJ
aW5jbHVkZS9saW51eC9wdHBfbW9jay5oCisKK1BUUCBWSVJUVUFMIENMT0NLIFNVUFBPUlQKK006
CVlhbmdibyBMdSA8eWFuZ2JvLmx1QG54cC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3B0cC9wdHBfdmNsb2NrLmMKK0Y6CW5ldC9ldGh0
b29sL3BoY192Y2xvY2tzLmMKKworUFRQIFZNQ0xPQ0sgU1VQUE9SVAorTToJRGF2aWQgV29vZGhv
dXNlIDxkd213MkBpbmZyYWRlYWQub3JnPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9wdHAvcHRwX3ZtY2xvY2suYworRjoJaW5jbHVkZS91YXBp
L2xpbnV4L3ZtY2xvY2stYWJpLmgKKworUFRSQUNFIFNVUFBPUlQKK006CU9sZWcgTmVzdGVyb3Yg
PG9sZWdAcmVkaGF0LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvKi8qL3B0cmFjZSouYwor
RjoJYXJjaC8qL2luY2x1ZGUvYXNtL3B0cmFjZSouaAorRjoJYXJjaC8qL3B0cmFjZSouYworRjoJ
aW5jbHVkZS9hc20tZ2VuZXJpYy9zeXNjYWxsLmgKK0Y6CWluY2x1ZGUvbGludXgvcHRyYWNlLmgK
K0Y6CWluY2x1ZGUvbGludXgvcmVnc2V0LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9wdHJhY2Uu
aAorRjoJa2VybmVsL3B0cmFjZS5jCisKK1BVTFNFOC1DRUMgRFJJVkVSCitNOglIYW5zIFZlcmt1
aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJp
dmVycy9tZWRpYS9jZWMvdXNiL3B1bHNlOC8KKworUFVSRUxJRkkgUExGWExDIERSSVZFUgorTToJ
U3Jpbml2YXNhbiBSYWp1IDxzcmluaS5yYWp1QHB1cmVsaWZpLmNvbT4KK0w6CWxpbnV4LXdpcmVs
ZXNzQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL25ldC93aXJlbGVz
cy9wdXJlbGlmaS8KKworUFZSVVNCMiBWSURFTzRMSU5VWCBEUklWRVIKK006CU1pa2UgSXNlbHkg
PGlzZWx5QHBvYm94LmNvbT4KK0w6CXB2cnVzYjJAaXNlbHkubmV0CShzdWJzY3JpYmVycy1vbmx5
KQorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRw
Oi8vd3d3LmlzZWx5Lm5ldC9wdnJ1c2IyLworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlh
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL2RyaXZlcnMvcHZydXNiMioK
K0Y6CWRyaXZlcnMvbWVkaWEvdXNiL3B2cnVzYjIvCisKK1BXQyBXRUJDQU0gRFJJVkVSCitNOglI
YW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJT2RkIEZpeGVzCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0
CitGOglkcml2ZXJzL21lZGlhL3VzYi9wd2MvKgorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvcHdj
LmgKKworUFdNIElSIFRyYW5zbWl0dGVyCitNOglTZWFuIFlvdW5nIDxzZWFuQG1lc3Mub3JnPgor
TDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbGVkcy9pcmxlZC9wd20taXItdHgueWFtbAorRjoJ
ZHJpdmVycy9tZWRpYS9yYy9wd20taXItdHguYworCitQV00gU1VCU1lTVEVNCitNOglVd2UgS2xl
aW5lLUvDtm5pZyA8dWtsZWluZWtAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXB3bUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJv
amVjdC9saW51eC1wd20vbGlzdC8KK1Q6CWdpdCBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9z
Y20vbGludXgva2VybmVsL2dpdC91a2xlaW5lay9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL2dwaW8tbXZlYnUueWFtbAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3B3bS8KK0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9w
d20ucnN0CitGOglkcml2ZXJzL2dwaW8vZ3Bpby1tdmVidS5jCitGOglkcml2ZXJzL3B3bS8KK0Y6
CWRyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L3B3bV9ibC5jCitGOglpbmNsdWRlL2R0LWJpbmRpbmdz
L3B3bS8KK0Y6CWluY2x1ZGUvbGludXgvcHdtLmgKK0Y6CWluY2x1ZGUvbGludXgvcHdtX2JhY2ts
aWdodC5oCitLOglwd21fKGNvbmZpZ3xhcHBseV9taWdodF9zbGVlcHxhcHBseV9hdG9taWN8b3Bz
KQorCitQWEEgR1BJTyBEUklWRVIKK006CVJvYmVydCBKYXJ6bWlrIDxyb2JlcnQuamFyem1pa0Bm
cmVlLmZyPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvZ3Bpby9ncGlvLXB4YS5jCisKK1BYQSBNTUNJIERSSVZFUgorUzoJT3JwaGFuCisK
K1BYQSBSVEMgRFJJVkVSCitNOglSb2JlcnQgSmFyem1payA8cm9iZXJ0LmphcnptaWtAZnJlZS5m
cj4KK0w6CWxpbnV4LXJ0Y0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKKworUFhBMnh4
L1BYQTN4eCBTVVBQT1JUCitNOglEYW5pZWwgTWFjayA8ZGFuaWVsQHpvbnF1ZS5vcmc+CitNOglI
YW9qaWFuIFpodWFuZyA8aGFvamlhbi56aHVhbmdAZ21haWwuY29tPgorTToJUm9iZXJ0IEphcnpt
aWsgPHJvYmVydC5qYXJ6bWlrQGZyZWUuZnI+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGdpdDovL2dpdGh1Yi5jb20vaHpodWFuZzEvbGludXguZ2l0CitUOglnaXQgZ2l0
Oi8vZ2l0aHViLmNvbS9yamFyem1pay9saW51eC5naXQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL2lu
dGVsL3B4YS8KK0Y6CWFyY2gvYXJtL21hY2gtcHhhLworRjoJZHJpdmVycy9kbWEvcHhhKgorRjoJ
ZHJpdmVycy9wY21jaWEvcHhhMnh4KgorRjoJZHJpdmVycy9waW5jdHJsL3B4YS8KK0Y6CWRyaXZl
cnMvc3BpL3NwaS1weGEyeHgqCitGOglkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL3B4YTIqCitGOglp
bmNsdWRlL3NvdW5kL3B4YTJ4eC1saWIuaAorRjoJc291bmQvYXJtL3B4YSoKK0Y6CXNvdW5kL3Nv
Yy9weGEvCisKK1FBVCBEUklWRVIKK006CUdpb3Zhbm5pIENhYmlkZHUgPGdpb3Zhbm5pLmNhYmlk
ZHVAaW50ZWwuY29tPgorTDoJcWF0LWxpbnV4QGludGVsLmNvbQorUzoJU3VwcG9ydGVkCitGOglk
cml2ZXJzL2NyeXB0by9pbnRlbC9xYXQvCisKK1FDT00gQVVESU8gKEFTb0MpIERSSVZFUlMKK006
CVNyaW5pdmFzIEthbmRhZ2F0bGEgPHNyaW5pQGtlcm5lbC5vcmc+CitMOglsaW51eC1zb3VuZEB2
Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2MvcWNvbS9xY29t
LGFwcioKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9xY29tLCoK
K0Y6CWRyaXZlcnMvc29jL3Fjb20vYXByLmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQv
cWNvbSx3Y2Q5MzM1LmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQvcWNvbSx3Y2Q5MzR4
LmgKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvbHBhc3MtcngtbWFjcm8uKgorRjoJc291bmQvc29jL2Nv
ZGVjcy9scGFzcy10eC1tYWNyby4qCitGOglzb3VuZC9zb2MvY29kZWNzL2xwYXNzLXZhLW1hY3Jv
LmMKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvbHBhc3Mtd3NhLW1hY3JvLioKK0Y6CXNvdW5kL3NvYy9j
b2RlY3MvbXNtODkxNi13Y2QtYW5hbG9nLmMKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvbXNtODkxNi13
Y2QtZGlnaXRhbC5jCitGOglzb3VuZC9zb2MvY29kZWNzL3djZC1jbHNoLXYyLioKK0Y6CXNvdW5k
L3NvYy9jb2RlY3Mvd2NkLW1iaGMtdjIuKgorRjoJc291bmQvc29jL2NvZGVjcy93Y2Q5MzM1LioK
K0Y6CXNvdW5kL3NvYy9jb2RlY3Mvd2NkOTM0eC5jCitGOglzb3VuZC9zb2MvY29kZWNzL3dzYTg4
MXguYworRjoJc291bmQvc29jL2NvZGVjcy93c2E4ODN4LmMKK0Y6CXNvdW5kL3NvYy9jb2RlY3Mv
d3NhODg0eC5jCitGOglzb3VuZC9zb2MvcWNvbS8KKworUUNPTSBFTUJFRERFRCBVU0IgREVCVUdH
RVIgKEVVRCkKK006CVNvdXJhZGVlcCBDaG93ZGh1cnkgPHF1aWNfc2Nob3dkaHVAcXVpY2luYy5j
b20+CitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kcml2ZXItZXVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc29jL3Fjb20vcWNvbSxldWQueWFtbAorRjoJZHJpdmVy
cy91c2IvbWlzYy9xY29tX2V1ZC5jCisKK1FDT00gSVBBIERSSVZFUgorTToJQWxleCBFbGRlciA8
ZWxkZXJAa2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CWRyaXZlcnMvbmV0L2lwYS8KKworUUVNVSBNQUNISU5FIEVNVUxBVE9SIEFORCBWSVJU
VUFMSVpFUiBTVVBQT1JUCitNOglHYWJyaWVsIFNvbWxvIDxzb21sb0BjbXUuZWR1PgorTToJIk1p
Y2hhZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPgorTDoJcWVtdS1kZXZlbEBub25nbnUu
b3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2Zpcm13YXJlL3FlbXVfZndfY2ZnLmMKK0Y6
CWluY2x1ZGUvdWFwaS9saW51eC9xZW11X2Z3X2NmZy5oCisKK1FJQiBEUklWRVIKK006CURlbm5p
cyBEYWxlc3NhbmRybyA8ZGVubmlzLmRhbGVzc2FuZHJvQGNvcm5lbGlzbmV0d29ya3MuY29tPgor
TDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9p
bmZpbmliYW5kL2h3L3FpYi8KKworUUxPR0lDIFFMNDF4eHggRkNPRSBEUklWRVIKK006CVNhdXJh
diBLYXNoeWFwIDxza2FzaHlhcEBtYXJ2ZWxsLmNvbT4KK006CUphdmVkIEhhc2FuIDxqaGFzYW5A
bWFydmVsbC5jb20+CitNOglHUi1RTG9naWMtU3RvcmFnZS1VcHN0cmVhbUBtYXJ2ZWxsLmNvbQor
TDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9z
Y3NpL3FlZGYvCisKK1FMT0dJQyBRTDQxeHh4IElTQ1NJIERSSVZFUgorTToJTmlsZXNoIEphdmFs
aSA8bmphdmFsaUBtYXJ2ZWxsLmNvbT4KK006CU1hbmlzaCBSYW5nYW5rYXIgPG1yYW5nYW5rYXJA
bWFydmVsbC5jb20+CitNOglHUi1RTG9naWMtU3RvcmFnZS1VcHN0cmVhbUBtYXJ2ZWxsLmNvbQor
TDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9z
Y3NpL3FlZGkvCisKK1FMT0dJQyBRTDR4eHggRVRIRVJORVQgRFJJVkVSCitNOglNYW5pc2ggQ2hv
cHJhIDxtYW5pc2hjQG1hcnZlbGwuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZC8KK0Y6CWRyaXZl
cnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlLworRjoJaW5jbHVkZS9saW51eC9xZWQvCisKK1FM
T0dJQyBRTDR4eHggUkRNQSBEUklWRVIKK006CU1pY2hhbCBLYWxkZXJvbiA8bWthbGRlcm9uQG1h
cnZlbGwuY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAor
RjoJZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvCitGOglpbmNsdWRlL3VhcGkvcmRtYS9xZWRy
LWFiaS5oCisKK1FMT0dJQyBRTEExMjgwIFNDU0kgRFJJVkVSCitNOglNaWNoYWVsIFJlZWQgPG1k
ckBzZ2kuY29tPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvc2NzaS9xbGExMjgwLltjaF0KKworUUxPR0lDIFFMQTJYWFggRkMtU0NTSSBE
UklWRVIKK006CU5pbGVzaCBKYXZhbGkgPG5qYXZhbGlAbWFydmVsbC5jb20+CitNOglHUi1RTG9n
aWMtU3RvcmFnZS1VcHN0cmVhbUBtYXJ2ZWxsLmNvbQorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9zY3NpL3FsYTJ4eHgvCisKK1FMT0dJQyBR
TEEzWFhYIE5FVFdPUksgRFJJVkVSCitNOglHUi1MaW51eC1OSUMtRGV2QG1hcnZlbGwuY29tCitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9l
dGhlcm5ldC9xbG9naWMvcWxhM3h4eC4qCisKK1FMT0dJQyBRTEE0WFhYIGlTQ1NJIERSSVZFUgor
TToJTmlsZXNoIEphdmFsaSA8bmphdmFsaUBtYXJ2ZWxsLmNvbT4KK006CU1hbmlzaCBSYW5nYW5r
YXIgPG1yYW5nYW5rYXJAbWFydmVsbC5jb20+CitNOglHUi1RTG9naWMtU3RvcmFnZS1VcHN0cmVh
bUBtYXJ2ZWxsLmNvbQorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy9zY3NpL3FsYTR4eHgvCisKK1FMT0dJQyBRTENOSUMgKDEvMTApR2IgRVRI
RVJORVQgRFJJVkVSCitNOglTaGFoZWQgU2hhaWtoIDxzaHNoYWlraEBtYXJ2ZWxsLmNvbT4KK006
CU1hbmlzaCBDaG9wcmEgPG1hbmlzaGNAbWFydmVsbC5jb20+CitNOglHUi1MaW51eC1OSUMtRGV2
QG1hcnZlbGwuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljLworCitRTTFEMUIwMDA0IE1FRElB
IERSSVZFUgorTToJQWtpaGlybyBUc3VrYWRhIDx0c2tkMDhAZ21haWwuY29tPgorTDoJbGludXgt
bWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK0Y6CWRyaXZlcnMvbWVkaWEvdHVu
ZXJzL3FtMWQxYjAwMDQqCisKK1FNMUQxQzAwNDIgTUVESUEgRFJJVkVSCitNOglBa2loaXJvIFRz
dWthZGEgPHRza2QwOEBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9tZWRpYS90dW5lcnMvcW0xZDFjMDA0MioKKworUU5B
UCBNQ1UgRFJJVkVSCitNOglIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgorUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9od21vbi9xbmFwLW1jdS1od21vbi5jCitGOglkcml2ZXJzL2lu
cHV0L21pc2MvcW5hcC1tY3UtaW5wdXQuYworRjoJZHJpdmVycy9sZWRzL2xlZHMtcW5hcC1tY3Uu
YworRjoJZHJpdmVycy9tZmQvcW5hcC1tY3UuYworRjoJaW5jbHVkZS9saW51eC9tZmQvcW5hcC1t
Y3UuaAorCitRTlg0IEZJTEVTWVNURU0KK006CUFuZGVycyBMYXJzZW4gPGFsQGFsYXJzZW4ubmV0
PgorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5hbGFyc2VuLm5ldC9saW51eC9xbng0ZnMv
CitGOglmcy9xbng0LworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3FueDRfZnMuaAorRjoJaW5jbHVk
ZS91YXBpL2xpbnV4L3FueHR5cGVzLmgKKworUU5YNiBGSUxFU1lTVEVNCitTOglPcnBoYW4KK0Y6
CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcW54Ni5yc3QKK0Y6CWZzL3FueDYvCitGOglpbmNs
dWRlL2xpbnV4L3FueDZfZnMuaAorCitRT1JJUSBEUEFBMiBGU0wtTUMgQlVTIERSSVZFUgorTToJ
SW9hbmEgQ2lvcm5laSA8aW9hbmEuY2lvcm5laUBueHAuY29tPgorTDoJbGludXhwcGMtZGV2QGxp
c3RzLm96bGFicy5vcmcKK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbAor
RjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVz
Y2FsZS9kcGFhMi9vdmVydmlldy5yc3QKK0Y6CWRyaXZlcnMvYnVzL2ZzbC1tYy8KK0Y6CWluY2x1
ZGUvdWFwaS9saW51eC9mc2xfbWMuaAorCitRVDEwMTAgTUVESUEgRFJJVkVSCitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZwor
UToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3Qv
CitGOglkcml2ZXJzL21lZGlhL3R1bmVycy9xdDEwMTAqCisKK1FVQUxDT01NIEFUSDEySyBXSVJF
TEVTUyBEUklWRVIKK006CUplZmYgSm9obnNvbiA8ampvaG5zb25Aa2VybmVsLm9yZz4KK0w6CWxp
bnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworTDoJYXRoMTJrQGxpc3RzLmluZnJhZGVhZC5v
cmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4v
dXNlcnMvRHJpdmVycy9hdGgxMmsKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvYXRoL2F0aC5naXQKK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0
aC9hdGgxMmsvCitOOglhdGgxMmsKKworUVVBTENPTU0gQVRIRVJPUyBBVEgxMEsgV0lSRUxFU1Mg
RFJJVkVSCitNOglKZWZmIEpvaG5zb24gPGpqb2huc29uQGtlcm5lbC5vcmc+CitMOglsaW51eC13
aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnCitT
OglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJz
L0RyaXZlcnMvYXRoMTBrCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51
eC9rZXJuZWwvZ2l0L2F0aC9hdGguZ2l0CitGOglkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRo
MTBrLworTjoJYXRoMTBrCisKK1FVQUxDT01NIEFUSEVST1MgQVRIMTFLIFdJUkVMRVNTIERSSVZF
UgorTToJSmVmZiBKb2huc29uIDxqam9obnNvbkBrZXJuZWwub3JnPgorTDoJbGludXgtd2lyZWxl
c3NAdmdlci5rZXJuZWwub3JnCitMOglhdGgxMWtAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJU3Vw
cG9ydGVkCitXOglodHRwczovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2
ZXJzL2F0aDExaworQjoJaHR0cHM6Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMv
RHJpdmVycy9hdGgxMWsvYnVncmVwb3J0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L2F0aC9hdGguZ2l0CitGOglkcml2ZXJzL25ldC93aXJlbGVz
cy9hdGgvYXRoMTFrLworTjoJYXRoMTFrCisKK1FVQUxDT01NIEFUSEVST1MgQVRIOUsgV0lSRUxF
U1MgRFJJVkVSCitNOglUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAdG9rZS5kaz4KK0w6
CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6
Ly93aXJlbGVzcy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy9hdGg5aworVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hdGgvYXRoLmdp
dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC93aXJlbGVzcy9xY2Es
YXRoOWsueWFtbAorRjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrLworCitRVUFMQ09N
TSBBVEhFUk9TIFFDQTdLIEVUSEVSTkVUIERSSVZFUgorTToJU3RlZmFuIFdhaHJlbiA8d2FocmVu
c3RAZ214Lm5ldD4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNhLHFjYTcwMDAudHh0CitG
Oglkcml2ZXJzL25ldC9ldGhlcm5ldC9xdWFsY29tbS9xY2EqCisKK1FVQUxDT01NIEJBTS1ETVVY
IFdXQU4gTkVUV09SSyBEUklWRVIKK006CVN0ZXBoYW4gR2VyaG9sZCA8c3RlcGhhbkBnZXJob2xk
Lm5ldD4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbmV0L3Fjb20sYmFtLWRtdXgueWFtbAorRjoJZHJpdmVycy9uZXQvd3dhbi9xY29tX2Jh
bV9kbXV4LmMKKworUVVBTENPTU0gQ0FNRVJBIFNVQlNZU1RFTSBEUklWRVIKK006CVJvYmVydCBG
b3NzIDxyZm9zc0BrZXJuZWwub3JnPgorTToJVG9kb3IgVG9tb3YgPHRvZG9yLnRvb0BnbWFpbC5j
b20+CitNOglCcnlhbiBPJ0Rvbm9naHVlIDxicnlhbi5vZG9ub2dodWVAbGluYXJvLm9yZz4KK0w6
CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9hZG1pbi1ndWlkZS9tZWRpYS9xY29tX2NhbXNzLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3Fjb20sKmNhbXNzKgorRjoJZHJpdmVycy9tZWRpYS9w
bGF0Zm9ybS9xY29tL2NhbXNzLworCitRVUFMQ09NTSBDTE9DSyBEUklWRVJTCitNOglCam9ybiBB
bmRlcnNzb24gPGFuZGVyc3NvbkBrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9z
Y20vbGludXgva2VybmVsL2dpdC9xY29tL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3Fjb20sKgorRjoJZHJpdmVycy9jbGsvcWNvbS8KK0Y6CWlu
Y2x1ZGUvZHQtYmluZGluZ3MvY2xvY2svcWNvbSwqCisKK1FVQUxDT01NIENMT1VEIEFJIChRQUlD
KSBEUklWRVIKK006CUplZmYgSHVnbyA8amVmZi5odWdvQG9zcy5xdWFsY29tbS5jb20+CitSOglD
YXJsIFZhbmRlcmxpcCA8cXVpY19jYXJsdkBxdWljaW5jLmNvbT4KK0w6CWxpbnV4LWFybS1tc21A
dmdlci5rZXJuZWwub3JnCitMOglkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCitTOglT
dXBwb3J0ZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mv
a2VybmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hY2NlbC9xYWljLworRjoJZHJpdmVycy9hY2Nl
bC9xYWljLworRjoJaW5jbHVkZS91YXBpL2RybS9xYWljX2FjY2VsLmgKKworUVVBTENPTU0gQ09S
RSBQT1dFUiBSRURVQ1RJT04gKENQUikgQVZTIERSSVZFUgorTToJQmpvcm4gQW5kZXJzc29uIDxh
bmRlcnNzb25Aa2VybmVsLm9yZz4KK006CUtvbnJhZCBEeWJjaW8gPGtvbnJhZHliY2lvQGtlcm5l
bC5vcmc+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvcG93ZXIvYXZzL3Fjb20sY3ByLnlhbWwKK0Y6CWRyaXZlcnMvcG1kb21haW4vcWNv
bS9jcHIuYworCitRVUFMQ09NTSBDUFVDUCBNQUlMQk9YIERSSVZFUgorTToJU2liaSBTYW5rYXIg
PHF1aWNfc2liaXNAcXVpY2luYy5jb20+CitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9y
ZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFp
bGJveC9xY29tLGNwdWNwLW1ib3gueWFtbAorRjoJZHJpdmVycy9tYWlsYm94L3Fjb20tY3B1Y3At
bWJveC5jCisKK1FVQUxDT01NIENQVUZSRVEgRFJJVkVSIE1TTTg5OTYvQVBRODA5NgorTToJSWxp
YSBMaW4gPGlsaWEubGluQGtlcm5lbC5vcmc+CitMOglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcHVm
cmVxL3Fjb20tY3B1ZnJlcS1udm1lbS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3Mvb3BwL29wcC12Mi1rcnlvLWNwdS55YW1sCitGOglkcml2ZXJzL2NwdWZyZXEvcWNv
bS1jcHVmcmVxLW52bWVtLmMKKworUVVBTENPTU0gQ1JZUFRPIERSSVZFUlMKK006CVRoYXJhIEdv
cGluYXRoIDx0aGFyYS5nb3BpbmF0aEBnbWFpbC5jb20+CitMOglsaW51eC1jcnlwdG9Admdlci5r
ZXJuZWwub3JnCitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NyeXB0by9xY29tLXFjZS55
YW1sCitGOglkcml2ZXJzL2NyeXB0by9xY2UvCisKK1FVQUxDT01NIEVNQUMgR0lHQUJJVCBFVEhF
Uk5FVCBEUklWRVIKK006CVRpbXVyIFRhYmkgPHRpbXVyQGtlcm5lbC5vcmc+CitMOgluZXRkZXZA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9x
dWFsY29tbS9lbWFjLworCitRVUFMQ09NTSBFVEhRT1MgRVRIRVJORVQgRFJJVkVSCitNOglWaW5v
ZCBLb3VsIDx2a291bEBrZXJuZWwub3JnPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJ
bGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvcWNvbSxldGhxb3MueWFtbAorRjoJZHJpdmVy
cy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtcWNvbS1ldGhxb3MuYworCitRVUFM
Q09NTSBGQVNUUlBDIERSSVZFUgorTToJU3Jpbml2YXMgS2FuZGFnYXRsYSA8c3JpbmlAa2VybmVs
Lm9yZz4KK006CUFtb2wgTWFoZXNod2FyaSA8YW1haGVzaEBxdGkucXVhbGNvbW0uY29tPgorTDoJ
bGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz
a3RvcC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9taXNjL3Fjb20sZmFzdHJwYy55YW1sCitGOglkcml2ZXJzL21pc2MvZmFzdHJwYy5jCitG
OglpbmNsdWRlL3VhcGkvbWlzYy9mYXN0cnBjLmgKKworUVVBTENPTU0gSEVYQUdPTiBBUkNISVRF
Q1RVUkUKK006CUJyaWFuIENhaW4gPGJyaWFuLmNhaW5Ab3NzLnF1YWxjb21tLmNvbT4KK0w6CWxp
bnV4LWhleGFnb25Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYmNhaW4vbGludXguZ2l0CitG
OglhcmNoL2hleGFnb24vCisKK1FVQUxDT01NIEhJRE1BIERSSVZFUgorTToJU2luYW4gS2F5YSA8
b2theWFAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y
ZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1hcm0tbXNtQHZnZXIu
a2VybmVsLm9yZworTDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitG
Oglkcml2ZXJzL2RtYS9xY29tL2hpZG1hKgorCitRVUFMQ09NTSBJMkMgUUNPTSBHRU5JIERSSVZF
UgorTToJTXVrZXNoIEt1bWFyIFNhdmFsaXlhIDxxdWljX21zYXZhbGl5QHF1aWNpbmMuY29tPgor
TToJVmlrZW4gRGFkaGFuaXlhIDxxdWljX3ZkYWRoYW5pQHF1aWNpbmMuY29tPgorTDoJbGludXgt
aTJjQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvcWNv
bSxpMmMtZ2VuaS1xY29tLnlhbWwKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcWNvbS1nZW5p
LmMKKworUVVBTENPTU0gSTJDIENDSSBEUklWRVIKK006CUxvaWMgUG91bGFpbiA8bG9pYy5wb3Vs
YWluQG9zcy5xdWFsY29tbS5jb20+CitNOglSb2JlcnQgRm9zcyA8cmZvc3NAa2VybmVsLm9yZz4K
K0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvaTJjL3Fjb20saTJjLWNjaS55YW1sCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLXFjb20t
Y2NpLmMKKworUVVBTENPTU0gSU5URVJDT05ORUNUIEJXTU9OIERSSVZFUgorTToJS3J6eXN6dG9m
IEtvemxvd3NraSA8a3J6eXN6dG9mLmtvemxvd3NraUBsaW5hcm8ub3JnPgorTDoJbGludXgtYXJt
LW1zbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9pbnRlcmNvbm5lY3QvcWNvbSxtc204OTk4LWJ3bW9uLnlhbWwKK0Y6
CWRyaXZlcnMvc29jL3Fjb20vaWNjLWJ3bW9uLmMKK0Y6CWRyaXZlcnMvc29jL3Fjb20vdHJhY2Vf
aWNjLWJ3bW9uLmgKKworUVVBTENPTU0gSU9NTVUKK006CVJvYiBDbGFyayA8cm9iZGNsYXJrQGdt
YWlsLmNvbT4KK0w6CWlvbW11QGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgtYXJtLW1zbUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11
L3Fjb21faW9tbXUuYworRjoJZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUvYXJtLXNtbXUtcWNv
bSoKK0Y6CWRyaXZlcnMvaW9tbXUvbXNtX2lvbW11KgorCitRVUFMQ09NTSBJUEMgUk9VVEVSIChR
UlRSKSBEUklWRVIKK006CU1hbml2YW5uYW4gU2FkaGFzaXZhbSA8bWFuaXZhbm5hbi5zYWRoYXNp
dmFtQGxpbmFyby5vcmc+CitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvcXJ0ci5oCitGOglpbmNsdWRlL3VhcGkv
bGludXgvcXJ0ci5oCitGOgluZXQvcXJ0ci8KKworUVVBTENPTU0gSVBDQyBNQUlMQk9YIERSSVZF
UgorTToJTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJv
Lm9yZz4KK0w6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L3Fjb20taXBjYy55YW1s
CitGOglkcml2ZXJzL21haWxib3gvcWNvbS1pcGNjLmMKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mv
bWFpbGJveC9xY29tLWlwY2MuaAorCitRVUFMQ09NTSBJUFE0MDE5IFVTQiBQSFkgRFJJVkVSCitN
OglSb2JlcnQgTWFya28gPHJvYmVydC5tYXJrb0BzYXJ0dXJhLmhyPgorTToJTHVrYSBQZXJrb3Yg
PGx1a2EucGVya292QHNhcnR1cmEuaHI+CitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bo
eS9xY29tLXVzYi1pcHE0MDE5LXBoeS55YW1sCitGOglkcml2ZXJzL3BoeS9xdWFsY29tbS9waHkt
cWNvbS1pcHE0MDE5LXVzYi5jCisKK1FVQUxDT01NIElQUTQwMTkgVlFNTUMgUkVHVUxBVE9SIERS
SVZFUgorTToJUm9iZXJ0IE1hcmtvIDxyb2JlcnQubWFya29Ac2FydHVyYS5ocj4KK006CUx1a2Eg
UGVya292IDxsdWthLnBlcmtvdkBzYXJ0dXJhLmhyPgorTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9yZWd1bGF0b3IvdnFtbWMtaXBxNDAxOS1yZWd1bGF0b3IueWFtbAorRjoJZHJpdmVycy9y
ZWd1bGF0b3IvdnFtbWMtaXBxNDAxOS1yZWd1bGF0b3IuYworCitRVUFMQ09NTSBJUklTIFZJREVP
IEFDQ0VMRVJBVE9SIERSSVZFUgorTToJVmlrYXNoIEdhcm9kaWEgPHF1aWNfdmdhcm9kaWFAcXVp
Y2luYy5jb20+CitNOglEaWtzaGl0YSBBZ2Fyd2FsIDxxdWljX2Rpa3NoaXRhQHF1aWNpbmMuY29t
PgorUjoJQWJoaW5hdiBLdW1hciA8cXVpY19hYmhpbmF2a0BxdWljaW5jLmNvbT4KK1I6CUJyeWFu
IE8nRG9ub2dodWUgPGJyeWFuLm9kb25vZ2h1ZUBsaW5hcm8ub3JnPgorTDoJbGludXgtbWVkaWFA
dmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3Fjb20s
Ki1pcmlzLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS9pcmlzLworCitRVUFM
Q09NTSBOQU5EIENPTlRST0xMRVIgRFJJVkVSCitNOglNYW5pdmFubmFuIFNhZGhhc2l2YW0gPG1h
bml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8ub3JnPgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJh
ZGVhZC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL3Fjb20sbmFuZGMueWFt
bAorRjoJZHJpdmVycy9tdGQvbmFuZC9yYXcvcWNvbV9uYW5kYy5jCisKK1FVQUxDT01NIFFTRUVD
T00gRFJJVkVSCitNOglNYXhpbWlsaWFuIEx1eiA8bHV6bWF4aW1pbGlhbkBnbWFpbC5jb20+CitM
OglsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9maXJtd2FyZS9xY29tL3Fjb21fcXNlZWNvbS5jCisKK1FVQUxDT01NIFFTRUVDT00gVUVGSVNF
Q0FQUCBEUklWRVIKK006CU1heGltaWxpYW4gTHV6IDxsdXptYXhpbWlsaWFuQGdtYWlsLmNvbT4K
K0w6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL2Zpcm13YXJlL3Fjb20vcWNvbV9xc2VlY29tX3VlZmlzZWNhcHAuYworCitRVUFMQ09NTSBS
TU5FVCBEUklWRVIKK006CVN1YmFzaCBBYmhpbm92IEthc2l2aXN3YW5hdGhhbiA8cXVpY19zdWJh
c2hhYkBxdWljaW5jLmNvbT4KK006CVNlYW4gVHJhbmNoZXR0aSA8cXVpY19zdHJhbmNoZUBxdWlj
aW5jLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9jZWxsdWxhci9xdWFsY29tbS9y
bW5ldC5yc3QKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3F1YWxjb21tL3JtbmV0LworRjoJaW5j
bHVkZS9saW51eC9pZl9ybW5ldC5oCisKK1FVQUxDT01NIFRSVVNUIFpPTkUgTUVNT1JZIEFMTE9D
QVRPUgorTToJQmFydG9zeiBHb2xhc3pld3NraSA8YmFydG9zei5nb2xhc3pld3NraUBsaW5hcm8u
b3JnPgorTDoJbGludXgtYXJtLW1zbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvZmlybXdhcmUvcWNvbS9xY29tX3R6bWVtLmMKK0Y6CWRyaXZlcnMvZmlybXdhcmUv
cWNvbS9xY29tX3R6bWVtLmgKK0Y6CWluY2x1ZGUvbGludXgvZmlybXdhcmUvcWNvbS9xY29tX3R6
bWVtLmgKKworUVVBTENPTU0gVFNFTlMgVEhFUk1BTCBEUklWRVIKK006CUFtaXQgS3VjaGVyaWEg
PGFtaXRrQGtlcm5lbC5vcmc+CitNOglUaGFyYSBHb3BpbmF0aCA8dGhhcmEuZ29waW5hdGhAZ21h
aWwuY29tPgorTDoJbGludXgtcG1Admdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0tbXNtQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3RoZXJtYWwvcWNvbS10c2Vucy55YW1sCitGOglkcml2ZXJzL3RoZXJtYWwvcWNv
bS8KKworUVVBTENPTU0gVFlQRUMgUE9SVCBNQU5BR0VSIERSSVZFUgorTToJQnJ5YW4gTydEb25v
Z2h1ZSA8YnJ5YW4ub2Rvbm9naHVlQGxpbmFyby5vcmc+CitMOglsaW51eC1hcm0tbXNtQHZnZXIu
a2VybmVsLm9yZworTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
RjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi9xY29tLHBtaWMtKi55YW1s
CitGOglkcml2ZXJzL3VzYi90eXBlYy90Y3BtL3Fjb20vCisKK1FVQUxDT01NIFZFTlVTIFZJREVP
IEFDQ0VMRVJBVE9SIERSSVZFUgorTToJVmlrYXNoIEdhcm9kaWEgPHF1aWNfdmdhcm9kaWFAcXVp
Y2luYy5jb20+CitNOglEaWtzaGl0YSBBZ2Fyd2FsIDxxdWljX2Rpa3NoaXRhQHF1aWNpbmMuY29t
PgorUjoJQnJ5YW4gTydEb25vZ2h1ZSA8YnJ5YW4ub2Rvbm9naHVlQGxpbmFyby5vcmc+CitMOgls
aW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFybS1tc21Admdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvKnZlbnVzKgorRjoJZHJp
dmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzLworCitRVUFMQ09NTSBXQ04zNlhYIFdJUkVM
RVNTIERSSVZFUgorTToJTG9pYyBQb3VsYWluIDxsb2ljLnBvdWxhaW5Ab3NzLnF1YWxjb21tLmNv
bT4KK0w6CXdjbjM2eHhAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRw
czovL3dpcmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL3djbjM2eHgKK0Y6
CWRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LworCitRVUFOVEVOTkEgUVRORk1BQyBX
SVJFTEVTUyBEUklWRVIKK006CUlnb3IgTWl0c3lhbmtvIDxpbWl0c3lhbmtvQHF1YW50ZW5uYS5j
b20+CitSOglTZXJnZXkgTWF0eXVrZXZpY2ggPGdlb21hdHNpQGdtYWlsLmNvbT4KK0w6CWxpbnV4
LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQv
d2lyZWxlc3MvcXVhbnRlbm5hLworCitSQURFT04gYW5kIEFNREdQVSBEUk0gRFJJVkVSUworTToJ
QWxleCBEZXVjaGVyIDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgorTToJQ2hyaXN0aWFuIEvD
tm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgorTDoJYW1kLWdmeEBsaXN0cy5mcmVlZGVz
a3RvcC5vcmcKK1M6CVN1cHBvcnRlZAorQjoJaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3Jn
L2RybS9hbWQvLS9pc3N1ZXMKK0M6CWlyYzovL2lyYy5vZnRjLm5ldC9yYWRlb24KK1Q6CWdpdCBo
dHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvYWdkNWYvbGludXguZ2l0CitGOglEb2N1bWVu
dGF0aW9uL2dwdS9hbWRncHUvCitGOglkcml2ZXJzL2dwdS9kcm0vYW1kLworRjoJZHJpdmVycy9n
cHUvZHJtL2NpL3hmYWlscy9hbWQqCitGOglkcml2ZXJzL2dwdS9kcm0vcmFkZW9uLworRjoJaW5j
bHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmgKK0Y6CWluY2x1ZGUvdWFwaS9kcm0vcmFkZW9uX2Ry
bS5oCisKK1JBREVPTiBGUkFNRUJVRkZFUiBESVNQTEFZIERSSVZFUgorTToJQmVuamFtaW4gSGVy
cmVuc2NobWlkdCA8YmVuaEBrZXJuZWwuY3Jhc2hpbmcub3JnPgorTDoJbGludXgtZmJkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L2F0eS9y
YWRlb24qCitGOglpbmNsdWRlL3VhcGkvbGludXgvcmFkZW9uZmIuaAorCitSQURJT1NIQVJLIFJB
RElPIERSSVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwubmw+CitMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51
eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tc2hhcmsuYwor
CitSQURJT1NIQVJLMiBSQURJTyBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0
YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitU
OglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3JhZGlv
L3JhZGlvLXNoYXJrMi5jCitGOglkcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLXRlYTU3NzcuYwor
CitSQURPUyBCTE9DSyBERVZJQ0UgKFJCRCkKK006CUlseWEgRHJ5b21vdiA8aWRyeW9tb3ZAZ21h
aWwuY29tPgorUjoJRG9uZ3NoZW5nIFlhbmcgPGRvbmdzaGVuZy55YW5nQGVhc3lzdGFjay5jbj4K
K0w6CWNlcGgtZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0dHA6Ly9j
ZXBoLmNvbS8KK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vY2VwaC9jZXBoLWNsaWVudC5naXQK
K0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLXJiZAorRjoJZHJpdmVycy9i
bG9jay9yYmQuYworRjoJZHJpdmVycy9ibG9jay9yYmRfdHlwZXMuaAorCitSQUdFMTI4IEZSQU1F
QlVGRkVSIERJU1BMQVkgRFJJVkVSCitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU9ycGhhbgorRjoJZHJpdmVycy92aWRlby9mYmRldi9hdHkvYXR5MTI4ZmIuYworCitSQUlOU0hB
RE9XLUNFQyBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJ
bGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8v
bGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2NlYy91c2IvcmFpbnNoYWRv
dy8KKworUkFMSU5LIE1JUFMgQVJDSElURUNUVVJFCitNOglKb2huIENyaXNwaW4gPGpvaG5AcGhy
b3plbi5vcmc+CitNOglTZXJnaW8gUGFyYWN1ZWxsb3MgPHNlcmdpby5wYXJhY3VlbGxvc0BnbWFp
bC5jb20+CitMOglsaW51eC1taXBzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
YXJjaC9taXBzL3JhbGluaworCitSQUxJTksgTVQ3NjIxIE1JUFMgQVJDSElURUNUVVJFCitNOglD
aGVzdGVyIEEuIFVuYWwgPGNoZXN0ZXIuYS51bmFsQGFyaW5jOS5jb20+CitNOglTZXJnaW8gUGFy
YWN1ZWxsb3MgPHNlcmdpby5wYXJhY3VlbGxvc0BnbWFpbC5jb20+CitMOglsaW51eC1taXBzQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9taXBzL2Jvb3QvZHRzL3JhbGlu
ay9tdDc2MjEqCisKK1JBTElOSyBSVDJYMDAgV0lSRUxFU1MgTEFOIERSSVZFUgorTToJU3Rhbmlz
bGF3IEdydXN6a2EgPHN0Zl94bEB3cC5wbD4KK0w6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvd2lyZWxlc3MvcmFsaW5rLworCitS
QU1ESVNLIFJBTSBCTE9DSyBERVZJQ0UgRFJJVkVSCitNOglKZW5zIEF4Ym9lIDxheGJvZUBrZXJu
ZWwuZGs+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2Jsb2Nr
ZGV2L3JhbWRpc2sucnN0CitGOglkcml2ZXJzL2Jsb2NrL2JyZC5jCisKK1JBTkNIVSBWSVJUVUFM
IEJPQVJEIEZPUiBNSVBTCitNOglNaW9kcmFnIERpbmljIDxtaW9kcmFnLmRpbmljQG1pcHMuY29t
PgorTDoJbGludXgtbWlwc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJYXJjaC9t
aXBzL2NvbmZpZ3MvZ2VuZXJpYy9ib2FyZC1yYW5jaHUuY29uZmlnCitGOglhcmNoL21pcHMvZ2Vu
ZXJpYy9ib2FyZC1yYW5jaHUuYworCitSQU5ET00gTlVNQkVSIERSSVZFUgorTToJIlRoZW9kb3Jl
IFRzJ28iIDx0eXRzb0BtaXQuZWR1PgorTToJSmFzb24gQS4gRG9uZW5mZWxkIDxKYXNvbkB6eDJj
NC5jb20+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvY3JuZy9yYW5kb20uZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvcm5nL21pY3Jvc29mdCx2bWdlbmlkLnlhbWwKK0Y6CWRyaXZlcnMv
Y2hhci9yYW5kb20uYworRjoJaW5jbHVkZS9saW51eC9yYW5kb20uaAorRjoJaW5jbHVkZS91YXBp
L2xpbnV4L3JhbmRvbS5oCitGOglkcml2ZXJzL3ZpcnQvdm1nZW5pZC5jCitOOgleLiovdmRzby9b
Xi9dKmdldHJhbmRvbVteL10rJAorCitSQVBJRElPIFNVQlNZU1RFTQorTToJTWF0dCBQb3J0ZXIg
PG1wb3J0ZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KK006CUFsZXhhbmRyZSBCb3VuaW5lIDxhbGV4
LmJvdTlAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9yYXBpZGlvLworCitS
QVMgSU5GUkFTVFJVQ1RVUkUKK006CVRvbnkgTHVjayA8dG9ueS5sdWNrQGludGVsLmNvbT4KK006
CUJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvUkFTCitG
Oglkcml2ZXJzL3Jhcy8KK0Y6CWluY2x1ZGUvbGludXgvcmFzLmgKK0Y6CWluY2x1ZGUvcmFzL3Jh
c19ldmVudC5oCisKK1JBUyBGUlUgTUVNT1JZIFBPSVNPTiBNQU5BR0VSIChGTVBNKQorTToJWWF6
ZW4gR2hhbm5hbSA8WWF6ZW4uR2hhbm5hbUBhbWQuY29tPgorTDoJbGludXgtZWRhY0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcmFzL2FtZC9mbXBtLmMKKworUkFT
UEJFUlJZIFBJIFBJU1AgQkFDSyBFTkQKK006CUphY29wbyBNb25kaSA8amFjb3BvLm1vbmRpQGlk
ZWFzb25ib2FyZC5jb20+CitSOglSYXNwYmVycnkgUGkgS2VybmVsIE1haW50ZW5hbmNlIDxrZXJu
ZWwtbGlzdEByYXNwYmVycnlwaS5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRp
YS9yYXNwYmVycnlwaSxwaXNwYmUueWFtbAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yYXNw
YmVycnlwaS9waXNwX2JlLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L21lZGlhL3Jhc3BiZXJyeXBp
LworCitSQVNQQkVSUlkgUEkgUElTUCBDQU1FUkEgRlJPTlQgRU5ECitNOglUb21pIFZhbGtlaW5l
biA8dG9taS52YWxrZWluZW5AaWRlYXNvbmJvYXJkLmNvbT4KK006CVJhc3BiZXJyeSBQaSBLZXJu
ZWwgTWFpbnRlbmFuY2UgPGtlcm5lbC1saXN0QHJhc3BiZXJyeXBpLmNvbT4KK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9yYXNwYmVycnlw
aSxycDEtY2ZlLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcmFzcGJlcnJ5cGkvcnAx
LWNmZS8KKworUkMtQ09SRSAvIExJUkMgRlJBTUVXT1JLCitNOglTZWFuIFlvdW5nIDxzZWFuQG1l
c3Mub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitX
OglodHRwOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQK
K0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9tZWRpYS9yYy1jb3JlLnJzdAorRjoJRG9jdW1l
bnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3JjLworRjoJZHJpdmVycy9tZWRpYS9yYy8KK0Y6
CWluY2x1ZGUvbWVkaWEvcmMtY29yZS5oCitGOglpbmNsdWRlL21lZGlhL3JjLW1hcC5oCitGOglp
bmNsdWRlL3VhcGkvbGludXgvbGlyYy5oCisKK1JDTU0gUkVNT1RFIENPTlRST0xTIERFQ09ERVIK
K006CVBhdHJpY2sgTGVyZGEgPHBhdHJpY2s5ODc2QGZyZWUuZnI+CitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL21lZGlhL3JjL2lyLXJjbW0tZGVjb2Rlci5jCisKK1JDVVRPUlRVUkUgVEVTVCBG
UkFNRVdPUksKK006CSJQYXVsIEUuIE1jS2VubmV5IiA8cGF1bG1ja0BrZXJuZWwub3JnPgorTToJ
Sm9zaCBUcmlwbGV0dCA8am9zaEBqb3NodHJpcGxldHQub3JnPgorUjoJU3RldmVuIFJvc3RlZHQg
PHJvc3RlZHRAZ29vZG1pcy5vcmc+CitSOglNYXRoaWV1IERlc25veWVycyA8bWF0aGlldS5kZXNu
b3llcnNAZWZmaWNpb3MuY29tPgorUjoJTGFpIEppYW5nc2hhbiA8amlhbmdzaGFubGFpQGdtYWls
LmNvbT4KK0w6CXJjdUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yY3UvbGludXguZ2l0IHJj
dS9kZXYKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3JjdXRvcnR1cmUKKworUkRBQ00yMCBD
YW1lcmEgU2Vuc29yCitNOglKYWNvcG8gTW9uZGkgPGphY29wbytyZW5lc2FzQGptb25kaS5vcmc+
CitNOglLaWVyYW4gQmluZ2hhbSA8a2llcmFuLmJpbmdoYW0rcmVuZXNhc0BpZGVhc29uYm9hcmQu
Y29tPgorTToJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFz
b25ib2FyZC5jb20+CitNOglOaWtsYXMgU8O2ZGVybHVuZCA8bmlrbGFzLnNvZGVybHVuZCtyZW5l
c2FzQHJhZ25hdGVjaC5zZT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9p
bWkscmRhY20yeC1nbXNsLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL21heDkyNzEuYworRjoJ
ZHJpdmVycy9tZWRpYS9pMmMvbWF4OTI3MS5oCitGOglkcml2ZXJzL21lZGlhL2kyYy9yZGFjbTIw
LmMKKworUkRBQ00yMSBDYW1lcmEgU2Vuc29yCitNOglKYWNvcG8gTW9uZGkgPGphY29wbytyZW5l
c2FzQGptb25kaS5vcmc+CitNOglLaWVyYW4gQmluZ2hhbSA8a2llcmFuLmJpbmdoYW0rcmVuZXNh
c0BpZGVhc29uYm9hcmQuY29tPgorTToJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFy
dCtyZW5lc2FzQGlkZWFzb25ib2FyZC5jb20+CitNOglOaWtsYXMgU8O2ZGVybHVuZCA8bmlrbGFz
LnNvZGVybHVuZCtyZW5lc2FzQHJhZ25hdGVjaC5zZT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL2kyYy9pbWkscmRhY20yeC1nbXNsLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJj
L21heDkyNzEuYworRjoJZHJpdmVycy9tZWRpYS9pMmMvbWF4OTI3MS5oCitGOglkcml2ZXJzL21l
ZGlhL2kyYy9yZGFjbTIxLmMKKworUkRDIFItMzIxWCBTb0MKK006CUZsb3JpYW4gRmFpbmVsbGkg
PGZsb3JpYW5Ab3BlbndydC5vcmc+CitTOglNYWludGFpbmVkCisKK1JEQyBSNjA0MCBGQVNUIEVU
SEVSTkVUIERSSVZFUgorTToJRmxvcmlhbiBGYWluZWxsaSA8Zi5mYWluZWxsaUBnbWFpbC5jb20+
CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC9yZGMvcjYwNDAuYworCitSRE1BVlQgLSBSRE1BIHZlcmJzIHNvZnR3YXJlCitN
OglEZW5uaXMgRGFsZXNzYW5kcm8gPGRlbm5pcy5kYWxlc3NhbmRyb0Bjb3JuZWxpc25ldHdvcmtz
LmNvbT4KK0w6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRy
aXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQKKworUkRTIC0gUkVMSUFCTEUgREFUQUdSQU0gU09D
S0VUUworTToJQWxsaXNvbiBIZW5kZXJzb24gPGFsbGlzb24uaGVuZGVyc29uQG9yYWNsZS5jb20+
CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9y
ZworTDoJcmRzLWRldmVsQG9zcy5vcmFjbGUuY29tIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3Jp
YmVycykKK1M6CVN1cHBvcnRlZAorVzoJaHR0cHM6Ly9vc3Mub3JhY2xlLmNvbS9wcm9qZWN0cy9y
ZHMvCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcmRzLnJzdAorRjoJbmV0L3Jkcy8KK0Y6
CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9yZHMvCisKK1JEVCAtIFJFU09VUkNFIEFMTE9D
QVRJT04KK006CVRvbnkgTHVjayA8dG9ueS5sdWNrQGludGVsLmNvbT4KK006CVJlaW5ldHRlIENo
YXRyZSA8cmVpbmV0dGUuY2hhdHJlQGludGVsLmNvbT4KK1I6CURhdmUgTWFydGluIDxEYXZlLk1h
cnRpbkBhcm0uY29tPgorUjoJSmFtZXMgTW9yc2UgPGphbWVzLm1vcnNlQGFybS5jb20+CitMOgls
aW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRp
b24vZmlsZXN5c3RlbXMvcmVzY3RybC5yc3QKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL3Jlc2N0
cmwuaAorRjoJYXJjaC94ODYva2VybmVsL2NwdS9yZXNjdHJsLworRjoJZnMvcmVzY3RybC8KK0Y6
CWluY2x1ZGUvbGludXgvcmVzY3RybCouaAorRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcmVz
Y3RybC8KKworUkVBRC1DT1BZIFVQREFURSAoUkNVKQorTToJIlBhdWwgRS4gTWNLZW5uZXkiIDxw
YXVsbWNrQGtlcm5lbC5vcmc+CitNOglGcmVkZXJpYyBXZWlzYmVja2VyIDxmcmVkZXJpY0BrZXJu
ZWwub3JnPiAoa2VybmVsL3JjdS90cmVlX25vY2IuaCkKK006CU5lZXJhaiBVcGFkaHlheSA8bmVl
cmFqLnVwYWRoeWF5QGtlcm5lbC5vcmc+IChrZXJuZWwvcmN1L3Rhc2tzLmgpCitNOglKb2VsIEZl
cm5hbmRlcyA8am9lbGFnbmVsZkBudmlkaWEuY29tPgorTToJSm9zaCBUcmlwbGV0dCA8am9zaEBq
b3NodHJpcGxldHQub3JnPgorTToJQm9xdW4gRmVuZyA8Ym9xdW4uZmVuZ0BnbWFpbC5jb20+CitN
OglVbGFkemlzbGF1IFJlemtpIDx1cmV6a2lAZ21haWwuY29tPgorUjoJU3RldmVuIFJvc3RlZHQg
PHJvc3RlZHRAZ29vZG1pcy5vcmc+CitSOglNYXRoaWV1IERlc25veWVycyA8bWF0aGlldS5kZXNu
b3llcnNAZWZmaWNpb3MuY29tPgorUjoJTGFpIEppYW5nc2hhbiA8amlhbmdzaGFubGFpQGdtYWls
LmNvbT4KK1I6CVpxaWFuZyA8cWlhbmcuemhhbmdAbGludXguZGV2PgorTDoJcmN1QHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3LnJkcm9wLmNvbS91c2Vycy9wYXVs
bWNrL1JDVS8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l
bC9naXQvcmN1L2xpbnV4LmdpdCByY3UvZGV2CitGOglEb2N1bWVudGF0aW9uL1JDVS8KK0Y6CWlu
Y2x1ZGUvbGludXgvcmN1KgorRjoJa2VybmVsL3JjdS8KK0Y6CXJ1c3Qva2VybmVsL3N5bmMvcmN1
LnJzCitYOglEb2N1bWVudGF0aW9uL1JDVS90b3J0dXJlLnJzdAorWDoJaW5jbHVkZS9saW51eC9z
cmN1Ki5oCitYOglrZXJuZWwvcmN1L3NyY3UqLmMKKworUkVBTCBUSU1FIENMT0NLIChSVEMpIFNV
QlNZU1RFTQorTToJQWxleGFuZHJlIEJlbGxvbmkgPGFsZXhhbmRyZS5iZWxsb25pQGJvb3RsaW4u
Y29tPgorTDoJbGludXgtcnRjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0
cDovL3BhdGNod29yay5vemxhYnMub3JnL3Byb2plY3QvcnRjLWxpbnV4L2xpc3QvCitUOglnaXQg
Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2FiZWxsb25pL2xp
bnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9ydGMucnN0CitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjLworRjoJZHJpdmVycy9ydGMvCitGOglpbmNs
dWRlL2xpbnV4L3J0Yy5oCitGOglpbmNsdWRlL2xpbnV4L3J0Yy8KK0Y6CWluY2x1ZGUvdWFwaS9s
aW51eC9ydGMuaAorRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvcnRjLworCitSZWFsLXRpbWUg
TGludXggQW5hbHlzaXMgKFJUTEEpIHRvb2xzCitNOglTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBn
b29kbWlzLm9yZz4KK0w6CWxpbnV4LXRyYWNlLWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vdG9vbHMvcnRsYS8KK0Y6CXRvb2xzL3RyYWNpbmcv
cnRsYS8KKworUmVhbC10aW1lIExpbnV4IChQUkVFTVBUX1JUKQorTToJU2ViYXN0aWFuIEFuZHJ6
ZWogU2lld2lvciA8YmlnZWFzeUBsaW51dHJvbml4LmRlPgorTToJQ2xhcmsgV2lsbGlhbXMgPGNs
cmt3bGxtc0BrZXJuZWwub3JnPgorTToJU3RldmVuIFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5v
cmc+CitMOglsaW51eC1ydC1kZXZlbEBsaXN0cy5saW51eC5kZXYKK1M6CVN1cHBvcnRlZAorSzoJ
UFJFRU1QVF9SVAorCitSRUFMVEVLIEFVRElPIENPREVDUworTToJT2RlciBDaGlvdSA8b2Rlcl9j
aGlvdUByZWFsdGVrLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvc291bmQvcnQqLmgK
K0Y6CXNvdW5kL3NvYy9jb2RlY3MvcnQqCisKK1JFQUxURUsgT1RUTyBXQVRDSERPRworTToJU2Fu
ZGVyIFZhbmhldWxlIDxzYW5kZXJAc3ZhbmhldWxlLm5ldD4KK0w6CWxpbnV4LXdhdGNoZG9nQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3dhdGNoZG9nL3JlYWx0ZWssb3R0by13ZHQueWFtbAorRjoJZHJpdmVycy93YXRj
aGRvZy9yZWFsdGVrX290dG9fd2R0LmMKKworUkVBTFRFSyBSVEw4M3h4IFNNSSBEU0EgUk9VVEVS
IENISVBTCitNOglMaW51cyBXYWxsZWlqIDxsaW51cy53YWxsZWlqQGxpbmFyby5vcmc+CitNOglB
bHZpbiDFoGlwcmFnYSA8YWxzaUBiYW5nLW9sdWZzZW4uZGs+CitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2RzYS9yZWFsdGVrLnlhbWwKK0Y6
CWRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrLyoKKworUkVBTFRFSyBTUEktTkFORAorTToJQ2hyaXMg
UGFja2hhbSA8Y2hyaXMucGFja2hhbUBhbGxpZWR0ZWxlc2lzLmNvLm56PgorUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NwaS9yZWFsdGVrLHJ0bDkz
MDEtc25hbmQueWFtbAorRjoJZHJpdmVycy9zcGkvc3BpLXJlYWx0ZWstcnRsLXNuYW5kLmMKKwor
UkVBTFRFSyBXSVJFTEVTUyBEUklWRVIgKHJ0bHdpZmkgZmFtaWx5KQorTToJUGluZy1LZSBTaGlo
IDxwa3NoaWhAcmVhbHRlay5jb20+CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vcGtzaGloL3J0dy5naXQK
K0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsd2lmaS8KKworUkVBTFRFSyBXSVJF
TEVTUyBEUklWRVIgKHJ0dzg4KQorTToJUGluZy1LZSBTaGloIDxwa3NoaWhAcmVhbHRlay5jb20+
CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdp
dCBodHRwczovL2dpdGh1Yi5jb20vcGtzaGloL3J0dy5naXQKK0Y6CWRyaXZlcnMvbmV0L3dpcmVs
ZXNzL3JlYWx0ZWsvcnR3ODgvCisKK1JFQUxURUsgV0lSRUxFU1MgRFJJVkVSIChydHc4OSkKK006
CVBpbmctS2UgU2hpaCA8cGtzaGloQHJlYWx0ZWsuY29tPgorTDoJbGludXgtd2lyZWxlc3NAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL3Br
c2hpaC9ydHcuZ2l0CitGOglkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LworCitS
RURQSU5FIFdJUkVMRVNTIERSSVZFUgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3Jn
CitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS8KKworUkVHSVNURVIgTUFQ
IEFCU1RSQUNUSU9OCitNOglNYXJrIEJyb3duIDxicm9vbmllQGtlcm5lbC5vcmc+CitMOglsaW51
eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYnJvb25pZS9yZWdtYXAuZ2l0CitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcmVnbWFwLworRjoJZHJpdmVycy9i
YXNlL3JlZ21hcC8KK0Y6CWluY2x1ZGUvbGludXgvcmVnbWFwLmgKKworUkVNT1RFIFBST0NFU1NP
UiAoUkVNT1RFUFJPQykgU1VCU1lTVEVNCitNOglCam9ybiBBbmRlcnNzb24gPGFuZGVyc3NvbkBr
ZXJuZWwub3JnPgorTToJTWF0aGlldSBQb2lyaWVyIDxtYXRoaWV1LnBvaXJpZXJAbGluYXJvLm9y
Zz4KK0w6CWxpbnV4LXJlbW90ZXByb2NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitU
OglnaXQgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcmVt
b3RlcHJvYy9saW51eC5naXQgcnByb2MtbmV4dAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu
Zy9zeXNmcy1jbGFzcy1yZW1vdGVwcm9jCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvcmVtb3RlcHJvYy8KK0Y6CURvY3VtZW50YXRpb24vc3RhZ2luZy9yZW1vdGVwcm9jLnJz
dAorRjoJZHJpdmVycy9yZW1vdGVwcm9jLworRjoJaW5jbHVkZS9saW51eC9yZW1vdGVwcm9jLmgK
K0Y6CWluY2x1ZGUvbGludXgvcmVtb3RlcHJvYy8KKworUkVNT1RFIFBST0NFU1NPUiBNRVNTQUdJ
TkcgKFJQTVNHKSBTVUJTWVNURU0KK006CUJqb3JuIEFuZGVyc3NvbiA8YW5kZXJzc29uQGtlcm5l
bC5vcmc+CitNOglNYXRoaWV1IFBvaXJpZXIgPG1hdGhpZXUucG9pcmllckBsaW5hcm8ub3JnPgor
TDoJbGludXgtcmVtb3RlcHJvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdp
dCBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9yZW1vdGVw
cm9jL2xpbnV4LmdpdCBycG1zZy1uZXh0CitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5
c2ZzLWJ1cy1ycG1zZworRjoJRG9jdW1lbnRhdGlvbi9zdGFnaW5nL3JwbXNnLnJzdAorRjoJZHJp
dmVycy9ycG1zZy8KK0Y6CWluY2x1ZGUvbGludXgvcnBtc2cuaAorRjoJaW5jbHVkZS9saW51eC9y
cG1zZy8KK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9ycG1zZy5oCitGOglzYW1wbGVzL3JwbXNnLwor
CitSRU1PVEUgUFJPQ0VTU09SIE1FU1NBR0lORyAoUlBNU0cpIFdXQU4gQ09OVFJPTCBEUklWRVIK
K006CVN0ZXBoYW4gR2VyaG9sZCA8c3RlcGhhbkBnZXJob2xkLm5ldD4KK0w6CW5ldGRldkB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbW90ZXByb2NAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglkcml2ZXJzL25ldC93d2FuL3JwbXNnX3d3YW5fY3RybC5jCisKK1JFTkVTQVMg
Q0xPQ0sgRFJJVkVSUworTToJR2VlcnQgVXl0dGVyaG9ldmVuIDxnZWVydCtyZW5lc2FzQGdsaWRl
ci5iZT4KK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dl
ZXJ0L3JlbmVzYXMtZHJpdmVycy5naXQgcmVuZXNhcy1jbGsKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9jbG9jay9yZW5lc2FzLCoKK0Y6CWRyaXZlcnMvY2xrL3JlbmVzYXMv
CisKK1JFTkVTQVMgRU1FVjIgSTJDIERSSVZFUgorTToJV29sZnJhbSBTYW5nIDx3c2ErcmVuZXNh
c0BzYW5nLWVuZ2luZWVyaW5nLmNvbT4KK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aTJjL3JlbmVzYXMsaWljLWVtZXYyLnlhbWwKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZW1l
djIuYworCitSRU5FU0FTIEVUSEVSTkVUIEFWQiBEUklWRVIKK006CU5pa2xhcyBTw7ZkZXJsdW5k
IDxuaWtsYXMuc29kZXJsdW5kQHJhZ25hdGVjaC5zZT4KK1I6CVBhdWwgQmFya2VyIDxwYXVsQHBi
YXJrZXIuZGV2PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJbGludXgtcmVuZXNhcy1z
b2NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMsZXRoZXJhdmIueWFtbAorRjoJZHJpdmVycy9uZXQv
ZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2Fz
L01ha2VmaWxlCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmIqCisKK1JFTkVT
QVMgRVRIRVJORVQgU1dJVENIIERSSVZFUgorUjoJWW9zaGloaXJvIFNoaW1vZGEgPHlvc2hpaGly
by5zaGltb2RhLnVoQHJlbmVzYXMuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJ
bGludXgtcmVuZXNhcy1zb2NAdmdlci5rZXJuZWwub3JnCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMsKmV0aGVyLXN3aXRjaC55YW1sCitGOglkcml2ZXJz
L25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWcKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3Jl
bmVzYXMvTWFrZWZpbGUKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmNhcl9nZW40
KgorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yc3dpdGNoKgorCitSRU5FU0FTIEVU
SEVSTkVUIFRTTiBEUklWRVIKK006CU5pa2xhcyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJsdW5k
QHJhZ25hdGVjaC5zZT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVz
YXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9yZW5lc2FzLGV0aGVydHNuLnlhbWwKK0Y6CWRyaXZlcnMv
bmV0L2V0aGVybmV0L3JlbmVzYXMvcnRzbi4qCisKK1JFTkVTQVMgSURUODIxMDM0IEFTb0MgQ09E
RUMKK006CUhlcnZlIENvZGluYSA8aGVydmUuY29kaW5hQGJvb3RsaW4uY29tPgorTDoJbGludXgt
c291bmRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvc291bmQvcmVuZXNhcyxpZHQ4MjEwMzQueWFtbAorRjoJc291bmQv
c29jL2NvZGVjcy9pZHQ4MjEwMzQuYworCitSRU5FU0FTIFItQ0FSICYgRlNJIEFVRElPIChBU29D
KSBEUklWRVJTCitNOglLdW5pbm9yaSBNb3JpbW90byA8a3VuaW5vcmkubW9yaW1vdG8uZ3hAcmVu
ZXNhcy5jb20+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVz
YXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvc291bmQvcmVuZXNhcyxyc25kLioKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yZW5lc2FzLGZzaS55YW1sCitGOglzb3VuZC9zb2Mv
cmVuZXNhcy9yY2FyLworRjoJc291bmQvc29jL3JlbmVzYXMvZnNpLmMKK0Y6CWluY2x1ZGUvc291
bmQvc2hfZnNpLmgKKworUkVORVNBUyBSLUNBUiBHRU4zICYgUlovTjEgTkFORCBDT05UUk9MTEVS
IERSSVZFUgorTToJTWlxdWVsIFJheW5hbCA8bWlxdWVsLnJheW5hbEBib290bGluLmNvbT4KK0w6
CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9tdGQvcmVuZXNhcy1uYW5kYy55YW1sCitGOglkcml2ZXJzL210ZC9uYW5kL3Jhdy9y
ZW5lc2FzLW5hbmQtY29udHJvbGxlci5jCisKK1JFTkVTQVMgUi1DQVIgR1lST0FEQyBEUklWRVIK
K006CU1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdl
ci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9paW8vYWRjL3JlbmVzYXMscmNhci1neXJvYWRjLnlhbWwKK0Y6CWRyaXZlcnMvaWlv
L2FkYy9yY2FyLWd5cm9hZGMuYworCitSRU5FU0FTIFItQ0FSIEkyQyBEUklWRVJTCitNOglXb2xm
cmFtIFNhbmcgPHdzYStyZW5lc2FzQHNhbmctZW5naW5lZXJpbmcuY29tPgorTDoJbGludXgtcmVu
ZXNhcy1zb2NAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvcmVuZXNhcyxyY2FyLWkyYy55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL3JlbmVzYXMscm1vYmlsZS1paWMueWFtbAor
RjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1yY2FyLmMKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9p
MmMtc2hfbW9iaWxlLmMKKworUkVORVNBUyBSLUNBUiBTQVRBIERSSVZFUgorTToJR2VlcnQgVXl0
dGVyaG9ldmVuIDxnZWVydCtyZW5lc2FzQGdsaWRlci5iZT4KK0w6CWxpbnV4LWlkZUB2Z2VyLmtl
cm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXRhL3JlbmVzYXMscmNh
ci1zYXRhLnlhbWwKK0Y6CWRyaXZlcnMvYXRhL3NhdGFfcmNhci5jCisKK1JFTkVTQVMgUi1DQVIg
VEhFUk1BTCBEUklWRVJTCitNOglOaWtsYXMgU8O2ZGVybHVuZCA8bmlrbGFzLnNvZGVybHVuZEBy
YWduYXRlY2guc2U+CitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1
cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvcmNh
ci1nZW4zLXRoZXJtYWwueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L3RoZXJtYWwvcmNhci10aGVybWFsLnlhbWwKK0Y6CWRyaXZlcnMvdGhlcm1hbC9yZW5lc2FzL3Jj
YXJfZ2VuM190aGVybWFsLmMKK0Y6CWRyaXZlcnMvdGhlcm1hbC9yZW5lc2FzL3JjYXJfdGhlcm1h
bC5jCisKK1JFTkVTQVMgUklJQyBEUklWRVIKK006CUNocmlzIEJyYW5kdCA8Y2hyaXMuYnJhbmR0
QHJlbmVzYXMuY29tPgorTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9pMmMvcmVuZXNh
cyxyaWljLnlhbWwKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcmlpYy5jCisKK1JFTkVTQVMg
UlogQVVESU8gKEFTb0MpIERSSVZFUgorTToJQmlqdSBEYXMgPGJpanUuZGFzLmp6QGJwLnJlbmVz
YXMuY29tPgorTToJTGFkIFByYWJoYWthciA8cHJhYmhha2FyLm1haGFkZXYtbGFkLnJqQGJwLnJl
bmVzYXMuY29tPgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1yZW5l
c2FzLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3JlbmVzYXMscnotc3NpLnlhbWwKK0Y6CXNvdW5kL3Nv
Yy9yZW5lc2FzL3J6LXNzaS5jCisKK1JFTkVTQVMgUlovRzJMIEEvRCBEUklWRVIKK006CUxhZCBQ
cmFiaGFrYXIgPHByYWJoYWthci5tYWhhZGV2LWxhZC5yakBicC5yZW5lc2FzLmNvbT4KK0w6CWxp
bnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aWlvL2FkYy9yZW5lc2FzLHJ6ZzJsLWFkYy55YW1sCitGOglkcml2ZXJzL2lpby9hZGMvcnpnMmxf
YWRjLmMKKworUkVORVNBUyBSWi9HMkwgTVRVM2EgQ09VTlRFUiBEUklWRVIKK006CUJpanUgRGFz
IDxiaWp1LmRhcy5qekBicC5yZW5lc2FzLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5v
cmcKK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdGltZXIvcmVuZXNhcyxyei1tdHUz
LnlhbWwKK0Y6CWRyaXZlcnMvY291bnRlci9yei1tdHUzLWNudC5jCisKK1JFTkVTQVMgUlRDQS0z
IFJUQyBEUklWRVIKK006CUNsYXVkaXUgQmV6bmVhIDxjbGF1ZGl1LmJlem5lYS51akBicC5yZW5l
c2FzLmNvbT4KK0w6CWxpbnV4LXJ0Y0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVzYXMt
c29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvcnRjL3JlbmVzYXMscnotcnRjYTMueWFtbAorRjoJZHJpdmVycy9ydGMv
cnRjLXJlbmVzYXMtcnRjYTMuYworCitSRU5FU0FTIFJaL04xIEE1UFNXIFNXSVRDSCBEUklWRVIK
K006CUNsw6ltZW50IEzDqWdlciA8Y2xlbWVudC5sZWdlckBib290bGluLmNvbT4KK0w6CWxpbnV4
LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9k
c2EvcmVuZXNhcyxyem4xLWE1cHN3LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9uZXQvcGNzL3JlbmVzYXMscnpuMS1taWljLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2Rz
YS9yem4xX2E1cHN3KgorRjoJZHJpdmVycy9uZXQvcGNzL3Bjcy1yem4xLW1paWMuYworRjoJaW5j
bHVkZS9kdC1iaW5kaW5ncy9uZXQvcGNzLXJ6bjEtbWlpYy5oCitGOglpbmNsdWRlL2xpbnV4L3Bj
cy1yem4xLW1paWMuaAorRjoJbmV0L2RzYS90YWdfcnpuMV9hNXBzdy5jCisKK1JFTkVTQVMgUlov
TjEgRFdNQUMgR0xVRSBMQVlFUgorTToJUm9tYWluIEdhbnRvaXMgPHJvbWFpbi5nYW50b2lzQGJv
b3RsaW4uY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL25ldC9yZW5lc2FzLHJ6bjEtZ21hYy55YW1sCitGOglkcml2ZXJzL25ldC9ldGhlcm5l
dC9zdG1pY3JvL3N0bW1hYy9kd21hYy1yem4xLmMKKworUkVORVNBUyBSWi9OMSBSVEMgQ09OVFJP
TExFUiBEUklWRVIKK006CU1pcXVlbCBSYXluYWwgPG1pcXVlbC5yYXluYWxAYm9vdGxpbi5jb20+
CitMOglsaW51eC1ydGNAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9ydGMvcmVuZXNhcyxyem4xLXJ0Yy55YW1sCitGOglkcml2ZXJzL3J0Yy9ydGMtcnpu
MS5jCisKK1JFTkVTQVMgUlovTjEgVVNCRiBDT05UUk9MTEVSIERSSVZFUgorTToJSGVydmUgQ29k
aW5hIDxoZXJ2ZS5jb2RpbmFAYm9vdGxpbi5jb20+CitMOglsaW51eC1yZW5lc2FzLXNvY0B2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvcmVuZXNhcyxyem4xLXVz
YmYueWFtbAorRjoJZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9yZW5lc2FzX3VzYmYuYworCitSRU5F
U0FTIFJaL1YySChQKSBEV01BQyBHQkVUSCBHTFVFIExBWUVSIERSSVZFUgorTToJTGFkIFByYWJo
YWthciA8cHJhYmhha2FyLm1haGFkZXYtbGFkLnJqQGJwLnJlbmVzYXMuY29tPgorTDoJbmV0ZGV2
QHZnZXIua2VybmVsLm9yZworTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3Jl
bmVzYXMscjlhMDlnMDU3LWdiZXRoLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWlj
cm8vc3RtbWFjL2R3bWFjLXJlbmVzYXMtZ2JldGguYworCitSRU5FU0FTIFJaL1YyTSBJMkMgRFJJ
VkVSCitNOglGYWJyaXppbyBDYXN0cm8gPGZhYnJpemlvLmNhc3Ryby5qekByZW5lc2FzLmNvbT4K
K0w6CWxpbnV4LWkyY0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvaTJjL3JlbmVzYXMscnp2Mm0ueWFtbAorRjoJZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1y
enYybS5jCisKK1JFTkVTQVMgU1VQRVJIIEVUSEVSTkVUIERSSVZFUgorTToJTmlrbGFzIFPDtmRl
cmx1bmQgPG5pa2xhcy5zb2Rlcmx1bmRAcmFnbmF0ZWNoLnNlPgorTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L3JlbmVzYXMsZXRo
ZXIueWFtbAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnCitGOglkcml2
ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL01ha2VmaWxlCitGOglkcml2ZXJzL25ldC9ldGhlcm5l
dC9yZW5lc2FzL3NoX2V0aCoKK0Y6CWluY2x1ZGUvbGludXgvc2hfZXRoLmgKKworUkVORVNBUyBV
U0IgUEhZIERSSVZFUgorTToJWW9zaGloaXJvIFNoaW1vZGEgPHlvc2hpaGlyby5zaGltb2RhLnVo
QHJlbmVzYXMuY29tPgorTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL3BoeS9yZW5lc2FzL3BoeS1yY2FyLWdlbjMtdXNiKi5jCisK
K1JFTkVTQVMgVkVSU0FDTE9DSyA3IENMT0NLIERSSVZFUgorTToJQWxleCBIZWxtcyA8YWxleGFu
ZGVyLmhlbG1zLmp5QHJlbmVzYXMuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3JlbmVzYXMsdmVyc2FjbG9jazcueWFtbAorRjoJ
ZHJpdmVycy9jbGsvY2xrLXZlcnNhY2xvY2s3LmMKKworUkVORVNBUyBYOTI1MCBESUdJVEFMIFBP
VEVOVElPTUVURVJTIERSSVZFUgorTToJSGVydmUgQ29kaW5hIDxoZXJ2ZS5jb2RpbmFAYm9vdGxp
bi5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3BvdGVudGlvbWV0ZXIvcmVuZXNh
cyx4OTI1MC55YW1sCitGOglkcml2ZXJzL2lpby9wb3RlbnRpb21ldGVyL3g5MjUwLmMKKworUkVT
RVQgQ09OVFJPTExFUiBGUkFNRVdPUksKK006CVBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0
cm9uaXguZGU+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0LnBlbmd1dHJvbml4LmRl
L2dpdC9wemEvbGludXgKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNl
dC8KK0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9yZXNldC5yc3QKK0Y6CWRyaXZlcnMvcmVz
ZXQvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3Jlc2V0LworRjoJaW5jbHVkZS9saW51eC9yZXNl
dC1jb250cm9sbGVyLmgKK0Y6CWluY2x1ZGUvbGludXgvcmVzZXQuaAorRjoJaW5jbHVkZS9saW51
eC9yZXNldC8KK0s6CVxiKD86ZGV2bV98b2ZfKT9yZXNldF9jb250cm9sKD86bGVyX1thLXpdK3xf
W2Etel9dKyk/XGIKKworUkVTVEFSVEFCTEUgU0VRVUVOQ0VTIFNVUFBPUlQKK006CU1hdGhpZXUg
RGVzbm95ZXJzIDxtYXRoaWV1LmRlc25veWVyc0BlZmZpY2lvcy5jb20+CitNOglQZXRlciBaaWps
c3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CitNOgkiUGF1bCBFLiBNY0tlbm5leSIgPHBhdWxt
Y2tAa2VybmVsLm9yZz4KK006CUJvcXVuIEZlbmcgPGJvcXVuLmZlbmdAZ21haWwuY29tPgorTDoJ
bGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglpbmNsdWRlL3Ry
YWNlL2V2ZW50cy9yc2VxLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9yc2VxLmgKK0Y6CWtlcm5l
bC9yc2VxLmMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3JzZXEvCisKK1JGS0lMTAorTToJ
Sm9oYW5uZXMgQmVyZyA8am9oYW5uZXNAc2lwc29sdXRpb25zLm5ldD4KK0w6CWxpbnV4LXdpcmVs
ZXNzQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly93aXJlbGVzcy53
aWtpLmtlcm5lbC5vcmcvCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3Qv
bGludXgtd2lyZWxlc3MvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvd2lyZWxlc3Mvd2lyZWxlc3MuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0
Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3dpcmVsZXNzL3dpcmVsZXNzLW5l
eHQuZ2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtY2xhc3MtcmZraWxsCitG
OglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcmZraWxsLnJzdAorRjoJaW5jbHVkZS9saW51eC9y
ZmtpbGwuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3Jma2lsbC5oCitGOgluZXQvcmZraWxsLwor
CitSSEFTSFRBQkxFCitNOglUaG9tYXMgR3JhZiA8dGdyYWZAc3V1Zy5jaD4KK006CUhlcmJlcnQg
WHUgPGhlcmJlcnRAZ29uZG9yLmFwYW5hLm9yZy5hdT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWluY2x1ZGUvbGludXgvcmhhc2h0YWJsZS10eXBl
cy5oCitGOglpbmNsdWRlL2xpbnV4L3JoYXNodGFibGUuaAorRjoJbGliL3JoYXNodGFibGUuYwor
RjoJbGliL3Rlc3Rfcmhhc2h0YWJsZS5jCisKK1JJQ09IIFI1QzU5MiBNRU1PUllTVElDSyBEUklW
RVIKK006CU1heGltIExldml0c2t5IDxtYXhpbWxldml0c2t5QGdtYWlsLmNvbT4KK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLioKKworUklDT0ggU01BUlRNRURJ
QS9YRCBEUklWRVIKK006CU1heGltIExldml0c2t5IDxtYXhpbWxldml0c2t5QGdtYWlsLmNvbT4K
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbXRkL25hbmQvcmF3L3I4NTIuYworRjoJZHJpdmVy
cy9tdGQvbmFuZC9yYXcvcjg1Mi5oCisKK1JJU0MtViBBSUEgRFJJVkVSUworTToJQW51cCBQYXRl
bCA8YW51cEBicmFpbmZhdWx0Lm9yZz4KK0w6CWxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9p
bnRlcnJ1cHQtY29udHJvbGxlci9yaXNjdixhcGxpYy55YW1sCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvcmlzY3YsaW1zaWNzLnlhbWwK
K0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtcmlzY3YtYXBsaWMtKi5jCitGOglkcml2ZXJzL2lycWNo
aXAvaXJxLXJpc2N2LWFwbGljLSouaAorRjoJZHJpdmVycy9pcnFjaGlwL2lycS1yaXNjdi1pbXNp
Yy0qLmMKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtcmlzY3YtaW1zaWMtKi5oCitGOglkcml2ZXJz
L2lycWNoaXAvaXJxLXJpc2N2LWludGMuYworRjoJaW5jbHVkZS9saW51eC9pcnFjaGlwL3Jpc2N2
LWFwbGljLmgKK0Y6CWluY2x1ZGUvbGludXgvaXJxY2hpcC9yaXNjdi1pbXNpYy5oCisKK1JJU0Mt
ViBBUkNISVRFQ1RVUkUKK006CVBhdWwgV2FsbXNsZXkgPHBhdWwud2FsbXNsZXlAc2lmaXZlLmNv
bT4KK006CVBhbG1lciBEYWJiZWx0IDxwYWxtZXJAZGFiYmVsdC5jb20+CitNOglBbGJlcnQgT3Ug
PGFvdUBlZWNzLmJlcmtlbGV5LmVkdT4KK1I6CUFsZXhhbmRyZSBHaGl0aSA8YWxleEBnaGl0aS5m
cj4KK0w6CWxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorUToJ
aHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xpbnV4LXJpc2N2L2xpc3QvCitD
OglpcmM6Ly9pcmMubGliZXJhLmNoYXQvcmlzY3YKK1A6CURvY3VtZW50YXRpb24vYXJjaC9yaXNj
di9wYXRjaC1hY2NlcHRhbmNlLnJzdAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9z
Y20vbGludXgva2VybmVsL2dpdC9yaXNjdi9saW51eC5naXQKK0Y6CWFyY2gvcmlzY3YvCitOOgly
aXNjdgorSzoJcmlzY3YKKworUklTQy1WIElPTU1VCitNOglUb21hc3ogSmV6bmFjaCA8dGplem5h
Y2hAcml2b3NpbmMuY29tPgorTDoJaW9tbXVAbGlzdHMubGludXguZGV2CitMOglsaW51eC1yaXNj
dkBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2lvbW11L2xpbnV4LmdpdAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3Jpc2N2LGlvbW11LnlhbWwKK0Y6
CWRyaXZlcnMvaW9tbXUvcmlzY3YvCisKK1JJU0MtViBNSUNST0NISVAgRlBHQSBTVVBQT1JUCitN
OglDb25vciBEb29sZXkgPGNvbm9yLmRvb2xleUBtaWNyb2NoaXAuY29tPgorTToJRGFpcmUgTWNO
YW1hcmEgPGRhaXJlLm1jbmFtYXJhQG1pY3JvY2hpcC5jb20+CitMOglsaW51eC1yaXNjdkBsaXN0
cy5pbmZyYWRlYWQub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9jbG9jay9taWNyb2NoaXAsbXBmcyoueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vbWljcm9jaGlwLG1wZnMtZ3Bpby55YW1sCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL21pY3JvY2hpcCxjb3JlaTJjLnlhbWwK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tYWlsYm94L21pY3JvY2hpcCxt
cGZzLW1haWxib3gueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25l
dC9jYW4vbWljcm9jaGlwLG1wZnMtY2FuLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9wd20vbWljcm9jaGlwLGNvcmVwd20ueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL3Jpc2N2L21pY3JvY2hpcC55YW1sCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3Mvc29jL21pY3JvY2hpcC9taWNyb2NoaXAsbXBmcy1zeXMtY29u
dHJvbGxlci55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL21p
Y3JvY2hpcCxtcGZzLXNwaS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvdXNiL21pY3JvY2hpcCxtcGZzLW11c2IueWFtbAorRjoJYXJjaC9yaXNjdi9ib290L2R0cy9t
aWNyb2NoaXAvCitGOglkcml2ZXJzL2NoYXIvaHdfcmFuZG9tL21wZnMtcm5nLmMKK0Y6CWRyaXZl
cnMvY2xrL21pY3JvY2hpcC9jbGstbXBmcyouYworRjoJZHJpdmVycy9maXJtd2FyZS9taWNyb2No
aXAvbXBmcy1hdXRvLXVwZGF0ZS5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1tcGZzLmMKK0Y6CWRy
aXZlcnMvaTJjL2J1c3Nlcy9pMmMtbWljcm9jaGlwLWNvcmVpMmMuYworRjoJZHJpdmVycy9tYWls
Ym94L21haWxib3gtbXBmcy5jCitGOglkcml2ZXJzL3BjaS9jb250cm9sbGVyL3BsZGEvcGNpZS1t
aWNyb2NoaXAtaG9zdC5jCitGOglkcml2ZXJzL3B3bS9wd20tbWljcm9jaGlwLWNvcmUuYworRjoJ
ZHJpdmVycy9yZXNldC9yZXNldC1tcGZzLmMKK0Y6CWRyaXZlcnMvcnRjL3J0Yy1tcGZzLmMKK0Y6
CWRyaXZlcnMvc29jL21pY3JvY2hpcC9tcGZzLXN5cy1jb250cm9sbGVyLmMKK0Y6CWRyaXZlcnMv
c3BpL3NwaS1taWNyb2NoaXAtY29yZS1xc3BpLmMKK0Y6CWRyaXZlcnMvc3BpL3NwaS1taWNyb2No
aXAtY29yZS5jCitGOglkcml2ZXJzL3VzYi9tdXNiL21wZnMuYworRjoJaW5jbHVkZS9zb2MvbWlj
cm9jaGlwL21wZnMuaAorCitSSVNDLVYgTUlTQyBTT0MgU1VQUE9SVAorTToJQ29ub3IgRG9vbGV5
IDxjb25vckBrZXJuZWwub3JnPgorTDoJbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwor
UzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9qZWN0L2xp
bnV4LXJpc2N2L2xpc3QvCitUOglnaXQgaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp
bnV4L2tlcm5lbC9naXQvY29ub3IvbGludXguZ2l0LworRjoJYXJjaC9yaXNjdi9ib290L2R0cy9j
YW5hYW4vCitGOglhcmNoL3Jpc2N2L2Jvb3QvZHRzL21pY3JvY2hpcC8KK0Y6CWFyY2gvcmlzY3Yv
Ym9vdC9kdHMvc2lmaXZlLworRjoJYXJjaC9yaXNjdi9ib290L2R0cy9zdGFyZml2ZS8KKworUklT
Qy1WIFBNVSBEUklWRVJTCitNOglBdGlzaCBQYXRyYSA8YXRpc2hwQGF0aXNocGF0cmEub3JnPgor
UjoJQW51cCBQYXRlbCA8YW51cEBicmFpbmZhdWx0Lm9yZz4KK0w6CWxpbnV4LXJpc2N2QGxpc3Rz
LmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9wZXJmL3Jpc2N2X3BtdS5j
CitGOglkcml2ZXJzL3BlcmYvcmlzY3ZfcG11X2xlZ2FjeS5jCitGOglkcml2ZXJzL3BlcmYvcmlz
Y3ZfcG11X3NiaS5jCisKK1JJU0MtViBTUEFDRU1JVCBTb0MgU3VwcG9ydAorTToJWWl4dW4gTGFu
IDxkbGFuQGdlbnRvby5vcmc+CitMOglsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCitM
OglzcGFjZW1pdEBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vZ2l0
aHViLmNvbS9zcGFjZW1pdC1jb20vbGludXgvd2lraQorQzoJaXJjOi8vaXJjLmxpYmVyYS5jaGF0
L3NwYWNlbWl0CitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL3NwYWNlbWl0LWNvbS9saW51eAor
RjoJYXJjaC9yaXNjdi9ib290L2R0cy9zcGFjZW1pdC8KK046CXNwYWNlbWl0CitLOglzcGFjZW1p
dAorCitSSVNDLVYgVEhFQUQgU29DIFNVUFBPUlQKK006CURyZXcgRnVzdGluaSA8ZHJld0BwZHA3
LmNvbT4KK006CUd1byBSZW4gPGd1b3JlbkBrZXJuZWwub3JnPgorTToJRnUgV2VpIDx3ZWZ1QHJl
ZGhhdC5jb20+CitMOglsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglNYWludGFp
bmVkCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL3BkcDcvbGludXguZ2l0CitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svdGhlYWQsdGgxNTIwLWNsay1hcC55YW1s
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZmlybXdhcmUvdGhlYWQsdGgx
NTIwLWFvbi55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWFpbGJv
eC90aGVhZCx0aDE1MjAtbWJveC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbmV0L3RoZWFkLHRoMTUyMC1nbWFjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9waW5jdHJsL3RoZWFkLHRoMTUyMC1waW5jdHJsLnlhbWwKK0Y6CWFyY2gv
cmlzY3YvYm9vdC9kdHMvdGhlYWQvCitGOglkcml2ZXJzL2Nsay90aGVhZC9jbGstdGgxNTIwLWFw
LmMKK0Y6CWRyaXZlcnMvZmlybXdhcmUvdGhlYWQsdGgxNTIwLWFvbi5jCitGOglkcml2ZXJzL21h
aWxib3gvbWFpbGJveC10aDE1MjAuYworRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9z
dG1tYWMvZHdtYWMtdGhlYWQuYworRjoJZHJpdmVycy9waW5jdHJsL3BpbmN0cmwtdGgxNTIwLmMK
K0Y6CWRyaXZlcnMvcG1kb21haW4vdGhlYWQvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2Nr
L3RoZWFkLHRoMTUyMC1jbGstYXAuaAorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9wb3dlci90aGVh
ZCx0aDE1MjAtcG93ZXIuaAorRjoJaW5jbHVkZS9saW51eC9maXJtd2FyZS90aGVhZC90aGVhZCx0
aDE1MjAtYW9uLmgKKworUk5CRCBCTE9DSyBEUklWRVJTCitNOglNZC4gSGFyaXMgSXFiYWwgPGhh
cmlzLmlxYmFsQGlvbm9zLmNvbT4KK006CUphY2sgV2FuZyA8amlucHUud2FuZ0Bpb25vcy5jb20+
CitMOglsaW51eC1ibG9ja0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvYmxvY2svcm5iZC8KKworUk9DQ0FUIERSSVZFUlMKK006CVN0ZWZhbiBBY2hhdHogPGVyYXpv
cl9kZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitTOglNYWludGFpbmVkCitXOglodHRwOi8vc291
cmNlZm9yZ2UubmV0L3Byb2plY3RzL3JvY2NhdC8KK0Y6CURvY3VtZW50YXRpb24vQUJJLyovc3lz
ZnMtZHJpdmVyLWhpZC1yb2NjYXQqCitGOglkcml2ZXJzL2hpZC9oaWQtcm9jY2F0KgorRjoJaW5j
bHVkZS9saW51eC9oaWQtcm9jY2F0KgorCitST0NLQ0hJUCBDQU4tRkQgRFJJVkVSCitNOglNYXJj
IEtsZWluZS1CdWRkZSA8bWtsQHBlbmd1dHJvbml4LmRlPgorUjoJa2VybmVsQHBlbmd1dHJvbml4
LmRlCitMOglsaW51eC1jYW5Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9yb2NrY2hpcCxyazM1Njh2Mi1j
YW5mZC55YW1sCitGOglkcml2ZXJzL25ldC9jYW4vcm9ja2NoaXAvCisKK1JPQ0tDSElQIENSWVBU
TyBEUklWRVJTCitNOglDb3JlbnRpbiBMYWJiZSA8Y2xhYmJlQGJheWxpYnJlLmNvbT4KK0w6CWxp
bnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vcm9ja2NoaXAscmszMjg4LWNyeXB0by55YW1s
CitGOglkcml2ZXJzL2NyeXB0by9yb2NrY2hpcC8KKworUk9DS0NISVAgSTJTIFRETSBEUklWRVIK
K006CU5pY29sYXMgRnJhdHRhcm9saSA8ZnJhdHRhcm9saS5uaWNvbGFzQGdtYWlsLmNvbT4KK0w6
CWxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9yb2NrY2hpcCxpMnMtdGRtLnlh
bWwKK0Y6CXNvdW5kL3NvYy9yb2NrY2hpcC9yb2NrY2hpcF9pMnNfdGRtLioKKworUk9DS0NISVAg
SVNQIFYxIERSSVZFUgorTToJRGFmbmEgSGlyc2NoZmVsZCA8ZGFmbmFAZmFzdG1haWwuY29tPgor
TToJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgor
TDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1yb2NrY2hpcEBsaXN0cy5p
bmZyYWRlYWQub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRl
L21lZGlhL3JraXNwMS5yc3QKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9t
ZWRpYS9yb2NrY2hpcC1pc3AxLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9t
ZWRpYS92NGwvbWV0YWZtdC1ya2lzcDEucnN0CitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Jv
Y2tjaGlwL3JraXNwMQorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3JraXNwMS1jb25maWcuaAorCitS
T0NLQ0hJUCBSSzM1NjggUkFORE9NIE5VTUJFUiBHRU5FUkFUT1IgU1VQUE9SVAorTToJRGFuaWVs
IEdvbGxlIDxkYW5pZWxAbWFrcm90b3BpYS5vcmc+CitNOglBdXJlbGllbiBKYXJubyA8YXVyZWxp
ZW5AYXVyZWwzMi5uZXQ+CitNOglOaWNvbGFzIEZyYXR0YXJvbGkgPG5pY29sYXMuZnJhdHRhcm9s
aUBjb2xsYWJvcmEuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL3JuZy9yb2NrY2hpcCxyazM1Njgtcm5nLnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9ybmcvcm9ja2NoaXAscmszNTg4LXJuZy55YW1sCitGOglk
cml2ZXJzL2NoYXIvaHdfcmFuZG9tL3JvY2tjaGlwLXJuZy5jCisKK1JPQ0tDSElQIFJBU1RFUiAy
RCBHUkFQSElDIEFDQ0VMRVJBVElPTiBVTklUIERSSVZFUgorTToJSmFjb2IgQ2hlbiA8amFjb2It
Y2hlbkBpb3R3cnQuY29tPgorTToJRXplcXVpZWwgR2FyY2lhIDxlemVxdWllbEB2YW5ndWFyZGlh
c3VyLmNvbS5hcj4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtcm9j
a2NoaXBAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3JvY2tjaGlwLXJnYS55YW1sCitGOglkcml2ZXJz
L21lZGlhL3BsYXRmb3JtL3JvY2tjaGlwL3JnYS8KKworUk9DS0NISVAgUkszMzA4IElOVEVSTkFM
IEFVRElPIENPREVDCitNOglMdWNhIENlcmVzb2xpIDxsdWNhLmNlcmVzb2xpQGJvb3RsaW4uY29t
PgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Nv
dW5kL3JvY2tjaGlwLHJrMzMwOC1jb2RlYy55YW1sCitGOglzb3VuZC9zb2MvY29kZWNzL3JrMzMw
OF9jb2RlYy5jCitGOglzb3VuZC9zb2MvY29kZWNzL3JrMzMwOF9jb2RlYy5oCisKK1JPQ0tDSElQ
IFNBSSBEUklWRVIKK006CU5pY29sYXMgRnJhdHRhcm9saSA8bmljb2xhcy5mcmF0dGFyb2xpQGNv
bGxhYm9yYS5jb20+CitMOglsaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcm9j
a2NoaXAscmszNTc2LXNhaS55YW1sCitGOglzb3VuZC9zb2Mvcm9ja2NoaXAvcm9ja2NoaXBfc2Fp
LioKKworUk9DS0NISVAgVklERU8gREVDT0RFUiBEUklWRVIKK006CUV6ZXF1aWVsIEdhcmNpYSA8
ZXplcXVpZWxAdmFuZ3VhcmRpYXN1ci5jb20uYXI+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK0w6CWxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9yb2NrY2hpcCx2
ZGVjLnlhbWwKK0Y6CWRyaXZlcnMvc3RhZ2luZy9tZWRpYS9ya3ZkZWMvCisKK1JPQ0tFUiBEUklW
RVIKK006CUppcmkgUGlya28gPGppcmlAcmVzbnVsbGkudXM+CitMOgluZXRkZXZAdmdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3JvY2tlci8KKwor
Uk9DS0VUUE9SVCBFWFBSRVNTL0lORklOSVRZIERSSVZFUgorTToJS2V2aW4gQ2VybmVrZWUgPGNl
cm5la2VlQGdtYWlsLmNvbT4KK0w6CWxpbnV4LXNlcmlhbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9k
ZCBGaXhlcworRjoJZHJpdmVycy90dHkvc2VyaWFsL3JwMi4qCisKK1JPSE0gQkQ3OTcwMyBEQUMK
K006CU1hdHRpIFZhaXR0aW5lbiA8bWF6emllc2FjY291bnRAZ21haWwuY29tPgorUzoJU3VwcG9y
dGVkCitGOglkcml2ZXJzL2lpby9kYWMvcm9obS1iZDc5NzAzLmMKKworUk9ITSBCRDk5OTU0IENI
QVJHRVIgSUMKK006CU1hdHRpIFZhaXR0aW5lbiA8bWF6emllc2FjY291bnRAZ21haWwuY29tPgor
UzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9iZDk5OTU0LWNoYXJnZXIuYwor
RjoJZHJpdmVycy9wb3dlci9zdXBwbHkvYmQ5OTk1NC1jaGFyZ2VyLmgKKworUk9ITSBCSDE3NDUg
Q09MT1VSIFNFTlNPUgorTToJTXVkaXQgU2hhcm1hIDxtdWRpdHNoYXJtYS5pbmZvQGdtYWlsLmNv
bT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvaWlvL2xpZ2h0L2JoMTc0NS5jCisKK1JPSE0gQkgxNzUwIEFNQklFTlQgTElHSFQgU0VOU09S
IERSSVZFUgorTToJVG9tYXN6IER1c3p5bnNraSA8dGR1c3p5bnNAZ21haWwuY29tPgorUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC9i
aDE3NTAueWFtbAorRjoJZHJpdmVycy9paW8vbGlnaHQvYmgxNzUwLmMKKworUk9ITSBCTTEzOTAg
UFJFU1NVUkUgU0VOU09SIERSSVZFUgorTToJTWF0dGkgVmFpdHRpbmVuIDxtYXp6aWVzYWNjb3Vu
dEBnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQK
K0Y6CWRyaXZlcnMvaWlvL3ByZXNzdXJlL3JvaG0tYm0xMzkwLmMKKworUk9ITSBCVTI3MHh4IExJ
R0hUIFNFTlNPUiBEUklWRVJzCitNOglNYXR0aSBWYWl0dGluZW4gPG1henppZXNhY2NvdW50QGdt
YWlsLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
ZHJpdmVycy9paW8vbGlnaHQvcm9obS1idTI3MDM0LmMKKworUk9ITSBNVUxUSUZVTkNUSU9OIEJE
OTU3MU1XVi1NIFBNSUMgREVWSUNFIERSSVZFUlMKK006CU1hcmVrIFZhc3V0IDxtYXJlay52YXN1
dCtyZW5lc2FzQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK0w6
CWxpbnV4LXJlbmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3JvaG0sYmQ5NTcxbXd2LnlhbWwKK0Y6
CWRyaXZlcnMvZ3Bpby9ncGlvLWJkOTU3MW13di5jCitGOglkcml2ZXJzL21mZC9iZDk1NzFtd3Yu
YworRjoJZHJpdmVycy9yZWd1bGF0b3IvYmQ5NTcxbXd2LXJlZ3VsYXRvci5jCitGOglpbmNsdWRl
L2xpbnV4L21mZC9iZDk1NzFtd3YuaAorCitST0hNIFBPV0VSIE1BTkFHRU1FTlQgSUMgREVWSUNF
IERSSVZFUlMKK006CU1hdHRpIFZhaXR0aW5lbiA8bWF6emllc2FjY291bnRAZ21haWwuY29tPgor
UzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2Nsay9jbGstYmQ3MTh4Ny5jCitGOglkcml2ZXJzL2dw
aW8vZ3Bpby1iZDcxODE1LmMKK0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLWJkNzE4MjguYworRjoJZHJp
dmVycy9tZmQvcm9obS1iZDcxODI4LmMKK0Y6CWRyaXZlcnMvbWZkL3JvaG0tYmQ3MTh4Ny5jCitG
Oglkcml2ZXJzL21mZC9yb2htLWJkOTU3Ni5jCitGOglkcml2ZXJzL21mZC9yb2htLWJkOTY4MDEu
YworRjoJZHJpdmVycy9yZWd1bGF0b3IvYmQ3MTgxNS1yZWd1bGF0b3IuYworRjoJZHJpdmVycy9y
ZWd1bGF0b3IvYmQ3MTgyOC1yZWd1bGF0b3IuYworRjoJZHJpdmVycy9yZWd1bGF0b3IvYmQ3MTh4
Ny1yZWd1bGF0b3IuYworRjoJZHJpdmVycy9yZWd1bGF0b3IvYmQ5NTc2LXJlZ3VsYXRvci5jCitG
Oglkcml2ZXJzL3JlZ3VsYXRvci9iZDk2ODAxLXJlZ3VsYXRvci5jCitGOglkcml2ZXJzL3JlZ3Vs
YXRvci9yb2htLXJlZ3VsYXRvci5jCitGOglkcml2ZXJzL3J0Yy9ydGMtYmQ3MDUyOC5jCitGOglk
cml2ZXJzL3dhdGNoZG9nL2JkOTU3Nl93ZHQuYworRjoJZHJpdmVycy93YXRjaGRvZy9iZDk2ODAx
X3dkdC5jCitGOglpbmNsdWRlL2xpbnV4L21mZC9yb2htLWJkNzE4MTUuaAorRjoJaW5jbHVkZS9s
aW51eC9tZmQvcm9obS1iZDcxODI4LmgKK0Y6CWluY2x1ZGUvbGludXgvbWZkL3JvaG0tYmQ3MTh4
Ny5oCitGOglpbmNsdWRlL2xpbnV4L21mZC9yb2htLWJkOTU3eC5oCitGOglpbmNsdWRlL2xpbnV4
L21mZC9yb2htLWJkOTY4MDEuaAorRjoJaW5jbHVkZS9saW51eC9tZmQvcm9obS1nZW5lcmljLmgK
K0Y6CWluY2x1ZGUvbGludXgvbWZkL3JvaG0tc2hhcmVkLmgKKworUk9TRSBORVRXT1JLIExBWUVS
CitMOglsaW51eC1oYW1zQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xp
bnV4LWF4MjUuaW4tYmVybGluLmRlCitGOglpbmNsdWRlL25ldC9yb3NlLmgKK0Y6CWluY2x1ZGUv
dWFwaS9saW51eC9yb3NlLmgKK0Y6CW5ldC9yb3NlLworCitST1RBVElPTiBEUklWRVIgRk9SIEFM
TFdJTk5FUiBBODNUCitNOglKZXJuZWogU2tyYWJlYyA8amVybmVqLnNrcmFiZWNAZ21haWwuY29t
PgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQg
Z2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvbWVkaWEvYWxsd2lubmVyLHN1bjhpLWE4M3QtZGUyLXJvdGF0ZS55YW1sCitGOglk
cml2ZXJzL21lZGlhL3BsYXRmb3JtL3N1bnhpL3N1bjhpLXJvdGF0ZS8KKworUlBNQiBTVUJTWVNU
RU0KK006CUplbnMgV2lrbGFuZGVyIDxqZW5zLndpa2xhbmRlckBsaW5hcm8ub3JnPgorTDoJbGlu
dXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL21pc2Mv
cnBtYi1jb3JlLmMKK0Y6CWluY2x1ZGUvbGludXgvcnBtYi5oCisKK1JQTVNHIFRUWSBEUklWRVIK
K006CUFybmF1ZCBQb3VsaXF1ZW4gPGFybmF1ZC5wb3VsaXF1ZW5AZm9zcy5zdC5jb20+CitMOgls
aW51eC1yZW1vdGVwcm9jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy90dHkvcnBtc2dfdHR5LmMKKworUlRBU0UgRVRIRVJORVQgRFJJVkVSCitNOglKdXN0aW4gTGFp
IDxqdXN0aW5sYWkwMjE1QHJlYWx0ZWsuY29tPgorTToJTGFycnkgQ2hpdSA8bGFycnkuY2hpdUBy
ZWFsdGVrLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvCisKK1JUTDI4MzAgTUVESUEgRFJJ
VkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6
Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xp
bnV4LW1lZGlhL2xpc3QvCitGOglkcml2ZXJzL21lZGlhL2R2Yi1mcm9udGVuZHMvcnRsMjgzMCoK
KworUlRMMjgzMiBNRURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwor
UzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxp
bnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvZHZi
LWZyb250ZW5kcy9ydGwyODMyKgorCitSVEwyODMyX1NEUiBNRURJQSBEUklWRVIKK0w6CWxpbnV4
LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3Jn
CitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlz
dC8KK0Y6CWRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9ydGwyODMyX3NkcioKKworUlRMODE4
MCBXSVJFTEVTUyBEUklWRVIKK0w6CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworUzoJ
T3JwaGFuCitGOglkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDgxOHgvcnRsODE4MC8K
KworUlRMODE4NyBXSVJFTEVTUyBEUklWRVIKK006CUhpbi1UYWsgTGV1bmcgPGhpbnRhay5sZXVu
Z0BnbWFpbC5jb20+CitMOglsaW51eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGh1Yi5jb20vcGtzaGloL3J0dy5naXQKK0Y6CWRyaXZl
cnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnRsODE4eC9ydGw4MTg3LworCitSVEw4WFhYVSBXSVJF
TEVTUyBEUklWRVIgKHJ0bDh4eHh1KQorTToJSmVzIFNvcmVuc2VuIDxKZXMuU29yZW5zZW5AZ21h
aWwuY29tPgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL3Brc2hpaC9ydHcuZ2l0CitGOglkcml2ZXJzL25l
dC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1LworCitSVEw5MzAwIEkyQyBEUklWRVIgKHJ0bDkz
MDAtaTJjKQorTToJQ2hyaXMgUGFja2hhbSA8Y2hyaXMucGFja2hhbUBhbGxpZWR0ZWxlc2lzLmNv
Lm56PgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9yZWFsdGVrLHJ0bDkzMDEtaTJjLnlh
bWwKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtcnRsOTMwMC5jCisKK1JUUlMgVFJBTlNQT1JU
IERSSVZFUlMKK006CU1kLiBIYXJpcyBJcWJhbCA8aGFyaXMuaXFiYWxAaW9ub3MuY29tPgorTToJ
SmFjayBXYW5nIDxqaW5wdS53YW5nQGlvbm9zLmNvbT4KK0w6CWxpbnV4LXJkbWFAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvCisK
K1JVTlRJTUUgVkVSSUZJQ0FUSU9OIChSVikKK006CVN0ZXZlbiBSb3N0ZWR0IDxyb3N0ZWR0QGdv
b2RtaXMub3JnPgorTDoJbGludXgtdHJhY2Uta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi90cmFjZS9ydi8KK0Y6CWluY2x1ZGUvbGludXgvcnYu
aAorRjoJaW5jbHVkZS9ydi8KK0Y6CWtlcm5lbC90cmFjZS9ydi8KK0Y6CXRvb2xzL3ZlcmlmaWNh
dGlvbi8KKworUlVTVAorTToJTWlndWVsIE9qZWRhIDxvamVkYUBrZXJuZWwub3JnPgorTToJQWxl
eCBHYXlub3IgPGFsZXguZ2F5bm9yQGdtYWlsLmNvbT4KK1I6CUJvcXVuIEZlbmcgPGJvcXVuLmZl
bmdAZ21haWwuY29tPgorUjoJR2FyeSBHdW8gPGdhcnlAZ2FyeWd1by5uZXQ+CitSOglCasO2cm4g
Um95IEJhcm9uIDxiam9ybjNfZ2hAcHJvdG9ubWFpbC5jb20+CitSOglCZW5ubyBMb3NzaW4gPGJl
bm5vLmxvc3NpbkBwcm90b24ubWU+CitSOglBbmRyZWFzIEhpbmRib3JnIDxhLmhpbmRib3JnQGtl
cm5lbC5vcmc+CitSOglBbGljZSBSeWhsIDxhbGljZXJ5aGxAZ29vZ2xlLmNvbT4KK1I6CVRyZXZv
ciBHcm9zcyA8dG1ncm9zc0B1bWljaC5lZHU+CitSOglEYW5pbG8gS3J1bW1yaWNoIDxkYWtyQGtl
cm5lbC5vcmc+CitMOglydXN0LWZvci1saW51eEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVzoJaHR0cHM6Ly9ydXN0LWZvci1saW51eC5jb20KK0I6CWh0dHBzOi8vZ2l0aHViLmNvbS9S
dXN0LWZvci1MaW51eC9saW51eC9pc3N1ZXMKK0M6CXp1bGlwOi8vcnVzdC1mb3ItbGludXguenVs
aXBjaGF0LmNvbQorUDoJaHR0cHM6Ly9ydXN0LWZvci1saW51eC5jb20vY29udHJpYnV0aW5nCitU
OglnaXQgaHR0cHM6Ly9naXRodWIuY29tL1J1c3QtZm9yLUxpbnV4L2xpbnV4LmdpdCBydXN0LW5l
eHQKK0Y6CS5jbGlwcHkudG9tbAorRjoJRG9jdW1lbnRhdGlvbi9ydXN0LworRjoJaW5jbHVkZS90
cmFjZS9ldmVudHMvcnVzdF9zYW1wbGUuaAorRjoJcnVzdC8KK0Y6CXNhbXBsZXMvcnVzdC8KK0Y6
CXNjcmlwdHMvKnJ1c3QqCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9ydXN0LworSzoJXGIo
P2k6cnVzdClcYgorCitSVVNUIFtBTExPQ10KK006CURhbmlsbyBLcnVtbXJpY2ggPGRha3JAa2Vy
bmVsLm9yZz4KK0w6CXJ1c3QtZm9yLWxpbnV4QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9SdXN0LWZvci1MaW51eC9saW51eC5naXQgYWxs
b2MtbmV4dAorRjoJcnVzdC9rZXJuZWwvYWxsb2MucnMKK0Y6CXJ1c3Qva2VybmVsL2FsbG9jLwor
CitSVVNUIFtQSU4tSU5JVF0KK006CUJlbm5vIExvc3NpbiA8YmVubm8ubG9zc2luQHByb3Rvbi5t
ZT4KK0w6CXJ1c3QtZm9yLWxpbnV4QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJ
aHR0cHM6Ly9ydXN0LWZvci1saW51eC5jb20vcGluLWluaXQKK0I6CWh0dHBzOi8vZ2l0aHViLmNv
bS9SdXN0LWZvci1MaW51eC9waW4taW5pdC9pc3N1ZXMKK0M6CXp1bGlwOi8vcnVzdC1mb3ItbGlu
dXguenVsaXBjaGF0LmNvbQorUDoJcnVzdC9waW4taW5pdC9DT05UUklCVVRJTkcubWQKK1Q6CWdp
dCBodHRwczovL2dpdGh1Yi5jb20vUnVzdC1mb3ItTGludXgvbGludXguZ2l0IHBpbi1pbml0LW5l
eHQKK0Y6CXJ1c3Qva2VybmVsL2luaXQucnMKK0Y6CXJ1c3QvcGluLWluaXQvCitLOglcYnBpbi1p
bml0XGJ8cGluX2luaXRcYnxQaW5Jbml0CisKK1JYUlBDIFNPQ0tFVFMgKEFGX1JYUlBDKQorTToJ
RGF2aWQgSG93ZWxscyA8ZGhvd2VsbHNAcmVkaGF0LmNvbT4KK006CU1hcmMgRGlvbm5lIDxtYXJj
LmRpb25uZUBhdXJpc3Rvci5jb20+CitMOglsaW51eC1hZnNAbGlzdHMuaW5mcmFkZWFkLm9yZwor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL3d3dy5pbmZyYWRlYWQub3JnL35kaG93ZWxscy9rYWZz
LworRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3J4cnBjLnJzdAorRjoJaW5jbHVkZS9rZXlz
L3J4cnBjLXR5cGUuaAorRjoJaW5jbHVkZS9uZXQvYWZfcnhycGMuaAorRjoJaW5jbHVkZS90cmFj
ZS9ldmVudHMvcnhycGMuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3J4cnBjLmgKK0Y6CW5ldC9y
eHJwYy8KKworUzMgU0FWQUdFIEZSQU1FQlVGRkVSIERSSVZFUgorTToJQW50b25pbm8gRGFwbGFz
IDxhZGFwbGFzQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWZiZGV2QHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJZHJpdmVycy92aWRlby9mYmRldi9zYXZhZ2UvCisKK1MzOTAgQVJDSElU
RUNUVVJFCitNOglIZWlrbyBDYXJzdGVucyA8aGNhQGxpbnV4LmlibS5jb20+CitNOglWYXNpbHkg
R29yYmlrIDxnb3JAbGludXguaWJtLmNvbT4KK006CUFsZXhhbmRlciBHb3JkZWV2IDxhZ29yZGVl
dkBsaW51eC5pYm0uY29tPgorUjoJQ2hyaXN0aWFuIEJvcm50cmFlZ2VyIDxib3JudHJhZWdlckBs
aW51eC5pYm0uY29tPgorUjoJU3ZlbiBTY2huZWxsZSA8c3ZlbnNAbGludXguaWJtLmNvbT4KK0w6
CWxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvczM5MC9saW51eC5naXQKK0Y6
CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9zMzkwLWRyaXZlcnMucnN0CitGOglEb2N1bWVudGF0
aW9uL2FyY2gvczM5MC8KK0Y6CWFyY2gvczM5MC8KK0Y6CWRyaXZlcnMvczM5MC8KK0Y6CWRyaXZl
cnMvd2F0Y2hkb2cvZGlhZzI4OF93ZHQuYworCitTMzkwIENPTU1PTiBJL08gTEFZRVIKK006CVZp
bmVldGggVmlqYXlhbiA8dm5lZXRodkBsaW51eC5pYm0uY29tPgorTToJUGV0ZXIgT2JlcnBhcmxl
aXRlciA8b2JlcnBhckBsaW51eC5pYm0uY29tPgorTDoJbGludXgtczM5MEB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9zMzkwL2Npby8KKworUzM5MCBDUllQVE8gTU9E
VUxFUywgUFJORyBEUklWRVIsIEFSQ0ggUkFORE9NCitNOglIYXJhbGQgRnJldWRlbmJlcmdlciA8
ZnJldWRlQGxpbnV4LmlibS5jb20+CitNOglIb2xnZXIgRGVuZ2xlciA8ZGVuZ2xlckBsaW51eC5p
Ym0uY29tPgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtczM5MEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJYXJjaC9zMzkwL2NyeXB0by8KK0Y6CWFy
Y2gvczM5MC9pbmNsdWRlL2FzbS9hcmNocmFuZG9tLmgKK0Y6CWFyY2gvczM5MC9pbmNsdWRlL2Fz
bS9jcGFjZi5oCisKK1MzOTAgREFTRCBEUklWRVIKK006CVN0ZWZhbiBIYWJlcmxhbmQgPHN0aEBs
aW51eC5pYm0uY29tPgorTToJSmFuIEhvZXBwbmVyIDxob2VwcG5lckBsaW51eC5pYm0uY29tPgor
TDoJbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJYmxvY2svcGFy
dGl0aW9ucy9pYm0uYworRjoJZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2QqCitGOglpbmNsdWRlL2xp
bnV4L2Rhc2RfbW9kLmgKKworUzM5MCBIV1JBTkRPTSBUUk5HIERSSVZFUgorTToJSGFyYWxkIEZy
ZXVkZW5iZXJnZXIgPGZyZXVkZUBsaW51eC5pYm0uY29tPgorTToJSG9sZ2VyIERlbmdsZXIgPGRl
bmdsZXJAbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcKK0w6
CWxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvY2hh
ci9od19yYW5kb20vczM5MC10cm5nLmMKKworUzM5MCBJT01NVSAoUENJKQorTToJTmlrbGFzIFNj
aG5lbGxlIDxzY2huZWxsZUBsaW51eC5pYm0uY29tPgorTToJTWF0dGhldyBSb3NhdG8gPG1qcm9z
YXRvQGxpbnV4LmlibS5jb20+CitSOglHZXJhbGQgU2NoYWVmZXIgPGdlcmFsZC5zY2hhZWZlckBs
aW51eC5pYm0uY29tPgorTDoJbGludXgtczM5MEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy9pb21tdS9zMzkwLWlvbW11LmMKKworUzM5MCBJVUNWIE5FVFdPUksgTEFZ
RVIKK006CUFsZXhhbmRyYSBXaW50ZXIgPHdpbnRlcmFAbGludXguaWJtLmNvbT4KK006CVRob3Jz
dGVuIFdpbmtsZXIgPHR3aW5rbGVyQGxpbnV4LmlibS5jb20+CitMOglsaW51eC1zMzkwQHZnZXIu
a2VybmVsLm9yZworTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglk
cml2ZXJzL3MzOTAvbmV0LyppdWN2KgorRjoJaW5jbHVkZS9uZXQvaXVjdi8KK0Y6CW5ldC9pdWN2
LworCitTMzkwIE1NCitNOglBbGV4YW5kZXIgR29yZGVldiA8YWdvcmRlZXZAbGludXguaWJtLmNv
bT4KK006CUdlcmFsZCBTY2hhZWZlciA8Z2VyYWxkLnNjaGFlZmVyQGxpbnV4LmlibS5jb20+CitM
OglsaW51eC1zMzkwQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3MzOTAvbGludXguZ2l0CitG
OglhcmNoL3MzOTAvaW5jbHVkZS9hc20vcGd0YWJsZS5oCitGOglhcmNoL3MzOTAvbW0KKworUzM5
MCBORVRXT1JLIERSSVZFUlMKK006CUFsZXhhbmRyYSBXaW50ZXIgPHdpbnRlcmFAbGludXguaWJt
LmNvbT4KK006CVRob3JzdGVuIFdpbmtsZXIgPHR3aW5rbGVyQGxpbnV4LmlibS5jb20+CitMOgls
aW51eC1zMzkwQHZnZXIua2VybmVsLm9yZworTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJ
U3VwcG9ydGVkCitGOglkcml2ZXJzL3MzOTAvbmV0LworRjoJaW5jbHVkZS9saW51eC9pc20uaAor
CitTMzkwIFBDSSBTVUJTWVNURU0KK006CU5pa2xhcyBTY2huZWxsZSA8c2NobmVsbGVAbGludXgu
aWJtLmNvbT4KK006CUdlcmFsZCBTY2hhZWZlciA8Z2VyYWxkLnNjaGFlZmVyQGxpbnV4LmlibS5j
b20+CitMOglsaW51eC1zMzkwQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1
bWVudGF0aW9uL2FyY2gvczM5MC9wY2kucnN0CitGOglhcmNoL3MzOTAvcGNpLworRjoJZHJpdmVy
cy9wY2kvaG90cGx1Zy9zMzkwX3BjaV9ocGMuYworCitTMzkwIFBUUCBEUklWRVIKK006CVN2ZW4g
U2NobmVsbGUgPHN2ZW5zQGxpbnV4LmlibS5jb20+CitMOglsaW51eC1zMzkwQHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3B0cC9wdHBfczM5MC5jCisKK1MzOTAgU0NN
IERSSVZFUgorTToJVmluZWV0aCBWaWpheWFuIDx2bmVldGh2QGxpbnV4LmlibS5jb20+CitMOgls
aW51eC1zMzkwQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3MzOTAv
YmxvY2svc2NtKgorRjoJZHJpdmVycy9zMzkwL2Npby9zY20uYworCitTMzkwIFZGSU8gQVAgRFJJ
VkVSCitNOglUb255IEtyb3dpYWsgPGFrcm93aWFrQGxpbnV4LmlibS5jb20+CitNOglIYWxpbCBQ
YXNpYyA8cGFzaWNAbGludXguaWJtLmNvbT4KK006CUphc29uIEhlcm5lIDxqamhlcm5lQGxpbnV4
LmlibS5jb20+CitMOglsaW51eC1zMzkwQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitG
OglEb2N1bWVudGF0aW9uL2FyY2gvczM5MC92ZmlvLWFwKgorRjoJZHJpdmVycy9zMzkwL2NyeXB0
by92ZmlvX2FwKgorCitTMzkwIFZGSU8tQ0NXIERSSVZFUgorTToJRXJpYyBGYXJtYW4gPGZhcm1h
bkBsaW51eC5pYm0uY29tPgorTToJTWF0dGhldyBSb3NhdG8gPG1qcm9zYXRvQGxpbnV4LmlibS5j
b20+CitSOglIYWxpbCBQYXNpYyA8cGFzaWNAbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LXMzOTBA
dmdlci5rZXJuZWwub3JnCitMOglrdm1Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6
CURvY3VtZW50YXRpb24vYXJjaC9zMzkwL3ZmaW8tY2N3LnJzdAorRjoJZHJpdmVycy9zMzkwL2Np
by92ZmlvX2NjdyoKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92ZmlvX2Njdy5oCisKK1MzOTAgVkZJ
Ty1QQ0kgRFJJVkVSCitNOglNYXR0aGV3IFJvc2F0byA8bWpyb3NhdG9AbGludXguaWJtLmNvbT4K
K006CUVyaWMgRmFybWFuIDxmYXJtYW5AbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LXMzOTBAdmdl
ci5rZXJuZWwub3JnCitMOglrdm1Admdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWFy
Y2gvczM5MC9rdm0vcGNpKgorRjoJZHJpdmVycy92ZmlvL3BjaS92ZmlvX3BjaV96ZGV2LmMKK0Y6
CWluY2x1ZGUvdWFwaS9saW51eC92ZmlvX3pkZXYuaAorCitTMzkwIFpDUllQVCBBTkQgUEtFWSBE
UklWRVIgQU5EIEFQIEJVUworTToJSGFyYWxkIEZyZXVkZW5iZXJnZXIgPGZyZXVkZUBsaW51eC5p
Ym0uY29tPgorTToJSG9sZ2VyIERlbmdsZXIgPGRlbmdsZXJAbGludXguaWJtLmNvbT4KK0w6CWxp
bnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gvczM5MC9pbmNs
dWRlL2FzbS9hcC5oCitGOglhcmNoL3MzOTAvaW5jbHVkZS9hc20vcGtleS5oCitGOglhcmNoL3Mz
OTAvaW5jbHVkZS9hc20vdHJhY2UvemNyeXB0LmgKK0Y6CWFyY2gvczM5MC9pbmNsdWRlL3VhcGkv
YXNtL3BrZXkuaAorRjoJYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20vemNyeXB0LmgKK0Y6CWRy
aXZlcnMvczM5MC9jcnlwdG8vCisKK1MzOTAgWkZDUCBEUklWRVIKK006CU5paGFyIFBhbmRhIDxu
aWhhcnBAbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LXMzOTBAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CWRyaXZlcnMvczM5MC9zY3NpL3pmY3BfKgorCitTQUE2NTg4IFJEUyBSRUNF
SVZFUiBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK1c6CWh0dHBzOi8vbGludXh0
di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVk
aWEvaTJjL3NhYTY1ODgqCisKK1NBQTcxMzQgVklERU80TElOVVggRFJJVkVSCitNOglNYXVybyBD
YXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJT2RkIGZpeGVzCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQg
Z2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkv
bWVkaWEvZHJpdmVycy9zYWE3MTM0KgorRjoJZHJpdmVycy9tZWRpYS9wY2kvc2FhNzEzNC8KKwor
U0FBNzE0NiBWSURFTzRMSU5VWC0yIERSSVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4
czRhbGwubmw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvY29t
bW9uL3NhYTcxNDYvCitGOglkcml2ZXJzL21lZGlhL3BjaS9zYWE3MTQ2LworRjoJaW5jbHVkZS9t
ZWRpYS9kcnYtaW50Zi9zYWE3MTQ2KgorCitTQUZFU0VUSUQgU0VDVVJJVFkgTU9EVUxFCitNOglN
aWNhaCBNb3J0b24gPG1vcnRvbm1AY2hyb21pdW0ub3JnPgorUzoJU3VwcG9ydGVkCitGOglEb2N1
bWVudGF0aW9uL2FkbWluLWd1aWRlL0xTTS9TYWZlU2V0SUQucnN0CitGOglzZWN1cml0eS9zYWZl
c2V0aWQvCisKK1NBTVNVTkcgQVVESU8gKEFTb0MpIERSSVZFUlMKK006CVN5bHdlc3RlciBOYXdy
b2NraSA8cy5uYXdyb2NraUBzYW1zdW5nLmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorQjoJbWFpbHRvOmxpbnV4LXNhbXN1bmctc29jQHZnZXIua2Vy
bmVsLm9yZworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3NhbXN1
bmcqCitGOglzb3VuZC9zb2Mvc2Ftc3VuZy8KKworU0FNU1VORyBFWFlOT1M4NTAgU29DIFNVUFBP
UlQKK006CVNhbSBQcm90c2Vua28gPHNlbWVuLnByb3RzZW5rb0BsaW5hcm8ub3JnPgorTDoJbGlu
dXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJz
Y3JpYmVycykKK0w6CWxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2NrL3NhbXN1bmcs
ZXh5bm9zODUwLWNsb2NrLnlhbWwKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvZXh5bm9zL2V4eW5v
czg1MCoKK0Y6CWRyaXZlcnMvY2xrL3NhbXN1bmcvY2xrLWV4eW5vczg1MC5jCitGOglpbmNsdWRl
L2R0LWJpbmRpbmdzL2Nsb2NrL2V4eW5vczg1MC5oCisKK1NBTVNVTkcgRVhZTk9TIEFDUE0gTUFJ
TEJPWCBQUk9UT0NPTAorTToJVHVkb3IgQW1iYXJ1cyA8dHVkb3IuYW1iYXJ1c0BsaW5hcm8ub3Jn
PgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtc2Ftc3VuZy1zb2NA
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9maXJtd2FyZS9nb29nbGUsZ3MxMDEtYWNwbS1pcGMueWFtbAorRjoJZHJpdmVy
cy9maXJtd2FyZS9zYW1zdW5nL2V4eW5vcy1hY3BtKgorRjoJaW5jbHVkZS9saW51eC9maXJtd2Fy
ZS9zYW1zdW5nL2V4eW5vcy1hY3BtLXByb3RvY29sLmgKKworU0FNU1VORyBFWFlOT1MgTUFJTEJP
WCBEUklWRVIKK006CVR1ZG9yIEFtYmFydXMgPHR1ZG9yLmFtYmFydXNAbGluYXJvLm9yZz4KK0w6
CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXNhbXN1bmctc29jQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbWFpbGJveC9nb29nbGUsZ3MxMDEtbWJveC55YW1sCitGOglkcml2ZXJzL21haWxib3gv
ZXh5bm9zLW1haWxib3guYworRjoJaW5jbHVkZS9saW51eC9tYWlsYm94L2V4eW5vcy1tZXNzYWdl
LmgKKworU0FNU1VORyBFWFlOT1MgUFNFVURPIFJBTkRPTSBOVU1CRVIgR0VORVJBVE9SIChSTkcp
IERSSVZFUgorTToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorTDoJbGlu
dXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvcm5nL3NhbXN1bmcsZXh5bm9zNC1ybmcueWFtbAorRjoJZHJpdmVycy9jcnlwdG8vZXh5bm9z
LXJuZy5jCisKK1NBTVNVTkcgRVhZTk9TIFRSVUUgUkFORE9NIE5VTUJFUiBHRU5FUkFUT1IgKFRS
TkcpIERSSVZFUgorTToJxYF1a2FzeiBTdGVsbWFjaCA8bC5zdGVsbWFjaEBzYW1zdW5nLmNvbT4K
K0w6CWxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JuZy9zYW1zdW5nLGV4eW5vczUyNTAt
dHJuZy55YW1sCitGOglkcml2ZXJzL2NoYXIvaHdfcmFuZG9tL2V4eW5vcy10cm5nLmMKKworU0FN
U1VORyBGUkFNRUJVRkZFUiBEUklWRVIKK006CUppbmdvbyBIYW4gPGppbmdvb2hhbjFAZ21haWwu
Y29tPgorTDoJbGludXgtZmJkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL3ZpZGVvL2ZiZGV2L3MzYy1mYi5jCisKK1NBTVNVTkcgR0FMQVhZIEJPT0sgRFJJVkVS
CitNOglKb3NodWEgR3Jpc2hhbSA8am9zaEBqb3NodWFncmlzaGFtLmNvbT4KK0w6CXBsYXRmb3Jt
LWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2FkbWluLWd1aWRlL2xhcHRvcHMvc2Ftc3VuZy1nYWxheHlib29rLnJzdAorRjoJZHJpdmVy
cy9wbGF0Zm9ybS94ODYvc2Ftc3VuZy1nYWxheHlib29rLmMKKworU0FNU1VORyBJTlRFUkNPTk5F
Q1QgRFJJVkVSUworTToJU3lsd2VzdGVyIE5hd3JvY2tpIDxzLm5hd3JvY2tpQHNhbXN1bmcuY29t
PgorTToJQXJ0dXIgxZp3aWdvxYQgPGEuc3dpZ29uQHNhbXN1bmcuY29tPgorTDoJbGludXgtcG1A
dmdlci5rZXJuZWwub3JnCitMOglsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pbnRlcmNvbm5lY3Qvc2Ftc3VuZy8KKworU0FNU1VORyBM
QVBUT1AgRFJJVkVSCitNOglDb3JlbnRpbiBDaGFyeSA8Y29yZW50aW4uY2hhcnlAZ21haWwuY29t
PgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L3NhbXN1bmctbGFwdG9wLmMKKworU0FNU1VORyBNVUxU
SUZVTkNUSU9OIFBNSUMgREVWSUNFIERSSVZFUlMKK006CUtyenlzenRvZiBLb3psb3dza2kgPGty
emtAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4
LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorQjoJbWFpbHRvOmxp
bnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2Nsb2NrL3NhbXN1bmcsczJtcHMxMS55YW1sCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3NhbXN1bmcsczIqLnlhbWwKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZmQvc2Ftc3VuZyxzNW0qLnlhbWwKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3Ivc2Ftc3VuZyxzMm0qLnlhbWwKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3Ivc2Ftc3VuZyxzNW0q
LnlhbWwKK0Y6CWRyaXZlcnMvY2xrL2Nsay1zMm1wczExLmMKK0Y6CWRyaXZlcnMvbWZkL3NlYyou
YworRjoJZHJpdmVycy9yZWd1bGF0b3IvczJtKi5jCitGOglkcml2ZXJzL3JlZ3VsYXRvci9zNW0q
LmMKK0Y6CWRyaXZlcnMvcnRjL3J0Yy1zNW0uYworRjoJaW5jbHVkZS9saW51eC9tZmQvc2Ftc3Vu
Zy8KKworU0FNU1VORyBTM0MyNFhYL1MzQzY0WFggU09DIFNFUklFUyBDQU1JRiBEUklWRVIKK006
CVN5bHdlc3RlciBOYXdyb2NraSA8c3lsdmVzdGVyLm5hd3JvY2tpQGdtYWlsLmNvbT4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3NhbXN1bmcv
czNjLWNhbWlmLworRjoJaW5jbHVkZS9tZWRpYS9kcnYtaW50Zi9zM2NfY2FtaWYuaAorCitTQU1T
VU5HIFMzRldSTjUgTkZDIERSSVZFUgorTToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJu
ZWwub3JnPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL25ldC9uZmMvc2Ftc3VuZyxzM2Z3cm41LnlhbWwKK0Y6CWRyaXZlcnMvbmZjL3MzZndybjUK
KworU0FNU1VORyBTNUM3M00zIENBTUVSQSBEUklWRVIKK006CVN5bHdlc3RlciBOYXdyb2NraSA8
cy5uYXdyb2NraUBzYW1zdW5nLmNvbT4KK006CUFuZHJ6ZWogSGFqZGEgPGFuZHJ6ZWouaGFqZGFA
aW50ZWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zYW1zdW5nLHM1Yzcz
bTMueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvczVjNzNtMy8qCisKK1NBTVNVTkcgUzVLNUJB
RiBDQU1FUkEgRFJJVkVSCitNOglTeWx3ZXN0ZXIgTmF3cm9ja2kgPHMubmF3cm9ja2lAc2Ftc3Vu
Zy5jb20+CitNOglBbmRyemVqIEhhamRhIDxhbmRyemVqLmhhamRhQGludGVsLmNvbT4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL21lZGlh
L2kyYy9zNWs1YmFmLmMKKworU0FNU1VORyBTNVAgU2VjdXJpdHkgU3ViU3lzdGVtIChTU1MpIERS
SVZFUgorTToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorTToJVmxhZGlt
aXIgWmFwb2xza2l5IDx2ekBtbGVpYS5jb20+CitMOglsaW51eC1jcnlwdG9Admdlci5rZXJuZWwu
b3JnCitMOglsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vc2Ftc3VuZy1zbGlt
c3NzLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jcnlwdG8vc2Ft
c3VuZy1zc3MueWFtbAorRjoJZHJpdmVycy9jcnlwdG8vczVwLXNzcy5jCisKK1NBTVNVTkcgUzVQ
L0VYWU5PUzQgU09DIFNFUklFUyBDQU1FUkEgU1VCU1lTVEVNIERSSVZFUlMKK006CVN5bHdlc3Rl
ciBOYXdyb2NraSA8cy5uYXdyb2NraUBzYW1zdW5nLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwczovL3BhdGNod29yay5saW51eHR2Lm9y
Zy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvbWVkaWEvc2Ftc3VuZyxleHlub3M0MjEwLWNzaXMueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NhbXN1bmcsZXh5bm9zNDIxMC1maW1jLnlh
bWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9zYW1zdW5nLGV4
eW5vczQyMTItZmltYy1pcy55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvbWVkaWEvc2Ftc3VuZyxleHlub3M0MjEyLWZpbWMtbGl0ZS55YW1sCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvc2Ftc3VuZyxmaW1jLnlhbWwKK0Y6CWRyaXZl
cnMvbWVkaWEvcGxhdGZvcm0vc2Ftc3VuZy9leHlub3M0LWlzLworCitTQU1TVU5HIFNPQyBDTE9D
SyBEUklWRVJTCitNOglLcnp5c3p0b2YgS296bG93c2tpIDxrcnprQGtlcm5lbC5vcmc+CitNOglT
eWx3ZXN0ZXIgTmF3cm9ja2kgPHMubmF3cm9ja2lAc2Ftc3VuZy5jb20+CitNOglDaGFud29vIENo
b2kgPGN3MDAuY2hvaUBzYW1zdW5nLmNvbT4KK1I6CUFsaW0gQWtodGFyIDxhbGltLmFraHRhckBz
YW1zdW5nLmNvbT4KK0w6CWxpbnV4LXNhbXN1bmctc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs
L2dpdC9rcnprL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2Nsb2NrL3NhbXN1bmcsKi55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvY2xvY2svc2Ftc3VuZyxzM2MqCitGOglkcml2ZXJzL2Nsay9zYW1zdW5nLworRjoJaW5jbHVk
ZS9kdC1iaW5kaW5ncy9jbG9jay9leHlub3MqLmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvY2xv
Y2svczVwKi5oCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL2Nsb2NrL3NhbXN1bmcsKi5oCitGOglp
bmNsdWRlL2xpbnV4L2Nsay9zYW1zdW5nLmgKKworU0FNU1VORyBTUEkgRFJJVkVSUworTToJQW5k
aSBTaHl0aSA8YW5kaS5zaHl0aUBrZXJuZWwub3JnPgorUjoJVHVkb3IgQW1iYXJ1cyA8dHVkb3Iu
YW1iYXJ1c0BsaW5hcm8ub3JnPgorTDoJbGludXgtc3BpQHZnZXIua2VybmVsLm9yZworTDoJbGlu
dXgtc2Ftc3VuZy1zb2NAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NhbXN1bmcsc3BpKi55YW1sCitGOglkcml2
ZXJzL3NwaS9zcGktczNjKgorRjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL3NwaS1zM2M2
NHh4LmgKKworU0FNU1VORyBTWEdCRSBEUklWRVJTCitNOglCeXVuZ2hvIEFuIDxiaDc0LmFuQHNh
bXN1bmcuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9uZXQvZXRoZXJuZXQvc2Ftc3VuZy9zeGdiZS8KKworU0FNU1VORyBUSEVSTUFMIERS
SVZFUgorTToJQmFydGxvbWllaiBab2xuaWVya2lld2ljeiA8YnpvbG5pZXJAZ21haWwuY29tPgor
TToJS3J6eXN6dG9mIEtvemxvd3NraSA8a3J6a0BrZXJuZWwub3JnPgorTDoJbGludXgtcG1Admdl
ci5rZXJuZWwub3JnCitMOglsaW51eC1zYW1zdW5nLXNvY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy90aGVybWFsL3Nh
bXN1bmcsZXh5bm9zLXRoZXJtYWwueWFtbAorRjoJZHJpdmVycy90aGVybWFsL3NhbXN1bmcvCisK
K1NBTVNVTkcgVVNCMiBQSFkgRFJJVkVSCitNOglTeWx3ZXN0ZXIgTmF3cm9ja2kgPHMubmF3cm9j
a2lAc2Ftc3VuZy5jb20+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9waHkvc2Ftc3VuZyx1
c2IyLXBoeS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvcGh5L3NhbXN1bmctdXNi
Mi5yc3QKK0Y6CWRyaXZlcnMvcGh5L3NhbXN1bmcvcGh5LWV4eW5vczQyMTAtdXNiMi5jCitGOglk
cml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1leHlub3M0eDEyLXVzYjIuYworRjoJZHJpdmVycy9waHkv
c2Ftc3VuZy9waHktZXh5bm9zNTI1MC11c2IyLmMKK0Y6CWRyaXZlcnMvcGh5L3NhbXN1bmcvcGh5
LXM1cHYyMTAtdXNiMi5jCitGOglkcml2ZXJzL3BoeS9zYW1zdW5nL3BoeS1zYW1zdW5nLXVzYjIu
YworRjoJZHJpdmVycy9waHkvc2Ftc3VuZy9waHktc2Ftc3VuZy11c2IyLmgKKworU0FOQ0xPVUQg
QkVBR0xFQk9ORSBFTkhBTkNFRCBERVZJQ0UgVFJFRQorTToJUGF1bCBCYXJrZXIgPHBhdWwuYmFy
a2VyQHNhbmNsb3VkLmNvbT4KK1I6CU1hcmMgTXVycGh5IDxtYXJjLm11cnBoeUBzYW5jbG91ZC5j
b20+CitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL3RpL29tYXAvYW0zMzV4LXNh
bmNsb3VkKgorCitTQzEyMDAgV0RUIERSSVZFUgorTToJWndhbmUgTXdhaWthbWJvIDx6d2FuZW1A
Z21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy93YXRjaGRvZy9zYzEyMDB3ZHQu
YworCitTQ0hFRFVMRVIKK006CUluZ28gTW9sbmFyIDxtaW5nb0ByZWRoYXQuY29tPgorTToJUGV0
ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgorTToJSnVyaSBMZWxsaSA8anVyaS5s
ZWxsaUByZWRoYXQuY29tPiAoU0NIRURfREVBRExJTkUpCitNOglWaW5jZW50IEd1aXR0b3QgPHZp
bmNlbnQuZ3VpdHRvdEBsaW5hcm8ub3JnPiAoU0NIRURfTk9STUFMKQorUjoJRGlldG1hciBFZ2dl
bWFubiA8ZGlldG1hci5lZ2dlbWFubkBhcm0uY29tPiAoU0NIRURfTk9STUFMKQorUjoJU3RldmVu
IFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5vcmc+IChTQ0hFRF9GSUZPL1NDSEVEX1JSKQorUjoJ
QmVuIFNlZ2FsbCA8YnNlZ2FsbEBnb29nbGUuY29tPiAoQ09ORklHX0NGU19CQU5EV0lEVEgpCitS
OglNZWwgR29ybWFuIDxtZ29ybWFuQHN1c2UuZGU+IChDT05GSUdfTlVNQV9CQUxBTkNJTkcpCitS
OglWYWxlbnRpbiBTY2huZWlkZXIgPHZzY2huZWlkQHJlZGhhdC5jb20+IChUT1BPTE9HWSkKK0w6
CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGlwL3RpcC5naXQgc2No
ZWQvY29yZQorRjoJaW5jbHVkZS9saW51eC9wcmVlbXB0LmgKK0Y6CWluY2x1ZGUvbGludXgvc2No
ZWQuaAorRjoJaW5jbHVkZS9saW51eC93YWl0LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9zY2hl
ZC5oCitGOglrZXJuZWwvc2NoZWQvCisKK1NDSEVEVUxFUiAtIFNDSEVEX0VYVAorUjoJVGVqdW4g
SGVvIDx0akBrZXJuZWwub3JnPgorUjoJRGF2aWQgVmVybmV0IDx2b2lkQG1hbmlmYXVsdC5jb20+
CitSOglBbmRyZWEgUmlnaGkgPGFyaWdoaUBudmlkaWEuY29tPgorUjoJQ2hhbmd3b28gTWluIDxj
aGFuZ3dvb0BpZ2FsaWEuY29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9naXRodWIuY29tL3NjaGVkLWV4dC9zY3gKK1Q6CWdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90ai9zY2hlZF9leHQuZ2l0
CitGOglpbmNsdWRlL2xpbnV4L3NjaGVkL2V4dC5oCitGOglrZXJuZWwvc2NoZWQvZXh0KgorRjoJ
dG9vbHMvc2NoZWRfZXh0LworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvc2NoZWRfZXh0CisK
K1NDSU9TRU5TRSBFTlMxNjAgTVVMVEktR0FTIFNFTlNPUiBEUklWRVIKK006CUd1c3Rhdm8gU2ls
dmEgPGd1c3Rhdm9ncmF6c0BnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2lp
by9jaGVtaWNhbC9lbnMxNjBfY29yZS5jCitGOglkcml2ZXJzL2lpby9jaGVtaWNhbC9lbnMxNjBf
aTJjLmMKK0Y6CWRyaXZlcnMvaWlvL2NoZW1pY2FsL2VuczE2MF9zcGkuYworRjoJZHJpdmVycy9p
aW8vY2hlbWljYWwvZW5zMTYwLmgKKworU0NTSSBMSUJTQVMgU1VCU1lTVEVNCitSOglKb2huIEdh
cnJ5IDxqb2huLmcuZ2FycnlAb3JhY2xlLmNvbT4KK1I6CUphc29uIFlhbiA8eWFuYWlqaWVAaHVh
d2VpLmNvbT4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6
CURvY3VtZW50YXRpb24vc2NzaS9saWJzYXMucnN0CitGOglkcml2ZXJzL3Njc2kvbGlic2FzLwor
RjoJaW5jbHVkZS9zY3NpL2xpYnNhcy5oCitGOglpbmNsdWRlL3Njc2kvc2FzX2F0YS5oCisKK1ND
U0kgUkRNQSBQUk9UT0NPTCAoU1JQKSBJTklUSUFUT1IKK006CUJhcnQgVmFuIEFzc2NoZSA8YnZh
bmFzc2NoZUBhY20ub3JnPgorTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorUToJaHR0cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtcmRtYS9s
aXN0LworRjoJZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvCitGOglpbmNsdWRlL3Njc2kvc3Jw
LmgKKworU0NTSSBSRE1BIFBST1RPQ09MIChTUlApIFRBUkdFVAorTToJQmFydCBWYW4gQXNzY2hl
IDxidmFuYXNzY2hlQGFjbS5vcmc+CitMOglsaW51eC1yZG1hQHZnZXIua2VybmVsLm9yZworTDoJ
dGFyZ2V0LWRldmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitROglodHRwOi8vcGF0
Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1yZG1hL2xpc3QvCitGOglkcml2ZXJzL2lu
ZmluaWJhbmQvdWxwL3NycHQvCisKK1NDU0kgU0cgRFJJVkVSCitNOglEb3VnIEdpbGJlcnQgPGRn
aWxiZXJ0QGludGVybG9nLmNvbT4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitXOglodHRwOi8vc2cuZGFubnkuY3ovc2cKK0Y6CURvY3VtZW50YXRpb24vc2Nz
aS9zY3NpLWdlbmVyaWMucnN0CitGOglkcml2ZXJzL3Njc2kvc2cuYworRjoJaW5jbHVkZS9zY3Np
L3NnLmgKKworU0NTSSBTVUJTWVNURU0KK006CSJKYW1lcyBFLkouIEJvdHRvbWxleSIgPEphbWVz
LkJvdHRvbWxleUBIYW5zZW5QYXJ0bmVyc2hpcC5jb20+CitNOgkiTWFydGluIEsuIFBldGVyc2Vu
IiA8bWFydGluLnBldGVyc2VuQG9yYWNsZS5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9q
ZWN0L2xpbnV4LXNjc2kvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvamVqYi9zY3NpLmdpdAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ta3Avc2NzaS5naXQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9zY3NpLworRjoJZHJpdmVycy9zY3NpLworRjoJZHJpdmVy
cy91ZnMvCitGOglpbmNsdWRlL3Njc2kvCitGOglpbmNsdWRlL3VhcGkvc2NzaS8KKworU0NTSSBU
QVBFIERSSVZFUgorTToJS2FpIE3DpGtpc2FyYSA8S2FpLk1ha2lzYXJhQGtvbHVtYnVzLmZpPgor
TDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50
YXRpb24vc2NzaS9zdC5yc3QKK0Y6CWRyaXZlcnMvc2NzaS9zdC4qCitGOglkcml2ZXJzL3Njc2kv
c3RfKi5oCisKK1NDU0kgVEFSR0VUIENPUkUgVVNFUiBEUklWRVIKK006CUJvZG8gU3Ryb2Vzc2Vy
IDxib3N0cm9lc3NlckBnbWFpbC5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZwor
TDoJdGFyZ2V0LWRldmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVu
dGF0aW9uL3RhcmdldC90Y211LWRlc2lnbi5yc3QKK0Y6CWRyaXZlcnMvdGFyZ2V0L3RhcmdldF9j
b3JlX3VzZXIuYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3RhcmdldF9jb3JlX3VzZXIuaAorCitT
Q1NJIFRBUkdFVCBTVUJTWVNURU0KK006CSJNYXJ0aW4gSy4gUGV0ZXJzZW4iIDxtYXJ0aW4ucGV0
ZXJzZW5Ab3JhY2xlLmNvbT4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitMOgl0YXJn
ZXQtZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3
b3JrLmtlcm5lbC5vcmcvcHJvamVjdC90YXJnZXQtZGV2ZWwvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9n
aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvbWtwL3Njc2kuZ2l0CitGOglE
b2N1bWVudGF0aW9uL3RhcmdldC8KK0Y6CWRyaXZlcnMvdGFyZ2V0LworRjoJaW5jbHVkZS90YXJn
ZXQvCisKK1NDVFAgUFJPVE9DT0wKK006CU1hcmNlbG8gUmljYXJkbyBMZWl0bmVyIDxtYXJjZWxv
LmxlaXRuZXJAZ21haWwuY29tPgorTToJWGluIExvbmcgPGx1Y2llbi54aW5AZ21haWwuY29tPgor
TDoJbGludXgtc2N0cEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8v
Z2l0aHViLmNvbS9zY3RwL2xrc2N0cC10b29scy93aWtpCitGOglEb2N1bWVudGF0aW9uL25ldHdv
cmtpbmcvc2N0cC5yc3QKK0Y6CWluY2x1ZGUvbGludXgvc2N0cC5oCitGOglpbmNsdWRlL25ldC9z
Y3RwLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3NjdHAuaAorRjoJbmV0L3NjdHAvCisKK1NDeDIw
MCBDUFUgU1VQUE9SVAorTToJSmltIENyb21pZSA8amltLmNyb21pZUBnbWFpbC5jb20+CitTOglP
ZGQgRml4ZXMKK0Y6CURvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9zY3gyMDBfYWNiLnJzdAorRjoJ
YXJjaC94ODYvcGxhdGZvcm0vc2N4MjAwLworRjoJZHJpdmVycy9pMmMvYnVzc2VzL3NjeDIwMCoK
K0Y6CWRyaXZlcnMvbXRkL21hcHMvc2N4MjAwX2RvY2ZsYXNoLmMKK0Y6CWRyaXZlcnMvd2F0Y2hk
b2cvc2N4MjAwX3dkdC5jCitGOglpbmNsdWRlL2xpbnV4L3NjeDIwMC5oCisKK1NDeDIwMCBHUElP
IERSSVZFUgorTToJSmltIENyb21pZSA8amltLmNyb21pZUBnbWFpbC5jb20+CitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL2NoYXIvc2N4MjAwX2dwaW8uYworRjoJaW5jbHVkZS9saW51eC9zY3gy
MDBfZ3Bpby5oCisKK1NDeDIwMCBIUlQgQ0xPQ0tTT1VSQ0UgRFJJVkVSCitNOglKaW0gQ3JvbWll
IDxqaW0uY3JvbWllQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvY2xvY2tz
b3VyY2Uvc2N4MjAwX2hydC5jCisKK1NEUklDT0hfQ1MgTU1DL1NEIEhPU1QgQ09OVFJPTExFUiBJ
TlRFUkZBQ0UgRFJJVkVSCitNOglTYXNjaGEgU29tbWVyIDxzYXNjaGFzb21tZXJAZnJlZW5ldC5k
ZT4KK0w6CXNkcmljb2hjcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgKHN1YnNjcmliZXJz
LW9ubHkpCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21tYy9ob3N0L3Nkcmljb2hfY3MuYwor
CitTRUNPIEJPQVJEUyBDRUMgRFJJVkVSCitNOglFdHRvcmUgQ2hpbWVudGkgPGVrNS5jaGltZW50
aUBnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21lZGlhL2NlYy9wbGF0Zm9y
bS9zZWNvL3NlY28tY2VjLmMKK0Y6CWRyaXZlcnMvbWVkaWEvY2VjL3BsYXRmb3JtL3NlY28vc2Vj
by1jZWMuaAorCitTRUNVUkUgQ09NUFVUSU5HCitNOglLZWVzIENvb2sgPGtlZXNAa2VybmVsLm9y
Zz4KK1I6CUFuZHkgTHV0b21pcnNraSA8bHV0b0BhbWFjYXBpdGFsLm5ldD4KK1I6CVdpbGwgRHJl
d3J5IDx3YWRAY2hyb21pdW0ub3JnPgorUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tlZXMvbGludXguZ2l0IGZvci1uZXh0
L3NlY2NvbXAKK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9zZWNjb21wX2ZpbHRlci5y
c3QKK0Y6CWluY2x1ZGUvbGludXgvc2VjY29tcC5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvc2Vj
Y29tcC5oCitGOglrZXJuZWwvc2VjY29tcC5jCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9r
c2VsZnRlc3RfaGFybmVzcy5oCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9rc2VsZnRlc3Rf
aGFybmVzcy8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3NlY2NvbXAvKgorSzoJXGJzZWN1
cmVfY29tcHV0aW5nCitLOglcYlRJRl9TRUNDT01QXGIKKworU0VDVVJFIERJR0lUQUwgSE9TVCBD
T05UUk9MTEVSIElOVEVSRkFDRSAoU0RIQ0kpIEJyb2FkY29tIEJSQ01TVEIgRFJJVkVSCitNOglL
YW1hbCBEYXN1IDxrYW1hbC5kYXN1QGJyb2FkY29tLmNvbT4KK006CUFsIENvb3BlciA8YWxjb29w
ZXJ4QGdtYWlsLmNvbT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8
YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LW1tY0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktYnJj
bXN0YioKKworU0VDVVJFIERJR0lUQUwgSE9TVCBDT05UUk9MTEVSIElOVEVSRkFDRSAoU0RIQ0kp
IERSSVZFUgorTToJQWRyaWFuIEh1bnRlciA8YWRyaWFuLmh1bnRlckBpbnRlbC5jb20+CitMOgls
aW51eC1tbWNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc2RoY2ktY29tbW9uLnlhbWwKK0Y6CWRyaXZlcnMvbW1j
L2hvc3Qvc2RoY2kqCisKK1NFQ1VSRSBESUdJVEFMIEhPU1QgQ09OVFJPTExFUiBJTlRFUkZBQ0Ug
KFNESENJKSBNSUNST0NISVAgRFJJVkVSCitNOglBdWJpbiBDb25zdGFucyA8YXViaW4uY29uc3Rh
bnNAbWljcm9jaGlwLmNvbT4KK1I6CUV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAY29sbGFi
b3JhLmNvbT4KK0w6CWxpbnV4LW1tY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
ZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vZi1hdDkxLmMKKworU0VDVVJFIERJR0lUQUwgSE9TVCBD
T05UUk9MTEVSIElOVEVSRkFDRSAoU0RIQ0kpIE5YUCBpLk1YIERSSVZFUgorTToJSGFpYm8gQ2hl
biA8aGFpYm8uY2hlbkBueHAuY29tPgorTDoJaW14QGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgt
bW1jQHZnZXIua2VybmVsLm9yZworTDoJczMyQG54cC5jb20KK1M6CU1haW50YWluZWQKK0Y6CWRy
aXZlcnMvbW1jL2hvc3Qvc2RoY2ktZXNkaGMtaW14LmMKKworU0VDVVJFIERJR0lUQUwgSE9TVCBD
T05UUk9MTEVSIElOVEVSRkFDRSAoU0RIQ0kpIFNBTVNVTkcgRFJJVkVSCitNOglCZW4gRG9va3Mg
PGJlbi1saW51eEBmbHVmZi5vcmc+CitNOglKYWVob29uIENodW5nIDxqaDgwLmNodW5nQHNhbXN1
bmcuY29tPgorTDoJbGludXgtbW1jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1zM2MqCisKK1NFQ1VSRSBESUdJVEFMIEhPU1QgQ09OVFJP
TExFUiBJTlRFUkZBQ0UgKFNESENJKSBTVCBTUEVBUiBEUklWRVIKK006CVZpcmVzaCBLdW1hciA8
dmlyZXNoa0BrZXJuZWwub3JnPgorTDoJbGludXgtbW1jQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1zcGVhci5jCisKK1NFQ1VSRSBESUdJ
VEFMIEhPU1QgQ09OVFJPTExFUiBJTlRFUkZBQ0UgKFNESENJKSBUSSBPTUFQIERSSVZFUgorTToJ
VmlnbmVzaCBSYWdoYXZlbmRyYSA8dmlnbmVzaHJAdGkuY29tPgorTDoJbGludXgtbW1jQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1vbWFw
LmMKKworU0VDVVJFIEVOQ1JZUFRJTkcgREVWSUNFIChTRUQpIE9QQUwgRFJJVkVSCitNOglKb25h
dGhhbiBEZXJyaWNrIDxqb25hdGhhbi5kZXJyaWNrQGxpbnV4LmRldj4KK0w6CWxpbnV4LWJsb2Nr
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglibG9jay9vcGFsX3Byb3RvLmgKK0Y6
CWJsb2NrL3NlZCoKK0Y6CWluY2x1ZGUvbGludXgvc2VkKgorRjoJaW5jbHVkZS91YXBpL2xpbnV4
L3NlZCoKKworU0VDVVJFIE1PTklUT1IgQ0FMTChTTUMpIENBTExJTkcgQ09OVkVOVElPTiAoU01D
Q0MpCitNOglNYXJrIFJ1dGxhbmQgPG1hcmsucnV0bGFuZEBhcm0uY29tPgorTToJTG9yZW56byBQ
aWVyYWxpc2kgPGxwaWVyYWxpc2lAa2VybmVsLm9yZz4KK006CVN1ZGVlcCBIb2xsYSA8c3VkZWVw
LmhvbGxhQGFybS5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcg
KG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9maXJtd2FyZS9zbWNjYy8KK0Y6CWluY2x1ZGUvbGludXgvYXJtLXNtY2NjLmgKKworU0VDVVJJ
VFkgQ09OVEFDVAorTToJU2VjdXJpdHkgT2ZmaWNlcnMgPHNlY3VyaXR5QGtlcm5lbC5vcmc+CitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vcHJvY2Vzcy9zZWN1cml0eS1idWdzLnJzdAor
CitTRUNVUklUWSBTVUJTWVNURU0KK006CVBhdWwgTW9vcmUgPHBhdWxAcGF1bC1tb29yZS5jb20+
CitNOglKYW1lcyBNb3JyaXMgPGptb3JyaXNAbmFtZWkub3JnPgorTToJIlNlcmdlIEUuIEhhbGx5
biIgPHNlcmdlQGhhbGx5bi5jb20+CitMOglsaW51eC1zZWN1cml0eS1tb2R1bGVAdmdlci5rZXJu
ZWwub3JnCitTOglTdXBwb3J0ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJv
amVjdC9saW51eC1zZWN1cml0eS1tb2R1bGUvbGlzdAorQjoJbWFpbHRvOmxpbnV4LXNlY3VyaXR5
LW1vZHVsZUB2Z2VyLmtlcm5lbC5vcmcKK1A6CWh0dHBzOi8vZ2l0aHViLmNvbS9MaW51eFNlY3Vy
aXR5TW9kdWxlL2tlcm5lbC9ibG9iL21haW4vUkVBRE1FLm1kCitUOglnaXQgaHR0cHM6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcGNtb29yZS9sc20uZ2l0CitGOglp
bmNsdWRlL2xpbnV4L2xzbS8KK0Y6CWluY2x1ZGUvbGludXgvbHNtX2F1ZGl0LmgKK0Y6CWluY2x1
ZGUvbGludXgvbHNtX2hvb2tfZGVmcy5oCitGOglpbmNsdWRlL2xpbnV4L2xzbV9ob29rcy5oCitG
OglpbmNsdWRlL2xpbnV4L3NlY3VyaXR5LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9sc20uaAor
RjoJc2VjdXJpdHkvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9sc20vCitYOglzZWN1cml0
eS9zZWxpbnV4LworSzoJXGJzZWN1cml0eV9bYS16XzAtOV1cK1xiCisKK1NFTElOVVggU0VDVVJJ
VFkgTU9EVUxFCitNOglQYXVsIE1vb3JlIDxwYXVsQHBhdWwtbW9vcmUuY29tPgorTToJU3RlcGhl
biBTbWFsbGV5IDxzdGVwaGVuLnNtYWxsZXkud29ya0BnbWFpbC5jb20+CitSOglPbmRyZWogTW9z
bmFjZWsgPG9tb3NuYWNlQHJlZGhhdC5jb20+CitMOglzZWxpbnV4QHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL2dpdGh1Yi5jb20vU0VMaW51eFByb2plY3QKK1E6CWh0
dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9zZWxpbnV4L2xpc3QKK0I6CW1haWx0
bzpzZWxpbnV4QHZnZXIua2VybmVsLm9yZworUDoJaHR0cHM6Ly9naXRodWIuY29tL1NFTGludXhQ
cm9qZWN0L3NlbGludXgta2VybmVsL2Jsb2IvbWFpbi9SRUFETUUubWQKK1Q6CWdpdCBodHRwczov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9wY21vb3JlL3NlbGludXgu
Z2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS9yZW1vdmVkL3N5c2ZzLXNlbGludXgtY2hlY2tyZXFw
cm90CitGOglEb2N1bWVudGF0aW9uL0FCSS9yZW1vdmVkL3N5c2ZzLXNlbGludXgtZGlzYWJsZQor
RjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9MU00vU0VMaW51eC5yc3QKK0Y6CWluY2x1ZGUv
dHJhY2UvZXZlbnRzL2F2Yy5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvc2VsaW51eF9uZXRsaW5r
LmgKK0Y6CXNjcmlwdHMvc2VsaW51eC8KK0Y6CXNlY3VyaXR5L3NlbGludXgvCisKK1NFTlNBQkxF
IFBIQU5UT00KK006CUppcmkgU2xhYnkgPGppcmlzbGFieUBrZXJuZWwub3JnPgorUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9taXNjL3BoYW50b20uYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3Bo
YW50b20uaAorCitTRU5TRUFJUiBTVU5SSVNFIDAwNi0wLTAwMDcKK006CUphY29wbyBNb25kaSA8
amFjb3BvQGptb25kaS5vcmc+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90
ZXN0aW5nL3N5c2ZzLWJ1cy1paW8tY2hlbWljYWwtc3VucmlzZS1jbzIKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vY2hlbWljYWwvc2Vuc2VhaXIsc3VucmlzZS55YW1s
CitGOglkcml2ZXJzL2lpby9jaGVtaWNhbC9zdW5yaXNlX2NvMi5jCisKK1NFTlNJUklPTiBTQ0Qz
MCBDQVJCT04gRElPWElERSBTRU5TT1IgRFJJVkVSCitNOglUb21hc3ogRHVzenluc2tpIDx0b21h
c3ouZHVzenluc2tpQG9jdGFrb24uY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9jaGVtaWNhbC9zZW5zaXJpb24sc2NkMzAueWFtbAor
RjoJZHJpdmVycy9paW8vY2hlbWljYWwvc2NkMzAuaAorRjoJZHJpdmVycy9paW8vY2hlbWljYWwv
c2NkMzBfY29yZS5jCitGOglkcml2ZXJzL2lpby9jaGVtaWNhbC9zY2QzMF9pMmMuYworRjoJZHJp
dmVycy9paW8vY2hlbWljYWwvc2NkMzBfc2VyaWFsLmMKKworU0VOU0lSSU9OIFNDRDRYIENBUkJP
TiBESU9YSURFIFNFTlNPUiBEUklWRVIKK006CVJvYW4gdmFuIERpamsgPHJvYW5AcHJvdG9uaWMu
bmw+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aWlvL2NoZW1pY2FsL3NlbnNpcmlvbixzY2Q0eC55YW1sCitGOglkcml2ZXJzL2lpby9jaGVtaWNh
bC9zY2Q0eC5jCisKK1NFTlNJUklPTiBTRFA1MDAgRElGRkVSRU5USUFMIFBSRVNTVVJFIFNFTlNP
UiBEUklWRVIKK006CVBldGFyIFN0b3lrb3YgPHBldGFyLnN0b3lrb3ZAcHJvZHJpdmUtdGVjaG5v
bG9naWVzLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9paW8vcHJlc3N1cmUvc2Vuc2lyaW9uLHNkcDUwMC55YW1sCitGOglkcml2ZXJzL2lp
by9wcmVzc3VyZS9zZHA1MDAuYworCitTRU5TSVJJT04gU0dQNDAgR0FTIFNFTlNPUiBEUklWRVIK
K006CUFuZHJlYXMgS2xpbmdlciA8YWtAaXQta2xpbmdlci5kZT4KK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWlpby1jaGVtaWNhbC1zZ3A0MAor
RjoJZHJpdmVycy9paW8vY2hlbWljYWwvc2dwNDAuYworCitTRU5TSVJJT04gU1BTMzAgQUlSIFBP
TExVVElPTiBTRU5TT1IgRFJJVkVSCitNOglUb21hc3ogRHVzenluc2tpIDx0ZHVzenluc0BnbWFp
bC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvaWlvL2NoZW1pY2FsL3NlbnNpcmlvbixzcHMzMC55YW1sCitGOglkcml2ZXJzL2lpby9jaGVt
aWNhbC9zcHMzMC5jCitGOglkcml2ZXJzL2lpby9jaGVtaWNhbC9zcHMzMF9pMmMuYworRjoJZHJp
dmVycy9paW8vY2hlbWljYWwvc3BzMzBfc2VyaWFsLmMKKworU0VSSUFMIERFVklDRSBCVVMKK006
CVJvYiBIZXJyaW5nIDxyb2JoQGtlcm5lbC5vcmc+CitMOglsaW51eC1zZXJpYWxAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3Mvc2VyaWFsL3NlcmlhbC55YW1sCitGOglkcml2ZXJzL3R0eS9zZXJkZXYvCitGOglpbmNsdWRl
L2xpbnV4L3NlcmRldi5oCisKK1NFUklBTCBJUiBSRUNFSVZFUgorTToJU2VhbiBZb3VuZyA8c2Vh
bkBtZXNzLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9tZWRpYS9yYy9zZXJpYWxfaXIuYworCitTRVJJQUwgTE9XLVBPV0VSIElO
VEVSLUNISVAgTUVESUEgQlVTIChTTElNYnVzKQorTToJU3Jpbml2YXMgS2FuZGFnYXRsYSA8c3Jp
bmlAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NsaW1idXMvCitGOglE
b2N1bWVudGF0aW9uL2RyaXZlci1hcGkvc2xpbWJ1cy5yc3QKK0Y6CWRyaXZlcnMvc2xpbWJ1cy8K
K0Y6CWluY2x1ZGUvbGludXgvc2xpbWJ1cy5oCisKK1NGQyBORVRXT1JLIERSSVZFUgorTToJRWR3
YXJkIENyZWUgPGVjcmVlLnhpbGlueEBnbWFpbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwu
b3JnCitMOglsaW51eC1uZXQtZHJpdmVyc0BhbWQuY29tCitTOglNYWludGFpbmVkCitGOglEb2N1
bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2bGluay9zZmMucnN0CitGOglkcml2ZXJzL25ldC9ldGhl
cm5ldC9zZmMvCisKK1NGQ1RFTVAgSFdNT04gRFJJVkVSCitNOglFbWlsIFJlbm5lciBCZXJ0aGlu
ZyA8a2VybmVsQGVzbWlsLmRrPgorTToJSGFsIEZlbmcgPGhhbC5mZW5nQHN0YXJmaXZldGVjaC5j
b20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9od21vbi9zdGFyZml2ZSxqaDcxeDAtdGVt
cC55YW1sCitGOglEb2N1bWVudGF0aW9uL2h3bW9uL3NmY3RlbXAucnN0CitGOglkcml2ZXJzL2h3
bW9uL3NmY3RlbXAuYworCitTRkYvU0ZQL1NGUCsgTU9EVUxFIFNVUFBPUlQKK006CVJ1c3NlbGwg
S2luZyA8bGludXhAYXJtbGludXgub3JnLnVrPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9z
ZmYsc2ZwLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKK0Y6CWRyaXZlcnMvbmV0
L3BoeS9zZnAqCitGOglpbmNsdWRlL2xpbnV4L21kaW8vbWRpby1pMmMuaAorRjoJaW5jbHVkZS9s
aW51eC9waHlsaW5rLmgKK0Y6CWluY2x1ZGUvbGludXgvc2ZwLmgKK0s6CXBoeWxpbmtcLmh8c3Ry
dWN0XHMrcGh5bGlua3xcLnBoeWxpbmt8PnBoeWxpbmtffHBoeWxpbmtfKGF1dG9uZWd8Y2xlYXJ8
Y29ubmVjdHxjcmVhdGV8ZGVzdHJveXxkaXNjb25uZWN0fGV0aHRvb2x8aGVscGVyfG1hY3xtaWl8
b2Z8c2V0fHN0YXJ0fHN0b3B8dGVzdHx2YWxpZGF0ZSkKKworU0dJIEdSVSBEUklWRVIKK006CURp
bWl0cmkgU2l2YW5pY2ggPGRpbWl0cmkuc2l2YW5pY2hAaHBlLmNvbT4KK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvbWlzYy9zZ2ktZ3J1LworCitTR0kgWFAvWFBDL1hQTkVUIERSSVZFUgorTToJ
Um9iaW4gSG9sdCA8cm9iaW5taG9sdEBnbWFpbC5jb20+CitNOglTdGV2ZSBXYWhsIDxzdGV2ZS53
YWhsQGhwZS5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21pc2Mvc2dpLXhwLworCitT
SEFSRUQgTUVNT1JZIENPTU1VTklDQVRJT05TIChTTUMpIFNPQ0tFVFMKK006CVdlbmppYSBaaGFu
ZyA8d2VuamlhQGxpbnV4LmlibS5jb20+CitNOglKYW4gS2FyY2hlciA8amFrYUBsaW51eC5pYm0u
Y29tPgorUjoJRC4gV3l0aGUgPGFsaWJ1ZGFAbGludXguYWxpYmFiYS5jb20+CitSOglUb255IEx1
IDx0b255bHVAbGludXguYWxpYmFiYS5jb20+CitSOglXZW4gR3UgPGd1d2VuQGxpbnV4LmFsaWJh
YmEuY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXMzOTBAdmdl
ci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CW5ldC9zbWMvCisKK1NIQVJQIEdQMkFQMDAy
QTAwRi9HUDJBUDAwMlMwMEYgU0VOU09SIERSSVZFUgorTToJTGludXMgV2FsbGVpaiA8bGludXMu
d2FsbGVpakBsaW5hcm8ub3JnPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs
L2dpdC9qaWMyMy9paW8uZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aWlvL2xpZ2h0L3NoYXJwLGdwMmFwMDAyLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2xpZ2h0L2dwMmFw
MDAyLmMKKworU0hBUlAgUko1NE4xQ0IwQyBTRU5TT1IgRFJJVkVSCitNOglKYWNvcG8gTW9uZGkg
PGphY29wb0BqbW9uZGkub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglP
ZGQgZml4ZXMKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMv
bWVkaWEvaTJjL3JqNTRuMWNiMGMuYworRjoJaW5jbHVkZS9tZWRpYS9pMmMvcmo1NG4xY2IwYy5o
CisKK1NIUklOS0VSCitNOglBbmRyZXcgTW9ydG9uIDxha3BtQGxpbnV4LWZvdW5kYXRpb24ub3Jn
PgorTToJRGF2ZSBDaGlubmVyIDxkYXZpZEBmcm9tb3JiaXQuY29tPgorUjoJUWkgWmhlbmcgPHpo
ZW5ncWkuYXJjaEBieXRlZGFuY2UuY29tPgorUjoJUm9tYW4gR3VzaGNoaW4gPHJvbWFuLmd1c2hj
aGluQGxpbnV4LmRldj4KK1I6CU11Y2h1biBTb25nIDxtdWNodW4uc29uZ0BsaW51eC5kZXY+CitM
OglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRt
aW4tZ3VpZGUvbW0vc2hyaW5rZXJfZGVidWdmcy5yc3QKK0Y6CWluY2x1ZGUvbGludXgvc2hyaW5r
ZXIuaAorRjoJbW0vc2hyaW5rZXIuYworRjoJbW0vc2hyaW5rZXJfZGVidWcuYworCitTSF9WT1Ug
VjRMMiBPVVRQVVQgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9y
cGhhbgorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9yZW5lc2FzL3NoX3ZvdS5jCitGOglpbmNs
dWRlL21lZGlhL2Rydi1pbnRmL3NoX3ZvdS5oCisKK1NJMjE1NyBNRURJQSBEUklWRVIKK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYu
b3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEv
bGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvdHVuZXJzL3NpMjE1NyoKKworU0kyMTY1IE1FRElBIERS
SVZFUgorTToJTWF0dGhpYXMgU2Nod2Fyem90dCA8enphbUBnZW50b28ub3JnPgorTDoJbGludXgt
bWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4dHYu
b3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEv
bGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9zaTIxNjUqCisKK1NJMjE2OCBN
RURJQSBEUklWRVIKK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitX
OglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3By
b2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvZHZiLWZyb250ZW5kcy9z
aTIxNjgqCisKK1NJNDcwWCBGTSBSQURJTyBSRUNFSVZFUiBJMkMgRFJJVkVSCitNOglIYW5zIFZl
cmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9y
ZworUzoJT2RkIEZpeGVzCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGlu
dXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
bWVkaWEvc2lsYWJzLHNpNDcweC55YW1sCitGOglkcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcweC9y
YWRpby1zaTQ3MHgtaTJjLmMKKworU0k0NzBYIEZNIFJBRElPIFJFQ0VJVkVSIFVTQiBEUklWRVIK
K006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOgln
aXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3JhZGlvL3Np
NDcweC9yYWRpby1zaTQ3MHgtY29tbW9uLmMKK0Y6CWRyaXZlcnMvbWVkaWEvcmFkaW8vc2k0NzB4
L3JhZGlvLXNpNDcweC11c2IuYworRjoJZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MHgvcmFkaW8t
c2k0NzB4LmgKKworU0k0NzEzIEZNIFJBRElPIFRSQU5TTUlUVEVSIEkyQyBEUklWRVIKK006CUVk
dWFyZG8gVmFsZW50aW4gPGVkdWJlenZhbEBnbWFpbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0
IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3
MTMvc2k0NzEzLj8KKworU0k0NzEzIEZNIFJBRElPIFRSQU5TTUlUVEVSIFBMQVRGT1JNIERSSVZF
UgorTToJRWR1YXJkbyBWYWxlbnRpbiA8ZWR1YmV6dmFsQGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1l
ZGlhQHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitXOglodHRwczovL2xpbnV4dHYub3Jn
CitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3Jh
ZGlvL3NpNDcxMy9yYWRpby1wbGF0Zm9ybS1zaTQ3MTMuYworCitTSTQ3MTMgRk0gUkFESU8gVFJB
TlNNSVRURVIgVVNCIERSSVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwubmw+
CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBz
Oi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRy
aXZlcnMvbWVkaWEvcmFkaW8vc2k0NzEzL3JhZGlvLXVzYi1zaTQ3MTMuYworCitTSUFOTyBEVkIg
RFJJVkVSCitNOglNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVoYWJAa2VybmVsLm9yZz4KK0w6
CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT2RkIGZpeGVzCitXOglodHRwczovL2xp
bnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJz
L21lZGlhL2NvbW1vbi9zaWFuby8KK0Y6CWRyaXZlcnMvbWVkaWEvbW1jL3NpYW5vLworRjoJZHJp
dmVycy9tZWRpYS91c2Ivc2lhbm8vCitGOglkcml2ZXJzL21lZGlhL3VzYi9zaWFuby8KKworU0lF
TUVOUyBJUEMgTEVEIERSSVZFUlMKK006CUJhbyBDaGVuZyBTdSA8YmFvY2hlbmcuc3VAc2llbWVu
cy5jb20+CitNOglCZW5lZGlrdCBOaWVkZXJtYXlyIDxiZW5lZGlrdC5uaWVkZXJtYXlyQHNpZW1l
bnMuY29tPgorTToJVG9iaWFzIFNjaGFmZm5lciA8dG9iaWFzLnNjaGFmZm5lckBzaWVtZW5zLmNv
bT4KK0w6CWxpbnV4LWxlZHNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL2xlZHMvc2ltcGxlLworCitTSUVNRU5TIElQQyBQTEFURk9STSBEUklWRVJTCitNOglCYW8g
Q2hlbmcgU3UgPGJhb2NoZW5nLnN1QHNpZW1lbnMuY29tPgorTToJQmVuZWRpa3QgTmllZGVybWF5
ciA8YmVuZWRpa3QubmllZGVybWF5ckBzaWVtZW5zLmNvbT4KK006CVRvYmlhcyBTY2hhZmZuZXIg
PHRvYmlhcy5zY2hhZmZuZXJAc2llbWVucy5jb20+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvc2ll
bWVucy8KK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS94ODYvc2ltYXRpYy1pcGMtYmFz
ZS5oCitGOglpbmNsdWRlL2xpbnV4L3BsYXRmb3JtX2RhdGEveDg2L3NpbWF0aWMtaXBjLmgKKwor
U0lFTUVOUyBJUEMgV0FUQ0hET0cgRFJJVkVSUworTToJQmFvIENoZW5nIFN1IDxiYW9jaGVuZy5z
dUBzaWVtZW5zLmNvbT4KK006CUJlbmVkaWt0IE5pZWRlcm1heXIgPGJlbmVkaWt0Lm5pZWRlcm1h
eXJAc2llbWVucy5jb20+CitNOglUb2JpYXMgU2NoYWZmbmVyIDx0b2JpYXMuc2NoYWZmbmVyQHNp
ZW1lbnMuY29tPgorTDoJbGludXgtd2F0Y2hkb2dAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL3dhdGNoZG9nL3NpbWF0aWMtaXBjLXdkdC5jCisKK1NJRklWRSBEUklW
RVJTCitNOglQYXVsIFdhbG1zbGV5IDxwYXVsLndhbG1zbGV5QHNpZml2ZS5jb20+CitNOglTYW11
ZWwgSG9sbGFuZCA8c2FtdWVsLmhvbGxhbmRAc2lmaXZlLmNvbT4KK0w6CWxpbnV4LXJpc2N2QGxp
c3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9kbWEvc2YtcGRtYS8K
K046CXNpZml2ZQorSzoJZnVbNTddNDAKK0s6CVteQF1zaWZpdmUKKworU0lMRUFEIFRPVUNIU0NS
RUVOIERSSVZFUgorTToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6CWxp
bnV4LWlucHV0QHZnZXIua2VybmVsLm9yZworTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vc2ls
ZWFkLmMKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L3RvdWNoc2NyZWVuX2RtaS5jCisKK1NJTElD
T04gTEFCUyBXSVJFTEVTUyBEUklWRVJTIChmb3IgV0Z4eHggc2VyaWVzKQorTToJSsOpcsO0bWUg
UG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgorTDoJbGludXgtd2lyZWxlc3NA
dmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9uZXQvd2lyZWxlc3Mvc2lsYWJzLHdmeC55YW1sCitGOglkcml2ZXJzL25ldC93
aXJlbGVzcy9zaWxhYnMvCisKK1NJTElDT04gTU9USU9OIFNNNzEyIEZSQU1FIEJVRkZFUiBEUklW
RVIKK006CVN1ZGlwIE11a2hlcmplZSA8c3VkaXBtLm11a2hlcmplZUBnbWFpbC5jb20+CitNOglU
ZWRkeSBXYW5nIDx0ZWRkeS53YW5nQHNpbGljb25tb3Rpb24uY29tPgorTToJU3VkaXAgTXVraGVy
amVlIDxzdWRpcC5tdWtoZXJqZWVAY29kZXRoaW5rLmNvLnVrPgorTDoJbGludXgtZmJkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2ZiL3NtNzEyZmIu
cnN0CitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NtNzEyKgorCitTSUxWQUNPIEkzQyBEVUFMLVJP
TEUgTUFTVEVSCitNOglNaXF1ZWwgUmF5bmFsIDxtaXF1ZWwucmF5bmFsQGJvb3RsaW4uY29tPgor
TToJRnJhbmsgTGkgPEZyYW5rLkxpQG54cC5jb20+CitMOglsaW51eC1pM2NAbGlzdHMuaW5mcmFk
ZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglpbXhAbGlzdHMubGlu
dXguZGV2CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvaTNjL3NpbHZhY28saTNjLW1hc3Rlci55YW1sCitGOglkcml2ZXJzL2kzYy9tYXN0ZXIvc3Zj
LWkzYy1tYXN0ZXIuYworCitTSU1QTEVGQiBGQiBEUklWRVIKK006CUhhbnMgZGUgR29lZGUgPGhk
ZWdvZWRlQHJlZGhhdC5jb20+CitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L3Np
bXBsZS1mcmFtZWJ1ZmZlci55YW1sCitGOglkcml2ZXJzL3ZpZGVvL2ZiZGV2L3NpbXBsZWZiLmMK
K0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9zaW1wbGVmYi5oCisKK1NJT1gKK006CVRo
b3JzdGVuIFNjaGVyZXIgPHQuc2NoZXJlckBlY2tlbG1hbm4uZGU+CitSOglQZW5ndXRyb25peCBL
ZXJuZWwgVGVhbSA8a2VybmVsQHBlbmd1dHJvbml4LmRlPgorUzoJU3VwcG9ydGVkCitGOglkcml2
ZXJzL2dwaW8vZ3Bpby1zaW94LmMKK0Y6CWRyaXZlcnMvc2lveC8qCitGOglpbmNsdWRlL3RyYWNl
L2V2ZW50cy9zaW94LmgKKworU0lQSEFTSCBQUkYgUk9VVElORVMKK006CUphc29uIEEuIERvbmVu
ZmVsZCA8SmFzb25AengyYzQuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC9z
aXBoYXNoLmgKK0Y6CWxpYi9zaXBoYXNoLmMKK0Y6CWxpYi90ZXN0cy9zaXBoYXNoX2t1bml0LmMK
KworU0lTIDE5MCBFVEhFUk5FVCBEUklWRVIKK006CUZyYW5jb2lzIFJvbWlldSA8cm9taWV1QGZy
LnpvcmVpbC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL25ldC9ldGhlcm5ldC9zaXMvc2lzMTkwLmMKKworU0lTIDkwMC83MDE2IEZBU1Qg
RVRIRVJORVQgRFJJVkVSCitNOglEYW5pZWxlIFZlbnphbm8gPHZlbnphQGJyb3duaGF0Lm9yZz4K
K0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cu
YnJvd25oYXQub3JnL3NpczkwMC5odG1sCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9zaXMvc2lz
OTAwLioKKworU0lTIEZSQU1FQlVGRkVSIERSSVZFUgorUzoJT3JwaGFuCitGOglEb2N1bWVudGF0
aW9uL2ZiL3Npc2ZiLnJzdAorRjoJZHJpdmVycy92aWRlby9mYmRldi9zaXMvCitGOglpbmNsdWRl
L3ZpZGVvL3Npc2ZiLmgKKworU0lTIEkyQyBUT1VDSFNDUkVFTiBEUklWRVIKK006CU1pa2EgUGVu
dHRpbMOkIDxtcGVudHRpbEByZWRoYXQuY29tPgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aW5wdXQvdG91Y2hzY3JlZW4vc2lzX2kyYy50eHQKK0Y6CWRyaXZlcnMvaW5wdXQvdG91Y2hzY3Jl
ZW4vc2lzX2kyYy5jCisKK1NJUyBVU0IyVkdBIERSSVZFUgorTToJVGhvbWFzIFdpbmlzY2hob2Zl
ciA8dGhvbWFzQHdpbmlzY2hob2Zlci5uZXQ+CitTOglNYWludGFpbmVkCitXOglodHRwOi8vd3d3
LndpbmlzY2hob2Zlci5hdC9saW51eHNpc3VzYnZnYS5zaHRtbAorRjoJZHJpdmVycy91c2IvbWlz
Yy9zaXN1c2J2Z2EvCisKK1NMMjggQ1BMRCBNRkQgRFJJVkVSCitNOglNaWNoYWVsIFdhbGxlIDxt
d2FsbGVAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9ncGlvL2tvbnRyb24sc2wyOGNwbGQtZ3Bpby55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24va29udHJvbixzbDI4Y3BsZC1od21vbi55
YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW50ZXJydXB0LWNvbnRy
b2xsZXIva29udHJvbixzbDI4Y3BsZC1pbnRjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9tZmQva29udHJvbixzbDI4Y3BsZC55YW1sCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvcHdtL2tvbnRyb24sc2wyOGNwbGQtcHdtLnlhbWwKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy93YXRjaGRvZy9rb250cm9uLHNsMjhjcGxk
LXdkdC55YW1sCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1zbDI4Y3BsZC5jCitGOglkcml2ZXJzL2h3
bW9uL3NsMjhjcGxkLWh3bW9uLmMKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtc2wyOGNwbGQuYwor
RjoJZHJpdmVycy9wd20vcHdtLXNsMjhjcGxkLmMKK0Y6CWRyaXZlcnMvd2F0Y2hkb2cvc2wyOGNw
bGRfd2R0LmMKKworU0wyOCBWUEQgTlZNRU0gTEFZT1VUIERSSVZFUgorTToJTWljaGFlbCBXYWxs
ZSA8bXdhbGxlQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3MvbnZtZW0vbGF5b3V0cy9rb250cm9uLHNsMjgtdnBkLnlhbWwKK0Y6
CWRyaXZlcnMvbnZtZW0vbGF5b3V0cy9zbDI4dnBkLmMKKworU0xBQiBBTExPQ0FUT1IKK006CUNo
cmlzdG9waCBMYW1ldGVyIDxjbEBsaW51eC5jb20+CitNOglEYXZpZCBSaWVudGplcyA8cmllbnRq
ZXNAZ29vZ2xlLmNvbT4KK006CUFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5v
cmc+CitNOglWbGFzdGltaWwgQmFia2EgPHZiYWJrYUBzdXNlLmN6PgorUjoJUm9tYW4gR3VzaGNo
aW4gPHJvbWFuLmd1c2hjaGluQGxpbnV4LmRldj4KK1I6CUhhcnJ5IFlvbyA8aGFycnkueW9vQG9y
YWNsZS5jb20+CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBn
aXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdmJhYmthL3NsYWIu
Z2l0CitGOglpbmNsdWRlL2xpbnV4L3NsP2IqLmgKK0Y6CW1tL3NsP2IqCisKK1NMQ0FOIENBTiBO
RVRXT1JLIERSSVZFUgorTToJRGFyaW8gQmluYWNjaGkgPGRhcmlvLmJpbmFjY2hpQGFtYXJ1bGFz
b2x1dGlvbnMuY29tPgorTDoJbGludXgtY2FuQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9uZXQvY2FuL3NsY2FuLworCitTTEVFUEFCTEUgUkVBRC1DT1BZIFVQREFU
RSAoU1JDVSkKK006CUxhaSBKaWFuZ3NoYW4gPGppYW5nc2hhbmxhaUBnbWFpbC5jb20+CitNOgki
UGF1bCBFLiBNY0tlbm5leSIgPHBhdWxtY2tAa2VybmVsLm9yZz4KK006CUpvc2ggVHJpcGxldHQg
PGpvc2hAam9zaHRyaXBsZXR0Lm9yZz4KK1I6CVN0ZXZlbiBSb3N0ZWR0IDxyb3N0ZWR0QGdvb2Rt
aXMub3JnPgorUjoJTWF0aGlldSBEZXNub3llcnMgPG1hdGhpZXUuZGVzbm95ZXJzQGVmZmljaW9z
LmNvbT4KK0w6CXJjdUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3
dy5yZHJvcC5jb20vdXNlcnMvcGF1bG1jay9SQ1UvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5v
cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3JjdS9saW51eC5naXQgcmN1L2RldgorRjoJaW5j
bHVkZS9saW51eC9zcmN1Ki5oCitGOglrZXJuZWwvcmN1L3NyY3UqLmMKKworU01BQ0sgU0VDVVJJ
VFkgTU9EVUxFCitNOglDYXNleSBTY2hhdWZsZXIgPGNhc2V5QHNjaGF1Zmxlci1jYS5jb20+CitM
OglsaW51eC1zZWN1cml0eS1tb2R1bGVAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitX
OglodHRwOi8vc2NoYXVmbGVyLWNhLmNvbQorVDoJZ2l0IGdpdDovL2dpdGh1Yi5jb20vY3NjaGF1
Zmxlci9zbWFjay1uZXh0CitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL0xTTS9TbWFjay5y
c3QKK0Y6CXNlY3VyaXR5L3NtYWNrLworCitTTUM5MXggRVRIRVJORVQgRFJJVkVSCitNOglOaWNv
bGFzIFBpdHJlIDxuaWNvQGZsdXhuaWMubmV0PgorUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC9zbXNjL3NtYzkxeC4qCisKK1NNU0MgRU1DMjEwMyBIQVJEV0FSRSBNT05JVE9S
IERSSVZFUgorTToJU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmdsZW5kaW5uaW5nQHNoYXdlbGwu
bmV0PgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL2h3bW9uL2VtYzIxMDMucnN0CitGOglkcml2ZXJzL2h3bW9uL2VtYzIxMDMu
YworCitTTVNDIFNDSDU2MjcgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIKK006CUhhbnMgZGUgR29l
ZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitMOglsaW51eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi9zY2g1NjI3LnJzdAorRjoJZHJp
dmVycy9od21vbi9zY2g1NjI3LmMKKworU01TQyBVRlg2MDAwIGFuZCBVRlg3MDAwIFVTQiB0byBW
R0EgRFJJVkVSCitNOglTdGV2ZSBHbGVuZGlubmluZyA8c3RldmUuZ2xlbmRpbm5pbmdAc2hhd2Vs
bC5uZXQ+CitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvdmlkZW8vZmJkZXYvc21zY3VmeC5jCisKK1NNU0M0N0IzOTcgSEFSRFdBUkUgTU9O
SVRPUiBEUklWRVIKK006CUplYW4gRGVsdmFyZSA8amRlbHZhcmVAc3VzZS5jb20+CitMOglsaW51
eC1od21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24v
aHdtb24vc21zYzQ3YjM5Ny5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vc21zYzQ3YjM5Ny5jCisKK1NN
U0M5MTF4IEVUSEVSTkVUIERSSVZFUgorTToJU3RldmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmdsZW5k
aW5uaW5nQHNoYXdlbGwubmV0PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9zbXNjOTExeC4qCitGOglpbmNsdWRl
L2xpbnV4L3Ntc2M5MTF4LmgKKworU01TQzk0MjAgUENJIEVUSEVSTkVUIERSSVZFUgorTToJU3Rl
dmUgR2xlbmRpbm5pbmcgPHN0ZXZlLmdsZW5kaW5uaW5nQHNoYXdlbGwubmV0PgorTDoJbmV0ZGV2
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQv
c21zYy9zbXNjOTQyMC4qCisKK1NORVQgRFBVIFZJUlRJTyBEQVRBIFBBVEggQUNDRUxFUkFUT1IK
K1I6CUFsdmFybyBLYXJzeiA8YWx2YXJvLmthcnN6QHNvbGlkLXJ1bi5jb20+CitGOglkcml2ZXJz
L3ZkcGEvc29saWRydW4vCisKK1NPQ0lPTkVYVCAoU05JKSBBVkUgTkVUV09SSyBEUklWRVIKK006
CUt1bmloaWtvIEhheWFzaGkgPGhheWFzaGkua3VuaWhpa29Ac29jaW9uZXh0LmNvbT4KK0w6CW5l
dGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9uZXQvc29jaW9uZXh0LHVuaXBoaWVyLWF2ZTQueWFtbAorRjoJZHJp
dmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYworCitTT0NJT05FWFQgKFNOSSkg
TkVUU0VDIE5FVFdPUksgRFJJVkVSCitNOglJbGlhcyBBcGFsb2RpbWFzIDxpbGlhcy5hcGFsb2Rp
bWFzQGxpbmFyby5vcmc+CitNOglNYXNhaGlzYSBLb2ppbWEgPGtvamltYS5tYXNhaGlzYUBzb2Np
b25leHQuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zb2Npb25leHQsc3lucXVhY2Vy
LW5ldHNlYy55YW1sCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvbmV0c2VjLmMK
KworU09DSU9ORVhUIChTTkkpIFN5bnF1YWNlciBTUEkgRFJJVkVSCitNOglNYXNhaGlzYSBLb2pp
bWEgPG1hc2FoaXNhLmtvamltYUBsaW5hcm8ub3JnPgorTToJSmFzc2kgQnJhciA8amFzd2luZGVy
LnNpbmdoQGxpbmFyby5vcmc+CitMOglsaW51eC1zcGlAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3BpL3NvY2lvbmV4
dCxzeW5xdWFjZXItc3BpLnlhbWwKK0Y6CWRyaXZlcnMvc3BpL3NwaS1zeW5xdWFjZXIuYworCitT
T0NJT05FWFQgU1lOUVVBQ0VSIEkyQyBEUklWRVIKK006CUFyZCBCaWVzaGV1dmVsIDxhcmRiQGtl
cm5lbC5vcmc+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
OglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaTJjL3NvY2lvbmV4dCxzeW5xdWFj
ZXItaTJjLnlhbWwKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc3lucXVhY2VyLmMKKworU09D
SU9ORVhUIFVOSVBISUVSIFNPVU5EIERSSVZFUgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwu
b3JnCitTOglPcnBoYW4KK0Y6CXNvdW5kL3NvYy91bmlwaGllci8KKworU09DS0VUIFRJTUVTVEFN
UElORworTToJV2lsbGVtIGRlIEJydWlqbiA8d2lsbGVtZGVicnVpam4ua2VybmVsQGdtYWlsLmNv
bT4KK1I6CUphc29uIFhpbmcgPGtlcm5lbHhpbmdAdGVuY2VudC5jb20+CitTOglNYWludGFpbmVk
CitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGltZXN0YW1waW5nLnJzdAorRjoJaW5jbHVk
ZS9saW51eC9uZXRfdHN0YW1wLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9uZXRfdHN0YW1wLmgK
K0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi8qL25ldF90aW1lc3RhbXBpbmcqCitGOgl0
b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvKnRpbWVzdGFtcCoKK0Y6CXRvb2xzL3Rlc3Rpbmcv
c2VsZnRlc3RzL25ldC9zb190eHRpbWUuYworCitTT0VLUklTIE5FVDQ4WFggTEVEIFNVUFBPUlQK
K006CUNocmlzIEJvb3QgPGJvb3RjQGJvb3RjLm5ldD4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvbGVkcy9sZWRzLW5ldDQ4eHguYworCitTT0ZULUlXQVJQIERSSVZFUiAoc2l3KQorTToJQmVy
bmFyZCBNZXR6bGVyIDxibXRAenVyaWNoLmlibS5jb20+CitMOglsaW51eC1yZG1hQHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2luZmluaWJhbmQvc3cvc2l3LworRjoJ
aW5jbHVkZS91YXBpL3JkbWEvc2l3LWFiaS5oCisKK1NPRlQtUk9DRSBEUklWRVIgKHJ4ZSkKK006
CVpodSBZYW5qdW4gPHp5anp5ajIwMDBAZ21haWwuY29tPgorTDoJbGludXgtcmRtYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS8KK0Y6
CWluY2x1ZGUvdWFwaS9yZG1hL3JkbWFfdXNlcl9yeGUuaAorCitTT0ZUTE9HSUMgNngxMCBNUEVH
IENPREVDCitNOglCbHVlY2hlcnJ5IE1haW50YWluZXJzIDxtYWludGFpbmVyc0BibHVlY2hlcnJ5
ZHZyLmNvbT4KK006CUFuZHJleSBVdGtpbiA8YW5kcmV5X3V0a2luQGZhc3RtYWlsLmNvbT4KK006
CUlzbWFlbCBMdWNlbm8gPGlzbWFlbEBpb2Rldi5jby51az4KK0w6CWxpbnV4LW1lZGlhQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL21lZGlhL3BjaS9zb2xvNngxMC8K
KworU09GVFdBUkUgREVMRUdBVEVEIEVYQ0VQVElPTiBJTlRFUkZBQ0UgKFNERUkpCitNOglKYW1l
cyBNb3JzZSA8amFtZXMubW9yc2VAYXJtLmNvbT4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMu
aW5mcmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJtL2Zpcm13YXJlL3Nk
ZWkudHh0CitGOglkcml2ZXJzL2Zpcm13YXJlL2FybV9zZGVpLmMKK0Y6CWluY2x1ZGUvbGludXgv
YXJtX3NkZWkuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L2FybV9zZGVpLmgKKworU09GVFdBUkUg
Tk9ERVMgQU5EIERFVklDRSBQUk9QRVJUSUVTCitSOglBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5z
aGV2Y2hlbmtvQGxpbnV4LmludGVsLmNvbT4KK1I6CURhbmllbCBTY2FsbHkgPGRqcnNjYWxseUBn
bWFpbC5jb20+CitSOglIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRl
bC5jb20+CitSOglTYWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20+CitM
OglsaW51eC1hY3BpQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9i
YXNlL3Byb3BlcnR5LmMKK0Y6CWRyaXZlcnMvYmFzZS9zd25vZGUuYworRjoJaW5jbHVkZS9saW51
eC9md25vZGUuaAorRjoJaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oCisKK1NPRlRXQVJFIFJBSUQg
KE11bHRpcGxlIERpc2tzKSBTVVBQT1JUCitNOglTb25nIExpdSA8c29uZ0BrZXJuZWwub3JnPgor
TToJWXUgS3VhaSA8eXVrdWFpM0BodWF3ZWkuY29tPgorTDoJbGludXgtcmFpZEB2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVsLm9yZy9wcm9q
ZWN0L2xpbnV4LXJhaWQvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2Nt
L2xpbnV4L2tlcm5lbC9naXQvbWRyYWlkL2xpbnV4LmdpdAorRjoJZHJpdmVycy9tZC9LY29uZmln
CitGOglkcml2ZXJzL21kL01ha2VmaWxlCitGOglkcml2ZXJzL21kL21kKgorRjoJZHJpdmVycy9t
ZC9yYWlkKgorRjoJaW5jbHVkZS9saW51eC9yYWlkLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3Jh
aWQvCisKK1NPTElEUlVOIENMRUFSRk9HIFNVUFBPUlQKK006CVJ1c3NlbGwgS2luZyA8bGludXhA
YXJtbGludXgub3JnLnVrPgorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFy
dmVsbC9hcm1hZGEtMzg4LWNsZWFyZm9nKgorRjoJYXJjaC9hcm0vYm9vdC9kdHMvbWFydmVsbC9h
cm1hZGEtMzh4LXNvbGlkcnVuLSoKKworU09MSURSVU4gQ1VCT1gtSS9IVU1NSU5HQk9BUkQgU1VQ
UE9SVAorTToJUnVzc2VsbCBLaW5nIDxsaW51eEBhcm1saW51eC5vcmcudWs+CitTOglNYWludGFp
bmVkCitGOglhcmNoL2FybS9ib290L2R0cy9ueHAvaW14L2lteDYqLWN1Ym94LWkqCitGOglhcmNo
L2FybS9ib290L2R0cy9ueHAvaW14L2lteDYqLWh1bW1pbmdib2FyZCoKK0Y6CWFyY2gvYXJtL2Jv
b3QvZHRzL254cC9pbXgvaW14Niotc3ItKgorCitTT05JQyBORVRXT1JLIERSSVZFUgorTToJVGhv
bWFzIEJvZ2VuZG9lcmZlciA8dHNib2dlbmRAYWxwaGEuZnJhbmtlbi5kZT4KK0w6CW5ldGRldkB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L25h
dHNlbWkvc29uaWMuKgorCitTT05JQ1MgU0lMSUNPTiBCQUNLUExBTkUgRFJJVkVSIChTU0IpCitN
OglNaWNoYWVsIEJ1ZXNjaCA8bUBidWVzLmNoPgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3NzYi8KK0Y6CWluY2x1ZGUvbGludXgv
c3NiLworCitTT05ZIElNWDIwOCBTRU5TT1IgRFJJVkVSCitNOglTYWthcmkgQWlsdXMgPHNha2Fy
aS5haWx1c0BsaW51eC5pbnRlbC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRy
aXZlcnMvbWVkaWEvaTJjL2lteDIwOC5jCisKK1NPTlkgSU1YMjE0IFNFTlNPUiBEUklWRVIKK006
CVJpY2FyZG8gUmliYWxkYSA8cmliYWxkYUBrZXJuZWwub3JnPgorTDoJbGludXgtbWVkaWFAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVk
aWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL3Nv
bnksaW14MjE0LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2lteDIxNC5jCisKK1NPTlkgSU1Y
MjE5IFNFTlNPUiBEUklWRVIKK006CURhdmUgU3RldmVuc29uIDxkYXZlLnN0ZXZlbnNvbkByYXNw
YmVycnlwaS5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvc29ueSxpbXgyMTkueWFtbAorRjoJZHJpdmVy
cy9tZWRpYS9pMmMvaW14MjE5LmMKKworU09OWSBJTVgyNTggU0VOU09SIERSSVZFUgorTToJU2Fr
YXJpIEFpbHVzIDxzYWthcmkuYWlsdXNAbGludXguaW50ZWwuY29tPgorTDoJbGludXgtbWVkaWFA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJj
L3NvbnksaW14MjU4LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2lteDI1OC5jCisKK1NPTlkg
SU1YMjc0IFNFTlNPUiBEUklWRVIKK006CUxlb24gTHVvIDxsZW9ubEBsZW9wYXJkaW1hZ2luZy5j
b20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdp
dCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9tZWRpYS9pMmMvc29ueSxpbXgyNzQueWFtbAorRjoJZHJpdmVycy9tZWRpYS9p
MmMvaW14Mjc0LmMKKworU09OWSBJTVgyODMgU0VOU09SIERSSVZFUgorTToJS2llcmFuIEJpbmdo
YW0gPGtpZXJhbi5iaW5naGFtQGlkZWFzb25ib2FyZC5jb20+CitNOglVbWFuZyBKYWluIDx1bWFu
Zy5qYWluQGlkZWFzb25ib2FyZC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvc29ueSxpbXgyODMueWFt
bAorRjoJZHJpdmVycy9tZWRpYS9pMmMvaW14MjgzLmMKKworU09OWSBJTVgyOTAgU0VOU09SIERS
SVZFUgorTToJTWFuaXZhbm5hbiBTYWRoYXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGlu
YXJvLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9zb255LGlteDI5MC55YW1sCitGOglkcml2ZXJzL21l
ZGlhL2kyYy9pbXgyOTAuYworCitTT05ZIElNWDI5NiBTRU5TT1IgRFJJVkVSCitNOglMYXVyZW50
IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitNOglNYW5pdmFu
bmFuIFNhZGhhc2l2YW0gPG1hbml2YW5uYW4uc2FkaGFzaXZhbUBsaW5hcm8ub3JnPgorTDoJbGlu
dXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vbGlu
dXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
bWVkaWEvaTJjL3NvbnksaW14Mjk2LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2lteDI5Ni5j
CisKK1NPTlkgSU1YMzE5IFNFTlNPUiBEUklWRVIKK006CUJpbmdidSBDYW8gPGJpbmdidS5jYW9A
aW50ZWwuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVk
CitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2ky
Yy9pbXgzMTkuYworCitTT05ZIElNWDMzNCBTRU5TT1IgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlh
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9zb255
LGlteDMzNC55YW1sCitGOglkcml2ZXJzL21lZGlhL2kyYy9pbXgzMzQuYworCitTT05ZIElNWDMz
NSBTRU5TT1IgRFJJVkVSCitNOglLaWVyYW4gQmluZ2hhbSA8a2llcmFuLmJpbmdoYW1AaWRlYXNv
bmJvYXJkLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy9zb255LGlteDMzNS55YW1sCitGOglkcml2ZXJz
L21lZGlhL2kyYy9pbXgzMzUuYworCitTT05ZIElNWDM1NSBTRU5TT1IgRFJJVkVSCitNOglUaWFu
c2h1IFFpdSA8dGlhbi5zaHUucWl1QGludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdp
dAorRjoJZHJpdmVycy9tZWRpYS9pMmMvaW14MzU1LmMKKworU09OWSBJTVg0MTIgU0VOU09SIERS
SVZFUgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1Q6CWdpdCBn
aXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9tZWRpYS9pMmMvc29ueSxpbXg0MTIueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMv
aW14NDEyLmMKKworU09OWSBJTVg0MTUgU0VOU09SIERSSVZFUgorTToJTWljaGFlbCBSaWVzY2gg
PG1pY2hhZWwucmllc2NoQGNvbGxhYm9yYS5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvc29ueSxpbXg0
MTUueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMvaW14NDE1LmMKKworU09OWSBNRU1PUllTVElD
SyBTVUJTWVNURU0KK006CU1heGltIExldml0c2t5IDxtYXhpbWxldml0c2t5QGdtYWlsLmNvbT4K
K006CUFsZXggRHVib3YgPG9ha2FkQHlhaG9vLmNvbT4KK006CVVsZiBIYW5zc29uIDx1bGYuaGFu
c3NvbkBsaW5hcm8ub3JnPgorTDoJbGludXgtbW1jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dp
dC91bGZoL21tYy5naXQKK0Y6CWRyaXZlcnMvbWVtc3RpY2svCitGOglpbmNsdWRlL2xpbnV4L21l
bXN0aWNrLmgKKworU09OWSBWQUlPIENPTlRST0wgREVWSUNFIERSSVZFUgorTToJTWF0dGlhIERv
bmdpbGkgPG1hbGF0dGlhQGxpbnV4Lml0PgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cubGludXguaXQvfm1hbGF0dGlh
L3dpa2kvaW5kZXgucGhwL1NvbnlfZHJpdmVycworRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlk
ZS9sYXB0b3BzL3NvbnktbGFwdG9wLnJzdAorRjoJZHJpdmVycy9jaGFyL3NvbnlwaS5jCitGOglk
cml2ZXJzL3BsYXRmb3JtL3g4Ni9zb255LWxhcHRvcC5jCisKK1NPUEhHTyBERVZJQ0VUUkVFUyBh
bmQgRFJJVkVSUworTToJQ2hlbiBXYW5nIDx1bmljb3JuX3dhbmdAb3V0bG9vay5jb20+CitNOglJ
bm9jaGkgQW1hb3RvIDxpbm9jaGlhbWFAZ21haWwuY29tPgorTDoJc29waGdvQGxpc3RzLmxpbnV4
LmRldgorVzoJaHR0cHM6Ly9naXRodWIuY29tL3NvcGhnby9saW51eC93aWtpCitUOglnaXQgaHR0
cHM6Ly9naXRodWIuY29tL3NvcGhnby9saW51eC5naXQKK1M6CU1haW50YWluZWQKK046CXNvcGhn
bworSzoJc29waGdvCisKK1NPVU5ECitNOglKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6
PgorTToJVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3Jn
LworUToJaHR0cDovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvYWxzYS1kZXZlbC9saXN0
LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90
aXdhaS9zb3VuZC5naXQKK0Y6CURvY3VtZW50YXRpb24vc291bmQvCitGOglpbmNsdWRlL3NvdW5k
LworRjoJaW5jbHVkZS91YXBpL3NvdW5kLworRjoJc291bmQvCitGOgl0b29scy90ZXN0aW5nL3Nl
bGZ0ZXN0cy9hbHNhCisKK1NPVU5EIC0gQUxTQSBTRUxGVEVTVFMKK006CU1hcmsgQnJvd24gPGJy
b29uaWVAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworTDoJbGlu
dXgta3NlbGZ0ZXN0QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOgl0b29scy90ZXN0
aW5nL3NlbGZ0ZXN0cy9hbHNhCisKK1NPVU5EIC0gQ09NUFJFU1NFRCBBVURJTworTToJVmlub2Qg
S291bCA8dmtvdWxAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L3Rpd2FpL3NvdW5kLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9zb3VuZC9kZXNpZ25z
L2NvbXByZXNzLW9mZmxvYWQucnN0CitGOglpbmNsdWRlL3NvdW5kL2NvbXByZXNzX2RyaXZlci5o
CitGOglpbmNsdWRlL3VhcGkvc291bmQvY29tcHJlc3NfKgorRjoJc291bmQvY29yZS9jb21wcmVz
c19vZmZsb2FkLmMKK0Y6CXNvdW5kL3NvYy9zb2MtY29tcHJlc3MuYworCitTT1VORCAtIENPUkUg
S1VOSVQgVEVTVAorTToJSXZhbiBPcmxvdiA8aXZhbi5vcmxvdjAzMjJAZ21haWwuY29tPgorTDoJ
bGludXgtc291bmRAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CXNvdW5kL2NvcmUv
c291bmRfa3VuaXQuYworCitTT1VORCAtIERNQUVOR0lORSBIRUxQRVJTCitNOglMYXJzLVBldGVy
IENsYXVzZW4gPGxhcnNAbWV0YWZvby5kZT4KK1M6CVN1cHBvcnRlZAorRjoJaW5jbHVkZS9zb3Vu
ZC9kbWFlbmdpbmVfcGNtLmgKK0Y6CXNvdW5kL2NvcmUvcGNtX2RtYWVuZ2luZS5jCitGOglzb3Vu
ZC9zb2Mvc29jLWdlbmVyaWMtZG1hZW5naW5lLXBjbS5jCisKK1NPVU5EIC0gU09DIExBWUVSIC8g
RFlOQU1JQyBBVURJTyBQT1dFUiBNQU5BR0VNRU5UIChBU29DKQorTToJTGlhbSBHaXJkd29vZCA8
bGdpcmR3b29kQGdtYWlsLmNvbT4KK006CU1hcmsgQnJvd24gPGJyb29uaWVAa2VybmVsLm9yZz4K
K0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8v
YWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9BU29DCitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Jyb29uaWUvc291bmQuZ2l0CitGOglE
b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvCitGOglEb2N1bWVudGF0aW9u
L3NvdW5kL3NvYy8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3Mvc291bmQvCitGOglpbmNsdWRlL3Nv
dW5kL2NzKgorWDoJaW5jbHVkZS9zb3VuZC9jczQyMzEtcmVncy5oCitYOglpbmNsdWRlL3NvdW5k
L2NzODQwMy5oCitYOglpbmNsdWRlL3NvdW5kL2NzODQyNy5oCitGOglpbmNsdWRlL3NvdW5kL21h
ZGVyYS1wZGF0YS5oCitGOglpbmNsdWRlL3NvdW5kL3NvYyoKK0Y6CWluY2x1ZGUvc291bmQvc29m
LmgKK0Y6CWluY2x1ZGUvc291bmQvc29mLworRjoJaW5jbHVkZS9zb3VuZC93bSouaAorRjoJaW5j
bHVkZS90cmFjZS9ldmVudHMvc29mKi5oCitGOglpbmNsdWRlL3VhcGkvc291bmQvYXNvYy5oCitG
Oglzb3VuZC9zb2MvCisKK1NPVU5EIC0gU09DIExBWUVSIC8gZGFwbS1ncmFwaAorTToJTHVjYSBD
ZXJlc29saSA8bHVjYS5jZXJlc29saUBib290bGluLmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJdG9vbHMvc291bmQvZGFwbS1ncmFwaAorCitT
T1VORCAtIFNPVU5EIE9QRU4gRklSTVdBUkUgKFNPRikgRFJJVkVSUworTToJTGlhbSBHaXJkd29v
ZCA8bGdpcmR3b29kQGdtYWlsLmNvbT4KK006CVBldGVyIFVqZmFsdXNpIDxwZXRlci51amZhbHVz
aUBsaW51eC5pbnRlbC5jb20+CitNOglCYXJkIExpYW8gPHl1bmctY2h1YW4ubGlhb0BsaW51eC5p
bnRlbC5jb20+CitNOglSYW5qYW5pIFNyaWRoYXJhbiA8cmFuamFuaS5zcmlkaGFyYW5AbGludXgu
aW50ZWwuY29tPgorTToJRGFuaWVsIEJhbHV0YSA8ZGFuaWVsLmJhbHV0YUBueHAuY29tPgorUjoJ
S2FpIFZlaG1hbmVuIDxrYWkudmVobWFuZW5AbGludXguaW50ZWwuY29tPgorUjoJUGllcnJlLUxv
dWlzIEJvc3NhcnQgPHBpZXJyZS1sb3Vpcy5ib3NzYXJ0QGxpbnV4LmRldj4KK0w6CXNvdW5kLW9w
ZW4tZmlybXdhcmVAYWxzYS1wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJl
cnMpCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS90aGVzb2Zwcm9qZWN0L2xp
bnV4LworRjoJc291bmQvc29jL3NvZi8KKworU09VTkQgLSBHRU5FUklDIFNPVU5EIENBUkQgKFNp
bXBsZS1BdWRpby1DYXJkLCBBdWRpby1HcmFwaC1DYXJkKQorTToJTWFyayBCcm93biA8YnJvb25p
ZUBrZXJuZWwub3JnPgorTToJS3VuaW5vcmkgTW9yaW1vdG8gPGt1bmlub3JpLm1vcmltb3RvLmd4
QHJlbmVzYXMuY29tPgorUzoJU3VwcG9ydGVkCitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5v
cmcKK0Y6CXNvdW5kL3NvYy9nZW5lcmljLworRjoJaW5jbHVkZS9zb3VuZC9zaW1wbGVfY2FyZCoK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zaW1wbGUtY2FyZC55
YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvYXVkaW8tZ3Jh
cGgqLnlhbWwKKworU09VTkRXSVJFIFNVQlNZU1RFTQorTToJVmlub2QgS291bCA8dmtvdWxAa2Vy
bmVsLm9yZz4KK006CUJhcmQgTGlhbyA8eXVuZy1jaHVhbi5saWFvQGxpbnV4LmludGVsLmNvbT4K
K1I6CVBpZXJyZS1Mb3VpcyBCb3NzYXJ0IDxwaWVycmUtbG91aXMuYm9zc2FydEBsaW51eC5kZXY+
CitSOglTYW55b2cgS2FsZSA8c2FueW9nLnIua2FsZUBpbnRlbC5jb20+CitMOglsaW51eC1zb3Vu
ZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC92a291bC9zb3VuZHdpcmUuZ2l0CitGOglEb2N1
bWVudGF0aW9uL2RyaXZlci1hcGkvc291bmR3aXJlLworRjoJZHJpdmVycy9zb3VuZHdpcmUvCitG
OglpbmNsdWRlL2xpbnV4L3NvdW5kd2lyZS8KKworU1AyIE1FRElBIERSSVZFUgorTToJT2xsaSBT
YWxvbmVuIDxvbGxpLnNhbG9uZW5AaWtpLmZpPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0
Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMv
bWVkaWEvZHZiLWZyb250ZW5kcy9zcDIqCisKK1NQQU5JU0ggRE9DVU1FTlRBVElPTgorTToJQ2Fy
bG9zIEJpbGJhbyA8Y2FybG9zLmJpbGJhb0BrZXJuZWwub3JnPgorUjoJQXZhZGh1dCBOYWlrIDxh
dmFkaHV0Lm5haWtAYW1kLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vdHJh
bnNsYXRpb25zL3NwX1NQLworCitTUEFSQyArIFVsdHJhU1BBUkMgKHNwYXJjL3NwYXJjNjQpCitN
OgkiRGF2aWQgUy4gTWlsbGVyIiA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KK006CUFuZHJlYXMgTGFy
c3NvbiA8YW5kcmVhc0BnYWlzbGVyLmNvbT4KK0w6CXNwYXJjbGludXhAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitROglodHRwOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJvamVjdC9z
cGFyY2xpbnV4L2xpc3QvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51
eC9rZXJuZWwvZ2l0L2RhdmVtL3NwYXJjLmdpdAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3Jn
L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kYXZlbS9zcGFyYy1uZXh0LmdpdAorRjoJYXJjaC9z
cGFyYy8KK0Y6CWRyaXZlcnMvc2J1cy8KKworU1BBUkMgU0VSSUFMIERSSVZFUlMKK006CSJEYXZp
ZCBTLiBNaWxsZXIiIDxkYXZlbUBkYXZlbWxvZnQubmV0PgorTDoJc3BhcmNsaW51eEB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvZGF2ZW0vc3BhcmMuZ2l0CitUOglnaXQgZ2l0Oi8vZ2l0Lmtl
cm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2RhdmVtL3NwYXJjLW5leHQuZ2l0CitG
Oglkcml2ZXJzL3R0eS9zZXJpYWwvc3VuY29yZS5jCitGOglkcml2ZXJzL3R0eS9zZXJpYWwvc3Vu
aHYuYworRjoJZHJpdmVycy90dHkvc2VyaWFsL3N1bnNhYi5jCitGOglkcml2ZXJzL3R0eS9zZXJp
YWwvc3Vuc2FiLmgKK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9zdW5zdS5jCitGOglkcml2ZXJzL3R0
eS9zZXJpYWwvc3Vuemlsb2cuYworRjoJZHJpdmVycy90dHkvc2VyaWFsL3N1bnppbG9nLmgKK0Y6
CWRyaXZlcnMvdHR5L3ZjYy5jCitGOglpbmNsdWRlL2xpbnV4L3N1bnNlcmlhbGNvcmUuaAorCitT
UEFSU0UgQ0hFQ0tFUgorTToJIkx1YyBWYW4gT29zdGVucnljayIgPGx1Yy52YW5vb3N0ZW5yeWNr
QGdtYWlsLmNvbT4KK0w6CWxpbnV4LXNwYXJzZUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK1c6CWh0dHBzOi8vc3BhcnNlLmRvY3Mua2VybmVsLm9yZy8KK1E6CWh0dHBzOi8vcGF0Y2h3
b3JrLmtlcm5lbC5vcmcvcHJvamVjdC9saW51eC1zcGFyc2UvbGlzdC8KK0I6CWh0dHBzOi8vYnVn
emlsbGEua2VybmVsLm9yZy9lbnRlcl9idWcuY2dpP2NvbXBvbmVudD1TcGFyc2UmcHJvZHVjdD1U
b29scworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZGV2ZWwvc3BhcnNlL3Nw
YXJzZS5naXQKK0Y6CWluY2x1ZGUvbGludXgvY29tcGlsZXIuaAorCitTUEVBS1VQIENPTlNPTEUg
U1BFRUNIIERSSVZFUgorTToJV2lsbGlhbSBIdWJicyA8dy5kLmh1YmJzQGdtYWlsLmNvbT4KK006
CUNocmlzIEJyYW5ub24gPGNocmlzQHRoZS1icmFubm9ucy5jb20+CitNOglLaXJrIFJlaXNlciA8
a2lya0ByZWlzZXJzLmNhPgorTToJU2FtdWVsIFRoaWJhdWx0IDxzYW11ZWwudGhpYmF1bHRAZW5z
LWx5b24ub3JnPgorTDoJc3BlYWt1cEBsaW51eC1zcGVha3VwLm9yZworUzoJT2RkIEZpeGVzCitX
OglodHRwOi8vd3d3LmxpbnV4LXNwZWFrdXAub3JnLworVzoJaHR0cHM6Ly9naXRodWIuY29tL2xp
bnV4LXNwZWFrdXAvc3BlYWt1cAorQjoJaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXNwZWFrdXAv
c3BlYWt1cC9pc3N1ZXMKK0Y6CWRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwLworCitTUEVB
UiBQTEFURk9STS9DTE9DSy9QSU5DVFJMIFNVUFBPUlQKK006CVZpcmVzaCBLdW1hciA8dmlyZXNo
a0BrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnICht
b2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CXNvY0BsaXN0cy5saW51eC5kZXYKK1M6
CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cuc3QuY29tL3NwZWFyCitGOglhcmNoL2FybS9ib290
L2R0cy9zdC9zcGVhcioKK0Y6CWFyY2gvYXJtL21hY2gtc3BlYXIvCitGOglkcml2ZXJzL2Nsay9z
cGVhci8KK0Y6CWRyaXZlcnMvcGluY3RybC9zcGVhci8KKworU1BJIE5PUiBTVUJTWVNURU0KK006
CVR1ZG9yIEFtYmFydXMgPHR1ZG9yLmFtYmFydXNAbGluYXJvLm9yZz4KK006CVByYXR5dXNoIFlh
ZGF2IDxwcmF0eXVzaEBrZXJuZWwub3JnPgorTToJTWljaGFlbCBXYWxsZSA8bXdhbGxlQGtlcm5l
bC5vcmc+CitMOglsaW51eC1tdGRAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAor
VzoJaHR0cDovL3d3dy5saW51eC1tdGQuaW5mcmFkZWFkLm9yZy8KK1E6CWh0dHA6Ly9wYXRjaHdv
cmsub3psYWJzLm9yZy9wcm9qZWN0L2xpbnV4LW10ZC9saXN0LworQzoJaXJjOi8vaXJjLm9mdGMu
bmV0L210ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVs
L2dpdC9tdGQvbGludXguZ2l0IHNwaS1ub3IvbmV4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL210ZC9qZWRlYyxzcGktbm9yLnlhbWwKK0Y6CWRyaXZlcnMvbXRkL3NwaS1u
b3IvCitGOglpbmNsdWRlL2xpbnV4L210ZC9zcGktbm9yLmgKKworU1BJIE9GRkxPQUQKK1I6CURh
dmlkIExlY2huZXIgPGRsZWNobmVyQGJheWxpYnJlLmNvbT4KK0Y6CWRyaXZlcnMvc3BpL3NwaS1v
ZmZsb2FkLXRyaWdnZXItcHdtLmMKK0Y6CWRyaXZlcnMvc3BpL3NwaS1vZmZsb2FkLmMKK0Y6CWlu
Y2x1ZGUvbGludXgvc3BpL29mZmxvYWQvCitLOglzcGlfb2ZmbG9hZAorCitTUEkgU1VCU1lTVEVN
CitNOglNYXJrIEJyb3duIDxicm9vbmllQGtlcm5lbC5vcmc+CitMOglsaW51eC1zcGlAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitROglodHRwOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcv
cHJvamVjdC9zcGktZGV2ZWwtZ2VuZXJhbC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwu
b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9icm9vbmllL3NwaS5naXQKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvCitGOglEb2N1bWVudGF0aW9uL3NwaS8KK0Y6
CWRyaXZlcnMvc3BpLworRjoJaW5jbHVkZS9saW51eC9zcGkvCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvc3BpLworRjoJdG9vbHMvc3BpLworCitTUE1JIFNVQlNZU1RFTQorTToJU3RlcGhlbiBCb3lk
IDxzYm95ZEBrZXJuZWwub3JnPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy
bmVsL2dpdC9zYm95ZC9zcG1pLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3NwbWkvCitGOglkcml2ZXJzL3NwbWkvCitGOglpbmNsdWRlL2R0LWJpbmRpbmdzL3NwbWkv
c3BtaS5oCitGOglpbmNsdWRlL2xpbnV4L3NwbWkuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMv
c3BtaS5oCisKK1NQVSBGSUxFIFNZU1RFTQorTDoJbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5v
cmcKK1M6CU9ycGhhbgorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zcHVmcy9zcHVmcy5y
c3QKK0Y6CWFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy8KKworU1FVQVNIRlMgRklM
RSBTWVNURU0KK006CVBoaWxsaXAgTG91Z2hlciA8cGhpbGxpcEBzcXVhc2hmcy5vcmcudWs+CitM
OglzcXVhc2hmcy1kZXZlbEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgKHN1YnNjcmliZXJzLW9ubHkp
CitTOglNYWludGFpbmVkCitXOglodHRwOi8vc3F1YXNoZnMub3JnLnVrCitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BrbC9zcXVhc2hmcy1uZXh0
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zcXVhc2hmcy5yc3QKK0Y6CWZzL3Nx
dWFzaGZzLworCitTUk0gKEFscGhhKSBlbnZpcm9ubWVudCBhY2Nlc3MKK006CUphbi1CZW5lZGlj
dCBHbGF3IDxqYmdsYXdAbHVnLW93bC5kZT4KK1M6CU1haW50YWluZWQKK0Y6CWFyY2gvYWxwaGEv
a2VybmVsL3NybV9lbnYuYworCitTVCBMU002RFN4IElNVSBJSU8gRFJJVkVSCitNOglMb3Jlbnpv
IEJpYW5jb25pIDxsb3JlbnpvQGtlcm5lbC5vcmc+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwOi8vd3d3LnN0LmNvbS8KK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9paW8vaW11L3N0LGxzbTZkc3gueWFtbAorRjoJZHJpdmVy
cy9paW8vaW11L3N0X2xzbTZkc3gvCisKK1NUIE1JUElEMDIgQ1NJLTIgVE8gUEFSQUxMRUwgQlJJ
REdFIERSSVZFUgorTToJQmVuamFtaW4gTXVnbmllciA8YmVuamFtaW4ubXVnbmllckBmb3NzLnN0
LmNvbT4KK006CVN5bHZhaW4gUGV0aW5vdCA8c3lsdmFpbi5wZXRpbm90QGZvc3Muc3QuY29tPgor
TDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0
Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvbWVkaWEvaTJjL3N0LHN0LW1pcGlkMDIueWFtbAorRjoJZHJpdmVycy9tZWRpYS9pMmMv
c3QtbWlwaWQwMi5jCisKK1NUIFNUQzMxMTcgRlVFTCBHQVVHRSBEUklWRVIKK006CUhhcmRldnNp
bmggUGFsYW5peWEgPGhhcmRldnNpbmgucGFsYW5peWFAc2lsaWNvbnNpZ25hbHMuaW8+CitNOglC
aGF2aW4gU2hhcm1hIDxiaGF2aW4uc2hhcm1hQHNpbGljb25zaWduYWxzLmlvPgorTDoJbGludXgt
cG1Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvcG93ZXIvc3VwcGx5L3N0LHN0YzMxMTcueWFtbAorRjoJZHJpdmVycy9w
b3dlci9zdXBwbHkvc3RjMzExN19mdWVsX2dhdWdlLmMKKworU1QgU1RNMzIgRklSRVdBTEwKK006
CUdhdGllbiBDaGV2YWxsaWVyIDxnYXRpZW4uY2hldmFsbGllckBmb3NzLnN0LmNvbT4KK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvYnVzL3N0bTMyX2V0enBjLmMKK0Y6CWRyaXZlcnMvYnVzL3N0
bTMyX2ZpcmV3YWxsLmMKK0Y6CWRyaXZlcnMvYnVzL3N0bTMyX3JpZnNjLmMKKworU1QgU1RNMzIg
STJDL1NNQlVTIERSSVZFUgorTToJUGllcnJlLVl2ZXMgTU9SRFJFVCA8cGllcnJlLXl2ZXMubW9y
ZHJldEBmb3NzLnN0LmNvbT4KK006CUFsYWluIFZvbG1hdCA8YWxhaW4udm9sbWF0QGZvc3Muc3Qu
Y29tPgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJp
dmVycy9pMmMvYnVzc2VzL2kyYy1zdG0zMioKKworU1QgU1RNMzIgU1BJIERSSVZFUgorTToJQWxh
aW4gVm9sbWF0IDxhbGFpbi52b2xtYXRAZm9zcy5zdC5jb20+CitMOglsaW51eC1zcGlAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3NwaS9zcGktc3RtMzIuYworCitT
VCBTVFBEREM2MCBEUklWRVIKK006CURhbmllbCBOaWxzc29uIDxkYW5pZWwubmlsc3NvbkBmbGV4
LmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9od21vbi9zdHBkZGM2MC5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vcG1idXMv
c3RwZGRjNjAuYworCitTVCBWRDU1RzEgRFJJVkVSCitNOglCZW5qYW1pbiBNdWduaWVyIDxiZW5q
YW1pbi5tdWduaWVyQGZvc3Muc3QuY29tPgorTToJU3lsdmFpbiBQZXRpbm90IDxzeWx2YWluLnBl
dGlub3RAZm9zcy5zdC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMv
c3QsdmQ1NWcxLnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVnMS5jCisKK1NUIFZENTZH
MyBJTUFHRSBTRU5TT1IgRFJJVkVSCitNOglCZW5qYW1pbiBNdWduaWVyIDxiZW5qYW1pbi5tdWdu
aWVyQGZvc3Muc3QuY29tPgorTToJU3lsdmFpbiBQZXRpbm90IDxzeWx2YWluLnBldGlub3RAZm9z
cy5zdC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS9pMmMvc3QsdmQ1Nmcz
LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL3ZkNTZnMy5jCisKK1NUIFZHWFk2MSBEUklWRVIK
K006CUJlbmphbWluIE11Z25pZXIgPGJlbmphbWluLm11Z25pZXJAZm9zcy5zdC5jb20+CitNOglT
eWx2YWluIFBldGlub3QgPHN5bHZhaW4ucGV0aW5vdEBmb3NzLnN0LmNvbT4KK0w6CWxpbnV4LW1l
ZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYu
b3JnL21lZGlhLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlh
L2kyYy9zdCxzdC12Z3h5NjEueWFtbAorRjoJRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21l
ZGlhL2RyaXZlcnMvdmd4eTYxLnJzdAorRjoJZHJpdmVycy9tZWRpYS9pMmMvdmd4eTYxLmMKKwor
U1QgVkw1M0wwWCBUb0YgUkFOR0VSKEkyQykgSUlPIERSSVZFUgorTToJU29uZyBRaWFuZyA8c29u
Z3FpYW5nMTMwNDUyMUBnbWFpbC5jb20+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL3By
b3hpbWl0eS9zdCx2bDUzbDB4LnlhbWwKK0Y6CWRyaXZlcnMvaWlvL3Byb3hpbWl0eS92bDUzbDB4
LWkyYy5jCisKK1NUQUJMRSBCUkFOQ0gKK006CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxp
bnV4Zm91bmRhdGlvbi5vcmc+CitNOglTYXNoYSBMZXZpbiA8c2FzaGFsQGtlcm5lbC5vcmc+CitM
OglzdGFibGVAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24v
cHJvY2Vzcy9zdGFibGUta2VybmVsLXJ1bGVzLnJzdAorCitTVEFHSU5HIC0gQVRPTUlTUCBEUklW
RVIKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitNOglNYXVybyBDYXJ2
YWxobyBDaGVoYWIgPG1jaGVoYWJAa2VybmVsLm9yZz4KK1I6CVNha2FyaSBBaWx1cyA8c2FrYXJp
LmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9zdGFnaW5nL21lZGlhL2F0b21pc3AvCisKK1NUQUdJ
TkcgLSBJTkRVU1RSSUFMIElPCitNOglKb25hdGhhbiBDYW1lcm9uIDxqaWMyM0BrZXJuZWwub3Jn
PgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc3RhZ2luZy9paW8vCitGOglkcml2ZXJzL3N0YWdp
bmcvaWlvLworCitTVEFHSU5HIC0gTlZJRElBIENPTVBMSUFOVCBFTUJFRERFRCBDT05UUk9MTEVS
IElOVEVSRkFDRSAobnZlYykKK006CU1hcmMgRGlldHJpY2ggPG1hcnZpbjI0QGdteC5kZT4KK0w6
CWFjMTAwQGxpc3RzLmxhdW5jaHBhZC5uZXQgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJz
KQorTDoJbGludXgtdGVncmFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL3N0YWdpbmcvbnZlYy8KKworU1RBR0lORyAtIFNFUFM1MjUgTENEIENPTlRST0xMRVIgRFJJ
VkVSUworTToJTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+
CitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVy
cy9zdGFnaW5nL2ZidGZ0L2ZiX3NlcHM1MjUuYworCitTVEFHSU5HIC0gU0lMSUNPTiBNT1RJT04g
U003NTAgRlJBTUUgQlVGRkVSIERSSVZFUgorTToJU3VkaXAgTXVraGVyamVlIDxzdWRpcG0ubXVr
aGVyamVlQGdtYWlsLmNvbT4KK006CVRlZGR5IFdhbmcgPHRlZGR5LndhbmdAc2lsaWNvbm1vdGlv
bi5jb20+CitNOglTdWRpcCBNdWtoZXJqZWUgPHN1ZGlwLm11a2hlcmplZUBjb2RldGhpbmsuY28u
dWs+CitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRy
aXZlcnMvc3RhZ2luZy9zbTc1MGZiLworCitTVEFHSU5HIFNVQlNZU1RFTQorTToJR3JlZyBLcm9h
aC1IYXJ0bWFuIDxncmVna2hAbGludXhmb3VuZGF0aW9uLm9yZz4KK0w6CWxpbnV4LXN0YWdpbmdA
bGlzdHMubGludXguZGV2CitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9y
Zy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3JlZ2toL3N0YWdpbmcuZ2l0CitGOglkcml2ZXJz
L3N0YWdpbmcvCisKK1NUQU5EQUxPTkUgQ0FDSEUgQ09OVFJPTExFUiBEUklWRVJTCitNOglDb25v
ciBEb29sZXkgPGNvbm9yQGtlcm5lbC5vcmc+CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6
Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvY29ub3IvbGludXguZ2l0
LworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2NhY2hlLworRjoJZHJpdmVy
cy9jYWNoZQorCitTVEFSRklSRS9EVVJBTEFOIE5FVFdPUksgRFJJVkVSCitNOglJb24gQmFkdWxl
c2N1IDxpb251dEBiYWR1bGEub3JnPgorUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL25ldC9ldGhl
cm5ldC9hZGFwdGVjL3N0YXJmaXJlKgorCitTVEFSRklWRSBDQU1FUkEgU1VCU1lTVEVNIERSSVZF
UgorTToJSmFjayBaaHUgPGphY2suemh1QHN0YXJmaXZldGVjaC5jb20+CitNOglDaGFuZ2h1YW5n
IExpYW5nIDxjaGFuZ2h1YW5nLmxpYW5nQHN0YXJmaXZldGVjaC5jb20+CitMOglsaW51eC1tZWRp
YUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWRtaW4t
Z3VpZGUvbWVkaWEvc3RhcmZpdmVfY2Ftc3MucnN0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvbWVkaWEvc3RhcmZpdmUsamg3MTEwLWNhbXNzLnlhbWwKK0Y6CWRyaXZlcnMv
c3RhZ2luZy9tZWRpYS9zdGFyZml2ZS9jYW1zcworCitTVEFSRklWRSBDUllQVE8gRFJJVkVSCitN
OglKaWEgSmllIEhvIDxqaWFqaWUuaG9Ac3RhcmZpdmV0ZWNoLmNvbT4KK006CVdpbGxpYW0gUWl1
IDx3aWxsaWFtLnFpdUBzdGFyZml2ZXRlY2guY29tPgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY3J5cHRvL3N0YXJmaXZlKgorRjoJZHJpdmVycy9j
cnlwdG8vc3RhcmZpdmUvCisKK1NUQVJGSVZFIERFVklDRVRSRUVTCitNOglFbWlsIFJlbm5lciBC
ZXJ0aGluZyA8a2VybmVsQGVzbWlsLmRrPgorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9yaXNjdi9i
b290L2R0cy9zdGFyZml2ZS8KKworU1RBUkZJVkUgRFdNQUMgR0xVRSBMQVlFUgorTToJRW1pbCBS
ZW5uZXIgQmVydGhpbmcgPGtlcm5lbEBlc21pbC5kaz4KK006CU1pbmRhIENoZW4gPG1pbmRhLmNo
ZW5Ac3RhcmZpdmV0ZWNoLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9uZXQvc3RhcmZpdmUsamg3MTEwLWR3bWFjLnlhbWwKK0Y6CWRyaXZl
cnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXN0YXJmaXZlLmMKKworU1RBUkZJ
VkUgSkg3MTEwIERQSFkgUlggRFJJVkVSCitNOglKYWNrIFpodSA8amFjay56aHVAc3RhcmZpdmV0
ZWNoLmNvbT4KK006CUNoYW5naHVhbmcgTGlhbmcgPGNoYW5naHVhbmcubGlhbmdAc3RhcmZpdmV0
ZWNoLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3BoeS9zdGFyZml2ZSxqaDcxMTAtZHBoeS1yeC55YW1sCitGOglkcml2ZXJzL3BoeS9zdGFy
Zml2ZS9waHktamg3MTEwLWRwaHktcnguYworCitTVEFSRklWRSBKSDcxMTAgRFBIWSBUWCBEUklW
RVIKK006CUtlaXRoIFpoYW8gPGtlaXRoLnpoYW9Ac3RhcmZpdmV0ZWNoLmNvbT4KK1M6CVN1cHBv
cnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zdGFyZml2ZSxq
aDcxMTAtZHBoeS10eC55YW1sCitGOglkcml2ZXJzL3BoeS9zdGFyZml2ZS9waHktamg3MTEwLWRw
aHktdHguYworCitTVEFSRklWRSBKSDcxMTAgTU1DL1NEL1NESU8gRFJJVkVSCitNOglXaWxsaWFt
IFFpdSA8d2lsbGlhbS5xaXVAc3RhcmZpdmV0ZWNoLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21tYy9zdGFyZml2ZSoKK0Y6CWRyaXZlcnMv
bW1jL2hvc3QvZHdfbW1jLXN0YXJmaXZlLmMKKworU1RBUkZJVkUgSkg3MTEwIFBMTCBDTE9DSyBE
UklWRVIKK006CVhpbmd5dSBXdSA8eGluZ3l1Lnd1QHN0YXJmaXZldGVjaC5jb20+CitTOglTdXBw
b3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdGFyZml2
ZSxqaDcxMTAtcGxsLnlhbWwKK0Y6CWRyaXZlcnMvY2xrL3N0YXJmaXZlL2Nsay1zdGFyZml2ZS1q
aDcxMTAtcGxsLmMKKworU1RBUkZJVkUgSkg3MTEwIFBXTURBQyBEUklWRVIKK006CUhhbCBGZW5n
IDxoYWwuZmVuZ0BzdGFyZml2ZXRlY2guY29tPgorTToJWGluZ3l1IFd1IDx4aW5neXUud3VAc3Rh
cmZpdmV0ZWNoLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3NvdW5kL3N0YXJmaXZlLGpoNzExMC1wd21kYWMueWFtbAorRjoJc291bmQvc29j
L3N0YXJmaXZlL2poNzExMF9wd21kYWMuYworCitTVEFSRklWRSBKSDcxMTAgU1lTQ09OCitNOglX
aWxsaWFtIFFpdSA8d2lsbGlhbS5xaXVAc3RhcmZpdmV0ZWNoLmNvbT4KK006CVhpbmd5dSBXdSA8
eGluZ3l1Lnd1QHN0YXJmaXZldGVjaC5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2Mvc3RhcmZpdmUvc3RhcmZpdmUsamg3MTEwLXN5c2Nv
bi55YW1sCisKK1NUQVJGSVZFIEpINzExMCBURE0gRFJJVkVSCitNOglXYWxrZXIgQ2hlbiA8d2Fs
a2VyLmNoZW5Ac3RhcmZpdmV0ZWNoLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zdGFyZml2ZSxqaDcxMTAtdGRtLnlhbWwKK0Y6
CXNvdW5kL3NvYy9zdGFyZml2ZS9qaDcxMTBfdGRtLmMKKworU1RBUkZJVkUgSkg3MVgwIENMT0NL
IERSSVZFUlMKK006CUVtaWwgUmVubmVyIEJlcnRoaW5nIDxrZXJuZWxAZXNtaWwuZGs+CitNOglI
YWwgRmVuZyA8aGFsLmZlbmdAc3RhcmZpdmV0ZWNoLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9jbG9jay9zdGFyZml2ZSxqaDcxKi55YW1s
CitGOglkcml2ZXJzL2Nsay9zdGFyZml2ZS9jbGstc3RhcmZpdmUtamg3MSoKK0Y6CWluY2x1ZGUv
ZHQtYmluZGluZ3MvY2xvY2svc3RhcmZpdmU/amg3MSouaAorCitTVEFSRklWRSBKSDcxWDAgUElO
Q1RSTCBEUklWRVJTCitNOglFbWlsIFJlbm5lciBCZXJ0aGluZyA8a2VybmVsQGVzbWlsLmRrPgor
TToJSmlhbmxvbmcgSHVhbmcgPGppYW5sb25nLmh1YW5nQHN0YXJmaXZldGVjaC5jb20+CitNOglI
YWwgRmVuZyA8aGFsLmZlbmdAc3RhcmZpdmV0ZWNoLmNvbT4KK0w6CWxpbnV4LWdwaW9Admdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvcGluY3RybC9zdGFyZml2ZSxqaDcxKi55YW1sCitGOglkcml2ZXJzL3BpbmN0cmwvc3Rh
cmZpdmUvcGluY3RybC1zdGFyZml2ZS1qaDcxKgorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9waW5j
dHJsL3BpbmN0cmwtc3RhcmZpdmUtamg3MTAwLmgKK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvcGlu
Y3RybC9zdGFyZml2ZSxqaDcxMTAtcGluY3RybC5oCisKK1NUQVJGSVZFIEpINzFYMCBSRVNFVCBD
T05UUk9MTEVSIERSSVZFUlMKK006CUVtaWwgUmVubmVyIEJlcnRoaW5nIDxrZXJuZWxAZXNtaWwu
ZGs+CitNOglIYWwgRmVuZyA8aGFsLmZlbmdAc3RhcmZpdmV0ZWNoLmNvbT4KK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC9zdGFyZml2ZSxq
aDcxMDAtcmVzZXQueWFtbAorRjoJZHJpdmVycy9yZXNldC9zdGFyZml2ZS9yZXNldC1zdGFyZml2
ZS1qaDcxKgorRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9zdGFyZml2ZT9qaDcxKi5oCisK
K1NUQVJGSVZFIEpINzFYMCBVU0IgRFJJVkVSUworTToJTWluZGEgQ2hlbiA8bWluZGEuY2hlbkBz
dGFyZml2ZXRlY2guY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL3VzYi9zdGFyZml2ZSxqaDcxMTAtdXNiLnlhbWwKK0Y6CWRyaXZlcnMvdXNi
L2NkbnMzL2NkbnMzLXN0YXJmaXZlLmMKKworU1RBUkZJVkUgSkg3MVhYIFBNVSBDT05UUk9MTEVS
IERSSVZFUgorTToJV2Fsa2VyIENoZW4gPHdhbGtlci5jaGVuQHN0YXJmaXZldGVjaC5jb20+CitN
OglDaGFuZ2h1YW5nIExpYW5nIDxjaGFuZ2h1YW5nLmxpYW5nQHN0YXJmaXZldGVjaC5jb20+CitT
OglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlci9z
dGFyZml2ZSoKK0Y6CWRyaXZlcnMvcG1kb21haW4vc3RhcmZpdmUvCitGOglpbmNsdWRlL2R0LWJp
bmRpbmdzL3Bvd2VyL3N0YXJmaXZlLGpoNzExMC1wbXUuaAorCitTVEFSRklWRSBTT0MgRFJJVkVS
UworTToJQ29ub3IgRG9vbGV5IDxjb25vckBrZXJuZWwub3JnPgorUzoJTWFpbnRhaW5lZAorVDoJ
Z2l0IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Nvbm9y
L2xpbnV4LmdpdC8KK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb2Mvc3Rh
cmZpdmUvCisKK1NUQVJGSVZFIFNUQVJMSU5LIFBNVSBEUklWRVIKK006CUppIFNoZW5nIFRlb2gg
PGppc2hlbmcudGVvaEBzdGFyZml2ZXRlY2guY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9hZG1pbi1ndWlkZS9wZXJmL3N0YXJmaXZlX3N0YXJsaW5rX3BtdS5yc3QKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wZXJmL3N0YXJmaXZlLGpoODEwMC1zdGFy
bGluay1wbXUueWFtbAorRjoJZHJpdmVycy9wZXJmL3N0YXJmaXZlX3N0YXJsaW5rX3BtdS5jCisK
K1NUQVJGSVZFIFRSTkcgRFJJVkVSCitNOglKaWEgSmllIEhvIDxqaWFqaWUuaG9Ac3RhcmZpdmV0
ZWNoLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL3JuZy9zdGFyZml2ZSoKK0Y6CWRyaXZlcnMvY2hhci9od19yYW5kb20vamg3MTEwLXRybmcu
YworCitTVEFSRklWRSBXQVRDSERPRyBEUklWRVIKK006CVhpbmd5dSBXdSA8eGluZ3l1Lnd1QHN0
YXJmaXZldGVjaC5jb20+CitNOglaaXYgWHUgPHppdi54dUBzdGFyZml2ZXRlY2guY29tPgorUzoJ
U3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cv
c3RhcmZpdmUqCitGOglkcml2ZXJzL3dhdGNoZG9nL3N0YXJmaXZlLXdkdC5jCisKK1NUQVJGSVZF
IEpINzFYMCBQQ0lFIEFORCBVU0IgUEhZIERSSVZFUgorTToJTWluZGEgQ2hlbiA8bWluZGEuY2hl
bkBzdGFyZml2ZXRlY2guY29tPgorUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2Rldmlj
ZXRyZWUvYmluZGluZ3MvcGh5L3N0YXJmaXZlLGpoNzExMC1wY2llLXBoeS55YW1sCitGOglEb2N1
bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcGh5L3N0YXJmaXZlLGpoNzExMC11c2ItcGh5
LnlhbWwKK0Y6CWRyaXZlcnMvcGh5L3N0YXJmaXZlL3BoeS1qaDcxMTAtcGNpZS5jCitGOglkcml2
ZXJzL3BoeS9zdGFyZml2ZS9waHktamg3MTEwLXVzYi5jCisKK1NUQVJGSVZFIEpIODEwMCBFWFRF
Uk5BTCBJTlRFUlJVUFQgQ09OVFJPTExFUiBEUklWRVIKK006CUNoYW5naHVhbmcgTGlhbmcgPGNo
YW5naHVhbmcubGlhbmdAc3RhcmZpdmV0ZWNoLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3N0YXJmaXZl
LGpoODEwMC1pbnRjLnlhbWwKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtc3RhcmZpdmUtamg4MTAw
LWludGMuYworCitTVEFUSUMgQlJBTkNIL0NBTEwKK006CVBldGVyIFppamxzdHJhIDxwZXRlcnpA
aW5mcmFkZWFkLm9yZz4KK006CUpvc2ggUG9pbWJvZXVmIDxqcG9pbWJvZUBrZXJuZWwub3JnPgor
TToJSmFzb24gQmFyb24gPGpiYXJvbkBha2FtYWkuY29tPgorUjoJU3RldmVuIFJvc3RlZHQgPHJv
c3RlZHRAZ29vZG1pcy5vcmc+CitSOglBcmQgQmllc2hldXZlbCA8YXJkYkBrZXJuZWwub3JnPgor
UzoJU3VwcG9ydGVkCitGOglhcmNoLyovaW5jbHVkZS9hc20vanVtcF9sYWJlbCouaAorRjoJYXJj
aC8qL2luY2x1ZGUvYXNtL3N0YXRpY19jYWxsKi5oCitGOglhcmNoLyova2VybmVsL2p1bXBfbGFi
ZWwuYworRjoJYXJjaC8qL2tlcm5lbC9zdGF0aWNfY2FsbC5jCitGOglpbmNsdWRlL2xpbnV4L2p1
bXBfbGFiZWwqLmgKK0Y6CWluY2x1ZGUvbGludXgvc3RhdGljX2NhbGwqLmgKK0Y6CWtlcm5lbC9q
dW1wX2xhYmVsLmMKK0Y6CWtlcm5lbC9zdGF0aWNfY2FsbCouYworCitTVEkgQVVESU8gKEFTb0Mp
IERSSVZFUlMKK006CUFybmF1ZCBQb3VsaXF1ZW4gPGFybmF1ZC5wb3VsaXF1ZW5AZm9zcy5zdC5j
b20+CitMOglsaW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC9zdCxzdGktYXNvYy1jYXJkLnR4
dAorRjoJc291bmQvc29jL3N0aS8KKworU1RJIENFQyBEUklWRVIKK006CUFsYWluIFZvbG1hdCA8
YWxhaW4udm9sbWF0QGZvc3Muc3QuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2NlYy9zdCxzdGloLWNlYy55YW1sCitGOglkcml2
ZXJzL21lZGlhL2NlYy9wbGF0Zm9ybS9zdGkvCisKK1NUSzExNjAgVVNCIFZJREVPIENBUFRVUkUg
RFJJVkVSCitNOglFemVxdWllbCBHYXJjaWEgPGV6ZXF1aWVsQHZhbmd1YXJkaWFzdXIuY29tLmFy
PgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQg
Z2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3VzYi9zdGsxMTYw
LworCitTVE0zMiBBVURJTyAoQVNvQykgRFJJVkVSUworTToJT2xpdmllciBNb3lzYW4gPG9saXZp
ZXIubW95c2FuQGZvc3Muc3QuY29tPgorTToJQXJuYXVkIFBvdWxpcXVlbiA8YXJuYXVkLnBvdWxp
cXVlbkBmb3NzLnN0LmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9hZGMvc3Qs
c3RtMzItZGZzZG0tYWRjLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9zb3VuZC9zdCxzdG0zMi0qLnlhbWwKK0Y6CXNvdW5kL3NvYy9zdG0vCisKK1NUTTMyIERNQSBE
UklWRVJTCitNOglBbcOpbGllIERlbGF1bmF5IDxhbWVsaWUuZGVsYXVuYXlAZm9zcy5zdC5jb20+
CitMOglkbWFlbmdpbmVAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1zdG0zMkBzdC1tZC1tYWls
bWFuLnN0b3JtcmVwbHkuY29tIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1h
aW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYXJjaC9hcm0vc3RtMzIvc3RtMzItZG1hLW1kbWEt
Y2hhaW5pbmcucnN0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3N0
bTMyLworRjoJZHJpdmVycy9kbWEvc3RtMzIvCisKK1NUTTMyIFRJTUVSL0xQVElNRVIgRFJJVkVS
UworTToJRmFicmljZSBHYXNuaWVyIDxmYWJyaWNlLmdhc25pZXJAZm9zcy5zdC5jb20+CitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nLyp0aW1lci1zdG0zMgorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzLyovKnN0bTMyLSp0aW1lcioKK0Y6CWRy
aXZlcnMvKi9zdG0zMi0qdGltZXIqCitGOglkcml2ZXJzL3B3bS9wd20tc3RtMzIqCitGOglpbmNs
dWRlL2xpbnV4Lyovc3RtMzItKnRpbSoKKworU1RNMzJNUDI1IFVTQjMvUENJRSBDT01CT1BIWSBE
UklWRVIKK006CUNocmlzdGlhbiBCcnVlbCA8Y2hyaXN0aWFuLmJydWVsQGZvc3Muc3QuY29tPgor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9z
dCxzdG0zMm1wMjUtY29tYm9waHkueWFtbAorRjoJZHJpdmVycy9waHkvc3QvcGh5LXN0bTMyLWNv
bWJvcGh5LmMKKworU1RNTUFDIEVUSEVSTkVUIERSSVZFUgorTDoJbmV0ZGV2QHZnZXIua2VybmVs
Lm9yZworUzoJT3JwaGFuCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZl
cnMvZXRoZXJuZXQvc3RtaWNyby8KK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3Rt
bWFjLworCitTVU4gSEFQUFkgTUVBTCBFVEhFUk5FVCBEUklWRVIKK006CVNlYW4gQW5kZXJzb24g
PHNlYW5nYTJAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJu
ZXQvc3VuL3N1bmhtZS4qCisKK1NVTjMvM1gKK006CVNhbSBDcmVhc2V5IDxzYW1teUBzYW1teS5u
ZXQ+CitTOglNYWludGFpbmVkCitXOglodHRwOi8vc2FtbXkubmV0L3N1bjMvCitGOglhcmNoL202
OGsvaW5jbHVkZS9hc20vc3VuMyoKK0Y6CWFyY2gvbTY4ay9rZXJuZWwvKnN1bjMqCitGOglhcmNo
L202OGsvc3VuMyovCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9pODI1eHgvc3VuMyoKKworU1VO
NEkgTE9XIFJFUyBBREMgQVRUQUNIRUQgVEFCTEVUIEtFWVMgRFJJVkVSCitNOglIYW5zIGRlIEdv
ZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaW5w
dXQvYWxsd2lubmVyLHN1bjRpLWExMC1scmFkYy1rZXlzLnlhbWwKK0Y6CWRyaXZlcnMvaW5wdXQv
a2V5Ym9hcmQvc3VuNGktbHJhZGMta2V5cy5jCisKK1NVTlBMVVMgRVRIRVJORVQgRFJJVkVSCitN
OglXZWxscyBMdSA8d2VsbHNsdXR3QGdtYWlsLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vc3VucGx1cy5hdGxhc3NpYW4ubmV0L3dpa2kv
c3BhY2VzL2RvYy9vdmVydmlldworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L25ldC9zdW5wbHVzLHNwNzAyMS1lbWFjLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3N1
bnBsdXMvCisKK1NVTlBMVVMgTU1DIERSSVZFUgorTToJVG9ueSBIdWFuZyA8dG9ueWh1YW5nLnN1
bnBsdXNAZ21haWwuY29tPgorTToJTGktaGFvIEt1byA8bGhqZWZmOTExQGdtYWlsLmNvbT4KK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tbWMvc3Vu
cGx1cyxtbWMueWFtbAorRjoJZHJpdmVycy9tbWMvaG9zdC9zdW5wbHVzLW1tYy5jCisKK1NVTlBM
VVMgT0NPVFAgRFJJVkVSCitNOglWaW5jZW50IFNoaWggPHZpbmNlbnQuc3VucGx1c0BnbWFpbC5j
b20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
bnZtZW0vc3VucGx1cyxzcDcwMjEtb2NvdHAueWFtbAorRjoJZHJpdmVycy9udm1lbS9zdW5wbHVz
LW9jb3RwLmMKKworU1VOUExVUyBQV00gRFJJVkVSCitNOglIYW1tZXIgSHNpZWggPGhhbW1lcmgw
MzE0QGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9wd20vc3VucGx1cyxzcDcwMjEtcHdtLnlhbWwKK0Y6CWRyaXZlcnMvcHdtL3B3
bS1zdW5wbHVzLmMKKworU1VOUExVUyBSVEMgRFJJVkVSCitNOglWaW5jZW50IFNoaWggPHZpbmNl
bnQuc3VucGx1c0BnbWFpbC5jb20+CitMOglsaW51eC1ydGNAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcnRjL3N1bnBs
dXMsc3A3MDIxLXJ0Yy55YW1sCitGOglkcml2ZXJzL3J0Yy9ydGMtc3VucGx1cy5jCisKK1NVTlBM
VVMgU1BJIENPTlRST0xMRVIgSU5URVJGQUNFIERSSVZFUgorTToJTGktaGFvIEt1byA8bGhqZWZm
OTExQGdtYWlsLmNvbT4KK0w6CWxpbnV4LXNwaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLXN1bnBsdXMt
c3A3MDIxLnlhbWwKK0Y6CWRyaXZlcnMvc3BpL3NwaS1zdW5wbHVzLXNwNzAyMS5jCisKK1NVTlBM
VVMgVUFSVCBEUklWRVIKK006CUhhbW1lciBIc2llaCA8aGFtbWVyaDAzMTRAZ21haWwuY29tPgor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Nlcmlh
bC9zdW5wbHVzLHNwNzAyMS11YXJ0LnlhbWwKK0Y6CWRyaXZlcnMvdHR5L3NlcmlhbC9zdW5wbHVz
LXVhcnQuYworCitTVU5QTFVTIFVTQjIgUEhZIERSSVZFUgorTToJVmluY2VudCBTaGloIDx2aW5j
ZW50LnN1bnBsdXNAZ21haWwuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9zdW5w
bHVzLHNwNzAyMS11c2IyLXBoeS55YW1sCitGOglkcml2ZXJzL3BoeS9zdW5wbHVzL0tjb25maWcK
K0Y6CWRyaXZlcnMvcGh5L3N1bnBsdXMvTWFrZWZpbGUKK0Y6CWRyaXZlcnMvcGh5L3N1bnBsdXMv
cGh5LXN1bnBsdXMtdXNiMi5jCisKK1NVTlBMVVMgV0FUQ0hET0cgRFJJVkVSCitNOglYaWFudGFv
IEh1IDx4dC5odUBjcXBsdXMxLmNvbT4KK0w6CWxpbnV4LXdhdGNoZG9nQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3dh
dGNoZG9nL3N1bnBsdXMsc3A3MDIxLXdkdC55YW1sCitGOglkcml2ZXJzL3dhdGNoZG9nL3N1bnBs
dXNfd2R0LmMKKworU1VQRVJICitNOglZb3NoaW5vcmkgU2F0byA8eXNhdG9AdXNlcnMuc291cmNl
Zm9yZ2UuanA+CitNOglSaWNoIEZlbGtlciA8ZGFsaWFzQGxpYmMub3JnPgorTToJSm9obiBQYXVs
IEFkcmlhbiBHbGF1Yml0eiA8Z2xhdWJpdHpAcGh5c2lrLmZ1LWJlcmxpbi5kZT4KK0w6CWxpbnV4
LXNoQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cDovL3BhdGNod29yay5r
ZXJuZWwub3JnL3Byb2plY3QvbGludXgtc2gvbGlzdC8KK0Y6CURvY3VtZW50YXRpb24vYXJjaC9z
aC8KK0Y6CWFyY2gvc2gvCitGOglkcml2ZXJzL3NoLworCitTVVNQRU5EIFRPIFJBTQorTToJIlJh
ZmFlbCBKLiBXeXNvY2tpIiA8cmFmYWVsQGtlcm5lbC5vcmc+CitNOglMZW4gQnJvd24gPGxlbi5i
cm93bkBpbnRlbC5jb20+CitNOglQYXZlbCBNYWNoZWsgPHBhdmVsQGtlcm5lbC5vcmc+CitMOgls
aW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorQjoJaHR0cHM6Ly9idWd6aWxs
YS5rZXJuZWwub3JnCitGOglEb2N1bWVudGF0aW9uL3Bvd2VyLworRjoJYXJjaC94ODYva2VybmVs
L2FjcGkvc2xlZXAqCitGOglhcmNoL3g4Ni9rZXJuZWwvYWNwaS93YWtldXAqCitGOglkcml2ZXJz
L2Jhc2UvcG93ZXIvCitGOglpbmNsdWRlL2xpbnV4L2ZyZWV6ZXIuaAorRjoJaW5jbHVkZS9saW51
eC9wbS5oCitGOglpbmNsdWRlL2xpbnV4L3N1c3BlbmQuaAorRjoJa2VybmVsL3Bvd2VyLworCitT
VkdBIEhBTkRMSU5HCitNOglNYXJ0aW4gTWFyZXMgPG1qQHVjdy5jej4KK0w6CWxpbnV4LXZpZGVv
QGF0cmV5Lmthcmxpbi5tZmYuY3VuaS5jegorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9hZG1pbi1ndWlkZS9zdmdhLnJzdAorRjoJYXJjaC94ODYvYm9vdC92aWRlbyoKKworU1dJVENI
REVWCitNOglKaXJpIFBpcmtvIDxqaXJpQHJlc251bGxpLnVzPgorTToJSXZhbiBWZWNlcmEgPGl2
ZWNlcmFAcmVkaGF0LmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJaW5jbHVkZS9uZXQvc3dpdGNoZGV2LmgKK0Y6CW5ldC9zd2l0Y2hkZXYvCisKK1NZODEw
NkEgUkVHVUxBVE9SIERSSVZFUgorTToJSWNlbm93eSBaaGVuZyA8aWNlbm93eUBhb3NjLmlvPgor
UzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3Vs
YXRvci9zaWxlcmd5LHN5ODEwNmEueWFtbAorRjoJZHJpdmVycy9yZWd1bGF0b3Ivc3k4MTA2YS1y
ZWd1bGF0b3IuYworCitTWU5DIEZJTEUgRlJBTUVXT1JLCitNOglTdW1pdCBTZW13YWwgPHN1bWl0
LnNlbXdhbEBsaW5hcm8ub3JnPgorUjoJR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvQHBhZG92YW4u
b3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitMOglkcmktZGV2ZWxAbGlzdHMu
ZnJlZWRlc2t0b3Aub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgaHR0cHM6Ly9naXRsYWIuZnJl
ZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CURvY3VtZW50YXRpb24vZHJpdmVy
LWFwaS9zeW5jX2ZpbGUucnN0CitGOglkcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlKgorRjoJZHJp
dmVycy9kbWEtYnVmL3N3X3N5bmMuYworRjoJZHJpdmVycy9kbWEtYnVmL3N5bmNfKgorRjoJaW5j
bHVkZS9saW51eC9zeW5jX2ZpbGUuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3N5bmNfZmlsZS5o
CisKK1NZTk9QU1lTIEFSQyBBUkNISVRFQ1RVUkUKK006CVZpbmVldCBHdXB0YSA8dmd1cHRhQGtl
cm5lbC5vcmc+CitMOglsaW51eC1zbnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQub3JnCitTOglTdXBw
b3J0ZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9n
aXQvdmd1cHRhL2FyYy5naXQKK0Y6CURvY3VtZW50YXRpb24vYXJjaC9hcmMKK0Y6CURvY3VtZW50
YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcmMvKgorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3NucHMsYXJjKgorRjoJYXJjaC9hcmMv
CitGOglkcml2ZXJzL2Nsb2Nrc291cmNlL2FyY190aW1lci5jCitGOglkcml2ZXJzL3R0eS9zZXJp
YWwvYXJjX3VhcnQuYworCitTWU5PUFNZUyBBUkMgSFNESyBTRFAgcGxsIGNsb2NrIGRyaXZlcgor
TToJRXVnZW5peSBQYWx0c2V2IDxFdWdlbml5LlBhbHRzZXZAc3lub3BzeXMuY29tPgorUzoJU3Vw
cG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvY2xvY2svc25wcyxo
c2RrLXBsbC1jbG9jay50eHQKK0Y6CWRyaXZlcnMvY2xrL2Nsay1oc2RrLXBsbC5jCisKK1NZTk9Q
U1lTIEFSQyBTRFAgY2xvY2sgZHJpdmVyCitNOglFdWdlbml5IFBhbHRzZXYgPEV1Z2VuaXkuUGFs
dHNldkBzeW5vcHN5cy5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9jbG9jay9zbnBzLHBsbC1jbG9jay50eHQKK0Y6CWRyaXZlcnMvY2xrL2F4
czEweC8qCisKK1NZTk9QU1lTIEFSQyBTRFAgcGxhdGZvcm0gc3VwcG9ydAorTToJQWxleGV5IEJy
b2RraW4gPGFicm9ka2luQHN5bm9wc3lzLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FyYy9heHMxMCoKK0Y6CWFyY2gvYXJjL2Jvb3QvZHRz
L2F4KgorRjoJYXJjaC9hcmMvcGxhdC1heHMxMHgKKworU1lOT1BTWVMgQVhTMTB4IFJFU0VUIENP
TlRST0xMRVIgRFJJVkVSCitNOglFdWdlbml5IFBhbHRzZXYgPEV1Z2VuaXkuUGFsdHNldkBzeW5v
cHN5cy5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9yZXNldC9zbnBzLGF4czEweC1yZXNldC55YW1sCitGOglkcml2ZXJzL3Jlc2V0L3Jlc2V0
LWF4czEweC5jCisKK1NZTk9QU1lTIENSRUcgR1BJTyBEUklWRVIKK006CUV1Z2VuaXkgUGFsdHNl
diA8RXVnZW5peS5QYWx0c2V2QHN5bm9wc3lzLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9ncGlvL3NucHMsY3JlZy1ncGlvLnR4dAorRjoJ
ZHJpdmVycy9ncGlvL2dwaW8tY3JlZy1zbnBzLmMKKworU1lOT1BTWVMgREVTSUdOV0FSRSA4MjUw
IFVBUlQgRFJJVkVSCitNOglJbHBvIErDpHJ2aW5lbiA8aWxwby5qYXJ2aW5lbkBsaW51eC5pbnRl
bC5jb20+CitSOglBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVs
LmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy90dHkvc2VyaWFsLzgyNTAvODI1MF9kdy5j
CitGOglkcml2ZXJzL3R0eS9zZXJpYWwvODI1MC84MjUwX2R3bGliLioKK0Y6CWRyaXZlcnMvdHR5
L3NlcmlhbC84MjUwLzgyNTBfbHBzcy5jCisKK1NZTk9QU1lTIERFU0lHTldBUkUgQVBCIEdQSU8g
RFJJVkVSCitNOglIb2FuIFRyYW4gPGhvYW5Ab3MuYW1wZXJlY29tcHV0aW5nLmNvbT4KK0w6CWxp
bnV4LWdwaW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9zbnBzLGR3LWFwYi1ncGlvLnlhbWwKK0Y6CWRyaXZl
cnMvZ3Bpby9ncGlvLWR3YXBiLmMKKworU1lOT1BTWVMgREVTSUdOV0FSRSBBWEkgRE1BQyBEUklW
RVIKK006CUV1Z2VuaXkgUGFsdHNldiA8RXVnZW5peS5QYWx0c2V2QHN5bm9wc3lzLmNvbT4KK1M6
CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvc25w
cyxkdy1heGktZG1hYy55YW1sCitGOglkcml2ZXJzL2RtYS9kdy1heGktZG1hYy8KKworU1lOT1BT
WVMgREVTSUdOV0FSRSBETUFDIERSSVZFUgorTToJVmlyZXNoIEt1bWFyIDx2aXJlc2hrQGtlcm5l
bC5vcmc+CitSOglBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtvQGxpbnV4LmludGVs
LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9kbWEvcmVuZXNhcyxyem4xLWRtYW11eC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRy
ZWUvYmluZGluZ3MvZG1hL3NucHMsZG1hLXNwZWFyMTM0MC55YW1sCitGOglkcml2ZXJzL2RtYS9k
dy8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvZG1hL2R3LWRtYWMuaAorRjoJaW5jbHVkZS9saW51
eC9kbWEvZHcuaAorRjoJaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2RtYS1kdy5oCisKK1NZ
Tk9QU1lTIERFU0lHTldBUkUgRU5URVJQUklTRSBFVEhFUk5FVCBEUklWRVIKK006CUpvc2UgQWJy
ZXUgPEpvc2UuQWJyZXVAc3lub3BzeXMuY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMvCisKK1NZTk9Q
U1lTIERFU0lHTldBUkUgRVRIRVJORVQgWFBDUyBEUklWRVIKK0w6CW5ldGRldkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMKK0Y6CWRyaXZl
cnMvbmV0L3Bjcy9wY3MteHBjcy5oCitGOglpbmNsdWRlL2xpbnV4L3Bjcy9wY3MteHBjcy5oCisK
K1NZTk9QU1lTIERFU0lHTldBUkUgSERNSSBSWCBDT05UUk9MTEVSIERSSVZFUgorTToJU2hyZWV5
YSBQYXRlbCA8c2hyZWV5YS5wYXRlbEBjb2xsYWJvcmEuY29tPgorTDoJbGludXgtbWVkaWFAdmdl
ci5rZXJuZWwub3JnCitMOglrZXJuZWxAY29sbGFib3JhLmNvbQorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3NucHMsZHctaGRtaS1yeC55
YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3N5bm9wc3lzL2hkbWlyeC8qCisKK1NZTk9Q
U1lTIERFU0lHTldBUkUgSTJDIERSSVZFUgorTToJSmFya2tvIE5pa3VsYSA8amFya2tvLm5pa3Vs
YUBsaW51eC5pbnRlbC5jb20+CitSOglBbmR5IFNoZXZjaGVua28gPGFuZHJpeS5zaGV2Y2hlbmtv
QGxpbnV4LmludGVsLmNvbT4KK1I6CU1pa2EgV2VzdGVyYmVyZyA8bWlrYS53ZXN0ZXJiZXJnQGxp
bnV4LmludGVsLmNvbT4KK1I6CUphbiBEYWJyb3MgPGpzZEBzZW1paGFsZi5jb20+CitMOglsaW51
eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nl
cy9pMmMtZGVzaWdud2FyZS0qCisKK1NZTk9QU1lTIERFU0lHTldBUkUgSTJDIERSSVZFUiAtIEFN
RElTUAorTToJTmlydWpvZ2kgUHJhdGFwIDxwcmF0YXAubmlydWpvZ2lAYW1kLmNvbT4KK006CUJp
biBEdSA8YmluLmR1QGFtZC5jb20+CitMOglsaW51eC1pMmNAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUtYW1kaXNwLmMK
KworU1lOT1BTWVMgREVTSUdOV0FSRSBNTUMvU0QvU0RJTyBEUklWRVIKK006CUphZWhvb24gQ2h1
bmcgPGpoODAuY2h1bmdAc2Ftc3VuZy5jb20+CitMOglsaW51eC1tbWNAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21tYy9ob3N0L2R3X21tYyoKKworU1lOT1BTWVMg
REVTSUdOV0FSRSBQQ0lFIFBNVSBEUklWRVIKK006CVNodWFpIFh1ZSA8eHVlc2h1YWlAbGludXgu
YWxpYmFiYS5jb20+CitNOglKaW5nIFpoYW5nIDxyZW55dS56akBsaW51eC5hbGliYWJhLmNvbT4K
K1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9wZXJmL2R3Y19wY2ll
X3BtdS5yc3QKK0Y6CWRyaXZlcnMvcGVyZi9kd2NfcGNpZV9wbXUuYworCitTWU5PUFNZUyBIU0RL
IFJFU0VUIENPTlRST0xMRVIgRFJJVkVSCitNOglFdWdlbml5IFBhbHRzZXYgPEV1Z2VuaXkuUGFs
dHNldkBzeW5vcHN5cy5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9yZXNldC9zbnBzLGhzZGstcmVzZXQudHh0CitGOglkcml2ZXJzL3Jlc2V0
L3Jlc2V0LWhzZGsuYworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy9yZXNldC9zbnBzLGhzZGstcmVz
ZXQuaAorCitTWU5PUFNZUyBTREhDSSBDT01QTElBTlQgRFdDIE1TSEMgRFJJVkVSCitNOglQcmFi
dSBUaGFuZ2FtdXRodSA8cHJhYnUudEBzeW5vcHN5cy5jb20+CitNOglNYW5qdW5hdGggTSBCIDxt
YW5qdW1iQHN5bm9wc3lzLmNvbT4KK0w6CWxpbnV4LW1tY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvbW1jL2hvc3Qvc2RoY2ktcGNpLWR3Yy1tc2hjLmMKKworU1lT
VEVNIENPTkZJR1VSQVRJT04gKFNZU0NPTikKK006CUxlZSBKb25lcyA8bGVlQGtlcm5lbC5vcmc+
CitNOglBcm5kIEJlcmdtYW5uIDxhcm5kQGFybmRiLmRlPgorUzoJU3VwcG9ydGVkCitUOglnaXQg
Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2xlZS9tZmQuZ2l0
CitGOglkcml2ZXJzL21mZC9zeXNjb24uYworCitTWVNURU0gQ09OVFJPTCAmIFBPV0VSL01BTkFH
RU1FTlQgSU5URVJGQUNFIChTQ1BJL1NDTUkpIE1lc3NhZ2UgUHJvdG9jb2wgZHJpdmVycworTToJ
U3VkZWVwIEhvbGxhIDxzdWRlZXAuaG9sbGFAYXJtLmNvbT4KK1I6CUNyaXN0aWFuIE1hcnVzc2kg
PGNyaXN0aWFuLm1hcnVzc2lAYXJtLmNvbT4KK0w6CWFybS1zY21pQHZnZXIua2VybmVsLm9yZwor
TDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5v
bi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9maXJtd2FyZS9hcm0sc2NbbXBdaS55YW1sCitGOglkcml2ZXJzL2Nsay9jbGst
c2NbbXBdaS5jCitGOglkcml2ZXJzL2NwdWZyZXEvc2NbbXBdaS1jcHVmcmVxLmMKK0Y6CWRyaXZl
cnMvZmlybXdhcmUvYXJtX3NjbWkvCitGOglkcml2ZXJzL2Zpcm13YXJlL2FybV9zY3BpLmMKK0Y6
CWRyaXZlcnMvaHdtb24vc2NtaS1od21vbi5jCitGOglkcml2ZXJzL3BpbmN0cmwvcGluY3RybC1z
Y21pLmMKK0Y6CWRyaXZlcnMvcG1kb21haW4vYXJtLworRjoJZHJpdmVycy9wb3dlcmNhcC9hcm1f
c2NtaV9wb3dlcmNhcC5jCitGOglkcml2ZXJzL3JlZ3VsYXRvci9zY21pLXJlZ3VsYXRvci5jCitG
Oglkcml2ZXJzL3Jlc2V0L3Jlc2V0LXNjbWkuYworRjoJaW5jbHVkZS9saW51eC9zY1ttcF1pX3By
b3RvY29sLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL3NjbWkuaAorRjoJaW5jbHVkZS91YXBp
L2xpbnV4L3ZpcnRpb19zY21pLmgKKworU1lTVEVNIFJFU0VUL1NIVVRET1dOIERSSVZFUlMKK006
CVNlYmFzdGlhbiBSZWljaGVsIDxzcmVAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBtQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9z
Y20vbGludXgva2VybmVsL2dpdC9zcmUvbGludXgtcG93ZXItc3VwcGx5LmdpdAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VyL3Jlc2V0LworRjoJZHJpdmVycy9wb3dl
ci9yZXNldC8KKworU1lTVEVNIFRSQUNFIE1PRFVMRSBDTEFTUworTToJQWxleGFuZGVyIFNoaXNo
a2luIDxhbGV4YW5kZXIuc2hpc2hraW5AbGludXguaW50ZWwuY29tPgorUzoJTWFpbnRhaW5lZAor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9hc2gv
c3RtLmdpdAorRjoJRG9jdW1lbnRhdGlvbi90cmFjZS9zdG0ucnN0CitGOglkcml2ZXJzL2h3dHJh
Y2luZy9zdG0vCitGOglpbmNsdWRlL2xpbnV4L3N0bS5oCitGOglpbmNsdWRlL3VhcGkvbGludXgv
c3RtLmgKKworU1lTVEVNNzYgQUNQSSBEUklWRVIKK006CUplcmVteSBTb2xsZXIgPGplcmVteUBz
eXN0ZW03Ni5jb20+CitNOglTeXN0ZW03NiBQcm9kdWN0IERldmVsb3BtZW50IDxwcm9kdWN0ZGV2
QHN5c3RlbTc2LmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni9zeXN0ZW03Nl9hY3BpLmMKKwor
VEFTS1NUQVRTIFNUQVRJU1RJQ1MgSU5URVJGQUNFCitNOglCYWxiaXIgU2luZ2ggPGJzaW5naGFy
b3JhQGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vYWNjb3VudGlu
Zy90YXNrc3RhdHMqCitGOglpbmNsdWRlL2xpbnV4L3Rhc2tzdGF0cyoKK0Y6CWtlcm5lbC90YXNr
c3RhdHMuYworCitUQyBzdWJzeXN0ZW0KK006CUphbWFsIEhhZGkgU2FsaW0gPGpoc0Btb2phdGF0
dS5jb20+CitNOglDb25nIFdhbmcgPHhpeW91Lndhbmdjb25nQGdtYWlsLmNvbT4KK006CUppcmkg
UGlya28gPGppcmlAcmVzbnVsbGkudXM+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglpbmNsdWRlL25ldC9wa3RfY2xzLmgKK0Y6CWluY2x1ZGUvbmV0L3BrdF9z
Y2hlZC5oCitGOglpbmNsdWRlL25ldC90Y19hY3QvCitGOglpbmNsdWRlL3VhcGkvbGludXgvcGt0
X2Nscy5oCitGOglpbmNsdWRlL3VhcGkvbGludXgvcGt0X3NjaGVkLmgKK0Y6CWluY2x1ZGUvdWFw
aS9saW51eC90Y19hY3QvCitGOglpbmNsdWRlL3VhcGkvbGludXgvdGNfZW1hdGNoLworRjoJbmV0
L3NjaGVkLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdGMtdGVzdGluZworCitUQzkwNTIy
IE1FRElBIERSSVZFUgorTToJQWtpaGlybyBUc3VrYWRhIDx0c2tkMDhAZ21haWwuY29tPgorTDoJ
bGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPZGQgRml4ZXMKK0Y6CWRyaXZlcnMvbWVk
aWEvZHZiLWZyb250ZW5kcy90YzkwNTIyKgorCitUQ1AgTE9XIFBSSU9SSVRZIE1PRFVMRQorTToJ
IldvbmcgSG9pIFNpbmcsIEVkaXNvbiIgPGhzd29uZzNpQGdtYWlsLmNvbT4KK006CSJIdW5nIEhp
bmcgTHVuLCBNaWtlIiA8aGxodW5nM2lAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorVzoJaHR0
cDovL3RjcC1scC1tb2Quc291cmNlZm9yZ2UubmV0LworRjoJbmV0L2lwdjQvdGNwX2xwLmMKKwor
VERBMTAwNzEgTUVESUEgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51
eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglkcml2ZXJzL21lZGlhL2R2Yi1m
cm9udGVuZHMvdGRhMTAwNzEqCisKK1REQTE4MjEyIE1FRElBIERSSVZFUgorTDoJbGludXgtbWVk
aWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1E6
CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRpYS9saXN0Lwor
RjoJZHJpdmVycy9tZWRpYS90dW5lcnMvdGRhMTgyMTIqCisKK1REQTE4MjE4IE1FRElBIERSSVZF
UgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK1c6CWh0dHBzOi8v
bGludXh0di5vcmcKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51
eC1tZWRpYS9saXN0LworRjoJZHJpdmVycy9tZWRpYS90dW5lcnMvdGRhMTgyMTgqCisKK1REQTE4
MjUwIE1FRElBIERSSVZFUgorTToJT2xsaSBTYWxvbmVuIDxvbGxpLnNhbG9uZW5AaWtpLmZpPgor
TDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczov
L2xpbnV4dHYub3JnCitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGlu
dXgtbWVkaWEvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRy
aXZlcnMvbWVkaWEvdHVuZXJzL3RkYTE4MjUwKgorCitUREExODI3MSBNRURJQSBEUklWRVIKK006
CU1pY2hhZWwgS3J1Zmt5IDxta3J1Zmt5QGxpbnV4dHYub3JnPgorTDoJbGludXgtbWVkaWFAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitXOglo
dHRwOi8vZ2l0aHViLmNvbS9ta3J1Zmt5CitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3Jn
L3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9ta3J1
Zmt5L3R1bmVycy5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvdHVuZXJzL3RkYTE4MjcxKgorCitUREEx
OTk3eCBNRURJQSBEUklWRVIKK006CVRpbSBIYXJ2ZXkgPHRoYXJ2ZXlAZ2F0ZXdvcmtzLmNvbT4K
K0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6
Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xp
bnV4LW1lZGlhL2xpc3QvCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVk
aWEvaTJjL254cCx0ZGExOTk3eC50eHQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL3RkYTE5OTd4LioK
KworVERBODI3eCBNRURJQSBEUklWRVIKK006CU1pY2hhZWwgS3J1Zmt5IDxta3J1Zmt5QGxpbnV4
dHYub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitX
OglodHRwczovL2xpbnV4dHYub3JnCitXOglodHRwOi8vZ2l0aHViLmNvbS9ta3J1Zmt5CitROglo
dHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK1Q6
CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9ta3J1Zmt5L3R1bmVycy5naXQKK0Y6CWRyaXZlcnMvbWVk
aWEvdHVuZXJzL3RkYTgyOTAuKgorCitUREE4MjkwIE1FRElBIERSSVZFUgorTToJTWljaGFlbCBL
cnVma3kgPG1rcnVma3lAbGludXh0di5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1c6CWh0dHA6Ly9naXRo
dWIuY29tL21rcnVma3kKK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9s
aW51eC1tZWRpYS9saXN0LworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21rcnVma3kvdHVuZXJz
LmdpdAorRjoJZHJpdmVycy9tZWRpYS90dW5lcnMvdGRhODI5MC4qCisKK1REQTk4NDAgTUVESUEg
RFJJVkVSCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1l
ZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9y
ZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS9p
MmMvdGRhOTg0MCoKKworVEVBNTc2MSBUVU5FUiBEUklWRVIKK006CU1hdXJvIENhcnZhbGhvIENo
ZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3Jn
CitTOglPZGQgZml4ZXMKK1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51
eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvdHVuZXJzL3RlYTU3NjEuKgorCitU
RUE1NzY3IFRVTkVSIERSSVZFUgorTToJTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxtY2hlaGFiQGtl
cm5lbC5vcmc+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K1c6CWh0dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5n
aXQKK0Y6CWRyaXZlcnMvbWVkaWEvdHVuZXJzL3RlYTU3NjcuKgorCitURUE2NDE1QyBNRURJQSBE
UklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZlcmt1aWxAeHM0YWxsLm5sPgorTDoJbGludXgtbWVk
aWFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4dHYub3Jn
CitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2ky
Yy90ZWE2NDE1YyoKKworVEVBNjQyMCBNRURJQSBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZl
cmt1aWxAeHM0YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcv
bWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL2kyYy90ZWE2NDIwKgorCitURUFNIERSSVZFUgor
TToJSmlyaSBQaXJrbyA8amlyaUByZXNudWxsaS51cz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9uZXRsaW5rL3NwZWNzL3RlYW0ueWFt
bAorRjoJZHJpdmVycy9uZXQvdGVhbS8KK0Y6CWluY2x1ZGUvbGludXgvaWZfdGVhbS5oCitGOglp
bmNsdWRlL3VhcGkvbGludXgvaWZfdGVhbS5oCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9k
cml2ZXJzL25ldC90ZWFtLworCitURUNITklDQUwgQURWSVNPUlkgQk9BUkQgUFJPQ0VTUyBET0NT
CitNOgkiVGhlb2RvcmUgVHMnbyIgPHR5dHNvQG1pdC5lZHU+CitNOglHcmVnIEtyb2FoLUhhcnRt
YW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorTDoJdGVjaC1ib2FyZC1kaXNjdXNzQGxp
c3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9wcm9jZXNzL2Nv
bnRyaWJ1dGlvbi1tYXR1cml0eS1tb2RlbC5yc3QKK0Y6CURvY3VtZW50YXRpb24vcHJvY2Vzcy9y
ZXNlYXJjaGVyLWd1aWRlbGluZXMucnN0CisKK1RFQ0hOT0xPR0lDIFNZU1RFTVMgVFMtNTUwMCBQ
TEFURk9STSBTVVBQT1JUCitNOgkiU2F2b2lyLWZhaXJlIExpbnV4IEluYy4iIDxrZXJuZWxAc2F2
b2lyZmFpcmVsaW51eC5jb20+CitTOglNYWludGFpbmVkCitGOglhcmNoL3g4Ni9wbGF0Zm9ybS90
czU1MDAvCisKK1RFQ0hOT1RSRU5EIFVTQiBJUiBSRUNFSVZFUgorTToJU2VhbiBZb3VuZyA8c2Vh
bkBtZXNzLm9yZz4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9tZWRpYS9yYy90dHVzYmlyLmMKKworVEVDSFdFTEwgVFc5OTAwIFZJREVP
IERFQ09ERVIKK006CU1laGRpIERqYWl0IDxtZWhkaS5kamFpdEBib290bGluLmNvbT4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tZWRp
YS9pMmMvdHc5OTAwLmMKKworVEVDSFdFTEwgVFc5OTEwIFZJREVPIERFQ09ERVIKK0w6CWxpbnV4
LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL21lZGlhL2kyYy90
dzk5MTAuYworRjoJaW5jbHVkZS9tZWRpYS9pMmMvdHc5OTEwLmgKKworVEVFIFNVQlNZU1RFTQor
TToJSmVucyBXaWtsYW5kZXIgPGplbnMud2lrbGFuZGVyQGxpbmFyby5vcmc+CitSOglTdW1pdCBH
YXJnIDxzdW1pdC5nYXJnQGtlcm5lbC5vcmc+CitMOglvcC10ZWVAbGlzdHMudHJ1c3RlZGZpcm13
YXJlLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNm
cy1jbGFzcy10ZWUKK0Y6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS90ZWUucnN0CitGOglEb2N1
bWVudGF0aW9uL3RlZS8KK0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS90ZWUucnN0CitG
Oglkcml2ZXJzL3RlZS8KK0Y6CWluY2x1ZGUvbGludXgvdGVlX2NvcmUuaAorRjoJaW5jbHVkZS9s
aW51eC90ZWVfZHJ2LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC90ZWUuaAorCitURUdSQSBBUkNI
SVRFQ1RVUkUgU1VQUE9SVAorTToJVGhpZXJyeSBSZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWls
LmNvbT4KK006CUpvbmF0aGFuIEh1bnRlciA8am9uYXRoYW5oQG52aWRpYS5jb20+CitMOglsaW51
eC10ZWdyYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorUToJaHR0cDovL3BhdGNod29y
ay5vemxhYnMub3JnL3Byb2plY3QvbGludXgtdGVncmEvbGlzdC8KK1Q6CWdpdCBnaXQ6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGVncmEvbGludXguZ2l0CitOOglb
XmEtel10ZWdyYQorCitURUdSQSBDTE9DSyBEUklWRVIKK006CVBldGVyIERlIFNjaHJpanZlciA8
cGRlc2NocmlqdmVyQG52aWRpYS5jb20+CitNOglQcmFzaGFudCBHYWlrd2FkIDxwZ2Fpa3dhZEBu
dmlkaWEuY29tPgorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2Nsay90ZWdyYS8KKworVEVHUkEg
Q1JZUFRPIERSSVZFUlMKK006CUFraGlsIFIgPGFraGlscmFqZWV2QG52aWRpYS5jb20+CitTOglT
dXBwb3J0ZWQKK0Y6CWRyaXZlcnMvY3J5cHRvL3RlZ3JhLyoKKworVEVHUkEgRE1BIERSSVZFUlMK
K006CUxheG1hbiBEZXdhbmdhbiA8bGRld2FuZ2FuQG52aWRpYS5jb20+CitNOglKb24gSHVudGVy
IDxqb25hdGhhbmhAbnZpZGlhLmNvbT4KK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9kbWEvdGVn
cmEqCisKK1RFR1JBIEkyQyBEUklWRVIKK006CUxheG1hbiBEZXdhbmdhbiA8bGRld2FuZ2FuQG52
aWRpYS5jb20+CitSOglEbWl0cnkgT3NpcGVua28gPGRpZ2V0eEBnbWFpbC5jb20+CitTOglTdXBw
b3J0ZWQKK0Y6CWRyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdGVncmEuYworCitURUdSQSBJT01NVSBE
UklWRVJTCitNOglUaGllcnJ5IFJlZGluZyA8dGhpZXJyeS5yZWRpbmdAZ21haWwuY29tPgorUjoJ
S3Jpc2huYSBSZWRkeSA8dmR1bXBhQG52aWRpYS5jb20+CitMOglsaW51eC10ZWdyYUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMv
dGVncmEyNDEtY21kcXYuYworRjoJZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUvYXJtLXNtbXUt
bnZpZGlhLmMKK0Y6CWRyaXZlcnMvaW9tbXUvdGVncmEqCisKK1RFR1JBIEtCQyBEUklWRVIKK006
CUxheG1hbiBEZXdhbmdhbiA8bGRld2FuZ2FuQG52aWRpYS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6
CWRyaXZlcnMvaW5wdXQva2V5Ym9hcmQvdGVncmEta2JjLmMKKworVEVHUkEgTkFORCBEUklWRVIK
K006CVN0ZWZhbiBBZ25lciA8c3RlZmFuQGFnbmVyLmNoPgorTToJTHVjYXMgU3RhY2ggPGRldkBs
eW54ZXllLmRlPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL210ZC9udmlkaWEtdGVncmEyMC1uYW5kLnR4dAorRjoJZHJpdmVycy9tdGQvbmFuZC9y
YXcvdGVncmFfbmFuZC5jCisKK1RFR1JBIFBXTSBEUklWRVIKK006CVRoaWVycnkgUmVkaW5nIDx0
aGllcnJ5LnJlZGluZ0BnbWFpbC5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvcHdtL3B3
bS10ZWdyYS5jCisKK1RFR1JBIFFVQUQgU1BJIERSSVZFUgorTToJVGhpZXJyeSBSZWRpbmcgPHRo
aWVycnkucmVkaW5nQGdtYWlsLmNvbT4KK006CUpvbmF0aGFuIEh1bnRlciA8am9uYXRoYW5oQG52
aWRpYS5jb20+CitNOglTb3dqYW55YSBLb21hdGluZW5pIDxza29tYXRpbmVuaUBudmlkaWEuY29t
PgorTDoJbGludXgtdGVncmFAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL3NwaS9zcGktdGVncmEyMTAtcXVhZC5jCisKK1RFR1JBIFNFUklBTCBEUklWRVIKK006CUxh
eG1hbiBEZXdhbmdhbiA8bGRld2FuZ2FuQG52aWRpYS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWRy
aXZlcnMvdHR5L3NlcmlhbC9zZXJpYWwtdGVncmEuYworCitURUdSQSBTUEkgRFJJVkVSCitNOglM
YXhtYW4gRGV3YW5nYW4gPGxkZXdhbmdhbkBudmlkaWEuY29tPgorUzoJU3VwcG9ydGVkCitGOglk
cml2ZXJzL3NwaS9zcGktdGVncmEqCisKK1RFR1JBIFZJREVPIERSSVZFUgorTToJVGhpZXJyeSBS
ZWRpbmcgPHRoaWVycnkucmVkaW5nQGdtYWlsLmNvbT4KK006CUpvbmF0aGFuIEh1bnRlciA8am9u
YXRoYW5oQG52aWRpYS5jb20+CitNOglTb3dqYW55YSBLb21hdGluZW5pIDxza29tYXRpbmVuaUBu
dmlkaWEuY29tPgorTToJTHVjYSBDZXJlc29saSA8bHVjYS5jZXJlc29saUBib290bGluLmNvbT4K
K0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtdGVncmFAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvZGlzcGxheS90ZWdyYS9udmlkaWEsdGVncmEyMC1ob3N0MXgueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGVncmEvbnZpZGlhLHRlZ3JhMjAtdmku
eWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rpc3BsYXkvdGVncmEv
bnZpZGlhLHRlZ3JhMjAtdmlwLnlhbWwKK0Y6CWRyaXZlcnMvc3RhZ2luZy9tZWRpYS90ZWdyYS12
aWRlby8KKworVEVHUkEgWFVTQiBQQURDVEwgRFJJVkVSCitNOglKQyBLdW8gPGpja3VvQG52aWRp
YS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvcGh5L3RlZ3JhL3h1c2IqCisKK1RFSFVU
SSBFVEhFUk5FVCBEUklWRVIKK006CUFuZHkgR29zcG9kYXJlayA8YW5keUBncmV5aG91c2UubmV0
PgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9u
ZXQvZXRoZXJuZXQvdGVodXRpL3RlaHV0aS4qCisKK1RFSFVUSSBUTjQwWFggRVRIRVJORVQgRFJJ
VkVSCitNOglGVUpJVEEgVG9tb25vcmkgPGZ1aml0YS50b21vbm9yaUBnbWFpbC5jb20+CitMOglu
ZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhl
cm5ldC90ZWh1dGkvdG40MCoKKworVEVMRUNPTSBDTE9DSyBEUklWRVIgRk9SIE1DUEwwMDEwCitN
OglNYXJrIEdyb3NzIDxtYXJrZ3Jvc3NAa2VybmVsLm9yZz4KK1M6CVN1cHBvcnRlZAorRjoJZHJp
dmVycy9jaGFyL3RsY2xrLmMKKworVEVNUE8gU0VNSUNPTkRVQ1RPUiBEUklWRVJTCitNOglTdGV2
ZW4gRWNraG9mZiA8c3RldmVuLmVja2hvZmYub3BlbnNvdXJjZUBnbWFpbC5jb20+CitTOglNYWlu
dGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvdHNjcyou
dHh0CitGOglzb3VuZC9zb2MvY29kZWNzL3RzY3MqLmMKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvdHNj
cyouaAorCitURU5TSUxJQ0EgWFRFTlNBIFBPUlQgKHh0ZW5zYSkKK006CUNocmlzIFphbmtlbCA8
Y2hyaXNAemFua2VsLm5ldD4KK006CU1heCBGaWxpcHBvdiA8amNtdmJrYmNAZ21haWwuY29tPgor
UzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9qY212YmtiYy9saW51eC14
dGVuc2EuZ2l0CitGOglhcmNoL3h0ZW5zYS8KK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEteHRlbnNh
LSoKKworVEVYQVMgSU5TVFJVTUVOVFMgQVNvQyBEUklWRVJTCitNOglQZXRlciBVamZhbHVzaSA8
cGV0ZXIudWpmYWx1c2lAZ21haWwuY29tPgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291
bmQvZGF2aW5jaS1tY2FzcC1hdWRpby55YW1sCitGOglzb3VuZC9zb2MvdGkvCisKK1RFWEFTIElO
U1RSVU1FTlRTIEFVRElPIChBU29DL0hEQSkgRFJJVkVSUworTToJU2hlbmdoYW8gRGluZyA8c2hl
bmdoYW8tZGluZ0B0aS5jb20+CitNOglLZXZpbiBMdSA8a2V2aW4tbHVAdGkuY29tPgorTToJQmFv
anVuIFh1IDxiYW9qdW4ueHVAdGkuY29tPgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291
bmQvdGFzMjU1Mi50eHQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3Vu
ZC90aSx0YXMyNTYyLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9z
b3VuZC90aSx0YXMyNzcwLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9zb3VuZC90aSx0YXMyN3h4LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9zb3VuZC90aSx0cGE2MTMwYTIueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl
L2JpbmRpbmdzL3NvdW5kL3RpLHBjbTE2ODEueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL3NvdW5kL3RpLHBjbTMxNjhhLnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90aSx0bHYzMjAqLnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC90aSx0bHYzMjBhZGN4MTQwLnlhbWwKK0Y6CWluY2x1
ZGUvc291bmQvdGFzMiouaAorRjoJaW5jbHVkZS9zb3VuZC90bHYzMjAqLmgKK0Y6CXNvdW5kL3Bj
aS9oZGEvdGFzMjc4MV9oZGFfaTJjLmMKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvcGNtMTY4MS5jCitG
Oglzb3VuZC9zb2MvY29kZWNzL3BjbTE3ODkqLioKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvcGNtMTc5
eCouKgorRjoJc291bmQvc29jL2NvZGVjcy9wY20xODZ4Ki4qCitGOglzb3VuZC9zb2MvY29kZWNz
L3BjbTMwMDguKgorRjoJc291bmQvc29jL2NvZGVjcy9wY20zMDYwKi4qCitGOglzb3VuZC9zb2Mv
Y29kZWNzL3BjbTMxNjhhKi4qCitGOglzb3VuZC9zb2MvY29kZWNzL3BjbTUxMDJhLmMKK0Y6CXNv
dW5kL3NvYy9jb2RlY3MvcGNtNTEyeCouKgorRjoJc291bmQvc29jL2NvZGVjcy90YXMyKi4qCitG
Oglzb3VuZC9zb2MvY29kZWNzL3RsdjMyMCouKgorRjoJc291bmQvc29jL2NvZGVjcy90cGE2MTMw
YTIuKgorCitURVhBUyBJTlNUUlVNRU5UUyBETUEgRFJJVkVSUworTToJUGV0ZXIgVWpmYWx1c2kg
PHBldGVyLnVqZmFsdXNpQGdtYWlsLmNvbT4KK0w6CWRtYWVuZ2luZUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEv
dGktZG1hLWNyb3NzYmFyLnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2RtYS90aS1lZG1hLnR4dAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rt
YS90aS8KK0Y6CWRyaXZlcnMvZG1hL3RpLworRjoJaW5jbHVkZS9saW51eC9kbWEvazMtcHNpbC5o
CitGOglpbmNsdWRlL2xpbnV4L2RtYS9rMy11ZG1hLWdsdWUuaAorRjoJaW5jbHVkZS9saW51eC9k
bWEvdGktY3BwaTUuaAorWDoJZHJpdmVycy9kbWEvdGkvY3BwaTQxLmMKKworVEVYQVMgSU5TVFJV
TUVOVFMgVFBTMjU5OTAgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIKK006CUplcm9tZSBCcnVuZXQg
PGpicnVuZXRAYmF5bGlicmUuY29tPgorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24v
cG1idXMvdGksdHBzMjU5OTAueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi90cHMyNTk5MC5y
c3QKK0Y6CWRyaXZlcnMvaHdtb24vcG1idXMvdHBzMjU5OTAuYworCitURVhBUyBJTlNUUlVNRU5U
UyBUUFMyMzg2MSBQb0UgUFNFIERSSVZFUgorTToJUm9iZXJ0IE1hcmtvIDxyb2JlcnQubWFya29A
c2FydHVyYS5ocj4KK006CUx1a2EgUGVya292IDxsdWthLnBlcmtvdkBzYXJ0dXJhLmhyPgorTDoJ
bGludXgtaHdtb25Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaHdtb24vdGksdHBzMjM4NjEueWFtbAorRjoJRG9jdW1l
bnRhdGlvbi9od21vbi90cHMyMzg2MS5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vdHBzMjM4NjEuYwor
CitURVhBUyBJTlNUUlVNRU5UUycgREFDNzYxMiBEQUMgRFJJVkVSCitNOglSaWNhcmRvIFJpYmFs
ZGEgPHJpYmFsZGFAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9kYWMv
dGksZGFjNzYxMi55YW1sCitGOglkcml2ZXJzL2lpby9kYWMvdGktZGFjNzYxMi5jCisKK1RFWEFT
IElOU1RSVU1FTlRTJyBMQjg4NjQgTEVEIEJBQ0tMSUdIVCBEUklWRVIKK006CUFsZXhhbmRlciBT
dmVyZGxpbiA8YWxleGFuZGVyLnN2ZXJkbGluQHNpZW1lbnMuY29tPgorTDoJbGludXgtbGVkc0B2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy9sZWRzL2JhY2tsaWdodC90aSxscDg4NjQueWFtbAorRjoJZHJpdmVycy9sZWRz
L2xlZHMtbHA4ODY0LmMKKworVEVYQVMgSU5TVFJVTUVOVFMnIFNZU1RFTSBDT05UUk9MIElOVEVS
RkFDRSAoVElTQ0kpIFBST1RPQ09MIERSSVZFUgorTToJTmlzaGFudGggTWVub24gPG5tQHRpLmNv
bT4KK006CVRlcm8gS3Jpc3RvIDxrcmlzdG9Aa2VybmVsLm9yZz4KK006CVNhbnRvc2ggU2hpbGlt
a2FyIDxzc2FudG9zaEBrZXJuZWwub3JnPgorTDoJbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZy
YWRlYWQub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9hcm0va2V5c3RvbmUvdGksazMt
c2NpLWNvbW1vbi55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvYXJt
L2tleXN0b25lL3RpLHNjaS55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGlu
Z3MvY2xvY2svdGksc2NpLWNsay55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3MvaW50ZXJydXB0LWNvbnRyb2xsZXIvdGksc2NpLWludGEueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ludGVycnVwdC1jb250cm9sbGVyL3RpLHNjaS1pbnRy
LnlhbWwKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZXNldC90aSxzY2kt
cmVzZXQueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvYy90aS9z
Y2ktcG0tZG9tYWluLnlhbWwKK0Y6CWRyaXZlcnMvY2xrL2tleXN0b25lL3NjaS1jbGsuYworRjoJ
ZHJpdmVycy9maXJtd2FyZS90aV9zY2kqCitGOglkcml2ZXJzL2lycWNoaXAvaXJxLXRpLXNjaS1p
bnRhLmMKK0Y6CWRyaXZlcnMvaXJxY2hpcC9pcnEtdGktc2NpLWludHIuYworRjoJZHJpdmVycy9y
ZXNldC9yZXNldC10aS1zY2kuYworRjoJZHJpdmVycy9zb2MvdGkvdGlfc2NpX2ludGFfbXNpLmMK
K0Y6CWRyaXZlcnMvcG1kb21haW4vdGkvdGlfc2NpX3BtX2RvbWFpbnMuYworRjoJaW5jbHVkZS9k
dC1iaW5kaW5ncy9zb2MvdGksc2NpX3BtX2RvbWFpbi5oCitGOglpbmNsdWRlL2xpbnV4L3NvYy90
aS90aV9zY2lfaW50YV9tc2kuaAorRjoJaW5jbHVkZS9saW51eC9zb2MvdGkvdGlfc2NpX3Byb3Rv
Y29sLmgKKworVEVYQVMgSU5TVFJVTUVOVFMnIFRNUDExNyBURU1QRVJBVFVSRSBTRU5TT1IgRFJJ
VkVSCitNOglQdXJhbmpheSBNb2hhbiA8cHVyYW5qYXlAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWlp
b0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2lpby90ZW1wZXJhdHVyZS90aSx0bXAxMTcueWFtbAorRjoJZHJpdmVycy9p
aW8vdGVtcGVyYXR1cmUvdG1wMTE3LmMKKworVEhBTktPJ1MgUkFSRU1PTk8gQU0vRk0vU1cgUkFE
SU8gUkVDRUlWRVIgVVNCIERSSVZFUgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbEB4czRhbGwu
bmw+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0
dHBzOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6
CWRyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tcmFyZW1vbm8uYworCitUSEVSTUFMCitNOglSYWZh
ZWwgSi4gV3lzb2NraSA8cmFmYWVsQGtlcm5lbC5vcmc+CitNOglEYW5pZWwgTGV6Y2FubyA8ZGFu
aWVsLmxlemNhbm9AbGluYXJvLm9yZz4KK1I6CVpoYW5nIFJ1aSA8cnVpLnpoYW5nQGludGVsLmNv
bT4KK1I6CUx1a2FzeiBMdWJhIDxsdWthc3oubHViYUBhcm0uY29tPgorTDoJbGludXgtcG1Admdl
ci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5v
cmcvcHJvamVjdC9saW51eC1wbS9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1
Yi9zY20vbGludXgva2VybmVsL2dpdC9yYWZhZWwvbGludXgtcG0uZ2l0IHRoZXJtYWwKK0Y6CURv
Y3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtdGhlcm1hbAorRjoJRG9jdW1lbnRh
dGlvbi9hZG1pbi1ndWlkZS90aGVybWFsLworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL3RoZXJtYWwvCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvdGhlcm1hbC8KK0Y6
CWRyaXZlcnMvdGhlcm1hbC8KK0Y6CWluY2x1ZGUvZHQtYmluZGluZ3MvdGhlcm1hbC8KK0Y6CWlu
Y2x1ZGUvbGludXgvY3B1X2Nvb2xpbmcuaAorRjoJaW5jbHVkZS9saW51eC90aGVybWFsLmgKK0Y6
CWluY2x1ZGUvdWFwaS9saW51eC90aGVybWFsLmgKK0Y6CXRvb2xzL2xpYi90aGVybWFsLworRjoJ
dG9vbHMvdGhlcm1hbC8KKworVEhFUk1BTCBEUklWRVIgRk9SIEFNTE9HSUMgU09DUworTToJR3Vp
bGxhdW1lIExhIFJvcXVlIDxnbGFyb3F1ZUBiYXlsaWJyZS5jb20+CitMOglsaW51eC1wbUB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZworUzoJU3Vw
cG9ydGVkCitXOglodHRwOi8vbGludXgtbWVzb24uY29tLworRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3RoZXJtYWwvYW1sb2dpYyx0aGVybWFsLnlhbWwKK0Y6CWRyaXZlcnMv
dGhlcm1hbC9hbWxvZ2ljX3RoZXJtYWwuYworCitUSEVSTUFML0NQVV9DT09MSU5HCitNOglBbWl0
IERhbmllbCBLYWNoaGFwIDxhbWl0LmthY2hoYXBAZ21haWwuY29tPgorTToJRGFuaWVsIExlemNh
bm8gPGRhbmllbC5sZXpjYW5vQGxpbmFyby5vcmc+CitNOglWaXJlc2ggS3VtYXIgPHZpcmVzaC5r
dW1hckBsaW5hcm8ub3JnPgorUjoJTHVrYXN6IEx1YmEgPGx1a2Fzei5sdWJhQGFybS5jb20+CitM
OglsaW51eC1wbUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJRG9jdW1lbnRhdGlv
bi9kcml2ZXItYXBpL3RoZXJtYWwvY3B1LWNvb2xpbmctYXBpLnJzdAorRjoJRG9jdW1lbnRhdGlv
bi9kcml2ZXItYXBpL3RoZXJtYWwvY3B1LWlkbGUtY29vbGluZy5yc3QKK0Y6CWRyaXZlcnMvdGhl
cm1hbC9jcHVmcmVxX2Nvb2xpbmcuYworRjoJZHJpdmVycy90aGVybWFsL2NwdWlkbGVfY29vbGlu
Zy5jCitGOglpbmNsdWRlL2xpbnV4L2NwdV9jb29saW5nLmgKKworVEhFUk1BTC9QT1dFUl9BTExP
Q0FUT1IKK006CUx1a2FzeiBMdWJhIDxsdWthc3oubHViYUBhcm0uY29tPgorTDoJbGludXgtcG1A
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1h
cGkvdGhlcm1hbC9wb3dlcl9hbGxvY2F0b3IucnN0CitGOglkcml2ZXJzL3RoZXJtYWwvZ292X3Bv
d2VyX2FsbG9jYXRvci5jCitGOglkcml2ZXJzL3RoZXJtYWwvdGhlcm1hbF90cmFjZV9pcGEuaAor
CitUSElOS1BBRCBBQ1BJIEVYVFJBUyBEUklWRVIKK006CUhlbnJpcXVlIGRlIE1vcmFlcyBIb2xz
Y2h1aCA8aG1oQGhtaC5lbmcuYnI+CitMOglpYm0tYWNwaS1kZXZlbEBsaXN0cy5zb3VyY2Vmb3Jn
ZS5uZXQKK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitXOglodHRwOi8vaWJtLWFjcGkuc291cmNlZm9yZ2UubmV0CitXOglodHRwOi8vdGhpbmt3
aWtpLm9yZy93aWtpL0libS1hY3BpCitUOglnaXQgZ2l0Oi8vcmVwby5vci5jei9saW51eC0yLjYv
bGludXgtYWNwaS0yLjYvaWJtLWFjcGktMi42LmdpdAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYv
dGhpbmtwYWRfYWNwaS5jCisKK1RISU5LUEFEIExNSSBEUklWRVIKK006CU1hcmsgUGVhcnNvbiA8
bWFya3BlYXJzb25AbGVub3ZvLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2Zz
LWNsYXNzLWZpcm13YXJlLWF0dHJpYnV0ZXMKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L3RoaW5r
LWxtaS4/CisKK1RIUDczMTIgSVNQIERSSVZFUgorTToJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVu
dC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgorTToJUGF1bCBFbGRlciA8cGF1bC5lbGRlckBp
ZGVhc29uYm9hcmQuY29tPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvaTJjL3RoaW5lLHRocDczMTIueWFtbAorRjoJ
RG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL2RyaXZlcnMvdGhwNzMxMi5yc3QKK0Y6
CWRyaXZlcnMvbWVkaWEvaTJjL3RocDczMTIuYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3RocDcz
MTIuaAorCitUSFVOREVSQk9MVCBETUEgVFJBRkZJQyBURVNUIERSSVZFUgorTToJSXNhYWMgSGF6
YW4gPGlzYWFjLmhhemFuQGludGVsLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdGh1bmRlcmJvbHQvZG1hX3Rlc3QuYworCitUSFVO
REVSQk9MVCBEUklWRVIKK006CUFuZHJlYXMgTm9ldmVyIDxhbmRyZWFzLm5vZXZlckBnbWFpbC5j
b20+CitNOglNaWNoYWVsIEphbWV0IDxtaWNoYWVsLmphbWV0QGludGVsLmNvbT4KK006CU1pa2Eg
V2VzdGVyYmVyZyA8d2VzdGVyaUBrZXJuZWwub3JnPgorTToJWWVoZXprZWwgQmVybmF0IDxZZWhl
emtlbFNoQkBnbWFpbC5jb20+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWlu
dGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwv
Z2l0L3dlc3RlcmkvdGh1bmRlcmJvbHQuZ2l0CitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRl
L3RodW5kZXJib2x0LnJzdAorRjoJZHJpdmVycy90aHVuZGVyYm9sdC8KK0Y6CWluY2x1ZGUvbGlu
dXgvdGh1bmRlcmJvbHQuaAorCitUSFVOREVSQk9MVCBORVRXT1JLIERSSVZFUgorTToJTWljaGFl
bCBKYW1ldCA8bWljaGFlbC5qYW1ldEBpbnRlbC5jb20+CitNOglNaWthIFdlc3RlcmJlcmcgPHdl
c3RlcmlAa2VybmVsLm9yZz4KK006CVllaGV6a2VsIEJlcm5hdCA8WWVoZXprZWxTaEJAZ21haWwu
Y29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9uZXQvdGh1bmRlcmJvbHQvCisKK1RIVU5ERVJYIEdQSU8gRFJJVkVSCitNOglSb2JlcnQgUmlj
aHRlciA8cnJpY0BrZXJuZWwub3JnPgorUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL2dwaW8vZ3Bp
by10aHVuZGVyeC5jCisKK1RJIEFEUzExMTkgQURDIERSSVZFUgorTToJRnJhbmNlc2NvIERvbGNp
bmkgPGZyYW5jZXNjb0Bkb2xjaW5pLml0PgorTToJSm/Do28gUGF1bG8gR29uw6dhbHZlcyA8anBh
dWxvLnNpbHZhZ29uY2FsdmVzQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9p
aW8vYWRjL3RpLGFkczExMTkueWFtbAorRjoJZHJpdmVycy9paW8vYWRjL3RpLWFkczExMTkuYwor
CitUSSBBRFM3OTI0IEFEQyBEUklWRVIKK006CUh1Z28gVmlsbGVuZXV2ZSA8aHZpbGxlbmV1dmVA
ZGltb25vZmYuY29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy90aSxhZHM3OTI0
LnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy90aS1hZHM3OTI0LmMKKworVEkgQU00MzdYIFZQRkUg
RFJJVkVSCitNOgkiTGFkLCBQcmFiaGFrYXIiIDxwcmFiaGFrYXIuY3NlbmdnQGdtYWlsLmNvbT4K
K0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6
Ly9saW51eHR2Lm9yZworUToJaHR0cDovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xp
bnV4LW1lZGlhL2xpc3QvCitUOglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWhhZGxpL3Y0bC1kdmIt
ZGF2aW5jaV9kZXZpY2VzLmdpdAorRjoJZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS90aS9hbTQzN3gv
CisKK1RJIEJBTkRHQVAgQU5EIFRIRVJNQUwgRFJJVkVSCitNOglFZHVhcmRvIFZhbGVudGluIDxl
ZHViZXp2YWxAZ21haWwuY29tPgorTToJS2VlcnRoeSA8ai1rZWVydGh5QHRpLmNvbT4KK0w6CWxp
bnV4LXBtQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtb21hcEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdGhlcm1hbC90aS1zb2MtdGhlcm1hbC8KKworVEkgQlEy
N1hYWCBQT1dFUiBTVVBQTFkgRFJJVkVSCitGOglkcml2ZXJzL3Bvd2VyL3N1cHBseS9icTI3eHh4
X2JhdHRlcnkuYworRjoJZHJpdmVycy9wb3dlci9zdXBwbHkvYnEyN3h4eF9iYXR0ZXJ5X2kyYy5j
CitGOglpbmNsdWRlL2xpbnV4L3Bvd2VyL2JxMjd4eHhfYmF0dGVyeS5oCisKK1RJIENEQ0U3MDYg
Q0xPQ0sgRFJJVkVSCitNOglNYXggRmlsaXBwb3YgPGpjbXZia2JjQGdtYWlsLmNvbT4KK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvY2xrL2Nsay1jZGNlNzA2LmMKKworVEkgQ0xPQ0sgRFJJVkVS
CitNOglUZXJvIEtyaXN0byA8a3Jpc3RvQGtlcm5lbC5vcmc+CitMOglsaW51eC1vbWFwQHZnZXIu
a2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitGOglkcml2ZXJzL2Nsay90aS8KK0Y6CWluY2x1ZGUv
bGludXgvY2xrL3RpLmgKKworVEkgREFWSU5DSSBNQUNISU5FIFNVUFBPUlQKK006CUJhcnRvc3og
R29sYXN6ZXdza2kgPGJyZ2xAYmdkZXYucGw+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3RzLmlu
ZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5l
ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9i
cmdsL2xpbnV4LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2kyYy9p
MmMtZGF2aW5jaS50eHQKK0Y6CWFyY2gvYXJtL2Jvb3QvZHRzL3RpL2RhdmluY2kvCitGOglhcmNo
L2FybS9tYWNoLWRhdmluY2kvCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRhdmluY2kuYwor
CitUSSBEQVZJTkNJIFNFUklFUyBDTE9DSyBEUklWRVIKK006CURhdmlkIExlY2huZXIgPGRhdmlk
QGxlY2hub2xvZ3kuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0
cmVlL2JpbmRpbmdzL2Nsb2NrL3RpL2RhdmluY2kvCitGOglkcml2ZXJzL2Nsay9kYXZpbmNpLwor
RjoJaW5jbHVkZS9saW51eC9jbGsvZGF2aW5jaS5oCisKK1RJIERBVklOQ0kgU0VSSUVTIEdQSU8g
RFJJVkVSCitNOglLZWVydGh5IDxqLWtlZXJ0aHlAdGkuY29tPgorTDoJbGludXgtZ3Bpb0B2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9ncGlvL2dwaW8tZGF2aW5jaS55YW1sCitGOglkcml2ZXJzL2dwaW8vZ3Bpby1kYXZp
bmNpLmMKKworVEkgREFWSU5DSSBTRVJJRVMgTUVESUEgRFJJVkVSCitNOgkiTGFkLCBQcmFiaGFr
YXIiIDxwcmFiaGFrYXIuY3NlbmdnQGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworUToJaHR0cDov
L3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9qZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitUOglnaXQg
Z2l0Oi8vbGludXh0di5vcmcvbWhhZGxpL3Y0bC1kdmItZGF2aW5jaV9kZXZpY2VzLmdpdAorRjoJ
ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS90aS9kYXZpbmNpLworRjoJaW5jbHVkZS9tZWRpYS9kYXZp
bmNpLworCitUSSBFTkhBTkNFRCBDQVBUVVJFIChlQ0FQKSBEUklWRVIKK006CVZpZ25lc2ggUmFn
aGF2ZW5kcmEgPHZpZ25lc2hyQHRpLmNvbT4KK1I6CUp1bGllbiBQYW5pcyA8anBhbmlzQGJheWxp
YnJlLmNvbT4KK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LW9tYXBAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvY291bnRlci90aSxhbTYyLWVjYXAtY2FwdHVyZS55YW1sCitGOglkcml2ZXJzL2Nv
dW50ZXIvdGktZWNhcC1jYXB0dXJlLmMKKworVEkgRU5IQU5DRUQgUVVBRFJBVFVSRSBFTkNPREVS
IFBVTFNFIChlUUVQKSBEUklWRVIKK1I6CURhdmlkIExlY2huZXIgPGRhdmlkQGxlY2hub2xvZ3ku
Y29tPgorTDoJbGludXgtaWlvQHZnZXIua2VybmVsLm9yZworRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL2NvdW50ZXIvdGktZXFlcC55YW1sCitGOglkcml2ZXJzL2NvdW50ZXIv
dGktZXFlcC5jCisKK1RJIEVUSEVSTkVUIFNXSVRDSCBEUklWRVIgKENQU1cpCitSOglTaWRkaGFy
dGggVmFkYXBhbGxpIDxzLXZhZGFwYWxsaUB0aS5jb20+CitSOglSb2dlciBRdWFkcm9zIDxyb2dl
cnFAa2VybmVsLm9yZz4KK0w6CWxpbnV4LW9tYXBAdmdlci5rZXJuZWwub3JnCitMOgluZXRkZXZA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC90
aS9jcHN3KgorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaSoKKworVEkgRkxBU0gg
TUVESUEgTUVNT1JZU1RJQ0svTU1DIERSSVZFUlMKK006CUFsZXggRHVib3YgPG9ha2FkQHlhaG9v
LmNvbT4KK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly90aWZteHguYmVybGlvcy5kZS8KK0Y6CWRy
aXZlcnMvbWVtc3RpY2svaG9zdC90aWZtX21zLmMKK0Y6CWRyaXZlcnMvbWlzYy90aWZtKgorRjoJ
ZHJpdmVycy9tbWMvaG9zdC90aWZtX3NkLmMKK0Y6CWluY2x1ZGUvbGludXgvdGlmbS5oCisKK1RJ
IEZQQzIwMiBEVUFMIFBPUlQgQ09OVFJPTExFUgorTToJUm9tYWluIEdhbnRvaXMgPHJvbWFpbi5n
YW50b2lzQGJvb3RsaW4uY29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvdGks
ZnBjMjAyLnlhbWwKK0Y6CWRyaXZlcnMvbWlzYy90aV9mcGMyMDIuYworCitUSSBGUEQtTElOSyBE
UklWRVJTCitNOglUb21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5AaWRlYXNvbmJvYXJkLmNv
bT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL2kyYy90aSxkczkwKgorRjoJZHJp
dmVycy9tZWRpYS9pMmMvZHM5MCoKK0Y6CWluY2x1ZGUvbWVkaWEvaTJjL2RzOTAqCisKK1RJIEhE
QzMwMlggSFVNSURJVFkgRFJJVkVSCitNOglKYXZpZXIgQ2FycmFzY28gPGphdmllci5jYXJyYXNj
by5jcnV6QGdtYWlsLmNvbT4KK006CUxpIHBlaXl1IDw1NzlscHlAZ21haWwuY29tPgorTDoJbGlu
dXgtaWlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9odW1pZGl0eS90aSxoZGMzMDIwLnlhbWwKK0Y6CWRyaXZl
cnMvaWlvL2h1bWlkaXR5L2hkYzMwMjAuYworCitUSSBJQ1NTRyBFVEhFUk5FVCBEUklWRVIgKElD
U1NHKQorUjoJTUQgRGFuaXNoIEFud2FyIDxkYW5pc2hhbndhckB0aS5jb20+CitSOglSb2dlciBR
dWFkcm9zIDxyb2dlcnFAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m
cmFkZWFkLm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOgluZXRkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUv
YmluZGluZ3MvbmV0L3RpLGljc3MqLnlhbWwKK0Y6CWRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2lj
c3NnLyoKKworVEkgSjcyMUUgQ1NJMlJYIERSSVZFUgorTToJSmFpIEx1dGhyYSA8amFpLmx1dGhy
YUBsaW51eC5kZXY+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tZWRpYS90aSxqNzIxZS1j
c2kycngtc2hpbS55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL3RpL2o3MjFlLWNzaTJy
eC8KKworVEkgS0VZU1RPTkUgTVVMVElDT1JFIE5BVklHQVRPUiBEUklWRVJTCitNOglOaXNoYW50
aCBNZW5vbiA8bm1AdGkuY29tPgorTToJU2FudG9zaCBTaGlsaW1rYXIgPHNzYW50b3NoQGtlcm5l
bC5vcmc+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1hcm0ta2Vy
bmVsQGxpc3RzLmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQor
UzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgv
a2VybmVsL2dpdC90aS9saW51eC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k
aW5ncy9zb2MvdGkvdGkscHJ1c3MueWFtbAorRjoJZHJpdmVycy9wbWRvbWFpbi90aS9vbWFwX3By
bS5jCitGOglkcml2ZXJzL3NvYy90aS8qCitGOglpbmNsdWRlL2xpbnV4L3BydXNzX2RyaXZlci5o
CisKK1RJIExNNDl4eHggRkFNSUxZIEFTb0MgQ09ERUMgRFJJVkVSUworTToJTSBSIFN3YW1pIFJl
ZGR5IDxtci5zd2FtaS5yZWRkeUB0aS5jb20+CitNOglWaXNod2FzIEEgRGVzaHBhbmRlIDx2aXNo
d2FzLmEuZGVzaHBhbmRlQHRpLmNvbT4KK0w6CWxpbnV4LXNvdW5kQHZnZXIua2VybmVsLm9yZwor
UzoJTWFpbnRhaW5lZAorRjoJc291bmQvc29jL2NvZGVjcy9pc2FiZWxsZSoKK0Y6CXNvdW5kL3Nv
Yy9jb2RlY3MvbG00OTQ1MyoKKworVEkgTE1QOTIwNjQgQURDIERSSVZFUgorTToJTGVvbmFyZCBH
w7ZocnMgPGwuZ29laHJzQHBlbmd1dHJvbml4LmRlPgorUjoJa2VybmVsQHBlbmd1dHJvbml4LmRl
CitMOglsaW51eC1paW9Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvaWlvL2FkYy90aSxsbXA5MjA2NC55YW1sCitGOglk
cml2ZXJzL2lpby9hZGMvdGktbG1wOTIwNjQuYworCitUSSBQQ00zMDYwIEFTb0MgQ09ERUMgRFJJ
VkVSCitNOglLaXJpbGwgTWFyaW51c2hraW4gPGsubWFyaW51c2hraW5AZ21haWwuY29tPgorTDoJ
bGludXgtc291bmRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvc291bmQvcGNtMzA2MC50eHQKK0Y6CXNvdW5kL3NvYy9j
b2RlY3MvcGNtMzA2MCoKKworVEkgVEFTNTcxWCBGQU1JTFkgQVNvQyBDT0RFQyBEUklWRVIKK006
CUtldmluIENlcm5la2VlIDxjZXJuZWtlZUBjaHJvbWl1bS5vcmc+CitMOglsaW51eC1zb3VuZEB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJc291bmQvc29jL2NvZGVjcy90YXM1NzF4
KgorCitUSSBUTUFHNTI3MyBNQUdORVRPTUVURVIgRFJJVkVSCitNOglHZXJhbGQgTG9hY2tlciA8
Z2VyYWxkLmxvYWNrZXJAd29sZnZpc2lvbi5uZXQ+CitMOglsaW51eC1paW9Admdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
aWlvL21hZ25ldG9tZXRlci90aSx0bWFnNTI3My55YW1sCitGOglkcml2ZXJzL2lpby9tYWduZXRv
bWV0ZXIvdG1hZzUyNzMuYworCitUSSBUUkY3OTcwQSBORkMgRFJJVkVSCitNOglNYXJrIEdyZWVy
IDxtZ3JlZXJAYW5pbWFsY3JlZWsuY29tPgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwu
b3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9u
ZXQvbmZjL3RpLHRyZjc5NzBhLnlhbWwKK0Y6CWRyaXZlcnMvbmZjL3RyZjc5NzBhLmMKKworVEkg
VFNDMjA0NiBBREMgRFJJVkVSCitNOglPbGVrc2lqIFJlbXBlbCA8by5yZW1wZWxAcGVuZ3V0cm9u
aXguZGU+CitSOglrZXJuZWxAcGVuZ3V0cm9uaXguZGUKK0w6CWxpbnV4LWlpb0B2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n
cy9paW8vYWRjL3RpLHRzYzIwNDYueWFtbAorRjoJZHJpdmVycy9paW8vYWRjL3RpLXRzYzIwNDYu
YworCitUSSBUV0w0MDMwIFNFUklFUyBTT0MgQ09ERUMgRFJJVkVSCitNOglQZXRlciBVamZhbHVz
aSA8cGV0ZXIudWpmYWx1c2lAZ21haWwuY29tPgorTDoJbGludXgtc291bmRAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglzb3VuZC9zb2MvY29kZWNzL3R3bDQwMzAqCisKK1RJIFZQ
RS9DQUwgRFJJVkVSUworTToJQmVub2l0IFBhcnJvdCA8YnBhcnJvdEB0aS5jb20+CitMOglsaW51
eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly9saW51eHR2
Lm9yZy8KK1E6CWh0dHA6Ly9wYXRjaHdvcmsubGludXh0di5vcmcvcHJvamVjdC9saW51eC1tZWRp
YS9saXN0LworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3RpLGNh
bC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEvdGksdnBl
LnlhbWwKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdGkvY2FsLworRjoJZHJpdmVycy9tZWRp
YS9wbGF0Zm9ybS90aS92cGUvCisKK1RJIFdJTElOSyBXSVJFTEVTUyBEUklWRVJTCitMOglsaW51
eC13aXJlbGVzc0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly93aXJlbGVz
cy53aWtpLmtlcm5lbC5vcmcvZW4vdXNlcnMvRHJpdmVycy93bDEyeHgKK1c6CWh0dHBzOi8vd2ly
ZWxlc3Mud2lraS5rZXJuZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvd2wxMjUxCitGOglkcml2ZXJz
L25ldC93aXJlbGVzcy90aS8KKworVElNRUtFRVBJTkcsIENMT0NLU09VUkNFIENPUkUsIE5UUCwg
QUxBUk1USU1FUgorTToJSm9obiBTdHVsdHogPGpzdHVsdHpAZ29vZ2xlLmNvbT4KK006CVRob21h
cyBHbGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorUjoJU3RlcGhlbiBCb3lkIDxzYm95ZEBr
ZXJuZWwub3JnPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3Rp
cC90aXAuZ2l0IHRpbWVycy9jb3JlCitGOglpbmNsdWRlL2xpbnV4L2Nsb2Nrc291cmNlLmgKK0Y6
CWluY2x1ZGUvbGludXgvdGltZS5oCitGOglpbmNsdWRlL2xpbnV4L3RpbWVrZWVwZXJfaW50ZXJu
YWwuaAorRjoJaW5jbHVkZS9saW51eC90aW1la2VlcGluZy5oCitGOglpbmNsdWRlL2xpbnV4L3Rp
bWV4LmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC90aW1lLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51
eC90aW1leC5oCitGOglrZXJuZWwvdGltZS9hbGFybXRpbWVyLmMKK0Y6CWtlcm5lbC90aW1lL2Ns
b2Nrc291cmNlKgorRjoJa2VybmVsL3RpbWUvbnRwKgorRjoJa2VybmVsL3RpbWUvdGltZS5jCitG
OglrZXJuZWwvdGltZS90aW1lY29uc3QuYmMKK0Y6CWtlcm5lbC90aW1lL3RpbWVjb252LmMKK0Y6
CWtlcm5lbC90aW1lL3RpbWVjb3VudGVyLmMKK0Y6CWtlcm5lbC90aW1lL3RpbWVrZWVwaW5nKgor
RjoJa2VybmVsL3RpbWUvdGltZV90ZXN0LmMKK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Rp
bWVycy8KKworVElQQyBORVRXT1JLIExBWUVSCitNOglKb24gTWFsb3kgPGptYWxveUByZWRoYXQu
Y29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZyAoY29yZSBrZXJuZWwgY29kZSkKK0w6CXRp
cGMtZGlzY3Vzc2lvbkBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQgKHVzZXIgYXBwcywgZ2VuZXJhbCBk
aXNjdXNzaW9uKQorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3RpcGMuc291cmNlZm9yZ2UubmV0
LworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3RpcGMqLmgKK0Y6CW5ldC90aXBjLworCitUTEFOIE5F
VFdPUksgRFJJVkVSCitNOglTYW11ZWwgQ2hlc3NtYW4gPGNoZXNzbWFuQHR1eC5vcmc+CitMOgl0
bGFuLWRldmVsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldCAoc3Vic2NyaWJlcnMtb25seSkKK1M6CU1h
aW50YWluZWQKK1c6CWh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdGxhbi8KK0Y6CURv
Y3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC90aS90bGFuLnJz
dAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvdGxhbi4qCisKK1RNSU8vU0RISSBNTUMgRFJJ
VkVSCitNOglXb2xmcmFtIFNhbmcgPHdzYStyZW5lc2FzQHNhbmctZW5naW5lZXJpbmcuY29tPgor
TDoJbGludXgtbW1jQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtcmVuZXNhcy1zb2NAdmdlci5r
ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWRyaXZlcnMvbW1jL2hvc3QvcmVuZXNhc19zZGhp
KgorRjoJZHJpdmVycy9tbWMvaG9zdC90bWlvX21tYyoKK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZv
cm1fZGF0YS90bWlvLmgKKworVE1QNTEzIEhBUkRXQVJFIE1PTklUT1IgRFJJVkVSCitNOglFcmlj
IFRyZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaC1jb250cm9scy5jb20+CitMOglsaW51eC1od21v
bkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24v
dG1wNTEzLnJzdAorRjoJZHJpdmVycy9od21vbi90bXA1MTMuYworCitUTVBGUyAoU0hNRU0gRklM
RVNZU1RFTSkKK006CUh1Z2ggRGlja2lucyA8aHVnaGRAZ29vZ2xlLmNvbT4KK1I6CUJhb2xpbiBX
YW5nIDxiYW9saW4ud2FuZ0BsaW51eC5hbGliYWJhLmNvbT4KK0w6CWxpbnV4LW1tQGt2YWNrLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC9zaG1lbV9mcy5oCitGOgltbS9zaG1l
bS5jCisKK1RPTU9ZTyBTRUNVUklUWSBNT0RVTEUKK006CUtlbnRhcm8gVGFrZWRhIDx0YWtlZGFr
bkBudHRkYXRhLmNvLmpwPgorTToJVGV0c3VvIEhhbmRhIDxwZW5ndWluLWtlcm5lbEBJLWxvdmUu
U0FLVVJBLm5lLmpwPgorTDoJdG9tb3lvLWRldi1lbkBsaXN0cy5vc2RuLm1lIChzdWJzY3JpYmVy
cy1vbmx5LCBmb3IgZGV2ZWxvcGVycyBpbiBFbmdsaXNoKQorTDoJdG9tb3lvLXVzZXJzLWVuQGxp
c3RzLm9zZG4ubWUgKHN1YnNjcmliZXJzLW9ubHksIGZvciB1c2VycyBpbiBFbmdsaXNoKQorTDoJ
dG9tb3lvLWRldkBsaXN0cy5vc2RuLm1lIChzdWJzY3JpYmVycy1vbmx5LCBmb3IgZGV2ZWxvcGVy
cyBpbiBKYXBhbmVzZSkKK0w6CXRvbW95by11c2Vyc0BsaXN0cy5vc2RuLm1lIChzdWJzY3JpYmVy
cy1vbmx5LCBmb3IgdXNlcnMgaW4gSmFwYW5lc2UpCitTOglNYWludGFpbmVkCitXOglodHRwczov
L3RvbW95by5zb3VyY2Vmb3JnZS5uZXQvCitGOglzZWN1cml0eS90b21veW8vCisKK1RPUFNUQVIg
TEFQVE9QIEVYVFJBUyBEUklWRVIKK006CUhlcnRvbiBSb25hbGRvIEtyemVzaW5za2kgPGhlcnRv
bkBjYW5vbmljYWwuY29tPgorTDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcGxhdGZvcm0veDg2L3RvcHN0YXItbGFwdG9wLmMK
KworVE9SQURFWCBFTUJFRERFRCBDT05UUk9MTEVSIERSSVZFUgorTToJRW1hbnVlbGUgR2hpZG9s
aSA8Z2hpZG9saWVtYW51ZWxlQGdtYWlsLmNvbT4KK006CUZyYW5jZXNjbyBEb2xjaW5pIDxmcmFu
Y2VzY29AZG9sY2luaS5pdD4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNl
dHJlZS9iaW5kaW5ncy9wb3dlci9yZXNldC90b3JhZGV4LHNtYXJjLWVjLnlhbWwKK0Y6CWRyaXZl
cnMvcG93ZXIvcmVzZXQvdGR4LWVjLXBvd2Vyb2ZmLmMKKworVE9SVFVSRS1URVNUIE1PRFVMRVMK
K006CURhdmlkbG9ociBCdWVzbyA8ZGF2ZUBzdGdvbGFicy5uZXQ+CitNOgkiUGF1bCBFLiBNY0tl
bm5leSIgPHBhdWxtY2tAa2VybmVsLm9yZz4KK006CUpvc2ggVHJpcGxldHQgPGpvc2hAam9zaHRy
aXBsZXR0Lm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9y
Y3UvbGludXguZ2l0IHJjdS9kZXYKK0Y6CURvY3VtZW50YXRpb24vUkNVL3RvcnR1cmUucnN0CitG
OglrZXJuZWwvbG9ja2luZy9sb2NrdG9ydHVyZS5jCitGOglrZXJuZWwvcmN1L3JjdXNjYWxlLmMK
K0Y6CWtlcm5lbC9yY3UvcmN1dG9ydHVyZS5jCitGOglrZXJuZWwvcmN1L3JlZnNjYWxlLmMKK0Y6
CWtlcm5lbC90b3J0dXJlLmMKKworVE9TSElCQSBBQ1BJIEVYVFJBUyBEUklWRVIKK006CUF6YWVs
IEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni90
b3NoaWJhX2FjcGkuYworCitUT1NISUJBIEJMVUVUT09USCBEUklWRVIKK006CUF6YWVsIEF2YWxv
cyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni90b3NoaWJh
X2JsdWV0b290aC5jCisKK1RPU0hJQkEgSEREIEFDVElWRSBQUk9URUNUSU9OIFNFTlNPUiBEUklW
RVIKK006CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0w6CXBsYXRmb3Jt
LWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3Bs
YXRmb3JtL3g4Ni90b3NoaWJhX2hhcHMuYworCitUT1NISUJBIFNNTSBEUklWRVIKK006CUpvbmF0
aGFuIEJ1enphcmQgPGpvbmF0aGFuQGJ1enphcmQub3JnLnVrPgorUzoJTWFpbnRhaW5lZAorVzoJ
aHR0cDovL3d3dy5idXp6YXJkLm9yZy51ay90b3NoaWJhLworRjoJZHJpdmVycy9jaGFyL3Rvc2hp
YmEuYworRjoJaW5jbHVkZS9saW51eC90b3NoaWJhLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC90
b3NoaWJhLmgKKworVE9TSElCQSBUQzM1ODc0MyBEUklWRVIKK006CUhhbnMgVmVya3VpbCA8aHZl
cmt1aWwtY2lzY29AeHM0YWxsLm5sPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWVkaWEv
aTJjL3Rvc2hpYmEsdGMzNTg3NDMudHh0CitGOglkcml2ZXJzL21lZGlhL2kyYy90YzM1ODc0MyoK
K0Y6CWluY2x1ZGUvbWVkaWEvaTJjL3RjMzU4NzQzLmgKKworVE9TSElCQSBXTUkgSE9US0VZUyBE
UklWRVIKK006CUF6YWVsIEF2YWxvcyA8Y29wcm9zY2VmYWxvQGdtYWlsLmNvbT4KK0w6CXBsYXRm
b3JtLWRyaXZlci14ODZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L3BsYXRmb3JtL3g4Ni90b3NoaWJhLXdtaS5jCisKK1RQTSBERVZJQ0UgRFJJVkVSCitNOglQZXRl
ciBIdWV3ZSA8cGV0ZXJodWV3ZUBnbXguZGU+CitNOglKYXJra28gU2Fra2luZW4gPGphcmtrb0Br
ZXJuZWwub3JnPgorUjoJSmFzb24gR3VudGhvcnBlIDxqZ2dAemllcGUuY2E+CitMOglsaW51eC1p
bnRlZ3JpdHlAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2NvZGVi
ZXJnLm9yZy9qYXJra28vbGludXgtdHBtZGQtdGVzdAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2Vy
bmVsLm9yZy9wcm9qZWN0L2xpbnV4LWludGVncml0eS9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9qYXJra28vbGludXgtdHBtZGQuZ2l0
CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdHBtLworRjoJZHJpdmVycy9j
aGFyL3RwbS8KK0Y6CWluY2x1ZGUvbGludXgvdHBtKi5oCitGOglpbmNsdWRlL3VhcGkvbGludXgv
dnRwbV9wcm94eS5oCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90cG0yLworCitUUFM1NDZE
MjQgRFJJVkVSCitNOglEdWtlIER1IDxkdWtlZHU4M0BnbWFpbC5jb20+CitMOglsaW51eC1od21v
bkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24v
dHBzNTQ2ZDI0LnJzdAorRjoJZHJpdmVycy9od21vbi9wbWJ1cy90cHM1NDZkMjQuYworCitUUSBT
WVNURU1TIEJPQVJEICYgRFJJVkVSIFNVUFBPUlQKK0w6CWxpbnV4QGV3LnRxLWdyb3VwLmNvbQor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL3d3dy50cS1ncm91cC5jb20vZW4vcHJvZHVjdHMvdHEt
ZW1iZWRkZWQvCitGOglhcmNoL2FybS9ib290L2R0cy9ueHAvaW14LyptYmEqLmR0cyoKK0Y6CWFy
Y2gvYXJtL2Jvb3QvZHRzL254cC9pbXgvKnRxbWEqLmR0cyoKK0Y6CWFyY2gvYXJtNjQvYm9vdC9k
dHMvZnJlZXNjYWxlL2ZzbC0qdHFtbCouZHRzKgorRjoJYXJjaC9hcm02NC9ib290L2R0cy9mcmVl
c2NhbGUvaW14Km1iYSouZHRzKgorRjoJYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvaW14
KnRxbWEqLmR0cyoKK0Y6CWFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL21iYSouZHRzaQor
RjoJYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvdHFtbCouZHRzKgorRjoJZHJpdmVycy9n
cGlvL2dwaW8tdHFteDg2LmMKK0Y6CWRyaXZlcnMvbWZkL3RxbXg4Ni5jCitGOglkcml2ZXJzL3dh
dGNoZG9nL3RxbXg4Nl93ZHQuYworCitUUkFDSU5HCitNOglTdGV2ZW4gUm9zdGVkdCA8cm9zdGVk
dEBnb29kbWlzLm9yZz4KK006CU1hc2FtaSBIaXJhbWF0c3UgPG1oaXJhbWF0QGtlcm5lbC5vcmc+
CitSOglNYXRoaWV1IERlc25veWVycyA8bWF0aGlldS5kZXNub3llcnNAZWZmaWNpb3MuY29tPgor
TDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtdHJhY2Uta2VybmVsQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdvcmsua2VybmVs
Lm9yZy9wcm9qZWN0L2xpbnV4LXRyYWNlLWtlcm5lbC9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5r
ZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90cmFjZS9saW51eC10cmFjZS5naXQK
K0Y6CURvY3VtZW50YXRpb24vdHJhY2UvKgorRjoJZnMvdHJhY2Vmcy8KK0Y6CWluY2x1ZGUvbGlu
dXgvdHJhY2UqLmgKK0Y6CWluY2x1ZGUvdHJhY2UvCitGOglrZXJuZWwvdHJhY2UvCitGOglrZXJu
ZWwvdHJhY2Vwb2ludC5jCitGOglzY3JpcHRzL3RyYWNpbmcvCitGOgl0b29scy90ZXN0aW5nL3Nl
bGZ0ZXN0cy9mdHJhY2UvCisKK1RSQUNJTkcgTU1JTyBBQ0NFU1NFUyAoTU1JT1RSQUNFKQorTToJ
U3RldmVuIFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5vcmc+CitNOglNYXNhbWkgSGlyYW1hdHN1
IDxtaGlyYW1hdEBrZXJuZWwub3JnPgorUjoJUGVra2EgUGFhbGFuZW4gPHBwYWFsYW5lbkBnbWFp
bC5jb20+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitMOglub3V2ZWF1QGxpc3Rz
LmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJjaC94ODYvbW0va21taW8uYwor
RjoJYXJjaC94ODYvbW0vbW1pby1tb2QuYworRjoJYXJjaC94ODYvbW0vdGVzdG1taW90cmFjZS5j
CitGOglpbmNsdWRlL2xpbnV4L21taW90cmFjZS5oCitGOglrZXJuZWwvdHJhY2UvdHJhY2VfbW1p
b3RyYWNlLmMKKworVFJBQ0lORyBPUyBOT0lTRSAvIExBVEVOQ1kgVFJBQ0VSUworTToJU3RldmVu
IFJvc3RlZHQgPHJvc3RlZHRAZ29vZG1pcy5vcmc+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL3RyYWNlL2h3bGF0X2RldGVjdG9yLnJzdAorRjoJRG9jdW1lbnRhdGlvbi90cmFjZS9v
c25vaXNlLXRyYWNlci5yc3QKK0Y6CURvY3VtZW50YXRpb24vdHJhY2UvdGltZXJsYXQtdHJhY2Vy
LnJzdAorRjoJYXJjaC8qL2tlcm5lbC90cmFjZS5jCitGOglpbmNsdWRlL3RyYWNlL2V2ZW50cy9v
c25vaXNlLmgKK0Y6CWtlcm5lbC90cmFjZS90cmFjZV9od2xhdC5jCitGOglrZXJuZWwvdHJhY2Uv
dHJhY2VfaXJxc29mZi5jCitGOglrZXJuZWwvdHJhY2UvdHJhY2Vfb3Nub2lzZS5jCitGOglrZXJu
ZWwvdHJhY2UvdHJhY2Vfc2NoZWRfd2FrZXVwLmMKKworVFJBRElUSU9OQUwgQ0hJTkVTRSBET0NV
TUVOVEFUSU9OCitNOglIdSBIYW93ZW4gPDIwMjMwMDIwODlAbGluay50eXV0LmVkdS5jbj4KK1M6
CU1haW50YWluZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9zcmNyZXMyNTgvbGludXgtZG9jCitU
OglnaXQgZ2l0Oi8vZ2l0aHViLmNvbS9zcmNyZXMyNTgvbGludXgtZG9jLmdpdCBkb2MtemgtdHcK
K0Y6CURvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX1RXLworCitUUklHR0VSIFNPVVJDRSAt
IFBXTQorTToJRGF2aWQgTGVjaG5lciA8ZGxlY2huZXJAYmF5bGlicmUuY29tPgorUzoJTWFpbnRh
aW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3RyaWdnZXItc291cmNl
L3B3bS10cmlnZ2VyLnlhbWwKKworVFJVU1RFRCBTRUNVUklUWSBNT0RVTEUgKFRTTSkgSU5GUkFT
VFJVQ1RVUkUKK006CURhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgorTDoJ
bGludXgtY29jb0BsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vQUJJL3Rlc3RpbmcvY29uZmlnZnMtdHNtLXJlcG9ydAorRjoJRG9jdW1lbnRhdGlvbi9kcml2
ZXItYXBpL2NvY28vCitGOglkcml2ZXJzL3ZpcnQvY29jby9ndWVzdC8KK0Y6CWluY2x1ZGUvbGlu
dXgvdHNtKi5oCitGOglzYW1wbGVzL3RzbS1tci8KKworVFJVU1RFRCBTRVJWSUNFUyBURUUgRFJJ
VkVSCitNOglCYWxpbnQgRG9ic3pheSA8YmFsaW50LmRvYnN6YXlAYXJtLmNvbT4KK006CVN1ZGVl
cCBIb2xsYSA8c3VkZWVwLmhvbGxhQGFybS5jb20+CitMOglsaW51eC1hcm0ta2VybmVsQGxpc3Rz
LmluZnJhZGVhZC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorTDoJdHJ1c3Rl
ZC1zZXJ2aWNlc0BsaXN0cy50cnVzdGVkZmlybXdhcmUub3JnCitTOglNYWludGFpbmVkCitGOglE
b2N1bWVudGF0aW9uL3RlZS90cy10ZWUucnN0CitGOglkcml2ZXJzL3RlZS90c3RlZS8KKworVFRZ
IExBWUVSIEFORCBTRVJJQUwgRFJJVkVSUworTToJR3JlZyBLcm9haC1IYXJ0bWFuIDxncmVna2hA
bGludXhmb3VuZGF0aW9uLm9yZz4KK006CUppcmkgU2xhYnkgPGppcmlzbGFieUBrZXJuZWwub3Jn
PgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtc2VyaWFsQHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L2dyZWdraC90dHkuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Rl
dmljZXRyZWUvYmluZGluZ3Mvc2VyaWFsLworRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3Nl
cmlhbC8KK0Y6CWRyaXZlcnMvdHR5LworRjoJaW5jbHVkZS9saW51eC9zZWxlY3Rpb24uaAorRjoJ
aW5jbHVkZS9saW51eC9zZXJpYWwuaAorRjoJaW5jbHVkZS9saW51eC9zZXJpYWxfY29yZS5oCitG
OglpbmNsdWRlL2xpbnV4L3N5c3JxLmgKK0Y6CWluY2x1ZGUvbGludXgvdHR5Ki5oCitGOglpbmNs
dWRlL2xpbnV4L3Z0LmgKK0Y6CWluY2x1ZGUvbGludXgvdnRfKi5oCitGOglpbmNsdWRlL3VhcGkv
bGludXgvc2VyaWFsLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9zZXJpYWxfY29yZS5oCitGOglp
bmNsdWRlL3VhcGkvbGludXgvdHR5LmgKKworVFVBOTAwMSBNRURJQSBEUklWRVIKK0w6CWxpbnV4
LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL2xpbnV4dHYub3Jn
CitROglodHRwOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlz
dC8KK0Y6CWRyaXZlcnMvbWVkaWEvdHVuZXJzL3R1YTkwMDEqCisKK1RVTElQIE5FVFdPUksgRFJJ
VkVSUworTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworTDoJbGludXgtcGFyaXNjQHZnZXIua2Vy
bmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC9kZWMvdHVsaXAvCisK
K1RVTi9UQVAgZHJpdmVyCitNOglXaWxsZW0gZGUgQnJ1aWpuIDx3aWxsZW1kZWJydWlqbi5rZXJu
ZWxAZ21haWwuY29tPgorTToJSmFzb24gV2FuZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KK1M6CU1h
aW50YWluZWQKK1c6CWh0dHA6Ly92dHVuLnNvdXJjZWZvcmdlLm5ldC90dW4KK0Y6CURvY3VtZW50
YXRpb24vbmV0d29ya2luZy90dW50YXAucnN0CitGOglhcmNoL3VtL29zLUxpbnV4L2RyaXZlcnMv
CitGOglkcml2ZXJzL25ldC90YXAuYworRjoJZHJpdmVycy9uZXQvdHVuKgorCitUVVJCT0NIQU5O
RUwgU1VCU1lTVEVNCitNOgkiTWFjaWVqIFcuIFJvenlja2kiIDxtYWNyb0BvcmNhbS5tZS51az4K
K0w6CWxpbnV4LW1pcHNAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitROglodHRwczov
L3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGludXgtbWlwcy9saXN0LworRjoJZHJpdmVy
cy90Yy8KK0Y6CWluY2x1ZGUvbGludXgvdGMuaAorCitUVVJCT1NUQVQgVVRJTElUWQorTToJIkxl
biBCcm93biIgPGxlbmJAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXBtQHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitROglodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3Byb2plY3QvbGlu
dXgtcG0vbGlzdC8KK0I6CWh0dHBzOi8vYnVnemlsbGEua2VybmVsLm9yZworVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9sZW5iL2xpbnV4LmdpdCB0
dXJib3N0YXQKK0Y6CXRvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvCitGOgl0b29scy90ZXN0aW5n
L3NlbGZ0ZXN0cy90dXJib3N0YXQvCisKK1RVWEVETyBEUklWRVJTCitNOglXZXJuZXIgU2VtYmFj
aCA8d3NlQHR1eGVkb2NvbXB1dGVycy5jb20+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIu
a2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3BsYXRmb3JtL3g4Ni90dXhlZG8v
CisKK1RXNTg2NCBWSURFTzRMSU5VWCBEUklWRVIKK006CUJsdWVjaGVycnkgTWFpbnRhaW5lcnMg
PG1haW50YWluZXJzQGJsdWVjaGVycnlkdnIuY29tPgorTToJQW5kcmV5IFV0a2luIDxhbmRyZXku
dXRraW5AY29ycC5ibHVlY2hlcnJ5Lm5ldD4KK006CUFuZHJleSBVdGtpbiA8YW5kcmV5X3V0a2lu
QGZhc3RtYWlsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitGOglkcml2ZXJzL21lZGlhL3BjaS90dzU4NjQvCisKK1RXNjggVklERU80TElOVVggRFJJ
VkVSCitNOglIYW5zIFZlcmt1aWwgPGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJT2RkIEZpeGVzCitXOglodHRwczovL2xpbnV4dHYub3JnCitU
OglnaXQgZ2l0Oi8vbGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3BjaS90
dzY4LworCitUVzY4NlggVklERU80TElOVVggRFJJVkVSCitNOglFemVxdWllbCBHYXJjaWEgPGV6
ZXF1aWVsQHZhbmd1YXJkaWFzdXIuY29tLmFyPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwOi8vbGludXh0di5vcmcKK1Q6CWdpdCBnaXQ6Ly9s
aW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEvcGNpL3R3Njg2eC8KKworVS1C
T09UIEVOVklST05NRU5UIFZBUklBQkxFUworTToJUmFmYcWCIE1pxYJlY2tpIDxyYWZhbEBtaWxl
Y2tpLnBsPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL252bWVtL2xheW91dHMvdS1ib290LGVudi55YW1sCitGOglkcml2ZXJzL252bWVtL2xheW91
dHMvdS1ib290LWVudi5jCitGOglkcml2ZXJzL252bWVtL3UtYm9vdC1lbnYuYworCitVQUNDRSBB
Q0NFTEVSQVRPUiBGUkFNRVdPUksKK006CVpoYW5nZmVpIEdhbyA8emhhbmdmZWkuZ2FvQGxpbmFy
by5vcmc+CitNOglaaG91IFdhbmcgPHdhbmd6aG91MUBoaXNpbGljb24uY29tPgorTDoJbGludXgt
YWNjZWxlcmF0b3JzQGxpc3RzLm96bGFicy5vcmcKK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMt
ZHJpdmVyLXVhY2NlCitGOglEb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy91YWNjZS5yc3QKK0Y6
CWRyaXZlcnMvbWlzYy91YWNjZS8KK0Y6CWluY2x1ZGUvbGludXgvdWFjY2UuaAorRjoJaW5jbHVk
ZS91YXBpL21pc2MvdWFjY2UvCisKK1VCSSBGSUxFIFNZU1RFTSAoVUJJRlMpCitNOglSaWNoYXJk
IFdlaW5iZXJnZXIgPHJpY2hhcmRAbm9kLmF0PgorUjoJWmhpaGFvIENoZW5nIDxjaGVuZ3poaWhh
bzFAaHVhd2VpLmNvbT4KK0w6CWxpbnV4LW10ZEBsaXN0cy5pbmZyYWRlYWQub3JnCitTOglTdXBw
b3J0ZWQKK1c6CWh0dHA6Ly93d3cubGludXgtbXRkLmluZnJhZGVhZC5vcmcvZG9jL3ViaWZzLmh0
bWwKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQv
cncvdWJpZnMuZ2l0IG5leHQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp
bnV4L2tlcm5lbC9naXQvcncvdWJpZnMuZ2l0IGZpeGVzCitGOglEb2N1bWVudGF0aW9uL0FCSS90
ZXN0aW5nL3N5c2ZzLWZzLXViaWZzCitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3ViaWZz
LWF1dGhlbnRpY2F0aW9uLnJzdAorRjoJRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy91Ymlmcy5y
c3QKK0Y6CWZzL3ViaWZzLworCitVQkxLIFVTRVJTUEFDRSBCTE9DSyBEUklWRVIKK006CU1pbmcg
TGVpIDxtaW5nLmxlaUByZWRoYXQuY29tPgorTDoJbGludXgtYmxvY2tAdmdlci5rZXJuZWwub3Jn
CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2Jsb2NrL3VibGsucnN0CitGOglkcml2
ZXJzL2Jsb2NrL3VibGtfZHJ2LmMKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC91YmxrX2NtZC5oCitG
Ogl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy91YmxrLworCitVQlNBTgorTToJS2VlcyBDb29rIDxr
ZWVzQGtlcm5lbC5vcmc+CitSOglNYXJjbyBFbHZlciA8ZWx2ZXJAZ29vZ2xlLmNvbT4KK1I6CUFu
ZHJleSBLb25vdmFsb3YgPGFuZHJleWtudmxAZ21haWwuY29tPgorUjoJQW5kcmV5IFJ5YWJpbmlu
IDxyeWFiaW5pbi5hLmFAZ21haWwuY29tPgorTDoJa2FzYW4tZGV2QGdvb2dsZWdyb3Vwcy5jb20K
K0w6CWxpbnV4LWhhcmRlbmluZ0B2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0
IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rZWVzL2xpbnV4
LmdpdCBmb3ItbmV4dC9oYXJkZW5pbmcKK0Y6CURvY3VtZW50YXRpb24vZGV2LXRvb2xzL3Vic2Fu
LnJzdAorRjoJaW5jbHVkZS9saW51eC91YnNhbi5oCitGOglsaWIvS2NvbmZpZy51YnNhbgorRjoJ
bGliL3Rlc3RfdWJzYW4uYworRjoJbGliL3Vic2FuLmMKK0Y6CWxpYi91YnNhbi5oCitGOglzY3Jp
cHRzL01ha2VmaWxlLnVic2FuCitLOglcYkFSQ0hfSEFTX1VCU0FOXGIKKworVUNMSU5VWCAoTTY4
S05PTU1VIEFORCBDT0xERklSRSkKK006CUdyZWcgVW5nZXJlciA8Z2VyZ0BsaW51eC1tNjhrLm9y
Zz4KK0w6CWxpbnV4LW02OGtAbGlzdHMubGludXgtbTY4ay5vcmcKK1M6CU1haW50YWluZWQKK1c6
CWh0dHA6Ly93d3cubGludXgtbTY4ay5vcmcvCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dlcmcvbTY4a25vbW11LmdpdAorRjoJYXJjaC9tNjhr
LyovKl9uby4qCitGOglhcmNoL202OGsvNjgqLworRjoJYXJjaC9tNjhrL2NvbGRmaXJlLworRjoJ
YXJjaC9tNjhrL2luY2x1ZGUvYXNtLypfbm8uKgorCitVREYgRklMRVNZU1RFTQorTToJSmFuIEth
cmEgPGphY2tAc3VzZS5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2ZpbGVz
eXN0ZW1zL3VkZi5yc3QKK0Y6CWZzL3VkZi8KKworVURSQVcgVEFCTEVUCitNOglCYXN0aWVuIE5v
Y2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaGlkL2hpZC11ZHJhdy1wczMuYworCitVSElEIFVT
RVJTUEFDRSBISUQgSU8gRFJJVkVSCitNOglEYXZpZCBSaGVpbnNiZXJnIDxkYXZpZEByZWFkYWhl
YWQuZXU+CitMOglsaW51eC1pbnB1dEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvaGlkL3VoaWQuYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3VoaWQuaAorCitVTFBJ
IEJVUworTToJSGVpa2tpIEtyb2dlcnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29t
PgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy91c2IvY29tbW9uL3VscGkuYworRjoJaW5jbHVkZS9saW51eC91bHBpLworCitVTklDT0RFIFNV
QlNZU1RFTQorTToJR2FicmllbCBLcmlzbWFuIEJlcnRhemkgPGtyaXNtYW5Aa2VybmVsLm9yZz4K
K0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1Q6CWdpdCBn
aXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva3Jpc21hbi91bmlj
b2RlLmdpdAorRjoJZnMvdW5pY29kZS8KKworVU5JRkRFRgorTToJVG9ueSBGaW5jaCA8ZG90QGRv
dGF0LmF0PgorUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZgor
RjoJc2NyaXB0cy91bmlmZGVmLmMKKworVU5JRk9STSBDRFJPTSBEUklWRVIKK006CVBoaWxsaXAg
UG90dGVyIDxwaGlsQHBoaWxwb3R0ZXIuY28udWs+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVu
dGF0aW9uL2Nkcm9tLworRjoJZHJpdmVycy9jZHJvbS9jZHJvbS5jCitGOglpbmNsdWRlL2xpbnV4
L2Nkcm9tLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9jZHJvbS5oCisKK1VOSU9OLUZJTkQKK006
CVhhdmllciA8eGF2aWVyX3F5QDE2My5jb20+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3VuaW9uX2ZpbmQu
cnN0CitGOglEb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9jb3JlLWFwaS91bmlvbl9m
aW5kLnJzdAorRjoJaW5jbHVkZS9saW51eC91bmlvbl9maW5kLmgKK0Y6CWxpYi91bmlvbl9maW5k
LmMKKworVU5JVkVSU0FMIEZMQVNIIFNUT1JBR0UgSE9TVCBDT05UUk9MTEVSIERSSVZFUgorUjoJ
QWxpbSBBa2h0YXIgPGFsaW0uYWtodGFyQHNhbXN1bmcuY29tPgorUjoJQXZyaSBBbHRtYW4gPGF2
cmkuYWx0bWFuQHdkYy5jb20+CitSOglCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9y
Zz4KK0w6CWxpbnV4LXNjc2lAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91ZnMvCitGOglEb2N1bWVudGF0aW9uL3Njc2kv
dWZzLnJzdAorRjoJZHJpdmVycy91ZnMvY29yZS8KKworVU5JVkVSU0FMIEZMQVNIIFNUT1JBR0Ug
SE9TVCBDT05UUk9MTEVSIERSSVZFUiBEV0MgSE9PS1MKK006CVBlZHJvIFNvdXNhIDxwZWRyb20u
c291c2FAc3lub3BzeXMuY29tPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1
cHBvcnRlZAorRjoJZHJpdmVycy91ZnMvaG9zdC8qZHdjKgorCitVTklWRVJTQUwgRkxBU0ggU1RP
UkFHRSBIT1NUIENPTlRST0xMRVIgRFJJVkVSIEVYWU5PUyBIT09LUworTToJQWxpbSBBa2h0YXIg
PGFsaW0uYWtodGFyQHNhbXN1bmcuY29tPgorUjoJUGV0ZXIgR3JpZmZpbiA8cGV0ZXIuZ3JpZmZp
bkBsaW5hcm8ub3JnPgorTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LXNh
bXN1bmctc29jQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy91ZnMv
aG9zdC91ZnMtZXh5bm9zKgorCitVTklWRVJTQUwgRkxBU0ggU1RPUkFHRSBIT1NUIENPTlRST0xM
RVIgRFJJVkVSIE1FRElBVEVLIEhPT0tTCitNOglQZXRlciBXYW5nIDxwZXRlci53YW5nQG1lZGlh
dGVrLmNvbT4KK1I6CVN0YW5sZXkgSmh1IDxjaHUuc3RhbmxleUBnbWFpbC5jb20+CitMOglsaW51
eC1zY3NpQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtbWVkaWF0ZWtAbGlzdHMuaW5mcmFkZWFk
Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL3Vmcy9ob3N0L3Vmcy1tZWRpYXRlayoKKworVU5JVkVSU0FMIEZMQVNIIFNUT1JBR0Ug
SE9TVCBDT05UUk9MTEVSIERSSVZFUiBRVUFMQ09NTSBIT09LUworTToJTWFuaXZhbm5hbiBTYWRo
YXNpdmFtIDxtYW5pdmFubmFuLnNhZGhhc2l2YW1AbGluYXJvLm9yZz4KK0w6CWxpbnV4LWFybS1t
c21Admdlci5rZXJuZWwub3JnCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Vmcy9xY29tLHVm
cy55YW1sCitGOglkcml2ZXJzL3Vmcy9ob3N0L3Vmcy1xY29tKgorCitVTklWRVJTQUwgRkxBU0gg
U1RPUkFHRSBIT1NUIENPTlRST0xMRVIgRFJJVkVSIFJFTkVTQVMgSE9PS1MKK006CVlvc2hpaGly
byBTaGltb2RhIDx5b3NoaWhpcm8uc2hpbW9kYS51aEByZW5lc2FzLmNvbT4KK0w6CWxpbnV4LXJl
bmVzYXMtc29jQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtc2NzaUB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdWZzL2hvc3QvdWZzLXJlbmVzYXMuYworCitVTlNP
UlRFRCBCTE9DSyBJTUFHRVMgKFVCSSkKK006CVJpY2hhcmQgV2VpbmJlcmdlciA8cmljaGFyZEBu
b2QuYXQ+CitSOglaaGloYW8gQ2hlbmcgPGNoZW5nemhpaGFvMUBodWF3ZWkuY29tPgorTDoJbGlu
dXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAorVzoJaHR0cDovL3d3dy5s
aW51eC1tdGQuaW5mcmFkZWFkLm9yZy8KK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIv
c2NtL2xpbnV4L2tlcm5lbC9naXQvcncvdWJpZnMuZ2l0IG5leHQKK1Q6CWdpdCBnaXQ6Ly9naXQu
a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcncvdWJpZnMuZ2l0IGZpeGVzCitG
Oglkcml2ZXJzL210ZC91YmkvCitGOglpbmNsdWRlL2xpbnV4L210ZC91YmkuaAorRjoJaW5jbHVk
ZS91YXBpL210ZC91YmktdXNlci5oCisKK1VQUk9CRVMKK006CU1hc2FtaSBIaXJhbWF0c3UgPG1o
aXJhbWF0QGtlcm5lbC5vcmc+CitNOglPbGVnIE5lc3Rlcm92IDxvbGVnQHJlZGhhdC5jb20+CitN
OglQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CitMOglsaW51eC1rZXJuZWxA
dmdlci5rZXJuZWwub3JnCitMOglsaW51eC10cmFjZS1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitT
OglNYWludGFpbmVkCitGOglhcmNoLyovaW5jbHVkZS9hc20vdXByb2Jlcy5oCitGOglhcmNoLyov
a2VybmVsL3Byb2Jlcy91cHJvYmVzLmMKK0Y6CWFyY2gvKi9rZXJuZWwvdXByb2Jlcy5jCitGOglp
bmNsdWRlL2xpbnV4L3Vwcm9iZXMuaAorRjoJa2VybmVsL2V2ZW50cy91cHJvYmVzLmMKKworVVNC
ICJVU0JORVQiIERSSVZFUiBGUkFNRVdPUksKK006CU9saXZlciBOZXVrdW0gPG9uZXVrdW1Ac3Vz
ZS5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRw
Oi8vd3d3LmxpbnV4LXVzYi5vcmcvdXNibmV0CitGOglkcml2ZXJzL25ldC91c2IvdXNibmV0LmMK
K0Y6CWluY2x1ZGUvbGludXgvdXNiL3VzYm5ldC5oCisKK1VTQiBBQ00gRFJJVkVSCitNOglPbGl2
ZXIgTmV1a3VtIDxvbmV1a3VtQHN1c2UuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi91c2IvYWNtLnJzdAorRjoJZHJpdmVy
cy91c2IvY2xhc3MvY2RjLWFjbS4qCisKK1VTQiBBUFBMRSBNRkkgRkFTVENIQVJHRSBEUklWRVIK
K006CUJhc3RpZW4gTm9jZXJhIDxoYWRlc3NAaGFkZXNzLm5ldD4KK0w6CWxpbnV4LXVzYkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdXNiL21pc2MvYXBwbGUtbWZp
LWZhc3RjaGFyZ2UuYworCitVU0IgQVI1NTIzIFdJUkVMRVNTIERSSVZFUgorTDoJbGludXgtd2ly
ZWxlc3NAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvbmV0L3dpcmVsZXNz
L2F0aC9hcjU1MjMvCisKK1VTQiBBVFRBQ0hFRCBTQ1NJCitNOglPbGl2ZXIgTmV1a3VtIDxvbmV1
a3VtQHN1c2UuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworTDoJbGludXgtc2Nz
aUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdXNiL3N0b3JhZ2Uv
dWFzLmMKKworVVNCIENEQyBFVEhFUk5FVCBEUklWRVIKK006CU9saXZlciBOZXVrdW0gPG9saXZl
ckBuZXVrdW0ub3JnPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9uZXQvdXNiL2NkY18qLmMKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC91c2Iv
Y2RjLmgKKworVVNCIENIQU9TS0VZIERSSVZFUgorTToJS2VpdGggUGFja2FyZCA8a2VpdGhwQGtl
aXRocC5jb20+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitG
Oglkcml2ZXJzL3VzYi9taXNjL2NoYW9za2V5LmMKKworVVNCIENZUFJFU1MgQzY3WDAwIERSSVZF
UgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL3Vz
Yi9jNjd4MDAvCisKK1VTQiBEQVZJQ09NIERNOTYwMSBEUklWRVIKK006CVBldGVyIEtvcnNnYWFy
ZCA8cGV0ZXJAa29yc2dhYXJkLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK1c6CWh0dHA6Ly93d3cubGludXgtdXNiLm9yZy91c2JuZXQKK0Y6CWRyaXZlcnMv
bmV0L3VzYi9kbTk2MDEuYworCitVU0IgRUhDSSBEUklWRVIKK006CUFsYW4gU3Rlcm4gPHN0ZXJu
QHJvd2xhbmQuaGFydmFyZC5lZHU+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3VzYi9laGNpLnJzdAorRjoJZHJpdmVycy91c2Iv
aG9zdC9laGNpKgorCitVU0IgSElEL0hJREJQIERSSVZFUlMgKFVTQiBLRVlCT0FSRFMsIE1JQ0Us
IFJFTU9URSBDT05UUk9MUywgLi4uKQorTToJSmlyaSBLb3NpbmEgPGppa29zQGtlcm5lbC5vcmc+
CitNOglCZW5qYW1pbiBUaXNzb2lyZXMgPGJlbnRpc3NAa2VybmVsLm9yZz4KK0w6CWxpbnV4LXVz
YkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvaGlkL2hpZC5naXQKK0Y6CURvY3VtZW50YXRp
b24vaGlkL2hpZGRldi5yc3QKK0Y6CWRyaXZlcnMvaGlkL3VzYmhpZC8KKworVVNCIElOVEVMIFhI
Q0kgUk9MRSBNVVggRFJJVkVSCitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29t
PgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy91c2Ivcm9sZXMvaW50ZWwteGhjaS11c2Itcm9sZS1zd2l0Y2guYworCitVU0IgSVAgRFJJVkVS
IEZPUiBISVNJTElDT04gS0lSSU4gOTYwCitNOglZdSBDaGVuIDxjaGVueXU1NkBodWF3ZWkuY29t
PgorTToJQmluZ2h1aSBXYW5nIDx3YW5nYmluZ2h1aUBoaXNpbGljb24uY29tPgorTDoJbGludXgt
dXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZp
Y2V0cmVlL2JpbmRpbmdzL3BoeS9oaXNpbGljb24saGkzNjYwLXVzYjMueWFtbAorRjoJZHJpdmVy
cy9waHkvaGlzaWxpY29uL3BoeS1oaTM2NjAtdXNiMy5jCisKK1VTQiBJUCBEUklWRVIgRk9SIEhJ
U0lMSUNPTiBLSVJJTiA5NzAKK006CU1hdXJvIENhcnZhbGhvIENoZWhhYiA8bWNoZWhhYkBrZXJu
ZWwub3JnPgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3BoeS9oaXNpbGljb24saGkzNjcwLXVz
YjMueWFtbAorRjoJZHJpdmVycy9waHkvaGlzaWxpY29uL3BoeS1oaTM2NzAtdXNiMy5jCisKK1VT
QiBJU1AxMTZYIERSSVZFUgorTToJT2xhdiBLb25nYXMgPG9rQGFydGVjZGVzaWduLmVlPgorTDoJ
bGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy91c2Iv
aG9zdC9pc3AxMTZ4KgorRjoJaW5jbHVkZS9saW51eC91c2IvaXNwMTE2eC5oCisKK1VTQiBJU1Ax
NzYwIERSSVZFUgorTToJUnVpIE1pZ3VlbCBTaWx2YSA8cnVpLnNpbHZhQGxpbmFyby5vcmc+CitM
OglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdXNiL254cCxpc3AxNzYwLnlhbWwKK0Y6CWRyaXZlcnMv
dXNiL2lzcDE3NjAvKgorCitVU0IgTEFONzhYWCBFVEhFUk5FVCBEUklWRVIKK006CVRoYW5nYXJh
aiBTYW15bmF0aGFuIDxUaGFuZ2FyYWouU0BtaWNyb2NoaXAuY29tPgorTToJUmVuZ2FyYWphbiBT
dW5kYXJhcmFqYW4gPFJlbmdhcmFqYW4uU0BtaWNyb2NoaXAuY29tPgorTToJVU5HTGludXhEcml2
ZXJAbWljcm9jaGlwLmNvbQorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9taWNyb2NoaXAsbGFu
Nzh4eC50eHQKK0Y6CWRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LioKK0Y6CWluY2x1ZGUvZHQtYmlu
ZGluZ3MvbmV0L21pY3JvY2hpcC1sYW43OHh4LmgKKworVVNCIE1BU1MgU1RPUkFHRSBEUklWRVIK
K006CUFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CitMOglsaW51eC11c2JA
dmdlci5rZXJuZWwub3JnCitMOgl1c2Itc3RvcmFnZUBsaXN0cy5vbmUtZXllZC1hbGllbi5uZXQK
K1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdXNiL3N0b3JhZ2UvCisKK1VTQiBNSURJIERSSVZF
UgorTToJQ2xlbWVucyBMYWRpc2NoIDxjbGVtZW5zQGxhZGlzY2guZGU+CitMOglsaW51eC1zb3Vu
ZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVs
Lm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGl3YWkvc291bmQuZ2l0CitGOglzb3VuZC91
c2IvbWlkaS4qCisKK1VTQiBORVRXT1JLSU5HIERSSVZFUlMKK0w6CWxpbnV4LXVzYkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU9kZCBGaXhlcworRjoJZHJpdmVycy9uZXQvdXNiLworCitVU0IgT0hDSSBE
UklWRVIKK006CUFsYW4gU3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CitMOglsaW51
eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3Vz
Yi9vaGNpLnJzdAorRjoJZHJpdmVycy91c2IvaG9zdC9vaGNpKgorCitVU0IgT1RHIEZTTSAoRmlu
aXRlIFN0YXRlIE1hY2hpbmUpCitNOglQZXRlciBDaGVuIDxwZXRlci5jaGVuQGtlcm5lbC5vcmc+
CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0
Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3BldGVyLmNoZW4vdXNi
LmdpdAorRjoJZHJpdmVycy91c2IvY29tbW9uL3VzYi1vdGctZnNtLmMKKworVVNCIE9WRVIgSVAg
RFJJVkVSCitNOglWYWxlbnRpbmEgTWFuZWEgPHZhbGVudGluYS5tYW5lYS5tQGdtYWlsLmNvbT4K
K006CVNodWFoIEtoYW4gPHNodWFoQGtlcm5lbC5vcmc+CitNOglTaHVhaCBLaGFuIDxza2hhbkBs
aW51eGZvdW5kYXRpb24ub3JnPgorUjoJSG9uZ3JlbiBaaGVuZyA8aUB6ZW5pdGhhbC5tZT4KK0w6
CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRp
b24vdXNiL3VzYmlwX3Byb3RvY29sLnJzdAorRjoJZHJpdmVycy91c2IvdXNiaXAvCitGOgl0b29s
cy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL3VzYi91c2JpcC8KK0Y6CXRvb2xzL3VzYi91c2Jp
cC8KKworVVNCIFBFR0FTVVMgRFJJVkVSCitNOglQZXRrbyBNYW5vbG92IDxwZXRrYW5AbnVjbGV1
c3lzLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0w6CW5ldGRldkB2Z2VyLmtl
cm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYW4vcGVn
YXN1cworVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYW4vcGVnYXN1cy5naXQKK0Y6CWRy
aXZlcnMvbmV0L3VzYi9wZWdhc3VzLioKKworVVNCIFBSSU5URVIgRFJJVkVSICh1c2JscCkKK006
CVBldGUgWmFpdGNldiA8emFpdGNldkByZWRoYXQuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3VzYi9jbGFzcy91c2JscC5jCisKK1VT
QiBRTUkgV1dBTiBORVRXT1JLIERSSVZFUgorTToJQmrDuHJuIE1vcmsgPGJqb3JuQG1vcmsubm8+
CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLW5ldC1xbWkKK0Y6CWRyaXZlcnMvbmV0L3VzYi9x
bWlfd3dhbi5jCisKK1VTQiBSQVcgR0FER0VUIERSSVZFUgorUjoJQW5kcmV5IEtvbm92YWxvdiA8
YW5kcmV5a252bEBnbWFpbC5jb20+CitMOglsaW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglN
YWludGFpbmVkCitCOglodHRwczovL2dpdGh1Yi5jb20veGFpcnkvcmF3LWdhZGdldC9pc3N1ZXMK
K0Y6CURvY3VtZW50YXRpb24vdXNiL3Jhdy1nYWRnZXQucnN0CitGOglkcml2ZXJzL3VzYi9nYWRn
ZXQvbGVnYWN5L3Jhd19nYWRnZXQuYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3VzYi9yYXdfZ2Fk
Z2V0LmgKKworVVNCIFJUTDgxNTAgRFJJVkVSCitNOglQZXRrbyBNYW5vbG92IDxwZXRrYW5AbnVj
bGV1c3lzLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK0w6CW5ldGRldkB2Z2Vy
Lmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYW4v
cnRsODE1MAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYW4vcnRsODE1MC5naXQKK0Y6
CWRyaXZlcnMvbmV0L3VzYi9ydGw4MTUwLmMKKworVVNCIFNFUklBTCBTVUJTWVNURU0KK006CUpv
aGFuIEhvdm9sZCA8am9oYW5Aa2VybmVsLm9yZz4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xp
bnV4L2tlcm5lbC9naXQvam9oYW4vdXNiLXNlcmlhbC5naXQKK0Y6CURvY3VtZW50YXRpb24vdXNi
L3VzYi1zZXJpYWwucnN0CitGOglkcml2ZXJzL3VzYi9zZXJpYWwvCitGOglpbmNsdWRlL2xpbnV4
L3VzYi9zZXJpYWwuaAorCitVU0IgU01TQzc1WFggRVRIRVJORVQgRFJJVkVSCitNOglTdGV2ZSBH
bGVuZGlubmluZyA8c3RldmUuZ2xlbmRpbm5pbmdAc2hhd2VsbC5uZXQ+CitMOgluZXRkZXZAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC91c2Ivc21zYzc1eHgu
KgorCitVU0IgU01TQzk1WFggRVRIRVJORVQgRFJJVkVSCitNOglTdGV2ZSBHbGVuZGlubmluZyA8
c3RldmUuZ2xlbmRpbm5pbmdAc2hhd2VsbC5uZXQ+CitNOglVTkdMaW51eERyaXZlckBtaWNyb2No
aXAuY29tCitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL25ldC91c2Ivc21zYzk1eHguKgorCitVU0IgU1VCU1lTVEVNCitNOglHcmVnIEtyb2FoLUhh
cnRtYW4gPGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnPgorTDoJbGludXgtdXNiQHZnZXIua2Vy
bmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3LmxpbnV4LXVzYi5vcmcKK1Q6CWdp
dCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3JlZ2toL3Vz
Yi5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy91c2IvCitGOglEb2N1
bWVudGF0aW9uL3VzYi8KK0Y6CWRyaXZlcnMvdXNiLworRjoJaW5jbHVkZS9kdC1iaW5kaW5ncy91
c2IvCitGOglpbmNsdWRlL2xpbnV4L3VzYi5oCitGOglpbmNsdWRlL2xpbnV4L3VzYi8KK0Y6CWlu
Y2x1ZGUvdWFwaS9saW51eC91c2IvCisKK1VTQiBUWVBFQyBCVVMgRk9SIEFMVEVSTkFURSBNT0RF
UworTToJSGVpa2tpIEtyb2dlcnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgor
TDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRh
dGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtdHlwZWMKK0Y6CURvY3VtZW50YXRpb24vZHJpdmVy
LWFwaS91c2IvdHlwZWNfYnVzLnJzdAorRjoJZHJpdmVycy91c2IvdHlwZWMvYWx0bW9kZXMvCitG
OglpbmNsdWRlL2xpbnV4L3VzYi90eXBlY19hbHRtb2RlLmgKKworVVNCIFRZUEVDIENMQVNTCitN
OglIZWlra2kgS3JvZ2VydXMgPGhlaWtraS5rcm9nZXJ1c0BsaW51eC5pbnRlbC5jb20+CitMOgls
aW51eC11c2JAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L0FCSS90ZXN0aW5nL3N5c2ZzLWNsYXNzLXR5cGVjCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1h
cGkvdXNiL3R5cGVjLnJzdAorRjoJZHJpdmVycy91c2IvdHlwZWMvCitGOglpbmNsdWRlL2xpbnV4
L3VzYi90eXBlYy5oCisKK1VTQiBUWVBFQyBJTlRFTCBQTUMgTVVYIERSSVZFUgorTToJSGVpa2tp
IEtyb2dlcnVzIDxoZWlra2kua3JvZ2VydXNAbGludXguaW50ZWwuY29tPgorTDoJbGludXgtdXNi
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9maXJtd2Fy
ZS1ndWlkZS9hY3BpL2ludGVsLXBtYy1tdXgucnN0CitGOglkcml2ZXJzL3VzYi90eXBlYy9tdXgv
aW50ZWxfcG1jX211eC5jCisKK1VTQiBUWVBFQyBQSTNVU0IzMDUzMiBNVVggRFJJVkVSCitNOglI
YW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgtdXNiQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy91c2IvdHlwZWMvbXV4L3BpM3VzYjMw
NTMyLmMKKworVVNCIFRZUEVDIFBPUlQgQ09OVFJPTExFUiBEUklWRVJTCitNOglCYWRocmkgSmFn
YW4gU3JpZGhhcmFuIDxiYWRocmlAZ29vZ2xlLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdXNiL3R5cGVjL3RjcG0vdGNwY2kuYwor
RjoJZHJpdmVycy91c2IvdHlwZWMvdGNwbS90Y3BtLmMKK0Y6CWluY2x1ZGUvbGludXgvdXNiL3Rj
cGNpLmgKK0Y6CWluY2x1ZGUvbGludXgvdXNiL3RjcG0uaAorCitVU0IgVFlQRUMgVFVTQjEwNDYg
TVVYIERSSVZFUgorTToJUm9tYWluIEdhbnRvaXMgPHJvbWFpbi5nYW50b2lzQGJvb3RsaW4uY29t
PgorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3VzYi90aSx0dXNiMTA0Ni55YW1sCitGOglkcml2
ZXJzL3VzYi90eXBlYy9tdXgvdHVzYjEwNDYuYworCitVU0IgVUhDSSBEUklWRVIKK006CUFsYW4g
U3Rlcm4gPHN0ZXJuQHJvd2xhbmQuaGFydmFyZC5lZHU+CitMOglsaW51eC11c2JAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3VzYi9ob3N0L3VoY2kqCisKK1VTQiBW
SURFTyBDTEFTUworTToJTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29u
Ym9hcmQuY29tPgorTToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6CWxp
bnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3d3dy5p
ZGVhc29uYm9hcmQub3JnL3V2Yy8KK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQK
K0Y6CURvY3VtZW50YXRpb24vdXNlcnNwYWNlLWFwaS9tZWRpYS9kcml2ZXJzL3V2Y3ZpZGVvLnJz
dAorRjoJRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL21lZGlhL3Y0bC9tZXRhZm10LXV2Yy5y
c3QKK0Y6CWRyaXZlcnMvbWVkaWEvY29tbW9uL3V2Yy5jCitGOglkcml2ZXJzL21lZGlhL3VzYi91
dmMvCitGOglpbmNsdWRlL2xpbnV4L3VzYi91dmMuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3V2
Y3ZpZGVvLmgKKworVVNCIFdFQkNBTSBHQURHRVQKK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy91c2IvZ2FkZ2V0L2Z1bmN0aW9uLyp1dmMqCitGOglk
cml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3dlYmNhbS5jCitGOglpbmNsdWRlL3VhcGkvbGludXgv
dXNiL2dfdXZjLmgKKworVVNCIFhIQ0kgRFJJVkVSCitNOglNYXRoaWFzIE55bWFuIDxtYXRoaWFz
Lm55bWFuQGludGVsLmNvbT4KK0w6CWxpbnV4LXVzYkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBv
cnRlZAorRjoJZHJpdmVycy91c2IvaG9zdC9wY2ktcXVpcmtzKgorRjoJZHJpdmVycy91c2IvaG9z
dC94aGNpKgorCitVU0VSIERBVEFHUkFNIFBST1RPQ09MIChVRFApCitNOglXaWxsZW0gZGUgQnJ1
aWpuIDx3aWxsZW1kZWJydWlqbi5rZXJuZWxAZ21haWwuY29tPgorTDoJbmV0ZGV2QHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJaW5jbHVkZS9saW51eC91ZHAuaAorRjoJaW5jbHVk
ZS9uZXQvdWRwLmgKK0Y6CWluY2x1ZGUvdHJhY2UvZXZlbnRzL3VkcC5oCitGOglpbmNsdWRlL3Vh
cGkvbGludXgvdWRwLmgKK0Y6CW5ldC9pcHY0L3VkcC5jCitGOgluZXQvaXB2Ni91ZHAuYworCitV
U0VSLU1PREUgTElOVVggKFVNTCkKK006CVJpY2hhcmQgV2VpbmJlcmdlciA8cmljaGFyZEBub2Qu
YXQ+CitNOglBbnRvbiBJdmFub3YgPGFudG9uLml2YW5vdkBjYW1icmlkZ2VncmV5cy5jb20+CitN
OglKb2hhbm5lcyBCZXJnIDxqb2hhbm5lc0BzaXBzb2x1dGlvbnMubmV0PgorTDoJbGludXgtdW1A
bGlzdHMuaW5mcmFkZWFkLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3VzZXItbW9kZS1s
aW51eC5zb3VyY2Vmb3JnZS5uZXQKK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcHJv
amVjdC9saW51eC11bS9saXN0LworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20v
bGludXgva2VybmVsL2dpdC91bWwvbGludXguZ2l0IG5leHQKK1Q6CWdpdCBnaXQ6Ly9naXQua2Vy
bmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdW1sL2xpbnV4LmdpdCBmaXhlcworRjoJ
RG9jdW1lbnRhdGlvbi92aXJ0L3VtbC8KK0Y6CWFyY2gvdW0vCitGOglhcmNoL3g4Ni91bS8KK0Y6
CWZzL2hvc3Rmcy8KKworVVNFUlNQQUNFIENPUFlJTi9DT1BZT1VUIChVSU9WRUMpCitNOglBbGV4
YW5kZXIgVmlybyA8dmlyb0B6ZW5pdi5saW51eC5vcmcudWs+CitTOglNYWludGFpbmVkCitGOglp
bmNsdWRlL2xpbnV4L3Vpby5oCitGOglsaWIvaW92X2l0ZXIuYworCitVU0VSU1BBQ0UgRE1BIEJV
RkZFUiBEUklWRVIKK006CUdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorTToJVml2
ZWsgS2FzaXJlZGR5IDx2aXZlay5rYXNpcmVkZHlAaW50ZWwuY29tPgorTDoJZHJpLWRldmVsQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0bGFi
LmZyZWVkZXNrdG9wLm9yZy9kcm0vbWlzYy9rZXJuZWwuZ2l0CitGOglkcml2ZXJzL2RtYS1idWYv
dWRtYWJ1Zi5jCitGOglpbmNsdWRlL3VhcGkvbGludXgvdWRtYWJ1Zi5oCisKK1VTRVJTUEFDRSBJ
L08gKFVJTykKK006CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91bmRhdGlvbi5v
cmc+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9s
aW51eC9rZXJuZWwvZ2l0L2dyZWdraC9jaGFyLW1pc2MuZ2l0CitGOglEb2N1bWVudGF0aW9uL2Ry
aXZlci1hcGkvdWlvLWhvd3RvLnJzdAorRjoJZHJpdmVycy91aW8vCitGOglpbmNsdWRlL2xpbnV4
L3Vpb19kcml2ZXIuaAorCitVVElMLUxJTlVYIFBBQ0tBR0UKK006CUthcmVsIFphayA8a3pha0By
ZWRoYXQuY29tPgorTDoJdXRpbC1saW51eEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K1c6CWh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVXRpbC1saW51eAorVDoJZ2l0IGdpdDov
L2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvdXRpbC1saW51eC91dGlsLWxpbnV4LmdpdAor
CitVVUlEIEhFTFBFUlMKK1I6CUFuZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGlu
dXguaW50ZWwuY29tPgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorRjoJaW5jbHVkZS9saW51eC91dWlkLmgKK0Y6CWxpYi90ZXN0X3V1aWQuYworRjoJbGli
L3V1aWQuYworCitVViBTWVNGUyBEUklWRVIKK006CUp1c3RpbiBFcm5zdCA8anVzdGluLmVybnN0
QGhwZS5jb20+CitMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9wbGF0Zm9ybS94ODYvdXZfc3lzZnMuYworCitVVkVTQUZCIERS
SVZFUgorTToJTWljaGFsIEphbnVzemV3c2tpIDxzcG9ja0BnZW50b28ub3JnPgorTDoJbGludXgt
ZmJkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2dpdGh1Yi5j
b20vbWphbnVzei92ODZkCitGOglEb2N1bWVudGF0aW9uL2ZiL3V2ZXNhZmIucnN0CitGOglkcml2
ZXJzL3ZpZGVvL2ZiZGV2L3V2ZXNhZmIuKgorCitVeDUwMCBDTE9DSyBEUklWRVJTCitNOglVbGYg
SGFuc3NvbiA8dWxmLmhhbnNzb25AbGluYXJvLm9yZz4KK0w6CWxpbnV4LWNsa0B2Z2VyLmtlcm5l
bC5vcmcKK0w6CWxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZyAobW9kZXJhdGVk
IGZvciBub24tc3Vic2NyaWJlcnMpCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2Nsay91eDUw
MC8KKworVjRMMiBBU1lOQyBBTkQgRldOT0RFIEZSQU1FV09SS1MKK006CVNha2FyaSBBaWx1cyA8
c2FrYXJpLmFpbHVzQGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAor
RjoJZHJpdmVycy9tZWRpYS92NGwyLWNvcmUvdjRsMi1hc3luYy5jCitGOglkcml2ZXJzL21lZGlh
L3Y0bDItY29yZS92NGwyLWZ3bm9kZS5jCitGOglpbmNsdWRlL21lZGlhL3Y0bDItYXN5bmMuaAor
RjoJaW5jbHVkZS9tZWRpYS92NGwyLWZ3bm9kZS5oCisKK1Y0TDIgTEVOUyBEUklWRVJTCitNOglT
YWthcmkgQWlsdXMgPHNha2FyaS5haWx1c0BsaW51eC5pbnRlbC5jb20+CitMOglsaW51eC1tZWRp
YUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2Fr
KgorRjoJZHJpdmVycy9tZWRpYS9pMmMvZHcqCitGOglkcml2ZXJzL21lZGlhL2kyYy9sbSoKKwor
VjRMMiBDQU1FUkEgU0VOU09SIERSSVZFUlMKK006CVNha2FyaSBBaWx1cyA8c2FrYXJpLmFpbHVz
QGxpbnV4LmludGVsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFp
bnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL21lZGlhL2NhbWVyYS1zZW5zb3Iu
cnN0CitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEvdHgtcngucnN0CitGOglkcml2
ZXJzL21lZGlhL2kyYy9hcioKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL2djKgorRjoJZHJpdmVycy9t
ZWRpYS9pMmMvaGkqCitGOglkcml2ZXJzL21lZGlhL2kyYy9pbXgqCitGOglkcml2ZXJzL21lZGlh
L2kyYy9tdCoKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL29nKgorRjoJZHJpdmVycy9tZWRpYS9pMmMv
b3YqCitGOglkcml2ZXJzL21lZGlhL2kyYy9zNSoKK0Y6CWRyaXZlcnMvbWVkaWEvaTJjL3ZkNTVn
MS5jCitGOglkcml2ZXJzL21lZGlhL2kyYy92ZDU2ZzMuYworRjoJZHJpdmVycy9tZWRpYS9pMmMv
dmd4eTYxLmMKKworVkY2MTAgTkFORCBEUklWRVIKK006CVN0ZWZhbiBBZ25lciA8c3RlZmFuQGFn
bmVyLmNoPgorTDoJbGludXgtbXRkQGxpc3RzLmluZnJhZGVhZC5vcmcKK1M6CVN1cHBvcnRlZAor
RjoJZHJpdmVycy9tdGQvbmFuZC9yYXcvdmY2MTBfbmZjLmMKKworVkZBVC9GQVQvTVNET1MgRklM
RVNZU1RFTQorTToJT0dBV0EgSGlyb2Z1bWkgPGhpcm9mdW1pQG1haWwucGFya25ldC5jby5qcD4K
K1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZhdC5yc3QKK0Y6
CWZzL2ZhdC8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2ZpbGVzeXN0ZW1zL2ZhdC8KKwor
VkZJTyBDRFggRFJJVkVSCitNOglOaXB1biBHdXB0YSA8bmlwdW4uZ3VwdGFAYW1kLmNvbT4KK006
CU5pa2hpbCBBZ2Fyd2FsIDxuaWtoaWwuYWdhcndhbEBhbWQuY29tPgorTDoJa3ZtQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy92ZmlvL2NkeC8qCisKK1ZGSU8gRFJJ
VkVSCitNOglBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgorTDoJ
a3ZtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVDoJZ2l0IGh0dHBzOi8vZ2l0aHVi
LmNvbS9hd2lsbGlhbS9saW51eC12ZmlvLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGlu
Zy9kZWJ1Z2ZzLXZmaW8KK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtZGV2aWNl
cy12ZmlvLWRldgorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8ucnN0CitGOglkcml2
ZXJzL3ZmaW8vCitGOglpbmNsdWRlL2xpbnV4L3ZmaW8uaAorRjoJaW5jbHVkZS9saW51eC92Zmlv
X3BjaV9jb3JlLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92ZmlvLmgKKworVkZJTyBGU0wtTUMg
RFJJVkVSCitMOglrdm1Admdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6CWRyaXZlcnMvdmZp
by9mc2wtbWMvCisKK1ZGSU8gSElTSUxJQ09OIFBDSSBEUklWRVIKK006CUxvbmdmYW5nIExpdSA8
bGl1bG9uZ2ZhbmdAaHVhd2VpLmNvbT4KK006CVNoYW1lZXIgS29sb3RodW0gPHNoYW1lZXJhbGku
a29sb3RodW0udGhvZGlAaHVhd2VpLmNvbT4KK0w6CWt2bUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uLworCitWRklPIE1FRElBVEVE
IERFVklDRSBEUklWRVJTCitNOglLaXJ0aSBXYW5raGVkZSA8a3dhbmtoZWRlQG52aWRpYS5jb20+
CitMOglrdm1Admdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2RyaXZlci1hcGkvdmZpby1tZWRpYXRlZC1kZXZpY2UucnN0CitGOglkcml2ZXJzL3ZmaW8vbWRl
di8KK0Y6CWluY2x1ZGUvbGludXgvbWRldi5oCitGOglzYW1wbGVzL3ZmaW8tbWRldi8KKworVkZJ
TyBNTFg1IFBDSSBEUklWRVIKK006CVlpc2hhaSBIYWRhcyA8eWlzaGFpaEBudmlkaWEuY29tPgor
TDoJa3ZtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy92ZmlvL3Bj
aS9tbHg1LworCitWRklPIE5WSURJQSBHUkFDRSBHUFUgRFJJVkVSCitNOglBbmtpdCBBZ3Jhd2Fs
IDxhbmtpdGFAbnZpZGlhLmNvbT4KK0w6CWt2bUB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy92ZmlvL3BjaS9udmdyYWNlLWdwdS8KKworVkZJTyBQQ0kgREVWSUNFIFNQ
RUNJRklDIERSSVZFUlMKK1I6CUphc29uIEd1bnRob3JwZSA8amdnQG52aWRpYS5jb20+CitSOglZ
aXNoYWkgSGFkYXMgPHlpc2hhaWhAbnZpZGlhLmNvbT4KK1I6CVNoYW1lZXIgS29sb3RodW0gPHNo
YW1lZXJhbGkua29sb3RodW0udGhvZGlAaHVhd2VpLmNvbT4KK1I6CUtldmluIFRpYW4gPGtldmlu
LnRpYW5AaW50ZWwuY29tPgorTDoJa3ZtQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAor
UDoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZmaW8tcGNpLWRldmljZS1zcGVjaWZpYy1kcml2
ZXItYWNjZXB0YW5jZS5yc3QKK0Y6CWRyaXZlcnMvdmZpby9wY2kvKi8KKworVkZJTyBQRFMgUENJ
IERSSVZFUgorTToJQnJldHQgQ3JlZWxleSA8YnJldHQuY3JlZWxleUBhbWQuY29tPgorTDoJa3Zt
QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3Jr
aW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2FtZC9wZHNfdmZpb19wY2kucnN0CitGOglkcml2
ZXJzL3ZmaW8vcGNpL3Bkcy8KKworVkZJTyBQTEFURk9STSBEUklWRVIKK006CUVyaWMgQXVnZXIg
PGVyaWMuYXVnZXJAcmVkaGF0LmNvbT4KK0w6CWt2bUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK0Y6CWRyaXZlcnMvdmZpby9wbGF0Zm9ybS8KKworVkZJTyBRQVQgUENJIERSSVZFUgor
TToJWGluIFplbmcgPHhpbi56ZW5nQGludGVsLmNvbT4KK006CUdpb3Zhbm5pIENhYmlkZHUgPGdp
b3Zhbm5pLmNhYmlkZHVAaW50ZWwuY29tPgorTDoJa3ZtQHZnZXIua2VybmVsLm9yZworTDoJcWF0
LWxpbnV4QGludGVsLmNvbQorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3ZmaW8vcGNpL3FhdC8K
KworVkZJTyBWSVJUSU8gUENJIERSSVZFUgorTToJWWlzaGFpIEhhZGFzIDx5aXNoYWloQG52aWRp
YS5jb20+CitMOglrdm1Admdlci5rZXJuZWwub3JnCitMOgl2aXJ0dWFsaXphdGlvbkBsaXN0cy5s
aW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdmZpby9wY2kvdmlydGlvCisKK1ZH
QV9TV0lUQ0hFUk9PCitSOglMdWthcyBXdW5uZXIgPGx1a2FzQHd1bm5lci5kZT4KK1M6CU1haW50
YWluZWQKK1Q6CWdpdCBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvZHJtL21pc2Mva2Vy
bmVsLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9ncHUvdmdhLXN3aXRjaGVyb28ucnN0CitGOglkcml2
ZXJzL2dwdS92Z2EvdmdhX3N3aXRjaGVyb28uYworRjoJaW5jbHVkZS9saW51eC92Z2Ffc3dpdGNo
ZXJvby5oCisKK1ZJQSBSSElORSBORVRXT1JLIERSSVZFUgorTToJS2V2aW4gQnJhY2UgPGtldmlu
YnJhY2VAYnJhY2Vjb21wdXRlcmxhYi5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25l
dC9ldGhlcm5ldC92aWEvdmlhLXJoaW5lLmMKKworVklBIFVOSUNIUk9NRShQUk8pL0NIUk9NRTkg
RlJBTUVCVUZGRVIgRFJJVkVSCitNOglGbG9yaWFuIFRvYmlhcyBTY2hhbmRpbmF0IDxGbG9yaWFu
U2NoYW5kaW5hdEBnbXguZGU+CitMOglsaW51eC1mYmRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1h
aW50YWluZWQKK0Y6CWRyaXZlcnMvdmlkZW8vZmJkZXYvdmlhLworRjoJaW5jbHVkZS9saW51eC92
aWEtY29yZS5oCitGOglpbmNsdWRlL2xpbnV4L3ZpYV9pMmMuaAorCitWSUEgVkVMT0NJVFkgTkVU
V09SSyBEUklWRVIKK006CUZyYW5jb2lzIFJvbWlldSA8cm9taWV1QGZyLnpvcmVpbC5jb20+CitM
OgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL25ldC9l
dGhlcm5ldC92aWEvdmlhLXZlbG9jaXR5LioKKworVklDT0RFQyBWSVJUVUFMIENPREVDIERSSVZF
UgorTToJSGFucyBWZXJrdWlsIDxodmVya3VpbC1jaXNjb0B4czRhbGwubmw+CitMOglsaW51eC1t
ZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHBzOi8vbGludXh0di5v
cmcKK1Q6CWdpdCBnaXQ6Ly9saW51eHR2Lm9yZy9tZWRpYS5naXQKK0Y6CWRyaXZlcnMvbWVkaWEv
dGVzdC1kcml2ZXJzL3ZpY29kZWMvKgorCitWSURFTyBJMkMgUE9MTElORyBEUklWRVIKK006CU1h
dHQgUmFub3N0YXkgPG1hdHQucmFub3N0YXlAa29uc3Vsa28uY29tPgorTDoJbGludXgtbWVkaWFA
dmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL21lZGlhL2kyYy92aWRl
by1pMmMuYworCitWSURFTyBNVUxUSVBMRVhFUiBEUklWRVIKK006CVBoaWxpcHAgWmFiZWwgPHAu
emFiZWxAcGVuZ3V0cm9uaXguZGU+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmlkZW8tbXV4LmMKKworVklE
RU9CVUYyIEZSQU1FV09SSworTToJVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9yZz4KK006
CU1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KK0w6CWxpbnV4LW1l
ZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9tZWRpYS9jb21t
b24vdmlkZW9idWYyLyoKK0Y6CWluY2x1ZGUvbWVkaWEvdmlkZW9idWYyLSoKKworVklEVFYgVklS
VFVBTCBESUdJVEFMIFRWIERSSVZFUgorTToJRGFuaWVsIFcuIFMuIEFsbWVpZGEgPGR3bHNhbG1l
aWRhQGdtYWlsLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRh
aW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21l
ZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdmlkdHYvKgorCitWSU1DIFZJ
UlRVQUwgTUVESUEgQ09OVFJPTExFUiBEUklWRVIKK006CVNodWFoIEtoYW4gPHNraGFuQGxpbnV4
Zm91bmRhdGlvbi5vcmc+CitSOglLaWVyYW4gQmluZ2hhbSA8a2llcmFuLmJpbmdoYW1AaWRlYXNv
bmJvYXJkLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlh
LmdpdAorRjoJZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdmltYy8qCisKK1ZJUlQgTElCCitN
OglBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgorTToJUGFvbG8g
Qm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KK0w6CWt2bUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJdmlydC9saWIvCisKK1ZJUlRJTyBBTkQgVkhPU1QgVlNPQ0sgRFJJVkVS
CitNOglTdGVmYW4gSGFqbm9jemkgPHN0ZWZhbmhhQHJlZGhhdC5jb20+CitNOglTdGVmYW5vIEdh
cnphcmVsbGEgPHNnYXJ6YXJlQHJlZGhhdC5jb20+CitMOglrdm1Admdlci5rZXJuZWwub3JnCitM
Ogl2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC5kZXYKK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvdmhvc3QvdnNvY2suYworRjoJaW5jbHVkZS9s
aW51eC92aXJ0aW9fdnNvY2suaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb192c29jay5o
CitGOgluZXQvdm13X3Zzb2NrL3ZpcnRpb190cmFuc3BvcnQuYworRjoJbmV0L3Ztd192c29jay92
aXJ0aW9fdHJhbnNwb3J0X2NvbW1vbi5jCisKK1ZJUlRJTyBCQUxMT09OCitNOgkiTWljaGFlbCBT
LiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CitNOglEYXZpZCBIaWxkZW5icmFuZCA8ZGF2aWRA
cmVkaGF0LmNvbT4KK0w6CXZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRh
aW5lZAorRjoJZHJpdmVycy92aXJ0aW8vdmlydGlvX2JhbGxvb24uYworRjoJaW5jbHVkZS9saW51
eC9iYWxsb29uX2NvbXBhY3Rpb24uaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19iYWxs
b29uLmgKK0Y6CW1tL2JhbGxvb25fY29tcGFjdGlvbi5jCisKK1ZJUlRJTyBCTE9DSyBBTkQgU0NT
SSBEUklWRVJTCitNOgkiTWljaGFlbCBTLiBUc2lya2luIiA8bXN0QHJlZGhhdC5jb20+CitNOglK
YXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorUjoJUGFvbG8gQm9uemluaSA8cGJvbnpp
bmlAcmVkaGF0LmNvbT4KK1I6CVN0ZWZhbiBIYWpub2N6aSA8c3RlZmFuaGFAcmVkaGF0LmNvbT4K
K1I6CUV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUByZWRoYXQuY29tPgorTDoJdmlydHVhbGl6YXRp
b25AbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2Jsb2NrL3ZpcnRp
b19ibGsuYworRjoJZHJpdmVycy9zY3NpL3ZpcnRpb19zY3NpLmMKK0Y6CWluY2x1ZGUvdWFwaS9s
aW51eC92aXJ0aW9fYmxrLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9fc2NzaS5oCisK
K1ZJUlRJTyBDT05TT0xFIERSSVZFUgorTToJQW1pdCBTaGFoIDxhbWl0QGtlcm5lbC5vcmc+CitM
Ogl2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZl
cnMvY2hhci92aXJ0aW9fY29uc29sZS5jCitGOglpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2Nv
bnNvbGUuaAorCitWSVJUSU8gQ09SRSBBTkQgTkVUIERSSVZFUlMKK006CSJNaWNoYWVsIFMuIFRz
aXJraW4iIDxtc3RAcmVkaGF0LmNvbT4KK006CUphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5j
b20+CitSOglYdWFuIFpodW8gPHh1YW56aHVvQGxpbnV4LmFsaWJhYmEuY29tPgorUjoJRXVnZW5p
byBQw6lyZXogPGVwZXJlem1hQHJlZGhhdC5jb20+CitMOgl2aXJ0dWFsaXphdGlvbkBsaXN0cy5s
aW51eC5kZXYKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lz
ZnMtYnVzLXZkcGEKK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtY2xhc3MtdmR1
c2UKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aXJ0aW8vCitGOglEb2N1
bWVudGF0aW9uL2RyaXZlci1hcGkvdmlydGlvLworRjoJZHJpdmVycy9ibG9jay92aXJ0aW9fYmxr
LmMKK0Y6CWRyaXZlcnMvY3J5cHRvL3ZpcnRpby8KK0Y6CWRyaXZlcnMvbmV0L3ZpcnRpb19uZXQu
YworRjoJZHJpdmVycy92ZHBhLworRjoJZHJpdmVycy92aXJ0aW8vCitGOglpbmNsdWRlL2xpbnV4
L3ZkcGEuaAorRjoJaW5jbHVkZS9saW51eC92aXJ0aW8qLmgKK0Y6CWluY2x1ZGUvbGludXgvdnJp
bmdoLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9fKi5oCitGOgluZXQvdm13X3Zzb2Nr
L3ZpcnRpbyoKK0Y6CXRvb2xzL3ZpcnRpby8KK0Y6CXRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Ry
aXZlcnMvbmV0L3ZpcnRpb19uZXQvCisKK1ZJUlRJTyBDUllQVE8gRFJJVkVSCitNOglHb25nbGVp
IDxhcmVpLmdvbmdsZWlAaHVhd2VpLmNvbT4KK0w6CXZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4
LmRldgorTDoJbGludXgtY3J5cHRvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9jcnlwdG8vdmlydGlvLworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19jcnlw
dG8uaAorCitWSVJUSU8gRFJJVkVSUyBGT1IgUzM5MAorTToJQ29ybmVsaWEgSHVjayA8Y29odWNr
QHJlZGhhdC5jb20+CitNOglIYWxpbCBQYXNpYyA8cGFzaWNAbGludXguaWJtLmNvbT4KK006CUVy
aWMgRmFybWFuIDxmYXJtYW5AbGludXguaWJtLmNvbT4KK0w6CWxpbnV4LXMzOTBAdmdlci5rZXJu
ZWwub3JnCitMOgl2aXJ0dWFsaXphdGlvbkBsaXN0cy5saW51eC5kZXYKK0w6CWt2bUB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJYXJjaC9zMzkwL2luY2x1ZGUvdWFwaS9hc20vdmly
dGlvLWNjdy5oCitGOglkcml2ZXJzL3MzOTAvdmlydGlvLworCitWSVJUSU8gRklMRSBTWVNURU0K
K006CVZpdmVrIEdveWFsIDx2Z295YWxAcmVkaGF0LmNvbT4KK006CVN0ZWZhbiBIYWpub2N6aSA8
c3RlZmFuaGFAcmVkaGF0LmNvbT4KK006CU1pa2xvcyBTemVyZWRpIDxtaWtsb3NAc3plcmVkaS5o
dT4KK1I6CUV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUByZWRoYXQuY29tPgorTDoJdmlydHVhbGl6
YXRpb25AbGlzdHMubGludXguZGV2CitMOglsaW51eC1mc2RldmVsQHZnZXIua2VybmVsLm9yZwor
UzoJU3VwcG9ydGVkCitXOglodHRwczovL3ZpcnRpby1mcy5naXRsYWIuaW8vCitGOglEb2N1bWVu
dGF0aW9uL2ZpbGVzeXN0ZW1zL3ZpcnRpb2ZzLnJzdAorRjoJZnMvZnVzZS92aXJ0aW9fZnMuYwor
RjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19mcy5oCisKK1ZJUlRJTyBHUElPIERSSVZFUgor
TToJRW5yaWNvIFdlaWdlbHQsIG1ldHV4IElUIGNvbnN1bHQgPGluZm9AbWV0dXgubmV0PgorTToJ
VmlyZXNoIEt1bWFyIDx2aXJlc2hrQGtlcm5lbC5vcmc+CitMOglsaW51eC1ncGlvQHZnZXIua2Vy
bmVsLm9yZworTDoJdmlydHVhbGl6YXRpb25AbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVk
CitGOglkcml2ZXJzL2dwaW8vZ3Bpby12aXJ0aW8uYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3Zp
cnRpb19ncGlvLmgKKworVklSVElPIEdQVSBEUklWRVIKK006CURhdmlkIEFpcmxpZSA8YWlybGll
ZEByZWRoYXQuY29tPgorTToJR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+CitNOglE
bWl0cnkgT3NpcGVua28gPGRtaXRyeS5vc2lwZW5rb0Bjb2xsYWJvcmEuY29tPgorUjoJR3VyY2hl
dGFuIFNpbmdoIDxndXJjaGV0YW5zaW5naEBjaHJvbWl1bS5vcmc+CitSOglDaGlhLUkgV3UgPG9s
dmFmZmVAZ21haWwuY29tPgorTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZworTDoJ
dmlydHVhbGl6YXRpb25AbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitUOglnaXQgaHR0
cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQKK0Y6CWRyaXZl
cnMvZ3B1L2RybS9jaS94ZmFpbHMvdmlydGlvKgorRjoJZHJpdmVycy9ncHUvZHJtL3ZpcnRpby8K
K0Y6CWluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9fZ3B1LmgKKworVklSVElPIEhPU1QgKFZIT1NU
KQorTToJIk1pY2hhZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPgorTToJSmFzb24gV2Fu
ZyA8amFzb3dhbmdAcmVkaGF0LmNvbT4KK1I6CUV1Z2VuaW8gUMOpcmV6IDxlcGVyZXptYUByZWRo
YXQuY29tPgorTDoJa3ZtQHZnZXIua2VybmVsLm9yZworTDoJdmlydHVhbGl6YXRpb25AbGlzdHMu
bGludXguZGV2CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOgln
aXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L21zdC92aG9z
dC5naXQKK0Y6CWRyaXZlcnMvdmhvc3QvCitGOglpbmNsdWRlL2xpbnV4L3NjaGVkL3Zob3N0X3Rh
c2suaAorRjoJaW5jbHVkZS9saW51eC92aG9zdF9pb3RsYi5oCitGOglpbmNsdWRlL3VhcGkvbGlu
dXgvdmhvc3QuaAorRjoJa2VybmVsL3Zob3N0X3Rhc2suYworCitWSVJUSU8gSE9TVCAoVkhPU1Qt
U0NTSSkKK006CSJNaWNoYWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0LmNvbT4KK006CUphc29u
IFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+CitNOglNaWtlIENocmlzdGllIDxtaWNoYWVsLmNo
cmlzdGllQG9yYWNsZS5jb20+CitSOglQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRoYXQuY29t
PgorUjoJU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgorTDoJdmlydHVhbGl6
YXRpb25AbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3Zob3N0L3Nj
c2kuYworCitWSVJUSU8gSTJDIERSSVZFUgorTToJVmlyZXNoIEt1bWFyIDx2aXJlc2gua3VtYXJA
bGluYXJvLm9yZz4KK1I6CSJDaGVuLCBKaWFuIEp1biIgPGppYW4uanVuLmNoZW5AaW50ZWwuY29t
PgorTDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworTDoJdmlydHVhbGl6YXRpb25AbGlzdHMu
bGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLXZpcnRp
by5jCitGOglpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX2kyYy5oCisKK1ZJUlRJTyBJTlBVVCBE
UklWRVIKK006CUdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPgorUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy92aXJ0aW8vdmlydGlvX2lucHV0LmMKK0Y6CWluY2x1ZGUvdWFwaS9saW51
eC92aXJ0aW9faW5wdXQuaAorCitWSVJUSU8gSU9NTVUgRFJJVkVSCitNOglKZWFuLVBoaWxpcHBl
IEJydWNrZXIgPGplYW4tcGhpbGlwcGVAbGluYXJvLm9yZz4KK0w6CXZpcnR1YWxpemF0aW9uQGxp
c3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9pb21tdS92aXJ0aW8taW9t
bXUuYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZpcnRpb19pb21tdS5oCisKK1ZJUlRJTyBNRU0g
RFJJVkVSCitNOglEYXZpZCBIaWxkZW5icmFuZCA8ZGF2aWRAcmVkaGF0LmNvbT4KK0w6CXZpcnR1
YWxpemF0aW9uQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly92aXJ0
aW8tbWVtLmdpdGxhYi5pby8KK0Y6CWRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYworRjoJaW5j
bHVkZS91YXBpL2xpbnV4L3ZpcnRpb19tZW0uaAorCitWSVJUSU8gUE1FTSBEUklWRVIKK006CVBh
bmthaiBHdXB0YSA8cGFua2FqLmd1cHRhLmxpbnV4QGdtYWlsLmNvbT4KK0w6CXZpcnR1YWxpemF0
aW9uQGxpc3RzLmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9udmRpbW0vbmRf
dmlydGlvLmMKK0Y6CWRyaXZlcnMvbnZkaW1tL3ZpcnRpb19wbWVtLmMKKworVklSVElPIFJUQyBE
UklWRVIKK006CVBldGVyIEhpbGJlciA8cXVpY19waGlsYmVyQHF1aWNpbmMuY29tPgorTDoJdmly
dHVhbGl6YXRpb25AbGlzdHMubGludXguZGV2CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3Zp
cnRpby92aXJ0aW9fcnRjXyoKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92aXJ0aW9fcnRjLmgKKwor
VklSVElPIFNPVU5EIERSSVZFUgorTToJQW50b24gWWFrb3ZsZXYgPGFudG9uLnlha292bGV2QG9w
ZW5zeW5lcmd5LmNvbT4KK006CSJNaWNoYWVsIFMuIFRzaXJraW4iIDxtc3RAcmVkaGF0LmNvbT4K
K0w6CXZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LmRldgorTDoJbGludXgtc291bmRAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglpbmNsdWRlL3VhcGkvbGludXgvdmlydGlvX3Nu
ZC5oCitGOglzb3VuZC92aXJ0aW8vKgorCitWSVJUVUFMIEJPWCBHVUVTVCBERVZJQ0UgRFJJVkVS
CitNOglIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTToJQXJuZCBCZXJnbWFu
biA8YXJuZEBhcm5kYi5kZT4KK006CUdyZWcgS3JvYWgtSGFydG1hbiA8Z3JlZ2toQGxpbnV4Zm91
bmRhdGlvbi5vcmc+CitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL3ZpcnQvdmJveGd1ZXN0Lwor
RjoJaW5jbHVkZS9saW51eC92Ym94X3V0aWxzLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC92Ym94
Ki5oCisKK1ZJUlRVQUwgQk9YIFNIQVJFRCBGT0xERVIgVkZTIERSSVZFUgorTToJSGFucyBkZSBH
b2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitGOglmcy92Ym94c2YvKgorCitWSVJUVUFMIFBDTSBURVNUIERS
SVZFUgorTToJSXZhbiBPcmxvdiA8aXZhbi5vcmxvdjAzMjJAZ21haWwuY29tPgorTDoJbGludXgt
c291bmRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL3Nv
dW5kL2NhcmRzL3BjbXRlc3QucnN0CitGOglzb3VuZC9kcml2ZXJzL3BjbXRlc3QuYworRjoJdG9v
bHMvdGVzdGluZy9zZWxmdGVzdHMvYWxzYS90ZXN0LXBjbXRlc3QtZHJpdmVyLmMKKworVklSVFVB
TCBTRVJJTyBERVZJQ0UgRFJJVkVSCitNOglTdGVwaGVuIENoYW5kbGVyIFBhdWwgPHRoYXRzbHl1
ZGVAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9pbnB1dC9zZXJpby91c2Vy
aW8uYworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3VzZXJpby5oCisKK1ZJU0hBWSBWRU1MMzIzNSBB
TUJJRU5UIExJR0hUIFNFTlNPUiBEUklWRVIKK006CUphdmllciBDYXJyYXNjbyA8amF2aWVyLmNh
cnJhc2NvLmNydXpAZ21haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9k
ZXZpY2V0cmVlL2JpbmRpbmdzL2lpby9saWdodC92aXNoYXksdmVtbDYwMzAueWFtbAorRjoJZHJp
dmVycy9paW8vbGlnaHQvdmVtbDMyMzUuYworCitWSVNIQVkgVkVNTDYwMzAgQU1CSUVOVCBMSUdI
VCBTRU5TT1IgRFJJVkVSCitNOglKYXZpZXIgQ2FycmFzY28gPGphdmllci5jYXJyYXNjby5jcnV6
QGdtYWlsLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i
aW5kaW5ncy9paW8vbGlnaHQvdmlzaGF5LHZlbWw2MDMwLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2xp
Z2h0L3ZlbWw2MDMwLmMKKworVklTSEFZIFZFTUw2MDc1IFVWQSBBTkQgVVZCIExJR0hUIFNFTlNP
UiBEUklWRVIKK006CUphdmllciBDYXJyYXNjbyA8amF2aWVyLmNhcnJhc2NvLmNydXpAZ21haWwu
Y29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L2lpby9saWdodC92aXNoYXksdmVtbDYwNzUueWFtbAorRjoJZHJpdmVycy9paW8vbGlnaHQvdmVt
bDYwNzUuYworCitWSVNMIFZJUlRVQUwgU1RBVEVMRVNTIERFQ09ERVIgRFJJVkVSCitNOglEYW5p
ZWwgQWxtZWlkYSA8ZGFuaWVsLmFsbWVpZGFAY29sbGFib3JhLmNvbT4KK0w6CWxpbnV4LW1lZGlh
QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL21lZGlhL3Rlc3QtZHJp
dmVycy92aXNsCisKK1ZJVklEIFZJUlRVQUwgVklERU8gRFJJVkVSCitNOglIYW5zIFZlcmt1aWwg
PGh2ZXJrdWlsQHhzNGFsbC5ubD4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZworVDoJZ2l0IGdpdDovL2xpbnV4dHYu
b3JnL21lZGlhLmdpdAorRjoJZHJpdmVycy9tZWRpYS90ZXN0LWRyaXZlcnMvdml2aWQvKgorCitW
TSBTT0NLRVRTIChBRl9WU09DSykKK006CVN0ZWZhbm8gR2FyemFyZWxsYSA8c2dhcnphcmVAcmVk
aGF0LmNvbT4KK0w6CXZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LmRldgorTDoJbmV0ZGV2QHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9uZXQvdnNvY2ttb24uYwor
RjoJaW5jbHVkZS9uZXQvYWZfdnNvY2suaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZtX3NvY2tl
dHMuaAorRjoJaW5jbHVkZS91YXBpL2xpbnV4L3ZtX3NvY2tldHNfZGlhZy5oCitGOglpbmNsdWRl
L3VhcGkvbGludXgvdnNvY2ttb24uaAorRjoJbmV0L3Ztd192c29jay8KK0Y6CXRvb2xzL3Rlc3Rp
bmcvdnNvY2svCisKK1ZNQUxMT0MKK006CUFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRh
dGlvbi5vcmc+CitNOglVbGFkemlzbGF1IFJlemtpIDx1cmV6a2lAZ21haWwuY29tPgorTDoJbGlu
dXgtbW1Aa3ZhY2sub3JnCitTOglNYWludGFpbmVkCitXOglodHRwOi8vd3d3LmxpbnV4LW1tLm9y
ZworVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9h
a3BtL21tCitGOglpbmNsdWRlL2xpbnV4L3ZtYWxsb2MuaAorRjoJbW0vdm1hbGxvYy5jCisKK1ZN
RSBTVUJTWVNURU0KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgor
VDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9ncmVn
a2gvY2hhci1taXNjLmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL3ZtZS5yc3QKK0Y6
CWRyaXZlcnMvc3RhZ2luZy92bWVfdXNlci8KKworVk1XQVJFIEJBTExPT04gRFJJVkVSCitNOglK
ZXJyaW4gU2hhamkgR2VvcmdlIDxqZXJyaW4uc2hhamktZ2VvcmdlQGJyb2FkY29tLmNvbT4KK1I6
CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFj
ay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CVN1cHBvcnRlZAorRjoJZHJpdmVycy9taXNjL3Ztd19iYWxsb29uLmMKKworVk1XQVJFIEhZUEVS
VklTT1IgSU5URVJGQUNFCitNOglBamF5IEthaGVyIDxhamF5LmthaGVyQGJyb2FkY29tLmNvbT4K
K006CUFsZXhleSBNYWtoYWxvdiA8YWxleGV5Lm1ha2hhbG92QGJyb2FkY29tLmNvbT4KK1I6CUJy
b2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFjay1s
aXN0QGJyb2FkY29tLmNvbT4KK0w6CXZpcnR1YWxpemF0aW9uQGxpc3RzLmxpbnV4LmRldgorTDoJ
eDg2QGtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2dpdC5rZXJuZWwub3Jn
L3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXAvdGlwLmdpdCB4ODYvdm13YXJlCitGOglhcmNo
L3g4Ni9pbmNsdWRlL2FzbS92bXdhcmUuaAorRjoJYXJjaC94ODYva2VybmVsL2NwdS92bXdhcmUu
YworCitWTVdBUkUgUFZSRE1BIERSSVZFUgorTToJQnJ5YW4gVGFuIDxicnlhbi1idC50YW5AYnJv
YWRjb20uY29tPgorTToJVmlzaG51IERhc2EgPHZpc2hudS5kYXNhQGJyb2FkY29tLmNvbT4KK1I6
CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFj
ay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LXJkbWFAdmdlci5rZXJuZWwub3JnCitTOglT
dXBwb3J0ZWQKK0Y6CWRyaXZlcnMvaW5maW5pYmFuZC9ody92bXdfcHZyZG1hLworCitWTVdBUkUg
UFZTQ1NJIERSSVZFUgorTToJVmlzaGFsIEJoYWt0YSA8dmlzaGFsLmJoYWt0YUBicm9hZGNvbS5j
b20+CitSOglCcm9hZGNvbSBpbnRlcm5hbCBrZXJuZWwgcmV2aWV3IGxpc3QgPGJjbS1rZXJuZWwt
ZmVlZGJhY2stbGlzdEBicm9hZGNvbS5jb20+CitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9y
ZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Njc2kvdm13X3B2c2NzaS5jCitGOglkcml2ZXJz
L3Njc2kvdm13X3B2c2NzaS5oCisKK1ZNV0FSRSBWSVJUVUFMIFBUUCBDTE9DSyBEUklWRVIKK006
CU5pY2sgU2hpIDxuaWNrLnNoaUBicm9hZGNvbS5jb20+CitSOglBamF5IEthaGVyIDxhamF5Lmth
aGVyQGJyb2FkY29tLmNvbT4KK1I6CUFsZXhleSBNYWtoYWxvdiA8YWxleGV5Lm1ha2hhbG92QGJy
b2FkY29tLmNvbT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNt
LWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CW5ldGRldkB2Z2VyLmtlcm5l
bC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9wdHAvcHRwX3Ztdy5jCisKK1ZNV0FSRSBW
TUNJIERSSVZFUgorTToJQnJ5YW4gVGFuIDxicnlhbi1idC50YW5AYnJvYWRjb20uY29tPgorTToJ
VmlzaG51IERhc2EgPHZpc2hudS5kYXNhQGJyb2FkY29tLmNvbT4KK1I6CUJyb2FkY29tIGludGVy
bmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5lbC1mZWVkYmFjay1saXN0QGJyb2FkY29t
LmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJ
ZHJpdmVycy9taXNjL3Ztd192bWNpLworRjoJaW5jbHVkZS9saW51eC92bXdfdm1jaSoKKworVk1X
QVJFIFZNTU9VU0UgU1VCRFJJVkVSCitNOglaYWNrIFJ1c2luIDx6YWNrLnJ1c2luQGJyb2FkY29t
LmNvbT4KK1I6CUJyb2FkY29tIGludGVybmFsIGtlcm5lbCByZXZpZXcgbGlzdCA8YmNtLWtlcm5l
bC1mZWVkYmFjay1saXN0QGJyb2FkY29tLmNvbT4KK0w6CWxpbnV4LWlucHV0QHZnZXIua2VybmVs
Lm9yZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2lucHV0L21vdXNlL3ZtbW91c2UuYworRjoJ
ZHJpdmVycy9pbnB1dC9tb3VzZS92bW1vdXNlLmgKKworVk1XQVJFIFZNWE5FVDMgRVRIRVJORVQg
RFJJVkVSCitNOglSb25hayBEb3NoaSA8cm9uYWsuZG9zaGlAYnJvYWRjb20uY29tPgorUjoJQnJv
YWRjb20gaW50ZXJuYWwga2VybmVsIHJldmlldyBsaXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxp
c3RAYnJvYWRjb20uY29tPgorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglkcml2ZXJzL25ldC92bXhuZXQzLworCitWTVdBUkUgVlNPQ0sgVk1DSSBUUkFOU1BPUlQg
RFJJVkVSCitNOglCcnlhbiBUYW4gPGJyeWFuLWJ0LnRhbkBicm9hZGNvbS5jb20+CitNOglWaXNo
bnUgRGFzYSA8dmlzaG51LmRhc2FAYnJvYWRjb20uY29tPgorUjoJQnJvYWRjb20gaW50ZXJuYWwg
a2VybmVsIHJldmlldyBsaXN0IDxiY20ta2VybmVsLWZlZWRiYWNrLWxpc3RAYnJvYWRjb20uY29t
PgorTDoJbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitGOgluZXQv
dm13X3Zzb2NrL3ZtY2lfdHJhbnNwb3J0KgorCitWT0NPUkUgVk9DT1JFMiBCT0FSRAorTToJSGFy
dmV5IEh1bnQgPGhhcnZleWh1bnRuZXh1c0BnbWFpbC5jb20+CitMOglsaW51eC1taXBzQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJYXJjaC9taXBzL2Jvb3QvZHRzL3JhbGluay92
b2NvcmUyLmR0cworCitWT0xUQUdFIEFORCBDVVJSRU5UIFJFR1VMQVRPUiBGUkFNRVdPUksKK006
CUxpYW0gR2lyZHdvb2QgPGxnaXJkd29vZEBnbWFpbC5jb20+CitNOglNYXJrIEJyb3duIDxicm9v
bmllQGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnCitTOglTdXBw
b3J0ZWQKK1c6CWh0dHA6Ly93d3cuc2xpbWxvZ2ljLmNvLnVrLz9wPTQ4CitUOglnaXQgZ2l0Oi8v
Z2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Jyb29uaWUvcmVndWxhdG9y
LmdpdAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3JlZ3VsYXRvci8KK0Y6
CURvY3VtZW50YXRpb24vcG93ZXIvcmVndWxhdG9yLworRjoJZHJpdmVycy9yZWd1bGF0b3IvCitG
OglpbmNsdWRlL2R0LWJpbmRpbmdzL3JlZ3VsYXRvci8KK0Y6CWluY2x1ZGUvbGludXgvcmVndWxh
dG9yLworSzoJcmVndWxhdG9yX2dldF9vcHRpb25hbAorCitWT0xUQUdFIEFORCBDVVJSRU5UIFJF
R1VMQVRPUiBJUlEgSEVMUEVSUworUjoJTWF0dGkgVmFpdHRpbmVuIDxtYXp6aWVzYWNjb3VudEBn
bWFpbC5jb20+CitGOglkcml2ZXJzL3JlZ3VsYXRvci9pcnFfaGVscGVycy5jCisKK1ZSRgorTToJ
RGF2aWQgQWhlcm4gPGRzYWhlcm5Aa2VybmVsLm9yZz4KK0w6CW5ldGRldkB2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy92cmYucnN0CitG
Oglkcml2ZXJzL25ldC92cmYuYworCitWU1BSSU5URgorTToJUGV0ciBNbGFkZWsgPHBtbGFkZWtA
c3VzZS5jb20+CitNOglTdGV2ZW4gUm9zdGVkdCA8cm9zdGVkdEBnb29kbWlzLm9yZz4KK1I6CUFu
ZHkgU2hldmNoZW5rbyA8YW5kcml5LnNoZXZjaGVua29AbGludXguaW50ZWwuY29tPgorUjoJUmFz
bXVzIFZpbGxlbW9lcyA8bGludXhAcmFzbXVzdmlsbGVtb2VzLmRrPgorUjoJU2VyZ2V5IFNlbm96
aGF0c2t5IDxzZW5vemhhdHNreUBjaHJvbWl1bS5vcmc+CitTOglNYWludGFpbmVkCitUOglnaXQg
Z2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3ByaW50ay9saW51
eC5naXQKK0Y6CURvY3VtZW50YXRpb24vY29yZS1hcGkvcHJpbnRrLWZvcm1hdHMucnN0CitGOgls
aWIvdGVzdHMvcHJpbnRmX2t1bml0LmMKK0Y6CWxpYi90ZXN0cy9zY2FuZl9rdW5pdC5jCitGOgls
aWIvdnNwcmludGYuYworCitWVDEyMTEgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIKK006CUp1ZXJn
IEhhZWZsaWdlciA8anVlcmdoQHByb3Rvbi5tZT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9od21vbi92dDEyMTEucnN0CitG
Oglkcml2ZXJzL2h3bW9uL3Z0MTIxMS5jCisKK1ZUODIzMSBIQVJEV0FSRSBNT05JVE9SIERSSVZF
UgorTToJUm9nZXIgTHVjYXMgPHZ0ODIzMUBoaWRkZW5lbmdpbmUuY28udWs+CitMOglsaW51eC1o
d21vbkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaHdtb24vdnQ4
MjMxLmMKKworVlVCMzAwIFVTQiB0byBTRElPL1NEL01NQyBicmlkZ2UgY2hpcAorTDoJbGludXgt
bW1jQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitGOglkcml2ZXJzL21tYy9ob3N0L3Z1YjMw
MC5jCisKK1cxIERBTExBUydTIDEtV0lSRSBCVVMKK006CUtyenlzenRvZiBLb3psb3dza2kgPGty
emtAa2VybmVsLm9yZz4KK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vZGV2aWNldHJl
ZS9iaW5kaW5ncy93MS8KK0Y6CURvY3VtZW50YXRpb24vdzEvCitGOglkcml2ZXJzL3cxLworRjoJ
aW5jbHVkZS9saW51eC93MS5oCisKK1c4Mzc5MUQgSEFSRFdBUkUgTU9OSVRPUklORyBEUklWRVIK
K006CU1hcmMgSHVsc21hbiA8bS5odWxzbWFuQHR1ZGVsZnQubmw+CitMOglsaW51eC1od21vbkB2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3VtZW50YXRpb24vaHdtb24vdzgz
NzkxZC5yc3QKK0Y6CWRyaXZlcnMvaHdtb24vdzgzNzkxZC5jCisKK1c4Mzc5MyBIQVJEV0FSRSBN
T05JVE9SSU5HIERSSVZFUgorTToJUnVkb2xmIE1hcmVrIDxyLm1hcmVrQGFzc2VtYmxlci5jej4K
K0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1l
bnRhdGlvbi9od21vbi93ODM3OTMucnN0CitGOglkcml2ZXJzL2h3bW9uL3c4Mzc5My5jCisKK1c4
Mzc5NSBIQVJEV0FSRSBNT05JVE9SSU5HIERSSVZFUgorTToJSmVhbiBEZWx2YXJlIDxqZGVsdmFy
ZUBzdXNlLmNvbT4KK0w6CWxpbnV4LWh3bW9uQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5l
ZAorRjoJZHJpdmVycy9od21vbi93ODM3OTUuYworCitXODNMNTF4RCBTRC9NTUMgQ0FSRCBJTlRF
UkZBQ0UgRFJJVkVSCitNOglQaWVycmUgT3NzbWFuIDxwaWVycmVAb3NzbWFuLmV1PgorUzoJTWFp
bnRhaW5lZAorRjoJZHJpdmVycy9tbWMvaG9zdC93YnNkLioKKworV0FDT00gUFJPVE9DT0wgNCBT
RVJJQUwgVEFCTEVUUworTToJSnVsaWFuIFNxdWlyZXMgPGp1bGlhbkBjaXBodC5uZXQ+CitNOglI
YW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorTDoJbGludXgtaW5wdXRAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJzL2lucHV0L3RhYmxldC93YWNvbV9z
ZXJpYWw0LmMKKworV0FOR1hVTiBFVEhFUk5FVCBEUklWRVIKK006CUppYXdlbiBXdSA8amlhd2Vu
d3VAdHJ1c3RuZXRpYy5jb20+CitNOglNZW5neXVhbiBMb3UgPG1lbmd5dWFubG91QG5ldC1zd2lm
dC5jb20+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitXOglodHRw
czovL3d3dy5uZXQtc3dpZnQuY29tCitGOglEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNl
X2RyaXZlcnMvZXRoZXJuZXQvd2FuZ3h1bi8qCitGOglkcml2ZXJzL25ldC9ldGhlcm5ldC93YW5n
eHVuLworRjoJZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLXd4LmMKKworV0FUQ0hET0cgREVWSUNF
IERSSVZFUlMKK006CVdpbSBWYW4gU2Vicm9lY2sgPHdpbUBsaW51eC13YXRjaGRvZy5vcmc+CitN
OglHdWVudGVyIFJvZWNrIDxsaW51eEByb2Vjay11cy5uZXQ+CitMOglsaW51eC13YXRjaGRvZ0B2
Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK1c6CWh0dHA6Ly93d3cubGludXgtd2F0Y2hk
b2cub3JnLworVDoJZ2l0IGdpdDovL3d3dy5saW51eC13YXRjaGRvZy5vcmcvbGludXgtd2F0Y2hk
b2cuZ2l0CitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cvCitG
OglEb2N1bWVudGF0aW9uL3dhdGNoZG9nLworRjoJZHJpdmVycy93YXRjaGRvZy8KK0Y6CWluY2x1
ZGUvbGludXgvd2F0Y2hkb2cuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMvd2F0Y2hkb2cuaAor
RjoJaW5jbHVkZS91YXBpL2xpbnV4L3dhdGNoZG9nLmgKKworV0FWRTUgVlBVIENPREVDIERSSVZF
UgorTToJTmFzIENodW5nIDxuYXMuY2h1bmdAY2hpcHNubWVkaWEuY29tPgorTToJSmFja3NvbiBM
ZWUgPGphY2tzb24ubGVlQGNoaXBzbm1lZGlhLmNvbT4KK0w6CWxpbnV4LW1lZGlhQHZnZXIua2Vy
bmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRp
bmdzL21lZGlhL2NubSx3YXZlNTIxYy55YW1sCitGOglkcml2ZXJzL21lZGlhL3BsYXRmb3JtL2No
aXBzLW1lZGlhL3dhdmU1LworCitXSElTS0VZQ09WRSBQTUlDIEdQSU8gRFJJVkVSCitNOglLdXBw
dXN3YW15IFNhdGh5YW5hcmF5YW5hbiA8c2F0aHlhbmFyYXlhbmFuLmt1cHB1c3dhbXlAbGludXgu
aW50ZWwuY29tPgorTDoJbGludXgtZ3Bpb0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CWRyaXZlcnMvZ3Bpby9ncGlvLXdjb3ZlLmMKKworV0hXQVZFIFJUQyBEUklWRVIKK006CURp
YW5sb25nIExpIDxsb25nMTcuY29vbEAxNjMuY29tPgorTDoJbGludXgtcnRjQHZnZXIua2VybmVs
Lm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9ydGMvcnRjLXNkMzA3OC5jCisKK1dJSU1P
VEUgSElEIERSSVZFUgorTToJRGF2aWQgUmhlaW5zYmVyZyA8ZGF2aWRAcmVhZGFoZWFkLmV1Pgor
TDoJbGludXgtaW5wdXRAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglkcml2ZXJz
L2hpZC9oaWQtd2lpbW90ZSoKKworV0lMT0NJVFkgV0lMNjIxMCBXSVJFTEVTUyBEUklWRVIKK0w6
CWxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitXOglodHRwczovL3dp
cmVsZXNzLndpa2kua2VybmVsLm9yZy9lbi91c2Vycy9Ecml2ZXJzL3dpbDYyMTAKK0Y6CWRyaXZl
cnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwLworCitXSU5CT05EIENJUiBEUklWRVIKK006CURh
dmlkIEjDpHJkZW1hbiA8ZGF2aWRAaGFyZGVtYW4ubnU+CitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL21lZGlhL3JjL3dpbmJvbmQtY2lyLmMKKworV0lOU1lTVEVNUyBFQkMtQzM4NCBXQVRDSERP
RyBEUklWRVIKK0w6CWxpbnV4LXdhdGNoZG9nQHZnZXIua2VybmVsLm9yZworUzoJT3JwaGFuCitG
Oglkcml2ZXJzL3dhdGNoZG9nL2ViYy1jMzg0X3dkdC5jCisKK1dJTlNZU1RFTVMgV1MxNkM0OCBH
UElPIERSSVZFUgorTToJV2lsbGlhbSBCcmVhdGhpdHQgR3JheSA8d2JnQGtlcm5lbC5vcmc+CitM
OglsaW51eC1ncGlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy9n
cGlvL2dwaW8td3MxNmM0OC5jCisKK1dJUkVHVUFSRCBTRUNVUkUgTkVUV09SSyBUVU5ORUwKK006
CUphc29uIEEuIERvbmVuZmVsZCA8SmFzb25AengyYzQuY29tPgorTDoJd2lyZWd1YXJkQGxpc3Rz
Lnp4MmM0LmNvbQorTDoJbmV0ZGV2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJ
ZHJpdmVycy9uZXQvd2lyZWd1YXJkLworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvd2lyZWd1
YXJkLworCitXSVNUUk9OIExBUFRPUCBCVVRUT04gRFJJVkVSCitNOglNaWxvc2xhdiBUcm1hYyA8
bWl0ckB2b2xueS5jej4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvaW5wdXQvbWlzYy93aXN0
cm9uX2J0bnMuYworCitXTUkgQklOQVJZIE1PRiBEUklWRVIKK006CUFybWluIFdvbGYgPFdfQXJt
aW5AZ214LmRlPgorUjoJVGhvbWFzIFdlacOfc2NodWggPGxpbnV4QHdlaXNzc2NodWgubmV0Pgor
TDoJcGxhdGZvcm0tZHJpdmVyLXg4NkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1wbGF0Zm9ybS13bWktYm1vZgorRjoJRG9j
dW1lbnRhdGlvbi93bWkvZGV2aWNlcy93bWktYm1vZi5yc3QKK0Y6CWRyaXZlcnMvcGxhdGZvcm0v
eDg2L3dtaS1ibW9mLmMKKworV09MRlNPTiBNSUNST0VMRUNUUk9OSUNTIERSSVZFUlMKK0w6CXBh
dGNoZXNAb3BlbnNvdXJjZS5jaXJydXMuY29tCitTOglTdXBwb3J0ZWQKK1c6CWh0dHBzOi8vZ2l0
aHViLmNvbS9DaXJydXNMb2dpYy9saW51eC1kcml2ZXJzL3dpa2kKK1Q6CWdpdCBodHRwczovL2dp
dGh1Yi5jb20vQ2lycnVzTG9naWMvbGludXgtZHJpdmVycy5naXQKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9leHRjb24vd2xmLGFyaXpvbmEueWFtbAorRjoJRG9jdW1lbnRh
dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21mZC93bGYsYXJpem9uYS55YW1sCitGOglEb2N1bWVu
dGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWZkL3dtODMxeC50eHQKK0Y6CURvY3VtZW50YXRp
b24vZGV2aWNldHJlZS9iaW5kaW5ncy9yZWd1bGF0b3Ivd2xmLGFyaXpvbmEueWFtbAorRjoJRG9j
dW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3NvdW5kL3dsZiwqLnlhbWwKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC93bSoKK0Y6CURvY3VtZW50YXRpb24v
aHdtb24vd204Mz8/LnJzdAorRjoJYXJjaC9hcm0vbWFjaC1zM2MvbWFjaC1jcmFnNjQxMCoKK0Y6
CWRyaXZlcnMvY2xrL2Nsay13bTgzKi5jCitGOglkcml2ZXJzL2dwaW8vZ3Bpby0qd20qLmMKK0Y6
CWRyaXZlcnMvZ3Bpby9ncGlvLWFyaXpvbmEuYworRjoJZHJpdmVycy9od21vbi93bTgzPz8taHdt
b24uYworRjoJZHJpdmVycy9pbnB1dC9taXNjL3dtODMxeC1vbi5jCitGOglkcml2ZXJzL2lucHV0
L3RvdWNoc2NyZWVuL3dtODMxeC10cy5jCitGOglkcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dt
OTcqLmMKK0Y6CWRyaXZlcnMvbGVkcy9sZWRzLXdtODMqLmMKK0Y6CWRyaXZlcnMvbWZkL2FyaXpv
bmEqCitGOglkcml2ZXJzL21mZC9jczQ3bDI0KgorRjoJZHJpdmVycy9tZmQvd20qLmMKK0Y6CWRy
aXZlcnMvcG93ZXIvc3VwcGx5L3dtODMqLmMKK0Y6CWRyaXZlcnMvcmVndWxhdG9yL2FyaXpvbmEq
CitGOglkcml2ZXJzL3JlZ3VsYXRvci93bTgqLmMKK0Y6CWRyaXZlcnMvcnRjL3J0Yy13bTgzKi5j
CitGOglkcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC93bTgzKl9ibC5jCitGOglkcml2ZXJzL3dhdGNo
ZG9nL3dtODMqX3dkdC5jCitGOglpbmNsdWRlL2xpbnV4L21mZC9hcml6b25hLworRjoJaW5jbHVk
ZS9saW51eC9tZmQvd204MzF4LworRjoJaW5jbHVkZS9saW51eC9tZmQvd204MzUwLworRjoJaW5j
bHVkZS9saW51eC9tZmQvd204NDAwKgorRjoJaW5jbHVkZS9saW51eC9yZWd1bGF0b3IvYXJpem9u
YSoKK0Y6CWluY2x1ZGUvbGludXgvd205N3h4LmgKK0Y6CWluY2x1ZGUvc291bmQvd20/Pz8/LmgK
K0Y6CXNvdW5kL3NvYy9jb2RlY3MvYXJpem9uYSoKK0Y6CXNvdW5kL3NvYy9jb2RlY3MvY3M0N2wy
NCoKK0Y6CXNvdW5kL3NvYy9jb2RlY3Mvd20qCisKK1dPUktRVUVVRQorTToJVGVqdW4gSGVvIDx0
akBrZXJuZWwub3JnPgorUjoJTGFpIEppYW5nc2hhbiA8amlhbmdzaGFubGFpQGdtYWlsLmNvbT4K
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvdGovd3EuZ2l0CitGOglEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3dvcmtxdWV1
ZS5yc3QKK0Y6CWluY2x1ZGUvbGludXgvd29ya3F1ZXVlLmgKK0Y6CWtlcm5lbC93b3JrcXVldWUu
YworRjoJa2VybmVsL3dvcmtxdWV1ZV9pbnRlcm5hbC5oCisKK1dXQU4gRFJJVkVSUworTToJTG9p
YyBQb3VsYWluIDxsb2ljLnBvdWxhaW5Ab3NzLnF1YWxjb21tLmNvbT4KK006CVNlcmdleSBSeWF6
YW5vdiA8cnlhemFub3Yucy5hQGdtYWlsLmNvbT4KK1I6CUpvaGFubmVzIEJlcmcgPGpvaGFubmVz
QHNpcHNvbHV0aW9ucy5uZXQ+CitMOgluZXRkZXZAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFp
bmVkCitGOglkcml2ZXJzL25ldC93d2FuLworRjoJaW5jbHVkZS9saW51eC93d2FuLmgKK0Y6CWlu
Y2x1ZGUvdWFwaS9saW51eC93d2FuLmgKKworWC1QT1dFUlMgQVhQMjg4IFBNSUMgRFJJVkVSUwor
TToJSGFucyBkZSBHb2VkZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK1M6CU1haW50YWluZWQKK0Y6
CWRyaXZlcnMvYWNwaS9wbWljL2ludGVsX3BtaWNfeHBvd2VyLmMKK046CWF4cDI4OAorCitYLVBP
V0VSUyBNVUxUSUZVTkNUSU9OIFBNSUMgREVWSUNFIERSSVZFUlMKK006CUNoZW4tWXUgVHNhaSA8
d2Vuc0Bjc2llLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50
YWluZWQKK046CWF4cFsxMjhdCisKK1guMjUgU1RBQ0sKK006CU1hcnRpbiBTY2hpbGxlciA8bXNA
ZGV2LnRkdC5kZT4KK0w6CWxpbnV4LXgyNUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQK
K0Y6CURvY3VtZW50YXRpb24vbmV0d29ya2luZy9sYXBiLW1vZHVsZS5yc3QKK0Y6CURvY3VtZW50
YXRpb24vbmV0d29ya2luZy94MjUqCitGOglkcml2ZXJzL25ldC93YW4vaGRsY194MjUuYworRjoJ
ZHJpdmVycy9uZXQvd2FuL2xhcGJldGhlci5jCitGOglpbmNsdWRlLyovbGFwYi5oCitGOglpbmNs
dWRlL25ldC94MjUqCitGOglpbmNsdWRlL3VhcGkvbGludXgveDI1LmgKK0Y6CW5ldC9sYXBiLwor
RjoJbmV0L3gyNS8KKworWDg2IEFSQ0hJVEVDVFVSRSAoMzItQklUIEFORCA2NC1CSVQpCitNOglU
aG9tYXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KK006CUluZ28gTW9sbmFyIDxtaW5n
b0ByZWRoYXQuY29tPgorTToJQm9yaXNsYXYgUGV0a292IDxicEBhbGllbjguZGU+CitNOglEYXZl
IEhhbnNlbiA8ZGF2ZS5oYW5zZW5AbGludXguaW50ZWwuY29tPgorTToJeDg2QGtlcm5lbC5vcmcK
K1I6CSJILiBQZXRlciBBbnZpbiIgPGhwYUB6eXRvci5jb20+CitMOglsaW51eC1rZXJuZWxAdmdl
ci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RpcC90aXAuZ2l0IHg4Ni9jb3JlCitGOglEb2N1bWVu
dGF0aW9uL2FyY2gveDg2LworRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3g4
Ni8KK0Y6CWFyY2gveDg2LworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMveDg2CisKK1g4NiBD
UFVJRCBEQVRBQkFTRQorTToJQm9yaXNsYXYgUGV0a292IDxicEBhbGllbjguZGU+CitNOglUaG9t
YXMgR2xlaXhuZXIgPHRnbHhAbGludXRyb25peC5kZT4KK006CXg4NkBrZXJuZWwub3JnCitSOglB
aG1lZCBTLiBEYXJ3aXNoIDxkYXJ3aUBsaW51dHJvbml4LmRlPgorTDoJeDg2LWNwdWlkQGxpc3Rz
LmxpbnV4LmRldgorUzoJTWFpbnRhaW5lZAorVzoJaHR0cHM6Ly94ODYtY3B1aWQub3JnCitGOgl0
b29scy9hcmNoL3g4Ni9rY3B1aWQvCisKK1g4NiBFTlRSWSBDT0RFCitNOglBbmR5IEx1dG9taXJz
a2kgPGx1dG9Aa2VybmVsLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tl
cm5lbC9naXQvdGlwL3RpcC5naXQgeDg2L2FzbQorRjoJYXJjaC94ODYvZW50cnkvCisKK1g4NiBI
QVJEV0FSRSBWVUxORVJBQklMSVRJRVMKK006CVRob21hcyBHbGVpeG5lciA8dGdseEBsaW51dHJv
bml4LmRlPgorTToJQm9yaXNsYXYgUGV0a292IDxicEBhbGllbjguZGU+CitNOglQZXRlciBaaWps
c3RyYSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CitNOglKb3NoIFBvaW1ib2V1ZiA8anBvaW1ib2VA
a2VybmVsLm9yZz4KK1I6CVBhd2FuIEd1cHRhIDxwYXdhbi5rdW1hci5ndXB0YUBsaW51eC5pbnRl
bC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL2h3LXZ1
bG4vCitGOglhcmNoL3g4Ni9pbmNsdWRlL2FzbS9ub3NwZWMtYnJhbmNoLmgKK0Y6CWFyY2gveDg2
L2tlcm5lbC9jcHUvYnVncy5jCisKK1g4NiBNQ0UgSU5GUkFTVFJVQ1RVUkUKK006CVRvbnkgTHVj
ayA8dG9ueS5sdWNrQGludGVsLmNvbT4KK006CUJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRl
PgorTDoJbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURvY3Vt
ZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtbWNlCitGOglEb2N1bWVudGF0aW9uL2FyY2gveDg2
L3g4Nl82NC9tYWNoaW5lY2hlY2sucnN0CitGOglhcmNoL3g4Ni9rZXJuZWwvY3B1L21jZS8qCisK
K1g4NiBNSUNST0NPREUgVVBEQVRFIFNVUFBPUlQKK006CUJvcmlzbGF2IFBldGtvdiA8YnBAYWxp
ZW44LmRlPgorUzoJTWFpbnRhaW5lZAorRjoJYXJjaC94ODYva2VybmVsL2NwdS9taWNyb2NvZGUv
KgorCitYODYgTU0KK006CURhdmUgSGFuc2VuIDxkYXZlLmhhbnNlbkBsaW51eC5pbnRlbC5jb20+
CitNOglBbmR5IEx1dG9taXJza2kgPGx1dG9Aa2VybmVsLm9yZz4KK006CVBldGVyIFppamxzdHJh
IDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcK
K1M6CU1haW50YWluZWQKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4
L2tlcm5lbC9naXQvdGlwL3RpcC5naXQgeDg2L21tCitGOglhcmNoL3g4Ni9tbS8KKworWDg2IFBM
QVRGT1JNIEFORFJPSUQgVEFCTEVUUyBEU0RUIEZJWFVQIERSSVZFUgorTToJSGFucyBkZSBHb2Vk
ZSA8aGRlZ29lZGVAcmVkaGF0LmNvbT4KK0w6CXBsYXRmb3JtLWRyaXZlci14ODZAdmdlci5rZXJu
ZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L3BkeDg2L3BsYXRmb3JtLWRyaXZlcnMteDg2LmdpdAorRjoJZHJp
dmVycy9wbGF0Zm9ybS94ODYveDg2LWFuZHJvaWQtdGFibGV0cy8KKworWDg2IFBMQVRGT1JNIERS
SVZFUlMKK006CUhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitNOglJbHBvIErD
pHJ2aW5lbiA8aWxwby5qYXJ2aW5lbkBsaW51eC5pbnRlbC5jb20+CitMOglwbGF0Zm9ybS1kcml2
ZXIteDg2QHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorUToJaHR0cHM6Ly9wYXRjaHdv
cmsua2VybmVsLm9yZy9wcm9qZWN0L3BsYXRmb3JtLWRyaXZlci14ODYvbGlzdC8KK1Q6CWdpdCBn
aXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvcGR4ODYvcGxhdGZv
cm0tZHJpdmVycy14ODYuZ2l0CitGOglkcml2ZXJzL3BsYXRmb3JtL29scGMvCitGOglkcml2ZXJz
L3BsYXRmb3JtL3g4Ni8KK0Y6CWluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS94ODYvCisKK1g4
NiBQTEFURk9STSBVViBIUEUgU1VQRVJET01FIEZMRVgKK006CVN0ZXZlIFdhaGwgPHN0ZXZlLndh
aGxAaHBlLmNvbT4KK1I6CUp1c3RpbiBFcm5zdCA8anVzdGluLmVybnN0QGhwZS5jb20+CitSOglL
eWxlIE1leWVyIDxreWxlLm1leWVyQGhwZS5jb20+CitSOglEaW1pdHJpIFNpdmFuaWNoIDxkaW1p
dHJpLnNpdmFuaWNoQGhwZS5jb20+CitSOglSdXNzIEFuZGVyc29uIDxydXNzLmFuZGVyc29uQGhw
ZS5jb20+CitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL3V2LworRjoJYXJj
aC94ODYva2VybmVsL2FwaWMveDJhcGljX3V2X3guYworRjoJYXJjaC94ODYvcGxhdGZvcm0vdXYv
CisKK1g4NiBTVEFDSyBVTldJTkRJTkcKK006CUpvc2ggUG9pbWJvZXVmIDxqcG9pbWJvZUBrZXJu
ZWwub3JnPgorTToJUGV0ZXIgWmlqbHN0cmEgPHBldGVyekBpbmZyYWRlYWQub3JnPgorUzoJU3Vw
cG9ydGVkCitGOglhcmNoL3g4Ni9pbmNsdWRlL2FzbS91bndpbmQqLmgKK0Y6CWFyY2gveDg2L2tl
cm5lbC9kdW1wc3RhY2suYworRjoJYXJjaC94ODYva2VybmVsL3N0YWNrdHJhY2UuYworRjoJYXJj
aC94ODYva2VybmVsL3Vud2luZF8qLmMKKworWDg2IFRSVVNUIERPTUFJTiBFWFRFTlNJT05TIChU
RFgpCitNOglLaXJpbGwgQS4gU2h1dGVtb3YgPGtpcmlsbC5zaHV0ZW1vdkBsaW51eC5pbnRlbC5j
b20+CitSOglEYXZlIEhhbnNlbiA8ZGF2ZS5oYW5zZW5AbGludXguaW50ZWwuY29tPgorTDoJeDg2
QGtlcm5lbC5vcmcKK0w6CWxpbnV4LWNvY29AbGlzdHMubGludXguZGV2CitTOglTdXBwb3J0ZWQK
K1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdGlw
L3RpcC5naXQgeDg2L3RkeAorRjoJRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1kZXZp
Y2VzLXZpcnR1YWwtbWlzYy10ZHhfZ3Vlc3QKK0Y6CWFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC90
ZHgqCitGOglhcmNoL3g4Ni9jb2NvL3RkeC8KK0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL3NoYXJl
ZC90ZHguaAorRjoJYXJjaC94ODYvaW5jbHVkZS9hc20vdGR4LmgKK0Y6CWFyY2gveDg2L3ZpcnQv
dm14L3RkeC8KK0Y6CWRyaXZlcnMvdmlydC9jb2NvL3RkeC1ndWVzdAorCitYODYgVkRTTworTToJ
QW5keSBMdXRvbWlyc2tpIDxsdXRvQGtlcm5lbC5vcmc+CitMOglsaW51eC1rZXJuZWxAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L3RpcC90aXAuZ2l0IHg4Ni92ZHNvCitGOglhcmNoL3g4Ni9l
bnRyeS92ZHNvLworCitYQVJSQVkKK006CU1hdHRoZXcgV2lsY294IDx3aWxseUBpbmZyYWRlYWQu
b3JnPgorTDoJbGludXgtZnNkZXZlbEB2Z2VyLmtlcm5lbC5vcmcKK0w6CWxpbnV4LW1tQGt2YWNr
Lm9yZworUzoJU3VwcG9ydGVkCitGOglEb2N1bWVudGF0aW9uL2NvcmUtYXBpL3hhcnJheS5yc3QK
K0Y6CWluY2x1ZGUvbGludXgvaWRyLmgKK0Y6CWluY2x1ZGUvbGludXgveGFycmF5LmgKK0Y6CWxp
Yi9pZHIuYworRjoJbGliL3Rlc3RfeGFycmF5LmMKK0Y6CWxpYi94YXJyYXkuYworRjoJdG9vbHMv
dGVzdGluZy9yYWRpeC10cmVlCisKK1hCT1ggRFZEIElSIFJFTU9URQorTToJQmVuamFtaW4gVmFs
ZW50aW4gPGJlbnBpY2NvQGdvb2dsZW1haWwuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVy
cy9tZWRpYS9yYy9rZXltYXBzL3JjLXhib3gtZHZkLmMKK0Y6CWRyaXZlcnMvbWVkaWEvcmMveGJv
eF9yZW1vdGUuYworCitYQzIwMjgvMzAyOCBUVU5FUiBEUklWRVIKK006CU1hdXJvIENhcnZhbGhv
IENoZWhhYiA8bWNoZWhhYkBrZXJuZWwub3JnPgorTDoJbGludXgtbWVkaWFAdmdlci5rZXJuZWwu
b3JnCitTOglNYWludGFpbmVkCitXOglodHRwczovL2xpbnV4dHYub3JnCitUOglnaXQgZ2l0Oi8v
bGludXh0di5vcmcvbWVkaWEuZ2l0CitGOglkcml2ZXJzL21lZGlhL3R1bmVycy94YzIwMjguKgor
CitYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKQorTToJQWxleGVpIFN0YXJvdm9pdG92IDxhc3RAa2Vy
bmVsLm9yZz4KK006CURhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlvZ2VhcmJveC5uZXQ+CitNOglE
YXZpZCBTLiBNaWxsZXIgPGRhdmVtQGRhdmVtbG9mdC5uZXQ+CitNOglKYWt1YiBLaWNpbnNraSA8
a3ViYUBrZXJuZWwub3JnPgorTToJSmVzcGVyIERhbmdhYXJkIEJyb3VlciA8aGF3a0BrZXJuZWwu
b3JnPgorTToJSm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWlsLmNvbT4KK0w6CW5l
dGRldkB2Z2VyLmtlcm5lbC5vcmcKK0w6CWJwZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRl
ZAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvKi8qLyovKi8qeGRwKgorRjoJZHJpdmVycy9uZXQv
ZXRoZXJuZXQvKi8qLyp4ZHAqCitGOglpbmNsdWRlL25ldC94ZHAuaAorRjoJaW5jbHVkZS9uZXQv
eGRwX3ByaXYuaAorRjoJaW5jbHVkZS90cmFjZS9ldmVudHMveGRwLmgKK0Y6CWtlcm5lbC9icGYv
Y3B1bWFwLmMKK0Y6CWtlcm5lbC9icGYvZGV2bWFwLmMKK0Y6CW5ldC9jb3JlL3hkcC5jCitGOglz
YW1wbGVzL2JwZi94ZHAqCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvKi8qeGRwKgor
RjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmLyp4ZHAqCitLOgkoPzpcYnxfKXhkcCg/Olxi
fF8pCisKK1hEUCBTT0NLRVRTIChBRl9YRFApCitNOglCasO2cm4gVMO2cGVsIDxiam9ybkBrZXJu
ZWwub3JnPgorTToJTWFnbnVzIEthcmxzc29uIDxtYWdudXMua2FybHNzb25AaW50ZWwuY29tPgor
TToJTWFjaWVqIEZpamFsa293c2tpIDxtYWNpZWouZmlqYWxrb3dza2lAaW50ZWwuY29tPgorUjoJ
Sm9uYXRoYW4gTGVtb24gPGpvbmF0aGFuLmxlbW9uQGdtYWlsLmNvbT4KK0w6CW5ldGRldkB2Z2Vy
Lmtlcm5lbC5vcmcKK0w6CWJwZkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vbmV0d29ya2luZy9hZl94ZHAucnN0CitGOglpbmNsdWRlL25ldC9uZXRucy94
ZHAuaAorRjoJaW5jbHVkZS9uZXQveGRwX3NvY2sqCitGOglpbmNsdWRlL25ldC94c2tfYnVmZl9w
b29sLmgKK0Y6CWluY2x1ZGUvdWFwaS9saW51eC9pZl94ZHAuaAorRjoJaW5jbHVkZS91YXBpL2xp
bnV4L3hkcF9kaWFnLmgKK0Y6CW5ldC94ZHAvCitGOgl0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9i
cGYvKnhzayoKKworWEVOIEJMT0NLIFNVQlNZU1RFTQorTToJUm9nZXIgUGF1IE1vbm7DqSA8cm9n
ZXIucGF1QGNpdHJpeC5jb20+CitMOgl4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgKG1v
ZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL2Js
b2NrL3hlbioKK0Y6CWRyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2svKgorCitYRU4gSFlQRVJWSVNP
UiBBUk0KK006CVN0ZWZhbm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KK0w6
CXhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2Ny
aWJlcnMpCitTOglNYWludGFpbmVkCitGOglhcmNoL2FybS9pbmNsdWRlL2FzbS94ZW4vCitGOglh
cmNoL2FybS94ZW4vCisKK1hFTiBIWVBFUlZJU09SIEFSTTY0CitNOglTdGVmYW5vIFN0YWJlbGxp
bmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CitMOgl4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj
dC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQorUzoJTWFpbnRhaW5lZAorRjoJ
YXJjaC9hcm02NC9pbmNsdWRlL2FzbS94ZW4vCitGOglhcmNoL2FybTY0L3hlbi8KKworWEVOIEhZ
UEVSVklTT1IgSU5URVJGQUNFCitNOglKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CitN
OglTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CitSOglPbGVrc2Fu
ZHIgVHlzaGNoZW5rbyA8b2xla3NhbmRyX3R5c2hjaGVua29AZXBhbS5jb20+CitMOgl4ZW4tZGV2
ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmliZXJzKQor
UzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r
ZXJuZWwvZ2l0L3hlbi90aXAuZ2l0CitGOglEb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMt
aHlwZXJ2aXNvci14ZW4KK0Y6CURvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtaHlwZXJ2
aXNvci14ZW4KK0Y6CWRyaXZlcnMvKi94ZW4tKmZyb250LmMKK0Y6CWRyaXZlcnMveGVuLworRjoJ
aW5jbHVkZS91YXBpL3hlbi8KK0Y6CWluY2x1ZGUveGVuLworRjoJa2VybmVsL2NvbmZpZ3MveGVu
LmNvbmZpZworCitYRU4gSFlQRVJWSVNPUiBYODYKK006CUp1ZXJnZW4gR3Jvc3MgPGpncm9zc0Bz
dXNlLmNvbT4KK1I6CUJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+
CitMOgl4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1
YnNjcmliZXJzKQorUzoJU3VwcG9ydGVkCitGOglhcmNoL3g4Ni9jb25maWdzL3hlbi5jb25maWcK
K0Y6CWFyY2gveDg2L2luY2x1ZGUvYXNtL3B2Y2xvY2stYWJpLmgKK0Y6CWFyY2gveDg2L2luY2x1
ZGUvYXNtL3hlbi8KK0Y6CWFyY2gveDg2L3BsYXRmb3JtL3B2aC8KK0Y6CWFyY2gveDg2L3hlbi8K
KworWEVOIE5FVFdPUksgQkFDS0VORCBEUklWRVIKK006CVdlaSBMaXUgPHdlaS5saXVAa2VybmVs
Lm9yZz4KK006CVBhdWwgRHVycmFudCA8cGF1bEB4ZW4ub3JnPgorTDoJeGVuLWRldmVsQGxpc3Rz
LnhlbnByb2plY3Qub3JnIChtb2RlcmF0ZWQgZm9yIG5vbi1zdWJzY3JpYmVycykKK0w6CW5ldGRl
dkB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9uZXQveGVuLW5ldGJh
Y2svKgorCitYRU4gUENJIFNVQlNZU1RFTQorTToJSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2Uu
Y29tPgorTDoJeGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnIChtb2RlcmF0ZWQgZm9yIG5v
bi1zdWJzY3JpYmVycykKK1M6CVN1cHBvcnRlZAorRjoJYXJjaC94ODYvcGNpLyp4ZW4qCitGOglk
cml2ZXJzL3BjaS8qeGVuKgorCitYRU4gUFZTQ1NJIERSSVZFUlMKK006CUp1ZXJnZW4gR3Jvc3Mg
PGpncm9zc0BzdXNlLmNvbT4KK0w6CXhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZyAobW9k
ZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOglsaW51eC1zY3NpQHZnZXIua2VybmVsLm9y
ZworUzoJU3VwcG9ydGVkCitGOglkcml2ZXJzL3Njc2kveGVuLXNjc2lmcm9udC5jCitGOglkcml2
ZXJzL3hlbi94ZW4tc2NzaWJhY2suYworRjoJaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2lvL3ZzY3Np
aWYuaAorCitYRU4gUFZVU0IgRFJJVkVSCitNOglKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5j
b20+CitMOgl4ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9u
LXN1YnNjcmliZXJzKQorTDoJbGludXgtdXNiQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVk
CitGOglkcml2ZXJzL3VzYi9ob3N0L3hlbioKK0Y6CWluY2x1ZGUveGVuL2ludGVyZmFjZS9pby91
c2JpZi5oCisKK1hFTiBTT1VORCBGUk9OVEVORCBEUklWRVIKK006CU9sZWtzYW5kciBBbmRydXNo
Y2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KK0w6CXhlbi1kZXZlbEBs
aXN0cy54ZW5wcm9qZWN0Lm9yZyAobW9kZXJhdGVkIGZvciBub24tc3Vic2NyaWJlcnMpCitMOgls
aW51eC1zb3VuZEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJc291bmQveGVuLyoK
KworWEVOIFNXSU9UTEIgU1VCU1lTVEVNCitNOglKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5j
b20+CitNOglTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CitMOgl4
ZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcgKG1vZGVyYXRlZCBmb3Igbm9uLXN1YnNjcmli
ZXJzKQorTDoJaW9tbXVAbGlzdHMubGludXguZGV2CitTOglTdXBwb3J0ZWQKK0Y6CWFyY2gvKi9p
bmNsdWRlL2FzbS94ZW4vc3dpb3RsYi14ZW4uaAorRjoJZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4u
YworRjoJaW5jbHVkZS94ZW4vYXJtL3N3aW90bGIteGVuLmgKK0Y6CWluY2x1ZGUveGVuL3N3aW90
bGIteGVuLmgKKworWEZTIEZJTEVTWVNURU0KK006CUNhcmxvcyBNYWlvbGlubyA8Y2VtQGtlcm5l
bC5vcmc+CitMOglsaW51eC14ZnNAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK1c6CWh0
dHA6Ly94ZnMub3JnLworQzoJaXJjOi8vaXJjLm9mdGMubmV0L3hmcworVDoJZ2l0IGdpdDovL2dp
dC5rZXJuZWwub3JnL3B1Yi9zY20vZnMveGZzL3hmcy1saW51eC5naXQKK1A6CURvY3VtZW50YXRp
b24vZmlsZXN5c3RlbXMveGZzL3hmcy1tYWludGFpbmVyLWVudHJ5LXByb2ZpbGUucnN0CitGOglE
b2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWZzLXhmcworRjoJRG9jdW1lbnRhdGlvbi9h
ZG1pbi1ndWlkZS94ZnMucnN0CitGOglEb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy8qCitG
Oglmcy94ZnMvCitGOglpbmNsdWRlL3VhcGkvbGludXgvZHFibGtfeGZzLmgKK0Y6CWluY2x1ZGUv
dWFwaS9saW51eC9mc21hcC5oCisKK1hJTElOWCBBTVMgRFJJVkVSCitNOglBbmFuZCBBc2hvayBE
dW1icmUgPGFuYW5kLmFzaG9rLmR1bWJyZUB4aWxpbnguY29tPgorTDoJbGludXgtaWlvQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL2lpby9hZGMveGxueCx6eW5xbXAtYW1zLnlhbWwKK0Y6CWRyaXZlcnMvaWlvL2FkYy94
aWxpbngtYW1zLmMKKworWElMSU5YIEFYSSBFVEhFUk5FVCBEUklWRVIKK006CVJhZGhleSBTaHlh
bSBQYW5kZXkgPHJhZGhleS5zaHlhbS5wYW5kZXlAYW1kLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQveGxueCxheGktZXRoZXJuZXQu
eWFtbAorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0KgorCitY
SUxJTlggQ0FOIERSSVZFUgorTToJQXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIHJhbyA8YXBwYW5h
LmR1cmdhLnJhb0B4aWxpbnguY29tPgorTDoJbGludXgtY2FuQHZnZXIua2VybmVsLm9yZworUzoJ
TWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4v
eGlsaW54LGNhbi55YW1sCitGOglkcml2ZXJzL25ldC9jYW4veGlsaW54X2Nhbi5jCisKK1hJTElO
WCBFVkVOVCBNQU5BR0VNRU5UIERSSVZFUgorTToJTWljaGFsIFNpbWVrIDxtaWNoYWwuc2ltZWtA
YW1kLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvc29jL3hpbGlueC94bG54X2V2ZW50
X21hbmFnZXIuYworRjoJaW5jbHVkZS9saW51eC9maXJtd2FyZS94bG54LWV2ZW50LW1hbmFnZXIu
aAorCitYSUxJTlggR1BJTyBEUklWRVIKK006CVNodWJocmFqeW90aSBEYXR0YSA8c2h1YmhyYWp5
b3RpLmRhdHRhQGFtZC5jb20+CitSOglTcmluaXZhcyBOZWVsaSA8c3Jpbml2YXMubmVlbGlAYW1k
LmNvbT4KK1I6CU1pY2hhbCBTaW1layA8bWljaGFsLnNpbWVrQGFtZC5jb20+CitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZ3Bpby9ncGlvLXp5bnEu
eWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8veGxueCxncGlv
LXhpbGlueC55YW1sCitGOglkcml2ZXJzL2dwaW8vZ3Bpby14aWxpbnguYworRjoJZHJpdmVycy9n
cGlvL2dwaW8tenlucS5jCisKK1hJTElOWCBMTCBURU1BQyBFVEhFUk5FVCBEUklWRVIKK0w6CW5l
dGRldkB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQv
eGlsaW54L2xsX3RlbWFjKgorCitYSUxJTlggUFdNIERSSVZFUgorTToJU2VhbiBBbmRlcnNvbiA8
c2Vhbi5hbmRlcnNvbkBzZWNvLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvcHdtL3B3
bS14aWxpbnguYworRjoJaW5jbHVkZS9jbG9ja3NvdXJjZS90aW1lci14aWxpbnguaAorCitYSUxJ
TlggU09VTkQgRFJJVkVSUworTToJVmluY2Vuem8gRnJhc2Npbm8gPHZpbmNlbnpvLmZyYXNjaW5v
QGFybS5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmlu
ZGluZ3Mvc291bmQveGxueCxpMnMueWFtbAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2Jp
bmRpbmdzL3NvdW5kL3hsbngsYXVkaW8tZm9ybWF0dGVyLnlhbWwKK0Y6CURvY3VtZW50YXRpb24v
ZGV2aWNldHJlZS9iaW5kaW5ncy9zb3VuZC94bG54LHNwZGlmLnlhbWwKK0Y6CXNvdW5kL3NvYy94
aWxpbngvKgorCitYSUxJTlggU0QtRkVDIElQIENPUkVTCitNOglEZXJlayBLaWVybmFuIDxkZXJl
ay5raWVybmFuQGFtZC5jb20+CitNOglEcmFnYW4gQ3ZldGljIDxkcmFnYW4uY3ZldGljQGFtZC5j
b20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mv
bWlzYy94bG54LHNkLWZlYy55YW1sCitGOglEb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy94aWxp
bnhfc2RmZWMucnN0CitGOglkcml2ZXJzL21pc2MvS2NvbmZpZworRjoJZHJpdmVycy9taXNjL01h
a2VmaWxlCitGOglkcml2ZXJzL21pc2MveGlsaW54X3NkZmVjLmMKK0Y6CWluY2x1ZGUvdWFwaS9t
aXNjL3hpbGlueF9zZGZlYy5oCisKK1hJTElOWCBVQVJUTElURSBTRVJJQUwgRFJJVkVSCitNOglQ
ZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgorTDoJbGludXgtc2VyaWFsQHZnZXIu
a2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJZHJpdmVycy90dHkvc2VyaWFsL3VhcnRsaXRl
LmMKKworWElMSU5YIFZJREVPIElQIENPUkVTCitNOglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50
LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+CitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5v
cmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGdpdDovL2xpbnV4dHYub3JnL21lZGlhLmdpdAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lZGlhL3hpbGlueC8KK0Y6CWRyaXZl
cnMvbWVkaWEvcGxhdGZvcm0veGlsaW54LworRjoJaW5jbHVkZS91YXBpL2xpbnV4L3hpbGlueC12
NGwyLWNvbnRyb2xzLmgKKworWElMSU5YIFZFUlNBTCBFREFDIERSSVZFUgorTToJU2h1YmhyYWp5
b3RpIERhdHRhIDxzaHViaHJhanlvdGkuZGF0dGFAYW1kLmNvbT4KK006CVNhaSBLcmlzaG5hIFBv
dHRodXJpIDxzYWkua3Jpc2huYS5wb3R0aHVyaUBhbWQuY29tPgorUzoJTWFpbnRhaW5lZAorRjoJ
RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21lbW9yeS1jb250cm9sbGVycy94bG54
LHZlcnNhbC1kZHJtYy1lZGFjLnlhbWwKK0Y6CWRyaXZlcnMvZWRhYy92ZXJzYWxfZWRhYy5jCisK
K1hJTElOWCBXQVRDSERPRyBEUklWRVIKK006CVNyaW5pdmFzIE5lZWxpIDxzcmluaXZhcy5uZWVs
aUBhbWQuY29tPgorUjoJU2h1YmhyYWp5b3RpIERhdHRhIDxzaHViaHJhanlvdGkuZGF0dGFAYW1k
LmNvbT4KK1I6CU1pY2hhbCBTaW1layA8bWljaGFsLnNpbWVrQGFtZC5jb20+CitTOglNYWludGFp
bmVkCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0Y2hkb2cveGxueCx2
ZXJzYWwtd3dkdC55YW1sCitGOglEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3Mvd2F0
Y2hkb2cveGxueCx4cHMtdGltZWJhc2Utd2R0LnlhbWwKK0Y6CWRyaXZlcnMvd2F0Y2hkb2cvb2Zf
eGlsaW54X3dkdC5jCitGOglkcml2ZXJzL3dhdGNoZG9nL3hpbGlueF93d2R0LmMKKworWElMSU5Y
IFhETUEgRFJJVkVSCitNOglMaXpoaSBIb3UgPGxpemhpLmhvdUBhbWQuY29tPgorTToJQnJpYW4g
WHUgPGJyaWFuLnh1QGFtZC5jb20+CitNOglSYWogS3VtYXIgUmFtcGVsbGkgPHJhai5rdW1hci5y
YW1wZWxsaUBhbWQuY29tPgorTDoJZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9y
dGVkCitGOglkcml2ZXJzL2RtYS94aWxpbngveGRtYS1yZWdzLmgKK0Y6CWRyaXZlcnMvZG1hL3hp
bGlueC94ZG1hLmMKK0Y6CWluY2x1ZGUvbGludXgvZG1hL2FtZF94ZG1hLmgKK0Y6CWluY2x1ZGUv
bGludXgvcGxhdGZvcm1fZGF0YS9hbWRfeGRtYS5oCisKK1hJTElOWCBaWU5RTVAgRFBETUEgRFJJ
VkVSCitNOglMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5j
b20+CitMOglkbWFlbmdpbmVAdmdlci5rZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CURvY3Vt
ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L3hsbngsenlucW1wLWRwZG1h
LnlhbWwKK0Y6CWRyaXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZHBkbWEuYworRjoJaW5jbHVkZS9k
dC1iaW5kaW5ncy9kbWEveGxueC16eW5xbXAtZHBkbWEuaAorCitYSUxJTlggWllOUU1QIE9DTSBF
REFDIERSSVZFUgorTToJU2h1YmhyYWp5b3RpIERhdHRhIDxzaHViaHJhanlvdGkuZGF0dGFAYW1k
LmNvbT4KK006CVNhaSBLcmlzaG5hIFBvdHRodXJpIDxzYWkua3Jpc2huYS5wb3R0aHVyaUBhbWQu
Y29tPgorUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz
L21lbW9yeS1jb250cm9sbGVycy94bG54LHp5bnFtcC1vY21jLTEuMC55YW1sCitGOglkcml2ZXJz
L2VkYWMvenlucW1wX2VkYWMuYworCitYSUxJTlggWllOUU1QIFBTR1RSIFBIWSBEUklWRVIKK006
CUxhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KK0w6
CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorVDoJZ2l0IGh0dHBz
Oi8vZ2l0aHViLmNvbS9YaWxpbngvbGludXgteGxueC5naXQKK0Y6CURvY3VtZW50YXRpb24vZGV2
aWNldHJlZS9iaW5kaW5ncy9waHkveGxueCx6eW5xbXAtcHNndHIueWFtbAorRjoJZHJpdmVycy9w
aHkveGlsaW54L3BoeS16eW5xbXAuYworCitYSUxJTlggWllOUU1QIFNIQTMgRFJJVkVSCitNOglI
YXJzaGEgPGhhcnNoYS5oYXJzaGFAYW1kLmNvbT4KK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMv
Y3J5cHRvL3hpbGlueC96eW5xbXAtc2hhLmMKKworWElMSU5YIFpZTlFNUCBOVk1FTSBEUklWRVIK
K006CVByYXZlZW4gVGVqYSBLdW5kYW5hbGEgPHByYXZlZW4udGVqYS5rdW5kYW5hbGFAYW1kLmNv
bT4KK006CUthbHlhbmkgQWt1bGEgPGthbHlhbmkuYWt1bGFAYW1kLmNvbT4KK1I6CU1pY2hhbCBT
aW1layA8bWljaGFsLnNpbWVrQGFtZC5jb20+CitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0
aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbnZtZW0veGxueCx6eW5xbXAtbnZtZW0ueWFtbAorRjoJ
ZHJpdmVycy9udm1lbS96eW5xbXBfbnZtZW0uYworCitYSUxMWUJVUyBEUklWRVIKK006CUVsaSBC
aWxsYXVlciA8ZWxpLmJpbGxhdWVyQGdtYWlsLmNvbT4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtl
cm5lbC5vcmcKK1M6CVN1cHBvcnRlZAorRjoJZHJpdmVycy9jaGFyL3hpbGx5YnVzLworCitYTFA5
WFggSTJDIERSSVZFUgorTToJR2VvcmdlIENoZXJpYW4gPGdjaGVyaWFuQG1hcnZlbGwuY29tPgor
TDoJbGludXgtaTJjQHZnZXIua2VybmVsLm9yZworUzoJU3VwcG9ydGVkCitXOglodHRwOi8vd3d3
Lm1hcnZlbGwuY29tCitGOglkcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhscDl4eC5jCisKK1hSQTE0
MDMgR1BJTyBFWFBBTkRFUgorTToJTmFuZG9yIEhhbiA8bmFuZG9yLmhhbkBnZS5jb20+CitMOgls
aW51eC1ncGlvQHZnZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorRjoJRG9jdW1lbnRhdGlv
bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2dwaW8vZ3Bpby14cmExNDAzLnR4dAorRjoJZHJpdmVycy9n
cGlvL2dwaW8teHJhMTQwMy5jCisKK1hURU5TQSBYVEZQR0EgUExBVEZPUk0gU1VQUE9SVAorTToJ
TWF4IEZpbGlwcG92IDxqY212YmtiY0BnbWFpbC5jb20+CitTOglNYWludGFpbmVkCitGOglkcml2
ZXJzL3NwaS9zcGkteHRlbnNhLXh0ZnBnYS5jCitGOglzb3VuZC9zb2MveHRlbnNhL3h0ZnBnYS1p
MnMuYworCitYWiBFTUJFRERFRAorTToJTGFzc2UgQ29sbGluIDxsYXNzZS5jb2xsaW5AdHVrYWFu
aS5vcmc+CitTOglNYWludGFpbmVkCitXOglodHRwczovL3R1a2Fhbmkub3JnL3h6L2VtYmVkZGVk
Lmh0bWwKK0I6CWh0dHBzOi8vZ2l0aHViLmNvbS90dWthYW5pLXByb2plY3QveHotZW1iZWRkZWQv
aXNzdWVzCitDOglpcmM6Ly9pcmMubGliZXJhLmNoYXQvdHVrYWFuaQorRjoJRG9jdW1lbnRhdGlv
bi9zdGFnaW5nL3h6LnJzdAorRjoJaW5jbHVkZS9saW51eC9kZWNvbXByZXNzL3VueHouaAorRjoJ
aW5jbHVkZS9saW51eC94ei5oCitGOglsaWIvZGVjb21wcmVzc191bnh6LmMKK0Y6CWxpYi94ei8K
K0Y6CXNjcmlwdHMveHpfd3JhcC5zaAorCitZQU0gRFJJVkVSIEZPUiBBWC4yNQorTToJSmVhbi1Q
YXVsIFJvdWJlbGF0IDxqcHJAZjZmYmIub3JnPgorTDoJbGludXgtaGFtc0B2Z2VyLmtlcm5lbC5v
cmcKK1M6CU1haW50YWluZWQKK0Y6CWRyaXZlcnMvbmV0L2hhbXJhZGlvL3lhbSoKK0Y6CWluY2x1
ZGUvbGludXgveWFtLmgKKworWUFNQSBTRUNVUklUWSBNT0RVTEUKK006CUtlZXMgQ29vayA8a2Vl
c0BrZXJuZWwub3JnPgorUzoJU3VwcG9ydGVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcv
cHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tlZXMvbGludXguZ2l0IGZvci1uZXh0L2hhcmRlbmlu
ZworRjoJRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9MU00vWWFtYS5yc3QKK0Y6CXNlY3VyaXR5
L3lhbWEvCisKK1lBTUwgTkVUTElOSyAoWU5MKQorTToJRG9uYWxkIEh1bnRlciA8ZG9uYWxkLmh1
bnRlckBnbWFpbC5jb20+CitNOglKYWt1YiBLaWNpbnNraSA8a3ViYUBrZXJuZWwub3JnPgorRjoJ
RG9jdW1lbnRhdGlvbi9uZXRsaW5rLworRjoJRG9jdW1lbnRhdGlvbi91c2Vyc3BhY2UtYXBpL25l
dGxpbmsvaW50cm8tc3BlY3MucnN0CitGOglEb2N1bWVudGF0aW9uL3VzZXJzcGFjZS1hcGkvbmV0
bGluay9zcGVjcy5yc3QKK0Y6CXRvb2xzL25ldC95bmwvCisKK1lFQUxJTksgUEhPTkUgRFJJVkVS
CitNOglIZW5rIFZlcmdvbmV0IDxIZW5rLlZlcmdvbmV0QGdtYWlsLmNvbT4KK1M6CU1haW50YWlu
ZWQKK0Y6CURvY3VtZW50YXRpb24vaW5wdXQvZGV2aWNlcy95ZWFsaW5rLnJzdAorRjoJZHJpdmVy
cy9pbnB1dC9taXNjL3llYWxpbmsuKgorCitaODUzMCBEUklWRVIgRk9SIEFYLjI1CitNOglKb2Vy
ZyBSZXV0ZXIgPGpyZXV0ZXJAeWFpbmEuZGU+CitMOglsaW51eC1oYW1zQHZnZXIua2VybmVsLm9y
ZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL3lhaW5hLmRlL2pyZXV0ZXIvCitXOglodHRwOi8v
d3d3LnFzbC5uZXQvZGwxYmtlLworRjoJRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9k
cml2ZXJzL2hhbXJhZGlvL3o4NTMwZHJ2LnJzdAorRjoJZHJpdmVycy9uZXQvaGFtcmFkaW8vKnNj
Yy5jCitGOglkcml2ZXJzL25ldC9oYW1yYWRpby96ODUzMC5oCisKK1pEMTIxMVJXIFdJUkVMRVNT
IERSSVZFUgorTDoJbGludXgtd2lyZWxlc3NAdmdlci5rZXJuZWwub3JnCitTOglPcnBoYW4KK0Y6
CWRyaXZlcnMvbmV0L3dpcmVsZXNzL3p5ZGFzLworCitaRDEzMDEgTUVESUEgRFJJVkVSCitMOgls
aW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2
Lm9yZy8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmxpbnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVk
aWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvdXNiL2R2Yi11c2ItdjIvemQxMzAxKgorCitaRDEz
MDFfREVNT0QgTUVESUEgRFJJVkVSCitMOglsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKK1M6
CU9ycGhhbgorVzoJaHR0cHM6Ly9saW51eHR2Lm9yZy8KK1E6CWh0dHBzOi8vcGF0Y2h3b3JrLmxp
bnV4dHYub3JnL3Byb2plY3QvbGludXgtbWVkaWEvbGlzdC8KK0Y6CWRyaXZlcnMvbWVkaWEvZHZi
LWZyb250ZW5kcy96ZDEzMDFfZGVtb2QqCisKK1pIQU9YSU4gUFJPQ0VTU09SIFNVUFBPUlQKK006
CVRvbnkgVyBXYW5nLW9jIDxUb255V1dhbmctb2NAemhhb3hpbi5jb20+CitMOglsaW51eC1rZXJu
ZWxAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglhcmNoL3g4Ni9rZXJuZWwvY3B1
L3poYW94aW4uYworCitaT05FRCBMT09QIERFVklDRQorTToJRGFtaWVuIExlIE1vYWwgPGRsZW1v
YWxAa2VybmVsLm9yZz4KK1I6CUNocmlzdG9waCBIZWxsd2lnIDxoY2hAbHN0LmRlPgorTDoJbGlu
dXgtYmxvY2tAdmdlci5rZXJuZWwub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9u
L2FkbWluLWd1aWRlL2Jsb2NrZGV2L3pvbmVkX2xvb3AucnN0CitGOglkcml2ZXJzL2Jsb2NrL3ps
b29wLmMKKworWk9ORUZTIEZJTEVTWVNURU0KK006CURhbWllbiBMZSBNb2FsIDxkbGVtb2FsQGtl
cm5lbC5vcmc+CitNOglOYW9oaXJvIEFvdGEgPG5hb2hpcm8uYW90YUB3ZGMuY29tPgorUjoJSm9o
YW5uZXMgVGh1bXNoaXJuIDxqdGhAa2VybmVsLm9yZz4KK0w6CWxpbnV4LWZzZGV2ZWxAdmdlci5r
ZXJuZWwub3JnCitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHVi
L3NjbS9saW51eC9rZXJuZWwvZ2l0L2RsZW1vYWwvem9uZWZzLmdpdAorRjoJRG9jdW1lbnRhdGlv
bi9maWxlc3lzdGVtcy96b25lZnMucnN0CitGOglmcy96b25lZnMvCisKK1pSMzYwNjcgVklERU8g
Rk9SIExJTlVYIERSSVZFUgorTToJQ29yZW50aW4gTGFiYmUgPGNsYWJiZUBiYXlsaWJyZS5jb20+
CitMOgltanBlZy11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKK0w6CWxpbnV4LW1lZGlhQHZn
ZXIua2VybmVsLm9yZworUzoJTWFpbnRhaW5lZAorVzoJaHR0cDovL21qcGVnLnNvdXJjZWZvcmdl
Lm5ldC9kcml2ZXItem9yYW4vCitROglodHRwczovL3BhdGNod29yay5saW51eHR2Lm9yZy9wcm9q
ZWN0L2xpbnV4LW1lZGlhL2xpc3QvCitGOglEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvbWVkaWEv
ZHJpdmVycy96b3Jhbi5yc3QKK0Y6CWRyaXZlcnMvbWVkaWEvcGNpL3pvcmFuLworCitaUkFNIENP
TVBSRVNTRUQgUkFNIEJMT0NLIERFVklDRSBEUlZJRVIKK006CU1pbmNoYW4gS2ltIDxtaW5jaGFu
QGtlcm5lbC5vcmc+CitNOglTZXJnZXkgU2Vub3poYXRza3kgPHNlbm96aGF0c2t5QGNocm9taXVt
Lm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6CU1haW50YWluZWQKK0Y6
CURvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvYmxvY2tkZXYvenJhbS5yc3QKK0Y6CWRyaXZlcnMv
YmxvY2svenJhbS8KKworWlMgREVDU1RBVElPTiBaODVDMzAgU0VSSUFMIERSSVZFUgorTToJIk1h
Y2llaiBXLiBSb3p5Y2tpIiA8bWFjcm9Ab3JjYW0ubWUudWs+CitTOglNYWludGFpbmVkCitGOglk
cml2ZXJzL3R0eS9zZXJpYWwvenMuKgorCitaU01BTExPQyBDT01QUkVTU0VEIFNMQUIgTUVNT1JZ
IEFMTE9DQVRPUgorTToJTWluY2hhbiBLaW0gPG1pbmNoYW5Aa2VybmVsLm9yZz4KK006CVNlcmdl
eSBTZW5vemhhdHNreSA8c2Vub3poYXRza3lAY2hyb21pdW0ub3JnPgorTDoJbGludXgtbW1Aa3Zh
Y2sub3JnCitTOglNYWludGFpbmVkCitGOglEb2N1bWVudGF0aW9uL21tL3pzbWFsbG9jLnJzdAor
RjoJaW5jbHVkZS9saW51eC96c21hbGxvYy5oCitGOgltbS96c21hbGxvYy5jCisKK1pTVEQKK006
CU5pY2sgVGVycmVsbCA8dGVycmVsbG5AZmIuY29tPgorTToJRGF2aWQgU3RlcmJhIDxkc3RlcmJh
QHN1c2UuY29tPgorUzoJTWFpbnRhaW5lZAorQjoJaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3pzdGQvaXNzdWVzCitUOglnaXQgaHR0cHM6Ly9naXRodWIuY29tL3RlcnJlbGxuL2xpbnV4Lmdp
dAorRjoJY3J5cHRvL3pzdGQuYworRjoJaW5jbHVkZS9saW51eC96c3RkKgorRjoJbGliL2RlY29t
cHJlc3NfdW56c3RkLmMKK0Y6CWxpYi96c3RkLworTjoJenN0ZAorSzoJenN0ZAorCitaU1dBUCBD
T01QUkVTU0VEIFNXQVAgQ0FDSElORworTToJSm9oYW5uZXMgV2VpbmVyIDxoYW5uZXNAY21weGNo
Zy5vcmc+CitNOglZb3NyeSBBaG1lZCA8eW9zcnkuYWhtZWRAbGludXguZGV2PgorTToJTmhhdCBQ
aGFtIDxucGhhbWNzQGdtYWlsLmNvbT4KK1I6CUNoZW5nbWluZyBaaG91IDxjaGVuZ21pbmcuemhv
dUBsaW51eC5kZXY+CitMOglsaW51eC1tbUBrdmFjay5vcmcKK1M6CU1haW50YWluZWQKK0Y6CURv
Y3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0venN3YXAucnN0CitGOglpbmNsdWRlL2xpbnV4L3pw
b29sLmgKK0Y6CWluY2x1ZGUvbGludXgvenN3YXAuaAorRjoJbW0venBvb2wuYworRjoJbW0venN3
YXAuYworRjoJdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2dyb3VwL3Rlc3RfenN3YXAuYworCitT
RU5BUllURUNIIEFVRElPIENPREVDIERSSVZFUgorTToJYm8gbGl1IDxiby5saXVAc2VuYXJ5dGVj
aC5jb20+CitTOglNYWludGFpbmVkCitUOglnaXQgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj
bS9saW51eC9rZXJuZWwvZ2l0L3Rpd2FpL3NvdW5kLmdpdAorRjoJc291bmQvcGNpL2hkYS9wYXRj
aF9zZW5hcnl0ZWNoLmMKKworVEhFIFJFU1QKK006CUxpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0Bs
aW51eC1mb3VuZGF0aW9uLm9yZz4KK0w6CWxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcKK1M6
CUJ1cmllZCBhbGl2ZSBpbiByZXBvcnRlcnMKK1Q6CWdpdCBnaXQ6Ly9naXQua2VybmVsLm9yZy9w
dWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0CitGOgkqCitGOgkqLwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0gCjIuNDkuMAoK

--_006_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_
Content-Type: application/octet-stream;
name="0002-Documentation-for-Lilium.patch"
Content-Description: 0002-Documentation-for-Lilium.patch
Content-Disposition: attachment;
filename="0002-Documentation-for-Lilium.patch"; size=754;
creation-date="Sat, 31 May 2025 17:27:43 GMT";
modification-date="Sat, 31 May 2025 17:28:27 GMT"
Content-Transfer-Encoding: base64

RnJvbSBhYTBjZTcyMmFkNWUxNzIwZjUwZmYwYTY0MTBlMGNhMThjYWI5YTk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CkRh
dGU6IFNhdCwgMzEgTWF5IDIwMjUgMTE6MjQ6NDEgKzAwMDAKU3ViamVjdDogW1BBVENIIDEvMl0g
RG9jdW1lbnRhdGlvbiBmb3IgTGlsaXVtCgotLS0KIERvY3VtZW50YXRpb24vc2VjdXJpdHkvbGls
aXVtLnJzdCB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv
bigtKQoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvbGlsaXVtLnJzdCBiL0Rv
Y3VtZW50YXRpb24vc2VjdXJpdHkvbGlsaXVtLnJzdAppbmRleCA2ZDk0YTkxLi5lMTgzMWQzIDEw
MDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NlY3VyaXR5L2xpbGl1bS5yc3QKKysrIGIvRG9jdW1l
bnRhdGlvbi9zZWN1cml0eS9saWxpdW0ucnN0CkBAIC0zOTgsNCArMzk4LDQgQEAgUmVmZXJlbmNl
cwogICAgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUv
bmFtZXNwYWNlcy9pbmRleC5odG1sCiAKIDQuIExpbnV4IEtlcm5lbCBEb2N1bWVudGF0aW9uOgot
ICAgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorICAgaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qv
Ci0tIAoyLjQ5LjAKCg==

--_006_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_
Content-Type: application/octet-stream; name="0001-Create-Lilium-Patch.patch"
Content-Description: 0001-Create-Lilium-Patch.patch
Content-Disposition: attachment; filename="0001-Create-Lilium-Patch.patch";
size=1990; creation-date="Sat, 31 May 2025 17:27:44 GMT";
modification-date="Sat, 31 May 2025 17:28:27 GMT"
Content-Transfer-Encoding: base64

RnJvbSA3ZmQ1NTlmMDVlNTIzY2RmYmI5ZWUxNzdhMTRiNDI3ZjhmMDc5MGU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CkRh
dGU6IFNhdCwgMzEgTWF5IDIwMjUgMTE6MTc6MTAgKzAwMDAKU3ViamVjdDogW1BBVENIXSBDcmVh
dGUgTGlsaXVtIFBhdGNoCgotLS0KIHNlY3VyaXR5L2xpbGl1bS9LY29uZmlnICAgICAgICAgfCAy
ICstCiBzZWN1cml0eS9saWxpdW0vbGlsaXVtX2NvbmZpZy5oIHwgMiArLQogc2VjdXJpdHkvbGls
aXVtL2xpbGl1bV9sc20uYyAgICB8IDIgKy0KIHNlY3VyaXR5L2xpbGl1bS9saWxpdW1fcnVzdC5y
cyAgfCAyICstCiA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9zZWN1cml0eS9saWxpdW0vS2NvbmZpZyBiL3NlY3VyaXR5L2xpbGl1
bS9LY29uZmlnCmluZGV4IDdmYTJmMjEuLjRlNjllMTIgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2xp
bGl1bS9LY29uZmlnCisrKyBiL3NlY3VyaXR5L2xpbGl1bS9LY29uZmlnCkBAIC03OCw0ICs3OCw0
IEBAIGNvbmZpZyBTRUNVUklUWV9MSUxJVU1fSU9DVEwKIAloZWxwCiAJICBUaGlzIGVuYWJsZXMg
aW9jdGwgcmVzdHJpY3Rpb25zIGluIExpbGl1bS4KIAkgIAotCSAgSWYgeW91IGFyZSB1bnN1cmUg
aG93IHRvIGFuc3dlciB0aGlzIHF1ZXN0aW9uLCBhbnN3ZXIgTi4KKwkgIElmIHlvdSBhcmUgdW5z
dXJlIGhvdyB0byBhbnN3ZXIgdGhpcyBxdWVzdGlvbiwgYW5zd2VyIE4uClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9jb25maWcu
aCBiL3NlY3VyaXR5L2xpbGl1bS9saWxpdW1fY29uZmlnLmgKaW5kZXggZGIzMWJiMy4uOGJlZjZh
YiAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9jb25maWcuaAorKysgYi9zZWN1
cml0eS9saWxpdW0vbGlsaXVtX2NvbmZpZy5oCkBAIC0yMCw0ICsyMCw0IEBACiAjZGVmaW5lIExJ
TElVTV9ERUZBVUxUX09QRU4gICAgIExJTElVTV9GRUFUVVJFX0RJU0FCTEVECiAjZGVmaW5lIExJ
TElVTV9ERUZBVUxUX0lPQ1RMICAgIExJTElVTV9GRUFUVVJFX0RJU0FCTEVECiAKLSNlbmRpZiAv
KiBfU0VDVVJJVFlfTElMSVVNX0NPTkZJR19IICovCisjZW5kaWYgLyogX1NFQ1VSSVRZX0xJTElV
TV9DT05GSUdfSCAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Nl
Y3VyaXR5L2xpbGl1bS9saWxpdW1fbHNtLmMgYi9zZWN1cml0eS9saWxpdW0vbGlsaXVtX2xzbS5j
CmluZGV4IGExYWViZGEuLmRjZjUxYjQgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2xpbGl1bS9saWxp
dW1fbHNtLmMKKysrIGIvc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9sc20uYwpAQCAtNDY0LDQgKzQ2
NCw0IEBAIG1vZHVsZV9leGl0KGxpbGl1bV9leGl0KTsKIAogTU9EVUxFX0RFU0NSSVBUSU9OKCJM
aWxpdW0gKExpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIgTW9kdWxlKSIpOwogTU9EVUxFX0FV
VEhPUigiRW56byBGdWtlIik7Ci1NT0RVTEVfTElDRU5TRSgiR1BMIHYyIik7CitNT0RVTEVfTElD
RU5TRSgiR1BMIHYyIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
c2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9ydXN0LnJzIGIvc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9y
dXN0LnJzCmluZGV4IDlmYmU2ZmIuLmIwNTM2NjIgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2xpbGl1
bS9saWxpdW1fcnVzdC5ycworKysgYi9zZWN1cml0eS9saWxpdW0vbGlsaXVtX3J1c3QucnMKQEAg
LTc5LDQgKzc5LDQgQEAgaW1wbCBzZWN1cml0eTo6U2VjdXJpdHlIb29rcyBmb3IgTGlsaXVtT3Bz
IHsKIAogICAgICAgICBPayhzZWN1cml0eTo6U2VjdXJpdHlIb29rUmVzdWx0OjpEZWZhdWx0KQog
ICAgIH0KLX0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjQ5LjAKCg==

--_006_SCYP152MB626161A0730BFC8A7AD1CF20B060ASCYP152MB6261LAMP_--


Return-Path: <linux-kernel+bounces-669192-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5091441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:01:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 5F2E53BFA95
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:01:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id ED7C3191F6A;
Sat, 31 May 2025 18:01:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FVbaKFug"
Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 92108645;
Sat, 31 May 2025 18:01:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748714485; cv=none; b=DY/LEKEB/ELqGuIJQ9PfPeHwCtbzKippam+AMRVeox540RRexzj0sYpGzQmTfcY9YDBggAQFkn7t7fcxp3WF+J/2r92o1VHi6enQavPi2gUN+dccEkSEVD9aQ9Ih1rOrCvSA9NdsKXiJUtKtso9AAxKsu0rlqq+Y4oUTeQQ/7lU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748714485; c=relaxed/simple;
bh=IIO2ZrW4hMoB/RO3YoS7t7jsG6uwCicCIHFVETR/btE=;
h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:Content-Type:
MIME-Version; b=qClIo2OcFLiG9CcjbYd9FaDjmFZ7YJEptgqe6qQdyGFP1BqcYZ6G6lWQKHjOYhPbzPul2K083h+Y5gLKYRNThFmPm0gAttZnsFwToB2TMSMUn8lUSERhmQm4Q3RK8wmepzxahK+S0F1XXOS02IgEM3sNTVJb30DqQgPtdxVMVP4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FVbaKFug; arc=none smtp.client-ip=209.85.128.45
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-450df5d7b9fso5021495e9.1;
Sat, 31 May 2025 11:01:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748714481; x=1749319281; darn=vger.kernel.org;
h=mime-version:user-agent:content-transfer-encoding:in-reply-to:date
:cc:to:from:subject:message-id:from:to:cc:subject:date:message-id
:reply-to;
bh=y7N23WPiWeZX7wNDy0YIlIArv1JuPRPe0Q6JS06wayU=;
b=FVbaKFugZBaNwAwQQveVKCtPvIQH826ffFDv1gN1mycTn5PDz+vZ+GbVYMDVKfxCk+
nZG7zypPhwZvcM6maL9mDAOz7L2fMW3LIoTVnOv1Ew4GamLl2lKiCfaeFL9gRRslXBv6
N0ctcCC4eS6op5XpBtHwZV9MwWTGSA0oXm4m9McuqyaLZwFy8duGTrheIcaLnlydgHUH
KEJUMGMlQE6xHyyJ1YklfZ1iPpB0D9jlKrvC7hm/faDcUm3013gIgoTLKOb5zLZfu0Ap
eOwvn5IYRvlKuIMnQ5KxK3L1PXyg/pseHlufCfpDd43p1CBTLfUcplleUqXdkaQmZKAr
T9NQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748714481; x=1749319281;
h=mime-version:user-agent:content-transfer-encoding:in-reply-to:date
:cc:to:from:subject:message-id:x-gm-message-state:from:to:cc:subject
:date:message-id:reply-to;
bh=y7N23WPiWeZX7wNDy0YIlIArv1JuPRPe0Q6JS06wayU=;
b=aLKZVc0sX3cYb1IVr5eSC982pt09Ot++AUhAuf3lOMus+bbZTja+qkFGjw+nEVy9JJ
h+fQm2K4YgrQYCUpuxiM6Hvj1r+3HVCX8EXe+fSKBYg6AAIDK30nhXUKkL+YRcDwfYxL
gjmGJuIOtzFRzFsTp8IgFohZZIEFTr73aLEW0llw4B+dUIZXcBP36/Mb8ojy3Sd0967Q
tdyd+ztPD/HU4iiVbxTamJ1P6L9xPpl8ewHQ1HNrZziE91GIidYUixjGTUAFGSSEcP7N
MWxnROiIi65CA4LKJqPtRZouYzM+mIEYDeNaNqF/g2YOAtC0BPp/a12ToOe+qLwNDce8
m+Lg==
X-Forwarded-Encrypted: i=1; AJvYcCUuSh+I2Q8h8zRA3kxlLz0PJHa1PkruHQS6xZClcmelt7OX355I1lLTaZB61qpKzYSRGRtiu5o52+XKREtV@xxxxxxxxxxxxxxx, AJvYcCWBzUatT0W62l86kvnbMrFMddzYPehEu5sllsqX88hPV1jeumJ0q39JHaA/4+Ex9vNdZms=@vger.kernel.org
X-Gm-Message-State: AOJu0YyDUqy1/y9EYCGN0NPMfi4vtvpualG2unzbZOuJpBER5ArihbJR
brf2gRl0meurjQUc5gOBeaIlCkNhcLQytPLxr7t2FSFx8IoQ3e03EO4t
X-Gm-Gg: ASbGncueNeAmazSH1RK/QJDBLHroxk4Aj+Br85Ha7BvkwNVBUx8eigqdUQeR8GLhk4q
3zNJHPzRJ6ToSUA3/fz8nuPrzRHwW3EBUvwpVXvYmz8C/VFjid5uC+JzbGu/3+wVMZKt88YY+iu
ZaeLrDQjfbj04ezB4VBwFqYVk1zoIByDAaKE9e/+NfJGdZSxwHkF2o2NNRiFHEq3NUPBPJ6XZ1r
UzhDARfvC770DndH0742VpCdVfBigK3SyBt52V6bmIAVJ5Uzu+/P5fHLiWw4B+5v8Fc8/qoThD1
fU/vRyxPf7GgfGIA+/Wo/rZCczL0RS53FAU+7ZqkLF76EmYKp7BzTRC/m/aNWzwUK2R4Bby9wta
lO2xnjL92+q28oDrZbNqlM69C+P48e0O/
X-Google-Smtp-Source: AGHT+IGow34iFFc5A3PtRC3U9gzX+qOmKMUGQmeKxZjFz5/C983xaeQUZnyV5p0/lrZD5A++twH+Cg==
X-Received: by 2002:a05:600c:1c08:b0:442:f861:3536 with SMTP id 5b1f17b1804b1-450d6b59b03mr67320495e9.7.1748714480425;
Sat, 31 May 2025 11:01:20 -0700 (PDT)
Received: from ?IPv6:2001:b07:5d29:f42d:5c69:6d03:309e:bc47? ([2001:b07:5d29:f42d:5c69:6d03:309e:bc47])
by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a4f0097205sm8774995f8f.79.2025.05.31.11.01.19
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:01:20 -0700 (PDT)
Message-ID: <e5e1fb2715a98f24ba69cc4da5c30777633f6f62.camel@xxxxxxxxx>
Subject: Re: [PATCH 17/28] KVM: SVM: Manually recalc all MSR intercepts on
userspace MSR filter change
From: Francesco Lavra <francescolavra.fl@xxxxxxxxx>
To: seanjc@xxxxxxxxxx
Cc: bp@xxxxxxxxx, chao.gao@xxxxxxxxx, dapeng1.mi@xxxxxxxxxxxxxxx,
kvm@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, pbonzini@xxxxxxxxxx,
xin@xxxxxxxxx
Date: Sat, 31 May 2025 20:01:18 +0200
In-Reply-To: <20250529234013.3826933-18-seanjc@xxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
User-Agent: Evolution 3.46.4-2
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Spam-Status: No, score=-2.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS,UPPERCASE_50_75 autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 2025-05-29 at 23:40, Sean Christopherson wrote:
> @@ -81,70 +79,6 @@ static uint64_t osvw_len =3D 4, osvw_status;
> =20
> static DEFINE_PER_CPU(u64, current_tsc_ratio);
> =20
> -static const u32 direct_access_msrs[] =3D {
> - MSR_STAR,
> - MSR_IA32_SYSENTER_CS,
> - MSR_IA32_SYSENTER_EIP,
> - MSR_IA32_SYSENTER_ESP,
> -#ifdef CONFIG_X86_64
> - MSR_GS_BASE,
> - MSR_FS_BASE,
> - MSR_KERNEL_GS_BASE,
> - MSR_LSTAR,
> - MSR_CSTAR,
> - MSR_SYSCALL_MASK,
> -#endif
> - MSR_IA32_SPEC_CTRL,
> - MSR_IA32_PRED_CMD,
> - MSR_IA32_FLUSH_CMD,
> - MSR_IA32_DEBUGCTLMSR,
> - MSR_IA32_LASTBRANCHFROMIP,
> - MSR_IA32_LASTBRANCHTOIP,
> - MSR_IA32_LASTINTFROMIP,
> - MSR_IA32_LASTINTTOIP,
> - MSR_IA32_XSS,
> - MSR_EFER,
> - MSR_IA32_CR_PAT,
> - MSR_AMD64_SEV_ES_GHCB,
> - MSR_TSC_AUX,
> - X2APIC_MSR(APIC_ID),
> - X2APIC_MSR(APIC_LVR),
> - X2APIC_MSR(APIC_TASKPRI),
> - X2APIC_MSR(APIC_ARBPRI),
> - X2APIC_MSR(APIC_PROCPRI),
> - X2APIC_MSR(APIC_EOI),
> - X2APIC_MSR(APIC_RRR),
> - X2APIC_MSR(APIC_LDR),
> - X2APIC_MSR(APIC_DFR),
> - X2APIC_MSR(APIC_SPIV),
> - X2APIC_MSR(APIC_ISR),
> - X2APIC_MSR(APIC_TMR),
> - X2APIC_MSR(APIC_IRR),
> - X2APIC_MSR(APIC_ESR),
> - X2APIC_MSR(APIC_ICR),
> - X2APIC_MSR(APIC_ICR2),
> -
> - /*
> - * Note:
> - * AMD does not virtualize APIC TSC-deadline timer mode, but it
> is
> - * emulated by KVM. When setting APIC LVTT (0x832) register bit
> 18,
> - * the AVIC hardware would generate GP fault. Therefore, always
> - * intercept the MSR 0x832, and do not setup direct_access_msr.
> - */
> - X2APIC_MSR(APIC_LVTTHMR),
> - X2APIC_MSR(APIC_LVTPC),
> - X2APIC_MSR(APIC_LVT0),
> - X2APIC_MSR(APIC_LVT1),
> - X2APIC_MSR(APIC_LVTERR),
> - X2APIC_MSR(APIC_TMICT),
> - X2APIC_MSR(APIC_TMCCT),
> - X2APIC_MSR(APIC_TDCR),
> -};
> -
> -static_assert(ARRAY_SIZE(direct_access_msrs) =3D=3D
> - MAX_DIRECT_ACCESS_MSRS - 6 * !IS_ENABLED(CONFIG_X86_64));
> -#undef MAX_DIRECT_ACCESS_MSRS

The MAX_DIRECT_ACCESS_MSRS define should now be removed from
arch/x86/kvm/svm/svm.harch/x86/kvm/svm/svm.h, since it's no longer used.


Return-Path: <linux-kernel+bounces-669193-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 98E7941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:01:45 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A7BFF17F796
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:01:46 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 19AFE7DA6D;
Sat, 31 May 2025 18:01:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="NJr++5aH"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 58CE4645;
Sat, 31 May 2025 18:01:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748714490; cv=none; b=YwHaicY7brWzbOaCDHwLj78Ioeal3GZ7MDGpJOolDxKNsrfmexmDWX3HJFhwC14rkUBXNXYHCgYJBUR/VgOiTwLhfz27jS8nx7YaQn0SdhUqBm4VP+FTv57MTZZJDVo/FGn7fh3mw8QH0xfSCHHdxN6v0+SVNBEgU5O82z0TcUo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748714490; c=relaxed/simple;
bh=3f5z1sc5+Pgcw89xps+F1E5eYIZX9QvaPM8JVy0CBG0=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=QXGei8tZ0Od19twH72pYV7iDAt8nrmclB3C/GHdpoXnCs6pTStnddW1lrYMMM7E/9Ty6pWinZzPsTpdze38kaPlracvjAL9QMNqjX3LL7WRraSADcvL8hA6uydjZ2wM3ZX8/G+lvM2aKfJy761J5sCYuhDc9HNe+fXqtiCzWu9s=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=NJr++5aH; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E1760C4CEEA;
Sat, 31 May 2025 18:01:27 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748714489;
bh=3f5z1sc5+Pgcw89xps+F1E5eYIZX9QvaPM8JVy0CBG0=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=NJr++5aH7UJJjE0f90S3etJRSC5oJu8UkgXzrGT2Ri/wcXOGXBr0fMKO23d5mLk2O
MatmIbDbHcuMiyAEK/DuzTEaxNQEMIFZYysnJfwJdI/fg5S1O+A2I9J0P6yNtPy1PI
njapoMUaUV87WAHvlK1E76M/4OPYspyWv67nZENVWqLMX9/d0e82fGFl3n/Pb3Tsg3
Qtsdr//+iboafqJop1GIpzUzX3RvcJ94f6jj0wrONd3Yy8a5sewRJCkz+/6OJ/iBrm
R3bOyuFAhhV8uL7JXTYfU29Dm+SMGNKlgLOqZwI+7KlHMeLfZIv5HmUtfJrwWoyUKP
aJcOUQRslvJ2A==
Date: Sat, 31 May 2025 19:01:24 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Gyeyoung Baek <gye976@xxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH RFC 2/9] iio: consumer: Define timestamp-related
structures and constants
Message-ID: <20250531190124.30704d19@jic23-huawei>
In-Reply-To: <20250519-timestamp-v1-2-fcb4f6c2721c@xxxxxxxxx>
References: <20250519-timestamp-v1-0-fcb4f6c2721c@xxxxxxxxx>
<20250519-timestamp-v1-2-fcb4f6c2721c@xxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 19 May 2025 23:25:54 +0900
Gyeyoung Baek <gye976@xxxxxxxxx> wrote:

> Define the required constants and structures on the consumer side.
>
> The `timestamp_enabled` indicates whether a timestamp is grabbed or not.
> This is passed to `iio_triggered_buffer_setup_new()` as an argument.
>
> The `timestamp_type` indicates which handler grabs the timestamp.
> This value is set by `iio_poll_func_register()`.
>
> Signed-off-by: Gyeyoung Baek <gye976@xxxxxxxxx>
> ---
> include/linux/iio/trigger_consumer.h | 13 +++++++++++++
> 1 file changed, 13 insertions(+)
>
> diff --git a/include/linux/iio/trigger_consumer.h b/include/linux/iio/trigger_consumer.h
> index 2c05dfad88d7..5e6ff8738386 100644
> --- a/include/linux/iio/trigger_consumer.h
> +++ b/include/linux/iio/trigger_consumer.h
> @@ -13,6 +13,13 @@
> struct iio_dev;
> struct iio_trigger;
>
> +enum iio_timestamp_type {
> + IIO_TIMESTAMP_TYPE_NONE,
> + IIO_TIMESTAMP_TYPE_CONSUMER_TOP_HALF,
> + IIO_TIMESTAMP_TYPE_CONSUMER_BOTTOM_HALF,
> + IIO_TIMESTAMP_TYPE_TRIGGER,
> +};

This needs documentation. I'm struggling even with the series in front of me
to understand what each of these means. The comment below helps somewhat
but we should have it alongside the enum.

> +
> /**
> * struct iio_poll_func - poll function pair
> *
> @@ -26,7 +33,10 @@ struct iio_trigger;
> * @timestamp: some devices need a timestamp grabbed as soon
> * as possible after the trigger - hence handler
> * passes it via here.
> + * @timestamp_type: indicates which handler grabs the timestamp.
> + * @timestamp_enabled: if true, automatically grabs the timestamp.
> **/
> +
> struct iio_poll_func {
> struct iio_dev *indio_dev;
> irqreturn_t (*h)(int irq, void *p);
> @@ -35,6 +45,9 @@ struct iio_poll_func {
> char *name;
> int irq;
> s64 timestamp;
> +
> + enum iio_timestamp_type timestamp_type;
> + bool timestamp_enabled;
> };
>
>
>



Return-Path: <linux-kernel+bounces-669194-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CDF2241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:08:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E6B9A17FE46
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:08:53 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8C39F191F89;
Sat, 31 May 2025 18:08:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="uDjIaGTl"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C907928371;
Sat, 31 May 2025 18:08:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748714925; cv=none; b=SgaBSkj6pUD7f3UFBUPyEU9vpNkNcJ/KeOa9vVU2A+EMgnI1YWVMIThVJIxRdMrGcigZeRgFodWIeTrzo62juSeOyTdkmYwWBX287QigyATYr0G1D+tjXerEtBLxZF7Qvs3oIVTsqgMDvkjr0yLbazT417uTA+bl/jzihYKAZ1w=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748714925; c=relaxed/simple;
bh=X+Md5IzRRo0ZXMh/hz3sUlwNFPlQ9YC8sd7qODiBw20=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=Gfu5HJK8YQb8YorOv/3qROMWNChcanTlibuftS5cIPRQaQry3F9wUyDC4Ykg4AyHofg0ZgHnxPndrwPFy7NUriN3dcHUCPOLNCRYh56JIs8cGhSKufqRXJlAB07zrHTi75mhsOJR6ss+ULxaaG/Ke4TQ9YxYq6t3qoCJby24iwM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=uDjIaGTl; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1583EC4CEE3;
Sat, 31 May 2025 18:08:45 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748714925;
bh=X+Md5IzRRo0ZXMh/hz3sUlwNFPlQ9YC8sd7qODiBw20=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=uDjIaGTlYE7bPSZQL+5IaB/XE5QnHBheqotizP1HCLyaHktZXx0llqjeYbrWfNtOO
FxQxTdapKznG5X1oKyj5vpy1PFRa6COELDoMPljNYH46rfHnCu1bsqnYCRhvIJvFSF
eYx2yxxysO0YFQW+cDdzGCivvWyGrk5jQjKPUhsnIAOCGakgeSfVLPvwUOIhYmSbgL
mMwo1pAYAM8QXFMgo2O7V/VFtFXtuYvQe0bi4Gxs6dhkZPrLXWL1WrUnivL0PfNOjT
kN8uhtACbV247wNmzCqMlLircvEXH+N88mcA8xz7NhW8d7ZJ1qtIZsp12XbGsdfNt6
iupU2z6XeSwGg==
Date: Sat, 31 May 2025 11:08:43 -0700
From: Eric Biggers <ebiggers@xxxxxxxxxx>
To: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, linux-crypto@xxxxxxxxxxxxxxx,
ardb@xxxxxxxxxx
Subject: Re: [PATCH] crypto/crc32: register only one shash_alg
Message-ID: <20250531180843.GA5482@quark>
References: <20250530160940.12761-1-ebiggers@xxxxxxxxxx>
<aDqrMb7U18DcMSRl@xxxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <aDqrMb7U18DcMSRl@xxxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 03:09:37PM +0800, Herbert Xu wrote:
> Eric Biggers <ebiggers@xxxxxxxxxx> wrote:
> > From: Eric Biggers <ebiggers@xxxxxxxxxx>
> >
> > Stop unnecessarily registering a "crc32-generic" shash_alg when a
> > "crc32-$(ARCH)" shash_alg is registered too.
> >
> > While every algorithm does need to have a generic implementation to
> > ensure uniformity of support across platforms, that doesn't mean that we
> > need to make the generic implementation available through crypto_shash
> > when an optimized implementation is also available.
> >
> > Registering the generic shash_alg did allow users of the crypto_shash or
> > crypto_ahash APIs to request the generic implementation specifically,
> > instead of an optimized one. However, the only known use case for that
> > was the differential fuzz tests in crypto/testmgr.c. Equivalent test
> > coverage is now provided by crc_kunit.
> >
> > Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
> > ---
> >
> > I'm planning to take this through the crc tree.
> >
> > crypto/crc32.c | 69 ++++++++------------------------------------------
> > 1 file changed, 11 insertions(+), 58 deletions(-)
>
> Please don't do this without first removing all drivers providing
> "crc32" as otherwise their test coverge will be reduced.
>
> Cheers,

Yes, I'll do that. It's time to do that anyway.

For other algorithms like sha256 where it's unlikely that all the drivers can be
removed, testmgr.c should just compare against the library implementation, not
the "generic" implementation specifically.

Ideally we'll just stop pretending that cra_driver_name actually matters, and
just name the software algorithms *-lib or *-software.

- Eric


Return-Path: <linux-kernel+bounces-669195-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4646141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:09:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 91C114A00C6
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:09:28 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BD322185955;
Sat, 31 May 2025 18:09:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VU+KXZE9"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 0AF544D8CE
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:09:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748714962; cv=none; b=mogi/cmdvQ8LPcLWax6FpoaqYbNZN/Zh5j3aNYor4gszAjRz1EG+P+KTlMYBiZQe2da3vW1N8cvIHgNJiWbEW71Lelm9creuxOQ0gL0IAF92z7cAV4dGAL2rewTYD1jJYOLAbQpQraggF+eTM9HhXoC52PWIvB9CC/guwoBRYjE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748714962; c=relaxed/simple;
bh=WWlrY9er8h6X1eA1p1CShRyP68Nw8AbO6/HC5H1vYeQ=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=nHD1L6ovl59RJzOnt33A6n30gJwZ/fTRNJEBn6N5fKvVwDg6b3+/djreLUrAMCM+y4Q9cSZ+SkHa/cvezDg4HFtvcetKbejZMLAhRx6Q62fKVlZX10KHavc4C4RJvnUraUvM+1zmnRbYqv/FLXRKmU1c8dXx9aDcH7+kj/l8dtY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VU+KXZE9; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8D238C4CEE3;
Sat, 31 May 2025 18:09:18 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748714961;
bh=WWlrY9er8h6X1eA1p1CShRyP68Nw8AbO6/HC5H1vYeQ=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=VU+KXZE9ySt298FyisW7/vvGGU5Mtc/EbnfRImhsQzsMFlhZywretVlTMaO6Y2/YW
EhEquuCk04hJ5D1JasJ3ZVs3/rpmoRQZ/NY7ICdOlnK9KeI7l0Xe7PVWqfYaQrAXFI
aZvyuUPWlrWcafAZRVymRftu8SlXGKVCBwj3pAnGQTU3i3bCmxTJHnB3c41BzgQRFs
pSCOOcz1ntQ1eomUv3nRKq7qtgCgdj10QzAlo3H6oFLZf+s5BrTsVk2R44FdBJb97v
rN4806sgEt6c3L0RaCsJj5nuGeNQlIIQRcOi/XDfb7e+mjpOF9DEusIopLuWgpyLnp
WUcggkqzQEMfQ==
Date: Sat, 31 May 2025 20:09:15 +0200
From: Ingo Molnar <mingo@xxxxxxxxxx>
To: Andy Shevchenko <andy@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, Arnd Bergmann <arnd@xxxxxxxxxx>,
Borislav Petkov <bp@xxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>,
"H . Peter Anvin" <hpa@xxxxxxxxx>,
Kees Cook <keescook@xxxxxxxxxxxx>,
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>,
Mike Rapoport <rppt@xxxxxxxxxx>,
Paul Menzel <pmenzel@xxxxxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Thomas Gleixner <tglx@xxxxxxxxxxxxx>,
David Woodhouse <dwmw@xxxxxxxxxxxx>
Subject: Re: [PATCH 09/32] x86/boot/e820: Call the PCI gap a 'gap' in the
boot log printout
Message-ID: <aDtFy1Fw5HUZtfcc@xxxxxxxxx>
References: <20250515120549.2820541-1-mingo@xxxxxxxxxx>
<20250515120549.2820541-10-mingo@xxxxxxxxxx>
<aCsjvKT_FO7HxIt4@xxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <aCsjvKT_FO7HxIt4@xxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


* Andy Shevchenko <andy@xxxxxxxxxx> wrote:

> On Thu, May 15, 2025 at 02:05:25PM +0200, Ingo Molnar wrote:
> > It is a bit weird and inconsistent that the PCI gap is
> > advertised during bootup as 'mem'ory:
> >
> > [mem 0xc0000000-0xfed1bfff] available for PCI devices
> > ^^^
> >
> > It's not really memory, it's a gap that PCI devices can decode
> > and use and they often do not map it to any memory themselves.
> >
> > So advertise it for what it is, a gap:
> >
> > [gap 0xc0000000-0xfed1bfff] available for PCI devices
>
> Why not use word 'range' instead of the 'gap'? This will allow to switch to
> %pra without modifying the output.

Well, it's not a range, it's a gap in the memory map. Why does %pra
dictate details of the output in such a fashion?

Thanks,

Ingo


Return-Path: <linux-kernel+bounces-669196-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7DD5141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:09:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 4C87A7AC016
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:08:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 44047192B8C;
Sat, 31 May 2025 18:09:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="UvtzZpIe"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 7DBB57260A;
Sat, 31 May 2025 18:09:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748714974; cv=none; b=u1srl2q/f+5APyM3L4YQZsW+Hz6eeJCayfzLDsi1L2/kUKvVamjZetR8Kn85e+FQPFauwYn2du3K7Y13CzWOwpJytR7NHDnEc6QgaZ7T224IoSSnw00SVf5HrZqD7hDkLskaDXoo+2IaMiIPZCDUQXUNlUAujiIQrke3W2w+bsc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748714974; c=relaxed/simple;
bh=gb0uZRUR+9QRJoit/ysAGvshX0ef0Mgkah6NHv/jSNo=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=Ei6umm876fBskgk28JlofNfhJqlf56rWOk1yD6jxYrfla6ct1Wpm3JMJDrcivJcJL74EaDRJ2qG0FblG/zGsAe+Mv8M4JpZ+rgqAeEnZLy2INV8AGGCDby4C6Omwq7100ECTdHDE7PIPfudKhWvtcnej3iRLIyrTVRV3OtfWOsg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=UvtzZpIe; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id D28EFC4CEE3;
Sat, 31 May 2025 18:09:31 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748714974;
bh=gb0uZRUR+9QRJoit/ysAGvshX0ef0Mgkah6NHv/jSNo=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=UvtzZpIetEwHJXNmsrVr84J0zpdsTPeo07XICGQWkm8fWlEoDPZpZ/bfeHr1lTvAy
wQ1HlhBh+Tuq6nVzXywfKM12f/VmHRjXIx3Sou5OuaHhNUIoO12dxJ3YaCbJVKrcfT
8aEmaRgMQgUdXgo8wmiJXG86Td29xEm0JvgSPX3Wkbvb1kT3/WbtkHovb32mnNc0wP
JkRVYEtouHipkzkyjxuUhr/0/N8w+BfX7xQ8NGB4KeQqqzef2/AiFz95WLp+UAzNW0
x8pZR9PqX+wnIgkDshx13uprkXOrA5X5SEPI8HmBCukJpsHF1jRuaE8RQRQepHpkEB
tz4Dx2CevQC6Q==
Date: Sat, 31 May 2025 19:09:28 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Gyeyoung Baek <gye976@xxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH RFC 6/9] iio: trigger: Define timetamp-related
structures and constants
Message-ID: <20250531190928.201bcd5a@jic23-huawei>
In-Reply-To: <20250519-timestamp-v1-6-fcb4f6c2721c@xxxxxxxxx>
References: <20250519-timestamp-v1-0-fcb4f6c2721c@xxxxxxxxx>
<20250519-timestamp-v1-6-fcb4f6c2721c@xxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 19 May 2025 23:25:58 +0900
Gyeyoung Baek <gye976@xxxxxxxxx> wrote:

> The `trig_type` indicates whether the trigger calls poll() or poll_nested=
().
> The `early_timestamp` indicates whether the trigger grabs the timestamp a=
t the trigger.
> We need this to prevent the consumer from overwriting the timestamp.
>=20
> To allow the trigger to directly write the timestamp into the consumer's =
poll_func,
> add poll_func pointer member to the iio_trigger structure.
>=20
> However, I'm not sure if having a poll_func pointer member
> in iio_trigger is a good approach.
> Would this approach be acceptable?

I need to think about that. My initial thought was that it crosses boundar=
ies
that we really don't want to cross.

I'm not sure I yet understand why we ever want the trigger to do that
write of the timestamp. Why are the wrapping handlers not enough?

>=20
> Signed-off-by: Gyeyoung Baek <gye976@xxxxxxxxx>
> ---
> include/linux/iio/trigger.h | 14 +++++++++++++-
> 1 file changed, 13 insertions(+), 1 deletion(-)
>=20
> diff --git a/include/linux/iio/trigger.h b/include/linux/iio/trigger.h
> index bce3b1788199..f3b89a1e0318 100644
> --- a/include/linux/iio/trigger.h
> +++ b/include/linux/iio/trigger.h
> @@ -36,6 +36,10 @@ struct iio_trigger_ops {
> struct iio_dev *indio_dev);
> };
> =20
> +#define IIO_TRIG_TYPE_POLL BIT(0)
> +#define IIO_TRIG_TYPE_POLL_NESTED BIT(1)
> +#define IIO_TRIG_TYPE_BOTH (IIO_TRIG_TYPE_POLL | \
> + IIO_TRIG_TYPE_POLL_NESTED)

I'm lost. How does a given trigger do both?

Also didn't these get used in an earlier patch? Even for an RFC make
sure it bisects.

> =20
> /**
> * struct iio_trigger - industrial I/O trigger device
> @@ -56,7 +60,10 @@ struct iio_trigger_ops {
> * i.e. if we registered a poll function to the same
> * device as the one providing the trigger.
> * @reenable_work: [INTERN] work item used to ensure reenable can sleep.
> + * @trig_type: [DRIVER] specifies whether the trigger calls poll(), pol=
l_nested(), or both.
> + * @early_timestamp: [DRIVER] set to true if the trigger supports grabbi=
ng timestamp.
> **/
> +
Stray blank line.
> struct iio_trigger {
> const struct iio_trigger_ops *ops;
> struct module *owner;
> @@ -76,8 +83,13 @@ struct iio_trigger {
> struct mutex pool_lock;
> bool attached_own_device;
> struct work_struct reenable_work;
> -};
> =20
> + /* RFC, exists to access the consumer device=E2=80=99s pollfunc. */
> + struct iio_poll_func *consumer_pf[CONFIG_IIO_CONSUMERS_PER_TRIGGER];
> +
> + int trig_type;
> + bool early_timestamp;
> +};
> =20
> static inline struct iio_trigger *to_iio_trigger(struct device *d)
> {
>=20



Return-Path: <linux-kernel+bounces-669197-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1A58D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:11:04 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id AA26D3B791A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:10:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8053F193436;
Sat, 31 May 2025 18:10:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="bT4ygHzN"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C212D645;
Sat, 31 May 2025 18:10:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715056; cv=none; b=ZWOaUxAIGyGuchzaIaLMZtFAUlVDA2a8ybUyqWgRBADXM+Sv6oyNeqnWNbSgiSqO6sbciEgEJ5OdZdRMW/kGc7uV7+rHUUDjBMTZ7TgbyA1OxFbsYhVFc6uZsE2I+xCVtdcNAnzfwtj+eteW23XvshAutYjh7Mv9iOQjA4uYN3c=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715056; c=relaxed/simple;
bh=mS1Lvfy2nfkIP5mFEJ2h9xPRBq06wENgzWEf99Ck0dU=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=pV9js7usnUFXf7iT0yOlPhoUgiTASEDeIYaEmWelraxnOhx7IUl5+wAM5NgvoHnyyc0diawXSw30zKhnvovMHLxCAdMaT4c7pVXzZ8TZFBwbWgbVFYYH8MpZQkQDOP8G5wWdhXuBjilg7eSXjOoZ6+l17JgC9Hs2CCuoTZQcpaU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=bT4ygHzN; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id A8BCDC4CEE3;
Sat, 31 May 2025 18:10:53 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748715056;
bh=mS1Lvfy2nfkIP5mFEJ2h9xPRBq06wENgzWEf99Ck0dU=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=bT4ygHzN2iM3I01ie0wSBuqioju/k9v4hJnQbNVFO/l4QuEtu0Z2eCGZaXIE4+A78
MBJ0XzR+8sl6j4DbUrLhhgJttzDAa1E/GJ3RSsJ8J+4wOyu1ENQ0pgg/hGlwCZxikC
m9E5rboLG29T7o5r3PyCestWNK3jKsXmGLXMZAln6J2C1dXmNLpVeefWYlVsZKww1P
5HwSeF7YNvv9SHXzWW0OYF0uybjLI2feMes4j45R1A0y7wwwrS57AW3dj15CO56dk2
k+vTWrlFqEr+SMxfPerVlYBXBgwalHOpxIai2seotW85KgSxXBfD82mrqufyfospJ/
Y3wOrpfefy9Hw==
Date: Sat, 31 May 2025 19:10:48 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Gyeyoung Baek <gye976@xxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH RFC 0/9] iio: Introduce new timestamp grabbing APIs
Message-ID: <20250531191048.176b40af@jic23-huawei>
In-Reply-To: <20250519-timestamp-v1-0-fcb4f6c2721c@xxxxxxxxx>
References: <20250519-timestamp-v1-0-fcb4f6c2721c@xxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 19 May 2025 23:25:52 +0900
Gyeyoung Baek <gye976@xxxxxxxxx> wrote:

> Support automatic timestamp grabbing by passing `true` to the `timestamp_enabled` parameter of `iio_triggered_buffer_setup_new()`.
> So consumer drivers don't need to set `iio_pollfunc_store_time()` as either the tophalf or bottomhalf manually.
>
> For this, triggers must indicate whether they will call `poll()`, `poll_nested()`, or both before
> calling `iio_trigger_register()`. This is necessary because the consumer's handler does not know
> in advance which trigger will be attached.
>
> Once `iio_trigger_attach_poll_func()` is called, a timestamp is grabbed in either the
> tophalf or bottomhalf based on the trigger's type (POLL or POLL_NESTED). If the trigger
> supports both (e.g., at91-sama5d2-adc.c), it is treated as POLL_NESTED since the consumer's
> tophalf is not invoked in poll_nested(), but the bottomhalf always is.
>
> If the attached trigger supports timestamp grabbing itself, the consumer does not need to handle it.
> Instead, the consumer's `poll_func` pointer is passed to the trigger, which can then store the
> timestamp directly into consumer. Trigger drivers can pass timestamp values to consumers in a consistent
> interface using the new API `iio_trigger_store_time()`.

This trigger grabbing timestamps thing seems to me to a potential future
optimization. I'm not seeing why we need it for the fundamental thing we
are addressing here and it is making the patch set more confusing for me
at least.

>
> Tested on qemu, with dummy and trig-sysfs drivers tweaked for testing.
>
> Signed-off-by: Gyeyoung Baek <gye976@xxxxxxxxx>
> ---
> Gyeyoung Baek (9):
> iio: buffer: Fix checkpatch.pl warning
> iio: consumer: Define timestamp-related structures and constants
> iio: consumer: Add new APIs of triggered_buffer_setup() family
> iio: consumer: Add new API iio_poll_func_register()
> iio: consumer: Add new API iio_pollfunc_get_timestamp()
> iio: trigger: Define timetamp-related structures and constants
> iio: trigger: Add new API iio_trigger_attach_timestamp()
> iio: trigger: Add new API iio_trigger_store_time()
> iio: rpr0521: Use new timestamp-related APIs
>
> drivers/iio/buffer/industrialio-triggered-buffer.c | 84 ++++++++++++-
> drivers/iio/industrialio-trigger.c | 135 ++++++++++++++++++++-
> drivers/iio/light/rpr0521.c | 22 +---
> include/linux/iio/trigger.h | 16 ++-
> include/linux/iio/trigger_consumer.h | 23 ++++
> include/linux/iio/triggered_buffer.h | 25 ++++
> 6 files changed, 283 insertions(+), 22 deletions(-)
> ---
> base-commit: 43a9eee06bf8a8535d8709b29379bec8cafcab56
> change-id: 20250518-timestamp-a899e78e07e3
>
> Best regards,



Return-Path: <linux-kernel+bounces-669198-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C2C5041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:15:01 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 5273A3B9CCB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:14:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CB5EA194094;
Sat, 31 May 2025 18:14:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GhK0tD7g"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 15217645;
Sat, 31 May 2025 18:14:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715295; cv=none; b=PB22o3kgOEmhXDLWKOZIB4EhR0D6Cs/sDCzTTR23KY9Mz9cc5xeOKj0eZ7F5aMIgkUTqX4J/lOpjBgzHSWxXLXjd/RlK7WGGZ3ztPbwh7Rsh4WrVgmX1uq3Uwso44I6ZOzAMD/EhJL0SR+w90q55peMEUvKNoK4UlUwVTQAVPDA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715295; c=relaxed/simple;
bh=nqKuVp+2bREMRpt2LB+oUZKxwqEqRuXFgwB+aDcnJYA=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=WEfrouPYLszg6x1l+1vimSzRB173b9VbdJcCM1F/mjiqIPH8dRaE623LNOpj1Thd1CpT0zlEqX9xlQChTLfOMMLIbw5ztpncN3oCwvN9SePvBHb+NFpr61iNwLHa7mgYvQwfxs4noIMyRoeZx6R2RgQ1XiJ/Rd8ohGYQlpCl4QI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GhK0tD7g; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id C057BC4CEE3;
Sat, 31 May 2025 18:14:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748715294;
bh=nqKuVp+2bREMRpt2LB+oUZKxwqEqRuXFgwB+aDcnJYA=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=GhK0tD7gg+5upDblc5GqYqs78Y1o1ZyqKYujT4T/CBShAU5KG4JxhLapy/OexLrkh
XfHqWi5wJPlua7sjlTQiD8YC/QWTUGnUMozLxQbDDwH3BR4zzLtkZbTiSwQpxRj7Do
5J+wAUDZCkA1SUlUhDFHVHNibofyW0I1v2dVkSEbLOpGmQiCUCVPK3OYk2nRUKzpfS
O1hK33T+tAhclTJH8/sBTHnAViZ97cePylVi2jdN7fHev7pST+G7KUzwOLyS8N7QJl
uKACpnyb6wYAVnp6Ztv5b2LuKKHi7lV2a8VZIR2msIjZMOEwUGtoEq4FxFtWEqPZGN
NIHN5ka2+EN5A==
Date: Sat, 31 May 2025 19:14:46 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Gyeyoung Baek <gye976@xxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH RFC 9/9] iio: rpr0521: Use new timestamp-related APIs
Message-ID: <20250531191446.1b1d2e2f@jic23-huawei>
In-Reply-To: <20250519-timestamp-v1-9-fcb4f6c2721c@xxxxxxxxx>
References: <20250519-timestamp-v1-0-fcb4f6c2721c@xxxxxxxxx>
<20250519-timestamp-v1-9-fcb4f6c2721c@xxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 19 May 2025 23:26:01 +0900
Gyeyoung Baek <gye976@xxxxxxxxx> wrote:

> This patch is an example that helps explain the previous series.
> Now there is no need to handle timestamps differently depending on whether
> the consumer is attached to its own trigger or to another trigger.
> And the own trigger of rpr0521 can simply pass a timestamp to consumer,
> using `iio_trigger_store_time()`
>
> Not tested since I don't have the corresponding device.
>
> Signed-off-by: Gyeyoung Baek <gye976@xxxxxxxxx>

Ah. So this is what the trigger grabbing timestamp thing is about.

I'd just ignore this case for now and solve the simpler one
of what to do the the pf->timestamp stuff.

That part of the patch set looks promising to me.

Jonathan


> ---
> drivers/iio/light/rpr0521.c | 22 ++++++----------------
> 1 file changed, 6 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/iio/light/rpr0521.c b/drivers/iio/light/rpr0521.c
> index 92e7552f3e39..32981db18428 100644
> --- a/drivers/iio/light/rpr0521.c
> +++ b/drivers/iio/light/rpr0521.c
> @@ -186,7 +186,6 @@ struct rpr0521_data {
> bool pxs_dev_en;
>
> struct iio_trigger *drdy_trigger0;
> - s64 irq_timestamp;
>
> /* optimize runtime pm ops - enable/disable device only if needed */
> bool als_ps_need_en;
> @@ -416,7 +415,7 @@ static irqreturn_t rpr0521_drdy_irq_handler(int irq, void *private)
> struct iio_dev *indio_dev = private;
> struct rpr0521_data *data = iio_priv(indio_dev);
>
> - data->irq_timestamp = iio_get_time_ns(indio_dev);
> + iio_trigger_store_time(data->drdy_trigger0);
> /*
> * We need to wake the thread to read the interrupt reg. It
> * is not possible to do that here because regmap_read takes a
> @@ -446,15 +445,6 @@ static irqreturn_t rpr0521_trigger_consumer_handler(int irq, void *p)
> struct rpr0521_data *data = iio_priv(indio_dev);
> int err;
>
> - /* Use irq timestamp when reasonable. */
> - if (iio_trigger_using_own(indio_dev) && data->irq_timestamp) {
> - pf->timestamp = data->irq_timestamp;
> - data->irq_timestamp = 0;
> - }
> - /* Other chained trigger polls get timestamp only here. */
> - if (!pf->timestamp)
> - pf->timestamp = iio_get_time_ns(indio_dev);
> -
> err = regmap_bulk_read(data->regmap, RPR0521_REG_PXS_DATA,
> data->scan.channels,
> (3 * 2) + 1); /* 3 * 16-bit + (discarded) int clear reg. */
> @@ -464,7 +454,6 @@ static irqreturn_t rpr0521_trigger_consumer_handler(int irq, void *p)
> else
> dev_err(&data->client->dev,
> "Trigger consumer can't read from sensor.\n");
> - pf->timestamp = 0;
>
> iio_trigger_notify_done(indio_dev->trig);
>
> @@ -867,8 +856,6 @@ static int rpr0521_init(struct rpr0521_data *data)
> return ret;
> #endif
>
> - data->irq_timestamp = 0;
> -
> return 0;
> }
>
> @@ -984,6 +971,9 @@ static int rpr0521_probe(struct i2c_client *client)
> goto err_pm_disable;
> }
> data->drdy_trigger0->ops = &rpr0521_trigger_ops;
> + data->drdy_trigger0->early_timestamp = true;
> + data->drdy_trigger0->trig_type = IIO_TRIG_TYPE_POLL_NESTED;
> +
> indio_dev->available_scan_masks = rpr0521_available_scan_masks;
> iio_trigger_set_drvdata(data->drdy_trigger0, indio_dev);
>
> @@ -1011,10 +1001,10 @@ static int rpr0521_probe(struct i2c_client *client)
> */
>
> /* Trigger consumer setup */
> - ret = devm_iio_triggered_buffer_setup(indio_dev->dev.parent,
> + ret = devm_iio_triggered_buffer_setup_new(indio_dev->dev.parent,
> indio_dev,
> - iio_pollfunc_store_time,
> rpr0521_trigger_consumer_handler,
> + true,
> &rpr0521_buffer_setup_ops);
> if (ret < 0) {
> dev_err(&client->dev, "iio triggered buffer setup failed\n");
>



Return-Path: <linux-kernel+bounces-669199-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DA19B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:17:09 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 8DD21189DCCB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:17:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5DE0119994F;
Sat, 31 May 2025 18:17:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="U7kEA2CN"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 67E922907;
Sat, 31 May 2025 18:16:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715420; cv=none; b=kcnq555hB8Jndy1yzUbgfwxZOEeLAikOdJ15v3PtlRGGqKRPnL8lgbsR+1SHS7tyOpU7wFfEMlbP2s9kVgSybshxOJ1DgLxgoDd7P/dMmySz/mTNcxIC4uhvaNObajMPSwU3y1oZ6+ogt9bumxALk2NBAco3XWxQx+kz70Lvb2k=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715420; c=relaxed/simple;
bh=FzAtl4E/kjariHEmYDAKBVDCXj0UnW3tqyh8pyA7pfc=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=NeL1roo6WIMy3nE93Gt1HzBIeyeNPPdSl/7WNJ0Cvl5nRvi80QR58JdgxiCS8du+xNf3ltrebK+L2myv68MzEU651W2ZQMslvkjGPI7Q5+UdK7XLlgJGA6z3LsnJ/IQ+DOByAC37H2ZnHHra2aUUeMM7rxxm/JubO66qb1sDop4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=U7kEA2CN; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E8FAC4CEE3;
Sat, 31 May 2025 18:16:56 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748715419;
bh=FzAtl4E/kjariHEmYDAKBVDCXj0UnW3tqyh8pyA7pfc=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=U7kEA2CNs8rb7hTj2WFBORGxIvXq9nJgZvtImNnTI4lfjzsZ7bnMhjw15+Z3wM85T
lN2wwjvCUMR3f7kwPrPecCsrhj9atWNQSuVHSLjR/+uSIVLHui7D0hIGiaI6WkDQBQ
WrL4QkWmEJAM0fwAY1EPEOb8FoeZoFvCeVMvFRv8cUZ3+JauOgXu6ATggOsE8kVTZ4
rFK4IBUozp/3zGGWQEuYPzJ5wJm2ypftwCtxOZydO/DTux7vocbFN8/P1a96DAxj74
WgvauYglNIL0CbEH/MlmEahUamAXNaNGT1tVToNGfTVN3+xJK97wldf+TVNAB/DxFA
Iyg5mzmWTuCvw==
Date: Sat, 31 May 2025 19:16:52 +0100
From: Jonathan Cameron <jic23@xxxxxxxxxx>
To: Gyeyoung Baek <gye976@xxxxxxxxx>
Cc: David Lechner <dlechner@xxxxxxxxxxxx>, Nuno =?UTF-8?B?U8Oh?=
<nuno.sa@xxxxxxxxxx>, Andy Shevchenko <andy@xxxxxxxxxx>,
linux-iio@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH RFC 3/9] iio: consumer: Add new APIs of
triggered_buffer_setup() family
Message-ID: <20250531191652.488ff1b6@jic23-huawei>
In-Reply-To: <20250519-timestamp-v1-3-fcb4f6c2721c@xxxxxxxxx>
References: <20250519-timestamp-v1-0-fcb4f6c2721c@xxxxxxxxx>
<20250519-timestamp-v1-3-fcb4f6c2721c@xxxxxxxxx>
X-Mailer: Claws Mail 4.3.0 (GTK 3.24.48; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Mon, 19 May 2025 23:25:55 +0900
Gyeyoung Baek <gye976@xxxxxxxxx> wrote:

> Add new versions of the `iio_triggered_buffer_setup_ext()` APIs.
> (API names are tentative)
> iio_triggered_buffer_setup_new
> iio_triggered_buffer_setup_ext_new
> devm_iio_triggered_buffer_setup_new
> devm_iio_triggered_buffer_setup_ext_new
> iio_alloc_pollfunc_new
> these APIs take a bool parameter named `timestamp_enabled`.
>
> Signed-off-by: Gyeyoung Baek <gye976@xxxxxxxxx>

See if you can find a way (probably a common shared function) to make it
more obvious that these are very nearly the same as the existing code.

Right now it is harder than I'd like to spot the differences.


> ---
> drivers/iio/buffer/industrialio-triggered-buffer.c | 82 ++++++++++++++++++++++
> drivers/iio/industrialio-trigger.c | 33 +++++++++
> include/linux/iio/trigger_consumer.h | 7 ++
> include/linux/iio/triggered_buffer.h | 25 +++++++
> 4 files changed, 147 insertions(+)
>
> diff --git a/drivers/iio/buffer/industrialio-triggered-buffer.c b/drivers/iio/buffer/industrialio-triggered-buffer.c
> index 9bf75dee7ff8..9b99bf884ccb 100644
> --- a/drivers/iio/buffer/industrialio-triggered-buffer.c
> +++ b/drivers/iio/buffer/industrialio-triggered-buffer.c
> @@ -14,6 +14,68 @@
> #include <linux/iio/triggered_buffer.h>
> #include <linux/iio/trigger_consumer.h>
>
> +int iio_triggered_buffer_setup_ext_new(struct iio_dev *indio_dev,
> + irqreturn_t (*thread)(int irq, void *p),
> + bool timestamp_enabled,
> + enum iio_buffer_direction direction,
> + const struct iio_buffer_setup_ops *setup_ops,
> + const struct iio_dev_attr **buffer_attrs)
> +{
> + struct iio_buffer *buffer;
> + int ret;
> +
> + /*
> + * iio_triggered_buffer_cleanup() assumes that the buffer allocated here
> + * is assigned to indio_dev->buffer but this is only the case if this
> + * function is the first caller to iio_device_attach_buffer(). If
> + * indio_dev->buffer is already set then we can't proceed otherwise the
> + * cleanup function will try to free a buffer that was not allocated here.
> + */
> + if (indio_dev->buffer)
> + return -EADDRINUSE;
> +
> + buffer = iio_kfifo_allocate();
> + if (!buffer) {
> + ret = -ENOMEM;
> + goto error_ret;
> + }
> +
> + indio_dev->pollfunc = iio_alloc_pollfunc_new(thread,
> + timestamp_enabled,
> + IRQF_ONESHOT,
> + indio_dev,
> + "%s_consumer%d",
> + indio_dev->name,
> + iio_device_id(indio_dev));
> + if (indio_dev->pollfunc == NULL) {
> + ret = -ENOMEM;
> + goto error_kfifo_free;
> + }
> +
> + /* Ring buffer functions - here trigger setup related */
> + indio_dev->setup_ops = setup_ops;
> +
> + /* Flag that polled ring buffering is possible */
> + indio_dev->modes |= INDIO_BUFFER_TRIGGERED;
> +
> + buffer->direction = direction;
> + buffer->attrs = buffer_attrs;
> +
> + ret = iio_device_attach_buffer(indio_dev, buffer);
> + if (ret < 0)
> + goto error_dealloc_pollfunc;
> +
> + return 0;
> +
> +error_dealloc_pollfunc:
> + iio_dealloc_pollfunc(indio_dev->pollfunc);
> +error_kfifo_free:
> + iio_kfifo_free(buffer);
> +error_ret:
> + return ret;
> +}
> +EXPORT_SYMBOL(iio_triggered_buffer_setup_ext_new);
> +
> /**
> * iio_triggered_buffer_setup_ext() - Setup triggered buffer and pollfunc
> * @indio_dev: IIO device structure
> @@ -114,6 +176,26 @@ static void devm_iio_triggered_buffer_clean(void *indio_dev)
> iio_triggered_buffer_cleanup(indio_dev);
> }
>
> +int devm_iio_triggered_buffer_setup_ext_new(struct device *dev,
> + struct iio_dev *indio_dev,
> + irqreturn_t (*thread)(int irq, void *p),
> + bool timestamp_enabled,
> + enum iio_buffer_direction direction,
> + const struct iio_buffer_setup_ops *ops,
> + const struct iio_dev_attr **buffer_attrs)
> +{
> + int ret;
> +
> + ret = iio_triggered_buffer_setup_ext_new(indio_dev, thread, timestamp_enabled, direction,
> + ops, buffer_attrs);
> + if (ret)
> + return ret;
> +
> + return devm_add_action_or_reset(dev, devm_iio_triggered_buffer_clean,
> + indio_dev);
> +}
> +EXPORT_SYMBOL_GPL(devm_iio_triggered_buffer_setup_ext_new);
> +
> int devm_iio_triggered_buffer_setup_ext(struct device *dev,
> struct iio_dev *indio_dev,
> irqreturn_t (*h)(int irq, void *p),
> diff --git a/drivers/iio/industrialio-trigger.c b/drivers/iio/industrialio-trigger.c
> index 54416a384232..527c3cf84be0 100644
> --- a/drivers/iio/industrialio-trigger.c
> +++ b/drivers/iio/industrialio-trigger.c
> @@ -361,6 +361,39 @@ irqreturn_t iio_pollfunc_store_time(int irq, void *p)
> }
> EXPORT_SYMBOL(iio_pollfunc_store_time);
>
> +struct iio_poll_func
> +*iio_alloc_pollfunc_new(irqreturn_t (*thread)(int irq, void *p),
> + bool timestamp_enabled,
> + int type,
> + struct iio_dev *indio_dev,
> + const char *fmt,
> + ...)
> +{
> + va_list vargs;
> + struct iio_poll_func *pf;
> +
> + pf = kmalloc(sizeof(*pf), GFP_KERNEL);
> + if (!pf)
> + return NULL;
> + va_start(vargs, fmt);
> + pf->name = kvasprintf(GFP_KERNEL, fmt, vargs);
> + va_end(vargs);
> + if (pf->name == NULL) {
> + kfree(pf);
> + return NULL;
> + }
> + pf->timestamp_enabled = timestamp_enabled;
> + pf->h = NULL;
> + pf->thread = thread;
> + pf->type = type;
> + pf->indio_dev = indio_dev;
> +
> + pf->timestamp = 0;
> + pf->timestamp_type = 0;
> + return pf;
> +}
> +EXPORT_SYMBOL_GPL(iio_alloc_pollfunc_new);
> +
> struct iio_poll_func
> *iio_alloc_pollfunc(irqreturn_t (*h)(int irq, void *p),
> irqreturn_t (*thread)(int irq, void *p),
> diff --git a/include/linux/iio/trigger_consumer.h b/include/linux/iio/trigger_consumer.h
> index 5e6ff8738386..213cd8560518 100644
> --- a/include/linux/iio/trigger_consumer.h
> +++ b/include/linux/iio/trigger_consumer.h
> @@ -50,6 +50,13 @@ struct iio_poll_func {
> bool timestamp_enabled;
> };
>
> +__printf(5, 6) struct iio_poll_func
> +*iio_alloc_pollfunc_new(irqreturn_t (*thread)(int irq, void *p),
> + bool timestamp_enabled,
> + int type,
> + struct iio_dev *indio_dev,
> + const char *fmt,
> + ...);
>
> __printf(5, 6) struct iio_poll_func
> *iio_alloc_pollfunc(irqreturn_t (*h)(int irq, void *p),
> diff --git a/include/linux/iio/triggered_buffer.h b/include/linux/iio/triggered_buffer.h
> index 29e1fe146879..5648c382a506 100644
> --- a/include/linux/iio/triggered_buffer.h
> +++ b/include/linux/iio/triggered_buffer.h
> @@ -9,6 +9,13 @@ struct iio_dev;
> struct iio_dev_attr;
> struct iio_buffer_setup_ops;
>
> +int iio_triggered_buffer_setup_ext_new(struct iio_dev *indio_dev,
> + irqreturn_t (*thread)(int irq, void *p),
> + bool timestamp_enabled,
> + enum iio_buffer_direction direction,
> + const struct iio_buffer_setup_ops *setup_ops,
> + const struct iio_dev_attr **buffer_attrs);
> +
> int iio_triggered_buffer_setup_ext(struct iio_dev *indio_dev,
> irqreturn_t (*h)(int irq, void *p),
> irqreturn_t (*thread)(int irq, void *p),
> @@ -17,11 +24,24 @@ int iio_triggered_buffer_setup_ext(struct iio_dev *indio_dev,
> const struct iio_dev_attr **buffer_attrs);
> void iio_triggered_buffer_cleanup(struct iio_dev *indio_dev);
>
> +#define iio_triggered_buffer_setup_new(indio_dev, h, timestamp_enabled, setup_ops) \
> + iio_triggered_buffer_setup_ext_new((indio_dev), (h), (timestamp_enabled), \
> + IIO_BUFFER_DIRECTION_IN, (setup_ops), \
> + NULL)
> +
> #define iio_triggered_buffer_setup(indio_dev, h, thread, setup_ops) \
> iio_triggered_buffer_setup_ext((indio_dev), (h), (thread), \
> IIO_BUFFER_DIRECTION_IN, (setup_ops), \
> NULL)
>
> +int devm_iio_triggered_buffer_setup_ext_new(struct device *dev,
> + struct iio_dev *indio_dev,
> + irqreturn_t (*thread)(int irq, void *p),
> + bool timestamp_enabled,
> + enum iio_buffer_direction direction,
> + const struct iio_buffer_setup_ops *ops,
> + const struct iio_dev_attr **buffer_attrs);
> +
> int devm_iio_triggered_buffer_setup_ext(struct device *dev,
> struct iio_dev *indio_dev,
> irqreturn_t (*h)(int irq, void *p),
> @@ -30,6 +50,11 @@ int devm_iio_triggered_buffer_setup_ext(struct device *dev,
> const struct iio_buffer_setup_ops *ops,
> const struct iio_dev_attr **buffer_attrs);
>
> +#define devm_iio_triggered_buffer_setup_new(dev, indio_dev, thread, timestamp_enabled, setup_ops) \
> + devm_iio_triggered_buffer_setup_ext_new((dev), (indio_dev), (thread), (timestamp_enabled), \
> + IIO_BUFFER_DIRECTION_IN, \
> + (setup_ops), NULL)
> +
> #define devm_iio_triggered_buffer_setup(dev, indio_dev, h, thread, setup_ops) \
> devm_iio_triggered_buffer_setup_ext((dev), (indio_dev), (h), (thread), \
> IIO_BUFFER_DIRECTION_IN, \
>



Return-Path: <linux-kernel+bounces-669200-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2A93541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:20:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id D316D3BB0AA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:20:27 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 465D919755B;
Sat, 31 May 2025 18:20:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="QpXbdA1M"
Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0382915E97
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:20:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715643; cv=none; b=BAmSQ/X+/+EAj63XTi4ml5102VrckjEH4MpKOqvZ41cGXgK7RupvlsVtAvtXs+jyQaODmJGBoLiaGDBV2Q5Q2Nl3UiNFkXEqjatfbrBD7Glx+Fr6JK1E52OZPk9DXGTWpE34IeTorRTAFgJnrMNOldmYPx/Jw4T7Oehos9XgE8Q=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715643; c=relaxed/simple;
bh=g1YXaWkHeBBoh5aON1H/wkbwtxVq56hqXg0PL20DN6k=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=NpOjKiPD3CRuDQCRQ1Yfq7qXHhKiUtAi8V1F9Wy3DnUvz7Mc5NLoX4WzgX+UjAXnTdkKsswZOGwHlejs7OgYhGrj6KInvlReYSwVek0Br50UJqvP/hPUhe2k3laOAtph0PCRDdgBYZIwzPgy9Mx0hg6Nby7pN6OQBujY8ldbwPA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=QpXbdA1M; arc=none smtp.client-ip=209.85.218.51
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org
Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-acacb8743a7so550277366b.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:20:40 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linux-foundation.org; s=google; t=1748715639; x=1749320439; darn=vger.kernel.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=3TCK79rzW2CQXkeBe174A4ly8q1x+sDUlP4xsDI45wY=;
b=QpXbdA1MQvmHhY2XKJ2Xd7JCdgGbx1fzT+iwMbtlnOB3iMABoPqwtvLLTeDjGQdAkY
wDxzRh4XEZWYwNDO8gouJCWfOmXr0FZEursOcG8bAhUwUiLV32lRhl+cWW6Ica149Fck
v76JTh8K1F2U99umvOc2Wp5LZxpH3eoI3kx1g=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748715639; x=1749320439;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=3TCK79rzW2CQXkeBe174A4ly8q1x+sDUlP4xsDI45wY=;
b=gx8EdC7R/pMfu3nS9fbT40LiUpmvsKWPBiVYxU/seIIYQYeKjujBtuAAhpcnZJS1w4
VgaDwX/JzPNEkk0CnRaQrbyHG5XlflTKeN1WNYPVeEFEXd3Ze4Zy0+DYZ37Vnc1/w28G
8cXQLdXy+ecLdX9/gxoYTTFM/biLk6MkM1Uzb8etnJUrxFCxwUVjeUTY/KdIXX/JU0Qa
AfSeZ0PBsKbrrpde7u7KRX1qNd62wZhgHsLv9LdUvhufMF3mx7+0WCFpfV23sZKABHmu
qtPxqs+BnUOcawUTnRuine/9Y6IgzLyGpDXdiHWbv3VFeRrITyaeywaD/Pbw7oXes0Bm
A6Ig==
X-Gm-Message-State: AOJu0YxBHtAZ0df8Wf8mNMNe+JpkORGZpT8uX+gN723/ZR4rDcgeVzZZ
1QSfKa7ZTvP2Uf4DsOe2hMoyP5Oih52/P/4A8SB02KJ7AWlZS1/LQ5yDQicdacDoMR9Jsp6NdeB
URsa6t30=
X-Gm-Gg: ASbGncuaIAWWu+JrLTEo1qE8WJ9v3O3iWMQ+smkGhzcuLHLirSO6L/7+aUYaFbh9hp6
FdzazJgL3Gwp+r8/6qaPB5ETp2kFTKCsoeBJk9T10tbXYqOTpR4YAKMv6uYgGpWIv0fasB/rXsr
vmH/y/lQ7rEcln0QRYWD0LZ2FW0X6Kctq7c3wPPcirh6eSHsYqik1tp0SGXADLiZj9rcpONGFzN
a/RnyrXfknrAMEn5wA6BDsiKyLOpefy2/LV/ejJsF1lN9Z+cRgIbYgH8ieQJzcXseuf9L32X36O
ZNKhWZatEAiiQdsEkN2oBQR5gZNYf56HLhWMqY+lIb33CyjZE2F6HyW+mrGvQHOTT97KrNtbMLV
a2Y7MAI29UW33QQySqNfwfZ3Psw==
X-Google-Smtp-Source: AGHT+IHIIDs5U40cJEIfvXiVPKEy5PruHRglH6qtdvM7/LbBZpU5PDl/0MLLC78+JIeEgcHg9N9Atw==
X-Received: by 2002:a17:906:c10e:b0:ad5:6258:996f with SMTP id a640c23a62f3a-ad8b0e38931mr986712566b.19.1748715639026;
Sat, 31 May 2025 11:20:39 -0700 (PDT)
Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com. [209.85.208.52])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada6ad6aa17sm535369866b.175.2025.05.31.11.20.37
for <linux-kernel@xxxxxxxxxxxxxxx>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 11:20:37 -0700 (PDT)
Received: by mail-ed1-f52.google.com with SMTP id 4fb4d7f45d1cf-6020ff8d35dso1069003a12.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:20:37 -0700 (PDT)
X-Received: by 2002:a05:6402:13c2:b0:5f4:8c80:77d with SMTP id
4fb4d7f45d1cf-6056f2dcee6mr7392841a12.6.1748715637006; Sat, 31 May 2025
11:20:37 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <202505310759.3A40AD051@keescook>
In-Reply-To: <202505310759.3A40AD051@keescook>
From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 11:20:20 -0700
X-Gmail-Original-Message-ID: <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFsw0RakLu4NbgZH60L9hc3sRPVu3EiOps6PGFrH5DreN9vxerKDG8IrIHM
Message-ID: <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
To: Kees Cook <kees@xxxxxxxxxx>, Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, Eric Biggers <ebiggers@xxxxxxxxxx>,
Ingo Saitz <ingo@xxxxxxxxxxxxxxx>, kernel test robot <oliver.sang@xxxxxxxxx>,
Marco Elver <elver@xxxxxxxxxx>, Nathan Chancellor <nathan@xxxxxxxxxx>,
Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, 31 May 2025 at 08:00, Kees Cook <kees@xxxxxxxxxx> wrote:
>
> Please pull this small handful of hardening fixes for v6.16-rc1.

WTF, Kees?

You seem to have actively maliciously modified your tree completely.

There are completely crazy commits in there that are entirely fake.

You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core

which *claims* to be from me, and committed by me, but is very much
not. It's some garbage you have entirely made up.

Yes, there is a real commit like that, but it's has the SHA1 ID of
9d230d500b0e.

And this isn't some kind of innocent rebasing mistake, because this
actively lies about who committed it.

This is completely unacceptable.

I will now refuse to pull *anything* from you until you explain what
the f&*^ you have been up to, because this looks like you have been
doing actively bad things.

You need to nuke that tree, and come up with a good explanation for
this kind of shit.

I'm cc'ing Konstantin, because I really think these kinds of games are
COMPLETELY UNACCEPTABLE, and this is not the kind of behavior we can
have on kernel.org accounts.

Konstantin - please disable Kees' account immediately until this is
cleared up. Because this looks *malicious*.

Linus


Return-Path: <linux-kernel+bounces-669201-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5286541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:21:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 968AA189E151
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:21:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F3DC317A31D;
Sat, 31 May 2025 18:21:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b+Krn0nL"
Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C715C18A6AB;
Sat, 31 May 2025 18:20:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715659; cv=none; b=W0ETPb3YnvFsVsmZc4SugYpI76EvsarXWybOt+vOCC0As9FVcYlG/MhYVH6TiUOf9AbEWGMT0+ifECCck7HXY03Y6hsVxmZGnyOggXdxoF+rVeqJqkSbLm7If+X77NiUExWGBQphfldrux/ZccLZqAO9hcgliHBpRui2HxLLjkA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715659; c=relaxed/simple;
bh=yTB6ILh//9sUZheSjS8C50WfSbZJwBQivokHXQ+fG8U=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=FiX4n5ixyNOmO4cqSVBT862kjeHSNlj8Hi7sXviA4C8rvlzC+K6aedKyHZZgQepldQ4sckPgxpprjYYs8LLSCz6FOhLhn2Qn5mmCkZCoOJsoAXDNlCDQtmDxNtCCpGP4GbOKUKVl0DcV+l3X7tcZqoWf2w89PDw2uyqDO8iYNTM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=b+Krn0nL; arc=none smtp.client-ip=209.85.221.48
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-3a37a243388so2601395f8f.1;
Sat, 31 May 2025 11:20:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748715656; x=1749320456; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=893//7LDv+YpPFUWMC5jDuhaOQv7eaFVPiT/txoSWcQ=;
b=b+Krn0nL2/8ar2ZLDb0pDvKs+P599VQCvR8c9NEIvFetS1Qo+MRF0GF/ZZhdROJEK2
mIO6478l4mdgpqRoMKd6XoGeJ9vJCrB5fz+YItG652ot8WAXEEfNGrmuLrnU4loNulsf
65V25AOby/vfHWNe5gXu65BU//TXFLN17YZ2ips9MXZpjt94Gro1R3nS2kc6FqzZZ7ME
gVwoA1sIX8+nUHvgiSJW4WJmmXC8oDaQSLJC10BTkjZl53hXSGycNzu4HATj2xU7NBfi
4wPr0A0eDEdts+eufPNjlta6/XZsggy/bQc2tFhWXJXkVGnuWTvz4hXUfn1Lh38UJQCJ
K+ng==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748715656; x=1749320456;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=893//7LDv+YpPFUWMC5jDuhaOQv7eaFVPiT/txoSWcQ=;
b=mf8enLs0mOLEnmjxanfBxuzmNgyg939H1ka2SGEt+oKjzweppSL2qVkUkdnhukJTac
KFDgqBJQEq6lvY2BKKIKMop7PmcvbBU16DvxOKMrkDzKSPCPKufmItRDCNii1dqC/3Ej
w849flgpOUAUX6SqsW46gR1AiIs71lk+tzttCQ8Imuft4bLBTd91HB7HwyJWPQDYkmD5
63+zsjYUfZv+DgHIrf4OJiVYVkDy1M95EJiWcFL97Uh1O56uss8IfXaU7v/cd2qdRETl
oI5QaRONVJ/BzjHnOm8Atd7pXbUoqTflpsIPZzp9rpGC8Dpa1afyMUiv5h8CFFHPYDm3
NJIw==
X-Forwarded-Encrypted: i=1; AJvYcCUTMMjFUqQu8iiJnSht6R/9e/ol/JWAjjN9aSw9EBUiw1tALQRl0GP+rnXcPh2A/lyHMbfv4WmMwN/e+36EpoY8@xxxxxxxxxxxxxxx, AJvYcCUxqDCpQTpsbb8V4SmcgtOoFwc6V1uOfd9BUTYLmFqpAsOS5PQ6+tbcLKSjDKxv/9JVxXtXxjyXI5q8j58L@xxxxxxxxxxxxxxx, AJvYcCVhFdJfLmyv93hdJn3bKdCIQcORaNJ43AB1eAhwM+5i7tqQYheqYLzcqMdTeitIYM5G1so=@vger.kernel.org
X-Gm-Message-State: AOJu0YzZUFxb7WbJG8P3JwkH9sl4tF7QWI3RARArPkbrUMo/2lAUYHLe
IWgUus83w8saKlWxpJ6oh+o9B1LxOVNzSSn8synOFQCKZhqvy6/nvW84v/0ckt01NgSQBTGuQHX
GzrCMvZLOZlDYa/PVcB5hCV0w+TjvdcA=
X-Gm-Gg: ASbGncvosOM2Wcub56MHRTN/4h14YTgZVdivbD5yFlbEmlzTx4EerS5vOGjWhs/0QDR
Cn02uFVWcf9cy0qg0kAkblVmIYRVAQr6YYkIX7BlxL8qZKriVuwtbVgbyLJ0f88zwtOA9zSeBqK
jdYgkb4Ad28/eXfLlIcyq6cH+69qNM6JBtF6nVNm4ZarnEltXHx9e6F7Zhqrl+QRo7zWRRfqwZ
X-Google-Smtp-Source: AGHT+IHJxIu9TBQmNHqViak7fsIR4nbbBhAZKgeip16A6BdM4LVd2e78MLa6R2/OBco09mDrw4CHu1bn66HkgGSmoEs=
X-Received: by 2002:a05:6000:220b:b0:3a4:ef00:a7bb with SMTP id
ffacd0b85a97d-3a4f7a4d637mr6114187f8f.18.1748715655714; Sat, 31 May 2025
11:20:55 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250531072031.2263491-1-blakejones@xxxxxxxxxx>
In-Reply-To: <20250531072031.2263491-1-blakejones@xxxxxxxxxx>
From: Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx>
Date: Sat, 31 May 2025 11:20:44 -0700
X-Gm-Features: AX0GCFvltGjmsI8OGe-VYG8Sc2oEh7-lCIwcagbY18dyLq8FvOpjNdxoRO8kCDc
Message-ID: <CAADnVQJv_FVciT9LC+W=sVtWAt9oXeAACzmTHzyqY-2svi4ugA@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] libbpf: add support for printing BTF character arrays as strings
To: Blake Jones <blakejones@xxxxxxxxxx>
Cc: Alexei Starovoitov <ast@xxxxxxxxxx>, Daniel Borkmann <daniel@xxxxxxxxxxxxx>,
Andrii Nakryiko <andrii@xxxxxxxxxx>, Martin KaFai Lau <martin.lau@xxxxxxxxx>,
Eduard Zingerman <eddyz87@xxxxxxxxx>, Song Liu <song@xxxxxxxxxx>,
Yonghong Song <yonghong.song@xxxxxxxxx>, John Fastabend <john.fastabend@xxxxxxxxx>,
KP Singh <kpsingh@xxxxxxxxxx>, Stanislav Fomichev <sdf@xxxxxxxxxxx>, Hao Luo <haoluo@xxxxxxxxxx>,
Jiri Olsa <jolsa@xxxxxxxxxx>, Mykola Lysenko <mykolal@xxxxxx>, Shuah Khan <shuah@xxxxxxxxxx>,
Ihor Solodrai <ihor.solodrai@xxxxxxxxx>, Namhyung Kim <namhyung@xxxxxxxxxx>,
Ian Rogers <irogers@xxxxxxxxxx>, bpf <bpf@xxxxxxxxxxxxxxx>,
LKML <linux-kernel@xxxxxxxxxxxxxxx>,
"open list:KERNEL SELFTEST FRAMEWORK" <linux-kselftest@xxxxxxxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 12:20=E2=80=AFAM Blake Jones <blakejones@xxxxxxxxxx=
> wrote:
>
> The BTF dumper code currently displays arrays of characters as just that =
-
> arrays, with each character formatted individually. Sometimes this is wha=
t
> makes sense, but it's nice to be able to treat that array as a string.
>
> This change adds a special case to the btf_dump functionality to allow
> arrays of single-byte integer values to be printed as character strings.
> Characters for which isprint() returns false are printed as hex-escaped
> values. This is enabled when the new ".print_strings" is set to 1 in the
> btf_dump_type_data_opts structure.
>
> As an example, here's what it looks like to dump the string "hello" using
> a few different field values for btf_dump_type_data_opts (.compact =3D 1)=
:
>
> - .print_strings =3D 0, .skip_names =3D 0: (char[6])['h','e','l','l','o'=
,]
> - .print_strings =3D 0, .skip_names =3D 1: ['h','e','l','l','o',]
> - .print_strings =3D 1, .skip_names =3D 0: (char[6])"hello"
> - .print_strings =3D 1, .skip_names =3D 1: "hello"
>
> Here's the string "h\xff", dumped with .compact =3D 1 and .skip_names =3D=
1:
>
> - .print_strings =3D 0: ['h',-1,]
> - .print_strings =3D 1: "h\xff"
>
> Signed-off-by: Blake Jones <blakejones@xxxxxxxxxx>
> ---
> tools/lib/bpf/btf.h | 3 +-
> tools/lib/bpf/btf_dump.c | 51 ++++++++-
> .../selftests/bpf/prog_tests/btf_dump.c | 102 ++++++++++++++++++
> 3 files changed, 154 insertions(+), 2 deletions(-)

Please split selftests vs main libbpf parts.

> diff --git a/tools/lib/bpf/btf.h b/tools/lib/bpf/btf.h
> index 4392451d634b..be8e8e26d245 100644
> --- a/tools/lib/bpf/btf.h
> +++ b/tools/lib/bpf/btf.h
> @@ -326,9 +326,10 @@ struct btf_dump_type_data_opts {
> bool compact; /* no newlines/indentation */
> bool skip_names; /* skip member/type names */
> bool emit_zeroes; /* show 0-valued fields */
> + bool print_strings; /* print char arrays as strings */
> size_t :0;
> };
> -#define btf_dump_type_data_opts__last_field emit_zeroes
> +#define btf_dump_type_data_opts__last_field print_strings
>
> LIBBPF_API int
> btf_dump__dump_type_data(struct btf_dump *d, __u32 id,
> diff --git a/tools/lib/bpf/btf_dump.c b/tools/lib/bpf/btf_dump.c
> index 460c3e57fadb..a07dd5accdd8 100644
> --- a/tools/lib/bpf/btf_dump.c
> +++ b/tools/lib/bpf/btf_dump.c
> @@ -75,6 +75,7 @@ struct btf_dump_data {
> bool is_array_member;
> bool is_array_terminated;
> bool is_array_char;
> + bool print_strings;

Looks useful, but make sure to add a feature detection
to perf, since it has to work with old and new libbpf.

> };
>
> struct btf_dump {
> @@ -2028,6 +2029,50 @@ static int btf_dump_var_data(struct btf_dump *d,
> return btf_dump_dump_type_data(d, NULL, t, type_id, data, 0, 0);
> }
>
> +static int btf_dump_string_data(struct btf_dump *d,
> + const struct btf_type *t,
> + __u32 id,
> + const void *data)
> +{
> + const struct btf_array *array =3D btf_array(t);
> + __u32 i;
> +
> + if (!btf_is_int(skip_mods_and_typedefs(d->btf, array->type, NULL)=
) ||
> + btf__resolve_size(d->btf, array->type) !=3D 1 ||
> + !d->typed_dump->print_strings) {
> + pr_warn("unexpected %s() call for array type %u\n",
> + __func__, array->type);
> + return -EINVAL;
> + }
> +
> + btf_dump_data_pfx(d);
> + btf_dump_printf(d, "\"");
> +
> + for (i =3D 0; i < array->nelems; i++, data++) {
> + char c;
> +
> + if (data >=3D d->typed_dump->data_end)
> + return -E2BIG;
> +
> + c =3D *(char *)data;
> + if (c =3D=3D '\0') {
> + /* When printing character arrays as strings, NUL=
bytes
> + * are always treated as string terminators; they=
are
> + * never printed.
> + */

Please use normal kernel style comments.
We're gradually getting away from networking style.

> + break;
> + }
> + if (isprint(c))
> + btf_dump_printf(d, "%c", c);
> + else
> + btf_dump_printf(d, "\\x%02x", *(__u8 *)data);
> + }
> +
> + btf_dump_printf(d, "\"");
> +
> + return 0;
> +}
> +
> static int btf_dump_array_data(struct btf_dump *d,
> const struct btf_type *t,
> __u32 id,
> @@ -2055,8 +2100,11 @@ static int btf_dump_array_data(struct btf_dump *d,
> * char arrays, so if size is 1 and element is
> * printable as a char, we'll do that.
> */
> - if (elem_size =3D=3D 1)
> + if (elem_size =3D=3D 1) {
> + if (d->typed_dump->print_strings)
> + return btf_dump_string_data(d, t, id, dat=
a);
> d->typed_dump->is_array_char =3D true;
> + }
> }
>
> /* note that we increment depth before calling btf_dump_print() b=
elow;
> @@ -2544,6 +2592,7 @@ int btf_dump__dump_type_data(struct btf_dump *d, __=
u32 id,
> d->typed_dump->compact =3D OPTS_GET(opts, compact, false);
> d->typed_dump->skip_names =3D OPTS_GET(opts, skip_names, false);
> d->typed_dump->emit_zeroes =3D OPTS_GET(opts, emit_zeroes, false)=
;
> + d->typed_dump->print_strings =3D OPTS_GET(opts, print_strings, fa=
lse);
>
> ret =3D btf_dump_dump_type_data(d, NULL, t, id, data, 0, 0);
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/btf_dump.c b/tools/te=
sting/selftests/bpf/prog_tests/btf_dump.c
> index c0a776feec23..70e51943f148 100644
> --- a/tools/testing/selftests/bpf/prog_tests/btf_dump.c
> +++ b/tools/testing/selftests/bpf/prog_tests/btf_dump.c
> @@ -879,6 +879,106 @@ static void test_btf_dump_var_data(struct btf *btf,=
struct btf_dump *d,
> "static int bpf_cgrp_storage_busy =3D (int)2", =
2);
> }
>
> +/*
> + * String-like types are generally not named, so they need to be
> + * found this way rather than via btf__find_by_name().
> + */

This is the correct style of comments.

> +static int find_char_array_type(struct btf *btf, int nelems)
> +{
> + const int nr_types =3D btf__type_cnt(btf);
> + const int char_type =3D btf__find_by_name(btf, "char");
> +
> + for (int i =3D 1; i < nr_types; i++) {
> + const struct btf_type *t;
> + const struct btf_array *at;
> +
> + t =3D btf__type_by_id(btf, i);
> + if (btf_kind(t) !=3D BTF_KIND_ARRAY)
> + continue;
> +
> + at =3D btf_array(t);
> + if (at->nelems =3D=3D nelems && at->type =3D=3D char_type=
)
> + return i;
> + }
> +
> + return -ENOENT;
> +}
> +
> +static int btf_dump_string_data(struct btf *btf, struct btf_dump *d,
> + char *str, struct btf_dump_type_data_opts=
*opts,
> + char *ptr, size_t ptr_sz,
> + const char *expected_val)
> +{
> + char name[64];
> + size_t type_sz;
> + int type_id;
> + int ret =3D 0;
> +
> + snprintf(name, sizeof(name), "char[%zu]", ptr_sz);
> + type_id =3D find_char_array_type(btf, ptr_sz);
> + if (!ASSERT_GE(type_id, 0, "find type id"))
> + return -ENOENT;
> + type_sz =3D btf__resolve_size(btf, type_id);
> + str[0] =3D '\0';
> + ret =3D btf_dump__dump_type_data(d, type_id, ptr, ptr_sz, opts);
> + if (type_sz <=3D ptr_sz) {
> + if (!ASSERT_EQ(ret, type_sz, "failed/unexpected type_sz")=
)
> + return -EINVAL;
> + } else {
> + if (!ASSERT_EQ(ret, -E2BIG, "failed to return -E2BIG"))
> + return -EINVAL;
> + }
> + if (!ASSERT_STREQ(str, expected_val, "ensure expected/actual matc=
h"))
> + return -EFAULT;
> + return 0;
> +}
> +
> +static void test_btf_dump_string_data(struct btf *btf, struct btf_dump *=
d,
> + char *str)
> +{
> + DECLARE_LIBBPF_OPTS(btf_dump_type_data_opts, opts);
> +
> + opts.compact =3D true;
> + opts.emit_zeroes =3D false;
> + opts.print_strings =3D true;
> +
> + opts.skip_names =3D false;
> + btf_dump_string_data(btf, d, str, &opts, "foo", 4,
> + "(char[4])\"foo\"");

we allow up to 100 char per line.
Don't split it that short.

pw-bot: cr


Return-Path: <linux-kernel+bounces-669202-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4FE7C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:21:42 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id E678A3ABC9E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:21:20 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4650619994F;
Sat, 31 May 2025 18:21:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PwHvSVjK"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 894AA15E97
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:21:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715696; cv=none; b=AL3fNLUUOMdmm+v5qeiDNykjB09uAdHJ6HeRpTisBxzCWzNPhfxKtlpOUUJVKwmHoq4fHwRV7MpF5wdBZYkJwyJAvYPgxUQIz9CgAGSspFQdb/ZEHrln73jCzq4kYwQEgSZRg1rKqKD2PobPXyNGBgNVouh+LA5NQ+S1DM3skSs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715696; c=relaxed/simple;
bh=ZRs3XEXZ/16TYS3O7Fd6MNAano8g1IYm3h9QlzVAVlE=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=iRFSdUxB7tRUnfDo+CEdmuWgwfSDI4RfxcZMtSNNQECkBYqK67gzD+zsV1CVlquJ7Nk0zsC3T9MnUQ1rIF473+nkF66pxCq/OmMC1eSE0RMcwrNVxfxSUAWMYM/pH3dEs/g4eB5v37/+ZmSK5OQSe7HkjNzqJXfR5atY8NmZWlQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PwHvSVjK; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1BD28C4CEE3;
Sat, 31 May 2025 18:21:32 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748715696;
bh=ZRs3XEXZ/16TYS3O7Fd6MNAano8g1IYm3h9QlzVAVlE=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=PwHvSVjKAA1gISw48r/oJluJk+nTQf9kscgRvzkxJewYIeW4WCq6jlqrCJ2RIC96z
/JOYvHZlmn23/Gie2T2Uof/foZlv9FoMjOKKs/CSl31VSpihpXROYTLdS2BoS33uSH
1RuIA1TJ39+pHtVhusY0kdHNg6Ohba0OiF971CYLss+/D8gSqDdRTBfUIN7GsfmHVT
OBBW/QehstbYURiuEiKnM0vl0EPfv/P8IXvXjy6KIcvdtF7yKqi7SmFdruDBOH+z65
A1G1ZigpzA7yOqtgjxKPyATxi5os6z0MjwcopiZuqkDyrRCpiQbZNviFpna1N2QPP+
IbIDjUoZPxnSg==
Date: Sat, 31 May 2025 20:21:30 +0200
From: Ingo Molnar <mingo@xxxxxxxxxx>
To: Andy Shevchenko <andy@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, Arnd Bergmann <arnd@xxxxxxxxxx>,
Borislav Petkov <bp@xxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>,
"H . Peter Anvin" <hpa@xxxxxxxxx>,
Kees Cook <keescook@xxxxxxxxxxxx>,
Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>,
Mike Rapoport <rppt@xxxxxxxxxx>,
Paul Menzel <pmenzel@xxxxxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Thomas Gleixner <tglx@xxxxxxxxxxxxx>,
David Woodhouse <dwmw@xxxxxxxxxxxx>
Subject: Re: [PATCH 07/32] x86/boot/e820: Print out sizes of E820 memory
ranges
Message-ID: <aDtIqi9IL04233s9@xxxxxxxxx>
References: <20250515120549.2820541-1-mingo@xxxxxxxxxx>
<20250515120549.2820541-8-mingo@xxxxxxxxxx>
<aCsjZW15Wh2lRC1q@xxxxxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <aCsjZW15Wh2lRC1q@xxxxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


* Andy Shevchenko <andy@xxxxxxxxxx> wrote:

> > Printing E820 maps with such details visualizes 'weird' ranges at a
> > glance, and gives users a better understanding of how large the
> > various ranges are, without having to perform hexadecimal
> > subtraction in their minds.
>
> Returning to the v1 discussion for sring_get_size(). Looking at its
> code it seems to me that you haven't tried to use it. It should give
> no .0 for the exact numbers. If it's not the case, please confirm
> that we have a bug/feature. If it's documented (read: we have a test
> case), then we would need an additional flag to avoid this behaviour
> for your case. No need to reinvent a wheel here.

I briefly looked at get_string_size(), and it insists on the KiB/GiB
sort of nonsense for base-2 sizes that we rarely use in x86 debug
output, nor do we want to.

And I'm not convinced about 'struct range' and '%pre' either: I'd
prefer to control both th data format and the output, while pra
seems to insist both on using 'struct range', and on naming the
%output 'range', right?

I'm not convinced such a 'struct range' over-abstraction will actually
simplify the code. The e820 debug printout code I extended in this
series basically follows the data structure patterns and nomenclature
of the e820 code itself.

It might or might not make sense to convert the e820 code to 'struct
range' in a followup series, but that is beyond the scope of this
series that refines the debug output.

Thanks,

Ingo


Return-Path: <linux-kernel+bounces-669203-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2544E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:22:39 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 4F67B160E37
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:22:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5197F19C553;
Sat, 31 May 2025 18:22:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FjoCNy3z"
Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E416815E97;
Sat, 31 May 2025 18:22:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748715751; cv=none; b=p8aUIJlOSb9Qzquly4fkFEyZF+agWA2SkYWfp8R5/OwEQLNN9PpdcsmcituPwV+PSF4AtgFKfHYpwgtBfA0tetSNSRmtkYBzQIVR2B38RZcMTRAHfs7jrTCMV/zuP1BvF7K548ni68dQ0vL0ot4OMhTEPgsqj7+8AFWOK0Alb7A=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748715751; c=relaxed/simple;
bh=dg+O7+x5qrsZkLg3PcdVY1LLGw/E3RgsyTphdcchYC0=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=cYx9gCNEY9GwEDLWRa+Jm6j+qSikQrzZmndMvNnDJqlTRIMouZvjrGqkGflFFxNJjDcSKYVEcYI0EyMepLSSvaua8QHS6xSDBMogVVHhmF2KxAhb4198HtOBRHnQYy6cSluJ7m18cz37TYgekH/QtMuYwWEuvAmzK1yrsO+ErAI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FjoCNy3z; arc=none smtp.client-ip=209.85.221.50
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-3a4f379662cso2204644f8f.0;
Sat, 31 May 2025 11:22:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748715748; x=1749320548; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:subject:cc:to:from:date:from:to:cc:subject:date
:message-id:reply-to;
bh=aA/Y5tc5Yhy+ZwWQ0xznRNGF+dEvA9lsJSOsZ0lFIBQ=;
b=FjoCNy3zIIc8CBaz52V2qxcig/qfEgPBhczGcCW7cGaNvdoQu7g8r1zRRGPRcqLukw
qNN5VgVTt78UuJqVgsKAeX9TPKEDiozLZc5xk5liQo01+QLqqT+gf83HEvh73w9wSoDS
9YiA+zKXejrofXWZ32WFXxFP4p1HAhtYrBLQwFoCW16wX1r8a5BQ5gOxf0YbFZBVub1l
uPCjsX+p4TDwh/ePIIAbkty4Dc/pY5FAqyTkTY8+AA01240FsG/p5R3ZgHx2zvrrW/ad
erdJ8CMmq107qscnWta4CUxaY9dqzL1NrNtzxUCg/a4IO8gZII5kXa3fbW7PS3+e25az
bKyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748715748; x=1749320548;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=aA/Y5tc5Yhy+ZwWQ0xznRNGF+dEvA9lsJSOsZ0lFIBQ=;
b=xO5CtI5dxBQhzfNgEMckmmu6Fe8krjMQvfq23r0YtiDSMYj03yy3t9W49aIk6iokmM
Op6mcDYzSj9JwL6YjlbqAcsM7SCwy4Y95q+/MWRODihggk7TH8e4PM719/YhyKAMKygR
10pU6ic1wEbS/lzZqoi18X/7lMJtEvKR8kj5+uVMrQ7YoqY5AN4RgdhEEGaCUhTVO750
ZtunOzoX8KVtTBRER1QHxJC58HOAgOPrKtsGHdWMRv7dzQmgcxWHt32RKBe4nd/pbQ/j
tNOrOWnDxu6+ZOchVr+s01biM3EUcZdPsWeEOPH4c0RvD+gIrLXFxRVi7b0swHoP9pc6
Na/Q==
X-Forwarded-Encrypted: i=1; AJvYcCW6204Umaf5ZuYEVK2HVZI/Lbx4qR2emFuhdeLJXNTbwCK3hj2PoeG3RWhs04sf70Lm4LD11V2vwAtM6h0=@vger.kernel.org, AJvYcCXEc39sa3N9UyNpwvxgYS4yjJSbvRWMahsMNU+xaeKxVtMQy8uflZmBhHAyfNcaHtRoC0wO/yCzGxNu1SURvCE1mQ==@vger.kernel.org
X-Gm-Message-State: AOJu0YyoxKfeBl/3yEHRsRaVvnczlFMOSjjdXQRM27kv5a5HlD7gwuEZ
clAxSmrEqzQQU2hAbqlV99PV9te2fMDOHhMsxexiR0ql6JNGr4rFFK3F
X-Gm-Gg: ASbGncsDgaGx+mQKQ+jrdyyhSFmSJDQfbdqvCrXt49YYLC2a1koqUg3BL5k8EWV+G7C
mOqSudwCl8RvwkPY/5A1jTpKZxCBPeLsXfNkC6ukgb3y9SiOLK19rc7r2PqbPN8R+GGXJ3G1cO5
yqLYVItZ8a5aRItlkv2xJL0IEm4k0TleK6v+bTHadt0P48r4jf97Z7EyoqHRMIQLAlMDbQTMguA
St8lVY5iE8x80xVws9yuwAH+HqKBqMoQaiSCIgjOXxrMa6YBRVbET2+ATJCtgEQ/g1tJmPSPdoR
5/QInAOOoWCRLjXvl6/ZUidqNGnS89E295jk8ULAUxG3wxa8PpELtTTwSPRAgRqLnSbbpnAhXJG
LiPfzivmbQuauzaVZSWS6IV2l
X-Google-Smtp-Source: AGHT+IGbBtA4NXJIIjNlWGD7+RYvJF/QR6rWPaKJGFwGHtSLn22Sbi+UT9O29RTBbYILlxC44pl4Gw==
X-Received: by 2002:a05:6000:2287:b0:3a4:f6fe:5244 with SMTP id ffacd0b85a97d-3a4fe154d04mr2104077f8f.12.1748715747984;
Sat, 31 May 2025 11:22:27 -0700 (PDT)
Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36])
by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a4efe6c9d4sm8885386f8f.38.2025.05.31.11.22.27
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:22:27 -0700 (PDT)
Date: Sat, 31 May 2025 19:22:26 +0100
From: David Laight <david.laight.linux@xxxxxxxxx>
To: Namhyung Kim <namhyung@xxxxxxxxxx>
Cc: Ian Rogers <irogers@xxxxxxxxxx>, Peter Zijlstra <peterz@xxxxxxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>,
Mark Rutland <mark.rutland@xxxxxxx>, Alexander Shishkin
<alexander.shishkin@xxxxxxxxxxxxxxx>, Adrian Hunter
<adrian.hunter@xxxxxxxxx>, Kan Liang <kan.liang@xxxxxxxxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, linux-perf-users@xxxxxxxxxxxxxxx
Subject: Re: [RFC PATCH v1] perf build: Fix build for clang's
-Wunreachable-code
Message-ID: <20250531192226.6af9bbde@pumpkin>
In-Reply-To: <aDoyPbQ38vZTCaNn@xxxxxxxxxx>
References: <20250410202647.1899125-1-irogers@xxxxxxxxxx>
<Z_mK9BVv16MT7shL@z2>
<CAP-5=fWykL-01S=35zz-6JASbM_cQkx6PHdKS7pJAX0=JBTuNQ@xxxxxxxxxxxxxx>
<CAP-5=fWFYS7-FcbyJ5Z5U2rqA7eYwwJ4dMf90TUzwJ0Shh2yxA@xxxxxxxxxxxxxx>
<aDdU1npHL2Vczhsa@xxxxxxxxxx>
<CAP-5=fUycjUUWW=hoSSvxfUVPXcqAk5KHnknFuUDOr7+Zf=M2A@xxxxxxxxxxxxxx>
<aDdqcfuAuk78eKXD@xxxxxxxxxx>
<CAP-5=fUX-gSv0q_j59bG19=dnaCPMeATtFgM0bPMSP8DKZWRJQ@xxxxxxxxxxxxxx>
<aDeHN4DeYS3i-5jY@xxxxxxxxxx>
<CAP-5=fW0g_bhmHm-uyVRja7dhkw47K-PLAx5iubQEm4X+vTSAQ@xxxxxxxxxxxxxx>
<aDoyPbQ38vZTCaNn@xxxxxxxxxx>
X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 15:33:33 -0700
Namhyung Kim <namhyung@xxxxxxxxxx> wrote:

...
> > > No, I meant we may not need the __builtin_unreachable() at the callsites.
> > >
> > > Would it complain this code?
> > >
> > > if (some_bad_option_use)
> > > usage_with_options(...);
> > >
> > > /* normal code path */
> >
> > Right that would fix -Wunreachable, but the existing code would be:
> >
> > if (some_bad_option_use) {
> > usage_with_options(...);
> > exit(..);
> > }
> > /* normal code path */
> >
> > Letting you know that "normal code path" couldn't be fallen into after
> > usage_with_options(...). To make the behavior more obvious we could
> > rename usage_with_options():
> >
> > if (some_bad_option_use)
> > usage_with_options_and_exit(...);
> >
> > /* normal code path */
> >
> > What I've done is:
> >
> > if (some_bad_option_use) {
> > usage_with_options(...);
> > __builtin_unreachable();
> > }
> > /* normal code path */

Isn't that just wrong?
Doesn't __builtin_unreachable() tell the compiler the code can't be executed.
In this case you want the opposite - something that the compiler will
whinge about if it finds a path that does execute the code.

In terms of source code readability it is a also horrid.
It is pretty common for an application to have a lot of 'usage' errors
and you want them to take as little vertical code space as possible.
That is the whole reason why it is common for a usage() function to
call exit() rather than return.

David

> >
> > My reasoning is that usage_with_options() doesn't obviously on the
> > face of it call exit and never return. To make that clear we could add
> > a comment:
> >
> > if (some_bad_option_use) {
> > usage_with_options(...);
> > /* usage_with_options never returns as it always calls exit */
> > }
> > /* normal code path */
> >
> > But my preference is to use __builtin_unreachable as that is the same
> > as the comment but is also something the compiler can trap on were it
> > not true.
>
> I see, thanks for the explanation. That part looks ok then.
>
> Thanks,
> Namhyung
>
>



Return-Path: <linux-kernel+bounces-669204-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 305E441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:27:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 01940189EA8E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:27:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7208C19CD13;
Sat, 31 May 2025 18:27:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nMxIR4yn"
Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id D31A88F40;
Sat, 31 May 2025 18:27:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716029; cv=none; b=AlHP5rlOZvSBdpw/9slfie7pmbOS7nPodFCP/wjigg730GrOUwJZPYp3XYiCaAjKidc5XxOuJlAE2F5Ns+D7zjSyd4XQDVA8G9X7cvXKfgDrr6eRzRDx4g2vqTG+ahNo9XxuGRmoyb+sqOsln0kJLlgu3uInjYeLsEG0myAgozQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716029; c=relaxed/simple;
bh=ZOeDWXgXrHFqlu9o3PxRq5KOYpnvjmgKckvdPePoi6s=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=JhXwwCpkbqShVyYF4i/2xMrcLItec8p+ASpfX4aZHycQvZTZTs20MtcKz8EKy5pl43x5L6V8QuG1nFRSf64c13RucDoo8CsKu8jI/xOKebAhhGEKUlgQBGFObxf9qOoi7yjop2SohmdgwoY7Ri5pLL5xGxJzlqLbvmdpn4yW5NM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nMxIR4yn; arc=none smtp.client-ip=209.85.128.47
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-451d3f72391so3846045e9.3;
Sat, 31 May 2025 11:27:07 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748716026; x=1749320826; darn=vger.kernel.org;
h=in-reply-to:content-disposition:mime-version:references:message-id
:subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to;
bh=05RESsPmrzkuTqXqpIc5GsOlAsLgZ3bjJiYGP08CxsA=;
b=nMxIR4ynikYRpQ8gWuAKCCtdryfw90ZDMcgIHPad2MQ29XBxFUvNjJeXA7irRMwYJs
Z+1alXbXdTnZepgPIn+JYMc/tQYrG3qpuqgU1UtBjNQF9e60Y78bt2SbMZRMN5108ZVK
oDzYxbyC1B07W5BW49xHjTSakkzovLO3jVBZ5dukQrxgQJ8RXVemywUpuqGZ7IlBwpGT
Cj7vrUSuUoIdXBCry4xhqcaZC3GonewmTA1XwyP9QkWXFTMVHQnShflWny2nS2i4yNap
I5srDw8CYoANwYQIhQNdfHQOmdsv+puwrVzRQQYKvR9OZXqaR/Lksng7/MeWQWSkQapF
GTLg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716026; x=1749320826;
h=in-reply-to:content-disposition:mime-version:references:message-id
:subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date
:message-id:reply-to;
bh=05RESsPmrzkuTqXqpIc5GsOlAsLgZ3bjJiYGP08CxsA=;
b=kvZBQ6WaK5bhnTuIvuAwMMvXFdXWoagN3FArVMS8mHmgNRFsk9uqRTyrQGNEPcP47r
Z53SheGb2QRmgkrmR6ROekLtzNq4qHYIw94L8/+g08E48u8JvAFnlimQDkfZjFtlneRP
hFNbCOkisixSFxCgBENBmvvaStTLjwwaJaJx8VKF54T5GAOOLzchAy47ULgFjvpzspLs
ToVqsipQAudbSXh96CPwpzn9yiShFd3lzZqlUPPlLesbHr5cQmEcctux1txMbYbRq7vM
qXoXbeZrTilH8ARb/ZJIB9d7VEr68y7wPLraR3is2mvmKa2gmaEgG65M3b/UE5osEOaS
8KGg==
X-Forwarded-Encrypted: i=1; AJvYcCUHl0Qwn1HG6NwQMZ64AEOpiMM8yVv6tDw1BirRYit7r3kOVxUO/Dtub3fWvNxkh6Yx0OGTwtoXcgE3DXM=@vger.kernel.org, AJvYcCXd88OZOe5JHfs7vvId7iarKpZARhb3lD+eCqo7L0PLhAhW1u8MB2D1YGRZIv0zG9v1uF8bAg/xIYCl@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yxsx3f4nELjNC7N18rr0pJ5JFRbhQ0RMD/KsiGOJzElPcvRzUq6
fxo4nxGpA68LNCfYWwGdM1w4M3F4L/Int7Uv9FYx8UjmcYFkf3cKVECD
X-Gm-Gg: ASbGncvrPVHAJ/BjUfqDuntI6Twf4Pu3zl2kCVV11W4p0/yEx2+FEn43j0mYlh5eGUt
lGgbU7QiSUAQVDevLEaxq2LAL+VcftMFIB87IbK3+R79Ls9c2Wi9aJU1d6h/tRp01bSzuN1/bYG
LyHxkpBGANSahgZxj+VUwVTuW26QgwmtaPtmtcb6B9zDdxQnjqTP1Ot832qf47/gapY3VXUpNIf
41YPvZtYEqhWqpjQ7NsVlefQx8J/PCmA7tJKgUEcdPFQIiZbPaqNtt/z7ZZeeqVcnZhOC3CheET
5qbZDjHi2JiKOsKy6lWrHeEhLZkUmtjY/8wJR9Zp2w2J+C7h/Q0WAbEk++QVFOu2
X-Google-Smtp-Source: AGHT+IG365FuJ1CqHc6DPYx6kl2K6EbX2FXiQrKnyScc7d84ZDsZKPlmAD7FOqJZV/xr8ZHOzEh4Bg==
X-Received: by 2002:a05:600c:608a:b0:43d:3df:42d8 with SMTP id 5b1f17b1804b1-450d87fd857mr57240395e9.6.1748716025785;
Sat, 31 May 2025 11:27:05 -0700 (PDT)
Received: from debian.local ([2a0a:ef40:eaf:3101:2d68:caee:7294:3fe1])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-450d7f8edf9sm57146225e9.3.2025.05.31.11.27.04
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:27:05 -0700 (PDT)
Date: Sat, 31 May 2025 19:27:03 +0100
From: Chris Bainbridge <chris.bainbridge@xxxxxxxxx>
To: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>,
linux-rtc@xxxxxxxxxxxxxxx,
Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>,
Mateusz =?utf-8?Q?Jo=C5=84czyk?= <mat.jonczyk@xxxxx>,
lkml <linux-kernel@xxxxxxxxxxxxxxx>,
Anna-Maria Behnsen <anna-maria@xxxxxxxxxxxxx>,
Frederic Weisbecker <frederic@xxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Subject: Re: [PATCH] timekeeping: Add a lockdep override in tick_freeze().
Message-ID: <aDtJ92foPUYmGheF@debian.local>
References: <20250330113202.GAZ-krsjAnurOlTcp-@fat_crate.local>
<87sempv17b.ffs@tglx>
<20250403135031.giGKVTEO@xxxxxxxxxxxxx>
<20250403193659.hhUTgJLH@xxxxxxxxxxxxx>
<87r029uh3j.ffs@tglx>
<20250404133429.pnAzf-eF@xxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250404133429.pnAzf-eF@xxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi,

I'm getting "WARNING: inconsistent lock state" on resume with this
commit (92e250c624ea37fde64bfd624fd2556f0d846f18):

[ 43.747069] ACPI: \_SB_.PEP_: Successfully transitioned to state screen off
[ 43.753611] ACPI: \_SB_.PEP_: Successfully transitioned to state lps0 ms entry
[ 43.753777] ACPI: \_SB_.PEP_: Successfully transitioned to state lps0 entry
[ 43.838479] amd_pmc AMDI0005:00: failed to set RTC: -22
[ 43.838489] PM: suspend-to-idle
[ 43.838542] amd_pmc: SMU idlemask s0i3: 0xc00e0eb5
[ 46.246882] Timekeeping suspended for 2.528 seconds
[ 46.249132] PM: Triggering wakeup from IRQ 9
[ 46.249292] ACPI: PM: ACPI fixed event wakeup
[ 46.249297] PM: resume from suspend-to-idle
[ 46.250801] amd_pmc AMDI0005:00: Last suspend didn't reach deepest state
[ 46.251096] ACPI: \_SB_.PEP_: Successfully transitioned to state lps0 exit
[ 46.257167] ACPI: \_SB_.PEP_: Successfully transitioned to state lps0 ms exit
[ 46.258450] ACPI: \_SB_.PEP_: Successfully transitioned to state screen on
[ 46.259652] ACPI: EC: interrupt unblocked
[ 46.291758] PM: noirq resume of devices complete after 32.885 msecs

[ 46.291907] ================================
[ 46.291909] WARNING: inconsistent lock state
[ 46.291911] 6.15.0-rc1-00002-g92e250c624ea #379 Not tainted
[ 46.291914] --------------------------------
[ 46.291915] inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
[ 46.291917] irq/9-acpi/142 [HC0[0]:SC0[0]:HE1:SE1] takes:
[ 46.291921] ffffffff88e48d18 (rtc_lock){?...}-{3:3}, at: cmos_interrupt+0x21/0x110
[ 46.291939] {IN-HARDIRQ-W} state was registered at:
[ 46.291941] lock_acquire+0xc9/0x2d0
[ 46.291946] _raw_spin_lock+0x30/0x40
[ 46.291951] cmos_interrupt+0x21/0x110
[ 46.291956] __handle_irq_event_percpu+0x81/0x290
[ 46.291962] handle_irq_event+0x38/0x70
[ 46.291966] handle_edge_irq+0x85/0x210
[ 46.291970] __common_interrupt+0x45/0xd0
[ 46.291973] common_interrupt+0x80/0xa0
[ 46.291977] asm_common_interrupt+0x26/0x40
[ 46.291981] cpuidle_enter_state+0x113/0x540
[ 46.291985] cpuidle_enter+0x2d/0x40
[ 46.291989] do_idle+0x1f5/0x250
[ 46.291992] cpu_startup_entry+0x29/0x30
[ 46.291994] start_secondary+0x10c/0x130
[ 46.291998] common_startup_64+0x13e/0x141
[ 46.292002] irq event stamp: 877
[ 46.292004] hardirqs last enabled at (877): [<ffffffff88778a90>] _raw_spin_unlock_irqrestore+0x40/0x50
[ 46.292010] hardirqs last disabled at (876): [<ffffffff8877884c>] _raw_spin_lock_irqsave+0x5c/0x60
[ 46.292014] softirqs last enabled at (362): [<ffffffff87b0dc3c>] __irq_exit_rcu+0xcc/0xf0
[ 46.292019] softirqs last disabled at (353): [<ffffffff87b0dc3c>] __irq_exit_rcu+0xcc/0xf0
[ 46.292022]
other info that might help us debug this:
[ 46.292024] Possible unsafe locking scenario:

[ 46.292025] CPU0
[ 46.292026] ----
[ 46.292027] lock(rtc_lock);
[ 46.292029] <Interrupt>
[ 46.292030] lock(rtc_lock);
[ 46.292032]
*** DEADLOCK ***

[ 46.292033] no locks held by irq/9-acpi/142.
[ 46.292035]
stack backtrace:
[ 46.292040] CPU: 1 UID: 0 PID: 142 Comm: irq/9-acpi Not tainted 6.15.0-rc1-00002-g92e250c624ea #379 PREEMPT(voluntary)
[ 46.292046] Hardware name: HP HP Pavilion Aero Laptop 13-be0xxx/8916, BIOS F.17 12/18/2024
[ 46.292049] Call Trace:
[ 46.292052] <TASK>
[ 46.292058] dump_stack_lvl+0x6e/0x90
[ 46.292063] print_usage_bug.part.0+0x22c/0x2c0
[ 46.292067] mark_lock+0x6f7/0x890
[ 46.292072] ? __lock_acquire+0x449/0x21c0
[ 46.292077] __lock_acquire+0x7e5/0x21c0
[ 46.292080] ? psi_task_switch+0x10a/0x330
[ 46.292086] lock_acquire+0xc9/0x2d0
[ 46.292088] ? cmos_interrupt+0x21/0x110
[ 46.292094] ? acpi_write_bit_register+0x79/0xf0
[ 46.292102] _raw_spin_lock+0x30/0x40
[ 46.292106] ? cmos_interrupt+0x21/0x110
[ 46.292110] cmos_interrupt+0x21/0x110
[ 46.292115] rtc_handler+0x28/0xc0
[ 46.292120] acpi_ev_fixed_event_detect+0xc8/0x140
[ 46.292127] ? irq_thread+0xa4/0x340
[ 46.292129] acpi_ev_sci_xrupt_handler+0x13/0x40
[ 46.292132] acpi_irq+0x16/0x30
[ 46.292136] irq_thread_fn+0x1d/0x50
[ 46.292139] irq_thread+0x1d5/0x340
[ 46.292140] ? irq_copy_pending.isra.0+0x70/0x70
[ 46.292144] ? irq_finalize_oneshot.part.0+0xc0/0xc0
[ 46.292147] ? irq_forced_thread_fn+0x70/0x70
[ 46.292149] kthread+0x10a/0x250
[ 46.292154] ? kthreads_online_cpu+0x130/0x130
[ 46.292158] ret_from_fork+0x31/0x50
[ 46.292162] ? kthreads_online_cpu+0x130/0x130
[ 46.292166] ret_from_fork_asm+0x11/0x20
[ 46.292174] </TASK>
[ 46.292918] PM: early resume of devices complete after 0.829 msecs


Return-Path: <linux-kernel+bounces-669205-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D4DDD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:27:55 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 6A3B416E328
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:27:56 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 2A5ED19DF4C;
Sat, 31 May 2025 18:27:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="LOt1W4ok"
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131])
(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 C305319D06B
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:27:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716070; cv=none; b=GIURQPYaun1cqo9K5HFqWBEhIgLDuh2hWCyYRNIEx0GdllBfN2jboltx6V26WX7eR+pql9DzsS4st7NwnA48aYGgsxNFpGinU/lEPHjh3aY2BYr7GXUHKQCb2lXYWpELKPUEMUnxIRK+IpMnR4puSiZCOaQoy7F64sDDacjMwuY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716070; c=relaxed/simple;
bh=QVyTy39kGa7O/ePiyt+9nmFnLXJK/m+e+8pa1txDyEI=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=GXYxOEZ587X8t+n6VYLRBaVjAbR4xirz/H2+A6GheKR/Owwd//b8xju9AlQ5XwgLADj48i1KTT2dwMId/XktQDOBzF0ED7JZ9abaxhqG/GfMUmiUBQDDc54c92bLjGP63fQ33b7WdUIyg2LGV+8LHirYCNcJQRQR3zC25yqved0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=LOt1W4ok; arc=none smtp.client-ip=205.220.180.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279868.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54VI7JO2021374
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:27:40 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
dNLoxJaeNa7H9bgjtofmrjyfeoUO0fEK6F2yize1zNw=; b=LOt1W4okxakbYLOA
+Wk4LRUaEH5afMT2rxrcAR0ehLnk0BQmTiKh3x3YqPwgqnsXSToeEzfR9wHASoHp
KUgabv5mkXnIK/LodEMYUssWg/PgXv7ceS9crjh/KoeMdFFCIZ9UcA7YL6tjUoU6
92YSDS76VRgKVeUlgZ1CPNtd8z/EUGR4lWACPptAgMZb5L75eJsRw13FI7GhaRyx
oz8kITxX6ysSpQPFfXBnRra0rXELn3rs3ia53CKwu03mo1QxEMSAf8OfkmqIpMzc
DyTWrnfQUGOOgIXDlXX3uIZPmEpaj54KaGnxUB0OPuDyc2R+/R/aYVFON+8zAO6+
9mBQKw==
Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytm6967d-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:27:39 +0000 (GMT)
Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4a517ff0ebdso1725991cf.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:27:39 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716059; x=1749320859;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=dNLoxJaeNa7H9bgjtofmrjyfeoUO0fEK6F2yize1zNw=;
b=PBQiiYoo2XNEmmMns00Qj9T0iEO1tPUuMqmULrdzVei9AjTy7UMS/PrTK62PUAmiEe
krFNUHPpgw3os0MJu/mjQdbAtRW/bqlbBR9HJHnL2wfLJQ5zWfwqBbC2vBG8OWJI2aeP
qlM+AiDVHMDRHkuyefAmYt5cmLOA7LVGciYk7y+nIEJ5rkg9bwboX6w6OBDFxc8VDBmt
I3k/HUhFjuNeYUtb/aQw1SCCHL13CYDUqsIMDXKk1vK90fQ2J1nFc0dP1rMu3IYjqfiI
PNJ29B+lWdTXYka1A63Satr6u7sH9alBt3lZHTfHL91KL9dhzOTz/hE+3a3ZscgF9B87
47Lw==
X-Forwarded-Encrypted: i=1; AJvYcCWOesNTdmhFrg5SqGxnH9G4DD1/D7klr7QHniRu9+dPgXOYsEy3JubQTkvoZcX5tcOt2nyNBR2Nud8z2wA=@vger.kernel.org
X-Gm-Message-State: AOJu0YzApsV9b9UhQUWjvHWOfR5sw/Esnmh71u78ULD6xHh68pfFibpI
p0INSIxaeCeQ/CepJEJiqcnXxWr879iYeHE4AePooU+cI6HNVRIjUJjIKbhMVLndYfyRZA3BvK9
EXHOlxrFHTqrFpeFfe6R+R6wClDvWnT0DhGAMjlwfe3WjbOj4NzJUKv04oohgxwImzg4=
X-Gm-Gg: ASbGncshkqI0Hr5yzkjJIhtRFW1KRS9Qy5dIPNuUmrL75WlYxv7Sgu2WXZjRoT3fD6r
e4rWOlKCaMxemTJ0HmfWRkLn6TKMW6v0ifEqvjTakiQkf9zuNODbdSXREKP0aD0FItWRTKaGNWd
aV5w7TYkX294v6bP+XoE8TdFOX7qP4Rs/qRDbJ/WOguWaDBJvy9GBASD4VrRkj4b0UnZrxrUFH5
IO/LdsBP/ZCQpRRDIeWdxmAKbs5luOR4lN/jtfOlSYNhddGbHeWygGV9Q2TqwRhL8E+N5eKstZi
UF5mfycGBJJQCnJlT1bYbe5VqzQvM9mVhU+PDwUM3lr1ht5KC3Qu+kNaAcDpm/l03A==
X-Received: by 2002:a05:620a:298c:b0:7c0:cc94:46c4 with SMTP id af79cd13be357-7d0a3d775a0mr413430885a.2.1748716059142;
Sat, 31 May 2025 11:27:39 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IG4okjwDO7D+IbmXbi6WJ92L36mIWN1ZbbjDie9mCBjaikBKTLN4+hEu+tJwMEbwza5FLtwWA==
X-Received: by 2002:a05:620a:298c:b0:7c0:cc94:46c4 with SMTP id af79cd13be357-7d0a3d775a0mr413428085a.2.1748716058574;
Sat, 31 May 2025 11:27:38 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d7fef7dsm530456866b.6.2025.05.31.11.27.36
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 11:27:37 -0700 (PDT)
Message-ID: <d3ee0492-afca-471f-9dc3-456a94bfa355@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 20:27:36 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 4/8] arm64: dts: qcom: qcs6490-audioreach: Modify LPASS
macros clock settings for audioreach
To: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Linus Walleij <linus.walleij@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley
<conor+dt@xxxxxxxxxx>,
Srinivas Kandagatla <srini@xxxxxxxxxx>,
Liam Girdwood <lgirdwood@xxxxxxxxx>, Mark Brown <broonie@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>
Cc: cros-qcom-dts-watchers@xxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-sound@xxxxxxxxxxxxxxx,
kernel@xxxxxxxxxxxxxxxx, Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
References: <20250527111227.2318021-1-quic_pkumpatl@xxxxxxxxxxx>
<20250527111227.2318021-5-quic_pkumpatl@xxxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250527111227.2318021-5-quic_pkumpatl@xxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDE2OCBTYWx0ZWRfXyH5L5AvXoNvn
elQdP/+/wwHvtv7QQXJK42PPhfOsY21c/5MGTkLZ4Er7JqQVaFrwBWGfB5kpb7QJSsbN9+IWCke
gjj4UsuwghrAc32itahqjkswbWRYEq4EXIqhLa0fw6Vpny1XmcKPl+YpWEXixrjPgQGxSs+qpLZ
xwZBZjbVwQB6dDLpY57fiH6u3/5EyvBRvM0Atf7gVFYTtAQtvw0EIEy88nS3cVRQHNsf2ZNwjIM
1wjNg3BeUgfLrVbYc5prjbn0gsIRdryY1vpxIk8Hde4N4fh9OJ35fFPI92BVSjrMPfR33T9SptD
NqOLNlFs0jA9i7+ceydevy5W5tL/rgaVGbrxDx86NUUByi5BphPW6VE0NErAfVzZ4TlLvbauO+L
Hd26W/JjbVvmVY7vCaR7TrH5HjZXBHeV9RYQEHyDueixpHzCqPUqTgEyAC5AGV0KT8QNrQVO
X-Authority-Analysis: v=2.4 cv=EOIG00ZC c=1 sm=1 tr=0 ts=683b4a1b cx=c_pps
a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8
a=IZQIRLw8iM99TnyeTF4A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22
a=TjNXssC_j7lpFel5tvFf:22
X-Proofpoint-GUID: _vZa5Wh_QeyaOcojlBgmzv5BRO6ECLQ2
X-Proofpoint-ORIG-GUID: _vZa5Wh_QeyaOcojlBgmzv5BRO6ECLQ2
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_09,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
malwarescore=0 mlxlogscore=897 adultscore=0 lowpriorityscore=0 mlxscore=0
phishscore=0 impostorscore=0 spamscore=0 bulkscore=0 priorityscore=1501
clxscore=1015 suspectscore=0 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505160000
definitions=main-2505310168
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/27/25 1:12 PM, Prasad Kumpatla wrote:
> From: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
>
> Modify and enable WSA, VA, RX and TX lpass macros and lpass_tlmm clock
> settings. For audioreach solution mclk, npl and fsgen clocks are enabled
> through the q6prm clock driver.
>
> For qcs6490 RX drives clk from TX CORE which is mandated from DSP side,
> Unlike dedicated core clocks. Core TX clk is used for both RX and
> WSA as per DSP recommendations.
>
> Signed-off-by: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
> Co-developed-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
> Signed-off-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
> ---

Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Konrad


Return-Path: <linux-kernel+bounces-669206-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7BD0741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:28:17 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id C6D1F7ADE18
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:26:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 489DF19D8A8;
Sat, 31 May 2025 18:28:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jrVRKdEd"
Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C20BB199FD0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:28:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716087; cv=none; b=DGZJMdVDk2nOfZksHlq/j6Th0razXhBQJYljxKKZTnjTNSwdissNl7dah0sBAkj6XC50t8NKi8dxAAVZAHccKZlMMP+3mdv5MPCEMhI70ABWiGkkTByV9kl2l7+4NzZ272GMNBycs/djp1088Ho1NmJ99fa/AT1sSTQQ2N5UuY0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716087; c=relaxed/simple;
bh=dk3fI/RFl3JBQlIF7cdxOmi75SUbSYf9k2jysCiZRo8=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=mHtP8FfoJO+ccCqxr8q4+U5yeSKtZICQ3aDqp/nBa9KivFobwmGfRy/A+RsGVvFtu5lP450sOfxB8Vr++Mi8jTCBF6cDaRGT2xKhemphhV8q4T0WneH+7+fQy+b7GbbeKCfblm6S/jAVK55REBj5WtbEwyrXZOedd8aJycOmSQY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jrVRKdEd; arc=none smtp.client-ip=209.85.221.48
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-3a366843fa6so1604437f8f.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:28:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748716083; x=1749320883; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:subject:cc:to:from:date:from:to:cc:subject:date
:message-id:reply-to;
bh=1YdbwTnzAydK1ENdR81ZzCGwAItUOCi2suDZhdSPMmY=;
b=jrVRKdEd4DmCRUMdSEMO7T+Pw81VDlJDsnUBXyCZR0UdjFsuUJB/74e0fz3zrKI2I5
xFa27tv27yTm05hJgkrdDJ2JFIkHbLdYL6djqKF87+/rT5bK3CtZ2l4bBpOBf7YWdDJ3
zu1ixxHzKxMV8AK5PxHW5qG0aP7BEBLCZ8aTMldp6I9TwegbzhAqiUh/nEosiDkAYGZO
lOpKkrvdi9vqaE1ACjodwS5ENs3+ERypS7k4FmJAUjqtboA5NczuC0Uol53bhs16SBtq
4/ucJ8xueWZIYwxevvlXo25Z+CqWnQP+rGz0E8tVnLZNh3rFksfcm7regm77UK4UjZc7
b95w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716083; x=1749320883;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:subject:cc:to:from:date:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=1YdbwTnzAydK1ENdR81ZzCGwAItUOCi2suDZhdSPMmY=;
b=ZIoRigRZPYHkzjj20bZuiWRIVY7abFgibcYaddVA2Bo+z8EmgXGv/BK76d1n60JcQb
LZUZ6drxPynLzOKPao4XfvPFojne/JZZyzjOnB1mWI+SIv0gdJNrLW6IaG/UpcPzKRF1
AhvisE/3rtvcjsy8b3wZyFCyAAFKwHT5XzmQyhDUbk6ghAOtxgKH/Q17liAqQHWA5MLA
I9esFj7OPiAg5B7RWRIfNv8EyVq8ojAZBwSOq3Oq7BNAKkZazwtXczhzYkLe/GNwGdU4
jvefYdhsUQRqjpt1uaUiRZ5wKq0TtoQiICkbL94wVEgBCzZKRwnWbDxjRPWN85qi/rBg
nRLQ==
X-Forwarded-Encrypted: i=1; AJvYcCXWT6REO+7zqlpicIBVQP1VxcqtARHDQusNtqGe4YJI4s+sG4GzKmQc3c0l3dIxORrmP93p3F115G9dtgk=@vger.kernel.org
X-Gm-Message-State: AOJu0YwnW1zTIGCWKJCtF82WnwF8Aayh/HJiguv0fPcr4uD0lRLrj89/
T29NccUCcpmuZSgOdu+KdmTalGp7dB20nCgg5sczna4vOeDqaF8Xou2S
X-Gm-Gg: ASbGncvB0+U6wWVtEJ86sAqLD0s+5ahCTiAyg0o6HCxREuQbDIGWn3bp5ypDkZuAae1
n1AKG6DLBg2Tr7R/44C3V3aCDJ6byUNLFNishWheGdo8zMLSZyw9jKiaMvqftRWbvPXHP6HK3E6
/u/7vBzm999TJ6kfzYWh14FGkQjKbO4ajXc2fRI+70bw9EZDteCGMtRLwFEQ36h8swnwU5iYvyq
Pzye/jka3RciE1KVHCkKhcLw8ko62LSykupwvyUSmlK9pFLL5+N3Hry48hcV4/bJMGgnDOyITbC
SN0r7YAmv+g00ou9+Ne7iUi7CdJxsg63TOLKh7/qJSHCXQU0b7rH+HWJ5AReyCVI+xRtJI4FPH6
lglKYt0LB1DT6NQ==
X-Google-Smtp-Source: AGHT+IHWo5ANP+dqauzoVoWuJ4LwCO1gMzfyDDlO2VCYKfnBp1d20CxKeSOkRv6fVimOUljOEpnsvw==
X-Received: by 2002:adf:a111:0:b0:3a4:f2aa:2e32 with SMTP id ffacd0b85a97d-3a4f89dcc2fmr4588914f8f.44.1748716082823;
Sat, 31 May 2025 11:28:02 -0700 (PDT)
Received: from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36])
by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a4efe2b35dsm8766372f8f.0.2025.05.31.11.28.02
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:28:02 -0700 (PDT)
Date: Sat, 31 May 2025 19:28:01 +0100
From: David Laight <david.laight.linux@xxxxxxxxx>
To: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= <cleger@xxxxxxxxxxxx>
Cc: linux-riscv@xxxxxxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, Paul
Walmsley <paul.walmsley@xxxxxxxxxx>, Palmer Dabbelt <palmer@xxxxxxxxxxx>,
Albert Ou <aou@xxxxxxxxxxxxxxxxx>, Alexandre Ghiti <alex@xxxxxxxx>
Subject: Re: [PATCH 2/2] riscv: uaccess: do not do misaligned accesses in
get/put_user()
Message-ID: <20250531192801.5d6329c3@pumpkin>
In-Reply-To: <20250530205658.624195-3-cleger@xxxxxxxxxxxx>
References: <20250530205658.624195-1-cleger@xxxxxxxxxxxx>
<20250530205658.624195-3-cleger@xxxxxxxxxxxx>
X-Mailer: Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 22:56:58 +0200
Cl=C3=A9ment L=C3=A9ger <cleger@xxxxxxxxxxxx> wrote:

> Doing misaligned access to userspace memory would make a trap on
> platform where it is emulated. Latest fixes removed the kernel
> capability to do unaligned accesses to userspace memory safely since
> interrupts are kept disabled at all time during that. Thus doing so
> would crash the kernel.
>=20
> Such behavior was detected with GET_UNALIGN_CTL() that was doing
> a put_user() with an unsigned long* address that should have been an
> unsigned int*. Reenabling kernel misaligned access emulation is a bit
> risky and it would also degrade performances. Rather than doing that,
> we will try to avoid any misaligned accessed by using copy_from/to_user()
> which does not do any misaligned accesses. This can be done only for
> !CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS and thus allows to only generate
> a bit more code for this config.

For get_user() you are much better off reading the two words that contain
the value and then doing 'shift' and 'or' to get the correct value.

Even for put_user() doing the explicit byte accesses will be faster than
going though the generic copy_to/from_user() function.

David

>=20
> Signed-off-by: Cl=C3=A9ment L=C3=A9ger <cleger@xxxxxxxxxxxx>
> ---
> arch/riscv/include/asm/uaccess.h | 28 ++++++++++++++++++++++------
> 1 file changed, 22 insertions(+), 6 deletions(-)
>=20
> diff --git a/arch/riscv/include/asm/uaccess.h b/arch/riscv/include/asm/ua=
ccess.h
> index 046de7ced09c..b542c05f394f 100644
> --- a/arch/riscv/include/asm/uaccess.h
> +++ b/arch/riscv/include/asm/uaccess.h
> @@ -169,8 +169,21 @@ do { \
> =20
> #endif /* CONFIG_64BIT */
> =20
> +unsigned long __must_check __asm_copy_to_user(void __user *to,
> + const void *from, unsigned long n);
> +unsigned long __must_check __asm_copy_from_user(void *to,
> + const void __user *from, unsigned long n);
> +
> #define __get_user_nocheck(x, __gu_ptr, label) \
> do { \
> + if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) { \
> + if (!IS_ALIGNED((uintptr_t)__gu_ptr, sizeof(*__gu_ptr))) { \
> + if (__asm_copy_from_user(&(x), __gu_ptr, sizeof(*__gu_ptr))) \
> + goto label; \
> + else \
> + break; \
> + } \
> + } \
> switch (sizeof(*__gu_ptr)) { \
> case 1: \
> __get_user_asm("lb", (x), __gu_ptr, label); \
> @@ -297,6 +310,15 @@ do { \
> =20
> #define __put_user_nocheck(x, __gu_ptr, label) \
> do { \
> + if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)) { \
> + if (!IS_ALIGNED((uintptr_t)__gu_ptr, sizeof(*__gu_ptr))) { \
> + unsigned long val =3D (unsigned long)(x); \
> + if (__asm_copy_to_user(__gu_ptr, &(val), sizeof(*__gu_ptr))) \
> + goto label; \
> + else \
> + break; \
> + } \
> + } \
> switch (sizeof(*__gu_ptr)) { \
> case 1: \
> __put_user_asm("sb", (x), __gu_ptr, label); \
> @@ -385,12 +407,6 @@ err_label: \
> -EFAULT; \
> })
> =20
> -
> -unsigned long __must_check __asm_copy_to_user(void __user *to,
> - const void *from, unsigned long n);
> -unsigned long __must_check __asm_copy_from_user(void *to,
> - const void __user *from, unsigned long n);
> -
> static inline unsigned long
> raw_copy_from_user(void *to, const void __user *from, unsigned long n)
> {



Return-Path: <linux-kernel+bounces-669207-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 00DE741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:28:45 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id AA2389E0D7A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:28:24 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1945E19D89B;
Sat, 31 May 2025 18:28:39 +0000 (UTC)
Received: from mail-il1-f207.google.com (mail-il1-f207.google.com [209.85.166.207])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id E368B7260A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:28:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.207
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716118; cv=none; b=VCKOSxKM8d1FBAN0LEktWmHq/OJ4TvpOAipANUECRFoTXM2efBHBGpKAEunT4wkrPXOVQn7hukYAn0sCouUM5MzVNaiVzrx6F7gwoMxOePVQsBA6oYJtRZYa/64FTL06tdWg7M/steC9+wB5rOVrcSYT+PbJQlioFrs5Qf2Feak=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716118; c=relaxed/simple;
bh=KzSffM1aevSBmkvD6jkFGDQpUHk+Z6oxjiHShe29E7E=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=ETh7yhQq2GUnIFpBYe1XDK6iFGsDUhhA3ZERpG9Pl/C8zlj7V4w8mAoq7jGbHq1553DTiEi16xswcYNKwuqSHlh9h2+7lFp/rQNzR7QSrk74oN8xGeFDzpnwr62bCQOQ9syobw+Bw5Q+eYG6mK7QCx4vR3med6kK46BknHgEYjU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.207
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f207.google.com with SMTP id e9e14a558f8ab-3da7c9e4bcfso26661595ab.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:28:36 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716116; x=1749320916;
h=content-transfer-encoding:to:from:subject:message-id:date
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=TZWE0pzSq45hRnTBBprYcArathFtef7VGWSlEoL/nWM=;
b=O3bo9PYCWHmaR3DcitkxaEWg5Hh3Oz4twM0M71szfAYmLiJ+0KBxUtkhxzpIwdx5QE
83o4nuSJO+UpJF4Q1jst7y7d1xAjeoHpV4hPU6kuCQAETMDY6V1fC+kqpBiSbt/8DmtM
S1Yhu7uNu3eZtxl4ztWsauVWIKrWnQNu9cMBbu+MgvwOi7kCYWxEy4Z5FfvkVcMbXw2o
9M+CChGclI8VRruetOxspmNoliBFuJFiDEru8W7AKGQJXHCEwNtVZA6gvdAj+sliI0gC
iqm4e1+JxzVfxmPmzFL6/C8KtYroi9htsDTyhNfK13w5HSRxBgukel0pygWPh3RUpjem
ohTA==
X-Forwarded-Encrypted: i=1; AJvYcCVYE+hjyzbtDGnuqx61IV5NO3nnkh7lqGbdPbv+PslCf0s7H5opqDf7JmkZobxucrKLA7aR4K8Oyp9knkw=@vger.kernel.org
X-Gm-Message-State: AOJu0Yyuuj2xrpc8LEVN8hjoepLi2c7YM8DdKS9qlGxLj+ZZ5/7Shpq2
WgPmVKAul5JZQWAGHfhVwGFxraFx71l431A17m/bW7KfvYbg/EhZz2BF+4cGG6lcSrtbnr/Ke2N
csL654mI0LUaZV8wBXsn9ESigozZGKiGTEOjLgj4nvPzb7vOpFsGWVYvJDQM=
X-Google-Smtp-Source: AGHT+IHRYtGaTQNH2dyAo3CMNaycgyyhx42ObEZBhpal3YuvV0mkrdnkAFmA4sZYx0yqzK5O6K3zV3OiCZcO4cNrUGEx5WpXjYR3
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:3a04:b0:3dc:7240:94a6 with SMTP id
e9e14a558f8ab-3dda33367a8mr19543635ab.3.1748716115952; Sat, 31 May 2025
11:28:35 -0700 (PDT)
Date: Sat, 31 May 2025 11:28:35 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b4a53.a00a0220.d8eae.001c.GAE@xxxxxxxxxx>
Subject: [syzbot] [bcachefs?] WARNING in bch2_fs_journal_start
From: syzbot <syzbot+527519da96e15b411c73@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: kent.overstreet@xxxxxxxxx, linux-bcachefs@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: b1456f6dc167 Merge tag 'timers-core-2025-05-25' of git://g.=
.
git tree: upstream
console+strace: https://syzkaller.appspot.com/x/log.txt?x=3D17256df4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=3De178ebeb0aded44=
c
dashboard link: https://syzkaller.appspot.com/bug?extid=3D527519da96e15b411=
c73
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-=
1~exp1~20250514183223.118), Debian LLD 20.1.6
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=3D1560048258000=
0
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=3D1409a6d4580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/501bf321b156/disk-=
b1456f6d.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/d3c8e81517e2/vmlinux-=
b1456f6d.xz
kernel image: https://storage.googleapis.com/syzbot-assets/e6e8960905fd/bzI=
mage-b1456f6d.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/674711f8120d=
/mount_0.gz

The issue was bisected to:

commit 521f9584c2bd48198ac9d9b99a372b1306f3bb97
Author: Kent Overstreet <kent.overstreet@xxxxxxxxx>
Date: Fri May 23 18:03:06 2025 +0000

bcachefs: Ensure we don't use a blacklisted journal seq

bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=3D170266d45800=
00
final oops: https://syzkaller.appspot.com/x/report.txt?x=3D148266d45800=
00
console output: https://syzkaller.appspot.com/x/log.txt?x=3D108266d4580000

IMPORTANT: if you fix the issue, please add the following tag to the commit=
:
Reported-by: syzbot+527519da96e15b411c73@xxxxxxxxxxxxxxxxxxxxxxxxx
Fixes: 521f9584c2bd ("bcachefs: Ensure we don't use a blacklisted journal s=
eq")

bcachefs (loop0): Version upgrade required:
Version upgrade from 0.24: unwritten_extents to 1.7: mi_btree_bitmap incomp=
lete
Doing incompatible version upgrade from 0.24: unwritten_extents to 1.28: in=
ode_has_case_insensitive
running recovery passes: check_allocations,check_alloc_info,check_lrus,ch=
eck_btree_backpointers,check_backpointers_to_extents,check_extents_to_backp=
ointers,check_alloc_to_lru_refs,bucket_gens_init,check_snapshot_trees,check=
_snapshots,check_subvols,check_subvol_children,delete_dead_snapshots,check_=
inodes,check_extents,check_indirect_extents,check_dirents,check_xattrs,chec=
k_root,check_unreachable_inodes,check_subvolume_structure,check_directory_s=
tructure,check_nlinks,check_rebalance_work,set_fs_needs_rebalance
------------[ cut here ]------------
WARNING: CPU: 1 PID: 5823 at mm/slub.c:5024 __kvmalloc_node_noprof+0x4ca/0x=
600 mm/slub.c:5024
Modules linked in:
CPU: 1 UID: 0 PID: 5823 Comm: syz-executor230 Not tainted 6.15.0-syzkaller-=
02198-gb1456f6dc167 #0 PREEMPT(full)=20
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Goo=
gle 05/07/2025
RIP: 0010:__kvmalloc_node_noprof+0x4ca/0x600 mm/slub.c:5024
Code: 0f 85 36 fc ff ff 31 c0 41 f6 c5 10 0f 94 c0 4c 8d 34 45 01 00 00 00 =
e9 20 fc ff ff 41 f7 c0 00 20 00 00 0f 85 8f fe ff ff 90 <0f> 0b 90 31 db e=
9 f2 fe ff ff 48 c7 c7 80 86 04 8e 48 89 de e8 0d
RSP: 0018:ffffc900043af1d8 EFLAGS: 00010246
RAX: 0000000000000360 RBX: 0000000000000000 RCX: 72c1c7b072d25100
RDX: 000001b000000000 RSI: ffffffff8bc17920 RDI: ffffffff8bc178e0
RBP: ffffffff843fb660 R08: 0000000000000cc0 R09: 00000000ffffffff
R10: ffffc900043af080 R11: fffff52000875e15 R12: 000001b000000000
R13: 0000000000012cc0 R14: ffffffff843fb660 R15: 00000000ffffffff
FS: 0000555588a53380(0000) GS:ffff8881261c7000(0000) knlGS:000000000000000=
0
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007ffca09dfed4 CR3: 0000000034b80000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
bch2_fs_journal_start+0x480/0x1500 fs/bcachefs/journal.c:1459
bch2_fs_recovery+0x20ca/0x3970 fs/bcachefs/recovery.c:953
bch2_fs_start+0xa43/0xd30 fs/bcachefs/super.c:1206
bch2_fs_get_tree+0xbfc/0x15f0 fs/bcachefs/fs.c:2479
vfs_get_tree+0x92/0x2b0 fs/super.c:1809
do_new_mount+0x24a/0xa40 fs/namespace.c:3882
do_mount fs/namespace.c:4222 [inline]
__do_sys_mount fs/namespace.c:4433 [inline]
__se_sys_mount+0x317/0x410 fs/namespace.c:4410
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fa56d6f7faa
Code: d8 64 89 02 48 c7 c0 ff ff ff ff eb a6 e8 5e 04 00 00 66 2e 0f 1f 84 =
00 00 00 00 00 0f 1f 40 00 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff f=
f 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fffe2a8b108 EFLAGS: 00000282 ORIG_RAX: 00000000000000a5
RAX: ffffffffffffffda RBX: 00007fffe2a8b120 RCX: 00007fa56d6f7faa
RDX: 0000200000000040 RSI: 0000200000000000 RDI: 00007fffe2a8b120
RBP: 0000200000000000 R08: 00007fffe2a8b160 R09: 00000000000059d1
R10: 0000000000800000 R11: 0000000000000282 R12: 0000200000000040
R13: 00007fffe2a8b160 R14: 0000000000000003 R15: 0000000000800000
</TASK>


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.
For information about bisection process see: https://goo.gl/tpsmEJ#bisectio=
n

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-669208-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E59D841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:32:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id AA5E81894AAC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EC63419F11E;
Sat, 31 May 2025 18:32:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="SjkU/YuU"
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131])
(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 9C8781917F9
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716331; cv=none; b=fOUpsVaLwmmUq6HzEReBqLR9ivGI5bm/5lADCYONV12PuSrOO4vOOM/Hjlklm333SPtm+M6PcYprb9IkQvZut851sb3NIQe620d7BY1PviSEupYfupkgODNGeijJ03EOpuRY3h6VULikWxpR+qKSp3pp0uAyKZSwK1XlZBqdV3s=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716331; c=relaxed/simple;
bh=PiF6hqUws/uXK2z2qLpJr3JuiGcUxwlTUjPFuJp5SPU=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=QhsMGLoTuPSLGT8KZY4Umprezk1meuPXPgGw6Jgf2/3WBQIh8PeWKce9xGISu5ocfX2m7y8LMbb9+EDCtrRy2DQewaQfcNDNjOLitPN+9n3npC6SYsT94JVYdkJtN2P42eZXLy4N2QyMjJNeQVagcR4inoeVV5UBhuakCT7/27M=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=SjkU/YuU; arc=none smtp.client-ip=205.220.180.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279869.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54VF99eh012930
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:08 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
ZHCTS02b52liYmEagWUc7peB8KjJ4JVv3poNupxDf3M=; b=SjkU/YuU2tgu9LAc
lpXpv+zCBHDyUnast/fSqKYDa1PdEFc3KcOPd4NGYFlWIWlBSEy1/13XQwqVGbgX
wGfch5cuXzyrHHdj2i6ULQJrSfkZ845+Q95wQHu9EPxhBMencNNVTzIu3sFpD+q+
yc3gfXM7vH9galL04CfSLwF/j6hlKMnVKr/wgYXzFIJr64GpF/vs7kqaZEL8FRiM
9p5H/SekzhMDBnDFgsY3GW9XIrVFJH3iW/K7HJAVX2DKEy6+rNu3SaExMD6l94mW
mrvVR4acb2nY6pr4RlorNreZn6fZd0jjbEjqkdPfq/Cr2SJrrat3dUXqAZUqXx6/
PIWDFg==
Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytj0s5yn-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:08 +0000 (GMT)
Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-7d09b74dc4bso69174385a.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:32:08 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716327; x=1749321127;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=ZHCTS02b52liYmEagWUc7peB8KjJ4JVv3poNupxDf3M=;
b=WjhmCny4uQnF/YHrtiCqzFRXNin8QohRMHCasdhmTQBscXFjIuwFoy4WsScAmdY81X
2hkMiOB5UB0QrWQYQ8dzMuP2ONv1lNezHDzdALGqlCKu6c0hjmtM6n6Gjvfq0X1fcuQI
GsckkgGSLUyjoSGkQftErVg1RFvAWOxB0C+LjjL0eGOB/LVdiohQ9Q+liLpOrhezKiSS
QnVniIl2el4HTwfLtAlD3mLZHxGvyIYrpVG+tPlomqzFUy2cQshlv3PTMVWz5guZ17hq
qNAA14iPZDXKSKuFtQBaV9BZ9sl80F4BaH2aF7WYtrRmguKlC4+PB4nznbChQnitb5AT
+Zhw==
X-Forwarded-Encrypted: i=1; AJvYcCWn+PErbOyyZSh06gwS+WDGZQ3gxsWOdVg/gsTO9+qNSW1EQKro/LT04Tl6nhJ9pw2mxWslqGAKVy929Uo=@vger.kernel.org
X-Gm-Message-State: AOJu0YzaLJSYN0BSAHGaUZ3K/q7WaPbYNHxIBlVMIf+ZUSRSe/BtXZq8
VMoCXUf4Q8Wc7dAJBiZPbKeQtjCU4+hMX+BfP9E0BLfzPXFI0aMI4asOb/1lE5FFKdwfP3AZTE3
78zOx9cPdrDDtWgaVe6oZm1lF1uQVNgXZoUiz4eM3C1oMWgAH46t+/cTPPDh50obgLwg=
X-Gm-Gg: ASbGncvbDChLUk2lMRO+J29+zTjIuEJnkV5I7hf9Omi0rXBxyTPjOwuH0mKfTxlNDhY
QTTHTevKJRsJb6YYEXCwFHTnkLyvakyvyfmnUfYYW/cvmO20PABu0SnR4PzCs//VAvLOpMX62Or
a5pD9as7kMQNWZw1JHN7+u2gYkQNZhc5nzi66S8L4bF8w7PZdiGfH9cVc8D70fa0w+q7ZW5ez40
WXntBy4uwbnnTf2+mvhbrorNR+YHNeRTKFA6oJUR+UGIOlVs7L+l43gc/QAaxEBXvwSQhjayrWG
AYm0oxUh37jCSaLjdfzvBTyDe0zmZPjuuayiBXDS8IID/MFUKEMkpmkNou2D2/VoOQ==
X-Received: by 2002:a05:620a:44c1:b0:7ca:d396:1460 with SMTP id af79cd13be357-7d0a3e12576mr385235485a.14.1748716327487;
Sat, 31 May 2025 11:32:07 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGKHQuo7PTOJi1tD+3r4vH4UDMjXZMCtq0HBjSd2NTJ1pkGxJ8G662rVF3hH5fenX9J6ZKNqg==
X-Received: by 2002:a05:620a:44c1:b0:7ca:d396:1460 with SMTP id af79cd13be357-7d0a3e12576mr385232685a.14.1748716327088;
Sat, 31 May 2025 11:32:07 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d82d773sm534600666b.61.2025.05.31.11.32.04
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 11:32:06 -0700 (PDT)
Message-ID: <14492412-d340-4c9f-9597-39219712c0f5@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 20:32:03 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v4 3/8] arm64: dts: qcom: sc7280: Add WSA SoundWire and
LPASS support
To: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Linus Walleij <linus.walleij@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley
<conor+dt@xxxxxxxxxx>,
Srinivas Kandagatla <srini@xxxxxxxxxx>,
Liam Girdwood <lgirdwood@xxxxxxxxx>, Mark Brown <broonie@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>
Cc: cros-qcom-dts-watchers@xxxxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-sound@xxxxxxxxxxxxxxx,
kernel@xxxxxxxxxxxxxxxx, Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
References: <20250527111227.2318021-1-quic_pkumpatl@xxxxxxxxxxx>
<20250527111227.2318021-4-quic_pkumpatl@xxxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250527111227.2318021-4-quic_pkumpatl@xxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDE2OSBTYWx0ZWRfX3qGA+Ktv5KiL
YkVYwz97gbV3FG68jwkF+m27g0fTGArGiUdjr0xC2nWA/twKLWQJSBs4ZvkO8issZ0LvtNhiZ/k
95aQWIXsZo61IeDaz3DuBZ/ruYH6CqKNgrvoTjHSKHd6eDfVJCPqhSh9/ZcNHNRMvCFZuPCAROd
5wrVYzhdRlRC1+gDNADD3qBWcbrXPa6pR3IpUVSNp1vUFLAWzJsMkZFlHlcpzyRbINch/nTeO08
3ZU33//rxc2Zpav3ywhCdO6zkrYkAJtZp/hKEfr5DUmgtB7YnNb3hJxI6WwfnXG2htJTZr5nfh/
8g7irhvu2BvXwkT1DGqtpqAj0NJAtTPuvR0Sj+F53fLMapoTJKOrvzknD1bQhKIjy15wwg7fjOZ
hKhooEueFitpiG7k23y7mM1jAwvKP/2Ky7hTTS9EmTHURf5LVmDo1pvjCG97mJCosGszJqW7
X-Proofpoint-GUID: GSzjSgljSA3fLNvk5c1O3H_qNHRhON4r
X-Proofpoint-ORIG-GUID: GSzjSgljSA3fLNvk5c1O3H_qNHRhON4r
X-Authority-Analysis: v=2.4 cv=dc+A3WXe c=1 sm=1 tr=0 ts=683b4b28 cx=c_pps
a=HLyN3IcIa5EE8TELMZ618Q==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8
a=RWuSP1-prhlrjYyZVaYA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22
a=TjNXssC_j7lpFel5tvFf:22
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_09,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
priorityscore=1501 mlxscore=0 bulkscore=0 suspectscore=0 impostorscore=0
clxscore=1015 mlxlogscore=926 spamscore=0 adultscore=0 phishscore=0
malwarescore=0 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a
authcc= route=outbound adjust=0 reason=mlx scancount=1
engine=8.19.0-2505160000 definitions=main-2505310169
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/27/25 1:12 PM, Prasad Kumpatla wrote:
> From: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
>
> Add WSA LPASS macro Codec along with SoundWire controller.
>
> Signed-off-by: Mohammad Rafi Shaik <quic_mohs@xxxxxxxxxxx>
> Co-developed-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
> Signed-off-by: Prasad Kumpatla <quic_pkumpatl@xxxxxxxxxxx>
> ---

[...]

> + swr2: soundwire@3250000 {
> + compatible = "qcom,soundwire-v1.6.0";
> + reg = <0x0 0x03250000 0x0 0x2000>;

0x10_000 for size

otherwise:

Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Konrad


Return-Path: <linux-kernel+bounces-669210-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 00B8641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:32:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id DDB59173B82
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 85D181A0714;
Sat, 31 May 2025 18:32:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jVaY7VxU"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C415619D06B;
Sat, 31 May 2025 18:32:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716343; cv=none; b=pAeWdfwnueRF5OF2exQPWFk9EXgW+e2VO41YTQtW/2eqADtVuaW1euOnbdHYFH/IyoMYA+T9Ek8h1rfGu8muEPCBkIloAGnJHyYq6+iLjPzKm1/Wv8dxGqrZ3jvOJc71UTxyDSUxC1G17mQWJP/0bWrGa6yaByMYVlp/pamIsU4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716343; c=relaxed/simple;
bh=KWfWrYmK302mCxxIMAK2jeNzv3Uk0Ef7KsClqd2k3Is=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=l5/yfu7W4O6LtovmLhYlraWJt58Ji9XMO6xMcIfDbjr7FCyJdZR7K4zb6loJhifdP8bIG7nbz9wOVGsFYq/At+sA/nIXNQqkoEQcrQm/J5i4yzBhNkZxVFr7MrLH2ImD/+G97pSh+KtLrX82EkojnrHiS4Gl7S+rFD0dwqSGbIA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jVaY7VxU; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 91141C4CEEF;
Sat, 31 May 2025 18:32:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748716343;
bh=KWfWrYmK302mCxxIMAK2jeNzv3Uk0Ef7KsClqd2k3Is=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
b=jVaY7VxU/pq0AXKPTgoxM7yjucWMqylkjGQ2vNL3dz0AcK3DnH182SQmhu/7mDm05
LzabQNBYEPnPQ7OzEM653xWTRnJDTbkRmawbxsT7btRMSEPgtm40alUGZ5WZ74EIuN
fvG73lwrPHoU8lEHhg2ao4UN9B2QI6cdNQWo6Qg2IrWlKXvr27x5IUn6d3qUiklTZg
BXPaj9Jt2KnNaMj4WdzObPby6uwxgsXuaBW71C7k1D83G0P+UM5iHZtLHHHF5vvUAj
u7/L1JmDr4hg/+iQ2hwPQ2E3fAFkPr/eGE0PLBdeG/+xhyxqFzPFiw4wBjqCDZa2ZQ
ZYBDm6nQFbM3A==
From: Masahiro Yamada <masahiroy@xxxxxxxxxx>
To: linux-kbuild@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx,
Masahiro Yamada <masahiroy@xxxxxxxxxx>
Subject: [PATCH 2/3] scripts/misc-check: check missing #include <linux/export.h>
Date: Sun, 1 Jun 2025 03:28:21 +0900
Message-ID: <20250531183217.3844357-2-masahiroy@xxxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531183217.3844357-1-masahiroy@xxxxxxxxxx>
References: <20250531183217.3844357-1-masahiroy@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The problem was described in commit 5b20755b7780 ("init: move THIS_MODULE
from <linux/export.h> to <linux/init.h>").

To summarize it again here: <linux/export.h> is included by most C files,
even though only some of them actually export symbols. This is because
some headers, such as include/linux/{modules.h,linkage}, needlessly
include <linux/export.h>.

I have added a more detailed explanation in the comments of
scripts/misc-check.

This problem will be fixed in two steps:

1. Add #include <linux/export.h> to C files that use EXPORT_SYMBOL()
2. Remove #include <linux/export.h> from header files that do not use
EXPORT_SYMBOL()

This commit addresses step 1; scripts/misc-check will warn about *.[ch]
files that use EXPORT_SYMBOL() but do not include <linux/export.h>.
This check is only triggered when the kernel is built with W=1.

We need to fix 4000+ files. I hope others will help with this effort.

Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
---

scripts/misc-check | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)

diff --git a/scripts/misc-check b/scripts/misc-check
index f37b2f6931cc..9e618e9f93f6 100755
--- a/scripts/misc-check
+++ b/scripts/misc-check
@@ -9,4 +9,49 @@ check_tracked_ignored_files () {
sed 's/$/: warning: ignored by one of the .gitignore files/' >&2
}

+# Check for missing #include <linux/export.h>
+#
+# The rule for including <linux/export.h> is very simple:
+# Include <linux/export.h> _only_ when you use EXPORT_SYMBOL(). That's it.
+#
+# However, some headers include <linux/export.h> even though they are completely
+# unrelated to EXPORT_SYMBOL().
+#
+# One example is include/linux/module.h. Please note <linux/module.h> and
+# <linux/export.h> are orthogonal. <linux/module.h> should be included by files
+# that can be compiled as modules. In other words, <linux/module.h> should be
+# included by EXPORT_SYMBOL _consumers_. In contrast, <linux/export.h> should be
+# included from EXPORT_SYMBOL _providers_, which may or may not be modular.
+# Hence, include/linux/module.h should *not* include <linux/export.h>.
+#
+# Another example is include/linux/linkage.h, which is completely unrelated to
+# EXPORT_SYMBOL(). Worse, it is included by most C files, which means, most of
+# C files end up including <linux/export.h>, even though only some of them
+# actually export symbols. Hence, include/linux/linkage.h should *not* include
+# <linux/export.h>.
+#
+# Before fixing such headers, we must ensure that C files using EXPORT_SYMBOL()
+# include <linux/export.h> directly, since many C files currently rely on
+# <linux/export.h> being included indirectly (likely, via <linux/modules.h>,
+# <linux/linkage> etc.).
+#
+# Therefore, this check.
+#
+# The problem is simple - the warned files use EXPORT_SYMBOL(), but fail to
+# include <linux/export.h>.
+# The fix is also simple: add #include <linux/export.h> to the warned files.
+#
+# If the included headers are sorted alphabetically, please insert
+# <linux/export.h> in the correct position to maintain the sort order.
+# For this reason, this script only checks missing <linux/export.h>, but
+# does not automatically fix it.
+check_missing_include_linux_export_h () {
+
+ git -C ${srctree:-.} grep --files-with-matches -E 'EXPORT_SYMBOL((_NS)?(_GPL)?|_GPL_FOR_MODULES)\(.*\)' \
+ -- '*.[ch]' :^tools/ :^include/linux/export.h |
+ xargs grep --files-without-match '#include[[:space:]]*<linux/export\.h>' |
+ xargs printf "%s: warning: EXPORT_SYMBOL() is used, but #include <linux/export.h> is missing\n" >&2
+}
+
check_tracked_ignored_files
+check_missing_include_linux_export_h
--
2.43.0



Return-Path: <linux-kernel+bounces-669209-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9CF8741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:32:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 8727A18963F4
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:44 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6987D19D093;
Sat, 31 May 2025 18:32:23 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="lVqZ5KXr"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 A7EB217A30A;
Sat, 31 May 2025 18:32:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716342; cv=none; b=czZbGLw0nSo+eFlOLbagZooVQRWvInQOLEE1h9pogFryxF05TFUCjnrsWF1w59V19PU8eOAIWirzMLAesCqyd0DTM+K/7Hh46BDiHZI90je2V3SxzYqdcTkyGg3mpXSVsbZ4ubPeuqYGPI1Mpz/Oyc4bXOpMjF+F9hilZeHjtEA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716342; c=relaxed/simple;
bh=/ZsJND5fzftc2cszq8cTexT6uJOrDy350bh50M3G9XI=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=kxset2yzQ+FZs1ZcTJbUVdp4zGL5HjjvAQlFHKffOGbxokR8P504XKaiv0FvPaOmbwZl2zMntlFIOWWLDYjAMyogLA5CWOJfMu8OQxhtnnA2GLDpQXgjsMwMyTJrrfO4X5GO0YHWRdRh+v9or7D+p5/KPaUwez9t3du451Oq2s4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=lVqZ5KXr; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 29C96C4CEE3;
Sat, 31 May 2025 18:32:21 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748716342;
bh=/ZsJND5fzftc2cszq8cTexT6uJOrDy350bh50M3G9XI=;
h=From:To:Cc:Subject:Date:From;
b=lVqZ5KXr50KIpfplEhXEEbk6uKOMzFjlDex50pREjKKAabcu+alI/eoz+jAj5tgUq
kKfzt5WMad19h2qNT9P3HNc7RYFwhVB3q+fsdsfPIi9Aw6GFNLMcmC5wEoiZa92YhZ
lzNnlyMVNfqSgY0mdDrBYnV35mJYwNaqX+PHhNK9qf3HNHPls4PZdgKXvUE6/FRr8/
G+kQtlbV6ZmHlZGs/Rxc4SbYwCUU6x5FgPZXW/YlGNyOULt9bYrOzH0ZRa5cX/thh8
psL60XkTFPpwusRc1y1soaNEc4dIswm3FOBDIXK3OsVkDEa5j1sZNqWg/pQP939B+r
qc/ZmBYeM4e9Q==
From: Masahiro Yamada <masahiroy@xxxxxxxxxx>
To: linux-kbuild@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx,
Masahiro Yamada <masahiroy@xxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>,
Nicolas Schier <nicolas.schier@xxxxxxxxx>
Subject: [PATCH 1/3] kbuild: move W=1 check for scripts/misc-check to top-level Makefile
Date: Sun, 1 Jun 2025 03:28:20 +0900
Message-ID: <20250531183217.3844357-1-masahiroy@xxxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This script is executed only when ${KBUILD_EXTRA_WARN} contains 1.
Move this check to the top-level Makefile to allow more checks to be
easily added to this script.

Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
---

Makefile | 3 +++
scripts/misc-check | 9 +--------
2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 61f4e7662192..7a52be3a4b80 100644
--- a/Makefile
+++ b/Makefile
@@ -1824,9 +1824,12 @@ rustfmtcheck: rustfmt
# Misc
# ---------------------------------------------------------------------------

+# Run misc checks when ${KBUILD_EXTRA_WARN} contains 1
PHONY += misc-check
+ifneq ($(findstring 1,$(KBUILD_EXTRA_WARN)),)
misc-check:
$(Q)$(srctree)/scripts/misc-check
+endif

all: misc-check

diff --git a/scripts/misc-check b/scripts/misc-check
index d40d5484e0c5..f37b2f6931cc 100755
--- a/scripts/misc-check
+++ b/scripts/misc-check
@@ -3,15 +3,8 @@

set -e

-# Detect files that are tracked but ignored by git. This is checked only when
-# ${KBUILD_EXTRA_WARN} contains 1, git is installed, and the source tree is
-# tracked by git.
+# Detect files that are tracked but ignored by git.
check_tracked_ignored_files () {
- case "${KBUILD_EXTRA_WARN}" in
- *1*) ;;
- *) return;;
- esac
-
git -C ${srctree:-.} ls-files -i -c --exclude-per-directory=.gitignore 2>/dev/null |
sed 's/$/: warning: ignored by one of the .gitignore files/' >&2
}
--
2.43.0



Return-Path: <linux-kernel+bounces-669211-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3C07341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:32:55 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id E4A0818954F1
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:57 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 465131A3174;
Sat, 31 May 2025 18:32:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="A0SKufoF"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 873031A23A1;
Sat, 31 May 2025 18:32:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716344; cv=none; b=V3SPbrKpsYvo2P9TmL5QeFrYsnte/3huyYEhXjBvITiG+44TmP5rfHrhliFU05BPD89HuQkAYsgDHzWt8SwQtmO7e3y/5ymOEeHADYfWrlx4s8kKmdzbob6uNiYIIcou/hsD5Wf8VGNFBpqP103bOVN/+WCK6REX6N3kuNJcsE4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716344; c=relaxed/simple;
bh=rEWUoKbhQj+k/CWWKQA+dBxFt+hJeNJpix7vaTSCieQ=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=bTqaxFzVhsUBBWCvNSxS6qcx5hMnOXVxUO8vfohFZVvDa3hyejKScQ2STBESYE/vw0w7xWKYDUV4kzDoBKe8/L1kSuoAO84uP7beyxqVyCr0vRodhNzXjSlEfNlclf3fMQ7ykeO8WaC2JltHmf40nlBS3A9yB2Mj52nFcb7DY3c=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=A0SKufoF; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id B5180C4CEEA;
Sat, 31 May 2025 18:32:23 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748716344;
bh=rEWUoKbhQj+k/CWWKQA+dBxFt+hJeNJpix7vaTSCieQ=;
h=From:To:Cc:Subject:Date:In-Reply-To:References:From;
b=A0SKufoFYmq1ffAgkLw20ftiqfe+0CJfXcWWO1lxrlZXaD3IJze8F0xprNFCH+wxL
EqD8oeyxIcyQ+c7tMIkBp9rutZPUWsNvYm+PhT6IB7AJ0MhKyLrSwUgRScXCQAdRuQ
RbcDB0TF/3DSHm/+xscqnoGaXlSGb4IGox4qi2T51XIyzw3L2eYWWb0Lhrq3z22Jxz
ZgE61kxMsRGqBN2iYwSp+ZMZMdpN1K1JYMeOKw00UltU76tYKXt65lmeR2iYKGEqBQ
sAn3GzAWGGm+r1h/bzO8nqYQ0iUMgH+KDCUt7QzxtXURFaRQ8kz4hNeokw4Xkf+4Uy
HkyZ4qn8dJfMQ==
From: Masahiro Yamada <masahiroy@xxxxxxxxxx>
To: linux-kbuild@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx,
Masahiro Yamada <masahiroy@xxxxxxxxxx>
Subject: [PATCH 3/3] scripts/misc-check: check unnecessary #include <linux/export.h>
Date: Sun, 1 Jun 2025 03:28:22 +0900
Message-ID: <20250531183217.3844357-3-masahiroy@xxxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531183217.3844357-1-masahiroy@xxxxxxxxxx>
References: <20250531183217.3844357-1-masahiroy@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Another issue with <linux/export.h> is that it is sometimes included
even when EXPORT_SYMBOL() is not used at all.

Some headers (e.g. include/linux/linkage.h>) cannot be fixed for now
for the reason described in the previous commit.

This commit adds a warning for *.c files that include <linux/export.h>
but do not use EXPORT_SYMBOL().

Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>
---

scripts/misc-check | 12 ++++++++++++
1 file changed, 12 insertions(+)

diff --git a/scripts/misc-check b/scripts/misc-check
index 9e618e9f93f6..e280ccab6391 100755
--- a/scripts/misc-check
+++ b/scripts/misc-check
@@ -53,5 +53,17 @@ check_missing_include_linux_export_h () {
xargs printf "%s: warning: EXPORT_SYMBOL() is used, but #include <linux/export.h> is missing\n" >&2
}

+# If you do not use EXPORT_SYMBOL(), please do not include <linux/export.h>.
+# Currently, this is checked for *.c files, but not for *.h files, because some
+# *.c files rely on <linux/export.h> being included indirectly.
+check_unnecessary_include_linux_export_h () {
+
+ git -C ${srctree:-.} grep --files-with-matches '#include[[:space:]]*<linux/export\.h>' \
+ -- '*.[c]' :^tools/ |
+ xargs grep --files-without-match -E 'EXPORT_SYMBOL((_NS)?(_GPL)?|_GPL_FOR_MODULES)\(.*\)' |
+ xargs printf "%s: warning: EXPORT_SYMBOL() is not used, but #include <linux/export.h> is present\n" >&2
+}
+
check_tracked_ignored_files
check_missing_include_linux_export_h
+check_unnecessary_include_linux_export_h
--
2.43.0



Return-Path: <linux-kernel+bounces-669212-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5F10541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:40:01 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 409A99E0722
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:39:37 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C9B8719F135;
Sat, 31 May 2025 18:39:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ItXGS7Jl"
Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA14D2907;
Sat, 31 May 2025 18:39:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716790; cv=none; b=W0YhdV5NgnOHVsXymbatx2wI0lhQ+AZZlqVwQiHNK0bzEd3oQVdNiNUxwLqwOQ9dTW96mN9tv3WYqhQD7YA0xUaWZwF6H0BXYbxaYcIVLEnkqva2VkVzX07n9xVnZW4YLoY5X/PImIddX7dMmSsx2lPvzKlVAcWRhuBn+yepRzQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716790; c=relaxed/simple;
bh=Z0X3dkbi6i5QAVOlVqqrBxcAPTBMpyvnuFVn1uESlsw=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Ghagj8jZaCP2PwMXO4FHysF4L+idMP6FzGDVodhmvnhvOMxrfFmX91rB/AzXbk9KLwyYJo+j8r/ilP05ZHbdXneWLaI0kl4C+oT4MMr6Us9WozxcOCKiUQcNlcTtr4rATr9E6oyhNVtjruFiCazMhvTyyV2vn1wSHTh0QlbOi/A=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ItXGS7Jl; arc=none smtp.client-ip=209.85.210.178
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-742b614581dso3025219b3a.3;
Sat, 31 May 2025 11:39:48 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748716788; x=1749321588; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=miy0lPi7xpBuWPPyHcsZgwlJ38UR4yPj0w/sOFOrXfM=;
b=ItXGS7JlZnh5qOuBHOoD4GpTpyC+bs8VpWoNpCWUQXdlkn/agp+ljx+uFSa9JmDGCB
vCDqHGiTAsZ+8AGxjubgePmCO5dKJGcoM7kqSgaktqBcDze94o/GfHhhbb+wy/uSkeDM
StQnFzbqrpYkpF7Q+ELBgesBZJEZ/h0zHv3vQYZ2JNH6SCMzko34ndT1rUho3GQz9U9X
/11p+DJn5Lfiap/5kKGkzKvEI8zY5IlGkGY2g167H0B2KUkq1YygLV3BatkoDmogayJM
i/7pu47ZeMKVlzFdh1xNfKJeBH9HgibYhRldndWITgKpP67jlVkSSFVi2pdOyh7LKfNx
SvDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716788; x=1749321588;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=miy0lPi7xpBuWPPyHcsZgwlJ38UR4yPj0w/sOFOrXfM=;
b=A5FhirB4QVV2XpqcLifSe9vjU6avIWPdBteUvNIiaUE7hHxDeTt+94bMqh9coozebS
e3arsdX8zV3xQrH+6SAXa2YvakX+qsZ2kpfiYKMaEcPPnXc4gZCmDPNSmJ+eOVPauYth
/mK0J3gX1oW9lvzV9hXYNFjnHD3SKIlo15fxw38zSonbKmZrhxCOt/NBbKRRKEjjS6gE
cRZENwrJAbRhpOwh+HZhb3IXcJLMJp6VccArbcD3OS4/ldL+JFpJUVqb+aa19FWuRPov
Vyh5uM2x6uQIZa6e/KKVHEyia5d1nsZ7QCPZ8jwdSykzokxg5vAc/4JOHZTeJfW95nuR
P5aw==
X-Forwarded-Encrypted: i=1; AJvYcCUynmrDKUgLzUpD71X/YODfCzUmGV/6W0njB/E9YQeV5PwYno4tXJz2usZE9Cj9ik0EH5P6q5t1@xxxxxxxxxxxxxxx, AJvYcCV4sBqYsGzdfQvKLw2ZFl5ge8wR8JsjmbTi/2R5RQ7xVLS8XQMskGZlL/C1/dCLubbPxQMUxr40DNZr@xxxxxxxxxxxxxxx, AJvYcCX7PSS0azO4GfhIWGSx7k3HxnuZUMXcsYerXrmC7b/QDVBBO0RaaZMzlDAr0sWik9HWVEBxjI73QH/0Crsr@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YynV3f2Y3U0NlWIUglc0nMzp76XS1smueaJ/s60quGL/6ciF04C
hitJUmh4izsJQrOgnxVjkUIbpfWD8iu29rBGdfdPI46PjZ2HHgZABTVj
X-Gm-Gg: ASbGncsg4MKU2eclqmL0OjmJ4GtawKtLHpS211JRB5ikt496ff3GkT2mYYtMiqaiCww
RBAIdtcNa0+4eYqYokir9s94Sm7GjfxXeIhrAL1v6+7SOyMWOIVnPgUW6Q7WJe6TLNmzJ8X13g6
lHLBcvLqgXzPUN9eDIJ0u3356oRm1n18KS9BvDdbdaBBFDe9zyBs/bl0GT7gDcEn/7Ava2w9sg3
x0M079LI+dFu7idzb8GYRZibnXmj7bWFBT5k3t6K4CN18VoAQMBZLMb3VJC+5fWSOq6TcoUfvsG
boppKYCvJTIoXLTMKOwOWCoIRhUcAO8xE0XPdkvCg7KUqIj0YoNY2kJY0G54VZ92Qy0WQzbCDe4
45DE=
X-Google-Smtp-Source: AGHT+IHVFQGAGOiydtS3WD4h3E514kOXNrb8JU3kqWsTcnNfJ01MXiUz5RPjMoINu5c8MS7L/OVfjg==
X-Received: by 2002:a05:6a00:2309:b0:736:2a73:6756 with SMTP id d2e1a72fcca58-747c1c5eb5emr9127507b3a.21.1748716787787;
Sat, 31 May 2025 11:39:47 -0700 (PDT)
Received: from localhost.localdomain ([64.114.250.86])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747afed34fdsm4888915b3a.75.2025.05.31.11.39.46
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:39:47 -0700 (PDT)
From: Kyle Hendry <kylehendrydev@xxxxxxxxx>
To: Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Heiner Kallweit <hkallweit1@xxxxxxxxx>,
Russell King <linux@xxxxxxxxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
Cc: noltari@xxxxxxxxx,
jonas.gorski@xxxxxxxxx,
Kyle Hendry <kylehendrydev@xxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND net-next v4 0/3] net: phy: bcm63xx: add support for BCM63268 GPHY
Date: Sat, 31 May 2025 11:39:11 -0700
Message-ID: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Some BCM63268 bootloaders do not enable the internal PHYs by default.
This patch series adds a phy driver to set the registers required
for the gigabit PHY to work.

v4 changes:
- Remove unecessary checks
- Make commit message more concise
- Tag for net-next
- Add include to schema to fix dt_binding_check
- Schema formatting

v3: https://lore.kernel.org/netdev/20250228002722.5619-1-kylehendrydev@xxxxxxxxx/
- Remove syscon for the GPHY control register
- Change driver to access the GPIO controller syscon
- Move syscon phandle from mdio bus to phy node
- Remove unecessary devm_phy_package_join()
- Made functions static to fix build warning
- Fix formatting and whitespace issues
- Add schema for PHY driver
- Deassert PHY reset signal

v2: https://lore.kernel.org/netdev/d819144d-ce2f-4ea5-8bfb-83e341672da6@xxxxxxxxx/
- Remove changes to b53 dsa code and rework fix as a PHY driver
- Use a regmap for accessing GPHY control register
- Add documentaion for device tree changes

v1: https://lore.kernel.org/netdev/20250206043055.177004-1-kylehendrydev@xxxxxxxxx/

Signed-off-by: Kyle Hendry <kylehendrydev@xxxxxxxxx>

Kyle Hendry (3):
net: phy: bcm63xx: add support for BCM63268 GPHY
net: phy: enable bcm63xx on bmips
dt-bindings: net: phy: add BCM63268 GPHY

.../bindings/net/brcm,bcm63268-gphy.yaml | 52 +++++++++++
drivers/net/phy/Kconfig | 4 +-
drivers/net/phy/bcm63xx.c | 88 +++++++++++++++++++
3 files changed, 142 insertions(+), 2 deletions(-)
create mode 100644 Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml

--
2.43.0



Return-Path: <linux-kernel+bounces-669213-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 97EC241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:40:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 0B18717AE3C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:40:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 158A11A38E3;
Sat, 31 May 2025 18:39:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MgQWXQob"
Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id B08E52907;
Sat, 31 May 2025 18:39:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716795; cv=none; b=Qyu4cveu7ODc4ySmkJUav9xNX3ox+hYumGzMeFOXuZs+JnZAc3GWv3VDhFC9zOieO0CnEu/xlbvaVYO6jyzK5A/22dLAogkpPG3i69Hr23eUO5HU9FiOI1I68mUAj5WgFHC2wrfUO0QN4krRKQr1zS2VbECfZgvwKEFdNjVfhfs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716795; c=relaxed/simple;
bh=siLeM9++8r0ODoi+wjzDjRUa7L7fDm4F+gHfOU57OtY=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=YueYJxCmrqg5PbRUWTi7iHuQhzhIwc2Gt+YJqUngOdEDzZ2D/hRcZOM3w7QxdTBVPiFKf5dD6+n3Jy2d7ZIVMIXYy+uY9vQzPc5wKvFALhxQ3zQw/4RCBl3BAuomsGl0VJffpvJuP+5ylxXAn4TpvTa8064MCIrh1x/Yr4BcZ24=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MgQWXQob; arc=none smtp.client-ip=209.85.210.180
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-74019695377so1901072b3a.3;
Sat, 31 May 2025 11:39:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748716793; x=1749321593; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=Pg0UJGmkB9eAqwQAGGERmKFyJgP97enh4p/9sTbGNAo=;
b=MgQWXQobMD/oGNnaGK3EoBi10A0ssnPtVpGc/SRl68PE0m13MPoA0iOXnD9DfCvAq0
36TO0XMcjrT6Md76Hb5dkoNfUlzC9pcc5zNQ2Fp2r1wSfvuRLO+/qQdyheje6QbINI3y
la256rTLjTaQcdZvRhnEXhdPNrBb5BEqEZpcjHAeOuhE0Wo/Us6q6SdFbdH8wIEsYxUT
nxPwIuxuIFQ6Fy7etoK9Qo3du1qBCjkzQwQ+LhEm0nJiuHdzsdkfeRAfNwr89kfSSVyc
NCYNg4s4HCMhaO3kdtWgsQnAgEi1332RWJwyb9eGNE23TkAqEZK3b49GT3cs8IMs77T/
TLjQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716793; x=1749321593;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=Pg0UJGmkB9eAqwQAGGERmKFyJgP97enh4p/9sTbGNAo=;
b=F8qJrQ54nYNK9zltLAHs8Z1mxxNJBGCkrUJ1I4nXiX95Ztp5ZdM93jWoJsmudRTXcv
lfdprejscARR34aQewQhfgpFBqIbNM/Xnkxr/3wLqbllbv8P2l9fOTtDMEyiEHZPAocH
LVnIM6wvCRKfXC1bgDUcebgkBE7WPR0FjkYSxe9XlhtXL2i/wi9VUmXygG1qO2BCs9yS
F0DjCf4aSPfht8iTjpWRCElto9GwhdJ7fD5BftqoxUUmA8O5DVH8TbbCgf/c7xaQCCmk
ZRXUwtyA121zxQBFVprJ/6SadS6y08Dpw+p2mgIZeDSpAVZhXFSLBDiP4I9nWq27IlQs
16IA==
X-Forwarded-Encrypted: i=1; AJvYcCU6aEw6nf9FdTPnfazBLT/d9ht7cUbqC2ixQvmGPji0VbZmhIR2cczoqsvkhhAR65HSe2OECJYHzofC9dVo@xxxxxxxxxxxxxxx, AJvYcCUVP5+SAumiAXp2Tfis2YGXnVn1oGxQBE0b1zbc6WN4orLyaNBNeyZKGKrj+R1xDINFXJFsaAMt@xxxxxxxxxxxxxxx, AJvYcCVAv5jHxy00SoPNZnhpKD0Ya7+oARZMbDZTnJ47K98gtkn0l81b0e6c7qOrSCaMoDloKpSYmh4KqYv2@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YxgWD6+jOgkvFsruag1KGLqcoqDZhH8XMVw18NT/5Lwd+akYQLf
Ix/8X6W2l33jco+hYqOnO/AXX9yravQ5beWaFw16KwU3feEZnq7MvAK8
X-Gm-Gg: ASbGnctIpxF1ZAtb6Ge3GIK2C1xkD7AlJimLz5VFy7VhdY/dZQVK9ueChFohG+CJXQo
hsvMoF3M19ruP4wbqXIQdAt0fG6XpP9yA2K/MsD22n4/UPHoGzPJbYNwuTNcjnJy4qxPO+/Ijh1
OlAqMlNK0lGFqIymLsDv/BZ9ol8t6KNSdzw1BLretr7tN84lOgMj5nDkzu+dAMXUITFmBw4xhKT
71eyuazfiX9CGhOof6xDqWqSpzj0HSbfGxvv4xbFhqsfgLhJKjcnBYa5rD8NaEHEeSpOT8wXxf9
bZLbAAUjaaUZr0ySa4XM2A8QzI/3hrzuuZ9Idnaz8CeVN7Rf1eG7RHnaOaKwcUMeqp34
X-Google-Smtp-Source: AGHT+IGmHjrHz6p6eGio7dm2FVS4u6g10DOnqW8vHl3Zl8M3+vEeb5Gx21mjHTU52WNVTJGx1mlfIQ==
X-Received: by 2002:a05:6a20:3949:b0:21a:d1fe:9e82 with SMTP id adf61e73a8af0-21bad0fb3bdmr4254938637.30.1748716792779;
Sat, 31 May 2025 11:39:52 -0700 (PDT)
Received: from localhost.localdomain ([64.114.250.86])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747afed34fdsm4888915b3a.75.2025.05.31.11.39.51
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:39:52 -0700 (PDT)
From: Kyle Hendry <kylehendrydev@xxxxxxxxx>
To: Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Heiner Kallweit <hkallweit1@xxxxxxxxx>,
Russell King <linux@xxxxxxxxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
Cc: noltari@xxxxxxxxx,
jonas.gorski@xxxxxxxxx,
Kyle Hendry <kylehendrydev@xxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND net-next v4 1/3] net: phy: bcm63xx: add support for BCM63268 GPHY
Date: Sat, 31 May 2025 11:39:12 -0700
Message-ID: <20250531183919.561004-2-kylehendrydev@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
References: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add support for the internal gigabit PHY on the BCM63268 SoC.
Low power mode is set in the GPHY control register which is
accessed through the GPIO controller syscon.

Signed-off-by: Kyle Hendry <kylehendrydev@xxxxxxxxx>
---
drivers/net/phy/bcm63xx.c | 88 +++++++++++++++++++++++++++++++++++++++
1 file changed, 88 insertions(+)

diff --git a/drivers/net/phy/bcm63xx.c b/drivers/net/phy/bcm63xx.c
index b46a736a3130..b45f2c9acc06 100644
--- a/drivers/net/phy/bcm63xx.c
+++ b/drivers/net/phy/bcm63xx.c
@@ -3,8 +3,11 @@
* Driver for Broadcom 63xx SOCs integrated PHYs
*/
#include "bcm-phy-lib.h"
+#include <linux/mfd/syscon.h>
#include <linux/module.h>
#include <linux/phy.h>
+#include <linux/regmap.h>
+#include <linux/reset.h>

#define MII_BCM63XX_IR 0x1a /* interrupt register */
#define MII_BCM63XX_IR_EN 0x4000 /* global interrupt enable */
@@ -13,10 +16,20 @@
#define MII_BCM63XX_IR_LINK 0x0200 /* link changed */
#define MII_BCM63XX_IR_GMASK 0x0100 /* global interrupt mask */

+#define PHY_ID_BCM63268_GPHY 0x03625f50
+
+#define GPHY_CTRL_OFFSET 0x54
+#define GPHY_CTRL_IDDQ_BIAS BIT(0)
+#define GPHY_CTRL_LOW_PWR BIT(3)
+
MODULE_DESCRIPTION("Broadcom 63xx internal PHY driver");
MODULE_AUTHOR("Maxime Bizon <mbizon@xxxxxxxxxx>");
MODULE_LICENSE("GPL");

+struct bcm_gphy_priv {
+ struct regmap *gpio_ctrl;
+};
+
static int bcm63xx_config_intr(struct phy_device *phydev)
{
int reg, err;
@@ -69,6 +82,71 @@ static int bcm63xx_config_init(struct phy_device *phydev)
return phy_write(phydev, MII_BCM63XX_IR, reg);
}

+static int bcm63268_gphy_set(struct phy_device *phydev, bool enable)
+{
+ struct bcm_gphy_priv *priv = phydev->priv;
+ u32 pwr_bits;
+ int ret;
+
+ pwr_bits = GPHY_CTRL_IDDQ_BIAS | GPHY_CTRL_LOW_PWR;
+
+ if (enable)
+ ret = regmap_update_bits(priv->gpio_ctrl, GPHY_CTRL_OFFSET, pwr_bits, 0);
+ else
+ ret = regmap_update_bits(priv->gpio_ctrl, GPHY_CTRL_OFFSET, pwr_bits, pwr_bits);
+
+ return ret;
+}
+
+static int bcm63268_gphy_resume(struct phy_device *phydev)
+{
+ int ret;
+
+ ret = bcm63268_gphy_set(phydev, true);
+ if (ret)
+ return ret;
+
+ return genphy_resume(phydev);
+}
+
+static int bcm63268_gphy_suspend(struct phy_device *phydev)
+{
+ int ret;
+
+ ret = genphy_suspend(phydev);
+ if (ret)
+ return ret;
+
+ return bcm63268_gphy_set(phydev, false);
+}
+
+static int bcm63268_gphy_probe(struct phy_device *phydev)
+{
+ struct mdio_device *mdio = &phydev->mdio;
+ struct device *dev = &mdio->dev;
+ struct reset_control *reset;
+ struct bcm_gphy_priv *priv;
+ struct regmap *regmap;
+
+ priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
+ if (!priv)
+ return -ENOMEM;
+
+ phydev->priv = priv;
+
+ regmap = syscon_regmap_lookup_by_phandle(dev->of_node, "brcm,gpio-ctrl");
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ priv->gpio_ctrl = regmap;
+
+ reset = devm_reset_control_get_optional_exclusive(dev, NULL);
+ if (IS_ERR(reset))
+ return PTR_ERR(reset);
+
+ return reset_control_reset(reset);
+}
+
static struct phy_driver bcm63xx_driver[] = {
{
.phy_id = 0x00406000,
@@ -89,6 +167,15 @@ static struct phy_driver bcm63xx_driver[] = {
.config_init = bcm63xx_config_init,
.config_intr = bcm63xx_config_intr,
.handle_interrupt = bcm_phy_handle_interrupt,
+}, {
+ .phy_id = PHY_ID_BCM63268_GPHY,
+ .phy_id_mask = 0xfffffff0,
+ .name = "Broadcom BCM63268 GPHY",
+ /* PHY_BASIC_FEATURES */
+ .flags = PHY_IS_INTERNAL,
+ .probe = bcm63268_gphy_probe,
+ .resume = bcm63268_gphy_resume,
+ .suspend = bcm63268_gphy_suspend,
} };

module_phy_driver(bcm63xx_driver);
@@ -96,6 +183,7 @@ module_phy_driver(bcm63xx_driver);
static const struct mdio_device_id __maybe_unused bcm63xx_tbl[] = {
{ 0x00406000, 0xfffffc00 },
{ 0x002bdc00, 0xfffffc00 },
+ { PHY_ID_MATCH_EXACT(PHY_ID_BCM63268_GPHY) },
{ }
};

--
2.43.0



Return-Path: <linux-kernel+bounces-669214-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 61FA541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:40:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 8FF47189EA33
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:40:42 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 479BF1AB528;
Sat, 31 May 2025 18:39:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GMYs4Rzt"
Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2F4D81A5BA2;
Sat, 31 May 2025 18:39:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716798; cv=none; b=lcoFoD5+JfmsJgPAloJF14Zf5ciH8UdBRy2//c/e3srxsdLf0GW8WT71wM+keX2VrO0YtZHF/V2V3GjvHoI1lcg8bH7KvhlsciQ20aR44TKs8cRQYN3VmyR6Lj1iZdkfZKejjHyYkjJNvtOpqm5208OOGFTdEHn0qRNYuNEtkx4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716798; c=relaxed/simple;
bh=jB+SAxV67/XkLO7Ja8VKYB3BnV/TpONenLjNMpQ2DpM=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=CAlnmbLjwu9cy3ZA/AThoBmgOJZoVXEU9EHeXTBVaVsM8Ac0cOt3L+tGJDI5hMGg7AmQehg/hgLeG2hE9v1ScYQkoP1Mhn8QEAZPV1ReByRPRjTiZl5sH9Cau2FjDqvATv4tqB9lObmwt0Vjh4G3Xb5WXWJ7VBjRzn6zNETWxWA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GMYs4Rzt; arc=none smtp.client-ip=209.85.210.176
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-74267c68c11so2343847b3a.0;
Sat, 31 May 2025 11:39:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748716796; x=1749321596; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=LNmAyfWjthm2OoYu5rb89I5Fn5ozA8/1Vp5gyVNMnWg=;
b=GMYs4Rzto4OHd1K13J0oXDTlEmrT9QkL8halgQtcK5CO/r894EkV805JE5m6xbIVIi
Q9KnYJWVnLglVQVyPXrDcm9sRm0VujTYjvSbWVMBbDzi+n3djbAWjYEZFYm/Ms9bvh7M
IsMqN+BT9dpLRZUWwKnuFed0xEcIR1XDcF1c1/VVFWq8UCb7zIfng0XLLTabLWTzEZP7
4sBJtk1lGsRH5K+C6byNanpA31tWXFskiGz4LeXqm+TkRwCaBnrWV4Q7WU8hooui8fFg
o/2nFaW6MwDiq8IjUGOFa277au4e0dTUJW62EOsw9PLGD5wTewOkkLzU+3JHNd5V8AKe
9Vmg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716796; x=1749321596;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=LNmAyfWjthm2OoYu5rb89I5Fn5ozA8/1Vp5gyVNMnWg=;
b=KxEgorm0lRgNFZHOev/xmNbvPOjiELKQkKnmBwrbnECvFCZygmOk+kB3S4f1nBJny/
yS12dQo2KND3bWcU8RkDQPQHPW9hHzi99c13/KS8Rs2dJTkPDAGLQ5/kBxmr9YrfTt6W
q4Z8FIwgoNnDJGvtXJOHH4slvT7NdJG4frR4pjjBqxGE3FBNeB2qvIcJ0aQR06dP/YO2
I97cwTZtG/vTGjmcfiTBzj+r6z5mDNNZRi1tpcoLNYlxG1yyOZIFSi9wdplhRqtjM4ca
ybY3eY3X12U61SnC2+OgcPl2MJg8GKPXxtqe82t5BlCtNrU2vVWNJXYseqARIuNboQ9l
NzNQ==
X-Forwarded-Encrypted: i=1; AJvYcCUrTBaBIe+i4HHZA4/dEmIOiGVx90q34QvYFet8j0lQCIB9RPfnvkLFdAW2l1mufAof2yJQn25l1TK9@xxxxxxxxxxxxxxx, AJvYcCV2pu9g3YpnE/7kWtSmbWj2Sqhnu1ixh9jiSdJyLehkucAqdHVz3nsf8s5GEja/DtpMeOsXAGXh@xxxxxxxxxxxxxxx, AJvYcCW7Xcb2/WcNIv+7F8XLBob6ipsniVPk4UxawGoIIU9vcQ9b5drJM7rAxQ0whElPo5Rep+gPNA7ITFQh6Fr/@vger.kernel.org
X-Gm-Message-State: AOJu0YwFb94yEnSgBbXFWgqm5fNhgXCxcyb8jrqoh8lxvcnSs2jeOgo7
Eu5Kda+PaTKhehFjj3QxAUrvSTKahdki4qf+V6K8CiH8fnJXno+dz5/K
X-Gm-Gg: ASbGncu0VKsQ8XI2IN6DEq78HLhwglRYVq5X+/y6iuNhCVrUy2BqZF3gPYKbj1Ah5GY
ny6WsGTIYWPZhv9jN+40js2/tV2Dmpp/JDytgPYFYYzKTlFDRvWEfkmGjRb/rtfhgw9EiWrkg+R
1yGaBPaasgfOXF25S40lrxNc14oSQgRI9YtdK3Fz0heGD/AnP4pu9szI4af+nXy6UDbTrAmWD40
qIr1rV1W0vMl8ZVrch1MY7dVsCKDDRzB0o2Zz1WmmXYJmDpu/EcsVqw0ZsMmK4H4v0LYCdVfgE4
ld5zecyk3oDsNa62IRU4mKIYqS0ccuSre3fj3wLU87WYuzXh9b4i5qn3OAEg8PEVrlWH
X-Google-Smtp-Source: AGHT+IGnokTqe2k6JjA0Dh07tmyGJBv4+/KSD4G2Vt+oE6wT2goM5tOBSfJWZO/rloJULn1dCj+Cjg==
X-Received: by 2002:a05:6a00:14c8:b0:736:9f20:a175 with SMTP id d2e1a72fcca58-747c1a1f412mr9111124b3a.2.1748716796351;
Sat, 31 May 2025 11:39:56 -0700 (PDT)
Received: from localhost.localdomain ([64.114.250.86])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747afed34fdsm4888915b3a.75.2025.05.31.11.39.55
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:39:55 -0700 (PDT)
From: Kyle Hendry <kylehendrydev@xxxxxxxxx>
To: Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Heiner Kallweit <hkallweit1@xxxxxxxxx>,
Russell King <linux@xxxxxxxxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
Cc: noltari@xxxxxxxxx,
jonas.gorski@xxxxxxxxx,
Kyle Hendry <kylehendrydev@xxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND net-next v4 2/3] net: phy: enable bcm63xx on bmips
Date: Sat, 31 May 2025 11:39:13 -0700
Message-ID: <20250531183919.561004-3-kylehendrydev@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
References: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Allow the bcm63xx PHY driver to be built on bmips machines

Signed-off-by: Kyle Hendry <kylehendrydev@xxxxxxxxx>
Reviewed-by: Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>
---
drivers/net/phy/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 41c15a2c2037..0f2956ba472d 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -156,10 +156,10 @@ config BCM54140_PHY

config BCM63XX_PHY
tristate "Broadcom 63xx SOCs internal PHY"
- depends on BCM63XX || COMPILE_TEST
+ depends on BCM63XX || BMIPS_GENERIC || COMPILE_TEST
select BCM_NET_PHYLIB
help
- Currently supports the 6348 and 6358 PHYs.
+ Currently supports the 6348, 6358 and 63268 PHYs.

config BCM7XXX_PHY
tristate "Broadcom 7xxx SOCs internal PHYs"
--
2.43.0



Return-Path: <linux-kernel+bounces-669215-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A7EAC41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:40:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 0FE5B9E3166
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:40:21 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 611981C4609;
Sat, 31 May 2025 18:40:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bMi1NUGp"
Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 360791AF0B5;
Sat, 31 May 2025 18:39:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748716801; cv=none; b=RySAEJDl0JzE9GiaC3ruTviB3chCdK8YwFCB/CmF1iTcZUhTrup6zyLuhlARKMmDjsg3IcVt56aJDCQM5JedNLJ2gqgM2lrNvLmgGcpIA/qwZPazDR1jZqDynwnH0tn+uy8Zm/dir0qWrIHpTqkR7dox+reAqqTcqV0VbplKJzI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748716801; c=relaxed/simple;
bh=8ROhfOx1dZXMzd/J/NH+P2v06NXrcGFScq6nUz4t7lo=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=WBPf9prlIS7ci29oeeB57pwTT5FGxn4emr88OJqsjp7ublu5YExULmiqjRpEeTkotQ3R1DKKGVzvK1/LZ/Gp2zlUj1cxjjc5C9rmSHvNSx0sx1IbOzPGjogDigNHoEiYPeL2DlRfMGhThP1oLrdckinoA9/a899BU0VTQfa1bHo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bMi1NUGp; arc=none smtp.client-ip=209.85.210.170
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-74264d1832eso3347632b3a.0;
Sat, 31 May 2025 11:39:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748716799; x=1749321599; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=dewp64/KSNaOuX5WwZpls97smF8ZBQ6NIUWA1VX9E64=;
b=bMi1NUGpnRj2+t9Yy3S9V1H7piS+i4idtjiplnngoI7zryehHV5a9mEI4MorT+N13J
M0daeaSkXYfBg3YxCVz52hUFR/zpmMjRDdB6IFsxk+Dep0yHITnY3BS3QU8MhCaDHYuh
EmFde0p0z6mCm4H96zncSagSeW88dM07ADBfdzQ6FSoY8XqKZl6eUNomJ0rZPlKS9NXy
4Wo6aZumAVhvaHF0IJvMCkjMiEsqeirv81wKxd4tREIJRtfJvG2gkiKTgM/ksBKyhjkU
GXc5rqFoRFqI89VpfE8guyNoLkh6p0AllOi+YgTAhdWLSWc+YNs1kPrTGnEHtAEFT+SZ
VXcA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748716799; x=1749321599;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=dewp64/KSNaOuX5WwZpls97smF8ZBQ6NIUWA1VX9E64=;
b=q06rU2A95yWuEUZdeY5w1AEBCnK4CB7mcs0T0ru00VH8N8IyVGoYcfyGC2wzdLDx1Y
syCQyYJFf9Cpj7RquM5QGGGb+y9gUNV91DEBSDu80y4ppsqeaKgElo92G003Xnz8Emx9
rfZYD8NeS1c8e3YT/upUj1w/TOCjM4a2G5zhj+0d+d/JxublNWJ646kZysNPOCmS76q+
GpQx2Xl3SVyf7AJMfb7JzOW2hL2kCAbRcPJ0lquk/SXfMLH1kP0MaB/jxoMo+rCmtkQS
7Z11UGAW4uxZ05sbDy7Nacl8kk9BWrK/tY/0PDR2iNmv+cSh8WgRc7FE1wZ7OnrRBVdZ
JPiA==
X-Forwarded-Encrypted: i=1; AJvYcCVRwjsoTydn/9zDVrPFvi/R5J+jttfnTHK9aXfWhHVFRFJRQqBCNK5VIo1ZTP6cPMiG77ad74kIKEnp@xxxxxxxxxxxxxxx, AJvYcCWR0e8BGEEnQwqPOv7xNOhzsi2iDhMoTWoI/ZqmPeaIFuR4zGNNaK3OPvrLnOidRIRuMdhBMOCwaWUYsJ2V@xxxxxxxxxxxxxxx, AJvYcCXAy2TDHYXDzeWnMWLMxCZQrKtE48PNOGJHez7wcpVIhCEF6HSE93RfDGDgPzotS/J11rJImzMt@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0YzWeY6Pux9j8EgyUR8yA00iqEWWSlCXF4fqs/UdbNQtzEaIVaUu
C5g2QgBGDUBOwM7SjfPysZgHd9MnX6YqCfQlaVOx28GYDpR/xhsQlQlU
X-Gm-Gg: ASbGncsQ5qUPSKK5pvA3WNJHfng5Cll0qJlwYdcIiE/W/cSD0bdRqz4ZENmf7elNEW8
3KJMSM/QLZyo72t4Ux+b3AdcJR0x5bhTl6IVxhazlLBMoO8cnGBLQXbIZso+nSub8t9VkRO2Uka
crhH93AwBHMN1QnMO1QOStQN5UNOr3Br31jM4TQZHLsyctOeQvzgInAhxojT2FwS2Z99E9yIKPt
wqk797FlHbrRnmhsyvbUKePHyhyOdbDbTmvX22CcAk+LZLvpTkyf0u7qRpKmYhqakKSdzauqSSb
pVzZ6TP6sSf7c2xIRmqRWXF32Y8jbBTMQo8MZuS2VvUmCklNHyAvXNDvay/m7HlFkIGt
X-Google-Smtp-Source: AGHT+IHyLqkJOjcoRO5RDy/+OVCphIHcBDzG7Ali+Qrh1Tdt3SQjYclEn9txgHGNc6WiNTPHZPtQpw==
X-Received: by 2002:a05:6a21:600f:b0:1f5:931d:ca6d with SMTP id adf61e73a8af0-21ba110b894mr3825133637.1.1748716799414;
Sat, 31 May 2025 11:39:59 -0700 (PDT)
Received: from localhost.localdomain ([64.114.250.86])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747afed34fdsm4888915b3a.75.2025.05.31.11.39.58
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 11:39:58 -0700 (PDT)
From: Kyle Hendry <kylehendrydev@xxxxxxxxx>
To: Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley <conor+dt@xxxxxxxxxx>,
Heiner Kallweit <hkallweit1@xxxxxxxxx>,
Russell King <linux@xxxxxxxxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
Cc: noltari@xxxxxxxxx,
jonas.gorski@xxxxxxxxx,
Kyle Hendry <kylehendrydev@xxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [PATCH RESEND net-next v4 3/3] dt-bindings: net: phy: add BCM63268 GPHY
Date: Sat, 31 May 2025 11:39:14 -0700
Message-ID: <20250531183919.561004-4-kylehendrydev@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
References: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Add YAML bindings for BCM63268 internal GPHY

Signed-off-by: Kyle Hendry <kylehendrydev@xxxxxxxxx>
---
.../bindings/net/brcm,bcm63268-gphy.yaml | 52 +++++++++++++++++++
1 file changed, 52 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml

diff --git a/Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml b/Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml
new file mode 100644
index 000000000000..1f91cf0541eb
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml
@@ -0,0 +1,52 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/net/brcm,bcm63268-gphy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Broadcom BCM63268 GPHY
+
+description: Broadcom's internal gigabit ethernet PHY on BCM63268 SoC
+
+maintainers:
+ - TBD
+
+allOf:
+ - $ref: ethernet-phy.yaml#
+
+properties:
+ compatible:
+ const: ethernet-phy-id0362.5f50
+
+ reg:
+ maxItems: 1
+
+ brcm,gpio-ctrl:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description: Phandle to the SoC GPIO controller
+ which contains PHY control registers
+
+required:
+ - reg
+ - brcm,gpio-ctrl
+ - resets
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/reset/bcm63268-reset.h>
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ethernet-phy@4 {
+ compatible = "ethernet-phy-id0362.5f50";
+ reg = <4>;
+
+ resets = <&periph_rst BCM63268_RST_GPHY>;
+
+ brcm,gpio-ctrl = <&gpio_cntl>;
+ };
+ };
--
2.43.0



Return-Path: <linux-kernel+bounces-669216-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5DCA241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:48:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id DE3003BD450
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:48:35 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3BED41A239B;
Sat, 31 May 2025 18:48:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="JnZK+hfy"
Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131])
(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 1C2D71624DF
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:48:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748717328; cv=none; b=kXccMGytgZHqptbGDpVDmFxRh+TPtalYZwP/P9Obzx9uBLuDz00Bc3FzbjZ+4fB1fRGLntbP2cTLQEJfOOnNgg9099CI7O750WDrz5j0TzIR82pvc9Wv2ZtwFnqdfHIwkbf2BLnM7C5cxBBrBC5b7GZniJ7xfquXmvLevCtqKKw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748717328; c=relaxed/simple;
bh=twnMRSAjtTxRsTLOV3TBRxjz+geOQMUR7QVp+z8lBDY=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=hv2vdTHugPWXxZsRlcH3cHRmW/4jsl/Yyz/LR4MgRUaZKT41nSwil7iWFTREbBl3HYB3Y2j7R9gM2eGG7VMcykOTkTge30K+d09VkxLImpV9OcucAWWdb6RbHW0Zq05eu/IxOnFyLVMQipS9yoZaXilpMXwKLucQGFkNCI1UCl4=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=JnZK+hfy; arc=none smtp.client-ip=205.220.168.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279867.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54VF97QF009209
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:48:46 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
fq6UVpWTFma51ctoNBqE7AuMMwmya04U5DV/dQ3iAq8=; b=JnZK+hfyv1XyuO4x
5QKELThanYZBqy59WIWL1V8nS2NJ147LveHw+6bJ7QutoL+kEqsqNzaleLRzpqFm
/oAepbXDPLK5Xl6gHfRVnGij5W2VJn1QPY0TUmF2s0rlm1lpzVb4nqtwSLndkvYg
B3hWGLJfteLFuEjt0ZJ65U7FfiMJsd7WZHOushh1sup2Ck/eB2rG0jsPgDZDkhys
y2iZLOkitIUEvMUzFzhZJqmKRBWF+BL5pRlSxvI63EESPg5T3l+pVaj2WU2G/U4w
0LbyDISVPzIbsADafH6OooG/BcyLRcEpggYdCHrmWGrWrDMiXWOUxdKx9wFq1nMf
jyOfHA==
Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytkw97e3-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:48:46 +0000 (GMT)
Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-4a42d2df3b5so5930771cf.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 11:48:45 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748717311; x=1749322111;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=fq6UVpWTFma51ctoNBqE7AuMMwmya04U5DV/dQ3iAq8=;
b=qcxV/5a3fQoWVu8LaZP3/Jxul+6EtV3mNA5HWhsJ08kLpmkDtozwHVaLLqu4vURs7N
6E/7XYHk+1s0x9raqr+dIGUUCcr3VKOnFl0h1DANFR81Gh7RkzdV5hITBESGCSxVFMRd
2VxTLes4MBa0GevrPE9oQSr3EONTKKAsl3Fh23a6FPWO/d8RMWj/D6BvP+SNZz382BTA
eY4wM4dRVH1z8OSp12PjkSajP2zRQMOdf7+K3B8ZhTMUKemhtI5nC0NOGQO58pBrokWs
fzWcw7f36HllQ52JaJun1wVnBmJVleL16wzYSTpGIp24UwLMnMopw5wBvkAQcAvl9Va7
EuIg==
X-Gm-Message-State: AOJu0YyxO3pimSoHH4+7oMALqmBdAFERSu0D0hQfw0gE3bB2YQwSWy+/
SFyGH7LVyBSuJGzbfZDBoNoTTd25+SvJ+FPSIEmm4SHfxEa/LfgYa6eOOfXc2IFlj/tz6CWlA5r
PSpUxC8h8Sf00ODGKuErnBagFl26WbLjuFIp5l0bIHW5pJCDQdK6BzkffOL4W9t3pDfE=
X-Gm-Gg: ASbGncv/CR9e726E9WvfixGFgUh9m+ZaLRMtXHll8sFNMTAkazMffodxpkgTgMUfCCc
3J/sOh0NgB4ijbF0v9RMGn13hiRd7AhJT7HTOtSdlorXGfGEcVjH9XKafZ0TSj81Bl5tLn9DdsT
p/tv12u688uM907ORkWKW+Z/rwm79voeVHRpzpuQ1aXM1EeIUpQ/5w0wH+LwAt5zyLD+iTXt4TU
bz1DEXtkLwV6rruNyRj/96p6Gu1sKnuvXdVLZUIYr9sLzZdfyVzpsSObCRb0QdB8hFrwUZyt3KQ
sckF2twjrNbiQfTC4+wQgDQCOxkGwSlymP+kiFL2Ra/Dcu2n3+1MO7VsQmL/BdIdVw==
X-Received: by 2002:a05:622a:44b:b0:475:820:9f6f with SMTP id d75a77b69052e-4a44315f061mr44406901cf.9.1748717310676;
Sat, 31 May 2025 11:48:30 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IFS50jxW6Qje29AU0C9sBepph7zG42LOAm/3jLmwP8x0sfmPiEZkOM44vaelCgiKPREG+C6ew==
X-Received: by 2002:a05:622a:44b:b0:475:820:9f6f with SMTP id d75a77b69052e-4a44315f061mr44406631cf.9.1748717310234;
Sat, 31 May 2025 11:48:30 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-60566c756d2sm3678883a12.43.2025.05.31.11.48.26
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 11:48:28 -0700 (PDT)
Message-ID: <4b4925ce-3a01-4295-9864-a43c65aab530@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 20:48:25 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 4/4] arm64: dts: qcom: msm8939: Add camss and cci
To: vincent.knecht@xxxxxxxxxx, Robert Foss <rfoss@xxxxxxxxxx>,
Todor Tomov <todor.too@xxxxxxxxx>,
Bryan O'Donoghue <bryan.odonoghue@xxxxxxxxxx>,
Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>,
Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Conor Dooley
<conor+dt@xxxxxxxxxx>,
Bjorn Andersson <andersson@xxxxxxxxxx>,
Konrad Dybcio <konradybcio@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx, linux-media@xxxxxxxxxxxxxxx,
linux-arm-msm@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
=?UTF-8?Q?Andr=C3=A9_Apitzsch?= <git@xxxxxxxxxxx>,
phone-devel@xxxxxxxxxxxxxxx, ~postmarketos/upstreaming@xxxxxxxxxxx
References: <20250530-camss-8x39-vbif-v3-0-fc91d15bb5d6@xxxxxxxxxx>
<20250530-camss-8x39-vbif-v3-4-fc91d15bb5d6@xxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250530-camss-8x39-vbif-v3-4-fc91d15bb5d6@xxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Authority-Analysis: v=2.4 cv=JIE7s9Kb c=1 sm=1 tr=0 ts=683b4f0e cx=c_pps
a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=TqukyxIwAAAA:8 a=EUspDBNiAAAA:8
a=siKOB1rTJ_YAM3DqF24A:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22
a=e_wvXvRcY2B3oMitRgDS:22
X-Proofpoint-GUID: JTL8jiRlBsdop6fGUEiPFswFQ-7E7ANp
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDE3MiBTYWx0ZWRfX7mZw+6asgQFt
okYMYdLeLshr+Z3J3ZHyQN0tkiM0JkWSVNTXGdSAJE5UqCIsVvEWfUg5/C77ZnrOqKpSkqFmyHj
crugNYiWGVwHWLByA9dqqlAneUq1UCpE+utj/q40Js2hlF8+7Uumb7LLbUbZnIgnSCNb/t0jzeY
EyGqPBIZjF83UJg04C5TU/Ex6FLKdMMVtdCMYQq4ZxTGRUWp5fwij205W+h1dpA7OTvV7wxLqD1
s3OhuLSbTaYwtxMll5Haz3Eld4kzxZ3sT5nAZkIstcAmsKeGzBfCSSIM4aUSw44sRNOSUxLOGky
vj+WMcsI+sHyB9HAa6tmy/kJf7p688Mm/iGgn9o+hdLwUSYJvDg9Y0SuTHzrnmSetkDfQYeJkzS
xRICzwcN51sZ/G5TuqaBtb91Wv27Y+KATvQZ+6jHUGlxvQvXLwhYkbfHRZPMW9pt8wanLkZx
X-Proofpoint-ORIG-GUID: JTL8jiRlBsdop6fGUEiPFswFQ-7E7ANp
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_09,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
mlxlogscore=759 priorityscore=1501 suspectscore=0 adultscore=0 phishscore=0
spamscore=0 impostorscore=0 clxscore=1015 malwarescore=0 lowpriorityscore=0
mlxscore=0 bulkscore=0 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505160000
definitions=main-2505310172
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/30/25 11:00 AM, Vincent Knecht via B4 Relay wrote:
> From: Vincent Knecht <vincent.knecht@xxxxxxxxxx>
>
> Add the camera subsystem and CCI used to interface with cameras on the
> Snapdragon 615.
>
> Signed-off-by: Vincent Knecht <vincent.knecht@xxxxxxxxxx>
> ---

Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>

Konrad


Return-Path: <linux-kernel+bounces-669217-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 118A941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:16:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 8061F9E26C0
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:16:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id F3D6D199FAF;
Sat, 31 May 2025 19:16:27 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="m5PpyCzh"
Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82DC21A288;
Sat, 31 May 2025 19:16:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748718987; cv=none; b=X9h4UMa4Lz5rNEVLzVBTX8MxVJVJtcdYl7fPzAWF3Bfo2GOZAt0hDNXtzy6ZdjDkzitwgC1/gsi1r4E+PsPXX5tOP9uDOe9Hu3wZXffyTdUv9EenBs0JK5xI/SCBYyN8YEJaRey8T56VujSwSvGlzq7yxcg/DWqJ8JvDkfjNaQg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748718987; c=relaxed/simple;
bh=9z5f32YIThyjeERpUHPDhcWPSC16ORf2Hbk+NhjEWKk=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=Iw4CGlMHv3o0sMosza7m+7bVmKRgKiZ3wkVADxjcNpIJF1NQ4InkCYyUWmOtMlqpKU1Cl7Ps0BNFyfWrGDXTD6tKyko3yLNTnDEtFyBl/5/pM4AkoEP76fOyUDcCdsjaFXbe6TQPofVVSnjt9v/XS31KNyTbotUMqMUYv7b2vFg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=m5PpyCzh; arc=none smtp.client-ip=209.85.221.49
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-3a4f78ebec8so1089290f8f.0;
Sat, 31 May 2025 12:16:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748718984; x=1749323784; darn=vger.kernel.org;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date:from:to
:cc:subject:date:message-id:reply-to;
bh=ba8Ewaax3skZGpn2w/AasFrW04rf1D6XoW4B0rxSXrM=;
b=m5PpyCzhZNOANKExZeXoesLzv30SxfXBNvyIH6efZv703QOAMJ3RGUjE6qp3LDSgUM
B4kiR9xUPiMcVrC5v/S9YKwnV9APchX+Djdx+a21SHqQlWWArp5ScMLuFDpF2uNccxus
QjibrQZ7P7pibrLZmkxcMnU+wVDU3h6bqTm1R/tNkXOhc1IzGKPw/75Xjtd7kQGeHy6/
3e5/vtDc0PJu+rqlwUWm86LWbL5Q76CRs4aE1nmRXaRinHNkvoXI2VcVJhw+CjSnfTLj
wvC7NvvosqpZs4hoQ+Hudc4oCouG3B3WSSs2s7V43Uz7DPVI7KSj6xxMsboYst4vWAss
T/lw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748718984; x=1749323784;
h=in-reply-to:content-transfer-encoding:content-disposition
:mime-version:references:message-id:subject:cc:to:from:date
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=ba8Ewaax3skZGpn2w/AasFrW04rf1D6XoW4B0rxSXrM=;
b=Rk8PrC1Q/1c/XeHhBDMMh5HjWvzDr8TXaBdF3KU6HJSbnvxrwx7iEYXxKBQCEUwg4d
MtagDBZkbiAGH5Ur4L2U4fKnZ9cdFIHaRr9P5k80AfDsSumu6lsHGLVECtbmbk57frRY
KnB1HuRrQH2Rbm7XyvUbHSPD+nBS7WD3+SkDOp8NvuwTSLiYfttINAPSPVgAbpzRq/kt
odb7GVaMrB+cV8E0m13tckuT4c0Fy6vYSS0tmTIomuvnF51lWGn4eQc5wscSuMjx2dyy
amIVrvOBz57kFrdT1g/6LrtZrrHz4T/sY01UAICcN7jsyDbAXPnOtt7ZLURZd5dRWsgK
mBMw==
X-Forwarded-Encrypted: i=1; AJvYcCVKBcxT4191gePfMHUK84Mbf7MvyIUWVBc4c77um1HwPHNskVPE9rtmGqQlDgLpgLArRKynYhEvL4UrHHM=@vger.kernel.org, AJvYcCW/PwGupWAPhtA+O1wdtSYVt+sSZ/HehudOoOu6Vke6lPJ7xFY/QCW8QSqvgmdNYaKeb9eI3cSmuSBg@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yw0ehvzR0BwjqAKgwGWVPFJCnkwkO32TZzhpqoWyENlHlpkkumK
0d4RlUReEo3oPtYay98wV93YNu6BZpem2+Dsj4/8mzTLZt9yULE3Oxf1
X-Gm-Gg: ASbGncsdsAHbja1Na9aNAvDo/r5fdP9w0vjyzvqSZT1tqTIZfOgmjc/2JBhqo7wk9yr
+HbXgFtBRKEEo+hQznbAM+BEePp/HIm6HJYYdXQzMFaB+DZ/KFNhQ6+jQ4QqHUNoZiF+EINY6n/
p72/uIRjewZI0GexHFSelYlzhAHF1DR7FTKSC4MX17EfBn+TppvDAoph2NW4w/+jxOjsDYLkuHJ
VRIcFHUbjaKYdvD4IPl39y0scGISEAP2+BogxkrFsqf+F4TcKcn4+LWAd3H3DOI2FN//r3xs4Zd
1HDfzPPBKOwJWzrFDWQPx4nb6cUOFhaslkiZtz0s8ngi/TGjpMqwHtyU7K5tP6JwnC6xWVWAt30
=
X-Google-Smtp-Source: AGHT+IGaDqOsLAEEskaF2msEBC2HTgDRmrS8aWEIGjvPriuNLUkbzs9Pp0q/ZA+X4ZybR45ggCs+AQ==
X-Received: by 2002:a05:6000:2082:b0:3a3:7987:945f with SMTP id ffacd0b85a97d-3a4f89e24e4mr5529224f8f.57.1748718983546;
Sat, 31 May 2025 12:16:23 -0700 (PDT)
Received: from debian.local ([2a0a:ef40:eaf:3101:2d68:caee:7294:3fe1])
by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-44fcd135f6bsm103309015e9.3.2025.05.31.12.16.22
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 12:16:22 -0700 (PDT)
Date: Sat, 31 May 2025 20:16:20 +0100
From: Chris Bainbridge <chris.bainbridge@xxxxxxxxx>
To: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>,
linux-rtc@xxxxxxxxxxxxxxx,
Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>,
Mateusz =?utf-8?Q?Jo=C5=84czyk?= <mat.jonczyk@xxxxx>,
lkml <linux-kernel@xxxxxxxxxxxxxxx>,
Anna-Maria Behnsen <anna-maria@xxxxxxxxxxxxx>,
Frederic Weisbecker <frederic@xxxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>
Subject: Re: [PATCH] timekeeping: Add a lockdep override in tick_freeze().
Message-ID: <aDtVhPJD43DKNG3A@debian.local>
References: <20250330113202.GAZ-krsjAnurOlTcp-@fat_crate.local>
<87sempv17b.ffs@tglx>
<20250403135031.giGKVTEO@xxxxxxxxxxxxx>
<20250403193659.hhUTgJLH@xxxxxxxxxxxxx>
<87r029uh3j.ffs@tglx>
<20250404133429.pnAzf-eF@xxxxxxxxxxxxx>
<aDtJ92foPUYmGheF@debian.local>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <aDtJ92foPUYmGheF@debian.local>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 07:27:03PM +0100, Chris Bainbridge wrote:
> Hi,
>
> I'm getting "WARNING: inconsistent lock state" on resume with this
> commit (92e250c624ea37fde64bfd624fd2556f0d846f18):
>

Further testing shows there are some required conditions for this
warning to be shown. The suspend must be of a short enough duration that
it does "not reach hardware sleep state" (according to amd_s2idle.py).

Also the warning is only shown once, I don't know if this is because the
conditions for the warning only occur once, or if there is log limit
somewhere that prevents it from being logged more than once.

I can reliably reproduce the warning by running amd_s2idle.py and
waiting for the automatic resume:

# ./amd_s2idle.py --log log --duration 5 --wait 4 --count 1
Debugging script for s2idle on AMD systems
ð??» HP HP Pavilion Aero Laptop 13-be0xxx (103C_5335KV HP Pavilion) running BIOS 15.17 (F.17) released 12/18/2024 and EC 79.31
ð??§ Debian GNU/Linux trixie/sid
ð??§ Kernel 6.15.0-rc1-00002-g92e250c624ea
ð??? Battery BAT0 (313-27-3C-A PC03043XL) is operating at 100.00% of design
Checking prerequisites for s2idle
â?? Logs are provided via systemd
â?? AMD Ryzen 7 5800U with Radeon Graphics (family 19 model 50)
â?? SMT enabled
â?? LPS0 _DSM enabled
â?? ACPI FADT supports Low-power S0 idle
â?? HSMP driver `amd_hsmp` not detected (blocked: False)
â?? PMC driver `amd_pmc` loaded (Program 0 Firmware 64.73.0)
â?? GPU driver `amdgpu` bound to 0000:03:00.0
â?? System is configured for s2idle
â?? NVME Intel Corporation SSD 670p Series [Keystone Harbor] is configured for s2idle in BIOS
â?? GPIO driver `pinctrl_amd` available
ð??¦ Device firmware checks unavailable without fwupd gobject introspection
Started at 2025-05-31 19:46:33.911590 (cycle finish expected @ 2025-05-31 19:46:42.911616)
Results from last s2idle cycle
â?? Suspend count: 1
â?? Hardware sleep cycle count: 1
â?? Wakeup triggered from IRQ 9: ACPI SCI
â?? Woke up from IRQ 9: ACPI SCI
â?? gpe03 increased from 140 to 148
â?? Userspace suspended for 0:00:08.256333
â?? Did not reach hardware sleep state

If the duration arg is 6 or higher, then amd_s2idle.py reports that the
hardware sleep state was entered, and the "inconsistent lock state"
warning does not appear. If the duration is too low (e.g. 1 second),
then the laptop does not wake up automatically, and upon pressing a
keyboard key, the amdgpu driver will report an error resuming the GPU,
and the GPU will not be working. (I don't think the amdgpu problem is
related to the lock state warning, I'm just mentioning it for
completeness). It is the state between these two cases, where the laptop
does suspend and resume correctly, but the suspend is too short to enter
a hardware sleep state, where the problem occurs.


Return-Path: <linux-kernel+bounces-669218-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 196C641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:21:42 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 266203A6F96
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:21:18 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B1C881A2C27;
Sat, 31 May 2025 19:21:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VBcHksD+"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 EB17214F70;
Sat, 31 May 2025 19:21:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748719291; cv=none; b=shKhDC1kscBpFPmEdQJynrR6StRSA162TGTpGjAHNNtNrRTusD/Gkzbu8q4hHiJnm+1llU8YQTs64X64FyDlrzH8607LZNb55hMdqfNwZiLz8AkFq6C1szhEI4y1WMC+RyBYcbOhmIY4o95Rm6l75JWmr4PPpBbtzm06Hp6lj6s=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748719291; c=relaxed/simple;
bh=KBQV2QoLOKFlpmeZPl3AqTE9sws1seuovCFalTgbV9A=;
h=Date:Content-Type:MIME-Version:From:Cc:To:In-Reply-To:References:
Message-Id:Subject; b=kVMr3a9uW+NsSbq0AnOYH9V/XH7DaNBtWCGn9VI0fsuJNvIVxhXLfD30Sj7eEWGy7Bs1val57gAb5K9XLy7GfI+1gn1TFXCZdTRINZBU0Xd+dl36BzMIAF55F401GBJ8pDasne02XSkMvozMFh1Vb58pGAna9IUQsrPKwWPFCkA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VBcHksD+; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0E345C4CEE3;
Sat, 31 May 2025 19:21:29 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748719290;
bh=KBQV2QoLOKFlpmeZPl3AqTE9sws1seuovCFalTgbV9A=;
h=Date:From:Cc:To:In-Reply-To:References:Subject:From;
b=VBcHksD+WjkQ6iYc5Cth9A7OuE1UiWEzJRHIzEHbHWWia6iveS89CjbOmvCdcvNSA
RL1TQxnkGs/IJfUhlUWejJZWtk/qxaapeJTY43Q9S1ViMqf47MTBo1NsXaA2Z83YK9
xIwWeKSbT3EwmPo8WrqDap82wP2RVJEFp/Pfw38oDWwoyeBT914hzwRYBFIepE10jv
CE/aVIXDIihz3dLoIh7m3rjEuYB9NrTTMnquW7ZdjRpCUSud+eobC7eNYUoI7Ie4v9
v4mw2fTY0jFZEXEaXFHhStyP+NuKxJmE/xQa3OpDg0fbWuJQx5IKknZ6kFfwSw4jAg
sNJPPaS6hteXQ==
Date: Sat, 31 May 2025 14:21:28 -0500
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 8bit
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
From: "Rob Herring (Arm)" <robh@xxxxxxxxxx>
Cc: Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>,
Russell King <linux@xxxxxxxxxxxxxxx>, noltari@xxxxxxxxx,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
devicetree@xxxxxxxxxxxxxxx, jonas.gorski@xxxxxxxxx,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Andrew Lunn <andrew+netdev@xxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
netdev@xxxxxxxxxxxxxxx, Paolo Abeni <pabeni@xxxxxxxxxx>,
Heiner Kallweit <hkallweit1@xxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>, Conor Dooley <conor+dt@xxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>
To: Kyle Hendry <kylehendrydev@xxxxxxxxx>
In-Reply-To: <20250531183919.561004-4-kylehendrydev@xxxxxxxxx>
References: <20250531183919.561004-1-kylehendrydev@xxxxxxxxx>
<20250531183919.561004-4-kylehendrydev@xxxxxxxxx>
Message-Id: <174871928827.1012132.17536935109974520742.robh@xxxxxxxxxx>
Subject: Re: [PATCH RESEND net-next v4 3/3] dt-bindings: net: phy: add
BCM63268 GPHY
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


On Sat, 31 May 2025 11:39:14 -0700, Kyle Hendry wrote:
> Add YAML bindings for BCM63268 internal GPHY
>
> Signed-off-by: Kyle Hendry <kylehendrydev@xxxxxxxxx>
> ---
> .../bindings/net/brcm,bcm63268-gphy.yaml | 52 +++++++++++++++++++
> 1 file changed, 52 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml
>

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/net/brcm,bcm63268-gphy.yaml: maintainers:0: 'TBD' does not match '@'
from schema $id: http://devicetree.org/meta-schemas/base.yaml#

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250531183919.561004-4-kylehendrydev@xxxxxxxxx

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.



Return-Path: <linux-kernel+bounces-669219-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4BF5C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:21:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id C166917E85F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:21:52 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 535C91A0BFE;
Sat, 31 May 2025 19:21:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="FEDeIVeU"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 7587E199FAF
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:21:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748719305; cv=none; b=s9ecjVoJNsHAVpKoZXvsvxXpzvMfZT8IbhX1amcp/AEkL92O0wPHFwDWbBL4mL+5PDatCCH0NpOxiKZHltG9sSWjR1kA93YY3961FCxb5H5tQJKBjC92c7msTDzapwQ4zQeu8/H2blccIWBZFq9JgbjC4efwbWtJ+KZhqX16Cqs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748719305; c=relaxed/simple;
bh=KTU21gCk3/eglpPFsPrKfZ+Gc2f5WKIicJOerDScCPo=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=NjnI2KafzXY7lM6ZfpSjyJ2mFWnAoYImWhMHm2JTpmn2aR4ia2SeG0Ti1i4BYoAdeI5uoqobU4uEW0pPHgxOhNbGqS4JliM/0mOGBm/m1nYVdp0EDjzd5j58jZLNPN81YyZiZfERgZawAD9Ri6/JKfZ95Iw9d1bHr4A/FarTTzo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=FEDeIVeU; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 88C17C4CEE3;
Sat, 31 May 2025 19:21:44 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748719304;
bh=KTU21gCk3/eglpPFsPrKfZ+Gc2f5WKIicJOerDScCPo=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=FEDeIVeU4wcOX5lVlEuECAvMRkxxj3r4/lf9epnC5Jg0VVBMxf7GVkUFjWn4yxMYl
tMjQTI6nGxGr2D+FJIcFF6wK5zrKWRQlSdXi6uhyIJMAaptkXA1BDHay6FAk1ytIMD
e4DUqinfZD95l+wHl936KUvboOyP1t0QgYGcdhso=
Date: Sat, 31 May 2025 15:21:35 -0400
From: Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Kees Cook <kees@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
Eric Biggers <ebiggers@xxxxxxxxxx>, Ingo Saitz <ingo@xxxxxxxxxxxxxxx>,
kernel test robot <oliver.sang@xxxxxxxxx>, Marco Elver <elver@xxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>, Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
Message-ID: <20250531-resolute-glittering-cuckoo-b6cd91@lemur>
References: <202505310759.3A40AD051@keescook>
<CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 11:20:20AM -0700, Linus Torvalds wrote:
> Konstantin - please disable Kees' account immediately until this is
> cleared up. Because this looks *malicious*.

Account disabled until further notice.

-K


Return-Path: <linux-kernel+bounces-669220-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A870B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:25:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 498C63AAAC7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:24:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 366CA1A238A;
Sat, 31 May 2025 19:24:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="QAt7a0Pc"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16])
(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 BCBC61A288;
Sat, 31 May 2025 19:24:52 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.16
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748719494; cv=none; b=NXQOsIuWbN1kQOdrjgsdmFZ/wdQp6UNv6KBA22lkGNBRP6PtpkFosLb5lJwbC25C1JYZWDl71paNzfwT/2RgqCrZ/uRiL2nyPHWROAItoDZcXh0+jdTA2OVaFUKykiBmVCBxKAmTv7TtNZjqlUzeHbzOwuZLggdbM5vyf8BbHek=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748719494; c=relaxed/simple;
bh=QoW1cZnLsDPdSvpdagAs8C1xegDkUJmpgu3+tJGkGUs=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=Q7qirCBCL/LEzaqpid5lDHAmOsycl+M0Cesol/2J5i0Z63mfwgiO/Y5+iYXTTuDsK2JQDvePXWpM4J95IjK8LTAfxxkLHrI1vzU92+j9rjimzHSAxUmV/Khs98NXHOliHtkjkPeIork0Dn9gCxVGKhkTRxuHGesY9AAMTQ5/g3U=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=QAt7a0Pc; arc=none smtp.client-ip=198.175.65.16
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748719493; x=1780255493;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=QoW1cZnLsDPdSvpdagAs8C1xegDkUJmpgu3+tJGkGUs=;
b=QAt7a0Pc0SLtLR5QiCUyfUXC59rC8ko1c2bPdeaQ11sFQ99AwVN3mloS
4Oe5tzBNlFkyzXl/uL2p+DJS/JKYAkDTg8rKyJu+xbTdP4yTxJCcazJ6N
yBJdU7n9T2jijP50DZI6FkDZyKa4D6okR1jElhu50P6qcoafw2bx0kZn3
KjoxOEK9QctC7dYmuOGpp90/3LvlA0a9N2blLO3wrmAz4n0DUdTLOvssz
87D99g2/zb8T7LBzPRKo2GRU+nKUskGS5DjJOYi7GRN53d94oQgN9ydYE
X6ZMNQlbk/kFwQgk6gdXxCedbt/jjl16829Ms7ErC+rrmRUB6jUYXddMn
w==;
X-CSE-ConnectionGUID: b+s6sZcdTImbyk0nksk3/w==
X-CSE-MsgGUID: E8u+x5STTt2KRuc4N6NxjA==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50840243"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50840243"
Received: from orviesa007.jf.intel.com ([10.64.159.147])
by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 12:24:53 -0700
X-CSE-ConnectionGUID: xMObRWRgTri/DSa7qbRFBQ==
X-CSE-MsgGUID: TVm4YCURTCOp8aQ+zmD8Fg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144813500"
Received: from smile.fi.intel.com ([10.237.72.52])
by orviesa007.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 12:24:49 -0700
Received: from andy by smile.fi.intel.com with local (Exim 4.98.2)
(envelope-from <andriy.shevchenko@xxxxxxxxxxxxxxx>)
id 1uLRp0-00000002Mr4-2ezZ;
Sat, 31 May 2025 22:24:46 +0300
Date: Sat, 31 May 2025 22:24:46 +0300
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Baojun Xu <baojun.xu@xxxxxx>
Cc: tiwai@xxxxxxx, broonie@xxxxxxxxxx, alsa-devel@xxxxxxxxxxxxxxxx,
shenghao-ding@xxxxxx, navada@xxxxxx, 13916275206@xxxxxxx,
v-hampiholi@xxxxxx, v-po@xxxxxx, linux-sound@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v1] ALSA: hda/tas2781: Add compatible for hardware id
TIAS2781 and TXNW2781
Message-ID: <aDtXfknr5yslSaM0@xxxxxxxxxxxxxxxxxx>
References: <20250531121733.17493-1-baojun.xu@xxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250531121733.17493-1-baojun.xu@xxxxxx>
Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 08:17:33PM +0800, Baojun Xu wrote:
> TIAS2781 is unofficial hardware id in acpi for tas2781 in HDA,

ACPI

> has been used for several projects. TXNW is the official hardware
> id for TI, will be used in new projects, including device on SPI bus.
> This patch will support both TIAS2781 and TXNW2781 in acpi

ACPI

> with tas2781 under HDA.

...

> + hda_priv->save_calibration = tas2781_save_calibration;
> + tas_hda->priv->global_addr = TAS2781_GLOBAL_ADDR;

No, just add these lines to a new branch.

> if (strstr(dev_name(&clt->dev), "TIAS2781")) {
> device_name = "TIAS2781";
> - hda_priv->save_calibration = tas2781_save_calibration;
> - tas_hda->priv->global_addr = TAS2781_GLOBAL_ADDR;
> + } else if (strstr(dev_name(&clt->dev), "TXNW2781:00-tas2781-hda.0")) {

Why do you need to match the full device instance name?
Moreover, strstr() is incorrect. Should be strstarts() or str_has_prefix().

> + device_name = "TXNW2781";
> } else if (strstr(dev_name(&clt->dev), "INT8866")) {
> device_name = "INT8866";
> hda_priv->save_calibration = tas2563_save_calibration;
> tas_hda->priv->global_addr = TAS2563_GLOBAL_ADDR;
> - } else

> + } else {
> return -ENODEV;
> + }

Unrelated change.

...

> static const struct acpi_device_id tas2781_acpi_hda_match[] = {
> {"TIAS2781", 0 },
> + {"TXNW2781", 0 },
> {"INT8866", 0 },

Keep them sorted, please. Perhaps an additional patch?

> {}
> };

--
With Best Regards,
Andy Shevchenko




Return-Path: <linux-kernel+bounces-669221-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CCE6141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:26:47 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 86122188283E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:27:00 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 42EC819D8A8;
Sat, 31 May 2025 19:26:38 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="KkEgYvgS"
Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131])
(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 00AC71A288
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:26:35 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748719597; cv=none; b=kJc78dgBSie4NR5bGdRF/bIdZnm9ghSx0+COktak5g057k6Kv2kZijOVSnZm5R3XahKqRrDZABDhTp/cN21Dagh+xX6xCMvJlAzq+BJL0HsBmU2HQz36jbH4gut9QM8K1z6xK4fpCJGcLzKfyVi7zabcUYOVvr+aXlHBFYwgv4o=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748719597; c=relaxed/simple;
bh=C6PuGWGN9MJXkw2ORL2a11VSngX8qZR5eK+WKh08IqA=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=iYTyuTi0ftW3ilLDbgNGwX7Kb58bRzZABKCX7oPxRu1hGnKS0bJ9HydFvx4916vhLRdeIpC8CtWiMKgkGasWZiKs3wDgEbSoBixD45iKCvxiLCTKk0vqshEVmVySZK8ev6y1WPIjZR1GM5Y4suxr5gHAncpj9CpZyrW/OMVxMPU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=KkEgYvgS; arc=none smtp.client-ip=205.220.180.131
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com
Received: from pps.filterd (m0279870.ppops.net [127.0.0.1])
by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 54VIjuZ3027061
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:26:34 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=
cc:content-transfer-encoding:content-type:date:from:in-reply-to
:message-id:mime-version:references:subject:to; s=qcppdkim1; bh=
CrU6uwD3Ib8Ilhn29fx2EmcIB6JSJ2gX+zA3T2fzlk4=; b=KkEgYvgSW1tfljJG
OgLzcdEiLuGCiMiRdn5Hy5LiNRJpBwT4QYXmH8roanWxxcWpV2k391goKEDBn5zC
AVHl2yAWt6ka1py0J3gDwBbBu5vz3rBtnml/YCigCxpV69EObug2Xn3WY11AdgBP
B3Vq8iNJc0v+K6id1TU8t2sk2y5iY7yB4c6FmdueNn/F9Y/APY/EI59DhC0faVvc
GHqGkH3l2CJ8gQaMFK6vcu/0xYgp72WnLaTxbmiVSP8pQZrMpukHOIlYRcbjapF0
2mN/yJYCSswuzuKKa5v6Uj95Wfg5aEgC0yE/5XG2YWCVnGkX5zk7vLmdzzbs36de
grrIow==
Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200])
by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 46ytp5s810-1
(version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT)
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:26:34 +0000 (GMT)
Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-7d0976a24ceso74348385a.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 12:26:34 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748719594; x=1749324394;
h=content-transfer-encoding:in-reply-to:from:content-language
:references:cc:to:subject:user-agent:mime-version:date:message-id
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=CrU6uwD3Ib8Ilhn29fx2EmcIB6JSJ2gX+zA3T2fzlk4=;
b=k977GSXuHeS2Md1jvIL4MA0UERWBiJgJOdobS2ZZkGl1cpjDzyhLIIONCh/1nfTkon
vYv9K/j/m2Ahn1eoTuiIyRPKdzHUj5TtjnBYn6hY7xFseHPpUe/LciU3448B45nv08ey
pS8Rp1Ax/RMQJYq6Vce/z8SVDRFJLDqDnuKg56F8lcBYkVuQKlVJ8qo5ssImG3pVxzJ5
qloyU9bgr2LSb+R5VtI3jjEjM7SGFmzrwzBJ1nDfWdn441uObOB+mAp/1PVcZiMaXN/p
W2x2oSvpNInb/lipzASREF10dCRsh/c1j4PvjGH9ddHPMXzbMKxNmC8j6yYD606wj2D9
dgSw==
X-Forwarded-Encrypted: i=1; AJvYcCVkzkAuVpju1ta6fFYbA7aQC/lk+Jj6NzIzd0xH5GYqpY2xsgO4/8deUogd6UW0McWIvOZ5uQbS7wVsc/s=@vger.kernel.org
X-Gm-Message-State: AOJu0YzJzSHoGQZ2WhZ8aFduXpEu7fOg2/hoYtVObTUE9duz5/c+YF+u
F9yNM5bvtqJW+3DFNa8mslSujnVhTEoi71bKhF25BIpgUV16tYvSp5wNCum82Ya+beg2+gqDCum
z96o2boEQvF6b1kpipti5qy5q4cREXYxXR1DSFLV0GOBuqvTfo1LkoqoMT2OECapjNwk=
X-Gm-Gg: ASbGnctJEQW8HgN88kazLn0DInvzXHz6daeyVhyVrDAgXxx1Jq1scGoCCvGDnbZd9XO
KD87ealnmhCAhCwRjaxICd6HQItB2rVV2HD350A+HOtTGHmxKpxxUqnBz+Pzfp7pTilUgTr9bRo
qQCaRdQ2m9C037LbN9h2hQ81CrE+laVkGk9lM0RHAvLlGvGMVYlOO6kZZePwgkgAI/fftNiGwtC
yxCnwjWtxuy40rgJpbl4rkICwnYWLcbeVEQTq3Q2IahhE2XtiRY9W7mbrZZwB6sHRHeze0eEHGu
TIr1gEM6equBMmMswlKHUGOb+xlPDPT5OPHgLycDHmJuYt24bt8ys7y2BllvFPqRRg==
X-Received: by 2002:a05:620a:394c:b0:7cd:14b:554b with SMTP id af79cd13be357-7d0a3df914bmr403842485a.10.1748719593869;
Sat, 31 May 2025 12:26:33 -0700 (PDT)
X-Google-Smtp-Source: AGHT+IGgWeFsZuQVBnuevfLlI3W+HHd3FvIh2wDCmEbb3BOsXmzJcbTj7lwjNVLtEsvsVJTLk0yQ6Q==
X-Received: by 2002:a05:620a:394c:b0:7cd:14b:554b with SMTP id af79cd13be357-7d0a3df914bmr403840785a.10.1748719593528;
Sat, 31 May 2025 12:26:33 -0700 (PDT)
Received: from [192.168.65.90] (078088045245.garwolin.vectranet.pl. [78.88.45.245])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6058563eebbsm2805063a12.67.2025.05.31.12.26.31
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 12:26:32 -0700 (PDT)
Message-ID: <03d76a6a-f027-4529-a917-2c5f92530de6@xxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 21:26:30 +0200
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: [PATCH v3 2/5] arm64: dts: qcom: x1e80100: add bus topology for
PCIe domain 3
To: Wenbin Yao <quic_wenbyao@xxxxxxxxxxx>, catalin.marinas@xxxxxxx,
will@xxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
andersson@xxxxxxxxxx, konradybcio@xxxxxxxxxx, robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx, linux-arm-msm@xxxxxxxxxxxxxxx,
devicetree@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
vkoul@xxxxxxxxxx, kishon@xxxxxxxxxx, sfr@xxxxxxxxxxxxxxxx,
linux-phy@xxxxxxxxxxxxxxxxxxx
Cc: krishna.chundru@xxxxxxxxxxxxxxxx, quic_vbadigan@xxxxxxxxxxx,
quic_mrana@xxxxxxxxxxx, quic_cang@xxxxxxxxxxx, quic_qianyu@xxxxxxxxxxx
References: <20250508081514.3227956-1-quic_wenbyao@xxxxxxxxxxx>
<20250508081514.3227956-3-quic_wenbyao@xxxxxxxxxxx>
Content-Language: en-US
From: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
In-Reply-To: <20250508081514.3227956-3-quic_wenbyao@xxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
X-Proofpoint-ORIG-GUID: Vf5b5OI6g1Ocq-vaeM3cjIqZV70GGj0e
X-Authority-Analysis: v=2.4 cv=FPwbx/os c=1 sm=1 tr=0 ts=683b57ea cx=c_pps
a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=FpWmc02/iXfjRdCD7H54yg==:17
a=IkcTkHD0fZMA:10 a=dt9VzEwgFbYA:10 a=COk6AnOGAAAA:8 a=EUspDBNiAAAA:8
a=ICgkrN6sfqZrQ0pjF_MA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22
a=TjNXssC_j7lpFel5tvFf:22
X-Proofpoint-GUID: Vf5b5OI6g1Ocq-vaeM3cjIqZV70GGj0e
X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTMxMDE3OCBTYWx0ZWRfXwokkFxRJ82fL
sZ+rDt+14OkPsOwf4G10tyD+NJuoTj70Aou2oEwNB6FGs7UM81wepOEd2GGVFrP8j4WrzgObXy7
c0oe9LVpqk/hCXr1uz8n1//emgK2dawi53kK3fB+ETgJnzkIIPXFnrOspR9zuJ65soAI0HVYgF3
VUbm3Sl8Bnbloa5MkCSnnm9qgB20gfvmNQK8vdOzo6ByUa/hYYdkzYuzuQp/3AOc5Wmz7zz9SLQ
m/nKJ/KtgTb57BDzvyLMevXeMNR05f/TiSQhTkE6Q7xaUTU27PhxUV136U/0meMjhs1g1Ra1YI2
+lQqmxD4EwypVleIF0Q0nFRhhB7hFKUt4rLNKbMY/n9U6/od8cwTuhM2qoQL0ht0gpnsAXd/G9J
G1f8SQdyc5IE/SKx8PlEARJlTDaBiDIWrrc8rXSXGLCVQxooxN3ZKiSszNk/DZucJS7o/aQ7
X-Proofpoint-Virus-Version: vendor=baseguard
engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40
definitions=2025-05-31_09,2025-05-30_01,2025-03-28_01
X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0
adultscore=0 mlxscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0
mlxlogscore=999 impostorscore=0 suspectscore=0 priorityscore=1501 spamscore=0
clxscore=1015 malwarescore=0 classifier=spam authscore=0 authtc=n/a authcc=
route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505160000
definitions=main-2505310178
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On 5/8/25 10:15 AM, Wenbin Yao wrote:
> From: Qiang Yu <quic_qianyu@xxxxxxxxxxx>
>
> Add pcie3port node to represent the PCIe bridge of PCIe3 so that PCI slot
> voltage rails can be described under this node in the board's dts.
>
> Signed-off-by: Qiang Yu <quic_qianyu@xxxxxxxxxxx>
> Signed-off-by: Wenbin Yao <quic_wenbyao@xxxxxxxxxxx>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@xxxxxxxxxxxxxxxx>
> ---
> arch/arm64/boot/dts/qcom/x1e80100.dtsi | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
> index 46b79fce9..430f9d567 100644
> --- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi
> +++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi
> @@ -3287,6 +3287,17 @@ opp-128000000 {
> opp-peak-kBps = <15753000 1>;
> };
> };
> +
> + pcie3port: pcie@0 {
> + device_type = "pci";
> + compatible = "pciclass,0604";
> + reg = <0x0 0x0 0x0 0x0 0x0>;
> + bus-range = <0x01 0xff>;
> +
> + #address-cells = <3>;
> + #size-cells = <2>;
> + ranges;

If you end up setting a v(n+1), please rename the label to 'pcie3_port'

Konrad


Return-Path: <linux-kernel+bounces-669222-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9F24441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:41:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 8E4CA189E400
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:41:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3C5DE1A0BFA;
Sat, 31 May 2025 19:41:30 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="gBEYy4N5";
dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="lEkohKbf"
Received: from fhigh-a8-smtp.messagingengine.com (fhigh-a8-smtp.messagingengine.com [103.168.172.159])
(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 099B1194080
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:41:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.159
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748720489; cv=none; b=tYiTvx3wG/NA3zSao1oR6jbQJsLb6cjQuVujLtq9NbQLfo8fLSm3hAgbLscY4hHtdVYl0JYkj2kyYHtTJ5w22r8nx8aCGEsYiNqK+zpZdNFY54CefoYBowUSBfjMYQ7C4l04zFj+k/DsayRDBoJq/tAyaf3jZkjHQTNvJJXtxuY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748720489; c=relaxed/simple;
bh=Tc6i91jv4D6JPTrOu0U8fXhsABJE+HG6hiR88UajpIE=;
h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References:
Subject:Content-Type; b=V/5fBJLvHkRUTjxX7Niqf2VJ2uXnNx8Ptki6lfR8ClRdPWbc3i81MayQjen3MjFCCPJgojPl1LLodWCPkhyt+HHnvN0XUUsqTLJac10fbftkExv2Fz+5B9rhVTJGFhKu2My1nZZnA/nx8hcZUnqqOk+kHkxFhei/kYD4LvJQbEI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=gBEYy4N5; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=lEkohKbf; arc=none smtp.client-ip=103.168.172.159
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de
Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45])
by mailfhigh.phl.internal (Postfix) with ESMTP id E310111400E8;
Sat, 31 May 2025 15:41:25 -0400 (EDT)
Received: from phl-imap-02 ([10.202.2.81])
by phl-compute-05.internal (MEProxy); Sat, 31 May 2025 15:41:25 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1748720485;
x=1748806885; bh=lGyxiWQu246vWq6BDCxMPVmSxDCFx4n0GPMaz0otyRM=; b=
gBEYy4N5RrRnL55M+SEhI8sgMTbEwGw2Mp8z3wyb003JS/4a2OtDNuQTGfTH2H4d
+ynBrm3uUjTVRUKofXZQSxp/KSTenAqLGwIkufGrRwl9t4L03t2VuzopJZ5s9Ysz
ZXgi6V4fHTiw9dbd3jEHo0q75wgxMmsGvrx1mw75DdMZ+fdzkNq5dHJTAHId1UA3
b7e2Z2ez3Z2ZfQnDG0omdQRAw3w1/LBtV/F0htxCNR6Y7lfu23a7ghq5luKgo8hv
NqVaECm6Pd73yGoWsjk/mI0DhAEvlfDs2XLvXnC5E65rNB8QHS8caRkS5oK0YC5O
Q9dGiR/osUlWCtWlZKz4Ow==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1748720485; x=
1748806885; bh=lGyxiWQu246vWq6BDCxMPVmSxDCFx4n0GPMaz0otyRM=; b=l
EkohKbfTe4PhtyMv152UftnIuF/lvYa+EqBTmz27UO1JT2Xj8SLeFXWNhXU2sUAB
uIjKwbJkntGC6lujkGJQnBHcfCb9iTGt5afydayP4SF926luB5/DGhkPCYwCuZNc
wVxc5tO1CtI8EIdunFhFG+szfR4Axf7sBflfBilNhpWAWPbVuCK4VksoZSLgcB5Z
wxpAXrThLxBK4RTEVmu+6xp7wGzZ0agYEMzWftScV3m0tNtK+vliDMonfHOJ0FXX
brFDFIO/XThUzGsAY0L0I3nLDNcFKk92UZVWp6oDfgwWTCb5bU3H/LtaQ8MKfn94
lGfZpAfgi/FyvpcdfIOnA==
X-ME-Sender: <xms:ZVs7aLFi20kOcjITXYO6R76E1m9ZZijnFa-anCtS9jqQeUGXLkEnew>
<xme:ZVs7aIUnNk5xrYGQyzIYbmJW8DI94DW-tieVVgGyeC5ckKCY2UwYnlGPX7HxSouDU
3fAedPdkvXFIfznbF8>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeffedrtddtgdefvdejjeculddtuddrgeefvddrtd
dtmdcutefuodetggdotefrodftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpggft
fghnshhusghstghrihgsvgdpuffrtefokffrpgfnqfghnecuuegrihhlohhuthemuceftd
dtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpefoggffhffvvefk
jghfufgtgfesthejredtredttdenucfhrhhomhepfdetrhhnugcuuegvrhhgmhgrnhhnfd
cuoegrrhhnugesrghrnhgusgdruggvqeenucggtffrrghtthgvrhhnpefhtdfhvddtfeeh
udekteeggffghfejgeegteefgffgvedugeduveelvdekhfdvieenucevlhhushhtvghruf
hiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegrrhhnugesrghrnhgusgdruggv
pdhnsggprhgtphhtthhopeegpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehtoh
hrvhgrlhgusheslhhinhhugidqfhhouhhnuggrthhiohhnrdhorhhgpdhrtghpthhtohep
lhhinhhugidqrghrmhdqkhgvrhhnvghlsehlihhsthhsrdhinhhfrhgruggvrggurdhorh
hgpdhrtghpthhtohepshhotgeslhhishhtshdrlhhinhhugidruggvvhdprhgtphhtthho
pehlihhnuhigqdhkvghrnhgvlhesvhhgvghrrdhkvghrnhgvlhdrohhrgh
X-ME-Proxy: <xmx:ZVs7aNKpjLDa1aeJbB-w18mBxHQKnqxXdd1LsuTluYlYkW1g1Ylzmg>
<xmx:ZVs7aJFm8nqNo55ni2jyl5kRid-cS5FNhgKC61FeeZPlIKdRy4r-FQ>
<xmx:ZVs7aBW2S6l8i2NkWn5x-Zs7w9AiQEEHtwZesoM9nBUx3tUovY2vFA>
<xmx:ZVs7aEMBFq2gN0M6rey7SzWHDVrGW756B6ciXOxKF_XwY1ASDCoaDQ>
<xmx:ZVs7aLv9tRsBXX6fPBFYDezR00vfJlBvbAGhDlLT7eHv7FsWAo_HQ4BR>
Feedback-ID: i56a14606:Fastmail
Received: by mailuser.phl.internal (Postfix, from userid 501)
id 4AA27700060; Sat, 31 May 2025 15:41:25 -0400 (EDT)
X-Mailer: MessagingEngine.com Webmail Interface
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-ThreadId: Td417e939653861c2
Date: Sat, 31 May 2025 21:41:05 +0200
From: "Arnd Bergmann" <arnd@xxxxxxxx>
To: "Linus Torvalds" <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: soc@xxxxxxxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Message-Id: <8b69d0ec-448c-4552-b445-a5f387bef459@xxxxxxxxxxxxxxxx>
In-Reply-To:
<CAHk-=wgHeidY7Y65-4N9AJEy69jEJRo1S9yQzEJ7_J6jpJMfVg@xxxxxxxxxxxxxx>
References: <28a4c0cf-7978-4547-bf89-42804975c848@xxxxxxxxxxxxxxxx>
<ae82a64f-fe42-4abc-b298-1570ed17771e@xxxxxxxxxxxxxxxx>
<CAHk-=wgHeidY7Y65-4N9AJEy69jEJRo1S9yQzEJ7_J6jpJMfVg@xxxxxxxxxxxxxx>
Subject: Re: [GIT PULL 4/5] soc: devicetree updates for 6.16
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025, at 17:14, Linus Torvalds wrote:
> On Sat, 31 May 2025 at 02:07, Arnd Bergmann <arnd@xxxxxxxx> wrote:
>>
>> There are 11 newly supported SoCs [...]
>
> .. and then you go on to list ten of them. Or 12 if you count Amlogic
> S6/S7/S7D individually.
>
> Just checking that I'm awake?

I'll pretend that this was intentional and the number included
the extra SoC from [GIT PULL 5/5]...

Arnd


Return-Path: <linux-kernel+bounces-669223-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 521B741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:44:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id BE6ED3AC94B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:43:38 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4C00B1A2547;
Sat, 31 May 2025 19:43:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="PJIex7rP"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9])
(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 D093330100;
Sat, 31 May 2025 19:43:50 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748720633; cv=none; b=bgRpOHDnnjJdA4O43yujpeSCDieDvws9O0FA0SyOrTd81SZWJ8Bjx8yWn9iZXUZlIKo/fn4Kq95zUrnv1z1lRErcX/xsW58wXzvJIoogo7nEV8LqVYCSADwSMZPwz953rpG6RDnHUXABb8FGZZYa/kijSnqt/6Kj9EUOwfbC/Ig=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748720633; c=relaxed/simple;
bh=APbQsHtpAO52N+9EAYQ5CjVtJKDJ7Y0OLBaB8LX6Ekg=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=A91JsMaZZcXkc+Sbpjsy56WR1H3Uv7FpRmUzzAuo0TPVXrCDaRx+Srnh24kRrIxuhAbY3pB+b4M9EfMTuOYObT/iRjCEnZcB4WgvGujLSoKZzPzV2q+ZJCyJNfSVJi0jiHE3HjfhUaMfEzy3pcy1ZmVCqHJyheGq39WGs+GboVw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=PJIex7rP; arc=none smtp.client-ip=192.198.163.9
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748720631; x=1780256631;
h=from:to:cc:subject:date:message-id:mime-version:
content-transfer-encoding;
bh=APbQsHtpAO52N+9EAYQ5CjVtJKDJ7Y0OLBaB8LX6Ekg=;
b=PJIex7rPcxBm0k/svwAW51r7xFzCf7vAx1qetN/zCuXa/+bmJAdpMhyS
+XqEQ8LhDtOrGYFM8cRNJmUzQJZ4SzO1Jo1UA2I5P2VaQXB3Ca4V085Ko
xMqGIrw4XAD89w27uKg0h9zKotFqrcNrd1nK4hqJJSVXTx1YAgUopT3/Z
p+aDxMa0IEafPdlnJskpisQncKHL6XkRfBciBWKqe/yjt40x25kLtjoil
mXO4kTjw6T92BPdAjgmAEZThPpj1FA3pQN5rqo6hcvIiVYFEzis1o5Mt1
geNEGHmTfhq9oK6ZNDUXxaMwf9ehvHMKiI/sxfHfTwk0sy0gfre9jWEU+
w==;
X-CSE-ConnectionGUID: zxWjsVj1SLOreKiy0u70PQ==
X-CSE-MsgGUID: 7e/wK2dfQx+D5DBfD5FkGw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="61454936"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="61454936"
Received: from fmviesa006.fm.intel.com ([10.60.135.146])
by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 12:43:50 -0700
X-CSE-ConnectionGUID: MsZ6rt5IR6qrn4wAx3/vuQ==
X-CSE-MsgGUID: St/jKMHiSK2+RIjtAgcf0w==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144030014"
Received: from black.fi.intel.com ([10.237.72.28])
by fmviesa006.fm.intel.com with ESMTP; 31 May 2025 12:43:49 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id 9161514B; Sat, 31 May 2025 22:43:47 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
linux-mips@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
Subject: [PATCH v1 1/1] MIPS: Alchemy: Remove unused forward declaration
Date: Sat, 31 May 2025 22:43:46 +0300
Message-ID: <20250531194346.3630898-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The 'struct gpio' is not used in the code, remove unneeded forward declaration.
This seems to be a leftover for a 5 years.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
arch/mips/include/asm/mach-au1x00/gpio-au1000.h | 2 --
arch/mips/include/asm/mach-au1x00/gpio-au1300.h | 1 -
2 files changed, 3 deletions(-)

diff --git a/arch/mips/include/asm/mach-au1x00/gpio-au1000.h b/arch/mips/include/asm/mach-au1x00/gpio-au1000.h
index d820b481ac56..e6306f6820e6 100644
--- a/arch/mips/include/asm/mach-au1x00/gpio-au1000.h
+++ b/arch/mips/include/asm/mach-au1x00/gpio-au1000.h
@@ -40,8 +40,6 @@
#define AU1000_GPIO2_INTENABLE 0x10
#define AU1000_GPIO2_ENABLE 0x14

-struct gpio;
-
static inline int au1000_gpio1_to_irq(int gpio)
{
return MAKE_IRQ(1, gpio - ALCHEMY_GPIO1_BASE);
diff --git a/arch/mips/include/asm/mach-au1x00/gpio-au1300.h b/arch/mips/include/asm/mach-au1x00/gpio-au1300.h
index 43d44f384f97..b12f37262cfa 100644
--- a/arch/mips/include/asm/mach-au1x00/gpio-au1300.h
+++ b/arch/mips/include/asm/mach-au1x00/gpio-au1300.h
@@ -12,7 +12,6 @@
#include <asm/io.h>
#include <asm/mach-au1x00/au1000.h>

-struct gpio;
struct gpio_chip;

/* with the current GPIC design, up to 128 GPIOs are possible.
--
2.47.2



Return-Path: <linux-kernel+bounces-669224-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9DF9241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:57:37 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A8E9317AA73
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:57:38 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A0A9719F42C;
Sat, 31 May 2025 19:57:32 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="MFk95CpK"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 E154F2F30
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:57:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721452; cv=none; b=HmuXhHDVZEIdlfxdXu2pvJu1DD/Rb63h43LXpDcg5Ei2Op5X56mssCRKReoM2fJxvKrniVpp5LzZEGTge6ACWGgfigGWceelmAYxR5BTb57bPHQukLn8AJwAtsgpoALHITmwBU7mbNlP7hFejBaDGHIemKbOjFqz2ESrWXEygWg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721452; c=relaxed/simple;
bh=M3i+4OcDsZH71nEu3YTnsxuCeQlL0OwHKJ/yMTCoIY8=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=LDxpWZ1XQTnfbLwZoi50iWav5k4AlDd2owzpORnHHdYrpdDmYChAhw+J74z933U8qzTlMcuCfQhP+kC3P0TV3c/6ukxuwY4TwfpQzKyQMTNIcWO8+YZh0ls5x5ik2tjeuWi5gsnEvg2lfVl8SVkZnU+txR/iOFanyfgpG3vjm6M=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=MFk95CpK; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1A1BAC4CEE3;
Sat, 31 May 2025 19:57:31 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org;
s=korg; t=1748721451;
bh=M3i+4OcDsZH71nEu3YTnsxuCeQlL0OwHKJ/yMTCoIY8=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=MFk95CpKgXK8bS8jOnInI0OtUUkCtqVgUF3SK6RafmggS8SGtVFYV2oD8R0UfUnP+
g/aQMtiEI7xoh0q8C6mI5ydeeJB3I25Q/P7AuCnGWynHNuztljalPvItH9lMVr/P3J
cKBczeEA0W5aNUDEJ/z7/L6RwzNSOWFixMvHah8g=
Date: Sat, 31 May 2025 15:57:28 -0400
From: Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Kees Cook <kees@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
Eric Biggers <ebiggers@xxxxxxxxxx>, Ingo Saitz <ingo@xxxxxxxxxxxxxxx>,
kernel test robot <oliver.sang@xxxxxxxxx>, Marco Elver <elver@xxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>, Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
Message-ID: <20250531-evasive-sensible-malkoha-a98b40@lemur>
References: <202505310759.3A40AD051@keescook>
<CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
In-Reply-To: <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 11:20:20AM -0700, Linus Torvalds wrote:
> You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
> git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core

For the record, this object came in through this push:
https://git.kernel.org/pub/scm/infra/transparency-logs/gitolite/git/1.git/plain/m?id=7df025cb5c2a034128abf8b6d064c4c17cddff65

There is a push signature on it, which does verify:

gpg: Signature made Sat 31 May 2025 11:04:02 AM EDT
gpg: using EDDSA key 523E475E4448ED8757479D21362B0BDE39E424BB
gpg: Good signature from "Kees Cook <kees@xxxxxxxxxxx>"

-K


Return-Path: <linux-kernel+bounces-669225-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DF69B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:58:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id CA964189810D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:58:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 170281A23A2;
Sat, 31 May 2025 19:58:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Kgg4qCxf"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
(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 653CE2F30;
Sat, 31 May 2025 19:58:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721490; cv=none; b=CGLYjLz2OL8k1OoohISBPV5sbyQBRhp0CVm3Tj3KJBUHUV/KyWwsls3mHjJttvumVOC37ogSeKCkRh05FWrFFEAcIE+/osRa3ik2o2n2tpalR+WeSQ5tPYXjoyNciLCuOAmnWnj+AwapRBiLKSdgE34ZVs5+O+X/qd6zm+rB3YM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721490; c=relaxed/simple;
bh=cS6RetvDrJ54xQiduwGgcXfUkVI+OytEPSdpzia4usM=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=n0kcw3FjCXvxtIE4fEEwTM1s/+cZNAWrhxa4Erc36TVxDnfUvQfbvk2wpZV0i+k9hJIoW+sRtpwJFWLpbxpOBSdoJ9Nr5s9ux1kDKT5GNlTivt2/N7fKJeHRGqfPKslmovyazMbuhbUSiEz+F6UbPEFCjOp2z0gRO6cuUhK65t8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Kgg4qCxf; arc=none smtp.client-ip=192.198.163.14
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748721488; x=1780257488;
h=from:to:cc:subject:date:message-id:in-reply-to:
references:mime-version:content-transfer-encoding;
bh=cS6RetvDrJ54xQiduwGgcXfUkVI+OytEPSdpzia4usM=;
b=Kgg4qCxfvwcoLKLPqSbOEKKuzZ39zvHUeVPljDaH55WjAIDL2KZh8H5K
0ngfZLAHPdUrFYX92c5KgVvujS4Mwia+gS7JEVlEGH1mc6S39d5ZR2NO1
DTDdjBaYMl3jtO0TeApZl9eyBUYILWgQIPgLaaHPzWiyxUdNLcqUbcnbS
K5M5ebESCqbFVtgCttfAtTqQtYLMnUGLGDRrtJcfbcDyq9M3LgPYQ6/T9
5oZMVej6bK0y0TjlrkyEJn9fUdPXQ7CLTKkCoXPynqByDofV4mMX3VqvM
UQ0GvUUOuDH1QXDpi5ikoVg9t8Le3IuJeMn2z1Wqu0lJwFUd1ud6hjUkt
g==;
X-CSE-ConnectionGUID: CM264ZbCTZWZXTqq9U8nww==
X-CSE-MsgGUID: ax6bk0HqQ8SB8OyLDTIntA==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50886635"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50886635"
Received: from orviesa005.jf.intel.com ([10.64.159.145])
by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 12:58:07 -0700
X-CSE-ConnectionGUID: ID8IbQcyS6mUPVmjLVGCAw==
X-CSE-MsgGUID: u0QZIVftRym/cWNTh1o1xQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="149455595"
Received: from black.fi.intel.com ([10.237.72.28])
by orviesa005.jf.intel.com with ESMTP; 31 May 2025 12:58:06 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id 04616386; Sat, 31 May 2025 22:58:04 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>,
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
linux-gpio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>,
Bartosz Golaszewski <brgl@xxxxxxxx>
Subject: [PATCH v1 2/2] gpiolib: Move GPIO_DYNAMIC_* constants to its only user
Date: Sat, 31 May 2025 22:55:44 +0300
Message-ID: <20250531195801.3632110-3-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
In-Reply-To: <20250531195801.3632110-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
References: <20250531195801.3632110-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

There is no need to export GPIO_DYNAMIC_* constants, especially via
legacy header which is subject to remove. Move the mentioned constants
to its only user, i.e. gpiolib.c.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
drivers/gpio/gpiolib.c | 13 +++++++++++++
include/linux/gpio.h | 13 -------------
2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 839948b859e3..85296419a514 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -74,6 +74,19 @@ static const struct bus_type gpio_bus_type = {
.match = gpio_bus_match,
};

+/*
+ * At the end we want all GPIOs to be dynamically allocated from 0.
+ * However, some legacy drivers still perform fixed allocation.
+ * Until they are all fixed, leave 0-512 space for them.
+ */
+#define GPIO_DYNAMIC_BASE 512
+/*
+ * Define the maximum of the possible GPIO in the global numberspace.
+ * While the GPIO base and numbers are positive, we limit it with signed
+ * maximum as a lot of code is using negative values for special cases.
+ */
+#define GPIO_DYNAMIC_MAX INT_MAX
+
/*
* Number of GPIOs to use for the fast path in set array
*/
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index 1893e5d4c0c9..d105a207eaa2 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -45,19 +45,6 @@ static inline bool gpio_is_valid(int number)
* extra memory (for code and for per-GPIO table entries).
*/

-/*
- * At the end we want all GPIOs to be dynamically allocated from 0.
- * However, some legacy drivers still perform fixed allocation.
- * Until they are all fixed, leave 0-512 space for them.
- */
-#define GPIO_DYNAMIC_BASE 512
-/*
- * Define the maximum of the possible GPIO in the global numberspace.
- * While the GPIO base and numbers are positive, we limit it with signed
- * maximum as a lot of code is using negative values for special cases.
- */
-#define GPIO_DYNAMIC_MAX INT_MAX
-
/* Always use the library code for GPIO management calls,
* or when sleeping may be involved.
*/
--
2.47.2



Return-Path: <linux-kernel+bounces-669226-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 61B5341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:58:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3BC243B6755
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:58:04 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BBB901AA1D9;
Sat, 31 May 2025 19:58:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Bq5dDAOe"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
(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 7D27419E83E;
Sat, 31 May 2025 19:58:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721492; cv=none; b=LH7jmlXHdrW7tvGkwvWDWcjPiRwnacleBCBk+RpFzuo3d9o5S32y6NWNqKiibn/3/4aroD0V1Hf29C9JbE89UI1n3DS8FpyJlXTVgGbvNdk1HRJCzVCjf3eBVbUjS2pL3A5yhUfIrnQ/FwnjGRxaxFcohkySmYkResET48EMtLw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721492; c=relaxed/simple;
bh=I2ykK6/fVWYlkcwwhMN9x06b23bNUPsw8B/ZEGUGQvE=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=lQGRDYvLGzYA3ONc6yh/xuTbGtOmt8Mf2DueT8jV+uFl0NQRokIqBNaSHO/wxAl1hsr9mSB7YZ5V/sf1EDsHafptAuwYKkqoDDOGrKk6Vrz4eA1Fz2f9Uhx52Xc1vPcDY2poydd11NRu3ArGPa4CSs/aHXW/tPwGdb4JwSazesA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=Bq5dDAOe; arc=none smtp.client-ip=192.198.163.14
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748721490; x=1780257490;
h=from:to:cc:subject:date:message-id:in-reply-to:
references:mime-version:content-transfer-encoding;
bh=I2ykK6/fVWYlkcwwhMN9x06b23bNUPsw8B/ZEGUGQvE=;
b=Bq5dDAOe+suYvNV/52EfDhuM0z6kPDIr7sCaHTOesoeoTveBvAkJgfy9
PhnR2Fj9n7AH+Pe8Bk9izXpMuE70JiRdK5LjTba/+aQy8l3bdEImwKD0G
21YbmKiaBogSj90xwWRth0JtVyHpVSF1CTvIwuBG57XlyR9J5E7RIUmlG
qFpuW7CYp1xwKR5L/9Xzz//YOSZi7Yan252vPUDYbzis9hUZe9taY0mW6
XYKaLufdQoIYmHXgWHlEzhjcEkbirWb0wHlWr4j6JOQ9iiJglu6i/fnOx
oreMIAE7lSODLL4D7iaft9qz3nd8BQvUQLBOmItInJKFoQr98pxr8KMey
A==;
X-CSE-ConnectionGUID: Np1ER7NkR/KeXinfw5QjEQ==
X-CSE-MsgGUID: J9b+RXNOQkaHMf2l1QivbA==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50886638"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50886638"
Received: from orviesa005.jf.intel.com ([10.64.159.145])
by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 12:58:07 -0700
X-CSE-ConnectionGUID: k/svVf2qS+qX9b2GOH7X3g==
X-CSE-MsgGUID: lGiiSOdSR8W2pasrVpvLdQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="149455596"
Received: from black.fi.intel.com ([10.237.72.28])
by orviesa005.jf.intel.com with ESMTP; 31 May 2025 12:58:06 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id E8AE511C; Sat, 31 May 2025 22:58:04 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>,
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
linux-gpio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>,
Bartosz Golaszewski <brgl@xxxxxxxx>
Subject: [PATCH v1 1/2] gpio: Remove unused 'struct gpio' definition
Date: Sat, 31 May 2025 22:55:43 +0300
Message-ID: <20250531195801.3632110-2-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
In-Reply-To: <20250531195801.3632110-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
References: <20250531195801.3632110-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

There is no user for the legacy 'struct gpio', remove it for good.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
include/linux/gpio.h | 12 ------------
1 file changed, 12 deletions(-)

diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index c1ec62c11ed3..1893e5d4c0c9 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -21,18 +21,6 @@ struct device;
#define GPIOF_OUT_INIT_LOW ((0 << 0) | (0 << 1))
#define GPIOF_OUT_INIT_HIGH ((0 << 0) | (1 << 1))

-/**
- * struct gpio - a structure describing a GPIO with configuration
- * @gpio: the GPIO number
- * @flags: GPIO configuration as specified by GPIOF_*
- * @label: a literal description string of this GPIO
- */
-struct gpio {
- unsigned gpio;
- unsigned long flags;
- const char *label;
-};
-
#ifdef CONFIG_GPIOLIB

#include <linux/gpio/consumer.h>
--
2.47.2



Return-Path: <linux-kernel+bounces-669227-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A124741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:58:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id AC3AD1898327
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:58:48 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 85CB11AF0BF;
Sat, 31 May 2025 19:58:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="XkRWvZHz"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
(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 1AD121A23BD;
Sat, 31 May 2025 19:58:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721492; cv=none; b=kSWY0fRp1OZ0zryOXXl0yOEcuu7rTpSXc46ns1ip0BTArWhpYs3ZKfhbc4Wxthum8xJY2Ojsih/ZbtHYsw448YNh717CWjhliC7nSsrCzAE+vqHirplT2LKZIasE6K/2FkWfWBD8Z2KdMuHIcV3hClgQQqOuE/oUrY+TGGYFP8c=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721492; c=relaxed/simple;
bh=bVFdcBN9C/OIv3jmeqAofX3ERR9ca8oz1R9L31oHoXE=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=s5ARw3ZRvxsUTXikQCJcOHrUKQoqBfJEggFiamNgtc/QIawF0v6ZpHqMQNPlaglTtzE4AoK8MQ5qhPJaK6aiISesn+VHDTFEVCCX7Us7wOm9pVNWXIA1VkoxJSAZxJVCOS5bqdKSNKCKN22s8CWHym1TIQxFxs7pwZcByZK4aYk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=XkRWvZHz; arc=none smtp.client-ip=192.198.163.14
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748721490; x=1780257490;
h=from:to:cc:subject:date:message-id:mime-version:
content-transfer-encoding;
bh=bVFdcBN9C/OIv3jmeqAofX3ERR9ca8oz1R9L31oHoXE=;
b=XkRWvZHzJNryoqwW7NyQ5KFt+GPCs5PvxUTkuDTWrWWoeFzaDR5zPIOB
xzYdJTMEi/m18caRwPwHcLVODll2FVHokFS/9ln+j9GPUBYngzp6+ZE04
bCV1Dffhzx+WsTqeY4zVK9vXo9VOhJKY8g7+/G3x9HHjgcx958dL+TESD
jHAoHbIA1u1RvqMuIPbiAzKjiRGq3qk9Fyojz8a8VNys0RhUZdeiFhAAo
edRcXHWxp29j1EBclmBhh7eGfH97qy4Z2kgPc/edugKKpJtjARRyuz1Ij
aj+sDUx+qk5G7Qjo97ZA2yemViNTfvwLN8dJ+szuQds0EMZwoCTW9CbEj
w==;
X-CSE-ConnectionGUID: V1ZCyxgJTGqj+f4bF75EMg==
X-CSE-MsgGUID: 1cK/2dawSd6vextB13xxkQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50886641"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50886641"
Received: from orviesa005.jf.intel.com ([10.64.159.145])
by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 12:58:07 -0700
X-CSE-ConnectionGUID: Itpmf+I6QO2EZn3uk5ojqQ==
X-CSE-MsgGUID: /DSvb03nTOucpffMCl0llg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="149455597"
Received: from black.fi.intel.com ([10.237.72.28])
by orviesa005.jf.intel.com with ESMTP; 31 May 2025 12:58:07 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id DAA6614B; Sat, 31 May 2025 22:58:04 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>,
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
linux-gpio@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Linus Walleij <linus.walleij@xxxxxxxxxx>,
Bartosz Golaszewski <brgl@xxxxxxxx>
Subject: [PATCH v1 0/2] gpio: More cleanups to legacy header
Date: Sat, 31 May 2025 22:55:42 +0300
Message-ID: <20250531195801.3632110-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

If I'm not missing anything the 'struct gpio' is not used and
GPIO_DYNAMIC_* constants nowadays are private to gpiolib.c.
Hence this series.

Note, this seems already the case for the upcoming v6.16 cycle, hence
I would like to route these patches as fixes to it to prevent any possible
use of the mentioned definitions in a new code.

Andy Shevchenko (2):
gpio: Remove unused 'struct gpio' definition
gpiolib: Move GPIO_DYNAMIC_* constants to its only user

drivers/gpio/gpiolib.c | 13 +++++++++++++
include/linux/gpio.h | 25 -------------------------
2 files changed, 13 insertions(+), 25 deletions(-)

--
2.47.2



Return-Path: <linux-kernel+bounces-669228-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8334D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:02:22 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 5BD8217D739
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:02:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A404E1A3166;
Sat, 31 May 2025 20:02:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b="PGBFi77Y"
Received: from stravinsky.debian.org (stravinsky.debian.org [82.195.75.108])
(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 C6F95139D;
Sat, 31 May 2025 20:02:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=82.195.75.108
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721730; cv=none; b=CtXa3vplN1/8Kecmjr3kSUVZMzFzygzeq155NBw35kTJNg+iPRi9qXuJ9iNx60gyydmiLfOteb5AMZEMNkhwSX29FUnPS1528vDt4Gfsa/r8DTP+F4ETMFZ0ZEgcDoTlbzUeAVd3W1xgnOeYSL1nq07qvsZ5BeD8aySMG54f4Qs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721730; c=relaxed/simple;
bh=F5u/zqVdsQT9+6wH9CrFx51EZ+xbyrbBk9PA4CD0urU=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=IhUZ339dObgYZlLDiKMz940RAyQrNVY+LiCfKBh2TzM9mJJ4Zn+Q9BspMMO+J6u5Fm/ZeV5152bUvMr0x3Nz66LUvX5ODST+CgCThyUTEutvBbiQ5Qk12OXkgZzKD6lBPUgJ0owMB9gXO1/5+EwUBHDYk3wYlExYoTNonZhBPmc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=none smtp.mailfrom=debian.org; dkim=pass (2048-bit key) header.d=debian.org header.i=@debian.org header.b=PGBFi77Y; arc=none smtp.client-ip=82.195.75.108
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=debian.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org;
s=smtpauto.stravinsky; h=X-Debian-User:In-Reply-To:Content-Transfer-Encoding:
Content-Type:MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:
Reply-To:Content-ID:Content-Description;
bh=gI5iYXBpO0MhDxTi0Q/lfUyfMYW+sw/8L7nwq7ZrxiI=; b=PGBFi77YEM4sZMuLQOux/NGVzS
tKzP5HHiV0IFurqe5V1Fh/WZPHoHnsbSDBtJ+k/CXhVu+zbxYddcSi0ycwMjCZTig8+WZ/YmobZst
8Gb2DfxvwmvYR9FvDRphlN45kM09W/G7I5aYCbaXJEe1oBgNye0cm8o2WTq0xGhWHgXZF4qIh5PmY
zAU6m4N6J2thWgeeZMXPzrcSTKOfkbYcPQ44j8QNsTpKPClsIqI1awVXg5IsrVb96/HDttV8EGaiq
SL4LW+xFgp3MKbkKLp3Cio/Qo87XrcET8TkgAL91O/FOi0qNQgEuSjXhPCq+YgAwLKBQ/bL4grHtK
v0T1i85g==;
Received: from authenticated user
by stravinsky.debian.org with esmtpsa (TLS1.3:ECDHE_X25519__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
(Exim 4.94.2)
(envelope-from <carnil@xxxxxxxxxx>)
id 1uLRy2-000n6f-78; Sat, 31 May 2025 19:34:05 +0000
Received: by eldamar.lan (Postfix, from userid 1000)
id E2D87BE2DE0; Sat, 31 May 2025 21:34:03 +0200 (CEST)
Date: Sat, 31 May 2025 21:34:03 +0200
From: Salvatore Bonaccorso <carnil@xxxxxxxxxx>
To: Kim Alvefur <zash@xxxxxxx>, 1106411@xxxxxxxxxxxxxxx,
Stephan Gerhold <stephan@xxxxxxxxxxx>,
Jonathan Cameron <jic23@xxxxxxxxxx>,
Lars-Peter Clausen <lars@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx
Cc: 1106411@xxxxxxxxxxxxxxx, Andy Shevchenko <andy.shevchenko@xxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx
Subject: kernel NULL pointer dereference in bmc150_accel_core / RIP:
0010:bmc150_accel_set_interrupt+0x68/0x120 [bmc150_accel_core]
Message-ID: <aDtZqwjKtpyguppg@xxxxxxxxxxx>
References: <174809774197.3242.15028356144506391196.reportbug@xxxxxxxxxxxxxxx>
<aDMuJsV4Mxb1IVoZ@xxxxxxxxxxx>
<174809774197.3242.15028356144506391196.reportbug@xxxxxxxxxxxxxxx>
<aDnt9LkEZjb4DOO-@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
In-Reply-To: <aDnt9LkEZjb4DOO-@xxxxxxxxxxxxxxx>
X-Debian-User: carnil
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,UNPARSEABLE_RELAY
autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi

On Fri, May 30, 2025 at 07:42:12PM +0200, Kim Alvefur wrote:
> On Sun, May 25, 2025 at 04:50:14PM +0200, Salvatore Bonaccorso wrote:
> > Can you please test 6.12.29-1 from unstable (and which should migrate
> > soon to trixie)?
> >=20
> > If you can reproduce the issue, can you please post the full kernel
> > log once the issue has happened, so we get the full context (The
> > previous log is capped).
>=20
> Output of `journalctl --boot --dmseg` from 6.12.29 attached.
>=20
> So far it seems to happen on every boot, between unlocking LUKS and the
> login manager starting.
>=20
> I wonder if this is related to another symptom this machine has, where
> it fails to complete suspend and goes into a state where the only action
> that has any effect is a long-press of the power button to turn it off.

Looking through the boot log I'm noticing the following:

> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:00: supply =
vdd not found, using dummy regulator
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:00: supply =
vddio not found, using dummy regulator
[...]
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:base: suppl=
y vdd not found, using dummy regulator
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:base: suppl=
y vddio not found, using dummy regulator

and iio-sensor-proxy might fail to handle then the bosch 0200
accelerometer. You proobably cannot temporary purge the
iio-sensor-proxy if installed by reverse dependencies, but might you
try to temporarily mask the service and retest a boot?

I'm looping as well the maintainers of IIO subsystem in if this might
ring a bell. For context, the reporter is getting the following trace
(and full boot log is included):

> May 30 19:21:49 spisula kernel: BUG: kernel NULL pointer dereference, add=
ress: 0000000000000001
> May 30 19:21:49 spisula kernel: #PF: supervisor read access in kernel mode
> May 30 19:21:49 spisula kernel: #PF: error_code(0x0000) - not-present page
> May 30 19:21:49 spisula kernel: PGD 0 P4D 0=20
> May 30 19:21:49 spisula kernel: Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI
> May 30 19:21:49 spisula kernel: CPU: 2 UID: 0 PID: 805 Comm: iio-sensor-p=
rox Not tainted 6.12.29-amd64 #1 Debian 6.12.29-1
> May 30 19:21:49 spisula kernel: Hardware name: Acer TravelMate Spin B311R=
-31/Maracas_GL, BIOS V1.18 08/26/2021
> May 30 19:21:49 spisula kernel: RIP: 0010:bmc150_accel_set_interrupt+0x68=
/0x120 [bmc150_accel_core]
> May 30 19:21:49 spisula kernel: Code: 84 86 00 00 00 ba 01 00 00 00 f0 0f=
c1 10 83 c2 01 83 fa 01 7f 64 49 8b 3c 24 be 01 00 00 00 e8 5e fc ff ff 89=
c3 85 c0 75 52 <41> 0f b6 55 01 41 0f b6 75 00 45 31 c9 45 31 c0 49 8b 3c =
24 6a 00
> May 30 19:21:49 spisula kernel: RSP: 0018:ffffb44780e03b10 EFLAGS: 000102=
46
> May 30 19:21:49 spisula kernel: RAX: 0000000000000000 RBX: 00000000000000=
00 RCX: 00000000ffffff01
> May 30 19:21:49 spisula kernel: RDX: ffffffff8d12acf0 RSI: 00000000000002=
02 RDI: ffffa06a42513904
> May 30 19:21:49 spisula kernel: RBP: ffffa06a42513820 R08: ffffa06a4b33fb=
e8 R09: 0000000000000000
> May 30 19:21:49 spisula kernel: R10: ffffb44780e03b28 R11: 00000000000000=
09 R12: ffffa06a4b33fd50
> May 30 19:21:49 spisula kernel: R13: 0000000000000000 R14: 00000000000000=
01 R15: ffffa06a4b33fb30
> May 30 19:21:49 spisula kernel: FS: 00007f368a3d9940(0000) GS:ffffa06abb=
d00000(0000) knlGS:0000000000000000
> May 30 19:21:49 spisula kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 00000000=
80050033
> May 30 19:21:49 spisula kernel: CR2: 0000000000000001 CR3: 00000001056100=
00 CR4: 0000000000352ef0
> May 30 19:21:49 spisula kernel: Call Trace:
> May 30 19:21:49 spisula kernel: <TASK>
> May 30 19:21:49 spisula kernel: bmc150_accel_buffer_postenable+0x5d/0x90=
[bmc150_accel_core]
> May 30 19:21:49 spisula kernel: __iio_update_buffers+0x731/0xb20 [indust=
rialio]
> May 30 19:21:49 spisula kernel: ? __kernfs_setattr+0xa0/0xb0
> May 30 19:21:49 spisula kernel: enable_store+0x84/0xe0 [industrialio]
> May 30 19:21:49 spisula kernel: kernfs_fop_write_iter+0x13b/0x1f0
> May 30 19:21:49 spisula kernel: vfs_write+0x28d/0x450
> May 30 19:21:49 spisula kernel: ksys_write+0x6d/0xf0
> May 30 19:21:49 spisula kernel: do_syscall_64+0x82/0x190
> May 30 19:21:49 spisula kernel: ? do_filp_open+0xc4/0x170
> May 30 19:21:49 spisula kernel: ? do_sys_openat2+0x9c/0xe0
> May 30 19:21:49 spisula kernel: ? syscall_exit_to_user_mode+0x4d/0x210
> May 30 19:21:49 spisula kernel: ? do_syscall_64+0x8e/0x190
> May 30 19:21:49 spisula kernel: ? do_syscall_64+0x8e/0x190
> May 30 19:21:49 spisula kernel: ? clear_bhb_loop+0x40/0x90
> May 30 19:21:49 spisula kernel: ? clear_bhb_loop+0x40/0x90
> May 30 19:21:49 spisula kernel: ? clear_bhb_loop+0x40/0x90
> May 30 19:21:49 spisula kernel: entry_SYSCALL_64_after_hwframe+0x76/0x7e
> May 30 19:21:49 spisula kernel: RIP: 0033:0x7f368a7df9ee
> May 30 19:21:49 spisula kernel: Code: 08 0f 85 f5 4b ff ff 49 89 fb 48 89=
f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89=
5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 80 00 00 00 00 48 =
83 ec 08
> May 30 19:21:49 spisula kernel: RSP: 002b:00007fffd76b67e8 EFLAGS: 000002=
46 ORIG_RAX: 0000000000000001
> May 30 19:21:49 spisula kernel: RAX: ffffffffffffffda RBX: 00007f368a3d99=
40 RCX: 00007f368a7df9ee
> May 30 19:21:49 spisula kernel: RDX: 0000000000000001 RSI: 00007fffd76b69=
90 RDI: 0000000000000009
> May 30 19:21:49 spisula kernel: RBP: 00007fffd76b6990 R08: 00000000000000=
00 R09: 0000000000000000
> May 30 19:21:49 spisula kernel: R10: 0000000000000000 R11: 00000000000002=
46 R12: 0000000000000001
> May 30 19:21:49 spisula kernel: R13: 000055742d68a2a0 R14: 00007f368a92ae=
80 R15: 0000000000000001
> May 30 19:21:49 spisula kernel: </TASK>
> May 30 19:21:49 spisula kernel: Modules linked in: bnep snd_intel_dspcfg =
zram x86_pkg_temp_thermal uvcvideo snd_intel_sdw_acpi lz4hc_compress lz4_co=
mpress intel_powerclamp processor_thermal_device_pci_legacy btusb videobuf2=
_vmalloc snd_hda_codec coretemp drm_buddy iwlmvm processor_thermal_device b=
trtl uvc snd_hda_core kvm_intel drm_display_helper processor_thermal_wt_hin=
t mac80211 processor_thermal_rfim binfmt_misc btintel videobuf2_memops inte=
l_rapl_msr processor_thermal_rapl cec snd_hwdep kvm libarc4 nls_ascii bmc15=
0_accel_i2c btbcm videobuf2_v4l2 intel_rapl_common acer_wmi rc_core snd_pcm=
nls_cp437 iwlwifi bmc150_accel_core irqbypass intel_pmc_core btmtk videode=
v processor_thermal_wt_req sparse_keymap mei_pxp mei_hdcp ttm snd_timer vfa=
t industrialio_triggered_buffer rapl intel_vsec processor_thermal_power_flo=
or cfg80211 rtsx_usb_ms bluetooth videobuf2_common platform_profile mei_me =
drm_kms_helper snd fat kfifo_buf intel_cstate pcspkr pmt_telemetry processo=
r_thermal_mbox wmi_bmof memstick mc int3403_thermal rfkill mei i2c_algo_bit
> May 30 19:21:49 spisula kernel: soundcore industrialio int3400_thermal a=
cer_wireless soc_button_array pmt_class intel_soc_dts_iosf int340x_thermal_=
zone ac acpi_thermal_rel button joydev evdev msr parport_pc ppdev lp parpor=
t efi_pstore configfs nfnetlink efivarfs ip_tables x_tables autofs4 ext4 cr=
c16 mbcache jbd2 crc32c_generic rtsx_usb_sdmmc rtsx_usb dm_crypt dm_mod crc=
t10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel sha512_ssse3 hi=
d_multitouch sha256_ssse3 hid_generic sha1_ssse3 xhci_pci aesni_intel xhci_=
hcd i2c_hid_acpi sdhci_pci r8169 gf128mul nvme i2c_hid intel_lpss_pci cqhci=
usbcore realtek crypto_simd nvme_core hid intel_lpss i2c_i801 sdhci wdat_w=
dt mdio_devres cryptd serio_raw watchdog video libphy mmc_core i2c_smbus lp=
c_ich nvme_auth drm idma64 usb_common battery wmi
> May 30 19:21:49 spisula kernel: CR2: 0000000000000001
> May 30 19:21:49 spisula kernel: ---[ end trace 0000000000000000 ]---
> May 30 19:21:49 spisula kernel: RIP: 0010:bmc150_accel_set_interrupt+0x68=
/0x120 [bmc150_accel_core]
> May 30 19:21:49 spisula kernel: Code: 84 86 00 00 00 ba 01 00 00 00 f0 0f=
c1 10 83 c2 01 83 fa 01 7f 64 49 8b 3c 24 be 01 00 00 00 e8 5e fc ff ff 89=
c3 85 c0 75 52 <41> 0f b6 55 01 41 0f b6 75 00 45 31 c9 45 31 c0 49 8b 3c =
24 6a 00
> May 30 19:21:49 spisula kernel: RSP: 0018:ffffb44780e03b10 EFLAGS: 000102=
46
> May 30 19:21:49 spisula kernel: RAX: 0000000000000000 RBX: 00000000000000=
00 RCX: 00000000ffffff01
> May 30 19:21:49 spisula kernel: RDX: ffffffff8d12acf0 RSI: 00000000000002=
02 RDI: ffffa06a42513904
> May 30 19:21:49 spisula kernel: RBP: ffffa06a42513820 R08: ffffa06a4b33fb=
e8 R09: 0000000000000000
> May 30 19:21:49 spisula kernel: R10: ffffb44780e03b28 R11: 00000000000000=
09 R12: ffffa06a4b33fd50
> May 30 19:21:49 spisula kernel: R13: 0000000000000000 R14: 00000000000000=
01 R15: ffffa06a4b33fb30
> May 30 19:21:49 spisula kernel: FS: 00007f368a3d9940(0000) GS:ffffa06abb=
d00000(0000) knlGS:0000000000000000
> May 30 19:21:49 spisula kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 00000000=
80050033
> May 30 19:21:49 spisula kernel: CR2: 0000000000000001 CR3: 00000001056100=
00 CR4: 0000000000352ef0
> May 30 19:21:49 spisula kernel: note: iio-sensor-prox[805] exited with ir=
qs disabled

Regards,
Salvatore

> May 30 19:21:45 spisula kernel: Linux version 6.12.29-amd64 (debian-kerne=
l@xxxxxxxxxxxxxxxx) (x86_64-linux-gnu-gcc-14 (Debian 14.2.0-19) 14.2.0, GNU=
ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT_DYNAMIC Debian 6.12.29-1=
(2025-05-18)
> May 30 19:21:45 spisula kernel: Command line: BOOT_IMAGE=3D/vmlinuz-6.12.=
29-amd64 root=3D/dev/mapper/spisula--vg-root ro quiet
> May 30 19:21:45 spisula kernel: BIOS-provided physical RAM map:
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000000000000-0x0000=
000000057fff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000000058000-0x0000=
000000058fff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000000059000-0x0000=
00000009dfff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x000000000009e000-0x0000=
0000000fffff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000000100000-0x0000=
00000fffffff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000010000000-0x0000=
000012150fff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000012151000-0x0000=
000066fccfff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000066fcd000-0x0000=
000066fd6fff] ACPI data
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000066fd7000-0x0000=
00007447ffff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000074480000-0x0000=
00007792ffff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000077930000-0x0000=
00007798ffff] ACPI NVS
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000077990000-0x0000=
0000779cffff] ACPI data
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x00000000779d0000-0x0000=
000078d59fff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000078d5a000-0x0000=
000079659fff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x000000007965a000-0x0000=
000079bfffff] usable
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000079c00000-0x0000=
00007fffffff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x00000000d3709000-0x0000=
0000d3709fff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x00000000e0000000-0x0000=
0000e3ffffff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x00000000fed01000-0x0000=
0000fed01fff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x00000000ff800000-0x0000=
0000ffffffff] reserved
> May 30 19:21:45 spisula kernel: BIOS-e820: [mem 0x0000000100000000-0x0000=
00017fffffff] usable
> May 30 19:21:45 spisula kernel: NX (Execute Disable) protection: active
> May 30 19:21:45 spisula kernel: APIC: Static calls initialized
> May 30 19:21:45 spisula kernel: efi: EFI v2.6 by INSYDE Corp.
> May 30 19:21:45 spisula kernel: efi: ACPI=3D0x779cf000 ACPI 2.0=3D0x779cf=
014 TPMFinalLog=3D0x77795000 ESRT=3D0x744d4018 SMBIOS=3D0x744c2000 SMBIOS 3=
=2E0=3D0x744c0000 MOKvar=3D0x744a7000 INITRD=3D0x6c0aac18 RNG=3D0x77999018 =
TPMEventLog=3D0x66fcd018=20
> May 30 19:21:45 spisula kernel: random: crng init done
> May 30 19:21:45 spisula kernel: efi: Not removing mem48: MMIO range=3D[0x=
d3709000-0xd3709fff] (4KB) from e820 map
> May 30 19:21:45 spisula kernel: efi: Remove mem49: MMIO range=3D[0xe00000=
00-0xe3ffffff] (64MB) from e820 map
> May 30 19:21:45 spisula kernel: e820: remove [mem 0xe0000000-0xe3ffffff] =
reserved
> May 30 19:21:45 spisula kernel: efi: Not removing mem50: MMIO range=3D[0x=
fed01000-0xfed01fff] (4KB) from e820 map
> May 30 19:21:45 spisula kernel: efi: Remove mem51: MMIO range=3D[0xff8000=
00-0xffffffff] (8MB) from e820 map
> May 30 19:21:45 spisula kernel: e820: remove [mem 0xff800000-0xffffffff] =
reserved
> May 30 19:21:45 spisula kernel: Kernel is locked down from EFI Secure Boo=
t; see man kernel_lockdown.7
> May 30 19:21:45 spisula kernel: secureboot: Secure boot enabled
> May 30 19:21:45 spisula kernel: SMBIOS 3.0.1 present.
> May 30 19:21:45 spisula kernel: DMI: Acer TravelMate Spin B311R-31/Maraca=
s_GL, BIOS V1.18 08/26/2021
> May 30 19:21:45 spisula kernel: DMI: Memory slots populated: 1/1
> May 30 19:21:45 spisula kernel: tsc: Fast TSC calibration using PIT
> May 30 19:21:45 spisula kernel: tsc: Detected 1094.400 MHz processor
> May 30 19:21:45 spisula kernel: e820: update [mem 0x00000000-0x00000fff] =
usable =3D=3D> reserved
> May 30 19:21:45 spisula kernel: e820: remove [mem 0x000a0000-0x000fffff] =
usable
> May 30 19:21:45 spisula kernel: last_pfn =3D 0x180000 max_arch_pfn =3D 0x=
400000000
> May 30 19:21:45 spisula kernel: MTRR map: 8 entries (3 fixed + 5 variable=
; max 23), built from 10 variable MTRRs
> May 30 19:21:45 spisula kernel: x86/PAT: Configuration [0-7]: WB WC UC-=
UC WB WP UC- WT =20
> May 30 19:21:45 spisula kernel: last_pfn =3D 0x79c00 max_arch_pfn =3D 0x4=
00000000
> May 30 19:21:45 spisula kernel: esrt: Reserving ESRT space from 0x0000000=
0744d4018 to 0x00000000744d4050.
> May 30 19:21:45 spisula kernel: Using GB pages for direct mapping
> May 30 19:21:45 spisula kernel: RAMDISK: [mem 0x66fd7000-0x6a3f2fff]
> May 30 19:21:45 spisula kernel: ACPI: Early table checksum verification d=
isabled
> May 30 19:21:45 spisula kernel: ACPI: RSDP 0x00000000779CF014 000024 (v02=
ACRSYS)
> May 30 19:21:45 spisula kernel: ACPI: XSDT 0x00000000779AC188 000114 (v01=
ACRSYS ACRPRDCT 00000003 01000013)
> May 30 19:21:45 spisula kernel: ACPI: FACP 0x00000000779C5000 000114 (v06=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: DSDT 0x00000000779B4000 0094E8 (v02=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: FACS 0x0000000077988000 000040
> May 30 19:21:45 spisula kernel: ACPI: FACS 0x0000000077988000 000040
> May 30 19:21:45 spisula kernel: ACPI: UEFI 0x00000000779CE000 000236 (v01=
ACRSYS ACRPRDCT 00000001 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: UEFI 0x00000000779CD000 000042 (v01=
ACRSYS ACRPRDCT 00000002 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779CC000 000781 (v01=
ACRSYS ACRPRDCT 00001000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: TPM2 0x00000000779CB000 000034 (v04=
ACRSYS ACRPRDCT 00000002 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: MSDM 0x00000000779CA000 000055 (v03=
ACRSYS ACRPRDCT 00000001 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: BDAT 0x00000000779C9000 000030 (v02=
ACRSYS ACRPRDCT 00000000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: HPET 0x00000000779C4000 000038 (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: LPIT 0x00000000779C3000 00005C (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: APIC 0x00000000779C2000 000084 (v03=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: MCFG 0x00000000779C1000 00003C (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: NPKT 0x00000000779C0000 000065 (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: PRAM 0x00000000779BF000 000030 (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: WSMT 0x00000000779BE000 000028 (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779B0000 003655 (v02=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779AE000 001F20 (v02=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779AD000 000B82 (v02=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779AB000 000BA1 (v01=
ACRSYS ACRPRDCT 00001000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779AA000 000439 (v02=
ACRSYS ACRPRDCT 00003000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779A9000 00072B (v02=
ACRSYS ACRPRDCT 00003000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779A8000 00032D (v02=
ACRSYS ACRPRDCT 00003000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779A7000 00017C (v02=
ACRSYS ACRPRDCT 00003000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x00000000779A4000 00274C (v02=
ACRSYS ACRPRDCT 00003000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0x000000007799D000 00605F (v01=
ACRSYS ACRPRDCT 00001000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: FPDT 0x000000007799C000 000044 (v01=
ACRSYS ACRPRDCT 00000002 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: DBGP 0x00000000779C7000 000034 (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: DBG2 0x00000000779C8000 000072 (v00=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: DMAR 0x00000000779C6000 0000A8 (v01=
ACRSYS ACRPRDCT 00000003 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: WDAT 0x000000007799A000 000104 (v01=
ACRSYS ACRPRDCT 00000000 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: BGRT 0x000000007799B000 000038 (v01=
ACRSYS ACRPRDCT 00000001 1025 00040000)
> May 30 19:21:45 spisula kernel: ACPI: Reserving FACP table memory at [mem=
0x779c5000-0x779c5113]
> May 30 19:21:45 spisula kernel: ACPI: Reserving DSDT table memory at [mem=
0x779b4000-0x779bd4e7]
> May 30 19:21:45 spisula kernel: ACPI: Reserving FACS table memory at [mem=
0x77988000-0x7798803f]
> May 30 19:21:45 spisula kernel: ACPI: Reserving FACS table memory at [mem=
0x77988000-0x7798803f]
> May 30 19:21:45 spisula kernel: ACPI: Reserving UEFI table memory at [mem=
0x779ce000-0x779ce235]
> May 30 19:21:45 spisula kernel: ACPI: Reserving UEFI table memory at [mem=
0x779cd000-0x779cd041]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779cc000-0x779cc780]
> May 30 19:21:45 spisula kernel: ACPI: Reserving TPM2 table memory at [mem=
0x779cb000-0x779cb033]
> May 30 19:21:45 spisula kernel: ACPI: Reserving MSDM table memory at [mem=
0x779ca000-0x779ca054]
> May 30 19:21:45 spisula kernel: ACPI: Reserving BDAT table memory at [mem=
0x779c9000-0x779c902f]
> May 30 19:21:45 spisula kernel: ACPI: Reserving HPET table memory at [mem=
0x779c4000-0x779c4037]
> May 30 19:21:45 spisula kernel: ACPI: Reserving LPIT table memory at [mem=
0x779c3000-0x779c305b]
> May 30 19:21:45 spisula kernel: ACPI: Reserving APIC table memory at [mem=
0x779c2000-0x779c2083]
> May 30 19:21:45 spisula kernel: ACPI: Reserving MCFG table memory at [mem=
0x779c1000-0x779c103b]
> May 30 19:21:45 spisula kernel: ACPI: Reserving NPKT table memory at [mem=
0x779c0000-0x779c0064]
> May 30 19:21:45 spisula kernel: ACPI: Reserving PRAM table memory at [mem=
0x779bf000-0x779bf02f]
> May 30 19:21:45 spisula kernel: ACPI: Reserving WSMT table memory at [mem=
0x779be000-0x779be027]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779b0000-0x779b3654]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779ae000-0x779aff1f]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779ad000-0x779adb81]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779ab000-0x779abba0]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779aa000-0x779aa438]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779a9000-0x779a972a]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779a8000-0x779a832c]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779a7000-0x779a717b]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x779a4000-0x779a674b]
> May 30 19:21:45 spisula kernel: ACPI: Reserving SSDT table memory at [mem=
0x7799d000-0x779a305e]
> May 30 19:21:45 spisula kernel: ACPI: Reserving FPDT table memory at [mem=
0x7799c000-0x7799c043]
> May 30 19:21:45 spisula kernel: ACPI: Reserving DBGP table memory at [mem=
0x779c7000-0x779c7033]
> May 30 19:21:45 spisula kernel: ACPI: Reserving DBG2 table memory at [mem=
0x779c8000-0x779c8071]
> May 30 19:21:45 spisula kernel: ACPI: Reserving DMAR table memory at [mem=
0x779c6000-0x779c60a7]
> May 30 19:21:45 spisula kernel: ACPI: Reserving WDAT table memory at [mem=
0x7799a000-0x7799a103]
> May 30 19:21:45 spisula kernel: ACPI: Reserving BGRT table memory at [mem=
0x7799b000-0x7799b037]
> May 30 19:21:45 spisula kernel: No NUMA configuration found
> May 30 19:21:45 spisula kernel: Faking a node at [mem 0x0000000000000000-=
0x000000017fffffff]
> May 30 19:21:45 spisula kernel: NODE_DATA(0) allocated [mem 0x17ffd5680-0=
x17fffffff]
> May 30 19:21:45 spisula kernel: Zone ranges:
> May 30 19:21:45 spisula kernel: DMA [mem 0x0000000000001000-0x0000=
000000ffffff]
> May 30 19:21:45 spisula kernel: DMA32 [mem 0x0000000001000000-0x0000=
0000ffffffff]
> May 30 19:21:45 spisula kernel: Normal [mem 0x0000000100000000-0x0000=
00017fffffff]
> May 30 19:21:45 spisula kernel: Device empty
> May 30 19:21:45 spisula kernel: Movable zone start for each node
> May 30 19:21:45 spisula kernel: Early memory node ranges
> May 30 19:21:45 spisula kernel: node 0: [mem 0x0000000000001000-0x000=
0000000057fff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x0000000000059000-0x000=
000000009dfff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x0000000000100000-0x000=
000000fffffff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x0000000012151000-0x000=
0000066fccfff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x0000000066fd7000-0x000=
000007447ffff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x00000000779d0000-0x000=
0000078d59fff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x000000007965a000-0x000=
0000079bfffff]
> May 30 19:21:45 spisula kernel: node 0: [mem 0x0000000100000000-0x000=
000017fffffff]
> May 30 19:21:45 spisula kernel: Initmem setup node 0 [mem 0x0000000000001=
000-0x000000017fffffff]
> May 30 19:21:45 spisula kernel: On node 0, zone DMA: 1 pages in unavailab=
le ranges
> May 30 19:21:45 spisula kernel: On node 0, zone DMA: 1 pages in unavailab=
le ranges
> May 30 19:21:45 spisula kernel: On node 0, zone DMA: 98 pages in unavaila=
ble ranges
> May 30 19:21:45 spisula kernel: On node 0, zone DMA32: 8529 pages in unav=
ailable ranges
> May 30 19:21:45 spisula kernel: On node 0, zone DMA32: 10 pages in unavai=
lable ranges
> May 30 19:21:45 spisula kernel: On node 0, zone DMA32: 13648 pages in una=
vailable ranges
> May 30 19:21:45 spisula kernel: On node 0, zone DMA32: 2304 pages in unav=
ailable ranges
> May 30 19:21:45 spisula kernel: On node 0, zone Normal: 25600 pages in un=
available ranges
> May 30 19:21:45 spisula kernel: Reserving Intel graphics memory at [mem 0=
x7c000000-0x7fffffff]
> May 30 19:21:45 spisula kernel: ACPI: PM-Timer IO Port: 0x408
> May 30 19:21:45 spisula kernel: ACPI: LAPIC_NMI (acpi_id[0x01] high level=
lint[0x1])
> May 30 19:21:45 spisula kernel: ACPI: LAPIC_NMI (acpi_id[0x02] high level=
lint[0x1])
> May 30 19:21:45 spisula kernel: ACPI: LAPIC_NMI (acpi_id[0x03] high level=
lint[0x1])
> May 30 19:21:45 spisula kernel: ACPI: LAPIC_NMI (acpi_id[0x04] high level=
lint[0x1])
> May 30 19:21:45 spisula kernel: IOAPIC[0]: apic_id 1, version 32, address=
0xfec00000, GSI 0-119
> May 30 19:21:45 spisula kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global=
_irq 2 dfl dfl)
> May 30 19:21:45 spisula kernel: ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global=
_irq 9 low level)
> May 30 19:21:45 spisula kernel: ACPI: Using ACPI (MADT) for SMP configura=
tion information
> May 30 19:21:45 spisula kernel: ACPI: HPET id: 0x8086a701 base: 0xfed00000
> May 30 19:21:45 spisula kernel: e820: update [mem 0x7176c000-0x717e6fff] =
usable =3D=3D> reserved
> May 30 19:21:45 spisula kernel: TSC deadline timer available
> May 30 19:21:45 spisula kernel: CPU topo: Max. logical packages: 1
> May 30 19:21:45 spisula kernel: CPU topo: Max. logical dies: 1
> May 30 19:21:45 spisula kernel: CPU topo: Max. dies per package: 1
> May 30 19:21:45 spisula kernel: CPU topo: Max. threads per core: 1
> May 30 19:21:45 spisula kernel: CPU topo: Num. cores per package: 4
> May 30 19:21:45 spisula kernel: CPU topo: Num. threads per package: 4
> May 30 19:21:45 spisula kernel: CPU topo: Allowing 4 present CPUs plus 0 =
hotplug CPUs
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x00000000-0x00000fff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x00058000-0x00058fff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x0009e000-0x000fffff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x10000000-0x12150fff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x66fcd000-0x66fd6fff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x7176c000-0x717e6fff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x74480000-0x779cffff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x78d5a000-0x79659fff]
> May 30 19:21:45 spisula kernel: PM: hibernation: Registered nosave memory=
: [mem 0x79c00000-0xffffffff]
> May 30 19:21:45 spisula kernel: [mem 0x80000000-0xd3708fff] available for=
PCI devices
> May 30 19:21:45 spisula kernel: Booting paravirtualized kernel on bare ha=
rdware
> May 30 19:21:45 spisula kernel: clocksource: refined-jiffies: mask: 0xfff=
fffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
> May 30 19:21:45 spisula kernel: setup_percpu: NR_CPUS:8192 nr_cpumask_bit=
s:4 nr_cpu_ids:4 nr_node_ids:1
> May 30 19:21:45 spisula kernel: percpu: Embedded 66 pages/cpu s233472 r81=
92 d28672 u524288
> May 30 19:21:45 spisula kernel: pcpu-alloc: s233472 r8192 d28672 u524288 =
alloc=3D1*2097152
> May 30 19:21:45 spisula kernel: pcpu-alloc: [0] 0 1 2 3=20
> May 30 19:21:45 spisula kernel: Kernel command line: BOOT_IMAGE=3D/vmlinu=
z-6.12.29-amd64 root=3D/dev/mapper/spisula--vg-root ro quiet
> May 30 19:21:45 spisula kernel: Unknown kernel command line parameters "B=
OOT_IMAGE=3D/vmlinuz-6.12.29-amd64", will be passed to user space.
> May 30 19:21:45 spisula kernel: Dentry cache hash table entries: 524288 (=
order: 10, 4194304 bytes, linear)
> May 30 19:21:45 spisula kernel: Inode-cache hash table entries: 262144 (o=
rder: 9, 2097152 bytes, linear)
> May 30 19:21:45 spisula kernel: Fallback order for Node 0: 0=20
> May 30 19:21:45 spisula kernel: Built 1 zonelists, mobility grouping on. =
Total pages: 998385
> May 30 19:21:45 spisula kernel: Policy zone: Normal
> May 30 19:21:45 spisula kernel: mem auto-init: stack:all(zero), heap allo=
c:on, heap free:off
> May 30 19:21:45 spisula kernel: software IO TLB: area num 4.
> May 30 19:21:45 spisula kernel: SLUB: HWalign=3D64, Order=3D0-3, MinObjec=
ts=3D0, CPUs=3D4, Nodes=3D1
> May 30 19:21:45 spisula kernel: ftrace: allocating 45689 entries in 179 p=
ages
> May 30 19:21:45 spisula kernel: ftrace: allocated 179 pages with 5 groups
> May 30 19:21:45 spisula kernel: Dynamic Preempt: voluntary
> May 30 19:21:45 spisula kernel: rcu: Preemptible hierarchical RCU impleme=
ntation.
> May 30 19:21:45 spisula kernel: rcu: RCU restricting CPUs from NR=
_CPUS=3D8192 to nr_cpu_ids=3D4.
> May 30 19:21:45 spisula kernel: Trampoline variant of Tasks RCU e=
nabled.
> May 30 19:21:45 spisula kernel: Rude variant of Tasks RCU enabled.
> May 30 19:21:45 spisula kernel: Tracing variant of Tasks RCU enab=
led.
> May 30 19:21:45 spisula kernel: rcu: RCU calculated value of scheduler-en=
listment delay is 25 jiffies.
> May 30 19:21:45 spisula kernel: rcu: Adjusting geometry for rcu_fanout_le=
af=3D16, nr_cpu_ids=3D4
> May 30 19:21:45 spisula kernel: RCU Tasks: Setting shift to 2 and lim to =
1 rcu_task_cb_adjust=3D1 rcu_task_cpu_ids=3D4.
> May 30 19:21:45 spisula kernel: RCU Tasks Rude: Setting shift to 2 and li=
m to 1 rcu_task_cb_adjust=3D1 rcu_task_cpu_ids=3D4.
> May 30 19:21:45 spisula kernel: RCU Tasks Trace: Setting shift to 2 and l=
im to 1 rcu_task_cb_adjust=3D1 rcu_task_cpu_ids=3D4.
> May 30 19:21:45 spisula kernel: NR_IRQS: 524544, nr_irqs: 1024, prealloca=
ted irqs: 16
> May 30 19:21:45 spisula kernel: rcu: srcu_init: Setting srcu_struct sizes=
based on contention.
> May 30 19:21:45 spisula kernel: Console: colour dummy device 80x25
> May 30 19:21:45 spisula kernel: printk: legacy console [tty0] enabled
> May 30 19:21:45 spisula kernel: ACPI: Core revision 20240827
> May 30 19:21:45 spisula kernel: clocksource: hpet: mask: 0xffffffff max_c=
ycles: 0xffffffff, max_idle_ns: 99544814920 ns
> May 30 19:21:45 spisula kernel: APIC: Switch to symmetric I/O mode setup
> May 30 19:21:45 spisula kernel: DMAR: Host address width 39
> May 30 19:21:45 spisula kernel: DMAR: DRHD base: 0x000000fed64000 flags: =
0x0
> May 30 19:21:45 spisula kernel: DMAR: dmar0: reg_base_addr fed64000 ver 1=
:0 cap 1c0000c40660462 ecap 9e2ff0505e
> May 30 19:21:45 spisula kernel: DMAR: DRHD base: 0x000000fed65000 flags: =
0x1
> May 30 19:21:45 spisula kernel: DMAR: dmar1: reg_base_addr fed65000 ver 1=
:0 cap d2008c40660462 ecap f050da
> May 30 19:21:45 spisula kernel: DMAR: RMRR base: 0x00000077871000 end: 0x=
00000077890fff
> May 30 19:21:45 spisula kernel: DMAR: RMRR base: 0x0000007b800000 end: 0x=
0000007fffffff
> May 30 19:21:45 spisula kernel: DMAR-IR: IOAPIC id 1 under DRHD base 0xf=
ed65000 IOMMU 1
> May 30 19:21:45 spisula kernel: DMAR-IR: HPET id 0 under DRHD base 0xfed6=
5000
> May 30 19:21:45 spisula kernel: DMAR-IR: Queued invalidation will be enab=
led to support x2apic and Intr-remapping.
> May 30 19:21:45 spisula kernel: DMAR-IR: Enabled IRQ remapping in x2apic =
mode
> May 30 19:21:45 spisula kernel: x2apic enabled
> May 30 19:21:45 spisula kernel: APIC: Switched APIC routing to: cluster x=
2apic
> May 30 19:21:45 spisula kernel: ..TIMER: vector=3D0x30 apic1=3D0 pin1=3D2=
apic2=3D-1 pin2=3D-1
> May 30 19:21:45 spisula kernel: clocksource: tsc-early: mask: 0xfffffffff=
fffffff max_cycles: 0xfc66f4fc7c, max_idle_ns: 440795224246 ns
> May 30 19:21:45 spisula kernel: Calibrating delay loop (skipped), value c=
alculated using timer frequency.. 2188.80 BogoMIPS (lpj=3D4377600)
> May 30 19:21:45 spisula kernel: x86/cpu: SGX disabled or unsupported by B=
IOS.
> May 30 19:21:45 spisula kernel: CPU0: Thermal monitoring enabled (TM1)
> May 30 19:21:45 spisula kernel: x86/cpu: User Mode Instruction Prevention=
(UMIP) activated
> May 30 19:21:45 spisula kernel: Last level iTLB entries: 4KB 0, 2MB 0, 4M=
B 0
> May 30 19:21:45 spisula kernel: Last level dTLB entries: 4KB 0, 2MB 0, 4M=
B 0, 1GB 0
> May 30 19:21:45 spisula kernel: process: using mwait in idle threads
> May 30 19:21:45 spisula kernel: Spectre V1 : Mitigation: usercopy/swapgs =
barriers and __user pointer sanitization
> May 30 19:21:45 spisula kernel: Spectre V2 : Spectre BHI mitigation: SW B=
HB clearing on syscall and VM exit
> May 30 19:21:45 spisula kernel: Spectre V2 : Mitigation: Enhanced / Autom=
atic IBRS
> May 30 19:21:45 spisula kernel: Spectre V2 : mitigation: Enabling conditi=
onal Indirect Branch Prediction Barrier
> May 30 19:21:45 spisula kernel: Speculative Store Bypass: Mitigation: Spe=
culative Store Bypass disabled via prctl
> May 30 19:21:45 spisula kernel: Register File Data Sampling: Mitigation: =
Clear Register File
> May 30 19:21:45 spisula kernel: x86/fpu: Supporting XSAVE feature 0x001: =
'x87 floating point registers'
> May 30 19:21:45 spisula kernel: x86/fpu: Supporting XSAVE feature 0x002: =
'SSE registers'
> May 30 19:21:45 spisula kernel: x86/fpu: Supporting XSAVE feature 0x008: =
'MPX bounds registers'
> May 30 19:21:45 spisula kernel: x86/fpu: Supporting XSAVE feature 0x010: =
'MPX CSR'
> May 30 19:21:45 spisula kernel: x86/fpu: xstate_offset[3]: 576, xstate_s=
izes[3]: 64
> May 30 19:21:45 spisula kernel: x86/fpu: xstate_offset[4]: 640, xstate_s=
izes[4]: 64
> May 30 19:21:45 spisula kernel: x86/fpu: Enabled xstate features 0x1b, co=
ntext size is 704 bytes, using 'compacted' format.
> May 30 19:21:45 spisula kernel: Freeing SMP alternatives memory: 40K
> May 30 19:21:45 spisula kernel: pid_max: default: 32768 minimum: 301
> May 30 19:21:45 spisula kernel: LSM: initializing lsm=3Dlockdown,capabili=
ty,landlock,yama,apparmor,tomoyo,bpf,ipe,ima,evm
> May 30 19:21:45 spisula kernel: landlock: Up and running.
> May 30 19:21:45 spisula kernel: Yama: disabled by default; enable with sy=
sctl kernel.yama.*
> May 30 19:21:45 spisula kernel: AppArmor: AppArmor initialized
> May 30 19:21:45 spisula kernel: TOMOYO Linux initialized
> May 30 19:21:45 spisula kernel: LSM support for eBPF active
> May 30 19:21:45 spisula kernel: Mount-cache hash table entries: 8192 (ord=
er: 4, 65536 bytes, linear)
> May 30 19:21:45 spisula kernel: Mountpoint-cache hash table entries: 8192=
(order: 4, 65536 bytes, linear)
> May 30 19:21:45 spisula kernel: smpboot: CPU0: Intel(R) Celeron(R) N4120 =
CPU @ 1.10GHz (family: 0x6, model: 0x7a, stepping: 0x8)
> May 30 19:21:45 spisula kernel: Performance Events: PEBS fmt3+, Goldmont =
plus events, 32-deep LBR, full-width counters, Intel PMU driver.
> May 30 19:21:45 spisula kernel: ... version: 4
> May 30 19:21:45 spisula kernel: ... bit width: 48
> May 30 19:21:45 spisula kernel: ... generic registers: 4
> May 30 19:21:45 spisula kernel: ... value mask: 0000fffffffff=
fff
> May 30 19:21:45 spisula kernel: ... max period: 00007ffffffff=
fff
> May 30 19:21:45 spisula kernel: ... fixed-purpose events: 3
> May 30 19:21:45 spisula kernel: ... event mask: 0000000700000=
00f
> May 30 19:21:45 spisula kernel: signal: max sigframe size: 2032
> May 30 19:21:45 spisula kernel: Estimated ratio of average max frequency =
by base frequency (times 1024): 2420
> May 30 19:21:45 spisula kernel: rcu: Hierarchical SRCU implementation.
> May 30 19:21:45 spisula kernel: rcu: Max phase no-delay instances=
is 1000.
> May 30 19:21:45 spisula kernel: Timer migration: 1 hierarchy levels; 8 ch=
ildren per group; 1 crossnode level
> May 30 19:21:45 spisula kernel: NMI watchdog: Enabled. Permanently consum=
es one hw-PMU counter.
> May 30 19:21:45 spisula kernel: smp: Bringing up secondary CPUs ...
> May 30 19:21:45 spisula kernel: smpboot: x86: Booting SMP configuration:
> May 30 19:21:45 spisula kernel: .... node #0, CPUs: #1 #2 #3
> May 30 19:21:45 spisula kernel: smp: Brought up 1 node, 4 CPUs
> May 30 19:21:45 spisula kernel: smpboot: Total of 4 processors activated =
(8755.20 BogoMIPS)
> May 30 19:21:45 spisula kernel: node 0 deferred pages initialised in 12ms
> May 30 19:21:45 spisula kernel: Memory: 3744420K/3993540K available (1638=
4K kernel code, 2486K rwdata, 11780K rodata, 4148K init, 4956K bss, 238864K=
reserved, 0K cma-reserved)
> May 30 19:21:45 spisula kernel: devtmpfs: initialized
> May 30 19:21:45 spisula kernel: x86/mm: Memory block size: 128MB
> May 30 19:21:45 spisula kernel: ACPI: PM: Registering ACPI NVS region [me=
m 0x77930000-0x7798ffff] (393216 bytes)
> May 30 19:21:45 spisula kernel: clocksource: jiffies: mask: 0xffffffff ma=
x_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
> May 30 19:21:45 spisula kernel: futex hash table entries: 1024 (order: 4,=
65536 bytes, linear)
> May 30 19:21:45 spisula kernel: pinctrl core: initialized pinctrl subsyst=
em
> May 30 19:21:45 spisula kernel: NET: Registered PF_NETLINK/PF_ROUTE proto=
col family
> May 30 19:21:45 spisula kernel: DMA: preallocated 512 KiB GFP_KERNEL pool=
for atomic allocations
> May 30 19:21:45 spisula kernel: DMA: preallocated 512 KiB GFP_KERNEL|GFP_=
DMA pool for atomic allocations
> May 30 19:21:45 spisula kernel: DMA: preallocated 512 KiB GFP_KERNEL|GFP_=
DMA32 pool for atomic allocations
> May 30 19:21:45 spisula kernel: audit: initializing netlink subsys (disab=
led)
> May 30 19:21:45 spisula kernel: audit: type=3D2000 audit(1748625696.200:1=
): state=3Dinitialized audit_enabled=3D0 res=3D1
> May 30 19:21:45 spisula kernel: thermal_sys: Registered thermal governor =
'fair_share'
> May 30 19:21:45 spisula kernel: thermal_sys: Registered thermal governor =
'bang_bang'
> May 30 19:21:45 spisula kernel: thermal_sys: Registered thermal governor =
'step_wise'
> May 30 19:21:45 spisula kernel: thermal_sys: Registered thermal governor =
'user_space'
> May 30 19:21:45 spisula kernel: thermal_sys: Registered thermal governor =
'power_allocator'
> May 30 19:21:45 spisula kernel: cpuidle: using governor ladder
> May 30 19:21:45 spisula kernel: cpuidle: using governor menu
> May 30 19:21:45 spisula kernel: ACPI FADT declares the system doesn't sup=
port PCIe ASPM, so disable it
> May 30 19:21:45 spisula kernel: acpiphp: ACPI Hot Plug PCI Controller Dri=
ver version: 0.5
> May 30 19:21:45 spisula kernel: PCI: ECAM [mem 0xe0000000-0xe3ffffff] (ba=
se 0xe0000000) for domain 0000 [bus 00-3f]
> May 30 19:21:45 spisula kernel: PCI: Using configuration type 1 for base =
access
> May 30 19:21:45 spisula kernel: kprobes: kprobe jump-optimization is enab=
led. All kprobes are optimized if possible.
> May 30 19:21:45 spisula kernel: HugeTLB: registered 1.00 GiB page size, p=
re-allocated 0 pages
> May 30 19:21:45 spisula kernel: HugeTLB: 16380 KiB vmemmap can be freed f=
or a 1.00 GiB page
> May 30 19:21:45 spisula kernel: HugeTLB: registered 2.00 MiB page size, p=
re-allocated 0 pages
> May 30 19:21:45 spisula kernel: HugeTLB: 28 KiB vmemmap can be freed for =
a 2.00 MiB page
> May 30 19:21:45 spisula kernel: ACPI: Added _OSI(Module Device)
> May 30 19:21:45 spisula kernel: ACPI: Added _OSI(Processor Device)
> May 30 19:21:45 spisula kernel: ACPI: Added _OSI(3.0 _SCP Extensions)
> May 30 19:21:45 spisula kernel: ACPI: Added _OSI(Processor Aggregator Dev=
ice)
> May 30 19:21:45 spisula kernel: ACPI: 12 ACPI AML tables successfully acq=
uired and loaded
> May 30 19:21:45 spisula kernel: ACPI: Dynamic OEM Table Load:
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0xFFFFA06A40E82600 000102 (v02=
PmRef Cpu0Cst 00003001 INTL 20130117)
> May 30 19:21:45 spisula kernel: ACPI: Dynamic OEM Table Load:
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0xFFFFA06A40E83200 00015F (v02=
PmRef ApIst 00003000 INTL 20130117)
> May 30 19:21:45 spisula kernel: ACPI: Dynamic OEM Table Load:
> May 30 19:21:45 spisula kernel: ACPI: SSDT 0xFFFFA06A49AF50C0 00008D (v02=
PmRef ApCst 00003000 INTL 20130117)
> May 30 19:21:45 spisula kernel: ACPI: EC: EC started
> May 30 19:21:45 spisula kernel: ACPI: EC: interrupt blocked
> May 30 19:21:45 spisula kernel: ACPI: EC: EC_CMD/EC_SC=3D0x66, EC_DATA=3D=
0x62
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.LPCB.H_EC: Boot DSDT EC =
used to handle transactions
> May 30 19:21:45 spisula kernel: ACPI: Interpreter enabled
> May 30 19:21:45 spisula kernel: ACPI: PM: (supports S0 S3 S4 S5)
> May 30 19:21:45 spisula kernel: ACPI: Using IOAPIC for interrupt routing
> May 30 19:21:45 spisula kernel: PCI: Using host bridge windows from ACPI;=
if necessary, use "pci=3Dnocrs" and report a bug
> May 30 19:21:45 spisula kernel: PCI: Using E820 reservations for host bri=
dge windows
> May 30 19:21:45 spisula kernel: ACPI: Enabled 10 GPEs in block 00 to 7F
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.RP01.PXP_: New power res=
ource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.RP02.PXP_: New power res=
ource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.RP02.PXSX.DRST: New powe=
r resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.RP03.PXP_: New power res=
ource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.HS02.UPPR: New=
power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.HS04.UPPR: New=
power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.HS05.UPPR: New=
power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.HS09.IBTU.BTPR=
: New power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.SS02.UPPR: New=
power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.SS04.UPPR: New=
power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.XHC_.RHUB.SS05.UPPR: New=
power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.USBC: New power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.LSPR: New power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.CNVW.WRST: New power res=
ource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.PAUD: New power resource
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.SDPR: New power resource
> May 30 19:21:45 spisula kernel: ACPI: \_TZ_.FN00: New power resource
> May 30 19:21:45 spisula kernel: ACPI: PCI Root Bridge [PCI0] (domain 0000=
[bus 00-ff])
> May 30 19:21:45 spisula kernel: acpi PNP0A08:00: _OSC: OS supports [Exten=
dedConfig ASPM ClockPM Segments MSI HPX-Type3]
> May 30 19:21:45 spisula kernel: acpi PNP0A08:00: _OSC: OS now controls [P=
CIeHotplug SHPCHotplug PME AER PCIeCapability LTR]
> May 30 19:21:45 spisula kernel: acpi PNP0A08:00: FADT indicates ASPM is u=
nsupported, using BIOS configuration
> May 30 19:21:45 spisula kernel: acpi PNP0A08:00: [Firmware Info]: ECAM [m=
em 0xe0000000-0xe3ffffff] for domain 0000 [bus 00-3f] only partially covers=
this bridge
> May 30 19:21:45 spisula kernel: PCI host bridge to bus 0000:00
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [io 0=
x0070-0x0077]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [io 0=
x0000-0x006f window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [io 0=
x0078-0x0cf7 window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [io 0=
x0d00-0xffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
x000a0000-0x000fffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
x7c000001-0xbfffffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xe0000000-0xefffffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfea00000-0xfeafffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed00000-0xfed003ff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed01000-0xfed01fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed03000-0xfed03fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed06000-0xfed06fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed08000-0xfed09fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed80000-0xfedbffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfed1c000-0xfed1cfff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [mem 0=
xfee00000-0xfeefffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: root bus resource [bus 0=
0-ff]
> May 30 19:21:45 spisula kernel: pci 0000:00:00.0: [8086:31f0] type 00 cla=
ss 0x060000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:00.1: [8086:318c] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:00.1: BAR 0 [mem 0x80000000-0=
x80007fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:00.3: [8086:3190] type 00 cla=
ss 0x088000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:00.3: BAR 0 [mem 0xa1318000-0=
xa1318fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: [8086:3185] type 00 cla=
ss 0x030000 PCIe Root Complex Integrated Endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: BAR 0 [mem 0xa0000000-0=
xa0ffffff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: BAR 2 [mem 0x90000000-0=
x9fffffff 64bit pref]
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: BAR 4 [io 0x2000-0x203=
f]
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: Video device with shado=
wed ROM at [mem 0x000c0000-0x000dffff]
> May 30 19:21:45 spisula kernel: pci 0000:00:0c.0: [8086:31dc] type 00 cla=
ss 0x028000 PCIe Root Complex Integrated Endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:0c.0: BAR 0 [mem 0xa1310000-0=
xa1313fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:0c.0: PME# supported from D0 =
D3hot D3cold
> May 30 19:21:45 spisula kernel: pci 0000:00:0e.0: [8086:3198] type 00 cla=
ss 0x040300 PCIe Root Complex Integrated Endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:0e.0: BAR 0 [mem 0xa1314000-0=
xa1317fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:0e.0: BAR 4 [mem 0xa1000000-0=
xa10fffff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:0e.0: PME# supported from D0 =
D3hot D3cold
> May 30 19:21:45 spisula kernel: pci 0000:00:0f.0: [8086:319a] type 00 cla=
ss 0x078000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:0f.0: BAR 0 [mem 0xa1319000-0=
xa1319fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:0f.0: PME# supported from D3h=
ot
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: [8086:31d8] type 01 cla=
ss 0x060400 PCIe Root Port
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: PCI bridge to [bus 01]
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: bridge window [mem 0x=
a1200000-0xa12fffff]
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: PME# supported from D0 =
D3hot D3cold
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: [8086:31d6] type 01 cla=
ss 0x060400 PCIe Root Port
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: PCI bridge to [bus 02]
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: bridge window [io 0x=
1000-0x1fff]
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: bridge window [mem 0x=
a1100000-0xa11fffff]
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: PME# supported from D0 =
D3hot D3cold
> May 30 19:21:45 spisula kernel: pci 0000:00:15.0: [8086:31a8] type 00 cla=
ss 0x0c0330 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:15.0: BAR 0 [mem 0xa1300000-0=
xa130ffff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:15.0: PME# supported from D3h=
ot D3cold
> May 30 19:21:45 spisula kernel: pci 0000:00:16.0: [8086:31ac] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:16.0: BAR 0 [mem 0xa131a000-0=
xa131afff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:16.0: BAR 2 [mem 0xa131b000-0=
xa131bfff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:16.3: [8086:31b2] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:16.3: BAR 0 [mem 0xa131c000-0=
xa131cfff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:16.3: BAR 2 [mem 0xa131d000-0=
xa131dfff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:17.0: [8086:31b4] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:17.0: BAR 0 [mem 0xa131e000-0=
xa131efff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:17.0: BAR 2 [mem 0xa131f000-0=
xa131ffff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:17.1: [8086:31b6] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:17.1: BAR 0 [mem 0xa1320000-0=
xa1320fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:17.1: BAR 2 [mem 0xa1321000-0=
xa1321fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:17.2: [8086:31b8] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:17.2: BAR 0 [mem 0xa1322000-0=
xa1322fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:17.2: BAR 2 [mem 0xa1323000-0=
xa1323fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:18.0: [8086:31bc] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:18.0: BAR 0 [mem 0xa1324000-0=
xa1324fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:18.0: BAR 2 [mem 0xa1325000-0=
xa1325fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:18.1: [8086:31be] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:18.1: BAR 0 [mem 0xa1326000-0=
xa1326fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:18.1: BAR 2 [mem 0xa1327000-0=
xa1327fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:18.3: [8086:31ee] type 00 cla=
ss 0x118000 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:18.3: BAR 0 [mem 0xa1328000-0=
xa1328fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:18.3: BAR 2 [mem 0xa1329000-0=
xa1329fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:1c.0: [8086:31cc] type 00 cla=
ss 0x080501 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:1c.0: BAR 0 [mem 0xa132a000-0=
xa132afff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:1c.0: BAR 2 [mem 0xa132b000-0=
xa132bfff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:1f.0: [8086:31e8] type 00 cla=
ss 0x060100 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:1f.1: [8086:31d4] type 00 cla=
ss 0x0c0500 conventional PCI endpoint
> May 30 19:21:45 spisula kernel: pci 0000:00:1f.1: BAR 0 [mem 0xa132c000-0=
xa132c0ff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:00:1f.1: BAR 4 [io 0x2040-0x205=
f]
> May 30 19:21:45 spisula kernel: pci 0000:01:00.0: [2646:500d] type 00 cla=
ss 0x010802 PCIe Endpoint
> May 30 19:21:45 spisula kernel: pci 0000:01:00.0: BAR 0 [mem 0xa1200000-0=
xa1203fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:01:00.0: Upstream bridge's Max P=
ayload Size set to 128 (was 256, max 256)
> May 30 19:21:45 spisula kernel: pci 0000:01:00.0: Max Payload Size set to=
128 (was 128, max 128)
> May 30 19:21:45 spisula kernel: pci 0000:01:00.0: 16.000 Gb/s available P=
CIe bandwidth, limited by 5.0 GT/s PCIe x4 link at 0000:00:13.0 (capable of=
31.504 Gb/s with 8.0 GT/s PCIe x4 link)
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: PCI bridge to [bus 01]
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: [10ec:8168] type 00 cla=
ss 0x020000 PCIe Endpoint
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: BAR 0 [io 0x1000-0x10f=
f]
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: BAR 2 [mem 0xa1104000-0=
xa1104fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: BAR 4 [mem 0xa1100000-0=
xa1103fff 64bit]
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: Upstream bridge's Max P=
ayload Size set to 128 (was 256, max 256)
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: Max Payload Size set to=
128 (was 128, max 128)
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: supports D1 D2
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: PME# supported from D0 =
D1 D2 D3hot D3cold
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: PCI bridge to [bus 02]
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKA configured=
for IRQ 3
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKB configured=
for IRQ 4
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKC configured=
for IRQ 5
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKD configured=
for IRQ 6
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKE configured=
for IRQ 7
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKF configured=
for IRQ 9
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKG configured=
for IRQ 10
> May 30 19:21:45 spisula kernel: ACPI: PCI: Interrupt link LNKH configured=
for IRQ 11
> May 30 19:21:45 spisula kernel: ACPI Warning: GPE type mismatch (level/ed=
ge) (20240827/evxface-791)
> May 30 19:21:45 spisula kernel: ACPI: EC: interrupt unblocked
> May 30 19:21:45 spisula kernel: ACPI: EC: event unblocked
> May 30 19:21:45 spisula kernel: ACPI: EC: EC_CMD/EC_SC=3D0x66, EC_DATA=3D=
0x62
> May 30 19:21:45 spisula kernel: ACPI: EC: GPE=3D0x25
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.LPCB.H_EC: Boot DSDT EC =
initialization complete
> May 30 19:21:45 spisula kernel: ACPI: \_SB_.PCI0.LPCB.H_EC: EC: Used to h=
andle transactions and events
> May 30 19:21:45 spisula kernel: iommu: Default domain type: Translated
> May 30 19:21:45 spisula kernel: iommu: DMA domain TLB invalidation policy=
: lazy mode
> May 30 19:21:45 spisula kernel: pps_core: LinuxPPS API ver. 1 registered
> May 30 19:21:45 spisula kernel: pps_core: Software ver. 5.3.6 - Copyright=
2005-2007 Rodolfo Giometti <giometti@xxxxxxxx>
> May 30 19:21:45 spisula kernel: PTP clock support registered
> May 30 19:21:45 spisula kernel: EDAC MC: Ver: 3.0.0
> May 30 19:21:45 spisula kernel: efivars: Registered efivars operations
> May 30 19:21:45 spisula kernel: NetLabel: Initializing
> May 30 19:21:45 spisula kernel: NetLabel: domain hash size =3D 128
> May 30 19:21:45 spisula kernel: NetLabel: protocols =3D UNLABELED CIPSOv=
4 CALIPSO
> May 30 19:21:45 spisula kernel: NetLabel: unlabeled traffic allowed by d=
efault
> May 30 19:21:45 spisula kernel: PCI: Using ACPI for IRQ routing
> May 30 19:21:45 spisula kernel: PCI: pci_cache_line_size set to 64 bytes
> May 30 19:21:45 spisula kernel: resource: Expanded resource Reserved due =
to conflict with PCI Bus 0000:00
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x00058000-=
0x0005ffff]
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x0009e000-=
0x0009ffff]
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x66fcd000-=
0x67ffffff]
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x7176c000-=
0x73ffffff]
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x74480000-=
0x77ffffff]
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x78d5a000-=
0x7bffffff]
> May 30 19:21:45 spisula kernel: e820: reserve RAM buffer [mem 0x79c00000-=
0x7bffffff]
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: vgaarb: setting as boot=
VGA device
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: vgaarb: bridge control =
possible
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: vgaarb: VGA device adde=
d: decodes=3Dio+mem,owns=3Dio+mem,locks=3Dnone
> May 30 19:21:45 spisula kernel: vgaarb: loaded
> May 30 19:21:45 spisula kernel: hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, =
0, 0, 0, 0, 0
> May 30 19:21:45 spisula kernel: hpet0: 8 comparators, 64-bit 19.200000 MH=
z counter
> May 30 19:21:45 spisula kernel: clocksource: Switched to clocksource tsc-=
early
> May 30 19:21:45 spisula kernel: VFS: Disk quotas dquot_6.6.0
> May 30 19:21:45 spisula kernel: VFS: Dquot-cache hash table entries: 512 =
(order 0, 4096 bytes)
> May 30 19:21:45 spisula kernel: AppArmor: AppArmor Filesystem Enabled
> May 30 19:21:45 spisula kernel: pnp: PnP ACPI init
> May 30 19:21:45 spisula kernel: pnp 00:00: disabling [io 0x164e-0x164f] =
because it overlaps 0000:00:14.0 BAR 13 [io 0x1000-0x1fff]
> May 30 19:21:45 spisula kernel: system 00:00: [io 0x0680-0x069f] has bee=
n reserved
> May 30 19:21:45 spisula kernel: system 00:00: [io 0x0400-0x047f] could n=
ot be reserved
> May 30 19:21:45 spisula kernel: system 00:00: [io 0x0500-0x05fe] has bee=
n reserved
> May 30 19:21:45 spisula kernel: system 00:00: [io 0x0600-0x061f] has bee=
n reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xe0000000-0xefffffff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfea00000-0xfeafffff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfed01000-0xfed01fff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfed03000-0xfed03fff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfed06000-0xfed06fff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfed08000-0xfed09fff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfed80000-0xfedbffff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfed1c000-0xfed1cfff]=
has been reserved
> May 30 19:21:45 spisula kernel: system 00:02: [mem 0xfee00000-0xfeefffff]=
has been reserved
> May 30 19:21:45 spisula kernel: pnp: PnP ACPI: found 4 devices
> May 30 19:21:45 spisula kernel: clocksource: acpi_pm: mask: 0xffffff max_=
cycles: 0xffffff, max_idle_ns: 2085701024 ns
> May 30 19:21:45 spisula kernel: NET: Registered PF_INET protocol family
> May 30 19:21:45 spisula kernel: IP idents hash table entries: 65536 (orde=
r: 7, 524288 bytes, linear)
> May 30 19:21:45 spisula kernel: tcp_listen_portaddr_hash hash table entri=
es: 2048 (order: 3, 32768 bytes, linear)
> May 30 19:21:45 spisula kernel: Table-perturb hash table entries: 65536 (=
order: 6, 262144 bytes, linear)
> May 30 19:21:45 spisula kernel: TCP established hash table entries: 32768=
(order: 6, 262144 bytes, linear)
> May 30 19:21:45 spisula kernel: TCP bind hash table entries: 32768 (order=
: 8, 1048576 bytes, linear)
> May 30 19:21:45 spisula kernel: TCP: Hash tables configured (established =
32768 bind 32768)
> May 30 19:21:45 spisula kernel: MPTCP token hash table entries: 4096 (ord=
er: 4, 98304 bytes, linear)
> May 30 19:21:45 spisula kernel: UDP hash table entries: 2048 (order: 4, 6=
5536 bytes, linear)
> May 30 19:21:45 spisula kernel: UDP-Lite hash table entries: 2048 (order:=
4, 65536 bytes, linear)
> May 30 19:21:45 spisula kernel: NET: Registered PF_UNIX/PF_LOCAL protocol=
family
> May 30 19:21:45 spisula kernel: NET: Registered PF_XDP protocol family
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: PCI bridge to [bus 01]
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: bridge window [mem 0x=
a1200000-0xa12fffff]
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: PCI bridge to [bus 02]
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: bridge window [io 0x=
1000-0x1fff]
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: bridge window [mem 0x=
a1100000-0xa11fffff]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 4 [io 0x0070-0=
x0077]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 5 [io 0x0000-0=
x006f window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 6 [io 0x0078-0=
x0cf7 window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 7 [io 0x0d00-0=
xffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 8 [mem 0x000a00=
00-0x000fffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 9 [mem 0x7c0000=
01-0xbfffffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 10 [mem 0xe0000=
000-0xefffffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 11 [mem 0xfea00=
000-0xfeafffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 12 [mem 0xfed00=
000-0xfed003ff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 13 [mem 0xfed01=
000-0xfed01fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 14 [mem 0xfed03=
000-0xfed03fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 15 [mem 0xfed06=
000-0xfed06fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 16 [mem 0xfed08=
000-0xfed09fff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 17 [mem 0xfed80=
000-0xfedbffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 18 [mem 0xfed1c=
000-0xfed1cfff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:00: resource 19 [mem 0xfee00=
000-0xfeefffff window]
> May 30 19:21:45 spisula kernel: pci_bus 0000:01: resource 1 [mem 0xa12000=
00-0xa12fffff]
> May 30 19:21:45 spisula kernel: pci_bus 0000:02: resource 0 [io 0x1000-0=
x1fff]
> May 30 19:21:45 spisula kernel: pci_bus 0000:02: resource 1 [mem 0xa11000=
00-0xa11fffff]
> May 30 19:21:45 spisula kernel: PCI: CLS 64 bytes, default 64
> May 30 19:21:45 spisula kernel: DMAR: No ATSR found
> May 30 19:21:45 spisula kernel: DMAR: No SATC found
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature fl1gp_support inconsi=
stent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature pgsel_inv inconsistent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature nwfs inconsistent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature eafs inconsistent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature prs inconsistent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature nest inconsistent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature mts inconsistent
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature sc_support inconsiste=
nt
> May 30 19:21:45 spisula kernel: DMAR: IOMMU feature dev_iotlb_support inc=
onsistent
> May 30 19:21:45 spisula kernel: DMAR: dmar0: Using Queued invalidation
> May 30 19:21:45 spisula kernel: DMAR: dmar1: Using Queued invalidation
> May 30 19:21:45 spisula kernel: Trying to unpack rootfs image as initramf=
s...
> May 30 19:21:45 spisula kernel: pci 0000:00:02.0: Adding to iommu group 0
> May 30 19:21:45 spisula kernel: pci 0000:00:00.0: Adding to iommu group 1
> May 30 19:21:45 spisula kernel: pci 0000:00:00.1: Adding to iommu group 1
> May 30 19:21:45 spisula kernel: pci 0000:00:00.3: Adding to iommu group 1
> May 30 19:21:45 spisula kernel: pci 0000:00:0c.0: Adding to iommu group 2
> May 30 19:21:45 spisula kernel: pci 0000:00:0e.0: Adding to iommu group 3
> May 30 19:21:45 spisula kernel: pci 0000:00:0f.0: Adding to iommu group 4
> May 30 19:21:45 spisula kernel: pci 0000:00:13.0: Adding to iommu group 5
> May 30 19:21:45 spisula kernel: pci 0000:00:14.0: Adding to iommu group 6
> May 30 19:21:45 spisula kernel: pci 0000:00:15.0: Adding to iommu group 7
> May 30 19:21:45 spisula kernel: pci 0000:00:16.0: Adding to iommu group 8
> May 30 19:21:45 spisula kernel: pci 0000:00:16.3: Adding to iommu group 8
> May 30 19:21:45 spisula kernel: pci 0000:00:17.0: Adding to iommu group 9
> May 30 19:21:45 spisula kernel: pci 0000:00:17.1: Adding to iommu group 9
> May 30 19:21:45 spisula kernel: pci 0000:00:17.2: Adding to iommu group 9
> May 30 19:21:45 spisula kernel: pci 0000:00:18.0: Adding to iommu group 10
> May 30 19:21:45 spisula kernel: pci 0000:00:18.1: Adding to iommu group 10
> May 30 19:21:45 spisula kernel: pci 0000:00:18.3: Adding to iommu group 10
> May 30 19:21:45 spisula kernel: pci 0000:00:1c.0: Adding to iommu group 11
> May 30 19:21:45 spisula kernel: pci 0000:00:1f.0: Adding to iommu group 12
> May 30 19:21:45 spisula kernel: pci 0000:00:1f.1: Adding to iommu group 12
> May 30 19:21:45 spisula kernel: pci 0000:01:00.0: Adding to iommu group 13
> May 30 19:21:45 spisula kernel: pci 0000:02:00.0: Adding to iommu group 14
> May 30 19:21:45 spisula kernel: DMAR: Intel(R) Virtualization Technology =
for Directed I/O
> May 30 19:21:45 spisula kernel: PCI-DMA: Using software bounce buffering =
for IO (SWIOTLB)
> May 30 19:21:45 spisula kernel: software IO TLB: mapped [mem 0x000000006d=
61a000-0x000000007161a000] (64MB)
> May 30 19:21:45 spisula kernel: clocksource: tsc: mask: 0xfffffffffffffff=
f max_cycles: 0xfc66f4fc7c, max_idle_ns: 440795224246 ns
> May 30 19:21:45 spisula kernel: clocksource: Switched to clocksource tsc
> May 30 19:21:45 spisula kernel: Initialise system trusted keyrings
> May 30 19:21:45 spisula kernel: Key type blacklist registered
> May 30 19:21:45 spisula kernel: workingset: timestamp_bits=3D36 max_order=
=3D20 bucket_order=3D0
> May 30 19:21:45 spisula kernel: zbud: loaded
> May 30 19:21:45 spisula kernel: fuse: init (API version 7.41)
> May 30 19:21:45 spisula kernel: integrity: Platform Keyring initialized
> May 30 19:21:45 spisula kernel: integrity: Machine keyring initialized
> May 30 19:21:45 spisula kernel: Key type asymmetric registered
> May 30 19:21:45 spisula kernel: Asymmetric key parser 'x509' registered
> May 30 19:21:45 spisula kernel: Freeing initrd memory: 53360K
> May 30 19:21:45 spisula kernel: Block layer SCSI generic (bsg) driver ver=
sion 0.4 loaded (major 246)
> May 30 19:21:45 spisula kernel: io scheduler mq-deadline registered
> May 30 19:21:45 spisula kernel: ledtrig-cpu: registered to indicate activ=
ity on CPUs
> May 30 19:21:45 spisula kernel: pcieport 0000:00:13.0: PME: Signaling wit=
h IRQ 122
> May 30 19:21:45 spisula kernel: pcieport 0000:00:14.0: PME: Signaling wit=
h IRQ 123
> May 30 19:21:45 spisula kernel: shpchp: Standard Hot Plug PCI Controller =
Driver version: 0.4
> May 30 19:21:45 spisula kernel: ACPI: \_TZ_.TZ01: _AL0 evaluation failure
> May 30 19:21:45 spisula kernel: thermal LNXTHERM:00: registered as therma=
l_zone0
> May 30 19:21:45 spisula kernel: ACPI: thermal: Thermal Zone [TZ01] (39 C)
> May 30 19:21:45 spisula kernel: Serial: 8250/16550 driver, 4 ports, IRQ s=
haring enabled
> May 30 19:21:45 spisula kernel: Linux agpgart interface v0.103
> May 30 19:21:45 spisula kernel: tpm_tis MSFT0101:00: 2.0 TPM (device-id 0=
x1B, rev-id 22)
> May 30 19:21:45 spisula kernel: i8042: PNP: PS/2 Controller [PNP0303:PS2K=
] at 0x60,0x64 irq 1
> May 30 19:21:45 spisula kernel: i8042: PNP: PS/2 appears to have AUX port=
disabled, if this is incorrect please boot with i8042.nopnp
> May 30 19:21:45 spisula kernel: serio: i8042 KBD port at 0x60,0x64 irq 1
> May 30 19:21:45 spisula kernel: mousedev: PS/2 mouse device common for al=
l mice
> May 30 19:21:45 spisula kernel: rtc_cmos 00:03: RTC can wake from S4
> May 30 19:21:45 spisula kernel: rtc_cmos 00:03: registered as rtc0
> May 30 19:21:45 spisula kernel: rtc_cmos 00:03: setting system clock to 2=
025-05-30T17:21:37 UTC (1748625697)
> May 30 19:21:45 spisula kernel: rtc_cmos 00:03: alarms up to one month, y=
3k, 242 bytes nvram
> May 30 19:21:45 spisula kernel: intel_pstate: Intel P-state driver initia=
lizing
> May 30 19:21:45 spisula kernel: efifb: probing for efifb
> May 30 19:21:45 spisula kernel: efifb: framebuffer at 0x90000000, using 4=
128k, total 4128k
> May 30 19:21:45 spisula kernel: efifb: mode is 1366x768x32, linelength=3D=
5504, pages=3D1
> May 30 19:21:45 spisula kernel: efifb: scrolling: redraw
> May 30 19:21:45 spisula kernel: efifb: Truecolor: size=3D8:8:8:8, shift=
=3D24:16:8:0
> May 30 19:21:45 spisula kernel: Console: switching to colour frame buffer=
device 170x48
> May 30 19:21:45 spisula kernel: fb0: EFI VGA frame buffer device
> May 30 19:21:45 spisula kernel: NET: Registered PF_INET6 protocol family
> May 30 19:21:45 spisula kernel: input: AT Translated Set 2 keyboard as /d=
evices/platform/i8042/serio0/input/input0
> May 30 19:21:45 spisula kernel: Segment Routing with IPv6
> May 30 19:21:45 spisula kernel: In-situ OAM (IOAM) with IPv6
> May 30 19:21:45 spisula kernel: mip6: Mobile IPv6
> May 30 19:21:45 spisula kernel: NET: Registered PF_PACKET protocol family
> May 30 19:21:45 spisula kernel: mpls_gso: MPLS GSO support
> May 30 19:21:45 spisula kernel: microcode: Current revision: 0x00000026
> May 30 19:21:45 spisula kernel: microcode: Updated early from: 0x0000001a
> May 30 19:21:45 spisula kernel: resctrl: L2 allocation detected
> May 30 19:21:45 spisula kernel: IPI shorthand broadcast: enabled
> May 30 19:21:45 spisula kernel: sched_clock: Marking stable (1464003015, =
1124137)->(1472340122, -7212970)
> May 30 19:21:45 spisula kernel: registered taskstats version 1
> May 30 19:21:45 spisula kernel: Loading compiled-in X.509 certificates
> May 30 19:21:45 spisula kernel: Loaded X.509 cert 'Build time autogenerat=
ed kernel key: d2b9abca7af4f2327abcd1e5dc64d5307b4debb2'
> May 30 19:21:45 spisula kernel: Demotion targets for Node 0: null
> May 30 19:21:45 spisula kernel: Key type .fscrypt registered
> May 30 19:21:45 spisula kernel: Key type fscrypt-provisioning registered
> May 30 19:21:45 spisula kernel: Key type encrypted registered
> May 30 19:21:45 spisula kernel: AppArmor: AppArmor sha256 policy hashing =
enabled
> May 30 19:21:45 spisula kernel: integrity: Loading X.509 certificate: UEF=
I:db
> May 30 19:21:45 spisula kernel: integrity: Loaded X.509 cert 'Microsoft W=
indows Production PCA 2011: a92902398e16c49778cd90f99e4f9ae17c55af53'
> May 30 19:21:45 spisula kernel: integrity: Loading X.509 certificate: UEF=
I:db
> May 30 19:21:45 spisula kernel: integrity: Loaded X.509 cert 'Microsoft C=
orporation UEFI CA 2011: 13adbf4309bd82709c8cd54f316ed522988a1bd4'
> May 30 19:21:45 spisula kernel: integrity: Loading X.509 certificate: UEF=
I:db
> May 30 19:21:45 spisula kernel: integrity: Loaded X.509 cert 'Acer Databa=
se: 84f00f5841571abd2cc11a8c26d5c9c8d2b6b0b5'
> May 30 19:21:45 spisula kernel: integrity: Loading X.509 certificate: UEF=
I:db
> May 30 19:21:45 spisula kernel: integrity: Loaded X.509 cert 'HQSecureFla=
sh: b78a58299f3b8dbd4064615a6e85365a'
> May 30 19:21:45 spisula kernel: integrity: Loading X.509 certificate: UEF=
I:MokListRT (MOKvar table)
> May 30 19:21:45 spisula kernel: integrity: Loaded X.509 cert 'Debian Secu=
re Boot CA: 6ccece7e4c6c0d1f6149f3dd27dfcc5cbb419ea1'
> May 30 19:21:45 spisula kernel: ima: Allocated hash algorithm: sha256
> May 30 19:21:45 spisula kernel: audit: type=3D1807 audit(1748625697.939:2=
): action=3Dmeasure func=3DKEXEC_KERNEL_CHECK res=3D1
> May 30 19:21:45 spisula kernel: audit: type=3D1807 audit(1748625697.939:3=
): action=3Dmeasure func=3DMODULE_CHECK res=3D1
> May 30 19:21:45 spisula kernel: evm: Initialising EVM extended attributes:
> May 30 19:21:45 spisula kernel: evm: security.selinux
> May 30 19:21:45 spisula kernel: evm: security.SMACK64 (disabled)
> May 30 19:21:45 spisula kernel: evm: security.SMACK64EXEC (disabled)
> May 30 19:21:45 spisula kernel: evm: security.SMACK64TRANSMUTE (disabled)
> May 30 19:21:45 spisula kernel: evm: security.SMACK64MMAP (disabled)
> May 30 19:21:45 spisula kernel: evm: security.apparmor
> May 30 19:21:45 spisula kernel: evm: security.ima
> May 30 19:21:45 spisula kernel: evm: security.capability
> May 30 19:21:45 spisula kernel: evm: HMAC attrs: 0x1
> May 30 19:21:45 spisula kernel: RAS: Correctable Errors collector initial=
ized.
> May 30 19:21:45 spisula kernel: Lockdown: swapper/0: hibernation is restr=
icted; see man kernel_lockdown.7
> May 30 19:21:45 spisula kernel: clk: Disabling unused clocks
> May 30 19:21:45 spisula kernel: PM: genpd: Disabling unused power domains
> May 30 19:21:45 spisula kernel: Freeing unused decrypted memory: 2028K
> May 30 19:21:45 spisula kernel: Freeing unused kernel image (initmem) mem=
ory: 4148K
> May 30 19:21:45 spisula kernel: Write protecting the kernel read-only dat=
a: 28672k
> May 30 19:21:45 spisula kernel: Freeing unused kernel image (rodata/data =
gap) memory: 508K
> May 30 19:21:45 spisula kernel: x86/mm: Checked W+X mappings: passed, no =
W+X pages found.
> May 30 19:21:45 spisula kernel: Run /init as init process
> May 30 19:21:45 spisula kernel: with arguments:
> May 30 19:21:45 spisula kernel: /init
> May 30 19:21:45 spisula kernel: with environment:
> May 30 19:21:45 spisula kernel: HOME=3D/
> May 30 19:21:45 spisula kernel: TERM=3Dlinux
> May 30 19:21:45 spisula kernel: BOOT_IMAGE=3D/vmlinuz-6.12.29-amd64
> May 30 19:21:45 spisula kernel: tpm tpm0: auth session is active
> May 30 19:21:45 spisula kernel: wmi_bus wmi_bus-PNP0C14:00: [Firmware Bug=
]: WMBF method block execution control method not found
> May 30 19:21:45 spisula kernel: ACPI: bus type drm_connector registered
> May 30 19:21:45 spisula kernel: lpc_ich 0000:00:1f.0: No MFD cells added
> May 30 19:21:45 spisula kernel: ACPI: battery: Slot [BAT0] (battery prese=
nt)
> May 30 19:21:45 spisula kernel: cryptd: max_cpu_qlen set to 1000
> May 30 19:21:45 spisula kernel: sdhci: Secure Digital Host Controller Int=
erface driver
> May 30 19:21:45 spisula kernel: sdhci: Copyright(c) Pierre Ossman
> May 30 19:21:45 spisula kernel: i801_smbus 0000:00:1f.1: SPD Write Disabl=
e is set
> May 30 19:21:45 spisula kernel: i801_smbus 0000:00:1f.1: SMBus using PCI =
interrupt
> May 30 19:21:45 spisula kernel: hid: raw HID events driver (C) Jiri Kosina
> May 30 19:21:45 spisula kernel: ACPI: bus type USB registered
> May 30 19:21:45 spisula kernel: usbcore: registered new interface driver =
usbfs
> May 30 19:21:45 spisula kernel: usbcore: registered new interface driver =
hub
> May 30 19:21:45 spisula kernel: usbcore: registered new device driver usb
> May 30 19:21:45 spisula kernel: idma64 idma64.0: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: idma64 idma64.1: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: idma64 idma64.2: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: idma64 idma64.3: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: idma64 idma64.4: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: idma64 idma64.5: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: dw-apb-uart.5: ttyS0 at MMIO 0xa1324000 (=
irq =3D 4, base_baud =3D 115200) is a 16550A
> May 30 19:21:45 spisula kernel: idma64 idma64.6: Found Intel integrated D=
MA 64-bit
> May 30 19:21:45 spisula kernel: dw-apb-uart.6: ttyS1 at MMIO 0xa1326000 (=
irq =3D 5, base_baud =3D 115200) is a 16550A
> May 30 19:21:45 spisula kernel: dw-apb-uart.7: ttyS2 at MMIO 0xa1328000 (=
irq =3D 7, base_baud =3D 115200) is a 16550A
> May 30 19:21:45 spisula kernel: nvme nvme0: pci function 0000:01:00.0
> May 30 19:21:45 spisula kernel: nvme nvme0: missing or invalid SUBNQN fie=
ld.
> May 30 19:21:45 spisula kernel: nvme nvme0: 4/0/0 default/read/poll queues
> May 30 19:21:45 spisula kernel: nvme0n1: p1 p2 p3
> May 30 19:21:45 spisula kernel: r8169 0000:02:00.0: can't disable ASPM; O=
S doesn't have ASPM control
> May 30 19:21:45 spisula kernel: r8169 0000:02:00.0 eth0: RTL8168h/8111h, =
78:72:64:39:a4:b2, XID 541, IRQ 129
> May 30 19:21:45 spisula kernel: r8169 0000:02:00.0 eth0: jumbo features [=
frames: 9194 bytes, tx checksumming: ko]
> May 30 19:21:45 spisula kernel: r8169 0000:02:00.0 enp2s0: renamed from e=
th0
> May 30 19:21:45 spisula kernel: sdhci-pci 0000:00:1c.0: SDHCI controller =
found [8086:31cc] (rev 6)
> May 30 19:21:45 spisula kernel: mmc0: CQHCI version 5.10
> May 30 19:21:45 spisula kernel: mmc0: SDHCI controller on PCI [0000:00:1c=
=2E0] using ADMA 64-bit
> May 30 19:21:45 spisula kernel: i2c_hid_acpi i2c-ELAN9004:00: i2c_hid_get=
_input: IRQ triggered but there's no data
> May 30 19:21:45 spisula kernel: xhci_hcd 0000:00:15.0: xHCI Host Controll=
er
> May 30 19:21:45 spisula kernel: xhci_hcd 0000:00:15.0: new USB bus regist=
ered, assigned bus number 1
> May 30 19:21:45 spisula kernel: xhci_hcd 0000:00:15.0: hcc params 0x20007=
7c1 hci version 0x100 quirks 0x0000000000009810
> May 30 19:21:45 spisula kernel: xhci_hcd 0000:00:15.0: xHCI Host Controll=
er
> May 30 19:21:45 spisula kernel: xhci_hcd 0000:00:15.0: new USB bus regist=
ered, assigned bus number 2
> May 30 19:21:45 spisula kernel: xhci_hcd 0000:00:15.0: Host supports USB =
3.0 SuperSpeed
> May 30 19:21:45 spisula kernel: usb usb1: New USB device found, idVendor=
=3D1d6b, idProduct=3D0002, bcdDevice=3D 6.12
> May 30 19:21:45 spisula kernel: usb usb1: New USB device strings: Mfr=3D3=
, Product=3D2, SerialNumber=3D1
> May 30 19:21:45 spisula kernel: usb usb1: Product: xHCI Host Controller
> May 30 19:21:45 spisula kernel: usb usb1: Manufacturer: Linux 6.12.29-amd=
64 xhci-hcd
> May 30 19:21:45 spisula kernel: usb usb1: SerialNumber: 0000:00:15.0
> May 30 19:21:45 spisula kernel: hub 1-0:1.0: USB hub found
> May 30 19:21:45 spisula kernel: hub 1-0:1.0: 9 ports detected
> May 30 19:21:45 spisula kernel: usb usb2: New USB device found, idVendor=
=3D1d6b, idProduct=3D0003, bcdDevice=3D 6.12
> May 30 19:21:45 spisula kernel: usb usb2: New USB device strings: Mfr=3D3=
, Product=3D2, SerialNumber=3D1
> May 30 19:21:45 spisula kernel: usb usb2: Product: xHCI Host Controller
> May 30 19:21:45 spisula kernel: usb usb2: Manufacturer: Linux 6.12.29-amd=
64 xhci-hcd
> May 30 19:21:45 spisula kernel: usb usb2: SerialNumber: 0000:00:15.0
> May 30 19:21:45 spisula kernel: hub 2-0:1.0: USB hub found
> May 30 19:21:45 spisula kernel: hub 2-0:1.0: 7 ports detected
> May 30 19:21:45 spisula kernel: mmc0: Failed to initialize a non-removabl=
e card
> May 30 19:21:45 spisula kernel: input: ELAN050C:00 04F3:3149 Mouse as /de=
vices/pci0000:00/0000:00:17.2/i2c_designware.4/i2c-5/i2c-ELAN050C:00/0018:0=
4F3:3149.0001/input/input1
> May 30 19:21:45 spisula kernel: input: ELAN050C:00 04F3:3149 Touchpad as =
/devices/pci0000:00/0000:00:17.2/i2c_designware.4/i2c-5/i2c-ELAN050C:00/001=
8:04F3:3149.0001/input/input3
> May 30 19:21:45 spisula kernel: hid-generic 0018:04F3:3149.0001: input,hi=
draw0: I2C HID v1.00 Mouse [ELAN050C:00 04F3:3149] on i2c-ELAN050C:00
> May 30 19:21:45 spisula kernel: input: ELAN9004:00 04F3:2D58 Touchscreen =
as /devices/pci0000:00/0000:00:17.1/i2c_designware.3/i2c-4/i2c-ELAN9004:00/=
0018:04F3:2D58.0002/input/input4
> May 30 19:21:45 spisula kernel: input: ELAN9004:00 04F3:2D58 as /devices/=
pci0000:00/0000:00:17.1/i2c_designware.3/i2c-4/i2c-ELAN9004:00/0018:04F3:2D=
58.0002/input/input5
> May 30 19:21:45 spisula kernel: input: ELAN9004:00 04F3:2D58 as /devices/=
pci0000:00/0000:00:17.1/i2c_designware.3/i2c-4/i2c-ELAN9004:00/0018:04F3:2D=
58.0002/input/input6
> May 30 19:21:45 spisula kernel: hid-generic 0018:04F3:2D58.0002: input,hi=
draw1: I2C HID v1.00 Device [ELAN9004:00 04F3:2D58] on i2c-ELAN9004:00
> May 30 19:21:45 spisula kernel: input: ELAN050C:00 04F3:3149 Mouse as /de=
vices/pci0000:00/0000:00:17.2/i2c_designware.4/i2c-5/i2c-ELAN050C:00/0018:0=
4F3:3149.0001/input/input8
> May 30 19:21:45 spisula kernel: input: ELAN050C:00 04F3:3149 Touchpad as =
/devices/pci0000:00/0000:00:17.2/i2c_designware.4/i2c-5/i2c-ELAN050C:00/001=
8:04F3:3149.0001/input/input10
> May 30 19:21:45 spisula kernel: hid-multitouch 0018:04F3:3149.0001: input=
,hidraw0: I2C HID v1.00 Mouse [ELAN050C:00 04F3:3149] on i2c-ELAN050C:00
> May 30 19:21:45 spisula kernel: input: ELAN9004:00 04F3:2D58 as /devices/=
pci0000:00/0000:00:17.1/i2c_designware.3/i2c-4/i2c-ELAN9004:00/0018:04F3:2D=
58.0002/input/input11
> May 30 19:21:45 spisula kernel: input: ELAN9004:00 04F3:2D58 UNKNOWN as /=
devices/pci0000:00/0000:00:17.1/i2c_designware.3/i2c-4/i2c-ELAN9004:00/0018=
:04F3:2D58.0002/input/input12
> May 30 19:21:45 spisula kernel: input: ELAN9004:00 04F3:2D58 UNKNOWN as /=
devices/pci0000:00/0000:00:17.1/i2c_designware.3/i2c-4/i2c-ELAN9004:00/0018=
:04F3:2D58.0002/input/input13
> May 30 19:21:45 spisula kernel: hid-multitouch 0018:04F3:2D58.0002: input=
,hidraw1: I2C HID v1.00 Device [ELAN9004:00 04F3:2D58] on i2c-ELAN9004:00
> May 30 19:21:45 spisula kernel: usb 1-2: new high-speed USB device number=
2 using xhci_hcd
> May 30 19:21:45 spisula kernel: device-mapper: core: CONFIG_IMA_DISABLE_H=
TABLE is disabled. Duplicate IMA measurements will not be recorded in the I=
MA log.
> May 30 19:21:45 spisula kernel: device-mapper: uevent: version 1.0.3
> May 30 19:21:45 spisula kernel: device-mapper: ioctl: 4.48.0-ioctl (2023-=
03-01) initialised: dm-devel@xxxxxxxxxxxxxxx
> May 30 19:21:45 spisula kernel: usb 1-2: New USB device found, idVendor=
=3D04f2, idProduct=3Db6db, bcdDevice=3D62.27
> May 30 19:21:45 spisula kernel: usb 1-2: New USB device strings: Mfr=3D3,=
Product=3D1, SerialNumber=3D2
> May 30 19:21:45 spisula kernel: usb 1-2: Product: 5MP World Facing
> May 30 19:21:45 spisula kernel: usb 1-2: Manufacturer: Chicony Electronic=
s Co.,Ltd.
> May 30 19:21:45 spisula kernel: usb 1-2: SerialNumber: 0001
> May 30 19:21:45 spisula kernel: usb 1-7: new high-speed USB device number=
3 using xhci_hcd
> May 30 19:21:45 spisula kernel: usb 1-7: New USB device found, idVendor=
=3D0408, idProduct=3Da061, bcdDevice=3D 0.04
> May 30 19:21:45 spisula kernel: usb 1-7: New USB device strings: Mfr=3D1,=
Product=3D2, SerialNumber=3D0
> May 30 19:21:45 spisula kernel: usb 1-7: Product: HD User Facing
> May 30 19:21:45 spisula kernel: usb 1-7: Manufacturer: SunplusIT Inc
> May 30 19:21:45 spisula kernel: usb 1-8: new high-speed USB device number=
4 using xhci_hcd
> May 30 19:21:45 spisula kernel: usb 1-8: New USB device found, idVendor=
=3D0bda, idProduct=3D0129, bcdDevice=3D39.60
> May 30 19:21:45 spisula kernel: usb 1-8: New USB device strings: Mfr=3D1,=
Product=3D2, SerialNumber=3D3
> May 30 19:21:45 spisula kernel: usb 1-8: Product: USB2.0-CRW
> May 30 19:21:45 spisula kernel: usb 1-8: Manufacturer: Generic
> May 30 19:21:45 spisula kernel: usb 1-8: SerialNumber: 20100201396000000
> May 30 19:21:45 spisula kernel: usb 1-9: new full-speed USB device number=
5 using xhci_hcd
> May 30 19:21:45 spisula kernel: usbcore: registered new interface driver =
rtsx_usb
> May 30 19:21:45 spisula kernel: usb 1-9: New USB device found, idVendor=
=3D8087, idProduct=3D0aaa, bcdDevice=3D 0.02
> May 30 19:21:46 spisula kernel: usb 1-9: New USB device strings: Mfr=3D0,=
Product=3D0, SerialNumber=3D0
> May 30 19:21:46 spisula kernel: Lockdown: resume: hibernation is restrict=
ed; see man kernel_lockdown.7
> May 30 19:21:46 spisula kernel: EXT4-fs (dm-1): mounted filesystem af843d=
99-0ced-4405-b68d-4f56cdc24cb4 ro with ordered data mode. Quota mode: none.
> May 30 19:21:46 spisula kernel: Not activating Mandatory Access Control a=
s /sbin/tomoyo-init does not exist.
> May 30 19:21:46 spisula systemd[1]: Inserted module 'autofs4'
> May 30 19:21:46 spisula systemd[1]: systemd 257.5-2 running in system mod=
e (+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS=
+OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRY=
PTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCOD=
E +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +S=
YSVINIT +LIBARCHIVE)
> May 30 19:21:46 spisula systemd[1]: Detected architecture x86-64.
> May 30 19:21:46 spisula systemd[1]: Hostname set to <spisula>.
> May 30 19:21:46 spisula kernel: Lockdown: systemd: /dev/mem,kmem,port is =
restricted; see man kernel_lockdown.7
> May 30 19:21:46 spisula systemd[1]: bpf-restrict-fs: LSM BPF program atta=
ched
> May 30 19:21:46 spisula systemd[1]: Queued start job for default target g=
raphical.target.
> May 30 19:21:46 spisula systemd[1]: Created slice system-getty.slice - Sl=
ice /system/getty.
> May 30 19:21:46 spisula systemd[1]: Created slice system-modprobe.slice -=
Slice /system/modprobe.
> May 30 19:21:46 spisula systemd[1]: Created slice system-systemd\x2dfsck.=
slice - Slice /system/systemd-fsck.
> May 30 19:21:46 spisula systemd[1]: Created slice user.slice - User and S=
ession Slice.
> May 30 19:21:46 spisula systemd[1]: Started systemd-ask-password-console.=
path - Dispatch Password Requests to Console Directory Watch.
> May 30 19:21:46 spisula systemd[1]: Started systemd-ask-password-wall.pat=
h - Forward Password Requests to Wall Directory Watch.
> May 30 19:21:46 spisula systemd[1]: Set up automount proc-sys-fs-binfmt_m=
isc.automount - Arbitrary Executable File Formats File System Automount Poi=
nt.
> May 30 19:21:46 spisula systemd[1]: Expecting device dev-disk-by\x2duuid-=
4287f104\x2d02bb\x2d4f34\x2da6e5\x2dfd766865cf5b.device - /dev/disk/by-uuid=
/4287f104-02bb-4f34-a6e5-fd766865cf5b...
> May 30 19:21:46 spisula systemd[1]: Expecting device dev-disk-by\x2duuid-=
BBC4\x2dE7CD.device - /dev/disk/by-uuid/BBC4-E7CD...
> May 30 19:21:46 spisula systemd[1]: Expecting device dev-mapper-spisula\x=
2d\x2dvg\x2dswap_1.device - /dev/mapper/spisula--vg-swap_1...
> May 30 19:21:46 spisula systemd[1]: Reached target nss-user-lookup.target=
- User and Group Name Lookups.
> May 30 19:21:46 spisula systemd[1]: Reached target remote-fs.target - Rem=
ote File Systems.
> May 30 19:21:46 spisula systemd[1]: Reached target slices.target - Slice =
Units.
> May 30 19:21:46 spisula systemd[1]: Listening on dm-event.socket - Device=
-mapper event daemon FIFOs.
> May 30 19:21:46 spisula systemd[1]: Listening on lvm2-lvmpolld.socket - L=
VM2 poll daemon socket.
> May 30 19:21:46 spisula systemd[1]: Listening on syslog.socket - Syslog S=
ocket.
> May 30 19:21:46 spisula systemd[1]: Listening on systemd-creds.socket - C=
redential Encryption/Decryption.
> May 30 19:21:46 spisula systemd[1]: Listening on systemd-initctl.socket -=
initctl Compatibility Named Pipe.
> May 30 19:21:46 spisula systemd[1]: Listening on systemd-journald-dev-log=
=2Esocket - Journal Socket (/dev/log).
> May 30 19:21:46 spisula systemd[1]: Listening on systemd-journald.socket =
- Journal Sockets.
> May 30 19:21:46 spisula systemd[1]: systemd-pcrextend.socket - TPM PCR Me=
asurements was skipped because of an unmet condition check (ConditionSecuri=
ty=3Dmeasured-uki).
> May 30 19:21:46 spisula systemd[1]: systemd-pcrlock.socket - Make TPM PCR=
Policy was skipped because of an unmet condition check (ConditionSecurity=
=3Dmeasured-uki).
> May 30 19:21:46 spisula systemd[1]: Listening on systemd-udevd-control.so=
cket - udev Control Socket.
> May 30 19:21:46 spisula systemd[1]: Listening on systemd-udevd-kernel.soc=
ket - udev Kernel Socket.
> May 30 19:21:46 spisula systemd[1]: Mounting dev-hugepages.mount - Huge P=
ages File System...
> May 30 19:21:46 spisula systemd[1]: Mounting dev-mqueue.mount - POSIX Mes=
sage Queue File System...
> May 30 19:21:46 spisula systemd[1]: run-lock.mount: Directory /run/lock t=
o mount over is not empty, mounting anyway.
> May 30 19:21:46 spisula systemd[1]: Mounting run-lock.mount - Legacy Lock=
s Directory /run/lock...
> May 30 19:21:46 spisula systemd[1]: Mounting sys-kernel-debug.mount - Ker=
nel Debug File System...
> May 30 19:21:46 spisula systemd[1]: Mounting sys-kernel-tracing.mount - K=
ernel Trace File System...
> May 30 19:21:46 spisula systemd[1]: Starting blk-availability.service - A=
vailability of block devices...
> May 30 19:21:46 spisula systemd[1]: Starting keyboard-setup.service - Set=
the console keyboard layout...
> May 30 19:21:46 spisula systemd[1]: Starting kmod-static-nodes.service - =
Create List of Static Device Nodes...
> May 30 19:21:46 spisula systemd[1]: Starting lvm2-monitor.service - Monit=
oring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling...
> May 30 19:21:46 spisula systemd[1]: Starting modprobe@configfs.service - =
Load Kernel Module configfs...
> May 30 19:21:46 spisula systemd[1]: Starting modprobe@drm.service - Load =
Kernel Module drm...
> May 30 19:21:46 spisula systemd[1]: Starting modprobe@efi_pstore.service =
- Load Kernel Module efi_pstore...
> May 30 19:21:46 spisula systemd[1]: Starting modprobe@fuse.service - Load=
Kernel Module fuse...
> May 30 19:21:46 spisula systemd[1]: systemd-fsck-root.service - File Syst=
em Check on Root Device was skipped because of an unmet condition check (Co=
nditionPathExists=3D!/run/initramfs/fsck-root).
> May 30 19:21:46 spisula systemd[1]: systemd-hibernate-clear.service - Cle=
ar Stale Hibernate Storage Info was skipped because of an unmet condition c=
heck (ConditionPathExists=3D/sys/firmware/efi/efivars/HibernateLocation-8cf=
2644b-4b0b-428f-9387-6d876050dc67).
> May 30 19:21:46 spisula systemd[1]: Starting systemd-journald.service - J=
ournal Service...
> May 30 19:21:46 spisula systemd[1]: Starting systemd-modules-load.service=
- Load Kernel Modules...
> May 30 19:21:46 spisula systemd[1]: systemd-pcrmachine.service - TPM PCR =
Machine ID Measurement was skipped because of an unmet condition check (Con=
ditionSecurity=3Dmeasured-uki).
> May 30 19:21:46 spisula systemd[1]: Starting systemd-remount-fs.service -=
Remount Root and Kernel File Systems...
> May 30 19:21:46 spisula systemd[1]: systemd-tpm2-setup-early.service - Ea=
rly TPM SRK Setup was skipped because of an unmet condition check (Conditio=
nSecurity=3Dmeasured-uki).
> May 30 19:21:46 spisula systemd[1]: Starting systemd-udev-load-credential=
s.service - Load udev Rules from Credentials...
> May 30 19:21:46 spisula systemd[1]: Starting systemd-udev-trigger.service=
- Coldplug All udev Devices...
> May 30 19:21:46 spisula systemd[1]: Mounted dev-hugepages.mount - Huge Pa=
ges File System.
> May 30 19:21:46 spisula systemd[1]: Mounted dev-mqueue.mount - POSIX Mess=
age Queue File System.
> May 30 19:21:46 spisula systemd[1]: Mounted run-lock.mount - Legacy Locks=
Directory /run/lock.
> May 30 19:21:46 spisula systemd[1]: Mounted sys-kernel-debug.mount - Kern=
el Debug File System.
> May 30 19:21:46 spisula systemd[1]: Mounted sys-kernel-tracing.mount - Ke=
rnel Trace File System.
> May 30 19:21:46 spisula systemd[1]: Finished blk-availability.service - A=
vailability of block devices.
> May 30 19:21:46 spisula systemd[1]: Finished keyboard-setup.service - Set=
the console keyboard layout.
> May 30 19:21:46 spisula systemd[1]: Finished kmod-static-nodes.service - =
Create List of Static Device Nodes.
> May 30 19:21:46 spisula systemd[1]: modprobe@drm.service: Deactivated suc=
cessfully.
> May 30 19:21:46 spisula systemd[1]: Finished modprobe@drm.service - Load =
Kernel Module drm.
> May 30 19:21:46 spisula systemd[1]: modprobe@fuse.service: Deactivated su=
ccessfully.
> May 30 19:21:46 spisula systemd[1]: Finished modprobe@fuse.service - Load=
Kernel Module fuse.
> May 30 19:21:46 spisula systemd[1]: Mounting sys-fs-fuse-connections.moun=
t - FUSE Control File System...
> May 30 19:21:46 spisula systemd[1]: Starting systemd-tmpfiles-setup-dev-e=
arly.service - Create Static Device Nodes in /dev gracefully...
> May 30 19:21:46 spisula systemd[1]: modprobe@configfs.service: Deactivate=
d successfully.
> May 30 19:21:46 spisula systemd[1]: Finished modprobe@configfs.service - =
Load Kernel Module configfs.
> May 30 19:21:46 spisula systemd[1]: Mounting sys-kernel-config.mount - Ke=
rnel Configuration File System...
> May 30 19:21:46 spisula systemd[1]: Mounted sys-fs-fuse-connections.mount=
- FUSE Control File System.
> May 30 19:21:46 spisula kernel: EXT4-fs (dm-1): re-mounted af843d99-0ced-=
4405-b68d-4f56cdc24cb4 r/w. Quota mode: none.
> May 30 19:21:46 spisula systemd[1]: Finished systemd-remount-fs.service -=
Remount Root and Kernel File Systems.
> May 30 19:21:46 spisula systemd[1]: systemd-hwdb-update.service - Rebuild=
Hardware Database was skipped because of an unmet condition check (Conditi=
onNeedsUpdate=3D/etc).
> May 30 19:21:46 spisula kernel: pstore: Using crash dump compression: def=
late
> May 30 19:21:46 spisula systemd[1]: Starting systemd-random-seed.service =
- Load/Save OS Random Seed...
> May 30 19:21:46 spisula systemd[1]: systemd-tpm2-setup.service - TPM SRK =
Setup was skipped because of an unmet condition check (ConditionSecurity=3D=
measured-uki).
> May 30 19:21:46 spisula systemd[1]: Finished systemd-udev-load-credential=
s.service - Load udev Rules from Credentials.
> May 30 19:21:46 spisula systemd[1]: Mounted sys-kernel-config.mount - Ker=
nel Configuration File System.
> May 30 19:21:46 spisula kernel: pstore: Registered efi_pstore as persiste=
nt store backend
> May 30 19:21:46 spisula systemd[1]: modprobe@efi_pstore.service: Deactiva=
ted successfully.
> May 30 19:21:46 spisula systemd-journald[485]: Collecting audit messages =
is disabled.
> May 30 19:21:46 spisula systemd[1]: Finished modprobe@efi_pstore.service =
- Load Kernel Module efi_pstore.
> May 30 19:21:46 spisula kernel: lp: driver loaded but no devices found
> May 30 19:21:46 spisula systemd[1]: Starting systemd-pstore.service - Pla=
tform Persistent Storage Archival...
> May 30 19:21:46 spisula systemd[1]: Finished lvm2-monitor.service - Monit=
oring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling.
> May 30 19:21:46 spisula systemd[1]: Finished systemd-tmpfiles-setup-dev-e=
arly.service - Create Static Device Nodes in /dev gracefully.
> May 30 19:21:46 spisula systemd[1]: systemd-sysusers.service - Create Sys=
tem Users was skipped because no trigger condition checks were met.
> May 30 19:21:46 spisula systemd[1]: Starting systemd-tmpfiles-setup-dev.s=
ervice - Create Static Device Nodes in /dev...
> May 30 19:21:46 spisula systemd[1]: Finished systemd-random-seed.service =
- Load/Save OS Random Seed.
> May 30 19:21:46 spisula kernel: ppdev: user-space parallel port driver
> May 30 19:21:46 spisula systemd[1]: Finished systemd-pstore.service - Pla=
tform Persistent Storage Archival.
> May 30 19:21:46 spisula systemd[1]: Finished systemd-tmpfiles-setup-dev.s=
ervice - Create Static Device Nodes in /dev.
> May 30 19:21:46 spisula systemd[1]: Reached target local-fs-pre.target - =
Preparation for Local File Systems.
> May 30 19:21:46 spisula systemd[1]: Starting systemd-udevd.service - Rule=
-based Manager for Device Events and Files...
> May 30 19:21:46 spisula systemd[1]: Finished systemd-modules-load.service=
- Load Kernel Modules.
> May 30 19:21:46 spisula systemd[1]: Starting systemd-sysctl.service - App=
ly Kernel Variables...
> May 30 19:21:46 spisula systemd[1]: Started systemd-journald.service - Jo=
urnal Service.
> May 30 19:21:46 spisula systemd-journald[485]: Received client request to=
flush runtime journal.
> May 30 19:21:46 spisula kernel: Adding 1003516k swap on /dev/mapper/spisu=
la--vg-swap_1. Priority:-2 extents:1 across:1003516k SS
> May 30 19:21:46 spisula kernel: input: Lid Switch as /devices/LNXSYSTM:00=
/LNXSYBUS:00/PNP0A08:00/device:01/PNP0C09:00/PNP0C0D:00/input/input15
> May 30 19:21:46 spisula kernel: ACPI: button: Lid Switch [LID0]
> May 30 19:21:46 spisula kernel: input: Power Button as /devices/LNXSYSTM:=
00/LNXSYBUS:00/PNP0C0C:00/input/input16
> May 30 19:21:46 spisula kernel: ACPI: button: Power Button [PWRB]
> May 30 19:21:46 spisula kernel: input: Sleep Button as /devices/LNXSYSTM:=
00/LNXSYBUS:00/PNP0C0E:00/input/input17
> May 30 19:21:46 spisula kernel: ACPI: button: Sleep Button [SLPB]
> May 30 19:21:46 spisula kernel: input: Power Button as /devices/LNXSYSTM:=
00/LNXPWRBN:00/input/input18
> May 30 19:21:46 spisula kernel: ACPI: button: Power Button [PWRF]
> May 30 19:21:46 spisula kernel: ACPI: AC: AC Adapter [ADP1] (off-line)
> May 30 19:21:46 spisula kernel: input: Acer Wireless Radio Control as /de=
vices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:01/PNP0C09:00/10251229:00/i=
nput/input19
> May 30 19:21:46 spisula kernel: Consider using thermal netlink events int=
erface
> May 30 19:21:46 spisula kernel: EXT4-fs (nvme0n1p2): mounting ext2 file s=
ystem using the ext4 subsystem
> May 30 19:21:46 spisula kernel: EXT4-fs (nvme0n1p2): mounted filesystem 4=
287f104-02bb-4f34-a6e5-fd766865cf5b r/w without journal. Quota mode: none.
> May 30 19:21:46 spisula kernel: mc: Linux media interface: v0.10
> May 30 19:21:47 spisula kernel: input: PC Speaker as /devices/platform/pc=
spkr/input/input20
> May 30 19:21:47 spisula kernel: Bluetooth: Core ver 2.22
> May 30 19:21:47 spisula kernel: NET: Registered PF_BLUETOOTH protocol fam=
ily
> May 30 19:21:47 spisula kernel: Bluetooth: HCI device and connection mana=
ger initialized
> May 30 19:21:47 spisula kernel: Bluetooth: HCI socket layer initialized
> May 30 19:21:47 spisula kernel: Bluetooth: L2CAP socket layer initialized
> May 30 19:21:47 spisula kernel: Bluetooth: SCO socket layer initialized
> May 30 19:21:47 spisula kernel: RAPL PMU: API unit is 2^-32 Joules, 4 fix=
ed counters, 655360 ms ovfl timer
> May 30 19:21:47 spisula kernel: RAPL PMU: hw unit of domain pp0-core 2^-1=
4 Joules
> May 30 19:21:47 spisula kernel: RAPL PMU: hw unit of domain package 2^-14=
Joules
> May 30 19:21:47 spisula kernel: RAPL PMU: hw unit of domain dram 2^-14 Jo=
ules
> May 30 19:21:47 spisula kernel: RAPL PMU: hw unit of domain pp1-gpu 2^-14=
Joules
> May 30 19:21:47 spisula kernel: cfg80211: Loading compiled-in X.509 certi=
ficates for regulatory database
> May 30 19:21:47 spisula kernel: Loaded X.509 cert 'benh@xxxxxxxxxx: 577e0=
21cb980e0e820821ba7b54b4961b8b4fadf'
> May 30 19:21:47 spisula kernel: Loaded X.509 cert 'romain.perier@xxxxxxxx=
m: 3abbc6ec146e09d1b6016ab9d6cf71dd233f0328'
> May 30 19:21:47 spisula kernel: Loaded X.509 cert 'sforshee: 00b28ddf47ae=
f9cea7'
> May 30 19:21:47 spisula kernel: Loaded X.509 cert 'wens: 61c038651aabdcf9=
4bd0ac7ff06c7248db18c600'
> May 30 19:21:47 spisula kernel: videodev: Linux video capture interface: =
v2.00
> May 30 19:21:47 spisula kernel: Intel(R) Wireless WiFi driver for Linux
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: Detected crf-id 0x2=
816, cnv-id 0x1000100 wfpm id 0x80000000
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: PCI dev 31dc/0034, =
rev=3D0x312, rfid=3D0x105110
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: Detected Intel(R) W=
ireless-AC 9560 160MHz
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 0
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 1
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 2
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 3
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 4
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 6
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 8
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 9
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 10
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 11
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 15
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 16
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 18
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 19
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 20
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 21
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: WRT: Overriding reg=
ion id 28
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: firmware: failed to=
load iwl-debug-yoyo.bin (-2)
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: firmware: failed to=
load iwl-debug-yoyo.bin (-2)
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: firmware: failed to=
load iwl-debug-yoyo.bin (-2)
> May 30 19:21:47 spisula kernel: iwlwifi 0000:00:0c.0: loaded firmware ver=
sion 46.7e3e4b69.0 9000-pu-b0-jf-b0-46.ucode op_mode iwlmvm
> May 30 19:21:47 spisula kernel: acer_wmi: Acer Laptop ACPI-WMI Extras
> May 30 19:21:47 spisula kernel: acer_wmi: Function bitmap for Communicati=
on Button: 0x0
> May 30 19:21:47 spisula kernel: input: Acer WMI hotkeys as /devices/virtu=
al/input/input21
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:00: supply =
vdd not found, using dummy regulator
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:00: supply =
vddio not found, using dummy regulator
> May 30 19:21:47 spisula kernel: FAT-fs (nvme0n1p1): Volume was not proper=
ly unmounted. Some data may be corrupt. Please run fsck.
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:base: suppl=
y vdd not found, using dummy regulator
> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:base: suppl=
y vddio not found, using dummy regulator
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.003:4=
): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" na=
me=3D"1password" pid=3D655 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.007:5=
): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" na=
me=3D"Discord" pid=3D656 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.007:6=
): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" na=
me=3D"QtWebEngineProcess" pid=3D658 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.007:7=
): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" na=
me=3D4D6F6E676F444220436F6D70617373 pid=3D657 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.007:8=
): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" na=
me=3D"brave" pid=3D661 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.011:9=
): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" na=
me=3D"balena-etcher" pid=3D660 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.011:1=
0): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" n=
ame=3D"buildah" pid=3D662 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.011:1=
1): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" n=
ame=3D"busybox" pid=3D663 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.015:1=
2): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" n=
ame=3D"cam" pid=3D664 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: audit: type=3D1400 audit(1748625708.015:1=
3): apparmor=3D"STATUS" operation=3D"profile_load" profile=3D"unconfined" n=
ame=3D"ch-run" pid=3D666 comm=3D"apparmor_parser"
> May 30 19:21:48 spisula kernel: intel_rapl_common: Found RAPL domain pack=
age
> May 30 19:21:48 spisula kernel: intel_rapl_common: Found RAPL domain core
> May 30 19:21:48 spisula kernel: intel_rapl_common: Found RAPL domain unco=
re
> May 30 19:21:48 spisula kernel: intel_rapl_common: Found RAPL domain dram
> May 30 19:21:48 spisula kernel: iwlwifi 0000:00:0c.0: base HW address: f4=
:b3:01:63:29:78, OTP minor version: 0x4
> May 30 19:21:48 spisula kernel: ieee80211 phy0: Selected rate control alg=
orithm 'iwl-mvm-rs'
> May 30 19:21:48 spisula kernel: iwlwifi 0000:00:0c.0 wlp0s12f0: renamed f=
rom wlan0
> May 30 19:21:48 spisula kernel: usbcore: registered new interface driver =
btusb
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Bootloader revision 0.1 =
build 42 week 52 2015
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Device revision is 2
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Secure boot is enabled
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: OTP lock is enabled
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: API lock is enabled
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Debug lock is disabled
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Minimum firmware build 1=
week 10 2014
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Found device firmware: i=
ntel/ibt-17-16-1.sfi
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Boot Address: 0x40800
> May 30 19:21:48 spisula kernel: Bluetooth: hci0: Firmware Version: 201-12=
=2E24
> May 30 19:21:48 spisula kernel: usb 1-2: Found UVC 1.50 device 5MP World =
Facing (04f2:b6db)
> May 30 19:21:48 spisula kernel: usb 1-7: Found UVC 1.00 device HD User Fa=
cing (0408:a061)
> May 30 19:21:48 spisula kernel: nvme nvme0: using unchecked data buffer
> May 30 19:21:48 spisula kernel: usbcore: registered new interface driver =
uvcvideo
> May 30 19:21:48 spisula kernel: zram: Added device: zram0
> May 30 19:21:48 spisula kernel: zram0: detected capacity change from 0 to=
1907360
> May 30 19:21:48 spisula kernel: Adding 953676k swap on /dev/zram0. Prior=
ity:100 extents:1 across:953676k SS
> May 30 19:21:48 spisula kernel: Bluetooth: BNEP (Ethernet Emulation) ver =
1.3
> May 30 19:21:48 spisula kernel: Bluetooth: BNEP filters: protocol multica=
st
> May 30 19:21:48 spisula kernel: Bluetooth: BNEP socket layer initialized
> May 30 19:21:49 spisula kernel: BUG: kernel NULL pointer dereference, add=
ress: 0000000000000001
> May 30 19:21:49 spisula kernel: #PF: supervisor read access in kernel mode
> May 30 19:21:49 spisula kernel: #PF: error_code(0x0000) - not-present page
> May 30 19:21:49 spisula kernel: PGD 0 P4D 0=20
> May 30 19:21:49 spisula kernel: Oops: Oops: 0000 [#1] PREEMPT SMP NOPTI
> May 30 19:21:49 spisula kernel: CPU: 2 UID: 0 PID: 805 Comm: iio-sensor-p=
rox Not tainted 6.12.29-amd64 #1 Debian 6.12.29-1
> May 30 19:21:49 spisula kernel: Hardware name: Acer TravelMate Spin B311R=
-31/Maracas_GL, BIOS V1.18 08/26/2021
> May 30 19:21:49 spisula kernel: RIP: 0010:bmc150_accel_set_interrupt+0x68=
/0x120 [bmc150_accel_core]
> May 30 19:21:49 spisula kernel: Code: 84 86 00 00 00 ba 01 00 00 00 f0 0f=
c1 10 83 c2 01 83 fa 01 7f 64 49 8b 3c 24 be 01 00 00 00 e8 5e fc ff ff 89=
c3 85 c0 75 52 <41> 0f b6 55 01 41 0f b6 75 00 45 31 c9 45 31 c0 49 8b 3c =
24 6a 00
> May 30 19:21:49 spisula kernel: RSP: 0018:ffffb44780e03b10 EFLAGS: 000102=
46
> May 30 19:21:49 spisula kernel: RAX: 0000000000000000 RBX: 00000000000000=
00 RCX: 00000000ffffff01
> May 30 19:21:49 spisula kernel: RDX: ffffffff8d12acf0 RSI: 00000000000002=
02 RDI: ffffa06a42513904
> May 30 19:21:49 spisula kernel: RBP: ffffa06a42513820 R08: ffffa06a4b33fb=
e8 R09: 0000000000000000
> May 30 19:21:49 spisula kernel: R10: ffffb44780e03b28 R11: 00000000000000=
09 R12: ffffa06a4b33fd50
> May 30 19:21:49 spisula kernel: R13: 0000000000000000 R14: 00000000000000=
01 R15: ffffa06a4b33fb30
> May 30 19:21:49 spisula kernel: FS: 00007f368a3d9940(0000) GS:ffffa06abb=
d00000(0000) knlGS:0000000000000000
> May 30 19:21:49 spisula kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 00000000=
80050033
> May 30 19:21:49 spisula kernel: CR2: 0000000000000001 CR3: 00000001056100=
00 CR4: 0000000000352ef0
> May 30 19:21:49 spisula kernel: Call Trace:
> May 30 19:21:49 spisula kernel: <TASK>
> May 30 19:21:49 spisula kernel: bmc150_accel_buffer_postenable+0x5d/0x90=
[bmc150_accel_core]
> May 30 19:21:49 spisula kernel: __iio_update_buffers+0x731/0xb20 [indust=
rialio]
> May 30 19:21:49 spisula kernel: ? __kernfs_setattr+0xa0/0xb0
> May 30 19:21:49 spisula kernel: enable_store+0x84/0xe0 [industrialio]
> May 30 19:21:49 spisula kernel: kernfs_fop_write_iter+0x13b/0x1f0
> May 30 19:21:49 spisula kernel: vfs_write+0x28d/0x450
> May 30 19:21:49 spisula kernel: ksys_write+0x6d/0xf0
> May 30 19:21:49 spisula kernel: do_syscall_64+0x82/0x190
> May 30 19:21:49 spisula kernel: ? do_filp_open+0xc4/0x170
> May 30 19:21:49 spisula kernel: ? do_sys_openat2+0x9c/0xe0
> May 30 19:21:49 spisula kernel: ? syscall_exit_to_user_mode+0x4d/0x210
> May 30 19:21:49 spisula kernel: ? do_syscall_64+0x8e/0x190
> May 30 19:21:49 spisula kernel: ? do_syscall_64+0x8e/0x190
> May 30 19:21:49 spisula kernel: ? clear_bhb_loop+0x40/0x90
> May 30 19:21:49 spisula kernel: ? clear_bhb_loop+0x40/0x90
> May 30 19:21:49 spisula kernel: ? clear_bhb_loop+0x40/0x90
> May 30 19:21:49 spisula kernel: entry_SYSCALL_64_after_hwframe+0x76/0x7e
> May 30 19:21:49 spisula kernel: RIP: 0033:0x7f368a7df9ee
> May 30 19:21:49 spisula kernel: Code: 08 0f 85 f5 4b ff ff 49 89 fb 48 89=
f0 48 89 d7 48 89 ce 4c 89 c2 4d 89 ca 4c 8b 44 24 08 4c 8b 4c 24 10 4c 89=
5c 24 08 0f 05 <c3> 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 80 00 00 00 00 48 =
83 ec 08
> May 30 19:21:49 spisula kernel: RSP: 002b:00007fffd76b67e8 EFLAGS: 000002=
46 ORIG_RAX: 0000000000000001
> May 30 19:21:49 spisula kernel: RAX: ffffffffffffffda RBX: 00007f368a3d99=
40 RCX: 00007f368a7df9ee
> May 30 19:21:49 spisula kernel: RDX: 0000000000000001 RSI: 00007fffd76b69=
90 RDI: 0000000000000009
> May 30 19:21:49 spisula kernel: RBP: 00007fffd76b6990 R08: 00000000000000=
00 R09: 0000000000000000
> May 30 19:21:49 spisula kernel: R10: 0000000000000000 R11: 00000000000002=
46 R12: 0000000000000001
> May 30 19:21:49 spisula kernel: R13: 000055742d68a2a0 R14: 00007f368a92ae=
80 R15: 0000000000000001
> May 30 19:21:49 spisula kernel: </TASK>
> May 30 19:21:49 spisula kernel: Modules linked in: bnep snd_intel_dspcfg =
zram x86_pkg_temp_thermal uvcvideo snd_intel_sdw_acpi lz4hc_compress lz4_co=
mpress intel_powerclamp processor_thermal_device_pci_legacy btusb videobuf2=
_vmalloc snd_hda_codec coretemp drm_buddy iwlmvm processor_thermal_device b=
trtl uvc snd_hda_core kvm_intel drm_display_helper processor_thermal_wt_hin=
t mac80211 processor_thermal_rfim binfmt_misc btintel videobuf2_memops inte=
l_rapl_msr processor_thermal_rapl cec snd_hwdep kvm libarc4 nls_ascii bmc15=
0_accel_i2c btbcm videobuf2_v4l2 intel_rapl_common acer_wmi rc_core snd_pcm=
nls_cp437 iwlwifi bmc150_accel_core irqbypass intel_pmc_core btmtk videode=
v processor_thermal_wt_req sparse_keymap mei_pxp mei_hdcp ttm snd_timer vfa=
t industrialio_triggered_buffer rapl intel_vsec processor_thermal_power_flo=
or cfg80211 rtsx_usb_ms bluetooth videobuf2_common platform_profile mei_me =
drm_kms_helper snd fat kfifo_buf intel_cstate pcspkr pmt_telemetry processo=
r_thermal_mbox wmi_bmof memstick mc int3403_thermal rfkill mei i2c_algo_bit
> May 30 19:21:49 spisula kernel: soundcore industrialio int3400_thermal a=
cer_wireless soc_button_array pmt_class intel_soc_dts_iosf int340x_thermal_=
zone ac acpi_thermal_rel button joydev evdev msr parport_pc ppdev lp parpor=
t efi_pstore configfs nfnetlink efivarfs ip_tables x_tables autofs4 ext4 cr=
c16 mbcache jbd2 crc32c_generic rtsx_usb_sdmmc rtsx_usb dm_crypt dm_mod crc=
t10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel sha512_ssse3 hi=
d_multitouch sha256_ssse3 hid_generic sha1_ssse3 xhci_pci aesni_intel xhci_=
hcd i2c_hid_acpi sdhci_pci r8169 gf128mul nvme i2c_hid intel_lpss_pci cqhci=
usbcore realtek crypto_simd nvme_core hid intel_lpss i2c_i801 sdhci wdat_w=
dt mdio_devres cryptd serio_raw watchdog video libphy mmc_core i2c_smbus lp=
c_ich nvme_auth drm idma64 usb_common battery wmi
> May 30 19:21:49 spisula kernel: CR2: 0000000000000001
> May 30 19:21:49 spisula kernel: ---[ end trace 0000000000000000 ]---
> May 30 19:21:49 spisula kernel: RIP: 0010:bmc150_accel_set_interrupt+0x68=
/0x120 [bmc150_accel_core]
> May 30 19:21:49 spisula kernel: Code: 84 86 00 00 00 ba 01 00 00 00 f0 0f=
c1 10 83 c2 01 83 fa 01 7f 64 49 8b 3c 24 be 01 00 00 00 e8 5e fc ff ff 89=
c3 85 c0 75 52 <41> 0f b6 55 01 41 0f b6 75 00 45 31 c9 45 31 c0 49 8b 3c =
24 6a 00
> May 30 19:21:49 spisula kernel: RSP: 0018:ffffb44780e03b10 EFLAGS: 000102=
46
> May 30 19:21:49 spisula kernel: RAX: 0000000000000000 RBX: 00000000000000=
00 RCX: 00000000ffffff01
> May 30 19:21:49 spisula kernel: RDX: ffffffff8d12acf0 RSI: 00000000000002=
02 RDI: ffffa06a42513904
> May 30 19:21:49 spisula kernel: RBP: ffffa06a42513820 R08: ffffa06a4b33fb=
e8 R09: 0000000000000000
> May 30 19:21:49 spisula kernel: R10: ffffb44780e03b28 R11: 00000000000000=
09 R12: ffffa06a4b33fd50
> May 30 19:21:49 spisula kernel: R13: 0000000000000000 R14: 00000000000000=
01 R15: ffffa06a4b33fb30
> May 30 19:21:49 spisula kernel: FS: 00007f368a3d9940(0000) GS:ffffa06abb=
d00000(0000) knlGS:0000000000000000
> May 30 19:21:49 spisula kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 00000000=
80050033
> May 30 19:21:49 spisula kernel: CR2: 0000000000000001 CR3: 00000001056100=
00 CR4: 0000000000352ef0
> May 30 19:21:49 spisula kernel: note: iio-sensor-prox[805] exited with ir=
qs disabled
> May 30 19:21:49 spisula kernel: evm: overlay not supported
> May 30 19:21:49 spisula kernel: Generic FE-GE Realtek PHY r8169-0-200:00:=
attached PHY driver (mii_bus:phy_addr=3Dr8169-0-200:00, irq=3DMAC)
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] Unknown revision=
0x06
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] Found GEMINILAKE=
(device ID 3185) display version 10.00 stepping **
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] Unknown revid 0x=
06
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] VT-d active for =
gfx access
> May 30 19:21:49 spisula kernel: Console: switching to colour dummy device=
80x25
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: vgaarb: deactivate vga=
console
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] Using Transparen=
t Hugepages
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] couldn't get mem=
ory information
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: vgaarb: VGA decodes ch=
anged: olddecodes=3Dio+mem,decodes=3Dio+mem:owns=3Dio+mem
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: firmware: failed to lo=
ad i915/glk_dmc_ver1_04.bin (-2)
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: firmware: failed to lo=
ad i915/glk_dmc_ver1_04.bin (-2)
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: firmware: failed to lo=
ad i915/glk_dmc_ver1_04.bin (-2)
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: Direct firmware load f=
or i915/glk_dmc_ver1_04.bin failed with error -2
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] Failed to load D=
MC firmware i915/glk_dmc_ver1_04.bin (-ENOENT). Disabling runtime power man=
agement.
> May 30 19:21:49 spisula kernel: i915 0000:00:02.0: [drm] DMC firmware hom=
epage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmw=
are.git
> May 30 19:21:49 spisula kernel: r8169 0000:02:00.0 enp2s0: Link is Down
> May 30 19:21:49 spisula kernel: mei_hdcp 0000:00:0f.0-b638ab7e-94e2-4ea2-=
a552-d1c54b627f04: bound 0000:00:02.0 (ops i915_hdcp_ops [i915])
> May 30 19:21:49 spisula kernel: [drm] Initialized i915 1.6.0 for 0000:00:=
02.0 on minor 0
> May 30 19:21:49 spisula kernel: ACPI: video: Video Device [GFX0] (multi-h=
ead: yes rom: no post: no)
> May 30 19:21:49 spisula kernel: input: Video Bus as /devices/LNXSYSTM:00/=
LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input22
> May 30 19:21:49 spisula kernel: fbcon: i915drmfb (fb0) is primary device
> May 30 19:21:49 spisula kernel: snd_hda_intel 0000:00:0e.0: bound 0000:00=
:02.0 (ops i915_audio_component_bind_ops [i915])
> May 30 19:21:50 spisula kernel: iwlwifi 0000:00:0c.0: Registered PHC cloc=
k: iwlwifi-PTP, with index: 0
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Waiting for firmware dow=
nload to complete
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Firmware loaded in 16473=
86 usecs
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Waiting for device to bo=
ot
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Device booted in 13696 u=
secs
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Found Intel DDC paramete=
rs: intel/ibt-17-16-1.ddc
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Applying Intel DDC param=
eters completed
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: Firmware revision 0.1 bu=
ild 201 week 12 2024
> May 30 19:21:50 spisula kernel: Bluetooth: hci0: HCI LE Coded PHY feature=
bit is set, but its usage is not supported.
> May 30 19:21:50 spisula kernel: Bluetooth: MGMT ver 1.23
> May 30 19:21:50 spisula kernel: NET: Registered PF_ALG protocol family
> May 30 19:21:50 spisula kernel: Console: switching to colour frame buffer=
device 170x48
> May 30 19:21:51 spisula kernel: i915 0000:00:02.0: [drm] fb0: i915drmfb f=
rame buffer device
> May 30 19:21:51 spisula kernel: Bluetooth: RFCOMM TTY layer initialized
> May 30 19:21:51 spisula kernel: Bluetooth: RFCOMM socket layer initialized
> May 30 19:21:51 spisula kernel: Bluetooth: RFCOMM ver 1.11
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: autoco=
nfig for ALC256: line_outs=3D1 (0x14/0x0/0x0/0x0/0x0) type:speaker
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: spe=
aker_outs=3D0 (0x0/0x0/0x0/0x0/0x0)
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: hp_=
outs=3D1 (0x21/0x0/0x0/0x0/0x0)
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: mon=
o: mono_out=3D0x0
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: inp=
uts:
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: I=
nternal Mic=3D0x12
> May 30 19:21:51 spisula kernel: snd_hda_codec_realtek hdaudioC0D0: H=
eadset Mic=3D0x19
> May 30 19:21:51 spisula kernel: input: HDA Digital PCBeep as /devices/pci=
0000:00/0000:00:0e.0/sound/card0/input23
> May 30 19:21:51 spisula kernel: input: HDA Intel PCH Front Headphone as /=
devices/pci0000:00/0000:00:0e.0/sound/card0/input24
> May 30 19:21:51 spisula kernel: input: HDA Intel PCH HDMI/DP,pcm=3D3 as /=
devices/pci0000:00/0000:00:0e.0/sound/card0/input25
> May 30 19:21:51 spisula kernel: input: HDA Intel PCH HDMI/DP,pcm=3D7 as /=
devices/pci0000:00/0000:00:0e.0/sound/card0/input26
> May 30 19:21:51 spisula kernel: input: HDA Intel PCH HDMI/DP,pcm=3D8 as /=
devices/pci0000:00/0000:00:0e.0/sound/card0/input27
> May 30 19:21:53 spisula kernel: wlp0s12f0: authenticate with 14:91:82:2e:=
1c:5b (local address=3Df4:b3:01:63:29:78)
> May 30 19:21:53 spisula kernel: wlp0s12f0: send auth to 14:91:82:2e:1c:5b=
(try 1/3)
> May 30 19:21:53 spisula kernel: wlp0s12f0: authenticated
> May 30 19:21:53 spisula kernel: wlp0s12f0: associate with 14:91:82:2e:1c:=
5b (try 1/3)
> May 30 19:21:53 spisula kernel: wlp0s12f0: RX AssocResp from 14:91:82:2e:=
1c:5b (capab=3D0x11 status=3D0 aid=3D2)
> May 30 19:21:53 spisula kernel: wlp0s12f0: associated
> May 30 19:21:54 spisula kernel: Lockdown: systemd-logind: hibernation is =
restricted; see man kernel_lockdown.7
> May 30 19:21:54 spisula kernel: rfkill: input handler disabled
> May 30 19:22:01 spisula kernel: rfkill: input handler enabled



Return-Path: <linux-kernel+bounces-669229-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5A8D041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:02:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 9829C17E178
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:02:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 805981A8F79;
Sat, 31 May 2025 20:02:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jiAcvA1e"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 1756819F13F;
Sat, 31 May 2025 20:02:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721743; cv=none; b=dIOMTuNHb0aV7BzDg/9xCMhUjbgYAN435eHXv+0a85wXBg8t/SFgzmlIz6Talxh4/1vX4GqSsiXOZfGukP/rqHHBBia/kqIk8B/0VxE4GUqyC5w8mgABNTDHGrV5AsXrHis8g2ZJSNdAe4jPGUo4OQwWqh2nb5TB6RwDvXMPytg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721743; c=relaxed/simple;
bh=sNabrmv0Rm0BLockRke/ASu7e8eryvXQ81pUa5GsBto=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=MNC2e5WXoiN/o1XPAV6WIE163Q/bM5YmPYiT0P1CPzkMXRrnByiq8o3zl5CA3zTf/eh6lxujF2igl194rwuwB8oYyrBoP7YhPfN3TYRPSd9jAanptNcmKN/8mdGe5h+DRWZxbcxnCtAMiD6gq0S0U46PuHY1FJduzl/Bg0Unu2w=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jiAcvA1e; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2B984C4CEE7;
Sat, 31 May 2025 20:02:22 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748721742;
bh=sNabrmv0Rm0BLockRke/ASu7e8eryvXQ81pUa5GsBto=;
h=From:To:Cc:Subject:Date:From;
b=jiAcvA1ekmsiXMcouYMfs4nXt8pHTY/+fV648UdPGSyVXvCbq/Q3G4h1vW4fiSwrM
FK27qvMJMVEEzXQ8guiis33jSbtfbaBgmVFIh0Lj9AuWE+WIzPesHGv82kWVUOIzh4
sllF+BJwjD9jMEctrSMzFmPLcpdnw2o6Nwj94P0MlSr/lvDQbnIoP9sfIGJzc7oXwd
sWH8v9aKhfTSuEC3IsD/P+gmbNlR8TKe4i4Dv9kpxbnOl57x+e4xaKwpcS6F7jgDYR
2rSFyeR6+ATpvIZvUBKah2k4+z/ouH9d6LxiuJP9PJwqJCpcCY5Uw3hN54ngk8Sn8n
G29FCXYLGFzbA==
From: Eric Biggers <ebiggers@xxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-crypto@xxxxxxxxxxxxxxx,
Ard Biesheuvel <ardb@xxxxxxxxxx>,
Alexandre Torgue <alexandre.torgue@xxxxxxxxxxx>,
Fabien Dessenne <fabien.dessenne@xxxxxxxxxxx>,
Lionel Debieve <lionel.debieve@xxxxxxxxxxx>,
Maxime Coquelin <mcoquelin.stm32@xxxxxxxxx>,
linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Subject: [PATCH] crypto: stm32 - remove crc32 and crc32c support
Date: Sat, 31 May 2025 13:00:47 -0700
Message-ID: <20250531200047.16872-1-ebiggers@xxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Eric Biggers <ebiggers@xxxxxxxxxx>

Remove the crc32 and crc32c support from the stm32 driver, since there's
very little chance that it still has any relevance:

- Now that nearly all users of crc32 and crc32c in the kernel use the
library functions instead of the crypto interface, and this driver
only supports the crypto interface, there are very few cases in which
this driver could plausibly still be used.

- While the commit that added this driver quoted up to a 900% speedup
over crc32c-generic, this was likely a best-case scenario with long
lengths. Short lengths are commonly used, and this driver has a lot
of fixed overhead. It likely performs poorly on short lengths.

- At the time that microbenchmark was done, there were multiple generic
implementations of CRC32C, and it's unclear which was used. It could
have been the bit-at-a-time one, which is really slow.

- While the microbenchmark appears to have been done on an ARM Cortex-M7
CPU that doesn't support CRC or PMULL instructions, it's now 8 years
later and more CPUs have those instructions.

- Originally this driver was completely broken: it calculated the wrong
CRC values, it wasn't thread-safe, it slept in atomic sections, and it
used the wrong context format. Use with ext4 or f2fs immediately
crashed the kernel with a BUG_ON. That strongly suggests that the
submission was based purely on the microbenchmark and not a real use
case. Furthermore, the fixes for these issues added significant
additional overhead to the driver, such as a spinlock. That calls
into question the possible performance benefit.

- The driver may still be broken. For example, its update function can
fail. Many users are not prepared to handle errors. Unlike the
software CRC code there are also different code paths for serial vs.
parallel usage, which are unlikely to be tested. The software CRC
code is much less error-prone and much better tested.

Support for this hardware could be added to arch/arm/lib/crc32.c in the
unlikely event that it would actually be useful. But this would need to
come with evidence that it's actually worthwhile, along with QEMU
support so that the driver can be tested.

Cc: Alexandre Torgue <alexandre.torgue@xxxxxxxxxxx>
Cc: Fabien Dessenne <fabien.dessenne@xxxxxxxxxxx>
Cc: Lionel Debieve <lionel.debieve@xxxxxxxxxxx>
Cc: Maxime Coquelin <mcoquelin.stm32@xxxxxxxxx>
Cc: linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---

I'm planning to take this patch via the crc tree.

arch/arm/configs/multi_v7_defconfig | 1 -
drivers/crypto/stm32/Kconfig | 9 -
drivers/crypto/stm32/Makefile | 1 -
drivers/crypto/stm32/stm32-crc32.c | 480 ----------------------------
4 files changed, 491 deletions(-)
delete mode 100644 drivers/crypto/stm32/stm32-crc32.c

diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index aca01ad6aafc5..8e1c13188f3eb 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -1296,11 +1296,10 @@ CONFIG_CRYPTO_DEV_ATMEL_TDES=m
CONFIG_CRYPTO_DEV_ATMEL_SHA=m
CONFIG_CRYPTO_DEV_MARVELL_CESA=m
CONFIG_CRYPTO_DEV_QCE=m
CONFIG_CRYPTO_DEV_QCOM_RNG=m
CONFIG_CRYPTO_DEV_ROCKCHIP=m
-CONFIG_CRYPTO_DEV_STM32_CRC=m
CONFIG_CRYPTO_DEV_STM32_HASH=m
CONFIG_CRYPTO_DEV_STM32_CRYP=m
CONFIG_CMA_SIZE_MBYTES=64
CONFIG_PRINTK_TIME=y
CONFIG_DEBUG_KERNEL=y
diff --git a/drivers/crypto/stm32/Kconfig b/drivers/crypto/stm32/Kconfig
index 49dfd161e9b9e..d6dc848c82eee 100644
--- a/drivers/crypto/stm32/Kconfig
+++ b/drivers/crypto/stm32/Kconfig
@@ -1,15 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
-config CRYPTO_DEV_STM32_CRC
- tristate "Support for STM32 crc accelerators"
- depends on ARCH_STM32
- select CRYPTO_HASH
- select CRC32
- help
- This enables support for the CRC32 hw accelerator which can be found
- on STMicroelectronics STM32 SOC.
-
config CRYPTO_DEV_STM32_HASH
tristate "Support for STM32 hash accelerators"
depends on ARCH_STM32 || ARCH_U8500
depends on HAS_DMA
select CRYPTO_HASH
diff --git a/drivers/crypto/stm32/Makefile b/drivers/crypto/stm32/Makefile
index 518e0e0b11a9e..c63004026afb8 100644
--- a/drivers/crypto/stm32/Makefile
+++ b/drivers/crypto/stm32/Makefile
@@ -1,4 +1,3 @@
# SPDX-License-Identifier: GPL-2.0-only
-obj-$(CONFIG_CRYPTO_DEV_STM32_CRC) += stm32-crc32.o
obj-$(CONFIG_CRYPTO_DEV_STM32_HASH) += stm32-hash.o
obj-$(CONFIG_CRYPTO_DEV_STM32_CRYP) += stm32-cryp.o
diff --git a/drivers/crypto/stm32/stm32-crc32.c b/drivers/crypto/stm32/stm32-crc32.c
deleted file mode 100644
index fd29785a3ecf3..0000000000000
--- a/drivers/crypto/stm32/stm32-crc32.c
+++ /dev/null
@@ -1,480 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * Copyright (C) STMicroelectronics SA 2017
- * Author: Fabien Dessenne <fabien.dessenne@xxxxxx>
- */
-
-#include <linux/bitrev.h>
-#include <linux/clk.h>
-#include <linux/crc32.h>
-#include <linux/crc32poly.h>
-#include <linux/io.h>
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/mod_devicetable.h>
-#include <linux/platform_device.h>
-#include <linux/pm_runtime.h>
-
-#include <crypto/internal/hash.h>
-
-#include <linux/unaligned.h>
-
-#define DRIVER_NAME "stm32-crc32"
-#define CHKSUM_DIGEST_SIZE 4
-#define CHKSUM_BLOCK_SIZE 1
-
-/* Registers */
-#define CRC_DR 0x00000000
-#define CRC_CR 0x00000008
-#define CRC_INIT 0x00000010
-#define CRC_POL 0x00000014
-
-/* Registers values */
-#define CRC_CR_RESET BIT(0)
-#define CRC_CR_REV_IN_WORD (BIT(6) | BIT(5))
-#define CRC_CR_REV_IN_BYTE BIT(5)
-#define CRC_CR_REV_OUT BIT(7)
-#define CRC32C_INIT_DEFAULT 0xFFFFFFFF
-
-#define CRC_AUTOSUSPEND_DELAY 50
-
-static unsigned int burst_size;
-module_param(burst_size, uint, 0644);
-MODULE_PARM_DESC(burst_size, "Select burst byte size (0 unlimited)");
-
-struct stm32_crc {
- struct list_head list;
- struct device *dev;
- void __iomem *regs;
- struct clk *clk;
- spinlock_t lock;
-};
-
-struct stm32_crc_list {
- struct list_head dev_list;
- spinlock_t lock; /* protect dev_list */
-};
-
-static struct stm32_crc_list crc_list = {
- .dev_list = LIST_HEAD_INIT(crc_list.dev_list),
- .lock = __SPIN_LOCK_UNLOCKED(crc_list.lock),
-};
-
-struct stm32_crc_ctx {
- u32 key;
- u32 poly;
-};
-
-struct stm32_crc_desc_ctx {
- u32 partial; /* crc32c: partial in first 4 bytes of that struct */
-};
-
-static int stm32_crc32_cra_init(struct crypto_tfm *tfm)
-{
- struct stm32_crc_ctx *mctx = crypto_tfm_ctx(tfm);
-
- mctx->key = 0;
- mctx->poly = CRC32_POLY_LE;
- return 0;
-}
-
-static int stm32_crc32c_cra_init(struct crypto_tfm *tfm)
-{
- struct stm32_crc_ctx *mctx = crypto_tfm_ctx(tfm);
-
- mctx->key = CRC32C_INIT_DEFAULT;
- mctx->poly = CRC32C_POLY_LE;
- return 0;
-}
-
-static int stm32_crc_setkey(struct crypto_shash *tfm, const u8 *key,
- unsigned int keylen)
-{
- struct stm32_crc_ctx *mctx = crypto_shash_ctx(tfm);
-
- if (keylen != sizeof(u32))
- return -EINVAL;
-
- mctx->key = get_unaligned_le32(key);
- return 0;
-}
-
-static struct stm32_crc *stm32_crc_get_next_crc(void)
-{
- struct stm32_crc *crc;
-
- spin_lock_bh(&crc_list.lock);
- crc = list_first_entry_or_null(&crc_list.dev_list, struct stm32_crc, list);
- if (crc)
- list_move_tail(&crc->list, &crc_list.dev_list);
- spin_unlock_bh(&crc_list.lock);
-
- return crc;
-}
-
-static int stm32_crc_init(struct shash_desc *desc)
-{
- struct stm32_crc_desc_ctx *ctx = shash_desc_ctx(desc);
- struct stm32_crc_ctx *mctx = crypto_shash_ctx(desc->tfm);
- struct stm32_crc *crc;
- unsigned long flags;
-
- crc = stm32_crc_get_next_crc();
- if (!crc)
- return -ENODEV;
-
- pm_runtime_get_sync(crc->dev);
-
- spin_lock_irqsave(&crc->lock, flags);
-
- /* Reset, set key, poly and configure in bit reverse mode */
- writel_relaxed(bitrev32(mctx->key), crc->regs + CRC_INIT);
- writel_relaxed(bitrev32(mctx->poly), crc->regs + CRC_POL);
- writel_relaxed(CRC_CR_RESET | CRC_CR_REV_IN_WORD | CRC_CR_REV_OUT,
- crc->regs + CRC_CR);
-
- /* Store partial result */
- ctx->partial = readl_relaxed(crc->regs + CRC_DR);
-
- spin_unlock_irqrestore(&crc->lock, flags);
-
- pm_runtime_mark_last_busy(crc->dev);
- pm_runtime_put_autosuspend(crc->dev);
-
- return 0;
-}
-
-static int burst_update(struct shash_desc *desc, const u8 *d8,
- size_t length)
-{
- struct stm32_crc_desc_ctx *ctx = shash_desc_ctx(desc);
- struct stm32_crc_ctx *mctx = crypto_shash_ctx(desc->tfm);
- struct stm32_crc *crc;
-
- crc = stm32_crc_get_next_crc();
- if (!crc)
- return -ENODEV;
-
- pm_runtime_get_sync(crc->dev);
-
- if (!spin_trylock(&crc->lock)) {
- /* Hardware is busy, calculate crc32 by software */
- if (mctx->poly == CRC32_POLY_LE)
- ctx->partial = crc32_le(ctx->partial, d8, length);
- else
- ctx->partial = crc32c(ctx->partial, d8, length);
-
- goto pm_out;
- }
-
- /*
- * Restore previously calculated CRC for this context as init value
- * Restore polynomial configuration
- * Configure in register for word input data,
- * Configure out register in reversed bit mode data.
- */
- writel_relaxed(bitrev32(ctx->partial), crc->regs + CRC_INIT);
- writel_relaxed(bitrev32(mctx->poly), crc->regs + CRC_POL);
- writel_relaxed(CRC_CR_RESET | CRC_CR_REV_IN_WORD | CRC_CR_REV_OUT,
- crc->regs + CRC_CR);
-
- if (d8 != PTR_ALIGN(d8, sizeof(u32))) {
- /* Configure for byte data */
- writel_relaxed(CRC_CR_REV_IN_BYTE | CRC_CR_REV_OUT,
- crc->regs + CRC_CR);
- while (d8 != PTR_ALIGN(d8, sizeof(u32)) && length) {
- writeb_relaxed(*d8++, crc->regs + CRC_DR);
- length--;
- }
- /* Configure for word data */
- writel_relaxed(CRC_CR_REV_IN_WORD | CRC_CR_REV_OUT,
- crc->regs + CRC_CR);
- }
-
- for (; length >= sizeof(u32); d8 += sizeof(u32), length -= sizeof(u32))
- writel_relaxed(*((u32 *)d8), crc->regs + CRC_DR);
-
- if (length) {
- /* Configure for byte data */
- writel_relaxed(CRC_CR_REV_IN_BYTE | CRC_CR_REV_OUT,
- crc->regs + CRC_CR);
- while (length--)
- writeb_relaxed(*d8++, crc->regs + CRC_DR);
- }
-
- /* Store partial result */
- ctx->partial = readl_relaxed(crc->regs + CRC_DR);
-
- spin_unlock(&crc->lock);
-
-pm_out:
- pm_runtime_mark_last_busy(crc->dev);
- pm_runtime_put_autosuspend(crc->dev);
-
- return 0;
-}
-
-static int stm32_crc_update(struct shash_desc *desc, const u8 *d8,
- unsigned int length)
-{
- const unsigned int burst_sz = burst_size;
- unsigned int rem_sz;
- const u8 *cur;
- size_t size;
- int ret;
-
- if (!burst_sz)
- return burst_update(desc, d8, length);
-
- /* Digest first bytes not 32bit aligned at first pass in the loop */
- size = min_t(size_t, length, burst_sz + (size_t)d8 -
- ALIGN_DOWN((size_t)d8, sizeof(u32)));
- for (rem_sz = length, cur = d8; rem_sz;
- rem_sz -= size, cur += size, size = min(rem_sz, burst_sz)) {
- ret = burst_update(desc, cur, size);
- if (ret)
- return ret;
- }
-
- return 0;
-}
-
-static int stm32_crc_final(struct shash_desc *desc, u8 *out)
-{
- struct stm32_crc_desc_ctx *ctx = shash_desc_ctx(desc);
- struct stm32_crc_ctx *mctx = crypto_shash_ctx(desc->tfm);
-
- /* Send computed CRC */
- put_unaligned_le32(mctx->poly == CRC32C_POLY_LE ?
- ~ctx->partial : ctx->partial, out);
-
- return 0;
-}
-
-static int stm32_crc_finup(struct shash_desc *desc, const u8 *data,
- unsigned int length, u8 *out)
-{
- return stm32_crc_update(desc, data, length) ?:
- stm32_crc_final(desc, out);
-}
-
-static int stm32_crc_digest(struct shash_desc *desc, const u8 *data,
- unsigned int length, u8 *out)
-{
- return stm32_crc_init(desc) ?: stm32_crc_finup(desc, data, length, out);
-}
-
-static unsigned int refcnt;
-static DEFINE_MUTEX(refcnt_lock);
-static struct shash_alg algs[] = {
- /* CRC-32 */
- {
- .setkey = stm32_crc_setkey,
- .init = stm32_crc_init,
- .update = stm32_crc_update,
- .final = stm32_crc_final,
- .finup = stm32_crc_finup,
- .digest = stm32_crc_digest,
- .descsize = sizeof(struct stm32_crc_desc_ctx),
- .digestsize = CHKSUM_DIGEST_SIZE,
- .base = {
- .cra_name = "crc32",
- .cra_driver_name = "stm32-crc32-crc32",
- .cra_priority = 200,
- .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
- .cra_blocksize = CHKSUM_BLOCK_SIZE,
- .cra_ctxsize = sizeof(struct stm32_crc_ctx),
- .cra_module = THIS_MODULE,
- .cra_init = stm32_crc32_cra_init,
- }
- },
- /* CRC-32Castagnoli */
- {
- .setkey = stm32_crc_setkey,
- .init = stm32_crc_init,
- .update = stm32_crc_update,
- .final = stm32_crc_final,
- .finup = stm32_crc_finup,
- .digest = stm32_crc_digest,
- .descsize = sizeof(struct stm32_crc_desc_ctx),
- .digestsize = CHKSUM_DIGEST_SIZE,
- .base = {
- .cra_name = "crc32c",
- .cra_driver_name = "stm32-crc32-crc32c",
- .cra_priority = 200,
- .cra_flags = CRYPTO_ALG_OPTIONAL_KEY,
- .cra_blocksize = CHKSUM_BLOCK_SIZE,
- .cra_ctxsize = sizeof(struct stm32_crc_ctx),
- .cra_module = THIS_MODULE,
- .cra_init = stm32_crc32c_cra_init,
- }
- }
-};
-
-static int stm32_crc_probe(struct platform_device *pdev)
-{
- struct device *dev = &pdev->dev;
- struct stm32_crc *crc;
- int ret;
-
- crc = devm_kzalloc(dev, sizeof(*crc), GFP_KERNEL);
- if (!crc)
- return -ENOMEM;
-
- crc->dev = dev;
-
- crc->regs = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(crc->regs)) {
- dev_err(dev, "Cannot map CRC IO\n");
- return PTR_ERR(crc->regs);
- }
-
- crc->clk = devm_clk_get(dev, NULL);
- if (IS_ERR(crc->clk)) {
- dev_err(dev, "Could not get clock\n");
- return PTR_ERR(crc->clk);
- }
-
- ret = clk_prepare_enable(crc->clk);
- if (ret) {
- dev_err(crc->dev, "Failed to enable clock\n");
- return ret;
- }
-
- pm_runtime_set_autosuspend_delay(dev, CRC_AUTOSUSPEND_DELAY);
- pm_runtime_use_autosuspend(dev);
-
- pm_runtime_get_noresume(dev);
- pm_runtime_set_active(dev);
- pm_runtime_irq_safe(dev);
- pm_runtime_enable(dev);
-
- spin_lock_init(&crc->lock);
-
- platform_set_drvdata(pdev, crc);
-
- spin_lock(&crc_list.lock);
- list_add(&crc->list, &crc_list.dev_list);
- spin_unlock(&crc_list.lock);
-
- mutex_lock(&refcnt_lock);
- if (!refcnt) {
- ret = crypto_register_shashes(algs, ARRAY_SIZE(algs));
- if (ret) {
- mutex_unlock(&refcnt_lock);
- dev_err(dev, "Failed to register\n");
- clk_disable_unprepare(crc->clk);
- return ret;
- }
- }
- refcnt++;
- mutex_unlock(&refcnt_lock);
-
- dev_info(dev, "Initialized\n");
-
- pm_runtime_put_sync(dev);
-
- return 0;
-}
-
-static void stm32_crc_remove(struct platform_device *pdev)
-{
- struct stm32_crc *crc = platform_get_drvdata(pdev);
- int ret = pm_runtime_get_sync(crc->dev);
-
- spin_lock(&crc_list.lock);
- list_del(&crc->list);
- spin_unlock(&crc_list.lock);
-
- mutex_lock(&refcnt_lock);
- if (!--refcnt)
- crypto_unregister_shashes(algs, ARRAY_SIZE(algs));
- mutex_unlock(&refcnt_lock);
-
- pm_runtime_disable(crc->dev);
- pm_runtime_put_noidle(crc->dev);
-
- if (ret >= 0)
- clk_disable(crc->clk);
- clk_unprepare(crc->clk);
-}
-
-static int __maybe_unused stm32_crc_suspend(struct device *dev)
-{
- struct stm32_crc *crc = dev_get_drvdata(dev);
- int ret;
-
- ret = pm_runtime_force_suspend(dev);
- if (ret)
- return ret;
-
- clk_unprepare(crc->clk);
-
- return 0;
-}
-
-static int __maybe_unused stm32_crc_resume(struct device *dev)
-{
- struct stm32_crc *crc = dev_get_drvdata(dev);
- int ret;
-
- ret = clk_prepare(crc->clk);
- if (ret) {
- dev_err(crc->dev, "Failed to prepare clock\n");
- return ret;
- }
-
- return pm_runtime_force_resume(dev);
-}
-
-static int __maybe_unused stm32_crc_runtime_suspend(struct device *dev)
-{
- struct stm32_crc *crc = dev_get_drvdata(dev);
-
- clk_disable(crc->clk);
-
- return 0;
-}
-
-static int __maybe_unused stm32_crc_runtime_resume(struct device *dev)
-{
- struct stm32_crc *crc = dev_get_drvdata(dev);
- int ret;
-
- ret = clk_enable(crc->clk);
- if (ret) {
- dev_err(crc->dev, "Failed to enable clock\n");
- return ret;
- }
-
- return 0;
-}
-
-static const struct dev_pm_ops stm32_crc_pm_ops = {
- SET_SYSTEM_SLEEP_PM_OPS(stm32_crc_suspend,
- stm32_crc_resume)
- SET_RUNTIME_PM_OPS(stm32_crc_runtime_suspend,
- stm32_crc_runtime_resume, NULL)
-};
-
-static const struct of_device_id stm32_dt_ids[] = {
- { .compatible = "st,stm32f7-crc", },
- {},
-};
-MODULE_DEVICE_TABLE(of, stm32_dt_ids);
-
-static struct platform_driver stm32_crc_driver = {
- .probe = stm32_crc_probe,
- .remove = stm32_crc_remove,
- .driver = {
- .name = DRIVER_NAME,
- .pm = &stm32_crc_pm_ops,
- .of_match_table = stm32_dt_ids,
- },
-};
-
-module_platform_driver(stm32_crc_driver);
-
-MODULE_AUTHOR("Fabien Dessenne <fabien.dessenne@xxxxxx>");
-MODULE_DESCRIPTION("STMicrolectronics STM32 CRC32 hardware driver");
-MODULE_LICENSE("GPL");

base-commit: 4cb6c8af8591135ec000fbe4bb474139ceec595d
--
2.49.0



Return-Path: <linux-kernel+bounces-669230-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E614141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:02:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 6BE477AFA60
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:01:38 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C748A1A841C;
Sat, 31 May 2025 20:02:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="RUDJKGcr"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.19])
(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 235C0187876
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:02:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.19
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748721765; cv=none; b=pOd5LXHzxg2OLJRnq0zx29AMKflCuRp91jtx/kSmSUVC7OPxeF/ZYp5imZP/TwNXchp2v0izXnex8piMfzdVz2romNpT1oAZ+IQSIJWo8N1/ZucOrmT/pJThMqVxp/N3u0GedCLQFoXjrdF4wjSWCDLS7vtnLweWMV4xm0GD9EI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748721765; c=relaxed/simple;
bh=5suRmS4EKq2uD/a9czyj8FamPoXc1b75xEoWxMjQGpA=;
h=Date:From:To:Cc:Subject:Message-ID; b=Ydheo4kb/3Lp+ei0hSWqF+gQX4k63VYr9PL9g2Fb73CtoeyAJpI4oUPd6NvMEc3EiQoScAXGoz14SV4dIE3TaAOB5Nvaki3iBDEztrTCvKABUkqPIrAjGbjp34tr24pVng4Wdbvyh/5ZF3B9YHP4qwIVMJf0P6nSiH1L/Zw8Qt0=
ARC-Authentication-Results:i=1; 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=RUDJKGcr; arc=none smtp.client-ip=192.198.163.19
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748721763; x=1780257763;
h=date:from:to:cc:subject:message-id;
bh=5suRmS4EKq2uD/a9czyj8FamPoXc1b75xEoWxMjQGpA=;
b=RUDJKGcrWKdFuBoJHhOtT0FjzMycWau8f9/gvb/4ymJg3FV1QQ/ZSkMv
O7PsXg2ZVIUx7ZVdSGz+FVPcrbQJ+rnShtQBLYaUPbko4yJYHzzrQp2AL
jfpeXMHDnDqGNaBe2JDCFJ1owZQ0Vy2Qw5X4z+XCVoQVIneRU4F2q4ZDx
iw6vqUOfG21wG/TI8/tA5BaUj6ItSQ4ojSYgAaDrctHZx5wyDqYgSTMKc
remeLz0upsbynDRN6U83aD2HUuLNc03NVN/FtjDS6cf5yx4KMlzGnYD55
5l7G3SoRbFDwPC5eJDtG/QMv7rkBrxyE2M5IuykiRwMhvWXktXzwNEvXO
Q==;
X-CSE-ConnectionGUID: P21T/NEOQgyout9es0MwqQ==
X-CSE-MsgGUID: 2zxH643yRci252/fn8AnBQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="49907113"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="49907113"
Received: from fmviesa007.fm.intel.com ([10.60.135.147])
by fmvoesa113.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 13:02:42 -0700
X-CSE-ConnectionGUID: BZ46lKexQHasz9RvNDYIvg==
X-CSE-MsgGUID: HmV5GqhTRt6N8c7aVkiuoA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144151808"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by fmviesa007.fm.intel.com with ESMTP; 31 May 2025 13:02:41 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLSPf-000Ybw-2O;
Sat, 31 May 2025 20:02:39 +0000
Date: Sun, 01 Jun 2025 04:02:30 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: "x86-ml" <x86@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
Subject: [tip:x86/urgent] BUILD SUCCESS
99850a1c93fe7ca40ad9efddc00acec6e85c5e48
Message-ID: <202506010421.7TSQlygI-lkp@xxxxxxxxx>
User-Agent: s-nail v14.9.24
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/urgent
branch HEAD: 99850a1c93fe7ca40ad9efddc00acec6e85c5e48 x86/fpu: Remove unused trace events

elapsed time: 721m

configs tested: 20
configs skipped: 127

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
i386 allmodconfig gcc-12
i386 allnoconfig gcc-12
i386 allyesconfig gcc-12
i386 buildonly-randconfig-001-20250531 gcc-12
i386 buildonly-randconfig-002-20250531 gcc-12
i386 buildonly-randconfig-003-20250531 gcc-12
i386 buildonly-randconfig-004-20250531 clang-20
i386 buildonly-randconfig-005-20250531 clang-20
i386 buildonly-randconfig-006-20250531 clang-20
i386 defconfig clang-20
x86_64 allnoconfig clang-20
x86_64 allyesconfig clang-20
x86_64 buildonly-randconfig-001-20250531 clang-20
x86_64 buildonly-randconfig-002-20250531 gcc-12
x86_64 buildonly-randconfig-003-20250531 gcc-12
x86_64 buildonly-randconfig-004-20250531 gcc-12
x86_64 buildonly-randconfig-005-20250531 clang-20
x86_64 buildonly-randconfig-006-20250531 clang-20
x86_64 defconfig gcc-11
x86_64 rhel-9.4-rust clang-18

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669231-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 25A5741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:14:56 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B47BC17D54A
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:14:55 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1120A1A8F9E;
Sat, 31 May 2025 20:14:45 +0000 (UTC)
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8BCBC139D;
Sat, 31 May 2025 20:14:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748722484; cv=none; b=EvpXMCPDrhUe1PIwNOBzB1wcRPmjxzvpiropWZiLr4HjVrm+UmV1o+L6DJVL8OK9IfA85PWAVADBsEkgMU31vH7oXbQ74rQF4Dan1NVGTWoZDlNZcRIH/sYekE9sRz+1xAWjkrsKmM6J3Mf6bCRWcQ+iMxtw8wrMna+sGs4eHok=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748722484; c=relaxed/simple;
bh=EWn7oCviz4cJo10FkBXaHDfYtLYegc5N4X7rrxnu7lU=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=pF7cBtD8Ogx2AjGZrgS5tF9nase0Tm+GaoXxdA6rDUMx5ZKpXJyTy2XOAmkq61vRp3QoSxYquy/3qOCvkk54Kn9AzCDpvCJfTAQWtEQo9tEn015/e3F4E/LIbyYA/FW9HXpnTkIQJAL6r0clu9gcG6GOiLhl8kXwQCO945Gv9wM=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CCEA6C4CEE3;
Sat, 31 May 2025 20:14:42 +0000 (UTC)
Date: Sat, 31 May 2025 16:15:49 -0400
From: Steven Rostedt <rostedt@xxxxxxxxxxx>
To: Jakub Kicinski <kuba@xxxxxxxxxx>
Cc: Jesper Dangaard Brouer <hawk@xxxxxxxxxx>, LKML
<linux-kernel@xxxxxxxxxxxxxxx>, Linux Trace Kernel
<linux-trace-kernel@xxxxxxxxxxxxxxx>, netdev <netdev@xxxxxxxxxxxxxxx>,
bpf@xxxxxxxxxxxxxxx, Jonathan Lemon <jonathan.lemon@xxxxxxxxx>, Mathieu
Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>, Masami Hiramatsu
<mhiramat@xxxxxxxxxx>, Ilias Apalodimas <ilias.apalodimas@xxxxxxxxxx>
Subject: Re: [PATCH] xdp: Remove unused mem_return_failed event
Message-ID: <20250531161549.6e1c69c7@xxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250530181813.1024eec5@xxxxxxxxxx>
References: <20250529160550.1f888b15@xxxxxxxxxxxxxxxxxx>
<696364e6-5eb1-4543-b9f4-60fba10623fc@xxxxxxxxxx>
<20250530121638.35106c15@xxxxxxxxxxxxxxxxxx>
<20250530181813.1024eec5@xxxxxxxxxx>
X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Fri, 30 May 2025 18:18:13 -0700
Jakub Kicinski <kuba@xxxxxxxxxx> wrote:

> On Fri, 30 May 2025 12:16:38 -0400 Steven Rostedt wrote:
> > > Acked-by: Jesper Dangaard Brouer <hawk@xxxxxxxxxx>
> >
> > Thanks. Will this go through the networking tree or should I just take it?
>
> If you're planning to send it to Linus in this MW, still, go for it:
> Acked-by: Jakub Kicinski <kuba@xxxxxxxxxx>
> If you mean to keep it in your -next tree for next MW I think we should
> take it to avoid conflict noise. But our -next tree is closed during MW
> per linux-next preferences.
>
> IOW please take it if you wanna ship it now, otherwise please repost
> after MW?

Yeah, I think I'll try to get it in now. I'll ping the maintainers of my
other patches to see if I can get them all in in one go.

Thanks,

-- Steve


Return-Path: <linux-kernel+bounces-669232-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 22BA141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:16:27 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 960647AAFA8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:15:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8866919C569;
Sat, 31 May 2025 20:16:18 +0000 (UTC)
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 1DC37139D;
Sat, 31 May 2025 20:16:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748722578; cv=none; b=mhWuPTKw9XpZrz1SdnioWWFhNDSrTepmihWv5h7MhFxGHaMsnaAs7TU1c5L7KelgZk7TiygQL/eLkk0NhbqP+rlJGviUhVMR45jnhWjxuxrDmzC/BU/sKCw2P732nQjh4ZB9C8YybTO09r4nzkTzBxU3u0ZnMPtvjfx4TjiFImM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748722578; c=relaxed/simple;
bh=hFKWR9920oP07kYrAIiRmQsB0MK4P35TpSB16jHkzS0=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=YpVF5A5e48B7nuMR1+dIC/OMkj+wKpmJch1rkT3+392d9gPFW5MiVOo2UhXo2MmsQuJsdQMxz+d8GpRvDmfgijFvf3rRO31s80ADWES7sbRYKrM213S8UtqQSDqdeSFweJVCH0UUPZlXwt7AG8+r20boMuP9FJBxMldu6XJfpUw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6707BC4CEE3;
Sat, 31 May 2025 20:16:16 +0000 (UTC)
Date: Sat, 31 May 2025 16:17:23 -0400
From: Steven Rostedt <rostedt@xxxxxxxxxxx>
To: LKML <linux-kernel@xxxxxxxxxxxxxxx>, Linux Trace Kernel
<linux-trace-kernel@xxxxxxxxxxxxxxx>, x86@xxxxxxxxxx
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Dave
Hansen <dave.hansen@xxxxxxxxxxxxxxx>, Oleg Nesterov <oleg@xxxxxxxxxx>,
Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>, Masami Hiramatsu
<mhiramat@xxxxxxxxxx>
Subject: Re: [PATCH] x86/fpu: Remove unused trace events
Message-ID: <20250531161723.1ea6a41c@xxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250529131024.7c2ef96f@xxxxxxxxxxxxxxxxxx>
References: <20250529131024.7c2ef96f@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Can I get an acked-by, and I'll pull this in through my tree (with the
other patches that remove unused events)?

Thanks,

-- Steve


On Thu, 29 May 2025 13:10:24 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> From: Steven Rostedt <rostedt@xxxxxxxxxxx>
>
> The following trace events are not used and defining them just wastes
> memory:
>
> x86_fpu_before_restore
> x86_fpu_after_restore
> x86_fpu_init_state
>
> Simply remove them.
>
> Link: https://lore.kernel.org/all/20250529130138.544ffec4@xxxxxxxxxxxxxxxxxx/
>
> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
> ---
> arch/x86/include/asm/trace/fpu.h | 15 ---------------
> 1 file changed, 15 deletions(-)
>
> diff --git a/arch/x86/include/asm/trace/fpu.h b/arch/x86/include/asm/trace/fpu.h
> index 0454d5e60e5d..721b408d9a67 100644
> --- a/arch/x86/include/asm/trace/fpu.h
> +++ b/arch/x86/include/asm/trace/fpu.h
> @@ -44,16 +44,6 @@ DEFINE_EVENT(x86_fpu, x86_fpu_after_save,
> TP_ARGS(fpu)
> );
>
> -DEFINE_EVENT(x86_fpu, x86_fpu_before_restore,
> - TP_PROTO(struct fpu *fpu),
> - TP_ARGS(fpu)
> -);
> -
> -DEFINE_EVENT(x86_fpu, x86_fpu_after_restore,
> - TP_PROTO(struct fpu *fpu),
> - TP_ARGS(fpu)
> -);
> -
> DEFINE_EVENT(x86_fpu, x86_fpu_regs_activated,
> TP_PROTO(struct fpu *fpu),
> TP_ARGS(fpu)
> @@ -64,11 +54,6 @@ DEFINE_EVENT(x86_fpu, x86_fpu_regs_deactivated,
> TP_ARGS(fpu)
> );
>
> -DEFINE_EVENT(x86_fpu, x86_fpu_init_state,
> - TP_PROTO(struct fpu *fpu),
> - TP_ARGS(fpu)
> -);
> -
> DEFINE_EVENT(x86_fpu, x86_fpu_dropped,
> TP_PROTO(struct fpu *fpu),
> TP_ARGS(fpu)



Return-Path: <linux-kernel+bounces-669233-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3BE4D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:16:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 4906B3A99C1
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:16:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B73C01A5B89;
Sat, 31 May 2025 20:16:44 +0000 (UTC)
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 4D2CD139D;
Sat, 31 May 2025 20:16:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748722604; cv=none; b=Jn8EldaDARG52vQ4TXGnnV15ZmHGebYDHZFDRDax2MUlmkNbFBvRhvfcffdOLSiCS8k2KK506oSXXGrzGP41zcm4Q18QOYCPYvy6dCQNjElRf0VuPIaF81/otHsznC1K2/EhxB24h8rygTcvO1pUBZJwqTt737egwcWViH7Tzr8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748722604; c=relaxed/simple;
bh=Kct0IyTFEziDsvkDuOpfntXLWQUd9krjskg2ZcNikZ4=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=SUJq0en3yBZ8D/L+Y0I4y+aKGjUq0PKMLMBMmdGVJiQsutKl+i1JpeoE7Xr9+rRZpjBn6BDC+PzvQBjTtBhFpe2hkKZSbKWYwsu8juzkR0CknNtpCZPb2kj3aMZDL7CUKiihYXSt7Gfz4CDyZyzVi1wflnSwFPhH+2rWe/9cQtA=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 19181C4CEE3;
Sat, 31 May 2025 20:16:43 +0000 (UTC)
Date: Sat, 31 May 2025 16:17:50 -0400
From: Steven Rostedt <rostedt@xxxxxxxxxxx>
To: LKML <linux-kernel@xxxxxxxxxxxxxxx>, Linux Trace Kernel
<linux-trace-kernel@xxxxxxxxxxxxxxx>
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>,
Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>, Masami Hiramatsu
<mhiramat@xxxxxxxxxx>
Subject: Re: [PATCH] genirq/matrix: Remove unused irq_matrix_alloc_reserved
tracepoint
Message-ID: <20250531161750.30adfcd0@xxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250529135739.26e5c075@xxxxxxxxxxxxxxxxxx>
References: <20250529135739.26e5c075@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Can I get an acked-by, and I'll pull this in through my tree (with the
other patches that remove unused events)?

Thanks,

-- Steve

On Thu, 29 May 2025 13:57:39 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> From: Steven Rostedt <rostedt@xxxxxxxxxxx>
>
> The tracepoint irq_matrix_alloc_reserved was added but never used.
> Remove it.
>
> Link: https://lore.kernel.org/all/20250529130138.544ffec4@xxxxxxxxxxxxxxxxxx/
>
> Fixes: ec0f7cd273dc4 ("genirq/matrix: Add tracepoints")
> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
> ---
> include/trace/events/irq_matrix.h | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/include/trace/events/irq_matrix.h b/include/trace/events/irq_matrix.h
> index 267d4cbbf360..93244078b4e6 100644
> --- a/include/trace/events/irq_matrix.h
> +++ b/include/trace/events/irq_matrix.h
> @@ -138,14 +138,6 @@ DEFINE_EVENT(irq_matrix_global_update, irq_matrix_assign_system,
> TP_ARGS(bit, matrix)
> );
>
> -DEFINE_EVENT(irq_matrix_cpu, irq_matrix_alloc_reserved,
> -
> - TP_PROTO(int bit, unsigned int cpu,
> - struct irq_matrix *matrix, struct cpumap *cmap),
> -
> - TP_ARGS(bit, cpu, matrix, cmap)
> -);
> -
> DEFINE_EVENT(irq_matrix_cpu, irq_matrix_reserve_managed,
>
> TP_PROTO(int bit, unsigned int cpu,



Return-Path: <linux-kernel+bounces-669234-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B26D941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:17:15 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3C1103B7CEB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:16:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 85FE81A9B58;
Sat, 31 May 2025 20:17:09 +0000 (UTC)
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 08655149E13;
Sat, 31 May 2025 20:17:09 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748722629; cv=none; b=SEA/Ya+28OKqfv1auzGz3Tvlr1K9V/Ql75Kohe12elMh3xl3Z+LsKFQOJul+yTf+Hy/KzmttE6OPiuIiaWOanmL5ABbmvaVMossSTtAnzqd1tqnFmK1IftySyxkI0cuI/pixFoXzgPqxyBEI0yVBJ26DkTn5sDFZtU/UgphtI/c=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748722629; c=relaxed/simple;
bh=HHSC7LDij5PcrXpjfZ+FeoIeSvmaL1L1SBK46tPqAlI=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=Z5DWE8Pb3ZQu4C1Y6DlUDOnr8RQ/F8dbiBNnlgyE7jJXy6qoxMGM4WN5AM/D4aGn6rBQoMWKE/9WlEXUk6MIvsXzbAaOkL8T4Dcc+0jXQAsg6J6r1n5lnMORGumzHKlyRRa2c968k0xZ86qYes49Qa/a4bDmveU9YDJXhPy1/ko=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id DF6D5C4CEE3;
Sat, 31 May 2025 20:17:07 +0000 (UTC)
Date: Sat, 31 May 2025 16:18:15 -0400
From: Steven Rostedt <rostedt@xxxxxxxxxxx>
To: LKML <linux-kernel@xxxxxxxxxxxxxxx>, Linux Trace Kernel
<linux-trace-kernel@xxxxxxxxxxxxxxx>, nvdimm@xxxxxxxxxxxxxxx
Cc: Dan Williams <dan.j.williams@xxxxxxxxx>, Shiyang Ruan
<ruansy.fnst@xxxxxxxxxxx>, "Darrick J. Wong" <djwong@xxxxxxxxxx>, Ross
Zwisler <zwisler@xxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [PATCH] fsdax: Remove unused trace event dax_pmd_insert_mapping
Message-ID: <20250531161815.12b11b81@xxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250529150722.19e04332@xxxxxxxxxxxxxxxxxx>
References: <20250529150722.19e04332@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Can I get an acked-by, and I'll pull this in through my tree (with the
other patches that remove unused events)?

Thanks,

-- Steve

On Thu, 29 May 2025 15:07:22 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> From: Steven Rostedt <rostedt@xxxxxxxxxxx>
>
> When the dax_fault_actor() helper was factored out, it removed the calls
> to the dax_pmd_insert_mapping event but never removed the event itself. As
> events created do take up memory (roughly 5K), this is a waste as it is
> never used.
>
> Remove the unused dax_pmd_insert_mapping trace event.
>
> Link: https://lore.kernel.org/all/20250529130138.544ffec4@xxxxxxxxxxxxxxxxxx/
>
> Fixes: c2436190e492 ("fsdax: factor out a dax_fault_actor() helper")
> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
> ---
> include/trace/events/fs_dax.h | 48 -----------------------------------
> 1 file changed, 48 deletions(-)
>
> diff --git a/include/trace/events/fs_dax.h b/include/trace/events/fs_dax.h
> index 86fe6aecff1e..4d99ee3b62ea 100644
> --- a/include/trace/events/fs_dax.h
> +++ b/include/trace/events/fs_dax.h
> @@ -102,54 +102,6 @@ DEFINE_EVENT(dax_pmd_load_hole_class, name, \
> DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole);
> DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole_fallback);
>
> -DECLARE_EVENT_CLASS(dax_pmd_insert_mapping_class,
> - TP_PROTO(struct inode *inode, struct vm_fault *vmf,
> - long length, pfn_t pfn, void *radix_entry),
> - TP_ARGS(inode, vmf, length, pfn, radix_entry),
> - TP_STRUCT__entry(
> - __field(unsigned long, ino)
> - __field(unsigned long, vm_flags)
> - __field(unsigned long, address)
> - __field(long, length)
> - __field(u64, pfn_val)
> - __field(void *, radix_entry)
> - __field(dev_t, dev)
> - __field(int, write)
> - ),
> - TP_fast_assign(
> - __entry->dev = inode->i_sb->s_dev;
> - __entry->ino = inode->i_ino;
> - __entry->vm_flags = vmf->vma->vm_flags;
> - __entry->address = vmf->address;
> - __entry->write = vmf->flags & FAULT_FLAG_WRITE;
> - __entry->length = length;
> - __entry->pfn_val = pfn.val;
> - __entry->radix_entry = radix_entry;
> - ),
> - TP_printk("dev %d:%d ino %#lx %s %s address %#lx length %#lx "
> - "pfn %#llx %s radix_entry %#lx",
> - MAJOR(__entry->dev),
> - MINOR(__entry->dev),
> - __entry->ino,
> - __entry->vm_flags & VM_SHARED ? "shared" : "private",
> - __entry->write ? "write" : "read",
> - __entry->address,
> - __entry->length,
> - __entry->pfn_val & ~PFN_FLAGS_MASK,
> - __print_flags_u64(__entry->pfn_val & PFN_FLAGS_MASK, "|",
> - PFN_FLAGS_TRACE),
> - (unsigned long)__entry->radix_entry
> - )
> -)
> -
> -#define DEFINE_PMD_INSERT_MAPPING_EVENT(name) \
> -DEFINE_EVENT(dax_pmd_insert_mapping_class, name, \
> - TP_PROTO(struct inode *inode, struct vm_fault *vmf, \
> - long length, pfn_t pfn, void *radix_entry), \
> - TP_ARGS(inode, vmf, length, pfn, radix_entry))
> -
> -DEFINE_PMD_INSERT_MAPPING_EVENT(dax_pmd_insert_mapping);
> -
> DECLARE_EVENT_CLASS(dax_pte_fault_class,
> TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result),
> TP_ARGS(inode, vmf, result),



Return-Path: <linux-kernel+bounces-669235-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 5CEF741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:17:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 1F89F3BFE4E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:17:28 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id CCA251A8419;
Sat, 31 May 2025 20:17:43 +0000 (UTC)
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 5B070182B7;
Sat, 31 May 2025 20:17:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748722663; cv=none; b=eCBTiKzBl5k8WTnxNg6DCTWe5oWyyvRQc7j9Q3IsRtvRb5ak6bvM62NU9ZtATtqdCkm2p7mwEgQ6Nff8oXQ63LT0AcpWGXhVJQoP9x3maQRKjGVI/Da8WIKbl8eYjZqjmOU2v2mfi3tsxr7M8Tkv1K0kj9gDpwTzs6YOGHBLpCw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748722663; c=relaxed/simple;
bh=VJA8cepSAx8a/24HjjDvLzNnXghHImEo+X+AVZrO3HI=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=DXMdq/8kNYGiB35xx4szzBXsGGTcXs6+ujAh8mym/JeJsd7dHpS+LUACR47uNhb9a58o5W9plqx/GmewduLHPYI51pJzEq0uK2cYxarnoTkzAvlQ5hMvt3H9mUBaqUDVPbWQH4XoaL46CRO+5zFqOdL1q8hRcOHYJClL4ePdscs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 46DE5C4CEEF;
Sat, 31 May 2025 20:17:42 +0000 (UTC)
Date: Sat, 31 May 2025 16:18:49 -0400
From: Steven Rostedt <rostedt@xxxxxxxxxxx>
To: LKML <linux-kernel@xxxxxxxxxxxxxxx>, Linux Trace Kernel
<linux-trace-kernel@xxxxxxxxxxxxxxx>, nvdimm@xxxxxxxxxxxxxxx
Cc: Dan Williams <dan.j.williams@xxxxxxxxx>, Shiyang Ruan
<ruansy.fnst@xxxxxxxxxxx>, "Darrick J. Wong" <djwong@xxxxxxxxxx>, Ross
Zwisler <zwisler@xxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: [PATCH v2] fsdax: Remove unused trace events for dax insert
mapping
Message-ID: <20250531161849.3a5598d4@xxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250529152211.688800c9@xxxxxxxxxxxxxxxxxx>
References: <20250529152211.688800c9@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

[ Ignore the request to the v1 version of of this patch ]

Can I get an acked-by, and I'll pull this in through my tree (with the
other patches that remove unused events)?

Thanks,

-- Steve

On Thu, 29 May 2025 15:22:11 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> From: Steven Rostedt <rostedt@xxxxxxxxxxx>
>
> When the dax_fault_actor() helper was factored out, it removed the calls
> to the dax_pmd_insert_mapping and dax_insert_mapping events but never
> removed the events themselves. As each event created takes up memory
> (roughly 5K each), this is a waste as it is never used.
>
> Remove the unused dax_pmd_insert_mapping and dax_insert_mapping trace
> events.
>
> Link: https://lore.kernel.org/all/20250529130138.544ffec4@xxxxxxxxxxxxxxxxxx/
>
> Fixes: c2436190e492 ("fsdax: factor out a dax_fault_actor() helper")
> Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx>
> ---
> Changes since v1: https://lore.kernel.org/all/20250529150722.19e04332@xxxxxxxxxxxxxxxxxx/
>
> - Removed dax_insert_mapping too
>
> include/trace/events/fs_dax.h | 78 -----------------------------------
> 1 file changed, 78 deletions(-)
>
> diff --git a/include/trace/events/fs_dax.h b/include/trace/events/fs_dax.h
> index 86fe6aecff1e..76b56f78abb0 100644
> --- a/include/trace/events/fs_dax.h
> +++ b/include/trace/events/fs_dax.h
> @@ -102,54 +102,6 @@ DEFINE_EVENT(dax_pmd_load_hole_class, name, \
> DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole);
> DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole_fallback);
>
> -DECLARE_EVENT_CLASS(dax_pmd_insert_mapping_class,
> - TP_PROTO(struct inode *inode, struct vm_fault *vmf,
> - long length, pfn_t pfn, void *radix_entry),
> - TP_ARGS(inode, vmf, length, pfn, radix_entry),
> - TP_STRUCT__entry(
> - __field(unsigned long, ino)
> - __field(unsigned long, vm_flags)
> - __field(unsigned long, address)
> - __field(long, length)
> - __field(u64, pfn_val)
> - __field(void *, radix_entry)
> - __field(dev_t, dev)
> - __field(int, write)
> - ),
> - TP_fast_assign(
> - __entry->dev = inode->i_sb->s_dev;
> - __entry->ino = inode->i_ino;
> - __entry->vm_flags = vmf->vma->vm_flags;
> - __entry->address = vmf->address;
> - __entry->write = vmf->flags & FAULT_FLAG_WRITE;
> - __entry->length = length;
> - __entry->pfn_val = pfn.val;
> - __entry->radix_entry = radix_entry;
> - ),
> - TP_printk("dev %d:%d ino %#lx %s %s address %#lx length %#lx "
> - "pfn %#llx %s radix_entry %#lx",
> - MAJOR(__entry->dev),
> - MINOR(__entry->dev),
> - __entry->ino,
> - __entry->vm_flags & VM_SHARED ? "shared" : "private",
> - __entry->write ? "write" : "read",
> - __entry->address,
> - __entry->length,
> - __entry->pfn_val & ~PFN_FLAGS_MASK,
> - __print_flags_u64(__entry->pfn_val & PFN_FLAGS_MASK, "|",
> - PFN_FLAGS_TRACE),
> - (unsigned long)__entry->radix_entry
> - )
> -)
> -
> -#define DEFINE_PMD_INSERT_MAPPING_EVENT(name) \
> -DEFINE_EVENT(dax_pmd_insert_mapping_class, name, \
> - TP_PROTO(struct inode *inode, struct vm_fault *vmf, \
> - long length, pfn_t pfn, void *radix_entry), \
> - TP_ARGS(inode, vmf, length, pfn, radix_entry))
> -
> -DEFINE_PMD_INSERT_MAPPING_EVENT(dax_pmd_insert_mapping);
> -
> DECLARE_EVENT_CLASS(dax_pte_fault_class,
> TP_PROTO(struct inode *inode, struct vm_fault *vmf, int result),
> TP_ARGS(inode, vmf, result),
> @@ -194,36 +146,6 @@ DEFINE_PTE_FAULT_EVENT(dax_load_hole);
> DEFINE_PTE_FAULT_EVENT(dax_insert_pfn_mkwrite_no_entry);
> DEFINE_PTE_FAULT_EVENT(dax_insert_pfn_mkwrite);
>
> -TRACE_EVENT(dax_insert_mapping,
> - TP_PROTO(struct inode *inode, struct vm_fault *vmf, void *radix_entry),
> - TP_ARGS(inode, vmf, radix_entry),
> - TP_STRUCT__entry(
> - __field(unsigned long, ino)
> - __field(unsigned long, vm_flags)
> - __field(unsigned long, address)
> - __field(void *, radix_entry)
> - __field(dev_t, dev)
> - __field(int, write)
> - ),
> - TP_fast_assign(
> - __entry->dev = inode->i_sb->s_dev;
> - __entry->ino = inode->i_ino;
> - __entry->vm_flags = vmf->vma->vm_flags;
> - __entry->address = vmf->address;
> - __entry->write = vmf->flags & FAULT_FLAG_WRITE;
> - __entry->radix_entry = radix_entry;
> - ),
> - TP_printk("dev %d:%d ino %#lx %s %s address %#lx radix_entry %#lx",
> - MAJOR(__entry->dev),
> - MINOR(__entry->dev),
> - __entry->ino,
> - __entry->vm_flags & VM_SHARED ? "shared" : "private",
> - __entry->write ? "write" : "read",
> - __entry->address,
> - (unsigned long)__entry->radix_entry
> - )
> -)
> -
> DECLARE_EVENT_CLASS(dax_writeback_range_class,
> TP_PROTO(struct inode *inode, pgoff_t start_index, pgoff_t end_index),
> TP_ARGS(inode, start_index, end_index),



Return-Path: <linux-kernel+bounces-669236-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8A89F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:19:32 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id AE9F87A5384
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:18:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 365011A8404;
Sat, 31 May 2025 20:19:23 +0000 (UTC)
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C2B4F1487E9;
Sat, 31 May 2025 20:19:22 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748722762; cv=none; b=lXh1fcbMNJSdsyG/vaa48T6BYgYnx2ngtL4K94KPDi5QlVTQRw7nl+zpQedOsN9cr7WOTspOncy+CMoqiF9dmUltqDRdegQ+oE1Lc4ZiJBdoB1g1LiuIikNn6Hu92Bv7pRFPFICkTxRO8M0etAvJW8yTjGfvynqDhgKJywkcefM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748722762; c=relaxed/simple;
bh=erAyjsqjStgVouI9Z5+V1KtR7M4lw8/lfdZTRc5Gl0M=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=kDJ7JGGp2j6KMBT0vaiO/V+v9lLMoKRNPcvCko4Z+3F/9Ayjbx2cTs85mUbntOLTWOhKwryoSUrMA/uairyg83Xb96VBG4q4pcllMG1Zr8TCU1zKdJAZyp77rInN5Sj0hQhJRcOR9tsiaU2PZPIMEeEv206LNgZzqqHmeOIlHJc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id F4078C4CEE3;
Sat, 31 May 2025 20:19:20 +0000 (UTC)
Date: Sat, 31 May 2025 16:20:28 -0400
From: Steven Rostedt <rostedt@xxxxxxxxxxx>
To: LKML <linux-kernel@xxxxxxxxxxxxxxx>, Linux Trace Kernel
<linux-trace-kernel@xxxxxxxxxxxxxxx>, x86@xxxxxxxxxx
Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Borislav Petkov <bp@xxxxxxxxx>,
Ingo Molnar <mingo@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Dave
Hansen <dave.hansen@xxxxxxxxxxxxxxx>, Oleg Nesterov <oleg@xxxxxxxxxx>,
Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxxxx>, Masami Hiramatsu
<mhiramat@xxxxxxxxxx>
Subject: Re: [PATCH] x86/fpu: Remove unused trace events
Message-ID: <20250531162028.5db6e2f7@xxxxxxxxxxxxxxxxxx>
In-Reply-To: <20250531161723.1ea6a41c@xxxxxxxxxxxxxxxxxx>
References: <20250529131024.7c2ef96f@xxxxxxxxxxxxxxxxxx>
<20250531161723.1ea6a41c@xxxxxxxxxxxxxxxxxx>
X-Mailer: Claws Mail 3.20.0git84 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, 31 May 2025 16:17:23 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> Can I get an acked-by, and I'll pull this in through my tree (with the
> other patches that remove unused events)?

Never mind, I just noticed the tip message that this was already merged and
going upstream.

Thanks,

-- Steve


Return-Path: <linux-kernel+bounces-669237-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C275F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:38:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id C6CAB189CF11
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:38:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 174BB1AC43A;
Sat, 31 May 2025 20:38:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="PIhX+ad0"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 3524D1537C8;
Sat, 31 May 2025 20:38:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748723887; cv=none; b=kZzK3OFnwfo0JM7y3ox6b6XUxe83NQv/yHKYvAYB4fXWMiyeL5Lr/+0Ik902lxfcGvv6VMSkDjiHjNz8kdvV28v9jTh4duextFqa+vfidMNuz4zjIu5Z3/p1ehdezdZu02G8pPJcRuubzByx0RA4b0crCVwZhG5n6sWx5hSWw48=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748723887; c=relaxed/simple;
bh=0Xtv3fU2Y6hcXhrv+D+tBLu8tfvnxa/3aHdyLWNjrRU=;
h=Mime-Version:Content-Type:Date:Message-Id:Cc:Subject:From:To:
References:In-Reply-To; b=twXMOFFRfyW6bq7xTVdIA5g3V4z1qA7as2NRJxB6LTrElbiLg7CrhW9yPpq+FzE7jMx7lOmoe5EhK+u3wLCwAQpNCqW+sRwgWehQIk8sFoS7P22meRgNaY7HVRADU8RKLoLJ1317s6ZQZ3rp7v47be9Q6d2XAJM0AOqcKF0QLqc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=PIhX+ad0; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE7C0C4CEE3;
Sat, 31 May 2025 20:38:03 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748723886;
bh=0Xtv3fU2Y6hcXhrv+D+tBLu8tfvnxa/3aHdyLWNjrRU=;
h=Date:Cc:Subject:From:To:References:In-Reply-To:From;
b=PIhX+ad0xHjJAsGjquYIrOtftX4+Xg2pP+iGc6+WPKIXWwUOT6g1zphtuQ15K3bNz
Gpo/R2VYnJEG7e0KcVPCycnlRqyeSB1Fe3MOgFECjOZQN0TeZgwm1l5yV9qN+yRetR
F5/SccNWFjQEwEjq+HLQCVkaVL1XVAT6fsZigxQSPAWbLqjSgUlvFGxGB9bnK3B+54
ITWcyN1YhBzKUROJ0Rgw/lmz/8VQJRSkhG4TfTEu+QLAjxEUwOoiFjORMdLhH6d/2h
YLOB7ioYbnxcAZIPU1g/AUe4pbPr7SMnZqyqtNJ1yBd/IZ30RQcLYkjHtrHFYoTLz4
obkyR511crJxw==
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sat, 31 May 2025 22:38:02 +0200
Message-Id: <DAAMVOZJDNNT.1JR5YY3ICI0Q5@xxxxxxxxxx>
Cc: "Miguel Ojeda" <ojeda@xxxxxxxxxx>, "Andrew Morton"
<akpm@xxxxxxxxxxxxxxxxxxxx>, "Alexander Viro" <viro@xxxxxxxxxxxxxxxxxx>,
"Greg Kroah-Hartman" <gregkh@xxxxxxxxxxxxxxxxxxx>, "Boqun Feng"
<boqun.feng@xxxxxxxxx>, "Gary Guo" <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>, "Benno Lossin"
<benno.lossin@xxxxxxxxx>, "Andreas Hindborg" <a.hindborg@xxxxxxxxxx>,
"Trevor Gross" <tmgross@xxxxxxxxx>, "Danilo Krummrich" <dakr@xxxxxxxxxx>,
<rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 2/2] uaccess: rust: add
UserSliceReader::strcpy_into_buf
From: "Benno Lossin" <lossin@xxxxxxxxxx>
To: "Alice Ryhl" <aliceryhl@xxxxxxxxxx>
X-Mailer: aerc 0.20.1
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-2-82168470d472@xxxxxxxxxx>
<DA9P904SL0KL.1QNQAI240QLH6@xxxxxxxxxx>
<CAH5fLgjZrJ66VnW0J_CHc-3yUFOt+DRWgTCNxoftACga+Lw+fA@xxxxxxxxxxxxxx>
<DAAG8AUG7GE2.EVO9Y6PZTHDI@xxxxxxxxxx>
<CAH5fLgjNCQV8zsfdeq21iXiu_VOpt=WGnm9nMp-B0bOEMEBctw@xxxxxxxxxxxxxx>
In-Reply-To: <CAH5fLgjNCQV8zsfdeq21iXiu_VOpt=WGnm9nMp-B0bOEMEBctw@xxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat May 31, 2025 at 7:38 PM CEST, Alice Ryhl wrote:
> On Sat, May 31, 2025 at 5:25=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> =
wrote:
>> On Sat May 31, 2025 at 3:25 PM CEST, Alice Ryhl wrote:
>> > On Fri, May 30, 2025 at 8:16=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxx=
g> wrote:
>> >> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
>> >> > This patch adds a more convenient method for reading C strings from
>> >> > userspace. Logic is added to NUL-terminate the buffer when necessar=
y so
>> >> > that a &CStr can be returned.
>> >> >
>> >> > Note that we treat attempts to read past `self.length` as a fault, =
so
>> >> > this returns EFAULT if that limit is exceeded before `buf.len()` is
>> >> > reached.
>> >> >
>> >> > Reviewed-by: Danilo Krummrich <dakr@xxxxxxxxxx>
>> >> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
>> >> > ---
>> >> > rust/kernel/uaccess.rs | 56 ++++++++++++++++++++++++++++++++++++++=
+++++++++++-
>> >> > 1 file changed, 55 insertions(+), 1 deletion(-)
>> >> >
>> >> > diff --git a/rust/kernel/uaccess.rs b/rust/kernel/uaccess.rs
>> >> > index 9b1e4016fca2c25a44a8417c7e35e0fcf08aa959..e6534b52a1920254d61=
f8349426d4cdb38286089 100644
>> >> > --- a/rust/kernel/uaccess.rs
>> >> > +++ b/rust/kernel/uaccess.rs
>> >> > @@ -293,6 +293,61 @@ pub fn read_all<A: Allocator>(mut self, buf: &=
mut Vec<u8, A>, flags: Flags) -> R
>> >> > unsafe { buf.set_len(buf.len() + len) };
>> >> > Ok(())
>> >> > }
>> >> > +
>> >> > + /// Read a NUL-terminated string from userspace and return it.
>> >> > + ///
>> >> > + /// The string is read into `buf` and a NUL-terminator is adde=
d if the end of `buf` is reached.
>> >> > + /// Since there must be space to add a NUL-terminator, the buf=
fer must not be empty. The
>> >> > + /// returned `&CStr` points into `buf`.
>> >> > + ///
>> >> > + /// Fails with [`EFAULT`] if the read happens on a bad address=
(some data may have been
>> >> > + /// copied).
>> >> > + #[doc(alias =3D "strncpy_from_user")]
>> >> > + pub fn strcpy_into_buf<'buf>(self, buf: &'buf mut [u8]) -> Res=
ult<&'buf CStr> {
>> >> > + if buf.is_empty() {
>> >> > + return Err(EINVAL);
>> >> > + }
>> >> > +
>> >> > + // SAFETY: The types are compatible and `strncpy_from_user=
` doesn't write uninitialized
>> >> > + // bytes to `buf`.
>> >> > + let mut dst =3D unsafe { &mut *(buf as *mut [u8] as *mut [=
MaybeUninit<u8>]) };
>> >> > +
>> >> > + // We never read more than `self.length` bytes.
>> >> > + if dst.len() > self.length {
>> >> > + dst =3D &mut dst[..self.length];
>> >> > + }
>> >> > +
>> >> > + let mut len =3D raw_strncpy_from_user(dst, self.ptr)?;
>> >> > + if len < dst.len() {
>> >> > + // Add one to include the NUL-terminator.
>> >> > + //
>> >> > + // This means that we could not fill the entire buffer=
, but we had to stop reading
>> >> > + // because we hit the `self.length` limit of this `Use=
rSliceReader`. Since we did not
>> >> > + // fill the buffer, we treat this case as if we tried =
to read past the `self.length`
>> >> > + // limit and received a page fault, which is consisten=
t with other `UserSliceReader`
>> >> > + // methods that also return page faults when you excee=
d `self.length`.
>> >> > + return Err(EFAULT);
>> >> > + } else {
>> >> > + // This implies that len =3D=3D buf.len().
>> >> > + //
>> >> > + // This means that we filled the buffer exactly. In th=
is case, we add a NUL-terminator
>> >> > + // and return it. Unlike the `len < dst.len()` branch,=
don't modify `len` because it
>> >> > + // already represents the length including the NUL-ter=
minator.
>> >> > + //
>> >> > + // SAFETY: Due to the check at the beginning, the buff=
er is not empty.
>> >> > + unsafe { *buf.last_mut().unwrap_unchecked() =3D 0 };
>> >>
>> >> In this case you're overwriting the last character read. Should we gi=
ve
>> >> `raw_strncpy_from_user` access to one less byte and then write NUL in=
to
>> >> that?
>> >
>> > Why? I'm not interested in changing the implementation just because.
>> > It needs to be significantly simpler, and I do not think it is.
>>
>> Sure, but then I think we should document this behavior.
>
> Document what? I understood your suggestion as a change to the
> implementation of strcpy_into_buf that would not change its behavior.
> Did I misunderstand?

Maybe I misunderstood the code, but if you do this:

let slice =3D UserSlice::new(ptr, 1024);
let mut buf =3D [0; 42];
let s =3D slice.strcpy_into_buf(&mut buf)?;

Then it will read 42 characters from userspace and (if there was no nul
byte) overwrite the last character with `\0`. If we now do

let mut buf2 =3D [0; 42];
let s2 =3D slice.strcpy_into_buf(&mut buf2)?;

Then that will continue the read at index 42, but effectively one
character will get skipped.

(Now it's not possible to call `strcpy_into_buf` multiple times, but I
see no real reason why it isn't a `&mut self` method. Also a user could
call `clone_reader` and then manually `skip` 42 bytes. Although they
might only skip 41 bytes, since that's the length of the CStr. But that
runs into the problem that if there was a `\0` at index 41, then
repeated uses of the pattern above will yield empty strings.)

---
Cheers,
Benno


Return-Path: <linux-kernel+bounces-669238-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C267941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:43:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id CCA2A17D792
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:43:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 44F231ACE0C;
Sat, 31 May 2025 20:43:37 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="a05DOYAC"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 5B15B1448E0;
Sat, 31 May 2025 20:43:34 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748724216; cv=none; b=jgbv/u+uSeIZP8AhZyJUBxnOzHhU34aXusOJPpwkaABzib4qczAq+ttDSg629Li8BN/VNxWTzpg4NAJJ1cDm67gSdvGaT6UWmh9v16Lzg2dpHHcsdtUczqHf9OlkXGSSRqj+8Tfm2SMxcg6kRP1e6d5Qj16o9eWGcDEDkuLA08Q=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748724216; c=relaxed/simple;
bh=bAv2ze/vnmWQad9Erd1vzja6Lrwlb0iHDU8sEytET8E=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=tloLXRmbSS3mftfaq8F8+Sh0pD1a8RqShKViAZIjUg5w0PX1P11//2YITjl+fZqJ3Zv2mG31j8t8dl2xx3V/pmc+tdq/yZEFl/51mWDnANQrO5eJlbNN/kMCt7WzktPi7wKAp81jm/qloDW535ZTk8N71KKnKNjSGwhWj3Slrj0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=a05DOYAC; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9C792C4CEE3;
Sat, 31 May 2025 20:43:34 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748724214;
bh=bAv2ze/vnmWQad9Erd1vzja6Lrwlb0iHDU8sEytET8E=;
h=From:To:Cc:Subject:Date:From;
b=a05DOYACwCBiev/RO/iKHoGr7D2j4ByBF1AJkhEgLUPwHiYOScFmeAyUUMjb3S4ea
oXjVxbUgg1/snQ+AuLlmYhxveaEivXecmdEuiuAt5yoqyBaQMw8mbf2NMxhlAdLKCG
Cg/HvzufQcq5jMqif13B0FZKA+S8aiCm0aYRQr16yo7PWZJiAaj3nCi8yZf2X3tyeN
tCiSwXpXPWlyEP2TPH8V5V4WRkid9T5VM24jBcKIVaPeJewJomE57b29VL1yu1uWdh
BQJsMgqoyQ3UBIOXIU1Sft3qyx8kioS7K5sgBRGJi3BesB6NkTtAwNcLYxjWHcA0rD
t297b3HvtXJXQ==
From: Eric Biggers <ebiggers@xxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-crypto@xxxxxxxxxxxxxxx,
Ard Biesheuvel <ardb@xxxxxxxxxx>,
Antoine Tenart <atenart@xxxxxxxxxx>
Subject: [PATCH] crypto: inside-secure - remove crc32 support
Date: Sat, 31 May 2025 13:42:44 -0700
Message-ID: <20250531204244.24648-1-ebiggers@xxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Eric Biggers <ebiggers@xxxxxxxxxx>

The crc32 acceleration in the inside-secure driver is accessible only as
an asynchronous hash. However, there seems to be no corresponding user
of crc32 in the kernel that supports asynchronous hashes. Therefore,
this code seems to be unused.

The patch that added this code provided no justification for its
inclusion. All devicetree bindings for this accelerator are for arm64;
arm64 CPUs often have CRC or PMULL instructions, which already
accelerate crc32 very well. And these actually work with the crc32
users in the kernel, unlike this driver which doesn't.

Remove this unnecessary code.

Cc: Antoine Tenart <atenart@xxxxxxxxxx>
Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---

I'm planning to take this patch via the crc tree.

drivers/crypto/inside-secure/safexcel.c | 1 -
drivers/crypto/inside-secure/safexcel.h | 1 -
drivers/crypto/inside-secure/safexcel_hash.c | 92 +-------------------
3 files changed, 2 insertions(+), 92 deletions(-)

diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c
index 9ca80d082c4fb..c3b2b22934b7e 100644
--- a/drivers/crypto/inside-secure/safexcel.c
+++ b/drivers/crypto/inside-secure/safexcel.c
@@ -1216,11 +1216,10 @@ static struct safexcel_alg_template *safexcel_algs[] = {
&safexcel_alg_authenc_hmac_sha384_ctr_aes,
&safexcel_alg_authenc_hmac_sha512_ctr_aes,
&safexcel_alg_xts_aes,
&safexcel_alg_gcm,
&safexcel_alg_ccm,
- &safexcel_alg_crc32,
&safexcel_alg_cbcmac,
&safexcel_alg_xcbcmac,
&safexcel_alg_cmac,
&safexcel_alg_chacha20,
&safexcel_alg_chachapoly,
diff --git a/drivers/crypto/inside-secure/safexcel.h b/drivers/crypto/inside-secure/safexcel.h
index 0c79ad78d1c0a..0f27367a85fa2 100644
--- a/drivers/crypto/inside-secure/safexcel.h
+++ b/drivers/crypto/inside-secure/safexcel.h
@@ -957,11 +957,10 @@ extern struct safexcel_alg_template safexcel_alg_authenc_hmac_sha256_ctr_aes;
extern struct safexcel_alg_template safexcel_alg_authenc_hmac_sha384_ctr_aes;
extern struct safexcel_alg_template safexcel_alg_authenc_hmac_sha512_ctr_aes;
extern struct safexcel_alg_template safexcel_alg_xts_aes;
extern struct safexcel_alg_template safexcel_alg_gcm;
extern struct safexcel_alg_template safexcel_alg_ccm;
-extern struct safexcel_alg_template safexcel_alg_crc32;
extern struct safexcel_alg_template safexcel_alg_cbcmac;
extern struct safexcel_alg_template safexcel_alg_xcbcmac;
extern struct safexcel_alg_template safexcel_alg_cmac;
extern struct safexcel_alg_template safexcel_alg_chacha20;
extern struct safexcel_alg_template safexcel_alg_chachapoly;
diff --git a/drivers/crypto/inside-secure/safexcel_hash.c b/drivers/crypto/inside-secure/safexcel_hash.c
index d2b632193bebb..fd34dc8f5707d 100644
--- a/drivers/crypto/inside-secure/safexcel_hash.c
+++ b/drivers/crypto/inside-secure/safexcel_hash.c
@@ -287,18 +287,12 @@ static int safexcel_handle_req_result(struct safexcel_crypto_priv *priv,

*should_complete = false; /* Not done yet */
return 1;
}

- if (unlikely(sreq->digest == CONTEXT_CONTROL_DIGEST_XCM &&
- ctx->alg == CONTEXT_CONTROL_CRYPTO_ALG_CRC32)) {
- /* Undo final XOR with 0xffffffff ...*/
- *(__le32 *)areq->result = ~sreq->state[0];
- } else {
- memcpy(areq->result, sreq->state,
- crypto_ahash_digestsize(ahash));
- }
+ memcpy(areq->result, sreq->state,
+ crypto_ahash_digestsize(ahash));
}

cache_len = safexcel_queued_len(sreq);
if (cache_len)
memcpy(sreq->cache, sreq->cache_next, cache_len);
@@ -1879,92 +1873,10 @@ struct safexcel_alg_template safexcel_alg_hmac_md5 = {
},
},
},
};

-static int safexcel_crc32_cra_init(struct crypto_tfm *tfm)
-{
- struct safexcel_ahash_ctx *ctx = crypto_tfm_ctx(tfm);
- int ret = safexcel_ahash_cra_init(tfm);
-
- /* Default 'key' is all zeroes */
- memset(&ctx->base.ipad, 0, sizeof(u32));
- return ret;
-}
-
-static int safexcel_crc32_init(struct ahash_request *areq)
-{
- struct safexcel_ahash_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
- struct safexcel_ahash_req *req = ahash_request_ctx_dma(areq);
-
- memset(req, 0, sizeof(*req));
-
- /* Start from loaded key */
- req->state[0] = cpu_to_le32(~ctx->base.ipad.word[0]);
- /* Set processed to non-zero to enable invalidation detection */
- req->len = sizeof(u32);
- req->processed = sizeof(u32);
-
- ctx->alg = CONTEXT_CONTROL_CRYPTO_ALG_CRC32;
- req->digest = CONTEXT_CONTROL_DIGEST_XCM;
- req->state_sz = sizeof(u32);
- req->digest_sz = sizeof(u32);
- req->block_sz = sizeof(u32);
-
- return 0;
-}
-
-static int safexcel_crc32_setkey(struct crypto_ahash *tfm, const u8 *key,
- unsigned int keylen)
-{
- struct safexcel_ahash_ctx *ctx = crypto_tfm_ctx(crypto_ahash_tfm(tfm));
-
- if (keylen != sizeof(u32))
- return -EINVAL;
-
- memcpy(&ctx->base.ipad, key, sizeof(u32));
- return 0;
-}
-
-static int safexcel_crc32_digest(struct ahash_request *areq)
-{
- return safexcel_crc32_init(areq) ?: safexcel_ahash_finup(areq);
-}
-
-struct safexcel_alg_template safexcel_alg_crc32 = {
- .type = SAFEXCEL_ALG_TYPE_AHASH,
- .algo_mask = 0,
- .alg.ahash = {
- .init = safexcel_crc32_init,
- .update = safexcel_ahash_update,
- .final = safexcel_ahash_final,
- .finup = safexcel_ahash_finup,
- .digest = safexcel_crc32_digest,
- .setkey = safexcel_crc32_setkey,
- .export = safexcel_ahash_export,
- .import = safexcel_ahash_import,
- .halg = {
- .digestsize = sizeof(u32),
- .statesize = sizeof(struct safexcel_ahash_export_state),
- .base = {
- .cra_name = "crc32",
- .cra_driver_name = "safexcel-crc32",
- .cra_priority = SAFEXCEL_CRA_PRIORITY,
- .cra_flags = CRYPTO_ALG_OPTIONAL_KEY |
- CRYPTO_ALG_ASYNC |
- CRYPTO_ALG_ALLOCATES_MEMORY |
- CRYPTO_ALG_KERN_DRIVER_ONLY,
- .cra_blocksize = 1,
- .cra_ctxsize = sizeof(struct safexcel_ahash_ctx),
- .cra_init = safexcel_crc32_cra_init,
- .cra_exit = safexcel_ahash_cra_exit,
- .cra_module = THIS_MODULE,
- },
- },
- },
-};
-
static int safexcel_cbcmac_init(struct ahash_request *areq)
{
struct safexcel_ahash_ctx *ctx = crypto_ahash_ctx(crypto_ahash_reqtfm(areq));
struct safexcel_ahash_req *req = ahash_request_ctx_dma(areq);


base-commit: 4cb6c8af8591135ec000fbe4bb474139ceec595d
--
2.49.0



Return-Path: <linux-kernel+bounces-669239-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2DC9241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:00:49 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 078EE1895F76
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:01:02 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 665441B0413;
Sat, 31 May 2025 21:00:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="afG6uBbN"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 A79B210E4;
Sat, 31 May 2025 21:00:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748725239; cv=none; b=uhNOxN54D+CzLRD2ycQIwbFBfEybFTrQ3teDI1cLPR0mzUCZBKfpAHDCX0c8ZT2Aqva4IFBD3eMawoGo6/W14EQY2HqrGcSnsYQPELS9YCL0Z5nekbfDzNqf8VuOx1J/j6NHxf0p6rzG9OqxDu9JI8kgcmN8KibAWTxVTia43lQ=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748725239; c=relaxed/simple;
bh=0AtzGeGU5tvavJEPBxWpExOFRe9wmzzbQRgq6JLo1II=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CraX3h7CzHFvDu8J9bQSkJHUIMcRL+T/Y++FKeK7S/09lgd+IHlrioWww2tkDeKWgmuyNjsndNkVyUeMh2e+7DaOLBU7WAzZyii97unTLQJzN+MFxnWJJJgwtQm6THUja/N/i5Vz9LzYaUxmL6Nfvs/wGuQpxuj1c7J9ULN/a/k=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=afG6uBbN; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0280CC4CEE3;
Sat, 31 May 2025 21:00:38 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748725239;
bh=0AtzGeGU5tvavJEPBxWpExOFRe9wmzzbQRgq6JLo1II=;
h=From:To:Cc:Subject:Date:From;
b=afG6uBbNcdBTK92l8ge/3X2iwharYVp+9DWjtGKth7yGYx++9U1iYMDLgBt0yx5ab
R3ZrEMBWNowya2tjiN4jG6IlkkR8esOGWG13joGmIG0ftGhCd5z2wlF1ozNhKAzfq/
zlzux/z2OqMAkT6irq01TMhmKCBslw9uiXsgpoRQ/NGoPApA2+M+lhe18+tJFhruh8
+6OzKrjuMQVj2Dv507dVKFUZedvBJgKLyMugEuhlk4h32dDXgw7zaHng6rE+Gdv82O
nRhFAcvn7ixAv3y5XEor3njCX/g1RkaPd97tJ2JNAiRtGSKAGLB9vEyDz1tof7RMRn
G0qtah8mgNHqw==
From: Eric Biggers <ebiggers@xxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-crypto@xxxxxxxxxxxxxxx,
Ard Biesheuvel <ardb@xxxxxxxxxx>
Subject: [PATCH] crypto: testmgr - remove crc32c context format test
Date: Sat, 31 May 2025 13:59:37 -0700
Message-ID: <20250531205937.63008-1-ebiggers@xxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Eric Biggers <ebiggers@xxxxxxxxxx>

This is no longer needed now that the code that used to directly access
the descriptor context of "crc32c" (libcrc32c and ext4) now just calls
crc32c(). Keep just the generic hash test.

Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---

I'm planning to take this via the crc tree.

crypto/testmgr.c | 55 +-----------------------------------------------
1 file changed, 1 insertion(+), 54 deletions(-)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index 72005074a5c26..54a93e071446e 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -3539,63 +3539,10 @@ static int alg_test_comp(const struct alg_test_desc *desc, const char *driver,
desc->suite.comp.decomp.count);
crypto_free_acomp(acomp);
return err;
}

-static int alg_test_crc32c(const struct alg_test_desc *desc,
- const char *driver, u32 type, u32 mask)
-{
- struct crypto_shash *tfm;
- __le32 val;
- int err;
-
- err = alg_test_hash(desc, driver, type, mask);
- if (err)
- return err;
-
- tfm = crypto_alloc_shash(driver, type, mask);
- if (IS_ERR(tfm)) {
- if (PTR_ERR(tfm) == -ENOENT) {
- /*
- * This crc32c implementation is only available through
- * ahash API, not the shash API, so the remaining part
- * of the test is not applicable to it.
- */
- return 0;
- }
- printk(KERN_ERR "alg: crc32c: Failed to load transform for %s: "
- "%ld\n", driver, PTR_ERR(tfm));
- return PTR_ERR(tfm);
- }
- driver = crypto_shash_driver_name(tfm);
-
- do {
- SHASH_DESC_ON_STACK(shash, tfm);
- u32 *ctx = (u32 *)shash_desc_ctx(shash);
-
- shash->tfm = tfm;
-
- *ctx = 420553207;
- err = crypto_shash_final(shash, (u8 *)&val);
- if (err) {
- printk(KERN_ERR "alg: crc32c: Operation failed for "
- "%s: %d\n", driver, err);
- break;
- }
-
- if (val != cpu_to_le32(~420553207)) {
- pr_err("alg: crc32c: Test failed for %s: %u\n",
- driver, le32_to_cpu(val));
- err = -EINVAL;
- }
- } while (0);
-
- crypto_free_shash(tfm);
-
- return err;
-}
-
static int alg_test_cprng(const struct alg_test_desc *desc, const char *driver,
u32 type, u32 mask)
{
struct crypto_rng *rng;
int err;
@@ -4551,11 +4498,11 @@ static const struct alg_test_desc alg_test_descs[] = {
.suite = {
.hash = __VECS(crc32_tv_template)
}
}, {
.alg = "crc32c",
- .test = alg_test_crc32c,
+ .test = alg_test_hash,
.fips_allowed = 1,
.suite = {
.hash = __VECS(crc32c_tv_template)
}
}, {

base-commit: 4cb6c8af8591135ec000fbe4bb474139ceec595d
--
2.49.0



Return-Path: <linux-kernel+bounces-669240-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3B76541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:10:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 51CFC17A6FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:10:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8B1271B0424;
Sat, 31 May 2025 21:10:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="pPAlIMwK"
Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C14F31714B2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:09:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748725799; cv=none; b=QhAxVpVgnySraWV10861KDPTnuk7y4bm9B+biqc5W5m6m79FjvUfwyPj8LcnMcB6kWt5brxpQH10OwHfum4C0g5Vh1RZnQ6AjXXd64S+rUHNyfUawMOeCe2627+ch5HAUp6C7s1bfrXpGqDoQJXA2cDDjBs2XjkIiYtDB8meoZM=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748725799; c=relaxed/simple;
bh=u8a2NkNNd1pqKtbAGadHEEcUwqWQAaGjVUfFSf3L4H4=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=maFX4Dn4CEurzC78pCmg8Jjeuv5nz2cGEy0hrt26QiNteCmH1CI1qGzTv6V4u6QfJFbA5AgDiu8TeLghQ/QKYrFe11tQnJZe33M8xjtkva1sa0sDaHATF2g7Oz9B0uC141Rfc11NuubeTj34SkfwNrE1f27hA4b6bTjTTshcBiE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=pPAlIMwK; arc=none smtp.client-ip=209.85.128.54
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com
Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-441ab63a415so33758915e9.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:09:56 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=google.com; s=20230601; t=1748725795; x=1749330595; darn=vger.kernel.org;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=d4MAljZb6VaLb+JJfW2inrM+R4knjNKG7SImE66ez2c=;
b=pPAlIMwKtLLJ1jQqdS46p/pu9Kwv9MiT6B8CGQZ2zxLmMYV3Dz9jC61p4P35XtNjpK
c5vQTGgpQFINKftPp/htW9hmc3QRUe5W9pdqnFk+KeejKofWRSlPArR4RKge1w8r0ldT
nFvd35YRV9YwiSri/CxM9yu9X4JLExhg38aFKtti7xa3Fa6LgIr4pbWWyDMEXQ/F9SpI
/v8yLSOIyr7RRKvXzozGI3q5dV+H7jHRIVCUBoCcVZyXBWGjQnqELH1dbKC20L7COJN9
zYpLyBRdBrpG66Vxb+8jWILBFJborx3JUMcz46ZuUpj2pwSsKbz+iMLl6OKc2gfjZin0
8TUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748725795; x=1749330595;
h=content-transfer-encoding:cc:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=d4MAljZb6VaLb+JJfW2inrM+R4knjNKG7SImE66ez2c=;
b=NRSbK2oZ4YiLkONFRrb9NiJ/vMZr1f581APBZDQAnLDsBEDtYxZLnfCcPCKpy/Swj3
D8SdrBNku9m08hVIBCqyaEM+mUddjt//wrgc8LT6wmoflX7B5x0XDLpYvCmNHP3+m5gG
TeekhMqpG8wnnSy37ogEhY6BGk8ubr+Dz+fUAp5Rz1ILo+oC/CyL6MfizjSSBy2z96NV
HyZftsL6jsJ2El1Ccguy2PVznqgWck5RNt87RQF+arlwlYlCaq+HXf1qRZCdEhAgl/cx
oHfMt2GJ4NLpozUYEe0bxctP1fE3NsAkgwf8EKN7VKxl+CMbFDsR+ViVECekOOZ1fe84
Bydg==
X-Forwarded-Encrypted: i=1; AJvYcCVbk5KZ1RaqClXvAId4CTWlR3c9E5bO3SA9YDyn0/oHBqxEIgTzZl9G2ohrG2H8trhmDEu3wSi3LfDdw2g=@vger.kernel.org
X-Gm-Message-State: AOJu0Yw3s8zzoIxX8XjiHtutpOiO25loR3XxrQt+PxNc0DDhbU3tEWq3
12pgE9R3Q4pcVDMWGKcVRj6aMYZUdb9274Ze0EugLyboZ+1D+FON/F4DdwkXtfdihfmRSgd04tN
FFTwEfXDpBwm57wsUvo4+BgVYNK65smaaTHjFwSyK
X-Gm-Gg: ASbGncvus5LC5Af6zjlU6ap4CGxAc4sPGaexH52VGwaKOCwUzE9ikx8bgqdrbaHnBgq
ovIa1xqFt0zz98dQI8ctvAILUYqadyiZdMxRkeqS9Qj3ak1CR2pbvkioBFJptl2gfi9FG65Uqfx
Nb+obZ3Tod1R2x7TuDDnK69tH4nw9rbjDQnlHnKt56OqOe
X-Google-Smtp-Source: AGHT+IFIRaZbn8gKcVwGvsqHeJaCCSovLLe9GrV5ROw/dR94c7J1c/uOa2ltNvjq+/U/6CRBtT2Ujn5IoXb9e8TneFU=
X-Received: by 2002:a05:6000:402a:b0:3a4:ebc2:d6ec with SMTP id
ffacd0b85a97d-3a4f7a4d257mr5846489f8f.14.1748725794909; Sat, 31 May 2025
14:09:54 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <20250527-strncpy-from-user-v4-0-82168470d472@xxxxxxxxxx>
<20250527-strncpy-from-user-v4-2-82168470d472@xxxxxxxxxx> <DA9P904SL0KL.1QNQAI240QLH6@xxxxxxxxxx>
<CAH5fLgjZrJ66VnW0J_CHc-3yUFOt+DRWgTCNxoftACga+Lw+fA@xxxxxxxxxxxxxx>
<DAAG8AUG7GE2.EVO9Y6PZTHDI@xxxxxxxxxx> <CAH5fLgjNCQV8zsfdeq21iXiu_VOpt=WGnm9nMp-B0bOEMEBctw@xxxxxxxxxxxxxx>
<DAAMVOZJDNNT.1JR5YY3ICI0Q5@xxxxxxxxxx>
In-Reply-To: <DAAMVOZJDNNT.1JR5YY3ICI0Q5@xxxxxxxxxx>
From: Alice Ryhl <aliceryhl@xxxxxxxxxx>
Date: Sat, 31 May 2025 23:09:43 +0200
X-Gm-Features: AX0GCFvR4yJBxRf9_0uyJroI03dydMcK82Y-sUNhb1wu-pGif1hyrxWf-JFooEs
Message-ID: <CAH5fLgj8WkjDs6qCmzxYsYTH=_knWyZDrwqLopvGZEBk931aXQ@xxxxxxxxxxxxxx>
Subject: Re: [PATCH v4 2/2] uaccess: rust: add UserSliceReader::strcpy_into_buf
To: Benno Lossin <lossin@xxxxxxxxxx>
Cc: Miguel Ojeda <ojeda@xxxxxxxxxx>, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>,
Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>,
Boqun Feng <boqun.feng@xxxxxxxxx>, Gary Guo <gary@xxxxxxxxxxx>,
=?UTF-8?Q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <benno.lossin@xxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Trevor Gross <tmgross@xxxxxxxxx>, Danilo Krummrich <dakr@xxxxxxxxxx>, rust-for-linux@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-11.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS,
USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 10:38=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx> w=
rote:
>
> On Sat May 31, 2025 at 7:38 PM CEST, Alice Ryhl wrote:
> > On Sat, May 31, 2025 at 5:25=E2=80=AFPM Benno Lossin <lossin@xxxxxxxxxx=
> wrote:
> >> On Sat May 31, 2025 at 3:25 PM CEST, Alice Ryhl wrote:
> >> > On Fri, May 30, 2025 at 8:16=E2=80=AFPM Benno Lossin <lossin@kernel.=
org> wrote:
> >> >> On Tue May 27, 2025 at 2:34 PM CEST, Alice Ryhl wrote:
> >> >> > This patch adds a more convenient method for reading C strings fr=
om
> >> >> > userspace. Logic is added to NUL-terminate the buffer when necess=
ary so
> >> >> > that a &CStr can be returned.
> >> >> >
> >> >> > Note that we treat attempts to read past `self.length` as a fault=
, so
> >> >> > this returns EFAULT if that limit is exceeded before `buf.len()` =
is
> >> >> > reached.
> >> >> >
> >> >> > Reviewed-by: Danilo Krummrich <dakr@xxxxxxxxxx>
> >> >> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
> >> >> > ---
> >> >> > rust/kernel/uaccess.rs | 56 ++++++++++++++++++++++++++++++++++++=
+++++++++++++-
> >> >> > 1 file changed, 55 insertions(+), 1 deletion(-)
> >> >> >
> >> >> > diff --git a/rust/kernel/uaccess.rs b/rust/kernel/uaccess.rs
> >> >> > index 9b1e4016fca2c25a44a8417c7e35e0fcf08aa959..e6534b52a1920254d=
61f8349426d4cdb38286089 100644
> >> >> > --- a/rust/kernel/uaccess.rs
> >> >> > +++ b/rust/kernel/uaccess.rs
> >> >> > @@ -293,6 +293,61 @@ pub fn read_all<A: Allocator>(mut self, buf:=
&mut Vec<u8, A>, flags: Flags) -> R
> >> >> > unsafe { buf.set_len(buf.len() + len) };
> >> >> > Ok(())
> >> >> > }
> >> >> > +
> >> >> > + /// Read a NUL-terminated string from userspace and return i=
t.
> >> >> > + ///
> >> >> > + /// The string is read into `buf` and a NUL-terminator is ad=
ded if the end of `buf` is reached.
> >> >> > + /// Since there must be space to add a NUL-terminator, the b=
uffer must not be empty. The
> >> >> > + /// returned `&CStr` points into `buf`.
> >> >> > + ///
> >> >> > + /// Fails with [`EFAULT`] if the read happens on a bad addre=
ss (some data may have been
> >> >> > + /// copied).
> >> >> > + #[doc(alias =3D "strncpy_from_user")]
> >> >> > + pub fn strcpy_into_buf<'buf>(self, buf: &'buf mut [u8]) -> R=
esult<&'buf CStr> {
> >> >> > + if buf.is_empty() {
> >> >> > + return Err(EINVAL);
> >> >> > + }
> >> >> > +
> >> >> > + // SAFETY: The types are compatible and `strncpy_from_us=
er` doesn't write uninitialized
> >> >> > + // bytes to `buf`.
> >> >> > + let mut dst =3D unsafe { &mut *(buf as *mut [u8] as *mut=
[MaybeUninit<u8>]) };
> >> >> > +
> >> >> > + // We never read more than `self.length` bytes.
> >> >> > + if dst.len() > self.length {
> >> >> > + dst =3D &mut dst[..self.length];
> >> >> > + }
> >> >> > +
> >> >> > + let mut len =3D raw_strncpy_from_user(dst, self.ptr)?;
> >> >> > + if len < dst.len() {
> >> >> > + // Add one to include the NUL-terminator.
> >> >> > + //
> >> >> > + // This means that we could not fill the entire buff=
er, but we had to stop reading
> >> >> > + // because we hit the `self.length` limit of this `U=
serSliceReader`. Since we did not
> >> >> > + // fill the buffer, we treat this case as if we trie=
d to read past the `self.length`
> >> >> > + // limit and received a page fault, which is consist=
ent with other `UserSliceReader`
> >> >> > + // methods that also return page faults when you exc=
eed `self.length`.
> >> >> > + return Err(EFAULT);
> >> >> > + } else {
> >> >> > + // This implies that len =3D=3D buf.len().
> >> >> > + //
> >> >> > + // This means that we filled the buffer exactly. In =
this case, we add a NUL-terminator
> >> >> > + // and return it. Unlike the `len < dst.len()` branc=
h, don't modify `len` because it
> >> >> > + // already represents the length including the NUL-t=
erminator.
> >> >> > + //
> >> >> > + // SAFETY: Due to the check at the beginning, the bu=
ffer is not empty.
> >> >> > + unsafe { *buf.last_mut().unwrap_unchecked() =3D 0 };
> >> >>
> >> >> In this case you're overwriting the last character read. Should we =
give
> >> >> `raw_strncpy_from_user` access to one less byte and then write NUL =
into
> >> >> that?
> >> >
> >> > Why? I'm not interested in changing the implementation just because.
> >> > It needs to be significantly simpler, and I do not think it is.
> >>
> >> Sure, but then I think we should document this behavior.
> >
> > Document what? I understood your suggestion as a change to the
> > implementation of strcpy_into_buf that would not change its behavior.
> > Did I misunderstand?
>
> Maybe I misunderstood the code, but if you do this:
>
> let slice =3D UserSlice::new(ptr, 1024);
> let mut buf =3D [0; 42];
> let s =3D slice.strcpy_into_buf(&mut buf)?;
>
> Then it will read 42 characters from userspace and (if there was no nul
> byte) overwrite the last character with `\0`. If we now do
>
> let mut buf2 =3D [0; 42];
> let s2 =3D slice.strcpy_into_buf(&mut buf2)?;
>
> Then that will continue the read at index 42, but effectively one
> character will get skipped.
>
> (Now it's not possible to call `strcpy_into_buf` multiple times, but I
> see no real reason why it isn't a `&mut self` method. Also a user could
> call `clone_reader` and then manually `skip` 42 bytes. Although they
> might only skip 41 bytes, since that's the length of the CStr. But that
> runs into the problem that if there was a `\0` at index 41, then
> repeated uses of the pattern above will yield empty strings.)

I removed the ability to call it multiple times to avoid dealing with
this kind of question. You may submit a follow-up patch to change it
if you have a use-case.

Alice


Return-Path: <linux-kernel+bounces-669241-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E789B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:13:54 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 2892017B88D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:13:56 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id BA9221B0413;
Sat, 31 May 2025 21:13:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="if7JRV3J"
Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9FC6B610D;
Sat, 31 May 2025 21:13:47 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.174
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726029; cv=none; b=ciblbJp8pKI2nmk6hlYcwtJvmdFw+Ok879GSOWpx56aAYG96h+zLdz/X02xhA/n8hOL7Z/O3ThQDUleAh79PXl+KCnnbOJi9biKyVKbddJMsAlIJLyAc+8T6sDcdN6lk/pFJ8GNQvqoV6EyEX9hWl6J/cNccrl39ssnhsXTVwnc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726029; c=relaxed/simple;
bh=PRyboB1k7N2KcrjhZjcaIgm465CDqcL2+Yf2Cysk7ek=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Tfk9XHG7x64TAtJ5jZCTN2ppK2s7bkMQywSxAgFCRncIyEyulXx12CEHmVAZTzzaIOn7Tqgk/rx1Kn8JMMGeunGg2LjOhU0SVSrjdk/vIl0144UBPvPZIMzOD4c7m8BPRc/I7ew3TXuz6FEw2/IHUqBpXw1SU2baDO7YiPOJ12s=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=if7JRV3J; arc=none smtp.client-ip=209.85.210.174
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-742c9563fd9so2593021b3a.3;
Sat, 31 May 2025 14:13:47 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748726027; x=1749330827; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=TPzi5xY/SLx3QtT6MiFRJHzuARJElgyvVmtym/koB58=;
b=if7JRV3JhL0B9bRu92uaOaNyV/gIZ4E9kTlrbfEQHl/5v9ag6YfmLqF5BXOo/3rM7U
wtBYJyl4JokGokdzn5UMRM0o5k2qma1KnTOsguB+3T8gCxRFTKi8C7EkF+gDu+uU3PtU
4bvM0jcxrYk9OJSTxTFx+rFMN/3cRtgVpIi4N4SaY9JshCs5B5xlyrzsVTgMv91eSjqs
CxKTqF4taopQbokMSohjJMKKi618MKqGfEg2IPAVFzevLxJJ3w2mPzoqAMyesMcNRxgX
iMOrjyy/b98n/PbgZmVns8Leayizvq1xOYCT0QqVZ2S6rKNAPAeMrYUyR3iJtaTobua5
mGNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748726027; x=1749330827;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=TPzi5xY/SLx3QtT6MiFRJHzuARJElgyvVmtym/koB58=;
b=OegFs4f/FSMyjkJrS4O3TjV4xxek18Lqtez/p6KtFZGVdqmojFHT/VNSfVlZaV8uEL
6mvR25DoYz7GON+9cimFRJqQVp6TXoiY0WGaWaXbQqDI1yNVZSJ4ht/cmc/MjDXoK/ZL
iCPYKhU7ejbQNRccHmYgST4tf99xx/vkiE1bV3wrSjRmhF/dLJNUI8SRQM7JFfnAN5sW
Yt231VTyMOAbOlLyyVTeDe644ebubMuICnBHDqXpHEQQwJuPh9ZWHIfYGnc375ANYhh2
MLlKsthH54qJzXz7qombJZNFiYuSvsHuKW61Mq09+tN4Qkf01RHbaV5xCIpCNdmmgJyn
x+FQ==
X-Forwarded-Encrypted: i=1; AJvYcCUjuLr/TEu1w61AI/WQSkWIe5EGVKdOg+ESdCS5qOeGRo+eJGRgpxO4Otwx9sUgux1DHSaLd9E3rORzZA==@vger.kernel.org, AJvYcCVfrS2xT2C1pVG4E0igrKIX4BwRz5fmg09kq/Op460G41Vcz5F8g1LqKDIDcJ25EBH6bH7jAyNg9Pr+GIaE@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yx1NlkhzkUnhRjoYrYlaV9PVROpPm2DVgvF7j1eU40tDXxOGPFw
wYMUC1g3ZqXFHVj/L0tCZdCXSP8RsFlyhs+qD++5xVsU3mrUQdbzQIqI
X-Gm-Gg: ASbGncs21ByIfgwjyJByg+6okJBzGXZFMwZWU78RJ+Yt5G6aV7sv0qb5iTOn8EM2XHO
/Z1aPzdCl2MbCnVv5gawr4VXEEJjVCtkYxiTupSUuUkR8AkUE5GSs4u3uKjd3B/bAcBnStgZbGB
hATcSE81Lx9VjveFpo2G9XKadx/kJ4xNOJsq5tSExn4/1StPX1Uq9U5andpkEYd7qNFwmo2eIPt
tq2WcqoLk4DCNpohGk5Q6ZFivxl4XypUJkUZbAU1GDb4lfuBVZRXHleM8r8nUvbzH5Cf/o5af+1
d5dSSOjjgqMXuph0MKb1q7qYWBileMUmhEuVNE80m0kVZ/lyrQRT6XcUvTRLGHK2x1A/
X-Google-Smtp-Source: AGHT+IFNXrT07jQqOOjMisC/VlId5cQOFjn3jMV4LhgfHEDxAUPohcM7n20UJSliYShKjOPG5Nj/0A==
X-Received: by 2002:a05:6a21:3a48:b0:1f5:8221:d68c with SMTP id adf61e73a8af0-21adff48c77mr10543241637.3.1748726026726;
Sat, 31 May 2025 14:13:46 -0700 (PDT)
Received: from khalid-HP-Notebook.. ([49.204.30.182])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747affaf9dasm5161824b3a.109.2025.05.31.14.13.44
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 14:13:46 -0700 (PDT)
From: khalid.datamax@xxxxxxxxx
To: sudipm.mukherjee@xxxxxxxxx
Cc: teddy.wang@xxxxxxxxxxxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
linux-fbdev@xxxxxxxxxxxxxxx,
linux-staging@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Khalid Faisal <khalid.datamax@xxxxxxxxx>
Subject: [PATCH 0/1] staging: sm750fb: convert CamelCase function names to snake_case
Date: Sun, 1 Jun 2025 02:41:01 +0530
Message-ID: <20250531211319.55682-1-khalid.datamax@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch cleans up the staging driver sm750fb by converting function names
that are currently in CamelCase to the preferred snake_case style, following
Linux kernel coding guidelines.

Specifically, it renames the following functions for consistency and readability:
- sii164GetDeviceID -> sii164_get_device_id
- sii164ResetChip -> sii164_reset_chip
- sii164GetChipString -> sii164_get_chip_string
- sii164SetPower -> sii164_set_power
- sii164EnableHotPlugDetection -> sii164_enable_hot_plug_detection
- sii164IsConnected -> sii164_is_connected
- sii164CheckInterrupt -> sii164_check_interrupt
- sii164ClearInterrupt -> sii164_clear_interrupt

This helps maintain uniformity with the rest of the kernel codebase and
improves maintainability.

Signed-off-by: Khalid Faisal <khalid.datamax@xxxxxxxxx>




Return-Path: <linux-kernel+bounces-669242-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 69DB341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:14:06 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B58A317B83C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:14:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 55D4E1B4223;
Sat, 31 May 2025 21:14:02 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gT1IYafa"
Received: from mail-pf1-f181.google.com (mail-pf1-f181.google.com [209.85.210.181])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 45B9A1A23A2;
Sat, 31 May 2025 21:13:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.181
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726041; cv=none; b=na/I9sYPQv4NEdgLwUiCPFyH6A96/lWXH8gb4Uuhze8jFlaMQEJKRZJtcJOKpTL11SuQYT1QSdn9vVsR9nIbzTw+E7LqlZlt5qICrXOkd5bbgLDttDXRqQz3n6AUj8ihbSqmNMdNk65AgwvcIfLAg9YECKMqlo0gUuxIiPvP/4M=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726041; c=relaxed/simple;
bh=VPPHlfqUzR98R1C0Hq7Qr40ovgOaO9nWuetLhV41n34=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=tjZAJfcXbBonJ+6nDr6PHbqcQaGG602MoXIzW94DmuM9c5njtwDfpI09hWuX3R7J0pe5W5t0sLL+37zPQytA8xdkKgxFOSm/bc/C7k2+wQKk4gdD0g1hgXgMda1k7aLE32R5OtWWhGJyQrrPcmEh4nt4xY7xOjXCK9YOjDiA+X8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gT1IYafa; arc=none smtp.client-ip=209.85.210.181
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f181.google.com with SMTP id d2e1a72fcca58-742c27df0daso2504996b3a.1;
Sat, 31 May 2025 14:13:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748726039; x=1749330839; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=i+Hw/XilsTCcppc7+np/QVEAhg7lSuqi8GdQaDLo6eE=;
b=gT1IYafa0Soyu2Ihk/rgF361gr3DMgHpkkUdWer7HBceSNTAJ5l9Rfd3eHli9tg5xJ
0ZyqCdmpxV8C2gw/9qTsjQB390Cleylo+CIlCwWXKkoYK7z6AiQbNUgnedRsUIl+8IPr
strwHY9ftPtqcXdqLZOglDLFISYjInIEn+E3ag+CA2yro9d47JDG41HginahhUrUsA9l
jwomSFDayw9i6ZOtCHZTJzUCh0wIGdDL73QP/iATMXhUC49bM4gUnV3wsM7fp1t+FtcD
ffeeX2JWrNXKy6h64+tccyuWjwKjH4iU28GD0sOnPId8Ayj1IPd0eyoFuNq7654L64sD
AeDA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748726039; x=1749330839;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=i+Hw/XilsTCcppc7+np/QVEAhg7lSuqi8GdQaDLo6eE=;
b=R9My2MVbJNexzguDcYpOT1G5Y1/zUkAWoyrF4iykfC5LyaJjp5VnyxBeSVa26w6NGl
h+vnTO33Rx+fyUMszh58DnP8+J7ayTN0SHDAKeTPmQevFD++7GKXtYRdem1ALLV2gH+L
Ig2i1D6YtGcPw4NC9qMEj0g6L/zas9tpQAKt8IqDVfAgBtT04e6TPhvsG8jEOMMh1SbZ
zuJc69pjTc+vPU3fgNsR4RnxAUEa544GRBFi4DhOMMBmBdPxgjTFwrbFNufyZ4s8YnVh
js69T6HjhgUhkV0k9NxJx0MoXS+mjXfTJKW14hanfwwhr9YIwuh6e2y2DPWWBUMUOSsg
Teng==
X-Forwarded-Encrypted: i=1; AJvYcCVDHFIK4YB41fvHB03G3hG9scgsJzWfkrqsBYTnZkLSF9FGL2vom8hVCSaot9ae3UpY7GN3KTpmWYcWRCZP@xxxxxxxxxxxxxxx, AJvYcCW4hLSDfk7ARnhzV1xVi88+knWmYsHAJvjPFhcBdXkwCQIHLgZCfybdfhVWXBROVaq3mmrAoZHrCI2fvQ==@vger.kernel.org
X-Gm-Message-State: AOJu0YyThjzStJpZzLoi7y/7cBnqIfXsnwPwaTttykwczyCNTckJ8Bb6
UYlHSWVcC8fCgMX+1dStYqEKFTdlm0QfdIkSRGMwaz5lzhIwz9Gdy8i8
X-Gm-Gg: ASbGncsOHIG/yABp6+lbYt8AdmRdFsU2zJWd80YxaS/MZdmKZEYlvbGBDuCmt8Pv0Za
/5dzejfZWNAlFk6pjLuI9P7Nd5kV6OgOAcu4RscuB6+lVX6DsrTiGlAOVihRhf1wRPlljJ4Li94
1UUGedgLewugCck2fiq1lWL+Bh0sCKKyO6L/UWJ+q4ZKu4GlBRL6XH7Wk+XrW67syGR7+O4JbFj
IRA7qlv2otetqjPUA+OPtrREVRhpxOmFtLrpGzjGWCyg8IHuwMCpcaFSjAgfy4zKvgWzD37t3p2
PcA5CwHghDtanCVeGaDS2DTthVLlCEaUl0Jx/EsUK9TxzmL4K37UIJ4wiv7T2MvqIY/t
X-Google-Smtp-Source: AGHT+IEePTRjoDKaPPluoCvoyqlgcI2sBsl94rFvsSGnUDIVsgbH2C7dGBrEm5FdAVCErZEbDuL1Ww==
X-Received: by 2002:a05:6a00:a90:b0:73e:2dc5:a93c with SMTP id d2e1a72fcca58-747bd984f87mr10707720b3a.11.1748726039316;
Sat, 31 May 2025 14:13:59 -0700 (PDT)
Received: from khalid-HP-Notebook.. ([49.204.30.182])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747affaf9dasm5161824b3a.109.2025.05.31.14.13.56
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 14:13:58 -0700 (PDT)
From: khalid.datamax@xxxxxxxxx
To: sudipm.mukherjee@xxxxxxxxx
Cc: teddy.wang@xxxxxxxxxxxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
linux-fbdev@xxxxxxxxxxxxxxx,
linux-staging@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Khalid Faisal <khalid.datamax@xxxxxxxxx>
Subject: [PATCH 0/1] staging: sm750fb: convert CamelCase function names to snake_case
Date: Sun, 1 Jun 2025 02:41:02 +0530
Message-ID: <20250531211319.55682-2-khalid.datamax@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531211319.55682-1-khalid.datamax@xxxxxxxxx>
References: <20250531211319.55682-1-khalid.datamax@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Khalid Faisal <khalid.datamax@xxxxxxxxx>

This patch updates various function names in the sm750fb driver to follow
the Linux kernel coding style by converting CamelCase names to snake_case.

These changes were identified using checkpatch.pl, which recommends
using snake_case for function and variable names.

This patch is part of the Kernel Janitors cleanup effort.

--
Khalid Faisal



Return-Path: <linux-kernel+bounces-669243-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A238B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:14:20 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 9178B1898838
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:14:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C143E1C174A;
Sat, 31 May 2025 21:14:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="JKFylXUN"
Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3EEA01AC891;
Sat, 31 May 2025 21:14:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.180
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726054; cv=none; b=Zq+Tws9in4vX6QbEsNfzuJQhP86/fL6wIFdLpcf/TMjz1kIPd87L9tgcmwQOBxvUKDnxUAmGOnrYvFwIlpQUMH++874JIMpYsNTAc/kT611Z5AyTLNId9Q1qvs0F/0Gr7dtlH4spisCDnhDigKVcheSVMYXOHYLN0veDfvQCBhs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726054; c=relaxed/simple;
bh=d71kya2yib1xQWny5HRSfFEYAxSHhHAkIopEVCFPCzk=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=SPhUHyLGIoC6gYingaQe11JXQ2QJFkHkcZxbe7Hjgmb/CcV89uZNYltSEcjtAf/d0CPyNNQ18CV2MdAQmL3HLdr8A3/lpTa4aAM1Mz5pnTjTBYF5vCCoDVuslUMWHHLWXxBbQgvbjJ1QKX/i3q40fmFhiAzN/Tt0LmUvhW532WU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=JKFylXUN; arc=none smtp.client-ip=209.85.210.180
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f180.google.com with SMTP id d2e1a72fcca58-742c9907967so3312611b3a.1;
Sat, 31 May 2025 14:14:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748726052; x=1749330852; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=uhqVWLzanP0xyNFLLfM8OCfW+c2IkuUYEmPVlLCkYFM=;
b=JKFylXUNgIqLHxY7UM8fH8vVn/LP69yL+yZ1hc/gXjCqZUMS1fvJ1o/RctU2NeXnzW
NM1GuCKIjmjRaGbNFvWdLJfNp9kJ3dxZI97rsKHv5tIU2omA1fTq27UlKDupykbWe+SY
Qlvv5/1PnyduwaPx3UXVJpgXvMQ/B+CMiOhcPG8VRsmUqXoLcNCQfLkbLI1UHGpHKit2
54UmJoxGJlsT5Dmc26PIn7+zoHyV2ebdq9isQkDtVFngr0PAoMWuqhVnH3CYW2evPM0k
9jCIXx9P6sZSiD8TTLyrVFBK63qpEJfjw7dkZj4SdGR7AANH/Mpl61Vtd2TIzupEDUR4
u43A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748726052; x=1749330852;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=uhqVWLzanP0xyNFLLfM8OCfW+c2IkuUYEmPVlLCkYFM=;
b=GJfujAPWfJlV7s/2IDt+CxVBgKUJGd+BbXGu/Q7b+FE56H1ptDQcDcSkFW9LztkI6j
aa8jA+LunnHedJBPG6eqE8a5ImxnxIcuSkGocrFOk1d1OaDz2Yb7xqtarl9MEpz+2IjH
uruo6H1o7mPofprxqyIhXSAqHeoMts1ByG1YKLBZwOwjutARSA2rAjg6tShjcIXJLp6G
G4Wkny20vV9dObDsfdllUxokFR2RU5fXypQRWaTzOSx7jhGExvYkM3ejGLxffnE82lzK
7YnnZ9xAII38ZukWzjXtM2mdwMM6kcBnwxF/D5WJjZU17by4wJWPFtUako/A0LqutIUq
BbEA==
X-Forwarded-Encrypted: i=1; AJvYcCVmov1dxs7NK15McvhtM5hc74p/lmTIICkJ1uMfx/8eS97Y2YM0U0Lzj9iVmBC79XG75kC4Zr2CL23JjTnn@xxxxxxxxxxxxxxx, AJvYcCX1/Cs5V4CgjlnzODrxYFs2xdD/o1FNAfICscQlEH03KrcR6W0j288fDKqXea+LAUV4aWl950ki5nGf4Q==@vger.kernel.org
X-Gm-Message-State: AOJu0YzIGf34bmKp14ckHOp369PG2myupJRDHwu1L+4laDhpqmTa2xU3
LleIHp04P5i43sURSZdQhxLMknQSrtqZI94bHVevLMPCQ6mQoHfnrgJX
X-Gm-Gg: ASbGnctkJvBAuCGoLFpndVGQtuLCH/0kX/Uoo8iD5lNWZpj2uG6F+GQ8KrfMWJS8trY
VjQmdn+kndOlvM4D7rPj4MJTtz9XEiO6Sv4lZAKfP1ITJrkhgQboXHGfaRgGT20QstO73m9wYqi
7haDQItysgLxLsrE4U3LnrJO+ECHTm6n/qAhpiaUHsV2bctgKWL03QvGfvXbLbzU3JdHUria2I+
vmEfiYtlEhUHoF/QGpiLHzN+EzTJcb8irHpND7f4LNFZ/sB5ZSqsIHq+K/nnoaiVSd8CRiz+XHL
pxyoToxJLj2ls1p1flf467jlzSwfLRxywW7lR15TEUUhwtb2bO0uhAbwnVF59u6OoTgY
X-Google-Smtp-Source: AGHT+IH4bdi3OYNDTHdVm4xnXb+pj8+sjPoPMeiWoZcrBVF3ug78eCZfdPEAPO2VwBfn9D9DWnmPmA==
X-Received: by 2002:a05:6a00:814:b0:740:aa33:c6f8 with SMTP id d2e1a72fcca58-747d1835ccbmr3886256b3a.7.1748726052191;
Sat, 31 May 2025 14:14:12 -0700 (PDT)
Received: from khalid-HP-Notebook.. ([49.204.30.182])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747affaf9dasm5161824b3a.109.2025.05.31.14.14.09
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 14:14:11 -0700 (PDT)
From: khalid.datamax@xxxxxxxxx
To: sudipm.mukherjee@xxxxxxxxx
Cc: teddy.wang@xxxxxxxxxxxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx,
linux-fbdev@xxxxxxxxxxxxxxx,
linux-staging@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Khalid Faisal <khalid.datamax@xxxxxxxxx>
Subject: [PATCH 1/1] staging: sm750fb: convert CamelCase function names to snake_case
Date: Sun, 1 Jun 2025 02:41:03 +0530
Message-ID: <20250531211319.55682-3-khalid.datamax@xxxxxxxxx>
X-Mailer: git-send-email 2.43.0
In-Reply-To: <20250531211319.55682-1-khalid.datamax@xxxxxxxxx>
References: <20250531211319.55682-1-khalid.datamax@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Khalid Faisal <khalid.datamax@xxxxxxxxx>

This patch converts function names in the sm750fb driver from CamelCase to
snake_case to comply with Linux kernel coding style.

No functional changes.

Signed-off-by: Khalid Faisal <khalid.datamax@xxxxxxxxx>
---
drivers/staging/sm750fb/ddk750_dvi.c | 16 +++++------
drivers/staging/sm750fb/ddk750_sii164.c | 38 ++++++++++++-------------
drivers/staging/sm750fb/ddk750_sii164.h | 16 +++++------
3 files changed, 35 insertions(+), 35 deletions(-)

diff --git a/drivers/staging/sm750fb/ddk750_dvi.c b/drivers/staging/sm750fb/ddk750_dvi.c
index 8b81e8642..6fef1ab48 100644
--- a/drivers/staging/sm750fb/ddk750_dvi.c
+++ b/drivers/staging/sm750fb/ddk750_dvi.c
@@ -16,15 +16,15 @@ static struct dvi_ctrl_device dcft_supported_dvi_controller[] = {
{
.init = sii164_init_chip,
.get_vendor_id = sii164_get_vendor_id,
- .get_device_id = sii164GetDeviceID,
+ .get_device_id = sii164_get_device_id,
#ifdef SII164_FULL_FUNCTIONS
- .reset_chip = sii164ResetChip,
- .get_chip_string = sii164GetChipString,
- .set_power = sii164SetPower,
- .enable_hot_plug_detection = sii164EnableHotPlugDetection,
- .is_connected = sii164IsConnected,
- .check_interrupt = sii164CheckInterrupt,
- .clear_interrupt = sii164ClearInterrupt,
+ .reset_chip = sii164_reset_chip,
+ .get_chip_string = sii164_get_chip_string,
+ .set_power = sii164_set_power,
+ .enable_hot_plug_detection = sii164_enable_hot_plug_detection,
+ .is_connected = sii164_is_connected,
+ .check_interrupt = sii164_check_interrupt,
+ .clear_interrupt = sii164_clear_interrupt,
#endif
},
#endif
diff --git a/drivers/staging/sm750fb/ddk750_sii164.c b/drivers/staging/sm750fb/ddk750_sii164.c
index 2532b6024..d6bfd7c4e 100644
--- a/drivers/staging/sm750fb/ddk750_sii164.c
+++ b/drivers/staging/sm750fb/ddk750_sii164.c
@@ -48,13 +48,13 @@ unsigned short sii164_get_vendor_id(void)
}

/*
- * sii164GetDeviceID
+ * sii164_get_device_id
* This function gets the device ID of the DVI controller chip.
*
* Output:
* Device ID
*/
-unsigned short sii164GetDeviceID(void)
+unsigned short sii164_get_device_id(void)
{
unsigned short deviceID;

@@ -141,7 +141,7 @@ long sii164_init_chip(unsigned char edge_select,

/* Check if SII164 Chip exists */
if ((sii164_get_vendor_id() == SII164_VENDOR_ID) &&
- (sii164GetDeviceID() == SII164_DEVICE_ID)) {
+ (sii164_get_device_id() == SII164_DEVICE_ID)) {
/*
* Initialize SII164 controller chip.
*/
@@ -250,36 +250,36 @@ long sii164_init_chip(unsigned char edge_select,
#ifdef SII164_FULL_FUNCTIONS

/*
- * sii164ResetChip
+ * sii164_reset_chip
* This function resets the DVI Controller Chip.
*/
-void sii164ResetChip(void)
+void sii164_reset_chip(void)
{
/* Power down */
- sii164SetPower(0);
- sii164SetPower(1);
+ sii164_set_power(0);
+ sii164_set_power(1);
}

/*
- * sii164GetChipString
+ * sii164_get_chip_string
* This function returns a char string name of the current DVI Controller
* chip.
*
* It's convenient for application need to display the chip name.
*/
-char *sii164GetChipString(void)
+char *sii164_get_chip_string(void)
{
return gDviCtrlChipName;
}

/*
- * sii164SetPower
+ * sii164_set_power
* This function sets the power configuration of the DVI Controller Chip.
*
* Input:
* powerUp - Flag to set the power down or up
*/
-void sii164SetPower(unsigned char powerUp)
+void sii164_set_power(unsigned char powerUp)
{
unsigned char config;

@@ -329,12 +329,12 @@ void sii164SelectHotPlugDetectionMode(enum sii164_hot_plug_mode hotPlugMode)
}

/*
- * sii164EnableHotPlugDetection
+ * sii164_enable_hot_plug_detection
* This function enables the Hot Plug detection.
*
* enableHotPlug - Enable (=1) / disable (=0) Hot Plug detection
*/
-void sii164EnableHotPlugDetection(unsigned char enableHotPlug)
+void sii164_enable_hot_plug_detection(unsigned char enableHotPlug)
{
unsigned char detectReg;

@@ -350,14 +350,14 @@ void sii164EnableHotPlugDetection(unsigned char enableHotPlug)
}

/*
- * sii164IsConnected
+ * sii164_is_connected
* Check if the DVI Monitor is connected.
*
* Output:
* 0 - Not Connected
* 1 - Connected
*/
-unsigned char sii164IsConnected(void)
+unsigned char sii164_is_connected(void)
{
unsigned char hotPlugValue;

@@ -370,14 +370,14 @@ unsigned char sii164IsConnected(void)
}

/*
- * sii164CheckInterrupt
+ * sii164_check_interrupt
* Checks if interrupt has occurred.
*
* Output:
* 0 - No interrupt
* 1 - Interrupt occurs
*/
-unsigned char sii164CheckInterrupt(void)
+unsigned char sii164_check_interrupt(void)
{
unsigned char detectReg;

@@ -390,10 +390,10 @@ unsigned char sii164CheckInterrupt(void)
}

/*
- * sii164ClearInterrupt
+ * sii164_clear_interrupt
* Clear the hot plug interrupt.
*/
-void sii164ClearInterrupt(void)
+void sii164_clear_interrupt(void)
{
unsigned char detectReg;

diff --git a/drivers/staging/sm750fb/ddk750_sii164.h b/drivers/staging/sm750fb/ddk750_sii164.h
index 71a7c1cb4..005473ca2 100644
--- a/drivers/staging/sm750fb/ddk750_sii164.h
+++ b/drivers/staging/sm750fb/ddk750_sii164.h
@@ -28,16 +28,16 @@ long sii164_init_chip(unsigned char edgeSelect,
unsigned char pllFilterValue);

unsigned short sii164_get_vendor_id(void);
-unsigned short sii164GetDeviceID(void);
+unsigned short sii164_get_device_id(void);

#ifdef SII164_FULL_FUNCTIONS
-void sii164ResetChip(void);
-char *sii164GetChipString(void);
-void sii164SetPower(unsigned char powerUp);
-void sii164EnableHotPlugDetection(unsigned char enableHotPlug);
-unsigned char sii164IsConnected(void);
-unsigned char sii164CheckInterrupt(void);
-void sii164ClearInterrupt(void);
+void sii164_reset_chip(void);
+char *sii164_get_chip_string(void);
+void sii164_set_power(unsigned char powerUp);
+void sii164_enable_hot_plug_detection(unsigned char enableHotPlug);
+unsigned char sii164_is_connected(void);
+unsigned char sii164_check_interrupt(void);
+void sii164_clear_interrupt(void);
#endif
/*
* below register definition is used for
--
2.43.0



Return-Path: <linux-kernel+bounces-669244-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 90D1C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:15:25 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id C7D8C17D07E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:15:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E7D171B87F2;
Sat, 31 May 2025 21:15:18 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="KRKKc+Lk"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 2F1D417A2EA;
Sat, 31 May 2025 21:15:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726118; cv=none; b=Sk0ky1Z5C+qNqRA/69OAthWDbioD70diamZ5vfR19sO1Y0N3km36HFRdUgnFfx5yNbdIP7M6NI2LhoFfz3AjigijrIpC5hVIx/WSfygiEXkWTlWJZZSfFFE+9Q7IHovR4aaXUQXhv+2bcmS3HVvohj5CZEQcBgB77tfMOhx+4OY=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726118; c=relaxed/simple;
bh=Q5rcVhuBpXJo7qkt9JOzXELMMD/AGfv8ZVfFEfjj/dw=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=oQB3M4XDwFi2nCi86fIqLi1Qw4mUhbFL7tKVHzz67J7Ya96s5S7Q8YMWRH8wiZ8V4xV6DwFvOVGVZ/580CKVVABsCJATMTMHrsADP0rp0mVQZD7mkIjNVOGDB8gOV3XJPMzWHKyGK9pGXvbY/66X8qIBmlA47mGAhJJAdi3K0j8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=KRKKc+Lk; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6D41BC4CEE3;
Sat, 31 May 2025 21:15:17 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748726117;
bh=Q5rcVhuBpXJo7qkt9JOzXELMMD/AGfv8ZVfFEfjj/dw=;
h=From:To:Cc:Subject:Date:From;
b=KRKKc+Lkol+aT2oXR7Fz98BrBIORKBjN3a7S4t1c1WoCYLHM1MkRpR7RJs8IeZDWM
82GWCH3tfJdUp/Hje3LepR07DX8OQEQ77h1G7EKyL/UcAk+0laG/Z8EqoOjSoZPaJb
AtIbHCUHpi4I6YIfeXzSxfM6LCt+aNq07CnfIAWCZE4K0Pq6uG1T22E2q1y3n8Ssmf
B2VqhEwGucD5fuo8+OR7Ru+KhF9YzU4UE1FDio773eRg//np2Y1sjmjwTh/JoqG7rK
GCAIDAJOcWPz+61KSsPFof4GYkqbu4leMyZDGRTQq+vqIeF+eW/QrDYwzgdQ+v/rMp
XU3AbQImQjbOQ==
From: Eric Biggers <ebiggers@xxxxxxxxxx>
To: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-crypto@xxxxxxxxxxxxxxx,
Ard Biesheuvel <ardb@xxxxxxxxxx>,
Arnd Bergmann <arnd@xxxxxxxx>,
x86@xxxxxxxxxx
Subject: [PATCH] x86/crc: drop checks of CONFIG_AS_VPCLMULQDQ
Date: Sat, 31 May 2025 14:13:18 -0700
Message-ID: <20250531211318.83677-1-ebiggers@xxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

From: Eric Biggers <ebiggers@xxxxxxxxxx>

Now that the minimum binutils version supports VPCLMULQDQ (and the
minimum clang version does too), there is no need to check for assembler
support before compiling code that uses these instructions.

Signed-off-by: Eric Biggers <ebiggers@xxxxxxxxxx>
---

I'd be glad to apply this to the crc tree. Arnd, let me know if you'd
like to instead go with a patch that handles all of arch/x86/ at the
same time. That would be fine with me too.

arch/x86/lib/crc-pclmul-template.S | 7 -------
arch/x86/lib/crc-pclmul-template.h | 3 +--
2 files changed, 1 insertion(+), 9 deletions(-)

diff --git a/arch/x86/lib/crc-pclmul-template.S b/arch/x86/lib/crc-pclmul-template.S
index ae0b6144c503c..a02f7dc8053e0 100644
--- a/arch/x86/lib/crc-pclmul-template.S
+++ b/arch/x86/lib/crc-pclmul-template.S
@@ -559,11 +559,10 @@
pop CONSTS_PTR
#endif
RET
.endm

-#ifdef CONFIG_AS_VPCLMULQDQ
#define DEFINE_CRC_PCLMUL_FUNCS(prefix, bits, lsb) \
SYM_FUNC_START(prefix##_pclmul_sse); \
_crc_pclmul n=bits, lsb_crc=lsb, vl=16, avx_level=0; \
SYM_FUNC_END(prefix##_pclmul_sse); \
\
@@ -572,11 +571,5 @@ SYM_FUNC_START(prefix##_vpclmul_avx2); \
SYM_FUNC_END(prefix##_vpclmul_avx2); \
\
SYM_FUNC_START(prefix##_vpclmul_avx512); \
_crc_pclmul n=bits, lsb_crc=lsb, vl=64, avx_level=512; \
SYM_FUNC_END(prefix##_vpclmul_avx512);
-#else
-#define DEFINE_CRC_PCLMUL_FUNCS(prefix, bits, lsb) \
-SYM_FUNC_START(prefix##_pclmul_sse); \
- _crc_pclmul n=bits, lsb_crc=lsb, vl=16, avx_level=0; \
-SYM_FUNC_END(prefix##_pclmul_sse);
-#endif // !CONFIG_AS_VPCLMULQDQ
diff --git a/arch/x86/lib/crc-pclmul-template.h b/arch/x86/lib/crc-pclmul-template.h
index c5b3bfe11d8da..51cba520a7dbd 100644
--- a/arch/x86/lib/crc-pclmul-template.h
+++ b/arch/x86/lib/crc-pclmul-template.h
@@ -25,12 +25,11 @@ crc_t prefix##_vpclmul_avx512(crc_t crc, const u8 *p, size_t len, \
const void *consts_ptr); \
DEFINE_STATIC_CALL(prefix##_pclmul, prefix##_pclmul_sse)

#define INIT_CRC_PCLMUL(prefix) \
do { \
- if (IS_ENABLED(CONFIG_AS_VPCLMULQDQ) && \
- boot_cpu_has(X86_FEATURE_VPCLMULQDQ) && \
+ if (boot_cpu_has(X86_FEATURE_VPCLMULQDQ) && \
boot_cpu_has(X86_FEATURE_AVX2) && \
cpu_has_xfeatures(XFEATURE_MASK_YMM, NULL)) { \
if (boot_cpu_has(X86_FEATURE_AVX512BW) && \
boot_cpu_has(X86_FEATURE_AVX512VL) && \
!boot_cpu_has(X86_FEATURE_PREFER_YMM) && \
--
2.49.0



Return-Path: <linux-kernel+bounces-669245-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E4B2741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:20:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 18E5117C88D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:20:59 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B86B319E82A;
Sat, 31 May 2025 21:20:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ahKIfjdk"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.17])
(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 F3BA06FB9
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:20:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.17
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726450; cv=none; b=BetZDom74EEAe4HOCDJQFUyH37nvIdu++KTeSLbQgiF3OECtIbJoFA+NO1E0o5UHeI2n8DrQV6c/DAm/NlNuSn+ZSsxCpMcv4xMt2XwwBpW4mXBHEsqOzd7q+AgKrQVxtmCiNPubCGIsVtWjhxx6wCR47u9jb14RVudJnfZM4t0=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726450; c=relaxed/simple;
bh=G5YXIwlLDjGRJxHwe01wtnwMzWHJ20KeR6JUWXx31OE=;
h=Date:From:To:Cc:Subject:Message-ID; b=Lw8+S9Rbo4p1jnfpJMgQYwZKyImk66OWx6wlNZ5m6yl00wzi5/11o7sC0nZPRmxrE0aiQmUHRVi/u5tWhgfjBfX7Ng9e8LZg5Wfo0JzveQi2k2dvAEdlWdU3tFm5kupxMq2rOF/qlbQk+KUbW0AgXmP2nfMsI7qLp244A9p9u+0=
ARC-Authentication-Results:i=1; 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=ahKIfjdk; arc=none smtp.client-ip=198.175.65.17
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748726449; x=1780262449;
h=date:from:to:cc:subject:message-id;
bh=G5YXIwlLDjGRJxHwe01wtnwMzWHJ20KeR6JUWXx31OE=;
b=ahKIfjdkThBpCFtf7eZ9OpQYlnwELTAYYSk6FCM0OFnR66VMjkPky610
yL6OQLb8J16456IvFSTdX6JvDHNBnUZDqeYyVDZdnf3LGxDYJIsZLCJBL
JAcygyMoaWpuZOPRTMdZC4sW6iJ+9fMD0XAIVSL9EDYntWcUZ+5ySk/fq
nk5wTKKtlja98corP283sFsBcIQTxp9KDk/D55vUioKLoaZPSI5sOSQHK
vaBKuUz1ggs9gmn+zYrAXdVMAjwToINlh24bRfbsXz7RXiOKjVUmy9RnJ
rcDGdQ9v2yd6r/Sp+2dSqLmtKf7xHk12IIvC4lh6G1B0lKcZBVOv3WSpr
g==;
X-CSE-ConnectionGUID: 2tYFdyqRRJCYdFROY8hKAQ==
X-CSE-MsgGUID: lqCqbAseR0+QG7wmBBrS1Q==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50793300"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50793300"
Received: from orviesa009.jf.intel.com ([10.64.159.149])
by orvoesa109.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 14:20:49 -0700
X-CSE-ConnectionGUID: cpW+4vikRIKm14F0Nezu9g==
X-CSE-MsgGUID: 8MxI/afwQjynO3q9JHorIQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144210102"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa009.jf.intel.com with ESMTP; 31 May 2025 14:20:47 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLTdF-000Yea-1g;
Sat, 31 May 2025 21:20:45 +0000
Date: Sun, 01 Jun 2025 05:20:39 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: "x86-ml" <x86@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
Subject: [tip:perf/urgent] BUILD SUCCESS
86aa94cd50b138be0dd872b0779fa3036e641881
Message-ID: <202506010529.y1Ylf40v-lkp@xxxxxxxxx>
User-Agent: s-nail v14.9.24
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/urgent
branch HEAD: 86aa94cd50b138be0dd872b0779fa3036e641881 perf/x86/intel: Fix incorrect MSR index calculations in intel_pmu_config_acr()

elapsed time: 727m

configs tested: 20
configs skipped: 126

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
i386 allmodconfig gcc-12
i386 allnoconfig gcc-12
i386 allyesconfig gcc-12
i386 buildonly-randconfig-001-20250531 gcc-12
i386 buildonly-randconfig-002-20250531 gcc-12
i386 buildonly-randconfig-003-20250531 gcc-12
i386 buildonly-randconfig-004-20250531 clang-20
i386 buildonly-randconfig-005-20250531 clang-20
i386 buildonly-randconfig-006-20250531 clang-20
i386 defconfig clang-20
x86_64 allnoconfig clang-20
x86_64 allyesconfig clang-20
x86_64 buildonly-randconfig-001-20250531 clang-20
x86_64 buildonly-randconfig-002-20250531 gcc-12
x86_64 buildonly-randconfig-003-20250531 gcc-12
x86_64 buildonly-randconfig-004-20250531 gcc-12
x86_64 buildonly-randconfig-005-20250531 clang-20
x86_64 buildonly-randconfig-006-20250531 clang-20
x86_64 defconfig gcc-11
x86_64 rhel-9.4-rust clang-18

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669246-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E200C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:21:59 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 60FDA7A67A8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:20:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 592C819E992;
Sat, 31 May 2025 21:21:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="WVYw6Xq8"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
(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 3FBE36FB9
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:21:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726510; cv=none; b=nzEyVBHdHztW6Q5Wd9rf89VnchaHJo32lRmU1naFuUzQtA0kp1p7TBklk4DiguZOIAjwOy7wqBs8Zr6Goz/GZJirnu15BEt8JDHJfC8bhmlit8s/bJjcFDagSDA2bqK9mvoE9xmpp/QFwAf5SAwicucB8+mFkzchvvJPaqeSHPg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726510; c=relaxed/simple;
bh=59Oz3jBHy8ef2bql3qow+hVnktb/0FxpKrnBl9AWk1w=;
h=Date:From:To:Cc:Subject:Message-ID; b=heI/maDC+i8sIcdmDnYFgHXal2H+mBEia2D984MuzZ7jHm/dMNdYVLmkS1GDSt84xG5HUEtSEbVItk6D+AfYwsUNwUCsCf/cJph6CizEVuMK7Vuk8PrbTCgunfSdmZTOszmFe2xyvLWIGTku1uGYwz8t8OPz9lzrk7NTU+IAoFE=
ARC-Authentication-Results:i=1; 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=WVYw6Xq8; arc=none smtp.client-ip=192.198.163.14
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748726509; x=1780262509;
h=date:from:to:cc:subject:message-id;
bh=59Oz3jBHy8ef2bql3qow+hVnktb/0FxpKrnBl9AWk1w=;
b=WVYw6Xq8oug2KK3pVs38XEhmlwuxeKn6x1glqYjvr8QUZysvUrdsrqXS
AZ6illOzxgr+FKcdjUczK0rXWMriHIx1Ue6U0m8CZmveX98NWHLe5OR8L
g+mfg7xOBJM/2mSsV4VPlFtTevtBq93K9fdMzpNUcns5/LIHkw/qqqSXF
cDsv+8ORNxx4kWpOff6mKib/Za2zq9218U6nNdBWqEMd78TSbID1VBnAJ
OBMLOZ+O7VAXnmleR1+NsYhetiRPi8Bx1K5FCBC8EtLhjfedDpTLJmDp0
Uo2p3WccICORWUAruiVC8h9se5hhhVwqNmwWqcGyT6aA3ZGPv4qJLARfI
A==;
X-CSE-ConnectionGUID: s4xoE8x9SXGZd1bRB89Oxw==
X-CSE-MsgGUID: VY8jG/eUS5u1eT/vaLFcNg==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50888643"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50888643"
Received: from fmviesa002.fm.intel.com ([10.60.135.142])
by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 14:21:48 -0700
X-CSE-ConnectionGUID: VRKe6K6MRLWuFXv7N/OVyw==
X-CSE-MsgGUID: WsbY3RIhS/OeV/+6enY64g==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="167373871"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by fmviesa002.fm.intel.com with ESMTP; 31 May 2025 14:21:47 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLTeD-000Yee-1w;
Sat, 31 May 2025 21:21:45 +0000
Date: Sun, 01 Jun 2025 05:20:53 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: "x86-ml" <x86@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
Subject: [tip:master] BUILD SUCCESS
8858e8099446963ee6a0fb9f00f361dda52f04d5
Message-ID: <202506010543.AtpS8hEw-lkp@xxxxxxxxx>
User-Agent: s-nail v14.9.24
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git master
branch HEAD: 8858e8099446963ee6a0fb9f00f361dda52f04d5 Merge branch into tip/master: 'x86/sgx'

elapsed time: 727m

configs tested: 20
configs skipped: 126

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
i386 allmodconfig gcc-12
i386 allnoconfig gcc-12
i386 allyesconfig gcc-12
i386 buildonly-randconfig-001-20250531 gcc-12
i386 buildonly-randconfig-002-20250531 gcc-12
i386 buildonly-randconfig-003-20250531 gcc-12
i386 buildonly-randconfig-004-20250531 clang-20
i386 buildonly-randconfig-005-20250531 clang-20
i386 buildonly-randconfig-006-20250531 clang-20
i386 defconfig clang-20
x86_64 allnoconfig clang-20
x86_64 allyesconfig clang-20
x86_64 buildonly-randconfig-001-20250531 clang-20
x86_64 buildonly-randconfig-002-20250531 gcc-12
x86_64 buildonly-randconfig-003-20250531 gcc-12
x86_64 buildonly-randconfig-004-20250531 gcc-12
x86_64 buildonly-randconfig-005-20250531 clang-20
x86_64 buildonly-randconfig-006-20250531 clang-20
x86_64 defconfig gcc-11
x86_64 rhel-9.4-rust clang-18

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669247-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0F32241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:23:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 6D09C3B36A8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:23:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9EED51CBA18;
Sat, 31 May 2025 21:23:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="HYpWM+9h"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
(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 1CA10139D;
Sat, 31 May 2025 21:23:39 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726622; cv=none; b=qzrVwfT58vwMuH+RLiOmhILqk4P+9teqVRMyirW7sWOgsn4IVnEmjW6wzO3ZBuUEhxWJnxlyYY34uZtSlRSwffAuFAQWoNaymsyfXQOcJgBVJw3rhR+AjeuzNFB0MaUWaa406yv8cTXbADC/hRa3F7Zx62pPSy7B6z4vesyCQos=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726622; c=relaxed/simple;
bh=fO2IZVQirqF8M5hIKmy/1EuXz2JFWuUbdV/fET9QHAw=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=a8Av8fpTa/MzSnH0DNxk+6GetyS7YyHFPXUf+PnyXE/7LYfyC8/JHX8Jk0kuUGlrSvXK4U2x1phtQSvP8nSvPxG/X5dQ46Hp20QSx83VCsvqd4Cm5yIuIn7y5sLF5adMUQJntNQn8Q1YlUkFFO5yBdxrJSaYkuUqu3r8dLTNoZ0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=HYpWM+9h; arc=none smtp.client-ip=192.198.163.14
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748726620; x=1780262620;
h=from:to:cc:subject:date:message-id:in-reply-to:
references:mime-version:content-transfer-encoding;
bh=fO2IZVQirqF8M5hIKmy/1EuXz2JFWuUbdV/fET9QHAw=;
b=HYpWM+9hUHxq3+k9iD9ZkiRi/IHZn9YehmaX6gbBZPRkHZADbkSk4BXN
jsFDd5CG8luI3A2qYX9y/lTIiMxdlgcJSDIdgj+xoJm9/AGf1IeOv0SvO
xNree+gMWyhja/u8/TzrkMqlmmSOXa200ZU9auEk58dcOyg7uy2zyG7y/
nUgwy6meExqHhM17NAiB5WKBtffq16VWkdrWy/Ggt3ZHBqizj+DrS6Ncc
p+KYLjFdT1MYoN0q7SpkOg/pd4biHOC58NlqFvjglhvwdReIsSHbaSZHM
BU33NC+bzRNM6oV7iRTHSNA3ziS9sPvdhCru+Vycc21V7RpF2qNRsj1WA
w==;
X-CSE-ConnectionGUID: 47OBXVsmRemffl70hjOL/w==
X-CSE-MsgGUID: oxcQr4ZLS1eAuKN8T/CIPw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50888682"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50888682"
Received: from fmviesa007.fm.intel.com ([10.60.135.147])
by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 14:23:39 -0700
X-CSE-ConnectionGUID: VjJhx55BRL+5PD+MaTcO0g==
X-CSE-MsgGUID: 75ksBrGuTLeQXQQ0MVpOnA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144161858"
Received: from black.fi.intel.com ([10.237.72.28])
by fmviesa007.fm.intel.com with ESMTP; 31 May 2025 14:23:36 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id 6A46BAF; Sun, 01 Jun 2025 00:23:35 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>,
linux-doc@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-usb@xxxxxxxxxxxxxxx
Cc: Jonathan Corbet <corbet@xxxxxxx>,
Linus Walleij <linus.walleij@xxxxxxxxxx>,
Bartosz Golaszewski <brgl@xxxxxxxx>,
Daniel Mack <daniel@xxxxxxxxxx>,
Haojian Zhuang <haojian.zhuang@xxxxxxxxx>,
Robert Jarzmik <robert.jarzmik@xxxxxxx>,
Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Subject: [PATCH v1 1/2] usb: gadget: pxa25x_udc: Switch to use devm_gpio_request_one()
Date: Sun, 1 Jun 2025 00:21:38 +0300
Message-ID: <20250531212331.3635269-2-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
In-Reply-To: <20250531212331.3635269-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
References: <20250531212331.3635269-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

devm_gpio_request() is going to be removed. This driver is only user of that
API. Convert it to use different API.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
drivers/usb/gadget/udc/pxa25x_udc.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/usb/gadget/udc/pxa25x_udc.c b/drivers/usb/gadget/udc/pxa25x_udc.c
index 24eb1ae78e45..366abdab095c 100644
--- a/drivers/usb/gadget/udc/pxa25x_udc.c
+++ b/drivers/usb/gadget/udc/pxa25x_udc.c
@@ -2348,15 +2348,14 @@ static int pxa25x_udc_probe(struct platform_device *pdev)
dev->transceiver = devm_usb_get_phy(&pdev->dev, USB_PHY_TYPE_USB2);

if (gpio_is_valid(dev->mach->gpio_pullup)) {
- retval = devm_gpio_request(&pdev->dev, dev->mach->gpio_pullup,
- "pca25x_udc GPIO PULLUP");
+ retval = devm_gpio_request_one(&pdev->dev, dev->mach->gpio_pullup,
+ GPIOF_OUT_INIT_LOW, "pca25x_udc GPIO PULLUP");
if (retval) {
dev_dbg(&pdev->dev,
"can't get pullup gpio %d, err: %d\n",
dev->mach->gpio_pullup, retval);
goto err;
}
- gpio_direction_output(dev->mach->gpio_pullup, 0);
}

timer_setup(&dev->timer, udc_watchdog, 0);
--
2.47.2



Return-Path: <linux-kernel+bounces-669248-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0EC8A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:24:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 0ED93189B424
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:24:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D06861E3DEF;
Sat, 31 May 2025 21:23:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="BFRcL7Uy"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14])
(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 26DB91B21AD;
Sat, 31 May 2025 21:23:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726624; cv=none; b=kdnQqIIbk6gLUit7eosH8GU+Hg1wLjy+t+4OdOxWIe2BQsZ64hWkcA/ElAN8ljaSBTKV36Dg64XgSswtsOc+in74UF8NoRkKWrGn1jdVk60LgzUObeM6RxKKehb8b21Dv6/XyCnyVbYSo8PfMhjX1MCdgELhoQg9XdmwF1RnJSw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726624; c=relaxed/simple;
bh=y122ltxUGKIzJOFeENdMTmUh/wFoa8nCfcCmKphjWq0=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version; b=NpeKhsEe2bVPtuE2hw1/sonHjYsKvr1vVcL4Lme2NrmQua2NUZkLuEchwICREDJrSkiD0WUwJ3n4Wq+MgPEpMNiLBN8pP5SlYPKqgnyVDDY80+/Pxa9QLFaCpt6tLgdwVzLEs7OCzzKghNtEf7KdPAz/aH8ofwmVFJWDPUN2hK0=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=BFRcL7Uy; arc=none smtp.client-ip=192.198.163.14
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748726622; x=1780262622;
h=from:to:cc:subject:date:message-id:in-reply-to:
references:mime-version:content-transfer-encoding;
bh=y122ltxUGKIzJOFeENdMTmUh/wFoa8nCfcCmKphjWq0=;
b=BFRcL7Uy7YU4pAJbTP8X+7KE7iB80dBFOPMHIK8k/V/vddFfiyfUPxc6
caUYlid4acS0Nfk4/JVK78AoXE8FV/dhtUAIMhYyHle06Lojzt6tM6fTj
5dmJrVdaWe9yIE53kt83HNqjmRuIKmjFilzaWBe0HTlaf8bV1YP0K8Yhm
zparau/lu3EF3deSWfiEXfUBsJw3snVz9ZzyEeAB7JuOBfvcStiZoM1Jt
msrWHGu8Ir8ecmRBMQ7oBleHgZjjlyAWzHgEU/7kweUHr7kEgUF9k2uQP
Pu3ko77phJLD9oBzy4F2pqEfTm7q1AbZkYB29R+wCRMWjdOS64+K34sxG
w==;
X-CSE-ConnectionGUID: JG0ze4hYRP20MDiZCTqUGg==
X-CSE-MsgGUID: QMX80LSsSwaT92XBvosscQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50888690"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50888690"
Received: from fmviesa007.fm.intel.com ([10.60.135.147])
by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 14:23:40 -0700
X-CSE-ConnectionGUID: JpjkgCHwTOS5zMHoRV4AmA==
X-CSE-MsgGUID: UovtZcQkTSKC9JT6DzCvjw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144161859"
Received: from black.fi.intel.com ([10.237.72.28])
by fmviesa007.fm.intel.com with ESMTP; 31 May 2025 14:23:36 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id 781FF2E5; Sun, 01 Jun 2025 00:23:35 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>,
linux-doc@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-usb@xxxxxxxxxxxxxxx
Cc: Jonathan Corbet <corbet@xxxxxxx>,
Linus Walleij <linus.walleij@xxxxxxxxxx>,
Bartosz Golaszewski <brgl@xxxxxxxx>,
Daniel Mack <daniel@xxxxxxxxxx>,
Haojian Zhuang <haojian.zhuang@xxxxxxxxx>,
Robert Jarzmik <robert.jarzmik@xxxxxxx>,
Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Subject: [PATCH v1 2/2] gpiolib: Remove unused devm_gpio_request()
Date: Sun, 1 Jun 2025 00:21:39 +0300
Message-ID: <20250531212331.3635269-3-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
In-Reply-To: <20250531212331.3635269-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
References: <20250531212331.3635269-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

No users.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
.../driver-api/driver-model/devres.rst | 1 -
drivers/gpio/gpiolib-legacy.c | 38 -------------------
include/linux/gpio.h | 8 ----
3 files changed, 47 deletions(-)

diff --git a/Documentation/driver-api/driver-model/devres.rst b/Documentation/driver-api/driver-model/devres.rst
index 3d56f94ac2ee..2b36ebde9cec 100644
--- a/Documentation/driver-api/driver-model/devres.rst
+++ b/Documentation/driver-api/driver-model/devres.rst
@@ -275,7 +275,6 @@ GPIO
devm_gpiod_put()
devm_gpiod_unhinge()
devm_gpiochip_add_data()
- devm_gpio_request()
devm_gpio_request_one()

I2C
diff --git a/drivers/gpio/gpiolib-legacy.c b/drivers/gpio/gpiolib-legacy.c
index aeae6df8bec9..3bc93ccadb5b 100644
--- a/drivers/gpio/gpiolib-legacy.c
+++ b/drivers/gpio/gpiolib-legacy.c
@@ -85,44 +85,6 @@ static void devm_gpio_release(struct device *dev, void *res)
gpio_free(*gpio);
}

-/**
- * devm_gpio_request - request a GPIO for a managed device
- * @dev: device to request the GPIO for
- * @gpio: GPIO to allocate
- * @label: the name of the requested GPIO
- *
- * Except for the extra @dev argument, this function takes the
- * same arguments and performs the same function as gpio_request().
- * GPIOs requested with this function will be automatically freed
- * on driver detach.
- *
- * **DEPRECATED** This function is deprecated and must not be used in new code.
- *
- * Returns:
- * 0 on success, or negative errno on failure.
- */
-int devm_gpio_request(struct device *dev, unsigned gpio, const char *label)
-{
- unsigned *dr;
- int rc;
-
- dr = devres_alloc(devm_gpio_release, sizeof(unsigned), GFP_KERNEL);
- if (!dr)
- return -ENOMEM;
-
- rc = gpio_request(gpio, label);
- if (rc) {
- devres_free(dr);
- return rc;
- }
-
- *dr = gpio;
- devres_add(dev, dr);
-
- return 0;
-}
-EXPORT_SYMBOL_GPL(devm_gpio_request);
-
/**
* devm_gpio_request_one - request a single GPIO with initial setup
* @dev: device to request for
diff --git a/include/linux/gpio.h b/include/linux/gpio.h
index d105a207eaa2..ff99ed76fdc3 100644
--- a/include/linux/gpio.h
+++ b/include/linux/gpio.h
@@ -85,7 +85,6 @@ static inline int gpio_to_irq(unsigned gpio)

int gpio_request_one(unsigned gpio, unsigned long flags, const char *label);

-int devm_gpio_request(struct device *dev, unsigned gpio, const char *label);
int devm_gpio_request_one(struct device *dev, unsigned gpio,
unsigned long flags, const char *label);

@@ -163,13 +162,6 @@ static inline int gpio_to_irq(unsigned gpio)
return -EINVAL;
}

-static inline int devm_gpio_request(struct device *dev, unsigned gpio,
- const char *label)
-{
- WARN_ON(1);
- return -EINVAL;
-}
-
static inline int devm_gpio_request_one(struct device *dev, unsigned gpio,
unsigned long flags, const char *label)
{
--
2.47.2



Return-Path: <linux-kernel+bounces-669249-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CE7B941E003FB
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:24:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3FBF4189B55E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:24:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id DFF1A1E51F1;
Sat, 31 May 2025 21:23:44 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="X/xA0RzE"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18])
(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 A45761CCEE0;
Sat, 31 May 2025 21:23:42 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.18
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726624; cv=none; b=apkNlaO8zfhGcNSm/wxfL33E3ZDFpECb1lLF6NILzGLFqHG5Xy2NVC/L3ks8vJLZs/cQKfCWyrX5sY6WVYmW0qHqMVVAz/y1N6RSsMR11U86vJF+Bey8vad6HVfzISdLxIhsIxS4noxIGovXu4jthl//oU+9pMVo1gAGA/79mxo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726624; c=relaxed/simple;
bh=409EzBnRZl7HCyBHlkiarMMZ5YH45JJDUcocJR01ODQ=;
h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=TbTV0wJ+y2b9k1mANr1/8B9r26X4dAhOvbkaZlr9XiVAGJ2eJxApXUGtdzMgYwclbQsTYN0+BaBQPP2lhK1zns8JABMyzE6l2f7FrScKLvuG/Bkol1N+T1SZ+1RWOYNOVYKO/SfD7HkYP8bUX3uH/wZrGvvMuzFMk+CONTW2NDY=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com; spf=none smtp.mailfrom=linux.intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=X/xA0RzE; arc=none smtp.client-ip=198.175.65.18
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748726623; x=1780262623;
h=from:to:cc:subject:date:message-id:mime-version:
content-transfer-encoding;
bh=409EzBnRZl7HCyBHlkiarMMZ5YH45JJDUcocJR01ODQ=;
b=X/xA0RzEI10RUYQ078TJdEz2Io7ifskaMfqLjyUFbSJAdGkBNvNCu1+U
zpmpJm6yXmVlba4Wnh8s0rKm/hvTYoxkuyVzdtGb8celu7rW/eL26zXfZ
T540PObBmyYOQR/Zb1ov9Bz5gJpAlkct5ISf/kM8h6hGkBBvwGY7YTlYj
RKZbPxzn/Desi0P1N4mRMViuBPSKfhifE36SaMNJk/iDRE7R/9QWDTMVr
eZypr2YZgBUD6M9Os7N6o9ukudMsykIArtuEQd4fAQSAlsPUVrySKE+km
9g66vyve2X0MK7kjTkcjCGFL+RPT+5GwDCBQD4ewcXiVSUHyAIDQbuzfx
A==;
X-CSE-ConnectionGUID: jGaLmwAxRIuj75g691nbUA==
X-CSE-MsgGUID: jOrC6kBURKai5muZb9QXaA==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50941383"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50941383"
Received: from orviesa005.jf.intel.com ([10.64.159.145])
by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 14:23:42 -0700
X-CSE-ConnectionGUID: btzh5O+XQRClxfZzyVkLNg==
X-CSE-MsgGUID: SmPlBnKISje07NJUeixbHQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="149465595"
Received: from black.fi.intel.com ([10.237.72.28])
by orviesa005.jf.intel.com with ESMTP; 31 May 2025 14:23:38 -0700
Received: by black.fi.intel.com (Postfix, from userid 1003)
id 5CA72202; Sun, 01 Jun 2025 00:23:35 +0300 (EEST)
From: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
To: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>,
Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>,
linux-doc@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
linux-gpio@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx,
linux-usb@xxxxxxxxxxxxxxx
Cc: Jonathan Corbet <corbet@xxxxxxx>,
Linus Walleij <linus.walleij@xxxxxxxxxx>,
Bartosz Golaszewski <brgl@xxxxxxxx>,
Daniel Mack <daniel@xxxxxxxxxx>,
Haojian Zhuang <haojian.zhuang@xxxxxxxxx>,
Robert Jarzmik <robert.jarzmik@xxxxxxx>,
Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
Subject: [PATCH v1 0/2] gpiolib: get rid of devm_gpio_request()
Date: Sun, 1 Jun 2025 00:21:37 +0300
Message-ID: <20250531212331.3635269-1-andriy.shevchenko@xxxxxxxxxxxxxxx>
X-Mailer: git-send-email 2.47.2
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-6.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

devm_gpio_request() is used by a single driver. Replace it there and
kill the legacy API. Assumed to be routed via GPIO tree.

Andy Shevchenko (2):
usb: gadget: pxa25x_udc: Switch to use devm_gpio_request_one()
gpiolib: Remove unused devm_gpio_request()

.../driver-api/driver-model/devres.rst | 1 -
drivers/gpio/gpiolib-legacy.c | 38 -------------------
drivers/usb/gadget/udc/pxa25x_udc.c | 5 +--
include/linux/gpio.h | 8 ----
4 files changed, 2 insertions(+), 50 deletions(-)

--
2.47.2



Return-Path: <linux-kernel+bounces-669250-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2D0DD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:29:05 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 074B5189BDC8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:29:18 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3695F1D5ADE;
Sat, 31 May 2025 21:28:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="ebd5WF1Y"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7])
(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 92C401C5D77
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:28:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.7
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748726933; cv=none; b=PcOuGesnB/YOJ2HUeK17lD1cPIawPnubL4/4AIvJzsiHkGNDYxHm4sl1SyuBJQQicHsml/MkgTnKO6yd2H7C57YGadiqJe60D5OfijIWKmji/Zv86GZlshkesDVV7bWVE16LS8Jdexq4wckBjkR+z7bwR0pd+yHx6sksJFOYxIk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748726933; c=relaxed/simple;
bh=WMk8N9cpHhXWxtSwtp3eC6IsRUq10cpfS5Jz3CcZvfw=;
h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type:
Content-Disposition; b=QbAGpiTm0swxeD7lV1uVVejf2dm8luc25guPBNeasxPqK8EpldOM0hmXB7xiXDkBHh9OfInO82hK9Lspgx/EWqiQPOoRnpxGmvc/Hxmu9GoHCplkjz34Cy1tdXmI5BW5sM1JKcmBVKjX17vwTYvFka4F6b1atncDQbmvYdL0RgM=
ARC-Authentication-Results:i=1; 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=ebd5WF1Y; arc=none smtp.client-ip=192.198.163.7
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748726932; x=1780262932;
h=date:from:to:cc:subject:message-id:mime-version;
bh=WMk8N9cpHhXWxtSwtp3eC6IsRUq10cpfS5Jz3CcZvfw=;
b=ebd5WF1YpANOHWARCT23i8Thhglm88AthJsM3w0UO2ihbNwEWV4T19nQ
xdzVM9T56NEiNzg+iffVhCbgD9S5r3IdUEgFVASKyrNZpfcXweyqPWPbq
34WmThAPBI8g0jiDjKOlBdRqDZ/riPYs8D4lf5oH80FjRhwzB5Vn+0T2I
541kYYXt+HCquITOUQCIvauLe/ytkIzrtJHXA8Eg8cyU4fHJpIuIODuyy
iGw9fBLkYviWpNWe8yDQj/XdJd4kERHkgHtoFt98qqQpxo48pJa3jgaJY
m2p8ioa2ridvGn54+FpcNjJlqYr9Mq7d6ixTLzZwhKTBz0+NiFw+UecxH
A==;
X-CSE-ConnectionGUID: LrK0GJAcSG2BGQ2rvDzumw==
X-CSE-MsgGUID: ZMLOGg1DRnSMXMJMSjUoPQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="76176177"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="76176177"
Received: from orviesa010.jf.intel.com ([10.64.159.150])
by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 14:28:51 -0700
X-CSE-ConnectionGUID: xvkglJUHQQyvkb+Qi6stMA==
X-CSE-MsgGUID: RkKYKleJSF2Ra9FxpgdZjA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144153833"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa010.jf.intel.com with ESMTP; 31 May 2025 14:28:48 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLTl0-000Yes-07;
Sat, 31 May 2025 21:28:46 +0000
Date: Sun, 1 Jun 2025 05:27:50 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Niklas Schnelle <schnelle@xxxxxxxxxxxxx>
Cc: oe-kbuild-all@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Arnd Bergmann <arnd@xxxxxxxx>, Takashi Iwai <tiwai@xxxxxxx>,
Ville =?iso-8859-1?Q?Syrj=E4l=E4?= <ville.syrjala@xxxxxxxxxxxxxxx>,
Jarkko Sakkinen <jarkko@xxxxxxxxxx>
Subject: include/asm-generic/io.h:733:14: error: call to 'insw' declared with
attribute error: insw() requires HAS_IOPORT
Message-ID: <202506010518.J3CbysGR-lkp@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Niklas,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4cb6c8af8591135ec000fbe4bb474139ceec595d
commit: 6f043e75744596968b6547c4bd43e4d30bbb6d6e asm-generic/io.h: Remove I/O port accessors for HAS_IOPORT=n
date: 7 months ago
config: m68k-randconfig-r113-20250601 (https://download.01.org/0day-ci/archive/20250601/202506010518.J3CbysGR-lkp@xxxxxxxxx/config)
compiler: m68k-linux-gcc (GCC) 10.5.0
reproduce: (https://download.01.org/0day-ci/archive/20250601/202506010518.J3CbysGR-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506010518.J3CbysGR-lkp@xxxxxxxxx/

All errors (new ones prefixed by >>):

| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:141:19: note: in expansion of macro 'ei_outb'
141 | #define ei_outb_p ei_outb
| ^~~~~~~
drivers/net/ethernet/8390/lib8390.c:404:2: note: in expansion of macro 'ei_outb_p'
404 | ei_outb_p(ENISR_ALL, e8390_base + EN0_IMR);
| ^~~~~~~~~
drivers/net/ethernet/8390/mcf8390.c: In function 'mcf8390_get_8390_hdr':
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:201:2: note: in expansion of macro 'ei_outb'
201 | ei_outb(E8390_NODMA + E8390_PAGE0 + E8390_START, addr + NE_CMD);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:202:2: note: in expansion of macro 'ei_outb'
202 | ei_outb(ENISR_RDC, addr + NE_EN0_ISR);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:203:2: note: in expansion of macro 'ei_outb'
203 | ei_outb(sizeof(struct e8390_pkt_hdr), addr + NE_EN0_RCNTLO);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:204:2: note: in expansion of macro 'ei_outb'
204 | ei_outb(0, addr + NE_EN0_RCNTHI);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:205:2: note: in expansion of macro 'ei_outb'
205 | ei_outb(0, addr + NE_EN0_RSARLO); /* On page boundary */
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:206:2: note: in expansion of macro 'ei_outb'
206 | ei_outb(ring_page, addr + NE_EN0_RSARHI);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:207:2: note: in expansion of macro 'ei_outb'
207 | ei_outb(E8390_RREAD + E8390_START, addr + NE_CMD);
| ^~~~~~~
In file included from arch/m68k/include/asm/io.h:14,
from include/linux/io.h:14,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:17,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:11,
from include/linux/highmem.h:12,
from include/linux/bvec.h:10,
from include/linux/skbuff.h:17,
from include/net/net_namespace.h:43,
from include/linux/netdevice.h:38,
from drivers/net/ethernet/8390/mcf8390.c:15:
>> include/asm-generic/io.h:733:14: error: call to 'insw' declared with attribute error: insw() requires HAS_IOPORT
733 | #define insw insw
drivers/net/ethernet/8390/mcf8390.c:134:18: note: in expansion of macro 'insw'
134 | #define ei_insw insw
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:209:2: note: in expansion of macro 'ei_insw'
209 | ei_insw(addr + NE_DATAPORT, hdr, sizeof(struct e8390_pkt_hdr) >> 1);
| ^~~~~~~
In file included from arch/m68k/include/asm/io.h:14,
from include/linux/io.h:14,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:17,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:11,
from include/linux/highmem.h:12,
from include/linux/bvec.h:10,
from include/linux/skbuff.h:17,
from include/net/net_namespace.h:43,
from include/linux/netdevice.h:38,
from drivers/net/ethernet/8390/mcf8390.c:15:
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:211:2: note: in expansion of macro 'outb'
211 | outb(ENISR_RDC, addr + NE_EN0_ISR); /* Ack intr */
| ^~~~
drivers/net/ethernet/8390/mcf8390.c: In function 'mcf8390_block_input':
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:237:2: note: in expansion of macro 'ei_outb'
237 | ei_outb(E8390_NODMA + E8390_PAGE0 + E8390_START, addr + NE_CMD);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:238:2: note: in expansion of macro 'ei_outb'
238 | ei_outb(ENISR_RDC, addr + NE_EN0_ISR);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:239:2: note: in expansion of macro 'ei_outb'
239 | ei_outb(count & 0xff, addr + NE_EN0_RCNTLO);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:240:2: note: in expansion of macro 'ei_outb'
240 | ei_outb(count >> 8, addr + NE_EN0_RCNTHI);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:241:2: note: in expansion of macro 'ei_outb'
241 | ei_outb(ring_offset & 0xff, addr + NE_EN0_RSARLO);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:242:2: note: in expansion of macro 'ei_outb'
242 | ei_outb(ring_offset >> 8, addr + NE_EN0_RSARHI);
| ^~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:243:2: note: in expansion of macro 'ei_outb'
243 | ei_outb(E8390_RREAD + E8390_START, addr + NE_CMD);
| ^~~~~~~
In file included from arch/m68k/include/asm/io.h:14,
from include/linux/io.h:14,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:17,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:11,
from include/linux/highmem.h:12,
from include/linux/bvec.h:10,
from include/linux/skbuff.h:17,
from include/net/net_namespace.h:43,
from include/linux/netdevice.h:38,
from drivers/net/ethernet/8390/mcf8390.c:15:
>> include/asm-generic/io.h:733:14: error: call to 'insw' declared with attribute error: insw() requires HAS_IOPORT
733 | #define insw insw
drivers/net/ethernet/8390/mcf8390.c:134:18: note: in expansion of macro 'insw'
134 | #define ei_insw insw
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:245:2: note: in expansion of macro 'ei_insw'
245 | ei_insw(addr + NE_DATAPORT, buf, count >> 1);
| ^~~~~~~
In file included from arch/m68k/include/asm/io.h:14,
from include/linux/io.h:14,
from include/linux/irq.h:20,
from include/asm-generic/hardirq.h:17,
from ./arch/m68k/include/generated/asm/hardirq.h:1,
from include/linux/hardirq.h:11,
from include/linux/highmem.h:12,
from include/linux/bvec.h:10,
from include/linux/skbuff.h:17,
from include/net/net_namespace.h:43,
from include/linux/netdevice.h:38,
from drivers/net/ethernet/8390/mcf8390.c:15:
include/asm-generic/io.h:542:14: error: call to '_inb' declared with attribute error: inb()) requires CONFIG_HAS_IOPORT
542 | #define _inb _inb
include/asm-generic/io.h:643:13: note: in expansion of macro '_inb'
643 | #define inb _inb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:131:17: note: in expansion of macro 'inb'
131 | #define ei_inb inb
| ^~~
drivers/net/ethernet/8390/mcf8390.c:247:20: note: in expansion of macro 'ei_inb'
247 | buf[count - 1] = ei_inb(addr + NE_DATAPORT);
| ^~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:249:2: note: in expansion of macro 'ei_outb'
249 | ei_outb(ENISR_RDC, addr + NE_EN0_ISR); /* Ack intr */
| ^~~~~~~
drivers/net/ethernet/8390/lib8390.c: In function '__NS8390_init':
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:141:19: note: in expansion of macro 'ei_outb'
141 | #define ei_outb_p ei_outb
| ^~~~~~~
drivers/net/ethernet/8390/lib8390.c:1025:2: note: in expansion of macro 'ei_outb_p'
1025 | ei_outb_p(E8390_NODMA+E8390_PAGE0+E8390_STOP, e8390_base+E8390_CMD); /* 0x21 */
| ^~~~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:141:19: note: in expansion of macro 'ei_outb'
141 | #define ei_outb_p ei_outb
| ^~~~~~~
drivers/net/ethernet/8390/lib8390.c:1026:2: note: in expansion of macro 'ei_outb_p'
1026 | ei_outb_p(endcfg, e8390_base + EN0_DCFG); /* 0x48 or 0x49 */
| ^~~~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:141:19: note: in expansion of macro 'ei_outb'
141 | #define ei_outb_p ei_outb
| ^~~~~~~
drivers/net/ethernet/8390/lib8390.c:1028:2: note: in expansion of macro 'ei_outb_p'
1028 | ei_outb_p(0x00, e8390_base + EN0_RCNTLO);
| ^~~~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
include/asm-generic/io.h:655:14: note: in expansion of macro '_outb'
655 | #define outb _outb
| ^~~~~
drivers/net/ethernet/8390/mcf8390.c:132:18: note: in expansion of macro 'outb'
132 | #define ei_outb outb
| ^~~~
drivers/net/ethernet/8390/mcf8390.c:141:19: note: in expansion of macro 'ei_outb'
141 | #define ei_outb_p ei_outb
| ^~~~~~~
drivers/net/ethernet/8390/lib8390.c:1029:2: note: in expansion of macro 'ei_outb_p'
1029 | ei_outb_p(0x00, e8390_base + EN0_RCNTHI);
| ^~~~~~~~~
include/asm-generic/io.h:596:15: error: call to '_outb' declared with attribute error: outb() requires CONFIG_HAS_IOPORT
596 | #define _outb _outb
..


vim +/insw +733 include/asm-generic/io.h

9ab3a7a0d2b417 Thierry Reding 2014-07-04 731
9ab3a7a0d2b417 Thierry Reding 2014-07-04 732 #ifndef insw
9ab3a7a0d2b417 Thierry Reding 2014-07-04 @733 #define insw insw
6f043e75744596 Niklas Schnelle 2024-10-24 734 #ifdef CONFIG_HAS_IOPORT
9ab3a7a0d2b417 Thierry Reding 2014-07-04 735 static inline void insw(unsigned long addr, void *buffer, unsigned int count)
9ab3a7a0d2b417 Thierry Reding 2014-07-04 736 {
9ab3a7a0d2b417 Thierry Reding 2014-07-04 737 readsw(PCI_IOBASE + addr, buffer, count);
9ab3a7a0d2b417 Thierry Reding 2014-07-04 738 }
6f043e75744596 Niklas Schnelle 2024-10-24 739 #else
6f043e75744596 Niklas Schnelle 2024-10-24 740 void insw(unsigned long addr, void *buffer, unsigned int count)
6f043e75744596 Niklas Schnelle 2024-10-24 741 __compiletime_error("insw() requires HAS_IOPORT");
6f043e75744596 Niklas Schnelle 2024-10-24 742 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 743 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 744
9ab3a7a0d2b417 Thierry Reding 2014-07-04 745 #ifndef insl
9ab3a7a0d2b417 Thierry Reding 2014-07-04 746 #define insl insl
6f043e75744596 Niklas Schnelle 2024-10-24 747 #ifdef CONFIG_HAS_IOPORT
9ab3a7a0d2b417 Thierry Reding 2014-07-04 748 static inline void insl(unsigned long addr, void *buffer, unsigned int count)
9ab3a7a0d2b417 Thierry Reding 2014-07-04 749 {
9ab3a7a0d2b417 Thierry Reding 2014-07-04 750 readsl(PCI_IOBASE + addr, buffer, count);
9ab3a7a0d2b417 Thierry Reding 2014-07-04 751 }
6f043e75744596 Niklas Schnelle 2024-10-24 752 #else
6f043e75744596 Niklas Schnelle 2024-10-24 753 void insl(unsigned long addr, void *buffer, unsigned int count)
6f043e75744596 Niklas Schnelle 2024-10-24 754 __compiletime_error("insl() requires HAS_IOPORT");
6f043e75744596 Niklas Schnelle 2024-10-24 755 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 756 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 757
9ab3a7a0d2b417 Thierry Reding 2014-07-04 758 #ifndef outsb
9ab3a7a0d2b417 Thierry Reding 2014-07-04 759 #define outsb outsb
6f043e75744596 Niklas Schnelle 2024-10-24 760 #ifdef CONFIG_HAS_IOPORT
9ab3a7a0d2b417 Thierry Reding 2014-07-04 761 static inline void outsb(unsigned long addr, const void *buffer,
9ab3a7a0d2b417 Thierry Reding 2014-07-04 762 unsigned int count)
9ab3a7a0d2b417 Thierry Reding 2014-07-04 763 {
9ab3a7a0d2b417 Thierry Reding 2014-07-04 764 writesb(PCI_IOBASE + addr, buffer, count);
9ab3a7a0d2b417 Thierry Reding 2014-07-04 765 }
6f043e75744596 Niklas Schnelle 2024-10-24 766 #else
6f043e75744596 Niklas Schnelle 2024-10-24 767 void outsb(unsigned long addr, const void *buffer, unsigned int count)
6f043e75744596 Niklas Schnelle 2024-10-24 768 __compiletime_error("outsb() requires HAS_IOPORT");
6f043e75744596 Niklas Schnelle 2024-10-24 769 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 770 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 771
9ab3a7a0d2b417 Thierry Reding 2014-07-04 772 #ifndef outsw
9ab3a7a0d2b417 Thierry Reding 2014-07-04 @773 #define outsw outsw
6f043e75744596 Niklas Schnelle 2024-10-24 774 #ifdef CONFIG_HAS_IOPORT
9ab3a7a0d2b417 Thierry Reding 2014-07-04 775 static inline void outsw(unsigned long addr, const void *buffer,
9ab3a7a0d2b417 Thierry Reding 2014-07-04 776 unsigned int count)
9ab3a7a0d2b417 Thierry Reding 2014-07-04 777 {
9ab3a7a0d2b417 Thierry Reding 2014-07-04 778 writesw(PCI_IOBASE + addr, buffer, count);
9ab3a7a0d2b417 Thierry Reding 2014-07-04 779 }
6f043e75744596 Niklas Schnelle 2024-10-24 780 #else
6f043e75744596 Niklas Schnelle 2024-10-24 781 void outsw(unsigned long addr, const void *buffer, unsigned int count)
6f043e75744596 Niklas Schnelle 2024-10-24 782 __compiletime_error("outsw() requires HAS_IOPORT");
6f043e75744596 Niklas Schnelle 2024-10-24 783 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 784 #endif
9ab3a7a0d2b417 Thierry Reding 2014-07-04 785

:::::: The code at line 733 was first introduced by commit
:::::: 9ab3a7a0d2b417773e8e8a880fc3a69f7fc1f57a asm-generic/io.h: Implement generic {read,write}s*()

:::::: TO: Thierry Reding <treding@xxxxxxxxxx>
:::::: CC: Thierry Reding <treding@xxxxxxxxxx>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669251-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6051A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:36:55 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 61A213A9861
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:36:32 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id AFC021B4223;
Sat, 31 May 2025 21:36:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=linux.org.uk header.i=@linux.org.uk header.b="ljrCHpJg"
Received: from zeniv.linux.org.uk (zeniv.linux.org.uk [62.89.141.173])
(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 AC38C2EB1D
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:36:45 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.89.141.173
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748727407; cv=none; b=AGWGVlG+JhRy/LM9QKdoe66pi5bt3/SSbXF1jfRedrokjAyGFeqC9+3UBIvguewakmthDZkXbMVKjN1sFg8Q5iVGPeUPm7JwGPrubrOOCn+UTuJzuKG7LPuLQcV0IZkCDaW6Z3gyCbgmfFYPV/JWMpOzTnTu2F9b3SgG+Ehm5wc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748727407; c=relaxed/simple;
bh=hwIxOmCAKv56BpEH5YNZQKFUXWs9s/y59qGE2ADb7CM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=uIR3i1dOLwOYf0LTz1MZIMhKN4J60AwIjUt0veD9qsIQP/cFzZq4t/Ofxh9TLHVmLmhOtIB0ZQ1QnFcgB45bmXxk/i7wqGXb4nujU0yLOGWTrJvz7Pp0WefyzMCQt4yztJxYKWjMoAq5PRJ6QPqmqYImbDBoJagpSVX67mCEOcw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zeniv.linux.org.uk; spf=none smtp.mailfrom=ftp.linux.org.uk; dkim=pass (2048-bit key) header.d=linux.org.uk header.i=@linux.org.uk header.b=ljrCHpJg; arc=none smtp.client-ip=62.89.141.173
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zeniv.linux.org.uk
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=ftp.linux.org.uk
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=linux.org.uk; s=zeniv-20220401; h=Sender:In-Reply-To:Content-Type:
MIME-Version:References:Message-ID:Subject:Cc:To:From:Date:Reply-To:
Content-Transfer-Encoding:Content-ID:Content-Description;
bh=iZ28ndmwT7y3JzFc7uXf7ymmAYmNx3y/DDN2G57aUJE=; b=ljrCHpJg+mKfUUZtHm3hju4Kb6
FXk3d5Bq2kkz9NzhujVpwCtlv1m9EjQwtaNECT8buc+6nkj28N3dUODytS46bhZFiU4xVzW4SMxAp
zZsfKMqReVu9EGpteDmsrYb5QDUUzWWfCqX2zu0uV7Gh7x1vYebjBBpS7vJEWUmnY1kt4oQ/b8C8X
clJIIxq1/h/Z42ze3gAbrTCoC7hdY6OmNNlrq87W8EnSQLtk12BU1w5OA1D9LiqeYhfgufXHl6qJf
WQS95KyJXy+9FhuUaPJ8sqf1rbl1vhVHrON4K6ExHXj5aMxMr8zsxgJkJfYrDVA2/2PJsTgyHdWbl
UvXkU0eg==;
Received: from viro by zeniv.linux.org.uk with local (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLTsf-0000000Btip-3W5p;
Sat, 31 May 2025 21:36:42 +0000
Date: Sat, 31 May 2025 22:36:41 +0100
From: Al Viro <viro@xxxxxxxxxxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: Kees Cook <kees@xxxxxxxxxx>,
Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, Eric Biggers <ebiggers@xxxxxxxxxx>,
Ingo Saitz <ingo@xxxxxxxxxxxxxxx>,
kernel test robot <oliver.sang@xxxxxxxxx>,
Marco Elver <elver@xxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>,
Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
Message-ID: <20250531213641.GE3574388@ZenIV>
References: <202505310759.3A40AD051@keescook>
<CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
Sender: Al Viro <viro@xxxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 11:20:20AM -0700, Linus Torvalds wrote:
> On Sat, 31 May 2025 at 08:00, Kees Cook <kees@xxxxxxxxxx> wrote:
> >
> > Please pull this small handful of hardening fixes for v6.16-rc1.
>
> WTF, Kees?
>
> You seem to have actively maliciously modified your tree completely.
>
> There are completely crazy commits in there that are entirely fake.
>
> You have this: f8b59a0f90a2 Merge tag 'driver-core-6.16-rc1' of
> git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core
>
> which *claims* to be from me, and committed by me, but is very much
> not. It's some garbage you have entirely made up.
>
> Yes, there is a real commit like that, but it's has the SHA1 ID of
> 9d230d500b0e.

Interesting - looks like a large part of commit graph had been mirrored
with mergetag parts filed off; actual tree objects appear to match...


Return-Path: <linux-kernel+bounces-669252-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8412241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:45:36 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 3E722189CB32
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:45:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 734A11C1F13;
Sat, 31 May 2025 21:45:29 +0000 (UTC)
Received: from mail-il1-f207.google.com (mail-il1-f207.google.com [209.85.166.207])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id ACDAB4317D
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:45:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.207
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748727928; cv=none; b=cOBpjRsPUshpKe/38vMJfgbBU8QJn+1KusC0cUMRp4AoQnPnfYcj9A5+bWZrodrcs+K5aGGLAZbmNsgQcVBZEJQCySbJJDdolK6C9xdFFJ33iFCs+gfjA7VeBzvQjaQVgkmyu0nPIPwetknGPv1IIuytFqh8IhiLz0zG6BIGcXw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748727928; c=relaxed/simple;
bh=eGmxKSIDk+Pr2pjYrHxA/uwhqRwV2oa5bunGidKjwmQ=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=H+MjfBBdxDNb3df9hqqVvAYkLdxz5pO0hdxEL/HEVKcPYzvrF3NHkhcawAKUjgc3kTf8kS6RFkuysTiEsj3pt90XnZKBIjWj93b44M75k9v9RQlWD/nHgw3FvOIzjr40f8B4iMCb1dPicWlKhOjFgJhFTtZZxI9+Krcjhxsm8kQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.207
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f207.google.com with SMTP id e9e14a558f8ab-3dc83674dbbso65262175ab.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 14:45:26 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748727926; x=1749332726;
h=to:from:subject:message-id:date:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=ibbplstNDK/5Y1Z4W9x7q3Afr7C6j0t143rSJ76Bh5o=;
b=Yvntj8lpYHoiMqys1US4+wIlhJMXfj6tzoPz4Ih+sn0H+woYwnpSGBFKIwJ4Cj7woW
wSd6nqx2wZ0134Gm0Yx66ZmMKmVbdThIPBl8wYKX/Af6hU7iD2NEvPg8C0zkxoCA42jw
rNVaOWXfczVAV1ZoGIJiXECdHgWtUcKbSNtG7Vpf6pkWAWFj9vshVVMcLYnrd9250u7Q
4z17feTy+nfPav1f+p6HPBM8ARioJlp3FFpiaQLD1Q6QgVSEsTn/ofjWTpfPvLtwYlhA
KTEwwPDwa6OwGeHiBIZt+7/SXOtqIU+8vn+A7/j4T3z4INuFbwZfFsjo5289j9FmtBmR
AhxA==
X-Forwarded-Encrypted: i=1; AJvYcCXahKqwlCeueMRA+0XRdq482HAaLBdyu67sScfw6m5sdEqvjQDzqnv+q/f+wMmujFwWui0g8B7k6geo2WI=@vger.kernel.org
X-Gm-Message-State: AOJu0YymkfPWO63O4UU1XJrDNZ5DDOF+Xryu7lSAsobTqZ8YjE/PVyVb
ID9ox8Ahrx2sn6hiA0Bkwni9OnUdsiuvgJCCagOub5ah5XDkTxznzPtfY94i1AhpxQeEb0nL5ES
SOEvb0m7LLFlxeVbgAnE9ug5xzwiKC0JL/JEZPssJw9l+z6xqcJqPZWUAV7Q=
X-Google-Smtp-Source: AGHT+IFmnhT0nD3qkobzggNHBkQ07wkkIclVIq4D6SoJNqCcFvATr11HZs1zefSSNXgkjUUqI8UBl/QGQmI4jwoqNGkjU76hUduh
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1fc8:b0:3dc:88f1:d88b with SMTP id
e9e14a558f8ab-3dd9c989d19mr65865385ab.3.1748727925739; Sat, 31 May 2025
14:45:25 -0700 (PDT)
Date: Sat, 31 May 2025 14:45:25 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b7875.a70a0220.1a6ae.000d.GAE@xxxxxxxxxx>
Subject: [syzbot] [dri?] WARNING in drm_atomic_helper_wait_for_vblanks (4)
From: syzbot <syzbot+70c83229f190c4cbf649@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: airlied@xxxxxxxxx, dri-devel@xxxxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, maarten.lankhorst@xxxxxxxxxxxxxxx,
mripard@xxxxxxxxxx, simona@xxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx,
tzimmermann@xxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-0.5 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SORTED_RECIPS,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no
version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: 914873bc7df9 Merge tag 'x86-build-2025-05-25' of git://git..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=1550fdf4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=99deacfb6378f156
dashboard link: https://syzkaller.appspot.com/bug?extid=70c83229f190c4cbf649
compiler: arm-linux-gnueabi-gcc (Debian 12.2.0-14) 12.2.0, GNU ld (GNU Binutils for Debian) 2.40
userspace arch: arm

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/98a89b9f34e4/non_bootable_disk-914873bc.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/55cb8ce834df/vmlinux-914873bc.xz
kernel image: https://storage.googleapis.com/syzbot-assets/6c2325ebf21a/zImage-914873bc.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+70c83229f190c4cbf649@xxxxxxxxxxxxxxxxxxxxxxxxx

input: AT Raw Set 2 keyboard as /devices/platform/bus@8000000/bus@8000000:motherboard-bus/bus@8000000:motherboard-bus:iofpga-bus@300000000/1c060000.kmi/serio0/input/input0
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/bus@8000000/bus@8000000:motherboard-bus/bus@8000000:motherboard-bus:iofpga-bus@300000000/1c070000.kmi/serio1/input/input2
------------[ cut here ]------------
WARNING: CPU: 1 PID: 47 at drivers/gpu/drm/drm_atomic_helper.c:1720 drm_atomic_helper_wait_for_vblanks.part.0+0x280/0x288 drivers/gpu/drm/drm_atomic_helper.c:1720
[CRTC:34:crtc-0] vblank wait timed out
Modules linked in:
Kernel panic - not syncing: kernel: panic_on_warn set ...
CPU: 1 UID: 0 PID: 47 Comm: kworker/1:1 Not tainted 6.15.0-syzkaller #0 PREEMPT
Hardware name: ARM-Versatile Express
Workqueue: events output_poll_execute
Call trace:
[<802019e4>] (dump_backtrace) from [<80201ae0>] (show_stack+0x18/0x1c arch/arm/kernel/traps.c:257)
r7:00000000 r6:8282083c r5:00000000 r4:822585bc
[<80201ac8>] (show_stack) from [<802204e0>] (__dump_stack lib/dump_stack.c:94 [inline])
[<80201ac8>] (show_stack) from [<802204e0>] (dump_stack_lvl+0x54/0x7c lib/dump_stack.c:120)
[<8022048c>] (dump_stack_lvl) from [<80220520>] (dump_stack+0x18/0x1c lib/dump_stack.c:129)
r5:00000000 r4:82a6fd1c
[<80220508>] (dump_stack) from [<802025f8>] (panic+0x120/0x374 kernel/panic.c:354)
[<802024d8>] (panic) from [<80259160>] (check_panic_on_warn kernel/panic.c:243 [inline])
[<802024d8>] (panic) from [<80259160>] (get_taint+0x0/0x1c kernel/panic.c:238)
r3:8280c604 r2:00000001 r1:8223f214 r0:82246c00
r7:80ae0220
[<802590ec>] (check_panic_on_warn) from [<802592c4>] (__warn+0x80/0x188 kernel/panic.c:749)
[<80259244>] (__warn) from [<802595b4>] (warn_slowpath_fmt+0x1e8/0x1f4 kernel/panic.c:784)
r8:00000009 r7:822d4db8 r6:df921bb4 r5:832e0000 r4:00000000
[<802593d0>] (warn_slowpath_fmt) from [<80ae0220>] (drm_atomic_helper_wait_for_vblanks.part.0+0x280/0x288 drivers/gpu/drm/drm_atomic_helper.c:1720)
r10:83833000 r9:00000001 r8:00000000 r7:00000000 r6:8334b500 r5:843cf050
r4:00000000
[<80adffa0>] (drm_atomic_helper_wait_for_vblanks.part.0) from [<80ae166c>] (drm_atomic_helper_wait_for_vblanks drivers/gpu/drm/drm_atomic_helper.c:1696 [inline])
[<80adffa0>] (drm_atomic_helper_wait_for_vblanks.part.0) from [<80ae166c>] (drm_atomic_helper_commit_tail+0x84/0x94 drivers/gpu/drm/drm_atomic_helper.c:1796)
r10:838a1c1c r9:00000000 r8:00000000 r7:00000001 r6:be5c55c0 r5:83833000
r4:8334b500
[<80ae15e8>] (drm_atomic_helper_commit_tail) from [<80ae2d2c>] (commit_tail+0x178/0x19c drivers/gpu/drm/drm_atomic_helper.c:1873)
r5:00000000 r4:8334b500
[<80ae2bb4>] (commit_tail) from [<80ae2eb8>] (drm_atomic_helper_commit+0x150/0x174 drivers/gpu/drm/drm_atomic_helper.c:2111)
r9:00000000 r8:8334b52c r7:00000000 r6:83833000 r5:00000000 r4:8334b500
[<80ae2d68>] (drm_atomic_helper_commit) from [<80a9cff0>] (drm_atomic_commit+0xcc/0x100 drivers/gpu/drm/drm_atomic.c:1518)
r9:00000000 r8:843cf520 r7:00000001 r6:00000001 r5:83833000 r4:8334b500
[<80a9cf24>] (drm_atomic_commit) from [<80ad4c3c>] (drm_client_modeset_commit_atomic+0x21c/0x25c drivers/gpu/drm/drm_client_modeset.c:1079)
r5:838331ac r4:8334b500
[<80ad4a20>] (drm_client_modeset_commit_atomic) from [<80ad4d54>] (drm_client_modeset_commit_locked+0x64/0x18c drivers/gpu/drm/drm_client_modeset.c:1182)
r10:838331ec r9:00000000 r8:822d3f0c r7:844b2a18 r6:844b2a00 r5:83833000
r4:83833000
[<80ad4cf0>] (drm_client_modeset_commit_locked) from [<80ad4ea8>] (drm_client_modeset_commit+0x2c/0x48 drivers/gpu/drm/drm_client_modeset.c:1208)
r9:00000000 r8:822d3f0c r7:838330ac r6:844b2ab8 r5:83833000 r4:844b2a00
[<80ad4e7c>] (drm_client_modeset_commit) from [<80aeef7c>] (__drm_fb_helper_restore_fbdev_mode_unlocked drivers/gpu/drm/drm_fb_helper.c:237 [inline])
[<80ad4e7c>] (drm_client_modeset_commit) from [<80aeef7c>] (__drm_fb_helper_restore_fbdev_mode_unlocked+0xa4/0xd8 drivers/gpu/drm/drm_fb_helper.c:216)
r5:844b2a00 r4:00000000
[<80aeeed8>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<80aeeec8>] (drm_fb_helper_set_par drivers/gpu/drm/drm_fb_helper.c:1359 [inline])
[<80aeeed8>] (__drm_fb_helper_restore_fbdev_mode_unlocked) from [<80aeeec8>] (drm_fb_helper_hotplug_event+0xf8/0x108 drivers/gpu/drm/drm_fb_helper.c:1970)
r7:838330ac r6:83833000 r5:844b2ab8 r4:844b2a00
[<80aeedd0>] (drm_fb_helper_hotplug_event) from [<80aef428>] (drm_fbdev_client_hotplug+0x24/0xc8 drivers/gpu/drm/clients/drm_fbdev_client.c:43)
r5:83833000 r4:844b2a00
[<80aef404>] (drm_fbdev_client_hotplug) from [<80ad44b4>] (drm_client_hotplug drivers/gpu/drm/drm_client_event.c:69 [inline])
[<80aef404>] (drm_fbdev_client_hotplug) from [<80ad44b4>] (drm_client_dev_hotplug drivers/gpu/drm/drm_client_event.c:98 [inline])
[<80aef404>] (drm_fbdev_client_hotplug) from [<80ad44b4>] (drm_client_dev_hotplug+0xd8/0x130 drivers/gpu/drm/drm_client_event.c:84)
r7:838330ac r6:83833000 r5:83833098 r4:844b2a00
[<80ad43dc>] (drm_client_dev_hotplug) from [<80aea6b8>] (drm_kms_helper_hotplug_event drivers/gpu/drm/drm_probe_helper.c:735 [inline])
[<80ad43dc>] (drm_client_dev_hotplug) from [<80aea6b8>] (output_poll_execute+0x27c/0x2c8 drivers/gpu/drm/drm_probe_helper.c:847)
r9:00000000 r8:838330d8 r7:00000001 r6:83833000 r5:00000001 r4:832a0000
[<80aea43c>] (output_poll_execute) from [<8027eb9c>] (process_one_work+0x1b4/0x4f4 kernel/workqueue.c:3238)
r10:83016070 r9:83018205 r8:832e0000 r7:ddde2d80 r6:83018200 r5:838331ec
r4:832a0000
[<8027e9e8>] (process_one_work) from [<8027f7e4>] (process_scheduled_works kernel/workqueue.c:3319 [inline])
[<8027e9e8>] (process_one_work) from [<8027f7e4>] (worker_thread+0x1fc/0x3d8 kernel/workqueue.c:3400)
r10:61c88647 r9:832e0000 r8:832a002c r7:82804d40 r6:ddde2d80 r5:ddde2da0
r4:832a0000
[<8027f5e8>] (worker_thread) from [<80286810>] (kthread+0x12c/0x280 kernel/kthread.c:464)
r10:00000000 r9:832a0000 r8:8027f5e8 r7:df879e60 r6:832a0080 r5:832e0000
r4:00000001
[<802866e4>] (kthread) from [<80200114>] (ret_from_fork+0x14/0x20 arch/arm/kernel/entry-common.S:137)
Exception stack(0xdf921fb0 to 0xdf921ff8)
1fa0: 00000000 00000000 00000000 00000000
1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
1fe0: 00000000 00000000 00000000 00000000 00000013 00000000
r10:00000000 r9:00000000 r8:00000000 r7:00000000 r6:00000000 r5:802866e4
r4:832a1000
Rebooting in 86400 seconds..


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-669253-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B8DE841E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:48:52 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id B388A189DCE3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:49:05 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A0DBB1DDC07;
Sat, 31 May 2025 21:48:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b="S/veJHBk"
Received: from gloria.sntech.de (gloria.sntech.de [185.11.138.130])
(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 D279C1ACE0C;
Sat, 31 May 2025 21:48:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.11.138.130
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748728122; cv=none; b=orv2GTHXDICSB/zhEQEI17r+xj5Ks9RUWpJTeEaRAYiwB6fxr12b1ab/RHIfxWg94YPBfzJN+VpI0/g6tA5BFiDtRp1TSTkQEbWsU6EwHrhhAKow6cGp97HisjPEmEGDiiRDTVrG365/9OV1r9Dfv35LzJ6rb3CqMESTGY0Vk9o=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748728122; c=relaxed/simple;
bh=dr5WfIFnDvxt8uCn0X7Wh0AAlu8MV4VHpUff1slIYog=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=iFYxdfu8MXiWLpJDLIEkngqXcB6ntMvbb9yZCy3jnaFee+TEgy8PRqx0QSGBcP2kMslR8Tdu3X6Ro5HlXBkOeffFywegjm75wlLmasc/EmPd0tz5ZRpRYjUnWq91WG2dCm18zOucUjBxPfqRCS9wcbf2t8B5Mc6amwZ7l+hQpBE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de; spf=pass smtp.mailfrom=sntech.de; dkim=pass (2048-bit key) header.d=sntech.de header.i=@sntech.de header.b=S/veJHBk; arc=none smtp.client-ip=185.11.138.130
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=sntech.de
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=sntech.de
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sntech.de;
s=gloria202408; h=Content-Type:Content-Transfer-Encoding:MIME-Version:
References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:
Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
Resent-To:Resent-Cc:Resent-Message-ID;
bh=7u2qauzFTP/rcfL2a+zDfaRZel9Pi3gl/2pshUKS3Yk=; b=S/veJHBk4K4AhMATBTSQloGQ/s
SExGYxn3vLkx2Q5mkmsp0Kv0K+HTFKscAq30eVlszyNmHjpIMlxe/wFsDhlRhxi/yl2bItdRpd/c3
YP4DoEl8pZojG29DsB8iQbYu6yCJ0Id9+IuvCdPqOIV/cAMqalAKqDw6vmBtKD/L0UKJVIeHaLKg1
S1cNU9BLdN+/Nw1QA81Z2eyTzfCHis7/U5yc1Vh/VPMWkmL45r+AKeIdy/7b3dTX39inxEWjBsoMT
9Ij0k2rb6NW1oewrgOJadOIq1GjyOWNqT9uiD5ORDZ/YR9vh5FDP+HssP53zQGw5j8slLg9mO45xs
RNYOc6kg==;
Received: from i53875a3e.versanet.de ([83.135.90.62] helo=diego.localnet)
by gloria.sntech.de with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
(Exim 4.94.2)
(envelope-from <heiko@xxxxxxxxx>)
id 1uLU46-0001IH-Ji; Sat, 31 May 2025 23:48:30 +0200
From: Heiko =?UTF-8?B?U3TDvGJuZXI=?= <heiko@xxxxxxxxx>
To: Linus Walleij <linus.walleij@xxxxxxxxxx>, Rob Herring <robh@xxxxxxxxxx>,
Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>, Conor Dooley <conor+dt@xxxxxxxxxx>,
Uwe =?UTF-8?B?S2xlaW5lLUvDtm5pZw==?= <ukleinek@xxxxxxxxxx>,
William Breathitt Gray <wbg@xxxxxxxxxx>,
Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>,
Kever Yang <kever.yang@xxxxxxxxxxxxxx>,
Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
Cc: linux-gpio@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-rockchip@xxxxxxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-pwm@xxxxxxxxxxxxxxx,
linux-iio@xxxxxxxxxxxxxxx, kernel@xxxxxxxxxxxxx,
Jonas Karlman <jonas@xxxxxxxxx>,
Detlev Casanova <detlev.casanova@xxxxxxxxxxxxx>,
Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>
Subject: Re: [PATCH 4/7] soc: rockchip: add mfpwm driver
Date: Sat, 31 May 2025 23:48:29 +0200
Message-ID: <2188729.OBFZWjSADL@diego>
In-Reply-To: <20250408-rk3576-pwm-v1-4-a49286c2ca8e@xxxxxxxxxxxxx>
References:
<20250408-rk3576-pwm-v1-0-a49286c2ca8e@xxxxxxxxxxxxx>
<20250408-rk3576-pwm-v1-4-a49286c2ca8e@xxxxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="utf-8"
X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Am Dienstag, 8. April 2025, 14:32:16 Mitteleurop=C3=A4ische Sommerzeit schr=
ieb Nicolas Frattaroli:
> With the Rockchip RK3576, the PWM IP used by Rockchip has changed
> substantially. Looking at both the downstream pwm-rockchip driver as
> well as the mainline pwm-rockchip driver made it clear that with all its
> additional features and its differences from previous IP revisions, it
> is best supported in a new driver.
>=20
> This brings us to the question as to what such a new driver should be.
> To me, it soon became clear that it should actually be several new
> drivers, most prominently when Uwe Kleine-K=C3=B6nig let me know that I
> should not implement the pwm subsystem's capture callback, but instead
> write a counter driver for this functionality.
>=20
> Combined with the other as-of-yet unimplemented functionality of this
> new IP, it became apparent that it needs to be spread across several
> subsystems.
>=20
> For this reason, we add a new platform bus based driver, called mfpwm
> (short for "Multi-function PWM"). This "parent" driver makes sure that
> only one device function driver is using the device at a time, and is in
> charge of registering the platform bus devices for the individual device
> functions offered by the device.
>=20
> An acquire/release pattern is used to guarantee that device function
> drivers don't step on each other's toes.
>=20
> Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@xxxxxxxxxxxxx>

actually trying to compile this, led me to

aarch64-linux-gnu-ld: drivers/soc/rockchip/mfpwm.o: in function `mfpwm_reg_=
read':
/home/devel/hstuebner/00_git-repos/linux-rockchip/_build-arm64/../include/s=
oc/rockchip/mfpwm.h:423: multiple definition of `mfpwm_reg_read'; drivers/p=
wm/pwm-rockchip-v4.o:/home/devel/hstuebner/00_git-repos/linux-rockchip/_bui=
ld-arm64/../include/soc/rockchip/mfpwm.h:423: first defined here
aarch64-linux-gnu-ld: drivers/soc/rockchip/mfpwm.o: in function `mfpwm_reg_=
write':
/home/devel/hstuebner/00_git-repos/linux-rockchip/_build-arm64/../include/s=
oc/rockchip/mfpwm.h:428: multiple definition of `mfpwm_reg_write'; drivers/=
pwm/pwm-rockchip-v4.o:/home/devel/hstuebner/00_git-repos/linux-rockchip/_bu=
ild-arm64/../include/soc/rockchip/mfpwm.h:428: first defined here
make[3]: *** [../scripts/Makefile.vmlinux_o:72: vmlinux.o] Fehler 1


during the linking stage - with the driver as builtin


> +inline u32 mfpwm_reg_read(void __iomem *base, u32 reg)
> +{
> + return readl(base + reg);
> +}
> +
> +inline void mfpwm_reg_write(void __iomem *base, u32 reg, u32 val)
> +{
> + writel(val, base + reg);
> +}

making that a "static inline ..." solves that.


On a more general note, what is the differentiation to an MFD here?

Like you can already bind dt-nodes to MFD subdevices, and can implement
the exclusivity API thing on top of a general mfd device, to make sure only
one mfd-cell gets activated at one time.

Other than that, this looks like it reimplements MFDs?

Also handing around a regmap might be nicer, compared to readl/writel.


Heiko





Return-Path: <linux-kernel+bounces-669254-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id E3D8941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:53:51 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 59BCC3BA98E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:53:30 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 89D6A1DB125;
Sat, 31 May 2025 21:53:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="uG11LF1P"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 BA349482EF;
Sat, 31 May 2025 21:53:43 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748728423; cv=none; b=CPX2s/e94M8h7xmU3m5YkzfyrFc0yDnRnmCz4zoJJMZKYRzkmDiVVnZAgtpYcwDNqA9txQ9KW4ILqMnlwSHK4SlvrrYClLsdqQfCQsfZAWgd/dqswXk9625aHG94yK8gl8zJ47fpsfAgRd8XQz8U4V3AOMGpyw6kpCFNI42YFcs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748728423; c=relaxed/simple;
bh=H77DHMQ2TrKZiiZ4n6/Il4El3ltqXWleita+bbnDFMo=;
h=Date:From:To:Cc:Subject:Message-Id:Mime-Version:Content-Type; b=j6ZauJkRYdyrchyg82wQOK55Wi4hFSHSOpKBmJzw63FXNjCR8J4YMdT5ILIi/bCb/emnzFgNEm1lvJI6kdh3thKfSq+SpgOEswUtEcuTTsjZWNEKhbk6OgW9nqkK7kFdYHZttAetgOwyjiKPVoLpTC3rCD+2S2yC3vE5ynuikmQ=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=uG11LF1P; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id E2654C4CEE3;
Sat, 31 May 2025 21:53:42 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org;
s=korg; t=1748728423;
bh=H77DHMQ2TrKZiiZ4n6/Il4El3ltqXWleita+bbnDFMo=;
h=Date:From:To:Cc:Subject:From;
b=uG11LF1Pk1TyQTPT1qgH+xejUSyRhPiVAkL1YcWFDjopQ4g2OKVx4gXMdwLFcAVi1
dJIjtiBo5XWk04BR1Qs0dGlK8fEVTAI5GIfrIdU7ffppLJn+nyFgCWGS+nhBtvz3wo
BjTTfGAYymTk4xTLARUOFIez+SLxeJ2QEMYhQ4ls=
Date: Sat, 31 May 2025 14:53:42 -0700
From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: linux-mm@xxxxxxxxx, mm-commits@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [GIT PULL] MM updates for 6.16-rc1
Message-Id: <20250531145342.383090aa5ed5bcefee0740d5@xxxxxxxxxxxxxxxxxxxx>
X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Linus, please merge this set of MM updates for the 6.16-rcX cycle.

I'll be sending another batch of 50ish updates later in the week, then
another tiny update.

Thanks.

Conflicts which I'm seeing today, and their linux-resolutions:

arch/x86/mm/pat/memtype.c, vs tip tree:
https://lkml.kernel.org/r/20250515151102.5b0f9e4f@xxxxxxxxxxxxxxxx

mm/memcontrol.c, vs cgroup tree:
https://lkml.kernel.org/r/20250521174958.0b7354da@xxxxxxxxxxxxxxxx
https://lkml.kernel.org/r/20250522173518.68d11f41@xxxxxxxxxxxxxxxx
https://lkml.kernel.org/r/20250529111223.3987a514@xxxxxxxxxxxxxxxx

Possible upcoming conflicts which Stephen reported. Some of these are now
resolved.

arch/x86/kernel/e820.c, vs tip-fixes tree:
https://lkml.kernel.org/r/20250422124402.4b891d14@xxxxxxxxxxxxxxxx

kernel/kexec_file.c, vs integrity tree:
https://lkml.kernel.org/r/20250430142331.468074f1@xxxxxxxxxxxxxxxx

fs/fuse/file.c, vs fuse tree:
https://lkml.kernel.org/r/20250509105750.6281e2ab@xxxxxxxxxxxxxxxx
https://lkml.kernel.org/r/20250514105313.5e2c367a@xxxxxxxxxxxxxxxx

rust/kernel/task.rs, vs rust tree:
https://lkml.kernel.org/r/20250526173741.2dd77e75@xxxxxxxxxxxxxxxx


The following changes since commit 75cb1cca2c880179a11c7dd9380b6f14e41a06a4:

mm: userfaultfd: correct dirty flags set for both present and swap pte (2025-05-11 17:29:55 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2025-05-31-14-50

for you to fetch changes up to c544a952ba61b1a025455098033c17e0573ab085:

mm: pcp: increase pcp->free_count threshold to trigger free_high (2025-05-27 19:38:27 -0700)

----------------------------------------------------------------
- The 11 patch series "Add folio_mk_pte()" from Matthew Wilcox
simplifies the act of creating a pte which addresses the first page in a
folio and reduces the amount of plumbing which architecture must
implement to provide this.

- The 8 patch series "Misc folio patches for 6.16" from Matthew Wilcox
is a shower of largely unrelated folio infrastructure changes which
clean things up and better prepare us for future work.

- The 3 patch series "memory,x86,acpi: hotplug memory alignment
advisement" from Gregory Price adds early-init code to prevent x86 from
leaving physical memory unused when physical address regions are not
aligned to memory block size.

- The 2 patch series "mm/compaction: allow more aggressive proactive
compaction" from Michal Clapinski provides some tuning of the (sadly,
hard-coded (more sadly, not auto-tuned)) thresholds for our invokation
of proactive compaction. In a simple test case, the reduction of a guest
VM's memory consumption was dramatic.

- The 8 patch series "Minor cleanups and improvements to swap freeing
code" from Kemeng Shi provides some code cleaups and a small efficiency
improvement to this part of our swap handling code.

- The 6 patch series "ptrace: introduce PTRACE_SET_SYSCALL_INFO API"
from Dmitry Levin adds the ability for a ptracer to modify syscalls
arguments. At this time we can alter only "system call information that
are used by strace system call tampering, namely, syscall number,
syscall arguments, and syscall return value.

This series should have been incorporated into mm.git's "non-MM"
branch, but I goofed.

- The 3 patch series "fs/proc: extend the PAGEMAP_SCAN ioctl to report
guard regions" from Andrei Vagin extends the info returned by the
PAGEMAP_SCAN ioctl against /proc/pid/pagemap. This permits CRIU to more
efficiently get at the info about guard regions.

- The 2 patch series "Fix parameter passed to page_mapcount_is_type()"
from Gavin Shan implements that fix. No runtime effect is expected
because validate_page_before_insert() happens to fix up this error.

- The 3 patch series "kernel/events/uprobes: uprobe_write_opcode()
rewrite" from David Hildenbrand basically brings uprobe text poking into
the current decade. Remove a bunch of hand-rolled implementation in
favor of using more current facilities.

- The 3 patch series "mm/ptdump: Drop assumption that pxd_val() is u64"
from Anshuman Khandual provides enhancements and generalizations to the
pte dumping code. This might be needed when 128-bit Page Table
Descriptors are enabled for ARM.

- The 12 patch series "Always call constructor for kernel page tables"
from Kevin Brodsky "ensures that the ctor/dtor is always called for
kernel pgtables, as it already is for user pgtables". This permits the
addition of more functionality such as "insert hooks to protect page
tables". This change does result in various architectures performing
unnecesary work, but this is fixed up where it is anticipated to occur.

- The 9 patch series "Rust support for mm_struct, vm_area_struct, and
mmap" from Alice Ryhl adds plumbing to permit Rust access to core MM
structures.

- The 3 patch series "fix incorrectly disallowed anonymous VMA merges"
from Lorenzo Stoakes takes advantage of some VMA merging opportunities
which we've been missing for 15 years.

- The 4 patch series "mm/madvise: batch tlb flushes for MADV_DONTNEED
and MADV_FREE" from SeongJae Park optimizes process_madvise()'s TLB
flushing. Instead of flushing each address range in the provided iovec,
we batch the flushing across all the iovec entries. The syscall's cost
was approximately halved with a microbenchmark which was designed to
load this particular operation.

- The 6 patch series "Track node vacancy to reduce worst case allocation
counts" from Sidhartha Kumar makes the maple tree smarter about its node
preallocation. stress-ng mmap performance increased by single-digit
percentages and the amount of unnecessarily preallocated memory was
dramaticelly reduced.

- The 3 patch series "mm/gup: Minor fix, cleanup and improvements" from
Baoquan He removes a few unnecessary things which Baoquan noted when
reading the code.

- The 3 patch series ""Enhance sysfs handling for memory hotplug in
weighted interleave" from Rakie Kim "enhances the weighted interleave
policy in the memory management subsystem by improving sysfs handling,
fixing memory leaks, and introducing dynamic sysfs updates for memory
hotplug support". Fixes things on error paths which we are unlikely to
hit.

- The 7 patch series "mm/damon: auto-tune DAMOS for NUMA setups
including tiered memory" from SeongJae Park introduces new DAMOS quota
goal metrics which eliminate the manual tuning which is required when
utilizing DAMON for memory tiering.

- The 5 patch series "mm/vmalloc.c: code cleanup and improvements" from
Baoquan He provides cleanups and small efficiency improvements which
Baoquan found via code inspection.

- The 2 patch series "vmscan: enforce mems_effective during demotion"
from Gregory Price "changes reclaim to respect cpuset.mems_effective
during demotion when possible". because "presently, reclaim explicitly
ignores cpuset.mems_effective when demoting, which may cause the cpuset
settings to violated." "This is useful for isolating workloads on a
multi-tenant system from certain classes of memory more consistently."

- The 2 patch series ""Clean up split_huge_pmd_locked() and remove
unnecessary folio pointers" from Gavin Guo provides minor cleanups and
efficiency gains in in the huge page splitting and migrating code.

- The 3 patch series "Use kmem_cache for memcg alloc" from Huan Yang
creates a slab cache for `struct mem_cgroup', yielding improved memory
utilization.

- The 4 patch series "add max arg to swappiness in memory.reclaim and
lru_gen" from Zhongkun He adds a new "max" argument to the "swappiness="
argument for memory.reclaim MGLRU's lru_gen. This directs proactive
reclaim to reclaim from only anon folios rather than file-backed folios.

- The 17 patch series "kexec: introduce Kexec HandOver (KHO)" from Mike
Rapoport is the first step on the path to permitting the kernel to
maintain existing VMs while replacing the host kernel via file-based
kexec. At this time only memblock's reserve_mem is preserved.

- The 7 patch series "mm: Introduce for_each_valid_pfn()" from David
Woodhouse provides and uses a smarter way of looping over a pfn range.
By skipping ranges of invalid pfns.

- The 2 patch series "sched/numa: Skip VMA scanning on memory pinned to
one NUMA node via cpuset.mems" from Libo Chen removes a lot of pointless
VMA scanning when a task is pinned a single NUMA mode. Dramatic
performance benefits were seen in some real world cases.

- The 2 patch series "JFS: Implement migrate_folio for
jfs_metapage_aops" from Shivank Garg addresses a warning which occurs
during memory compaction when using JFS.

- The 4 patch series "move all VMA allocation, freeing and duplication
logic to mm" from Lorenzo Stoakes moves some VMA code from kernel/fork.c
into the more appropriate mm/vma.c.

- The 6 patch series "mm, swap: clean up swap cache mapping helper" from
Kairui Song provides code consolidation and cleanups related to the
folio_index() function.

- The 2 patch series "mm/gup: Cleanup memfd_pin_folios()" from Vishal
Moola does that.

- The 8 patch series "memcg: Fix test_memcg_min/low test failures" from
Waiman Long addresses some bogus failures which are being reported by
the test_memcontrol selftest.

- The 3 patch series "eliminate mmap() retry merge, add .mmap_prepare
hook" from Lorenzo Stoakes commences the deprecation of
file_operations.mmap() in favor of the new
file_operations.mmap_prepare(). The latter is more restrictive and
prevents drivers from messing with things in ways which, amongst other
problems, may defeat VMA merging.

- The 4 patch series "memcg: decouple memcg and objcg stocks"" from
Shakeel Butt decouples the per-cpu memcg charge cache from the objcg's
one. This is a step along the way to making memcg and objcg charging
NMI-safe, which is a BPF requirement.

- The 6 patch series "mm/damon: minor fixups and improvements for code,
tests, and documents" from SeongJae Park is "yet another batch of
miscellaneous DAMON changes. Fix and improve minor problems in code,
tests and documents."

- The 7 patch series "memcg: make memcg stats irq safe" from Shakeel
Butt converts memcg stats to be irq safe. Another step along the way to
making memcg charging and stats updates NMI-safe, a BPF requirement.

- The 4 patch series "Let unmap_hugepage_range() and several related
functions take folio instead of page" from Fan Ni provides folio
conversions in the hugetlb code.

----------------------------------------------------------------
Alexander Graf (12):
memblock: add support for scratch memory
kexec: add Kexec HandOver (KHO) generation helpers
kexec: add KHO parsing support
kexec: add KHO support to kexec file loads
kexec: add config option for KHO
arm64: add KHO support
x86/kexec: add support for passing kexec handover (KHO) data
x86/e820: temporarily enable KHO scratch for memory below 1M
x86/boot: make sure KASLR does not step over KHO preserved memory
x86/Kconfig: enable kexec handover for 64 bits
memblock: add KHO support for reserve_mem
Documentation: add documentation for KHO

Alexander Potapenko (5):
kmsan: apply clang-format to files mm/kmsan/
kmsan: fix usage of kmsan_enter_runtime() in kmsan_vmap_pages_range_noflush()
kmsan: drop the declaration of kmsan_save_stack()
kmsan: enter the runtime around kmsan_internal_memmove_metadata() call
kmsan: rework kmsan_in_runtime() handling in kmsan_report()

Alexei Starovoitov (1):
mm: rename try_alloc_pages() to alloc_pages_nolock()

Alice Ryhl (9):
mm: rust: add abstraction for struct mm_struct
mm: rust: add vm_area_struct methods that require read access
mm: rust: add vm_insert_page
mm: rust: add lock_vma_under_rcu
mm: rust: add mmput_async support
mm: rust: add VmaNew for f_ops->mmap()
rust: miscdevice: add mmap support
task: rust: rework how current is accessed
mm: rust: add MEMORY MANAGEMENT [RUST]

Andrei Vagin (3):
fs/proc: extend the PAGEMAP_SCAN ioctl to report guard regions
tools headers UAPI: sync linux/fs.h with the kernel sources
selftests/mm: add PAGEMAP_SCAN guard region test

Andrew Morton (1):
Merge branch 'mm-hotfixes-stable' into mm-stable in order to successfully merge mm-unstable's "mm: add folio_mk_pte()",

Andy Shevchenko (1):
util_macros.h: make the header more resilient

Anshuman Khandual (3):
mm/ptdump: split note_page() into level specific callbacks
mm/ptdump: split effective_prot() into level specific callbacks
arm64/mm: define ptdesc_t

Baolin Wang (5):
mm: huge_memory: add folio_mark_accessed() when zapping file THP
mm: mincore: use pte_batch_hint() to batch process large folios
mm: khugepaged: convert set_huge_pmd() to take a folio
mm: convert do_set_pmd() to take a folio
mm: khugepaged: decouple SHMEM and file folios' collapse

Baoquan He (8):
mm/gup: remove unneeded checking in follow_page_pte()
mm/gup: remove gup_fast_pgd_leaf() and clean up the relevant codes
mm/gup: clean up codes in fault_in_xxx() functions
mm/vmalloc.c: change purge_ndoes as local static variable
mm/vmalloc.c: find the vmap of vmap_nodes in reverse order
mm/vmalloc.c: optimize code in decay_va_pool_node() a little bit
mm/vmalloc: optimize function vm_unmap_aliases()
mm/vmalloc.c: return explicit error value in alloc_vmap_area()

Casey Chen (1):
alloc_tag: check mem_profiling_support in alloc_tag_init

Chen Ni (1):
mm: memcontrol: remove unnecessary NULL check before free_percpu()

Cheng-Han Wu (1):
mm: remove unused macro INIT_PASID

Christoph Hellwig (1):
xarray: fix kerneldoc for __xa_cmpxchg

Christoph Lameter (Ampere) (1):
Update Christoph's Email address and make it consistent

David Hildenbrand (15):
kernel/events/uprobes: pass VMA instead of MM to remove_breakpoint()
kernel/events/uprobes: pass VMA to set_swbp(), set_orig_insn() and uprobe_write_opcode()
kernel/events/uprobes: uprobe_write_opcode() rewrite
selftests/mm: add simple VM_PFNMAP tests based on mmap'ing /dev/mem
x86/mm/pat: factor out setting cachemode into pgprot_set_cachemode()
mm: convert track_pfn_insert() to pfnmap_setup_cachemode*()
mm: introduce pfnmap_track() and pfnmap_untrack() and use them for memremap
mm: convert VM_PFNMAP tracking to pfnmap_track() + pfnmap_untrack()
x86/mm/pat: remove old pfnmap tracking interface
mm: remove VM_PAT
x86/mm/pat: remove strict_prot parameter from reserve_pfn_range()
x86/mm/pat: remove MEMTYPE_*_MATCH
x86/mm/pat: inline memtype_match() into memtype_erase()
drm/i915: track_pfn() -> "pfnmap tracking"
mm/io-mapping: track_pfn() -> "pfnmap tracking"

David Woodhouse (7):
mm: introduce for_each_valid_pfn() and use it from reserve_bootmem_region()
mm: implement for_each_valid_pfn() for CONFIG_FLATMEM
mm: implement for_each_valid_pfn() for CONFIG_SPARSEMEM
mm, PM: use for_each_valid_pfn() in kernel/power/snapshot.c
mm, x86: use for_each_valid_pfn() from __ioremap_check_ram()
mm: use for_each_valid_pfn() in memory_hotplug
mm/mm_init: use for_each_valid_pfn() in init_unavailable_range()

Dev Jain (1):
mempolicy: optimize queue_folios_pte_range by PTE batching

Dmitry V. Levin (6):
hexagon: add syscall_set_return_value()
syscall.h: add syscall_set_arguments()
syscall.h: introduce syscall_set_nr()
ptrace_get_syscall_info: factor out ptrace_get_syscall_info_op
ptrace: introduce PTRACE_SET_SYSCALL_INFO request
selftests/ptrace: add a test case for PTRACE_SET_SYSCALL_INFO

Donet Tom (1):
selftests/mm: restore default nr_hugepages value during cleanup in hugetlb_reparenting_test.sh

Enze Li (2):
selftests/damon: remove the remaining test scripts for DAMON debugfs interface
samples/damon/prcl: fix a comment typo

Fan Ni (6):
mm: convert free_page_and_swap_cache() to free_folio_and_swap_cache()
khugepaged: pass folio instead of head page to trace events
mm/hugetlb: pass folio instead of page to unmap_ref_private()
mm/hugetlb: refactor unmap_hugepage_range() to take folio instead of page
mm/hugetlb: refactor __unmap_hugepage_range() to take folio instead of page
mm/hugetlb: convert use of struct page to folio in __unmap_hugepage_range()

Feng Lee (1):
mm: remove obsolete pgd_offset_gate()

Frank van der Linden (1):
mm/hugetlb: use separate nodemask for bootmem allocations

Gavin Guo (2):
mm/huge_memory: adjust try_to_migrate_one() and split_huge_pmd_locked()
mm/huge_memory: remove useless folio pointers passing

Gavin Shan (2):
mm: fix parameter passed to page_mapcount_is_type()
mm/debug: fix parameter passed to page_mapcount_is_type()

Gregory Price (6):
memory: implement memory_block_advise/probe_max_size
x86: probe memory block size advisement value during mm init
acpi,srat: give memory block size advice based on CFMWS alignment
cpuset: rename cpuset_node_allowed to cpuset_current_node_allowed
vmscan,cgroup: apply mems_effective to reclaim
DAX: warn when kmem regions are truncated for memory block alignment

Guilherme Giacomo Simoes (1):
mm: page-flags-layout.h: change the KASAN_TAG_WIDTH for HW_TAGS

Hao Ge (1):
mm/vmscan: modify the assignment logic of the scan and total_scan variables

Huan Yang (3):
mm/memcg: move mem_cgroup_init() ahead of cgroup_init()
mm/memcg: use kmem_cache when alloc memcg
mm/memcg: use kmem_cache when alloc memcg pernode info

Ignacio Encinas (1):
mm: annotate data race in update_hiwater_rss

Jeongjun Park (1):
mm/vmalloc: fix data race in show_numa_info()

Jinliang Zheng (1):
mm: fix ratelimit_pages update error in dirty_ratio_handler()

Johannes Weiner (1):
mm: page_alloc: tighten up find_suitable_fallback()

Joshua Hahn (1):
mm/mempolicy: Weighted Interleave Auto-tuning

Kairui Song (5):
fuse: drop usage of folio_index
f2fs: drop usage of folio_index
filemap: do not use folio_contains for swap cache folios
mm: move folio_index to mm/swap.h and remove no longer needed helper
mm, swap: remove no longer used swap mapping helper

Kemeng Shi (8):
mm: swap: rename __swap_[entry/entries]_free[_locked] to swap_[entry/entries]_put[_locked]
mm: swap: enable swap_entry_range_free() to drop any kind of last ref
mm: swap: use swap_entries_free() to free swap entry in swap_entry_put_locked()
mm: swap: use swap_entries_free() drop last ref count in swap_entries_put_nr()
mm: swap: drop last SWAP_MAP_SHMEM flag in batch in swap_entries_put_nr()
mm: swap: free each cluster individually in swap_entries_put_map_nr()
mm: swap: factor out helper to drop cache of entries within a single cluster
mm: swap: replace cluster_swap_free_nr() with swap_entries_put_[map/cache]()

Kevin Brodsky (12):
mm: pass mm down to pagetable_{pte,pmd}_ctor
x86: pgtable: always use pte_free_kernel()
mm: call ctor/dtor for kernel PTEs
m68k: mm: call ctor/dtor for kernel PTEs
powerpc: mm: call ctor/dtor for kernel PTEs
sparc64: mm: call ctor/dtor for kernel PTEs
mm: skip ptlock_init() for kernel PMDs
arm64: mm: use enum to identify pgtable level instead of *_SHIFT
arm64: mm: always call PTE/PMD ctor in __create_pgd_mapping()
riscv: mm: clarify ctor mm argument in alloc_{pte,pmd}_late
arm64: mm: call PUD/P4D ctor in __create_pgd_mapping()
riscv: mm: call PUD/P4D ctor in special kernel pgtable alloc

Lance Yang (1):
mm/rmap: inline folio_test_large_maybe_mapped_shared() into callers

Li Wang (1):
selftest/mm: make hugetlb_reparenting_test tolerant to async reparenting

Libo Chen (2):
sched/numa: skip VMA scanning on memory pinned to one NUMA node via cpuset.mems
sched/numa: add tracepoint that tracks the skipping of numa balancing due to cpuset memory pinning

Liu Ye (1):
fs/proc/page: refactor to reduce code duplication

Lorenzo Stoakes (13):
mm/vma: fix incorrectly disallowed anonymous VMA merges
tools/testing: add PROCMAP_QUERY helper functions in mm self tests
tools/testing/selftests: assert that anon merge cases behave as expected
mm: move mmap/vma locking logic into specific files
mm: establish mm/vma_exec.c for shared exec/mm VMA functionality
mm: abstract initial stack setup to mm subsystem
mm: move dup_mmap() to mm
mm: perform VMA allocation, freeing, duplication in mm
mm: introduce new .mmap_prepare() file callback
mm: secretmem: convert to .mmap_prepare() hook
mm/vma: remove mmap() retry merge
MAINTAINERS: add kernel/fork.c to relevant sections
mm: remove WARN_ON_ONCE() in file_has_valid_mmap_hooks()

Luiz Capitulino (3):
mm: kmemleak: drop kmemleak_warning variable
mm: kmemleak: drop wrong comment
mm: kmemleak: mark variables as __read_mostly

Mark Brown (1):
selftests/mm: deduplicate second mmap() of 5*PAGE_SIZE at base

Matthew Wilcox (Oracle) (19):
mm: set the pte dirty if the folio is already dirty
mm: introduce a common definition of mk_pte()
sparc32: remove custom definition of mk_pte()
x86: remove custom definition of mk_pte()
um: remove custom definition of mk_pte()
mm: make mk_pte() definition unconditional
mm: add folio_mk_pte()
hugetlb: simplify make_huge_pte()
mm: remove mk_huge_pte()
mm: add folio_mk_pmd()
arch: remove mk_pmd()
filemap: remove readahead_page()
mm: remove offset_in_thp()
iov_iter: convert iter_xarray_populate_pages() to use folios
iov_iter: convert iov_iter_extract_xarray_pages() to use folios
filemap: remove find_subpage()
filemap: convert __readahead_batch() to use a folio
filemap: remove readahead_page_batch()
mm: delete thp_nr_pages()

Michal Clapinski (2):
mm/compaction: remove low watermark cap for proactive compaction
mm/compaction: reduce the difference between low and high watermarks

Michal Hocko (1):
memcg, oom: do not bypass oom killer for dying tasks

Mike Rapoport (Microsoft) (6):
execmem: enforce allocation size aligment to PAGE_SIZE
memblock: add MEMBLOCK_RSRV_KERN flag
memblock: introduce memmap_init_kho_scratch()
kexec: enable KHO support for memory preservation
x86/setup: use memblock_reserve_kern for memory used by kernel
Documentation: KHO: add memblock bindings

Nhat Pham (1):
zsmalloc: prefer the the original page's node for compressed data

Nikhil Dhama (1):
mm: pcp: increase pcp->free_count threshold to trigger free_high

Oscar Salvador (2):
mm, hugetlb: avoid passing a null nodemask when there is mbind policy
mm,hugetlb: allocate frozen pages in alloc_buddy_hugetlb_folio

Pedro Falcato (1):
mm: workingset: simplify lockdep check in update_node

Peter Xu (1):
mm/selftests: add a test to verify mmap_changing race with -EAGAIN

Prabhav Kumar Vaish (1):
mm: fix typos in comments in mm_init.c

Przemek Kitszel (1):
xarray: make xa_alloc_cyclic() return 0 on all success cases

Rakie Kim (3):
mm/mempolicy: fix memory leaks in weighted interleave sysfs
mm/mempolicy: prepare weighted interleave sysfs for memory hotplug
mm/mempolicy: support memory hotplug in weighted interleave

Ryan Chung (1):
selftests/eventfd: correct test name and improve messages

SeongJae Park (17):
mm/madvise: define and use madvise_behavior struct for madvise_do_behavior()
mm/madvise: batch tlb flushes for MADV_FREE
mm/memory: split non-tlb flushing part from zap_page_range_single()
mm/madvise: batch tlb flushes for MADV_DONTNEED[_LOCKED]
mm/damon/core: introduce damos quota goal metrics for memory node utilization
mm/damon/sysfs-schemes: implement file for quota goal nid parameter
mm/damon/sysfs-schemes: connect damos_quota_goal nid with core layer
Docs/mm/damon/design: document node_mem_{used,free}_bp
Docs/admin-guide/mm/damon/usage: document 'nid' file
Docs/ABI/damon: document nid file
samples/damon: implement a DAMON module for memory tiering
mm/damon/core: warn and fix nr_accesses[_bp] corruption
mm/damon/sysfs-schemes: fix wrong comment on damons_sysfs_quota_goal_metric_strs
mm/damon/paddr: remove unused variable, folio_list, in damon_pa_stat()
mm/damon/tests/core-kunit: add a test for damos_set_filters_default_reject()
selftests/damon/_damon_sysfs: read tried regions directories in order
Docs/damon: update titles and brief introductions to explain DAMOS

Sergey Senozhatsky (3):
zram: modernize writeback interface
zsmalloc: cleanup headers includes
Documentation: zram: update IDLE pages tracking documentation

Shakeel Butt (24):
memcg: vmalloc: simplify MEMCG_VMALLOC updates
memcg: remove root memcg check from refill_stock
memcg: decouple drain_obj_stock from local stock
memcg: introduce memcg_uncharge
memcg: manually inline __refill_stock
memcg: no refilling stock from obj_cgroup_release
memcg: do obj_cgroup_put inside drain_obj_stock
memcg: use __mod_memcg_state in drain_obj_stock
memcg: manually inline replace_stock_objcg
memcg: optimize memcg_rstat_updated
memcg: multi-memcg percpu charge cache
memcg: introduce non-blocking limit setting option
memcg-introduce-non-blocking-limit-setting-option-v3
memcg: simplify consume_stock
memcg: separate local_trylock for memcg and obj
memcg: completely decouple memcg and obj stocks
memcg: no irq disable for memcg stock lock
memcg: memcg_rstat_updated re-entrant safe against irqs
memcg: move preempt disable to callers of memcg_rstat_updated
memcg: make mod_memcg_state re-entrant safe against irqs
memcg: make count_memcg_events re-entrant safe against irqs
memcg: make __mod_memcg_lruvec_state re-entrant safe against irqs
memcg: no stock lock for cpu hot-unplug
memcg: objcg stock trylock without irq disabling

Shivank Garg (2):
mm: add folio_expected_ref_count() for reference count calculation
jfs: implement migrate_folio for jfs_metapage_aops

Siddarth G (2):
selftests/mm: convert page_size to unsigned long
selftests/mm: use long for dwRegionSize

Sidhartha Kumar (6):
maple_tree: convert mas_prealloc_calc() to take in a maple write state
maple_tree: use height and depth consistently
maple_tree: use vacant nodes to reduce worst case allocations
maple_tree: break on convergence in mas_spanning_rebalance()
maple_tree: add sufficient height
maple_tree: reorder mas->store_type case statements

Songtang Liu (1):
mm: page_alloc: remove redundant READ_ONCE

SoumishDas (1):
mm: add kernel-doc comment for free_pgd_range()

Su Hui (1):
mm/damon/sysfs-schemes: use kmalloc_array() and size_add()

Thushara.M.S (1):
docs/mm/damon/design: fix spelling mistake

Uladzislau Rezki (Sony) (8):
vmalloc: add for_each_vmap_node() helper
vmalloc: switch to for_each_vmap_node() helper
vmalloc: use for_each_vmap_node() in purge-vmap-area
vmalloc: use atomic_long_add_return_relaxed()
lib/test_vmalloc.c: replace RWSEM to SRCU for setup
lib/test_vmalloc.c: allow built-in execution
MAINTAINERS: add test_vmalloc.c to VMALLOC section
vmalloc: align nr_vmalloc_pages and vmap_lazy_nr

Vishal Moola (Oracle) (3):
mm/compaction: use folio in hugetlb pathway
mm/gup: remove unnecessary check in memfd_pin_folios()
mm/gup: remove page_folio() in memfd_pin_folios()

Vlastimil Babka (1):
memcg: combine slab obj stock charging and accounting

Waiman Long (2):
selftests: memcg: allow low event with no memory.low and memory_recursiveprot on
selftests: memcg: increase error tolerance of child memory.current check in test_memcg_protection()

Ye Liu (7):
mm/show_mem: optimize si_meminfo_node by reducing redundant code
mm/page_alloc: simplify free_page_is_bad by removing free_page_is_bad_report
mm/rmap: rename page__anon_vma to anon_vma for consistency
mm/rmap: fix typo in comment in page_address_in_vma
mm/io-mapping: precompute remap protection flags for clarity
mm/debug_page_alloc: improve error message for invalid guardpage minorder
mm/numa: remove unnecessary local variable in alloc_node_data()

Yuquan Wang (1):
mm: numa_memblks: introduce numa_add_reserved_memblk

Zhongkun He (5):
mm: add swappiness=max arg to memory.reclaim for only anon reclaim
mm: vmscan: add more comments about cache_trim_mode
mm: add max swappiness arg to lru_gen for anonymous memory only
mm: use SWAPPINESS_ANON_ONLY in MGLRU
mm: cma: set early_pfn and bitmap as a union in cma_memrange

gaoxu (1):
mm: add nr_free_highatomic in show_free_areas

CREDITS | 2 +-
Documentation/ABI/testing/sysfs-kernel-mm-damon | 6 +
.../sysfs-kernel-mm-mempolicy-weighted-interleave | 35 +-
Documentation/ABI/testing/sysfs-kernel-mm-numa | 16 +-
Documentation/ABI/testing/sysfs-kernel-slab | 96 +-
Documentation/admin-guide/blockdev/zram.rst | 58 +-
Documentation/admin-guide/cgroup-v1/cgroups.rst | 2 +-
Documentation/admin-guide/cgroup-v1/cpusets.rst | 2 +-
Documentation/admin-guide/cgroup-v2.rst | 27 +
Documentation/admin-guide/kernel-parameters.txt | 25 +
Documentation/admin-guide/mm/damon/index.rst | 11 +-
Documentation/admin-guide/mm/damon/usage.rst | 12 +-
Documentation/admin-guide/mm/index.rst | 1 +
Documentation/admin-guide/mm/kho.rst | 115 ++
Documentation/admin-guide/mm/multigen_lru.rst | 5 +-
Documentation/admin-guide/mm/pagemap.rst | 1 +
Documentation/admin-guide/sysctl/vm.rst | 6 +
Documentation/core-api/index.rst | 1 +
Documentation/core-api/kho/bindings/kho.yaml | 43 +
.../core-api/kho/bindings/memblock/memblock.yaml | 39 +
.../kho/bindings/memblock/reserve-mem.yaml | 40 +
Documentation/core-api/kho/bindings/sub-fdt.yaml | 27 +
Documentation/core-api/kho/concepts.rst | 74 ++
Documentation/core-api/kho/fdt.rst | 80 ++
Documentation/core-api/kho/index.rst | 13 +
Documentation/mm/damon/design.rst | 15 +-
Documentation/mm/damon/index.rst | 6 +-
Documentation/networking/arcnet-hardware.rst | 2 +-
MAINTAINERS | 37 +-
arch/alpha/include/asm/pgtable.h | 7 -
arch/arc/include/asm/hugepage.h | 2 -
arch/arc/include/asm/pgtable-levels.h | 2 -
arch/arc/include/asm/syscall.h | 25 +
arch/arm/include/asm/pgtable-3level.h | 1 -
arch/arm/include/asm/pgtable.h | 1 -
arch/arm/include/asm/syscall.h | 37 +
arch/arm/mm/mmu.c | 2 +-
arch/arm/probes/uprobes/core.c | 4 +-
arch/arm64/Kconfig | 3 +
arch/arm64/include/asm/pgtable-types.h | 20 +-
arch/arm64/include/asm/pgtable.h | 7 -
arch/arm64/include/asm/ptdump.h | 24 +-
arch/arm64/include/asm/syscall.h | 29 +
arch/arm64/kernel/efi.c | 4 +-
arch/arm64/kernel/pi/map_kernel.c | 2 +-
arch/arm64/kernel/pi/map_range.c | 4 +-
arch/arm64/kernel/pi/pi.h | 2 +-
arch/arm64/mm/mmap.c | 2 +-
arch/arm64/mm/mmu.c | 93 +-
arch/arm64/mm/ptdump.c | 50 +-
arch/csky/include/asm/pgalloc.h | 2 +-
arch/csky/include/asm/pgtable.h | 5 -
arch/csky/include/asm/syscall.h | 13 +
arch/hexagon/include/asm/pgtable.h | 3 -
arch/hexagon/include/asm/syscall.h | 21 +
arch/loongarch/include/asm/pgalloc.h | 2 +-
arch/loongarch/include/asm/pgtable.h | 7 -
arch/loongarch/include/asm/syscall.h | 15 +
arch/loongarch/mm/pgtable.c | 9 -
arch/m68k/include/asm/mcf_pgalloc.h | 8 +-
arch/m68k/include/asm/mcf_pgtable.h | 6 -
arch/m68k/include/asm/motorola_pgalloc.h | 10 +-
arch/m68k/include/asm/motorola_pgtable.h | 6 -
arch/m68k/include/asm/sun3_pgtable.h | 6 -
arch/m68k/include/asm/syscall.h | 7 +
arch/m68k/mm/motorola.c | 6 +-
arch/microblaze/include/asm/pgtable.h | 8 -
arch/microblaze/include/asm/syscall.h | 7 +
arch/microblaze/mm/pgtable.c | 2 +-
arch/mips/include/asm/pgalloc.h | 2 +-
arch/mips/include/asm/pgtable.h | 9 -
arch/mips/include/asm/syscall.h | 43 +
arch/mips/mm/pgtable-32.c | 10 -
arch/mips/mm/pgtable-64.c | 9 -
arch/nios2/include/asm/pgtable.h | 6 -
arch/nios2/include/asm/syscall.h | 16 +
arch/openrisc/include/asm/pgtable.h | 2 -
arch/openrisc/include/asm/syscall.h | 13 +
arch/openrisc/mm/ioremap.c | 2 +-
arch/parisc/include/asm/pgalloc.h | 2 +-
arch/parisc/include/asm/pgtable.h | 6 -
arch/parisc/include/asm/syscall.h | 19 +
arch/powerpc/include/asm/book3s/64/pgtable.h | 1 -
arch/powerpc/include/asm/pgtable.h | 3 +-
arch/powerpc/include/asm/syscall.h | 20 +
arch/powerpc/mm/book3s64/pgtable.c | 7 +-
arch/powerpc/mm/pgtable-frag.c | 30 +-
arch/powerpc/mm/ptdump/ptdump.c | 46 +-
arch/riscv/include/asm/pgtable-64.h | 2 -
arch/riscv/include/asm/pgtable.h | 2 -
arch/riscv/include/asm/syscall.h | 19 +
arch/riscv/mm/init.c | 26 +-
arch/riscv/mm/ptdump.c | 46 +-
arch/s390/include/asm/pgalloc.h | 2 +-
arch/s390/include/asm/pgtable.h | 11 -
arch/s390/include/asm/syscall.h | 21 +
arch/s390/include/asm/tlb.h | 4 +-
arch/s390/mm/dump_pagetables.c | 46 +-
arch/s390/mm/pgalloc.c | 2 +-
arch/sh/include/asm/pgtable_32.h | 8 -
arch/sh/include/asm/syscall_32.h | 24 +
arch/sparc/include/asm/pgtable_32.h | 15 +-
arch/sparc/include/asm/pgtable_64.h | 2 -
arch/sparc/include/asm/syscall.h | 22 +
arch/sparc/mm/init_64.c | 29 +-
arch/sparc/mm/srmmu.c | 2 +-
arch/um/include/asm/pgtable-2level.h | 1 -
arch/um/include/asm/pgtable-4level.h | 9 -
arch/um/include/asm/pgtable.h | 18 +-
arch/um/include/asm/syscall-generic.h | 19 +
arch/x86/Kconfig | 3 +
arch/x86/boot/compressed/kaslr.c | 50 +-
arch/x86/include/asm/pgtable.h | 21 +-
arch/x86/include/asm/setup.h | 2 +
arch/x86/include/asm/syscall.h | 43 +
arch/x86/include/uapi/asm/setup_data.h | 13 +-
arch/x86/kernel/e820.c | 18 +
arch/x86/kernel/kexec-bzimage64.c | 37 +
arch/x86/kernel/setup.c | 42 +-
arch/x86/mm/dump_pagetables.c | 71 +-
arch/x86/mm/init_64.c | 15 +-
arch/x86/mm/ioremap.c | 7 +-
arch/x86/mm/pat/memtype.c | 194 +--
arch/x86/mm/pat/memtype_interval.c | 63 +-
arch/x86/mm/pgtable.c | 9 +-
arch/x86/realmode/init.c | 2 +
arch/xtensa/include/asm/pgtable.h | 6 -
arch/xtensa/include/asm/syscall.h | 18 +
drivers/acpi/numa/srat.c | 15 +-
drivers/base/memory.c | 51 +
drivers/base/node.c | 9 +
drivers/block/zram/zram_drv.c | 331 +++--
drivers/dax/kmem.c | 10 +-
drivers/gpu/drm/i915/i915_mm.c | 4 +-
drivers/of/fdt.c | 34 +
drivers/of/kexec.c | 42 +
fs/dax.c | 3 +-
fs/exec.c | 69 +-
fs/f2fs/data.c | 4 +-
fs/f2fs/inline.c | 4 +-
fs/f2fs/super.c | 2 +-
fs/fuse/file.c | 4 +-
fs/jfs/jfs_metapage.c | 106 ++
fs/proc/page.c | 161 +--
fs/proc/task_mmu.c | 17 +-
include/asm-generic/hugetlb.h | 5 -
include/asm-generic/memory_model.h | 10 +-
include/asm-generic/pgalloc.h | 11 +-
include/asm-generic/syscall.h | 30 +
include/linux/cpuset.h | 9 +-
include/linux/damon.h | 6 +
include/linux/fs.h | 25 +
include/linux/gfp.h | 8 +-
include/linux/huge_mm.h | 17 +-
include/linux/hugetlb.h | 15 +-
include/linux/kexec.h | 5 +
include/linux/kexec_handover.h | 109 ++
include/linux/khugepaged.h | 8 -
include/linux/maple_tree.h | 4 +
include/linux/memblock.h | 41 +-
include/linux/memcontrol.h | 55 +-
include/linux/memory.h | 10 +
include/linux/mempolicy.h | 4 +
include/linux/mm.h | 357 ++----
include/linux/mm_inline.h | 2 +
include/linux/mm_types.h | 36 +-
include/linux/mmap_lock.h | 227 ++++
include/linux/mmzone.h | 88 ++
include/linux/numa_memblks.h | 1 +
include/linux/page-flags-layout.h | 4 +-
include/linux/page-flags.h | 21 +-
include/linux/pagemap.h | 91 +-
include/linux/percpu-defs.h | 2 +-
include/linux/pgtable.h | 131 +-
include/linux/ptdump.h | 15 +-
include/linux/rmap.h | 2 +-
include/linux/swap.h | 12 +-
include/linux/uprobes.h | 6 +-
include/linux/util_macros.h | 3 +
include/linux/xarray.h | 24 +-
include/linux/zpool.h | 4 +-
include/linux/zsmalloc.h | 3 +-
include/trace/events/huge_memory.h | 12 +-
include/trace/events/mmflags.h | 4 +-
include/trace/events/sched.h | 33 +
include/uapi/linux/fs.h | 1 +
include/uapi/linux/ptrace.h | 7 +-
init/main.c | 2 +
kernel/Kconfig.kexec | 14 +
kernel/Makefile | 1 +
kernel/bpf/syscall.c | 2 +-
kernel/cgroup/cpuset.c | 40 +-
kernel/events/uprobes.c | 357 +++---
kernel/fork.c | 277 +----
kernel/kexec_file.c | 13 +
kernel/kexec_handover.c | 1266 ++++++++++++++++++++
kernel/kexec_internal.h | 16 +
kernel/power/snapshot.c | 42 +-
kernel/ptrace.c | 179 ++-
kernel/sched/fair.c | 9 +
lib/Kconfig.debug | 3 +-
lib/alloc_tag.c | 34 +-
lib/iov_iter.c | 30 +-
lib/maple_tree.c | 191 +--
lib/test_vmalloc.c | 22 +-
lib/test_xarray.c | 17 +-
lib/xarray.c | 9 +-
mm/Kconfig | 6 +-
mm/Makefile | 4 +-
mm/cma.c | 11 +-
mm/cma.h | 6 +-
mm/compaction.c | 24 +-
mm/damon/core.c | 41 +
mm/damon/paddr.c | 1 -
mm/damon/sysfs-schemes.c | 47 +-
mm/damon/tests/core-kunit.h | 70 ++
mm/debug.c | 6 +-
mm/debug_page_alloc.c | 2 +-
mm/debug_vm_pgtable.c | 18 +-
mm/execmem.c | 2 +
mm/filemap.c | 2 +-
mm/gup.c | 145 +--
mm/huge_memory.c | 63 +-
mm/hugetlb.c | 137 +--
mm/hugetlb_cma.c | 11 +-
mm/internal.h | 9 +-
mm/io-mapping.c | 9 +-
mm/khugepaged.c | 34 +-
mm/kmemleak.c | 9 +-
mm/kmsan/core.c | 12 +-
mm/kmsan/hooks.c | 6 +-
mm/kmsan/init.c | 3 +-
mm/kmsan/instrumentation.c | 4 -
mm/kmsan/kmsan.h | 1 -
mm/kmsan/report.c | 6 +-
mm/kmsan/shadow.c | 7 +-
mm/madvise.c | 101 +-
mm/memblock.c | 317 ++++-
mm/memcontrol-v1.c | 9 +-
mm/memcontrol.c | 648 +++++-----
mm/memfd.c | 1 +
mm/memory.c | 430 +++----
mm/memory_hotplug.c | 8 +-
mm/mempolicy.c | 558 ++++++---
mm/memremap.c | 8 +-
mm/migrate.c | 23 +-
mm/mincore.c | 22 +-
mm/mm_init.c | 50 +-
mm/mmap.c | 306 +++--
mm/mmap_lock.c | 273 +++++
mm/mmu_notifier.c | 2 +-
mm/mprotect.c | 2 +-
mm/mremap.c | 4 -
mm/nommu.c | 28 +-
mm/numa.c | 4 +-
mm/numa_memblks.c | 22 +
mm/page-writeback.c | 3 +-
mm/page_alloc.c | 62 +-
mm/page_owner.c | 2 +-
mm/ptdump.c | 62 +-
mm/rmap.c | 30 +-
mm/secretmem.c | 14 +-
mm/show_mem.c | 18 +-
mm/slab_common.c | 2 +-
mm/swap.c | 8 +-
mm/swap.h | 18 +
mm/swap_state.c | 8 +-
mm/swapfile.c | 184 ++-
mm/userfaultfd.c | 2 +-
mm/vma.c | 204 +++-
mm/vma.h | 15 +
mm/vma_exec.c | 161 +++
mm/vma_init.c | 151 +++
mm/vmalloc.c | 208 ++--
mm/vmscan.c | 107 +-
mm/vmstat.c | 2 +-
mm/workingset.c | 4 +-
mm/zpdesc.h | 3 +
mm/zpool.c | 8 +-
mm/zsmalloc.c | 32 +-
mm/zswap.c | 2 +-
rust/helpers/helpers.c | 1 +
rust/helpers/mm.c | 50 +
rust/kernel/lib.rs | 1 +
rust/kernel/miscdevice.rs | 45 +
rust/kernel/mm.rs | 344 ++++++
rust/kernel/mm/virt.rs | 471 ++++++++
rust/kernel/task.rs | 247 ++--
samples/Makefile | 1 +
samples/damon/Kconfig | 13 +
samples/damon/Makefile | 1 +
samples/damon/mtier.c | 178 +++
samples/damon/prcl.c | 2 +-
tools/include/uapi/linux/fs.h | 19 +-
tools/testing/memblock/tests/alloc_api.c | 22 +-
tools/testing/memblock/tests/alloc_helpers_api.c | 4 +-
tools/testing/memblock/tests/alloc_nid_api.c | 20 +-
tools/testing/radix-tree/maple.c | 126 +-
tools/testing/selftests/cgroup/test_memcontrol.c | 22 +-
tools/testing/selftests/damon/Makefile | 2 +-
tools/testing/selftests/damon/_chk_dependency.sh | 52 -
tools/testing/selftests/damon/_damon_sysfs.py | 5 +
tools/testing/selftests/damon/_debugfs_common.sh | 64 -
.../selftests/filesystems/eventfd/eventfd_test.c | 7 +-
tools/testing/selftests/mm/.gitignore | 2 +
tools/testing/selftests/mm/Makefile | 2 +
tools/testing/selftests/mm/guard-regions.c | 57 +
.../selftests/mm/hugetlb_reparenting_test.sh | 98 +-
tools/testing/selftests/mm/map_fixed_noreplace.c | 2 +-
tools/testing/selftests/mm/merge.c | 455 +++++++
tools/testing/selftests/mm/pagemap_ioctl.c | 16 +-
tools/testing/selftests/mm/pfnmap.c | 196 +++
tools/testing/selftests/mm/run_vmtests.sh | 8 +
tools/testing/selftests/mm/uffd-unit-tests.c | 202 ++++
tools/testing/selftests/mm/vm_util.c | 62 +
tools/testing/selftests/mm/vm_util.h | 21 +
tools/testing/selftests/ptrace/Makefile | 2 +-
tools/testing/selftests/ptrace/set_syscall_info.c | 519 ++++++++
tools/testing/vma/Makefile | 2 +-
tools/testing/vma/vma.c | 127 +-
tools/testing/vma/vma_internal.h | 281 ++++-
321 files changed, 11607 insertions(+), 4263 deletions(-)
create mode 100644 Documentation/admin-guide/mm/kho.rst
create mode 100644 Documentation/core-api/kho/bindings/kho.yaml
create mode 100644 Documentation/core-api/kho/bindings/memblock/memblock.yaml
create mode 100644 Documentation/core-api/kho/bindings/memblock/reserve-mem.yaml
create mode 100644 Documentation/core-api/kho/bindings/sub-fdt.yaml
create mode 100644 Documentation/core-api/kho/concepts.rst
create mode 100644 Documentation/core-api/kho/fdt.rst
create mode 100644 Documentation/core-api/kho/index.rst
create mode 100644 include/linux/kexec_handover.h
create mode 100644 kernel/kexec_handover.c
create mode 100644 mm/vma_exec.c
create mode 100644 mm/vma_init.c
create mode 100644 rust/helpers/mm.c
create mode 100644 rust/kernel/mm.rs
create mode 100644 rust/kernel/mm/virt.rs
create mode 100644 samples/damon/mtier.c
delete mode 100644 tools/testing/selftests/damon/_chk_dependency.sh
delete mode 100644 tools/testing/selftests/damon/_debugfs_common.sh
create mode 100644 tools/testing/selftests/mm/merge.c
create mode 100644 tools/testing/selftests/mm/pfnmap.c
create mode 100644 tools/testing/selftests/ptrace/set_syscall_info.c



Return-Path: <linux-kernel+bounces-669255-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C157C41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:08:43 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 3E6863B8637
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:08:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id ACEEA1DF965;
Sat, 31 May 2025 22:08:38 +0000 (UTC)
Received: from mail-il1-f205.google.com (mail-il1-f205.google.com [209.85.166.205])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6B3CD18D63A
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:08:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.205
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748729318; cv=none; b=nJhY8Q/0QxjWkTAvN0wMA4M6qLUtCGaqMuQIkoZBpYJ94ZYKaRVHy285qVfEqa/576XDzzR+XkBhstuM3p0jZlgxGAjRiUFm52+yc2ua9Klb4yqaaQ4INkfYvM+CfiYeoAiiZH7Ni/ZX2LFUA/mqOIWdIUB5vGeNAywBtPh1Qes=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748729318; c=relaxed/simple;
bh=WLa7oNWA5CDRx2xlWQIm6EZZcYZWiI5vRgs+5RpVfw8=;
h=MIME-Version:Date:Message-ID:Subject:From:To:Content-Type; b=n5gATeOfIh7uWwkZtvoFvRHFZ5OK0SlrIaX/8c3fAV6kiqscmJkGdg6qcvEif27ffpyWeV6Sv0hZnXIvfheFPW7YspZQo2kf4zXDgpq5g1UirpcsUlzAxxr5fKD1oJfOEngWv9NOgnTYqpPCnU+Xz37rVLcXeB7Ar2E7Z3DyDyI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.205
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f205.google.com with SMTP id e9e14a558f8ab-3dd759fd518so38493975ab.2
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:08:36 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748729315; x=1749334115;
h=to:from:subject:message-id:date:mime-version:x-gm-message-state
:from:to:cc:subject:date:message-id:reply-to;
bh=kKSaKzHAhnlkIYbXowCmdw9SvU1FsOjCtk72zMGXAS0=;
b=Tj7e/UPmRBLic8gRTfXsgK11Yc0zg3xkdexzY0q70S0SKRWaWBnqEfBhh3OkfXFYqR
GO9NN9X5g359PE5uaGKr1pQwugQuC6Em+3VfHeL2FRNXlJPLOyTxYB0kzjHTC49mh0kS
o7axmIOBPHKwg99tnj8pTH0MCBoe7mFLPK1axa33dMCNsvI9dfJWHdeZlWfsTbSXrc67
LR8Jy2SHu40Cc9Ihkv1KQmPYfMxjSPbasqf51cBVHnVj33fjrlE9ooBOsdT73gKWUZNb
zQhfJE032Kij4R0CxHZE7sfEMuEfU0amSMtf5ggstNhnPz15WNKZUTrCaIwr82cr6h7/
I8IA==
X-Forwarded-Encrypted: i=1; AJvYcCVSJCdKYz/QIiyXOqO/sgkIuApmZF3JlmqV+pevbcCz2oKiOqeDNQ7FFTNv2l+4h17v3bCW3ENf5ruNu0s=@vger.kernel.org
X-Gm-Message-State: AOJu0YyhZjPgZ6F19Rocpc46N57Qhe//HoFEcwMA/64UIW7cjRuHEFNK
IQg5vcCbpQqnnVL8GlfyVKE3OknUM5bu4ksFpGyfxP0fBPrzvkka3kssYiGt+vtQRKZZLWMG0Q3
TMaZdztaLgjdYlQihIPAhqyO2PVzs2dlTvsGviiAG421claCbGOr1GkvPHBU=
X-Google-Smtp-Source: AGHT+IGpL9XtdpJc1/Py6FFAuxDrAYTnA5CrpSFy8fTQrN8POgaVaVlqK1xcse5w5kf3MIvuj/RB1CGbxBEytJeXnVrqo9g6FtKU
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a92:ca47:0:b0:3ce:4b12:fa17 with SMTP id
e9e14a558f8ab-3dd99c41659mr87207635ab.19.1748729315516; Sat, 31 May 2025
15:08:35 -0700 (PDT)
Date: Sat, 31 May 2025 15:08:35 -0700
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b7de3.a00a0220.d8eae.001e.GAE@xxxxxxxxxx>
Subject: [syzbot] [gfs2?] kernel BUG in gfs2_quota_cleanup (2)
From: syzbot <syzbot+8f7c48186f31bbcfd78d@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: agruenba@xxxxxxxxxx, gfs2@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot found the following issue on:

HEAD commit: 914873bc7df9 Merge tag 'x86-build-2025-05-25' of git://git..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=13e80482580000
kernel config: https://syzkaller.appspot.com/x/.config?x=eeb82b5d1d67d535
dashboard link: https://syzkaller.appspot.com/bug?extid=8f7c48186f31bbcfd78d
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-1~exp1~20250514183223.118), Debian LLD 20.1.6

Unfortunately, I don't have any reproducer for this issue yet.

Downloadable assets:
disk image (non-bootable): https://storage.googleapis.com/syzbot-assets/d900f083ada3/non_bootable_disk-914873bc.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/b88f5c802da5/vmlinux-914873bc.xz
kernel image: https://storage.googleapis.com/syzbot-assets/2481c0fe9c9f/bzImage-914873bc.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+8f7c48186f31bbcfd78d@xxxxxxxxxxxxxxxxxxxxxxxxx

FAULT_INJECTION: forcing a failure.
name failslab, interval 1, probability 0, space 0, times 1
CPU: 0 UID: 0 PID: 5313 Comm: syz.0.0 Not tainted 6.15.0-syzkaller-01972-g914873bc7df9 #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
Call Trace:
<TASK>
dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
fail_dump lib/fault-inject.c:73 [inline]
should_fail_ex+0x414/0x560 lib/fault-inject.c:174
should_failslab+0xa8/0x100 mm/failslab.c:46
slab_pre_alloc_hook mm/slub.c:4100 [inline]
slab_alloc_node mm/slub.c:4176 [inline]
kmem_cache_alloc_noprof+0x73/0x3c0 mm/slub.c:4203
qd_alloc+0x50/0x250 fs/gfs2/quota.c:234
gfs2_quota_init+0x777/0x1230 fs/gfs2/quota.c:1448
gfs2_make_fs_rw+0x181/0x2b0 fs/gfs2/super.c:149
gfs2_reconfigure+0x617/0xb20 fs/gfs2/ops_fstype.c:1595
reconfigure_super+0x224/0x890 fs/super.c:1082
vfs_cmd_reconfigure fs/fsopen.c:262 [inline]
vfs_fsconfig_locked+0x171/0x320 fs/fsopen.c:291
__do_sys_fsconfig fs/fsopen.c:467 [inline]
__se_sys_fsconfig+0x78e/0x8d0 fs/fsopen.c:344
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xf6/0x220 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f671238e969
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f6713195038 EFLAGS: 00000246 ORIG_RAX: 00000000000001af
RAX: ffffffffffffffda RBX: 00007f67125b6080 RCX: 00007f671238e969
RDX: 0000000000000000 RSI: 0000000000000007 RDI: 0000000000000004
RBP: 00007f6713195090 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 0000000000000001 R14: 00007f67125b6080 R15: 00007ffc65f837d8
</TASK>
------------[ cut here ]------------
kernel BUG at fs/gfs2/quota.c:1520!
Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI
CPU: 0 UID: 0 PID: 5313 Comm: syz.0.0 Not tainted 6.15.0-syzkaller-01972-g914873bc7df9 #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2~bpo12+1 04/01/2014
RIP: 0010:gfs2_quota_cleanup+0x6ee/0x6f0 fs/gfs2/quota.c:1519
Code: ff 44 89 f1 80 e1 07 80 c1 03 38 c1 0f 8c c2 fd ff ff 4c 89 f7 e8 b2 ac 2e fe e9 b5 fd ff ff e8 88 bf 69 07 e8 b3 cc cb fd 90 <0f> 0b 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 66 0f 1f 00
RSP: 0018:ffffc9000d23f9a0 EFLAGS: 00010293
RAX: ffffffff83f407fd RBX: 0000000000000002 RCX: ffff888000634880
RDX: 0000000000000000 RSI: 0000000000000002 RDI: 0000000000000000
RBP: ffffc9000d23fab0 R08: ffff8880342e80af R09: 1ffff1100685d015
R10: dffffc0000000000 R11: ffffed100685d016 R12: 1ffff92001a47f38
R13: dffffc0000000000 R14: dffffc0000000000 R15: 0000000000000000
FS: 00007f67131956c0(0000) GS:ffff88808d291000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f6713194fc8 CR3: 000000003f46f000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
gfs2_quota_init+0x10d8/0x1230 fs/gfs2/quota.c:1509
gfs2_make_fs_rw+0x181/0x2b0 fs/gfs2/super.c:149
gfs2_reconfigure+0x617/0xb20 fs/gfs2/ops_fstype.c:1595
reconfigure_super+0x224/0x890 fs/super.c:1082
vfs_cmd_reconfigure fs/fsopen.c:262 [inline]
vfs_fsconfig_locked+0x171/0x320 fs/fsopen.c:291
__do_sys_fsconfig fs/fsopen.c:467 [inline]
__se_sys_fsconfig+0x78e/0x8d0 fs/fsopen.c:344
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xf6/0x220 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f671238e969
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f6713195038 EFLAGS: 00000246 ORIG_RAX: 00000000000001af
RAX: ffffffffffffffda RBX: 00007f67125b6080 RCX: 00007f671238e969
RDX: 0000000000000000 RSI: 0000000000000007 RDI: 0000000000000004
RBP: 00007f6713195090 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 0000000000000001 R14: 00007f67125b6080 R15: 00007ffc65f837d8
</TASK>
Modules linked in:
---[ end trace 0000000000000000 ]---
RIP: 0010:gfs2_quota_cleanup+0x6ee/0x6f0 fs/gfs2/quota.c:1519
Code: ff 44 89 f1 80 e1 07 80 c1 03 38 c1 0f 8c c2 fd ff ff 4c 89 f7 e8 b2 ac 2e fe e9 b5 fd ff ff e8 88 bf 69 07 e8 b3 cc cb fd 90 <0f> 0b 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 66 0f 1f 00
RSP: 0018:ffffc9000d23f9a0 EFLAGS: 00010293
RAX: ffffffff83f407fd RBX: 0000000000000002 RCX: ffff888000634880
RDX: 0000000000000000 RSI: 0000000000000002 RDI: 0000000000000000
RBP: ffffc9000d23fab0 R08: ffff8880342e80af R09: 1ffff1100685d015
R10: dffffc0000000000 R11: ffffed100685d016 R12: 1ffff92001a47f38
R13: dffffc0000000000 R14: dffffc0000000000 R15: 0000000000000000
FS: 00007f67131956c0(0000) GS:ffff88808d291000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f6713194fc8 CR3: 000000003f46f000 CR4: 0000000000352ef0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400


---
This report is generated by a bot. It may contain errors.
See https://goo.gl/tpsmEJ for more information about syzbot.
syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxx.

syzbot will keep track of this issue. See:
https://goo.gl/tpsmEJ#status for how to communicate with syzbot.

If the report is already addressed, let syzbot know by replying with:
#syz fix: exact-commit-title

If you want to overwrite report's subsystems, reply with:
#syz set subsystems: new-subsystem
(See the list of subsystem names on the web dashboard)

If the report is a duplicate of another one, reply with:
#syz dup: exact-subject-of-another-report

If you want to undo deduplication, reply with:
#syz undup


Return-Path: <linux-kernel+bounces-669256-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3305D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:10:01 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id D30AD3BCD6B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:09:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 1A1A31E0DE3;
Sat, 31 May 2025 22:09:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="EWW4WThU"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12])
(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 ACE1B18D63A;
Sat, 31 May 2025 22:09:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.12
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748729395; cv=none; b=UlfUd04KMImV+5cg+zRkNc4XbIRWADzs7RdsWGBfNjOZrJ6Q/Sn6VJ03AEiRymU7SmPmGUK6bl900f6XVIPZZElYikeIj5Y3H1MjCuxHEgTbo18/kHmueh6BJQjQY6r9sTrE7MZdxrgqbk2h1FS3xp8lcNSwRgB7+qeg4+3fRf8=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748729395; c=relaxed/simple;
bh=qD9FC1vyMvm89EJTpfDitWPr5e5+DYZUgCl7MfyLMWU=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=YsLqKlmS+6G0h2+WfmQnBkx+7wDeV1Ui1J4FMnx7m6tvJ+7Bv0dIpnYzprWKLCcLRAafnSfGZONxBtvqRVwpZL7bfyUtvg5ceDAChfsG6P7G4p0eGHQZnvFyaQ5WchSZ6jcLM7xViKrn2pQ5Adl91cIQl5ALtsUwN+Ku+/2mNsc=
ARC-Authentication-Results:i=1; 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=EWW4WThU; arc=none smtp.client-ip=198.175.65.12
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748729394; x=1780265394;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=qD9FC1vyMvm89EJTpfDitWPr5e5+DYZUgCl7MfyLMWU=;
b=EWW4WThU2SxjUnbrlIRpZXbwrVYm7IgOxQuO3SlYTcIQQZFOLSNG8RZc
ourq7WUj8Et6OdcvFMU54eeOn9v4ffwDALy8nTPA/PYZ/FJFzUPVPYqj7
qXIjTtDf7ogEEWGZnNt6SVipx1hPIhvTYNiM15ea7wapRMyqxoGGkqkPT
IW8WMfDs3Kk33KF9XSXWGxLomb1lvfzys5ESk1kQXh+jM+v8+E1OAHGj3
NxKOoUhRYMjUYNB0QSrdMercbXrpDtB/hd0t8pVPkMpwEeNYn5K1Ho21C
i319SYQ6m6AVTLl5Imt+iqVVSs4TZSgRKWWurGRht1iDI3UcdRDVjWIUa
Q==;
X-CSE-ConnectionGUID: 1AtnRWTTT7yjTs5oZH46IQ==
X-CSE-MsgGUID: jm+e6CDJQKGjWc38Nc3uCw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="62187627"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="62187627"
Received: from fmviesa002.fm.intel.com ([10.60.135.142])
by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 15:09:53 -0700
X-CSE-ConnectionGUID: DR2wqyAZQZGWq35UX2HHTQ==
X-CSE-MsgGUID: Kjbyv2bSSkWJOLFCgt4FuQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="167378829"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by fmviesa002.fm.intel.com with ESMTP; 31 May 2025 15:09:51 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLUOi-000Yfg-2v;
Sat, 31 May 2025 22:09:48 +0000
Date: Sun, 1 Jun 2025 06:09:24 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Christian Lamparter <chunkeey@xxxxxxxxx>, linux-spi@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Paul Gazzillo <paul@xxxxxxxxx>,
Necip Fazil Yildiran <fazilyildiran@xxxxxxxxx>,
oe-kbuild-all@xxxxxxxxxxxxxxx, Mark Brown <broonie@xxxxxxxxxx>
Subject: Re: [PATCH v1] spi: push HAS_IOMEM dependency down to the drivers
Message-ID: <202506010509.Ln1e8D4u-lkp@xxxxxxxxx>
References: <20250530234941.950431-1-chunkeey@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530234941.950431-1-chunkeey@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Christian,

kernel test robot noticed the following build warnings:

[auto build test WARNING on broonie-spi/for-next]
[also build test WARNING on linus/master next-20250530]
[cannot apply to v6.15]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Christian-Lamparter/spi-push-HAS_IOMEM-dependency-down-to-the-drivers/20250531-075211
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
patch link: https://lore.kernel.org/r/20250530234941.950431-1-chunkeey%40gmail.com
patch subject: [PATCH v1] spi: push HAS_IOMEM dependency down to the drivers
config: s390-kismet-CONFIG_MDIO_MSCC_MIIM-CONFIG_NET_DSA_MSCC_OCELOT_EXT-0-0 (https://download.01.org/0day-ci/archive/20250601/202506010509.Ln1e8D4u-lkp@xxxxxxxxx/config)
reproduce: (https://download.01.org/0day-ci/archive/20250601/202506010509.Ln1e8D4u-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506010509.Ln1e8D4u-lkp@xxxxxxxxx/

kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for MDIO_MSCC_MIIM when selected by NET_DSA_MSCC_OCELOT_EXT
WARNING: unmet direct dependencies detected for MFD_OCELOT
Depends on [n]: HAS_IOMEM [=n] && SPI_MASTER [=y]
Selected by [y]:
- NET_DSA_MSCC_OCELOT_EXT [=y] && NETDEVICES [=y] && NET_DSA [=y] && SPI [=y] && NET_VENDOR_MICROSEMI [=y] && PTP_1588_CLOCK_OPTIONAL [=y]

WARNING: unmet direct dependencies detected for MDIO_MSCC_MIIM
Depends on [n]: NETDEVICES [=y] && MDIO_DEVICE [=y] && MDIO_BUS [=y] && HAS_IOMEM [=n] && REGMAP_MMIO [=y]
Selected by [y]:
- NET_DSA_MSCC_OCELOT_EXT [=y] && NETDEVICES [=y] && NET_DSA [=y] && SPI [=y] && NET_VENDOR_MICROSEMI [=y] && PTP_1588_CLOCK_OPTIONAL [=y]

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669257-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1BCE541E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:10:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 40A65179848
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:10:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 180A61E1E1B;
Sat, 31 May 2025 22:10:29 +0000 (UTC)
Received: from mail-il1-f205.google.com (mail-il1-f205.google.com [209.85.166.205])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6E60118DF89
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:10:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.205
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748729428; cv=none; b=n9EkJfgIfMAnMBeQhv4CHADwYhfstiYyYimqLTdJHbaSUgxn7cEcq2mnAL/YLAnMT+fIMVxOmEdPSyjsce8EB9ymUcsmZNnRbGQT6Lzpt4cqeMJKBmmL1Ab1eQS9nlf2J/4ytJkVmDkXXRSXubHvYcWXjrmjmN1eJDkfqkm58eE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748729428; c=relaxed/simple;
bh=oIifjk9L5QF7cdQ+XWkmh2JHuGfNZAgRYDBR5Us6Z2w=;
h=MIME-Version:Date:In-Reply-To:Message-ID:Subject:From:To:
Content-Type; b=sHizMVZm/4GpnxFkO+H4B00xjlQM27+ChoY7iuuQPbGgmMvWlTfDbJSyaaZoqBpU+HlWaZAtsoc5j9kQDt2AU93dDPrTaiMX+wIfrTkkowasiYoIjqyvZDQ7fCM2qTs5QuRJZxgaNVo9hDlvZxcT/3edp6rfByjTNmTszHR/dSI=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.205
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f205.google.com with SMTP id e9e14a558f8ab-3dda50c4072so6309125ab.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 15:10:26 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748729425; x=1749334225;
h=to:from:subject:message-id:in-reply-to:date:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=+hXfmHIYcMulUPoPBdwKUNqqRuhUli24eZSQwojohek=;
b=vp/q0gE2rxBxxA8BYO20YwGLw6ygGphaAVTqE3kWuoLDVZ5a2I5K4CgP6Usqetn7Qt
KBufmD2CTMpJr2ePVhOjSErBf3em9zqDg00R9LpFSHUUIabNgnlWFyzR/MJtZlM4kDXk
wpnGe1bUv95cNE3rtGa4Jbgh2Qs4vBq4BU0Ubb5+WfjC3e+psiKoi3n1GEk6MPgHzdcv
2bUNrrs93LapY/rX+YN0lecVyfP+yiiDonhx9fTltY4P3BAI+RNfAnh/hr50BS0aqvjZ
Q6SamKxv3EKL0SWyMxD7ofivz+fDsq0WIoDDg3yI8qaFQ+fHhduwdGUSh+beeFFNNZzR
7vGw==
X-Forwarded-Encrypted: i=1; AJvYcCXS/AZuiprOStpiDEoDbeLTDzv/W1D+ZgDb1hP8u44goDxMghxlnnBL94Wp9Qg8nh0syrlwiqOIccDXzfU=@vger.kernel.org
X-Gm-Message-State: AOJu0YwSARj2RcV79iEsVce5EeZxQ4SGEJJlBobjjJ6nsPUMuy4i1yLN
ivrezG6BAw9MGCJ3l3MBF13CQZcCR8Vlk6eSmWbO61yO19+DTJ5vEHOo5cifMoTsLOYJHYab+5n
u2cN5a8uMzG/QkkqBZzJpwWRfL7ophOYwwyslF1XRx4Gk3TefluOJXOKHOFI=
X-Google-Smtp-Source: AGHT+IEHzVR4yywyPwb1N0XQ9c7DucpF5p9l3koGqXg1enSSKId02DM0DHi3akeMAEjdCYjSYaRZXXICCywXQN/doBFV6ZAyx4z6
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:1687:b0:3db:7c22:303c with SMTP id
e9e14a558f8ab-3dd9c9936d5mr70331245ab.8.1748729425643; Sat, 31 May 2025
15:10:25 -0700 (PDT)
Date: Sat, 31 May 2025 15:10:25 -0700
In-Reply-To: <683447f8.a70a0220.29d4a0.0803.GAE@xxxxxxxxxx>
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b7e51.a70a0220.1a6ae.000e.GAE@xxxxxxxxxx>
Subject: Re: [syzbot] [bcachefs?] possible deadlock in start_poll_synchronize_rcu_expedited
From: syzbot <syzbot+cbc79a37b5fa23efd23b@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: kent.overstreet@xxxxxxxxx, linux-bcachefs@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

syzbot has found a reproducer for the following issue on:

HEAD commit: 0f70f5b08a47 Merge tag 'pull-automount' of git://git.kerne..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=17ea200c580000
kernel config: https://syzkaller.appspot.com/x/.config?x=22765942f2e2ebcf
dashboard link: https://syzkaller.appspot.com/bug?extid=cbc79a37b5fa23efd23b
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-1~exp1~20250514183223.118), Debian LLD 20.1.6
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=134b1970580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/4af859a809ab/disk-0f70f5b0.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/d3df10c6aa23/vmlinux-0f70f5b0.xz
kernel image: https://storage.googleapis.com/syzbot-assets/3a2d5f44d739/bzImage-0f70f5b0.xz
mounted in repro: https://storage.googleapis.com/syzbot-assets/f623992a9c46/mount_0.gz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+cbc79a37b5fa23efd23b@xxxxxxxxxxxxxxxxxxxxxxxxx

ODEBUG: object ffffc90003387b90 is on stack ffffc90003380000, but NOT annotated.
======================================================
WARNING: possible circular locking dependency detected
6.15.0-syzkaller-09161-g0f70f5b08a47 #0 Not tainted
------------------------------------------------------
bch-copygc/loop/6108 is trying to acquire lock:
ffffffff8e130e00 (console_owner){....}-{0:0}, at: console_trylock_spinning kernel/printk/printk.c:2048 [inline]
ffffffff8e130e00 (console_owner){....}-{0:0}, at: vprintk_emit+0x444/0x7a0 kernel/printk/printk.c:2449

but task is already holding lock:
ffffffff99c79a98 (&obj_hash[i].lock){-.-.}-{2:2}, at: __debug_object_init+0x85/0x3c0 lib/debugobjects.c:741

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #4 (&obj_hash[i].lock){-.-.}-{2:2}:
lock_acquire+0x120/0x360 kernel/locking/lockdep.c:5871
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xa7/0xf0 kernel/locking/spinlock.c:162
debug_object_activate+0xbb/0x420 lib/debugobjects.c:818
debug_work_activate kernel/workqueue.c:664 [inline]
insert_work+0x35/0x330 kernel/workqueue.c:2180
__queue_work+0xcfc/0xfe0 kernel/workqueue.c:2341
queue_work_on+0x181/0x270 kernel/workqueue.c:2392
queue_work include/linux/workqueue.h:662 [inline]
start_poll_synchronize_rcu_expedited+0xfc/0x140 kernel/rcu/tree_exp.h:1075
rcu_init+0x108/0x160 kernel/rcu/tree.c:4854
start_kernel+0x1fb/0x500 init/main.c:990
x86_64_start_reservations+0x24/0x30 arch/x86/kernel/head64.c:307
x86_64_start_kernel+0x143/0x1c0 arch/x86/kernel/head64.c:288
common_startup_64+0x13e/0x147

-> #3 (&pool->lock){-.-.}-{2:2}:
lock_acquire+0x120/0x360 kernel/locking/lockdep.c:5871
__raw_spin_lock include/linux/spinlock_api_smp.h:133 [inline]
_raw_spin_lock+0x2e/0x40 kernel/locking/spinlock.c:154
__queue_work+0x7b0/0xfe0 kernel/workqueue.c:-1
queue_work_on+0x181/0x270 kernel/workqueue.c:2392
queue_work include/linux/workqueue.h:662 [inline]
rpm_suspend+0xe54/0x1720 drivers/base/power/runtime.c:673
__pm_runtime_idle+0x12f/0x1a0 drivers/base/power/runtime.c:1112
pm_runtime_put include/linux/pm_runtime.h:470 [inline]
__device_attach+0x342/0x400 drivers/base/dd.c:1047
bus_probe_device+0x185/0x260 drivers/base/bus.c:537
device_add+0x7b6/0xb50 drivers/base/core.c:3692
serial_base_port_add+0x2f2/0x430 drivers/tty/serial/serial_base_bus.c:179
serial_core_port_device_add drivers/tty/serial/serial_core.c:3342 [inline]
serial_core_register_port+0x367/0x2700 drivers/tty/serial/serial_core.c:3381
serial8250_register_8250_port+0x16dc/0x2050 drivers/tty/serial/8250/8250_core.c:822
serial_pnp_probe+0x527/0x790 drivers/tty/serial/8250/8250_pnp.c:480
pnp_device_probe+0x30b/0x4c0 drivers/pnp/driver.c:111
call_driver_probe drivers/base/dd.c:-1 [inline]
really_probe+0x26a/0x9a0 drivers/base/dd.c:657
__driver_probe_device+0x18c/0x2f0 drivers/base/dd.c:799
driver_probe_device+0x4f/0x430 drivers/base/dd.c:829
__driver_attach+0x452/0x700 drivers/base/dd.c:1215
bus_for_each_dev+0x230/0x2b0 drivers/base/bus.c:370
bus_add_driver+0x345/0x640 drivers/base/bus.c:678
driver_register+0x23a/0x320 drivers/base/driver.c:249
serial8250_init+0xc2/0x1c0 drivers/tty/serial/8250/8250_platform.c:315
do_one_initcall+0x233/0x820 init/main.c:1257
do_initcall_level+0x137/0x1f0 init/main.c:1319
do_initcalls+0x69/0xd0 init/main.c:1335
kernel_init_freeable+0x3d9/0x570 init/main.c:1567
kernel_init+0x1d/0x1d0 init/main.c:1457
ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

-> #2 (&dev->power.lock){-.-.}-{3:3}:
lock_acquire+0x120/0x360 kernel/locking/lockdep.c:5871
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xa7/0xf0 kernel/locking/spinlock.c:162
__pm_runtime_resume+0x10f/0x180 drivers/base/power/runtime.c:1179
pm_runtime_get include/linux/pm_runtime.h:418 [inline]
__uart_start+0x171/0x440 drivers/tty/serial/serial_core.c:148
uart_write+0x278/0xa40 drivers/tty/serial/serial_core.c:635
process_output_block drivers/tty/n_tty.c:561 [inline]
n_tty_write+0xd32/0x11d0 drivers/tty/n_tty.c:2377
iterate_tty_write drivers/tty/tty_io.c:1015 [inline]
file_tty_write+0x4fe/0x990 drivers/tty/tty_io.c:1090
new_sync_write fs/read_write.c:593 [inline]
vfs_write+0x54b/0xa90 fs/read_write.c:686
ksys_write+0x145/0x250 fs/read_write.c:738
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xfa/0x3b0 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #1 (&port_lock_key){-.-.}-{3:3}:
lock_acquire+0x120/0x360 kernel/locking/lockdep.c:5871
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0xa7/0xf0 kernel/locking/spinlock.c:162
uart_port_lock_irqsave include/linux/serial_core.h:715 [inline]
serial8250_console_write+0x17e/0x1ba0 drivers/tty/serial/8250/8250_port.c:3415
console_emit_next_record kernel/printk/printk.c:3138 [inline]
console_flush_all+0x728/0xc40 kernel/printk/printk.c:3226
__console_flush_and_unlock kernel/printk/printk.c:3285 [inline]
console_unlock+0xc4/0x270 kernel/printk/printk.c:3325
vprintk_emit+0x5b7/0x7a0 kernel/printk/printk.c:2450
_printk+0xcf/0x120 kernel/printk/printk.c:2475
register_console+0xa8b/0xf90 kernel/printk/printk.c:4125
univ8250_console_init+0x52/0x90 drivers/tty/serial/8250/8250_core.c:513
console_init+0x1a1/0x670 kernel/printk/printk.c:4323
start_kernel+0x2cc/0x500 init/main.c:1034
x86_64_start_reservations+0x24/0x30 arch/x86/kernel/head64.c:307
x86_64_start_kernel+0x143/0x1c0 arch/x86/kernel/head64.c:288
common_startup_64+0x13e/0x147

-> #0 (console_owner){....}-{0:0}:
check_prev_add kernel/locking/lockdep.c:3168 [inline]
check_prevs_add kernel/locking/lockdep.c:3287 [inline]
validate_chain+0xb9b/0x2140 kernel/locking/lockdep.c:3911
__lock_acquire+0xab9/0xd20 kernel/locking/lockdep.c:5240
lock_acquire+0x120/0x360 kernel/locking/lockdep.c:5871
console_trylock_spinning kernel/printk/printk.c:2048 [inline]
vprintk_emit+0x460/0x7a0 kernel/printk/printk.c:2449
_printk+0xcf/0x120 kernel/printk/printk.c:2475
debug_object_is_on_stack lib/debugobjects.c:-1 [inline]
lookup_object_or_alloc lib/debugobjects.c:688 [inline]
__debug_object_init+0x2c8/0x3c0 lib/debugobjects.c:743
rhashtable_init_noprof+0x7c0/0xbb0 lib/rhashtable.c:1085
bch2_copygc_thread+0x116/0xdc0 fs/bcachefs/movinggc.c:355
kthread+0x711/0x8a0 kernel/kthread.c:464
ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245

other info that might help us debug this:

Chain exists of:
console_owner --> &pool->lock --> &obj_hash[i].lock

Possible unsafe locking scenario:

CPU0 CPU1
---- ----
lock(&obj_hash[i].lock);
lock(&pool->lock);
lock(&obj_hash[i].lock);
lock(console_owner);

*** DEADLOCK ***

1 lock held by bch-copygc/loop/6108:
#0: ffffffff99c79a98 (&obj_hash[i].lock){-.-.}-{2:2}, at: __debug_object_init+0x85/0x3c0 lib/debugobjects.c:741

stack backtrace:
CPU: 1 UID: 0 PID: 6108 Comm: bch-copygc/loop Not tainted 6.15.0-syzkaller-09161-g0f70f5b08a47 #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
Call Trace:
<TASK>
dump_stack_lvl+0x189/0x250 lib/dump_stack.c:120
print_circular_bug+0x2ee/0x310 kernel/locking/lockdep.c:2046
check_noncircular+0x134/0x160 kernel/locking/lockdep.c:2178
check_prev_add kernel/locking/lockdep.c:3168 [inline]
check_prevs_add kernel/locking/lockdep.c:3287 [inline]
validate_chain+0xb9b/0x2140 kernel/locking/lockdep.c:3911
__lock_acquire+0xab9/0xd20 kernel/locking/lockdep.c:5240
lock_acquire+0x120/0x360 kernel/locking/lockdep.c:5871
console_trylock_spinning kernel/printk/printk.c:2048 [inline]
vprintk_emit+0x460/0x7a0 kernel/printk/printk.c:2449
_printk+0xcf/0x120 kernel/printk/printk.c:2475
debug_object_is_on_stack lib/debugobjects.c:-1 [inline]
lookup_object_or_alloc lib/debugobjects.c:688 [inline]
__debug_object_init+0x2c8/0x3c0 lib/debugobjects.c:743
rhashtable_init_noprof+0x7c0/0xbb0 lib/rhashtable.c:1085
bch2_copygc_thread+0x116/0xdc0 fs/bcachefs/movinggc.c:355
kthread+0x711/0x8a0 kernel/kthread.c:464
ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</TASK>
------------[ cut here ]------------
WARNING: CPU: 1 PID: 6108 at lib/debugobjects.c:655 debug_object_is_on_stack lib/debugobjects.c:655 [inline]
WARNING: CPU: 1 PID: 6108 at lib/debugobjects.c:655 lookup_object_or_alloc lib/debugobjects.c:688 [inline]
WARNING: CPU: 1 PID: 6108 at lib/debugobjects.c:655 __debug_object_init+0x2c9/0x3c0 lib/debugobjects.c:743
Modules linked in:
CPU: 1 UID: 0 PID: 6108 Comm: bch-copygc/loop Not tainted 6.15.0-syzkaller-09161-g0f70f5b08a47 #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
RIP: 0010:debug_object_is_on_stack lib/debugobjects.c:655 [inline]
RIP: 0010:lookup_object_or_alloc lib/debugobjects.c:688 [inline]
RIP: 0010:__debug_object_init+0x2c9/0x3c0 lib/debugobjects.c:743
Code: cc cc cc 41 ff c7 44 89 3d 14 aa 17 15 48 c7 c1 00 9b e1 8b 48 c7 c7 60 9b e1 8b 84 c0 48 0f 45 f9 48 89 de e8 48 e5 68 fc 90 <0f> 0b 90 e9 c0 fe ff ff e8 3a 1c 00 00 8b 05 8c f3 cc 09 3b 05 8a
RSP: 0018:ffffc900033876e0 EFLAGS: 00010046
RAX: 0000000000000050 RBX: ffffc90003387b90 RCX: f040b7745b5f4c00
RDX: 0000000000000000 RSI: 0000000080000001 RDI: 0000000000000000
RBP: ffff88802c68bc20 R08: ffffffff8e130da3 R09: 1ffffffff1c261b4
R10: dffffc0000000000 R11: fffffbfff1c261b5 R12: 0000000000000040
R13: ffff8880622786c8 R14: dffffc0000000000 R15: 0000000000000001
FS: 0000000000000000(0000) GS:ffff888125d99000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fbb648c56d0 CR3: 000000007f3f6000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
rhashtable_init_noprof+0x7c0/0xbb0 lib/rhashtable.c:1085
bch2_copygc_thread+0x116/0xdc0 fs/bcachefs/movinggc.c:355
kthread+0x711/0x8a0 kernel/kthread.c:464
ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</TASK>


---
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.


Return-Path: <linux-kernel+bounces-669258-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 938EB41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:13:48 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 954421895B07
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:14:01 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id EBE121E25F2;
Sat, 31 May 2025 22:13:40 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=zash.se header.i=@zash.se header.b="jJvRM59/"
Received: from dimidiatus.zash.se (dimidiatus.zash.se [185.97.32.56])
(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 5A9E3EEA8;
Sat, 31 May 2025 22:13:36 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.97.32.56
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748729620; cv=none; b=M+YoGxQcKBWi6eJIG/NaVLYoyDmWNhF6j5eFMh9GP+frKGEnMigYDvKoDWHWmcAYYOF9UrI34oFAo5Lwt9BQHA6/NKzMXfHfsuKsytcSc9HHZe9kKAU12ArN/dKMF+8r+VVweJih0IaywZPA+P+2eCZ0GcYZU6W63SGmK8m4KRk=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748729620; c=relaxed/simple;
bh=EufhE4khXJfcXaIToKySlWjWh0rkPLuopmauJx8nfF8=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=a13PW8zFeYyHOhYcujEo5JyftGE6qiCSqEnlIBrWVRPSPaI8GSwizS1JAqiBa+FwY19NkrVP1FSNdgY7yRYujqoFJQBnAiwfWBeWzvbNa28TqeFCL8bpYNky7NiPVEG/72Uw1su4BsqXBel/K5Vt64UsYIk8K3ZFk/n/Z4wedr8=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=zash.se; spf=pass smtp.mailfrom=zash.se; dkim=pass (2048-bit key) header.d=zash.se header.i=@zash.se header.b=jJvRM59/; arc=none smtp.client-ip=185.97.32.56
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=zash.se
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zash.se
Received: from mail.zash.se (cerdale.zash.se [IPv6:2a00:66c0:7:1::cd1e])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384)
(Client did not present a certificate)
by dimidiatus.zash.se (Postfix) with ESMTPS id 958E719F5D8;
Sun, 1 Jun 2025 00:05:14 +0200 (CEST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zash.se; s=2025;
t=1748729105; bh=SVotxztx5CJUQc5mS0Q1kj0N0+zv2DMFiBjZ7PfRb3s=;
h=Date:From:To:Cc:Subject:References:In-Reply-To:From;
b=jJvRM59/TB7v+qAsievCIxoXPQ7HUOs3PNoXZWguAzaFIVEQ4j+Vt8ic2WdEiqYUt
YoyVBrWTNWYUq2fv4Vp1MVDL5P32SZnM8Ijsfw3PotFs7duJXUd3keVcrC1suyxuoL
CKicMw0Pn4wLfoqVyZZCzTSAqBt8eMwRsqlrkBTR6gTm1Ozm4C0RIiWfbQdd8kFp1I
PM9pfEruXnMlFUjEINDm3BN8l5ksFYLrZgcfQw/vAqJyUVcYxPEMQnOScNesLU1155
MAQYMfNTxpfzdbanXwUAhKrfzAJvFwxhREdN18a+OVxinb2aUs/85Z5MsYgsRuLxB2
63o0yD50N4XBw==
Received: from localhost (localhost [::1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256)
(Client did not present a certificate)
by mail.zash.se (Postfix) with ESMTPSA id B4C376E0076;
Sun, 1 Jun 2025 00:05:04 +0200 (CEST)
Date: Sun, 1 Jun 2025 00:05:02 +0200
From: Kim Alvefur <zash@xxxxxxx>
To: Salvatore Bonaccorso <carnil@xxxxxxxxxx>
Cc: 1106411@xxxxxxxxxxxxxxx, Stephan Gerhold <stephan@xxxxxxxxxxx>,
Jonathan Cameron <jic23@xxxxxxxxxx>,
Lars-Peter Clausen <lars@xxxxxxxxxx>, linux-iio@xxxxxxxxxxxxxxx,
Andy Shevchenko <andy.shevchenko@xxxxxxxxx>,
Peter Zijlstra <peterz@xxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx
Subject: Re: kernel NULL pointer dereference in bmc150_accel_core / RIP:
0010:bmc150_accel_set_interrupt+0x68/0x120 [bmc150_accel_core]
Message-ID: <aDt9DrWxKOUZHQ3K@xxxxxxxxxxxxxxx>
References: <174809774197.3242.15028356144506391196.reportbug@xxxxxxxxxxxxxxx>
<aDMuJsV4Mxb1IVoZ@xxxxxxxxxxx>
<174809774197.3242.15028356144506391196.reportbug@xxxxxxxxxxxxxxx>
<aDnt9LkEZjb4DOO-@xxxxxxxxxxxxxxx>
<aDtZqwjKtpyguppg@xxxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Disposition: inline
In-Reply-To: <aDtZqwjKtpyguppg@xxxxxxxxxxx>
Jabber-ID: zash@xxxxxxx
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 09:34:03PM +0200, Salvatore Bonaccorso wrote:
>On Fri, May 30, 2025 at 07:42:12PM +0200, Kim Alvefur wrote:
>> So far it seems to happen on every boot, between unlocking LUKS and the
>> login manager starting.
>>
>> I wonder if this is related to another symptom this machine has, where
>> it fails to complete suspend and goes into a state where the only action
>> that has any effect is a long-press of the power button to turn it off.
>
>Looking through the boot log I'm noticing the following:
>
>> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:00: supply vdd not found, using dummy regulator
>> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:00: supply vddio not found, using dummy regulator
>[...]
>> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:base: supply vdd not found, using dummy regulator
>> May 30 19:21:47 spisula kernel: bmc150_accel_i2c i2c-BOSC0200:base: supply vddio not found, using dummy regulator
>
>and iio-sensor-proxy might fail to handle then the bosch 0200
>accelerometer. You proobably cannot temporary purge the
>iio-sensor-proxy if installed by reverse dependencies, but might you
>try to temporarily mask the service and retest a boot?

That seems to have an effect, no "BUG: ..." in dmesg now, and the
machine made it trough a suspends and resume cycle.

--
Kim "Zash" Alvefur


Return-Path: <linux-kernel+bounces-669259-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2784A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:24:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id EC80218977B9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:24:40 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5D85F1E5B9D;
Sat, 31 May 2025 22:24:19 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="eX0qyU+s"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14])
(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 318BC1E515;
Sat, 31 May 2025 22:24:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.14
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748730258; cv=none; b=F/APxBxa3My5NZbM9BmVOxRfLHyhAcdig6k4u4vWfgqKp8c4tdg0ioqT9pLrRYLceYoKPZgTsFKCVEo04OYBUyQhWfk+XmtrOtXoOVehTn3CRbUvl8Y8lG1t4xDFPfkJmThJpPVBRDbVTsehYuoncRL8wcBAMEIwirKFjbvOLng=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748730258; c=relaxed/simple;
bh=/OT6BcuQ0bwLw4PLGhYig6PRzvZSfY49od4+Eb2T+R4=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=D1HVzy/ZUAcpLDFb+hr4j1VX9MA34t0shFEdOml9Q8Yw3KfGypL7MJN/8k2RjUzRFXU56cWhK7PZ6caGuoweBEnHZBPQUS7kDEhi53604PPesrrYebBbale6ykA7zO7V1nVVEvEbAhzgWX1r7XJ4N2bhe5Wv42y2zJw9VuzBc/w=
ARC-Authentication-Results:i=1; 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=eX0qyU+s; arc=none smtp.client-ip=198.175.65.14
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748730258; x=1780266258;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=/OT6BcuQ0bwLw4PLGhYig6PRzvZSfY49od4+Eb2T+R4=;
b=eX0qyU+sUxabFn20trCyHR2zy7K9JMFUW3HsRgUWsrUKjdO+FCg2ADKk
t9O4gYHRX1Hs1DBGQazns/8O7gw67ySutiZyDEB2jmsZR3CfIljPKLKV7
T9Dmkoq22vRsF1WqsFcdmiszfZxAtIWSez+IZGgQM4nxT+oWwez8Ejlj7
pI6DEZajHeMfUfdyFP23I2cIwt06wIQzV+lsYRPG5teBl2zFGZ7mgaRwl
qQw6Yd77Q2+0Kmm2ezqv0feTgyr85PqHaLMfJ0Y0XauazH4QVJpw+lXAO
YAWyc0o/SWOsoOS499AO0ge0JZsglwpKBECgfNq4funHX/ZTOdXasJwBy
g==;
X-CSE-ConnectionGUID: s77bKskrSzmPl0bf3Kw0xw==
X-CSE-MsgGUID: 0wJQPZAiQVi9QwMjFG0+Gw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="54588796"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="54588796"
Received: from orviesa006.jf.intel.com ([10.64.159.146])
by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 15:24:17 -0700
X-CSE-ConnectionGUID: hvIVU3ssSIm/7tNqdg2kGw==
X-CSE-MsgGUID: HayCyTs5Q1qP/nfJsbkbzA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144095998"
Received: from agluck-desk3.sc.intel.com (HELO agluck-desk3) ([172.25.103.51])
by orviesa006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 15:24:16 -0700
Date: Sat, 31 May 2025 15:24:14 -0700
From: "Luck, Tony" <tony.luck@xxxxxxxxx>
To: Borislav Petkov <bp@xxxxxxxxx>
Cc: Zaid Alali <zaidal@xxxxxxxxxxxxxxxxxxxxxx>, rafael@xxxxxxxxxx,
lenb@xxxxxxxxxx, james.morse@xxxxxxx, robert.moore@xxxxxxxxx,
Jonathan.Cameron@xxxxxxxxxx, ira.weiny@xxxxxxxxx,
Benjamin.Cheatham@xxxxxxx, dan.j.williams@xxxxxxxxx, arnd@xxxxxxxx,
Avadhut.Naik@xxxxxxx, john.allen@xxxxxxx,
linux-acpi@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
acpica-devel@xxxxxxxxxxxxxxx
Subject: Re: [PATCH v7 9/9] ACPI: APEI: EINJ: Update the documentation for
EINJv2 support
Message-ID: <aDuBjopy_nE9A-ph@agluck-desk3>
References: <20250506213814.2365788-1-zaidal@xxxxxxxxxxxxxxxxxxxxxx>
<20250506213814.2365788-10-zaidal@xxxxxxxxxxxxxxxxxxxxxx>
<20250530102711.GAaDmH_1O7lc6kuveY@fat_crate.local>
<aDoal24J-BMTIBCq@agluck-desk3>
<20250531092050.GBaDrJ8iw7cNcpOKeA@fat_crate.local>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250531092050.GBaDrJ8iw7cNcpOKeA@fat_crate.local>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 11:20:50AM +0200, Borislav Petkov wrote:
> On Fri, May 30, 2025 at 01:52:39PM -0700, Luck, Tony wrote:
> > Use case to inject to one device would be:
> >
> > # echo 1 > nr_components
>
> What does that do?

EINJ V2 allows the user to perform multiple injections together.

The component_idN/component_syndromeN pairs of files direct the
"where" and the "what" of each injection.

But the kernel needs to know how many of these pairs to use
for an injection (to fill in a field in the structure passed
to the BIOS).

With EINJ V2 the user might want to inject to 2 locations with
one injection, and then just to 1 location on the next.

Zaid Alali's version took the approach of zeroing the input
after each injection so the user had to start from scratch
for each injection.

I wasn't fond of that because the existing Linux EINJ interface
saves all the paramters allowing the user to repeat the same
injection by just runniing "echo 1 > error_inject: over and over
(e.g. to force a soft offline by injecting multiple corrected
errors to the same address).

User interface options:

1) User can zero out the component_idN/component_syndromeN pairs
that they don't need and have the kernel count how many injections
are requested by looping to find the zero terminator.

2) Kernel could zero all pairs after an injection to make the user
explicitly set the list of targets each time.

3) User provides the count vis the nr_components file (perhaps
needs a better name?)

4) Something else?

>
> The interface probably needs a little refinement, but...
>
> > # echo 4 > component_id0
> > # echo A5A5A5A5 > component_syndrome0
> > ... set other files and finish with usual
> > # echo 1 > error_inject
> >
> > There isn't a fancy "debugfs_create_x128_le()" helper to manage these
> > 128-bit little endian numbers. So I've coded with the basic building
> > blocks (though using copy_from_user() and copy_to_user() feels like
> > back in the stone age). If there some helpers that I missed I'd be
> > happy to see that part simplified.
> >
> > Patch is on top of the existing v7 set. Obviously it needs to be folded
> > back into the earlier patches to make a clean history that doesn't add
> > functions and then replace them with different code.
>
> ... yes, definitely much better.
>
> Thanks!

You are welcome.
>
> --
> Regards/Gruss,
> Boris.

-Tony


Return-Path: <linux-kernel+bounces-669260-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C247E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:32:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id 010C07A5F81
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:30:51 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A4C11EB5F8;
Sat, 31 May 2025 22:32:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="rFwPxKR4"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 15C5E13F434;
Sat, 31 May 2025 22:31:58 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748730719; cv=none; b=j0XgH9w9TeYb3rup4mGAPLg7sqplnEo6Ua5jQdnoN2B32v/RYrQUbUfyFfOZcIezXXGMBM9V0tzmZjkpqqj+ddE+At67kT0Sc4omp1BnC9RX1mleNaE3dpeugTccEeC7ALQIyYN3Y4M+IsC7zERiweDVUQF8YrLdgAK4iSa+FTI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748730719; c=relaxed/simple;
bh=FzjibAJzYSR3ngKXOTEm8IoBAY2HueMnLqz1AXGs7Po=;
h=Date:From:To:Cc:Subject:Message-Id:Mime-Version:Content-Type; b=oUy8YBzzJvygfqdPSR5ga5eFb2P1ohqXwEfZWiM+GrqxJrmktTC1JO27BZHQt/aPMGj1rdrbWF9Q+4WtCQwvVkL+zAnuRR4cogc9ieOUbI+tQzLu8XyyQvn/Hs0VBk2VM2Q+A4c5pZjXzxWZIeZZpNuG6MrGQsCtJGsBppH11mk=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=rFwPxKR4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 56E66C4CEE3;
Sat, 31 May 2025 22:31:58 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linux-foundation.org;
s=korg; t=1748730718;
bh=FzjibAJzYSR3ngKXOTEm8IoBAY2HueMnLqz1AXGs7Po=;
h=Date:From:To:Cc:Subject:From;
b=rFwPxKR49AfdyQ+TC8gwm5XVhzYdoKXfTH/dL0/iE1ZmXSQMUFuOkRrC7oITholDO
2Xz0R9ZSfos2KY0xk2ngsRfCeJImEWvSnUTM+EztV+DT6EUU06+TrqVyDr+RoWd5Eh
JRBFCzWwSOiimdcwGqBzwOs5suTt+yWFUWzLixpI=
Date: Sat, 31 May 2025 15:31:57 -0700
From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Cc: linux-mm@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
mm-commits@xxxxxxxxxxxxxxx
Subject: [GIT PULL] non-MM updates for 6.16-rc1
Message-Id: <20250531153157.8fd9b708ae4009f5dbe81a9e@xxxxxxxxxxxxxxxxxxxx>
X-Mailer: Sylpheed 3.8.0beta1 (GTK+ 2.24.33; x86_64-pc-linux-gnu)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu


Linus, please merge this set of other-than-MM patches for the 6.16-rcX
cycle, thanks.

Conflicts which I'm seeing today, and their linux-resolutions:

kernel/kexec_file.c, vs integrity tree:
https://lkml.kernel.org/r/20250430142331.468074f1@xxxxxxxxxxxxxxxx



The following changes since commit 82f2b0b97b36ee3fcddf0f0780a9a0825d52fec3:

Linux 6.15-rc6 (2025-05-11 14:54:11 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-nonmm-stable-2025-05-31-15-28

for you to fetch changes up to 375700bab5b150e876e42d894a9a7470881f8a61:

llist: make llist_add_batch() a static inline (2025-05-27 19:40:34 -0700)

----------------------------------------------------------------
- The 3 patch series "hung_task: extend blocking task stacktrace dump to
semaphore" from Lance Yang enhances the hung task detector. The
detector presently dumps the blocking tasks's stack when it is blocked
on a mutex. Lance's series extends this to semaphores.

- The 2 patch series "nilfs2: improve sanity checks in dirty state
propagation" from Wentao Liang addresses a couple of minor flaws in
nilfs2.

- The 2 patch series "scripts/gdb: Fixes related to lx_per_cpu()" from
Illia Ostapyshyn fixes a couple of issues in the gdb scripts.

- The 9 patch series "Support kdump with LUKS encryption by reusing LUKS
volume keys" from Coiby Xu addresses a usability problem with kdump.
When the dump device is LUKS-encrypted, the kdump kernel may not have
the keys to the encrypted filesystem. A full writeup of this is in the
series [0/N] cover letter.

- The 2 patch series "sysfs: add counters for lockups and stalls" from
Max Kellermann adds /sys/kernel/hardlockup_count and
/sys/kernel/hardlockup_count and /sys/kernel/rcu_stall_count.

- The 3 patch series "fork: Page operation cleanups in the fork code"
from Pasha Tatashin implements a number of code cleanups in fork.c.

- The 3 patch series "scripts/gdb/symbols: determine KASLR offset on
s390 during early boot" from Ilya Leoshkevich fixes some s390 issues in
the gdb scripts.

----------------------------------------------------------------
Andrii Nakryiko (1):
exit: move and extend sched_process_exit() tracepoint

Andy Shevchenko (3):
kernel.h: move PTR_IF() and u64_to_user_ptr() to util_macros.h
util_macros.h: fix the reference in kernel-doc
list: remove redundant 'extern' for function prototypes

Arnd Bergmann (1):
crash_dump, nvme: select CONFIGFS_FS as built-in

Caleb Sander Mateos (1):
scatterlist: inline sg_next()

Casey Connolly (1):
mailmap: update and consolidate Casey Connolly's name and email

Chanho Min (1):
squashfs: add optional full compressed block caching

Chelsy Ratnawat (1):
selftests: fix some typos in tools/testing/selftests

Chen Ni (1):
ocfs2: remove unnecessary NULL check before unregister_sysctl_table()

Chisheng Chen (1):
lib/rbtree.c: fix the example typo

Christoph Hellwig (1):
nilfs2: remove wbc->for_reclaim handling

Coiby Xu (8):
kexec_file: allow to place kexec_buf randomly
crash_dump: make dm crypt keys persist for the kdump kernel
crash_dump: store dm crypt keys in kdump reserved memory
crash_dump: reuse saved dm crypt keys for CPU/memory hot-plugging
crash_dump: retrieve dm crypt keys in kdump kernel
Revert "x86/mm: Remove unused __set_memory_prot()"
x86/crash: pass dm crypt keys to kdump kernel
x86/crash: make the page that stores the dm crypt keys inaccessible

Colin Ian King (1):
crash: fix spelling mistake "crahskernel" -> "crashkernel"

Dr. David Alan Gilbert (4):
rapidio: remove some dead defines
rapidio: remove unused functions
relay: remove unused relay_late_setup_files
lib/oid_registry.c: remove unused sprint_OID

Eric Biggers (1):
kexec_file: use SHA-256 library API instead of crypto_shash API

Fedor Pchelkin (1):
sort.h: hoist cmp_int() into generic header file

Francesco Valla (1):
init/main.c: log initcall level when initcall_debug is used

Herton R. Krzesinski (1):
lib/test_kmod: do not hardcode/depend on any filesystem

Illia Ostapyshyn (2):
scripts/gdb: fix kgdb probing on single-core systems
scripts/gdb: update documentation for lx_per_cpu

Ilya Leoshkevich (3):
scripts/gdb/symbols: factor out get_vmlinux()
scripts/gdb/symbols: factor out pagination_off()
scripts/gdb/symbols: determine KASLR offset on s390 during early boot

Ingo Molnar (1):
kernel.h: move READ/WRITE definitions to <linux/types.h>

Jens Axboe (1):
llist: make llist_add_batch() a static inline

Jeongjun Park (1):
ipc: fix to protect IPCS lookups using RCU

Jim Cromie (3):
checkpatch: dont warn about unused macro arg on empty body
checkpatch: qualify do-while-0 advice
powernow: use pr_info_once

Lance Yang (2):
hung_task: replace blocker_mutex with encoded blocker
hung_task: show the blocker task if the task is hung on semaphore

Linus Walleij (1):
fork: define a local GFP_VMAP_STACK

Luo Gengkun (1):
watchdog: fix watchdog may detect false positive of softlockup

Marc Herbert (1):
compiler_types.h: fix "unused variable" in __compiletime_assert()

Mario Limonciello (1):
kstrtox: add support for enabled and disabled in kstrtobool()

Mateusz Guzik (1):
exit: combine work under lock in synchronize_group_exit() and coredump_task_exit()

Max Kellermann (2):
kernel/watchdog: add /sys/kernel/{hard,soft}lockup_count
kernel/rcu/tree_stall: add /sys/kernel/rcu_stall_count

Murad Masimov (1):
ocfs2: fix possible memory leak in ocfs2_finish_quota_recovery

Mykyta Yatsenko (1):
maccess: fix strncpy_from_user_nofault() empty string handling

Pasha Tatashin (4):
task_stack.h: remove obsolete __HAVE_ARCH_KSTACK_END check
fork: clean-up ifdef logic around stack allocation
fork: clean-up naming of vm_stack/vm_struct variables in vmap stacks code
fork: check charging success before zeroing stack

Penglei Jiang (1):
proc: fix the issue of proc_mem_open returning NULL

Phillip Lougher (1):
Squashfs: check return result of sb_min_blocksize

Ryusuke Konishi (1):
nilfs2: do not propagate ENOENT error from nilfs_btree_propagate()

Sravan Kumar Gundu (1):
kernel/panic.c: format kernel-doc comments

Thorsten Blum (1):
ocfs2: simplify return statement in ocfs2_filecheck_attr_store()

Wang Yaxin (1):
delayacct: remove redundant code and adjust indentation

WangYuli (2):
ocfs2: o2net_idle_timer: Rename del_timer_sync in comment
treewide: fix typo "previlege"

Wentao Liang (1):
nilfs2: add pointer check for nilfs_direct_propagate()

Zhiquan Li (1):
crash: export PAGE_UNACCEPTED_MAPCOUNT_VALUE to vmcoreinfo

Zi Li (1):
samples: extend hung_task detector test with semaphore support

Zijun Hu (1):
errseq: eliminate special limitation for macro MAX_ERRNO

.mailmap | 3 +
.../ABI/testing/sysfs-kernel-hardlockup_count | 7 +
.../ABI/testing/sysfs-kernel-rcu_stall_count | 6 +
.../ABI/testing/sysfs-kernel-softlockup_count | 7 +
Documentation/admin-guide/kdump/kdump.rst | 32 ++
Documentation/admin-guide/kdump/vmcoreinfo.rst | 4 +-
.../bindings/display/panel/lg,sw43408.yaml | 2 +-
.../bindings/iio/adc/qcom,spmi-rradc.yaml | 2 +-
.../power/supply/qcom,pmi8998-charger.yaml | 2 +-
Documentation/filesystems/relay.rst | 10 -
.../process/debugging/gdb-kernel-debugging.rst | 34 +-
.../zh_CN/dev-tools/gdb-kernel-debugging.rst | 34 +-
.../zh_TW/dev-tools/gdb-kernel-debugging.rst | 34 +-
MAINTAINERS | 2 +-
arch/arm64/boot/dts/qcom/qcm6490-shift-otter.dts | 2 +-
arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts | 2 +-
arch/x86/include/asm/set_memory.h | 2 +
arch/x86/kernel/crash.c | 26 +-
arch/x86/kernel/kexec-bzimage64.c | 21 +
arch/x86/kernel/machine_kexec_64.c | 22 +
arch/x86/mm/pat/set_memory.c | 13 +
drivers/cpufreq/powernow-k8.c | 2 +-
drivers/gpu/drm/panel/panel-samsung-sofef00.c | 4 +-
drivers/iio/adc/qcom-spmi-rradc.c | 4 +-
drivers/md/bcache/btree.c | 3 +-
drivers/nvme/target/Kconfig | 2 +-
drivers/power/supply/qcom_pmi8998_charger.c | 4 +-
drivers/rapidio/devices/rio_mport_cdev.c | 20 -
drivers/rapidio/rio.c | 103 -----
drivers/rapidio/rio.h | 2 -
drivers/rapidio/rio_cm.c | 6 -
drivers/s390/char/vmlogrdr.c | 4 +-
fs/bcachefs/util.h | 3 +-
fs/configfs/Kconfig | 1 -
fs/nilfs2/btree.c | 4 +-
fs/nilfs2/direct.c | 3 +
fs/nilfs2/mdt.c | 2 -
fs/nilfs2/segment.c | 16 -
fs/nilfs2/segment.h | 1 -
fs/ocfs2/cluster/tcp.c | 2 +-
fs/ocfs2/filecheck.c | 2 +-
fs/ocfs2/quota_local.c | 2 +-
fs/ocfs2/stackglue.c | 3 +-
fs/pipe.c | 3 +-
fs/proc/base.c | 12 +-
fs/proc/task_mmu.c | 12 +-
fs/proc/task_nommu.c | 4 +-
fs/squashfs/Kconfig | 21 +
fs/squashfs/block.c | 28 ++
fs/squashfs/super.c | 5 +
fs/xfs/xfs_zone_gc.c | 2 -
include/linux/compiler_types.h | 8 +-
include/linux/crash_core.h | 7 +-
include/linux/crash_dump.h | 2 +
include/linux/habanalabs/hl_boot_if.h | 2 +-
include/linux/hung_task.h | 99 +++++
include/linux/kernel.h | 14 +-
include/linux/kexec.h | 34 ++
include/linux/list.h | 8 +-
include/linux/llist.h | 23 +-
include/linux/oid_registry.h | 1 -
include/linux/relay.h | 3 -
include/linux/rio_drv.h | 5 -
include/linux/scatterlist.h | 23 +-
include/linux/sched.h | 6 +-
include/linux/sched/task_stack.h | 2 -
include/linux/semaphore.h | 15 +-
include/linux/sort.h | 10 +
include/linux/types.h | 4 +
include/linux/util_macros.h | 66 +++
include/soc/qcom/qcom-spmi-pmic.h | 2 +-
include/trace/events/sched.h | 34 +-
init/main.c | 18 +-
ipc/shm.c | 5 +-
kernel/Kconfig.kexec | 20 +-
kernel/Makefile | 1 +
kernel/crash_dump_dm_crypt.c | 464 +++++++++++++++++++++
kernel/crash_reserve.c | 2 +-
kernel/delayacct.c | 51 +--
kernel/exit.c | 70 ++--
kernel/hung_task.c | 55 ++-
kernel/kexec_file.c | 81 +---
kernel/locking/mutex.c | 5 +-
kernel/locking/semaphore.c | 57 ++-
kernel/panic.c | 8 +-
kernel/relay.c | 111 +----
kernel/vmcore_info.c | 4 +
kernel/watchdog.c | 94 ++++-
lib/Kconfig.debug | 6 -
lib/errseq.c | 13 +-
lib/kstrtox.c | 4 +
lib/llist.c | 22 -
lib/oid_registry.c | 25 +-
lib/rbtree.c | 8 +-
lib/scatterlist.c | 23 -
lib/test_kmod.c | 64 +--
mm/maccess.c | 2 +-
samples/Kconfig | 9 +-
samples/hung_task/Makefile | 2 +-
samples/hung_task/hung_task_mutex.c | 66 ---
samples/hung_task/hung_task_tests.c | 97 +++++
scripts/checkpatch.pl | 35 +-
scripts/gdb/linux/cpus.py | 4 +-
scripts/gdb/linux/symbols.py | 38 +-
scripts/gdb/linux/utils.py | 22 +-
scripts/spelling.txt | 2 +
.../testing/selftests/filesystems/file_stressor.c | 2 +-
tools/testing/selftests/kmod/config | 5 -
tools/testing/selftests/mm/gup_longterm.c | 2 +-
.../thermal/intel/power_floor/power_floor_test.c | 2 +-
.../intel/workload_hint/workload_hint_test.c | 4 +-
111 files changed, 1599 insertions(+), 819 deletions(-)
create mode 100644 Documentation/ABI/testing/sysfs-kernel-hardlockup_count
create mode 100644 Documentation/ABI/testing/sysfs-kernel-rcu_stall_count
create mode 100644 Documentation/ABI/testing/sysfs-kernel-softlockup_count
create mode 100644 include/linux/hung_task.h
create mode 100644 kernel/crash_dump_dm_crypt.c
delete mode 100644 samples/hung_task/hung_task_mutex.c
create mode 100644 samples/hung_task/hung_task_tests.c



Return-Path: <linux-kernel+bounces-669261-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C41B441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:50:35 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id CC78B7A9035
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:49:15 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 593511EF0B4;
Sat, 31 May 2025 22:50:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hhOM1Auc"
Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0CC23383A5;
Sat, 31 May 2025 22:50:21 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748731824; cv=none; b=tPzFTsD0BwpEz8Foe7tiKtVcu4ik6L94eYIfMJMroPHkuZhMDvozxoSH5cvUns/bess7skKYPaxtbetS6p790GWsMGZ92LWNmW6ut7p3pcEO0ql6toOtOo/WZ09mNTkbsK4DUra4ZKwJS8p1zLLjblkhzLHU7KvxDh1lfsHUI28=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748731824; c=relaxed/simple;
bh=CDljdLyI8zl+8uZfAuUq8JMf+Jw6g97rHrHAVSBnzeo=;
h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=odKpcNFoDyZcmF3SMPTSjuS2LfOlustdBzvhaVWF6iE+4vtdY+Db7QmBnOMAHvSQIhBGq/Gzb+Nc+Dd+3HmiimrlBSSqPCuEq7zmvwA8Gj4hKeqS4c5SvqqDwk5s0eC5uRPe6tj5HKFTwj/BKRAgu7e3vPOsjVtatIxDgdyMAoE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hhOM1Auc; arc=none smtp.client-ip=209.85.218.46
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-ad891bb0957so567443166b.3;
Sat, 31 May 2025 15:50:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748731820; x=1749336620; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=7G/6C3jgtD7GdYgkAdPqTbX9kf1O46KWdMnMdCZgM2Y=;
b=hhOM1AucV+4vheHF3PCX/hTefLjVvGUHm/7DB6wBrJ5MzqrfDvAo92TeGjpVtkF0ql
l3HDo8cpcrRR9lNLkCfV/C7ov4cXUOv6WzsZ6Wy3bgqLmcJxZOb6vniiw669clF9VFar
ejd+fVaTY/qrP2Lm+lqaP5yckEXjIn9CYb7dlUUoQqWOah7A3yXkjWHenvVwnOP3/WJG
NeAzpRcIDxtM6Cm3OTMASb5LR6SkcTQlPSNG9bKi40b2FkcJRiyu3QZoEVOnzX9eHZwu
V6JQ14X4OBX1VakLhA2HjqnZmrbnYuj+fAQVzWI/QBP72bfP5VKZUtisPBZxJaIzsBJw
wfEA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748731820; x=1749336620;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=7G/6C3jgtD7GdYgkAdPqTbX9kf1O46KWdMnMdCZgM2Y=;
b=SdwreRBXt2aJH4ZgDtqra/UsVzobiSA/lnufIQDpL3T7dmZuZ9lgS54+BiyOhoFj8b
ZKkybqPQee2uuahKcdpyo6YvJLvsio603BKItYecqgjvt2x6SADOQsXzredReYKpp52I
EobZ8mUhzsA1+zEgfvml5ca8GnSxhBuOdtvhwNAU7o0HKnDhcRdFT555PEDZoI1VQfWC
uDbksKFypKdfpVIFkj6xR5i8ERtwpEpEIApIFVjzrXxkeJ7DzrGqsfXdja/62hyzrV4L
nbp/snyiU9l4VEfonskSa7qEHVVk/fs6iSFuQs80j2cINRi9Y9rtqYjq4K9/SHTk9Szb
dI7w==
X-Forwarded-Encrypted: i=1; AJvYcCW2hlFthakMvL5OH8e+laGk0L18U6qJcQRbtWxrosUfKaeBtSU7248E4fyu9jItEB0PnkObrBrATKpNLts=@vger.kernel.org, AJvYcCXfEvugX0s+NRT72gSP64sJ5YIZOsfRfM773V3suTciefCXzGQXNnEHagynf+4e1BEF0VHCmeJG@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yz3z+ZG/JhThc+LeSVgVgeMrt79qENhXy5Dm7uliI55kVSl4tql
VwHgq/g49mAOUjDX0BTMAasIoWxstILt0xDnYFpaocQgJs4cceh/epU4
X-Gm-Gg: ASbGncuZlxGvB/he96/OEiwHWNHKEv+jFmyiRajTSNOurzvVKwC0HhvyJTjXSEBr6V7
zTFaQf+eyQ5g9iwVmsobAPdB7NxtOigmN+uAYkfGIbAldiP3tYhokU+IYNiCWf2r9zNkLDp1Wq8
as29Rizyy2KU3zwbzBP5uS+5qOUr8dJnBIyFVTebKfUPMc8a2MgV4TOnpwYAM8xeyk2+Hjvkgy3
HmhqWtQd1sNAYCiQoL4hJ6NkAPza41M1j7GHpQiHYls6/mzUsN8dkV5WWrjY1k2r+4BK3GNSuES
nzfJGHxLuETpb902pjLc3jjhhZJdP6g7w5UUll4dv0njUP15hSVI2Z5VaqgQV9u+dLPDt25l1Hq
vDZUpwYo=
X-Google-Smtp-Source: AGHT+IGCCzztJ6RHksc/IC2sk3PgFwdX//BlNQdfw986PcEhon6Zh3/6SfH9ygn47oYXUSUuBuSKww==
X-Received: by 2002:a17:907:7241:b0:ad8:9878:b898 with SMTP id a640c23a62f3a-adb322b3333mr649109266b.9.1748731820162;
Sat, 31 May 2025 15:50:20 -0700 (PDT)
Received: from debian-vm.localnet ([2a01:4b00:d20c:cddd:20c:29ff:fe56:c86])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d7ff054sm562918666b.14.2025.05.31.15.50.19
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 15:50:19 -0700 (PDT)
From: Zak Kemble <zakkemble@xxxxxxxxx>
To: Doug Berger <opendmb@xxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Zak Kemble <zakkemble@xxxxxxxxx>
Subject: [PATCH v1 0/2] net: bcmgenet: add support for GRO software interrupt coalescing
Date: Sat, 31 May 2025 23:48:51 +0100
Message-Id: <20250531224853.1339-1-zakkemble@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hey, these patches enable support for software IRQ coalescing and GRO
aggregation and applies conservative defaults which can help improve
system and network performance by reducing the number of hardware
interrupts and improving GRO aggregation ratio.

Zak Kemble (2):
net: bcmgenet: use napi_complete_done return value
net: bcmgenet: enable GRO software interrupt coalescing by default

drivers/net/ethernet/broadcom/genet/bcmgenet.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--
2.39.5



Return-Path: <linux-kernel+bounces-669262-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 3B8DA41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:50:46 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id A559717B2DC
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:50:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B917B205AB9;
Sat, 31 May 2025 22:50:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cWHCniFT"
Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6523C1B0F19;
Sat, 31 May 2025 22:50:24 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748731826; cv=none; b=SRM3FDTlUem1XH7LL59RYu+DQu9ANsA1Qvvc9E40LL7atRXXI0PhMr0lYUcY3ApPGyF9/8n40GyUv6t5Qzn+YI21eaJyH3FCBjK1DDJgEox66Z7cbpsevx1y9wYSjxPYZF3MY+kMBB239wWIDDTcHvBRI8FHGVVbVzHFrU2+q9g=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748731826; c=relaxed/simple;
bh=zJTjdCr8yR6jka+8Fl6/XXKV/YPVY/4YWXAs4bcR55U=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version; b=jZsGH28vI43Asvkh5ReA8Ao5MRMmKQ98LFU5K9FSBoqXc+gQmEIrJMG1ZCzE7LV1DWSIsTQarErThVQfb3jwVKQpt/WMQkAwaWX6l+HmrvEl2Zu6oL6FIItOEzInT0VvUMlxU6b/G77fza9GNZmElhFk7gGDOTUX435h+uj2dSU=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cWHCniFT; arc=none smtp.client-ip=209.85.218.48
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ac3eb3fdd2eso592237966b.0;
Sat, 31 May 2025 15:50:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748731823; x=1749336623; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=aaer8KAt7DHXZvrLCnz/sCu0lhGcXvLJk84mttxt34U=;
b=cWHCniFT7s9j3HS/K9h8yL6qi02Y6tCnyZrrVh+oiC4cgCHACrUMQVD9Rs9BwLCylt
Q9CsqeHzYezP41okDLGA4D3+KBuUgqBG68QrM8G5TYnbe4XH6tOVEBP6/9xPXL6DxWbI
AYd6EgckRqAcyhvFslt3QWAdv+9ofTkfU+AVE5tiGlpizzZWC9o+CVF7AinWUocwGNCG
es6u1MPmRcUiy1xf93MFjc0djSvbQY7IP6GgI1A1bIEXaZcdoyXKTC2x/vMj7IoMAe2/
SC9nBJqI49wJVhfqQKwLB1pAXMGR9dB3eT02Jx2P9Thq7FMokwUq3DmATCASdIRHpunq
EGRQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748731823; x=1749336623;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=aaer8KAt7DHXZvrLCnz/sCu0lhGcXvLJk84mttxt34U=;
b=FLortOG4u5cZg+kWR/+SZZlAtglF1gR7wyJzfSA86MxKeO14zwtLjG4xdy72v8w6cE
sVi+obAbv79qR29SMGg+S+BqODmM4h3HTR1gJq5TQYbihm9CKvYdHHMpBT6DFmtIzUPW
EKHxl1fUaxFzQPN0Cqtj8XQtsF8evwOADzk//ZOxgaJ7zdbXnH35bFDddanR2h5Q+bfj
wj7jgiwwHZUAY7D76Gv4l55AgKdD5z2be9HXa5PimvXfwVGaWmItycNJtkOY+9rFv4nN
yOPti3RLmjgWXCfuEhWkXlvHhPpUEV3OdaWUPy4zroGDVXn+hjGjqLY3E3IiMSCwL2LX
4OSw==
X-Forwarded-Encrypted: i=1; AJvYcCUPjyx1ItWDskFTAw0pEATHe9oKoz0VvLlXQWnByl0N6shpDMmMIs1KNY17zm00ZpvOS0nK93ejlhkhQRA=@vger.kernel.org, AJvYcCWkktK89MUWrda8DTKdkvvnIURVF8F8/ODgfDECtXyO5himusRU6VJ9/83IdhpJ9qB0A3WsLNv1@xxxxxxxxxxxxxxx
X-Gm-Message-State: AOJu0Yyu6yNWIRO/vycxgKktRVa3FIK/2V32bM7EkMQvQd7rR2FIDkBz
1YOQFln+JZ7E968o/n94KkIuSr9CaGns3mETwHwfY/GqMTyFCICU6m8d
X-Gm-Gg: ASbGncv64xC+8/wB2lxqD+URngEsumSLyA5Zzs7Il8KXK8SFdykstMwEGAOuuucD4In
FYCV0rTHK8XMouPXVxqjPFMNfxqt/oLTi/INiunH/Q+QHca5sy+Pl3UlTscsOluJUQZDJX7bUJD
swfoPrkvTzVPZspVn78znrTZET3EkTLsbaYGKAm/QAd/bM4TDrShu9sOyY5ZE+PEJdrn5RG4gor
gAS+WCZ0pXsBpF9a92EDdQkExw38hz4NPASH+riUSk7+U1kMHgJvjMJlDmktL8IDB0wXdaZjaE/
5bwJ/kkkap4GPBPBFWmjc0lvMv7N56KV/tHZ4uGX+vcV+0jQt5obW/R8s+WDnA==
X-Google-Smtp-Source: AGHT+IHn/Dpdb85Wh1MjKffyrYbxU1fvEdgCvFGBMMM46bHiTje9aueKK1J/KMUEBFaESM5G5KG92g==
X-Received: by 2002:a17:907:9801:b0:ad1:e4e9:6b4f with SMTP id a640c23a62f3a-adb322b2c9cmr765323466b.36.1748731822570;
Sat, 31 May 2025 15:50:22 -0700 (PDT)
Received: from debian-vm.localnet ([2a01:4b00:d20c:cddd:20c:29ff:fe56:c86])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d7ff054sm562918666b.14.2025.05.31.15.50.22
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 15:50:22 -0700 (PDT)
From: Zak Kemble <zakkemble@xxxxxxxxx>
To: Doug Berger <opendmb@xxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Zak Kemble <zakkemble@xxxxxxxxx>
Subject: [PATCH v1 1/2] net: bcmgenet: use napi_complete_done return value
Date: Sat, 31 May 2025 23:48:52 +0100
Message-Id: <20250531224853.1339-2-zakkemble@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531224853.1339-1-zakkemble@xxxxxxxxx>
References: <20250531224853.1339-1-zakkemble@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Make use of the return value from napi_complete_done(). This allows users to
use the gro_flush_timeout and napi_defer_hard_irqs sysfs attributes for
configuring software interrupt coalescing.

Signed-off-by: Zak Kemble <zakkemble@xxxxxxxxx>
---
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index fa0077bc6..cc9bdd244 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -2472,10 +2472,8 @@ static int bcmgenet_rx_poll(struct napi_struct *napi, int budget)

work_done = bcmgenet_desc_rx(ring, budget);

- if (work_done < budget) {
- napi_complete_done(napi, work_done);
+ if (work_done < budget && napi_complete_done(napi, work_done))
bcmgenet_rx_ring_int_enable(ring);
- }

if (ring->dim.use_dim) {
dim_update_sample(ring->dim.event_ctr, ring->dim.packets,
--
2.39.5



Return-Path: <linux-kernel+bounces-669263-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 2D6D741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:51:01 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id ABF6A9E07B7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:50:39 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7474C21882B;
Sat, 31 May 2025 22:50:28 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eg1zZXZ1"
Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 279491F4CB6;
Sat, 31 May 2025 22:50:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748731827; cv=none; b=jUXLbgGlqqUa5/fFEEKmD263YwZPecpswSAIei5C+IEW7nq4g0ofYy4w0kdD8ReAMzaSmBP0vnN4CpqVg106wMs7WNJmA/M67J0uXKl4u1BYqcl62AwT9YfBgl5ftyPJx/TxBrttwOoITqqpPFT5d76Ejruc55hGcWgOa6CC/Sc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748731827; c=relaxed/simple;
bh=R5txiWduQ1MLb/7Ofzb1I1KmObx5d/2qHesoSZIUDnQ=;
h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References:
MIME-Version; b=GN21GFVqFOXb0rNWFaEEs2GRcw+uYeogsJnNx0BaKHPR+utbqBk+VpYcsjF+VDiei1eWQ0B8m1oa/yWM8xI7shKYJCHKC9ZcEroqbsHuto1QzD05mzS/k1GkL0nHRkNR4o1HN1fCTNfpF5lQ2wEJskynoeaJj06NPw7+JENc71c=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eg1zZXZ1; arc=none smtp.client-ip=209.85.208.42
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-6049431b0e9so4913242a12.0;
Sat, 31 May 2025 15:50:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748731824; x=1749336624; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:from:to:cc:subject:date
:message-id:reply-to;
bh=0+ejMMbHq5PYDlrAJtCac52TZKigbKKjKjZOjD2zAkU=;
b=eg1zZXZ1sZLsaFDC5VRVcMCsJrzqm4NfjAm1V6MbQ3ep9N/jv+t1hwFvaDK3R7Lvyr
LcLYhBkmnm8s7VpVJtEDInwDpFN5qhk7sFJ3Y3DSRZOtQQ0N1Tt24qSicOO1f2nCM7Ls
nRxcwGAbtcWGbORccHm0IPFY/I2brW0YX9ufsWWmva0iuQ605HGblZaXXAJO1EY9faAk
pE/FT55shCzYUPeBmb17G//u9My8MyzHFjA9WnTdlFgcoHnnFRyKaqMgjgkdWpQvytDK
Iyz4nhI8rMgKYXn18l7R69Hr7XsIC8ebUvmK+cVn6nGBwRZTocS2t8+nlScGqUVEfvYR
69Zw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748731824; x=1749336624;
h=content-transfer-encoding:mime-version:references:in-reply-to
:message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=0+ejMMbHq5PYDlrAJtCac52TZKigbKKjKjZOjD2zAkU=;
b=AxxsfU94xldmWCGPQP87IZql+3LI3fPO4Y9FPBjYIGP2+qG7dCMhPcfyDuwaB6SKD6
KQsSFsRT2CXzCHhpNA/x/58ofbMEpLHa/KrhqVFUjyBJ0/oboGTQdCICm611ysLC+WLy
hNOOt3/WWAh0JQNmu+sULriupH0b9NGaKV+UYh/fTJK8moZv0R+NmfjvnMwCEsfp+iqV
Ls6w47GTGzKmAnmR4HV6AiGlDXjvZMKJuPJW5YmWimbveYGRA2P8HGTAltLw01Kk6v1U
rDVbtc1nPcPY1cx422d7rnp4FnlcvluD7BpcYpVEWa8a9ZTht1gP202UrpcW5gNVDW0h
XAlQ==
X-Forwarded-Encrypted: i=1; AJvYcCUmqKiZ0G6drjO7x9SLk85ZoRoyFFPLuKPnT63VV0Tok9AqIdrawFXAG3YqIw/tlSToFPzw0avz@xxxxxxxxxxxxxxx, AJvYcCWAm4N6psCUrH6Xm27ILIn/hR2naXdl7JR12aFN0jsfUoMawEP5r/+B3bJJn+hth1SHv2kxHHtnVvSN+EU=@vger.kernel.org
X-Gm-Message-State: AOJu0Yy6DsWvWtBDu3xpQmecGwz/NWG4zG+zjZaX9Hc5MOXKsI95GVRZ
iDyL98XlsUoeeLOlvSIxtWlkfV14SXngKnnb0IWEQ5Yf3lxBfbjdBieP
X-Gm-Gg: ASbGncvx6WCIum1fMoSzD4xUHQbyi2zWs7dxvGNWHqU1OQrcUUPS5+m7JKMOkOzjIMQ
AG1hG6Ux0tLHdTN5DSktK1ppy8RCL5NOAMh0m7VsdxH/QboLUPlqtj6u0OsJjV6Xu6EkXy6GNAl
yr1pl1vD6fKRJKTmg7wT6M64pje96IRrwCzaZClvUeJYQYBGVL/3f3Kd6vxtCjqb0cuPqSZmaX6
L1zZrL2yI4/eTdehmrDyr0ZoQgHSrs6CGHwSCwLZkcf0qvc7o2fCTIecz9VciyAsmxgBwPi0n8x
/VLqmslobK/UGExHS+yQ04TfH56mUuVyMbuxyX8tAr2IaZe97R7TGDYueNz/EQ==
X-Google-Smtp-Source: AGHT+IGSPxyDMANdKlB+Fn8HNNWASSa2Bs/z9FPJQCG4AKg3SX/aVPdEY48GBHheiKWQtcFs78dyGg==
X-Received: by 2002:a17:907:6d1f:b0:ad8:9c97:c2dc with SMTP id a640c23a62f3a-adb36b23210mr618259566b.15.1748731824303;
Sat, 31 May 2025 15:50:24 -0700 (PDT)
Received: from debian-vm.localnet ([2a01:4b00:d20c:cddd:20c:29ff:fe56:c86])
by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ada5d7ff054sm562918666b.14.2025.05.31.15.50.23
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 15:50:24 -0700 (PDT)
From: Zak Kemble <zakkemble@xxxxxxxxx>
To: Doug Berger <opendmb@xxxxxxxxx>,
Florian Fainelli <florian.fainelli@xxxxxxxxxxxx>,
Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>,
Andrew Lunn <andrew+netdev@xxxxxxx>,
"David S. Miller" <davem@xxxxxxxxxxxxx>,
Eric Dumazet <edumazet@xxxxxxxxxx>,
Jakub Kicinski <kuba@xxxxxxxxxx>,
Paolo Abeni <pabeni@xxxxxxxxxx>,
netdev@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Zak Kemble <zakkemble@xxxxxxxxx>
Subject: [PATCH v1 2/2] net: bcmgenet: enable GRO software interrupt coalescing by default
Date: Sat, 31 May 2025 23:48:53 +0100
Message-Id: <20250531224853.1339-3-zakkemble@xxxxxxxxx>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250531224853.1339-1-zakkemble@xxxxxxxxx>
References: <20250531224853.1339-1-zakkemble@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Apply conservative defaults.

Signed-off-by: Zak Kemble <zakkemble@xxxxxxxxx>
---
drivers/net/ethernet/broadcom/genet/bcmgenet.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index cc9bdd244..4f40f6afe 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -3986,6 +3986,8 @@ static int bcmgenet_probe(struct platform_device *pdev)
dev->hw_features |= dev->features;
dev->vlan_features |= dev->features;

+ netdev_sw_irq_coalesce_default_on(dev);
+
/* Request the WOL interrupt and advertise suspend if available */
priv->wol_irq_disabled = true;
if (priv->wol_irq > 0) {
--
2.39.5



Return-Path: <linux-kernel+bounces-669264-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 7455341E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:20:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 5B09218952B7
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:20:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 7E4C31F09B3;
Sat, 31 May 2025 23:20:05 +0000 (UTC)
Received: from mail-il1-f199.google.com (mail-il1-f199.google.com [209.85.166.199])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8D7951B424E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:20:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.199
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748733605; cv=none; b=hkjhSzV5h099TJvF3FxFDO8qYbf4vhWDbuQLCdXKOELKwxtkOOSh3plAgzzWpFhz6+mjuIZKKrCfIGZLEA8DmlQEiZqGj2DzCxqgg/RGnbK3JAWxBZOfAS1yvpsaj3lbtFqm1SsU91F33IQwVSWpgtSxGxKMCKrGVYMJ87gHsOE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748733605; c=relaxed/simple;
bh=KDGKspSNKQHNNPjKszU2Jv76s0xm+qLt2JhjIGoqvvA=;
h=MIME-Version:Date:In-Reply-To:Message-ID:Subject:From:To:
Content-Type; b=rek6xPXtE0+7oz52PEH2M/BnKIaKtvnn/V2jeA4oYqFjgkLtq7S10ozM/J3byFx0BExYuc9o/DjxfPyQgepP73M/iWl+5C5S/57xQwHMCVll68wltNryqyYFW0h42shwdzqxs4TYyGTfFDOGKmmiC1qP1nNXY1ckb41U6hoNUbw=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.199
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f199.google.com with SMTP id e9e14a558f8ab-3dc7f233258so39028215ab.3
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:20:03 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748733602; x=1749338402;
h=to:from:subject:message-id:in-reply-to:date:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=yZhhLbnZ0PG4eSSt9FnuW1K8TROo5OM3uq9fTUJ0/Ws=;
b=j40TRt60Sb+u/LvpLWEvikMqoYBXnbLJSlMR+0H3EibaXrakj5mBwyyv2u3Tnl3ojq
B/oS4WgIT+wmqYXDkg3zcOFLRXvNOjtM6qOzblZbYYE6vrzoCOSTqR6Ldbep8wmj39Ms
8KWDwrGm3/BNAWUtWhn7pWZv3t3qUQLyLAqx7HDxcZXNbwVYSNfKlDMJm2lmO7OJ4qXt
YL/wQ9s3VWDWkq7BUmXffAdLoAncjUBpnrVU8k4SeoR/GFc2eJv0qfeDCpQ/mxHM0dQn
6mGkTawCaLd8qLqURBoJLKO/JtsAis0AqWOTSYYbSdZO6SIeBLofvTivKNd2M89mLSaO
8VrQ==
X-Forwarded-Encrypted: i=1; AJvYcCW+yV3H9nVwQBBnOlQ0uMa3cIVJJhXWf+G3wpazeVvan08uLQzi/mDR7NNMxjlmF18sI4ymhebt9r4Q4HY=@vger.kernel.org
X-Gm-Message-State: AOJu0Yw/Qv3CYIOAFvk5mF0t0LXsKhSw2DTm6pqa4nhFDp2F9E+Kqjsh
k8yBtKG8zcWpZncT36GqhpR31UWGIQXzAsWP2ji+Ai5szqFFCW6ZmIbiKEUMlwrfVVdxkwObDeK
XArGeP0dh7qVM90dBaEzN8UfLAYr+WVlRK8DOWVn/uw91caRAk7PT+q8+peo=
X-Google-Smtp-Source: AGHT+IGCxD3oAG4WtemqwxCGWKeXMSIRReB1CBwta6mTh7ppTS3JkVTjOWgbuFnoIN0s/mgfSawICbO9dqqQBziJHDaLHyOxRUdu
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:2287:b0:3dc:8a53:c9c4 with SMTP id
e9e14a558f8ab-3dda3342b6cmr26765825ab.6.1748733602686; Sat, 31 May 2025
16:20:02 -0700 (PDT)
Date: Sat, 31 May 2025 16:20:02 -0700
In-Reply-To: <67b75198.050a0220.14d86d.02e2.GAE@xxxxxxxxxx>
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b8ea2.a00a0220.d8eae.0020.GAE@xxxxxxxxxx>
Subject: Re: [syzbot] [netfs?] kernel BUG in folio_unlock (3)
From: syzbot <syzbot+c0dc46208750f063d0e0@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: asmadeus@xxxxxxxxxxxxx, chao@xxxxxxxxxx, dhowells@xxxxxxxxxx, hch@xxxxxx,
hdanton@xxxxxxxx, jaegeuk@xxxxxxxxxx, jlayton@xxxxxxxxxx,
linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx, linux-fsdevel@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, netfs@xxxxxxxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx, v9fs@xxxxxxxxxxxxxxx, willy@xxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-0.5 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SORTED_RECIPS,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no
version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

syzbot has bisected this issue to:

commit 80f31d2a7e5f4efa7150c951268236c670bcb068
Author: Christoph Hellwig <hch@xxxxxx>
Date: Thu May 8 05:14:32 2025 +0000

f2fs: return bool from __write_node_folio

bisection log: https://syzkaller.appspot.com/x/bisect.txt?x=1129d00c580000
start commit: 0f70f5b08a47 Merge tag 'pull-automount' of git://git.kerne..
git tree: upstream
final oops: https://syzkaller.appspot.com/x/report.txt?x=1329d00c580000
console output: https://syzkaller.appspot.com/x/log.txt?x=1529d00c580000
kernel config: https://syzkaller.appspot.com/x/.config?x=22765942f2e2ebcf
dashboard link: https://syzkaller.appspot.com/bug?extid=c0dc46208750f063d0e0
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=15bfe970580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=13bfe970580000

Reported-by: syzbot+c0dc46208750f063d0e0@xxxxxxxxxxxxxxxxxxxxxxxxx
Fixes: 80f31d2a7e5f ("f2fs: return bool from __write_node_folio")

For information about bisection process see: https://goo.gl/tpsmEJ#bisection


Return-Path: <linux-kernel+bounces-669265-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id DD44D41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:32:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id CE9EC1896FC8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:32:23 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 508AF1EF37A;
Sat, 31 May 2025 23:32:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="OaAyU7yD"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.17])
(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 020AA18C91F;
Sat, 31 May 2025 23:31:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.17
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748734322; cv=none; b=vCFb5ZltCZGFp4+M/o9ByEBhF24GrqOdxscc/GTkRoF1qpYtsQh2jX3EigapNWWsFqgKs0GKzi4CFR5YyRPWQOMatK6WvZr51sAff4N1EIzdCRvRZzpxLY5Fm7kqlkldwOHwrIX5SmBGA277TAJhMNgaRMFToUoTqwW8fzs+1nA=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748734322; c=relaxed/simple;
bh=l/6JWtbuEjpEYr0d5Qx0p0ETOLprUagjTTOYMllVTmM=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=qagYOOoTj5uNtWjgSv+MoTJQAtRdJMVv43XkxDyfEitcaCDdy8GK9wE102BKrjkD3Be+Y8T7g5TCSn0GyWovT1sMz3GExa/mXmlUm1ydOg0MF60Fcy57DBBUH1OBXaNHT5HrQWymnJ/GCYmspP6VANOBuEmGIXeAhNNfDMUNHyo=
ARC-Authentication-Results:i=1; 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=OaAyU7yD; arc=none smtp.client-ip=192.198.163.17
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748734320; x=1780270320;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=l/6JWtbuEjpEYr0d5Qx0p0ETOLprUagjTTOYMllVTmM=;
b=OaAyU7yDLs7lPlx6t5L5d1gqLEe2i3Wz9+vPhKfd3PN0tZQYEuqWLhE0
k0m1GfMLOL4+sNdgIV26R41VkbCmBHSwwb94poxRO9yeQSEQ6stwNq7BQ
UD8tfxsBIf5oH94A63Oi8Nh06qhyh9M286S6laYQmNEStYM/02q6KILfA
yTAtcnn7FQQiunEIEHfle0S8Txy+N0BG63irOCwj2oVOgodsNG+rBec7q
KSudWIbURKKAl485vGI2K/uWjeXkE5d7kPNx9Zm3b5J5Fx7nZnAMfnrFi
4x1nTo6FSN8F9QW11V4Y6SiiW9skSD8audXLomxjEC1TFQImjZbQT6n8+
Q==;
X-CSE-ConnectionGUID: nOgROSGeToiaOdPre/9+/g==
X-CSE-MsgGUID: 62fJM+7sRSu99jrJwq5ECw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="50711541"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="50711541"
Received: from orviesa009.jf.intel.com ([10.64.159.149])
by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 16:31:59 -0700
X-CSE-ConnectionGUID: /h+kF7heR8C0mmFRf2NNvQ==
X-CSE-MsgGUID: i8uZgsDoT2aSoq8+NoX0WQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="144224192"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa009.jf.intel.com with ESMTP; 31 May 2025 16:31:57 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLVgA-000YhA-2z;
Sat, 31 May 2025 23:31:54 +0000
Date: Sun, 1 Jun 2025 07:31:07 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Christian Lamparter <chunkeey@xxxxxxxxx>, linux-spi@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Paul Gazzillo <paul@xxxxxxxxx>,
Necip Fazil Yildiran <fazilyildiran@xxxxxxxxx>,
oe-kbuild-all@xxxxxxxxxxxxxxx, Mark Brown <broonie@xxxxxxxxxx>
Subject: Re: [PATCH v1] spi: push HAS_IOMEM dependency down to the drivers
Message-ID: <202506010734.yl1PFBaA-lkp@xxxxxxxxx>
References: <20250530234941.950431-1-chunkeey@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530234941.950431-1-chunkeey@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Christian,

kernel test robot noticed the following build warnings:

[auto build test WARNING on broonie-spi/for-next]
[also build test WARNING on linus/master next-20250530]
[cannot apply to v6.15]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Christian-Lamparter/spi-push-HAS_IOMEM-dependency-down-to-the-drivers/20250531-075211
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
patch link: https://lore.kernel.org/r/20250530234941.950431-1-chunkeey%40gmail.com
patch subject: [PATCH v1] spi: push HAS_IOMEM dependency down to the drivers
config: s390-kismet-CONFIG_MFD_CORE-CONFIG_IIO_SSP_SENSORHUB-0-0 (https://download.01.org/0day-ci/archive/20250601/202506010734.yl1PFBaA-lkp@xxxxxxxxx/config)
reproduce: (https://download.01.org/0day-ci/archive/20250601/202506010734.yl1PFBaA-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506010734.yl1PFBaA-lkp@xxxxxxxxx/

kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for MFD_CORE when selected by IIO_SSP_SENSORHUB
WARNING: unmet direct dependencies detected for MFD_CORE
Depends on [n]: HAS_IOMEM [=n]
Selected by [y]:
- IIO_SSP_SENSORHUB [=y] && IIO [=y] && SPI [=y]

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669266-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 1B93E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:42:11 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7C9C23B7229
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:41:49 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5D3F31EF37A;
Sat, 31 May 2025 23:42:05 +0000 (UTC)
Received: from mail-il1-f197.google.com (mail-il1-f197.google.com [209.85.166.197])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 86722286A9
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:42:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.197
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748734925; cv=none; b=GBmY7cr9rqlaqfECKO1uJrial0x4iAjsObQ+rbd2MkhN+w1h31llyoCMVnj121kF/lCPLPw1GzLVhMMHITi9gw0h+ga9LUfI/dOKdthLOLJQYjNgkSFsXgwwAthAKq3kxng7ikq0sN2HiCdv1lo8QMRNpQN+wmOHbBA86Mx71V4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748734925; c=relaxed/simple;
bh=XA5ccVvBU42B3XXffnEKJx5bp4upK1dgbXChsasQ4Pc=;
h=MIME-Version:Date:In-Reply-To:Message-ID:Subject:From:To:
Content-Type; b=itI0Y7SNQ0KvTISH8iiTDMRuVbXs7N6pqP8uPekO+6Rszm6lx+BYm6aadCIIuJAfKveZQBL7JlkuJzTbFMaD7MXfcZIRVaNdqiaTvbL+C9+KCGxATEwt6ADTr4iGj6rFCfXFgLNKEhj6AHcqtcxeCoanMW/yTwja4Udoqe6ak5k=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.197
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-il1-f197.google.com with SMTP id e9e14a558f8ab-3dc6a403d77so76698365ab.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 16:42:03 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748734922; x=1749339722;
h=to:from:subject:message-id:in-reply-to:date:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=R503OpfKpfF+sLpKYVoRo68saoo9i5snzFIhDjGqVYw=;
b=Q1ARd9e/b7RT4b5vZM+GUODPgCGHfAkJbaMoLfpyrVeCOP29zgSOQkNKtLWreAeuVE
ISlW3IF/TaQ5eoH+nI+GSbzneEhW0Fl0ReB7EbO7BNaAjDRscxSylvPSDGXFhIBtODEz
iAXJ/NqekUti56rPe2fKJDs2XXOgBNA1fSbASGOJ+AGAjKD04/VvXpRm97TIPblJB6Tw
hEJj4VrnnMHIDq6wkB2+Suj/fRQo0DUCCndnHc/S0ajzldaXnO3KyfnYw023bJXSpGTt
ZPIu1ALHRFvYxmWB+g97hUis1DpHpGYVMx9FFUh9IBX2yz5vTExRbL0xXn6s0Tu77D85
SAdg==
X-Forwarded-Encrypted: i=1; AJvYcCUg4URkxnvcvBhTLVvAErCfOKh9cwqAtkUcKAx1puy/d8/cMxgc01CpgsJtOgWkbhKUthkG5oGVARUYUmk=@vger.kernel.org
X-Gm-Message-State: AOJu0Yx2+HVC+zIl+oJcmc5yuL5O3ZHVpq0D+kYB1oeBBlqBiKvxkzrP
WTFdCI1iWq4QpTNnlgBty9eddC0b9O/RPrQMOGKyH2O/G8GM4YzwzBc1cPiEvtAvTcGbqeMrTIr
8nl/vaUlnReCMUoVzhEuK3Kd2bwNc550vgyMXKUSFOwsOpGMpLW1ew5PxTok=
X-Google-Smtp-Source: AGHT+IFmLXZzFgKwwCPS0gCpwjjC1hi6jYBuXR3UWmswAC7/4dYfpL5MoZuy040fv90JM9mQxAJayQgx7YZ6bm87tvkgZj6X0WNo
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6e02:194b:b0:3dc:787f:2bc8 with SMTP id
e9e14a558f8ab-3dda3363f25mr31810095ab.12.1748734922581; Sat, 31 May 2025
16:42:02 -0700 (PDT)
Date: Sat, 31 May 2025 16:42:02 -0700
In-Reply-To: <20250531232348.2486-1-hdanton@xxxxxxxx>
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b93ca.a00a0220.d8eae.0021.GAE@xxxxxxxxxx>
Subject: Re: [syzbot] [bcachefs?] possible deadlock in start_poll_synchronize_rcu_expedited
From: syzbot <syzbot+cbc79a37b5fa23efd23b@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: hdanton@xxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot tried to test the proposed patch but the build/boot failed:

lib/rhashtable.c:1085:6: error: call to undeclared function 'object_is_on_stack'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]


Tested on:

commit: 4cb6c8af selftests/filesystems: Fix build of anon_inod..
git tree: upstream
kernel config: https://syzkaller.appspot.com/x/.config?x=22765942f2e2ebcf
dashboard link: https://syzkaller.appspot.com/bug?extid=cbc79a37b5fa23efd23b
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-1~exp1~20250514183223.118), Debian LLD 20.1.6
patch: https://syzkaller.appspot.com/x/patch.diff?x=15e9d00c580000



Return-Path: <linux-kernel+bounces-669267-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 627CD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:45:31 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 63C181899770
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:45:43 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id B2DD42036FF;
Sat, 31 May 2025 23:45:14 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="JjaFeU/i"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.15])
(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 0694514831E;
Sat, 31 May 2025 23:45:11 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.15
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748735113; cv=fail; b=SV95GgyV3HwFUqRF3dt4wFJ7tVlhiaWvW1dF3jhjuqyUenLR7PjtO1nZlbt/AUkLlCwEsb85WIE6wACfwZNsP7B4QNJIrySEvmDHHMIPbereHRM69jewYTjHhKwy8QHvFvgVtbaME35qP02+Vs+6Kiy1OVHdUbmRT5VmMXikvN8=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748735113; c=relaxed/simple;
bh=tq7OPFEd457FQ6GzmbkLZisNt2V7xB9oIBDCOtcKA8Q=;
h=Date:From:To:CC:Subject:Message-ID:References:Content-Type:
Content-Disposition:In-Reply-To:MIME-Version; b=BlYfT6mtqx/qgUxZ7pf9VQnU6pzYJaR723mbvbeeI9cK+Nlbrte6E+pMRv/Mba53R6A60NprPHNW2rMXPwofrlijxWCyqoF55Ae5qvqjmCNbUNRexnyD3xmXmjxBKg0HQgBwn0YHD90Hi/dpmZc+qYLdezKgGWqXG7Ivrn7ddRE=
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=JjaFeU/i; arc=fail smtp.client-ip=198.175.65.15
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748735112; x=1780271112;
h=date:from:to:cc:subject:message-id:references:
in-reply-to:mime-version;
bh=tq7OPFEd457FQ6GzmbkLZisNt2V7xB9oIBDCOtcKA8Q=;
b=JjaFeU/iAgAndbJCWIn4/n2C+sp1QXpaSfZ+8ZfU/UCqT6Bhy20KMLUa
4iVyPigSF3T+ddwKjl4CGJ8xRZO87J+pEORNkSt6hBOoi7spH+8bpgKm0
5gKV08gRYuN9ihLvUPd/BQNdXty3GL2x0SKWIU4lbCC/XUfNi55IA4Cjo
pUVddNC4b0iY4cUBj2paogniqUQT0zlkwz6S5b+XMrFdi+dwabltQKzxn
us4pB/EFJ01aAIAz4QsjpbAfSdibejQ5hGHp+2X1gClO5jdQEbZVY6egF
Dn3qhtZZ+t5P09ccs9YRJyWNbZL0JhgRXV9SziBIaVbFA8u6xCC++ubVe
A==;
X-CSE-ConnectionGUID: QEtGqluyS8eWDUGygBlU+Q==
X-CSE-MsgGUID: VWfPY1krS+azQcSE0T2w9g==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="54456189"
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="54456189"
Received: from fmviesa002.fm.intel.com ([10.60.135.142])
by orvoesa107.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 16:45:11 -0700
X-CSE-ConnectionGUID: ztTP1XElR0yQfhkFJQG/2A==
X-CSE-MsgGUID: 7D7R5Zy1S4OaKtSqqUY1NA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,199,1744095600";
d="scan'208";a="167388454"
Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23])
by fmviesa002.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 16:45:09 -0700
Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by
ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.2.1544.25; Sat, 31 May 2025 16:45:08 -0700
Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by
ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.2.1544.25 via Frontend Transport; Sat, 31 May 2025 16:45:08 -0700
Received: from NAM10-DM6-obe.outbound.protection.outlook.com (40.107.93.86) by
edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.1.2507.55; Sat, 31 May 2025 16:45:08 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=s5TqZuJNdJNIaUHgt+k7/UrGPab1XVXjJ3Hatv2yNW4tlm/R2PthgClPhFiZMx1RRJukBzbZEIXiRhh+90wqs9dTLkFwruzNbiCELx3ZcpkFwNO3HQPICymS3RTrp5vKmwLF8NhdrEPe3EwNHG6otaXMSQaWbJnKUz5pdOGVJlD5imBH1CW5u9q0xLh3xSNH5ATgLgEt26u3oIlrqu+9ElNz7nzPFlz0iw/iwWShS3/G0xwdSRYDWVyqcGnPhql4WWwF9Y5bNJ3QrNCPe17rjNf+7bFvdP2v6tkuGXigExNriRVkpHf5ZA4RxWK6LOIVQDQgsN1qS6slbVh+kltgtg==
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=tC86QTZDXAMQoa9ZFP2UL1nRVrYivZshlv1IM+fn68E=;
b=c2v2RY+ii6l1XEN5e2aKDB+RAP/YiwrmfEXV2X1z5d0MSKew5IDjeNM6AufHY5hymsxHBrHiheCMVf4bJYhaC4CL1o8FDF8+oS2cd7hKLBMLXI6a/reFK2lv+sQY2f7JhXBN8r9KQpaaClRWxo7fZo685Ij1we77YHGVSRXm6FYIuZWxhn6mrFr+Hoq4XgMIk0NmOU0cVAG8A1gAq9qmLQLQxn7Z6xVdvjwNCIAkOW+m/BFXJeR2zDdBXkWXpbESd03S3hh3bLw4aOSLzgJ/j5yrKl9iPsOZrkXhqvRwgaPeOGe3NF1F8Bx9p31xdQrSiIXsLM3vlS2ho218SiHPoA==
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 PH3PPF9E162731D.namprd11.prod.outlook.com
(2603:10b6:518:1::d3c) by CH0PR11MB8165.namprd11.prod.outlook.com
(2603:10b6:610:18e::8) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.32; Sat, 31 May
2025 23:45:06 +0000
Received: from PH3PPF9E162731D.namprd11.prod.outlook.com
([fe80::d013:465c:f0c4:602]) by PH3PPF9E162731D.namprd11.prod.outlook.com
([fe80::d013:465c:f0c4:602%5]) with mapi id 15.20.8769.022; Sat, 31 May 2025
23:45:05 +0000
Date: Sat, 31 May 2025 18:45:55 -0500
From: Ira Weiny <ira.weiny@xxxxxxxxx>
To: Ackerley Tng <ackerleytng@xxxxxxxxxx>, <kvm@xxxxxxxxxxxxxxx>,
<linux-mm@xxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>, <x86@xxxxxxxxxx>,
<linux-fsdevel@xxxxxxxxxxxxxxx>
CC: <ackerleytng@xxxxxxxxxx>, <aik@xxxxxxx>, <ajones@xxxxxxxxxxxxxxxx>,
<akpm@xxxxxxxxxxxxxxxxxxxx>, <amoorthy@xxxxxxxxxx>,
<anthony.yznaga@xxxxxxxxxx>, <anup@xxxxxxxxxxxxxx>, <aou@xxxxxxxxxxxxxxxxx>,
<bfoster@xxxxxxxxxx>, <binbin.wu@xxxxxxxxxxxxxxx>, <brauner@xxxxxxxxxx>,
<catalin.marinas@xxxxxxx>, <chao.p.peng@xxxxxxxxx>, <chenhuacai@xxxxxxxxxx>,
<dave.hansen@xxxxxxxxx>, <david@xxxxxxxxxx>, <dmatlack@xxxxxxxxxx>,
<dwmw@xxxxxxxxxxxx>, <erdemaktas@xxxxxxxxxx>, <fan.du@xxxxxxxxx>,
<fvdl@xxxxxxxxxx>, <graf@xxxxxxxxxx>, <haibo1.xu@xxxxxxxxx>,
<hch@xxxxxxxxxxxxx>, <hughd@xxxxxxxxxx>, <ira.weiny@xxxxxxxxx>,
<isaku.yamahata@xxxxxxxxx>, <jack@xxxxxxx>, <james.morse@xxxxxxx>,
<jarkko@xxxxxxxxxx>, <jgg@xxxxxxxx>, <jgowans@xxxxxxxxxx>,
<jhubbard@xxxxxxxxxx>, <jroedel@xxxxxxx>, <jthoughton@xxxxxxxxxx>,
<jun.miao@xxxxxxxxx>, <kai.huang@xxxxxxxxx>, <keirf@xxxxxxxxxx>,
<kent.overstreet@xxxxxxxxx>, <kirill.shutemov@xxxxxxxxx>,
<liam.merwick@xxxxxxxxxx>, <maciej.wieczor-retman@xxxxxxxxx>,
<mail@xxxxxxxxxxxxxxxxxxxxx>, <maz@xxxxxxxxxx>, <mic@xxxxxxxxxxx>,
<michael.roth@xxxxxxx>, <mpe@xxxxxxxxxxxxxx>, <muchun.song@xxxxxxxxx>,
<nikunj@xxxxxxx>, <nsaenz@xxxxxxxxx>, <oliver.upton@xxxxxxxxx>,
<palmer@xxxxxxxxxxx>, <pankaj.gupta@xxxxxxx>, <paul.walmsley@xxxxxxxxxx>,
<pbonzini@xxxxxxxxxx>, <pdurrant@xxxxxxxxxxxx>, <peterx@xxxxxxxxxx>,
<pgonda@xxxxxxxxxx>, <pvorel@xxxxxxx>, <qperret@xxxxxxxxxx>,
<quic_cvanscha@xxxxxxxxxxx>, <quic_eberman@xxxxxxxxxxx>,
<quic_mnalajal@xxxxxxxxxxx>, <quic_pderrin@xxxxxxxxxxx>,
<quic_pheragu@xxxxxxxxxxx>, <quic_svaddagi@xxxxxxxxxxx>,
<quic_tsoni@xxxxxxxxxxx>, <richard.weiyang@xxxxxxxxx>,
<rick.p.edgecombe@xxxxxxxxx>, <rientjes@xxxxxxxxxx>, <roypat@xxxxxxxxxxxx>,
<rppt@xxxxxxxxxx>, <seanjc@xxxxxxxxxx>, <shuah@xxxxxxxxxx>,
<steven.price@xxxxxxx>, <steven.sistare@xxxxxxxxxx>,
<suzuki.poulose@xxxxxxx>, <tabba@xxxxxxxxxx>, <thomas.lendacky@xxxxxxx>,
<usama.arif@xxxxxxxxxxxxx>, <vannapurve@xxxxxxxxxx>, <vbabka@xxxxxxx>,
<viro@xxxxxxxxxxxxxxxxxx>, <vkuznets@xxxxxxxxxx>, <wei.w.wang@xxxxxxxxx>,
<will@xxxxxxxxxx>, <willy@xxxxxxxxxxxxx>, <xiaoyao.li@xxxxxxxxx>,
<yan.y.zhao@xxxxxxxxx>, <yilun.xu@xxxxxxxxx>, <yuzenghui@xxxxxxxxxx>,
<zhiquan1.li@xxxxxxxxx>
Subject: Re: [RFC PATCH v2 22/51] mm: hugetlb: Refactor hugetlb allocation
functions
Message-ID: <683b94b359be_1303152941e@iweiny-mobl.notmuch>
References: <cover.1747264138.git.ackerleytng@xxxxxxxxxx>
<1f64e3c7f04fc725f4da4d57de1ea040b7a56952.1747264138.git.ackerleytng@xxxxxxxxxx>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <1f64e3c7f04fc725f4da4d57de1ea040b7a56952.1747264138.git.ackerleytng@xxxxxxxxxx>
X-ClientProxiedBy: MW4PR03CA0222.namprd03.prod.outlook.com
(2603:10b6:303:b9::17) To PH3PPF9E162731D.namprd11.prod.outlook.com
(2603:10b6:518:1::d3c)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH3PPF9E162731D:EE_|CH0PR11MB8165:EE_
X-MS-Office365-Filtering-Correlation-Id: 9ebefa72-cc41-4518-8f40-08dda09d2b3d
X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014|7416014|7053199007;
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?aFO+4wu9qGMXfcsSt3syY1pbTmPaB78C5iPvbdhqDDi/S9cXnAvtnWgXeSL/?=
=?us-ascii?Q?7b5d+zWDCa0a4YSa75/B7epHxwLwYYTK2excuMAnx8+gxV9J5d6tGtrBfAk0?=
=?us-ascii?Q?JyCqQn0600bpEidiRwfDV+r0w1Tis/Kg7yaBHibzkEV2K2Z+guVPrdp5+imf?=
=?us-ascii?Q?tP2pDLkI6T1hwHGnQVCDV1gxwPZT+lv6bBRgMuDzQBCY7cKgFy5KRBAkKXR3?=
=?us-ascii?Q?CrpVHIPDMETntRFYZ6rzbKRmUgMl5xEJHIuJbRyJN6sefUYKd8esW6gq3Yfv?=
=?us-ascii?Q?nbiB4CyUIop+DLKHqIRMX9uKmoGswmelz4bLmqMIlcHDiMFsTjacocVHSYn0?=
=?us-ascii?Q?cuaL2oOJCW0+ibQJZiT/PybGdzwsUGjkQSzag5rbWPVvPqBaUYLwcR0cQIA6?=
=?us-ascii?Q?fyF5eJQK8VUzNXeITSt7RULVyUDpyZ30Wl3hKO8EiqP1ieOACbY1t4HsPtSs?=
=?us-ascii?Q?Nq9WcZuteYBsypM3YdKgkKHYqea2RI+xGf53DsGHYpfyxaO5E5w8C4hWH2/V?=
=?us-ascii?Q?JSA41lrunnvPqatXouQfylR4uuiPdaeQYolAXM9ZZ731BmrpQazQykHrVdrK?=
=?us-ascii?Q?AOLhpHlcbtJeHWFrJoQDpoOWi7uHicm4b45M1kAA+QPvk6hDwkJCyRHn+gwK?=
=?us-ascii?Q?1s+2VN6jYw/P39Y0kY88I2SX4qn6qoZ/7NKEzqFNK3EZwr+bycXgpLR42HYC?=
=?us-ascii?Q?MANExqAt2sT3iiNcAmxwTIXehygtdh5nMK+wVT3sYxk9SMH0Ql6HBtKaFrtC?=
=?us-ascii?Q?VY8UjhYiUVdt6zj9eBAEMsVAT7UNpEL+57dsgkDLFspWTIlBUUEaniJDUPRI?=
=?us-ascii?Q?/5SiRoDpu+yrnJpGGtoDjSySfHgkoUrDKRnh3kbM7VKQeSK/fyobad6WUAQp?=
=?us-ascii?Q?eAlowKCnawt1tyh9Lt6Xq1jI2N6wap1abIiUmE024X8ZH4HwNrKDitMI1B2y?=
=?us-ascii?Q?AmZUzt7TTQi66CZU66XYsGF/DxgBNmHrj7NbJtMvP3zsfiLx0F4+4oPaue9q?=
=?us-ascii?Q?W5eDd9WxvhwqJo0c9EZkft6dstiKtGsv8acb0dksFSf0SQtcP3JrBrPI9zGM?=
=?us-ascii?Q?UTMVn9tmVb7xSbGQXiWWzGAaXEYl9RSDx441S7CbI4h+a+khZvbrzVwjbVFP?=
=?us-ascii?Q?8l1iZx6KlM5MkLvLFwx40z6oVQ1GLMVBOr37ECE80cdfU6CwetD6IPjLx5sT?=
=?us-ascii?Q?GgSD64A/F9UY3HEJhDfnNTHCck00fty6SUaTfuh0p7r+SykUlj1/is2Ei5fF?=
=?us-ascii?Q?NT+OljzXUQU7o4wn+3NCkRYT4AboJDFwj0USi6e+xV/nk6z+E0ibP5xg6mMs?=
=?us-ascii?Q?o0qxt6+FoS2AxLw/W+Mc4fO7HqvHlHr2ByinOs1XF6ksnlADv+kD1D2C0u0E?=
=?us-ascii?Q?wwG9LnpKdRkDVc+IET4WLX2Ss2vhCfAXEerPF6pJQbpnYcefNnNszNLQl8g6?=
=?us-ascii?Q?+TPWJKSaGLU=3D?=
X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPF9E162731D.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014)(7416014)(7053199007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?rOH+Cr2kHurmT0xM+kRr78kEGCEXP9VMKcCBsIGxnUpHGBsjmhD8gr1ZIN0t?=
=?us-ascii?Q?xx7eTlTH3M1Qv1U+9my/xoQe3jRYIAjOxe9wDaG1IOOWpSoUFRTEENgJTkNX?=
=?us-ascii?Q?QR4PBMLGBLthw5XvfUya20uNQrLf8cpjhkjTleRwjo1nKK6NUmxaKxOt2UMG?=
=?us-ascii?Q?eGGE6gM7n7vtcLkzkoPAOJLxjSHbmD702saXCWCZllJyaPkUupPr92Jq7P0O?=
=?us-ascii?Q?BcfOU8ZVLzXCG7OoUVchkzfxGCSW+MEFfRHtRKKutmhN3oH4Ft5+mgNhMzGF?=
=?us-ascii?Q?GZdeolI57OmOEaU0Zf/Cc1T82aN78UU/FRilItrW5uYkT4nsNwadSTk0ZYYr?=
=?us-ascii?Q?DP1MQ/iXF8izZzEOmnbCh4HRkySXeZgiv6wY5dIFnSgmyRCNscEUmO9NRW5t?=
=?us-ascii?Q?el0eIIoznZy1pTV/yH+o+RIQopuVdF3AwMl4Mjn42JzGzy0p1VCo5jN4NEGU?=
=?us-ascii?Q?IR1Y4UbLA6XfB3zV+F/1uJQsZSSiDRTVK6zlnWwR9/8ErDlEiz3wpB+U0exs?=
=?us-ascii?Q?LjYghVOYV6sNp6sN/PXdnzUmG6j34lDWJns5dlWlAqztAxBU3dEnOwiNGkRg?=
=?us-ascii?Q?A9jp7FN6HCfd94W5KqMzxa5aZrer8lfZ1SVEFAoSebc3kwOrNcGYPo3Tx4dA?=
=?us-ascii?Q?9Lac4geYGOI3cuKmx5tChJaZbWLUC8j9qwDCQeqr89XRCws0OrPffMMPBnJJ?=
=?us-ascii?Q?DwObZCW20j8CJz/yBAxGSpSJLHhPOrTb1Kdv4hyhrQm4gC0ysSPJDjPHb5OB?=
=?us-ascii?Q?bhqqBj+ToEf0fFqFoacoJkwubqegfiRGzSZjHUzLm7+6fq+D5WVvKB7yYyF3?=
=?us-ascii?Q?qTRHf5m0ziGMm7HHerxTXD0RnLqme9VqZNi8C5I5Ykyhb96qeZu+SycQiPKa?=
=?us-ascii?Q?imvWQT/m2LoVBySE2Dsk0ZrgPmqg9T9V04/XybjM8jMepImwPD1OKM0IP1JP?=
=?us-ascii?Q?gtRwJBlz63vOw3cF5Q2xlOMr1/F8U0jhGdgRDJ6fXI9wxGnAPiSGuveR62O9?=
=?us-ascii?Q?+8pwevtHj+4aiiQ1kH2HHEWa2SttSOtQUh6qb6+4Qo9tQ6TMlOMANrkhlBZQ?=
=?us-ascii?Q?sWdn9aMrJi4KCAV6Sv8+3Sx06QGfH98SI4cAadD3sv1LWwuiZ99Eb5a0nYTz?=
=?us-ascii?Q?ZT6qPhbd2tvjibVWeOz/OA9PX4JnfFZx1ROt0AVQ7F+nzX0i2b+3Q5RZX/0F?=
=?us-ascii?Q?UNsEqug+kr05deXbTKKY1wMf/XvqnO5f/6R7UUv0Pi6aYOuEainlX8i6Fs35?=
=?us-ascii?Q?e9fYAXk0seeL+qmvEJbmJ01498d6h7ZvefpEKYBv/r5SeKRiRZwloVGMlrFj?=
=?us-ascii?Q?NJQr5apUhpGWWW1SjQN66UfY9akm3yfKQO1R5mwqBfZ4atkwHyt7k8BURDQF?=
=?us-ascii?Q?GbiuoI7rlENs0R40m5ySiknAW8PiI37dYFWxmvRLWyzCYzjOmFfYBVmi7924?=
=?us-ascii?Q?pC42+Efm5yarjNIHl+3SdELYKTGzr1ucYBBV+mDeDd+cnHIwSqQGz+l6nefy?=
=?us-ascii?Q?Tcuxp0IrHfceC+p0kLN/Lpzs3EWRt5mE3fjmgwm0ObZfGqSPBbmQiFFEaMM7?=
=?us-ascii?Q?k5kff6LlVXsgMJVgsg0A02M5vJZLzBT3dsI6rrO6?=
X-MS-Exchange-CrossTenant-Network-Message-Id: 9ebefa72-cc41-4518-8f40-08dda09d2b3d
X-MS-Exchange-CrossTenant-AuthSource: PH3PPF9E162731D.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2025 23:45:05.6572
(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: H/k8/XoeyWxhF8XBXQu3rdWNArrq6gd7wPNmJj90rg5N7swB+q/CGWYXpAhHd154pexMittw/fBq8m2igIWioA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB8165
X-OriginatorOrg: intel.com
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Ackerley Tng wrote:
> Refactor dequeue_hugetlb_folio() and alloc_surplus_hugetlb_folio() to
> take mpol, nid and nodemask. This decouples allocation of a folio from
> a vma.
>
> Signed-off-by: Ackerley Tng <ackerleytng@xxxxxxxxxx>
> Change-Id: I890fb46fe8c6349383d8cf89befc68a4994eb416
> ---
> mm/hugetlb.c | 64 ++++++++++++++++++++++++----------------------------
> 1 file changed, 30 insertions(+), 34 deletions(-)
>

[snip]

>
> @@ -2993,6 +2974,11 @@ struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
> int ret, idx;
> struct hugetlb_cgroup *h_cg = NULL;
> gfp_t gfp = htlb_alloc_mask(h) | __GFP_RETRY_MAYFAIL;
> + struct mempolicy *mpol;
> + nodemask_t *nodemask;
> + gfp_t gfp_mask;
> + pgoff_t ilx;
> + int nid;
>
> idx = hstate_index(h);
>
> @@ -3032,7 +3018,6 @@ struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
>
> subpool_reservation_exists = npages_req == 0;
> }
> -
> reservation_exists = vma_reservation_exists || subpool_reservation_exists;
>
> /*
> @@ -3048,21 +3033,30 @@ struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
> goto out_subpool_put;
> }
>
> + mpol = get_vma_policy(vma, addr, h->order, &ilx);

Why does the memory policy need to be acquired here instead of after the
cgroup charge? AFAICT this is not needed and would at least eliminate 1
of the error conditions puts.

> +
> ret = hugetlb_cgroup_charge_cgroup(idx, pages_per_huge_page(h), &h_cg);
> - if (ret)
> + if (ret) {
> + mpol_cond_put(mpol);
^^^^
here

All that said I think the use of some new cleanup macros could really help
a lot of this code.

What do folks in this area of the kernel think of those?

Ira

[snip]


Return-Path: <linux-kernel+bounces-669268-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 924DD41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:19:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 858F2177826
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:19:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 278862DCBE9;
Sun, 1 Jun 2025 00:19:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="Ddx6m2Bo"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7])
(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 4463D15C0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:19:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.7
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748737144; cv=none; b=Zf7kTAvyC20k1Da598ZmUrxZAjXG9d2uHoIJYZAwcndLOwJCHVdhHdxvMVCX5Yxff5egNE+qCHNGvMRQJDADUn4hfe3S8nDw7m4nDj/bP5+ZzWz6r7VVrlL+vbJa8WpIP+VdBt8w/Dnw9ZMCV8g2E11RL0ZBfV6fbAmFyJnYXXo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748737144; c=relaxed/simple;
bh=6rqgU3ufqMzgcBrgD7+OzjtiUznYwOA8sM7QfD5ZILM=;
h=Date:From:To:Cc:Subject:Message-ID; b=u6iRuRh3vgJBC702448I/Zc4fhQwqPuN9opi/JUjF/M6CeT0Swu7d/KoqOkKJ5ChHsLdFV43fmECtAM1jjm6GgjSOQtuA9sRmBve0ErRhzuN2dsX8t6nc6vWhEr0WNV2osuLy3xwSmpjvYLzNaqK/TUjXA57sZzlUQyjp1OVxow=
ARC-Authentication-Results:i=1; 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=Ddx6m2Bo; arc=none smtp.client-ip=192.198.163.7
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748737142; x=1780273142;
h=date:from:to:cc:subject:message-id;
bh=6rqgU3ufqMzgcBrgD7+OzjtiUznYwOA8sM7QfD5ZILM=;
b=Ddx6m2Boa5zu1uPfGszYF085YAIuxlua+6LLLzGmqZfxC6nrB7o82D27
7gaGK1jiGEm4T75x1x9xCek5lNhz1QHy8C2l91FbeS+vmvYY77BqVlL8w
i/xnbUnw9jlg802v19TiNdXehBa6Q5KP0ePK4msyl5R01PA06JjMO9TY6
90xW+vOzyvRDh4IT5Lb3VvPpSeTXd0ODu24//vfXmGtgzzb8C8IYmQCJS
UitXTxLODP1Vedt8jkds+mz+7Kyz8fwQFymQfiXzUYeBaHcHvX1SVG0ym
cW5i5rNDNRPmQHBl7sltLxkyl8u6uAjT7eQe+KAmZA1Nta7az09Sxoqrv
Q==;
X-CSE-ConnectionGUID: nGF8dZTtTDCQC3HTAprQdA==
X-CSE-MsgGUID: L2eBj5ZCSAiCs6fLZL5Wnw==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="76179463"
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="76179463"
Received: from orviesa005.jf.intel.com ([10.64.159.145])
by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 17:19:02 -0700
X-CSE-ConnectionGUID: kxXM3Y6ITHKg+Ec2jv0Udw==
X-CSE-MsgGUID: lu7oqScjSjiYsae/ozpVQg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="149486823"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa005.jf.intel.com with ESMTP; 31 May 2025 17:19:00 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLWPi-000Yi8-1y;
Sun, 01 Jun 2025 00:18:58 +0000
Date: Sun, 01 Jun 2025 08:18:07 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: "x86-ml" <x86@xxxxxxxxxx>
Cc: linux-kernel@xxxxxxxxxxxxxxx
Subject: [tip:tip/urgent] BUILD SUCCESS
8b999395e29ef0184cfa6dbbacd1b1ab92bba560
Message-ID: <202506010857.OB5JB9ZR-lkp@xxxxxxxxx>
User-Agent: s-nail v14.9.24
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git tip/urgent
branch HEAD: 8b999395e29ef0184cfa6dbbacd1b1ab92bba560 Merge branch into tip/master: 'x86/urgent'

elapsed time: 904m

configs tested: 19
configs skipped: 127

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
i386 allmodconfig gcc-12
i386 allnoconfig gcc-12
i386 allyesconfig gcc-12
i386 buildonly-randconfig-001-20250531 gcc-12
i386 buildonly-randconfig-002-20250531 gcc-12
i386 buildonly-randconfig-003-20250531 gcc-12
i386 buildonly-randconfig-004-20250531 clang-20
i386 buildonly-randconfig-005-20250531 clang-20
i386 buildonly-randconfig-006-20250531 clang-20
i386 defconfig clang-20
x86_64 allnoconfig clang-20
x86_64 buildonly-randconfig-001-20250531 clang-20
x86_64 buildonly-randconfig-002-20250531 gcc-12
x86_64 buildonly-randconfig-003-20250531 gcc-12
x86_64 buildonly-randconfig-004-20250531 gcc-12
x86_64 buildonly-randconfig-005-20250531 clang-20
x86_64 buildonly-randconfig-006-20250531 clang-20
x86_64 defconfig gcc-11
x86_64 rhel-9.4-rust clang-18

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669269-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9A37941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:26:34 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 71D833BD00E
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:26:12 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 96A587485;
Sun, 1 Jun 2025 00:26:25 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="Exm/mE4p"
Received: from casper.infradead.org (casper.infradead.org [90.155.50.34])
(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 CDBF2184E;
Sun, 1 Jun 2025 00:26:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748737584; cv=none; b=exF+f9RhDZGNqKAQec3vnWpYYvIRtIOqwCoDlcvE1Sj34mEP+0IdBl3+hSVhXZMcdwA6SvcmDXyDhXQNdp5v6qXfQ8n2E9hQn8BTI0989jRe2SoIszYpNAirMiH1DEQLFo5923MMeod0U2TIeXgp4+YKnZJNa/SIWw99GCgPnns=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748737584; c=relaxed/simple;
bh=wnjlPLdQigk8QgUrIHw5yk6jJrpMJY8IJU4pMMPHFAo=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=i26LlqxtT0Tah+IlIFtIWUrN2l59c4D+DTf399S0S+NfsswwVXKYeVLXFqjRNgFwOdgwffCOvNtkofkVDlj4k4X+/kp96IEMnOgFlKPvaeTyO7gu6ZGv43dU53nmrPc4hIo+D/pMBOTD1upbCFYy4TiwV5Xx9RMZrOD85FO4WSs=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=Exm/mE4p; arc=none smtp.client-ip=90.155.50.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version:
References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To:
Content-Transfer-Encoding:Content-ID:Content-Description;
bh=5rMEOV3KLFf+UgtAPaHUd4YMhA+OdnA8tVR26hQhvHY=; b=Exm/mE4p4ROy2CB3jVoyT30S5s
CZwAD3td2DHQhuXhoNsMlrGr6/4Fu+gZ5ZMxz3isum/jvx6wHBpY/HqfHzfV8O8mVca0YnPZdt0Ii
TJUAhCQVf3ONs1apHQXVDwdA6Ki+CaSqyYrYQBREpHRyNGbOWuLG3w0EmHYmCd45IDdeLz7JWpHAB
FLns5ip5T1x8h6GjA/YCEPKY0ADhUW2iKpDn/DXGLgnfRH6o/41Dh6L6PMlJ4l2kNcdWNaeQnWMlm
4PTfCEflJTI5RzsbFZWtiB1H08ys0qYjSRqA+4DSIuhNZmLy2gJ9Qm1HjVY9ggkhrfUOA9LJA16NN
Ds2tp2tg==;
Received: from willy by casper.infradead.org with local (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLWWa-0000000HB4K-15Hx;
Sun, 01 Jun 2025 00:26:04 +0000
Date: Sun, 1 Jun 2025 01:26:04 +0100
From: Matthew Wilcox <willy@xxxxxxxxxxxxx>
To: syzbot <syzbot+c0dc46208750f063d0e0@xxxxxxxxxxxxxxxxxxxxxxxxx>
Cc: asmadeus@xxxxxxxxxxxxx, chao@xxxxxxxxxx, dhowells@xxxxxxxxxx,
hch@xxxxxx, hdanton@xxxxxxxx, jaegeuk@xxxxxxxxxx,
jlayton@xxxxxxxxxx, linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx,
linux-fsdevel@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
netfs@xxxxxxxxxxxxxxx, syzkaller-bugs@xxxxxxxxxxxxxxxx,
v9fs@xxxxxxxxxxxxxxx
Subject: Re: [syzbot] [netfs?] kernel BUG in folio_unlock (3)
Message-ID: <aDueHCMDLPs2UtY2@xxxxxxxxxxxxxxxxxxxx>
References: <67b75198.050a0220.14d86d.02e2.GAE@xxxxxxxxxx>
<683b8ea2.a00a0220.d8eae.0020.GAE@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <683b8ea2.a00a0220.d8eae.0020.GAE@xxxxxxxxxx>
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, May 31, 2025 at 04:20:02PM -0700, syzbot wrote:
> syzbot has bisected this issue to:
>
> commit 80f31d2a7e5f4efa7150c951268236c670bcb068
> Author: Christoph Hellwig <hch@xxxxxx>
> Date: Thu May 8 05:14:32 2025 +0000

That's not possible; this commit is after the original report.

That said, there _is_ a double folio_unlock() in this patch, which
I'm about to send a fix for. It's just not fixing the original report.


Return-Path: <linux-kernel+bounces-669270-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 72FFF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:30:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 8ACC9177C0F
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:30:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 369868BE8;
Sun, 1 Jun 2025 00:30:34 +0000 (UTC)
Received: from mail-io1-f78.google.com (mail-io1-f78.google.com [209.85.166.78])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id DFD444A06
for <linux-kernel@xxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:30:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.78
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748737833; cv=none; b=p/o9KdCn5eHpF5QRLQn3aOVijJzZNh3XV8naWrCGlNRgd8HNNRy2XCVUNwRo3tWBsMbtd2RNSNU3gRwJZk+OXY9QQtX4TD5xyByTeY+Tos0OGemsqwC/d8mwNJ2OjVAeHGKE6sH4pUnPV7jp9ngUC4C5YJuu7oTqOkDX7US9eGs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748737833; c=relaxed/simple;
bh=tTCbf1SIgIEMyJqaa/91N7xl7SCBcwIB2zIAEZjdPUA=;
h=MIME-Version:Date:In-Reply-To:Message-ID:Subject:From:To:
Content-Type; b=kNvjDx4lqK7e/e58jOfarO5VPqQaQtWanRS2DopfnkwrooS/22FP7s38lljUhBItuowLBOOTuqbK2rJC7WzCTRHaiBukewIQowU/yZmuxE+dF5UzWk+ka0BgVyNGV0dz9qkmjDwOxnf5emWCbolRCYcxmnoCCkP18G7TnZU8pME=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.78
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-io1-f78.google.com with SMTP id ca18e2360f4ac-86cc7cdb86fso282400539f.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 17:30:31 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748737831; x=1749342631;
h=to:from:subject:message-id:in-reply-to:date:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=e5fa6Bx1fxUvTdQ0LMroNmNiZrTxPWOsUPhI543mCWE=;
b=Pt/okpszCUktr+bTxrdVHynWixulmw7RtKH5d7rL0TgGDOyaME4dODUKVeYbVD+9YO
K3s+bQY4DGWglwGgrogELWbLGqbnGKakaZTcib1GcmxdArMVo+JQQAp084yizUst1z/V
Kv73Bjj89JaA+MM7fPp72voutHj5mEKNY3+43QD97G4ri84dfcBQkHnt4sZQhvv9bTT5
YTQD0jPs6xeI0R5DNK3X6O+Kkygg6CukEIeB8HZuCp4sN3ioKo7JkbJe1TlKILOn3FyZ
Pe/VVVUbH24LihBvUBgWA9wwp0C6ftj6O5FFZXBRQG3LCu/lOn7lTv/FfjAL3a9KoPNH
cZvA==
X-Forwarded-Encrypted: i=1; AJvYcCWkLxtB722wK9DOyDFH7G00+4dkdCRtC5VqG0W7epDwANpCaAmA6ld3C3aZFG9YWdLQlyvsP0NajdcC7GA=@vger.kernel.org
X-Gm-Message-State: AOJu0YzuuhQLUEm6Yy2DticzAxxHypIMVeGZva3iXD4Jc196bAincJsV
ww5Z/4UsVVrUGYjOLGb5dSN32Q5QvxKQBm7b/5v3uoFUAKgeVPgKtPAZ1XsDcYZSjda+psnRsf0
aTTUEwp2RHyGBGOor8Si7dX6NFLBMcp2Pf/3yAMmPcVc8zpEhWdoAbR8zYPU=
X-Google-Smtp-Source: AGHT+IEHez9TbSKXapQ329l8kU5B+0NFBSLaa89pk/FwR/50ylMo+qwfMpJV3BJ0QijmT5XPKHuf3Cob+jYrkQvJkRH+tgohRcrX
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6602:276a:b0:867:237f:381e with SMTP id
ca18e2360f4ac-86d2d072dd0mr268960439f.2.1748737831060; Sat, 31 May 2025
17:30:31 -0700 (PDT)
Date: Sat, 31 May 2025 17:30:31 -0700
In-Reply-To: <000000000000ae4aa90614a58d7b@xxxxxxxxxx>
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683b9f27.a00a0220.d8eae.0022.GAE@xxxxxxxxxx>
Subject: Re: [syzbot] [usb?] [input?] WARNING in cm109_input_open/usb_submit_urb
(3)
From: syzbot <syzbot+ac0f9c4cc1e034160492@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: dmitry.torokhov@xxxxxxxxx, linux-input@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx, linux-usb@xxxxxxxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

syzbot has found a reproducer for the following issue on:

HEAD commit: 0f70f5b08a47 Merge tag 'pull-automount' of git://git.kerne..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=150e0c82580000
kernel config: https://syzkaller.appspot.com/x/.config?x=22765942f2e2ebcf
dashboard link: https://syzkaller.appspot.com/bug?extid=ac0f9c4cc1e034160492
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-1~exp1~20250514183223.118), Debian LLD 20.1.6
syz repro: https://syzkaller.appspot.com/x/repro.syz?x=103dbed4580000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=130e0c82580000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/f091df6896fd/disk-0f70f5b0.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/978b2a8699d8/vmlinux-0f70f5b0.xz
kernel image: https://storage.googleapis.com/syzbot-assets/b6e13557ddc0/bzImage-0f70f5b0.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+ac0f9c4cc1e034160492@xxxxxxxxxxxxxxxxxxxxxxxxx

cm109 2-1:0.8: invalid payload size 1024, expected 4
input: CM109 USB driver as /devices/platform/dummy_hcd.1/usb2/2-1/2-1:0.8/input/input551
------------[ cut here ]------------
URB ffff88814caed700 submitted while active
WARNING: CPU: 0 PID: 6321 at drivers/usb/core/urb.c:379 usb_submit_urb+0xfa8/0x1870 drivers/usb/core/urb.c:379
Modules linked in:

CPU: 0 UID: 0 PID: 6321 Comm: kworker/0:8 Not tainted 6.15.0-syzkaller-09161-g0f70f5b08a47 #0 PREEMPT(full)
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 05/07/2025
Workqueue: usb_hub_wq hub_event
RIP: 0010:usb_submit_urb+0xfa8/0x1870 drivers/usb/core/urb.c:379
Code: 00 eb 5c e8 0a 68 a8 fa e9 09 f1 ff ff e8 00 68 a8 fa c6 05 f0 aa 71 08 01 90 48 c7 c7 00 5a 32 8c 48 89 de e8 a9 41 6c fa 90 <0f> 0b 90 90 e9 d0 f0 ff ff e8 da 67 a8 fa eb 11 e8 d3 67 a8 fa bd
RSP: 0018:ffffc9000d02eb38 EFLAGS: 00010246
RAX: a79c1e2737f67a00 RBX: ffff88814caed700 RCX: ffff88801e3f0000
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000002
RBP: 000000000000000f R08: ffffffff8f9f7ff7 R09: 1ffffffff1f3effe
R10: dffffc0000000000 R11: fffffbfff1f3efff R12: 1ffff1100234820a
R13: dffffc0000000000 R14: ffff88814caed708 R15: 0000000000000cc0
FS: 0000000000000000(0000) GS:ffff888125c99000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00005555851e6da8 CR3: 000000002fb48000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
<TASK>
cm109_input_open+0x1fb/0x460 drivers/input/misc/cm109.c:566
input_open_device+0x1c5/0x360 drivers/input/input.c:600
kbd_connect+0xed/0x140 drivers/tty/vt/keyboard.c:1591
input_attach_handler drivers/input/input.c:993 [inline]
input_register_device+0xcee/0x10b0 drivers/input/input.c:2412
cm109_usb_probe+0x118c/0x1690 drivers/input/misc/cm109.c:797
usb_probe_interface+0x641/0xbc0 drivers/usb/core/driver.c:396
call_driver_probe drivers/base/dd.c:-1 [inline]
really_probe+0x26a/0x9a0 drivers/base/dd.c:657
__driver_probe_device+0x18c/0x2f0 drivers/base/dd.c:799
driver_probe_device+0x4f/0x430 drivers/base/dd.c:829
__device_attach_driver+0x2ce/0x530 drivers/base/dd.c:957
bus_for_each_drv+0x251/0x2e0 drivers/base/bus.c:462
__device_attach+0x2b8/0x400 drivers/base/dd.c:1029
bus_probe_device+0x185/0x260 drivers/base/bus.c:537
device_add+0x7b6/0xb50 drivers/base/core.c:3692
usb_set_configuration+0x1a87/0x20e0 drivers/usb/core/message.c:2210
usb_generic_driver_probe+0x8d/0x150 drivers/usb/core/generic.c:250
usb_probe_device+0x1c4/0x390 drivers/usb/core/driver.c:291
call_driver_probe drivers/base/dd.c:-1 [inline]
really_probe+0x26a/0x9a0 drivers/base/dd.c:657
__driver_probe_device+0x18c/0x2f0 drivers/base/dd.c:799
driver_probe_device+0x4f/0x430 drivers/base/dd.c:829
__device_attach_driver+0x2ce/0x530 drivers/base/dd.c:957
bus_for_each_drv+0x251/0x2e0 drivers/base/bus.c:462
__device_attach+0x2b8/0x400 drivers/base/dd.c:1029
bus_probe_device+0x185/0x260 drivers/base/bus.c:537
device_add+0x7b6/0xb50 drivers/base/core.c:3692
usb_new_device+0xa39/0x16c0 drivers/usb/core/hub.c:2663
hub_port_connect drivers/usb/core/hub.c:5531 [inline]
hub_port_connect_change drivers/usb/core/hub.c:5671 [inline]
port_event drivers/usb/core/hub.c:5831 [inline]
hub_event+0x2941/0x4a00 drivers/usb/core/hub.c:5913
process_one_work kernel/workqueue.c:3238 [inline]
process_scheduled_works+0xade/0x17b0 kernel/workqueue.c:3321
worker_thread+0x8a0/0xda0 kernel/workqueue.c:3402
kthread+0x711/0x8a0 kernel/kthread.c:464
ret_from_fork+0x3fc/0x770 arch/x86/kernel/process.c:148
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:245
</TASK>


---
If you want syzbot to run the reproducer, reply with:
#syz test: git://repo/address.git branch-or-commit-hash
If you attach or paste a git patch, syzbot will apply it before testing.


Return-Path: <linux-kernel+bounces-669271-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BE92F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:38:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E0338178A53
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:38:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 58754B65C;
Sun, 1 Jun 2025 00:38:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="L3zNnUbS"
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 93FB0137E;
Sun, 1 Jun 2025 00:38:02 +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=1748738285; cv=fail; b=sKauq8V7FWR5/n8neLvxpcbtQQtYVa6Qqasz+EdnwbkVUdMXOLIGA88J6xKMwxv74NFGJeZNyYmuHRtZzffGh1ldGmrkSnN50Gj5u95pLL0CPlTRJgkO0GDkOfOn4uVvKWxB09U+smbZ1sB7lcspEtta/yhqsLcxB/T08o6P5cY=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748738285; c=relaxed/simple;
bh=Op+PCINUiYWr0go2R8+fSCn3kqv+LynPCX1Yo2YYke4=;
h=Date:From:To:CC:Subject:Message-ID:References:Content-Type:
Content-Disposition:In-Reply-To:MIME-Version; b=aW7S33G3wpBD3EgtkF4PszaLdBHrVI6hhXulK/Ce9jLdofzbHLQkZxBWCe76l8/6e5QJUwjHQ1GRIBiqsg9p4CAeB2OjRX0WIQwjAEBory2LuQpajp/EV9+B5INmojdLsN65egm4DDp7d2MI3sAjLhIrhVpMwRm6lA8R8tJiRoI=
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=L3zNnUbS; 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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748738283; x=1780274283;
h=date:from:to:cc:subject:message-id:references:
in-reply-to:mime-version;
bh=Op+PCINUiYWr0go2R8+fSCn3kqv+LynPCX1Yo2YYke4=;
b=L3zNnUbSQrnXKGWt2PDmHgPAnSBbJUnv3/zZSbwnWTHjKXPK5UXorKrF
+FeBX/XUwAZtIDBchwTsuFbSA1qDevO6e62vk2V1/0Hiei4hQjUA4UcXl
Q/Fmoj3tM2+V4xIzJichVqMmBAZOzurPHQqCSNxwbMzc6KQPi7mLgZntP
5A005VwM8M7o7xzElwb/tz2ga3e/08cJIrRf6LoE01mz7XVhNe4BLPuVl
Y8T0QW2EphtmwALfglUXJS59IxvGFZ3u0ceYZuu9sNsa10spCE3U88+oW
qT6ibPjrT3HQGpHo4n5U5Gm0Nf09ejplxkOc0Bs4WrTOsmeKwxhSl/Qny
g==;
X-CSE-ConnectionGUID: khSpHDSfR8uwL6zkQrxiGQ==
X-CSE-MsgGUID: rMFmg/llTzyfz3+65ir2aQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="62142158"
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="62142158"
Received: from fmviesa008.fm.intel.com ([10.60.135.148])
by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 17:38:01 -0700
X-CSE-ConnectionGUID: zpaIxgRqTcW4Cpn099WpYQ==
X-CSE-MsgGUID: jO9aj1laRGSoBbIlyESvNA==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="144532409"
Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24])
by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 17:37:59 -0700
Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) 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.1544.25; Sat, 31 May 2025 17:37:59 -0700
Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by
ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.2.1544.25 via Frontend Transport; Sat, 31 May 2025 17:37:59 -0700
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (40.107.243.58)
by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server
(version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
15.1.2507.55; Sat, 31 May 2025 17:37:59 -0700
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=tOPfrmcCpr+RgknlKK1osi38o5ZqqxHriUqufIciHbx45N7qq9Ph3AFx2BcoRw1sWv58f6cLwi+NE2Phi+TqS6C5SqUr0nJuJ8TRKSHvYY5OFA98T7Ls7oLQ0MGWnko9J1hMTF4Ae9phYJQfP23NXj4dHdva4ZFsOkPnM1LzGQAudFgns3nyhnGWIa7BPlNCt9JtJVyc8vvJb16n3UXjjC0iQwurjtuAuGj2iobzFwR4nb/MYXxeGDKdvSU3RMcdlmOICTngkPBkb3xE+G1T6uxuxX6pf4hJwixXCl+cUWU7oQRIUgNdih/38cQ3hC5ElSesbs1MaDIsjY+M07ZRsg==
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=otFFrhabfW9QxezSUL7NDo+N97ojwJYNKzu5v7ipvUE=;
b=hS6wz50K1QUWdFnzxs4MPhitEfg7Eb0moX2gwbRNHa8dIfwR4d99NjLSfhB9zqknS40Zl9ml2XHEuEJbwYHfG99DEI0XfzdXlAZNgHU9vtt7eZQzNVkuvTDRxRoTn3fQx/m295CnNFxJFxS6tEwBBalDfZQz+blBX3xoLkYGssTMojt2cb51JnjampM/wmyNNjLa2SS70wfhK+BHx2uKA2KDz1hSRz+IUr4RcX4BC1TvuVgud3Kxlpmyq7PEgKOEzkdgt9piRoT6QucPZGIIuVQj5SJTWdjTcVBnlSYq7Se6gSZvkBKDMUUuAETsMcWhJaDGCkmROX9ter7t7L8jzQ==
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 PH3PPF9E162731D.namprd11.prod.outlook.com
(2603:10b6:518:1::d3c) by SJ0PR11MB5151.namprd11.prod.outlook.com
(2603:10b6:a03:2ac::20) with Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun
2025 00:37:42 +0000
Received: from PH3PPF9E162731D.namprd11.prod.outlook.com
([fe80::d013:465c:f0c4:602]) by PH3PPF9E162731D.namprd11.prod.outlook.com
([fe80::d013:465c:f0c4:602%5]) with mapi id 15.20.8769.022; Sun, 1 Jun 2025
00:37:42 +0000
Date: Sat, 31 May 2025 19:38:22 -0500
From: Ira Weiny <ira.weiny@xxxxxxxxx>
To: Ackerley Tng <ackerleytng@xxxxxxxxxx>, <kvm@xxxxxxxxxxxxxxx>,
<linux-mm@xxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>, <x86@xxxxxxxxxx>,
<linux-fsdevel@xxxxxxxxxxxxxxx>
CC: <ackerleytng@xxxxxxxxxx>, <aik@xxxxxxx>, <ajones@xxxxxxxxxxxxxxxx>,
<akpm@xxxxxxxxxxxxxxxxxxxx>, <amoorthy@xxxxxxxxxx>,
<anthony.yznaga@xxxxxxxxxx>, <anup@xxxxxxxxxxxxxx>, <aou@xxxxxxxxxxxxxxxxx>,
<bfoster@xxxxxxxxxx>, <binbin.wu@xxxxxxxxxxxxxxx>, <brauner@xxxxxxxxxx>,
<catalin.marinas@xxxxxxx>, <chao.p.peng@xxxxxxxxx>, <chenhuacai@xxxxxxxxxx>,
<dave.hansen@xxxxxxxxx>, <david@xxxxxxxxxx>, <dmatlack@xxxxxxxxxx>,
<dwmw@xxxxxxxxxxxx>, <erdemaktas@xxxxxxxxxx>, <fan.du@xxxxxxxxx>,
<fvdl@xxxxxxxxxx>, <graf@xxxxxxxxxx>, <haibo1.xu@xxxxxxxxx>,
<hch@xxxxxxxxxxxxx>, <hughd@xxxxxxxxxx>, <ira.weiny@xxxxxxxxx>,
<isaku.yamahata@xxxxxxxxx>, <jack@xxxxxxx>, <james.morse@xxxxxxx>,
<jarkko@xxxxxxxxxx>, <jgg@xxxxxxxx>, <jgowans@xxxxxxxxxx>,
<jhubbard@xxxxxxxxxx>, <jroedel@xxxxxxx>, <jthoughton@xxxxxxxxxx>,
<jun.miao@xxxxxxxxx>, <kai.huang@xxxxxxxxx>, <keirf@xxxxxxxxxx>,
<kent.overstreet@xxxxxxxxx>, <kirill.shutemov@xxxxxxxxx>,
<liam.merwick@xxxxxxxxxx>, <maciej.wieczor-retman@xxxxxxxxx>,
<mail@xxxxxxxxxxxxxxxxxxxxx>, <maz@xxxxxxxxxx>, <mic@xxxxxxxxxxx>,
<michael.roth@xxxxxxx>, <mpe@xxxxxxxxxxxxxx>, <muchun.song@xxxxxxxxx>,
<nikunj@xxxxxxx>, <nsaenz@xxxxxxxxx>, <oliver.upton@xxxxxxxxx>,
<palmer@xxxxxxxxxxx>, <pankaj.gupta@xxxxxxx>, <paul.walmsley@xxxxxxxxxx>,
<pbonzini@xxxxxxxxxx>, <pdurrant@xxxxxxxxxxxx>, <peterx@xxxxxxxxxx>,
<pgonda@xxxxxxxxxx>, <pvorel@xxxxxxx>, <qperret@xxxxxxxxxx>,
<quic_cvanscha@xxxxxxxxxxx>, <quic_eberman@xxxxxxxxxxx>,
<quic_mnalajal@xxxxxxxxxxx>, <quic_pderrin@xxxxxxxxxxx>,
<quic_pheragu@xxxxxxxxxxx>, <quic_svaddagi@xxxxxxxxxxx>,
<quic_tsoni@xxxxxxxxxxx>, <richard.weiyang@xxxxxxxxx>,
<rick.p.edgecombe@xxxxxxxxx>, <rientjes@xxxxxxxxxx>, <roypat@xxxxxxxxxxxx>,
<rppt@xxxxxxxxxx>, <seanjc@xxxxxxxxxx>, <shuah@xxxxxxxxxx>,
<steven.price@xxxxxxx>, <steven.sistare@xxxxxxxxxx>,
<suzuki.poulose@xxxxxxx>, <tabba@xxxxxxxxxx>, <thomas.lendacky@xxxxxxx>,
<usama.arif@xxxxxxxxxxxxx>, <vannapurve@xxxxxxxxxx>, <vbabka@xxxxxxx>,
<viro@xxxxxxxxxxxxxxxxxx>, <vkuznets@xxxxxxxxxx>, <wei.w.wang@xxxxxxxxx>,
<will@xxxxxxxxxx>, <willy@xxxxxxxxxxxxx>, <xiaoyao.li@xxxxxxxxx>,
<yan.y.zhao@xxxxxxxxx>, <yilun.xu@xxxxxxxxx>, <yuzenghui@xxxxxxxxxx>,
<zhiquan1.li@xxxxxxxxx>
Subject: Re: [RFC PATCH v2 23/51] mm: hugetlb: Refactor out
hugetlb_alloc_folio()
Message-ID: <683ba0fe64dd5_13031529421@iweiny-mobl.notmuch>
References: <cover.1747264138.git.ackerleytng@xxxxxxxxxx>
<bdd00f8a1919794da94ba366529756bd6b925ade.1747264138.git.ackerleytng@xxxxxxxxxx>
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <bdd00f8a1919794da94ba366529756bd6b925ade.1747264138.git.ackerleytng@xxxxxxxxxx>
X-ClientProxiedBy: MW4PR04CA0083.namprd04.prod.outlook.com
(2603:10b6:303:6b::28) To MW4PR11MB6739.namprd11.prod.outlook.com
(2603:10b6:303:20b::19)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: PH3PPF9E162731D:EE_|SJ0PR11MB5151:EE_
X-MS-Office365-Filtering-Correlation-Id: 36a3867e-d009-4061-5f06-08dda0a48371
X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|7416014|376014|7053199007;
X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?k/EGfBEnkiAUd2KS1kl7uYzfmNbC2qRUjtRZ++Ur6jGNTuucKTj9GUqP+mGc?=
=?us-ascii?Q?3aStdr8Bncazf78vPKpI2m2qMOellYCcmOWKtznRhY4iKHG+V+II0JUSWFn8?=
=?us-ascii?Q?+on6LzlxVxbnvaZ7cFnzF5QXp/qgQq8m0eJaIeJ7W3IgxzquX5vw+YSkwP2F?=
=?us-ascii?Q?m4hUhIskExJx6cJCvECg4w0Rx6DnlPl4M5Y3+0r/QfG4SG9u5eM0kq5BnsfK?=
=?us-ascii?Q?BhrrNJsnFGDHb7FmhHawT9J6O82z52cHtcRVrlGainduY9zoF3lzXf+Ze165?=
=?us-ascii?Q?5orPH7w7U7c+NfX9oD9vbqcCWaIq4l0REYkurB3S0U5ywvYMuby8xYUkVX36?=
=?us-ascii?Q?iJCxdePGk22uoYKcqqkmpHl756bjJV1Vng2RRmyWwlV5EAoTg4PXBt4lFBAy?=
=?us-ascii?Q?LCBl2fmHQQz9oUVEE3McJNceJ9RXU4OI23cIoKw1haB6Cjnwce6DQMdlqkv4?=
=?us-ascii?Q?utPlrlf5EaFuHVgqD+6yxT16MHfkWyhk8TntxJ/8e/DYZw/uqba/QpONxFAO?=
=?us-ascii?Q?8Q/1eJMvW/YoJZ9ql54H60hv4VcdD44rnkxFWHRWew2iGZXo9Rdl9d7wgsuF?=
=?us-ascii?Q?WBuqVXjemO0coDaZtHoE7tQvAHVR+B1xLrhXgcbAzC9MiJAFq0sCMJg7RB5f?=
=?us-ascii?Q?3KZxwDUAgVCZz3SpZ8TtAYAUED6BrmPCymETPDHeBpWQ5329TE/op1THZ/CR?=
=?us-ascii?Q?KkbD6uI7g354DyV+2l+hxEqmKTroNXckx+PDRRmmWxpPHvvFnpP7jbcMz4r5?=
=?us-ascii?Q?NCwDHj3ld9IVlWDh0TDos+scmEbXTCkwGqOLdtju01Yg3AMUzTr53r8ZNw5R?=
=?us-ascii?Q?opgYFyIebGd7TMp/k46dpSx60Jg0jx06oPBGoBZjysH6WQXbTtx3BQhiCyxs?=
=?us-ascii?Q?Sipfl0K0G123svJ0iTxybjiPDNTyo9oOR40ZePbnzx8AvDcDPFEmvpz/wonC?=
=?us-ascii?Q?V88j4L6J6HDzI1EXFfQCEngTbhM1kW9g4OpCfzxdR1ko/tldCAWAletyrbke?=
=?us-ascii?Q?JdLOMu2MhBqumKe/WhTbjtX/gY/kLgVkP1LSsruW4itbVoD7+QzegTGLNzI4?=
=?us-ascii?Q?NAlYrN0QgtXsBNiKeNk4oP7zPVArGquGmR3gp1jNQpxMVjprV/+w0YKVtvx4?=
=?us-ascii?Q?n64NxU1YU2yfogi5ODnfl+eukqqj7UPD1u2Ekk7KH5z6FwPOqI+Sc8sNTrsV?=
=?us-ascii?Q?/dHDdjto0gWkFchRGBo7gsCwe4eutfH2nj95EwI7Xzrq72NPbGlBM89diDof?=
=?us-ascii?Q?MhnlYTXM7OKB/yHfW8ejSZvbIT1e1BHaxnE4oE7Bxgyf4nmZDDuJLO+bI8Lr?=
=?us-ascii?Q?NqvdD6yWhXZtwI2URZzBrDWz0esQ5OcJT912BFcJBFKmIRcs/fPlmK83y7Pm?=
=?us-ascii?Q?9HrRbUiyAM0ZIgUVMRIY67DxsfyzGzM8wNDQC7njzSU380zYUQ=3D=3D?=
X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH3PPF9E162731D.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(7416014)(376014)(7053199007);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lXgYrU9xyW1Dz/XuARyVbKXs8DC/W9zyDK/S4sjvM3Yju7YfdxtKk7aFAgag?=
=?us-ascii?Q?WjpjEGyZ97B2JGwLhVyOSbocSYodcj+zmvHgIHf9pdOqrmDF68vdihWEVVgy?=
=?us-ascii?Q?Jj26vK2+b2Duw+nT8IHMSJug2nG1PRyz7uBowNWW8joqkPytPXoGbN+9hm2b?=
=?us-ascii?Q?HUcQEhILgD4Sx5zNZ2tJcMu5ZBvKrpIJCo+prO/dwOIVYjGDMoHYRyK1gsVZ?=
=?us-ascii?Q?bZaO0JTUd+GRt0yte010Kb1y6KlTGcThtGJVV/YJK1r9nw9BVPsOOnvbAER8?=
=?us-ascii?Q?H9iueXV7Lm4yQeC81t3GXCGNXIaqaKW/OOtiw8nJQyX+2kVH5oYJbV2nb4J7?=
=?us-ascii?Q?X2QXUgXIydpOhEGvtMQfXlQ3EX905XL2TVDT3/ExidRJzynZLJ0iK4FG0IAX?=
=?us-ascii?Q?xy+i6aTSs0tV5s83DEwB8Mo6ErIAzpYkE+J5JCEFUlK4euhzibUQLMZkz/1W?=
=?us-ascii?Q?srF3IpDG04U2iL62mehwJcLdMrIAD6qbHVjn2+4GbyLI23khZJ/RWHUWouN0?=
=?us-ascii?Q?GSZ0koWlZmQozOA69qsiU7WE8acUxIS/esuyPkMojWWnEaUH4LpTXsMNy0vT?=
=?us-ascii?Q?L7EPHaMC/XFm+MMZwdrv2XBQ/qXSdrp++l8lgcB2SNjoJZ86HsVFpxmBfFat?=
=?us-ascii?Q?y2YGQjHGr1JHNnrGd1+hnF5l7tFbOjz22+CXCOdDBajz6kA0YcBTVomW2+zI?=
=?us-ascii?Q?roiCw2UTqHYRcqTMtliWzJHaOyU+wAAs45lAkMzmDYRkmC+ZN4ereJBX1ABx?=
=?us-ascii?Q?7Al8y7vQNm6JzJlHGuiQLsjDGRBJ9WGpqet307uYfiIvU/iS2/aax1Ef95md?=
=?us-ascii?Q?wzoPdwe05X+utRCP3rMHFmjY96Q7K3D5gZX0Q/MKtP1ahEdhogjSAPw+AQUR?=
=?us-ascii?Q?BYNe4hyDF5QQo2cls7bgs57eERkUtLwrHhxR98Eqo23LXKVjmJYUU7KWEdDg?=
=?us-ascii?Q?DOuBOGD6UF45HT8vkY4lbJ1S5QiYSWGsczVbkH2vv0OGbzeuwUaE6ve2ru6y?=
=?us-ascii?Q?jpszR1feDg+BxzLWggls4mOjpywcXgV4hKmygQO3m1V/y5Ce1LWfRkNujmx4?=
=?us-ascii?Q?Xcli5SEqYhceqWBYIT8/R45rYrQk/Oj7eNsLY0cSPPuij4dfgpRWeIeUgX6G?=
=?us-ascii?Q?vkAjA+0IJoB0Cg83HE3CtPzF+Te/d1IgPeYUuKVNPZ/oEbJ0rH7mR6BZfx8E?=
=?us-ascii?Q?947EQmGzvir0IBARPC/mKzUul6u+UnokZTCGlYvOXxUicvLTnnxdEFwwd1lJ?=
=?us-ascii?Q?Z0+xIxpogkvG9tgVHp3Z0qvdibobK/acAVIhYLPmxyO+Y4h5oOA+ekjLaHaV?=
=?us-ascii?Q?ndKOUABksi/7zVl0JifamRaPZzuJleXBLB26Czj/8BvbTbgCb7xLISC+OPLn?=
=?us-ascii?Q?9lYi1Z/CYMxH7mfSbr/QA1XEFu05Y14YucepvdXAYliXE449OsSFOuB9EOyc?=
=?us-ascii?Q?DEFXfvPQkRf6VgmzHUu+ciDJip49zmgU5msKGOmTj7ejTry1wydIFDC5mDVW?=
=?us-ascii?Q?xPGgWDRMVoF4DTowBHP8KEhzXnRyod21cS7l363BBZPrYCJx/A0afl6xpy22?=
=?us-ascii?Q?yRWCFUE3hj47cUHM0mVajlQGrVzi7EfxqLDIwU7h?=
X-MS-Exchange-CrossTenant-Network-Message-Id: 36a3867e-d009-4061-5f06-08dda0a48371
X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB6739.namprd11.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 00:37:42.3187
(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: SfG0ZEhR5HJufNrrkpWu4PywYkDn659hZl3mikH98Q6cfBDDmQ0mZQ0P+lY5mI6161cDHZFen1dYXMkd+7xsgw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5151
X-OriginatorOrg: intel.com
X-Spam-Status: No, score=-5.0 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Ackerley Tng wrote:
> Refactor out hugetlb_alloc_folio() from alloc_hugetlb_folio(), which
> handles allocation of a folio and cgroup charging.
>
> Other than flags to control charging in the allocation process,
> hugetlb_alloc_folio() also has parameters for memory policy.
>
> This refactoring as a whole decouples the hugetlb page allocation from
> hugetlbfs, (1) where the subpool is stored at the fs mount, (2)
> reservations are made during mmap and stored in the vma, and (3) mpol
> must be stored at vma->vm_policy (4) a vma must be used for allocation
> even if the pages are not meant to be used by host process.
>
> This decoupling will allow hugetlb_alloc_folio() to be used by
> guest_memfd in later patches. In guest_memfd, (1) a subpool is created
> per-fd and is stored on the inode, (2) no vma-related reservations are
> used (3) mpol may not be associated with a vma since (4) for private
> pages, the pages will not be mappable to userspace and hence have to
> associated vmas.
>
> This could hopefully also open hugetlb up as a more generic source of
> hugetlb pages that are not bound to hugetlbfs, with the complexities
> of userspace/mmap/vma-related reservations contained just to
> hugetlbfs.
>
> Signed-off-by: Ackerley Tng <ackerleytng@xxxxxxxxxx>
> Change-Id: I60528f246341268acbf0ed5de7752ae2cacbef93
> ---
> include/linux/hugetlb.h | 12 +++
> mm/hugetlb.c | 192 ++++++++++++++++++++++------------------
> 2 files changed, 118 insertions(+), 86 deletions(-)
>

[snip]

>
> +/**
> + * hugetlb_alloc_folio() - Allocates a hugetlb folio.
> + *
> + * @h: struct hstate to allocate from.
> + * @mpol: struct mempolicy to apply for this folio allocation.
> + * @ilx: Interleave index for interpretation of @mpol.
> + * @charge_cgroup_rsvd: Set to true to charge cgroup reservation.
> + * @use_existing_reservation: Set to true if this allocation should use an
> + * existing hstate reservation.
> + *
> + * This function handles cgroup and global hstate reservations. VMA-related
> + * reservations and subpool debiting must be handled by the caller if necessary.
> + *
> + * Return: folio on success or negated error otherwise.
> + */
> +struct folio *hugetlb_alloc_folio(struct hstate *h, struct mempolicy *mpol,
> + pgoff_t ilx, bool charge_cgroup_rsvd,
> + bool use_existing_reservation)
> +{
> + unsigned int nr_pages = pages_per_huge_page(h);
> + struct hugetlb_cgroup *h_cg = NULL;
> + struct folio *folio = NULL;
> + nodemask_t *nodemask;
> + gfp_t gfp_mask;
> + int nid;
> + int idx;
> + int ret;
> +
> + idx = hstate_index(h);
> +
> + if (charge_cgroup_rsvd) {
> + if (hugetlb_cgroup_charge_cgroup_rsvd(idx, nr_pages, &h_cg))
> + goto out;

Why not just return here?
return ERR_PTR(-ENOSPC);

> + }
> +
> + if (hugetlb_cgroup_charge_cgroup(idx, nr_pages, &h_cg))
> + goto out_uncharge_cgroup_reservation;
> +
> + gfp_mask = htlb_alloc_mask(h);
> + nid = policy_node_nodemask(mpol, gfp_mask, ilx, &nodemask);
> +
> + spin_lock_irq(&hugetlb_lock);
> +
> + if (use_existing_reservation || available_huge_pages(h))
> + folio = dequeue_hugetlb_folio(h, gfp_mask, mpol, nid, nodemask);
> +
> + if (!folio) {
> + spin_unlock_irq(&hugetlb_lock);
> + folio = alloc_surplus_hugetlb_folio(h, gfp_mask, mpol, nid, nodemask);
> + if (!folio)
> + goto out_uncharge_cgroup;
> + spin_lock_irq(&hugetlb_lock);
> + list_add(&folio->lru, &h->hugepage_activelist);
> + folio_ref_unfreeze(folio, 1);
> + /* Fall through */
> + }
> +
> + if (use_existing_reservation) {
> + folio_set_hugetlb_restore_reserve(folio);
> + h->resv_huge_pages--;
> + }
> +
> + hugetlb_cgroup_commit_charge(idx, nr_pages, h_cg, folio);
> +
> + if (charge_cgroup_rsvd)
> + hugetlb_cgroup_commit_charge_rsvd(idx, nr_pages, h_cg, folio);
> +
> + spin_unlock_irq(&hugetlb_lock);
> +
> + gfp_mask = htlb_alloc_mask(h) | __GFP_RETRY_MAYFAIL;
> + ret = mem_cgroup_charge_hugetlb(folio, gfp_mask);
> + /*
> + * Unconditionally increment NR_HUGETLB here. If it turns out that
> + * mem_cgroup_charge_hugetlb failed, then immediately free the page and
> + * decrement NR_HUGETLB.
> + */
> + lruvec_stat_mod_folio(folio, NR_HUGETLB, pages_per_huge_page(h));
> +
> + if (ret == -ENOMEM) {
> + free_huge_folio(folio);
> + return ERR_PTR(-ENOMEM);
> + }
> +
> + return folio;
> +
> +out_uncharge_cgroup:
> + hugetlb_cgroup_uncharge_cgroup(idx, nr_pages, h_cg);
> +out_uncharge_cgroup_reservation:
> + if (charge_cgroup_rsvd)
> + hugetlb_cgroup_uncharge_cgroup_rsvd(idx, nr_pages, h_cg);

I find the direct copy of the unwind logic from alloc_hugetlb_folio()
cumbersome and it seems like a good opportunity to clean it up.

> +out:
> + folio = ERR_PTR(-ENOSPC);
> + goto out;

Endless loop?

Ira

[snip]


Return-Path: <linux-kernel+bounces-669272-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 71C8241E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 20:44:16 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 620021896D53
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 00:44:29 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id C6F1F5258;
Sun, 1 Jun 2025 00:44:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="DZcezEe1"
Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9])
(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 A7AD84A32;
Sun, 1 Jun 2025 00:44:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.9
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748738646; cv=none; b=Kkmq7OQrN9JPxIf0HiljEIbxbb3bHTzpPdZ8RJr3klfee368G+ltGOaHMnO+U2aztmBs5vEbF+QBrT6PvJE1eRLA9cJ+/D3ivH4jZGThAHl75/EPPKtx9gBg0OEw1x1Z0T2IeRTZWgMUoy8fKOb/C1sJtK0b97fRbmeeqEddhVs=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748738646; c=relaxed/simple;
bh=+XLbk0n0OfYAxcie9FwOpfe8nvjleRVKH+GsU+88GpA=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=aEkfcKNZwZeSFojZul3Vxse8vIonq0M4Yg2mqXnESNPE0WSljiNYYvZneRw25dNDmoeP2n+xHgiMuphWPJZZzDccUqFs0FXLKWuy7VbGSMXC4M2uYnBe2lHm5kKGK3zeoAZH3Li1RahawYpWGu/1hcc1JTlJjEW9v1yBq2gmBRM=
ARC-Authentication-Results:i=1; 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=DZcezEe1; arc=none smtp.client-ip=192.198.163.9
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748738645; x=1780274645;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=+XLbk0n0OfYAxcie9FwOpfe8nvjleRVKH+GsU+88GpA=;
b=DZcezEe1oh0QZJy3dcZWXXu2N6C/6COijAGUBOo3VINdaWDd2FXerowZ
nLnI0KiGGLF9Bqix4fQR5qEX8AogmeCJ/G0yCdpBJ5M5dXMJWcqGKYdb9
dHJViRIOOtw/N0kOrDsgWS9T9pBNZ2T79TXkd51Gq68lUL7o7VFjIxO/q
of8y9Xc03hAEgsbE7XfR7HV9G3OEMG16Y5t4sZUBtUscWJ0wxlQkp0GEk
4ejKBUJ4F9whyxRUbkMbbCKuF9mfwDegJRD7VsbDDjoV2cJSk6gRhwIAU
fAvZqXOMo8vddhJ3RkWzqghHPyIGWC8TO7V/Z+UrPR3svl3Y8h817c2io
Q==;
X-CSE-ConnectionGUID: RyzBt1B8Qv6/ntCvLiAdsQ==
X-CSE-MsgGUID: 0BmuTVpVRGO3F5C95ffhWg==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="61462295"
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="61462295"
Received: from fmviesa003.fm.intel.com ([10.60.135.143])
by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 17:44:04 -0700
X-CSE-ConnectionGUID: i2wdyA9nQrOl+Mo+fCeU0A==
X-CSE-MsgGUID: 4NM9+RmbTUiZtnjxSRYRpw==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="148087216"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by fmviesa003.fm.intel.com with ESMTP; 31 May 2025 17:44:02 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLWnw-000Yie-0T;
Sun, 01 Jun 2025 00:44:00 +0000
Date: Sun, 1 Jun 2025 08:43:10 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Christian Lamparter <chunkeey@xxxxxxxxx>, linux-spi@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Cc: Paul Gazzillo <paul@xxxxxxxxx>,
Necip Fazil Yildiran <fazilyildiran@xxxxxxxxx>,
oe-kbuild-all@xxxxxxxxxxxxxxx, Mark Brown <broonie@xxxxxxxxxx>
Subject: Re: [PATCH v1] spi: push HAS_IOMEM dependency down to the drivers
Message-ID: <202506010837.XIuxozSA-lkp@xxxxxxxxx>
References: <20250530234941.950431-1-chunkeey@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250530234941.950431-1-chunkeey@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Christian,

kernel test robot noticed the following build warnings:

[auto build test WARNING on broonie-spi/for-next]
[also build test WARNING on linus/master next-20250530]
[cannot apply to v6.15]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Christian-Lamparter/spi-push-HAS_IOMEM-dependency-down-to-the-drivers/20250531-075211
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next
patch link: https://lore.kernel.org/r/20250530234941.950431-1-chunkeey%40gmail.com
patch subject: [PATCH v1] spi: push HAS_IOMEM dependency down to the drivers
config: s390-kismet-CONFIG_MFD_OCELOT-CONFIG_NET_DSA_MSCC_OCELOT_EXT-0-0 (https://download.01.org/0day-ci/archive/20250601/202506010837.XIuxozSA-lkp@xxxxxxxxx/config)
reproduce: (https://download.01.org/0day-ci/archive/20250601/202506010837.XIuxozSA-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506010837.XIuxozSA-lkp@xxxxxxxxx/

kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for MFD_OCELOT when selected by NET_DSA_MSCC_OCELOT_EXT
WARNING: unmet direct dependencies detected for MFD_OCELOT
Depends on [n]: HAS_IOMEM [=n] && SPI_MASTER [=y]
Selected by [y]:
- NET_DSA_MSCC_OCELOT_EXT [=y] && NETDEVICES [=y] && NET_DSA [=y] && SPI [=y] && NET_VENDOR_MICROSEMI [=y] && PTP_1588_CLOCK_OPTIONAL [=y]

WARNING: unmet direct dependencies detected for MDIO_MSCC_MIIM
Depends on [n]: NETDEVICES [=y] && MDIO_DEVICE [=y] && MDIO_BUS [=y] && HAS_IOMEM [=n] && REGMAP_MMIO [=y]
Selected by [y]:
- NET_DSA_MSCC_OCELOT_EXT [=y] && NETDEVICES [=y] && NET_DSA [=y] && SPI [=y] && NET_VENDOR_MICROSEMI [=y] && PTP_1588_CLOCK_OPTIONAL [=y]

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669273-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id B95C041E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:04:20 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 60F41189969D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:04:33 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 88A05944E;
Sun, 1 Jun 2025 01:04:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="dLTbnZCJ"
Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11olkn2094.outbound.protection.outlook.com [40.92.18.94])
(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 BCB602DCBEC;
Sun, 1 Jun 2025 01:04:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.18.94
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748739850; cv=fail; b=s2WJ5VLB3CWPEFJWB0xsjxP+r43bWZIGUTi06GnScN1OUrS3g4hBXG0SZA74vs/QbB5KfHrR0JFXQjG6mOF6iDEphR+l9uA2OonXU/XbMYABIlcLF1g0EMaudTe/CwCyUdH0E5206n2OcM/hX7WHEXnfriAzXfFN9Rq+i12ygrs=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748739850; c=relaxed/simple;
bh=S1DYyRTmeuJ2FmRZndOfBl8RGoylxd1EZ0Dxe0LkCVI=;
h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=SGgrzQ0VU/SgqG2AkUR5zQydRgeIoKGEoNZucw94bZ7yNnrMSCgMuqQ6qsrDCUu9J6m8H/wvpI9/+H/x4FBNbuXsufR0rK5xWvxnFOm2EgIrI2vuG3cfHD9d6ePk+AxnRB22iaR+O8BWxUmtDIFyWUdluMPmZ0h7gjsJBPSOwWE=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=dLTbnZCJ; arc=fail smtp.client-ip=40.92.18.94
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=jbU3RV6d5MYZKKebTrLf+ryMXY309mhNzNiTmyxif70JBY1aDTSyuAqXuuMEqoSltlvh2ii0SI1+3M07RmVfJ21sugB2wiqyOm09yaofsh2rZm09pEmqtB9H+sE7qAxPMgmxVRegobP2/V8svsxvewW4JKk0jqsS6IkJk7rGw4ebDQvjr5SA8UrfKqRYxzcyc7I91PHNvd6ULtlwmlbl4hShR/SNXeD/IyEoXLWmyrCn+MolyEpiLAolriD+OCpHWVctFBe1ELK/+oDQmTR9dPwFTUsgMZkQzz5P+SnXccec42yYZq0FQimMtn9GkKHvXXVSVDXXMVuwQjOcPYcrvA==
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=S1DYyRTmeuJ2FmRZndOfBl8RGoylxd1EZ0Dxe0LkCVI=;
b=iPjcgPqO75rS9c+J+uq1mebN4YVeVICf7BF0oHMzYaHyC6C8RCVHPUiio3BN+vgUBZ7QoyjriQaKsCDziGZelwEfENP19aI5NCW8KwOCst1zFcYyruUyxA+SUOiQOtGHL8DuxShPUqmDL8Lz1lMw8v20VWpsJY1SHARG09efxh5VTgy9XClgmJ57rIaD6aqye2usTo4X92CYt/OnD4YMwCH30mS/A5SS9gFDrOR10JXeOypmG80gjpU2RfAGLCUHcWQ+uuiRk0vhu4pmErWbukXT1uoB3QaxQSkS89pNyqGVSgEgOsED5iCVULjZYOEtDPXS7qLIiwPLmhgDI5D0Zg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=S1DYyRTmeuJ2FmRZndOfBl8RGoylxd1EZ0Dxe0LkCVI=;
b=dLTbnZCJqtqWnLZv0E9nbz34qr9PAGl4hchL/vcSuNQUqVgHbuZDncQZX6bAT6DNdton9x75wPG99obXkfg/lnbpL/UMyGgPjrllLZID2Ee6IhNjNDH+kGmUCb648ApS9bsLQZY6MY7lA1k3fDaD2fLoJWaYEoTAB5VqL08DSfNfwbNV2EtYz7Q9lDvrNtmUS048Op/hgEakg6c4YNDSSYGc0xukx1Q0jVwai4P7NztrVoizi/EvXqRyJHNBwgC6z2pzEKXPNOA4vmagtrRA/xXqK7tdejtRwDHsTj1ZXO4UQFfRrocdovjt4Mef6JlElrUZbf3EXb7f+6JottIwtw==
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:34::10)
by SCZP152MB5822.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:60::7) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sun, 1 Jun
2025 01:04:03 +0000
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1]) by SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1%6]) with mapi id 15.20.8769.035; Sun, 1 Jun 2025
01:04:02 +0000
From: =?utf-8?B?4oSw8J2Tg/Cdk4/ihLQg4oSx8J2TivCdk4DihK8=?=
<milesonerd@xxxxxxxxxxx>
To: "serge@xxxxxxxxxx" <serge@xxxxxxxxxx>
CC: "linux-security-module@xxxxxxxxxxxxxxx"
<linux-security-module@xxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx"
<linux-kernel@xxxxxxxxxxxxxxx>
Subject: [PATCH 1/3] security: add Lilium - Linux Integrity Lock-In User
Module
Thread-Topic: [PATCH 1/3] security: add Lilium - Linux Integrity Lock-In User
Module
Thread-Index: AQHb0o8aWlNnv6KiHUOghsJv/gvMMA==
Date: Sun, 1 Jun 2025 01:04:02 +0000
Message-ID:
<SCYP152MB62611CB2B296124E47CB1C7CB063A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Accept-Language: en-GB, pt-BR, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SCYP152MB6261:EE_|SCZP152MB5822:EE_
x-ms-office365-filtering-correlation-id: 3de4d47e-4a2f-499c-6fab-08dda0a83306
x-ms-exchange-slblob-mailprops:
P1EfU6pZOd+Ewy2R3Pu64sHUJuYJdjG8u9RSKOf5GJyLnCEF3Dz6vVT4YOmvWF/+zE7nAjEpMXCEeARPROoKQXSU1kNO91UYbEKbbcd1GGGMUgpEqLeKdhIPiVNqMIXl3Y5JZIQqQDinlr/J2/TAK1o3lNhRyXWfrQBr9QAmdDLZA0MWOqI/ch7BBEw+drdrobGl5XcTLWXfXYqFQfBu+Dc0kMcDS8mLU2H81PTcJfTdj17eaLfFrK0f2DB0KTG4IcCYrDfNv/TXgE8tjbJkvyFAQCvwfB0Z4vRdv05hNkzXrVVW/ExBN0RqDRv5Fx7ugIpwsPCqgqcpyarRZ5YxijarQ5SorB0M1S7/npuVF11BRZ+f2qn2ZRdTC8uQKDuLQJFIJB1clnfDh/DNZd7Qe5PHEt3kgl6Y9gtrgGb4nq4XScoSwxMKKEHH8f/NakrftToT+sb+WIRFrdNnByD0uX53t0jBN9RvrQTjtQ0QQlG9jAyY/qTW4UG2xA1ymYJGgtY/DN97daG1S6wqQ7STRZXGy1MhP4KOFqEZDfdBaQN57I/D2YPyWhbUWeHuBIuwHLuS+HLVhbzz3eZxBCcw5DEgykhuqmRqQGghEV3dN412id6QyqJMduJizMofUqmFi7Rk7Zrx/+YOVYJUTk+s0JOtDBmRPsR0mJhMaf8qTil70v2zT4+YJsR/pNTID41U3lY2GL3Td2/yJ5je3UuCvKYnGo5cSyjd0RT4r2LiJy8nagRGPYXfvROkh+6OLG6FfpeK4mGVCQHSUXYH8jO7ZUEm+yjgfwCDjHB0hRNp1Yj/n23VOGxTyg==
x-microsoft-antispam:
BCL:0;ARA:14566002|15080799009|461199028|41001999006|21061999006|7092599006|8060799009|19110799006|8062599006|15030799003|102099032|440099028|3412199025;
x-microsoft-antispam-message-info:
=?utf-8?B?MzROdE1zQ1pWUlpHT29Yd0pZc091b1VPRGpGVUZla1BBR0ZlSjdKOTBrd0lH?=
=?utf-8?B?RkpyUWVyUEdGNUFON0kxVGpVbVVKd2I1cDI2SUtRSCtjL004WC90NGZzYk1E?=
=?utf-8?B?eUxDZkhKRkZILzlzOHlDeWZOd0cvcW5lemY2Y2srKzRrYjJwR01NN3ZUd2ho?=
=?utf-8?B?K1ZqU2JoZzR4Y0tHK3FPVHRpeTM1ZlIrSDBHSE1xc2xlM2RLQTMwbDBER1o0?=
=?utf-8?B?WGx2dEZpejVvVGpFc3kyM0pHU01FSzNvMWhrT2RaYllWMlI4ZmdadGZmd1Rz?=
=?utf-8?B?VE5heGhxOE90TTJGR2JERk1CRDhNQ1IrN3VyUTZYcDcvbnYxYlpPRThjWWI2?=
=?utf-8?B?SWlvcXh4c2wweStnOEhTdnJvUzk3YTFWeWI0dEZCekNIcE5STi9xaHVjMEE4?=
=?utf-8?B?c3liK3pCS1kzMjNEenVUYlFOQVl6TEl4WXlEUnJWcm1jVWlpZk0zUzlkeHcy?=
=?utf-8?B?dnNKeUdGNnJzZit3S0EvdmRraWIyY21HbzMvMkNpeWg3eldjVkN0THlIT1o3?=
=?utf-8?B?ckd0aW1BTVM3elhqcHIzV2d2M0FHbmRUUm1LdmV4ZU1hRXB6R3h2bDNDR2pP?=
=?utf-8?B?dUxTY2xNazRCcXM5OE1ZTjY2TUhURlJlT2FGdDNCTzBCUmJVdWpSdFJVcld3?=
=?utf-8?B?emZUd3hzNzh0U1ZHeS9qcStOdVMyTXhpTDhBVHl0UEtmUjMxYzRkUDJaVmlh?=
=?utf-8?B?MmZ2bCt2TGRkSEJCeml6SDJMeHYwOGwwMm45UkFydEFXdXpvQm13UlpYSnFR?=
=?utf-8?B?amRrbFFRMTBobzYrU25zR1hDUkdRVk14bU5iWnMxaURWTk9NRDRsczFzWjVY?=
=?utf-8?B?MjBxNG1BU3hXYUtMdjdlM0pGVFNsV3hWaEROWnhhbG9JMUt1OTAvaDVXaVBG?=
=?utf-8?B?YkxOVEtpVnhZSUhQQS95bEp0d2tjNnVCUE5xU2dTTDk4MGJzNkxuZUIxK3Ft?=
=?utf-8?B?L0RLMGQ4RjlZN2FpRTJQVUlwand5THNJbm5QODg1LytJTGl4bEV4Z3VwNjdz?=
=?utf-8?B?T1Zwbm9abndiWEtHalBrR21HVUpKK2JkZVdmS1ZySzY1Q28ySk1ZV0tZUGZw?=
=?utf-8?B?VXRaa3NqNC9MMUNlMUt5SDdzZTNjeDZobXFzbzM4QTgyT2gvZGN2bElHZDli?=
=?utf-8?B?UDJORTZzMlo5eXFGSk5UdnpmRnEyU3NuSGNReFAyN2UyWnFZUDY2RTlNVEVK?=
=?utf-8?B?UnkxVHh0eDRoVVZLbzZSZmxtLzVvWmxVU1ZkcDV5VTArcFZkT21LSE1TbEt3?=
=?utf-8?B?MVZSeGU2ZzBIbEZqN0xNM1VCYzVrTmtZNmw1bW1tR3hsNWhuam1SMTJzelM0?=
=?utf-8?B?QnByemZ3NGpzTGFIblhWZ05KL1drdE9Ra1VBdGlCNTBFMU9XckhSTWVmaEc1?=
=?utf-8?B?Y3ZzYzFwajJvV0JWelQvbDZtNWFBZkRjZFNhNmJFaElaTEVWWjdwSzRBWG15?=
=?utf-8?B?emYvbFVmTFNucmJ5UGd6OFZPNmxQOWZPZzV4V0lJdWlhdGtwQkt3L2I5SGVn?=
=?utf-8?B?WWZtRUpuVVVaQTNnUVJPWmplTDdtTXZ1cVhyRDRIbHhWVzBQTlI1L0tpUzhU?=
=?utf-8?B?b0w2NndqWEE3RG5zdzhuSkg2c1hJVm4rZ1NnZjl3bUhBVVRqa284SC9WZFdC?=
=?utf-8?B?Sy85VnBGb2FDL0ZoWjkyak1oKzZiN1E9PQ==?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?utf-8?B?WkY1Z3JnU1FvRmlxdjZKUzgrQ0QvaTJLM2NmalNiTUUwVXZzd1BQN3BEb0dY?=
=?utf-8?B?R0E3R3lRMDNYWUFNRitmTWNBZEEwOWRGMmlGOVAxbnZMd1owRkNiTXdzNEdZ?=
=?utf-8?B?VjlVejhaWnNVSCtkVjJzdjg0UlFHUUlhU3hMaUFHamo1bElNY0VNMVhZUWJs?=
=?utf-8?B?bXFEZ2NtYS9kSnpOeFh0K3NmQTdmdUdMSldYdS85b2cwTGtpZmxZZ2RkVmVt?=
=?utf-8?B?Q1JZUTBYbk9LNDhZNFMzUGUyWEdlL2dpYjBBb3kyRTR4VDJ4NDV4RmIyMERK?=
=?utf-8?B?dm9DVUc3dFpGSG0vY2R5d3IwWHhrMzd6bTlMZ3BPMzIzYlBOaFIyTjZ5RHV1?=
=?utf-8?B?Q3dpbGdEQnBZYWg2Qi9oc0hJNmFJeitoYUhzSjY3NTJNOUZCcmtRWnYxS082?=
=?utf-8?B?WDBwU1RER0VGZTM3ektPb0MxbHJ2bWMxNlkrK3E2RHExc0Ixb0s5ZGlyVTFE?=
=?utf-8?B?bHNTTzgzak5DOXBSWXc0d1gzbUIxS1oyQ0ZtOTV5aC9VeDVJRmZSUUoyeFhL?=
=?utf-8?B?N3dWb3Jxd1VaRUtYWG9yVUZlOU8rVERMend5a2Y2V2hnL0Y4Vjhia3dwNjhB?=
=?utf-8?B?MStxTmhwU2pKUGVaQjN1NzFHaThlZkhCWXJyRkJOODlFOE5pV0JLWjdWSjJo?=
=?utf-8?B?LzFsS0xvUGtuNVRadGNFQzg2K0ZxM3B0OEJxOGF5UDhKUEhvY0xpOEFCTk1i?=
=?utf-8?B?WSt4VlNxREJMMW9QL3NjMWp3RG90TDNZdFh1eFNKT3pBQjJHS2hPeXkvaW1X?=
=?utf-8?B?OVNDL2hXUDUwVW9DeWE0Z1RIY0U3RkZOL1pHZWRSZUpXK1g2ZXNVZy9ERGcr?=
=?utf-8?B?MmYxY3pnbE1JQzg5NTV3UlgybW9DK0JZQmluNnNrWERFRzA2VDQyL1VjNE5H?=
=?utf-8?B?RWtYZGdsTGZQSUROMEQ0UnBuaXdtSE42a1poL21xeUdlVUh2UzA1dlIzcXNE?=
=?utf-8?B?bmxKOXNpb0lTVGJESG9qWTJuZWhuODl3VE50WThCM2I5azlDcWlGRWdxNXVa?=
=?utf-8?B?ejh3OW05Y2lnUHlJcjF3MjFZMWErV1R4ZGFxbE5tTklaU05JVTRGek9uZ2hZ?=
=?utf-8?B?TWZDU25EaURwdElhUWMzS3F5VDJJNnowVVN2ei9ROStSTG5haHd6KzdqLzQ2?=
=?utf-8?B?WUNYRy8vNUJKVDY3N1RiR1BOSGZLVjRrdXZuMnV2V0lCeWJ3TExXWmNDd2w4?=
=?utf-8?B?d3Q3K3IxT3I1bDNvU1ljN0l1UEduSWloNTN1b0x5dmszNVQzSEtYNVV5TjZ5?=
=?utf-8?B?V1Z1T0dyVGEzek9pcWhURjJoTWJRTUJEVG5saklpRk5wdmNIREUzcTJ1bzJ6?=
=?utf-8?B?UXVUNWVob2FQZk5OdkFtYVM1QjZVTE9uNTBCNTBzcVgwQ3o4VExFREFEQXIr?=
=?utf-8?B?aGVWWmZGTkZ3UWd0cnNEZjBxRmVUZ2pEM2plM0VxOUhQaTI0N2RUT2FReGdk?=
=?utf-8?B?VnVURVEwK1FzQmRwalY4L2JzL1gzSURRR25RcGVvN1pzSE1SM3ZGeGhNUHd1?=
=?utf-8?B?dHpIMGdpS0E3SklSU3lBbVNRSWhzbnV6SHJrdTEzREd3L2ZEcVFCZzV1Q3FQ?=
=?utf-8?B?b1FCQnFsTWFmbk9Qbm5BV3hOaEN0WGE1TnlFVnFpTy9GL2J6YlF4QWRpanla?=
=?utf-8?B?d0NGczNrV25yNGdKa2JsaEk1TDRpTm5JdyswV3QxR0pUUTRqdTJtUXA5RUFC?=
=?utf-8?Q?OSDmGWxRxOsGUs/V2+1Q?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: 3de4d47e-4a2f-499c-6fab-08dda0a83306
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2025 01:04:02.6895
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SCZP152MB5822
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

RnJvbSBmMzRhNTNjN2U2MTVmYjZlNjBiMjFiZGNiNWIxOTc5ZWRhZjUyMDg4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CkRh
dGU6IFN1biwgMSBKdW4gMjAyNSAwMDoyNjo0MyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIExpbGl1
bSBMU00KCi0tLQrCoHNlY3VyaXR5L2xpbGl1bS9LY29uZmlnIMKgIMKgIMKgIMKgIHwgwqA4MiAr
KysrKysKwqBzZWN1cml0eS9saWxpdW0vTWFrZWZpbGUgwqAgwqAgwqAgwqB8IMKgMTAgKwrCoHNl
Y3VyaXR5L2xpbGl1bS9saWxpdW1fY29uZmlnLmggfCDCoDI0ICsrCsKgc2VjdXJpdHkvbGlsaXVt
L2xpbGl1bV9sc20uYyDCoCDCoHwgNDY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
CsKgc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9ydXN0LnJzIMKgfCDCoDgzICsrKysrKwrCoDUgZmls
ZXMgY2hhbmdlZCwgNjY3IGluc2VydGlvbnMoKykKwqBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJp
dHkvbGlsaXVtL0tjb25maWcKwqBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvbGlsaXVtL01h
a2VmaWxlCsKgY3JlYXRlIG1vZGUgMTAwNjQ0IHNlY3VyaXR5L2xpbGl1bS9saWxpdW1fY29uZmln
LmgKwqBjcmVhdGUgbW9kZSAxMDA2NDQgc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9sc20uYwrCoGNy
ZWF0ZSBtb2RlIDEwMDY0NCBzZWN1cml0eS9saWxpdW0vbGlsaXVtX3J1c3QucnMKCmRpZmYgLS1n
aXQgYS9zZWN1cml0eS9saWxpdW0vS2NvbmZpZyBiL3NlY3VyaXR5L2xpbGl1bS9LY29uZmlnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNzI5NjQKLS0tIC9kZXYvbnVsbAor
KysgYi9zZWN1cml0eS9saWxpdW0vS2NvbmZpZwpAQCAtMCwwICsxLDgyIEBACisjIFNQRFgtTGlj
ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyMgTGlsaXVtIChMaW51eCBJbnRlZ3Jp
dHkgTG9jay1JbiBVc2VyIE1vZHVsZSkKKyMgQ29weXJpZ2h0IChDKSAyMDI1IEVuem8gRnVrZQor
IworY29uZmlnIFNFQ1VSSVRZX0xJTElVTQorIMKgIGJvb2wgIkxpbGl1bSAoTGludXggSW50ZWdy
aXR5IExvY2stSW4gVXNlciBNb2R1bGUpIFN1cHBvcnQiCisgwqAgZGVwZW5kcyBvbiBTRUNVUklU
WQorIMKgIGhlbHAKKyDCoCDCoCBUaGlzIGVuYWJsZXMgdGhlIExpbGl1bSBMaW51eCBTZWN1cml0
eSBNb2R1bGUsIHdoaWNoIHByb3ZpZGVzCisgwqAgwqAgbW9kdWxhciBzZWN1cml0eSBtZWNoYW5p
c21zIGZvciByZXN0cmljdGluZyB2YXJpb3VzIHN5c3RlbQorIMKgIMKgIG9wZXJhdGlvbnMgaW5j
bHVkaW5nIHB0cmFjZSwgbW1hcC9tcHJvdGVjdCB3aXRoIFBST1RfRVhFQywKKyDCoCDCoCBrZXhl
Y19sb2FkLCBjbG9uZS91bnNoYXJlLCBtb2R1bGUgbWFuYWdlbWVudCwgYW5kIGZpbGUgb3BlcmF0
aW9ucy4KKyDCoCDCoAorIMKgIMKgIEFsbCBzZWN1cml0eSBtZWNoYW5pc21zIGFyZSBkaXNhYmxl
ZCBieSBkZWZhdWx0IGFuZCBjYW4gYmUKKyDCoCDCoCBlbmFibGVkIGluZGl2aWR1YWxseSB0aHJv
dWdoIHN5c2N0bC4KKyDCoCDCoAorIMKgIMKgIElmIHlvdSBhcmUgdW5zdXJlIGhvdyB0byBhbnN3
ZXIgdGhpcyBxdWVzdGlvbiwgYW5zd2VyIE4uCisKK2NvbmZpZyBTRUNVUklUWV9MSUxJVU1fUFRS
QUNFCisgwqAgYm9vbCAiTGlsaXVtIHB0cmFjZSByZXN0cmljdGlvbnMiCisgwqAgZGVwZW5kcyBv
biBTRUNVUklUWV9MSUxJVU0KKyDCoCBkZWZhdWx0IG4KKyDCoCBoZWxwCisgwqAgwqAgVGhpcyBl
bmFibGVzIHB0cmFjZSBhY2Nlc3MgcmVzdHJpY3Rpb25zIGluIExpbGl1bS4KKyDCoCDCoAorIMKg
IMKgIElmIHlvdSBhcmUgdW5zdXJlIGhvdyB0byBhbnN3ZXIgdGhpcyBxdWVzdGlvbiwgYW5zd2Vy
IE4uCisKK2NvbmZpZyBTRUNVUklUWV9MSUxJVU1fTVBST1RFQ1QKKyDCoCBib29sICJMaWxpdW0g
bW1hcC9tcHJvdGVjdCByZXN0cmljdGlvbnMiCisgwqAgZGVwZW5kcyBvbiBTRUNVUklUWV9MSUxJ
VU0KKyDCoCBkZWZhdWx0IG4KKyDCoCBoZWxwCisgwqAgwqAgVGhpcyBlbmFibGVzIG1tYXAvbXBy
b3RlY3Qgd2l0aCBQUk9UX0VYRUMgcmVzdHJpY3Rpb25zIGluIExpbGl1bS4KKyDCoCDCoAorIMKg
IMKgIElmIHlvdSBhcmUgdW5zdXJlIGhvdyB0byBhbnN3ZXIgdGhpcyBxdWVzdGlvbiwgYW5zd2Vy
IE4uCisKK2NvbmZpZyBTRUNVUklUWV9MSUxJVU1fS0VYRUMKKyDCoCBib29sICJMaWxpdW0ga2V4
ZWNfbG9hZCByZXN0cmljdGlvbnMiCisgwqAgZGVwZW5kcyBvbiBTRUNVUklUWV9MSUxJVU0KKyDC
oCBkZWZhdWx0IG4KKyDCoCBoZWxwCisgwqAgwqAgVGhpcyBlbmFibGVzIGtleGVjX2xvYWQgcmVz
dHJpY3Rpb25zIGluIExpbGl1bS4KKyDCoCDCoAorIMKgIMKgIElmIHlvdSBhcmUgdW5zdXJlIGhv
dyB0byBhbnN3ZXIgdGhpcyBxdWVzdGlvbiwgYW5zd2VyIE4uCisKK2NvbmZpZyBTRUNVUklUWV9M
SUxJVU1fQ0xPTkUKKyDCoCBib29sICJMaWxpdW0gY2xvbmUvdW5zaGFyZSByZXN0cmljdGlvbnMi
CisgwqAgZGVwZW5kcyBvbiBTRUNVUklUWV9MSUxJVU0KKyDCoCBkZWZhdWx0IG4KKyDCoCBoZWxw
CisgwqAgwqAgVGhpcyBlbmFibGVzIGNsb25lIGFuZCB1bnNoYXJlIHJlc3RyaWN0aW9ucyBpbiBM
aWxpdW0uCisgwqAgwqAKKyDCoCDCoCBJZiB5b3UgYXJlIHVuc3VyZSBob3cgdG8gYW5zd2VyIHRo
aXMgcXVlc3Rpb24sIGFuc3dlciBOLgorCitjb25maWcgU0VDVVJJVFlfTElMSVVNX01PRFVMRQor
IMKgIGJvb2wgIkxpbGl1bSBtb2R1bGUgbWFuYWdlbWVudCByZXN0cmljdGlvbnMiCisgwqAgZGVw
ZW5kcyBvbiBTRUNVUklUWV9MSUxJVU0KKyDCoCBkZWZhdWx0IG4KKyDCoCBoZWxwCisgwqAgwqAg
VGhpcyBlbmFibGVzIG1vZHVsZSBsb2FkaW5nL3VubG9hZGluZyByZXN0cmljdGlvbnMgaW4gTGls
aXVtLgorIMKgIMKgCisgwqAgwqAgSWYgeW91IGFyZSB1bnN1cmUgaG93IHRvIGFuc3dlciB0aGlz
IHF1ZXN0aW9uLCBhbnN3ZXIgTi4KKworY29uZmlnIFNFQ1VSSVRZX0xJTElVTV9PUEVOCisgwqAg
Ym9vbCAiTGlsaXVtIGZpbGUgb3BlbiByZXN0cmljdGlvbnMiCisgwqAgZGVwZW5kcyBvbiBTRUNV
UklUWV9MSUxJVU0KKyDCoCBkZWZhdWx0IG4KKyDCoCBoZWxwCisgwqAgwqAgVGhpcyBlbmFibGVz
IG9wZW4vb3BlbmF0IHJlc3RyaWN0aW9ucyBpbiBMaWxpdW0uCisgwqAgwqAKKyDCoCDCoCBJZiB5
b3UgYXJlIHVuc3VyZSBob3cgdG8gYW5zd2VyIHRoaXMgcXVlc3Rpb24sIGFuc3dlciBOLgorCitj
b25maWcgU0VDVVJJVFlfTElMSVVNX0lPQ1RMCisgwqAgYm9vbCAiTGlsaXVtIGlvY3RsIHJlc3Ry
aWN0aW9ucyIKKyDCoCBkZXBlbmRzIG9uIFNFQ1VSSVRZX0xJTElVTQorIMKgIGRlZmF1bHQgbgor
IMKgIGhlbHAKKyDCoCDCoCBUaGlzIGVuYWJsZXMgaW9jdGwgcmVzdHJpY3Rpb25zIGluIExpbGl1
bS4KKyDCoCDCoAorIMKgIMKgIElmIHlvdSBhcmUgdW5zdXJlIGhvdyB0byBhbnN3ZXIgdGhpcyBx
dWVzdGlvbiwgYW5zd2VyIE4uCisKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2xpbGl1bS9NYWtlZmls
ZSBiL3NlY3VyaXR5L2xpbGl1bS9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4xN2FlYjA0Ci0tLSAvZGV2L251bGwKKysrIGIvc2VjdXJpdHkvbGlsaXVtL01ha2Vm
aWxlCkBAIC0wLDAgKzEsMTAgQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAt
b25seQorIworIyBMaWxpdW0gKExpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIgTW9kdWxlKQor
IyBDb3B5cmlnaHQgKEMpIDIwMjUgRW56byBGdWtlCisjCitvYmotJChDT05GSUdfU0VDVVJJVFlf
TElMSVVNKSArPSBsaWxpdW0ubworCitsaWxpdW0teSA6PSBsaWxpdW1fbHNtLm8KK2xpbGl1bS0k
KENPTkZJR19SVVNUKSArPSBsaWxpdW1fcnVzdC5vCisKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2xp
bGl1bS9saWxpdW1fY29uZmlnLmggYi9zZWN1cml0eS9saWxpdW0vbGlsaXVtX2NvbmZpZy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzNjN2UKLS0tIC9kZXYvbnVsbAor
KysgYi9zZWN1cml0eS9saWxpdW0vbGlsaXVtX2NvbmZpZy5oCkBAIC0wLDAgKzEsMjQgQEAKKy8q
IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBMaWxpdW0g
KExpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIgTW9kdWxlKQorICogQ29weXJpZ2h0IChDKSAy
MDI1IEVuem8gRnVrZQorICovCisKKyNpZm5kZWYgX1NFQ1VSSVRZX0xJTElVTV9DT05GSUdfSAor
I2RlZmluZSBfU0VDVVJJVFlfTElMSVVNX0NPTkZJR19ICisKKy8qIERlZmF1bHQgZGlzYWJsZWQg
c3RhdGUgZm9yIGFsbCBMaWxpdW0gZmVhdHVyZXMgKi8KKyNkZWZpbmUgTElMSVVNX0ZFQVRVUkVf
RElTQUJMRUQgMAorI2RlZmluZSBMSUxJVU1fRkVBVFVSRV9FTkFCTEVEIMKgMQorCisvKiBGZWF0
dXJlIGNvbnRyb2wgZmxhZ3MgLSBhbGwgZGlzYWJsZWQgYnkgZGVmYXVsdCAqLworI2RlZmluZSBM
SUxJVU1fREVGQVVMVF9QVFJBQ0UgwqAgTElMSVVNX0ZFQVRVUkVfRElTQUJMRUQKKyNkZWZpbmUg
TElMSVVNX0RFRkFVTFRfTVBST1RFQ1QgTElMSVVNX0ZFQVRVUkVfRElTQUJMRUQKKyNkZWZpbmUg
TElMSVVNX0RFRkFVTFRfS0VYRUMgwqAgwqBMSUxJVU1fRkVBVFVSRV9ESVNBQkxFRAorI2RlZmlu
ZSBMSUxJVU1fREVGQVVMVF9DTE9ORSDCoCDCoExJTElVTV9GRUFUVVJFX0RJU0FCTEVECisjZGVm
aW5lIExJTElVTV9ERUZBVUxUX01PRFVMRSDCoCBMSUxJVU1fRkVBVFVSRV9ESVNBQkxFRAorI2Rl
ZmluZSBMSUxJVU1fREVGQVVMVF9PUEVOIMKgIMKgIExJTElVTV9GRUFUVVJFX0RJU0FCTEVECisj
ZGVmaW5lIExJTElVTV9ERUZBVUxUX0lPQ1RMIMKgIMKgTElMSVVNX0ZFQVRVUkVfRElTQUJMRUQK
KworI2VuZGlmIC8qIF9TRUNVUklUWV9MSUxJVU1fQ09ORklHX0ggKi8KKwpkaWZmIC0tZ2l0IGEv
c2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9sc20uYyBiL3NlY3VyaXR5L2xpbGl1bS9saWxpdW1fbHNt
LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJiYWM0MQotLS0gL2Rldi9u
dWxsCisrKyBiL3NlY3VyaXR5L2xpbGl1bS9saWxpdW1fbHNtLmMKQEAgLTAsMCArMSw0NjggQEAK
Ky8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KKy8qCisgKiBMaWxp
dW0gKExpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIgTW9kdWxlKQorICogQ29weXJpZ2h0IChD
KSAyMDI1IEVuem8gRnVrZQorICovCisKKyNpbmNsdWRlIDxsaW51eC9sc21faG9va3MuaD4KKyNp
bmNsdWRlIDxsaW51eC9wdHJhY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9wcmN0bC5oPgorI2luY2x1
ZGUgPGxpbnV4L3JhdGVsaW1pdC5oPgorI2luY2x1ZGUgPGxpbnV4L3dvcmtxdWV1ZS5oPgorI2lu
Y2x1ZGUgPGxpbnV4L3N0cmluZ19oZWxwZXJzLmg+CisjaW5jbHVkZSA8bGludXgvdGFza193b3Jr
Lmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5o
PgorI2luY2x1ZGUgPGxpbnV4L3VhY2Nlc3MuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K
KyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5j
bHVkZSA8bGludXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5jbHVkZSA8bGlu
dXgvbW1hbi5oPgorI2luY2x1ZGUgPGxpbnV4L2tleGVjLmg+CisjaW5jbHVkZSA8bGludXgvc2xh
Yi5oPgorI2luY2x1ZGUgPGxpbnV4L25zcHJveHkuaD4KKyNpbmNsdWRlIDxsaW51eC9zZWN1cml0
eS5oPgorI2luY2x1ZGUgPGxpbnV4L2tvYmplY3QuaD4KKyNpbmNsdWRlIDxsaW51eC9zeXNmcy5o
PgorI2luY2x1ZGUgPHVhcGkvbGludXgvbHNtLmg+CisKKyNpbmNsdWRlICJsaWxpdW1fY29uZmln
LmgiCisKKy8qIEZlYXR1cmUgY29udHJvbCB2YXJpYWJsZXMgLSBhbGwgZGlzYWJsZWQgYnkgZGVm
YXVsdCAqLworc3RhdGljIGludCBsaWxpdW1fcHRyYWNlX2VuYWJsZWQgPSBMSUxJVU1fREVGQVVM
VF9QVFJBQ0U7CitzdGF0aWMgaW50IGxpbGl1bV9tcHJvdGVjdF9lbmFibGVkID0gTElMSVVNX0RF
RkFVTFRfTVBST1RFQ1Q7CitzdGF0aWMgaW50IGxpbGl1bV9rZXhlY19lbmFibGVkID0gTElMSVVN
X0RFRkFVTFRfS0VYRUM7CitzdGF0aWMgaW50IGxpbGl1bV9jbG9uZV9lbmFibGVkID0gTElMSVVN
X0RFRkFVTFRfQ0xPTkU7CitzdGF0aWMgaW50IGxpbGl1bV9tb2R1bGVfZW5hYmxlZCA9IExJTElV
TV9ERUZBVUxUX01PRFVMRTsKK3N0YXRpYyBpbnQgbGlsaXVtX29wZW5fZW5hYmxlZCA9IExJTElV
TV9ERUZBVUxUX09QRU47CitzdGF0aWMgaW50IGxpbGl1bV9pb2N0bF9lbmFibGVkID0gTElMSVVN
X0RFRkFVTFRfSU9DVEw7CisKKy8qIEtvYmplY3QgZm9yIExpbGl1bSBzeXNmcyBpbnRlcmZhY2Ug
Ki8KK3N0YXRpYyBzdHJ1Y3Qga29iamVjdCAqbGlsaXVtX2tvYmo7CisKKy8qIFN5c2ZzIGF0dHJp
YnV0ZSBzaG93L3N0b3JlIGZ1bmN0aW9ucyAqLworc3RhdGljIHNzaXplX3QgcHRyYWNlX2VuYWJs
ZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBz
dHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKyDCoCByZXR1cm4gc3lz
ZnNfZW1pdChidWYsICIlZFxuIiwgbGlsaXVtX3B0cmFjZV9lbmFibGVkKTsKK30KKworc3RhdGlj
IHNzaXplX3QgcHRyYWNlX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosCisgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCisgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sK
KyDCoCBpbnQgcmV0LCB2YWw7CisKKyDCoCByZXQgPSBrc3RydG9pbnQoYnVmLCAxMCwgJnZhbCk7
CisgwqAgaWYgKHJldCA8IDApCisgwqAgwqAgwqAgcmV0dXJuIHJldDsKKworIMKgIGlmICh2YWwg
IT0gMCAmJiB2YWwgIT0gMSkKKyDCoCDCoCDCoCByZXR1cm4gLUVJTlZBTDsKKworIMKgIGxpbGl1
bV9wdHJhY2VfZW5hYmxlZCA9IHZhbDsKKyDCoCByZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBz
c2l6ZV90IG1wcm90ZWN0X2VuYWJsZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIg
KmJ1ZikKK3sKKyDCoCByZXR1cm4gc3lzZnNfZW1pdChidWYsICIlZFxuIiwgbGlsaXVtX21wcm90
ZWN0X2VuYWJsZWQpOworfQorCitzdGF0aWMgc3NpemVfdCBtcHJvdGVjdF9lbmFibGVkX3N0b3Jl
KHN0cnVjdCBrb2JqZWN0ICprb2JqLAorIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3Ry
dWN0IGtvYmpfYXR0cmlidXRlICphdHRyLAorIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg
Y29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisgwqAgaW50IHJldCwgdmFsOworCisg
wqAgcmV0ID0ga3N0cnRvaW50KGJ1ZiwgMTAsICZ2YWwpOworIMKgIGlmIChyZXQgPCAwKQorIMKg
IMKgIMKgIHJldHVybiByZXQ7CisKKyDCoCBpZiAodmFsICE9IDAgJiYgdmFsICE9IDEpCisgwqAg
wqAgwqAgcmV0dXJuIC1FSU5WQUw7CisKKyDCoCBsaWxpdW1fbXByb3RlY3RfZW5hYmxlZCA9IHZh
bDsKKyDCoCByZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IGtleGVjX2VuYWJsZWRf
c2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVj
dCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworIMKgIHJldHVybiBzeXNmc19l
bWl0KGJ1ZiwgIiVkXG4iLCBsaWxpdW1fa2V4ZWNfZW5hYmxlZCk7Cit9CisKK3N0YXRpYyBzc2l6
ZV90IGtleGVjX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtvYmplY3QgKmtvYmosCisgwqAgwqAgwqAg
wqAgwqAgwqAgwqAgwqAgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLAorIMKgIMKgIMKgIMKg
IMKgIMKgIMKgIMKgIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQoreworIMKgIGludCBy
ZXQsIHZhbDsKKworIMKgIHJldCA9IGtzdHJ0b2ludChidWYsIDEwLCAmdmFsKTsKKyDCoCBpZiAo
cmV0IDwgMCkKKyDCoCDCoCDCoCByZXR1cm4gcmV0OworCisgwqAgaWYgKHZhbCAhPSAwICYmIHZh
bCAhPSAxKQorIMKgIMKgIMKgIHJldHVybiAtRUlOVkFMOworCisgwqAgbGlsaXVtX2tleGVjX2Vu
YWJsZWQgPSB2YWw7CisgwqAgcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc3NpemVfdCBjbG9u
ZV9lbmFibGVkX3Nob3coc3RydWN0IGtvYmplY3QgKmtvYmosCisgwqAgwqAgwqAgwqAgwqAgwqAg
wqAgwqBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKK3sKKyDCoCByZXR1
cm4gc3lzZnNfZW1pdChidWYsICIlZFxuIiwgbGlsaXVtX2Nsb25lX2VuYWJsZWQpOworfQorCitz
dGF0aWMgc3NpemVfdCBjbG9uZV9lbmFibGVkX3N0b3JlKHN0cnVjdCBrb2JqZWN0ICprb2JqLAor
IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0ciwKKyDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkKK3sK
KyDCoCBpbnQgcmV0LCB2YWw7CisKKyDCoCByZXQgPSBrc3RydG9pbnQoYnVmLCAxMCwgJnZhbCk7
CisgwqAgaWYgKHJldCA8IDApCisgwqAgwqAgwqAgcmV0dXJuIHJldDsKKworIMKgIGlmICh2YWwg
IT0gMCAmJiB2YWwgIT0gMSkKKyDCoCDCoCDCoCByZXR1cm4gLUVJTlZBTDsKKworIMKgIGxpbGl1
bV9jbG9uZV9lbmFibGVkID0gdmFsOworIMKgIHJldHVybiBjb3VudDsKK30KKworc3RhdGljIHNz
aXplX3QgbW9kdWxlX2VuYWJsZWRfc2hvdyhzdHJ1Y3Qga29iamVjdCAqa29iaiwKKyDCoCDCoCDC
oCDCoCDCoCDCoCDCoCDCoCBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikK
K3sKKyDCoCByZXR1cm4gc3lzZnNfZW1pdChidWYsICIlZFxuIiwgbGlsaXVtX21vZHVsZV9lbmFi
bGVkKTsKK30KKworc3RhdGljIHNzaXplX3QgbW9kdWxlX2VuYWJsZWRfc3RvcmUoc3RydWN0IGtv
YmplY3QgKmtvYmosCisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3Qga29ial9hdHRy
aWJ1dGUgKmF0dHIsCisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBjb25zdCBjaGFyICpidWYs
IHNpemVfdCBjb3VudCkKK3sKKyDCoCBpbnQgcmV0LCB2YWw7CisKKyDCoCByZXQgPSBrc3RydG9p
bnQoYnVmLCAxMCwgJnZhbCk7CisgwqAgaWYgKHJldCA8IDApCisgwqAgwqAgwqAgcmV0dXJuIHJl
dDsKKworIMKgIGlmICh2YWwgIT0gMCAmJiB2YWwgIT0gMSkKKyDCoCDCoCDCoCByZXR1cm4gLUVJ
TlZBTDsKKworIMKgIGxpbGl1bV9tb2R1bGVfZW5hYmxlZCA9IHZhbDsKKyDCoCByZXR1cm4gY291
bnQ7Cit9CisKK3N0YXRpYyBzc2l6ZV90IG9wZW5fZW5hYmxlZF9zaG93KHN0cnVjdCBrb2JqZWN0
ICprb2JqLAorIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSAqYXR0
ciwgY2hhciAqYnVmKQoreworIMKgIHJldHVybiBzeXNmc19lbWl0KGJ1ZiwgIiVkXG4iLCBsaWxp
dW1fb3Blbl9lbmFibGVkKTsKK30KKworc3RhdGljIHNzaXplX3Qgb3Blbl9lbmFibGVkX3N0b3Jl
KHN0cnVjdCBrb2JqZWN0ICprb2JqLAorIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGtv
YmpfYXR0cmlidXRlICphdHRyLAorIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY29uc3QgY2hhciAq
YnVmLCBzaXplX3QgY291bnQpCit7CisgwqAgaW50IHJldCwgdmFsOworCisgwqAgcmV0ID0ga3N0
cnRvaW50KGJ1ZiwgMTAsICZ2YWwpOworIMKgIGlmIChyZXQgPCAwKQorIMKgIMKgIMKgIHJldHVy
biByZXQ7CisKKyDCoCBpZiAodmFsICE9IDAgJiYgdmFsICE9IDEpCisgwqAgwqAgwqAgcmV0dXJu
IC1FSU5WQUw7CisKKyDCoCBsaWxpdW1fb3Blbl9lbmFibGVkID0gdmFsOworIMKgIHJldHVybiBj
b3VudDsKK30KKworc3RhdGljIHNzaXplX3QgaW9jdGxfZW5hYmxlZF9zaG93KHN0cnVjdCBrb2Jq
ZWN0ICprb2JqLAorIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgc3RydWN0IGtvYmpfYXR0cmlidXRl
ICphdHRyLCBjaGFyICpidWYpCit7CisgwqAgcmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCAiJWRcbiIs
IGxpbGl1bV9pb2N0bF9lbmFibGVkKTsKK30KKworc3RhdGljIHNzaXplX3QgaW9jdGxfZW5hYmxl
ZF9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwKKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBz
dHJ1Y3Qga29ial9hdHRyaWJ1dGUgKmF0dHIsCisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY29u
c3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCit7CisgwqAgaW50IHJldCwgdmFsOworCisgwqAg
cmV0ID0ga3N0cnRvaW50KGJ1ZiwgMTAsICZ2YWwpOworIMKgIGlmIChyZXQgPCAwKQorIMKgIMKg
IMKgIHJldHVybiByZXQ7CisKKyDCoCBpZiAodmFsICE9IDAgJiYgdmFsICE9IDEpCisgwqAgwqAg
wqAgcmV0dXJuIC1FSU5WQUw7CisKKyDCoCBsaWxpdW1faW9jdGxfZW5hYmxlZCA9IHZhbDsKKyDC
oCByZXR1cm4gY291bnQ7Cit9CisKKy8qIERlZmluZSBzeXNmcyBhdHRyaWJ1dGVzICovCitzdGF0
aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIHB0cmFjZV9hdHRyID0KKyDCoCBfX0FUVFIocHRyYWNl
X2VuYWJsZWQsIDA2NDQsIHB0cmFjZV9lbmFibGVkX3Nob3csIHB0cmFjZV9lbmFibGVkX3N0b3Jl
KTsKK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUgbXByb3RlY3RfYXR0ciA9CisgwqAgX19B
VFRSKG1wcm90ZWN0X2VuYWJsZWQsIDA2NDQsIG1wcm90ZWN0X2VuYWJsZWRfc2hvdywgbXByb3Rl
Y3RfZW5hYmxlZF9zdG9yZSk7CitzdGF0aWMgc3RydWN0IGtvYmpfYXR0cmlidXRlIGtleGVjX2F0
dHIgPQorIMKgIF9fQVRUUihrZXhlY19lbmFibGVkLCAwNjQ0LCBrZXhlY19lbmFibGVkX3Nob3cs
IGtleGVjX2VuYWJsZWRfc3RvcmUpOworc3RhdGljIHN0cnVjdCBrb2JqX2F0dHJpYnV0ZSBjbG9u
ZV9hdHRyID0KKyDCoCBfX0FUVFIoY2xvbmVfZW5hYmxlZCwgMDY0NCwgY2xvbmVfZW5hYmxlZF9z
aG93LCBjbG9uZV9lbmFibGVkX3N0b3JlKTsKK3N0YXRpYyBzdHJ1Y3Qga29ial9hdHRyaWJ1dGUg
bW9kdWxlX2F0dHIgPQorIMKgIF9fQVRUUihtb2R1bGVfZW5hYmxlZCwgMDY0NCwgbW9kdWxlX2Vu
YWJsZWRfc2hvdywgbW9kdWxlX2VuYWJsZWRfc3RvcmUpOworc3RhdGljIHN0cnVjdCBrb2JqX2F0
dHJpYnV0ZSBvcGVuX2F0dHIgPQorIMKgIF9fQVRUUihvcGVuX2VuYWJsZWQsIDA2NDQsIG9wZW5f
ZW5hYmxlZF9zaG93LCBvcGVuX2VuYWJsZWRfc3RvcmUpOworc3RhdGljIHN0cnVjdCBrb2JqX2F0
dHJpYnV0ZSBpb2N0bF9hdHRyID0KKyDCoCBfX0FUVFIoaW9jdGxfZW5hYmxlZCwgMDY0NCwgaW9j
dGxfZW5hYmxlZF9zaG93LCBpb2N0bF9lbmFibGVkX3N0b3JlKTsKKworLyogQXR0cmlidXRlIGdy
b3VwICovCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbGlsaXVtX2F0dHJzW10gPSB7CisgwqAg
JnB0cmFjZV9hdHRyLmF0dHIsCisgwqAgJm1wcm90ZWN0X2F0dHIuYXR0ciwKKyDCoCAma2V4ZWNf
YXR0ci5hdHRyLAorIMKgICZjbG9uZV9hdHRyLmF0dHIsCisgwqAgJm1vZHVsZV9hdHRyLmF0dHIs
CisgwqAgJm9wZW5fYXR0ci5hdHRyLAorIMKgICZpb2N0bF9hdHRyLmF0dHIsCisgwqAgTlVMTCwK
K307CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGxpbGl1bV9hdHRyX2dyb3VwID0g
eworIMKgIC5hdHRycyA9IGxpbGl1bV9hdHRycywKK307CisKKy8qIExTTSBIb29rIEltcGxlbWVu
dGF0aW9ucyAqLworCitzdGF0aWMgaW50IGxpbGl1bV9wdHJhY2VfYWNjZXNzX2NoZWNrKHN0cnVj
dCB0YXNrX3N0cnVjdCAqY2hpbGQsCisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB1bnNp
Z25lZCBpbnQgbW9kZSkKK3sKKyDCoCBpZiAoIWxpbGl1bV9wdHJhY2VfZW5hYmxlZCkKKyDCoCDC
oCDCoCByZXR1cm4gMDsKKworIMKgIC8qIEltcGxlbWVudCBjb250ZXh0dWFsIGxvZ2ljIGZvciBw
dHJhY2UgcmVzdHJpY3Rpb25zICovCisgwqAgaWYgKG1vZGUgJiBQVFJBQ0VfTU9ERV9BVFRBQ0gp
IHsKKyDCoCDCoCDCoCAvKiBBbGxvdyBpZiBjYWxsZXIgaGFzIENBUF9TWVNfUFRSQUNFICovCisg
wqAgwqAgwqAgaWYgKGNhcGFibGUoQ0FQX1NZU19QVFJBQ0UpKQorIMKgIMKgIMKgIMKgIMKgIHJl
dHVybiAwOworIMKgIMKgIMKgCisgwqAgwqAgwqAgLyogRGVueSBwdHJhY2UgYWNjZXNzICovCisg
wqAgwqAgwqAgcmV0dXJuIC1FUEVSTTsKKyDCoCB9CisKKyDCoCByZXR1cm4gMDsKK30KKworc3Rh
dGljIGludCBsaWxpdW1fZmlsZV9tcHJvdGVjdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSwK
KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHVuc2lnbmVkIGxvbmcgcmVxcHJvdCwKKyDCoCDC
oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHVuc2lnbmVkIGxvbmcgcHJvdCkKK3sKKyDCoCBpZiAoIWxp
bGl1bV9tcHJvdGVjdF9lbmFibGVkKQorIMKgIMKgIMKgIHJldHVybiAwOworCisgwqAgLyogSW1w
bGVtZW50IGNvbnRleHR1YWwgbG9naWMgZm9yIG1wcm90ZWN0IHJlc3RyaWN0aW9ucyAqLworIMKg
IGlmICgocHJvdCAmIFBST1RfRVhFQykgJiYgISh2bWEtPnZtX2ZsYWdzICYgVk1fRVhFQykpIHsK
KyDCoCDCoCDCoCAvKiBBbGxvdyBpZiBjYWxsZXIgaGFzIENBUF9TWVNfQURNSU4gKi8KKyDCoCDC
oCDCoCBpZiAoY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKKyDCoCDCoCDCoCDCoCDCoCByZXR1cm4g
MDsKKyDCoCDCoCDCoAorIMKgIMKgIMKgIC8qIERlbnkgbWFraW5nIG5vbi1leGVjdXRhYmxlIG1l
bW9yeSBleGVjdXRhYmxlICovCisgwqAgwqAgwqAgcmV0dXJuIC1FUEVSTTsKKyDCoCB9CisKKyDC
oCByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBsaWxpdW1fbW1hcF9maWxlKHN0cnVjdCBmaWxl
ICpmaWxlLCB1bnNpZ25lZCBsb25nIHJlcXByb3QsCisgwqAgwqAgwqAgwqAgwqAgwqAgwqB1bnNp
Z25lZCBsb25nIHByb3QsIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCit7CisgwqAgaWYgKCFsaWxpdW1f
bXByb3RlY3RfZW5hYmxlZCkKKyDCoCDCoCDCoCByZXR1cm4gMDsKKworIMKgIC8qIEltcGxlbWVu
dCBjb250ZXh0dWFsIGxvZ2ljIGZvciBtbWFwIHJlc3RyaWN0aW9ucyAqLworIMKgIGlmICgocHJv
dCAmIFBST1RfRVhFQykgJiYgKGZsYWdzICYgTUFQX0FOT05ZTU9VUykpIHsKKyDCoCDCoCDCoCAv
KiBBbGxvdyBpZiBjYWxsZXIgaGFzIENBUF9TWVNfQURNSU4gKi8KKyDCoCDCoCDCoCBpZiAoY2Fw
YWJsZShDQVBfU1lTX0FETUlOKSkKKyDCoCDCoCDCoCDCoCDCoCByZXR1cm4gMDsKKyDCoCDCoCDC
oAorIMKgIMKgIMKgIC8qIERlbnkgZXhlY3V0YWJsZSBhbm9ueW1vdXMgbWFwcGluZ3MgKi8KKyDC
oCDCoCDCoCByZXR1cm4gLUVQRVJNOworIMKgIH0KKworIMKgIHJldHVybiAwOworfQorCitzdGF0
aWMgaW50IGxpbGl1bV90YXNrX2NyZWF0ZShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssCisgwqAg
wqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgdGFza19zdHJ1Y3QgKmNoaWxkKQoreworIMKgIGlm
ICghbGlsaXVtX2Nsb25lX2VuYWJsZWQpCisgwqAgwqAgwqAgcmV0dXJuIDA7CisKKyDCoCAvKiBJ
bXBsZW1lbnQgY29udGV4dHVhbCBsb2dpYyBmb3IgY2xvbmUgcmVzdHJpY3Rpb25zICovCisgwqAg
LyogVGhpcyBpcyBhIHBsYWNlaG9sZGVyIC0gYWN0dWFsIGltcGxlbWVudGF0aW9uIHdvdWxkIGNo
ZWNrCisgwqAgwqAqIHNwZWNpZmljIGNsb25lIGZsYWdzIG9yIG5hbWVzcGFjZSBjcmVhdGlvbgor
IMKgIMKgKi8KKyDCoAorIMKgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxpbGl1bV90YXNr
X2ZpeF9zZXR1aWQoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLAorIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgc3RydWN0IGNyZWQgKm5ldywKKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGNvbnN0IHN0
cnVjdCBjcmVkICpvbGQsCisgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpbnQgZmxhZ3MpCit7Cisg
wqAgaWYgKCFsaWxpdW1fY2xvbmVfZW5hYmxlZCkKKyDCoCDCoCDCoCByZXR1cm4gMDsKKworIMKg
IC8qIEltcGxlbWVudCBjb250ZXh0dWFsIGxvZ2ljIGZvciB1bnNoYXJlIHJlc3RyaWN0aW9ucyAq
LworIMKgIC8qIFRoaXMgaXMgYSBwbGFjZWhvbGRlciAtIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB3
b3VsZCBjaGVjaworIMKgIMKgKiBzcGVjaWZpYyB1bnNoYXJlIGZsYWdzIG9yIG5hbWVzcGFjZSBj
cmVhdGlvbgorIMKgIMKgKi8KKyDCoAorIMKgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGxp
bGl1bV9rZXJuZWxfbW9kdWxlX3JlcXVlc3QoY2hhciAqa21vZF9uYW1lKQoreworIMKgIGlmICgh
bGlsaXVtX21vZHVsZV9lbmFibGVkKQorIMKgIMKgIMKgIHJldHVybiAwOworCisgwqAgLyogSW1w
bGVtZW50IGNvbnRleHR1YWwgbG9naWMgZm9yIG1vZHVsZSBsb2FkaW5nIHJlc3RyaWN0aW9ucyAq
LworIMKgIC8qIEFsbG93IGlmIGNhbGxlciBoYXMgQ0FQX1NZU19NT0RVTEUgKi8KKyDCoCBpZiAo
Y2FwYWJsZShDQVBfU1lTX01PRFVMRSkpCisgwqAgwqAgwqAgcmV0dXJuIDA7CisgwqAKKyDCoCAv
KiBEZW55IG1vZHVsZSBsb2FkaW5nICovCisgwqAgcmV0dXJuIC1FUEVSTTsKK30KKworc3RhdGlj
IGludCBsaWxpdW1fa2VybmVsX21vZHVsZV9mcm9tX2ZpbGUoc3RydWN0IGZpbGUgKmZpbGUpCit7
CisgwqAgaWYgKCFsaWxpdW1fbW9kdWxlX2VuYWJsZWQpCisgwqAgwqAgwqAgcmV0dXJuIDA7CisK
KyDCoCAvKiBJbXBsZW1lbnQgY29udGV4dHVhbCBsb2dpYyBmb3IgbW9kdWxlIGxvYWRpbmcgcmVz
dHJpY3Rpb25zICovCisgwqAgLyogQWxsb3cgaWYgY2FsbGVyIGhhcyBDQVBfU1lTX01PRFVMRSAq
LworIMKgIGlmIChjYXBhYmxlKENBUF9TWVNfTU9EVUxFKSkKKyDCoCDCoCDCoCByZXR1cm4gMDsK
KyDCoAorIMKgIC8qIERlbnkgbW9kdWxlIGxvYWRpbmcgKi8KKyDCoCByZXR1cm4gLUVQRVJNOwor
fQorCitzdGF0aWMgaW50IGxpbGl1bV9maWxlX29wZW4oc3RydWN0IGZpbGUgKmZpbGUpCit7Cisg
wqAgaWYgKCFsaWxpdW1fb3Blbl9lbmFibGVkKQorIMKgIMKgIMKgIHJldHVybiAwOworCisgwqAg
LyogSW1wbGVtZW50IGNvbnRleHR1YWwgbG9naWMgZm9yIGZpbGUgb3BlbiByZXN0cmljdGlvbnMg
Ki8KKyDCoCAvKiBUaGlzIGlzIGEgcGxhY2Vob2xkZXIgLSBhY3R1YWwgaW1wbGVtZW50YXRpb24g
d291bGQgY2hlY2sKKyDCoCDCoCogc3BlY2lmaWMgZmlsZSBwYXRocyBvciBhdHRyaWJ1dGVzCisg
wqAgwqAqLworIMKgCisgwqAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbGlsaXVtX2ZpbGVf
aW9jdGwoc3RydWN0IGZpbGUgKmZpbGUsIHVuc2lnbmVkIGludCBjbWQsCisgwqAgwqAgwqAgwqAg
wqAgwqAgwqAgdW5zaWduZWQgbG9uZyBhcmcpCit7CisgwqAgaWYgKCFsaWxpdW1faW9jdGxfZW5h
YmxlZCkKKyDCoCDCoCDCoCByZXR1cm4gMDsKKworIMKgIC8qIEltcGxlbWVudCBjb250ZXh0dWFs
IGxvZ2ljIGZvciBpb2N0bCByZXN0cmljdGlvbnMgKi8KKyDCoCAvKiBUaGlzIGlzIGEgcGxhY2Vo
b2xkZXIgLSBhY3R1YWwgaW1wbGVtZW50YXRpb24gd291bGQgY2hlY2sKKyDCoCDCoCogc3BlY2lm
aWMgaW9jdGwgY29tbWFuZHMKKyDCoCDCoCovCisgwqAKKyDCoCByZXR1cm4gMDsKK30KKworc3Rh
dGljIGludCBsaWxpdW1fc2JfbW91bnQoY29uc3QgY2hhciAqZGV2X25hbWUsIGNvbnN0IHN0cnVj
dCBwYXRoICpwYXRoLAorIMKgIMKgIMKgIMKgIMKgIMKgIGNvbnN0IGNoYXIgKnR5cGUsIHVuc2ln
bmVkIGxvbmcgZmxhZ3MsIHZvaWQgKmRhdGEpCit7CisgwqAgaWYgKCFsaWxpdW1fb3Blbl9lbmFi
bGVkKQorIMKgIMKgIMKgIHJldHVybiAwOworCisgwqAgLyogSW1wbGVtZW50IGNvbnRleHR1YWwg
bG9naWMgZm9yIG1vdW50IHJlc3RyaWN0aW9ucyAqLworIMKgIC8qIFRoaXMgaXMgYSBwbGFjZWhv
bGRlciAtIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiB3b3VsZCBjaGVjaworIMKgIMKgKiBzcGVjaWZp
YyBtb3VudCBmbGFncyBvciBmaWxlc3lzdGVtIHR5cGVzCisgwqAgwqAqLworIMKgCisgwqAgcmV0
dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbGlsaXVtX2tleGVjX2tlcm5lbF9sb2FkKHN0cnVjdCBr
aW1hZ2UgKmltYWdlKQoreworIMKgIGlmICghbGlsaXVtX2tleGVjX2VuYWJsZWQpCisgwqAgwqAg
wqAgcmV0dXJuIDA7CisKKyDCoCAvKiBJbXBsZW1lbnQgY29udGV4dHVhbCBsb2dpYyBmb3Iga2V4
ZWNfbG9hZCByZXN0cmljdGlvbnMgKi8KKyDCoCAvKiBBbGxvdyBpZiBjYWxsZXIgaGFzIENBUF9T
WVNfQk9PVCAqLworIMKgIGlmIChjYXBhYmxlKENBUF9TWVNfQk9PVCkpCisgwqAgwqAgwqAgcmV0
dXJuIDA7CisgwqAKKyDCoCAvKiBEZW55IGtleGVjX2xvYWQgKi8KKyDCoCByZXR1cm4gLUVQRVJN
OworfQorCisvKiBMU00gSG9vayBEZWZpbml0aW9ucyAqLworc3RhdGljIHN0cnVjdCBzZWN1cml0
eV9ob29rX2xpc3QgbGlsaXVtX2hvb2tzW10gPSB7CisgwqAgTFNNX0hPT0tfSU5JVChwdHJhY2Vf
YWNjZXNzX2NoZWNrLCBsaWxpdW1fcHRyYWNlX2FjY2Vzc19jaGVjayksCisgwqAgTFNNX0hPT0tf
SU5JVChmaWxlX21wcm90ZWN0LCBsaWxpdW1fZmlsZV9tcHJvdGVjdCksCisgwqAgTFNNX0hPT0tf
SU5JVChtbWFwX2ZpbGUsIGxpbGl1bV9tbWFwX2ZpbGUpLAorIMKgIExTTV9IT09LX0lOSVQodGFz
a19jcmVhdGUsIGxpbGl1bV90YXNrX2NyZWF0ZSksCisgwqAgTFNNX0hPT0tfSU5JVCh0YXNrX2Zp
eF9zZXR1aWQsIGxpbGl1bV90YXNrX2ZpeF9zZXR1aWQpLAorIMKgIExTTV9IT09LX0lOSVQoa2Vy
bmVsX21vZHVsZV9yZXF1ZXN0LCBsaWxpdW1fa2VybmVsX21vZHVsZV9yZXF1ZXN0KSwKKyDCoCBM
U01fSE9PS19JTklUKGtlcm5lbF9tb2R1bGVfZnJvbV9maWxlLCBsaWxpdW1fa2VybmVsX21vZHVs
ZV9mcm9tX2ZpbGUpLAorIMKgIExTTV9IT09LX0lOSVQoZmlsZV9vcGVuLCBsaWxpdW1fZmlsZV9v
cGVuKSwKKyDCoCBMU01fSE9PS19JTklUKGZpbGVfaW9jdGwsIGxpbGl1bV9maWxlX2lvY3RsKSwK
KyDCoCBMU01fSE9PS19JTklUKHNiX21vdW50LCBsaWxpdW1fc2JfbW91bnQpLAorIMKgIExTTV9I
T09LX0lOSVQoa2V4ZWNfa2VybmVsX2xvYWQsIGxpbGl1bV9rZXhlY19rZXJuZWxfbG9hZCksCit9
OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGxzbV9pZCBsaWxpdW1fbHNtaWQgPSB7CisgwqAgLm5h
bWUgPSAibGlsaXVtIiwKKyDCoCAuaWQgPSBMU01fSURfTUFKT1JfTUFYLAorfTsKKworc3RhdGlj
IHZvaWQgbGlsaXVtX2V4aXQodm9pZCkKK3sKKyDCoCBpZiAobGlsaXVtX2tvYmopIHsKKyDCoCDC
oCDCoCBzeXNmc19yZW1vdmVfZ3JvdXAobGlsaXVtX2tvYmosICZsaWxpdW1fYXR0cl9ncm91cCk7
CisgwqAgwqAgwqAga29iamVjdF9wdXQobGlsaXVtX2tvYmopOworIMKgIH0KK30KKworc3RhdGlj
IGludCBfX2luaXQgbGlsaXVtX2luaXQodm9pZCkKK3sKKyDCoCBpbnQgcmV0OworCisgwqAgLyog
Q3JlYXRlIHN5c2ZzIGludGVyZmFjZSAqLworIMKgIGxpbGl1bV9rb2JqID0ga29iamVjdF9jcmVh
dGVfYW5kX2FkZCgibGlsaXVtIiwga2VybmVsX2tvYmopOworIMKgIGlmICghbGlsaXVtX2tvYmop
CisgwqAgwqAgwqAgcmV0dXJuIC1FTk9NRU07CisKKyDCoCByZXQgPSBzeXNmc19jcmVhdGVfZ3Jv
dXAobGlsaXVtX2tvYmosICZsaWxpdW1fYXR0cl9ncm91cCk7CisgwqAgaWYgKHJldCkgeworIMKg
IMKgIMKgIGtvYmplY3RfcHV0KGxpbGl1bV9rb2JqKTsKKyDCoCDCoCDCoCByZXR1cm4gcmV0Owor
IMKgIH0KKworIMKgIC8qIFJlZ2lzdGVyIExTTSBob29rcyAqLworIMKgIHNlY3VyaXR5X2FkZF9o
b29rcyhsaWxpdW1faG9va3MsIEFSUkFZX1NJWkUobGlsaXVtX2hvb2tzKSwgJmxpbGl1bV9sc21p
ZCk7CisKKyDCoCBwcl9pbmZvKCJMaWxpdW06IExpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIg
TW9kdWxlIGluaXRpYWxpemVkXG4iKTsKKyDCoCByZXR1cm4gMDsKK30KKworc2VjdXJpdHlfaW5p
dGNhbGwobGlsaXVtX2luaXQpOworbW9kdWxlX2V4aXQobGlsaXVtX2V4aXQpOworCitNT0RVTEVf
REVTQ1JJUFRJT04oIkxpbGl1bSAoTGludXggSW50ZWdyaXR5IExvY2stSW4gVXNlciBNb2R1bGUp
Iik7CitNT0RVTEVfQVVUSE9SKCJFbnpvIEZ1a2UiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIi
KTsKKwpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvbGlsaXVtL2xpbGl1bV9ydXN0LnJzIGIvc2VjdXJp
dHkvbGlsaXVtL2xpbGl1bV9ydXN0LnJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjc5MDFkOWQKLS0tIC9kZXYvbnVsbAorKysgYi9zZWN1cml0eS9saWxpdW0vbGlsaXVtX3J1
c3QucnMKQEAgLTAsMCArMSw4MyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y
LjAtb25seSAqLworLyoKKyAqIExpbGl1bSAoTGludXggSW50ZWdyaXR5IExvY2stSW4gVXNlciBN
b2R1bGUpCisgKiBDb3B5cmlnaHQgKEMpIDIwMjUgRW56byBGdWtlCisgKi8KKworCit1c2Uga2Vy
bmVsOjpwcmVsdWRlOjoqOwordXNlIGtlcm5lbDo6c2VjdXJpdHk7Cit1c2Uga2VybmVsOjpmaWxl
OjpGaWxlOwordXNlIGtlcm5lbDo6dGFzazo6VGFzazsKK3VzZSBrZXJuZWw6OmNyZWQ6OkNyZWRl
bnRpYWw7CisKK2NvbnN0IExJTElVTV9GRUFUVVJFX0RJU0FCTEVEOiBpMzIgPSAwOworY29uc3Qg
TElMSVVNX0ZFQVRVUkVfRU5BQkxFRDogaTMyID0gMTsKKworZXh0ZXJuICJDIiB7CisgwqAgwqBz
dGF0aWMgbGlsaXVtX3B0cmFjZV9lbmFibGVkOiBpMzI7CisgwqAgwqBzdGF0aWMgbGlsaXVtX21w
cm90ZWN0X2VuYWJsZWQ6IGkzMjsKKyDCoCDCoHN0YXRpYyBsaWxpdW1fa2V4ZWNfZW5hYmxlZDog
aTMyOworIMKgIMKgc3RhdGljIGxpbGl1bV9jbG9uZV9lbmFibGVkOiBpMzI7CisgwqAgwqBzdGF0
aWMgbGlsaXVtX21vZHVsZV9lbmFibGVkOiBpMzI7CisgwqAgwqBzdGF0aWMgbGlsaXVtX29wZW5f
ZW5hYmxlZDogaTMyOworIMKgIMKgc3RhdGljIGxpbGl1bV9pb2N0bF9lbmFibGVkOiBpMzI7Cit9
CisKK3B1YiBzdHJ1Y3QgTGlsaXVtT3BzOworCitpbXBsIHNlY3VyaXR5OjpTZWN1cml0eUhvb2tz
IGZvciBMaWxpdW1PcHMgeworIMKgIMKgZm4gcHRyYWNlX2FjY2Vzc19jaGVjaygKKyDCoCDCoCDC
oCDCoCZzZWxmLAorIMKgIMKgIMKgIMKgY2hpbGQ6ICZUYXNrLAorIMKgIMKgIMKgIMKgbW9kZTog
dTMyLAorIMKgIMKgKSAtPiBSZXN1bHQ8c2VjdXJpdHk6OlNlY3VyaXR5SG9va1Jlc3VsdD4gewor
IMKgIMKgIMKgIMKgaWYgdW5zYWZlIHsgbGlsaXVtX3B0cmFjZV9lbmFibGVkIH0gPT0gTElMSVVN
X0ZFQVRVUkVfRElTQUJMRUQgeworIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIE9rKHNlY3VyaXR5
OjpTZWN1cml0eUhvb2tSZXN1bHQ6OkRlZmF1bHQpOworIMKgIMKgIMKgIMKgfQorCisgwqAgwqAg
wqAgwqBpZiBtb2RlICYgc2VjdXJpdHk6OlBUUkFDRV9NT0RFX0FUVEFDSCAhPSAwIHsKKyDCoCDC
oCDCoCDCoCDCoCDCoGlmIGtlcm5lbDo6Y3VycmVudF9jcmVkKCkuaGFzX2NhcGFiaWxpdHkoa2Vy
bmVsOjpDQVBfU1lTX1BUUkFDRSkgeworIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgcmV0dXJuIE9r
KHNlY3VyaXR5OjpTZWN1cml0eUhvb2tSZXN1bHQ6OkRlZmF1bHQpOworIMKgIMKgIMKgIMKgIMKg
IMKgfQorIMKgIMKgIMKgIMKgIMKgIMKgCisgwqAgwqAgwqAgwqAgwqAgwqByZXR1cm4gT2soc2Vj
dXJpdHk6OlNlY3VyaXR5SG9va1Jlc3VsdDo6UmVqZWN0KTsKKyDCoCDCoCDCoCDCoH0KKworIMKg
IMKgIMKgIMKgT2soc2VjdXJpdHk6OlNlY3VyaXR5SG9va1Jlc3VsdDo6RGVmYXVsdCkKKyDCoCDC
oH0KKworIMKgIMKgZm4gZmlsZV9tcHJvdGVjdCgKKyDCoCDCoCDCoCDCoCZzZWxmLAorIMKgIMKg
IMKgIMKgdm1hOiAma2VybmVsOjptbTo6VmlydHVhbE1lbW9yeUFyZWEsCisgwqAgwqAgwqAgwqBy
ZXFwcm90OiB1NjQsCisgwqAgwqAgwqAgwqBwcm90OiB1NjQsCisgwqAgwqApIC0+IFJlc3VsdDxz
ZWN1cml0eTo6U2VjdXJpdHlIb29rUmVzdWx0PiB7CisgwqAgwqAgwqAgwqBpZiB1bnNhZmUgeyBs
aWxpdW1fbXByb3RlY3RfZW5hYmxlZCB9ID09IExJTElVTV9GRUFUVVJFX0RJU0FCTEVEIHsKKyDC
oCDCoCDCoCDCoCDCoCDCoHJldHVybiBPayhzZWN1cml0eTo6U2VjdXJpdHlIb29rUmVzdWx0OjpE
ZWZhdWx0KTsKKyDCoCDCoCDCoCDCoH0KKworIMKgIMKgIMKgIMKgaWYgKHByb3QgJiBrZXJuZWw6
Om1tOjpQUk9UX0VYRUMpICE9IDAgJiYgKHZtYS5mbGFncygpICYga2VybmVsOjptbTo6Vk1fRVhF
QykgPT0gMCB7CisgwqAgwqAgwqAgwqAgwqAgwqBpZiBrZXJuZWw6OmN1cnJlbnRfY3JlZCgpLmhh
c19jYXBhYmlsaXR5KGtlcm5lbDo6Q0FQX1NZU19BRE1JTikgeworIMKgIMKgIMKgIMKgIMKgIMKg
IMKgIMKgcmV0dXJuIE9rKHNlY3VyaXR5OjpTZWN1cml0eUhvb2tSZXN1bHQ6OkRlZmF1bHQpOwor
IMKgIMKgIMKgIMKgIMKgIMKgfQorIMKgIMKgIMKgIMKgIMKgIMKgCisgwqAgwqAgwqAgwqAgwqAg
wqByZXR1cm4gT2soc2VjdXJpdHk6OlNlY3VyaXR5SG9va1Jlc3VsdDo6UmVqZWN0KTsKKyDCoCDC
oCDCoCDCoH0KKworIMKgIMKgIMKgIMKgT2soc2VjdXJpdHk6OlNlY3VyaXR5SG9va1Jlc3VsdDo6
RGVmYXVsdCkKKyDCoCDCoH0KKworIMKgIMKgZm4gZmlsZV9vcGVuKAorIMKgIMKgIMKgIMKgJnNl
bGYsCisgwqAgwqAgwqAgwqBmaWxlOiAmRmlsZSwKKyDCoCDCoCkgLT4gUmVzdWx0PHNlY3VyaXR5
OjpTZWN1cml0eUhvb2tSZXN1bHQ+IHsKKyDCoCDCoCDCoCDCoGlmIHVuc2FmZSB7IGxpbGl1bV9v
cGVuX2VuYWJsZWQgfSA9PSBMSUxJVU1fRkVBVFVSRV9ESVNBQkxFRCB7CisgwqAgwqAgwqAgwqAg
wqAgwqByZXR1cm4gT2soc2VjdXJpdHk6OlNlY3VyaXR5SG9va1Jlc3VsdDo6RGVmYXVsdCk7Cisg
wqAgwqAgwqAgwqB9CisKKworIMKgIMKgIMKgIMKgT2soc2VjdXJpdHk6OlNlY3VyaXR5SG9va1Jl
c3VsdDo6RGVmYXVsdCkKKyDCoCDCoH0KK30KKwotLQoyLjQ5LjAK


Return-Path: <linux-kernel+bounces-669274-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8C45741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:06:12 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 044D71899731
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:06:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4EE538BE5;
Sun, 1 Jun 2025 01:06:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="s/vIDi2c"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 8341A2DCBEC
for <linux-kernel@xxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:06:05 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748739965; cv=none; b=oUjXLzlkmSEJVoscfX/x07Klc+3/+uQQAf3IrqlS7RA9vD4V4yx+uYWkMMASp2Wxi+4xxutGyD68txI2MjUxL+xQy57m1nQgeP4JCjuzAUo9FCVNEpq0lmzxRtI0yWBfwQ4AEFlDHbxCxRNYDXCgPmmKxRWuPhX+gaSAC3R1VuI=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748739965; c=relaxed/simple;
bh=OCFFPpwfMjsBcthpFZsFQ8vXfWAgsY+sDr0ECvut/QA=;
h=Date:From:To:CC:Subject:In-Reply-To:References:Message-ID:
MIME-Version:Content-Type; b=Ava3qiTPzDMFg+2hlVKtUlH5GUBv3jzCGIAvyxt89vvUr4mKCzXwZ1EutYLJgITBRENlluVNCK+NXZhYuvVUuWkeU8kskr1xQHyzVaLnIuvZIPWw6WQGCsOmWMZBj5nbcRfje2u+vooL+YSpYPNOCHWSan5E9QQTYKHZRWUkw14=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=s/vIDi2c; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id CB4C1C4CEE3;
Sun, 1 Jun 2025 01:06:04 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748739964;
bh=OCFFPpwfMjsBcthpFZsFQ8vXfWAgsY+sDr0ECvut/QA=;
h=Date:From:To:CC:Subject:In-Reply-To:References:From;
b=s/vIDi2cyiOxSlcrVgPO3fZMGd3WkV9TxH5Kt0yP/5vB15czNp8bWicKDzwgS4Yoz
ZmcidXh6/mkwPQzvq51rHsMMYFrel2YxiKQH4GMH2HsJSSe0MiYdRHLIEiFtN7ZC7Y
YEqax3uVaTVtfyak3GAImZGpyQ3ZRqX/nBypNkLUvkW1+0+rIvAjB13ra4xUMiIVXS
Xcf+QZMT9adIkH/OUOSQQZNegxSqCbbpuxOxjZZvc7eMBeVt6k50cYfgny5PtyJbCK
HKlNmqA8DMiocW4T1D+eCK7Q1QhGUP5gc4a3TRyxfqhWdKDEfcromtcOOjtZvNfV3j
XXktV5ej5m87A==
Date: Sat, 31 May 2025 18:06:00 -0700
From: Kees Cook <kees@xxxxxxxxxx>
To: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>,
Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx>
CC: linux-kernel@xxxxxxxxxxxxxxx, Eric Biggers <ebiggers@xxxxxxxxxx>,
Ingo Saitz <ingo@xxxxxxxxxxxxxxx>, kernel test robot <oliver.sang@xxxxxxxxx>,
Marco Elver <elver@xxxxxxxxxx>, Nathan Chancellor <nathan@xxxxxxxxxx>,
Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
User-Agent: K-9 Mail for Android
In-Reply-To: <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
References: <202505310759.3A40AD051@keescook> <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
Message-ID: <156567EE-E5BB-43C4-B5A6-439D83FF387D@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain;
charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu



On May 31, 2025 11:20:20 AM PDT, Linus Torvalds <torvalds@linux-foundation=
=2Eorg> wrote:
>On Sat, 31 May 2025 at 08:00, Kees Cook <kees@kernel=2Eorg> wrote:
>>
>> Please pull this small handful of hardening fixes for v6=2E16-rc1=2E
>
>WTF, Kees?
>
>You seem to have actively maliciously modified your tree completely=2E
>
>There are completely crazy commits in there that are entirely fake=2E
>
>You have this: f8b59a0f90a2 Merge tag 'driver-core-6=2E16-rc1' of
>git://git=2Ekernel=2Eorg/pub/scm/linux/kernel/git/driver-core/driver-core
>
>which *claims* to be from me, and committed by me, but is very much
>not=2E It's some garbage you have entirely made up=2E
>
>Yes, there is a real commit like that, but it's has the SHA1 ID of
>9d230d500b0e=2E
>
>And this isn't some kind of innocent rebasing mistake, because this
>actively lies about who committed it=2E
>
>This is completely unacceptable=2E
>
>I will now refuse to pull *anything* from you until you explain what
>the f&*^ you have been up to, because this looks like you have been
>doing actively bad things=2E

I have no idea=2E I had noticed a bunch of my trees were refusing to have =
sane merges=2E I kept trying to rebase them to sort it out, but it seems it=
has not worked=2E This is all on top of an SSD that was getting mad at me =
and I had to replace it, but it threw errors during the copy=2E I thought e=
verything got recovered in my various worktrees, but clearly something is s=
till wrong=2E

>You need to nuke that tree, and come up with a good explanation for
>this kind of shit=2E

I'll throw it all out and rebuild from patches=2E

>I'm cc'ing Konstantin, because I really think these kinds of games are
>COMPLETELY UNACCEPTABLE, and this is not the kind of behavior we can
>have on kernel=2Eorg accounts=2E
>
>Konstantin - please disable Kees' account immediately until this is
>cleared up=2E Because this looks *malicious*=2E

Sorry! AFAICT it's all just from broken trees I tried to reconstruct (badl=
y it seems)=2E

Since I can't push to kernel=2Eorg, what shall I do for resending this PR =
after I've re-re-constructed everything?

-Kees


--=20
Kees Cook


Return-Path: <linux-kernel+bounces-669275-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 4358741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:08:00 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 7D08E3B5B16
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:07:38 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6D652AD24;
Sun, 1 Jun 2025 01:07:53 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="YVrYrSw7"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11olkn2097.outbound.protection.outlook.com [40.92.19.97])
(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 13A4E8BE5;
Sun, 1 Jun 2025 01:07:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.19.97
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748740071; cv=fail; b=FzN+RORP3kSjTelAgHo0M6UHB4hdD1kSbfihrAuRJJ03pHyyguELuExY7ppIrcUa7O+ihuvar2neKGkH8T7wlAi92Fk9OATS+iiq42lkIT2P5EOu7muAvSYXpynAIxqf28oHnnfyl28ZrEnl90QlHe6YaNusI2a05pJj+1QmeJA=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748740071; c=relaxed/simple;
bh=fOIyePjPGv5AOFHLmLQt+8BaR2RzbNRs3qSrKxHLzpE=;
h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=JlXniXz4NqZNMMFe2Y0hDBlv/qZd7+LYSfDSXwiOuI85PKX9TR+BuC1+piVZ0sY3mspps0Q5ajoWatbjFgzR8Uro1RaeUGc44cVDZziPzoi9G62Rv6hNuKAK0WRljne6Vbs24z9S7JTZ6zg/z/TTLe4rAiaP73zwFjiqdmlwc4c=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=YVrYrSw7; arc=fail smtp.client-ip=40.92.19.97
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=iKZ7oe83s8oCLBAteSDCApjXroOsS9csmvylcKGn9sDQZXp21MmkRpboZ4tsNJW2LMLe9Eyn5qNoptsSPEg0VKwTjmpv7svcGn6fJslZAXd9dthb9yz55PBCOsVouDqq8CRFXOm8gSEaL7syQnnolUyqgtByZH5y9KvyCnWJyA/L8pIRvsDQdWeVTHfRnsXGCFyKAwlFTH8lE04NASnjHwQLpxjJa8NeiQJAT65+pCCYI3pJ7YMgXjtr6eILq45Bnr6yJKPQySHE0xtsHL+Bwtmv4UzOnsbVQQo1kT5lSNOb39xqnghD/Btoj8MBng9gFUIg0DyhVcvSiBO5+KF1XQ==
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=fOIyePjPGv5AOFHLmLQt+8BaR2RzbNRs3qSrKxHLzpE=;
b=e/1dnkF0/Kp5hysLF17qgnh/iFQN2UHk60HhUWGzQV9S1uEmwLVW/BIo32yBYy4xtBLgGqouuD3U9iChhsLabOXEQQOkVRJjTobg3VqTCeA08qYcCvBGMU8CEL5yWhSc6S4EDyydeL50fgNZTKbz6HNDITKd8C061YUf3TV8w/H9sBYGL/R1XaUqsL98iTuOQNONXJKINEEAYjbSBPX5KFNVVWCuLXoe/JzzYjB0kHcm4IBMIbeTzsMGt3VI0zXFJXFFTUNhZwe4SAXtMiJYXKVHO94slCKIDm7cWdBUApsi5subBaWKnBRvCb5D1sY+D1h7iezYG+uFOHuVTxNY/Q==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=fOIyePjPGv5AOFHLmLQt+8BaR2RzbNRs3qSrKxHLzpE=;
b=YVrYrSw7GCgzaWZQiI/pVgNNYJPiATGpqqL4CXvLO+efuMTrfth31VjIRO5pmb+GggGhE9256RLsizCKUTa4h8OlGLKFTcXhjxRN3wc6CcRsH2x5II2/CZKhttg0CXs8Y30A0ZtkbSRxxZz9Nz7w7k+00GN0gZ9YX4nuFtu2tWGUNkm3KZSViaO1UuqkKA9y3cuunX2qAbwEKL9NPfeS4CleqfS9Xdf99df4KPK2XFs83ToMJV4QlCANKkQw58/l/qBLgzeWDXsKyqFeFnCCoyGJJGfjE9rCmB0DT0VcBDAVPeXt/86KBeMbM6T4HDFKS4iSjo/ouwW/1VL/JVre6w==
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:34::10)
by SCZP152MB5822.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:60::7) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sun, 1 Jun
2025 01:07:44 +0000
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1]) by SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1%6]) with mapi id 15.20.8769.035; Sun, 1 Jun 2025
01:07:44 +0000
From: =?utf-8?B?4oSw8J2Tg/Cdk4/ihLQg4oSx8J2TivCdk4DihK8=?=
<milesonerd@xxxxxxxxxxx>
To: "serge@xxxxxxxxxx" <serge@xxxxxxxxxx>
CC: "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>,
"linux-security-module@xxxxxxxxxxxxxxx"
<linux-security-module@xxxxxxxxxxxxxxx>, "linux-doc@xxxxxxxxxxxxxxx"
<linux-doc@xxxxxxxxxxxxxxx>
Subject: PATCH 2/3] security: add Lilium - Linux Integrity Lock-In User Module
- Documentation
Thread-Topic: PATCH 2/3] security: add Lilium - Linux Integrity Lock-In User
Module - Documentation
Thread-Index: AQHb0pFiEYugqaMu8ESGqiRtjR2WxA==
Date: Sun, 1 Jun 2025 01:07:44 +0000
Message-ID:
<SCYP152MB62612944AD5E282EE26871DDB063A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Accept-Language: en-GB, pt-BR, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SCYP152MB6261:EE_|SCZP152MB5822:EE_
x-ms-office365-filtering-correlation-id: ca33d2f8-adc4-4e6f-57ec-08dda0a8b6ef
x-ms-exchange-slblob-mailprops:
suo+AMQROd7FkUqdM5uf2sMAhMCO95DUDxwDyj6h9wPdSM5jtH52lmKBC1GJHYQMHYHcEIm3661JS5J47/86QbjEtehQzH7pheBLmnYvfrP54ho1QcOlRMVgn4Ar810CaEKIEuYBWyk8hmsvbg1GQEdj4cZaznk8DKDLfP3M4tVGkLirv3n/L9C/pCpEzp7OEwI8pH7PJ8Mg1VF7hgayhIIUXLSM2JfmXarjM4yv41E0uoddx8jutb/56INL7SMOgt3CIabQcfamKlUP/Ske655zMkpX/mwYtCxbgF9SQEYJEiI4kYNbZAueMIvkTepfrW0HWhp1hAfs07M3urSh05Qj5PWps4/LBawAEcMSRbdFl7cC7eYmww7c5NRY5oMd+H9uURKUkarK9KaKaq6xAaKoGFGeolvO/1EPm54nwV+fSudvBjRTjaYZS/XGiKWZSRQedoZOrp4xd2Soi//rkpB47PvFrO0+z5aCnWknHIQ6d3b4mPOWvIe5llE8hdv1ApkCjNcvx1F4ovCxBHojSn5cb1PH3TepXVeW7dgdEzoxguNQE8tv8PoBGyRqO/+cVViFsxeCnma3kBcgVhxizqDw0O+oEnYarK4NxWafSBD3NpA9RJPyDomtri9vRr1nOeTfaoroD88a2oprvav1X44AEKjvavy+ZPX5YpU1vkqz+rtYgV0VZoGMet4azLbeFRoXdmRMXbUn/tT7HjByMrmOumCQJ6FbKB9jhnvjUHuQ4pRVS5GAjBbHIKXAM7jP8DBWpUvCJKXMIv9JncMPZt1Xjdyr0D1US1DIP1GOygPvufq7Q8RgM7R5AQWfON4wZErze9YsaLik2xGtabcw4Q==
x-microsoft-antispam:
BCL:0;ARA:14566002|15080799009|461199028|21061999006|7092599006|8060799009|19110799006|12121999007|8062599006|15030799003|56899033|102099032|1602099012|440099028|4302099013|3412199025|10035399007|30101999003;
x-microsoft-antispam-message-info:
=?utf-8?B?aHd0d0F5ekw0cENxamtZZTZQbGpPUXhBdmt2U0RjVUxKNi9LRDU1dVhERTht?=
=?utf-8?B?cUJMUGZjL1E0R05HTTFNRDZLRUhIR3pJeXdaaXZUZmpORmliYzNsLzJNK0xK?=
=?utf-8?B?bmpZMkMrQlg3VXVqc0YxQXZHLzBVaWVZSGdINEFvUHJ4M2EzcjQ5ZHdxemFj?=
=?utf-8?B?NHJYYmJLUUFpZzEwbmRYVDh6dURpaGZTL0VhanhTdjNhQytOY0xsMjhWd1Nn?=
=?utf-8?B?VjUzU1JtMEM1S1U4Rm9jK3cvNXlCbVl2Vlk1VGpmL0NhRDlaUHZKeW9INGo0?=
=?utf-8?B?QWF5MkFlYkxlaVZpZjYrY1kxMEFmMU4xTTdJbzlucWJDNU9MZkhBTjY2YXpH?=
=?utf-8?B?d0U1bmtFZjhKYTlEd2xuYmVqbTcrREJkUHVVemFYZVlHaVlOSXRZajZ6WkxW?=
=?utf-8?B?b1dNbGgyTWd1dVRLdDI1L3ltN0RSbktQK0l0TzN3Q1ZpeEg4eHhzNG9Ldito?=
=?utf-8?B?WXVUN2lFSWdxeEg0REkyN3dOSTdQcmhNNFFVTzQvWVZMT1NGbkx5T0kycThM?=
=?utf-8?B?WDd6bTE4NDRDbi8wM1ZWdzBqMDh0QmZ4Wkt2SFpodHNWZlpoUjBhcXA5eUll?=
=?utf-8?B?WXhTcVdlK3BPaTFZRk5EemsrSk1NbGNESVg3eE9SN05PV3l5eHBmS3RxMHgy?=
=?utf-8?B?ZDZER0tYdkZ5WnlUNFhNSWhiY0ZwVU1iR091eFR4VlR5eWxvRkhMQmFSWDZM?=
=?utf-8?B?MmRRQmhaRytvc05WWXdwVnBGOW12ejRURWdCLzl1YXZvbkR5OTJRWEVlWTU5?=
=?utf-8?B?NFF3VHZ1V2w2SU1aUnljSVllVkdwcDNEdjFEbXZkVk1WK0c0MHp0ZGJUaEpi?=
=?utf-8?B?V2dkVGZnNThPL21hT0lSdVZ4eGRqb2RaMm1rNlpqbjluMGNrbnluUDJhdkdS?=
=?utf-8?B?VitpMDBCMS84REd1QjUzLzU4WjJ5ZVNxa1N6akF1NTkyTlFhc0JhaFFSWkxi?=
=?utf-8?B?eng3ejM2UXZSdFhhTnEyWFBEdkVSTWErSnh4dEZodWJuajJOREpoek4rN1h4?=
=?utf-8?B?YWkxdlZKZG1XZmxubjJ5c1FzclBRNE8zOFpwSXJKQitMRkdyUDFTU2dSWFBV?=
=?utf-8?B?S0NzeUNYT2x0alB3UXl3dzk1TjREOWJ6ZlVLNUpBRnovQmxSZ0NjT1VNSWJI?=
=?utf-8?B?V1dCK3YzeHFkUm52YmJjZ2hrblZ3aXNrTng5dmhLZkJEU3Nxd1gwV0VoNG1j?=
=?utf-8?B?NHJZRk9XUEYwMkd5MUprVm5GYWNaYTVDY0U0SHZQTmhGNjB4a0FBVVBFWGlO?=
=?utf-8?B?dVU4OFgrV0sxMFNkSEE5TXltS3ROdEZWa2I1SVUycDQ3QVkreEU1bUdOQUVy?=
=?utf-8?B?aUFpQWhDSk84aHRRZm4xVVNkeHVPcFRzQ3YrOVpidkgwUVFIdk1ubE1UY3Ix?=
=?utf-8?B?SnFsSzZpWE1WS1dMa0prWnlUWnpPOXYzN2ZnQVd4ak9oczFWNThYdkl0TWdK?=
=?utf-8?B?M21zVnRkcGFhZG85VnBjRTNjVlEvb04ydmh5OE96V3M2Wml3Y1g1c28vdFJ1?=
=?utf-8?B?bCt6U1kxUXlGd2hsZnlwUW0xbmpudnFKV3lKZk0zUDk3ME5Iejc5dWQyVFpN?=
=?utf-8?B?ZW1RajVPN0tKNXBLMUtDaGpBak54OERhUDFhV3dMNzZqSDVOUjkzR3pkOGli?=
=?utf-8?B?SDR1aHZYL2p5dHA0R2VxNjZlR1ZRUHZDY29sbDZTbUh0ejBrK1NLc2RjSWtj?=
=?utf-8?B?ZzJLM0lnMjFycURIcGdtOGpWaEhRZEtyc2xSQWhVUGV4TXZIR3I1NjBBZjNM?=
=?utf-8?B?azRKbm55RVdPUFNKRG1NaFdRdWZXR3g1NDV5dnNwMkRCUWNPbGRzOEpPNjlv?=
=?utf-8?B?Q2poZ1NOdis4dFFQN2tKZys0dHJMb1Q1Z3ExRW9vdEQ4TC8zcUpTVnNHYTFL?=
=?utf-8?B?Q2FieEpmUFQwM1ZjUFp1TENSSkw2UlN0a2tzbDhWdytvbWU4SnIwVUdsM3hJ?=
=?utf-8?Q?PSb57uAe6e0=3D?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?utf-8?B?QlBtNUZFcWkrRHlPdkJUR3lQRHJKTWZDZGxFYTRuOUtUbUNTb3dPTUZMNHAx?=
=?utf-8?B?TVRPeXhSQjFVM01PbVlIdi9CcjBlbk0zaElXbXd0Y29KdnhhT0ExQ1JhMWw0?=
=?utf-8?B?L2VwV1ZuSGJVb2Vpc0lSSnJrU1dpVmhzeXo4YWhiNkdtZUg1TWtqN0xoSWNs?=
=?utf-8?B?S3JJWTZsZmFUSTFXTTBZcjNhUFBRQXJ5ZTBPSENYYS9JbkFlLzRsU3FTa2Zo?=
=?utf-8?B?UzRhNXVVQzA1dlRLRVE1bmV3eTZwMCtzOWMvaWdwcXNzMm0xRCtwOFIvY1dv?=
=?utf-8?B?TEhFWmhSNTBsMWl5ZW9VQTF0b1RqdEk5NW8raUdsbWQ4aUZpU2l2cU1NVmJR?=
=?utf-8?B?NG4xbFFmcDRBTERvcWV3cVFIQm9iOTFmTjlEaTYwbHgrdDZicnFNSHNOb2x2?=
=?utf-8?B?QjMxdGc4L0k5L3ZXTzJpc09mTXZDWU5Bak9RdnloTWRyQnJRRWZOenIyVzdZ?=
=?utf-8?B?ckorZXg2OVZpSXZGQnp3ZmhIaXdBWTFmY2lGaUJMMDVsOTdJSks0ZHF6cjlh?=
=?utf-8?B?SFd6Nnk0UzM5YkF1Z0RGdnlBUlYvMFJxaHR5V2tmTHpXd2hCbXNxdnI5ckFS?=
=?utf-8?B?dTJ5aGM2cmlXN1k0NDl2d3AxbU1VZnZSV1A5TmlPK2d2VmtqUGd2NjVIZm01?=
=?utf-8?B?RVMyc09GUFZxVk1hb2xjVHRZTEt4TlRWaGtGeThrc0hyMWFzVXZMVHZBb0Vk?=
=?utf-8?B?YnV0QVFWb1ppZUxmdzYyQllaRWVjY2Jqdm5vdXVETVhNeUVxSUZDYWVqZGF0?=
=?utf-8?B?THF1VGVXRGVQNDVQWWIwRjNBN1pKNjgrWEJpRTdGNUY3Nk9zZnRPci82SzdS?=
=?utf-8?B?VnE2bWFYTXFUczBJV0MzTXVJTkx6dmV5NWZ1VVFtVFhJSW51SlFrMklwZVUv?=
=?utf-8?B?SGFBOFRIWWlWWUw2S3FDV3M1dS9Va3JDL0Foam9pN3pzTlVFU2VHRnpSQWl0?=
=?utf-8?B?RTEveWpQV0NzOG4zbW9YQmZldkZGamkzMEgvVG1xdEErMU9KNWdTQ2dIdGpu?=
=?utf-8?B?aFZ6SkgxZ3RSZVdxdndFRmxVR1VOYVkwTTFDNG5BYjhvR1R3QldCb1U3MHJW?=
=?utf-8?B?QnVKb2EzcHBwRlppYnJSckM1REFLM0lpcSswbTVuTVlzdzNtcjNPZjBOTXRx?=
=?utf-8?B?MWZNZ1VVWFJwcWRKaUc4YmErWmtHSXlTc0Fib1M3Z0xBOHpFSzNVVlhYOGdp?=
=?utf-8?B?Vi8zV21GVEJ1a042WjE0OE5IOHdCM3hzNW1ZZWV4dmgveGRmUEJCcjRUYzIv?=
=?utf-8?B?ekd1d3AzalIrd1RWcjFVMnVZUWExdDdZVjU1c1VpL2tySWUwdHVRS1BKb29J?=
=?utf-8?B?b242OGZXL0ROMmRzc2lGd0h5Mmh2bVNoOVU5dFNZM1d5ZHU2b2lrRTVyeVV2?=
=?utf-8?B?VXVKaEczbEtUeEJjYWRqTExtdGFGS3VpTVhaUjlFK1d2aktqbEdEWWFBU3hX?=
=?utf-8?B?c1NHbFBWK3dPNStBVUFPMDFnMmJDTWRyekhGVGN5dHMvQnZzTlJpVmoyQ2o1?=
=?utf-8?B?YVJ1SzNTUVpyaEh2TkZGbGN4MXVjZ3BicHB2NXpXMmlEMDg3YmpheUNkclBX?=
=?utf-8?B?SmR4OHJJYW51WG5NYkdhVlpkdHZJL3BNdXh6ajFOZ3poTFJlS3pvZVQxVHdk?=
=?utf-8?B?YTJ0YlZkdDRSSWJsUEhOVXhCOUNaNHpKZmpwSW5uWnpYSGUyTzNHZ3kxTFgr?=
=?utf-8?Q?bAQ40cGE32z9+7L4KuXt?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: ca33d2f8-adc4-4e6f-57ec-08dda0a8b6ef
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2025 01:07:44.0186
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SCZP152MB5822
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

RnJvbSAyM2QzMjNmNzkzYjg4OGJiMmFkMGQyYTdhMWNhMDk1ZDVkNjRkMGI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CkRh
dGU6IFN1biwgMSBKdW4gMjAyNSAwMDoxMTozNiArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIExpbGl1
bSBEb2N1bWVudGF0aW9uCgotLS0KwqBEb2N1bWVudGF0aW9uL3NlY3VyaXR5L2xpbGl1bS5yc3Qg
fCA0MDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCsKgMSBmaWxlIGNoYW5nZWQsIDQw
MiBpbnNlcnRpb25zKCspCsKgY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdXJp
dHkvbGlsaXVtLnJzdAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvbGlsaXVt
LnJzdCBiL0RvY3VtZW50YXRpb24vc2VjdXJpdHkvbGlsaXVtLnJzdApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5iZDI1ZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRh
dGlvbi9zZWN1cml0eS9saWxpdW0ucnN0CkBAIC0wLDAgKzEsNDAyIEBACisuLiBTUERYLUxpY2Vu
c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KK0xpbGl1bSAoTGludXggSW50ZWdyaXR5IExvY2stSW4gVXNl
ciBNb2R1bGUpCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CisKKzpBdXRob3I6IEVuem8gRnVrZQorOkRhdGU6IE1heSAyMDI1Cis6VmVyc2lvbjogMS4wCisK
K0ludHJvZHVjdGlvbgorPT09PT09PT09PT09CisKK0xpbGl1bSAoTGludXggSW50ZWdyaXR5IExv
Y2stSW4gVXNlciBNb2R1bGUpIGlzIGEgTGludXggU2VjdXJpdHkgTW9kdWxlIChMU00pCitkZXNp
Z25lZCB0byBlbmhhbmNlIHN5c3RlbSBzZWN1cml0eSBieSBwcm92aWRpbmcgZmluZS1ncmFpbmVk
IGNvbnRyb2wgb3ZlcgorY3JpdGljYWwgc3lzdGVtIG9wZXJhdGlvbnMuIEl0IGltcGxlbWVudHMg
YSBtb2R1bGFyIGFwcHJvYWNoIHRvIHNlY3VyaXR5LAorYWxsb3dpbmcgYWRtaW5pc3RyYXRvcnMg
dG8gc2VsZWN0aXZlbHkgZW5hYmxlIHNwZWNpZmljIHNlY3VyaXR5IG1lY2hhbmlzbXMKK2Jhc2Vk
IG9uIHRoZWlyIHJlcXVpcmVtZW50cy4KKworVGhlIG5hbWUgIkxpbGl1bSIgaXMgYW4gYWNyb255
bSBmb3IgIkxpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIgTW9kdWxlIiwKK3JlZmxlY3Rpbmcg
aXRzIHB1cnBvc2Ugb2YgbG9ja2luZyBkb3duIHZhcmlvdXMgc3lzdGVtIG9wZXJhdGlvbnMgdG8g
bWFpbnRhaW4KK3N5c3RlbSBpbnRlZ3JpdHkgYW5kIHNlY3VyaXR5LgorCitTZWN1cml0eSBQaGls
b3NvcGh5CistLS0tLS0tLS0tLS0tLS0tLS0KKworTGlsaXVtIGZvbGxvd3MgdGhlIHByaW5jaXBs
ZSBvZiAic2VjdXJlIGJ5IGRlZmF1bHQgYnV0IGNvbmZpZ3VyYWJsZSIuIEFsbAorc2VjdXJpdHkg
bWVjaGFuaXNtcyBhcmUgZGlzYWJsZWQgYnkgZGVmYXVsdCB0byBlbnN1cmUgY29tcGF0aWJpbGl0
eSB3aXRoCitleGlzdGluZyBzeXN0ZW1zLCBidXQgY2FuIGJlIGVhc2lseSBlbmFibGVkIGluZGl2
aWR1YWxseSB0aHJvdWdoIHRoZSBzeXNmcworaW50ZXJmYWNlLiBUaGlzIGFwcHJvYWNoIGFsbG93
cyBhZG1pbmlzdHJhdG9ycyB0byBncmFkdWFsbHkgaW1wbGVtZW50IHNlY3VyaXR5CittZWFzdXJl
cyB3aXRob3V0IGRpc3J1cHRpbmcgc3lzdGVtIGZ1bmN0aW9uYWxpdHkuCisKK1RoZSBtb2R1bGUg
aXMgZGVzaWduZWQgd2l0aCB0aGUgZm9sbG93aW5nIHByaW5jaXBsZXMgaW4gbWluZDoKKworMS4g
KipNb2R1bGFyaXR5Kio6IEVhY2ggc2VjdXJpdHkgbWVjaGFuaXNtIGNhbiBiZSBlbmFibGVkIGlu
ZGVwZW5kZW50bHkuCisyLiAqKkNvbnRleHR1YWwgTG9naWMqKjogU2VjdXJpdHkgZGVjaXNpb25z
IGNvbnNpZGVyIHRoZSBjb250ZXh0IG9mIG9wZXJhdGlvbnMuCiszLiAqKkxlYXN0IFByaXZpbGVn
ZSoqOiBSZXN0cmljdGlvbnMgZm9sbG93IHRoZSBwcmluY2lwbGUgb2YgbGVhc3QgcHJpdmlsZWdl
LgorNC4gKipDb21wYXRpYmlsaXR5Kio6IFdvcmtzIGFsb25nc2lkZSBvdGhlciBMU01zIGluIHRo
ZSBMaW51eCBzZWN1cml0eSBzdGFjay4KKworRmVhdHVyZXMKKz09PT09PT09CisKK0xpbGl1bSBw
cm92aWRlcyB0aGUgZm9sbG93aW5nIHNlY3VyaXR5IG1lY2hhbmlzbXMsIGVhY2ggYWRkcmVzc2lu
ZyBzcGVjaWZpYworc2VjdXJpdHkgY29uY2VybnM6CisKKzEuICoqcHRyYWNlIHJlc3RyaWN0aW9u
cyoqCisgwqAKKyDCoCBDb250cm9scyB3aGljaCBwcm9jZXNzZXMgY2FuIHRyYWNlIG90aGVyIHBy
b2Nlc3NlcyB1c2luZyB0aGUgcHRyYWNlIHN5c3RlbQorIMKgIGNhbGwuIFRoaXMgaGVscHMgcHJl
dmVudCB1bmF1dGhvcml6ZWQgZGVidWdnaW5nIGFuZCBtZW1vcnkgaW5zcGVjdGlvbiBvZgorIMKg
IHJ1bm5pbmcgcHJvY2Vzc2VzLCB3aGljaCBjb3VsZCBiZSB1c2VkIHRvIGV4dHJhY3Qgc2Vuc2l0
aXZlIGluZm9ybWF0aW9uIG9yCisgwqAgbW9kaWZ5IHByb2Nlc3MgYmVoYXZpb3IuCisgwqAKKyDC
oCBXaGVuIGVuYWJsZWQsIG9ubHkgcHJvY2Vzc2VzIHdpdGggQ0FQX1NZU19QVFJBQ0UgY2FwYWJp
bGl0eSBjYW4gYXR0YWNoIHRvCisgwqAgb3RoZXIgcHJvY2Vzc2VzIHVzaW5nIHB0cmFjZSwgcHJl
dmVudGluZyB1bnByaXZpbGVnZWQgdXNlcnMgZnJvbSBkZWJ1Z2dpbmcKKyDCoCBvciBpbnNwZWN0
aW5nIG90aGVyIHVzZXJzJyBwcm9jZXNzZXMuCisKKzIuICoqbW1hcC9tcHJvdGVjdCByZXN0cmlj
dGlvbnMqKgorIMKgCisgwqAgUHJldmVudHMgY3JlYXRpbmcgZXhlY3V0YWJsZSBtZW1vcnkgbWFw
cGluZ3Mgb3IgY2hhbmdpbmcgbm9uLWV4ZWN1dGFibGUKKyDCoCBtZW1vcnkgdG8gZXhlY3V0YWJs
ZS4gVGhpcyBpcyBhIGNyaXRpY2FsIGRlZmVuc2UgYWdhaW5zdCBtYW55IGV4cGxvaXQKKyDCoCB0
ZWNobmlxdWVzIHRoYXQgcmVseSBvbiBleGVjdXRpbmcgY29kZSBmcm9tIHdyaXRhYmxlIG1lbW9y
eSByZWdpb25zLgorIMKgCisgwqAgV2hlbiBlbmFibGVkLCBhdHRlbXB0cyB0byBjcmVhdGUgYW5v
bnltb3VzIGV4ZWN1dGFibGUgbWFwcGluZ3Mgb3IgY2hhbmdlCisgwqAgZXhpc3RpbmcgbWFwcGlu
Z3MgdG8gYmUgZXhlY3V0YWJsZSB3aWxsIGJlIGRlbmllZCB1bmxlc3MgdGhlIHByb2Nlc3MgaGFz
CisgwqAgQ0FQX1NZU19BRE1JTiBjYXBhYmlsaXR5LiBUaGlzIGhlbHBzIHByZXZlbnQgY29kZSBp
bmplY3Rpb24gYXR0YWNrcyBhbmQKKyDCoCBsaW1pdHMgdGhlIGltcGFjdCBvZiBidWZmZXIgb3Zl
cmZsb3cgdnVsbmVyYWJpbGl0aWVzLgorCiszLiAqKmtleGVjX2xvYWQgcmVzdHJpY3Rpb25zKioK
KyDCoAorIMKgIFByZXZlbnRzIGxvYWRpbmcgYWx0ZXJuYXRpdmUga2VybmVscyB2aWEgdGhlIGtl
eGVjX2xvYWQgc3lzdGVtIGNhbGwuIFRoaXMKKyDCoCByZXN0cmljdHMgdGhlIGFiaWxpdHkgdG8g
cmVwbGFjZSB0aGUgcnVubmluZyBrZXJuZWwsIHdoaWNoIGNvdWxkIGJlIHVzZWQKKyDCoCB0byBi
eXBhc3Mgc2VjdXJpdHkgbWVjaGFuaXNtcyBvciBpbnN0YWxsIGEgY29tcHJvbWlzZWQga2VybmVs
LgorIMKgCisgwqAgV2hlbiBlbmFibGVkLCBvbmx5IHByb2Nlc3NlcyB3aXRoIENBUF9TWVNfQk9P
VCBjYXBhYmlsaXR5IGNhbiB1c2Uga2V4ZWNfbG9hZCwKKyDCoCBlbnN1cmluZyB0aGF0IG9ubHkg
YXV0aG9yaXplZCBhZG1pbmlzdHJhdG9ycyBjYW4gcmVwbGFjZSB0aGUgcnVubmluZyBrZXJuZWwu
CisKKzQuICoqY2xvbmUvdW5zaGFyZSByZXN0cmljdGlvbnMqKgorIMKgCisgwqAgQ29udHJvbHMg
dGhlIGNyZWF0aW9uIG9mIG5ldyBuYW1lc3BhY2VzIHVzaW5nIGNsb25lIGFuZCB1bnNoYXJlIHN5
c3RlbSBjYWxscy4KKyDCoCBUaGlzIGxpbWl0cyB0aGUgYWJpbGl0eSB0byBjcmVhdGUgaXNvbGF0
ZWQgZW52aXJvbm1lbnRzIHRoYXQgY291bGQgYmUgdXNlZAorIMKgIHRvIGVzY2FwZSBjb250YWlu
ZXIgYm91bmRhcmllcyBvciBtYW5pcHVsYXRlIHN5c3RlbSByZXNvdXJjZXMuCisgwqAKKyDCoCBX
aGVuIGVuYWJsZWQsIHVucHJpdmlsZWdlZCBwcm9jZXNzZXMgYXJlIHByZXZlbnRlZCBmcm9tIGNy
ZWF0aW5nIGNlcnRhaW4KKyDCoCB0eXBlcyBvZiBuYW1lc3BhY2VzLCByZWR1Y2luZyB0aGUgcmlz
ayBvZiBjb250YWluZXIgZXNjYXBlIHZ1bG5lcmFiaWxpdGllcy4KKworNS4gKiptb2R1bGUgbWFu
YWdlbWVudCByZXN0cmljdGlvbnMqKgorIMKgCisgwqAgUHJldmVudHMgbG9hZGluZyBvciB1bmxv
YWRpbmcga2VybmVsIG1vZHVsZXMuIFRoaXMgcmVzdHJpY3RzIHRoZSBhYmlsaXR5IHRvCisgwqAg
ZXh0ZW5kIG9yIG1vZGlmeSBrZXJuZWwgZnVuY3Rpb25hbGl0eSwgd2hpY2ggY291bGQgYmUgdXNl
ZCB0byBieXBhc3Mgc2VjdXJpdHkKKyDCoCBtZWNoYW5pc21zIG9yIGludHJvZHVjZSBtYWxpY2lv
dXMgY29kZSBpbnRvIHRoZSBrZXJuZWwuCisgwqAKKyDCoCBXaGVuIGVuYWJsZWQsIG9ubHkgcHJv
Y2Vzc2VzIHdpdGggQ0FQX1NZU19NT0RVTEUgY2FwYWJpbGl0eSBjYW4gbG9hZCBvcgorIMKgIHVu
bG9hZCBrZXJuZWwgbW9kdWxlcywgZW5zdXJpbmcgdGhhdCBvbmx5IGF1dGhvcml6ZWQgYWRtaW5p
c3RyYXRvcnMgY2FuCisgwqAgbW9kaWZ5IGtlcm5lbCBmdW5jdGlvbmFsaXR5LgorCis2LiAqKmZp
bGUgb3BlbiByZXN0cmljdGlvbnMqKgorIMKgCisgwqAgQ29udHJvbHMgYWNjZXNzIHRvIHNwZWNp
ZmljIGZpbGVzIHVzaW5nIHRoZSBvcGVuIGFuZCBvcGVuYXQgc3lzdGVtIGNhbGxzLgorIMKgIFRo
aXMgYWxsb3dzIGZvciBmaW5lLWdyYWluZWQgY29udHJvbCBvdmVyIGZpbGUgYWNjZXNzIGJleW9u
ZCB0cmFkaXRpb25hbAorIMKgIGRpc2NyZXRpb25hcnkgYWNjZXNzIGNvbnRyb2xzLgorIMKgCisg
wqAgV2hlbiBlbmFibGVkLCBMaWxpdW0gY2FuIHJlc3RyaWN0IGFjY2VzcyB0byBzZW5zaXRpdmUg
ZmlsZXMgYmFzZWQgb24KKyDCoCBjb250ZXh0dWFsIGluZm9ybWF0aW9uLCBwcm92aWRpbmcgYW4g
YWRkaXRpb25hbCBsYXllciBvZiBwcm90ZWN0aW9uIGZvcgorIMKgIGNyaXRpY2FsIHN5c3RlbSBm
aWxlcy4KKworNy4gKippb2N0bCByZXN0cmljdGlvbnMqKgorIMKgCisgwqAgQ29udHJvbHMgc3Bl
Y2lmaWMgaW9jdGwgb3BlcmF0aW9ucy4gVGhpcyBsaW1pdHMgdGhlIGFiaWxpdHkgdG8gcGVyZm9y
bQorIMKgIHBvdGVudGlhbGx5IGRhbmdlcm91cyBkZXZpY2UgY29udHJvbCBvcGVyYXRpb25zIHRo
YXQgY291bGQgYmUgdXNlZCB0bworIMKgIG1hbmlwdWxhdGUgaGFyZHdhcmUgb3IgYnlwYXNzIHNl
Y3VyaXR5IG1lY2hhbmlzbXMuCisgwqAKKyDCoCBXaGVuIGVuYWJsZWQsIExpbGl1bSBjYW4gcmVz
dHJpY3Qgc3BlY2lmaWMgaW9jdGwgY29tbWFuZHMgYmFzZWQgb24KKyDCoCBjb250ZXh0dWFsIGlu
Zm9ybWF0aW9uLCBwcmV2ZW50aW5nIHVuYXV0aG9yaXplZCBkZXZpY2UgbWFuaXB1bGF0aW9uLgor
CitVc2UgQ2FzZXMKKy0tLS0tLS0tLQorCitMaWxpdW0gaXMgcGFydGljdWxhcmx5IHVzZWZ1bCBp
biB0aGUgZm9sbG93aW5nIHNjZW5hcmlvczoKKworMS4gKipTZXJ2ZXIgSGFyZGVuaW5nKio6IFJl
c3RyaWN0IHN5c3RlbSBvcGVyYXRpb25zIG9uIHByb2R1Y3Rpb24gc2VydmVycyB0bworIMKgIHJl
ZHVjZSB0aGUgYXR0YWNrIHN1cmZhY2UgYW5kIGxpbWl0IHRoZSBpbXBhY3Qgb2YgcG90ZW50aWFs
IGNvbXByb21pc2VzLgorCisyLiAqKkNvbnRhaW5lciBTZWN1cml0eSoqOiBFbmhhbmNlIGNvbnRh
aW5lciBpc29sYXRpb24gYnkgcmVzdHJpY3Rpbmcgb3BlcmF0aW9ucworIMKgIHRoYXQgY291bGQg
YmUgdXNlZCB0byBlc2NhcGUgY29udGFpbmVyIGJvdW5kYXJpZXMuCisKKzMuICoqTXVsdGktdGVu
YW50IEVudmlyb25tZW50cyoqOiBQcm92aWRlIGFkZGl0aW9uYWwgc2VjdXJpdHkgYm91bmRhcmll
cyBiZXR3ZWVuCisgwqAgdXNlcnMgaW4gc2hhcmVkIGNvbXB1dGluZyBlbnZpcm9ubWVudHMuCisK
KzQuICoqQ29tcGxpYW5jZSBSZXF1aXJlbWVudHMqKjogSGVscCBtZWV0IHNlY3VyaXR5IGNvbXBs
aWFuY2UgcmVxdWlyZW1lbnRzIGJ5CisgwqAgaW1wbGVtZW50aW5nIGFkZGl0aW9uYWwgc2VjdXJp
dHkgY29udHJvbHMuCisKKzUuICoqQ3JpdGljYWwgSW5mcmFzdHJ1Y3R1cmUqKjogUHJvdGVjdCBz
eXN0ZW1zIGluIGNyaXRpY2FsIGluZnJhc3RydWN0dXJlIGJ5CisgwqAgcmVzdHJpY3RpbmcgcG90
ZW50aWFsbHkgZGFuZ2Vyb3VzIG9wZXJhdGlvbnMuCisKK0NvbmZpZ3VyYXRpb24KKz09PT09PT09
PT09PQorCitMaWxpdW0gY2FuIGJlIGNvbmZpZ3VyZWQgYm90aCBhdCBjb21waWxlIHRpbWUgYW5k
IHJ1bnRpbWUsIHByb3ZpZGluZyBmbGV4aWJpbGl0eQorZm9yIGRpZmZlcmVudCBkZXBsb3ltZW50
IHNjZW5hcmlvcy4KKworS2VybmVsIENvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0K
KworVG8gdXNlIExpbGl1bSwgaXQgbXVzdCBiZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmln
dXJhdGlvbi4gVGhpcyBjYW4gYmUgZG9uZQordXNpbmcgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9u
IG1lbnUgKG1ha2UgbWVudWNvbmZpZykgdW5kZXI6CisKKyDCoCDCoFNlY3VyaXR5IG9wdGlvbnMg
LS0tPiBMaWxpdW0gKExpbnV4IEludGVncml0eSBMb2NrLUluIFVzZXIgTW9kdWxlKSBTdXBwb3J0
CisKK0VhY2ggc2VjdXJpdHkgbWVjaGFuaXNtIGNhbiBiZSBpbmRpdmlkdWFsbHkgZW5hYmxlZCBh
dCBjb21waWxlIHRpbWU6CisKKy0gKipDT05GSUdfU0VDVVJJVFlfTElMSVVNKio6IE1haW4gTGls
aXVtIHN1cHBvcnQKKy0gKipDT05GSUdfU0VDVVJJVFlfTElMSVVNX1BUUkFDRSoqOiBMaWxpdW0g
cHRyYWNlIHJlc3RyaWN0aW9ucworLSAqKkNPTkZJR19TRUNVUklUWV9MSUxJVU1fTVBST1RFQ1Qq
KjogTGlsaXVtIG1tYXAvbXByb3RlY3QgcmVzdHJpY3Rpb25zCistICoqQ09ORklHX1NFQ1VSSVRZ
X0xJTElVTV9LRVhFQyoqOiBMaWxpdW0ga2V4ZWNfbG9hZCByZXN0cmljdGlvbnMKKy0gKipDT05G
SUdfU0VDVVJJVFlfTElMSVVNX0NMT05FKio6IExpbGl1bSBjbG9uZS91bnNoYXJlIHJlc3RyaWN0
aW9ucworLSAqKkNPTkZJR19TRUNVUklUWV9MSUxJVU1fTU9EVUxFKio6IExpbGl1bSBtb2R1bGUg
bWFuYWdlbWVudCByZXN0cmljdGlvbnMKKy0gKipDT05GSUdfU0VDVVJJVFlfTElMSVVNX09QRU4q
KjogTGlsaXVtIGZpbGUgb3BlbiByZXN0cmljdGlvbnMKKy0gKipDT05GSUdfU0VDVVJJVFlfTElM
SVVNX0lPQ1RMKio6IExpbGl1bSBpb2N0bCByZXN0cmljdGlvbnMKKworQWxsIG9wdGlvbnMgZGVm
YXVsdCB0byAnbicgKGRpc2FibGVkKSBhbmQgY2FuIGJlIHNlbGVjdGl2ZWx5IGVuYWJsZWQgYmFz
ZWQgb24KK3NlY3VyaXR5IHJlcXVpcmVtZW50cy4KKworS2VybmVsIEJvb3QgUGFyYW1ldGVycwor
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RvIGFjdGl2YXRlIExpbGl1bSBhdCBib290IHRpbWUs
IGl0IG11c3QgYmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2YgZW5hYmxlZCBMU01zCitpbiB0aGUga2Vy
bmVsIGJvb3QgcGFyYW1ldGVycy4gVGhpcyBjYW4gYmUgZG9uZSBieSBhZGRpbmcgImxpbGl1bSIg
dG8gdGhlICJsc20iCitwYXJhbWV0ZXI6CisKKy4uIGNvZGUtYmxvY2s6OiBub25lCisKKyDCoCDC
oGxzbT1jYXBhYmlsaXR5LGxhbmRsb2NrLGxvY2tkb3duLHlhbWEsaW50ZWdyaXR5LGFwcGFybW9y
LGxpbGl1bQorCitUaGUgZXhhY3QgbGlzdCB3aWxsIGRlcGVuZCBvbiB3aGljaCBvdGhlciBMU01z
IGFyZSBlbmFibGVkIGluIHlvdXIga2VybmVsLgorTGlsaXVtIGlzIGRlc2lnbmVkIHRvIHdvcmsg
YWxvbmdzaWRlIG90aGVyIExTTXMgaW4gdGhlIExpbnV4IHNlY3VyaXR5IHN0YWNrLgorCitSdW50
aW1lIENvbmZpZ3VyYXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xpbGl1bSBmZWF0dXJl
cyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCBhdCBydW50aW1lIHRocm91Z2ggdGhlIHN5c2Zz
CitpbnRlcmZhY2UuIFRoaXMgYWxsb3dzIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gd2l0aG91
dCByZWJvb3RpbmcgdGhlIHN5c3RlbS4KKworVGhlIHN5c2ZzIGludGVyZmFjZSBpcyBsb2NhdGVk
IGF0IGAvc3lzL2tlcm5lbC9saWxpdW0vYCBhbmQgcHJvdmlkZXMgdGhlCitmb2xsb3dpbmcgY29u
dHJvbCBmaWxlczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworIMKgIMKgIyBFbmFibGUgcHRy
YWNlIHJlc3RyaWN0aW9ucworIMKgIMKgZWNobyAxID4gL3N5cy9rZXJuZWwvbGlsaXVtL3B0cmFj
ZV9lbmFibGVkCisKKyDCoCDCoCMgRGlzYWJsZSBwdHJhY2UgcmVzdHJpY3Rpb25zCisgwqAgwqBl
Y2hvIDAgPiAvc3lzL2tlcm5lbC9saWxpdW0vcHRyYWNlX2VuYWJsZWQKKworQXZhaWxhYmxlIHN5
c2ZzIGNvbnRyb2xzOgorCistICoqL3N5cy9rZXJuZWwvbGlsaXVtL3B0cmFjZV9lbmFibGVkKio6
IENvbnRyb2xzIHB0cmFjZSByZXN0cmljdGlvbnMKKy0gKiovc3lzL2tlcm5lbC9saWxpdW0vbXBy
b3RlY3RfZW5hYmxlZCoqOiBDb250cm9scyBtbWFwL21wcm90ZWN0IHJlc3RyaWN0aW9ucworLSAq
Ki9zeXMva2VybmVsL2xpbGl1bS9rZXhlY19lbmFibGVkKio6IENvbnRyb2xzIGtleGVjX2xvYWQg
cmVzdHJpY3Rpb25zCistICoqL3N5cy9rZXJuZWwvbGlsaXVtL2Nsb25lX2VuYWJsZWQqKjogQ29u
dHJvbHMgY2xvbmUvdW5zaGFyZSByZXN0cmljdGlvbnMKKy0gKiovc3lzL2tlcm5lbC9saWxpdW0v
bW9kdWxlX2VuYWJsZWQqKjogQ29udHJvbHMgbW9kdWxlIG1hbmFnZW1lbnQgcmVzdHJpY3Rpb25z
CistICoqL3N5cy9rZXJuZWwvbGlsaXVtL29wZW5fZW5hYmxlZCoqOiBDb250cm9scyBmaWxlIG9w
ZW4gcmVzdHJpY3Rpb25zCistICoqL3N5cy9rZXJuZWwvbGlsaXVtL2lvY3RsX2VuYWJsZWQqKjog
Q29udHJvbHMgaW9jdGwgcmVzdHJpY3Rpb25zCisKK0VhY2ggY29udHJvbCBmaWxlIGFjY2VwdHMg
dGhlIGZvbGxvd2luZyB2YWx1ZXM6CisKKy0gKiowKio6IERpc2FibGUgdGhlIGZlYXR1cmUgKGRl
ZmF1bHQpCistICoqMSoqOiBFbmFibGUgdGhlIGZlYXR1cmUKKworQ2hhbmdlcyB0YWtlIGVmZmVj
dCBpbW1lZGlhdGVseSBhbmQgYXBwbHkgdG8gYWxsIHN1YnNlcXVlbnQgb3BlcmF0aW9ucy4KKwor
RXhhbXBsZSBDb25maWd1cmF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitIZXJlJ3MgYW4g
ZXhhbXBsZSBvZiBhIGNvbW1vbiBzZWN1cml0eSBjb25maWd1cmF0aW9uIHVzaW5nIExpbGl1bToK
KworLi4gY29kZS1ibG9jazo6IGJhc2gKKworIMKgIMKgIyBFbmFibGUgcHRyYWNlIHJlc3RyaWN0
aW9ucyB0byBwcmV2ZW50IHVuYXV0aG9yaXplZCBkZWJ1Z2dpbmcKKyDCoCDCoGVjaG8gMSA+IC9z
eXMva2VybmVsL2xpbGl1bS9wdHJhY2VfZW5hYmxlZAorCisgwqAgwqAjIEVuYWJsZSBtcHJvdGVj
dCByZXN0cmljdGlvbnMgdG8gcHJldmVudCBjb2RlIGluamVjdGlvbgorIMKgIMKgZWNobyAxID4g
L3N5cy9rZXJuZWwvbGlsaXVtL21wcm90ZWN0X2VuYWJsZWQKKworIMKgIMKgIyBFbmFibGUgbW9k
dWxlIG1hbmFnZW1lbnQgcmVzdHJpY3Rpb25zIHRvIHByZXZlbnQga2VybmVsIG1vZHVsZSB0YW1w
ZXJpbmcKKyDCoCDCoGVjaG8gMSA+IC9zeXMva2VybmVsL2xpbGl1bS9tb2R1bGVfZW5hYmxlZAor
CitUaGlzIGNvbmZpZ3VyYXRpb24gcHJvdmlkZXMgYSBnb29kIGJhbGFuY2UgYmV0d2VlbiBzZWN1
cml0eSBhbmQgdXNhYmlsaXR5IGZvcgorbWFueSBzZXJ2ZXIgZW52aXJvbm1lbnRzLgorCitJbXBs
ZW1lbnRhdGlvbiBEZXRhaWxzCis9PT09PT09PT09PT09PT09PT09PT0KKworSG9vayBSZWdpc3Ry
YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0KKworTGlsaXVtIHJlZ2lzdGVycyBzZWN1cml0eSBob29r
cyBmb3IgdmFyaW91cyBrZXJuZWwgb3BlcmF0aW9ucyB1c2luZyB0aGUgTFNNCitmcmFtZXdvcmsu
IFRoZXNlIGhvb2tzIGFyZSBjYWxsZWQgYnkgdGhlIGtlcm5lbCBiZWZvcmUgcGVyZm9ybWluZyB0
aGUKK2NvcnJlc3BvbmRpbmcgb3BlcmF0aW9ucywgYWxsb3dpbmcgTGlsaXVtIHRvIG1ha2Ugc2Vj
dXJpdHkgZGVjaXNpb25zLgorCitUaGUgaG9va3MgYXJlIHJlZ2lzdGVyZWQgaW4gdGhlIGBsaWxp
dW1faW5pdGAgZnVuY3Rpb24gdXNpbmcgdGhlCitgc2VjdXJpdHlfYWRkX2hvb2tzYCBmdW5jdGlv
biBwcm92aWRlZCBieSB0aGUgTFNNIGZyYW1ld29yay4KKworU2VjdXJpdHkgRGVjaXNpb24gTG9n
aWMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGlsaXVtIGltcGxlbWVudHMgY29udGV4dHVh
bCBsb2dpYyBmb3IgZWFjaCBzZWN1cml0eSBob29rIHRvIGRldGVybWluZSB3aGV0aGVyCithbiBv
cGVyYXRpb24gc2hvdWxkIGJlIGFsbG93ZWQgb3IgZGVuaWVkLiBUaGUgZGVjaXNpb24gbG9naWMg
Zm9sbG93cyB0aGVzZQorZ2VuZXJhbCBwcmluY2lwbGVzOgorCisxLiBJZiB0aGUgY29ycmVzcG9u
ZGluZyBmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgb3BlcmF0aW9uIGlzIGFsbG93ZWQuCisyLiBJ
ZiB0aGUgcHJvY2VzcyBoYXMgdGhlIGFwcHJvcHJpYXRlIGNhcGFiaWxpdHksIHRoZSBvcGVyYXRp
b24gaXMgYWxsb3dlZC4KKzMuIE90aGVyd2lzZSwgdGhlIG9wZXJhdGlvbiBpcyBldmFsdWF0ZWQg
YmFzZWQgb24gY29udGV4dHVhbCBpbmZvcm1hdGlvbi4KKworQnkgZGVmYXVsdCwgYWxsIG9wZXJh
dGlvbnMgYXJlIGFsbG93ZWQgdW5sZXNzIHRoZSBjb3JyZXNwb25kaW5nIGZlYXR1cmUgaXMKK2Vu
YWJsZWQuIFdoZW4gYSBmZWF0dXJlIGlzIGVuYWJsZWQsIExpbGl1bSBhcHBsaWVzIHJlc3RyaWN0
aW9ucyBiYXNlZCBvbgordGhlIGNvbnRleHQgb2YgdGhlIG9wZXJhdGlvbiwgc3VjaCBhcyB0aGUg
Y3JlZGVudGlhbHMgb2YgdGhlIGNhbGxpbmcgcHJvY2Vzcy4KKworSW50ZXJhY3Rpb24gd2l0aCBP
dGhlciBMU01zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMaWxpdW0gaXMgZGVzaWdu
ZWQgdG8gd29yayBhbG9uZ3NpZGUgb3RoZXIgTFNNcyBpbiB0aGUgTGludXggc2VjdXJpdHkgc3Rh
Y2suCitJdCBmb2xsb3dzIHRoZSBMU00gc3RhY2tpbmcgbW9kZWwsIHdoZXJlIG11bHRpcGxlIExT
TXMgY2FuIGJlIGFjdGl2ZQorc2ltdWx0YW5lb3VzbHksIGFuZCBhbiBvcGVyYXRpb24gaXMgYWxs
b3dlZCBvbmx5IGlmIGFsbCBhY3RpdmUgTFNNcyBhbGxvdyBpdC4KKworVGhpcyBhbGxvd3MgTGls
aXVtIHRvIGNvbXBsZW1lbnQgb3RoZXIgTFNNcyBsaWtlIFNFTGludXgsIEFwcEFybW9yLCBvciBT
TUFDSywKK3Byb3ZpZGluZyBhZGRpdGlvbmFsIHNlY3VyaXR5IGNvbnRyb2xzIHdpdGhvdXQgaW50
ZXJmZXJpbmcgd2l0aCB0aGVpciBvcGVyYXRpb24uCisKK1BlcmZvcm1hbmNlIENvbnNpZGVyYXRp
b25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0xpbGl1bSBpcyBkZXNpZ25lZCB0byBo
YXZlIG1pbmltYWwgcGVyZm9ybWFuY2UgaW1wYWN0IHdoZW4gZmVhdHVyZXMgYXJlCitkaXNhYmxl
ZC4gV2hlbiBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBkZXBl
bmRzIG9uIHRoZQorc3BlY2lmaWMgZmVhdHVyZXMgYW5kIHRoZSB3b3JrbG9hZCBvZiB0aGUgc3lz
dGVtLgorCitJbiBnZW5lcmFsLCB0aGUgcGVyZm9ybWFuY2Ugb3ZlcmhlYWQgaXMgbmVnbGlnaWJs
ZSBmb3IgbW9zdCB3b3JrbG9hZHMsIGFzCit0aGUgc2VjdXJpdHkgY2hlY2tzIGFyZSBsaWdodHdl
aWdodCBhbmQgb25seSBwZXJmb3JtZWQgZm9yIHNwZWNpZmljIG9wZXJhdGlvbnMuCisKK1Ryb3Vi
bGVzaG9vdGluZworPT09PT09PT09PT09PT0KKworQ29tbW9uIElzc3VlcworLS0tLS0tLS0tLS0t
CisKKzEuICoqT3BlcmF0aW9uIERlbmllZCBVbmV4cGVjdGVkbHkqKgorCisgwqAgSWYgYW4gb3Bl
cmF0aW9uIGlzIGRlbmllZCB1bmV4cGVjdGVkbHksIGNoZWNrIHdoaWNoIExpbGl1bSBmZWF0dXJl
cyBhcmUKKyDCoCBlbmFibGVkOgorCisgwqAgLi4gY29kZS1ibG9jazo6IGJhc2gKKworIMKgIMKg
IMKgIGNhdCAvc3lzL2tlcm5lbC9saWxpdW0vKi8KKworIMKgIERpc2FibGUgdGhlIHJlbGV2YW50
IGZlYXR1cmUgdGVtcG9yYXJpbHkgdG8gY29uZmlybSBpZiBMaWxpdW0gaXMgY2F1c2luZworIMKg
IHRoZSBpc3N1ZToKKworIMKgIC4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyDCoCDCoCDCoCBlY2hv
IDAgPiAvc3lzL2tlcm5lbC9saWxpdW0vZmVhdHVyZV9lbmFibGVkCisKKzIuICoqTGlsaXVtIE5v
dCBBcHBlYXJpbmcgaW4gc3lzZnMqKgorCisgwqAgSWYgdGhlIExpbGl1bSBzeXNmcyBpbnRlcmZh
Y2UgaXMgbm90IGF2YWlsYWJsZSwgY2hlY2sgaWYgTGlsaXVtIGlzIGVuYWJsZWQKKyDCoCBpbiB0
aGUga2VybmVsOgorCisgwqAgLi4gY29kZS1ibG9jazo6IGJhc2gKKworIMKgIMKgIMKgIGNhdCAv
cHJvYy9jbWRsaW5lIHwgZ3JlcCBsc20KKworIMKgIEVuc3VyZSB0aGF0ICJsaWxpdW0iIGlzIGlu
Y2x1ZGVkIGluIHRoZSBsc20gcGFyYW1ldGVyLgorCiszLiAqKkNvbmZsaWN0cyB3aXRoIE90aGVy
IFNlY3VyaXR5IE1vZHVsZXMqKgorCisgwqAgSWYgeW91IGV4cGVyaWVuY2UgY29uZmxpY3RzIHdp
dGggb3RoZXIgc2VjdXJpdHkgbW9kdWxlcywgY2hlY2sgdGhlIGtlcm5lbAorIMKgIGxvZyBmb3Ig
YW55IGVycm9yIG1lc3NhZ2VzOgorCisgwqAgLi4gY29kZS1ibG9jazo6IGJhc2gKKworIMKgIMKg
IMKgIGRtZXNnIHwgZ3JlcCBsaWxpdW0KKworRGVidWdnaW5nCistLS0tLS0tLQorCitMaWxpdW0g
bG9ncyBpbXBvcnRhbnQgZXZlbnRzIGFuZCBlcnJvcnMgdG8gdGhlIGtlcm5lbCBsb2cuIFlvdSBj
YW4gdmlldyB0aGVzZQorbWVzc2FnZXMgdXNpbmcgZG1lc2c6CisKKy4uIGNvZGUtYmxvY2s6OiBi
YXNoCisKKyDCoCDCoGRtZXNnIHwgZ3JlcCBsaWxpdW0KKworRm9yIG1vcmUgZGV0YWlsZWQgZGVi
dWdnaW5nLCB5b3UgY2FuIGVuYWJsZSBrZXJuZWwgZGVidWcgb3B0aW9ucyBmb3IgTFNNcworZHVy
aW5nIGtlcm5lbCBjb21waWxhdGlvbi4KKworU2VjdXJpdHkgQ29uc2lkZXJhdGlvbnMKKz09PT09
PT09PT09PT09PT09PT09PT0KKworV2hpbGUgTGlsaXVtIHByb3ZpZGVzIGFkZGl0aW9uYWwgc2Vj
dXJpdHkgY29udHJvbHMsIGl0IHNob3VsZCBiZSBjb25zaWRlcmVkCithcyBwYXJ0IG9mIGEgZGVm
ZW5zZS1pbi1kZXB0aCBzdHJhdGVneSwgbm90IGEgY29tcGxldGUgc2VjdXJpdHkgc29sdXRpb24u
CisKK0Jlc3QgUHJhY3RpY2VzCistLS0tLS0tLS0tLS0tCisKKzEuICoqU3RhcnQgd2l0aCBNaW5p
bWFsIFJlc3RyaWN0aW9ucyoqOiBFbmFibGUgb25seSB0aGUgZmVhdHVyZXMgeW91IG5lZWQgdG8K
KyDCoCBtaW5pbWl6ZSBwb3RlbnRpYWwgY29tcGF0aWJpbGl0eSBpc3N1ZXMuCisKKzIuICoqVGVz
dCBUaG9yb3VnaGx5Kio6IFRlc3QgeW91ciBjb25maWd1cmF0aW9uIGluIGEgbm9uLXByb2R1Y3Rp
b24gZW52aXJvbm1lbnQKKyDCoCBiZWZvcmUgZGVwbG95aW5nIHRvIHByb2R1Y3Rpb24uCisKKzMu
ICoqQ29tYmluZSB3aXRoIE90aGVyIFNlY3VyaXR5IE1lYXN1cmVzKio6IFVzZSBMaWxpdW0gYWxv
bmdzaWRlIG90aGVyIHNlY3VyaXR5CisgwqAgbWVhc3VyZXMgbGlrZSBTRUxpbnV4LCBBcHBBcm1v
ciwgc2VjY29tcCwgYW5kIHJlZ3VsYXIgc3lzdGVtIHVwZGF0ZXMuCisKKzQuICoqTW9uaXRvciBT
eXN0ZW0gTG9ncyoqOiBSZWd1bGFybHkgbW9uaXRvciBzeXN0ZW0gbG9ncyBmb3IgYW55IHNlY3Vy
aXR5CisgwqAgZXZlbnRzIG9yIGRlbmllZCBvcGVyYXRpb25zLgorCis1LiAqKktlZXAgRG9jdW1l
bnRhdGlvbioqOiBEb2N1bWVudCB5b3VyIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24gZm9yIGZ1dHVy
ZQorIMKgIHJlZmVyZW5jZSBhbmQgYXVkaXRpbmcgcHVycG9zZXMuCisKK0xpbWl0YXRpb25zCist
LS0tLS0tLS0tCisKKzEuIExpbGl1bSBjYW5ub3QgcHJvdGVjdCBhZ2FpbnN0IGFsbCB0eXBlcyBv
ZiBhdHRhY2tzIG9yIHZ1bG5lcmFiaWxpdGllcy4KKworMi4gU29tZSBhcHBsaWNhdGlvbnMgbWF5
IG5vdCBmdW5jdGlvbiBjb3JyZWN0bHkgd2l0aCBjZXJ0YWluIHJlc3RyaWN0aW9ucworIMKgIGVu
YWJsZWQuCisKKzMuIExpbGl1bSBvcGVyYXRlcyBhdCB0aGUga2VybmVsIGxldmVsIGFuZCBjYW5u
b3QgcHJvdGVjdCBhZ2FpbnN0IHVzZXItbGV2ZWwKKyDCoCB0aHJlYXRzIHdpdGhvdXQgYXBwcm9w
cmlhdGUgY29uZmlndXJhdGlvbi4KKworRnV0dXJlIERldmVsb3BtZW50Cis9PT09PT09PT09PT09
PT09PQorCitQbGFubmVkIEZlYXR1cmVzCistLS0tLS0tLS0tLS0tLS0KKworMS4gKipFbmhhbmNl
ZCBMb2dnaW5nKio6IE1vcmUgZGV0YWlsZWQgbG9nZ2luZyBvZiBzZWN1cml0eSBldmVudHMgYW5k
IGRlY2lzaW9ucy4KKworMi4gKipGaW5lLWdyYWluZWQgQ29udHJvbHMqKjogTW9yZSBncmFudWxh
ciBjb250cm9sIG92ZXIgc2VjdXJpdHkgcmVzdHJpY3Rpb25zLgorCiszLiAqKlBvbGljeSBMYW5n
dWFnZSoqOiBBIHNpbXBsZSBwb2xpY3kgbGFuZ3VhZ2UgZm9yIGNvbmZpZ3VyaW5nIExpbGl1bS4K
KworNC4gKipJbnRlZ3JhdGlvbiB3aXRoIEF1ZGl0Kio6IEJldHRlciBpbnRlZ3JhdGlvbiB3aXRo
IHRoZSBMaW51eCBhdWRpdCBzeXN0ZW0uCisKK0NvbnRyaWJ1dGluZworLS0tLS0tLS0tLS0KKwor
Q29udHJpYnV0aW9ucyB0byBMaWxpdW0gYXJlIHdlbGNvbWUuIFBsZWFzZSBmb2xsb3cgdGhlIHN0
YW5kYXJkIExpbnV4IGtlcm5lbAorZGV2ZWxvcG1lbnQgcHJvY2VzcyBmb3Igc3VibWl0dGluZyBw
YXRjaGVzLgorCitSZWZlcmVuY2VzCis9PT09PT09PT09CisKKzEuIExpbnV4IFNlY3VyaXR5IE1v
ZHVsZXMgKExTTSkgRnJhbWV3b3JrOgorIMKgIGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0
bWwvbGF0ZXN0L3NlY3VyaXR5L2xzbS5odG1sCisKKzIuIExpbnV4IENhcGFiaWxpdGllczoKKyDC
oCBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9zZWN1cml0eS9jcmVkZW50
aWFscy5odG1sCisKKzMuIExpbnV4IE5hbWVzcGFjZXM6CisgwqAgaHR0cHM6Ly93d3cua2VybmVs
Lm9yZy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUvbmFtZXNwYWNlcy9pbmRleC5odG1sCisK
KzQuIExpbnV4IEtlcm5lbCBEb2N1bWVudGF0aW9uOgorIMKgIGh0dHBzOi8vd3d3Lmtlcm5lbC5v
cmcvZG9jL2h0bWwvbGF0ZXN0LworCi0tCjIuNDkuMAoKCg==


Return-Path: <linux-kernel+bounces-669276-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id CE91F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:09:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 43C5C3BE9DE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:09:36 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5CDBFAD21;
Sun, 1 Jun 2025 01:09:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b="jZmTO+E9"
Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12olkn2063.outbound.protection.outlook.com [40.92.23.63])
(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 77D062DCC04;
Sun, 1 Jun 2025 01:09:48 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.23.63
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748740190; cv=fail; b=fBIwDmhfsqWHMOsnKsowm5K9FX3LjSL2sjSpBW+Pgj++DUy24EjNyq2gZRXdR5mOmvT+KS4RRjT6eTy3vok3y26G3xqVKfy7Y3i4LJxcxhibbvnpC+56bJjEsC2ytbbJ+fw+cD0V1ylcXZfjDjQ7znSl1W5jQra0NrFXMoQb6UE=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748740190; c=relaxed/simple;
bh=7/G7d4hJsX1hHbUkB7ZGziFxk0qyri0CgDDma/8bxYs=;
h=From:To:CC:Subject:Date:Message-ID:Content-Type:MIME-Version; b=mbyemCdzNIAfzwqnqWb5g6OHKEvPZeCr5mIki8hGpeMbcQvSBhURH8tgmYfyNElfUf9B8yWXdKqUKwM+y4dBHkoZY9LV4gCFUVNsaUrCCjck9Nh/CxqRvTbTa5/zejYD9nswrB9aTTWDVOiFgK90T/Ibn1I0NaAOnyKr0xJO7XE=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com; spf=pass smtp.mailfrom=outlook.com; dkim=pass (2048-bit key) header.d=outlook.com header.i=@outlook.com header.b=jZmTO+E9; arc=fail smtp.client-ip=40.92.23.63
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=outlook.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=outlook.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=h2rZCnDDGywfNBdvZxWbtHVyuGCB3z/mYgewipWY4UkXH0YLY9NbHLmTaFYHlU5edVQ2TrKmfcffw/VZ+eQEVNdQVb5mOkiPmyrFCVnr07ZhpsycKmtbhj4BX5JUIUK0kz9KdpasLaaUVt+akU0N6OqYpWT4O27wbt85odD+M17Clq1EVL+ReN1jIGzMGIav/IOY7gNLblecX+pEUmxyHL5uutuDFamegTCK5lOAgyp1SAFX1J8ouiw3TpiAadkB1DXzi4oghpaDjNJ/eknkU9jfr7AfK6BXKSbHoBMWMYzNO7OV3561jmUIYjuufemmiyJtE3JbAj+lHqBR5Bcs0w==
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=7/G7d4hJsX1hHbUkB7ZGziFxk0qyri0CgDDma/8bxYs=;
b=UcykIvwKsWbBNcHzdaGCRANE9Ey9qhNgOLfaQj1UgA9R2RtPsztTvUc52fcT/GUZ3j3e+vSOwvq1M8/5qxQoxuScX25lx+5OshYkExQkDrvLB7Gy+MBfG57PLBMGwRY3IR+9KgJvO7uHDR3O7GP0DRcPTvGKQHeQAB/h0NfWr7dYel1YKDZK/hju/P3MnHFtsURe47d8N1nYpnSvcsUARfwqmokHghHEVV8P+NFlh+itQpUDEDKw8MnTrvw35+i495QVYpkAYYqgvoqpkccR1t23cKJUb6Zq0Z+7QjfRG7+dtS8DzJEA+27jGIMtZ2IGEavDBNW8ybK6qby/BCdNeg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
s=selector1;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=7/G7d4hJsX1hHbUkB7ZGziFxk0qyri0CgDDma/8bxYs=;
b=jZmTO+E9wpISef1czvxKzfKIgl6fwsEKIWk4DCBM1UuNgVH5mfO79/8/4XNHIG5Dp/oMOrpYNx1F87R5HZwJdb2nK8c6/ldltoTNrJpibZrthAsQY3MuN1KNkspbjIwJH5Fsjxnkza5vtTzhMhDh7IpFrmxiuxKIjqpi4mG3WXvPrGbGbtC1Zd8g6JieBndVbd7djkLfY+vy/bSIvE0XKKpwjacYG9kBoeFCNWcRVwqbhEvgzKdRG3P4rEAa3Q4wSeeicofnQZNP6Jr2hobkiuX5wNlBQKsKjg0hZDPrlsRu49mKWOwO6CEwcepIdPS8dQxt0RHJpSBZwgz10gjaaQ==
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:34::10)
by SCZP152MB5822.LAMP152.PROD.OUTLOOK.COM (2603:10d6:300:60::7) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.26; Sun, 1 Jun
2025 01:09:45 +0000
Received: from SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1]) by SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
([fe80::595f:48ad:9ed7:35a1%6]) with mapi id 15.20.8769.035; Sun, 1 Jun 2025
01:09:45 +0000
From: =?utf-8?B?4oSw8J2Tg/Cdk4/ihLQg4oSx8J2TivCdk4DihK8=?=
<milesonerd@xxxxxxxxxxx>
To: "serge@xxxxxxxxxx" <serge@xxxxxxxxxx>
CC: "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>,
"linux-security-module@xxxxxxxxxxxxxxx"
<linux-security-module@xxxxxxxxxxxxxxx>
Subject: [PATCH 3/3] security: add Lilium - Linux Integrity Lock-In User
Module - MAINTAINER
Thread-Topic: [PATCH 3/3] security: add Lilium - Linux Integrity Lock-In User
Module - MAINTAINER
Thread-Index: AQHb0pHUofmAEoa9906NW4VX3+/7xQ==
Date: Sun, 1 Jun 2025 01:09:45 +0000
Message-ID:
<SCYP152MB626154E5E7A76479EBFAF09AB063A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Accept-Language: en-GB, pt-BR, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
msip_labels:
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SCYP152MB6261:EE_|SCZP152MB5822:EE_
x-ms-office365-filtering-correlation-id: 7a1c86c7-9cf8-4c2e-6abf-08dda0a8ff14
x-ms-exchange-slblob-mailprops:
P1EfU6pZOd+Ewy2R3Pu64sHUJuYJdjG8F1fnQM4APzKu+UfeI+QSz0EkN7jjYLU0AhhtrlEJ972rhAqmaZUxOfJpDceZTYeeMR0mcbLlG1X7YnJdiL3kmAFwc1W2LZW/VHg05iU7NAKMNi5id+95e9ViNTmAMKCr1oUvTq9sQYn91BEIifKavXsDVxH7f88fIvJSQZO6hwD4VEYcDM7f07W/2pGyX3+2t38x4oZ5xR7g0f83lKME+PUKYlIUSs+AkRPOxJn0s8DfMQbD9mAXw3ywkkIo0l0axPmrYjxQSaoGjqGXgGmvPxjPwNI5NYRTMAdD8WejRk+EMRKoj3PBrKOMbktkn61p+54qL84xsrqYxP7cbWqY5A6beYqs/JYacxqhAer/ucqXP2amuP1WPgcGKj55m322L3Ny/A5XeLx1CR2GxRbrRIs/EYbNWno0BwxOqJayO6O+EOBiFv7azzynaZoih1LQSlezKmD5aAQDjfCzONjTkri6Qmq7AhqefULZHArgfd9pEShsYY2vCEpUx3VR0JQDas/5ce02kaHfG5hFWdaR2uaVwcdjaZAwpgnLJrO9T3ylVc3OORD5EWRvOSB/UJuAAa66Oe/VIZRKc0F55XXV8KY7LKe3PBTfai5+guZzhTEFD29rcs2kfStTe7s/intygnAb4W17gnyt7yn/6MjkhMgO4RV2I+8xVbBRn0f3O76IsCahrqw+fyNwohNR+E2/WeDiKbF/KrAwvG9fs2cw6rCFz5cN3XhFAxLvoF05x21yna86KgK849ut8InZh7OVG2y+KcAdJ56r5MjuURn+TA==
x-microsoft-antispam:
BCL:0;ARA:14566002|15080799009|461199028|21061999006|7092599006|8060799009|19110799006|8062599006|15030799003|5062599005|102099032|440099028|3412199025|10035399007;
x-microsoft-antispam-message-info:
=?utf-8?B?NzkxYUhMZC9MUUVCWlgyTUNNc3Rtcm9qRW5pSTBnYkhWL2ZEUG5oZ1NGKzBW?=
=?utf-8?B?eWR1U0F6N0NWcjNEMHRpS3pCdnpGVVhNUnBNeXlTQzJVT3pibGpRQSt0S1du?=
=?utf-8?B?eDFMSWYvRkxlVlRnRGx2cG9HTDY5QjNiaWtBVDBINFU5c2ZtcW02Y09sSWdQ?=
=?utf-8?B?cXJZWUtTeGxhOHA4TnQzYXc5UTRYUVJPaWZDVFNxclAvcjNkeGZPTjlUUHU0?=
=?utf-8?B?SFBLZE1nMVNSZkNYSGdhM080bml4cFFVQjViVWFTZzd2MnJTWmhCa0xZR21R?=
=?utf-8?B?NXpnNTVkV2c2cXlCTGI1UkdHdWpQNVMwUXVYcTdyeTJHU0NVNW1UZ2EwbEU2?=
=?utf-8?B?UXFkaGNvd0hDWnFENUkzVno4cFUrL1V6TVRINkw0UTRlc0dQUTRONkp3VlUz?=
=?utf-8?B?aE1JdUV2TEkxZU04U1I3dG8yTWgrOVlyc3RnSjhDWm8zMmxvUWxwSEt5UTNN?=
=?utf-8?B?SG9LUUlZQnJpY0pJRExIbXZhWmd1SHhCNFJHbGkxODhtWmQzS3ZiQzJiblBF?=
=?utf-8?B?TTBReHUwLzlhYXR2UkdGTW1RM3dpRVBhckZKNHFreGc3VkJLMXVTTWl0cGFT?=
=?utf-8?B?UE85Y1V0WVlNeWNqY3VjMmRBTHpjdFJCNnJBUTVoMURIeXBNWU5WMmkwR1or?=
=?utf-8?B?aDlTRlRpT3N0ak1KK21VR2tEOS9NSjJqYitOdW5RRnpPQ3oySytnby90V3BF?=
=?utf-8?B?a0E0ellDOUJaaXBYaGFrUzQ0c29tbCtNck9TVzFsNk5CR1JRbVVIMzM0Q0J0?=
=?utf-8?B?YURmSThZSHdITVVqZ3pySWFzckdVVkpHSGdhajVRK3hXczlVbU9PcXRSZCtG?=
=?utf-8?B?bDRseHhYakxvbGRpUGhvRTV0RnhrTTkzREtEOENWUGdjRzRPVlZGUGN5Kzkr?=
=?utf-8?B?MHkxelNkUytHVU1DTWlDc2xmVkpzeWpSRUYvRGxHRUl4K2hKblhLaVExdlNk?=
=?utf-8?B?K01QK3BRcFFrczZLdktxMWlJdExvL0FaOTNZcWNwWEYraENOcE1vZWh0TlFH?=
=?utf-8?B?VlMzdXlVVDIwNjhTcTExeENCVE1NR1daNGI3dzlzZTRCSmloUDVDYlJHQWNx?=
=?utf-8?B?dzVhK2t0QTZTcnc5eHlzYkRlVjZKR3oxODhDOUZkQmxwcFRzWkZGU3BrK2NS?=
=?utf-8?B?RWFBcUZhcVBoY1I5SDJvTE8xSThPbkdyRjJtOEkzUWttNmE3bUNoZjd6UVFl?=
=?utf-8?B?UUJKMDlQTEpuaEhEK2cxL2NTbnVPZW5MRkVRMlFob0oxTi8zaWxSdVJrKzZE?=
=?utf-8?B?VXFLdWhScWtJNGZjb29raTVVODM5ZmoxVW5pTFpoS0hQalpHbTJtTUZWc3Vi?=
=?utf-8?B?NGNMdWNFVy9sNS9Oc0plMUxQWkgrRE9sSzVHR0U2Qmp3T04zbm9xMkl0NEMr?=
=?utf-8?B?L2hraExJcUNIVit4ZzkxZ0F1YUJYcXRVQVJkczVsSURVbzExSjZJcnlKamhR?=
=?utf-8?B?S1I2RWNmdWVUb3VZc1pGM0o3TmVpREVBbXRySklKeEdCeUpvdVBJcHE4V3I2?=
=?utf-8?B?WU9rY2hFNnlUWkxiTFV6ZGhaclJmckZRU0cxbTBhVEdNVW9GdnAyazJZNjd5?=
=?utf-8?B?RTh5enRkTnNvMkFSRHhBZTJMUkJmY2FORFJJak1JL3VJek1ETFJqQmVYNGMz?=
=?utf-8?B?cis2T2JxNU9PZHNRcFNyZVJ6T05nNWgreDFIV2FJOXIxYnRMWGt3N0hSYjgx?=
=?utf-8?Q?aYflTZY1/0WFEy9cihjN?=
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0:
=?utf-8?B?WERmT1J5NzlNbWR4cjl5RjlkVFFMUDdJU1NnMU9lV3huU0MzMXI4alJwb0h3?=
=?utf-8?B?UHpVQ3ZTa2Evc3p3MEZDSHZvTksyczhVTWR5TFFiK2NkQnc3S3dWNjBLbWNk?=
=?utf-8?B?OGlEYzJuRTZOVCttQ0QwMWRkSzhqVFIxa0pnVTdWV2FSVzF4WnNrMFNXYm11?=
=?utf-8?B?MUVsQnNjMVVQUHV1VWFlZS83a2JNc0hHdzhpK0t6YTlwd3BoN05QZTZvT2FH?=
=?utf-8?B?eUlZUUdCWFlMOXR1TjVDc29WVy9aUlpVRTRBQ2VvUU5mbUJSQmtqUGRVL3p6?=
=?utf-8?B?RDVXUVFIRVdLQm90S01Ta3lpRmFYT2hiYld6YVR5YmNkc2dydGE2dXJiMDZt?=
=?utf-8?B?QXlRV3IrQVl3ZWR2VjVqdzNLbG9MMStoNGl1dTdBbURCNXBjM09UMHhLYVRD?=
=?utf-8?B?d3RBZG1WQkljdkVhc0FIOTMxT3FKTGxtRldvYXp2Z3djQThlbE8wVlduMHJu?=
=?utf-8?B?QU1xWVI5bXB5SU05M2RGUzJycVRhV0JXTXFzY2xjRSswdW1RblVseEx4QTg1?=
=?utf-8?B?QmJFYlp2bDZtdU1NWmxBY054V1phS3hka0t5L0NwYk5obnpFMk5xcWxoSnpN?=
=?utf-8?B?bzBzRE11dlBXem5oRm1NWHhPRmMrVlZhb214QVJhUmd1bzl0eUNCRVl5TFd0?=
=?utf-8?B?QUo0Z1VkUEl0Z1hpYzVCRHppZkhnM0oybUQ5bmUrWGszNitHcTlNV1Z4WGlx?=
=?utf-8?B?NCttQmh0OWRadzk4ZkhqVlRkS3UyeUtpZHFSeVlTV0lhSXFmMlZoanFzcVRF?=
=?utf-8?B?Z3JjMnlTUW9TcTVxenBjMVNCbmN4OTJlSm5EaEJTN0l1TXZBR2lMSjZtR2lN?=
=?utf-8?B?OERIK055VWRCUzkvTUlqTGZaYVlqTFVDbGE0WUxXbmpRR1lHUjQ5c1NjS0Rn?=
=?utf-8?B?bnBQRDg2RG1mRFQ4Q2ZVWXo0N094MFg5dmh3ZHpLMjhGSDJTeVgxaUlidWNP?=
=?utf-8?B?MW1yVWtCTWtoWnIvNWFiWEZJc2VpVGR6Q21OOGlDZUlWWENteXZvTlNQdXNv?=
=?utf-8?B?ak04QWlTcE15MlRYSVRCVlpZcjZGODR4Rjg3YTlnMGFuRmRMM3NacFBBcHEv?=
=?utf-8?B?bkkzZzc1VmIyMlJsSUQ0RzFZTWw1SEFzem9vWWViRy9OOFcycHNVWjZML0da?=
=?utf-8?B?Y2RDejMxQWdNZStsdVR5QlpsMDFJQ244bWFCeW1hd1VYdUxncnRLY1FhVXFt?=
=?utf-8?B?TnppdFpvc0I0cml2KzdENDVmV3hEek1VV2NkL1V2aEg3YzV1cDJSSWVCdzZW?=
=?utf-8?B?UFVOdWlmK2NDaFJGRUtUL2hRcnExbkcrK0JtRnBSSnJHWTlRbmdzUTN0clpq?=
=?utf-8?B?cm5pKzlHSkZ0clNsT1VKcWpNUjNxbnFuaCtERXZCNW1GdzlKRkJLR3pkNnpj?=
=?utf-8?B?aWlSQ2JWK0lLblRBSlI0RTBIdlB3dWpFN01TUkpOdTZnN1ZuRWJxMU5xL3NC?=
=?utf-8?B?VkgxYnB5SWlSQ2t1TzhWSUwzTC9pVjIzUThtN2cxMWdyVHpMWTlSQXdPemNU?=
=?utf-8?B?amwzV2pBQ0FldkljVUUvQWUzaUtvZmQ4dWFOVUlTUUhFSnRYOUV5QnpDYm92?=
=?utf-8?B?cFRGUlJ1VHkwc1pjVlN6Wm03RFIyT21ESUpHY1hEVytuejNsREw1aE5pbUJ2?=
=?utf-8?B?WDJxaldzN3I5dmdteVoycWhZaTdKbGo3elAwdlkwSzJQWllNeTZzSERXQ2tM?=
=?utf-8?Q?f+l8dWGgXISkEtw/SyCY?=
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SCYP152MB6261.LAMP152.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-CrossTenant-Network-Message-Id: 7a1c86c7-9cf8-4c2e-6abf-08dda0a8ff14
X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Jun 2025 01:09:45.0906
(UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SCZP152MB5822
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

RnJvbSA1MTAzYWJiZTFjMmRhNjMyMmY2MDk1OGM0MzViMDUyMTUxZjgwNjFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBFbnpvIEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CkRh
dGU6IFN1biwgMSBKdW4gMjAyNSAwMDozNDo0NyArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFkZCBt
eSBuYW1lIGluIE1BSU5UQUlORVJTCgotLS0KwqBNQUlOVEFJTkVSUyB8IDggKysrKysrKysKwqAx
IGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCsKgY3JlYXRlIG1vZGUgMTAwNjQ0IE1BSU5U
QUlORVJTCgpkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjYxYmZlCi0tLSAvZGV2L251bGwKKysrIGIvTUFJ
TlRBSU5FUlMKQEAgLTAsMCArMSw4IEBACitMSUxJVU0gU0VDVVJJVFkgTU9EVUxFCitNOiBFbnpv
IEZ1a2UgPG1pbGVzb25lcmRAb3V0bG9vay5jb20+CitMOiBsaW51eC1zZWN1cml0eS1tb2R1bGVA
dmdlci5rZXJuZWwub3JnCitTOiBNYWludGFpbmVkCitGOiBEb2N1bWVudGF0aW9uL3NlY3VyaXR5
L2xpbGl1bS5yc3QKK0Y6IHNlY3VyaXR5L2xpbGl1bS8qCitCOiBodHRwczovL2dpdGh1Yi5jb20v
TWlsZXNPTmVyZC9saWxpdW0vaXNzdWVzCisKLS0KMi40OS4wCgo=


Return-Path: <linux-kernel+bounces-669277-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 8AB1F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:37:25 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sy.mirrors.kernel.org (Postfix) with ESMTPS id CF9C67ABCFA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:36:05 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id A7C2BC2E0;
Sun, 1 Jun 2025 01:37:15 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hzvIWJK5"
Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9B59E5227;
Sun, 1 Jun 2025 01:37:13 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748741835; cv=none; b=JLj45JAr+Fx/ryeUcIcOFAvuuXHQEfKbbOW1eALpHqIQLmzZfY5zywY/5YLHAMx1N+Z2ZpvOSrdK8LZqcVv4sL7w4l/8j8rxs3H9thl8A+iLb1dGIfTXBxxwRB0QFX+n8LnDhsuTQJZskDfFdsmFJuAM2+ms3JqqFDvXLWHfpsg=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748741835; c=relaxed/simple;
bh=SU1V6GH+cr+xNkrqU4FFiFCmgkjJw11YhcIIe0O03WQ=;
h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=oVBtIBQQQ1NEE7LXBsDp/HP0hJ93r0ZMn25yIn5+tEhhtr0vydWUq9yM/dbDlALPoKToZWrUdt4fWxRUg4PPIB57/7nG+OPaf9JR/G47dPQDcVk/n1JqhY4IWYMTAHzJMGnDo9dNleSNfEUL4VsG1k6XOq+Vna29ZZE3NnkwhLE=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hzvIWJK5; arc=none smtp.client-ip=209.85.210.182
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-74264d1832eso3542618b3a.0;
Sat, 31 May 2025 18:37:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1748741833; x=1749346633; darn=vger.kernel.org;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:from:to:cc:subject:date:message-id:reply-to;
bh=XBB8Z08DBWj20sNytHiHW4XlRZp1zln91yg7EAs9rLE=;
b=hzvIWJK5EB6gS62Pk0FTZwEfiHiJ4rp3fyMxy6IdvfEQmkCsgZyPcIv6VlV4JhZNdT
LGEF1wdf8+bPH+CH2RF5Q+Plf9j1S+t7c848rp0OBkVpaqF80OPBzZLTIpiKqupZeJC3
8gr8cU9SAK5hu5a8vMcOJBYTMK1Sv+XxMxjqrajFRzYnxu0SeyNXz2BM6ZhklXLfm390
NaP9zR1Db/b1s/xOguJfnlSYOf7sL+xLNHTTxgxfZ/U31QBgAjngMG2HN+eYOXk1AmTS
1PWJQz5kPYQXW80zhIpoRg6B1LDiTt07TXfEe0yZQEpERc9Oy/8XJjlBtEdEh+HWOM+R
XRFQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748741833; x=1749346633;
h=content-transfer-encoding:mime-version:message-id:date:subject:cc
:to:from:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=XBB8Z08DBWj20sNytHiHW4XlRZp1zln91yg7EAs9rLE=;
b=PbA4Xzns2WMgg5GMndXJ4vUMOWhId9mA01SsOw9VrAx07lfYoJBeA+9wj8Oj2yrVj9
wwxIxBW4OdYntmzXN8AQo5xaVbec9OSWQticsrTaGvucVaKzUMTGfvYuPxsMAeI2Mog4
eBUrB3aseUToQWNFCO+BVQbS7PEdC6tAD2OFgc/VxhmpbE16+qkJE0Yho0pufjReM2S6
UgvjB44/L3tZtuocWuQHbmUVsUyNgZw2y9m31ZwbgDVmx8soYkuYo3yhJRDyheWXKPvb
6C1+jhwPT2VGFpqPSwJ0gfffupe+lqnq5SsEsjAyXAxFHKGIt4hmLruS77J+yjOFWrER
WF3g==
X-Forwarded-Encrypted: i=1; AJvYcCVbAOsvojaKw6VmV/9qldtglVkSwmlnRo4bDcp2X8QiUf500ogdHwhvZjtzZU9c/pZ1BqT/E/tV+XVnh0g=@vger.kernel.org
X-Gm-Message-State: AOJu0Ywsl8AExAZHK+oREJnQtdNCcM+4nSo1DDA9xYMSaR2g5j0B5PDL
YkV0kwwHwhPYJbDq3+3j1gDQeoAoxnFNCW8aRBhB5gvAjMjSAhOW0UoH
X-Gm-Gg: ASbGncv3h+NplVDTpJasCsXNd/laa7Elc7x2KfyM1+pENnLAUooPz8yFNbtUWLHtBA8
bSMRknELfPjLhSlxTke7rR2y4VdptSfNcVFleuyq+WV3w2B24Jf7AA+jS80Cu7p0fIty9GvktpA
+wZXy8mq3eVkFrkhWZEGQKxiVYr9AKejBIqbZnhLIuK4I9mUdQYYR/h3ac/62L8Y6Dbu+TaF2C0
AXq8n9bLbTiSfR5vaijLPjet84muD5PyKqGNJK3ZHGuGRpROQZ6L1hIXilfds9GXNSDuRvVOC0w
u3wZRPBktoDq1DHTIdAKysGWXdZQauSYDHjfoyp8gSVNBqImNFCRA7bqnGrPxALiupT4Rlh6Uf2
3PtHCqPq5s31PqhHStC5zQWLXwz0OVaBHB9b+arSWIBMRWQ==
X-Google-Smtp-Source: AGHT+IGhx/KSq0fLsLPm9zYiCvrPZDGjHwix0dY0/zcU2GP7D9ngkYx9ICorIlxi50lJ16Wi94OgQw==
X-Received: by 2002:a05:6a00:3e0d:b0:742:b3a6:db16 with SMTP id d2e1a72fcca58-747d1ab9db2mr4697888b3a.20.1748741832858;
Sat, 31 May 2025 18:37:12 -0700 (PDT)
Received: from DESKTOP-NBGHJ1C.localdomain (p12284229-ipxg45101marunouchi.tokyo.ocn.ne.jp. [60.39.60.229])
by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-747affadf5asm5186202b3a.115.2025.05.31.18.37.11
(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
Sat, 31 May 2025 18:37:12 -0700 (PDT)
From: Ryo Takakura <ryotkkr98@xxxxxxxxx>
To: song@xxxxxxxxxx,
yukuai3@xxxxxxxxxx,
tj@xxxxxxxxxx
Cc: linux-raid@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx,
Ryo Takakura <ryotkkr98@xxxxxxxxx>
Subject: [PATCH] md/raid5: unset WQ_CPU_INTENSIVE for raid5 unbound workqueue
Date: Sun, 1 Jun 2025 10:37:02 +0900
Message-Id: <20250601013702.64640-1-ryotkkr98@xxxxxxxxx>
X-Mailer: git-send-email 2.34.1
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

When specified with WQ_CPU_INTENSIVE, the workqueue doesn't
participate in concurrency management. This behaviour is already
accounted for WQ_UNBOUND workqueues given that they are assigned
to their own worker threads.

Unset WQ_CPU_INTENSIVE as the use of flag has no effect when
used with WQ_UNBOUND.

Signed-off-by: Ryo Takakura <ryotkkr98@xxxxxxxxx>
---

Hi!

My understanding is that unbound wqs are served by non concurrency
managed worker threads and is not tracked by wq_cpu_intensive_report(),
so this should have no change in behaviour.

Sincerely,
Ryo Takakura

---
drivers/md/raid5.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 638938316..8f3b45161 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -9048,7 +9048,7 @@ static int __init raid5_init(void)
int ret;

raid5_wq = alloc_workqueue("raid5wq",
- WQ_UNBOUND|WQ_MEM_RECLAIM|WQ_CPU_INTENSIVE|WQ_SYSFS, 0);
+ WQ_UNBOUND|WQ_MEM_RECLAIM|WQ_SYSFS, 0);
if (!raid5_wq)
return -ENOMEM;

--
2.34.1



Return-Path: <linux-kernel+bounces-669278-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id A409641E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:41:18 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 61A431891F41
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:41:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 414E5F9C1;
Sun, 1 Jun 2025 01:41:09 +0000 (UTC)
Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020120.outbound.protection.outlook.com [52.101.195.120])
(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 B45095227;
Sun, 1 Jun 2025 01:41:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.120
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748742068; cv=fail; b=No0Kgu52aZnLejouulHu1ORh50qgovbS7XDW9kJ1BNaWxMXKdbCzEWOLn8GXvzn7ujLYrNU8orvW2I3moHBUIQR82YH77j6ZB7TUnmsjHVoINZBRcVARbLCI4BKJO2F1+wj6DWk2pGsSPelc+iNkuxplUbNQz+SU4ysgTgSsRP0=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748742068; c=relaxed/simple;
bh=F4xCCxpDicx6qWXuT30G+VoY+no0+9psfNOazYpqhkc=;
h=From:To:Cc:Subject:Date:Message-ID:Content-Type:MIME-Version; b=GSc5tqo38kgZWP4sn7NnWnhmJV5eZ0lDa0vJYFrmbH/itcYORO1SUO9vI+FVOh3HfXwRPltXIkSEL9YrR8789mlKTdGu2OsJV9JjcDalAJgJfxfS9+K3UcfbHs4uURdrtY+ADNTs/Mal9pUEPlKohLtsRU6NUN9nkbQs21/NwX8=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.120
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=xTOMhPAgbzK8m7UyazFGfaqYIGTFaUoRB4K+FboNeP1tBIP/2GW14FlkszAlstgTJVZ5CupbuUYLhA1aybsvAKXasR8q0s62gHuspHC6l446B41Wt3bfEmacFwL11I56uGpAaHE++OUV6CWuklmJSPI8cGjNoIZVpYUtIklDMbOIxdHrp0CLjrQBB1m8Vl4VlWrbxB2xk0rDLvk9elo8f/Z8i6SsdjmJE9/WpubfIdHgYQ+h4JZs+gJtyySjIaYLOelDfngXEvBwEOENlR/FHNo4g5cq/J3mNLH7DyEZIrx/BKopxY5ahCCiXY9oUYDIN5HdP/eoe/LIQJzMtIOAhQ==
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=AIpu+OUey+jTGs4+B/n1jvzKlZ8nLYOs/8w+zEu4S0I=;
b=RBbfmAZBOd/MypPpTzvpyunhuFS/SrnSyyMcEo+T8DgZYxPg3ifbA5RxGLzRxiMnmFB8shWjHveEQH48do0XURY2y3FLm9pHeE8FBDFRinwXZP6lCXRIq7EIsYG6sb7bJbKCNkPtWaoBmPYrDS5zcwI8a7wYXe9ZqDZCNrWGqEulKnVtrMrUagp3G0LD9OIttn/h1Qn4ggXMX2D3dviIOxULeXYy2SpY2IDDaKM1GenU/coX9IZcmAbdNo06Hgc3IBc7KAcHr2tvHXV+ozfsqwkFuVNoyS7y4p+tbw1omZO9vk+rQ6wxruK/mXuU20CEa1SFmprb/p5YnWa8qUPUyg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com;
dkim=pass header.d=atomlin.com; arc=none
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=atomlin.com;
Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10)
by LO0P123MB5679.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:229::14) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.16; Sun, 1 Jun
2025 01:41:02 +0000
Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM
([fe80::5352:7866:8b0f:21f6]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM
([fe80::5352:7866:8b0f:21f6%4]) with mapi id 15.20.8813.016; Sun, 1 Jun 2025
01:41:01 +0000
From: Aaron Tomlin <atomlin@xxxxxxxxxxx>
To: mpi3mr-linuxdrv.pdl@xxxxxxxxxxxx
Cc: kashyap.desai@xxxxxxxxxxxx,
sumit.saxena@xxxxxxxxxxxx,
sreekanth.reddy@xxxxxxxxxxxx,
James.Bottomley@xxxxxxxxxxxxxxxxxxxxx,
martin.petersen@xxxxxxxxxx,
atomlin@xxxxxxxxxxx,
linux-scsi@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [RFC PATCH v2 0/1] scsi: mpi3mr: Introduce smp_affinity_enable module parameter
Date: Sat, 31 May 2025 21:40:55 -0400
Message-ID: <20250601014056.128716-1-atomlin@xxxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: BN7PR06CA0044.namprd06.prod.outlook.com
(2603:10b6:408:34::21) To CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM
(2603:10a6:400:70::10)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CWLP123MB3523:EE_|LO0P123MB5679:EE_
X-MS-Office365-Filtering-Correlation-Id: e26001e9-135e-4a0a-f1ad-08dda0ad5d54
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?DL1UziL1jTS631LSjgq0aKxlI1+HuL3OdcLjej2jWRgCBacpjkyyG1Wkk6kI?=
=?us-ascii?Q?uACCZEkyl0DPuOFOkQHdKU3oDoHc5TwvTLo9TxyD7D39d38a7M+hMYn7YV9H?=
=?us-ascii?Q?TbUHo4JoTax2Wpo6JHH3BhzVpAHfFOhEmG8d5hdg4V9CrOEdjto3sPDjlpnf?=
=?us-ascii?Q?wTlHZJNrrY+VK6cgWsQwk4Zhhytig0oRSkkfWOzXnDGyy3HGJgG9IiFr+C1g?=
=?us-ascii?Q?c4dxeo0f4CFV69apAuoqWnSQ5Lzw/Pie0DZNBYPEqCVXCPsQRwwL6EvUxi0D?=
=?us-ascii?Q?i4dQujHe6BU8kORfoPdJybFr5a3RNmKuoyzKbkWtGGRm4eMQgPBs/u3ZiVoH?=
=?us-ascii?Q?HrICzvK51vvbWbhspv3Hpi5L9/YZ+BKscrD+77w1DV8wPwLkI4vv62Xn4/xH?=
=?us-ascii?Q?tBBmqoY8Y5FEbJV4RLJ8dyYJS4AZzSAAtAVZDE1bNRBXrgM/B0zYZ6HdMBSd?=
=?us-ascii?Q?hKlAxulclp3SqnATxO66jxWO3+N6/o1AKabO0XEWjxQrqQjEFIvYxiNXzizs?=
=?us-ascii?Q?UYBNgWrO69GjMMM9lSR7CsHtx/WZWhbaD/MXqxbY8/OZTY9xHss59cn5wIVw?=
=?us-ascii?Q?2Y/NBi4xBgZ72ObLORD6fbe1wGytUPh238w/yzdEq8/NTIUW3WjuMacLbaDb?=
=?us-ascii?Q?T+fJy+6WpYGXekIpB0xe32SMIlixGBCoUOYbO+bj16LKVBOvmZ/jOyXNnheJ?=
=?us-ascii?Q?19Cv3RhL1OdpjwE5e9Ox5G3whHm+0GSIRAp8145hw7qa3YatUbMkc7LJr8xi?=
=?us-ascii?Q?FbDKrSykWm6164zwXsjWiKyAau8yFi5ibTdzbxNuBDRO0eVHJL2ZxyYzI+/U?=
=?us-ascii?Q?hCHfODA9uRREHxlDs7xfzY5O27B3sxZ/kiH62ku4sqBHyrSiVrIEquBSvcE0?=
=?us-ascii?Q?JqrAStbG9mfhiZdreCRDNpW6ec7hLwtojwMfa33MDPIfm79OH+DUjo3GtEq4?=
=?us-ascii?Q?L5pH2ffobfNCKIW1my92fd5tDSxdtCPouETkb+2RA/g1ByYMPDWyCmIwpBMv?=
=?us-ascii?Q?PBCKXlQS0dSvoMD7qlKI5OqZuplt2ohVtPkINZGifJWjF4yGFknHsjdk80qg?=
=?us-ascii?Q?QAKcMfKzXCIC6z2hAwnydOVgve8k+uMp9YXGWsDmOzzVpc/CZLb5M4fDmqk1?=
=?us-ascii?Q?htX7PtQBPbidaFGTrO3YjO8ojZucWC/vpvvqr3M9gEI++pS4pbFGhIsvgc+z?=
=?us-ascii?Q?lQSFX8618QDcQJt5dhatNRqYK3i2ejUU1BmZVNt2IEXLg6Fst1Ia4Zs+Jb4M?=
=?us-ascii?Q?kYk7LdkqpB379b3CtH1OiwTu72nVkzI0qTtZDtiUdoUUMG6GdehLItam5Zah?=
=?us-ascii?Q?pcf7f93HEx2F7SU5MX1Y3SPLb/IvCbTqb39DvPZHLn/lfO+HTn0fEB0UHLWN?=
=?us-ascii?Q?MAjA5SxgXm5FrwEG4fGgjAPC8AedNecu6WwtuZ5RlioVJmrEKl4I4Pz7QRI7?=
=?us-ascii?Q?R51nVAoqMRs=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?BtdTdf9cAXo2/gh+SsjDGflvtKNPlfhrPK2XupEkVaP9kG6ekXwI+VSzF2xR?=
=?us-ascii?Q?wxezFcAFELQS9H89rjMDMOUSRHXTYXnVxGtRNSo33krPa0NM8ObWPhwE5t6z?=
=?us-ascii?Q?ZsjoXjsqvrkrb1XmxkZWlMjtMzhl8u8u4jNLrSV/auUKEBzNnZ4oUITEnlX3?=
=?us-ascii?Q?M6+hYnEBk/929BlmfHoX5XARgsK0le6Q1A8F1VlM5FGJWEANUA67NZMiCvs/?=
=?us-ascii?Q?CX2QzXusMMtv0gwYp45JukDaGGCIr4H0W5V0bNS9U8RQO+VL7jWjeKGrCNWn?=
=?us-ascii?Q?hU3XJsuGWBNg2nHJTtaGbfQhm5iXNninf4IJq8Cn8NElFW+32aOMeIR4EIBD?=
=?us-ascii?Q?X/l1TfgDxjY62zYaXFRMlXzOolFJSRyNrLfZY8WHFFIvdyM5N9hHvJItxGRY?=
=?us-ascii?Q?nhh/guFShB2LYMymjCeF+4UjvHPRXHA+EJ+Hpvhkv05PvqQ6ZgRDjXrCWThE?=
=?us-ascii?Q?vKJ6ajzKoh2M2VJ0IdC+NXJjQt///fvl2bSeyYl7NhAFF80yhy2x2euTNcCb?=
=?us-ascii?Q?WqkqyVeMer7UtGzYzXWK6EV5KTHd+9IZvJ+ZW7Cag66eq2aI/x9m8l4iZhVU?=
=?us-ascii?Q?7Fc6/w7qj+pYR6lV0afwRQiep4UbJ57uC55vX1x6fAaQtdd0cnl4mxv+DD+H?=
=?us-ascii?Q?ptWYdFAf30G0QlMacI/bIV2Baj1E12oo0NpNiHUHLsvy0D6d+0Ib/HiuKeR0?=
=?us-ascii?Q?X054ZP01soRoirCkNwfeB342XGCCbFfARSshy4NvD90mnm1OYZV1FDFn7XFy?=
=?us-ascii?Q?0HI2OX3Tl7CkrLL0PoC258vmi7zAaDmfIOkbrIxPAju8tOXAvQRi4szHrzjs?=
=?us-ascii?Q?Z7ID1WAaa950MaspiTlLVGMOAy1ArgEl5P8htbwOcw4xbI4UBn9uYMa4DvNA?=
=?us-ascii?Q?7ONDATOpcsjbGbqD7lUdAmzz/Lp0O0jeA3WDk4XTmXsxt+SMe5RVczJMo1kb?=
=?us-ascii?Q?8rMLHykfVED9sg5q9ASyTsZXmIs7r6DhnRJow3orXCUv21SKPmGMVaO4sWd6?=
=?us-ascii?Q?xfw+kai2KUeY2818fbv9Ps9oUM0HcLzIxRr2Py3593C1Oq3Y4lh6G3X6R/A3?=
=?us-ascii?Q?q1S2npqjIIybp+O07lQSBQ/kR9G3Bz1tnBTJf9axM6choUk9UIaiEG8DkIC9?=
=?us-ascii?Q?bVvlQbxVSRKul1RDeBk2iGM28ynDOB7v4VmN3/SiQjnI255M+ZVnecmopo1D?=
=?us-ascii?Q?uZm1qqiWqFrxCTdtAFtwFdhm1mSlAAKY5aIEGS8WycCI3G9SjJR/UV8kbvWE?=
=?us-ascii?Q?alAlpvh8qD9tHd+4qcNWHPV7ahBHbhFbW02BicXyrveHROOxg5W+mLyzr8ZN?=
=?us-ascii?Q?lQcqd+ZQRLGii5DV3AREcCPFFdQlx3pelggMXRTXCZXlcut+VCE0SBbrsm42?=
=?us-ascii?Q?Qf7iR9Ry+y8PMHVwmPAoGH4mRsEjYEjAkYC2E1cDgWHVt+Q5gvBmfa7G0rId?=
=?us-ascii?Q?5a125Iik0wNy825aWrpHHKtkSG1VfB0vsRMmnppSPJjcOyD5+NB1bgfZzEUg?=
=?us-ascii?Q?SMmOx9djGLzsuGYjiBaxO1W5diUBf/J7C9Qp2ofh/c7fwfCJKTZLjG9iP2hR?=
=?us-ascii?Q?KzyLoFJGogTTswcMCAawMDGn5oCgXxYEJ4tk3vPU?=
X-OriginatorOrg: atomlin.com
X-MS-Exchange-CrossTenant-Network-Message-Id: e26001e9-135e-4a0a-f1ad-08dda0ad5d54
X-MS-Exchange-CrossTenant-AuthSource: CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 01:41:01.4281
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: iT0iHELtq80abZAeupRAsGYlvtbsd/2K8qT2Atit3dtCEpVBSNxYKT+MrOvjnuswvO5hjuLs7/n+t99KHoey1g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB5679
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

I noticed that the Linux MegaRAID driver for SAS based RAID controllers has
the same aforementioned module parameter. Despite the potential performance
drawbacks, I suspect it would be useful with the Broadcom MPI3 Storage
Controller Driver too, to respect the default IRQ affinity.
Please let me know your thoughts.

Changes since v1 [1]
- Addressed WARN_ON() in pci_alloc_irq_vectors_affinity()
due to affd != NULL when smp_affinity_enable = 0
- Avoid unnecessary complexity for a single queue

[1]: https://lore.kernel.org/lkml/20250428094141.1385188-2-atomlin@xxxxxxxxxxx/

Aaron Tomlin (1):
scsi: mpi3mr: Introduce smp_affinity_enable module parameter

drivers/scsi/mpi3mr/mpi3mr.h | 1 +
drivers/scsi/mpi3mr/mpi3mr_fw.c | 14 ++++++++++++--
drivers/scsi/mpi3mr/mpi3mr_os.c | 14 +++++++++++---
3 files changed, 24 insertions(+), 5 deletions(-)

--
2.49.0



Return-Path: <linux-kernel+bounces-669279-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 064E741E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:41:30 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 285881779F1
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:41:31 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 97C7E2629D;
Sun, 1 Jun 2025 01:41:11 +0000 (UTC)
Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020120.outbound.protection.outlook.com [52.101.195.120])
(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 E2BE3B65C;
Sun, 1 Jun 2025 01:41:08 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.120
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748742070; cv=fail; b=HsPKTlECPC8yiam1h2KcKq69Zuhv45ntdGLh0+6sc6CekXu9q/y2A3tak4LKVdCgEENAcxcykySzIfeH+OisGsaZeIEPNeUmjU5sewj/SWXnPvXsNcIzyFxbvUcG0yF69iyN0lAd+lqJ2aQDpxytIZ0P9zGfDR8yNMsOOYNeCkE=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748742070; c=relaxed/simple;
bh=B6hn3UBHBlu8qJZMy5OIjmFPSSgcxq7rDFePY15cmXM=;
h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References:
Content-Type:MIME-Version; b=EJFPACUlVPOXZ3sI6FrHxyK7da1n47AaiX1AlDO5VZpGCzrOAOoWNWCms1XEZTEBxbufnmSGDuhX3xOSN00giZEXuL7RjwWc4IgvvKUWvbXzWiASQGv/R9dfWZZ1EoOaSTCYsm9hJuFKVUl2mWQ5WGEBLW8dnOQonsNZqSlef4Y=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com; spf=pass smtp.mailfrom=atomlin.com; arc=fail smtp.client-ip=52.101.195.120
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=atomlin.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=atomlin.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=o8awuBfwmwMvKRdN2rKKZSIcX5MVwXeYBtHARcyK4g3Kc5gYuqxdMk3o10Pt6A+AK2hfSAF0TeIYVghXphImC11VBZvYPzYhLpJtRPp3MRzsd0MsHSxv4fXLquU8uvPZdouaospZjzEBBp8sfE+lNCaHn/RI/mPyeXGA6dlYBHvtV5NXhbYtFqxTQN+NT/O9A4NBV4jWGRbCM0Qh1Ne6y7T/n5FZgxpzXrbGlpXnxK8jtydanO+2+ke6fUePzPPDgTH7VKan/h3oMkw1UDn5YFOLqKSkcsLgvd0vrimMtViZ4T3dRXCTf0O30FZBrvoueY1ClNt7kRbJxmJD/UpsOw==
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=0gey7zi8sodF373x8/Eu8hbKh4sP35j76LkbcMPWS0M=;
b=JmlfdsPcBJxkWLRFsHLFACS6nWh5yAWEuqFkBP7EKqJ0flvUbeb+tMMFEvB5Y0TqAhH592Swha1E19uGwrHIf2SSP8uxbrQyc6Ph7gtdgCnuBoa+d74KBNjJvPjGqx7qbJtcOxpz4Jj1wGIom3ZDIdM7qe0q/T11PTRkjSpKyDy2/bTwODoKpZfTMBgSJQvHWDr5W3S5h4OWqaQx8oGcKLlIhLIbPilRtFZxQqQXCQYt/BOkdDUFkphZcpCsXkiQ3qY1flqod0i8Bg20led/S3LFP0MHQfGQQnIcah0zcNvucT6C1OtF5s8C3LeBgDqnw6rcu4MhF0GhCZ73JFCJmQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=atomlin.com; dmarc=pass action=none header.from=atomlin.com;
dkim=pass header.d=atomlin.com; arc=none
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=atomlin.com;
Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM (2603:10a6:400:70::10)
by LO0P123MB5679.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:229::14) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8813.16; Sun, 1 Jun
2025 01:41:07 +0000
Received: from CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM
([fe80::5352:7866:8b0f:21f6]) by CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM
([fe80::5352:7866:8b0f:21f6%4]) with mapi id 15.20.8813.016; Sun, 1 Jun 2025
01:41:07 +0000
From: Aaron Tomlin <atomlin@xxxxxxxxxxx>
To: mpi3mr-linuxdrv.pdl@xxxxxxxxxxxx
Cc: kashyap.desai@xxxxxxxxxxxx,
sumit.saxena@xxxxxxxxxxxx,
sreekanth.reddy@xxxxxxxxxxxx,
James.Bottomley@xxxxxxxxxxxxxxxxxxxxx,
martin.petersen@xxxxxxxxxx,
atomlin@xxxxxxxxxxx,
linux-scsi@xxxxxxxxxxxxxxx,
linux-kernel@xxxxxxxxxxxxxxx
Subject: [RFC PATCH v2 1/1] scsi: mpi3mr: Introduce smp_affinity_enable module parameter
Date: Sat, 31 May 2025 21:40:56 -0400
Message-ID: <20250601014056.128716-2-atomlin@xxxxxxxxxxx>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <20250601014056.128716-1-atomlin@xxxxxxxxxxx>
References: <20250601014056.128716-1-atomlin@xxxxxxxxxxx>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-ClientProxiedBy: BN9P220CA0004.NAMP220.PROD.OUTLOOK.COM
(2603:10b6:408:13e::9) To LO3P123MB3531.GBRP123.PROD.OUTLOOK.COM
(2603:10a6:600:be::10)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CWLP123MB3523:EE_|LO0P123MB5679:EE_
X-MS-Office365-Filtering-Correlation-Id: f392be29-5db4-4b2f-d6c3-08dda0ad5fd7
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014;
X-Microsoft-Antispam-Message-Info:
=?us-ascii?Q?bDyp8Dw9ZyYKeRaRxDT0Lq4sQi456hWRbrKOyTOJRv5mdIgfDe5Gr7g4iCo3?=
=?us-ascii?Q?itH5mBzJ077JCbRn6u8nZSWfKVhwNVBvPeKi0fQy8FEPeEAL9k7sW6/vhMUy?=
=?us-ascii?Q?wiP44QvbRyyT+u2pXYvIBifBo8nCpiGuY827TQUG4VFbsIuy8WnmVYyEmTkT?=
=?us-ascii?Q?Qxa9aJ2kqEqs30WaxkUNp7R73Wh9Aa5EXtpzQCq5B270KrkUmLOapciSn2zo?=
=?us-ascii?Q?Z1+F2aAPNi3OVFq/K1weiLTJ93iXVqSxOPwd63t12ZHENnteZTtUmgOEf2Iy?=
=?us-ascii?Q?BcHBkO1lAl7vp15VRXZQb7z01IXssk31yQzWMxWwUM+l53D7ohURlZsVK0As?=
=?us-ascii?Q?VIiQQPERVr3CxdxLAZJjMWf37LaRncldRECarb1bGr505pDIPBdzWgmx+4m5?=
=?us-ascii?Q?z7QxjV3PX/YpY/qeTNnPH9nzOZEK1vdx1VPHEClBEZ2KuAjM8Adht60ixY/7?=
=?us-ascii?Q?0QofszZavr9U2vcQfIqK2ZvEUJn/19Ie00/+LOPF9y2BsxgSSM+NMm5L60FM?=
=?us-ascii?Q?z7KyD9CbHUhos5SQq6eEuHKzdim43G66S2QWbLUrj7N6hU8Ob6OOUjKyobUO?=
=?us-ascii?Q?UeViCXAb955FVa++PWmcbGh10TOD0PpJnO+pRT1ssyhpWKhuYgHef5SKMpw/?=
=?us-ascii?Q?Sm7xEBRBxGcVtImq0ffaUCoIUyGQ983eCjb2vp4LcM+1lHPdPIzFNWeGHBKF?=
=?us-ascii?Q?t8qMFVcbc7vDNlNyUueHgjjbUVDoN3sZv6jfZfrIkGpMWgzEB6nf+mewmEgF?=
=?us-ascii?Q?cBcFZUjyq7wHTh518ZY519f6SNi0cz7XPLo7FU8UgYyUhRbR/KMl1LHGJS/o?=
=?us-ascii?Q?7AnDIxYgTaDCCD7uDEldhJDmvEvvsr7MoRaYnvNIjyIPs+J5wXAJqu5B9DRl?=
=?us-ascii?Q?kALZ+5pvynT+wba3IaP7J4eMQ9po3mo/+F+z6fHp/hU315UD1j+BHVHPNgB0?=
=?us-ascii?Q?TfPKQq83pvHdp2lmDzVYkhaoKXZXt0j4bgjbAlnCzQb77AW3YDY3T14i4qqS?=
=?us-ascii?Q?G1fjuDc7OyCaVDV1jPwkYBx7UZyJpk0lkr1ufF/30tJ6uWEoUf2znxKut4r1?=
=?us-ascii?Q?4jHGC+A6lFiGWo49t/CPgilyhgRFbQ0wTNoGNdj4rogrHBbno5UUZ7Q/MhiD?=
=?us-ascii?Q?8jx4RG2CVF0+0Fm+QTjnSud6/dn7B324F9bDNauLMnCdm7gAn55wDxS4ENcP?=
=?us-ascii?Q?PF4O3icGVqNB7BPzSutPvZkHCCw9oh0fxz1xP1iQ0Zh3uYSGTYGRqw8AplWr?=
=?us-ascii?Q?sBEgMITZhOxpbzsDc+PAr478V649ZQF01MPGTaJiWsQ+Ev5PkMXSjaysQ8aa?=
=?us-ascii?Q?fOJ8bEvIQsXhfruabqBjnmYhfkdkpFgyG/uPSd0RxqmfLITghliTNJtMSES7?=
=?us-ascii?Q?yQ/hZ0s2MtT7vXtvGLcpQZVSWtGQPf4r0PY0/tA7w2uALvIX7P/5TiGIvoxE?=
=?us-ascii?Q?jdocuuPxOro=3D?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CWLP123MB3523.GBRP123.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1102;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?us-ascii?Q?r1I4tUCeq24vnhx7d/+t2hcJEu+w6xatD1CHUZKbha67uU0gL6Z2DPqvfPeX?=
=?us-ascii?Q?Tmb9obRAyJUbzoLz0eSlOQDLGXok8mnAPs5e0x0ocT5P1+MwkMyw/ZUIYfT7?=
=?us-ascii?Q?rbvqp/n2eo0f/hJrbbdsteWJdMDq2UPdCR2jO9YLUwN+tymIyw3dh/DTQUqk?=
=?us-ascii?Q?k+mdTzSqiIi7amCGbU5eemlNOmJXSv/Jh780WAu+rVqLR8zbECGLf+bJLupD?=
=?us-ascii?Q?LlfczjlkoxaIY/sgLXo9NCxTJ4UJAIahI6B8KYZnlj5aBRSZ+XFFoAmENsId?=
=?us-ascii?Q?yWvtHSkZdBtNfTfLMSX4RbiEwoQoQ6htbPCWHX+bEyE8X5ZrDtO9J0JD2NcC?=
=?us-ascii?Q?xVMjegXtgVclneA14TKwLMd51qL/g0EzB3fZeil4VoWsARPDB+LBGhsMzNAM?=
=?us-ascii?Q?vqR1vF9akxOMH/YyUE7oZCEDcZpoEbJ/11KqSVf2WwXqlAFZq64J4z02hU9x?=
=?us-ascii?Q?ILhkwceq/Tn/2HwF30UyV8bI1IlqN/GGTc0Z5YMq4iLpt79/T0228GLgjuw+?=
=?us-ascii?Q?A+MoxkWebLzQNIXgh/jhzZKM0shddm/xczfjtcXC2fqcoUH7WMeZQvnnar/4?=
=?us-ascii?Q?F0TF8JF64+JmUnUmGeFUdzPze9ndOeTzGDht7BFv/ksIHF4hkFRYkVZy6f+e?=
=?us-ascii?Q?9NBBECHEt34hZq9CThx7kDXlFXml1oUUzUDRxSbnDmAIXDtKdGf+0+N1I34f?=
=?us-ascii?Q?RNVlCsMOnpqVKNU+oNoW6SDh1/R0sSn92aroMwSIlCV1szeIGGGNo/FeFxaR?=
=?us-ascii?Q?1ls/kcTEAZK93zyhSTXXZXFc4Qt/3TWutf5LWOVLVvj35j8/W54UgMfj3cKG?=
=?us-ascii?Q?PkaO6xq7Yb8ZEA5lK5mr0vtDYUqqUFy7cqLwnhE6eYqQt2NBROxWK0ZnKBIh?=
=?us-ascii?Q?Bi3VIkZHEAL31u8hI44RqeSWl23xCuwP7qIrDHbJbVVh3gYSa4pp7y++ZaZ1?=
=?us-ascii?Q?BrVukubCbtAcr0T7z487GQClDGUg7THEJsmQ6UxgLEcIN18ENVRAF/IAuajr?=
=?us-ascii?Q?0gLNeEoJ/jA6IkuUVOTx557DAe728aZz47ZfWJkupG1qWnO/4Xhak/YJI0nu?=
=?us-ascii?Q?IMecsYHxQkUjU9JghNJdwaKtPEqoBAdnngoZ4MtS4y1qA4Qv6GRE3JmhNZZA?=
=?us-ascii?Q?ucLU/G/se4Jad9a0kOeD68DERJRplZvzK5ahrNkjJHcpx6GJcVdJxktAugDC?=
=?us-ascii?Q?y38TQCvV7LrQdgFphMPntuTZwFo6fihxtV4ruN06+W7wYw+rea3ffEFJo3kU?=
=?us-ascii?Q?qG0KWgtqu+pgwDOzAWKPTjTPdOulOM8CdzpUF3ocxEHEHI/r/rLNbDlJ8/Il?=
=?us-ascii?Q?jLyYbP1eEqdnIcbtAuCvQUjDaKJjiZRD3P2RWvKeqxpsUdslsf2fBMjmD2JM?=
=?us-ascii?Q?WHtW3Wd1fzkp2pXMiLAsYZ/dlxu1b1WiiMc36V0Ek76R3JXTZQCOAbbXewoe?=
=?us-ascii?Q?qx+FXnQJvy8M8iSV2nKFCA7vdWpCzcg9hlFWi65eO+Z5kf+hextFFrNmKWRC?=
=?us-ascii?Q?QXo70M/m1gVnwBxNv37+/WPhp0XckY8MiybmK3UmM0GARKB9vDU4uDOa1U73?=
=?us-ascii?Q?HL8bT+YHtrQsXZhlNMRh2gvt1TlmmtA7j01toTWs?=
X-OriginatorOrg: atomlin.com
X-MS-Exchange-CrossTenant-Network-Message-Id: f392be29-5db4-4b2f-d6c3-08dda0ad5fd7
X-MS-Exchange-CrossTenant-AuthSource: LO3P123MB3531.GBRP123.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 01:41:07.8084
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: e6a32402-7d7b-4830-9a2b-76945bbbcb57
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: CGYqn61FYVzZMcVQ2FhNktKIrrCqQ3x8NOx4n2pW/j0mAKNYw6U+VGvjsxjZ3QYgNSCY8mCix2Y3wy/pqNrzvQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO0P123MB5679
X-Spam-Status: No, score=-3.3 required=5.0 tests=HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

This patch introduces a new module parameter namely
"smp_affinity_enable", to govern the application of system-wide IRQ
affinity (with kernel boot-time parameter "irqaffinity") for MSI-X
interrupts. By default, the default IRQ affinity mask will not be
respected. Set smp_affinity_enable to 0 disables this behaviour.
Consequently, preventing the auto-assignment of MSI-X IRQs.

Signed-off-by: Aaron Tomlin <atomlin@xxxxxxxxxxx>
---
drivers/scsi/mpi3mr/mpi3mr.h | 1 +
drivers/scsi/mpi3mr/mpi3mr_fw.c | 14 ++++++++++++--
drivers/scsi/mpi3mr/mpi3mr_os.c | 14 +++++++++++---
3 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/drivers/scsi/mpi3mr/mpi3mr.h b/drivers/scsi/mpi3mr/mpi3mr.h
index 9bbc7cb98ca3..82a0c1dd2f59 100644
--- a/drivers/scsi/mpi3mr/mpi3mr.h
+++ b/drivers/scsi/mpi3mr/mpi3mr.h
@@ -1378,6 +1378,7 @@ struct mpi3mr_ioc {
u32 num_tb_segs;
struct dma_pool *trace_buf_pool;
struct segments *trace_buf;
+ bool smp_affinity_enable;

};

diff --git a/drivers/scsi/mpi3mr/mpi3mr_fw.c b/drivers/scsi/mpi3mr/mpi3mr_fw.c
index 1d7901a8f0e4..9cbe1744213d 100644
--- a/drivers/scsi/mpi3mr/mpi3mr_fw.c
+++ b/drivers/scsi/mpi3mr/mpi3mr_fw.c
@@ -22,6 +22,10 @@ static int poll_queues;
module_param(poll_queues, int, 0444);
MODULE_PARM_DESC(poll_queues, "Number of queues for io_uring poll mode. (Range 1 - 126)");

+static int smp_affinity_enable = 1;
+module_param(smp_affinity_enable, int, 0444);
+MODULE_PARM_DESC(smp_affinity_enable, "SMP affinity feature enable/disable Default: enable(1)");
+
#if defined(writeq) && defined(CONFIG_64BIT)
static inline void mpi3mr_writeq(__u64 b, volatile void __iomem *addr)
{
@@ -821,6 +825,7 @@ static int mpi3mr_setup_isr(struct mpi3mr_ioc *mrioc, u8 setup_one)
int retval;
int i;
struct irq_affinity desc = { .pre_vectors = 1, .post_vectors = 1 };
+ struct irq_affinity *descp = &desc;

if (mrioc->is_intr_info_set)
return 0;
@@ -852,10 +857,13 @@ static int mpi3mr_setup_isr(struct mpi3mr_ioc *mrioc, u8 setup_one)

desc.post_vectors = mrioc->requested_poll_qcount;
min_vec = desc.pre_vectors + desc.post_vectors;
- irq_flags |= PCI_IRQ_AFFINITY | PCI_IRQ_ALL_TYPES;
+ if (mrioc->smp_affinity_enable)
+ irq_flags |= PCI_IRQ_AFFINITY | PCI_IRQ_ALL_TYPES;
+ else
+ descp = NULL;

retval = pci_alloc_irq_vectors_affinity(mrioc->pdev,
- min_vec, max_vectors, irq_flags, &desc);
+ min_vec, max_vectors, irq_flags, descp);

if (retval < 0) {
ioc_err(mrioc, "cannot allocate irq vectors, ret %d\n",
@@ -4233,6 +4241,8 @@ int mpi3mr_init_ioc(struct mpi3mr_ioc *mrioc)
goto out_failed_noretry;
}

+ mrioc->smp_affinity_enable = smp_affinity_enable ? true : false;
+
retval = mpi3mr_setup_isr(mrioc, 1);
if (retval) {
ioc_err(mrioc, "Failed to setup ISR error %d\n",
diff --git a/drivers/scsi/mpi3mr/mpi3mr_os.c b/drivers/scsi/mpi3mr/mpi3mr_os.c
index ce444efd859e..6ea73cf7579b 100644
--- a/drivers/scsi/mpi3mr/mpi3mr_os.c
+++ b/drivers/scsi/mpi3mr/mpi3mr_os.c
@@ -4064,6 +4064,9 @@ static void mpi3mr_map_queues(struct Scsi_Host *shost)
int i, qoff, offset;
struct blk_mq_queue_map *map = NULL;

+ if (shost->nr_hw_queues == 1)
+ return;
+
offset = mrioc->op_reply_q_offset;

for (i = 0, qoff = 0; i < HCTX_MAX_TYPES; i++) {
@@ -5422,8 +5425,6 @@ mpi3mr_probe(struct pci_dev *pdev, const struct pci_device_id *id)
shost->max_channel = 0;
shost->max_id = 0xFFFFFFFF;

- shost->host_tagset = 1;
-
if (prot_mask >= 0)
scsi_host_set_prot(shost, prot_mask);
else {
@@ -5471,7 +5472,14 @@ mpi3mr_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto init_ioc_failed;
}

- shost->nr_hw_queues = mrioc->num_op_reply_q;
+ shost->host_tagset = 0;
+ shost->nr_hw_queues = 1;
+
+ if (mrioc->smp_affinity_enable) {
+ shost->nr_hw_queues = mrioc->num_op_reply_q;
+ shost->host_tagset = 1;
+ }
+
if (mrioc->active_poll_qcount)
shost->nr_maps = 3;

--
2.49.0



Return-Path: <linux-kernel+bounces-669280-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 6402F41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 21:59:13 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 5B50B1897E3C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:59:26 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 3B05E17583;
Sun, 1 Jun 2025 01:59:06 +0000 (UTC)
Received: from mail-io1-f71.google.com (mail-io1-f71.google.com [209.85.166.71])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51C3DB660
for <linux-kernel@xxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 01:59:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.71
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748743145; cv=none; b=tIKN8Jb5KfsvQHlxBQHl76XR9V4VoT3VN5KWyP7huoPbq8fB+txvQwUXgigg/qnKD8cxKOBcbxUZqeDoRcJsCAskyj08hwMmQyCOMrZZQ5iBHSmffbbmS0pRDdBzeSmxbQ+PxR/sundKC7rDVfUOaFPp0k3xgHMcXRwjNhuBmmo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748743145; c=relaxed/simple;
bh=CeTIAj7rI6qrHu/JUqpk4IW3PAdqEM8RI8D6G5KKg+A=;
h=MIME-Version:Date:In-Reply-To:Message-ID:Subject:From:To:
Content-Type; b=M+YFnqf57lYTuuzAhmqTVw5KdzMstmkWhKIjoDfLGSiSZbeAE8TcPBS8hlXqdjRXWw3uHDbYbrD2PUHWFqS6aziUEq6NOyHduGMc0sGqrLDDNIzDZSy2OqM16o3oe8bSHFbsJOmPF1peVDdY5x5goyuwQuWiyhcGfeAAUdHzg5E=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com; arc=none smtp.client-ip=209.85.166.71
Authentication-Results: smtp.subspace.kernel.org; dmarc=fail (p=none dis=none) header.from=syzkaller.appspotmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=M3KW2WVRGUFZ5GODRSRYTGD7.apphosting.bounces.google.com
Received: by mail-io1-f71.google.com with SMTP id ca18e2360f4ac-86a50b5f5bdso278894239f.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 18:59:04 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748743143; x=1749347943;
h=to:from:subject:message-id:in-reply-to:date:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=JOGhBITvA5pccYmWI1dGXjUPEDa5IWssIBcxXs72iP4=;
b=CvW1fwIZxGRFO3s5tIxMDwmkKKL5lm8VPHrnJlaRBy9d+/nowSdAZmenwhh3BIk2CY
tBhFKAkffxqeqw8KkWircinOyYDpXmTFLdns/Bepkq0bvxFSpMVIe4UqBplmWkEscqFE
nVNFDMV5DHtzvxoL+J+8FHe7M8dsFlS850ANh+u35tE3UTAkFCEv1vOXMK+L1PLQFjcR
niZr9KebVHq3wLHboWhFRamVrmBmTZ7dwnfZH5syvQfFn9GFJGyOCTjHjza1DbiNtMnl
3SCxVB5db38ysjpCBj2mRdPldWHQOW7MbopozZ6KMgKJh93yTyngsuwn2AP+6O96ma+m
uUCA==
X-Forwarded-Encrypted: i=1; AJvYcCWAL6vofL3vRSSdDvTSYt6WbDca7VTnCeFqp9OsU9xeyrlZBm8e0vSNC8zMWpctwub6gzASgo15z7TIyC8=@vger.kernel.org
X-Gm-Message-State: AOJu0YykC8DSq+TiqrUsOxI0n3a8Q4BTer0mPnZheaZRYYj3dpCHTAUs
7Oa9Hsxgf/hg3cUxs31ObZXqpH9f9xfSXB/uniE9I3amj193Hj1hkXTeICXYk8fW93xK/xR4ujg
dEJnXuiRm3RxqCFskLbkFOkbcufNilR3E1Btnc5T7ojpaLLOI7ulhoyqRLZQ=
X-Google-Smtp-Source: AGHT+IHTacTyUr4vAdu/BA01Itt5TIfikohf4QX/TCk6yqoAzOYN/rGhct3RYY/cSPUyoWHWI24V8VhULdD9Xm8XRH7Xcb2HMK+u
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-Received: by 2002:a05:6602:15d6:b0:864:9cc7:b847 with SMTP id
ca18e2360f4ac-86d05177de2mr944511039f.14.1748743143471; Sat, 31 May 2025
18:59:03 -0700 (PDT)
Date: Sat, 31 May 2025 18:59:03 -0700
In-Reply-To: <20250601012256.2510-1-hdanton@xxxxxxxx>
X-Google-Appengine-App-Id: s~syzkaller
X-Google-Appengine-App-Id-Alias: syzkaller
Message-ID: <683bb3e7.a00a0220.d8eae.0023.GAE@xxxxxxxxxx>
Subject: Re: [syzbot] [bcachefs?] possible deadlock in start_poll_synchronize_rcu_expedited
From: syzbot <syzbot+cbc79a37b5fa23efd23b@xxxxxxxxxxxxxxxxxxxxxxxxx>
To: hdanton@xxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
syzkaller-bugs@xxxxxxxxxxxxxxxx
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.0 required=5.0 tests=FROM_LOCAL_HEX,
HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,
RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED,
SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hello,

syzbot has tested the proposed patch and the reproducer did not trigger any issue:

Reported-by: syzbot+cbc79a37b5fa23efd23b@xxxxxxxxxxxxxxxxxxxxxxxxx
Tested-by: syzbot+cbc79a37b5fa23efd23b@xxxxxxxxxxxxxxxxxxxxxxxxx

Tested on:

commit: 4cb6c8af selftests/filesystems: Fix build of anon_inod..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=12e7bed4580000
kernel config: https://syzkaller.appspot.com/x/.config?x=e413b6de2bc0230
dashboard link: https://syzkaller.appspot.com/bug?extid=cbc79a37b5fa23efd23b
compiler: Debian clang version 20.1.6 (++20250514063057+1e4d39e07757-1~exp1~20250514183223.118), Debian LLD 20.1.6
patch: https://syzkaller.appspot.com/x/patch.diff?x=13c5200c580000

Note: testing is done by a robot and is best-effort only.


Return-Path: <linux-kernel+bounces-669281-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9641141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:20:21 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B682917995B
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:20:22 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4B41512B71;
Sun, 1 Jun 2025 02:20:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="iB7Ma5xs"
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 644222DCC0E;
Sun, 1 Jun 2025 02:20:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=192.198.163.10
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748744415; cv=none; b=XAdUqYTUZPexZRm7QbFK3HrWUMaHMSg3Bunh2cJA24btugnyRL7PDd3g8mjB6RN53/9ga4LvcwYRrypZ79wsfpaEWN16AHy3K/RYncoIGZlZEn1EMRXksmrkL2HJLbUUeXWFqJJEq+eCt++vJzkBGHzlx99iB16trmz7VQzjOVc=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748744415; c=relaxed/simple;
bh=8Ku2TiXaOhgiVos539+LogUi214rNs9xIfGmebSvmt8=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=kA8goKL/5VBcaIeT53VAu6KvLsL2DI53V7fhu4Oy08Krz5IQqsH094+gkCZ6Nuk+8DTNzWI+riu5l3i4ucnPU2rOfGyxtPtVvGrjkvthk7dpByRxrsJdhdf8fcd6WWBwVBgGtQHs7tXxV9yA+roPS7F3tVYM4p8WLcjdj5AjUD8=
ARC-Authentication-Results:i=1; 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=iB7Ma5xs; arc=none 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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748744412; x=1780280412;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=8Ku2TiXaOhgiVos539+LogUi214rNs9xIfGmebSvmt8=;
b=iB7Ma5xsl6Oc7Pu7pUA0zAMWkWGXcyclwcpYJ0g4ICetLeK+a4dWs3+5
YdB0fqZQOcccyNds3DatvgMsiRWVMbzwyxIBhKyn3jfW55YfFCJkMRjWa
57vXCkstWGfZjTBpBgNa/+l21jHogEFx7bNGUqCZPf0Y5R5F+WnQCuNyv
E4/wJ+KVlnJnFRcpkWWCq94neAAJFNRL7NINJNHI2ts0iQJ5jw1pVrzFS
1W802WDywIl+ppcyKOeHOH4ASZpSgOmFrcZK03OTCHl4RaADOLbIAOL+e
vJ2Y4ew68Bjg5R3j+0KdK4eKqFJ4WGb6MZObB42RUCkxurhqIgs2sd2X0
w==;
X-CSE-ConnectionGUID: IEOCuOGkQV+QApBiyKPtYg==
X-CSE-MsgGUID: PgxsvANuT26+LASWO8O4eQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="62145171"
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="62145171"
Received: from orviesa007.jf.intel.com ([10.64.159.147])
by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 19:20:11 -0700
X-CSE-ConnectionGUID: 36B06KtcR2a7lP/+qDTlKg==
X-CSE-MsgGUID: DSyr2C1kQQOh+3SunQ38+w==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="144862100"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by orviesa007.jf.intel.com with ESMTP; 31 May 2025 19:20:10 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLYIx-000Ykq-0I;
Sun, 01 Jun 2025 02:20:07 +0000
Date: Sun, 1 Jun 2025 10:19:41 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
Cc: oe-kbuild-all@xxxxxxxxxxxxxxx, robh@xxxxxxxxxx, krzk+dt@xxxxxxxxxx,
conor+dt@xxxxxxxxxx, arnd@xxxxxxxx, gregkh@xxxxxxxxxxxxxxxxxxx,
abd.masalkhi@xxxxxxxxx
Subject: Re: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series
RFID/NFC chips
Message-ID: <202506011056.lwz5lTUN-lkp@xxxxxxxxx>
References: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Abd-Alrhman,

kernel test robot noticed the following build warnings:

[auto build test WARNING on char-misc/char-misc-linus]
[also build test WARNING on robh/for-next soc/for-next linus/master v6.15]
[cannot apply to char-misc/char-misc-testing char-misc/char-misc-next next-20250530]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Abd-Alrhman-Masalkhi/dt-bindings-misc-Add-binding-for-ST-M24LR-control-interface/20250531-161342
base: char-misc/char-misc-linus
patch link: https://lore.kernel.org/r/20250531081159.2007319-3-abd.masalkhi%40gmail.com
patch subject: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series RFID/NFC chips
config: s390-allyesconfig (https://download.01.org/0day-ci/archive/20250601/202506011056.lwz5lTUN-lkp@xxxxxxxxx/config)
compiler: s390-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250601/202506011056.lwz5lTUN-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506011056.lwz5lTUN-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

In file included from include/linux/build_bug.h:5,
from include/linux/bits.h:22,
from include/linux/ioport.h:13,
from include/linux/acpi.h:12,
from include/linux/i2c.h:13,
from drivers/misc/m24lr_ctl.c:22:
drivers/misc/m24lr_ctl.c: In function 'm24lr_ctl_write':
>> include/linux/err.h:28:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
28 | #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
| ^
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
drivers/misc/m24lr_ctl.c:378:21: note: in expansion of macro 'IS_ERR_VALUE'
378 | if (IS_ERR_VALUE(err)) {
| ^~~~~~~~~~~~
drivers/misc/m24lr_ctl.c: In function 'm24lr_ctl_show':
>> include/linux/err.h:28:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
28 | #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
| ^
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
drivers/misc/m24lr_ctl.c:499:13: note: in expansion of macro 'IS_ERR_VALUE'
499 | if (IS_ERR_VALUE(ret))
| ^~~~~~~~~~~~
In file included from include/linux/device.h:15,
from include/linux/acpi.h:14:
drivers/misc/m24lr_ctl.c: In function 'm24lr_ctl_probe':
drivers/misc/m24lr_ctl.c:589:34: warning: too many arguments for format [-Wformat-extra-args]
589 | "Failed to create sysfs entry '%s'\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:156:61: note: in expansion of macro 'dev_fmt'
156 | dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/misc/m24lr_ctl.c:588:25: note: in expansion of macro 'dev_warn'
588 | dev_warn(dev,
| ^~~~~~~~
drivers/misc/m24lr_ctl.c:613:42: warning: too many arguments for format [-Wformat-extra-args]
613 | "Failed to create sysfs entry '%s'\n",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/dev_printk.h:110:30: note: in definition of macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ^~~
include/linux/dev_printk.h:156:61: note: in expansion of macro 'dev_fmt'
156 | dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ^~~~~~~
drivers/misc/m24lr_ctl.c:612:33: note: in expansion of macro 'dev_warn'
612 | dev_warn(dev,
| ^~~~~~~~
>> include/linux/err.h:28:49: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
28 | #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
| ^
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
drivers/misc/m24lr_ctl.c:642:13: note: in expansion of macro 'IS_ERR_VALUE'
642 | if (IS_ERR_VALUE(err))
| ^~~~~~~~~~~~
drivers/misc/m24lr_ctl.c:645:15: error: too many arguments to function 'i2c_mux_add_adapter'; expected 3, have 4
645 | err = i2c_mux_add_adapter(muxc, 0, 0, 0);
| ^~~~~~~~~~~~~~~~~~~ ~
In file included from drivers/misc/m24lr_ctl.c:25:
include/linux/i2c-mux.h:58:5: note: declared here
58 | int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
| ^~~~~~~~~~~~~~~~~~~
drivers/misc/m24lr_ctl.c: At top level:
drivers/misc/m24lr_ctl.c:669:21: error: initialization of 'int (*)(struct i2c_client *)' from incompatible pointer type 'int (*)(struct i2c_client *, const struct i2c_device_id *)' [-Wincompatible-pointer-types]
669 | .probe = m24lr_ctl_probe,
| ^~~~~~~~~~~~~~~
drivers/misc/m24lr_ctl.c:669:21: note: (near initialization for 'm24lr_ctl_driver.probe')
drivers/misc/m24lr_ctl.c:540:12: note: 'm24lr_ctl_probe' declared here
540 | static int m24lr_ctl_probe(struct i2c_client *client,
| ^~~~~~~~~~~~~~~
drivers/misc/m24lr_ctl.c:670:21: error: initialization of 'void (*)(struct i2c_client *)' from incompatible pointer type 'int (*)(struct i2c_client *)' [-Wincompatible-pointer-types]
670 | .remove = remove,
| ^~~~~~
drivers/misc/m24lr_ctl.c:670:21: note: (near initialization for 'm24lr_ctl_driver.remove')
drivers/misc/m24lr_ctl.c:655:12: note: 'remove' declared here
655 | static int remove(struct i2c_client *client)
| ^~~~~~


vim +28 include/linux/err.h

ebba5f9fcb8823 Randy Dunlap 2006-09-27 21
4d744ce9d5d7cf James Seo 2023-05-09 22 /**
4d744ce9d5d7cf James Seo 2023-05-09 23 * IS_ERR_VALUE - Detect an error pointer.
4d744ce9d5d7cf James Seo 2023-05-09 24 * @x: The pointer to check.
4d744ce9d5d7cf James Seo 2023-05-09 25 *
4d744ce9d5d7cf James Seo 2023-05-09 26 * Like IS_ERR(), but does not generate a compiler warning if result is unused.
4d744ce9d5d7cf James Seo 2023-05-09 27 */
aa00edc1287a69 Linus Torvalds 2016-05-27 @28 #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
07ab67c8d0d7c1 Linus Torvalds 2005-05-19 29

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669282-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 34D3A41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:23:23 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 79C763B8CA8
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:23:01 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E218A17578;
Sun, 1 Jun 2025 02:23:17 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=canb.auug.org.au header.i=@canb.auug.org.au header.b="XmxwouDC"
Received: from mail.ozlabs.org (gandalf.ozlabs.org [150.107.74.76])
(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 6D5122DCC0E
for <linux-kernel@xxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:23:10 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=150.107.74.76
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748744596; cv=none; b=qPY2zm+XhczVzZgnynIhL3Gq7FBkgS2rZHDWTC3YkrFaUSYMxtIJ960lUwfwtUbc4AejtWNnDXi5SDmBKBPGowHKXZPemaBathgTrL7f6e/YMDQFrAAu7fP1WxVEpgxctQU1unBg81cIRmozvSuOs/EEzV6nfnDZubXlbPk+AOo=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748744596; c=relaxed/simple;
bh=gCIBVdaxxWBKdKeXTSUvV/O9G5mUzsYp7oFZ6IW8sUY=;
h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:
MIME-Version:Content-Type; b=J49NnSo+Y+vUR6DBHyrL6m9OUqWwbNAZqHj4aFN2+wq6zkbrcqJ4aqm69O0PGURshlbixHENXehqW2HSnftmOXrYy5BPsXPJc1R7/V+HsXoomtCE0N4LN7UoQPaSQkDEGsoH+K7BdFoU3Y4kBh/el6pr7Adyjlc54iY1QCLGNQg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canb.auug.org.au; spf=pass smtp.mailfrom=canb.auug.org.au; dkim=pass (2048-bit key) header.d=canb.auug.org.au header.i=@canb.auug.org.au header.b=XmxwouDC; arc=none smtp.client-ip=150.107.74.76
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canb.auug.org.au
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canb.auug.org.au
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canb.auug.org.au;
s=202503; t=1748744582;
bh=aJcX5sIOIBuhWL2B08C8Bkg1TDfRPZFOUtHDpv/nitg=;
h=Date:From:To:Cc:Subject:In-Reply-To:References:From;
b=XmxwouDC49dv1m+vOGud6NpWIPFfE+UcdqfFgEdlMnJ9JcIvarDE+3FeUp34C8MnZ
AkKtqt6UUd/2tSUI39cJnQ8QZ5JMkNn77U7V4HJP5zcLN6xvxQ5vceBFljM5Glx67u
xczbEqY5aIV1y8G8j2XIdkj1tWtv17cJLlt/B2Dp4WtUlNam5jBipMW65eOnUnHvdG
ZahQL3sXJXr5gAalXHK+npyo5wv9/svWweXeWmH1dqOQ91EBheOMpdLkrD8lAs4pbj
YJvxVP2MAXGcYLBNLtzLkOPiOxxqG3k6RSlKNahCakkp2G3r3gaNwnXrpxyDizgMT2
H5Nv1qgB3j+CA==
Received: from authenticated.ozlabs.org (localhost [127.0.0.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange ECDHE (prime256v1) server-signature RSA-PSS (4096 bits) server-digest SHA256)
(Client did not present a certificate)
by mail.ozlabs.org (Postfix) with ESMTPSA id 4b913T6ZhGz4x5Z;
Sun, 1 Jun 2025 12:23:01 +1000 (AEST)
Date: Sun, 1 Jun 2025 12:22:49 +1000
From: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx>
To: Kees Cook <kees@xxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, Konstantin Ryabitsev
<konstantin@xxxxxxxxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, Eric
Biggers <ebiggers@xxxxxxxxxx>, Ingo Saitz <ingo@xxxxxxxxxxxxxxx>, kernel
test robot <oliver.sang@xxxxxxxxx>, Marco Elver <elver@xxxxxxxxxx>, Nathan
Chancellor <nathan@xxxxxxxxxx>, Thiago Jung Bauermann
<thiago.bauermann@xxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
Message-ID: <20250601122249.63a31d71@xxxxxxxxxxxxxxxx>
In-Reply-To: <156567EE-E5BB-43C4-B5A6-439D83FF387D@xxxxxxxxxx>
References: <202505310759.3A40AD051@keescook>
<CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
<156567EE-E5BB-43C4-B5A6-439D83FF387D@xxxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Sig_/13yDyeoR+xu0pkoGH2hrCZ1";
protocol="application/pgp-signature"; micalg=pgp-sha256
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

--Sig_/13yDyeoR+xu0pkoGH2hrCZ1
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Hi Kees,

On Sat, 31 May 2025 18:06:00 -0700 Kees Cook <kees@xxxxxxxxxx> wrote:
>
> I'll throw it all out and rebuild from patches.

If you want to start from what you had in linux-next on Friday, you could f=
etch commit

eef1355c269b ("ubsan: integer-overflow: depend on BROKEN to keep this out=
of CI")

(that was your for-next/kspp branch) from
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git

--=20
Cheers,
Stephen Rothwell

--Sig_/13yDyeoR+xu0pkoGH2hrCZ1
Content-Type: application/pgp-signature
Content-Description: OpenPGP digital signature

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEENIC96giZ81tWdLgKAVBC80lX0GwFAmg7uXkACgkQAVBC80lX
0GxdFggAgIWpWu0/xg9D0XNpuo9Kpaz30zY/mzlK7eyXfqZuafooTRUJvgJa5iV7
MQwZGdwKvVwrQYJRHyMfstA87HvL5Bo82ucM1IifLtOyZbsZMu/1GD0fwFG89+0t
JN9Rldz3tAds4RFDovLUrtSwpc6jwR5p2BuOIL8/29t3ZQHW9BDq6oKqpZINGePJ
O2qweGoPQZmp2B3JR9CHsNfd/PZQ9IiYR1fVehuT0lMDqubouNJUL15gY/+JmmSV
1GmZQ1zemmFEB9+FRiPEFQRWb5ezWRAoCGgApKLcddlG8iFdN7nxRHMArp1EATX4
B1qkXQ7bNF4omsaOqJSpv5/jWjqV0g==
=jwMQ
-----END PGP SIGNATURE-----

--Sig_/13yDyeoR+xu0pkoGH2hrCZ1--


Return-Path: <linux-kernel+bounces-669283-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 9619941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:36:19 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id A8CFA189A1DA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:36:32 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 5832B17578;
Sun, 1 Jun 2025 02:36:12 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b="bXSgMhyj"
Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43])
(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
(No client certificate requested)
by smtp.subspace.kernel.org (Postfix) with ESMTPS id C8C2B2905
for <linux-kernel@xxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:36:06 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748745371; cv=none; b=VP9Xrc5snWXwFRyRtifk/8V8Apr0PRY2uE4WECF0CRpEFZDERz/XH2PZx+oQsUeq7Nib8leQWcQeNZiFDDvB1s/l2KJFqnDdzhvWlNxqOFylzziKBtrUENJn0FoUcc3Y+XimBGBtgU9P3v1RzKa2Xk7+2y5Y0Ic7r3bJ2SFFIak=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748745371; c=relaxed/simple;
bh=M50G61sqw1AaNqNENCNaIhKwlyqc4HkBZL0CBEFh4jI=;
h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject:
To:Cc:Content-Type; b=ffBVT7FWPVNxqeG7kB6KZho+mF1ts0yHE75jmZ4VAWhAKG7zMqOxskKfdRmzpKENFGDBX9sDZDbMZW0MXhzKMgPiLx2O5JtKh+Ys2Du/JGgUOEfT+YDg1RlVSw/HLrmomiQTnp50EaX0MN4G//c+JaqasHKXupKVwwPNlPgLavg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org; spf=pass smtp.mailfrom=linuxfoundation.org; dkim=pass (1024-bit key) header.d=linux-foundation.org header.i=@linux-foundation.org header.b=bXSgMhyj; arc=none smtp.client-ip=209.85.208.43
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=linux-foundation.org
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linuxfoundation.org
Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-604f5691bceso5817740a12.0
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:36:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=linux-foundation.org; s=google; t=1748745365; x=1749350165; darn=vger.kernel.org;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:from:to:cc:subject:date:message-id:reply-to;
bh=QWxj2jDTxp5oT7ga4QB7swClDCxNYYobU4fQPUtkDLo=;
b=bXSgMhyj3eU+3vObzPEaBTaN+f+hBnZyTu5YdqFq/Yu6Y60yDglxjbrhTfQLHzVsme
2WWmKavZ0hORxsHsNciQQftEBoK4kQEzLt2NMHHpbDqCbfSBruZcq54HDgG45xtk4xa9
Mg50hHY4Fojwac+eeKmP0grPOS58a86Hup3CE=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1748745365; x=1749350165;
h=cc:to:subject:message-id:date:from:in-reply-to:references
:mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
:reply-to;
bh=QWxj2jDTxp5oT7ga4QB7swClDCxNYYobU4fQPUtkDLo=;
b=YaLlPLSA4raiRzX6FP9DDOzb1IHR/NaL/3rVSoamDpy8nSd1ze2APCHQ16eOwaiq78
wGx1z04fZOqtoYzucwv8IK4MBz/2vZ+ONERy9QnexFmkQOww5/Rey4jKB9zQ7NmNMuI9
Gzyp3/nGdww1hGHxi6HeWMgxgPfPz6HAb6wzZmOYzddRUfIpL9v2mRaAw6woQ+DJbc6r
wFD3PPCNTQEVYADyvQFtUCG9p022+w337E83WAZKB1V6qzm/9bb6FmBjVW437fsJ+fsE
d9W9ZV2see6cgctL6J58jC32dmqs+IkyqejxkJR3sHQRX/8SZFhRNnPUKKBmhd0EAhtP
HxOg==
X-Forwarded-Encrypted: i=1; AJvYcCWFtaRIGEcpwIbN1mC16Yb8jfZXnVTbfCjEkT2EzfbeZmlMCxPx/zV7BMzAI1cyWb6yMDpblqHsQX3DNpQ=@vger.kernel.org
X-Gm-Message-State: AOJu0YwYL0pcwpyPCCIjlZtFGjOWXmy84Iy8EJjqFbe/MjQ/hvw9wkOZ
5wlNpphwMc4FVk0ABuhdz2zcsjFOZpWGX2WhCUTpza61Rt5pxmArfNfCtbzfp11KCRuvoWeiRrO
KKNA77zs=
X-Gm-Gg: ASbGnctdUPOwotGvY/6Zz2jWwfklyxGSIMArL903SfsDOHU3UlpekfjLagGaace7Ps0
b2hcwO/unm3VLMmLY1FU8yDlYQl1rxySwYMTA4xiGS6cv/tZ8+lRiCSUW4Gsr4OEcjwdHTUaCbi
tO7lRhKRVuQsQWnpUFpRsmjTrfa1NXriPbURXM7IVi+NQ7ImpQ/lHJmMcnH/5cROWRDhHkTkfwg
zHe7btc0/opidshZgD5QkeJ79serFIzdwwGrI+1lDTG6UBWmIDWfpr7kYkOKsM0H6U4y/uUyEUA
CLV4GE6P1Zf9ZI8KrHpP0W6qdjuWEsSpGFzBtwUDBp8LndS7oR47cU+gyC+9c3F8440FJQOcXhK
zRbkCtoSyOYrPOY7MzKGOTeEkZA==
X-Google-Smtp-Source: AGHT+IEFgxw43jGbnarI50FD6DzEWANiwydlUIDCVbkhtfuSy7gUwrbzW/Gw5qB8zJxJK9cdz9QRVw==
X-Received: by 2002:a05:6402:90a:b0:5ee:486:9d4b with SMTP id 4fb4d7f45d1cf-6056effb5b7mr6974245a12.34.1748745364950;
Sat, 31 May 2025 19:36:04 -0700 (PDT)
Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com. [209.85.208.47])
by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-60566c5c5casm4048715a12.25.2025.05.31.19.36.02
for <linux-kernel@xxxxxxxxxxxxxxx>
(version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
Sat, 31 May 2025 19:36:03 -0700 (PDT)
Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-6045a8a59c5so5414413a12.1
for <linux-kernel@xxxxxxxxxxxxxxx>; Sat, 31 May 2025 19:36:02 -0700 (PDT)
X-Forwarded-Encrypted: i=1; AJvYcCXKtHv4vxHgpJiUDAonNZcV0PXmlcArrRD3+jxdjKNhWQ+tHFNOlkOJ9j/TxJmYKSDckyFmRooTQy5dVI8=@vger.kernel.org
X-Received: by 2002:a05:6402:210c:b0:601:f4dd:8572 with SMTP id
4fb4d7f45d1cf-6056df48906mr8932692a12.17.1748745362160; Sat, 31 May 2025
19:36:02 -0700 (PDT)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
References: <202505310759.3A40AD051@keescook> <CAHk-=wj4a_CvL6-=8gobwScstu-gJpX4XbX__hvcE=e9zaQ_9A@xxxxxxxxxxxxxx>
<156567EE-E5BB-43C4-B5A6-439D83FF387D@xxxxxxxxxx>
In-Reply-To: <156567EE-E5BB-43C4-B5A6-439D83FF387D@xxxxxxxxxx>
From: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>
Date: Sat, 31 May 2025 19:35:45 -0700
X-Gmail-Original-Message-ID: <CAHk-=wjktqa94u_=++YX7XxUr57iLAs1GqtHPOY-o-N0z7wyeA@xxxxxxxxxxxxxx>
X-Gm-Features: AX0GCFsdQ816tAqlfuVlCMbbDykt-U8R89k36JvlFAC9BT-BnzgCyEdeS4-zV0c
Message-ID: <CAHk-=wjktqa94u_=++YX7XxUr57iLAs1GqtHPOY-o-N0z7wyeA@xxxxxxxxxxxxxx>
Subject: Re: [GIT PULL] hardening fixes for v6.16-rc1
To: Kees Cook <kees@xxxxxxxxxx>
Cc: Konstantin Ryabitsev <konstantin@xxxxxxxxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx,
Eric Biggers <ebiggers@xxxxxxxxxx>, Ingo Saitz <ingo@xxxxxxxxxxxxxxx>,
kernel test robot <oliver.sang@xxxxxxxxx>, Marco Elver <elver@xxxxxxxxxx>,
Nathan Chancellor <nathan@xxxxxxxxxx>, Thiago Jung Bauermann <thiago.bauermann@xxxxxxxxxx>
Content-Type: text/plain; charset="UTF-8"
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

On Sat, 31 May 2025 at 18:06, Kees Cook <kees@xxxxxxxxxx> wrote:
>
> I have no idea. I had noticed a bunch of my trees were refusing to have sane merges.

The rebased history would explain that, but the reason I'm upset about
it is that I don't even see how that rebasing could possibly happen
"by mistake".

Any normal git merge rebasing should re-write the committer. So to get
the kinds of rewritten history that I saw, it almost has to be
intentional. I don't see how that has happened by mistake.

At a minimum there is some truly effed up scripting going on.

Because it wasn't just one or two commits, it was a whole slew of
them. I mentioned one, but there were *thousands* of rewritten
commits.

IThat bad branch of yours had 330 (!) merge commits that were
attributed to me (both authorship and commit information) and weren't
actually from my tree.

And those are just *my* commits. Never mind the 6000+ other commits
that didn't purport to be from me.

This is not some "disk corruption" issue.

There was real *work* involved in re-creating 330 copies of my merges
and 6000 copies of other peoples commits. I only looked at one, but it
appears identical except for the lack of source tag signature
information (and then all the subsequent ones that depend on it will
obviously then have different parent SHA1s etc).

Linus


Return-Path: <linux-kernel+bounces-669284-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 817AC41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:46:07 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id B88663BEB3C
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:45:44 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 92DE41BC58;
Sun, 1 Jun 2025 02:46:00 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DTUP+Xsl"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 C9A4F2DCBE2;
Sun, 1 Jun 2025 02:45:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748745959; cv=none; b=AqwBuHTJjMWtMFEKr6iarIs7m6f0JPgFAOS3kDd2yaM9fqC168PBoPTZ7+8QrULeHoRW9QC3zT5tfEHgt4WQvT9pKEJRkWzyq3Bi8BZo4aS5OdttX0kXnj7yZ6b2xnWzdnMqNEu7T/QSb0fqUff9Gr6f6BCypAUW4Nh5eQDyjPE=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748745959; c=relaxed/simple;
bh=zBiuqhh/LJZyz4fb2suDDFeazmxpqx7uWyLWaOTLLE0=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=lTq76D2u6MUTIHSYmIBbSAmTGNDcLutLRjcn0eTYDNhBFSyuT715y1nOZH6Dv1QUZy1Ltpi8lW9Zbler7WR4a9bRxfEWcUGM6I+kRQyUpV3UStoWNgYoFkHLcIMLUiXTQRradWanv0ePa+EUsxrQXHjXAFIAvEw9fRMCMDDnY3c=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DTUP+Xsl; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id AC0D3C4CEE3;
Sun, 1 Jun 2025 02:45:59 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748745959;
bh=zBiuqhh/LJZyz4fb2suDDFeazmxpqx7uWyLWaOTLLE0=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=DTUP+XslB52kw9ry9gWkkZyFjb8JB9IDNjbLNF66GY+SPxeuNV1BJswHyMfUrlieU
xr9vCUMRIbJJYLL8l24LZp30y2dDaDZI3I+b9Jvkj97z7Rr62k5NYaxKM8/BOQHC3N
vKSvX2VASax9bVT+It7oc690tETMs35bUSsI3WhoSf2s+oSF+3k8rHYoQWONdvDHbp
aaGj7QE/epHPnbC5OSaeni1HzRnLYampd5Op/42azSq/1g2/zCN5eIL4TN7oHVfUvs
hSSre37UXtAScBV1niqiV1TXn0CTa+42jrQd/pXU5tQrmJvnQ9Ml8ZQUrT1Bq3gyZa
b3p/Rd6fUGtZw==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id EB38F380AAD0;
Sun, 1 Jun 2025 02:46:33 +0000 (UTC)
Subject: Re: [GIT PULL] fbdev updates for v6.16-rc1
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <aDs4uwcxU_M4mpVE@carbonx1>
References: <aDs4uwcxU_M4mpVE@carbonx1>
X-PR-Tracked-List-Id: Direct Rendering Infrastructure - Development
<dri-devel.lists.freedesktop.org>
X-PR-Tracked-Message-Id: <aDs4uwcxU_M4mpVE@carbonx1>
X-PR-Tracked-Remote: http://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev.git tags/fbdev-for-6.16-rc1
X-PR-Tracked-Commit-Id: 05f6e183879d9785a3cdf2f08a498bc31b7a20aa
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: b42966552bb8d3027b66782fc1b53ce570e4d356
Message-Id: <174874599246.296823.858848517798857863.pr-tracker-bot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 02:46:32 +0000
To: Helge Deller <deller@xxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, linux-fbdev@xxxxxxxxxxxxxxx, dri-devel@xxxxxxxxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 19:13:31 +0200:

> http://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev.git tags/fbdev-for-6.16-rc1

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/b42966552bb8d3027b66782fc1b53ce570e4d356

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669285-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0B37141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:47:03 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 2A8FF17B0CE
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:47:03 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 130501F949;
Sun, 1 Jun 2025 02:46:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/audMD4"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 4F7EF2DCBE1;
Sun, 1 Jun 2025 02:46:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746015; cv=none; b=oAPFJ2lXoZmj7EFN9OlNaBui09l1yp92SgVerXApeHYfmKpwU0NUFl9qERvVk89IVIse1TdHPkMmBxIpgYBMst0Hdf1YK4xuT1iwnewTpuojZoJg+yI+l4ddE5qLT1B0pvJQ+46AbsgEhI+a+X+BG85e2fxFUdMPZMC84xA3o+c=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746015; c=relaxed/simple;
bh=8ahz6LYNQBG0k7IUFJJOjfWE+ZmtI8miLuEt38X8sgY=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=iftCcUXHK+oEPiO0CsI/slYiRSR3RPim/DOmcQQQdNcBDbX4YJjvUTT0NPNuyZxbyRArhDLh0SOIMvwMOEk0teZURR606lRw2R1t2A5413HxHwzx1ADUbXELsdiZ1vwo1YIs/MRJdmESSU/PlFrEFM8Xdh1RXNRcb/LJHsB1qwc=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/audMD4; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F3ABC4CEE3;
Sun, 1 Jun 2025 02:46:55 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748746015;
bh=8ahz6LYNQBG0k7IUFJJOjfWE+ZmtI8miLuEt38X8sgY=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=P/audMD4cvf+k68hrY7l1U6LcV1oqts+p3n6LO/LnTmS2fLGsvrPWK2g9cC/tu6Yn
cknTcivKZgdIyxmAHZVJ+9LOor7NtkFluKEDHiOfCyENI3p3h2LZk3PIb1PcVWdEb6
o9O0gflzmTYANKTmbLtNTdjOvlycGBN2tBTcI205hFk954gJWxMKvMNcPxyBedez+d
2kq0Jb/b3r4dU6Bvo2oAOV/uW7VmNmNJhw0R2VVWKA80D6d7eiUiZ1OJ4hBtBrFMph
YIThVeODCDlQ1CInuAYYWoosF+6hvltBFm0dt2Au/Qnk8jRuFwKDJhNR0uHsfABUtL
zjhBQ/jT1qRFA==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id 70E1A380AAD0;
Sun, 1 Jun 2025 02:47:29 +0000 (UTC)
Subject: Re: [GIT PULL] MM updates for 6.16-rc1
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <20250531145342.383090aa5ed5bcefee0740d5@xxxxxxxxxxxxxxxxxxxx>
References: <20250531145342.383090aa5ed5bcefee0740d5@xxxxxxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <20250531145342.383090aa5ed5bcefee0740d5@xxxxxxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2025-05-31-14-50
X-PR-Tracked-Commit-Id: c544a952ba61b1a025455098033c17e0573ab085
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 00c010e130e58301db2ea0cec1eadc931e1cb8cf
Message-Id: <174874604794.296823.9742582059292506586.pr-tracker-bot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 02:47:27 +0000
To: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, linux-mm@xxxxxxxxx, mm-commits@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 14:53:42 -0700:

> git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-stable-2025-05-31-14-50

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/00c010e130e58301db2ea0cec1eadc931e1cb8cf

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669286-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 24EF141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 22:47:17 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id D019E3AC6C9
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 02:46:50 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6F5AC2DCBE1;
Sun, 1 Jun 2025 02:46:58 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="qqSVcal7"
Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201])
(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 B197D35959;
Sun, 1 Jun 2025 02:46:57 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746017; cv=none; b=YP+nIkvgOUhWWGuoTleTDywTMzyddKmKm2wrYIGqh+lVLvQQJly7yFm7ffGZxnHPFh6IE3fVm9xVEnzZGXFGJFbcGRkxx3GGnyzIeeqRH+0sESYpXOfcHABqyyz9k3+UfoWE9BwJh4bKvTjnZqil7GQOxR/qeCDLSTlY9Lnz3rU=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746017; c=relaxed/simple;
bh=/S1YfGPF046tB3OYAu5D3cEqn3qJhWcHbcbqG6PN6E4=;
h=Subject:From:In-Reply-To:References:Message-Id:Date:To:Cc; b=b8Q+geKZG5Kf+BhfiupEdM8gb2eTh6kDlTGvqUvwiKvU7dBll+ABnJGlC+GQS26UFSOjgN4kujzUNJ+tpGHtcCUokk61IYIIfEELYb5sdSKXRNf0FoUHhGEv/lizkE89og4ir4sOYpgqe0UoT6XTFAywbaWJbcAjrVtOk2c8CHo=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=qqSVcal7; arc=none smtp.client-ip=10.30.226.201
Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24C64C4CEEF;
Sun, 1 Jun 2025 02:46:57 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org;
s=k20201202; t=1748746017;
bh=/S1YfGPF046tB3OYAu5D3cEqn3qJhWcHbcbqG6PN6E4=;
h=Subject:From:In-Reply-To:References:Date:To:Cc:From;
b=qqSVcal7N30T+Tyvg4WmxuJ5GWdaIU9WT81QTBibsHLXhXwhBLwzAfpEraOvCfFV0
g44BpXX8WAMSb7tX7cM8hkwaAXNgmv3Pmxus6//LWpwy/LX3d3qgl+zwDaKBb99uvE
FOvV8Zd7RP263qEMr7eHd1WayV5VvDIcE5HiTGVZb5SnY2/J42wOJtlk7fx/nqMycP
pJ7sTKrzt1MeTjf4o70lIiizOT3Q9uAFOTb64PnxYP0FH674EzSha/wRo2+KGqmzVq
QpvCvl6sWoOH9h/Ez84D74E4d2eE7rkHVprpmU/KYiAXubb9JFGgTbLYoKCxQEdOsQ
pIX2noxIE+jOQ==
Received: from [10.30.226.235] (localhost [IPv6:::1])
by aws-us-west-2-korg-oddjob-rhel9-1.codeaurora.org (Postfix) with ESMTP id 70C41380AAD0;
Sun, 1 Jun 2025 02:47:31 +0000 (UTC)
Subject: Re: [GIT PULL] non-MM updates for 6.16-rc1
From: pr-tracker-bot@xxxxxxxxxx
In-Reply-To: <20250531153157.8fd9b708ae4009f5dbe81a9e@xxxxxxxxxxxxxxxxxxxx>
References: <20250531153157.8fd9b708ae4009f5dbe81a9e@xxxxxxxxxxxxxxxxxxxx>
X-PR-Tracked-List-Id: <linux-kernel.vger.kernel.org>
X-PR-Tracked-Message-Id: <20250531153157.8fd9b708ae4009f5dbe81a9e@xxxxxxxxxxxxxxxxxxxx>
X-PR-Tracked-Remote: git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-nonmm-stable-2025-05-31-15-28
X-PR-Tracked-Commit-Id: 375700bab5b150e876e42d894a9a7470881f8a61
X-PR-Merge-Tree: torvalds/linux.git
X-PR-Merge-Refname: refs/heads/master
X-PR-Merge-Commit-Id: 7d4e49a77d9930c69751b9192448fda6ff9100f1
Message-Id: <174874605004.296823.4983054967405940250.pr-tracker-bot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 02:47:30 +0000
To: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, linux-mm@xxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, mm-commits@xxxxxxxxxxxxxxx
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
X-Spam-Status: No, score=-6.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The pull request you sent on Sat, 31 May 2025 15:31:57 -0700:

> git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm tags/mm-nonmm-stable-2025-05-31-15-28

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/7d4e49a77d9930c69751b9192448fda6ff9100f1

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html


Return-Path: <linux-kernel+bounces-669287-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D0FB941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:01:02 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id B64A817810D
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:01:03 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 06C6243AA1;
Sun, 1 Jun 2025 03:00:55 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="tnFYPOfy"
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2065.outbound.protection.outlook.com [40.107.243.65])
(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 617486ADD;
Sun, 1 Jun 2025 03:00:51 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.65
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746853; cv=fail; b=dULo8OPFn5tWugK5Yv49lxRrwsiXbgBy5ilkWKIMOh1kO81zy7vrhMizXzkp68mDGlzjanSjYdigx+KCjAYurGLyJmPDX81FjUfm7z6vgq4HdOpe6rnP9hywihRyvgmo86kgvIPdEg0i816ioZPDQetjah8UCpzeXl14AlLPcXs=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746853; c=relaxed/simple;
bh=LrikHPp7PQchiAX3alXXX3KOTj9wjhG5lSgAf1iaDsQ=;
h=From:Subject:Date:Message-Id:Content-Type:To:Cc:MIME-Version; b=B0WAJOu47fxdbYsM5eRQHrTbZ4Z3/Tx92IB8iONFPqVUljEBkrS5HdN1ci0tbhsU+QXpiuEtrMm0NBOFSAFB6Cid53V7BNrid/cXDUdD5//jO6DPNfYuwRPnkjCDwcMvMVyqhngLCVlETzFTMFRMRuwxLs0oLnvEZNyhPrX2M4Y=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=tnFYPOfy; arc=fail smtp.client-ip=40.107.243.65
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=aRjrP/ce35YAKfgxjC9otE7MsepHNu4WCDba3NGYuKCcgEZQb/l3BX8QBXTMLgrVRhRVvUKAZGLftnDOPMkpzkIbId1T9kiJEXxJVDayAh9XY/I9KO1cTFPHPsX+P67BhhlYc/SD3yIX8Yvs7D1l2spHX/lBKMN8qSjA8Syznfa17zQJhV+/fe04JAmnlR+3dyLUlNBt3CZAK5TkJF57qtH726GhOyCkAE9c3MwNu4Q2RyaITsCjoZDD8OSkRwyDQ0hXVU7dq7Z4lWCi1w63aCtVo508rw7Xe+sgPqG0gZVGhNWeRg79xKvtU0DoH9EdwlYrSKDroV4OnHCAnm2xQg==
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=GVFE8RLv0bJF2HGiJQbjYDA/efpJfbl047vjuHgHeRA=;
b=eUa1XaD4BGkrGAUXGMouQQbwS9yuBrzN8oGoHrOQ6PAP0g3wEhxUKGzABBJtAQ99ke4TGFoqJfeSTvtonjBULkg/uwWcV124xzhlPep1WM7l/iug869eJqS8MZ/CZcDZwkn45hYy01AYbepmB7g+K4b+mPkMHcUpPYTbWGaPy9671jk4dHE6cW7uGIgmW+hBi4GBP8Xo+rj2bRd5R81skUX+XQqBuW4sOcQaQ469aGAMqjBLkAN3mBeXKWHyuzgm1/04TUP3bu64OiaUKeWQaZ5Ix0nDCd8QkGzL8yNiaZ0iCxxpjgTlgTxbQGDTt07N8kcFQrNltX4q6fK7WmSehg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=GVFE8RLv0bJF2HGiJQbjYDA/efpJfbl047vjuHgHeRA=;
b=tnFYPOfyvW6fW9yg80Vjy8Ao7aPVPqQRHt+pud3UjxIIj4mZjzep2FzxClznn34DQIedg9YziIjs0OlPqkigBeGoNsgSVrQC0hC9wnOpjYrYyMYzED+LENBhGcC8+DMAvNwdkygtMXW02YN9il3H72WHtX8CEDLrOyfg0qkQp0DCOE1xb+QiIsbNJiS4ydIRbFfW55Iez8vSu5Xxk0gKPMuRqkyki7pGG8s4y6ppLZQBAzxOGC4mb88E5dbC0IaNMh4rHMJWwnCl3bJ+vzU3gxxFg1J8rwqhKvpOseD9jI9bLY/38BcsqNr5XuzCoV7V46B134L1GFaA0NLaxS/z6A==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun
2025 03:00:48 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025
03:00:47 +0000
From: Alexandre Courbot <acourbot@xxxxxxxxxx>
Subject: [PATCH 0/4] rust: a few common Borrow/BorrowMut implementations
Date: Sun, 01 Jun 2025 12:00:38 +0900
Message-Id: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
X-B4-Tracking: v=1; b=H4sIAFbCO2gC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE
vPSU3UzU4B8JSMDI1MDU2ND3aT8oqL88vjM3IKcYl2LlLTUNOO05NRUS2MloJaCotS0zAqwcdG
xtbUAwfY5tl4AAAA=
X-Change-ID: 20250531-borrow_impls-8dfef3fcee93
To: Danilo Krummrich <dakr@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <lossin@xxxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>
Cc: rust-for-linux@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Alexandre Courbot <acourbot@xxxxxxxxxx>
X-Mailer: b4 0.14.2
X-ClientProxiedBy: TYAPR01CA0209.jpnprd01.prod.outlook.com
(2603:1096:404:29::29) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_
X-MS-Office365-Filtering-Correlation-Id: ba972b80-f746-423b-0375-08dda0b8819f
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?ZmdhNVZVd2pYWHVtbHFBaFBlTkpXREt4eEV5MGg4RGw5T2NNQml1Zk9KTnJO?=
=?utf-8?B?UDZieDFRMDFxSjluTXhkZW0vaThNRDZqTklySDdOWnNJcGhSUkhwZyt3bmUv?=
=?utf-8?B?Kyt4OEZJTGkyR1d4QUF2L3hkN21Bb0VRT1hGQUlwTjNtazJvb3FCVzBtQmRi?=
=?utf-8?B?OUVrWmRhVW9nSk1QSEk5Vng5RkQ0ZU5STGxGWXVZYlNDbnBFcExuKzV4bHM1?=
=?utf-8?B?OEJnSE1HaGJzMnk2TW1pbmFsT3lOeHF6dFAvT2ZzYVJqSFF5blp1WWMzclN1?=
=?utf-8?B?czd3eFdMRkVBNnc4bkpQMkZSQkYwRWQzOUlna05VYVk1UkZJVCtnblRmREpV?=
=?utf-8?B?eUsvTnNFQkNqdFVpQnI1K3B3aTdETXZUa1pnbm02bHgrN0tkWDlJaEZtSHE5?=
=?utf-8?B?MXd1a213RGlzbEY1TkJLdnF5UTd3VDhXRExhMlhnM2xIKy9Hb2JGbWJQUEhQ?=
=?utf-8?B?SVVyTnlqMFVQc2pBTmRlSjk0ZDJnTWJ2aXZOKzlkbzQzQnRtZ1RrRk44LzBh?=
=?utf-8?B?U2pza3krSWYxZmVVYXdqTlhvRExwRW50N2k5REF6SUZGSitzTjB5dEtpME1l?=
=?utf-8?B?ZE0wckFvbUlBK2xaeDJibFU0VG5JajFkOE5HNE5CUXV1R2JZU1orU0d6bDgw?=
=?utf-8?B?WUxhNzFXa0ErR3ZacDh4T2ZZdFlabFlEbURKZ0NlNm1rSC9XYStOdytjdEpy?=
=?utf-8?B?S3g0UVJSeGZNSURNaUVBMWVjWTRwajlhZGZjNDhLYSswYjlsV0lRQ2FlelVP?=
=?utf-8?B?eWwzbkJ3bFBLWnlTSzhmMU5Da1I3aHQzQ21Rc1NxR0dvekZKaDVPUDJiajRs?=
=?utf-8?B?NTBOdEJtYzZMWkFMMWQ3aW9kdjA4bVNybmRmN1k5TWh0OGM1RVBrcWQwVS9F?=
=?utf-8?B?S0g3dUNVOGFzUDlCR2VCcmVqdmZNY1JCNTdSbzk2bWtJa0ZaWU9PbFpFMjcv?=
=?utf-8?B?NEJJUjhuZmcxSmRBTUlvSk9XZGFaejRjaTFhaDdWeWlQaTVmNTE0dGxBVHo0?=
=?utf-8?B?QzQwc1B0VU1WWjdHeFpjR1FUM20wa3NIMlZDOUZLRGRLTkZmQmlLakRxTFpX?=
=?utf-8?B?NzNhaDRyLzdzS0cxR1dFK1NwcERSa2swUDMvUEFtak9NOHRwdTh3TGtUVEMw?=
=?utf-8?B?dHNERjlKeGZUb0NWSGNYbkRpWDhSSnFtSVpVR01YekNVS0daZndQSktKRHdw?=
=?utf-8?B?UW1mYVA2N0Y4TVRXSHJoYlRSclE1c3lObkFTRjB1MUdvY2tPVEFQRTFjMlF4?=
=?utf-8?B?NFJlUWlmUllpR0pldFl1bVdHcThWNTVubmR0YjFncFRiYVhETTJHaXZZMHQ4?=
=?utf-8?B?VVFoMXYrMzJ3N1pLWjkxUTk2YjlEZE5ZcnFSdkQ4ZUQyU2tWUitwWTlUeWdE?=
=?utf-8?B?VG5Tc0ZYalZ1ZEttZFd2UFdpU3NEdFlBblBZYy8xUjZJcXJZbERwV09XRHU3?=
=?utf-8?B?emtjTlNVOFl5M0NQWmpNTm4wZjFhRHNwaURjOXNXVll1WkU1SkZEZGRTMmt1?=
=?utf-8?B?cXNZYWdyNzdBQ3k5dmlkb0pTZ1FudDVvVkxPZUZsWmgwUGV3U1RaTHNrWEsz?=
=?utf-8?B?Njh2YVAwV2NTV2dpTDJsRlpLemgyZFdkbC9VYkRyVWxDRmhidE0vK2JxcDRI?=
=?utf-8?B?QkQwSDNyMXJ1OW5DNjFxd3Z5TzR2LzlJVkJ5T2pDc1NMamRqb3ZJSkNLTzRz?=
=?utf-8?B?R1VuYlFKaEFRMnJyRGpvMzJTelF0RE44Z2g3MkRHT010Vi8vWTM4MGRjQ01m?=
=?utf-8?B?d1RxZ1B2WkwxTDIrUXVJOG9sK3VhR1oycldmK3dudkEvVzlxTDF2Y2hKYldu?=
=?utf-8?B?L3hkMEhhTzJvZTJNYkNGelJmVXMwSlk0UitiUHZNN0Rqa3hPMjIvaS9QL1RC?=
=?utf-8?B?ZlVUL1Q3eCtMcGsvSjNEY3BvM2x2ZUxpV20rQkxBVWowWWtNalhwQ3lsVy9x?=
=?utf-8?B?anBRaU9FNXFLcEpDanlLaWIrOGt3Tmg1bGtXTXQ2MDRnRlpIbzlNcHAxMjBT?=
=?utf-8?B?VjdkUisyYUd3PT0=?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?OWFHQkxNMGNUTVEwVlBiMm5PdDJ6WGNaeWVnYXpMaDdjRzdjRHNieE4zMmE4?=
=?utf-8?B?Q2ZlS1ZSb0NwaWtOMUdTc1dzNlV6VnA5N3Frc0puUFdob2h3Yi9lU2xlR3d2?=
=?utf-8?B?MHdCdVlZNlhnTjlzWGlGR2ZiNjlpRGJqemdVOUdRQzk3YzdUb0QrdWtxcERp?=
=?utf-8?B?SWlhNnBodHcyaEFYMEp6RnJxRlV5MzZLT2pSZVMrTUhoUkNoMUtja2VSYW5l?=
=?utf-8?B?b1l4WjB4dGh0UFhhb1RvNVArV21rcGo1ZCtLSnJFdndSaEpYNXZQd3BqRFFQ?=
=?utf-8?B?M3hYSkYrYnZ1VHZ0bWRvMlF3NkQ3azZEUWFPMURWTC82VGxZZ2VnY285bWl1?=
=?utf-8?B?RVBZb3ZXV2t0REpCVVovWWJCTGU2c3hNbFY1eHpkVyt3NDMzV3UycTE0QVY1?=
=?utf-8?B?ZDk4dVlvdTNEZzdrdnZKbndCS0E5L0VLQjVMdXlZUVlJRi9hOGlWSnlhS3lp?=
=?utf-8?B?L1NCQ3dXalN2NGxHQkhldWczblhBV3dwYUJyVUxTdUVWY2RDWStjU2Uya1Jt?=
=?utf-8?B?L0Z5NTdDc1ZPaTZBdnNKa2Q4THZySm5zSTc0N3M4TGNGaEFIK3dLckdmZ1A1?=
=?utf-8?B?d2NIYVRwbjE4WkU5NS8ySVU2NnlqQTlQSEJxZ0FtYTB2YXpsa09JVllwZHNu?=
=?utf-8?B?cFZad2c0cDI4M0tCWW5adHVQN3pTc0tiZ3NSZ3g0ejV0R1lJR1kvWFFzUlpm?=
=?utf-8?B?ZDNab1ZhTXp1a2o1Ym1abHdxODA5d2E3RDRDRXdNOGR5OU41YlV6SzBQUHNK?=
=?utf-8?B?L1RvajNsZnRIMjRhNmM3U0NMSDBlelRkK3pZSGhlY09GSFhaZ1JEa3BNWllC?=
=?utf-8?B?OHEvc0hickNnL1cxVitnQTJEMkdGUDdic1g3R2xqWHhpNmoxdjZoekpYREdM?=
=?utf-8?B?K0F0ODJzRmdxNTUyejUvN1VMdGhydGlIMzBSbVhtOWhCalg4Mm1IN2pEMUpE?=
=?utf-8?B?OWt2TFd5dDAwTGd5NWRaOW5GeHNieGdoVDBYUmZucm10QWg3VGRnY2VjTDV4?=
=?utf-8?B?QStBN0NBWVFmK2JvTElLcGR4ODBGb0krSkVVSVV0OU1ldVQ2eGx3VFZ6cW83?=
=?utf-8?B?VjdhVEJ6WHFpY1NLdlNveFhGQVM2aVFNQkR4cXdVNFhkbW5FUFhEaC9qelp4?=
=?utf-8?B?OEE0VWhvWUlHSmg5MGljdlBuVloremlUUXhhMlI0YWRTMENpdVhjQlRwc2VP?=
=?utf-8?B?czFNRXNWcWNSaVV5dmlkSGdXZm5wbXJrbXpqUW1DOGRVeldWbUpabVJUTXBw?=
=?utf-8?B?Q0FwKzV6aHhPMnZqTzdpMnlZOGlHL3NWTVJxYSsrQlQvM08zd0czMDNqUVRG?=
=?utf-8?B?d3RTTFA3eXdCOWR0QktOdmRydnpUREtJK01vcUxmNWtZdkd0WStPV2I2REV3?=
=?utf-8?B?VE5HOW1rNzJyb1hiaXhMRzZhS3FGU2lheEoySlhESGsveDQvdHVvc1lSVUgw?=
=?utf-8?B?cUFza0xIcEtBZGJ3Q0dsVGpxbUh0N3RFTlZTeDFhazA3SDJaSno1Z3M4UjRp?=
=?utf-8?B?bDFCd0tjU3hVLzlBeTZxMUE0cDlURjg5clMwYmN0NnlsMDMwR29kZDVLcjBj?=
=?utf-8?B?WVFmVTlRSDBRaGlDYjI3a01pQ2t3OTdGaWx5OGVyZUg0VU1lZ201K1BST2dH?=
=?utf-8?B?KzJWaStjZVdhdENZRm16dXhaTTc5dTFaeXp6dWtScWVRV2k3bGFSSlRWUHJn?=
=?utf-8?B?UStPL1Myb1c4MWRPWnhNRmxGbXg0SVRZSEZGeUNrSWlqb09heWd1azVaaEJj?=
=?utf-8?B?ZVF5SndXRkhoNmtXSUtTTHg0MFZjTGVRUWtBaTlsS1lUa2NhVkFpT2h4amty?=
=?utf-8?B?YzFuWEhuMWRYZDBISWt1RXZNbW5iY2ZmN0FReVdSc3dqVWV4a3d4eXd6NHNj?=
=?utf-8?B?UGpreFk5SVlhaFhDNS85cWlYa1V0MlU1T1BmU1pCWnk5M0ZzenJLaHpoMkM3?=
=?utf-8?B?aVVGdXhCRjI0K29TR3R6ZzNhVWV5NXNsaHdzYWVGb2cyTUw2N3FtWk4xMXZl?=
=?utf-8?B?S2NuMEkrSE1rT0RiQTZ4Q1Q2SVl3dFhQa1ZmNnVaWFB2M0d5dnlhYythTXZD?=
=?utf-8?B?NS9ZeXp4OHE0cVB4bTBwYmhvbGFKeVhWdWlRelhBblp2cjc5M25VMFpKYmdl?=
=?utf-8?B?NTlLbEJPZzY5Ui9ZUjdIYURRL2lkRkY2WHZhWktMSHBqNHpOVW13Ukp6UXJx?=
=?utf-8?Q?LCy58lA1CKY4NH7+ly4ZuCmPo7IReFpe0vSXZeGxY1W/?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: ba972b80-f746-423b-0375-08dda0b8819f
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:46.8622
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: wH53hJVJmH5gHgZjcsMVOCpeKw0YWdTihtcjz9tMPLCOlaS+gI0X1C8YWkk6uPkxzCIcs5E+wIU1ZtgalbrCGw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

The Borrow trait has multiple uses, one of them being to store either an
owned value or a reference to it inside a generic container. This series
adds these implementations for `Box`, `Arc`, `Vec`, and `CString`. I
came across the need for this while experimenting with the scatterlist
abstraction series [1].

This series provides just the `Borrow` and `BorrowMut` implementations,
but another common use of `Borrow` in the standard library is to use the
borrowed type for key lookups in collections. For this to work, a few
consistency traits (`Eq`, `Hash`, and `Ord`) need to be implemented. I
am not sure whether we want this on kernel types as well, but please let
me know if we do and I will add them in the next revision.

[1] https://lore.kernel.org/rust-for-linux/DA9JTYA0EQU8.26M0ZX80FOBWY@xxxxxxxxxx/

Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
---
Alexandre Courbot (4):
rust: alloc: implement `Borrow` and `BorrowMut` for `Vec`
rust: alloc: implement `Borrow` and `BorrowMut` for `Arc` types
rust: alloc: implement `Borrow` and `BorrowMut` for `KBox`
rust: alloc: implement `Borrow` and `BorrowMut` for `CString`

rust/kernel/alloc/kbox.rs | 21 +++++++++++++++++++++
rust/kernel/alloc/kvec.rs | 19 +++++++++++++++++++
rust/kernel/str.rs | 13 +++++++++++++
rust/kernel/sync/arc.rs | 21 ++++++++++++++++++++-
4 files changed, 73 insertions(+), 1 deletion(-)
---
base-commit: 7a17bbc1d952057898cb0739e60665908fbb8c72
change-id: 20250531-borrow_impls-8dfef3fcee93

Best regards,
--
Alexandre Courbot <acourbot@xxxxxxxxxx>



Return-Path: <linux-kernel+bounces-669288-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id D5F6E41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:01:10 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id E584D17AC57
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:01:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 8A4857DA93;
Sun, 1 Jun 2025 03:00:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="tuSv3QSq"
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2065.outbound.protection.outlook.com [40.107.243.65])
(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 13A3F14AA9;
Sun, 1 Jun 2025 03:00:54 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.65
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746855; cv=fail; b=hznrfI9ZvB0dz+h3kQEnp7USZATsIp80beykRZmv04G2bu0QOXw2mROOKtyiQZ8kb3VBkWfqN7YYDDmwDrKS7XI3OiSNoLf0HGRUavc1BHl3Mw7of5jKhIUSsAKL4e1B4SJLbTu5Llg3e3XrPgQGeWQMMX2BfzWR8MFKj8OHDAg=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746855; c=relaxed/simple;
bh=D3feTtNX2aQLXNsK6GJ9iOSMvpMkPZ+h+BsteP9ODk4=;
h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:
To:Cc:MIME-Version; b=Dvc3MeY8f3ve5X5GoIAhdlldI7Z+JAWr9ZWXwhHXbSSrI8ryR3u2uz+6K69fISMxlnCY1pRzv60u2b0jxFWWez3zascEaAs0j+vj53WPmJn7KVP3mIWfdtsO3TnfkERk0NUmhHObnfZZ69MGkEaE7MW2XAQS5u4cBfwWuI8f/Fs=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=tuSv3QSq; arc=fail smtp.client-ip=40.107.243.65
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=cv/x6WY3BBQB2QZCnm99kWx5roO91dhwXt9B+3WDZPJZQhaXfLkL6XJ4ObrQB9lniGTNHPRa+RgG2U+DrGvHRhU+gYecn65kw3u/hkr0hy2RpgenepOu3O3rTTIUmd01aN3iwyLM2JveKlu5jKgUs1yRFw06nqpKB7c2UHbVrm6abdC1ePLtfSVBu4ZK2LH/cQSC1462ZsDMs0tWU9pHusr5iFsDDnZYPlRuFfYTsv2bnnfN+qgnH/gb9KrVp4zBxtn3PP6gSbyKVXunc4TTG8zaqiDaVJ2P5HfqEaXhpA9UM1EYr7cCHpmzqA8FYnCcZ53kuCNE8cfqgJWiQgAwIg==
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=y/VT6X7nU7Xyf9HpjnUc2WBigfvcuKQnnKDc+zU0XNA=;
b=JdWxEQJRK/C8fygrFNArof/ul2uu+WvLK98+7buCp4C+hL2Xh4FLIc0izZJDpqr+dsJwrmnJ9ghTeeEA1ELwbEsUMTJt3PsBFksImw2JlX6pvu2RQqquMmr63tDF5ZtwoqCO5KeFwu8OzcUHOc//KwSDdntBy1rPfBLwgWVayzGD3niwUo7sNwxuoeYddQFqCkfVCO01BKKN6+PIv0zYZj1OEK5C/mPjq6FPLFFSnDZ7uEIi0l7/Z4yqACnYaR4JYNH1rJREeZIqqNdW+AIS3JVfDT5U10DTLOl/Ln/sig4tCFWquqy/AUxMv5RV/dna6mrI+wpyacWN1bNrRliTVg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=y/VT6X7nU7Xyf9HpjnUc2WBigfvcuKQnnKDc+zU0XNA=;
b=tuSv3QSq3uFABK6kFenwgTRXOptTV8Kic3emRKjkEWgVWlvd2tmAdZ1TZJU60YlnL4tvBrxIqSuhLX10cZ0rM63r0YoH6B+lrefBdzfPfYuy6HtwMH/0K9T3ZvOIeqIQPeb38vZHi/3coWotuiuu4YWPrdn/L80xTVT76e39HNM6X71dFBtXAZNrAFK6CTocjZcWzV4YogkcjZ62ZRQQTctuRjr0fNcEVlUDNm+e2OVQKWf7y8oNwdfRbWWG3lFXBRI0iazRBIcm21+WFldz6lXe9geVXmcw0hck+ightS+BW0CE4ly4Bogm4Bie3zi6bfRD00h3HpFz0dgfj8eQLg==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun
2025 03:00:50 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025
03:00:50 +0000
From: Alexandre Courbot <acourbot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 12:00:39 +0900
Subject: [PATCH 1/4] rust: alloc: implement `Borrow` and `BorrowMut` for
`Vec`
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250601-borrow_impls-v1-1-e1caeb428db4@xxxxxxxxxx>
References: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
To: Danilo Krummrich <dakr@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <lossin@xxxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>
Cc: rust-for-linux@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Alexandre Courbot <acourbot@xxxxxxxxxx>
X-Mailer: b4 0.14.2
X-ClientProxiedBy: TYBP286CA0004.JPNP286.PROD.OUTLOOK.COM
(2603:1096:404:ce::16) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_
X-MS-Office365-Filtering-Correlation-Id: 90907616-235e-44b1-413b-08dda0b88410
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?Z0hXOVJLTEN6MTk1anNBbmcwUnp5d1RSZkgzTkxFOG40eUFSYzVFZGE3ejJy?=
=?utf-8?B?OWRqNVR5VzBLVGZCd2NTZWJMZmlnNVpJaW9lMHBwVFRkYUpEY3loOU5STENh?=
=?utf-8?B?YnE0OEJSUFNGTkJWTzBRdHRHYlh0c2NNYmpzZFpiaEtpeUJiQjB0R3RVRUw5?=
=?utf-8?B?N2ZnSGlob3pDUHprN3lHaitTNmwyeCtPRnc5TitmVmo1UDBnTG5WbXJ2WFVJ?=
=?utf-8?B?T3dWTEp6TDBLallaN0JKcXU2dmY4MGN5Y1FXRFBlVUc5c3U1dTZ3aFBQTWgv?=
=?utf-8?B?RDNJbXo0WVJ0QUJiVGc4NXdmZVp3dlRVczNVRVYvMmdnZEszdUNWcnM0WjBQ?=
=?utf-8?B?T0JQOVBtK2w4Y25FdDVVaFZXUm1OZGZWTjFyNUtMcGMrVmZsbEd2S0ZOVitH?=
=?utf-8?B?a2lnZyttcWtzc0ExeEhEaGlpNVFYamwwOFdlelQxeXVaRXUxdjZWdWx6RGgz?=
=?utf-8?B?elZOZXRQTDNLK1BvV1VLNmZ4bnJPZ0U3WXByU1hPVkJBODI4K3BQSDdVdFFt?=
=?utf-8?B?MVlvak5OT2M5bm5Ed09wRkFsbHNoRjBsYWs2Z25iaWY4SWtrd2lTTjQ3UFYy?=
=?utf-8?B?blFTbEZidDU0VTZkakpvcFV0OVp6Mld3Y1pQbVVDY3N5blduVDFScHRTNk9m?=
=?utf-8?B?Q1BnYmxrdmx4OVBLcFBSZktGTHhyeVRJVTBiRzMvbkdtVkloV0xMcE96VmQ3?=
=?utf-8?B?N2FoUWc5L2cvTjRzTnRnWmVDQmNMUzdqRy9rOGg5UUc0dWJib2tQRDBuUE1G?=
=?utf-8?B?M01qV0ZKYjZTemtSckV2bjRYZkVSNmJ6RVE5SHA2NXRDNDdvYmtrK1pTYlZj?=
=?utf-8?B?bUg3KzJQMVorNDNEZnczcnFwV0MrV3VXcXMwTzQxeXlhRjAyUXhhUThMQk1x?=
=?utf-8?B?NGhTSkYzNlNiRC9hVjJSc0kzMDVKNlo1RWlKRWUyV1N4eGxxWUM0cEtnSzBD?=
=?utf-8?B?SWYwVnZhVWpLY0h4SUhkTTc4UThiWnNqMGt1ajJmZjRhUGJscFVIMGRuTWtw?=
=?utf-8?B?cStoZ2IzYUdTOXB5aW1oV3ZvdzVWdVlEQXluUGd1cmhnbUtvdTUzQ2VKOXpI?=
=?utf-8?B?Umt6aUhZNVJlT1VBcmREUC9tWWVPWUJvSEJ1ekpVNjg4QTZXZlhyMVcwWWE3?=
=?utf-8?B?b2hiaGM0VXYzZW0relhwa3BxMXovTVVuZ3dkbFFHWUxRRnRPbG1mbFR4VVg0?=
=?utf-8?B?d29nRjJ2T2IyWkg0UjBiQmRFRVp6RVlldkpuMGRzMm9nekJFWlBZNE9xMkhU?=
=?utf-8?B?bkc1ZnZDQ0tIZWl4OE94QzRXN0tjV3R4OThOTC96SWJEcGhsSFNGc3lETnhv?=
=?utf-8?B?Uzh1alNyMTdkdlFQbU56RFNiL1B5MGZZbGg5MTdTRUpsYzhjUzlIMTNWOEtF?=
=?utf-8?B?YXFlSlFCRmQ4SEltWTY4M3hFa2phV29VekxiTUNpbVRrRmRlTUJaVFdtUzVI?=
=?utf-8?B?S1pMSEFJM2dWeWs3UFR1VnFocFNwekNVR0dsd3FtVWdYeDRQR3BKTjZ4MlhF?=
=?utf-8?B?VGs0aThWZ3hlY25SSk9MRG11UGp4R2hDOFJFSi9YM250TG1YdzVpMWRrU3V3?=
=?utf-8?B?U24wdjA2VkovTHlzVVIrZnBsU0F2eEpDMENwOVN6NGgrVmFUZURBUXpQeUVE?=
=?utf-8?B?MjlNbWVjeEp5eW5YOGF4RE5KZTVEZEhSS1F2MW01ZUdOQjNHWG5UZjRPQjlq?=
=?utf-8?B?MEJ0NGhoYnZnRTdCOEpsd3pUZmI5L3A1K2VwVWRFNTlVUWxjWUNQRjJ1VlZH?=
=?utf-8?B?U1JjWXFqTFU0bG50bzhKRWtGZDZXb2VjeWtpNFlMeFJyOWV0YTNCL0kySGdB?=
=?utf-8?B?QklzNE43YjllR3J6anZtbWN1dWFyTGM5VDBVaU9EVWd1QWpBb2l5UzFsanlK?=
=?utf-8?B?N0tHdjAxdzVkSFF4Zm5YQ2FQWkg0OXRhTmtzN2krV3h3SjZtV0ozejUxb0FP?=
=?utf-8?B?VVlWVkNkdmJyMkJiNkhXQ0xZRmt1Z2NZL2dnYy95aERPa203SWNvRjBneWZG?=
=?utf-8?B?Z3k2TUxKdFpnPT0=?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?SXZadDZjYnZBTGFZVUczSTN2WTh4L3dqTXRUazlrY25sbzZxeitYMUlhWnNU?=
=?utf-8?B?aWxBWmJCcTRRZW9kQkNiQnpuZWFwcm8rcTl6NnhOV0VncHZlaUtaMFZrNEdP?=
=?utf-8?B?amNJOFBBdHVoVHpQb3V0OU1pY25oMjRSUnA3alpOa09sQmpTM3cvdlluOUJH?=
=?utf-8?B?eU9FRFdyMTBWSXV0a1E0RUtDQ01PVGhVcmVhYnpYcTE2ZHV2N2plRjRjcWJ2?=
=?utf-8?B?S0pCV04rZE9tQlpvcjhwNGRZejZSdjE0K21uREpEZFVWQTM0dVNjWnRnZGY4?=
=?utf-8?B?ZHVMMVUyYXk3OVNFTXBObUdsSHNxUjVEcGtEWWQrWUxveHd0WFdNZ2YydnZS?=
=?utf-8?B?TVBvRHhBTnlkMzF3YzJjYjVrY0Raa3FOVWNnQ2FZNzRTdXBBWkZ2VDNaa1ov?=
=?utf-8?B?dGdudHFNMStEaWNpNVBnSXRRZDVSSzNpbUVBOEw5UmRzdTRSblZOYWNmV01Y?=
=?utf-8?B?VXBaV3V6OXFFSkxWZXhsRnJYY0p0dDhGTEJqZy9wcFdtdG9qanpNVVVOdGR3?=
=?utf-8?B?cFJNMEZtVVdxL2cycy9LQWpNZm51bkhWYXdReVU3M2FMRnZWUzFQTlhIYmhi?=
=?utf-8?B?bjJ2cGtidHVGeUV1UjhVQWxQSVNIL1U4bFNkVGczTDR0UWMybkl5QVhueStV?=
=?utf-8?B?Z2h1Q0VEMktWMDFUYkl3SStQTXNuSXcxS0p5KzZaYVpZWGEzVnFWT1BtSzRr?=
=?utf-8?B?T2UwaU5SK2hPSUxqUEVQK1NyNmlobWJycUYzTzluWDNMNTlyM3ZpT0VyZEVK?=
=?utf-8?B?UVNKQ055Z1M1TWF1cG9DTC9maENTenlVc1llellBUC9OMzZZbm9wcEQ5MGdK?=
=?utf-8?B?a0l5bGRYK3MvZUhZdWs4UDFmV2pCZENMajNjcUdpT0VQSWZoQ0NKNFZEMUZj?=
=?utf-8?B?cDVDMnEwSVo5TldaNFk2aGpQbTJYeVdVNmM4UFhQbkVaWDQ0ajRzRlo2RXdN?=
=?utf-8?B?WmcxQ1krSDVtV3Nkb3k0V3I2Mld4QXUvMzZUYXZrWXgxTGNRb1RvbHYxZi9s?=
=?utf-8?B?M29lVkxjam5xdkJWTjBNeit2TE1KRnE1SDZHV0N3OWZPd0JHUnVwTWlNd09v?=
=?utf-8?B?d3pGRVhLbTdoODI4N2FDanBsYTdJUC9EWDV3RXZEbVBlWXJXaHVTMEMwcXYw?=
=?utf-8?B?WjdYM2tyNms3SzZQc1c0UWdHamVMNWJwV09nam5IYWlCVHAycnVtNjRKUERW?=
=?utf-8?B?cDYzaG11M1BCei92QVRzbVFnY05ES3hQVzY0Y1I1V1dEMTM5NUNoT1FYNUdu?=
=?utf-8?B?T09GQ3I0OU1xeTBHZk01WTQzS1EwMjVYY2Q5S1JsdXNzbDUweUdLMG1pRkN5?=
=?utf-8?B?TjI3ell4N2dWbXl0RjRURWExREc1Um9vNmZ5MkJXdlhWcTVLNnUxNVYxeFpO?=
=?utf-8?B?bVJVK2IrMTE0TDgrQnpDYlgzaDQzYVkwZGNGcTVoOWtxaVJ2QUNIZFpWU21i?=
=?utf-8?B?QzNvNDVaWCtjdjVjeWZrb21GNlg4Y2lYaFMweis3MVpXSEVzaVhQdU0xWFd5?=
=?utf-8?B?STIxZFB4OW1iZFJReUgxZStLUUd5N25lMDVkM0kyQmgxMjNWbVljN3JDWGNL?=
=?utf-8?B?d0ZjeDFOT0tyUUU2ckZYM2svb2lRUGhvUlQ3Z0s4di9PbUJCQlE2anFkYXNs?=
=?utf-8?B?RXk1T3p4QmwzbHljd2pvWTI0bTdXQ1FCYUY5bTJkTWs4aDJjTkhzU3p5eDhQ?=
=?utf-8?B?cUg2d2d5dlVxamRTYTZha1QyWHNvZDZDU1VJMjJYcG1tUVVaVDhzbmZ4SW5r?=
=?utf-8?B?NDNZQXI5YkNqU1pRRlVtZnhLZkZzQkpBNS9ZdVBsWVZIWDI0K21jU2RDbHF5?=
=?utf-8?B?ZmdmYjZuVWZPemwvOWZ1ZmV5cHFnWjhnSDF1LzgxMExDSmpKNFBnNng4U0sy?=
=?utf-8?B?S1dRNFpZdnlrdkFoYmZNUC9IUHNDWWZWeDBJUGFHYS82bnJ0VnpJWWwyN1Vl?=
=?utf-8?B?Z0FDM09kSXZXNVZybExvR1NlY3B3V2ROcFJIMjdlTzNTaFNyMk5VbmVrWWxX?=
=?utf-8?B?c1IxdGk4aUdINTNHc01udVQ3bWMzOWFxRmV2bCtvK3JUemFiK21UZDhZa2pn?=
=?utf-8?B?bThpMG1jSFhlYUNiZ3pCUWlORDMvZ29YUm5ZaWhDbHE0NDhwUVJWTmVTU0dm?=
=?utf-8?B?d3ZIazVJMDQ2MXBnVXlVKzJmakNKMTZWeVcwVlo0Z2UrYm0vcDgyUkhIRjA0?=
=?utf-8?Q?+cR/u4yxMKSRr70nws+hBr57Edu44qCe6pdr7AZAtXqM?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 90907616-235e-44b1-413b-08dda0b88410
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:50.8865
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 37LYVRfdrC6X9Ip4zNAzohGgXHf9XJ5qfxrsLeBpFFbcotJH9jGwGqzTbys1/tsN9f3H+WHMkmAOZh+BIK0CcQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Implement these two common traits, which allow generic types to store
either an owned value or a reference to it.

The implementation leverages `as_slice` and `as_mut_slice`.

Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
---
rust/kernel/alloc/kvec.rs | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)

diff --git a/rust/kernel/alloc/kvec.rs b/rust/kernel/alloc/kvec.rs
index 1a0dd852a468ccda6ea1b521bc1e7dbc8d7fc79c..45f813f69fe0f338a83c577752dd3ba1b3b2003f 100644
--- a/rust/kernel/alloc/kvec.rs
+++ b/rust/kernel/alloc/kvec.rs
@@ -8,6 +8,7 @@
AllocError, Allocator, Box, Flags,
};
use core::{
+ borrow::{Borrow, BorrowMut},
fmt,
marker::PhantomData,
mem::{ManuallyDrop, MaybeUninit},
@@ -890,6 +891,24 @@ fn deref_mut(&mut self) -> &mut [T] {
}
}

+impl<T, A> Borrow<[T]> for Vec<T, A>
+where
+ A: Allocator,
+{
+ fn borrow(&self) -> &[T] {
+ self.as_slice()
+ }
+}
+
+impl<T, A> BorrowMut<[T]> for Vec<T, A>
+where
+ A: Allocator,
+{
+ fn borrow_mut(&mut self) -> &mut [T] {
+ self.as_mut_slice()
+ }
+}
+
impl<T: Eq, A> Eq for Vec<T, A> where A: Allocator {}

impl<T, I: SliceIndex<[T]>, A> Index<I> for Vec<T, A>

--
2.49.0



Return-Path: <linux-kernel+bounces-669289-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 0D46141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:01:28 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id 8FF533B7B37
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:01:06 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 6EB5413D539;
Sun, 1 Jun 2025 03:00:59 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="QN4/01wk"
Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2059.outbound.protection.outlook.com [40.107.243.59])
(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 A7E367E0E4;
Sun, 1 Jun 2025 03:00:56 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.243.59
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746858; cv=fail; b=m30gkiP3Mo7aqfFznVffZ74aE5huNTmyb7cdEOrl9sZ58C9HOdBxqLiHxIMmVwbmSmnSLO76SkYdbI5bGmkkAyZQqbWKJXz4PeW44vxlCytUb6vJGw2XQcUOg/Yl55KggvkCAFgp52gMc0ulHgRmXyEucD0F+2fkQr4ZQs16MTg=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746858; c=relaxed/simple;
bh=eaXK5mnzwWdzW9OrI1hUQQmzsojc+QI/JkgRudbtKEU=;
h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:
To:Cc:MIME-Version; b=oTcFu4JvA6jgdv5kHb6BpUAQXWkOIpBpLwDOjko7T7tLSSoo95tA8aETzM3sXR6vw46VGaqEDwB2vacnsPgIRsdVNBeLIemAY/dvzPIwbJqqd827YrhlamenWjKYf/U9H1zK9BzrmXQKY5qw7Y/oSE2/VGOF1gWAvi/L4SJa98c=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=QN4/01wk; arc=fail smtp.client-ip=40.107.243.59
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=TKP4LioyAAg80S+0YC0QrcXEjWewOo7MrGU8y6ADhwcJufx2y0vkSsYuMX3IsRqKF56qO2p3fYuIAHD4f6wIkHKGR6QVPzntvDHq4PVtUKkFK2vv9b4kF7HmLNlw9P5GIYs6sGZCdYFGud2jb83jt0CXZ1yyQQqgn5vzGFmOn6PPaAKxG8umctDrhm+x+yZ4+0keIVwJoiqdCiHdXqGOlFuFmJSJ1QdnjAyWM5l8X5PpPzzKR75/0eY390fSt+LJzaH12OfItBGONkW/3n5ZErAeSmG7OmerLIpi7MRlT9MhQf9MbxNcZNBSaXBEjV/32unj4Buq9Aik9wBAUquyoA==
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=DEYW1E/oawWhPioCdxXtIhrmaOIB+urdAyvEsD35Wv4=;
b=lAZ55QBLJPyjK+SskVaKUk44MkRSHoWHx3zUcMGg6OFfxPArcUezVW5WG2XT4HpZIq3k3eG/RRQR0d9boUSvi0/eiz0EbOWNECntrdCTrewH0wXDA7d+VcdiaAyCdeqMKA86kx5bMJ9g0/9YYs3TjCEv/2b0ZCAlbi/1IjdNCqZGJsdCqaROl/HZ7yPKFYNTWMxtcLrGeDTU3tgalcoSmBDMCA34shCbH+6Kl97ZVqqrilqWFFA3lNfNJ4+0k0oyxMRZrleyL2hK6wdSdFO0dNDiMvW181fxs3CPl0fN6q5vgqcR8UEquSZM6a/VxDvUh2GgbVMqZ2PR4mtXSK0VlA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=DEYW1E/oawWhPioCdxXtIhrmaOIB+urdAyvEsD35Wv4=;
b=QN4/01wkpM7v4anNP84ivMRwuQzUJA8mflhQmLx/io7zeA9GAb9J1uBoscya2aJ6BDn5tn8vNIlma0jpjDSnsb/REZ9j5mZVc2JlWZ76ZJnC4B/omdwjmQFRSDIfJhIRFWGdfXOANZ8StC76U/vCEKmEeOEbHyz2Wx4NKO3DgVhvR+5F8ToM+h3YRaRzfeKFwr56qNwW2PErO/upSG//CP3jgl7WlUTK88zlvRAp5QOnyaLfHx91SVKYmjhjFaqgCh0AIyLi8yXB+qbQfS+SzTREWgrmU/4PdgHFYQiLvJMIPpDhccs2vU0v3UfYL5X7IDFwXFaD7xn2SEXBirAi4w==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun
2025 03:00:54 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025
03:00:54 +0000
From: Alexandre Courbot <acourbot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 12:00:40 +0900
Subject: [PATCH 2/4] rust: alloc: implement `Borrow` and `BorrowMut` for
`Arc` types
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250601-borrow_impls-v1-2-e1caeb428db4@xxxxxxxxxx>
References: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
To: Danilo Krummrich <dakr@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <lossin@xxxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>
Cc: rust-for-linux@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Alexandre Courbot <acourbot@xxxxxxxxxx>
X-Mailer: b4 0.14.2
X-ClientProxiedBy: TYAPR01CA0009.jpnprd01.prod.outlook.com (2603:1096:404::21)
To CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_
X-MS-Office365-Filtering-Correlation-Id: 3c5c3c1c-c4e0-4c4c-4406-08dda0b8864d
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?Q09WcXpSR2FMQkc0ay9keTRCcFZUZzFYMXByN2JjSnRWR2Z3QmgwWC9rMnpI?=
=?utf-8?B?eUhLVUxXaW0wWWJkd2dXdURNN0FobUc4QXJwVTZuT01rc08zZFNNZmVNS3Vz?=
=?utf-8?B?Rm1TK1JHSDlxaUdSc3F5ZjVVbWZhM2kxUG1weTV6MlhNd3VmdVNUSGRNMlRS?=
=?utf-8?B?clIyVDZBelB5Qkl6Y25Pd2tLV1YzN3p4anh3Wmk1aHMrUS9SZHdVUThDSU52?=
=?utf-8?B?OFdxNmVwT1IrcmZGSTBmMURQRm03c3hLajk4TWYzbThtODZkR3pVbnROUXpi?=
=?utf-8?B?N1VLRmpJMHZCNTdzMTl1aEhuNlluQndKV1JtcHg5UDRENmdpSTNTQWVEUXNr?=
=?utf-8?B?bzhlZFZyWG5VYmMxQ3FIWjcwTmd6ZWorOE1Ic0wzUmpBRmkwM2pGYTNNYVZt?=
=?utf-8?B?WE42N2xGKzRvMjI3cjlrRUkzbkRXRWtyRDREeXV6bGNCWWtoV1lUd0kvVGxk?=
=?utf-8?B?NXNWSHBybUpHb3czWGU2RjMvUGxPNHZpZnBNZ0t5eHVHSWFFYVRZaTE4R050?=
=?utf-8?B?aGFrWkx6RXFCOHd4Nmc4RS9YWlBxM0lWUXVYL0w3R3kwREZuOEpMUHZ5cDhh?=
=?utf-8?B?WWhkR0hPVTRjRS9yK1FtTTliQkMvWUNFNHN4UjVabjJnVEdJM2t2N1locjVC?=
=?utf-8?B?VjYveXpWaG5UUHAzbllHelVqdkozbC9jbmZlZ0RRbyt0ek4rNlhyN3dYVkRI?=
=?utf-8?B?Zlh6dUJKZEwxZVFwdGVwSnBaSHNaV2dEMHlzY2NSTk5DSCswLzhQaEVqUm5a?=
=?utf-8?B?OW0xcEFxNklRWTV4ZGdyRTNOekljUThBMm1Tb1BhUGxTVVZTL2JHS0V1N0xw?=
=?utf-8?B?djNxUUhWaUFUdXZPV05uT3FKRXJ0ZHFQRllZMFU2N21jNWtGL0lsUncrZG1L?=
=?utf-8?B?bWpENjJVQmJTMjNrQjNCZXBvVVRvQ0RWYUQxYk5QZ1orSmxSaWlEd0FkbXlQ?=
=?utf-8?B?b1ovWDhBTk44QkM3R0tjZGhVMjNLaDVoWnp6dFFYMFhrTzVqcDdUNlh0NWlr?=
=?utf-8?B?d2VXSlNHRkNzYnk2UklPOGtsV3VudlZ1bzY3ZmhkWWVwd2dpTCszczZnSElB?=
=?utf-8?B?azhLemdmcGl6TEQ5NDkwbk8wZ1YrZzNwZDBZV2cvTFozZEZQMFA3K1VQZmlM?=
=?utf-8?B?MTVaSWhMc2NGTWdWY0VLdkFsVnJ0MkgzUXVLeDA1V2xRQ3hyd2tYd1I0SFUr?=
=?utf-8?B?Szcza0hpYzY2SjZ5dEhHWVB3eDVVaFJxSm9URWpGaUFCbERUWXdNMXZhR2FR?=
=?utf-8?B?cThpWTRVYlBlWUlUUE1MSGUzemQxRVZQeWhvN2dYZ0ZRTFZNemVyNFE3MnpS?=
=?utf-8?B?NnpQeGxwakhqVVM5WFBITEVnM2NVWWpkWjRSOVJ5dG52Mnl5SWh3Z3dmK3BU?=
=?utf-8?B?ZGxBVWNnWnNiOVZNM1Z2SERxQU9yNEtEVDF6UHhlZjZWT0paQUpBYlZYb3gr?=
=?utf-8?B?bjhaajE1S1N3RHl4YTRVV3F5SWs0VDdlRGJsbHVXWWlpbm4wNWxET2VCQm9J?=
=?utf-8?B?UlpGdDJLUnp6bFcrQmtyanRMakxKOG9hcENMbUFBRTBvbzFKampybHUrMW5U?=
=?utf-8?B?clNpV3JhQzVhOG9wM2dhUk13WlV0YTdSMExCZ0FSY0pIZ3ZVSm1UcjFiWEo4?=
=?utf-8?B?YzlIQ1h5UlFzUGtua3piSEJ3Z1VFNktFdkNaaW4waEwvWUpKSHlQYmVtb2I1?=
=?utf-8?B?T1hWa3o3ZFNIMXFHcTZ1UmdxQ2FsNWFpUkVIcFMrUFBLOG9JY2tZYTF1d0p4?=
=?utf-8?B?UEZBcExBWEpDdjdiWEtaMXFOTjE2QnJVcTRRazdoaUl5UzAzSG1ya29VbnJX?=
=?utf-8?B?Z0M0b3hLRkZGRnY4c1R5aFMvZGt1V1NMbjMrRW9HL2xmOGp3NzVZa01kWlNz?=
=?utf-8?B?VHlpcTEyVWJzUUlxSVFZK0FKWVJpNFZkaDRxRUFnSjV4R3l2U2Fyb00zcUU0?=
=?utf-8?B?SzZ1Y3hOeTVxNTBaem1qU0FubXJXeVVEd1ZWang1OW9rdTQyQm9XV3lpWU9F?=
=?utf-8?B?NmtjcDhvQTdBPT0=?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?SWJheThBN0RLYlhud0psRFoxQUVsL0tqU2N6cGJwUkZRV2pzdjdlUTE0N2dX?=
=?utf-8?B?QVlnekdWNHVRbmdMQThqT3FrKzNycHpDUmdyQXVOd3laTTgxQ2xQNzRHVSto?=
=?utf-8?B?cGxLNnpGOTZsbmQ5ZXVyUzZmdjVwUnIwMHNVUE1lcldkQlptMW5DNjl4Q2Q4?=
=?utf-8?B?M0dFUHVJMnV3RDBhVGhhUjNnR2xNZVZvamNGWVk5SUZmMEc0Q3lzUVl1T3hZ?=
=?utf-8?B?SVgxMExZVmpRNjZyZVI0K2QvRERxMnU5OEVHQkNCeGRjSHdvNVo3cVZZSFdR?=
=?utf-8?B?R3VpbkpJQStSM2FyVDZjNHlKTmdGbmFHV2JsMUoxa1Zoa3FLVzRyWTIxRnRM?=
=?utf-8?B?alVMaGptTmlvY01XMktqR3gycnoyclBneHhTWmJwYlN0c0J6Uzk5d3dNZ3N5?=
=?utf-8?B?bWUxUzRiMGFvbGtrUzNhNHQxSjhXQy9NZVZndzJEelBoS2piWTRVSTNhYlVk?=
=?utf-8?B?eGFLMDF2UDZMNmdnZnF4TUY2d1grSzNlUnVzN1RES255MW9lekYvelJrdFVR?=
=?utf-8?B?RTcvU2ZuY05jUCtrdFgrTCtkajhGRDlmekd1VFczOFRScklZZUhqZVVRMGNt?=
=?utf-8?B?dFhUd1c5bUlxUmlHVFBab3VMajQwWGJiYnRHdUVid1FhbkRJaktoL0Q2T0d3?=
=?utf-8?B?QjY5VTNiaFdiZGRYTmx2bXM3SFJGWlNVa3doTjlaaUI3YnR1VThCdGJZbVcz?=
=?utf-8?B?czhRbDBZb1VLeWtwd09tekYzVzVWZG5qYXliRjBPZzZjTGYyTlRXVThjbDEx?=
=?utf-8?B?d0FmcVN4anBPZzhBem1oZkY0djhacUE0c3RvL29vaVZlZEtzWWhXZjBhWk1O?=
=?utf-8?B?UHVzV2NXaGhKaUFyMUdkb0ZORGVuRWswTmszRHE3ckdRUGo4V3hZb0ttYW0z?=
=?utf-8?B?aXdCY2ZHZmtxRjFnam1jNWxoSzJ0eXE1V0U0NHpqbXVsTG5TaHpmbmpvNWMv?=
=?utf-8?B?eGh6MVczT28rWk5uV0E0UFVRd3IwWG5Cbk82TzZCelRGYWtDb0pBTWVoNHRx?=
=?utf-8?B?MGlMKzE3cFVvZllNYXlUMEtoYWI5QjJ6V3ZTamJnT3JnNHl0RVF0U20wSGFp?=
=?utf-8?B?b2NML20zNC9zRlB3UjYrKytNYmJiZGJIYmluNFJrTUk5VjhzOHk0MGZ5NlNY?=
=?utf-8?B?ZDViblRNUGNYSXgzYStnTVlWN2Z1SDExUTZxSXdQZEtEc3U2NGVMZFJTWVAv?=
=?utf-8?B?OGtrTUNHeEIvY2VERE5NTTZLYlZLUmQ5d3dwOENiMEJlUElpSGRNT3lqN1F4?=
=?utf-8?B?eTJHczhla2FHb2tjSzlEVFdYZWdrWXFVS3oyc0dZM0pKcE9USGJsTGpNMUlu?=
=?utf-8?B?Q2tyd1RhNjBuK1pXTEc4dDVwU0tKRUFMTk91OHhYb2pNTk5IT1Q4OGtQdHor?=
=?utf-8?B?a2xlalRncnNuWHRFSmdHV1J2aUcrcnlXK1ExVi94T3Z5ZS9WZmwrd1NsYlZW?=
=?utf-8?B?S1JQVm1wazVPbFFtVnI3STd4Yy9xMGM1YXNFUDd1NVZ1cEE3WWtQaHlFWVpl?=
=?utf-8?B?emF6RU1xMVJld2M1MmF6OGRFYmRta2JlREN5bnJ1RVJENVIwU0ljQ2FCcFBy?=
=?utf-8?B?Y0JtTnE5REF0NTJPU1lJZHBxNFNvOWxsTEpBeU5TenozRWJMcEluYjlzek85?=
=?utf-8?B?c1c5L3dVS3ZpMzhsSnI3d2ZXS1J2YnRoVno5NHB1aFE5QVFEbEdzdGJNWWtn?=
=?utf-8?B?RHN0bXRwc1RkREpYNHhDZ2Y2cklOVXJLYmV2U0tmN1hLVlE4MHdxVUJrRU50?=
=?utf-8?B?QStsQXVIVnZiN3FHdGw0RkJrZjFKMWszTU5FNXNycUZ3NndOUDlBNGlyZjBw?=
=?utf-8?B?dmhTWXRLQzJZeHpZQ05iNjFQenNJU21PcjM0VFJLQWpQdjdQVUpUVUNjQWxx?=
=?utf-8?B?cjJMYXJ5SnFFZ3RMb0NiTmlwUVVOSHIvaFlNWHVOZW9UYm13TVVvMGhsZTFM?=
=?utf-8?B?MTBwbzNDT3RiVmlrWHN6ZVBzOFhoaFpqditoWmQzaGw1bkw3Qjd0RnJDZXRD?=
=?utf-8?B?bGZVZFJyL1RKMkFHNkhoUEJqVW9SclFoUlBqYXBLL1V2Qkd2aHg5TkFvdmN5?=
=?utf-8?B?UkVSa0kwTHJ6c2grcTFQUUJSeGJFeU1OK3V4ZkRFbGl4eEJNTFduMTh0Q0dD?=
=?utf-8?B?NnY1WmV4SFZMdGw2ZGZocUxBVXZsK29rT0dVMGd2TCtzQUNtZVA1Y3lFcWti?=
=?utf-8?Q?AyCIupmvFTzB1OPlrIPl5Zm+aHYEprGlJO0mviz5rtoK?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 3c5c3c1c-c4e0-4c4c-4406-08dda0b8864d
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:54.5252
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: 4/7UyJrBw7pf8o529a3MHqqA99rj1UUo2pW94S+uJvJ0VTZwNM95o6ost1rPwXrjpaigQ5+AsUR3Ewq8ooiHYw==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Implement these two common traits, which allow generic types to store
either an owned value or a reference to it, leveraging the `Deref`
implementation.

`Arc` can only implement `Borrow`, but `UniqueArc` is able to support
both.

`ForeignOwnable` makes a call to its own `borrow` method which must be
disambiguated.

Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
---
rust/kernel/sync/arc.rs | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)

diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
index c7af0aa48a0a049bfeeba3a81080355f4d381738..40507e8901c349ba5f782457c203ff4cc181dd6c 100644
--- a/rust/kernel/sync/arc.rs
+++ b/rust/kernel/sync/arc.rs
@@ -25,6 +25,7 @@
};
use core::{
alloc::Layout,
+ borrow::{Borrow, BorrowMut},
fmt,
marker::PhantomData,
mem::{ManuallyDrop, MaybeUninit},
@@ -406,7 +407,7 @@ unsafe fn borrow<'a>(ptr: *mut Self::PointedTo) -> ArcBorrow<'a, T> {
unsafe fn borrow_mut<'a>(ptr: *mut Self::PointedTo) -> ArcBorrow<'a, T> {
// SAFETY: The safety requirements for `borrow_mut` are a superset of the safety
// requirements for `borrow`.
- unsafe { Self::borrow(ptr) }
+ unsafe { <Self as ForeignOwnable>::borrow(ptr) }
}
}

@@ -426,6 +427,12 @@ fn as_ref(&self) -> &T {
}
}

+impl<T: ?Sized> Borrow<T> for Arc<T> {
+ fn borrow(&self) -> &T {
+ self.deref()
+ }
+}
+
impl<T: ?Sized> Clone for Arc<T> {
fn clone(&self) -> Self {
// SAFETY: By the type invariant, there is necessarily a reference to the object, so it is
@@ -834,6 +841,18 @@ fn deref_mut(&mut self) -> &mut Self::Target {
}
}

+impl<T: ?Sized> Borrow<T> for UniqueArc<T> {
+ fn borrow(&self) -> &T {
+ self.deref()
+ }
+}
+
+impl<T: ?Sized> BorrowMut<T> for UniqueArc<T> {
+ fn borrow_mut(&mut self) -> &mut T {
+ self.deref_mut()
+ }
+}
+
impl<T: fmt::Display + ?Sized> fmt::Display for UniqueArc<T> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(self.deref(), f)

--
2.49.0



Return-Path: <linux-kernel+bounces-669290-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 16BEF41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:01:44 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3C85817ACC3
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:01:45 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id E5AAA14B08C;
Sun, 1 Jun 2025 03:01:03 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="neDVOIVy"
Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2048.outbound.protection.outlook.com [40.107.237.48])
(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 591BC145329;
Sun, 1 Jun 2025 03:01:01 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.48
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746862; cv=fail; b=Avvvq94DL8vIwkeprpBFaw2EkB+W0GeDj8RE2KczJLTg2YZg48tJ8u6DTkRk0d8jHA8WzsBgjTSYv6B8Zl7tc+NAeWCYNVf5P2Pazj6mEpaTWpe5pH/ztgURxgAsZXTfdwxntQ/asnzh5h9j4/H7+MLCfSgR+aAgUPj+FTK+SZ4=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746862; c=relaxed/simple;
bh=ebcvq3z6t9AuUKzqD5MysyAPT7vVf1/sKy+/t9w/YK4=;
h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:
To:Cc:MIME-Version; b=Ckr80V8VoHrACUSZ6tce95IcltMUn2JjSimDBOjn+2tIwp4Nd2lK7JVV3TejcNYH4XYOQWGa6X0Mzx/JzlLn32qHletNsk+K1Vn0EDhueLSnr0sq5TtmwV6WSMZqZCrUgwYbza96hFpi7qi/s4xOmyDQJboQuK0xb6rJT6+vyAA=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=neDVOIVy; arc=fail smtp.client-ip=40.107.237.48
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=lMOuhOhAdzp5tnckC4y+siU3HPj3go0p8fP6+jrwqANModaaCOxvM20DuYtLK541j4gMmG4ejXtbWJ/sHx9eF57AHEuh3zYMdUIMXxMBNkHRKVWyO7DVN+m+Lznq9nzDbH9pzo8QMhJu1T3q+UOw4CgmucCPUGz1DqrwHn/w/B4MAlJalr1Cdu5A0PVttHbOF8rWs0+p1qLqYHg28ajqa+gdm+AE7RTSd4v578/dZYPWv58xN39MbjRjMCw0crOQs6pySPHoGn1O8AgQCvVoIDKV0+hPS86y/XkooPjODZdpVus/uCj2P/jy67EPSeIfruqYClX5YCw22qE+rW6VUQ==
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=6XKRc3h8Gz7saJKHEi9GRCXRi6s1HSztmuk0QTFKvPo=;
b=niurBEyKwb8hf6dvN1gvn5O1jrdV8jeoOwcMtKl4fE71D6abEBquKs9RHDD4cNT2Nt5P2PhHau1n9f8Z1emn+8ChvMROABofCI4HasZcYlppCNE3vcKcAA0bpW0l9q756LwVSRyrACHSd0lWQ3QLxefq+f8HUinfmlnvkKq15rby5BWRk6PrhV1/A4On2ZV3z8dP7/pR/bGQXurGZi4j8WaxhJGK6d9XqdWyr32Nr3cHpYY7McEdsBd6Hfk/GxQDFlHmvZW5jEjNRa28JEk4yLTNSbPoJvhpagP1HLGLRdTh2ECsZ6A+ehTIVYSAVL9odi0KCGCWKaB9gvYwt5vXzg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=6XKRc3h8Gz7saJKHEi9GRCXRi6s1HSztmuk0QTFKvPo=;
b=neDVOIVyaTsx6CJDU+nSX6VYHJ71nN8pU9iv4clWqxbBTNQuNv5A+dmm1bRs9v3gg2kvItORpC1cIfJK7lYL7xC47BLXxsJeGT6IWmEgkyFKG/3IBmCjWYbVRxdZctwyB5wWktTPbrdBKn2UDgwoSuD074AS04Uuw10E6kLh2h1Jfz7LFk+6NByNxNugCq8u4PiXnkfg2KXUammmGigG6WfIijraadWArmufFuUod83VFML0I67yyrIbib5WSPwiGyawz9EbwN7wXXB0MS0Sk/d6Q6ewpwrTypJWkEvXHp7nwSxO4OalG1g1fX7IETQ3uKjLZA7ojQMxfScqb9kkwg==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun
2025 03:00:58 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025
03:00:58 +0000
From: Alexandre Courbot <acourbot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 12:00:41 +0900
Subject: [PATCH 3/4] rust: alloc: implement `Borrow` and `BorrowMut` for
`KBox`
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250601-borrow_impls-v1-3-e1caeb428db4@xxxxxxxxxx>
References: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
To: Danilo Krummrich <dakr@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <lossin@xxxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>
Cc: rust-for-linux@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Alexandre Courbot <acourbot@xxxxxxxxxx>
X-Mailer: b4 0.14.2
X-ClientProxiedBy: TY4P286CA0005.JPNP286.PROD.OUTLOOK.COM
(2603:1096:405:26d::14) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_
X-MS-Office365-Filtering-Correlation-Id: 501af6c6-fa34-45e1-cca8-08dda0b888aa
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?L2hPSmp4WlpuNUVFTVlZRVFnZTYzTU80ajJzZWtTdWV1YmZ5ZHdaQitwTWlG?=
=?utf-8?B?VlFjWXBzSDBPN2EwUXFwd3BnZXdLUmNYSFpDTlI1SkdNZ0Q0aDVyZjZGWmxh?=
=?utf-8?B?UGVRa3cyVk9LYkRLU3VYd2hQbC9IWGpRbTdFOWNHSEUybHVidEhuck0yNEJo?=
=?utf-8?B?VW83VHdPa2JGUEd6d05vMk9NeDJBVlcxOW5PeFNmYjdNam5GNFJSenphUlBj?=
=?utf-8?B?YjYxT0tPTDltUzl2UWMxVmxNSGdwa0JTcUh2SUVqc2c3Y2JTR3FkYi9JV2ZF?=
=?utf-8?B?VURHOHl1dUlHZ3lhWTB4b245bWlVQmZRQmwvdnhFRzhxWFI4ejlLbS8xUDlJ?=
=?utf-8?B?MDJGWHQyUE1RN3BQWWRDVFg1YmV6cW9qaEZkTmljTnAycGNuOCszNHZneUky?=
=?utf-8?B?cm1kSUZkTEZEMCtvaU5YTGo2YXl2SE1kRVNJcW9IamgrQ0o3ZHNjTE9tOUZm?=
=?utf-8?B?RHBqUVUzRDU5dnEvU244TUNYNWlwL1IxNXlJejBjWXFvcVA2T250WHZtSUhx?=
=?utf-8?B?dGwzYW5MNWswR09qb08zYkVvenZXaFlLUDFiaXRHZlBlT0VRS2RCbzJuME1h?=
=?utf-8?B?cE9JdDVoeC94T05zSHhZZm1EQTl5WVVSdXVjZER2TUNLTTd0bHpqWkpSWHBq?=
=?utf-8?B?UFA5Z3FGbVZ1MHQ0aVEydDJNRnFFaWxuMkVQN2MxMHkvSldBS1lRdEhLSDhI?=
=?utf-8?B?K3VXL2lNYUJiemVaTEFTeVExeSt0dXJUdkc5YTE5K3UzcmNOZ2IrcERsSC9n?=
=?utf-8?B?WmROSzJLZ01PbUp3N05jUnFrWHg4bDVzak9GMzQzMFNIanpIN1RSSTFrTkl4?=
=?utf-8?B?ZUR5QVNHMG53M0YrcjduMW1RcklzRmdkWUE5bjhJSno1TnVyK3dWanRYUFZ1?=
=?utf-8?B?eS9jRk8vUm9iYlhEVW1uYVFnaTl4NjRhSGRCK0U2Ym5JWHBONk1IS0RTeVRs?=
=?utf-8?B?ZW9VU1ZKeWFYaUx1NUR3NzlkSnI1YVR1Y1hlUXFUSktEM2pNakF3d3JBWGhM?=
=?utf-8?B?YnBEMVFjL2txVC9aNWpXZnRjamlLNURMYTZlRjFmUmJyTDVta0lXZnlKRjFn?=
=?utf-8?B?aUUwM2RGY1hvSWVVRitGWUJxVjFmQnJlWGhLeFFsckFyZ1pkYmNBeFZhcU8v?=
=?utf-8?B?alhKZ2ZYelR4WkhZKzduYXpZOGlzbVFBemcrVitUblBIR2lzTXFrME9VT0dW?=
=?utf-8?B?amlBbHphVlNOZ3NjbVBuczh4cElma296a1gxdkxtNnBYVVpDeHNXa3J0aVZH?=
=?utf-8?B?cVBhVmw4bnNRekMwV1krL3R6WC9GT0FEVTNWYjZhdy9laDNiWDJaci9lUE1Z?=
=?utf-8?B?dWkyclYrZm83dFJ1ajZSWW5WSkRMUU1oSGVIczVQZU9GSGpyUGJqYWd0MGhU?=
=?utf-8?B?Y0dCVm15clp3UUh4RWN4OVBhM2ZQN3N6dXQwUU12YnphQWt2TGJmdW9ycVlu?=
=?utf-8?B?RHBhaDdhNk1SdUFXdkNSejlDeU5FT29WN0JaVWJoUStsZkVITnlTQVJuUUdK?=
=?utf-8?B?Y0o3OWx6OTAwSmczbUd1NWlSTXhLdElvemNYU2RQRzFZZjY3ZmJlV2hHZmZR?=
=?utf-8?B?bjVqdldoZmN5c29maFFOd3VBa3RjRlZncDB0aFZLMjZUbm5XbldNSG5NS09j?=
=?utf-8?B?WTQvaG40SE05bnFIbUZwUWdhYjY4UTNLZG0zd0F3Ym5EaE1XMVFQQUhCdUwr?=
=?utf-8?B?dy9rbTY1VFR2Y0xMNTU1YXFWS3hZUVdFWGlLR29CbGhCU2kxdm1PT2ptdzBr?=
=?utf-8?B?cEtUNUVGWDhQR3NRTjFOYVZac3JOVUUzdUhaRzl3bXZhbU5iUlF5Rnp6emxj?=
=?utf-8?B?a1E0UTB5K05xSkduZFQwYVhIUGRsQWFXZGozZWQrZEJzaThOaXZUa2paZUtj?=
=?utf-8?B?aUFVNUlVdkMzbndGZ1FQWWMwNkxoSjA2TjJSVXpGVEVZKzVxaGNTc3lvcG0w?=
=?utf-8?B?WHJ3TThXNmtBc3p2cXhsYVVpYnpRVHNVV09rYm92K1loVXZIaFdOZmlwTGdZ?=
=?utf-8?B?SWhXblJIWEJBPT0=?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?UVNEbStzb3F4bGtmWEdoM2pjVE5ocVV0czdUVFRHZmdIUFdKOTlYajZGRE5T?=
=?utf-8?B?Y0hhUk55TWpJaUVPN0NaZnNlbWlwc05mN3VzbTl0WnNPcXltNDNlaDlBZWJs?=
=?utf-8?B?N3UrQ3I5Z1hGbVQxVVZiK3oxTXlKWjB3MVFiSmtESzlPdDdEbFNhb21IK2x5?=
=?utf-8?B?eUtlYWcwMmNCYkloRnNDdUhjbEU2K1lNb0tia2VDRTRRZE5iMGFYYTJvdjN5?=
=?utf-8?B?M3VRUFJJZDhQV2t5ZWQ3Zjh0d3czdU9abXBMZk5YYk8vWlVTRXAyRjFCUTBu?=
=?utf-8?B?UnVtNGtNczZ5T3J6MERkdXBlNnV1Ymh5WGlUYW5mYUgzZ2RiaTcrUDQwQndm?=
=?utf-8?B?TTBGbTh5Vmo1cDlIY1hGSzB4RUFSc3V6MU9WTDVFOU9jY1NPRG9mTVd6ZG5x?=
=?utf-8?B?cHJWbWxwL25jbDM5QlFzRVVkbEd2dnpVS0U2ODJMQUIvZzJvVmdDQzI5dUxF?=
=?utf-8?B?cG96aGcrWEQveExaM2pBQ3VaKzBhWVlnN3V1enJHZ21tRjluTUcrQUQ5TXVx?=
=?utf-8?B?YU1LdnpDVmZPbk1HUllBUzZ0K0ZEbmE1R0xoa1ZxNkV0VXA4VklHWlEzUkFG?=
=?utf-8?B?UUxUejUxYWZIN1U5ZjVxSGV6N2xuNkhUdkhJRndWaUJwWWdCTmoyeVlvZXVS?=
=?utf-8?B?N3hGZ3dPc3E4NFF0L1BtMzZTekdhV3FhbVFHdXVZNExLazc2S1FTenRBcFNn?=
=?utf-8?B?bDRhM1dSZktDeUNIdU03UXY3SVRNbWNnRGMvSW1RL0xDSGRucFltRWJyUUJD?=
=?utf-8?B?MFN0UE5jaUtCY1Y1MSswVjFwNTJXUm1ydXZZaHNTSzd3elBxdUhGdFNSK1lk?=
=?utf-8?B?SHVPbW1yRTd0ZXlKam80SFdVWkRvZFN1YnZrQU56S01UdCtUaDI3R2NEVFFz?=
=?utf-8?B?UXpjMU1menVmZzljQTlIRU1CSGV4VjU0cUJWS0p4cXNKRDZFK3ZPNVYvRkV0?=
=?utf-8?B?TmhtVmw5ak9JRkJZenplajV3TUUzbUpOM0hWRmREZ0MzdEpGaXZvdVBYNDZq?=
=?utf-8?B?VTFHV3hDdTlBR1Facmo0WkFSR09lOHNVci8vRTF1R1JlMGhiVGtzVlJDYUZt?=
=?utf-8?B?T0ZEdXFKOUJSem4vUklkVktwNVh5bGl5ZzhTTXdSalcvQkxUYkFVREwwa0l2?=
=?utf-8?B?TTVDU2xaMWtXTDE4dEk1WGZISHBXbmM5azFEUnZ1QmxWZHdRQ0ZlTXNQNDdq?=
=?utf-8?B?WE5DK2ltWlc3Z3F4UGF2alREQjdlUjJ2QVZuMEZWWUppRkdKaFZGdXQ5SkhX?=
=?utf-8?B?YWswWnFHeWJIZkw2NTBuOTRBcUExd3lZVzN0b29COTFoVG50UkYrVW9OdG01?=
=?utf-8?B?eTR6a09SS1dYWTRDT09vMUFCeHFwMGVEckRPQ29MK0tFZUVLVk50VkR3S1o4?=
=?utf-8?B?d2IxdzVpNXd6RGd4MnM4U1ZRSExYa3IvTU43RFlyaThSZXlWdmFRTkZrNXU3?=
=?utf-8?B?b2NMd1E3cG11TFZ6Yzdnc1pjVlAvMkRNNW5zZndDNDFSTVZVSUl4cjF0eGZ4?=
=?utf-8?B?b3dMUWFvT044bW00ZXJYZFo1NGhBK2VOQmcreE82MytwTnNaUG53NDZkb2Nl?=
=?utf-8?B?MEx5NmFqRFRMOUI5ZGxscEtHOHlsTDF0RE1EL2tUVzFObUd1WEVVVTkzYTQ5?=
=?utf-8?B?dks4bStmTzZGQm5vcldRendncHhtQTlYaWg2TldpY2RvbVFUS1NrRjNNU2s4?=
=?utf-8?B?dGVFSUEvWGdkd2I5ekl0U29jbUNERUhxV2pTYkI3NU43TEd6K0pQVDNmdXJv?=
=?utf-8?B?aDQrMzdNT09MdTdtSzFRVUdhYkNVK0NySVlzRDAzUFpmbExlMXkxbGpBUUxR?=
=?utf-8?B?QWlQdFN0QVM4NjVGMzBUS0hUajRLWEpHZWZzemRHMzVodklKd3FhVXRZZjFV?=
=?utf-8?B?S0dFL0ViOFFpcWNUb01lMTVlUEwyUTJvSzFRZGdBMW03akYzQ3U3SHVRNXZq?=
=?utf-8?B?OHNQZGxlb1U2SktvSHNJUUR5UlluTWRDbGZJWGQxNGtpdVp5bTM3aHg3cml2?=
=?utf-8?B?c3BKSDM3TEU1NnF6ZzNhcHkrcStKOE15Ung1ODRYUUdZRDdoeDFkUXBLRTZz?=
=?utf-8?B?V2N6VjBhMVlqZCt4UGVVcmJiVHZoWWxhdm9YMjRqcTZaWEU2N0NqRk9SYWJJ?=
=?utf-8?B?dU1JbThuTVVaMEN2eTh0MWlZVWZ6dnNEd3JTTHllZTNYQmxNUVJ0ekZFVEcv?=
=?utf-8?Q?foDcn5sJUdntJqiZKjsJoR7PbUtc/gh0EQ6LSlswhBSO?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 501af6c6-fa34-45e1-cca8-08dda0b888aa
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:00:58.4992
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: LTH0g1emfFxK29SzqwXjNepkAo28uqrgZyF9uQF9SkGzOiWhKW4yVBG3Vh0kJGv7cF1CRXkLe7Ek1GTKvGk9nA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Implement these two common traits, which allow generic types to store
either an owned value or a reference to it, leveraging the `Deref`
implementation.

Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
---
rust/kernel/alloc/kbox.rs | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)

diff --git a/rust/kernel/alloc/kbox.rs b/rust/kernel/alloc/kbox.rs
index c386ff771d506a2eb4c211a93ea9b59bc04c93f5..73e66b4118b723a5e54de53144e4c1884098342f 100644
--- a/rust/kernel/alloc/kbox.rs
+++ b/rust/kernel/alloc/kbox.rs
@@ -6,6 +6,7 @@
use super::allocator::{KVmalloc, Kmalloc, Vmalloc};
use super::{AllocError, Allocator, Flags};
use core::alloc::Layout;
+use core::borrow::{Borrow, BorrowMut};
use core::fmt;
use core::marker::PhantomData;
use core::mem::ManuallyDrop;
@@ -499,6 +500,26 @@ fn deref_mut(&mut self) -> &mut T {
}
}

+impl<T, A> Borrow<T> for Box<T, A>
+where
+ T: ?Sized,
+ A: Allocator,
+{
+ fn borrow(&self) -> &T {
+ self.deref()
+ }
+}
+
+impl<T, A> BorrowMut<T> for Box<T, A>
+where
+ T: ?Sized,
+ A: Allocator,
+{
+ fn borrow_mut(&mut self) -> &mut T {
+ self.deref_mut()
+ }
+}
+
impl<T, A> fmt::Display for Box<T, A>
where
T: ?Sized + fmt::Display,

--
2.49.0



Return-Path: <linux-kernel+bounces-669291-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id BD78B41E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:02:09 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id 572201893837
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:02:11 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 170E315C15F;
Sun, 1 Jun 2025 03:01:07 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="VSLU95Xg"
Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2063.outbound.protection.outlook.com [40.107.237.63])
(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 5E21714B950;
Sun, 1 Jun 2025 03:01:04 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.63
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748746866; cv=fail; b=HCmPw3Zm1zv7jNTVCOIDNAed3oPYIbX7YwqSABSmpEiOxkpl1+bYLaGc0MN4q/1NM/8VKRDKnhnPJu0OExLcNT3NdAT2KCl2tpDZ1vHWY8fiJnhf5phcZ6dTG37rYlfaxbKEq/x2xGaPuPk+I9EVr5oLTI9wlAuUFuzLJIdPS84=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748746866; c=relaxed/simple;
bh=atYGca4WvybiZGUuR54ZkFdPFgzPQV1pl+HqIVx8/00=;
h=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:
To:Cc:MIME-Version; b=syjcttBj8tqNZwqFmLYpuHt82T5PtdKrOt+ajTuynV7h5zQcG9zPKNTcRDOiyX9VZsJ4EtkiIS1KhpGMsc3gR2vfMTKFCBkQmq+htcYUybix+JanhbBTh/CaHe8XQZCIVrBJuUVVoP2F31msrKaq2W0pOIEI3xBIGfY1tjKH/h0=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=VSLU95Xg; arc=fail smtp.client-ip=40.107.237.63
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=Gs6kXeW7nKYMNA/fDhu+Wk4AtO+oFI2+k8rfekE8mfMN0OarsKMUW3irVgKVJnkzx0897PSW0xL0bX74F9J29MjIX0+AqSzBtjBLtVgBBtXfaUFarqUawJPvqWOnPU0YOt9GyER/IGb3894x5T8qA0p6x+3o97nIn6KbMHdjDZeS2VguwLbFCaX01tNGHW94Zcrzn/VXZvHJGQoiHj/CRSzkEs5DDDhQDaQrSrUIxSi+Ev0RR78oVusv2c1Elo33i3VgbuwqG3nGFnFt56qc7/XHDICBaYrkv9Zs6BO7YjIqmc13w3qzYbPCegVBX/v0rTs3rD+nA/b9eExdrz0kUA==
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=qtiU4DmNIJAZf2vV0xQW+Sz+TzTm13t+z2ixi4GX3gc=;
b=da3k9evurYzdWKqiOeIk+Lj41eE0nva9swqFf8nrcXqvPrj5vcGQmOQcRxDmiYJYBmkei8fci9znXr4T+StXdbUBiXpOR+4ogQIiXGQONN08BBtnX/hU/+17dpMOnENT5JIxdu5TORuX0JFwaPSf0uexOzisFUO1W2L+lgCGFF5MwNbPn1Ws84TIPT3HWNK6pnk3cD0A7BzDIHRljTv11jwzOjp+642eQAcEfGGeZcj5E3SKgx5zFTAf5OoAUcav+H7+L6hQlWO7yLUue7cHjDRNiDtuQVK1d/ME/qac5wI9FkNMhm5qKh8TcfJ1pDa/sUxmYtDlX7+fHyBsXwk2Kw==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=qtiU4DmNIJAZf2vV0xQW+Sz+TzTm13t+z2ixi4GX3gc=;
b=VSLU95Xgx1QXhqa4XZIrZO1rTr8KXNxkE0cTTGxVTWQ8H0RWUgzo+wMQUSODhvfDEHY6Mxan7JNLOafTgOqvjRWuZqNfVEFsnoe7XYB2kl+mVcEpdZHk7lZ2SuV/Jrsg/ihaJ3lhBuLpxk9pz8WLiPnbi9A485Cns1/3lCEajrNrCRb08FPonSF4VvMajw48NMTk44dzWBVlPDp4POcA49TAhyxIKFDxSwmdwrYSCjnsk6vid9WaXbeJfYl9HJDi2ZyfgvPP5jn386rry59vzHdVRvMLo6l7N6wGQs5rMIrwrs3RgJ63bwOaKVfy4Szfemjl78BrwgK9vS/oDc2/jQ==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by DS7PR12MB9504.namprd12.prod.outlook.com (2603:10b6:8:252::8) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.31; Sun, 1 Jun
2025 03:01:01 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025
03:01:01 +0000
From: Alexandre Courbot <acourbot@xxxxxxxxxx>
Date: Sun, 01 Jun 2025 12:00:42 +0900
Subject: [PATCH 4/4] rust: alloc: implement `Borrow` and `BorrowMut` for
`CString`
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20250601-borrow_impls-v1-4-e1caeb428db4@xxxxxxxxxx>
References: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
In-Reply-To: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
To: Danilo Krummrich <dakr@xxxxxxxxxx>, Miguel Ojeda <ojeda@xxxxxxxxxx>,
Alex Gaynor <alex.gaynor@xxxxxxxxx>, Boqun Feng <boqun.feng@xxxxxxxxx>,
Gary Guo <gary@xxxxxxxxxxx>,
=?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@xxxxxxxxxxxxxx>,
Benno Lossin <lossin@xxxxxxxxxx>, Andreas Hindborg <a.hindborg@xxxxxxxxxx>,
Alice Ryhl <aliceryhl@xxxxxxxxxx>, Trevor Gross <tmgross@xxxxxxxxx>
Cc: rust-for-linux@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx,
Alexandre Courbot <acourbot@xxxxxxxxxx>
X-Mailer: b4 0.14.2
X-ClientProxiedBy: TYCP301CA0063.JPNP301.PROD.OUTLOOK.COM
(2603:1096:405:7d::8) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|DS7PR12MB9504:EE_
X-MS-Office365-Filtering-Correlation-Id: aa621abf-563e-46cc-0c76-08dda0b88a54
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|921020;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?cVRnRmFxN2ZyRjNsY0FaYkJraTMxc0ZzYkFUeWRhbkV4UHNiZ0doTUoxelc0?=
=?utf-8?B?RkxiNTBXMExUWjdvN1p6N2xpczJOU3lFbk1uZHFiV0FHQXhkd1NxQ29zaGp6?=
=?utf-8?B?Zy9odmEvNXo1Vm5ZTE5KMUY2elFKWVVTNnY5NDlTOExpdWZtWGN2ZmF1RHkz?=
=?utf-8?B?amNaeWEza1FDUmNjcGpoNFEyL1RuNmswMVY2ZmRzNlF4TWFBdU5SVWRXejhI?=
=?utf-8?B?bDlySjBmcGJrZ0FDNFFZQVZaUEpYWWNCYVoyQnBQU1Z6dUgxNUxLMnc1VFI4?=
=?utf-8?B?TlFGMEw0cytYZURkempvWDkzSVljYjZNVEgvb0FXZ1kzbmR3d1UyeHRFeGt0?=
=?utf-8?B?VEg0bVcxaEo5OW8vRCtzazVVWW1Sb1Q1ZlZjYUpLR0orUnU0TVZHa0VUdUxW?=
=?utf-8?B?VGo1RFYvVC9MVUdIZ1NXRHB6QW5wem1JWVhJY0JSQm1Yck52WWdVK1hIMGhx?=
=?utf-8?B?VjF5cGhBMVBqVmY5WVRzdGh2OXZ0TXdZREJmMXNzVWhzZzJjaTBhU3J1MWVt?=
=?utf-8?B?eURZbUJjWWZENFFCSkQ4UU42WEU5bUdhZFhteDRwTW53MmhZRzlkUW5xRHI3?=
=?utf-8?B?MWoyR3J5L0lzemMxYzlvdXl0TktSaE1WKzUwbmczeXF0ZlhLaVBtWElYczhT?=
=?utf-8?B?Vnk5OTFhL0l1c3MrSFhuUkphdEFrYTJNMyt4NGlOOWNIMUVWd3ZzM0J2SVFK?=
=?utf-8?B?dExscE8yTENsT0gxRU1nZE5ac0xDYWJvTWxwNTJIVjk2TkVieUgySCtySzN6?=
=?utf-8?B?MWpuNjVRRHFZYXM5UjJCY25kTWpMUWpBU0MybHFSbXhLMWpRNFE4SHNsalh2?=
=?utf-8?B?cFQ4V05ycmZjWjFXL01ZdnF6WkdjZGg2My84Q3FnbTBjekVUbHRMYVFBL3NU?=
=?utf-8?B?dGs1MUU0T0w5c2pGWlppU3VXb0FkdWxrdzBNQTUvR09CZW41L1ROZzVLTVFr?=
=?utf-8?B?QUx5bEQ3QkNMcnFnam03L05OTlhycjRjLzB2Z1NPZUo1eFVpNWRyblJRalFZ?=
=?utf-8?B?MVVDaS9ubHVnMG5JVjRzOWRqbkdjbHN1MHFMOFN4VkNhNXU5TWtHelpFaTMx?=
=?utf-8?B?TXNQNzhUUVNyV3YzczU0MnVqOUdKWmtwbzVJK2IyQnVjYUxHdjZCbngzdTZa?=
=?utf-8?B?MXI4N2ZZVU95dzVESTRCTHVoSnI3UE1OZG5YZFhCTzA4Y3NCOFVjclBEblN3?=
=?utf-8?B?T2FZTXdxV05DU0RqN2o2dVd1YjNBNy9yZkpFSy9XeUlvM1VIMnJSQlFoQkY0?=
=?utf-8?B?TytuRjRoUDlzSWxna3RVdkJSSGlHMVl5TE9ISU9qbFJvUERLVGhzdTlLaDFG?=
=?utf-8?B?VDcycUI5bXQ5VExGZzVIL1Q3MU9URllUUWkzOU1TUFdpU3EzNHg0R0N2NThS?=
=?utf-8?B?NnlkeFcrTG1ENDIyN3pIWVE4TFRyWCs1WEU5ZTNlWnkvdXNLa295RWpRRjAw?=
=?utf-8?B?N29HcThRaGs3RGRjYWJmU2h6eVdHcUhtVDJOWWJ1bFVlSWFsVUJiMWdKdTBi?=
=?utf-8?B?TTN0bGt5aStPR2JheWhEc3RXMVUySTJrdzFWR1lSU0RFSTVxWEhvcXQzQ29W?=
=?utf-8?B?bzlCbVREMWNQeTNSTjVOajA2UEhWYlpRVjVEKzFUamFmQVV4QTk2Zm4xMlU2?=
=?utf-8?B?RE8xZUZXUDV3WHdNQndEWEZ2dXZ2a05kWFJScWpKZHgyM3RGQUxhWXgxTmVH?=
=?utf-8?B?MzdUM282Z3E4WEJyTTdZNHVwck93TytycW5FeWoyeFd5KzNLL2hzZXhkQ3g1?=
=?utf-8?B?TUw2aHY2aXA5YkVQM3RLZG0xUmtCOHJOejlFbnFubmRJTitIdXljVUR4Tkd4?=
=?utf-8?B?QmJVRFBxbUdnZWxIQnhMbUdSNXJlK1hsVlpCOGlOSXN5M1JCMHpSV0x5c044?=
=?utf-8?B?TFVXSlpIRXpkVDc1L1VLaFZZWE1QQnV1ZVhEeW9DeGU0b1crK1dRbmVRMmRn?=
=?utf-8?B?bGY5ZU9uK0p0bVYxSmpEYThMYWc1RTJXSEJ5YklYNVBYMHhKeWVtYUhCSGZt?=
=?utf-8?B?eTM2YlJOT0l3PT0=?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?Smx1cGJXd2cvTFYzb2w3anVjbzFRWkpwZ05vZEs1Z0F6NlVYMGxMZ0U3dUJy?=
=?utf-8?B?ZzR0K3E2T3ZjWjRzSzR0MGl3RU9MUlNVTzFpdHdZeUVaYTk0ZmFjOUlhMjVW?=
=?utf-8?B?L2JXRWFSZ1EvV2E0T2o4bTc2UjRlOFI4SSsxQmlocEpZYUNPc09rT21WcmVr?=
=?utf-8?B?NXJXaG1XM0RoZXhvcWRqeGJYVlc1ZG5GR0ZtQUNOalE3U0x6MG5obm5BQStn?=
=?utf-8?B?M0hjUWswYVR5UWVSTHpPSzhIVUZqdjBadkh0N0Z0T0VybXF2UnRxZUF4L0Q4?=
=?utf-8?B?R2g4NEVrSy9DeXU1MDBjRitwanIvNURPdjZ3c3h5Zk1saWlSaUlZcXQwdXdX?=
=?utf-8?B?NjVGRHFOOCtuaEtDdHJwK2laMXloRUJOdkNxcnRxWFdSdUF0RGoyZjVNb3lO?=
=?utf-8?B?eGdqcjhXWFE1WVBOR3lmOGI0QnZ4bWRHSmtEUnNrQWxpalZoc2p6VGsyUXRz?=
=?utf-8?B?NnNEWmxvVkpscWYzVXNBVzBxWXFmZnk1Y2NXSEJnU0J6UmtKdUJjMGFTSTRz?=
=?utf-8?B?MUFCSmM2L2N3eUhpODB1QXd6eHV3aTYzMnRmdHlEK3Z6by9GOHd1MHVIR3pV?=
=?utf-8?B?Q1dSZkJpcHhwUFlpR3J0aElFRlFJbFErSW43ZFR6a0NOM0Y4cUNaczRieUls?=
=?utf-8?B?K3dBeWpEazI5RjhqYjY4allrRE1Qa2tyWUlCOHB0Qjl5M21iNzVUU1V4REVQ?=
=?utf-8?B?N0ZNSEpEdm92TGJMdEJjS2NselFaZFBIZ2t2NHNWa2poSEZzMmlzMHRudVNs?=
=?utf-8?B?NTA3VFdHM2dDQTFQYXhscnY3RndCdXBQOXo4NWRnUTN0c1dkZzhhdHRSUmM0?=
=?utf-8?B?a3RxQXdtMnE2Sy9vWFcwV2N4WnNTeEplNit0dEhSRUFlc1ZDNm5VTFREZDJX?=
=?utf-8?B?UXdxTHg3NFEyMDBzVHZWRktmMDh2ZWlMWktkNGptUXBHNUp1aWduM1lqR1Yv?=
=?utf-8?B?Uzd6ZzRJckVKYTZ6WllPUmpJWk5vYWVGSjNiS29ESC9reHFQL2tMQWxZWE5D?=
=?utf-8?B?OTE0UGhSOVpvbUZsWWFzd3NEM2h0akV0enpyWHVGSER2ZmFjOFErRnNYemF6?=
=?utf-8?B?ZkFuc0FPR1laZjhMUEl0c2dHdkxuSHpkVHNqNmFnY2xNeGZhdXhISFVhU0lF?=
=?utf-8?B?OXhtdTZ4dDFSc3plRU1JNncwQVVEOXNKREZWd0xxYjhsM3hkeEF6WUMxME50?=
=?utf-8?B?MUhHZFRUYStRWjJ5VUxWL3VIVnRhYXJBNTBXbG01R1JuUDlkWUp6eUlrYmFJ?=
=?utf-8?B?TXJsQVo3VE85YUxIenQzbnJvNDFOWExjUHVWRlAvMHY2V0xaTUQyWlJiK0lW?=
=?utf-8?B?anNnTS9ocTRmS3lYbmNBUk56RTNXUE1CcXlMSFlqaytObExHdG4ybXJadmd3?=
=?utf-8?B?RTIwV2FKdWJja3NoQ1FsWkdVYXhsd1ZibFduMEROODBTK0dlV1VDVGF6ZU9R?=
=?utf-8?B?Njk5T2prZXNqSnR2dGtqaHlrWFVQKzF5QVh5TzJlOHkzM2xHeUNqR0dyOW1Z?=
=?utf-8?B?ZStSMWdwUFYxZU5jcWQ5K2NpK2hEWFFpSVdsektTRFZVT0VIQzdQY0JsSEdS?=
=?utf-8?B?Z2NQdmF0QlBxYWpuZ1B3OVg4QXY3TXk2T3F4dUhZdkNReEllQlJhMDJ3M2R4?=
=?utf-8?B?WUp1OW9TVFRDR2VjdnRVMWZ3TlY3M2JSeGdZQ1V1SmQyYzBqSzVPbU94d0NT?=
=?utf-8?B?V1kxODUwTFVGajVrbFhhbEg4WDdtYUpDWXE5Z1JOZ05lb21iUlVuY0Uwa3lq?=
=?utf-8?B?cEhNZVlzajQxdE9HMVVmd1d0bXpMQU5lTlVibVg0T2tERzBPM3FUZy9zSTZ5?=
=?utf-8?B?L2JHR3NWRmI1Mm41OEtjUStJdGJBVXdJZXRubjdLbk42OW1hVlUwV2VmQ0xY?=
=?utf-8?B?M3pWWWhpTlp4VmFYeXZQSDMvWmRuMTdDWHdXejZsQ3VWb1k2WnlXZnlsUi9Q?=
=?utf-8?B?UjFQaW9mTW9oWVFmK3o1V1V1YnJjOWdmSkk3b0h6S04yWnFqODRjMGp3VTZ4?=
=?utf-8?B?dTJpRUhZSmROUjNlR2M3eWllNG15RWJMM0ozb3Z2eXJMbXpZZGJwVVg2R2Nt?=
=?utf-8?B?TWRaRWttV1BNTVRFZnFNNlpvaTEyd1IxTGpkTWZEWWt3T0FKa2FTRm9QSmsw?=
=?utf-8?B?bGxFRU8vaXF2TkZqRUxSRUplYkc0VTVGamVRdVRiVWlVOXZsTkR3TFc1M2pv?=
=?utf-8?Q?n9l3Lr+rHPPrk4bgncaQ82QlHEee6KLaQKwXuchjXl5N?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: aa621abf-563e-46cc-0c76-08dda0b88a54
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:01:01.2773
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: Poyo7KPMHTxKqoHh3nPZBopk/nPujSbD44O7+KpzCDWJ8c7mXBfaTs2eqBPscRtaG86EKFm5ejFAvJaXsU+tkQ==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB9504
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Implement these two common traits, which allow generic types to store
either an owned value or a reference to it, leveraging the `Deref`
implementation.

Signed-off-by: Alexandre Courbot <acourbot@xxxxxxxxxx>
---
rust/kernel/str.rs | 13 +++++++++++++
1 file changed, 13 insertions(+)

diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs
index a927db8e079c3597860880947a03959e1d6d712e..f5da512ebcfef6c8d5227e8177ae32f6194ecffb 100644
--- a/rust/kernel/str.rs
+++ b/rust/kernel/str.rs
@@ -3,6 +3,7 @@
//! String representations.

use crate::alloc::{flags::*, AllocError, KVec};
+use core::borrow::{Borrow, BorrowMut};
use core::fmt::{self, Write};
use core::ops::{self, Deref, DerefMut, Index};

@@ -911,6 +912,18 @@ fn deref_mut(&mut self) -> &mut Self::Target {
}
}

+impl Borrow<CStr> for CString {
+ fn borrow(&self) -> &CStr {
+ self.deref()
+ }
+}
+
+impl BorrowMut<CStr> for CString {
+ fn borrow_mut(&mut self) -> &mut CStr {
+ self.deref_mut()
+ }
+}
+
impl<'a> TryFrom<&'a CStr> for CString {
type Error = AllocError;


--
2.49.0



Return-Path: <linux-kernel+bounces-669292-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org [147.75.199.223])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id C589141E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:06:57 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by ny.mirrors.kernel.org (Postfix) with ESMTPS id D40D2178826
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:06:58 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 9B97654BC6;
Sun, 1 Jun 2025 03:06:49 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="UmqTZM01"
Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2053.outbound.protection.outlook.com [40.107.223.53])
(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 4C43218E1F;
Sun, 1 Jun 2025 03:06:46 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.53
ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748747208; cv=fail; b=QBlKQK6GNtvklur6FPQfH8uYd5D77M/odxoWHBUGJtxNbIyGanpJGPVQ7hEQ1mPKecAM3hpc6EcdiGnlERX3LhegBlQ1AB5alB8X/pG0T8KQlmQqhKB8L7+zxsaiAajrDBEBMj38mQyupEJxwVihYYWeKjGkNssSDZmeLO/ENyw=
ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748747208; c=relaxed/simple;
bh=kahWh17QwnLhDp7NEAlS5hFMYEIQYkR0LCz3qFR9vWM=;
h=Content-Type:Date:Message-Id:Cc:Subject:From:To:References:
In-Reply-To:MIME-Version; b=FlAaRSReG/EENg34Y6mWDBxrpsz6D4SfjSejG6E1h+MNz/fmjRb1c3aclhREV904t4vlvU9TF/MSsYwJ8UdgFgtXOSkVw5mXLhnSctPK9WsEFmX6e694Zvsm8K97UQmi/yZs7elR9N5ejSX+Vm96lQFPCenXjrU1wOlZEuoXEWk=
ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=UmqTZM01; arc=fail smtp.client-ip=40.107.223.53
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com
Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
b=xm6iIXHThxxBXbiO9Q681O/yQZFXluWOdOcYzJEPJ015bYuEzLJYywQZ/Zz2y6N5US3g8aB8QaTmmsYkzzn1Vk38QAuwYB/iyqAWQMUA0POTKMb+Q4i4nkcGjXgiaEfgIsyIzsqQcE68j/kGPhoHLpahpbjuL2wNSqvCDGggqE1FwOfNfuZDD0TKsJLZuqarmi01v/121q+XBsUjRkRJ6OinqxVSNRgxh3s9sW6TmhL/PArNITXbJAE8muj6KEsKyK73JAcwfOh91nUyi4on61jGiuAVvq9It0V8Zs3QETSqh4J2kFwu8JXMMcDtRBTLt1b9uHrB7M3oM0vk4XMylg==
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=kahWh17QwnLhDp7NEAlS5hFMYEIQYkR0LCz3qFR9vWM=;
b=V/MIW+kKJDiBgc60aGXcbI+NMtq0xM+j5NaVqlgNUMkeK3NGy5hkRtaYw3RlHyHjWxZMLvo1iosGlXOzZj6b1iSKlPxvYps9EA2crQ60rdnjFSj5IILs8nZSBYySLTXlnjfiYJOE91klwm6zM2oHanl0K5X/SjfOHUR038yYmgzVeoSZ34YXSyz0fyvqDwzm77R1UrWHoC6jMlcJnwtjBDkwbzBSxH2X94iYK3N02Kn9HDXDBWbGgkIdtpGc2h1NyIdh+gI+Z//FRIonyZWI5FvnIch+yZ/Iy1maOagMMzr/mmu/g50KOS2hracyetuuXan8ZFiwuEpaAO0Apjnitg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;
dkim=pass header.d=nvidia.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;
s=selector2;
h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
bh=kahWh17QwnLhDp7NEAlS5hFMYEIQYkR0LCz3qFR9vWM=;
b=UmqTZM01A6FkBOyVd0XWWG7HkyI2cTnq44mJvtLGJB+oIwAsq2T2VwjeO/CYJ3VszRjab+jxFYUR9ybF77hDndBfS5o6VW1FziRE1frRGowIsOK75nj6vK6B2czGSxjsKCK4MsSJd50utaXpqfKGwJzfrzem1p7Y0GJ50ihnnDLVVeTzss8UuqR4aLGATRIU4gRqBV5ri7XEXz0Pe4et1roK568+7yMZWUKm3jrr/m/+uuAlvlu9Kg/UEibMQLrKAQEGm9wxPHrRcOSOUMwR1uepfDurwyklmsHNGbzdfclyNEcpPaJ1Qt8Rbgnx3puoSIkeIGyPlq8tLzOdS5dd4g==
Authentication-Results: dkim=none (message not signed)
header.d=none;dmarc=none action=none header.from=nvidia.com;
Received: from CH2PR12MB3990.namprd12.prod.outlook.com (2603:10b6:610:28::18)
by SN7PR12MB8604.namprd12.prod.outlook.com (2603:10b6:806:273::16) with
Microsoft SMTP Server (version=TLS1_2,
cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8769.24; Sun, 1 Jun
2025 03:06:44 +0000
Received: from CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99]) by CH2PR12MB3990.namprd12.prod.outlook.com
([fe80::6e37:569f:82ee:3f99%5]) with mapi id 15.20.8769.029; Sun, 1 Jun 2025
03:06:43 +0000
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Sun, 01 Jun 2025 12:06:40 +0900
Message-Id: <DAAV5979EOWO.37D9QE70YWR4Z@xxxxxxxxxx>
Cc: <rust-for-linux@xxxxxxxxxxxxxxx>, <linux-kernel@xxxxxxxxxxxxxxx>
Subject: Re: [PATCH 2/4] rust: alloc: implement `Borrow` and `BorrowMut` for
`Arc` types
From: "Alexandre Courbot" <acourbot@xxxxxxxxxx>
To: "Alexandre Courbot" <acourbot@xxxxxxxxxx>, "Danilo Krummrich"
<dakr@xxxxxxxxxx>, "Miguel Ojeda" <ojeda@xxxxxxxxxx>, "Alex Gaynor"
<alex.gaynor@xxxxxxxxx>, "Boqun Feng" <boqun.feng@xxxxxxxxx>, "Gary Guo"
<gary@xxxxxxxxxxx>, =?utf-8?q?Bj=C3=B6rn_Roy_Baron?=
<bjorn3_gh@xxxxxxxxxxxxxx>, "Benno Lossin" <lossin@xxxxxxxxxx>, "Andreas
Hindborg" <a.hindborg@xxxxxxxxxx>, "Alice Ryhl" <aliceryhl@xxxxxxxxxx>,
"Trevor Gross" <tmgross@xxxxxxxxx>
X-Mailer: aerc 0.20.1-0-g2ecb8770224a
References: <20250601-borrow_impls-v1-0-e1caeb428db4@xxxxxxxxxx>
<20250601-borrow_impls-v1-2-e1caeb428db4@xxxxxxxxxx>
In-Reply-To: <20250601-borrow_impls-v1-2-e1caeb428db4@xxxxxxxxxx>
X-ClientProxiedBy: TYBP286CA0021.JPNP286.PROD.OUTLOOK.COM
(2603:1096:404:ce::33) To CH2PR12MB3990.namprd12.prod.outlook.com
(2603:10b6:610:28::18)
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: CH2PR12MB3990:EE_|SN7PR12MB8604:EE_
X-MS-Office365-Filtering-Correlation-Id: a17a3e14-9a54-4b93-1d2c-08dda0b95658
X-MS-Exchange-SenderADCheck: 1
X-MS-Exchange-AntiSpam-Relay: 0
X-Microsoft-Antispam:
BCL:0;ARA:13230040|1800799024|376014|366016|7416014|10070799003|921020;
X-Microsoft-Antispam-Message-Info:
=?utf-8?B?YkwyZXhZZjJKKzIxQUpUYU9UTmtFRTVadDRJV01Wamp5ZnRVOFdyNDVyTGhS?=
=?utf-8?B?Nk1maFR0ZTUyWVVUckcyRVE2U1hBT01PMXNtb0FhVHhKSzJEaTNkZWJGWU9Y?=
=?utf-8?B?T1F4RDQ4S2Z3b2pYZ0RMUnRHc3pDbFU3UlkwMlUzbmM3SU9GQW1OaXk4Q0JS?=
=?utf-8?B?Q2FZU0o1TE5lQTNWdGlKYW52aXhTNEo2dlZSL2E3TjlBd3RZVklrZWgxa2pa?=
=?utf-8?B?V3QxWWVpd1Z3Unp5L1hOOFpHVll5Nk1zbSt3TFZPSGp4eVZadXVGeXBNaVpO?=
=?utf-8?B?VFpOaHBhRDZlcjk2RU1ObVZtZGVuZ050dDc1aVdqZ1c5YjN0TTFYK3JJY0hh?=
=?utf-8?B?dnpRQkRxVlNqcGVPbjRTYXhVeXNXTGZqeWpoeFZyM3NtLy96YXlQRjRNNDh5?=
=?utf-8?B?N1NDZE5IN1E0YTd3MUQrb1lsOHF2WmdxYno2cjd0R01VUEZTVmJVMTNMQjJj?=
=?utf-8?B?YVNieTdONkRWdGJYV3JyQWloOUlYZyt4cnRPT3E1am8yWFdIT09kdlJmVjYy?=
=?utf-8?B?UldYbUVVTXpLdjZkeGhlbjlDbFUyc0ViemhCeWJHMlJlZ1NNODJCUk9Pa3Fu?=
=?utf-8?B?MmtyZVEwUVJDL3NZQ2h1ZFpKNTgvUndyM0U2YkN5d0hCZXdxRW9tNVRwa0J3?=
=?utf-8?B?U2dNdjFGMGZHdUgwOFdwUU9EYTgxV3k5WlFSbHpLZXpnUVlKcFdjSFBHL1Jv?=
=?utf-8?B?cTZIelJSU3RpeCt3WHBOT0hwRnNVaGVWYk9Beis3alBFazZjTGZkUmRiQkd2?=
=?utf-8?B?L1NtQ2wzR2RkYmc2aXlnRU1WeWYxclVQdTVBQTZkTWs5KzRmeWVRVlVXWkZN?=
=?utf-8?B?TzJ2UWQ1RHI1WG1yOG1xZ2xMMFRwZmg4WHBQcUUxOGJGWTZwYkJxaFdmYzFw?=
=?utf-8?B?TWYwVmFLZTFNdVNSVHQxRVhVbUN1RWFDUWpiVEVOdUk1WkpXMXRidzhCRGRJ?=
=?utf-8?B?NjdLRkVsQUE2bFFsK0tlMmxSWG1lSXEwZUhWSy8ySGF2ZlBRSWdOb1ZGUGRZ?=
=?utf-8?B?QXBGdUprQ0x4dmtTTGU3aVkvRmNsUjJOR0hMRlUwVWw3WUtMdVZGeFJWZUlL?=
=?utf-8?B?OGx6WkVLa2dSSU9yL3BKRExSWVFRUlZvcHZEUVVOcTJXZUhXYUVtc0JrZU9R?=
=?utf-8?B?QXJkSURPdHROR3FFalNrK1kvdmpGenhtZlRTbU00bGNIREhXUTJaYUNmdmtL?=
=?utf-8?B?Mnl2d0JVOVhySlpNclNmb3BkMVlkNWNjc3lXN3hjU01reEN5Ti95aEZqMld2?=
=?utf-8?B?ZVlFT0VpaUNJZXdObFBlbjAwNG5abDl0TEFBTVBhMUNDY1hyaEs5eUhadUFm?=
=?utf-8?B?SWtSYTB5aVMxL3Rua2ZLWXM2M1NDdENoMGpBYTRnSmZIbmRPMXZ5cWVrVDc3?=
=?utf-8?B?YWE1Q3pEelBQOG1JU3ZGd1U1K29JQXpQbjlMYU5DdWZMbyt5bGVVdkh6eTU1?=
=?utf-8?B?NURyZ1hMSDRMUVR1WGFseW84RE1kTXUzTHU0djJVOHRYbWUzK0FMRlcvOHhT?=
=?utf-8?B?eFFiWm5vRSthS3plVnFWT3RzZWxicWFLRnF6cGRmTTVvYk5wODBUTWZ4VmRB?=
=?utf-8?B?UGI3Wm5rQXNXS3JhT0ZhUWZrUmY1UlNvOCtRNjZLMUs3emU2N1gwcTk5ZEFt?=
=?utf-8?B?Q2hmdUR2MGtmYWNzYWM0bmsxWE5OaTNtN21RS214enJwTlVPK1lHRnNFNVBN?=
=?utf-8?B?eld3Y244RHczZ0grV3Juc0RWZll0dU9LU0xsbW1ZK2tiUHFEWVlKNUpucmND?=
=?utf-8?B?ZkdpTWtFSldCZWdmQk1BQ0NHck45NWN6STB2ckp6WVNXVTFCWFg4REtXcWo4?=
=?utf-8?B?MDBQalRqZVFpV2hnMnMyeFlZUWJzanliaDVhUlp1YnUwK0Q0VVhvTVA5K2NY?=
=?utf-8?B?ZWwxL3RjTFM4dDNLTHFLVlJEamsxUEltNjZoVXljeHNWNEFKc2NlR29XNlNP?=
=?utf-8?B?VFIxVFBoaGg1UWZnd2JaaEcweUppdzV4cW5qNGlRS1FTeEljbWxUSWloRkp4?=
=?utf-8?B?V1V0WTA5aGNRPT0=?=
X-Forefront-Antispam-Report:
CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR12MB3990.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(7416014)(10070799003)(921020);DIR:OUT;SFP:1101;
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0:
=?utf-8?B?aFhBbFROU0kxTms2OGdkRlJFZzAxQVAwUDBmRlZMWFR2b0tHZUFEZk5hdUR1?=
=?utf-8?B?UE92c0xOdlpaQWFMcjh5TGRqcFpkV05QQW5IbzF2dDhBbzB0Q1U4SDRDV0Rn?=
=?utf-8?B?bEhoOWNIc2F0R2FZVXNKblo4Y1lJTkdLK2VmWUR0QUh2azhoSWZrUk9EQTRz?=
=?utf-8?B?TmNTYWtyUlBLb2dJU01UZ1huQzNZclg2Njc1aUJzajFGZWF5dWdlQkw0THVq?=
=?utf-8?B?M2Z1M3QxWFV3dFpKdXpWWmVBNyt0YW9WbWhqc0tZciswSWRwNnc3REQ0dnRH?=
=?utf-8?B?QUEwMVp4cU8xYWZOb0NlSkRDSTJNbEhZN0pwemF3M3BvTm5MK0NKek14OUN2?=
=?utf-8?B?QXpDVnh4ZkE3QUpkcDNvT2oySGI3Q1ZieVRDV3k2eU5OTXoyRWFnY1ErYTAw?=
=?utf-8?B?NnBVd0d2MytxU3Z5MU9JS21keDVVZitFdEpHVi8vNWkyUm9aM0U3cEdvZWNa?=
=?utf-8?B?T3JNMUdpQ0FFaU5RYUJ4Ull3Q25DV3pZaWpZcEhPNHNHYnNndHk3OW9iSnI3?=
=?utf-8?B?RkpUWE1VcUJONGQ1d1dheUlyOFpzQUxQVldtL3N6Y3BDVkkzQnVVMHZmRW9p?=
=?utf-8?B?USt5V1NEZ3JqdmpLZ1JyWG1EQ3pDM0ZlYlNpVTUxRmhtUkI5SUJ6RGxGc04x?=
=?utf-8?B?SXNHVkFiNkJHWmRJcFpLRTVGZVZWN1Vha1QvbUkwK3RocDJ5ZlFnV04zSDcx?=
=?utf-8?B?UnVwKzlxNXpjMVZiTDl5c0FFUHlXRTJ6anB2MU9vMVhOYXpkc29YODhjNVdZ?=
=?utf-8?B?ZUZTRWNBaFA2cjJ5b09MYUw4c1RrRE5ia1lHWTVjRU5xRjNlRE0yV0xHSVZi?=
=?utf-8?B?OGNwaTZiZHkyQ1kwcDNmZE1tSUs4S1d4N1dFN0x1V3VoT0cvWkdIMzRpRS8x?=
=?utf-8?B?T3FIZy9rdVoyQlZqc0VBUWVNbEphbXo3N1FuU1dqeTJsNEw4dUI0QTh6UzVn?=
=?utf-8?B?M1loLzZaT244T3JQQml1eGZZMzdVNlJoL1Q1RGVSTnZwMDFiaHlCaDlHOUlR?=
=?utf-8?B?enBDd3p6cS9GVGNNUWJRS2dIM1ZXY1FTcHNSYUV6TVRZYlhKOEZobWhSNHIx?=
=?utf-8?B?eWRiZWZzZHdiZzhkcmxFYzEvTjRnSkxadkJZWEpFVXdZRnJQS2c1SHdoVmd3?=
=?utf-8?B?YzVmdS9icndja01rU0NCTmZoOCt5ZVJBUStOcHMxUXp0SUVySkNnSjZwSGNK?=
=?utf-8?B?WUFIdmFxT1hoVXYyanlpUjRSN3N2Wkpxcm9KU0lMZ1NDdEFOZERrS1VJUy9D?=
=?utf-8?B?eWRTSEFnbnlFVVBEQ2NmcW9YR3lqSy9XcmxqeURvUjV6SVdUNUc0QVBIbUN4?=
=?utf-8?B?bnc3SFN5TkF6OCtCYzdqVW5md2pIMTJSdjFWZFFQVHNvdzZFSGlGYnZRWjFi?=
=?utf-8?B?ZC9tSUJaYXJ3MHk4TXFBSkxKVG8zUkYvMkQ3YUxiNENrSy82ZnAxdHA4MVpi?=
=?utf-8?B?VjlJcnJ2enFSNUZ5RXJkY285V0tRNlZVUGpNNDVGMEgvZjhSUCt5NFd0SU5N?=
=?utf-8?B?d29BS0o4THF4dytQUkU5UCtLQ1B2WUFybUxwTnh3azNhSzdXUWRHKzlKMW91?=
=?utf-8?B?K25NSTZKL3UzamZpaXU0STJBWkZtN3A1SFRPWFVCNkpBUUovZU90dVpFVWp4?=
=?utf-8?B?N3lMakZPWjdUdm1rQU1QaDJzYm5QZlF1QUZMTlRIK0t0NHA3a2Exd1IyM1Nr?=
=?utf-8?B?ZE1ncDBaM3l6a0JsZlNNN09oV09xSDJEc3JEa0hUd3MrbEYwTDFxVUlkYlZM?=
=?utf-8?B?Y0NMZW1vc2JyaUs1UzZkTUE2aUs3L1NmelJxY2NpeVRCK2hRVkRhNklMVDIr?=
=?utf-8?B?MXRhMkh6QW1BazRSOSt1b2FqZ0FYSVcyUkpiTllVY3NzUG44TkJuTEVHSC9r?=
=?utf-8?B?bDNzYzJKMG53TjNzTDFHVWhwK0grK2tRQllJRHpYQXJBdWRKb3k4TmhWc2hq?=
=?utf-8?B?Qy85RnZybDZ1WWhIV21pcU9zbzFLYi9Ea3o1ZTdDL2dUTkVrQXhhNmkvcGF4?=
=?utf-8?B?aDNrcmlwT043K29ZNU5DL29DSktPYlJqdDBqdDJuNm9KMEhYUDdvWWllTGJN?=
=?utf-8?B?MHJVZGtidFBtTFhRR1ZFTUlJSm90NlowejU5dE5kQnd4cENONGVpT004YTNB?=
=?utf-8?B?ZXRwVGptSW4xSnpOKzhKaHZsS3lsNFFwUHpXSWhQL3haYUs0Y0lJbDFaeUFL?=
=?utf-8?Q?IxtWMPqpgxvDeD07fZA7Wf/0OUbXfMIFsqtiZTUkgUxu?=
X-OriginatorOrg: Nvidia.com
X-MS-Exchange-CrossTenant-Network-Message-Id: a17a3e14-9a54-4b93-1d2c-08dda0b95658
X-MS-Exchange-CrossTenant-AuthSource: CH2PR12MB3990.namprd12.prod.outlook.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jun 2025 03:06:43.5592
(UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a
X-MS-Exchange-CrossTenant-MailboxType: HOSTED
X-MS-Exchange-CrossTenant-UserPrincipalName: UuaFjYdarHZIemQRbNdduAzyyfah315BjfHpEn15LUamyixxDvjiNaw9togE40eCoLvk8UWYIuz6xRwg6Jw8gg==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8604
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Typical noticed-as-I-sent mistake: the prefix should be "rust: sync:",
not "rust: alloc:" (also wrong on patch 4). Not resending just for that,
will fix for v2.


Return-Path: <linux-kernel+bounces-669293-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [139.178.88.99])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 933D441E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:22:29 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by sv.mirrors.kernel.org (Postfix) with ESMTPS id EFD233BCE17
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:22:07 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id 4A49B634EC;
Sun, 1 Jun 2025 03:22:20 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="aBDVm75f"
Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.11])
(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 81DE0C13D;
Sun, 1 Jun 2025 03:22:16 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.11
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748748139; cv=none; b=qjWPx1IC7myLPVfA81vNuDDREu5YB2E2iy/GYS8XDnizBDFCf9YW0w+QQrTZiKNY7zFijmIizm4gxlF5v6xRvNv5P8JJyIrdevHzTcpgQ4bko5kxlYIDXCIQ7vWlUQyRRewu2bdmpAoMkIk1vmj6YkeO185mZyk66tV5eAige5o=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748748139; c=relaxed/simple;
bh=KfwXt46ouribwDJftzP3infZzJnhzn+1maJuukJ238s=;
h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:
Content-Type:Content-Disposition:In-Reply-To; b=pf01a5Vq9ePqwayoIeuDB+WwleIqXHf7+ykLmA/NY0+xSZciiAPHOBIksB+z+Grm40/qnqO9flV3VZJpNRJPgWSaIXrsoG/bASMkvYV9gKxeW+zZoIEjQ2NbXaEI7Debzo8RrBDSSGYxuH5BizNYu/owtI2X38ef2cDvZoYVBwU=
ARC-Authentication-Results:i=1; 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=aBDVm75f; arc=none smtp.client-ip=198.175.65.11
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
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=intel.com; i=@intel.com; q=dns/txt; s=Intel;
t=1748748137; x=1780284137;
h=date:from:to:cc:subject:message-id:references:
mime-version:in-reply-to;
bh=KfwXt46ouribwDJftzP3infZzJnhzn+1maJuukJ238s=;
b=aBDVm75fWJXkQ7+gsOthbCzfA7k5RZHMNPtDn4/hFWBq2US7flXM+VOD
bjD1LJajMkXrGzAHwivAz0R3dbGVG3A61+DvnUFFIe8O/kVd0+/U9PPbr
cK8AOBrHJnQ7e55+A24UpsuX4kFoRqlTX99o2RJ1N90Sq/RBiHS6v9llt
G3gbjcLd6NQcXtzbqGUwWdLcv40yHYo8f1U/mqhEFdG+CHjzJiqdojXT+
QVoxmo/WOVDzdpJcZ4RdOPLEYN5wCvVCc9lHXi7WDByF+pfh3MxJq+rcw
7FslKOcSpwC3eiahRKDQKX8i+AfWufQtx5cMRES8XUOoMsG/h72gee88D
Q==;
X-CSE-ConnectionGUID: X0eYd+9aR96lHaEoXGbgwQ==
X-CSE-MsgGUID: YcUD9mV2RVOos/Zofi12qQ==
X-IronPort-AV: E=McAfee;i="6700,10204,11450"; a="61056170"
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="61056170"
Received: from fmviesa004.fm.intel.com ([10.60.135.144])
by orvoesa103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 May 2025 20:22:16 -0700
X-CSE-ConnectionGUID: d7B4zYg5QCyazhpeoVfGkw==
X-CSE-MsgGUID: MkfM99tQSsumMvxoXuSsUg==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="6.16,200,1744095600";
d="scan'208";a="149390657"
Received: from lkp-server01.sh.intel.com (HELO 1992f890471c) ([10.239.97.150])
by fmviesa004.fm.intel.com with ESMTP; 31 May 2025 20:22:14 -0700
Received: from kbuild by 1992f890471c with local (Exim 4.96)
(envelope-from <lkp@xxxxxxxxx>)
id 1uLZH1-000Ymm-2p;
Sun, 01 Jun 2025 03:22:11 +0000
Date: Sun, 1 Jun 2025 11:21:30 +0800
From: kernel test robot <lkp@xxxxxxxxx>
To: Abd-Alrhman Masalkhi <abd.masalkhi@xxxxxxxxx>,
linux-kernel@xxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx
Cc: llvm@xxxxxxxxxxxxxxx, oe-kbuild-all@xxxxxxxxxxxxxxx, robh@xxxxxxxxxx,
krzk+dt@xxxxxxxxxx, conor+dt@xxxxxxxxxx, arnd@xxxxxxxx,
gregkh@xxxxxxxxxxxxxxxxxxx, abd.masalkhi@xxxxxxxxx
Subject: Re: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series
RFID/NFC chips
Message-ID: <202506011126.RpYXQiPu-lkp@xxxxxxxxx>
References: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20250531081159.2007319-3-abd.masalkhi@xxxxxxxxx>
X-Spam-Status: No, score=-6.3 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED,
DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,
MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi Abd-Alrhman,

kernel test robot noticed the following build errors:

[auto build test ERROR on char-misc/char-misc-linus]
[also build test ERROR on robh/for-next soc/for-next linus/master v6.15]
[cannot apply to char-misc/char-misc-testing char-misc/char-misc-next next-20250530]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Abd-Alrhman-Masalkhi/dt-bindings-misc-Add-binding-for-ST-M24LR-control-interface/20250531-161342
base: char-misc/char-misc-linus
patch link: https://lore.kernel.org/r/20250531081159.2007319-3-abd.masalkhi%40gmail.com
patch subject: [PATCH 2/3] misc: add sysfs control driver for ST M24LR series RFID/NFC chips
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20250601/202506011126.RpYXQiPu-lkp@xxxxxxxxx/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250601/202506011126.RpYXQiPu-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202506011126.RpYXQiPu-lkp@xxxxxxxxx/

All error/warnings (new ones prefixed by >>):

>> drivers/misc/m24lr_ctl.c:378:7: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast]
378 | if (IS_ERR_VALUE(err)) {
| ^~~~~~~~~~~~~~~~~
include/linux/err.h:28:49: note: expanded from macro 'IS_ERR_VALUE'
28 | #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:77:42: note: expanded from macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
drivers/misc/m24lr_ctl.c:499:6: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast]
499 | if (IS_ERR_VALUE(ret))
| ^~~~~~~~~~~~~~~~~
include/linux/err.h:28:49: note: expanded from macro 'IS_ERR_VALUE'
28 | #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:77:42: note: expanded from macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
>> drivers/misc/m24lr_ctl.c:590:23: warning: data argument not used by format string [-Wformat-extra-args]
589 | "Failed to create sysfs entry '%s'\n",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
590 | attr->attr.name, err);
| ^
include/linux/dev_printk.h:156:70: note: expanded from macro 'dev_warn'
156 | dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^
include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ~~~ ^
drivers/misc/m24lr_ctl.c:614:13: warning: data argument not used by format string [-Wformat-extra-args]
613 | "Failed to create sysfs entry '%s'\n",
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
614 | name, err);
| ^
include/linux/dev_printk.h:156:70: note: expanded from macro 'dev_warn'
156 | dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
| ~~~ ^
include/linux/dev_printk.h:110:23: note: expanded from macro 'dev_printk_index_wrap'
110 | _p_func(dev, fmt, ##__VA_ARGS__); \
| ~~~ ^
drivers/misc/m24lr_ctl.c:642:6: warning: cast to 'void *' from smaller integer type 'int' [-Wint-to-void-pointer-cast]
642 | if (IS_ERR_VALUE(err))
| ^~~~~~~~~~~~~~~~~
include/linux/err.h:28:49: note: expanded from macro 'IS_ERR_VALUE'
28 | #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
| ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:77:42: note: expanded from macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
>> drivers/misc/m24lr_ctl.c:645:40: error: too many arguments to function call, expected 3, have 4
645 | err = i2c_mux_add_adapter(muxc, 0, 0, 0);
| ~~~~~~~~~~~~~~~~~~~ ^
include/linux/i2c-mux.h:58:5: note: 'i2c_mux_add_adapter' declared here
58 | int i2c_mux_add_adapter(struct i2c_mux_core *muxc,
| ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
59 | u32 force_nr, u32 chan_id);
| ~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/misc/m24lr_ctl.c:669:14: error: incompatible function pointer types initializing 'int (*)(struct i2c_client *)' with an expression of type 'int (struct i2c_client *, const struct i2c_device_id *)' [-Wincompatible-function-pointer-types]
669 | .probe = m24lr_ctl_probe,
| ^~~~~~~~~~~~~~~
>> drivers/misc/m24lr_ctl.c:670:14: error: incompatible function pointer types initializing 'void (*)(struct i2c_client *)' with an expression of type 'int (struct i2c_client *)' [-Wincompatible-function-pointer-types]
670 | .remove = remove,
| ^~~~~~
5 warnings and 3 errors generated.


vim +645 drivers/misc/m24lr_ctl.c

539
540 static int m24lr_ctl_probe(struct i2c_client *client,
541 const struct i2c_device_id *id)
542 {
543 struct regmap *regmap;
544 struct m24lr_ctl *ctl;
545 struct i2c_mux_core *muxc;
546 const struct m24lr_ctl_chip *chip;
547 struct m24lr_sys_entry *sss = NULL;
548 unsigned int page_size;
549 unsigned int n_sss;
550 int i, err;
551 u8 test;
552 struct device *dev = &client->dev;
553
554 if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
555 return -EOPNOTSUPP;
556
557 chip = m24lr_ctl_get_chip(dev);
558 if (!chip)
559 return -ENODEV;
560
561 ctl = devm_kzalloc(dev, sizeof(struct m24lr_ctl), GFP_KERNEL);
562 if (!ctl)
563 return -ENOMEM;
564
565 err = device_property_read_u32(dev, "pagesize", &page_size);
566 if (!err) {
567 if (!is_power_of_2(page_size)) {
568 dev_warn(dev,
569 "Invalid pagesize lenngth %d (not power of 2); using default %d byte\n",
570 page_size, M24LR_CTL_PAGESIZE_DEFAULT);
571 page_size = M24LR_CTL_PAGESIZE_DEFAULT;
572 }
573 if (page_size > M24LR_CTL_PAGESIZE_LIMIT) {
574 dev_info(dev,
575 "pagesize %d exceeds limit; rounded down to %d\n",
576 page_size, M24LR_CTL_PAGESIZE_LIMIT);
577 page_size = M24LR_CTL_PAGESIZE_LIMIT;
578 }
579 } else { /* use the default */
580 page_size = M24LR_CTL_PAGESIZE_DEFAULT;
581 }
582
583 for (i = 0; i < chip->n_entries; i++) {
584 const struct device_attribute *attr = &chip->entries[i].attr;
585
586 err = device_create_file(dev, attr);
587 if (err)
588 dev_warn(dev,
589 "Failed to create sysfs entry '%s'\n",
> 590 attr->attr.name, err);
591 }
592
593 n_sss = chip->n_sss_entries;
594 if (n_sss) {
595 sss = devm_kzalloc(dev, n_sss * sizeof(struct m24lr_sys_entry),
596 GFP_KERNEL);
597 if (!sss)
598 return -ENOMEM;
599
600 for (i = 0; i < n_sss; i++) {
601 char *name = kasprintf(GFP_KERNEL, "sss%02d", i);
602
603 sss[i].reg_size = 1;
604 sss[i].reg_addr = i;
605 sss[i].attr.attr.name = name;
606 sss[i].attr.attr.mode = 0600;
607 sss[i].attr.show = m24lr_ctl_show;
608 sss[i].attr.store = m24lr_ctl_store;
609
610 err = device_create_file(dev, &sss[i].attr);
611 if (err)
612 dev_warn(dev,
613 "Failed to create sysfs entry '%s'\n",
614 name, err);
615 }
616 }
617
618 regmap = devm_regmap_init_i2c(client, &m24lr_ctl_regmap_conf);
619 if (IS_ERR(regmap)) {
620 err = PTR_ERR(regmap);
621 dev_err(dev, "Failed to init regmap (error: %d)\n", err);
622 return err;
623 }
624
625 muxc = i2c_mux_alloc(client->adapter, &client->dev, 1, 0, I2C_MUX_GATE,
626 m24lr_ctl_gate_select, m24lr_ctl_gate_deselect);
627 if (!muxc)
628 return -ENOMEM;
629
630 muxc->priv = ctl;
631
632 mutex_init(&ctl->gate_lock);
633 ctl->page_size = page_size;
634 ctl->regmap = regmap;
635 ctl->muxc = muxc;
636 ctl->n_sss_entries = n_sss;
637 ctl->sss_entries = sss;
638
639 i2c_set_clientdata(client, ctl);
640
641 err = m24lr_ctl_read(ctl, &test, 1, 0);
642 if (IS_ERR_VALUE(err))
643 return -ENODEV;
644
> 645 err = i2c_mux_add_adapter(muxc, 0, 0, 0);
646 if (err)
647 return err;
648
649 dev_info(&client->dev, "control interface initialized for %s\n",
650 client->name);
651
652 return 0;
653 }
654
655 static int remove(struct i2c_client *client)
656 {
657 struct m24lr_ctl *ctl = i2c_get_clientdata(client);
658
659 i2c_mux_del_adapters(ctl->muxc);
660
661 return 0;
662 }
663
664 static struct i2c_driver m24lr_ctl_driver = {
665 .driver = {
666 .name = "m24lr_ctl",
667 .of_match_table = m24lr_ctl_of_match,
668 },
> 669 .probe = m24lr_ctl_probe,
> 670 .remove = remove,
671 .id_table = m24lr_ctl_ids,
672 };
673 module_i2c_driver(m24lr_ctl_driver);
674

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


Return-Path: <linux-kernel+bounces-669294-lkml=lkml.rescloud.iu.edu@xxxxxxxxxxxxxxx>
X-Original-To: lkml@xxxxxxxxxxxxxxxxxxxx
Delivered-To: lkml@xxxxxxxxxxxxxxxxxxxx
Received: from am.mirrors.kernel.org (am.mirrors.kernel.org [147.75.80.249])
by lkml.rescloud.iu.edu (Postfix) with ESMTPS id 288D941E003FA
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sat, 31 May 2025 23:30:42 -0400 (EDT)
Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140])
(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))
(No client certificate requested)
by am.mirrors.kernel.org (Postfix) with ESMTPS id EBD121898AA0
for <lkml@xxxxxxxxxxxxxxxxxxxx>; Sun, 1 Jun 2025 03:30:54 +0000 (UTC)
Received: from localhost.localdomain (localhost.localdomain [127.0.0.1])
by smtp.subspace.kernel.org (Postfix) with ESMTP id D3BA534CF5;
Sun, 1 Jun 2025 03:30:29 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org;
dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="ozwolDSH"
Received: from casper.infradead.org (casper.infradead.org [90.155.50.34])
(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 694F279C0;
Sun, 1 Jun 2025 03:30:26 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=90.155.50.34
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
t=1748748628; cv=none; b=JNNqHCN//U58k6TbX2UbhHGzpXMFs5Ed5CB/RkAPXSyc6SfMuOExI0wF/AJzwQOZN+sFnxJ80HJB/NmRmAYwCdVOU4mmRuA4mjP0/xvmCRNnT1Uv0FjMGxyvjG9ITThz7Phi78Bw1W3Ncn/BaCBCOqztBmp4qRcyNzlUJr9iQC4=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
s=arc-20240116; t=1748748628; c=relaxed/simple;
bh=cEWEpKaQ4t8kcfW2DjfeskNs8wi6whN1x24yw+xDjCU=;
h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
In-Reply-To:Content-Type; b=QeaSRLGhUcFomxS0KQQizHBS6Gjm+N3htfloG9M4HVs8pRjyyfdLCc03PbrcId+ZxXihhIwEWgHnccBE9uNz5d4Bi7EiW8GNX85m0FpcuIrLWr/V/Ryz/t5njVu4MBXWWbmnAyEWCbqtYd0f4hTSsimBACSuEpNU/jJjIioBl1Q=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org; spf=none smtp.mailfrom=infradead.org; dkim=pass (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b=ozwolDSH; arc=none smtp.client-ip=90.155.50.34
Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org
Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=infradead.org
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;
d=infradead.org; s=casper.20170209; h=Content-Transfer-Encoding:Content-Type:
In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender
:Reply-To:Content-ID:Content-Description;
bh=19UDqAHTr9166dq5eVqV/qBaZTpSvLv9hfDAV+QhXs0=; b=ozwolDSHtM7v0y/Xs+hqcozmG+
zpwJx0X7jaMA1kop8N1JtSMlxRlmaJ6nm/Gb7nbTAN3QVXd0vV2JVsYHkzbFN3yTNxNcnhxwLvDzN
BcKdYQQabVeU3+Kd+zn6lKWOTCs2RAVzhGYvQRgjU0rUPagfsf6d2jhZkT0ZShiFJyQ3SfNpJXLeW
iIhh0mqa3WHvPiQ4mgIxJihMVcAGE8M0IVQ0aQztsqFI386VmYKgwG3kHGqj+0pek0qSI9qH+3vTU
3MRppM1WDq+ao78bC3VpEI2TIGvQNvFdYfDDRogT5WQzRmHvrQasvcIQZVmZs2AYUgCiE8nHs6aay
IZay602w==;
Received: from [50.53.25.54] (helo=[192.168.254.17])
by casper.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux))
id 1uLZOx-0000000HHTW-2NC5;
Sun, 01 Jun 2025 03:30:23 +0000
Message-ID: <3bb7279f-066a-48df-ac8d-cd8e15120aa2@xxxxxxxxxxxxx>
Date: Sat, 31 May 2025 20:30:20 -0700
Precedence: bulk
X-Mailing-List: linux-kernel@xxxxxxxxxxxxxxx
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@xxxxxxxxxxxxxxx>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@xxxxxxxxxxxxxxx>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: PATCH 2/3] security: add Lilium - Linux Integrity Lock-In User
Module - Documentation
To: =?UTF-8?B?4oSw8J2Tg/Cdk4/ihLQg4oSx8J2TivCdk4DihK8=?=
<milesonerd@xxxxxxxxxxx>, "serge@xxxxxxxxxx" <serge@xxxxxxxxxx>
Cc: "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>,
"linux-security-module@xxxxxxxxxxxxxxx"
<linux-security-module@xxxxxxxxxxxxxxx>,
"linux-doc@xxxxxxxxxxxxxxx" <linux-doc@xxxxxxxxxxxxxxx>
References: <SCYP152MB62612944AD5E282EE26871DDB063A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Content-Language: en-US
From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
In-Reply-To: <SCYP152MB62612944AD5E282EE26871DDB063A@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID,
DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,
RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_RPBL_BLOCKED,
RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham
autolearn_force=no version=3.4.6
X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lkml.rescloud.iu.edu

Hi--

On 5/31/25 6:07 PM, â?°ð???ð???â?´ â?±ð???ð???â?¯ wrote:
> From 23d323f793b888bb2ad0d2a7a1ca095d5d64d0b8 Mon Sep 17 00:00:00 2001
> From: Enzo Fuke <milesonerd@xxxxxxxxxxx>
> Date: Sun, 1 Jun 2025 00:11:36 +0000
> Subject: [PATCH] Lilium Documentation
>
> ---
>  Documentation/security/lilium.rst | 402 ++++++++++++++++++++++++++++++
>  1 file changed, 402 insertions(+)
>  create mode 100644 Documentation/security/lilium.rst
>
> diff --git a/Documentation/security/lilium.rst b/Documentation/security/lilium.rst
> new file mode 100644
> index 0000000..bd25ff6
> --- /dev/null
> +++ b/Documentation/security/lilium.rst
> @@ -0,0 +1,402 @@
> +.. SPDX-License-Identifier: GPL-2.0-only
> +
> +==============================================
> +Lilium (Linux Integrity Lock-In User Module)
> +==============================================
> +
> +:Author: Enzo Fuke
> +:Date: May 2025
> +:Version: 1.0
> +
> +Introduction
> +============
> +
> +Lilium (Linux Integrity Lock-In User Module) is a Linux Security Module (LSM)
> +designed to enhance system security by providing fine-grained control over
> +critical system operations. It implements a modular approach to security,
> +allowing administrators to selectively enable specific security mechanisms
> +based on their requirements.
> +
> +The name "Lilium" is an acronym for "Linux Integrity Lock-In User Module",
> +reflecting its purpose of locking down various system operations to maintain
> +system integrity and security.
> +
> +Security Philosophy
> +------------------

Underline must be at least as long as the heading text.

> +
> +Lilium follows the principle of "secure by default but configurable". All
> +security mechanisms are disabled by default to ensure compatibility with
> +existing systems, but can be easily enabled individually through the sysfs
> +interface. This approach allows administrators to gradually implement security
> +measures without disrupting system functionality.
> +
> +The module is designed with the following principles in mind:
> +
> +1. **Modularity**: Each security mechanism can be enabled independently.
> +2. **Contextual Logic**: Security decisions consider the context of operations.
> +3. **Least Privilege**: Restrictions follow the principle of least privilege.
> +4. **Compatibility**: Works alongside other LSMs in the Linux security stack.
> +
> +Features
> +========
> +
> +Lilium provides the following security mechanisms, each addressing specific
> +security concerns:
> +

[snip]


> +Runtime Configuration
> +--------------------
> +
> +Lilium features can be enabled or disabled at runtime through the sysfs
> +interface. This allows for dynamic configuration without rebooting the system.
> +
> +The sysfs interface is located at `/sys/kernel/lilium/` and provides the
> +following control files:

I think that the path should be `/sys/kernel/security/lilium/` to match the
other LSMs.

Same for below:

> +
> +.. code-block:: bash
> +
> +    # Enable ptrace restrictions
> +    echo 1 > /sys/kernel/lilium/ptrace_enabled
> +
> +    # Disable ptrace restrictions
> +    echo 0 > /sys/kernel/lilium/ptrace_enabled
> +
> +Available sysfs controls:
> +
> +- **/sys/kernel/lilium/ptrace_enabled**: Controls ptrace restrictions
> +- **/sys/kernel/lilium/mprotect_enabled**: Controls mmap/mprotect restrictions
> +- **/sys/kernel/lilium/kexec_enabled**: Controls kexec_load restrictions
> +- **/sys/kernel/lilium/clone_enabled**: Controls clone/unshare restrictions
> +- **/sys/kernel/lilium/module_enabled**: Controls module management restrictions
> +- **/sys/kernel/lilium/open_enabled**: Controls file open restrictions
> +- **/sys/kernel/lilium/ioctl_enabled**: Controls ioctl restrictions
> +
> +Each control file accepts the following values:
> +
> +- **0**: Disable the feature (default)
> +- **1**: Enable the feature

[snip]

> +Implementation Details
> +=====================
> +
> +Hook Registration
> +----------------
> +
> +Lilium registers security hooks for various kernel operations using the LSM
> +framework. These hooks are called by the kernel before performing the
> +corresponding operations, allowing Lilium to make security decisions.
> +
> +The hooks are registered in the `lilium_init` function using the
> +`security_add_hooks` function provided by the LSM framework.
> +
> +Security Decision Logic
> +----------------------

Underline needs to be longer...

Did you 'make htmldocs' to test this?

> +
> +Lilium implements contextual logic for each security hook to determine whether
> +an operation should be allowed or denied. The decision logic follows these
> +general principles:

[snip]

> +Troubleshooting
> +==============

Longer underline...

> +
> +Common Issues
> +------------

ditto.

> +
> +1. **Operation Denied Unexpectedly**
> +
> +   If an operation is denied unexpectedly, check which Lilium features are
> +   enabled:
> +
> +   .. code-block:: bash
> +
> +       cat /sys/kernel/lilium/*/
> +
> +   Disable the relevant feature temporarily to confirm if Lilium is causing
> +   the issue:
> +
> +   .. code-block:: bash
> +
> +       echo 0 > /sys/kernel/lilium/feature_enabled
> +
> +2. **Lilium Not Appearing in sysfs**
> +
> +   If the Lilium sysfs interface is not available, check if Lilium is enabled
> +   in the kernel:
> +
> +   .. code-block:: bash
> +
> +       cat /proc/cmdline | grep lsm
> +
> +   Ensure that "lilium" is included in the lsm parameter.
> +
> +3. **Conflicts with Other Security Modules**
> +
> +   If you experience conflicts with other security modules, check the kernel
> +   log for any error messages:
> +
> +   .. code-block:: bash
> +
> +       dmesg | grep lilium
> +
> +Debugging
> +--------

ditto.

> +
> +Lilium logs important events and errors to the kernel log. You can view these
> +messages using dmesg:
> +
> +.. code-block:: bash
> +
> +    dmesg | grep lilium
> +
> +For more detailed debugging, you can enable kernel debug options for LSMs
> +during kernel compilation.
> +
> +Security Considerations
> +======================

ditto.

> +
> +While Lilium provides additional security controls, it should be considered
> +as part of a defense-in-depth strategy, not a complete security solution.
> +
> +Best Practices
> +-------------

ditto.

> +
> +1. **Start with Minimal Restrictions**: Enable only the features you need to
> +   minimize potential compatibility issues.
> +
> +2. **Test Thoroughly**: Test your configuration in a non-production environment
> +   before deploying to production.
> +
> +3. **Combine with Other Security Measures**: Use Lilium alongside other security
> +   measures like SELinux, AppArmor, seccomp, and regular system updates.
> +
> +4. **Monitor System Logs**: Regularly monitor system logs for any security
> +   events or denied operations.
> +
> +5. **Keep Documentation**: Document your security configuration for future
> +   reference and auditing purposes.
> +
> +Limitations
> +----------
> +
> +1. Lilium cannot protect against all types of attacks or vulnerabilities.
> +
> +2. Some applications may not function correctly with certain restrictions
> +   enabled.
> +
> +3. Lilium operates at the kernel level and cannot protect against user-level
> +   threats without appropriate configuration.
> +
> +Future Development
> +=================

ditto.

> +
> +Planned Features
> +---------------

ditto.

> +
> +1. **Enhanced Logging**: More detailed logging of security events and decisions.
> +
> +2. **Fine-grained Controls**: More granular control over security restrictions.
> +
> +3. **Policy Language**: A simple policy language for configuring Lilium.
> +
> +4. **Integration with Audit**: Better integration with the Linux audit system.
> +
> +Contributing
> +-----------

ditto.

> +
> +Contributions to Lilium are welcome. Please follow the standard Linux kernel
> +development process for submitting patches.


--
~Randy