From patchwork Fri Sep 23 12:34:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 608588 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp255975pvb; Fri, 23 Sep 2022 05:53:52 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5EUhyzzisf+HyAvVlYy2fHg6Di45CjF/ow7IUzXRN6tSzccxFghH8Ua4O30CLApKNXBRpi X-Received: by 2002:a05:620a:4252:b0:6cf:4d30:dd22 with SMTP id w18-20020a05620a425200b006cf4d30dd22mr5517993qko.175.1663937632706; Fri, 23 Sep 2022 05:53:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663937632; cv=none; d=google.com; s=arc-20160816; b=bCxZEMR9dUeiditjBXSI6fkRRpJBb99HjKa/hmkg4MHJOLoUkmy/MEg/oAsCJWOmiR 8hezbxqvftFqokYhKXnNUqtOHhMpfi2b1JIkx6GNttPsZrcKCZPdU6fC2vaXgTOj+bzm RHK5B0UrXanbdYz4ud1KPg/o/OQ6UAR4dmdyx3wXvl2jHyJmXUSUrAlYV/Jb811qkGRd kXIUmSYvVzoRWhPfIF+zkw/+av0hOsoEGZ32bL0qVMhjpCsgbjKKYGviPhbbhZmm/u0X s1k0uvZM254c/3e+FfQP+4Txb6W4sJCe1LKH1wSvzhLIh/IanLnJLxjXPuGU/3hxrL00 +1VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=9bX1U7fCCWCM+RDd/fzqQav05Uxy455tmNKKT/hfAUQ=; b=RHglqXI9hRfhB/BVcKfUyYu4cek/8ixdBysgnwQGaZc1iPhnMHK94Kc5DkDrv2UAyw Rf2yaOUULjaR1ohgie7siIv5KNkdj5Ae0+9YSfwJIZr8jFzq4jj7w4O1NmhVVLPCXbsM nB18qlAeKNJF2SVcyDB+gMog6+UjU6N2itjhBI1ouWirolr5Z35K/LVd9z/jVoKkvjcm ggRsAjpOBzMVVSrRt1BaEzQhQCZFFN8IJ8vRjJEavyjruQXQV1mARRcBswHH64WIlO7i VSEgfiLgW7AqwufrnVtOY2MkXzSjfDszzHz57qK1kJNhj5YJesTTR8a+dAPw7QSG5rgx aXBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rWEgCWnU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ez8-20020a05622a4c8800b0035baac863c3si4669485qtb.623.2022.09.23.05.53.52 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 23 Sep 2022 05:53:52 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=rWEgCWnU; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:56564 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1obiBj-0001gf-PR for patch@linaro.org; Fri, 23 Sep 2022 08:53:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33562) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1obhsq-0006QI-4Y for qemu-devel@nongnu.org; Fri, 23 Sep 2022 08:34:24 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:43898) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1obhsn-0007VT-AM for qemu-devel@nongnu.org; Fri, 23 Sep 2022 08:34:19 -0400 Received: by mail-wr1-x42e.google.com with SMTP id t7so20173896wrm.10 for ; Fri, 23 Sep 2022 05:34:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=9bX1U7fCCWCM+RDd/fzqQav05Uxy455tmNKKT/hfAUQ=; b=rWEgCWnUdgamXStSyyzCw0RZPP/GBIXNbLE2tfhMqzjfhtI7L1aC0NQ/7Xj4kV/zbI dFugSZKhhBYQZyPeaOzMR+tcnQu0J7JnQ6QM+cijrBCjHIYURZPdtr6vYxqQ7aV7NZT4 cSNi75VYK2qZ7B61anc2O32zV1ijU/WPVI/luNzP8KwXwIXvzdAwewZIxedLFuQ6ggJG 44lr5gjkvGCfGmPsoImiAc6jmbrZ5gr8+wE6+5dzjkgreMLrP90+Z3gIyi6hvfqk/3mo a9np/YKtVH6dqdYRRCbJhaCG+Gevj4AYKQ1YG4o/8xBU5oE446lNBJjl3+g6GN5PrLB0 xo8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=9bX1U7fCCWCM+RDd/fzqQav05Uxy455tmNKKT/hfAUQ=; b=VzHbJqA57fAgSNVWgVopRRwYR4jXe9iCp2hypMw1lzqbnI2zEUmlECDjkOnxDFQ76U a1yk4bh9rSQUaxuY45Mw899L+NfWvx0+1yGNIIkN336n13fSqqT3QTm6eESjJYfoXhBm 4EiO1spSnK1URBNXgvcyRUgaBkMx45AJxRiJcGiD4rNhlvQo7Gd10R/2R23NX7n/i8Ss RwfY+Ho4Sa1cXy3GhQEo3xOoF9ALTVhZpqIwlhGjhALMJF/af0cy+mKfMp4+3xpiAh3H IPhUqDWyPzixWw2uuMTvYs8gwWdNBGZ6QuvevGrNfyRQiWkt/g5h+FRf1gkkJixJYvbo JHHQ== X-Gm-Message-State: ACrzQf0I+LxFpT/K8IwGxTyL6tRqdn+dcHhnAqVTLI7k/Pvd/LqfQFMY /tNHyKQc/c5Fqurb5xFngqo2HI9nEjbb4g== X-Received: by 2002:adf:fa81:0:b0:224:f260:2523 with SMTP id h1-20020adffa81000000b00224f2602523mr5057563wrr.26.1663936455843; Fri, 23 Sep 2022 05:34:15 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id n43-20020a05600c502b00b003b486027c8asm2504555wmr.20.2022.09.23.05.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:34:15 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Thomas Huth Subject: [PATCH 1/3] target/arm: Mark registers which call pmu_op_start() as ARM_CP_IO Date: Fri, 23 Sep 2022 13:34:10 +0100 Message-Id: <20220923123412.1214041-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923123412.1214041-1-peter.maydell@linaro.org> References: <20220923123412.1214041-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::42e; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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+patch=linaro.org@nongnu.org Sender: "Qemu-devel" In commit 01765386a888 we made some system register write functions call pmu_op_start()/pmu_op_finish(). This means that they now touch timers, so for icount to work these registers must have the ARM_CP_IO flag set. This fixes a bug where when icount is enabled a guest that touches MDCR_EL3, MDCR_EL2, PMCNTENSET_EL0 or PMCNTENCLR_EL0 would cause QEMU to print an error message and exit, for example: [ 2.495971] TCP: Hash tables configured (established 1024 bind 1024) [ 2.496213] UDP hash table entries: 256 (order: 1, 8192 bytes) [ 2.496386] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) [ 2.496917] NET: Registered protocol family 1 qemu-system-aarch64: Bad icount read Reported-by: Thomas Huth Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/helper.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 1a57d2e1d60..7c7ba328d6d 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -1927,12 +1927,12 @@ static const ARMCPRegInfo v7_cp_reginfo[] = { * or PL0_RO as appropriate and then check PMUSERENR in the helper fn. */ { .name = "PMCNTENSET", .cp = 15, .crn = 9, .crm = 12, .opc1 = 0, .opc2 = 1, - .access = PL0_RW, .type = ARM_CP_ALIAS, + .access = PL0_RW, .type = ARM_CP_ALIAS | ARM_CP_IO, .fieldoffset = offsetoflow32(CPUARMState, cp15.c9_pmcnten), .writefn = pmcntenset_write, .accessfn = pmreg_access, .raw_writefn = raw_write }, - { .name = "PMCNTENSET_EL0", .state = ARM_CP_STATE_AA64, + { .name = "PMCNTENSET_EL0", .state = ARM_CP_STATE_AA64, .type = ARM_CP_IO, .opc0 = 3, .opc1 = 3, .crn = 9, .crm = 12, .opc2 = 1, .access = PL0_RW, .accessfn = pmreg_access, .fieldoffset = offsetof(CPUARMState, cp15.c9_pmcnten), .resetvalue = 0, @@ -1942,11 +1942,11 @@ static const ARMCPRegInfo v7_cp_reginfo[] = { .fieldoffset = offsetoflow32(CPUARMState, cp15.c9_pmcnten), .accessfn = pmreg_access, .writefn = pmcntenclr_write, - .type = ARM_CP_ALIAS }, + .type = ARM_CP_ALIAS | ARM_CP_IO }, { .name = "PMCNTENCLR_EL0", .state = ARM_CP_STATE_AA64, .opc0 = 3, .opc1 = 3, .crn = 9, .crm = 12, .opc2 = 2, .access = PL0_RW, .accessfn = pmreg_access, - .type = ARM_CP_ALIAS, + .type = ARM_CP_ALIAS | ARM_CP_IO, .fieldoffset = offsetof(CPUARMState, cp15.c9_pmcnten), .writefn = pmcntenclr_write }, { .name = "PMOVSR", .cp = 15, .crn = 9, .crm = 12, .opc1 = 0, .opc2 = 3, @@ -5130,7 +5130,7 @@ static const ARMCPRegInfo v8_cp_reginfo[] = { .opc0 = 3, .opc1 = 6, .crn = 1, .crm = 3, .opc2 = 1, .resetvalue = 0, .access = PL3_RW, .fieldoffset = offsetof(CPUARMState, cp15.mdcr_el3) }, - { .name = "SDCR", .type = ARM_CP_ALIAS, + { .name = "SDCR", .type = ARM_CP_ALIAS | ARM_CP_IO, .cp = 15, .opc1 = 0, .crn = 1, .crm = 3, .opc2 = 1, .access = PL1_RW, .accessfn = access_trap_aa32s_el1, .writefn = sdcr_write, @@ -7837,7 +7837,7 @@ void register_cp_regs_for_features(ARMCPU *cpu) * value is MDCR_EL2.HPMN which should reset to the value of PMCR_EL0.N. */ ARMCPRegInfo mdcr_el2 = { - .name = "MDCR_EL2", .state = ARM_CP_STATE_BOTH, + .name = "MDCR_EL2", .state = ARM_CP_STATE_BOTH, .type = ARM_CP_IO, .opc0 = 3, .opc1 = 4, .crn = 1, .crm = 1, .opc2 = 1, .writefn = mdcr_el2_write, .access = PL2_RW, .resetvalue = pmu_num_counters(env), From patchwork Fri Sep 23 12:34:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 608589 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp256000pvb; Fri, 23 Sep 2022 05:53:57 -0700 (PDT) X-Google-Smtp-Source: AMsMyM50gxG5fh/FggrZ++jaG1b7qywbQ7aOU1lvHRL7aCicWB0Sj39oKHNl2k83uziQm9M/ZLwJ X-Received: by 2002:a05:620a:271b:b0:6cd:fd1f:7472 with SMTP id b27-20020a05620a271b00b006cdfd1f7472mr5455428qkp.142.1663937637145; Fri, 23 Sep 2022 05:53:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663937637; cv=none; d=google.com; s=arc-20160816; b=MQj9p4CbeH9FuqqdzsFysOa9gvW1KCRzaXvAfpooX92M7ta5QwheRYQ0r/ygdeRf5g x/3SCtMwif77rLxGrOGHDgaLO1wS5djXGwGPlNhIoZBG0Dy09tlFM4pg+SrEOdwuYmaW oSgyWldkOZVfHdX1REGrIgwf6D4iWZmtsxiGzIqK0zTGOj0na1JTe1ul9vUSphpPGfdb VJx1Qhl/4guO8EFvNaBTeLZBFDBNa2zo6gRbOB/IvNw+NTZG/LZRFomuftPBysxCXcQq 97SHQpI9QdpgYMETC4n4U3VPKWGi6zuwc0dbc8aM0wozdTuN6zYNAwUKXyT6QRVDw5YU qcbA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=nzYcMZmeofPl1Va3UQhOnDEUNbpieLRg2NI1ebwCrJo=; b=nI8hhMp0JBx+z3HVaDYZhg3t1ly83sN0mOsmwaqOLZFDXk9EcSVchHOm2IVsRjO9qk Vz7tGLsQa4S3ez2gY/kMFzv1AoYJpXNlr9FXvthNVK4V+5dvajEBCbs8YIaX1EJYd38J w3scq1gXGIGhY8n0XnCrFRu6PeI0qEGonSNLwkZWNobAj4ZGCPdLWaw/zKS7iS173wf9 gGY+0EO/+Fsu2OBy/HzdowL6TJwgdwdKunI0rLD5yie4BqEoIi4tX9u9UYCn2n68xeYO 7lLNe9KIZvU3m5zF9h7lSAMTwvEMeT6ATcTEUsmFS7zE+oTvA1J6L0/Zdlmbyyh3WyKo tOqQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=bHOjSLct; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id j10-20020ac806ca000000b0031f22fc2e85si4104512qth.748.2022.09.23.05.53.57 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 23 Sep 2022 05:53:57 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=bHOjSLct; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:34450 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1obiBo-0001js-Js for patch@linaro.org; Fri, 23 Sep 2022 08:53:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33560) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1obhsp-0006QH-Vy for qemu-devel@nongnu.org; Fri, 23 Sep 2022 08:34:24 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]:47087) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1obhso-0007Vt-29 for qemu-devel@nongnu.org; Fri, 23 Sep 2022 08:34:19 -0400 Received: by mail-wm1-x32f.google.com with SMTP id n40-20020a05600c3ba800b003b49aefc35fso3093911wms.5 for ; Fri, 23 Sep 2022 05:34:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=nzYcMZmeofPl1Va3UQhOnDEUNbpieLRg2NI1ebwCrJo=; b=bHOjSLctZxqkuac3QdDYqDSBx32cnfv3NAeNOdY4v0jX5TayIc9HoYS8ZeI1MaUmf1 bJqvXwLF6vBqfxxJxRaMxbrpkTH/Ha1mHchQ4ZcLGA7L+Jf1/AjDoHa5oWRV+OzuAzD8 ZOnYpOC/uhqb4lWzh4PiI+jqoU38GBVGYSAWMATPeXyfopyUnzLnZXufqv4W2F9J9QWy iiaVgOHpqw7VF63shxgMqMLXDglCxo+AOiJU+Q2ER7tifqT/y0nWPpsWH35Bdux+z1ku +GOVF45+L8VB1yJAEYRZdFBSgxDGBu7EeFEIqTNkwGfmCCoBSinDggUgZ3EZ6uwJZP5u rI8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=nzYcMZmeofPl1Va3UQhOnDEUNbpieLRg2NI1ebwCrJo=; b=QphVTpjJebUelcyZiaLqus7aWFA0PncNdpoBLhMh5UGnbq7sI0OTQ2p+HVF/ToZ5R6 C+xxpNeVuFcCySwJ8W6p4BnmVikEiBoZ0VPiODxljwaPAK5XWCrsDOQQ0rhqElCoR/r0 HH60qrT3kBBymdBhDjHAgC61mW780+tvO2KuwxBt5A/MNkA0pmye7u6eRoM4LWcqLewd Lq1RULyrmgkzwryoBNgFn9h5HqC5mohtEvpqaTsJVAJxszp39I2+J9hoC6LELf4afhw8 wqSBxLtGsOFONV5F3aX+csWV4oVdnZUsMsSU9BSdRevx9/UjkK+wYRexE1y3s/h4DmxZ 7Gkw== X-Gm-Message-State: ACrzQf2pG9wrROHsUaUY16NwB5Aj1op21W1GzMQmXHBGgMo17RpCLktc dK/EuH5Ce0/gdxDTB9c+uIASRbOGJEBTEA== X-Received: by 2002:a05:600c:444b:b0:3b4:fdbd:5965 with SMTP id v11-20020a05600c444b00b003b4fdbd5965mr5791299wmn.128.1663936456603; Fri, 23 Sep 2022 05:34:16 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id n43-20020a05600c502b00b003b486027c8asm2504555wmr.20.2022.09.23.05.34.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:34:16 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Thomas Huth Subject: [PATCH 2/3] target/arm: Make writes to MDCR_EL3 use PMU start/finish calls Date: Fri, 23 Sep 2022 13:34:11 +0100 Message-Id: <20220923123412.1214041-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923123412.1214041-1-peter.maydell@linaro.org> References: <20220923123412.1214041-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, 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+patch=linaro.org@nongnu.org Sender: "Qemu-devel" In commit 01765386a88868 we fixed a bug where we weren't correctly bracketing changes to some registers with pmu_op_start() and pmu_op_finish() calls for changes which affect whether the PMU counters might be enabled. However, we missed the case of writes to the AArch64 MDCR_EL3 register, because (unlike its AArch32 counterpart) they are currently done directly to the CPU state struct without going through the sdcr_write() function. Give MDCR_EL3 a writefn which handles the PMU start/finish calls. The SDCR writefn then simplfies to "call the MDCR_EL3 writefn after masking off the bits which don't exist in the AArch32 register". Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/helper.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index 7c7ba328d6d..cebce23da07 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4761,8 +4761,8 @@ static void sctlr_write(CPUARMState *env, const ARMCPRegInfo *ri, } } -static void sdcr_write(CPUARMState *env, const ARMCPRegInfo *ri, - uint64_t value) +static void mdcr_el3_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) { /* * Some MDCR_EL3 bits affect whether PMU counters are running: @@ -4774,12 +4774,19 @@ static void sdcr_write(CPUARMState *env, const ARMCPRegInfo *ri, if (pmu_op) { pmu_op_start(env); } - env->cp15.mdcr_el3 = value & SDCR_VALID_MASK; + env->cp15.mdcr_el3 = value; if (pmu_op) { pmu_op_finish(env); } } +static void sdcr_write(CPUARMState *env, const ARMCPRegInfo *ri, + uint64_t value) +{ + /* Not all bits defined for MDCR_EL3 exist in the AArch32 SDCR */ + mdcr_el3_write(env, ri, value & SDCR_VALID_MASK); +} + static void mdcr_el2_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value) { @@ -5127,9 +5134,12 @@ static const ARMCPRegInfo v8_cp_reginfo[] = { .access = PL2_RW, .fieldoffset = offsetof(CPUARMState, banked_spsr[BANK_FIQ]) }, { .name = "MDCR_EL3", .state = ARM_CP_STATE_AA64, + .type = ARM_CP_IO, .opc0 = 3, .opc1 = 6, .crn = 1, .crm = 3, .opc2 = 1, .resetvalue = 0, - .access = PL3_RW, .fieldoffset = offsetof(CPUARMState, cp15.mdcr_el3) }, + .access = PL3_RW, + .writefn = mdcr_el3_write, + .fieldoffset = offsetof(CPUARMState, cp15.mdcr_el3) }, { .name = "SDCR", .type = ARM_CP_ALIAS | ARM_CP_IO, .cp = 15, .opc1 = 0, .crn = 1, .crm = 3, .opc2 = 1, .access = PL1_RW, .accessfn = access_trap_aa32s_el1, From patchwork Fri Sep 23 12:34:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 608587 Delivered-To: patch@linaro.org Received: by 2002:a17:522:c983:b0:460:3032:e3c4 with SMTP id kr3csp251459pvb; Fri, 23 Sep 2022 05:44:54 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7oQs/iiT0bnOSlNL6CJ5aWe/aZoU+0SrRiz7U8W5E3dKfja5ycPTtBEYpA0tHyHPwKaK2V X-Received: by 2002:a05:6214:c2a:b0:4ad:67d:c25a with SMTP id a10-20020a0562140c2a00b004ad067dc25amr6668595qvd.125.1663937093919; Fri, 23 Sep 2022 05:44:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663937093; cv=none; d=google.com; s=arc-20160816; b=c5roRrT0mPh1tMkL8OX7/iXog0gWNUGjKn6/mDqzL1pUyjJ8WyzWX1mYqK/hJ4iFDl YqEvdX45mxHAiN9kXjUxjp2TMo+qunZgPG6uX2w+BJ9vSrJKTP3aOY7JbignHZgZ8Lxg d5eooh8Dhi/PFt4HaWUysTBWT32mgLL9ZFzgsCL07nJIyKqV30isPKYbw/ErfFX1u5ha eIOREObVtqY8kbjwJDBPpT93XLmVAjf67AwUZ1c00kU4jHECS3keTl0zdip+VHAFA9EK BxjGFl839hq9oh522l4Iq7gALqgCuNuCIDpcGPaHQlUyk6fyuohkUklPIUBgpQuRqZXs 8T3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=OWwd1ae/Kt3B1uUkttuDu4lRYoyOUHwwnpD54tfsuag=; b=ADpBbAkpuJLJQ6Q9EPtVoV81FCsO60hvZslWLcRQZ9E1W4qWXnmK/w27huZoXX7n81 Ix1LAqo4ULj4C1FbPj7i2JYCNrn8UemqG4Q0t1AdvM1GSLmiksRg7Docn85cmVheHqUN H5RlRb7zG9meFKMQ1L8Hafoarnmq4cI8OMSQGbixmApinJWjnlfu5zlXR+WD9dIbPnlR 9el60IbAVi1EOYIBJeqUhqb17l3yXhassAqEzfO5QBbRtEduhG/0TWmTSinJG99Eu0bn 487MnZFgTABPR7B00E5CBAAJPNpchY3MEkEPOm381eu1q3mEuVh55u+rnyoSGv7LpH2n L2qw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=oACL8tsM; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id t41-20020a05622a182900b0035bb2233e9csi5049940qtc.525.2022.09.23.05.44.53 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Fri, 23 Sep 2022 05:44:53 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=oACL8tsM; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:48826 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1obi33-0003kY-Dt for patch@linaro.org; Fri, 23 Sep 2022 08:44:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:33566) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1obhsu-0006QL-IK for qemu-devel@nongnu.org; Fri, 23 Sep 2022 08:34:24 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:40655) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1obhso-0007Vx-JW for qemu-devel@nongnu.org; Fri, 23 Sep 2022 08:34:21 -0400 Received: by mail-wr1-x430.google.com with SMTP id x18so14224760wrm.7 for ; Fri, 23 Sep 2022 05:34:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=OWwd1ae/Kt3B1uUkttuDu4lRYoyOUHwwnpD54tfsuag=; b=oACL8tsMncuYTcTb53fmmARg/PxgWhjhhIn9FCmPg6u0PXvBOR9+oG4EKnqUIWYbxN TKxE9bPdln4EG2Zxxq+gmywqEUa/ODwO7HvPGH+dPv9znLiuYmkls13bRaTGYqKN7hzA nXY3oi+n5z8lVKPuvNDuhghCRxWLTy5nVU+331clyCiy7rfobJxt0PeMSihzWeoWang3 Jh0ErRHVL69XKmIhng+jGGUBy6kEmeWsetnWn3yMJ1KhGMRnsYhKhU21x1Qp+UTFRtUm jefRAP0o1aqhTH6Wv3VqQaiMw/48M31+WHmbsaFpU6C8KUdGmrBACbREQ1KkUEGHecbr +YQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=OWwd1ae/Kt3B1uUkttuDu4lRYoyOUHwwnpD54tfsuag=; b=IewDKj4oO1Y5vAxB2ZP5zoqMhVclcdMRjfOzCcFtYGB7A95Wvm23wCmcn/v8E7UIjH hKPpMD88af3iLL7K1EBEDNJ4zhDGkn07IZXk7F8Z8yGn0nMx22yH5etRjqsNhrE7FhZA sNc/VdE6LGzsGyA9bk+Ul4PL/oSAhTprWxB1gINlRNX5PphIfyzGn3rxEMOHw6JmONGN nHwOBRdMk6CvS1iypFzCV8mbt+hok/hUR9JpfROR0y8C2Fx613ZW0YkHxG5MJzlARkku 7fZ2COUQUYvB6v1obvrQriPclVpzoyG+2FmL9H0DlFXgB3bj7B4V+7A2mSsUk/Y4XJ4S Ftmg== X-Gm-Message-State: ACrzQf0sCABYA9KJ886Rp6eE30CUpGl4jIUtwjzbXQdcGWSPIMAoYHpl NZ19vENqy1KXgDh+0b4NQ6wTWA== X-Received: by 2002:adf:d1e3:0:b0:22a:b9e2:8841 with SMTP id g3-20020adfd1e3000000b0022ab9e28841mr5065032wrd.184.1663936457240; Fri, 23 Sep 2022 05:34:17 -0700 (PDT) Received: from orth.archaic.org.uk (orth.archaic.org.uk. [2001:8b0:1d0::2]) by smtp.gmail.com with ESMTPSA id n43-20020a05600c502b00b003b486027c8asm2504555wmr.20.2022.09.23.05.34.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Sep 2022 05:34:16 -0700 (PDT) From: Peter Maydell To: qemu-arm@nongnu.org, qemu-devel@nongnu.org Cc: Thomas Huth Subject: [PATCH 3/3] target/arm: Update SDCR_VALID_MASK to include SCCD Date: Fri, 23 Sep 2022 13:34:12 +0100 Message-Id: <20220923123412.1214041-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220923123412.1214041-1-peter.maydell@linaro.org> References: <20220923123412.1214041-1-peter.maydell@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable 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+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Our SDCR_VALID_MASK doesn't include all of the bits which are defined by the current architecture. In particular in commit 0b42f4fab9d3 we forgot to add SCCD, which meant that an AArch32 guest couldn't actually use the SCCD bit to disable counting in Secure state. Add all the currently defined bits; we don't implement all of them, but this makes them be reads-as-written, which is architecturally valid and matches how we currently handle most of the others in the mask. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson --- target/arm/cpu.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 33cdbc0143e..429ed42eece 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1334,11 +1334,15 @@ FIELD(CPTR_EL3, TTA, 20, 1) FIELD(CPTR_EL3, TAM, 30, 1) FIELD(CPTR_EL3, TCPAC, 31, 1) +#define MDCR_MTPME (1U << 28) +#define MDCR_TDCC (1U << 27) #define MDCR_HLP (1U << 26) /* MDCR_EL2 */ #define MDCR_SCCD (1U << 23) /* MDCR_EL3 */ #define MDCR_HCCD (1U << 23) /* MDCR_EL2 */ #define MDCR_EPMAD (1U << 21) #define MDCR_EDAD (1U << 20) +#define MDCR_TTRF (1U << 19) +#define MDCR_STE (1U << 18) /* MDCR_EL3 */ #define MDCR_SPME (1U << 17) /* MDCR_EL3 */ #define MDCR_HPMD (1U << 17) /* MDCR_EL2 */ #define MDCR_SDD (1U << 16) @@ -1353,7 +1357,9 @@ FIELD(CPTR_EL3, TCPAC, 31, 1) #define MDCR_HPMN (0x1fU) /* Not all of the MDCR_EL3 bits are present in the 32-bit SDCR */ -#define SDCR_VALID_MASK (MDCR_EPMAD | MDCR_EDAD | MDCR_SPME | MDCR_SPD) +#define SDCR_VALID_MASK (MDCR_MTPME | MDCR_TDCC | MDCR_SCCD | \ + MDCR_EPMAD | MDCR_EDAD | MDCR_TTRF | \ + MDCR_STE | MDCR_SPME | MDCR_SPD) #define CPSR_M (0x1fU) #define CPSR_T (1U << 5)