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:
committed by
Adrian Chadd
parent
afe55ae68e
commit
1a6bdd6266
+14
-14
@@ -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");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user