From: David Heidelberg <david@ixit.cz>
To: Bjorn Andersson <andersson@kernel.org>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>
Cc: David Heidelberg <david@ixit.cz>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	linux-arm-msm@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] ARM: dts: qcom: msm8960: correct memory base
Date: Sat,  6 Jul 2024 15:00:30 -0700
Message-ID: <20240706220041.241839-1-david@ixit.cz>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269922
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

DeviceTree validation requires a unit address on the memory node, adjust
the base to match [Ref] and use this as unit address.

The bootloader will update the information with the actual values during
boot.

Ref: https://github.com/msm8916-mainline/lk2nd/blob/main/target/msm8960/rules.mk

Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: David Heidelberg <david@ixit.cz>
---
 arch/arm/boot/dts/qcom/qcom-msm8960.dtsi | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
index a9c6d2dbb460..ebc43c5c6e5f 100644
--- ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
+++ ./arch/arm/boot/dts/qcom/qcom-msm8960.dtsi
@@ -47,9 +47,9 @@ L2: l2-cache {
 		};
 	};
 
-	memory {
+	memory@80000000 {
 		device_type = "memory";
-		reg = <0x0 0x0>;
+		reg = <0x80000000 0>;
 	};
 
 	cpu-pmu {
-- 
2.45.2

.

Date: Sun, 07 Jul 2024 06:42:40 +0800
From: kernel test robot <lkp@intel.com>
To: "x86-ml" <x86@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [tip:master] BUILD SUCCESS
 7a368a53e7a149bce3e7d48f2e54023762e6c7b8
Message-ID: <202407070638.zHdtzsS6-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269943
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git master
branch HEAD: 7a368a53e7a149bce3e7d48f2e54023762e6c7b8  Merge branch into tip/master: 'x86/vmware'

elapsed time: 872m

configs tested: 130
configs skipped: 2

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                          axs103_defconfig   gcc-13.2.0
arc                   randconfig-001-20240706   gcc-13.2.0
arc                   randconfig-002-20240706   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   clang-19
arm                              allyesconfig   gcc-13.2.0
arm                        clps711x_defconfig   clang-19
arm                          gemini_defconfig   clang-19
arm                       netwinder_defconfig   gcc-13.2.0
arm                         nhk8815_defconfig   clang-19
arm                       omap2plus_defconfig   gcc-13.2.0
arm                   randconfig-001-20240706   gcc-13.2.0
arm                   randconfig-002-20240706   gcc-13.2.0
arm                   randconfig-003-20240706   gcc-13.2.0
arm                   randconfig-004-20240706   gcc-13.2.0
arm64                            allmodconfig   clang-19
arm64                             allnoconfig   gcc-13.2.0
arm64                 randconfig-001-20240706   gcc-13.2.0
arm64                 randconfig-002-20240706   gcc-13.2.0
arm64                 randconfig-003-20240706   clang-16
arm64                 randconfig-004-20240706   clang-19
csky                              allnoconfig   gcc-13.2.0
csky                  randconfig-001-20240706   gcc-13.2.0
csky                  randconfig-002-20240706   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                           allnoconfig   clang-19
hexagon                          allyesconfig   clang-19
hexagon               randconfig-001-20240706   clang-19
hexagon               randconfig-002-20240706   clang-15
i386                             allmodconfig   gcc-13
i386                              allnoconfig   gcc-13
i386                             allyesconfig   gcc-13
i386                                defconfig   clang-18
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch             randconfig-001-20240706   gcc-13.2.0
loongarch             randconfig-002-20240706   gcc-13.2.0
m68k                             alldefconfig   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
mips                      loongson3_defconfig   gcc-13.2.0
mips                  maltasmvp_eva_defconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                 randconfig-001-20240706   gcc-13.2.0
nios2                 randconfig-002-20240706   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                randconfig-001-20240706   gcc-13.2.0
parisc                randconfig-002-20240706   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   clang-19
powerpc                     ksi8560_defconfig   gcc-13.2.0
powerpc                   microwatt_defconfig   gcc-13.2.0
powerpc                     mpc83xx_defconfig   clang-19
powerpc               randconfig-001-20240706   gcc-13.2.0
powerpc               randconfig-002-20240706   gcc-13.2.0
powerpc               randconfig-003-20240706   clang-19
powerpc                     taishan_defconfig   clang-19
powerpc64             randconfig-001-20240706   gcc-13.2.0
powerpc64             randconfig-002-20240706   gcc-13.2.0
powerpc64             randconfig-003-20240706   clang-19
riscv                            allmodconfig   clang-19
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   clang-19
riscv                               defconfig   clang-19
riscv                 randconfig-001-20240706   gcc-13.2.0
riscv                 randconfig-002-20240706   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   clang-19
s390                  randconfig-001-20240706   gcc-13.2.0
s390                  randconfig-002-20240706   clang-19
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                    randconfig-001-20240706   gcc-13.2.0
sh                    randconfig-002-20240706   gcc-13.2.0
sh                           se7619_defconfig   gcc-13.2.0
sh                        sh7785lcr_defconfig   gcc-13.2.0
sh                              ul2_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240706   gcc-13.2.0
sparc64               randconfig-002-20240706   gcc-13.2.0
um                               allmodconfig   clang-19
um                                allnoconfig   clang-17
um                               allyesconfig   gcc-13
um                                  defconfig   clang-19
um                             i386_defconfig   gcc-13
um                    randconfig-001-20240706   clang-19
um                    randconfig-002-20240706   gcc-13
um                           x86_64_defconfig   clang-15
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64       buildonly-randconfig-001-20240706   clang-18
x86_64       buildonly-randconfig-002-20240706   clang-18
x86_64       buildonly-randconfig-003-20240706   clang-18
x86_64       buildonly-randconfig-004-20240706   clang-18
x86_64       buildonly-randconfig-005-20240706   gcc-13
x86_64       buildonly-randconfig-006-20240706   clang-18
x86_64                              defconfig   gcc-13
x86_64                randconfig-001-20240706   gcc-9
x86_64                randconfig-002-20240706   clang-18
x86_64                randconfig-003-20240706   clang-18
x86_64                randconfig-004-20240706   clang-18
x86_64                randconfig-005-20240706   clang-18
x86_64                randconfig-006-20240706   clang-18
x86_64                randconfig-011-20240706   gcc-12
x86_64                randconfig-012-20240706   gcc-12
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                randconfig-002-20240706   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Sungwoo Kim <iam@sung-woo.kim>
To: 
Cc: daveti@purdue.edu,
	benquike@gmail.com,
	Sungwoo Kim <iam@sung-woo.kim>,
	Marcel Holtmann <marcel@holtmann.org>,
	Johan Hedberg <johan.hedberg@gmail.com>,
	Luiz Augusto von Dentz <luiz.dentz@gmail.com>,
	linux-bluetooth@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2] Bluetooth: hci: fix null-ptr-deref in hci_read_supported_codecs
Date: Sat,  6 Jul 2024 18:51:24 -0400
Message-Id: <20240706225124.1247944-1-iam@sung-woo.kim>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269947
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-bluetooth
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

__hci_cmd_sync_sk() returns NULL if a command returns a status event
as there are no parameters.
Fix __hci_cmd_sync_sk() to not return NULL.

KASAN: null-ptr-deref in range [0x0000000000000070-0x0000000000000077]
CPU: 1 PID: 2000 Comm: kworker/u9:5 Not tainted 6.9.0-ga6bcb805883c-dirty #10
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.15.0-1 04/01/2014
Workqueue: hci7 hci_power_on
RIP: 0010:hci_read_supported_codecs+0xb9/0x870 net/bluetooth/hci_codec.c:138
Code: 08 48 89 ef e8 b8 c1 8f fd 48 8b 75 00 e9 96 00 00 00 49 89 c6 48 ba 00 00 00 00 00 fc ff df 4c 8d 60 70 4c 89 e3 48 c1 eb 03 <0f> b6 04 13 84 c0 0f 85 82 06 00 00 41 83 3c 24 02 77 0a e8 bf 78
RSP: 0018:ffff888120bafac8 EFLAGS: 00010212
RAX: 0000000000000000 RBX: 000000000000000e RCX: ffff8881173f0040
RDX: dffffc0000000000 RSI: ffffffffa58496c0 RDI: ffff88810b9ad1e4
RBP: ffff88810b9ac000 R08: ffffffffa77882a7 R09: 1ffffffff4ef1054
R10: dffffc0000000000 R11: fffffbfff4ef1055 R12: 0000000000000070
R13: 0000000000000000 R14: 0000000000000000 R15: ffff88810b9ac000
FS:  0000000000000000(0000) GS:ffff8881f6c00000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f6ddaa3439e CR3: 0000000139764003 CR4: 0000000000770ef0
PKRU: 55555554
Call Trace:
 <TASK>
 hci_read_local_codecs_sync net/bluetooth/hci_sync.c:4546 [inline]
 hci_init_stage_sync net/bluetooth/hci_sync.c:3441 [inline]
 hci_init4_sync net/bluetooth/hci_sync.c:4706 [inline]
 hci_init_sync net/bluetooth/hci_sync.c:4742 [inline]
 hci_dev_init_sync net/bluetooth/hci_sync.c:4912 [inline]
 hci_dev_open_sync+0x19a9/0x2d30 net/bluetooth/hci_sync.c:4994
 hci_dev_do_open net/bluetooth/hci_core.c:483 [inline]
 hci_power_on+0x11e/0x560 net/bluetooth/hci_core.c:1015
 process_one_work kernel/workqueue.c:3267 [inline]
 process_scheduled_works+0x8ef/0x14f0 kernel/workqueue.c:3348
 worker_thread+0x91f/0xe50 kernel/workqueue.c:3429
 kthread+0x2cb/0x360 kernel/kthread.c:388
 ret_from_fork+0x4d/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244

Fixes: abfeea476c68 ("Bluetooth: hci_sync: Convert MGMT_OP_START_DISCOVERY")

Signed-off-by: Sungwoo Kim <iam@sung-woo.kim>
---
v1 -> v2: make __hci_cmd_sync_sk() not return NULL

 net/bluetooth/hci_sync.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 76b283b8e..c4e4abc6e 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -201,6 +201,12 @@ struct sk_buff *__hci_cmd_sync_sk(struct hci_dev *hdev, u16 opcode, u32 plen,
 		return ERR_PTR(err);
 	}
 
+	/* If command return a status event skb will be set to NULL as there are
+	 * no parameters.
+	 */
+	if (!skb)
+		return ERR_PTR(-ENODATA);
+
 	return skb;
 }
 EXPORT_SYMBOL(__hci_cmd_sync_sk);
@@ -250,6 +256,11 @@ int __hci_cmd_sync_status_sk(struct hci_dev *hdev, u16 opcode, u32 plen,
 	u8 status;
 
 	skb = __hci_cmd_sync_sk(hdev, opcode, plen, param, event, timeout, sk);
+
+	/* If command return a status event, skb will be set to -ENODATA */
+	if (skb == ERR_PTR(-ENODATA))
+		return 0;
+
 	if (IS_ERR(skb)) {
 		if (!event)
 			bt_dev_err(hdev, "Opcode 0x%4.4x failed: %ld", opcode,
@@ -257,13 +268,6 @@ int __hci_cmd_sync_status_sk(struct hci_dev *hdev, u16 opcode, u32 plen,
 		return PTR_ERR(skb);
 	}
 
-	/* If command return a status event skb will be set to NULL as there are
-	 * no parameters, in case of failure IS_ERR(skb) would have be set to
-	 * the actual error would be found with PTR_ERR(skb).
-	 */
-	if (!skb)
-		return 0;
-
 	status = skb->data[0];
 
 	kfree_skb(skb);
-- 
2.34.1

.

From: Michael Ellerman <mpe@ellerman.id.au>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: anjalik@linux.ibm.com, ganeshgr@linux.ibm.com, jinglin.wen@shingroup.cn,
 linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
 npiggin@gmail.com
Subject: [GIT PULL] Please pull powerpc/linux.git powerpc-6.10-4 tag
Date: Sun, 07 Jul 2024 09:28:50 +1000
Message-ID: <87wmly2j7x.fsf@mail.lhotse>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269959
Newsgroups: org.kernel.vger.linux-kernel,org.ozlabs.lists.linuxppc-dev
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hi Linus,

Please pull some more powerpc fixes for 6.10:

The following changes since commit a986fa57fd81a1430e00b3c6cf8a325d6f894a63:

  KVM: PPC: Book3S HV: Prevent UAF in kvm_spapr_tce_attach_iommu_group() (2024-06-16 10:20:11 +1000)

are available in the git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git tags/powerpc-6.10-4

for you to fetch changes up to 8b7f59de92ac65aa21c7d779274dbfa577ae2d2c:

  selftests/powerpc: Fix build with USERCFLAGS set (2024-07-06 22:10:14 +1000)

- ------------------------------------------------------------------
powerpc fixes for 6.10 #4

 - Fix unnecessary copy to 0 when kernel is booted at address 0.

 - Fix usercopy crash when dumping dtl via debugfs.

 - Avoid possible crash when PCI hotplug races with error handling.

 - Fix kexec crash caused by scv being disabled before other CPUs call-in.

 - Fix powerpc selftests build with USERCFLAGS set.

Thanks to: Anjali K, Ganesh Goudar, Gautam Menghani, Jinglin Wen, Nicholas
Piggin, Sourabh Jain, Srikar Dronamraju, Vishal Chourasia.

- ------------------------------------------------------------------
Anjali K (1):
      powerpc/pseries: Whitelist dtl slub object for copying to userspace

Ganesh Goudar (1):
      powerpc/eeh: avoid possible crash when edev->pdev changes

Jinglin Wen (1):
      powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at address 0

Michael Ellerman (1):
      selftests/powerpc: Fix build with USERCFLAGS set

Nicholas Piggin (1):
      powerpc/pseries: Fix scv instruction crash with kexec


 arch/powerpc/kernel/eeh_pe.c             |  7 +++++--
 arch/powerpc/kernel/head_64.S            |  5 +++--
 arch/powerpc/kexec/core_64.c             | 11 +++++++++++
 arch/powerpc/platforms/pseries/kexec.c   |  8 --------
 arch/powerpc/platforms/pseries/pseries.h |  1 -
 arch/powerpc/platforms/pseries/setup.c   |  5 ++---
 tools/testing/selftests/powerpc/flags.mk |  5 +----
 7 files changed, 22 insertions(+), 20 deletions(-)
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCAAdFiEEJFGtCPCthwEv2Y/bUevqPMjhpYAFAmaJ0hYACgkQUevqPMjh
pYB1uBAAhxsR3VV+XLbJTkhEARgUdzZt+8AMk4oc7dzPx1xUIavXJqaMGdoCGDcu
0atvYlyel2CAFHbjRkaIzOxg2ZUtXdOvio4udeFvb48DCnaaH0WsOdG70OIThtX0
Zl+lkRgRy5SM1KPJUa+o9ygvi90ZNbOV358h/ar9l4O7EULmOqZwlZYAhlEYr25B
MtvX6ZONGOgl5SxVr9+55vLm0/g97OzuGmi343XHEdHjBhH5HkcKi8Z5XkwYFGOt
cExZFVtWnayM+PsUkympt3o5Zchb+oc1EUAJWUILQJQMHx89atc9Q0pxZyi7XXA/
tT8mq0O78+iZbK1UuQ3qgE1/YPrHCdX8Glo0AmGoSem8P41HlWyamK28U4aK6VWd
iqJCb25EZmKs5uo4Z0F10jswjc9QOgFftzgM74GCLkZ74vx3ubw9vKacRb/SkdLi
vQz0M0Gh73tqwfjN0W3gRwWblCim3kCoHVBb8CmiB0YeDoq7nu2+ow94WFrhlvs+
/HFOQ5NgnMhjzytmeAzWOk0s/xOXPCwbrEUjfRxRg5cZCWXUuO6XmeO547pZy2Ke
JwBWO+Hi9b5jwC/5LEQZ3wJ2rjSCJwDKT8MwqvcSSsEXvpGvsjMCi4mTqVVlbRkQ
qz/lv0PozyavP/AUPamX0wZ0k5df/XDkX1qxoxyG/x1HXlwDhJ4=
=7pyj
-----END PGP SIGNATURE-----
.

From: weilin.wang@intel.com
To: weilin.wang@intel.com,
	Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Jiri Olsa <jolsa@kernel.org>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Kan Liang <kan.liang@linux.intel.com>
Cc: linux-perf-users@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Perry Taylor <perry.taylor@intel.com>,
	Samantha Alt <samantha.alt@intel.com>,
	Caleb Biggers <caleb.biggers@intel.com>
Subject: [RFC PATCH v16 0/8] TPEBS counting mode support
Date: Sat,  6 Jul 2024 19:29:47 -0400
Message-ID: <20240706232956.304944-1-weilin.wang@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269960
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Weilin Wang <weilin.wang@intel.com>

Changes in v16:
 - Update tpebs bash test code and variable name.
 - Add a check to ensure only use "-C" option when cpumap is not "-1" when
 forking "perf record".

Changes in v15:
 - Revert changes added for python import test failure in v14 because the code
 works correctly with the new python build code.
 - Update the command line option to --record-tpebs.

Changes in v14:
 - Fix the python import test failure. We cannot support PYTHON_PERF because it
 will trigger a chain of dependency issues if we add intel-tpebs.c to it. So,
 only enable tpebs functions in evsel and evlist when PYTHON_PERF is not
 defined.
 - Fix shellcheck warning for the tpebs test.

Changes in v13:
 - Add document for the command line option and fix build error in non-x86_64.
 - Update example with non-zero retire_latency value when tpebs recording is
 enabled.
 - Add tpebs_stop() back to tpebs_set_evsel() because in hybrid platform, when
 the forked perf record is not killed, the reader thread does not get any
 sampled data from the PIPE. As a result, tpebs_set_evesel() will always return
 zero on retire_latency values. This does not happen on my test GNR machine.
 Since -I is not supported yet, I think we should add tpebs_stop() to ensure
 correctness for now. More investigation is required here when we work on
 supporting -I mode.
 - Rebase code on top of perf-tools-next.

Changes in v12:
 - Update MTL metric JSON file to include E-Core TMA3.6 changes.
 - Update comments and code for better code quality. Keep tpebs_start() and
 tpebs_delete() at evsel level for now and add comments on these functions with
 more details about potential future changes. Remove tpebs_stop() call from
 tpebs_set_evsel(). Simplify the tpebs_start() and tpebs_stop()/tpebs_delete()
 interfaces. Also fixed the bugs on not freed "new" pointer and the incorrect
 variable value assignment to val instead of counter->val.

Changes in v11:
 - Make retire_latency evsels not opened for counting. This works correctly now
 with the code Namhyung suggested that adjusting group read size when
 retire_latency evsels included in the group.
 - Update retire_latency value assignment using rint() to reduce precision loss
 while keeping code generic.
 - Fix the build error caused by not used variable in the test.

Other changes in v10:
 - Change perf record fork from perf stat to evsel. All the major operations
 like tpebs start, stop, read_evsel should directly work through evsel.
 - Make intel-tpebs x86_64 only. This change is cross-compiled to arm64.
 - Put tpebs code to intel-tepbs and simplify intel-tpebs APIs to minimum number
of functions and variables. Update funtion name and variable names to use
consistent prefix. Also improve error handling.
 - Integrate code patch from Ian for the :R parser.
 - Update MTL metrics to TMA 4.8.

V9: https://lore.kernel.org/all/20240521173952.3397644-1-weilin.wang@intel.com/

Changes in v9:
 - Update the retire_latency result print and metric calculation method. Plugin
the value to evsel so that no special code is required.
 - Update --control:fifo to use pipe instead of named pipe.
 - Add test for TPEBS counting mode.
 - Update Document with more details.

Changes in v8:
 - In this revision, the code is updated to base on Ian's patch on R modifier
parser https://lore.kernel.org/lkml/20240428053616.1125891-3-irogers@google.com/
After this change, there is no special code required for R modifier in
metricgroup.c and metricgroup.h files.

Caveat of this change:
  Ideally, we will need to add special handling to skip counting events with R
modifier in evsel. Currently, this is not implemented so the event with :R will
be both counted and sampled. Usually, in a metric formula that uses retire_latency,
it would already require to count the event. As a result, we will endup count the
same event twice. This should be able to be handled properly when we finalize our
design on evsel R modifier support.

 - Move TPEBS specific code out from main perf stat code to separate files in
util/intel-tpebs.c and util/intel-tpebs.h. [Namhyung]
 - Use --control:fifo to ack perf stat from forked perf record instead of sleep(2) [Namhyung]
 - Add introductions about TPEBS and R modifier in Documents. [Namhyung]


Changes in v7:
 - Update code and comments for better code quality [Namhyung]
 - Add a separate commit for perf data [Namhyung]
 - Update retire latency print function to improve alignment [Namhyung]

Changes in v6:
 - Update code and add comments for better code quality [Namhyung]
 - Remove the added fd var and directly pass the opened fd to data.file.fd [Namhyung]
 - Add kill() to stop perf record when perf stat exists early [Namhyung]
 - Add command opt check to ensure only start perf record when -a/-C given [Namhyung]
 - Squash commits [Namhyung]

Changes in v5:
 - Update code and add comments for better code quality [Ian]

Changes in v4:
 - Remove uncessary debug print and update code and comments for better
readability and quality [Namhyung]
 - Update mtl metric json file with consistent TmaL1 and TopdownL1 metricgroup

Changes in v3:
 - Remove ':' when event name has '@' [Ian]
 - Use 'R' as the modifier instead of "retire_latency" [Ian]

Changes in v2:
 - Add MTL metric file
 - Add more descriptions and example to the patch [Arnaldo]

Here is an example of running perf stat to collect a metric that uses
retire_latency value of event MEM_INST_RETIRED.STLB_HIT_STORES on a MTL system.

In this simple example, there is no MEM_INST_RETIRED.STLB_HIT_STORES sample.
Therefore, the MEM_INST_RETIRED.STLB_HIT_STORES:p count and retire_latency value
are all 0.

./perf stat -M tma_dtlb_store -a -- sleep 1

[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.000 MB - ]

 Performance counter stats for 'system wide':

       181,047,168      cpu_core/TOPDOWN.SLOTS/          #      0.6 %  tma_dtlb_store
         3,195,608      cpu_core/topdown-retiring/
        40,156,649      cpu_core/topdown-mem-bound/
         3,550,925      cpu_core/topdown-bad-spec/
       117,571,818      cpu_core/topdown-fe-bound/
        57,118,087      cpu_core/topdown-be-bound/
            69,179      cpu_core/EXE_ACTIVITY.BOUND_ON_STORES/
             4,582      cpu_core/MEM_INST_RETIRED.STLB_HIT_STORES/
        30,183,104      cpu_core/CPU_CLK_UNHALTED.DISTRIBUTED/
        30,556,790      cpu_core/CPU_CLK_UNHALTED.THREAD/
           168,486      cpu_core/DTLB_STORE_MISSES.WALK_ACTIVE/
              0.00 MEM_INST_RETIRED.STLB_HIT_STORES:p       0        0

       1.003105924 seconds time elapsed

v1:
TPEBS is one of the features provided by the next generation of Intel PMU.
Please refer to Section 8.4.1 of "Intel® Architecture Instruction Set Extensions
Programming Reference" [1] for more details about this feature.

This set of patches supports TPEBS in counting mode. The code works in the
following way: it forks a perf record process from perf stat when retire_latency
of one or more events are used in a metric formula. Perf stat would send a
SIGTERM signal to perf record before it needs the retire latency value for
metric calculation. Perf stat will then process sample data to extract the
retire latency data for metric calculations. Currently, the code uses the
arithmetic average of retire latency values.

[1] https://www.intel.com/content/www/us/en/content-details/812218/intel-architecture-instruction-set-extensions-programming-reference.html?wapkw=future%20features




Ian Rogers (1):
  perf parse-events: Add a retirement latency modifier

Weilin Wang (7):
  perf data: Allow to use given fd in data->file.fd
  perf stat: Fork and launch perf record when perf stat needs to get
    retire latency value for a metric.
  perf stat: Plugin retire_lat value from sampled data to evsel
  perf vendor events intel: Add MTL metric json files
  perf stat: Add command line option for enabling tpebs recording
  perf Document: Add TPEBS to Documents
  perf test: Add test for Intel TPEBS counting mode

 tools/perf/Documentation/perf-list.txt        |    1 +
 tools/perf/Documentation/perf-stat.txt        |    8 +
 tools/perf/Documentation/topdown.txt          |   30 +
 tools/perf/arch/x86/util/evlist.c             |    6 +
 tools/perf/builtin-stat.c                     |    8 +
 .../arch/x86/meteorlake/metricgroups.json     |  142 +
 .../arch/x86/meteorlake/mtl-metrics.json      | 2535 +++++++++++++++++
 .../perf/tests/shell/test_stat_intel_tpebs.sh |   18 +
 tools/perf/util/Build                         |    1 +
 tools/perf/util/data.c                        |    7 +-
 tools/perf/util/evlist.c                      |    2 +
 tools/perf/util/evsel.c                       |   81 +-
 tools/perf/util/evsel.h                       |    6 +
 tools/perf/util/intel-tpebs.c                 |  409 +++
 tools/perf/util/intel-tpebs.h                 |   35 +
 tools/perf/util/parse-events.c                |    2 +
 tools/perf/util/parse-events.h                |    1 +
 tools/perf/util/parse-events.l                |    3 +-
 18 files changed, 3291 insertions(+), 4 deletions(-)
 create mode 100644 tools/perf/pmu-events/arch/x86/meteorlake/metricgroups.json
 create mode 100644 tools/perf/pmu-events/arch/x86/meteorlake/mtl-metrics.json
 create mode 100755 tools/perf/tests/shell/test_stat_intel_tpebs.sh
 create mode 100644 tools/perf/util/intel-tpebs.c
 create mode 100644 tools/perf/util/intel-tpebs.h

--
2.43.0

.

Message-ID: <51a4022c-e5a7-48c2-8c87-0e26a1b7b406@gmail.com>
Date: Sun, 7 Jul 2024 01:54:12 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
To: linux-input@vger.kernel.org
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>,
 linux-kernel@vger.kernel.org, Felipe Balbi <me@felipebalbi.com>,
 Peter De Schrijver <peter.de-schrijver@nokia.com>
From: Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: [PROBLEM linux-next] drivers/input/misc/twl4030-pwrbutton.c:33:
 warning: expecting prototype for twl4030().
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269970
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-input
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,

This is the result of testing randconfig with KCONFIG_SEED=0xEE7AB52F in next-20240703 vanilla tree on
Ubuntu 22.04 LTS. GCC used is gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0.

The particular warning is as follows:

drivers/input/misc/twl4030-pwrbutton.c:33: warning: expecting prototype for twl4030(). Prototype was for PWR_PWRON_IRQ() instead

The offending line was brought with the commit 68d8bf0436001.

 23 #include <linux/module.h>
 24 #include <linux/init.h>
 25 #include <linux/kernel.h>
 26 #include <linux/errno.h>
 27 #include <linux/input.h>
 28 #include <linux/interrupt.h>
 29 #include <linux/of.h>
 30 #include <linux/platform_device.h>
 31 #include <linux/mfd/twl.h>
 32 
 33 #define PWR_PWRON_IRQ (1 << 0)
 34 

This time I really cannot tell what is confusing the compiler (GCC 12.3.0).

As we know, warnings might be a sign that something is wrong which I cannot see, but you might.

Best regards,
Mirsad Todorovac
.

Message-ID: <5dae5aa1-99a4-4509-87b8-b8fd1a599065@gmail.com>
Date: Sun, 7 Jul 2024 01:59:19 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Johan Jonker <jbx6244@gmail.com>
Subject: [PATCH v2] drm/rockchip: inno_hdmi: add audio support
To: heiko@sntech.de
Cc: hjc@rock-chips.com, andy.yan@rock-chips.com,
 maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de,
 airlied@gmail.com, daniel@ffwll.ch, lgirdwood@gmail.com, broonie@kernel.org,
 linux-sound@vger.kernel.org, dri-devel@lists.freedesktop.org,
 linux-arm-kernel@lists.infradead.org, linux-rockchip@lists.infradead.org,
 linux-kernel@vger.kernel.org
Content-Language: en-US
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269972
Newsgroups: org.kernel.vger.linux-kernel,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-rockchip,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Add sound support to the INNO HDMI driver.
The HDMI TX audio source is connected to I2S.
Using the common hdmi-codec driver to support hdmi audio function.

Signed-off-by: Yakir Yang <ykk@rock-chips.com>
Signed-off-by: Johan Jonker <jbx6244@gmail.com>
---

NOT TESTED WITH HARDWARE

Changed V2:
  rebased
  hook to encoder->funcs->late_register
  return -EPROBE_DEFER as early as possible
  rename and update inno_hdmi_disable_frame() function
  avi and aai frames can not be disabled (See TRM)
  restyle
---
 drivers/gpu/drm/rockchip/inno_hdmi.c | 295 ++++++++++++++++++++++++---
 drivers/gpu/drm/rockchip/inno_hdmi.h |   2 +
 2 files changed, 263 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.c b/drivers/gpu/drm/rockchip/inno_hdmi.c
index 3df2cfcf9998..9c28080a0e27 100644
--- a/drivers/gpu/drm/rockchip/inno_hdmi.c
+++ b/drivers/gpu/drm/rockchip/inno_hdmi.c
@@ -22,12 +22,20 @@
 #include <drm/drm_probe_helper.h>
 #include <drm/drm_simple_kms_helper.h>

+#include <sound/hdmi-codec.h>
+
 #include "rockchip_drm_drv.h"

 #include "inno_hdmi.h"

 #define INNO_HDMI_MIN_TMDS_CLOCK  25000000U

+struct inno_hdmi_audio_info {
+	int channels;
+	int sample_rate;
+	int sample_width;
+};
+
 struct inno_hdmi_phy_config {
 	unsigned long pixelclock;
 	u8 pre_emphasis;
@@ -62,6 +70,10 @@ struct inno_hdmi {
 	struct inno_hdmi_i2c *i2c;
 	struct i2c_adapter *ddc;

+	struct platform_device *audio_pdev;
+	struct inno_hdmi_audio_info audio;
+	bool audio_enabled;
+
 	const struct inno_hdmi_variant *variant;
 };

@@ -257,34 +269,35 @@ static void inno_hdmi_reset(struct inno_hdmi *hdmi)
 	inno_hdmi_standby(hdmi);
 }

-static void inno_hdmi_disable_frame(struct inno_hdmi *hdmi,
-				    enum hdmi_infoframe_type type)
+static void inno_hdmi_set_frame_index(struct inno_hdmi *hdmi,
+				      enum hdmi_infoframe_type type)
 {
 	struct drm_connector *connector = &hdmi->connector;
-
-	if (type != HDMI_INFOFRAME_TYPE_AVI) {
+	u32 frame_index;
+
+	switch (type) {
+	case HDMI_INFOFRAME_TYPE_AVI:
+		frame_index = INFOFRAME_AVI;
+		break;
+	case HDMI_INFOFRAME_TYPE_AUDIO:
+		frame_index = INFOFRAME_AAI;
+		break;
+	default:
 		drm_err(connector->dev,
 			"Unsupported infoframe type: %u\n", type);
 		return;
 	}

-	hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_BUF_INDEX, INFOFRAME_AVI);
+	hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_BUF_INDEX, frame_index);
 }

 static int inno_hdmi_upload_frame(struct inno_hdmi *hdmi,
 				  union hdmi_infoframe *frame, enum hdmi_infoframe_type type)
 {
-	struct drm_connector *connector = &hdmi->connector;
 	u8 packed_frame[HDMI_MAXIMUM_INFO_FRAME_SIZE];
 	ssize_t rc, i;

-	if (type != HDMI_INFOFRAME_TYPE_AVI) {
-		drm_err(connector->dev,
-			"Unsupported infoframe type: %u\n", type);
-		return 0;
-	}
-
-	inno_hdmi_disable_frame(hdmi, type);
+	inno_hdmi_set_frame_index(hdmi, type);

 	rc = hdmi_infoframe_pack(frame, packed_frame,
 				 sizeof(packed_frame));
@@ -312,7 +325,6 @@ static int inno_hdmi_config_video_avi(struct inno_hdmi *hdmi,
 						      &hdmi->connector,
 						      mode);
 	if (rc) {
-		inno_hdmi_disable_frame(hdmi, HDMI_INFOFRAME_TYPE_AVI);
 		return rc;
 	}

@@ -338,6 +350,197 @@ static int inno_hdmi_config_video_avi(struct inno_hdmi *hdmi,
 	return inno_hdmi_upload_frame(hdmi, &frame, HDMI_INFOFRAME_TYPE_AVI);
 }

+static int inno_hdmi_config_aai(struct inno_hdmi *hdmi)
+{
+	union hdmi_infoframe frame;
+	int rc;
+
+	rc = hdmi_audio_infoframe_init(&frame.audio);
+	if (rc < 0)
+		return rc;
+
+	frame.audio.coding_type = HDMI_AUDIO_CODING_TYPE_STREAM;
+	frame.audio.sample_frequency = HDMI_AUDIO_SAMPLE_FREQUENCY_STREAM;
+	frame.audio.sample_size = HDMI_AUDIO_SAMPLE_SIZE_STREAM;
+	frame.audio.channels = hdmi->audio.channels;
+
+	return inno_hdmi_upload_frame(hdmi, &frame, HDMI_INFOFRAME_TYPE_AUDIO);
+}
+
+static int inno_hdmi_audio_config(struct inno_hdmi *hdmi)
+{
+	struct inno_hdmi_audio_info *audio = &hdmi->audio;
+	int rate, N, channel;
+
+	if (audio->channels < 3)
+		channel = I2S_CHANNEL_1_2;
+	else if (audio->channels < 5)
+		channel = I2S_CHANNEL_3_4;
+	else if (audio->channels < 7)
+		channel = I2S_CHANNEL_5_6;
+	else
+		channel = I2S_CHANNEL_7_8;
+
+	switch (audio->sample_rate) {
+	case 32000:
+		rate = AUDIO_32K;
+		N = N_32K;
+		break;
+	case 44100:
+		rate = AUDIO_441K;
+		N = N_441K;
+		break;
+	case 48000:
+		rate = AUDIO_48K;
+		N = N_48K;
+		break;
+	case 88200:
+		rate = AUDIO_882K;
+		N = N_882K;
+		break;
+	case 96000:
+		rate = AUDIO_96K;
+		N = N_96K;
+		break;
+	case 176400:
+		rate = AUDIO_1764K;
+		N = N_1764K;
+		break;
+	case 192000:
+		rate = AUDIO_192K;
+		N = N_192K;
+		break;
+	default:
+		dev_err(hdmi->dev, "[%s] not support such sample rate %d\n",
+			__func__, audio->sample_rate);
+		return -ENOENT;
+	}
+
+	/* Set audio source I2S. */
+	hdmi_writeb(hdmi, HDMI_AUDIO_CTRL1, 0x01);
+	hdmi_writeb(hdmi, AUDIO_SAMPLE_RATE, rate);
+	hdmi_writeb(hdmi, AUDIO_I2S_MODE, v_I2S_MODE(I2S_STANDARD) |
+		    v_I2S_CHANNEL(channel));
+
+	hdmi_writeb(hdmi, AUDIO_I2S_MAP, 0x00);
+	hdmi_writeb(hdmi, AUDIO_I2S_SWAPS_SPDIF, 0);
+
+	/* Set N value. */
+	hdmi_writeb(hdmi, AUDIO_N_H, (N >> 16) & 0x0F);
+	hdmi_writeb(hdmi, AUDIO_N_M, (N >> 8) & 0xFF);
+	hdmi_writeb(hdmi, AUDIO_N_L, N & 0xFF);
+
+	/*Set HDMI NLPCM mode to support HDMI bit stream. */
+	hdmi_writeb(hdmi, HDMI_AUDIO_CHANNEL_STATUS, v_AUDIO_STATUS_NLPCM(0));
+
+	return inno_hdmi_config_aai(hdmi);
+}
+
+static int inno_hdmi_audio_hw_params(struct device *dev, void *d,
+				     struct hdmi_codec_daifmt *daifmt,
+				     struct hdmi_codec_params *params)
+{
+	struct inno_hdmi *hdmi = dev_get_drvdata(dev);
+	struct drm_display_info *display = &hdmi->connector.display_info;
+
+	if (!display->has_audio) {
+		DRM_DEV_ERROR(hdmi->dev, "no audio support\n");
+		return -ENODEV;
+	}
+
+	if (!hdmi->encoder.encoder.crtc)
+		return -ENODEV;
+
+	switch (daifmt->fmt) {
+	case HDMI_I2S:
+		break;
+	default:
+		DRM_DEV_ERROR(dev, "invalid format %d\n", daifmt->fmt);
+		return -EINVAL;
+	}
+
+	hdmi->audio.channels = params->channels;
+	hdmi->audio.sample_rate = params->sample_rate;
+	hdmi->audio.sample_width = params->sample_width;
+
+	return inno_hdmi_audio_config(hdmi);
+}
+
+static void inno_hdmi_audio_shutdown(struct device *dev, void *d)
+{
+	/* Do nothing. */
+}
+
+static int inno_hdmi_audio_mute_stream(struct device *dev, void *d, bool mute, int direction)
+{
+	struct inno_hdmi *hdmi = dev_get_drvdata(dev);
+	struct drm_display_info *display = &hdmi->connector.display_info;
+
+	if (!display->has_audio) {
+		DRM_DEV_ERROR(hdmi->dev, "no audio support\n");
+		return -ENODEV;
+	}
+
+	hdmi->audio_enabled = !mute;
+
+	if (mute)
+		hdmi_modb(hdmi, HDMI_AV_MUTE, m_AUDIO_MUTE | m_AUDIO_PD,
+			  v_AUDIO_MUTE(1) | v_AUDIO_PD(1));
+	else
+		hdmi_modb(hdmi, HDMI_AV_MUTE, m_AUDIO_MUTE | m_AUDIO_PD,
+			  v_AUDIO_MUTE(0) | v_AUDIO_PD(0));
+
+	return 0;
+}
+
+static int inno_hdmi_audio_get_eld(struct device *dev, void *d, uint8_t *buf, size_t len)
+{
+	struct inno_hdmi *hdmi = dev_get_drvdata(dev);
+	struct drm_mode_config *config = &hdmi->encoder.encoder.dev->mode_config;
+	struct drm_connector *connector;
+	int ret = -ENODEV;
+
+	mutex_lock(&config->mutex);
+	list_for_each_entry(connector, &config->connector_list, head) {
+		if (&hdmi->encoder.encoder == connector->encoder) {
+			memcpy(buf, connector->eld,
+			       min(sizeof(connector->eld), len));
+			ret = 0;
+		}
+	}
+	mutex_unlock(&config->mutex);
+
+	return ret;
+}
+
+static const struct hdmi_codec_ops audio_codec_ops = {
+	.hw_params      = inno_hdmi_audio_hw_params,
+	.audio_shutdown = inno_hdmi_audio_shutdown,
+	.mute_stream    = inno_hdmi_audio_mute_stream,
+	.get_eld        = inno_hdmi_audio_get_eld,
+};
+
+static int inno_hdmi_audio_codec_init(struct inno_hdmi *hdmi)
+{
+	struct hdmi_codec_pdata codec_data = {
+		.i2s = 1,
+		.ops = &audio_codec_ops,
+		.max_i2s_channels = 8,
+	};
+
+	hdmi->audio.channels = 2;
+	hdmi->audio.sample_rate = 48000;
+	hdmi->audio.sample_width = 16;
+	hdmi->audio_enabled = false;
+	hdmi->audio_pdev = platform_device_register_data(hdmi->dev,
+							 HDMI_CODEC_DRV_NAME,
+							 PLATFORM_DEVID_NONE,
+							 &codec_data,
+							 sizeof(codec_data));
+
+	return PTR_ERR_OR_ZERO(hdmi->audio_pdev);
+}
+
 static int inno_hdmi_config_video_csc(struct inno_hdmi *hdmi)
 {
 	struct drm_connector *connector = &hdmi->connector;
@@ -479,8 +682,10 @@ static int inno_hdmi_setup(struct inno_hdmi *hdmi,

 	inno_hdmi_config_video_csc(hdmi);

-	if (display->is_hdmi)
+	if (display->is_hdmi) {
 		inno_hdmi_config_video_avi(hdmi, mode);
+		inno_hdmi_audio_config(hdmi);
+	}

 	/*
 	 * When IP controller have configured to an accurate video
@@ -588,6 +793,26 @@ inno_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
 				&crtc_state->adjusted_mode) == MODE_OK ? 0 : -EINVAL;
 }

+static int inno_hdmi_encoder_late_register(struct drm_encoder *encoder)
+{
+	struct inno_hdmi *hdmi = encoder_to_inno_hdmi(encoder);
+
+	return inno_hdmi_audio_codec_init(hdmi);
+}
+
+static void inno_hdmi_encoder_early_unregister(struct drm_encoder *encoder)
+{
+	struct inno_hdmi *hdmi = encoder_to_inno_hdmi(encoder);
+
+	platform_device_unregister(hdmi->audio_pdev);
+}
+
+static const struct drm_encoder_funcs inno_hdmi_encoder_funcs = {
+	.destroy          = drm_encoder_cleanup,
+	.late_register    = inno_hdmi_encoder_late_register,
+	.early_unregister = inno_hdmi_encoder_early_unregister,
+};
+
 static struct drm_encoder_helper_funcs inno_hdmi_encoder_helper_funcs = {
 	.atomic_check	= inno_hdmi_encoder_atomic_check,
 	.atomic_enable	= inno_hdmi_encoder_enable,
@@ -687,37 +912,26 @@ inno_hdmi_connector_duplicate_state(struct drm_connector *connector)
 }

 static const struct drm_connector_funcs inno_hdmi_connector_funcs = {
-	.fill_modes = drm_helper_probe_single_connector_modes,
-	.detect = inno_hdmi_connector_detect,
-	.destroy = inno_hdmi_connector_destroy,
-	.reset = inno_hdmi_connector_reset,
+	.fill_modes             = drm_helper_probe_single_connector_modes,
+	.detect                 = inno_hdmi_connector_detect,
+	.destroy                = inno_hdmi_connector_destroy,
+	.reset                  = inno_hdmi_connector_reset,
 	.atomic_duplicate_state = inno_hdmi_connector_duplicate_state,
-	.atomic_destroy_state = inno_hdmi_connector_destroy_state,
+	.atomic_destroy_state   = inno_hdmi_connector_destroy_state,
 };

 static struct drm_connector_helper_funcs inno_hdmi_connector_helper_funcs = {
-	.get_modes = inno_hdmi_connector_get_modes,
+	.get_modes  = inno_hdmi_connector_get_modes,
 	.mode_valid = inno_hdmi_connector_mode_valid,
 };

 static int inno_hdmi_register(struct drm_device *drm, struct inno_hdmi *hdmi)
 {
 	struct drm_encoder *encoder = &hdmi->encoder.encoder;
-	struct device *dev = hdmi->dev;
-
-	encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
-
-	/*
-	 * If we failed to find the CRTC(s) which this encoder is
-	 * supposed to be connected to, it's because the CRTC has
-	 * not been registered yet.  Defer probing, and hope that
-	 * the required CRTC is added later.
-	 */
-	if (encoder->possible_crtcs == 0)
-		return -EPROBE_DEFER;

 	drm_encoder_helper_add(encoder, &inno_hdmi_encoder_helper_funcs);
-	drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
+	drm_encoder_init(drm, encoder, &inno_hdmi_encoder_funcs,
+			 DRM_MODE_ENCODER_TMDS, NULL);

 	hdmi->connector.polled = DRM_CONNECTOR_POLL_HPD;

@@ -911,6 +1125,7 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
 {
 	struct platform_device *pdev = to_platform_device(dev);
 	struct drm_device *drm = data;
+	struct drm_encoder *encoder;
 	struct inno_hdmi *hdmi;
 	const struct inno_hdmi_variant *variant;
 	int irq;
@@ -920,6 +1135,18 @@ static int inno_hdmi_bind(struct device *dev, struct device *master,
 	if (!hdmi)
 		return -ENOMEM;

+	encoder = &hdmi->encoder.encoder;
+	encoder->possible_crtcs = drm_of_find_possible_crtcs(drm, dev->of_node);
+
+	/*
+	 * If we failed to find the CRTC(s) which this encoder is
+	 * supposed to be connected to, it's because the CRTC has
+	 * not been registered yet.  Defer probing, and hope that
+	 * the required CRTC is added later.
+	 */
+	if (encoder->possible_crtcs == 0)
+		return -EPROBE_DEFER;
+
 	hdmi->dev = dev;

 	variant = of_device_get_match_data(hdmi->dev);
diff --git a/drivers/gpu/drm/rockchip/inno_hdmi.h b/drivers/gpu/drm/rockchip/inno_hdmi.h
index a7edf3559e60..0d108d3578fa 100644
--- a/drivers/gpu/drm/rockchip/inno_hdmi.h
+++ b/drivers/gpu/drm/rockchip/inno_hdmi.h
@@ -91,10 +91,12 @@ enum {
 #define HDMI_AV_MUTE			0x05
 #define m_AVMUTE_CLEAR			(1 << 7)
 #define m_AVMUTE_ENABLE			(1 << 6)
+#define m_AUDIO_PD			(1 << 2)
 #define m_AUDIO_MUTE			(1 << 1)
 #define m_VIDEO_BLACK			(1 << 0)
 #define v_AVMUTE_CLEAR(n)		(n << 7)
 #define v_AVMUTE_ENABLE(n)		(n << 6)
+#define v_AUDIO_PD(n)			(n << 2)
 #define v_AUDIO_MUTE(n)			(n << 1)
 #define v_VIDEO_MUTE(n)			(n << 0)

--
2.39.2

.

Date: Sun, 7 Jul 2024 07:58:28 +0800
From: kernel test robot <lkp@intel.com>
To: Mark Rutland <mark.rutland@arm.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Kees Cook <keescook@chromium.org>
Subject: drivers/iommu/io-pgtable-arm.c:330:13: error: void value not ignored
 as it ought to be
Message-ID: <202407070708.Bm6Ker3L-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269973
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Mark,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   22f902dfc51eb3602ff9b505ac3980f6ff77b1df
commit: 9257959a6e5b4fca6fc8e985790bff62c2046f20 locking/atomic: scripts: restructure fallback ifdeffery
date:   1 year, 1 month ago
config: arc-allmodconfig (https://download.01.org/0day-ci/archive/20240707/202407070708.Bm6Ker3L-lkp@intel.com/config)
compiler: arceb-elf-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240707/202407070708.Bm6Ker3L-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407070708.Bm6Ker3L-lkp@intel.com/

All errors (new ones prefixed by >>):

   drivers/iommu/io-pgtable-arm.c: In function 'arm_lpae_install_table':
>> drivers/iommu/io-pgtable-arm.c:330:13: error: void value not ignored as it ought to be
     330 |         old = cmpxchg64_relaxed(ptep, curr, new);
         |             ^
--
   drivers/iommu/io-pgtable-dart.c: In function 'dart_install_table':
>> drivers/iommu/io-pgtable-dart.c:168:13: error: void value not ignored as it ought to be
     168 |         old = cmpxchg64_relaxed(ptep, curr, new);
         |             ^
   drivers/iommu/io-pgtable-dart.c:157:25: warning: variable 'new' set but not used [-Wunused-but-set-variable]
     157 |         dart_iopte old, new;
         |                         ^~~


vim +330 drivers/iommu/io-pgtable-arm.c

c896c132b01895 Laurent Pinchart   2014-12-14  310  
fb3a95795da53d Robin Murphy       2017-06-22  311  static arm_lpae_iopte arm_lpae_install_table(arm_lpae_iopte *table,
fb3a95795da53d Robin Murphy       2017-06-22  312  					     arm_lpae_iopte *ptep,
2c3d273eabe8b1 Robin Murphy       2017-06-22  313  					     arm_lpae_iopte curr,
9abe2ac834851a Hector Martin      2021-11-20  314  					     struct arm_lpae_io_pgtable *data)
fb3a95795da53d Robin Murphy       2017-06-22  315  {
2c3d273eabe8b1 Robin Murphy       2017-06-22  316  	arm_lpae_iopte old, new;
9abe2ac834851a Hector Martin      2021-11-20  317  	struct io_pgtable_cfg *cfg = &data->iop.cfg;
e1d3c0fd701df8 Will Deacon        2014-11-14  318  
9abe2ac834851a Hector Martin      2021-11-20  319  	new = paddr_to_iopte(__pa(table), data) | ARM_LPAE_PTE_TYPE_TABLE;
fb3a95795da53d Robin Murphy       2017-06-22  320  	if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_NS)
fb3a95795da53d Robin Murphy       2017-06-22  321  		new |= ARM_LPAE_PTE_NSTABLE;
e1d3c0fd701df8 Will Deacon        2014-11-14  322  
77f3445866c39d Will Deacon        2017-06-23  323  	/*
77f3445866c39d Will Deacon        2017-06-23  324  	 * Ensure the table itself is visible before its PTE can be.
77f3445866c39d Will Deacon        2017-06-23  325  	 * Whilst we could get away with cmpxchg64_release below, this
77f3445866c39d Will Deacon        2017-06-23  326  	 * doesn't have any ordering semantics when !CONFIG_SMP.
77f3445866c39d Will Deacon        2017-06-23  327  	 */
77f3445866c39d Will Deacon        2017-06-23  328  	dma_wmb();
2c3d273eabe8b1 Robin Murphy       2017-06-22  329  
2c3d273eabe8b1 Robin Murphy       2017-06-22 @330  	old = cmpxchg64_relaxed(ptep, curr, new);
2c3d273eabe8b1 Robin Murphy       2017-06-22  331  
4f41845b340783 Will Deacon        2019-06-25  332  	if (cfg->coherent_walk || (old & ARM_LPAE_PTE_SW_SYNC))
2c3d273eabe8b1 Robin Murphy       2017-06-22  333  		return old;
2c3d273eabe8b1 Robin Murphy       2017-06-22  334  
2c3d273eabe8b1 Robin Murphy       2017-06-22  335  	/* Even if it's not ours, there's no point waiting; just kick it */
41e1eb2546e9c8 Isaac J. Manjarres 2021-06-16  336  	__arm_lpae_sync_pte(ptep, 1, cfg);
2c3d273eabe8b1 Robin Murphy       2017-06-22  337  	if (old == curr)
2c3d273eabe8b1 Robin Murphy       2017-06-22  338  		WRITE_ONCE(*ptep, new | ARM_LPAE_PTE_SW_SYNC);
2c3d273eabe8b1 Robin Murphy       2017-06-22  339  
2c3d273eabe8b1 Robin Murphy       2017-06-22  340  	return old;
e1d3c0fd701df8 Will Deacon        2014-11-14  341  }
e1d3c0fd701df8 Will Deacon        2014-11-14  342  

:::::: The code at line 330 was first introduced by commit
:::::: 2c3d273eabe8b1ed3b3cffe2c79643b1bf7e2d4a iommu/io-pgtable-arm: Support lockless operation

:::::: TO: Robin Murphy <robin.murphy@arm.com>
:::::: CC: Will Deacon <will.deacon@arm.com>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

Return-Path: <linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org>
From: Steffen Persvold <spersvold@gmail.com>
To: paul.walmsley@sifive.com,
	palmer@dabbelt.com,
	aou@eecs.berkeley.edu,
	linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org
Cc: spersvold@gmail.com
Subject: [PATCH] riscv: cacheinfo: Add back init_cache_level() function
Date: Sun,  7 Jul 2024 02:35:15 +0200
Message-Id: <20240707003515.5058-1-spersvold@gmail.com>
MIME-Version: 1.0
X-BeenThere: linux-riscv@lists.infradead.org
X-Mailman-Version: 2.1.34
List-Id: <linux-riscv.lists.infradead.org>
List-Unsubscribe: <http://lists.infradead.org/mailman/options/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=unsubscribe>
List-Archive: <http://lists.infradead.org/pipermail/linux-riscv/>
List-Post: <mailto:linux-riscv@lists.infradead.org>
List-Help: <mailto:linux-riscv-request@lists.infradead.org?subject=help>
List-Subscribe: <http://lists.infradead.org/mailman/listinfo/linux-riscv>,
 <mailto:linux-riscv-request@lists.infradead.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: "linux-riscv" <linux-riscv-bounces@lists.infradead.org>
Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org
Xref: photonic.trudheim.com org.infradead.lists.linux-riscv:79447 org.kernel.vger.linux-kernel:1269975
Newsgroups: org.infradead.lists.linux-riscv,org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

commit 5944ce092b97 (arch_topology: Build cacheinfo from primary CPU)
removed the init_cache_level() function from arch/riscv/kernel/cacheinfo.c
and relies on the init_cpu_topology() function in drivers/base/arch_topology.c
to call fetch_cache_info() which in turn calls init_of_cache_level() to
populate the cache hierarchy information. However, init_cpu_topology() is only
called from smpboot.c:smp_prepare_cpus() and thus only available when
CONFIG_SMP is defined.

To support non-SMP enabled kernels to still detect cache hierarchy, we add back
the init_cache_level() function. The init_level_allocate_ci() function handles
this gracefully on SMP-enabled kernels anyway where fetch_cache_info() is
called from init_cpu_topology() earlier in the boot phase.

Signed-off-by: Steffen Persvold <spersvold@gmail.com>
---
 arch/riscv/kernel/cacheinfo.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/arch/riscv/kernel/cacheinfo.c b/arch/riscv/kernel/cacheinfo.c
index 09e9b881..42c22f83 100644
--- a/arch/riscv/kernel/cacheinfo.c
+++ b/arch/riscv/kernel/cacheinfo.c
@@ -71,6 +71,11 @@ static void ci_leaf_init(struct cacheinfo *this_leaf,
 	this_leaf->type = type;
 }
 
+int init_cache_level(unsigned int cpu)
+{
+	return init_of_cache_level(cpu);
+}
+
 int populate_cache_leaves(unsigned int cpu)
 {
 	struct cpu_cacheinfo *this_cpu_ci = get_cpu_cacheinfo(cpu);
-- 
2.40.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
.

Message-ID: <47e0483d-6e3d-43a8-9273-25278a4a74b9@gmail.com>
Date: Sun, 7 Jul 2024 02:10:31 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
From: Mirsad Todorovac <mtodorovac69@gmail.com>
Subject: [PROBLEM linux-next]
To: linux-mtd@lists.infradead.org
Cc: =?UTF-8?B?UmFmYcWCIE1pxYJlY2tp?= <rafal@milecki.pl>,
 Richard Weinberger <richard@nod.at>, Vignesh Raghavendra <vigneshr@ti.com>,
 linux-kernel@vger.kernel.org, Miquel Raynal <miquel.raynal@bootlin.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269978
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mtd
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi, all,

This is the result of testing randconfig with KCONFIG_SEED=0xEE7AB52F in next-20240703 vanilla tree on
Ubuntu 22.04 LTS. GCC used is GCC (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0.

The particular error is as follows:

In file included from ./include/asm-generic/bug.h:22,
                 from ./arch/x86/include/asm/bug.h:87,
                 from ./include/linux/bug.h:5,
                 from ./include/linux/fortify-string.h:6,
                 from ./include/linux/string.h:374,
                 from ./arch/x86/include/asm/page_32.h:18,
                 from ./arch/x86/include/asm/page.h:14,
                 from ./arch/x86/include/asm/processor.h:20,
                 from ./arch/x86/include/asm/timex.h:5,
                 from ./include/linux/timex.h:67,
                 from ./include/linux/time32.h:13,
                 from ./include/linux/time.h:60,
                 from ./include/linux/stat.h:19,
                 from ./include/linux/module.h:13,
                 from drivers/mtd/mtdpart.c:10:
drivers/mtd/mtdpart.c: In function ‘parse_mtd_partitions’:
drivers/mtd/mtdpart.c:693:34: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  693 |                         pr_debug("%s: got parser %s\n", master->name,
      |                                  ^~~~~~~~~~~~~~~~~~~~~
./include/linux/printk.h:376:21: note: in definition of macro ‘pr_fmt’
  376 | #define pr_fmt(fmt) fmt
      |                     ^~~
./include/linux/dynamic_debug.h:248:9: note: in expansion of macro ‘__dynamic_func_call_cls’
  248 |         __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~~~~~~~~~~~~
./include/linux/dynamic_debug.h:250:9: note: in expansion of macro ‘_dynamic_func_call_cls’
  250 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~~~~~~~~~~~
./include/linux/dynamic_debug.h:269:9: note: in expansion of macro ‘_dynamic_func_call’
  269 |         _dynamic_func_call(fmt, __dynamic_pr_debug,             \
      |         ^~~~~~~~~~~~~~~~~~
./include/linux/printk.h:610:9: note: in expansion of macro ‘dynamic_pr_debug’
  610 |         dynamic_pr_debug(fmt, ##__VA_ARGS__)
      |         ^~~~~~~~~~~~~~~~
drivers/mtd/mtdpart.c:693:25: note: in expansion of macro ‘pr_debug’
  693 |                         pr_debug("%s: got parser %s\n", master->name,
      |                         ^~~~~~~~
drivers/mtd/mtdpart.c:693:50: note: format string is defined here
  693 |                         pr_debug("%s: got parser %s\n", master->name,
      |                                                  ^~

Offending commit is 5b644aa012f67.

Offending code is here:

  668 int parse_mtd_partitions(struct mtd_info *master, const char *const *types,
  669                          struct mtd_part_parser_data *data)
  670 {
  671         struct mtd_partitions pparts = { };
  672         struct mtd_part_parser *parser;
  673         int ret, err = 0;
  674 
  675         if (!types)
  676                 types = mtd_is_partition(master) ? default_subpartition_types :
  677                         default_mtd_part_types;
  678 
  679         for ( ; *types; types++) {
  680                 /*
  681                  * ofpart is a special type that means OF partitioning info
  682                  * should be used. It requires a bit different logic so it is
  683                  * handled in a separated function.
  684                  */
  685                 if (!strcmp(*types, "ofpart")) {
  686                         ret = mtd_part_of_parse(master, &pparts);
  687                 } else {
  688                         pr_debug("%s: parsing partitions %s\n", master->name,
  689                                  *types);
  690                         parser = mtd_part_parser_get(*types);
  691                         if (!parser && !request_module("%s", *types))
  692                                 parser = mtd_part_parser_get(*types);
→ 693                         pr_debug("%s: got parser %s\n", master->name,
→ 694                                 parser ? parser->name : NULL);
  695                         if (!parser)
  696                                 continue;
  697                         ret = mtd_part_do_parse(parser, master, &pparts, data);
  698                         if (ret <= 0)
  699                                 mtd_part_parser_put(parser);
  700                 }
  701                 /* Found partitions! */
  702                 if (ret > 0) {
  703                         err = add_mtd_partitions(master, pparts.parts,
  704                                                  pparts.nr_parts);
  705                         mtd_part_parser_cleanup(&pparts);
  706                         return err ? err : pparts.nr_parts;
  707                 }
  708                 /*
  709                  * Stash the first error we see; only report it if no parser
  710                  * succeeds
  711                  */
  712                 if (ret < 0 && !err)
  713                         err = ret;
  714         }
  715         return err;
  716 }

Proposed non-intrusive fix resolves the warning/error, but I could not test the code.
(I don't have the physical device.)

-----------------><------------------------------------------
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 6811a714349d..81665d67ed2d 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -691,7 +691,7 @@ int parse_mtd_partitions(struct mtd_info *master, const char *const *types,
                        if (!parser && !request_module("%s", *types))
                                parser = mtd_part_parser_get(*types);
                        pr_debug("%s: got parser %s\n", master->name,
-                               parser ? parser->name : NULL);
+                               parser ? parser->name : "(null"));
                        if (!parser)
                                continue;
                        ret = mtd_part_do_parse(parser, master, &pparts, data);


Hope this helps.

Best regards,
Mirsad Todorovac
.

From: Cristian Marussi <cristian.marussi@arm.com>
To: linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	arm-scmi@vger.kernel.org
Cc: sudeep.holla@arm.com,
	james.quinlan@broadcom.com,
	f.fainelli@gmail.com,
	vincent.guittot@linaro.org,
	etienne.carriere@foss.st.com,
	peng.fan@oss.nxp.com,
	michal.simek@amd.com,
	quic_sibis@quicinc.com,
	quic_nkela@quicinc.com,
	ptosi@google.com,
	dan.carpenter@linaro.org,
	souvik.chakravarty@arm.com,
	Cristian Marussi <cristian.marussi@arm.com>
Subject: [PATCH 0/8] Make SCMI transport as standalone drivers
Date: Sun,  7 Jul 2024 01:20:47 +0100
Message-ID: <20240707002055.1835121-1-cristian.marussi@arm.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269980
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.kernel.vger.arm-scmi
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi all,

SCMI transport layer was till now being embedded built into in the core
SCMI stack.

Some of these transports, despite being currently part of the main SCMI
module, are indeed also registered with different subsystems like optee or
virtio, and actvely probed also by those: this led to a few awkward and
convoluted tricks to properly handle such interactions at boot time in the
SCMI stack.

Moreover some partner expressed the desire to be able to fully modularize
the transports components.

This series aim to make all such transports as standalone drivers that can
be optionally loaded as modules.

In order to do this, at first some new mechanism is introduced to support
this new capability while maintaining, in parallel, the old legacy embedded
transports; then each transport, one by one, is transitioned to be a
standalone driver and finally the old legacy support for embedded transport
is removed.

Patch [1/8] is a mostly unrelated (but much needed) clean-up from Peng,
which I included in this series to avoid conflicts at merge.

Patch [2/8] simply collects the existing datagram manipulation helpers in a
pair of function pointers structures, in preparation for later reworks.

Patch [3/8] adds the bulk of the new logic to the core SCMI stack and then
each existing transport is transitioned to be a standalone driver in
patches 4,5,6,7 while shuffling around the compatibles. (no DT change is
needed of curse for backward compatibility)
While doing this I kept the module authorship in line with the main
author(S) as spitted out by git-blame.

Finally patch [8/8] removes all the legacy dead code from the core SCMI
stack.

No new symbol EXPORT has been added.

The new transport drivers have been tested, as built-in and LKM, as
follows:

- mailbox on JUNO
- virtio on emulation
- optee on QEMU/optee using Linaro setup

Exercised using the regular SCMI drivers stack and the SCMI ACS suite,
testing commands, replies, delayed responses and notification.

Multiple virtual SCMI instances support has been tested too.

SMC has NOT been tested/exercised at run-time, only compile-tested.
(due to lack of hardware)

Note that in this new setup, all the probe deferral and retries between the
SCMI core stack and the transports has been removed, since no more needed.

Moreover the new drivers have been tested also with a fully modularized
SCMI stack, i.e.:

  scmi-core.ko + scmi-module.ko + scmi_transport_*.ko [ + vendor modules ]

One thing that I have NOT done still, but that it's an easy pick, would
be to completely remove any dependency between the SCMI core stack and the
transports, leaving these latter only dependent on the mere presence of
the related subsystems like optee/virtio/mailbox/smc: this would allow to
compile the transports and the related subsys as built-in while keeping the
core SCMI stack as a module....not sure if it makes sense... but it can be
already easily done by simply patching further the Kconfig.

Based on sudeep/for-next/scmi/updates.

Any feedback, and especially testing (:D) is welcome.

Thanks,
Cristian

Cristian Marussi (7):
  firmware: arm_scmi: Introduce packet handling helpers
  firmware: arm_scmi: Add support for standalone transport drivers
  firmware: arm_scmi: Make MBOX transport a standalone driver
  firmware: arm_scmi: Make SMC transport a standalone driver
  firmware: arm_scmi: Make OPTEE transport a standalone driver
  firmware: arm_scmi: Make VirtIO transport a standalone driver
  firmware: arm_scmi: Remove legacy transport-layer code

Peng Fan (1):
  firmware: arm_scmi: Introduce setup_shmem_iomap

 drivers/firmware/arm_scmi/Kconfig             |  20 +-
 drivers/firmware/arm_scmi/Makefile            |   9 +-
 drivers/firmware/arm_scmi/common.h            | 183 +++++++++++++-----
 drivers/firmware/arm_scmi/driver.c            | 140 +++++---------
 drivers/firmware/arm_scmi/msg.c               |  34 +++-
 .../{mailbox.c => scmi_transport_mailbox.c}   |  69 ++++---
 .../{optee.c => scmi_transport_optee.c}       | 120 +++++-------
 .../arm_scmi/{smc.c => scmi_transport_smc.c}  |  52 ++---
 .../{virtio.c => scmi_transport_virtio.c}     |  95 +++++----
 drivers/firmware/arm_scmi/shmem.c             |  80 ++++++--
 10 files changed, 445 insertions(+), 357 deletions(-)
 rename drivers/firmware/arm_scmi/{mailbox.c => scmi_transport_mailbox.c} (87%)
 rename drivers/firmware/arm_scmi/{optee.c => scmi_transport_optee.c} (89%)
 rename drivers/firmware/arm_scmi/{smc.c => scmi_transport_smc.c} (88%)
 rename drivers/firmware/arm_scmi/{virtio.c => scmi_transport_virtio.c} (95%)

-- 
2.45.2

.

From: "Jason A. Donenfeld" <Jason@zx2c4.com>
To: linux-kernel@vger.kernel.org,
	patches@lists.linux.dev,
	tglx@linutronix.de
Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>,
	linux-crypto@vger.kernel.org,
	linux-api@vger.kernel.org,
	x86@kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>,
	Carlos O'Donell <carlos@redhat.com>,
	Florian Weimer <fweimer@redhat.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Jann Horn <jannh@google.com>,
	Christian Brauner <brauner@kernel.org>,
	David Hildenbrand <dhildenb@redhat.com>
Subject: [PATCH v21 0/4] implement getrandom() in vDSO
Date: Sun,  7 Jul 2024 02:26:50 +0200
Message-ID: <20240707002658.1917440-1-Jason@zx2c4.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269989
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.patches,org.kernel.vger.linux-api,org.kernel.vger.linux-crypto
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The plan for this series is to take it through my random.git tree for 6.11.
It's cooking in linux-next now.

Changes v20->v21:

- After extensive conversation with Linus, we're nixing the entire
  vgetrandom_alloc() syscall, in favor of just exposing the functionality
  needed through mmap() and having the kernel communicate to the caller what
  arguments/sizes it should pass to mmap(). This simplifies the series
  considerably. It also means that the first commit adds some new MAP_*
  constants for mmap().

- Separate vDSO selftests out into separate commit.

--------------

Useful links:

- This series:
  - https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git/log/

- In case you're actually interested in the v≤14 design where faults were
  non-fatal and instructions were skipped (which I think is more coherent, even
  if the implementation is controversial), this lives in my branch here:
  - https://git.kernel.org/pub/scm/linux/kernel/git/crng/random.git/log/?h=jd/vdso-skip-insn
  Note that I'm *not* actually proposing this for upstream at this time. But it
  may be of conversational interest.

-------------

Two statements:

  1) Userspace wants faster cryptographically secure random numbers of
     arbitrary size, big or small.

  2) Userspace is currently unable to safely roll its own RNG with the
     same security profile as getrandom().

Statement (1) has been debated for years, with arguments ranging from
"we need faster cryptographically secure card shuffling!" to "the only
things that actually need good randomness are keys, which are few and
far between" to "actually, TLS CBC nonces are frequent" and so on. I
don't intend to wade into that debate substantially, except to note that
recently glibc added arc4random(), whose goal is to return a
cryptographically secure uint32_t, and there are real user reports of it
being too slow. So here we are.

Statement (2) is more interesting. The kernel is the nexus of all
entropic inputs that influence the RNG. It is in the best position, and
probably the only position, to decide anything at all about the current
state of the RNG and of its entropy. One of the things it uniquely knows
about is when reseeding is necessary.

For example, when a virtual machine is forked, restored, or duplicated,
it's imparative that the RNG doesn't generate the same outputs. For this
reason, there's a small protocol between hypervisors and the kernel that
indicates this has happened, alongside some ID, which the RNG uses to
immediately reseed, so as not to return the same numbers. Were userspace
to expand a getrandom() seed from time T1 for the next hour, and at some
point T2 < hour, the virtual machine forked, userspace would continue to
provide the same numbers to two (or more) different virtual machines,
resulting in potential cryptographic catastrophe. Something similar
happens on resuming from hibernation (or even suspend), with various
compromise scenarios there in mind.

There's a more general reason why userspace rolling its own RNG from a
getrandom() seed is fraught. There's a lot of attention paid to this
particular Linuxism we have of the RNG being initialized and thus
non-blocking or uninitialized and thus blocking until it is initialized.
These are our Two Big States that many hold to be the holy
differentiating factor between safe and not safe, between
cryptographically secure and garbage. The fact is, however, that the
distinction between these two states is a hand-wavy wishy-washy inexact
approximation. Outside of a few exceptional cases (e.g. a HW RNG is
available), we actually don't really ever know with any rigor at all
when the RNG is safe and ready (nor when it's compromised). We do the
best we can to "estimate" it, but entropy estimation is fundamentally
impossible in the general case. So really, we're just doing guess work,
and hoping it's good and conservative enough. Let's then assume that
there's always some potential error involved in this differentiator.

In fact, under the surface, the RNG is engineered around a different
principle, and that is trying to *use* new entropic inputs regularly and
at the right specific moments in time. For example, close to boot time,
the RNG reseeds itself more often than later. At certain events, like VM
fork, the RNG reseeds itself immediately. The various heuristics for
when the RNG will use new entropy and how often is really a core aspect
of what the RNG has some potential to do decently enough (and something
that will probably continue to improve in the future from random.c's
present set of algorithms). So in your mind, put away the metal
attachment to the Two Big States, which represent an approximation with
a potential margin of error. Instead keep in mind that the RNG's primary
operating heuristic is how often and exactly when it's going to reseed.

So, if userspace takes a seed from getrandom() at point T1, and uses it
for the next hour (or N megabytes or some other meaningless metric),
during that time, potential errors in the Two Big States approximation
are amplified. During that time potential reseeds are being lost,
forgotten, not reflected in the output stream. That's not good.

The simplest statement you could make is that userspace RNGs that expand
a getrandom() seed at some point T1 are nearly always *worse*, in some
way, than just calling getrandom() every time a random number is
desired.

For those reasons, after some discussion on libc-alpha, glibc's
arc4random() now just calls getrandom() on each invocation. That's
trivially safe, and gives us latitude to then make the safe thing faster
without becoming unsafe at our leasure. Card shuffling isn't
particularly fast, however.

How do we rectify this? By putting a safe implementation of getrandom()
in the vDSO, which has access to whatever information a
particular iteration of random.c is using to make its decisions. I use
that careful language of "particular iteration of random.c", because the
set of things that a vDSO getrandom() implementation might need for making
decisions as good as the kernel's will likely change over time. This
isn't just a matter of exporting certain *data* to userspace. We're not
going to commit to a "data API" where the various heuristics used are
exposed, locking in how the kernel works for decades to come, and then
leave it to various userspaces to roll something on top and shoot
themselves in the foot and have all sorts of complexity disasters.
Rather, vDSO getrandom() is supposed to be the *same exact algorithm*
that runs in the kernel, except it's been hoisted into userspace as
much as possible. And so vDSO getrandom() and kernel getrandom() will
always mirror each other hermetically.

API-wise, the vDSO gains this function:

  ssize_t vgetrandom(void *buffer, size_t len, unsigned int flags,
                     void *opaque_state, size_t opaque_len);

The return value and the first 3 arguments are the same as ordinary
getrandom(), while the penultimate argument is a pointer to some state
allocated with the right flags passed to mmap(2), explained below. Were all
five arguments passed to the getrandom syscall, nothing different would happen,
and the functions would have the exact same behavior.

If vgetrandom(NULL, 0, 0, &params, ~0UL) is called, then params gets populated
with information about what flags and prot fields to pass to mmap(2), as well
as how big each state should be, so that the caller can slice up returned
memory from mmap(2) into chunks for passing to vgetrandom().

Libc is expected to allocate a chunk of these on first use, and then
dole them out to threads as they're created, allocating more when
needed.

The interesting meat of the implementation is in lib/vdso/getrandom.c,
as generic C code, and it aims to mainly follow random.c's buffered fast
key erasure logic. Before the RNG is initialized, it falls back to the
syscall. Right now it uses a simple generation counter to make its decisions
on reseeding (though this could be made more extensive over time).

The actual place that has the most work to do is in all of the other
files. Most of the vDSO shared page infrastructure is centered around
gettimeofday, and so the main structs are all in arrays for different
timestamp types, and attached to time namespaces, and so forth. I've
done the best I could to add onto this in an unintrusive way.

In my test results, performance is pretty stellar (around 15x for uint32_t
generation), and it seems to be working. There's an extended example in the
last commit of this series, showing how the syscall and the vDSO function
are meant to be used together.

Cc: linux-crypto@vger.kernel.org
Cc: linux-api@vger.kernel.org
Cc: x86@kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Adhemerval Zanella Netto <adhemerval.zanella@linaro.org>
Cc: Carlos O'Donell <carlos@redhat.com>
Cc: Florian Weimer <fweimer@redhat.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Jann Horn <jannh@google.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: David Hildenbrand <dhildenb@redhat.com>

Jason A. Donenfeld (4):
  mm: add VM_DROPPABLE for designating always lazily freeable mappings
  random: introduce generic vDSO getrandom() implementation
  x86: vdso: Wire up getrandom() vDSO implementation
  selftests/vDSO: add tests for vgetrandom

 MAINTAINERS                                   |   4 +
 arch/alpha/include/uapi/asm/mman.h            |   3 +
 arch/mips/include/uapi/asm/mman.h             |   3 +
 arch/parisc/include/uapi/asm/mman.h           |   3 +
 arch/x86/Kconfig                              |   1 +
 arch/x86/entry/vdso/Makefile                  |   3 +-
 arch/x86/entry/vdso/vdso.lds.S                |   2 +
 arch/x86/entry/vdso/vgetrandom-chacha.S       | 178 +++++++++++
 arch/x86/entry/vdso/vgetrandom.c              |  17 ++
 arch/x86/include/asm/vdso/getrandom.h         |  55 ++++
 arch/x86/include/asm/vdso/vsyscall.h          |   2 +
 arch/x86/include/asm/vvar.h                   |  16 +
 arch/xtensa/include/uapi/asm/mman.h           |   3 +
 drivers/char/random.c                         |  18 +-
 fs/proc/task_mmu.c                            |   3 +
 include/linux/mm.h                            |   8 +
 include/trace/events/mmflags.h                |   7 +
 include/uapi/asm-generic/mman-common.h        |   4 +
 include/uapi/linux/random.h                   |  15 +
 include/vdso/datapage.h                       |  11 +
 include/vdso/getrandom.h                      |  46 +++
 lib/vdso/Kconfig                              |   6 +
 lib/vdso/getrandom.c                          | 252 +++++++++++++++
 mm/Kconfig                                    |   3 +
 mm/mmap.c                                     |  15 +
 mm/mprotect.c                                 |   2 +-
 mm/rmap.c                                     |  16 +-
 tools/include/asm/rwonce.h                    |   0
 tools/include/uapi/asm-generic/mman-common.h  |   4 +
 tools/testing/selftests/mm/.gitignore         |   1 +
 tools/testing/selftests/mm/Makefile           |   1 +
 tools/testing/selftests/mm/droppable.c        |  53 ++++
 tools/testing/selftests/vDSO/.gitignore       |   2 +
 tools/testing/selftests/vDSO/Makefile         |  15 +
 .../testing/selftests/vDSO/vdso_test_chacha.c |  43 +++
 .../selftests/vDSO/vdso_test_getrandom.c      | 288 ++++++++++++++++++
 36 files changed, 1097 insertions(+), 6 deletions(-)
 create mode 100644 arch/x86/entry/vdso/vgetrandom-chacha.S
 create mode 100644 arch/x86/entry/vdso/vgetrandom.c
 create mode 100644 arch/x86/include/asm/vdso/getrandom.h
 create mode 100644 include/vdso/getrandom.h
 create mode 100644 lib/vdso/getrandom.c
 create mode 100644 tools/include/asm/rwonce.h
 create mode 100644 tools/testing/selftests/mm/droppable.c
 create mode 100644 tools/testing/selftests/vDSO/vdso_test_chacha.c
 create mode 100644 tools/testing/selftests/vDSO/vdso_test_getrandom.c


base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826
-- 
2.45.2

.

Content-Type: multipart/mixed; boundary="------------Tc1IDABLbVK03ADrXWGGX8cK"
Message-ID: <9b69fb14-df89-4677-9c82-056ea9e706f5@gmail.com>
Date: Sun, 7 Jul 2024 02:26:25 +0200
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Language: en-US
From: Mirsad Todorovac <mtodorovac69@gmail.com>
To: linux-hardening@vger.kernel.org
Cc: Kees Cook <kees@kernel.org>, Andy Lutomirski <luto@amacapital.net>,
 Will Drewry <wad@chromium.org>, linux-kernel@vger.kernel.org
Subject: =?UTF-8?Q?=5BPROBLEM_linux-next=5D_include/linux/fortify-string=2Eh?=
 =?UTF-8?B?OjU4MDoyNTogZXJyb3I6IGNhbGwgdG8g4oCYX19yZWFkX292ZXJmbG93Ml9maWVs?=
 =?UTF-8?Q?d=E2=80=99_declared_with_attribute_warning=3A_detected_read_beyon?=
 =?UTF-8?Q?d_size_of_field?=
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269990
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-hardening
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This is a multi-part message in MIME format.
--------------Tc1IDABLbVK03ADrXWGGX8cK
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Hi, all!

This is the result of testing randconfig with KCONFIG_SEED=0xEE7AB52F in next-20240703 vanilla tree on
Ubuntu 22.04 LTS. GCC used is gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0.

The particular error is as follows:

In file included from ./include/linux/string.h:374,
                 from ./arch/x86/include/asm/page_32.h:18,
                 from ./arch/x86/include/asm/page.h:14,
                 from ./arch/x86/include/asm/processor.h:20,
                 from ./include/linux/sched.h:13,
                 from ./include/linux/audit.h:12,
                 from kernel/seccomp.c:19:
In function ‘fortify_memcpy_chk’,
    inlined from ‘syscall_get_arguments’ at ./arch/x86/include/asm/syscall.h:85:2,
    inlined from ‘populate_seccomp_data’ at kernel/seccomp.c:258:2,
    inlined from ‘__seccomp_filter’ at kernel/seccomp.c:1231:3:
./include/linux/fortify-string.h:580:25: error: call to ‘__read_overflow2_field’ declared with attribute warning: detected read beyond size of field (2nd parameter); maybe use struc
t_group()? [-Werror=attribute-warning]
  580 |                         __read_overflow2_field(q_size_field, size);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



The offending code is here (introduced by commit f68f2ff91512c):

  547 __FORTIFY_INLINE bool fortify_memcpy_chk(__kernel_size_t size,
  548                                          const size_t p_size,
  549                                          const size_t q_size,
  550                                          const size_t p_size_field,
  551                                          const size_t q_size_field,
  552                                          const u8 func)
  553 {
  554         if (__builtin_constant_p(size)) {
  555                 /*
  556                  * Length argument is a constant expression, so we
  557                  * can perform compile-time bounds checking where
  558                  * buffer sizes are also known at compile time.
  559                  */
  560 
  561                 /* Error when size is larger than enclosing struct. */
  562                 if (__compiletime_lessthan(p_size_field, p_size) &&
  563                     __compiletime_lessthan(p_size, size))
  564                         __write_overflow();
  565                 if (__compiletime_lessthan(q_size_field, q_size) &&
  566                     __compiletime_lessthan(q_size, size))
  567                         __read_overflow2();
  568 
  569                 /* Warn when write size argument larger than dest field. */
  570                 if (__compiletime_lessthan(p_size_field, size))
  571                         __write_overflow_field(p_size_field, size);
  572                 /*
  573                  * Warn for source field over-read when building with W=1
  574                  * or when an over-write happened, so both can be fixed at
  575                  * the same time.
  576                  */
  577                 if ((IS_ENABLED(KBUILD_EXTRA_WARN1) ||
  578                      __compiletime_lessthan(p_size_field, size)) &&
  579                     __compiletime_lessthan(q_size_field, size))
→ 580                         __read_overflow2_field(q_size_field, size);
  581         }

I have no idea why GCC 12.3.0 complained here, even less how to fix it.

This is the inherent problem with reporting warnings and errors from a "randconfig" .config -
one gets errors in completely unfamiliar parts of 35 millions lines :-P

Hope this helps.

Best regards,
Mirsad Todorovac
--------------Tc1IDABLbVK03ADrXWGGX8cK
Content-Type: text/plain; charset=UTF-8; name=".config"
Content-Disposition: attachment; filename=".config"
Content-Transfer-Encoding: base64

IwojIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZpbGU7IERPIE5PVCBFRElULgojIExpbnV4
L3g4NiA2LjEwLjAtcmM2IEtlcm5lbCBDb25maWd1cmF0aW9uCiMKQ09ORklHX0NDX1ZFUlNJ
T05fVEVYVD0iZ2NjIChVYnVudHUgMTIuMy4wLTF1YnVudHUxfjIyLjA0KSAxMi4zLjAiCkNP
TkZJR19DQ19JU19HQ0M9eQpDT05GSUdfR0NDX1ZFUlNJT049MTIwMzAwCkNPTkZJR19DTEFO
R19WRVJTSU9OPTAKQ09ORklHX0FTX0lTX0dOVT15CkNPTkZJR19BU19WRVJTSU9OPTIzODAw
CkNPTkZJR19MRF9JU19CRkQ9eQpDT05GSUdfTERfVkVSU0lPTj0yMzgwMApDT05GSUdfTExE
X1ZFUlNJT049MApDT05GSUdfQ0NfQ0FOX0xJTks9eQpDT05GSUdfQ0NfQ0FOX0xJTktfU1RB
VElDPXkKQ09ORklHX0NDX0hBU19BU01fR09UT19PVVRQVVQ9eQpDT05GSUdfQ0NfSEFTX0FT
TV9HT1RPX1RJRURfT1VUUFVUPXkKQ09ORklHX0dDQ19BU01fR09UT19PVVRQVVRfV09SS0FS
T1VORD15CkNPTkZJR19UT09MU19TVVBQT1JUX1JFTFI9eQpDT05GSUdfQ0NfSEFTX0FTTV9J
TkxJTkU9eQpDT05GSUdfQ0NfSEFTX05PX1BST0ZJTEVfRk5fQVRUUj15CkNPTkZJR19QQUhP
TEVfVkVSU0lPTj0xMjUKQ09ORklHX0lSUV9XT1JLPXkKQ09ORklHX0JVSUxEVElNRV9UQUJM
RV9TT1JUPXkKQ09ORklHX1RIUkVBRF9JTkZPX0lOX1RBU0s9eQoKIwojIEdlbmVyYWwgc2V0
dXAKIwpDT05GSUdfSU5JVF9FTlZfQVJHX0xJTUlUPTMyCiMgQ09ORklHX0NPTVBJTEVfVEVT
VCBpcyBub3Qgc2V0CkNPTkZJR19XRVJST1I9eQpDT05GSUdfTE9DQUxWRVJTSU9OPSIiCiMg
Q09ORklHX0xPQ0FMVkVSU0lPTl9BVVRPIGlzIG5vdCBzZXQKQ09ORklHX0JVSUxEX1NBTFQ9
IiIKQ09ORklHX0hBVkVfS0VSTkVMX0daSVA9eQpDT05GSUdfSEFWRV9LRVJORUxfQlpJUDI9
eQpDT05GSUdfSEFWRV9LRVJORUxfTFpNQT15CkNPTkZJR19IQVZFX0tFUk5FTF9YWj15CkNP
TkZJR19IQVZFX0tFUk5FTF9MWk89eQpDT05GSUdfSEFWRV9LRVJORUxfTFo0PXkKQ09ORklH
X0hBVkVfS0VSTkVMX1pTVEQ9eQpDT05GSUdfS0VSTkVMX0daSVA9eQojIENPTkZJR19LRVJO
RUxfQlpJUDIgaXMgbm90IHNldAojIENPTkZJR19LRVJORUxfTFpNQSBpcyBub3Qgc2V0CiMg
Q09ORklHX0tFUk5FTF9YWiBpcyBub3Qgc2V0CiMgQ09ORklHX0tFUk5FTF9MWk8gaXMgbm90
IHNldAojIENPTkZJR19LRVJORUxfTFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfS0VSTkVMX1pT
VEQgaXMgbm90IHNldApDT05GSUdfREVGQVVMVF9JTklUPSIiCkNPTkZJR19ERUZBVUxUX0hP
U1ROQU1FPSIobm9uZSkiCiMgQ09ORklHX1NZU1ZJUEMgaXMgbm90IHNldApDT05GSUdfUE9T
SVhfTVFVRVVFPXkKQ09ORklHX1BPU0lYX01RVUVVRV9TWVNDVEw9eQojIENPTkZJR19XQVRD
SF9RVUVVRSBpcyBub3Qgc2V0CiMgQ09ORklHX0NST1NTX01FTU9SWV9BVFRBQ0ggaXMgbm90
IHNldAojIENPTkZJR19VU0VMSUIgaXMgbm90IHNldAojIENPTkZJR19BVURJVCBpcyBub3Qg
c2V0CkNPTkZJR19IQVZFX0FSQ0hfQVVESVRTWVNDQUxMPXkKCiMKIyBJUlEgc3Vic3lzdGVt
CiMKQ09ORklHX0dFTkVSSUNfSVJRX1BST0JFPXkKQ09ORklHX0dFTkVSSUNfSVJRX1NIT1c9
eQpDT05GSUdfR0VORVJJQ19JUlFfRUZGRUNUSVZFX0FGRl9NQVNLPXkKQ09ORklHX0dFTkVS
SUNfUEVORElOR19JUlE9eQpDT05GSUdfR0VORVJJQ19JUlFfTUlHUkFUSU9OPXkKQ09ORklH
X0hBUkRJUlFTX1NXX1JFU0VORD15CkNPTkZJR19HRU5FUklDX0lSUV9DSElQPXkKQ09ORklH
X0lSUV9ET01BSU49eQpDT05GSUdfSVJRX0RPTUFJTl9ISUVSQVJDSFk9eQpDT05GSUdfSVJR
X01TSV9JT01NVT15CkNPTkZJR19HRU5FUklDX0lSUV9NQVRSSVhfQUxMT0NBVE9SPXkKQ09O
RklHX0dFTkVSSUNfSVJRX1JFU0VSVkFUSU9OX01PREU9eQpDT05GSUdfSVJRX0ZPUkNFRF9U
SFJFQURJTkc9eQpDT05GSUdfU1BBUlNFX0lSUT15CiMgZW5kIG9mIElSUSBzdWJzeXN0ZW0K
CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19BUkNIX0NMT0NLU09VUkNF
X0lOSVQ9eQpDT05GSUdfQ0xPQ0tTT1VSQ0VfVkFMSURBVEVfTEFTVF9DWUNMRT15CkNPTkZJ
R19HRU5FUklDX1RJTUVfVlNZU0NBTEw9eQpDT05GSUdfR0VORVJJQ19DTE9DS0VWRU5UUz15
CkNPTkZJR19HRU5FUklDX0NMT0NLRVZFTlRTX0JST0FEQ0FTVD15CkNPTkZJR19HRU5FUklD
X0NMT0NLRVZFTlRTX0JST0FEQ0FTVF9JRExFPXkKQ09ORklHX0dFTkVSSUNfQ0xPQ0tFVkVO
VFNfTUlOX0FESlVTVD15CkNPTkZJR19HRU5FUklDX0NNT1NfVVBEQVRFPXkKQ09ORklHX0hB
VkVfUE9TSVhfQ1BVX1RJTUVSU19UQVNLX1dPUks9eQpDT05GSUdfUE9TSVhfQ1BVX1RJTUVS
U19UQVNLX1dPUks9eQpDT05GSUdfVElNRV9LVU5JVF9URVNUPXkKQ09ORklHX0NPTlRFWFRf
VFJBQ0tJTkc9eQpDT05GSUdfQ09OVEVYVF9UUkFDS0lOR19JRExFPXkKCiMKIyBUaW1lcnMg
c3Vic3lzdGVtCiMKQ09ORklHX0haX1BFUklPRElDPXkKIyBDT05GSUdfTk9fSFpfSURMRSBp
cyBub3Qgc2V0CkNPTkZJR19OT19IWj15CiMgQ09ORklHX0hJR0hfUkVTX1RJTUVSUyBpcyBu
b3Qgc2V0CkNPTkZJR19DTE9DS1NPVVJDRV9XQVRDSERPR19NQVhfU0tFV19VUz0xMjUKIyBl
bmQgb2YgVGltZXJzIHN1YnN5c3RlbQoKQ09ORklHX0JQRj15CkNPTkZJR19IQVZFX0VCUEZf
SklUPXkKCiMKIyBCUEYgc3Vic3lzdGVtCiMKQ09ORklHX0JQRl9TWVNDQUxMPXkKQ09ORklH
X0JQRl9KSVQ9eQojIENPTkZJR19CUEZfSklUX0FMV0FZU19PTiBpcyBub3Qgc2V0CkNPTkZJ
R19CUEZfVU5QUklWX0RFRkFVTFRfT0ZGPXkKQ09ORklHX1VTRVJNT0RFX0RSSVZFUj15CkNP
TkZJR19CUEZfUFJFTE9BRD15CiMgQ09ORklHX0JQRl9QUkVMT0FEX1VNRCBpcyBub3Qgc2V0
CiMgZW5kIG9mIEJQRiBzdWJzeXN0ZW0KCkNPTkZJR19QUkVFTVBUX1ZPTFVOVEFSWV9CVUlM
RD15CiMgQ09ORklHX1BSRUVNUFRfTk9ORSBpcyBub3Qgc2V0CkNPTkZJR19QUkVFTVBUX1ZP
TFVOVEFSWT15CiMgQ09ORklHX1BSRUVNUFQgaXMgbm90IHNldAojIENPTkZJR19QUkVFTVBU
X0RZTkFNSUMgaXMgbm90IHNldAojIENPTkZJR19TQ0hFRF9DT1JFIGlzIG5vdCBzZXQKCiMK
IyBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCiMKQ09ORklHX1RJQ0tfQ1BV
X0FDQ09VTlRJTkc9eQpDT05GSUdfSVJRX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19IQVZF
X1NDSEVEX0FWR19JUlE9eQpDT05GSUdfQlNEX1BST0NFU1NfQUNDVD15CkNPTkZJR19CU0Rf
UFJPQ0VTU19BQ0NUX1YzPXkKQ09ORklHX1RBU0tTVEFUUz15CiMgQ09ORklHX1RBU0tfREVM
QVlfQUNDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1RBU0tfWEFDQ1QgaXMgbm90IHNldApDT05G
SUdfUFNJPXkKIyBDT05GSUdfUFNJX0RFRkFVTFRfRElTQUJMRUQgaXMgbm90IHNldAojIGVu
ZCBvZiBDUFUvVGFzayB0aW1lIGFuZCBzdGF0cyBhY2NvdW50aW5nCgpDT05GSUdfQ1BVX0lT
T0xBVElPTj15CgojCiMgUkNVIFN1YnN5c3RlbQojCkNPTkZJR19UUkVFX1JDVT15CiMgQ09O
RklHX1JDVV9FWFBFUlQgaXMgbm90IHNldApDT05GSUdfVFJFRV9TUkNVPXkKQ09ORklHX1RB
U0tTX1JDVV9HRU5FUklDPXkKQ09ORklHX05FRURfVEFTS1NfUkNVPXkKQ09ORklHX1RBU0tT
X1RSQUNFX1JDVT15CkNPTkZJR19SQ1VfU1RBTExfQ09NTU9OPXkKQ09ORklHX1JDVV9ORUVE
X1NFR0NCTElTVD15CiMgZW5kIG9mIFJDVSBTdWJzeXN0ZW0KCkNPTkZJR19JS0NPTkZJRz15
CkNPTkZJR19JS0NPTkZJR19QUk9DPXkKQ09ORklHX0lLSEVBREVSUz15CkNPTkZJR19MT0df
QlVGX1NISUZUPTE3CkNPTkZJR19MT0dfQ1BVX01BWF9CVUZfU0hJRlQ9MTIKQ09ORklHX0hB
VkVfVU5TVEFCTEVfU0NIRURfQ0xPQ0s9eQoKIwojIFNjaGVkdWxlciBmZWF0dXJlcwojCiMg
ZW5kIG9mIFNjaGVkdWxlciBmZWF0dXJlcwoKQ09ORklHX0FSQ0hfV0FOVF9CQVRDSEVEX1VO
TUFQX1RMQl9GTFVTSD15CkNPTkZJR19DQ19JTVBMSUNJVF9GQUxMVEhST1VHSD0iLVdpbXBs
aWNpdC1mYWxsdGhyb3VnaD01IgpDT05GSUdfR0NDMTBfTk9fQVJSQVlfQk9VTkRTPXkKQ09O
RklHX0NDX05PX0FSUkFZX0JPVU5EUz15CkNPTkZJR19HQ0NfTk9fU1RSSU5HT1BfT1ZFUkZM
T1c9eQpDT05GSUdfQ0NfTk9fU1RSSU5HT1BfT1ZFUkZMT1c9eQpDT05GSUdfU0xBQl9PQkpf
RVhUPXkKQ09ORklHX0NHUk9VUFM9eQpDT05GSUdfUEFHRV9DT1VOVEVSPXkKQ09ORklHX0NH
Uk9VUF9GQVZPUl9EWU5NT0RTPXkKQ09ORklHX01FTUNHPXkKIyBDT05GSUdfTUVNQ0dfVjEg
aXMgbm90IHNldAojIENPTkZJR19CTEtfQ0dST1VQIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dS
T1VQX1NDSEVEIGlzIG5vdCBzZXQKQ09ORklHX1NDSEVEX01NX0NJRD15CiMgQ09ORklHX0NH
Uk9VUF9QSURTIGlzIG5vdCBzZXQKIyBDT05GSUdfQ0dST1VQX1JETUEgaXMgbm90IHNldApD
T05GSUdfQ0dST1VQX0ZSRUVaRVI9eQojIENPTkZJR19DUFVTRVRTIGlzIG5vdCBzZXQKQ09O
RklHX0NHUk9VUF9ERVZJQ0U9eQojIENPTkZJR19DR1JPVVBfQ1BVQUNDVCBpcyBub3Qgc2V0
CkNPTkZJR19DR1JPVVBfUEVSRj15CiMgQ09ORklHX0NHUk9VUF9CUEYgaXMgbm90IHNldApD
T05GSUdfQ0dST1VQX01JU0M9eQpDT05GSUdfU09DS19DR1JPVVBfREFUQT15CkNPTkZJR19O
QU1FU1BBQ0VTPXkKIyBDT05GSUdfVVRTX05TIGlzIG5vdCBzZXQKIyBDT05GSUdfVElNRV9O
UyBpcyBub3Qgc2V0CkNPTkZJR19JUENfTlM9eQojIENPTkZJR19VU0VSX05TIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUElEX05TIGlzIG5vdCBzZXQKQ09ORklHX05FVF9OUz15CiMgQ09ORklH
X0NIRUNLUE9JTlRfUkVTVE9SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDSEVEX0FVVE9HUk9V
UCBpcyBub3Qgc2V0CiMgQ09ORklHX1JFTEFZIGlzIG5vdCBzZXQKIyBDT05GSUdfQkxLX0RF
Vl9JTklUUkQgaXMgbm90IHNldApDT05GSUdfQk9PVF9DT05GSUc9eQpDT05GSUdfQk9PVF9D
T05GSUdfRk9SQ0U9eQpDT05GSUdfQk9PVF9DT05GSUdfRU1CRUQ9eQpDT05GSUdfQk9PVF9D
T05GSUdfRU1CRURfRklMRT0iIgpDT05GSUdfSU5JVFJBTUZTX1BSRVNFUlZFX01USU1FPXkK
Q09ORklHX0NDX09QVElNSVpFX0ZPUl9QRVJGT1JNQU5DRT15CiMgQ09ORklHX0NDX09QVElN
SVpFX0ZPUl9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX0xEX09SUEhBTl9XQVJOPXkKQ09ORklH
X0xEX09SUEhBTl9XQVJOX0xFVkVMPSJlcnJvciIKQ09ORklHX1NZU0NUTD15CkNPTkZJR19I
QVZFX1VJRDE2PXkKQ09ORklHX1NZU0NUTF9FWENFUFRJT05fVFJBQ0U9eQpDT05GSUdfSEFW
RV9QQ1NQS1JfUExBVEZPUk09eQojIENPTkZJR19FWFBFUlQgaXMgbm90IHNldApDT05GSUdf
VUlEMTY9eQpDT05GSUdfTVVMVElVU0VSPXkKQ09ORklHX1NHRVRNQVNLX1NZU0NBTEw9eQpD
T05GSUdfU1lTRlNfU1lTQ0FMTD15CkNPTkZJR19GSEFORExFPXkKQ09ORklHX1BPU0lYX1RJ
TUVSUz15CkNPTkZJR19QUklOVEs9eQpDT05GSUdfQlVHPXkKQ09ORklHX0VMRl9DT1JFPXkK
Q09ORklHX1BDU1BLUl9QTEFURk9STT15CkNPTkZJR19GVVRFWD15CkNPTkZJR19GVVRFWF9Q
ST15CkNPTkZJR19FUE9MTD15CkNPTkZJR19TSUdOQUxGRD15CkNPTkZJR19USU1FUkZEPXkK
Q09ORklHX0VWRU5URkQ9eQpDT05GSUdfU0hNRU09eQpDT05GSUdfQUlPPXkKQ09ORklHX0lP
X1VSSU5HPXkKQ09ORklHX0FEVklTRV9TWVNDQUxMUz15CkNPTkZJR19NRU1CQVJSSUVSPXkK
Q09ORklHX0tDTVA9eQpDT05GSUdfUlNFUT15CkNPTkZJR19DQUNIRVNUQVRfU1lTQ0FMTD15
CkNPTkZJR19LQUxMU1lNUz15CkNPTkZJR19LQUxMU1lNU19TRUxGVEVTVD15CkNPTkZJR19L
QUxMU1lNU19CQVNFX1JFTEFUSVZFPXkKQ09ORklHX0FSQ0hfSEFTX01FTUJBUlJJRVJfU1lO
Q19DT1JFPXkKQ09ORklHX0hBVkVfUEVSRl9FVkVOVFM9eQoKIwojIEtlcm5lbCBQZXJmb3Jt
YW5jZSBFdmVudHMgQW5kIENvdW50ZXJzCiMKQ09ORklHX1BFUkZfRVZFTlRTPXkKIyBlbmQg
b2YgS2VybmVsIFBlcmZvcm1hbmNlIEV2ZW50cyBBbmQgQ291bnRlcnMKCiMgQ09ORklHX1BS
T0ZJTElORyBpcyBub3Qgc2V0CgojCiMgS2V4ZWMgYW5kIGNyYXNoIGZlYXR1cmVzCiMKIyBD
T05GSUdfS0VYRUMgaXMgbm90IHNldAojIGVuZCBvZiBLZXhlYyBhbmQgY3Jhc2ggZmVhdHVy
ZXMKIyBlbmQgb2YgR2VuZXJhbCBzZXR1cAoKIyBDT05GSUdfNjRCSVQgaXMgbm90IHNldApD
T05GSUdfWDg2XzMyPXkKQ09ORklHX1g4Nj15CkNPTkZJR19JTlNUUlVDVElPTl9ERUNPREVS
PXkKQ09ORklHX09VVFBVVF9GT1JNQVQ9ImVsZjMyLWkzODYiCkNPTkZJR19MT0NLREVQX1NV
UFBPUlQ9eQpDT05GSUdfU1RBQ0tUUkFDRV9TVVBQT1JUPXkKQ09ORklHX01NVT15CkNPTkZJ
R19BUkNIX01NQVBfUk5EX0JJVFNfTUlOPTgKQ09ORklHX0FSQ0hfTU1BUF9STkRfQklUU19N
QVg9MTYKQ09ORklHX0FSQ0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUlOPTgKQ09ORklHX0FS
Q0hfTU1BUF9STkRfQ09NUEFUX0JJVFNfTUFYPTE2CkNPTkZJR19HRU5FUklDX0lTQV9ETUE9
eQpDT05GSUdfR0VORVJJQ19CVUc9eQpDT05GSUdfQVJDSF9NQVlfSEFWRV9QQ19GREM9eQpD
T05GSUdfR0VORVJJQ19DQUxJQlJBVEVfREVMQVk9eQpDT05GSUdfQVJDSF9IQVNfQ1BVX1JF
TEFYPXkKQ09ORklHX0FSQ0hfSElCRVJOQVRJT05fUE9TU0lCTEU9eQpDT05GSUdfQVJDSF9T
VVNQRU5EX1BPU1NJQkxFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfVVBST0JFUz15CkNPTkZJ
R19GSVhfRUFSTFlDT05fTUVNPXkKQ09ORklHX1BHVEFCTEVfTEVWRUxTPTIKQ09ORklHX0ND
X0hBU19TQU5FX1NUQUNLUFJPVEVDVE9SPXkKCiMKIyBQcm9jZXNzb3IgdHlwZSBhbmQgZmVh
dHVyZXMKIwpDT05GSUdfU01QPXkKIyBDT05GSUdfWDg2X01QUEFSU0UgaXMgbm90IHNldAoj
IENPTkZJR19YODZfQ1BVX1JFU0NUUkwgaXMgbm90IHNldApDT05GSUdfWDg2X0JJR1NNUD15
CiMgQ09ORklHX1g4Nl9FWFRFTkRFRF9QTEFURk9STSBpcyBub3Qgc2V0CiMgQ09ORklHX1g4
Nl9BTURfUExBVEZPUk1fREVWSUNFIGlzIG5vdCBzZXQKQ09ORklHX1g4Nl8zMl9JUklTPXkK
Q09ORklHX1NDSEVEX09NSVRfRlJBTUVfUE9JTlRFUj15CiMgQ09ORklHX0hZUEVSVklTT1Jf
R1VFU1QgaXMgbm90IHNldAojIENPTkZJR19NNDg2U1ggaXMgbm90IHNldAojIENPTkZJR19N
NDg2IGlzIG5vdCBzZXQKQ09ORklHX001ODY9eQojIENPTkZJR19NNTg2VFNDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTTU4Nk1NWCBpcyBub3Qgc2V0CiMgQ09ORklHX002ODYgaXMgbm90IHNl
dAojIENPTkZJR19NUEVOVElVTUlJIGlzIG5vdCBzZXQKIyBDT05GSUdfTVBFTlRJVU1JSUkg
aXMgbm90IHNldAojIENPTkZJR19NUEVOVElVTU0gaXMgbm90IHNldAojIENPTkZJR19NUEVO
VElVTTQgaXMgbm90IHNldAojIENPTkZJR19NSzYgaXMgbm90IHNldAojIENPTkZJR19NSzcg
aXMgbm90IHNldAojIENPTkZJR19NSzggaXMgbm90IHNldAojIENPTkZJR19NQ1JVU09FIGlz
IG5vdCBzZXQKIyBDT05GSUdfTUVGRklDRU9OIGlzIG5vdCBzZXQKIyBDT05GSUdfTVdJTkNI
SVBDNiBpcyBub3Qgc2V0CiMgQ09ORklHX01XSU5DSElQM0QgaXMgbm90IHNldAojIENPTkZJ
R19NRUxBTiBpcyBub3Qgc2V0CiMgQ09ORklHX01HRU9ERUdYMSBpcyBub3Qgc2V0CiMgQ09O
RklHX01HRU9ERV9MWCBpcyBub3Qgc2V0CiMgQ09ORklHX01DWVJJWElJSSBpcyBub3Qgc2V0
CiMgQ09ORklHX01WSUFDM18yIGlzIG5vdCBzZXQKIyBDT05GSUdfTVZJQUM3IGlzIG5vdCBz
ZXQKIyBDT05GSUdfTUNPUkUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTUFUT00gaXMgbm90IHNl
dApDT05GSUdfWDg2X0dFTkVSSUM9eQpDT05GSUdfWDg2X0lOVEVSTk9ERV9DQUNIRV9TSElG
VD02CkNPTkZJR19YODZfTDFfQ0FDSEVfU0hJRlQ9NgpDT05GSUdfWDg2X0YwMEZfQlVHPXkK
Q09ORklHX1g4Nl9BTElHTk1FTlRfMTY9eQpDT05GSUdfWDg2X0lOVEVMX1VTRVJDT1BZPXkK
Q09ORklHX1g4Nl9NSU5JTVVNX0NQVV9GQU1JTFk9NApDT05GSUdfSUEzMl9GRUFUX0NUTD15
CkNPTkZJR19YODZfVk1YX0ZFQVRVUkVfTkFNRVM9eQpDT05GSUdfQ1BVX1NVUF9JTlRFTD15
CkNPTkZJR19DUFVfU1VQX0NZUklYXzMyPXkKQ09ORklHX0NQVV9TVVBfQU1EPXkKQ09ORklH
X0NQVV9TVVBfSFlHT049eQpDT05GSUdfQ1BVX1NVUF9DRU5UQVVSPXkKQ09ORklHX0NQVV9T
VVBfVFJBTlNNRVRBXzMyPXkKQ09ORklHX0NQVV9TVVBfWkhBT1hJTj15CkNPTkZJR19DUFVf
U1VQX1ZPUlRFWF8zMj15CiMgQ09ORklHX0hQRVRfVElNRVIgaXMgbm90IHNldApDT05GSUdf
RE1JPXkKQ09ORklHX05SX0NQVVNfUkFOR0VfQkVHSU49MgpDT05GSUdfTlJfQ1BVU19SQU5H
RV9FTkQ9NjQKQ09ORklHX05SX0NQVVNfREVGQVVMVD0zMgpDT05GSUdfTlJfQ1BVUz0zMgpD
T05GSUdfU0NIRURfQ0xVU1RFUj15CkNPTkZJR19TQ0hFRF9TTVQ9eQojIENPTkZJR19TQ0hF
RF9NQyBpcyBub3Qgc2V0CkNPTkZJR19YODZfTE9DQUxfQVBJQz15CkNPTkZJR19YODZfSU9f
QVBJQz15CiMgQ09ORklHX1g4Nl9SRVJPVVRFX0ZPUl9CUk9LRU5fQk9PVF9JUlFTIGlzIG5v
dCBzZXQKQ09ORklHX1g4Nl9NQ0U9eQpDT05GSUdfWDg2X01DRUxPR19MRUdBQ1k9eQpDT05G
SUdfWDg2X01DRV9JTlRFTD15CiMgQ09ORklHX1g4Nl9BTkNJRU5UX01DRSBpcyBub3Qgc2V0
CkNPTkZJR19YODZfTUNFX1RIUkVTSE9MRD15CgojCiMgUGVyZm9ybWFuY2UgbW9uaXRvcmlu
ZwojCkNPTkZJR19QRVJGX0VWRU5UU19BTURfUE9XRVI9eQpDT05GSUdfUEVSRl9FVkVOVFNf
QU1EX1VOQ09SRT15CiMgQ09ORklHX1BFUkZfRVZFTlRTX0FNRF9CUlMgaXMgbm90IHNldAoj
IGVuZCBvZiBQZXJmb3JtYW5jZSBtb25pdG9yaW5nCgojIENPTkZJR19YODZfTEVHQUNZX1ZN
ODYgaXMgbm90IHNldApDT05GSUdfWDg2XzE2QklUPXkKQ09ORklHX1g4Nl9FU1BGSVgzMj15
CkNPTkZJR19YODZfSU9QTF9JT1BFUk09eQojIENPTkZJR19UT1NISUJBIGlzIG5vdCBzZXQK
Q09ORklHX1g4Nl9SRUJPT1RGSVhVUFM9eQpDT05GSUdfTUlDUk9DT0RFPXkKQ09ORklHX01J
Q1JPQ09ERV9MQVRFX0xPQURJTkc9eQojIENPTkZJR19NSUNST0NPREVfTEFURV9GT1JDRV9N
SU5SRVYgaXMgbm90IHNldAojIENPTkZJR19YODZfTVNSIGlzIG5vdCBzZXQKIyBDT05GSUdf
WDg2X0NQVUlEIGlzIG5vdCBzZXQKIyBDT05GSUdfTk9ISUdITUVNIGlzIG5vdCBzZXQKQ09O
RklHX0hJR0hNRU00Rz15CkNPTkZJR19QQUdFX09GRlNFVD0weEMwMDAwMDAwCkNPTkZJR19I
SUdITUVNPXkKQ09ORklHX0FSQ0hfRkxBVE1FTV9FTkFCTEU9eQpDT05GSUdfQVJDSF9TUEFS
U0VNRU1fRU5BQkxFPXkKQ09ORklHX0FSQ0hfU0VMRUNUX01FTU9SWV9NT0RFTD15CkNPTkZJ
R19JTExFR0FMX1BPSU5URVJfVkFMVUU9MApDT05GSUdfSElHSFBURT15CiMgQ09ORklHX1g4
Nl9DSEVDS19CSU9TX0NPUlJVUFRJT04gaXMgbm90IHNldApDT05GSUdfTVRSUj15CkNPTkZJ
R19NVFJSX1NBTklUSVpFUj15CkNPTkZJR19NVFJSX1NBTklUSVpFUl9FTkFCTEVfREVGQVVM
VD0wCkNPTkZJR19NVFJSX1NBTklUSVpFUl9TUEFSRV9SRUdfTlJfREVGQVVMVD0xCkNPTkZJ
R19YODZfUEFUPXkKQ09ORklHX0FSQ0hfVVNFU19QR19VTkNBQ0hFRD15CkNPTkZJR19YODZf
VU1JUD15CkNPTkZJR19DQ19IQVNfSUJUPXkKQ09ORklHX1g4Nl9JTlRFTF9UU1hfTU9ERV9P
RkY9eQojIENPTkZJR19YODZfSU5URUxfVFNYX01PREVfT04gaXMgbm90IHNldAojIENPTkZJ
R19YODZfSU5URUxfVFNYX01PREVfQVVUTyBpcyBub3Qgc2V0CkNPTkZJR19FRkk9eQpDT05G
SUdfRUZJX1NUVUI9eQpDT05GSUdfRUZJX0hBTkRPVkVSX1BST1RPQ09MPXkKIyBDT05GSUdf
SFpfMTAwIGlzIG5vdCBzZXQKQ09ORklHX0haXzI1MD15CiMgQ09ORklHX0haXzMwMCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0haXzEwMDAgaXMgbm90IHNldApDT05GSUdfSFo9MjUwCkNPTkZJ
R19BUkNIX1NVUFBPUlRTX0tFWEVDPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfUFVS
R0FUT1JZPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfU0lHPXkKQ09ORklHX0FSQ0hf
U1VQUE9SVFNfS0VYRUNfU0lHX0ZPUkNFPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNf
QlpJTUFHRV9WRVJJRllfU0lHPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS0VYRUNfSlVNUD15
CkNPTkZJR19BUkNIX1NVUFBPUlRTX0NSQVNIX0RVTVA9eQpDT05GSUdfQVJDSF9TVVBQT1JU
U19DUkFTSF9IT1RQTFVHPXkKQ09ORklHX1BIWVNJQ0FMX1NUQVJUPTB4MTAwMDAwMApDT05G
SUdfUkVMT0NBVEFCTEU9eQpDT05GSUdfUkFORE9NSVpFX0JBU0U9eQpDT05GSUdfWDg2X05F
RURfUkVMT0NTPXkKQ09ORklHX1BIWVNJQ0FMX0FMSUdOPTB4MjAwMDAwCkNPTkZJR19IT1RQ
TFVHX0NQVT15CkNPTkZJR19DT01QQVRfVkRTTz15CkNPTkZJR19DTURMSU5FX0JPT0w9eQpD
T05GSUdfQ01ETElORT0iIgpDT05GSUdfTU9ESUZZX0xEVF9TWVNDQUxMPXkKQ09ORklHX1NU
UklDVF9TSUdBTFRTVEFDS19TSVpFPXkKIyBlbmQgb2YgUHJvY2Vzc29yIHR5cGUgYW5kIGZl
YXR1cmVzCgpDT05GSUdfQ0NfSEFTX05BTUVEX0FTPXkKQ09ORklHX1VTRV9YODZfU0VHX1NV
UFBPUlQ9eQpDT05GSUdfQ0NfSEFTX1NMUz15CkNPTkZJR19DQ19IQVNfUkVUVVJOX1RIVU5L
PXkKQ09ORklHX0NDX0hBU19FTlRSWV9QQURESU5HPXkKQ09ORklHX0ZVTkNUSU9OX1BBRERJ
TkdfQ0ZJPTExCkNPTkZJR19GVU5DVElPTl9QQURESU5HX0JZVEVTPTE2CkNPTkZJR19DUFVf
TUlUSUdBVElPTlM9eQpDT05GSUdfTUlUSUdBVElPTl9SRVRQT0xJTkU9eQojIENPTkZJR19N
SVRJR0FUSU9OX1JFVEhVTksgaXMgbm90IHNldAojIENPTkZJR19NSVRJR0FUSU9OX0dEU19G
T1JDRSBpcyBub3Qgc2V0CkNPTkZJR19NSVRJR0FUSU9OX1JGRFM9eQojIENPTkZJR19NSVRJ
R0FUSU9OX1NQRUNUUkVfQkhJIGlzIG5vdCBzZXQKCiMKIyBQb3dlciBtYW5hZ2VtZW50IGFu
ZCBBQ1BJIG9wdGlvbnMKIwojIENPTkZJR19TVVNQRU5EIGlzIG5vdCBzZXQKIyBDT05GSUdf
SElCRVJOQVRJT04gaXMgbm90IHNldAojIENPTkZJR19QTSBpcyBub3Qgc2V0CkNPTkZJR19B
UkNIX1NVUFBPUlRTX0FDUEk9eQpDT05GSUdfQUNQST15CkNPTkZJR19BQ1BJX0xFR0FDWV9U
QUJMRVNfTE9PS1VQPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9BQ1BJX1BEQz15CkNPTkZJ
R19BQ1BJX1NZU1RFTV9QT1dFUl9TVEFURVNfU1VQUE9SVD15CkNPTkZJR19BQ1BJX1RIRVJN
QUxfTElCPXkKQ09ORklHX0FDUElfREVCVUdHRVI9eQojIENPTkZJR19BQ1BJX1NQQ1JfVEFC
TEUgaXMgbm90IHNldAojIENPTkZJR19BQ1BJX1JFVl9PVkVSUklERV9QT1NTSUJMRSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0FDUElfRUNfREVCVUdGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0FD
UElfQUMgaXMgbm90IHNldApDT05GSUdfQUNQSV9CQVRURVJZPXkKQ09ORklHX0FDUElfQlVU
VE9OPXkKQ09ORklHX0FDUElfVklERU89eQpDT05GSUdfQUNQSV9GQU49eQpDT05GSUdfQUNQ
SV9ET0NLPXkKQ09ORklHX0FDUElfQ1BVX0ZSRVFfUFNTPXkKQ09ORklHX0FDUElfUFJPQ0VT
U09SX0NTVEFURT15CkNPTkZJR19BQ1BJX1BST0NFU1NPUl9JRExFPXkKQ09ORklHX0FDUElf
UFJPQ0VTU09SPXkKQ09ORklHX0FDUElfSVBNST15CkNPTkZJR19BQ1BJX0hPVFBMVUdfQ1BV
PXkKQ09ORklHX0FDUElfUFJPQ0VTU09SX0FHR1JFR0FUT1I9eQpDT05GSUdfQUNQSV9USEVS
TUFMPXkKQ09ORklHX0FDUElfUExBVEZPUk1fUFJPRklMRT15CkNPTkZJR19BUkNIX0hBU19B
Q1BJX1RBQkxFX1VQR1JBREU9eQpDT05GSUdfQUNQSV9ERUJVRz15CkNPTkZJR19BQ1BJX0NP
TlRBSU5FUj15CkNPTkZJR19BQ1BJX1NCUz15CkNPTkZJR19BQ1BJX0hFRD15CkNPTkZJR19B
Q1BJX0JHUlQ9eQpDT05GSUdfSEFWRV9BQ1BJX0FQRUk9eQpDT05GSUdfSEFWRV9BQ1BJX0FQ
RUlfTk1JPXkKQ09ORklHX0FDUElfQVBFST15CiMgQ09ORklHX0FDUElfQVBFSV9HSEVTIGlz
IG5vdCBzZXQKQ09ORklHX0FDUElfQVBFSV9FUlNUX0RFQlVHPXkKIyBDT05GSUdfQUNQSV9E
UFRGIGlzIG5vdCBzZXQKIyBDT05GSUdfQUNQSV9DT05GSUdGUyBpcyBub3Qgc2V0CkNPTkZJ
R19BQ1BJX1BDQz15CiMgQ09ORklHX0FDUElfRkZIIGlzIG5vdCBzZXQKQ09ORklHX1BNSUNf
T1BSRUdJT049eQojIENPTkZJR19CWFRfV0NfUE1JQ19PUFJFR0lPTiBpcyBub3Qgc2V0CkNP
TkZJR19UUFM2ODQ3MF9QTUlDX09QUkVHSU9OPXkKQ09ORklHX0FDUElfVklPVD15CkNPTkZJ
R19YODZfUE1fVElNRVI9eQoKIwojIENQVSBGcmVxdWVuY3kgc2NhbGluZwojCiMgQ09ORklH
X0NQVV9GUkVRIGlzIG5vdCBzZXQKIyBlbmQgb2YgQ1BVIEZyZXF1ZW5jeSBzY2FsaW5nCgoj
CiMgQ1BVIElkbGUKIwpDT05GSUdfQ1BVX0lETEU9eQojIENPTkZJR19DUFVfSURMRV9HT1Zf
TEFEREVSIGlzIG5vdCBzZXQKQ09ORklHX0NQVV9JRExFX0dPVl9NRU5VPXkKIyBDT05GSUdf
Q1BVX0lETEVfR09WX1RFTyBpcyBub3Qgc2V0CiMgZW5kIG9mIENQVSBJZGxlCgpDT05GSUdf
SU5URUxfSURMRT15CiMgZW5kIG9mIFBvd2VyIG1hbmFnZW1lbnQgYW5kIEFDUEkgb3B0aW9u
cwoKIwojIEJ1cyBvcHRpb25zIChQQ0kgZXRjLikKIwpDT05GSUdfSVNBX0RNQV9BUEk9eQpD
T05GSUdfSVNBPXkKQ09ORklHX1NDeDIwMD15CkNPTkZJR19TQ3gyMDBIUl9USU1FUj15CkNP
TkZJR19PTFBDPXkKQ09ORklHX09MUENfWE8xNV9TQ0k9eQojIENPTkZJR19BTElYIGlzIG5v
dCBzZXQKQ09ORklHX05FVDU1MDE9eQpDT05GSUdfR0VPUz15CiMgZW5kIG9mIEJ1cyBvcHRp
b25zIChQQ0kgZXRjLikKCiMKIyBCaW5hcnkgRW11bGF0aW9ucwojCkNPTkZJR19DT01QQVRf
MzI9eQojIGVuZCBvZiBCaW5hcnkgRW11bGF0aW9ucwoKQ09ORklHX0hBVkVfQVRPTUlDX0lP
TUFQPXkKQ09ORklHX1ZJUlRVQUxJWkFUSU9OPXkKQ09ORklHX0FTX0FWWDUxMj15CkNPTkZJ
R19BU19TSEExX05JPXkKQ09ORklHX0FTX1NIQTI1Nl9OST15CkNPTkZJR19BU19UUEFVU0U9
eQpDT05GSUdfQVNfR0ZOST15CkNPTkZJR19BU19WQUVTPXkKQ09ORklHX0FTX1ZQQ0xNVUxR
RFE9eQpDT05GSUdfQVNfV1JVU1M9eQpDT05GSUdfQVJDSF9DT05GSUdVUkVTX0NQVV9NSVRJ
R0FUSU9OUz15CgojCiMgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMK
IwpDT05GSUdfSE9UUExVR19TTVQ9eQpDT05GSUdfSE9UUExVR19DT1JFX1NZTkM9eQpDT05G
SUdfSE9UUExVR19DT1JFX1NZTkNfREVBRD15CkNPTkZJR19IT1RQTFVHX0NPUkVfU1lOQ19G
VUxMPXkKQ09ORklHX0hPVFBMVUdfU1BMSVRfU1RBUlRVUD15CkNPTkZJR19HRU5FUklDX0VO
VFJZPXkKIyBDT05GSUdfS1BST0JFUyBpcyBub3Qgc2V0CiMgQ09ORklHX0pVTVBfTEFCRUwg
aXMgbm90IHNldAojIENPTkZJR19TVEFUSUNfQ0FMTF9TRUxGVEVTVCBpcyBub3Qgc2V0CkNP
TkZJR19IQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTPXkKQ09ORklHX0FSQ0hfVVNF
X0JVSUxUSU5fQlNXQVA9eQpDT05GSUdfSEFWRV9JT1JFTUFQX1BST1Q9eQpDT05GSUdfSEFW
RV9LUFJPQkVTPXkKQ09ORklHX0hBVkVfS1JFVFBST0JFUz15CkNPTkZJR19IQVZFX09QVFBS
T0JFUz15CkNPTkZJR19IQVZFX0tQUk9CRVNfT05fRlRSQUNFPXkKQ09ORklHX0FSQ0hfQ09S
UkVDVF9TVEFDS1RSQUNFX09OX0tSRVRQUk9CRT15CkNPTkZJR19IQVZFX0ZVTkNUSU9OX0VS
Uk9SX0lOSkVDVElPTj15CkNPTkZJR19IQVZFX05NST15CkNPTkZJR19UUkFDRV9JUlFGTEFH
U19TVVBQT1JUPXkKQ09ORklHX1RSQUNFX0lSUUZMQUdTX05NSV9TVVBQT1JUPXkKQ09ORklH
X0hBVkVfQVJDSF9UUkFDRUhPT0s9eQpDT05GSUdfSEFWRV9ETUFfQ09OVElHVU9VUz15CkNP
TkZJR19HRU5FUklDX1NNUF9JRExFX1RIUkVBRD15CkNPTkZJR19BUkNIX0hBU19GT1JUSUZZ
X1NPVVJDRT15CkNPTkZJR19BUkNIX0hBU19TRVRfTUVNT1JZPXkKQ09ORklHX0FSQ0hfSEFT
X1NFVF9ESVJFQ1RfTUFQPXkKQ09ORklHX0FSQ0hfSEFTX0NQVV9GSU5BTElaRV9JTklUPXkK
Q09ORklHX0hBVkVfQVJDSF9USFJFQURfU1RSVUNUX1dISVRFTElTVD15CkNPTkZJR19BUkNI
X1dBTlRTX0RZTkFNSUNfVEFTS19TVFJVQ1Q9eQpDT05GSUdfQVJDSF9XQU5UU19OT19JTlNU
Uj15CkNPTkZJR19BUkNIXzMyQklUX09GRl9UPXkKQ09ORklHX0hBVkVfQVNNX01PRFZFUlNJ
T05TPXkKQ09ORklHX0hBVkVfUkVHU19BTkRfU1RBQ0tfQUNDRVNTX0FQST15CkNPTkZJR19I
QVZFX1JTRVE9eQpDT05GSUdfSEFWRV9GVU5DVElPTl9BUkdfQUNDRVNTX0FQST15CkNPTkZJ
R19IQVZFX0hXX0JSRUFLUE9JTlQ9eQpDT05GSUdfSEFWRV9NSVhFRF9CUkVBS1BPSU5UU19S
RUdTPXkKQ09ORklHX0hBVkVfVVNFUl9SRVRVUk5fTk9USUZJRVI9eQpDT05GSUdfSEFWRV9Q
RVJGX0VWRU5UU19OTUk9eQpDT05GSUdfSEFWRV9IQVJETE9DS1VQX0RFVEVDVE9SX1BFUkY9
eQpDT05GSUdfSEFWRV9QRVJGX1JFR1M9eQpDT05GSUdfSEFWRV9QRVJGX1VTRVJfU1RBQ0tf
RFVNUD15CkNPTkZJR19IQVZFX0FSQ0hfSlVNUF9MQUJFTD15CkNPTkZJR19IQVZFX0FSQ0hf
SlVNUF9MQUJFTF9SRUxBVElWRT15CkNPTkZJR19NTVVfR0FUSEVSX01FUkdFX1ZNQVM9eQpD
T05GSUdfTU1VX0xBWllfVExCX1JFRkNPVU5UPXkKQ09ORklHX0FSQ0hfSEFWRV9OTUlfU0FG
RV9DTVBYQ0hHPXkKQ09ORklHX0FSQ0hfSEFTX05NSV9TQUZFX1RISVNfQ1BVX09QUz15CkNP
TkZJR19IQVZFX0FMSUdORURfU1RSVUNUX1BBR0U9eQpDT05GSUdfSEFWRV9DTVBYQ0hHX0xP
Q0FMPXkKQ09ORklHX0hBVkVfQ01QWENIR19ET1VCTEU9eQpDT05GSUdfQVJDSF9XQU5UX0lQ
Q19QQVJTRV9WRVJTSU9OPXkKQ09ORklHX0hBVkVfQVJDSF9TRUNDT01QPXkKQ09ORklHX0hB
VkVfQVJDSF9TRUNDT01QX0ZJTFRFUj15CkNPTkZJR19TRUNDT01QPXkKQ09ORklHX1NFQ0NP
TVBfRklMVEVSPXkKIyBDT05GSUdfU0VDQ09NUF9DQUNIRV9ERUJVRyBpcyBub3Qgc2V0CkNP
TkZJR19IQVZFX0FSQ0hfU1RBQ0tMRUFLPXkKQ09ORklHX0hBVkVfU1RBQ0tQUk9URUNUT1I9
eQojIENPTkZJR19TVEFDS1BST1RFQ1RPUiBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1NVUFBP
UlRTX0xUT19DTEFORz15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0xUT19DTEFOR19USElOPXkK
Q09ORklHX0xUT19OT05FPXkKQ09ORklHX0hBVkVfQVJDSF9XSVRISU5fU1RBQ0tfRlJBTUVT
PXkKQ09ORklHX0hBVkVfSVJRX1RJTUVfQUNDT1VOVElORz15CkNPTkZJR19IQVZFX01PVkVf
UFVEPXkKQ09ORklHX0hBVkVfTU9WRV9QTUQ9eQpDT05GSUdfSEFWRV9BUkNIX1RSQU5TUEFS
RU5UX0hVR0VQQUdFPXkKQ09ORklHX0FSQ0hfV0FOVF9IVUdFX1BNRF9TSEFSRT15CkNPTkZJ
R19BUkNIX1dBTlRfUE1EX01LV1JJVEU9eQpDT05GSUdfSEFWRV9NT0RfQVJDSF9TUEVDSUZJ
Qz15CkNPTkZJR19NT0RVTEVTX1VTRV9FTEZfUkVMPXkKQ09ORklHX0hBVkVfU09GVElSUV9P
Tl9PV05fU1RBQ0s9eQpDT05GSUdfU09GVElSUV9PTl9PV05fU1RBQ0s9eQpDT05GSUdfQVJD
SF9IQVNfRUxGX1JBTkRPTUlaRT15CkNPTkZJR19IQVZFX0FSQ0hfTU1BUF9STkRfQklUUz15
CkNPTkZJR19IQVZFX0VYSVRfVEhSRUFEPXkKQ09ORklHX0FSQ0hfTU1BUF9STkRfQklUUz04
CkNPTkZJR19IQVZFX1BBR0VfU0laRV80S0I9eQpDT05GSUdfUEFHRV9TSVpFXzRLQj15CkNP
TkZJR19QQUdFX1NJWkVfTEVTU19USEFOXzY0S0I9eQpDT05GSUdfUEFHRV9TSVpFX0xFU1Nf
VEhBTl8yNTZLQj15CkNPTkZJR19QQUdFX1NISUZUPTEyCkNPTkZJR19JU0FfQlVTX0FQST15
CkNPTkZJR19DTE9ORV9CQUNLV0FSRFM9eQpDT05GSUdfT0xEX1NJR1NVU1BFTkQzPXkKQ09O
RklHX09MRF9TSUdBQ1RJT049eQpDT05GSUdfQ09NUEFUXzMyQklUX1RJTUU9eQpDT05GSUdf
SEFWRV9BUkNIX1JBTkRPTUlaRV9LU1RBQ0tfT0ZGU0VUPXkKQ09ORklHX1JBTkRPTUlaRV9L
U1RBQ0tfT0ZGU0VUPXkKIyBDT05GSUdfUkFORE9NSVpFX0tTVEFDS19PRkZTRVRfREVGQVVM
VCBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJ
R19TVFJJQ1RfS0VSTkVMX1JXWD15CkNPTkZJR19BUkNIX0hBU19TVFJJQ1RfTU9EVUxFX1JX
WD15CkNPTkZJR19IQVZFX0FSQ0hfUFJFTDMyX1JFTE9DQVRJT05TPXkKQ09ORklHX0FSQ0hf
VVNFX01FTVJFTUFQX1BST1Q9eQpDT05GSUdfQVJDSF9IQVNfTUVNX0VOQ1JZUFQ9eQpDT05G
SUdfSEFWRV9TVEFUSUNfQ0FMTD15CkNPTkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQz15CkNP
TkZJR19IQVZFX1BSRUVNUFRfRFlOQU1JQ19DQUxMPXkKQ09ORklHX0FSQ0hfV0FOVF9MRF9P
UlBIQU5fV0FSTj15CkNPTkZJR19BUkNIX1NVUFBPUlRTX0RFQlVHX1BBR0VBTExPQz15CkNP
TkZJR19BUkNIX1NQTElUX0FSRzY0PXkKQ09ORklHX0FSQ0hfSEFTX1BBUkFOT0lEX0wxRF9G
TFVTSD15CkNPTkZJR19EWU5BTUlDX1NJR0ZSQU1FPXkKQ09ORklHX0FSQ0hfSEFTX0hXX1BU
RV9ZT1VORz15CkNPTkZJR19BUkNIX0hBU19LRVJORUxfRlBVX1NVUFBPUlQ9eQoKIwojIEdD
T1YtYmFzZWQga2VybmVsIHByb2ZpbGluZwojCkNPTkZJR19BUkNIX0hBU19HQ09WX1BST0ZJ
TEVfQUxMPXkKIyBlbmQgb2YgR0NPVi1iYXNlZCBrZXJuZWwgcHJvZmlsaW5nCgpDT05GSUdf
SEFWRV9HQ0NfUExVR0lOUz15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlRfNEI9eQpDT05G
SUdfRlVOQ1RJT05fQUxJR05NRU5UXzE2Qj15CkNPTkZJR19GVU5DVElPTl9BTElHTk1FTlQ9
MTYKIyBlbmQgb2YgR2VuZXJhbCBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IG9wdGlvbnMKCkNP
TkZJR19SVF9NVVRFWEVTPXkKIyBDT05GSUdfTU9EVUxFUyBpcyBub3Qgc2V0CkNPTkZJR19C
TE9DSz15CkNPTkZJR19CTE9DS19MRUdBQ1lfQVVUT0xPQUQ9eQpDT05GSUdfQkxLX0RFVl9C
U0dfQ09NTU9OPXkKQ09ORklHX0JMS19ERVZfQlNHTElCPXkKQ09ORklHX0JMS19ERVZfSU5U
RUdSSVRZPXkKIyBDT05GSUdfQkxLX0RFVl9XUklURV9NT1VOVEVEIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkxLX0RFVl9aT05FRCBpcyBub3Qgc2V0CkNPTkZJR19CTEtfV0JUPXkKQ09ORklH
X0JMS19XQlRfTVE9eQojIENPTkZJR19CTEtfU0VEX09QQUwgaXMgbm90IHNldApDT05GSUdf
QkxLX0lOTElORV9FTkNSWVBUSU9OPXkKIyBDT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9O
X0ZBTExCQUNLIGlzIG5vdCBzZXQKCiMKIyBQYXJ0aXRpb24gVHlwZXMKIwojIENPTkZJR19Q
QVJUSVRJT05fQURWQU5DRUQgaXMgbm90IHNldApDT05GSUdfTVNET1NfUEFSVElUSU9OPXkK
Q09ORklHX0VGSV9QQVJUSVRJT049eQojIGVuZCBvZiBQYXJ0aXRpb24gVHlwZXMKCkNPTkZJ
R19CTEtfTVFfVklSVElPPXkKQ09ORklHX0JMT0NLX0hPTERFUl9ERVBSRUNBVEVEPXkKCiMK
IyBJTyBTY2hlZHVsZXJzCiMKQ09ORklHX01RX0lPU0NIRURfREVBRExJTkU9eQojIENPTkZJ
R19NUV9JT1NDSEVEX0tZQkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9TQ0hFRF9CRlEgaXMg
bm90IHNldAojIGVuZCBvZiBJTyBTY2hlZHVsZXJzCgpDT05GSUdfQVNOMT15CkNPTkZJR19J
TkxJTkVfU1BJTl9VTkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9SRUFEX1VOTE9DSz15CkNP
TkZJR19JTkxJTkVfUkVBRF9VTkxPQ0tfSVJRPXkKQ09ORklHX0lOTElORV9XUklURV9VTkxP
Q0s9eQpDT05GSUdfSU5MSU5FX1dSSVRFX1VOTE9DS19JUlE9eQpDT05GSUdfQVJDSF9TVVBQ
T1JUU19BVE9NSUNfUk1XPXkKQ09ORklHX01VVEVYX1NQSU5fT05fT1dORVI9eQpDT05GSUdf
UldTRU1fU1BJTl9PTl9PV05FUj15CkNPTkZJR19MT0NLX1NQSU5fT05fT1dORVI9eQpDT05G
SUdfQVJDSF9VU0VfUVVFVUVEX1NQSU5MT0NLUz15CkNPTkZJR19RVUVVRURfU1BJTkxPQ0tT
PXkKQ09ORklHX0FSQ0hfVVNFX1FVRVVFRF9SV0xPQ0tTPXkKQ09ORklHX1FVRVVFRF9SV0xP
Q0tTPXkKQ09ORklHX0FSQ0hfSEFTX05PTl9PVkVSTEFQUElOR19BRERSRVNTX1NQQUNFPXkK
Q09ORklHX0FSQ0hfSEFTX1NZTkNfQ09SRV9CRUZPUkVfVVNFUk1PREU9eQpDT05GSUdfQVJD
SF9IQVNfU1lTQ0FMTF9XUkFQUEVSPXkKQ09ORklHX0ZSRUVaRVI9eQoKIwojIEV4ZWN1dGFi
bGUgZmlsZSBmb3JtYXRzCiMKQ09ORklHX0JJTkZNVF9FTEY9eQpDT05GSUdfQklORk1UX0VM
Rl9LVU5JVF9URVNUPXkKQ09ORklHX0VMRkNPUkU9eQpDT05GSUdfQ09SRV9EVU1QX0RFRkFV
TFRfRUxGX0hFQURFUlM9eQpDT05GSUdfQklORk1UX1NDUklQVD15CkNPTkZJR19CSU5GTVRf
TUlTQz15CkNPTkZJR19DT1JFRFVNUD15CkNPTkZJR19FWEVDX0tVTklUX1RFU1Q9eQojIGVu
ZCBvZiBFeGVjdXRhYmxlIGZpbGUgZm9ybWF0cwoKIwojIE1lbW9yeSBNYW5hZ2VtZW50IG9w
dGlvbnMKIwpDT05GSUdfU1dBUD15CiMgQ09ORklHX1pTV0FQIGlzIG5vdCBzZXQKQ09ORklH
X0hBVkVfWlNNQUxMT0M9eQoKIwojIFNsYWIgYWxsb2NhdG9yIG9wdGlvbnMKIwpDT05GSUdf
U0xVQj15CiMgQ09ORklHX1NMQUJfTUVSR0VfREVGQVVMVCBpcyBub3Qgc2V0CiMgQ09ORklH
X1NMQUJfRlJFRUxJU1RfUkFORE9NIGlzIG5vdCBzZXQKIyBDT05GSUdfU0xBQl9GUkVFTElT
VF9IQVJERU5FRCBpcyBub3Qgc2V0CkNPTkZJR19TTEFCX0JVQ0tFVFM9eQojIENPTkZJR19T
TFVCX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX1NMVUJfQ1BVX1BBUlRJQUw9eQpDT05GSUdf
UkFORE9NX0tNQUxMT0NfQ0FDSEVTPXkKIyBlbmQgb2YgU2xhYiBhbGxvY2F0b3Igb3B0aW9u
cwoKIyBDT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19D
T01QQVRfQlJLPXkKQ09ORklHX1NFTEVDVF9NRU1PUllfTU9ERUw9eQojIENPTkZJR19GTEFU
TUVNX01BTlVBTCBpcyBub3Qgc2V0CkNPTkZJR19TUEFSU0VNRU1fTUFOVUFMPXkKQ09ORklH
X1NQQVJTRU1FTT15CkNPTkZJR19TUEFSU0VNRU1fU1RBVElDPXkKQ09ORklHX0hBVkVfR1VQ
X0ZBU1Q9eQpDT05GSUdfTUVNT1JZX0lTT0xBVElPTj15CkNPTkZJR19FWENMVVNJVkVfU1lT
VEVNX1JBTT15CkNPTkZJR19BUkNIX01IUF9NRU1NQVBfT05fTUVNT1JZX0VOQUJMRT15CkNP
TkZJR19TUExJVF9QVExPQ0tfQ1BVUz00CkNPTkZJR19DT01QQUNUSU9OPXkKQ09ORklHX0NP
TVBBQ1RfVU5FVklDVEFCTEVfREVGQVVMVD0xCiMgQ09ORklHX1BBR0VfUkVQT1JUSU5HIGlz
IG5vdCBzZXQKQ09ORklHX01JR1JBVElPTj15CkNPTkZJR19DT05USUdfQUxMT0M9eQpDT05G
SUdfUENQX0JBVENIX1NDQUxFX01BWD01CkNPTkZJR19CT1VOQ0U9eQojIENPTkZJR19LU00g
aXMgbm90IHNldApDT05GSUdfREVGQVVMVF9NTUFQX01JTl9BRERSPTQwOTYKQ09ORklHX0FS
Q0hfV0FOVF9HRU5FUkFMX0hVR0VUTEI9eQpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0U9
eQpDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VfQUxXQVlTPXkKIyBDT05GSUdfVFJBTlNQ
QVJFTlRfSFVHRVBBR0VfTUFEVklTRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RSQU5TUEFSRU5U
X0hVR0VQQUdFX05FVkVSIGlzIG5vdCBzZXQKQ09ORklHX1JFQURfT05MWV9USFBfRk9SX0ZT
PXkKQ09ORklHX1BHVEFCTEVfSEFTX0hVR0VfTEVBVkVTPXkKQ09ORklHX05FRURfUEVSX0NQ
VV9FTUJFRF9GSVJTVF9DSFVOSz15CkNPTkZJR19ORUVEX1BFUl9DUFVfUEFHRV9GSVJTVF9D
SFVOSz15CkNPTkZJR19IQVZFX1NFVFVQX1BFUl9DUFVfQVJFQT15CkNPTkZJR19DTUE9eQpD
T05GSUdfQ01BX1NZU0ZTPXkKQ09ORklHX0NNQV9BUkVBUz04CkNPTkZJR19HRU5FUklDX0VB
UkxZX0lPUkVNQVA9eQpDT05GSUdfUEFHRV9JRExFX0ZMQUc9eQpDT05GSUdfSURMRV9QQUdF
X1RSQUNLSU5HPXkKQ09ORklHX0FSQ0hfSEFTX0NBQ0hFX0xJTkVfU0laRT15CkNPTkZJR19B
UkNIX0hBU19DVVJSRU5UX1NUQUNLX1BPSU5URVI9eQpDT05GSUdfWk9ORV9ETUE9eQpDT05G
SUdfVk1fRVZFTlRfQ09VTlRFUlM9eQojIENPTkZJR19QRVJDUFVfU1RBVFMgaXMgbm90IHNl
dAoKIwojIEdVUF9URVNUIG5lZWRzIHRvIGhhdmUgREVCVUdfRlMgZW5hYmxlZAojCkNPTkZJ
R19ETUFQT09MX1RFU1Q9eQpDT05GSUdfQVJDSF9IQVNfUFRFX1NQRUNJQUw9eQpDT05GSUdf
S01BUF9MT0NBTD15CkNPTkZJR19NRU1GRF9DUkVBVEU9eQpDT05GSUdfU0VDUkVUTUVNPXkK
IyBDT05GSUdfQU5PTl9WTUFfTkFNRSBpcyBub3Qgc2V0CkNPTkZJR19VU0VSRkFVTFRGRD15
CkNPTkZJR19MT0NLX01NX0FORF9GSU5EX1ZNQT15CkNPTkZJR19FWEVDTUVNPXkKCiMKIyBE
YXRhIEFjY2VzcyBNb25pdG9yaW5nCiMKQ09ORklHX0RBTU9OPXkKQ09ORklHX0RBTU9OX0tV
TklUX1RFU1Q9eQojIENPTkZJR19EQU1PTl9WQUREUiBpcyBub3Qgc2V0CiMgQ09ORklHX0RB
TU9OX1BBRERSIGlzIG5vdCBzZXQKIyBDT05GSUdfREFNT05fU1lTRlMgaXMgbm90IHNldAoj
IGVuZCBvZiBEYXRhIEFjY2VzcyBNb25pdG9yaW5nCiMgZW5kIG9mIE1lbW9yeSBNYW5hZ2Vt
ZW50IG9wdGlvbnMKCkNPTkZJR19ORVQ9eQpDT05GSUdfTkVUX0lOR1JFU1M9eQpDT05GSUdf
TkVUX0VHUkVTUz15CkNPTkZJR19ORVRfWEdSRVNTPXkKQ09ORklHX1NLQl9FWFRFTlNJT05T
PXkKCiMKIyBOZXR3b3JraW5nIG9wdGlvbnMKIwpDT05GSUdfUEFDS0VUPXkKQ09ORklHX1BB
Q0tFVF9ESUFHPXkKIyBDT05GSUdfVU5JWCBpcyBub3Qgc2V0CiMgQ09ORklHX1hEUF9TT0NL
RVRTIGlzIG5vdCBzZXQKQ09ORklHX05FVF9IQU5EU0hBS0VfS1VOSVRfVEVTVD15CiMgQ09O
RklHX0lORVQgaXMgbm90IHNldAojIENPTkZJR19ORVRXT1JLX1NFQ01BUksgaXMgbm90IHNl
dApDT05GSUdfTkVUX1BUUF9DTEFTU0lGWT15CkNPTkZJR19ORVRXT1JLX1BIWV9USU1FU1RB
TVBJTkc9eQojIENPTkZJR19ORVRGSUxURVIgaXMgbm90IHNldApDT05GSUdfQVRNPXkKQ09O
RklHX0FUTV9MQU5FPXkKQ09ORklHX01SUD15CiMgQ09ORklHX0JSSURHRSBpcyBub3Qgc2V0
CkNPTkZJR19WTEFOXzgwMjFRPXkKIyBDT05GSUdfVkxBTl84MDIxUV9HVlJQIGlzIG5vdCBz
ZXQKQ09ORklHX1ZMQU5fODAyMVFfTVZSUD15CkNPTkZJR19MTEM9eQpDT05GSUdfTExDMj15
CkNPTkZJR19BVEFMSz15CiMgQ09ORklHX1gyNSBpcyBub3Qgc2V0CkNPTkZJR19MQVBCPXkK
Q09ORklHX1BIT05FVD15CiMgQ09ORklHX0lFRUU4MDIxNTQgaXMgbm90IHNldApDT05GSUdf
TkVUX1NDSEVEPXkKCiMKIyBRdWV1ZWluZy9TY2hlZHVsaW5nCiMKQ09ORklHX05FVF9TQ0hf
SFRCPXkKQ09ORklHX05FVF9TQ0hfSEZTQz15CiMgQ09ORklHX05FVF9TQ0hfUFJJTyBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9TQ0hfTVVMVElRIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1NDSF9SRUQgaXMgbm90IHNldAojIENPTkZJR19ORVRfU0NIX1NGQiBpcyBub3Qgc2V0CkNP
TkZJR19ORVRfU0NIX1NGUT15CkNPTkZJR19ORVRfU0NIX1RFUUw9eQpDT05GSUdfTkVUX1ND
SF9UQkY9eQojIENPTkZJR19ORVRfU0NIX0NCUyBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9T
Q0hfRVRGIGlzIG5vdCBzZXQKQ09ORklHX05FVF9TQ0hfTVFQUklPX0xJQj15CkNPTkZJR19O
RVRfU0NIX1RBUFJJTz15CkNPTkZJR19ORVRfU0NIX0dSRUQ9eQpDT05GSUdfTkVUX1NDSF9O
RVRFTT15CkNPTkZJR19ORVRfU0NIX0RSUj15CkNPTkZJR19ORVRfU0NIX01RUFJJTz15CkNP
TkZJR19ORVRfU0NIX1NLQlBSSU89eQojIENPTkZJR19ORVRfU0NIX0NIT0tFIGlzIG5vdCBz
ZXQKIyBDT05GSUdfTkVUX1NDSF9RRlEgaXMgbm90IHNldApDT05GSUdfTkVUX1NDSF9DT0RF
TD15CiMgQ09ORklHX05FVF9TQ0hfRlFfQ09ERUwgaXMgbm90IHNldApDT05GSUdfTkVUX1ND
SF9DQUtFPXkKQ09ORklHX05FVF9TQ0hfRlE9eQojIENPTkZJR19ORVRfU0NIX0hIRiBpcyBu
b3Qgc2V0CkNPTkZJR19ORVRfU0NIX1BJRT15CkNPTkZJR19ORVRfU0NIX0ZRX1BJRT15CiMg
Q09ORklHX05FVF9TQ0hfSU5HUkVTUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfU0NIX1BMVUc9
eQpDT05GSUdfTkVUX1NDSF9FVFM9eQpDT05GSUdfTkVUX1NDSF9ERUZBVUxUPXkKIyBDT05G
SUdfREVGQVVMVF9GUSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFRkFVTFRfQ09ERUwgaXMgbm90
IHNldAojIENPTkZJR19ERUZBVUxUX0ZRX1BJRSBpcyBub3Qgc2V0CiMgQ09ORklHX0RFRkFV
TFRfU0ZRIGlzIG5vdCBzZXQKQ09ORklHX0RFRkFVTFRfUEZJRk9fRkFTVD15CkNPTkZJR19E
RUZBVUxUX05FVF9TQ0g9InBmaWZvX2Zhc3QiCgojCiMgQ2xhc3NpZmljYXRpb24KIwpDT05G
SUdfTkVUX0NMUz15CkNPTkZJR19ORVRfQ0xTX0JBU0lDPXkKQ09ORklHX05FVF9DTFNfRlc9
eQpDT05GSUdfTkVUX0NMU19VMzI9eQpDT05GSUdfQ0xTX1UzMl9QRVJGPXkKQ09ORklHX0NM
U19VMzJfTUFSSz15CiMgQ09ORklHX05FVF9DTFNfRkxPVyBpcyBub3Qgc2V0CiMgQ09ORklH
X05FVF9DTFNfQ0dST1VQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0NMU19CUEYgaXMgbm90
IHNldApDT05GSUdfTkVUX0NMU19GTE9XRVI9eQojIENPTkZJR19ORVRfQ0xTX01BVENIQUxM
IGlzIG5vdCBzZXQKQ09ORklHX05FVF9FTUFUQ0g9eQpDT05GSUdfTkVUX0VNQVRDSF9TVEFD
Sz0zMgojIENPTkZJR19ORVRfRU1BVENIX0NNUCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfRU1B
VENIX05CWVRFPXkKIyBDT05GSUdfTkVUX0VNQVRDSF9VMzIgaXMgbm90IHNldApDT05GSUdf
TkVUX0VNQVRDSF9NRVRBPXkKQ09ORklHX05FVF9FTUFUQ0hfVEVYVD15CkNPTkZJR19ORVRf
RU1BVENIX0NBTklEPXkKQ09ORklHX05FVF9DTFNfQUNUPXkKIyBDT05GSUdfTkVUX0FDVF9Q
T0xJQ0UgaXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9HQUNUPXkKIyBDT05GSUdfR0FDVF9Q
Uk9CIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX0FDVF9NSVJSRUQgaXMgbm90IHNldAojIENP
TkZJR19ORVRfQUNUX1NBTVBMRSBpcyBub3Qgc2V0CkNPTkZJR19ORVRfQUNUX05BVD15CiMg
Q09ORklHX05FVF9BQ1RfUEVESVQgaXMgbm90IHNldApDT05GSUdfTkVUX0FDVF9TSU1QPXkK
Q09ORklHX05FVF9BQ1RfU0tCRURJVD15CkNPTkZJR19ORVRfQUNUX01QTFM9eQpDT05GSUdf
TkVUX0FDVF9WTEFOPXkKQ09ORklHX05FVF9BQ1RfQlBGPXkKQ09ORklHX05FVF9BQ1RfU0tC
TU9EPXkKQ09ORklHX05FVF9BQ1RfSUZFPXkKQ09ORklHX05FVF9BQ1RfVFVOTkVMX0tFWT15
CkNPTkZJR19ORVRfQUNUX0dBVEU9eQpDT05GSUdfTkVUX0lGRV9TS0JNQVJLPXkKIyBDT05G
SUdfTkVUX0lGRV9TS0JQUklPIGlzIG5vdCBzZXQKQ09ORklHX05FVF9JRkVfU0tCVENJTkRF
WD15CkNPTkZJR19ORVRfVENfU0tCX0VYVD15CkNPTkZJR19ORVRfU0NIX0ZJRk89eQpDT05G
SUdfRENCPXkKIyBDT05GSUdfRE5TX1JFU09MVkVSIGlzIG5vdCBzZXQKQ09ORklHX0JBVE1B
Tl9BRFY9eQojIENPTkZJR19CQVRNQU5fQURWX0JBVE1BTl9WIGlzIG5vdCBzZXQKQ09ORklH
X0JBVE1BTl9BRFZfTkM9eQpDT05GSUdfQkFUTUFOX0FEVl9ERUJVRz15CiMgQ09ORklHX1ZT
T0NLRVRTIGlzIG5vdCBzZXQKQ09ORklHX05FVExJTktfRElBRz15CiMgQ09ORklHX01QTFMg
aXMgbm90IHNldApDT05GSUdfTkVUX05TSD15CkNPTkZJR19IU1I9eQojIENPTkZJR19RUlRS
IGlzIG5vdCBzZXQKIyBDT05GSUdfUENQVV9ERVZfUkVGQ05UIGlzIG5vdCBzZXQKQ09ORklH
X01BWF9TS0JfRlJBR1M9MTcKQ09ORklHX1JQUz15CkNPTkZJR19SRlNfQUNDRUw9eQpDT05G
SUdfU09DS19SWF9RVUVVRV9NQVBQSU5HPXkKQ09ORklHX1hQUz15CkNPTkZJR19DR1JPVVBf
TkVUX1BSSU89eQojIENPTkZJR19DR1JPVVBfTkVUX0NMQVNTSUQgaXMgbm90IHNldApDT05G
SUdfTkVUX1JYX0JVU1lfUE9MTD15CkNPTkZJR19CUUw9eQpDT05GSUdfTkVUX0ZMT1dfTElN
SVQ9eQoKIwojIE5ldHdvcmsgdGVzdGluZwojCiMgZW5kIG9mIE5ldHdvcmsgdGVzdGluZwoj
IGVuZCBvZiBOZXR3b3JraW5nIG9wdGlvbnMKCiMgQ09ORklHX0hBTVJBRElPIGlzIG5vdCBz
ZXQKQ09ORklHX0NBTj15CiMgQ09ORklHX0NBTl9SQVcgaXMgbm90IHNldApDT05GSUdfQ0FO
X0JDTT15CkNPTkZJR19DQU5fR1c9eQpDT05GSUdfQ0FOX0oxOTM5PXkKQ09ORklHX0NBTl9J
U09UUD15CiMgQ09ORklHX0JUIGlzIG5vdCBzZXQKQ09ORklHX01DVFA9eQpDT05GSUdfTUNU
UF9URVNUPXkKQ09ORklHX01DVFBfRkxPV1M9eQojIENPTkZJR19XSVJFTEVTUyBpcyBub3Qg
c2V0CiMgQ09ORklHX1JGS0lMTCBpcyBub3Qgc2V0CkNPTkZJR19ORVRfOVA9eQojIENPTkZJ
R19ORVRfOVBfRkQgaXMgbm90IHNldApDT05GSUdfTkVUXzlQX1ZJUlRJTz15CkNPTkZJR19O
RVRfOVBfREVCVUc9eQpDT05GSUdfQ0FJRj15CkNPTkZJR19DQUlGX0RFQlVHPXkKQ09ORklH
X0NBSUZfTkVUREVWPXkKQ09ORklHX0NBSUZfVVNCPXkKIyBDT05GSUdfTkZDIGlzIG5vdCBz
ZXQKQ09ORklHX1BTQU1QTEU9eQpDT05GSUdfTkVUX0lGRT15CiMgQ09ORklHX0xXVFVOTkVM
IGlzIG5vdCBzZXQKQ09ORklHX0dST19DRUxMUz15CkNPTkZJR19ORVRfU09DS19NU0c9eQpD
T05GSUdfTkVUX0RFVkxJTks9eQpDT05GSUdfUEFHRV9QT09MPXkKQ09ORklHX1BBR0VfUE9P
TF9TVEFUUz15CkNPTkZJR19GQUlMT1ZFUj15CiMgQ09ORklHX0VUSFRPT0xfTkVUTElOSyBp
cyBub3Qgc2V0CkNPTkZJR19ORVRERVZfQUREUl9MSVNUX1RFU1Q9eQpDT05GSUdfTkVUX1RF
U1Q9eQoKIwojIERldmljZSBEcml2ZXJzCiMKQ09ORklHX0hBVkVfRUlTQT15CkNPTkZJR19F
SVNBPXkKIyBDT05GSUdfRUlTQV9WTEJfUFJJTUlORyBpcyBub3Qgc2V0CkNPTkZJR19FSVNB
X1ZJUlRVQUxfUk9PVD15CiMgQ09ORklHX0VJU0FfTkFNRVMgaXMgbm90IHNldApDT05GSUdf
SEFWRV9QQ0k9eQpDT05GSUdfR0VORVJJQ19QQ0lfSU9NQVA9eQojIENPTkZJR19QQ0kgaXMg
bm90IHNldAojIENPTkZJR19QQ0NBUkQgaXMgbm90IHNldAoKIwojIEdlbmVyaWMgRHJpdmVy
IE9wdGlvbnMKIwpDT05GSUdfQVVYSUxJQVJZX0JVUz15CiMgQ09ORklHX1VFVkVOVF9IRUxQ
RVIgaXMgbm90IHNldAojIENPTkZJR19ERVZUTVBGUyBpcyBub3Qgc2V0CkNPTkZJR19TVEFO
REFMT05FPXkKQ09ORklHX1BSRVZFTlRfRklSTVdBUkVfQlVJTEQ9eQoKIwojIEZpcm13YXJl
IGxvYWRlcgojCkNPTkZJR19GV19MT0FERVI9eQojIENPTkZJR19GV19MT0FERVJfREVCVUcg
aXMgbm90IHNldApDT05GSUdfRldfTE9BREVSX1BBR0VEX0JVRj15CkNPTkZJR19GV19MT0FE
RVJfU1lTRlM9eQpDT05GSUdfRVhUUkFfRklSTVdBUkU9IiIKQ09ORklHX0ZXX0xPQURFUl9V
U0VSX0hFTFBFUj15CkNPTkZJR19GV19MT0FERVJfVVNFUl9IRUxQRVJfRkFMTEJBQ0s9eQpD
T05GSUdfRldfTE9BREVSX0NPTVBSRVNTPXkKIyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNT
X1haIGlzIG5vdCBzZXQKIyBDT05GSUdfRldfTE9BREVSX0NPTVBSRVNTX1pTVEQgaXMgbm90
IHNldApDT05GSUdfRldfVVBMT0FEPXkKIyBlbmQgb2YgRmlybXdhcmUgbG9hZGVyCgpDT05G
SUdfQUxMT1dfREVWX0NPUkVEVU1QPXkKQ09ORklHX1BNX1FPU19LVU5JVF9URVNUPXkKQ09O
RklHX0RSSVZFUl9QRV9LVU5JVF9URVNUPXkKQ09ORklHX0dFTkVSSUNfQ1BVX0RFVklDRVM9
eQpDT05GSUdfR0VORVJJQ19DUFVfQVVUT1BST0JFPXkKQ09ORklHX0dFTkVSSUNfQ1BVX1ZV
TE5FUkFCSUxJVElFUz15CkNPTkZJR19TT0NfQlVTPXkKQ09ORklHX1JFR01BUD15CkNPTkZJ
R19SRUdNQVBfS1VOSVQ9eQpDT05GSUdfUkVHTUFQX0JVSUxEPXkKQ09ORklHX1JFR01BUF9J
MkM9eQpDT05GSUdfUkVHTUFQX1cxPXkKQ09ORklHX1JFR01BUF9NTUlPPXkKQ09ORklHX1JF
R01BUF9JUlE9eQpDT05GSUdfUkVHTUFQX1JBTT15CkNPTkZJR19SRUdNQVBfU09VTkRXSVJF
PXkKQ09ORklHX1JFR01BUF9JM0M9eQpDT05GSUdfRE1BX1NIQVJFRF9CVUZGRVI9eQojIENP
TkZJR19ETUFfRkVOQ0VfVFJBQ0UgaXMgbm90IHNldApDT05GSUdfRldfREVWTElOS19TWU5D
X1NUQVRFX1RJTUVPVVQ9eQojIGVuZCBvZiBHZW5lcmljIERyaXZlciBPcHRpb25zCgojCiMg
QnVzIGRldmljZXMKIwojIENPTkZJR19NSElfQlVTIGlzIG5vdCBzZXQKQ09ORklHX01ISV9C
VVNfRVA9eQojIGVuZCBvZiBCdXMgZGV2aWNlcwoKIwojIENhY2hlIERyaXZlcnMKIwojIGVu
ZCBvZiBDYWNoZSBEcml2ZXJzCgpDT05GSUdfQ09OTkVDVE9SPXkKIyBDT05GSUdfUFJPQ19F
VkVOVFMgaXMgbm90IHNldAoKIwojIEZpcm13YXJlIERyaXZlcnMKIwoKIwojIEFSTSBTeXN0
ZW0gQ29udHJvbCBhbmQgTWFuYWdlbWVudCBJbnRlcmZhY2UgUHJvdG9jb2wKIwojIGVuZCBv
ZiBBUk0gU3lzdGVtIENvbnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJmYWNlIFByb3RvY29s
CgojIENPTkZJR19FREQgaXMgbm90IHNldApDT05GSUdfRklSTVdBUkVfTUVNTUFQPXkKQ09O
RklHX0RNSUlEPXkKIyBDT05GSUdfRE1JX1NZU0ZTIGlzIG5vdCBzZXQKQ09ORklHX0RNSV9T
Q0FOX01BQ0hJTkVfTk9OX0VGSV9GQUxMQkFDSz15CkNPTkZJR19GV19DRkdfU1lTRlM9eQpD
T05GSUdfRldfQ0ZHX1NZU0ZTX0NNRExJTkU9eQojIENPTkZJR19TWVNGQl9TSU1QTEVGQiBp
cyBub3Qgc2V0CkNPTkZJR19HT09HTEVfRklSTVdBUkU9eQpDT05GSUdfR09PR0xFX1NNST15
CiMgQ09ORklHX0dPT0dMRV9DT1JFQk9PVF9UQUJMRSBpcyBub3Qgc2V0CkNPTkZJR19HT09H
TEVfTUVNQ09OU09MRT15CkNPTkZJR19HT09HTEVfTUVNQ09OU09MRV9YODZfTEVHQUNZPXkK
CiMKIyBFRkkgKEV4dGVuc2libGUgRmlybXdhcmUgSW50ZXJmYWNlKSBTdXBwb3J0CiMKQ09O
RklHX0VGSV9FU1JUPXkKIyBDT05GSUdfRUZJX1ZBUlNfUFNUT1JFIGlzIG5vdCBzZXQKQ09O
RklHX0VGSV9EWEVfTUVNX0FUVFJJQlVURVM9eQpDT05GSUdfRUZJX1JVTlRJTUVfV1JBUFBF
UlM9eQpDT05GSUdfRUZJX0JPT1RMT0FERVJfQ09OVFJPTD15CkNPTkZJR19FRklfQ0FQU1VM
RV9MT0FERVI9eQpDT05GSUdfRUZJX0NBUFNVTEVfUVVJUktfUVVBUktfQ1NIPXkKQ09ORklH
X0VGSV9URVNUPXkKQ09ORklHX0VGSV9ERVZfUEFUSF9QQVJTRVI9eQpDT05GSUdfQVBQTEVf
UFJPUEVSVElFUz15CkNPTkZJR19SRVNFVF9BVFRBQ0tfTUlUSUdBVElPTj15CiMgQ09ORklH
X0VGSV9SQ0kyX1RBQkxFIGlzIG5vdCBzZXQKQ09ORklHX0VGSV9ESVNBQkxFX1BDSV9ETUE9
eQpDT05GSUdfRUZJX0VBUkxZQ09OPXkKQ09ORklHX0VGSV9DVVNUT01fU1NEVF9PVkVSTEFZ
Uz15CkNPTkZJR19FRklfRElTQUJMRV9SVU5USU1FPXkKIyBDT05GSUdfRUZJX0NPQ09fU0VD
UkVUIGlzIG5vdCBzZXQKIyBlbmQgb2YgRUZJIChFeHRlbnNpYmxlIEZpcm13YXJlIEludGVy
ZmFjZSkgU3VwcG9ydAoKQ09ORklHX1VFRklfQ1BFUj15CkNPTkZJR19VRUZJX0NQRVJfWDg2
PXkKCiMKIyBRdWFsY29tbSBmaXJtd2FyZSBkcml2ZXJzCiMKIyBDT05GSUdfUUNPTV9UWk1F
TV9NT0RFX0dFTkVSSUMgaXMgbm90IHNldApDT05GSUdfUUNPTV9UWk1FTV9NT0RFX1NITUJS
SURHRT15CiMgZW5kIG9mIFF1YWxjb21tIGZpcm13YXJlIGRyaXZlcnMKCiMKIyBUZWdyYSBm
aXJtd2FyZSBkcml2ZXIKIwojIGVuZCBvZiBUZWdyYSBmaXJtd2FyZSBkcml2ZXIKIyBlbmQg
b2YgRmlybXdhcmUgRHJpdmVycwoKQ09ORklHX0dOU1M9eQpDT05GSUdfTVREPXkKCiMKIyBQ
YXJ0aXRpb24gcGFyc2VycwojCkNPTkZJR19NVERfQ01ETElORV9QQVJUUz15CkNPTkZJR19N
VERfT0ZfUEFSVFM9eQojIENPTkZJR19NVERfUkVEQk9PVF9QQVJUUyBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFBhcnRpdGlvbiBwYXJzZXJzCgojCiMgVXNlciBNb2R1bGVzIEFuZCBUcmFuc2xh
dGlvbiBMYXllcnMKIwpDT05GSUdfTVREX0JMS0RFVlM9eQojIENPTkZJR19NVERfQkxPQ0sg
aXMgbm90IHNldAojIENPTkZJR19NVERfQkxPQ0tfUk8gaXMgbm90IHNldAojIENPTkZJR19G
VEwgaXMgbm90IHNldApDT05GSUdfTkZUTD15CkNPTkZJR19ORlRMX1JXPXkKIyBDT05GSUdf
SU5GVEwgaXMgbm90IHNldAojIENPTkZJR19SRkRfRlRMIGlzIG5vdCBzZXQKQ09ORklHX1NT
RkRDPXkKIyBDT05GSUdfU01fRlRMIGlzIG5vdCBzZXQKQ09ORklHX01URF9PT1BTPXkKQ09O
RklHX01URF9TV0FQPXkKQ09ORklHX01URF9QQVJUSVRJT05FRF9NQVNURVI9eQoKIwojIFJB
TS9ST00vRmxhc2ggY2hpcCBkcml2ZXJzCiMKQ09ORklHX01URF9DRkk9eQpDT05GSUdfTVRE
X0pFREVDUFJPQkU9eQpDT05GSUdfTVREX0dFTl9QUk9CRT15CiMgQ09ORklHX01URF9DRklf
QURWX09QVElPTlMgaXMgbm90IHNldApDT05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzE9eQpD
T05GSUdfTVREX01BUF9CQU5LX1dJRFRIXzI9eQpDT05GSUdfTVREX01BUF9CQU5LX1dJRFRI
XzQ9eQpDT05GSUdfTVREX0NGSV9JMT15CkNPTkZJR19NVERfQ0ZJX0kyPXkKIyBDT05GSUdf
TVREX0NGSV9JTlRFTEVYVCBpcyBub3Qgc2V0CkNPTkZJR19NVERfQ0ZJX0FNRFNURD15CkNP
TkZJR19NVERfQ0ZJX1NUQUE9eQpDT05GSUdfTVREX0NGSV9VVElMPXkKQ09ORklHX01URF9S
QU09eQpDT05GSUdfTVREX1JPTT15CiMgQ09ORklHX01URF9BQlNFTlQgaXMgbm90IHNldAoj
IGVuZCBvZiBSQU0vUk9NL0ZsYXNoIGNoaXAgZHJpdmVycwoKIwojIE1hcHBpbmcgZHJpdmVy
cyBmb3IgY2hpcCBhY2Nlc3MKIwpDT05GSUdfTVREX0NPTVBMRVhfTUFQUElOR1M9eQpDT05G
SUdfTVREX1BIWVNNQVA9eQojIENPTkZJR19NVERfUEhZU01BUF9DT01QQVQgaXMgbm90IHNl
dApDT05GSUdfTVREX1BIWVNNQVBfT0Y9eQojIENPTkZJR19NVERfUEhZU01BUF9WRVJTQVRJ
TEUgaXMgbm90IHNldApDT05GSUdfTVREX1BIWVNNQVBfR0VNSU5JPXkKIyBDT05GSUdfTVRE
X1BIWVNNQVBfR1BJT19BRERSIGlzIG5vdCBzZXQKIyBDT05GSUdfTVREX1NDeDIwMF9ET0NG
TEFTSCBpcyBub3Qgc2V0CiMgQ09ORklHX01URF9BTUQ3NlhST00gaXMgbm90IHNldApDT05G
SUdfTVREX0lDSFhST009eQpDT05GSUdfTVREX05FVHRlbD15CkNPTkZJR19NVERfTDQ0MEdY
PXkKIyBDT05GSUdfTVREX1BMQVRSQU0gaXMgbm90IHNldAojIGVuZCBvZiBNYXBwaW5nIGRy
aXZlcnMgZm9yIGNoaXAgYWNjZXNzCgojCiMgU2VsZi1jb250YWluZWQgTVREIGRldmljZSBk
cml2ZXJzCiMKQ09ORklHX01URF9TTFJBTT15CkNPTkZJR19NVERfUEhSQU09eQpDT05GSUdf
TVREX01URFJBTT15CkNPTkZJR19NVERSQU1fVE9UQUxfU0laRT00MDk2CkNPTkZJR19NVERS
QU1fRVJBU0VfU0laRT0xMjgKQ09ORklHX01URF9CTE9DSzJNVEQ9eQoKIwojIERpc2stT24t
Q2hpcCBEZXZpY2UgRHJpdmVycwojCkNPTkZJR19NVERfRE9DRzM9eQpDT05GSUdfQkNIX0NP
TlNUX009MTQKQ09ORklHX0JDSF9DT05TVF9UPTQKIyBlbmQgb2YgU2VsZi1jb250YWluZWQg
TVREIGRldmljZSBkcml2ZXJzCgojCiMgTkFORAojCkNPTkZJR19NVERfTkFORF9DT1JFPXkK
Q09ORklHX01URF9PTkVOQU5EPXkKIyBDT05GSUdfTVREX09ORU5BTkRfVkVSSUZZX1dSSVRF
IGlzIG5vdCBzZXQKQ09ORklHX01URF9PTkVOQU5EX0dFTkVSSUM9eQpDT05GSUdfTVREX09O
RU5BTkRfT1RQPXkKQ09ORklHX01URF9PTkVOQU5EXzJYX1BST0dSQU09eQojIENPTkZJR19N
VERfUkFXX05BTkQgaXMgbm90IHNldAoKIwojIEVDQyBlbmdpbmUgc3VwcG9ydAojCkNPTkZJ
R19NVERfTkFORF9FQ0M9eQpDT05GSUdfTVREX05BTkRfRUNDX1NXX0hBTU1JTkc9eQojIENP
TkZJR19NVERfTkFORF9FQ0NfU1dfSEFNTUlOR19TTUMgaXMgbm90IHNldAojIENPTkZJR19N
VERfTkFORF9FQ0NfU1dfQkNIIGlzIG5vdCBzZXQKQ09ORklHX01URF9OQU5EX0VDQ19NWElD
PXkKIyBlbmQgb2YgRUNDIGVuZ2luZSBzdXBwb3J0CiMgZW5kIG9mIE5BTkQKCiMKIyBMUERE
UiAmIExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKIwojIENPTkZJR19NVERfTFBERFIgaXMg
bm90IHNldAojIGVuZCBvZiBMUEREUiAmIExQRERSMiBQQ00gbWVtb3J5IGRyaXZlcnMKCiMg
Q09ORklHX01URF9VQkkgaXMgbm90IHNldApDT05GSUdfTVREX0hZUEVSQlVTPXkKQ09ORklH
X0RUQz15CkNPTkZJR19PRj15CiMgQ09ORklHX09GX1VOSVRURVNUIGlzIG5vdCBzZXQKQ09O
RklHX09GX0tVTklUX1RFU1Q9eQpDT05GSUdfT0ZfRkxBVFRSRUU9eQpDT05GSUdfT0ZfRUFS
TFlfRkxBVFRSRUU9eQpDT05GSUdfT0ZfUFJPTVRSRUU9eQpDT05GSUdfT0ZfS09CSj15CkNP
TkZJR19PRl9BRERSRVNTPXkKQ09ORklHX09GX0lSUT15CkNPTkZJR19PRl9SRVNFUlZFRF9N
RU09eQojIENPTkZJR19PRl9PVkVSTEFZIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfTUlHSFRf
SEFWRV9QQ19QQVJQT1JUPXkKQ09ORklHX1BBUlBPUlQ9eQojIENPTkZJR19QQVJQT1JUX1BD
IGlzIG5vdCBzZXQKQ09ORklHX1BBUlBPUlRfMTI4ND15CkNPTkZJR19QTlA9eQpDT05GSUdf
UE5QX0RFQlVHX01FU1NBR0VTPXkKCiMKIyBQcm90b2NvbHMKIwpDT05GSUdfSVNBUE5QPXkK
Q09ORklHX1BOUEJJT1M9eQpDT05GSUdfUE5QQklPU19QUk9DX0ZTPXkKQ09ORklHX1BOUEFD
UEk9eQojIENPTkZJR19CTEtfREVWIGlzIG5vdCBzZXQKCiMKIyBOVk1FIFN1cHBvcnQKIwpD
T05GSUdfTlZNRV9BVVRIPXkKQ09ORklHX05WTUVfQ09SRT15CkNPTkZJR19OVk1FX01VTFRJ
UEFUSD15CiMgQ09ORklHX05WTUVfVkVSQk9TRV9FUlJPUlMgaXMgbm90IHNldApDT05GSUdf
TlZNRV9IV01PTj15CkNPTkZJR19OVk1FX0ZBQlJJQ1M9eQpDT05GSUdfTlZNRV9GQz15CkNP
TkZJR19OVk1FX0hPU1RfQVVUSD15CkNPTkZJR19OVk1FX1RBUkdFVD15CiMgQ09ORklHX05W
TUVfVEFSR0VUX1BBU1NUSFJVIGlzIG5vdCBzZXQKQ09ORklHX05WTUVfVEFSR0VUX0xPT1A9
eQpDT05GSUdfTlZNRV9UQVJHRVRfRkM9eQpDT05GSUdfTlZNRV9UQVJHRVRfRkNMT09QPXkK
Q09ORklHX05WTUVfVEFSR0VUX0FVVEg9eQojIGVuZCBvZiBOVk1FIFN1cHBvcnQKCiMKIyBN
aXNjIGRldmljZXMKIwpDT05GSUdfU0VOU09SU19MSVMzTFYwMkQ9eQpDT05GSUdfQUQ1MjVY
X0RQT1Q9eQojIENPTkZJR19BRDUyNVhfRFBPVF9JMkMgaXMgbm90IHNldApDT05GSUdfRFVN
TVlfSVJRPXkKIyBDT05GSUdfSUNTOTMyUzQwMSBpcyBub3Qgc2V0CiMgQ09ORklHX0VOQ0xP
U1VSRV9TRVJWSUNFUyBpcyBub3Qgc2V0CkNPTkZJR19BUERTOTgwMkFMUz15CkNPTkZJR19J
U0wyOTAwMz15CkNPTkZJR19JU0wyOTAyMD15CkNPTkZJR19TRU5TT1JTX1RTTDI1NTA9eQoj
IENPTkZJR19TRU5TT1JTX0JIMTc3MCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FQRFM5
OTBYPXkKIyBDT05GSUdfSE1DNjM1MiBpcyBub3Qgc2V0CkNPTkZJR19EUzE2ODI9eQojIENP
TkZJR19TUkFNIGlzIG5vdCBzZXQKQ09ORklHX1hJTElOWF9TREZFQz15CiMgQ09ORklHX09Q
RU5fRElDRSBpcyBub3Qgc2V0CkNPTkZJR19WQ1BVX1NUQUxMX0RFVEVDVE9SPXkKQ09ORklH
X1RQUzY1OTRfRVNNPXkKQ09ORklHX1RQUzY1OTRfUEZTTT15CkNPTkZJR19OU009eQpDT05G
SUdfQzJQT1JUPXkKQ09ORklHX0MyUE9SVF9EVVJBTUFSXzIxNTA9eQoKIwojIEVFUFJPTSBz
dXBwb3J0CiMKIyBDT05GSUdfRUVQUk9NX0FUMjQgaXMgbm90IHNldAojIENPTkZJR19FRVBS
T01fTUFYNjg3NSBpcyBub3Qgc2V0CkNPTkZJR19FRVBST01fOTNDWDY9eQpDT05GSUdfRUVQ
Uk9NX0lEVF84OUhQRVNYPXkKQ09ORklHX0VFUFJPTV9FRTEwMDQ9eQojIGVuZCBvZiBFRVBS
T00gc3VwcG9ydAoKIwojIFRleGFzIEluc3RydW1lbnRzIHNoYXJlZCB0cmFuc3BvcnQgbGlu
ZSBkaXNjaXBsaW5lCiMKQ09ORklHX1RJX1NUPXkKIyBlbmQgb2YgVGV4YXMgSW5zdHJ1bWVu
dHMgc2hhcmVkIHRyYW5zcG9ydCBsaW5lIGRpc2NpcGxpbmUKCkNPTkZJR19TRU5TT1JTX0xJ
UzNfSTJDPXkKIyBDT05GSUdfQUxURVJBX1NUQVBMIGlzIG5vdCBzZXQKQ09ORklHX0VDSE89
eQojIENPTkZJR19VQUNDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1BWUEFOSUMgaXMgbm90IHNl
dAojIGVuZCBvZiBNaXNjIGRldmljZXMKCiMKIyBTQ1NJIGRldmljZSBzdXBwb3J0CiMKQ09O
RklHX1NDU0lfTU9EPXkKIyBDT05GSUdfUkFJRF9BVFRSUyBpcyBub3Qgc2V0CkNPTkZJR19T
Q1NJX0NPTU1PTj15CkNPTkZJR19TQ1NJPXkKQ09ORklHX1NDU0lfRE1BPXkKQ09ORklHX1ND
U0lfTkVUTElOSz15CkNPTkZJR19TQ1NJX1BST0NfRlM9eQpDT05GSUdfU0NTSV9MSUJfS1VO
SVRfVEVTVD15CgojCiMgU0NTSSBzdXBwb3J0IHR5cGUgKGRpc2ssIHRhcGUsIENELVJPTSkK
IwojIENPTkZJR19CTEtfREVWX1NEIGlzIG5vdCBzZXQKQ09ORklHX0NIUl9ERVZfU1Q9eQpD
T05GSUdfQ0hSX0RFVl9TRz15CiMgQ09ORklHX0JMS19ERVZfQlNHIGlzIG5vdCBzZXQKIyBD
T05GSUdfQ0hSX0RFVl9TQ0ggaXMgbm90IHNldAojIENPTkZJR19TQ1NJX0NPTlNUQU5UUyBp
cyBub3Qgc2V0CkNPTkZJR19TQ1NJX0xPR0dJTkc9eQojIENPTkZJR19TQ1NJX1NDQU5fQVNZ
TkMgaXMgbm90IHNldApDT05GSUdfU0NTSV9QUk9UT19URVNUPXkKCiMKIyBTQ1NJIFRyYW5z
cG9ydHMKIwojIENPTkZJR19TQ1NJX1NQSV9BVFRSUyBpcyBub3Qgc2V0CkNPTkZJR19TQ1NJ
X0ZDX0FUVFJTPXkKQ09ORklHX1NDU0lfSVNDU0lfQVRUUlM9eQpDT05GSUdfU0NTSV9TQVNf
QVRUUlM9eQpDT05GSUdfU0NTSV9TQVNfTElCU0FTPXkKQ09ORklHX1NDU0lfU0FTX0FUQT15
CkNPTkZJR19TQ1NJX1NBU19IT1NUX1NNUD15CkNPTkZJR19TQ1NJX1NSUF9BVFRSUz15CiMg
ZW5kIG9mIFNDU0kgVHJhbnNwb3J0cwoKIyBDT05GSUdfU0NTSV9MT1dMRVZFTCBpcyBub3Qg
c2V0CiMgQ09ORklHX1NDU0lfREggaXMgbm90IHNldAojIGVuZCBvZiBTQ1NJIGRldmljZSBz
dXBwb3J0CgpDT05GSUdfQVRBPXkKQ09ORklHX1NBVEFfSE9TVD15CkNPTkZJR19QQVRBX1RJ
TUlOR1M9eQpDT05GSUdfQVRBX1ZFUkJPU0VfRVJST1I9eQpDT05GSUdfQVRBX0ZPUkNFPXkK
Q09ORklHX0FUQV9BQ1BJPXkKQ09ORklHX1NBVEFfUE1QPXkKCiMKIyBDb250cm9sbGVycyB3
aXRoIG5vbi1TRkYgbmF0aXZlIGludGVyZmFjZQojCiMgQ09ORklHX1NBVEFfQUhDSV9QTEFU
Rk9STSBpcyBub3Qgc2V0CkNPTkZJR19BSENJX0RXQz15CkNPTkZJR19BSENJX0NFVkE9eQoj
IENPTkZJR19BVEFfU0ZGIGlzIG5vdCBzZXQKQ09ORklHX01EPXkKQ09ORklHX0JMS19ERVZf
TUQ9eQpDT05GSUdfTURfQVVUT0RFVEVDVD15CkNPTkZJR19NRF9CSVRNQVBfRklMRT15CkNP
TkZJR19NRF9SQUlEMD15CkNPTkZJR19NRF9SQUlEMT15CkNPTkZJR19NRF9SQUlEMTA9eQpD
T05GSUdfTURfUkFJRDQ1Nj15CiMgQ09ORklHX0JDQUNIRSBpcyBub3Qgc2V0CiMgQ09ORklH
X0JMS19ERVZfRE0gaXMgbm90IHNldApDT05GSUdfVEFSR0VUX0NPUkU9eQpDT05GSUdfVENN
X0lCTE9DSz15CkNPTkZJR19UQ01fRklMRUlPPXkKIyBDT05GSUdfVENNX1BTQ1NJIGlzIG5v
dCBzZXQKIyBDT05GSUdfVENNX1VTRVIyIGlzIG5vdCBzZXQKQ09ORklHX0xPT1BCQUNLX1RB
UkdFVD15CiMgQ09ORklHX1JFTU9URV9UQVJHRVQgaXMgbm90IHNldApDT05GSUdfTUFDSU5U
T1NIX0RSSVZFUlM9eQojIENPTkZJR19NQUNfRU1VTU9VU0VCVE4gaXMgbm90IHNldApDT05G
SUdfTkVUREVWSUNFUz15CkNPTkZJR19NSUk9eQojIENPTkZJR19ORVRfQ09SRSBpcyBub3Qg
c2V0CiMgQ09ORklHX0FSQ05FVCBpcyBub3Qgc2V0CiMgQ09ORklHX0FUTV9EUklWRVJTIGlz
IG5vdCBzZXQKIyBDT05GSUdfQ0FJRl9EUklWRVJTIGlzIG5vdCBzZXQKQ09ORklHX0VUSEVS
TkVUPXkKIyBDT05GSUdfTkVUX1ZFTkRPUl8zQ09NIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVU
X1ZFTkRPUl9BTEFDUklURUNIIGlzIG5vdCBzZXQKQ09ORklHX0FMVEVSQV9UU0U9eQojIENP
TkZJR19ORVRfVkVORE9SX0FNQVpPTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1Jf
QU1EIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9BUVVBTlRJQSBpcyBub3Qgc2V0
CkNPTkZJR19ORVRfVkVORE9SX0FSQz15CiMgQ09ORklHX05FVF9WRU5ET1JfQVNJWCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfQlJPQURDT00gaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX0NBREVOQ0UgaXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9DQVZJ
VU09eQojIENPTkZJR19ORVRfVkVORE9SX0NJUlJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX05F
VF9WRU5ET1JfQ09SVElOQSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfREFWSUNP
TSBpcyBub3Qgc2V0CkNPTkZJR19ETkVUPXkKIyBDT05GSUdfTkVUX1ZFTkRPUl9ERUMgaXMg
bm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9FTkdMRURFUj15CkNPTkZJR19UU05FUD15CkNP
TkZJR19UU05FUF9TRUxGVEVTVFM9eQojIENPTkZJR19ORVRfVkVORE9SX0VaQ0hJUCBpcyBu
b3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfRlVOR0lCTEUgaXMgbm90IHNldAojIENPTkZJ
R19ORVRfVkVORE9SX0dPT0dMRSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfSFVB
V0VJIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9JTlRFTCBpcyBub3Qgc2V0CiMg
Q09ORklHX05FVF9WRU5ET1JfTElURVggaXMgbm90IHNldApDT05GSUdfTkVUX1ZFTkRPUl9N
RUxMQU5PWD15CkNPTkZJR19NTFhTV19DT1JFPXkKQ09ORklHX01MWFNXX0NPUkVfSFdNT049
eQpDT05GSUdfTUxYU1dfQ09SRV9USEVSTUFMPXkKIyBDT05GSUdfTUxYU1dfSTJDIGlzIG5v
dCBzZXQKQ09ORklHX01MWEZXPXkKQ09ORklHX05FVF9WRU5ET1JfTUlDUkVMPXkKQ09ORklH
X0tTODg1MV9NTEw9eQpDT05GSUdfTkVUX1ZFTkRPUl9NSUNST0NISVA9eQojIENPTkZJR19W
Q0FQIGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9NSUNST1NFTUkgaXMgbm90IHNl
dApDT05GSUdfTkVUX1ZFTkRPUl9NSUNST1NPRlQ9eQojIENPTkZJR19ORVRfVkVORE9SX05J
IGlzIG5vdCBzZXQKIyBDT05GSUdfTkVUX1ZFTkRPUl9OQVRTRU1JIGlzIG5vdCBzZXQKIyBD
T05GSUdfTkVUX1ZFTkRPUl9ORVRST05PTUUgaXMgbm90IHNldAojIENPTkZJR19FVEhPQyBp
cyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX1BFTlNBTkRPPXkKQ09ORklHX05FVF9WRU5E
T1JfUVVBTENPTU09eQojIENPTkZJR19RQ09NX0VNQUMgaXMgbm90IHNldApDT05GSUdfUk1O
RVQ9eQojIENPTkZJR19ORVRfVkVORE9SX1JFQUxURUsgaXMgbm90IHNldApDT05GSUdfTkVU
X1ZFTkRPUl9SRU5FU0FTPXkKQ09ORklHX05FVF9WRU5ET1JfUk9DS0VSPXkKQ09ORklHX05F
VF9WRU5ET1JfU0FNU1VORz15CkNPTkZJR19TWEdCRV9FVEg9eQojIENPTkZJR19ORVRfVkVO
RE9SX1NFRVEgaXMgbm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NPTEFSRkxBUkUgaXMg
bm90IHNldAojIENPTkZJR19ORVRfVkVORE9SX1NNU0MgaXMgbm90IHNldAojIENPTkZJR19O
RVRfVkVORE9SX1NPQ0lPTkVYVCBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5ET1JfU1RN
SUNSTyBpcyBub3Qgc2V0CkNPTkZJR19ORVRfVkVORE9SX1NZTk9QU1lTPXkKQ09ORklHX0RX
Q19YTEdNQUM9eQpDT05GSUdfTkVUX1ZFTkRPUl9UST15CkNPTkZJR19USV9DUFNXX1BIWV9T
RUw9eQpDT05GSUdfVExBTj15CiMgQ09ORklHX05FVF9WRU5ET1JfVkVSVEVYQ09NIGlzIG5v
dCBzZXQKQ09ORklHX05FVF9WRU5ET1JfVklBPXkKQ09ORklHX1ZJQV9WRUxPQ0lUWT15CiMg
Q09ORklHX05FVF9WRU5ET1JfV0FOR1hVTiBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9WRU5E
T1JfV0laTkVUIGlzIG5vdCBzZXQKQ09ORklHX05FVF9WRU5ET1JfWElMSU5YPXkKIyBDT05G
SUdfWElMSU5YX0VNQUNMSVRFIGlzIG5vdCBzZXQKIyBDT05GSUdfWElMSU5YX0xMX1RFTUFD
IGlzIG5vdCBzZXQKIyBDT05GSUdfRkRESSBpcyBub3Qgc2V0CiMgQ09ORklHX05FVF9TQjEw
MDAgaXMgbm90IHNldApDT05GSUdfUEhZTElOSz15CkNPTkZJR19QSFlMSUI9eQpDT05GSUdf
U1dQSFk9eQpDT05GSUdfTEVEX1RSSUdHRVJfUEhZPXkKQ09ORklHX1BIWUxJQl9MRURTPXkK
Q09ORklHX0ZJWEVEX1BIWT15CiMgQ09ORklHX1NGUCBpcyBub3Qgc2V0CgojCiMgTUlJIFBI
WSBkZXZpY2UgZHJpdmVycwojCiMgQ09ORklHX0FJUl9FTjg4MTFIX1BIWSBpcyBub3Qgc2V0
CkNPTkZJR19BTURfUEhZPXkKQ09ORklHX0FESU5fUEhZPXkKQ09ORklHX0FESU4xMTAwX1BI
WT15CiMgQ09ORklHX0FRVUFOVElBX1BIWSBpcyBub3Qgc2V0CkNPTkZJR19BWDg4Nzk2Ql9Q
SFk9eQojIENPTkZJR19CUk9BRENPTV9QSFkgaXMgbm90IHNldApDT05GSUdfQkNNNTQxNDBf
UEhZPXkKQ09ORklHX0JDTTdYWFhfUEhZPXkKQ09ORklHX0JDTTg0ODgxX1BIWT15CkNPTkZJ
R19CQ004N1hYX1BIWT15CkNPTkZJR19CQ01fTkVUX1BIWUxJQj15CkNPTkZJR19DSUNBREFf
UEhZPXkKQ09ORklHX0NPUlRJTkFfUEhZPXkKIyBDT05GSUdfREFWSUNPTV9QSFkgaXMgbm90
IHNldApDT05GSUdfSUNQTFVTX1BIWT15CkNPTkZJR19MWFRfUEhZPXkKIyBDT05GSUdfSU5U
RUxfWFdBWV9QSFkgaXMgbm90IHNldAojIENPTkZJR19MU0lfRVQxMDExQ19QSFkgaXMgbm90
IHNldApDT05GSUdfTUFSVkVMTF9QSFk9eQpDT05GSUdfTUFSVkVMTF8xMEdfUEhZPXkKQ09O
RklHX01BUlZFTExfODhRMlhYWF9QSFk9eQojIENPTkZJR19NQVJWRUxMXzg4WDIyMjJfUEhZ
IGlzIG5vdCBzZXQKQ09ORklHX01BWExJTkVBUl9HUEhZPXkKIyBDT05GSUdfTUVESUFURUtf
R0VfUEhZIGlzIG5vdCBzZXQKQ09ORklHX01JQ1JFTF9QSFk9eQojIENPTkZJR19NSUNST0NI
SVBfVDFTX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX01JQ1JPQ0hJUF9QSFkgaXMgbm90IHNl
dApDT05GSUdfTUlDUk9DSElQX1QxX1BIWT15CkNPTkZJR19NSUNST1NFTUlfUEhZPXkKQ09O
RklHX01PVE9SQ09NTV9QSFk9eQojIENPTkZJR19OQVRJT05BTF9QSFkgaXMgbm90IHNldApD
T05GSUdfTlhQX0NCVFhfUEhZPXkKQ09ORklHX05YUF9DNDVfVEpBMTFYWF9QSFk9eQpDT05G
SUdfTlhQX1RKQTExWFhfUEhZPXkKIyBDT05GSUdfTkNOMjYwMDBfUEhZIGlzIG5vdCBzZXQK
Q09ORklHX1FDT01fTkVUX1BIWUxJQj15CiMgQ09ORklHX0FUODAzWF9QSFkgaXMgbm90IHNl
dAojIENPTkZJR19RQ0E4M1hYX1BIWSBpcyBub3Qgc2V0CiMgQ09ORklHX1FDQTgwOFhfUEhZ
IGlzIG5vdCBzZXQKQ09ORklHX1FDQTgwN1hfUEhZPXkKIyBDT05GSUdfUVNFTUlfUEhZIGlz
IG5vdCBzZXQKIyBDT05GSUdfUkVBTFRFS19QSFkgaXMgbm90IHNldApDT05GSUdfUkVORVNB
U19QSFk9eQojIENPTkZJR19ST0NLQ0hJUF9QSFkgaXMgbm90IHNldApDT05GSUdfU01TQ19Q
SFk9eQpDT05GSUdfU1RFMTBYUD15CkNPTkZJR19URVJBTkVUSUNTX1BIWT15CiMgQ09ORklH
X0RQODM4MjJfUEhZIGlzIG5vdCBzZXQKQ09ORklHX0RQODNUQzgxMV9QSFk9eQpDT05GSUdf
RFA4Mzg0OF9QSFk9eQpDT05GSUdfRFA4Mzg2N19QSFk9eQpDT05GSUdfRFA4Mzg2OV9QSFk9
eQpDT05GSUdfRFA4M1RENTEwX1BIWT15CkNPTkZJR19EUDgzVEc3MjBfUEhZPXkKQ09ORklH
X1ZJVEVTU0VfUEhZPXkKQ09ORklHX1hJTElOWF9HTUlJMlJHTUlJPXkKQ09ORklHX1BTRV9D
T05UUk9MTEVSPXkKIyBDT05GSUdfUFNFX1JFR1VMQVRPUiBpcyBub3Qgc2V0CkNPTkZJR19Q
U0VfUEQ2OTJYMD15CiMgQ09ORklHX1BTRV9UUFMyMzg4MSBpcyBub3Qgc2V0CiMgQ09ORklH
X0NBTl9ERVYgaXMgbm90IHNldAoKIwojIE1DVFAgRGV2aWNlIERyaXZlcnMKIwpDT05GSUdf
TUNUUF9TRVJJQUw9eQpDT05GSUdfTUNUUF9UUkFOU1BPUlRfSTJDPXkKQ09ORklHX01DVFBf
VFJBTlNQT1JUX0kzQz15CiMgZW5kIG9mIE1DVFAgRGV2aWNlIERyaXZlcnMKCkNPTkZJR19N
RElPX0RFVklDRT15CkNPTkZJR19NRElPX0JVUz15CkNPTkZJR19GV05PREVfTURJTz15CkNP
TkZJR19PRl9NRElPPXkKQ09ORklHX0FDUElfTURJTz15CkNPTkZJR19NRElPX0RFVlJFUz15
CiMgQ09ORklHX01ESU9fQklUQkFORyBpcyBub3Qgc2V0CkNPTkZJR19NRElPX0JDTV9VTklN
QUM9eQpDT05GSUdfTURJT19ISVNJX0ZFTUFDPXkKQ09ORklHX01ESU9fTVNDQ19NSUlNPXkK
Q09ORklHX01ESU9fSVBRNDAxOT15CkNPTkZJR19NRElPX0lQUTgwNjQ9eQpDT05GSUdfTURJ
T19SRUdNQVA9eQoKIwojIE1ESU8gTXVsdGlwbGV4ZXJzCiMKQ09ORklHX01ESU9fQlVTX01V
WD15CiMgQ09ORklHX01ESU9fQlVTX01VWF9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTURJ
T19CVVNfTVVYX01VTFRJUExFWEVSIGlzIG5vdCBzZXQKQ09ORklHX01ESU9fQlVTX01VWF9N
TUlPUkVHPXkKCiMKIyBQQ1MgZGV2aWNlIGRyaXZlcnMKIwpDT05GSUdfUENTX0xZTlg9eQoj
IGVuZCBvZiBQQ1MgZGV2aWNlIGRyaXZlcnMKCkNPTkZJR19QTElQPXkKIyBDT05GSUdfUFBQ
IGlzIG5vdCBzZXQKQ09ORklHX1NMSVA9eQojIENPTkZJR19TTElQX0NPTVBSRVNTRUQgaXMg
bm90IHNldApDT05GSUdfU0xJUF9TTUFSVD15CiMgQ09ORklHX1NMSVBfTU9ERV9TTElQNiBp
cyBub3Qgc2V0CgojCiMgSG9zdC1zaWRlIFVTQiBzdXBwb3J0IGlzIG5lZWRlZCBmb3IgVVNC
IE5ldHdvcmsgQWRhcHRlciBzdXBwb3J0CiMKIyBDT05GSUdfV0xBTiBpcyBub3Qgc2V0CiMg
Q09ORklHX1dBTiBpcyBub3Qgc2V0CgojCiMgV2lyZWxlc3MgV0FOCiMKQ09ORklHX1dXQU49
eQpDT05GSUdfV1dBTl9IV1NJTT15CkNPTkZJR19SUE1TR19XV0FOX0NUUkw9eQojIGVuZCBv
ZiBXaXJlbGVzcyBXQU4KCkNPTkZJR19GVUpJVFNVX0VTPXkKQ09ORklHX05FVF9GQUlMT1ZF
Uj15CiMgQ09ORklHX0lTRE4gaXMgbm90IHNldAoKIwojIElucHV0IGRldmljZSBzdXBwb3J0
CiMKQ09ORklHX0lOUFVUPXkKQ09ORklHX0lOUFVUX0xFRFM9eQpDT05GSUdfSU5QVVRfRkZf
TUVNTEVTUz15CkNPTkZJR19JTlBVVF9TUEFSU0VLTUFQPXkKIyBDT05GSUdfSU5QVVRfTUFU
UklYS01BUCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9WSVZBTERJRk1BUD15CgojCiMgVXNl
cmxhbmQgaW50ZXJmYWNlcwojCkNPTkZJR19JTlBVVF9NT1VTRURFVj15CkNPTkZJR19JTlBV
VF9NT1VTRURFVl9QU0FVWD15CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWD0xMDI0
CkNPTkZJR19JTlBVVF9NT1VTRURFVl9TQ1JFRU5fWT03NjgKQ09ORklHX0lOUFVUX0pPWURF
Vj15CkNPTkZJR19JTlBVVF9FVkRFVj15CiMgQ09ORklHX0lOUFVUX0VWQlVHIGlzIG5vdCBz
ZXQKQ09ORklHX0lOUFVUX0tVTklUX1RFU1Q9eQoKIwojIElucHV0IERldmljZSBEcml2ZXJz
CiMKIyBDT05GSUdfSU5QVVRfS0VZQk9BUkQgaXMgbm90IHNldApDT05GSUdfSU5QVVRfTU9V
U0U9eQojIENPTkZJR19NT1VTRV9QUzIgaXMgbm90IHNldAojIENPTkZJR19NT1VTRV9TRVJJ
QUwgaXMgbm90IHNldApDT05GSUdfTU9VU0VfQ1lBUEE9eQpDT05GSUdfTU9VU0VfRUxBTl9J
MkM9eQojIENPTkZJR19NT1VTRV9FTEFOX0kyQ19JMkMgaXMgbm90IHNldAojIENPTkZJR19N
T1VTRV9FTEFOX0kyQ19TTUJVUyBpcyBub3Qgc2V0CiMgQ09ORklHX01PVVNFX0lOUE9SVCBp
cyBub3Qgc2V0CiMgQ09ORklHX01PVVNFX0xPR0lCTSBpcyBub3Qgc2V0CkNPTkZJR19NT1VT
RV9QQzExMFBBRD15CkNPTkZJR19NT1VTRV9WU1hYWEFBPXkKQ09ORklHX01PVVNFX0dQSU89
eQpDT05GSUdfTU9VU0VfU1lOQVBUSUNTX0kyQz15CkNPTkZJR19JTlBVVF9KT1lTVElDSz15
CiMgQ09ORklHX0pPWVNUSUNLX0FOQUxPRyBpcyBub3Qgc2V0CkNPTkZJR19KT1lTVElDS19B
M0Q9eQpDT05GSUdfSk9ZU1RJQ0tfQURDPXkKIyBDT05GSUdfSk9ZU1RJQ0tfQURJIGlzIG5v
dCBzZXQKQ09ORklHX0pPWVNUSUNLX0NPQlJBPXkKIyBDT05GSUdfSk9ZU1RJQ0tfR0YySyBp
cyBub3Qgc2V0CiMgQ09ORklHX0pPWVNUSUNLX0dSSVAgaXMgbm90IHNldAojIENPTkZJR19K
T1lTVElDS19HUklQX01QIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNLX0dVSUxMRU1PVD15
CkNPTkZJR19KT1lTVElDS19JTlRFUkFDVD15CkNPTkZJR19KT1lTVElDS19TSURFV0lOREVS
PXkKQ09ORklHX0pPWVNUSUNLX1RNREM9eQpDT05GSUdfSk9ZU1RJQ0tfSUZPUkNFPXkKIyBD
T05GSUdfSk9ZU1RJQ0tfSUZPUkNFXzIzMiBpcyBub3Qgc2V0CiMgQ09ORklHX0pPWVNUSUNL
X1dBUlJJT1IgaXMgbm90IHNldAojIENPTkZJR19KT1lTVElDS19NQUdFTExBTiBpcyBub3Qg
c2V0CiMgQ09ORklHX0pPWVNUSUNLX1NQQUNFT1JCIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNU
SUNLX1NQQUNFQkFMTD15CkNPTkZJR19KT1lTVElDS19TVElOR0VSPXkKQ09ORklHX0pPWVNU
SUNLX1RXSURKT1k9eQojIENPTkZJR19KT1lTVElDS19aSEVOSFVBIGlzIG5vdCBzZXQKQ09O
RklHX0pPWVNUSUNLX0RCOT15CkNPTkZJR19KT1lTVElDS19HQU1FQ09OPXkKIyBDT05GSUdf
Sk9ZU1RJQ0tfVFVSQk9HUkFGWCBpcyBub3Qgc2V0CkNPTkZJR19KT1lTVElDS19BUzUwMTE9
eQojIENPTkZJR19KT1lTVElDS19KT1lEVU1QIGlzIG5vdCBzZXQKQ09ORklHX0pPWVNUSUNL
X1FXSUlDPXkKQ09ORklHX0pPWVNUSUNLX0ZTSUE2Qj15CkNPTkZJR19KT1lTVElDS19TRU5T
RUhBVD15CiMgQ09ORklHX0pPWVNUSUNLX1NFRVNBVyBpcyBub3Qgc2V0CkNPTkZJR19JTlBV
VF9UQUJMRVQ9eQpDT05GSUdfVEFCTEVUX1NFUklBTF9XQUNPTTQ9eQpDT05GSUdfSU5QVVRf
VE9VQ0hTQ1JFRU49eQpDT05GSUdfVE9VQ0hTQ1JFRU5fQUQ3ODc5PXkKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fQUQ3ODc5X0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX0FE
QyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9BUjEwMjFfSTJDPXkKQ09ORklHX1RP
VUNIU0NSRUVOX0FUTUVMX01YVD15CkNPTkZJR19UT1VDSFNDUkVFTl9BVU9fUElYQ0lSPXkK
Q09ORklHX1RPVUNIU0NSRUVOX0JVMjEwMTM9eQojIENPTkZJR19UT1VDSFNDUkVFTl9CVTIx
MDI5IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX0NISVBPTkVfSUNOODMxOD15CkNP
TkZJR19UT1VDSFNDUkVFTl9DSElQT05FX0lDTjg1MDU9eQpDT05GSUdfVE9VQ0hTQ1JFRU5f
Q1k4Q1RNQTE0MD15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0NZOENUTUcxMTAgaXMgbm90IHNl
dAojIENPTkZJR19UT1VDSFNDUkVFTl9DWVRUU1BfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0NZVFRTUDRfQ09SRSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVF
Tl9DWVRUU1A1PXkKQ09ORklHX1RPVUNIU0NSRUVOX0RZTkFQUk89eQojIENPTkZJR19UT1VD
SFNDUkVFTl9IQU1QU0hJUkUgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9FRVRJ
IGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYIGlzIG5vdCBzZXQKIyBD
T05GSUdfVE9VQ0hTQ1JFRU5fRUdBTEFYX1NFUklBTCBpcyBub3Qgc2V0CkNPTkZJR19UT1VD
SFNDUkVFTl9FWEMzMDAwPXkKQ09ORklHX1RPVUNIU0NSRUVOX0ZVSklUU1U9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fR09PRElYPXkKQ09ORklHX1RPVUNIU0NSRUVOX0dPT0RJWF9CRVJMSU5f
Q09SRT15CkNPTkZJR19UT1VDSFNDUkVFTl9HT09ESVhfQkVSTElOX0kyQz15CiMgQ09ORklH
X1RPVUNIU0NSRUVOX0hJREVFUCBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9IWUNP
Tl9IWTQ2WFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSFlOSVRST05fQ1NUWFhYPXkKQ09ORklH
X1RPVUNIU0NSRUVOX0lMSTIxMFg9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fSUxJVEVLPXkKQ09O
RklHX1RPVUNIU0NSRUVOX1M2U1k3NjE9eQojIENPTkZJR19UT1VDSFNDUkVFTl9HVU5aRSBp
cyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9FS1RGMjEyNz15CkNPTkZJR19UT1VDSFND
UkVFTl9FTEFOPXkKQ09ORklHX1RPVUNIU0NSRUVOX0VMTz15CkNPTkZJR19UT1VDSFNDUkVF
Tl9XQUNPTV9XODAwMT15CkNPTkZJR19UT1VDSFNDUkVFTl9XQUNPTV9JMkM9eQpDT05GSUdf
VE9VQ0hTQ1JFRU5fTUFYMTE4MDE9eQpDT05GSUdfVE9VQ0hTQ1JFRU5fTUNTNTAwMD15CkNP
TkZJR19UT1VDSFNDUkVFTl9NTVMxMTQ9eQojIENPTkZJR19UT1VDSFNDUkVFTl9NRUxGQVNf
TUlQNCBpcyBub3Qgc2V0CiMgQ09ORklHX1RPVUNIU0NSRUVOX01TRzI2MzggaXMgbm90IHNl
dApDT05GSUdfVE9VQ0hTQ1JFRU5fTVRPVUNIPXkKQ09ORklHX1RPVUNIU0NSRUVOX05PVkFU
RUtfTlZUX1RTPXkKQ09ORklHX1RPVUNIU0NSRUVOX0lNQUdJUz15CkNPTkZJR19UT1VDSFND
UkVFTl9JTVg2VUxfVFNDPXkKQ09ORklHX1RPVUNIU0NSRUVOX0lORVhJTz15CkNPTkZJR19U
T1VDSFNDUkVFTl9NSzcxMj15CiMgQ09ORklHX1RPVUNIU0NSRUVOX0hUQ1BFTiBpcyBub3Qg
c2V0CkNPTkZJR19UT1VDSFNDUkVFTl9QRU5NT1VOVD15CiMgQ09ORklHX1RPVUNIU0NSRUVO
X0VEVF9GVDVYMDYgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9UT1VDSFJJR0hU
IGlzIG5vdCBzZXQKQ09ORklHX1RPVUNIU0NSRUVOX1RPVUNIV0lOPXkKIyBDT05GSUdfVE9V
Q0hTQ1JFRU5fUElYQ0lSIGlzIG5vdCBzZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fV0RUODdY
WF9JMkMgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fV004MzFYPXkKIyBDT05GSUdf
VE9VQ0hTQ1JFRU5fTUMxMzc4MyBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFNDUkVFTl9UT1VD
SElUMjEzPXkKQ09ORklHX1RPVUNIU0NSRUVOX1RTQ19TRVJJTz15CiMgQ09ORklHX1RPVUNI
U0NSRUVOX1RTQzIwMDQgaXMgbm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fVFNDMjAwNz15
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1RTQzIwMDdfSUlPIGlzIG5vdCBzZXQKQ09ORklHX1RP
VUNIU0NSRUVOX1JNX1RTPXkKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU0lMRUFEIGlzIG5vdCBz
ZXQKIyBDT05GSUdfVE9VQ0hTQ1JFRU5fU0lTX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19UT1VD
SFNDUkVFTl9TVDEyMzI9eQojIENPTkZJR19UT1VDSFNDUkVFTl9TVE1GVFMgaXMgbm90IHNl
dAojIENPTkZJR19UT1VDSFNDUkVFTl9TVE1QRSBpcyBub3Qgc2V0CkNPTkZJR19UT1VDSFND
UkVFTl9TWDg2NTQ9eQojIENPTkZJR19UT1VDSFNDUkVFTl9UUFM2NTA3WCBpcyBub3Qgc2V0
CiMgQ09ORklHX1RPVUNIU0NSRUVOX1pFVDYyMjMgaXMgbm90IHNldAojIENPTkZJR19UT1VD
SFNDUkVFTl9aRk9SQ0UgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9DT0xJQlJJ
X1ZGNTAgaXMgbm90IHNldAojIENPTkZJR19UT1VDSFNDUkVFTl9ST0hNX0JVMjEwMjMgaXMg
bm90IHNldApDT05GSUdfVE9VQ0hTQ1JFRU5fSVFTNVhYPXkKQ09ORklHX1RPVUNIU0NSRUVO
X0lRUzcyMTE9eQojIENPTkZJR19UT1VDSFNDUkVFTl9aSU5JVElYIGlzIG5vdCBzZXQKIyBD
T05GSUdfVE9VQ0hTQ1JFRU5fSElNQVhfSFg4MzExMkIgaXMgbm90IHNldApDT05GSUdfSU5Q
VVRfTUlTQz15CiMgQ09ORklHX0lOUFVUXzg4UE04MFhfT05LRVkgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfQUQ3MTRYPXkKQ09ORklHX0lOUFVUX0FENzE0WF9JMkM9eQojIENPTkZJR19J
TlBVVF9BVE1FTF9DQVBUT1VDSCBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9CTUExNTA9eQoj
IENPTkZJR19JTlBVVF9FM1gwX0JVVFRPTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVUX1BD
U1BLUiBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9NQVg3NzY1MF9PTktFWT15CkNPTkZJR19J
TlBVVF9NQVg3NzY5M19IQVBUSUM9eQpDT05GSUdfSU5QVVRfTUMxMzc4M19QV1JCVVRUT049
eQojIENPTkZJR19JTlBVVF9NTUE4NDUwIGlzIG5vdCBzZXQKQ09ORklHX0lOUFVUX0FQQU5F
TD15CkNPTkZJR19JTlBVVF9HUElPX0JFRVBFUj15CiMgQ09ORklHX0lOUFVUX0dQSU9fREVD
T0RFUiBpcyBub3Qgc2V0CkNPTkZJR19JTlBVVF9HUElPX1ZJQlJBPXkKIyBDT05GSUdfSU5Q
VVRfV0lTVFJPTl9CVE5TIGlzIG5vdCBzZXQKIyBDT05GSUdfSU5QVVRfQVRMQVNfQlROUyBp
cyBub3Qgc2V0CkNPTkZJR19JTlBVVF9LWFRKOT15CiMgQ09ORklHX0lOUFVUX1JFR1VMQVRP
Ul9IQVBUSUMgaXMgbm90IHNldApDT05GSUdfSU5QVVRfUkVUVV9QV1JCVVRUT049eQojIENP
TkZJR19JTlBVVF9UUFM2NTIxOF9QV1JCVVRUT04gaXMgbm90IHNldApDT05GSUdfSU5QVVRf
VFBTNjUyMTlfUFdSQlVUVE9OPXkKQ09ORklHX0lOUFVUX0FYUDIwWF9QRUs9eQpDT05GSUdf
SU5QVVRfVFdMNDAzMF9QV1JCVVRUT049eQpDT05GSUdfSU5QVVRfVFdMNDAzMF9WSUJSQT15
CkNPTkZJR19JTlBVVF9VSU5QVVQ9eQpDT05GSUdfSU5QVVRfUEFMTUFTX1BXUkJVVFRPTj15
CiMgQ09ORklHX0lOUFVUX1BDRjUwNjMzX1BNVSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOUFVU
X1BDRjg1NzQgaXMgbm90IHNldAojIENPTkZJR19JTlBVVF9QV01fQkVFUEVSIGlzIG5vdCBz
ZXQKQ09ORklHX0lOUFVUX1BXTV9WSUJSQT15CkNPTkZJR19JTlBVVF9HUElPX1JPVEFSWV9F
TkNPREVSPXkKIyBDT05GSUdfSU5QVVRfREE3MjgwX0hBUFRJQ1MgaXMgbm90IHNldApDT05G
SUdfSU5QVVRfREE5MDYzX09OS0VZPXkKIyBDT05GSUdfSU5QVVRfV004MzFYX09OIGlzIG5v
dCBzZXQKQ09ORklHX0lOUFVUX0FEWEwzNFg9eQpDT05GSUdfSU5QVVRfQURYTDM0WF9JMkM9
eQpDT05GSUdfSU5QVVRfSUJNX1BBTkVMPXkKIyBDT05GSUdfSU5QVVRfSVFTMjY5QSBpcyBu
b3Qgc2V0CkNPTkZJR19JTlBVVF9JUVM2MjZBPXkKQ09ORklHX0lOUFVUX0lRUzcyMjI9eQpD
T05GSUdfSU5QVVRfQ01BMzAwMD15CkNPTkZJR19JTlBVVF9DTUEzMDAwX0kyQz15CkNPTkZJ
R19JTlBVVF9JREVBUEFEX1NMSURFQkFSPXkKQ09ORklHX0lOUFVUX0RSVjI2MFhfSEFQVElD
Uz15CkNPTkZJR19JTlBVVF9EUlYyNjY1X0hBUFRJQ1M9eQpDT05GSUdfSU5QVVRfRFJWMjY2
N19IQVBUSUNTPXkKQ09ORklHX0lOUFVUX1JUNTEyMF9QV1JLRVk9eQpDT05GSUdfUk1JNF9D
T1JFPXkKIyBDT05GSUdfUk1JNF9JMkMgaXMgbm90IHNldApDT05GSUdfUk1JNF9TTUI9eQpD
T05GSUdfUk1JNF9GMDM9eQpDT05GSUdfUk1JNF9GMDNfU0VSSU89eQpDT05GSUdfUk1JNF8y
RF9TRU5TT1I9eQpDT05GSUdfUk1JNF9GMTE9eQpDT05GSUdfUk1JNF9GMTI9eQpDT05GSUdf
Uk1JNF9GMzA9eQojIENPTkZJR19STUk0X0YzNCBpcyBub3Qgc2V0CkNPTkZJR19STUk0X0Yz
QT15CkNPTkZJR19STUk0X0Y1NT15CgojCiMgSGFyZHdhcmUgSS9PIHBvcnRzCiMKQ09ORklH
X1NFUklPPXkKQ09ORklHX0FSQ0hfTUlHSFRfSEFWRV9QQ19TRVJJTz15CkNPTkZJR19TRVJJ
T19JODA0Mj15CkNPTkZJR19TRVJJT19TRVJQT1JUPXkKQ09ORklHX1NFUklPX0NUODJDNzEw
PXkKIyBDT05GSUdfU0VSSU9fUEFSS0JEIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSU9fTElC
UFMyIGlzIG5vdCBzZXQKQ09ORklHX1NFUklPX1JBVz15CiMgQ09ORklHX1NFUklPX0FMVEVS
QV9QUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fUFMyTVVMVD15CiMgQ09ORklHX1NFUklP
X0FSQ19QUzIgaXMgbm90IHNldApDT05GSUdfU0VSSU9fQVBCUFMyPXkKIyBDT05GSUdfU0VS
SU9fR1BJT19QUzIgaXMgbm90IHNldApDT05GSUdfVVNFUklPPXkKQ09ORklHX0dBTUVQT1JU
PXkKQ09ORklHX0dBTUVQT1JUX05TNTU4PXkKQ09ORklHX0dBTUVQT1JUX0w0PXkKIyBlbmQg
b2YgSGFyZHdhcmUgSS9PIHBvcnRzCiMgZW5kIG9mIElucHV0IGRldmljZSBzdXBwb3J0Cgoj
CiMgQ2hhcmFjdGVyIGRldmljZXMKIwpDT05GSUdfVFRZPXkKQ09ORklHX1ZUPXkKQ09ORklH
X0NPTlNPTEVfVFJBTlNMQVRJT05TPXkKQ09ORklHX1ZUX0NPTlNPTEU9eQojIENPTkZJR19W
VF9IV19DT05TT0xFX0JJTkRJTkcgaXMgbm90IHNldApDT05GSUdfVU5JWDk4X1BUWVM9eQpD
T05GSUdfTEVHQUNZX1BUWVM9eQpDT05GSUdfTEVHQUNZX1BUWV9DT1VOVD0yNTYKQ09ORklH
X0xFR0FDWV9USU9DU1RJPXkKQ09ORklHX0xESVNDX0FVVE9MT0FEPXkKCiMKIyBTZXJpYWwg
ZHJpdmVycwojCkNPTkZJR19TRVJJQUxfRUFSTFlDT049eQpDT05GSUdfU0VSSUFMXzgyNTA9
eQojIENPTkZJR19TRVJJQUxfODI1MF9ERVBSRUNBVEVEX09QVElPTlMgaXMgbm90IHNldApD
T05GSUdfU0VSSUFMXzgyNTBfUE5QPXkKQ09ORklHX1NFUklBTF84MjUwXzE2NTUwQV9WQVJJ
QU5UUz15CkNPTkZJR19TRVJJQUxfODI1MF9GSU5URUs9eQojIENPTkZJR19TRVJJQUxfODI1
MF9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NFUklBTF84MjUwX01FTl9NQ0I9eQpDT05G
SUdfU0VSSUFMXzgyNTBfTlJfVUFSVFM9NApDT05GSUdfU0VSSUFMXzgyNTBfUlVOVElNRV9V
QVJUUz00CkNPTkZJR19TRVJJQUxfODI1MF9FWFRFTkRFRD15CiMgQ09ORklHX1NFUklBTF84
MjUwX01BTllfUE9SVFMgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfU0hBUkVfSVJR
PXkKQ09ORklHX1NFUklBTF84MjUwX0RFVEVDVF9JUlE9eQojIENPTkZJR19TRVJJQUxfODI1
MF9SU0EgaXMgbm90IHNldApDT05GSUdfU0VSSUFMXzgyNTBfRFdMSUI9eQpDT05GSUdfU0VS
SUFMXzgyNTBfRFc9eQpDT05GSUdfU0VSSUFMXzgyNTBfUlQyODhYPXkKQ09ORklHX1NFUklB
TF9PRl9QTEFURk9STT15CgojCiMgTm9uLTgyNTAgc2VyaWFsIHBvcnQgc3VwcG9ydAojCkNP
TkZJR19TRVJJQUxfVUFSVExJVEU9eQojIENPTkZJR19TRVJJQUxfVUFSVExJVEVfQ09OU09M
RSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfVUFSVExJVEVfTlJfVUFSVFM9MQpDT05GSUdf
U0VSSUFMX0NPUkU9eQpDT05GSUdfU0VSSUFMX0NPUkVfQ09OU09MRT15CiMgQ09ORklHX1NF
UklBTF9TSUZJVkUgaXMgbm90IHNldApDT05GSUdfU0VSSUFMX0xBTlRJUT15CiMgQ09ORklH
X1NFUklBTF9MQU5USVFfQ09OU09MRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfU0NDTlhQ
PXkKIyBDT05GSUdfU0VSSUFMX1NDQ05YUF9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NF
UklBTF9TQzE2SVM3WFg9eQpDT05GSUdfU0VSSUFMX1NDMTZJUzdYWF9JMkM9eQojIENPTkZJ
R19TRVJJQUxfVElNQkVSREFMRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQUxURVJBX0pU
QUdVQVJUPXkKIyBDT05GSUdfU0VSSUFMX0FMVEVSQV9KVEFHVUFSVF9DT05TT0xFIGlzIG5v
dCBzZXQKQ09ORklHX1NFUklBTF9BTFRFUkFfVUFSVD15CkNPTkZJR19TRVJJQUxfQUxURVJB
X1VBUlRfTUFYUE9SVFM9NApDT05GSUdfU0VSSUFMX0FMVEVSQV9VQVJUX0JBVURSQVRFPTEx
NTIwMAojIENPTkZJR19TRVJJQUxfQUxURVJBX1VBUlRfQ09OU09MRSBpcyBub3Qgc2V0CkNP
TkZJR19TRVJJQUxfWElMSU5YX1BTX1VBUlQ9eQpDT05GSUdfU0VSSUFMX1hJTElOWF9QU19V
QVJUX0NPTlNPTEU9eQpDT05GSUdfU0VSSUFMX0FSQz15CkNPTkZJR19TRVJJQUxfQVJDX0NP
TlNPTEU9eQpDT05GSUdfU0VSSUFMX0FSQ19OUl9QT1JUUz0xCkNPTkZJR19TRVJJQUxfRlNM
X0xQVUFSVD15CiMgQ09ORklHX1NFUklBTF9GU0xfTFBVQVJUX0NPTlNPTEUgaXMgbm90IHNl
dApDT05GSUdfU0VSSUFMX0ZTTF9MSU5GTEVYVUFSVD15CiMgQ09ORklHX1NFUklBTF9GU0xf
TElORkxFWFVBUlRfQ09OU09MRSBpcyBub3Qgc2V0CkNPTkZJR19TRVJJQUxfQ09ORVhBTlRf
RElHSUNPTE9SPXkKIyBDT05GSUdfU0VSSUFMX0NPTkVYQU5UX0RJR0lDT0xPUl9DT05TT0xF
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VSSUFMX01FTl9aMTM1IGlzIG5vdCBzZXQKQ09ORklH
X1NFUklBTF9TUFJEPXkKIyBDT05GSUdfU0VSSUFMX1NQUkRfQ09OU09MRSBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFUklBTF9MSVRFVUFSVCBpcyBub3Qgc2V0CiMgZW5kIG9mIFNlcmlhbCBk
cml2ZXJzCgpDT05GSUdfU0VSSUFMX01DVFJMX0dQSU89eQpDT05GSUdfU0VSSUFMX05PTlNU
QU5EQVJEPXkKQ09ORklHX01PWEFfSU5URUxMSU89eQpDT05GSUdfTl9IRExDPXkKQ09ORklH
X05fR1NNPXkKQ09ORklHX05VTExfVFRZPXkKIyBDT05GSUdfUlBNU0dfVFRZIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VSSUFMX0RFVl9CVVMgaXMgbm90IHNldAojIENPTkZJR19QUklOVEVS
IGlzIG5vdCBzZXQKQ09ORklHX1BQREVWPXkKIyBDT05GSUdfVklSVElPX0NPTlNPTEUgaXMg
bm90IHNldApDT05GSUdfSVBNSV9IQU5ETEVSPXkKQ09ORklHX0lQTUlfRE1JX0RFQ09ERT15
CkNPTkZJR19JUE1JX1BMQVRfREFUQT15CiMgQ09ORklHX0lQTUlfUEFOSUNfRVZFTlQgaXMg
bm90IHNldAojIENPTkZJR19JUE1JX0RFVklDRV9JTlRFUkZBQ0UgaXMgbm90IHNldApDT05G
SUdfSVBNSV9TST15CkNPTkZJR19JUE1JX1NTSUY9eQojIENPTkZJR19JUE1JX0lQTUIgaXMg
bm90IHNldApDT05GSUdfSVBNSV9XQVRDSERPRz15CkNPTkZJR19JUE1JX1BPV0VST0ZGPXkK
IyBDT05GSUdfU1NJRl9JUE1JX0JNQyBpcyBub3Qgc2V0CkNPTkZJR19JUE1CX0RFVklDRV9J
TlRFUkZBQ0U9eQpDT05GSUdfSFdfUkFORE9NPXkKQ09ORklHX0hXX1JBTkRPTV9USU1FUklP
TUVNPXkKQ09ORklHX0hXX1JBTkRPTV9CQTQzMT15CkNPTkZJR19IV19SQU5ET01fVklBPXkK
Q09ORklHX0hXX1JBTkRPTV9WSVJUSU89eQojIENPTkZJR19IV19SQU5ET01fQ0NUUk5HIGlz
IG5vdCBzZXQKQ09ORklHX0hXX1JBTkRPTV9YSVBIRVJBPXkKIyBDT05GSUdfRFRMSyBpcyBu
b3Qgc2V0CkNPTkZJR19NV0FWRT15CiMgQ09ORklHX1NDeDIwMF9HUElPIGlzIG5vdCBzZXQK
IyBDT05GSUdfUEM4NzM2eF9HUElPIGlzIG5vdCBzZXQKQ09ORklHX05TQ19HUElPPXkKIyBD
T05GSUdfREVWTUVNIGlzIG5vdCBzZXQKQ09ORklHX05WUkFNPXkKIyBDT05GSUdfREVWUE9S
VCBpcyBub3Qgc2V0CiMgQ09ORklHX0hQRVQgaXMgbm90IHNldAojIENPTkZJR19IQU5HQ0hF
Q0tfVElNRVIgaXMgbm90IHNldApDT05GSUdfVENHX1RQTT15CkNPTkZJR19UQ0dfVFBNMl9I
TUFDPXkKQ09ORklHX0hXX1JBTkRPTV9UUE09eQpDT05GSUdfVENHX1RJU19DT1JFPXkKQ09O
RklHX1RDR19USVM9eQpDT05GSUdfVENHX1RJU19JMkM9eQpDT05GSUdfVENHX1RJU19JMkNf
Q1I1MD15CkNPTkZJR19UQ0dfVElTX0kyQ19BVE1FTD15CiMgQ09ORklHX1RDR19USVNfSTJD
X0lORklORU9OIGlzIG5vdCBzZXQKQ09ORklHX1RDR19USVNfSTJDX05VVk9UT049eQpDT05G
SUdfVENHX05TQz15CiMgQ09ORklHX1RDR19BVE1FTCBpcyBub3Qgc2V0CkNPTkZJR19UQ0df
SU5GSU5FT049eQpDT05GSUdfVENHX0NSQj15CkNPTkZJR19UQ0dfVlRQTV9QUk9YWT15CiMg
Q09ORklHX1RDR19USVNfU1QzM1pQMjRfSTJDIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVMQ0xP
Q0sgaXMgbm90IHNldApDT05GSUdfWElMTFlCVVNfQ0xBU1M9eQpDT05GSUdfWElMTFlCVVM9
eQpDT05GSUdfWElMTFlCVVNfT0Y9eQojIGVuZCBvZiBDaGFyYWN0ZXIgZGV2aWNlcwoKIwoj
IEkyQyBzdXBwb3J0CiMKQ09ORklHX0kyQz15CiMgQ09ORklHX0FDUElfSTJDX09QUkVHSU9O
IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19CT0FSRElORk89eQojIENPTkZJR19JMkNfQ09NUEFU
IGlzIG5vdCBzZXQKQ09ORklHX0kyQ19DSEFSREVWPXkKQ09ORklHX0kyQ19NVVg9eQoKIwoj
IE11bHRpcGxleGVyIEkyQyBDaGlwIHN1cHBvcnQKIwpDT05GSUdfSTJDX0FSQl9HUElPX0NI
QUxMRU5HRT15CkNPTkZJR19JMkNfTVVYX0dQSU89eQpDT05GSUdfSTJDX01VWF9HUE1VWD15
CkNPTkZJR19JMkNfTVVYX0xUQzQzMDY9eQpDT05GSUdfSTJDX01VWF9QQ0E5NTQxPXkKQ09O
RklHX0kyQ19NVVhfUENBOTU0eD15CiMgQ09ORklHX0kyQ19NVVhfUElOQ1RSTCBpcyBub3Qg
c2V0CkNPTkZJR19JMkNfTVVYX1JFRz15CiMgQ09ORklHX0kyQ19ERU1VWF9QSU5DVFJMIGlz
IG5vdCBzZXQKQ09ORklHX0kyQ19NVVhfTUxYQ1BMRD15CiMgZW5kIG9mIE11bHRpcGxleGVy
IEkyQyBDaGlwIHN1cHBvcnQKCiMgQ09ORklHX0kyQ19IRUxQRVJfQVVUTyBpcyBub3Qgc2V0
CkNPTkZJR19JMkNfU01CVVM9eQoKIwojIEkyQyBBbGdvcml0aG1zCiMKQ09ORklHX0kyQ19B
TEdPQklUPXkKQ09ORklHX0kyQ19BTEdPUENGPXkKQ09ORklHX0kyQ19BTEdPUENBPXkKIyBl
bmQgb2YgSTJDIEFsZ29yaXRobXMKCiMKIyBJMkMgSGFyZHdhcmUgQnVzIHN1cHBvcnQKIwoK
IwojIEFDUEkgZHJpdmVycwojCkNPTkZJR19JMkNfU0NNST15CgojCiMgSTJDIHN5c3RlbSBi
dXMgZHJpdmVycyAobW9zdGx5IGVtYmVkZGVkIC8gc3lzdGVtLW9uLWNoaXApCiMKQ09ORklH
X0kyQ19DQlVTX0dQSU89eQojIENPTkZJR19JMkNfREVTSUdOV0FSRV9QTEFURk9STSBpcyBu
b3Qgc2V0CiMgQ09ORklHX0kyQ19FTUVWMiBpcyBub3Qgc2V0CkNPTkZJR19JMkNfR1BJTz15
CiMgQ09ORklHX0kyQ19HUElPX0ZBVUxUX0lOSkVDVE9SIGlzIG5vdCBzZXQKQ09ORklHX0ky
Q19LRU1QTEQ9eQpDT05GSUdfSTJDX09DT1JFUz15CiMgQ09ORklHX0kyQ19QQ0FfUExBVEZP
Uk0gaXMgbm90IHNldAojIENPTkZJR19JMkNfUkszWCBpcyBub3Qgc2V0CiMgQ09ORklHX0ky
Q19TSU1URUMgaXMgbm90IHNldAojIENPTkZJR19JMkNfWElMSU5YIGlzIG5vdCBzZXQKCiMK
IyBFeHRlcm5hbCBJMkMvU01CdXMgYWRhcHRlciBkcml2ZXJzCiMKIyBDT05GSUdfSTJDX1BB
UlBPUlQgaXMgbm90IHNldAojIENPTkZJR19JMkNfVEFPU19FVk0gaXMgbm90IHNldAoKIwoj
IE90aGVyIEkyQy9TTUJ1cyBidXMgZHJpdmVycwojCkNPTkZJR19JMkNfUENBX0lTQT15CkNP
TkZJR19JMkNfQ1JPU19FQ19UVU5ORUw9eQpDT05GSUdfSTJDX1ZJUlRJTz15CiMgZW5kIG9m
IEkyQyBIYXJkd2FyZSBCdXMgc3VwcG9ydAoKQ09ORklHX0kyQ19TTEFWRT15CkNPTkZJR19J
MkNfU0xBVkVfRUVQUk9NPXkKQ09ORklHX0kyQ19TTEFWRV9URVNUVU5JVD15CkNPTkZJR19J
MkNfREVCVUdfQ09SRT15CiMgQ09ORklHX0kyQ19ERUJVR19BTEdPIGlzIG5vdCBzZXQKQ09O
RklHX0kyQ19ERUJVR19CVVM9eQojIGVuZCBvZiBJMkMgc3VwcG9ydAoKQ09ORklHX0kzQz15
CiMgQ09ORklHX0NETlNfSTNDX01BU1RFUiBpcyBub3Qgc2V0CkNPTkZJR19EV19JM0NfTUFT
VEVSPXkKQ09ORklHX1NWQ19JM0NfTUFTVEVSPXkKQ09ORklHX01JUElfSTNDX0hDST15CiMg
Q09ORklHX1NQSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NQTUkgaXMgbm90IHNldApDT05GSUdf
SFNJPXkKQ09ORklHX0hTSV9CT0FSRElORk89eQoKIwojIEhTSSBjb250cm9sbGVycwojCgoj
CiMgSFNJIGNsaWVudHMKIwojIENPTkZJR19IU0lfQ0hBUiBpcyBub3Qgc2V0CkNPTkZJR19Q
UFM9eQpDT05GSUdfUFBTX0RFQlVHPXkKQ09ORklHX05UUF9QUFM9eQoKIwojIFBQUyBjbGll
bnRzIHN1cHBvcnQKIwpDT05GSUdfUFBTX0NMSUVOVF9LVElNRVI9eQpDT05GSUdfUFBTX0NM
SUVOVF9MRElTQz15CiMgQ09ORklHX1BQU19DTElFTlRfUEFSUE9SVCBpcyBub3Qgc2V0CkNP
TkZJR19QUFNfQ0xJRU5UX0dQSU89eQoKIwojIFBQUyBnZW5lcmF0b3JzIHN1cHBvcnQKIwoK
IwojIFBUUCBjbG9jayBzdXBwb3J0CiMKIyBDT05GSUdfUFRQXzE1ODhfQ0xPQ0sgaXMgbm90
IHNldApDT05GSUdfUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUw9eQojIGVuZCBvZiBQVFAgY2xv
Y2sgc3VwcG9ydAoKQ09ORklHX1BJTkNUUkw9eQpDT05GSUdfR0VORVJJQ19QSU5DVFJMX0dS
T1VQUz15CkNPTkZJR19QSU5NVVg9eQpDT05GSUdfR0VORVJJQ19QSU5NVVhfRlVOQ1RJT05T
PXkKQ09ORklHX1BJTkNPTkY9eQpDT05GSUdfR0VORVJJQ19QSU5DT05GPXkKIyBDT05GSUdf
UElOQ1RSTF9BTUQgaXMgbm90IHNldAojIENPTkZJR19QSU5DVFJMX0FYUDIwOSBpcyBub3Qg
c2V0CkNPTkZJR19QSU5DVFJMX0FXOTUyMz15CiMgQ09ORklHX1BJTkNUUkxfQ1k4Qzk1WDAg
aXMgbm90IHNldApDT05GSUdfUElOQ1RSTF9EQTkwNjI9eQpDT05GSUdfUElOQ1RSTF9FUVVJ
TElCUklVTT15CiMgQ09ORklHX1BJTkNUUkxfTUNQMjNTMDggaXMgbm90IHNldApDT05GSUdf
UElOQ1RSTF9NSUNST0NISVBfU0dQSU89eQpDT05GSUdfUElOQ1RSTF9PQ0VMT1Q9eQpDT05G
SUdfUElOQ1RSTF9QQUxNQVM9eQpDT05GSUdfUElOQ1RSTF9TSU5HTEU9eQpDT05GSUdfUElO
Q1RSTF9TVE1GWD15CkNPTkZJR19QSU5DVFJMX1NYMTUwWD15CkNPTkZJR19QSU5DVFJMX1RQ
UzY1OTQ9eQpDT05GSUdfUElOQ1RSTF9DUzQyTDQzPXkKCiMKIyBJbnRlbCBwaW5jdHJsIGRy
aXZlcnMKIwpDT05GSUdfUElOQ1RSTF9CQVlUUkFJTD15CkNPTkZJR19QSU5DVFJMX0NIRVJS
WVZJRVc9eQpDT05GSUdfUElOQ1RSTF9MWU5YUE9JTlQ9eQpDT05GSUdfUElOQ1RSTF9JTlRF
TD15CkNPTkZJR19QSU5DVFJMX0lOVEVMX1BMQVRGT1JNPXkKQ09ORklHX1BJTkNUUkxfQUxE
RVJMQUtFPXkKQ09ORklHX1BJTkNUUkxfQlJPWFRPTj15CiMgQ09ORklHX1BJTkNUUkxfQ0FO
Tk9OTEFLRSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX0NFREFSRk9SSz15CkNPTkZJR19Q
SU5DVFJMX0RFTlZFUlRPTj15CiMgQ09ORklHX1BJTkNUUkxfRUxLSEFSVExBS0UgaXMgbm90
IHNldApDT05GSUdfUElOQ1RSTF9FTU1JVFNCVVJHPXkKIyBDT05GSUdfUElOQ1RSTF9HRU1J
TklMQUtFIGlzIG5vdCBzZXQKQ09ORklHX1BJTkNUUkxfSUNFTEFLRT15CkNPTkZJR19QSU5D
VFJMX0pBU1BFUkxBS0U9eQpDT05GSUdfUElOQ1RSTF9MQUtFRklFTEQ9eQojIENPTkZJR19Q
SU5DVFJMX0xFV0lTQlVSRyBpcyBub3Qgc2V0CiMgQ09ORklHX1BJTkNUUkxfTUVURU9STEFL
RSBpcyBub3Qgc2V0CkNPTkZJR19QSU5DVFJMX01FVEVPUlBPSU5UPXkKQ09ORklHX1BJTkNU
UkxfU1VOUklTRVBPSU5UPXkKIyBDT05GSUdfUElOQ1RSTF9USUdFUkxBS0UgaXMgbm90IHNl
dAojIGVuZCBvZiBJbnRlbCBwaW5jdHJsIGRyaXZlcnMKCiMKIyBSZW5lc2FzIHBpbmN0cmwg
ZHJpdmVycwojCiMgZW5kIG9mIFJlbmVzYXMgcGluY3RybCBkcml2ZXJzCgpDT05GSUdfR1BJ
T0xJQj15CkNPTkZJR19HUElPTElCX0ZBU1RQQVRIX0xJTUlUPTUxMgpDT05GSUdfT0ZfR1BJ
Tz15CkNPTkZJR19HUElPX0FDUEk9eQpDT05GSUdfR1BJT0xJQl9JUlFDSElQPXkKQ09ORklH
X09GX0dQSU9fTU1fR1BJT0NISVA9eQpDT05GSUdfR1BJT19DREVWPXkKQ09ORklHX0dQSU9f
Q0RFVl9WMT15CkNPTkZJR19HUElPX0dFTkVSSUM9eQpDT05GSUdfR1BJT19SRUdNQVA9eQoK
IwojIE1lbW9yeSBtYXBwZWQgR1BJTyBkcml2ZXJzCiMKQ09ORklHX0dQSU9fNzRYWF9NTUlP
PXkKQ09ORklHX0dQSU9fQUxURVJBPXkKIyBDT05GSUdfR1BJT19BTURQVCBpcyBub3Qgc2V0
CkNPTkZJR19HUElPX0NBREVOQ0U9eQpDT05GSUdfR1BJT19EV0FQQj15CiMgQ09ORklHX0dQ
SU9fRlRHUElPMDEwIGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19HRU5FUklDX1BMQVRGT1JN
IGlzIG5vdCBzZXQKIyBDT05GSUdfR1BJT19HUkFOSVRFUkFQSURTIGlzIG5vdCBzZXQKQ09O
RklHX0dQSU9fR1JHUElPPXkKQ09ORklHX0dQSU9fSExXRD15CkNPTkZJR19HUElPX0xPR0lD
VkM9eQpDT05GSUdfR1BJT19NQjg2UzdYPXkKQ09ORklHX0dQSU9fTUVOWjEyNz15CkNPTkZJ
R19HUElPX1NJRklWRT15CiMgQ09ORklHX0dQSU9fU0lPWCBpcyBub3Qgc2V0CiMgQ09ORklH
X0dQSU9fU1lTQ09OIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fWElMSU5YPXkKIyBDT05GSUdf
R1BJT19BTURfRkNIIGlzIG5vdCBzZXQKIyBlbmQgb2YgTWVtb3J5IG1hcHBlZCBHUElPIGRy
aXZlcnMKCiMKIyBQb3J0LW1hcHBlZCBJL08gR1BJTyBkcml2ZXJzCiMKQ09ORklHX0dQSU9f
RjcxODhYPXkKQ09ORklHX0dQSU9fSVQ4Nz15CiMgQ09ORklHX0dQSU9fU0NIMzExWCBpcyBu
b3Qgc2V0CkNPTkZJR19HUElPX1dJTkJPTkQ9eQpDT05GSUdfR1BJT19XUzE2QzQ4PXkKIyBl
bmQgb2YgUG9ydC1tYXBwZWQgSS9PIEdQSU8gZHJpdmVycwoKIwojIEkyQyBHUElPIGV4cGFu
ZGVycwojCkNPTkZJR19HUElPX0FETlA9eQojIENPTkZJR19HUElPX0ZYTDY0MDggaXMgbm90
IHNldApDT05GSUdfR1BJT19EUzQ1MjA9eQojIENPTkZJR19HUElPX0dXX1BMRCBpcyBub3Qg
c2V0CiMgQ09ORklHX0dQSU9fTUFYNzMwMCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fTUFY
NzMyWCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fUENBOTUzWCBpcyBub3Qgc2V0CkNPTkZJ
R19HUElPX1BDQTk1NzA9eQojIENPTkZJR19HUElPX1BDRjg1N1ggaXMgbm90IHNldApDT05G
SUdfR1BJT19UUElDMjgxMD15CiMgZW5kIG9mIEkyQyBHUElPIGV4cGFuZGVycwoKIwojIE1G
RCBHUElPIGV4cGFuZGVycwojCiMgQ09ORklHX0dQSU9fQURQNTUyMCBpcyBub3Qgc2V0CkNP
TkZJR19HUElPX0FSSVpPTkE9eQpDT05GSUdfR1BJT19CRDcxODE1PXkKIyBDT05GSUdfR1BJ
T19CRDcxODI4IGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fQkQ5NTcxTVdWPXkKQ09ORklHX0dQ
SU9fQ1JPU19FQz15CiMgQ09ORklHX0dQSU9fRUxLSEFSVExBS0UgaXMgbm90IHNldApDT05G
SUdfR1BJT19LRU1QTEQ9eQpDT05GSUdfR1BJT19MUDM5NDM9eQojIENPTkZJR19HUElPX0xQ
ODc1NjUgaXMgbm90IHNldApDT05GSUdfR1BJT19NQVg3NzY1MD15CkNPTkZJR19HUElPX1BB
TE1BUz15CkNPTkZJR19HUElPX1JDNVQ1ODM9eQpDT05GSUdfR1BJT19TVE1QRT15CiMgQ09O
RklHX0dQSU9fVEMzNTg5WCBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1RQUzY1MDg2PXkKIyBD
T05GSUdfR1BJT19UUFM2NTIxOCBpcyBub3Qgc2V0CkNPTkZJR19HUElPX1RQUzY1MjE5PXkK
IyBDT05GSUdfR1BJT19UUFM2NTg2WCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVFBTNjU5
MTAgaXMgbm90IHNldApDT05GSUdfR1BJT19UUFM2NTkxMj15CiMgQ09ORklHX0dQSU9fVFBT
Njg0NzAgaXMgbm90IHNldApDT05GSUdfR1BJT19UV0w0MDMwPXkKQ09ORklHX0dQSU9fV0hJ
U0tFWV9DT1ZFPXkKIyBDT05GSUdfR1BJT19XTTgzMVggaXMgbm90IHNldApDT05GSUdfR1BJ
T19XTTgzNTA9eQojIENPTkZJR19HUElPX1dNODk5NCBpcyBub3Qgc2V0CiMgZW5kIG9mIE1G
RCBHUElPIGV4cGFuZGVycwoKIwojIFZpcnR1YWwgR1BJTyBkcml2ZXJzCiMKIyBDT05GSUdf
R1BJT19BR0dSRUdBVE9SIGlzIG5vdCBzZXQKQ09ORklHX0dQSU9fTEFUQ0g9eQojIENPTkZJ
R19HUElPX01PQ0tVUCBpcyBub3Qgc2V0CiMgQ09ORklHX0dQSU9fVklSVElPIGlzIG5vdCBz
ZXQKIyBDT05GSUdfR1BJT19TSU0gaXMgbm90IHNldAojIGVuZCBvZiBWaXJ0dWFsIEdQSU8g
ZHJpdmVycwoKIwojIEdQSU8gRGVidWdnaW5nIHV0aWxpdGllcwojCiMgZW5kIG9mIEdQSU8g
RGVidWdnaW5nIHV0aWxpdGllcwoKQ09ORklHX1cxPXkKQ09ORklHX1cxX0NPTj15CgojCiMg
MS13aXJlIEJ1cyBNYXN0ZXJzCiMKQ09ORklHX1cxX01BU1RFUl9BTURfQVhJPXkKQ09ORklH
X1cxX01BU1RFUl9EUzI0ODI9eQpDT05GSUdfVzFfTUFTVEVSX0dQSU89eQojIENPTkZJR19X
MV9NQVNURVJfU0dJIGlzIG5vdCBzZXQKIyBlbmQgb2YgMS13aXJlIEJ1cyBNYXN0ZXJzCgoj
CiMgMS13aXJlIFNsYXZlcwojCkNPTkZJR19XMV9TTEFWRV9USEVSTT15CkNPTkZJR19XMV9T
TEFWRV9TTUVNPXkKIyBDT05GSUdfVzFfU0xBVkVfRFMyNDA1IGlzIG5vdCBzZXQKQ09ORklH
X1cxX1NMQVZFX0RTMjQwOD15CiMgQ09ORklHX1cxX1NMQVZFX0RTMjQwOF9SRUFEQkFDSyBp
cyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI0MTM9eQpDT05GSUdfVzFfU0xBVkVfRFMy
NDA2PXkKQ09ORklHX1cxX1NMQVZFX0RTMjQyMz15CkNPTkZJR19XMV9TTEFWRV9EUzI4MDU9
eQpDT05GSUdfVzFfU0xBVkVfRFMyNDMwPXkKIyBDT05GSUdfVzFfU0xBVkVfRFMyNDMxIGlz
IG5vdCBzZXQKQ09ORklHX1cxX1NMQVZFX0RTMjQzMz15CkNPTkZJR19XMV9TTEFWRV9EUzI0
MzNfQ1JDPXkKQ09ORklHX1cxX1NMQVZFX0RTMjQzOD15CiMgQ09ORklHX1cxX1NMQVZFX0RT
MjUwWCBpcyBub3Qgc2V0CkNPTkZJR19XMV9TTEFWRV9EUzI3ODA9eQpDT05GSUdfVzFfU0xB
VkVfRFMyNzgxPXkKQ09ORklHX1cxX1NMQVZFX0RTMjhFMDQ9eQpDT05GSUdfVzFfU0xBVkVf
RFMyOEUxNz15CiMgZW5kIG9mIDEtd2lyZSBTbGF2ZXMKCiMgQ09ORklHX1BPV0VSX1JFU0VU
IGlzIG5vdCBzZXQKQ09ORklHX1BPV0VSX1NFUVVFTkNJTkc9eQpDT05GSUdfUE9XRVJfU0VR
VUVOQ0lOR19RQ09NX1dDTj15CkNPTkZJR19QT1dFUl9TVVBQTFk9eQojIENPTkZJR19QT1dF
Ul9TVVBQTFlfREVCVUcgaXMgbm90IHNldApDT05GSUdfUE9XRVJfU1VQUExZX0hXTU9OPXkK
IyBDT05GSUdfR0VORVJJQ19BRENfQkFUVEVSWSBpcyBub3Qgc2V0CkNPTkZJR19JUDVYWFhf
UE9XRVI9eQpDT05GSUdfV004MzFYX0JBQ0tVUD15CkNPTkZJR19XTTgzMVhfUE9XRVI9eQpD
T05GSUdfV004MzUwX1BPV0VSPXkKQ09ORklHX1RFU1RfUE9XRVI9eQpDT05GSUdfQ0hBUkdF
Ul9BRFA1MDYxPXkKQ09ORklHX0JBVFRFUllfQUNUODk0NUE9eQojIENPTkZJR19CQVRURVJZ
X0NXMjAxNSBpcyBub3Qgc2V0CiMgQ09ORklHX0JBVFRFUllfRFMyNzYwIGlzIG5vdCBzZXQK
Q09ORklHX0JBVFRFUllfRFMyNzgwPXkKQ09ORklHX0JBVFRFUllfRFMyNzgxPXkKQ09ORklH
X0JBVFRFUllfRFMyNzgyPXkKIyBDT05GSUdfQkFUVEVSWV9PTFBDIGlzIG5vdCBzZXQKIyBD
T05GSUdfQkFUVEVSWV9TQU1TVU5HX1NESSBpcyBub3Qgc2V0CkNPTkZJR19CQVRURVJZX1NC
Uz15CkNPTkZJR19DSEFSR0VSX1NCUz15CkNPTkZJR19NQU5BR0VSX1NCUz15CkNPTkZJR19C
QVRURVJZX0JRMjdYWFg9eQojIENPTkZJR19CQVRURVJZX0JRMjdYWFhfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfQkFUVEVSWV9CUTI3WFhYX0hEUSBpcyBub3Qgc2V0CkNPTkZJR19CQVRU
RVJZX0RBOTE1MD15CiMgQ09ORklHX0FYUDIwWF9QT1dFUiBpcyBub3Qgc2V0CiMgQ09ORklH
X0JBVFRFUllfTUFYMTcwNDAgaXMgbm90IHNldApDT05GSUdfQkFUVEVSWV9NQVgxNzA0Mj15
CkNPTkZJR19CQVRURVJZX01BWDE3MjFYPXkKIyBDT05GSUdfQkFUVEVSWV9UV0w0MDMwX01B
REMgaXMgbm90IHNldApDT05GSUdfQ0hBUkdFUl9QQ0Y1MDYzMz15CkNPTkZJR19CQVRURVJZ
X1JYNTE9eQpDT05GSUdfQ0hBUkdFUl9NQVg4OTAzPXkKQ09ORklHX0NIQVJHRVJfVFdMNDAz
MD15CkNPTkZJR19DSEFSR0VSX0xQODcyNz15CkNPTkZJR19DSEFSR0VSX0xQODc4OD15CiMg
Q09ORklHX0NIQVJHRVJfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX01BTkFHRVI9
eQojIENPTkZJR19DSEFSR0VSX0xUMzY1MSBpcyBub3Qgc2V0CkNPTkZJR19DSEFSR0VSX0xU
QzQxNjJMPXkKQ09ORklHX0NIQVJHRVJfTUFYMTQ1Nzc9eQpDT05GSUdfQ0hBUkdFUl9ERVRF
Q1RPUl9NQVgxNDY1Nj15CkNPTkZJR19DSEFSR0VSX01BWDc3NjUwPXkKQ09ORklHX0NIQVJH
RVJfTUFYNzc2OTM9eQojIENPTkZJR19DSEFSR0VSX01BWDc3OTc2IGlzIG5vdCBzZXQKQ09O
RklHX0NIQVJHRVJfTVAyNjI5PXkKQ09ORklHX0NIQVJHRVJfTVQ2MzcwPXkKQ09ORklHX0NI
QVJHRVJfQlEyNDE1WD15CkNPTkZJR19DSEFSR0VSX0JRMjQxOTA9eQpDT05GSUdfQ0hBUkdF
Ul9CUTI0MjU3PXkKQ09ORklHX0NIQVJHRVJfQlEyNDczNT15CkNPTkZJR19DSEFSR0VSX0JR
MjUxNVg9eQpDT05GSUdfQ0hBUkdFUl9CUTI1ODkwPXkKQ09ORklHX0NIQVJHRVJfQlEyNTk4
MD15CkNPTkZJR19DSEFSR0VSX0JRMjU2WFg9eQpDT05GSUdfQ0hBUkdFUl9TTUIzNDc9eQpD
T05GSUdfQ0hBUkdFUl9UUFM2NTA5MD15CiMgQ09ORklHX0NIQVJHRVJfVFBTNjUyMTcgaXMg
bm90IHNldApDT05GSUdfQkFUVEVSWV9HQVVHRV9MVEMyOTQxPXkKQ09ORklHX0JBVFRFUllf
R09MREZJU0g9eQpDT05GSUdfQkFUVEVSWV9SVDUwMzM9eQpDT05GSUdfQ0hBUkdFUl9SVDUw
MzM9eQpDT05GSUdfQ0hBUkdFUl9SVDk0NTU9eQpDT05GSUdfQ0hBUkdFUl9SVDk0Njc9eQpD
T05GSUdfQ0hBUkdFUl9SVDk0NzE9eQpDT05GSUdfQ0hBUkdFUl9DUk9TX1VTQlBEPXkKIyBD
T05GSUdfQ0hBUkdFUl9DUk9TX1BDSEcgaXMgbm90IHNldApDT05GSUdfQ0hBUkdFUl9DUk9T
X0NPTlRST0w9eQpDT05GSUdfQ0hBUkdFUl9VQ1MxMDAyPXkKIyBDT05GSUdfQ0hBUkdFUl9C
RDk5OTU0IGlzIG5vdCBzZXQKQ09ORklHX0NIQVJHRVJfV0lMQ089eQpDT05GSUdfUk41VDYx
OF9QT1dFUj15CkNPTkZJR19CQVRURVJZX1VHMzEwNT15CiMgQ09ORklHX0ZVRUxfR0FVR0Vf
TU04MDEzIGlzIG5vdCBzZXQKQ09ORklHX0hXTU9OPXkKQ09ORklHX0hXTU9OX1ZJRD15CiMg
Q09ORklHX0hXTU9OX0RFQlVHX0NISVAgaXMgbm90IHNldAoKIwojIE5hdGl2ZSBkcml2ZXJz
CiMKQ09ORklHX1NFTlNPUlNfQUJJVFVHVVJVPXkKIyBDT05GSUdfU0VOU09SU19BQklUVUdV
UlUzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQUQ3NDE0PXkKIyBDT05GSUdfU0VOU09S
U19BRDc0MTggaXMgbm90IHNldApDT05GSUdfU0VOU09SU19BRE0xMDIxPXkKQ09ORklHX1NF
TlNPUlNfQURNMTAyNT15CkNPTkZJR19TRU5TT1JTX0FETTEwMjY9eQpDT05GSUdfU0VOU09S
U19BRE0xMDI5PXkKQ09ORklHX1NFTlNPUlNfQURNMTAzMT15CkNPTkZJR19TRU5TT1JTX0FE
TTExNzc9eQpDT05GSUdfU0VOU09SU19BRE05MjQwPXkKQ09ORklHX1NFTlNPUlNfQURUN1gx
MD15CkNPTkZJR19TRU5TT1JTX0FEVDc0MTA9eQojIENPTkZJR19TRU5TT1JTX0FEVDc0MTEg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19BRFQ3NDYyPXkKQ09ORklHX1NFTlNPUlNfQURU
NzQ3MD15CkNPTkZJR19TRU5TT1JTX0FEVDc0NzU9eQpDT05GSUdfU0VOU09SU19BSFQxMD15
CkNPTkZJR19TRU5TT1JTX0FTMzcwPXkKQ09ORklHX1NFTlNPUlNfQVNDNzYyMT15CkNPTkZJ
R19TRU5TT1JTX0FTVVNfUk9HX1JZVUpJTj15CkNPTkZJR19TRU5TT1JTX0FYSV9GQU5fQ09O
VFJPTD15CkNPTkZJR19TRU5TT1JTX0FQUExFU01DPXkKIyBDT05GSUdfU0VOU09SU19BU0Ix
MDAgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX0FUWFAxIGlzIG5vdCBzZXQKQ09ORklH
X1NFTlNPUlNfQ0hJUENBUDI9eQojIENPTkZJR19TRU5TT1JTX0NPUlNBSVJfQ1BSTyBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0NPUlNBSVJfUFNVPXkKQ09ORklHX1NFTlNPUlNfQ1JP
U19FQz15CiMgQ09ORklHX1NFTlNPUlNfRFJJVkVURU1QIGlzIG5vdCBzZXQKQ09ORklHX1NF
TlNPUlNfRFM2MjA9eQpDT05GSUdfU0VOU09SU19EUzE2MjE9eQpDT05GSUdfU0VOU09SU19E
RUxMX1NNTT15CiMgQ09ORklHX0k4SyBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfRjcx
ODA1RiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0Y3MTg4MkZHPXkKIyBDT05GSUdfU0VO
U09SU19GNzUzNzVTIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19HU0MgaXMgbm90IHNl
dApDT05GSUdfU0VOU09SU19NQzEzNzgzX0FEQz15CiMgQ09ORklHX1NFTlNPUlNfRlNDSE1E
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfR0w1MThTTT15CkNPTkZJR19TRU5TT1JTX0dM
NTIwU009eQpDT05GSUdfU0VOU09SU19HNzYwQT15CiMgQ09ORklHX1NFTlNPUlNfRzc2MiBp
cyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0dQSU9fRkFOPXkKQ09ORklHX1NFTlNPUlNfSElI
NjEzMD15CkNPTkZJR19TRU5TT1JTX0hTMzAwMT15CiMgQ09ORklHX1NFTlNPUlNfSUJNQUVN
IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19JQk1QRVggaXMgbm90IHNldApDT05GSUdf
U0VOU09SU19JSU9fSFdNT049eQpDT05GSUdfU0VOU09SU19DT1JFVEVNUD15CkNPTkZJR19T
RU5TT1JTX0lUODc9eQpDT05GSUdfU0VOU09SU19KQzQyPXkKQ09ORklHX1NFTlNPUlNfUE9X
UjEyMjA9eQpDT05GSUdfU0VOU09SU19MRU5PVk9fRUM9eQojIENPTkZJR19TRU5TT1JTX0xJ
TkVBR0UgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MVEMyOTQ1PXkKQ09ORklHX1NFTlNP
UlNfTFRDMjk0Nz15CkNPTkZJR19TRU5TT1JTX0xUQzI5NDdfSTJDPXkKIyBDT05GSUdfU0VO
U09SU19MVEMyOTkwIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTFRDMjk5MT15CkNPTkZJ
R19TRU5TT1JTX0xUQzI5OTI9eQpDT05GSUdfU0VOU09SU19MVEM0MTUxPXkKIyBDT05GSUdf
U0VOU09SU19MVEM0MjE1IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTFRDNDIyMj15CkNP
TkZJR19TRU5TT1JTX0xUQzQyNDU9eQpDT05GSUdfU0VOU09SU19MVEM0MjYwPXkKQ09ORklH
X1NFTlNPUlNfTFRDNDI2MT15CkNPTkZJR19TRU5TT1JTX0xUQzQyODI9eQpDT05GSUdfU0VO
U09SU19NQVgxMjc9eQpDT05GSUdfU0VOU09SU19NQVgxNjA2NT15CkNPTkZJR19TRU5TT1JT
X01BWDE2MTk9eQpDT05GSUdfU0VOU09SU19NQVgxNjY4PXkKQ09ORklHX1NFTlNPUlNfTUFY
MTk3PXkKIyBDT05GSUdfU0VOU09SU19NQVgzMTczMCBpcyBub3Qgc2V0CkNPTkZJR19TRU5T
T1JTX01BWDMxNzYwPXkKIyBDT05GSUdfTUFYMzE4MjcgaXMgbm90IHNldApDT05GSUdfU0VO
U09SU19NQVg2NjIwPXkKQ09ORklHX1NFTlNPUlNfTUFYNjYyMT15CkNPTkZJR19TRU5TT1JT
X01BWDY2Mzk9eQpDT05GSUdfU0VOU09SU19NQVg2NjQyPXkKQ09ORklHX1NFTlNPUlNfTUFY
NjY1MD15CkNPTkZJR19TRU5TT1JTX01BWDY2OTc9eQpDT05GSUdfU0VOU09SU19NQVgzMTc5
MD15CkNPTkZJR19TRU5TT1JTX01DMzRWUjUwMD15CkNPTkZJR19TRU5TT1JTX01DUDMwMjE9
eQojIENPTkZJR19TRU5TT1JTX01MWFJFR19GQU4gaXMgbm90IHNldApDT05GSUdfU0VOU09S
U19UQzY1ND15CkNPTkZJR19TRU5TT1JTX1RQUzIzODYxPXkKIyBDT05GSUdfU0VOU09SU19N
RU5GMjFCTUNfSFdNT04gaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01SNzUyMDMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX0xNNjMgaXMgbm90IHNldAojIENPTkZJR19TRU5T
T1JTX0xNNzMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTc1PXkKQ09ORklHX1NFTlNP
UlNfTE03Nz15CkNPTkZJR19TRU5TT1JTX0xNNzg9eQojIENPTkZJR19TRU5TT1JTX0xNODAg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTgzPXkKIyBDT05GSUdfU0VOU09SU19MTTg1
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfTE04Nz15CiMgQ09ORklHX1NFTlNPUlNfTE05
MCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0xNOTI9eQojIENPTkZJR19TRU5TT1JTX0xN
OTMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19MTTk1MjM0PXkKQ09ORklHX1NFTlNPUlNf
TE05NTI0MT15CkNPTkZJR19TRU5TT1JTX0xNOTUyNDU9eQpDT05GSUdfU0VOU09SU19QQzg3
MzYwPXkKQ09ORklHX1NFTlNPUlNfUEM4NzQyNz15CkNPTkZJR19TRU5TT1JTX05UQ19USEVS
TUlTVE9SPXkKIyBDT05GSUdfU0VOU09SU19OQ1Q2NjgzIGlzIG5vdCBzZXQKQ09ORklHX1NF
TlNPUlNfTkNUNjc3NV9DT1JFPXkKIyBDT05GSUdfU0VOU09SU19OQ1Q2Nzc1IGlzIG5vdCBz
ZXQKQ09ORklHX1NFTlNPUlNfTkNUNjc3NV9JMkM9eQpDT05GSUdfU0VOU09SU19OQ1Q3ODAy
PXkKQ09ORklHX1NFTlNPUlNfTlBDTTdYWD15CkNPTkZJR19TRU5TT1JTX09DQ19QOF9JMkM9
eQpDT05GSUdfU0VOU09SU19PQ0M9eQpDT05GSUdfU0VOU09SU19PWFA9eQpDT05GSUdfU0VO
U09SU19QQ0Y4NTkxPXkKQ09ORklHX1BNQlVTPXkKIyBDT05GSUdfU0VOU09SU19QTUJVUyBp
cyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FDQkVMX0ZTRzAzMj15CiMgQ09ORklHX1NFTlNP
UlNfQURNMTI2NiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0FETTEyNzU9eQojIENPTkZJ
R19TRU5TT1JTX0FEUDEwNTAgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19CRUxfUEZFPXkK
Q09ORklHX1NFTlNPUlNfQlBBX1JTNjAwPXkKIyBDT05GSUdfU0VOU09SU19ERUxUQV9BSEU1
MERDX0ZBTiBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0ZTUF8zWT15CiMgQ09ORklHX1NF
TlNPUlNfSUJNX0NGRlBTIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRFBTOTIwQUI9eQpD
T05GSUdfU0VOU09SU19JTlNQVVJfSVBTUFM9eQpDT05GSUdfU0VOU09SU19JUjM1MjIxPXkK
Q09ORklHX1NFTlNPUlNfSVIzNjAyMT15CiMgQ09ORklHX1NFTlNPUlNfSVIzODA2NCBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0lSUFM1NDAxPXkKQ09ORklHX1NFTlNPUlNfSVNMNjgx
Mzc9eQpDT05GSUdfU0VOU09SU19MTTI1MDY2PXkKIyBDT05GSUdfU0VOU09SU19MTTI1MDY2
X1JFR1VMQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfTFQ3MTgyUyBpcyBub3Qg
c2V0CkNPTkZJR19TRU5TT1JTX0xUQzI5Nzg9eQojIENPTkZJR19TRU5TT1JTX0xUQzI5Nzhf
UkVHVUxBVE9SIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19MVEMzODE1IGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19MVEM0Mjg2IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf
TUFYMTUzMDE9eQojIENPTkZJR19TRU5TT1JTX01BWDE2MDY0IGlzIG5vdCBzZXQKQ09ORklH
X1NFTlNPUlNfTUFYMTY2MDE9eQojIENPTkZJR19TRU5TT1JTX01BWDIwNzMwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfU0VOU09SU19NQVgyMDc1MSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JT
X01BWDMxNzg1PXkKQ09ORklHX1NFTlNPUlNfTUFYMzQ0NDA9eQojIENPTkZJR19TRU5TT1JT
X01BWDg2ODggaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JTX01QMjg1NiBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfTVAyODg4IGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19N
UDI4OTEgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19NUDI5NzU9eQojIENPTkZJR19TRU5T
T1JTX01QMjk5MyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX01QMjk3NV9SRUdVTEFUT1I9
eQojIENPTkZJR19TRU5TT1JTX01QNTAyMyBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX01Q
NTkyMD15CkNPTkZJR19TRU5TT1JTX01QNTk5MD15CkNPTkZJR19TRU5TT1JTX01QOTk0MT15
CkNPTkZJR19TRU5TT1JTX01QUTc5MzJfUkVHVUxBVE9SPXkKQ09ORklHX1NFTlNPUlNfTVBR
NzkzMj15CiMgQ09ORklHX1NFTlNPUlNfTVBRODc4NSBpcyBub3Qgc2V0CiMgQ09ORklHX1NF
TlNPUlNfUElNNDMyOCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1BMSTEyMDlCQz15CiMg
Q09ORklHX1NFTlNPUlNfUExJMTIwOUJDX1JFR1VMQVRPUiBpcyBub3Qgc2V0CiMgQ09ORklH
X1NFTlNPUlNfUE02NzY0VFIgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19QWEUxNjEwPXkK
Q09ORklHX1NFTlNPUlNfUTU0U0oxMDhBMj15CiMgQ09ORklHX1NFTlNPUlNfU1RQRERDNjAg
aXMgbm90IHNldApDT05GSUdfU0VOU09SU19UREEzODY0MD15CiMgQ09ORklHX1NFTlNPUlNf
VERBMzg2NDBfUkVHVUxBVE9SIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVFBTNDA0MjI9
eQpDT05GSUdfU0VOU09SU19UUFM1MzY3OT15CiMgQ09ORklHX1NFTlNPUlNfVFBTNTQ2RDI0
IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVUNEOTAwMD15CiMgQ09ORklHX1NFTlNPUlNf
VUNEOTIwMCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1hEUDcxMD15CkNPTkZJR19TRU5T
T1JTX1hEUEUxNTI9eQojIENPTkZJR19TRU5TT1JTX1hEUEUxMjIgaXMgbm90IHNldApDT05G
SUdfU0VOU09SU19aTDYxMDA9eQpDT05GSUdfU0VOU09SU19QVDUxNjFMPXkKQ09ORklHX1NF
TlNPUlNfUFdNX0ZBTj15CkNPTkZJR19TRU5TT1JTX1NCVFNJPXkKIyBDT05GSUdfU0VOU09S
U19TQlJNSSBpcyBub3Qgc2V0CiMgQ09ORklHX1NFTlNPUlNfU0hUMTUgaXMgbm90IHNldApD
T05GSUdfU0VOU09SU19TSFQyMT15CkNPTkZJR19TRU5TT1JTX1NIVDN4PXkKQ09ORklHX1NF
TlNPUlNfU0hUNHg9eQpDT05GSUdfU0VOU09SU19TSFRDMT15CkNPTkZJR19TRU5TT1JTX1NZ
NzYzNkE9eQpDT05GSUdfU0VOU09SU19ETUUxNzM3PXkKIyBDT05GSUdfU0VOU09SU19FTUMx
NDAzIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfRU1DMjEwMz15CiMgQ09ORklHX1NFTlNP
UlNfRU1DMjMwNSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX0VNQzZXMjAxPXkKIyBDT05G
SUdfU0VOU09SU19TTVNDNDdNMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NNU0M0N00x
OTI9eQojIENPTkZJR19TRU5TT1JTX1NNU0M0N0IzOTcgaXMgbm90IHNldApDT05GSUdfU0VO
U09SU19TVFRTNzUxPXkKIyBDT05GSUdfU0VOU09SU19BREMxMjhEODE4IGlzIG5vdCBzZXQK
Q09ORklHX1NFTlNPUlNfQURTNzgyOD15CiMgQ09ORklHX1NFTlNPUlNfQU1DNjgyMSBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX0lOQTIwOT15CkNPTkZJR19TRU5TT1JTX0lOQTJYWD15
CkNPTkZJR19TRU5TT1JTX0lOQTIzOD15CiMgQ09ORklHX1NFTlNPUlNfSU5BMzIyMSBpcyBu
b3Qgc2V0CkNPTkZJR19TRU5TT1JTX1NQRDUxMTg9eQojIENPTkZJR19TRU5TT1JTX1NQRDUx
MThfREVURUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU09SU19UQzc0IGlzIG5vdCBzZXQK
Q09ORklHX1NFTlNPUlNfVEhNQzUwPXkKQ09ORklHX1NFTlNPUlNfVE1QMTAyPXkKQ09ORklH
X1NFTlNPUlNfVE1QMTAzPXkKIyBDT05GSUdfU0VOU09SU19UTVAxMDggaXMgbm90IHNldAoj
IENPTkZJR19TRU5TT1JTX1RNUDQwMSBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1RNUDQy
MT15CiMgQ09ORklHX1NFTlNPUlNfVE1QNDY0IGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNf
VE1QNTEzPXkKIyBDT05GSUdfU0VOU09SU19WSUFfQ1BVVEVNUCBpcyBub3Qgc2V0CkNPTkZJ
R19TRU5TT1JTX1ZUMTIxMT15CiMgQ09ORklHX1NFTlNPUlNfVzgzNzczRyBpcyBub3Qgc2V0
CiMgQ09ORklHX1NFTlNPUlNfVzgzNzgxRCBpcyBub3Qgc2V0CkNPTkZJR19TRU5TT1JTX1c4
Mzc5MUQ9eQpDT05GSUdfU0VOU09SU19XODM3OTJEPXkKIyBDT05GSUdfU0VOU09SU19XODM3
OTMgaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XODM3OTU9eQpDT05GSUdfU0VOU09SU19X
ODM3OTVfRkFOQ1RSTD15CiMgQ09ORklHX1NFTlNPUlNfVzgzTDc4NVRTIGlzIG5vdCBzZXQK
IyBDT05GSUdfU0VOU09SU19XODNMNzg2TkcgaXMgbm90IHNldAojIENPTkZJR19TRU5TT1JT
X1c4MzYyN0hGIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfVzgzNjI3RUhGPXkKIyBDT05G
SUdfU0VOU09SU19XTTgzMVggaXMgbm90IHNldApDT05GSUdfU0VOU09SU19XTTgzNTA9eQpD
T05GSUdfU0VOU09SU19YR0VORT15CgojCiMgQUNQSSBkcml2ZXJzCiMKIyBDT05GSUdfU0VO
U09SU19BQ1BJX1BPV0VSIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfQVRLMDExMD15CkNP
TkZJR19TRU5TT1JTX0FTVVNfV01JPXkKQ09ORklHX1NFTlNPUlNfQVNVU19FQz15CiMgQ09O
RklHX1NFTlNPUlNfSFBfV01JIGlzIG5vdCBzZXQKQ09ORklHX1RIRVJNQUw9eQpDT05GSUdf
VEhFUk1BTF9ORVRMSU5LPXkKIyBDT05GSUdfVEhFUk1BTF9TVEFUSVNUSUNTIGlzIG5vdCBz
ZXQKQ09ORklHX1RIRVJNQUxfRU1FUkdFTkNZX1BPV0VST0ZGX0RFTEFZX01TPTAKQ09ORklH
X1RIRVJNQUxfSFdNT049eQpDT05GSUdfVEhFUk1BTF9PRj15CkNPTkZJR19USEVSTUFMX0RF
RkFVTFRfR09WX1NURVBfV0lTRT15CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfRkFJ
Ul9TSEFSRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfVVNFUl9T
UEFDRSBpcyBub3Qgc2V0CiMgQ09ORklHX1RIRVJNQUxfREVGQVVMVF9HT1ZfQkFOR19CQU5H
IGlzIG5vdCBzZXQKIyBDT05GSUdfVEhFUk1BTF9HT1ZfRkFJUl9TSEFSRSBpcyBub3Qgc2V0
CkNPTkZJR19USEVSTUFMX0dPVl9TVEVQX1dJU0U9eQpDT05GSUdfVEhFUk1BTF9HT1ZfQkFO
R19CQU5HPXkKIyBDT05GSUdfVEhFUk1BTF9HT1ZfVVNFUl9TUEFDRSBpcyBub3Qgc2V0CkNP
TkZJR19DUFVfVEhFUk1BTD15CiMgQ09ORklHX0NQVV9JRExFX1RIRVJNQUwgaXMgbm90IHNl
dApDT05GSUdfREVWRlJFUV9USEVSTUFMPXkKQ09ORklHX1RIRVJNQUxfRU1VTEFUSU9OPXkK
Q09ORklHX1RIRVJNQUxfTU1JTz15CkNPTkZJR19EQTkwNjJfVEhFUk1BTD15CgojCiMgSW50
ZWwgdGhlcm1hbCBkcml2ZXJzCiMKIyBDT05GSUdfSU5URUxfUE9XRVJDTEFNUCBpcyBub3Qg
c2V0CkNPTkZJR19YODZfVEhFUk1BTF9WRUNUT1I9eQpDT05GSUdfSU5URUxfVENDPXkKIyBD
T05GSUdfWDg2X1BLR19URU1QX1RIRVJNQUwgaXMgbm90IHNldAoKIwojIEFDUEkgSU5UMzQw
WCB0aGVybWFsIGRyaXZlcnMKIwojIGVuZCBvZiBBQ1BJIElOVDM0MFggdGhlcm1hbCBkcml2
ZXJzCgojIENPTkZJR19JTlRFTF9CWFRfUE1JQ19USEVSTUFMIGlzIG5vdCBzZXQKQ09ORklH
X0lOVEVMX1RDQ19DT09MSU5HPXkKQ09ORklHX0lOVEVMX0hGSV9USEVSTUFMPXkKIyBlbmQg
b2YgSW50ZWwgdGhlcm1hbCBkcml2ZXJzCgpDT05GSUdfR0VORVJJQ19BRENfVEhFUk1BTD15
CiMgQ09ORklHX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklHX1NTQl9QT1NTSUJMRT15CkNP
TkZJR19TU0I9eQpDT05GSUdfU1NCX1NESU9IT1NUX1BPU1NJQkxFPXkKIyBDT05GSUdfU1NC
X1NESU9IT1NUIGlzIG5vdCBzZXQKQ09ORklHX1NTQl9EUklWRVJfR1BJTz15CkNPTkZJR19C
Q01BX1BPU1NJQkxFPXkKQ09ORklHX0JDTUE9eQojIENPTkZJR19CQ01BX0hPU1RfU09DIGlz
IG5vdCBzZXQKIyBDT05GSUdfQkNNQV9EUklWRVJfR01BQ19DTU4gaXMgbm90IHNldAojIENP
TkZJR19CQ01BX0RSSVZFUl9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfQkNNQV9ERUJVRyBp
cyBub3Qgc2V0CgojCiMgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVycwojCkNPTkZJR19N
RkRfQ09SRT15CkNPTkZJR19NRkRfQUNUODk0NUE9eQpDT05GSUdfTUZEX0FTMzcxMT15CiMg
Q09ORklHX01GRF9TTVBSTyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9BUzM3MjIgaXMgbm90
IHNldApDT05GSUdfUE1JQ19BRFA1NTIwPXkKIyBDT05GSUdfTUZEX0FBVDI4NzBfQ09SRSBp
cyBub3Qgc2V0CkNPTkZJR19NRkRfQVRNRUxfRkxFWENPTT15CkNPTkZJR19NRkRfQVRNRUxf
SExDREM9eQpDT05GSUdfTUZEX0JDTTU5MFhYPXkKQ09ORklHX01GRF9CRDk1NzFNV1Y9eQpD
T05GSUdfTUZEX0FYUDIwWD15CkNPTkZJR19NRkRfQVhQMjBYX0kyQz15CkNPTkZJR19NRkRf
Q1JPU19FQ19ERVY9eQpDT05GSUdfTUZEX0NTNDJMNDM9eQojIENPTkZJR19NRkRfQ1M0Mkw0
M19JMkMgaXMgbm90IHNldApDT05GSUdfTUZEX0NTNDJMNDNfU0RXPXkKIyBDT05GSUdfTUZE
X01BREVSQSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NQVg1OTcwIGlzIG5vdCBzZXQKIyBD
T05GSUdfUE1JQ19EQTkwM1ggaXMgbm90IHNldAojIENPTkZJR19NRkRfREE5MDUyX0kyQyBp
cyBub3Qgc2V0CiMgQ09ORklHX01GRF9EQTkwNTUgaXMgbm90IHNldApDT05GSUdfTUZEX0RB
OTA2Mj15CkNPTkZJR19NRkRfREE5MDYzPXkKQ09ORklHX01GRF9EQTkxNTA9eQpDT05GSUdf
TUZEX0dBVEVXT1JLU19HU0M9eQpDT05GSUdfTUZEX01DMTNYWFg9eQpDT05GSUdfTUZEX01D
MTNYWFhfSTJDPXkKQ09ORklHX01GRF9NUDI2Mjk9eQojIENPTkZJR19NRkRfSEk2NDIxX1BN
SUMgaXMgbm90IHNldApDT05GSUdfSU5URUxfU09DX1BNSUNfQlhUV0M9eQpDT05GSUdfSU5U
RUxfU09DX1BNSUNfTVJGTEQ9eQpDT05GSUdfTUZEX0lOVEVMX0xQU1M9eQpDT05GSUdfTUZE
X0lOVEVMX0xQU1NfQUNQST15CkNPTkZJR19NRkRfSU5URUxfUE1DX0JYVD15CiMgQ09ORklH
X01GRF9JUVM2MlggaXMgbm90IHNldApDT05GSUdfTUZEX0tFTVBMRD15CkNPTkZJR19NRkRf
ODhQTTgwMD15CkNPTkZJR19NRkRfODhQTTgwNT15CiMgQ09ORklHX01GRF84OFBNODYwWCBp
cyBub3Qgc2V0CkNPTkZJR19NRkRfTUFYMTQ1Nzc9eQpDT05GSUdfTUZEX01BWDc3NTQxPXkK
IyBDT05GSUdfTUZEX01BWDc3NjIwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9NQVg3NzY1MD15
CkNPTkZJR19NRkRfTUFYNzc2ODY9eQpDT05GSUdfTUZEX01BWDc3NjkzPXkKQ09ORklHX01G
RF9NQVg3NzcxND15CkNPTkZJR19NRkRfTUFYNzc4NDM9eQpDT05GSUdfTUZEX01BWDg5MDc9
eQojIENPTkZJR19NRkRfTUFYODkyNSBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9NQVg4OTk3
IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX01BWDg5OTggaXMgbm90IHNldAojIENPTkZJR19N
RkRfTVQ2MzYwIGlzIG5vdCBzZXQKQ09ORklHX01GRF9NVDYzNzA9eQpDT05GSUdfTUZEX01U
NjM5Nz15CkNPTkZJR19NRkRfTUVORjIxQk1DPXkKQ09ORklHX01GRF9OVFhFQz15CkNPTkZJ
R19NRkRfUkVUVT15CkNPTkZJR19NRkRfUENGNTA2MzM9eQpDT05GSUdfUENGNTA2MzNfQURD
PXkKQ09ORklHX1BDRjUwNjMzX0dQSU89eQpDT05GSUdfTUZEX1NZNzYzNkE9eQpDT05GSUdf
TUZEX1JUNDgzMT15CkNPTkZJR19NRkRfUlQ1MDMzPXkKQ09ORklHX01GRF9SVDUxMjA9eQpD
T05GSUdfTUZEX1JDNVQ1ODM9eQojIENPTkZJR19NRkRfUks4WFhfSTJDIGlzIG5vdCBzZXQK
Q09ORklHX01GRF9STjVUNjE4PXkKQ09ORklHX01GRF9TRUNfQ09SRT15CkNPTkZJR19NRkRf
U0k0NzZYX0NPUkU9eQpDT05GSUdfTUZEX1NJTVBMRV9NRkRfSTJDPXkKQ09ORklHX01GRF9T
TTUwMT15CiMgQ09ORklHX01GRF9TTTUwMV9HUElPIGlzIG5vdCBzZXQKIyBDT05GSUdfTUZE
X1NLWTgxNDUyIGlzIG5vdCBzZXQKQ09ORklHX01GRF9TVE1QRT15CgojCiMgU1RNaWNyb2Vs
ZWN0cm9uaWNzIFNUTVBFIEludGVyZmFjZSBEcml2ZXJzCiMKIyBDT05GSUdfU1RNUEVfSTJD
IGlzIG5vdCBzZXQKIyBlbmQgb2YgU1RNaWNyb2VsZWN0cm9uaWNzIFNUTVBFIEludGVyZmFj
ZSBEcml2ZXJzCgpDT05GSUdfTUZEX1NZU0NPTj15CkNPTkZJR19NRkRfTFAzOTQzPXkKQ09O
RklHX01GRF9MUDg3ODg9eQpDT05GSUdfTUZEX1RJX0xNVT15CkNPTkZJR19NRkRfUEFMTUFT
PXkKQ09ORklHX1RQUzYxMDVYPXkKQ09ORklHX1RQUzY1MDEwPXkKIyBDT05GSUdfVFBTNjUw
N1ggaXMgbm90IHNldApDT05GSUdfTUZEX1RQUzY1MDg2PXkKQ09ORklHX01GRF9UUFM2NTA5
MD15CkNPTkZJR19NRkRfVFBTNjUyMTc9eQojIENPTkZJR19NRkRfVElfTFA4NzNYIGlzIG5v
dCBzZXQKQ09ORklHX01GRF9USV9MUDg3NTY1PXkKQ09ORklHX01GRF9UUFM2NTIxOD15CkNP
TkZJR19NRkRfVFBTNjUyMTk9eQpDT05GSUdfTUZEX1RQUzY1ODZYPXkKQ09ORklHX01GRF9U
UFM2NTkxMD15CkNPTkZJR19NRkRfVFBTNjU5MTI9eQpDT05GSUdfTUZEX1RQUzY1OTEyX0ky
Qz15CkNPTkZJR19NRkRfVFBTNjU5ND15CkNPTkZJR19NRkRfVFBTNjU5NF9JMkM9eQpDT05G
SUdfVFdMNDAzMF9DT1JFPXkKQ09ORklHX01GRF9UV0w0MDMwX0FVRElPPXkKIyBDT05GSUdf
VFdMNjA0MF9DT1JFIGlzIG5vdCBzZXQKQ09ORklHX01GRF9XTDEyNzNfQ09SRT15CiMgQ09O
RklHX01GRF9MTTM1MzMgaXMgbm90IHNldApDT05GSUdfTUZEX1RDMzU4OVg9eQojIENPTkZJ
R19NRkRfVFFNWDg2IGlzIG5vdCBzZXQKIyBDT05GSUdfTUZEX0xPQ0hOQUdBUiBpcyBub3Qg
c2V0CkNPTkZJR19NRkRfQVJJWk9OQT15CkNPTkZJR19NRkRfQVJJWk9OQV9JMkM9eQpDT05G
SUdfTUZEX0NTNDdMMjQ9eQpDT05GSUdfTUZEX1dNNTEwMj15CkNPTkZJR19NRkRfV001MTEw
PXkKIyBDT05GSUdfTUZEX1dNODk5NyBpcyBub3Qgc2V0CiMgQ09ORklHX01GRF9XTTg5OTgg
aXMgbm90IHNldApDT05GSUdfTUZEX1dNODQwMD15CkNPTkZJR19NRkRfV004MzFYPXkKQ09O
RklHX01GRF9XTTgzMVhfSTJDPXkKQ09ORklHX01GRF9XTTgzNTA9eQpDT05GSUdfTUZEX1dN
ODM1MF9JMkM9eQpDT05GSUdfTUZEX1dNODk5ND15CkNPTkZJR19NRkRfUk9ITV9CRDcxOFhY
PXkKQ09ORklHX01GRF9ST0hNX0JENzE4Mjg9eQpDT05GSUdfTUZEX1JPSE1fQkQ5NTdYTVVG
PXkKIyBDT05GSUdfTUZEX1NUUE1JQzEgaXMgbm90IHNldApDT05GSUdfTUZEX1NUTUZYPXkK
IyBDT05GSUdfTUZEX1dDRDkzNFggaXMgbm90IHNldAojIENPTkZJR19NRkRfQVRDMjYwWF9J
MkMgaXMgbm90IHNldApDT05GSUdfTUZEX1FDT01fUE04MDA4PXkKIyBDT05GSUdfTUZEX1JT
TVVfSTJDIGlzIG5vdCBzZXQKIyBlbmQgb2YgTXVsdGlmdW5jdGlvbiBkZXZpY2UgZHJpdmVy
cwoKQ09ORklHX1JFR1VMQVRPUj15CkNPTkZJR19SRUdVTEFUT1JfREVCVUc9eQpDT05GSUdf
UkVHVUxBVE9SX0ZJWEVEX1ZPTFRBR0U9eQojIENPTkZJR19SRUdVTEFUT1JfVklSVFVBTF9D
T05TVU1FUiBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVVNFUlNQQUNFX0NPTlNVTUVS
PXkKIyBDT05GSUdfUkVHVUxBVE9SX05FVExJTktfRVZFTlRTIGlzIG5vdCBzZXQKIyBDT05G
SUdfUkVHVUxBVE9SXzg4UEc4NlggaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SXzg4UE04
MDA9eQpDT05GSUdfUkVHVUxBVE9SX0FDVDg4NjU9eQpDT05GSUdfUkVHVUxBVE9SX0FDVDg5
NDVBPXkKIyBDT05GSUdfUkVHVUxBVE9SX0FENTM5OCBpcyBub3Qgc2V0CkNPTkZJR19SRUdV
TEFUT1JfQVMzNzExPXkKIyBDT05GSUdfUkVHVUxBVE9SX0FXMzc1MDMgaXMgbm90IHNldAoj
IENPTkZJR19SRUdVTEFUT1JfQVhQMjBYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9C
Q001OTBYWD15CkNPTkZJR19SRUdVTEFUT1JfQkQ3MTgxNT15CkNPTkZJR19SRUdVTEFUT1Jf
QkQ3MTgyOD15CiMgQ09ORklHX1JFR1VMQVRPUl9CRDcxOFhYIGlzIG5vdCBzZXQKQ09ORklH
X1JFR1VMQVRPUl9CRDk1NzFNV1Y9eQpDT05GSUdfUkVHVUxBVE9SX0JEOTU3WE1VRj15CiMg
Q09ORklHX1JFR1VMQVRPUl9DUk9TX0VDIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9S
X0RBOTA2MiBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9EQTkwNjMgaXMgbm90IHNl
dApDT05GSUdfUkVHVUxBVE9SX0RBOTEyMT15CiMgQ09ORklHX1JFR1VMQVRPUl9EQTkyMTAg
aXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX0RBOTIxMT15CkNPTkZJR19SRUdVTEFUT1Jf
RkFONTM1NTU9eQojIENPTkZJR19SRUdVTEFUT1JfRkFONTM4ODAgaXMgbm90IHNldAojIENP
TkZJR19SRUdVTEFUT1JfR1BJTyBpcyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9JU0w5
MzA1IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9JU0w2MjcxQT15CiMgQ09ORklHX1JF
R1VMQVRPUl9MTTM2M1ggaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX0xQMzk3MT15CiMg
Q09ORklHX1JFR1VMQVRPUl9MUDM5NzIgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1Jf
TFA4NzJYIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX0xQODc1NSBpcyBub3Qgc2V0
CkNPTkZJR19SRUdVTEFUT1JfTFA4NzU2NT15CkNPTkZJR19SRUdVTEFUT1JfTFA4Nzg4PXkK
Q09ORklHX1JFR1VMQVRPUl9MVEMzNTg5PXkKQ09ORklHX1JFR1VMQVRPUl9MVEMzNjc2PXkK
IyBDT05GSUdfUkVHVUxBVE9SX01BWDE0NTc3IGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRP
Ul9NQVgxNTg2PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDc3NTAzIGlzIG5vdCBzZXQKQ09O
RklHX1JFR1VMQVRPUl9NQVg3NzU0MT15CkNPTkZJR19SRUdVTEFUT1JfTUFYNzc2NTA9eQpD
T05GSUdfUkVHVUxBVE9SX01BWDc3ODU3PXkKIyBDT05GSUdfUkVHVUxBVE9SX01BWDg2NDkg
aXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01BWDg2NjA9eQpDT05GSUdfUkVHVUxBVE9S
X01BWDg4OTM9eQpDT05GSUdfUkVHVUxBVE9SX01BWDg5MDc9eQpDT05GSUdfUkVHVUxBVE9S
X01BWDg5NTI9eQpDT05GSUdfUkVHVUxBVE9SX01BWDg5NzM9eQojIENPTkZJR19SRUdVTEFU
T1JfTUFYMjAwODYgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX01BWDIwNDExPXkKQ09O
RklHX1JFR1VMQVRPUl9NQVg3NzY4Nj15CkNPTkZJR19SRUdVTEFUT1JfTUFYNzc2OTM9eQpD
T05GSUdfUkVHVUxBVE9SX01BWDc3ODAyPXkKQ09ORklHX1JFR1VMQVRPUl9NQVg3NzgyNj15
CkNPTkZJR19SRUdVTEFUT1JfTUMxM1hYWF9DT1JFPXkKQ09ORklHX1JFR1VMQVRPUl9NQzEz
NzgzPXkKIyBDT05GSUdfUkVHVUxBVE9SX01DMTM4OTIgaXMgbm90IHNldApDT05GSUdfUkVH
VUxBVE9SX01DUDE2NTAyPXkKQ09ORklHX1JFR1VMQVRPUl9NUDU0MTY9eQpDT05GSUdfUkVH
VUxBVE9SX01QODg1OT15CkNPTkZJR19SRUdVTEFUT1JfTVA4ODZYPXkKQ09ORklHX1JFR1VM
QVRPUl9NUFE3OTIwPXkKQ09ORklHX1JFR1VMQVRPUl9NVDYzMTE9eQojIENPTkZJR19SRUdV
TEFUT1JfTVQ2MzIzIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzMzE9eQpDT05G
SUdfUkVHVUxBVE9SX01UNjMzMj15CkNPTkZJR19SRUdVTEFUT1JfTVQ2MzU3PXkKQ09ORklH
X1JFR1VMQVRPUl9NVDYzNTg9eQojIENPTkZJR19SRUdVTEFUT1JfTVQ2MzU5IGlzIG5vdCBz
ZXQKQ09ORklHX1JFR1VMQVRPUl9NVDYzNzA9eQpDT05GSUdfUkVHVUxBVE9SX01UNjM5Nz15
CkNPTkZJR19SRUdVTEFUT1JfUEFMTUFTPXkKQ09ORklHX1JFR1VMQVRPUl9QQ0E5NDUwPXkK
IyBDT05GSUdfUkVHVUxBVE9SX1BDRjUwNjMzIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxB
VE9SX1BGOFgwMCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUEZVWkUxMDA9eQpDT05G
SUdfUkVHVUxBVE9SX1BWODgwNjA9eQojIENPTkZJR19SRUdVTEFUT1JfUFY4ODA4MCBpcyBu
b3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9QVjg4MDkwIGlzIG5vdCBzZXQKQ09ORklHX1JF
R1VMQVRPUl9QV009eQpDT05GSUdfUkVHVUxBVE9SX1FDT01fUE04MDA4PXkKQ09ORklHX1JF
R1VMQVRPUl9SQUEyMTUzMDA9eQpDT05GSUdfUkVHVUxBVE9SX1JBU1BCRVJSWVBJX1RPVUNI
U0NSRUVOX0FUVElOWT15CiMgQ09ORklHX1JFR1VMQVRPUl9SQzVUNTgzIGlzIG5vdCBzZXQK
Q09ORklHX1JFR1VMQVRPUl9STjVUNjE4PXkKQ09ORklHX1JFR1VMQVRPUl9ST0hNPXkKQ09O
RklHX1JFR1VMQVRPUl9SVDQ4MDE9eQpDT05GSUdfUkVHVUxBVE9SX1JUNDgwMz15CkNPTkZJ
R19SRUdVTEFUT1JfUlQ0ODMxPXkKQ09ORklHX1JFR1VMQVRPUl9SVDUwMzM9eQpDT05GSUdf
UkVHVUxBVE9SX1JUNTEyMD15CkNPTkZJR19SRUdVTEFUT1JfUlQ1MTkwQT15CkNPTkZJR19S
RUdVTEFUT1JfUlQ1NzM5PXkKIyBDT05GSUdfUkVHVUxBVE9SX1JUNTc1OSBpcyBub3Qgc2V0
CkNPTkZJR19SRUdVTEFUT1JfUlQ2MTYwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1JUNjE5MCBp
cyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfUlQ2MjQ1PXkKIyBDT05GSUdfUkVHVUxBVE9S
X1JUUTIxMzQgaXMgbm90IHNldAojIENPTkZJR19SRUdVTEFUT1JfUlRNVjIwIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUkVHVUxBVE9SX1JUUTY3NTIgaXMgbm90IHNldApDT05GSUdfUkVHVUxB
VE9SX1JUUTIyMDg9eQpDT05GSUdfUkVHVUxBVE9SX1MyTVBBMDE9eQpDT05GSUdfUkVHVUxB
VE9SX1MyTVBTMTE9eQpDT05GSUdfUkVHVUxBVE9SX1M1TTg3Njc9eQpDT05GSUdfUkVHVUxB
VE9SX1NMRzUxMDAwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1NZNzYzNkEgaXMgbm90IHNldApD
T05GSUdfUkVHVUxBVE9SX1NZODEwNkE9eQojIENPTkZJR19SRUdVTEFUT1JfU1k4ODI0WCBp
cyBub3Qgc2V0CiMgQ09ORklHX1JFR1VMQVRPUl9TWTg4MjdOIGlzIG5vdCBzZXQKIyBDT05G
SUdfUkVHVUxBVE9SX1RQUzUxNjMyIGlzIG5vdCBzZXQKIyBDT05GSUdfUkVHVUxBVE9SX1RQ
UzYxMDVYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9UUFM2MjM2MD15CiMgQ09ORklH
X1JFR1VMQVRPUl9UUFM2Mjg2WCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBTNjI4
N1g9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1MDIzPXkKIyBDT05GSUdfUkVHVUxBVE9SX1RQ
UzY1MDdYIGlzIG5vdCBzZXQKQ09ORklHX1JFR1VMQVRPUl9UUFM2NTA4Nj15CiMgQ09ORklH
X1JFR1VMQVRPUl9UUFM2NTA5MCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfVFBTNjUx
MzI9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1MjE3PXkKQ09ORklHX1JFR1VMQVRPUl9UUFM2
NTIxOD15CkNPTkZJR19SRUdVTEFUT1JfVFBTNjUyMTk9eQpDT05GSUdfUkVHVUxBVE9SX1RQ
UzY1OTQ9eQpDT05GSUdfUkVHVUxBVE9SX1RQUzY1ODZYPXkKQ09ORklHX1JFR1VMQVRPUl9U
UFM2NTkxMD15CkNPTkZJR19SRUdVTEFUT1JfVFBTNjU5MTI9eQojIENPTkZJR19SRUdVTEFU
T1JfVFBTNjg0NzAgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1RXTDQwMzA9eQojIENP
TkZJR19SRUdVTEFUT1JfVkNUUkwgaXMgbm90IHNldApDT05GSUdfUkVHVUxBVE9SX1dNODMx
WD15CkNPTkZJR19SRUdVTEFUT1JfV004MzUwPXkKIyBDT05GSUdfUkVHVUxBVE9SX1dNODQw
MCBpcyBub3Qgc2V0CkNPTkZJR19SRUdVTEFUT1JfV004OTk0PXkKQ09ORklHX1JDX0NPUkU9
eQojIENPTkZJR19CUEZfTElSQ19NT0RFMiBpcyBub3Qgc2V0CkNPTkZJR19MSVJDPXkKQ09O
RklHX1JDX01BUD15CiMgQ09ORklHX1JDX0RFQ09ERVJTIGlzIG5vdCBzZXQKQ09ORklHX1JD
X0RFVklDRVM9eQojIENPTkZJR19JUl9FTkUgaXMgbm90IHNldApDT05GSUdfSVJfRklOVEVL
PXkKQ09ORklHX0lSX0dQSU9fQ0lSPXkKQ09ORklHX0lSX0dQSU9fVFg9eQpDT05GSUdfSVJf
SElYNUhEMj15CkNPTkZJR19JUl9JVEVfQ0lSPXkKQ09ORklHX0lSX05VVk9UT049eQpDT05G
SUdfSVJfU0VSSUFMPXkKQ09ORklHX0lSX1NFUklBTF9UUkFOU01JVFRFUj15CiMgQ09ORklH
X0lSX1dJTkJPTkRfQ0lSIGlzIG5vdCBzZXQKQ09ORklHX1JDX0xPT1BCQUNLPXkKQ09ORklH
X0NFQ19DT1JFPXkKQ09ORklHX0NFQ19OT1RJRklFUj15CgojCiMgQ0VDIHN1cHBvcnQKIwpD
T05GSUdfTUVESUFfQ0VDX1JDPXkKQ09ORklHX01FRElBX0NFQ19TVVBQT1JUPXkKQ09ORklH
X0NFQ19DSDczMjI9eQojIENPTkZJR19DRUNfQ1JPU19FQyBpcyBub3Qgc2V0CiMgZW5kIG9m
IENFQyBzdXBwb3J0CgpDT05GSUdfTUVESUFfU1VQUE9SVD15CiMgQ09ORklHX01FRElBX1NV
UFBPUlRfRklMVEVSIGlzIG5vdCBzZXQKQ09ORklHX01FRElBX1NVQkRSVl9BVVRPU0VMRUNU
PXkKCiMKIyBNZWRpYSBkZXZpY2UgdHlwZXMKIwpDT05GSUdfTUVESUFfQ0FNRVJBX1NVUFBP
UlQ9eQpDT05GSUdfTUVESUFfQU5BTE9HX1RWX1NVUFBPUlQ9eQpDT05GSUdfTUVESUFfRElH
SVRBTF9UVl9TVVBQT1JUPXkKQ09ORklHX01FRElBX1JBRElPX1NVUFBPUlQ9eQpDT05GSUdf
TUVESUFfU0RSX1NVUFBPUlQ9eQpDT05GSUdfTUVESUFfUExBVEZPUk1fU1VQUE9SVD15CkNP
TkZJR19NRURJQV9URVNUX1NVUFBPUlQ9eQojIGVuZCBvZiBNZWRpYSBkZXZpY2UgdHlwZXMK
CiMKIyBNZWRpYSBjb3JlIHN1cHBvcnQKIwojIENPTkZJR19WSURFT19ERVYgaXMgbm90IHNl
dApDT05GSUdfTUVESUFfQ09OVFJPTExFUj15CkNPTkZJR19EVkJfQ09SRT15CiMgZW5kIG9m
IE1lZGlhIGNvcmUgc3VwcG9ydAoKIwojIE1lZGlhIGNvbnRyb2xsZXIgb3B0aW9ucwojCkNP
TkZJR19NRURJQV9DT05UUk9MTEVSX0RWQj15CiMgZW5kIG9mIE1lZGlhIGNvbnRyb2xsZXIg
b3B0aW9ucwoKIwojIERpZ2l0YWwgVFYgb3B0aW9ucwojCkNPTkZJR19EVkJfTUFYX0FEQVBU
RVJTPTE2CiMgQ09ORklHX0RWQl9EWU5BTUlDX01JTk9SUyBpcyBub3Qgc2V0CiMgQ09ORklH
X0RWQl9ERU1VWF9TRUNUSU9OX0xPU1NfTE9HIGlzIG5vdCBzZXQKQ09ORklHX0RWQl9VTEVf
REVCVUc9eQojIGVuZCBvZiBEaWdpdGFsIFRWIG9wdGlvbnMKCiMKIyBNZWRpYSBkcml2ZXJz
CiMKCiMKIyBNZWRpYSBkcml2ZXJzCiMKIyBDT05GSUdfTUVESUFfUExBVEZPUk1fRFJJVkVS
UyBpcyBub3Qgc2V0CgojCiMgTU1DL1NESU8gRFZCIGFkYXB0ZXJzCiMKQ09ORklHX1NNU19T
RElPX0RSVj15CiMgQ09ORklHX0RWQl9URVNUX0RSSVZFUlMgaXMgbm90IHNldApDT05GSUdf
TUVESUFfQ09NTU9OX09QVElPTlM9eQoKIwojIGNvbW1vbiBkcml2ZXIgb3B0aW9ucwojCkNP
TkZJR19TTVNfU0lBTk9fTURUVj15CkNPTkZJR19TTVNfU0lBTk9fUkM9eQojIGVuZCBvZiBN
ZWRpYSBkcml2ZXJzCgpDT05GSUdfTUVESUFfSElERV9BTkNJTExBUllfU1VCRFJWPXkKCiMK
IyBNZWRpYSBhbmNpbGxhcnkgZHJpdmVycwojCkNPTkZJR19NRURJQV9UVU5FUj15CgojCiMg
VHVuZXIgZHJpdmVycyBhdXRvLXNlbGVjdGVkIGJ5ICdBdXRvc2VsZWN0IGFuY2lsbGFyeSBk
cml2ZXJzJwojCkNPTkZJR19NRURJQV9UVU5FUl9NQzQ0UzgwMz15CkNPTkZJR19NRURJQV9U
VU5FUl9NVDIwWFg9eQpDT05GSUdfTUVESUFfVFVORVJfU0lNUExFPXkKQ09ORklHX01FRElB
X1RVTkVSX1REQTE4MjcxPXkKQ09ORklHX01FRElBX1RVTkVSX1REQTgyN1g9eQpDT05GSUdf
TUVESUFfVFVORVJfVERBODI5MD15CkNPTkZJR19NRURJQV9UVU5FUl9UREE5ODg3PXkKQ09O
RklHX01FRElBX1RVTkVSX1RFQTU3NjE9eQpDT05GSUdfTUVESUFfVFVORVJfVEVBNTc2Nz15
CkNPTkZJR19NRURJQV9UVU5FUl9YQzIwMjg9eQpDT05GSUdfTUVESUFfVFVORVJfWEM0MDAw
PXkKQ09ORklHX01FRElBX1RVTkVSX1hDNTAwMD15CgojCiMgRFZCIEZyb250ZW5kIGRyaXZl
cnMgYXV0by1zZWxlY3RlZCBieSAnQXV0b3NlbGVjdCBhbmNpbGxhcnkgZHJpdmVycycKIwoK
IwojIE11bHRpc3RhbmRhcmQgKHNhdGVsbGl0ZSkgZnJvbnRlbmRzCiMKCiMKIyBNdWx0aXN0
YW5kYXJkIChjYWJsZSArIHRlcnJlc3RyaWFsKSBmcm9udGVuZHMKIwoKIwojIERWQi1TIChz
YXRlbGxpdGUpIGZyb250ZW5kcwojCgojCiMgRFZCLVQgKHRlcnJlc3RyaWFsKSBmcm9udGVu
ZHMKIwoKIwojIERWQi1DIChjYWJsZSkgZnJvbnRlbmRzCiMKCiMKIyBBVFNDIChOb3J0aCBB
bWVyaWNhbi9Lb3JlYW4gVGVycmVzdHJpYWwvQ2FibGUgRFRWKSBmcm9udGVuZHMKIwoKIwoj
IElTREItVCAodGVycmVzdHJpYWwpIGZyb250ZW5kcwojCgojCiMgSVNEQi1TIChzYXRlbGxp
dGUpICYgSVNEQi1UICh0ZXJyZXN0cmlhbCkgZnJvbnRlbmRzCiMKCiMKIyBEaWdpdGFsIHRl
cnJlc3RyaWFsIG9ubHkgdHVuZXJzL1BMTAojCgojCiMgU0VDIGNvbnRyb2wgZGV2aWNlcyBm
b3IgRFZCLVMKIwoKIwojIENvbW1vbiBJbnRlcmZhY2UgKEVONTAyMjEpIGNvbnRyb2xsZXIg
ZHJpdmVycwojCgojCiMgVG9vbHMgdG8gZGV2ZWxvcCBuZXcgZnJvbnRlbmRzCiMKQ09ORklH
X0RWQl9EVU1NWV9GRT15CiMgZW5kIG9mIE1lZGlhIGFuY2lsbGFyeSBkcml2ZXJzCgojCiMg
R3JhcGhpY3Mgc3VwcG9ydAojCkNPTkZJR19BUEVSVFVSRV9IRUxQRVJTPXkKQ09ORklHX1ZJ
REVPPXkKIyBDT05GSUdfQVVYRElTUExBWSBpcyBub3Qgc2V0CiMgQ09ORklHX1BBTkVMIGlz
IG5vdCBzZXQKQ09ORklHX0RSTT15CkNPTkZJR19EUk1fTUlQSV9EU0k9eQojIENPTkZJR19E
Uk1fREVCVUdfTU0gaXMgbm90IHNldApDT05GSUdfRFJNX0tVTklUX1RFU1RfSEVMUEVSUz15
CkNPTkZJR19EUk1fS1VOSVRfVEVTVD15CkNPTkZJR19EUk1fS01TX0hFTFBFUj15CiMgQ09O
RklHX0RSTV9QQU5JQyBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04g
aXMgbm90IHNldAojIENPTkZJR19EUk1fTE9BRF9FRElEX0ZJUk1XQVJFIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9ESVNQTEFZX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9EUF9BVVhf
QlVTPXkKIyBDT05GSUdfRFJNX0RJU1BMQVlfRFBfQVVYX0NFQyBpcyBub3Qgc2V0CiMgQ09O
RklHX0RSTV9ESVNQTEFZX0RQX0FVWF9DSEFSREVWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9E
SVNQTEFZX0RQX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRENQX0hFTFBFUj15CkNP
TkZJR19EUk1fRElTUExBWV9IRE1JX0hFTFBFUj15CkNPTkZJR19EUk1fRElTUExBWV9IRE1J
X1NUQVRFX0hFTFBFUj15CkNPTkZJR19EUk1fRVhFQz15CkNPTkZJR19EUk1fQlVERFk9eQpD
T05GSUdfRFJNX0dFTV9ETUFfSEVMUEVSPXkKQ09ORklHX0RSTV9HRU1fU0hNRU1fSEVMUEVS
PXkKCiMKIyBJMkMgZW5jb2RlciBvciBoZWxwZXIgY2hpcHMKIwojIENPTkZJR19EUk1fSTJD
X0NINzAwNiBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9JMkNfU0lMMTY0IGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9JMkNfTlhQX1REQTk5OFg9eQpDT05GSUdfRFJNX0kyQ19OWFBfVERBOTk1
MD15CiMgZW5kIG9mIEkyQyBlbmNvZGVyIG9yIGhlbHBlciBjaGlwcwoKIwojIEFSTSBkZXZp
Y2VzCiMKQ09ORklHX0RSTV9LT01FREE9eQojIGVuZCBvZiBBUk0gZGV2aWNlcwoKQ09ORklH
X0RSTV9WR0VNPXkKIyBDT05GSUdfRFJNX1ZLTVMgaXMgbm90IHNldAojIENPTkZJR19EUk1f
VklSVElPX0dQVSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUw9eQoKIwojIERpc3BsYXkg
UGFuZWxzCiMKQ09ORklHX0RSTV9QQU5FTF9BUk1fVkVSU0FUSUxFPXkKQ09ORklHX0RSTV9Q
QU5FTF9BU1VTX1owMFRfVE01UDVfTlQzNTU5Nj15CiMgQ09ORklHX0RSTV9QQU5FTF9CT0Vf
QkYwNjBZOE1fQUowIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9CT0VfSElNQVg4Mjc5
RD15CiMgQ09ORklHX0RSTV9QQU5FTF9CT0VfVEgxMDFNQjMxVUlHMDAyXzI4QSBpcyBub3Qg
c2V0CkNPTkZJR19EUk1fUEFORUxfQk9FX1RWMTAxV1VNX05MNj15CkNPTkZJR19EUk1fUEFO
RUxfRUJCR19GVDg3MTk9eQpDT05GSUdfRFJNX1BBTkVMX0VMSURBX0tEMzVUMTMzPXkKIyBD
T05GSUdfRFJNX1BBTkVMX0ZFSVhJTl9LMTAxX0lNMkJBMDIgaXMgbm90IHNldApDT05GSUdf
RFJNX1BBTkVMX0ZFSVlBTkdfRlkwNzAyNERJMjZBMzBEPXkKIyBDT05GSUdfRFJNX1BBTkVM
X0RTSV9DTSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTFZEUz15CkNPTkZJR19EUk1f
UEFORUxfSElNQVhfSFg4MzEwMj15CkNPTkZJR19EUk1fUEFORUxfSElNQVhfSFg4MzExMkE9
eQojIENPTkZJR19EUk1fUEFORUxfSElNQVhfSFg4Mzk0IGlzIG5vdCBzZXQKQ09ORklHX0RS
TV9QQU5FTF9JTElURUtfSUxJOTgwNT15CkNPTkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4
MDZFPXkKIyBDT05GSUdfRFJNX1BBTkVMX0lMSVRFS19JTEk5ODgxQyBpcyBub3Qgc2V0CkNP
TkZJR19EUk1fUEFORUxfSUxJVEVLX0lMSTk4ODJUPXkKQ09ORklHX0RSTV9QQU5FTF9JTk5P
TFVYX1AwNzlaQ0E9eQpDT05GSUdfRFJNX1BBTkVMX0pBREFSRF9KRDkzNjVEQV9IMz15CkNP
TkZJR19EUk1fUEFORUxfSkRJX0xQTTEwMkExODhBPXkKIyBDT05GSUdfRFJNX1BBTkVMX0pE
SV9MVDA3ME1FMDUwMDAgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfSkRJX1I2MzQ1
MiBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfS0hBREFTX1RTMDUwPXkKQ09ORklHX0RS
TV9QQU5FTF9LSU5HRElTUExBWV9LRDA5N0QwND15CiMgQ09ORklHX0RSTV9QQU5FTF9MRUFE
VEVLX0xUSzA1MEgzMTQ2VyBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTEVBRFRFS19M
VEs1MDBIRDE4Mjk9eQpDT05GSUdfRFJNX1BBTkVMX0xJTkNPTE5URUNIX0xDRDE5Nz15CiMg
Q09ORklHX0RSTV9QQU5FTF9MR19TVzQzNDA4IGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5F
TF9NQU5USVhfTUxBRjA1N1dFNTE9eQpDT05GSUdfRFJNX1BBTkVMX05FV1ZJU0lPTl9OVjMw
NTFEPXkKIyBDT05GSUdfRFJNX1BBTkVMX05PVkFURUtfTlQzNTUxMCBpcyBub3Qgc2V0CkNP
TkZJR19EUk1fUEFORUxfTk9WQVRFS19OVDM1NTYwPXkKIyBDT05GSUdfRFJNX1BBTkVMX05P
VkFURUtfTlQzNTk1MCBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFORUxfTk9WQVRFS19OVDM2
NTIzPXkKQ09ORklHX0RSTV9QQU5FTF9OT1ZBVEVLX05UMzY2NzJBPXkKQ09ORklHX0RSTV9Q
QU5FTF9OT1ZBVEVLX05UMzY2NzJFPXkKQ09ORklHX0RSTV9QQU5FTF9PTElNRVhfTENEX09M
SU5VWElOTz15CiMgQ09ORklHX0RSTV9QQU5FTF9PUklTRVRFQ0hfT1RNODAwOUEgaXMgbm90
IHNldAojIENPTkZJR19EUk1fUEFORUxfT1NEX09TRDEwMVQyNTg3XzUzVFMgaXMgbm90IHNl
dAojIENPTkZJR19EUk1fUEFORUxfUEFOQVNPTklDX1ZWWDEwRjAzNE4wMCBpcyBub3Qgc2V0
CkNPTkZJR19EUk1fUEFORUxfUkFTUEJFUlJZUElfVE9VQ0hTQ1JFRU49eQpDT05GSUdfRFJN
X1BBTkVMX1JBWURJVU1fUk02NzE5MT15CkNPTkZJR19EUk1fUEFORUxfUkFZRElVTV9STTY4
MjAwPXkKQ09ORklHX0RSTV9QQU5FTF9SQVlESVVNX1JNNjkyRTU9eQojIENPTkZJR19EUk1f
UEFORUxfUkFZRElVTV9STTY5MzgwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9ST05C
T19SQjA3MEQzMD15CkNPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkU4OEEwX0FNUzQ1MkVG
MDE9eQpDT05GSUdfRFJNX1BBTkVMX1NBTVNVTkdfUzZFM0ZBNz15CiMgQ09ORklHX0RSTV9Q
QU5FTF9TQU1TVU5HX1M2RDE2RDAgaXMgbm90IHNldApDT05GSUdfRFJNX1BBTkVMX1NBTVNV
TkdfUzZEN0FBMD15CkNPTkZJR19EUk1fUEFORUxfU0FNU1VOR19TNkUzSEEyPXkKQ09ORklH
X0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzSjBYMDM9eQpDT05GSUdfRFJNX1BBTkVMX1NBTVNV
TkdfUzZFNjNNMD15CiMgQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RTYzTTBfRFNJIGlz
IG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9TQU1TVU5HX1M2RThBQTA9eQojIENPTkZJR19E
Uk1fUEFORUxfU0FNU1VOR19TT0ZFRjAwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9T
RUlLT180M1dWRjFHPXkKQ09ORklHX0RSTV9QQU5FTF9TSEFSUF9MUTEwMVIxU1gwMT15CkNP
TkZJR19EUk1fUEFORUxfU0hBUlBfTFMwMzdWN0RXMDE9eQojIENPTkZJR19EUk1fUEFORUxf
U0hBUlBfTFMwNDNUMUxFMDEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfU0hBUlBf
TFMwNjBUMVNYMDEgaXMgbm90IHNldAojIENPTkZJR19EUk1fUEFORUxfU0lUUk9OSVhfU1Q3
NzAxIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9QQU5FTF9TSVRST05JWF9TVDc3MDM9eQojIENP
TkZJR19EUk1fUEFORUxfU09OWV9URDQzNTNfSkRJIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJN
X1BBTkVMX1NPTllfVFVMSVBfVFJVTFlfTlQzNTUyMSBpcyBub3Qgc2V0CkNPTkZJR19EUk1f
UEFORUxfU1RBUlRFS19LRDA3MEZIRklEMDE1PXkKQ09ORklHX0RSTV9QQU5FTF9TWU5BUFRJ
Q1NfUjYzMzUzPXkKQ09ORklHX0RSTV9QQU5FTF9URE9fVEwwNzBXU0gzMD15CkNPTkZJR19E
Uk1fUEFORUxfVFJVTFlfTlQzNTU5N19XUVhHQT15CkNPTkZJR19EUk1fUEFORUxfVklTSU9O
T1hfUjY2NDUxPXkKQ09ORklHX0RSTV9QQU5FTF9WSVNJT05PWF9STTY5Mjk5PXkKQ09ORklH
X0RSTV9QQU5FTF9WSVNJT05PWF9WVERSNjEzMD15CkNPTkZJR19EUk1fUEFORUxfWElOUEVO
R19YUFAwNTVDMjcyPXkKIyBlbmQgb2YgRGlzcGxheSBQYW5lbHMKCkNPTkZJR19EUk1fQlJJ
REdFPXkKQ09ORklHX0RSTV9QQU5FTF9CUklER0U9eQoKIwojIERpc3BsYXkgSW50ZXJmYWNl
IEJyaWRnZXMKIwpDT05GSUdfRFJNX0NISVBPTkVfSUNONjIxMT15CiMgQ09ORklHX0RSTV9D
SFJPTlRFTF9DSDcwMzMgaXMgbm90IHNldAojIENPTkZJR19EUk1fQ1JPU19FQ19BTlg3Njg4
IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0RJU1BMQVlfQ09OTkVDVE9SIGlzIG5vdCBzZXQK
Q09ORklHX0RSTV9JVEVfSVQ2NTA1PXkKIyBDT05GSUdfRFJNX0xPTlRJVU1fTFQ4OTEyQiBp
cyBub3Qgc2V0CkNPTkZJR19EUk1fTE9OVElVTV9MVDkyMTE9eQojIENPTkZJR19EUk1fTE9O
VElVTV9MVDk2MTEgaXMgbm90IHNldApDT05GSUdfRFJNX0xPTlRJVU1fTFQ5NjExVVhDPXkK
IyBDT05GSUdfRFJNX0lURV9JVDY2MTIxIGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX0xWRFNf
Q09ERUMgaXMgbm90IHNldApDT05GSUdfRFJNX01FR0FDSElQU19TVERQWFhYWF9HRV9CODUw
VjNfRlc9eQpDT05GSUdfRFJNX05XTF9NSVBJX0RTST15CiMgQ09ORklHX0RSTV9OWFBfUFRO
MzQ2MCBpcyBub3Qgc2V0CkNPTkZJR19EUk1fUEFSQURFX1BTODYyMj15CiMgQ09ORklHX0RS
TV9QQVJBREVfUFM4NjQwIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9TQU1TVU5HX0RTSU09eQpD
T05GSUdfRFJNX1NJTF9TSUk4NjIwPXkKQ09ORklHX0RSTV9TSUk5MDJYPXkKIyBDT05GSUdf
RFJNX1NJSTkyMzQgaXMgbm90IHNldApDT05GSUdfRFJNX1NJTVBMRV9CUklER0U9eQpDT05G
SUdfRFJNX1RISU5FX1RIQzYzTFZEMTAyND15CkNPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2
Mj15CkNPTkZJR19EUk1fVE9TSElCQV9UQzM1ODc2ND15CkNPTkZJR19EUk1fVE9TSElCQV9U
QzM1ODc2Nz15CiMgQ09ORklHX0RSTV9UT1NISUJBX1RDMzU4NzY4IGlzIG5vdCBzZXQKQ09O
RklHX0RSTV9UT1NISUJBX1RDMzU4Nzc1PXkKQ09ORklHX0RSTV9USV9ETFBDMzQzMz15CkNP
TkZJR19EUk1fVElfVEZQNDEwPXkKQ09ORklHX0RSTV9USV9TTjY1RFNJODM9eQojIENPTkZJ
R19EUk1fVElfU042NURTSTg2IGlzIG5vdCBzZXQKIyBDT05GSUdfRFJNX1RJX1RQRDEyUzAx
NSBpcyBub3Qgc2V0CiMgQ09ORklHX0RSTV9BTkFMT0dJWF9BTlg2MzQ1IGlzIG5vdCBzZXQK
IyBDT05GSUdfRFJNX0FOQUxPR0lYX0FOWDc4WFggaXMgbm90IHNldAojIENPTkZJR19EUk1f
QU5BTE9HSVhfQU5YNzYyNSBpcyBub3Qgc2V0CkNPTkZJR19EUk1fSTJDX0FEVjc1MTE9eQoj
IENPTkZJR19EUk1fSTJDX0FEVjc1MTFfQ0VDIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9DRE5T
X0RTST15CkNPTkZJR19EUk1fQ0ROU19EU0lfSjcyMUU9eQojIENPTkZJR19EUk1fQ0ROU19N
SERQODU0NiBpcyBub3Qgc2V0CiMgZW5kIG9mIERpc3BsYXkgSW50ZXJmYWNlIEJyaWRnZXMK
CiMgQ09ORklHX0RSTV9FVE5BVklWIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9MT0dJQ1ZDPXkK
Q09ORklHX0RSTV9BUkNQR1U9eQpDT05GSUdfRFJNX1NJTVBMRURSTT15CiMgQ09ORklHX0RS
TV9TU0QxMzBYIGlzIG5vdCBzZXQKQ09ORklHX0RSTV9MSUJfUkFORE9NPXkKQ09ORklHX0RS
TV9QUklWQUNZX1NDUkVFTj15CkNPTkZJR19EUk1fUEFORUxfT1JJRU5UQVRJT05fUVVJUktT
PXkKCiMKIyBGcmFtZSBidWZmZXIgRGV2aWNlcwojCiMgQ09ORklHX0ZCIGlzIG5vdCBzZXQK
IyBlbmQgb2YgRnJhbWUgYnVmZmVyIERldmljZXMKCiMKIyBCYWNrbGlnaHQgJiBMQ0QgZGV2
aWNlIHN1cHBvcnQKIwpDT05GSUdfTENEX0NMQVNTX0RFVklDRT15CkNPTkZJR19MQ0RfUExB
VEZPUk09eQpDT05GSUdfQkFDS0xJR0hUX0NMQVNTX0RFVklDRT15CkNPTkZJR19CQUNLTElH
SFRfS1REMjUzPXkKIyBDT05GSUdfQkFDS0xJR0hUX0tURDI4MDEgaXMgbm90IHNldApDT05G
SUdfQkFDS0xJR0hUX0tUWjg4NjY9eQpDT05GSUdfQkFDS0xJR0hUX1BXTT15CkNPTkZJR19C
QUNLTElHSFRfTVQ2MzcwPXkKIyBDT05GSUdfQkFDS0xJR0hUX0FQUExFIGlzIG5vdCBzZXQK
IyBDT05GSUdfQkFDS0xJR0hUX1FDT01fV0xFRCBpcyBub3Qgc2V0CiMgQ09ORklHX0JBQ0tM
SUdIVF9SVDQ4MzEgaXMgbm90IHNldAojIENPTkZJR19CQUNLTElHSFRfU0FIQVJBIGlzIG5v
dCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX1dNODMxWCBpcyBub3Qgc2V0CkNPTkZJR19CQUNL
TElHSFRfQURQNTUyMD15CkNPTkZJR19CQUNLTElHSFRfQURQODg2MD15CiMgQ09ORklHX0JB
Q0tMSUdIVF9BRFA4ODcwIGlzIG5vdCBzZXQKIyBDT05GSUdfQkFDS0xJR0hUX1BDRjUwNjMz
IGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9MTTM1MDk9eQpDT05GSUdfQkFDS0xJR0hU
X0xNMzYzMEE9eQpDT05GSUdfQkFDS0xJR0hUX0xNMzYzOT15CiMgQ09ORklHX0JBQ0tMSUdI
VF9MUDg1NVggaXMgbm90IHNldApDT05GSUdfQkFDS0xJR0hUX0xQODc4OD15CiMgQ09ORklH
X0JBQ0tMSUdIVF9NUDMzMDlDIGlzIG5vdCBzZXQKQ09ORklHX0JBQ0tMSUdIVF9QQU5ET1JB
PXkKIyBDT05GSUdfQkFDS0xJR0hUX1RQUzY1MjE3IGlzIG5vdCBzZXQKIyBDT05GSUdfQkFD
S0xJR0hUX0FTMzcxMSBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfR1BJTz15CiMgQ09O
RklHX0JBQ0tMSUdIVF9MVjUyMDdMUCBpcyBub3Qgc2V0CkNPTkZJR19CQUNLTElHSFRfQkQ2
MTA3PXkKIyBDT05GSUdfQkFDS0xJR0hUX0FSQ1hDTk4gaXMgbm90IHNldApDT05GSUdfQkFD
S0xJR0hUX0xFRD15CiMgZW5kIG9mIEJhY2tsaWdodCAmIExDRCBkZXZpY2Ugc3VwcG9ydAoK
Q09ORklHX1ZJREVPTU9ERV9IRUxQRVJTPXkKQ09ORklHX0hETUk9eQoKIwojIENvbnNvbGUg
ZGlzcGxheSBkcml2ZXIgc3VwcG9ydAojCkNPTkZJR19WR0FfQ09OU09MRT15CiMgQ09ORklH
X01EQV9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX0RVTU1ZX0NPTlNPTEU9eQpDT05GSUdf
RFVNTVlfQ09OU09MRV9DT0xVTU5TPTgwCkNPTkZJR19EVU1NWV9DT05TT0xFX1JPV1M9MjUK
IyBlbmQgb2YgQ29uc29sZSBkaXNwbGF5IGRyaXZlciBzdXBwb3J0CiMgZW5kIG9mIEdyYXBo
aWNzIHN1cHBvcnQKCkNPTkZJR19EUk1fQUNDRUw9eQojIENPTkZJR19TT1VORCBpcyBub3Qg
c2V0CkNPTkZJR19ISURfU1VQUE9SVD15CkNPTkZJR19ISUQ9eQpDT05GSUdfSElEX0JBVFRF
UllfU1RSRU5HVEg9eQpDT05GSUdfSElEUkFXPXkKQ09ORklHX1VISUQ9eQpDT05GSUdfSElE
X0dFTkVSSUM9eQoKIwojIFNwZWNpYWwgSElEIGRyaXZlcnMKIwpDT05GSUdfSElEX0E0VEVD
SD15CkNPTkZJR19ISURfQUNSVVg9eQpDT05GSUdfSElEX0FDUlVYX0ZGPXkKQ09ORklHX0hJ
RF9BUFBMRT15CkNPTkZJR19ISURfQVVSRUFMPXkKIyBDT05GSUdfSElEX0JFTEtJTiBpcyBu
b3Qgc2V0CiMgQ09ORklHX0hJRF9DSEVSUlkgaXMgbm90IHNldApDT05GSUdfSElEX0NPVUdB
Uj15CkNPTkZJR19ISURfTUFDQUxMWT15CkNPTkZJR19ISURfQ01FRElBPXkKQ09ORklHX0hJ
RF9DWVBSRVNTPXkKQ09ORklHX0hJRF9EUkFHT05SSVNFPXkKQ09ORklHX0RSQUdPTlJJU0Vf
RkY9eQojIENPTkZJR19ISURfRU1TX0ZGIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9FTEVDT009
eQojIENPTkZJR19ISURfRVZJU0lPTiBpcyBub3Qgc2V0CkNPTkZJR19ISURfRVpLRVk9eQpD
T05GSUdfSElEX0dFTUJJUkQ9eQpDT05GSUdfSElEX0dGUk09eQpDT05GSUdfSElEX0dMT1JJ
T1VTPXkKQ09ORklHX0hJRF9WSVZBTERJX0NPTU1PTj15CkNPTkZJR19ISURfR09PR0xFX1NU
QURJQV9GRj15CkNPTkZJR19ISURfVklWQUxEST15CkNPTkZJR19ISURfS0VZVE9VQ0g9eQoj
IENPTkZJR19ISURfS1lFIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9XQUxUT1A9eQojIENPTkZJ
R19ISURfVklFV1NPTklDIGlzIG5vdCBzZXQKIyBDT05GSUdfSElEX1ZSQzIgaXMgbm90IHNl
dApDT05GSUdfSElEX1hJQU9NST15CkNPTkZJR19ISURfR1lSQVRJT049eQpDT05GSUdfSElE
X0lDQURFPXkKQ09ORklHX0hJRF9JVEU9eQpDT05GSUdfSElEX0pBQlJBPXkKQ09ORklHX0hJ
RF9UV0lOSEFOPXkKIyBDT05GSUdfSElEX0tFTlNJTkdUT04gaXMgbm90IHNldAojIENPTkZJ
R19ISURfTENQT1dFUiBpcyBub3Qgc2V0CkNPTkZJR19ISURfTEVEPXkKQ09ORklHX0hJRF9M
RU5PVk89eQpDT05GSUdfSElEX01BR0lDTU9VU0U9eQpDT05GSUdfSElEX01BTFRST049eQpD
T05GSUdfSElEX01BWUZMQVNIPXkKIyBDT05GSUdfSElEX1JFRFJBR09OIGlzIG5vdCBzZXQK
Q09ORklHX0hJRF9NSUNST1NPRlQ9eQpDT05GSUdfSElEX01PTlRFUkVZPXkKQ09ORklHX0hJ
RF9NVUxUSVRPVUNIPXkKIyBDT05GSUdfSElEX05JTlRFTkRPIGlzIG5vdCBzZXQKIyBDT05G
SUdfSElEX05USSBpcyBub3Qgc2V0CkNPTkZJR19ISURfT1JURUs9eQojIENPTkZJR19ISURf
UEFOVEhFUkxPUkQgaXMgbm90IHNldApDT05GSUdfSElEX1BFVEFMWU5YPXkKQ09ORklHX0hJ
RF9QSUNPTENEPXkKQ09ORklHX0hJRF9QSUNPTENEX0JBQ0tMSUdIVD15CkNPTkZJR19ISURf
UElDT0xDRF9MQ0Q9eQpDT05GSUdfSElEX1BJQ09MQ0RfTEVEUz15CkNPTkZJR19ISURfUElD
T0xDRF9DSVI9eQojIENPTkZJR19ISURfUExBTlRST05JQ1MgaXMgbm90IHNldAojIENPTkZJ
R19ISURfUExBWVNUQVRJT04gaXMgbm90IHNldApDT05GSUdfSElEX1BYUkM9eQojIENPTkZJ
R19ISURfUkFaRVIgaXMgbm90IHNldApDT05GSUdfSElEX1BSSU1BWD15CiMgQ09ORklHX0hJ
RF9TQUlURUsgaXMgbm90IHNldApDT05GSUdfSElEX1NFTUlURUs9eQpDT05GSUdfSElEX1NQ
RUVETElOSz15CiMgQ09ORklHX0hJRF9TVEVBTSBpcyBub3Qgc2V0CkNPTkZJR19ISURfU1VO
UExVUz15CkNPTkZJR19ISURfUk1JPXkKIyBDT05GSUdfSElEX0dSRUVOQVNJQSBpcyBub3Qg
c2V0CkNPTkZJR19ISURfU01BUlRKT1lQTFVTPXkKIyBDT05GSUdfU01BUlRKT1lQTFVTX0ZG
IGlzIG5vdCBzZXQKQ09ORklHX0hJRF9USVZPPXkKIyBDT05GSUdfSElEX1RPUFNFRUQgaXMg
bm90IHNldAojIENPTkZJR19ISURfVE9QUkUgaXMgbm90IHNldAojIENPTkZJR19ISURfVEhJ
TkdNIGlzIG5vdCBzZXQKQ09ORklHX0hJRF9VRFJBV19QUzM9eQpDT05GSUdfSElEX1dJSU1P
VEU9eQojIENPTkZJR19ISURfWElOTU8gaXMgbm90IHNldApDT05GSUdfSElEX1pFUk9QTFVT
PXkKIyBDT05GSUdfWkVST1BMVVNfRkYgaXMgbm90IHNldApDT05GSUdfSElEX1pZREFDUk9O
PXkKIyBDT05GSUdfSElEX1NFTlNPUl9IVUIgaXMgbm90IHNldApDT05GSUdfSElEX0FMUFM9
eQojIGVuZCBvZiBTcGVjaWFsIEhJRCBkcml2ZXJzCgojCiMgSElELUJQRiBzdXBwb3J0CiMK
IyBlbmQgb2YgSElELUJQRiBzdXBwb3J0CgpDT05GSUdfSTJDX0hJRD15CkNPTkZJR19JMkNf
SElEX0FDUEk9eQojIENPTkZJR19JMkNfSElEX09GIGlzIG5vdCBzZXQKIyBDT05GSUdfSTJD
X0hJRF9PRl9FTEFOIGlzIG5vdCBzZXQKQ09ORklHX0kyQ19ISURfT0ZfR09PRElYPXkKQ09O
RklHX0kyQ19ISURfQ09SRT15CkNPTkZJR19VU0JfT0hDSV9MSVRUTEVfRU5ESUFOPXkKIyBD
T05GSUdfVVNCX1NVUFBPUlQgaXMgbm90IHNldApDT05GSUdfTU1DPXkKIyBDT05GSUdfUFdS
U0VRX0VNTUMgaXMgbm90IHNldAojIENPTkZJR19QV1JTRVFfU0lNUExFIGlzIG5vdCBzZXQK
Q09ORklHX01NQ19CTE9DSz15CkNPTkZJR19NTUNfQkxPQ0tfTUlOT1JTPTgKQ09ORklHX1NE
SU9fVUFSVD15CkNPTkZJR19NTUNfVEVTVD15CiMgQ09ORklHX01NQ19DUllQVE8gaXMgbm90
IHNldAoKIwojIE1NQy9TRC9TRElPIEhvc3QgQ29udHJvbGxlciBEcml2ZXJzCiMKIyBDT05G
SUdfTU1DX0RFQlVHIGlzIG5vdCBzZXQKIyBDT05GSUdfTU1DX1NESENJIGlzIG5vdCBzZXQK
Q09ORklHX01NQ19XQlNEPXkKQ09ORklHX01NQ19VU0RISTZST0wwPXkKQ09ORklHX01NQ19D
UUhDST15CkNPTkZJR19NTUNfSFNRPXkKQ09ORklHX01NQ19NVEs9eQpDT05GSUdfTU1DX0xJ
VEVYPXkKIyBDT05GSUdfU0NTSV9VRlNIQ0QgaXMgbm90IHNldApDT05GSUdfTUVNU1RJQ0s9
eQojIENPTkZJR19NRU1TVElDS19ERUJVRyBpcyBub3Qgc2V0CgojCiMgTWVtb3J5U3RpY2sg
ZHJpdmVycwojCiMgQ09ORklHX01FTVNUSUNLX1VOU0FGRV9SRVNVTUUgaXMgbm90IHNldAoj
IENPTkZJR19NU1BST19CTE9DSyBpcyBub3Qgc2V0CkNPTkZJR19NU19CTE9DSz15CgojCiMg
TWVtb3J5U3RpY2sgSG9zdCBDb250cm9sbGVyIERyaXZlcnMKIwpDT05GSUdfTkVXX0xFRFM9
eQpDT05GSUdfTEVEU19DTEFTUz15CiMgQ09ORklHX0xFRFNfQ0xBU1NfRkxBU0ggaXMgbm90
IHNldApDT05GSUdfTEVEU19DTEFTU19NVUxUSUNPTE9SPXkKIyBDT05GSUdfTEVEU19CUklH
SFRORVNTX0hXX0NIQU5HRUQgaXMgbm90IHNldAoKIwojIExFRCBkcml2ZXJzCiMKQ09ORklH
X0xFRFNfQU4zMDI1OUE9eQojIENPTkZJR19MRURTX0FQVSBpcyBub3Qgc2V0CkNPTkZJR19M
RURTX0FXMjAwWFg9eQpDT05GSUdfTEVEU19BVzIwMTM9eQpDT05GSUdfTEVEU19CQ002MzI4
PXkKQ09ORklHX0xFRFNfQkNNNjM1OD15CkNPTkZJR19MRURTX0NST1NfRUM9eQpDT05GSUdf
TEVEU19MTTM1MzA9eQpDT05GSUdfTEVEU19MTTM1MzI9eQpDT05GSUdfTEVEU19MTTM2NDI9
eQojIENPTkZJR19MRURTX0xNMzY5MlggaXMgbm90IHNldApDT05GSUdfTEVEU19NVDYzMjM9
eQpDT05GSUdfTEVEU19QQ0E5NTMyPXkKQ09ORklHX0xFRFNfUENBOTUzMl9HUElPPXkKQ09O
RklHX0xFRFNfR1BJTz15CkNPTkZJR19MRURTX0xQMzk0ND15CkNPTkZJR19MRURTX0xQMzk1
Mj15CkNPTkZJR19MRURTX0xQNTBYWD15CkNPTkZJR19MRURTX0xQNTVYWF9DT01NT049eQpD
T05GSUdfTEVEU19MUDU1MjE9eQpDT05GSUdfTEVEU19MUDU1MjM9eQojIENPTkZJR19MRURT
X0xQNTU2MiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTFA1NTY5IGlzIG5vdCBzZXQKQ09O
RklHX0xFRFNfTFA4NTAxPXkKIyBDT05GSUdfTEVEU19MUDg3ODggaXMgbm90IHNldApDT05G
SUdfTEVEU19MUDg4NjA9eQpDT05GSUdfTEVEU19QQ0E5NTVYPXkKQ09ORklHX0xFRFNfUENB
OTU1WF9HUElPPXkKIyBDT05GSUdfTEVEU19QQ0E5NjNYIGlzIG5vdCBzZXQKIyBDT05GSUdf
TEVEU19QQ0E5OTVYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19XTTgzMVhfU1RBVFVTIGlz
IG5vdCBzZXQKQ09ORklHX0xFRFNfV004MzUwPXkKQ09ORklHX0xFRFNfUFdNPXkKQ09ORklH
X0xFRFNfUkVHVUxBVE9SPXkKIyBDT05GSUdfTEVEU19CRDI2MDZNVlYgaXMgbm90IHNldAoj
IENPTkZJR19MRURTX0JEMjgwMiBpcyBub3Qgc2V0CiMgQ09ORklHX0xFRFNfTFQzNTkzIGlz
IG5vdCBzZXQKQ09ORklHX0xFRFNfQURQNTUyMD15CkNPTkZJR19MRURTX01DMTM3ODM9eQpD
T05GSUdfTEVEU19UQ0E2NTA3PXkKIyBDT05GSUdfTEVEU19UTEM1OTFYWCBpcyBub3Qgc2V0
CkNPTkZJR19MRURTX01BWDc3NjUwPXkKQ09ORklHX0xFRFNfTE0zNTV4PXkKIyBDT05GSUdf
TEVEU19PVDIwMCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX01FTkYyMUJNQz15CiMgQ09ORklH
X0xFRFNfSVMzMUZMMzE5WCBpcyBub3Qgc2V0CkNPTkZJR19MRURTX0lTMzFGTDMyWFg9eQoK
IwojIExFRCBkcml2ZXIgZm9yIGJsaW5rKDEpIFVTQiBSR0IgTEVEIGlzIHVuZGVyIFNwZWNp
YWwgSElEIGRyaXZlcnMgKEhJRF9USElOR00pCiMKQ09ORklHX0xFRFNfQkxJTktNPXkKQ09O
RklHX0xFRFNfU1lTQ09OPXkKIyBDT05GSUdfTEVEU19NTFhDUExEIGlzIG5vdCBzZXQKQ09O
RklHX0xFRFNfTUxYUkVHPXkKIyBDT05GSUdfTEVEU19VU0VSIGlzIG5vdCBzZXQKIyBDT05G
SUdfTEVEU19OSUM3OEJYIGlzIG5vdCBzZXQKIyBDT05GSUdfTEVEU19MTTM2OTcgaXMgbm90
IHNldAojIENPTkZJR19MRURTX0xNMzYyNzQgaXMgbm90IHNldApDT05GSUdfTEVEU19UUFM2
MTA1WD15CiMgQ09ORklHX0xFRFNfTEdNIGlzIG5vdCBzZXQKCiMKIyBGbGFzaCBhbmQgVG9y
Y2ggTEVEIGRyaXZlcnMKIwoKIwojIFJHQiBMRUQgZHJpdmVycwojCiMgQ09ORklHX0xFRFNf
R1JPVVBfTVVMVElDT0xPUiBpcyBub3Qgc2V0CkNPTkZJR19MRURTX0tURDIwMlg9eQojIENP
TkZJR19MRURTX05DUDU2MjMgaXMgbm90IHNldApDT05GSUdfTEVEU19QV01fTVVMVElDT0xP
Uj15CiMgQ09ORklHX0xFRFNfTVQ2MzcwX1JHQiBpcyBub3Qgc2V0CgojCiMgTEVEIFRyaWdn
ZXJzCiMKQ09ORklHX0xFRFNfVFJJR0dFUlM9eQpDT05GSUdfTEVEU19UUklHR0VSX1RJTUVS
PXkKQ09ORklHX0xFRFNfVFJJR0dFUl9PTkVTSE9UPXkKIyBDT05GSUdfTEVEU19UUklHR0VS
X0RJU0sgaXMgbm90IHNldAojIENPTkZJR19MRURTX1RSSUdHRVJfTVREIGlzIG5vdCBzZXQK
IyBDT05GSUdfTEVEU19UUklHR0VSX0hFQVJUQkVBVCBpcyBub3Qgc2V0CiMgQ09ORklHX0xF
RFNfVFJJR0dFUl9CQUNLTElHSFQgaXMgbm90IHNldApDT05GSUdfTEVEU19UUklHR0VSX0NQ
VT15CkNPTkZJR19MRURTX1RSSUdHRVJfQUNUSVZJVFk9eQpDT05GSUdfTEVEU19UUklHR0VS
X0dQSU89eQpDT05GSUdfTEVEU19UUklHR0VSX0RFRkFVTFRfT049eQoKIwojIGlwdGFibGVz
IHRyaWdnZXIgaXMgdW5kZXIgTmV0ZmlsdGVyIGNvbmZpZyAoTEVEIHRhcmdldCkKIwpDT05G
SUdfTEVEU19UUklHR0VSX1RSQU5TSUVOVD15CkNPTkZJR19MRURTX1RSSUdHRVJfQ0FNRVJB
PXkKQ09ORklHX0xFRFNfVFJJR0dFUl9QQU5JQz15CkNPTkZJR19MRURTX1RSSUdHRVJfTkVU
REVWPXkKIyBDT05GSUdfTEVEU19UUklHR0VSX1BBVFRFUk4gaXMgbm90IHNldApDT05GSUdf
TEVEU19UUklHR0VSX1RUWT15CkNPTkZJR19MRURTX1RSSUdHRVJfSU5QVVRfRVZFTlRTPXkK
CiMKIyBTaW1wbGUgTEVEIGRyaXZlcnMKIwpDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNf
SVBDPXkKIyBDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0FQT0xMT0xBS0UgaXMg
bm90IHNldApDT05GSUdfTEVEU19TSUVNRU5TX1NJTUFUSUNfSVBDX0Y3MTg4WD15CkNPTkZJ
R19BQ0NFU1NJQklMSVRZPXkKQ09ORklHX0ExMVlfQlJBSUxMRV9DT05TT0xFPXkKCiMKIyBT
cGVha3VwIGNvbnNvbGUgc3BlZWNoCiMKIyBDT05GSUdfU1BFQUtVUCBpcyBub3Qgc2V0CiMg
ZW5kIG9mIFNwZWFrdXAgY29uc29sZSBzcGVlY2gKCkNPTkZJR19FREFDX0FUT01JQ19TQ1JV
Qj15CkNPTkZJR19FREFDX1NVUFBPUlQ9eQpDT05GSUdfUlRDX0xJQj15CkNPTkZJR19SVENf
TUMxNDY4MThfTElCPXkKQ09ORklHX1JUQ19DTEFTUz15CkNPTkZJR19SVENfSENUT1NZUz15
CkNPTkZJR19SVENfSENUT1NZU19ERVZJQ0U9InJ0YzAiCiMgQ09ORklHX1JUQ19TWVNUT0hD
IGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19M
SUJfS1VOSVRfVEVTVD15CiMgQ09ORklHX1JUQ19OVk1FTSBpcyBub3Qgc2V0CgojCiMgUlRD
IGludGVyZmFjZXMKIwpDT05GSUdfUlRDX0lOVEZfU1lTRlM9eQpDT05GSUdfUlRDX0lOVEZf
UFJPQz15CiMgQ09ORklHX1JUQ19JTlRGX0RFViBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJW
X1RFU1Q9eQoKIwojIEkyQyBSVEMgZHJpdmVycwojCiMgQ09ORklHX1JUQ19EUlZfODhQTTgw
WCBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0FCQjVaRVMzPXkKQ09ORklHX1JUQ19EUlZf
QUJFT1o5PXkKQ09ORklHX1JUQ19EUlZfQUJYODBYPXkKIyBDT05GSUdfUlRDX0RSVl9EUzEz
MDcgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0RTMTM3NCBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRFMxNjcyIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9IWU04NTYz
IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTFA4Nzg4PXkKIyBDT05GSUdfUlRDX0RSVl9N
QVg2OTAwIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfTUFYODkwNz15CkNPTkZJR19SVENf
RFJWX01BWDMxMzM1PXkKQ09ORklHX1JUQ19EUlZfTUFYNzc2ODY9eQpDT05GSUdfUlRDX0RS
Vl9OQ1QzMDE4WT15CkNPTkZJR19SVENfRFJWX1JTNUMzNzI9eQpDT05GSUdfUlRDX0RSVl9J
U0wxMjA4PXkKQ09ORklHX1JUQ19EUlZfSVNMMTIwMjI9eQpDT05GSUdfUlRDX0RSVl9JU0wx
MjAyNj15CiMgQ09ORklHX1JUQ19EUlZfWDEyMDUgaXMgbm90IHNldApDT05GSUdfUlRDX0RS
Vl9QQ0Y4NTIzPXkKQ09ORklHX1JUQ19EUlZfUENGODUwNjM9eQojIENPTkZJR19SVENfRFJW
X1BDRjg1MzYzIGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfUENGODU2Mz15CiMgQ09ORklH
X1JUQ19EUlZfUENGODU4MyBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfTTQxVDgwIGlz
IG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfQkQ3MDUyOD15CkNPTkZJR19SVENfRFJWX0JRMzJL
PXkKQ09ORklHX1JUQ19EUlZfVFdMNDAzMD15CiMgQ09ORklHX1JUQ19EUlZfUEFMTUFTIGlz
IG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9UUFM2NTg2WCBpcyBub3Qgc2V0CkNPTkZJR19S
VENfRFJWX1RQUzY1OTQ9eQpDT05GSUdfUlRDX0RSVl9UUFM2NTkxMD15CkNPTkZJR19SVENf
RFJWX1JDNVQ1ODM9eQpDT05GSUdfUlRDX0RSVl9SQzVUNjE5PXkKIyBDT05GSUdfUlRDX0RS
Vl9TMzUzOTBBIGlzIG5vdCBzZXQKIyBDT05GSUdfUlRDX0RSVl9GTTMxMzAgaXMgbm90IHNl
dApDT05GSUdfUlRDX0RSVl9SWDgwMTA9eQpDT05GSUdfUlRDX0RSVl9SWDgxMTE9eQpDT05G
SUdfUlRDX0RSVl9SWDg1ODE9eQpDT05GSUdfUlRDX0RSVl9SWDgwMjU9eQpDT05GSUdfUlRD
X0RSVl9FTTMwMjc9eQpDT05GSUdfUlRDX0RSVl9SVjMwMjg9eQpDT05GSUdfUlRDX0RSVl9S
VjMwMzI9eQojIENPTkZJR19SVENfRFJWX1JWODgwMyBpcyBub3Qgc2V0CkNPTkZJR19SVENf
RFJWX1M1TT15CkNPTkZJR19SVENfRFJWX1NEMzA3OD15CgojCiMgU1BJIFJUQyBkcml2ZXJz
CiMKQ09ORklHX1JUQ19JMkNfQU5EX1NQST15CgojCiMgU1BJIGFuZCBJMkMgUlRDIGRyaXZl
cnMKIwpDT05GSUdfUlRDX0RSVl9EUzMyMzI9eQojIENPTkZJR19SVENfRFJWX0RTMzIzMl9I
V01PTiBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfUENGMjEyNyBpcyBub3Qgc2V0CkNP
TkZJR19SVENfRFJWX1JWMzAyOUMyPXkKIyBDT05GSUdfUlRDX0RSVl9SVjMwMjlfSFdNT04g
aXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SWDYxMTA9eQoKIwojIFBsYXRmb3JtIFJUQyBk
cml2ZXJzCiMKQ09ORklHX1JUQ19EUlZfQ01PUz15CkNPTkZJR19SVENfRFJWX0RTMTI4Nj15
CkNPTkZJR19SVENfRFJWX0RTMTUxMT15CkNPTkZJR19SVENfRFJWX0RTMTU1Mz15CkNPTkZJ
R19SVENfRFJWX0RTMTY4NV9GQU1JTFk9eQpDT05GSUdfUlRDX0RSVl9EUzE2ODU9eQojIENP
TkZJR19SVENfRFJWX0RTMTY4OSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzI4
NSBpcyBub3Qgc2V0CiMgQ09ORklHX1JUQ19EUlZfRFMxNzQ4NSBpcyBub3Qgc2V0CiMgQ09O
RklHX1JUQ19EUlZfRFMxNzg4NSBpcyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX0RTMTc0Mj15
CiMgQ09ORklHX1JUQ19EUlZfRFMyNDA0IGlzIG5vdCBzZXQKQ09ORklHX1JUQ19EUlZfREE5
MDYzPXkKQ09ORklHX1JUQ19EUlZfU1RLMTdUQTg9eQpDT05GSUdfUlRDX0RSVl9NNDhUODY9
eQpDT05GSUdfUlRDX0RSVl9NNDhUMzU9eQpDT05GSUdfUlRDX0RSVl9NNDhUNTk9eQojIENP
TkZJR19SVENfRFJWX01TTTYyNDIgaXMgbm90IHNldApDT05GSUdfUlRDX0RSVl9SUDVDMDE9
eQpDT05GSUdfUlRDX0RSVl9XTTgzMVg9eQojIENPTkZJR19SVENfRFJWX1dNODM1MCBpcyBu
b3Qgc2V0CkNPTkZJR19SVENfRFJWX1BDRjUwNjMzPXkKIyBDT05GSUdfUlRDX0RSVl9aWU5R
TVAgaXMgbm90IHNldAojIENPTkZJR19SVENfRFJWX0NST1NfRUMgaXMgbm90IHNldAojIENP
TkZJR19SVENfRFJWX05UWEVDIGlzIG5vdCBzZXQKCiMKIyBvbi1DUFUgUlRDIGRyaXZlcnMK
IwpDT05GSUdfUlRDX0RSVl9DQURFTkNFPXkKIyBDT05GSUdfUlRDX0RSVl9GVFJUQzAxMCBp
cyBub3Qgc2V0CkNPTkZJR19SVENfRFJWX01DMTNYWFg9eQpDT05GSUdfUlRDX0RSVl9NVDYz
OTc9eQojIENPTkZJR19SVENfRFJWX1I3MzAxIGlzIG5vdCBzZXQKCiMKIyBISUQgU2Vuc29y
IFJUQyBkcml2ZXJzCiMKIyBDT05GSUdfUlRDX0RSVl9HT0xERklTSCBpcyBub3Qgc2V0CiMg
Q09ORklHX1JUQ19EUlZfV0lMQ09fRUMgaXMgbm90IHNldAojIENPTkZJR19ETUFERVZJQ0VT
IGlzIG5vdCBzZXQKCiMKIyBETUFCVUYgb3B0aW9ucwojCkNPTkZJR19TWU5DX0ZJTEU9eQoj
IENPTkZJR19VRE1BQlVGIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVGX01PVkVfTk9USUZZ
IGlzIG5vdCBzZXQKQ09ORklHX0RNQUJVRl9ERUJVRz15CkNPTkZJR19ETUFCVUZfU0VMRlRF
U1RTPXkKIyBDT05GSUdfRE1BQlVGX0hFQVBTIGlzIG5vdCBzZXQKIyBDT05GSUdfRE1BQlVG
X1NZU0ZTX1NUQVRTIGlzIG5vdCBzZXQKIyBlbmQgb2YgRE1BQlVGIG9wdGlvbnMKCkNPTkZJ
R19VSU89eQpDT05GSUdfVUlPX1BEUlZfR0VOSVJRPXkKQ09ORklHX1VJT19ETUVNX0dFTklS
UT15CiMgQ09ORklHX1ZGSU8gaXMgbm90IHNldApDT05GSUdfSVJRX0JZUEFTU19NQU5BR0VS
PXkKQ09ORklHX1ZJUlRfRFJJVkVSUz15CkNPTkZJR19WTUdFTklEPXkKQ09ORklHX1ZJUlRJ
T19BTkNIT1I9eQpDT05GSUdfVklSVElPPXkKQ09ORklHX1ZJUlRJT19NRU5VPXkKQ09ORklH
X1ZJUlRJT19WRFBBPXkKIyBDT05GSUdfVklSVElPX0JBTExPT04gaXMgbm90IHNldApDT05G
SUdfVklSVElPX0lOUFVUPXkKIyBDT05GSUdfVklSVElPX01NSU8gaXMgbm90IHNldApDT05G
SUdfVklSVElPX0RFQlVHPXkKQ09ORklHX1ZEUEE9eQpDT05GSUdfVkRQQV9TSU09eQojIENP
TkZJR19WRFBBX1NJTV9ORVQgaXMgbm90IHNldApDT05GSUdfVkRQQV9TSU1fQkxPQ0s9eQoj
IENPTkZJR19WRFBBX1VTRVIgaXMgbm90IHNldAojIENPTkZJR19NTFg1X1ZEUEFfU1RFRVJJ
TkdfREVCVUcgaXMgbm90IHNldApDT05GSUdfVkhPU1RfSU9UTEI9eQpDT05GSUdfVkhPU1Rf
UklORz15CkNPTkZJR19WSE9TVF9UQVNLPXkKQ09ORklHX1ZIT1NUPXkKQ09ORklHX1ZIT1NU
X01FTlU9eQojIENPTkZJR19WSE9TVF9ORVQgaXMgbm90IHNldApDT05GSUdfVkhPU1RfU0NT
ST15CkNPTkZJR19WSE9TVF9WRFBBPXkKIyBDT05GSUdfVkhPU1RfQ1JPU1NfRU5ESUFOX0xF
R0FDWSBpcyBub3Qgc2V0CgojCiMgTWljcm9zb2Z0IEh5cGVyLVYgZ3Vlc3Qgc3VwcG9ydAoj
CiMgZW5kIG9mIE1pY3Jvc29mdCBIeXBlci1WIGd1ZXN0IHN1cHBvcnQKCkNPTkZJR19HUkVZ
QlVTPXkKIyBDT05GSUdfQ09NRURJIGlzIG5vdCBzZXQKIyBDT05GSUdfU1RBR0lORyBpcyBu
b3Qgc2V0CiMgQ09ORklHX0dPTERGSVNIIGlzIG5vdCBzZXQKQ09ORklHX0NIUk9NRV9QTEFU
Rk9STVM9eQpDT05GSUdfQ0hST01FT1NfQUNQST15CkNPTkZJR19DSFJPTUVPU19MQVBUT1A9
eQpDT05GSUdfQ0hST01FT1NfUFNUT1JFPXkKQ09ORklHX0NIUk9NRU9TX1RCTUM9eQpDT05G
SUdfQ1JPU19FQz15CkNPTkZJR19DUk9TX0VDX0kyQz15CkNPTkZJR19DUk9TX0VDX1JQTVNH
PXkKQ09ORklHX0NST1NfRUNfTFBDPXkKQ09ORklHX0NST1NfRUNfUFJPVE89eQpDT05GSUdf
Q1JPU19LQkRfTEVEX0JBQ0tMSUdIVD15CkNPTkZJR19DUk9TX0VDX0NIQVJERVY9eQojIENP
TkZJR19DUk9TX0VDX0xJR0hUQkFSIGlzIG5vdCBzZXQKQ09ORklHX0NST1NfRUNfVkJDPXkK
Q09ORklHX0NST1NfRUNfU0VOU09SSFVCPXkKQ09ORklHX0NST1NfRUNfU1lTRlM9eQpDT05G
SUdfQ1JPU19VU0JQRF9MT0dHRVI9eQpDT05GSUdfQ1JPU19VU0JQRF9OT1RJRlk9eQpDT05G
SUdfQ0hST01FT1NfUFJJVkFDWV9TQ1JFRU49eQpDT05GSUdfV0lMQ09fRUM9eQpDT05GSUdf
V0lMQ09fRUNfREVCVUdGUz15CiMgQ09ORklHX1dJTENPX0VDX0VWRU5UUyBpcyBub3Qgc2V0
CkNPTkZJR19XSUxDT19FQ19URUxFTUVUUlk9eQpDT05GSUdfQ1JPU19LVU5JVF9FQ19QUk9U
T19URVNUPXkKIyBDT05GSUdfQ1pOSUNfUExBVEZPUk1TIGlzIG5vdCBzZXQKQ09ORklHX01F
TExBTk9YX1BMQVRGT1JNPXkKQ09ORklHX01MWFJFR19IT1RQTFVHPXkKQ09ORklHX01MWFJF
R19JTz15CiMgQ09ORklHX01MWFJFR19MQyBpcyBub3Qgc2V0CkNPTkZJR19OVlNXX1NOMjIw
MT15CkNPTkZJR19PTFBDX0VDPXkKQ09ORklHX1NVUkZBQ0VfUExBVEZPUk1TPXkKQ09ORklH
X1NVUkZBQ0VfM19QT1dFUl9PUFJFR0lPTj15CiMgQ09ORklHX1NVUkZBQ0VfR1BFIGlzIG5v
dCBzZXQKIyBDT05GSUdfU1VSRkFDRV9IT1RQTFVHIGlzIG5vdCBzZXQKIyBDT05GSUdfU1VS
RkFDRV9QUk8zX0JVVFRPTiBpcyBub3Qgc2V0CkNPTkZJR19YODZfUExBVEZPUk1fREVWSUNF
Uz15CkNPTkZJR19BQ1BJX1dNST15CkNPTkZJR19XTUlfQk1PRj15CkNPTkZJR19IVUFXRUlf
V01JPXkKIyBDT05GSUdfTVhNX1dNSSBpcyBub3Qgc2V0CkNPTkZJR19OVklESUFfV01JX0VD
X0JBQ0tMSUdIVD15CkNPTkZJR19YSUFPTUlfV01JPXkKQ09ORklHX0dJR0FCWVRFX1dNST15
CiMgQ09ORklHX1lPR0FCT09LIGlzIG5vdCBzZXQKQ09ORklHX0FDRVJIREY9eQpDT05GSUdf
QUNFUl9XSVJFTEVTUz15CiMgQ09ORklHX0FDRVJfV01JIGlzIG5vdCBzZXQKQ09ORklHX0FN
RF9XQlJGPXkKQ09ORklHX0FEVl9TV0JVVFRPTj15CkNPTkZJR19BU1VTX0xBUFRPUD15CkNP
TkZJR19BU1VTX1dJUkVMRVNTPXkKQ09ORklHX0FTVVNfVEYxMDNDX0RPQ0s9eQojIENPTkZJ
R19YODZfUExBVEZPUk1fRFJJVkVSU19ERUxMIGlzIG5vdCBzZXQKQ09ORklHX0ZVSklUU1Vf
TEFQVE9QPXkKIyBDT05GSUdfRlVKSVRTVV9UQUJMRVQgaXMgbm90IHNldApDT05GSUdfR1BE
X1BPQ0tFVF9GQU49eQojIENPTkZJR19YODZfUExBVEZPUk1fRFJJVkVSU19IUCBpcyBub3Qg
c2V0CiMgQ09ORklHX1dJUkVMRVNTX0hPVEtFWSBpcyBub3Qgc2V0CkNPTkZJR19MRU5PVk9f
WU1DPXkKQ09ORklHX1NFTlNPUlNfSERBUFM9eQpDT05GSUdfVEhJTktQQURfQUNQST15CiMg
Q09ORklHX1RISU5LUEFEX0FDUElfREVCVUdGQUNJTElUSUVTIGlzIG5vdCBzZXQKIyBDT05G
SUdfVEhJTktQQURfQUNQSV9ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19USElOS1BBRF9BQ1BJ
X1VOU0FGRV9MRURTPXkKIyBDT05GSUdfVEhJTktQQURfQUNQSV9WSURFTyBpcyBub3Qgc2V0
CkNPTkZJR19USElOS1BBRF9BQ1BJX0hPVEtFWV9QT0xMPXkKQ09ORklHX1RISU5LUEFEX0xN
ST15CiMgQ09ORklHX0lOVEVMX0FUT01JU1AyX0xFRCBpcyBub3Qgc2V0CkNPTkZJR19JTlRF
TF9TQVJfSU5UMTA5Mj15CkNPTkZJR19JTlRFTF9TS0xfSU5UMzQ3Mj15CkNPTkZJR19JTlRF
TF9XTUk9eQpDT05GSUdfSU5URUxfV01JX1NCTF9GV19VUERBVEU9eQpDT05GSUdfSU5URUxf
V01JX1RIVU5ERVJCT0xUPXkKQ09ORklHX0lOVEVMX0hJRF9FVkVOVD15CkNPTkZJR19JTlRF
TF9WQlROPXkKQ09ORklHX0lOVEVMX0JYVFdDX1BNSUNfVE1VPXkKIyBDT05GSUdfSU5URUxf
TVJGTERfUFdSQlROIGlzIG5vdCBzZXQKQ09ORklHX0lOVEVMX1BVTklUX0lQQz15CkNPTkZJ
R19JTlRFTF9SU1Q9eQojIENPTkZJR19JTlRFTF9TTUFSVENPTk5FQ1QgaXMgbm90IHNldApD
T05GSUdfQUNQSV9RVUlDS1NUQVJUPXkKIyBDT05GSUdfTUVFR09QQURfQU5YNzQyOCBpcyBu
b3Qgc2V0CkNPTkZJR19NU0lfRUM9eQpDT05GSUdfTVNJX1dNST15CkNPTkZJR19NU0lfV01J
X1BMQVRGT1JNPXkKQ09ORklHX1hPMTVfRUJPT0s9eQpDT05GSUdfQkFSQ09fUDUwX0dQSU89
eQpDT05GSUdfU0FNU1VOR19MQVBUT1A9eQpDT05GSUdfU0FNU1VOR19RMTA9eQpDT05GSUdf
QUNQSV9UT1NISUJBPXkKQ09ORklHX1RPU0hJQkFfQlRfUkZLSUxMPXkKQ09ORklHX1RPU0hJ
QkFfSEFQUz15CkNPTkZJR19UT1NISUJBX1dNST15CkNPTkZJR19BQ1BJX0NNUEM9eQpDT05G
SUdfTEdfTEFQVE9QPXkKIyBDT05GSUdfUEFOQVNPTklDX0xBUFRPUCBpcyBub3Qgc2V0CkNP
TkZJR19TWVNURU03Nl9BQ1BJPXkKQ09ORklHX1RPUFNUQVJfTEFQVE9QPXkKQ09ORklHX0lO
U1BVUl9QTEFURk9STV9QUk9GSUxFPXkKIyBDT05GSUdfTEVOT1ZPX1dNSV9DQU1FUkEgaXMg
bm90IHNldApDT05GSUdfRldfQVRUUl9DTEFTUz15CkNPTkZJR19JTlRFTF9TQ1VfSVBDPXkK
Q09ORklHX0lOVEVMX1NDVT15CkNPTkZJR19JTlRFTF9TQ1VfUExBVEZPUk09eQpDT05GSUdf
SU5URUxfU0NVX0lQQ19VVElMPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJQ19JUEM9eQpDT05G
SUdfU0lFTUVOU19TSU1BVElDX0lQQ19CQVRUPXkKQ09ORklHX1NJRU1FTlNfU0lNQVRJQ19J
UENfQkFUVF9BUE9MTE9MQUtFPXkKIyBDT05GSUdfU0lFTUVOU19TSU1BVElDX0lQQ19CQVRU
X0Y3MTg4WCBpcyBub3Qgc2V0CkNPTkZJR19TSUxJQ09NX1BMQVRGT1JNPXkKQ09ORklHX1dJ
Tk1BVEVfRk0wN19LRVlTPXkKIyBDT05GSUdfU0VMMzM1MF9QTEFURk9STSBpcyBub3Qgc2V0
CkNPTkZJR19IQVZFX0NMSz15CkNPTkZJR19IQVZFX0NMS19QUkVQQVJFPXkKQ09ORklHX0NP
TU1PTl9DTEs9eQojIENPTkZJR19DT01NT05fQ0xLX1dNODMxWCBpcyBub3Qgc2V0CkNPTkZJ
R19DT01NT05fQ0xLX01BWDc3Njg2PXkKQ09ORklHX0NPTU1PTl9DTEtfTUFYOTQ4NT15CiMg
Q09ORklHX0NPTU1PTl9DTEtfU0k1MzQxIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtf
U0k1MzUxPXkKQ09ORklHX0NPTU1PTl9DTEtfU0k1MTQ9eQpDT05GSUdfQ09NTU9OX0NMS19T
STU0ND15CiMgQ09ORklHX0NPTU1PTl9DTEtfU0k1NzAgaXMgbm90IHNldAojIENPTkZJR19D
T01NT05fQ0xLX0NEQ0U3MDYgaXMgbm90IHNldAojIENPTkZJR19DT01NT05fQ0xLX1RQUzY4
NDcwIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQ0RDRTkyNT15CkNPTkZJR19DT01N
T05fQ0xLX0NTMjAwMF9DUD15CkNPTkZJR19DT01NT05fQ0xLX1MyTVBTMTE9eQojIENPTkZJ
R19DTEtfVFdMIGlzIG5vdCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfQVhJX0NMS0dFTj15CkNP
TkZJR19DT01NT05fQ0xLX1BBTE1BUz15CiMgQ09ORklHX0NPTU1PTl9DTEtfUFdNIGlzIG5v
dCBzZXQKQ09ORklHX0NPTU1PTl9DTEtfUlM5X1BDSUU9eQpDT05GSUdfQ09NTU9OX0NMS19T
STUyMVhYPXkKIyBDT05GSUdfQ09NTU9OX0NMS19WQzMgaXMgbm90IHNldAojIENPTkZJR19D
T01NT05fQ0xLX1ZDNSBpcyBub3Qgc2V0CkNPTkZJR19DT01NT05fQ0xLX1ZDNz15CkNPTkZJ
R19DT01NT05fQ0xLX0JENzE4WFg9eQojIENPTkZJR19DT01NT05fQ0xLX0ZJWEVEX01NSU8g
aXMgbm90IHNldApDT05GSUdfQ0xLX0xHTV9DR1U9eQpDT05GSUdfWElMSU5YX1ZDVT15CkNP
TkZJR19DT01NT05fQ0xLX1hMTlhfQ0xLV1pSRD15CkNPTkZJR19DTEtfS1VOSVRfVEVTVD15
CkNPTkZJR19DTEtfR0FURV9LVU5JVF9URVNUPXkKQ09ORklHX0NMS19GRF9LVU5JVF9URVNU
PXkKIyBDT05GSUdfSFdTUElOTE9DSyBpcyBub3Qgc2V0CgojCiMgQ2xvY2sgU291cmNlIGRy
aXZlcnMKIwpDT05GSUdfQ0xLU1JDX0k4MjUzPXkKQ09ORklHX0NMS0VWVF9JODI1Mz15CkNP
TkZJR19JODI1M19MT0NLPXkKQ09ORklHX0NMS0JMRF9JODI1Mz15CiMgZW5kIG9mIENsb2Nr
IFNvdXJjZSBkcml2ZXJzCgpDT05GSUdfTUFJTEJPWD15CkNPTkZJR19BUk1fTUhVX1YzPXkK
Q09ORklHX1BMQVRGT1JNX01IVT15CkNPTkZJR19QQ0M9eQojIENPTkZJR19BTFRFUkFfTUJP
WCBpcyBub3Qgc2V0CiMgQ09ORklHX01BSUxCT1hfVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19J
T01NVV9JT1ZBPXkKQ09ORklHX0lPTU1VX0FQST15CkNPTkZJR19JT01NVV9TVVBQT1JUPXkK
CiMKIyBHZW5lcmljIElPTU1VIFBhZ2V0YWJsZSBTdXBwb3J0CiMKIyBlbmQgb2YgR2VuZXJp
YyBJT01NVSBQYWdldGFibGUgU3VwcG9ydAoKIyBDT05GSUdfSU9NTVVfREVGQVVMVF9ETUFf
U1RSSUNUIGlzIG5vdCBzZXQKIyBDT05GSUdfSU9NTVVfREVGQVVMVF9ETUFfTEFaWSBpcyBu
b3Qgc2V0CkNPTkZJR19JT01NVV9ERUZBVUxUX1BBU1NUSFJPVUdIPXkKQ09ORklHX09GX0lP
TU1VPXkKQ09ORklHX0lPTU1VX0RNQT15CiMgQ09ORklHX0lPTU1VRkQgaXMgbm90IHNldApD
T05GSUdfVklSVElPX0lPTU1VPXkKCiMKIyBSZW1vdGVwcm9jIGRyaXZlcnMKIwojIENPTkZJ
R19SRU1PVEVQUk9DIGlzIG5vdCBzZXQKIyBlbmQgb2YgUmVtb3RlcHJvYyBkcml2ZXJzCgoj
CiMgUnBtc2cgZHJpdmVycwojCkNPTkZJR19SUE1TRz15CkNPTkZJR19SUE1TR19DSEFSPXkK
IyBDT05GSUdfUlBNU0dfQ1RSTCBpcyBub3Qgc2V0CkNPTkZJR19SUE1TR19OUz15CkNPTkZJ
R19SUE1TR19RQ09NX0dMSU5LPXkKQ09ORklHX1JQTVNHX1FDT01fR0xJTktfUlBNPXkKIyBD
T05GSUdfUlBNU0dfVklSVElPIGlzIG5vdCBzZXQKIyBlbmQgb2YgUnBtc2cgZHJpdmVycwoK
Q09ORklHX1NPVU5EV0lSRT15CgojCiMgU291bmRXaXJlIERldmljZXMKIwoKIwojIFNPQyAo
U3lzdGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKIwoKIwojIEFtbG9naWMgU29DIGRy
aXZlcnMKIwojIGVuZCBvZiBBbWxvZ2ljIFNvQyBkcml2ZXJzCgojCiMgQnJvYWRjb20gU29D
IGRyaXZlcnMKIwojIGVuZCBvZiBCcm9hZGNvbSBTb0MgZHJpdmVycwoKIwojIE5YUC9GcmVl
c2NhbGUgUW9ySVEgU29DIGRyaXZlcnMKIwojIGVuZCBvZiBOWFAvRnJlZXNjYWxlIFFvcklR
IFNvQyBkcml2ZXJzCgojCiMgZnVqaXRzdSBTb0MgZHJpdmVycwojCiMgZW5kIG9mIGZ1aml0
c3UgU29DIGRyaXZlcnMKCiMKIyBpLk1YIFNvQyBkcml2ZXJzCiMKIyBlbmQgb2YgaS5NWCBT
b0MgZHJpdmVycwoKIwojIEVuYWJsZSBMaXRlWCBTb0MgQnVpbGRlciBzcGVjaWZpYyBkcml2
ZXJzCiMKQ09ORklHX0xJVEVYPXkKQ09ORklHX0xJVEVYX1NPQ19DT05UUk9MTEVSPXkKIyBl
bmQgb2YgRW5hYmxlIExpdGVYIFNvQyBCdWlsZGVyIHNwZWNpZmljIGRyaXZlcnMKCkNPTkZJ
R19XUENNNDUwX1NPQz15CgojCiMgUXVhbGNvbW0gU29DIGRyaXZlcnMKIwojIGVuZCBvZiBR
dWFsY29tbSBTb0MgZHJpdmVycwoKQ09ORklHX1NPQ19UST15CgojCiMgWGlsaW54IFNvQyBk
cml2ZXJzCiMKIyBlbmQgb2YgWGlsaW54IFNvQyBkcml2ZXJzCiMgZW5kIG9mIFNPQyAoU3lz
dGVtIE9uIENoaXApIHNwZWNpZmljIERyaXZlcnMKCiMKIyBQTSBEb21haW5zCiMKCiMKIyBB
bWxvZ2ljIFBNIERvbWFpbnMKIwojIGVuZCBvZiBBbWxvZ2ljIFBNIERvbWFpbnMKCiMKIyBC
cm9hZGNvbSBQTSBEb21haW5zCiMKIyBlbmQgb2YgQnJvYWRjb20gUE0gRG9tYWlucwoKIwoj
IGkuTVggUE0gRG9tYWlucwojCiMgZW5kIG9mIGkuTVggUE0gRG9tYWlucwoKIwojIFF1YWxj
b21tIFBNIERvbWFpbnMKIwojIGVuZCBvZiBRdWFsY29tbSBQTSBEb21haW5zCiMgZW5kIG9m
IFBNIERvbWFpbnMKCkNPTkZJR19QTV9ERVZGUkVRPXkKCiMKIyBERVZGUkVRIEdvdmVybm9y
cwojCkNPTkZJR19ERVZGUkVRX0dPVl9TSU1QTEVfT05ERU1BTkQ9eQpDT05GSUdfREVWRlJF
UV9HT1ZfUEVSRk9STUFOQ0U9eQojIENPTkZJR19ERVZGUkVRX0dPVl9QT1dFUlNBVkUgaXMg
bm90IHNldApDT05GSUdfREVWRlJFUV9HT1ZfVVNFUlNQQUNFPXkKIyBDT05GSUdfREVWRlJF
UV9HT1ZfUEFTU0lWRSBpcyBub3Qgc2V0CgojCiMgREVWRlJFUSBEcml2ZXJzCiMKIyBDT05G
SUdfUE1fREVWRlJFUV9FVkVOVCBpcyBub3Qgc2V0CkNPTkZJR19FWFRDT049eQoKIwojIEV4
dGNvbiBEZXZpY2UgRHJpdmVycwojCkNPTkZJR19FWFRDT05fQURDX0pBQ0s9eQojIENPTkZJ
R19FWFRDT05fRlNBOTQ4MCBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9HUElPIGlzIG5v
dCBzZXQKQ09ORklHX0VYVENPTl9JTlRFTF9JTlQzNDk2PXkKQ09ORklHX0VYVENPTl9JTlRF
TF9NUkZMRD15CiMgQ09ORklHX0VYVENPTl9MQzgyNDIwNlhBIGlzIG5vdCBzZXQKQ09ORklH
X0VYVENPTl9NQVgxNDU3Nz15CiMgQ09ORklHX0VYVENPTl9NQVgzMzU1IGlzIG5vdCBzZXQK
IyBDT05GSUdfRVhUQ09OX01BWDc3NjkzIGlzIG5vdCBzZXQKQ09ORklHX0VYVENPTl9NQVg3
Nzg0Mz15CiMgQ09ORklHX0VYVENPTl9QQUxNQVMgaXMgbm90IHNldAojIENPTkZJR19FWFRD
T05fUFRONTE1MCBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9SVDg5NzNBIGlzIG5vdCBz
ZXQKIyBDT05GSUdfRVhUQ09OX1NNNTUwMiBpcyBub3Qgc2V0CiMgQ09ORklHX0VYVENPTl9V
U0JfR1BJTyBpcyBub3Qgc2V0CkNPTkZJR19FWFRDT05fVVNCQ19DUk9TX0VDPXkKQ09ORklH
X01FTU9SWT15CkNPTkZJR19JSU89eQpDT05GSUdfSUlPX0JVRkZFUj15CkNPTkZJR19JSU9f
QlVGRkVSX0NCPXkKQ09ORklHX0lJT19CVUZGRVJfRE1BPXkKQ09ORklHX0lJT19CVUZGRVJf
RE1BRU5HSU5FPXkKQ09ORklHX0lJT19CVUZGRVJfSFdfQ09OU1VNRVI9eQpDT05GSUdfSUlP
X0tGSUZPX0JVRj15CkNPTkZJR19JSU9fVFJJR0dFUkVEX0JVRkZFUj15CkNPTkZJR19JSU9f
Q09ORklHRlM9eQpDT05GSUdfSUlPX0dUU19IRUxQRVI9eQpDT05GSUdfSUlPX1RSSUdHRVI9
eQpDT05GSUdfSUlPX0NPTlNVTUVSU19QRVJfVFJJR0dFUj0yCiMgQ09ORklHX0lJT19TV19E
RVZJQ0UgaXMgbm90IHNldApDT05GSUdfSUlPX1NXX1RSSUdHRVI9eQpDT05GSUdfSUlPX1RS
SUdHRVJFRF9FVkVOVD15CgojCiMgQWNjZWxlcm9tZXRlcnMKIwpDT05GSUdfQURYTDMxMz15
CkNPTkZJR19BRFhMMzEzX0kyQz15CkNPTkZJR19BRFhMMzU1PXkKQ09ORklHX0FEWEwzNTVf
STJDPXkKQ09ORklHX0FEWEwzNjc9eQpDT05GSUdfQURYTDM2N19JMkM9eQojIENPTkZJR19B
RFhMMzcyX0kyQyBpcyBub3Qgc2V0CiMgQ09ORklHX0JNQTQwMCBpcyBub3Qgc2V0CkNPTkZJ
R19CTUMxNTBfQUNDRUw9eQpDT05GSUdfQk1DMTUwX0FDQ0VMX0kyQz15CkNPTkZJR19CTUkw
ODhfQUNDRUw9eQpDT05GSUdfQk1JMDg4X0FDQ0VMX0kyQz15CiMgQ09ORklHX0RBMjgwIGlz
IG5vdCBzZXQKIyBDT05GSUdfREEzMTEgaXMgbm90IHNldApDT05GSUdfRE1BUkQwNj15CkNP
TkZJR19ETUFSRDA5PXkKQ09ORklHX0RNQVJEMTA9eQojIENPTkZJR19GWExTODk2MkFGX0ky
QyBpcyBub3Qgc2V0CiMgQ09ORklHX0lJT19LWDAyMkFfSTJDIGlzIG5vdCBzZXQKIyBDT05G
SUdfS1hTRDkgaXMgbm90IHNldApDT05GSUdfS1hDSksxMDEzPXkKQ09ORklHX01DMzIzMD15
CkNPTkZJR19NTUE3NDU1PXkKQ09ORklHX01NQTc0NTVfSTJDPXkKIyBDT05GSUdfTU1BNzY2
MCBpcyBub3Qgc2V0CkNPTkZJR19NTUE4NDUyPXkKIyBDT05GSUdfTU1BOTU1MSBpcyBub3Qg
c2V0CiMgQ09ORklHX01NQTk1NTMgaXMgbm90IHNldApDT05GSUdfTVNBMzExPXkKIyBDT05G
SUdfTVhDNDAwNSBpcyBub3Qgc2V0CkNPTkZJR19NWEM2MjU1PXkKIyBDT05GSUdfU1RLODMx
MiBpcyBub3Qgc2V0CkNPTkZJR19TVEs4QkE1MD15CiMgZW5kIG9mIEFjY2VsZXJvbWV0ZXJz
CgojCiMgQW5hbG9nIHRvIGRpZ2l0YWwgY29udmVydGVycwojCkNPTkZJR19BRDcwOTFSPXkK
Q09ORklHX0FENzA5MVI1PXkKQ09ORklHX0FENzI5MT15CkNPTkZJR19BRDc2MDY9eQpDT05G
SUdfQUQ3NjA2X0lGQUNFX1BBUkFMTEVMPXkKQ09ORklHX0FENzk5WD15CiMgQ09ORklHX0FY
UDIwWF9BREMgaXMgbm90IHNldApDT05GSUdfQVhQMjg4X0FEQz15CiMgQ09ORklHX0NDMTAw
MDFfQURDIGlzIG5vdCBzZXQKIyBDT05GSUdfREE5MTUwX0dQQURDIGlzIG5vdCBzZXQKQ09O
RklHX0VOVkVMT1BFX0RFVEVDVE9SPXkKQ09ORklHX0hYNzExPXkKIyBDT05GSUdfSU5URUxf
TVJGTERfQURDIGlzIG5vdCBzZXQKQ09ORklHX0xQODc4OF9BREM9eQpDT05GSUdfTFRDMjMw
OT15CiMgQ09ORklHX0xUQzI0NzEgaXMgbm90IHNldApDT05GSUdfTFRDMjQ4NT15CiMgQ09O
RklHX0xUQzI0OTcgaXMgbm90IHNldApDT05GSUdfTUFYMTM2Mz15CkNPTkZJR19NQVgzNDQw
OD15CiMgQ09ORklHX01BWDc3NTQxX0FEQyBpcyBub3Qgc2V0CkNPTkZJR19NQVg5NjExPXkK
Q09ORklHX01DUDM0MjI9eQojIENPTkZJR19NRURJQVRFS19NVDYzNTlfQVVYQURDIGlzIG5v
dCBzZXQKIyBDT05GSUdfTUVESUFURUtfTVQ2MzcwX0FEQyBpcyBub3Qgc2V0CkNPTkZJR19N
RU5fWjE4OF9BREM9eQpDT05GSUdfTVAyNjI5X0FEQz15CkNPTkZJR19OQVU3ODAyPXkKIyBD
T05GSUdfUEFDMTkzNCBpcyBub3Qgc2V0CkNPTkZJR19QQUxNQVNfR1BBREM9eQpDT05GSUdf
Uk41VDYxOF9BREM9eQpDT05GSUdfUklDSFRFS19SVFE2MDU2PXkKQ09ORklHX1NEX0FEQ19N
T0RVTEFUT1I9eQpDT05GSUdfU1RNUEVfQURDPXkKQ09ORklHX1RJX0FEQzA4MUM9eQojIENP
TkZJR19USV9BRFMxMDE1IGlzIG5vdCBzZXQKQ09ORklHX1RJX0FEUzExMTk9eQojIENPTkZJ
R19USV9BRFM3OTI0IGlzIG5vdCBzZXQKIyBDT05GSUdfVElfQURTMTEwMCBpcyBub3Qgc2V0
CkNPTkZJR19UV0w0MDMwX01BREM9eQojIENPTkZJR19UV0w2MDMwX0dQQURDIGlzIG5vdCBz
ZXQKQ09ORklHX1ZGNjEwX0FEQz15CkNPTkZJR19YSUxJTlhfWEFEQz15CiMgZW5kIG9mIEFu
YWxvZyB0byBkaWdpdGFsIGNvbnZlcnRlcnMKCiMKIyBBbmFsb2cgdG8gZGlnaXRhbCBhbmQg
ZGlnaXRhbCB0byBhbmFsb2cgY29udmVydGVycwojCiMgZW5kIG9mIEFuYWxvZyB0byBkaWdp
dGFsIGFuZCBkaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXJzCgojCiMgQW5hbG9nIEZyb250
IEVuZHMKIwpDT05GSUdfSUlPX1JFU0NBTEU9eQojIGVuZCBvZiBBbmFsb2cgRnJvbnQgRW5k
cwoKIwojIEFtcGxpZmllcnMKIwojIENPTkZJR19ITUM0MjUgaXMgbm90IHNldAojIGVuZCBv
ZiBBbXBsaWZpZXJzCgojCiMgQ2FwYWNpdGFuY2UgdG8gZGlnaXRhbCBjb252ZXJ0ZXJzCiMK
IyBDT05GSUdfQUQ3MTUwIGlzIG5vdCBzZXQKQ09ORklHX0FENzc0Nj15CiMgZW5kIG9mIENh
cGFjaXRhbmNlIHRvIGRpZ2l0YWwgY29udmVydGVycwoKIwojIENoZW1pY2FsIFNlbnNvcnMK
IwpDT05GSUdfQU9TT05HX0FHUzAyTUE9eQojIENPTkZJR19BVExBU19QSF9TRU5TT1IgaXMg
bm90IHNldApDT05GSUdfQVRMQVNfRVpPX1NFTlNPUj15CkNPTkZJR19CTUU2ODA9eQpDT05G
SUdfQk1FNjgwX0kyQz15CiMgQ09ORklHX0NDUzgxMSBpcyBub3Qgc2V0CkNPTkZJR19FTlMx
NjA9eQpDT05GSUdfRU5TMTYwX0kyQz15CkNPTkZJR19JQVFDT1JFPXkKIyBDT05GSUdfU0NE
MzBfQ09SRSBpcyBub3Qgc2V0CiMgQ09ORklHX1NDRDRYIGlzIG5vdCBzZXQKIyBDT05GSUdf
U0VOU0lSSU9OX1NHUDMwIGlzIG5vdCBzZXQKIyBDT05GSUdfU0VOU0lSSU9OX1NHUDQwIGlz
IG5vdCBzZXQKQ09ORklHX1NQUzMwPXkKQ09ORklHX1NQUzMwX0kyQz15CkNPTkZJR19TRU5T
RUFJUl9TVU5SSVNFX0NPMj15CkNPTkZJR19WWjg5WD15CiMgZW5kIG9mIENoZW1pY2FsIFNl
bnNvcnMKCiMgQ09ORklHX0lJT19DUk9TX0VDX1NFTlNPUlNfQ09SRSBpcyBub3Qgc2V0Cgoj
CiMgSGlkIFNlbnNvciBJSU8gQ29tbW9uCiMKIyBlbmQgb2YgSGlkIFNlbnNvciBJSU8gQ29t
bW9uCgpDT05GSUdfSUlPX0lOVl9TRU5TT1JTX1RJTUVTVEFNUD15CkNPTkZJR19JSU9fTVNf
U0VOU09SU19JMkM9eQoKIwojIElJTyBTQ01JIFNlbnNvcnMKIwojIGVuZCBvZiBJSU8gU0NN
SSBTZW5zb3JzCgojCiMgU1NQIFNlbnNvciBDb21tb24KIwojIGVuZCBvZiBTU1AgU2Vuc29y
IENvbW1vbgoKQ09ORklHX0lJT19TVF9TRU5TT1JTX0kyQz15CkNPTkZJR19JSU9fU1RfU0VO
U09SU19DT1JFPXkKCiMKIyBEaWdpdGFsIHRvIGFuYWxvZyBjb252ZXJ0ZXJzCiMKQ09ORklH
X0FENTA2ND15CiMgQ09ORklHX0FENTM4MCBpcyBub3Qgc2V0CkNPTkZJR19BRDU0NDY9eQpD
T05GSUdfQUQ1NTkyUl9CQVNFPXkKQ09ORklHX0FENTU5M1I9eQojIENPTkZJR19BRDU2OTZf
STJDIGlzIG5vdCBzZXQKIyBDT05GSUdfRFBPVF9EQUMgaXMgbm90IHNldApDT05GSUdfRFM0
NDI0PXkKIyBDT05GSUdfTTYyMzMyIGlzIG5vdCBzZXQKQ09ORklHX01BWDUxNz15CkNPTkZJ
R19NQVg1ODIxPXkKIyBDT05GSUdfTUNQNDcyNSBpcyBub3Qgc2V0CiMgQ09ORklHX01DUDQ3
MjggaXMgbm90IHNldAojIENPTkZJR19USV9EQUM1NTcxIGlzIG5vdCBzZXQKQ09ORklHX1ZG
NjEwX0RBQz15CiMgZW5kIG9mIERpZ2l0YWwgdG8gYW5hbG9nIGNvbnZlcnRlcnMKCiMKIyBJ
SU8gZHVtbXkgZHJpdmVyCiMKIyBlbmQgb2YgSUlPIGR1bW15IGRyaXZlcgoKIwojIEZpbHRl
cnMKIwojIGVuZCBvZiBGaWx0ZXJzCgojCiMgRnJlcXVlbmN5IFN5bnRoZXNpemVycyBERFMv
UExMCiMKCiMKIyBDbG9jayBHZW5lcmF0b3IvRGlzdHJpYnV0aW9uCiMKIyBlbmQgb2YgQ2xv
Y2sgR2VuZXJhdG9yL0Rpc3RyaWJ1dGlvbgoKIwojIFBoYXNlLUxvY2tlZCBMb29wIChQTEwp
IGZyZXF1ZW5jeSBzeW50aGVzaXplcnMKIwpDT05GSUdfQURNRk0yMDAwPXkKIyBlbmQgb2Yg
UGhhc2UtTG9ja2VkIExvb3AgKFBMTCkgZnJlcXVlbmN5IHN5bnRoZXNpemVycwojIGVuZCBv
ZiBGcmVxdWVuY3kgU3ludGhlc2l6ZXJzIEREUy9QTEwKCiMKIyBEaWdpdGFsIGd5cm9zY29w
ZSBzZW5zb3JzCiMKQ09ORklHX0JNRzE2MD15CkNPTkZJR19CTUcxNjBfSTJDPXkKIyBDT05G
SUdfRlhBUzIxMDAyQyBpcyBub3Qgc2V0CiMgQ09ORklHX01QVTMwNTBfSTJDIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSUlPX1NUX0dZUk9fM0FYSVMgaXMgbm90IHNldAojIENPTkZJR19JVEcz
MjAwIGlzIG5vdCBzZXQKIyBlbmQgb2YgRGlnaXRhbCBneXJvc2NvcGUgc2Vuc29ycwoKIwoj
IEhlYWx0aCBTZW5zb3JzCiMKCiMKIyBIZWFydCBSYXRlIE1vbml0b3JzCiMKIyBDT05GSUdf
QUZFNDQwNCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMwMTAwIGlzIG5vdCBzZXQKQ09ORklH
X01BWDMwMTAyPXkKIyBlbmQgb2YgSGVhcnQgUmF0ZSBNb25pdG9ycwojIGVuZCBvZiBIZWFs
dGggU2Vuc29ycwoKIwojIEh1bWlkaXR5IHNlbnNvcnMKIwojIENPTkZJR19BTTIzMTUgaXMg
bm90IHNldAojIENPTkZJR19ESFQxMSBpcyBub3Qgc2V0CiMgQ09ORklHX0hEQzEwMFggaXMg
bm90IHNldApDT05GSUdfSERDMjAxMD15CkNPTkZJR19IREMzMDIwPXkKQ09ORklHX0hUUzIy
MT15CkNPTkZJR19IVFMyMjFfSTJDPXkKQ09ORklHX0hUVTIxPXkKQ09ORklHX1NJNzAwNT15
CkNPTkZJR19TSTcwMjA9eQojIGVuZCBvZiBIdW1pZGl0eSBzZW5zb3JzCgojCiMgSW5lcnRp
YWwgbWVhc3VyZW1lbnQgdW5pdHMKIwojIENPTkZJR19CTUkxNjBfSTJDIGlzIG5vdCBzZXQK
IyBDT05GSUdfQk1JMzIzX0kyQyBpcyBub3Qgc2V0CkNPTkZJR19CT1NDSF9CTk8wNTU9eQpD
T05GSUdfQk9TQ0hfQk5PMDU1X0kyQz15CiMgQ09ORklHX0ZYT1M4NzAwX0kyQyBpcyBub3Qg
c2V0CkNPTkZJR19LTVg2MT15CkNPTkZJR19JTlZfSUNNNDI2MDA9eQpDT05GSUdfSU5WX0lD
TTQyNjAwX0kyQz15CkNPTkZJR19JTlZfTVBVNjA1MF9JSU89eQpDT05GSUdfSU5WX01QVTYw
NTBfSTJDPXkKQ09ORklHX0lJT19TVF9MU002RFNYPXkKQ09ORklHX0lJT19TVF9MU002RFNY
X0kyQz15CkNPTkZJR19JSU9fU1RfTFNNNkRTWF9JM0M9eQojIGVuZCBvZiBJbmVydGlhbCBt
ZWFzdXJlbWVudCB1bml0cwoKIwojIExpZ2h0IHNlbnNvcnMKIwpDT05GSUdfQUNQSV9BTFM9
eQojIENPTkZJR19BREpEX1MzMTEgaXMgbm90IHNldAojIENPTkZJR19BRFVYMTAyMCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0FMMzAxMCBpcyBub3Qgc2V0CiMgQ09ORklHX0FMMzMyMEEgaXMg
bm90IHNldApDT05GSUdfQVBEUzkzMDA9eQojIENPTkZJR19BUERTOTMwNiBpcyBub3Qgc2V0
CiMgQ09ORklHX0FQRFM5OTYwIGlzIG5vdCBzZXQKQ09ORklHX0FTNzMyMTE9eQpDT05GSUdf
QkgxNzUwPXkKQ09ORklHX0JIMTc4MD15CkNPTkZJR19DTTMyMTgxPXkKIyBDT05GSUdfQ00z
MjMyIGlzIG5vdCBzZXQKQ09ORklHX0NNMzMyMz15CkNPTkZJR19DTTM2MDU9eQojIENPTkZJ
R19DTTM2NjUxIGlzIG5vdCBzZXQKQ09ORklHX0dQMkFQMDAyPXkKIyBDT05GSUdfR1AyQVAw
MjBBMDBGIGlzIG5vdCBzZXQKQ09ORklHX1NFTlNPUlNfSVNMMjkwMTg9eQpDT05GSUdfU0VO
U09SU19JU0wyOTAyOD15CkNPTkZJR19JU0wyOTEyNT15CkNPTkZJR19JU0w3NjY4Mj15CkNP
TkZJR19KU0ExMjEyPXkKQ09ORklHX1JPSE1fQlUyNzAwOD15CiMgQ09ORklHX1JPSE1fQlUy
NzAzNCBpcyBub3Qgc2V0CkNPTkZJR19SUFIwNTIxPXkKQ09ORklHX0xUUjM5MD15CkNPTkZJ
R19MVFI1MDE9eQojIENPTkZJR19MVFJGMjE2QSBpcyBub3Qgc2V0CkNPTkZJR19MVjAxMDRD
Uz15CkNPTkZJR19NQVg0NDAwMD15CkNPTkZJR19NQVg0NDAwOT15CiMgQ09ORklHX05PQTEz
MDUgaXMgbm90IHNldApDT05GSUdfT1BUMzAwMT15CkNPTkZJR19PUFQ0MDAxPXkKIyBDT05G
SUdfUEExMjIwMzAwMSBpcyBub3Qgc2V0CkNPTkZJR19TSTExMzM9eQpDT05GSUdfU0kxMTQ1
PXkKQ09ORklHX1NUSzMzMTA9eQpDT05GSUdfU1RfVVZJUzI1PXkKQ09ORklHX1NUX1VWSVMy
NV9JMkM9eQpDT05GSUdfVENTMzQxND15CkNPTkZJR19UQ1MzNDcyPXkKIyBDT05GSUdfU0VO
U09SU19UU0wyNTYzIGlzIG5vdCBzZXQKQ09ORklHX1RTTDI1ODM9eQpDT05GSUdfVFNMMjU5
MT15CkNPTkZJR19UU0wyNzcyPXkKIyBDT05GSUdfVFNMNDUzMSBpcyBub3Qgc2V0CkNPTkZJ
R19VUzUxODJEPXkKQ09ORklHX1ZDTkw0MDAwPXkKIyBDT05GSUdfVkNOTDQwMzUgaXMgbm90
IHNldApDT05GSUdfVkVNTDYwMzA9eQpDT05GSUdfVkVNTDYwNDA9eQpDT05GSUdfVkVNTDYw
NzA9eQpDT05GSUdfVkVNTDYwNzU9eQojIENPTkZJR19WTDYxODAgaXMgbm90IHNldApDT05G
SUdfWk9QVDIyMDE9eQojIGVuZCBvZiBMaWdodCBzZW5zb3JzCgojCiMgTWFnbmV0b21ldGVy
IHNlbnNvcnMKIwpDT05GSUdfQUY4MTMzSj15CkNPTkZJR19BSzg5NzQ9eQpDT05GSUdfQUs4
OTc1PXkKIyBDT05GSUdfQUswOTkxMSBpcyBub3Qgc2V0CkNPTkZJR19CTUMxNTBfTUFHTj15
CkNPTkZJR19CTUMxNTBfTUFHTl9JMkM9eQojIENPTkZJR19NQUczMTEwIGlzIG5vdCBzZXQK
Q09ORklHX01NQzM1MjQwPXkKQ09ORklHX0lJT19TVF9NQUdOXzNBWElTPXkKQ09ORklHX0lJ
T19TVF9NQUdOX0kyQ18zQVhJUz15CiMgQ09ORklHX1NFTlNPUlNfSE1DNTg0M19JMkMgaXMg
bm90IHNldAojIENPTkZJR19TRU5TT1JTX1JNMzEwMF9JMkMgaXMgbm90IHNldApDT05GSUdf
VElfVE1BRzUyNzM9eQpDT05GSUdfWUFNQUhBX1lBUzUzMD15CiMgZW5kIG9mIE1hZ25ldG9t
ZXRlciBzZW5zb3JzCgojCiMgTXVsdGlwbGV4ZXJzCiMKQ09ORklHX0lJT19NVVg9eQojIGVu
ZCBvZiBNdWx0aXBsZXhlcnMKCiMKIyBJbmNsaW5vbWV0ZXIgc2Vuc29ycwojCiMgZW5kIG9m
IEluY2xpbm9tZXRlciBzZW5zb3JzCgpDT05GSUdfSUlPX0dUU19LVU5JVF9URVNUPXkKQ09O
RklHX0lJT19SRVNDQUxFX0tVTklUX1RFU1Q9eQpDT05GSUdfSUlPX0ZPUk1BVF9LVU5JVF9U
RVNUPXkKCiMKIyBUcmlnZ2VycyAtIHN0YW5kYWxvbmUKIwojIENPTkZJR19JSU9fSFJUSU1F
Ul9UUklHR0VSIGlzIG5vdCBzZXQKIyBDT05GSUdfSUlPX0lOVEVSUlVQVF9UUklHR0VSIGlz
IG5vdCBzZXQKIyBDT05GSUdfSUlPX1RJR0hUTE9PUF9UUklHR0VSIGlzIG5vdCBzZXQKIyBD
T05GSUdfSUlPX1NZU0ZTX1RSSUdHRVIgaXMgbm90IHNldAojIGVuZCBvZiBUcmlnZ2VycyAt
IHN0YW5kYWxvbmUKCiMKIyBMaW5lYXIgYW5kIGFuZ3VsYXIgcG9zaXRpb24gc2Vuc29ycwoj
CiMgZW5kIG9mIExpbmVhciBhbmQgYW5ndWxhciBwb3NpdGlvbiBzZW5zb3JzCgojCiMgRGln
aXRhbCBwb3RlbnRpb21ldGVycwojCkNPTkZJR19BRDUxMTA9eQojIENPTkZJR19BRDUyNzIg
aXMgbm90IHNldApDT05GSUdfRFMxODAzPXkKQ09ORklHX01BWDU0MzI9eQpDT05GSUdfTUNQ
NDAxOD15CkNPTkZJR19NQ1A0NTMxPXkKQ09ORklHX1RQTDAxMDI9eQojIGVuZCBvZiBEaWdp
dGFsIHBvdGVudGlvbWV0ZXJzCgojCiMgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCiMKQ09ORklH
X0xNUDkxMDAwPXkKIyBlbmQgb2YgRGlnaXRhbCBwb3RlbnRpb3N0YXRzCgojCiMgUHJlc3N1
cmUgc2Vuc29ycwojCiMgQ09ORklHX0FCUDA2ME1HIGlzIG5vdCBzZXQKIyBDT05GSUdfUk9I
TV9CTTEzOTAgaXMgbm90IHNldApDT05GSUdfQk1QMjgwPXkKQ09ORklHX0JNUDI4MF9JMkM9
eQojIENPTkZJR19ETEhMNjBEIGlzIG5vdCBzZXQKQ09ORklHX0RQUzMxMD15CiMgQ09ORklH
X0hQMDMgaXMgbm90IHNldApDT05GSUdfSFNDMDMwUEE9eQpDT05GSUdfSFNDMDMwUEFfSTJD
PXkKQ09ORklHX0lDUDEwMTAwPXkKQ09ORklHX01QTDExNT15CkNPTkZJR19NUEwxMTVfSTJD
PXkKQ09ORklHX01QTDMxMTU9eQpDT05GSUdfTVBSTFMwMDI1UEE9eQpDT05GSUdfTVBSTFMw
MDI1UEFfSTJDPXkKQ09ORklHX01TNTYxMT15CkNPTkZJR19NUzU2MTFfSTJDPXkKQ09ORklH
X01TNTYzNz15CiMgQ09ORklHX0lJT19TVF9QUkVTUyBpcyBub3Qgc2V0CiMgQ09ORklHX1Q1
NDAzIGlzIG5vdCBzZXQKIyBDT05GSUdfSFAyMDZDIGlzIG5vdCBzZXQKIyBDT05GSUdfWlBB
MjMyNiBpcyBub3Qgc2V0CiMgZW5kIG9mIFByZXNzdXJlIHNlbnNvcnMKCiMKIyBMaWdodG5p
bmcgc2Vuc29ycwojCiMgZW5kIG9mIExpZ2h0bmluZyBzZW5zb3JzCgojCiMgUHJveGltaXR5
IGFuZCBkaXN0YW5jZSBzZW5zb3JzCiMKIyBDT05GSUdfQ1JPU19FQ19NS0JQX1BST1hJTUlU
WSBpcyBub3Qgc2V0CkNPTkZJR19JUlNEMjAwPXkKQ09ORklHX0lTTDI5NTAxPXkKIyBDT05G
SUdfTElEQVJfTElURV9WMiBpcyBub3Qgc2V0CkNPTkZJR19NQjEyMzI9eQojIENPTkZJR19Q
SU5HIGlzIG5vdCBzZXQKQ09ORklHX1JGRDc3NDAyPXkKQ09ORklHX1NSRjA0PXkKQ09ORklH
X1NYX0NPTU1PTj15CiMgQ09ORklHX1NYOTMxMCBpcyBub3Qgc2V0CkNPTkZJR19TWDkzMjQ9
eQpDT05GSUdfU1g5MzYwPXkKQ09ORklHX1NYOTUwMD15CkNPTkZJR19TUkYwOD15CkNPTkZJ
R19WQ05MMzAyMD15CkNPTkZJR19WTDUzTDBYX0kyQz15CiMgZW5kIG9mIFByb3hpbWl0eSBh
bmQgZGlzdGFuY2Ugc2Vuc29ycwoKIwojIFJlc29sdmVyIHRvIGRpZ2l0YWwgY29udmVydGVy
cwojCiMgZW5kIG9mIFJlc29sdmVyIHRvIGRpZ2l0YWwgY29udmVydGVycwoKIwojIFRlbXBl
cmF0dXJlIHNlbnNvcnMKIwpDT05GSUdfTUxYOTA2MTQ9eQojIENPTkZJR19NTFg5MDYzMiBp
cyBub3Qgc2V0CiMgQ09ORklHX01MWDkwNjM1IGlzIG5vdCBzZXQKQ09ORklHX1RNUDAwNj15
CkNPTkZJR19UTVAwMDc9eQojIENPTkZJR19UTVAxMTcgaXMgbm90IHNldApDT05GSUdfVFNZ
UzAxPXkKIyBDT05GSUdfVFNZUzAyRCBpcyBub3Qgc2V0CiMgQ09ORklHX01BWDMwMjA4IGlz
IG5vdCBzZXQKIyBDT05GSUdfTUNQOTYwMCBpcyBub3Qgc2V0CiMgZW5kIG9mIFRlbXBlcmF0
dXJlIHNlbnNvcnMKCkNPTkZJR19QV009eQpDT05GSUdfUFdNX0FUTUVMX0hMQ0RDX1BXTT15
CkNPTkZJR19QV01fQVRNRUxfVENCPXkKQ09ORklHX1BXTV9DTEs9eQpDT05GSUdfUFdNX0NS
T1NfRUM9eQpDT05GSUdfUFdNX0ZTTF9GVE09eQojIENPTkZJR19QV01fSU5URUxfTEdNIGlz
IG5vdCBzZXQKIyBDT05GSUdfUFdNX0xQMzk0MyBpcyBub3Qgc2V0CiMgQ09ORklHX1BXTV9M
UFNTX1BMQVRGT1JNIGlzIG5vdCBzZXQKIyBDT05GSUdfUFdNX05UWEVDIGlzIG5vdCBzZXQK
Q09ORklHX1BXTV9QQ0E5Njg1PXkKQ09ORklHX1BXTV9TVE1QRT15CkNPTkZJR19QV01fVFdM
PXkKQ09ORklHX1BXTV9UV0xfTEVEPXkKQ09ORklHX1BXTV9YSUxJTlg9eQoKIwojIElSUSBj
aGlwIHN1cHBvcnQKIwpDT05GSUdfSVJRQ0hJUD15CkNPTkZJR19BTF9GSUM9eQpDT05GSUdf
TEFOOTY2WF9PSUM9eQojIENPTkZJR19YSUxJTlhfSU5UQyBpcyBub3Qgc2V0CiMgZW5kIG9m
IElSUSBjaGlwIHN1cHBvcnQKCiMgQ09ORklHX0lQQUNLX0JVUyBpcyBub3Qgc2V0CiMgQ09O
RklHX1JFU0VUX0NPTlRST0xMRVIgaXMgbm90IHNldAoKIwojIFBIWSBTdWJzeXN0ZW0KIwpD
T05GSUdfR0VORVJJQ19QSFk9eQpDT05GSUdfR0VORVJJQ19QSFlfTUlQSV9EUEhZPXkKQ09O
RklHX1BIWV9DQU5fVFJBTlNDRUlWRVI9eQoKIwojIFBIWSBkcml2ZXJzIGZvciBCcm9hZGNv
bSBwbGF0Zm9ybXMKIwpDT05GSUdfQkNNX0tPTkFfVVNCMl9QSFk9eQojIGVuZCBvZiBQSFkg
ZHJpdmVycyBmb3IgQnJvYWRjb20gcGxhdGZvcm1zCgpDT05GSUdfUEhZX0NBREVOQ0VfVE9S
UkVOVD15CiMgQ09ORklHX1BIWV9DQURFTkNFX0RQSFkgaXMgbm90IHNldAojIENPTkZJR19Q
SFlfQ0FERU5DRV9EUEhZX1JYIGlzIG5vdCBzZXQKQ09ORklHX1BIWV9DQURFTkNFX1NBTFZP
PXkKQ09ORklHX1BIWV9QWEFfMjhOTV9IU0lDPXkKQ09ORklHX1BIWV9QWEFfMjhOTV9VU0Iy
PXkKIyBDT05GSUdfUEhZX0xBTjk2NlhfU0VSREVTIGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZ
X09DRUxPVF9TRVJERVMgaXMgbm90IHNldAojIENPTkZJR19QSFlfSU5URUxfTEdNX0NPTUJP
IGlzIG5vdCBzZXQKIyBDT05GSUdfUEhZX0lOVEVMX0xHTV9FTU1DIGlzIG5vdCBzZXQKIyBl
bmQgb2YgUEhZIFN1YnN5c3RlbQoKQ09ORklHX1BPV0VSQ0FQPXkKQ09ORklHX0lETEVfSU5K
RUNUPXkKIyBDT05GSUdfRFRQTSBpcyBub3Qgc2V0CkNPTkZJR19NQ0I9eQojIENPTkZJR19N
Q0JfTFBDIGlzIG5vdCBzZXQKCiMKIyBQZXJmb3JtYW5jZSBtb25pdG9yIHN1cHBvcnQKIwoj
IGVuZCBvZiBQZXJmb3JtYW5jZSBtb25pdG9yIHN1cHBvcnQKCiMgQ09ORklHX1JBUyBpcyBu
b3Qgc2V0CgojCiMgQW5kcm9pZAojCiMgQ09ORklHX0FORFJPSURfQklOREVSX0lQQyBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEFuZHJvaWQKCiMgQ09ORklHX0RBWCBpcyBub3Qgc2V0CkNPTkZJ
R19OVk1FTT15CkNPTkZJR19OVk1FTV9TWVNGUz15CkNPTkZJR19OVk1FTV9MQVlPVVRTPXkK
CiMKIyBMYXlvdXQgVHlwZXMKIwojIENPTkZJR19OVk1FTV9MQVlPVVRfU0wyOF9WUEQgaXMg
bm90IHNldApDT05GSUdfTlZNRU1fTEFZT1VUX09OSUVfVExWPXkKIyBlbmQgb2YgTGF5b3V0
IFR5cGVzCgpDT05GSUdfTlZNRU1fUk1FTT15CkNPTkZJR19OVk1FTV9VX0JPT1RfRU5WPXkK
CiMKIyBIVyB0cmFjaW5nIHN1cHBvcnQKIwpDT05GSUdfU1RNPXkKQ09ORklHX1NUTV9QUk9U
T19CQVNJQz15CkNPTkZJR19TVE1fUFJPVE9fU1lTX1Q9eQpDT05GSUdfU1RNX0RVTU1ZPXkK
IyBDT05GSUdfU1RNX1NPVVJDRV9DT05TT0xFIGlzIG5vdCBzZXQKQ09ORklHX1NUTV9TT1VS
Q0VfSEVBUlRCRUFUPXkKQ09ORklHX0lOVEVMX1RIPXkKQ09ORklHX0lOVEVMX1RIX0FDUEk9
eQpDT05GSUdfSU5URUxfVEhfR1RIPXkKQ09ORklHX0lOVEVMX1RIX1NUSD15CkNPTkZJR19J
TlRFTF9USF9NU1U9eQpDT05GSUdfSU5URUxfVEhfUFRJPXkKIyBlbmQgb2YgSFcgdHJhY2lu
ZyBzdXBwb3J0CgojIENPTkZJR19GUEdBIGlzIG5vdCBzZXQKIyBDT05GSUdfRlNJIGlzIG5v
dCBzZXQKIyBDT05GSUdfVEVFIGlzIG5vdCBzZXQKQ09ORklHX01VTFRJUExFWEVSPXkKCiMK
IyBNdWx0aXBsZXhlciBkcml2ZXJzCiMKQ09ORklHX01VWF9BREc3OTJBPXkKQ09ORklHX01V
WF9HUElPPXkKQ09ORklHX01VWF9NTUlPPXkKIyBlbmQgb2YgTXVsdGlwbGV4ZXIgZHJpdmVy
cwoKQ09ORklHX1BNX09QUD15CkNPTkZJR19TSU9YPXkKIyBDT05GSUdfU0lPWF9CVVNfR1BJ
TyBpcyBub3Qgc2V0CkNPTkZJR19TTElNQlVTPXkKQ09ORklHX1NMSU1fUUNPTV9DVFJMPXkK
Q09ORklHX0lOVEVSQ09OTkVDVD15CkNPTkZJR19DT1VOVEVSPXkKQ09ORklHX0lOVEVSUlVQ
VF9DTlQ9eQojIENPTkZJR19NT1NUIGlzIG5vdCBzZXQKIyBDT05GSUdfUEVDSSBpcyBub3Qg
c2V0CkNPTkZJR19IVEU9eQojIGVuZCBvZiBEZXZpY2UgRHJpdmVycwoKIwojIEZpbGUgc3lz
dGVtcwojCkNPTkZJR19EQ0FDSEVfV09SRF9BQ0NFU1M9eQpDT05GSUdfVkFMSURBVEVfRlNf
UEFSU0VSPXkKQ09ORklHX0ZTX0lPTUFQPXkKQ09ORklHX0JVRkZFUl9IRUFEPXkKQ09ORklH
X0xFR0FDWV9ESVJFQ1RfSU89eQojIENPTkZJR19FWFQyX0ZTIGlzIG5vdCBzZXQKQ09ORklH
X0VYVDNfRlM9eQpDT05GSUdfRVhUM19GU19QT1NJWF9BQ0w9eQpDT05GSUdfRVhUM19GU19T
RUNVUklUWT15CkNPTkZJR19FWFQ0X0ZTPXkKQ09ORklHX0VYVDRfVVNFX0ZPUl9FWFQyPXkK
Q09ORklHX0VYVDRfRlNfUE9TSVhfQUNMPXkKQ09ORklHX0VYVDRfRlNfU0VDVVJJVFk9eQoj
IENPTkZJR19FWFQ0X0RFQlVHIGlzIG5vdCBzZXQKQ09ORklHX0VYVDRfS1VOSVRfVEVTVFM9
eQpDT05GSUdfSkJEMj15CkNPTkZJR19KQkQyX0RFQlVHPXkKQ09ORklHX0ZTX01CQ0FDSEU9
eQpDT05GSUdfUkVJU0VSRlNfRlM9eQpDT05GSUdfUkVJU0VSRlNfQ0hFQ0s9eQpDT05GSUdf
UkVJU0VSRlNfUFJPQ19JTkZPPXkKIyBDT05GSUdfUkVJU0VSRlNfRlNfWEFUVFIgaXMgbm90
IHNldAojIENPTkZJR19KRlNfRlMgaXMgbm90IHNldAojIENPTkZJR19YRlNfRlMgaXMgbm90
IHNldApDT05GSUdfR0ZTMl9GUz15CiMgQ09ORklHX0JUUkZTX0ZTIGlzIG5vdCBzZXQKQ09O
RklHX05JTEZTMl9GUz15CkNPTkZJR19GMkZTX0ZTPXkKIyBDT05GSUdfRjJGU19TVEFUX0ZT
IGlzIG5vdCBzZXQKIyBDT05GSUdfRjJGU19GU19YQVRUUiBpcyBub3Qgc2V0CiMgQ09ORklH
X0YyRlNfQ0hFQ0tfRlMgaXMgbm90IHNldApDT05GSUdfRjJGU19GQVVMVF9JTkpFQ1RJT049
eQojIENPTkZJR19GMkZTX0ZTX0NPTVBSRVNTSU9OIGlzIG5vdCBzZXQKQ09ORklHX0YyRlNf
SU9TVEFUPXkKQ09ORklHX0JDQUNIRUZTX0ZTPXkKIyBDT05GSUdfQkNBQ0hFRlNfUVVPVEEg
aXMgbm90IHNldAojIENPTkZJR19CQ0FDSEVGU19FUkFTVVJFX0NPRElORyBpcyBub3Qgc2V0
CkNPTkZJR19CQ0FDSEVGU19QT1NJWF9BQ0w9eQojIENPTkZJR19CQ0FDSEVGU19ERUJVRyBp
cyBub3Qgc2V0CiMgQ09ORklHX0JDQUNIRUZTX1RFU1RTIGlzIG5vdCBzZXQKIyBDT05GSUdf
QkNBQ0hFRlNfTE9DS19USU1FX1NUQVRTIGlzIG5vdCBzZXQKQ09ORklHX0JDQUNIRUZTX05P
X0xBVEVOQ1lfQUNDVD15CkNPTkZJR19CQ0FDSEVGU19TSVhfT1BUSU1JU1RJQ19TUElOPXkK
Q09ORklHX01FQU5fQU5EX1ZBUklBTkNFX1VOSVRfVEVTVD15CkNPTkZJR19GU19QT1NJWF9B
Q0w9eQpDT05GSUdfRVhQT1JURlM9eQojIENPTkZJR19FWFBPUlRGU19CTE9DS19PUFMgaXMg
bm90IHNldApDT05GSUdfRklMRV9MT0NLSU5HPXkKIyBDT05GSUdfRlNfRU5DUllQVElPTiBp
cyBub3Qgc2V0CiMgQ09ORklHX0ZTX1ZFUklUWSBpcyBub3Qgc2V0CkNPTkZJR19GU05PVElG
WT15CiMgQ09ORklHX0ROT1RJRlkgaXMgbm90IHNldApDT05GSUdfSU5PVElGWV9VU0VSPXkK
Q09ORklHX0ZBTk9USUZZPXkKIyBDT05GSUdfUVVPVEEgaXMgbm90IHNldAojIENPTkZJR19R
VU9UQV9ORVRMSU5LX0lOVEVSRkFDRSBpcyBub3Qgc2V0CkNPTkZJR19RVU9UQUNUTD15CkNP
TkZJR19BVVRPRlNfRlM9eQojIENPTkZJR19GVVNFX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
T1ZFUkxBWV9GUyBpcyBub3Qgc2V0CgojCiMgQ2FjaGVzCiMKQ09ORklHX05FVEZTX1NVUFBP
UlQ9eQojIENPTkZJR19ORVRGU19TVEFUUyBpcyBub3Qgc2V0CiMgQ09ORklHX0ZTQ0FDSEUg
aXMgbm90IHNldAojIGVuZCBvZiBDYWNoZXMKCiMKIyBDRC1ST00vRFZEIEZpbGVzeXN0ZW1z
CiMKQ09ORklHX0lTTzk2NjBfRlM9eQpDT05GSUdfSk9MSUVUPXkKIyBDT05GSUdfWklTT0ZT
IGlzIG5vdCBzZXQKQ09ORklHX1VERl9GUz15CiMgZW5kIG9mIENELVJPTS9EVkQgRmlsZXN5
c3RlbXMKCiMKIyBET1MvRkFUL0VYRkFUL05UIEZpbGVzeXN0ZW1zCiMKQ09ORklHX0ZBVF9G
Uz15CkNPTkZJR19NU0RPU19GUz15CkNPTkZJR19WRkFUX0ZTPXkKQ09ORklHX0ZBVF9ERUZB
VUxUX0NPREVQQUdFPTQzNwpDT05GSUdfRkFUX0RFRkFVTFRfSU9DSEFSU0VUPSJpc284ODU5
LTEiCiMgQ09ORklHX0ZBVF9ERUZBVUxUX1VURjggaXMgbm90IHNldApDT05GSUdfRkFUX0tV
TklUX1RFU1Q9eQpDT05GSUdfRVhGQVRfRlM9eQpDT05GSUdfRVhGQVRfREVGQVVMVF9JT0NI
QVJTRVQ9InV0ZjgiCkNPTkZJR19OVEZTM19GUz15CkNPTkZJR19OVEZTM19MWlhfWFBSRVNT
PXkKQ09ORklHX05URlMzX0ZTX1BPU0lYX0FDTD15CkNPTkZJR19OVEZTX0ZTPXkKIyBlbmQg
b2YgRE9TL0ZBVC9FWEZBVC9OVCBGaWxlc3lzdGVtcwoKIwojIFBzZXVkbyBmaWxlc3lzdGVt
cwojCkNPTkZJR19QUk9DX0ZTPXkKIyBDT05GSUdfUFJPQ19LQ09SRSBpcyBub3Qgc2V0CkNP
TkZJR19QUk9DX1NZU0NUTD15CkNPTkZJR19QUk9DX1BBR0VfTU9OSVRPUj15CkNPTkZJR19Q
Uk9DX0NISUxEUkVOPXkKQ09ORklHX1BST0NfUElEX0FSQ0hfU1RBVFVTPXkKQ09ORklHX0tF
Uk5GUz15CkNPTkZJR19TWVNGUz15CkNPTkZJR19UTVBGUz15CiMgQ09ORklHX1RNUEZTX1BP
U0lYX0FDTCBpcyBub3Qgc2V0CkNPTkZJR19UTVBGU19YQVRUUj15CiMgQ09ORklHX1RNUEZT
X1FVT1RBIGlzIG5vdCBzZXQKIyBDT05GSUdfSFVHRVRMQkZTIGlzIG5vdCBzZXQKQ09ORklH
X0NPTkZJR0ZTX0ZTPXkKQ09ORklHX0VGSVZBUl9GUz15CiMgZW5kIG9mIFBzZXVkbyBmaWxl
c3lzdGVtcwoKQ09ORklHX01JU0NfRklMRVNZU1RFTVM9eQojIENPTkZJR19PUkFOR0VGU19G
UyBpcyBub3Qgc2V0CiMgQ09ORklHX0FERlNfRlMgaXMgbm90IHNldAojIENPTkZJR19BRkZT
X0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfRUNSWVBUX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdf
SEZTX0ZTIGlzIG5vdCBzZXQKIyBDT05GSUdfSEZTUExVU19GUyBpcyBub3Qgc2V0CkNPTkZJ
R19CRUZTX0ZTPXkKQ09ORklHX0JFRlNfREVCVUc9eQpDT05GSUdfQkZTX0ZTPXkKQ09ORklH
X0VGU19GUz15CkNPTkZJR19KRkZTMl9GUz15CkNPTkZJR19KRkZTMl9GU19ERUJVRz0wCiMg
Q09ORklHX0pGRlMyX0ZTX1dSSVRFQlVGRkVSIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZGUzJf
U1VNTUFSWSBpcyBub3Qgc2V0CkNPTkZJR19KRkZTMl9GU19YQVRUUj15CkNPTkZJR19KRkZT
Ml9GU19QT1NJWF9BQ0w9eQpDT05GSUdfSkZGUzJfRlNfU0VDVVJJVFk9eQpDT05GSUdfSkZG
UzJfQ09NUFJFU1NJT05fT1BUSU9OUz15CkNPTkZJR19KRkZTMl9aTElCPXkKQ09ORklHX0pG
RlMyX0xaTz15CiMgQ09ORklHX0pGRlMyX1JUSU1FIGlzIG5vdCBzZXQKIyBDT05GSUdfSkZG
UzJfUlVCSU4gaXMgbm90IHNldAojIENPTkZJR19KRkZTMl9DTU9ERV9OT05FIGlzIG5vdCBz
ZXQKIyBDT05GSUdfSkZGUzJfQ01PREVfUFJJT1JJVFkgaXMgbm90IHNldAojIENPTkZJR19K
RkZTMl9DTU9ERV9TSVpFIGlzIG5vdCBzZXQKQ09ORklHX0pGRlMyX0NNT0RFX0ZBVk9VUkxa
Tz15CkNPTkZJR19DUkFNRlM9eQpDT05GSUdfQ1JBTUZTX0JMT0NLREVWPXkKIyBDT05GSUdf
Q1JBTUZTX01URCBpcyBub3Qgc2V0CiMgQ09ORklHX1NRVUFTSEZTIGlzIG5vdCBzZXQKQ09O
RklHX1ZYRlNfRlM9eQojIENPTkZJR19NSU5JWF9GUyBpcyBub3Qgc2V0CiMgQ09ORklHX09N
RlNfRlMgaXMgbm90IHNldApDT05GSUdfSFBGU19GUz15CiMgQ09ORklHX1FOWDRGU19GUyBp
cyBub3Qgc2V0CkNPTkZJR19RTlg2RlNfRlM9eQojIENPTkZJR19RTlg2RlNfREVCVUcgaXMg
bm90IHNldApDT05GSUdfUk9NRlNfRlM9eQojIENPTkZJR19ST01GU19CQUNLRURfQllfQkxP
Q0sgaXMgbm90IHNldApDT05GSUdfUk9NRlNfQkFDS0VEX0JZX01URD15CiMgQ09ORklHX1JP
TUZTX0JBQ0tFRF9CWV9CT1RIIGlzIG5vdCBzZXQKQ09ORklHX1JPTUZTX09OX01URD15CkNP
TkZJR19QU1RPUkU9eQpDT05GSUdfUFNUT1JFX0RFRkFVTFRfS01TR19CWVRFUz0xMDI0MApD
T05GSUdfUFNUT1JFX0NPTVBSRVNTPXkKQ09ORklHX1BTVE9SRV9DT05TT0xFPXkKIyBDT05G
SUdfUFNUT1JFX1BNU0cgaXMgbm90IHNldAojIENPTkZJR19QU1RPUkVfUkFNIGlzIG5vdCBz
ZXQKIyBDT05GSUdfUFNUT1JFX0JMSyBpcyBub3Qgc2V0CkNPTkZJR19TWVNWX0ZTPXkKQ09O
RklHX1VGU19GUz15CkNPTkZJR19VRlNfRlNfV1JJVEU9eQojIENPTkZJR19VRlNfREVCVUcg
aXMgbm90IHNldAojIENPTkZJR19FUk9GU19GUyBpcyBub3Qgc2V0CkNPTkZJR19ORVRXT1JL
X0ZJTEVTWVNURU1TPXkKIyBDT05GSUdfOVBfRlMgaXMgbm90IHNldApDT05GSUdfTkxTPXkK
Q09ORklHX05MU19ERUZBVUxUPSJpc284ODU5LTEiCiMgQ09ORklHX05MU19DT0RFUEFHRV80
MzcgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzczNz15CkNPTkZJR19OTFNfQ09E
RVBBR0VfNzc1PXkKQ09ORklHX05MU19DT0RFUEFHRV84NTA9eQojIENPTkZJR19OTFNfQ09E
RVBBR0VfODUyIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzg1NSBpcyBub3Qg
c2V0CkNPTkZJR19OTFNfQ09ERVBBR0VfODU3PXkKQ09ORklHX05MU19DT0RFUEFHRV84NjA9
eQojIENPTkZJR19OTFNfQ09ERVBBR0VfODYxIGlzIG5vdCBzZXQKIyBDT05GSUdfTkxTX0NP
REVQQUdFXzg2MiBpcyBub3Qgc2V0CiMgQ09ORklHX05MU19DT0RFUEFHRV84NjMgaXMgbm90
IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg2ND15CiMgQ09ORklHX05MU19DT0RFUEFHRV84
NjUgaXMgbm90IHNldApDT05GSUdfTkxTX0NPREVQQUdFXzg2Nj15CkNPTkZJR19OTFNfQ09E
RVBBR0VfODY5PXkKIyBDT05GSUdfTkxTX0NPREVQQUdFXzkzNiBpcyBub3Qgc2V0CkNPTkZJ
R19OTFNfQ09ERVBBR0VfOTUwPXkKQ09ORklHX05MU19DT0RFUEFHRV85MzI9eQpDT05GSUdf
TkxTX0NPREVQQUdFXzk0OT15CiMgQ09ORklHX05MU19DT0RFUEFHRV84NzQgaXMgbm90IHNl
dApDT05GSUdfTkxTX0lTTzg4NTlfOD15CiMgQ09ORklHX05MU19DT0RFUEFHRV8xMjUwIGlz
IG5vdCBzZXQKIyBDT05GSUdfTkxTX0NPREVQQUdFXzEyNTEgaXMgbm90IHNldAojIENPTkZJ
R19OTFNfQVNDSUkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMT15CiMgQ09ORklH
X05MU19JU084ODU5XzIgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlfMz15CiMgQ09O
RklHX05MU19JU084ODU5XzQgaXMgbm90IHNldAojIENPTkZJR19OTFNfSVNPODg1OV81IGlz
IG5vdCBzZXQKQ09ORklHX05MU19JU084ODU5XzY9eQpDT05GSUdfTkxTX0lTTzg4NTlfNz15
CiMgQ09ORklHX05MU19JU084ODU5XzkgaXMgbm90IHNldApDT05GSUdfTkxTX0lTTzg4NTlf
MTM9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTQ9eQpDT05GSUdfTkxTX0lTTzg4NTlfMTU9eQpD
T05GSUdfTkxTX0tPSThfUj15CkNPTkZJR19OTFNfS09JOF9VPXkKQ09ORklHX05MU19NQUNf
Uk9NQU49eQojIENPTkZJR19OTFNfTUFDX0NFTFRJQyBpcyBub3Qgc2V0CiMgQ09ORklHX05M
U19NQUNfQ0VOVEVVUk8gaXMgbm90IHNldApDT05GSUdfTkxTX01BQ19DUk9BVElBTj15CkNP
TkZJR19OTFNfTUFDX0NZUklMTElDPXkKIyBDT05GSUdfTkxTX01BQ19HQUVMSUMgaXMgbm90
IHNldApDT05GSUdfTkxTX01BQ19HUkVFSz15CkNPTkZJR19OTFNfTUFDX0lDRUxBTkQ9eQoj
IENPTkZJR19OTFNfTUFDX0lOVUlUIGlzIG5vdCBzZXQKQ09ORklHX05MU19NQUNfUk9NQU5J
QU49eQojIENPTkZJR19OTFNfTUFDX1RVUktJU0ggaXMgbm90IHNldApDT05GSUdfTkxTX1VU
Rjg9eQpDT05GSUdfVU5JQ09ERT15CkNPTkZJR19VTklDT0RFX05PUk1BTElaQVRJT05fU0VM
RlRFU1Q9eQpDT05GSUdfSU9fV1E9eQojIGVuZCBvZiBGaWxlIHN5c3RlbXMKCiMKIyBTZWN1
cml0eSBvcHRpb25zCiMKQ09ORklHX0tFWVM9eQojIENPTkZJR19LRVlTX1JFUVVFU1RfQ0FD
SEUgaXMgbm90IHNldApDT05GSUdfUEVSU0lTVEVOVF9LRVlSSU5HUz15CkNPTkZJR19UUlVT
VEVEX0tFWVM9eQpDT05GSUdfSEFWRV9UUlVTVEVEX0tFWVM9eQpDT05GSUdfVFJVU1RFRF9L
RVlTX1RQTT15CiMgQ09ORklHX0VOQ1JZUFRFRF9LRVlTIGlzIG5vdCBzZXQKIyBDT05GSUdf
S0VZX0RIX09QRVJBVElPTlMgaXMgbm90IHNldAojIENPTkZJR19TRUNVUklUWV9ETUVTR19S
RVNUUklDVCBpcyBub3Qgc2V0CiMgQ09ORklHX1NFQ1VSSVRZIGlzIG5vdCBzZXQKIyBDT05G
SUdfU0VDVVJJVFlGUyBpcyBub3Qgc2V0CiMgQ09ORklHX0hBUkRFTkVEX1VTRVJDT1BZIGlz
IG5vdCBzZXQKQ09ORklHX0ZPUlRJRllfU09VUkNFPXkKQ09ORklHX1NUQVRJQ19VU0VSTU9E
RUhFTFBFUj15CkNPTkZJR19TVEFUSUNfVVNFUk1PREVIRUxQRVJfUEFUSD0iL3NiaW4vdXNl
cm1vZGUtaGVscGVyIgojIENPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX09G
RiBpcyBub3Qgc2V0CkNPTkZJR19QUk9DX01FTV9SRVNUUklDVF9GT0xMX0ZPUkNFX1BUUkFD
RT15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX0ZPTExfRk9SQ0VfQUxMIGlzIG5vdCBz
ZXQKQ09ORklHX1BST0NfTUVNX1JFU1RSSUNUX09QRU5fUkVBRF9PRkY9eQojIENPTkZJR19Q
Uk9DX01FTV9SRVNUUklDVF9PUEVOX1JFQURfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdf
UFJPQ19NRU1fUkVTVFJJQ1RfT1BFTl9SRUFEX0FMTCBpcyBub3Qgc2V0CkNPTkZJR19QUk9D
X01FTV9SRVNUUklDVF9PUEVOX1dSSVRFX09GRj15CiMgQ09ORklHX1BST0NfTUVNX1JFU1RS
SUNUX09QRU5fV1JJVEVfUFRSQUNFIGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVT
VFJJQ1RfT1BFTl9XUklURV9BTEwgaXMgbm90IHNldApDT05GSUdfUFJPQ19NRU1fUkVTVFJJ
Q1RfV1JJVEVfT0ZGPXkKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfV1JJVEVfUFRSQUNF
IGlzIG5vdCBzZXQKIyBDT05GSUdfUFJPQ19NRU1fUkVTVFJJQ1RfV1JJVEVfQUxMIGlzIG5v
dCBzZXQKIyBDT05GSUdfSU1BX1NFQ1VSRV9BTkRfT1JfVFJVU1RFRF9CT09UIGlzIG5vdCBz
ZXQKQ09ORklHX0RFRkFVTFRfU0VDVVJJVFlfREFDPXkKQ09ORklHX0xTTT0ibGFuZGxvY2ss
bG9ja2Rvd24seWFtYSxsb2FkcGluLHNhZmVzZXRpZCxicGYiCgojCiMgS2VybmVsIGhhcmRl
bmluZyBvcHRpb25zCiMKCiMKIyBNZW1vcnkgaW5pdGlhbGl6YXRpb24KIwpDT05GSUdfQ0Nf
SEFTX0FVVE9fVkFSX0lOSVRfUEFUVEVSTj15CkNPTkZJR19DQ19IQVNfQVVUT19WQVJfSU5J
VF9aRVJPX0JBUkU9eQpDT05GSUdfQ0NfSEFTX0FVVE9fVkFSX0lOSVRfWkVSTz15CiMgQ09O
RklHX0lOSVRfU1RBQ0tfTk9ORSBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRfU1RBQ0tfQUxM
X1BBVFRFUk4gaXMgbm90IHNldApDT05GSUdfSU5JVF9TVEFDS19BTExfWkVSTz15CiMgQ09O
RklHX0lOSVRfT05fQUxMT0NfREVGQVVMVF9PTiBpcyBub3Qgc2V0CiMgQ09ORklHX0lOSVRf
T05fRlJFRV9ERUZBVUxUX09OIGlzIG5vdCBzZXQKQ09ORklHX0NDX0hBU19aRVJPX0NBTExf
VVNFRF9SRUdTPXkKQ09ORklHX1pFUk9fQ0FMTF9VU0VEX1JFR1M9eQojIGVuZCBvZiBNZW1v
cnkgaW5pdGlhbGl6YXRpb24KCiMKIyBIYXJkZW5pbmcgb2Yga2VybmVsIGRhdGEgc3RydWN0
dXJlcwojCiMgQ09ORklHX0xJU1RfSEFSREVORUQgaXMgbm90IHNldAojIENPTkZJR19CVUdf
T05fREFUQV9DT1JSVVBUSU9OIGlzIG5vdCBzZXQKIyBlbmQgb2YgSGFyZGVuaW5nIG9mIGtl
cm5lbCBkYXRhIHN0cnVjdHVyZXMKCkNPTkZJR19SQU5EU1RSVUNUX05PTkU9eQojIGVuZCBv
ZiBLZXJuZWwgaGFyZGVuaW5nIG9wdGlvbnMKIyBlbmQgb2YgU2VjdXJpdHkgb3B0aW9ucwoK
Q09ORklHX1hPUl9CTE9DS1M9eQpDT05GSUdfQVNZTkNfQ09SRT15CkNPTkZJR19BU1lOQ19N
RU1DUFk9eQpDT05GSUdfQVNZTkNfWE9SPXkKQ09ORklHX0FTWU5DX1BRPXkKQ09ORklHX0FT
WU5DX1JBSUQ2X1JFQ09WPXkKQ09ORklHX0NSWVBUTz15CgojCiMgQ3J5cHRvIGNvcmUgb3Ig
aGVscGVyCiMKQ09ORklHX0NSWVBUT19BTEdBUEk9eQpDT05GSUdfQ1JZUFRPX0FMR0FQSTI9
eQpDT05GSUdfQ1JZUFRPX0FFQUQ9eQpDT05GSUdfQ1JZUFRPX0FFQUQyPXkKQ09ORklHX0NS
WVBUT19TSUcyPXkKQ09ORklHX0NSWVBUT19TS0NJUEhFUj15CkNPTkZJR19DUllQVE9fU0tD
SVBIRVIyPXkKQ09ORklHX0NSWVBUT19IQVNIPXkKQ09ORklHX0NSWVBUT19IQVNIMj15CkNP
TkZJR19DUllQVE9fUk5HPXkKQ09ORklHX0NSWVBUT19STkcyPXkKQ09ORklHX0NSWVBUT19S
TkdfREVGQVVMVD15CkNPTkZJR19DUllQVE9fQUtDSVBIRVIyPXkKQ09ORklHX0NSWVBUT19B
S0NJUEhFUj15CkNPTkZJR19DUllQVE9fS1BQMj15CkNPTkZJR19DUllQVE9fS1BQPXkKQ09O
RklHX0NSWVBUT19BQ09NUDI9eQpDT05GSUdfQ1JZUFRPX01BTkFHRVI9eQpDT05GSUdfQ1JZ
UFRPX01BTkFHRVIyPXkKIyBDT05GSUdfQ1JZUFRPX1VTRVIgaXMgbm90IHNldApDT05GSUdf
Q1JZUFRPX01BTkFHRVJfRElTQUJMRV9URVNUUz15CkNPTkZJR19DUllQVE9fTlVMTD15CkNP
TkZJR19DUllQVE9fTlVMTDI9eQojIENPTkZJR19DUllQVE9fUENSWVBUIGlzIG5vdCBzZXQK
Q09ORklHX0NSWVBUT19DUllQVEQ9eQpDT05GSUdfQ1JZUFRPX0FVVEhFTkM9eQpDT05GSUdf
Q1JZUFRPX1NJTUQ9eQojIGVuZCBvZiBDcnlwdG8gY29yZSBvciBoZWxwZXIKCiMKIyBQdWJs
aWMta2V5IGNyeXB0b2dyYXBoeQojCiMgQ09ORklHX0NSWVBUT19SU0EgaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0RIPXkKQ09ORklHX0NSWVBUT19ESF9SRkM3OTE5X0dST1VQUz15CkNP
TkZJR19DUllQVE9fRUNDPXkKQ09ORklHX0NSWVBUT19FQ0RIPXkKIyBDT05GSUdfQ1JZUFRP
X0VDRFNBIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19FQ1JEU0E9eQpDT05GSUdfQ1JZUFRP
X0NVUlZFMjU1MTk9eQojIGVuZCBvZiBQdWJsaWMta2V5IGNyeXB0b2dyYXBoeQoKIwojIEJs
b2NrIGNpcGhlcnMKIwpDT05GSUdfQ1JZUFRPX0FFUz15CiMgQ09ORklHX0NSWVBUT19BRVNf
VEkgaXMgbm90IHNldAojIENPTkZJR19DUllQVE9fQU5VQklTIGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19BUklBPXkKQ09ORklHX0NSWVBUT19CTE9XRklTSD15CkNPTkZJR19DUllQVE9f
QkxPV0ZJU0hfQ09NTU9OPXkKIyBDT05GSUdfQ1JZUFRPX0NBTUVMTElBIGlzIG5vdCBzZXQK
Q09ORklHX0NSWVBUT19DQVNUX0NPTU1PTj15CkNPTkZJR19DUllQVE9fQ0FTVDU9eQpDT05G
SUdfQ1JZUFRPX0NBU1Q2PXkKQ09ORklHX0NSWVBUT19ERVM9eQpDT05GSUdfQ1JZUFRPX0ZD
UllQVD15CkNPTkZJR19DUllQVE9fS0hBWkFEPXkKQ09ORklHX0NSWVBUT19TRUVEPXkKQ09O
RklHX0NSWVBUT19TRVJQRU5UPXkKIyBDT05GSUdfQ1JZUFRPX1NNNF9HRU5FUklDIGlzIG5v
dCBzZXQKQ09ORklHX0NSWVBUT19URUE9eQojIENPTkZJR19DUllQVE9fVFdPRklTSCBpcyBu
b3Qgc2V0CiMgZW5kIG9mIEJsb2NrIGNpcGhlcnMKCiMKIyBMZW5ndGgtcHJlc2VydmluZyBj
aXBoZXJzIGFuZCBtb2RlcwojCkNPTkZJR19DUllQVE9fQURJQU5UVU09eQpDT05GSUdfQ1JZ
UFRPX0FSQzQ9eQpDT05GSUdfQ1JZUFRPX0NIQUNIQTIwPXkKQ09ORklHX0NSWVBUT19DQkM9
eQpDT05GSUdfQ1JZUFRPX0NUUj15CkNPTkZJR19DUllQVE9fQ1RTPXkKQ09ORklHX0NSWVBU
T19FQ0I9eQpDT05GSUdfQ1JZUFRPX0hDVFIyPXkKQ09ORklHX0NSWVBUT19LRVlXUkFQPXkK
IyBDT05GSUdfQ1JZUFRPX0xSVyBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fUENCQz15CkNP
TkZJR19DUllQVE9fWENUUj15CkNPTkZJR19DUllQVE9fWFRTPXkKQ09ORklHX0NSWVBUT19O
SFBPTFkxMzA1PXkKIyBlbmQgb2YgTGVuZ3RoLXByZXNlcnZpbmcgY2lwaGVycyBhbmQgbW9k
ZXMKCiMKIyBBRUFEIChhdXRoZW50aWNhdGVkIGVuY3J5cHRpb24gd2l0aCBhc3NvY2lhdGVk
IGRhdGEpIGNpcGhlcnMKIwojIENPTkZJR19DUllQVE9fQUVHSVMxMjggaXMgbm90IHNldApD
T05GSUdfQ1JZUFRPX0NIQUNIQTIwUE9MWTEzMDU9eQpDT05GSUdfQ1JZUFRPX0NDTT15CiMg
Q09ORklHX0NSWVBUT19HQ00gaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0dFTklWPXkKQ09O
RklHX0NSWVBUT19TRVFJVj15CkNPTkZJR19DUllQVE9fRUNIQUlOSVY9eQpDT05GSUdfQ1JZ
UFRPX0VTU0lWPXkKIyBlbmQgb2YgQUVBRCAoYXV0aGVudGljYXRlZCBlbmNyeXB0aW9uIHdp
dGggYXNzb2NpYXRlZCBkYXRhKSBjaXBoZXJzCgojCiMgSGFzaGVzLCBkaWdlc3RzLCBhbmQg
TUFDcwojCkNPTkZJR19DUllQVE9fQkxBS0UyQj15CkNPTkZJR19DUllQVE9fQ01BQz15CkNP
TkZJR19DUllQVE9fR0hBU0g9eQpDT05GSUdfQ1JZUFRPX0hNQUM9eQpDT05GSUdfQ1JZUFRP
X01END15CkNPTkZJR19DUllQVE9fTUQ1PXkKQ09ORklHX0NSWVBUT19NSUNIQUVMX01JQz15
CkNPTkZJR19DUllQVE9fUE9MWVZBTD15CkNPTkZJR19DUllQVE9fUE9MWTEzMDU9eQpDT05G
SUdfQ1JZUFRPX1JNRDE2MD15CkNPTkZJR19DUllQVE9fU0hBMT15CkNPTkZJR19DUllQVE9f
U0hBMjU2PXkKQ09ORklHX0NSWVBUT19TSEE1MTI9eQpDT05GSUdfQ1JZUFRPX1NIQTM9eQpD
T05GSUdfQ1JZUFRPX1NNMz15CkNPTkZJR19DUllQVE9fU00zX0dFTkVSSUM9eQpDT05GSUdf
Q1JZUFRPX1NUUkVFQk9HPXkKQ09ORklHX0NSWVBUT19WTUFDPXkKQ09ORklHX0NSWVBUT19X
UDUxMj15CkNPTkZJR19DUllQVE9fWENCQz15CkNPTkZJR19DUllQVE9fWFhIQVNIPXkKIyBl
bmQgb2YgSGFzaGVzLCBkaWdlc3RzLCBhbmQgTUFDcwoKIwojIENSQ3MgKGN5Y2xpYyByZWR1
bmRhbmN5IGNoZWNrcykKIwpDT05GSUdfQ1JZUFRPX0NSQzMyQz15CkNPTkZJR19DUllQVE9f
Q1JDMzI9eQpDT05GSUdfQ1JZUFRPX0NSQ1QxMERJRj15CkNPTkZJR19DUllQVE9fQ1JDNjRf
Uk9DS1NPRlQ9eQojIGVuZCBvZiBDUkNzIChjeWNsaWMgcmVkdW5kYW5jeSBjaGVja3MpCgoj
CiMgQ29tcHJlc3Npb24KIwpDT05GSUdfQ1JZUFRPX0RFRkxBVEU9eQojIENPTkZJR19DUllQ
VE9fTFpPIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT184NDI9eQojIENPTkZJR19DUllQVE9f
TFo0IGlzIG5vdCBzZXQKIyBDT05GSUdfQ1JZUFRPX0xaNEhDIGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19aU1REPXkKIyBlbmQgb2YgQ29tcHJlc3Npb24KCiMKIyBSYW5kb20gbnVtYmVy
IGdlbmVyYXRpb24KIwpDT05GSUdfQ1JZUFRPX0FOU0lfQ1BSTkc9eQpDT05GSUdfQ1JZUFRP
X0RSQkdfTUVOVT15CkNPTkZJR19DUllQVE9fRFJCR19ITUFDPXkKIyBDT05GSUdfQ1JZUFRP
X0RSQkdfSEFTSCBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fRFJCR19DVFI9eQpDT05GSUdf
Q1JZUFRPX0RSQkc9eQpDT05GSUdfQ1JZUFRPX0pJVFRFUkVOVFJPUFk9eQpDT05GSUdfQ1JZ
UFRPX0pJVFRFUkVOVFJPUFlfTUVNT1JZX0JMT0NLUz02NApDT05GSUdfQ1JZUFRPX0pJVFRF
UkVOVFJPUFlfTUVNT1JZX0JMT0NLU0laRT0zMgpDT05GSUdfQ1JZUFRPX0pJVFRFUkVOVFJP
UFlfT1NSPTEKIyBlbmQgb2YgUmFuZG9tIG51bWJlciBnZW5lcmF0aW9uCgojCiMgVXNlcnNw
YWNlIGludGVyZmFjZQojCkNPTkZJR19DUllQVE9fVVNFUl9BUEk9eQojIENPTkZJR19DUllQ
VE9fVVNFUl9BUElfSEFTSCBpcyBub3Qgc2V0CiMgQ09ORklHX0NSWVBUT19VU0VSX0FQSV9T
S0NJUEhFUiBpcyBub3Qgc2V0CkNPTkZJR19DUllQVE9fVVNFUl9BUElfUk5HPXkKQ09ORklH
X0NSWVBUT19VU0VSX0FQSV9STkdfQ0FWUD15CkNPTkZJR19DUllQVE9fVVNFUl9BUElfQUVB
RD15CkNPTkZJR19DUllQVE9fVVNFUl9BUElfRU5BQkxFX09CU09MRVRFPXkKIyBlbmQgb2Yg
VXNlcnNwYWNlIGludGVyZmFjZQoKQ09ORklHX0NSWVBUT19IQVNIX0lORk89eQoKIwojIEFj
Y2VsZXJhdGVkIENyeXB0b2dyYXBoaWMgQWxnb3JpdGhtcyBmb3IgQ1BVICh4ODYpCiMKQ09O
RklHX0NSWVBUT19BRVNfTklfSU5URUw9eQpDT05GSUdfQ1JZUFRPX1NFUlBFTlRfU1NFMl81
ODY9eQojIENPTkZJR19DUllQVE9fVFdPRklTSF81ODYgaXMgbm90IHNldAojIENPTkZJR19D
UllQVE9fQ1JDMzJDX0lOVEVMIGlzIG5vdCBzZXQKQ09ORklHX0NSWVBUT19DUkMzMl9QQ0xN
VUw9eQojIGVuZCBvZiBBY2NlbGVyYXRlZCBDcnlwdG9ncmFwaGljIEFsZ29yaXRobXMgZm9y
IENQVSAoeDg2KQoKIyBDT05GSUdfQ1JZUFRPX0hXIGlzIG5vdCBzZXQKIyBDT05GSUdfQVNZ
TU1FVFJJQ19LRVlfVFlQRSBpcyBub3Qgc2V0CgojCiMgQ2VydGlmaWNhdGVzIGZvciBzaWdu
YXR1cmUgY2hlY2tpbmcKIwpDT05GSUdfU1lTVEVNX0JMQUNLTElTVF9LRVlSSU5HPXkKQ09O
RklHX1NZU1RFTV9CTEFDS0xJU1RfSEFTSF9MSVNUPSIiCiMgZW5kIG9mIENlcnRpZmljYXRl
cyBmb3Igc2lnbmF0dXJlIGNoZWNraW5nCgpDT05GSUdfQklOQVJZX1BSSU5URj15CgojCiMg
TGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19SQUlENl9QUT15CiMgQ09ORklHX1JBSUQ2X1BR
X0JFTkNITUFSSyBpcyBub3Qgc2V0CkNPTkZJR19MSU5FQVJfUkFOR0VTPXkKQ09ORklHX1BB
Q0tJTkc9eQpDT05GSUdfQklUUkVWRVJTRT15CkNPTkZJR19HRU5FUklDX1NUUk5DUFlfRlJP
TV9VU0VSPXkKQ09ORklHX0dFTkVSSUNfU1RSTkxFTl9VU0VSPXkKQ09ORklHX0dFTkVSSUNf
TkVUX1VUSUxTPXkKIyBDT05GSUdfQ09SRElDIGlzIG5vdCBzZXQKQ09ORklHX1BSSU1FX05V
TUJFUlM9eQpDT05GSUdfUkFUSU9OQUw9eQpDT05GSUdfR0VORVJJQ19JT01BUD15CkNPTkZJ
R19BUkNIX0hBU19GQVNUX01VTFRJUExJRVI9eQpDT05GSUdfQVJDSF9VU0VfU1lNX0FOTk9U
QVRJT05TPXkKCiMKIyBDcnlwdG8gbGlicmFyeSByb3V0aW5lcwojCkNPTkZJR19DUllQVE9f
TElCX1VUSUxTPXkKQ09ORklHX0NSWVBUT19MSUJfQUVTPXkKQ09ORklHX0NSWVBUT19MSUJf
QUVTQ0ZCPXkKQ09ORklHX0NSWVBUT19MSUJfQVJDND15CkNPTkZJR19DUllQVE9fTElCX0dG
MTI4TVVMPXkKQ09ORklHX0NSWVBUT19MSUJfQkxBS0UyU19HRU5FUklDPXkKQ09ORklHX0NS
WVBUT19MSUJfQ0hBQ0hBX0dFTkVSSUM9eQpDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEE9eQpD
T05GSUdfQ1JZUFRPX0xJQl9DVVJWRTI1NTE5X0dFTkVSSUM9eQojIENPTkZJR19DUllQVE9f
TElCX0NVUlZFMjU1MTkgaXMgbm90IHNldApDT05GSUdfQ1JZUFRPX0xJQl9ERVM9eQpDT05G
SUdfQ1JZUFRPX0xJQl9QT0xZMTMwNV9SU0laRT0xCkNPTkZJR19DUllQVE9fTElCX1BPTFkx
MzA1X0dFTkVSSUM9eQojIENPTkZJR19DUllQVE9fTElCX1BPTFkxMzA1IGlzIG5vdCBzZXQK
IyBDT05GSUdfQ1JZUFRPX0xJQl9DSEFDSEEyMFBPTFkxMzA1IGlzIG5vdCBzZXQKQ09ORklH
X0NSWVBUT19MSUJfU0hBMT15CkNPTkZJR19DUllQVE9fTElCX1NIQTI1Nj15CiMgZW5kIG9m
IENyeXB0byBsaWJyYXJ5IHJvdXRpbmVzCgpDT05GSUdfQ1JDX0NDSVRUPXkKQ09ORklHX0NS
QzE2PXkKQ09ORklHX0NSQ19UMTBESUY9eQpDT05GSUdfQ1JDNjRfUk9DS1NPRlQ9eQpDT05G
SUdfQ1JDX0lUVV9UPXkKQ09ORklHX0NSQzMyPXkKIyBDT05GSUdfQ1JDMzJfU0VMRlRFU1Qg
aXMgbm90IHNldAojIENPTkZJR19DUkMzMl9TTElDRUJZOCBpcyBub3Qgc2V0CkNPTkZJR19D
UkMzMl9TTElDRUJZND15CiMgQ09ORklHX0NSQzMyX1NBUldBVEUgaXMgbm90IHNldAojIENP
TkZJR19DUkMzMl9CSVQgaXMgbm90IHNldApDT05GSUdfQ1JDNjQ9eQpDT05GSUdfQ1JDND15
CkNPTkZJR19DUkM3PXkKQ09ORklHX0xJQkNSQzMyQz15CkNPTkZJR19DUkM4PXkKQ09ORklH
X1hYSEFTSD15CiMgQ09ORklHX1JBTkRPTTMyX1NFTEZURVNUIGlzIG5vdCBzZXQKQ09ORklH
Xzg0Ml9DT01QUkVTUz15CkNPTkZJR184NDJfREVDT01QUkVTUz15CkNPTkZJR19aTElCX0lO
RkxBVEU9eQpDT05GSUdfWkxJQl9ERUZMQVRFPXkKQ09ORklHX0xaT19DT01QUkVTUz15CkNP
TkZJR19MWk9fREVDT01QUkVTUz15CkNPTkZJR19MWjRfQ09NUFJFU1M9eQpDT05GSUdfTFo0
SENfQ09NUFJFU1M9eQpDT05GSUdfTFo0X0RFQ09NUFJFU1M9eQpDT05GSUdfWlNURF9DT01N
T049eQpDT05GSUdfWlNURF9DT01QUkVTUz15CkNPTkZJR19aU1REX0RFQ09NUFJFU1M9eQpD
T05GSUdfWFpfREVDPXkKQ09ORklHX1haX0RFQ19YODY9eQpDT05GSUdfWFpfREVDX1BPV0VS
UEM9eQpDT05GSUdfWFpfREVDX0FSTT15CkNPTkZJR19YWl9ERUNfQVJNVEhVTUI9eQpDT05G
SUdfWFpfREVDX1NQQVJDPXkKIyBDT05GSUdfWFpfREVDX01JQ1JPTFpNQSBpcyBub3Qgc2V0
CkNPTkZJR19YWl9ERUNfQkNKPXkKQ09ORklHX1haX0RFQ19URVNUPXkKQ09ORklHX0dFTkVS
SUNfQUxMT0NBVE9SPXkKQ09ORklHX0JDSD15CkNPTkZJR19CQ0hfQ09OU1RfUEFSQU1TPXkK
Q09ORklHX1RFWFRTRUFSQ0g9eQpDT05GSUdfVEVYVFNFQVJDSF9LTVA9eQpDT05GSUdfVEVY
VFNFQVJDSF9CTT15CkNPTkZJR19URVhUU0VBUkNIX0ZTTT15CkNPTkZJR19JTlRFUlZBTF9U
UkVFPXkKQ09ORklHX1hBUlJBWV9NVUxUST15CkNPTkZJR19BU1NPQ0lBVElWRV9BUlJBWT15
CkNPTkZJR19DTE9TVVJFUz15CkNPTkZJR19IQVNfSU9NRU09eQpDT05GSUdfSEFTX0lPUE9S
VD15CkNPTkZJR19IQVNfSU9QT1JUX01BUD15CkNPTkZJR19IQVNfRE1BPXkKQ09ORklHX0RN
QV9PUFM9eQpDT05GSUdfTkVFRF9TR19ETUFfTEVOR1RIPXkKQ09ORklHX05FRURfRE1BX01B
UF9TVEFURT15CkNPTkZJR19ETUFfREVDTEFSRV9DT0hFUkVOVD15CkNPTkZJR19ETUFfTkVF
RF9TWU5DPXkKIyBDT05GSUdfRE1BX0NNQSBpcyBub3Qgc2V0CkNPTkZJR19ETUFfQVBJX0RF
QlVHPXkKIyBDT05GSUdfRE1BX0FQSV9ERUJVR19TRyBpcyBub3Qgc2V0CkNPTkZJR19TR0xf
QUxMT0M9eQpDT05GSUdfQ0hFQ0tfU0lHTkFUVVJFPXkKQ09ORklHX0NQVV9STUFQPXkKQ09O
RklHX0RRTD15CkNPTkZJR19HTE9CPXkKIyBDT05GSUdfR0xPQl9TRUxGVEVTVCBpcyBub3Qg
c2V0CkNPTkZJR19OTEFUVFI9eQpDT05GSUdfQ0xaX1RBQj15CiMgQ09ORklHX0lSUV9QT0xM
IGlzIG5vdCBzZXQKQ09ORklHX01QSUxJQj15CkNPTkZJR19MSUJGRFQ9eQpDT05GSUdfT0lE
X1JFR0lTVFJZPXkKQ09ORklHX1VDUzJfU1RSSU5HPXkKQ09ORklHX0hBVkVfR0VORVJJQ19W
RFNPPXkKQ09ORklHX0dFTkVSSUNfR0VUVElNRU9GREFZPXkKQ09ORklHX0dFTkVSSUNfVkRT
T18zMj15CkNPTkZJR19HRU5FUklDX1ZEU09fVElNRV9OUz15CkNPTkZJR19HRU5FUklDX1ZE
U09fT1ZFUkZMT1dfUFJPVEVDVD15CkNPTkZJR19GT05UX1NVUFBPUlQ9eQpDT05GSUdfRk9O
VF84eDE2PXkKQ09ORklHX0ZPTlRfQVVUT1NFTEVDVD15CkNPTkZJR19TR19QT09MPXkKQ09O
RklHX0FSQ0hfSEFTX0NQVV9DQUNIRV9JTlZBTElEQVRFX01FTVJFR0lPTj15CkNPTkZJR19B
UkNIX1NUQUNLV0FMSz15CkNPTkZJR19TVEFDS0RFUE9UPXkKQ09ORklHX1NUQUNLREVQT1Rf
QUxXQVlTX0lOSVQ9eQpDT05GSUdfU1RBQ0tERVBPVF9NQVhfRlJBTUVTPTY0CkNPTkZJR19T
QklUTUFQPXkKQ09ORklHX0xXUV9URVNUPXkKIyBlbmQgb2YgTGlicmFyeSByb3V0aW5lcwoK
Q09ORklHX0FTTjFfRU5DT0RFUj15CkNPTkZJR19QT0xZTk9NSUFMPXkKQ09ORklHX0ZJUk1X
QVJFX1RBQkxFPXkKCiMKIyBLZXJuZWwgaGFja2luZwojCgojCiMgcHJpbnRrIGFuZCBkbWVz
ZyBvcHRpb25zCiMKQ09ORklHX1BSSU5US19USU1FPXkKQ09ORklHX1BSSU5US19DQUxMRVI9
eQojIENPTkZJR19TVEFDS1RSQUNFX0JVSUxEX0lEIGlzIG5vdCBzZXQKQ09ORklHX0NPTlNP
TEVfTE9HTEVWRUxfREVGQVVMVD03CkNPTkZJR19DT05TT0xFX0xPR0xFVkVMX1FVSUVUPTQK
Q09ORklHX01FU1NBR0VfTE9HTEVWRUxfREVGQVVMVD00CkNPTkZJR19EWU5BTUlDX0RFQlVH
PXkKQ09ORklHX0RZTkFNSUNfREVCVUdfQ09SRT15CkNPTkZJR19TWU1CT0xJQ19FUlJOQU1F
PXkKQ09ORklHX0RFQlVHX0JVR1ZFUkJPU0U9eQojIGVuZCBvZiBwcmludGsgYW5kIGRtZXNn
IG9wdGlvbnMKCiMgQ09ORklHX0RFQlVHX0tFUk5FTCBpcyBub3Qgc2V0CgojCiMgQ29tcGls
ZS10aW1lIGNoZWNrcyBhbmQgY29tcGlsZXIgb3B0aW9ucwojCkNPTkZJR19BU19IQVNfTk9O
X0NPTlNUX1VMRUIxMjg9eQpDT05GSUdfRlJBTUVfV0FSTj0xMDI0CkNPTkZJR19TVFJJUF9B
U01fU1lNUz15CiMgQ09ORklHX0hFQURFUlNfSU5TVEFMTCBpcyBub3Qgc2V0CiMgQ09ORklH
X0RFQlVHX1NFQ1RJT05fTUlTTUFUQ0ggaXMgbm90IHNldAojIENPTkZJR19TRUNUSU9OX01J
U01BVENIX1dBUk5fT05MWSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX1dBTlRfRlJBTUVfUE9J
TlRFUlM9eQpDT05GSUdfRlJBTUVfUE9JTlRFUj15CiMgZW5kIG9mIENvbXBpbGUtdGltZSBj
aGVja3MgYW5kIGNvbXBpbGVyIG9wdGlvbnMKCiMKIyBHZW5lcmljIEtlcm5lbCBEZWJ1Z2dp
bmcgSW5zdHJ1bWVudHMKIwpDT05GSUdfTUFHSUNfU1lTUlE9eQpDT05GSUdfTUFHSUNfU1lT
UlFfREVGQVVMVF9FTkFCTEU9MHgxCiMgQ09ORklHX01BR0lDX1NZU1JRX1NFUklBTCBpcyBu
b3Qgc2V0CiMgQ09ORklHX0RFQlVHX0ZTIGlzIG5vdCBzZXQKQ09ORklHX0hBVkVfQVJDSF9L
R0RCPXkKQ09ORklHX0FSQ0hfSEFTX1VCU0FOPXkKQ09ORklHX1VCU0FOPXkKQ09ORklHX1VC
U0FOX1RSQVA9eQpDT05GSUdfQ0NfSEFTX1VCU0FOX0JPVU5EU19TVFJJQ1Q9eQpDT05GSUdf
VUJTQU5fQk9VTkRTPXkKQ09ORklHX1VCU0FOX0JPVU5EU19TVFJJQ1Q9eQojIENPTkZJR19V
QlNBTl9TSElGVCBpcyBub3Qgc2V0CkNPTkZJR19VQlNBTl9ESVZfWkVSTz15CiMgQ09ORklH
X1VCU0FOX1VOUkVBQ0hBQkxFIGlzIG5vdCBzZXQKIyBDT05GSUdfVUJTQU5fU0lHTkVEX1dS
QVAgaXMgbm90IHNldApDT05GSUdfVUJTQU5fQk9PTD15CiMgQ09ORklHX1VCU0FOX0VOVU0g
aXMgbm90IHNldApDT05GSUdfSEFWRV9LQ1NBTl9DT01QSUxFUj15CiMgZW5kIG9mIEdlbmVy
aWMgS2VybmVsIERlYnVnZ2luZyBJbnN0cnVtZW50cwoKIwojIE5ldHdvcmtpbmcgRGVidWdn
aW5nCiMKIyBlbmQgb2YgTmV0d29ya2luZyBEZWJ1Z2dpbmcKCiMKIyBNZW1vcnkgRGVidWdn
aW5nCiMKQ09ORklHX1BBR0VfRVhURU5TSU9OPXkKQ09ORklHX1NMVUJfREVCVUc9eQpDT05G
SUdfU0xVQl9ERUJVR19PTj15CkNPTkZJR19QQUdFX1BPSVNPTklORz15CiMgQ09ORklHX0RF
QlVHX1JPREFUQV9URVNUIGlzIG5vdCBzZXQKQ09ORklHX0FSQ0hfSEFTX0RFQlVHX1dYPXkK
IyBDT05GSUdfREVCVUdfV1ggaXMgbm90IHNldApDT05GSUdfR0VORVJJQ19QVERVTVA9eQpD
T05GSUdfUFREVU1QX0NPUkU9eQpDT05GSUdfSEFWRV9ERUJVR19LTUVNTEVBSz15CkNPTkZJ
R19BUkNIX0hBU19ERUJVR19WTV9QR1RBQkxFPXkKIyBDT05GSUdfREVCVUdfVk1fUEdUQUJM
RSBpcyBub3Qgc2V0CkNPTkZJR19BUkNIX0hBU19ERUJVR19WSVJUVUFMPXkKQ09ORklHX0RF
QlVHX01FTU9SWV9JTklUPXkKQ09ORklHX0FSQ0hfU1VQUE9SVFNfS01BUF9MT0NBTF9GT1JD
RV9NQVA9eQpDT05GSUdfSEFWRV9ERUJVR19TVEFDS09WRVJGTE9XPXkKQ09ORklHX0NPREVf
VEFHR0lORz15CkNPTkZJR19NRU1fQUxMT0NfUFJPRklMSU5HPXkKQ09ORklHX01FTV9BTExP
Q19QUk9GSUxJTkdfRU5BQkxFRF9CWV9ERUZBVUxUPXkKQ09ORklHX01FTV9BTExPQ19QUk9G
SUxJTkdfREVCVUc9eQpDT05GSUdfQ0NfSEFTX0tBU0FOX0dFTkVSSUM9eQpDT05GSUdfQ0Nf
SEFTX1dPUktJTkdfTk9TQU5JVElaRV9BRERSRVNTPXkKQ09ORklHX0hBVkVfQVJDSF9LRkVO
Q0U9eQojIENPTkZJR19LRkVOQ0UgaXMgbm90IHNldAojIGVuZCBvZiBNZW1vcnkgRGVidWdn
aW5nCgojCiMgRGVidWcgT29wcywgTG9ja3VwcyBhbmQgSGFuZ3MKIwojIENPTkZJR19QQU5J
Q19PTl9PT1BTIGlzIG5vdCBzZXQKQ09ORklHX1BBTklDX09OX09PUFNfVkFMVUU9MApDT05G
SUdfUEFOSUNfVElNRU9VVD0wCkNPTkZJR19IQVZFX0hBUkRMT0NLVVBfREVURUNUT1JfQlVE
RFk9eQojIGVuZCBvZiBEZWJ1ZyBPb3BzLCBMb2NrdXBzIGFuZCBIYW5ncwoKIwojIFNjaGVk
dWxlciBEZWJ1Z2dpbmcKIwojIENPTkZJR19TQ0hFRFNUQVRTIGlzIG5vdCBzZXQKIyBlbmQg
b2YgU2NoZWR1bGVyIERlYnVnZ2luZwoKIyBDT05GSUdfREVCVUdfVElNRUtFRVBJTkcgaXMg
bm90IHNldAoKIwojIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11dGV4ZXMsIGV0Yy4u
LikKIwpDT05GSUdfTE9DS19ERUJVR0dJTkdfU1VQUE9SVD15CkNPTkZJR19XV19NVVRFWF9T
RUxGVEVTVD15CiMgZW5kIG9mIExvY2sgRGVidWdnaW5nIChzcGlubG9ja3MsIG11dGV4ZXMs
IGV0Yy4uLikKCkNPTkZJR19ERUJVR19JUlFGTEFHUz15CkNPTkZJR19TVEFDS1RSQUNFPXkK
IyBDT05GSUdfV0FSTl9BTExfVU5TRUVERURfUkFORE9NIGlzIG5vdCBzZXQKCiMKIyBEZWJ1
ZyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCiMKIyBDT05GSUdfREVCVUdfQ0xPU1VSRVMgaXMg
bm90IHNldAojIGVuZCBvZiBEZWJ1ZyBrZXJuZWwgZGF0YSBzdHJ1Y3R1cmVzCgojCiMgUkNV
IERlYnVnZ2luZwojCkNPTkZJR19SQ1VfQ1BVX1NUQUxMX1RJTUVPVVQ9MjEKQ09ORklHX1JD
VV9FWFBfQ1BVX1NUQUxMX1RJTUVPVVQ9MAojIENPTkZJR19SQ1VfQ1BVX1NUQUxMX0NQVVRJ
TUUgaXMgbm90IHNldAojIGVuZCBvZiBSQ1UgRGVidWdnaW5nCgpDT05GSUdfVVNFUl9TVEFD
S1RSQUNFX1NVUFBPUlQ9eQpDT05GSUdfSEFWRV9SRVRIT09LPXkKQ09ORklHX0hBVkVfRlVO
Q1RJT05fVFJBQ0VSPXkKQ09ORklHX0hBVkVfRlVOQ1RJT05fR1JBUEhfVFJBQ0VSPXkKQ09O
RklHX0hBVkVfRlVOQ1RJT05fR1JBUEhfUkVUVkFMPXkKQ09ORklHX0hBVkVfRFlOQU1JQ19G
VFJBQ0U9eQpDT05GSUdfSEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1M9eQpDT05GSUdf
SEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX0RJUkVDVF9DQUxMUz15CkNPTkZJR19IQVZFX0RZ
TkFNSUNfRlRSQUNFX05PX1BBVENIQUJMRT15CkNPTkZJR19IQVZFX0ZUUkFDRV9NQ09VTlRf
UkVDT1JEPXkKQ09ORklHX0hBVkVfU1lTQ0FMTF9UUkFDRVBPSU5UUz15CkNPTkZJR19IQVZF
X0NfUkVDT1JETUNPVU5UPXkKQ09ORklHX0hBVkVfQlVJTERUSU1FX01DT1VOVF9TT1JUPXkK
Q09ORklHX1RSQUNJTkdfU1VQUE9SVD15CiMgQ09ORklHX0ZUUkFDRSBpcyBub3Qgc2V0CkNP
TkZJR19TQU1QTEVTPXkKQ09ORklHX1NBTVBMRV9BVVhESVNQTEFZPXkKQ09ORklHX1NBTVBM
RV9LT0JKRUNUPXkKIyBDT05GSUdfU0FNUExFX1dBVENIRE9HIGlzIG5vdCBzZXQKQ09ORklH
X0FSQ0hfSEFTX0RFVk1FTV9JU19BTExPV0VEPXkKCiMKIyB4ODYgRGVidWdnaW5nCiMKQ09O
RklHX1g4Nl9WRVJCT1NFX0JPT1RVUD15CkNPTkZJR19FQVJMWV9QUklOVEs9eQpDT05GSUdf
RUZJX1BHVF9EVU1QPXkKQ09ORklHX0hBVkVfTU1JT1RSQUNFX1NVUFBPUlQ9eQojIENPTkZJ
R19JT19ERUxBWV8wWDgwIGlzIG5vdCBzZXQKQ09ORklHX0lPX0RFTEFZXzBYRUQ9eQojIENP
TkZJR19JT19ERUxBWV9VREVMQVkgaXMgbm90IHNldAojIENPTkZJR19JT19ERUxBWV9OT05F
IGlzIG5vdCBzZXQKQ09ORklHX1VOV0lOREVSX0ZSQU1FX1BPSU5URVI9eQojIGVuZCBvZiB4
ODYgRGVidWdnaW5nCgojCiMgS2VybmVsIFRlc3RpbmcgYW5kIENvdmVyYWdlCiMKQ09ORklH
X0tVTklUPXkKQ09ORklHX0tVTklUX0RFQlVHRlM9eQojIENPTkZJR19LVU5JVF9GQVVMVF9U
RVNUIGlzIG5vdCBzZXQKQ09ORklHX0tVTklUX1RFU1Q9eQpDT05GSUdfS1VOSVRfRVhBTVBM
RV9URVNUPXkKQ09ORklHX0tVTklUX0FMTF9URVNUUz15CkNPTkZJR19LVU5JVF9ERUZBVUxU
X0VOQUJMRUQ9eQpDT05GSUdfQ0NfSEFTX1NBTkNPVl9UUkFDRV9QQz15CkNPTkZJR19SVU5U
SU1FX1RFU1RJTkdfTUVOVT15CiMgQ09ORklHX1RFU1RfREhSWSBpcyBub3Qgc2V0CkNPTkZJ
R19DUFVNQVNLX0tVTklUX1RFU1Q9eQpDT05GSUdfVEVTVF9MSVNUX1NPUlQ9eQpDT05GSUdf
VEVTVF9TT1JUPXkKQ09ORklHX1RFU1RfSU9WX0lURVI9eQojIENPTkZJR19BVE9NSUM2NF9T
RUxGVEVTVCBpcyBub3Qgc2V0CkNPTkZJR19BU1lOQ19SQUlENl9URVNUPXkKQ09ORklHX1RF
U1RfSEVYRFVNUD15CkNPTkZJR19TVFJJTkdfS1VOSVRfVEVTVD15CkNPTkZJR19TVFJJTkdf
SEVMUEVSU19LVU5JVF9URVNUPXkKIyBDT05GSUdfVEVTVF9LU1RSVE9YIGlzIG5vdCBzZXQK
IyBDT05GSUdfVEVTVF9QUklOVEYgaXMgbm90IHNldApDT05GSUdfVEVTVF9TQ0FORj15CkNP
TkZJR19URVNUX0JJVE1BUD15CkNPTkZJR19URVNUX1VVSUQ9eQpDT05GSUdfVEVTVF9YQVJS
QVk9eQpDT05GSUdfVEVTVF9NQVBMRV9UUkVFPXkKQ09ORklHX1RFU1RfUkhBU0hUQUJMRT15
CkNPTkZJR19URVNUX0lEQT15CkNPTkZJR19URVNUX0JJVE9QUz15CkNPTkZJR19GSU5EX0JJ
VF9CRU5DSE1BUks9eQojIENPTkZJR19URVNUX0ZJUk1XQVJFIGlzIG5vdCBzZXQKQ09ORklH
X1RFU1RfU1lTQ1RMPXkKQ09ORklHX0JJVEZJRUxEX0tVTklUPXkKQ09ORklHX0NIRUNLU1VN
X0tVTklUPXkKQ09ORklHX0hBU0hfS1VOSVRfVEVTVD15CkNPTkZJR19SRVNPVVJDRV9LVU5J
VF9URVNUPXkKQ09ORklHX1NZU0NUTF9LVU5JVF9URVNUPXkKQ09ORklHX0xJU1RfS1VOSVRf
VEVTVD15CkNPTkZJR19IQVNIVEFCTEVfS1VOSVRfVEVTVD15CkNPTkZJR19MSU5FQVJfUkFO
R0VTX1RFU1Q9eQpDT05GSUdfQ01ETElORV9LVU5JVF9URVNUPXkKQ09ORklHX0JJVFNfVEVT
VD15CkNPTkZJR19TTFVCX0tVTklUX1RFU1Q9eQpDT05GSUdfUkFUSU9OQUxfS1VOSVRfVEVT
VD15CkNPTkZJR19NRU1DUFlfS1VOSVRfVEVTVD15CkNPTkZJR19JU19TSUdORURfVFlQRV9L
VU5JVF9URVNUPXkKQ09ORklHX09WRVJGTE9XX0tVTklUX1RFU1Q9eQpDT05GSUdfU1RBQ0tJ
TklUX0tVTklUX1RFU1Q9eQpDT05GSUdfRk9SVElGWV9LVU5JVF9URVNUPXkKQ09ORklHX0hX
X0JSRUFLUE9JTlRfS1VOSVRfVEVTVD15CkNPTkZJR19TSVBIQVNIX0tVTklUX1RFU1Q9eQpD
T05GSUdfVVNFUkNPUFlfS1VOSVRfVEVTVD15CkNPTkZJR19URVNUX1VERUxBWT15CiMgQ09O
RklHX1RFU1RfRFlOQU1JQ19ERUJVRyBpcyBub3Qgc2V0CkNPTkZJR19URVNUX01FTUNBVF9Q
PXkKIyBDT05GSUdfVEVTVF9NRU1JTklUIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUkVF
X1BBR0VTIGlzIG5vdCBzZXQKIyBDT05GSUdfVEVTVF9GUFUgaXMgbm90IHNldApDT05GSUdf
VEVTVF9DTE9DS1NPVVJDRV9XQVRDSERPRz15CkNPTkZJR19BUkNIX1VTRV9NRU1URVNUPXkK
IyBDT05GSUdfTUVNVEVTVCBpcyBub3Qgc2V0CiMgZW5kIG9mIEtlcm5lbCBUZXN0aW5nIGFu
ZCBDb3ZlcmFnZQoKIwojIFJ1c3QgaGFja2luZwojCiMgZW5kIG9mIFJ1c3QgaGFja2luZwoj
IGVuZCBvZiBLZXJuZWwgaGFja2luZwo=

--------------Tc1IDABLbVK03ADrXWGGX8cK--
.

From: Danilo Krummrich <dakr@redhat.com>
To: mcgrof@kernel.org,
	russ.weight@linux.dev,
	gregkh@linuxfoundation.org
Cc: linux-kernel@vger.kernel.org,
	rust-for-linux@vger.kernel.org,
	Danilo Krummrich <dakr@redhat.com>
Subject: [PATCH 1/2] firmware_loader: annotate doctests as `no_run`
Date: Sun,  7 Jul 2024 02:38:25 +0200
Message-ID: <20240707003835.69090-1-dakr@redhat.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1269994
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.rust-for-linux
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The doctests of `Firmware` are compile-time only tests, since they
require a proper `Device` and a valid path to a (firmware) blob in order
to do something sane on runtime - we can't satisfy both of those
requirements.

Hence, configure the example as `no_run`.

Unfortunately, the kernel's Rust build system can't consider the
`no_run` attribute yet. Hence, for the meantime, wrap the example code
into a new function and never actually call it.

Fixes: de6582833db0 ("rust: add firmware abstractions")
Signed-off-by: Danilo Krummrich <dakr@redhat.com>
---
 rust/kernel/firmware.rs | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/rust/kernel/firmware.rs b/rust/kernel/firmware.rs
index 386c8fb44785..106a928a535e 100644
--- a/rust/kernel/firmware.rs
+++ b/rust/kernel/firmware.rs
@@ -26,14 +26,18 @@
 ///
 /// # Examples
 ///
-/// ```
+/// ```no_run
 /// # use kernel::{c_str, device::Device, firmware::Firmware};
 ///
+/// # fn no_run() -> Result<(), Error> {
 /// # // SAFETY: *NOT* safe, just for the example to get an `ARef<Device>` instance
 /// # let dev = unsafe { Device::from_raw(core::ptr::null_mut()) };
 ///
-/// let fw = Firmware::request(c_str!("path/to/firmware.bin"), &dev).unwrap();
+/// let fw = Firmware::request(c_str!("path/to/firmware.bin"), &dev)?;
 /// let blob = fw.data();
+///
+/// # Ok(())
+/// # }
 /// ```
 pub struct Firmware(NonNull<bindings::firmware>);
 

base-commit: 997197b58bf6e22b8c6ef88a168d8292fa9acec9
-- 
2.45.2

.

From: Jarkko Sakkinen <jarkko@kernel.org>
To: linux-integrity@vger.kernel.org
Cc: Jarkko Sakkinen <jarkko@kernel.org>,
	James Bottomley <James.Bottomley@HansenPartnership.com>,
	Mimi Zohar <zohar@linux.ibm.com>,
	David Howells <dhowells@redhat.com>,
	Paul Moore <paul@paul-moore.com>,
	James Morris <jmorris@namei.org>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	keyrings@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] tpm: validate object type in tpm2_handle_mso()
Date: Sun,  7 Jul 2024 04:09:15 +0300
Message-ID: <20240707010916.78918-1-jarkko@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270000
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.keyrings,org.kernel.vger.linux-integrity,org.kernel.vger.linux-security-module
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tpm2_handle_mso() lacks validation for the object type. Validate that
value is one of the allowed values in order to detect errors.

Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
---
 drivers/char/tpm/tpm2-sessions.c | 44 +++++++++++++++++++++++---------
 include/linux/tpm.h              | 22 ++++++++++++++--
 2 files changed, 52 insertions(+), 14 deletions(-)

diff --git a/drivers/char/tpm/tpm2-sessions.c b/drivers/char/tpm/tpm2-sessions.c
index 907ac9956a78..95f38af605d7 100644
--- a/drivers/char/tpm/tpm2-sessions.c
+++ b/drivers/char/tpm/tpm2-sessions.c
@@ -419,6 +419,27 @@ void tpm_buf_append_hmac_session(struct tpm_chip *chip, struct tpm_buf *buf,
 }
 EXPORT_SYMBOL(tpm_buf_append_hmac_session);
 
+static int tpm2_sha256_update_name(struct sha256_state *sctx, u32 handle, void *name)
+{
+	__be32 handle_be32;
+	int mso;
+
+	mso = tpm2_mso_handle(handle);
+	if (mso < 0)
+		return mso;
+
+	if (mso == TPM2_MSO_PERSISTENT || mso == TPM2_MSO_VOLATILE ||
+	    mso == TPM2_MSO_NVRAM) {
+		sha256_update(sctx, name, name_size(name));
+	} else {
+		handle_be32 = cpu_to_be32(handle);
+
+		sha256_update(sctx, (u8 *)&handle_be32, 4);
+	}
+
+	return 0;
+}
+
 /**
  * tpm_buf_fill_hmac_session() - finalize the session HMAC
  * @chip: the TPM chip structure
@@ -537,17 +558,10 @@ void tpm_buf_fill_hmac_session(struct tpm_chip *chip, struct tpm_buf *buf)
 	sha256_update(&sctx, (u8 *)&head->ordinal, sizeof(head->ordinal));
 	/* add the handle names */
 	for (i = 0; i < handles; i++) {
-		enum tpm2_mso_type mso = tpm2_handle_mso(auth->name_h[i]);
-
-		if (mso == TPM2_MSO_PERSISTENT ||
-		    mso == TPM2_MSO_VOLATILE ||
-		    mso == TPM2_MSO_NVRAM) {
-			sha256_update(&sctx, auth->name[i],
-				      name_size(auth->name[i]));
-		} else {
-			__be32 h = cpu_to_be32(auth->name_h[i]);
-
-			sha256_update(&sctx, (u8 *)&h, 4);
+		if (tpm2_sha256_update_name(&sctx, auth->name_h[i], auth->name[i]) < 0) {
+			dev_err(&chip->dev, "handle with an invalid MSO: 0x%08x\n",
+				auth->name_h[i]);
+			return;
 		}
 	}
 	if (offset_s != tpm_buf_length(buf))
@@ -635,9 +649,15 @@ static int tpm2_read_public(struct tpm_chip *chip, u32 handle, char *name)
 void tpm_buf_append_name(struct tpm_chip *chip, struct tpm_buf *buf,
 			 u32 handle, u8 *name)
 {
-	enum tpm2_mso_type mso = tpm2_handle_mso(handle);
 	struct tpm2_auth *auth = chip->auth;
 	int slot;
+	int mso;
+
+	mso = tpm2_mso_handle(handle);
+	if (mso < 0) {
+		dev_err(&chip->dev, "handle with an invalid MSO: 0x%08x\n", handle);
+		return;
+	}
 
 	slot = (tpm_buf_length(buf) - TPM_HEADER_SIZE)/4;
 	if (slot >= AUTH_MAX_NAMES) {
diff --git a/include/linux/tpm.h b/include/linux/tpm.h
index 21a67dc9efe8..478513cda698 100644
--- a/include/linux/tpm.h
+++ b/include/linux/tpm.h
@@ -304,9 +304,27 @@ enum tpm2_mso_type {
 	TPM2_MSO_PERSISTENT	= 0x81,
 };
 
-static inline enum tpm2_mso_type tpm2_handle_mso(u32 handle)
+/**
+ * tpm2_mso_handle() - Extract handle type from the handle
+ * @handle:	an object handle
+ *
+ * Return:
+ * * A value from &tpm_mso_type on success.
+ * * -EINVAL on failure.
+ */
+static inline int tpm2_mso_handle(u32 handle)
 {
-	return handle >> 24;
+	int mso = handle >> 24;
+
+	if (mso == TPM2_MSO_NVRAM ||
+	    mso == TPM2_MSO_SESSION ||
+	    mso == TPM2_MSO_POLICY ||
+	    mso == TPM2_MSO_PERMANENT ||
+	    mso == TPM2_MSO_VOLATILE ||
+	    mso == TPM2_MSO_PERSISTENT)
+		return mso;
+
+	return -EINVAL;
 }
 
 enum tpm2_capabilities {
-- 
2.45.2

.

From: Gold Side <goldside000@outlook.com>
To: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kernel-janitors@vger.kernel.org" <kernel-janitors@vger.kernel.org>,
	"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>
Subject: [PATCH] Removed extra asterisks from comment beginnings, and removed
 unnecessary comment end
Date: Sun, 7 Jul 2024 03:13:34 +0000
Message-ID: <DM4P223MB0541567CC7F936E69CC200F9F7D92@DM4P223MB0541.NAMP223.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
Content-Type: multipart/mixed;
	boundary="_002_DM4P223MB0541567CC7F936E69CC200F9F7D92DM4P223MB0541NAMP_"
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270010
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

--_002_DM4P223MB0541567CC7F936E69CC200F9F7D92DM4P223MB0541NAMP_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


--_002_DM4P223MB0541567CC7F936E69CC200F9F7D92DM4P223MB0541NAMP_
Content-Type: application/octet-stream; name="903.patch"
Content-Description: 903.patch
Content-Disposition: attachment; filename="903.patch"; size=3442;
	creation-date="Sun, 07 Jul 2024 03:13:29 GMT";
	modification-date="Sun, 07 Jul 2024 03:13:29 GMT"
Content-Transfer-Encoding: base64

RnJvbSAzNTc0ZjA1MTQyMDdmOTYxMGE2OWQ4MmQzZGQwZDAxOGQ2ZGNlNWRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGV2ZW4gRGF2aXMgPGdvbGRzaWRlMDAwQG91dGxvb2suY29t
PgpEYXRlOiBUdWUsIDIgSnVsIDIwMjQgMjI6NTc6MjQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEv
M10gUmVtb3ZlZCBleHRyYSBhc3RlcmlzayBmcm9tIGNvbW1lbnQgYmVnaW5uaW5nCgpJdCBzYXZl
cyBhIGJ5dGUuIEknZCBpbWFnaW5lIGJ5dGVzIGFyZSB2YWx1YWJsZSBpbiBhIHByb2plY3QgbGlr
ZSB0aGlzLgotLS0KIGtlcm5lbC9tb2R1bGUvbWFpbi5jIHwgMiArLQogMSBmaWxlIGNoYW5nZWQs
IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVs
ZS9tYWluLmMgYi9rZXJuZWwvbW9kdWxlL21haW4uYwppbmRleCBkMThhOTRiOTczZTEwMi4uMjVl
NDU2ZjQzODFjNzEgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9tb2R1bGUvbWFpbi5jCisrKyBiL2tlcm5l
bC9tb2R1bGUvbWFpbi5jCkBAIC00NTAsNyArNDUwLDcgQEAgYm9vbCBfX2lzX21vZHVsZV9wZXJj
cHVfYWRkcmVzcyh1bnNpZ25lZCBsb25nIGFkZHIsIHVuc2lnbmVkIGxvbmcgKmNhbl9hZGRyKQog
CXJldHVybiBmYWxzZTsKIH0KIAotLyoqCisvKgogICogaXNfbW9kdWxlX3BlcmNwdV9hZGRyZXNz
KCkgLSB0ZXN0IHdoZXRoZXIgYWRkcmVzcyBpcyBmcm9tIG1vZHVsZSBzdGF0aWMgcGVyY3B1CiAg
KiBAYWRkcjogYWRkcmVzcyB0byB0ZXN0CiAgKgoKRnJvbSAzM2RjMGFhMzk3MzkxM2YzMTA4NDBj
YzhmN2Q1ZDU5OWQ1NzNjMjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBTdGV2ZW4g
RGF2aXMgPGdvbGRzaWRlMDAwQG91dGxvb2suY29tPgpEYXRlOiBUdWUsIDIgSnVsIDIwMjQgMjM6
NDM6MTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDIvM10gUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjb21t
ZW50IGVuZAoKSXQgc3RpbGwgd29ya3MgdGhlIHNhbWUgd2l0aG91dCB0aGF0IGNvbW1lbnQgZW5k
LCBzbyB3aHkgaXMgaXQgaW4gdGhlcmU/Ci0tLQogaW5jbHVkZS9tZW1vcnkvcmVuZXNhcy1ycGMt
aWYuaCB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigt
KQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVtb3J5L3JlbmVzYXMtcnBjLWlmLmggYi9pbmNsdWRl
L21lbW9yeS9yZW5lc2FzLXJwYy1pZi5oCmluZGV4IGI4ZmEzMGZkNmI1MDBjLi41OTFkZDg2ZjU1
Zjg3OSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZW1vcnkvcmVuZXNhcy1ycGMtaWYuaAorKysgYi9p
bmNsdWRlL21lbW9yeS9yZW5lc2FzLXJwYy1pZi5oCkBAIC0xLDQgKzEsNCBAQAotLyogU1BEWC1M
aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy
OiBHUEwtMi4wCiAvKgogICogUmVuZXNhcyBSUEMtSUYgY29yZSBkcml2ZXIKICAqCgpGcm9tIDA3
MmE1NjI0Y2Y2NzYxNGE3ZjY0ZDZiYTE1NzczZjg1ZWU1YTJlMWQgTW9uIFNlcCAxNyAwMDowMDow
MCAyMDAxCkZyb206IFN0ZXZlbiBEYXZpcyA8Z29sZHNpZGUwMDBAb3V0bG9vay5jb20+CkRhdGU6
IFdlZCwgMyBKdWwgMjAyNCAxNjowMDoxNSAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggMy8zXSBSZW1v
dmVkLCBsaWtlLCAzMCwwMDAgbW9yZSB1c2VsZXNzIGFzdGVyaXNrcwoKSXMgdGhlcmUgYSByZWFz
b24gZm9yIHRob3NlIGV4dHJhIGFzdGVyaXNrcyB0byBiZSBpbiB0aGVyZT8gU2VlbXMgdW5uZWNl
c3NhcnkuCi0tLQogc291bmQvc291bmRfY29yZS5jIHwgMTIgKysrKysrLS0tLS0tCiAxIGZpbGUg
Y2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Nv
dW5kL3NvdW5kX2NvcmUuYyBiL3NvdW5kL3NvdW5kX2NvcmUuYwppbmRleCBkODFmZWQxYzEyMjY5
OS4uNmQ0NDZjNWJiOTRhMGYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvdW5kX2NvcmUuYworKysgYi9z
b3VuZC9zb3VuZF9jb3JlLmMKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBzb3VuZF9y
ZW1vdmVfdW5pdChzdHJ1Y3Qgc291bmRfdW5pdCAqKmxpc3QsIGludCB1bml0KQogCiBzdGF0aWMg
c3RydWN0IHNvdW5kX3VuaXQgKmNoYWluc1tTT1VORF9TVEVQXTsKIAotLyoqCisvKgogICoJcmVn
aXN0ZXJfc291bmRfc3BlY2lhbF9kZXZpY2UgLSByZWdpc3RlciBhIHNwZWNpYWwgc291bmQgbm9k
ZQogICoJQGZvcHM6IEZpbGUgb3BlcmF0aW9ucyBmb3IgdGhlIGRyaXZlcgogICoJQHVuaXQ6IFVu
aXQgbnVtYmVyIHRvIGFsbG9jYXRlCkBAIC00MTgsNyArNDE4LDcgQEAgaW50IHJlZ2lzdGVyX3Nv
dW5kX3NwZWNpYWwoY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcywgaW50IHVuaXQp
CiAKIEVYUE9SVF9TWU1CT0wocmVnaXN0ZXJfc291bmRfc3BlY2lhbCk7CiAKLS8qKgorLyoKICAq
CXJlZ2lzdGVyX3NvdW5kX21peGVyIC0gcmVnaXN0ZXIgYSBtaXhlciBkZXZpY2UKICAqCUBmb3Bz
OiBGaWxlIG9wZXJhdGlvbnMgZm9yIHRoZSBkcml2ZXIKICAqCUBkZXY6IFVuaXQgbnVtYmVyIHRv
IGFsbG9jYXRlCkBAIC00NDMsNyArNDQzLDcgQEAgRVhQT1JUX1NZTUJPTChyZWdpc3Rlcl9zb3Vu
ZF9taXhlcik7CiAgKglpbiBvcGVuIC0gc2VlIGJlbG93LgogICovCiAgCi0vKioKKy8qCiAgKgly
ZWdpc3Rlcl9zb3VuZF9kc3AgLSByZWdpc3RlciBhIERTUCBkZXZpY2UKICAqCUBmb3BzOiBGaWxl
IG9wZXJhdGlvbnMgZm9yIHRoZSBkcml2ZXIKICAqCUBkZXY6IFVuaXQgbnVtYmVyIHRvIGFsbG9j
YXRlCkBAIC00NjYsNyArNDY2LDcgQEAgaW50IHJlZ2lzdGVyX3NvdW5kX2RzcChjb25zdCBzdHJ1
Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzLCBpbnQgZGV2KQogCiBFWFBPUlRfU1lNQk9MKHJlZ2lz
dGVyX3NvdW5kX2RzcCk7CiAKLS8qKgorLyoKICAqCXVucmVnaXN0ZXJfc291bmRfc3BlY2lhbCAt
IHVucmVnaXN0ZXIgYSBzcGVjaWFsIHNvdW5kIGRldmljZQogICoJQHVuaXQ6IHVuaXQgbnVtYmVy
IHRvIGFsbG9jYXRlCiAgKgpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgdW5yZWdpc3Rlcl9zb3Vu
ZF9zcGVjaWFsKGludCB1bml0KQogIAogRVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX3NvdW5kX3Nw
ZWNpYWwpOwogCi0vKioKKy8qCiAgKgl1bnJlZ2lzdGVyX3NvdW5kX21peGVyIC0gdW5yZWdpc3Rl
ciBhIG1peGVyCiAgKglAdW5pdDogdW5pdCBudW1iZXIgdG8gYWxsb2NhdGUKICAqCkBAIC00OTgs
NyArNDk4LDcgQEAgdm9pZCB1bnJlZ2lzdGVyX3NvdW5kX21peGVyKGludCB1bml0KQogCiBFWFBP
UlRfU1lNQk9MKHVucmVnaXN0ZXJfc291bmRfbWl4ZXIpOwogCi0vKioKKy8qCiAgKgl1bnJlZ2lz
dGVyX3NvdW5kX2RzcCAtIHVucmVnaXN0ZXIgYSBEU1AgZGV2aWNlCiAgKglAdW5pdDogdW5pdCBu
dW1iZXIgdG8gYWxsb2NhdGUKICAqCg==

--_002_DM4P223MB0541567CC7F936E69CC200F9F7D92DM4P223MB0541NAMP_--
.

From: Gold Side <goldside000@outlook.com>
To: "krzk@kernel.org" <krzk@kernel.org>, "perex@perex.cz" <perex@perex.cz>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kernel-janitors@vger.kernel.org" <kernel-janitors@vger.kernel.org>,
	"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>
Subject: [PATCH 1/3] Removed extra asterisks from comment beginnings, and
 removed unnecessary comment end
Date: Sun, 7 Jul 2024 04:14:20 +0000
Message-ID: <DM4P223MB0541357D7B105C83EF9FCFD5F7D92@DM4P223MB0541.NAMP223.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270012
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

RnJvbSAzNTc0ZjA1MTQyMDdmOTYxMGE2OWQ4MmQzZGQwZDAxOGQ2ZGNlNWRkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGV2ZW4gRGF2aXMgPGdvbGRzaWRlMDAwQG91dGxvb2suY29t
PgpEYXRlOiBUdWUsIDIgSnVsIDIwMjQgMjI6NTc6MjQgLTA0MDAKU3ViamVjdDogW1BBVENIIDEv
M10gUmVtb3ZlZCBleHRyYSBhc3RlcmlzayBmcm9tIGNvbW1lbnQgYmVnaW5uaW5nCgpJdCBzYXZl
cyBhIGJ5dGUuIEknZCBpbWFnaW5lIGJ5dGVzIGFyZSB2YWx1YWJsZSBpbiBhIHByb2plY3QgbGlr
ZSB0aGlzLgpQUzogUGxlYXNlIGZvcmdpdmUgbXkgcHJldmlvdXMgcGF0Y2ggZW1haWwsIEkgZGlk
bid0IGtub3cgdGhlIGd1aWRlbGluZXMgd2VsbC4KU2lnbmVkLW9mZi1ieTogU3RldmVuIERhdmlz
IDxnb2xkc2lkZTAwMEBvdXRsb29rLmNvbQotLS0KwqBrZXJuZWwvbW9kdWxlL21haW4uYyB8IDIg
Ky0KwqAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg
LS1naXQgYS9rZXJuZWwvbW9kdWxlL21haW4uYyBiL2tlcm5lbC9tb2R1bGUvbWFpbi5jCmluZGV4
IGQxOGE5NGI5NzNlMTAyLi4yNWU0NTZmNDM4MWM3MSAxMDA2NDQKLS0tIGEva2VybmVsL21vZHVs
ZS9tYWluLmMKKysrIGIva2VybmVsL21vZHVsZS9tYWluLmMKQEAgLTQ1MCw3ICs0NTAsNyBAQCBi
b29sIF9faXNfbW9kdWxlX3BlcmNwdV9hZGRyZXNzKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWdu
ZWQgbG9uZyAqY2FuX2FkZHIpCsKg4oCC4oCC4oCC4oCC4oCCcmV0dXJuIGZhbHNlOwrCoH0KwqAK
LS8qKgorLyoKwqAgKiBpc19tb2R1bGVfcGVyY3B1X2FkZHJlc3MoKSAtIHRlc3Qgd2hldGhlciBh
ZGRyZXNzIGlzIGZyb20gbW9kdWxlIHN0YXRpYyBwZXJjcHUKwqAgKiBAYWRkcjogYWRkcmVzcyB0
byB0ZXN0CsKgICo=
.

From: Gold Side <goldside000@outlook.com>
To: "perex@perex.cz" <perex@perex.cz>, "krzk@kernel.org" <krzk@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kernel-janitors@vger.kernel.org" <kernel-janitors@vger.kernel.org>,
	"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>
Subject: [PATCH 2/3] Removed extra asterisks from comment beginnings, and
 removed unnecessary comment end
Date: Sun, 7 Jul 2024 04:14:28 +0000
Message-ID: <DM4P223MB054139F737887D40A2CA396FF7D92@DM4P223MB0541.NAMP223.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270013
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From 33dc0aa3973913f310840cc8f7d5d599d573c297 Mon Sep 17 00:00:00 2001=0A=
From: Steven Davis <goldside000@outlook.com>=0A=
Date: Tue, 2 Jul 2024 23:43:15 -0400=0A=
Subject: [PATCH 2/3] Removed unnecessary comment end=0A=
=0A=
It still works the same without that comment end, so why is it in there?=0A=
Signed-off-by: Steven Davis <goldside000@outlook.com>=0A=
---=0A=
=A0include/memory/renesas-rpc-if.h | 2 +-=0A=
=A01 file changed, 1 insertion(+), 1 deletion(-)=0A=
=0A=
diff --git a/include/memory/renesas-rpc-if.h b/include/memory/renesas-rpc-i=
f.h=0A=
index b8fa30fd6b500c..591dd86f55f879 100644=0A=
--- a/include/memory/renesas-rpc-if.h=0A=
+++ b/include/memory/renesas-rpc-if.h=0A=
@@ -1,4 +1,4 @@=0A=
-/* SPDX-License-Identifier: GPL-2.0 */=0A=
+/* SPDX-License-Identifier: GPL-2.0=0A=
=A0/*=0A=
=A0 * Renesas RPC-IF core driver=0A=
=A0 *=0A=
.

From: Gold Side <goldside000@outlook.com>
To: "perex@perex.cz" <perex@perex.cz>, "krzk@kernel.org" <krzk@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"kernel-janitors@vger.kernel.org" <kernel-janitors@vger.kernel.org>,
	"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>
Subject: [PATCH 3/3] Removed extra asterisks from comment beginnings, and
 removed unnecessary comment end
Date: Sun, 7 Jul 2024 04:14:33 +0000
Message-ID: <DM4P223MB054192AAFD5EA92A22AC8323F7D92@DM4P223MB0541.NAMP223.PROD.OUTLOOK.COM>
Accept-Language: en-US
Content-Language: en-US
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270014
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

RnJvbSAwNzJhNTYyNGNmNjc2MTRhN2Y2NGQ2YmExNTc3M2Y4NWVlNWEyZTFkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTdGV2ZW4gRGF2aXMgPGdvbGRzaWRlMDAwQG91dGxvb2suY29t
PgpEYXRlOiBXZWQsIDMgSnVsIDIwMjQgMTY6MDA6MTUgLTA0MDAKU3ViamVjdDogW1BBVENIIDMv
M10gUmVtb3ZlZCwgbGlrZSwgMzAsMDAwIG1vcmUgdXNlbGVzcyBhc3Rlcmlza3MKCklzIHRoZXJl
IGEgcmVhc29uIGZvciB0aG9zZSBleHRyYSBhc3Rlcmlza3MgdG8gYmUgaW4gdGhlcmU/IFNlZW1z
IHVubmVjZXNzYXJ5LgpTaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gRGF2aXMgPGdvbGRzaWRlMDAwQG91
dGxvb2suY29tPgotLS0KwqBzb3VuZC9zb3VuZF9jb3JlLmMgfCAxMiArKysrKystLS0tLS0KwqAx
IGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp
dCBhL3NvdW5kL3NvdW5kX2NvcmUuYyBiL3NvdW5kL3NvdW5kX2NvcmUuYwppbmRleCBkODFmZWQx
YzEyMjY5OS4uNmQ0NDZjNWJiOTRhMGYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvdW5kX2NvcmUuYwor
KysgYi9zb3VuZC9zb3VuZF9jb3JlLmMKQEAgLTMzMSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBz
b3VuZF9yZW1vdmVfdW5pdChzdHJ1Y3Qgc291bmRfdW5pdCAqKmxpc3QsIGludCB1bml0KQrCoArC
oHN0YXRpYyBzdHJ1Y3Qgc291bmRfdW5pdCAqY2hhaW5zW1NPVU5EX1NURVBdOwrCoAotLyoqCisv
KgrCoCAq4oCC4oCC4oCCcmVnaXN0ZXJfc291bmRfc3BlY2lhbF9kZXZpY2UgLSByZWdpc3RlciBh
IHNwZWNpYWwgc291bmQgbm9kZQrCoCAq4oCC4oCC4oCCQGZvcHM6IEZpbGUgb3BlcmF0aW9ucyBm
b3IgdGhlIGRyaXZlcgrCoCAq4oCC4oCC4oCCQHVuaXQ6IFVuaXQgbnVtYmVyIHRvIGFsbG9jYXRl
CkBAIC00MTgsNyArNDE4LDcgQEAgaW50IHJlZ2lzdGVyX3NvdW5kX3NwZWNpYWwoY29uc3Qgc3Ry
dWN0IGZpbGVfb3BlcmF0aW9ucyAqZm9wcywgaW50IHVuaXQpCsKgCsKgRVhQT1JUX1NZTUJPTChy
ZWdpc3Rlcl9zb3VuZF9zcGVjaWFsKTsKwqAKLS8qKgorLyoKwqAgKuKAguKAguKAgnJlZ2lzdGVy
X3NvdW5kX21peGVyIC0gcmVnaXN0ZXIgYSBtaXhlciBkZXZpY2UKwqAgKuKAguKAguKAgkBmb3Bz
OiBGaWxlIG9wZXJhdGlvbnMgZm9yIHRoZSBkcml2ZXIKwqAgKuKAguKAguKAgkBkZXY6IFVuaXQg
bnVtYmVyIHRvIGFsbG9jYXRlCkBAIC00NDMsNyArNDQzLDcgQEAgRVhQT1JUX1NZTUJPTChyZWdp
c3Rlcl9zb3VuZF9taXhlcik7CsKgICrigILigILigIJpbiBvcGVuIC0gc2VlIGJlbG93LgrCoCAq
LwrCoMKgCi0vKioKKy8qCsKgICrigILigILigIJyZWdpc3Rlcl9zb3VuZF9kc3AgLSByZWdpc3Rl
ciBhIERTUCBkZXZpY2UKwqAgKuKAguKAguKAgkBmb3BzOiBGaWxlIG9wZXJhdGlvbnMgZm9yIHRo
ZSBkcml2ZXIKwqAgKuKAguKAguKAgkBkZXY6IFVuaXQgbnVtYmVyIHRvIGFsbG9jYXRlCkBAIC00
NjYsNyArNDY2LDcgQEAgaW50IHJlZ2lzdGVyX3NvdW5kX2RzcChjb25zdCBzdHJ1Y3QgZmlsZV9v
cGVyYXRpb25zICpmb3BzLCBpbnQgZGV2KQrCoArCoEVYUE9SVF9TWU1CT0wocmVnaXN0ZXJfc291
bmRfZHNwKTsKwqAKLS8qKgorLyoKwqAgKuKAguKAguKAgnVucmVnaXN0ZXJfc291bmRfc3BlY2lh
bCAtIHVucmVnaXN0ZXIgYSBzcGVjaWFsIHNvdW5kIGRldmljZQrCoCAq4oCC4oCC4oCCQHVuaXQ6
IHVuaXQgbnVtYmVyIHRvIGFsbG9jYXRlCsKgICoKQEAgLTQ4Myw3ICs0ODMsNyBAQCB2b2lkIHVu
cmVnaXN0ZXJfc291bmRfc3BlY2lhbChpbnQgdW5pdCkKwqDCoArCoEVYUE9SVF9TWU1CT0wodW5y
ZWdpc3Rlcl9zb3VuZF9zcGVjaWFsKTsKwqAKLS8qKgorLyoKwqAgKuKAguKAguKAgnVucmVnaXN0
ZXJfc291bmRfbWl4ZXIgLSB1bnJlZ2lzdGVyIGEgbWl4ZXIKwqAgKuKAguKAguKAgkB1bml0OiB1
bml0IG51bWJlciB0byBhbGxvY2F0ZQrCoCAqCkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCB1bnJl
Z2lzdGVyX3NvdW5kX21peGVyKGludCB1bml0KQrCoArCoEVYUE9SVF9TWU1CT0wodW5yZWdpc3Rl
cl9zb3VuZF9taXhlcik7CsKgCi0vKioKKy8qCsKgICrigILigILigIJ1bnJlZ2lzdGVyX3NvdW5k
X2RzcCAtIHVucmVnaXN0ZXIgYSBEU1AgZGV2aWNlCsKgICrigILigILigIJAdW5pdDogdW5pdCBu
dW1iZXIgdG8gYWxsb2NhdGUKwqAgKgo=
.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Sat, 06 Jul 2024 21:37:17 -0700
Message-ID: <000000000000f8ed54061ca0d9a5@google.com>
Subject: [syzbot] [nfs?] INFO: task hung in nfsd_umount
From: syzbot <syzbot+b568ba42c85a332a88ee@syzkaller.appspotmail.com>
To: Dai.Ngo@oracle.com, chuck.lever@oracle.com, jlayton@kernel.org, 
	kolga@netapp.com, linux-kernel@vger.kernel.org, linux-nfs@vger.kernel.org, 
	neilb@suse.de, syzkaller-bugs@googlegroups.com, tom@talpey.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270015 org.kernel.vger.linux-nfs:86617
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-nfs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    1dd28064d416 Merge tag 'integrity-v6.10-fix' of ssh://ra.k..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=16814d76980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=1ace69f521989b1f
dashboard link: https://syzkaller.appspot.com/bug?extid=b568ba42c85a332a88ee
compiler:       Debian clang version 15.0.6, 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/20c723869b92/disk-1dd28064.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/c2a9a7382516/vmlinux-1dd28064.xz
kernel image: https://storage.googleapis.com/syzbot-assets/9872fe6f2853/bzImage-1dd28064.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+b568ba42c85a332a88ee@syzkaller.appspotmail.com

INFO: task syz.0.2871:13167 blocked for more than 143 seconds.
      Not tainted 6.10.0-rc6-syzkaller-00212-g1dd28064d416 #0
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:syz.0.2871      state:D stack:26704 pid:13167 tgid:13165 ppid:10304  flags:0x00000004
Call Trace:
 <TASK>
 context_switch kernel/sched/core.c:5408 [inline]
 __schedule+0x1796/0x49d0 kernel/sched/core.c:6745
 __schedule_loop kernel/sched/core.c:6822 [inline]
 schedule+0x14b/0x320 kernel/sched/core.c:6837
 schedule_preempt_disabled+0x13/0x30 kernel/sched/core.c:6894
 __mutex_lock_common kernel/locking/mutex.c:684 [inline]
 __mutex_lock+0x6a4/0xd70 kernel/locking/mutex.c:752
 nfsd_shutdown_threads+0x4e/0xd0 fs/nfsd/nfssvc.c:632
 nfsd_umount+0x43/0xd0 fs/nfsd/nfsctl.c:1412
 deactivate_locked_super+0xc4/0x130 fs/super.c:473
 put_fs_context+0x94/0x780 fs/fs_context.c:516
 fscontext_release+0x65/0x80 fs/fsopen.c:73
 __fput+0x24a/0x8a0 fs/file_table.c:422
 task_work_run+0x24f/0x310 kernel/task_work.c:180
 resume_user_mode_work include/linux/resume_user_mode.h:50 [inline]
 exit_to_user_mode_loop kernel/entry/common.c:114 [inline]
 exit_to_user_mode_prepare include/linux/entry-common.h:328 [inline]
 __syscall_exit_to_user_mode_work kernel/entry/common.c:207 [inline]
 syscall_exit_to_user_mode+0x168/0x360 kernel/entry/common.c:218
 do_syscall_64+0x100/0x230 arch/x86/entry/common.c:89
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f11fe775bd9
RSP: 002b:00007f11ff494048 EFLAGS: 00000246 ORIG_RAX: 00000000000001b4
RAX: 0000000000000000 RBX: 00007f11fe903f60 RCX: 00007f11fe775bd9
RDX: 0000000000000000 RSI: ffffffffffffffff RDI: 0000000000000003
RBP: 00007f11fe7e4aa1 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 000000000000000b R14: 00007f11fe903f60 R15: 00007ffc04bba328
 </TASK>

Showing all locks held in the system:
1 lock held by khungtaskd/30:
 #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: rcu_lock_acquire include/linux/rcupdate.h:329 [inline]
 #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: rcu_read_lock include/linux/rcupdate.h:781 [inline]
 #0: ffffffff8e333f20 (rcu_read_lock){....}-{1:2}, at: debug_show_all_locks+0x55/0x2a0 kernel/locking/lockdep.c:6614
3 locks held by kworker/u8:4/66:
 #0: ffff888015089148 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline]
 #0: ffff888015089148 ((wq_completion)events_unbound){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329
 #1: ffffc900020afd00 ((work_completion)(&map->work)){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline]
 #1: ffffc900020afd00 ((work_completion)(&map->work)){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329
 #2: ffffffff8e3391c0 (rcu_state.barrier_mutex){+.+.}-{3:3}, at: rcu_barrier+0x4c/0x530 kernel/rcu/tree.c:4448
4 locks held by udevd/4534:
 #0: ffff88805a0fdd58 (&p->lock){+.+.}-{3:3}, at: seq_read_iter+0xb7/0xd60 fs/seq_file.c:182
 #1: ffff88806542ec88 (&of->mutex#2){+.+.}-{3:3}, at: kernfs_seq_start+0x53/0x3b0 fs/kernfs/file.c:154
 #2: ffff88805af532d8 (kn->active#5){++++}-{0:0}, at: kernfs_seq_start+0x72/0x3b0 fs/kernfs/file.c:155
 #3: ffff8880686c90e8 (&dev->mutex){....}-{3:3}, at: device_lock include/linux/device.h:1009 [inline]
 #3: ffff8880686c90e8 (&dev->mutex){....}-{3:3}, at: uevent_show+0x17d/0x340 drivers/base/core.c:2743
2 locks held by getty/4842:
 #0: ffff88802f9d10a0 (&tty->ldisc_sem){++++}-{0:0}, at: tty_ldisc_ref_wait+0x25/0x70 drivers/tty/tty_ldisc.c:243
 #1: ffffc9000312b2f0 (&ldata->atomic_read_lock){+.+.}-{3:3}, at: n_tty_read+0x6b5/0x1e10 drivers/tty/n_tty.c:2211
3 locks held by kworker/u9:10/5101:
 #0: ffff88802e1fa148 ((wq_completion)hci2){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3223 [inline]
 #0: ffff88802e1fa148 ((wq_completion)hci2){+.+.}-{0:0}, at: process_scheduled_works+0x90a/0x1830 kernel/workqueue.c:3329
 #1: ffffc90003827d00 ((work_completion)(&hdev->cmd_sync_work)){+.+.}-{0:0}, at: process_one_work kernel/workqueue.c:3224 [inline]
 #1: ffffc90003827d00 ((work_completion)(&hdev->cmd_sync_work)){+.+.}-{0:0}, at: process_scheduled_works+0x945/0x1830 kernel/workqueue.c:3329
 #2: ffff888020eb4d88 (&hdev->req_lock){+.+.}-{3:3}, at: hci_cmd_sync_work+0x1ec/0x400 net/bluetooth/hci_sync.c:322
2 locks held by syz.4.2691/12623:
 #0: ffffffff8f63ad70 (cb_lock){++++}-{3:3}, at: genl_rcv+0x19/0x40 net/netlink/genetlink.c:1218
 #1: ffffffff8e5fff48 (nfsd_mutex){+.+.}-{3:3}, at: nfsd_nl_listener_set_doit+0x12d/0x1a90 fs/nfsd/nfsctl.c:1940
2 locks held by syz.0.2871/13167:
 #0: ffff88804e1920e0 (&type->s_umount_key#77){++++}-{3:3}, at: __super_lock fs/super.c:56 [inline]
 #0: ffff88804e1920e0 (&type->s_umount_key#77){++++}-{3:3}, at: __super_lock_excl fs/super.c:71 [inline]
 #0: ffff88804e1920e0 (&type->s_umount_key#77){++++}-{3:3}, at: deactivate_super+0xb5/0xf0 fs/super.c:505
 #1: ffffffff8e5fff48 (nfsd_mutex){+.+.}-{3:3}, at: nfsd_shutdown_threads+0x4e/0xd0 fs/nfsd/nfssvc.c:632
1 lock held by udevd/14823:
2 locks held by syz-executor/15993:
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnl_lock net/core/rtnetlink.c:79 [inline]
 #0: ffffffff8f5d4908 (rtnl_mutex){+.+.}-{3:3}, at: rtnetlink_rcv_msg+0x842/0x1180 net/core/rtnetlink.c:6632
 #1: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: exp_funnel_lock kernel/rcu/tree_exp.h:323 [inline]
 #1: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: synchronize_rcu_expedited+0x451/0x830 kernel/rcu/tree_exp.h:939
1 lock held by syz.4.3895/16063:
 #0: ffff88804e1920e0 (&type->s_umount_key#77){++++}-{3:3}, at: __super_lock fs/super.c:58 [inline]
 #0: ffff88804e1920e0 (&type->s_umount_key#77){++++}-{3:3}, at: super_lock+0x27c/0x400 fs/super.c:120
4 locks held by kvm-nx-lpage-re/16077:
 #0: ffffffff8e361f28 (cgroup_mutex){+.+.}-{3:3}, at: cgroup_lock include/linux/cgroup.h:368 [inline]
 #0: ffffffff8e361f28 (cgroup_mutex){+.+.}-{3:3}, at: cgroup_attach_task_all+0x27/0xe0 kernel/cgroup/cgroup-v1.c:61
 #1: ffffffff8e1ce5b0 (cpu_hotplug_lock){++++}-{0:0}, at: cgroup_attach_lock+0x11/0x40 kernel/cgroup/cgroup.c:2413
 #2: ffffffff8e362110 (cgroup_threadgroup_rwsem){++++}-{0:0}, at: cgroup_attach_task_all+0x31/0xe0 kernel/cgroup/cgroup-v1.c:62
 #3: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: exp_funnel_lock kernel/rcu/tree_exp.h:291 [inline]
 #3: ffffffff8e3392f8 (rcu_state.exp_mutex){+.+.}-{3:3}, at: synchronize_rcu_expedited+0x381/0x830 kernel/rcu/tree_exp.h:939

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

NMI backtrace for cpu 1
CPU: 1 PID: 30 Comm: khungtaskd Not tainted 6.10.0-rc6-syzkaller-00212-g1dd28064d416 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
 nmi_cpu_backtrace+0x49c/0x4d0 lib/nmi_backtrace.c:113
 nmi_trigger_cpumask_backtrace+0x198/0x320 lib/nmi_backtrace.c:62
 trigger_all_cpu_backtrace include/linux/nmi.h:162 [inline]
 check_hung_uninterruptible_tasks kernel/hung_task.c:223 [inline]
 watchdog+0xfde/0x1020 kernel/hung_task.c:379
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </TASK>
Sending NMI from CPU 1 to CPUs 0:
NMI backtrace for cpu 0
CPU: 0 PID: 1109 Comm: kworker/u8:6 Not tainted 6.10.0-rc6-syzkaller-00212-g1dd28064d416 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Workqueue: writeback wb_workfn (flush-8:0)
RIP: 0010:bio_add_page+0xb7/0x840 block/bio.c:1118
Code: 05 00 00 8b 5d 00 45 89 f4 41 f7 d4 89 df 44 89 e6 e8 dd 6f 11 fd 44 39 e3 76 0a e8 13 6e 11 fd e9 20 04 00 00 48 89 6c 24 28 <49> 8d 5f 70 48 89 d8 48 c1 e8 03 48 89 44 24 30 42 0f b6 04 28 84
RSP: 0018:ffffc900045ce610 EFLAGS: 00000213
RAX: 0000000000000000 RBX: 000000000000a000 RCX: ffff888022311e00
RDX: ffff888022311e00 RSI: 00000000ffffefff RDI: 000000000000a000
RBP: ffff88802eb37a28 R08: ffffffff8484b8a3 R09: 1ffffd4000090b30
R10: dffffc0000000000 R11: fffff94000090b31 R12: 00000000ffffefff
R13: dffffc0000000000 R14: 0000000000001000 R15: ffff88802eb37a00
FS:  0000000000000000(0000) GS:ffff8880b9400000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000001b30e11ff8 CR3: 000000000e132000 CR4: 00000000003526f0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Call Trace:
 <NMI>
 </NMI>
 <TASK>
 bio_add_folio+0x52/0x80 block/bio.c:1160
 io_submit_add_bh fs/ext4/page-io.c:422 [inline]
 ext4_bio_write_folio+0x1691/0x1da0 fs/ext4/page-io.c:560
 mpage_submit_folio+0x1af/0x230 fs/ext4/inode.c:1869
 mpage_process_page_bufs+0x6c9/0x8d0 fs/ext4/inode.c:1982
 mpage_prepare_extent_to_map+0xec7/0x1c80 fs/ext4/inode.c:2490
 ext4_do_writepages+0xc52/0x3d40 fs/ext4/inode.c:2632
 ext4_writepages+0x213/0x3c0 fs/ext4/inode.c:2768
 do_writepages+0x359/0x870 mm/page-writeback.c:2656
 __writeback_single_inode+0x165/0x10b0 fs/fs-writeback.c:1651
 writeback_sb_inodes+0x99c/0x1380 fs/fs-writeback.c:1947
 __writeback_inodes_wb+0x11b/0x260 fs/fs-writeback.c:2018
 wb_writeback+0x495/0xd40 fs/fs-writeback.c:2129
 wb_check_old_data_flush fs/fs-writeback.c:2233 [inline]
 wb_do_writeback fs/fs-writeback.c:2286 [inline]
 wb_workfn+0xba1/0x1090 fs/fs-writeback.c:2314
 process_one_work kernel/workqueue.c:3248 [inline]
 process_scheduled_works+0xa2c/0x1830 kernel/workqueue.c:3329
 worker_thread+0x86d/0xd50 kernel/workqueue.c:3409
 kthread+0x2f0/0x390 kernel/kthread.c:389
 ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
 ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244
 </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@googlegroups.com.

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
.

From: Kousik Sanagavarapu <five231003@gmail.com>
To: Nishanth Menon <nm@ti.com>,
	Jonathan Cameron <Jonathan.Cameron@Huawei.com>,
	Santosh Shilimkar <ssantosh@kernel.org>,
	Nathan Chancellor <nathan@kernel.org>,
	Julia Lawall <julia.lawall@inria.fr>
Cc: Shuah Khan <skhan@linuxfoundation.org>,
	Javier Carrasco <javier.carrasco.cruz@gmail.com>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	Kousik Sanagavarapu <five231003@gmail.com>
Subject: [PATCH v3 0/4] Do device node auto cleanup in drivers/soc/ti/
Date: Sun,  7 Jul 2024 10:44:15 +0530
Message-ID: <20240707055341.3656-1-five231003@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270023
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Do "struct device_node" auto cleanup in soc/ti/.  This patch series takes
care of all the cases where this is possible.

Thanks Jonathan for the review on the previous round.

v2:

	https://lore.kernel.org/linux-arm-kernel/20240703065710.13786-1-five231003@gmail.com/

Changes since v2:
- Split v2 1/3 into v3 1/4 and v3 2/4.  The memory setup code is
  seperated out of the pruss_probe() function and put into 1/4 and the
  actual conversion to auto cleanup is done in 2/4.
- Replace dev_err() with dev_err_probe() in the code paths touched.

v1:

	https://lore.kernel.org/linux-arm-kernel/20240510071432.62913-1-five231003@gmail.com/

Changes since v1:
- Refactor code so that it the scope of the pointers touched is reduced,
  making the code look more clean.
- The above also the side-effect of fixing the errors that clang emitted
  (but my local version of gcc didn't) for PATCH 2/3 during v1.

Kousik Sanagavarapu (4):
  soc: ti: pruss: factor out memories setup
  soc: ti: pruss: do device_node auto cleanup
  soc: ti: knav_qmss_queue: do device_node auto cleanup
  soc: ti: pm33xx: do device_node auto cleanup

 drivers/soc/ti/knav_qmss_queue.c | 100 +++++++++---------
 drivers/soc/ti/pm33xx.c          |  52 ++++-----
 drivers/soc/ti/pruss.c           | 176 ++++++++++++++-----------------
 3 files changed, 155 insertions(+), 173 deletions(-)

-- 
2.45.2.561.g66ac6e4bcd

.

From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
To: matthias.bgg@gmail.com,
	angelogioacchino.delregno@collabora.com,
	fchiby@baylibre.com,
	fparent@baylibre.com,
	s.hauer@pengutronix.de
Cc: linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	kernel-janitors@vger.kernel.org,
	Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Subject: [PATCH v2 0/3] soc: mediatek: pwrap: Constify some data and other improvements
Date: Sun,  7 Jul 2024 07:47:19 +0200
Message-ID: <cover.1720331018.git.christophe.jaillet@wanadoo.fr>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270029
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.kernel-janitors
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series is motivated by patch 1. The 2 other patches are some
additionnal goodies spotted while looking at the code.

Patch 1 constifies struct pmic_wrapper_type to move some data to a
read-only section, in order to increase safety.

Patch 2 does the same for some int arrays. This helps move about 7 ko of
data to a read-only section. Not that bad!

Patch 3 simplifies code related to clk management. It also fixes an
issue if the driver is unloaded.

Christophe JAILLET (3):
  soc: mediatek: pwrap: Constify struct pmic_wrapper_type
  soc: mediatek: pwrap: Constify some struct int[]
  soc: mediatek: pwrap: Use devm_clk_bulk_get_all_enable()

 drivers/soc/mediatek/mtk-pmic-wrap.c | 118 +++++++--------------------
 1 file changed, 30 insertions(+), 88 deletions(-)

-- 
2.45.2

.

From: Animesh Agarwal <animeshagarwal28@gmail.com>
To: 
Cc: Animesh Agarwal <animeshagarwal28@gmail.com>,
	Daniel Baluta <daniel.baluta@nxp.com>,
	David Rhodes <david.rhodes@cirrus.com>,
	Richard Fitzgerald <rf@opensource.cirrus.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	patches@opensource.cirrus.com,
	alsa-devel@alsa-project.org,
	linux-sound@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH] ASoC: dt-bindings: cirrus,cs4270: Convert to dtschema
Date: Sun,  7 Jul 2024 11:56:58 +0530
Message-ID: <20240707062702.174390-1-animeshagarwal28@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270036
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-sound
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Convert the Cirrus Logic CS4270 audio CODEC bindings to DT schema. Add
missing va-supply, vd-supply and vlc-supply properties, because they
are already being used in the DTS and the driver for this device.

Cc: Daniel Baluta <daniel.baluta@nxp.com>
Signed-off-by: Animesh Agarwal <animeshagarwal28@gmail.com>
---
 .../bindings/sound/cirrus,cs4270.yaml         | 53 +++++++++++++++++++
 .../devicetree/bindings/sound/cs4270.txt      | 21 --------
 2 files changed, 53 insertions(+), 21 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml
 delete mode 100644 Documentation/devicetree/bindings/sound/cs4270.txt

diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml
new file mode 100644
index 000000000000..824d799ee5ff
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/cirrus,cs4270.yaml
@@ -0,0 +1,53 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/cirrus,cs4270.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Cirrus Logic CS4270 audio CODEC
+
+maintainers:
+  - patches@opensource.cirrus.com
+
+description:
+  The CS4270 is a stereo audio codec. The driver for this device currently only
+  supports I2C.
+
+properties:
+  compatible:
+    const: cirrus,cs4270
+
+  reg:
+    maxItems: 1
+
+  reset-gpios:
+    description:
+      This pin will be deasserted before communication to the codec starts.
+    maxItems: 1
+
+  va-supply:
+    description: Voltage regulator phandle for the VA supply.
+
+  vd-supply:
+    description: Voltage regulator phandle for the VD supply.
+
+  vlc-supply:
+    description: Voltage regulator phandle for the VLC supply.
+
+required:
+  - compatible
+  - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c {
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      codec: cs4270@48 {
+          compatible = "cirrus,cs4270";
+          reg = <0x48>;
+      };
+    };
diff --git a/Documentation/devicetree/bindings/sound/cs4270.txt b/Documentation/devicetree/bindings/sound/cs4270.txt
deleted file mode 100644
index c33770ec4c3c..000000000000
--- a/Documentation/devicetree/bindings/sound/cs4270.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-CS4270 audio CODEC
-
-The driver for this device currently only supports I2C.
-
-Required properties:
-
-  - compatible : "cirrus,cs4270"
-
-  - reg : the I2C address of the device for I2C
-
-Optional properties:
-
-  - reset-gpios : a GPIO spec for the reset pin. If specified, it will be
-		  deasserted before communication to the codec starts.
-
-Example:
-
-codec: cs4270@48 {
-	compatible = "cirrus,cs4270";
-	reg = <0x48>;
-};
-- 
2.45.2

.

Date: Sun, 7 Jul 2024 08:51:54 +0200
From: Philipp Hortmann <philipp.g.hortmann@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: [PATCH 00/13] staging: rtl8723bs: Remove unused macros starting with
 hal_com_h2c.h
Message-ID: <cover.1720245061.git.philipp.g.hortmann@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270039
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.linux-staging
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Remove unused macros.

Anyone who thinks this can't go wrong is mistaken. Some of the macros are
double. I checkt that those are with the same value. However this is
a manual process.

Tested with rtl8723bs in ODYS Trendbook Next 14

Philipp Hortmann (13):
  staging: rtl8723bs: Remove unused macros in hal_com_h2c.h
  staging: rtl8723bs: Remove unused macros in rtw_ht.h
  staging: rtl8723bs: Remove unused macros in hal_com_reg.h
  staging: rtl8723bs: Remove unused macros in hal_phy_reg_8723b.h
  staging: rtl8723bs: Move last macro from hal_phy_reg_8723b.h
  staging: rtl8723bs: Delete file hal_phy_reg_8723b.h
  staging: rtl8723bs: Remove unused macros in Hal8192CPhyReg.h
  staging: rtl8723bs: Remove unused macros in Hal8723BReg.h
  staging: rtl8723bs: Remove unused macros in HalPwrSeqCmd.h
  staging: rtl8723bs: Remove unused macros in rtw_mlme.h
  staging: rtl8723bs: Remove unused macros in rtw_efuse.h
  staging: rtl8723bs: Remove unused macros in hal_pwr_seq.h
  staging: rtl8723bs: Remove unused macros in rtw_mlme_ext.h

 drivers/staging/rtl8723bs/hal/Hal8723BReg.h   | 373 --------
 .../rtl8723bs/include/Hal8192CPhyReg.h        | 882 +-----------------
 .../staging/rtl8723bs/include/HalPwrSeqCmd.h  |  11 -
 .../staging/rtl8723bs/include/hal_com_h2c.h   |  76 --
 .../staging/rtl8723bs/include/hal_com_reg.h   | 796 +---------------
 .../rtl8723bs/include/hal_phy_reg_8723b.h     |  69 --
 .../staging/rtl8723bs/include/hal_pwr_seq.h   |   7 -
 .../staging/rtl8723bs/include/rtl8723b_hal.h  |   2 +-
 drivers/staging/rtl8723bs/include/rtw_efuse.h |  13 -
 drivers/staging/rtl8723bs/include/rtw_ht.h    |  22 -
 drivers/staging/rtl8723bs/include/rtw_mlme.h  |  26 -
 .../staging/rtl8723bs/include/rtw_mlme_ext.h  |  37 -
 12 files changed, 4 insertions(+), 2310 deletions(-)
 delete mode 100644 drivers/staging/rtl8723bs/include/hal_phy_reg_8723b.h

-- 
2.45.2

.

From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To: linux-renesas-soc@vger.kernel.org
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
	Andi Shyti <andi.shyti@kernel.org>,
	linux-i2c@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/3] i2c: rcar: avoid spurious irqs
Date: Sun,  7 Jul 2024 10:28:45 +0200
Message-ID: <20240707082848.5424-1-wsa+renesas@sang-engineering.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270064
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-i2c,org.kernel.vger.linux-renesas-soc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Thanks to a report from Dirk, the first patch clears a window in which
spurious irqs might happen in probe. The second patch makes the
detection of spurious irqs louder. The third is a cleanup found while
developing this series. The first should go to for-current, the others
to for-next. No dependencies, luckily.


Wolfram Sang (3):
  i2c: rcar: bring hardware to known state when probing
  i2c: rcar: WARN about spurious irqs
  i2c: rcar: minor changes to adhere to coding style

 drivers/i2c/busses/i2c-rcar.c | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

-- 
2.43.0

.

From: Shenghao Ding <shenghao-ding@ti.com>
To: <broonie@kernel.org>
CC: <andriy.shevchenko@linux.intel.com>, <lgirdwood@gmail.com>,
        <perex@perex.cz>, <pierre-louis.bossart@linux.intel.com>,
        <13916275206@139.com>, <zhourui@huaqin.com>,
        <alsa-devel@alsa-project.org>, <i-salazar@ti.com>,
        <linux-kernel@vger.kernel.org>, <j-chadha@ti.com>,
        <liam.r.girdwood@intel.com>, <jaden-yue@ti.com>,
        <yung-chuan.liao@linux.intel.com>, <dipa@ti.com>, <yuhsuan@google.com>,
        <henry.lo@ti.com>, <tiwai@suse.de>, <baojun.xu@ti.com>, <soyer@irl.hu>,
        <Baojun.Xu@fpt.com>, <judyhsiao@google.com>, <navada@ti.com>,
        <cujomalainey@google.com>, <aanya@ti.com>, <nayeem.mahmud@ti.com>,
        <savyasanchi.shukla@netradyne.com>, <flaviopr@microsoft.com>,
        <jesse-ji@ti.com>, <darren.ye@mediatek.com>,
        Shenghao Ding
	<shenghao-ding@ti.com>
Subject: [PATCH v1] ASoc: TAS2781: replace beXX_to_cpup with get_unaligned_beXX for potentially broken alignment
Date: Sun, 7 Jul 2024 16:30:07 +0800
Message-ID: <20240707083011.98-1-shenghao-ding@ti.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270067
Newsgroups: org.kernel.vger.linux-kernel,org.alsa-project.alsa-devel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Use get_unaligned_be16 instead of be16_to_cpup and get_unaligned_be32
instead of be32_to_cpup for potentially broken alignment.

Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>

---
v1:
 - Add "#include <asm/unaligned.h>" for the declaration of
   get_unaligned_beXX
---
 sound/soc/codecs/tas2781-fmwlib.c | 71 +++++++++++++++----------------
 1 file changed, 35 insertions(+), 36 deletions(-)

diff --git a/sound/soc/codecs/tas2781-fmwlib.c b/sound/soc/codecs/tas2781-fmwlib.c
index 838d29fead96..63626b982d04 100644
--- a/sound/soc/codecs/tas2781-fmwlib.c
+++ b/sound/soc/codecs/tas2781-fmwlib.c
@@ -21,7 +21,7 @@
 #include <sound/soc.h>
 #include <sound/tlv.h>
 #include <sound/tas2781.h>
-
+#include <asm/unaligned.h>
 
 #define ERROR_PRAM_CRCCHK			0x0000000
 #define ERROR_YRAM_CRCCHK			0x0000001
@@ -187,8 +187,7 @@ static struct tasdevice_config_info *tasdevice_add_config(
 	/* convert data[offset], data[offset + 1], data[offset + 2] and
 	 * data[offset + 3] into host
 	 */
-	cfg_info->nblocks =
-		be32_to_cpup((__be32 *)&config_data[config_offset]);
+	cfg_info->nblocks = get_unaligned_be32(&config_data[config_offset]);
 	config_offset += 4;
 
 	/* Several kinds of dsp/algorithm firmwares can run on tas2781,
@@ -232,14 +231,14 @@ static struct tasdevice_config_info *tasdevice_add_config(
 
 		}
 		bk_da[i]->yram_checksum =
-			be16_to_cpup((__be16 *)&config_data[config_offset]);
+			get_unaligned_be16(&config_data[config_offset]);
 		config_offset += 2;
 		bk_da[i]->block_size =
-			be32_to_cpup((__be32 *)&config_data[config_offset]);
+			get_unaligned_be32(&config_data[config_offset]);
 		config_offset += 4;
 
 		bk_da[i]->n_subblks =
-			be32_to_cpup((__be32 *)&config_data[config_offset]);
+			get_unaligned_be32(&config_data[config_offset]);
 
 		config_offset += 4;
 
@@ -289,7 +288,7 @@ int tasdevice_rca_parser(void *context, const struct firmware *fmw)
 	}
 	buf = (unsigned char *)fmw->data;
 
-	fw_hdr->img_sz = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->img_sz = get_unaligned_be32(&buf[offset]);
 	offset += 4;
 	if (fw_hdr->img_sz != fmw->size) {
 		dev_err(tas_priv->dev,
@@ -300,9 +299,9 @@ int tasdevice_rca_parser(void *context, const struct firmware *fmw)
 		goto out;
 	}
 
-	fw_hdr->checksum = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->checksum = get_unaligned_be32(&buf[offset]);
 	offset += 4;
-	fw_hdr->binary_version_num = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->binary_version_num = get_unaligned_be32(&buf[offset]);
 	if (fw_hdr->binary_version_num < 0x103) {
 		dev_err(tas_priv->dev, "File version 0x%04x is too low",
 			fw_hdr->binary_version_num);
@@ -311,7 +310,7 @@ int tasdevice_rca_parser(void *context, const struct firmware *fmw)
 		goto out;
 	}
 	offset += 4;
-	fw_hdr->drv_fw_version = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->drv_fw_version = get_unaligned_be32(&buf[offset]);
 	offset += 8;
 	fw_hdr->plat_type = buf[offset];
 	offset += 1;
@@ -339,11 +338,11 @@ int tasdevice_rca_parser(void *context, const struct firmware *fmw)
 	for (i = 0; i < TASDEVICE_DEVICE_SUM; i++, offset++)
 		fw_hdr->devs[i] = buf[offset];
 
-	fw_hdr->nconfig = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->nconfig = get_unaligned_be32(&buf[offset]);
 	offset += 4;
 
 	for (i = 0; i < TASDEVICE_CONFIG_SUM; i++) {
-		fw_hdr->config_size[i] = be32_to_cpup((__be32 *)&buf[offset]);
+		fw_hdr->config_size[i] = get_unaligned_be32(&buf[offset]);
 		offset += 4;
 		total_config_sz += fw_hdr->config_size[i];
 	}
@@ -423,7 +422,7 @@ static int fw_parse_block_data_kernel(struct tasdevice_fw *tas_fmw,
 	/* convert data[offset], data[offset + 1], data[offset + 2] and
 	 * data[offset + 3] into host
 	 */
-	block->type = be32_to_cpup((__be32 *)&data[offset]);
+	block->type = get_unaligned_be32(&data[offset]);
 	offset += 4;
 
 	block->is_pchksum_present = data[offset];
@@ -438,10 +437,10 @@ static int fw_parse_block_data_kernel(struct tasdevice_fw *tas_fmw,
 	block->ychksum = data[offset];
 	offset++;
 
-	block->blk_size = be32_to_cpup((__be32 *)&data[offset]);
+	block->blk_size = get_unaligned_be32(&data[offset]);
 	offset += 4;
 
-	block->nr_subblocks = be32_to_cpup((__be32 *)&data[offset]);
+	block->nr_subblocks = get_unaligned_be32(&data[offset]);
 	offset += 4;
 
 	/* fixed m68k compiling issue:
@@ -482,7 +481,7 @@ static int fw_parse_data_kernel(struct tasdevice_fw *tas_fmw,
 		offset = -EINVAL;
 		goto out;
 	}
-	img_data->nr_blk = be32_to_cpup((__be32 *)&data[offset]);
+	img_data->nr_blk = get_unaligned_be32(&data[offset]);
 	offset += 4;
 
 	img_data->dev_blks = kcalloc(img_data->nr_blk,
@@ -578,14 +577,14 @@ static int fw_parse_variable_header_kernel(
 		offset = -EINVAL;
 		goto out;
 	}
-	fw_hdr->device_family = be16_to_cpup((__be16 *)&buf[offset]);
+	fw_hdr->device_family = get_unaligned_be16(&buf[offset]);
 	if (fw_hdr->device_family != 0) {
 		dev_err(tas_priv->dev, "%s:not TAS device\n", __func__);
 		offset = -EINVAL;
 		goto out;
 	}
 	offset += 2;
-	fw_hdr->device = be16_to_cpup((__be16 *)&buf[offset]);
+	fw_hdr->device = get_unaligned_be16(&buf[offset]);
 	if (fw_hdr->device >= TASDEVICE_DSP_TAS_MAX_DEVICE ||
 		fw_hdr->device == 6) {
 		dev_err(tas_priv->dev, "Unsupported dev %d\n", fw_hdr->device);
@@ -603,7 +602,7 @@ static int fw_parse_variable_header_kernel(
 		goto out;
 	}
 
-	tas_fmw->nr_programs = be32_to_cpup((__be32 *)&buf[offset]);
+	tas_fmw->nr_programs = get_unaligned_be32(&buf[offset]);
 	offset += 4;
 
 	if (tas_fmw->nr_programs == 0 || tas_fmw->nr_programs >
@@ -622,14 +621,14 @@ static int fw_parse_variable_header_kernel(
 
 	for (i = 0; i < tas_fmw->nr_programs; i++) {
 		program = &(tas_fmw->programs[i]);
-		program->prog_size = be32_to_cpup((__be32 *)&buf[offset]);
+		program->prog_size = get_unaligned_be32(&buf[offset]);
 		offset += 4;
 	}
 
 	/* Skip the unused prog_size */
 	offset += 4 * (TASDEVICE_MAXPROGRAM_NUM_KERNEL - tas_fmw->nr_programs);
 
-	tas_fmw->nr_configurations = be32_to_cpup((__be32 *)&buf[offset]);
+	tas_fmw->nr_configurations = get_unaligned_be32(&buf[offset]);
 	offset += 4;
 
 	/* The max number of config in firmware greater than 4 pieces of
@@ -661,7 +660,7 @@ static int fw_parse_variable_header_kernel(
 
 	for (i = 0; i < tas_fmw->nr_programs; i++) {
 		config = &(tas_fmw->configs[i]);
-		config->cfg_size = be32_to_cpup((__be32 *)&buf[offset]);
+		config->cfg_size = get_unaligned_be32(&buf[offset]);
 		offset += 4;
 	}
 
@@ -699,7 +698,7 @@ static int tasdevice_process_block(void *context, unsigned char *data,
 		switch (subblk_typ) {
 		case TASDEVICE_CMD_SING_W: {
 			int i;
-			unsigned short len = be16_to_cpup((__be16 *)&data[2]);
+			unsigned short len = get_unaligned_be16(&data[2]);
 
 			subblk_offset += 2;
 			if (subblk_offset + 4 * len > sublocksize) {
@@ -725,7 +724,7 @@ static int tasdevice_process_block(void *context, unsigned char *data,
 		}
 			break;
 		case TASDEVICE_CMD_BURST: {
-			unsigned short len = be16_to_cpup((__be16 *)&data[2]);
+			unsigned short len = get_unaligned_be16(&data[2]);
 
 			subblk_offset += 2;
 			if (subblk_offset + 4 + len > sublocksize) {
@@ -766,7 +765,7 @@ static int tasdevice_process_block(void *context, unsigned char *data,
 				is_err = true;
 				break;
 			}
-			sleep_time = be16_to_cpup((__be16 *)&data[2]) * 1000;
+			sleep_time = get_unaligned_be16(&data[2]) * 1000;
 			usleep_range(sleep_time, sleep_time + 50);
 			subblk_offset += 2;
 		}
@@ -910,7 +909,7 @@ static int fw_parse_variable_hdr(struct tasdevice_priv
 
 	offset += len;
 
-	fw_hdr->device_family = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->device_family = get_unaligned_be32(&buf[offset]);
 	if (fw_hdr->device_family != 0) {
 		dev_err(tas_priv->dev, "%s: not TAS device\n", __func__);
 		offset = -EINVAL;
@@ -918,7 +917,7 @@ static int fw_parse_variable_hdr(struct tasdevice_priv
 	}
 	offset += 4;
 
-	fw_hdr->device = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_hdr->device = get_unaligned_be32(&buf[offset]);
 	if (fw_hdr->device >= TASDEVICE_DSP_TAS_MAX_DEVICE ||
 		fw_hdr->device == 6) {
 		dev_err(tas_priv->dev, "Unsupported dev %d\n", fw_hdr->device);
@@ -963,7 +962,7 @@ static int fw_parse_block_data(struct tasdevice_fw *tas_fmw,
 		offset = -EINVAL;
 		goto out;
 	}
-	block->type = be32_to_cpup((__be32 *)&data[offset]);
+	block->type = get_unaligned_be32(&data[offset]);
 	offset += 4;
 
 	if (tas_fmw->fw_hdr.fixed_hdr.drv_ver >= PPC_DRIVER_CRCCHK) {
@@ -988,7 +987,7 @@ static int fw_parse_block_data(struct tasdevice_fw *tas_fmw,
 		block->is_ychksum_present = 0;
 	}
 
-	block->nr_cmds = be32_to_cpup((__be32 *)&data[offset]);
+	block->nr_cmds = get_unaligned_be32(&data[offset]);
 	offset += 4;
 
 	n = block->nr_cmds * 4;
@@ -1039,7 +1038,7 @@ static int fw_parse_data(struct tasdevice_fw *tas_fmw,
 		goto out;
 	}
 	offset += n;
-	img_data->nr_blk = be16_to_cpup((__be16 *)&data[offset]);
+	img_data->nr_blk = get_unaligned_be16(&data[offset]);
 	offset += 2;
 
 	img_data->dev_blks = kcalloc(img_data->nr_blk,
@@ -1076,7 +1075,7 @@ static int fw_parse_program_data(struct tasdevice_priv *tas_priv,
 		offset = -EINVAL;
 		goto out;
 	}
-	tas_fmw->nr_programs = be16_to_cpup((__be16 *)&buf[offset]);
+	tas_fmw->nr_programs = get_unaligned_be16(&buf[offset]);
 	offset += 2;
 
 	if (tas_fmw->nr_programs == 0) {
@@ -1143,7 +1142,7 @@ static int fw_parse_configuration_data(
 		offset = -EINVAL;
 		goto out;
 	}
-	tas_fmw->nr_configurations = be16_to_cpup((__be16 *)&data[offset]);
+	tas_fmw->nr_configurations = get_unaligned_be16(&data[offset]);
 	offset += 2;
 
 	if (tas_fmw->nr_configurations == 0) {
@@ -1775,7 +1774,7 @@ static int fw_parse_header(struct tasdevice_priv *tas_priv,
 	/* Convert data[offset], data[offset + 1], data[offset + 2] and
 	 * data[offset + 3] into host
 	 */
-	fw_fixed_hdr->fwsize = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_fixed_hdr->fwsize = get_unaligned_be32(&buf[offset]);
 	offset += 4;
 	if (fw_fixed_hdr->fwsize != fmw->size) {
 		dev_err(tas_priv->dev, "File size not match, %lu %u",
@@ -1784,9 +1783,9 @@ static int fw_parse_header(struct tasdevice_priv *tas_priv,
 		goto out;
 	}
 	offset += 4;
-	fw_fixed_hdr->ppcver = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_fixed_hdr->ppcver = get_unaligned_be32(&buf[offset]);
 	offset += 8;
-	fw_fixed_hdr->drv_ver = be32_to_cpup((__be32 *)&buf[offset]);
+	fw_fixed_hdr->drv_ver = get_unaligned_be32(&buf[offset]);
 	offset += 72;
 
  out:
@@ -1828,7 +1827,7 @@ static int fw_parse_calibration_data(struct tasdevice_priv *tas_priv,
 		offset = -EINVAL;
 		goto out;
 	}
-	tas_fmw->nr_calibrations = be16_to_cpup((__be16 *)&data[offset]);
+	tas_fmw->nr_calibrations = get_unaligned_be16(&data[offset]);
 	offset += 2;
 
 	if (tas_fmw->nr_calibrations != 1) {
-- 
2.34.1

.

From: Krishna Kurapati <quic_kriskura@quicinc.com>
To: Krzysztof Kozlowski <krzk+dt@kernel.org>, Rob Herring <robh@kernel.org>,
        Bjorn Andersson <andersson@kernel.org>,
        Konrad Dybcio
	<konrad.dybcio@linaro.org>,
        Conor Dooley <conor+dt@kernel.org>, Johan Hovold
	<johan@kernel.org>
CC: <linux-kernel@vger.kernel.org>, <linux-arm-msm@vger.kernel.org>,
        <devicetree@vger.kernel.org>, <quic_ppratap@quicinc.com>,
        <quic_jackp@quicinc.com>, Krishna Kurapati <quic_kriskura@quicinc.com>
Subject: [PATCH v17] arm64: dts: qcom: sa8295p-adp: Enable the four USB Type-A ports
Date: Sun, 7 Jul 2024 14:26:24 +0530
Message-ID: <20240707085624.3411961-1-quic_kriskura@quicinc.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270069
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The multiport USB controller in the SA8295P ADP is connected to four USB
Type-A ports. VBUS for each of these ports are provided by a
TPS2559QWDRCTQ1 regulator, controlled from PMIC GPIOs.

Add the necessary regulators and GPIO configuration to power these.

It seems reasonable that these regulators should be referenced as vbus
supply of usb-a-connector nodes and controlled by e.g. dwc3, but as this
is not supported in Linux today the regulators are left always-on for
now.

Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
---
Changes in v17:
Updated commit text as per comments on v16.
This has been only compile tested as only the commit text
has been updated.

Link to v16:
https://lore.kernel.org/all/20240429162048.2133512-3-quic_kriskura@quicinc.com/

 arch/arm64/boot/dts/qcom/sa8295p-adp.dts | 83 ++++++++++++++++++++++++
 1 file changed, 83 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
index 78e933c42c31..2fd1dafe63ce 100644
--- a/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
+++ b/arch/arm64/boot/dts/qcom/sa8295p-adp.dts
@@ -9,6 +9,7 @@
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
 #include <dt-bindings/spmi/spmi.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 
 #include "sa8540p.dtsi"
 #include "sa8540p-pmics.dtsi"
@@ -109,6 +110,46 @@ edp3_connector_in: endpoint {
 		};
 	};
 
+	regulator-usb2-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USB2_VBUS";
+		gpio = <&pmm8540c_gpios 9 GPIO_ACTIVE_HIGH>;
+		pinctrl-0 = <&usb2_en>;
+		pinctrl-names = "default";
+		enable-active-high;
+		regulator-always-on;
+	};
+
+	regulator-usb3-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USB3_VBUS";
+		gpio = <&pmm8540e_gpios 5 GPIO_ACTIVE_HIGH>;
+		pinctrl-0 = <&usb3_en>;
+		pinctrl-names = "default";
+		enable-active-high;
+		regulator-always-on;
+	};
+
+	regulator-usb4-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USB4_VBUS";
+		gpio = <&pmm8540g_gpios 5 GPIO_ACTIVE_HIGH>;
+		pinctrl-0 = <&usb4_en>;
+		pinctrl-names = "default";
+		enable-active-high;
+		regulator-always-on;
+	};
+
+	regulator-usb5-vbus {
+		compatible = "regulator-fixed";
+		regulator-name = "USB5_VBUS";
+		gpio = <&pmm8540g_gpios 9 GPIO_ACTIVE_HIGH>;
+		pinctrl-0 = <&usb5_en>;
+		pinctrl-names = "default";
+		enable-active-high;
+		regulator-always-on;
+	};
+
 	reserved-memory {
 		gpu_mem: gpu-mem@8bf00000 {
 			reg = <0 0x8bf00000 0 0x2000>;
@@ -637,6 +678,10 @@ &usb_1_qmpphy {
 	status = "okay";
 };
 
+&usb_2 {
+	status = "okay";
+};
+
 &usb_2_hsphy0 {
 	vdda-pll-supply = <&vreg_l5a>;
 	vdda18-supply = <&vreg_l7g>;
@@ -697,6 +742,44 @@ max20411_en: max20411-en-state {
 	};
 };
 
+&pmm8540c_gpios {
+	usb2_en: usb2-en-state {
+		pins = "gpio9";
+		function = "normal";
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
+		output-enable;
+		power-source = <0>;
+	};
+};
+
+&pmm8540e_gpios {
+	usb3_en: usb3-en-state {
+		pins = "gpio5";
+		function = "normal";
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
+		output-enable;
+		power-source = <0>;
+	};
+};
+
+&pmm8540g_gpios {
+	usb4_en: usb4-en-state {
+		pins = "gpio5";
+		function = "normal";
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
+		output-enable;
+		power-source = <0>;
+	};
+
+	usb5_en: usb5-en-state {
+		pins = "gpio9";
+		function = "normal";
+		qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
+		output-enable;
+		power-source = <0>;
+	};
+};
+
 &tlmm {
 	pcie2a_default: pcie2a-default-state {
 		clkreq-n-pins {
-- 
2.34.1

.

From: Shresth Prasad <shresthprasad7@gmail.com>
To: vkoul@kernel.org,
	robh@kernel.org,
	krzk+dt@kernel.org,
	conor+dt@kernel.org,
	hdegoede@redhat.com
Cc: dmaengine@vger.kernel.org,
	devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	skhan@linuxfoundation.org,
	javier.carrasco.cruz@gmail.com,
	Shresth Prasad <shresthprasad7@gmail.com>
Subject: [PATCH v2] dt-bindings: dma: mv-xor-v2: Convert to dtschema
Date: Sun,  7 Jul 2024 14:43:33 +0530
Message-ID: <20240707091331.127520-3-shresthprasad7@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270071
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.dmaengine,org.kernel.vger.linux-devicetree
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Convert txt bindings of Marvell XOR v2 engines to dtschema to allow
for validation.

Also add missing property `dma-coherent` as `drivers/dma/mv_xor_v2.c`
calls various dma-coherent memory functions.

Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com>
---
Changes in v2:
    - Update commit message to indicate addition of `dma-coherent`
    - Change maintainer
    - Change compatible section
    - Add `minItems` to `clock-names`
    - Remove "location and length" from reg description
    - List out `clock-names` items in `if:`
    - Create two variants of `if:`

Tested against `marvell/armada-7040-db.dtb`, `marvell/armada-7040-mochabin.dtb`
and `marvell/armada-8080-db.dtb`

 .../bindings/dma/marvell,xor-v2.yaml          | 86 +++++++++++++++++++
 .../devicetree/bindings/dma/mv-xor-v2.txt     | 28 ------
 2 files changed, 86 insertions(+), 28 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/dma/marvell,xor-v2.yaml
 delete mode 100644 Documentation/devicetree/bindings/dma/mv-xor-v2.txt

diff --git a/Documentation/devicetree/bindings/dma/marvell,xor-v2.yaml b/Documentation/devicetree/bindings/dma/marvell,xor-v2.yaml
new file mode 100644
index 000000000000..da58f6e0feab
--- /dev/null
+++ b/Documentation/devicetree/bindings/dma/marvell,xor-v2.yaml
@@ -0,0 +1,86 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/dma/marvell,xor-v2.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Marvell XOR v2 engines
+
+maintainers:
+  - Hans de Goede <hdegoede@redhat.com>
+
+properties:
+  compatible:
+    oneOf:
+      - const: marvell,xor-v2
+      - items:
+          - enum:
+              - marvell,armada-7k-xor
+          - const: marvell,xor-v2
+
+  reg:
+    items:
+      - description: DMA registers
+      - description: global registers
+
+  clocks:
+    minItems: 1
+    maxItems: 2
+
+  clock-names:
+    minItems: 1
+    items:
+      - const: core
+      - const: reg
+
+  msi-parent:
+    description:
+      Phandle to the MSI-capable interrupt controller used for
+      interrupts.
+    maxItems: 1
+
+  dma-coherent: true
+
+required:
+  - compatible
+  - reg
+  - msi-parent
+  - dma-coherent
+
+allOf:
+  - if:
+      properties:
+        clocks:
+          maxItems: 1
+    then:
+      properties:
+        clock-names:
+          items:
+            - const: core
+  - if:
+      properties:
+        clocks:
+          minItems: 2
+      required:
+        - clocks
+    then:
+      properties:
+        clock-names:
+          items:
+            - const: core
+            - const: reg
+      required:
+        - clock-names
+
+additionalProperties: false
+
+examples:
+  - |
+    xor0@6a0000 {
+        compatible = "marvell,armada-7k-xor", "marvell,xor-v2";
+        reg = <0x6a0000 0x1000>, <0x6b0000 0x1000>;
+        clocks = <&ap_clk 0>, <&ap_clk 1>;
+        clock-names = "core", "reg";
+        msi-parent = <&gic_v2m0>;
+        dma-coherent;
+    };
diff --git a/Documentation/devicetree/bindings/dma/mv-xor-v2.txt b/Documentation/devicetree/bindings/dma/mv-xor-v2.txt
deleted file mode 100644
index 9c38bbe7e6d7..000000000000
--- a/Documentation/devicetree/bindings/dma/mv-xor-v2.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-* Marvell XOR v2 engines
-
-Required properties:
-- compatible: one of the following values:
-    "marvell,armada-7k-xor"
-    "marvell,xor-v2"
-- reg: Should contain registers location and length (two sets)
-    the first set is the DMA registers
-    the second set is the global registers
-- msi-parent: Phandle to the MSI-capable interrupt controller used for
-  interrupts.
-
-Optional properties:
-- clocks: Optional reference to the clocks used by the XOR engine.
-- clock-names: mandatory if there is a second clock, in this case the
-   name must be "core" for the first clock and "reg" for the second
-   one
-
-
-Example:
-
-	xor0@400000 {
-		compatible = "marvell,xor-v2";
-		reg = <0x400000 0x1000>,
-		      <0x410000 0x1000>;
-		msi-parent = <&gic_v2m0>;
-		dma-coherent;
-	};
-- 
2.45.2

.

From: Shengyu Qu <wiagn233@outlook.com>
To: nbd@nbd.name,
	lorenzo@kernel.org,
	ryder.lee@mediatek.com,
	shayne.chen@mediatek.com,
	sean.wang@mediatek.com,
	kvalo@kernel.org,
	matthias.bgg@gmail.com,
	angelogioacchino.delregno@collabora.com,
	greearb@candelatech.com,
	chui-hao.chiu@mediatek.com,
	rany_hany@riseup.net,
	meichia.chiu@mediatek.com,
	StanleyYP.Wang@mediatek.com,
	allen.ye@mediatek.com,
	linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org
Cc: Shengyu Qu <wiagn233@outlook.com>,
	Sujuan Chen <sujuan.chen@mediatek.com>,
	Bo Jiao <bo.jiao@mediatek.com>
Subject: [PATCH v4] wifi: mt76: mt7915: add wds support when wed is enabled
Date: Sun,  7 Jul 2024 17:22:55 +0800
Message-ID: <OS3P286MB259748F6FA6BE628C3295D7498D92@OS3P286MB2597.JPNP286.PROD.OUTLOOK.COM>
Content-Transfer-Encoding: 8bit
Content-Type: text/plain
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270073 org.kernel.vger.linux-wireless:85775
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek,org.kernel.vger.linux-wireless
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The current WED only supports 256 wcid, whereas mt7986 can support up to
512 entries, so firmware provides a rule to get sta_info by DA when wcid
is set to 0x3ff by txd. Also, WED provides a register to overwrite txd
wcid, that is, wcid[9:8] can be overwritten by 0x3 and wcid[7:0] is set
to 0xff by host driver.

However, firmware is unable to get sta_info from DA as DA != RA for
4addr cases, so firmware and wifi host driver both use wcid (256 - 271)
and (768 ~ 783) for sync up to get correct sta_info.

Tested-by: Sujuan Chen <sujuan.chen@mediatek.com>
Co-developed-by: Bo Jiao <bo.jiao@mediatek.com>
Signed-off-by: Bo Jiao <bo.jiao@mediatek.com>
Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Shengyu Qu <wiagn233@outlook.com>
---
Changes since v1:
 - Drop duplicate setting in mmio
 - Reduce the patch size by redefining mt76_wcid_alloc
Changes since v2:
 - Rework wds wcid getting flow
Changes since v3:
 - Rebase to next-20240703
 - Sync with downstream patch
---
 drivers/net/wireless/mediatek/mt76/mt76.h     |  9 +++++
 .../net/wireless/mediatek/mt76/mt7915/main.c  | 32 ++++++++++++++--
 .../net/wireless/mediatek/mt76/mt7915/mcu.c   | 16 ++++++--
 .../net/wireless/mediatek/mt76/mt7915/mcu.h   |  1 +
 drivers/net/wireless/mediatek/mt76/util.c     | 37 +++++++++++++++++--
 drivers/net/wireless/mediatek/mt76/util.h     |  7 +++-
 6 files changed, 91 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/mediatek/mt76/mt76.h b/drivers/net/wireless/mediatek/mt76/mt76.h
index 15f83b5adac7..fd211f2cf13c 100644
--- a/drivers/net/wireless/mediatek/mt76/mt76.h
+++ b/drivers/net/wireless/mediatek/mt76/mt76.h
@@ -28,6 +28,9 @@
 
 #define MT76_TOKEN_FREE_THR	64
 
+#define MT76_WED_WDS_MIN    256
+#define MT76_WED_WDS_MAX    272
+
 #define MT_QFLAG_WED_RING	GENMASK(1, 0)
 #define MT_QFLAG_WED_TYPE	GENMASK(4, 2)
 #define MT_QFLAG_WED		BIT(5)
@@ -71,6 +74,12 @@ enum mt76_wed_type {
 	MT76_WED_RRO_Q_IND,
 };
 
+enum mt76_wed_state {
+	MT76_WED_DEFAULT,
+	MT76_WED_ACTIVE,
+	MT76_WED_WDS_ACTIVE,
+};
+
 struct mt76_bus_ops {
 	u32 (*rr)(struct mt76_dev *dev, u32 offset);
 	void (*wr)(struct mt76_dev *dev, u32 offset, u32 val);
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/main.c b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
index 049223df9beb..dc4d87e004a0 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/main.c
@@ -745,8 +745,15 @@ int mt7915_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
 	bool ext_phy = mvif->phy != &dev->phy;
 	int ret, idx;
 	u32 addr;
+	u8 flags = MT76_WED_DEFAULT;
 
-	idx = mt76_wcid_alloc(dev->mt76.wcid_mask, MT7915_WTBL_STA);
+	if (mtk_wed_device_active(&dev->mt76.mmio.wed) &&
+	    !is_mt7915(&dev->mt76)) {
+		flags = test_bit(MT_WCID_FLAG_4ADDR, &msta->wcid.flags) ?
+		       MT76_WED_WDS_ACTIVE : MT76_WED_ACTIVE;
+	}
+
+	idx = __mt76_wcid_alloc(mdev->wcid_mask, MT7915_WTBL_STA, flags);
 	if (idx < 0)
 		return -ENOSPC;
 
@@ -1201,12 +1208,27 @@ static void mt7915_sta_set_4addr(struct ieee80211_hw *hw,
 {
 	struct mt7915_dev *dev = mt7915_hw_dev(hw);
 	struct mt7915_sta *msta = (struct mt7915_sta *)sta->drv_priv;
+	int min = MT76_WED_WDS_MIN, max = MT76_WED_WDS_MAX;
 
 	if (enabled)
 		set_bit(MT_WCID_FLAG_4ADDR, &msta->wcid.flags);
 	else
 		clear_bit(MT_WCID_FLAG_4ADDR, &msta->wcid.flags);
 
+	if (mtk_wed_device_active(&dev->mt76.mmio.wed) &&
+	    !is_mt7915(&dev->mt76) &&
+	    (msta->wcid.idx < min || msta->wcid.idx > max - 1)) {
+		struct ieee80211_sta *pre_sta;
+
+		pre_sta = kzalloc(sizeof(*sta) + sizeof(*msta), GFP_KERNEL);
+		mt76_sta_pre_rcu_remove(hw, vif, sta);
+		memmove(pre_sta, sta, sizeof(*sta) + sizeof(*msta));
+		mt7915_sta_add(hw, vif, sta);
+		synchronize_rcu();
+		mt7915_sta_remove(hw, vif, pre_sta);
+		kfree(pre_sta);
+	}
+
 	mt76_connac_mcu_wtbl_update_hdr_trans(&dev->mt76, vif, sta);
 }
 
@@ -1644,15 +1666,19 @@ mt7915_net_fill_forward_path(struct ieee80211_hw *hw,
 	if (!mtk_wed_device_active(wed))
 		return -ENODEV;
 
-	if (msta->wcid.idx > 0xff)
+	if (msta->wcid.idx > MT7915_WTBL_STA)
 		return -EIO;
 
 	path->type = DEV_PATH_MTK_WDMA;
 	path->dev = ctx->dev;
 	path->mtk_wdma.wdma_idx = wed->wdma_idx;
 	path->mtk_wdma.bss = mvif->mt76.idx;
-	path->mtk_wdma.wcid = is_mt7915(&dev->mt76) ? msta->wcid.idx : 0x3ff;
 	path->mtk_wdma.queue = phy != &dev->phy;
+	if (test_bit(MT_WCID_FLAG_4ADDR, &msta->wcid.flags) ||
+	    is_mt7915(&dev->mt76))
+		path->mtk_wdma.wcid = msta->wcid.idx;
+	else
+		path->mtk_wdma.wcid = 0x3ff;
 
 	ctx->dev = NULL;
 
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
index 9599adf104b1..c01d1b40eeef 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
@@ -2350,10 +2350,18 @@ int mt7915_mcu_init_firmware(struct mt7915_dev *dev)
 	if (ret)
 		return ret;
 
-	if ((mtk_wed_device_active(&dev->mt76.mmio.wed) &&
-	     is_mt7915(&dev->mt76)) ||
-	    !mtk_wed_get_rx_capa(&dev->mt76.mmio.wed))
-		mt7915_mcu_wa_cmd(dev, MCU_WA_PARAM_CMD(CAPABILITY), 0, 0, 0);
+	if (mtk_wed_device_active(&dev->mt76.mmio.wed)) {
+		if (is_mt7915(&dev->mt76) ||
+		    !mtk_wed_get_rx_capa(&dev->mt76.mmio.wed))
+			ret = mt7915_mcu_wa_cmd(dev, MCU_WA_PARAM_CMD(CAPABILITY),
+						0, 0, 0);
+		else
+			ret = mt7915_mcu_wa_cmd(dev, MCU_WA_PARAM_CMD(SET),
+						MCU_WA_PARAM_WED_VERSION,
+						dev->mt76.mmio.wed.rev_id, 0);
+		if (ret)
+			return ret;
+	}
 
 	ret = mt7915_mcu_set_mwds(dev, 1);
 	if (ret)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h
index b41ac4aaced7..b2bf5472b2d7 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h
+++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.h
@@ -279,6 +279,7 @@ enum {
 	MCU_WA_PARAM_CPU_UTIL = 0x0b,
 	MCU_WA_PARAM_RED = 0x0e,
 	MCU_WA_PARAM_RED_SETTING = 0x40,
+	MCU_WA_PARAM_WED_VERSION = 0x32,
 };
 
 enum mcu_mmps_mode {
diff --git a/drivers/net/wireless/mediatek/mt76/util.c b/drivers/net/wireless/mediatek/mt76/util.c
index d6c01a2dd198..461b74068fc3 100644
--- a/drivers/net/wireless/mediatek/mt76/util.c
+++ b/drivers/net/wireless/mediatek/mt76/util.c
@@ -42,9 +42,11 @@ bool ____mt76_poll_msec(struct mt76_dev *dev, u32 offset, u32 mask, u32 val,
 }
 EXPORT_SYMBOL_GPL(____mt76_poll_msec);
 
-int mt76_wcid_alloc(u32 *mask, int size)
+int __mt76_wcid_alloc(u32 *mask, int size, u8 flag)
 {
 	int i, idx = 0, cur;
+	int min = MT76_WED_WDS_MIN;
+	int max = MT76_WED_WDS_MAX;
 
 	for (i = 0; i < DIV_ROUND_UP(size, 32); i++) {
 		idx = ffs(~mask[i]);
@@ -53,16 +55,45 @@ int mt76_wcid_alloc(u32 *mask, int size)
 
 		idx--;
 		cur = i * 32 + idx;
-		if (cur >= size)
+
+		switch (flag) {
+		case MT76_WED_ACTIVE:
+			if (cur >= min && cur < max)
+				continue;
+
+			if (cur >= size) {
+				u32 end = max - min - 1;
+
+				i = min / 32;
+				idx = ffs(~mask[i] & GENMASK(end, 0));
+				if (!idx)
+					goto error;
+				idx--;
+				cur = min + idx;
+			}
+
 			break;
+		case MT76_WED_WDS_ACTIVE:
+			if (cur < min)
+				continue;
+			if (cur >= max)
+				goto error;
+
+			break;
+		default:
+			if (cur >= size)
+				goto error;
+			break;
+		}
 
 		mask[i] |= BIT(idx);
 		return cur;
 	}
 
+error:
 	return -1;
 }
-EXPORT_SYMBOL_GPL(mt76_wcid_alloc);
+EXPORT_SYMBOL_GPL(__mt76_wcid_alloc);
 
 int mt76_get_min_avg_rssi(struct mt76_dev *dev, bool ext_phy)
 {
diff --git a/drivers/net/wireless/mediatek/mt76/util.h b/drivers/net/wireless/mediatek/mt76/util.h
index 260965dde94c..99b7263c0a20 100644
--- a/drivers/net/wireless/mediatek/mt76/util.h
+++ b/drivers/net/wireless/mediatek/mt76/util.h
@@ -27,7 +27,12 @@ enum {
 #define MT76_INCR(_var, _size) \
 	(_var = (((_var) + 1) % (_size)))
 
-int mt76_wcid_alloc(u32 *mask, int size);
+int __mt76_wcid_alloc(u32 *mask, int size, u8 flags);
+
+static inline int mt76_wcid_alloc(u32 *mask, int size)
+{
+	return __mt76_wcid_alloc(mask, size, 0);
+}
 
 static inline void
 mt76_wcid_mask_set(u32 *mask, int idx)
-- 
2.34.1

.

From: Aleksander Jan Bajkowski <olek2@wp.pl>
To: ms@dev.tdt.de,
	miquel.raynal@bootlin.com,
	richard@nod.at,
	vigneshr@ti.com,
	linus.walleij@linaro.org,
	nico@fluxnic.net,
	olek2@wp.pl,
	linux-mtd@lists.infradead.org,
	linux-kernel@vger.kernel.org (open list)
Subject: [PATCH v2 0/1] mtd: cfi_cmdset_0001: Fix compilation error if FORCE_WORD_WRITE is 1
Date: Sun,  7 Jul 2024 11:43:01 +0200
Message-Id: <20240707094302.784948-1-olek2@wp.pl>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270080
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-mtd
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch fixes compilation errors when FORCE_WORD_WRITE is set to 1
and CONFIG_WERROR is enabled. CONFIG_WERROR was enabled by OpenWRT
a year ago and this patch has been used downstream since then.

Changes in v2:
- Rebased on top of the master

Aleksander Jan Bajkowski (1):
  mtd: cfi_cmdset_0001: Disable write buffer functions if
    FORCE_WORD_WRITE is 1

 drivers/mtd/chips/cfi_cmdset_0001.c | 6 ++++++
 1 file changed, 6 insertions(+)

-- 
2.39.2

.

From: Lizhe <sensor1010@163.com>
To: gregkh@linuxfoundation.org,
	rafael@kernel.org
Cc: linux-kernel@vger.kernel.org,
	Lizhe <sensor1010@163.com>
Subject: [PATCH v1] driver:core: no need to invert the return value of the call_driver_probe()
Date: Sun,  7 Jul 2024 04:27:38 -0700
Message-Id: <20240707112738.3380-1-sensor1010@163.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270095
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

If drv->probe() or drv->bus->probe() returns EPROBE_DEFER,
then there is no need to invert the sign. Similarly,
if it returns -EPROBE_DEFER, no sign inversion is needed either

In the probe function (either bus->probe() or drv->probe()),
there is no return value of EPROBE_DEFER.

Signed-off-by: Lizhe <sensor1010@163.com>
---
 drivers/base/dd.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 83d352394fdf..cbf7fe6aa8e0 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -664,11 +664,6 @@ static int really_probe(struct device *dev, struct device_driver *drv)
 		if (link_ret == -EAGAIN)
 			ret = -EPROBE_DEFER;
 
-		/*
-		 * Return probe errors as positive values so that the callers
-		 * can distinguish them from other errors.
-		 */
-		ret = -ret;
 		goto probe_failed;
 	}
 
-- 
2.17.1

.

From: Lizhe <sensor1010@163.com>
To: gregkh@linuxfoundation.org,
	rafael@kernel.org
Cc: linux-kernel@vger.kernel.org,
	Lizhe <sensor1010@163.com>
Subject: [PATCH] driver:core: no need to invert the return value of the call_driver_probe()
Date: Sun,  7 Jul 2024 04:22:36 -0700
Message-Id: <20240707112236.3187-1-sensor1010@163.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270098
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

If drv->probe() or drv->bus->probe() returns EPROBE_DEFER,
then there is no need to invert the sign. Similarly,
if it returns -EPROBE_DEFER, no sign inversion is needed either

In the probe function (either bus->probe() or drv->probe()),
there is no return value of EPROBE_DEFER.

Signed-off-by: Lizhe <sensor1010@163.com>
---
 drivers/base/dd.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/base/dd.c b/drivers/base/dd.c
index 83d352394fdf..d047919d1f5e 100644
--- a/drivers/base/dd.c
+++ b/drivers/base/dd.c
@@ -664,11 +664,6 @@ static int really_probe(struct device *dev, struct device_driver *drv)
 		if (link_ret == -EAGAIN)
 			ret = -EPROBE_DEFER;
 
-		/*
-		 * Return probe errors as positive values so that the callers
-		 * can distinguish them from other errors.
-		 */
-		ret = -ret;
 		goto probe_failed;
 	}
 
@@ -826,7 +821,7 @@ static int driver_probe_device(struct device_driver *drv, struct device *dev)
 
 	atomic_inc(&probe_count);
 	ret = __driver_probe_device(drv, dev);
-	if (ret == -EPROBE_DEFER || ret == EPROBE_DEFER) {
+	if (ret == -EPROBE_DEFER) {
 		driver_deferred_probe_add(dev);
 
 		/*
-- 
2.17.1

.

From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
To: Lee Jones <lee@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>,
	Arnd Bergmann <arnd@arndb.de>,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Subject: [PATCH 1/2] mfd: mt6360: Simplify with cleanup.h
Date: Sun,  7 Jul 2024 13:48:22 +0200
Message-ID: <20240707114823.9175-1-krzysztof.kozlowski@linaro.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270101
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel,org.infradead.lists.linux-mediatek
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Allocate the memory with scoped/cleanup.h to reduce error handling and
make the code a bit simpler.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
---
 drivers/mfd/mt6360-core.c | 23 +++++++++--------------
 1 file changed, 9 insertions(+), 14 deletions(-)

diff --git a/drivers/mfd/mt6360-core.c b/drivers/mfd/mt6360-core.c
index 2685efa5c9e2..b9b1036c8ff4 100644
--- a/drivers/mfd/mt6360-core.c
+++ b/drivers/mfd/mt6360-core.c
@@ -5,6 +5,7 @@
  * Author: Gene Chen <gene_chen@richtek.com>
  */
 
+#include <linux/cleanup.h>
 #include <linux/crc8.h>
 #include <linux/i2c.h>
 #include <linux/init.h>
@@ -404,7 +405,6 @@ static int mt6360_regmap_read(void *context, const void *reg, size_t reg_size,
 	u8 reg_addr = *(u8 *)(reg + 1);
 	struct i2c_client *i2c;
 	bool crc_needed = false;
-	u8 *buf;
 	int buf_len = MT6360_ALLOC_READ_SIZE(val_size);
 	int read_size = val_size;
 	u8 crc;
@@ -423,7 +423,7 @@ static int mt6360_regmap_read(void *context, const void *reg, size_t reg_size,
 		read_size += MT6360_CRC_CRC8_SIZE;
 	}
 
-	buf = kzalloc(buf_len, GFP_KERNEL);
+	u8 *buf __free(kfree) = kzalloc(buf_len, GFP_KERNEL);
 	if (!buf)
 		return -ENOMEM;
 
@@ -433,24 +433,19 @@ static int mt6360_regmap_read(void *context, const void *reg, size_t reg_size,
 	ret = i2c_smbus_read_i2c_block_data(i2c, reg_addr, read_size,
 					    buf + MT6360_CRC_PREDATA_OFFSET);
 	if (ret < 0)
-		goto out;
-	else if (ret != read_size) {
-		ret = -EIO;
-		goto out;
-	}
+		return ret;
+	else if (ret != read_size)
+		return -EIO;
 
 	if (crc_needed) {
 		crc = crc8(ddata->crc8_tbl, buf, val_size + MT6360_CRC_PREDATA_OFFSET, 0);
-		if (crc != buf[val_size + MT6360_CRC_PREDATA_OFFSET]) {
-			ret = -EIO;
-			goto out;
-		}
+		if (crc != buf[val_size + MT6360_CRC_PREDATA_OFFSET])
+			return -EIO;
 	}
 
 	memcpy(val, buf + MT6360_CRC_PREDATA_OFFSET, val_size);
-out:
-	kfree(buf);
-	return (ret < 0) ? ret : 0;
+
+	return 0;
 }
 
 static int mt6360_regmap_write(void *context, const void *val, size_t val_size)
-- 
2.43.0

.

Date: Sun, 7 Jul 2024 20:32:18 +0800
From: kernel test robot <lkp@intel.com>
To: Appana Durga Kedareswara rao <appana.durga.rao@xilinx.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	Michal Simek <monstr@monstr.eu>
Subject: arch/microblaze/kernel/entry.S:945: Error: unknown opcode "suspend"
Message-ID: <202407072048.GS8vn0Re-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270109
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi Appana,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c6653f49e4fd3b0d52c12a1fc814d6c5b234ea15
commit: 88707ebe77e23e856981e597f322cabbf6415662 microblaze: Add custom break vector handler for mb manager
date:   1 year, 9 months ago
config: microblaze-allmodconfig (https://download.01.org/0day-ci/archive/20240707/202407072048.GS8vn0Re-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240707/202407072048.GS8vn0Re-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407072048.GS8vn0Re-lkp@intel.com/

All errors (new ones prefixed by >>):

   arch/microblaze/kernel/entry.S: Assembler messages:
>> arch/microblaze/kernel/entry.S:945: Error: unknown opcode "suspend"


vim +/suspend +945 arch/microblaze/kernel/entry.S

   825	
   826		/* restore all the tlb's */
   827		addik	r3, r0, TOPHYS(tlb_skip)
   828		addik	r6, r0, PT_TLBL0
   829		addik	r7, r0, PT_TLBH0
   830	restore_tlb:
   831		add	r6, r6, r1
   832		add	r7, r7, r1
   833		lwi	r2, r6, 0
   834		mts 	rtlblo, r2
   835		lwi	r2, r7, 0
   836		mts	rtlbhi, r2
   837		addik	r6, r6, 4
   838		addik	r7, r7, 4
   839		bgtid	r3, restore_tlb
   840		addik	r3, r3, -1
   841	
   842		lwi  	r5, r0, TOPHYS(xmb_manager_dev)
   843		lwi	r8, r0, TOPHYS(xmb_manager_reset_callback)
   844		set_vms
   845		/* return from reset need -8 to adjust for rtsd r15, 8 */
   846		addik   r15, r0, ret_from_reset - 8
   847		rtbd	r8, 0
   848		nop
   849	
   850	ret_from_reset:
   851		set_bip /* Ints masked for state restore */
   852		VM_OFF
   853		/* MS: Restore all regs */
   854		RESTORE_REGS
   855		lwi	r14, r1, PT_R14
   856		lwi	r16, r1, PT_PC
   857		addik	r1, r1, PT_SIZE + 36
   858		rtbd	r16, 0
   859		nop
   860	
   861	/*
   862	 * Break handler for MB Manager. Enter to _xmb_manager_break by
   863	 * injecting fault in one of the TMR Microblaze core.
   864	 * FIXME: This break handler supports getting
   865	 * called from kernel space only.
   866	 */
   867	C_ENTRY(_xmb_manager_break):
   868		/*
   869		 * Reserve memory in the stack for context store/restore
   870		 * (which includes memory for storing tlbs (max two tlbs))
   871		 */
   872		addik	r1, r1, -PT_SIZE - 36
   873		swi	r1, r0, xmb_manager_stackpointer
   874		SAVE_REGS
   875		swi	r14, r1, PT_R14	/* rewrite saved R14 value */
   876		swi	r16, r1, PT_PC; /* PC and r16 are the same */
   877	
   878		lwi	r6, r0, TOPHYS(xmb_manager_baseaddr)
   879		lwi	r7, r0, TOPHYS(xmb_manager_crval)
   880		/*
   881		 * When the break vector gets asserted because of error injection,
   882		 * the break signal must be blocked before exiting from the
   883		 * break handler, below code configures the tmr manager
   884		 * control register to block break signal.
   885		 */
   886		swi	r7, r6, 0
   887	
   888		/* Save the special purpose registers  */
   889		mfs	r2, rpid
   890		swi	r2, r1, PT_PID
   891	
   892		mfs	r2, rtlbx
   893		swi	r2, r1, PT_TLBI
   894	
   895		mfs	r2, rzpr
   896		swi	r2, r1, PT_ZPR
   897	
   898	#if CONFIG_XILINX_MICROBLAZE0_USE_FPU
   899		mfs	r2, rfsr
   900		swi	r2, r1, PT_FSR
   901	#endif
   902		mfs	r2, rmsr
   903		swi	r2, r1, PT_MSR
   904	
   905		/* Save all the tlb's */
   906		addik	r3, r0, TOPHYS(tlb_skip)
   907		addik	r6, r0, PT_TLBL0
   908		addik	r7, r0, PT_TLBH0
   909	save_tlb:
   910		add	r6, r6, r1
   911		add	r7, r7, r1
   912		mfs	r2, rtlblo
   913		swi	r2, r6, 0
   914		mfs	r2, rtlbhi
   915		swi	r2, r7, 0
   916		addik	r6, r6, 4
   917		addik	r7, r7, 4
   918		bgtid	r3, save_tlb
   919		addik	r3, r3, -1
   920	
   921		lwi  	r5, r0, TOPHYS(xmb_manager_dev)
   922		lwi	r8, r0, TOPHYS(xmb_manager_callback)
   923		/* return from break need -8 to adjust for rtsd r15, 8 */
   924		addik   r15, r0, ret_from_break - 8
   925		rtbd	r8, 0
   926		nop
   927	
   928	ret_from_break:
   929		/* flush the d-cache */
   930		bralid	r15, mb_flush_dcache
   931		nop
   932	
   933		/*
   934		 * To make sure microblaze i-cache is in a proper state
   935		 * invalidate the i-cache.
   936		 */
   937		bralid	r15, mb_invalidate_icache
   938		nop
   939	
   940		set_bip; /* Ints masked for state restore */
   941		VM_OFF;
   942		mbar	1
   943		mbar	2
   944		bri	4
 > 945		suspend
   946		nop
   947	#endif
   948	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Zijun Hu <zijun_hu@icloud.com>
Date: Sun, 07 Jul 2024 21:23:15 +0800
Subject: [PATCH] driver core: Fix size calculation of symlink name for
 devlink_(add|remove)_symlinks()
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Message-Id: <20240707-devlink_fix-v1-1-623acb431cd8@quicinc.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, 
 "Rafael J. Wysocki" <rafael@kernel.org>, 
 Saravana Kannan <saravanak@google.com>
Cc: linux-kernel@vger.kernel.org, zijun_hu@icloud.com, 
 Zijun Hu <quic_zijuhu@quicinc.com>
X-Apple-Remote-Links: v=1;h=KCk=;charset=UTF-8
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270122
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

From: Zijun Hu <quic_zijuhu@quicinc.com>

devlink_(add|remove)_symlinks() wants to kzalloc() memory to save symlink
name for either supplier or consumer, but forget to consider consumer
prefix when calclulate memory size, fixed by considering prefix for both
supplier and consumer.

Fixes: 287905e68dd2 ("driver core: Expose device link details in sysfs")
Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
---
 drivers/base/core.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/base/core.c b/drivers/base/core.c
index 2b4c0624b704..f14cfe5c97b7 100644
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -572,7 +572,7 @@ static int devlink_add_symlinks(struct device *dev)
 	len = max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)),
 		  strlen(dev_bus_name(con)) + strlen(dev_name(con)));
 	len += strlen(":");
-	len += strlen("supplier:") + 1;
+	len += max(strlen("supplier:"), strlen("consumer:")) + 1;
 	buf = kzalloc(len, GFP_KERNEL);
 	if (!buf)
 		return -ENOMEM;
@@ -623,7 +623,7 @@ static void devlink_remove_symlinks(struct device *dev)
 	len = max(strlen(dev_bus_name(sup)) + strlen(dev_name(sup)),
 		  strlen(dev_bus_name(con)) + strlen(dev_name(con)));
 	len += strlen(":");
-	len += strlen("supplier:") + 1;
+	len += max(strlen("supplier:"), strlen("consumer:")) + 1;
 	buf = kzalloc(len, GFP_KERNEL);
 	if (!buf) {
 		WARN(1, "Unable to properly free device link symlinks!\n");

---
base-commit: c6653f49e4fd3b0d52c12a1fc814d6c5b234ea15
change-id: 20240707-devlink_fix-0fa46dedfe95

Best regards,
-- 
Zijun Hu <quic_zijuhu@quicinc.com>

.

From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: linux1394-devel@lists.sourceforge.net
Cc: linux-kernel@vger.kernel.org,
	kernel test robot <lkp@intel.com>
Subject: [PATCH] Revert "firewire: ohci: use common macro to interpret be32 data in le32 buffer"
Date: Sun,  7 Jul 2024 22:45:23 +0900
Message-ID: <20240707134523.11784-1-o-takashi@sakamocchi.jp>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270124
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This reverts commit f26a38e61c03fdfacb6b596e1daf665cf4526a60, since it
causes the following sparse warnings:

sparse warnings: (new ones prefixed by >>)
>> drivers/firewire/ohci.c:891:23: sparse: sparse: cast to restricted __be32
>> drivers/firewire/ohci.c:891:23: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:892:23: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:892:23: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:893:23: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:893:23: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:905:31: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:905:31: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:914:31: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:914:31: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:939:18: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:939:18: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:2033:23: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:2033:23: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:2037:27: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:2037:27: sparse: sparse: cast from restricted __le32
   drivers/firewire/ohci.c:2038:27: sparse: sparse: cast to restricted __be32
   drivers/firewire/ohci.c:2038:27: sparse: sparse: cast from restricted __le32

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202407050656.03bw1YXA-lkp@intel.com/
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
---
 drivers/firewire/ohci.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index f8d880574c19..314a29c0fd3e 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -879,7 +879,7 @@ static void ar_sync_buffers_for_cpu(struct ar_context *ctx,
 #if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32)
 static u32 cond_le32_to_cpu(__le32 value, bool has_be_header_quirk)
 {
-	return has_be_header_quirk ? be32_to_cpu(value) : le32_to_cpu(value);
+	return has_be_header_quirk ? (__force __u32)value : le32_to_cpu(value);
 }
 
 static bool has_be_header_quirk(const struct fw_ohci *ohci)
-- 
2.43.0

.

From: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Subject: [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped
 loop)
Date: Sun, 07 Jul 2024 15:54:00 +0200
Message-Id: <20240707-pcie-kirin-dev_err_probe-v2-0-2fa94951d84d@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
To: Xiaowei Song <songxiaowei@hisilicon.com>, 
 Binghui Wang <wangbinghui@hisilicon.com>, 
 Lorenzo Pieralisi <lpieralisi@kernel.org>, 
 =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>, 
 Rob Herring <robh@kernel.org>, 
 Jonathan Cameron <Jonathan.Cameron@Huawei.com>, 
 Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, 
 Javier Carrasco <javier.carrasco.cruz@gmail.com>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270125 org.kernel.vger.linux-pci:144973
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pci
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series removes some patterns that require multiple steps to achieve
what single calls can achieve.

Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
Changes in v2:
- Remove error value from the message "failed to parse devfn: %d\n", as
  it is already handled by dev_err_probe().
- Fix capitalization in error messages.
- Return -ENODEV and provide more appropriate error message if no
  dev->of_node is available.
- Link to v1: https://lore.kernel.org/r/20240706-pcie-kirin-dev_err_probe-v1-0-56df797fb8ee@gmail.com

---
Javier Carrasco (2):
      PCI: kirin: use dev_err_probe() in probe error paths
      PCI: kirin: use for_each_available_child_of_node_scoped()

 drivers/pci/controller/dwc/pcie-kirin.c | 54 ++++++++++++---------------------
 1 file changed, 20 insertions(+), 34 deletions(-)
---
base-commit: 412d6f897b7a494b373986e63a14a94d0fbd0fdb
change-id: 20240705-pcie-kirin-dev_err_probe-0c9035188ff9

Best regards,
-- 
Javier Carrasco <javier.carrasco.cruz@gmail.com>

.

From: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
To: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: linux-kernel@vger.kernel.org,
	kernel-janitors@vger.kernel.org,
	Christophe JAILLET <christophe.jaillet@wanadoo.fr>,
	linux-nilfs@vger.kernel.org
Subject: [PATCH] nilfs2: Constify struct kobj_type
Date: Sun,  7 Jul 2024 16:01:14 +0200
Message-ID: <7da501fae4f96e3d2c740fe5638cad813d33fcbf.1720360830.git.christophe.jaillet@wanadoo.fr>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270133
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-nilfs
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

'struct kobj_type' is not modified in this driver. It is only used with
kobject_init_and_add() which takes a "const struct kobj_type *" parameter.

Constifying this structure moves some data to a read-only section, so
increase overall security.

On a x86_64, with allmodconfig:
Before:
======
   text	   data	    bss	    dec	    hex	filename
  22403	   4184	     24	  26611	   67f3	fs/nilfs2/sysfs.o

After:
=====
   text	   data	    bss	    dec	    hex	filename
  22723	   3928	     24	  26675	   6833	fs/nilfs2/sysfs.o

Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
Compile tested-only
---
 fs/nilfs2/sysfs.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/fs/nilfs2/sysfs.c b/fs/nilfs2/sysfs.c
index 379d22e28ed6..a5569b7f47a3 100644
--- a/fs/nilfs2/sysfs.c
+++ b/fs/nilfs2/sysfs.c
@@ -56,7 +56,7 @@ static void nilfs_##name##_attr_release(struct kobject *kobj) \
 						sg_##name##_kobj); \
 	complete(&subgroups->sg_##name##_kobj_unregister); \
 } \
-static struct kobj_type nilfs_##name##_ktype = { \
+static const struct kobj_type nilfs_##name##_ktype = { \
 	.default_groups	= nilfs_##name##_groups, \
 	.sysfs_ops	= &nilfs_##name##_attr_ops, \
 	.release	= nilfs_##name##_attr_release, \
@@ -166,7 +166,7 @@ static const struct sysfs_ops nilfs_snapshot_attr_ops = {
 	.store	= nilfs_snapshot_attr_store,
 };
 
-static struct kobj_type nilfs_snapshot_ktype = {
+static const struct kobj_type nilfs_snapshot_ktype = {
 	.default_groups	= nilfs_snapshot_groups,
 	.sysfs_ops	= &nilfs_snapshot_attr_ops,
 	.release	= nilfs_snapshot_attr_release,
@@ -967,7 +967,7 @@ static const struct sysfs_ops nilfs_dev_attr_ops = {
 	.store	= nilfs_dev_attr_store,
 };
 
-static struct kobj_type nilfs_dev_ktype = {
+static const struct kobj_type nilfs_dev_ktype = {
 	.default_groups	= nilfs_dev_groups,
 	.sysfs_ops	= &nilfs_dev_attr_ops,
 	.release	= nilfs_dev_attr_release,
-- 
2.45.2

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Sun, 07 Jul 2024 07:43:18 -0700
Message-ID: <00000000000040b643061ca951fe@google.com>
Subject: [syzbot] [kernel?] possible deadlock in assign_fw
From: syzbot <syzbot+e70e4c6f6eee43357ba7@syzkaller.appspotmail.com>
To: gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, 
	mcgrof@kernel.org, rafael@kernel.org, russ.weight@linux.dev, 
	syzkaller-bugs@googlegroups.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270138
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    e9d22f7a6655 Merge tag 'linux_kselftest-fixes-6.10-rc7' of..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=1471b399980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=864caee5f78cab51
dashboard link: https://syzkaller.appspot.com/bug?extid=e70e4c6f6eee43357ba7
compiler:       Debian clang version 15.0.6, 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/c3dd72a93425/disk-e9d22f7a.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/9d79986da9dc/vmlinux-e9d22f7a.xz
kernel image: https://storage.googleapis.com/syzbot-assets/0df271bec574/bzImage-e9d22f7a.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+e70e4c6f6eee43357ba7@syzkaller.appspotmail.com

R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 000000000000006e R14: 00007f30c0504038 R15: 00007f30c062fa68
 </TASK>
============================================
WARNING: possible recursive locking detected
6.10.0-rc6-syzkaller-00061-ge9d22f7a6655 #0 Not tainted
--------------------------------------------
syz.1.2110/15436 is trying to acquire lock:
ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: assign_fw+0x56/0x890 drivers/base/firmware_loader/main.c:700

but task is already holding lock:
ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: device_cache_fw_images drivers/base/firmware_loader/main.c:1483 [inline]
ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: fw_pm_notify+0x232/0x2f0 drivers/base/firmware_loader/main.c:1536

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(fw_lock);
  lock(fw_lock);

 *** DEADLOCK ***

 May be due to missing lock nesting notation

5 locks held by syz.1.2110/15436:
 #0: ffffffff8eb2f6e8 (misc_mtx){+.+.}-{3:3}, at: misc_open+0x5c/0x390 drivers/char/misc.c:129
 #1: ffffffff8e1e7368 (system_transition_mutex){+.+.}-{3:3}, at: lock_system_sleep+0x60/0xa0 kernel/power/main.c:56
 #2: ffffffff8e2077f0 ((pm_chain_head).rwsem){++++}-{3:3}, at: blocking_notifier_call_chain_robust+0xac/0x1e0 kernel/notifier.c:352
 #3: ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: device_cache_fw_images drivers/base/firmware_loader/main.c:1483 [inline]
 #3: ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: fw_pm_notify+0x232/0x2f0 drivers/base/firmware_loader/main.c:1536
 #4: ffffffff8ec6ea08 (dpm_list_mtx){+.+.}-{3:3}, at: device_pm_lock drivers/base/power/main.c:113 [inline]
 #4: ffffffff8ec6ea08 (dpm_list_mtx){+.+.}-{3:3}, at: dpm_for_each_dev+0x2b/0xc0 drivers/base/power/main.c:1961

stack backtrace:
CPU: 0 PID: 15436 Comm: syz.1.2110 Not tainted 6.10.0-rc6-syzkaller-00061-ge9d22f7a6655 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
 check_deadlock kernel/locking/lockdep.c:3062 [inline]
 validate_chain+0x15d3/0x5900 kernel/locking/lockdep.c:3856
 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137
 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
 __mutex_lock_common kernel/locking/mutex.c:608 [inline]
 __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752
 assign_fw+0x56/0x890 drivers/base/firmware_loader/main.c:700
 _request_firmware+0xd0a/0x12b0 drivers/base/firmware_loader/main.c:917
 request_firmware drivers/base/firmware_loader/main.c:963 [inline]
 cache_firmware drivers/base/firmware_loader/main.c:1265 [inline]
 __async_dev_cache_fw_image+0xe7/0x320 drivers/base/firmware_loader/main.c:1379
 async_schedule_node_domain+0xdc/0x110 kernel/async.c:221
 async_schedule_domain include/linux/async.h:72 [inline]
 dev_cache_fw_image+0x36d/0x3e0 drivers/base/firmware_loader/main.c:1435
 dpm_for_each_dev+0x58/0xc0 drivers/base/power/main.c:1963
 device_cache_fw_images drivers/base/firmware_loader/main.c:1485 [inline]
 fw_pm_notify+0x24a/0x2f0 drivers/base/firmware_loader/main.c:1536
 notifier_call_chain+0x19f/0x3e0 kernel/notifier.c:93
 notifier_call_chain_robust kernel/notifier.c:128 [inline]
 blocking_notifier_call_chain_robust+0xe8/0x1e0 kernel/notifier.c:353
 pm_notifier_call_chain_robust+0x2c/0x60 kernel/power/main.c:102
 snapshot_open+0x1a1/0x280 kernel/power/user.c:77
 misc_open+0x313/0x390 drivers/char/misc.c:165
 chrdev_open+0x5b0/0x630 fs/char_dev.c:414
 do_dentry_open+0x970/0x1450 fs/open.c:955
 vfs_open+0x3e/0x330 fs/open.c:1086
 do_open fs/namei.c:3654 [inline]
 path_openat+0x2c01/0x35f0 fs/namei.c:3813
 do_filp_open+0x235/0x490 fs/namei.c:3840
 do_sys_openat2+0x13e/0x1d0 fs/open.c:1413
 do_sys_open fs/open.c:1428 [inline]
 __do_sys_openat fs/open.c:1444 [inline]
 __se_sys_openat fs/open.c:1439 [inline]
 __x64_sys_openat+0x247/0x2a0 fs/open.c:1439
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f30c0375bd9
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:00007f30c1120048 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
RAX: ffffffffffffffda RBX: 00007f30c0504038 RCX: 00007f30c0375bd9
RDX: 0000000000000000 RSI: 0000000020000080 RDI: ffffffffffffff9c
RBP: 00007f30c11200a0 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
R13: 000000000000006e R14: 00007f30c0504038 R15: 00007f30c062fa68
 </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@googlegroups.com.

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
.

From: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
To: acme@kernel.org, jolsa@kernel.org, adrian.hunter@intel.com,
        irogers@google.com, namhyung@kernel.org, segher@kernel.crashing.org,
        christophe.leroy@csgroup.eu
Cc: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
        linuxppc-dev@lists.ozlabs.org, akanksha@linux.ibm.com,
        maddy@linux.ibm.com, atrajeev@linux.vnet.ibm.com, kjain@linux.ibm.com,
        disgoel@linux.vnet.ibm.com
Subject: [PATCH V6 00/18] Add data type profiling support for powerpc
Date: Sun,  7 Jul 2024 20:14:01 +0530
Message-Id: <20240707144419.92510-1-atrajeev@linux.vnet.ibm.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270141
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users,org.ozlabs.lists.linuxppc-dev
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The patchset from Namhyung added support for data type profiling
in perf tool. This enabled support to associate PMU samples to data
types they refer using DWARF debug information. With the upstream
perf, currently it possible to run perf report or perf annotate to
view the data type information on x86.

Initial patchset posted here had changes need to enable data type
profiling support for powerpc.

https://lore.kernel.org/all/6e09dc28-4a2e-49d8-a2b5-ffb3396a9952@csgroup.eu/T/

Main change were:
1. powerpc instruction nmemonic table to associate load/store
instructions with move_ops which is use to identify if instruction
is a memory access one.
2. To get register number and access offset from the given
instruction, code uses fields from "struct arch" -> objump.
Added entry for powerpc here.
3. A get_arch_regnum to return register number from the
register name string.

But the apporach used in the initial patchset used parsing of
disassembled code which the current perf tool implementation does.

Example: lwz     r10,0(r9)

This line "lwz r10,0(r9)" is parsed to extract instruction name,
registers names and offset. Also to find whether there is a memory
reference in the operands, "memory_ref_char" field of objdump is used.
For x86, "(" is used as memory_ref_char to tackle instructions of the
form "mov  (%rax), %rcx".

In case of powerpc, not all instructions using "(" are the only memory
instructions. Example, above instruction can also be of extended form (X
form) "lwzx r10,0,r19". Inorder to easy identify the instruction category
and extract the source/target registers, second patchset added support to use
raw instruction. With raw instruction, macros are added to extract opcode
and register fields.
Link to second patchset:
https://lore.kernel.org/all/20240506121906.76639-1-atrajeev@linux.vnet.ibm.com/

Example representation using --show-raw-insn in objdump gives result:

38 01 81 e8     ld      r4,312(r1)

Here "38 01 81 e8" is the raw instruction representation. In powerpc,
this translates to instruction form: "ld RT,DS(RA)" and binary code
as:
  _____________________________________
  | 58 |  RT  |  RA |      DS       | |
  -------------------------------------
0    6     11    16              30 31

Second patchset used "objdump" again to read the raw instruction.
But since there is no need to disassemble and binary code can be read
directly from the DSO, third patchset (ie this patchset) uses below
apporach. The apporach preferred in powerpc to parse sample for data
type profiling in V3 patchset is:
- Read directly from DSO using dso__data_read_offset
- If that fails for any case, fallback to using libcapstone
- If libcapstone is not supported, approach will use objdump

Patchset adds support to pick the opcode and reg fields from this
raw/binary instruction code. This approach came in from review comment
by Segher Boessenkool and Christophe for the initial patchset.

Apart from that, instruction tracking is enabled for powerpc and
support function is added to find variables defined as registers
Example, in powerpc, below two registers are
defined to represent variable:
1. r13: represents local_paca
register struct paca_struct *local_paca asm("r13");

2. r1: represents stack_pointer
register void *__stack_pointer asm("r1");

These are handled in this patchset.

- Patch 1 is to rearrange register state type structures to header file
so that it can referred from other arch specific files
- Patch 2 is to make instruction tracking as a callback to"struct arch"
so that it can be implemented by other archs easily and defined in arch
specific files
- Patch 3 is to handle state type regs array size for x86 and powerpc
- Patch 4 adds support to capture and parse raw instruction in powerpc
using dso__data_read_offset utility
- Patch 4 also adds logic to support using objdump when doing default "perf
report" or "perf annotate" since it that needs disassembled instruction.
- Patch 5 adds disasm_line__parse to parse raw instruction for powerpc
- Patch 6 update parameters for reg extract functions to use raw
instruction on powerpc
- Patch 7 updates ins__find to carry raw_insn and also adds parse
callback for memory instructions for powerpc
- Patch 8 add support to identify memory instructions of opcode 31 in
powerpc
- Patch 9 adds more instructions to support instruction tracking in powerpc
- Patch 10 and 11 handles instruction tracking for powerpc.
- Patch 12, 13 and 14 add support to use libcapstone in powerpc
- Patch 15 and patch 16 handles support to find global register variables
- PAtch 17 updates data type compare functions data_type_cmp and
  sort__typeoff_sort to include var_name along with type_name in
  comparison.
- Patch 18 handles insn-stat option for perf annotate

Note:
- There are remaining unknowns (25%) as seen in annotate Instruction stats
below.
- This patchset is not tested on powerpc32. In next step of enhancements
along with handling remaining unknowns, plan to cover powerpc32 changes
based on how testing goes.

With the current patchset:

 ./perf record -a -e mem-loads sleep 1
 ./perf report -s type,typeoff --hierarchy --group --stdio
 ./perf annotate --data-type --insn-stat

perf annotate logs:
==================

Annotate Instruction stats
total 609, ok 446 (73.2%), bad 163 (26.8%)

  Name/opcode:  Good   Bad
  -----------------------------------------------------------
  58                  :   323    80
  32                  :    49    43
  34                  :    33    11
  OP_31_XOP_LDX       :     8    20
  40                  :    23     0
  OP_31_XOP_LWARX     :     5     1
  OP_31_XOP_LWZX      :     2     3
  OP_31_XOP_LDARX     :     3     0
  33                  :     0     2
  OP_31_XOP_LBZX      :     0     1
  OP_31_XOP_LWAX      :     0     1
  OP_31_XOP_LHZX      :     0     1

perf report logs:
=================

  Total Lost Samples: 0

  Samples: 1K of event 'mem-loads'
  Event count (approx.): 937238

  Overhead  Data Type  Data Type Offset
 ........  .........  ................
    48.60%  (unknown)  (unknown) +0 (no field)
    11.42%  long unsigned int  long unsigned int +0 (current_stack_pointer)
     4.68%  struct paca_struct  struct paca_struct +2312 (__current)
     4.57%  struct paca_struct  struct paca_struct +2354 (irq_soft_mask)
     2.69%  struct paca_struct  struct paca_struct +2808 (canary)
     2.68%  struct paca_struct  struct paca_struct +8 (paca_index)
     2.24%  struct paca_struct  struct paca_struct +48 (data_offset)
     1.43%  long unsigned int  long unsigned int +0 (no field)
     1.41%  struct vm_fault  struct vm_fault +0 (vma)
     1.29%  struct task_struct  struct task_struct +276 (flags)
     1.03%  struct pt_regs  struct pt_regs +264 (user_regs.msr)
     0.90%  struct security_hook_list  struct security_hook_list +0 (list.next)
     0.76%  struct irq_desc  struct irq_desc +304 (irq_data.chip)
     0.76%  struct rq  struct rq +2856 (cpu)
     0.72%  long long unsigned int  long long unsigned int +0 (no field)

Thanks
Athira Rajeev

Changelog:
From v5 -> v6:
- Addressed review comments from Namhyung
  Conditionally define TYPE_STATE_MAX_REGS based on arch.
  Added macro for defining width of the raw codes and spaces
  in disasm_line__parse_powerpc.
  Call disasm_line__parse from disasm_line__parse_powerpc
  for generic code.
  Renamed symbol__disassemble_dso to symbol__disassemble_raw.
  Fixed find_data_type_global_reg to correclty free var_types
  and change indent level.
  Fixed data_type_cmp and sort__typeoff_sort to include var_name
  in comparing data type entries.
  
From v4 -> v5:
- Addressed review comments from Namhyung
  Handle max number of type state regs as 16 for x86 and 32 for
  powerpc.
  Added generic support for objdump patch first and DSO read
  optimisation next
  combined patch 3 and patch 4 in patchseries V4 to one patch
  Changed reference for "raw_insn" to use "u32"
  Splitted "parse" callback patch changes and "ins__find" patch
  changes into two
  Instead of making weak function, added get_powerpc_regs to
  extract register and offset fields for powerpc
- Addressed complation fail when "dwarf.h" is not present ie
  elfutils devel is not present. Used includes for #ifdef HAVE_DWARF_SUPPORT
  when including functions that use Dwarf references. Also
  conditionally include some of the header files.

From v3->v4:
- Addressed review comments from Ian by using capston_init from
  "util/print_insn.c" instead of "open_capston_handle".
- Addressed review comment from Namhyung by moving "opcode"
  field from "struct ins" to "struct disasm_line"

From v2->v3:
- Addressed review comments from Christophe and Namhyung for V2
- Changed the apporach in powerpc to parse sample for data
  type profiling as:
  Read directly from DSO using dso__data_read_offset
  If that fails for any case, fallback to using libcapstone
  If libcapstone is not supported, approach will use objdump
- Include instructions with opcode as 31 and correctly categorize
  them as memory or arithmetic instructions.
- Include more instructions for instruction tracking in powerpc

From v1->v2:
- Addressed suggestion from Christophe Leroy and Segher Boessenkool
  to use the binary code (raw insn) to fetch opcode, register and
  offset fields.
- Added support for instruction tracking in powerpc
- Find the register defined variables (r13 and r1 which points to
  local_paca and current_stack_pointer in powerpc)

Athira Rajeev (18):
  tools/perf: Move the data structures related to register type to
    header file
  tools/perf: Add "update_insn_state" callback function to handle arch
    specific instruction tracking
  tools/perf: Update TYPE_STATE_MAX_REGS to include max of regs in
    powerpc
  tools/perf: Add disasm_line__parse to parse raw instruction for
    powerpc
  tools/perf: Add support to capture and parse raw instruction in
    powerpc using dso__data_read_offset utility
  tools/perf: Update parameters for reg extract functions to use raw
    instruction on powerpc
  tools/perf: Add parse function for memory instructions in powerpc
  tools/perf: Add support to identify memory instructions of opcode 31
    in powerpc
  tools/perf: Add some of the arithmetic instructions to support
    instruction tracking in powerpc
  tools/perf: Add more instructions for instruction tracking
  tools/perf: Update instruction tracking for powerpc
  tools/perf: Make capstone_init non-static so that it can be used
    during symbol disassemble
  tools/perf: Use capstone_init and remove open_capstone_handle from
    disasm.c
  tools/perf: Add support to use libcapstone in powerpc
  tools/perf: Add support to find global register variables using
    find_data_type_global_reg
  tools/perf: Add support for global_die to capture name of variable in
    case of register defined variable
  tools/perf: Update data_type_cmp and sort__typeoff_sort function to
    include var_name in comparison
  tools/perf: Set instruction name to be used with insn-stat when using
    raw instruction

 tools/include/linux/string.h                  |   2 +
 tools/lib/string.c                            |  13 +
 tools/perf/arch/arm64/annotate/instructions.c |   3 +-
 .../arch/loongarch/annotate/instructions.c    |   6 +-
 .../perf/arch/powerpc/annotate/instructions.c | 254 ++++++++
 tools/perf/arch/powerpc/util/dwarf-regs.c     |  53 ++
 tools/perf/arch/s390/annotate/instructions.c  |   5 +-
 tools/perf/arch/x86/annotate/instructions.c   | 377 ++++++++++++
 tools/perf/builtin-annotate.c                 |   4 +-
 tools/perf/util/annotate-data.c               | 545 ++++--------------
 tools/perf/util/annotate-data.h               |  83 +++
 tools/perf/util/annotate.c                    |  29 +-
 tools/perf/util/annotate.h                    |   6 +-
 tools/perf/util/disasm.c                      | 468 +++++++++++++--
 tools/perf/util/disasm.h                      |  19 +-
 tools/perf/util/dwarf-aux.c                   |   1 +
 tools/perf/util/dwarf-aux.h                   |   1 +
 tools/perf/util/include/dwarf-regs.h          |  12 +
 tools/perf/util/print_insn.c                  |  15 +-
 tools/perf/util/print_insn.h                  |   5 +
 tools/perf/util/sort.c                        |  23 +-
 21 files changed, 1420 insertions(+), 504 deletions(-)

-- 
2.43.0

.

From: Masahiro Yamada <masahiroy@kernel.org>
To: linux-kbuild@vger.kernel.org
Cc: linux-kernel@vger.kernel.org,
	Masahiro Yamada <masahiroy@kernel.org>
Subject: [PATCH 1/4] kconfig: call expr_eliminate_yn() at least once in expr_eliminate_dups()
Date: Mon,  8 Jul 2024 00:38:04 +0900
Message-ID: <20240707153856.2483047-1-masahiroy@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270168
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-kbuild
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Kconfig simplifies expressions, but redundant '&&' and '||' operators
involving constant symbols 'y' and 'n' are sometimes trimmed and
sometimes not.

[Test Code]

    config DEP
            def_bool y

    config A
            bool "A"
            depends on DEP && y

    config B
            bool "B"
            depends on DEP && y && y

[Result]

    $ make helpnewconfig
      [ snip ]
    -----

    There is no help available for this option.
    Symbol: A [=n]
    Type  : bool
    Defined at Kconfig:4
      Prompt: A
      Depends on: DEP [=y] && y [=y]
      Location:
        -> A (A [=n])

    -----
    -----

    There is no help available for this option.
    Symbol: B [=n]
    Type  : bool
    Defined at Kconfig:8
      Prompt: B
      Depends on: DEP [=y]
      Location:
        -> B (B [=n])

    -----

The dependency for A, 'DEP && y', remains as-is, while that for B,
'DEP && y && y', has been reduced to 'DEP'.

Currently, expr_eliminate_dups() calls expr_eliminate_yn() only when
trans_count != 0, in other words, only when expr_eliminate_dups1() has
trimmed at least one leaf. It fails to trim a single '&& y', etc.

To fix this inconsistent behavior, expr_eliminate_yn() should be called
at least once even if no leaf has been trimmed.

Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/expr.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/scripts/kconfig/expr.c b/scripts/kconfig/expr.c
index 6d4b5a5a1e62..b2dfd3123a5d 100644
--- a/scripts/kconfig/expr.c
+++ b/scripts/kconfig/expr.c
@@ -637,7 +637,7 @@ struct expr *expr_eliminate_dups(struct expr *e)
 		return e;
 
 	oldcount = trans_count;
-	while (1) {
+	do {
 		trans_count = 0;
 		switch (e->type) {
 		case E_OR: case E_AND:
@@ -645,11 +645,8 @@ struct expr *expr_eliminate_dups(struct expr *e)
 		default:
 			;
 		}
-		if (!trans_count)
-			/* No simplifications done in this pass. We're done */
-			break;
 		e = expr_eliminate_yn(e);
-	}
+	} while (trans_count); /* repeat until we get no more simplifications */
 	trans_count = oldcount;
 	return e;
 }
-- 
2.43.0

.

From: Mikhail Krasheninnikov <krashmisha@gmail.com>
To: linux-kernel@vger.kernel.org
Cc: Mikhail Krasheninnikov <krashmisha@gmail.com>,
	Matwey Kornilov <matwey.kornilov@gmail.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	linux-mmc@vger.kernel.org,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Jason Wang <jasowang@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Xuan Zhuo <xuanzhuo@linux.alibaba.com>,
	virtualization@lists.linux-foundation.org
Subject: [PATCH RFC v2] mmc/virtio: Add virtio MMC driver for QEMU emulation
Date: Sun,  7 Jul 2024 16:05:55 +0000
Message-Id: <20240707160555.78062-1-krashmisha@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270177
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.virtualization,org.kernel.vger.linux-mmc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Introduce a new virtio MMC driver to enable virtio SD/MMC card
emulation with QEMU. This driver allows emulating MMC cards in
virtual environments, enhancing functionality and testing
capabilities within QEMU.

Link to the QEMU patch:
https://lists.nongnu.org/archive/html/qemu-block/2024-07/msg00221.html

No changes to existing dependencies or documentation.

Signed-off-by: Mikhail Krasheninnikov <krashmisha@gmail.com>
CC: Matwey Kornilov <matwey.kornilov@gmail.com>
CC: Ulf Hansson <ulf.hansson@linaro.org>
CC: linux-mmc@vger.kernel.org
CC: "Michael S. Tsirkin" <mst@redhat.com>
CC: Jason Wang <jasowang@redhat.com>
CC: Paolo Bonzini <pbonzini@redhat.com>
CC: Stefan Hajnoczi <stefanha@redhat.com>
CC: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
CC: virtualization@lists.linux-foundation.org

---
Changes from v1:
 - Add MAINTAINERS entry
 - Refactor includes
 - Change CPU endian format to little endian for device communication
 - Move structs that belonged to uapi
 - Validate multiple fields
 - Introduce mutexes for safe request handling
 - Call virtio_device_ready before adding host
 - Fix removal of the device

 MAINTAINERS                       |  15 ++
 drivers/mmc/host/Kconfig          |  14 ++
 drivers/mmc/host/Makefile         |   2 +
 drivers/mmc/host/virtio-sdhci.c   | 258 ++++++++++++++++++++++++++++++
 drivers/mmc/host/virtio-sdhci.h   |  40 +++++
 include/uapi/linux/virtio-sdhci.h |  39 +++++
 include/uapi/linux/virtio_ids.h   |   1 +
 7 files changed, 369 insertions(+)
 create mode 100644 drivers/mmc/host/virtio-sdhci.c
 create mode 100644 drivers/mmc/host/virtio-sdhci.h
 create mode 100644 include/uapi/linux/virtio-sdhci.h

diff --git a/MAINTAINERS b/MAINTAINERS
index dd5de540ec0b..be86156cd66c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -22907,6 +22907,21 @@ S:	Maintained
 F:	drivers/nvdimm/nd_virtio.c
 F:	drivers/nvdimm/virtio_pmem.c
 
+VIRTIO SDHCI DRIVER
+M:	Mikhail Krasheninnikov <krashmisha@gmail.com>
+M:	"Michael S. Tsirkin" <mst@redhat.com>
+M:	Jason Wang <jasowang@redhat.com>
+M:	Paolo Bonzini <pbonzini@redhat.com>
+M:	Stefan Hajnoczi <stefanha@redhat.com>
+M:	Xuan Zhuo <xuanzhuo@linux.alibaba.com>
+L:	virtualization@lists.linux-foundation.org
+L:	linux-mmc@vger.kernel.org
+L:	OASIS-virtio@ConnectedCommunity.org
+S:	Maintained
+F:	drivers/mmc/host/virtio-sdhci.c
+F:	drivers/mmc/host/virtio-sdhci.h
+F:	include/uapi/linux/virtio-sdhci.h
+
 VIRTIO SOUND DRIVER
 M:	Anton Yakovlev <anton.yakovlev@opensynergy.com>
 M:	"Michael S. Tsirkin" <mst@redhat.com>
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 554e67103c1a..d62d669ee117 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -1069,3 +1069,17 @@ config MMC_LITEX
 	  module will be called litex_mmc.
 
 	  If unsure, say N.
+
+config SDHCI_VIRTIO
+	tristate "VirtIO SDHCI Host Controller support"
+	depends on VIRTIO
+	help
+	  This enables support for the Virtio SDHCI driver, which allows the
+	  kernel to interact with SD/MMC devices over Virtio. Virtio is a
+	  virtualization standard for network and disk device drivers,
+	  providing a common API for virtualized environments.
+
+	  Enable this option if you are running the kernel in a virtualized
+	  environment and need SD/MMC support via Virtio.
+
+	  If unsure, say N.
\ No newline at end of file
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index a693fa3d3f1c..f9b05a07c6db 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -108,3 +108,5 @@ endif
 
 obj-$(CONFIG_MMC_SDHCI_XENON)	+= sdhci-xenon-driver.o
 sdhci-xenon-driver-y		+= sdhci-xenon.o sdhci-xenon-phy.o
+
+obj-$(CONFIG_SDHCI_VIRTIO)	+= virtio-sdhci.o
\ No newline at end of file
diff --git a/drivers/mmc/host/virtio-sdhci.c b/drivers/mmc/host/virtio-sdhci.c
new file mode 100644
index 000000000000..1a637ab5e010
--- /dev/null
+++ b/drivers/mmc/host/virtio-sdhci.c
@@ -0,0 +1,258 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ *  VirtIO SD/MMC driver
+ *
+ *  Author: Mikhail Krasheninnikov <krashmisha@gmail.com>
+ */
+
+#include "virtio-sdhci.h"
+#include "linux/mmc/host.h"
+#include "linux/virtio.h"
+#include "linux/virtio_config.h"
+#include "linux/completion.h"
+#include "uapi/linux/virtio-sdhci.h"
+
+struct virtio_sdhci_host {
+	struct virtio_device *vdev;
+	struct mmc_host *mmc;
+	struct virtqueue *vq;
+	struct mmc_request *current_request;
+
+	struct virtio_mmc_request virtio_request;
+	struct virtio_mmc_response virtio_response;
+
+	struct completion request_handled;
+	spinlock_t handling_request;
+};
+
+static void virtio_sdhci_vq_callback(struct virtqueue *vq)
+{
+	unsigned int len;
+	struct mmc_host *mmc;
+	struct virtio_sdhci_host *host;
+	struct virtio_mmc_request *virtio_request;
+	struct virtio_mmc_response *virtio_response;
+	struct mmc_request *mrq;
+
+	mmc = vq->vdev->priv;
+	host = mmc_priv(mmc);
+	mrq = host->current_request;
+	virtio_request = &host->virtio_request;
+
+	virtio_response = virtqueue_get_buf(vq, &len);
+
+	if (!virtio_response)
+		return;
+
+	memcpy(mrq->cmd->resp, virtio_response->cmd_resp,
+	       min(4 * (int)sizeof(u32), virtio_response->cmd_resp_len));
+
+	if (virtio_request->flags & VIRTIO_MMC_REQUEST_DATA) {
+		mrq->data->bytes_xfered =
+			min((unsigned int)virtio_request->buf_len,
+			    mmc->max_blk_size);
+
+		if (!(virtio_request->flags & VIRTIO_MMC_REQUEST_WRITE)) {
+			sg_copy_from_buffer(mrq->data->sg, mrq->data->sg_len,
+					    virtio_response->buf,
+					    mrq->data->bytes_xfered);
+		}
+	}
+
+	complete(&host->request_handled);
+}
+
+static void virtio_sdhci_send_and_recv_request_from_qemu(struct virtio_sdhci_host *data)
+{
+	struct scatterlist sg_out_linux, sg_in_linux;
+
+	sg_init_one(&sg_out_linux, &data->virtio_request,
+		    sizeof(struct virtio_mmc_request));
+	sg_init_one(&sg_in_linux, &data->virtio_response,
+		    sizeof(struct virtio_mmc_response));
+
+	struct scatterlist *request[] = { &sg_out_linux, &sg_in_linux };
+
+	if (virtqueue_add_sgs(data->vq, request, 1, 1, &data->virtio_response,
+			      GFP_KERNEL) < 0) {
+		dev_crit(&data->vdev->dev, "Failed to add sg\n");
+		return;
+	}
+
+	virtqueue_kick(data->vq);
+	wait_for_completion(&data->request_handled);
+}
+
+static inline size_t __calculate_len(struct mmc_data *data)
+{
+	size_t len = 0;
+
+	for (int i = 0; i < data->sg_len; i++)
+		len += data->sg[i].length;
+	return len;
+}
+
+/* MMC layer callbacks */
+
+static void virtio_sdhci_request(struct mmc_host *mmc, struct mmc_request *mrq)
+{
+	struct virtio_sdhci_host *host;
+	struct virtio_mmc_request *virtio_req;
+	struct mmc_data *mrq_data;
+
+	host = mmc_priv(mmc);
+
+	spin_lock(&host->handling_request);
+
+	WARN_ON(host->current_request != NULL);
+
+	host->current_request = mrq; // Saving the request for the callback
+
+	virtio_req = &host->virtio_request;
+	memset(virtio_req, 0, sizeof(struct virtio_mmc_request));
+
+	virtio_req->request.opcode = mrq->cmd->opcode;
+	virtio_req->request.arg = mrq->cmd->arg;
+
+	mrq_data = mrq->data;
+	if (mrq_data) {
+		virtio_req->flags |= VIRTIO_MMC_REQUEST_DATA;
+
+		virtio_req->buf_len = __calculate_len(mrq->data);
+
+		virtio_req->flags |= ((mrq_data->flags & MMC_DATA_WRITE) ?
+					      VIRTIO_MMC_REQUEST_WRITE :
+					      0);
+		if (virtio_req->flags & VIRTIO_MMC_REQUEST_WRITE) {
+			sg_copy_to_buffer(mrq_data->sg, mrq_data->sg_len,
+					  virtio_req->buf, virtio_req->buf_len);
+		}
+	}
+
+	if (mrq->stop) {
+		virtio_req->flags |= VIRTIO_MMC_REQUEST_STOP;
+
+		virtio_req->stop_req.opcode = mrq->stop->opcode;
+		virtio_req->stop_req.arg = mrq->stop->arg;
+	}
+
+	if (mrq->sbc) {
+		virtio_req->flags |= VIRTIO_MMC_REQUEST_SBC;
+
+		virtio_req->sbc_req.opcode = mrq->sbc->opcode;
+		virtio_req->sbc_req.arg = mrq->sbc->arg;
+	}
+
+	virtio_sdhci_send_and_recv_request_from_qemu(host);
+
+	host->current_request = NULL;
+	spin_unlock(&host->handling_request);
+	mmc_request_done(mmc, mrq);
+}
+
+static void virtio_sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
+{
+}
+
+static int virtio_sdhci_get_ro(struct mmc_host *mmc)
+{
+	return 0;
+}
+
+static int virtio_sdhci_get_cd(struct mmc_host *mmc)
+{
+	return 1;
+}
+
+static const struct mmc_host_ops virtio_sdhci_host_ops = {
+	.request = virtio_sdhci_request,
+	.set_ios = virtio_sdhci_set_ios,
+	.get_ro = virtio_sdhci_get_ro,
+	.get_cd = virtio_sdhci_get_cd,
+};
+
+static inline void __fill_host_attr(struct mmc_host *host)
+{
+	host->ops = &virtio_sdhci_host_ops;
+	host->f_min = 300000;
+	host->f_max = 500000;
+	host->ocr_avail = MMC_VDD_32_33 | MMC_VDD_33_34;
+	host->caps = MMC_CAP_SD_HIGHSPEED;
+	host->caps2 = MMC_CAP2_NO_SDIO | MMC_CAP2_NO_MMC | MMC_CAP2_HS400;
+	host->max_blk_size = 4096;
+}
+
+static int create_host(struct virtio_device *vdev)
+{
+	int err;
+	struct mmc_host *mmc;
+	struct virtio_sdhci_host *host;
+
+	mmc = mmc_alloc_host(sizeof(struct virtio_sdhci_host), &vdev->dev);
+	if (!mmc) {
+		pr_err("virtio_mmc: Failed to allocate host\n");
+		return -ENOMEM;
+	}
+
+	__fill_host_attr(mmc);
+
+	vdev->priv = mmc;
+
+	host = mmc_priv(mmc);
+	host->vdev = vdev;
+
+	spin_lock_init(&host->handling_request);
+	init_completion(&host->request_handled);
+
+	host->vq =
+		virtio_find_single_vq(vdev, virtio_sdhci_vq_callback, "vq_name");
+	if (!host->vq) {
+		pr_err("virtio_mmc: Failed to find virtqueue\n");
+		mmc_free_host(mmc);
+		return -ENODEV;
+	}
+
+	virtio_device_ready(vdev);
+
+	err = mmc_add_host(mmc);
+	if (err) {
+		pr_err("virtio_mmc: Failed to add host\n");
+		mmc_free_host(mmc);
+		return err;
+	}
+
+	return 0;
+}
+
+static int virtio_sdhci_probe(struct virtio_device *vdev)
+{
+	int err;
+
+	err = create_host(vdev);
+	if (err)
+		pr_err("virtio_mmc: Failed to make host\n");
+
+	return 0;
+}
+
+static void remove_mmc_host(struct mmc_host *host)
+{
+	/*
+	 * Host is claimed while removing, so all ongoing
+	 * requests would be handled before removal and no
+	 * additional control is required
+	 */
+	mmc_remove_host(host);
+	mmc_free_host(host);
+}
+
+static void virtio_sdhci_remove(struct virtio_device *vdev)
+{
+	struct mmc_host *mmc = vdev->priv;
+	struct virtio_sdhci_host *host = mmc_priv(mmc);
+
+	complete(&host->request_handled);
+	remove_mmc_host(mmc);
+	virtio_reset_device(vdev);
+	vdev->config->del_vqs(vdev);
+}
diff --git a/drivers/mmc/host/virtio-sdhci.h b/drivers/mmc/host/virtio-sdhci.h
new file mode 100644
index 000000000000..db35268e7b64
--- /dev/null
+++ b/drivers/mmc/host/virtio-sdhci.h
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ *  VirtIO SD/MMC driver
+ *
+ *  Author: Mikhail Krasheninnikov <krashmisha@gmail.com>
+ */
+
+#ifndef _VIRTIO_MMC_H
+#define _VIRTIO_MMC_H
+
+#include <linux/virtio.h>
+#include <linux/virtio_ids.h>
+
+static int virtio_sdhci_probe(struct virtio_device *vdev);
+
+static void virtio_sdhci_remove(struct virtio_device *vdev);
+
+static const struct virtio_device_id id_table[] = {
+	{ VIRTIO_ID_SDHCI, VIRTIO_DEV_ANY_ID },
+	{ 0 },
+};
+
+static struct virtio_driver virtio_sdhci_driver = {
+	.driver = {
+		.name	= KBUILD_MODNAME,
+		.owner	= THIS_MODULE,
+	},
+	.id_table	= id_table,
+	.probe		= virtio_sdhci_probe,
+	.remove		= virtio_sdhci_remove,
+};
+
+module_virtio_driver(virtio_sdhci_driver);
+MODULE_DEVICE_TABLE(virtio, id_table);
+
+MODULE_AUTHOR("Mikhail Krasheninnikov");
+MODULE_DESCRIPTION("VirtIO SD/MMC driver");
+MODULE_LICENSE("GPL");
+
+#endif
diff --git a/include/uapi/linux/virtio-sdhci.h b/include/uapi/linux/virtio-sdhci.h
new file mode 100644
index 000000000000..751ed215bc61
--- /dev/null
+++ b/include/uapi/linux/virtio-sdhci.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later
+ *
+ *  VirtIO SD/MMC driver
+ *
+ *  Author: Mikhail Krasheninnikov <krashmisha@gmail.com>
+ */
+#ifndef _LINUX_VIRTIO_MMC_H
+#define _LINUX_VIRTIO_MMC_H
+#include <linux/types.h>
+
+struct mmc_req {
+	__le32 opcode;
+	__le32 arg;
+};
+
+struct virtio_mmc_request {
+	u8 flags;
+
+#define VIRTIO_MMC_REQUEST_DATA BIT(1)
+#define VIRTIO_MMC_REQUEST_WRITE BIT(2)
+#define VIRTIO_MMC_REQUEST_STOP BIT(3)
+#define VIRTIO_MMC_REQUEST_SBC BIT(4)
+
+	struct mmc_req request;
+
+	u8 buf[4096];
+	__le32 buf_len;
+
+	struct mmc_req stop_req;
+	struct mmc_req sbc_req;
+};
+
+struct virtio_mmc_response {
+	__le32 cmd_resp[4];
+	int cmd_resp_len;
+	u8 buf[4096];
+};
+
+#endif /* _LINUX_VIRTIO_MMC_H */
diff --git a/include/uapi/linux/virtio_ids.h b/include/uapi/linux/virtio_ids.h
index 7aa2eb766205..6de8d432db7f 100644
--- a/include/uapi/linux/virtio_ids.h
+++ b/include/uapi/linux/virtio_ids.h
@@ -68,6 +68,7 @@
 #define VIRTIO_ID_AUDIO_POLICY		39 /* virtio audio policy */
 #define VIRTIO_ID_BT			40 /* virtio bluetooth */
 #define VIRTIO_ID_GPIO			41 /* virtio gpio */
+#define VIRTIO_ID_SDHCI         42 /* virtio mmc */
 
 /*
  * Virtio Transitional IDs
-- 
2.34.1

.

From: Zenghui Yu <zenghui.yu@linux.dev>
To: linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Cc: alexs@kernel.org,
	siyanteng@loongson.cn,
	corbet@lwn.net,
	Zenghui Yu <zenghui.yu@linux.dev>
Subject: [PATCH] docs/zh_CN/virt: Update the translation of guest-halt-polling.rst
Date: Mon,  8 Jul 2024 00:14:44 +0800
Message-Id: <20240707161444.98715-1-zenghui.yu@linux.dev>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270179
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Update to commit 1954d51592b5 ("Documentation: virt: correct location of
haltpoll module params") to fix the obvious mistake.

Signed-off-by: Zenghui Yu <zenghui.yu@linux.dev>
---
 Documentation/translations/zh_CN/virt/guest-halt-polling.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Documentation/translations/zh_CN/virt/guest-halt-polling.rst b/Documentation/translations/zh_CN/virt/guest-halt-polling.rst
index b798d1cf0b48..463d1d829062 100644
--- a/Documentation/translations/zh_CN/virt/guest-halt-polling.rst
+++ b/Documentation/translations/zh_CN/virt/guest-halt-polling.rst
@@ -76,7 +76,7 @@ guest_halt_poll_ns将保持高位）。
 
 默认值: Y
 
-模块参数可以从Debugfs文件中设置，在::
+模块参数可以从sysfs文件中设置，在::
 
 	/sys/module/haltpoll/parameters/
 
-- 
2.34.1

.

From: Pavel Begunkov <asml.silence@gmail.com>
To: io-uring@vger.kernel.org
Cc: Jens Axboe <axboe@kernel.dk>,
	asml.silence@gmail.com,
	Oleg Nesterov <oleg@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Christian Brauner <brauner@kernel.org>,
	Tycho Andersen <tandersen@netflix.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-kernel@vger.kernel.org
Subject: [PATCH 0/2] fix task_work interation with freezing
Date: Sun,  7 Jul 2024 17:32:09 +0100
Message-ID: <cover.1720368770.git.asml.silence@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270182
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.io-uring
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

It's reported [1] that a task_work queued at a wrong time can prevent
freezing and make the tasks to spin in get_signal() taking 100%
of CPU. Patch 1 is a preparation. Patch 2 addresses the issue.

[1] https://github.com/systemd/systemd/issues/33626

Pavel Begunkov (2):
  io_uring/io-wq: limit retrying worker initialisation
  signal: rerun task_work while freezing

 io_uring/io-wq.c | 10 +++++++---
 kernel/signal.c  |  4 ++++
 2 files changed, 11 insertions(+), 3 deletions(-)

-- 
2.44.0

.

Date: Mon, 8 Jul 2024 01:05:03 +0800
From: kernel test robot <lkp@intel.com>
To: Suren Baghdasaryan <surenb@google.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Linux Memory Management List <linux-mm@kvack.org>,
	Kees Cook <keescook@chromium.org>
Subject: ERROR: modpost: "mem_alloc_profiling_key"
 [arch/powerpc/kvm/kvm-hv.ko] undefined!
Message-ID: <202407080044.DWMC9N9I-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270192 org.kvack.linux-mm:202839
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-kbuild-all,org.kvack.linux-mm
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c6653f49e4fd3b0d52c12a1fc814d6c5b234ea15
commit: d224eb0287fbd84f4f13eca042c7f08f87138f3b codetag: debug: mark codetags for reserved pages as empty
date:   2 months ago
config: powerpc64-randconfig-r112-20240707 (https://download.01.org/0day-ci/archive/20240708/202407080044.DWMC9N9I-lkp@intel.com/config)
compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a)
reproduce: (https://download.01.org/0day-ci/archive/20240708/202407080044.DWMC9N9I-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407080044.DWMC9N9I-lkp@intel.com/

All errors (new ones prefixed by >>, old ones prefixed by <<):

WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/tty/serial/8250/serial_cs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/tty/serial/serial_mctrl_gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/tty/n_gsm.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/iommu/iova.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/panel/panel-auo-a030jtn01.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/panel/panel-innolux-ej030na.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/panel/panel-novatek-nt39016.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/panel/panel-orisetech-ota5601a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/bridge/lontium-lt9611.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/bridge/sii9234.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/tiny/bochs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/drm_panel_orientation_quirks.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/gpu/drm/drm_mipi_dbi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-slimbus.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/base/regmap/regmap-sccb.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/arizona.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/pcf50633-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mfd/rt4831.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/dax/dax.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/core/cxl_core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/cxl_pci.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/cxl_mem.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cxl/cxl_port.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/scsi/scsi_common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/scsi/advansys.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/scsi/BusLogic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/scsi/elx/efct.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/scsi/atp870u.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spi/spi-bitbang.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/spi/spi-fsl-lib.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/auxdisplay/charlcd.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/auxdisplay/hd44780_common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/auxdisplay/line-display.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pcmcia/yenta_socket.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/pcmcia/i82092.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/input/vivaldi-fmap.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/i2c/busses/i2c-ccgx-ucsi.o
WARNING: modpost: drivers/media/i2c/et8ek8/et8ek8: section mismatch in reference: et8ek8_i2c_driver+0x10 (section: .data) -> et8ek8_remove (section: .exit.text)
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/media/tuners/tda9887.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/media/platform/marvell/mcam-core.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/media/v4l2-core/v4l2-async.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/media/v4l2-core/v4l2-fwnode.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hwmon/corsair-cpro.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/cpufreq/cpufreq-dt-platdev.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/leds/flash/leds-rt4505.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/firmware/google/coreboot_table.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/firmware/google/framebuffer-coreboot.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/firmware/google/cbmem.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/firmware/google/vpd-sysfs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/crypto/atmel-sha204a.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-a4tech.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-aureal.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-cherry.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-cypress.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-dr.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-emsff.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-elecom.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-vivaldi-common.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-kensington.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-keytouch.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-kye.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-lcpower.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-magicmouse.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-mf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-monterey.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-ortek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-pl.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-petalynx.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-primax.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-redragon.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-saitek.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sjoy.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-sunplus.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-tivo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-twinhan.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-xinmo.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/hid/hid-viewsonic.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/staging/greybus/gb-hid.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/staging/greybus/gb-power-supply.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/staging/greybus/gb-audio-manager.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/staging/greybus/gb-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/staging/greybus/gb-spi.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/staging/greybus/gb-spilib.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/rpmsg/rpmsg_char.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_performance.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_powersave.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/devfreq/governor_userspace.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/nvmem/nvmem_u-boot-env.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/fsi/fsi-master-gpio.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/vdpa/vdpa.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/vdpa/ifcvf/ifcvf.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mtd/chips/cfi_util.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mtd/chips/cfi_cmdset_0020.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/mtd/maps/map_funcs.o
WARNING: modpost: missing MODULE_DESCRIPTION() in drivers/vhost/vringh.o
WARNING: modpost: missing MODULE_DESCRIPTION() in sound/core/snd-pcm-dmaengine.o
WARNING: modpost: missing MODULE_DESCRIPTION() in sound/soc/codecs/snd-soc-sigmadsp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in sound/soc/codecs/snd-soc-wm-adsp.o
WARNING: modpost: missing MODULE_DESCRIPTION() in sound/soc/xilinx/snd-soc-xlnx-i2s.o
>> ERROR: modpost: "mem_alloc_profiling_key" [arch/powerpc/kvm/kvm-hv.ko] undefined!
>> ERROR: modpost: "page_ext_get" [arch/powerpc/kvm/kvm-hv.ko] undefined!
>> ERROR: modpost: "page_ext_put" [arch/powerpc/kvm/kvm-hv.ko] undefined!

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

Date: Mon, 08 Jul 2024 01:08:27 +0800
From: kernel test robot <lkp@intel.com>
To: "Paul E. McKenney" <paulmck@kernel.org>
Cc: linux-kernel@vger.kernel.org
Subject: [paulmck-rcu:non-rcu/next] BUILD SUCCESS
 8122d6e11bd8d3536800b3ad0ea1fec2e2bb9edb
Message-ID: <202407080125.VYLESOG8-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270193
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git non-rcu/next
branch HEAD: 8122d6e11bd8d3536800b3ad0ea1fec2e2bb9edb  Merge branches 'cmpxchg.2024.07.04a', 'kcsan.2024.06.06a', 'lkmm.2024.06.06a', 'nolibc.2024.06.30a' and 'torture.2024.05.30b' into HEAD

elapsed time: 720m

configs tested: 259
configs skipped: 4

The following configs have been built successfully.
More configs may be tested in the coming days.

tested configs:
alpha                             allnoconfig   gcc-13.2.0
alpha                            allyesconfig   gcc-13.2.0
alpha                               defconfig   gcc-13.2.0
arc                              allmodconfig   gcc-13.2.0
arc                               allnoconfig   gcc-13.2.0
arc                              allyesconfig   gcc-13.2.0
arc                          axs101_defconfig   gcc-13.2.0
arc                          axs103_defconfig   gcc-13.2.0
arc                                 defconfig   gcc-13.2.0
arc                     haps_hs_smp_defconfig   gcc-13.2.0
arc                   randconfig-001-20240707   gcc-13.2.0
arc                   randconfig-002-20240707   gcc-13.2.0
arm                              allmodconfig   gcc-13.2.0
arm                               allnoconfig   clang-19
arm                               allnoconfig   gcc-13.2.0
arm                              allyesconfig   gcc-13.2.0
arm                        clps711x_defconfig   clang-19
arm                                 defconfig   clang-14
arm                                 defconfig   gcc-13.2.0
arm                          exynos_defconfig   gcc-13.2.0
arm                          gemini_defconfig   clang-19
arm                            hisi_defconfig   gcc-13.2.0
arm                       netwinder_defconfig   gcc-13.2.0
arm                         nhk8815_defconfig   clang-19
arm                       omap2plus_defconfig   gcc-13.2.0
arm                   randconfig-001-20240707   gcc-13.2.0
arm                   randconfig-002-20240707   clang-19
arm                   randconfig-002-20240707   gcc-13.2.0
arm                   randconfig-003-20240707   clang-19
arm                   randconfig-003-20240707   gcc-13.2.0
arm                   randconfig-004-20240707   clang-19
arm                   randconfig-004-20240707   gcc-13.2.0
arm                        realview_defconfig   gcc-13.2.0
arm64                            alldefconfig   gcc-13.2.0
arm64                            allmodconfig   clang-19
arm64                            allmodconfig   gcc-13.2.0
arm64                             allnoconfig   gcc-13.2.0
arm64                               defconfig   gcc-13.2.0
arm64                 randconfig-001-20240707   clang-19
arm64                 randconfig-001-20240707   gcc-13.2.0
arm64                 randconfig-002-20240707   gcc-13.2.0
arm64                 randconfig-003-20240707   gcc-13.2.0
arm64                 randconfig-004-20240707   clang-19
arm64                 randconfig-004-20240707   gcc-13.2.0
csky                              allnoconfig   gcc-13.2.0
csky                                defconfig   gcc-13.2.0
csky                  randconfig-001-20240707   gcc-13.2.0
csky                  randconfig-002-20240707   gcc-13.2.0
hexagon                          allmodconfig   clang-19
hexagon                           allnoconfig   clang-19
hexagon                          allyesconfig   clang-19
hexagon                             defconfig   clang-19
hexagon               randconfig-001-20240707   clang-14
hexagon               randconfig-002-20240707   clang-19
i386                             allmodconfig   clang-18
i386                             allmodconfig   gcc-13
i386                              allnoconfig   clang-18
i386                              allnoconfig   gcc-13
i386                             allyesconfig   clang-18
i386                             allyesconfig   gcc-13
i386         buildonly-randconfig-001-20240707   gcc-13
i386         buildonly-randconfig-002-20240707   clang-18
i386         buildonly-randconfig-002-20240707   gcc-13
i386         buildonly-randconfig-003-20240707   clang-18
i386         buildonly-randconfig-003-20240707   gcc-13
i386         buildonly-randconfig-004-20240707   gcc-13
i386         buildonly-randconfig-005-20240707   gcc-11
i386         buildonly-randconfig-005-20240707   gcc-13
i386         buildonly-randconfig-006-20240707   gcc-13
i386         buildonly-randconfig-006-20240707   gcc-9
i386                                defconfig   clang-18
i386                  randconfig-001-20240707   gcc-13
i386                  randconfig-001-20240707   gcc-7
i386                  randconfig-002-20240707   clang-18
i386                  randconfig-002-20240707   gcc-13
i386                  randconfig-003-20240707   clang-18
i386                  randconfig-003-20240707   gcc-13
i386                  randconfig-004-20240707   clang-18
i386                  randconfig-004-20240707   gcc-13
i386                  randconfig-005-20240707   clang-18
i386                  randconfig-005-20240707   gcc-13
i386                  randconfig-006-20240707   clang-18
i386                  randconfig-006-20240707   gcc-13
i386                  randconfig-011-20240707   gcc-13
i386                  randconfig-012-20240707   gcc-13
i386                  randconfig-012-20240707   gcc-8
i386                  randconfig-013-20240707   gcc-13
i386                  randconfig-014-20240707   clang-18
i386                  randconfig-014-20240707   gcc-13
i386                  randconfig-015-20240707   clang-18
i386                  randconfig-015-20240707   gcc-13
i386                  randconfig-016-20240707   gcc-13
loongarch                        allmodconfig   gcc-13.2.0
loongarch                         allnoconfig   gcc-13.2.0
loongarch                           defconfig   gcc-13.2.0
loongarch             randconfig-001-20240707   gcc-13.2.0
loongarch             randconfig-002-20240707   gcc-13.2.0
m68k                             alldefconfig   gcc-13.2.0
m68k                             allmodconfig   gcc-13.2.0
m68k                              allnoconfig   gcc-13.2.0
m68k                             allyesconfig   gcc-13.2.0
m68k                                defconfig   gcc-13.2.0
m68k                       m5275evb_defconfig   gcc-13.2.0
microblaze                       allmodconfig   gcc-13.2.0
microblaze                        allnoconfig   gcc-13.2.0
microblaze                       allyesconfig   gcc-13.2.0
microblaze                          defconfig   gcc-13.2.0
mips                              allnoconfig   gcc-13.2.0
mips                          ath25_defconfig   gcc-13.2.0
mips                     cu1830-neo_defconfig   gcc-13.2.0
mips                            gpr_defconfig   gcc-13.2.0
mips                           ip27_defconfig   gcc-13.2.0
mips                           ip28_defconfig   gcc-13.2.0
mips                       lemote2f_defconfig   gcc-13.2.0
mips                      loongson3_defconfig   gcc-13.2.0
mips                  maltasmvp_eva_defconfig   gcc-13.2.0
mips                        vocore2_defconfig   gcc-13.2.0
nios2                             allnoconfig   gcc-13.2.0
nios2                               defconfig   gcc-13.2.0
nios2                 randconfig-001-20240707   gcc-13.2.0
nios2                 randconfig-002-20240707   gcc-13.2.0
openrisc                         alldefconfig   gcc-13.2.0
openrisc                          allnoconfig   gcc-13.2.0
openrisc                         allyesconfig   gcc-13.2.0
openrisc                            defconfig   gcc-13.2.0
parisc                           allmodconfig   gcc-13.2.0
parisc                            allnoconfig   gcc-13.2.0
parisc                           allyesconfig   gcc-13.2.0
parisc                              defconfig   gcc-13.2.0
parisc                generic-64bit_defconfig   gcc-13.2.0
parisc                randconfig-001-20240707   gcc-13.2.0
parisc                randconfig-002-20240707   gcc-13.2.0
parisc64                            defconfig   gcc-13.2.0
powerpc                          allmodconfig   gcc-13.2.0
powerpc                           allnoconfig   gcc-13.2.0
powerpc                          allyesconfig   gcc-13.2.0
powerpc                  iss476-smp_defconfig   gcc-13.2.0
powerpc                      katmai_defconfig   gcc-13.2.0
powerpc                     ksi8560_defconfig   gcc-13.2.0
powerpc                   microwatt_defconfig   gcc-13.2.0
powerpc                 mpc8315_rdb_defconfig   gcc-13.2.0
powerpc                     mpc83xx_defconfig   clang-19
powerpc                  mpc866_ads_defconfig   gcc-13.2.0
powerpc                      ppc6xx_defconfig   gcc-13.2.0
powerpc                     rainier_defconfig   gcc-13.2.0
powerpc               randconfig-001-20240707   clang-19
powerpc               randconfig-001-20240707   gcc-13.2.0
powerpc               randconfig-002-20240707   gcc-13.2.0
powerpc               randconfig-003-20240707   clang-19
powerpc               randconfig-003-20240707   gcc-13.2.0
powerpc                     taishan_defconfig   clang-19
powerpc                     tqm8541_defconfig   gcc-13.2.0
powerpc64             randconfig-001-20240707   clang-17
powerpc64             randconfig-001-20240707   gcc-13.2.0
powerpc64             randconfig-002-20240707   clang-19
powerpc64             randconfig-002-20240707   gcc-13.2.0
powerpc64             randconfig-003-20240707   clang-19
powerpc64             randconfig-003-20240707   gcc-13.2.0
riscv                            allmodconfig   gcc-13.2.0
riscv                             allnoconfig   gcc-13.2.0
riscv                            allyesconfig   gcc-13.2.0
riscv                               defconfig   clang-19
riscv                               defconfig   gcc-13.2.0
riscv                 randconfig-001-20240707   clang-15
riscv                 randconfig-001-20240707   gcc-13.2.0
riscv                 randconfig-002-20240707   clang-19
riscv                 randconfig-002-20240707   gcc-13.2.0
s390                             allmodconfig   clang-19
s390                              allnoconfig   clang-19
s390                             allyesconfig   clang-19
s390                             allyesconfig   gcc-13.2.0
s390                                defconfig   clang-19
s390                                defconfig   gcc-13.2.0
s390                  randconfig-001-20240707   gcc-13.2.0
s390                  randconfig-002-20240707   clang-19
s390                  randconfig-002-20240707   gcc-13.2.0
sh                               allmodconfig   gcc-13.2.0
sh                                allnoconfig   gcc-13.2.0
sh                               allyesconfig   gcc-13.2.0
sh                                  defconfig   gcc-13.2.0
sh                        edosk7705_defconfig   gcc-13.2.0
sh                             espt_defconfig   gcc-13.2.0
sh                    randconfig-001-20240707   gcc-13.2.0
sh                    randconfig-002-20240707   gcc-13.2.0
sh                           se7619_defconfig   gcc-13.2.0
sh                           se7705_defconfig   gcc-13.2.0
sh                        sh7757lcr_defconfig   gcc-13.2.0
sh                        sh7785lcr_defconfig   gcc-13.2.0
sh                              ul2_defconfig   gcc-13.2.0
sparc                            allmodconfig   gcc-13.2.0
sparc64                             defconfig   gcc-13.2.0
sparc64               randconfig-001-20240707   gcc-13.2.0
sparc64               randconfig-002-20240707   gcc-13.2.0
um                               allmodconfig   clang-19
um                               allmodconfig   gcc-13.2.0
um                                allnoconfig   clang-17
um                               allyesconfig   gcc-13
um                               allyesconfig   gcc-13.2.0
um                                  defconfig   clang-19
um                                  defconfig   gcc-13.2.0
um                             i386_defconfig   gcc-13
um                             i386_defconfig   gcc-13.2.0
um                    randconfig-001-20240707   clang-19
um                    randconfig-001-20240707   gcc-13.2.0
um                    randconfig-002-20240707   gcc-11
um                    randconfig-002-20240707   gcc-13.2.0
um                           x86_64_defconfig   clang-15
um                           x86_64_defconfig   gcc-13.2.0
x86_64                            allnoconfig   clang-18
x86_64                           allyesconfig   clang-18
x86_64       buildonly-randconfig-001-20240707   gcc-13
x86_64       buildonly-randconfig-002-20240707   gcc-13
x86_64       buildonly-randconfig-003-20240707   clang-18
x86_64       buildonly-randconfig-003-20240707   gcc-13
x86_64       buildonly-randconfig-004-20240707   gcc-13
x86_64       buildonly-randconfig-005-20240707   clang-18
x86_64       buildonly-randconfig-005-20240707   gcc-13
x86_64       buildonly-randconfig-006-20240707   clang-18
x86_64       buildonly-randconfig-006-20240707   gcc-13
x86_64                              defconfig   clang-18
x86_64                              defconfig   gcc-13
x86_64                randconfig-001-20240707   clang-18
x86_64                randconfig-001-20240707   gcc-13
x86_64                randconfig-002-20240707   clang-18
x86_64                randconfig-002-20240707   gcc-13
x86_64                randconfig-003-20240707   clang-18
x86_64                randconfig-003-20240707   gcc-13
x86_64                randconfig-004-20240707   clang-18
x86_64                randconfig-004-20240707   gcc-13
x86_64                randconfig-005-20240707   gcc-13
x86_64                randconfig-006-20240707   gcc-12
x86_64                randconfig-006-20240707   gcc-13
x86_64                randconfig-011-20240707   clang-18
x86_64                randconfig-011-20240707   gcc-13
x86_64                randconfig-012-20240707   gcc-13
x86_64                randconfig-012-20240707   gcc-7
x86_64                randconfig-013-20240707   clang-18
x86_64                randconfig-013-20240707   gcc-13
x86_64                randconfig-014-20240707   gcc-13
x86_64                randconfig-015-20240707   gcc-13
x86_64                randconfig-015-20240707   gcc-7
x86_64                randconfig-016-20240707   clang-18
x86_64                randconfig-016-20240707   gcc-13
x86_64                randconfig-071-20240707   gcc-13
x86_64                randconfig-072-20240707   gcc-13
x86_64                randconfig-072-20240707   gcc-7
x86_64                randconfig-073-20240707   clang-18
x86_64                randconfig-073-20240707   gcc-13
x86_64                randconfig-074-20240707   clang-18
x86_64                randconfig-074-20240707   gcc-13
x86_64                randconfig-075-20240707   clang-18
x86_64                randconfig-075-20240707   gcc-13
x86_64                randconfig-076-20240707   gcc-13
x86_64                          rhel-8.3-rust   clang-18
xtensa                            allnoconfig   gcc-13.2.0
xtensa                  cadence_csp_defconfig   gcc-13.2.0
xtensa                randconfig-001-20240707   gcc-13.2.0
xtensa                randconfig-002-20240707   gcc-13.2.0
xtensa                    smp_lx200_defconfig   gcc-13.2.0

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Nicolas Pitre <nico@fluxnic.net>
To: Arnd Bergmann <arnd@arndb.de>,
	Russell King <linux@armlinux.org.uk>
Cc: Nicolas Pitre <npitre@baylibre.com>,
	linux-arch@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/4] do_div() with constant divisor simplification
Date: Sun,  7 Jul 2024 13:17:32 -0400
Message-ID: <20240707171919.1951895-1-nico@fluxnic.net>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270197
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-arch
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

While working on mul_u64_u64_div_u64() improvements I realized that there
is a better way to perform a 64x64->128 bits multiplication with overflow
handling. This is not as lean as v1 of the series but still much better
than the existing code IMHO.

Changes from v1:

- Formalize condition for when overflow handling can be skipped.
- Make this condition apply only if it can be determined at compile time
  (beware of the compiler not always inling code).
- Keep the ARM assembly but apply the above changes to it as well.
- Simplify generic C code for __arch_xprod64() further.
- Force __always_inline when optimizing for performance.
- Augment test_div64.c with important edge cases.

Link to v1: https://lore.kernel.org/lkml/20240705022334.1378363-1-nico@fl=
uxnic.net/

The diffstat is:

 arch/arm/include/asm/div64.h |  13 +++-
 include/asm-generic/div64.h  | 121 ++++++++++++-----------------------
 lib/math/test_div64.c        |  85 +++++++++++++++++++++++-
 3 files changed, 134 insertions(+), 85 deletions(-)
.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Date: Sun, 07 Jul 2024 10:25:17 -0700
Message-ID: <00000000000087b507061cab9490@google.com>
Subject: [syzbot] [pm?] [usb?] possible deadlock in dpm_for_each_dev
From: syzbot <syzbot+2a03726f1d4eff48b278@syzkaller.appspotmail.com>
To: len.brown@intel.com, linux-kernel@vger.kernel.org, 
	linux-pm@vger.kernel.org, linux-usb@vger.kernel.org, pavel@ucw.cz, 
	rafael@kernel.org, syzkaller-bugs@googlegroups.com
Content-Type: text/plain; charset="UTF-8"
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270200
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-pm,org.kernel.vger.linux-usb
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hello,

syzbot found the following issue on:

HEAD commit:    e9d22f7a6655 Merge tag 'linux_kselftest-fixes-6.10-rc7' of..
git tree:       upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=13fff269980000
kernel config:  https://syzkaller.appspot.com/x/.config?x=864caee5f78cab51
dashboard link: https://syzkaller.appspot.com/bug?extid=2a03726f1d4eff48b278
compiler:       Debian clang version 15.0.6, GNU ld (GNU Binutils for Debian) 2.40
syz repro:      https://syzkaller.appspot.com/x/repro.syz?x=17013a35980000
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=16d7af25980000

Downloadable assets:
disk image: https://storage.googleapis.com/syzbot-assets/c3dd72a93425/disk-e9d22f7a.raw.xz
vmlinux: https://storage.googleapis.com/syzbot-assets/9d79986da9dc/vmlinux-e9d22f7a.xz
kernel image: https://storage.googleapis.com/syzbot-assets/0df271bec574/bzImage-e9d22f7a.xz

IMPORTANT: if you fix the issue, please add the following tag to the commit:
Reported-by: syzbot+2a03726f1d4eff48b278@syzkaller.appspotmail.com

R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb90b6ce6c0
R13: 00007fb90b60f210 R14: 0000000000000001 R15: 616e732f7665642f
 </TASK>
(NULL device *): loading /lib/firmware/dvb-usb-dib0700-1.20.fw failed with error -12
(NULL device *): Direct firmware load for dvb-usb-dib0700-1.20.fw failed with error -12
(NULL device *): Falling back to sysfs fallback for: dvb-usb-dib0700-1.20.fw
======================================================
WARNING: possible circular locking dependency detected
6.10.0-rc6-syzkaller-00061-ge9d22f7a6655 #0 Not tainted
------------------------------------------------------
syz-executor143/5112 is trying to acquire lock:
ffffffff8e1dd7b0 (umhelper_sem){++++}-{3:3}, at: usermodehelper_read_trylock+0x140/0x300 kernel/umh.c:215

but task is already holding lock:
ffffffff8ec6ea08 (dpm_list_mtx){+.+.}-{3:3}, at: device_pm_lock drivers/base/power/main.c:113 [inline]
ffffffff8ec6ea08 (dpm_list_mtx){+.+.}-{3:3}, at: dpm_for_each_dev+0x2b/0xc0 drivers/base/power/main.c:1961

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (dpm_list_mtx){+.+.}-{3:3}:
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
       __mutex_lock_common kernel/locking/mutex.c:608 [inline]
       __mutex_lock+0x136/0xd70 kernel/locking/mutex.c:752
       device_pm_add+0x78/0x320 drivers/base/power/main.c:137
       device_add+0x5e8/0xbf0 drivers/base/core.c:3642
       fw_load_sysfs_fallback drivers/base/firmware_loader/fallback.c:86 [inline]
       fw_load_from_user_helper drivers/base/firmware_loader/fallback.c:162 [inline]
       firmware_fallback_sysfs+0x307/0x9e0 drivers/base/firmware_loader/fallback.c:238
       _request_firmware+0xcf5/0x12b0 drivers/base/firmware_loader/main.c:914
       request_firmware_work_func+0x12a/0x280 drivers/base/firmware_loader/main.c:1165
       process_one_work kernel/workqueue.c:3248 [inline]
       process_scheduled_works+0xa2c/0x1830 kernel/workqueue.c:3329
       worker_thread+0x86d/0xd50 kernel/workqueue.c:3409
       kthread+0x2f0/0x390 kernel/kthread.c:389
       ret_from_fork+0x4b/0x80 arch/x86/kernel/process.c:147
       ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:244

-> #0 (umhelper_sem){++++}-{3:3}:
       check_prev_add kernel/locking/lockdep.c:3134 [inline]
       check_prevs_add kernel/locking/lockdep.c:3253 [inline]
       validate_chain+0x18e0/0x5900 kernel/locking/lockdep.c:3869
       __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137
       lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
       down_read+0xb1/0xa40 kernel/locking/rwsem.c:1526
       usermodehelper_read_trylock+0x140/0x300 kernel/umh.c:215
       fw_load_from_user_helper drivers/base/firmware_loader/fallback.c:147 [inline]
       firmware_fallback_sysfs+0x184/0x9e0 drivers/base/firmware_loader/fallback.c:238
       _request_firmware+0xcf5/0x12b0 drivers/base/firmware_loader/main.c:914
       request_firmware drivers/base/firmware_loader/main.c:963 [inline]
       cache_firmware drivers/base/firmware_loader/main.c:1265 [inline]
       __async_dev_cache_fw_image+0xe7/0x320 drivers/base/firmware_loader/main.c:1379
       async_schedule_node_domain+0xdc/0x110 kernel/async.c:221
       async_schedule_domain include/linux/async.h:72 [inline]
       dev_cache_fw_image+0x36d/0x3e0 drivers/base/firmware_loader/main.c:1435
       dpm_for_each_dev+0x58/0xc0 drivers/base/power/main.c:1963
       device_cache_fw_images drivers/base/firmware_loader/main.c:1485 [inline]
       fw_pm_notify+0x24a/0x2f0 drivers/base/firmware_loader/main.c:1536
       notifier_call_chain+0x19f/0x3e0 kernel/notifier.c:93
       notifier_call_chain_robust kernel/notifier.c:128 [inline]
       blocking_notifier_call_chain_robust+0xe8/0x1e0 kernel/notifier.c:353
       pm_notifier_call_chain_robust+0x2c/0x60 kernel/power/main.c:102
       snapshot_open+0x1a1/0x280 kernel/power/user.c:77
       misc_open+0x313/0x390 drivers/char/misc.c:165
       chrdev_open+0x5b0/0x630 fs/char_dev.c:414
       do_dentry_open+0x970/0x1450 fs/open.c:955
       vfs_open+0x3e/0x330 fs/open.c:1086
       do_open fs/namei.c:3654 [inline]
       path_openat+0x2c01/0x35f0 fs/namei.c:3813
       do_filp_open+0x235/0x490 fs/namei.c:3840
       do_sys_openat2+0x13e/0x1d0 fs/open.c:1413
       do_sys_open fs/open.c:1428 [inline]
       __do_sys_openat fs/open.c:1444 [inline]
       __se_sys_openat fs/open.c:1439 [inline]
       __x64_sys_openat+0x247/0x2a0 fs/open.c:1439
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(dpm_list_mtx);
                               lock(umhelper_sem);
                               lock(dpm_list_mtx);
  rlock(umhelper_sem);

 *** DEADLOCK ***

5 locks held by syz-executor143/5112:
 #0: ffffffff8eb2f6e8 (misc_mtx){+.+.}-{3:3}, at: misc_open+0x5c/0x390 drivers/char/misc.c:129
 #1: ffffffff8e1e7368 (system_transition_mutex){+.+.}-{3:3}, at: lock_system_sleep+0x60/0xa0 kernel/power/main.c:56
 #2: ffffffff8e2077f0 ((pm_chain_head).rwsem){++++}-{3:3}, at: blocking_notifier_call_chain_robust+0xac/0x1e0 kernel/notifier.c:352
 #3: ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: device_cache_fw_images drivers/base/firmware_loader/main.c:1483 [inline]
 #3: ffffffff8ec73968 (fw_lock){+.+.}-{3:3}, at: fw_pm_notify+0x232/0x2f0 drivers/base/firmware_loader/main.c:1536
 #4: ffffffff8ec6ea08 (dpm_list_mtx){+.+.}-{3:3}, at: device_pm_lock drivers/base/power/main.c:113 [inline]
 #4: ffffffff8ec6ea08 (dpm_list_mtx){+.+.}-{3:3}, at: dpm_for_each_dev+0x2b/0xc0 drivers/base/power/main.c:1961

stack backtrace:
CPU: 0 PID: 5112 Comm: syz-executor143 Not tainted 6.10.0-rc6-syzkaller-00061-ge9d22f7a6655 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 06/07/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0x241/0x360 lib/dump_stack.c:114
 check_noncircular+0x36a/0x4a0 kernel/locking/lockdep.c:2187
 check_prev_add kernel/locking/lockdep.c:3134 [inline]
 check_prevs_add kernel/locking/lockdep.c:3253 [inline]
 validate_chain+0x18e0/0x5900 kernel/locking/lockdep.c:3869
 __lock_acquire+0x1346/0x1fd0 kernel/locking/lockdep.c:5137
 lock_acquire+0x1ed/0x550 kernel/locking/lockdep.c:5754
 down_read+0xb1/0xa40 kernel/locking/rwsem.c:1526
 usermodehelper_read_trylock+0x140/0x300 kernel/umh.c:215
 fw_load_from_user_helper drivers/base/firmware_loader/fallback.c:147 [inline]
 firmware_fallback_sysfs+0x184/0x9e0 drivers/base/firmware_loader/fallback.c:238
 _request_firmware+0xcf5/0x12b0 drivers/base/firmware_loader/main.c:914
 request_firmware drivers/base/firmware_loader/main.c:963 [inline]
 cache_firmware drivers/base/firmware_loader/main.c:1265 [inline]
 __async_dev_cache_fw_image+0xe7/0x320 drivers/base/firmware_loader/main.c:1379
 async_schedule_node_domain+0xdc/0x110 kernel/async.c:221
 async_schedule_domain include/linux/async.h:72 [inline]
 dev_cache_fw_image+0x36d/0x3e0 drivers/base/firmware_loader/main.c:1435
 dpm_for_each_dev+0x58/0xc0 drivers/base/power/main.c:1963
 device_cache_fw_images drivers/base/firmware_loader/main.c:1485 [inline]
 fw_pm_notify+0x24a/0x2f0 drivers/base/firmware_loader/main.c:1536
 notifier_call_chain+0x19f/0x3e0 kernel/notifier.c:93
 notifier_call_chain_robust kernel/notifier.c:128 [inline]
 blocking_notifier_call_chain_robust+0xe8/0x1e0 kernel/notifier.c:353
 pm_notifier_call_chain_robust+0x2c/0x60 kernel/power/main.c:102
 snapshot_open+0x1a1/0x280 kernel/power/user.c:77
 misc_open+0x313/0x390 drivers/char/misc.c:165
 chrdev_open+0x5b0/0x630 fs/char_dev.c:414
 do_dentry_open+0x970/0x1450 fs/open.c:955
 vfs_open+0x3e/0x330 fs/open.c:1086
 do_open fs/namei.c:3654 [inline]
 path_openat+0x2c01/0x35f0 fs/namei.c:3813
 do_filp_open+0x235/0x490 fs/namei.c:3840
 do_sys_openat2+0x13e/0x1d0 fs/open.c:1413
 do_sys_open fs/open.c:1428 [inline]
 __do_sys_openat fs/open.c:1444 [inline]
 __se_sys_openat fs/open.c:1439 [inline]
 __x64_sys_openat+0x247/0x2a0 fs/open.c:1439
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7fb90b681389
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 c1 1b 00 00 90 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 b0 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fb90b60f208 EFLAGS: 00000246 ORIG_RAX: 0000000000000101
RAX: ffffffffffffffda RBX: 00007fb90b7013f8 RCX: 00007fb90b681389
RDX: 0000000000000000 RSI: 0000000020000080 RDI: ffffffffffffff9c
RBP: 00007fb90b7013f0 R08: 00007fb90b60efa7 R09: 0000000000000038
R10: 0000000000000000 R11: 0000000000000246 R12: 00007fb90b6ce6c0
R13: 00007fb90b60f210 R14: 0000000000000001 R15: 616e732f7665642f
 </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@googlegroups.com.

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
.

From: Stephen Boyd <sboyd@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Michael Turquette <mturquette@baylibre.com>,
	linux-clk@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [GIT PULL] clk fixes for v6.10-rc6
Date: Sun,  7 Jul 2024 10:55:58 -0700
Message-ID: <20240707175558.480229-1-sboyd@kernel.org>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270202
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-clk
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

The following changes since commit 2607133196c35f31892ee199ce7ffa717bea4ad1:

  clk: sifive: Do not register clkdevs for PRCI clocks (2024-05-29 12:31:02 -0700)

are available in the Git repository at:

  https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git tags/clk-fixes-for-linus

for you to fetch changes up to 10f84de27bd05bd2648512975d085dbe0a1e71c3:

  Merge tag 'qcom-clk-fixes-for-6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into clk-fixes (2024-07-02 12:03:15 -0700)

----------------------------------------------------------------
A set of clk fixes for the Qualcomm, Mediatek, and Allwinner drivers:

 - Fix the Qualcomm Stromer Plus PLL set_rate() clk_op to explicitly set
   the alpha enable bit and not set bits that don't exist
 - Mark Qualcomm IPQ9574 crypto clks as voted to avoid stuck clk
   warnings
 - Fix the parent of some PLLs on Qualcomm sm6530 so their rate is
   correct
 - Fix the min/max rate clamping logic in the Allwinner driver that got
   broken in v6.9
 - Limit runtime PM enabling in the Mediatek driver to only
   mt8183-mfgcfg so that system wide resume doesn't break on other
   Mediatek SoCs

----------------------------------------------------------------
Frank Oltmanns (1):
      clk: sunxi-ng: common: Don't call hw_to_ccu_common on hw without common

Gabor Juhos (2):
      clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs
      clk: qcom: apss-ipq-pll: remove 'config_ctl_hi_val' from Stromer pll configs

Luca Weiss (1):
      clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents

Md Sadre Alam (1):
      clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag

Pin-yen Lin (1):
      clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg

Stephen Boyd (2):
      Merge tag 'sunxi-clk-fixes-for-6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into clk-fixes
      Merge tag 'qcom-clk-fixes-for-6.10' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into clk-fixes

 drivers/clk/mediatek/clk-mt8183-mfgcfg.c |  1 +
 drivers/clk/mediatek/clk-mtk.c           | 24 ++++++++++++++----------
 drivers/clk/mediatek/clk-mtk.h           |  2 ++
 drivers/clk/qcom/apss-ipq-pll.c          |  2 --
 drivers/clk/qcom/clk-alpha-pll.c         |  3 +++
 drivers/clk/qcom/gcc-ipq9574.c           | 10 ++++++----
 drivers/clk/qcom/gcc-sm6350.c            | 10 +++++-----
 drivers/clk/sunxi-ng/ccu_common.c        | 18 ++++++++++++------
 8 files changed, 43 insertions(+), 27 deletions(-)

-- 
https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git/
https://git.kernel.org/pub/scm/linux/kernel/git/sboyd/spmi.git
.

From: Carlos Ferreira <carlosmiguelferreira.2003@gmail.com>
To: hdegoede@redhat.com
Cc: platform-driver-x86@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	carlosmiguelferreira.2003@gmail.com
Subject: [PATCH v3 0/1] HP: wmi: added support for 4 zone keyboard rgb
Date: Sun,  7 Jul 2024 18:54:53 +0100
Message-ID: <20240707175613.27529-1-carlosmiguelferreira.2003@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270203
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.platform-driver-x86
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Hi,
As suggested, this driver now uses the multicolor led api.

Please note that for brightness, it takes the brightness files in
each zone and uses them as one as there is no per zone brightness
control, so all the files control the brightness of the entire keyboard.
Also, when the backlight toggle key is pressed it updates the brightness
on all the zones to avoid some edge case problems i ran into
where setting the same color more than once would set the brightness
to the previous value.

Please let me know if this is a good approach.

Carlos Ferreira (1):
  HP: wmi: added support for 4 zone keyboard rgb

 drivers/platform/x86/hp/hp-wmi.c | 248 +++++++++++++++++++++++++++++--
 1 file changed, 239 insertions(+), 9 deletions(-)

-- 
2.45.2

.

From: Madadi Vineeth Reddy <vineethr@linux.ibm.com>
To: Arnaldo Carvalho de Melo <acme@kernel.org>,
        Namhyung Kim <namhyung@kernel.org>, Ian Rogers <irogers@google.com>,
        Athira Rajeev <atrajeev@linux.vnet.ibm.com>,
        Chen Yu <yu.c.chen@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@redhat.com>,
        Mark Rutland <mark.rutland@arm.com>,
        Alexander Shishkin <alexander.shishkin@linux.intel.com>,
        Jiri Olsa <jolsa@kernel.org>, Adrian Hunter <adrian.hunter@intel.com>,
        Kan Liang <kan.liang@linux.intel.com>, acme@redhat.com,
        linux-perf-users <linux-perf-users@vger.kernel.org>,
        LKML <linux-kernel@vger.kernel.org>,
        Madadi Vineeth Reddy <vineethr@linux.ibm.com>
Subject: [PATCH v6 0/3] Introduce --task-name and --fuzzy-name options in perf sched map
Date: Sun,  7 Jul 2024 23:57:13 +0530
Message-ID: <20240707182716.22054-1-vineethr@linux.ibm.com>
Content-Transfer-Encoding: 8bit
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270211
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-perf-users
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This patch-set aims to reduce the amount of output printed on the terminal
when using perf sched map, allowing users to focus only on the tasks of
interest.

This helps in visualizing how a benchmark or a task is spread over
the available CPUs while also knowing which CPUs are idle(.) and which
are not(-). This will be more useful as number of CPUs increase.

Changelog:
=========
Changes in v6:
- Utilize strlist for simplified task matching. (Namhyung Kim)
- Include relevant symbols while printing row for sched-out. (Namhyung Kim)
- Rebase against perf-tools-next commit 608c3b1e612a ("perf install:
  Don't propagate subdir to Documentation submake")
- Link to v5: https://lore.kernel.org/all/20240626091550.46707-1-vineethr@linux.ibm.com/

Changes in v5:
- Split the changes into different commits. (Namhyung Kim)
- Rebase against perf-tools-next commit c7a5592e8e4d ("perf mem: Fix a
  segfault with NULL event->name")
- Link to v4: https://lore.kernel.org/all/20240618180708.14144-1-vineethr@linux.ibm.com/

Changes in v4:
- Handle possible memory allocation failures. (Chen Yu)
- Link to v3: https://lore.kernel.org/all/20240617125006.31654-1-vineethr@linux.ibm.com/

Changes in v3:
- Print the sched-out timestamp as a row when using the --command-name
  option. (Namhyung Kim)
- Refactor the code.
- Rebase against perf-tools-next commit eae7044b67a6 ("perf hist: Honor
  symbol conf.skip_empty")
- Link to v2: https://lore.kernel.org/all/20240608124915.33860-1-vineethr@linux.ibm.com/

Changes in v2:
- Add support for giving multiple command-names in CSV. (Namhyung Kim)
- Add fuzzy name matching option. (Chen Yu)
- Add Reviewed-and-tested-by tag from Athira Rajeev.
- Rebase against perf-tools-next commit d2307fd4f989 ("perf maps: Add/use
  a sorted insert for fixup overlap and insert")
- Link to v1: https://lore.kernel.org/all/20240417152521.80340-1-vineethr@linux.ibm.com/

Madadi Vineeth Reddy (3):
  perf sched map: Add task-name option to filter the output map
  perf sched map: Add support for multiple task names using CSV
  perf sched map: Add --fuzzy-name option for fuzzy matching in task
    names

 tools/perf/Documentation/perf-sched.txt |  10 ++
 tools/perf/builtin-sched.c              | 175 +++++++++++++++++++-----
 2 files changed, 149 insertions(+), 36 deletions(-)

-- 
2.43.2

.

Date: Mon, 8 Jul 2024 02:37:21 +0800
From: kernel test robot <lkp@intel.com>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: WARNING: modpost: vmlinux: section mismatch in reference:
 init_tracefs.isra.0+0x3a4 (section: .text.unlikely) -> initcall_level_names
 (section: .init.data)
Message-ID: <202407080201.odoMhKgZ-lkp@intel.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270217
Newsgroups: org.kernel.vger.linux-kernel,dev.linux.lists.oe-kbuild-all
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   c6653f49e4fd3b0d52c12a1fc814d6c5b234ea15
commit: 481461f5109919babbb393d6f68002936b8e2493 linux/export.h: make <linux/export.h> independent of CONFIG_MODULES
date:   12 months ago
config: xtensa-randconfig-r036-20220501 (https://download.01.org/0day-ci/archive/20240708/202407080201.odoMhKgZ-lkp@intel.com/config)
compiler: xtensa-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240708/202407080201.odoMhKgZ-lkp@intel.com/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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407080201.odoMhKgZ-lkp@intel.com/

All warnings (new ones prefixed by >>, old ones prefixed by <<):

WARNING: modpost: missing MODULE_DESCRIPTION() in vmlinux.o
>> WARNING: modpost: vmlinux: section mismatch in reference: init_tracefs.isra.0+0x3a4 (section: .text.unlikely) -> initcall_level_names (section: .init.data)
WARNING: modpost: vmlinux: section mismatch in reference: bitmap_equal+0x18 (section: .text.unlikely) -> __setup_str_initcall_blacklist (section: .init.rodata)

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
.

From: Nicolas Pitre <nico@fluxnic.net>
To: Andrew Morton <akpm@linux-foundation.org>,
	=?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= <u.kleine-koenig@baylibre.com>
Cc: Nicolas Pitre <npitre@baylibre.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH v3 0/2] mul_u64_u64_div_u64: new implementation
Date: Sun,  7 Jul 2024 15:05:18 -0400
Message-ID: <20240707190648.1982714-1-nico@fluxnic.net>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270225
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This provides an implementation for mul_u64_u64_div_u64() that always
produces exact results.

Changes from v2 (https://lore.kernel.org/lkml/20240703033552.906852-2-nic=
o@fluxnic.net/T/):

- Dispense with the fancy union. This makes the source smaller and
  avoids #ifdef for endian ordering that trips kernel test robot somehow.

Changes from v1 (https://lkml.org/lkml/2024/6/28/1130):

- Use the already available u128 type instead of "unsigned __int128".
- Add a test module.
.

From: =?UTF-8?q?Sergio=20Gonz=C3=A1lez=20Collado?= <sergio.collado@gmail.com>
To: Jonathan Corbet <corbet@lwn.net>,
	Ingo Molnar <mingo@kernel.org>,
	Mukesh Kumar Chaurasiya <mchauras@linux.ibm.com>,
	Shrikanth Hegde <sshegde@linux.vnet.ibm.com>,
	Wenyu Huang <huangwenyu5@huawei.com>,
	Carlos Bilbao <carlos.bilbao.osdev@gmail.com>
Cc: linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	bilbao@vt.edu,
	=?UTF-8?q?Sergio=20Gonz=C3=A1lez=20Collado?= <sergio.collado@gmail.com>
Subject: [PATCH v2] docs/sp_SP: Add translation for scheduler/sched-design-CFS.rst
Date: Sun,  7 Jul 2024 21:50:47 +0200
Message-Id: <20240707195047.14359-1-sergio.collado@gmail.com>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270238
Newsgroups: org.kernel.vger.linux-kernel,org.kernel.vger.linux-doc
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Translate Documentation/scheduler/sched-design-CFS.rst into Spanish

Signed-off-by: Sergio González Collado <sergio.collado@gmail.com>
Reviewed-by: Carlos Bilbao <carlos.bilbao.osdev@gmail.com>
---
 v1 -> v2: Corrected typos and added a note about EEVDF
---
 Documentation/scheduler/sched-design-CFS.rst  |   2 +
 Documentation/translations/sp_SP/index.rst    |   1 +
 .../translations/sp_SP/scheduler/index.rst    |   8 +
 .../sp_SP/scheduler/sched-design-CFS.rst      | 277 ++++++++++++++++++
 4 files changed, 288 insertions(+)
 create mode 100644 Documentation/translations/sp_SP/scheduler/index.rst
 create mode 100644 Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst

diff --git a/Documentation/scheduler/sched-design-CFS.rst b/Documentation/scheduler/sched-design-CFS.rst
index e030876fbd68..bc1e507269c6 100644
--- a/Documentation/scheduler/sched-design-CFS.rst
+++ b/Documentation/scheduler/sched-design-CFS.rst
@@ -1,3 +1,5 @@
+.. _sched_design_CFS:
+
 =============
 CFS Scheduler
 =============
diff --git a/Documentation/translations/sp_SP/index.rst b/Documentation/translations/sp_SP/index.rst
index 274ef4ad96b9..aae7018b0d1a 100644
--- a/Documentation/translations/sp_SP/index.rst
+++ b/Documentation/translations/sp_SP/index.rst
@@ -78,3 +78,4 @@ Traducciones al español
 
    process/index
    wrappers/memory-barriers
+   scheduler/index
diff --git a/Documentation/translations/sp_SP/scheduler/index.rst b/Documentation/translations/sp_SP/scheduler/index.rst
new file mode 100644
index 000000000000..768488d6f001
--- /dev/null
+++ b/Documentation/translations/sp_SP/scheduler/index.rst
@@ -0,0 +1,8 @@
+.. include:: ../disclaimer-sp.rst
+
+.. _sp_scheduler_index:
+
+.. toctree::
+    :maxdepth: 1
+
+    sched-design-CFS
diff --git a/Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst b/Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst
new file mode 100644
index 000000000000..90a153cad4e8
--- /dev/null
+++ b/Documentation/translations/sp_SP/scheduler/sched-design-CFS.rst
@@ -0,0 +1,277 @@
+.. include:: ../disclaimer-sp.rst
+
+:Original: :ref:`Documentation/scheduler/sched-design-CFS.rst <sched_design_CFS>`
+:Translator: Sergio González Collado <sergio.collado@gmail.com>
+
+.. _sp_sched_desing_CFS:
+
+====================
+Gestor de tareas CFS
+====================
+
+1.  VISIÓN GENERAL
+==================
+
+CFS viene de las siglas en inglés de "Gestor de tareas totalmente justo"
+("Completely Fair Scheduler"), y es el nuevo gestor de tareas de escritorio
+implementado por Ingo Molnar e integrado en Linux 2.6.23. Es el sustituto de
+el previo gestor de tareas SCHED_OTHER.
+
+Nota: El planificador EEVDF fue incorporado más recientemente al kernel.
+
+El 80% del diseño de CFS puede ser resumido en una única frase: CFS
+básicamente modela una "CPU ideal, precisa y multi-tarea" sobre hardware
+real.
+
+"una CPU multitarea ideal" es una CPU (inexistente :-)) que tiene un 100%
+de potencia y que puede ejecutar cualquier tarea exactamente a la misma
+velocidad, en paralelo, y cada una a 1/n velocidad. Por ejemplo, si hay dos
+tareas ejecutándose, entonces cada una usa un 50% de la potencia --- es decir,
+como si se ejecutaran en paralelo.
+
+En hardware real, se puede ejecutar una única tarea a la vez, así que
+se ha usado el concepto de "tiempo de ejecución virtual". El tiempo
+de ejecución virtual de una tarea específica cuando la siguiente porción
+de ejecución podría empezar en la CPU ideal multi-tarea descrita anteriormente.
+En la práctica, el tiempo de ejecución virtual de una tarea es el
+tiempo de ejecución real normalizado con respecto al número total de
+tareas ejecutándose.
+
+
+2.  UNOS CUANTOS DETALLES DE IMPLEMENTACIÓN
+===========================================
+
+En CFS, el tiempo de ejecución virtual se expresa y se monitoriza por
+cada tarea, en su valor de p->se.vruntime (en unidades de nanosegundos).
+De este modo, es posible temporizar con precisión y medir el "tiempo
+de CPU esperado" que una tarea debería tener.
+
+Un pequeño detalle: en hardware "ideal", en cualquier momento todas las
+tareas pueden tener el mismo valor de p->se.vruntime --- i.e., tareas
+se podrían ejecutar simultáneamente y ninguna tarea podría escaparse del
+"balance" de la partición "ideal" del tiempo compartido de la CPU.
+
+La lógica de elección del tareas de CFS se basa en el valor de p->se.vruntime
+y por tanto es muy sencilla: siempre intenta ejecutar la tarea con el valor
+p->se.vruntime más pequeño (i.e., la tarea que se ha ejecutado menos hasta el
+momento). CFS siempre intenta dividir el espacio de tiempo entre tareas
+en ejecución tan próximo a la "ejecución multitarea ideal del hardware" como
+sea posible.
+
+El resto del diseño de CFS simplemente se escapa de este simple concepto,
+con unos cuantos añadidos como los niveles "nice" ("nice" significa "amable"
+en inglés), multi-tarea y varias variantes del algoritmo para identificar
+tareas "durmiendo".
+
+
+3.  EL ÁRBOL ROJO-NEGRO
+=======================
+
+El diseño de CFS es bastante radical: no utiliza las antiguas estructuras
+de datos para las colas de ejecución (en inglés "runqueues"), pero usa una
+estructura de árbol rojo-negro (en inglés "red-black tree") ordenado cronológicamente
+para construir un línea de ejecución en el futuro, y por eso no tiene ningún
+artificio de "cambio de tareas" (algo que previamente era usado por el gestor
+anterior y RSDL/SD).
+
+CFS también mantiene el valor de rq->cfs.min_vruntime, el cual crece
+monotónicamente siguiendo el valor más pequeño de vruntime de entre todas
+las tareas en la cola de ejecución. La cantidad total de trabajo realizado
+por el sistema es monitorizado usado min_vruntime; este valor es usado
+para situar las nuevas tareas en la parte izquierda del árbol tanto
+como sea posible.
+
+El valor total de tareas ejecutándose en la cola de ejecución es
+contabilizado mediante el valor rq->cfs.load, el cual es la suma de los
+de esas tareas que están en la cola de ejecución.
+
+CFS mantiene un árbol rojo-negro cronológicamente ordenado, donde todas las
+tareas que pueden ser ejecutadas están ordenadas por su valor de
+p->se.vruntime. CFS selecciona la tarea más hacia la izquierda de este
+árbol y la mantiene. Según el sistema continúa, las tareas ejecutadas
+se ponen en este árbol más y más hacia la derecha --- lentamente pero
+de forma continuada dando una oportunidad a cada tarea de ser la que
+está "la más hacia la izquierda" y por tanto obtener la CPU una cantidad
+determinista de tiempo.
+
+Resumiendo, CFS funciona así: ejecuta una tarea un tiempo, y cuando la
+tarea se gestiona (o sucede un tic del gestor de tareas) se considera
+que el tiempo de uso de la CPU se ha completado, y se añade a
+p->se.vruntime. Una vez p->se.vruntime ha aumentado lo suficiente como
+para que otra tarea sea "la tarea más hacia la izquierda" del árbol
+rojo-negro ordenado cronológicamente esta mantienen (más una cierta pequeña
+cantidad de distancia relativa a la tarea más hacia la izquierda para
+que no se sobre-reserven tareas y perjudique a la cache), entonces la
+nueva tarea "que está a la izquierda del todo", es la que se elige
+para que se ejecute, y la tarea en ejecución es interrumpida.
+
+4.  ALGUNAS CARACTERÍSTICAS DE CFS
+==================================
+
+CFS usa una granularidad de nanosegundos y no depende de ningún
+jiffie o detalles como HZ. De este modo, el gestor de tareas CFS no tiene
+noción de "ventanas de tiempo" de la forma en que tenía el gestor de
+tareas previo, y tampoco tiene heurísticos. Únicamente hay un parámetro
+central ajustable (se ha de cambiar en CONFIG_SCHED_DEBUG):
+
+   /sys/kernel/debug/sched/base_slice_ns
+
+El cual puede ser usado para afinar desde el gestor de tareas del "escritorio"
+(i.e., bajas latencias) hacia cargas de "servidor" (i.e., bueno con
+procesamientos). Su valor por defecto es adecuado para tareas de escritorio.
+SCHED_BATCH también es gestionado por el gestor de tareas CFS.
+
+Debido a su diseño, el gestor de tareas CFS no es proclive a ninguno de los
+ataques que existen a día de hoy contra los heurísticos del gestor de tareas:
+fiftyp.c, thud.c, chew.c, ring-test.c, massive_intr.c todos trabajan
+correctamente y no tienen impacto en la interacción y se comportan de la forma
+esperada.
+
+El gestor de tareas CFS tiene una gestión mucho más firme de los niveles
+"nice" y SCHED_BATCH que los previos gestores de tareas: ambos tipos de
+tareas están aisladas de forma más eficiente.
+
+El balanceo de tareas SMP ha sido rehecho/mejorado: el avance por las
+colas de ejecución de tareas ha desaparecido del código de balanceo de
+carga, y ahora se usan iteradores en la gestión de módulos. El balanceo
+del código ha sido simplificado como resultado esto.
+
+5.  Políticas de gestión de tareas
+==================================
+
+CFS implementa tres políticas de gestión de tareas:
+
+  - SCHED_NORMAL (tradicionalmente llamada SCHED_OTHER): Gestión de
+    tareas que se usan para tareas normales.
+
+  - SCHED_BATCH: No interrumpe tareas tan a menudo como las tareas
+    normales harían, por eso permite a las tareas ejecutarse durante
+    ventanas de tiempo mayores y hace un uso más efectivo de las
+    caches pero al coste de la interactividad. Esto es adecuado
+    para trabajos de procesado de datos.
+
+  - SCHED_IDLE: Esta política es más débil incluso que nice 19, pero
+    no es un gestor "idle" para evitar caer en el problema de la
+    inversión de prioridades que causaría un bloqueo de la máquina
+    (deadlock).
+
+SCHED_FIFO/_RR se implementan en sched/rt.c y son específicos de
+POSIX.
+
+El comando chrt de util-linux-ng 2.13.1.1. puede asignar cualquiera de
+estas políticas excepto SCHED_IDLE.
+
+
+6.  CLASES DE GESTIÓN
+=====================
+
+El nuevo gestor de tareas CFS ha sido diseñado de tal modo para incluir
+"clases de gestión", una jerarquía ampliable de módulos que pueden tener
+distintas políticas de gestión de tareas. Estos módulos encapsulan los
+detalles de las politicas de gestión y son manejadas por el núcleo del
+gestor de tareas sin que este tenga que presuponer mucho sobre estas clases.
+
+sched/fair.c implementa el gestor de tareas CFS descrito antes.
+
+sched/rt.c implementa la semántica de SCHED_FIFO y SCHED_RR, de una forma
+más sencilla que el gestor de tareas anterior. Usa 100 colas de ejecución
+(por todos los 100 niveles de prioridad RT, en vez de las 140 que necesitaba
+el gestor de tareas anterior) y no necesita las listas de expiración.
+
+Las clases de gestión de tareas son implementadas por medio de la estructura
+sched_class, la cual tiene llamadas a las funciones que deben de llamarse
+cuando quiera que ocurra un evento interesante.
+
+Esta es la lista parcial de llamadas:
+
+ - enqueue_task(...)
+
+   Llamada cuando una tarea entra en el estado de lista para ejecución.
+   Pone la entidad a ser gestionada (la tarea) en el árbol rojo-negro
+   e incrementa la variable nr_running.
+
+ - dequeue_task(...)
+
+   Cuando una tarea deja de ser ejecutable, esta función se llama para
+   mantener a la entidad gestionada fuera del árbol rojo-negor. Esto
+   decrementa la variable nr_running.
+
+ - yield_task(...)
+
+   Esta función es básicamente desencolar, seguido por encolar, a menos que
+   sysctl compat_yield esté activado; en ese caso, sitúa la entidad a gestionar
+   en la parte más hacia la derecha del árbol rojo-negro.
+
+ - check_preempt_curr(...)
+
+   Esta función comprueba si una tarea que ha entrado en el estado de
+   poder ser ejecutada, podría reemplazar a la tarea que actualmente
+   se esté ejecutando.
+
+ - pick_next_task(...)
+
+   Esta función elige la tarea más apropiada para ser ejecutada a continuación.
+
+ - set_curr_task(...)
+
+   Esta función se llama cuando una tarea cambia su clase de gestión o
+   cambia su grupo de tareas.
+
+ - task_tick(...)
+
+   Esta función es llamada la mayoría de las veces desde la función de tiempo
+   tick; esto puede llevar a un cambio de procesos. Esto dirige el reemplazo
+   de las tareas.
+
+
+7.  EXTENSIONES DE GRUPOS PARA CFS
+==================================
+
+Normalmente, el gestor de tareas gestiona tareas individuales e intenta
+proporcionar una cantidad justa de CPU a cada tarea. Algunas veces, puede
+ser deseable agrupar las tareas y proporcionarles una cantidad justa
+de tiempo de CPU a cada una de las tareas de ese grupo. Por ejemplo,
+podría ser deseable que primero se proporcione una cantidad justa de
+tiempo de CPU a cada usuario del sistema y después a cada tarea
+que pertenezca a un usuario.
+
+CONFIG_CGROUP_SCHED destaca en conseguir exactamente eso. Permite a las
+tareas ser agrupadas y divide el tiempo de CPU de forma just entre esos
+grupos.
+
+CONFIG_RT_GROUP_SCHED permite agrupar tareas de tiempo real (i.e.,
+SCHED_FIFO y SCHED_RR).
+
+CONFIG_FAIR_GROUP_SCHED permite agrupar tareas de CFS (i.e., SCHED_NORMAL y
+SCHED_BATCH).
+
+Estas opciones necesitan CONFIG_CGROUPS para ser definidas, y permitir
+al administrador crear grupos arbitrarios de tareas, usando el pseudo
+sistema de archivos "cgroup". Vease la documentación para más información
+sobre este sistema de archivos: Documentation/admin-guide/cgroup-v1/cgroups.rst
+
+Cuando CONFIG_FAIR_GROUP_SCHED es definido, un archivo
+"cpu.shares" es creado por cada grupo creado usado en el pseudo
+sistema de archivos. Véanse por ejemplo los pasos a continuación
+para crear grupos de tareas y modificar cuanto comparten de la CPU
+usando el pseudo sistema de archivos "cgroup" ::
+
+	# mount -t tmpfs cgroup_root /sys/fs/cgroup
+	# mkdir /sys/fs/cgroup/cpu
+	# mount -t cgroup -ocpu none /sys/fs/cgroup/cpu
+	# cd /sys/fs/cgroup/cpu
+
+	# mkdir multimedia	# crear un grupo de tareas "multimedia"
+	# mkdir browser 	# crear un grupo de tareas "browser"
+
+	# #Configurar el grupo multimedia para tener el doble de tiempo de CPU
+	# #que el grupo browser
+
+	# echo 2048 > multimedia/cpu.shares
+	# echo 1024 > browser/cpu.shares
+
+	# firefox &	# Lanzar firefox y moverlo al grupo "browser"
+	# echo <firefox_pid> > browser/tasks
+
+	# #Lanzar gmplayer (o su programa favorito de reproducción de películas)
+	# echo <movie_player_pid> > multimedia/tasks
-- 
2.39.2

.

From: =?utf-8?q?Jonathan_Neusch=C3=A4fer?= <j.neuschaefer@gmx.net>
Subject: [PATCH 0/2] ARM: Refresh Raspberry Pi defconfig and enable SMP
 support
Date: Sun, 07 Jul 2024 23:48:43 +0200
Message-Id: <20240707-raspi-config-v1-0-3e122f2122e9@gmx.net>
X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
To: Russell King <linux@armlinux.org.uk>, 
 Florian Fainelli <florian.fainelli@broadcom.com>, 
 Broadcom internal kernel review list <bcm-kernel-feedback-list@broadcom.com>, 
 Ray Jui <rjui@broadcom.com>, Scott Branden <sbranden@broadcom.com>
Cc: linux-arm-kernel@lists.infradead.org, 
 linux-rpi-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, 
 =?utf-8?q?Jonathan_Neusch=C3=A4fer?= <j.neuschaefer@gmx.net>
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270256
Newsgroups: org.kernel.vger.linux-kernel,org.infradead.lists.linux-arm-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

This series enables SMP support in bcm2835_defconfig, so that Linux can
use all cores of later Raspberry Pi SoCs.

Signed-off-by: Jonathan Neusch=C3=A4fer <j.neuschaefer@gmx.net>
=2D--
Jonathan Neusch=C3=A4fer (2):
      ARM: Refresh bcm2835_defconfig
      ARM: bcm2835_defconfig: Enable SMP support

 arch/arm/configs/bcm2835_defconfig | 15 +++------------
 1 file changed, 3 insertions(+), 12 deletions(-)
=2D--
base-commit: 22a40d14b572deb80c0648557f4bd502d7e83826
change-id: 20240704-raspi-config-83210de0f5f0

Best regards,
=2D-
Jonathan Neusch=C3=A4fer <j.neuschaefer@gmx.net>

.

X-Mailing-List: linux-kernel@vger.kernel.org
List-Id: <linux-kernel.vger.kernel.org>
List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Sun, 7 Jul 2024 14:53:35 -0700
Message-ID: <CAHk-=wjv_HoF-5Y5QuNqMfiumwMyNZt63ajO44uKce4dWOeU8Q@mail.gmail.com>
Subject: Linux 6.10-rc7
To: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: photonic.trudheim.com org.kernel.vger.linux-kernel:1270259
Newsgroups: org.kernel.vger.linux-kernel
Path: photonic.trudheim.com!nntp.lore.kernel.org!not-for-mail

Things remain calm, although I do suspect that part of it is that it's
been the July 4th week in the US, and a lot of Europe is starting to
go away on summer vacation.

But hey, let's not look a gift horse too closely in the mouth. Maybe
it's really just that 6.10 is shaping up well. Right? RIGHT?

                   Linus

---

Aleksandr Mishin (1):
      mlxsw: core_linecards: Fix double memory deallocation in case of
invalid INI file

Alex Bee (1):
      arm64: dts: rockchip: Add sound-dai-cells for RK3368

Alex Deucher (1):
      drm/amdgpu/atomfirmware: silence UBSAN warning

Alison Schofield (1):
      cxl/region: Avoid null pointer dereference in region lookup

Alvin Lee (1):
      drm/amd/display: Account for cursor prefetch BW in DML1 mode support

Andy Yan (1):
      arm64: dts: rockchip: Fix the i2c address of es8316 on Cool Pi 4B

Anjali K (1):
      powerpc/pseries: Whitelist dtl slub object for copying to userspace

Armin Wolf (1):
      platform/x86: toshiba_acpi: Fix quickstart quirk handling

Arnd Bergmann (1):
      syscalls: fix sys_fanotify_mark prototype

Atish Patra (1):
      drivers/perf: riscv: Do not update the event data if uptodate

Babu Moger (1):
      selftests/resctrl: Fix non-contiguous CBM for AMD

Bartosz Golaszewski (1):
      net: phy: aquantia: add missing include guards

Bjorn Helgaas (2):
      MAINTAINERS: Orphan Synopsys DesignWare xData traffic generator
      CREDITS: Add Synopsys DesignWare eDMA driver for Gustavo Pimentel

Boris Brezillon (2):
      drm/panthor: Don't check the array stride on empty uobj arrays
      drm/panthor: Fix sync-only jobs

Boris Burkov (2):
      btrfs: fix folio refcount in btrfs_do_encoded_write()
      btrfs: fix folio refcount in __alloc_dummy_extent_buffer()

Charlie Jenkins (2):
      documentation: Fix riscv cmodx example
      riscv: selftests: Fix vsetivli args for clang

Chen Ni (1):
      afs: Convert comma to semicolon

Chris Mi (1):
      net/mlx5: E-switch, Create ingress ACL when needed

Christian Borntraeger (1):
      KVM: s390: fix LPSWEY handling

Christian Brauner (2):
      fs: don't misleadingly warn during thaw operations
      fs: better handle deep ancestor chains in is_subdir()

Daniel Gabay (1):
      wifi: iwlwifi: properly set WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK

Daniel Jurgens (3):
      net/mlx5: IFC updates for changing max EQs
      net/mlx5: Use max_num_eqs_24b capability if set
      net/mlx5: Use max_num_eqs_24b when setting max_io_eqs

Dave Jiang (1):
      net: ntb_netdev: Move ntb_netdev_rx_handler() to call netif_rx()
from __netif_rx()

David Howells (6):
      netfs: Fix io_uring based write-through
      netfs: Fix early issue of write op on partial write to folio tail
      netfs: Delete some xarray-wangling functions that aren't used
      netfs: Fix netfs_page_mkwrite() to check folio->mapping is valid
      netfs: Fix netfs_page_mkwrite() to flush conflicting data, not wait
      cifs: Fix read-performance regression by dropping readahead expansion

Dima Ruinskiy (1):
      e1000e: Fix S0ix residency on corporate systems

Dmitry Antipov (1):
      mac802154: fix time calculation in ieee802154_configure_durations()

Dmitry Torokhov (2):
      gpiolib: of: fix lookup quirk for MIPS Lantiq
      gpiolib: of: add polarity quirk for TSC2005

Dragan Simic (1):
      arm64: dts: rockchip: Fix the DCDC_REG2 minimum voltage on
Quartz64 Model B

Edward Adam Davis (2):
      Bluetooth: Ignore too large handle values in BIG
      bluetooth/l2cap: sync sock recv cb and release

Emmanuel Grumbach (1):
      wifi: iwlwifi: mvm: don't wake up rx_sync_waitq upon RFKILL

Enrico Bravi (1):
      ima: fix wrong zero-assignment during securityfs dentry remove

Eric Dumazet (1):
      wifi: cfg80211: restrict NL80211_ATTR_TXQ_QUANTUM values

Eric Farman (1):
      s390/vfio_ccw: Fix target addresses of TIC CCWs

FUKAUMI Naoki (3):
      Revert "arm64: dts: rockchip: remove redundant cd-gpios from
rk3588 sdmmc nodes"
      arm64: dts: rockchip: make poweroff(8) work on Radxa ROCK 5A
      arm64: dts: rockchip: fix PMIC interrupt pin on ROCK Pi E

Fangzhi Zuo (1):
      drm/amd/display: Update efficiency bandwidth for dcn351

Filipe Manana (1):
      btrfs: fix uninitialized return value in the ref-verify tool

Florian Westphal (1):
      netfilter: nf_tables: unconditionally flush pending work before notif=
ier

Frank Oltmanns (1):
      clk: sunxi-ng: common: Don't call hw_to_ccu_common on hw without comm=
on

Furong Xu (1):
      net: stmmac: enable HW-accelerated VLAN stripping for gmac4 only

Gabor Juhos (2):
      clk: qcom: clk-alpha-pll: set ALPHA_EN bit for Stromer Plus PLLs
      clk: qcom: apss-ipq-pll: remove 'config_ctl_hi_val' from Stromer
pll configs

Ganesh Goudar (1):
      powerpc/eeh: avoid possible crash when edev->pdev changes

Gao Xiang (1):
      erofs: ensure m_llen is reset to 0 if metadata is invalid

Geert Uytterhoeven (2):
      riscv: dts: canaan: Clean up serial aliases
      riscv: dts: canaan: Disable I/O devices unless used

Ghadi Elie Rahme (1):
      bnx2x: Fix multiple UBSAN array-index-out-of-bounds

Hao Ge (1):
      media: intel/ipu6: Fix a null pointer dereference in
ipu6_isys_query_stream_by_source

Hector Martin (1):
      Bluetooth: hci_bcm4377: Fix msgid release

Heiko Carstens (1):
      s390: Update defconfigs

Heiko Stuebner (1):
      arm64: dts: rockchip: set correct pwm0 pinctrl on rk3588-tiger

Hsin-Te Yuan (1):
      arm64: dts: rockchip: Fix the value of `dlg,jack-det-rate`
mismatch on rk3399-gru

Huang Xiaojia (1):
      erofs: convert to use super_set_uuid to support for FS_IOC_GETFSUUID

Imre Deak (1):
      drm/i915/display: For MTL+ platforms skip mg dp programming

Iulia Tanasescu (1):
      Bluetooth: ISO: Check socket flag instead of hcon

Jacob Keller (2):
      ice: Don't process extts if PTP is disabled
      ice: Reject pin requests with unsupported flags

Jakub Kicinski (1):
      tcp_metrics: validate source addr length

Jan Kara (3):
      fsnotify: Do not generate events for O_PATH file descriptors
      Revert "mm/writeback: fix possible divide-by-zero in
wb_dirty_limits(), again"
      mm: avoid overflows in dirty throttling logic

Jann Horn (1):
      filelock: Remove locks reliably when fcntl/close race is detected

Jarkko Sakkinen (3):
      tpm: Address !chip->auth in tpm2_*_auth_session()
      tpm: Address !chip->auth in tpm_buf_append_name()
      tpm: Address !chip->auth in tpm_buf_append_hmac_session*()

Jean Delvare (1):
      drivers/soc/litex: drop obsolete dependency on COMPILE_TEST

Jeff Johnson (1):
      reset: hisilicon: hi6220: add missing MODULE_DESCRIPTION() macro

Jens Axboe (1):
      io_uring/net: don't clear msg_inq before io_recv_buf_select() needs i=
t

Jianbo Liu (1):
      net/mlx5e: Add mqprio_rl cleanup and free in mlx5e_priv_cleanup()

Jiawen Wu (4):
      net: txgbe: initialize num_q_vectors for MSI/INTx interrupts
      net: txgbe: remove separate irq request for MSI and INTx
      net: txgbe: add extra handle for MSI/INTx into thread irq handle
      net: txgbe: free isb resources at the right time

Jimmy Assarsson (1):
      can: kvaser_usb: Explicitly initialize family in leafimx
driver_info struct

Jinglin Wen (1):
      powerpc/64s: Fix unnecessary copy to 0 when kernel is booted at addre=
ss 0

Jinliang Zheng (1):
      mm: optimize the redundant loop of mm_update_owner_next()

Jisheng Zhang (1):
      MAINTAINERS: thead: update Maintainer

Johan Jonker (1):
      ARM: dts: rockchip: rk3066a: add #sound-dai-cells to hdmi node

Johannes Berg (3):
      wifi: mac80211: disable softirqs for queued frame handling
      wifi: mac80211: fix BSS_CHANGED_UNSOL_BCAST_PROBE_RESP
      wifi: iwlwifi: mvm: avoid link lookup in statistics

John Schoenick (1):
      drm: panel-orientation-quirks: Add quirk for Valve Galileo

Jonas Karlman (3):
      arm64: dts: rockchip: Fix rk3308 codec@ff560000 reset-names
      arm64: dts: rockchip: Fix SD NAND and eMMC init on rk3308-rock-pi-s
      arm64: dts: rockchip: Rename LED related pinctrl nodes on rk3308-rock=
-pi-s

Jozef Hopko (1):
      wifi: wilc1000: fix ies_len type in connect path

Kalle Valo (2):
      MAINTAINERS: Remembering Larry Finger
      MAINTAINERS: wifi: update ath.git location

Kuniyuki Iwashima (2):
      selftest: af_unix: Add test case for backtrack after finalising SCC.
      tcp: Don't flag tcp_sk(sk)->rx_opt.saw_unknown for TCP AO.

Leon Romanovsky (2):
      net/mlx5e: Present succeeded IPsec SA bytes and packet
      net/mlx5e: Approximate IPsec per-SA payload data bytes count

Li Ming (1):
      cxl/mem: Fix no cxl_nvd during pmem region auto-assembling

Linus Torvalds (1):
      Linux 6.10-rc7

Luca Weiss (1):
      clk: qcom: gcc-sm6350: Fix gpll6* & gpll7 parents

Luiz Augusto von Dentz (2):
      Bluetooth: hci_event: Fix setting of unicast qos interval
      Bluetooth: L2CAP: Fix deadlock

Ma Ke (1):
      drm/nouveau: fix null pointer dereference in nouveau_connector_get_mo=
des

Marek Vasut (1):
      net: phy: phy_device: Fix PHY LED blinking code comment

Mark Brown (1):
      reset: gpio: Fix missing gpiolib dependency for GPIO reset controller

Mark-PK Tsai (1):
      tee: optee: ffa: Fix missing-field-initializers warning

Matt Roper (1):
      drm/xe/mcr: Avoid clobbering DSS steering

Matthew Auld (1):
      drm/xe: fix error handling in xe_migrate_update_pgtables

Matthew Schwartz (1):
      drm: panel-orientation-quirks: Add labels for both Valve Steam
Deck revisions

Md Sadre Alam (1):
      clk: qcom: gcc-ipq9574: Add BRANCH_HALT_VOTED flag

Michael Ellerman (1):
      selftests/powerpc: Fix build with USERCFLAGS set

Micka=C3=ABl Sala=C3=BCn (1):
      selftests/harness: Fix tests timeout and race condition

Milena Olech (1):
      ice: Fix improper extts handling

Ming Lei (1):
      scsi: scsi_debug: Fix create target debugfs failure

Miquel Raynal (3):
      mtd: rawnand: Ensure ECC configuration is propagated to upper layers
      mtd: rawnand: Fix the nand_read_data_op() early check
      mtd: rawnand: Bypass a couple of sanity checks during NAND identifica=
tion

Miri Korenblit (1):
      wifi: iwlwifi: mvm: check vif for NULL/ERR_PTR before dereference

Naohiro Aota (2):
      btrfs: fix adding block group to a reclaim list and the unused
list during reclaim
      btrfs: zoned: fix calc_available_free_space() for zoned mode

Neal Cardwell (1):
      UPSTREAM: tcp: fix DSACK undo in fast recovery to call tcp_try_to_ope=
n()

Neeraj Sanjay Kale (1):
      Bluetooth: btnxpuart: Enable Power Save feature on startup

NeilBrown (1):
      vfs: generate FS_CREATE before FS_OPEN when ->atomic_open used.

Nicholas Piggin (1):
      powerpc/pseries: Fix scv instruction crash with kexec

Pavan Chebbi (1):
      bnxt_en: Fix the resource check condition for RSS contexts

Pavel Skripkin (1):
      bluetooth/hci: disallow setting handle bigger than HCI_CONN_HANDLE_MA=
X

Petr Oros (1):
      ice: use proper macro for testing bit

Pierre-Eric Pelloux-Prayer (1):
      drm/radeon: check bo_va->bo is non-NULL before using it

Pin-yen Lin (1):
      clk: mediatek: mt8183: Only enable runtime PM on mt8183-mfgcfg

Piotr Wojtaszczyk (1):
      i2c: pnx: Fix potential deadlock warning from del_timer_sync() call i=
n isr

Puranjay Mohan (1):
      riscv: stacktrace: fix usage of ftrace_graph_ret_addr()

Qu Wenruo (1):
      btrfs: always do the basic checks for btrfs_qgroup_inherit structure

Radu Rendec (1):
      net: rswitch: Avoid use-after-free in rswitch_poll()

Roman Li (1):
      drm/amd/display: Fix array-index-out-of-bounds in dml2/FCLKChangeSupp=
ort

Russell King (Oracle) (1):
      wifi: wlcore: fix wlcore AP mode

Ryusuke Konishi (3):
      nilfs2: fix inode number range checks
      nilfs2: add missing check for inode numbers on directory entries
      nilfs2: fix incorrect inode allocation from reserved inodes

Sagi Grimberg (1):
      net: allow skb_datagram_iter to be called from any context

Sakari Ailus (2):
      media: ipu6: Use the ISYS auxdev device as the V4L2 device's device
      media: ivsc: Depend on IPU_BRIDGE or not IPU_BRIDGE

Sam Sun (1):
      bonding: Fix out-of-bounds read in bond_option_arp_ip_targets_set()

Samuel Holland (2):
      drivers/perf: riscv: Reset the counter to hpmevent mapping while
starting cpus
      perf: RISC-V: Check standard event availability

Sandeep Dhavale (1):
      erofs: fix possible memory leak in z_erofs_gbuf_exit()

Shengyu Qu (1):
      riscv: dts: starfive: Set EMMC vqmmc maximum voltage to 3.3V on
JH7110 boards

Shigeru Yoshida (2):
      af_unix: Fix uninit-value in __unix_walk_scc()
      inet_diag: Initialize pad field in struct inet_diag_req_v2

Shiji Yang (1):
      gpio: mmio: do not calculate bgpio_bits via "ngpios"

Song Shuai (1):
      riscv: kexec: Avoid deadlock in kexec crash path

Stefan Haberland (1):
      s390/dasd: Fix invalid dereferencing of indirect CCW data pointer

Steven Rostedt (Google) (1):
      tracing: Have memmapped ring buffer use ioctl of "R" range 0x20-2F

Sven Peter (1):
      Bluetooth: Add quirk to ignore reserved PHY bits in LE Extended Adv R=
eport

Tetsuo Handa (1):
      Bluetooth: hci_core: cancel all works upon hci_unregister_dev()

Thomas Hellstr=C3=B6m (1):
      drm/ttm: Always take the bo delayed cleanup path for imported bos

Thomas Huth (1):
      drm/fbdev-generic: Fix framebuffer on big endian devices

Thomas Zimmermann (1):
      firmware: sysfb: Fix reference count of sysfb parent device

Tom Chung (3):
      drm/amd/display: Reset freesync config before update new state
      drm/amd/display: Add refresh rate range check
      drm/amd/display: Fix refresh rate range for some panel

Val Packett (1):
      mtd: rawnand: rockchip: ensure NVDDR timings are rejected

Vijay Satija (1):
      Bluetooth: btintel_pcie: Fix REVERSE_INULL issue reported by coverity

Xingui Yang (1):
      scsi: libsas: Fix exp-attached device scan after probe failure
scanned in again after probe failed

Yao Xingtao (2):
      cxl/region: check interleave capability
      cxl: documentation: add missing files to cxl driver-api

Yijie Yang (1):
      net: stmmac: dwmac-qcom-ethqos: fix error array size

Yunshui Jiang (1):
      net: mac802154: Fix racy device stats updates by DEV_STATS_INC()
and DEV_STATS_ADD()

Zijian Zhang (2):
      selftests: fix OOM in msg_zerocopy selftest
      selftests: make order checking verbose in msg_zerocopy selftest

Zijun Hu (1):
      Bluetooth: qca: Fix BT enable failure again for QCA6390 after warm re=
boot
.

