public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
From: Suzuki K Poulose <suzuki.poulose@arm.com>
To: Leo Yan <leo.yan@arm.com>, Will Deacon <will@kernel.org>
Cc: yabinc@google.com, James Clark <james.clark@linaro.org>,
	Marc Zyngier <maz@kernel.org>,
	kvmarm@lists.linux.dev, mark.rutland@arm.com,
	linux-arm-kernel@lists.infradead.org,
	Oliver Upton <oupton@kernel.org>, Fuad Tabba <tabba@google.com>
Subject: Re: [PATCH] KVM: arm64: Disable TRBE Trace Buffer Unit when running in guest context
Date: Tue, 3 Mar 2026 10:47:49 +0000	[thread overview]
Message-ID: <4639b8cd-bcc5-4528-be06-e3a0681e6162@arm.com> (raw)
In-Reply-To: <20260303103632.GH1098637@e132581.arm.com>

On 03/03/2026 10:36, Leo Yan wrote:
> On Fri, Feb 27, 2026 at 06:07:44PM +0000, Will Deacon wrote:
>> On Wed, Feb 25, 2026 at 12:09:56PM +0000, Leo Yan wrote:
>>> [ + Yabin ]
>>>
>>> Thanks for Suzuki's reminding, I should mention that Yabin reported
>>> another lockup issue caused by missing CPU PM support in TRBE driver.
>>>
>>> We have a patch series to fix the issue:
>>> https://lore.kernel.org/linux-arm-kernel/20251119-arm_coresight_path_power_management_improvement-v5-16-f615a301ad0b@arm.com/
>>
>> Two nits on that series:
>>
>> 1. It seems a bit weird to me for the ETE driver to manage TRFCR but for
>>     the TRBE driver to manage the other registers
> 
> TRFCR_ELx is introduced by FEAT_TRF, which is a separate feature from
> TRBE, and it can be used for other sinks (like ETR).  I think this is
> the main reason that it is implemented in ETE driver rather than TRBE
> driver.

Thats correct. TRFCR is more tied to the ETE/ETM (e.g., filter traces 
for various ELs depending on the event configuration and also for
changing the ETM/ETE states). That said, we use that to prohibit
trace while we do maintenance on the TRBE.

> 
>> 2. Are you sure you don't need to save/restore the TRBE state when
>>     LIMITR.E is clear? Maybe the driver is fine with that, but I'm worried
>>     that we could suspend in a half-programmed state and lose some of that
>>     configuration.
> 
> If the TRBLIMITR_EL1.E bit is cleared during the CPU is idle, then the
> next time the TRBE trace buffer is re-enabled, trbe_enable_hw() must be
> called to reconfigure the TRBE registers (including TRBSR_EL1).

We don't leave the registers in  a half baked state. We always program
all the TRBE registers when we enable them. But, that said, we do have
a case now with the fix for Disabling the TRBE (TRBLIMITR.E == 0) for
nVHE, while the rest of the TRBE registers are retained. The chances
of us going in to Idle, without restoring the TRBLIMITR to the host
value doesn't exist. But we could save/restore the registers to be
safe.


Suzuki

> 
> One concern is that after a CPU power cycle, some fields in the TRBE
> registers may be in the following state:
> 
>    "On a cold reset, this field resets to an architecturally UNKNOWN value."
> 
> I will change to always save/restore TRBE state.  Thanks for
> suggestions.
> 
>>> Besides your fix the translation regime issue, I'd also suggest applying
>>> the CoreSight PM patch series to fix lockup caused by CPU idle.
>>
>> Yes, we definitely need something like that in the android kernel trees.
>> I've previously bodged a hack into the ETE PM notifiers, but if you have
>> backports of your series to 6.12, 6.6 and 6.1 then we should merge them
>> into Android. As it stands, I don't have a TRBE-capable device running
>> mainline.
> 
> Let us first merge the series on the master :)
> 
> After that, we can consider backporting (I assume Yabin already has a
> plan for this).  I'd be happy to help with backporting to v6.12.
> However, I cannot commit to backporting to v6.6 or v6.1 at this stage,
> as many dependencies are likely to be involved.
> 
> Thanks,
> Leo



  reply	other threads:[~2026-03-03 10:49 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-16 13:09 [PATCH] KVM: arm64: Disable TRBE Trace Buffer Unit when running in guest context Will Deacon
2026-02-16 14:29 ` Marc Zyngier
2026-02-16 15:05   ` James Clark
2026-02-16 15:51     ` Marc Zyngier
2026-02-16 16:10       ` James Clark
2026-02-16 16:49         ` Marc Zyngier
2026-02-20 11:42           ` James Clark
2026-02-24 11:19             ` Marc Zyngier
2026-02-20 15:48           ` Leo Yan
2026-02-24 11:22             ` Marc Zyngier
2026-02-16 18:14     ` Will Deacon
2026-02-17 14:19       ` Leo Yan
2026-02-17 14:52         ` Will Deacon
2026-02-17 19:01           ` Leo Yan
2026-02-19 13:54             ` Will Deacon
2026-02-19 18:58               ` Leo Yan
2026-02-19 19:06                 ` Leo Yan
2026-02-25 12:09                 ` Leo Yan
2026-02-27 18:07                   ` Will Deacon
2026-03-03 10:36                     ` Leo Yan
2026-03-03 10:47                       ` Suzuki K Poulose [this message]
2026-02-16 15:53   ` Alexandru Elisei
2026-02-16 17:10     ` Will Deacon
2026-02-17 12:13       ` Will Deacon
2026-02-16 17:32   ` Will Deacon
2026-02-17 12:20     ` James Clark
2026-02-17 12:26       ` Will Deacon
2026-02-17 13:58         ` James Clark
2026-02-16 15:13 ` James Clark
2026-02-16 17:05   ` Will Deacon
2026-02-17  9:18     ` James Clark

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4639b8cd-bcc5-4528-be06-e3a0681e6162@arm.com \
    --to=suzuki.poulose@arm.com \
    --cc=james.clark@linaro.org \
    --cc=kvmarm@lists.linux.dev \
    --cc=leo.yan@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=maz@kernel.org \
    --cc=oupton@kernel.org \
    --cc=tabba@google.com \
    --cc=will@kernel.org \
    --cc=yabinc@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox