1. 10 Dec, 2023 5 commits
  2. 09 Dec, 2023 15 commits
    • Linus Torvalds's avatar
      Merge tag 'usb-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb · 21b73ffc
      Linus Torvalds authored
      Pull USB fixes from Greg KH:
       "Here are some small USB fixes for 6.7-rc5 to resolve some reported
        issues. Included in here are:
      
         - usb gadget f_hid, and uevent fix
      
         - xhci driver revert to resolve a much-reported issue
      
         - typec driver fix
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'usb-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
        usb: gadget: f_hid: fix report descriptor allocation
        Revert "xhci: Loosen RPM as default policy to cover for AMD xHC 1.1"
        usb: typec: class: fix typec_altmode_put_partner to put plugs
        USB: gadget: core: adjust uevent timing on gadget unbind
      21b73ffc
    • Linus Torvalds's avatar
      Merge tag 'tty-6.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty · 0b526090
      Linus Torvalds authored
      Pull serial driver fixes from Greg KH:
       "Here are some small serial driver fixes for 6.7-rc4 to resolve some
        reported issues. Included in here are:
      
         - pl011 dma support fix
      
         - sc16is7xx driver fix
      
         - ma35d1 console index fix
      
         - 8250 driver fixes for small issues
      
        All of these have been in linux-next with no reported issues"
      
      * tag 'tty-6.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
        serial: 8250_dw: Add ACPI ID for Granite Rapids-D UART
        serial: ma35d1: Validate console index before assignment
        ARM: PL011: Fix DMA support
        serial: sc16is7xx: address RX timeout interrupt errata
        serial: 8250: 8250_omap: Clear UART_HAS_RHR_IT_DIS bit
        serial: 8250_omap: Add earlycon support for the AM654 UART controller
        serial: 8250: 8250_omap: Do not start RX DMA on THRI interrupt
      0b526090
    • Linus Torvalds's avatar
      Merge tag 'char-misc-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc · ca20f162
      Linus Torvalds authored
      Pull char / misc driver fixes from Greg KH:
       "Here are some small fixes for 6.7-rc5 for a variety of small driver
        subsystems. Included in here are:
      
         - debugfs revert for reported issue
      
         - greybus revert for reported issue
      
         - greybus fixup for endian build warning
      
         - coresight driver fixes
      
         - nvmem driver fixes
      
         - devcoredump fix
      
         - parport new device id
      
         - ndtest build fix
      
        All of these have ben in linux-next with no reported issues"
      
      * tag 'char-misc-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
        nvmem: Do not expect fixed layouts to grab a layout driver
        parport: Add support for Brainboxes IX/UC/PX parallel cards
        Revert "greybus: gb-beagleplay: Ensure le for values in transport"
        greybus: gb-beagleplay: Ensure le for values in transport
        greybus: BeaglePlay driver needs CRC_CCITT
        Revert "debugfs: annotate debugfs handlers vs. removal with lockdep"
        devcoredump: Send uevent once devcd is ready
        ndtest: fix typo class_regster -> class_register
        misc: mei: client.c: fix problem of return '-EOVERFLOW' in mei_cl_write
        misc: mei: client.c: return negative error code in mei_cl_write
        mei: pxp: fix mei_pxp_send_message return value
        coresight: ultrasoc-smb: Fix uninitialized before use buf_hw_base
        coresight: ultrasoc-smb: Config SMB buffer before register sink
        coresight: ultrasoc-smb: Fix sleep while close preempt in enable_smb
        Documentation: coresight: fix `make refcheckdocs` warning
        hwtracing: hisi_ptt: Don't try to attach a task
        hwtracing: hisi_ptt: Handle the interrupt in hardirq context
        hwtracing: hisi_ptt: Add dummy callback pmu::read()
        coresight: Fix crash when Perf and sysfs modes are used concurrently
        coresight: etm4x: Remove bogous __exit annotation for some functions
      ca20f162
    • Linus Torvalds's avatar
      Merge tag 'loongarch-fixes-6.7-2' of... · b10a3cca
      Linus Torvalds authored
      Merge tag 'loongarch-fixes-6.7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
      
      Pull LoongArch fixes from Huacai Chen:
       "Preserve syscall nr across execve(), slightly clean up drdtime(), fix
        the Clang built zboot kernel, fix a stack unwinder bug and several bpf
        jit bugs"
      
      * tag 'loongarch-fixes-6.7-2' of git://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson:
        LoongArch: BPF: Fix unconditional bswap instructions
        LoongArch: BPF: Fix sign-extension mov instructions
        LoongArch: BPF: Don't sign extend function return value
        LoongArch: BPF: Don't sign extend memory load operand
        LoongArch: Preserve syscall nr across execve()
        LoongArch: Set unwind stack type to unknown rather than set error flag
        LoongArch: Slightly clean up drdtime()
        LoongArch: Apply dynamic relocations for LLD
      b10a3cca
    • Linus Torvalds's avatar
      Merge tag 'mips-fixes_6.7_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux · b8503b21
      Linus Torvalds authored
      Pull MIPS fixes from Thomas Bogendoerfer:
      
       - Fixes for broken Loongson firmware
      
       - Fix lockdep splat
      
       - Fix FPU states when creating kernel threads
      
      * tag 'mips-fixes_6.7_1' of git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux:
        MIPS: kernel: Clear FPU states when setting up kernel threads
        MIPS: Loongson64: Handle more memory types passed from firmware
        MIPS: Loongson64: Enable DMA noncoherent support
        MIPS: Loongson64: Reserve vgabios memory on boot
        mips/smp: Call rcutree_report_cpu_starting() earlier
      b8503b21
    • Linus Torvalds's avatar
      Merge tag 'perf-tools-fixes-for-v6.7-2-2023-12-08' of... · 9d3bc457
      Linus Torvalds authored
      Merge tag 'perf-tools-fixes-for-v6.7-2-2023-12-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools
      
      Pull perf tools fixes from Namhyung Kim:
       "A random set of small bug fixes including:
      
         - Fix segfault on AmpereOne due to missing default metricgroup name
      
         - Fix segfault on `perf list --json` due to NULL pointer"
      
      * tag 'perf-tools-fixes-for-v6.7-2-2023-12-08' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools:
        perf list: Fix JSON segfault by setting the used skip_duplicate_pmus callback
        perf vendor events arm64: AmpereOne: Add missing DefaultMetricgroupName fields
        perf metrics: Avoid segv if default metricgroup isn't set
      9d3bc457
    • Linus Torvalds's avatar
      Merge tag '6.7-rc4-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6 · 2099306c
      Linus Torvalds authored
      Pull smb client fixes from Steve French:
       "Six smb3 client fixes:
      
         - Fixes for copy_file_range and clone (cache invalidation and file
           size), also addresses an xfstest failure
      
         - Fix to return proper error if REMAP_FILE_DEDUP set (also fixes
           xfstest generic/304)
      
         - Fix potential null pointer reference with DFS
      
         - Multichannel fix addressing (reverting an earlier patch) some of
           the problems with enabling/disabling channels dynamically
      
        Still working on a followon multichannel fix to address another issue
        found in reconnect testing that will send next week"
      
      * tag '6.7-rc4-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: reconnect worker should take reference on server struct unconditionally
        Revert "cifs: reconnect work should have reference on server struct"
        cifs: Fix non-availability of dedup breaking generic/304
        smb: client: fix potential NULL deref in parse_dfs_referrals()
        cifs: Fix flushing, invalidation and file size with FICLONE
        cifs: Fix flushing, invalidation and file size with copy_file_range()
      2099306c
    • Tiezhu Yang's avatar
      LoongArch: BPF: Fix unconditional bswap instructions · e2f7b3d8
      Tiezhu Yang authored
      We can see that "bswap32: Takes an unsigned 32-bit number in either big-
      or little-endian format and returns the equivalent number with the same
      bit width but opposite endianness" in BPF Instruction Set Specification,
      so it should clear the upper 32 bits in "case 32:" for both BPF_ALU and
      BPF_ALU64.
      
      [root@linux fedora]# echo 1 > /proc/sys/net/core/bpf_jit_enable
      [root@linux fedora]# modprobe test_bpf
      
      Before:
      test_bpf: #313 BSWAP 32: 0x0123456789abcdef -> 0xefcdab89 jited:1 ret 1460850314 != -271733879 (0x5712ce8a != 0xefcdab89)FAIL (1 times)
      test_bpf: #317 BSWAP 32: 0xfedcba9876543210 -> 0x10325476 jited:1 ret -1460850316 != 271733878 (0xa8ed3174 != 0x10325476)FAIL (1 times)
      
      After:
      test_bpf: #313 BSWAP 32: 0x0123456789abcdef -> 0xefcdab89 jited:1 4 PASS
      test_bpf: #317 BSWAP 32: 0xfedcba9876543210 -> 0x10325476 jited:1 4 PASS
      
      Fixes: 4ebf9216 ("LoongArch: BPF: Support unconditional bswap instructions")
      Acked-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      e2f7b3d8
    • Tiezhu Yang's avatar
      LoongArch: BPF: Fix sign-extension mov instructions · 772cbe94
      Tiezhu Yang authored
      We can see that "Short form of movsx, dst_reg = (s8,s16,s32)src_reg" in
      include/linux/filter.h, additionally, for BPF_ALU64 the value of the
      destination register is unchanged whereas for BPF_ALU the upper 32 bits
      of the destination register are zeroed, so it should clear the upper 32
      bits for BPF_ALU.
      
      [root@linux fedora]# echo 1 > /proc/sys/net/core/bpf_jit_enable
      [root@linux fedora]# modprobe test_bpf
      
      Before:
      test_bpf: #81 ALU_MOVSX | BPF_B jited:1 ret 2 != 1 (0x2 != 0x1)FAIL (1 times)
      test_bpf: #82 ALU_MOVSX | BPF_H jited:1 ret 2 != 1 (0x2 != 0x1)FAIL (1 times)
      
      After:
      test_bpf: #81 ALU_MOVSX | BPF_B jited:1 6 PASS
      test_bpf: #82 ALU_MOVSX | BPF_H jited:1 6 PASS
      
      By the way, the bpf selftest case "./test_progs -t verifier_movsx" can
      also be fixed with this patch.
      
      Fixes: f48012f1 ("LoongArch: BPF: Support sign-extension mov instructions")
      Acked-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Signed-off-by: default avatarTiezhu Yang <yangtiezhu@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      772cbe94
    • Hengqi Chen's avatar
      LoongArch: BPF: Don't sign extend function return value · 5d47ec2e
      Hengqi Chen authored
      The `cls_redirect` test triggers a kernel panic like:
      
        # ./test_progs -t cls_redirect
        Can't find bpf_testmod.ko kernel module: -2
        WARNING! Selftests relying on bpf_testmod.ko will be skipped.
        [   30.938489] CPU 3 Unable to handle kernel paging request at virtual address fffffffffd814de0, era == ffff800002009fb8, ra == ffff800002009f9c
        [   30.939331] Oops[#1]:
        [   30.939513] CPU: 3 PID: 1260 Comm: test_progs Not tainted 6.7.0-rc2-loong-devel-g2f56bb0d2327 #35 a896aca3f4164f09cc346f89f2e09832e07be5f6
        [   30.939732] Hardware name: QEMU QEMU Virtual Machine, BIOS unknown 2/2/2022
        [   30.939901] pc ffff800002009fb8 ra ffff800002009f9c tp 9000000104da4000 sp 9000000104da7ab0
        [   30.940038] a0 fffffffffd814de0 a1 9000000104da7a68 a2 0000000000000000 a3 9000000104da7c10
        [   30.940183] a4 9000000104da7c14 a5 0000000000000002 a6 0000000000000021 a7 00005555904d7f90
        [   30.940321] t0 0000000000000110 t1 0000000000000000 t2 fffffffffd814de0 t3 0004c4b400000000
        [   30.940456] t4 ffffffffffffffff t5 00000000c3f63600 t6 0000000000000000 t7 0000000000000000
        [   30.940590] t8 000000000006d803 u0 0000000000000020 s9 9000000104da7b10 s0 900000010504c200
        [   30.940727] s1 fffffffffd814de0 s2 900000010504c200 s3 9000000104da7c10 s4 9000000104da7ad0
        [   30.940866] s5 0000000000000000 s6 90000000030e65bc s7 9000000104da7b44 s8 90000000044f6fc0
        [   30.941015]    ra: ffff800002009f9c bpf_prog_846803e5ae81417f_cls_redirect+0xa0/0x590
        [   30.941535]   ERA: ffff800002009fb8 bpf_prog_846803e5ae81417f_cls_redirect+0xbc/0x590
        [   30.941696]  CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE)
        [   30.942224]  PRMD: 00000004 (PPLV0 +PIE -PWE)
        [   30.942330]  EUEN: 00000003 (+FPE +SXE -ASXE -BTE)
        [   30.942453]  ECFG: 00071c1c (LIE=2-4,10-12 VS=7)
        [   30.942612] ESTAT: 00010000 [PIL] (IS= ECode=1 EsubCode=0)
        [   30.942764]  BADV: fffffffffd814de0
        [   30.942854]  PRID: 0014c010 (Loongson-64bit, Loongson-3A5000)
        [   30.942974] Modules linked in:
        [   30.943078] Process test_progs (pid: 1260, threadinfo=00000000ce303226, task=000000007d10bb76)
        [   30.943306] Stack : 900000010a064000 90000000044f6fc0 9000000104da7b48 0000000000000000
        [   30.943495]         0000000000000000 9000000104da7c14 9000000104da7c10 900000010504c200
        [   30.943626]         0000000000000001 ffff80001b88c000 9000000104da7b70 90000000030e6668
        [   30.943785]         0000000000000000 9000000104da7b58 ffff80001b88c048 9000000003d05000
        [   30.943936]         900000000303ac88 0000000000000000 0000000000000000 9000000104da7b70
        [   30.944091]         0000000000000000 0000000000000001 0000000731eeab00 0000000000000000
        [   30.944245]         ffff80001b88c000 0000000000000000 0000000000000000 54b99959429f83b8
        [   30.944402]         ffff80001b88c000 90000000044f6fc0 9000000101d70000 ffff80001b88c000
        [   30.944538]         000000000000005a 900000010504c200 900000010a064000 900000010a067000
        [   30.944697]         9000000104da7d88 0000000000000000 9000000003d05000 90000000030e794c
        [   30.944852]         ...
        [   30.944924] Call Trace:
        [   30.945120] [<ffff800002009fb8>] bpf_prog_846803e5ae81417f_cls_redirect+0xbc/0x590
        [   30.945650] [<90000000030e6668>] bpf_test_run+0x1ec/0x2f8
        [   30.945958] [<90000000030e794c>] bpf_prog_test_run_skb+0x31c/0x684
        [   30.946065] [<90000000026d4f68>] __sys_bpf+0x678/0x2724
        [   30.946159] [<90000000026d7288>] sys_bpf+0x20/0x2c
        [   30.946253] [<90000000032dd224>] do_syscall+0x7c/0x94
        [   30.946343] [<9000000002541c5c>] handle_syscall+0xbc/0x158
        [   30.946492]
        [   30.946549] Code: 0015030e  5c0009c0  5001d000 <28c00304> 02c00484  29c00304  00150009  2a42d2e4  0280200d
        [   30.946793]
        [   30.946971] ---[ end trace 0000000000000000 ]---
        [   32.093225] Kernel panic - not syncing: Fatal exception in interrupt
        [   32.093526] Kernel relocated by 0x2320000
        [   32.093630]  .text @ 0x9000000002520000
        [   32.093725]  .data @ 0x9000000003400000
        [   32.093792]  .bss  @ 0x9000000004413200
        [   34.971998] ---[ end Kernel panic - not syncing: Fatal exception in interrupt ]---
      
      This is because we signed-extend function return values. When subprog
      mode is enabled, we have:
      
        cls_redirect()
          -> get_global_metrics() returns pcpu ptr 0xfffffefffc00b480
      
      The pointer returned is later signed-extended to 0xfffffffffc00b480 at
      `BPF_JMP | BPF_EXIT`. During BPF prog run, this triggers unhandled page
      fault and a kernel panic.
      
      Drop the unnecessary signed-extension on return values like other
      architectures do.
      
      With this change, we have:
      
        # ./test_progs -t cls_redirect
        Can't find bpf_testmod.ko kernel module: -2
        WARNING! Selftests relying on bpf_testmod.ko will be skipped.
        #51/1    cls_redirect/cls_redirect_inlined:OK
        #51/2    cls_redirect/IPv4 TCP accept unknown (no hops, flags: SYN):OK
        #51/3    cls_redirect/IPv6 TCP accept unknown (no hops, flags: SYN):OK
        #51/4    cls_redirect/IPv4 TCP accept unknown (no hops, flags: ACK):OK
        #51/5    cls_redirect/IPv6 TCP accept unknown (no hops, flags: ACK):OK
        #51/6    cls_redirect/IPv4 TCP forward unknown (one hop, flags: ACK):OK
        #51/7    cls_redirect/IPv6 TCP forward unknown (one hop, flags: ACK):OK
        #51/8    cls_redirect/IPv4 TCP accept known (one hop, flags: ACK):OK
        #51/9    cls_redirect/IPv6 TCP accept known (one hop, flags: ACK):OK
        #51/10   cls_redirect/IPv4 UDP accept unknown (no hops, flags: none):OK
        #51/11   cls_redirect/IPv6 UDP accept unknown (no hops, flags: none):OK
        #51/12   cls_redirect/IPv4 UDP forward unknown (one hop, flags: none):OK
        #51/13   cls_redirect/IPv6 UDP forward unknown (one hop, flags: none):OK
        #51/14   cls_redirect/IPv4 UDP accept known (one hop, flags: none):OK
        #51/15   cls_redirect/IPv6 UDP accept known (one hop, flags: none):OK
        #51/16   cls_redirect/cls_redirect_subprogs:OK
        #51/17   cls_redirect/IPv4 TCP accept unknown (no hops, flags: SYN):OK
        #51/18   cls_redirect/IPv6 TCP accept unknown (no hops, flags: SYN):OK
        #51/19   cls_redirect/IPv4 TCP accept unknown (no hops, flags: ACK):OK
        #51/20   cls_redirect/IPv6 TCP accept unknown (no hops, flags: ACK):OK
        #51/21   cls_redirect/IPv4 TCP forward unknown (one hop, flags: ACK):OK
        #51/22   cls_redirect/IPv6 TCP forward unknown (one hop, flags: ACK):OK
        #51/23   cls_redirect/IPv4 TCP accept known (one hop, flags: ACK):OK
        #51/24   cls_redirect/IPv6 TCP accept known (one hop, flags: ACK):OK
        #51/25   cls_redirect/IPv4 UDP accept unknown (no hops, flags: none):OK
        #51/26   cls_redirect/IPv6 UDP accept unknown (no hops, flags: none):OK
        #51/27   cls_redirect/IPv4 UDP forward unknown (one hop, flags: none):OK
        #51/28   cls_redirect/IPv6 UDP forward unknown (one hop, flags: none):OK
        #51/29   cls_redirect/IPv4 UDP accept known (one hop, flags: none):OK
        #51/30   cls_redirect/IPv6 UDP accept known (one hop, flags: none):OK
        #51/31   cls_redirect/cls_redirect_dynptr:OK
        #51/32   cls_redirect/IPv4 TCP accept unknown (no hops, flags: SYN):OK
        #51/33   cls_redirect/IPv6 TCP accept unknown (no hops, flags: SYN):OK
        #51/34   cls_redirect/IPv4 TCP accept unknown (no hops, flags: ACK):OK
        #51/35   cls_redirect/IPv6 TCP accept unknown (no hops, flags: ACK):OK
        #51/36   cls_redirect/IPv4 TCP forward unknown (one hop, flags: ACK):OK
        #51/37   cls_redirect/IPv6 TCP forward unknown (one hop, flags: ACK):OK
        #51/38   cls_redirect/IPv4 TCP accept known (one hop, flags: ACK):OK
        #51/39   cls_redirect/IPv6 TCP accept known (one hop, flags: ACK):OK
        #51/40   cls_redirect/IPv4 UDP accept unknown (no hops, flags: none):OK
        #51/41   cls_redirect/IPv6 UDP accept unknown (no hops, flags: none):OK
        #51/42   cls_redirect/IPv4 UDP forward unknown (one hop, flags: none):OK
        #51/43   cls_redirect/IPv6 UDP forward unknown (one hop, flags: none):OK
        #51/44   cls_redirect/IPv4 UDP accept known (one hop, flags: none):OK
        #51/45   cls_redirect/IPv6 UDP accept known (one hop, flags: none):OK
        #51      cls_redirect:OK
        Summary: 1/45 PASSED, 0 SKIPPED, 0 FAILED
      
      Fixes: 5dc61552 ("LoongArch: Add BPF JIT support")
      Signed-off-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      5d47ec2e
    • Hengqi Chen's avatar
      LoongArch: BPF: Don't sign extend memory load operand · fe575755
      Hengqi Chen authored
      The `cgrp_local_storage` test triggers a kernel panic like:
      
        # ./test_progs -t cgrp_local_storage
        Can't find bpf_testmod.ko kernel module: -2
        WARNING! Selftests relying on bpf_testmod.ko will be skipped.
        [  550.930632] CPU 1 Unable to handle kernel paging request at virtual address 0000000000000080, era == ffff80000200be34, ra == ffff80000200be00
        [  550.931781] Oops[#1]:
        [  550.931966] CPU: 1 PID: 1303 Comm: test_progs Not tainted 6.7.0-rc2-loong-devel-g2f56bb0d2327 #35 a896aca3f4164f09cc346f89f2e09832e07be5f6
        [  550.932215] Hardware name: QEMU QEMU Virtual Machine, BIOS unknown 2/2/2022
        [  550.932403] pc ffff80000200be34 ra ffff80000200be00 tp 9000000108350000 sp 9000000108353dc0
        [  550.932545] a0 0000000000000000 a1 0000000000000517 a2 0000000000000118 a3 00007ffffbb15558
        [  550.932682] a4 00007ffffbb15620 a5 90000001004e7700 a6 0000000000000021 a7 0000000000000118
        [  550.932824] t0 ffff80000200bdc0 t1 0000000000000517 t2 0000000000000517 t3 00007ffff1c06ee0
        [  550.932961] t4 0000555578ae04d0 t5 fffffffffffffff8 t6 0000000000000004 t7 0000000000000020
        [  550.933097] t8 0000000000000040 u0 00000000000007b8 s9 9000000108353e00 s0 90000001004e7700
        [  550.933241] s1 9000000004005000 s2 0000000000000001 s3 0000000000000000 s4 0000555555eb2ec8
        [  550.933379] s5 00007ffffbb15bb8 s6 00007ffff1dafd60 s7 000055555663f610 s8 00007ffff1db0050
        [  550.933520]    ra: ffff80000200be00 bpf_prog_98f1b9e767be2a84_on_enter+0x40/0x200
        [  550.933911]   ERA: ffff80000200be34 bpf_prog_98f1b9e767be2a84_on_enter+0x74/0x200
        [  550.934105]  CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE)
        [  550.934596]  PRMD: 00000004 (PPLV0 +PIE -PWE)
        [  550.934712]  EUEN: 00000003 (+FPE +SXE -ASXE -BTE)
        [  550.934836]  ECFG: 00071c1c (LIE=2-4,10-12 VS=7)
        [  550.934976] ESTAT: 00010000 [PIL] (IS= ECode=1 EsubCode=0)
        [  550.935097]  BADV: 0000000000000080
        [  550.935181]  PRID: 0014c010 (Loongson-64bit, Loongson-3A5000)
        [  550.935291] Modules linked in:
        [  550.935391] Process test_progs (pid: 1303, threadinfo=000000006c3b1c41, task=0000000061f84a55)
        [  550.935643] Stack : 00007ffffbb15bb8 0000555555eb2ec8 0000000000000000 0000000000000001
        [  550.935844]         9000000004005000 ffff80001b864000 00007ffffbb15450 90000000029aa034
        [  550.935990]         0000000000000000 9000000108353ec0 0000000000000118 d07d9dfb09721a09
        [  550.936175]         0000000000000001 0000000000000000 9000000108353ec0 0000000000000118
        [  550.936314]         9000000101d46ad0 900000000290abf0 000055555663f610 0000000000000000
        [  550.936479]         0000000000000003 9000000108353ec0 00007ffffbb15450 90000000029d7288
        [  550.936635]         00007ffff1dafd60 000055555663f610 0000000000000000 0000000000000003
        [  550.936779]         9000000108353ec0 90000000035dd1f0 00007ffff1dafd58 9000000002841c5c
        [  550.936939]         0000000000000119 0000555555eea5a8 00007ffff1d78780 00007ffffbb153e0
        [  550.937083]         ffffffffffffffda 00007ffffbb15518 0000000000000040 00007ffffbb15558
        [  550.937224]         ...
        [  550.937299] Call Trace:
        [  550.937521] [<ffff80000200be34>] bpf_prog_98f1b9e767be2a84_on_enter+0x74/0x200
        [  550.937910] [<90000000029aa034>] bpf_trace_run2+0x90/0x154
        [  550.938105] [<900000000290abf0>] syscall_trace_enter.isra.0+0x1cc/0x200
        [  550.938224] [<90000000035dd1f0>] do_syscall+0x48/0x94
        [  550.938319] [<9000000002841c5c>] handle_syscall+0xbc/0x158
        [  550.938477]
        [  550.938607] Code: 580009ae  50016000  262402e4 <28c20085> 14092084  03a00084  16000024  03240084  00150006
        [  550.938851]
        [  550.939021] ---[ end trace 0000000000000000 ]---
      
      Further investigation shows that this panic is triggered by memory
      load operations:
      
        ptr = bpf_cgrp_storage_get(&map_a, task->cgroups->dfl_cgrp, 0,
                                   BPF_LOCAL_STORAGE_GET_F_CREATE);
      
      The expression `task->cgroups->dfl_cgrp` involves two memory load.
      Since the field offset fits in imm12 or imm14, we use ldd or ldptrd
      instructions. But both instructions have the side effect that it will
      signed-extended the imm operand. Finally, we got the wrong addresses
      and panics is inevitable.
      
      Use a generic ldxd instruction to avoid this kind of issues.
      
      With this change, we have:
      
        # ./test_progs -t cgrp_local_storage
        Can't find bpf_testmod.ko kernel module: -2
        WARNING! Selftests relying on bpf_testmod.ko will be skipped.
        test_cgrp_local_storage:PASS:join_cgroup /cgrp_local_storage 0 nsec
        #48/1    cgrp_local_storage/tp_btf:OK
        test_attach_cgroup:PASS:skel_open 0 nsec
        test_attach_cgroup:PASS:prog_attach 0 nsec
        test_attach_cgroup:PASS:prog_attach 0 nsec
        libbpf: prog 'update_cookie_tracing': failed to attach: ERROR: strerror_r(-524)=22
        test_attach_cgroup:FAIL:prog_attach unexpected error: -524
        #48/2    cgrp_local_storage/attach_cgroup:FAIL
        test_recursion:PASS:skel_open_and_load 0 nsec
        libbpf: prog 'on_lookup': failed to attach: ERROR: strerror_r(-524)=22
        libbpf: prog 'on_lookup': failed to auto-attach: -524
        test_recursion:FAIL:skel_attach unexpected error: -524 (errno 524)
        #48/3    cgrp_local_storage/recursion:FAIL
        #48/4    cgrp_local_storage/negative:OK
        #48/5    cgrp_local_storage/cgroup_iter_sleepable:OK
        test_yes_rcu_lock:PASS:skel_open 0 nsec
        test_yes_rcu_lock:PASS:skel_load 0 nsec
        libbpf: prog 'yes_rcu_lock': failed to attach: ERROR: strerror_r(-524)=22
        libbpf: prog 'yes_rcu_lock': failed to auto-attach: -524
        test_yes_rcu_lock:FAIL:skel_attach unexpected error: -524 (errno 524)
        #48/6    cgrp_local_storage/yes_rcu_lock:FAIL
        #48/7    cgrp_local_storage/no_rcu_lock:OK
        #48      cgrp_local_storage:FAIL
      
        All error logs:
        test_cgrp_local_storage:PASS:join_cgroup /cgrp_local_storage 0 nsec
        test_attach_cgroup:PASS:skel_open 0 nsec
        test_attach_cgroup:PASS:prog_attach 0 nsec
        test_attach_cgroup:PASS:prog_attach 0 nsec
        libbpf: prog 'update_cookie_tracing': failed to attach: ERROR: strerror_r(-524)=22
        test_attach_cgroup:FAIL:prog_attach unexpected error: -524
        #48/2    cgrp_local_storage/attach_cgroup:FAIL
        test_recursion:PASS:skel_open_and_load 0 nsec
        libbpf: prog 'on_lookup': failed to attach: ERROR: strerror_r(-524)=22
        libbpf: prog 'on_lookup': failed to auto-attach: -524
        test_recursion:FAIL:skel_attach unexpected error: -524 (errno 524)
        #48/3    cgrp_local_storage/recursion:FAIL
        test_yes_rcu_lock:PASS:skel_open 0 nsec
        test_yes_rcu_lock:PASS:skel_load 0 nsec
        libbpf: prog 'yes_rcu_lock': failed to attach: ERROR: strerror_r(-524)=22
        libbpf: prog 'yes_rcu_lock': failed to auto-attach: -524
        test_yes_rcu_lock:FAIL:skel_attach unexpected error: -524 (errno 524)
        #48/6    cgrp_local_storage/yes_rcu_lock:FAIL
        #48      cgrp_local_storage:FAIL
        Summary: 0/4 PASSED, 0 SKIPPED, 1 FAILED
      
      No panics any more (The test still failed because lack of BPF trampoline
      which I am actively working on).
      
      Fixes: 5dc61552 ("LoongArch: Add BPF JIT support")
      Signed-off-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      fe575755
    • Hengqi Chen's avatar
      LoongArch: Preserve syscall nr across execve() · d6c5f06e
      Hengqi Chen authored
      Currently, we store syscall nr in pt_regs::regs[11] and syscall execve()
      accidentally overrides it during its execution:
      
          sys_execve()
            -> do_execve()
              -> do_execveat_common()
                -> bprm_execve()
                  -> exec_binprm()
                    -> search_binary_handler()
                      -> load_elf_binary()
                        -> ELF_PLAT_INIT()
      
      ELF_PLAT_INIT() reset regs[11] to 0, so in syscall_exit_to_user_mode()
      we later get a wrong syscall nr. This breaks tools like execsnoop since
      it relies on execve() tracepoints.
      
      Skip pt_regs::regs[11] reset in ELF_PLAT_INIT() to fix the issue.
      Signed-off-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      d6c5f06e
    • Jinyang He's avatar
      LoongArch: Set unwind stack type to unknown rather than set error flag · 97ceddbc
      Jinyang He authored
      During unwinding, unwind_done() is used as an end condition. Normally it
      unwind to the user stack and then set the stack type to unknown, which
      is a normal exit. When something unexpected happens in unwind process
      and we cannot unwind anymore, we should set the error flag, and also set
      the stack type to unknown to indicate that the unwind process can not
      continue. The error flag emphasizes that the unwind process produce an
      unexpected error. There is no unexpected things when we unwind the PT_REGS
      in the top of IRQ stack and find out that is an user mode PT_REGS. Thus,
      we should not set error flag and just set stack type to unknown.
      Reported-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Acked-by: default avatarHengqi Chen <hengqi.chen@gmail.com>
      Signed-off-by: default avatarJinyang He <hejinyang@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      97ceddbc
    • Xi Ruoyao's avatar
      LoongArch: Slightly clean up drdtime() · 8146c5b3
      Xi Ruoyao authored
      As we are just discarding the stable clock ID, simply write it into
      $zero instead of allocating a temporary register.
      Signed-off-by: default avatarXi Ruoyao <xry111@xry111.site>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      8146c5b3
    • WANG Rui's avatar
      LoongArch: Apply dynamic relocations for LLD · eea673e9
      WANG Rui authored
      For the following assembly code:
      
           .text
           .global func
       func:
           nop
      
           .data
       var:
           .dword func
      
      When linked with `-pie`, GNU LD populates the `var` variable with the
      pre-relocated value of `func`. However, LLVM LLD does not exhibit the
      same behavior. This issue also arises with the `kernel_entry` in arch/
      loongarch/kernel/head.S:
      
       _head:
           .word   MZ_MAGIC                /* "MZ", MS-DOS header */
           .org    0x8
           .dword  kernel_entry            /* Kernel entry point */
      
      The correct kernel entry from the MS-DOS header is crucial for jumping
      to vmlinux from zboot. This necessity is why the compressed relocatable
      kernel compiled by Clang encounters difficulties in booting.
      
      To address this problem, it is proposed to apply dynamic relocations to
      place with `--apply-dynamic-relocs`.
      
      Link: https://github.com/ClangBuiltLinux/linux/issues/1962Signed-off-by: default avatarWANG Rui <wangrui@loongson.cn>
      Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
      eea673e9
  3. 08 Dec, 2023 20 commits
    • Linus Torvalds's avatar
      Merge tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · f2e8a57e
      Linus Torvalds authored
      Pull SCSI fix from James Bottomley:
       "One tiny fix to the be2iscsi driver fixing a memory leak in an error
        leg"
      
      * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
        scsi: be2iscsi: Fix a memleak in beiscsi_init_wrb_handle()
      f2e8a57e
    • Linus Torvalds's avatar
      Merge tag 'block-6.7-2023-12-08' of git://git.kernel.dk/linux · d71369db
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Nothing major in here, just miscellanous fixes for MD and NVMe:
      
         - NVMe pull request via Keith:
            - Proper nvme ctrl state setting (Keith)
            - Passthrough command optimization (Keith)
            - Spectre fix (Nitesh)
            - Kconfig clarifications (Shin'ichiro)
            - Frozen state deadlock fix (Bitao)
            - Power setting quirk (Georg)
      
         - MD pull requests via Song:
            - 6.7 regresisons with recovery/sync (Yu)
            - Reshape fix (David)"
      
      * tag 'block-6.7-2023-12-08' of git://git.kernel.dk/linux:
        md: split MD_RECOVERY_NEEDED out of mddev_resume
        nvme-pci: Add sleep quirk for Kingston drives
        md: fix stopping sync thread
        md: don't leave 'MD_RECOVERY_FROZEN' in error path of md_set_readonly()
        md: fix missing flush of sync_work
        nvme: fix deadlock between reset and scan
        nvme: prevent potential spectre v1 gadget
        nvme: improve NVME_HOST_AUTH and NVME_TARGET_AUTH config descriptions
        nvme-ioctl: move capable() admin check to the end
        nvme: ensure reset state check ordering
        nvme: introduce helper function to get ctrl state
        md/raid6: use valid sector values to determine if an I/O should wait on the reshape
      d71369db
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.7-2023-12-08' of git://git.kernel.dk/linux · 689659c9
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
       "Two minor fixes for issues introduced in this release cycle, and two
        fixes for issues or potential issues that are heading to stable.
      
        One of these ends up disabling passing io_uring file descriptors via
        SCM_RIGHTS. There really shouldn't be an overlap between that kind of
        historic use case and modern usage of io_uring, which is why this was
        deemed appropriate"
      
      * tag 'io_uring-6.7-2023-12-08' of git://git.kernel.dk/linux:
        io_uring/af_unix: disable sending io_uring over sockets
        io_uring/kbuf: check for buffer list readiness after NULL check
        io_uring/kbuf: Fix an NULL vs IS_ERR() bug in io_alloc_pbuf_ring()
        io_uring: fix mutex_unlock with unreferenced ctx
      689659c9
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma · 8aa74869
      Linus Torvalds authored
      Pull rdma fixes from Jason Gunthorpe:
       "Primarily rtrs and irdma fixes:
      
         - Fix uninitialized value in ib_get_eth_speed()
      
         - Fix hns refusing to work if userspace doesn't select the correct
           congestion control algorithm
      
         - Several irdma fixes - unreliable Send Queue Drain, use after free,
           64k page size bugs, device removal races
      
         - Several rtrs bug fixes - crashes, memory leaks, use after free, bad
           credit accounting, bogus WARN_ON
      
         - Typos and a MAINTAINER update"
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma:
        RDMA/irdma: Avoid free the non-cqp_request scratch
        RDMA/irdma: Fix support for 64k pages
        RDMA/irdma: Ensure iWarp QP queue memory is OS paged aligned
        RDMA/core: Fix umem iterator when PAGE_SIZE is greater then HCA pgsz
        RDMA/irdma: Fix UAF in irdma_sc_ccq_get_cqe_info()
        RDMA/bnxt_re: Correct module description string
        RDMA/rtrs-clt: Remove the warnings for req in_use check
        RDMA/rtrs-clt: Fix the max_send_wr setting
        RDMA/rtrs-srv: Destroy path files after making sure no IOs in-flight
        RDMA/rtrs-srv: Free srv_mr iu only when always_invalidate is true
        RDMA/rtrs-srv: Check return values while processing info request
        RDMA/rtrs-clt: Start hb after path_up
        RDMA/rtrs-srv: Do not unconditionally enable irq
        MAINTAINERS: Add Chengchang Tang as Hisilicon RoCE maintainer
        RDMA/irdma: Add wait for suspend on SQD
        RDMA/irdma: Do not modify to SQD on error
        RDMA/hns: Fix unnecessary err return when using invalid congest control algorithm
        RDMA/core: Fix uninit-value access in ib_get_eth_speed()
      8aa74869
    • Linus Torvalds's avatar
      Merge tag 'pm-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 081ed90a
      Linus Torvalds authored
      Pull power management fix from Rafael Wysocki:
       "Fix cpufreq reference counting in the DTPM (dynamic thermal and power
        management) power capping framework (Lukasz Luba)"
      
      * tag 'pm-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        powercap: DTPM: Fix missing cpufreq_cpu_put() calls
      081ed90a
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · c3e2f9bd
      Linus Torvalds authored
      Pull ACPI fix from Rafael Wysocki:
       "Fix a possible crash on an attempt to free unallocated memory in the
        error path of acpi_evaluate_reference() that has been introduced by
        one of the recent changes (Rafael Wysocki)"
      
      * tag 'acpi-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: utils: Fix error path in acpi_evaluate_reference()
      c3e2f9bd
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v6.7-rc5' of... · 0dfe14fc
      Linus Torvalds authored
      Merge tag 'hwmon-for-v6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - acpi_power_meter: Fix 4.29 MW output seen if acpi reports bad data
      
       - corsair-psu: Fix ability to probe if the driver is built into the kernel
      
       - ltc2991: Fix spelling mistake "contiuous" -> "continuous"
      
       - max31827: Add missing regulator header file include
      
       - nzxt-kraken2: Fix error handling path in probe function
      
      * tag 'hwmon-for-v6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (corsair-psu) Fix probe when built-in
        hwmon: (nzxt-kraken2) Fix error handling path in kraken2_probe()
        hwmon: (acpi_power_meter) Fix 4.29 MW bug
        hwmon: max31827: include regulator header
        hwmon: ltc2991: Fix spelling mistake "contiuous" -> "continuous"
      0dfe14fc
    • Linus Torvalds's avatar
      Merge tag 'pwm/for-6.7-rc5-fixes' of https://git.pengutronix.de/git/ukl/linux · d650b3be
      Linus Torvalds authored
      Pull pwm fix from Uwe Kleine-König:
       "This fixes a null pointer exception in the bcm2835 pwm driver.
      
        The problem was introduced by a combination of two commits merged for
        v6.7-rc1 where each change alone would have been fine.
      
        Thanks to Florian Fainelli for noticing and fixing the issue"
      
      * tag 'pwm/for-6.7-rc5-fixes' of https://git.pengutronix.de/git/ukl/linux:
        pwm: bcm2835: Fix NPD in suspend/resume
      d650b3be
    • Linus Torvalds's avatar
      Merge tag 'sound-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · b8b68d2f
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "This is a typical bump in the middle of its way; we've gathered lots
        of fixes (mostly for ASoC) at this time:
      
         - PCM array out-of-bound access fix
      
         - Correction of SOC PCM merge error
      
         - Lots of ASoC SOF Intel updates
      
         - A few ASoC AMD quirks
      
         - More proper timer handling in PCM test module
      
         - HD-audio and USB-audio quirks as usual
      
         - Other device-specific fixes for various ASoC codecs"
      
      * tag 'sound-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (39 commits)
        ALSA: hda/realtek: Add quirk for Lenovo Yoga Pro 7
        ALSA: pcmtest: stop timer before buffer is released
        ALSA: hda/realtek: Add Framework laptop 16 to quirks
        ALSA: hda/realtek: add new Framework laptop to quirks
        ALSA: pcm: fix out-of-bounds in snd_pcm_state_names
        ASoC: qcom: sc8280xp: Limit speaker digital volumes
        ASoC: ops: add correct range check for limiting volume
        ALSA: hda/realtek: Enable headset on Lenovo M90 Gen5
        ALSA: hda/realtek: fix speakers on XPS 9530 (2023)
        ALSA: usb-audio: Add Pioneer DJM-450 mixer controls
        ASoC: wm_adsp: fix memleak in wm_adsp_buffer_populate
        ASoC: da7219: Support low DC impedance headset
        ASoC: amd: acp: Add support for a new Huawei Matebook laptop
        ALSA: hda/realtek: Apply quirk for ASUS UM3504DA
        ASoC: SOF: ipc4-topology: Correct data structures for the GAIN module
        ASoC: SOF: ipc4-topology: Correct data structures for the SRC module
        ASoC: hdac_hda: Conditionally register dais for HDMI and Analog
        ASoC: codecs: lpass-tx-macro: set active_decimator correct default value
        ASoC: amd: yc: Fix non-functional mic on ASUS E1504FA
        ASoC: amd: yc: Add DMI entry to support System76 Pangolin 13
        ...
      b8b68d2f
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-12-08' of git://anongit.freedesktop.org/drm/drm · 38bafa65
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Regular weekly fixes, mostly amdgpu and i915 as usual. A couple of
        nouveau, panfrost, one core and one bridge Kconfig.
      
        Seems about normal for rc5.
      
        atomic-helpers:
         - invoke end_fb_access while owning plane state
      
        i915:
         - fix a missing dep for a previous fix
         - Relax BXT/GLK DSI transcoder hblank limits
         - Fix DP MST .mode_valid_ctx() return values
         - Reject DP MST modes that require bigjoiner (as it's not yet
           supported on DP MST)
         - Fix _intel_dsb_commit() variable type to allow negative values
      
        nouveau:
         - document some bits of gsp rm
         - flush vmm more on tu102 to avoid hangs
      
        panfrost:
         - fix imported dma-buf objects residency
         - fix device freq update
      
        bridge:
         - tc358768 - fix Kconfig
      
        amdgpu:
         - Disable MCBP on gfx9
         - DC vbios fix
         - eDP fix
         - dml2 UBSAN fix
         - SMU 14 fix
         - RAS fixes
         - dml KASAN/KCSAN fix
         - PSP 13 fix
         - Clockgating fixes
         - Suspend fix
      
        exynos:
         - fix pointer dereference
         - fix wrong error check"
      
      * tag 'drm-fixes-2023-12-08' of git://anongit.freedesktop.org/drm/drm: (27 commits)
        drm/exynos: fix a wrong error checking
        drm/exynos: fix a potential error pointer dereference
        drm/amdgpu: fix buffer funcs setting order on suspend
        drm/amdgpu: Avoid querying DRM MGCG status
        drm/amdgpu: Update HDP 4.4.2 clock gating flags
        drm/amdgpu: Add NULL checks for function pointers
        drm/amdgpu: Restrict extended wait to PSP v13.0.6
        drm/amd/display: Increase frame warning limit with KASAN or KCSAN in dml
        drm/amdgpu: optimize the printing order of error data
        drm/amdgpu: Update fw version for boot time error query
        drm/amd/pm: support new mca smu error code decoding
        drm/amd/swsmu: update smu v14_0_0 driver if version and metrics table
        drm/amd/display: Fix array-index-out-of-bounds in dml2
        drm/amd/display: Add monitor patch for specific eDP
        drm/amd/display: Use channel_width = 2 for vram table 3.0
        drm/amdgpu: disable MCBP by default
        drm/atomic-helpers: Invoke end_fb_access while owning plane state
        drm/i915: correct the input parameter on _intel_dsb_commit()
        drm/i915/mst: Reject modes that require the bigjoiner
        drm/i915/mst: Fix .mode_valid_ctx() return values
        ...
      38bafa65
    • Sean Christopherson's avatar
      KVM: SVM: Update EFER software model on CR0 trap for SEV-ES · 4cdf351d
      Sean Christopherson authored
      In general, activating long mode involves setting the EFER_LME bit in
      the EFER register and then enabling the X86_CR0_PG bit in the CR0
      register. At this point, the EFER_LMA bit will be set automatically by
      hardware.
      
      In the case of SVM/SEV guests where writes to CR0 are intercepted, it's
      necessary for the host to set EFER_LMA on behalf of the guest since
      hardware does not see the actual CR0 write.
      
      In the case of SEV-ES guests where writes to CR0 are trapped instead of
      intercepted, the hardware *does* see/record the write to CR0 before
      exiting and passing the value on to the host, so as part of enabling
      SEV-ES support commit f1c6366e ("KVM: SVM: Add required changes to
      support intercepts under SEV-ES") dropped special handling of the
      EFER_LMA bit with the understanding that it would be set automatically.
      
      However, since the guest never explicitly sets the EFER_LMA bit, the
      host never becomes aware that it has been set. This becomes problematic
      when userspace tries to get/set the EFER values via
      KVM_GET_SREGS/KVM_SET_SREGS, since the EFER contents tracked by the host
      will be missing the EFER_LMA bit, and when userspace attempts to pass
      the EFER value back via KVM_SET_SREGS it will fail a sanity check that
      asserts that EFER_LMA should always be set when X86_CR0_PG and EFER_LME
      are set.
      
      Fix this by always inferring the value of EFER_LMA based on X86_CR0_PG
      and EFER_LME, regardless of whether or not SEV-ES is enabled.
      
      Fixes: f1c6366e ("KVM: SVM: Add required changes to support intercepts under SEV-ES")
      Reported-by: default avatarPeter Gonda <pgonda@google.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Message-Id: <20210507165947.2502412-2-seanjc@google.com>
      [A two year old patch that was revived after we noticed the failure in
       KVM_SET_SREGS and a similar patch was posted by Michael Roth.  This is
       Sean's patch, but with Michael's more complete commit message. - Paolo]
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4cdf351d
    • Armin Wolf's avatar
      hwmon: (corsair-psu) Fix probe when built-in · 307004e8
      Armin Wolf authored
      It seems that when the driver is built-in, the HID bus is
      initialized after the driver is loaded, which whould cause
      module_hid_driver() to fail.
      Fix this by registering the driver after the HID bus using
      late_initcall() in accordance with other hwmon HID drivers.
      Signed-off-by: default avatarArmin Wolf <W_Armin@gmx.de>
      Link: https://lore.kernel.org/r/20231207210723.222552-1-W_Armin@gmx.de
      [groeck: Dropped "compile tested" comment; the patch has been tested
       but the tester did not provide a Tested-by: tag]
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      307004e8
    • David Woodhouse's avatar
      KVM: selftests: add -MP to CFLAGS · 96f12401
      David Woodhouse authored
      Using -MD without -MP causes build failures when a header file is deleted
      or moved. With -MP, the compiler will emit phony targets for the header
      files it lists as dependencies, and the Makefiles won't refuse to attempt
      to rebuild a C unit which no longer includes the deleted header.
      Signed-off-by: default avatarDavid Woodhouse <dwmw@amazon.co.uk>
      Link: https://lore.kernel.org/r/9fc8b5395321abbfcaf5d78477a9a7cd350b08e4.camel@infradead.orgSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      96f12401
    • angquan yu's avatar
      KVM: selftests: Actually print out magic token in NX hugepages skip message · 4a073e81
      angquan yu authored
      Pass MAGIC_TOKEN to __TEST_REQUIRE() when printing the help message about
      needing to pass a magic value to manually run the NX hugepages test,
      otherwise the help message will contain garbage.
      
        In file included from x86_64/nx_huge_pages_test.c:15:
        x86_64/nx_huge_pages_test.c: In function ‘main’:
        include/test_util.h:40:32: error: format ‘%d’ expects a matching ‘int’ argument [-Werror=format=]
           40 |                 ksft_exit_skip("- " fmt "\n", ##__VA_ARGS__);   \
              |                                ^~~~
        x86_64/nx_huge_pages_test.c:259:9: note: in expansion of macro ‘__TEST_REQUIRE’
          259 |         __TEST_REQUIRE(token == MAGIC_TOKEN,
              |         ^~~~~~~~~~~~~~
      Signed-off-by: default avatarangquan yu <angquan21@gmail.com>
      Link: https://lore.kernel.org/r/20231128221105.63093-1-angquan21@gmail.com
      [sean: rewrite shortlog+changelog]
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      4a073e81
    • Paolo Bonzini's avatar
      Merge tag 'kvm-x86-fixes-6.7-rcN' of https://github.com/kvm-x86/linux into kvm-master · 6254eeba
      Paolo Bonzini authored
      KVM fixes for 6.7-rcN:
      
       - When checking if a _running_ vCPU is "in-kernel", i.e. running at CPL0,
         get the CPL directly instead of relying on preempted_in_kernel, which
         is valid if and only if the vCPU was preempted, i.e. NOT running.
      
       - Set .owner for various KVM file_operations so that files refcount the
         KVM module until KVM is done executing _all_ code, including the last
         few instructions of kvm_put_kvm().  And then revert the misguided
         attempt to rely on "struct kvm" refcounts to pin KVM-the-module.
      
       - Fix a benign "return void" that was recently introduced.
      6254eeba
    • Paolo Bonzini's avatar
      Merge tag 'kvm-s390-master-6.7-1' of... · aa0ae3df
      Paolo Bonzini authored
      Merge tag 'kvm-s390-master-6.7-1' of https://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux into kvm-master
      
      Two small but important bugfixes.
      aa0ae3df
    • Paolo Bonzini's avatar
      Merge tag 'kvmarm-fixes-6.7-1' of... · c8a11a93
      Paolo Bonzini authored
      Merge tag 'kvmarm-fixes-6.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm into kvm-master
      
      KVM/arm64 fixes for 6.7, take #1
      
       - Avoid mapping vLPIs that have already been mapped
      c8a11a93
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 4df7c5fd
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
      
       - A pair of fixes to the new module load-time relocation code
      
       - A fix for hwprobe overflowing on rv32
      
       - A fix for to correctly decode C.SWSP and C.SDSP, which manifests in
         misaligned access handling
      
       - A fix for a boot-time shadow call stack initialization ordering issue
      
       - A fix for Andes' errata probing, which was calling
         riscv_noncoherent_supported() too late in the boot process and
         triggering an oops
      
      * tag 'riscv-for-linus-6.7-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        riscv: errata: andes: Probe for IOCP only once in boot stage
        riscv: Fix SMP when shadow call stacks are enabled
        dt-bindings: perf: riscv,pmu: drop unneeded quotes
        riscv: fix misaligned access handling of C.SWSP and C.SDSP
        RISC-V: hwprobe: Always use u64 for extension bits
        Support rv32 ULEB128 test
        riscv: Correct type casting in module loading
        riscv: Safely remove entries from relocation list
      4df7c5fd
    • Linus Torvalds's avatar
      Merge tag 'soc-fixes-6.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · a6adef89
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "Most of the changes are devicetree fixes for NXP, Mediatek, Rockchips
        Arm machines as well as Microchip RISC-V, and most of these address
        build-time warnings for spec violations and other minor issues. One of
        the Mediatek warnings was enabled by default and prevented a clean
        build.
      
        The ones that address serious runtime issues are all on the i.MX
        platform:
      
         - a boot time panic on imx8qm
      
         - USB hanging under load on imx8
      
         - regressions on the imx93 ethernet phy
      
        Code fixes include a minor error handling for the i.MX PMU driver, and
        a number of firmware driver fixes:
      
         - OP-TEE fix for supplicant based device enumeration, and a new sysfs
           attribute to needed to fix a race against userspace
      
         - Arm SCMI fix for possible truncation/overflow in the frequency
           computations
      
         - Multiple FF-A fixes for the newly added notification support"
      
      * tag 'soc-fixes-6.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (55 commits)
        MAINTAINERS: change the S32G2 maintainer's email address.
        arm64: dts: rockchip: Fix eMMC Data Strobe PD on rk3588
        ARM: dts: imx28-xea: Pass the 'model' property
        ARM: dts: imx7: Declare timers compatible with fsl,imx6dl-gpt
        MAINTAINERS: reinstate freescale ARM64 DT directory in i.MX entry
        arm64: dts: imx8-apalis: set wifi regulator to always-on
        ARM: imx: Check return value of devm_kasprintf in imx_mmdc_perf_init
        arm64: dts: imx8ulp: update gpio node name to align with register address
        arm64: dts: imx93: update gpio node name to align with register address
        arm64: dts: imx93: correct mediamix power
        arm64: dts: imx8qm: Add imx8qm's own pm to avoid panic during startup
        arm64: dts: freescale: imx8-ss-dma: Fix #pwm-cells
        arm64: dts: freescale: imx8-ss-lsio: Fix #pwm-cells
        dt-bindings: pwm: imx-pwm: Unify #pwm-cells for all compatibles
        ARM: dts: imx6ul-pico: Describe the Ethernet PHY clock
        arm64: dts: imx8mp: imx8mq: Add parkmode-disable-ss-quirk on DWC3
        arm64: dts: rockchip: Fix PCI node addresses on rk3399-gru
        arm64: dts: rockchip: drop interrupt-names property from rk3588s dfi
        firmware: arm_scmi: Fix possible frequency truncation when using level indexing mode
        firmware: arm_scmi: Fix frequency truncation by promoting multiplier type
        ...
      a6adef89
    • Linus Torvalds's avatar
      Merge tag 'trace-v6.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace · 17894c2a
      Linus Torvalds authored
      Pull tracing fixes from Steven Rostedt:
      
       - Snapshot buffer issues:
      
         1. When instances started allowing latency tracers, it uses a
            snapshot buffer (another buffer that is not written to but swapped
            with the main buffer that is). The snapshot buffer needs to be the
            same size as the main buffer. But when the snapshot buffers were
            added to instances, the code to make the snapshot equal to the
            main buffer still was only doing it for the main buffer and not
            the instances.
      
         2. Need to stop the current tracer when resizing the buffers.
            Otherwise there can be a race if the tracer decides to make a
            snapshot between resizing the main buffer and the snapshot buffer.
      
         3. When a tracer is "stopped" in disables both the main buffer and
            the snapshot buffer. This needs to be done for instances and not
            only the main buffer, now that instances also have a snapshot
            buffer.
      
       - Buffered event for filtering issues:
      
         When filtering is enabled, because events can be dropped often, it is
         quicker to copy the event into a temp buffer and write that into the
         main buffer if it is not filtered or just drop the event if it is,
         than to write the event into the ring buffer and then try to discard
         it. This temp buffer is allocated and needs special synchronization
         to do so. But there were some issues with that:
      
         1. When disabling the filter and freeing the buffer, a call to all
            CPUs is required to stop each per_cpu usage. But the code called
            smp_call_function_many() which does not include the current CPU.
            If the task is migrated to another CPU when it enables the CPUs
            via smp_call_function_many(), it will not enable the one it is
            currently on and this causes issues later on. Use
            on_each_cpu_mask() instead, which includes the current CPU.
      
          2.When the allocation of the buffered event fails, it can give a
            warning. But the buffered event is just an optimization (it's
            still OK to write to the ring buffer and free it). Do not WARN in
            this case.
      
          3.The freeing of the buffer event requires synchronization. First a
            counter is decremented to zero so that no new uses of it will
            happen. Then it sets the buffered event to NULL, and finally it
            frees the buffered event. There's a synchronize_rcu() between the
            counter decrement and the setting the variable to NULL, but only a
            smp_wmb() between that and the freeing of the buffer. It is
            theoretically possible that a user missed seeing the decrement,
            but will use the buffer after it is free. Another
            synchronize_rcu() is needed in place of that smp_wmb().
      
       - ring buffer timestamps on 32 bit machines
      
         The ring buffer timestamp on 32 bit machines has to break the 64 bit
         number into multiple values as cmpxchg is required on it, and a 64
         bit cmpxchg on 32 bit architectures is very slow. The code use to
         just use two 32 bit values and make it a 60 bit timestamp where the
         other 4 bits were used as counters for synchronization. It later came
         known that the timestamp on 32 bit still need all 64 bits in some
         cases. So 3 words were created to handle the 64 bits. But issues
         arised with this:
      
          1. The synchronization logic still only compared the counter with
             the first two, but not with the third number, so the
             synchronization could fail unknowingly.
      
          2. A check on discard of an event could race if an event happened
             between the discard and updating one of the counters. The counter
             needs to be updated (forcing an absolute timestamp and not to use
             a delta) before the actual discard happens.
      
      * tag 'trace-v6.7-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/trace/linux-trace:
        ring-buffer: Test last update in 32bit version of __rb_time_read()
        ring-buffer: Force absolute timestamp on discard of event
        tracing: Fix a possible race when disabling buffered events
        tracing: Fix a warning when allocating buffered events fails
        tracing: Fix incomplete locking when disabling buffered events
        tracing: Disable snapshot buffer when stopping instance tracers
        tracing: Stop current tracer when resizing buffer
        tracing: Always update snapshot buffer size
      17894c2a