From nobody Sat Feb 22 08:28:23 2025 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 28C5A1EE7D8 for ; Tue, 7 Jan 2025 11:35:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736249725; cv=none; b=sqMDu+fTsZRe3zjDbKwVU9Zm+JyT5uPgk33NG0K/EkrSjXWYTaU/C252aFiP7QIqM+UzV/BTxFLhIMRkzTOlraW7/HFkAS2+e92lk2cIs7nKNzgmheHv5DRcvEs52KNPh6Im5kKxrZwWVuRWuTl7GYydV+Ttb1AAkOrSEYQuFlM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736249725; c=relaxed/simple; bh=9uHyOrrOFup8ywIsXJt/dCpriAmXRhqS6RmKsLTj27A=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=ulSNT/0Dmc0CCqEkRgi76Jt8EJqQKQ3uCSK5GA6aKwRhffFte6okmMIdGeN5pG7nNGAwzoR2TrUWRSJIiiVJRLQUF2i2+ypCP1Yjmfmzhq5j4n1sD2zZNW0WRtGSRdXz7Yl3HjdcxDXm9C+v6SdIk9MMU8xfDQSyBUAso0ZU56s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=d9m2T3ku; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="d9m2T3ku" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4361e89b6daso106151185e9.3 for ; Tue, 07 Jan 2025 03:35:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1736249719; x=1736854519; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tx00l9gj3r75Pyuu5HDGlCD21/i3mIfLGI99rWPrWTA=; b=d9m2T3kuc3dnop3trC09TruohFR2GiiAewh/frltKLfej8x/P3tfdtVyjt0lxPmLW5 j9eKGVjV9egKPlM1BoA3iRJeEIAXsBVZNX6xB7WzI+yH+qYDq13gfK7QSKIRaVDOo3ta XTF5yF7czE1ej4ULl77Outo0MNMcYXJ9HX+d/WJ1NWqXW65dHwx/HCXP/8KUPI2hEBow USNQEKcTDlU4a5EBjp2k8AQmeVOo2LsUMRrUcG1X30laFn5FBdhQTHH5LmiPIaGveXi0 T1fLgh8Azuf6RBZt0EgKFJlFV+AYe81FPELD2MiFI1T/Jmz9roLT4kBjk7QAAUoJwsYO Gg9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736249719; x=1736854519; 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:message-id:reply-to; bh=tx00l9gj3r75Pyuu5HDGlCD21/i3mIfLGI99rWPrWTA=; b=Bod2hU+r6+BsjDIYj9BxEhKOlA/Pj6M7U3QVJjoRIHXWn0WFPK6F7VMBDhtWu/Doej CYDF5K7NM7NAzpjo6dnUUY5gAHC3yAr2ef/OMHyJjMl2zLZubCJTVi4bnVQKw3HjKXjW 9csiyevKET0zor0UkfqTunv4ax+tQoKhPb/zo+OhBQ/sxpwmWJJWbHYePEX777K7Z0bw Ymvpu+eF+N4t5OirMK4xTLYnsqdipfNw9ULE4SsmsiFRdWCO6LXr9PfMrAD8Hh9Uk/dv YO9jBqRTj5tJSpCENSWe98Vq+VVELkVzxRFhjFvM/d7Bt5bPHNJxH2vFwzNa5GRVne5p KPWA== X-Forwarded-Encrypted: i=1; AJvYcCVOUDvBteibRhDo7feRp8kGwxJtBnlUr5vMx4+xJ41xgDzh8+MiENQibASKunSeanlQgpMYs/KxFesrFTA=@vger.kernel.org X-Gm-Message-State: AOJu0YyozbXu5EqlzsAxTta5jS4d+HtpsdnN63CZN8MIxsPDMdLrkZfJ O7BoNiiZf1zwAU1y0YVRn9vii6pE9VJJxYw4seArBS7HC1jVlmG5wrThFn4JOfg= X-Gm-Gg: ASbGncucy5qeMZ8G3ovHHDt7EQD2aVkrq1si0F9n9zvI1WQZcvuJwhE7MRs+8wnqtz6 v9JLgQyBoH1DtfCaSYspWN0RBut2QwWDVHKjNAqXCuYH1Lx8s+bp8kbj5qiKpWpIAwHqIwxWhn7 xqzT5pULOWq1JP1/OUdjXYLmog7QI1vN9p7jjtSklnCRFC7DrTGLNs/+6oJjNPuGj7FPNfEiDLk nULup7iB5JOZHF+lVWsjnhEvr9OFjQHxUt9gBMG95avSLQxo1+yq8cE X-Google-Smtp-Source: AGHT+IG6ssd+zopKDv9p4eYWzeGZXI+rmR402qUYF0KXs7CGMwpDT/5oKkPAsjDCmwrKzLWBArlwFw== X-Received: by 2002:a5d:47cf:0:b0:385:ee59:44eb with SMTP id ffacd0b85a97d-38a221fa9ffmr50282094f8f.33.1736249719405; Tue, 07 Jan 2025 03:35:19 -0800 (PST) Received: from pop-os.. ([145.224.66.180]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-38a1c89e1acsm50299218f8f.68.2025.01.07.03.35.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jan 2025 03:35:19 -0800 (PST) From: James Clark To: maz@kernel.org, kvmarm@lists.linux.dev, oliver.upton@linux.dev, suzuki.poulose@arm.com, coresight@lists.linaro.org Cc: James Clark , Joey Gouly , Zenghui Yu , Catalin Marinas , Will Deacon , Mike Leach , Alexander Shishkin , Mark Rutland , Anshuman Khandual , Mark Brown , James Morse , Shiqi Liu , Fuad Tabba , "Rob Herring (Arm)" , Raghavendra Rao Ananta , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v10 09/10] KVM: arm64: Support trace filtering for guests Date: Tue, 7 Jan 2025 11:32:46 +0000 Message-Id: <20250107113252.260631-10-james.clark@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250107113252.260631-1-james.clark@linaro.org> References: <20250107113252.260631-1-james.clark@linaro.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" For nVHE, switch the filter value in and out if the Coresight driver asks for it. This will support filters for guests when sinks other than TRBE are used. For VHE, just write the filter directly to TRFCR_EL1 where trace can be used even with TRBE sinks. Signed-off-by: James Clark --- arch/arm64/include/asm/kvm_host.h | 2 ++ arch/arm64/kvm/debug.c | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/arch/arm64/include/asm/kvm_host.h b/arch/arm64/include/asm/kvm= _host.h index b244ec44bd3a..1284f4c2da27 100644 --- a/arch/arm64/include/asm/kvm_host.h +++ b/arch/arm64/include/asm/kvm_host.h @@ -1388,6 +1388,7 @@ void kvm_clr_pmu_events(u64 clr); bool kvm_set_pmuserenr(u64 val); void kvm_enable_trbe(void); void kvm_disable_trbe(void); +void kvm_tracing_set_el1_configuration(u64 trfcr_while_in_guest); #else static inline void kvm_set_pmu_events(u64 set, struct perf_event_attr *att= r) {} static inline void kvm_clr_pmu_events(u64 clr) {} @@ -1397,6 +1398,7 @@ static inline bool kvm_set_pmuserenr(u64 val) } static inline void kvm_enable_trbe(void) {} static inline void kvm_disable_trbe(void) {} +static inline void kvm_tracing_set_el1_configuration(u64 trfcr_while_in_gu= est) {} #endif =20 void kvm_vcpu_load_vhe(struct kvm_vcpu *vcpu); diff --git a/arch/arm64/kvm/debug.c b/arch/arm64/kvm/debug.c index e1ac3d2a65be..22815a40d2ee 100644 --- a/arch/arm64/kvm/debug.c +++ b/arch/arm64/kvm/debug.c @@ -339,3 +339,21 @@ void kvm_disable_trbe(void) host_data_clear_flag(TRBE_ENABLED); } EXPORT_SYMBOL_GPL(kvm_disable_trbe); + +void kvm_tracing_set_el1_configuration(u64 trfcr_while_in_guest) +{ + if (is_protected_kvm_enabled() || WARN_ON_ONCE(preemptible())) + return; + + if (has_vhe()) { + write_sysreg_s(trfcr_while_in_guest, SYS_TRFCR_EL12); + return; + } + + *host_data_ptr(trfcr_while_in_guest) =3D trfcr_while_in_guest; + if (read_sysreg_s(SYS_TRFCR_EL1) !=3D trfcr_while_in_guest) + host_data_set_flag(EL1_TRACING_CONFIGURED); + else + host_data_clear_flag(EL1_TRACING_CONFIGURED); +} +EXPORT_SYMBOL_GPL(kvm_tracing_set_el1_configuration); --=20 2.34.1