summaryrefslogtreecommitdiffstats
path: root/drivers/char/i8k.c
Commit message (Collapse)AuthorAgeFilesLines
* hwmon: Rename i8k driver to dell-smm-hwmon and move it to hwmon treePali Rohár2015-05-241-1007/+0
| | | | | | | | | | | | | This commit moves i8k driver to hwmon tree under name dell-smm-hwmon which is better name then abbreviation i8k. For backward compatibility is added macro MODULE_ALIAS("i8k") so modprobe will load driver also old name i8k. CONFIG_I8K compile option was not changed. This commit also adds me as maintainer of this new dell-smm-hwmon driver and remove Guenter Roeck from list who is implicit maintainer all hwmon drivers. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Remove use of seq_printf return valueJoe Perches2015-03-251-7/+9
| | | | | | | | | | | | The seq_printf return value, because it's frequently misused, will eventually be converted to void. See: commit 1f33c41c03da ("seq_file: Rename seq_overflow() to seq_has_overflowed() and make public") Signed-off-by: Joe Perches <joe@perches.com> Acked-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Add support for fan labelsPali Rohár2015-01-251-14/+62
| | | | | | | | | | | | | | | | | | This patch adds labels support for fans if SMM function with EAX register 0x03a3 reports it. This information was taken from DOS binary NBSVC.MDM. Additionally this patch change detection of fan presece. Instead reading fan status now detection is based on new label SMM function. Dell DOS binary NBSVC.MDM is doing similar checks, so we should do that too. This patch also remove I8K_FAN_LEFT and I8K_FAN_RIGHT usage from hwmon driver part because that names does not make sense anymore. So numeric constants are used instead. Original /proc/i8k ioctl part was not changed for compatibility reasons. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Remove DMI config data for Latitude E6440 and E6540Pali Rohár2015-01-251-21/+0
| | | | | | | | | | | | | Both Dell Latitude machines were tested with new fan autodetection code and they are working fine. We already have DMI_MATCH data for generic Latitude machines which match also E6440 and E6540 models. So we do not need to maintain DMI data for those specific machines anymore. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Tested-by: Pali Rohár <pali.rohar@gmail.com> Tested-by: Steven Honeyman <stevenhoneyman@gmail.com> Acked-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Autodetect fan RPM multiplierPali Rohár2015-01-251-12/+48
| | | | | | | | | | | | | | | | | | This patch adds new function i8k_get_fan_nominal_speed() for doing SMM call which will return nominal fan RPM for specified fan speed. It returns nominal RPM value at which fan operate when speed (0, 1, 2, 3) is set. It looks like RPM value is not accurate, but still provides very useful information. New function i8k_get_fan_nominal_speed() is used for determinate if fan multiplier is 1 or 30. If function for maximal fan value success and returned RPM value too high (above 30000) then fan multiplier is set to 1. Otherwise multiplier is not changed and default value 30 is used. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Tested-by: Pali Rohár <pali.rohar@gmail.com> Tested-by: Gabriele Mazzotta <gabriele.mzt@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Make fan module parameters an unsignedPali Rohár2015-01-251-9/+9
| | | | | | | | | Setting negative fan multiplier or maximal fan speed does make any sense and can cause problems. So ensure that negative values will not be accepted. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Add support for Dell XPS 13Guenter Roeck2015-01-251-3/+11
| | | | | | | | | | XPS 13 does not support turbo speed, so its initialization data matches that of XPS M140. Make XPS initialization data generic, and add support for XPS 13. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Jean Delvare <jdelvare@suse.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Rework error retriesGuenter Roeck2015-01-251-23/+24
| | | | | | | | | | | | | | | Instead of returning a previous value if the SMM code returns an error when trying to read a temperature, retry once. If that fails again, return -ENODATA. Also return -ENODATA if an attempt is made to read the GPU temperature but the GPU is currently turned off. Drop the I8K_TEMPERATURE_BUG definition and handle the related bug unconditionally. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Return -ENODATA for invalid temperaturePali Rohár2015-01-251-3/+1
| | | | | | | | | | Guenter Roeck suggested to return -ENODATA instead -ERANGE or -EINVAL when BIOS reports invalid temperature value. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Register only temperature sensors which have labelsPali Rohár2015-01-251-9/+9
| | | | | | | | | | | | Detect presense of sensor by calling type function instead trying to read temperature value. Type function is working also for sensors which are temporary turned off (e.g on GPU which is turned off). Dell DOS binary NBSVC.MDM is doing similar checks, so we should do that too. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Add support for temperature sensor labelsPali Rohár2015-01-251-13/+61
| | | | | | | | | | | | | This patch adds labels for temperature sensors if SMM function with EAX register 0x11a3 reports it. This information was taken from DOS binary NBSVC.MDM. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Pali Rohár <pali.rohar@gmail.com> Tested-by: Steven Honeyman <stevenhoneyman@gmail.com> Tested-by: Gabriele Mazzotta <gabriele.mzt@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Fix temperature bug handling in i8k_get_temp()Pali Rohár2014-11-261-6/+10
| | | | | | | | | | | | | | | | | | | | | Static array prev[] was incorrectly initialized. It should be initialized to some "invalid" temperature value (above I8K_MAX_TEMP). Next, function should store "invalid" value to prev[] (above I8K_MAX_TEMP), not valid (= I8K_MAX_TEMP) because whole temperature bug handling will not work. And last part, to not break existing detection of temperature sensors, register them also if i8k report too high temperature (above I8K_MAX_TEMP). This is needed because some sensors are sometimes turned off (e.g sensor on GPU which can be turned off/on) and in this case SMM report too high value. To prevent reporting "invalid" values to userspace, return -EINVAL. In this case sensors which are currently turned off (e.g optimus/powerexpress/enduro gpu) are reported as "N/A" by lm-sensors package. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Add MODULE_DEVICE_TABLE macroPali Rohár2014-11-071-0/+2
| | | | | | | | | This patch adds MODULE_DEVICE_TABLE macro so i8k.ko module can be automatically loaded based on dmi system alias. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Acked-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Add support for Dell Latitude E6440Pali Rohár2014-11-071-0/+8
| | | | | | | | | Dell Latitude E6440 needs same settings as E6540. Signed-off-by: Pali Rohár <pali.rohar@gmail.com> Acked-by: Guenter Roeck <linux@roeck-us.net> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* i8k: Add support for Dell Latitude E6540Steven Honeyman2014-09-231-0/+13
| | | | | | | | Add support for the Dell Latitude E6540 which needs a different fan speed multiplier. Signed-off-by: Steven Honeyman <stevenhoneyman@gmail.com> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Merge 3.16-rc5 into char-misc-nextGreg Kroah-Hartman2014-07-131-1/+3
|\ | | | | | | | | | | | | This resolves a number of merge issues with changes in this tree and Linus's tree at the same time. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * i8k: Fix non-SMP operationGuenter Roeck2014-07-091-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit f36fdb9f0266 (i8k: Force SMM to run on CPU 0) adds support for multi-core CPUs to the driver. Unfortunately, that causes it to fail loading if compiled without SMP support, at least on 32 bit kernels. Kernel log shows "i8k: unable to get SMM Dell signature", and function i8k_smm is found to return -EINVAL. Testing revealed that the culprit is the missing return value check of set_cpus_allowed_ptr. Fixes: f36fdb9f0266 (i8k: Force SMM to run on CPU 0) Reported-by: Jim Bos <jim876@xs4all.nl> Tested-by: Jim Bos <jim876@xs4all.nl> Cc: stable@vger.kernel.org # 3.14+ Signed-off-by: Guenter Roeck <linux@roeck-us.net> Cc: Andreas Mohr <andi@lisas.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Add support for Dell Precision 490 and Latitude D520Guenter Roeck2014-07-091-0/+27
| | | | | | | | | | | | | | | | | | Both systems need non-standard parameters for fan multiplier and maximum fan speed. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Cc: Andreas Mohr <andi@lisas.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Add support for configurable maximum fan speed valueGuenter Roeck2014-07-091-7/+42
| | | | | | | | | | | | | | | | | | Newer Dell systems provide more granular fan speed selection. Add support for it. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Cc: Andreas Mohr <andi@lisas.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Drop all labelsGuenter Roeck2014-07-091-34/+13
|/ | | | | | | | | | | | Labels are known to be wrong for several Dell laptops. For example, a single fan may be shown as right fan when in reality it sits on the left side of the chassis. Drop all labels to avoid such inaccuracies. Users can select labels in the sensors configuration file instead if desired. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Cc: Andreas Mohr <andi@lisas.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Merge branch 'hwmon-for-linus' of ↵Linus Torvalds2014-01-291-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging Pull hwmon updates from Jean Delvare: "This include it87 driver improvements, and a tree-wide change of my e-mail address" * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging: Update Jean Delvare's e-mail address hwmon: (it87) Print proper names for the IT8771E and IT8772E hwmon: (it87) Add support for the ITE IT8603E
| * Update Jean Delvare's e-mail addressJean Delvare2014-01-291-1/+1
| | | | | | | | Signed-off-by: Jean Delvare <khali@linux-fr.org>
* | i8k: Implement hwmon based fan speed controlGuenter Roeck2013-12-181-5/+44
| | | | | | | | | | | | | | | | | | | | Fan speed can be set to off, slow, and fast, which can be exported to userspace through the hwmon ABI as pwm1 / pwm2. Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Stop reading SMM BIOS version during driver probeGuenter Roeck2013-12-181-40/+2
| | | | | | | | | | | | | | | | | | | | This doesn't work on Studio, XPS, Vostro, and Precision laptops, and it doesn't provide any value except to cause confusion when it does not work. Drop it and always use DMI BIOS version instead. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Use driver_data field of dmi_system_id to override fan multiplierGuenter Roeck2013-12-181-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | At least on Studio 1555 and XPS M140, the fan speed is reported directly, not with the default speed multiplier of 30. Information on the web suggests that this may be true for other models as well, though it is unknown at this time which systems may be affected. Use the driver_data field of dmi_system_id to override the default fan multiplier value for the two systems known to use a multiplier of 1. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Add support for Dell XPS M140Guenter Roeck2013-12-181-0/+7
| | | | | | | | | | | | Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Add support for Dell Studio laptopsGuenter Roeck2013-12-181-0/+7
| | | | | | | | | | | | | | | | Tested with Dell Studio 1555. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Add copyrightGuenter Roeck2013-12-181-0/+1
| | | | | | | | | | | | | | | | I made enough changes to the driver to warrant adding a copyright notice. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Force SMM to run on CPU 0Guenter Roeck2013-12-181-2/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Studio 1555 with dual-core CPU, reading sensor attributes exported by this driver resulted in random failures combined with system hangups and forced logouts. Information in drivers/firmware/dcdbas.c suggests that SMM accesses must run on CPU 0. With this patch, the problems are gone, suggesting that this is in fact the case. Code derived from drivers/firmware/dcdbas.c. Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Drop driver version number and info message at startupGuenter Roeck2013-12-181-5/+0
| | | | | | | | | | | | | | | | | | The driver version number is long since obsolete, so drop it. Also, drop the info message at driver startup to reduce boot noise. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Remove obsolete link to out-of-tree driverGuenter Roeck2013-12-181-2/+0
| | | | | | | | | | | | | | | | Accessing the link returns a page not found error. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Support additional temperature sensorsGuenter Roeck2013-12-181-19/+45
| | | | | | | | | | | | | | | | | | | | The SMM API suggests that more than one temperature sensor is supported, so add support for them. Currently only supported for hwmon interface. Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Convert to use to hwmon_device_register_with_groups hwmon APIGuenter Roeck2013-12-181-78/+54
| | | | | | | | | | | | | | | | | | | | Simplify code and fix race condition caused by registering hwmon device prior to creating sysfs attributes. Cc: Jean Delvare <khali@linux-fr.org> Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Fix various checkpatch warnings and errorsGuenter Roeck2013-12-181-17/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix: WARNING: Use #include <linux/uaccess.h> instead of <asm/uaccess.h> WARNING: Use #include <linux/io.h> instead of <asm/io.h> WARNING: __packed is preferred over __attribute__((packed)) WARNING: externs should be avoided in .c files ERROR: spaces required around that ':' (ctx:ExV) ERROR: do not use assignment in if condition WARNING: line over 80 characters WARNING: __initdata should be placed after i8k_dmi_table[] ERROR: code indent should use tabs where possible WARNING: please, no spaces at the start of a line Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* | i8k: Convert to use pr_ functions instead of printkGuenter Roeck2013-12-181-9/+10
|/ | | | | | Signed-off-by: Guenter Roeck <linux@roeck-us.net> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* drivers/char/i8k.c: add Dell XPLS L421XAlan Cox2013-12-041-0/+7
| | | | | | | | | | Addresses https://bugzilla.kernel.org/show_bug.cgi?id=60772 Signed-off-by: Alan Cox <alan@linux.intel.com> Reported-by: Leho Kraav <leho@kraav.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* module_param: make bool parameters really bool (drivers & misc)Rusty Russell2012-01-131-4/+4
| | | | | | | | | | | | module_param(bool) used to counter-intuitively take an int. In fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy trick. It's time to remove the int/unsigned int option. For this version it'll simply give a warning, but it'll break next kernel version. Acked-by: Mauro Carvalho Chehab <mchehab@redhat.com> Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
* i8k: Integrate with the hwmon subsystemJean Delvare2011-05-251-0/+162
| | | | | | | | | | | | Let i8k create an hwmon class device so that libsensors will expose the CPU temperature and fan speeds to monitoring applications. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Massimo Dal Zotto <dz@debian.org>
* i8k: Avoid lahf in 64-bit codeLuca Tettamanti2011-05-251-2/+2
| | | | | | | | | | | | | | | i8k uses lahf to read the flag register in 64-bit code; early x86-64 CPUs, however, lack this instruction and we get an invalid opcode exception at runtime. Use pushf to load the flag register into the stack instead. Signed-off-by: Luca Tettamanti <kronos.it@gmail.com> Reported-by: Jeff Rickman <jrickman@myamigos.us> Tested-by: Jeff Rickman <jrickman@myamigos.us> Tested-by: Harry G McGavran Jr <w5pny@arrl.net> Cc: stable@kernel.org Cc: Massimo Dal Zotto <dz@debian.org> Signed-off-by: Jean Delvare <khali@linux-fr.org>
* Fix gcc 4.5.1 miscompiling drivers/char/i8k.c (again)Jim Bos2010-11-151-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | The fix in commit 6b4e81db2552 ("i8k: Tell gcc that *regs gets clobbered") to work around the gcc miscompiling i8k.c to add "+m (*regs)" caused register pressure problems and a build failure. Changing the 'asm' statement to 'asm volatile' instead should prevent that and works around the gcc bug as well, so we can remove the "+m". [ Background on the gcc bug: a memory clobber fails to mark the function the asm resides in as non-pure (aka "__attribute__((const))"), so if the function does nothing else that triggers the non-pure logic, gcc will think that that function has no side effects at all. As a result, callers will be mis-compiled. Adding the "+m" made gcc see that it's not a pure function, and so does "asm volatile". The problem was never really the need to mark "*regs" as changed, since the memory clobber did that part - the problem was just a bug in the gcc "pure" function analysis - Linus ] Signed-off-by: Jim Bos <jim876@xs4all.nl> Acked-by: Jakub Jelinek <jakub@redhat.com> Cc: Andi Kleen <andi@firstfloor.org> Cc: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* i8k: Tell gcc that *regs gets clobberedJim Bos2010-11-131-2/+3
| | | | | | | | | | | | | | | | | More recent GCC caused the i8k driver to stop working, on Slackware compiler was upgraded from gcc-4.4.4 to gcc-4.5.1 after which it didn't work anymore, meaning the driver didn't load or gave total nonsensical output. As it turned out the asm(..) statement forgot to mention it modifies the *regs variable. Credits to Andi Kleen and Andreas Schwab for providing the fix. Signed-off-by: Jim Bos <jim876@xs4all.nl> Cc: Andi Kleen <andi@firstfloor.org> Cc: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* drivers: autoconvert trivial BKL users to private mutexArnd Bergmann2010-10-051-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All these files use the big kernel lock in a trivial way to serialize their private file operations, typically resulting from an earlier semi-automatic pushdown from VFS. None of these drivers appears to want to lock against other code, and they all use the BKL as the top-level lock in their file operations, meaning that there is no lock-order inversion problem. Consequently, we can remove the BKL completely, replacing it with a per-file mutex in every case. Using a scripted approach means we can avoid typos. These drivers do not seem to be under active maintainance from my brief investigation. Apologies to those maintainers that I have missed. file=$1 name=$2 if grep -q lock_kernel ${file} ; then if grep -q 'include.*linux.mutex.h' ${file} ; then sed -i '/include.*<linux\/smp_lock.h>/d' ${file} else sed -i 's/include.*<linux\/smp_lock.h>.*$/include <linux\/mutex.h>/g' ${file} fi sed -i ${file} \ -e "/^#include.*linux.mutex.h/,$ { 1,/^\(static\|int\|long\)/ { /^\(static\|int\|long\)/istatic DEFINE_MUTEX(${name}_mutex); } }" \ -e "s/\(un\)*lock_kernel\>[ ]*()/mutex_\1lock(\&${name}_mutex)/g" \ -e '/[ ]*cycle_kernel_lock();/d' else sed -i -e '/include.*\<smp_lock.h\>/d' ${file} \ -e '/cycle_kernel_lock()/d' fi Signed-off-by: Arnd Bergmann <arnd@arndb.de>
* procfs: Push down the bkl from ioctlFrederic Weisbecker2010-05-171-5/+16
| | | | | | | | | | | | | | | | | | | | | Push down the bkl from procfs's ioctl main handler to its users. Only three procfs users implement an ioctl (non unlocked) handler. Turn them into unlocked_ioctl and push down the Devil inside. v2: PDE(inode)->data doesn't need to be under bkl v3: And don't forget to git-add the result v4: Use wrappers to pushdown instead of an invasive and error prone handlers surgery. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: John Kacur <jkacur@redhat.com> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Cc: Al Viro <viro@ZenIV.linux.org.uk> Cc: Alexey Dobriyan <adobriyan@gmail.com>
* i8k: Add Dell Vostro systemsFederico Heinz2009-01-021-1/+8
| | | | | | | | | | | | | | | This trivial patch adds support for i8k on the new Dell Vostro models. I tested it on my Vostro 1400, and it works. It does print a warning when loading the module: i8k: unable to get SMM BIOS version But I couldn't figure out how to fix that. The module seems to work fine, anyway... Signed-off-by: Federico Heinz <fheinz@vialibre.org.ar> Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* i8k: Enable i8k on Dell Precision SystemsAndy Spencer2009-01-021-0/+7
| | | | | | | | Patch to enable i8k on Dell Precisions. Signed-off-by: Andy Spencer <spenceal@rose-hulman.edu> Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* i8k: make fan multiplier tunable with a module parameterJochen Eisinger2008-05-011-1/+5
| | | | | | | | | | The i8k driver multiplies the fan speed reported by the BIOS with a factor of 30. On my Dell Latitude D800, this factor is not required. I'd suggest to make this configurable. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* drivers: use non-racy method for proc entries creationDenis V. Lunev2008-04-291-4/+2
| | | | | | | | | | | | | Use proc_create()/proc_create_data() to make sure that ->proc_fops and ->data be setup before gluing PDE to main tree. Signed-off-by: Denis V. Lunev <den@openvz.org> Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Cc: Alexey Dobriyan <adobriyan@gmail.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Acked-by: Dmitry Torokhov <dtor@mail.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* i8k: Inspiron E1705 fixFrank Sorenson2008-02-071-0/+7
| | | | | | | | | | | | Needs the following in order to work correctly on my Inspiron E1705: Add DMI Product name to i8k for Dell MP061 hardware (Inspiron 9400/E1705) Signed-off-by: Frank Sorenson <frank@tuxrocks.com> Cc: Bradley Smith <bradjsmith@btinternet.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* I8K: allow i8k driver to be built on x86_64 systemsBradley Smith2008-02-071-1/+28
| | | | | | | | | | | Adds #if clause and additional inline assembly so that the driver builds on x86_64 systems. Signed-off-by: Bradley Smith <bradjsmith@btinternet.com> Cc: Frank Sorenson <frank@tuxrocks.com> Cc: Jeff Garzik <jeff@garzik.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* ik8: add Dell UK 6400 Inspiron model (MM061)Nick Warne2008-02-061-0/+7
| | | | | | | | | Add the Dell UK 6400 Inspiron model (MM061) to allow the i8k module to load correctly without using 'force=1' Signed-off-by: "Nick Warne" <nick@ukfsn.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>