Thread (78 messages) 78 messages, 4 authors, 2020-01-15

Re: [PATCH v2 15/18] perf: arm_spe: Handle guest/host exclusion flags

From: Marc Zyngier <maz@kernel.org>
Date: 2019-12-23 12:18:18
Also in: kvm, kvmarm, lkml

On 2019-12-23 12:10, Andrew Murray wrote:
On Sun, Dec 22, 2019 at 12:10:52PM +0000, Marc Zyngier wrote:
quoted
On Fri, 20 Dec 2019 14:30:22 +0000,
Andrew Murray [off-list ref] wrote:
quoted
A side effect of supporting the SPE in guests is that we prevent 
the
quoted
host from collecting data whilst inside a guest thus creating a 
black-out
quoted
window. This occurs because instead of emulating the SPE, we share 
it
quoted
with our guests.

Let's accurately describe our capabilities by using the perf 
exclude
quoted
flags to prevent !exclude_guest and exclude_host flags from being 
used.
quoted
Signed-off-by: Andrew Murray <redacted>
---
 drivers/perf/arm_spe_pmu.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/drivers/perf/arm_spe_pmu.c 
b/drivers/perf/arm_spe_pmu.c
quoted
index 2d24af4cfcab..3703dbf459de 100644
--- a/drivers/perf/arm_spe_pmu.c
+++ b/drivers/perf/arm_spe_pmu.c
@@ -679,6 +679,9 @@ static int arm_spe_pmu_event_init(struct 
perf_event *event)
quoted
 	if (attr->exclude_idle)
 		return -EOPNOTSUPP;

+	if (!attr->exclude_guest || attr->exclude_host)
+		return -EOPNOTSUPP;
+
I have the opposite approach. If the host decides to profile the
guest, why should that be denied? If there is a black hole, it 
should
take place in the guest. Today, the host does expect this to work, 
and
there is no way that we unconditionally allow it to regress.
That seems reasonable.

Upon entering the guest we'd have to detect if the host is using SPE, 
and if
so choose not to restore the guest registers. Instead we'd have to 
trap them
and let the guest read/write emulated values until the host has 
finished with
SPE - at which time we could restore the guest SPE registers to 
hardware.

Does that approach make sense?
Yes, this would be much better. All of this can be found out at 
vcpu_load()
time, and once you've moved most of the SPE sysreg handling there, it 
will
just follow the normal scheduling flow.

         M.
-- 
Jazz is not dead. It just smells funny...

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help