asmc: Convert driver to CTLFLAG_MPSAFE

Replace CTLFLAG_NEEDGIANT with CTLFLAG_MPSAFE for all sysctls.
The driver already uses spin mutexes (sc->sc_mtx) for hardware
access protection and does not require the Giant lock.

This improves scalability by allowing concurrent sysctl access
without Giant serialization.

Reviewed by:	ngie, adrian
Differential Revision:	https://reviews.freebsd.org/D54613
This commit is contained in:
Abdelkader Boudih
2026-02-12 19:00:22 -08:00
committed by Adrian Chadd
parent afe55ae68e
commit 1a6bdd6266
+14 -14
View File
@@ -628,49 +628,49 @@ asmc_attach(device_t dev)
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "id",
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_STRING | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, j, model->smc_fan_id, "I",
"Fan ID");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "speed",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, j, model->smc_fan_speed, "I",
"Fan speed in RPM");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "safespeed",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, j, model->smc_fan_safespeed, "I",
"Fan safe speed in RPM");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "minspeed",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
dev, j, model->smc_fan_minspeed, "I",
"Fan minimum speed in RPM");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "maxspeed",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
dev, j, model->smc_fan_maxspeed, "I",
"Fan maximum speed in RPM");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "targetspeed",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
dev, j, model->smc_fan_targetspeed, "I",
"Fan target speed in RPM");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_fan_tree[i]),
OID_AUTO, "manual",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE,
dev, j, asmc_mb_sysctl_fanmanual, "I",
"Fan manual mode (0=auto, 1=manual)");
}
@@ -686,7 +686,7 @@ asmc_attach(device_t dev)
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_temp_tree),
OID_AUTO, model->smc_tempnames[i],
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, i, asmc_temp_sysctl, "I",
model->smc_tempdescs[i]);
}
@@ -703,14 +703,14 @@ asmc_attach(device_t dev)
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_light_tree),
OID_AUTO, "left",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, 0, model->smc_light_left, "I",
"Keyboard backlight left sensor");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_light_tree),
OID_AUTO, "right",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, 0, model->smc_light_right, "I",
"Keyboard backlight right sensor");
@@ -718,7 +718,7 @@ asmc_attach(device_t dev)
SYSCTL_CHILDREN(sc->sc_light_tree),
OID_AUTO, "control",
CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_ANYBODY |
CTLFLAG_NEEDGIANT, dev, 0,
CTLFLAG_MPSAFE, dev, 0,
model->smc_light_control, "I",
"Keyboard backlight brightness control");
}
@@ -736,21 +736,21 @@ asmc_attach(device_t dev)
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_sms_tree),
OID_AUTO, "x",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, 0, model->smc_sms_x, "I",
"Sudden Motion Sensor X value");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_sms_tree),
OID_AUTO, "y",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, 0, model->smc_sms_y, "I",
"Sudden Motion Sensor Y value");
SYSCTL_ADD_PROC(sysctlctx,
SYSCTL_CHILDREN(sc->sc_sms_tree),
OID_AUTO, "z",
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_NEEDGIANT,
CTLTYPE_INT | CTLFLAG_RD | CTLFLAG_MPSAFE,
dev, 0, model->smc_sms_z, "I",
"Sudden Motion Sensor Z value");