1. 15 Jul, 2024 5 commits
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2024-07-12' of https://gitlab.freedesktop.org/drm/kernel · 2ffd45da
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Oh I screwed up last week's fixes pull, and forgot to send..
      
        Back to work, thanks to Sima for last week, not too many fixes as
        expected getting close to release [ sic - Linus ], amdgpu and xe have
        a couple each, and then some other misc ones.
      
        amdgpu:
         - PSR-SU fix
         - Reseved VMID fix
      
        xe:
         - Use write-back caching mode for system memory on DGFX
         - Do not leak object when finalizing hdcp gsc
      
        bridge:
         - adv7511 EDID irq fix
      
        gma500:
         - NULL mode fixes.
      
        meson:
         - fix resource leak"
      
      * tag 'drm-fixes-2024-07-12' of https://gitlab.freedesktop.org/drm/kernel:
        Revert "drm/amd/display: Reset freesync config before update new state"
        drm/xe/display/xe_hdcp_gsc: Free arbiter on driver removal
        drm/xe: Use write-back caching mode for system memory on DGFX
        drm/amdgpu: reject gang submit on reserved VMIDs
        drm/gma500: fix null pointer dereference in cdv_intel_lvds_get_modes
        drm/gma500: fix null pointer dereference in psb_intel_lvds_get_modes
        drm/meson: fix canvas release in bind function
        drm/bridge: adv7511: Fix Intermittent EDID failures
      2ffd45da
    • Linus Torvalds's avatar
      Merge branch 'link_path_walk' · 5e049755
      Linus Torvalds authored
      This is the last - for now - of the "look, we generated some
      questionable code for basic pathname lookup operations" set of
      branches.
      
      This is mainly just re-organizing the name hashing code in
      link_path_walk(), mostly by improving the calling conventions to
      the inlined helper functions and moving some of the code around
      to allow for more straightforward code generation.
      
      The profiles - and the generated code - look much more palatable
      to me now.
      
      * link_path_walk:
        vfs: link_path_walk: move more of the name hashing into hash_name()
        vfs: link_path_walk: improve may_lookup() code generation
        vfs: link_path_walk: do '.' and '..' detection while hashing
        vfs: link_path_walk: clarify and improve name hashing interface
        vfs: link_path_walk: simplify name hash flow
      5e049755
    • Linus Torvalds's avatar
      Merge branch 'arm64-uaccess' (early part) · 1654c37d
      Linus Torvalds authored
      Merge arm64 support for proper 'unsafe' user accessor functionality,
      with 'asm goto' for handling exceptions.
      
      The arm64 user access code used the slow fallback code for the user
      access code, which generates horrendous code for things like
      strncpy_from_user(), because it causes us to generate code for SW PAN
      and for range checking for every individual word.
      
      Teach arm64 about 'user_access_begin()' and the so-called 'unsafe' user
      access functions that take an error label and use 'asm goto' to make all
      the exception handling be entirely out of line.
      
      [ These user access functions are called 'unsafe' not because the
        concept is unsafe, but because the low-level accessor functions
        absolutely have to be protected by the 'user_access_begin()' code,
        because that's what does the range checking.
      
        So the accessor functions have that scary name to make sure people
        don't think they are usable on their own, and cannot be mis-used the
        way our old "double underscore" versions of __get_user() and friends
        were ]
      
      The "(early part)" of the branch is because the full branch also
      improved on the "access_ok()" function, but the exact semantics of TBI
      (top byte ignore) have to be discussed before doing that part.  So this
      just does the low-level accessor update to use "asm goto".
      
      * 'arm64-uaccess' (early part):
        arm64: start using 'asm goto' for put_user()
        arm64: start using 'asm goto' for get_user() when available
      1654c37d
    • Linus Torvalds's avatar
      Merge branch 'word-at-a-time' · 6a31ffdf
      Linus Torvalds authored
      Merge minor word-at-a-time instruction choice improvements for x86 and
      arm64.
      
      This is the second of four branches that came out of me looking at the
      code generation for path lookup on arm64.
      
      The word-at-a-time infrastructure is used to do string operations in
      chunks of one word both when copying the pathname from user space (in
      strncpy_from_user()), and when parsing and hashing the individual path
      components (in link_path_walk()).
      
      In particular, the "find the first zero byte" uses various bit tricks to
      figure out the end of the string or path component, and get the length
      without having to do things one byte at a time.  Both x86-64 and arm64
      had less than optimal code choices for that.
      
      The commit message for the arm64 change in particular tries to explain
      the exact code flow for the zero byte finding for people who care.  It's
      made a bit more complicated by the fact that we support big-endian
      hardware too, and so we have some extra abstraction layers to allow
      different models for finding the zero byte, quite apart from the issue
      of picking specialized instructions.
      
      * word-at-a-time:
        arm64: word-at-a-time: improve byte count calculations for LE
        x86-64: word-at-a-time: improve byte count calculations
      6a31ffdf
    • Linus Torvalds's avatar
      Merge branch 'runtime-constants' · a5819099
      Linus Torvalds authored
      Merge runtime constants infrastructure with implementations for x86 and
      arm64.
      
      This is one of four branches that came out of me looking at profiles of
      my kernel build filesystem load on my 128-core Altra arm64 system, where
      pathname walking and the user copies (particularly strncpy_from_user()
      for fetching the pathname from user space) is very hot.
      
      This is a very specialized "instruction alternatives" model where the
      dentry hash pointer and hash count will be constants for the lifetime of
      the kernel, but the allocation are not static but done early during the
      kernel boot.  In order to avoid the pointer load and dynamic shift, we
      just rewrite the constants in the instructions in place.
      
      We can't use the "generic" alternative instructions infrastructure,
      because different architectures do it very differently, and it's
      actually simpler to just have very specific helpers, with a fallback to
      the generic ("old") model of just using variables for architectures that
      do not implement the runtime constant patching infrastructure.
      
      Link: https://lore.kernel.org/all/CAHk-=widPe38fUNjUOmX11ByDckaeEo9tN4Eiyke9u1SAtu9sA@mail.gmail.com/
      
      * runtime-constants:
        arm64: add 'runtime constant' support
        runtime constants: add x86 architecture support
        runtime constants: add default dummy infrastructure
        vfs: dcache: move hashlen_hash() from callers into d_hash()
      a5819099
  2. 14 Jul, 2024 7 commits
  3. 13 Jul, 2024 6 commits
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 4d145e3f
      Linus Torvalds authored
      Pull i2c fixes from Wolfram Sang:
       "Fixes for the I2C testunit, the Renesas R-Car driver and some
        MAINTAINERS corrections"
      
      * tag 'i2c-for-6.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        i2c: testunit: avoid re-issued work after read message
        i2c: rcar: ensure Gen3+ reset does not disturb local targets
        i2c: mark HostNotify target address as used
        i2c: testunit: correct Kconfig description
        MAINTAINERS: VIRTIO I2C loses a maintainer, gains a reviewer
        MAINTAINERS: delete entries for Thor Thayer
        i2c: rcar: clear NO_RXDMA flag after resetting
        i2c: rcar: bring hardware to known state when probing
      4d145e3f
    • Linus Torvalds's avatar
      Merge tag '6.10-rc7-smb3-client-fix' of git://git.samba.org/sfrench/cifs-2.6 · d0d0cd38
      Linus Torvalds authored
      Pull smb client fix from Steve French:
       "Small fix, also for stable"
      
      * tag '6.10-rc7-smb3-client-fix' of git://git.samba.org/sfrench/cifs-2.6:
        cifs: fix setting SecurityFlags to true
      d0d0cd38
    • Steve French's avatar
      cifs: fix setting SecurityFlags to true · d2346e28
      Steve French authored
      If you try to set /proc/fs/cifs/SecurityFlags to 1 it
      will set them to CIFSSEC_MUST_NTLMV2 which no longer is
      relevant (the less secure ones like lanman have been removed
      from cifs.ko) and is also missing some flags (like for
      signing and encryption) and can even cause mount to fail,
      so change this to set it to Kerberos in this case.
      
      Also change the description of the SecurityFlags to remove mention
      of flags which are no longer supported.
      
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarShyam Prasad N <sprasad@microsoft.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      d2346e28
    • Wolfram Sang's avatar
      Merge tag 'i2c-host-fixes-6.10-rc8' of... · 3fdd2d21
      Wolfram Sang authored
      Merge tag 'i2c-host-fixes-6.10-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/andi.shyti/linux into i2c/for-current
      
      This tag includes three fixes for the Renesas R-Car driver:
      
       1. Ensures the device is in a known state after probing.
       2. Allows clearing the NO_RXDMA flag after a reset.
       3. Forces a reset before any transfer on Gen3+ platforms to
          prevent disruption of the configuration during parallel
          transfers.
      3fdd2d21
    • Linus Torvalds's avatar
      Merge tag 'net-6.10-rc8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 528dd46d
      Linus Torvalds authored
      Pull more networking fixes from Jakub Kicinski:
       "A quick follow up to yesterday's pull. We got a regressions report for
        the bnxt patch as soon as it got to your tree. The ethtool fix is also
        good to have, although it's an older regression.
      
        Current release - regressions:
      
         - eth: bnxt_en: fix crash in bnxt_get_max_rss_ctx_ring() on older HW
           when user tries to decrease the ring count
      
        Previous releases - regressions:
      
         - ethtool: fix RSS setting, accept "no change" setting if the driver
           doesn't support the new features
      
         - eth: i40e: remove needless retries of NVM update, don't wait 20min
           when we know the firmware update won't succeed"
      
      * tag 'net-6.10-rc8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net:
        bnxt_en: Fix crash in bnxt_get_max_rss_ctx_ring()
        octeontx2-af: fix issue with IPv4 match for RSS
        octeontx2-af: fix issue with IPv6 ext match for RSS
        octeontx2-af: fix detection of IP layer
        octeontx2-af: fix a issue with cpt_lf_alloc mailbox
        octeontx2-af: replace cpt slot with lf id on reg write
        i40e: fix: remove needless retries of NVM update
        net: ethtool: Fix RSS setting
      528dd46d
    • Michael Chan's avatar
      bnxt_en: Fix crash in bnxt_get_max_rss_ctx_ring() · f7ce5eb2
      Michael Chan authored
      On older chips not supporting multiple RSS contexts, reducing
      ethtool channels will crash:
      
      BUG: kernel NULL pointer dereference, address: 00000000000000b8
      PGD 0 P4D 0
      Oops: Oops: 0000 [#1] PREEMPT SMP PTI
      CPU: 1 PID: 7032 Comm: ethtool Tainted: G S                 6.10.0-rc4 #1
      Hardware name: Dell Inc. PowerEdge R730/072T6D, BIOS 2.4.3 01/17/2017
      RIP: 0010:bnxt_get_max_rss_ctx_ring+0x4c/0x90 [bnxt_en]
      Code: c3 d3 eb 4c 8b 83 38 01 00 00 48 8d bb 38 01 00 00 4c 39 c7 74 42 41 8d 54 24 ff 31 c0 0f b7 d2 4c 8d 4c 12 02 66 85 ed 74 1d <49> 8b 90 b8 00 00 00 49 8d 34 11 0f b7 0a 66 39 c8 0f 42 c1 48 83
      RSP: 0018:ffffaaa501d23ba8 EFLAGS: 00010202
      RAX: 0000000000000000 RBX: ffff8efdf600c940 RCX: 0000000000000000
      RDX: 000000000000007f RSI: ffffffffacf429c4 RDI: ffff8efdf600ca78
      RBP: 0000000000000080 R08: 0000000000000000 R09: 0000000000000100
      R10: 0000000000000001 R11: ffffaaa501d238c0 R12: 0000000000000080
      R13: 0000000000000000 R14: ffff8efdf600c000 R15: 0000000000000006
      FS:  00007f977a7d2740(0000) GS:ffff8f041f840000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00000000000000b8 CR3: 00000002320aa004 CR4: 00000000003706f0
      DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      Call Trace:
      <TASK>
      ? __die_body+0x15/0x60
      ? page_fault_oops+0x157/0x440
      ? do_user_addr_fault+0x60/0x770
      ? _raw_spin_lock_irqsave+0x12/0x40
      ? exc_page_fault+0x61/0x120
      ? asm_exc_page_fault+0x22/0x30
      ? bnxt_get_max_rss_ctx_ring+0x4c/0x90 [bnxt_en]
      ? bnxt_get_max_rss_ctx_ring+0x25/0x90 [bnxt_en]
      bnxt_set_channels+0x9d/0x340 [bnxt_en]
      ethtool_set_channels+0x14b/0x210
      __dev_ethtool+0xdf8/0x2890
      ? preempt_count_add+0x6a/0xa0
      ? percpu_counter_add_batch+0x23/0x90
      ? filemap_map_pages+0x417/0x4a0
      ? avc_has_extended_perms+0x185/0x420
      ? __pfx_udp_ioctl+0x10/0x10
      ? sk_ioctl+0x55/0xf0
      ? kmalloc_trace_noprof+0xe0/0x210
      ? dev_ethtool+0x54/0x170
      dev_ethtool+0xa2/0x170
      dev_ioctl+0xbe/0x530
      sock_do_ioctl+0xa3/0xf0
      sock_ioctl+0x20d/0x2e0
      
      bp->rss_ctx_list is not initialized if the chip or firmware does not
      support multiple RSS contexts.  Fix it by adding a check in
      bnxt_get_max_rss_ctx_ring() before proceeding to reference
      bp->rss_ctx_list.
      
      Fixes: 0d1b7d6c ("bnxt: fix crashes when reducing ring count with active RSS contexts")
      Reported-by: default avatarBreno Leitao <leitao@debian.org>
      Link: https://lore.kernel.org/netdev/ZpFEJeNpwxW1aW9k@gmail.com/Reviewed-by: default avatarAndy Gospodarek <andrew.gospodarek@broadcom.com>
      Signed-off-by: default avatarMichael Chan <michael.chan@broadcom.com>
      Link: https://patch.msgid.link/20240712175318.166811-1-michael.chan@broadcom.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f7ce5eb2
  4. 12 Jul, 2024 22 commits