From: Louis Sautier <sautier.louis@gmail.com>
To: sashiko-reviews@lists.linux.dev
Cc: linux-hwmon@vger.kernel.org
Subject: Re: [PATCH 2/2] scsi: mpt3sas: add hwmon support
Date: Thu, 14 May 2026 05:39:04 +0200 [thread overview]
Message-ID: <106e2981-35a1-4559-ae20-2026c224f590@gmail.com> (raw)
In-Reply-To: <20260514010209.5C3ABC19425@smtp.kernel.org>
On 14/05/2026 03:02, sashiko-bot@kernel.org wrote:
> Could exposing this read to unprivileged users lead to excessive firmware
> requests and mutex contention?
>
> Since the sysfs files are world-readable, any local user can read them in a
> tight loop. Every read directly calls mpt3sas_config_get_iounit_pg7(), which
> issues synchronous requests to the firmware over the PCIe bus and acquires
> the shared config_cmds.mutex:
>
> _hwmon_read() ->
> mpt3sas_config_get_iounit_pg7() ->
> _config_request() ->
> mutex_lock(&ioc->config_cmds.mutex)
>
> Does this allow an unprivileged user to starve other storage subsystem
> components that rely on this mutex for administrative tasks or device
> discovery?
>
> Could we implement a caching mechanism (for example, caching the readings
> for a short period using jiffies) to rate-limit these firmware requests?
My initial implementation had a 1-second jiffies-based cache; I
dropped it after seeing that drivers/nvme/host/hwmon.c follows the
same no-cache pattern.
The cover letter's contention figure came from a less direct
measurement and was too optimistic. I re-measured directly on
ioc->config_cmds.mutex, hammering the sysfs temperature file from
N concurrent unprivileged workers on a 9500-8i / SAS3816 while a
separate "administrative" reader runs in the foreground. The same
setup against the system's NVMe is included below for comparison:
hwmon: mpt3sas (/sys/class/hwmon/hwmon3/temp1_input)
nproc: 16
baseline (no concurrent readers): p50=14.6µs p95=18.9µs
Foreground reader latency with N concurrent unprivileged hammers:
N agg r/s p50 µs p95 µs max µs
1 65244 38.0 60.2 60.8
2 57722 57.0 60.1 120.5
4 55026 90.8 115.5 152.9
8 53688 207.2 247.9 300.1
16 52188 345.8 390.3 444.8
hwmon: nvme (/sys/class/hwmon/hwmon2/temp1_input)
nproc: 16
baseline (no concurrent readers): p50=268.6µs p95=289.4µs
Foreground reader latency with N concurrent unprivileged hammers:
N agg r/s p50 µs p95 µs max µs
1 3558 803.8 839.8 1008.3
2 3549 1342.0 1443.6 1558.7
4 3543 2154.8 2473.0 2756.6
8 3518 4130.9 4459.6 4677.4
16 3522 7394.6 8743.6 8804.3
Aggregate throughput is mutex-bound: every hwmon read takes
config_cmds.mutex, so contention is bounded. The worst
foreground p95 I observed was ~8.5 ms at N=nproc=96 on the
9305-24i (below).
Across the other two test boxes:
- 9305-24i / SAS3224 (nproc=96): mpt3sas baseline 31 µs, p95 at
N=96 ~8.5 ms; same shape, ~2x slower per read than the more
recent 9500-8i / SAS3816 above.
- 9211-4i / SAS2004: no mpt3sas sensors reported, no hwmon
device registered, no contention surface (graceful-skip path
in the cover letter).
If a maintainer thinks the cache should come back to bound this
independently of the attacker count, I am happy to re-add it.
next prev parent reply other threads:[~2026-05-14 3:39 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 21:47 [PATCH 0/2] scsi: mpt3sas: add hwmon support Louis Sautier
2026-05-12 21:47 ` [PATCH 1/2] scsi: mpt3sas: add IO Unit Page 7 config accessor Louis Sautier
2026-05-12 21:47 ` [PATCH 2/2] scsi: mpt3sas: add hwmon support Louis Sautier
2026-05-13 3:57 ` Guenter Roeck
2026-05-14 1:11 ` Louis Sautier
2026-05-14 1:26 ` Guenter Roeck
2026-05-14 1:02 ` sashiko-bot
2026-05-14 3:39 ` Louis Sautier [this message]
2026-05-14 5:17 ` Guenter Roeck
2026-05-14 19:57 ` Louis Sautier
2026-05-14 20:58 ` Guenter Roeck
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=106e2981-35a1-4559-ae20-2026c224f590@gmail.com \
--to=sautier.louis@gmail.com \
--cc=linux-hwmon@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox