All of lore.kernel.org
 help / color / mirror / Atom feed
From: Drew Fustini <fustini@kernel.org>
To: sashiko-reviews@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC v5 03/18] riscv: add support for srmcfg CSR from Ssqosid extension
Date: Sun, 24 May 2026 20:55:20 -0700	[thread overview]
Message-ID: <ahPIKDdzr4SDSaGD@gen8> (raw)
In-Reply-To: <20260525003007.7D4E91F000E9@smtp.kernel.org>

On Mon, May 25, 2026 at 12:30:07AM +0000, sashiko-bot@kernel.org wrote:
> > +static int riscv_srmcfg_pm_notify(struct notifier_block *nb,
> > +				  unsigned long action, void *unused)
> > +{
> > +	switch (action) {
> > +	case CPU_PM_EXIT:
> > +	case CPU_PM_ENTER_FAILED:
> > +		__this_cpu_write(cpu_srmcfg, U32_MAX);
> > +		break;
> > +	}
> > +	return NOTIFY_OK;
> > +}
> 
> [Severity: High]
> Does this leave the currently executing task with an incorrect hardware CSR
> state?
> 
> While the software cache is invalidated by setting cpu_srmcfg to U32_MAX,
> the hardware CSR_SRMCFG register is not explicitly reprogrammed during
> CPU_PM_EXIT.
> 
> Since the hardware state may be lost or reset to an implementation-defined
> value upon resume, wouldn't the task running at resume time continue executing
> with the wrong QoS tag until it is eventually preempted?

This is not a problem. cache invalidation is sufficient. CSR write here
would be setting a value that __switch_to_srmcfg() will re-write moments
later.

> > +static int __init riscv_srmcfg_init(void)
> > +{
> > +	int err;
> > +
> > +	if (!riscv_has_extension_unlikely(RISCV_ISA_EXT_SSQOSID))
> > +		return 0;
> > +
> > +	/*
> > +	 * cpuhp_setup_state() invokes the startup callback locally on every
> > +	 * already-online CPU, so no separate seed loop is needed here.
> > +	 */
> > +	err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "riscv/srmcfg:online",
> > +				riscv_srmcfg_online, NULL);
> 
> [Severity: High]
> Should a teardown callback be provided to cpuhp_setup_state() to invalidate
> the cpu_srmcfg cache when a CPU goes offline?

The startup callback riscv_srmcfg_online() is the one that invalidates
the cache. A teardown callback that did the same thing on offline would be
redundant with the online seed. 

> Without a teardown callback, a CPU going offline retains its previous
> cpu_srmcfg value. When brought back online, its hardware CSR is reset.
> 
> Tasks scheduling before the CPU reaches the CPUHP_AP_ONLINE_DYN state might
> skip the CSR write if their thread srmcfg tag matches the stale cache. Could
> this allow those early context switches to bypass resource constraints by
> running with the hardware-reset CSR?

I will move the seed earlier to CPUHP_AP_STARTING so the cache is
invalidated before the CPU is scheduleable.

-Drew

  reply	other threads:[~2026-05-25  3:55 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-24 23:55 [PATCH RFC v5 00/18] riscv: add Ssqosid and CBQRI resctrl support Drew Fustini
2026-05-24 23:55 ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 01/18] dt-bindings: riscv: Add Ssqosid extension description Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 02/18] riscv: detect the Ssqosid extension Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 03/18] riscv: add support for srmcfg CSR from " Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:30   ` sashiko-bot
2026-05-25  3:55     ` Drew Fustini [this message]
2026-05-24 23:55 ` [PATCH RFC v5 04/18] fs/resctrl: Add resctrl_is_membw() helper Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 05/18] fs/resctrl: Add RDT_RESOURCE_MB_MIN and RDT_RESOURCE_MB_WGHT Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 06/18] fs/resctrl: Let bandwidth resources default to min_bw at reset Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 07/18] riscv_cbqri: Add capacity controller probe and allocation device ops Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:30   ` sashiko-bot
2026-05-25  4:16     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 08/18] riscv_cbqri: Add capacity controller monitoring " Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:29   ` sashiko-bot
2026-05-25  6:58     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 09/18] riscv_cbqri: Add bandwidth controller probe and allocation " Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:30   ` sashiko-bot
2026-05-25  7:21     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 10/18] riscv_cbqri: Add bandwidth controller monitoring " Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:36   ` sashiko-bot
2026-05-25  7:25     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 11/18] riscv_cbqri: resctrl: Add cache allocation via capacity block mask Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:50   ` sashiko-bot
2026-05-25  7:40     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 12/18] riscv_cbqri: resctrl: Add L3 cache occupancy monitoring Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:46   ` sashiko-bot
2026-05-26 11:49     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 13/18] riscv_cbqri: resctrl: Add MB_MIN bandwidth allocation via Rbwb Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:55   ` sashiko-bot
2026-05-31  1:50     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 14/18] riscv_cbqri: resctrl: Add MB_WGHT bandwidth allocation via Mweight Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  0:52   ` sashiko-bot
2026-05-31  1:50     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 15/18] riscv_cbqri: resctrl: Add mbm_total_bytes bandwidth monitoring Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  1:27   ` sashiko-bot
2026-05-31  1:50     ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 16/18] ACPI: RISC-V: Parse RISC-V Quality of Service Controller (RQSC) table Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-25  8:23   ` Sunil V L
2026-05-25  8:23     ` Sunil V L
2026-05-31  1:51     ` Drew Fustini
2026-05-31  1:51       ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 17/18] ACPI: RISC-V: Add support for RISC-V Quality of Service Controller (RQSC) Drew Fustini
2026-05-24 23:55   ` Drew Fustini
2026-05-24 23:55 ` [PATCH RFC v5 18/18] riscv: enable resctrl filesystem for Ssqosid Drew Fustini
2026-05-24 23:55   ` Drew Fustini

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=ahPIKDdzr4SDSaGD@gen8 \
    --to=fustini@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.