From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f182.google.com (mail-pf1-f182.google.com [209.85.210.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40A2E1991BF for ; Thu, 24 Apr 2025 03:17:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.182 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745464625; cv=none; b=qLd1d6NBHx92iPgEkUNzikkBwzFc72Wg0Kr1QhaPEKW6Km96kV6JmAXPz6m1dOwao/87GA/XXyRdlhP9lGGfvy6lO+IGixtd2zbihNyGJ1qDOuE/heFeoE7yKN9nkQO/Kg0mVszp9TRN9UbvzzGmfFPFACvSHkBR9JD+liwjYjU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745464625; c=relaxed/simple; bh=UVCFOg19+s13dmCTwGHiyBdefPnTw16zPmpkfRlg8hA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=NlBVQiHaNDPlZiLiASKtmk3hRp34ETtgCNOQo8NuHmYBuadV03O4TTfsjwU2JSw+8v0zXxRmW06LAwOEzn3WwZ+YrQVQdBlwD/eyM9zneKUiuI+jhDDYgXwmpYmrM9GZaHRC/GZjHh6jXeeVgh+XeBcYz9jTWIEsVsNGofesDfA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=kL521BJ1; arc=none smtp.client-ip=209.85.210.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (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.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="kL521BJ1" Received: by mail-pf1-f182.google.com with SMTP id d2e1a72fcca58-736a7e126c7so411964b3a.3 for ; Wed, 23 Apr 2025 20:17:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745464622; x=1746069422; 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=XUAwJhWsStgPPiYel2m5dmuZ8PujmZM+CaGE2sUsiqI=; b=kL521BJ1GCIh/6lApmzBn9i2whQlemVa9/Exj/8nk2M90qz/RlpVMtbsyxMmxh9SdM 6a6KF+tHiHMn/sJYVfJbI0F8h+a1kK0il/Zyv2/aBl/ffi8WFvVJlAojLzyCNrYSCITG zigNEJySmaSRFJ41TwLE+wYQSn+VAadnGYF3z8tp/Nk49W5XF4fzRjucmpipPvzQBeKQ WJcIRQAuMeLDZKSqthk3gWD2wNrA2+r4VOfvLrGI/WSDwFY4jb5gh+A5KatKo7LKlep1 uqK/9UhmbOi10zO5fB+kLWqRq5bSO6d6G/kSSbaAwtKOdUgICn6KdthBXCkKEcT86d2i XR7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745464622; x=1746069422; 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=XUAwJhWsStgPPiYel2m5dmuZ8PujmZM+CaGE2sUsiqI=; b=FTTayJXf2Vs/WA7RgZNEn310oKMWVyNj/7juJP93r1JKZjusBD9IMHNnsvq3I+p6fO LHsV+Iky0ZrcNOB6CCIdhBLXzSKN1m9xvvSvJJx2tc5FpbwaCj2aqgN0+KIco3RGfIcQ uMymMHZXVCTKa55Q0EpVZkOpY7uQnKr4aXpcKNuQ+rIkfs/MxXMnQsbm1YxrFWO4KRC3 sh41rSQdiGNLBmLJ33UF6gi0N3zfL4P/3ixGV+lQ3zBxnY66IBXFv9MZKFZU7Bz6xvUZ MPV4b8am1bn254CLvqNteQX5nmp2wc55AQkLEhuKnbf8S2tPi9S4O9Vk/SPLW+WUgEEW /Pkg== X-Forwarded-Encrypted: i=1; AJvYcCXwR0YmwG4Nv5hrWfWFjoAw8VCBiRg479DWGUC8MJbppzIKy2c6O+Qhg4g61WCW4HPwmB4kGSTzNyi2@vger.kernel.org X-Gm-Message-State: AOJu0YwjbIKPfB+PDn6vNnGzvHV2LG7BEGm/WYBBQX0jD5lhh4MxD9T8 UWOTKBgx+ltofqC4ddXjKm2AnVND5RQ3XbFCnicTFJfL3UgccUBOdeaj9gSFrp4= X-Gm-Gg: ASbGncvyVnzU4GW4t1ttRjSkGpPcj3KZfUV/qSF80MM1ZaU3WiV0FsDnl8A9LhvS9mn JK8D9js3pOMNU/W/LZw9PYJFmwrZYSyxcsiyAhuZldw2rFTNRTBjOgJpsxj5Y/PgRKTlPYIPuBl Yk9+fU7X2kO9azV18PPlzFDmigXTeL126+lnPsX7EN8o0ccgh8ZoCqc6Vdge/rDCJXxqBSWUC8k PIo+ZboWHsH0PD43wvRdJCowWCI6nveQqwTlG+mHM5Laxj46wBgJX/igTYl0O3P9vJelcv9K+6L eQ+OwM2JF78Di81ldChM21TIHpuWrUR/3trGFq/2wMsvo3Bf43g= X-Google-Smtp-Source: AGHT+IHFdvA0DlIcVCkE1m7fhwPnPK/+qUF0hzp1UIxp5PRqy2sOJJ28/GW1knmKmyzytkf5QLtSrA== X-Received: by 2002:a05:6a20:9f4f:b0:1f5:9208:3ad6 with SMTP id adf61e73a8af0-20444f9f316mr1339520637.41.1745464622463; Wed, 23 Apr 2025 20:17:02 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73e25941fd9sm354190b3a.53.2025.04.23.20.16.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Apr 2025 20:17:02 -0700 (PDT) Date: Wed, 23 Apr 2025 20:16:58 -0700 From: Deepak Gupta To: Radim =?utf-8?B?S3LEjW3DocWZ?= 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 , 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, Zong Li , linux-riscv Subject: Re: [PATCH v12 10/28] riscv/mm: Implement map_shadow_stack() syscall Message-ID: References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-10-e51202b53138@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, Apr 10, 2025 at 11:56:44AM +0200, Radim Krčmář wrote: >2025-03-14T14:39:29-07:00, Deepak Gupta : >> As discussed extensively in the changelog for the addition of this >> syscall on x86 ("x86/shstk: Introduce map_shadow_stack syscall") the >> existing mmap() and madvise() syscalls do not map entirely well onto the >> security requirements for shadow stack memory since they lead to windows >> where memory is allocated but not yet protected or stacks which are not >> properly and safely initialised. Instead a new syscall map_shadow_stack() >> has been defined which allocates and initialises a shadow stack page. >> >> This patch implements this syscall for riscv. riscv doesn't require token >> to be setup by kernel because user mode can do that by itself. However to >> provide compatibility and portability with other architectues, user mode >> can specify token set flag. > >RISC-V shadow stack could use mmap() and madvise() perfectly well. Deviating from what other arches are doing will create more thrash. I expect there will be merging of common logic between x86, arm64 and riscv. Infact I did post one such RFC patch set last year (didn't follow up on it). Using `mmap/madvise` defeats that purpose of creating common logic between arches. There are pitfalls as mentioned with respect to mmap/madivse because of unique nature of shadow stack. And thus it was accepted to create a new syscall to create such mappings. RISC-V will stick to that. >Userspace can always initialize the shadow stack properly and the shadow >stack memory is never protected from other malicious threads. Shadow stack memory is protected from inadvertent stores (be it same thread or a different thread in same address space). Malicious code which can do `sspush/ssamoswap` already assumes that code integrity policies are broken. > >I think that the compatibility argument is reasonable. We'd need to >modify the other syscalls to allow a write-only mapping anyway. > >> diff --git a/arch/riscv/kernel/usercfi.c b/arch/riscv/kernel/usercfi.c >> +static noinline unsigned long amo_user_shstk(unsigned long *addr, unsigned long val) >> +{ >> + /* >> + * Never expect -1 on shadow stack. Expect return addresses and zero >> + */ >> + unsigned long swap = -1; >> + __enable_user_access(); >> + asm goto( >> + ".option push\n" >> + ".option arch, +zicfiss\n" > >Shouldn't compiler accept ssamoswap.d opcode even without zicfiss arch? Its illegal instruction if shadow stack aren't available. Current toolchain emits it only if zicfiss is specified in march. > >> + "1: ssamoswap.d %[swap], %[val], %[addr]\n" >> + _ASM_EXTABLE(1b, %l[fault]) >> + RISCV_ACQUIRE_BARRIER > >Why is the barrier here? IIRC, I was following `arch_cmpxchg_acquire`. But I think that's not needed. What we are doing is `arch_xchg_relaxed` and barrier is not needed. I did consider adding it to arch/riscv/include/asm/cmpxchg.h but there is limited usage of this primitive and thus kept it limited to usercfi.c Anyways I'll re-spin removing the barrier. > >> + ".option pop\n" >> + : [swap] "=r" (swap), [addr] "+A" (*addr) >> + : [val] "r" (val) >> + : "memory" >> + : fault >> + ); >> + __disable_user_access(); >> + return swap; >> +fault: >> + __disable_user_access(); >> + return -1; > >I think we should return 0 and -EFAULT. >We can ignore the swapped value, or return it through a pointer. Consumer of this detects -1 and then return -EFAULT. We would eventually need this when creating shadow stack tokens for kernel shadow stack. I believe `-1` is safe return value which can't be construed as negative kernel address (-EFAULT will be) > >> +} >> + >> +static unsigned long allocate_shadow_stack(unsigned long addr, unsigned long size, >> + unsigned long token_offset, bool set_tok) >> +{ >> + int flags = MAP_ANONYMOUS | MAP_PRIVATE; > >Is MAP_GROWSDOWN pointless? Not sure. Didn't see that in x86 or arm64 shadow stack creation. Let me know if its useful. > >> + struct mm_struct *mm = current->mm; >> + unsigned long populate, tok_loc = 0; >> + >> + if (addr) >> + flags |= MAP_FIXED_NOREPLACE; >> + >> + mmap_write_lock(mm); >> + addr = do_mmap(NULL, addr, size, PROT_READ, flags, > >PROT_READ implies VM_READ, so won't this select PAGE_COPY in the >protection_map instead of PAGE_SHADOWSTACK? PROT_READ is pointless here and redundant. I haven't checked if I remove it what happens. `VM_SHADOW_STACK` takes precedence (take a look at pte_mkwrite and pmd_mkwrite. Only way `VM_SHADOW_STACK` is possible in vmflags is via `map_shadow_stack` or `fork/clone` on existing task with shadow stack enabled. In a nutshell user can't specify `VM_SHADOW_STACK` directly (indirectly via map_shadow_stack syscall or fork/clone) . But if set in vmaflags then it'll take precedence. > >Wouldn't avoiding VM_READ also allow us to get rid of the ugly hack in >pte_mkwrite? (VM_WRITE would naturally select the right XWR flags.) > >> + VM_SHADOW_STACK | VM_WRITE, 0, &populate, NULL); >> + mmap_write_unlock(mm); >> + >> +SYSCALL_DEFINE3(map_shadow_stack, unsigned long, addr, unsigned long, size, unsigned int, flags) >> +{ >> [...] >> + if (addr && (addr & (PAGE_SIZE - 1))) > >if (!PAGE_ALIGNED(addr)) 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 8AD66C369CB for ; Thu, 24 Apr 2025 03:17:16 +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=5i5ywIDj5zBaiXYfGvpgHydyMZTD6lxRJYQWJrHR+Cc=; b=JsGtGWWAv/GRB37teXJKfzGr35 zvWkY+HuNkFnbG+h75+Vfs5ZrFkxBLMmMqHL1fka3qDoKbtXm7TzLf1Zuw8UeOtw64yRhpYD2zyMI MB6JsQsPBhd4BQwYkl0tYtlZ6CgKIHX0x8HgFirD4hT+DWvBXt4atR79sSY2f687MySElLcAVMqQk /MYWcI1iaWMuJCxRW1HkU9adrz5JUuMDViQrImrijLdWvz6/kmWdvrI4GggM1jOxBia5UYNmHTY9h 7brdfNIzFslviS+nafJst/dZZ4eVcDG98TkAnPezWvUnsRf5pOtu7iIOnoIARhlOsta+7qGXBRAH6 jtO7rt7g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u7n5I-0000000Cibp-2QRC; Thu, 24 Apr 2025 03:17:08 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u7n5D-0000000CiZT-1rRz for linux-riscv@lists.infradead.org; Thu, 24 Apr 2025 03:17:06 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-73bb647eb23so414834b3a.0 for ; Wed, 23 Apr 2025 20:17:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745464622; x=1746069422; 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=XUAwJhWsStgPPiYel2m5dmuZ8PujmZM+CaGE2sUsiqI=; b=nhkF/jho2Madi3YXqORbl2kcyg8Hw+dYHej8bt0UxIGvpqj7+Nxx5SuFqb1kGJiXeO o9/YShjcGKrYE9DzQQB9lZBdg36VfeS671todLqK9jvbBa+5mmUFW/RtqucOCq5TUSn7 pQqmB/u5/NJSDOKc/BewYa6+MtD+oNbXBTpXkgvfNvS3C1VCCCF4tVCGCxlcdhNWgqKv hc8lJWOYIWeCAHT9TIVa4yUklvDdHQuiZwJmFY/qdim+dRADeGV+7SO3iZO4bjGSUfFi Z5KQbaZnGBPozbGCawIqQreO9Ik7OODnpQwB8xL/pvGspXVDiJZirkd1Z8tXFSZzQmGi ExQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745464622; x=1746069422; 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=XUAwJhWsStgPPiYel2m5dmuZ8PujmZM+CaGE2sUsiqI=; b=sImbV0kdjJ+CIzPz0/73cqu8zLwIu+zK0xlPNNOSfCisgCdMaxr9Uu0DvjRPBn9nRX IfnZJmTiYwWASAV0gP9jKzTtN43+Rbux4pPF0Vk6Iq+o3SyB2zC3NdAkRDCp/UfdqiH9 yDFbC+LCK6uKw12Wh0zkvZ6YNMEXh++gpPK6vo4pWlPfE/YnwingawqPPUDpPafFYP3j Eozk/15hlzqbpq333J5CuCmtdhvWMmbPJqmiS/vGvUIrZccp7HMqtvGM0Cff/4N9d85l fKckwaIvpnQh24qadQ5lTGXvOKFnD3JtwSXh20dN9lWf2LgDntsXVAJsglomDIQxeClz /1dA== X-Forwarded-Encrypted: i=1; AJvYcCXrf60paSK5xWxznjc1cwE5iYa0BeHkVbMaOYON4eU1yov7AOBQhtdN1RpOT5vIqsV7kCmU5uoEcX17vA==@lists.infradead.org X-Gm-Message-State: AOJu0YzwgVqsG8oDfIvvqxRXdrGffPgiPn6JsVEU5SBzwtb9f0TfA3Eu dPQGI8x80oh0+DoOC9Sy7bc1ul4X20Qe9h4zuDf1PX33mKFDHUj9cSKnq2Q7+XY= X-Gm-Gg: ASbGnctv+hTOInluO6PRDfe/OH+MPWcG5TCAynBnnK5WZ55NpttTtzkuqSBr5+yaE+D sqnusJLgvX8avYj6i93iLcMFak2frMk6CvfrHJkep2p7nSGRAPoe2lkcsr1cla/D7JNZR9IL8UZ U6Y1+YCO9DbYU0xiNIODV6ioXhsEzWQT4pjNxhzz5eEP/GGovRvlPTrF7JgcQS3vjUp5CxLl7Cw Zlpko5vgOb0Zvfm1v8PepRWr5dEzgbnFJzwOe6rLdlqZv0+/Z0bCEFsEOnHNV4l25cX2ZC+eFjQ AHbJfBgwIHyBsVHzph2lPc3Ya0w3XauSBdqt1mlvjCZ2wKAgQNE= X-Google-Smtp-Source: AGHT+IHFdvA0DlIcVCkE1m7fhwPnPK/+qUF0hzp1UIxp5PRqy2sOJJ28/GW1knmKmyzytkf5QLtSrA== X-Received: by 2002:a05:6a20:9f4f:b0:1f5:9208:3ad6 with SMTP id adf61e73a8af0-20444f9f316mr1339520637.41.1745464622463; Wed, 23 Apr 2025 20:17:02 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73e25941fd9sm354190b3a.53.2025.04.23.20.16.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Apr 2025 20:17:02 -0700 (PDT) Date: Wed, 23 Apr 2025 20:16:58 -0700 From: Deepak Gupta To: Radim =?utf-8?B?S3LEjW3DocWZ?= 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 , 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, Zong Li , linux-riscv Subject: Re: [PATCH v12 10/28] riscv/mm: Implement map_shadow_stack() syscall Message-ID: References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-10-e51202b53138@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-20250423_201703_689645_560A6C4E X-CRM114-Status: GOOD ( 27.03 ) 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 T24gVGh1LCBBcHIgMTAsIDIwMjUgYXQgMTE6NTY6NDRBTSArMDIwMCwgUmFkaW0gS3LEjW3DocWZ IHdyb3RlOgo+MjAyNS0wMy0xNFQxNDozOToyOS0wNzowMCwgRGVlcGFrIEd1cHRhIDxkZWJ1Z0By aXZvc2luYy5jb20+Ogo+PiBBcyBkaXNjdXNzZWQgZXh0ZW5zaXZlbHkgaW4gdGhlIGNoYW5nZWxv ZyBmb3IgdGhlIGFkZGl0aW9uIG9mIHRoaXMKPj4gc3lzY2FsbCBvbiB4ODYgKCJ4ODYvc2hzdGs6 IEludHJvZHVjZSBtYXBfc2hhZG93X3N0YWNrIHN5c2NhbGwiKSB0aGUKPj4gZXhpc3RpbmcgbW1h cCgpIGFuZCBtYWR2aXNlKCkgc3lzY2FsbHMgZG8gbm90IG1hcCBlbnRpcmVseSB3ZWxsIG9udG8g dGhlCj4+IHNlY3VyaXR5IHJlcXVpcmVtZW50cyBmb3Igc2hhZG93IHN0YWNrIG1lbW9yeSBzaW5j ZSB0aGV5IGxlYWQgdG8gd2luZG93cwo+PiB3aGVyZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGJ1dCBu b3QgeWV0IHByb3RlY3RlZCBvciBzdGFja3Mgd2hpY2ggYXJlIG5vdAo+PiBwcm9wZXJseSBhbmQg c2FmZWx5IGluaXRpYWxpc2VkLiBJbnN0ZWFkIGEgbmV3IHN5c2NhbGwgbWFwX3NoYWRvd19zdGFj aygpCj4+IGhhcyBiZWVuIGRlZmluZWQgd2hpY2ggYWxsb2NhdGVzIGFuZCBpbml0aWFsaXNlcyBh IHNoYWRvdyBzdGFjayBwYWdlLgo+Pgo+PiBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhpcyBzeXNj YWxsIGZvciByaXNjdi4gcmlzY3YgZG9lc24ndCByZXF1aXJlIHRva2VuCj4+IHRvIGJlIHNldHVw IGJ5IGtlcm5lbCBiZWNhdXNlIHVzZXIgbW9kZSBjYW4gZG8gdGhhdCBieSBpdHNlbGYuIEhvd2V2 ZXIgdG8KPj4gcHJvdmlkZSBjb21wYXRpYmlsaXR5IGFuZCBwb3J0YWJpbGl0eSB3aXRoIG90aGVy IGFyY2hpdGVjdHVlcywgdXNlciBtb2RlCj4+IGNhbiBzcGVjaWZ5IHRva2VuIHNldCBmbGFnLgo+ Cj5SSVNDLVYgc2hhZG93IHN0YWNrIGNvdWxkIHVzZSBtbWFwKCkgYW5kIG1hZHZpc2UoKSBwZXJm ZWN0bHkgd2VsbC4KCkRldmlhdGluZyBmcm9tIHdoYXQgb3RoZXIgYXJjaGVzIGFyZSBkb2luZyB3 aWxsIGNyZWF0ZSBtb3JlIHRocmFzaC4gSSBleHBlY3QKdGhlcmUgd2lsbCBiZSBtZXJnaW5nIG9m IGNvbW1vbiBsb2dpYyBiZXR3ZWVuIHg4NiwgYXJtNjQgYW5kIHJpc2N2LiBJbmZhY3QgSQpkaWQg cG9zdCBvbmUgc3VjaCBSRkMgcGF0Y2ggc2V0IGxhc3QgeWVhciAoZGlkbid0IGZvbGxvdyB1cCBv biBpdCkuIFVzaW5nCmBtbWFwL21hZHZpc2VgIGRlZmVhdHMgdGhhdCBwdXJwb3NlIG9mIGNyZWF0 aW5nIGNvbW1vbiBsb2dpYyBiZXR3ZWVuIGFyY2hlcy4KClRoZXJlIGFyZSBwaXRmYWxscyBhcyBt ZW50aW9uZWQgd2l0aCByZXNwZWN0IHRvIG1tYXAvbWFkaXZzZSBiZWNhdXNlIG9mCnVuaXF1ZSBu YXR1cmUgb2Ygc2hhZG93IHN0YWNrLiBBbmQgdGh1cyBpdCB3YXMgYWNjZXB0ZWQgdG8gY3JlYXRl IGEgbmV3IHN5c2NhbGwKdG8gY3JlYXRlIHN1Y2ggbWFwcGluZ3MuIFJJU0MtViB3aWxsIHN0aWNr IHRvIHRoYXQuCgo+VXNlcnNwYWNlIGNhbiBhbHdheXMgaW5pdGlhbGl6ZSB0aGUgc2hhZG93IHN0 YWNrIHByb3Blcmx5IGFuZCB0aGUgc2hhZG93Cj5zdGFjayBtZW1vcnkgaXMgbmV2ZXIgcHJvdGVj dGVkIGZyb20gb3RoZXIgbWFsaWNpb3VzIHRocmVhZHMuCgpTaGFkb3cgc3RhY2sgbWVtb3J5IGlz IHByb3RlY3RlZCBmcm9tIGluYWR2ZXJ0ZW50IHN0b3JlcyAoYmUgaXQgc2FtZSB0aHJlYWQKb3Ig YSBkaWZmZXJlbnQgdGhyZWFkIGluIHNhbWUgYWRkcmVzcyBzcGFjZSkuIE1hbGljaW91cyBjb2Rl IHdoaWNoIGNhbiBkbwpgc3NwdXNoL3NzYW1vc3dhcGAgYWxyZWFkeSBhc3N1bWVzIHRoYXQgY29k ZSBpbnRlZ3JpdHkgcG9saWNpZXMgYXJlIGJyb2tlbi4KCj4KPkkgdGhpbmsgdGhhdCB0aGUgY29t cGF0aWJpbGl0eSBhcmd1bWVudCBpcyByZWFzb25hYmxlLiAgV2UnZCBuZWVkIHRvCj5tb2RpZnkg dGhlIG90aGVyIHN5c2NhbGxzIHRvIGFsbG93IGEgd3JpdGUtb25seSBtYXBwaW5nIGFueXdheS4K Cgo+Cj4+IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC91c2VyY2ZpLmMgYi9hcmNoL3Jp c2N2L2tlcm5lbC91c2VyY2ZpLmMKPj4gK3N0YXRpYyBub2lubGluZSB1bnNpZ25lZCBsb25nIGFt b191c2VyX3Noc3RrKHVuc2lnbmVkIGxvbmcgKmFkZHIsIHVuc2lnbmVkIGxvbmcgdmFsKQo+PiAr ewo+PiArCS8qCj4+ICsJICogTmV2ZXIgZXhwZWN0IC0xIG9uIHNoYWRvdyBzdGFjay4gRXhwZWN0 IHJldHVybiBhZGRyZXNzZXMgYW5kIHplcm8KPj4gKwkgKi8KPj4gKwl1bnNpZ25lZCBsb25nIHN3 YXAgPSAtMTsKPj4gKwlfX2VuYWJsZV91c2VyX2FjY2VzcygpOwo+PiArCWFzbSBnb3RvKAo+PiAr CQkiLm9wdGlvbiBwdXNoXG4iCj4+ICsJCSIub3B0aW9uIGFyY2gsICt6aWNmaXNzXG4iCj4KPlNo b3VsZG4ndCBjb21waWxlciBhY2NlcHQgc3NhbW9zd2FwLmQgb3Bjb2RlIGV2ZW4gd2l0aG91dCB6 aWNmaXNzIGFyY2g/CgpJdHMgaWxsZWdhbCBpbnN0cnVjdGlvbiBpZiBzaGFkb3cgc3RhY2sgYXJl bid0IGF2YWlsYWJsZS4gQ3VycmVudCB0b29sY2hhaW4KZW1pdHMgaXQgb25seSBpZiB6aWNmaXNz IGlzIHNwZWNpZmllZCBpbiBtYXJjaC4KCj4KPj4gKwkJIjE6IHNzYW1vc3dhcC5kICVbc3dhcF0s ICVbdmFsXSwgJVthZGRyXVxuIgo+PiArCQlfQVNNX0VYVEFCTEUoMWIsICVsW2ZhdWx0XSkKPj4g KwkJUklTQ1ZfQUNRVUlSRV9CQVJSSUVSCj4KPldoeSBpcyB0aGUgYmFycmllciBoZXJlPwoKSUlS QywgSSB3YXMgZm9sbG93aW5nIGBhcmNoX2NtcHhjaGdfYWNxdWlyZWAuCkJ1dCBJIHRoaW5rIHRo YXQncyBub3QgbmVlZGVkLiAKV2hhdCB3ZSBhcmUgZG9pbmcgaXMgYGFyY2hfeGNoZ19yZWxheGVk YCBhbmQgYmFycmllciBpcyBub3QgbmVlZGVkLgoKSSBkaWQgY29uc2lkZXIgYWRkaW5nIGl0IHRv IGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vY21weGNoZy5oIGJ1dCB0aGVyZSBpcwpsaW1pdGVkIHVz YWdlIG9mIHRoaXMgcHJpbWl0aXZlIGFuZCB0aHVzIGtlcHQgaXQgbGltaXRlZCB0byB1c2VyY2Zp LmMKCkFueXdheXMgSSdsbCByZS1zcGluIHJlbW92aW5nIHRoZSBiYXJyaWVyLgoKPgo+PiArCQki Lm9wdGlvbiBwb3BcbiIKPj4gKwkJOiBbc3dhcF0gIj1yIiAoc3dhcCksIFthZGRyXSAiK0EiICgq YWRkcikKPj4gKwkJOiBbdmFsXSAiciIgKHZhbCkKPj4gKwkJOiAibWVtb3J5Igo+PiArCQk6IGZh dWx0Cj4+ICsJCSk7Cj4+ICsJX19kaXNhYmxlX3VzZXJfYWNjZXNzKCk7Cj4+ICsJcmV0dXJuIHN3 YXA7Cj4+ICtmYXVsdDoKPj4gKwlfX2Rpc2FibGVfdXNlcl9hY2Nlc3MoKTsKPj4gKwlyZXR1cm4g LTE7Cj4KPkkgdGhpbmsgd2Ugc2hvdWxkIHJldHVybiAwIGFuZCAtRUZBVUxULgo+V2UgY2FuIGln bm9yZSB0aGUgc3dhcHBlZCB2YWx1ZSwgb3IgcmV0dXJuIGl0IHRocm91Z2ggYSBwb2ludGVyLgoK Q29uc3VtZXIgb2YgdGhpcyBkZXRlY3RzIC0xIGFuZCB0aGVuIHJldHVybiAtRUZBVUxULgpXZSB3 b3VsZCBldmVudHVhbGx5IG5lZWQgdGhpcyB3aGVuIGNyZWF0aW5nIHNoYWRvdyBzdGFjayB0b2tl bnMgZm9yCmtlcm5lbCBzaGFkb3cgc3RhY2suIEkgYmVsaWV2ZSBgLTFgIGlzIHNhZmUgcmV0dXJu IHZhbHVlIHdoaWNoIGNhbid0CmJlIGNvbnN0cnVlZCBhcyBuZWdhdGl2ZSBrZXJuZWwgYWRkcmVz cyAoLUVGQVVMVCB3aWxsIGJlKQoKCj4KPj4gK30KPj4gKwo+PiArc3RhdGljIHVuc2lnbmVkIGxv bmcgYWxsb2NhdGVfc2hhZG93X3N0YWNrKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9u ZyBzaXplLAo+PiArCQkJCQkgICB1bnNpZ25lZCBsb25nIHRva2VuX29mZnNldCwgYm9vbCBzZXRf dG9rKQo+PiArewo+PiArCWludCBmbGFncyA9IE1BUF9BTk9OWU1PVVMgfCBNQVBfUFJJVkFURTsK Pgo+SXMgTUFQX0dST1dTRE9XTiBwb2ludGxlc3M/CgpOb3Qgc3VyZS4gRGlkbid0IHNlZSB0aGF0 IGluIHg4NiBvciBhcm02NCBzaGFkb3cgc3RhY2sgY3JlYXRpb24uCkxldCBtZSBrbm93IGlmIGl0 cyB1c2VmdWwuCgo+Cj4+ICsJc3RydWN0IG1tX3N0cnVjdCAqbW0gPSBjdXJyZW50LT5tbTsKPj4g Kwl1bnNpZ25lZCBsb25nIHBvcHVsYXRlLCB0b2tfbG9jID0gMDsKPj4gKwo+PiArCWlmIChhZGRy KQo+PiArCQlmbGFncyB8PSBNQVBfRklYRURfTk9SRVBMQUNFOwo+PiArCj4+ICsJbW1hcF93cml0 ZV9sb2NrKG1tKTsKPj4gKwlhZGRyID0gZG9fbW1hcChOVUxMLCBhZGRyLCBzaXplLCBQUk9UX1JF QUQsIGZsYWdzLAo+Cj5QUk9UX1JFQUQgaW1wbGllcyBWTV9SRUFELCBzbyB3b24ndCB0aGlzIHNl bGVjdCBQQUdFX0NPUFkgaW4gdGhlCj5wcm90ZWN0aW9uX21hcCBpbnN0ZWFkIG9mIFBBR0VfU0hB RE9XU1RBQ0s/CgpQUk9UX1JFQUQgaXMgcG9pbnRsZXNzIGhlcmUgYW5kIHJlZHVuZGFudC4gSSBo YXZlbid0IGNoZWNrZWQgaWYgSSByZW1vdmUgaXQKd2hhdCBoYXBwZW5zLgoKYFZNX1NIQURPV19T VEFDS2AgdGFrZXMgcHJlY2VkZW5jZSAodGFrZSBhIGxvb2sgYXQgcHRlX21rd3JpdGUgYW5kIHBt ZF9ta3dyaXRlLgpPbmx5IHdheSBgVk1fU0hBRE9XX1NUQUNLYCBpcyBwb3NzaWJsZSBpbiB2bWZs YWdzIGlzIHZpYSBgbWFwX3NoYWRvd19zdGFja2Agb3IKYGZvcmsvY2xvbmVgIG9uIGV4aXN0aW5n IHRhc2sgd2l0aCBzaGFkb3cgc3RhY2sgZW5hYmxlZC4KCkluIGEgbnV0c2hlbGwgdXNlciBjYW4n dCBzcGVjaWZ5IGBWTV9TSEFET1dfU1RBQ0tgIGRpcmVjdGx5IChpbmRpcmVjdGx5IHZpYQptYXBf c2hhZG93X3N0YWNrIHN5c2NhbGwgb3IgZm9yay9jbG9uZSkgLiBCdXQgaWYgc2V0IGluIHZtYWZs YWdzIHRoZW4gaXQnbGwKdGFrZSBwcmVjZWRlbmNlLgoKPgo+V291bGRuJ3QgYXZvaWRpbmcgVk1f UkVBRCBhbHNvIGFsbG93IHVzIHRvIGdldCByaWQgb2YgdGhlIHVnbHkgaGFjayBpbgo+cHRlX21r d3JpdGU/ICAoVk1fV1JJVEUgd291bGQgbmF0dXJhbGx5IHNlbGVjdCB0aGUgcmlnaHQgWFdSIGZs YWdzLikKCj4KPj4gKwkJICAgICAgIFZNX1NIQURPV19TVEFDSyB8IFZNX1dSSVRFLCAwLCAmcG9w dWxhdGUsIE5VTEwpOwo+PiArCW1tYXBfd3JpdGVfdW5sb2NrKG1tKTsKPj4gKwo+PiArU1lTQ0FM TF9ERUZJTkUzKG1hcF9zaGFkb3dfc3RhY2ssIHVuc2lnbmVkIGxvbmcsIGFkZHIsIHVuc2lnbmVk IGxvbmcsIHNpemUsIHVuc2lnbmVkIGludCwgZmxhZ3MpCj4+ICt7Cj4+IFsuLi5dCj4+ICsJaWYg KGFkZHIgJiYgKGFkZHIgJiAoUEFHRV9TSVpFIC0gMSkpKQo+Cj5pZiAoIVBBR0VfQUxJR05FRChh ZGRyKSkKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxp bnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0 dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK