1. 19 Apr, 2024 1 commit
    • Li Nan's avatar
      blk-iocost: do not WARN if iocg was already offlined · 01bc4fda
      Li Nan authored
      In iocg_pay_debt(), warn is triggered if 'active_list' is empty, which
      is intended to confirm iocg is active when it has debt. However, warn
      can be triggered during a blkcg or disk removal, if iocg_waitq_timer_fn()
      is run at that time:
      
        WARNING: CPU: 0 PID: 2344971 at block/blk-iocost.c:1402 iocg_pay_debt+0x14c/0x190
        Call trace:
        iocg_pay_debt+0x14c/0x190
        iocg_kick_waitq+0x438/0x4c0
        iocg_waitq_timer_fn+0xd8/0x130
        __run_hrtimer+0x144/0x45c
        __hrtimer_run_queues+0x16c/0x244
        hrtimer_interrupt+0x2cc/0x7b0
      
      The warn in this situation is meaningless. Since this iocg is being
      removed, the state of the 'active_list' is irrelevant, and 'waitq_timer'
      is canceled after removing 'active_list' in ioc_pd_free(), which ensures
      iocg is freed after iocg_waitq_timer_fn() returns.
      
      Therefore, add the check if iocg was already offlined to avoid warn
      when removing a blkcg or disk.
      Signed-off-by: default avatarLi Nan <linan122@huawei.com>
      Reviewed-by: default avatarYu Kuai <yukuai3@huawei.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Link: https://lore.kernel.org/r/20240419093257.3004211-1-linan666@huaweicloud.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      01bc4fda
  2. 18 Apr, 2024 1 commit
  3. 12 Apr, 2024 1 commit
    • Yu Kuai's avatar
      block: fix that blk_time_get_ns() doesn't update time after schedule · 3ec48489
      Yu Kuai authored
      While monitoring the throttle time of IO from iocost, it's found that
      such time is always zero after the io_schedule() from ioc_rqos_throttle,
      for example, with the following debug patch:
      
      +       printk("%s-%d: %s enter %llu\n", current->comm, current->pid, __func__, blk_time_get_ns());
              while (true) {
                      set_current_state(TASK_UNINTERRUPTIBLE);
                      if (wait.committed)
                              break;
                      io_schedule();
              }
      +       printk("%s-%d: %s exit  %llu\n", current->comm, current->pid, __func__, blk_time_get_ns());
      
      It can be observerd that blk_time_get_ns() always return the same time:
      
      [ 1068.096579] fio-1268: ioc_rqos_throttle enter 1067901962288
      [ 1068.272587] fio-1268: ioc_rqos_throttle exit  1067901962288
      [ 1068.274389] fio-1268: ioc_rqos_throttle enter 1067901962288
      [ 1068.472690] fio-1268: ioc_rqos_throttle exit  1067901962288
      [ 1068.474485] fio-1268: ioc_rqos_throttle enter 1067901962288
      [ 1068.672656] fio-1268: ioc_rqos_throttle exit  1067901962288
      [ 1068.674451] fio-1268: ioc_rqos_throttle enter 1067901962288
      [ 1068.872655] fio-1268: ioc_rqos_throttle exit  1067901962288
      
      And I think the root cause is that 'PF_BLOCK_TS' is always cleared
      by blk_flush_plug() before scheduel(), hence blk_plug_invalidate_ts()
      will never be called:
      
      blk_time_get_ns
       plug->cur_ktime = ktime_get_ns();
       current->flags |= PF_BLOCK_TS;
      
      io_schedule:
       io_schedule_prepare
        blk_flush_plug
         __blk_flush_plug
          /* the flag is cleared, while time is not */
          current->flags &= ~PF_BLOCK_TS;
       schedule
       sched_update_worker
        /* the flag is not set, hence plug->cur_ktime is not cleared */
        if (tsk->flags & PF_BLOCK_TS)
         blk_plug_invalidate_ts()
      
      blk_time_get_ns
       /* got the time stashed before schedule */
       return plug->cur_ktime;
      
      Fix the problem by clearing cached time in __blk_flush_plug().
      
      Fixes: 06b23f92 ("block: update cached timestamp post schedule/preemption")
      Signed-off-by: default avatarYu Kuai <yukuai3@huawei.com>
      Link: https://lore.kernel.org/r/20240411032349.3051233-2-yukuai1@huaweicloud.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      3ec48489
  4. 09 Apr, 2024 1 commit
  5. 07 Apr, 2024 2 commits
  6. 06 Apr, 2024 1 commit
    • Rik van Riel's avatar
      blk-iocost: avoid out of bounds shift · beaa51b3
      Rik van Riel authored
      UBSAN catches undefined behavior in blk-iocost, where sometimes
      iocg->delay is shifted right by a number that is too large,
      resulting in undefined behavior on some architectures.
      
      [  186.556576] ------------[ cut here ]------------
      UBSAN: shift-out-of-bounds in block/blk-iocost.c:1366:23
      shift exponent 64 is too large for 64-bit type 'u64' (aka 'unsigned long long')
      CPU: 16 PID: 0 Comm: swapper/16 Tainted: G S          E    N 6.9.0-0_fbk700_debug_rc2_kbuilder_0_gc85af715 #1
      Hardware name: Quanta Twin Lakes MP/Twin Lakes Passive MP, BIOS F09_3A23 12/08/2020
      Call Trace:
       <IRQ>
       dump_stack_lvl+0x8f/0xe0
       __ubsan_handle_shift_out_of_bounds+0x22c/0x280
       iocg_kick_delay+0x30b/0x310
       ioc_timer_fn+0x2fb/0x1f80
       __run_timer_base+0x1b6/0x250
      ...
      
      Avoid that undefined behavior by simply taking the
      "delay = 0" branch if the shift is too large.
      
      I am not sure what the symptoms of an undefined value
      delay will be, but I suspect it could be more than a
      little annoying to debug.
      Signed-off-by: default avatarRik van Riel <riel@surriel.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Josef Bacik <josef@toxicpanda.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Link: https://lore.kernel.org/r/20240404123253.0f58010f@imladris.surriel.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      beaa51b3
  7. 04 Apr, 2024 5 commits
  8. 02 Apr, 2024 4 commits
  9. 31 Mar, 2024 12 commits
  10. 30 Mar, 2024 8 commits
    • Mikulas Patocka's avatar
      objtool: Fix compile failure when using the x32 compiler · 6205125b
      Mikulas Patocka authored
      When compiling the v6.9-rc1 kernel with the x32 compiler, the following
      errors are reported. The reason is that we take an "unsigned long"
      variable and print it using "PRIx64" format string.
      
      	In file included from check.c:16:
      	check.c: In function ‘add_dead_ends’:
      	/usr/src/git/linux-2.6/tools/objtool/include/objtool/warn.h:46:17: error: format ‘%llx’ expects argument of type ‘long long unsigned int’, but argument 5 has type ‘long unsigned int’ [-Werror=format=]
      	   46 |                 "%s: warning: objtool: " format "\n",   \
      	      |                 ^~~~~~~~~~~~~~~~~~~~~~~~
      	check.c:613:33: note: in expansion of macro ‘WARN’
      	  613 |                                 WARN("can't find unreachable insn at %s+0x%" PRIx64,
      	      |                                 ^~~~
      	...
      Signed-off-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: Josh Poimboeuf <jpoimboe@redhat.com>
      Cc: linux-kernel@vger.kernel.org
      6205125b
    • Linus Torvalds's avatar
      Merge tag 'xfs-6.9-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 712e1425
      Linus Torvalds authored
      Pull xfs fixes from Chandan Babu:
      
       - Allow stripe unit/width value passed via mount option to be written
         over existing values in the super block
      
       - Do not set current->journal_info to avoid its value from being miused
         by another filesystem context
      
      * tag 'xfs-6.9-fixes-1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: don't use current->journal_info
        xfs: allow sunit mount option to repair bad primary sb stripe values
      712e1425
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · fe764a75
      Linus Torvalds authored
      Pull SCSI fixes and updates from James Bottomley:
       "Fully half this pull is updates to lpfc and qla2xxx which got
        committed just as the merge window opened. A sizeable fraction of the
        driver updates are simple bug fixes (and lock reworks for bug fixes in
        the case of lpfc), so rather than splitting the few actual
        enhancements out, we're just adding the drivers to the -rc1 pull.
      
        The enhancements for lpfc are log message removals, copyright updates
        and three patches redefining types. For qla2xxx it's just removing a
        debug message on module removal and the manufacturer detail update.
      
        The two major fixes are the sg teardown race and a core error leg
        problem with the procfs directory not being removed if we destroy a
        created host that never got to the running state. The rest are minor
        fixes and constifications"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (41 commits)
        scsi: bnx2fc: Remove spin_lock_bh while releasing resources after upload
        scsi: core: Fix unremoved procfs host directory regression
        scsi: mpi3mr: Avoid memcpy field-spanning write WARNING
        scsi: sd: Fix TCG OPAL unlock on system resume
        scsi: sg: Avoid sg device teardown race
        scsi: lpfc: Copyright updates for 14.4.0.1 patches
        scsi: lpfc: Update lpfc version to 14.4.0.1
        scsi: lpfc: Define types in a union for generic void *context3 ptr
        scsi: lpfc: Define lpfc_dmabuf type for ctx_buf ptr
        scsi: lpfc: Define lpfc_nodelist type for ctx_ndlp ptr
        scsi: lpfc: Use a dedicated lock for ras_fwlog state
        scsi: lpfc: Release hbalock before calling lpfc_worker_wake_up()
        scsi: lpfc: Replace hbalock with ndlp lock in lpfc_nvme_unregister_port()
        scsi: lpfc: Update lpfc_ramp_down_queue_handler() logic
        scsi: lpfc: Remove IRQF_ONESHOT flag from threaded IRQ handling
        scsi: lpfc: Move NPIV's transport unregistration to after resource clean up
        scsi: lpfc: Remove unnecessary log message in queuecommand path
        scsi: qla2xxx: Update version to 10.02.09.200-k
        scsi: qla2xxx: Delay I/O Abort on PCI error
        scsi: qla2xxx: Change debug message during driver unload
        ...
      fe764a75
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · ac672718
      Linus Torvalds authored
      Pull i2c fix from Wolfram Sang:
       "A fix from Andi for I2C host drivers"
      
      * tag 'i2c-for-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: i801: Fix a refactoring that broke a touchpad on Lenovo P1
      ac672718
    • Linus Torvalds's avatar
      Merge tag 'usb-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · ff789a26
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are a bunch of small USB fixes for reported problems and
        regressions for 6.9-rc2. Included in here are:
      
         - deadlock fixes for long-suffering issues
      
         - USB phy driver revert for reported problem
      
         - typec fixes for reported problems
      
         - duplicate id in dwc3 dropped
      
         - dwc2 driver fixes
      
         - udc driver warning fix
      
         - cdc-wdm race bugfix
      
         - other tiny USB bugfixes
      
        All of these have been in linux-next this past week with no reported
        issues"
      
      * tag 'usb-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (26 commits)
        USB: core: Fix deadlock in port "disable" sysfs attribute
        USB: core: Add hub_get() and hub_put() routines
        usb: typec: ucsi: Check capabilities before cable and identity discovery
        usb: typec: ucsi: Clear UCSI_CCI_RESET_COMPLETE before reset
        usb: typec: ucsi_acpi: Refactor and fix DELL quirk
        usb: typec: ucsi: Ack unsupported commands
        usb: typec: ucsi: Check for notifications after init
        usb: typec: ucsi: Clear EVENT_PENDING under PPM lock
        usb: typec: Return size of buffer if pd_set operation succeeds
        usb: udc: remove warning when queue disabled ep
        usb: dwc3: pci: Drop duplicate ID
        usb: dwc3: Properly set system wakeup
        Revert "usb: phy: generic: Get the vbus supply"
        usb: cdc-wdm: close race between read and workqueue
        usb: dwc2: gadget: LPM flow fix
        usb: dwc2: gadget: Fix exiting from clock gating
        usb: dwc2: host: Fix ISOC flow in DDMA mode
        usb: dwc2: host: Fix remote wakeup from hibernation
        usb: dwc2: host: Fix hibernation flow
        USB: core: Fix deadlock in usb_deauthorize_interface()
        ...
      ff789a26
    • Linus Torvalds's avatar
      Merge tag 'staging-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging · 4e6e4229
      Linus Torvalds authored
      Pull staging driver fixes from Greg KH:
       "Here are two small staging driver fixes for the vc04_services driver
        that resolve reported problems:
      
         - strncpy fix for information leak
      
         - another information leak discovered by the previous strncpy fix
      
        Both of these have been in linux-next all this past week with no
        reported issues"
      
      * tag 'staging-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
        staging: vc04_services: fix information leak in create_component()
        staging: vc04_services: changen strncpy() to strscpy_pad()
      4e6e4229
    • Wolfram Sang's avatar
      Merge tag 'i2c-host-fixes-6.9-rc2' of... · 2953eb02
      Wolfram Sang authored
      Merge tag 'i2c-host-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current
      
      One fix in the i801 driver where a bug caused touchpad
      malfunctions on some Lenovo P1 models by incorrectly overwriting
      a status variable during successful SMBUS transactions.
      2953eb02
    • Masahiro Yamada's avatar
      x86/build: Use obj-y to descend into arch/x86/virt/ · 3f1a9bc5
      Masahiro Yamada authored
      Commit c33621b4 ("x86/virt/tdx: Wire up basic SEAMCALL functions")
      introduced a new instance of core-y instead of the standardized obj-y
      syntax.
      
      X86 Makefiles descend into subdirectories of arch/x86/virt inconsistently;
      into arch/x86/virt/ via core-y defined in arch/x86/Makefile, but into
      arch/x86/virt/svm/ via obj-y defined in arch/x86/Kbuild.
      
      This is problematic when you build a single object in parallel because
      multiple threads attempt to build the same file.
      
        $ make -j$(nproc) arch/x86/virt/vmx/tdx/seamcall.o
          [ snip ]
          AS      arch/x86/virt/vmx/tdx/seamcall.o
          AS      arch/x86/virt/vmx/tdx/seamcall.o
        fixdep: error opening file: arch/x86/virt/vmx/tdx/.seamcall.o.d: No such file or directory
        make[4]: *** [scripts/Makefile.build:362: arch/x86/virt/vmx/tdx/seamcall.o] Error 2
      
      Use the obj-y syntax, as it works correctly.
      Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      Link: https://lore.kernel.org/r/20240330060554.18524-1-masahiroy@kernel.org
      3f1a9bc5
  11. 29 Mar, 2024 4 commits
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2024-03-30' of https://gitlab.freedesktop.org/drm/kernel · 486291a0
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular fixes for rc2, quite a few i915/amdgpu as usual, some xe, and
        then mostly scattered around. rc3 might be quieter with the holidays
        but we shall see.
      
        bridge:
         - select DRM_KMS_HELPER
      
        dma-buf:
         - fix NULL-pointer deref
      
        dp:
         - fix div-by-zero in DP MST unplug code
      
        fbdev:
         - select FB_IOMEM_FOPS for SBus
      
        sched:
         - fix NULL-pointer deref
      
        xe:
         - Fix build on mips
         - Fix wrong bound checks
         - Fix use of msec rather than jiffies
         - Remove dead code
      
        amdgpu:
         - SMU 14.0.1 updates
         - DCN 3.5.x updates
         - VPE fix
         - eDP panel flickering fix
         - Suspend fix
         - PSR fix
         - DCN 3.0+ fix
         - VCN 4.0.6 updates
         - debugfs fix
      
        amdkfd:
         - DMA-Buf fix
         - GFX 9.4.2 TLB flush fix
         - CP interrupt fix
      
        i915:
         - Fix for BUG_ON/BUILD_BUG_ON IN I915_memcpy.c
         - Update a MTL workaround
         - Fix locking inversion in hwmon's sysfs
         - Remove a bogus error message around PXP
         - Fix UAF on VMA
         - Reset queue_priority_hint on parking
         - Display Fixes:
         - Remove duplicated audio enable/disable on SDVO and DP
         - Disable AuxCCS for Xe driver
         - Revert init order of MIPI DSI
         - DRRS debugfs fix with an extra refactor patch
         - VRR related fixes
         - Fix a JSL eDP corruption
         - Fix the cursor physical dma address
         - BIOS VBT related fix
      
        nouveau:
         - dmem: handle kcalloc() allocation failures
      
        qxl:
         - remove unused variables
      
        rockchip:
         - vop2: remove support for AR30 and AB30 formats
      
        vmwgfx:
         - debugfs: create ttm_resource_manager entry only if needed"
      
      * tag 'drm-fixes-2024-03-30' of https://gitlab.freedesktop.org/drm/kernel: (55 commits)
        drm/i915/bios: Tolerate devdata==NULL in intel_bios_encoder_supports_dp_dual_mode()
        drm/i915: Pre-populate the cursor physical dma address
        drm/i915/gt: Reset queue_priority_hint on parking
        drm/i915/vma: Fix UAF on destroy against retire race
        drm/i915: Do not print 'pxp init failed with 0' when it succeed
        drm/i915: Do not match JSL in ehl_combo_pll_div_frac_wa_needed()
        drm/i915/hwmon: Fix locking inversion in sysfs getter
        drm/i915/dsb: Fix DSB vblank waits when using VRR
        drm/i915/vrr: Generate VRR "safe window" for DSB
        drm/i915/display/debugfs: Fix duplicate checks in i915_drrs_status
        drm/i915/drrs: Refactor CPU transcoder DRRS check
        drm/i915/mtl: Update workaround 14018575942
        drm/i915/dsi: Go back to the previous INIT_OTP/DISPLAY_ON order, mostly
        drm/i915/display: Disable AuxCCS framebuffers if built for Xe
        drm/i915: Stop doing double audio enable/disable on SDVO and g4x+ DP
        drm/i915: Add includes for BUG_ON/BUILD_BUG_ON in i915_memcpy.c
        drm/qxl: remove unused variable from `qxl_process_single_command()`
        drm/qxl: remove unused `count` variable from `qxl_surface_id_alloc()`
        drm/i915: add bug.h include to i915_memcpy.c
        drm/vmwgfx: Create debugfs ttm_resource_manager entry only if needed
        ...
      486291a0
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-fixes-6.9-rc2' of... · 1ab5c8a3
      Linus Torvalds authored
      Merge tag 'linux_kselftest-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull kselftest fixes from Shuah Khan:
       "Fixes to seccomp and ftrace tests and a change to add config file for
        dmabuf-heap test to increase coverage"
      
      * tag 'linux_kselftest-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        selftests: dmabuf-heap: add config file for the test
        selftests/seccomp: Try to fit runtime of benchmark into timeout
        selftests/ftrace: Fix event filter target_func selection
      1ab5c8a3
    • Linus Torvalds's avatar
      Merge tag 'linux_kselftest-kunit-fixes-6.9-rc2' of... · a2ad5d9e
      Linus Torvalds authored
      Merge tag 'linux_kselftest-kunit-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest
      
      Pull KUnit fixes from Shuah Khan:
       "One urgent fix for --alltests build failure related to renaming of
        CONFIG_DAMON_DBGFS to DAMON_DBGFS_DEPRECATED to the missing config
        option"
      
      * tag 'linux_kselftest-kunit-fixes-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest:
        kunit: configs: Enable CONFIG_DAMON_DBGFS_DEPRECATED for --alltests
      a2ad5d9e
    • Muhammad Usama Anjum's avatar
      selftests: dmabuf-heap: add config file for the test · 224fe424
      Muhammad Usama Anjum authored
      The config fragment enlists all the config options needed for the test.
      This config is merged into the kernel's config on which this test is
      run.
      
      Fixed whitespace errors during commit:
      Shuah Khan <skhan@linuxfoundation.org>
      Reviewed-by: default avatarT.J. Mercier <tjmercier@google.com>
      Signed-off-by: default avatarMuhammad Usama Anjum <usama.anjum@collabora.com>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      224fe424