From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A45E334AAF2 for ; Thu, 16 Oct 2025 15:32:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760628779; cv=none; b=F5fPy5ArJDzfCq4yOyVT/3Nxx7HKbeC0jXDVxk5PCAmlLHIVW89Nmnx1LDBAoZu36YsTI5F2We50m/7ZzZarqgf5jN6iLYwEaUdzW9O2i/xdRIxgHVJH+RntGw9hZc1e+bNNiSqHFJjo9uc9NdLSKwmCFRKj2BA4wkO1SUifMl4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1760628779; c=relaxed/simple; bh=+vfLAUgKF6uvsarRDRcDQR9Kpy31ISdblD7kabJJs3c=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=AR60S2Rh2LOE5mIMDPkeQ4cz0eUobtWuENHtGLHTj9TA888kMD1U5ezj1cKKILQzg2WOD4j6es8J855JodL2P6aglTGKEbSV1NPiZT3R+mHYLcCJq1Lh29Bx7NoIAEFLXuLm9wh3LedAaxIOoLqLE0jFwqjqz/DdPfhRBoRvISA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b=Jq5SJE6P; arc=none smtp.client-ip=209.85.215.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc.com header.i=@rivosinc.com header.b="Jq5SJE6P" Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-b4fb8d3a2dbso641913a12.3 for ; Thu, 16 Oct 2025 08:32:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1760628777; x=1761233577; darn=vger.kernel.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=3jxedNOWKQXyjZn7DBAQ8SlEmIZ51OVh5Hh6uRAtw9w=; b=Jq5SJE6PzU6fHlU7nHEmD0umujif+eUamOZBvKKQurj651w7qVSZR+hZV4ekbHXBug gKBxxF5h7uMjeauLG/DkDxWRwRiTMwS0PnF74pk2YndifB8831Y2RXD/QewITQF3bB7B F6OA5CA2b6afNo8Q115MU09+XRm7n/kRev0QhVdZjZvKNKo5d3FjkssJ0Ea2gHDigK2m jF6YL7SAZb9GCGkxvZ2IMjidbHCr/SVGJwEIlc4oNv6IyuYdoUCEkuMM5yw+nGoG92O2 ugteOetqbIiW9OFHsIZtOOYsC5PtP8FT3Fi9WjRgORLcpWzXAiCS8l0YArIiZXH/O1No sz9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760628777; x=1761233577; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3jxedNOWKQXyjZn7DBAQ8SlEmIZ51OVh5Hh6uRAtw9w=; b=Whlc76ZXjmzN0ksjT0pPeSowTTuH38YKbWHpT3xkZPoFWWgF/mHuqt/SHHPxjqQCFl utLaTSAVrmhzc6ps1+CNH9l/A69zsxy6cF49jQSjY84RULIeI4kBKSIiU0xjeiHy6pPt StV7i+p1qCHMoFWh+JuzWCsJ/AMLEtiGfhsU/IxoYdVjsNNcJcvBPMedA2wnBIP0+37h XN3e/FC8y6M/RR/JJoO2GeANhhUi9v7avNlAhv5ZkgiGB92b/8GmD70DXi6vSBakrv2j /4IwjscxTOE+tNZmEa0vmVuR8Xh20EiLnN5qfBewXjPOysdAfKf+/aAvk2tWqh6uP7dU vgqg== X-Forwarded-Encrypted: i=1; AJvYcCUYfcYlvmeuyjsg2p7XNWyLcTv1Vxc0Ex6POxLOWBahWd4FmRgK4vbZGz9VA3i5N1eiTSwL4kxXZ6uM@vger.kernel.org X-Gm-Message-State: AOJu0Yy75KCPvY4omdSOGJxHe+2wRFyOqf7Vr4tIbkpZGcUZXNgB6V2c ylNCjnDSOXutnpvlYuQXJynH498d8y6jiloqJV2USudl/p7Otf8Pxfyqn9u51RRGKjE= X-Gm-Gg: ASbGncvHDz/llcaxS3m6eNRj0pVe95TklX2oL6z9jz32JQ+5htyfWEfi335K5YYA/Nn VFoTA+tEZPpG70pA8KEVvZJHZeZKfJo2/r3lYyZEanLFs8JXbFpjlyZkTDpI9EOVj4rlf3z/Lo8 JZKP7C7tDcw6QnlEZsSTKFr2Yrxn8PqvW7/HVNqf4JDnOEyKDtRjJokX6L28c8Dd2fOWiLWF8eM 37Dk9tOG30VXqG/N93sJ7mQTi2pfkZqwJqfZc5hjjrKxPV+ECNbtiwgwwMaaWFVmwPKUlQYriLW YNkufshgFEv91AMpJwSihSWxneRya0WnEb+CPaC8iiQAjliYUKrPJ2NTY2ejiLNlRdbHwbQtj88 /eDBr5wTgcHgyuaYc1ZvhMrl2kYaj9q7PS0Ov+g5eMXcI/TNT9TCy5SoayQWWRpce5P91zhYemZ X1EjwODgEFMA== X-Google-Smtp-Source: AGHT+IH84DeIB8c+VjuQrVSzDzT3x6nsRergbVWw29DX9ZseotGG3dDJsziVEnyxGDiXthj0SuB12g== X-Received: by 2002:a17:902:d483:b0:265:47:a7b0 with SMTP id d9443c01a7336-290c9c896a5mr3550315ad.10.1760628776645; Thu, 16 Oct 2025 08:32:56 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29099348afcsm34256915ad.37.2025.10.16.08.32.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Oct 2025 08:32:56 -0700 (PDT) Date: Thu, 16 Oct 2025 08:32:53 -0700 From: Deepak Gupta To: Zong Li Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Lorenzo Stoakes , Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Rob Herring , Krzysztof Kozlowski , Arnd Bergmann , Christian Brauner , Peter Zijlstra , Oleg Nesterov , Eric Biederman , Kees Cook , Jonathan Corbet , Shuah Khan , Jann Horn , Conor Dooley , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?iso-8859-1?Q?Bj=F6rn?= Roy Baron , Andreas Hindborg , Alice Ryhl , Trevor Gross , Benno Lossin , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, alistair.francis@wdc.com, richard.henderson@linaro.org, jim.shu@sifive.com, andybnac@gmail.com, kito.cheng@sifive.com, charlie@rivosinc.com, atishp@rivosinc.com, evan@rivosinc.com, cleger@rivosinc.com, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com, rust-for-linux@vger.kernel.org Subject: Re: [PATCH v20 24/28] arch/riscv: dual vdso creation logic and select vdso based on hw Message-ID: References: <20251013-v5_user_cfi_series-v20-0-b9de4be9912e@rivosinc.com> <20251013-v5_user_cfi_series-v20-24-b9de4be9912e@rivosinc.com> Precedence: bulk X-Mailing-List: linux-arch@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Thu, Oct 16, 2025 at 04:32:08PM +0800, Zong Li wrote: >On Tue, Oct 14, 2025 at 5:57 AM Deepak Gupta wrote: >> >> Shadow stack instructions are taken from zimop (mandated on RVA23). >> Any hardware prior to RVA23 profile will fault on shado stack instruction. > >I notice that there is a typo for shado"w" stack instruction. Aah yes. Sorry about it and thanks. Again upto Paul, if he wants me to send another. I'll do that. -Deepak > >> Any userspace with shadow stack instruction in it will fault on such >> hardware. Thus such userspace can't be brought onto such a hardware. >> >> It's not known how userspace will respond to such binary fragmentation. >> However in order to keep kernel portable across such different hardware, >> `arch/riscv/kernel/vdso_cfi` is created which has logic (Makefile) to >> compile `arch/riscv/kernel/vdso` sources with cfi flags and then changes >> in `arch/riscv/kernel/vdso.c` for selecting appropriate vdso depending >> on whether underlying hardware(cpu) implements zimop extension. Offset >> of vdso symbols will change due to having two different vdso binaries, >> there is added logic to include new generated vdso offset header and >> dynamically select offset (like for rt_sigreturn). >> >> Signed-off-by: Deepak Gupta >> --- >> arch/riscv/Makefile | 3 +++ >> arch/riscv/include/asm/vdso.h | 7 ++++++- >> arch/riscv/kernel/Makefile | 1 + >> arch/riscv/kernel/vdso.c | 7 +++++++ >> arch/riscv/kernel/vdso/Makefile | 29 ++++++++++++++++++++--------- >> arch/riscv/kernel/vdso/gen_vdso_offsets.sh | 4 +++- >> arch/riscv/kernel/vdso_cfi/Makefile | 25 +++++++++++++++++++++++++ >> arch/riscv/kernel/vdso_cfi/vdso-cfi.S | 11 +++++++++++ >> 8 files changed, 76 insertions(+), 11 deletions(-) >> >> diff --git a/arch/riscv/Makefile b/arch/riscv/Makefile >> index f60c2de0ca08..b74b63da16a7 100644 >> --- a/arch/riscv/Makefile >> +++ b/arch/riscv/Makefile >> @@ -176,6 +176,8 @@ ifeq ($(CONFIG_MMU),y) >> prepare: vdso_prepare >> vdso_prepare: prepare0 >> $(Q)$(MAKE) $(build)=arch/riscv/kernel/vdso include/generated/vdso-offsets.h >> + $(if $(CONFIG_RISCV_USER_CFI),$(Q)$(MAKE) \ >> + $(build)=arch/riscv/kernel/vdso_cfi include/generated/vdso-cfi-offsets.h) >> $(if $(CONFIG_COMPAT),$(Q)$(MAKE) \ >> $(build)=arch/riscv/kernel/compat_vdso include/generated/compat_vdso-offsets.h) >> >> @@ -183,6 +185,7 @@ endif >> endif >> >> vdso-install-y += arch/riscv/kernel/vdso/vdso.so.dbg >> +vdso-install-$(CONFIG_RISCV_USER_CFI) += arch/riscv/kernel/vdso_cfi/vdso-cfi.so.dbg >> vdso-install-$(CONFIG_COMPAT) += arch/riscv/kernel/compat_vdso/compat_vdso.so.dbg >> >> BOOT_TARGETS := Image Image.gz Image.bz2 Image.lz4 Image.lzma Image.lzo Image.zst Image.xz loader loader.bin xipImage vmlinuz.efi >> diff --git a/arch/riscv/include/asm/vdso.h b/arch/riscv/include/asm/vdso.h >> index f80357fe24d1..3fc8f72b8bfb 100644 >> --- a/arch/riscv/include/asm/vdso.h >> +++ b/arch/riscv/include/asm/vdso.h >> @@ -18,9 +18,13 @@ >> >> #ifndef __ASSEMBLER__ >> #include >> +#include >> >> #define VDSO_SYMBOL(base, name) \ >> - (void __user *)((unsigned long)(base) + __vdso_##name##_offset) >> + ((IS_ENABLED(CONFIG_RISCV_USER_CFI) && \ >> + riscv_has_extension_unlikely(RISCV_ISA_EXT_ZIMOP)) ? \ >> + (void __user *)((unsigned long)(base) + __vdso_##name##_cfi_offset) : \ >> + (void __user *)((unsigned long)(base) + __vdso_##name##_offset)) >> >> #ifdef CONFIG_COMPAT >> #include >> @@ -33,6 +37,7 @@ extern char compat_vdso_start[], compat_vdso_end[]; >> #endif /* CONFIG_COMPAT */ >> >> extern char vdso_start[], vdso_end[]; >> +extern char vdso_cfi_start[], vdso_cfi_end[]; >> >> #endif /* !__ASSEMBLER__ */ >> >> diff --git a/arch/riscv/kernel/Makefile b/arch/riscv/kernel/Makefile >> index 2d0e0dcedbd3..9026400cba10 100644 >> --- a/arch/riscv/kernel/Makefile >> +++ b/arch/riscv/kernel/Makefile >> @@ -72,6 +72,7 @@ obj-y += vendor_extensions/ >> obj-y += probes/ >> obj-y += tests/ >> obj-$(CONFIG_MMU) += vdso.o vdso/ >> +obj-$(CONFIG_RISCV_USER_CFI) += vdso_cfi/ >> >> obj-$(CONFIG_RISCV_MISALIGNED) += traps_misaligned.o >> obj-$(CONFIG_RISCV_MISALIGNED) += unaligned_access_speed.o >> diff --git a/arch/riscv/kernel/vdso.c b/arch/riscv/kernel/vdso.c >> index 3a8e038b10a2..bf080e519101 100644 >> --- a/arch/riscv/kernel/vdso.c >> +++ b/arch/riscv/kernel/vdso.c >> @@ -98,6 +98,13 @@ static struct __vdso_info compat_vdso_info __ro_after_init = { >> >> static int __init vdso_init(void) >> { >> + /* Hart implements zimop, expose cfi compiled vdso */ >> + if (IS_ENABLED(CONFIG_RISCV_USER_CFI) && >> + riscv_has_extension_unlikely(RISCV_ISA_EXT_ZIMOP)) { >> + vdso_info.vdso_code_start = vdso_cfi_start; >> + vdso_info.vdso_code_end = vdso_cfi_end; >> + } >> + >> __vdso_init(&vdso_info); >> #ifdef CONFIG_COMPAT >> __vdso_init(&compat_vdso_info); >> diff --git a/arch/riscv/kernel/vdso/Makefile b/arch/riscv/kernel/vdso/Makefile >> index 272f1d837a80..a842dc034571 100644 >> --- a/arch/riscv/kernel/vdso/Makefile >> +++ b/arch/riscv/kernel/vdso/Makefile >> @@ -20,6 +20,10 @@ endif >> ifdef VDSO_CFI_BUILD >> CFI_MARCH = _zicfilp_zicfiss >> CFI_FULL = -fcf-protection=full >> +CFI_SUFFIX = -cfi >> +OFFSET_SUFFIX = _cfi >> +ccflags-y += -DVDSO_CFI=1 >> +asflags-y += -DVDSO_CFI=1 >> endif >> >> # Files to link into the vdso >> @@ -48,13 +52,20 @@ endif >> CFLAGS_hwprobe.o += -fPIC >> >> # Build rules >> -targets := $(obj-vdso) vdso.so vdso.so.dbg vdso.lds >> +vdso_offsets := vdso$(if $(VDSO_CFI_BUILD),$(CFI_SUFFIX),)-offsets.h >> +vdso_o := vdso$(if $(VDSO_CFI_BUILD),$(CFI_SUFFIX),).o >> +vdso_so := vdso$(if $(VDSO_CFI_BUILD),$(CFI_SUFFIX),).so >> +vdso_so_dbg := vdso$(if $(VDSO_CFI_BUILD),$(CFI_SUFFIX),).so.dbg >> +vdso_lds := vdso.lds >> + >> +targets := $(obj-vdso) $(vdso_so) $(vdso_so_dbg) $(vdso_lds) >> + >> obj-vdso := $(addprefix $(obj)/, $(obj-vdso)) >> >> -obj-y += vdso.o >> -CPPFLAGS_vdso.lds += -P -C -U$(ARCH) >> +obj-y += vdso$(if $(VDSO_CFI_BUILD),$(CFI_SUFFIX),).o >> +CPPFLAGS_$(vdso_lds) += -P -C -U$(ARCH) >> ifneq ($(filter vgettimeofday, $(vdso-syms)),) >> -CPPFLAGS_vdso.lds += -DHAS_VGETTIMEOFDAY >> +CPPFLAGS_$(vdso_lds) += -DHAS_VGETTIMEOFDAY >> endif >> >> # Disable -pg to prevent insert call site >> @@ -63,12 +74,12 @@ CFLAGS_REMOVE_getrandom.o = $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) >> CFLAGS_REMOVE_hwprobe.o = $(CC_FLAGS_FTRACE) $(CC_FLAGS_SCS) >> >> # Force dependency >> -$(obj)/vdso.o: $(obj)/vdso.so >> +$(obj)/$(vdso_o): $(obj)/$(vdso_so) >> >> # link rule for the .so file, .lds has to be first >> -$(obj)/vdso.so.dbg: $(obj)/vdso.lds $(obj-vdso) FORCE >> +$(obj)/$(vdso_so_dbg): $(obj)/$(vdso_lds) $(obj-vdso) FORCE >> $(call if_changed,vdsold_and_check) >> -LDFLAGS_vdso.so.dbg = -shared -soname=linux-vdso.so.1 \ >> +LDFLAGS_$(vdso_so_dbg) = -shared -soname=linux-vdso.so.1 \ >> --build-id=sha1 --eh-frame-hdr >> >> # strip rule for the .so file >> @@ -79,9 +90,9 @@ $(obj)/%.so: $(obj)/%.so.dbg FORCE >> # Generate VDSO offsets using helper script >> gen-vdsosym := $(src)/gen_vdso_offsets.sh >> quiet_cmd_vdsosym = VDSOSYM $@ >> - cmd_vdsosym = $(NM) $< | $(gen-vdsosym) | LC_ALL=C sort > $@ >> + cmd_vdsosym = $(NM) $< | $(gen-vdsosym) $(OFFSET_SUFFIX) | LC_ALL=C sort > $@ >> >> -include/generated/vdso-offsets.h: $(obj)/vdso.so.dbg FORCE >> +include/generated/$(vdso_offsets): $(obj)/$(vdso_so_dbg) FORCE >> $(call if_changed,vdsosym) >> >> # actual build commands >> diff --git a/arch/riscv/kernel/vdso/gen_vdso_offsets.sh b/arch/riscv/kernel/vdso/gen_vdso_offsets.sh >> index c2e5613f3495..bd5d5afaaa14 100755 >> --- a/arch/riscv/kernel/vdso/gen_vdso_offsets.sh >> +++ b/arch/riscv/kernel/vdso/gen_vdso_offsets.sh >> @@ -2,4 +2,6 @@ >> # SPDX-License-Identifier: GPL-2.0 >> >> LC_ALL=C >> -sed -n -e 's/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define \2_offset\t0x\1/p' >> +SUFFIX=${1:-""} >> +sed -n -e \ >> +'s/^[0]\+\(0[0-9a-fA-F]*\) . \(__vdso_[a-zA-Z0-9_]*\)$/\#define \2'$SUFFIX'_offset\t0x\1/p' >> diff --git a/arch/riscv/kernel/vdso_cfi/Makefile b/arch/riscv/kernel/vdso_cfi/Makefile >> new file mode 100644 >> index 000000000000..8ebd190782b0 >> --- /dev/null >> +++ b/arch/riscv/kernel/vdso_cfi/Makefile >> @@ -0,0 +1,25 @@ >> +# SPDX-License-Identifier: GPL-2.0-only >> +# RISC-V VDSO CFI Makefile >> +# This Makefile builds the VDSO with CFI support when CONFIG_RISCV_USER_CFI is enabled >> + >> +# setting VDSO_CFI_BUILD triggers build for vdso differently >> +VDSO_CFI_BUILD := 1 >> + >> +# Set the source directory to the main vdso directory >> +src := $(srctree)/arch/riscv/kernel/vdso >> + >> +# Copy all .S and .c files from vdso directory to vdso_cfi object build directory >> +vdso_c_sources := $(wildcard $(src)/*.c) >> +vdso_S_sources := $(wildcard $(src)/*.S) >> +vdso_c_objects := $(addprefix $(obj)/, $(notdir $(vdso_c_sources))) >> +vdso_S_objects := $(addprefix $(obj)/, $(notdir $(vdso_S_sources))) >> + >> +$(vdso_S_objects): $(obj)/%.S: $(src)/%.S >> + $(Q)cp $< $@ >> + >> +$(vdso_c_objects): $(obj)/%.c: $(src)/%.c >> + $(Q)cp $< $@ >> + >> +# Include the main VDSO Makefile which contains all the build rules and sources >> +# The VDSO_CFI_BUILD variable will be passed to it to enable CFI compilation >> +include $(src)/Makefile >> diff --git a/arch/riscv/kernel/vdso_cfi/vdso-cfi.S b/arch/riscv/kernel/vdso_cfi/vdso-cfi.S >> new file mode 100644 >> index 000000000000..d426f6accb35 >> --- /dev/null >> +++ b/arch/riscv/kernel/vdso_cfi/vdso-cfi.S >> @@ -0,0 +1,11 @@ >> +/* SPDX-License-Identifier: GPL-2.0-only */ >> +/* >> + * Copyright 2025 Rivos, Inc >> + */ >> + >> +#define vdso_start vdso_cfi_start >> +#define vdso_end vdso_cfi_end >> + >> +#define __VDSO_PATH "arch/riscv/kernel/vdso_cfi/vdso-cfi.so" >> + >> +#include "../vdso/vdso.S" >> >> -- >> 2.43.0 >> >> >> _______________________________________________ >> linux-riscv mailing list >> linux-riscv@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-riscv From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 7E8B4CCD183 for ; Thu, 16 Oct 2025 15:33:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References:Message-ID: Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=qnfgCAYP6pFD3vfw/SFCZVdoTm3wmRhLm+2ymVh7apk=; b=4oe9JsUWuKfustmEhImmvIIbsm +LhvKtcavEBe7QllKIWzc8lwqf32CVKiuPQqUop5HDogG59pYbtIAzlLgd2BDSccBUMSFXTCtArgB svk2rsEz3V6Hqtal6FiXFe9mGyJ4X40J0UlXQnzne566dCMyNqzo1vFA6A9OSxvljXRYxo2NcFSMT V7QFfMiyjDTNITwC01V4pO+xBOjpqQrOPXAqYBSxzWM+P2po9davJVgIzaqY9bQgJi9S9AWVKcenp e3w6SLI8Dm6RFZuGlJ7Zzy2D5Iaga+8Jx/+yD5LAbAU28YZWQ4AYPeqZkIjXoMV5UkW3MGRDO5R1o dydgZWgQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1v9PyO-00000005DCj-23l0; Thu, 16 Oct 2025 15:33:00 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1v9PyL-00000005DBY-3NDV for linux-riscv@lists.infradead.org; Thu, 16 Oct 2025 15:32:59 +0000 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-b4fb8d3a2dbso641908a12.3 for ; Thu, 16 Oct 2025 08:32:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc.com; s=google; t=1760628777; x=1761233577; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=3jxedNOWKQXyjZn7DBAQ8SlEmIZ51OVh5Hh6uRAtw9w=; b=DJHOl6DIjuv4T5/i/V9llJzPOyaRnUP9jON74snU5NWLr+gCb4T6eDGHuoUfjeQvBg phAA9x4IjX2J5wAU2A1SXdZigVD4IwschkCIsTFtIMFiDFJ9N0nUoPIbsyBMvgsqbpMp 24Xz57ViHuB6iaGVqPPr084g24D9EIEUcbkdZBh0N7STQyHpWT2UbhYkf6mkKJ5y/xLq WBDF3jeD6AazFPKXSNN7Pt6eoNDtkcL+/kwPF0UGGdRKtjegntgNVn0Yeegv9ZSWxmN8 fbBT89l4R5qRrX++oQckwI/wZEJPCIbrK4+wpCTlDo0gfBUkkwzPU3Sj/SyePoMkHoeK obGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760628777; x=1761233577; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3jxedNOWKQXyjZn7DBAQ8SlEmIZ51OVh5Hh6uRAtw9w=; b=dEhvI3vLTUDvfJraIa3d+LnQxjrZOqlWT20lQYjTCIxeKviJuVgji8DRjnzRusKNiP +Z+v4TcxSOxy1vRZjcDl0r2aAcJ1lZ+bW3OGHqMQxMNGe+fUvmTFFMogkuX1lH7gZ1RX RHxLNcSjyWdklIcwYpRCRXKdqCqq2Rl9OqM6Q2PhwDIJByEb1PbMjy8aD4XXMTaUu+I3 TYg7LBFx6CoUzshwRQKTLjc7yA4SNj/cVvpTP6e9LuxNYfbspHftwUnDvUtQBFW0+avH m1afZC4gt6LsIn3+zFyLNP2ddni8xjk5wkxIL63mIXi/w6qogTRt12IHWu9MGO4ihYnP 5XeA== X-Forwarded-Encrypted: i=1; AJvYcCWyLvfZT61DbLgGdbjrw1aj1t7sOSsluu9UfyKiUUQGDJniTDIDNW39sHebQDn0q2TzWANheBC22Hzm1w==@lists.infradead.org X-Gm-Message-State: AOJu0YwGXvR8Yfmezt6aki6cvxpvN25THzh6Q5Gm/HbS/e45PxYv5yqx 9nYVH/QaU/Apyn4KZNGNwti9MJPz8b4s0l6IkZCwzsqDTmgXUYCg8CrtIbJQQDdtfMo= X-Gm-Gg: ASbGnctKzaeqBF5/ZbaU/7SzXaVxZXwJBDb4opC/2B/vcof1VTvtSkW+pZIy5X8O3Yy zzyWp8RgRKzIh5XVBcdnHGU1ajZSfVfO4/8m8AyerVIitdXoK2T95sQhUlGeBfQBaD2ba/bh+9C S8KClIdlcFG77fnS/n0U1MiJFcUuMfyvehzaCnBF29mZNEten5CUKu8r8YM544uapUvQBIB2i9O nY5+Zrx8OzK0wJ4asoM1Lizm1c6bM3aCuWAMu3WaGseOEU9p1vFH7BbtXhpGyFI2wRhvur0wGUA +rIHZRk+A8Fdo68qWu8Ws+goeBblFc49agKi6A7jnQpsqfLkU523dWvz3yqx0ytnA6whGrW1H1c 8UQBzJjwKdBwlJpLoGiiOj2paiMdo75NcGfvqEiXTCclRUrH3cqytPHdD/tUY24P4uh8FvtXJt2 TPlwL7T+5GnA== X-Google-Smtp-Source: AGHT+IH84DeIB8c+VjuQrVSzDzT3x6nsRergbVWw29DX9ZseotGG3dDJsziVEnyxGDiXthj0SuB12g== X-Received: by 2002:a17:902:d483:b0:265:47:a7b0 with SMTP id d9443c01a7336-290c9c896a5mr3550315ad.10.1760628776645; Thu, 16 Oct 2025 08:32:56 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-29099348afcsm34256915ad.37.2025.10.16.08.32.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Oct 2025 08:32:56 -0700 (PDT) Date: Thu, 16 Oct 2025 08:32:53 -0700 From: Deepak Gupta To: Zong Li Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Lorenzo Stoakes , Paul Walmsley , Palmer Dabbelt , Albert Ou , Conor Dooley , Rob Herring , Krzysztof Kozlowski , Arnd Bergmann , Christian Brauner , Peter Zijlstra , Oleg Nesterov , Eric Biederman , Kees Cook , Jonathan Corbet , Shuah Khan , Jann Horn , Conor Dooley , Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?iso-8859-1?Q?Bj=F6rn?= Roy Baron , Andreas Hindborg , Alice Ryhl , Trevor Gross , Benno Lossin , linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, alistair.francis@wdc.com, richard.henderson@linaro.org, jim.shu@sifive.com, andybnac@gmail.com, kito.cheng@sifive.com, charlie@rivosinc.com, atishp@rivosinc.com, evan@rivosinc.com, cleger@rivosinc.com, alexghiti@rivosinc.com, samitolvanen@google.com, broonie@kernel.org, rick.p.edgecombe@intel.com, rust-for-linux@vger.kernel.org Subject: Re: [PATCH v20 24/28] arch/riscv: dual vdso creation logic and select vdso based on hw Message-ID: References: <20251013-v5_user_cfi_series-v20-0-b9de4be9912e@rivosinc.com> <20251013-v5_user_cfi_series-v20-24-b9de4be9912e@rivosinc.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20251016_083257_856099_E1900BD4 X-CRM114-Status: GOOD ( 26.47 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gVGh1LCBPY3QgMTYsIDIwMjUgYXQgMDQ6MzI6MDhQTSArMDgwMCwgWm9uZyBMaSB3cm90ZToK Pk9uIFR1ZSwgT2N0IDE0LCAyMDI1IGF0IDU6NTfigK9BTSBEZWVwYWsgR3VwdGEgPGRlYnVnQHJp dm9zaW5jLmNvbT4gd3JvdGU6Cj4+Cj4+IFNoYWRvdyBzdGFjayBpbnN0cnVjdGlvbnMgYXJlIHRh a2VuIGZyb20gemltb3AgKG1hbmRhdGVkIG9uIFJWQTIzKS4KPj4gQW55IGhhcmR3YXJlIHByaW9y IHRvIFJWQTIzIHByb2ZpbGUgd2lsbCBmYXVsdCBvbiBzaGFkbyBzdGFjayBpbnN0cnVjdGlvbi4K Pgo+SSBub3RpY2UgdGhhdCB0aGVyZSBpcyBhIHR5cG8gZm9yIHNoYWRvInciIHN0YWNrIGluc3Ry dWN0aW9uLgoKQWFoIHllcy4gU29ycnkgYWJvdXQgaXQgYW5kIHRoYW5rcy4KQWdhaW4gdXB0byBQ YXVsLCBpZiBoZSB3YW50cyBtZSB0byBzZW5kIGFub3RoZXIuIEknbGwgZG8gdGhhdC4KCi1EZWVw YWsKCj4KPj4gQW55IHVzZXJzcGFjZSB3aXRoIHNoYWRvdyBzdGFjayBpbnN0cnVjdGlvbiBpbiBp dCB3aWxsIGZhdWx0IG9uIHN1Y2gKPj4gaGFyZHdhcmUuIFRodXMgc3VjaCB1c2Vyc3BhY2UgY2Fu J3QgYmUgYnJvdWdodCBvbnRvIHN1Y2ggYSBoYXJkd2FyZS4KPj4KPj4gSXQncyBub3Qga25vd24g aG93IHVzZXJzcGFjZSB3aWxsIHJlc3BvbmQgdG8gc3VjaCBiaW5hcnkgZnJhZ21lbnRhdGlvbi4K Pj4gSG93ZXZlciBpbiBvcmRlciB0byBrZWVwIGtlcm5lbCBwb3J0YWJsZSBhY3Jvc3Mgc3VjaCBk aWZmZXJlbnQgaGFyZHdhcmUsCj4+IGBhcmNoL3Jpc2N2L2tlcm5lbC92ZHNvX2NmaWAgaXMgY3Jl YXRlZCB3aGljaCBoYXMgbG9naWMgKE1ha2VmaWxlKSB0bwo+PiBjb21waWxlIGBhcmNoL3Jpc2N2 L2tlcm5lbC92ZHNvYCBzb3VyY2VzIHdpdGggY2ZpIGZsYWdzIGFuZCB0aGVuIGNoYW5nZXMKPj4g aW4gYGFyY2gvcmlzY3Yva2VybmVsL3Zkc28uY2AgZm9yIHNlbGVjdGluZyBhcHByb3ByaWF0ZSB2 ZHNvIGRlcGVuZGluZwo+PiBvbiB3aGV0aGVyIHVuZGVybHlpbmcgaGFyZHdhcmUoY3B1KSBpbXBs ZW1lbnRzIHppbW9wIGV4dGVuc2lvbi4gT2Zmc2V0Cj4+IG9mIHZkc28gc3ltYm9scyB3aWxsIGNo YW5nZSBkdWUgdG8gaGF2aW5nIHR3byBkaWZmZXJlbnQgdmRzbyBiaW5hcmllcywKPj4gdGhlcmUg aXMgYWRkZWQgbG9naWMgdG8gaW5jbHVkZSBuZXcgZ2VuZXJhdGVkIHZkc28gb2Zmc2V0IGhlYWRl ciBhbmQKPj4gZHluYW1pY2FsbHkgc2VsZWN0IG9mZnNldCAobGlrZSBmb3IgcnRfc2lncmV0dXJu KS4KPj4KPj4gU2lnbmVkLW9mZi1ieTogRGVlcGFrIEd1cHRhIDxkZWJ1Z0ByaXZvc2luYy5jb20+ Cj4+IC0tLQo+PiAgYXJjaC9yaXNjdi9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgIHwg IDMgKysrCj4+ICBhcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Zkc28uaCAgICAgICAgICAgICAgfCAg NyArKysrKystCj4+ICBhcmNoL3Jpc2N2L2tlcm5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAg fCAgMSArCj4+ICBhcmNoL3Jpc2N2L2tlcm5lbC92ZHNvLmMgICAgICAgICAgICAgICAgICAgfCAg NyArKysrKysrCj4+ICBhcmNoL3Jpc2N2L2tlcm5lbC92ZHNvL01ha2VmaWxlICAgICAgICAgICAg fCAyOSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+PiAgYXJjaC9yaXNjdi9rZXJuZWwv dmRzby9nZW5fdmRzb19vZmZzZXRzLnNoIHwgIDQgKysrLQo+PiAgYXJjaC9yaXNjdi9rZXJuZWwv dmRzb19jZmkvTWFrZWZpbGUgICAgICAgIHwgMjUgKysrKysrKysrKysrKysrKysrKysrKysrKwo+ PiAgYXJjaC9yaXNjdi9rZXJuZWwvdmRzb19jZmkvdmRzby1jZmkuUyAgICAgIHwgMTEgKysrKysr KysrKysKPj4gIDggZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25z KC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L01ha2VmaWxlIGIvYXJjaC9yaXNjdi9N YWtlZmlsZQo+PiBpbmRleCBmNjBjMmRlMGNhMDguLmI3NGI2M2RhMTZhNyAxMDA2NDQKPj4gLS0t IGEvYXJjaC9yaXNjdi9NYWtlZmlsZQo+PiArKysgYi9hcmNoL3Jpc2N2L01ha2VmaWxlCj4+IEBA IC0xNzYsNiArMTc2LDggQEAgaWZlcSAoJChDT05GSUdfTU1VKSx5KQo+PiAgcHJlcGFyZTogdmRz b19wcmVwYXJlCj4+ICB2ZHNvX3ByZXBhcmU6IHByZXBhcmUwCj4+ICAgICAgICAgJChRKSQoTUFL RSkgJChidWlsZCk9YXJjaC9yaXNjdi9rZXJuZWwvdmRzbyBpbmNsdWRlL2dlbmVyYXRlZC92ZHNv LW9mZnNldHMuaAo+PiArICAgICAgICQoaWYgJChDT05GSUdfUklTQ1ZfVVNFUl9DRkkpLCQoUSkk KE1BS0UpIFwKPj4gKyAgICAgICAgICAgICAgICQoYnVpbGQpPWFyY2gvcmlzY3Yva2VybmVsL3Zk c29fY2ZpIGluY2x1ZGUvZ2VuZXJhdGVkL3Zkc28tY2ZpLW9mZnNldHMuaCkKPj4gICAgICAgICAk KGlmICQoQ09ORklHX0NPTVBBVCksJChRKSQoTUFLRSkgXAo+PiAgICAgICAgICAgICAgICAgJChi dWlsZCk9YXJjaC9yaXNjdi9rZXJuZWwvY29tcGF0X3Zkc28gaW5jbHVkZS9nZW5lcmF0ZWQvY29t cGF0X3Zkc28tb2Zmc2V0cy5oKQo+Pgo+PiBAQCAtMTgzLDYgKzE4NSw3IEBAIGVuZGlmCj4+ICBl bmRpZgo+Pgo+PiAgdmRzby1pbnN0YWxsLXkgICAgICAgICAgICAgICAgICs9IGFyY2gvcmlzY3Yv a2VybmVsL3Zkc28vdmRzby5zby5kYmcKPj4gK3Zkc28taW5zdGFsbC0kKENPTkZJR19SSVNDVl9V U0VSX0NGSSkgICs9IGFyY2gvcmlzY3Yva2VybmVsL3Zkc29fY2ZpL3Zkc28tY2ZpLnNvLmRiZwo+ PiAgdmRzby1pbnN0YWxsLSQoQ09ORklHX0NPTVBBVCkgICs9IGFyY2gvcmlzY3Yva2VybmVsL2Nv bXBhdF92ZHNvL2NvbXBhdF92ZHNvLnNvLmRiZwo+Pgo+PiAgQk9PVF9UQVJHRVRTIDo9IEltYWdl IEltYWdlLmd6IEltYWdlLmJ6MiBJbWFnZS5sejQgSW1hZ2UubHptYSBJbWFnZS5sem8gSW1hZ2Uu enN0IEltYWdlLnh6IGxvYWRlciBsb2FkZXIuYmluIHhpcEltYWdlIHZtbGludXouZWZpCj4+IGRp ZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Zkc28uaCBiL2FyY2gvcmlzY3YvaW5j bHVkZS9hc20vdmRzby5oCj4+IGluZGV4IGY4MDM1N2ZlMjRkMS4uM2ZjOGY3MmI4YmZiIDEwMDY0 NAo+PiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Zkc28uaAo+PiArKysgYi9hcmNoL3Jp c2N2L2luY2x1ZGUvYXNtL3Zkc28uaAo+PiBAQCAtMTgsOSArMTgsMTMgQEAKPj4KPj4gICNpZm5k ZWYgX19BU1NFTUJMRVJfXwo+PiAgI2luY2x1ZGUgPGdlbmVyYXRlZC92ZHNvLW9mZnNldHMuaD4K Pj4gKyNpbmNsdWRlIDxnZW5lcmF0ZWQvdmRzby1jZmktb2Zmc2V0cy5oPgo+Pgo+PiAgI2RlZmlu ZSBWRFNPX1NZTUJPTChiYXNlLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiAtICAgICAgICh2b2lkIF9fdXNlciAqKSgodW5z aWduZWQgbG9uZykoYmFzZSkgKyBfX3Zkc29fIyNuYW1lIyNfb2Zmc2V0KQo+PiArICAgICAgICgo SVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfVVNFUl9DRkkpICYmICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKPj4gKyAgICAgICAgIHJpc2N2X2hhc19leHRlbnNpb25fdW5saWtlbHko UklTQ1ZfSVNBX0VYVF9aSU1PUCkpID8gICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgICAo dm9pZCBfX3VzZXIgKikoKHVuc2lnbmVkIGxvbmcpKGJhc2UpICsgX192ZHNvXyMjbmFtZSMjX2Nm aV9vZmZzZXQpIDogXAo+PiArICAgICAgICAgKHZvaWQgX191c2VyICopKCh1bnNpZ25lZCBsb25n KShiYXNlKSArIF9fdmRzb18jI25hbWUjI19vZmZzZXQpKQo+Pgo+PiAgI2lmZGVmIENPTkZJR19D T01QQVQKPj4gICNpbmNsdWRlIDxnZW5lcmF0ZWQvY29tcGF0X3Zkc28tb2Zmc2V0cy5oPgo+PiBA QCAtMzMsNiArMzcsNyBAQCBleHRlcm4gY2hhciBjb21wYXRfdmRzb19zdGFydFtdLCBjb21wYXRf dmRzb19lbmRbXTsKPj4gICNlbmRpZiAvKiBDT05GSUdfQ09NUEFUICovCj4+Cj4+ICBleHRlcm4g Y2hhciB2ZHNvX3N0YXJ0W10sIHZkc29fZW5kW107Cj4+ICtleHRlcm4gY2hhciB2ZHNvX2NmaV9z dGFydFtdLCB2ZHNvX2NmaV9lbmRbXTsKPj4KPj4gICNlbmRpZiAvKiAhX19BU1NFTUJMRVJfXyAq Lwo+Pgo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUgYi9hcmNoL3Jp c2N2L2tlcm5lbC9NYWtlZmlsZQo+PiBpbmRleCAyZDBlMGRjZWRiZDMuLjkwMjY0MDBjYmExMCAx MDA2NDQKPj4gLS0tIGEvYXJjaC9yaXNjdi9rZXJuZWwvTWFrZWZpbGUKPj4gKysrIGIvYXJjaC9y aXNjdi9rZXJuZWwvTWFrZWZpbGUKPj4gQEAgLTcyLDYgKzcyLDcgQEAgb2JqLXkgKz0gdmVuZG9y X2V4dGVuc2lvbnMvCj4+ICBvYmoteSAgKz0gcHJvYmVzLwo+PiAgb2JqLXkgICs9IHRlc3RzLwo+ PiAgb2JqLSQoQ09ORklHX01NVSkgKz0gdmRzby5vIHZkc28vCj4+ICtvYmotJChDT05GSUdfUklT Q1ZfVVNFUl9DRkkpICs9IHZkc29fY2ZpLwo+Pgo+PiAgb2JqLSQoQ09ORklHX1JJU0NWX01JU0FM SUdORUQpICs9IHRyYXBzX21pc2FsaWduZWQubwo+PiAgb2JqLSQoQ09ORklHX1JJU0NWX01JU0FM SUdORUQpICs9IHVuYWxpZ25lZF9hY2Nlc3Nfc3BlZWQubwo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9y aXNjdi9rZXJuZWwvdmRzby5jIGIvYXJjaC9yaXNjdi9rZXJuZWwvdmRzby5jCj4+IGluZGV4IDNh OGUwMzhiMTBhMi4uYmYwODBlNTE5MTAxIDEwMDY0NAo+PiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5l bC92ZHNvLmMKPj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvdmRzby5jCj4+IEBAIC05OCw2ICs5 OCwxMyBAQCBzdGF0aWMgc3RydWN0IF9fdmRzb19pbmZvIGNvbXBhdF92ZHNvX2luZm8gX19yb19h ZnRlcl9pbml0ID0gewo+Pgo+PiAgc3RhdGljIGludCBfX2luaXQgdmRzb19pbml0KHZvaWQpCj4+ ICB7Cj4+ICsgICAgICAgLyogSGFydCBpbXBsZW1lbnRzIHppbW9wLCBleHBvc2UgY2ZpIGNvbXBp bGVkIHZkc28gKi8KPj4gKyAgICAgICBpZiAoSVNfRU5BQkxFRChDT05GSUdfUklTQ1ZfVVNFUl9D RkkpICYmCj4+ICsgICAgICAgICAgICAgICByaXNjdl9oYXNfZXh0ZW5zaW9uX3VubGlrZWx5KFJJ U0NWX0lTQV9FWFRfWklNT1ApKSB7Cj4+ICsgICAgICAgICAgICAgICB2ZHNvX2luZm8udmRzb19j b2RlX3N0YXJ0ID0gdmRzb19jZmlfc3RhcnQ7Cj4+ICsgICAgICAgICAgICAgICB2ZHNvX2luZm8u dmRzb19jb2RlX2VuZCA9IHZkc29fY2ZpX2VuZDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gICAgICAg ICBfX3Zkc29faW5pdCgmdmRzb19pbmZvKTsKPj4gICNpZmRlZiBDT05GSUdfQ09NUEFUCj4+ICAg ICAgICAgX192ZHNvX2luaXQoJmNvbXBhdF92ZHNvX2luZm8pOwo+PiBkaWZmIC0tZ2l0IGEvYXJj aC9yaXNjdi9rZXJuZWwvdmRzby9NYWtlZmlsZSBiL2FyY2gvcmlzY3Yva2VybmVsL3Zkc28vTWFr ZWZpbGUKPj4gaW5kZXggMjcyZjFkODM3YTgwLi5hODQyZGMwMzQ1NzEgMTAwNjQ0Cj4+IC0tLSBh L2FyY2gvcmlzY3Yva2VybmVsL3Zkc28vTWFrZWZpbGUKPj4gKysrIGIvYXJjaC9yaXNjdi9rZXJu ZWwvdmRzby9NYWtlZmlsZQo+PiBAQCAtMjAsNiArMjAsMTAgQEAgZW5kaWYKPj4gIGlmZGVmIFZE U09fQ0ZJX0JVSUxECj4+ICBDRklfTUFSQ0ggPSBfemljZmlscF96aWNmaXNzCj4+ICBDRklfRlVM TCA9IC1mY2YtcHJvdGVjdGlvbj1mdWxsCj4+ICtDRklfU1VGRklYID0gLWNmaQo+PiArT0ZGU0VU X1NVRkZJWCA9IF9jZmkKPj4gK2NjZmxhZ3MteSArPSAtRFZEU09fQ0ZJPTEKPj4gK2FzZmxhZ3Mt eSArPSAtRFZEU09fQ0ZJPTEKPj4gIGVuZGlmCj4+Cj4+ICAjIEZpbGVzIHRvIGxpbmsgaW50byB0 aGUgdmRzbwo+PiBAQCAtNDgsMTMgKzUyLDIwIEBAIGVuZGlmCj4+ICBDRkxBR1NfaHdwcm9iZS5v ICs9IC1mUElDCj4+Cj4+ICAjIEJ1aWxkIHJ1bGVzCj4+IC10YXJnZXRzIDo9ICQob2JqLXZkc28p IHZkc28uc28gdmRzby5zby5kYmcgdmRzby5sZHMKPj4gK3Zkc29fb2Zmc2V0cyA6PSB2ZHNvJChp ZiAkKFZEU09fQ0ZJX0JVSUxEKSwkKENGSV9TVUZGSVgpLCktb2Zmc2V0cy5oCj4+ICt2ZHNvX28g Oj0gdmRzbyQoaWYgJChWRFNPX0NGSV9CVUlMRCksJChDRklfU1VGRklYKSwpLm8KPj4gK3Zkc29f c28gOj0gdmRzbyQoaWYgJChWRFNPX0NGSV9CVUlMRCksJChDRklfU1VGRklYKSwpLnNvCj4+ICt2 ZHNvX3NvX2RiZyA6PSB2ZHNvJChpZiAkKFZEU09fQ0ZJX0JVSUxEKSwkKENGSV9TVUZGSVgpLCku c28uZGJnCj4+ICt2ZHNvX2xkcyA6PSB2ZHNvLmxkcwo+PiArCj4+ICt0YXJnZXRzIDo9ICQob2Jq LXZkc28pICQodmRzb19zbykgJCh2ZHNvX3NvX2RiZykgJCh2ZHNvX2xkcykKPj4gKwo+PiAgb2Jq LXZkc28gOj0gJChhZGRwcmVmaXggJChvYmopLywgJChvYmotdmRzbykpCj4+Cj4+IC1vYmoteSAr PSB2ZHNvLm8KPj4gLUNQUEZMQUdTX3Zkc28ubGRzICs9IC1QIC1DIC1VJChBUkNIKQo+PiArb2Jq LXkgKz0gdmRzbyQoaWYgJChWRFNPX0NGSV9CVUlMRCksJChDRklfU1VGRklYKSwpLm8KPj4gK0NQ UEZMQUdTXyQodmRzb19sZHMpICs9IC1QIC1DIC1VJChBUkNIKQo+PiAgaWZuZXEgKCQoZmlsdGVy IHZnZXR0aW1lb2ZkYXksICQodmRzby1zeW1zKSksKQo+PiAtQ1BQRkxBR1NfdmRzby5sZHMgKz0g LURIQVNfVkdFVFRJTUVPRkRBWQo+PiArQ1BQRkxBR1NfJCh2ZHNvX2xkcykgKz0gLURIQVNfVkdF VFRJTUVPRkRBWQo+PiAgZW5kaWYKPj4KPj4gICMgRGlzYWJsZSAtcGcgdG8gcHJldmVudCBpbnNl cnQgY2FsbCBzaXRlCj4+IEBAIC02MywxMiArNzQsMTIgQEAgQ0ZMQUdTX1JFTU9WRV9nZXRyYW5k b20ubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKSAkKENDX0ZMQUdTX1NDUykKPj4gIENGTEFHU19SRU1P VkVfaHdwcm9iZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpICQoQ0NfRkxBR1NfU0NTKQo+Pgo+PiAg IyBGb3JjZSBkZXBlbmRlbmN5Cj4+IC0kKG9iaikvdmRzby5vOiAkKG9iaikvdmRzby5zbwo+PiAr JChvYmopLyQodmRzb19vKTogJChvYmopLyQodmRzb19zbykKPj4KPj4gICMgbGluayBydWxlIGZv ciB0aGUgLnNvIGZpbGUsIC5sZHMgaGFzIHRvIGJlIGZpcnN0Cj4+IC0kKG9iaikvdmRzby5zby5k Ymc6ICQob2JqKS92ZHNvLmxkcyAkKG9iai12ZHNvKSBGT1JDRQo+PiArJChvYmopLyQodmRzb19z b19kYmcpOiAkKG9iaikvJCh2ZHNvX2xkcykgJChvYmotdmRzbykgRk9SQ0UKPj4gICAgICAgICAk KGNhbGwgaWZfY2hhbmdlZCx2ZHNvbGRfYW5kX2NoZWNrKQo+PiAtTERGTEFHU192ZHNvLnNvLmRi ZyA9IC1zaGFyZWQgLXNvbmFtZT1saW51eC12ZHNvLnNvLjEgXAo+PiArTERGTEFHU18kKHZkc29f c29fZGJnKSA9IC1zaGFyZWQgLXNvbmFtZT1saW51eC12ZHNvLnNvLjEgXAo+PiAgICAgICAgIC0t YnVpbGQtaWQ9c2hhMSAtLWVoLWZyYW1lLWhkcgo+Pgo+PiAgIyBzdHJpcCBydWxlIGZvciB0aGUg LnNvIGZpbGUKPj4gQEAgLTc5LDkgKzkwLDkgQEAgJChvYmopLyUuc286ICQob2JqKS8lLnNvLmRi ZyBGT1JDRQo+PiAgIyBHZW5lcmF0ZSBWRFNPIG9mZnNldHMgdXNpbmcgaGVscGVyIHNjcmlwdAo+ PiAgZ2VuLXZkc29zeW0gOj0gJChzcmMpL2dlbl92ZHNvX29mZnNldHMuc2gKPj4gIHF1aWV0X2Nt ZF92ZHNvc3ltID0gVkRTT1NZTSAkQAo+PiAtICAgICAgIGNtZF92ZHNvc3ltID0gJChOTSkgJDwg fCAkKGdlbi12ZHNvc3ltKSB8IExDX0FMTD1DIHNvcnQgPiAkQAo+PiArICAgICAgIGNtZF92ZHNv c3ltID0gJChOTSkgJDwgfCAkKGdlbi12ZHNvc3ltKSAkKE9GRlNFVF9TVUZGSVgpIHwgTENfQUxM PUMgc29ydCA+ICRACj4+Cj4+IC1pbmNsdWRlL2dlbmVyYXRlZC92ZHNvLW9mZnNldHMuaDogJChv YmopL3Zkc28uc28uZGJnIEZPUkNFCj4+ICtpbmNsdWRlL2dlbmVyYXRlZC8kKHZkc29fb2Zmc2V0 cyk6ICQob2JqKS8kKHZkc29fc29fZGJnKSBGT1JDRQo+PiAgICAgICAgICQoY2FsbCBpZl9jaGFu Z2VkLHZkc29zeW0pCj4+Cj4+ICAjIGFjdHVhbCBidWlsZCBjb21tYW5kcwo+PiBkaWZmIC0tZ2l0 IGEvYXJjaC9yaXNjdi9rZXJuZWwvdmRzby9nZW5fdmRzb19vZmZzZXRzLnNoIGIvYXJjaC9yaXNj di9rZXJuZWwvdmRzby9nZW5fdmRzb19vZmZzZXRzLnNoCj4+IGluZGV4IGMyZTU2MTNmMzQ5NS4u YmQ1ZDVhZmFhYTE0IDEwMDc1NQo+PiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC92ZHNvL2dlbl92 ZHNvX29mZnNldHMuc2gKPj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvdmRzby9nZW5fdmRzb19v ZmZzZXRzLnNoCj4+IEBAIC0yLDQgKzIsNiBAQAo+PiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+Pgo+PiAgTENfQUxMPUMKPj4gLXNlZCAtbiAtZSAncy9eWzBdXCtcKDBbMC05 YS1mQS1GXSpcKSAuIFwoX192ZHNvX1thLXpBLVowLTlfXSpcKSQvXCNkZWZpbmUgXDJfb2Zmc2V0 XHQweFwxL3AnCj4+ICtTVUZGSVg9JHsxOi0iIn0KPj4gK3NlZCAtbiAtZSBcCj4+ICsncy9eWzBd XCtcKDBbMC05YS1mQS1GXSpcKSAuIFwoX192ZHNvX1thLXpBLVowLTlfXSpcKSQvXCNkZWZpbmUg XDInJFNVRkZJWCdfb2Zmc2V0XHQweFwxL3AnCj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tl cm5lbC92ZHNvX2NmaS9NYWtlZmlsZSBiL2FyY2gvcmlzY3Yva2VybmVsL3Zkc29fY2ZpL01ha2Vm aWxlCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uOGViZDE5 MDc4MmIwCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvYXJjaC9yaXNjdi9rZXJuZWwvdmRzb19j ZmkvTWFrZWZpbGUKPj4gQEAgLTAsMCArMSwyNSBAQAo+PiArIyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5Cj4+ICsjIFJJU0MtViBWRFNPIENGSSBNYWtlZmlsZQo+PiArIyBU aGlzIE1ha2VmaWxlIGJ1aWxkcyB0aGUgVkRTTyB3aXRoIENGSSBzdXBwb3J0IHdoZW4gQ09ORklH X1JJU0NWX1VTRVJfQ0ZJIGlzIGVuYWJsZWQKPj4gKwo+PiArIyBzZXR0aW5nIFZEU09fQ0ZJX0JV SUxEIHRyaWdnZXJzIGJ1aWxkIGZvciB2ZHNvIGRpZmZlcmVudGx5Cj4+ICtWRFNPX0NGSV9CVUlM RCA6PSAxCj4+ICsKPj4gKyMgU2V0IHRoZSBzb3VyY2UgZGlyZWN0b3J5IHRvIHRoZSBtYWluIHZk c28gZGlyZWN0b3J5Cj4+ICtzcmMgOj0gJChzcmN0cmVlKS9hcmNoL3Jpc2N2L2tlcm5lbC92ZHNv Cj4+ICsKPj4gKyMgQ29weSBhbGwgLlMgYW5kIC5jIGZpbGVzIGZyb20gdmRzbyBkaXJlY3Rvcnkg dG8gdmRzb19jZmkgb2JqZWN0IGJ1aWxkIGRpcmVjdG9yeQo+PiArdmRzb19jX3NvdXJjZXMgOj0g JCh3aWxkY2FyZCAkKHNyYykvKi5jKQo+PiArdmRzb19TX3NvdXJjZXMgOj0gJCh3aWxkY2FyZCAk KHNyYykvKi5TKQo+PiArdmRzb19jX29iamVjdHMgOj0gJChhZGRwcmVmaXggJChvYmopLywgJChu b3RkaXIgJCh2ZHNvX2Nfc291cmNlcykpKQo+PiArdmRzb19TX29iamVjdHMgOj0gJChhZGRwcmVm aXggJChvYmopLywgJChub3RkaXIgJCh2ZHNvX1Nfc291cmNlcykpKQo+PiArCj4+ICskKHZkc29f U19vYmplY3RzKTogJChvYmopLyUuUzogJChzcmMpLyUuUwo+PiArICAgICAgICQoUSljcCAkPCAk QAo+PiArCj4+ICskKHZkc29fY19vYmplY3RzKTogJChvYmopLyUuYzogJChzcmMpLyUuYwo+PiAr ICAgICAgICQoUSljcCAkPCAkQAo+PiArCj4+ICsjIEluY2x1ZGUgdGhlIG1haW4gVkRTTyBNYWtl ZmlsZSB3aGljaCBjb250YWlucyBhbGwgdGhlIGJ1aWxkIHJ1bGVzIGFuZCBzb3VyY2VzCj4+ICsj IFRoZSBWRFNPX0NGSV9CVUlMRCB2YXJpYWJsZSB3aWxsIGJlIHBhc3NlZCB0byBpdCB0byBlbmFi bGUgQ0ZJIGNvbXBpbGF0aW9uCj4+ICtpbmNsdWRlICQoc3JjKS9NYWtlZmlsZQo+PiBkaWZmIC0t Z2l0IGEvYXJjaC9yaXNjdi9rZXJuZWwvdmRzb19jZmkvdmRzby1jZmkuUyBiL2FyY2gvcmlzY3Yv a2VybmVsL3Zkc29fY2ZpL3Zkc28tY2ZpLlMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5k ZXggMDAwMDAwMDAwMDAwLi5kNDI2ZjZhY2NiMzUKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9h cmNoL3Jpc2N2L2tlcm5lbC92ZHNvX2NmaS92ZHNvLWNmaS5TCj4+IEBAIC0wLDAgKzEsMTEgQEAK Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8KPj4gKy8qCj4+ ICsgKiBDb3B5cmlnaHQgMjAyNSBSaXZvcywgSW5jCj4+ICsgKi8KPj4gKwo+PiArI2RlZmluZSAg ICAgICAgdmRzb19zdGFydCAgICAgIHZkc29fY2ZpX3N0YXJ0Cj4+ICsjZGVmaW5lICAgICAgICB2 ZHNvX2VuZCAgICAgICAgdmRzb19jZmlfZW5kCj4+ICsKPj4gKyNkZWZpbmUgX19WRFNPX1BBVEgg ImFyY2gvcmlzY3Yva2VybmVsL3Zkc29fY2ZpL3Zkc28tY2ZpLnNvIgo+PiArCj4+ICsjaW5jbHVk ZSAiLi4vdmRzby92ZHNvLlMiCj4+Cj4+IC0tCj4+IDIuNDMuMAo+Pgo+Pgo+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBsaW51eC1yaXNjdiBtYWls aW5nIGxpc3QKPj4gbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwo+PiBodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1yaXNjdiBtYWlsaW5n IGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJpc2N2Cg==