aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
Commit message (Collapse)AuthorAge
* arm gpio drivers: make them 'depends on ARM'Linus Torvalds2011-05-29
| | | | | | | | | | | | We had a few drivers move from arch/arm into drivers/gpio, but they don't actually compile without the ARM platform headers etc. As a result they were messing up allyesconfig on x86. Make them depend on ARM. Reported-by: Ingo Molnar <mingo@elte.hu> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge branch 'for_linus' of ↵Linus Torvalds2011-05-29
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86: (43 commits) acer-wmi: support integer return type from WMI methods msi-laptop: fix section mismatch in reference from the function load_scm_model_init acer-wmi: support to set communication device state by new wmid method acer-wmi: allow 64-bits return buffer from WMI methods acer-wmi: check the existence of internal 3G device when set capability platform/x86:delete two unused variables support wlan hotkey on Acer Travelmate 5735Z platform-x86: intel_mid_thermal: Fix memory leak platform/x86: Fix Makefile for intel_mid_powerbtn platform/x86: Simplify intel_mid_powerbtn acer-wmi: Delete out-of-date documentation acerhdf: Clean up includes acerhdf: Drop pointless dependency on THERMAL_HWMON acer-wmi: Update MAINTAINERS wmi: Orphan ACPI-WMI driver tc1100-wmi: Orphan driver acer-wmi: does not allow negative number set to initial device state platform/oaktrail: ACPI EC Extra driver for Oaktrail thinkpad_acpi: Convert printks to pr_<level> thinkpad_acpi: Correct !CONFIG_THINKPAD_ACPI_VIDEO warning ...
| * Merge branch 'x86-platform-next' into x86-platformMatthew Garrett2011-05-29
| |\
| | * acer-wmi: support integer return type from WMI methodsLee, Chun-Yi2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Acer WMID_GUID1/2 method's return value was declared to integer type on Gateway notebook. So, add this patch for support integer return type. Reference: bko#33032 https://bugzilla.kernel.org/show_bug.cgi?id=33032 Tested on Gateway NV5909H laptop Tested-by: Filipus Klutiero <chealer@gmail.com> Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Cc: Matthew Garrett <mjg@redhat.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Thomas Renninger <trenn@suse.de> Signed-off-by: Lee, Chun-Yi <jlee@novell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * msi-laptop: fix section mismatch in reference from the function ↵Lee, Chun-Yi2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | load_scm_model_init There have section mismatch warning message shows up when building the kernel with make CONFIG_DEBUG_SECTION_MISMATCH=y. The problem is the load_scm_model_init() calls msi_laptop_input_setup() which is an __init function, but load_scm_model_init() lacks a __init annotation. This patch add __init on load_scm_model_init() to avoid warning message. Cc: Matthew Garrett <mjg@redhat.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Thomas Renninger <trenn@suse.de> Signed-off-by: Lee, Chun-Yi <jlee@novell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acer-wmi: support to set communication device state by new wmid methodLee, Chun-Yi2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Have many Acer notebooks' BIOS already support new WMID_GUID3 method. On those machines, that will be better set communication device by evaluate WMID_GUID3 method. Tested on Acer Travelmate 8572 Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Cc: Matthew Garrett <mjg@redhat.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Thomas Renninger <trenn@suse.de> Signed-off-by: Lee, Chun-Yi <jlee@novell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acer-wmi: allow 64-bits return buffer from WMI methodsLee, Chun-Yi2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Acer WMID_GUID1/2 method's return buffer was declared to 64-bits on some Acer notebook, but WMI method only use 32-bits in return buffer. So, add this patch for allow 64-bits return buffer. Reference: bko#34142 https://bugzilla.kernel.org/show_bug.cgi?id=34142 Tested on Acer Travelmate 5735Z-452G32Mnss Tested-by: Melchior FRANZ <melchior.franz@gmail.com> Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Cc: Matthew Garrett <mjg@redhat.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Thomas Renninger <trenn@suse.de> Signed-off-by: Lee, Chun-Yi <jlee@novell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acer-wmi: check the existence of internal 3G device when set capabilityLee, Chun-Yi2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That will be better to check the existence of internal 3G device when we set threeg capability and generate killswitch for threeg. It can avoid userland access 3G rfkill but the machine doesn't have internal 3G device. Reference: bko#32862 https://bugzilla.kernel.org/show_bug.cgi?id=32862 Tested on Acer Aspire 8930G, Acer Travelmate 8572 Tested-by: Hector Martin <hector@marcansoft.com> Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Cc: Matthew Garrett <mjg@redhat.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Corentin Chary <corentincj@iksaif.net> Cc: Thomas Renninger <trenn@suse.de> Signed-off-by: Lee, Chun-Yi <jlee@novell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * platform/x86:delete two unused variablesWeiping Pan2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | variable handle is not used in these two functions, just delete them. Signed-off-by: Weiping Pan <panweiping3@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * support wlan hotkey on Acer Travelmate 5735ZMelchior FRANZ2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On an Acer Travelmate 5735Z-452G32Mnss the WLAN-enable/disable key doesn't send 0x1 as acpi event key code, but 0x3. This patch also makes the module ignore hotkey acpi events for functions that are already handled without. This avoids warning message "keyboard: can't emulate rawmode for keycode 240". Signed-off-by: Melchior FRANZ <mfranz@aon.at> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * platform-x86: intel_mid_thermal: Fix memory leakAmeya Palande2011-05-27
| | | | | | | | | | | | | | | Signed-off-by: Ameya Palande <2ameya@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * platform/x86: Fix Makefile for intel_mid_powerbtnAmeya Palande2011-05-27
| | | | | | | | | | | | | | | Signed-off-by: Ameya Palande <2ameya@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * platform/x86: Simplify intel_mid_powerbtnAmeya Palande2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch: 1. Removes unnecessay #defines 2. Removes 'mfld_pb_priv' data structure which results in simpler error handling and less memory allocations. Signed-off-by: Ameya Palande <2ameya@gmail.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acerhdf: Clean up includesJean Delvare2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * The acerhdf driver isn't an ACPI driver, so it needs not include <acpi/acpi_drivers.h>. All it uses is ec_read() and ec_write(), for which <linux/acpi.h> is sufficient. * I couldn't find any reason why <linux/fs.h> and <linux/sched.h> were included. This should avoid unneeded rebuilds of the acerhdf driver. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Peter Feuerer <peter@piie.net> Cc: Matthew Garrett <mjg@redhat.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acerhdf: Drop pointless dependency on THERMAL_HWMONJean Delvare2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The THERMAL_HWMON config option simply exposes the thermal zone temperature values and limits to user-space. It makes no sense for a kernel driver to depend on this. Signed-off-by: Jean Delvare <khali@linux-fr.org> Cc: Peter Feuerer <peter@piie.net> Cc: Matthew Garrett <mjg@redhat.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acer-wmi: does not allow negative number set to initial device stateLee, Chun-Yi2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The driver set module parameter value: mailled, threeg and brightness to BIOS by evaluate wmi method when driver was initialed. The default values for those parameters are -1, so, that will be better don't set negative value to BIOS. Cc: Carlos Corbacho <carlos@strangeworlds.co.uk> Cc: Matthew Garrett <mjg@redhat.com> Cc: Dmitry Torokhov <dtor@mail.ru> Cc: Corentin Chary <corentincj@iksaif.net> Signed-off-by: Lee, Chun-Yi <jlee@novell.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * platform/oaktrail: ACPI EC Extra driver for OaktrailYin Kangkai2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This driver implements an Extra ACPI EC driver for products based on Intel Oaktrail platform. This driver does below things: 1. registers itself in the Linux backlight control in /sys/class/backlight/intel_oaktrail/ 2. registers in the rfkill subsystem here: /sys/class/rfkill/rfkillX/ for these components: wifi, bluetooth, wwan (3g), gps Signed-off-by: Yin Kangkai <kangkai.yin@linux.intel.com> [Extracted from a bigger patch by Yin Kangkai, this version leaves out some sysfs bits that probably want to be driver managed, and ACPI i2c enumeration] Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * thinkpad_acpi: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt. Removed local TPACPI_<level> #defines, convert to pr_<level>. Neaten dbg_<foo> macros. Added a few missing newlines to logging messages. Added static inline str_supported for !CONFIG_THINKPAD_ACPI_DEBUG vdbg_printk defect reported by Sedat Dilek <sedat.dilek@googlemail.com>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * thinkpad_acpi: Correct !CONFIG_THINKPAD_ACPI_VIDEO warningJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Move TPACPI_HANDLE declaration into #ifdef block and neaten it a bit. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * platform-x86: intel_mid_thermal: Fix coding styleAmeya Palande2011-05-27
| | | | | | | | | | | | | | | | | | | | | Before fixing checkpatch.pl reported 74 errors and 234 warnings Signed-off-by: Ameya Palande <ameya.palande@nokia.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * xo15-ebook: Use pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the current logging styles. Remove local #define PREFIX. Add pr_fmt. Convert printk to pr_<level>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * wmi: Removed trailing whitespace from logging message.Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | Just neatening. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * toshiba: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt. Remove local MY_<foo> #defines. Convert printks to pr_<level>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * topstar-laptop: Convert remaining printk to pr_infoJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | To be similar to all other uses. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * tc1100-wmi: Add pr_fmt, use pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Use the more normal logging styles. Removed now unused local logging #defines. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * sony-laptop: Add and use #define pr_fmtJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt. Remove now unused #define DRV_PRX. Neaten dprintk macro. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * msi-wmi: Use pr_fmt and pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added pr_fmt. Removed now unused #define DRV_PFX Convert dprintk to pr_debug. Convert printks to pr_<level>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * msi-laptop: pr_<level> neateningJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | Just making it a bit more like other logging message uses. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * intel_pmic_gpio: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add #define pr_fmt(fmt) "%s: " fmt, __func__ to prefix function name to each output message. Convert printks to pr_<level>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * intel_menlow: Add pr_fmt and use pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt to prefix the logging messages. Convert printk to pr_<level>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * ideapad-laptop: Add pr_fmtJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | Add pr_fmt to prefix logging messages. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * ibm_rtl: Use pr_fmt and pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Remove hard coded prefixes from logging messages. Neaten RTL_DEBUG macro and uses. Convert __FUNCTION__ to __func__. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * hp-wmi: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Added pr_fmt and converted printks to pr_<level>. Removed now unused PREFIX and UNIMPL #defines. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * hdaps: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Added pr_fmt, converted printks and removed hard coded prefixes. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * fujitsu-laptop: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Added pr_fmt, converted printks and removed hard coded prefixes. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * eeepc: Use pr_warnJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Just a trivial pr_warning to pr_warn conversion while adding a few missing newlines. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * dell: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt. Remove hard coded prefixes and use pr_<level>. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * compal-laptop: Convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt. Convert printks to pr_<level> removing DRIVER_NAME prefix. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * asus: Add pr_fmt and convert printks to pr_<level>Joe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add pr_fmt, prefixes each log message. Convert printks to pr_<level>. Convert pr_warning to pr_warn. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * acer-wmi: pr_<level> cleanupsJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | | | | Convert pr_warning to pr_warn. Add some missing newlines to pr_<level> uses. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * ibm_rtl: Remove warnings from casts of pointer to intJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | Just print them as %p. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
| | * asus-wmi: Remove __init from asus_wmi_platform_initJoe Perches2011-05-27
| | | | | | | | | | | | | | | | | | | | | It's used by a non-init function. Signed-off-by: Joe Perches <joe@perches.com> Signed-off-by: Matthew Garrett <mjg@redhat.com>
* | | Merge git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dmLinus Torvalds2011-05-29
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm: dm kcopyd: return client directly and not through a pointer dm kcopyd: reserve fewer pages dm io: use fixed initial mempool size dm kcopyd: alloc pages from the main page allocator dm kcopyd: add gfp parm to alloc_pl dm kcopyd: remove superfluous page allocation spinlock dm kcopyd: preallocate sub jobs to avoid deadlock dm kcopyd: avoid pointless job splitting dm mpath: do not fail paths after integrity errors dm table: reject devices without request fns dm table: allow targets to support discards internally
| * | | dm kcopyd: return client directly and not through a pointerMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Return client directly from dm_kcopyd_client_create, not through a parameter, making it consistent with dm_io_client_create. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * | | dm kcopyd: reserve fewer pagesMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reserve just the minimum of pages needed to process one job. Because we allocate pages from page allocator, we don't need to reserve a large number of pages. The maximum job size is SUB_JOB_SIZE and we calculate the number of reserved pages based on this. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * | | dm io: use fixed initial mempool sizeMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the arbitrary calculation of an initial io struct mempool size with a constant. The code calculated the number of reserved structures based on the request size and used a "magic" multiplication constant of 4. This patch changes it to reserve a fixed number - itself still chosen quite arbitrarily. Further testing might show if there is a better number to choose. Note that if there is no memory pressure, we can still allocate an arbitrary number of "struct io" structures. One structure is enough to process the whole request. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * | | dm kcopyd: alloc pages from the main page allocatorMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes dm-kcopyd so that it allocates pages from the main page allocator with __GFP_NOWARN | __GFP_NORETRY flags (so that it can fail in case of memory pressure). If the allocation fails, dm-kcopyd allocates pages from its own reserve. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * | | dm kcopyd: add gfp parm to alloc_plMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Introduce a parameter for gfp flags to alloc_pl() for use in following patches. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * | | dm kcopyd: remove superfluous page allocation spinlockMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove the spinlock protecting the pages allocation. The spinlock is only taken on initialization or from single-threaded workqueue. Therefore, the spinlock is useless. The spinlock is taken in kcopyd_get_pages and kcopyd_put_pages. kcopyd_get_pages is only called from run_pages_job, which is only called from process_jobs called from do_work. kcopyd_put_pages is called from client_alloc_pages (which is initialization function) or from run_complete_job. run_complete_job is only called from process_jobs called from do_work. Another spinlock, kc->job_lock is taken each time someone pushes or pops some work for the worker thread. Once we take kc->job_lock, we guarantee that any written memory is visible to the other CPUs. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
| * | | dm kcopyd: preallocate sub jobs to avoid deadlockMikulas Patocka2011-05-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a possible theoretical deadlock in dm-kcopyd because multiple allocations from the same mempool are required to finish a request. Avoid this by preallocating sub jobs. There is a mempool of 512 entries. Each request requires up to 9 entries from the mempool. If we have at least 57 concurrent requests running, the mempool may overflow and mempool allocations may start blocking until another entry is freed to the mempool. Because the same thread is used to free entries to the mempool and allocate entries from the mempool, this may result in a deadlock. This patch changes it so that one mempool entry contains all 9 "struct kcopyd_job" required to fulfill the whole request. The allocation is done only once in dm_kcopyd_copy and no further mempool allocations are done during request processing. If dm_kcopyd_copy is not run in the completion thread, this implementation is deadlock-free. MIN_JOBS needs reducing accordingly and we've chosen to reduce it further to 8. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>