1. 16 Sep, 2017 6 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · c8503720
      Linus Torvalds authored
      Pull more input updates from Dmitry Torokhov:
       "A second round of updates for the input subsystem:
      
         - a new driver for PWM-controlled vibrators
      
         - ucb1400 touchscreen driver had completely busted suspend/resume
           handling
      
         - we now handle "home" button found on some devices with Goodix
           touchscreens
      
         - assorted other fixups"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: i8042 - add Gigabyte P57 to the keyboard reset table
        Input: xpad - validate USB endpoint type during probe
        Input: ucb1400_ts - fix suspend and resume handling
        Input: edt-ft5x06 - fix access to non-existing register
        Input: elantech - make arrays debounce_packet static, reduces object code size
        Input: surface3_spi - make const array header static, reduces object code size
        Input: goodix - add support for capacitive home button
        Input: add a driver for PWM controllable vibrators
        Input: adi - make array seq static, reduces object code size
      c8503720
    • Markus Trippelsdorf's avatar
      firmware: Restore support for built-in firmware · df85b2d7
      Markus Trippelsdorf authored
      Commit 5620a0d1 ("firmware: delete in-kernel firmware") removed the
      entire firmware directory.  Unfortunately it thereby also removed the
      support for built-in firmware.
      
      This restores the ability to build firmware directly into the kernel by
      pruning the original Makefile to the necessary minimum.  The default for
      EXTRA_FIRMWARE_DIR is now the standard directory /lib/firmware/.
      
      Fixes: 5620a0d1 ("firmware: delete in-kernel firmware")
      Signed-off-by: default avatarMarkus Trippelsdorf <markus@trippelsdorf.de>
      Acked-by: default avatarGreg K-H <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      df85b2d7
    • Linus Torvalds's avatar
      Merge branch '4.14-features' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · 73184130
      Linus Torvalds authored
      Pull MIPS updates from Ralf Baechle:
       "This is the main pull request for 4.14 for MIPS; below a summary of
        the non-merge commits:
      
        CM:
         - Rename mips_cm_base to mips_gcr_base
         - Specify register size when generating accessors
         - Use BIT/GENMASK for register fields, order & drop shifts
         - Add cluster & block args to mips_cm_lock_other()
      
        CPC:
         - Use common CPS accessor generation macros
         - Use BIT/GENMASK for register fields, order & drop shifts
         - Introduce register modify (set/clear/change) accessors
         - Use change_*, set_* & clear_* where appropriate
         - Add CM/CPC 3.5 register definitions
         - Use GlobalNumber macros rather than magic numbers
         - Have asm/mips-cps.h include CM & CPC headers
         - Cluster support for topology functions
         - Detect CPUs in secondary clusters
      
        CPS:
         - Read GIC_VL_IDENT directly, not via irqchip driver
      
        DMA:
         - Consolidate coherent and non-coherent dma_alloc code
         - Don't use dma_cache_sync to implement fd_cacheflush
      
        FPU emulation / FP assist code:
         - Another series of 14 commits fixing corner cases such as NaN
           propgagation and other special input values.
         - Zero bits 32-63 of the result for a CLASS.D instruction.
         - Enhanced statics via debugfs
         - Do not use bools for arithmetic. GCC 7.1 moans about this.
         - Correct user fault_addr type
      
        Generic MIPS:
         - Enhancement of stack backtraces
         - Cleanup from non-existing options
         - Handle non word sized instructions when examining frame
         - Fix detection and decoding of ADDIUSP instruction
         - Fix decoding of SWSP16 instruction
         - Refactor handling of stack pointer in get_frame_info
         - Remove unreachable code from force_fcr31_sig()
         - Convert to using %pOF instead of full_name
         - Remove the R6000 support.
         - Move FP code from *_switch.S to *_fpu.S
         - Remove unused ST_OFF from r2300_switch.S
         - Allow platform to specify multiple its.S files
         - Add #includes to various files to ensure code builds reliable and
           without warning..
         - Remove __invalidate_kernel_vmap_range
         - Remove plat_timer_setup
         - Declare various variables & functions static
         - Abstract CPU core & VP(E) ID access through accessor functions
         - Store core & VP IDs in GlobalNumber-style variable
         - Unify checks for sibling CPUs
         - Add CPU cluster number accessors
         - Prevent direct use of generic_defconfig
         - Make CONFIG_MIPS_MT_SMP default y
         - Add __ioread64_copy
         - Remove unnecessary inclusions of linux/irqchip/mips-gic.h
      
        GIC:
         - Introduce asm/mips-gic.h with accessor functions
         - Use new GIC accessor functions in mips-gic-timer
         - Remove counter access functions from irq-mips-gic.c
         - Remove gic_read_local_vp_id() from irq-mips-gic.c
         - Simplify shared interrupt pending/mask reads in irq-mips-gic.c
         - Simplify gic_local_irq_domain_map() in irq-mips-gic.c
         - Drop gic_(re)set_mask() functions in irq-mips-gic.c
         - Remove gic_set_polarity(), gic_set_trigger(), gic_set_dual_edge(),
           gic_map_to_pin() and gic_map_to_vpe() from irq-mips-gic.c.
         - Convert remaining shared reg access, local int mask access and
           remaining local reg access to new accessors
         - Move GIC_LOCAL_INT_* to asm/mips-gic.h
         - Remove GIC_CPU_INT* macros from irq-mips-gic.c
         - Move various definitions to the driver
         - Remove gic_get_usm_range()
         - Remove __gic_irq_dispatch() forward declaration
         - Remove gic_init()
         - Use mips_gic_present() in place of gic_present and remove
           gic_present
         - Move gic_get_c0_*_int() to asm/mips-gic.h
         - Remove linux/irqchip/mips-gic.h
         - Inline __gic_init()
         - Inline gic_basic_init()
         - Make pcpu_masks a per-cpu variable
         - Use pcpu_masks to avoid reading GIC_SH_MASK*
         - Clean up mti, reserved-cpu-vectors handling
         - Use cpumask_first_and() in gic_set_affinity()
         - Let the core set struct irq_common_data affinity
      
        microMIPS:
         - Fix microMIPS stack unwinding on big endian systems
      
        MIPS-GIC:
         - SYNC after enabling GIC region
      
        NUMA:
         - Remove the unused parent_node() macro
      
        R6:
         - Constify r2_decoder_tables
         - Add accessor & bit definitions for GlobalNumber
      
        SMP:
         - Constify smp ops
         - Allow boot_secondary SMP op to return errors
      
        VDSO:
         - Drop gic_get_usm_range() usage
         - Avoid use of linux/irqchip/mips-gic.h
      
        Platform changes:
      
        Alchemy:
         - Add devboard machine type to cpuinfo
         - update cpu feature overrides
         - Threaded carddetect irqs for devboards
      
        AR7:
         - allow NULL clock for clk_get_rate
      
        BCM63xx:
         - Fix ENETDMA_6345_MAXBURST_REG offset
         - Allow NULL clock for clk_get_rate
      
        CI20:
         - Enable GPIO and RTC drivers in defconfig
         - Add ethernet and fixed-regulator nodes to DTS
      
        Generic platform:
         - Move Boston and NI 169445 FIT image source to their own files
         - Include asm/bootinfo.h for plat_fdt_relocated()
         - Include asm/time.h for get_c0_*_int()
         - Include asm/bootinfo.h for plat_fdt_relocated()
         - Include asm/time.h for get_c0_*_int()
         - Allow filtering enabled boards by requirements
         - Don't explicitly disable CONFIG_USB_SUPPORT
         - Bump default NR_CPUS to 16
      
        JZ4700:
         - Probe the jz4740-rtc driver from devicetree
      
        Lantiq:
         - Drop check of boot select from the spi-falcon driver.
         - Drop check of boot select from the lantiq-flash MTD driver.
         - Access boot cause register in the watchdog driver through regmap
         - Add device tree binding documentation for the watchdog driver
         - Add docs for the RCU DT bindings.
         - Convert the fpi bus driver to a platform_driver
         - Remove ltq_reset_cause() and ltq_boot_select(
         - Switch to a proper reset driver
         - Switch to a new drivers/soc GPHY driver
         - Add an USB PHY driver for the Lantiq SoCs using the RCU module
         - Use of_platform_default_populate instead of __dt_register_buses
         - Enable MFD_SYSCON to be able to use it for the RCU MFD
         - Replace ltq_boot_select() with dummy implementation.
      
        Loongson 2F:
         - Allow NULL clock for clk_get_rate
      
        Malta:
         - Use new GIC accessor functions
      
        NI 169445:
         - Add support for NI 169445 board.
         - Only include in 32r2el kernels
      
        Octeon:
         - Add support for watchdog of 78XX SOCs.
         - Add support for watchdog of CN68XX SOCs.
         - Expose support for mips32r1, mips32r2 and mips64r1
         - Enable more drivers in config file
         - Add support for accessing the boot vector.
         - Remove old boot vector code from watchdog driver
         - Define watchdog registers for 70xx, 73xx, 78xx, F75xx.
         - Make CSR functions node aware.
         - Allow access to CIU3 IRQ domains.
         - Misc cleanups in the watchdog driver
      
        Omega2+:
         - New board, add support and defconfig
      
        Pistachio:
         - Enable Root FS on NFS in defconfig
      
        Ralink:
         - Add Mediatek MT7628A SoC
         - Allow NULL clock for clk_get_rate
         - Explicitly request exclusive reset control in the pci-mt7620 PCI driver.
      
        SEAD3:
         - Only include in 32 bit kernels by default
      
        VoCore:
         - Add VoCore as a vendor t0 dt-bindings
         - Add defconfig file"
      
      * '4.14-features' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (167 commits)
        MIPS: Refactor handling of stack pointer in get_frame_info
        MIPS: Stacktrace: Fix microMIPS stack unwinding on big endian systems
        MIPS: microMIPS: Fix decoding of swsp16 instruction
        MIPS: microMIPS: Fix decoding of addiusp instruction
        MIPS: microMIPS: Fix detection of addiusp instruction
        MIPS: Handle non word sized instructions when examining frame
        MIPS: ralink: allow NULL clock for clk_get_rate
        MIPS: Loongson 2F: allow NULL clock for clk_get_rate
        MIPS: BCM63XX: allow NULL clock for clk_get_rate
        MIPS: AR7: allow NULL clock for clk_get_rate
        MIPS: BCM63XX: fix ENETDMA_6345_MAXBURST_REG offset
        mips: Save all registers when saving the frame
        MIPS: Add DWARF unwinding to assembly
        MIPS: Make SAVE_SOME more standard
        MIPS: Fix issues in backtraces
        MIPS: jz4780: DTS: Probe the jz4740-rtc driver from devicetree
        MIPS: Ci20: Enable RTC driver
        watchdog: octeon-wdt: Add support for 78XX SOCs.
        watchdog: octeon-wdt: Add support for cn68XX SOCs.
        watchdog: octeon-wdt: File cleaning.
        ...
      73184130
    • Linus Torvalds's avatar
      Merge tag 'pci-v4.14-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci · 8d93c7a4
      Linus Torvalds authored
      Pull PCI fix from Bjorn Helgaas:
       "Revert an attempt to fix a race while enabling upstream bridges
        because it broke iwlwifi firmware loading"
      
      * tag 'pci-v4.14-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
        Revert "PCI: Avoid race while enabling upstream bridges"
      8d93c7a4
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-for-v4.14-rc1' of git://people.freedesktop.org/~airlied/linux · 02cfe977
      Linus Torvalds authored
      Pull drm AMD fixes from Dave Airlie:
       "Just had a single AMD fixes pull from Alex for rc1"
      
      * tag 'drm-fixes-for-v4.14-rc1' of git://people.freedesktop.org/~airlied/linux:
        drm/amdgpu: revert "fix deadlock of reservation between cs and gpu reset v2"
        drm/amdgpu: remove duplicate return statement
        drm/amdgpu: check memory allocation failure
        drm/amd/amdgpu: fix BANK_SELECT on Vega10 (v2)
        drm/amdgpu: inline amdgpu_ttm_do_bind again
        drm/amdgpu: fix amdgpu_ttm_bind
        drm/amdgpu: remove the GART copy hack
        drm/ttm:fix wrong decoding of bo_count
        drm/ttm: fix missing inc bo_count
        drm/amdgpu: set sched_hw_submission higher for KIQ (v3)
        drm/amdgpu: move default gart size setting into gmc modules
        drm/amdgpu: refine default gart size
        drm/amd/powerplay: ACG frequency added in PPTable
        drm/amdgpu: discard commands of killed processes
        drm/amdgpu: fix and cleanup shadow handling
        drm/amdgpu: add automatic per asic settings for gart_size
        drm/amdgpu/gfx8: fix spelling typo in mqd allocation
        drm/amd/powerplay: unhalt mec after loading
        drm/amdgpu/virtual_dce: Virtual display doesn't support disable vblank immediately
        drm/amdgpu: Fix huge page updates with CPU
      02cfe977
    • Linus Torvalds's avatar
      Merge branch 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · bbe05e54
      Linus Torvalds authored
      Pull more i2c updates from Wolfram Sang:
       "I2C has two more new drivers: Altera FPGA and STM32F7"
      
      * 'i2c/for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: i2c-stm32f7: add driver
        i2c: i2c-stm32f4: use generic definition of speed enum
        dt-bindings: i2c-stm32: Document the STM32F7 I2C bindings
        i2c: altera: Add Altera I2C Controller driver
        dt-bindings: i2c: Add Altera I2C Controller
      bbe05e54
  2. 15 Sep, 2017 31 commits
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 9db59599
      Linus Torvalds authored
      Pull more KVM updates from Paolo Bonzini:
       - PPC bugfixes
       - RCU splat fix
       - swait races fix
       - pointless userspace-triggerable BUG() fix
       - misc fixes for KVM_RUN corner cases
       - nested virt correctness fixes + one host DoS
       - some cleanups
       - clang build fix
       - fix AMD AVIC with default QEMU command line options
       - x86 bugfixes
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (28 commits)
        kvm: nVMX: Handle deferred early VMLAUNCH/VMRESUME failure properly
        kvm: vmx: Handle VMLAUNCH/VMRESUME failure properly
        kvm: nVMX: Remove nested_vmx_succeed after successful VM-entry
        kvm,mips: Fix potential swait_active() races
        kvm,powerpc: Serialize wq active checks in ops->vcpu_kick
        kvm: Serialize wq active checks in kvm_vcpu_wake_up()
        kvm,x86: Fix apf_task_wake_one() wq serialization
        kvm,lapic: Justify use of swait_active()
        kvm,async_pf: Use swq_has_sleeper()
        sched/wait: Add swq_has_sleeper()
        KVM: VMX: Do not BUG() on out-of-bounds guest IRQ
        KVM: Don't accept obviously wrong gsi values via KVM_IRQFD
        kvm: nVMX: Don't allow L2 to access the hardware CR8
        KVM: trace events: update list of exit reasons
        KVM: async_pf: Fix #DF due to inject "Page not Present" and "Page Ready" exceptions simultaneously
        KVM: X86: Don't block vCPU if there is pending exception
        KVM: SVM: Add irqchip_split() checks before enabling AVIC
        KVM: Add struct kvm_vcpu pointer parameter to get_enable_apicv()
        KVM: SVM: Refactor AVIC vcpu initialization into avic_init_vcpu()
        KVM: x86: fix clang build
        ...
      9db59599
    • Linus Torvalds's avatar
      Merge tag 'firmware_removal-4.14-rc1' of... · b38923a0
      Linus Torvalds authored
      Merge tag 'firmware_removal-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
      
      Pull firmware removal from Greg KH:
       "Many many years ago (at the kernel summit in Boston), we all came to
        the agreement that the firmware/ tree should be dropped from the
        kernel, and everyone use the linux-firmware package instead. For some
        minor reason, David Woodhouse didn't send the pull request at that
        point in time, and everyone forgot about this.
      
        The topic came up in the hallway track at the Plumbers conference this
        week, so here's a single patch that drops the whole firmware tree. The
        last firmware update was back in 2013, and all distros have been using
        linux-firmware instead since at least that year, if not before. The
        only commits to that directory since 2013 was some kbuild fixups for
        various build tool issues.
      
        So lets finally drop this, we don't need to lug them around in the
        kernel source tree anymore, especially as no one wants or uses them.
      
        This has passed build testing with 0-day, I don't think it made it
        into linux-next this week, but I figured it was good to get in before
        4.14-rc1 was out"
      
      * tag 'firmware_removal-4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
        firmware: delete in-kernel firmware
      b38923a0
    • Linus Torvalds's avatar
      Merge tag 'nios2-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2 · 866a30ef
      Linus Torvalds authored
      Pull arch/nios2 update from Ley Foon Tan.
      
      * tag 'nios2-v4.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2:
        nios2: time: Read timer in get_cycles only if initialized
        nios2: add earlycon support to 3c120 devboard DTS
      866a30ef
    • Linus Torvalds's avatar
      Merge tag 'powerpc-4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · 418702b9
      Linus Torvalds authored
      Pull powerpc fix from Michael Ellerman:
       "Just one fix, for the handling of alignment interrupts on dcbz
        instructions.
      
        Thanks to Paul Mackerras, Christian Zigotzky, Michal Sojka"
      
      * tag 'powerpc-4.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        powerpc: Fix handling of alignment interrupt on dcbz instruction
      418702b9
    • Linus Torvalds's avatar
      Merge tag 'for-linus-4.14-ofs2' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux · 30db202e
      Linus Torvalds authored
      Pull orangefs updates from Mike Marshall:
       "Some cleanups and a big bug fix for ACLs.
      
        When I was reviewing Jan Kara's ACL patch, I realized that Orangefs
        ACL code was busted, not just in the kernel module, but in the server
        as well. I've been working on the code in the server mostly, but
        here's one kernel patch, there will be more"
      
      * tag 'for-linus-4.14-ofs2' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux:
        orangefs: Adjust three checks for null pointers
        orangefs: Use kcalloc() in orangefs_prepare_cdm_array()
        orangefs: Delete error messages for a failed memory allocation in five functions
        orangefs: constify xattr_handler structure
        orangefs: don't call filemap_write_and_wait from fsync
        orangefs: off by ones in xattr size checks
        orangefs: documentation clean up
        orangefs: react properly to posix_acl_update_mode's aftermath.
        orangefs: Don't clear SGID when inheriting ACLs
      30db202e
    • Dmitry Torokhov's avatar
      Merge branch 'next' into for-linus · bbc86087
      Dmitry Torokhov authored
      Prepare second round of input updates for 4.14 merge window.
      bbc86087
    • Kai-Heng Feng's avatar
      Input: i8042 - add Gigabyte P57 to the keyboard reset table · 697c5d8a
      Kai-Heng Feng authored
      Similar to other Gigabyte laptops, the touchpad on P57 requires a
      keyboard reset to detect Elantech touchpad correctly.
      
      BugLink: https://bugs.launchpad.net/bugs/1594214Signed-off-by: default avatarKai-Heng Feng <kai.heng.feng@canonical.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      697c5d8a
    • Jim Mattson's avatar
      kvm: nVMX: Handle deferred early VMLAUNCH/VMRESUME failure properly · 4f350c6d
      Jim Mattson authored
      When emulating a nested VM-entry from L1 to L2, several control field
      validation checks are deferred to the hardware. Should one of these
      validation checks fail, vcpu_vmx_run will set the vmx->fail flag. When
      this happens, the L2 guest state is not loaded (even in part), and
      execution should continue in L1 with the next instruction after the
      VMLAUNCH/VMRESUME.
      
      The VMCS12 is not modified (except for the VM-instruction error
      field), the VMCS12 MSR save/load lists are not processed, and the CPU
      state is not loaded from the VMCS12 host area. Moreover, the vmcs02
      exit reason is stale, so it should not be consulted for any reason.
      Signed-off-by: default avatarJim Mattson <jmattson@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4f350c6d
    • Jim Mattson's avatar
      kvm: vmx: Handle VMLAUNCH/VMRESUME failure properly · b060ca3b
      Jim Mattson authored
      On an early VMLAUNCH/VMRESUME failure (i.e. one which sets the
      VM-instruction error field of the current VMCS), the launch state of
      the current VMCS is not set to "launched," and the VM-exit information
      fields of the current VMCS (including IDT-vectoring information and
      exit reason) are stale.
      
      On a late VMLAUNCH/VMRESUME failure (i.e. one which sets the high bit
      of the exit reason field), the launch state of the current VMCS is not
      set to "launched," and only two of the VM-exit information fields of
      the current VMCS are modified (exit reason and exit
      qualification). The remaining VM-exit information fields of the
      current VMCS (including IDT-vectoring information, in particular) are
      stale.
      Signed-off-by: default avatarJim Mattson <jmattson@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b060ca3b
    • Jim Mattson's avatar
      kvm: nVMX: Remove nested_vmx_succeed after successful VM-entry · 7881f96c
      Jim Mattson authored
      After a successful VM-entry, RFLAGS is cleared, with the exception of
      bit 1, which is always set. This is handled by load_vmcs12_host_state.
      Signed-off-by: default avatarJim Mattson <jmattson@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      7881f96c
    • Davidlohr Bueso's avatar
      kvm,mips: Fix potential swait_active() races · 4c0b4bc6
      Davidlohr Bueso authored
      For example, the following could occur, making us miss a wakeup:
      
      CPU0					CPU1
      kvm_vcpu_block				kvm_mips_comparecount_func
      					  [L] swait_active(&vcpu->wq)
        [S] prepare_to_swait(&vcpu->wq)
        [L] if (!kvm_vcpu_has_pending_timer(vcpu))
               schedule()                       [S] queue_timer_int(vcpu)
      
      Ensure that the swait_active() check is not hoisted over the interrupt.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4c0b4bc6
    • Davidlohr Bueso's avatar
      kvm,powerpc: Serialize wq active checks in ops->vcpu_kick · 267ad7bc
      Davidlohr Bueso authored
      Particularly because kvmppc_fast_vcpu_kick_hv() is a callback,
      ensure that we properly serialize wq active checks in order to
      avoid potentially missing a wakeup due to racing with the waiter
      side.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      267ad7bc
    • Davidlohr Bueso's avatar
      kvm: Serialize wq active checks in kvm_vcpu_wake_up() · 5e0018b3
      Davidlohr Bueso authored
      This is a generic call and can be suceptible to races
      in reading the wq task_list while another task is adding
      itself to the list. Add a full barrier by using the
      swq_has_sleeper() helper.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      5e0018b3
    • Davidlohr Bueso's avatar
      kvm,x86: Fix apf_task_wake_one() wq serialization · a0cff57b
      Davidlohr Bueso authored
      During code inspection, the following potential race was seen:
      
      CPU0   	    		    	     	CPU1
      kvm_async_pf_task_wait			apf_task_wake_one
      					  [L] swait_active(&n->wq)
        [S] prepare_to_swait(&n.wq)
        [L] if (!hlist_unhahed(&n.link))
      	schedule()			  [S] hlist_del_init(&n->link);
      
      Properly serialize swait_active() checks such that a wakeup is
      not missed.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      a0cff57b
    • Davidlohr Bueso's avatar
      kvm,lapic: Justify use of swait_active() · cc1b4680
      Davidlohr Bueso authored
      A comment might serve future readers.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      cc1b4680
    • Davidlohr Bueso's avatar
      kvm,async_pf: Use swq_has_sleeper() · b9f67a42
      Davidlohr Bueso authored
      ... as we've got the new helper now. This caller already
      does the right thing, hence no changes in semantics.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      b9f67a42
    • Davidlohr Bueso's avatar
      sched/wait: Add swq_has_sleeper() · 8cd641e3
      Davidlohr Bueso authored
      Which is the equivalent of what we have in regular waitqueues.
      I'm not crazy about the name, but this also helps us get both
      apis closer -- which iirc comes originally from the -net folks.
      
      We also duplicate the comments for the lockless swait_active(),
      from wait.h. Future users will make use of this interface.
      Signed-off-by: default avatarDavidlohr Bueso <dbueso@suse.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      8cd641e3
    • Jan H. Schönherr's avatar
      KVM: VMX: Do not BUG() on out-of-bounds guest IRQ · 3a8b0677
      Jan H. Schönherr authored
      The value of the guest_irq argument to vmx_update_pi_irte() is
      ultimately coming from a KVM_IRQFD API call. Do not BUG() in
      vmx_update_pi_irte() if the value is out-of bounds. (Especially,
      since KVM as a whole seems to hang after that.)
      
      Instead, print a message only once if we find that we don't have a
      route for a certain IRQ (which can be out-of-bounds or within the
      array).
      
      This fixes CVE-2017-1000252.
      
      Fixes: efc64404 ("KVM: x86: Update IRTE for posted-interrupts")
      Signed-off-by: default avatarJan H. Schönherr <jschoenh@amazon.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      3a8b0677
    • Jan H. Schönherr's avatar
      KVM: Don't accept obviously wrong gsi values via KVM_IRQFD · 36ae3c0a
      Jan H. Schönherr authored
      We cannot add routes for gsi values >= KVM_MAX_IRQ_ROUTES -- see
      kvm_set_irq_routing(). Hence, there is no sense in accepting them
      via KVM_IRQFD. Prevent them from entering the system in the first
      place.
      Signed-off-by: default avatarJan H. Schönherr <jschoenh@amazon.de>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      36ae3c0a
    • Guenter Roeck's avatar
      nios2: time: Read timer in get_cycles only if initialized · 65d1e3dd
      Guenter Roeck authored
      Mainline crashes as follows when running nios2 images.
      
      On node 0 totalpages: 65536
      free_area_init_node: node 0, pgdat c8408fa0, node_mem_map c8726000
        Normal zone: 512 pages used for memmap
        Normal zone: 0 pages reserved
        Normal zone: 65536 pages, LIFO batch:15
      Unable to handle kernel NULL pointer dereference at virtual address 00000000
      ea = c8003cb0, ra = c81cbf40, cause = 15
      Kernel panic - not syncing: Oops
      
      Problem is seen because get_cycles() is called before the timer it depends
      on is initialized. Returning 0 in that situation fixes the problem.
      
      Fixes: 33d72f38 ("init/main.c: extract early boot entropy from the ..")
      Cc: Laura Abbott <labbott@redhat.com>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Daniel Micay <danielmicay@gmail.com>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      65d1e3dd
    • Tobias Klauser's avatar
      nios2: add earlycon support to 3c120 devboard DTS · 8993d5e4
      Tobias Klauser authored
      Allow earlycon to be used on the JTAG UART present in the 3c120 GHRD.
      Signed-off-by: default avatarTobias Klauser <tklauser@distanz.ch>
      8993d5e4
    • Jim Mattson's avatar
      kvm: nVMX: Don't allow L2 to access the hardware CR8 · 51aa68e7
      Jim Mattson authored
      If L1 does not specify the "use TPR shadow" VM-execution control in
      vmcs12, then L0 must specify the "CR8-load exiting" and "CR8-store
      exiting" VM-execution controls in vmcs02. Failure to do so will give
      the L2 VM unrestricted read/write access to the hardware CR8.
      
      This fixes CVE-2017-12154.
      Signed-off-by: default avatarJim Mattson <jmattson@google.com>
      Reviewed-by: default avatarDavid Hildenbrand <david@redhat.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      51aa68e7
    • Bjorn Helgaas's avatar
      Revert "PCI: Avoid race while enabling upstream bridges" · 0f50a49e
      Bjorn Helgaas authored
      This reverts commit 40f11adc.
      
      Jens found that iwlwifi firmware loading failed on a Lenovo X1 Carbon,
      gen4:
      
        iwlwifi 0000:04:00.0: Direct firmware load for iwlwifi-8000C-34.ucode failed with error -2
        iwlwifi 0000:04:00.0: Direct firmware load for iwlwifi-8000C-33.ucode failed with error -2
        iwlwifi 0000:04:00.0: Direct firmware load for iwlwifi-8000C-32.ucode failed with error -2
        iwlwifi 0000:04:00.0: loaded firmware version 31.532993.0 op_mode iwlmvm
        iwlwifi 0000:04:00.0: Detected Intel(R) Dual Band Wireless AC 8260, REV=0x208
        ...
        iwlwifi 0000:04:00.0: Failed to load firmware chunk!
        iwlwifi 0000:04:00.0: Could not load the [0] uCode section
        iwlwifi 0000:04:00.0: Failed to start INIT ucode: -110
        iwlwifi 0000:04:00.0: Failed to run INIT ucode: -110
      
      He bisected it to 40f11adc ("PCI: Avoid race while enabling upstream
      bridges").  Revert that commit to fix the regression.
      
      Link: http://lkml.kernel.org/r/4bcbcbc1-7c79-09f0-5071-bc2f53bf6574@kernel.dk
      Fixes: 40f11adc ("PCI: Avoid race while enabling upstream bridges")
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      CC: Srinath Mannam <srinath.mannam@broadcom.com>
      CC: Jens Axboe <axboe@kernel.dk>
      CC: Luca Coelho <luca@coelho.fi>
      CC: Johannes Berg <johannes@sipsolutions.net>
      CC: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
      0f50a49e
    • Mimi Zohar's avatar
      vfs: constify path argument to kernel_read_file_from_path · 711aab1d
      Mimi Zohar authored
      This patch constifies the path argument to kernel_read_file_from_path().
      Signed-off-by: default avatarMimi Zohar <zohar@linux.vnet.ibm.com>
      Cc: Christoph Hellwig <hch@infradead.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      711aab1d
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-4.14-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 6ed0529f
      Linus Torvalds authored
      Pull more NFS client updates from Trond Myklebust:
       "Hightlights include:
      
        Bugfixes:
         - Various changes relating to reporting IO errors.
         - pnfs: Use the standard I/O stateid when calling LAYOUTGET
      
        Features:
         - Add static NFS I/O tracepoints for debugging"
      
      * tag 'nfs-for-4.14-2' of git://git.linux-nfs.org/projects/trondmy/linux-nfs:
        NFS: various changes relating to reporting IO errors.
        NFS: Add static NFS I/O tracepoints
        pNFS: Use the standard I/O stateid when calling LAYOUTGET
      6ed0529f
    • Linus Torvalds's avatar
      Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 9e0ce554
      Linus Torvalds authored
      Pull misc leftovers from Al Viro.
      
      * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        fix the __user misannotations in asm-generic get_user/put_user
        fput: Don't reinvent the wheel but use existing llist API
        namespace.c: Don't reinvent the wheel but use existing llist API
      9e0ce554
    • Linus Torvalds's avatar
      Merge branch 'work.read_write' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · e253d98f
      Linus Torvalds authored
      Pull nowait read support from Al Viro:
       "Support IOCB_NOWAIT for buffered reads and block devices"
      
      * 'work.read_write' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        block_dev: support RFW_NOWAIT on block device nodes
        fs: support RWF_NOWAIT for buffered reads
        fs: support IOCB_NOWAIT in generic_file_buffered_read
        fs: pass iocb to do_generic_file_read
      e253d98f
    • Linus Torvalds's avatar
      Merge branch 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 0f0d1272
      Linus Torvalds authored
      Pull mount flag updates from Al Viro:
       "Another chunk of fmount preparations from dhowells; only trivial
        conflicts for that part. It separates MS_... bits (very grotty
        mount(2) ABI) from the struct super_block ->s_flags (kernel-internal,
        only a small subset of MS_... stuff).
      
        This does *not* convert the filesystems to new constants; only the
        infrastructure is done here. The next step in that series is where the
        conflicts would be; that's the conversion of filesystems. It's purely
        mechanical and it's better done after the merge, so if you could run
        something like
      
      	list=$(for i in MS_RDONLY MS_NOSUID MS_NODEV MS_NOEXEC MS_SYNCHRONOUS MS_MANDLOCK MS_DIRSYNC MS_NOATIME MS_NODIRATIME MS_SILENT MS_POSIXACL MS_KERNMOUNT MS_I_VERSION MS_LAZYTIME; do git grep -l $i fs drivers/staging/lustre drivers/mtd ipc mm include/linux; done|sort|uniq|grep -v '^fs/namespace.c$')
      
      	sed -i -e 's/\<MS_RDONLY\>/SB_RDONLY/g' \
      	        -e 's/\<MS_NOSUID\>/SB_NOSUID/g' \
      	        -e 's/\<MS_NODEV\>/SB_NODEV/g' \
      	        -e 's/\<MS_NOEXEC\>/SB_NOEXEC/g' \
      	        -e 's/\<MS_SYNCHRONOUS\>/SB_SYNCHRONOUS/g' \
      	        -e 's/\<MS_MANDLOCK\>/SB_MANDLOCK/g' \
      	        -e 's/\<MS_DIRSYNC\>/SB_DIRSYNC/g' \
      	        -e 's/\<MS_NOATIME\>/SB_NOATIME/g' \
      	        -e 's/\<MS_NODIRATIME\>/SB_NODIRATIME/g' \
      	        -e 's/\<MS_SILENT\>/SB_SILENT/g' \
      	        -e 's/\<MS_POSIXACL\>/SB_POSIXACL/g' \
      	        -e 's/\<MS_KERNMOUNT\>/SB_KERNMOUNT/g' \
      	        -e 's/\<MS_I_VERSION\>/SB_I_VERSION/g' \
      	        -e 's/\<MS_LAZYTIME\>/SB_LAZYTIME/g' \
      	        $list
      
        and commit it with something along the lines of 'convert filesystems
        away from use of MS_... constants' as commit message, it would save a
        quite a bit of headache next cycle"
      
      * 'work.mount' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        VFS: Differentiate mount flags (MS_*) from internal superblock flags
        VFS: Convert sb->s_flags & MS_RDONLY to sb_rdonly(sb)
        vfs: Add sb_rdonly(sb) to query the MS_RDONLY flag on s_flags
      0f0d1272
    • Linus Torvalds's avatar
      Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 581bfce9
      Linus Torvalds authored
      Pull more set_fs removal from Al Viro:
       "Christoph's 'use kernel_read and friends rather than open-coding
        set_fs()' series"
      
      * 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        fs: unexport vfs_readv and vfs_writev
        fs: unexport vfs_read and vfs_write
        fs: unexport __vfs_read/__vfs_write
        lustre: switch to kernel_write
        gadget/f_mass_storage: stop messing with the address limit
        mconsole: switch to kernel_read
        btrfs: switch write_buf to kernel_write
        net/9p: switch p9_fd_read to kernel_write
        mm/nommu: switch do_mmap_private to kernel_read
        serial2002: switch serial2002_tty_write to kernel_{read/write}
        fs: make the buf argument to __kernel_write a void pointer
        fs: fix kernel_write prototype
        fs: fix kernel_read prototype
        fs: move kernel_read to fs/read_write.c
        fs: move kernel_write to fs/read_write.c
        autofs4: switch autofs4_write to __kernel_write
        ashmem: switch to ->read_iter
      581bfce9
    • Linus Torvalds's avatar
      Merge branch 'work.ipc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · cc73fee0
      Linus Torvalds authored
      Pull ipc compat cleanup and 64-bit time_t from Al Viro:
       "IPC copyin/copyout sanitizing, including 64bit time_t work from Deepa
        Dinamani"
      
      * 'work.ipc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        utimes: Make utimes y2038 safe
        ipc: shm: Make shmid_kernel timestamps y2038 safe
        ipc: sem: Make sem_array timestamps y2038 safe
        ipc: msg: Make msg_queue timestamps y2038 safe
        ipc: mqueue: Replace timespec with timespec64
        ipc: Make sys_semtimedop() y2038 safe
        get rid of SYSVIPC_COMPAT on ia64
        semtimedop(): move compat to native
        shmat(2): move compat to native
        msgrcv(2), msgsnd(2): move compat to native
        ipc(2): move compat to native
        ipc: make use of compat ipc_perm helpers
        semctl(): move compat to native
        semctl(): separate all layout-dependent copyin/copyout
        msgctl(): move compat to native
        msgctl(): split the actual work from copyin/copyout
        ipc: move compat shmctl to native
        shmctl: split the work from copyin/copyout
      cc73fee0
    • Linus Torvalds's avatar
      Merge branch 'zstd-minimal' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs · e7cdb60f
      Linus Torvalds authored
      Pull zstd support from Chris Mason:
       "Nick Terrell's patch series to add zstd support to the kernel has been
        floating around for a while. After talking with Dave Sterba, Herbert
        and Phillip, we decided to send the whole thing in as one pull
        request.
      
        zstd is a big win in speed over zlib and in compression ratio over
        lzo, and the compression team here at FB has gotten great results
        using it in production. Nick will continue to update the kernel side
        with new improvements from the open source zstd userland code.
      
        Nick has a number of benchmarks for the main zstd code in his lib/zstd
        commit:
      
            I ran the benchmarks on a Ubuntu 14.04 VM with 2 cores and 4 GiB
            of RAM. The VM is running on a MacBook Pro with a 3.1 GHz Intel
            Core i7 processor, 16 GB of RAM, and a SSD. I benchmarked using
            `silesia.tar` [3], which is 211,988,480 B large. Run the following
            commands for the benchmark:
      
              sudo modprobe zstd_compress_test
              sudo mknod zstd_compress_test c 245 0
              sudo cp silesia.tar zstd_compress_test
      
            The time is reported by the time of the userland `cp`.
            The MB/s is computed with
      
              1,536,217,008 B / time(buffer size, hash)
      
            which includes the time to copy from userland.
            The Adjusted MB/s is computed with
      
              1,536,217,088 B / (time(buffer size, hash) - time(buffer size, none)).
      
            The memory reported is the amount of memory the compressor
            requests.
      
              | Method   | Size (B) | Time (s) | Ratio | MB/s    | Adj MB/s | Mem (MB) |
              |----------|----------|----------|-------|---------|----------|----------|
              | none     | 11988480 |    0.100 |     1 | 2119.88 |        - |        - |
              | zstd -1  | 73645762 |    1.044 | 2.878 |  203.05 |   224.56 |     1.23 |
              | zstd -3  | 66988878 |    1.761 | 3.165 |  120.38 |   127.63 |     2.47 |
              | zstd -5  | 65001259 |    2.563 | 3.261 |   82.71 |    86.07 |     2.86 |
              | zstd -10 | 60165346 |   13.242 | 3.523 |   16.01 |    16.13 |    13.22 |
              | zstd -15 | 58009756 |   47.601 | 3.654 |    4.45 |     4.46 |    21.61 |
              | zstd -19 | 54014593 |  102.835 | 3.925 |    2.06 |     2.06 |    60.15 |
              | zlib -1  | 77260026 |    2.895 | 2.744 |   73.23 |    75.85 |     0.27 |
              | zlib -3  | 72972206 |    4.116 | 2.905 |   51.50 |    52.79 |     0.27 |
              | zlib -6  | 68190360 |    9.633 | 3.109 |   22.01 |    22.24 |     0.27 |
              | zlib -9  | 67613382 |   22.554 | 3.135 |    9.40 |     9.44 |     0.27 |
      
            I benchmarked zstd decompression using the same method on the same
            machine. The benchmark file is located in the upstream zstd repo
            under `contrib/linux-kernel/zstd_decompress_test.c` [4]. The
            memory reported is the amount of memory required to decompress
            data compressed with the given compression level. If you know the
            maximum size of your input, you can reduce the memory usage of
            decompression irrespective of the compression level.
      
              | Method   | Time (s) | MB/s    | Adjusted MB/s | Memory (MB) |
              |----------|----------|---------|---------------|-------------|
              | none     |    0.025 | 8479.54 |             - |           - |
              | zstd -1  |    0.358 |  592.15 |        636.60 |        0.84 |
              | zstd -3  |    0.396 |  535.32 |        571.40 |        1.46 |
              | zstd -5  |    0.396 |  535.32 |        571.40 |        1.46 |
              | zstd -10 |    0.374 |  566.81 |        607.42 |        2.51 |
              | zstd -15 |    0.379 |  559.34 |        598.84 |        4.61 |
              | zstd -19 |    0.412 |  514.54 |        547.77 |        8.80 |
              | zlib -1  |    0.940 |  225.52 |        231.68 |        0.04 |
              | zlib -3  |    0.883 |  240.08 |        247.07 |        0.04 |
              | zlib -6  |    0.844 |  251.17 |        258.84 |        0.04 |
              | zlib -9  |    0.837 |  253.27 |        287.64 |        0.04 |
      
        I ran a long series of tests and benchmarks on the btrfs side and the
        gains are very similar to the core benchmarks Nick ran"
      
      * 'zstd-minimal' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
        squashfs: Add zstd support
        btrfs: Add zstd support
        lib: Add zstd modules
        lib: Add xxhash module
      e7cdb60f
  3. 14 Sep, 2017 3 commits