1. 21 11月, 2013 1 次提交
  2. 17 10月, 2013 1 次提交
  3. 16 10月, 2013 1 次提交
    • A
      thinkpad-acpi: fix handle locate for video and query of _BCL · 46445b6b
      Aaron Lu 提交于
      The tpacpi_acpi_handle_locate function makes use of acpi_get_devices to
      locate handle for ACPI video by HID, the problem is, ACPI video node
      doesn't really have HID defined(i.e. no _HID control method is defined
      for video device), so.. that function would fail. This can be solved by
      enhancing the callback function for acpi_get_devices, where we can use
      acpi_device_hid function to check if the ACPI node corresponds to a
      video controller.
      
      In addition to that, the _BCL control method only exists under a video
      output device node, not a video controller device node. So to evaluate
      _BCL, we need the handle of a video output device node, which is child
      of the located video controller node from tpacpi_acpi_handle_locate.
      
      The two fix are necessary for some Thinkpad models to emit notification
      on backlight hotkey press as a result of evaluation of _BCL.
      Signed-off-by: NAaron Lu <aaron.lu@intel.com>
      Tested-by: NIgor Gnatenko <i.gnatenko.brain@gmail.com>
      Acked-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      46445b6b
  4. 05 9月, 2013 2 次提交
  5. 15 7月, 2013 2 次提交
  6. 18 4月, 2013 1 次提交
  7. 10 4月, 2013 1 次提交
    • A
      procfs: new helper - PDE_DATA(inode) · d9dda78b
      Al Viro 提交于
      The only part of proc_dir_entry the code outside of fs/proc
      really cares about is PDE(inode)->data.  Provide a helper
      for that; static inline for now, eventually will be moved
      to fs/proc, along with the knowledge of struct proc_dir_entry
      layout.
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      d9dda78b
  8. 27 2月, 2013 1 次提交
    • R
      drivers/platform/x86/thinkpad_acpi.c: Handle HKEY event 0x6040 · 6f62bc3e
      Richard Hartmann 提交于
      Handle HKEY event generated on AC power change. The current message
      asks users to submit data related to this event which leads to
      a lot of confusion and noise on the mailing list.
      
      The following is a list affected models and 'Message-Id'
      from ibm-acpi-devel@lists.sourceforge.net of people who saw this
      event when either plugging or unplugging the AC adapter or
      docking or undocking their laptop.
      
      X120e - CAAAujb5v9dHdbdxDVvhNJoG4UrZC1TgKqeB_zGpAy7q8kZHMEQ@mail.gmail.com
      X121e - 20120817143459.GB3462@x1.osrc.amd.com
      X220  - Confirmed by Richard Hartmann
      X220i - 4F406274.7070807@gmail.com
      X220t - 4F489F5B.9040705@cs.tu-berlin.de
      X230  - CAKx4u7kqvVH0-gstomsiVYdGC0i6=bGxzaQ8sq9gbg76TGme3w@mail.gmail.com
      T420  - 9c848ee30b006737d0534d906bab0cf6@niklaas-baudet.net
      T420s - 20120608080824.GS25324@hexapodia.org
      W520  - 20121008181050.GF2549@ericlaptop.home.christensenplace.us
      Signed-off-by: NRichard Hartmann <richih.mailinglist@gmail.com>
      Signed-off-by: NMatthew Garrett <matthew.garrett@nebula.com>
      6f62bc3e
  9. 25 2月, 2013 1 次提交
    • M
      thinkpad-acpi: enable loading module with new B-series Lenovo BIOS · 16a3d9f5
      Manoj Iyer 提交于
      The new B series BIOS has version string 43CN46WW. The driver
      requires that 2nd and 3rd characters be 'E' and 'T' respectively,
      where as the newer BIOS has 'C' and 'N' respectively. Failing to
      load the module causes some of the hotkeys to not work.
      
      Before the patch
      ================
      sudo modprobe thinkpad_acpi
      FATAL: Error inserting thinkpad_acpi (/lib/modules/3.5.0-15-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko): No such device
      
      After the patch
      ===============
      [44937.265438] thinkpad_acpi: ThinkPad ACPI Extras v0.24
      [44937.265445] thinkpad_acpi: http://ibm-acpi.sf.net/
      [44937.265449] thinkpad_acpi: ThinkPad BIOS 43CN46WW, EC unknown
      [44937.265453] thinkpad_acpi: Lenovo Lenovo B470e, model HuronRiver Platform
      [44937.266479] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
      [44937.266557] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
      [44937.267846] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
      [44937.268131] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input17
      Signed-off-by: NManoj Iyer <manoj.iyer@canonical.com>
      Tested-by: NJames Ferguson <james.ferguson@canonical.com>
      Signed-off-by: NMatthew Garrett <matthew.garrett@nebula.com>
      16a3d9f5
  10. 23 2月, 2013 1 次提交
  11. 04 1月, 2013 1 次提交
    • G
      Drivers: platform: x86: remove __dev* attributes. · b859f159
      Greg Kroah-Hartman 提交于
      CONFIG_HOTPLUG is going away as an option.  As a result, the __dev*
      markings need to be removed.
      
      This change removes the use of __devinit, __devexit_p, __devinitdata,
      __devinitconst, and __devexit from these drivers.
      
      Based on patches originally written by Bill Pemberton, but redone by me
      in order to handle some of the coding style issues better, by hand.
      
      Cc: Bill Pemberton <wfp5p@virginia.edu>
      Cc: Joey Lee <jlee@novell.com>
      Cc: Matthew Garrett <mjg@redhat.com>
      Cc: Peter Feuerer <peter@piie.net>
      Cc: Corentin Chary <corentin.chary@gmail.com>
      Cc: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
      Cc: Robert Gerlach <khnz@gmx.de>
      Cc: Ike Panhc <ike.pan@canonical.com>
      Cc: Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b859f159
  12. 29 12月, 2012 1 次提交
  13. 06 10月, 2012 1 次提交
  14. 14 9月, 2012 1 次提交
  15. 18 8月, 2012 1 次提交
    • M
      thinkpad-acpi: recognize latest V-Series using DMI_BIOS_VENDOR · a4f46bb9
      Manoj Iyer 提交于
      In the latest V-series bios DMI_PRODUCT_VERSION does not contain
      the string Lenovo or Thinkpad, but is set to the model number, this
      causes the thinkpad_acpi module to fail to load. Recognize laptop
      as Lenovo using DMI_BIOS_VENDOR instead, which is set to Lenovo.
      
      Test on V490u
      =============
      == After the patch ==
      
      [ 1350.295757] thinkpad_acpi: ThinkPad ACPI Extras v0.24
      [ 1350.295760] thinkpad_acpi: http://ibm-acpi.sf.net/
      [ 1350.295761] thinkpad_acpi: ThinkPad BIOS H7ET21WW (1.00 ), EC unknown
      [ 1350.295763] thinkpad_acpi: Lenovo LENOVO, model LV5DXXX
      [ 1350.296086] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
      [ 1350.296694] thinkpad_acpi: radio switch found; radios are enabled
      [ 1350.296703] thinkpad_acpi: possible tablet mode switch found; ThinkPad in laptop mode
      [ 1350.306466] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
      [ 1350.307082] Registered led device: tpacpi::thinklight
      [ 1350.307215] Registered led device: tpacpi::power
      [ 1350.307255] Registered led device: tpacpi::standby
      [ 1350.307294] Registered led device: tpacpi::thinkvantage
      [ 1350.308160] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
      [ 1350.308333] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
      [ 1350.312287] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input14
      
      == Before the patch ==
      sudo modprobe thinkpad_acpi
      FATAL: Error inserting thinkpad_acpi (/lib/modules/3.2.0-27-generic/kernel/drivers/platform/x86/thinkpad_acpi.ko): No such device
      
      Test on B485
      =============
      This patch was also test in a B485 where the thinkpad_acpi module does not
      have any issues loading. But, I tested it to make sure this patch does not
      break on already functioning models of Lenovo products.
      
      [13486.746359] thinkpad_acpi: ThinkPad ACPI Extras v0.24
      [13486.746364] thinkpad_acpi: http://ibm-acpi.sf.net/
      [13486.746368] thinkpad_acpi: ThinkPad BIOS HJET15WW(1.01), EC unknown
      [13486.746373] thinkpad_acpi: Lenovo Lenovo LB485, model 814TR01
      [13486.747300] thinkpad_acpi: detected a 8-level brightness capable ThinkPad
      [13486.752435] thinkpad_acpi: rfkill switch tpacpi_bluetooth_sw: radio is unblocked
      [13486.752883] Registered led device: tpacpi::thinklight
      [13486.752915] thinkpad_acpi: Standard ACPI backlight interface available, not loading native one
      [13486.753216] thinkpad_acpi: Console audio control enabled, mode: monitor (read only)
      [13486.757147] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input15
      Signed-off-by: NManoj Iyer <manoj.iyer@canonical.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      a4f46bb9
  16. 14 8月, 2012 1 次提交
    • T
      workqueue: use mod_delayed_work() instead of cancel + queue · 41f63c53
      Tejun Heo 提交于
      Convert delayed_work users doing cancel_delayed_work() followed by
      queue_delayed_work() to mod_delayed_work().
      
      Most conversions are straight-forward.  Ones worth mentioning are,
      
      * drivers/edac/edac_mc.c: edac_mc_workq_setup() converted to always
        use mod_delayed_work() and cancel loop in
        edac_mc_reset_delay_period() is dropped.
      
      * drivers/platform/x86/thinkpad_acpi.c: No need to remember whether
        watchdog is active or not.  @fan_watchdog_active and related code
        dropped.
      
      * drivers/power/charger-manager.c: Seemingly a lot of
        delayed_work_pending() abuse going on here.
        [delayed_]work_pending() are unsynchronized and racy when used like
        this.  I converted one instance in fullbatt_handler().  Please
        conver the rest so that it invokes workqueue APIs for the intended
        target state rather than trying to game work item pending state
        transitions.  e.g. if timer should be modified - call
        mod_delayed_work(), canceled - call cancel_delayed_work[_sync]().
      
      * drivers/thermal/thermal_sys.c: thermal_zone_device_set_polling()
        simplified.  Note that round_jiffies() calls in this function are
        meaningless.  round_jiffies() work on absolute jiffies not delta
        delay used by delayed_work.
      
      v2: Tomi pointed out that __cancel_delayed_work() users can't be
          safely converted to mod_delayed_work().  They could be calling it
          from irq context and if that happens while delayed_work_timer_fn()
          is running, it could deadlock.  __cancel_delayed_work() users are
          dropped.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NHenrique de Moraes Holschuh <hmh@hmh.eng.br>
      Acked-by: NDmitry Torokhov <dmitry.torokhov@gmail.com>
      Acked-by: NAnton Vorontsov <cbouatmailru@gmail.com>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Jiri Kosina <jkosina@suse.cz>
      Cc: Doug Thompson <dougthompson@xmission.com>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Roland Dreier <roland@kernel.org>
      Cc: "John W. Linville" <linville@tuxdriver.com>
      Cc: Zhang Rui <rui.zhang@intel.com>
      Cc: Len Brown <len.brown@intel.com>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Cc: Johannes Berg <johannes@sipsolutions.net>
      41f63c53
  17. 10 8月, 2012 1 次提交
  18. 28 7月, 2012 3 次提交
    • L
      thinkpad_acpi: Free hotkey_keycode_map after unregistering tpacpi_inputdev · 00d39597
      Li Dongyang 提交于
      We should free hotkey_keycode_map after unregistering tpacpi_inputdev, to aviod
      use after free like this:
      
      [   99.408388] =============================================================================
      [   99.408393] BUG kmalloc-64 (Not tainted): Poison overwritten
      [   99.408394] -----------------------------------------------------------------------------
      [   99.408394]
      [   99.408398] INFO: 0xf2751962-0xf2751995. First byte 0x98 instead of 0x6b
      [   99.408402] INFO: Allocated in 0xfdc88c28 age=79 cpu=0 pid=1329
      [   99.408407]  __slab_alloc.isra.50.constprop.56+0x49f/0x533
      [   99.408410]  kmem_cache_alloc_trace+0x10d/0x140
      [   99.408412]  0xfdc88c28
      [   99.408414]  0xfdc898cc
      [   99.408417]  do_one_initcall+0x112/0x160
      [   99.408420]  sys_init_module+0xe6d/0x1bc0
      [   99.408422]  sysenter_do_call+0x12/0x28
      [   99.408427] INFO: Freed in hotkey_exit+0x50/0xb0 [thinkpad_acpi] age=14 cpu=1 pid=1333
      [   99.408429]  __slab_free+0x3d/0x30b
      [   99.408431]  kfree+0x129/0x140
      [   99.408435]  hotkey_exit+0x50/0xb0 [thinkpad_acpi]
      [   99.408438]  ibm_exit+0xe3/0x1a0 [thinkpad_acpi]
      [   99.408441]  thinkpad_acpi_module_exit+0x35/0x208 [thinkpad_acpi]
      [   99.408443]  sys_delete_module+0x11f/0x280
      [   99.408445]  sysenter_do_call+0x12/0x28
      [   99.408447] INFO: Slab 0xf4d5ea20 objects=17 used=17 fp=0x  (null) flags=0x40000080
      [   99.408449] INFO: Object 0xf2751960 @offset=2400 fp=0xf2751780
      [   99.408449]
      [   99.408452] Bytes b4 f2751950: 64 02 00 00 ae ce fe ff 5a 5a 5a 5a 5a 5a 5a 5a  d.......ZZZZZZZZ
      [   99.408454] Object f2751960: 6b 6b 98 00 ec 00 8e 00 ee 00 6b 6b e3 00 bf 00 kk........kk....
      [   99.408456] Object f2751970: c2 00 6b 6b 6b 6b cd 00 6b 6b 6b 6b 6b 6b e1 00 ..kkkk..kkkkkk..
      [   99.408458] Object f2751980: e0 00 e4 00 6b 6b 74 01 73 00 72 00 71 00 94 00 ....kkt.s.r.q...
      [   99.408460] Object f2751990: 6b 6b 6b 6b f8 00 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkk..kkkkkkkkk.
      [   99.408462] Redzone f27519a0: bb bb bb bb ....
      Signed-off-by: NLi Dongyang <Jerry87905@gmail.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      00d39597
    • L
      thinkpad_acpi: Fix a memory leak during module exit · d2be15bd
      Li Dongyang 提交于
      We should free the thinkpad_id.nummodel_str during exit as it's allocated
      in get_thinkpad_module_data().
      Signed-off-by: NLi Dongyang <Jerry87905@gmail.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      d2be15bd
    • L
      thinkpad_acpi: Flush the workqueue before freeing tpacpi_leds · e03e389d
      Li Dongyang 提交于
      We init work_struct within tpacpi_leds, and we should free tpacpi_leds after
      the workqueue is empty, in case of the work_struct is referenced after free.
      
      This script could trigger the OOPS:
      
      #!/bin/sh
      
      while true
      do
          modprobe -r thinkpad_acpi
          modprobe thinkpad_acpi
      done
      
      And the OOPS looks like this:
      
      [   73.863557] BUG: unable to handle kernel paging request at 45440000
      [   73.863925] IP: [<c1051d65>] process_one_work+0x25/0x3b0
      [   73.864749] *pde = 00000000
      [   73.865571] Oops: 0000 [#1] PREEMPT SMP
      [   73.866443] Modules linked in: thinkpad_acpi(-) nvram netconsole configfs
      aes_i586 cryptd aes_generic joydev btusb bluetooth arc4 snd_hda_codec_analog
      iwl4965 uhci_hcd pcmcia microcode iwlegacy mac80211 cfg80211 firewire_ohci
      firewire_core kvm_intel kvm snd_hda_intel acpi_cpufreq mperf ehci_hcd yenta_socket
      pcmcia_rsrc crc_itu_t sr_mod snd_hda_codec processor pcmcia_core i2c_i801 usbcore
      lpc_ich cdrom serio_raw psmouse coretemp rfkill e1000e snd_pcm snd_page_alloc
      snd_hwdep snd_timer snd pcspkr evdev ac battery thermal soundcore usb_common
      intel_agp intel_gtt tp_smapi(O) thinkpad_ec(O) ext4 crc16 jbd2 mbcache sd_mod
      ata_piix ahci libahci libata scsi_mod nouveau button video mxm_wmi wmi
      i2c_algo_bit drm_kms_helper ttm drm agpgart i2c_core [last unloaded: nvram]
       [   73.866676]
       [   73.866676] Pid: 62, comm: kworker/u:4 Tainted: G           O 3.5.0-1-ARCH
       #1 LENOVO 7662CTO/7662CTO
       [   73.866676] EIP: 0060:[<c1051d65>] EFLAGS: 00010002 CPU: 1
       [   73.866676] EIP is at process_one_work+0x25/0x3b0
       [   73.866676] EAX: 45440065 EBX: f5545090 ECX: 00000088 EDX: 45440000
       [   73.866676] ESI: f568ff40 EDI: c164dd40 EBP: f5705f98 ESP: f5705f68
       [   73.866676]  DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
       [   73.866676] CR0: 8005003b CR2: 45440000 CR3: 357ed000 CR4: 000007d0
       [   73.866676] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
       [   73.866676] DR6: ffff0ff0 DR7: 00000400
       [   73.866676] Process kworker/u:4 (pid: 62, ti=f5704000 task=f5700540 task.ti=f5704000)
       [   73.866676] Stack:
       [   73.866676]  f56fbf24 00000001 f5705f78 c10683e0 c1294950 00000000 00000000 f568ff40
       [   73.866676]  00000000 f568ff40 f568ff50 c164dd40 f5705fb8 c1052589 c1060c7e c15b9300
       [   73.866676]  c164dd40 00000000 f568ff40 c1052490 f5705fe4 c10570b2 00000000 f568ff40
       [   73.866676] Call Trace:
       [   73.866676]  [<c10683e0>] ? default_wake_function+0x10/0x20
       [   73.866676]  [<c1294950>] ? dev_get_drvdata+0x20/0x20
       [   73.866676]  [<c1052589>] worker_thread+0xf9/0x280
       [   73.866676]  [<c1060c7e>] ? complete+0x4e/0x60
       [   73.866676]  [<c1052490>] ? manage_workers.isra.24+0x1c0/0x1c0
       [   73.866676]  [<c10570b2>] kthread+0x72/0x80
       [   73.866676]  [<c1057040>] ? kthread_freezable_should_stop+0x50/0x50
       [   73.866676]  [<c13c20fe>] kernel_thread_helper+0x6/0x10
       [   73.866676] Code: bc 27 00 00 00 00 55 89 e5 57 56 53 83 ec 24 3e 8d 74 26
       00 89 c6 8b 02 89 d3 c7 45 f0 00 00 00 00 89 c2 30 d2 a8 04 0f 44 55 f0 <8b> 02 89 55 f0 89 da c1 ea
       0a 89 45 ec 89 d8 8b 4d ec c1 e8 04
       [   73.866676] EIP: [<c1051d65>] process_one_work+0x25/0x3b0 SS:ESP 0068:f5705f68
       [   73.866676] CR2: 0000000045440000
       [   73.866676] ---[ end trace 4d8a1887edca08c5 ]---
       [   73.866676] note: kworker/u:4[62] exited with preempt_count 1
      Signed-off-by: NLi Dongyang <Jerry87905@gmail.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      e03e389d
  19. 01 7月, 2012 2 次提交
  20. 01 6月, 2012 1 次提交
  21. 27 3月, 2012 1 次提交
  22. 13 1月, 2012 1 次提交
  23. 04 1月, 2012 1 次提交
  24. 22 11月, 2011 1 次提交
    • T
      freezer: implement and use kthread_freezable_should_stop() · 8a32c441
      Tejun Heo 提交于
      Writeback and thinkpad_acpi have been using thaw_process() to prevent
      deadlock between the freezer and kthread_stop(); unfortunately, this
      is inherently racy - nothing prevents freezing from happening between
      thaw_process() and kthread_stop().
      
      This patch implements kthread_freezable_should_stop() which enters
      refrigerator if necessary but is guaranteed to return if
      kthread_stop() is invoked.  Both thaw_process() users are converted to
      use the new function.
      
      Note that this deadlock condition exists for many of freezable
      kthreads.  They need to be converted to use the new should_stop or
      freezable workqueue.
      
      Tested with synthetic test case.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Acked-by: NHenrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
      Cc: Jens Axboe <axboe@kernel.dk>
      Cc: Oleg Nesterov <oleg@redhat.com>
      8a32c441
  25. 07 10月, 2011 1 次提交
  26. 06 8月, 2011 1 次提交
  27. 07 7月, 2011 2 次提交
  28. 28 5月, 2011 2 次提交
  29. 09 5月, 2011 1 次提交
  30. 12 4月, 2011 1 次提交
    • K
      thinkpad-acpi fails to load with newer Thinkpad X201s BIOS · b569ab39
      Keith Packard 提交于
      The new BIOS has a slightly different EC version string.
      
      From a1541710300b083a1a9acff2890d721d15ede62b Mon Sep 17 00:00:00 2001
      From: Keith Packard <keithp@keithp.com>
      Date: Sun, 13 Mar 2011 23:46:22 -0700
      Subject: [PATCH] thinkpad-acpi: Some BIOS versions don't end in WW, remove check
      
      My X201s BIOS version string is 6QET46V1 (1.16 ). The
      EC version string is 6QHT28WW-1.09. The driver was requiring that both
      of these have 'WW' in positions 6 and 7. I don't know what the
      significance of having 'V1' there instead is, but removing the test
      makes the driver load on my machine.
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      b569ab39
  31. 28 3月, 2011 1 次提交
  32. 23 3月, 2011 1 次提交
  33. 22 2月, 2011 1 次提交