1. 30 Mar, 2024 1 commit
    • 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
  2. 29 Mar, 2024 21 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
    • Mark Brown's avatar
      selftests/seccomp: Try to fit runtime of benchmark into timeout · 7155cc45
      Mark Brown authored
      The seccomp benchmark runs five scenarios, one calibration run with no
      seccomp filters enabled then four further runs each adding a filter. The
      calibration run times itself for 15s and then each additional run executes
      for the same number of times.
      
      Currently the seccomp tests, including the benchmark, run with an extended
      120s timeout but this is not sufficient to robustly run the tests on a lot
      of platforms. Sample timings from some recent runs:
      
         Platform          Run 1  Run 2  Run 3  Run 4
         ---------         -----  -----  -----  -----
         PowerEdge R200    16.6s  16.6s  31.6s  37.4s
         BBB (arm)         20.4s  20.4s  54.5s
         Synquacer (arm64) 20.7s  23.7s  40.3s
      
      The x86 runs from the PowerEdge are quite marginal and routinely fail, for
      the successful run reported here the timed portions of the run are at
      117.2s leaving less than 3s of margin which is frequently breached. The
      added overhead of adding filters on the other platforms is such that there
      is no prospect of their runs fitting into the 120s timeout, especially
      on 32 bit arm where there is no BPF JIT.
      
      While we could lower the time we calibrate for I'm also already seeing the
      currently completing runs reporting issues with the per filter overheads
      not matching expectations:
      
      Let's instead raise the timeout to 180s which is only a 50% increase on the
      current timeout which is itself not *too* large given that there's only two
      tests in this suite.
      Signed-off-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      7155cc45
    • Mark Rutland's avatar
      selftests/ftrace: Fix event filter target_func selection · 8ecab2e6
      Mark Rutland authored
      The event filter function test has been failing in our internal test
      farm:
      
      | # not ok 33 event filter function - test event filtering on functions
      
      Running the test in verbose mode indicates that this is because the test
      erroneously determines that kmem_cache_free() is the most common caller
      of kmem_cache_free():
      
        # # + cut -d: -f3 trace
        # # + sed s/call_site=([^+]*)+0x.*/1/
        # # + sort
        # # + uniq -c
        # # + sort
        # # + tail -n 1
        # # + sed s/^[ 0-9]*//
        # # + target_func=kmem_cache_free
      
      ... and as kmem_cache_free() doesn't call itself, setting this as the
      filter function for kmem_cache_free() results in no hits, and
      consequently the test fails:
      
        # # + grep kmem_cache_free trace
        # # + grep kmem_cache_free
        # # + wc -l
        # # + hitcnt=0
        # # + grep kmem_cache_free trace
        # # + grep -v kmem_cache_free
        # # + wc -l
        # # + misscnt=0
        # # + [ 0 -eq 0 ]
        # # + exit_fail
      
      This seems to be because the system in question has tasks with ':' in
      their name (which a number of kernel worker threads have). These show up
      in the trace, e.g.
      
        test:.sh-1299    [004] .....  2886.040608: kmem_cache_free: call_site=putname+0xa4/0xc8 ptr=000000000f4d22f4 name=names_cache
      
      ... and so when we try to extact the call_site with:
      
        cut -d: -f3 trace | sed 's/call_site=\([^+]*\)+0x.*/\1/'
      
      ... the 'cut' command will extrace the column containing
      'kmem_cache_free' rather than the column containing 'call_site=...', and
      the 'sed' command will leave this unchanged. Consequently, the test will
      decide to use 'kmem_cache_free' as the filter function, resulting in the
      failure seen above.
      
      Fix this by matching the 'call_site=<func>' part specifically to extract
      the function name.
      Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
      Reported-by: default avatarAishwarya TCV <aishwarya.tcv@arm.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
      Cc: Shuah Khan <shuah@kernel.org>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: linux-kernel@vger.kernel.org
      Cc: linux-kselftest@vger.kernel.org
      Cc: linux-trace-kernel@vger.kernel.org
      Acked-by: default avatarMasami Hiramatsu (Google) <mhiramat@kernel.org>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      8ecab2e6
    • Dave Airlie's avatar
      Merge tag 'drm-intel-fixes-2024-03-28' of... · b01f596a
      Dave Airlie authored
      Merge tag 'drm-intel-fixes-2024-03-28' of https://anongit.freedesktop.org/git/drm/drm-intel into drm-fixes
      
      Core/GT Fixes:
      - Fix for BUG_ON/BUILD_BUG_ON IN I915_memcpy.c (Joonas)
      - Update a MTL workaround (Tejas)
      - Fix locking inversion in hwmon's sysfs (Janusz)
      - Remove a bogus error message around PXP (Jose)
      - Fix UAF on VMA (Janusz)
      - Reset queue_priority_hint on parking (Chris)
      
      Display Fixes:
      - Remove duplicated audio enable/disable on SDVO and DP (Ville)
      - Disable AuxCCS for Xe driver (Juha-Pekka)
      - Revert init order of MIPI DSI (Ville)
      - DRRS debugfs fix with an extra refactor patch (Bhanuprakash)
      - VRR related fixes (Ville)
      - Fix a JSL eDP corruption (Jonathon)
      - Fix the cursor physical dma address (Ville)
      - BIOS VBT related fix (Ville)
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/ZgYaIVgjIs30mIvS@intel.com
      b01f596a
    • Borislav Petkov (AMD)'s avatar
      x86/bugs: Fix the SRSO mitigation on Zen3/4 · 4535e1a4
      Borislav Petkov (AMD) authored
      The original version of the mitigation would patch in the calls to the
      untraining routines directly.  That is, the alternative() in UNTRAIN_RET
      will patch in the CALL to srso_alias_untrain_ret() directly.
      
      However, even if commit e7c25c44 ("x86/cpu: Cleanup the untrain
      mess") meant well in trying to clean up the situation, due to micro-
      architectural reasons, the untraining routine srso_alias_untrain_ret()
      must be the target of a CALL instruction and not of a JMP instruction as
      it is done now.
      
      Reshuffle the alternative macros to accomplish that.
      
      Fixes: e7c25c44 ("x86/cpu: Cleanup the untrain mess")
      Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Reviewed-by: default avatarIngo Molnar <mingo@kernel.org>
      Cc: stable@kernel.org
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4535e1a4
    • Linus Torvalds's avatar
      Merge tag '6.9-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 091619ba
      Linus Torvalds authored
      Pull smb client fixes from Steve French:
      
       - Add missing trace point (noticed when debugging the recent mknod LSM
         regression)
      
       - fscache fix
      
      * tag '6.9-rc1-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: Fix duplicate fscache cookie warnings
        smb3: add trace event for mknod
      091619ba
    • Linus Torvalds's avatar
      Merge tag 'thermal-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 3a3c0de6
      Linus Torvalds authored
      Pull thermal control fixes from Rafael Wysocki:
       "These revert a problematic optimization commit and address a devfreq
        cooling device issue.
      
        Specifics:
      
         - Revert thermal core optimization that introduced a functional issue
           causing a critical trip point to be crossed in some cases (Daniel
           Lezcano)
      
         - Add missing conversion between different state ranges to the
           devfreq cooling device driver (Ye Zhang)"
      
      * tag 'thermal-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        thermal: devfreq_cooling: Fix perf state when calculate dfc res_util
        Revert "thermal: core: Don't update trip points inside the hysteresis range"
      3a3c0de6
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · ab317b32
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These fix two issues that may lead to attempts to use memory that has
        been freed already.
      
        Specifics:
      
         - Drop __exit annotation from einj_remove() in the ACPI APEI code
           because this function can be called during runtime (Arnd Bergmann)
      
         - Make acpi_db_walk_for_fields() check acpi_evaluate_object() return
           value to avoid accessing memory that has been freed (Nikita
           Kiryushin)"
      
      * tag 'acpi-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPICA: debugger: check status of acpi_evaluate_object() in acpi_db_walk_for_fields()
        ACPI: APEI: EINJ: mark remove callback as non-__exit
      ab317b32
    • Linus Torvalds's avatar
      mm: clean up populate_vma_page_range() FOLL_* flag handling · 1096bc93
      Linus Torvalds authored
      The code wasn't exactly wrong, but it was very odd, and it used
      FOLL_FORCE together with FOLL_WRITE when it really didn't need to (it
      only set FOLL_WRITE for writable mappings, so then the FOLL_FORCE was
      pointless).
      
      It also pointlessly called __get_user_pages() even when it knew it
      wouldn't populate anything because the vma wasn't accessible and it
      explicitly tested for and did *not* set FOLL_FORCE for inaccessible
      vma's.
      
      This code does need to use FOLL_FORCE, because we want to do fault in
      writable shared mappings, but then the mapping may not actually be
      readable.  And we don't want to use FOLL_WRITE (which would match the
      permission of the vma), because that would also dirty the pages, which
      we don't want to do.
      
      For very similar reasons, FOLL_FORCE populates a executable-only mapping
      with no read permissions. We don't have a FOLL_EXEC flag.
      
      Yes, it would probably be cleaner to split FOLL_WRITE into two bits (for
      separate permission and dirty bit handling), and add a FOLL_EXEC flag
      for the "GUP executable page" case.  That would allow us to avoid
      FOLL_FORCE entirely here.
      
      But that's not how our FOLL_xyz bits have traditionally worked, and that
      would be a much bigger patch.
      
      So this at least avoids the FOLL_FORCE | FOLL_WRITE combination that
      made one of my experimental validation patches trigger a warning.  That
      warning was a false positive (and my experimental patch was incomplete
      anyway), but it all made me look at this and decide to clean at least
      this small case up.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1096bc93
    • Rafael J. Wysocki's avatar
      Merge branch 'acpica' · 6af71633
      Rafael J. Wysocki authored
      * acpica:
        ACPICA: debugger: check status of acpi_evaluate_object() in acpi_db_walk_for_fields()
      6af71633
    • Linus Torvalds's avatar
      Merge tag 'efi-fixes-for-v6.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi · 0eee99d9
      Linus Torvalds authored
      Pull EFI fixes from Ard Biesheuvel:
       "These address all the outstanding EFI/x86 boot related regressions:
      
         - Revert to the old initrd memory allocation soft limit of INT_MAX,
           which was dropped inadvertently
      
         - Ensure that startup_32() is entered with a valid boot_params
           pointer when using the new EFI mixed mode protocol
      
         - Fix a compiler warning introduced by a fix from the previous pull"
      
      * tag 'efi-fixes-for-v6.9-3' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi:
        x86/efistub: Reinstate soft limit for initrd loading
        efi/libstub: Cast away type warning in use of max()
        x86/efistub: Add missing boot_params for mixed mode compat entry
      0eee99d9
    • Linus Torvalds's avatar
      Merge tag 'block-6.9-20240329' of git://git.kernel.dk/linux · 033e8088
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Small round of minor fixes or cleanups for the 6.9-rc2 kernel, one
        fixing an issue introduced in 6.8"
      
      * tag 'block-6.9-20240329' of git://git.kernel.dk/linux:
        block: Do not force full zone append completion in req_bio_endio()
        block: don't reject too large max_user_sectors in blk_validate_limits
        block: Make blk_rq_set_mixed_merge() static
      033e8088
    • Linus Torvalds's avatar
      Merge tag 'for-6.9/dm-fixes-2' of... · 3508f318
      Linus Torvalds authored
      Merge tag 'for-6.9/dm-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper fixes from Mike Snitzer:
      
       - Fix MAINTAINERS to not include M: dm-devel for DM entries.
      
       - Fix DM vdo's murmurhash to use proper byteswapping methods.
      
       - Fix DM integrity clang warning about comparison out-of-range.
      
      * tag 'for-6.9/dm-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm integrity: fix out-of-range warning
        dm vdo murmurhash3: use kernel byteswapping routines instead of GCC ones
        MAINTAINERS: Remove incorrect M: tag for dm-devel@lists.linux.dev
      3508f318
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 033e4491
      Linus Torvalds authored
      Pull gpio fixes from Bartosz Golaszewski:
      
       - fix a procfs failure when requesting an interrupt with a label
         containing the '/' character
      
       - add missing stubs for GPIO lookup functions for !GPIOLIB
      
       - fix debug messages that would print "(null)" for NULL strings
      
      * tag 'gpio-fixes-for-v6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        gpiolib: Fix debug messaging in gpiod_find_and_request()
        gpiolib: Add stubs for GPIO lookup functions
        gpio: cdev: sanitize the label before requesting the interrupt
      033e4491
    • Arnd Bergmann's avatar
      dm integrity: fix out-of-range warning · 8e91c234
      Arnd Bergmann authored
      Depending on the value of CONFIG_HZ, clang complains about a pointless
      comparison:
      
      drivers/md/dm-integrity.c:4085:12: error: result of comparison of
                              constant 42949672950 with expression of type
                              'unsigned int' is always false
                              [-Werror,-Wtautological-constant-out-of-range-compare]
                              if (val >= (uint64_t)UINT_MAX * 1000 / HZ) {
      
      As the check remains useful for other configurations, shut up the
      warning by adding a second type cast to uint64_t.
      
      Fixes: 468dfca3 ("dm integrity: add a bitmap mode")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Reviewed-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Reviewed-by: default avatarJustin Stitt <justinstitt@google.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      8e91c234
    • Ken Raeburn's avatar
      dm vdo murmurhash3: use kernel byteswapping routines instead of GCC ones · d7e12014
      Ken Raeburn authored
      Also open-code the calls.
      Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarKen Raeburn <raeburn@redhat.com>
      Signed-off-by: default avatarMatthew Sakai <msakai@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      d7e12014
    • Kuan-Wei Chiu's avatar
      MAINTAINERS: Remove incorrect M: tag for dm-devel@lists.linux.dev · 309d8ced
      Kuan-Wei Chiu authored
      The dm-devel@lists.linux.dev mailing list should only be listed under
      the L: (List) tag in the MAINTAINERS file. However, it was incorrectly
      listed under both L: and M: (Maintainers) tags, which is not accurate.
      Remove the M: tag for dm-devel@lists.linux.dev in the MAINTAINERS file
      to reflect the correct categorization.
      Signed-off-by: default avatarKuan-Wei Chiu <visitorckw@gmail.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      309d8ced
    • Linus Torvalds's avatar
      Merge tag 'mmc-v6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc · 317c7bc0
      Linus Torvalds authored
      Pull MMC fixes from Ulf Hansson:
       "MMC core:
         - Fix regression for the mmc ioctl
      
        MMC host:
         - sdhci-of-dwcmshc: Fixup PM support in ->remove_new()
         - sdhci-omap: Re-tune when device became runtime suspended"
      
      * tag 'mmc-v6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc:
        sdhci-of-dwcmshc: disable PM runtime in dwcmshc_remove()
        mmc: sdhci-omap: re-tuning is needed after a pm transition to support emmc HS200 mode
        mmc: core: Avoid negative index with array access
        mmc: core: Initialize mmc_blk_ioc_data
      317c7bc0
  3. 28 Mar, 2024 18 commits
    • Damien Le Moal's avatar
      block: Do not force full zone append completion in req_bio_endio() · 55251fbd
      Damien Le Moal authored
      This reverts commit 748dc0b6.
      
      Partial zone append completions cannot be supported as there is no
      guarantees that the fragmented data will be written sequentially in the
      same manner as with a full command. Commit 748dc0b6 ("block: fix
      partial zone append completion handling in req_bio_endio()") changed
      req_bio_endio() to always advance a partially failed BIO by its full
      length, but this can lead to incorrect accounting. So revert this
      change and let low level device drivers handle this case by always
      failing completely zone append operations. With this revert, users will
      still see an IO error for a partially completed zone append BIO.
      
      Fixes: 748dc0b6 ("block: fix partial zone append completion handling in req_bio_endio()")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDamien Le Moal <dlemoal@kernel.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Link: https://lore.kernel.org/r/20240328004409.594888-2-dlemoal@kernel.orgSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      55251fbd
    • Linus Torvalds's avatar
      Merge tag 'sound-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 529b10c0
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "A collection of device-specific small fixes: a series of fixes for
        TAS2781 HD-audio codec, ASoC SOF, Cirrus CS35L56 and a couple of
        legacy drivers"
      
      * tag 'sound-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: hda/tas2781: remove useless dev_dbg from playback_hook
        ALSA: hda/tas2781: add debug statements to kcontrols
        ALSA: hda/tas2781: add locks to kcontrols
        ALSA: hda/tas2781: remove digital gain kcontrol
        ALSA: aoa: avoid false-positive format truncation warning
        ALSA: sh: aica: reorder cleanup operations to avoid UAF bugs
        ALSA: hda: cs35l56: Set the init_done flag before component_add()
        ALSA: hda: cs35l56: Raise device name message log level
        ASoC: SOF: ipc4-topology: support NHLT device type
        ALSA: hda: intel-nhlt: add intel_nhlt_ssp_device_type() function
      529b10c0
    • Linus Torvalds's avatar
      Merge tag 'iommu-fixes-v6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu · 6e7a2ffd
      Linus Torvalds authored
      Pull iommu fixes from Joerg Roedel:
       "ARM SMMU fixes:
      
         - Fix swabbing of the STE fields in the unlikely event of running on
           a big-endian machine
      
         - Fix setting of STE.SHCFG on hardware that doesn't implement support
           for attribute overrides
      
        IOMMU core:
      
         - PASID validation fix in device attach path"
      
      * tag 'iommu-fixes-v6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
        iommu: Validate the PASID in iommu_attach_device_pasid()
        iommu/arm-smmu-v3: Fix access for STE.SHCFG
        iommu/arm-smmu-v3: Add cpu_to_le64() around STRTAB_STE_0_V
      6e7a2ffd
    • Linus Torvalds's avatar
      Merge tag 'nfsd-6.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux · d8e8fbec
      Linus Torvalds authored
      Pull nfsd fixes from Chuck Lever:
      
       - Address three recently introduced regressions
      
      * tag 'nfsd-6.9-1' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
        NFSD: CREATE_SESSION must never cache NFS4ERR_DELAY replies
        SUNRPC: Revert 561141dd
        nfsd: Fix error cleanup path in nfsd_rename()
      d8e8fbec
    • Linus Torvalds's avatar
      Merge tag 'net-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 50108c35
      Linus Torvalds authored
      Pull networking fixes from Paolo Abeni:
       "Including fixes from bpf, WiFi and netfilter.
      
        Current release - regressions:
      
         - ipv6: fix address dump when IPv6 is disabled on an interface
      
        Current release - new code bugs:
      
         - bpf: temporarily disable atomic operations in BPF arena
      
         - nexthop: fix uninitialized variable in nla_put_nh_group_stats()
      
        Previous releases - regressions:
      
         - bpf: protect against int overflow for stack access size
      
         - hsr: fix the promiscuous mode in offload mode
      
         - wifi: don't always use FW dump trig
      
         - tls: adjust recv return with async crypto and failed copy to
           userspace
      
         - tcp: properly terminate timers for kernel sockets
      
         - ice: fix memory corruption bug with suspend and rebuild
      
         - at803x: fix kernel panic with at8031_probe
      
         - qeth: handle deferred cc1
      
        Previous releases - always broken:
      
         - bpf: fix bug in BPF_LDX_MEMSX
      
         - netfilter: reject table flag and netdev basechain updates
      
         - inet_defrag: prevent sk release while still in use
      
         - wifi: pick the version of SESSION_PROTECTION_NOTIF
      
         - wwan: t7xx: split 64bit accesses to fix alignment issues
      
         - mlxbf_gige: call request_irq() after NAPI initialized
      
         - hns3: fix kernel crash when devlink reload during pf
           initialization"
      
      * tag 'net-6.9-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (81 commits)
        inet: inet_defrag: prevent sk release while still in use
        Octeontx2-af: fix pause frame configuration in GMP mode
        net: lan743x: Add set RFE read fifo threshold for PCI1x1x chips
        net: bcmasp: Remove phy_{suspend/resume}
        net: bcmasp: Bring up unimac after PHY link up
        net: phy: qcom: at803x: fix kernel panic with at8031_probe
        netfilter: arptables: Select NETFILTER_FAMILY_ARP when building arp_tables.c
        netfilter: nf_tables: skip netdev hook unregistration if table is dormant
        netfilter: nf_tables: reject table flag and netdev basechain updates
        netfilter: nf_tables: reject destroy command to remove basechain hooks
        bpf: update BPF LSM designated reviewer list
        bpf: Protect against int overflow for stack access size
        bpf: Check bloom filter map value size
        bpf: fix warning for crash_kexec
        selftests: netdevsim: set test timeout to 10 minutes
        net: wan: framer: Add missing static inline qualifiers
        mlxbf_gige: call request_irq() after NAPI initialized
        tls: get psock ref after taking rxlock to avoid leak
        selftests: tls: add test with a partially invalid iov
        tls: adjust recv return with async crypto and failed copy to userspace
        ...
      50108c35
    • Dave Airlie's avatar
      Merge tag 'drm-misc-fixes-2024-03-28' of... · 2f73503e
      Dave Airlie authored
      Merge tag 'drm-misc-fixes-2024-03-28' of https://gitlab.freedesktop.org/drm/misc/kernel into drm-fixes
      
      Short summary of fixes pull:
      
      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
      
      nouveau:
      - dmem: handle kcalloc() allocation failures
      
      qxl:
      - remove unused variables
      
      rockchip:
      - vop2: remove support for AR30 and AB30 formats
      
      sched:
      - fix NULL-pointer deref
      
      vmwgfx:
      - debugfs: create ttm_resource_manager entry only if needed
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      
      From: Thomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240328134417.GA8673@localhost.localdomain
      2f73503e
    • David Gow's avatar
      kunit: configs: Enable CONFIG_DAMON_DBGFS_DEPRECATED for --alltests · cfedfb24
      David Gow authored
      This is required, as CONFIG_DAMON_DEBUGFS is enabled, and --alltests UML
      builds will fail due to the missing config option otherwise.
      
      Fixes: f4cba4bf ("mm/damon: rename CONFIG_DAMON_DBGFS to DAMON_DBGFS_DEPRECATED")
      Signed-off-by: default avatarDavid Gow <davidgow@google.com>
      Reviewed-by: default avatarRae Moar <rmoar@google.com>
      Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
      cfedfb24
    • Ville Syrjälä's avatar
      drm/i915/bios: Tolerate devdata==NULL in intel_bios_encoder_supports_dp_dual_mode() · 32e39bab
      Ville Syrjälä authored
      If we have no VBT, or the VBT didn't declare the encoder
      in question, we won't have the 'devdata' for the encoder.
      Instead of oopsing just bail early.
      
      We won't be able to tell whether the port is DP++ or not,
      but so be it.
      
      Cc: stable@vger.kernel.org
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/10464Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240319092443.15769-1-ville.syrjala@linux.intel.comReviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      (cherry picked from commit 26410896)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      32e39bab
    • Ville Syrjälä's avatar
      drm/i915: Pre-populate the cursor physical dma address · 582dc04b
      Ville Syrjälä authored
      Calling i915_gem_object_get_dma_address() from the vblank
      evade critical section triggers might_sleep().
      
      While we know that we've already pinned the framebuffer
      and thus i915_gem_object_get_dma_address() will in fact
      not sleep in this case, it seems reasonable to keep the
      unconditional might_sleep() for maximum coverage.
      
      So let's instead pre-populate the dma address during
      fb pinning, which all happens before we enter the
      vblank evade critical section.
      
      We can use u32 for the dma address as this class of
      hardware doesn't support >32bit addresses.
      
      Cc: stable@vger.kernel.org
      Fixes: 0225a909 ("drm/i915: Make cursor plane registers unlocked")
      Reported-by: default avatarBorislav Petkov <bp@alien8.de>
      Closes: https://lore.kernel.org/intel-gfx/20240227100342.GAZd2zfmYcPS_SndtO@fat_crate.local/Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240325175738.3440-1-ville.syrjala@linux.intel.comTested-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
      Reviewed-by: default avatarChaitanya Kumar Borah <chaitanya.kumar.borah@intel.com>
      (cherry picked from commit c1289a5c)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      582dc04b
    • Chris Wilson's avatar
      drm/i915/gt: Reset queue_priority_hint on parking · 4a3859ea
      Chris Wilson authored
      Originally, with strict in order execution, we could complete execution
      only when the queue was empty. Preempt-to-busy allows replacement of an
      active request that may complete before the preemption is processed by
      HW. If that happens, the request is retired from the queue, but the
      queue_priority_hint remains set, preventing direct submission until
      after the next CS interrupt is processed.
      
      This preempt-to-busy race can be triggered by the heartbeat, which will
      also act as the power-management barrier and upon completion allow us to
      idle the HW. We may process the completion of the heartbeat, and begin
      parking the engine before the CS event that restores the
      queue_priority_hint, causing us to fail the assertion that it is MIN.
      
      <3>[  166.210729] __engine_park:283 GEM_BUG_ON(engine->sched_engine->queue_priority_hint != (-((int)(~0U >> 1)) - 1))
      <0>[  166.210781] Dumping ftrace buffer:
      <0>[  166.210795] ---------------------------------
      ...
      <0>[  167.302811] drm_fdin-1097      2..s1. 165741070us : trace_ports: 0000:00:02.0 rcs0: promote { ccid:20 1217:2 prio 0 }
      <0>[  167.302861] drm_fdin-1097      2d.s2. 165741072us : execlists_submission_tasklet: 0000:00:02.0 rcs0: preempting last=1217:2, prio=0, hint=2147483646
      <0>[  167.302928] drm_fdin-1097      2d.s2. 165741072us : __i915_request_unsubmit: 0000:00:02.0 rcs0: fence 1217:2, current 0
      <0>[  167.302992] drm_fdin-1097      2d.s2. 165741073us : __i915_request_submit: 0000:00:02.0 rcs0: fence 3:4660, current 4659
      <0>[  167.303044] drm_fdin-1097      2d.s1. 165741076us : execlists_submission_tasklet: 0000:00:02.0 rcs0: context:3 schedule-in, ccid:40
      <0>[  167.303095] drm_fdin-1097      2d.s1. 165741077us : trace_ports: 0000:00:02.0 rcs0: submit { ccid:40 3:4660* prio 2147483646 }
      <0>[  167.303159] kworker/-89       11..... 165741139us : i915_request_retire.part.0: 0000:00:02.0 rcs0: fence c90:2, current 2
      <0>[  167.303208] kworker/-89       11..... 165741148us : __intel_context_do_unpin: 0000:00:02.0 rcs0: context:c90 unpin
      <0>[  167.303272] kworker/-89       11..... 165741159us : i915_request_retire.part.0: 0000:00:02.0 rcs0: fence 1217:2, current 2
      <0>[  167.303321] kworker/-89       11..... 165741166us : __intel_context_do_unpin: 0000:00:02.0 rcs0: context:1217 unpin
      <0>[  167.303384] kworker/-89       11..... 165741170us : i915_request_retire.part.0: 0000:00:02.0 rcs0: fence 3:4660, current 4660
      <0>[  167.303434] kworker/-89       11d..1. 165741172us : __intel_context_retire: 0000:00:02.0 rcs0: context:1216 retire runtime: { total:56028ns, avg:56028ns }
      <0>[  167.303484] kworker/-89       11..... 165741198us : __engine_park: 0000:00:02.0 rcs0: parked
      <0>[  167.303534]   <idle>-0         5d.H3. 165741207us : execlists_irq_handler: 0000:00:02.0 rcs0: semaphore yield: 00000040
      <0>[  167.303583] kworker/-89       11..... 165741397us : __intel_context_retire: 0000:00:02.0 rcs0: context:1217 retire runtime: { total:325575ns, avg:0ns }
      <0>[  167.303756] kworker/-89       11..... 165741777us : __intel_context_retire: 0000:00:02.0 rcs0: context:c90 retire runtime: { total:0ns, avg:0ns }
      <0>[  167.303806] kworker/-89       11..... 165742017us : __engine_park: __engine_park:283 GEM_BUG_ON(engine->sched_engine->queue_priority_hint != (-((int)(~0U >> 1)) - 1))
      <0>[  167.303811] ---------------------------------
      <4>[  167.304722] ------------[ cut here ]------------
      <2>[  167.304725] kernel BUG at drivers/gpu/drm/i915/gt/intel_engine_pm.c:283!
      <4>[  167.304731] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
      <4>[  167.304734] CPU: 11 PID: 89 Comm: kworker/11:1 Tainted: G        W          6.8.0-rc2-CI_DRM_14193-gc655e0fd2804+ #1
      <4>[  167.304736] Hardware name: Intel Corporation Rocket Lake Client Platform/RocketLake S UDIMM 6L RVP, BIOS RKLSFWI1.R00.3173.A03.2204210138 04/21/2022
      <4>[  167.304738] Workqueue: i915-unordered retire_work_handler [i915]
      <4>[  167.304839] RIP: 0010:__engine_park+0x3fd/0x680 [i915]
      <4>[  167.304937] Code: 00 48 c7 c2 b0 e5 86 a0 48 8d 3d 00 00 00 00 e8 79 48 d4 e0 bf 01 00 00 00 e8 ef 0a d4 e0 31 f6 bf 09 00 00 00 e8 03 49 c0 e0 <0f> 0b 0f 0b be 01 00 00 00 e8 f5 61 fd ff 31 c0 e9 34 fd ff ff 48
      <4>[  167.304940] RSP: 0018:ffffc9000059fce0 EFLAGS: 00010246
      <4>[  167.304942] RAX: 0000000000000200 RBX: 0000000000000000 RCX: 0000000000000006
      <4>[  167.304944] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000009
      <4>[  167.304946] RBP: ffff8881330ca1b0 R08: 0000000000000001 R09: 0000000000000001
      <4>[  167.304947] R10: 0000000000000001 R11: 0000000000000001 R12: ffff8881330ca000
      <4>[  167.304948] R13: ffff888110f02aa0 R14: ffff88812d1d0205 R15: ffff88811277d4f0
      <4>[  167.304950] FS:  0000000000000000(0000) GS:ffff88844f780000(0000) knlGS:0000000000000000
      <4>[  167.304952] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      <4>[  167.304953] CR2: 00007fc362200c40 CR3: 000000013306e003 CR4: 0000000000770ef0
      <4>[  167.304955] PKRU: 55555554
      <4>[  167.304957] Call Trace:
      <4>[  167.304958]  <TASK>
      <4>[  167.305573]  ____intel_wakeref_put_last+0x1d/0x80 [i915]
      <4>[  167.305685]  i915_request_retire.part.0+0x34f/0x600 [i915]
      <4>[  167.305800]  retire_requests+0x51/0x80 [i915]
      <4>[  167.305892]  intel_gt_retire_requests_timeout+0x27f/0x700 [i915]
      <4>[  167.305985]  process_scheduled_works+0x2db/0x530
      <4>[  167.305990]  worker_thread+0x18c/0x350
      <4>[  167.305993]  kthread+0xfe/0x130
      <4>[  167.305997]  ret_from_fork+0x2c/0x50
      <4>[  167.306001]  ret_from_fork_asm+0x1b/0x30
      <4>[  167.306004]  </TASK>
      
      It is necessary for the queue_priority_hint to be lower than the next
      request submission upon waking up, as we rely on the hint to decide when
      to kick the tasklet to submit that first request.
      
      Fixes: 22b7a426 ("drm/i915/execlists: Preempt-to-busy")
      Closes: https://gitlab.freedesktop.org/drm/intel/issues/10154Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarJanusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: <stable@vger.kernel.org> # v5.4+
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240318135906.716055-2-janusz.krzysztofik@linux.intel.com
      (cherry picked from commit 98850e96)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      4a3859ea
    • Janusz Krzysztofik's avatar
      drm/i915/vma: Fix UAF on destroy against retire race · 0e45882c
      Janusz Krzysztofik authored
      Object debugging tools were sporadically reporting illegal attempts to
      free a still active i915 VMA object when parking a GT believed to be idle.
      
      [161.359441] ODEBUG: free active (active state 0) object: ffff88811643b958 object type: i915_active hint: __i915_vma_active+0x0/0x50 [i915]
      [161.360082] WARNING: CPU: 5 PID: 276 at lib/debugobjects.c:514 debug_print_object+0x80/0xb0
      ...
      [161.360304] CPU: 5 PID: 276 Comm: kworker/5:2 Not tainted 6.5.0-rc1-CI_DRM_13375-g003f860e5577+ #1
      [161.360314] Hardware name: Intel Corporation Rocket Lake Client Platform/RocketLake S UDIMM 6L RVP, BIOS RKLSFWI1.R00.3173.A03.2204210138 04/21/2022
      [161.360322] Workqueue: i915-unordered __intel_wakeref_put_work [i915]
      [161.360592] RIP: 0010:debug_print_object+0x80/0xb0
      ...
      [161.361347] debug_object_free+0xeb/0x110
      [161.361362] i915_active_fini+0x14/0x130 [i915]
      [161.361866] release_references+0xfe/0x1f0 [i915]
      [161.362543] i915_vma_parked+0x1db/0x380 [i915]
      [161.363129] __gt_park+0x121/0x230 [i915]
      [161.363515] ____intel_wakeref_put_last+0x1f/0x70 [i915]
      
      That has been tracked down to be happening when another thread is
      deactivating the VMA inside __active_retire() helper, after the VMA's
      active counter has been already decremented to 0, but before deactivation
      of the VMA's object is reported to the object debugging tool.
      
      We could prevent from that race by serializing i915_active_fini() with
      __active_retire() via ref->tree_lock, but that wouldn't stop the VMA from
      being used, e.g. from __i915_vma_retire() called at the end of
      __active_retire(), after that VMA has been already freed by a concurrent
      i915_vma_destroy() on return from the i915_active_fini().  Then, we should
      rather fix the issue at the VMA level, not in i915_active.
      
      Since __i915_vma_parked() is called from __gt_park() on last put of the
      GT's wakeref, the issue could be addressed by holding the GT wakeref long
      enough for __active_retire() to complete before that wakeref is released
      and the GT parked.
      
      I believe the issue was introduced by commit d9393973 ("drm/i915:
      Remove the vma refcount") which moved a call to i915_active_fini() from
      a dropped i915_vma_release(), called on last put of the removed VMA kref,
      to i915_vma_parked() processing path called on last put of a GT wakeref.
      However, its visibility to the object debugging tool was suppressed by a
      bug in i915_active that was fixed two weeks later with commit e92eb246
      ("drm/i915/active: Fix missing debug object activation").
      
      A VMA associated with a request doesn't acquire a GT wakeref by itself.
      Instead, it depends on a wakeref held directly by the request's active
      intel_context for a GT associated with its VM, and indirectly on that
      intel_context's engine wakeref if the engine belongs to the same GT as the
      VMA's VM.  Those wakerefs are released asynchronously to VMA deactivation.
      
      Fix the issue by getting a wakeref for the VMA's GT when activating it,
      and putting that wakeref only after the VMA is deactivated.  However,
      exclude global GTT from that processing path, otherwise the GPU never goes
      idle.  Since __i915_vma_retire() may be called from atomic contexts, use
      async variant of wakeref put.  Also, to avoid circular locking dependency,
      take care of acquiring the wakeref before VM mutex when both are needed.
      
      v7: Add inline comments with justifications for:
          - using untracked variants of intel_gt_pm_get/put() (Nirmoy),
          - using async variant of _put(),
          - not getting the wakeref in case of a global GTT,
          - always getting the first wakeref outside vm->mutex.
      v6: Since __i915_vma_active/retire() callbacks are not serialized, storing
          a wakeref tracking handle inside struct i915_vma is not safe, and
          there is no other good place for that.  Use untracked variants of
          intel_gt_pm_get/put_async().
      v5: Replace "tile" with "GT" across commit description (Rodrigo),
        - avoid mentioning multi-GT case in commit description (Rodrigo),
        - explain why we need to take a temporary wakeref unconditionally inside
          i915_vma_pin_ww() (Rodrigo).
      v4: Refresh on top of commit 5e4e06e4 ("drm/i915: Track gt pm
          wakerefs") (Andi),
        - for more easy backporting, split out removal of former insufficient
          workarounds and move them to separate patches (Nirmoy).
        - clean up commit message and description a bit.
      v3: Identify root cause more precisely, and a commit to blame,
        - identify and drop former workarounds,
        - update commit message and description.
      v2: Get the wakeref before VM mutex to avoid circular locking dependency,
        - drop questionable Fixes: tag.
      
      Fixes: d9393973 ("drm/i915: Remove the vma refcount")
      Closes: https://gitlab.freedesktop.org/drm/intel/issues/8875Signed-off-by: default avatarJanusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
      Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
      Cc: Nirmoy Das <nirmoy.das@intel.com>
      Cc: Andi Shyti <andi.shyti@linux.intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: stable@vger.kernel.org # v5.19+
      Reviewed-by: default avatarNirmoy Das <nirmoy.das@intel.com>
      Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240305143747.335367-6-janusz.krzysztofik@linux.intel.com
      (cherry picked from commit f3c71b2d)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      0e45882c
    • José Roberto de Souza's avatar
      drm/i915: Do not print 'pxp init failed with 0' when it succeed · d392e1b9
      José Roberto de Souza authored
      It is misleading, if the intention was to also print something
      in case it succeed it should have a different string.
      
      Cc: Alan Previn <alan.previn.teres.alexis@intel.com>
      Signed-off-by: default avatarJosé Roberto de Souza <jose.souza@intel.com>
      Fixes: 698e19da ("drm/i915: Skip pxp init if gt is wedged")
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240320210547.71937-1-jose.souza@intel.com
      (cherry picked from commit d437099a)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      d392e1b9
    • Jonathon Hall's avatar
      drm/i915: Do not match JSL in ehl_combo_pll_div_frac_wa_needed() · e41d769f
      Jonathon Hall authored
      Since commit 0c65dc06 ("drm/i915/jsl: s/JSL/JASPERLAKE for
      platform/subplatform defines"), boot freezes on a Jasper Lake tablet
      (Librem 11), usually with graphical corruption on the eDP display,
      but sometimes just a black screen.  This commit was included in 6.6 and
      later.
      
      That commit was intended to refactor EHL and JSL macros, but the change
      to ehl_combo_pll_div_frac_wa_needed() started matching JSL incorrectly
      when it was only intended to match EHL.
      
      It replaced:
      	return ((IS_PLATFORM(i915, INTEL_ELKHARTLAKE) &&
      		 IS_JSL_EHL_DISPLAY_STEP(i915, STEP_B0, STEP_FOREVER)) ||
      with:
      	return (((IS_ELKHARTLAKE(i915) || IS_JASPERLAKE(i915)) &&
      		 IS_DISPLAY_STEP(i915, STEP_B0, STEP_FOREVER)) ||
      
      Remove IS_JASPERLAKE() to fix the regression.
      Signed-off-by: default avatarJonathon Hall <jonathon.hall@puri.sm>
      Cc: stable@vger.kernel.org
      Fixes: 0c65dc06 ("drm/i915/jsl: s/JSL/JASPERLAKE for platform/subplatform defines")
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240313135424.3731410-1-jonathon.hall@puri.smSigned-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      (cherry picked from commit 1ef48859)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      e41d769f
    • Janusz Krzysztofik's avatar
      drm/i915/hwmon: Fix locking inversion in sysfs getter · b212b797
      Janusz Krzysztofik authored
      In i915 hwmon sysfs getter path we now take a hwmon_lock, then acquire an
      rpm wakeref.  That results in lock inversion:
      
      <4> [197.079335] ======================================================
      <4> [197.085473] WARNING: possible circular locking dependency detected
      <4> [197.091611] 6.8.0-rc7-Patchwork_129026v7-gc4dc92fb1152+ #1 Not tainted
      <4> [197.098096] ------------------------------------------------------
      <4> [197.104231] prometheus-node/839 is trying to acquire lock:
      <4> [197.109680] ffffffff82764d80 (fs_reclaim){+.+.}-{0:0}, at: __kmalloc+0x9a/0x350
      <4> [197.116939]
      but task is already holding lock:
      <4> [197.122730] ffff88811b772a40 (&hwmon->hwmon_lock){+.+.}-{3:3}, at: hwm_energy+0x4b/0x100 [i915]
      <4> [197.131543]
      which lock already depends on the new lock.
      ...
      <4> [197.507922] Chain exists of:
        fs_reclaim --> &gt->reset.mutex --> &hwmon->hwmon_lock
      <4> [197.518528]  Possible unsafe locking scenario:
      <4> [197.524411]        CPU0                    CPU1
      <4> [197.528916]        ----                    ----
      <4> [197.533418]   lock(&hwmon->hwmon_lock);
      <4> [197.537237]                                lock(&gt->reset.mutex);
      <4> [197.543376]                                lock(&hwmon->hwmon_lock);
      <4> [197.549682]   lock(fs_reclaim);
      ...
      <4> [197.632548] Call Trace:
      <4> [197.634990]  <TASK>
      <4> [197.637088]  dump_stack_lvl+0x64/0xb0
      <4> [197.640738]  check_noncircular+0x15e/0x180
      <4> [197.652968]  check_prev_add+0xe9/0xce0
      <4> [197.656705]  __lock_acquire+0x179f/0x2300
      <4> [197.660694]  lock_acquire+0xd8/0x2d0
      <4> [197.673009]  fs_reclaim_acquire+0xa1/0xd0
      <4> [197.680478]  __kmalloc+0x9a/0x350
      <4> [197.689063]  acpi_ns_internalize_name.part.0+0x4a/0xb0
      <4> [197.694170]  acpi_ns_get_node_unlocked+0x60/0xf0
      <4> [197.720608]  acpi_ns_get_node+0x3b/0x60
      <4> [197.724428]  acpi_get_handle+0x57/0xb0
      <4> [197.728164]  acpi_has_method+0x20/0x50
      <4> [197.731896]  acpi_pci_set_power_state+0x43/0x120
      <4> [197.736485]  pci_power_up+0x24/0x1c0
      <4> [197.740047]  pci_pm_default_resume_early+0x9/0x30
      <4> [197.744725]  pci_pm_runtime_resume+0x2d/0x90
      <4> [197.753911]  __rpm_callback+0x3c/0x110
      <4> [197.762586]  rpm_callback+0x58/0x70
      <4> [197.766064]  rpm_resume+0x51e/0x730
      <4> [197.769542]  rpm_resume+0x267/0x730
      <4> [197.773020]  rpm_resume+0x267/0x730
      <4> [197.776498]  rpm_resume+0x267/0x730
      <4> [197.779974]  __pm_runtime_resume+0x49/0x90
      <4> [197.784055]  __intel_runtime_pm_get+0x19/0xa0 [i915]
      <4> [197.789070]  hwm_energy+0x55/0x100 [i915]
      <4> [197.793183]  hwm_read+0x9a/0x310 [i915]
      <4> [197.797124]  hwmon_attr_show+0x36/0x120
      <4> [197.800946]  dev_attr_show+0x15/0x60
      <4> [197.804509]  sysfs_kf_seq_show+0xb5/0x100
      
      Acquire the wakeref before the lock and hold it as long as the lock is
      also held.  Follow that pattern across the whole source file where similar
      lock inversion can happen.
      
      v2: Keep hardware read under the lock so the whole operation of updating
          energy from hardware is still atomic (Guenter),
        - instead, acquire the rpm wakeref before the lock and hold it as long
          as the lock is held,
        - use the same aproach for other similar places across the i915_hwmon.c
          source file (Rodrigo).
      
      Fixes: 1b44019a ("drm/i915/guc: Disable PL1 power limit when loading GuC firmware")
      Signed-off-by: default avatarJanusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: <stable@vger.kernel.org> # v6.5+
      Reviewed-by: default avatarAshutosh Dixit <ashutosh.dixit@intel.com>
      Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240311203500.518675-2-janusz.krzysztofik@linux.intel.com
      (cherry picked from commit 71b21877)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      b212b797
    • Ville Syrjälä's avatar
      drm/i915/dsb: Fix DSB vblank waits when using VRR · f1275116
      Ville Syrjälä authored
      Looks like the undelayed vblank gets signalled exactly when
      the active period ends. That is a problem for DSB+VRR when
      we are already in vblank and expect DSB to start executing
      as soon as we send the push. Instead of starting, the DSB
      just keeps on waiting for the undelayed vblank which won't
      signal until the end of the next frame's active period,
      which is far too late.
      
      The end result is that DSB won't have even started
      executing by the time the flips/etc. have completed.
      We then wait for an extra 1ms, after which we terminate
      the DSB and report a timeout:
      [drm] *ERROR* [CRTC:80:pipe A] DSB 0 timed out waiting for idle (current head=0xfedf4000, head=0x0, tail=0x1080)
      
      To fix this let's configure DSB to use the so called VRR
      "safe window" instead of the undelayed vblank to trigger
      the DSB vblank logic, when VRR is enabled.
      
      Cc: stable@vger.kernel.org
      Fixes: 34d8311f ("drm/i915/dsb: Re-instate DSB for LUT updates")
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/9927Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240306040806.21697-3-ville.syrjala@linux.intel.comReviewed-by: default avatarAnimesh Manna <animesh.manna@intel.com>
      (cherry picked from commit 41429d9b)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      f1275116
    • Ville Syrjälä's avatar
      drm/i915/vrr: Generate VRR "safe window" for DSB · f7d3b927
      Ville Syrjälä authored
      Looks like TRANS_CHICKEN bit 31 means something totally different
      depending on the platform:
      TGL: generate VRR "safe window" for DSB
      ADL/DG2: make TRANS_SET_CONTEXT_LATENCY effective with VRR
      
      So far we've only set this on ADL/DG2, but when using DSB+VRR
      we also need to set it on TGL.
      
      And a quick test on MTL says it doesn't need this bit for either
      of those purposes, even though it's still documented as valid
      in bspec.
      
      Cc: stable@vger.kernel.org
      Fixes: 34d8311f ("drm/i915/dsb: Re-instate DSB for LUT updates")
      Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/9927Signed-off-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240306040806.21697-2-ville.syrjala@linux.intel.comReviewed-by: default avatarAnimesh Manna <animesh.manna@intel.com>
      (cherry picked from commit 810e4519)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      f7d3b927
    • Bhanuprakash Modem's avatar
      drm/i915/display/debugfs: Fix duplicate checks in i915_drrs_status · 0f8c7a7d
      Bhanuprakash Modem authored
      Remove duplicate checks for debugfs entry "DRRS capable:".
      
      Fixes: 20af1084 ("drm/i915/display/debugfs: New entry "DRRS capable" to i915_drrs_status")
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
      Cc: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
      Signed-off-by: default avatarBhanuprakash Modem <bhanuprakash.modem@intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240227123833.2799647-2-bhanuprakash.modem@intel.comSigned-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      (cherry picked from commit 3d81fceb)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      0f8c7a7d
    • Bhanuprakash Modem's avatar
      drm/i915/drrs: Refactor CPU transcoder DRRS check · 09ae0f45
      Bhanuprakash Modem authored
      Rename cpu_transcoder_has_drrs() to intel_cpu_transcoder_has_drrs() and
      move it to intel_drrs.[ch].
      
      V2:
       - Move helpers to intel_drrs.[ch] (Jani)
       - Fix commit message (Jani)
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Ankit Nautiyal <ankit.k.nautiyal@intel.com>
      Cc: Mitul Golani <mitulkumar.ajitkumar.golani@intel.com>
      Signed-off-by: default avatarBhanuprakash Modem <bhanuprakash.modem@intel.com>
      Reviewed-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20240228055502.2857819-1-bhanuprakash.modem@intel.comSigned-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      (cherry picked from commit 2d04f815)
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      09ae0f45