Displaying 19 results from an estimated 19 matches for "fan_set".
Did you mean:
fan_get
2017 Nov 22
3
Addressing the problem of noisy GPUs under Nouveau
Hi Martin,
I was asked to clarify a few things:
(1) Are all the user reports of loud fans on Fermi-era GPUs?
(2) When the VBIOS POSTs the card, it loads initial ucode onto the Falcon
processor (PMU), which will do basic fan management on its own. We call this
init ucode "IFR" (Init From ROM). nvidia.ko will restore the IFR ucode when
unloaded. I assume the loud fan symptom occurs
2017 Nov 22
0
Addressing the problem of noisy GPUs under Nouveau
...s you're probably aware, there's 2
different ways this can be done - there might be a PWM, we might have
to toggle it manually. Maybe something else still.
Have a look at drm/nouveau/nvkm/subdev/therm/fan.c and the various
bits it ends up calling (pre-GF119 fermi's end up with the nv50
fan_set, I believe).
The bios stuff is parsed in nvkm/subdev/bios/fan.c and therm.c,
although I believe Martin's latest analysis is more advanced than
what's in that code.
Martin's question was very long, but it boils down to this:
How do we compute the correct values to write into the e114/...
2017 Apr 26
0
[PATCH v5 3/5] nouveau_hwmon: Remove old code, add .write/.read operations
...long value)
{
- struct drm_device *dev = dev_get_drvdata(d);
- struct nouveau_drm *drm = nouveau_drm(dev);
struct nvkm_therm *therm = nvxx_therm(&drm->client.device);
- int ret = -ENODEV;
- long value;
-
- if (kstrtol(buf, 10, &value) == -EINVAL)
- return -EINVAL;
-
- ret = therm->fan_set(therm, value);
- if (ret)
- return ret;
- return count;
+ return therm->fan_set(therm, value);
}
-static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR,
- nouveau_hwmon_get_pwm1,
- nouveau_hwmon_set_pwm1, 0);
-
static ssize_t
nouveau_hwmon_get_pwm1_min(struct device *d,
struct...
2017 Apr 26
9
[PATCH v5 0/5] replace hwmon_device_register for hwmon_device_register_with_info
This v5 drops a check for attr_set.
Versions:
v1 -> v2:
* Keep temp attrs as read only
v2 -> v3:
* Code fix-ups: struct and string as const and add return within switch
due to fallthrough
* Add Signed-off-by to all commits
v3 -> v4:
* Rever const to struct attribute. Kbuild complains.
v4 -> v5:
* Drops a check for attr_set in
2017 Apr 13
0
[PATCH 2/4] nouveau_hwmon: migrate to hwmon_device_register_with_info
..., long val)
{
- struct drm_device *dev = dev_get_drvdata(d);
- struct nouveau_drm *drm = nouveau_drm(dev);
struct nvkm_therm *therm = nvxx_therm(&drm->client.device);
- int ret = -ENODEV;
- long value;
- if (kstrtol(buf, 10, &value) == -EINVAL)
- return -EINVAL;
-
- ret = therm->fan_set(therm, value);
- if (ret)
- return ret;
-
- return count;
+ return therm->fan_set(therm, val);
}
-static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR,
- nouveau_hwmon_get_pwm1,
- nouveau_hwmon_set_pwm1, 0);
static ssize_t
nouveau_hwmon_get_pwm1_min(struct device *d,
@@ -515,12 +357...
2017 Apr 11
2
[PATCH 1/1] nouveau_hwmon: migrate to hwmon_device_register_with_info
..., long val)
{
- struct drm_device *dev = dev_get_drvdata(d);
- struct nouveau_drm *drm = nouveau_drm(dev);
struct nvkm_therm *therm = nvxx_therm(&drm->client.device);
int ret = -ENODEV;
- long value;
- if (kstrtol(buf, 10, &value) == -EINVAL)
- return -EINVAL;
-
- ret = therm->fan_set(therm, value);
+ ret = therm->fan_set(therm, val);
if (ret)
return ret;
-
- return count;
+ return val;
}
-static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR,
- nouveau_hwmon_get_pwm1,
- nouveau_hwmon_set_pwm1, 0);
-
static ssize_t
nouveau_hwmon_get_pwm1_min(struct device *d,
-...
2017 Nov 23
2
Addressing the problem of noisy GPUs under Nouveau
...se PWM, and anything after the GT215 use this
fan calibration table which took me a while to find, and that is still
mostly a mystery to me :s
>
> Have a look at drm/nouveau/nvkm/subdev/therm/fan.c and the various
> bits it ends up calling (pre-GF119 fermi's end up with the nv50
> fan_set, I believe).
>
> The bios stuff is parsed in nvkm/subdev/bios/fan.c and therm.c,
> although I believe Martin's latest analysis is more advanced than
> what's in that code.
Absolutely :) I have not updated Nouveau yet, in fear of setting a value
lower than what the proprietary...
2017 Apr 12
0
[PATCH 1/1] nouveau_hwmon: migrate to hwmon_device_register_with_info
...m *drm = nouveau_drm(dev);
> struct nvkm_therm *therm = nvxx_therm(&drm->client.device);
> int ret = -ENODEV;
> - long value;
>
> - if (kstrtol(buf, 10, &value) == -EINVAL)
> - return -EINVAL;
> -
> - ret = therm->fan_set(therm, value);
> + ret = therm->fan_set(therm, val);
> if (ret)
> return ret;
> -
> - return count;
> + return val;
> }
>
> -static SENSOR_DEVICE_ATTR(pwm1, S_IRUGO | S_IWUSR,
> - nouveau_hwmon_get_p...
2017 Apr 26
1
[PATCH] drm/nouveau: Add support for clockgating on Fermi+
...949fa..723c0c1 100644
> > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
> > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
> > @@ -393,6 +393,8 @@ nvkm_therm_new_(const struct nvkm_therm_func
> > *func, struct nvkm_device *device,
> > therm->fan_set = nvkm_therm_fan_user_set;
> > therm->attr_get = nvkm_therm_attr_get;
> > therm->attr_set = nvkm_therm_attr_set;
> > + therm->clkgate_engine = nvkm_therm_clkgate_engine;
> > + therm->clkgate_set = nvkm_therm_clkgate_set;
>
> rem...
2017 May 08
5
[PATCH v6 0/5] replace hwmon_device_register for hwmon_device_register_with_info
This v6 fixes some comments pointed out by Martin Peres.
Versions:
v1 -> v2:
* Keep temp attrs as read only
v2 -> v3:
* Code fix-ups: struct and string as const and add return within switch
due to fallthrough
* Add Signed-off-by to all commits
v3 -> v4:
* Rever const to struct attribute. Kbuild complains.
v4 -> v5:
* Drops a check for
2017 Apr 22
6
[PATCH v4 0/5] replace hwmon_device_register for hwmon_device_register_with_info
Kbuild sent me an e-mail due to a fixup I introduced in v3.
It complains due to an incompatible pointer type and it doesn't build.
This version reverts it.
Versions:
v1 -> v2:
* Keep temp attrs as read only
v2 -> v3:
* Code fix-ups: struct and string as const and add return within switch
due to fallthrough
* Add Signed-off-by to all commits
v3 -> v4:
2017 Apr 21
6
[PATCH v3 0/5] replace hwmon_device_register for hwmon_device_register_with_info
Hi, this is version v3 with some fix-ups:
Versions:
v1 -> v2:
* Keep temp attrs as read only
v2 -> v3:
* Code fix-ups: struct and string as const and add return within switch
due to fallthrough
* Add Signed-off-by to all commits
This patchseries replaces the deprecated hwmon_device_register function with the
new one hwmon_device_register_with_info.
It also does some cleanup.
Here
2017 May 18
7
[PATCH v8 0/5] replace hwmon_device_register for hwmon_device_register_with_info
This v8 fixes removes dummy functions which only had a return and moves the code
into the switch statements.
Versions:
v1 -> v2:
* Keep temp attrs as read only
v2 -> v3:
* Code fix-ups: struct and string as const and add return within switch
due to fallthrough
* Add Signed-off-by to all commits
v3 -> v4:
* Rever const to struct attribute. Kbuild
2017 Apr 25
0
[PATCH] drm/nouveau: Add support for clockgating on Fermi+
...dev/therm/base.c
> index df949fa..723c0c1 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
> @@ -393,6 +393,8 @@ nvkm_therm_new_(const struct nvkm_therm_func *func, struct nvkm_device *device,
> therm->fan_set = nvkm_therm_fan_user_set;
> therm->attr_get = nvkm_therm_attr_get;
> therm->attr_set = nvkm_therm_attr_set;
> + therm->clkgate_engine = nvkm_therm_clkgate_engine;
> + therm->clkgate_set = nvkm_therm_clkgate_set;
remove those, because we should o...
2017 May 16
7
[PATCH v7 0/5] replace hwmon_device_register for hwmon_device_register_with_info
This v7 fixes removes dummy functions which only had a return and moves the code
into the switch statements.
Versions:
v1 -> v2:
* Keep temp attrs as read only
v2 -> v3:
* Code fix-ups: struct and string as const and add return within switch
due to fallthrough
* Add Signed-off-by to all commits
v3 -> v4:
* Rever const to struct attribute. Kbuild
2014 Mar 24
4
[PATCH 1/4] pm/fan: drop the fan lock in fan_update() before rescheduling
From: Martin Peres <martin.peres at labri.fr>
This should fix a deadlock that has been reported to us where fan_update()
would hold the fan lock and try to grab the alarm_program_lock to reschedule
an update. On an other CPU, the alarm_program_lock would have been taken
before calling fan_update(), leading to a deadlock.
We should Cc: <stable at vger.kernel.org> # 3.9+
Reported-by:
2017 Apr 17
9
[PATCH v2 0/5] replace hwmon_device_register for hwmon_device_register_with_info
Hi!
This patchseries replaces the deprecated hwmon_device_register function with the
new one hwmon_device_register_with_info.
It also does some cleanup.
Here is the list of patches and what they do:
1/ Adds config structures for all sensors and their possible settings. This patch
and the next one are just preparing the code for what it comes.
2/ Now everything goes through
2017 Apr 25
6
[PATCH] drm/nouveau: Add support for clockgating on Fermi+
...rivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
index df949fa..723c0c1 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
@@ -393,6 +393,8 @@ nvkm_therm_new_(const struct nvkm_therm_func *func, struct nvkm_device *device,
therm->fan_set = nvkm_therm_fan_user_set;
therm->attr_get = nvkm_therm_attr_get;
therm->attr_set = nvkm_therm_attr_set;
+ therm->clkgate_engine = nvkm_therm_clkgate_engine;
+ therm->clkgate_set = nvkm_therm_clkgate_set;
therm->mode = therm->suspend = -1; /* undefined */
return 0;
}
diff...
2017 Apr 25
0
[PATCH] drm/nouveau: Add support for clockgating on Fermi+
...m/subdev/therm/base.c
> index df949fa..723c0c1 100644
> --- a/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
> +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/therm/base.c
> @@ -393,6 +393,8 @@ nvkm_therm_new_(const struct nvkm_therm_func *func, struct nvkm_device *device,
> therm->fan_set = nvkm_therm_fan_user_set;
> therm->attr_get = nvkm_therm_attr_get;
> therm->attr_set = nvkm_therm_attr_set;
> + therm->clkgate_engine = nvkm_therm_clkgate_engine;
> + therm->clkgate_set = nvkm_therm_clkgate_set;
> therm->mode = therm->suspend = -1; /* unde...