1. 25 3月, 2016 2 次提交
  2. 24 3月, 2016 38 次提交
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · aca04ce5
      Linus Torvalds 提交于
      Pull networking bugfixes from David Miller:
       "Several bug fixes rolling in, some for changes introduced in this
        merge window, and some for problems that have existed for some time:
      
        1) Fix prepare_to_wait() handling in AF_VSOCK, from Claudio Imbrenda.
      
        2) The new DST_CACHE should be a silent config option, from Dave
           Jones.
      
        3) inet_current_timestamp() unintentionally truncates timestamps to
           16-bit, from Deepa Dinamani.
      
        4) Missing reference to netns in ppp, from Guillaume Nault.
      
        5) Free memory reference in hv_netvsc driver, from Haiyang Zhang.
      
        6) Missing kernel doc documentation for function arguments in various
           spots around the networking, from Luis de Bethencourt.
      
        7) UDP stopped receiving broadcast packets properly, due to
           overzealous multicast checks, fix from Paolo Abeni"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (59 commits)
        net: ping: make ping_v6_sendmsg static
        hv_netvsc: Fix the order of num_sc_offered decrement
        net: Fix typos and whitespace.
        hv_netvsc: Fix the array sizes to be max supported channels
        hv_netvsc: Fix accessing freed memory in netvsc_change_mtu()
        ppp: take reference on channels netns
        net: Reset encap_level to avoid resetting features on inner IP headers
        net: mediatek: fix checking for NULL instead of IS_ERR() in .probe
        net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY
        at803x: fix reset handling
        AF_VSOCK: Shrink the area influenced by prepare_to_wait
        Revert "vsock: Fix blocking ops call in prepare_to_wait"
        macb: fix PHY reset
        ipv4: initialize flowi4_flags before calling fib_lookup()
        fsl/fman: Workaround for Errata A-007273
        ipv4: fix broadcast packets reception
        net: hns: bug fix about the overflow of mss
        net: hns: adds limitation for debug port mtu
        net: hns: fix the bug about mtu setting
        net: hns: fixes a bug of RSS
        ...
      aca04ce5
    • H
      net: ping: make ping_v6_sendmsg static · 6579a023
      Haishuang Yan 提交于
      As ping_v6_sendmsg is used only in this file,
      making it static
      
      The body of "pingv6_prot" and "pingv6_protosw" were
      moved at the middle of the file, to avoid having to
      declare some static prototypes.
      Signed-off-by: NHaishuang Yan <yanhaishuang@cmss.chinamobile.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6579a023
    • H
      hv_netvsc: Fix the order of num_sc_offered decrement · 3f735131
      Haiyang Zhang 提交于
      Reorder the code in netvsc_sc_open(), so num_sc_offered is only decremented
      after vmbus_open() is called. This avoid pontential race of removing device
      before all channels are setup.
      Signed-off-by: NHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: NK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3f735131
    • L
      Merge tag 'platform-drivers-x86-v4.6-1' of... · 5a010c73
      Linus Torvalds 提交于
      Merge tag 'platform-drivers-x86-v4.6-1' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86
      
      Pull x86 platform driver updates from Darren Hart:
       "Significant refactoring of Dell laptop drivers, modularizing the
        smbios code.  Multiple new platforms added for ideapad, asus, dell,
        and alienware using existing quirks.  A few fixes and cleanups.
      
        hp-wmi:
         - Remove GPS rfkill support via pre-2009 interface
         - fix unregister order in hp_wmi_rfkill_setup() once again
      
        ideapad-laptop:
         - Add ideapad Y700 (15) to the no_hw_rfkill DMI list
      
        fujitsu-laptop:
         - Support radio toggle button
      
        intel-hid:
         - allocate correct amount of memory for private struct
      
        platform/x86:
         - Make intel_scu_ipc explicitly non-modular
      
        intel_pmc_ipc:
         - Avoid pending IPC1 command during legacy suspend
         - Fix GCR register base address and length
      
        asus-nb-wmi:
         - add wapf=4 quirk for ASUS X75VD
      
        intel_telemetry_pltdrv:
         - Change verbosity control bits
      
        dell-rbtn:
         - Add a comment about the XPS 13 9350
      
        dell-wmi, dell-laptop:
         - depends DMI
      
        dell-wmi:
         - support Dell Inspiron M5110
         - properly process Dell Instant Launch hotkey
         - enable receiving WMI events on Dell Vostro V131
         - Support new hotkeys on the XPS 13 9350 (Skylake)
         - Clean up hotkey table size check
         - Stop storing pointers to DMI tables
      
        dell-laptop:
         - move dell_smi_error() to dell-smbios
         - use dell_smbios_find_token() instead of find_token_location()
         - use dell_smbios_find_token() instead of find_token_id()
         - extract SMBIOS-related code to a separate module
      
        dell-smbios:
         - rename dell_smi_error() to dell_smbios_error()
         - make da_tokens static
         - remove find_token_{id,location}()
         - implement new function for finding DMI table 0xDA tokens
         - make the SMBIOS buffer static
         - return the SMBIOS buffer from dell_smbios_get_buffer()
         - don't return an SMBIOS buffer from dell_smbios_send_request()
         - don't pass an SMBIOS buffer to dell_smbios_send_request()
         - rename dell_send_request() to dell_smbios_send_request()
         - rename release_buffer() to dell_smbios_release_buffer()
         - rename clear_buffer() to dell_smbios_clear_buffer()
         - rename get_buffer() to dell_smbios_get_buffer()
      
        dell-led:
         - use dell_smbios_send_request() for performing SMBIOS calls
         - use dell_smbios_find_token() for finding mic DMI tokens
      
        toshiba_acpi:
         - Add a module parameter to disable hotkeys registration
         - Add sysfs entries for the Cooling Method feature
         - Add support for cooling method feature
      
        Documentation/ABI:
         - Update sysfs-driver-toshiba_acpi file
      
        thinkpad_acpi:
         - Remove ambiguous logging for "Unsupported brightness interface"
      
        alienware-wmi:
         - whitespace improvements
         - Add support for two new systems: ASM200 and ASM201.
         - Add support for deep sleep control.
         - Add initial support for alienware graphics amplifier.
         - Add support for new platform: X51-R3
         - Clean up whitespace for ASM100 platform"
      
      * tag 'platform-drivers-x86-v4.6-1' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86: (47 commits)
        hp-wmi: Remove GPS rfkill support via pre-2009 interface
        hp-wmi: fix unregister order in hp_wmi_rfkill_setup() once again
        dell-wmi: support Dell Inspiron M5110
        dell-wmi: properly process Dell Instant Launch hotkey
        dell-wmi: enable receiving WMI events on Dell Vostro V131
        dell-smbios: rename dell_smi_error() to dell_smbios_error()
        dell-laptop: move dell_smi_error() to dell-smbios
        ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list
        fujitsu-laptop: Support radio toggle button
        intel-hid: allocate correct amount of memory for private struct
        platform/x86: Make intel_scu_ipc explicitly non-modular
        intel_pmc_ipc: Avoid pending IPC1 command during legacy suspend
        intel_pmc_ipc: Fix GCR register base address and length
        asus-nb-wmi: add wapf=4 quirk for ASUS X75VD
        intel_telemetry_pltdrv: Change verbosity control bits
        dell-rbtn: Add a comment about the XPS 13 9350
        dell-wmi: Support new hotkeys on the XPS 13 9350 (Skylake)
        dell-wmi: Clean up hotkey table size check
        dell-wmi, dell-laptop: depends DMI
        dell-wmi: Stop storing pointers to DMI tables
        ...
      5a010c73
    • L
      Merge tag 'pwm/for-4.6-rc1' of... · b615d3d4
      Linus Torvalds 提交于
      Merge tag 'pwm/for-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm
      
      Pull pwm updates from Thierry Reding:
       "No new drivers this time around, but a handful of cleanups and fixes"
      
      * tag 'pwm/for-4.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm:
        pwm: omap-dmtimer: Add debug message for effective period and duty cycle
        pwm: omap-dmtimer: Round load and match values rather than truncate
        pwm: omap-dmtimer: Add sanity checking for load and match values
        pwm: omap-dmtimer: Fix inaccurate period and duty cycle calculations
        pwm: brcmstb: Fix check of devm_ioremap_resource() return code
        pwm: rcar: Depend on ARCH_RENESAS instead of ARCH_SHMOBILE
        pwm: lpc18xx-sct: Test clock rate to avoid division by 0
        pwm: img: Test clock rate to avoid division by 0
      b615d3d4
    • L
      Merge branch 'for-next-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · ed7d6bc2
      Linus Torvalds 提交于
      Pull more SCSI target updates from Nicholas Bellinger:
       "This series contains cxgb4 driver prerequisites for supporting iscsi
        segmentation offload (ISO), that will be utilized for a number of
        future v4.7 developments in iscsi-target for supporting generic hw
        offloads"
      
      * 'for-next-merge' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
        cxgb4: update Kconfig and Makefile
        cxgb4: add iSCSI DDP page pod manager
        cxgb4, iw_cxgb4: move delayed ack macro definitions
        cxgb4: move VLAN_NONE macro definition
        cxgb4: update struct cxgb4_lld_info definition
        cxgb4: add definitions for iSCSI target ULD
        cxgb4, cxgb4i: move struct cpl_rx_data_ddp definition
        cxgb4, iw_cxgb4, cxgb4i: remove duplicate definitions
        cxgb4, iw_cxgb4: move definitions to common header file
        cxgb4: large receive offload support
        cxgb4: allocate resources for CXGB4_ULD_ISCSIT
        cxgb4: add new ULD type CXGB4_ULD_ISCSIT
      ed7d6bc2
    • B
      net: Fix typos and whitespace. · 5e82b4b2
      Bjorn Helgaas 提交于
      Fix typos.  Capitalize CPU, NAPI, RCU consistently.  Align structure
      indentation.  No functional change intended; only comment and whitespace
      changes.
      Signed-off-by: NBjorn Helgaas <bhelgaas@google.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5e82b4b2
    • H
      hv_netvsc: Fix the array sizes to be max supported channels · 9efc2f7d
      Haiyang Zhang 提交于
      The VRSS_CHANNEL_MAX is the max number of channels supported by Hyper-V
      hosts. We use it for the related array sizes instead of using NR_CPUS,
      which may be set to several thousands.
      This patch reduces possible memory allocation failures.
      Signed-off-by: NHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: NK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9efc2f7d
    • H
      hv_netvsc: Fix accessing freed memory in netvsc_change_mtu() · d212b463
      Haiyang Zhang 提交于
      struct netvsc_device is freed in rndis_filter_device_remove(). So we save
      the nvdev->num_chn into a temp variable for later usage.
      
      (Please also include this patch into stable branch.)
      Signed-off-by: NHaiyang Zhang <haiyangz@microsoft.com>
      Reviewed-by: NK. Y. Srinivasan <kys@microsoft.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d212b463
    • G
      ppp: take reference on channels netns · 1f461dcd
      Guillaume Nault 提交于
      Let channels hold a reference on their network namespace.
      Some channel types, like ppp_async and ppp_synctty, can have their
      userspace controller running in a different namespace. Therefore they
      can't rely on them to preclude their netns from being removed from
      under them.
      
      ==================================================================
      BUG: KASAN: use-after-free in ppp_unregister_channel+0x372/0x3a0 at
      addr ffff880064e217e0
      Read of size 8 by task syz-executor/11581
      =============================================================================
      BUG net_namespace (Not tainted): kasan: bad access detected
      -----------------------------------------------------------------------------
      
      Disabling lock debugging due to kernel taint
      INFO: Allocated in copy_net_ns+0x6b/0x1a0 age=92569 cpu=3 pid=6906
      [<      none      >] ___slab_alloc+0x4c7/0x500 kernel/mm/slub.c:2440
      [<      none      >] __slab_alloc+0x4c/0x90 kernel/mm/slub.c:2469
      [<     inline     >] slab_alloc_node kernel/mm/slub.c:2532
      [<     inline     >] slab_alloc kernel/mm/slub.c:2574
      [<      none      >] kmem_cache_alloc+0x23a/0x2b0 kernel/mm/slub.c:2579
      [<     inline     >] kmem_cache_zalloc kernel/include/linux/slab.h:597
      [<     inline     >] net_alloc kernel/net/core/net_namespace.c:325
      [<      none      >] copy_net_ns+0x6b/0x1a0 kernel/net/core/net_namespace.c:360
      [<      none      >] create_new_namespaces+0x2f6/0x610 kernel/kernel/nsproxy.c:95
      [<      none      >] copy_namespaces+0x297/0x320 kernel/kernel/nsproxy.c:150
      [<      none      >] copy_process.part.35+0x1bf4/0x5760 kernel/kernel/fork.c:1451
      [<     inline     >] copy_process kernel/kernel/fork.c:1274
      [<      none      >] _do_fork+0x1bc/0xcb0 kernel/kernel/fork.c:1723
      [<     inline     >] SYSC_clone kernel/kernel/fork.c:1832
      [<      none      >] SyS_clone+0x37/0x50 kernel/kernel/fork.c:1826
      [<      none      >] entry_SYSCALL_64_fastpath+0x16/0x7a kernel/arch/x86/entry/entry_64.S:185
      
      INFO: Freed in net_drop_ns+0x67/0x80 age=575 cpu=2 pid=2631
      [<      none      >] __slab_free+0x1fc/0x320 kernel/mm/slub.c:2650
      [<     inline     >] slab_free kernel/mm/slub.c:2805
      [<      none      >] kmem_cache_free+0x2a0/0x330 kernel/mm/slub.c:2814
      [<     inline     >] net_free kernel/net/core/net_namespace.c:341
      [<      none      >] net_drop_ns+0x67/0x80 kernel/net/core/net_namespace.c:348
      [<      none      >] cleanup_net+0x4e5/0x600 kernel/net/core/net_namespace.c:448
      [<      none      >] process_one_work+0x794/0x1440 kernel/kernel/workqueue.c:2036
      [<      none      >] worker_thread+0xdb/0xfc0 kernel/kernel/workqueue.c:2170
      [<      none      >] kthread+0x23f/0x2d0 kernel/drivers/block/aoe/aoecmd.c:1303
      [<      none      >] ret_from_fork+0x3f/0x70 kernel/arch/x86/entry/entry_64.S:468
      INFO: Slab 0xffffea0001938800 objects=3 used=0 fp=0xffff880064e20000
      flags=0x5fffc0000004080
      INFO: Object 0xffff880064e20000 @offset=0 fp=0xffff880064e24200
      
      CPU: 1 PID: 11581 Comm: syz-executor Tainted: G    B           4.4.0+
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
      rel-1.8.2-0-g33fbe13 by qemu-project.org 04/01/2014
       00000000ffffffff ffff8800662c7790 ffffffff8292049d ffff88003e36a300
       ffff880064e20000 ffff880064e20000 ffff8800662c77c0 ffffffff816f2054
       ffff88003e36a300 ffffea0001938800 ffff880064e20000 0000000000000000
      Call Trace:
       [<     inline     >] __dump_stack kernel/lib/dump_stack.c:15
       [<ffffffff8292049d>] dump_stack+0x6f/0xa2 kernel/lib/dump_stack.c:50
       [<ffffffff816f2054>] print_trailer+0xf4/0x150 kernel/mm/slub.c:654
       [<ffffffff816f875f>] object_err+0x2f/0x40 kernel/mm/slub.c:661
       [<     inline     >] print_address_description kernel/mm/kasan/report.c:138
       [<ffffffff816fb0c5>] kasan_report_error+0x215/0x530 kernel/mm/kasan/report.c:236
       [<     inline     >] kasan_report kernel/mm/kasan/report.c:259
       [<ffffffff816fb4de>] __asan_report_load8_noabort+0x3e/0x40 kernel/mm/kasan/report.c:280
       [<     inline     >] ? ppp_pernet kernel/include/linux/compiler.h:218
       [<ffffffff83ad71b2>] ? ppp_unregister_channel+0x372/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
       [<     inline     >] ppp_pernet kernel/include/linux/compiler.h:218
       [<ffffffff83ad71b2>] ppp_unregister_channel+0x372/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
       [<     inline     >] ? ppp_pernet kernel/drivers/net/ppp/ppp_generic.c:293
       [<ffffffff83ad6f26>] ? ppp_unregister_channel+0xe6/0x3a0 kernel/drivers/net/ppp/ppp_generic.c:2392
       [<ffffffff83ae18f3>] ppp_asynctty_close+0xa3/0x130 kernel/drivers/net/ppp/ppp_async.c:241
       [<ffffffff83ae1850>] ? async_lcp_peek+0x5b0/0x5b0 kernel/drivers/net/ppp/ppp_async.c:1000
       [<ffffffff82c33239>] tty_ldisc_close.isra.1+0x99/0xe0 kernel/drivers/tty/tty_ldisc.c:478
       [<ffffffff82c332c0>] tty_ldisc_kill+0x40/0x170 kernel/drivers/tty/tty_ldisc.c:744
       [<ffffffff82c34943>] tty_ldisc_release+0x1b3/0x260 kernel/drivers/tty/tty_ldisc.c:772
       [<ffffffff82c1ef21>] tty_release+0xac1/0x13e0 kernel/drivers/tty/tty_io.c:1901
       [<ffffffff82c1e460>] ? release_tty+0x320/0x320 kernel/drivers/tty/tty_io.c:1688
       [<ffffffff8174de36>] __fput+0x236/0x780 kernel/fs/file_table.c:208
       [<ffffffff8174e405>] ____fput+0x15/0x20 kernel/fs/file_table.c:244
       [<ffffffff813595ab>] task_work_run+0x16b/0x200 kernel/kernel/task_work.c:115
       [<     inline     >] exit_task_work kernel/include/linux/task_work.h:21
       [<ffffffff81307105>] do_exit+0x8b5/0x2c60 kernel/kernel/exit.c:750
       [<ffffffff813fdd20>] ? debug_check_no_locks_freed+0x290/0x290 kernel/kernel/locking/lockdep.c:4123
       [<ffffffff81306850>] ? mm_update_next_owner+0x6f0/0x6f0 kernel/kernel/exit.c:357
       [<ffffffff813215e6>] ? __dequeue_signal+0x136/0x470 kernel/kernel/signal.c:550
       [<ffffffff8132067b>] ? recalc_sigpending_tsk+0x13b/0x180 kernel/kernel/signal.c:145
       [<ffffffff81309628>] do_group_exit+0x108/0x330 kernel/kernel/exit.c:880
       [<ffffffff8132b9d4>] get_signal+0x5e4/0x14f0 kernel/kernel/signal.c:2307
       [<     inline     >] ? kretprobe_table_lock kernel/kernel/kprobes.c:1113
       [<ffffffff8151d355>] ? kprobe_flush_task+0xb5/0x450 kernel/kernel/kprobes.c:1158
       [<ffffffff8115f7d3>] do_signal+0x83/0x1c90 kernel/arch/x86/kernel/signal.c:712
       [<ffffffff8151d2a0>] ? recycle_rp_inst+0x310/0x310 kernel/include/linux/list.h:655
       [<ffffffff8115f750>] ? setup_sigcontext+0x780/0x780 kernel/arch/x86/kernel/signal.c:165
       [<ffffffff81380864>] ? finish_task_switch+0x424/0x5f0 kernel/kernel/sched/core.c:2692
       [<     inline     >] ? finish_lock_switch kernel/kernel/sched/sched.h:1099
       [<ffffffff81380560>] ? finish_task_switch+0x120/0x5f0 kernel/kernel/sched/core.c:2678
       [<     inline     >] ? context_switch kernel/kernel/sched/core.c:2807
       [<ffffffff85d794e9>] ? __schedule+0x919/0x1bd0 kernel/kernel/sched/core.c:3283
       [<ffffffff81003901>] exit_to_usermode_loop+0xf1/0x1a0 kernel/arch/x86/entry/common.c:247
       [<     inline     >] prepare_exit_to_usermode kernel/arch/x86/entry/common.c:282
       [<ffffffff810062ef>] syscall_return_slowpath+0x19f/0x210 kernel/arch/x86/entry/common.c:344
       [<ffffffff85d88022>] int_ret_from_sys_call+0x25/0x9f kernel/arch/x86/entry/entry_64.S:281
      Memory state around the buggy address:
       ffff880064e21680: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff880064e21700: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      >ffff880064e21780: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                             ^
       ffff880064e21800: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
       ffff880064e21880: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
      ==================================================================
      
      Fixes: 273ec51d ("net: ppp_generic - introduce net-namespace functionality v2")
      Reported-by: NBaozeng Ding <sploving1@gmail.com>
      Signed-off-by: NGuillaume Nault <g.nault@alphalink.fr>
      Reviewed-by: NCyrill Gorcunov <gorcunov@openvz.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      1f461dcd
    • A
      net: Reset encap_level to avoid resetting features on inner IP headers · 5197f349
      Alexander Duyck 提交于
      This patch corrects an oversight in which we were allowing the encap_level
      value to pass from the outer headers to the inner headers.  As a result we
      were incorrectly identifying UDP or GRE tunnels as also making use of ipip
      or sit when the second header actually represented a tunnel encapsulated in
      either a UDP or GRE tunnel which already had the features masked.
      
      Fixes: 76443456 ("net: Move GSO csum into SKB_GSO_CB")
      Reported-by: NTom Herbert <tom@herbertland.com>
      Signed-off-by: NAlexander Duyck <aduyck@mirantis.com>
      Acked-by: NTom Herbert <tom@herbertland.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      5197f349
    • V
      net: mediatek: fix checking for NULL instead of IS_ERR() in .probe · 621e49f6
      Vladimir Zapolskiy 提交于
      devm_ioremap_resource() returns ERR_PTR() value on error, it never
      returns NULL, fix it and propagate the returned error upwards.
      
      Fixes: 656e7052 ("net-next: mediatek: add support for MT7623 ethernet")
      Signed-off-by: NVladimir Zapolskiy <vz@mleia.com>
      Reviewed-by: NMatthias Brugger <mbrugger@suse.com>
      Acked-by: NJohn Crispin <blogic@openwrt.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      621e49f6
    • S
      net: phy: at803x: Request 'reset' GPIO only for AT8030 PHY · 9eb13f65
      Sebastian Frias 提交于
      This removes the dependency on GPIOLIB for non faulty PHYs.
      
      Indeed, without this patch, if GPIOLIB is not selected
      devm_gpiod_get_optional() will return -ENOSYS and the driver probe
      call will fail, regardless of the actual PHY hardware.
      
      Out of the 3 PHYs supported by this driver (AT8030, AT8031, AT8035),
      only AT8030 presents the issues that commit 13a56b44 ("net: phy:
      at803x: Add support for hardware reset") attempts to work-around by
      using a 'reset' GPIO line.
      
      Hence, only AT8030 should depend on GPIOLIB operating properly.
      
      Fixes: 13a56b44 ("net: phy: at803x: Add support for hardware reset")
      Signed-off-by: NSebastian Frias <sf84@laposte.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      9eb13f65
    • S
      at803x: fix reset handling · d57019d1
      Sergei Shtylyov 提交于
      The driver of course "knows" that the chip's reset signal is active low,
      so  it drives the GPIO to 0  to reset the PHY and to 1 otherwise; however
      all this will only work iff the GPIO  is  specified as active-high in the
      device tree!  I think both the driver and the device trees (if there are
      any -- I was unable to find them) need to be fixed in this case...
      
      Fixes: 13a56b44 ("net: phy: at803x: Add support for hardware reset")
      Signed-off-by: NSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Acked-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d57019d1
    • M
      hp-wmi: Remove GPS rfkill support via pre-2009 interface · fffcad87
      Maciej S. Szmigiero 提交于
      GPS rfkill support via pre-2009 WMI interface uses hp_wmi_get_sw_state()
      and hp_wmi_get_hw_state() to query its current hard and soft block state,
      respectively.
      
      In hp_wmi_get_sw_state() a mask is calculated which bit should be checked
      in an int value returned by firmware to get current block state: 0x200 <<
      (r * 8) which with r being 3 for GPS results in overflow and mask of zero.
      The same goes for hp_wmi_get_hw_state().
      
      This effectively means that GPS rfkill on this WMI interface is considered
      always both hard and soft blocked.
      
      Unfortunately, later when rfkill subsystem calls hp_wmi_set_block() to sync
      this block to hardware firmware at least on my old nc6400 gets confused and
      sets both hard and soft blocks on WiFi and BT.
      
      This happens for example on hp-wmi module load.
      
      Since due to overflow described above it is dubious that this ever worked
      correctly and HP laptops with modems having GPS support seem to all have
      been released well past year 2009 let's just remove GPS rfkill support via
      pre-2009 WMI interface.
      Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      fffcad87
    • M
      hp-wmi: fix unregister order in hp_wmi_rfkill_setup() once again · c7805e54
      Maciej S. Szmigiero 提交于
      rfkill registration order in hp_wmi_rfkill_setup() is:
      1) WiFi,
      2) BT,
      3) WWAN,
      5) GPS.
      
      Unregistration when cleaning up on error return should happen in reverse
      order.
      
      This means that: If BT rfkill fails to be allocated we possibly need to
      first unregister WiFi rfkill before destroying it.
      
      The same goes with (WWAN, BT) and (GPS, WWAN) pairs.
      
      Also, if WWAN rfkill fails to register we need to (possibly) unregister BT
      not the GPS one.  And if GPS rfkill fails to register we need to unregister
      WWAN not the BT one.
      
      We never need to unregister GPS rfkill here since if GPS rfkill
      registration succeeds this function returns without error so no cleanup is
      necessary.
      Signed-off-by: NMaciej S. Szmigiero <mail@maciej.szmigiero.name>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      c7805e54
    • M
      dell-wmi: support Dell Inspiron M5110 · aaf3a5e7
      Michał Kępień 提交于
      Similarly to Dell Vostro V131, Dell Inspiron M5110 also requires an
      SMBIOS request to be issued in order for WMI events to be generated and
      does not raise an i8042 interrupt when the Dell Instant Launch hotkey is
      pressed.  However, the event code for that hotkey on this machine is
      0xe029, so add it to the legacy keymap.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Tested-by: NDarek Stojaczyk <darek.stojaczyk@gmail.com>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      aaf3a5e7
    • M
      dell-wmi: properly process Dell Instant Launch hotkey · 13f5059a
      Michał Kępień 提交于
      On models on which an SMBIOS request needs to be issued in order for WMI
      events to be generated, pressing the Dell Instant Launch hotkey does not
      raise an i8042 interrupt - only a WMI event is generated (0xe025 on Dell
      Vostro V131).  As that WMI event is the only way the kernel will be
      notified about pressing the Dell Instant Launch hotkey on such machines,
      the relevant keymap entry has to be changed to a KE_KEY one.  However,
      the same WMI event should still be ignored on machines which do not
      require an SMBIOS request for enabling WMI, so filter it conditionally
      in dell_wmi_process_key().
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      13f5059a
    • M
      dell-wmi: enable receiving WMI events on Dell Vostro V131 · e09c4d5b
      Michał Kępień 提交于
      On some laptop models (e.g. Dell Vostro V131), WMI events are not
      generated until a specific SMBIOS request is issued to register an event
      listener [1].  As there seems to be no ACPI method or SMBIOS request to
      determine without possible side effects whether a given machine needs to
      issue this SMBIOS request in order to receive WMI events, DMI matching
      is used to whitelist the models which need it.
      
      [1] https://lists.us.dell.com/pipermail/libsmbios-devel/2015-July/000612.htmlSigned-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      e09c4d5b
    • M
      dell-smbios: rename dell_smi_error() to dell_smbios_error() · 0db2180f
      Michał Kępień 提交于
      As dell_smi_error() is exported by dell-smbios, its prefix should be
      consistent with other exported symbols, so change function name to
      dell_smbios_error().
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      0db2180f
    • M
      dell-laptop: move dell_smi_error() to dell-smbios · e8edf53b
      Michał Kępień 提交于
      The dell_smi_error() method could be used by modules other than
      dell-laptop for convenient translation of SMBIOS request errors into
      errno values.  Thus, move it to dell-smbios.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      e8edf53b
    • J
      ideapad-laptop: Add ideapad Y700 (15) to the no_hw_rfkill DMI list · 4db9675d
      John Dahlstrom 提交于
      Some Lenovo ideapad models lack a physical rfkill switch.
      On Lenovo models ideapad Y700 Touch-15ISK and ideapad Y700-15ISK,
      ideapad-laptop would wrongly report all radios as blocked by
      hardware which caused wireless network connections to fail.
      
      Add these models without an rfkill switch to the no_hw_rfkill list.
      Signed-off-by: NJohn Dahlstrom <jodarom@sdf.org>
      Cc: <stable@vger.kernel.org> # 3.17.x-: 4fa9dabc: ideapad_laptop: Lenovo G50-30 fix rfkill reports wireless blocked
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      4db9675d
    • M
      fujitsu-laptop: Support radio toggle button · b5df36cf
      Michał Kępień 提交于
      Lifebook E734/E744/E754 has a radio toggle button which uses code 0x420.
      Map it to KEY_RFKILL.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Acked-by: NJonathan Woithe <jwoithe@just42.net>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      b5df36cf
    • W
      intel-hid: allocate correct amount of memory for private struct · e8b69a51
      Wolfram Sang 提交于
      We want the size of the struct, not of a pointer to it. To be future
      proof, just dereference the pointer to get the desired type.
      Signed-off-by: NWolfram Sang <wsa@the-dreams.de>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      e8b69a51
    • P
      platform/x86: Make intel_scu_ipc explicitly non-modular · f52ab44f
      Paul Gortmaker 提交于
      The Kconfig currently controlling compilation of this code is:
      
      drivers/platform/x86/Kconfig:config INTEL_SCU_IPC
      drivers/platform/x86/Kconfig:   bool "Intel SCU IPC Support"
      
      ...meaning that it currently is not being built as a module by anyone.
      
      Lets remove the modular code that is essentially orphaned, so that
      when reading the driver there is no doubt it is builtin-only.
      
      We explicitly disallow a driver unbind, since that doesn't have a
      sensible use case anyway, and it allows us to drop the ".remove"
      code for non-modular drivers.
      
      Since module_pci_driver() uses the same init level priority as
      builtin_pci_driver() the init ordering remains unchanged with
      this commit.
      
      Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
      
      We don't replace module.h with init.h since the file already has that.
      
      We also delete the MODULE_LICENSE tag etc. since all that information
      is already contained at the top of the file in the comments.
      
      Cc: platform-driver-x86@vger.kernel.org
      Signed-off-by: NPaul Gortmaker <paul.gortmaker@windriver.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      f52ab44f
    • Q
      intel_pmc_ipc: Avoid pending IPC1 command during legacy suspend · 1f1ae997
      Qipeng Zha 提交于
      During legacy suspend flow, IPC1 commands are being requested
      from opregion driver. But the PMC_IPC1 command will timeout as example:
      
      [  281.444600] ipc_debug##: ipc_send_command: cmd=0x201ff,
      [  281.444648] wbuf[0]=0x4ea6
      [  281.444668] wbuf[1]=0x0
      [  281.444674] wbuf[2]=0x0
      [  281.444676] wbuf[3]=0x0
      [  284.446467] pmc-ipc-plat INT34D2:00: IPC timed out, TS=0x4, CMD=0x200ff
      
      This is because before the opregion driver could send IPC1 commands,
      the PMC_IPC irq is already suspended. Which makes the IPC command to
      timeout.
      
      Solution: register pmc_ipc irq as IRQF_NO_SUSPEND
      Signed-off-by: NAnanth Krishna R <ananth.krishna.r@intel.com>
      Signed-off-by: NBharath K Veera <bharath.k.veera@intel.com>
      Signed-off-by: NQipeng Zha <qipeng.zha@intel.com>
      Acked-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      1f1ae997
    • Q
      intel_pmc_ipc: Fix GCR register base address and length · 1a2f25d5
      Qipeng Zha 提交于
      GCR register (pmc_cfg register) is at offset 0x1008, and
      remapping of 0x4 bytes is enough.
      Signed-off-by: NFrancois-Nicolas Muller <francois-nicolas.muller@intel.com>
      Signed-off-by: NQipeng Zha <qipeng.zha@intel.com>
      Acked-by: NAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      1a2f25d5
    • O
      asus-nb-wmi: add wapf=4 quirk for ASUS X75VD · 46707687
      Oleksandr Natalenko 提交于
      Wi-Fi on ASUS X75VD laptop does not work unless asus_nb_wmi module
      is loaded with wapf=4 option. Add quirk for this.
      Signed-off-by: NOleksandr Natalenko <oleksandr@natalenko.name>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      46707687
    • S
      intel_telemetry_pltdrv: Change verbosity control bits · 479f3b62
      Souvik Kumar Chakravarty 提交于
      Due to a recent fix in the firmware, the Punit verbosity control bits
      now adhere to the correct pattern. Hence remove the workaround and
      do a read-modify-write of the register.
      Signed-off-by: NSouvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      479f3b62
    • A
      dell-rbtn: Add a comment about the XPS 13 9350 · 4d340c6b
      Andy Lutomirski 提交于
      On the XPS 13 9350, the dell-rbtn mechanism has a new device id, and
      the DSDT turns it off if a new enough _OSI is supported.  Add a
      comment about why we don't bother supporting it.
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Acked-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      4d340c6b
    • A
      dell-wmi: Support new hotkeys on the XPS 13 9350 (Skylake) · a464afb9
      Andy Lutomirski 提交于
      The XPS 13 9350 sends WMI keypress events that aren't enumerated in
      the DMI table.  Add a table listing them.  To avoid breaking things
      that worked before, these un-enumerated hotkeys won't be used if the
      DMI table maps them to something else.
      
      FWIW, it appears that the DMI table may be a legacy thing and we
      might want to rethink how we handle events in general.  As an
      example, a whole lot of things map to KEY_PROG3 via the DMI table.
      
      This doesn't send keypress events for any of the new events.  They
      appear to all be handled by other means (keyboard illumination is
      handled automatically and rfkill is handled by intel-hid).
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Acked-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      a464afb9
    • A
      dell-wmi: Clean up hotkey table size check · b13de701
      Andy Lutomirski 提交于
      Checking the table for a minimum size of 7 bytes makes no sense: any valid
      hotkey table has a size that's a multiple of 4.
      
      Clean this up: replace the hardcoded header length with a sizeof and
      change the check to ignore an empty hotkey table.  The only behavior
      change is that a 7-byte table (which is nonsensical) will now be
      treated as absent instead of as valid but empty.
      Reported-by: NJean Delvare <jdelvare@suse.de>
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Acked-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      b13de701
    • A
      dell-wmi, dell-laptop: depends DMI · a570af48
      Andy Lutomirski 提交于
      dell-wmi and dell-laptop will compile but won't work right if DMI
      isn't selected.
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Acked-by: NPali Rohár <pali.rohar@gmail.com>
      
      [arnd: Use depends instead of selects to avoid recursive dependencies]
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      a570af48
    • A
      dell-wmi: Stop storing pointers to DMI tables · 18b6f80f
      Andy Lutomirski 提交于
      The dmi_walk function maps the DMI table, walks it, and unmaps it.
      This means that the dell_bios_hotkey_table that find_hk_type stores
      points to unmapped memory by the time it gets read.
      
      I've been able to trigger crashes caused by the stale pointer a
      couple of times, but never on a stock kernel.
      
      Fix it by generating the keymap in the dmi_walk callback instead of
      storing a pointer.
      Signed-off-by: NAndy Lutomirski <luto@kernel.org>
      Acked-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      18b6f80f
    • M
      dell-led: use dell_smbios_send_request() for performing SMBIOS calls · 0c41a08e
      Michał Kępień 提交于
      Instead of using the WMI wrapper, dell-led can take advantage of
      dell_smbios_send_request() for performing the SMBIOS calls required to
      change the state of the microphone LED.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Acked-by: NJacek Anaszewski <j.anaszewski@samsung.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      0c41a08e
    • M
      dell-led: use dell_smbios_find_token() for finding mic DMI tokens · cf0d7ea3
      Michał Kępień 提交于
      With the advent of dell_smbios_find_token(), dell-led does not need to
      perform any DMI walking on its own, but it can rather ask dell-smbios to
      look up the DMI tokens it needs for changing the state of the microphone
      LED.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Acked-by: NJacek Anaszewski <j.anaszewski@samsung.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      cf0d7ea3
    • M
      dell-smbios: make da_tokens static · b7bca2d7
      Michał Kępień 提交于
      As dell-laptop has been changed to use dell_smbios_find_token() instead
      of directly accessing members of the da_tokens table, the latter can be
      marked static.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      b7bca2d7
    • M
      dell-smbios: remove find_token_{id,location}() · 73511ff3
      Michał Kępień 提交于
      As dell-laptop has been changed to use dell_smbios_find_token() instead
      of find_token_id() and find_token_location(), these functions can be
      safely removed.
      Signed-off-by: NMichał Kępień <kernel@kempniu.pl>
      Reviewed-by: NPali Rohár <pali.rohar@gmail.com>
      Signed-off-by: NDarren Hart <dvhart@linux.intel.com>
      73511ff3