From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-il1-f176.google.com (mail-il1-f176.google.com [209.85.166.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D7A21509B2 for ; Fri, 12 Apr 2024 20:20:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.166.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712953254; cv=none; b=vGNlHCTXZP7mmP7p3LcAUN2tAoxmWIk6+0DnkZ+K1aSr7SVO3+TIB8qo4XKTTFYz1ASUwvrDgafcARnbl0Q32UliM34fopk/i9825JoCpB/9jn9ci23vN+HuJZxyKMaKJHei59G/UufsrzVGcBSBXV9b0/xspr+nbHI/CDgb5x0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712953254; c=relaxed/simple; bh=rhC/i0iadwEL7dTRicBlO/h67qbFEWpJbLwK1NO3meo=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=MxoH2MywgOKliZUHqspuuzkI4IgDEiiKBZhKMVsEfr8q7jONk95AyG2zo1ToOc5xSprz/vldTvnruN1GtDKfwAvibum1F27GB3Ll9cYzsekGPmnAp0/5FlsOP8ITxuaeRZrovV9s22oqOw9banT2AAv0avzAJTo0L87QyJhmFI4= 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=QFRcz+Ed; arc=none smtp.client-ip=209.85.166.176 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="QFRcz+Ed" Received: by mail-il1-f176.google.com with SMTP id e9e14a558f8ab-36b0e1301e3so2211985ab.2 for ; Fri, 12 Apr 2024 13:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712953248; x=1713558048; 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=G4g0asrIwIh0jCELCnJaY/AHU8getaccX1K08gj5vk8=; b=QFRcz+EdW4orrkGttpb70v1AenoRf5hHbOjSEzSneKf7kXobdukBi91dUhwTLxuePs Lw0XXYzTuFf8RuwoL5nmkUjVCDapsaN+kO46ln5g3arbyVQdpgdSzbo2V9w1ASqjh5AN NRqmvlxHn+UswtqMKQVxDFyyyYZtgXSu2j8p3sHkP+TZ4VDzg1IxEoYW5iFTYWyflOHo RzHN0YDsfT68erppBJG+3uGPHuxOUUkgjAzKhbAI4m5vrnOYz7vearMEtgtVS+QyuO8b CDqKQ1HWdQsvAiDECh+xvyMWc5A/D2eYMMjt9P+LTSmkieRSJfNEE5Z6S9vDJt9vuT5s 17NA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712953248; x=1713558048; 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=G4g0asrIwIh0jCELCnJaY/AHU8getaccX1K08gj5vk8=; b=fvlFeITZ0R+maV7v2b8Is+ZhRaD+wvhGiZtEVDWS4TWkfejDETTPtxfpPIylO4nBVd 3o37PooCQNJ1kVZiUo26M/j/h6fP2b004WuRrSOQDZQzWm3pItfw5Bna+ayBQZisaRBA 2bx1e5DeoFE8EMfSutdq5F1rqR/hI91ZVVFdb0RU6xk13w735uaNEAFRIWc5Fdie7pjz E9YgSn6CsGvzR+Y18HQWhH0ufq8RSjU7wG10SvhxqGlUXkNfgxB4CFyrqj2z26GlSstg X+OVppTXtnHIhUp3JcenBplCN26e5d5Dhtoli4QDjEiBl15lQtzFxcJWx3crnRp424VR gFKg== X-Forwarded-Encrypted: i=1; AJvYcCUDR3wr+pSMssG5mTPXuBPh4Nj2lloo2uxbp6P3Gx2KTVlZYRecqVKtgWzBTpxrY3FjMvs3T4q8P5MxPr6Oeh0yEmI/E5khfFA9 X-Gm-Message-State: AOJu0YxwXCcSrhbx6Fjk5tWFTW1LzFQ9W6X/FHkXQbjxP4v2ZK+8g2lY LljLwECHgakZ2pHjvA2DL7EhKxw9NoWv1t/w6zq4jNKxcvKgrb2J31fFAmLGnUU= X-Google-Smtp-Source: AGHT+IFpjh0cclgh6ATH3N1bYJeehFia9hHxmNB9H0B6FBqe3hOIKZovvCJzuOOC0WQ06VxvLw7Jfw== X-Received: by 2002:a05:6e02:20e5:b0:36a:daf:533f with SMTP id q5-20020a056e0220e500b0036a0daf533fmr4183114ilv.0.1712953248485; Fri, 12 Apr 2024 13:20:48 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id f13-20020a63100d000000b005f41aeec262sm3127345pgl.44.2024.04.12.13.20.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 13:20:47 -0700 (PDT) Date: Fri, 12 Apr 2024 13:20:45 -0700 From: Charlie Jenkins To: Evan Green Cc: Conor Dooley , Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Guo Ren , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Conor Dooley , =?iso-8859-1?Q?Cl=E9ment_L=E9ger?= , Jonathan Corbet , Shuah Khan , linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Palmer Dabbelt , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH 16/19] riscv: hwprobe: Add vendor extension probing Message-ID: References: <20240411-dev-charlie-support_thead_vector_6_9-v1-0-4af9815ec746@rivosinc.com> <20240411-dev-charlie-support_thead_vector_6_9-v1-16-4af9815ec746@rivosinc.com> Precedence: bulk X-Mailing-List: linux-doc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: On Fri, Apr 12, 2024 at 12:07:46PM -0700, Evan Green wrote: > On Fri, Apr 12, 2024 at 11:17 AM Charlie Jenkins wrote: > > > > On Fri, Apr 12, 2024 at 10:05:21AM -0700, Evan Green wrote: > > > On Thu, Apr 11, 2024 at 9:12 PM Charlie Jenkins wrote: > > > > > > > > Add a new hwprobe key "RISCV_HWPROBE_KEY_VENDOR_EXT_0" which allows > > > > userspace to probe for the new RISCV_ISA_VENDOR_EXT_XTHEADVECTOR vendor > > > > extension. > > > > > > > > Signed-off-by: Charlie Jenkins > > > > --- > > > > arch/riscv/include/asm/hwprobe.h | 4 +-- > > > > arch/riscv/include/uapi/asm/hwprobe.h | 10 +++++- > > > > arch/riscv/kernel/sys_hwprobe.c | 59 +++++++++++++++++++++++++++++++++-- > > > > 3 files changed, 68 insertions(+), 5 deletions(-) > > > > > > > > diff --git a/arch/riscv/include/asm/hwprobe.h b/arch/riscv/include/asm/hwprobe.h > > > > index 630507dff5ea..e68496b4f8de 100644 > > > > --- a/arch/riscv/include/asm/hwprobe.h > > > > +++ b/arch/riscv/include/asm/hwprobe.h > > > > @@ -1,6 +1,6 @@ > > > > /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ > > > > /* > > > > - * Copyright 2023 Rivos, Inc > > > > + * Copyright 2023-2024 Rivos, Inc > > > > */ > > > > > > > > #ifndef _ASM_HWPROBE_H > > > > @@ -8,7 +8,7 @@ > > > > > > > > #include > > > > > > > > -#define RISCV_HWPROBE_MAX_KEY 6 > > > > +#define RISCV_HWPROBE_MAX_KEY 7 > > > > > > > > static inline bool riscv_hwprobe_key_is_valid(__s64 key) > > > > { > > > > diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uapi/asm/hwprobe.h > > > > index 9f2a8e3ff204..6614d3adfc75 100644 > > > > --- a/arch/riscv/include/uapi/asm/hwprobe.h > > > > +++ b/arch/riscv/include/uapi/asm/hwprobe.h > > > > @@ -1,6 +1,6 @@ > > > > /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ > > > > /* > > > > - * Copyright 2023 Rivos, Inc > > > > + * Copyright 2023-2024 Rivos, Inc > > > > */ > > > > > > > > #ifndef _UAPI_ASM_HWPROBE_H > > > > @@ -67,6 +67,14 @@ struct riscv_hwprobe { > > > > #define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0) > > > > #define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0) > > > > #define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6 > > > > +/* > > > > + * It is not possible for one CPU to have multiple vendor ids, so each vendor > > > > + * has its own vendor extension "namespace". The keys for each vendor starts > > > > + * at zero. > > > > + */ > > > > +#define RISCV_HWPROBE_KEY_VENDOR_EXT_0 7 > > > > + /* T-Head */ > > > > +#define RISCV_HWPROBE_VENDOR_EXT_XTHEADVECTOR (1 << 0) > > > > /* Increase RISCV_HWPROBE_MAX_KEY when adding items. */ > > > > > > > > /* Flags */ > > > > diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprobe.c > > > > index e0a42c851511..365ce7380443 100644 > > > > --- a/arch/riscv/kernel/sys_hwprobe.c > > > > +++ b/arch/riscv/kernel/sys_hwprobe.c > > > > @@ -69,7 +69,8 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair, > > > > if (riscv_isa_extension_available(NULL, c)) > > > > pair->value |= RISCV_HWPROBE_IMA_C; > > > > > > > > - if (has_vector() && !riscv_has_vendor_extension_unlikely(RISCV_ISA_VENDOR_EXT_XTHEADVECTOR)) > > > > + if (has_vector() && > > > > + !__riscv_isa_vendor_extension_available(NULL, RISCV_ISA_VENDOR_EXT_XTHEADVECTOR)) > > > > pair->value |= RISCV_HWPROBE_IMA_V; > > > > > > > > /* > > > > @@ -112,7 +113,8 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair, > > > > EXT_KEY(ZACAS); > > > > EXT_KEY(ZICOND); > > > > > > > > - if (has_vector() && !riscv_has_vendor_extension_unlikely(RISCV_ISA_VENDOR_EXT_XTHEADVECTOR)) { > > > > + if (has_vector() && > > > > + !riscv_has_vendor_extension_unlikely(RISCV_ISA_VENDOR_EXT_XTHEADVECTOR)) { > > > > EXT_KEY(ZVBB); > > > > EXT_KEY(ZVBC); > > > > EXT_KEY(ZVKB); > > > > @@ -139,6 +141,55 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair, > > > > pair->value &= ~missing; > > > > } > > > > > > > > +static void hwprobe_isa_vendor_ext0(struct riscv_hwprobe *pair, > > > > + const struct cpumask *cpus) > > > > +{ > > > > + int cpu; > > > > + u64 missing = 0; > > > > + > > > > + pair->value = 0; > > > > + > > > > + struct riscv_hwprobe mvendorid = { > > > > + .key = RISCV_HWPROBE_KEY_MVENDORID, > > > > + .value = 0 > > > > + }; > > > > + > > > > + hwprobe_arch_id(&mvendorid, cpus); > > > > + > > > > + /* Set value to zero if CPUs in the set do not have the same vendor. */ > > > > + if (mvendorid.value == -1ULL) > > > > + return; > > > > + > > > > + /* > > > > + * Loop through and record vendor extensions that 1) anyone has, and > > > > + * 2) anyone doesn't have. > > > > + */ > > > > + for_each_cpu(cpu, cpus) { > > > > + struct riscv_isainfo *isavendorinfo = &hart_isa_vendor[cpu]; > > > > + > > > > +#define VENDOR_EXT_KEY(ext) \ > > > > + do { \ > > > > + if (__riscv_isa_vendor_extension_available(isavendorinfo->isa, \ > > > > + RISCV_ISA_VENDOR_EXT_##ext)) \ > > > > + pair->value |= RISCV_HWPROBE_VENDOR_EXT_##ext; \ > > > > + else \ > > > > + missing |= RISCV_HWPROBE_VENDOR_EXT_##ext; \ > > > > + } while (false) > > > > + > > > > + /* > > > > + * Only use VENDOR_EXT_KEY() for extensions which can be exposed to userspace, > > > > + * regardless of the kernel's configuration, as no other checks, besides > > > > + * presence in the hart_vendor_isa bitmap, are made. > > > > + */ > > > > + VENDOR_EXT_KEY(XTHEADVECTOR); > > > > + > > > > +#undef VENDOR_EXT_KEY > > > > > > Hey Charlie, > > > Thanks for writing this up! At the very least I think the > > > THEAD-specific stuff should probably end up in its own file, otherwise > > > it'll get chaotic with vendors clamoring to add stuff right here. > > > > Great idea! > > > > > What do you think about this approach: > > > * We leave RISCV_HWPROBE_MAX_KEY as the max key for the "generic > > > world", eg 6-ish > > > * We define that any key above 0x8000000000000000 is in the vendor > > > space, so the meaning of the keys depends first on the mvendorid > > > value. > > > * In the kernel code, each new vendor adds on to a global struct, > > > which might look something like: > > > struct hwprobe_vendor_space vendor_space[] = { > > > { > > > .mvendorid = VENDOR_THEAD, > > > .max_hwprobe_key = THEAD_MAX_HWPROBE_KEY, // currently > > > 1 or 0x8000000000000001 with what you've got. > > > .hwprobe_fn = thead_hwprobe > > > }, > > > ... > > > }; > > > > > > * A hwprobe_thead.c implements thead_hwprobe(), and is called > > > whenever the generic hwprobe encounters a key >=0x8000000000000000. > > > * Generic code for setting up the VDSO can then still call the > > > vendor-specific hwprobe_fn() repeatedly with an "all CPUs" mask from > > > the base to max_hwprobe_key and set up the cached tables in userspace. > > > * Since the VDSO data has limited space we may have to cap the number > > > of vendor keys we cache to be lower than max_hwprobe_key. Since the > > > data itself is not exposed to usermode we can raise this cap later if > > > needed. > > > > I know vendor extensions are kind of the "wild west" of riscv, but in > > spite of that I want to design a consistent API. The issue I had with > > having this "vendor space" for exposing vendor extensions was that this > > is something that is inherently the same for all vendors. I see a vendor > > space like this more applicable for something like > > "RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE" where a vendor has a specific > > value they would like to expose. I do agree that having a vendor space > > is a good design choice, but I am not convinced that vendor extensions > > are the proper use-case. > > > > By having RISCV_HWPROBE_KEY_VENDOR_EXT_0 we can expose the vendor > > extensions in the same way that standard extensions are exposed, with a > > bitmask representing each extension. If these are instead in the vendor > > space, each vendor would probably be inclined to introduce a key like > > RISCV_HWPROBE_KEY_THEAD_EXT_0 that returns a bitmask of all of the thead > > vendor extensions. This duplicated effort is what I am trying to avoid. > > The alternative would be that vendors have a separate key for each > > vendor extension they would like to expose, but that is strictly less > > efficient than the existing bitmask probing. > > > > Do you think that having the vendor space is appropriate for vendor > > extensions given my concerns? > > I do see what you're going for. It's tidy for a bitmask to just let > anyone allocate the next bit, but leaves you with the same problem > when a vendor decides they want to expose an enum, or decides they > want to expose a bazillion things. I think a generalized version of This patch is strictly to expose if a vendor extension is supported, how does exposing enums factor in here? > the approach you've written would be: simply let vendors allocate keys > from the same global space we're already using. My worry was that it I am missing how my proposal suggests allowing vendors to allocate keys in a global space. > would turn into an expansive suburban sprawl of mostly dead bits, or > in the case of vendor-specific keys, full of "if (mvendor_id() != > MINE) return 0;". My hope with the vendored keyspace is it would keep An application will always need to check vendorid before calling hwprobe with a vendor-specific feature? If that hwprobe support is a key above 1<<63, then the application will need to pass that vendor-specific key and interpret the vendor-specific value. If that hwprobe support is what I have proposed here, then the user calls the standardized vendor extension hwprobe endpoint and then needs to interpret the result based on the vendor of the cpumask. In both cases they need to check the vendorid of the cpumask. In the test case I added I failed to check the vendorid but I should have had that. > the sprawl from polluting the general array of (hopefully valuable) > info with stuff that's likely to become less relevant as time passes. > It also lowers the bar a bit to make it easier for vendors to expose > bits, as they don't consume global space for everyone for all of time, > just themselves. The vendor keys are tied directly to the vendor. So as it grows we would have something like: #define RISCV_HWPROBE_KEY_VENDOR_EXT_0 7 /* T-Head */ #define RISCV_HWPROBE_VENDOR_EXT_XTHEADVECTOR (1 << 0) #define RISCV_HWPROBE_VENDOR_EXT_XTHEAD2 (2 << 0) #define RISCV_HWPROBE_VENDOR_EXT_XTHEAD3 (3 << 0) /* Vendor 2 */ #define RISCV_HWPROBE_VENDOR_EXT_XVENDOR1 (1 << 0) #define RISCV_HWPROBE_VENDOR_EXT_XVENDOR2 (2 << 0) /* Vendor 3 */ ... The keys overlap between vendors. To determine which extension a vendor supports, hwprobe gets data from hart_isa_vendor[cpu]. If the vendor is vendor 2, it is not possible for a vendor extension from vendor 3 to end up in there. Only the extensions from that vendor can be supported by that vendor's hardware. > > So yes, personally I'm still in the camp of siloing the vendor stuff > off to its own area. I don't quite see how what I have proposed doesn't "silo" the extensions that pertain to each vendor since the keys are specific to each vendor. - Charlie > -Evan 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 11242C4345F for ; Fri, 12 Apr 2024 20:21:01 +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-Transfer-Encoding:Content-Type: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=TWFnov2PuHNv4MFmJ5CpkMS2VAa9P88q2M1bCST2ogg=; b=iSIqJTKBNxZAvl HNrSuwy6X0KED+dYuhaLQHhwNbY5Af5CQHfEJlZY+FaTxvtVsrxVYrLLd17chwi3rAn3banXqqDtT ZgJuoF8G5EY28na9Khtrb2CFI9pcXHAJqacJrtTaqjd54zTtTSSksS2FLQcGcd/Q8y1mDpMmjL5VD Pwt7mM7gUjKWXKeGPT8AQwuExb1ccXZpC0clTatHp2J4lokwQ7XkkXNkgKdGIMBEhY+XvKWJpxEiD Ey9fcVPSGg7sxIt11g/YW1ozW5wHsA4i4guPYRSF1kzh+3utUq9VWgOLzPF33VcSiYZbEDFk1A7Of me6fSqBjDnvw/j8h1QmQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvNOI-00000001B8g-44dA; Fri, 12 Apr 2024 20:20:54 +0000 Received: from mail-il1-x130.google.com ([2607:f8b0:4864:20::130]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvNOE-00000001B6f-2wi3 for linux-riscv@lists.infradead.org; Fri, 12 Apr 2024 20:20:52 +0000 Received: by mail-il1-x130.google.com with SMTP id e9e14a558f8ab-36b0e1301e3so2212005ab.2 for ; Fri, 12 Apr 2024 13:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712953248; x=1713558048; 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=G4g0asrIwIh0jCELCnJaY/AHU8getaccX1K08gj5vk8=; b=MfDFuxQHbImBN5dPCOqtyceYyBvfCHI7LYX4XVmy7fai0caAon7HhobJ/cWaIyQkf1 BEqsY0tknm0NUXQYBiwNRP+FXhpk/acmbvKZwOg9b967Pkp2D8qJ4tbtm+JLICzSSK2v yUd8+eagespwUMiqPGMVmKB0n/sP7vLk3W+2rTEJZEicvVIp8ccOttV6g3L0yiMRoLSr LgvgDgprHmcjctfvvogLsA/Gmykmq5irpTj4KQlHql+G9/7Fkc5W+nNWlOWzoCxYbxAO gYJHlq5nGglqreb/+EUnNgr6EefHIbkhKQlGh1TfZJianBnzwbbPOyu/uq05ywCuHwwP bH3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712953248; x=1713558048; 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=G4g0asrIwIh0jCELCnJaY/AHU8getaccX1K08gj5vk8=; b=FBZ85GfenlOCKg9apJR+/LDEDcVtAm079bnBdoxGLNwm/WS8Tz9Z42Kf+Vx7uUXvtQ 5f8JiWyYiRXOErz9xTKvpyFDPupOunrL0esRbFxwHnzKY73BVEH4csbMlvb2YCQuptDO q9e8PANzK3MEHgjPFgbul1dX88KHCrxxcMECOHimo3JXHJKCig2hQ6D0o+Zd5t125Q/O LAz7XVq7Szl+3f+ILSwh0v14r0/PaJYTmC8eD8zSuhrVkXkYDWPEzFzOUhCV1pewEhSn Uov5p73GuyhRY1MAsr2Xtf9oTjYGqZZodjRhYcBb9WYLiys7zXsoetKbq4HlRlWFDnsx zozg== X-Forwarded-Encrypted: i=1; AJvYcCVfG6+nlQWF2Maxm+HX1/SQKwb2CT1TskofcCFNVOj17mdXUkMjpnQfCxJBrky+JtIVtVPNkY/rT03nCbnrso4n4Qp6J0XSZGvW9LM/W9WB X-Gm-Message-State: AOJu0YyYoV16uMVgY1aAhWBz85bfMmAG99McOuryrwBOPjm0Cu/ycsnX hwjdSZ3G22Yzd2VSIXMi4JRP2nQ7oVpzJUuKAaezUSfxVrbTuwlQrohoIqZwtBM= X-Google-Smtp-Source: AGHT+IFpjh0cclgh6ATH3N1bYJeehFia9hHxmNB9H0B6FBqe3hOIKZovvCJzuOOC0WQ06VxvLw7Jfw== X-Received: by 2002:a05:6e02:20e5:b0:36a:daf:533f with SMTP id q5-20020a056e0220e500b0036a0daf533fmr4183114ilv.0.1712953248485; Fri, 12 Apr 2024 13:20:48 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id f13-20020a63100d000000b005f41aeec262sm3127345pgl.44.2024.04.12.13.20.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 13:20:47 -0700 (PDT) Date: Fri, 12 Apr 2024 13:20:45 -0700 From: Charlie Jenkins To: Evan Green Cc: Conor Dooley , Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Guo Ren , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Conor Dooley , =?iso-8859-1?Q?Cl=E9ment_L=E9ger?= , Jonathan Corbet , Shuah Khan , linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Palmer Dabbelt , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH 16/19] riscv: hwprobe: Add vendor extension probing Message-ID: References: <20240411-dev-charlie-support_thead_vector_6_9-v1-0-4af9815ec746@rivosinc.com> <20240411-dev-charlie-support_thead_vector_6_9-v1-16-4af9815ec746@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-20240412_132050_986457_C5188D72 X-CRM114-Status: GOOD ( 64.56 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBcHIgMTIsIDIwMjQgYXQgMTI6MDc6NDZQTSAtMDcwMCwgRXZhbiBHcmVlbiB3cm90 ZToKPiBPbiBGcmksIEFwciAxMiwgMjAyNCBhdCAxMToxN+KAr0FNIENoYXJsaWUgSmVua2lucyA8 Y2hhcmxpZUByaXZvc2luYy5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIEZyaSwgQXByIDEyLCAyMDI0 IGF0IDEwOjA1OjIxQU0gLTA3MDAsIEV2YW4gR3JlZW4gd3JvdGU6Cj4gPiA+IE9uIFRodSwgQXBy IDExLCAyMDI0IGF0IDk6MTLigK9QTSBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVAcml2b3NpbmMu Y29tPiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IEFkZCBhIG5ldyBod3Byb2JlIGtleSAiUklTQ1Zf SFdQUk9CRV9LRVlfVkVORE9SX0VYVF8wIiB3aGljaCBhbGxvd3MKPiA+ID4gPiB1c2Vyc3BhY2Ug dG8gcHJvYmUgZm9yIHRoZSBuZXcgUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SIHZl bmRvcgo+ID4gPiA+IGV4dGVuc2lvbi4KPiA+ID4gPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IENo YXJsaWUgSmVua2lucyA8Y2hhcmxpZUByaXZvc2luYy5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4g IGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oICAgICAgfCAgNCArLS0KPiA+ID4gPiAg YXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2h3cHJvYmUuaCB8IDEwICsrKysrLQo+ID4gPiA+ ICBhcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jICAgICAgIHwgNTkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiA+Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2Fy Y2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9o d3Byb2JlLmgKPiA+ID4gPiBpbmRleCA2MzA1MDdkZmY1ZWEuLmU2ODQ5NmI0ZjhkZSAxMDA2NDQK PiA+ID4gPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2h3cHJvYmUuaAo+ID4gPiA+ICsr KyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oCj4gPiA+ID4gQEAgLTEsNiArMSw2 IEBACj4gPiA+ID4gIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGlu dXgtc3lzY2FsbC1ub3RlICovCj4gPiA+ID4gIC8qCj4gPiA+ID4gLSAqIENvcHlyaWdodCAyMDIz IFJpdm9zLCBJbmMKPiA+ID4gPiArICogQ29weXJpZ2h0IDIwMjMtMjAyNCBSaXZvcywgSW5jCj4g PiA+ID4gICAqLwo+ID4gPiA+Cj4gPiA+ID4gICNpZm5kZWYgX0FTTV9IV1BST0JFX0gKPiA+ID4g PiBAQCAtOCw3ICs4LDcgQEAKPiA+ID4gPgo+ID4gPiA+ICAjaW5jbHVkZSA8dWFwaS9hc20vaHdw cm9iZS5oPgo+ID4gPiA+Cj4gPiA+ID4gLSNkZWZpbmUgUklTQ1ZfSFdQUk9CRV9NQVhfS0VZIDYK PiA+ID4gPiArI2RlZmluZSBSSVNDVl9IV1BST0JFX01BWF9LRVkgNwo+ID4gPiA+Cj4gPiA+ID4g IHN0YXRpYyBpbmxpbmUgYm9vbCByaXNjdl9od3Byb2JlX2tleV9pc192YWxpZChfX3M2NCBrZXkp Cj4gPiA+ID4gIHsKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkv YXNtL2h3cHJvYmUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9od3Byb2JlLmgKPiA+ ID4gPiBpbmRleCA5ZjJhOGUzZmYyMDQuLjY2MTRkM2FkZmM3NSAxMDA2NDQKPiA+ID4gPiAtLS0g YS9hcmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20vaHdwcm9iZS5oCj4gPiA+ID4gKysrIGIvYXJj aC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2h3cHJvYmUuaAo+ID4gPiA+IEBAIC0xLDYgKzEsNiBA QAo+ID4gPiA+ICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExpbnV4 LXN5c2NhbGwtbm90ZSAqLwo+ID4gPiA+ICAvKgo+ID4gPiA+IC0gKiBDb3B5cmlnaHQgMjAyMyBS aXZvcywgSW5jCj4gPiA+ID4gKyAqIENvcHlyaWdodCAyMDIzLTIwMjQgUml2b3MsIEluYwo+ID4g PiA+ICAgKi8KPiA+ID4gPgo+ID4gPiA+ICAjaWZuZGVmIF9VQVBJX0FTTV9IV1BST0JFX0gKPiA+ ID4gPiBAQCAtNjcsNiArNjcsMTQgQEAgc3RydWN0IHJpc2N2X2h3cHJvYmUgewo+ID4gPiA+ICAj ZGVmaW5lICAgICAgICAgICAgICAgIFJJU0NWX0hXUFJPQkVfTUlTQUxJR05FRF9VTlNVUFBPUlRF RCAgICAoNCA8PCAwKQo+ID4gPiA+ICAjZGVmaW5lICAgICAgICAgICAgICAgIFJJU0NWX0hXUFJP QkVfTUlTQUxJR05FRF9NQVNLICAgICAgICAgICAoNyA8PCAwKQo+ID4gPiA+ICAjZGVmaW5lIFJJ U0NWX0hXUFJPQkVfS0VZX1pJQ0JPWl9CTE9DS19TSVpFICAgIDYKPiA+ID4gPiArLyoKPiA+ID4g PiArICogSXQgaXMgbm90IHBvc3NpYmxlIGZvciBvbmUgQ1BVIHRvIGhhdmUgbXVsdGlwbGUgdmVu ZG9yIGlkcywgc28gZWFjaCB2ZW5kb3IKPiA+ID4gPiArICogaGFzIGl0cyBvd24gdmVuZG9yIGV4 dGVuc2lvbiAibmFtZXNwYWNlIi4gVGhlIGtleXMgZm9yIGVhY2ggdmVuZG9yIHN0YXJ0cwo+ID4g PiA+ICsgKiBhdCB6ZXJvLgo+ID4gPiA+ICsgKi8KPiA+ID4gPiArI2RlZmluZSBSSVNDVl9IV1BS T0JFX0tFWV9WRU5ET1JfRVhUXzAgNwo+ID4gPiA+ICsgLyogVC1IZWFkICovCj4gPiA+ID4gKyNk ZWZpbmUgICAgICAgICAgICAgICAgUklTQ1ZfSFdQUk9CRV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RP UiAgICgxIDw8IDApCj4gPiA+ID4gIC8qIEluY3JlYXNlIFJJU0NWX0hXUFJPQkVfTUFYX0tFWSB3 aGVuIGFkZGluZyBpdGVtcy4gKi8KPiA+ID4gPgo+ID4gPiA+ICAvKiBGbGFncyAqLwo+ID4gPiA+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jIGIvYXJjaC9yaXNj di9rZXJuZWwvc3lzX2h3cHJvYmUuYwo+ID4gPiA+IGluZGV4IGUwYTQyYzg1MTUxMS4uMzY1Y2U3 MzgwNDQzIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3N5c19od3Byb2Jl LmMKPiA+ID4gPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jCj4gPiA+ID4g QEAgLTY5LDcgKzY5LDggQEAgc3RhdGljIHZvaWQgaHdwcm9iZV9pc2FfZXh0MChzdHJ1Y3Qgcmlz Y3ZfaHdwcm9iZSAqcGFpciwKPiA+ID4gPiAgICAgICAgIGlmIChyaXNjdl9pc2FfZXh0ZW5zaW9u X2F2YWlsYWJsZShOVUxMLCBjKSkKPiA+ID4gPiAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUg fD0gUklTQ1ZfSFdQUk9CRV9JTUFfQzsKPiA+ID4gPgo+ID4gPiA+IC0gICAgICAgaWYgKGhhc192 ZWN0b3IoKSAmJiAhcmlzY3ZfaGFzX3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNB X1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SKSkKPiA+ID4gPiArICAgICAgIGlmIChoYXNfdmVjdG9y KCkgJiYKPiA+ID4gPiArICAgICAgICAgICAhX19yaXNjdl9pc2FfdmVuZG9yX2V4dGVuc2lvbl9h dmFpbGFibGUoTlVMTCwgUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SKSkKPiA+ID4g PiAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUgfD0gUklTQ1ZfSFdQUk9CRV9JTUFfVjsKPiA+ ID4gPgo+ID4gPiA+ICAgICAgICAgLyoKPiA+ID4gPiBAQCAtMTEyLDcgKzExMyw4IEBAIHN0YXRp YyB2b2lkIGh3cHJvYmVfaXNhX2V4dDAoc3RydWN0IHJpc2N2X2h3cHJvYmUgKnBhaXIsCj4gPiA+ ID4gICAgICAgICAgICAgICAgIEVYVF9LRVkoWkFDQVMpOwo+ID4gPiA+ICAgICAgICAgICAgICAg ICBFWFRfS0VZKFpJQ09ORCk7Cj4gPiA+ID4KPiA+ID4gPiAtICAgICAgICAgICAgICAgaWYgKGhh c192ZWN0b3IoKSAmJiAhcmlzY3ZfaGFzX3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1Zf SVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SKSkgewo+ID4gPiA+ICsgICAgICAgICAgICAgICBp ZiAoaGFzX3ZlY3RvcigpICYmCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAhcmlzY3ZfaGFz X3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVD VE9SKSkgewo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIEVYVF9LRVkoWlZCQik7Cj4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgRVhUX0tFWShaVkJDKTsKPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBFWFRfS0VZKFpWS0IpOwo+ID4gPiA+IEBAIC0xMzksNiArMTQx LDU1IEBAIHN0YXRpYyB2b2lkIGh3cHJvYmVfaXNhX2V4dDAoc3RydWN0IHJpc2N2X2h3cHJvYmUg KnBhaXIsCj4gPiA+ID4gICAgICAgICBwYWlyLT52YWx1ZSAmPSB+bWlzc2luZzsKPiA+ID4gPiAg fQo+ID4gPiA+Cj4gPiA+ID4gK3N0YXRpYyB2b2lkIGh3cHJvYmVfaXNhX3ZlbmRvcl9leHQwKHN0 cnVjdCByaXNjdl9od3Byb2JlICpwYWlyLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVzKQo+ID4gPiA+ICt7Cj4gPiA+ ID4gKyAgICAgICBpbnQgY3B1Owo+ID4gPiA+ICsgICAgICAgdTY0IG1pc3NpbmcgPSAwOwo+ID4g PiA+ICsKPiA+ID4gPiArICAgICAgIHBhaXItPnZhbHVlID0gMDsKPiA+ID4gPiArCj4gPiA+ID4g KyAgICAgICBzdHJ1Y3QgcmlzY3ZfaHdwcm9iZSBtdmVuZG9yaWQgPSB7Cj4gPiA+ID4gKyAgICAg ICAgICAgICAgIC5rZXkgPSBSSVNDVl9IV1BST0JFX0tFWV9NVkVORE9SSUQsCj4gPiA+ID4gKyAg ICAgICAgICAgICAgIC52YWx1ZSA9IDAKPiA+ID4gPiArICAgICAgIH07Cj4gPiA+ID4gKwo+ID4g PiA+ICsgICAgICAgaHdwcm9iZV9hcmNoX2lkKCZtdmVuZG9yaWQsIGNwdXMpOwo+ID4gPiA+ICsK PiA+ID4gPiArICAgICAgIC8qIFNldCB2YWx1ZSB0byB6ZXJvIGlmIENQVXMgaW4gdGhlIHNldCBk byBub3QgaGF2ZSB0aGUgc2FtZSB2ZW5kb3IuICovCj4gPiA+ID4gKyAgICAgICBpZiAobXZlbmRv cmlkLnZhbHVlID09IC0xVUxMKQo+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ ID4gKwo+ID4gPiA+ICsgICAgICAgLyoKPiA+ID4gPiArICAgICAgICAqIExvb3AgdGhyb3VnaCBh bmQgcmVjb3JkIHZlbmRvciBleHRlbnNpb25zIHRoYXQgMSkgYW55b25lIGhhcywgYW5kCj4gPiA+ ID4gKyAgICAgICAgKiAyKSBhbnlvbmUgZG9lc24ndCBoYXZlLgo+ID4gPiA+ICsgICAgICAgICov Cj4gPiA+ID4gKyAgICAgICBmb3JfZWFjaF9jcHUoY3B1LCBjcHVzKSB7Cj4gPiA+ID4gKyAgICAg ICAgICAgICAgIHN0cnVjdCByaXNjdl9pc2FpbmZvICppc2F2ZW5kb3JpbmZvID0gJmhhcnRfaXNh X3ZlbmRvcltjcHVdOwo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBWRU5ET1JfRVhUX0tFWShl eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ID4gPiA+ICsgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiA+ID4g KyAgICAgICAgICAgICAgIGlmIChfX3Jpc2N2X2lzYV92ZW5kb3JfZXh0ZW5zaW9uX2F2YWlsYWJs ZShpc2F2ZW5kb3JpbmZvLT5pc2EsICAgICAgICAgIFwKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9S X0VYVF8jI2V4dCkpICAgXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhaXItPnZh bHVlIHw9IFJJU0NWX0hXUFJPQkVfVkVORE9SX0VYVF8jI2V4dDsgICAgICAgICAgICAgICAgICBc Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICBtaXNzaW5nIHw9IFJJU0NWX0hXUFJPQkVfVkVORE9SX0VYVF8jI2V4 dDsgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiA+ICsgICAgICAgfSB3aGlsZSAoZmFsc2Up Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgLyoKPiA+ID4gPiArICAgICAgICAqIE9ubHkgdXNl IFZFTkRPUl9FWFRfS0VZKCkgZm9yIGV4dGVuc2lvbnMgd2hpY2ggY2FuIGJlIGV4cG9zZWQgdG8g dXNlcnNwYWNlLAo+ID4gPiA+ICsgICAgICAgICogcmVnYXJkbGVzcyBvZiB0aGUga2VybmVsJ3Mg Y29uZmlndXJhdGlvbiwgYXMgbm8gb3RoZXIgY2hlY2tzLCBiZXNpZGVzCj4gPiA+ID4gKyAgICAg ICAgKiBwcmVzZW5jZSBpbiB0aGUgaGFydF92ZW5kb3JfaXNhIGJpdG1hcCwgYXJlIG1hZGUuCj4g PiA+ID4gKyAgICAgICAgKi8KPiA+ID4gPiArICAgICAgIFZFTkRPUl9FWFRfS0VZKFhUSEVBRFZF Q1RPUik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsjdW5kZWYgVkVORE9SX0VYVF9LRVkKPiA+ID4KPiA+ ID4gSGV5IENoYXJsaWUsCj4gPiA+IFRoYW5rcyBmb3Igd3JpdGluZyB0aGlzIHVwISBBdCB0aGUg dmVyeSBsZWFzdCBJIHRoaW5rIHRoZQo+ID4gPiBUSEVBRC1zcGVjaWZpYyBzdHVmZiBzaG91bGQg cHJvYmFibHkgZW5kIHVwIGluIGl0cyBvd24gZmlsZSwgb3RoZXJ3aXNlCj4gPiA+IGl0J2xsIGdl dCBjaGFvdGljIHdpdGggdmVuZG9ycyBjbGFtb3JpbmcgdG8gYWRkIHN0dWZmIHJpZ2h0IGhlcmUu Cj4gPgo+ID4gR3JlYXQgaWRlYSEKPiA+Cj4gPiA+IFdoYXQgZG8geW91IHRoaW5rIGFib3V0IHRo aXMgYXBwcm9hY2g6Cj4gPiA+ICAqIFdlIGxlYXZlIFJJU0NWX0hXUFJPQkVfTUFYX0tFWSBhcyB0 aGUgbWF4IGtleSBmb3IgdGhlICJnZW5lcmljCj4gPiA+IHdvcmxkIiwgZWcgNi1pc2gKPiA+ID4g ICogV2UgZGVmaW5lIHRoYXQgYW55IGtleSBhYm92ZSAweDgwMDAwMDAwMDAwMDAwMDAgaXMgaW4g dGhlIHZlbmRvcgo+ID4gPiBzcGFjZSwgc28gdGhlIG1lYW5pbmcgb2YgdGhlIGtleXMgZGVwZW5k cyBmaXJzdCBvbiB0aGUgbXZlbmRvcmlkCj4gPiA+IHZhbHVlLgo+ID4gPiAgKiBJbiB0aGUga2Vy bmVsIGNvZGUsIGVhY2ggbmV3IHZlbmRvciBhZGRzIG9uIHRvIGEgZ2xvYmFsIHN0cnVjdCwKPiA+ ID4gd2hpY2ggbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZToKPiA+ID4gc3RydWN0IGh3cHJvYmVf dmVuZG9yX3NwYWNlIHZlbmRvcl9zcGFjZVtdID0gewo+ID4gPiAgICAgICAgIHsKPiA+ID4gICAg ICAgICAgICAgICAgIC5tdmVuZG9yaWQgPSBWRU5ET1JfVEhFQUQsCj4gPiA+ICAgICAgICAgICAg ICAgICAubWF4X2h3cHJvYmVfa2V5ID0gVEhFQURfTUFYX0hXUFJPQkVfS0VZLCAvLyBjdXJyZW50 bHkKPiA+ID4gMSBvciAweDgwMDAwMDAwMDAwMDAwMDEgd2l0aCB3aGF0IHlvdSd2ZSBnb3QuCj4g PiA+ICAgICAgICAgICAgICAgICAuaHdwcm9iZV9mbiA9IHRoZWFkX2h3cHJvYmUKPiA+ID4gICAg ICAgICB9LAo+ID4gPiAgICAgICAgIC4uLgo+ID4gPiB9Owo+ID4gPgo+ID4gPiAgKiBBIGh3cHJv YmVfdGhlYWQuYyBpbXBsZW1lbnRzIHRoZWFkX2h3cHJvYmUoKSwgYW5kIGlzIGNhbGxlZAo+ID4g PiB3aGVuZXZlciB0aGUgZ2VuZXJpYyBod3Byb2JlIGVuY291bnRlcnMgYSBrZXkgPj0weDgwMDAw MDAwMDAwMDAwMDAuCj4gPiA+ICAqIEdlbmVyaWMgY29kZSBmb3Igc2V0dGluZyB1cCB0aGUgVkRT TyBjYW4gdGhlbiBzdGlsbCBjYWxsIHRoZQo+ID4gPiB2ZW5kb3Itc3BlY2lmaWMgaHdwcm9iZV9m bigpIHJlcGVhdGVkbHkgd2l0aCBhbiAiYWxsIENQVXMiIG1hc2sgZnJvbQo+ID4gPiB0aGUgYmFz ZSB0byBtYXhfaHdwcm9iZV9rZXkgYW5kIHNldCB1cCB0aGUgY2FjaGVkIHRhYmxlcyBpbiB1c2Vy c3BhY2UuCj4gPiA+ICAqIFNpbmNlIHRoZSBWRFNPIGRhdGEgaGFzIGxpbWl0ZWQgc3BhY2Ugd2Ug bWF5IGhhdmUgdG8gY2FwIHRoZSBudW1iZXIKPiA+ID4gb2YgdmVuZG9yIGtleXMgd2UgY2FjaGUg dG8gYmUgbG93ZXIgdGhhbiBtYXhfaHdwcm9iZV9rZXkuIFNpbmNlIHRoZQo+ID4gPiBkYXRhIGl0 c2VsZiBpcyBub3QgZXhwb3NlZCB0byB1c2VybW9kZSB3ZSBjYW4gcmFpc2UgdGhpcyBjYXAgbGF0 ZXIgaWYKPiA+ID4gbmVlZGVkLgo+ID4KPiA+IEkga25vdyB2ZW5kb3IgZXh0ZW5zaW9ucyBhcmUg a2luZCBvZiB0aGUgIndpbGQgd2VzdCIgb2YgcmlzY3YsIGJ1dCBpbgo+ID4gc3BpdGUgb2YgdGhh dCBJIHdhbnQgdG8gZGVzaWduIGEgY29uc2lzdGVudCBBUEkuIFRoZSBpc3N1ZSBJIGhhZCB3aXRo Cj4gPiBoYXZpbmcgdGhpcyAidmVuZG9yIHNwYWNlIiBmb3IgZXhwb3NpbmcgdmVuZG9yIGV4dGVu c2lvbnMgd2FzIHRoYXQgdGhpcwo+ID4gaXMgc29tZXRoaW5nIHRoYXQgaXMgaW5oZXJlbnRseSB0 aGUgc2FtZSBmb3IgYWxsIHZlbmRvcnMuIEkgc2VlIGEgdmVuZG9yCj4gPiBzcGFjZSBsaWtlIHRo aXMgbW9yZSBhcHBsaWNhYmxlIGZvciBzb21ldGhpbmcgbGlrZQo+ID4gIlJJU0NWX0hXUFJPQkVf S0VZX1pJQ0JPWl9CTE9DS19TSVpFIiB3aGVyZSBhIHZlbmRvciBoYXMgYSBzcGVjaWZpYwo+ID4g dmFsdWUgdGhleSB3b3VsZCBsaWtlIHRvIGV4cG9zZS4gSSBkbyBhZ3JlZSB0aGF0IGhhdmluZyBh IHZlbmRvciBzcGFjZQo+ID4gaXMgYSBnb29kIGRlc2lnbiBjaG9pY2UsIGJ1dCBJIGFtIG5vdCBj b252aW5jZWQgdGhhdCB2ZW5kb3IgZXh0ZW5zaW9ucwo+ID4gYXJlIHRoZSBwcm9wZXIgdXNlLWNh c2UuCj4gPgo+ID4gQnkgaGF2aW5nIFJJU0NWX0hXUFJPQkVfS0VZX1ZFTkRPUl9FWFRfMCB3ZSBj YW4gZXhwb3NlIHRoZSB2ZW5kb3IKPiA+IGV4dGVuc2lvbnMgaW4gdGhlIHNhbWUgd2F5IHRoYXQg c3RhbmRhcmQgZXh0ZW5zaW9ucyBhcmUgZXhwb3NlZCwgd2l0aCBhCj4gPiBiaXRtYXNrIHJlcHJl c2VudGluZyBlYWNoIGV4dGVuc2lvbi4gSWYgdGhlc2UgYXJlIGluc3RlYWQgaW4gdGhlIHZlbmRv cgo+ID4gc3BhY2UsIGVhY2ggdmVuZG9yIHdvdWxkIHByb2JhYmx5IGJlIGluY2xpbmVkIHRvIGlu dHJvZHVjZSBhIGtleSBsaWtlCj4gPiBSSVNDVl9IV1BST0JFX0tFWV9USEVBRF9FWFRfMCB0aGF0 IHJldHVybnMgYSBiaXRtYXNrIG9mIGFsbCBvZiB0aGUgdGhlYWQKPiA+IHZlbmRvciBleHRlbnNp b25zLiBUaGlzIGR1cGxpY2F0ZWQgZWZmb3J0IGlzIHdoYXQgSSBhbSB0cnlpbmcgdG8gYXZvaWQu Cj4gPiBUaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUgdGhhdCB2ZW5kb3JzIGhhdmUgYSBzZXBhcmF0 ZSBrZXkgZm9yIGVhY2gKPiA+IHZlbmRvciBleHRlbnNpb24gdGhleSB3b3VsZCBsaWtlIHRvIGV4 cG9zZSwgYnV0IHRoYXQgaXMgc3RyaWN0bHkgbGVzcwo+ID4gZWZmaWNpZW50IHRoYW4gdGhlIGV4 aXN0aW5nIGJpdG1hc2sgcHJvYmluZy4KPiA+Cj4gPiBEbyB5b3UgdGhpbmsgdGhhdCBoYXZpbmcg dGhlIHZlbmRvciBzcGFjZSBpcyBhcHByb3ByaWF0ZSBmb3IgdmVuZG9yCj4gPiBleHRlbnNpb25z IGdpdmVuIG15IGNvbmNlcm5zPwo+IAo+IEkgZG8gc2VlIHdoYXQgeW91J3JlIGdvaW5nIGZvci4g SXQncyB0aWR5IGZvciBhIGJpdG1hc2sgdG8ganVzdCBsZXQKPiBhbnlvbmUgYWxsb2NhdGUgdGhl IG5leHQgYml0LCBidXQgbGVhdmVzIHlvdSB3aXRoIHRoZSBzYW1lIHByb2JsZW0KPiB3aGVuIGEg dmVuZG9yIGRlY2lkZXMgdGhleSB3YW50IHRvIGV4cG9zZSBhbiBlbnVtLCBvciBkZWNpZGVzIHRo ZXkKPiB3YW50IHRvIGV4cG9zZSBhIGJhemlsbGlvbiB0aGluZ3MuIEkgdGhpbmsgYSBnZW5lcmFs aXplZCB2ZXJzaW9uIG9mCgpUaGlzIHBhdGNoIGlzIHN0cmljdGx5IHRvIGV4cG9zZSBpZiBhIHZl bmRvciBleHRlbnNpb24gaXMgc3VwcG9ydGVkLApob3cgZG9lcyBleHBvc2luZyBlbnVtcyBmYWN0 b3IgaW4gaGVyZT8KCj4gdGhlIGFwcHJvYWNoIHlvdSd2ZSB3cml0dGVuIHdvdWxkIGJlOiBzaW1w bHkgbGV0IHZlbmRvcnMgYWxsb2NhdGUga2V5cwo+IGZyb20gdGhlIHNhbWUgZ2xvYmFsIHNwYWNl IHdlJ3JlIGFscmVhZHkgdXNpbmcuIE15IHdvcnJ5IHdhcyB0aGF0IGl0CgpJIGFtIG1pc3Npbmcg aG93IG15IHByb3Bvc2FsIHN1Z2dlc3RzIGFsbG93aW5nIHZlbmRvcnMgdG8gYWxsb2NhdGUga2V5 cwppbiBhIGdsb2JhbCBzcGFjZS4KCj4gd291bGQgdHVybiBpbnRvIGFuIGV4cGFuc2l2ZSBzdWJ1 cmJhbiBzcHJhd2wgb2YgbW9zdGx5IGRlYWQgYml0cywgb3IKPiBpbiB0aGUgY2FzZSBvZiB2ZW5k b3Itc3BlY2lmaWMga2V5cywgZnVsbCBvZiAiaWYgKG12ZW5kb3JfaWQoKSAhPQo+IE1JTkUpIHJl dHVybiAwOyIuIE15IGhvcGUgd2l0aCB0aGUgdmVuZG9yZWQga2V5c3BhY2UgaXMgaXQgd291bGQg a2VlcAoKQW4gYXBwbGljYXRpb24gd2lsbCBhbHdheXMgbmVlZCB0byBjaGVjayB2ZW5kb3JpZCBi ZWZvcmUgY2FsbGluZyBod3Byb2JlCndpdGggYSB2ZW5kb3Itc3BlY2lmaWMgZmVhdHVyZT8gSWYg dGhhdCBod3Byb2JlIHN1cHBvcnQgaXMgYSBrZXkgYWJvdmUKMTw8NjMsIHRoZW4gdGhlIGFwcGxp Y2F0aW9uIHdpbGwgbmVlZCB0byBwYXNzIHRoYXQgdmVuZG9yLXNwZWNpZmljIGtleQphbmQgaW50 ZXJwcmV0IHRoZSB2ZW5kb3Itc3BlY2lmaWMgdmFsdWUuIElmIHRoYXQgaHdwcm9iZSBzdXBwb3J0 IGlzIHdoYXQKSSBoYXZlIHByb3Bvc2VkIGhlcmUsIHRoZW4gdGhlIHVzZXIgY2FsbHMgdGhlIHN0 YW5kYXJkaXplZCB2ZW5kb3IKZXh0ZW5zaW9uIGh3cHJvYmUgZW5kcG9pbnQgYW5kIHRoZW4gbmVl ZHMgdG8gaW50ZXJwcmV0IHRoZSByZXN1bHQgYmFzZWQKb24gdGhlIHZlbmRvciBvZiB0aGUgY3B1 bWFzay4gSW4gYm90aCBjYXNlcyB0aGV5IG5lZWQgdG8gY2hlY2sgdGhlCnZlbmRvcmlkIG9mIHRo ZSBjcHVtYXNrLiBJbiB0aGUgdGVzdCBjYXNlIEkgYWRkZWQgSSBmYWlsZWQgdG8gY2hlY2sgdGhl CnZlbmRvcmlkIGJ1dCBJIHNob3VsZCBoYXZlIGhhZCB0aGF0LgoKPiB0aGUgc3ByYXdsIGZyb20g cG9sbHV0aW5nIHRoZSBnZW5lcmFsIGFycmF5IG9mIChob3BlZnVsbHkgdmFsdWFibGUpCj4gaW5m byB3aXRoIHN0dWZmIHRoYXQncyBsaWtlbHkgdG8gYmVjb21lIGxlc3MgcmVsZXZhbnQgYXMgdGlt ZSBwYXNzZXMuCj4gSXQgYWxzbyBsb3dlcnMgdGhlIGJhciBhIGJpdCB0byBtYWtlIGl0IGVhc2ll ciBmb3IgdmVuZG9ycyB0byBleHBvc2UKPiBiaXRzLCBhcyB0aGV5IGRvbid0IGNvbnN1bWUgZ2xv YmFsIHNwYWNlIGZvciBldmVyeW9uZSBmb3IgYWxsIG9mIHRpbWUsCj4ganVzdCB0aGVtc2VsdmVz LgoKVGhlIHZlbmRvciBrZXlzIGFyZSB0aWVkIGRpcmVjdGx5IHRvIHRoZSB2ZW5kb3IuIFNvIGFz IGl0IGdyb3dzIHdlIHdvdWxkCmhhdmUgc29tZXRoaW5nIGxpa2U6CgojZGVmaW5lIFJJU0NWX0hX UFJPQkVfS0VZX1ZFTkRPUl9FWFRfMAk3Ci8qIFQtSGVhZCAqLwojZGVmaW5lCQlSSVNDVl9IV1BS T0JFX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SCSgxIDw8IDApCiNkZWZpbmUJCVJJU0NWX0hXUFJP QkVfVkVORE9SX0VYVF9YVEhFQUQyCSgyIDw8IDApCiNkZWZpbmUJCVJJU0NWX0hXUFJPQkVfVkVO RE9SX0VYVF9YVEhFQUQzCSgzIDw8IDApCi8qIFZlbmRvciAyICovCiNkZWZpbmUJCVJJU0NWX0hX UFJPQkVfVkVORE9SX0VYVF9YVkVORE9SMQkoMSA8PCAwKQojZGVmaW5lCQlSSVNDVl9IV1BST0JF X1ZFTkRPUl9FWFRfWFZFTkRPUjIJKDIgPDwgMCkKLyogVmVuZG9yIDMgKi8KLi4uCgpUaGUga2V5 cyBvdmVybGFwIGJldHdlZW4gdmVuZG9ycy4gVG8gZGV0ZXJtaW5lIHdoaWNoIGV4dGVuc2lvbiBh IHZlbmRvcgpzdXBwb3J0cywgaHdwcm9iZSBnZXRzIGRhdGEgZnJvbSBoYXJ0X2lzYV92ZW5kb3Jb Y3B1XS4gSWYgdGhlIHZlbmRvciBpcwp2ZW5kb3IgMiwgaXQgaXMgbm90IHBvc3NpYmxlIGZvciBh IHZlbmRvciBleHRlbnNpb24gZnJvbSB2ZW5kb3IgMyB0byBlbmQKdXAgaW4gdGhlcmUuIE9ubHkg dGhlIGV4dGVuc2lvbnMgZnJvbSB0aGF0IHZlbmRvciBjYW4gYmUgc3VwcG9ydGVkIGJ5CnRoYXQg dmVuZG9yJ3MgaGFyZHdhcmUuIAoKPiAKPiBTbyB5ZXMsIHBlcnNvbmFsbHkgSSdtIHN0aWxsIGlu IHRoZSBjYW1wIG9mIHNpbG9pbmcgdGhlIHZlbmRvciBzdHVmZgo+IG9mZiB0byBpdHMgb3duIGFy ZWEuCgpJIGRvbid0IHF1aXRlIHNlZSBob3cgd2hhdCBJIGhhdmUgcHJvcG9zZWQgZG9lc24ndCAi c2lsbyIgdGhlIGV4dGVuc2lvbnMKdGhhdCBwZXJ0YWluIHRvIGVhY2ggdmVuZG9yIHNpbmNlIHRo ZSBrZXlzIGFyZSBzcGVjaWZpYyB0byBlYWNoIHZlbmRvci4KCi0gQ2hhcmxpZQoKPiAtRXZhbgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJp c2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9s aXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK 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 BC198C04FF9 for ; Fri, 12 Apr 2024 20:21:03 +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-Transfer-Encoding:Content-Type: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=ZZ8WV9u1nVINjz0W9FFGcN7cXxVHTMgJRnWUpcZIfgk=; b=v9qbqFqytTwAay R1dlIZ9dEL8vvkv6fStkv3+63kE0drgSBksQ7Mv0mLOJ54m8BZIkBg9UsGsx2rGG+uq8swenLnykz zjL0bZGNSXVnK7M7I1h4XD+50xdo8biwzSejsE6HapYRjyLaHbHseKxO3/075B3DDELwxqgTRmi0m bIJE0V7tWR9hX110ORFWgOMymn6m+cKO7HsGno3s4F7iCKk/TuNh6aSTQi49gVL4xoIkvbWWn3idc bv3gP7c5vkkKc4QaBjPP2RfksQafS88hUcw35Iya3+wxGnlWPp3DbP6gwjlCcabE/hYTuAPW6FtVe IrKa06FLIdZpKWo0tmSQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvNOH-00000001B7x-47x0; Fri, 12 Apr 2024 20:20:53 +0000 Received: from mail-il1-x12f.google.com ([2607:f8b0:4864:20::12f]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvNOE-00000001B6e-2wqd for linux-arm-kernel@lists.infradead.org; Fri, 12 Apr 2024 20:20:52 +0000 Received: by mail-il1-x12f.google.com with SMTP id e9e14a558f8ab-36a138f237bso4943255ab.0 for ; Fri, 12 Apr 2024 13:20:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712953248; x=1713558048; 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=G4g0asrIwIh0jCELCnJaY/AHU8getaccX1K08gj5vk8=; b=MfDFuxQHbImBN5dPCOqtyceYyBvfCHI7LYX4XVmy7fai0caAon7HhobJ/cWaIyQkf1 BEqsY0tknm0NUXQYBiwNRP+FXhpk/acmbvKZwOg9b967Pkp2D8qJ4tbtm+JLICzSSK2v yUd8+eagespwUMiqPGMVmKB0n/sP7vLk3W+2rTEJZEicvVIp8ccOttV6g3L0yiMRoLSr LgvgDgprHmcjctfvvogLsA/Gmykmq5irpTj4KQlHql+G9/7Fkc5W+nNWlOWzoCxYbxAO gYJHlq5nGglqreb/+EUnNgr6EefHIbkhKQlGh1TfZJianBnzwbbPOyu/uq05ywCuHwwP bH3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712953248; x=1713558048; 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=G4g0asrIwIh0jCELCnJaY/AHU8getaccX1K08gj5vk8=; b=Tshv3kT5+xvqN2DgIOH3QkZ2kfm4c+4NLGBpprMOLQhCVj0Wkhr/KIUSLqyDKZUhMm VqnADpYMI2GtViw11GxzcRNvgRTSfCc8GOrO/upz0+SYqa2GOHYcf1AKFnx5CdSI5aFp jN4JT2MTSrDcLMQwd5aFUr/JSo/JtiUrIkqL/og4I/9uvG3mnI92cayExmTn2KSvIG2H lHxYZgMkHdcro5JoUdAUgAgm0nH12z7E3Hfha5fxwmxJjGeSHzTk5Jh/242x6oZGtZaN NjlLgJ/vIE0xZXJO+IJxg5ABsSE7051PllmvTnqcEi0x7Bm9Xc6d13o7plHAr666kRAz l+nw== X-Forwarded-Encrypted: i=1; AJvYcCXRBnjtOh4oo2SnqMwrxSf21h4xwkfdPOMaeSx601VW285G9UgaY53OE1GTkhklHdH6NjZblPD6CB97Owyme9Q0dAmjxiWmdkk1V5PywfHuvbfY+qg= X-Gm-Message-State: AOJu0Yxhvd9qllTeak2+pgpBpXu+CsM7VQ3iV/JbU8qEKvmaudd6aCRE NuLFzelrwzrpMjtPiUdC+kVljRpUI5MAXkCKLdLyghwhnxGgTr6UXgfsi/6ltOs= X-Google-Smtp-Source: AGHT+IFpjh0cclgh6ATH3N1bYJeehFia9hHxmNB9H0B6FBqe3hOIKZovvCJzuOOC0WQ06VxvLw7Jfw== X-Received: by 2002:a05:6e02:20e5:b0:36a:daf:533f with SMTP id q5-20020a056e0220e500b0036a0daf533fmr4183114ilv.0.1712953248485; Fri, 12 Apr 2024 13:20:48 -0700 (PDT) Received: from ghost ([50.145.13.30]) by smtp.gmail.com with ESMTPSA id f13-20020a63100d000000b005f41aeec262sm3127345pgl.44.2024.04.12.13.20.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 13:20:47 -0700 (PDT) Date: Fri, 12 Apr 2024 13:20:45 -0700 From: Charlie Jenkins To: Evan Green Cc: Conor Dooley , Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Guo Ren , Conor Dooley , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Conor Dooley , =?iso-8859-1?Q?Cl=E9ment_L=E9ger?= , Jonathan Corbet , Shuah Khan , linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Palmer Dabbelt , linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH 16/19] riscv: hwprobe: Add vendor extension probing Message-ID: References: <20240411-dev-charlie-support_thead_vector_6_9-v1-0-4af9815ec746@rivosinc.com> <20240411-dev-charlie-support_thead_vector_6_9-v1-16-4af9815ec746@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-20240412_132050_919563_AB8F3BFB X-CRM114-Status: GOOD ( 66.11 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBBcHIgMTIsIDIwMjQgYXQgMTI6MDc6NDZQTSAtMDcwMCwgRXZhbiBHcmVlbiB3cm90 ZToKPiBPbiBGcmksIEFwciAxMiwgMjAyNCBhdCAxMToxN+KAr0FNIENoYXJsaWUgSmVua2lucyA8 Y2hhcmxpZUByaXZvc2luYy5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIEZyaSwgQXByIDEyLCAyMDI0 IGF0IDEwOjA1OjIxQU0gLTA3MDAsIEV2YW4gR3JlZW4gd3JvdGU6Cj4gPiA+IE9uIFRodSwgQXBy IDExLCAyMDI0IGF0IDk6MTLigK9QTSBDaGFybGllIEplbmtpbnMgPGNoYXJsaWVAcml2b3NpbmMu Y29tPiB3cm90ZToKPiA+ID4gPgo+ID4gPiA+IEFkZCBhIG5ldyBod3Byb2JlIGtleSAiUklTQ1Zf SFdQUk9CRV9LRVlfVkVORE9SX0VYVF8wIiB3aGljaCBhbGxvd3MKPiA+ID4gPiB1c2Vyc3BhY2Ug dG8gcHJvYmUgZm9yIHRoZSBuZXcgUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SIHZl bmRvcgo+ID4gPiA+IGV4dGVuc2lvbi4KPiA+ID4gPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IENo YXJsaWUgSmVua2lucyA8Y2hhcmxpZUByaXZvc2luYy5jb20+Cj4gPiA+ID4gLS0tCj4gPiA+ID4g IGFyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oICAgICAgfCAgNCArLS0KPiA+ID4gPiAg YXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2h3cHJvYmUuaCB8IDEwICsrKysrLQo+ID4gPiA+ ICBhcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jICAgICAgIHwgNTkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0KPiA+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCA2OCBpbnNl cnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ID4gPiA+Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2Fy Y2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oIGIvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9o d3Byb2JlLmgKPiA+ID4gPiBpbmRleCA2MzA1MDdkZmY1ZWEuLmU2ODQ5NmI0ZjhkZSAxMDA2NDQK PiA+ID4gPiAtLS0gYS9hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL2h3cHJvYmUuaAo+ID4gPiA+ICsr KyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oCj4gPiA+ID4gQEAgLTEsNiArMSw2 IEBACj4gPiA+ID4gIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGlu dXgtc3lzY2FsbC1ub3RlICovCj4gPiA+ID4gIC8qCj4gPiA+ID4gLSAqIENvcHlyaWdodCAyMDIz IFJpdm9zLCBJbmMKPiA+ID4gPiArICogQ29weXJpZ2h0IDIwMjMtMjAyNCBSaXZvcywgSW5jCj4g PiA+ID4gICAqLwo+ID4gPiA+Cj4gPiA+ID4gICNpZm5kZWYgX0FTTV9IV1BST0JFX0gKPiA+ID4g PiBAQCAtOCw3ICs4LDcgQEAKPiA+ID4gPgo+ID4gPiA+ICAjaW5jbHVkZSA8dWFwaS9hc20vaHdw cm9iZS5oPgo+ID4gPiA+Cj4gPiA+ID4gLSNkZWZpbmUgUklTQ1ZfSFdQUk9CRV9NQVhfS0VZIDYK PiA+ID4gPiArI2RlZmluZSBSSVNDVl9IV1BST0JFX01BWF9LRVkgNwo+ID4gPiA+Cj4gPiA+ID4g IHN0YXRpYyBpbmxpbmUgYm9vbCByaXNjdl9od3Byb2JlX2tleV9pc192YWxpZChfX3M2NCBrZXkp Cj4gPiA+ID4gIHsKPiA+ID4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkv YXNtL2h3cHJvYmUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9od3Byb2JlLmgKPiA+ ID4gPiBpbmRleCA5ZjJhOGUzZmYyMDQuLjY2MTRkM2FkZmM3NSAxMDA2NDQKPiA+ID4gPiAtLS0g YS9hcmNoL3Jpc2N2L2luY2x1ZGUvdWFwaS9hc20vaHdwcm9iZS5oCj4gPiA+ID4gKysrIGIvYXJj aC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2h3cHJvYmUuaAo+ID4gPiA+IEBAIC0xLDYgKzEsNiBA QAo+ID4gPiA+ICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExpbnV4 LXN5c2NhbGwtbm90ZSAqLwo+ID4gPiA+ICAvKgo+ID4gPiA+IC0gKiBDb3B5cmlnaHQgMjAyMyBS aXZvcywgSW5jCj4gPiA+ID4gKyAqIENvcHlyaWdodCAyMDIzLTIwMjQgUml2b3MsIEluYwo+ID4g PiA+ICAgKi8KPiA+ID4gPgo+ID4gPiA+ICAjaWZuZGVmIF9VQVBJX0FTTV9IV1BST0JFX0gKPiA+ ID4gPiBAQCAtNjcsNiArNjcsMTQgQEAgc3RydWN0IHJpc2N2X2h3cHJvYmUgewo+ID4gPiA+ICAj ZGVmaW5lICAgICAgICAgICAgICAgIFJJU0NWX0hXUFJPQkVfTUlTQUxJR05FRF9VTlNVUFBPUlRF RCAgICAoNCA8PCAwKQo+ID4gPiA+ICAjZGVmaW5lICAgICAgICAgICAgICAgIFJJU0NWX0hXUFJP QkVfTUlTQUxJR05FRF9NQVNLICAgICAgICAgICAoNyA8PCAwKQo+ID4gPiA+ICAjZGVmaW5lIFJJ U0NWX0hXUFJPQkVfS0VZX1pJQ0JPWl9CTE9DS19TSVpFICAgIDYKPiA+ID4gPiArLyoKPiA+ID4g PiArICogSXQgaXMgbm90IHBvc3NpYmxlIGZvciBvbmUgQ1BVIHRvIGhhdmUgbXVsdGlwbGUgdmVu ZG9yIGlkcywgc28gZWFjaCB2ZW5kb3IKPiA+ID4gPiArICogaGFzIGl0cyBvd24gdmVuZG9yIGV4 dGVuc2lvbiAibmFtZXNwYWNlIi4gVGhlIGtleXMgZm9yIGVhY2ggdmVuZG9yIHN0YXJ0cwo+ID4g PiA+ICsgKiBhdCB6ZXJvLgo+ID4gPiA+ICsgKi8KPiA+ID4gPiArI2RlZmluZSBSSVNDVl9IV1BS T0JFX0tFWV9WRU5ET1JfRVhUXzAgNwo+ID4gPiA+ICsgLyogVC1IZWFkICovCj4gPiA+ID4gKyNk ZWZpbmUgICAgICAgICAgICAgICAgUklTQ1ZfSFdQUk9CRV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RP UiAgICgxIDw8IDApCj4gPiA+ID4gIC8qIEluY3JlYXNlIFJJU0NWX0hXUFJPQkVfTUFYX0tFWSB3 aGVuIGFkZGluZyBpdGVtcy4gKi8KPiA+ID4gPgo+ID4gPiA+ICAvKiBGbGFncyAqLwo+ID4gPiA+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jIGIvYXJjaC9yaXNj di9rZXJuZWwvc3lzX2h3cHJvYmUuYwo+ID4gPiA+IGluZGV4IGUwYTQyYzg1MTUxMS4uMzY1Y2U3 MzgwNDQzIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3N5c19od3Byb2Jl LmMKPiA+ID4gPiArKysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jCj4gPiA+ID4g QEAgLTY5LDcgKzY5LDggQEAgc3RhdGljIHZvaWQgaHdwcm9iZV9pc2FfZXh0MChzdHJ1Y3Qgcmlz Y3ZfaHdwcm9iZSAqcGFpciwKPiA+ID4gPiAgICAgICAgIGlmIChyaXNjdl9pc2FfZXh0ZW5zaW9u X2F2YWlsYWJsZShOVUxMLCBjKSkKPiA+ID4gPiAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUg fD0gUklTQ1ZfSFdQUk9CRV9JTUFfQzsKPiA+ID4gPgo+ID4gPiA+IC0gICAgICAgaWYgKGhhc192 ZWN0b3IoKSAmJiAhcmlzY3ZfaGFzX3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNB X1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SKSkKPiA+ID4gPiArICAgICAgIGlmIChoYXNfdmVjdG9y KCkgJiYKPiA+ID4gPiArICAgICAgICAgICAhX19yaXNjdl9pc2FfdmVuZG9yX2V4dGVuc2lvbl9h dmFpbGFibGUoTlVMTCwgUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SKSkKPiA+ID4g PiAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUgfD0gUklTQ1ZfSFdQUk9CRV9JTUFfVjsKPiA+ ID4gPgo+ID4gPiA+ICAgICAgICAgLyoKPiA+ID4gPiBAQCAtMTEyLDcgKzExMyw4IEBAIHN0YXRp YyB2b2lkIGh3cHJvYmVfaXNhX2V4dDAoc3RydWN0IHJpc2N2X2h3cHJvYmUgKnBhaXIsCj4gPiA+ ID4gICAgICAgICAgICAgICAgIEVYVF9LRVkoWkFDQVMpOwo+ID4gPiA+ICAgICAgICAgICAgICAg ICBFWFRfS0VZKFpJQ09ORCk7Cj4gPiA+ID4KPiA+ID4gPiAtICAgICAgICAgICAgICAgaWYgKGhh c192ZWN0b3IoKSAmJiAhcmlzY3ZfaGFzX3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1Zf SVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SKSkgewo+ID4gPiA+ICsgICAgICAgICAgICAgICBp ZiAoaGFzX3ZlY3RvcigpICYmCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAhcmlzY3ZfaGFz X3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX1ZFTkRPUl9FWFRfWFRIRUFEVkVD VE9SKSkgewo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIEVYVF9LRVkoWlZCQik7Cj4g PiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgRVhUX0tFWShaVkJDKTsKPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICBFWFRfS0VZKFpWS0IpOwo+ID4gPiA+IEBAIC0xMzksNiArMTQx LDU1IEBAIHN0YXRpYyB2b2lkIGh3cHJvYmVfaXNhX2V4dDAoc3RydWN0IHJpc2N2X2h3cHJvYmUg KnBhaXIsCj4gPiA+ID4gICAgICAgICBwYWlyLT52YWx1ZSAmPSB+bWlzc2luZzsKPiA+ID4gPiAg fQo+ID4gPiA+Cj4gPiA+ID4gK3N0YXRpYyB2b2lkIGh3cHJvYmVfaXNhX3ZlbmRvcl9leHQwKHN0 cnVjdCByaXNjdl9od3Byb2JlICpwYWlyLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBjcHVtYXNrICpjcHVzKQo+ID4gPiA+ICt7Cj4gPiA+ ID4gKyAgICAgICBpbnQgY3B1Owo+ID4gPiA+ICsgICAgICAgdTY0IG1pc3NpbmcgPSAwOwo+ID4g PiA+ICsKPiA+ID4gPiArICAgICAgIHBhaXItPnZhbHVlID0gMDsKPiA+ID4gPiArCj4gPiA+ID4g KyAgICAgICBzdHJ1Y3QgcmlzY3ZfaHdwcm9iZSBtdmVuZG9yaWQgPSB7Cj4gPiA+ID4gKyAgICAg ICAgICAgICAgIC5rZXkgPSBSSVNDVl9IV1BST0JFX0tFWV9NVkVORE9SSUQsCj4gPiA+ID4gKyAg ICAgICAgICAgICAgIC52YWx1ZSA9IDAKPiA+ID4gPiArICAgICAgIH07Cj4gPiA+ID4gKwo+ID4g PiA+ICsgICAgICAgaHdwcm9iZV9hcmNoX2lkKCZtdmVuZG9yaWQsIGNwdXMpOwo+ID4gPiA+ICsK PiA+ID4gPiArICAgICAgIC8qIFNldCB2YWx1ZSB0byB6ZXJvIGlmIENQVXMgaW4gdGhlIHNldCBk byBub3QgaGF2ZSB0aGUgc2FtZSB2ZW5kb3IuICovCj4gPiA+ID4gKyAgICAgICBpZiAobXZlbmRv cmlkLnZhbHVlID09IC0xVUxMKQo+ID4gPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiA+ ID4gKwo+ID4gPiA+ICsgICAgICAgLyoKPiA+ID4gPiArICAgICAgICAqIExvb3AgdGhyb3VnaCBh bmQgcmVjb3JkIHZlbmRvciBleHRlbnNpb25zIHRoYXQgMSkgYW55b25lIGhhcywgYW5kCj4gPiA+ ID4gKyAgICAgICAgKiAyKSBhbnlvbmUgZG9lc24ndCBoYXZlLgo+ID4gPiA+ICsgICAgICAgICov Cj4gPiA+ID4gKyAgICAgICBmb3JfZWFjaF9jcHUoY3B1LCBjcHVzKSB7Cj4gPiA+ID4gKyAgICAg ICAgICAgICAgIHN0cnVjdCByaXNjdl9pc2FpbmZvICppc2F2ZW5kb3JpbmZvID0gJmhhcnRfaXNh X3ZlbmRvcltjcHVdOwo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBWRU5ET1JfRVhUX0tFWShl eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAo+ID4gPiA+ICsgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiA+ID4g KyAgICAgICAgICAgICAgIGlmIChfX3Jpc2N2X2lzYV92ZW5kb3JfZXh0ZW5zaW9uX2F2YWlsYWJs ZShpc2F2ZW5kb3JpbmZvLT5pc2EsICAgICAgICAgIFwKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9S X0VYVF8jI2V4dCkpICAgXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHBhaXItPnZh bHVlIHw9IFJJU0NWX0hXUFJPQkVfVkVORE9SX0VYVF8jI2V4dDsgICAgICAgICAgICAgICAgICBc Cj4gPiA+ID4gKyAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPiA+ID4gPiArICAgICAg ICAgICAgICAgICAgICAgICBtaXNzaW5nIHw9IFJJU0NWX0hXUFJPQkVfVkVORE9SX0VYVF8jI2V4 dDsgICAgICAgICAgICAgICAgICAgICAgXAo+ID4gPiA+ICsgICAgICAgfSB3aGlsZSAoZmFsc2Up Cj4gPiA+ID4gKwo+ID4gPiA+ICsgICAgICAgLyoKPiA+ID4gPiArICAgICAgICAqIE9ubHkgdXNl IFZFTkRPUl9FWFRfS0VZKCkgZm9yIGV4dGVuc2lvbnMgd2hpY2ggY2FuIGJlIGV4cG9zZWQgdG8g dXNlcnNwYWNlLAo+ID4gPiA+ICsgICAgICAgICogcmVnYXJkbGVzcyBvZiB0aGUga2VybmVsJ3Mg Y29uZmlndXJhdGlvbiwgYXMgbm8gb3RoZXIgY2hlY2tzLCBiZXNpZGVzCj4gPiA+ID4gKyAgICAg ICAgKiBwcmVzZW5jZSBpbiB0aGUgaGFydF92ZW5kb3JfaXNhIGJpdG1hcCwgYXJlIG1hZGUuCj4g PiA+ID4gKyAgICAgICAgKi8KPiA+ID4gPiArICAgICAgIFZFTkRPUl9FWFRfS0VZKFhUSEVBRFZF Q1RPUik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsjdW5kZWYgVkVORE9SX0VYVF9LRVkKPiA+ID4KPiA+ ID4gSGV5IENoYXJsaWUsCj4gPiA+IFRoYW5rcyBmb3Igd3JpdGluZyB0aGlzIHVwISBBdCB0aGUg dmVyeSBsZWFzdCBJIHRoaW5rIHRoZQo+ID4gPiBUSEVBRC1zcGVjaWZpYyBzdHVmZiBzaG91bGQg cHJvYmFibHkgZW5kIHVwIGluIGl0cyBvd24gZmlsZSwgb3RoZXJ3aXNlCj4gPiA+IGl0J2xsIGdl dCBjaGFvdGljIHdpdGggdmVuZG9ycyBjbGFtb3JpbmcgdG8gYWRkIHN0dWZmIHJpZ2h0IGhlcmUu Cj4gPgo+ID4gR3JlYXQgaWRlYSEKPiA+Cj4gPiA+IFdoYXQgZG8geW91IHRoaW5rIGFib3V0IHRo aXMgYXBwcm9hY2g6Cj4gPiA+ICAqIFdlIGxlYXZlIFJJU0NWX0hXUFJPQkVfTUFYX0tFWSBhcyB0 aGUgbWF4IGtleSBmb3IgdGhlICJnZW5lcmljCj4gPiA+IHdvcmxkIiwgZWcgNi1pc2gKPiA+ID4g ICogV2UgZGVmaW5lIHRoYXQgYW55IGtleSBhYm92ZSAweDgwMDAwMDAwMDAwMDAwMDAgaXMgaW4g dGhlIHZlbmRvcgo+ID4gPiBzcGFjZSwgc28gdGhlIG1lYW5pbmcgb2YgdGhlIGtleXMgZGVwZW5k cyBmaXJzdCBvbiB0aGUgbXZlbmRvcmlkCj4gPiA+IHZhbHVlLgo+ID4gPiAgKiBJbiB0aGUga2Vy bmVsIGNvZGUsIGVhY2ggbmV3IHZlbmRvciBhZGRzIG9uIHRvIGEgZ2xvYmFsIHN0cnVjdCwKPiA+ ID4gd2hpY2ggbWlnaHQgbG9vayBzb21ldGhpbmcgbGlrZToKPiA+ID4gc3RydWN0IGh3cHJvYmVf dmVuZG9yX3NwYWNlIHZlbmRvcl9zcGFjZVtdID0gewo+ID4gPiAgICAgICAgIHsKPiA+ID4gICAg ICAgICAgICAgICAgIC5tdmVuZG9yaWQgPSBWRU5ET1JfVEhFQUQsCj4gPiA+ICAgICAgICAgICAg ICAgICAubWF4X2h3cHJvYmVfa2V5ID0gVEhFQURfTUFYX0hXUFJPQkVfS0VZLCAvLyBjdXJyZW50 bHkKPiA+ID4gMSBvciAweDgwMDAwMDAwMDAwMDAwMDEgd2l0aCB3aGF0IHlvdSd2ZSBnb3QuCj4g PiA+ICAgICAgICAgICAgICAgICAuaHdwcm9iZV9mbiA9IHRoZWFkX2h3cHJvYmUKPiA+ID4gICAg ICAgICB9LAo+ID4gPiAgICAgICAgIC4uLgo+ID4gPiB9Owo+ID4gPgo+ID4gPiAgKiBBIGh3cHJv YmVfdGhlYWQuYyBpbXBsZW1lbnRzIHRoZWFkX2h3cHJvYmUoKSwgYW5kIGlzIGNhbGxlZAo+ID4g PiB3aGVuZXZlciB0aGUgZ2VuZXJpYyBod3Byb2JlIGVuY291bnRlcnMgYSBrZXkgPj0weDgwMDAw MDAwMDAwMDAwMDAuCj4gPiA+ICAqIEdlbmVyaWMgY29kZSBmb3Igc2V0dGluZyB1cCB0aGUgVkRT TyBjYW4gdGhlbiBzdGlsbCBjYWxsIHRoZQo+ID4gPiB2ZW5kb3Itc3BlY2lmaWMgaHdwcm9iZV9m bigpIHJlcGVhdGVkbHkgd2l0aCBhbiAiYWxsIENQVXMiIG1hc2sgZnJvbQo+ID4gPiB0aGUgYmFz ZSB0byBtYXhfaHdwcm9iZV9rZXkgYW5kIHNldCB1cCB0aGUgY2FjaGVkIHRhYmxlcyBpbiB1c2Vy c3BhY2UuCj4gPiA+ICAqIFNpbmNlIHRoZSBWRFNPIGRhdGEgaGFzIGxpbWl0ZWQgc3BhY2Ugd2Ug bWF5IGhhdmUgdG8gY2FwIHRoZSBudW1iZXIKPiA+ID4gb2YgdmVuZG9yIGtleXMgd2UgY2FjaGUg dG8gYmUgbG93ZXIgdGhhbiBtYXhfaHdwcm9iZV9rZXkuIFNpbmNlIHRoZQo+ID4gPiBkYXRhIGl0 c2VsZiBpcyBub3QgZXhwb3NlZCB0byB1c2VybW9kZSB3ZSBjYW4gcmFpc2UgdGhpcyBjYXAgbGF0 ZXIgaWYKPiA+ID4gbmVlZGVkLgo+ID4KPiA+IEkga25vdyB2ZW5kb3IgZXh0ZW5zaW9ucyBhcmUg a2luZCBvZiB0aGUgIndpbGQgd2VzdCIgb2YgcmlzY3YsIGJ1dCBpbgo+ID4gc3BpdGUgb2YgdGhh dCBJIHdhbnQgdG8gZGVzaWduIGEgY29uc2lzdGVudCBBUEkuIFRoZSBpc3N1ZSBJIGhhZCB3aXRo Cj4gPiBoYXZpbmcgdGhpcyAidmVuZG9yIHNwYWNlIiBmb3IgZXhwb3NpbmcgdmVuZG9yIGV4dGVu c2lvbnMgd2FzIHRoYXQgdGhpcwo+ID4gaXMgc29tZXRoaW5nIHRoYXQgaXMgaW5oZXJlbnRseSB0 aGUgc2FtZSBmb3IgYWxsIHZlbmRvcnMuIEkgc2VlIGEgdmVuZG9yCj4gPiBzcGFjZSBsaWtlIHRo aXMgbW9yZSBhcHBsaWNhYmxlIGZvciBzb21ldGhpbmcgbGlrZQo+ID4gIlJJU0NWX0hXUFJPQkVf S0VZX1pJQ0JPWl9CTE9DS19TSVpFIiB3aGVyZSBhIHZlbmRvciBoYXMgYSBzcGVjaWZpYwo+ID4g dmFsdWUgdGhleSB3b3VsZCBsaWtlIHRvIGV4cG9zZS4gSSBkbyBhZ3JlZSB0aGF0IGhhdmluZyBh IHZlbmRvciBzcGFjZQo+ID4gaXMgYSBnb29kIGRlc2lnbiBjaG9pY2UsIGJ1dCBJIGFtIG5vdCBj b252aW5jZWQgdGhhdCB2ZW5kb3IgZXh0ZW5zaW9ucwo+ID4gYXJlIHRoZSBwcm9wZXIgdXNlLWNh c2UuCj4gPgo+ID4gQnkgaGF2aW5nIFJJU0NWX0hXUFJPQkVfS0VZX1ZFTkRPUl9FWFRfMCB3ZSBj YW4gZXhwb3NlIHRoZSB2ZW5kb3IKPiA+IGV4dGVuc2lvbnMgaW4gdGhlIHNhbWUgd2F5IHRoYXQg c3RhbmRhcmQgZXh0ZW5zaW9ucyBhcmUgZXhwb3NlZCwgd2l0aCBhCj4gPiBiaXRtYXNrIHJlcHJl c2VudGluZyBlYWNoIGV4dGVuc2lvbi4gSWYgdGhlc2UgYXJlIGluc3RlYWQgaW4gdGhlIHZlbmRv cgo+ID4gc3BhY2UsIGVhY2ggdmVuZG9yIHdvdWxkIHByb2JhYmx5IGJlIGluY2xpbmVkIHRvIGlu dHJvZHVjZSBhIGtleSBsaWtlCj4gPiBSSVNDVl9IV1BST0JFX0tFWV9USEVBRF9FWFRfMCB0aGF0 IHJldHVybnMgYSBiaXRtYXNrIG9mIGFsbCBvZiB0aGUgdGhlYWQKPiA+IHZlbmRvciBleHRlbnNp b25zLiBUaGlzIGR1cGxpY2F0ZWQgZWZmb3J0IGlzIHdoYXQgSSBhbSB0cnlpbmcgdG8gYXZvaWQu Cj4gPiBUaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUgdGhhdCB2ZW5kb3JzIGhhdmUgYSBzZXBhcmF0 ZSBrZXkgZm9yIGVhY2gKPiA+IHZlbmRvciBleHRlbnNpb24gdGhleSB3b3VsZCBsaWtlIHRvIGV4 cG9zZSwgYnV0IHRoYXQgaXMgc3RyaWN0bHkgbGVzcwo+ID4gZWZmaWNpZW50IHRoYW4gdGhlIGV4 aXN0aW5nIGJpdG1hc2sgcHJvYmluZy4KPiA+Cj4gPiBEbyB5b3UgdGhpbmsgdGhhdCBoYXZpbmcg dGhlIHZlbmRvciBzcGFjZSBpcyBhcHByb3ByaWF0ZSBmb3IgdmVuZG9yCj4gPiBleHRlbnNpb25z IGdpdmVuIG15IGNvbmNlcm5zPwo+IAo+IEkgZG8gc2VlIHdoYXQgeW91J3JlIGdvaW5nIGZvci4g SXQncyB0aWR5IGZvciBhIGJpdG1hc2sgdG8ganVzdCBsZXQKPiBhbnlvbmUgYWxsb2NhdGUgdGhl IG5leHQgYml0LCBidXQgbGVhdmVzIHlvdSB3aXRoIHRoZSBzYW1lIHByb2JsZW0KPiB3aGVuIGEg dmVuZG9yIGRlY2lkZXMgdGhleSB3YW50IHRvIGV4cG9zZSBhbiBlbnVtLCBvciBkZWNpZGVzIHRo ZXkKPiB3YW50IHRvIGV4cG9zZSBhIGJhemlsbGlvbiB0aGluZ3MuIEkgdGhpbmsgYSBnZW5lcmFs aXplZCB2ZXJzaW9uIG9mCgpUaGlzIHBhdGNoIGlzIHN0cmljdGx5IHRvIGV4cG9zZSBpZiBhIHZl bmRvciBleHRlbnNpb24gaXMgc3VwcG9ydGVkLApob3cgZG9lcyBleHBvc2luZyBlbnVtcyBmYWN0 b3IgaW4gaGVyZT8KCj4gdGhlIGFwcHJvYWNoIHlvdSd2ZSB3cml0dGVuIHdvdWxkIGJlOiBzaW1w bHkgbGV0IHZlbmRvcnMgYWxsb2NhdGUga2V5cwo+IGZyb20gdGhlIHNhbWUgZ2xvYmFsIHNwYWNl IHdlJ3JlIGFscmVhZHkgdXNpbmcuIE15IHdvcnJ5IHdhcyB0aGF0IGl0CgpJIGFtIG1pc3Npbmcg aG93IG15IHByb3Bvc2FsIHN1Z2dlc3RzIGFsbG93aW5nIHZlbmRvcnMgdG8gYWxsb2NhdGUga2V5 cwppbiBhIGdsb2JhbCBzcGFjZS4KCj4gd291bGQgdHVybiBpbnRvIGFuIGV4cGFuc2l2ZSBzdWJ1 cmJhbiBzcHJhd2wgb2YgbW9zdGx5IGRlYWQgYml0cywgb3IKPiBpbiB0aGUgY2FzZSBvZiB2ZW5k b3Itc3BlY2lmaWMga2V5cywgZnVsbCBvZiAiaWYgKG12ZW5kb3JfaWQoKSAhPQo+IE1JTkUpIHJl dHVybiAwOyIuIE15IGhvcGUgd2l0aCB0aGUgdmVuZG9yZWQga2V5c3BhY2UgaXMgaXQgd291bGQg a2VlcAoKQW4gYXBwbGljYXRpb24gd2lsbCBhbHdheXMgbmVlZCB0byBjaGVjayB2ZW5kb3JpZCBi ZWZvcmUgY2FsbGluZyBod3Byb2JlCndpdGggYSB2ZW5kb3Itc3BlY2lmaWMgZmVhdHVyZT8gSWYg dGhhdCBod3Byb2JlIHN1cHBvcnQgaXMgYSBrZXkgYWJvdmUKMTw8NjMsIHRoZW4gdGhlIGFwcGxp Y2F0aW9uIHdpbGwgbmVlZCB0byBwYXNzIHRoYXQgdmVuZG9yLXNwZWNpZmljIGtleQphbmQgaW50 ZXJwcmV0IHRoZSB2ZW5kb3Itc3BlY2lmaWMgdmFsdWUuIElmIHRoYXQgaHdwcm9iZSBzdXBwb3J0 IGlzIHdoYXQKSSBoYXZlIHByb3Bvc2VkIGhlcmUsIHRoZW4gdGhlIHVzZXIgY2FsbHMgdGhlIHN0 YW5kYXJkaXplZCB2ZW5kb3IKZXh0ZW5zaW9uIGh3cHJvYmUgZW5kcG9pbnQgYW5kIHRoZW4gbmVl ZHMgdG8gaW50ZXJwcmV0IHRoZSByZXN1bHQgYmFzZWQKb24gdGhlIHZlbmRvciBvZiB0aGUgY3B1 bWFzay4gSW4gYm90aCBjYXNlcyB0aGV5IG5lZWQgdG8gY2hlY2sgdGhlCnZlbmRvcmlkIG9mIHRo ZSBjcHVtYXNrLiBJbiB0aGUgdGVzdCBjYXNlIEkgYWRkZWQgSSBmYWlsZWQgdG8gY2hlY2sgdGhl CnZlbmRvcmlkIGJ1dCBJIHNob3VsZCBoYXZlIGhhZCB0aGF0LgoKPiB0aGUgc3ByYXdsIGZyb20g cG9sbHV0aW5nIHRoZSBnZW5lcmFsIGFycmF5IG9mIChob3BlZnVsbHkgdmFsdWFibGUpCj4gaW5m byB3aXRoIHN0dWZmIHRoYXQncyBsaWtlbHkgdG8gYmVjb21lIGxlc3MgcmVsZXZhbnQgYXMgdGlt ZSBwYXNzZXMuCj4gSXQgYWxzbyBsb3dlcnMgdGhlIGJhciBhIGJpdCB0byBtYWtlIGl0IGVhc2ll ciBmb3IgdmVuZG9ycyB0byBleHBvc2UKPiBiaXRzLCBhcyB0aGV5IGRvbid0IGNvbnN1bWUgZ2xv YmFsIHNwYWNlIGZvciBldmVyeW9uZSBmb3IgYWxsIG9mIHRpbWUsCj4ganVzdCB0aGVtc2VsdmVz LgoKVGhlIHZlbmRvciBrZXlzIGFyZSB0aWVkIGRpcmVjdGx5IHRvIHRoZSB2ZW5kb3IuIFNvIGFz IGl0IGdyb3dzIHdlIHdvdWxkCmhhdmUgc29tZXRoaW5nIGxpa2U6CgojZGVmaW5lIFJJU0NWX0hX UFJPQkVfS0VZX1ZFTkRPUl9FWFRfMAk3Ci8qIFQtSGVhZCAqLwojZGVmaW5lCQlSSVNDVl9IV1BS T0JFX1ZFTkRPUl9FWFRfWFRIRUFEVkVDVE9SCSgxIDw8IDApCiNkZWZpbmUJCVJJU0NWX0hXUFJP QkVfVkVORE9SX0VYVF9YVEhFQUQyCSgyIDw8IDApCiNkZWZpbmUJCVJJU0NWX0hXUFJPQkVfVkVO RE9SX0VYVF9YVEhFQUQzCSgzIDw8IDApCi8qIFZlbmRvciAyICovCiNkZWZpbmUJCVJJU0NWX0hX UFJPQkVfVkVORE9SX0VYVF9YVkVORE9SMQkoMSA8PCAwKQojZGVmaW5lCQlSSVNDVl9IV1BST0JF X1ZFTkRPUl9FWFRfWFZFTkRPUjIJKDIgPDwgMCkKLyogVmVuZG9yIDMgKi8KLi4uCgpUaGUga2V5 cyBvdmVybGFwIGJldHdlZW4gdmVuZG9ycy4gVG8gZGV0ZXJtaW5lIHdoaWNoIGV4dGVuc2lvbiBh IHZlbmRvcgpzdXBwb3J0cywgaHdwcm9iZSBnZXRzIGRhdGEgZnJvbSBoYXJ0X2lzYV92ZW5kb3Jb Y3B1XS4gSWYgdGhlIHZlbmRvciBpcwp2ZW5kb3IgMiwgaXQgaXMgbm90IHBvc3NpYmxlIGZvciBh IHZlbmRvciBleHRlbnNpb24gZnJvbSB2ZW5kb3IgMyB0byBlbmQKdXAgaW4gdGhlcmUuIE9ubHkg dGhlIGV4dGVuc2lvbnMgZnJvbSB0aGF0IHZlbmRvciBjYW4gYmUgc3VwcG9ydGVkIGJ5CnRoYXQg dmVuZG9yJ3MgaGFyZHdhcmUuIAoKPiAKPiBTbyB5ZXMsIHBlcnNvbmFsbHkgSSdtIHN0aWxsIGlu IHRoZSBjYW1wIG9mIHNpbG9pbmcgdGhlIHZlbmRvciBzdHVmZgo+IG9mZiB0byBpdHMgb3duIGFy ZWEuCgpJIGRvbid0IHF1aXRlIHNlZSBob3cgd2hhdCBJIGhhdmUgcHJvcG9zZWQgZG9lc24ndCAi c2lsbyIgdGhlIGV4dGVuc2lvbnMKdGhhdCBwZXJ0YWluIHRvIGVhY2ggdmVuZG9yIHNpbmNlIHRo ZSBrZXlzIGFyZSBzcGVjaWZpYyB0byBlYWNoIHZlbmRvci4KCi0gQ2hhcmxpZQoKPiAtRXZhbgoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFy bS1rZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9y ZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1r ZXJuZWwK