From patchwork Wed Apr 27 11:15:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Philippe Brucker X-Patchwork-Id: 1622952 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=JpgYCvw2; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4KpGTK6dFfz9s3q for ; Wed, 27 Apr 2022 21:18:29 +1000 (AEST) Received: from localhost ([::1]:53182 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1njfgi-0006Pq-0N for incoming@patchwork.ozlabs.org; Wed, 27 Apr 2022 07:18:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41348) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njfg7-0006Mo-E3 for qemu-devel@nongnu.org; Wed, 27 Apr 2022 07:17:51 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450:4864:20::430]:40504) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1njfg2-0007N4-ST for qemu-devel@nongnu.org; Wed, 27 Apr 2022 07:17:48 -0400 Received: by mail-wr1-x430.google.com with SMTP id e2so2007590wrh.7 for ; Wed, 27 Apr 2022 04:17:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=BXWQKQjiGW6dpjyjLkpuXMnH49wsJoaisgXWPQdjm7k=; b=JpgYCvw26S0gXkW5kga2CEi7PCpNtOVVJa7pRXCgFd/WkAVuuxjPq0ZZK3mnjqpwHR j/Ra2cfxUwrH4XUjxr0J6K3Dm7L1Cxe5vMi0/UXcPvUq2g0TGKJl/r0PmLPQX9AffKde Y1gFLAjYNLHf502VpcDJfB6LvFtBh4fZlaBxX9Z0Rl1LxIJfDbz9nlSzZO759W3BkvFU oZCca2onGod5lXfDo8Tk0dYyE7DzrkCDxoXAu6TJyCKBg8R0yK/tlaBFvgDh6COkJkuL 6Frnmk2Lj56LGpsiYo+q9v4j5V1AAxGp+zDA9g0cWie8547L0f29RSoB66Cf1jyrDA4J b6Uw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=BXWQKQjiGW6dpjyjLkpuXMnH49wsJoaisgXWPQdjm7k=; b=NNwnNQa12m3NVQ8dJxrfCdb8BWmq2AxsQqzyxTMB5F0mYz0KdDxig0ZFxEiNynGw54 C3F/ibX1n3khvc80MvTXTBditQJpDHwUEGEZj/Z76kt9zE1gbIk5PEXdhhBCb8ykHJoy Tnszmthm1/hERY8aC7BHO7jV8l26+QrlonoTHuI3XnsG8uTOnKXb/8E4Dctl2cFUto1q uS0OEiY6OFuHVWg22mQYi0d/n2Hwek658t5JfIrSDBKbDh1km538vr3XtJwf1VtRGVhq zZRrBHCH4MzEi9W4df2FIT2SjCE+S44P1hBDrhxWwPkYLBWMnX0CTqROaAODYbCjhfBB CV2A== X-Gm-Message-State: AOAM530cmLKdbRPjmkMGEWQjIy0sIOoGMHwYfbGzVVjs0tpo+Pn6uPak WL1BPnDsS1zt/f79Tt1HCxHMUg== X-Google-Smtp-Source: ABdhPJzeY9knHJ8em2nD0Unm36bXwe0ej7pUOg+0AITLjaSx7Rv80EJgkK633ZkpCVSr4kN4ummsRw== X-Received: by 2002:a5d:64cb:0:b0:20a:903f:5d70 with SMTP id f11-20020a5d64cb000000b0020a903f5d70mr21782997wri.138.1651058265114; Wed, 27 Apr 2022 04:17:45 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id d17-20020adfa351000000b0020adbfb586fsm8313104wrb.117.2022.04.27.04.17.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 04:17:44 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH 1/2] hw/arm/smmuv3: Cache event fault record Date: Wed, 27 Apr 2022 12:15:43 +0100 Message-Id: <20220427111543.124620-1-jean-philippe@linaro.org> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::430; envelope-from=jean-philippe@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, T_SCC_BODY_TEXT_LINE=-0.01 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: , Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org, qemu-devel@nongnu.org, Jean-Philippe Brucker Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" The Record bit in the Context Descriptor tells the SMMU to report fault events to the event queue. Since we don't cache the Record bit at the moment, access faults from a cached Context Descriptor are never reported. Store the Record bit in the cached SMMUTransCfg. Fixes: 9bde7f0674fe ("hw/arm/smmuv3: Implement translate callback") Signed-off-by: Jean-Philippe Brucker Reviewed-by: Richard Henderson Reviewed-by: Eric Auger --- hw/arm/smmuv3-internal.h | 1 - include/hw/arm/smmu-common.h | 1 + hw/arm/smmuv3.c | 14 +++++++------- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/arm/smmuv3-internal.h b/hw/arm/smmuv3-internal.h index d1885ae3f2..6de52bbf4d 100644 --- a/hw/arm/smmuv3-internal.h +++ b/hw/arm/smmuv3-internal.h @@ -387,7 +387,6 @@ typedef struct SMMUEventInfo { SMMUEventType type; uint32_t sid; bool recorded; - bool record_trans_faults; bool inval_ste_allowed; union { struct { diff --git a/include/hw/arm/smmu-common.h b/include/hw/arm/smmu-common.h index 706be3c6d0..21e62342e9 100644 --- a/include/hw/arm/smmu-common.h +++ b/include/hw/arm/smmu-common.h @@ -71,6 +71,7 @@ typedef struct SMMUTransCfg { bool disabled; /* smmu is disabled */ bool bypassed; /* translation is bypassed */ bool aborted; /* translation is aborted */ + bool record_faults; /* record fault events */ uint64_t ttb; /* TT base address */ uint8_t oas; /* output address width */ uint8_t tbi; /* Top Byte Ignore */ diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 707eb430c2..8b1d8103dc 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -527,7 +527,7 @@ static int decode_cd(SMMUTransCfg *cfg, CD *cd, SMMUEventInfo *event) trace_smmuv3_decode_cd_tt(i, tt->tsz, tt->ttb, tt->granule_sz, tt->had); } - event->record_trans_faults = CD_R(cd); + cfg->record_faults = CD_R(cd); return 0; @@ -680,7 +680,7 @@ static IOMMUTLBEntry smmuv3_translate(IOMMUMemoryRegion *mr, hwaddr addr, tt = select_tt(cfg, addr); if (!tt) { - if (event.record_trans_faults) { + if (cfg->record_faults) { event.type = SMMU_EVT_F_TRANSLATION; event.u.f_translation.addr = addr; event.u.f_translation.rnw = flag & 0x1; @@ -696,7 +696,7 @@ static IOMMUTLBEntry smmuv3_translate(IOMMUMemoryRegion *mr, hwaddr addr, if (cached_entry) { if ((flag & IOMMU_WO) && !(cached_entry->entry.perm & IOMMU_WO)) { status = SMMU_TRANS_ERROR; - if (event.record_trans_faults) { + if (cfg->record_faults) { event.type = SMMU_EVT_F_PERMISSION; event.u.f_permission.addr = addr; event.u.f_permission.rnw = flag & 0x1; @@ -720,28 +720,28 @@ static IOMMUTLBEntry smmuv3_translate(IOMMUMemoryRegion *mr, hwaddr addr, event.u.f_walk_eabt.addr2 = ptw_info.addr; break; case SMMU_PTW_ERR_TRANSLATION: - if (event.record_trans_faults) { + if (cfg->record_faults) { event.type = SMMU_EVT_F_TRANSLATION; event.u.f_translation.addr = addr; event.u.f_translation.rnw = flag & 0x1; } break; case SMMU_PTW_ERR_ADDR_SIZE: - if (event.record_trans_faults) { + if (cfg->record_faults) { event.type = SMMU_EVT_F_ADDR_SIZE; event.u.f_addr_size.addr = addr; event.u.f_addr_size.rnw = flag & 0x1; } break; case SMMU_PTW_ERR_ACCESS: - if (event.record_trans_faults) { + if (cfg->record_faults) { event.type = SMMU_EVT_F_ACCESS; event.u.f_access.addr = addr; event.u.f_access.rnw = flag & 0x1; } break; case SMMU_PTW_ERR_PERMISSION: - if (event.record_trans_faults) { + if (cfg->record_faults) { event.type = SMMU_EVT_F_PERMISSION; event.u.f_permission.addr = addr; event.u.f_permission.rnw = flag & 0x1; From patchwork Wed Apr 27 11:15:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Philippe Brucker X-Patchwork-Id: 1622955 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 header.s=google header.b=n5mo6txL; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) 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 bilbo.ozlabs.org (Postfix) with ESMTPS id 4KpGWw5cGwz9s3q for ; Wed, 27 Apr 2022 21:20:44 +1000 (AEST) Received: from localhost ([::1]:57940 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1njfis-0001At-RO for incoming@patchwork.ozlabs.org; Wed, 27 Apr 2022 07:20:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41430) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1njfgV-0006xr-NJ for qemu-devel@nongnu.org; Wed, 27 Apr 2022 07:18:15 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]:44679) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1njfgU-0007Oq-6A for qemu-devel@nongnu.org; Wed, 27 Apr 2022 07:18:15 -0400 Received: by mail-wr1-x429.google.com with SMTP id b19so1992103wrh.11 for ; Wed, 27 Apr 2022 04:18:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=A2c65tDAbj14lGL/ycGVvF4tProvIRMiix3SHQuwl20=; b=n5mo6txLFhe8OVGhdEQla3hkl6qPWQGZ/btvzR/3euamLz2VPXHgqSiV0/ozaZL0LW UJoPoZ7j3dy04PcbFHwgGQPeP3iyWnmbNpIElkHn27QOYXlRI2j/zufNlxfqw5XQ2BDg xx1ezA5dCmBvhpi9PwlbR6JProuKtJLP3hKyAb3oEbXjE1frAiAVHzVlBB7ofxEkgMZD gOMny43ePrT9HDjSLya13qaWQxtNzrp6SnyrCE6fjdrcn91OUnqbuauIx7oIwo/1vkqX uA0zOqbVIIDegO2kmBsJHx/sqMX6lM9xfKwIMJLfxyMBZYqskrOUqy9UAK3dOnXbTQ+P txtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=A2c65tDAbj14lGL/ycGVvF4tProvIRMiix3SHQuwl20=; b=QVU7cQsrec9Le86X+q12SdLJUo3tE63g+KHz9zRvP+6xtUgf1eVLOy6DDXeA5jJuOW wPHew0dXXedN/nWc6duxw30l9caCYF7tKjV16vMVaGlZCW6hyYhNfQ9rpIg9/ZL6w2QN Ww0BUTcGFqTGIoAs99q5xoemvElaLetudmPK80NbSBsWNS78qrng4jYnUaM62vHlBYue 0MmztcjC29RCthi12mfo/Fxwes9HWt24i6rjrO/OK8pkRyQYK9j31LK7hijch1KdVDem 4JvYnioOsMFZiYPLPqnNUI5jtheNhhLY62dI9G9Efa7DPeyrvA44DQ10X6HvUZvQ/PTH KOuQ== X-Gm-Message-State: AOAM532G8yJL0zD0Lhj9YpAmavMBNePO1QilaIK8wMT8BFhxlQf6AWwn 1hy9WcBeWHltpFa/YOR3ds4tIQ== X-Google-Smtp-Source: ABdhPJwf1A/3mmxLfNaO719Y9uiDlk2UFicxc/q494dhEaa8kpn5qIF6RCosHp0tDclnOVF+z+HILQ== X-Received: by 2002:a5d:6da9:0:b0:20a:e1a1:7f0d with SMTP id u9-20020a5d6da9000000b0020ae1a17f0dmr8030547wrs.378.1651058292887; Wed, 27 Apr 2022 04:18:12 -0700 (PDT) Received: from localhost.localdomain (cpc92880-cmbg19-2-0-cust679.5-4.cable.virginm.net. [82.27.106.168]) by smtp.gmail.com with ESMTPSA id d17-20020adfa351000000b0020adbfb586fsm8313104wrb.117.2022.04.27.04.18.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 04:18:11 -0700 (PDT) From: Jean-Philippe Brucker To: eric.auger@redhat.com Subject: [PATCH 2/2] hw/arm/smmuv3: Add space in guest error message Date: Wed, 27 Apr 2022 12:15:45 +0100 Message-Id: <20220427111543.124620-2-jean-philippe@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220427111543.124620-1-jean-philippe@linaro.org> References: <20220427111543.124620-1-jean-philippe@linaro.org> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::429; envelope-from=jean-philippe@linaro.org; helo=mail-wr1-x429.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, T_SCC_BODY_TEXT_LINE=-0.01 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: , Cc: peter.maydell@linaro.org, qemu-arm@nongnu.org, qemu-devel@nongnu.org, Jean-Philippe Brucker Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Make the translation error message prettier by adding a missing space before the parenthesis. Signed-off-by: Jean-Philippe Brucker Reviewed-by: Richard Henderson Reviewed-by: Eric Auger --- hw/arm/smmuv3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c index 8b1d8103dc..3a989b09cb 100644 --- a/hw/arm/smmuv3.c +++ b/hw/arm/smmuv3.c @@ -786,7 +786,7 @@ epilogue: break; case SMMU_TRANS_ERROR: qemu_log_mask(LOG_GUEST_ERROR, - "%s translation failed for iova=0x%"PRIx64"(%s)\n", + "%s translation failed for iova=0x%"PRIx64" (%s)\n", mr->parent_obj.name, addr, smmu_event_string(event.type)); smmuv3_record_event(s, &event); break;