1. 25 Oct, 2019 1 commit
    • Chao Yu's avatar
      f2fs: cache global IPU bio · 0b20fcec
      Chao Yu authored
      In commit 8648de2c ("f2fs: add bio cache for IPU"), we added
      f2fs_submit_ipu_bio() in __write_data_page() as below:
      
      __write_data_page()
      
      	if (!S_ISDIR(inode->i_mode) && !IS_NOQUOTA(inode)) {
      		f2fs_submit_ipu_bio(sbi, bio, page);
      		....
      	}
      
      in order to avoid below deadlock:
      
      Thread A				Thread B
      - __write_data_page (inode x, page y)
       - f2fs_do_write_data_page
        - set_page_writeback        ---- set writeback flag in page y
        - f2fs_inplace_write_data
       - f2fs_balance_fs
      					 - lock gc_mutex
       - lock gc_mutex
      					  - f2fs_gc
      					   - do_garbage_collect
      					    - gc_data_segment
      					     - move_data_page
      					      - f2fs_wait_on_page_writeback
      					       - wait_on_page_writeback  --- wait writeback of page y
      
      However, the bio submission breaks the merge of IPU IOs.
      
      So in this patch let's add a global bio cache for merged IPU pages,
      then f2fs_wait_on_page_writeback() is able to submit bio if a
      writebacked page is cached in global bio cache.
      Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      0b20fcec
  2. 22 Oct, 2019 4 commits
  3. 04 Oct, 2019 11 commits
    • Chao Yu's avatar
      f2fs: fix to update time in lazytime mode · fe1897ea
      Chao Yu authored
      generic/018 reports an inconsistent status of atime, the
      testcase is as below:
      - open file with O_SYNC
      - write file to construct fraged space
      - calc md5 of file
      - record {a,c,m}time
      - defrag file --- do nothing
      - umount & mount
      - check {a,c,m}time
      
      The root cause is, as f2fs enables lazytime by default, atime
      update will dirty vfs inode, rather than dirtying f2fs inode (by set
      with FI_DIRTY_INODE), so later f2fs_write_inode() called from VFS will
      fail to update inode page due to our skip:
      
      f2fs_write_inode()
      	if (is_inode_flag_set(inode, FI_DIRTY_INODE))
      		return 0;
      
      So eventually, after evict(), we lose last atime for ever.
      
      To fix this issue, we need to check whether {a,c,m,cr}time is
      consistent in between inode cache and inode page, and only skip
      f2fs_update_inode() if f2fs inode is not dirty and time is
      consistent as well.
      Signed-off-by: default avatarChao Yu <yuchao0@huawei.com>
      Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
      fe1897ea
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · b145b0eb
      Linus Torvalds authored
      Pull KVM fixes from Paolo Bonzini:
       "ARM and x86 bugfixes of all kinds.
      
        The most visible one is that migrating a nested hypervisor has always
        been busted on Broadwell and newer processors, and that has finally
        been fixed"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (22 commits)
        KVM: x86: omit "impossible" pmu MSRs from MSR list
        KVM: nVMX: Fix consistency check on injected exception error code
        KVM: x86: omit absent pmu MSRs from MSR list
        selftests: kvm: Fix libkvm build error
        kvm: vmx: Limit guest PMCs to those supported on the host
        kvm: x86, powerpc: do not allow clearing largepages debugfs entry
        KVM: selftests: x86: clarify what is reported on KVM_GET_MSRS failure
        KVM: VMX: Set VMENTER_L1D_FLUSH_NOT_REQUIRED if !X86_BUG_L1TF
        selftests: kvm: add test for dirty logging inside nested guests
        KVM: x86: fix nested guest live migration with PML
        KVM: x86: assign two bits to track SPTE kinds
        KVM: x86: Expose XSAVEERPTR to the guest
        kvm: x86: Enumerate support for CLZERO instruction
        kvm: x86: Use AMD CPUID semantics for AMD vCPUs
        kvm: x86: Improve emulation of CPUID leaves 0BH and 1FH
        KVM: X86: Fix userspace set invalid CR4
        kvm: x86: Fix a spurious -E2BIG in __do_cpuid_func
        KVM: LAPIC: Loosen filter for adaptive tuning of lapic_timer_advance_ns
        KVM: arm/arm64: vgic: Use the appropriate TRACE_INCLUDE_PATH
        arm64: KVM: Kill hyp_alternate_select()
        ...
      b145b0eb
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.4-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip · 50dfd03d
      Linus Torvalds authored
      Pull xen fixes and cleanups from Juergen Gross:
      
       - a fix in the Xen balloon driver avoiding hitting a BUG_ON() in some
         cases, plus a follow-on cleanup series for that driver
      
       - a patch for introducing non-blocking EFI callbacks in Xen's EFI
         driver, plu a cleanup patch for Xen EFI handling merging the x86 and
         ARM arch specific initialization into the Xen EFI driver
      
       - a fix of the Xen xenbus driver avoiding a self-deadlock when cleaning
         up after a user process has died
      
       - a fix for Xen on ARM after removal of ZONE_DMA
      
       - a cleanup patch for avoiding build warnings for Xen on ARM
      
      * tag 'for-linus-5.4-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
        xen/xenbus: fix self-deadlock after killing user process
        xen/efi: have a common runtime setup function
        arm: xen: mm: use __GPF_DMA32 for arm64
        xen/balloon: Clear PG_offline in balloon_retrieve()
        xen/balloon: Mark pages PG_offline in balloon_append()
        xen/balloon: Drop __balloon_append()
        xen/balloon: Set pages PageOffline() in balloon_add_region()
        ARM: xen: unexport HYPERVISOR_platform_op function
        xen/efi: Set nonblocking callbacks
      50dfd03d
    • Linus Torvalds's avatar
      Merge tag 'copy-struct-from-user-v5.4-rc2' of... · e524d16e
      Linus Torvalds authored
      Merge tag 'copy-struct-from-user-v5.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux
      
      Pull copy_struct_from_user() helper from Christian Brauner:
       "This contains the copy_struct_from_user() helper which got split out
        from the openat2() patchset. It is a generic interface designed to
        copy a struct from userspace.
      
        The helper will be especially useful for structs versioned by size of
        which we have quite a few. This allows for backwards compatibility,
        i.e. an extended struct can be passed to an older kernel, or a legacy
        struct can be passed to a newer kernel. For the first case (extended
        struct, older kernel) the new fields in an extended struct can be set
        to zero and the struct safely passed to an older kernel.
      
        The most obvious benefit is that this helper lets us get rid of
        duplicate code present in at least sched_setattr(), perf_event_open(),
        and clone3(). More importantly it will also help to ensure that users
        implementing versioning-by-size end up with the same core semantics.
      
        This point is especially crucial since we have at least one case where
        versioning-by-size is used but with slighly different semantics:
        sched_setattr(), perf_event_open(), and clone3() all do do similar
        checks to copy_struct_from_user() while rt_sigprocmask(2) always
        rejects differently-sized struct arguments.
      
        With this pull request we also switch over sched_setattr(),
        perf_event_open(), and clone3() to use the new helper"
      
      * tag 'copy-struct-from-user-v5.4-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
        usercopy: Add parentheses around assignment in test_copy_struct_from_user
        perf_event_open: switch to copy_struct_from_user()
        sched_setattr: switch to copy_struct_from_user()
        clone3: switch to copy_struct_from_user()
        lib: introduce copy_struct_from_user() helper
      e524d16e
    • Linus Torvalds's avatar
      Merge tag 'for-linus-20191003' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux · af0622f6
      Linus Torvalds authored
      Pull clone3/pidfd fixes from Christian Brauner:
       "This contains a couple of fixes:
      
         - Fix pidfd selftest compilation (Shuah Kahn)
      
           Due to a false linking instruction in the Makefile compilation for
           the pidfd selftests would fail on some systems.
      
         - Fix compilation for glibc on RISC-V systems (Seth Forshee)
      
           In some scenarios linux/uapi/linux/sched.h is included where
           __ASSEMBLY__ is defined causing a build failure because struct
           clone_args was not guarded by an #ifndef __ASSEMBLY__.
      
         - Add missing clone3() and struct clone_args kernel-doc (Christian Brauner)
      
           clone3() and struct clone_args were missing kernel-docs. (The goal
           is to use kernel-doc for any function or type where it's worth it.)
           For struct clone_args this also contains a comment about the fact
           that it's versioned by size"
      
      * tag 'for-linus-20191003' of git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux:
        sched: add kernel-doc for struct clone_args
        fork: add kernel-doc for clone3
        selftests: pidfd: Fix undefined reference to pthread_create()
        sched: Add __ASSEMBLY__ guards around struct clone_args
      af0622f6
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2019-10-04' of git://anongit.freedesktop.org/drm/drm · 768b47b7
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Been offline for 3 days, got back and had some fixes queued up.
      
        Nothing too major, the i915 dp-mst fix is important, and amdgpu has a
        bulk move speedup fix and some regressions, but nothing too insane for
        an rc2 pull. The intel fixes are also 2 weeks worth, they missed the
        boat last week.
      
        core:
         - writeback fixes
      
        i915:
         - Fix DP-MST crtc_mask
         - Fix dsc dpp calculations
         - Fix g4x sprite scaling stride check with GTT remapping
         - Fix concurrence on cases where requests where getting retired at
           same time as resubmitted to HW
         - Fix gen9 display resolutions by setting the right max plane width
         - Fix GPU hang on preemption
         - Mark contents as dirty on a write fault. This was breaking cursor
           sprite with dumb buffers.
      
        komeda:
         - memory leak fix
      
        tilcdc:
         - include fix
      
        amdgpu:
         - Enable bulk moves
         - Power metrics fixes for Navi
         - Fix S4 regression
         - Add query for tcc disabled mask
         - Fix several leaks in error paths
         - randconfig fixes
         - clang fixes"
      
      * tag 'drm-fixes-2019-10-04' of git://anongit.freedesktop.org/drm/drm: (21 commits)
        Revert "drm/i915: Fix DP-MST crtc_mask"
        drm/omap: fix max fclk divider for omap36xx
        drm/i915: Fix g4x sprite scaling stride check with GTT remapping
        drm/i915/dp: Fix dsc bpp calculations, v5.
        drm/amd/display: fix dcn21 Makefile for clang
        drm/amd/display: hide an unused variable
        drm/amdgpu: display_mode_vba_21: remove uint typedef
        drm/amdgpu: hide another #warning
        drm/amdgpu: make pmu support optional, again
        drm/amd/display: memory leak
        drm/amdgpu: fix multiple memory leaks in acp_hw_init
        drm/amdgpu: return tcc_disabled_mask to userspace
        drm/amdgpu: don't increment vram lost if we are in hibernation
        Revert "drm/amdgpu: disable stutter mode for renoir"
        drm/amd/powerplay: add sensor lock support for smu
        drm/amd/powerplay: change metrics update period from 1ms to 100ms
        drm/amdgpu: revert "disable bulk moves for now"
        drm/tilcdc: include linux/pinctrl/consumer.h again
        drm/komeda: prevent memory leak in komeda_wb_connector_add
        drm: Clear the fence pointer when writeback job signaled
        ...
      768b47b7
    • Linus Torvalds's avatar
      Merge tag 'for-linus-2019-10-03' of git://git.kernel.dk/linux-block · c4bd70e8
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - Mandate timespec64 for the io_uring timeout ABI (Arnd)
      
       - Set of NVMe changes via Sagi:
           - controller removal race fix from Balbir
           - quirk additions from Gabriel and Jian-Hong
           - nvme-pci power state save fix from Mario
           - Add 64bit user commands (for 64bit registers) from Marta
           - nvme-rdma/nvme-tcp fixes from Max, Mark and Me
           - Minor cleanups and nits from James, Dan and John
      
       - Two s390 dasd fixes (Jan, Stefan)
      
       - Have loop change block size in DIO mode (Martijn)
      
       - paride pg header ifdef guard (Masahiro)
      
       - Two blk-mq queue scheduler tweaks, fixing an ordering issue on zoned
         devices and suboptimal performance on others (Ming)
      
      * tag 'for-linus-2019-10-03' of git://git.kernel.dk/linux-block: (22 commits)
        block: sed-opal: fix sparse warning: convert __be64 data
        block: sed-opal: fix sparse warning: obsolete array init.
        block: pg: add header include guard
        Revert "s390/dasd: Add discard support for ESE volumes"
        s390/dasd: Fix error handling during online processing
        io_uring: use __kernel_timespec in timeout ABI
        loop: change queue block size to match when using DIO
        blk-mq: apply normal plugging for HDD
        blk-mq: honor IO scheduler for multiqueue devices
        nvme-rdma: fix possible use-after-free in connect timeout
        nvme: Move ctrl sqsize to generic space
        nvme: Add ctrl attributes for queue_count and sqsize
        nvme: allow 64-bit results in passthru commands
        nvme: Add quirk for Kingston NVME SSD running FW E8FK11.T
        nvmet-tcp: remove superflous check on request sgl
        Added QUIRKs for ADATA XPG SX8200 Pro 512GB
        nvme-rdma: Fix max_hw_sectors calculation
        nvme: fix an error code in nvme_init_subsystem()
        nvme-pci: Save PCI state before putting drive into deepest state
        nvme-tcp: fix wrong stop condition in io_work
        ...
      c4bd70e8
    • Paolo Bonzini's avatar
      KVM: x86: omit "impossible" pmu MSRs from MSR list · cf05a67b
      Paolo Bonzini authored
      INTEL_PMC_MAX_GENERIC is currently 32, which exceeds the 18
      contiguous MSR indices reserved by Intel for event selectors.
      Since some machines actually have MSRs past the reserved range,
      filtering them against x86_pmu.num_counters_gp may have false
      positives.  Cut the list to 18 entries to avoid this.
      Reported-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Suggested-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Cc: Jim Mattson <jamttson@google.com>
      Fixes: e2ada66e ("kvm: x86: Add Intel PMU MSRs to msrs_to_save[]", 2019-08-21)
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      cf05a67b
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2019-10-03-1' of... · 07bba341
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2019-10-03-1' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
      
      - Fix DP-MST crtc_mask
      - Fix dsc dpp calculations
      - Fix g4x sprite scaling stride check with GTT remapping
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191003193051.GA26421@intel.com
      07bba341
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2019-10-03' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes · 63c4cec7
      Dave Airlie authored
       - One include fix for tilcdc
       - A clock fix for OMAP
       - A memory leak fix for Komeda
       - Some fixes for resources cleanups with writeback
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Maxime Ripard <mripard@kernel.org>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191003081031.oykms5fg4tijvdri@gilmour
      63c4cec7
    • Dave Airlie's avatar
      Merge tag 'drm-fixes-5.4-2019-10-02' of git://people.freedesktop.org/~agd5f/linux into drm-fixes · 0f83eb88
      Dave Airlie authored
      drm-fixes-5.4-2019-10-02:
      
      amdgpu:
      - Enable bulk moves
      - Power metrics fixes for Navi
      - Fix S4 regression
      - Add query for tcc disabled mask
      - Fix several leaks in error paths
      - randconfig fixes
      - clang fixes
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Alex Deucher <alexdeucher@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20191002204909.3519-1-alexander.deucher@amd.com
      0f83eb88
  4. 03 Oct, 2019 19 commits
  5. 02 Oct, 2019 5 commits
    • Linus Torvalds's avatar
      timer-of: don't use conditional expression with mixed 'void' types · 0f1a7b3f
      Linus Torvalds authored
      Randy Dunlap reports on the sparse list that sparse warns about this
      expression:
      
              of_irq->percpu ? free_percpu_irq(of_irq->irq, clkevt) :
                      free_irq(of_irq->irq, clkevt);
      
      and honestly, sparse is correct to warn.  The return type of
      free_percpu_irq() is 'void', while free_irq() returns a 'const void *'
      that is the devname argument passed in to the request_irq().
      
      You can't mix a void type with a non-void types in a conditional
      expression according to the C standard.  It so happens that gcc seems to
      accept it - and the resulting type of the expression is void - but
      there's really no reason for the kernel to have this kind of
      non-standard expression with no real upside.
      
      The natural way to write that expression is with an if-statement:
      
              if (of_irq->percpu)
                      free_percpu_irq(of_irq->irq, clkevt);
              else
                      free_irq(of_irq->irq, clkevt);
      
      which is more legible anyway.
      
      I'm not sure why that timer-of code seems to have this odd pattern.  It
      does the same at allocation time, but at least there the types match,
      and it makes sense as an expression.
      Reported-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0f1a7b3f
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 5021b918
      Linus Torvalds authored
      Pull timer fix from Ingo Molnar:
       "Fix a broadcast-timer handling race that can result in spuriously and
        indefinitely delayed hrtimers and even RCU stalls if the system is
        otherwise quiet"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tick: broadcast-hrtimer: Fix a race in bc_set_next
      5021b918
    • Linus Torvalds's avatar
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 714366f8
      Linus Torvalds authored
      Pull membarrier fix from Ingo Molnar:
       "Fix broken locking within membarrier_private_expedited()"
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        membarrier: Fix RCU locking bug caused by faulty merge
      714366f8
    • Linus Torvalds's avatar
      Merge tag 'erofs-for-5.4-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs · 65aa35c9
      Linus Torvalds authored
      Pull erofs fixes from Gao Xiang:
       "Three patches to address regressions due to recent cleanups, mainly
        found by stress test on latest mainline kernel (no more regression out
        compared with older kernels for more than a week)
      
        One additional patch updates sub-entries in MAINTAINERS.
      
        Summary:
      
         - Fix error handling in erofs_read_superblock
      
         - Fix locking in erofs_get_meta_page
      
         - Fix inplace behavior due to decompression frontend cleanup
      
         - Update sub-entries in MAINTAINERS in order to better blame"
      
      * tag 'erofs-for-5.4-rc2-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs:
        erofs: fix mis-inplace determination related with noio chain
        erofs: fix erofs_get_meta_page locking due to a cleanup
        MAINTAINERS: erofs: complete sub-entries for erofs
        erofs: fix return value check in erofs_read_superblock()
      65aa35c9
    • Borislav Petkov's avatar
      char/random: Add a newline at the end of the file · 3fd57e7a
      Borislav Petkov authored
      On Tue, Oct 01, 2019 at 10:14:40AM -0700, Linus Torvalds wrote:
      > The previous state of the file didn't have that 0xa at the end, so you get that
      >
      >
      >   -EXPORT_SYMBOL_GPL(add_bootloader_randomness);
      >   \ No newline at end of file
      >   +EXPORT_SYMBOL_GPL(add_bootloader_randomness);
      >
      > which is "the '-' line doesn't have a newline, the '+' line does" marker.
      
      Aaha, that makes total sense, thanks for explaining. Oh well, let's fix
      it then so that people don't scratch heads like me.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3fd57e7a