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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 35DA4C36002 for ; Wed, 9 Apr 2025 14:47:27 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2WeW-0008GM-Un; Wed, 09 Apr 2025 10:43:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u2WeJ-0008Eg-Lp for qemu-devel@nongnu.org; Wed, 09 Apr 2025 10:43:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u2WeG-00067l-Ej for qemu-devel@nongnu.org; Wed, 09 Apr 2025 10:43:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1744209803; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Au2yBV/kCp+ri0S/wikctE15ZyVV2rVoqkWr3qeotK0=; b=M355ziCSaw3QktdcQqU+Bkv1d5WWXu6FtAS5OBU/v5jkQuD9tLUUaGfx85Q4ie+PEG9Xml YcVkz4rj6BADSoMEKQXSCTjISX3SOYQBYUnaQsh0IiupnRKv97WyzBk/GDBt/luOfJfwoG /CEzd3rP+9CnkVY/ZdfdOomZRH2AppE= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-98-f_Sv6RCBP-6EVSa-7WPiNA-1; Wed, 09 Apr 2025 10:43:19 -0400 X-MC-Unique: f_Sv6RCBP-6EVSa-7WPiNA-1 X-Mimecast-MFC-AGG-ID: f_Sv6RCBP-6EVSa-7WPiNA_1744209797 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 5CBEB1800263; Wed, 9 Apr 2025 14:43:16 +0000 (UTC) Received: from gondolin.redhat.com (unknown [10.45.227.4]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id 1AAF6180B486; Wed, 9 Apr 2025 14:43:07 +0000 (UTC) From: Cornelia Huck To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, qemu-arm@nongnu.org, kvmarm@lists.linux.dev, peter.maydell@linaro.org, richard.henderson@linaro.org, alex.bennee@linaro.org, maz@kernel.org, oliver.upton@linux.dev, sebott@redhat.com, shameerali.kolothum.thodi@huawei.com, armbru@redhat.com, berrange@redhat.com, abologna@redhat.com, jdenemar@redhat.com, agraf@csgraf.de Cc: shahuang@redhat.com, mark.rutland@arm.com, philmd@linaro.org, pbonzini@redhat.com, Cornelia Huck Subject: [PATCH for-10.1 v5 00/13] arm: rework id register storage Date: Wed, 9 Apr 2025 16:42:51 +0200 Message-ID: <20250409144304.912325-1-cohuck@redhat.com> MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 Received-SPF: pass client-ip=170.10.133.124; envelope-from=cohuck@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -25 X-Spam_score: -2.6 X-Spam_bar: -- X-Spam_report: (-2.6 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.505, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Just a quick respin to fix a missed conversion in hvf.c. Also available at https://gitlab.com/cohuck/qemu/-/commits/arm-rework-idreg-storage-v5 Next iteration of the id register patches; only small changes. Changed from v3: - added R-bs (thanks!) - added missing SPDX header - merged patch introducing accessors for kvm to the first user - skip over sysregs outside of the id register range when generating register definitions again Also available at https://gitlab.com/cohuck/qemu/-/commits/arm-rework-idreg-storage-v4 Yet another update of the id register series, less changes this time around. Changed from v2: - changed generation of the various register defines via the "DEF" magic suggested by Richard - some kvm-only code moved to kvm.c; some code potentially useful to non-kvm code stayed out of there (the cpu model code will make use of it, and that one should be extendable outside of kvm -- a revised version of those patches is still in the works, but I'll be off for a few days and rather wanted to get this one out first) Also available at https://gitlab.com/cohuck/qemu/-/commits/arm-rework-idreg-storage-v3 Changed from v1: - Noticed that we missed the hvf code. Converted, compiled, but not tested as I'm lacking an environment for testing. - Hopefully incorporated most of the suggested changes -- if I missed something, it was unintentional unless mentioned below. - fixed repeated inclusion of definitions - hopefully made macros more robust - removed distinction between reading 32/64 values, which was mostly adding churn for little value - postponed generating property definitions to the cpu model patches, where they are actually used - juggled hunks and moved them to the right patches - fixed some typos - rebased to a more recent code base NOT changed from v1: - definitions are still generated from the Linux sysregs file - I still think updating the generated files on demand (so that we can double check the result) is the right thing to do - I'm open to changing the source of the definitions from the sysregs file to the JSON definitions published by Arm; however, I first wanted to get the code using it right -- we can switch out the code generating the file to use a different source easily later on, and I'd also like to steal parts of the script from Linux once integrated (which I think hasn't happened yet?) [Note: I've kept the cc list from the last round of cpu model patches; so if you're confused as to why you're cc:ed here, take it as a heads-up that a new cpu model series will come along soon] This patch series contains patches extracted from the larger cpu model series (RFC v2 last posted at https://lore.kernel.org/qemu-devel/20241206112213.88394-1-cohuck@redhat.com/) and aims at providing a base upon which we can continue with building support for cpu models, but which is hopefully already an improvement on its own. Main changes from the patches in that series include: - post-pone the changes to handle KVM writable ID registers for cpu models (I have a series including that on top of this one) - change how we store the list of ID registers, and access them basically, use an enum for indexing, and an enum doing encodings in a pattern similar to cpregs - move some hunks to different patches - update the scripts to generate the register descriptions, and run them against a recent Linux sysregs file What I've kept: - generating the register descriptions from the Linux sysregs file I think that file is still our best bet to generate the descriptions easily, and updating the definitions is a manual step that can be checked for unintended changes - most of the hard work that Eric had been doing; all new bugs in there are my own :) Cornelia Huck (1): arm/cpu: switch to a generated cpu-sysregs.h.inc Eric Auger (12): arm/cpu: Add sysreg definitions in cpu-sysregs.h arm/cpu: Store aa64isar0/aa64zfr0 into the idregs arrays arm/cpu: Store aa64isar1/2 into the idregs array arm/cpu: Store aa64pfr0/1 into the idregs array arm/cpu: Store aa64mmfr0-3 into the idregs array arm/cpu: Store aa64dfr0/1 into the idregs array arm/cpu: Store aa64smfr0 into the idregs array arm/cpu: Store id_isar0-7 into the idregs array arm/cpu: Store id_pfr0/1/2 into the idregs array arm/cpu: Store id_dfr0/1 into the idregs array arm/cpu: Store id_mmfr0-5 into the idregs array arm/cpu: Add sysreg generation scripts hw/intc/armv7m_nvic.c | 27 +- scripts/gen-cpu-sysregs-header.awk | 35 ++ scripts/update-aarch64-sysreg-code.sh | 25 ++ target/arm/cpu-features.h | 317 +++++++++--------- target/arm/cpu-sysregs.h | 46 +++ target/arm/cpu-sysregs.h.inc | 52 +++ target/arm/cpu.c | 111 +++---- target/arm/cpu.h | 80 +++-- target/arm/cpu64.c | 128 +++---- target/arm/helper.c | 68 ++-- target/arm/hvf/hvf.c | 39 ++- target/arm/internals.h | 6 +- target/arm/kvm.c | 129 ++++---- target/arm/ptw.c | 6 +- target/arm/tcg/cpu-v7m.c | 174 +++++----- target/arm/tcg/cpu32.c | 320 +++++++++--------- target/arm/tcg/cpu64.c | 460 +++++++++++++------------- 17 files changed, 1103 insertions(+), 920 deletions(-) create mode 100755 scripts/gen-cpu-sysregs-header.awk create mode 100755 scripts/update-aarch64-sysreg-code.sh create mode 100644 target/arm/cpu-sysregs.h create mode 100644 target/arm/cpu-sysregs.h.inc -- 2.48.1