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

From: Marc Zyngier
Date: Sun Dec 22 2019 - 07:11:04 EST


On Fri, 20 Dec 2019 14:30:22 +0000,
Andrew Murray <andrew.murray@xxxxxxx> wrote:
>
> A side effect of supporting the SPE in guests is that we prevent the
> host from collecting data whilst inside a guest thus creating a black-out
> window. This occurs because instead of emulating the SPE, we share it
> with our guests.
>
> Let's accurately describe our capabilities by using the perf exclude
> flags to prevent !exclude_guest and exclude_host flags from being used.
>
> Signed-off-by: Andrew Murray <andrew.murray@xxxxxxx>
> ---
> 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
> 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)
> 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.

M.

--
Jazz is not dead, it just smells funny.