1. 06 10月, 2012 1 次提交
  2. 22 9月, 2012 5 次提交
  3. 14 9月, 2012 8 次提交
  4. 02 9月, 2012 1 次提交
  5. 21 8月, 2012 3 次提交
  6. 18 8月, 2012 9 次提交
    • C
      classmate-laptop: always call input_sync() after input_report_switch() · ad20c73b
      Carlos Alberto Lopez Perez 提交于
      Due to commit cdda911c evdev only
      becomes readable when the buffer contains an EV_SYN/SYN_REPORT event.
      
      So in order to read the tablet sensor data as it happens we need to
      ensure that we always call input_sync() after input_report_switch()
      Signed-off-by: NCarlos Alberto Lopez Perez <clopez@igalia.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      ad20c73b
    • 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
    • A
      dell-laptop: Fixed typo in touchpad LED quirk · a2174ba2
      AceLan Kao 提交于
      Fixed the typo introduced from the below commit
      5f1e88f4 dell-laptop: Add 6 machines to touchpad led quirk
      Reported-by: NCarlos Alberto Lopez Perez <clopez@igalia.com>
      Signed-off-by: NAceLan Kao <acelan.kao@canonical.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      a2174ba2
    • A
      apple-gmux: Add display mux support · 76b487dd
      Andreas Heider 提交于
      Add support for the gmux display muxing functionality and register a mux
      handler with vga_switcheroo.
      Signed-off-by: NAndreas Heider <andreas@meetr.de>
      Signed-off-by: NSeth Forshee <seth.forshee@canonical.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      76b487dd
    • S
      apple-gmux: Fix kconfig dependencies · f94f0f10
      Seth Forshee 提交于
      Fix the dependencies of apple-gmux to prevent it from being built-in
      when one or more of its dependencies is built as a module. Otherwise it
      can fail to build due to missing symbols.
      
      v2: Add dependency on ACPI to fix build failure when ACPI=n
      Reported-by: NArun Raghavan <arun.raghavan@collabora.co.uk>
      Signed-off-by: NSeth Forshee <seth.forshee@canonical.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      f94f0f10
    • A
      asus-wmi: record wlan status while controlled by userapp · a50bd128
      AceLan Kao 提交于
      If the user bit is set, that mean BIOS can't set and record the wlan
      status, it will report the value read from id ASUS_WMI_DEVID_WLAN_LED
      (0x00010012) while we query the wlan status by id ASUS_WMI_DEVID_WLAN
      (0x00010011) through WMI.
      So, we have to record wlan status in id ASUS_WMI_DEVID_WLAN_LED
      (0x00010012) while setting the wlan status through WMI.
      This is also the behavior that windows app will do.
      
      Quote from ASUS application engineer
      ===
      When you call WMIMethod(DSTS, 0x00010011) to get WLAN status, it may return
      
      (1) 0x00050001 (On)
      (2) 0x00050000 (Off)
      (3) 0x00030001 (On)
      (4) 0x00030000 (Off)
      (5) 0x00000002 (Unknown)
      
      (1), (2) means that the model has hardware GPIO for WLAN, you can call
      WMIMethod(DEVS, 0x00010011, 1 or 0) to turn WLAN on/off.
      (3), (4) means that the model doesn’t have hardware GPIO, you need to use
      API or driver library to turn WLAN on/off, and call
      WMIMethod(DEVS, 0x00010012, 1 or 0) to set WLAN LED status.
      After you set WLAN LED status, you can see the WLAN status is changed with
      WMIMethod(DSTS, 0x00010011). Because the status is recorded lastly
      (ex: Windows), you can use it for synchronization.
      (5) means that the model doesn’t have WLAN device.
      
      WLAN is the ONLY special case with upper rule.
      
      For other device, like Bluetooth, you just need use
      WMIMethod(DSTS, 0x00010013) to get, and WMIMethod(DEVS, 0x00010013, 1 or 0)
      to set.
      ===
      Signed-off-by: NAceLan Kao <acelan.kao@canonical.com>
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      a50bd128
    • M
      apple_gmux: Fix ACPI video unregister · 9f6f955a
      Matthew Garrett 提交于
      We were only calling acpi_video_unregister() if ACPI video support was built
      in, not if it was a module.
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      9f6f955a
    • M
      apple_gmux: Add support for newer hardware · 96ff7056
      Matthew Garrett 提交于
      New gmux devices have a different method for accessing the registers.
      Update the driver to cope. Incorporates feedback from Bernhard Froemel.
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      Cc: Bernhard Froemel <froemel@vmars.tuwien.ac.at>
      Cc: Seth Forshee <seth.forshee@canonical.com>
      96ff7056
    • M
      gmux: Add generic write32 function · 7e30ed6b
      Matthew Garrett 提交于
      Move the special-cased backlight update function to a generic gmux_write32
      function.
      Signed-off-by: NMatthew Garrett <mjg@redhat.com>
      Cc: Seth Forshee <seth.forshee@canonical.com>
      7e30ed6b
  7. 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
  8. 10 8月, 2012 1 次提交
  9. 01 8月, 2012 8 次提交
  10. 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