From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (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 A5EC714E2EF for ; Fri, 12 Apr 2024 18:17:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712945824; cv=none; b=GnmKtHZMOT2X5w9qDQKaiGTAsWiBQvC2UjSp2dmkz9iJ96BoUk/qV8fa0pZHXRschAujW3aa1Y+j8F1tAEn1p+i9HwfVhLNbU9CiZsOcPjbAXOqbIgXqED60k7NYjOeyFAwXdbMzO3HnvZ6k8PNWPL7YuTZk6EcTHP4UASkxjZQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712945824; c=relaxed/simple; bh=/MGnUUIFV/PfbJzx4J6fZpaWxaKzHgtnIopUoSjHKuM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=msoDgHl0J03qv+Iroprp5b2wZHOd9hgnSojzV2+i2bHjQFlJaPTKDxB0J7wA2/xi/He3foiEmXEXIUrzICcoZKA9D/ozXFWJxTfTJwH5ghNY+KRrkxc3FiApmlbZ1aTQleZ3W+FKlocivkUDJ8o4BbhHuIt9AoYaUc4diPsPQos= 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=mKj82HQ5; arc=none smtp.client-ip=209.85.210.171 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="mKj82HQ5" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-6e46dcd8feaso698616b3a.2 for ; Fri, 12 Apr 2024 11:17:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712945822; x=1713550622; 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=fwRQcSH3hoRqkz4lFFtuwqCwddU8BwqxVywbCJRklZ0=; b=mKj82HQ5l2LxWX9PjeQnzoHJfW4ypXE+8m1/kKRG6p985cZlzvOImli4V9B/V/DLuq hvPYVZK60Ldb0okn66pCvxpEde/9aYDHhXataXpndBwg94VTrDbZBElM6jXpWSGAcaLk /W6kTmp+d31v08y90dDCoAS5F9QALEKVQtHC03Cqwfc7vSxSVDWaooNXDOno1QErCnNb vJjtkOHtYM8OZ0Xbf0hLR+pKufr5NuAQzKS+omNAdZSqBMVOy6qDwnESdWfp2YEcLuJc EA8i+VHDBRP784WxB6lR2VGh24ZRzF+wfwdPpY/kv3lTs+Sb2LJgzQS3lBiYRWlqN+Vp tJ5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712945822; x=1713550622; 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=fwRQcSH3hoRqkz4lFFtuwqCwddU8BwqxVywbCJRklZ0=; b=XbmPed2+d82k9209jbCp+bAbdIeU4ixKxlbFJQuA1cSnH3oxQkGlFT6LwRzoZdVxyU q8IzUpheQRMJYqYDQhLoPFIg4IqPVNpqyr1WYG4IRGi0X5r6a6YhciQuNAJ4if8KBCrS aC4LP4ozBRp6JK7IgyaOXUu0NEz9tknBoJk2gMzBLTpI/3b2epaXve8BUXs7qUGbvKnm aud+ImQnQOPcNpsbHGGinrHaFBHeqfer0tw3vg28HsPoDGNX/yjigfGt7yoJeRJDn6tX 3Z2blTHJYzq1NRDvxpHI6WAM6Wqg0jHUS5/Tg4sXRr/QZ0nYjpgkidGvisYUfrnjepfL 2doA== X-Forwarded-Encrypted: i=1; AJvYcCUgV0taK+u3Z8Ozwj2fYPsmJwAp6QEdjWpaCOdtcAO0tlj92eFJ37iyr7+fW5b2m7hp7S/8UG0l88bATKAXwNidc1QFHyAudNE8 X-Gm-Message-State: AOJu0Ywr3ZhJRvRIOrUr1J/OcL9pplCcLPvNLJ3Dl+lB+r0PMYsR3Cdh GVp9NenYk2C6b/vaRwzuLE5QjaUE7Yfw0YZMKRdvdGLWeESUYMi3FglfPnw2ZiQ= X-Google-Smtp-Source: AGHT+IEAA1SdXJJ9JaBE0uNqu1IjKHNyvp0QURZDSkRyrJGkvMsb68Cr5A+LNkkLoKuuki78cgNyYA== X-Received: by 2002:a05:6a20:9c90:b0:1a9:c757:a22d with SMTP id mj16-20020a056a209c9000b001a9c757a22dmr336085pzb.14.1712945821769; Fri, 12 Apr 2024 11:17:01 -0700 (PDT) Received: from ghost (mobile-166-137-160-039.mycingular.net. [166.137.160.39]) by smtp.gmail.com with ESMTPSA id d3-20020a056a00198300b006e6c6a50e5esm3162896pfl.34.2024.04.12.11.16.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 11:17:01 -0700 (PDT) Date: Fri, 12 Apr 2024 11:16:54 -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 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? - Charlie > > > -Evan > > > + } > > + > > + /* Now turn off reporting features if any CPU is missing it. */ > > + pair->value &= ~missing; > > +} > > + > > static bool hwprobe_ext0_has(const struct cpumask *cpus, unsigned long ext) > > { > > struct riscv_hwprobe pair; > > @@ -216,6 +267,10 @@ static void hwprobe_one_pair(struct riscv_hwprobe *pair, > > pair->value = riscv_cboz_block_size; > > break; > > > > + case RISCV_HWPROBE_KEY_VENDOR_EXT_0: > > + hwprobe_isa_vendor_ext0(pair, cpus); > > + break; > > + > > /* > > * For forward compatibility, unknown keys don't fail the whole > > * call, but get their element key set to -1 and value set to 0 > > > > -- > > 2.44.0 > > 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 2E68BC4345F for ; Fri, 12 Apr 2024 18:17:26 +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=KWjkfmKoblYgFDxSvWdHa5r8F766/aYTwJp47NiFvcs=; b=W3D4PiHO8mHPu3 TArmIfLrPC6izUa5AnCE4KoPBBvZddPp1ZqvP6Lxrc8l7LRWddyc7WlEleYAyijxkvMMAR66SMjOd qwSNvupiGRDlo2EVGGD3XmR7RlpT77hQSzd88kdA/Gtu+0Qk0ajzSl6DOW8ISbw8P7EJxHl64SU1m szTPDdmwgkzsiQrcUzHD2nXsXskXIZVdWav0CQ+cVphfKBG4IKBEfxyzqVKHh27/u6Qun/psTz/l8 piV/ibmssISnNtNhXQlMleWjF/kW//4yWZhYMtnQkIVRjIyPWIr6Wjjg98n3gs3BfblQz9Qf+cMCZ 2T6nN7GjMLkEmkdzpR9Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvLSf-00000000p8s-1vvJ; Fri, 12 Apr 2024 18:17:17 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvLSc-00000000p3P-2clx for linux-riscv@lists.infradead.org; Fri, 12 Apr 2024 18:17:16 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-6e46dcd8feaso698613b3a.2 for ; Fri, 12 Apr 2024 11:17:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712945822; x=1713550622; 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=fwRQcSH3hoRqkz4lFFtuwqCwddU8BwqxVywbCJRklZ0=; b=Z39kaRYqyVeBREthF2l6aGyTA2SADSIC6P7UbExJD/ZjkDFIAkP1HklxtqDKXtQ0kI o/Efgfm62e2Ylj/4QTdQ3S2gAHpGpNjjKCujkcfzP3XeBuEQacDuYwJiaA4+P5G0Nz6w vOhse+ISI7pdHp8I8lyuOtuzpOyfcI0m8gsZXO9+N30lnLCElif9+jHGtc0UnVFd77+a 8WeqaPhdkUpxrNYqo9id3ZWn9GCJuHvAWnG5yP+bzkWsysBWZBMC2JsPxey04vBuXX2S PGWw7hj6LZds54PhX4TVi/rLw5SJ4WpyVG9NLW9nF3L5DKe4ZXnu9pSWsLGfx+PKOiNw TWnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712945822; x=1713550622; 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=fwRQcSH3hoRqkz4lFFtuwqCwddU8BwqxVywbCJRklZ0=; b=SF8sTHoGg4VS6PQGvaoKE+NrFi0AjVqIwIWXMcmdCj56Qqr6Gj0Dz8rqAj5kLnJB2l WqnTq7BXETbV4dVkNCTGCO/7BWT4R/K4LfY1c4Da6tb7m1lrD9UZFhivJUjiY11kxQoY vtEqsVh6yykN/AtjAogiqoGYI3pXXGgdb4DwKoPV39SMqVtJLPzGwIVzu/g9Yaz8J/dK vo8Z3Kphum8RoiuEcnTMRwSpzUvlJidW0+26+lGyY98gH7OD/BZXKSIAIIsv6Knd/DH8 zy/It4Q26pxccwdOxUcZNbPp/cu0l5lg+UdeaKhHj9Jr81gnBCr6RDTM55D31PvEK/Zd W3Hg== X-Forwarded-Encrypted: i=1; AJvYcCVHeMFPXu417ZYJG9ttPcE/EqeP47wd8iovglb9mccUCFzSxeHBe8s0lEYWxmpKvtjtn5GtTK96HBdqteKKPm2Mbd2aXpe0zpc93tpukvXl X-Gm-Message-State: AOJu0YwqHwKBEHbb2RkXyrHJU00yTiC3Ffjvi/Rg2JRVY+HTfHWXFVD5 txyu9HprN4GKcSKjSH8XrVFq1SuVCo5ij/Bwk91yzinjGWh+FHKC3UWzpiI4sao= X-Google-Smtp-Source: AGHT+IEAA1SdXJJ9JaBE0uNqu1IjKHNyvp0QURZDSkRyrJGkvMsb68Cr5A+LNkkLoKuuki78cgNyYA== X-Received: by 2002:a05:6a20:9c90:b0:1a9:c757:a22d with SMTP id mj16-20020a056a209c9000b001a9c757a22dmr336085pzb.14.1712945821769; Fri, 12 Apr 2024 11:17:01 -0700 (PDT) Received: from ghost (mobile-166-137-160-039.mycingular.net. [166.137.160.39]) by smtp.gmail.com with ESMTPSA id d3-20020a056a00198300b006e6c6a50e5esm3162896pfl.34.2024.04.12.11.16.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 11:17:01 -0700 (PDT) Date: Fri, 12 Apr 2024 11:16:54 -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_111714_761447_2FC90957 X-CRM114-Status: GOOD ( 49.53 ) 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 T24gRnJpLCBBcHIgMTIsIDIwMjQgYXQgMTA6MDU6MjFBTSAtMDcwMCwgRXZhbiBHcmVlbiB3cm90 ZToKPiBPbiBUaHUsIEFwciAxMSwgMjAyNCBhdCA5OjEy4oCvUE0gQ2hhcmxpZSBKZW5raW5zIDxj aGFybGllQHJpdm9zaW5jLmNvbT4gd3JvdGU6Cj4gPgo+ID4gQWRkIGEgbmV3IGh3cHJvYmUga2V5 ICJSSVNDVl9IV1BST0JFX0tFWV9WRU5ET1JfRVhUXzAiIHdoaWNoIGFsbG93cwo+ID4gdXNlcnNw YWNlIHRvIHByb2JlIGZvciB0aGUgbmV3IFJJU0NWX0lTQV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RP UiB2ZW5kb3IKPiA+IGV4dGVuc2lvbi4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGFybGllIEpl bmtpbnMgPGNoYXJsaWVAcml2b3NpbmMuY29tPgo+ID4gLS0tCj4gPiAgYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9od3Byb2JlLmggICAgICB8ICA0ICstLQo+ID4gIGFyY2gvcmlzY3YvaW5jbHVkZS91 YXBpL2FzbS9od3Byb2JlLmggfCAxMCArKysrKy0KPiA+ICBhcmNoL3Jpc2N2L2tlcm5lbC9zeXNf aHdwcm9iZS5jICAgICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4g Pgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oIGIvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9od3Byb2JlLmgKPiA+IGluZGV4IDYzMDUwN2RmZjVlYS4uZTY4 NDk2YjRmOGRlIDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9od3Byb2Jl LmgKPiA+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oCj4gPiBAQCAtMSw2 ICsxLDYgQEAKPiA+ICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExp bnV4LXN5c2NhbGwtbm90ZSAqLwo+ID4gIC8qCj4gPiAtICogQ29weXJpZ2h0IDIwMjMgUml2b3Ms IEluYwo+ID4gKyAqIENvcHlyaWdodCAyMDIzLTIwMjQgUml2b3MsIEluYwo+ID4gICAqLwo+ID4K PiA+ICAjaWZuZGVmIF9BU01fSFdQUk9CRV9ICj4gPiBAQCAtOCw3ICs4LDcgQEAKPiA+Cj4gPiAg I2luY2x1ZGUgPHVhcGkvYXNtL2h3cHJvYmUuaD4KPiA+Cj4gPiAtI2RlZmluZSBSSVNDVl9IV1BS T0JFX01BWF9LRVkgNgo+ID4gKyNkZWZpbmUgUklTQ1ZfSFdQUk9CRV9NQVhfS0VZIDcKPiA+Cj4g PiAgc3RhdGljIGlubGluZSBib29sIHJpc2N2X2h3cHJvYmVfa2V5X2lzX3ZhbGlkKF9fczY0IGtl eSkKPiA+ICB7Cj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2h3 cHJvYmUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9od3Byb2JlLmgKPiA+IGluZGV4 IDlmMmE4ZTNmZjIwNC4uNjYxNGQzYWRmYzc1IDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9p bmNsdWRlL3VhcGkvYXNtL2h3cHJvYmUuaAo+ID4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL3Vh cGkvYXNtL2h3cHJvYmUuaAo+ID4gQEAgLTEsNiArMSw2IEBACj4gPiAgLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KPiA+ICAvKgo+ ID4gLSAqIENvcHlyaWdodCAyMDIzIFJpdm9zLCBJbmMKPiA+ICsgKiBDb3B5cmlnaHQgMjAyMy0y MDI0IFJpdm9zLCBJbmMKPiA+ICAgKi8KPiA+Cj4gPiAgI2lmbmRlZiBfVUFQSV9BU01fSFdQUk9C RV9ICj4gPiBAQCAtNjcsNiArNjcsMTQgQEAgc3RydWN0IHJpc2N2X2h3cHJvYmUgewo+ID4gICNk ZWZpbmUgICAgICAgICAgICAgICAgUklTQ1ZfSFdQUk9CRV9NSVNBTElHTkVEX1VOU1VQUE9SVEVE ICAgICg0IDw8IDApCj4gPiAgI2RlZmluZSAgICAgICAgICAgICAgICBSSVNDVl9IV1BST0JFX01J U0FMSUdORURfTUFTSyAgICAgICAgICAgKDcgPDwgMCkKPiA+ICAjZGVmaW5lIFJJU0NWX0hXUFJP QkVfS0VZX1pJQ0JPWl9CTE9DS19TSVpFICAgIDYKPiA+ICsvKgo+ID4gKyAqIEl0IGlzIG5vdCBw b3NzaWJsZSBmb3Igb25lIENQVSB0byBoYXZlIG11bHRpcGxlIHZlbmRvciBpZHMsIHNvIGVhY2gg dmVuZG9yCj4gPiArICogaGFzIGl0cyBvd24gdmVuZG9yIGV4dGVuc2lvbiAibmFtZXNwYWNlIi4g VGhlIGtleXMgZm9yIGVhY2ggdmVuZG9yIHN0YXJ0cwo+ID4gKyAqIGF0IHplcm8uCj4gPiArICov Cj4gPiArI2RlZmluZSBSSVNDVl9IV1BST0JFX0tFWV9WRU5ET1JfRVhUXzAgNwo+ID4gKyAvKiBU LUhlYWQgKi8KPiA+ICsjZGVmaW5lICAgICAgICAgICAgICAgIFJJU0NWX0hXUFJPQkVfVkVORE9S X0VYVF9YVEhFQURWRUNUT1IgICAoMSA8PCAwKQo+ID4gIC8qIEluY3JlYXNlIFJJU0NWX0hXUFJP QkVfTUFYX0tFWSB3aGVuIGFkZGluZyBpdGVtcy4gKi8KPiA+Cj4gPiAgLyogRmxhZ3MgKi8KPiA+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jIGIvYXJjaC9yaXNj di9rZXJuZWwvc3lzX2h3cHJvYmUuYwo+ID4gaW5kZXggZTBhNDJjODUxNTExLi4zNjVjZTczODA0 NDMgMTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jCj4gPiAr KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jCj4gPiBAQCAtNjksNyArNjksOCBA QCBzdGF0aWMgdm9pZCBod3Byb2JlX2lzYV9leHQwKHN0cnVjdCByaXNjdl9od3Byb2JlICpwYWly LAo+ID4gICAgICAgICBpZiAocmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgYykp Cj4gPiAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUgfD0gUklTQ1ZfSFdQUk9CRV9JTUFfQzsK PiA+Cj4gPiAtICAgICAgIGlmIChoYXNfdmVjdG9yKCkgJiYgIXJpc2N2X2hhc192ZW5kb3JfZXh0 ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RPUikpCj4gPiAr ICAgICAgIGlmIChoYXNfdmVjdG9yKCkgJiYKPiA+ICsgICAgICAgICAgICFfX3Jpc2N2X2lzYV92 ZW5kb3JfZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBSSVNDVl9JU0FfVkVORE9SX0VYVF9YVEhF QURWRUNUT1IpKQo+ID4gICAgICAgICAgICAgICAgIHBhaXItPnZhbHVlIHw9IFJJU0NWX0hXUFJP QkVfSU1BX1Y7Cj4gPgo+ID4gICAgICAgICAvKgo+ID4gQEAgLTExMiw3ICsxMTMsOCBAQCBzdGF0 aWMgdm9pZCBod3Byb2JlX2lzYV9leHQwKHN0cnVjdCByaXNjdl9od3Byb2JlICpwYWlyLAo+ID4g ICAgICAgICAgICAgICAgIEVYVF9LRVkoWkFDQVMpOwo+ID4gICAgICAgICAgICAgICAgIEVYVF9L RVkoWklDT05EKTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgaWYgKGhhc192ZWN0b3IoKSAmJiAh cmlzY3ZfaGFzX3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX1ZFTkRPUl9FWFRf WFRIRUFEVkVDVE9SKSkgewo+ID4gKyAgICAgICAgICAgICAgIGlmIChoYXNfdmVjdG9yKCkgJiYK PiA+ICsgICAgICAgICAgICAgICAgICAgIXJpc2N2X2hhc192ZW5kb3JfZXh0ZW5zaW9uX3VubGlr ZWx5KFJJU0NWX0lTQV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RPUikpIHsKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgIEVYVF9LRVkoWlZCQik7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBF WFRfS0VZKFpWQkMpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgRVhUX0tFWShaVktCKTsK PiA+IEBAIC0xMzksNiArMTQxLDU1IEBAIHN0YXRpYyB2b2lkIGh3cHJvYmVfaXNhX2V4dDAoc3Ry dWN0IHJpc2N2X2h3cHJvYmUgKnBhaXIsCj4gPiAgICAgICAgIHBhaXItPnZhbHVlICY9IH5taXNz aW5nOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIHZvaWQgaHdwcm9iZV9pc2FfdmVuZG9yX2V4dDAo c3RydWN0IHJpc2N2X2h3cHJvYmUgKnBhaXIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1cykKPiA+ICt7Cj4gPiArICAgICAg IGludCBjcHU7Cj4gPiArICAgICAgIHU2NCBtaXNzaW5nID0gMDsKPiA+ICsKPiA+ICsgICAgICAg cGFpci0+dmFsdWUgPSAwOwo+ID4gKwo+ID4gKyAgICAgICBzdHJ1Y3QgcmlzY3ZfaHdwcm9iZSBt dmVuZG9yaWQgPSB7Cj4gPiArICAgICAgICAgICAgICAgLmtleSA9IFJJU0NWX0hXUFJPQkVfS0VZ X01WRU5ET1JJRCwKPiA+ICsgICAgICAgICAgICAgICAudmFsdWUgPSAwCj4gPiArICAgICAgIH07 Cj4gPiArCj4gPiArICAgICAgIGh3cHJvYmVfYXJjaF9pZCgmbXZlbmRvcmlkLCBjcHVzKTsKPiA+ ICsKPiA+ICsgICAgICAgLyogU2V0IHZhbHVlIHRvIHplcm8gaWYgQ1BVcyBpbiB0aGUgc2V0IGRv IG5vdCBoYXZlIHRoZSBzYW1lIHZlbmRvci4gKi8KPiA+ICsgICAgICAgaWYgKG12ZW5kb3JpZC52 YWx1ZSA9PSAtMVVMTCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAg ICAgIC8qCj4gPiArICAgICAgICAqIExvb3AgdGhyb3VnaCBhbmQgcmVjb3JkIHZlbmRvciBleHRl bnNpb25zIHRoYXQgMSkgYW55b25lIGhhcywgYW5kCj4gPiArICAgICAgICAqIDIpIGFueW9uZSBk b2Vzbid0IGhhdmUuCj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBmb3JfZWFjaF9jcHUoY3B1 LCBjcHVzKSB7Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IHJpc2N2X2lzYWluZm8gKmlzYXZl bmRvcmluZm8gPSAmaGFydF9pc2FfdmVuZG9yW2NwdV07Cj4gPiArCj4gPiArI2RlZmluZSBWRU5E T1JfRVhUX0tFWShleHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAo+ID4gKyAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiA+ICsgICAgICAgICAgICAgICBpZiAoX19yaXNjdl9pc2FfdmVuZG9yX2V4dGVuc2lvbl9hdmFp bGFibGUoaXNhdmVuZG9yaW5mby0+aXNhLCAgICAgICAgICBcCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9S X0VYVF8jI2V4dCkpICAgXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUg fD0gUklTQ1ZfSFdQUk9CRV9WRU5ET1JfRVhUXyMjZXh0OyAgICAgICAgICAgICAgICAgIFwKPiA+ ICsgICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBtaXNzaW5nIHw9IFJJU0NWX0hXUFJPQkVfVkVORE9SX0VYVF8jI2V4dDsgICAgICAgICAg ICAgICAgICAgICAgXAo+ID4gKyAgICAgICB9IHdoaWxlIChmYWxzZSkKPiA+ICsKPiA+ICsgICAg ICAgLyoKPiA+ICsgICAgICAgICogT25seSB1c2UgVkVORE9SX0VYVF9LRVkoKSBmb3IgZXh0ZW5z aW9ucyB3aGljaCBjYW4gYmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UsCj4gPiArICAgICAgICAqIHJl Z2FyZGxlc3Mgb2YgdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24sIGFzIG5vIG90aGVyIGNoZWNr cywgYmVzaWRlcwo+ID4gKyAgICAgICAgKiBwcmVzZW5jZSBpbiB0aGUgaGFydF92ZW5kb3JfaXNh IGJpdG1hcCwgYXJlIG1hZGUuCj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBWRU5ET1JfRVhU X0tFWShYVEhFQURWRUNUT1IpOwo+ID4gKwo+ID4gKyN1bmRlZiBWRU5ET1JfRVhUX0tFWQo+IAo+ IEhleSBDaGFybGllLAo+IFRoYW5rcyBmb3Igd3JpdGluZyB0aGlzIHVwISBBdCB0aGUgdmVyeSBs ZWFzdCBJIHRoaW5rIHRoZQo+IFRIRUFELXNwZWNpZmljIHN0dWZmIHNob3VsZCBwcm9iYWJseSBl bmQgdXAgaW4gaXRzIG93biBmaWxlLCBvdGhlcndpc2UKPiBpdCdsbCBnZXQgY2hhb3RpYyB3aXRo IHZlbmRvcnMgY2xhbW9yaW5nIHRvIGFkZCBzdHVmZiByaWdodCBoZXJlLgoKR3JlYXQgaWRlYSEK Cj4gV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhpcyBhcHByb2FjaDoKPiAgKiBXZSBsZWF2ZSBS SVNDVl9IV1BST0JFX01BWF9LRVkgYXMgdGhlIG1heCBrZXkgZm9yIHRoZSAiZ2VuZXJpYwo+IHdv cmxkIiwgZWcgNi1pc2gKPiAgKiBXZSBkZWZpbmUgdGhhdCBhbnkga2V5IGFib3ZlIDB4ODAwMDAw MDAwMDAwMDAwMCBpcyBpbiB0aGUgdmVuZG9yCj4gc3BhY2UsIHNvIHRoZSBtZWFuaW5nIG9mIHRo ZSBrZXlzIGRlcGVuZHMgZmlyc3Qgb24gdGhlIG12ZW5kb3JpZAo+IHZhbHVlLgo+ICAqIEluIHRo ZSBrZXJuZWwgY29kZSwgZWFjaCBuZXcgdmVuZG9yIGFkZHMgb24gdG8gYSBnbG9iYWwgc3RydWN0 LAo+IHdoaWNoIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2U6Cj4gc3RydWN0IGh3cHJvYmVfdmVu ZG9yX3NwYWNlIHZlbmRvcl9zcGFjZVtdID0gewo+ICAgICAgICAgewo+ICAgICAgICAgICAgICAg ICAubXZlbmRvcmlkID0gVkVORE9SX1RIRUFELAo+ICAgICAgICAgICAgICAgICAubWF4X2h3cHJv YmVfa2V5ID0gVEhFQURfTUFYX0hXUFJPQkVfS0VZLCAvLyBjdXJyZW50bHkKPiAxIG9yIDB4ODAw MDAwMDAwMDAwMDAwMSB3aXRoIHdoYXQgeW91J3ZlIGdvdC4KPiAgICAgICAgICAgICAgICAgLmh3 cHJvYmVfZm4gPSB0aGVhZF9od3Byb2JlCj4gICAgICAgICB9LAo+ICAgICAgICAgLi4uCj4gfTsK PiAKPiAgKiBBIGh3cHJvYmVfdGhlYWQuYyBpbXBsZW1lbnRzIHRoZWFkX2h3cHJvYmUoKSwgYW5k IGlzIGNhbGxlZAo+IHdoZW5ldmVyIHRoZSBnZW5lcmljIGh3cHJvYmUgZW5jb3VudGVycyBhIGtl eSA+PTB4ODAwMDAwMDAwMDAwMDAwMC4KPiAgKiBHZW5lcmljIGNvZGUgZm9yIHNldHRpbmcgdXAg dGhlIFZEU08gY2FuIHRoZW4gc3RpbGwgY2FsbCB0aGUKPiB2ZW5kb3Itc3BlY2lmaWMgaHdwcm9i ZV9mbigpIHJlcGVhdGVkbHkgd2l0aCBhbiAiYWxsIENQVXMiIG1hc2sgZnJvbQo+IHRoZSBiYXNl IHRvIG1heF9od3Byb2JlX2tleSBhbmQgc2V0IHVwIHRoZSBjYWNoZWQgdGFibGVzIGluIHVzZXJz cGFjZS4KPiAgKiBTaW5jZSB0aGUgVkRTTyBkYXRhIGhhcyBsaW1pdGVkIHNwYWNlIHdlIG1heSBo YXZlIHRvIGNhcCB0aGUgbnVtYmVyCj4gb2YgdmVuZG9yIGtleXMgd2UgY2FjaGUgdG8gYmUgbG93 ZXIgdGhhbiBtYXhfaHdwcm9iZV9rZXkuIFNpbmNlIHRoZQo+IGRhdGEgaXRzZWxmIGlzIG5vdCBl eHBvc2VkIHRvIHVzZXJtb2RlIHdlIGNhbiByYWlzZSB0aGlzIGNhcCBsYXRlciBpZgo+IG5lZWRl ZC4KCkkga25vdyB2ZW5kb3IgZXh0ZW5zaW9ucyBhcmUga2luZCBvZiB0aGUgIndpbGQgd2VzdCIg b2YgcmlzY3YsIGJ1dCBpbgpzcGl0ZSBvZiB0aGF0IEkgd2FudCB0byBkZXNpZ24gYSBjb25zaXN0 ZW50IEFQSS4gVGhlIGlzc3VlIEkgaGFkIHdpdGgKaGF2aW5nIHRoaXMgInZlbmRvciBzcGFjZSIg Zm9yIGV4cG9zaW5nIHZlbmRvciBleHRlbnNpb25zIHdhcyB0aGF0IHRoaXMKaXMgc29tZXRoaW5n IHRoYXQgaXMgaW5oZXJlbnRseSB0aGUgc2FtZSBmb3IgYWxsIHZlbmRvcnMuIEkgc2VlIGEgdmVu ZG9yCnNwYWNlIGxpa2UgdGhpcyBtb3JlIGFwcGxpY2FibGUgZm9yIHNvbWV0aGluZyBsaWtlCiJS SVNDVl9IV1BST0JFX0tFWV9aSUNCT1pfQkxPQ0tfU0laRSIgd2hlcmUgYSB2ZW5kb3IgaGFzIGEg c3BlY2lmaWMKdmFsdWUgdGhleSB3b3VsZCBsaWtlIHRvIGV4cG9zZS4gSSBkbyBhZ3JlZSB0aGF0 IGhhdmluZyBhIHZlbmRvciBzcGFjZQppcyBhIGdvb2QgZGVzaWduIGNob2ljZSwgYnV0IEkgYW0g bm90IGNvbnZpbmNlZCB0aGF0IHZlbmRvciBleHRlbnNpb25zCmFyZSB0aGUgcHJvcGVyIHVzZS1j YXNlLgoKQnkgaGF2aW5nIFJJU0NWX0hXUFJPQkVfS0VZX1ZFTkRPUl9FWFRfMCB3ZSBjYW4gZXhw b3NlIHRoZSB2ZW5kb3IKZXh0ZW5zaW9ucyBpbiB0aGUgc2FtZSB3YXkgdGhhdCBzdGFuZGFyZCBl eHRlbnNpb25zIGFyZSBleHBvc2VkLCB3aXRoIGEKYml0bWFzayByZXByZXNlbnRpbmcgZWFjaCBl eHRlbnNpb24uIElmIHRoZXNlIGFyZSBpbnN0ZWFkIGluIHRoZSB2ZW5kb3IKc3BhY2UsIGVhY2gg dmVuZG9yIHdvdWxkIHByb2JhYmx5IGJlIGluY2xpbmVkIHRvIGludHJvZHVjZSBhIGtleSBsaWtl ClJJU0NWX0hXUFJPQkVfS0VZX1RIRUFEX0VYVF8wIHRoYXQgcmV0dXJucyBhIGJpdG1hc2sgb2Yg YWxsIG9mIHRoZSB0aGVhZAp2ZW5kb3IgZXh0ZW5zaW9ucy4gVGhpcyBkdXBsaWNhdGVkIGVmZm9y dCBpcyB3aGF0IEkgYW0gdHJ5aW5nIHRvIGF2b2lkLgpUaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUg dGhhdCB2ZW5kb3JzIGhhdmUgYSBzZXBhcmF0ZSBrZXkgZm9yIGVhY2gKdmVuZG9yIGV4dGVuc2lv biB0aGV5IHdvdWxkIGxpa2UgdG8gZXhwb3NlLCBidXQgdGhhdCBpcyBzdHJpY3RseSBsZXNzCmVm ZmljaWVudCB0aGFuIHRoZSBleGlzdGluZyBiaXRtYXNrIHByb2JpbmcuCgpEbyB5b3UgdGhpbmsg dGhhdCBoYXZpbmcgdGhlIHZlbmRvciBzcGFjZSBpcyBhcHByb3ByaWF0ZSBmb3IgdmVuZG9yCmV4 dGVuc2lvbnMgZ2l2ZW4gbXkgY29uY2VybnM/CgotIENoYXJsaWUKCj4gCj4gCj4gLUV2YW4KPiAK PiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAvKiBOb3cgdHVybiBvZmYgcmVwb3J0aW5n IGZlYXR1cmVzIGlmIGFueSBDUFUgaXMgbWlzc2luZyBpdC4gKi8KPiA+ICsgICAgICAgcGFpci0+ dmFsdWUgJj0gfm1pc3Npbmc7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBib29sIGh3cHJvYmVf ZXh0MF9oYXMoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdXMsIHVuc2lnbmVkIGxvbmcgZXh0KQo+ ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IHJpc2N2X2h3cHJvYmUgcGFpcjsKPiA+IEBAIC0yMTYs NiArMjY3LDEwIEBAIHN0YXRpYyB2b2lkIGh3cHJvYmVfb25lX3BhaXIoc3RydWN0IHJpc2N2X2h3 cHJvYmUgKnBhaXIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBwYWlyLT52YWx1ZSA9IHJp c2N2X2Nib3pfYmxvY2tfc2l6ZTsKPiA+ICAgICAgICAgICAgICAgICBicmVhazsKPiA+Cj4gPiAr ICAgICAgIGNhc2UgUklTQ1ZfSFdQUk9CRV9LRVlfVkVORE9SX0VYVF8wOgo+ID4gKyAgICAgICAg ICAgICAgIGh3cHJvYmVfaXNhX3ZlbmRvcl9leHQwKHBhaXIsIGNwdXMpOwo+ID4gKyAgICAgICAg ICAgICAgIGJyZWFrOwo+ID4gKwo+ID4gICAgICAgICAvKgo+ID4gICAgICAgICAgKiBGb3IgZm9y d2FyZCBjb21wYXRpYmlsaXR5LCB1bmtub3duIGtleXMgZG9uJ3QgZmFpbCB0aGUgd2hvbGUKPiA+ ICAgICAgICAgICogY2FsbCwgYnV0IGdldCB0aGVpciBlbGVtZW50IGtleSBzZXQgdG8gLTEgYW5k IHZhbHVlIHNldCB0byAwCj4gPgo+ID4gLS0KPiA+IDIuNDQuMAo+ID4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlz dApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK 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 A7BE1C00A94 for ; Fri, 12 Apr 2024 18:17:27 +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=etU5l3yk6zLNJzJqJ4U9RYKb9cV74Ravg9NT6mmD8YE=; b=s7akPgWaOhdLqU Zo7AT/QpkVA1+NmBmM2DuN5e1AnNFecBiK4Pw4hSURrnvc41XhxN84QBvLrIv0r22/LJ11ZMjbJo5 vuMA7lBZtcMf3MCQXBVkat1emDY5ZlW2E9ig4X2m5NzSJxdIp09mOvUPA8TW1npEJumjgfPXk0IzS Zm4+WD6HLBAKrHkkx0IeuzSfbz4cW3wlBdbJqXM0UZE9lWZCSKby+7kuHuCZmbLNzxEcTQwlXYSG6 1se6KHx8z1lfaAlWF4wYxo0xv9093dBYdpeao/6p6H1+ZvMKX92ejGxGUo1PWqNHmTM9qFTn+VlH9 +GS7kyv6OcjKOYQ7J7tA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvLSg-00000000p9l-1c9H; Fri, 12 Apr 2024 18:17:18 +0000 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rvLSc-00000000p3Q-2dK4 for linux-arm-kernel@lists.infradead.org; Fri, 12 Apr 2024 18:17:16 +0000 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-6e46dcd8feaso698614b3a.2 for ; Fri, 12 Apr 2024 11:17:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1712945822; x=1713550622; 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=fwRQcSH3hoRqkz4lFFtuwqCwddU8BwqxVywbCJRklZ0=; b=Z39kaRYqyVeBREthF2l6aGyTA2SADSIC6P7UbExJD/ZjkDFIAkP1HklxtqDKXtQ0kI o/Efgfm62e2Ylj/4QTdQ3S2gAHpGpNjjKCujkcfzP3XeBuEQacDuYwJiaA4+P5G0Nz6w vOhse+ISI7pdHp8I8lyuOtuzpOyfcI0m8gsZXO9+N30lnLCElif9+jHGtc0UnVFd77+a 8WeqaPhdkUpxrNYqo9id3ZWn9GCJuHvAWnG5yP+bzkWsysBWZBMC2JsPxey04vBuXX2S PGWw7hj6LZds54PhX4TVi/rLw5SJ4WpyVG9NLW9nF3L5DKe4ZXnu9pSWsLGfx+PKOiNw TWnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712945822; x=1713550622; 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=fwRQcSH3hoRqkz4lFFtuwqCwddU8BwqxVywbCJRklZ0=; b=AuiesHJMbJE333ZqiarqQwYASUs3Nb7kLDuYiOu3nmJrN3zLKroxnxHZgOj6ueuP4D WC17AV4xHlF616rPig2MU4nQeyM5HI+qSKfHT+4XeEGDpPiuollAyQdJy2UqjTR9NaLf 3Kuq07U+EdKDBnL/AgdDrm0UyJZLSUgINh+hOhJVmf1ojt2Jii4T4zQQmVmZiiT4ElaS wg+pxEn76D+7dHrcga3GJ+H5TW+3Ol4HBaR4vpUYhjb9ec5gLYcWTO8vxbiLLGIVjRiU vtKeXs0vMPOK/joUU9vDJGg4HdsFWgTDfbvWLdtJkMk6Tdp1kJ2I+rcqTddLNK4VWSUm lPZg== X-Forwarded-Encrypted: i=1; AJvYcCU/JhlJaKzDmVgQ3rl4bDtQnUK8pmon46OtU3T3nUQlineOtSKxgMS2eWA8MZmBs5h1iDgE9QkkHn09iIYsfRkET0iYNoH4juExQ3b3ps+Fnbra8R8= X-Gm-Message-State: AOJu0Ywf5PLGJ38V90FIExORVM1hWASn3ip4uLBEqVmf7dZE7jvkhUoq IVYrxVrVlZaA6U1qR2et46XzKYGHtHW95GBo3APzlyijboDvl4tL7KZrl5pp6GA= X-Google-Smtp-Source: AGHT+IEAA1SdXJJ9JaBE0uNqu1IjKHNyvp0QURZDSkRyrJGkvMsb68Cr5A+LNkkLoKuuki78cgNyYA== X-Received: by 2002:a05:6a20:9c90:b0:1a9:c757:a22d with SMTP id mj16-20020a056a209c9000b001a9c757a22dmr336085pzb.14.1712945821769; Fri, 12 Apr 2024 11:17:01 -0700 (PDT) Received: from ghost (mobile-166-137-160-039.mycingular.net. [166.137.160.39]) by smtp.gmail.com with ESMTPSA id d3-20020a056a00198300b006e6c6a50e5esm3162896pfl.34.2024.04.12.11.16.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 11:17:01 -0700 (PDT) Date: Fri, 12 Apr 2024 11:16:54 -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_111714_748246_782D5CE6 X-CRM114-Status: GOOD ( 51.09 ) 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 T24gRnJpLCBBcHIgMTIsIDIwMjQgYXQgMTA6MDU6MjFBTSAtMDcwMCwgRXZhbiBHcmVlbiB3cm90 ZToKPiBPbiBUaHUsIEFwciAxMSwgMjAyNCBhdCA5OjEy4oCvUE0gQ2hhcmxpZSBKZW5raW5zIDxj aGFybGllQHJpdm9zaW5jLmNvbT4gd3JvdGU6Cj4gPgo+ID4gQWRkIGEgbmV3IGh3cHJvYmUga2V5 ICJSSVNDVl9IV1BST0JFX0tFWV9WRU5ET1JfRVhUXzAiIHdoaWNoIGFsbG93cwo+ID4gdXNlcnNw YWNlIHRvIHByb2JlIGZvciB0aGUgbmV3IFJJU0NWX0lTQV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RP UiB2ZW5kb3IKPiA+IGV4dGVuc2lvbi4KPiA+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBDaGFybGllIEpl bmtpbnMgPGNoYXJsaWVAcml2b3NpbmMuY29tPgo+ID4gLS0tCj4gPiAgYXJjaC9yaXNjdi9pbmNs dWRlL2FzbS9od3Byb2JlLmggICAgICB8ICA0ICstLQo+ID4gIGFyY2gvcmlzY3YvaW5jbHVkZS91 YXBpL2FzbS9od3Byb2JlLmggfCAxMCArKysrKy0KPiA+ICBhcmNoL3Jpc2N2L2tlcm5lbC9zeXNf aHdwcm9iZS5jICAgICAgIHwgNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0K PiA+ICAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4g Pgo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oIGIvYXJj aC9yaXNjdi9pbmNsdWRlL2FzbS9od3Byb2JlLmgKPiA+IGluZGV4IDYzMDUwN2RmZjVlYS4uZTY4 NDk2YjRmOGRlIDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS9od3Byb2Jl LmgKPiA+ICsrKyBiL2FyY2gvcmlzY3YvaW5jbHVkZS9hc20vaHdwcm9iZS5oCj4gPiBAQCAtMSw2 ICsxLDYgQEAKPiA+ICAvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBXSVRIIExp bnV4LXN5c2NhbGwtbm90ZSAqLwo+ID4gIC8qCj4gPiAtICogQ29weXJpZ2h0IDIwMjMgUml2b3Ms IEluYwo+ID4gKyAqIENvcHlyaWdodCAyMDIzLTIwMjQgUml2b3MsIEluYwo+ID4gICAqLwo+ID4K PiA+ICAjaWZuZGVmIF9BU01fSFdQUk9CRV9ICj4gPiBAQCAtOCw3ICs4LDcgQEAKPiA+Cj4gPiAg I2luY2x1ZGUgPHVhcGkvYXNtL2h3cHJvYmUuaD4KPiA+Cj4gPiAtI2RlZmluZSBSSVNDVl9IV1BS T0JFX01BWF9LRVkgNgo+ID4gKyNkZWZpbmUgUklTQ1ZfSFdQUk9CRV9NQVhfS0VZIDcKPiA+Cj4g PiAgc3RhdGljIGlubGluZSBib29sIHJpc2N2X2h3cHJvYmVfa2V5X2lzX3ZhbGlkKF9fczY0IGtl eSkKPiA+ICB7Cj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdi9pbmNsdWRlL3VhcGkvYXNtL2h3 cHJvYmUuaCBiL2FyY2gvcmlzY3YvaW5jbHVkZS91YXBpL2FzbS9od3Byb2JlLmgKPiA+IGluZGV4 IDlmMmE4ZTNmZjIwNC4uNjYxNGQzYWRmYzc1IDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9yaXNjdi9p bmNsdWRlL3VhcGkvYXNtL2h3cHJvYmUuaAo+ID4gKysrIGIvYXJjaC9yaXNjdi9pbmNsdWRlL3Vh cGkvYXNtL2h3cHJvYmUuaAo+ID4gQEAgLTEsNiArMSw2IEBACj4gPiAgLyogU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KPiA+ICAvKgo+ ID4gLSAqIENvcHlyaWdodCAyMDIzIFJpdm9zLCBJbmMKPiA+ICsgKiBDb3B5cmlnaHQgMjAyMy0y MDI0IFJpdm9zLCBJbmMKPiA+ICAgKi8KPiA+Cj4gPiAgI2lmbmRlZiBfVUFQSV9BU01fSFdQUk9C RV9ICj4gPiBAQCAtNjcsNiArNjcsMTQgQEAgc3RydWN0IHJpc2N2X2h3cHJvYmUgewo+ID4gICNk ZWZpbmUgICAgICAgICAgICAgICAgUklTQ1ZfSFdQUk9CRV9NSVNBTElHTkVEX1VOU1VQUE9SVEVE ICAgICg0IDw8IDApCj4gPiAgI2RlZmluZSAgICAgICAgICAgICAgICBSSVNDVl9IV1BST0JFX01J U0FMSUdORURfTUFTSyAgICAgICAgICAgKDcgPDwgMCkKPiA+ICAjZGVmaW5lIFJJU0NWX0hXUFJP QkVfS0VZX1pJQ0JPWl9CTE9DS19TSVpFICAgIDYKPiA+ICsvKgo+ID4gKyAqIEl0IGlzIG5vdCBw b3NzaWJsZSBmb3Igb25lIENQVSB0byBoYXZlIG11bHRpcGxlIHZlbmRvciBpZHMsIHNvIGVhY2gg dmVuZG9yCj4gPiArICogaGFzIGl0cyBvd24gdmVuZG9yIGV4dGVuc2lvbiAibmFtZXNwYWNlIi4g VGhlIGtleXMgZm9yIGVhY2ggdmVuZG9yIHN0YXJ0cwo+ID4gKyAqIGF0IHplcm8uCj4gPiArICov Cj4gPiArI2RlZmluZSBSSVNDVl9IV1BST0JFX0tFWV9WRU5ET1JfRVhUXzAgNwo+ID4gKyAvKiBU LUhlYWQgKi8KPiA+ICsjZGVmaW5lICAgICAgICAgICAgICAgIFJJU0NWX0hXUFJPQkVfVkVORE9S X0VYVF9YVEhFQURWRUNUT1IgICAoMSA8PCAwKQo+ID4gIC8qIEluY3JlYXNlIFJJU0NWX0hXUFJP QkVfTUFYX0tFWSB3aGVuIGFkZGluZyBpdGVtcy4gKi8KPiA+Cj4gPiAgLyogRmxhZ3MgKi8KPiA+ IGRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jIGIvYXJjaC9yaXNj di9rZXJuZWwvc3lzX2h3cHJvYmUuYwo+ID4gaW5kZXggZTBhNDJjODUxNTExLi4zNjVjZTczODA0 NDMgMTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jCj4gPiAr KysgYi9hcmNoL3Jpc2N2L2tlcm5lbC9zeXNfaHdwcm9iZS5jCj4gPiBAQCAtNjksNyArNjksOCBA QCBzdGF0aWMgdm9pZCBod3Byb2JlX2lzYV9leHQwKHN0cnVjdCByaXNjdl9od3Byb2JlICpwYWly LAo+ID4gICAgICAgICBpZiAocmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUoTlVMTCwgYykp Cj4gPiAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUgfD0gUklTQ1ZfSFdQUk9CRV9JTUFfQzsK PiA+Cj4gPiAtICAgICAgIGlmIChoYXNfdmVjdG9yKCkgJiYgIXJpc2N2X2hhc192ZW5kb3JfZXh0 ZW5zaW9uX3VubGlrZWx5KFJJU0NWX0lTQV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RPUikpCj4gPiAr ICAgICAgIGlmIChoYXNfdmVjdG9yKCkgJiYKPiA+ICsgICAgICAgICAgICFfX3Jpc2N2X2lzYV92 ZW5kb3JfZXh0ZW5zaW9uX2F2YWlsYWJsZShOVUxMLCBSSVNDVl9JU0FfVkVORE9SX0VYVF9YVEhF QURWRUNUT1IpKQo+ID4gICAgICAgICAgICAgICAgIHBhaXItPnZhbHVlIHw9IFJJU0NWX0hXUFJP QkVfSU1BX1Y7Cj4gPgo+ID4gICAgICAgICAvKgo+ID4gQEAgLTExMiw3ICsxMTMsOCBAQCBzdGF0 aWMgdm9pZCBod3Byb2JlX2lzYV9leHQwKHN0cnVjdCByaXNjdl9od3Byb2JlICpwYWlyLAo+ID4g ICAgICAgICAgICAgICAgIEVYVF9LRVkoWkFDQVMpOwo+ID4gICAgICAgICAgICAgICAgIEVYVF9L RVkoWklDT05EKTsKPiA+Cj4gPiAtICAgICAgICAgICAgICAgaWYgKGhhc192ZWN0b3IoKSAmJiAh cmlzY3ZfaGFzX3ZlbmRvcl9leHRlbnNpb25fdW5saWtlbHkoUklTQ1ZfSVNBX1ZFTkRPUl9FWFRf WFRIRUFEVkVDVE9SKSkgewo+ID4gKyAgICAgICAgICAgICAgIGlmIChoYXNfdmVjdG9yKCkgJiYK PiA+ICsgICAgICAgICAgICAgICAgICAgIXJpc2N2X2hhc192ZW5kb3JfZXh0ZW5zaW9uX3VubGlr ZWx5KFJJU0NWX0lTQV9WRU5ET1JfRVhUX1hUSEVBRFZFQ1RPUikpIHsKPiA+ICAgICAgICAgICAg ICAgICAgICAgICAgIEVYVF9LRVkoWlZCQik7Cj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBF WFRfS0VZKFpWQkMpOwo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgRVhUX0tFWShaVktCKTsK PiA+IEBAIC0xMzksNiArMTQxLDU1IEBAIHN0YXRpYyB2b2lkIGh3cHJvYmVfaXNhX2V4dDAoc3Ry dWN0IHJpc2N2X2h3cHJvYmUgKnBhaXIsCj4gPiAgICAgICAgIHBhaXItPnZhbHVlICY9IH5taXNz aW5nOwo+ID4gIH0KPiA+Cj4gPiArc3RhdGljIHZvaWQgaHdwcm9iZV9pc2FfdmVuZG9yX2V4dDAo c3RydWN0IHJpc2N2X2h3cHJvYmUgKnBhaXIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdHJ1Y3QgY3B1bWFzayAqY3B1cykKPiA+ICt7Cj4gPiArICAgICAg IGludCBjcHU7Cj4gPiArICAgICAgIHU2NCBtaXNzaW5nID0gMDsKPiA+ICsKPiA+ICsgICAgICAg cGFpci0+dmFsdWUgPSAwOwo+ID4gKwo+ID4gKyAgICAgICBzdHJ1Y3QgcmlzY3ZfaHdwcm9iZSBt dmVuZG9yaWQgPSB7Cj4gPiArICAgICAgICAgICAgICAgLmtleSA9IFJJU0NWX0hXUFJPQkVfS0VZ X01WRU5ET1JJRCwKPiA+ICsgICAgICAgICAgICAgICAudmFsdWUgPSAwCj4gPiArICAgICAgIH07 Cj4gPiArCj4gPiArICAgICAgIGh3cHJvYmVfYXJjaF9pZCgmbXZlbmRvcmlkLCBjcHVzKTsKPiA+ ICsKPiA+ICsgICAgICAgLyogU2V0IHZhbHVlIHRvIHplcm8gaWYgQ1BVcyBpbiB0aGUgc2V0IGRv IG5vdCBoYXZlIHRoZSBzYW1lIHZlbmRvci4gKi8KPiA+ICsgICAgICAgaWYgKG12ZW5kb3JpZC52 YWx1ZSA9PSAtMVVMTCkKPiA+ICsgICAgICAgICAgICAgICByZXR1cm47Cj4gPiArCj4gPiArICAg ICAgIC8qCj4gPiArICAgICAgICAqIExvb3AgdGhyb3VnaCBhbmQgcmVjb3JkIHZlbmRvciBleHRl bnNpb25zIHRoYXQgMSkgYW55b25lIGhhcywgYW5kCj4gPiArICAgICAgICAqIDIpIGFueW9uZSBk b2Vzbid0IGhhdmUuCj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBmb3JfZWFjaF9jcHUoY3B1 LCBjcHVzKSB7Cj4gPiArICAgICAgICAgICAgICAgc3RydWN0IHJpc2N2X2lzYWluZm8gKmlzYXZl bmRvcmluZm8gPSAmaGFydF9pc2FfdmVuZG9yW2NwdV07Cj4gPiArCj4gPiArI2RlZmluZSBWRU5E T1JfRVhUX0tFWShleHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAo+ID4gKyAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK PiA+ICsgICAgICAgICAgICAgICBpZiAoX19yaXNjdl9pc2FfdmVuZG9yX2V4dGVuc2lvbl9hdmFp bGFibGUoaXNhdmVuZG9yaW5mby0+aXNhLCAgICAgICAgICBcCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSSVNDVl9JU0FfVkVORE9S X0VYVF8jI2V4dCkpICAgXAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcGFpci0+dmFsdWUg fD0gUklTQ1ZfSFdQUk9CRV9WRU5ET1JfRVhUXyMjZXh0OyAgICAgICAgICAgICAgICAgIFwKPiA+ ICsgICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICBtaXNzaW5nIHw9IFJJU0NWX0hXUFJPQkVfVkVORE9SX0VYVF8jI2V4dDsgICAgICAgICAg ICAgICAgICAgICAgXAo+ID4gKyAgICAgICB9IHdoaWxlIChmYWxzZSkKPiA+ICsKPiA+ICsgICAg ICAgLyoKPiA+ICsgICAgICAgICogT25seSB1c2UgVkVORE9SX0VYVF9LRVkoKSBmb3IgZXh0ZW5z aW9ucyB3aGljaCBjYW4gYmUgZXhwb3NlZCB0byB1c2Vyc3BhY2UsCj4gPiArICAgICAgICAqIHJl Z2FyZGxlc3Mgb2YgdGhlIGtlcm5lbCdzIGNvbmZpZ3VyYXRpb24sIGFzIG5vIG90aGVyIGNoZWNr cywgYmVzaWRlcwo+ID4gKyAgICAgICAgKiBwcmVzZW5jZSBpbiB0aGUgaGFydF92ZW5kb3JfaXNh IGJpdG1hcCwgYXJlIG1hZGUuCj4gPiArICAgICAgICAqLwo+ID4gKyAgICAgICBWRU5ET1JfRVhU X0tFWShYVEhFQURWRUNUT1IpOwo+ID4gKwo+ID4gKyN1bmRlZiBWRU5ET1JfRVhUX0tFWQo+IAo+ IEhleSBDaGFybGllLAo+IFRoYW5rcyBmb3Igd3JpdGluZyB0aGlzIHVwISBBdCB0aGUgdmVyeSBs ZWFzdCBJIHRoaW5rIHRoZQo+IFRIRUFELXNwZWNpZmljIHN0dWZmIHNob3VsZCBwcm9iYWJseSBl bmQgdXAgaW4gaXRzIG93biBmaWxlLCBvdGhlcndpc2UKPiBpdCdsbCBnZXQgY2hhb3RpYyB3aXRo IHZlbmRvcnMgY2xhbW9yaW5nIHRvIGFkZCBzdHVmZiByaWdodCBoZXJlLgoKR3JlYXQgaWRlYSEK Cj4gV2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhpcyBhcHByb2FjaDoKPiAgKiBXZSBsZWF2ZSBS SVNDVl9IV1BST0JFX01BWF9LRVkgYXMgdGhlIG1heCBrZXkgZm9yIHRoZSAiZ2VuZXJpYwo+IHdv cmxkIiwgZWcgNi1pc2gKPiAgKiBXZSBkZWZpbmUgdGhhdCBhbnkga2V5IGFib3ZlIDB4ODAwMDAw MDAwMDAwMDAwMCBpcyBpbiB0aGUgdmVuZG9yCj4gc3BhY2UsIHNvIHRoZSBtZWFuaW5nIG9mIHRo ZSBrZXlzIGRlcGVuZHMgZmlyc3Qgb24gdGhlIG12ZW5kb3JpZAo+IHZhbHVlLgo+ICAqIEluIHRo ZSBrZXJuZWwgY29kZSwgZWFjaCBuZXcgdmVuZG9yIGFkZHMgb24gdG8gYSBnbG9iYWwgc3RydWN0 LAo+IHdoaWNoIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2U6Cj4gc3RydWN0IGh3cHJvYmVfdmVu ZG9yX3NwYWNlIHZlbmRvcl9zcGFjZVtdID0gewo+ICAgICAgICAgewo+ICAgICAgICAgICAgICAg ICAubXZlbmRvcmlkID0gVkVORE9SX1RIRUFELAo+ICAgICAgICAgICAgICAgICAubWF4X2h3cHJv YmVfa2V5ID0gVEhFQURfTUFYX0hXUFJPQkVfS0VZLCAvLyBjdXJyZW50bHkKPiAxIG9yIDB4ODAw MDAwMDAwMDAwMDAwMSB3aXRoIHdoYXQgeW91J3ZlIGdvdC4KPiAgICAgICAgICAgICAgICAgLmh3 cHJvYmVfZm4gPSB0aGVhZF9od3Byb2JlCj4gICAgICAgICB9LAo+ICAgICAgICAgLi4uCj4gfTsK PiAKPiAgKiBBIGh3cHJvYmVfdGhlYWQuYyBpbXBsZW1lbnRzIHRoZWFkX2h3cHJvYmUoKSwgYW5k IGlzIGNhbGxlZAo+IHdoZW5ldmVyIHRoZSBnZW5lcmljIGh3cHJvYmUgZW5jb3VudGVycyBhIGtl eSA+PTB4ODAwMDAwMDAwMDAwMDAwMC4KPiAgKiBHZW5lcmljIGNvZGUgZm9yIHNldHRpbmcgdXAg dGhlIFZEU08gY2FuIHRoZW4gc3RpbGwgY2FsbCB0aGUKPiB2ZW5kb3Itc3BlY2lmaWMgaHdwcm9i ZV9mbigpIHJlcGVhdGVkbHkgd2l0aCBhbiAiYWxsIENQVXMiIG1hc2sgZnJvbQo+IHRoZSBiYXNl IHRvIG1heF9od3Byb2JlX2tleSBhbmQgc2V0IHVwIHRoZSBjYWNoZWQgdGFibGVzIGluIHVzZXJz cGFjZS4KPiAgKiBTaW5jZSB0aGUgVkRTTyBkYXRhIGhhcyBsaW1pdGVkIHNwYWNlIHdlIG1heSBo YXZlIHRvIGNhcCB0aGUgbnVtYmVyCj4gb2YgdmVuZG9yIGtleXMgd2UgY2FjaGUgdG8gYmUgbG93 ZXIgdGhhbiBtYXhfaHdwcm9iZV9rZXkuIFNpbmNlIHRoZQo+IGRhdGEgaXRzZWxmIGlzIG5vdCBl eHBvc2VkIHRvIHVzZXJtb2RlIHdlIGNhbiByYWlzZSB0aGlzIGNhcCBsYXRlciBpZgo+IG5lZWRl ZC4KCkkga25vdyB2ZW5kb3IgZXh0ZW5zaW9ucyBhcmUga2luZCBvZiB0aGUgIndpbGQgd2VzdCIg b2YgcmlzY3YsIGJ1dCBpbgpzcGl0ZSBvZiB0aGF0IEkgd2FudCB0byBkZXNpZ24gYSBjb25zaXN0 ZW50IEFQSS4gVGhlIGlzc3VlIEkgaGFkIHdpdGgKaGF2aW5nIHRoaXMgInZlbmRvciBzcGFjZSIg Zm9yIGV4cG9zaW5nIHZlbmRvciBleHRlbnNpb25zIHdhcyB0aGF0IHRoaXMKaXMgc29tZXRoaW5n IHRoYXQgaXMgaW5oZXJlbnRseSB0aGUgc2FtZSBmb3IgYWxsIHZlbmRvcnMuIEkgc2VlIGEgdmVu ZG9yCnNwYWNlIGxpa2UgdGhpcyBtb3JlIGFwcGxpY2FibGUgZm9yIHNvbWV0aGluZyBsaWtlCiJS SVNDVl9IV1BST0JFX0tFWV9aSUNCT1pfQkxPQ0tfU0laRSIgd2hlcmUgYSB2ZW5kb3IgaGFzIGEg c3BlY2lmaWMKdmFsdWUgdGhleSB3b3VsZCBsaWtlIHRvIGV4cG9zZS4gSSBkbyBhZ3JlZSB0aGF0 IGhhdmluZyBhIHZlbmRvciBzcGFjZQppcyBhIGdvb2QgZGVzaWduIGNob2ljZSwgYnV0IEkgYW0g bm90IGNvbnZpbmNlZCB0aGF0IHZlbmRvciBleHRlbnNpb25zCmFyZSB0aGUgcHJvcGVyIHVzZS1j YXNlLgoKQnkgaGF2aW5nIFJJU0NWX0hXUFJPQkVfS0VZX1ZFTkRPUl9FWFRfMCB3ZSBjYW4gZXhw b3NlIHRoZSB2ZW5kb3IKZXh0ZW5zaW9ucyBpbiB0aGUgc2FtZSB3YXkgdGhhdCBzdGFuZGFyZCBl eHRlbnNpb25zIGFyZSBleHBvc2VkLCB3aXRoIGEKYml0bWFzayByZXByZXNlbnRpbmcgZWFjaCBl eHRlbnNpb24uIElmIHRoZXNlIGFyZSBpbnN0ZWFkIGluIHRoZSB2ZW5kb3IKc3BhY2UsIGVhY2gg dmVuZG9yIHdvdWxkIHByb2JhYmx5IGJlIGluY2xpbmVkIHRvIGludHJvZHVjZSBhIGtleSBsaWtl ClJJU0NWX0hXUFJPQkVfS0VZX1RIRUFEX0VYVF8wIHRoYXQgcmV0dXJucyBhIGJpdG1hc2sgb2Yg YWxsIG9mIHRoZSB0aGVhZAp2ZW5kb3IgZXh0ZW5zaW9ucy4gVGhpcyBkdXBsaWNhdGVkIGVmZm9y dCBpcyB3aGF0IEkgYW0gdHJ5aW5nIHRvIGF2b2lkLgpUaGUgYWx0ZXJuYXRpdmUgd291bGQgYmUg dGhhdCB2ZW5kb3JzIGhhdmUgYSBzZXBhcmF0ZSBrZXkgZm9yIGVhY2gKdmVuZG9yIGV4dGVuc2lv biB0aGV5IHdvdWxkIGxpa2UgdG8gZXhwb3NlLCBidXQgdGhhdCBpcyBzdHJpY3RseSBsZXNzCmVm ZmljaWVudCB0aGFuIHRoZSBleGlzdGluZyBiaXRtYXNrIHByb2JpbmcuCgpEbyB5b3UgdGhpbmsg dGhhdCBoYXZpbmcgdGhlIHZlbmRvciBzcGFjZSBpcyBhcHByb3ByaWF0ZSBmb3IgdmVuZG9yCmV4 dGVuc2lvbnMgZ2l2ZW4gbXkgY29uY2VybnM/CgotIENoYXJsaWUKCj4gCj4gCj4gLUV2YW4KPiAK PiA+ICsgICAgICAgfQo+ID4gKwo+ID4gKyAgICAgICAvKiBOb3cgdHVybiBvZmYgcmVwb3J0aW5n IGZlYXR1cmVzIGlmIGFueSBDUFUgaXMgbWlzc2luZyBpdC4gKi8KPiA+ICsgICAgICAgcGFpci0+ dmFsdWUgJj0gfm1pc3Npbmc7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyBib29sIGh3cHJvYmVf ZXh0MF9oYXMoY29uc3Qgc3RydWN0IGNwdW1hc2sgKmNwdXMsIHVuc2lnbmVkIGxvbmcgZXh0KQo+ ID4gIHsKPiA+ICAgICAgICAgc3RydWN0IHJpc2N2X2h3cHJvYmUgcGFpcjsKPiA+IEBAIC0yMTYs NiArMjY3LDEwIEBAIHN0YXRpYyB2b2lkIGh3cHJvYmVfb25lX3BhaXIoc3RydWN0IHJpc2N2X2h3 cHJvYmUgKnBhaXIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICBwYWlyLT52YWx1ZSA9IHJp c2N2X2Nib3pfYmxvY2tfc2l6ZTsKPiA+ICAgICAgICAgICAgICAgICBicmVhazsKPiA+Cj4gPiAr ICAgICAgIGNhc2UgUklTQ1ZfSFdQUk9CRV9LRVlfVkVORE9SX0VYVF8wOgo+ID4gKyAgICAgICAg ICAgICAgIGh3cHJvYmVfaXNhX3ZlbmRvcl9leHQwKHBhaXIsIGNwdXMpOwo+ID4gKyAgICAgICAg ICAgICAgIGJyZWFrOwo+ID4gKwo+ID4gICAgICAgICAvKgo+ID4gICAgICAgICAgKiBGb3IgZm9y d2FyZCBjb21wYXRpYmlsaXR5LCB1bmtub3duIGtleXMgZG9uJ3QgZmFpbCB0aGUgd2hvbGUKPiA+ ICAgICAgICAgICogY2FsbCwgYnV0IGdldCB0aGVpciBlbGVtZW50IGtleSBzZXQgdG8gLTEgYW5k IHZhbHVlIHNldCB0byAwCj4gPgo+ID4gLS0KPiA+IDIuNDQuMAo+ID4KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGlu ZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK