Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp2066231rda; Tue, 24 Oct 2023 11:11:23 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF5EsOtgXFKB+6efBDOv6rpsTXg6/1oVppKpxznSbBLK1uanD+vqvZFzKUkIh9lZTVBW+/9 X-Received: by 2002:a17:90b:2512:b0:27d:4935:8d9a with SMTP id ns18-20020a17090b251200b0027d49358d9amr21664004pjb.4.1698171083116; Tue, 24 Oct 2023 11:11:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698171083; cv=none; d=google.com; s=arc-20160816; b=eY6M5pDn2YS59AmqGzpvPO80tgoDQ+mZE+oj2OTNkwIYuVc/yIlsW75ITtT6yRq8ZK n2TCq84B1H/fdoIrdZPE/5JfgJTV0pcx2RVBP4OzIjM/dP9P5rsSvQc8p5RqVhAsEagS nBEBRjEmcDo+xCtTe0TLnOLSKzhVJf4vM9IbqZte78RMAJwcX97AhrWnrHrr80PabFoM SwwD8nLqsU+xU0tTceqN3o/6GujhQ49JycBibZwQauI0YOPBknQdqoEgNIEsxk1RIcRL fr7FNA+mWlTvi1dFR9Ppwaw804XHJK6BurRS4N0AyeMURquNbkL0s5Jh3K3iws1v4VWZ LAKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=dKxR0O8nMebNGWqyGQ9J2L+zEiSIfrsVmyfDrAKwhR8=; fh=MZraISKRGtn7mfZE8jYb/9iK+fB7exE1eGpWnJ3LLzc=; b=Nepm2gvE07trAJGBWBGJo5lDfBOGGS1AUhdEHkAk6dXdzO3Ifp9SXyVfyiA8wT5DRz e+cAFEgFkEQQjsdveV23cJcw6x89hAXNFxf69aXbbJOxGCzAlchHl3MGQKZFgIQveoi3 IE8U+0FsyaCFDF/NOpiCfe9uJuwuoRt9Rx7Xv5Gacv/RV5tp3R7hPK6pPYzxD1esamRQ DCX+RAsKkCDQyeMOzW9EOdb6kmM9CW1XhZi+Cc7m8kSLiSIhOU5BC8UmWp/BaSJI/IHC IXdodKDVnLHF+3BI2ux55RafwVGoKAXitmzf/4PU7OfRWnfIk6OChE5v0zksYozmX8sv +eEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=dl0Z3I2o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id o2-20020a17090ac70200b002791d2ce94asi11349968pjt.81.2023.10.24.11.11.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Oct 2023 11:11:23 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=dl0Z3I2o; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 6A0318034615; Tue, 24 Oct 2023 11:11:20 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1343937AbjJXSLH (ORCPT + 99 others); Tue, 24 Oct 2023 14:11:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45448 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343587AbjJXSLG (ORCPT ); Tue, 24 Oct 2023 14:11:06 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8234910D1 for ; Tue, 24 Oct 2023 11:11:03 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-32de9764793so755491f8f.0 for ; Tue, 24 Oct 2023 11:11:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1698171062; x=1698775862; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=dKxR0O8nMebNGWqyGQ9J2L+zEiSIfrsVmyfDrAKwhR8=; b=dl0Z3I2oLFlC18j2c/Kq7mwVvuHOK/vmrQpO0xeY+dLNbyhyQUrPkA1B3wOElJJNxS zXKXVeAwL83tPLOh14ddkeLx7kHTVA+Ak9R03UL2B+/3BWlAtlNcPA+x5IeCcOpvMC9T 3mCh4aXi2UJaMYWkUBybnmW8wnOp3J4vuLuNvEC/jTuTg0slllVZffG4P4fKvEJr7VIr SzgcQDldgZYeLA0fM08KcB5pbCF6BnrAXyh7abAS077+oLGk7/GpvbBo09Qj6ZZQ6G+F ihrNE9Sv21gG5yFJBV7tmVahJPOEWHP0OaxxZeBHMkFEnruisafHAzilUECA/sYVpu7i cgSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1698171062; x=1698775862; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=dKxR0O8nMebNGWqyGQ9J2L+zEiSIfrsVmyfDrAKwhR8=; b=FsZuv2VRu9i4Md7Uj3KAFsUe2t6rwP1Y7lX+hmDxyxB6T2nAI5m4HY8EhrOoMHY51Z G0u4IZEGlHm7Xr1hxGDUnWTii9YmGi0/XgUOJNazDKExxX7Q9JjiQXGfI1IeUEtXS8I1 23jPd8cv4wF1yt/8ijJq1aeVCLYU4TeW7wZPwUiYVwHOchqlJLyuqJ+gW5suAHd1ufwF KvX3l0xYlXNI63ZVMA1lIwSwleRAPisZeCohZriS84l7Ob+edxJHpeu8QYyzO9Oetjwz n+NcF1FMp3jxpRU3j7qM4+ez2vETTUOO0Bg6KWSp1zzWYDdcN+jc4uJsnzh6RZ76xfpn KmKA== X-Gm-Message-State: AOJu0YxvVOaqWmbUHCMbSEWThd3MGefUXBjPXys1QNO8rOCpOAdduDEY ODjg1eFWARSBiDwvgIyV35LvdA== X-Received: by 2002:adf:b649:0:b0:32f:51c6:cd6c with SMTP id i9-20020adfb649000000b0032f51c6cd6cmr1688373wre.2.1698171061901; Tue, 24 Oct 2023 11:11:01 -0700 (PDT) Received: from ?IPV6:2a01:e0a:999:a3a0:9f43:3ca4:162c:d540? ([2a01:e0a:999:a3a0:9f43:3ca4:162c:d540]) by smtp.gmail.com with ESMTPSA id a10-20020adfe5ca000000b0032415213a6fsm10361744wrn.87.2023.10.24.11.11.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 24 Oct 2023 11:11:01 -0700 (PDT) Message-ID: <3a5462f6-62d4-49e3-ae78-374fb5cbad5a@rivosinc.com> Date: Tue, 24 Oct 2023 20:11:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 02/19] riscv: add ISA extension parsing for scalar crypto Content-Language: en-US To: Evan Green Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, Palmer Dabbelt , Paul Walmsley , Rob Herring , Krzysztof Kozlowski , Albert Ou , Jonathan Corbet , Andrew Jones , Conor Dooley , Samuel Ortiz , Conor Dooley References: <20231017131456.2053396-1-cleger@rivosinc.com> <20231017131456.2053396-3-cleger@rivosinc.com> <56f6af04-bdf4-4b85-99dc-9eb4f391d7ad@rivosinc.com> From: =?UTF-8?B?Q2zDqW1lbnQgTMOpZ2Vy?= In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 24 Oct 2023 11:11:20 -0700 (PDT) On 24/10/2023 18:37, Evan Green wrote: > On Tue, Oct 24, 2023 at 2:30 AM Clément Léger wrote: >> >> >> >> On 24/10/2023 09:18, Clément Léger wrote: >>> >>> >>> On 23/10/2023 18:21, Evan Green wrote: >>>> On Tue, Oct 17, 2023 at 6:15 AM Clément Léger wrote: >>>>> >>>>> From: Evan Green >>>>> >>>>> The Scalar Crypto specification defines Zk as a shorthand for the >>>>> Zkn, Zkr and Zkt extensions. The same follows for both Zkn, Zks and Zbk, >>>>> which are all shorthands for various other extensions. The detailed >>>>> breakdown can be found in their dt-binding entries. >>>>> >>>>> Since Zkn also implies the Zbkb, Zbkc and Zbkx extensions, simply passing >>>>> "zk" through a DT should enable all of Zbkb, Zbkc, Zbkx, Zkn, Zkr and Zkt. >>>>> For example, setting the "riscv,isa" DT property to "rv64imafdc_zk" >>>>> should generate the following cpuinfo output: >>>>> "rv64imafdc_zicntr_zicsr_zifencei_zihpm_zbkb_zbkc_zbkx_zknd_zkne_zknh_zkr_zkt" >>>>> >>>>> riscv_isa_ext_data grows a pair of new members, to permit setting the >>>>> relevant bits for "bundled" extensions, both while parsing the ISA string >>>>> and the new dedicated extension properties >>>>> >>>>> Co-developed-by: Conor Dooley >>>>> Signed-off-by: Conor Dooley >>>>> Signed-off-by: Evan Green >>>>> Signed-off-by: Clément Léger >>>> >>>> My tree might be out of sync, but in my search for riscv_isa_ext, I >>>> also found a use in print_isa() (cpu.c) where we're reaching into >>>> riscv_isa_ext[].id and assuming it's always valid. If that's still in >>>> there we'll want to fix up that spot too, since now with bundles .id >>>> may or may not be valid. >>> >>> Oh indeed, the array is visible outside of this compilation unit :/. >>> I'll check that before sending V3. >> >> After looking a bit more at that, it actually seems that id is used in >> cpuinfo to determine which extensions are present which means you are >> right, bundle_size needs to be accounted for. >> >> Looking at it also raises the question (again) of exposing the "bundles" >> extensions themselves or not in cpuinfo output. With the current setup, >> the bundles extensions won't be visible in cpuinfo output. For instance >> if Zk was in the isa string, then it will not be visible in the cpuinfo >> output, only the child extensions. One solution would be to always have >> a valid id for each extension. So we would have one for Zk for instance. >> >> We would then have a similar setup for all "bundles" or "subset" >> extensions, they would have a id for all of them. For instance, Zk would >> become: >> >> __RISCV_ISA_EXT_DATA_BUNDLE(zk, RISCV_ISA_EXT_ZK, riscv_zk_bundled_exts) >> >> Same would go for zvbb (riscv_zvbb_subset_exts would only contain Zvkb): >> >> __RISCV_ISA_EXT_DATA_BUNDLE(zk, RISCV_ISA_EXT_ZVBB, riscv_zvbb_subset_exts) >> >> For the sake of completeness, I feel like it would be good to have all >> the extensions (bundles or not) visible in the riscv_isa_ext. >> >> Any objection ? > > I could be persuaded that it's a good idea, but there are arguments to > be made for not defining them as separate bits: > > 1. Having two (sets of) bits that mean the same thing means usermode > now has to decide which one to query, or query both. Multiple values > that mean the same thing is always something that makes me nervous. That is indeed an acceptable cons. > 2. To avoid these two sets having different answers, we'd have to > solve the reverse problem too: If all of the bundled extensions that > make up Zk are on, we'd need to detect that and turn Zk on as well. Oh yes, sorry, already forgot that point :/ Well, I guess things sorted out by themselves. Let's do what you proposed: - Pure lasso extensions (Zk) will simply result in all the sub extensions being enable, there won't be any .id specified for these ones, simply a bundle of extensions. - "Superset" extensions (Zvbb for instance) will have their own .id as well as a bundle made of subsets extensions. Clément > That code would also need to know the difference between a pure lasso > like Zk, where you should flip it on if its components are on, and the > loose change variant we were discussing on the other thread (Zvkb?), > where you cannot. > > Pretending pure lasso extensions didn't exist on their own was a way > to sidestep the problem. > -Evan