From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA8541A2398 for ; Thu, 24 Apr 2025 04:44:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745469856; cv=none; b=amo5TluNMK4MrUJPuZAyWXDx4jbkMJD5qTXVyRe7LmBUo9P1LRVh1Qkqnv9KivN753x8CSOQ5j3IixpROcTdSqFZPKdIAlwHACdZeU3s3a+91yxyfAYIPkW5vDLmGisccQeHYLv4KCwblq3jPOzE4G0SRzNHgyS13P8i7FzYkxY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745469856; c=relaxed/simple; bh=scumeHQ1EWeXtDCiWxXsvS1GGnP6lxnjhn7+ttz3yqE=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=ootaW36Qj61wRK6kL4U74pf6zT2PQLOpnDogqphY54frLqTwKmmAZGrIifqLg3QcLHtpo1+0LQ7ispkSsEMRBR6DGg5zIsqWwFkkkW2LPhL2WpxPZuxqtCeynddbyMoQ0d+Fql/eBr00dCGvc1VNFtK/pW4+j1aHSjyMQM0Nuag= 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=ZjA4nAE5; arc=none smtp.client-ip=209.85.210.169 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="ZjA4nAE5" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-736e52948ebso607742b3a.1 for ; Wed, 23 Apr 2025 21:44:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745469854; x=1746074654; 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=d8Qiq1brGqi76YM1jZPx/K29TOoSYoqtc1NwyaTJxB8=; b=ZjA4nAE5C43SKeMg2lonMk0udTssP7uWcQGLa0ByW/qtijdIvBtCJFJykP47pThHrl uhmqJuWDfESGeJPodQLWjKUthkZOQQrTNvFswyRpSC+FNa2D8pbwV0i+vj1Sr3wkBFuE tmgnibOExIPfmGIgP/GatTadLh+QQUvKpZ8JMfhHOi6ub8spvTqyUB36pZAq2SD1lFrS a6MidcIQmCSwxDs+xz2fQ9mXiKkysadTbj1iycRBhjX+W56deBL3vIW4LM7EnWxb54RR pWXRq9oudnEw4nKJCH0Gh5JgtcRaapN2llz645Waw8/wZhztoYZ2M0bXJ9vU7uMO/MfJ 6ZmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745469854; x=1746074654; 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=d8Qiq1brGqi76YM1jZPx/K29TOoSYoqtc1NwyaTJxB8=; b=pwC0tbRV+zTI5Ne8A7v517etJW0f8kObgzLTMwQotnjllFMGtNc08ZczvWQfBzyp8J JyKa0zlo25SG1yDhk4uVVe/J8XjP37e6DVcz93jg1LDNvdy64ZApo2WMxCjW9sU3mblk eOyTbhfztHXeN66RBiGRq94E3bZjbAe4zH1tYRMCRabqWpx1l/LmRr5AtfvHNQ76Hf3W lJIhDDZcu/u66sbhzD8nBGZDrpzytKUuG65EK+0CF5VXxxAUm+deqR05R0W2rv74ecUG GfdSEjHCRDdPbz2skOkcEY08uuZmU8WRhO//8tCRdaeyIjQdTAT/oMRhtzt43HMu6cxO 8u/Q== X-Forwarded-Encrypted: i=1; AJvYcCUcsPPbOkQCmR7cVHzUx4t80+qvAjeY/vyOZhZol74v9aOmByISH2OLKbbOxEMW4kCRKhvEDAuHtvDD@vger.kernel.org X-Gm-Message-State: AOJu0Yz7ps9wpS1jR9QdxgjOR9KjGpZH0f71ccCns0QpHtAsx6Yp5Eey Zn6AGASeeHcQHWXnxC7AwvwlNw++80kNPfM/A+ZeCRkEdtsYCob5EnV5HJssY8Y= X-Gm-Gg: ASbGncuX0rszfibBFwUMoV/LPf6aNpQWRZGBhEDmYSzRtBdPcKzFEnQWquSj2/710KA Izc5e68yiP4mITQuENKfVXMPPdoOh5SuPOJZYL7g0N2ZnoxnMoZGPB1DNXK6wamVsiyunyXVOvG RrApO/Hchj1ZsGez/By9P2qNATeQ0jaQd/VvkwhJlTVIIzc8yYJlmJcWsv3CjPj8ewtL6m5IFFC zRQxLoXpGCyimg4yvZRWD1h11P33ZR1BRtshbmV9QK4gAEbssrvLh895ke8HCTy/meB2GVKeWn1 E6RsSZE2BGMWjJ9p0Ar3wdVg5NoFW7srvU50dEVvBGAa18IvfaI= X-Google-Smtp-Source: AGHT+IEitFVHRTgSCgRhWMe9hU5oQbZR2x7Kpm268qxNcn6QnDdeucUqxqlmgTha+1K/W91b8N7XWQ== X-Received: by 2002:a05:6a00:2182:b0:736:73ad:365b with SMTP id d2e1a72fcca58-73e246647e4mr1767338b3a.14.1745469854052; Wed, 23 Apr 2025 21:44:14 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73e25a6aa52sm463483b3a.94.2025.04.23.21.44.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Apr 2025 21:44:13 -0700 (PDT) Date: Wed, 23 Apr 2025 21:44:09 -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, linux-riscv Subject: Re: [PATCH v12 12/28] riscv: Implements arch agnostic shadow stack prctls Message-ID: References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-12-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:45:58AM +0200, Radim Krčmář wrote: >2025-03-14T14:39:31-07:00, Deepak Gupta : >> diff --git a/arch/riscv/include/asm/usercfi.h b/arch/riscv/include/asm/usercfi.h >> @@ -14,7 +15,8 @@ struct kernel_clone_args; >> struct cfi_status { >> unsigned long ubcfi_en : 1; /* Enable for backward cfi. */ >> - unsigned long rsvd : ((sizeof(unsigned long) * 8) - 1); >> + unsigned long ubcfi_locked : 1; >> + unsigned long rsvd : ((sizeof(unsigned long) * 8) - 2); > >The rsvd field shouldn't be necessary as the container for the bitfield >is 'unsigned long' sized. > >Why don't we use bools here, though? >It might produce a better binary and we're not hurting for struct size. If you remember one of the previous patch discussion, this goes into `thread_info` Don't want to bloat it. Even if we end shoving into task_struct, don't want to bloat that either. I can just convert it into bitmask if bitfields are an eyesore here. > >> diff --git a/arch/riscv/kernel/usercfi.c b/arch/riscv/kernel/usercfi.c >> @@ -24,6 +24,16 @@ bool is_shstk_enabled(struct task_struct *task) >> +bool is_shstk_allocated(struct task_struct *task) >> +{ >> + return task->thread_info.user_cfi_state.shdw_stk_base ? true : false; > >I think that the following is clearer: > > return task->thread_info.user_cfi_state.shdw_stk_base > >(Similar for all other implicit conversion ternaries.) Hmm... noted. > >> @@ -42,6 +52,26 @@ void set_active_shstk(struct task_struct *task, unsigned long shstk_addr) >> +void set_shstk_status(struct task_struct *task, bool enable) >> +{ >> + if (!cpu_supports_shadow_stack()) >> + return; >> + >> + task->thread_info.user_cfi_state.ubcfi_en = enable ? 1 : 0; >> + >> + if (enable) >> + task->thread.envcfg |= ENVCFG_SSE; >> + else >> + task->thread.envcfg &= ~ENVCFG_SSE; >> + >> + csr_write(CSR_ENVCFG, task->thread.envcfg); > >There is a new helper we could reuse for this: > > envcfg_update_bits(task, ENVCFG_SSE, enable ? ENVCFG_SSE : 0); Yeah it's in switch_to.h header. I'll think about it. > >> +} >> @@ -262,3 +292,83 @@ void shstk_release(struct task_struct *tsk) >> +int arch_set_shadow_stack_status(struct task_struct *t, unsigned long status) >> +{ >> + /* Request is to enable shadow stack and shadow stack is not enabled already */ >> + if (enable_shstk && !is_shstk_enabled(t)) { >> + /* shadow stack was allocated and enable request again >> + * no need to support such usecase and return EINVAL. >> + */ >> + if (is_shstk_allocated(t)) >> + return -EINVAL; >> + >> + size = calc_shstk_size(0); >> + addr = allocate_shadow_stack(0, size, 0, false); > >Why don't we use the userspace-allocated stack? > >I'm completely missing the design idea here... Userspace has absolute >over the shadow stack pointer CSR, so we don't need to do much in Linux: > >1. interface to set up page tables with -W- PTE and >2. interface to control senvcfg.SSE. > >Userspace can do the rest. Design is like following: When a user task wants to enable shadow stack for itself, it has to issue a syscall to kernel (like this prctl). Now it can be done independently by user task by first issuing `map_shadow_stack`, then asking kernel to light up envcfg bit and eventually when return to usermode happens, it can write to CSR. It is no different from doing all of the above together in single `prctl` call. They are equivalent in that nature. Background is that x86 followed this because x86 had workloads/binaries/ functions with (deep)recursive functions and thus by default were forced to always allocate shadow stack to be of the same size as data stack. To reduce burden on userspace for determining and then allocating same size (size of data stack) shadow stack, prctl would do the job of calculating default shadow stack size (and reduce programming error in usermode). arm64 followed the suite. I don't want to find out what's the compatiblity issues we will see and thus just following the suite (given that both approaches are equivalent). Take a look at static `calc_shstk_size(unsigned long size)`. Coming back to your question of why not allowing userspace to manage its own shadow stack. Answer is that it can manage its own shadow stack. If it does, it just have to be aware of size its allocating for shadow stack. There is already a patch series going on to manage this using clone3. https://lore.kernel.org/all/20250408-clone3-shadow-stack-v15-4-3fa245c6e3be@kernel.org/ I fully expect green thread implementations in rust/go or swapcontext based thread management doing this on their own. Current design is to ensure existing apps dont have to change a lot in userspace and by default kernel gives compatibility. Anyone else wanting to optimize the usage of shadow stack can do so with current design. - > >> +int arch_lock_shadow_stack_status(struct task_struct *task, >> + unsigned long arg) >> +{ >> + /* If shtstk not supported or not enabled on task, nothing to lock here */ >> + if (!cpu_supports_shadow_stack() || >> + !is_shstk_enabled(task) || arg != 0) >> + return -EINVAL; > >The task might want to prevent shadow stack from being enabled? But Why would it want to do that? Task can simply not issue the prctl. There are glibc tunables as well using which it can be disabled. > >Thanks. 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 C9C0CC369AB for ; Thu, 24 Apr 2025 04:44:30 +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=XxQT629c2rWytMkziSTJ1lQoucRYtnLvbVXE1Gp3Pp8=; b=zNVlImFksrsaU2K1aCqLknDfEO H0Knkut0T1p0UHcKUTs9wcWEQE89UViKObaqrPhIQRVS3fJI72QOo8T+GvVATclqBteZwvEaj4wW7 mS7vma9C7vsyH2NO+Z3639FEPbQ5UZkFe6WzBYMKzsWmP4Bb9YU8nWv49faaNbgtKbj6IbPQCslaP dM6+aNGpwelNTBcMrIBzrVDRNxaaLCICGuakb9soal7OKozbieiW4puBvxdoM/ts9PEw2dU/nVRdT hw+lXXdeR2lAxdZQO8eFGKHHpDhHp63DPrXGwRygdD7TuLvr6fKumyL6GLr9zPsXS6iVXNbJP9ERI 9IDCyRWA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98.2 #2 (Red Hat Linux)) id 1u7oRf-0000000CpEa-1rfp; Thu, 24 Apr 2025 04:44:19 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.98.2 #2 (Red Hat Linux)) id 1u7oRa-0000000CpCj-3df9 for linux-riscv@lists.infradead.org; Thu, 24 Apr 2025 04:44:18 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-7376e311086so668604b3a.3 for ; Wed, 23 Apr 2025 21:44:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1745469854; x=1746074654; 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=d8Qiq1brGqi76YM1jZPx/K29TOoSYoqtc1NwyaTJxB8=; b=upbO/w8M7hupRyP6CIXyd57Pu2FtbxwdMwJi0ZLHKh1feKSGB4IaMqyDOJCpSJ/gD5 n89ue87SQYkbvZvoNmwOaaSO0PzHLcRNBDjDKUzjOP600XPK345JfTDGFIANSbyCOd5S VvDnBTs5CccBdVkYl+uACpJ5O6EMBN+ILFQMWGkEGZO+5fVn++cImRajjgbw2wSZLU1I VYUOTUHAPE980iZih5ULnkj2fTHT2ktfSae6ZXREXQHAHfaSQvCMG6ZRjqstgzSn6wV9 CS4LGjWA2bQRd+Ka7u3mSW26iL0yPpt04RjHNssSs04NTUtxjNz7F3G5LRcIAsOiOmVP Rw+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745469854; x=1746074654; 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=d8Qiq1brGqi76YM1jZPx/K29TOoSYoqtc1NwyaTJxB8=; b=MSQlBXN36ETmDb4rVgTHzEl+5XGhu61FmyHXOHPRUDUqtVEqPODCoKR3s3YH3akRPc PMfcaWxtDYPmFERaIkWoTRpXWAC1A7lUTuMjghPLopbLYaIo8FZPJY59cBsKHRg1Hqvu RXGhXSevjZOqaFESOwZgUuWxO6OhkLHkt1zUSzholzP7JVMmz5YE8LG3QGhGb+wr5Rz6 e+b9GW2n/GKMJzal4pwj1KZgHZZNmo7XSd/wepFtCLugTS6ThikAQll5EcyoOKKuPjB5 GhlrLyr1pk2NiRr+0WsY2GkPRgMLbwNh15FKVRyYWkqXN0/UJllaATS2O5Rhf8yJwrrT mLaw== X-Forwarded-Encrypted: i=1; AJvYcCW+3ZULgCntgYdBw+LZrTtvEn7EScognAg8gjX4iHKZ/XvKXkTABIvxiEeUQZ9qQvu/yUa5wEpx/GNA5w==@lists.infradead.org X-Gm-Message-State: AOJu0YwVyP2y08lL4tVupGh0OTTc8bKetZhQflhLBxndeI4YVkL26Z9p /S82YrF1jRsKefmUquiZlvQXvvQU8NAc1H0SjqwzEdwt+ZHjtu9mfX8NB+dJzCk= X-Gm-Gg: ASbGncsn7CjPm03fNhVGm6u9PNx4DLWwCf3zJlmcrV64UktOT5lplYcsfF/5zXemUru hJ9se5IC8tJYqgxrnGwPMfbbYc/mQltrprwnTmScU71DS23+Ti8641Cfrf4bIMJ4Z8IL18bWLmJ N124DpVvTvbrY7hyoXWlvtg/vhhIr41rkBxDzL/l63elKqvJ+O46B8HF0hRbSABuZfhr/JVguiG AYDIjVMODhLy+XI/4gl/F6xU0X6v3x099r6cC35ALUcJp3tjkYhHfpje94Y+5RMcePBJq3xIgVJ UiRjru8dqCdGBJ9rGyb7tZrcrFlmyAzck6DkuBpClGGpzglvabA= X-Google-Smtp-Source: AGHT+IEitFVHRTgSCgRhWMe9hU5oQbZR2x7Kpm268qxNcn6QnDdeucUqxqlmgTha+1K/W91b8N7XWQ== X-Received: by 2002:a05:6a00:2182:b0:736:73ad:365b with SMTP id d2e1a72fcca58-73e246647e4mr1767338b3a.14.1745469854052; Wed, 23 Apr 2025 21:44:14 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-73e25a6aa52sm463483b3a.94.2025.04.23.21.44.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Apr 2025 21:44:13 -0700 (PDT) Date: Wed, 23 Apr 2025 21:44:09 -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, linux-riscv Subject: Re: [PATCH v12 12/28] riscv: Implements arch agnostic shadow stack prctls Message-ID: References: <20250314-v5_user_cfi_series-v12-0-e51202b53138@rivosinc.com> <20250314-v5_user_cfi_series-v12-12-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_214415_179489_A89479EC X-CRM114-Status: GOOD ( 34.94 ) 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 T24gVGh1LCBBcHIgMTAsIDIwMjUgYXQgMTE6NDU6NThBTSArMDIwMCwgUmFkaW0gS3LEjW3DocWZ IHdyb3RlOgo+MjAyNS0wMy0xNFQxNDozOTozMS0wNzowMCwgRGVlcGFrIEd1cHRhIDxkZWJ1Z0By aXZvc2luYy5jb20+Ogo+PiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91c2Vy Y2ZpLmggYi9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3VzZXJjZmkuaAo+PiBAQCAtMTQsNyArMTUs OCBAQCBzdHJ1Y3Qga2VybmVsX2Nsb25lX2FyZ3M7Cj4+ICBzdHJ1Y3QgY2ZpX3N0YXR1cyB7Cj4+ ICAJdW5zaWduZWQgbG9uZyB1YmNmaV9lbiA6IDE7IC8qIEVuYWJsZSBmb3IgYmFja3dhcmQgY2Zp LiAqLwo+PiAtCXVuc2lnbmVkIGxvbmcgcnN2ZCA6ICgoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICog OCkgLSAxKTsKPj4gKwl1bnNpZ25lZCBsb25nIHViY2ZpX2xvY2tlZCA6IDE7Cj4+ICsJdW5zaWdu ZWQgbG9uZyByc3ZkIDogKChzaXplb2YodW5zaWduZWQgbG9uZykgKiA4KSAtIDIpOwo+Cj5UaGUg cnN2ZCBmaWVsZCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IGFzIHRoZSBjb250YWluZXIgZm9yIHRo ZSBiaXRmaWVsZAo+aXMgJ3Vuc2lnbmVkIGxvbmcnIHNpemVkLgo+Cj5XaHkgZG9uJ3Qgd2UgdXNl IGJvb2xzIGhlcmUsIHRob3VnaD8KPkl0IG1pZ2h0IHByb2R1Y2UgYSBiZXR0ZXIgYmluYXJ5IGFu ZCB3ZSdyZSBub3QgaHVydGluZyBmb3Igc3RydWN0IHNpemUuCgpJZiB5b3UgcmVtZW1iZXIgb25l IG9mIHRoZSBwcmV2aW91cyBwYXRjaCBkaXNjdXNzaW9uLCB0aGlzIGdvZXMgaW50bwpgdGhyZWFk X2luZm9gIERvbid0IHdhbnQgdG8gYmxvYXQgaXQuIEV2ZW4gaWYgd2UgZW5kIHNob3ZpbmcgaW50 byB0YXNrX3N0cnVjdCwKZG9uJ3Qgd2FudCB0byBibG9hdCB0aGF0IGVpdGhlci4gSSBjYW4ganVz dCBjb252ZXJ0IGl0IGludG8gYml0bWFzayBpZgpiaXRmaWVsZHMgYXJlIGFuIGV5ZXNvcmUgaGVy ZS4KCj4KPj4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3Yva2VybmVsL3VzZXJjZmkuYyBiL2FyY2gv cmlzY3Yva2VybmVsL3VzZXJjZmkuYwo+PiBAQCAtMjQsNiArMjQsMTYgQEAgYm9vbCBpc19zaHN0 a19lbmFibGVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKPj4gK2Jvb2wgaXNfc2hzdGtfYWxs b2NhdGVkKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaykKPj4gK3sKPj4gKwlyZXR1cm4gdGFzay0+ dGhyZWFkX2luZm8udXNlcl9jZmlfc3RhdGUuc2hkd19zdGtfYmFzZSA/IHRydWUgOiBmYWxzZTsK Pgo+SSB0aGluayB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgY2xlYXJlcjoKPgo+ICByZXR1cm4gdGFz ay0+dGhyZWFkX2luZm8udXNlcl9jZmlfc3RhdGUuc2hkd19zdGtfYmFzZQo+Cj4oU2ltaWxhciBm b3IgYWxsIG90aGVyIGltcGxpY2l0IGNvbnZlcnNpb24gdGVybmFyaWVzLikKCkhtbS4uLiBub3Rl ZC4KCj4KPj4gQEAgLTQyLDYgKzUyLDI2IEBAIHZvaWQgc2V0X2FjdGl2ZV9zaHN0ayhzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnRhc2ssIHVuc2lnbmVkIGxvbmcgc2hzdGtfYWRkcikKPj4gK3ZvaWQgc2V0 X3Noc3RrX3N0YXR1cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2ssIGJvb2wgZW5hYmxlKQo+PiAr ewo+PiArCWlmICghY3B1X3N1cHBvcnRzX3NoYWRvd19zdGFjaygpKQo+PiArCQlyZXR1cm47Cj4+ ICsKPj4gKwl0YXNrLT50aHJlYWRfaW5mby51c2VyX2NmaV9zdGF0ZS51YmNmaV9lbiA9IGVuYWJs ZSA/IDEgOiAwOwo+PiArCj4+ICsJaWYgKGVuYWJsZSkKPj4gKwkJdGFzay0+dGhyZWFkLmVudmNm ZyB8PSBFTlZDRkdfU1NFOwo+PiArCWVsc2UKPj4gKwkJdGFzay0+dGhyZWFkLmVudmNmZyAmPSB+ RU5WQ0ZHX1NTRTsKPj4gKwo+PiArCWNzcl93cml0ZShDU1JfRU5WQ0ZHLCB0YXNrLT50aHJlYWQu ZW52Y2ZnKTsKPgo+VGhlcmUgaXMgYSBuZXcgaGVscGVyIHdlIGNvdWxkIHJldXNlIGZvciB0aGlz Ogo+Cj4gIGVudmNmZ191cGRhdGVfYml0cyh0YXNrLCBFTlZDRkdfU1NFLCBlbmFibGUgPyBFTlZD RkdfU1NFIDogMCk7CgpZZWFoIGl0J3MgaW4gc3dpdGNoX3RvLmggaGVhZGVyLiBJJ2xsIHRoaW5r IGFib3V0IGl0LgoKPgo+PiArfQo+PiBAQCAtMjYyLDMgKzI5Miw4MyBAQCB2b2lkIHNoc3RrX3Jl bGVhc2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0c2spCj4+ICtpbnQgYXJjaF9zZXRfc2hhZG93X3N0 YWNrX3N0YXR1cyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHVuc2lnbmVkIGxvbmcgc3RhdHVzKQo+ PiArewo+PiArCS8qIFJlcXVlc3QgaXMgdG8gZW5hYmxlIHNoYWRvdyBzdGFjayBhbmQgc2hhZG93 IHN0YWNrIGlzIG5vdCBlbmFibGVkIGFscmVhZHkgKi8KPj4gKwlpZiAoZW5hYmxlX3Noc3RrICYm ICFpc19zaHN0a19lbmFibGVkKHQpKSB7Cj4+ICsJCS8qIHNoYWRvdyBzdGFjayB3YXMgYWxsb2Nh dGVkIGFuZCBlbmFibGUgcmVxdWVzdCBhZ2Fpbgo+PiArCQkgKiBubyBuZWVkIHRvIHN1cHBvcnQg c3VjaCB1c2VjYXNlIGFuZCByZXR1cm4gRUlOVkFMLgo+PiArCQkgKi8KPj4gKwkJaWYgKGlzX3No c3RrX2FsbG9jYXRlZCh0KSkKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsJCXNpemUg PSBjYWxjX3Noc3RrX3NpemUoMCk7Cj4+ICsJCWFkZHIgPSBhbGxvY2F0ZV9zaGFkb3dfc3RhY2so MCwgc2l6ZSwgMCwgZmFsc2UpOwo+Cj5XaHkgZG9uJ3Qgd2UgdXNlIHRoZSB1c2Vyc3BhY2UtYWxs b2NhdGVkIHN0YWNrPwo+Cj5JJ20gY29tcGxldGVseSBtaXNzaW5nIHRoZSBkZXNpZ24gaWRlYSBo ZXJlLi4uICBVc2Vyc3BhY2UgaGFzIGFic29sdXRlCj5vdmVyIHRoZSBzaGFkb3cgc3RhY2sgcG9p bnRlciBDU1IsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gbXVjaCBpbiBMaW51eDoKPgo+MS4gaW50 ZXJmYWNlIHRvIHNldCB1cCBwYWdlIHRhYmxlcyB3aXRoIC1XLSBQVEUgYW5kCj4yLiBpbnRlcmZh Y2UgdG8gY29udHJvbCBzZW52Y2ZnLlNTRS4KPgo+VXNlcnNwYWNlIGNhbiBkbyB0aGUgcmVzdC4K CkRlc2lnbiBpcyBsaWtlIGZvbGxvd2luZzoKCldoZW4gYSB1c2VyIHRhc2sgd2FudHMgdG8gZW5h YmxlIHNoYWRvdyBzdGFjayBmb3IgaXRzZWxmLCBpdCBoYXMgdG8gaXNzdWUKYSBzeXNjYWxsIHRv IGtlcm5lbCAobGlrZSB0aGlzIHByY3RsKS4gTm93IGl0IGNhbiBiZSBkb25lIGluZGVwZW5kZW50 bHkgYnkKdXNlciB0YXNrIGJ5IGZpcnN0IGlzc3VpbmcgYG1hcF9zaGFkb3dfc3RhY2tgLCB0aGVu IGFza2luZyBrZXJuZWwgdG8gbGlnaHQKdXAgZW52Y2ZnIGJpdCBhbmQgZXZlbnR1YWxseSB3aGVu IHJldHVybiB0byB1c2VybW9kZSBoYXBwZW5zLCBpdCBjYW4gd3JpdGUKdG8gQ1NSLiBJdCBpcyBu byBkaWZmZXJlbnQgZnJvbSBkb2luZyBhbGwgb2YgdGhlIGFib3ZlIHRvZ2V0aGVyIGluIHNpbmds ZQpgcHJjdGxgIGNhbGwuIFRoZXkgYXJlIGVxdWl2YWxlbnQgaW4gdGhhdCBuYXR1cmUuCgpCYWNr Z3JvdW5kIGlzIHRoYXQgeDg2IGZvbGxvd2VkIHRoaXMgYmVjYXVzZSB4ODYgaGFkIHdvcmtsb2Fk cy9iaW5hcmllcy8KZnVuY3Rpb25zIHdpdGggKGRlZXApcmVjdXJzaXZlIGZ1bmN0aW9ucyBhbmQg dGh1cyBieSBkZWZhdWx0IHdlcmUgZm9yY2VkCnRvIGFsd2F5cyBhbGxvY2F0ZSBzaGFkb3cgc3Rh Y2sgdG8gYmUgb2YgdGhlIHNhbWUgc2l6ZSBhcyBkYXRhIHN0YWNrLiBUbwpyZWR1Y2UgYnVyZGVu IG9uIHVzZXJzcGFjZSBmb3IgZGV0ZXJtaW5pbmcgYW5kIHRoZW4gYWxsb2NhdGluZyBzYW1lIHNp emUKKHNpemUgb2YgZGF0YSBzdGFjaykgc2hhZG93IHN0YWNrLCBwcmN0bCB3b3VsZCBkbyB0aGUg am9iIG9mIGNhbGN1bGF0aW5nCmRlZmF1bHQgc2hhZG93IHN0YWNrIHNpemUgKGFuZCByZWR1Y2Ug cHJvZ3JhbW1pbmcgZXJyb3IgaW4gdXNlcm1vZGUpLiBhcm02NApmb2xsb3dlZCB0aGUgc3VpdGUu IEkgZG9uJ3Qgd2FudCB0byBmaW5kIG91dCB3aGF0J3MgdGhlIGNvbXBhdGlibGl0eSBpc3N1ZXMK d2Ugd2lsbCBzZWUgYW5kIHRodXMganVzdCBmb2xsb3dpbmcgdGhlIHN1aXRlIChnaXZlbiB0aGF0 IGJvdGggYXBwcm9hY2hlcwphcmUgZXF1aXZhbGVudCkuIFRha2UgYSBsb29rIGF0IHN0YXRpYyBg Y2FsY19zaHN0a19zaXplKHVuc2lnbmVkIGxvbmcgc2l6ZSlgLgoKQ29taW5nIGJhY2sgdG8geW91 ciBxdWVzdGlvbiBvZiB3aHkgbm90IGFsbG93aW5nIHVzZXJzcGFjZSB0byBtYW5hZ2UgaXRzCm93 biBzaGFkb3cgc3RhY2suIEFuc3dlciBpcyB0aGF0IGl0IGNhbiBtYW5hZ2UgaXRzIG93biBzaGFk b3cgc3RhY2suIElmIGl0CmRvZXMsIGl0IGp1c3QgaGF2ZSB0byBiZSBhd2FyZSBvZiBzaXplIGl0 cyBhbGxvY2F0aW5nIGZvciBzaGFkb3cgc3RhY2suCgpUaGVyZSBpcyBhbHJlYWR5IGEgcGF0Y2gg c2VyaWVzIGdvaW5nIG9uIHRvIG1hbmFnZSB0aGlzIHVzaW5nIGNsb25lMy4KaHR0cHM6Ly9sb3Jl Lmtlcm5lbC5vcmcvYWxsLzIwMjUwNDA4LWNsb25lMy1zaGFkb3ctc3RhY2stdjE1LTQtM2ZhMjQ1 YzZlM2JlQGtlcm5lbC5vcmcvCgpJIGZ1bGx5IGV4cGVjdCBncmVlbiB0aHJlYWQgaW1wbGVtZW50 YXRpb25zIGluIHJ1c3QvZ28gb3Igc3dhcGNvbnRleHQKYmFzZWQgdGhyZWFkIG1hbmFnZW1lbnQg ZG9pbmcgdGhpcyBvbiB0aGVpciBvd24uCgpDdXJyZW50IGRlc2lnbiBpcyB0byBlbnN1cmUgZXhp c3RpbmcgYXBwcyBkb250IGhhdmUgdG8gY2hhbmdlIGEgbG90IGluCnVzZXJzcGFjZSBhbmQgYnkg ZGVmYXVsdCBrZXJuZWwgZ2l2ZXMgY29tcGF0aWJpbGl0eS4gQW55b25lIGVsc2Ugd2FudGluZwp0 byBvcHRpbWl6ZSB0aGUgdXNhZ2Ugb2Ygc2hhZG93IHN0YWNrIGNhbiBkbyBzbyB3aXRoIGN1cnJl bnQgZGVzaWduLgoKLSAKPgo+PiAraW50IGFyY2hfbG9ja19zaGFkb3dfc3RhY2tfc3RhdHVzKHN0 cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywKPj4gKwkJCQkgIHVuc2lnbmVkIGxvbmcgYXJnKQo+PiAr ewo+PiArCS8qIElmIHNodHN0ayBub3Qgc3VwcG9ydGVkIG9yIG5vdCBlbmFibGVkIG9uIHRhc2ss IG5vdGhpbmcgdG8gbG9jayBoZXJlICovCj4+ICsJaWYgKCFjcHVfc3VwcG9ydHNfc2hhZG93X3N0 YWNrKCkgfHwKPj4gKwkgICAgIWlzX3Noc3RrX2VuYWJsZWQodGFzaykgfHwgYXJnICE9IDApCj4+ ICsJCXJldHVybiAtRUlOVkFMOwo+Cj5UaGUgdGFzayBtaWdodCB3YW50IHRvIHByZXZlbnQgc2hh ZG93IHN0YWNrIGZyb20gYmVpbmcgZW5hYmxlZD8KCkJ1dCBXaHkgd291bGQgaXQgd2FudCB0byBk byB0aGF0PyBUYXNrIGNhbiBzaW1wbHkgbm90IGlzc3VlIHRoZSBwcmN0bC4gVGhlcmUKYXJlIGds aWJjIHR1bmFibGVzIGFzIHdlbGwgdXNpbmcgd2hpY2ggaXQgY2FuIGJlIGRpc2FibGVkLgoKPgo+ VGhhbmtzLgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K bGludXgtcmlzY3YgbWFpbGluZyBsaXN0CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcK aHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=