1. 02 Jul, 2023 1 commit
    • Darrick J. Wong's avatar
      xfs: fix interval filtering in multi-step fsmap queries · 63ef7a35
      Darrick J. Wong authored
      I noticed a bug in ranged GETFSMAP queries:
      
      # xfs_io -c 'fsmap -vvvv' /opt
       EXT: DEV  BLOCK-RANGE           OWNER              FILE-OFFSET      AG AG-OFFSET           TOTAL
         0: 8:80 [0..7]:               static fs metadata                  0  (0..7)                  8
      <snip>
         9: 8:80 [192..223]:           137                0..31            0  (192..223)             32
      # xfs_io -c 'fsmap -vvvv -d 208 208' /opt
      #
      
      That's not right -- we asked what block maps block 208, and we should've
      received a mapping for inode 137 offset 16.  Instead, we get nothing.
      
      The root cause of this problem is a mis-interaction between the fsmap
      code and how btree ranged queries work.  xfs_btree_query_range returns
      any btree record that overlaps with the query interval, even if the
      record starts before or ends after the interval.  Similarly, GETFSMAP is
      supposed to return a recordset containing all records that overlap the
      range queried.
      
      However, it's possible that the recordset is larger than the buffer that
      the caller provided to convey mappings to userspace.  In /that/ case,
      userspace is supposed to copy the last record returned to fmh_keys[0]
      and call GETFSMAP again.  In this case, we do not want to return
      mappings that we have already supplied to the caller.  The call to
      xfs_btree_query_range is the same, but now we ignore any records that
      start before fmh_keys[0].
      
      Unfortunately, we didn't implement the filtering predicate correctly.
      The predicate should only be called when we're calling back for more
      records.  Accomplish this by setting info->low.rm_blockcount to a
      nonzero value and ensuring that it is cleared as necessary.  As a
      result, we no longer want to adjust dkeys[0] in the main setup function
      because that's confusing.
      
      This patch doesn't touch the logdev/rtbitmap backends because they have
      bigger problems that will be addressed by subsequent patches.
      
      Found via xfs/556 with parent pointers enabled.
      
      Fixes: e89c0413 ("xfs: implement the GETFSMAP ioctl")
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      63ef7a35
  2. 29 Jun, 2023 9 commits
    • Dave Chinner's avatar
      xfs: fix bounds check in xfs_defer_agfl_block() · 2bed0d82
      Dave Chinner authored
      Need to happen before we allocate and then leak the xefi. Found by
      coverity via an xfsprogs libxfs scan.
      
      [djwong: This also fixes the type of the @agbno argument.]
      
      Fixes: 7dfee17b ("xfs: validate block number being freed before adding to xefi")
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      2bed0d82
    • Dave Chinner's avatar
      xfs: AGF length has never been bounds checked · edd8276d
      Dave Chinner authored
      The AGF verifier does not check that the AGF length field is within
      known good bounds. This has never been checked by runtime kernel
      code (i.e. the lack of verification goes back to 1993) yet we assume
      in many places that it is correct and verify other metdata against
      it.
      
      Add length verification to the AGF verifier. The length of the AGF
      must be equal to the size of the AG specified in the superblock,
      unless it is the last AG in the filesystem. In that case, it must be
      less than or equal to sb->sb_agblocks and greater than
      XFS_MIN_AG_BLOCKS, which is the smallest AG a growfs operation will
      allow to exist.
      
      This requires a bit of rework of the verifier function. We want to
      verify metadata before we use it to verify other metadata. Hence
      we need to verify the AGF sequence numbers before using them to
      verify the length of the AGF. Then we can verify the AGF length
      before we verify AGFL fields. Then we can verifier other fields that
      are bounds limited by the AGF length.
      
      And, finally, by calculating agf_length only once into a local
      variable, we can collapse repeated "if (xfs_has_foo() &&"
      conditionaly checks into single checks. This makes the code much
      easier to follow as all the checks for a given feature are obviously
      in the same place.
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      edd8276d
    • Dave Chinner's avatar
      xfs: journal geometry is not properly bounds checked · f1e1765a
      Dave Chinner authored
      If the journal geometry results in a sector or log stripe unit
      validation problem, it indicates that we cannot set the log up to
      safely write to the the journal. In these cases, we must abort the
      mount because the corruption needs external intervention to resolve.
      Similarly, a journal that is too large cannot be written to safely,
      either, so we shouldn't allow those geometries to mount, either.
      
      If the log is too small, we risk having transaction reservations
      overruning the available log space and the system hanging waiting
      for space it can never provide. This is purely a runtime hang issue,
      not a corruption issue as per the first cases listed above. We abort
      mounts of the log is too small for V5 filesystems, but we must allow
      v4 filesystems to mount because, historically, there was no log size
      validity checking and so some systems may still be out there with
      undersized logs.
      
      The problem is that on V4 filesystems, when we discover a log
      geometry problem, we skip all the remaining checks and then allow
      the log to continue mounting. This mean that if one of the log size
      checks fails, we skip the log stripe unit check. i.e. we allow the
      mount because a "non-fatal" geometry is violated, and then fail to
      check the hard fail geometries that should fail the mount.
      
      Move all these fatal checks to the superblock verifier, and add a
      new check for the two log sector size geometry variables having the
      same values. This will prevent any attempt to mount a log that has
      invalid or inconsistent geometries long before we attempt to mount
      the log.
      
      However, for the minimum log size checks, we can only do that once
      we've setup up the log and calculated all the iclog sizes and
      roundoffs. Hence this needs to remain in the log mount code after
      the log has been initialised. It is also the only case where we
      should allow a v4 filesystem to continue running, so leave that
      handling in place, too.
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      f1e1765a
    • Dave Chinner's avatar
      xfs: don't block in busy flushing when freeing extents · 8ebbf262
      Dave Chinner authored
      If the current transaction holds a busy extent and we are trying to
      allocate a new extent to fix up the free list, we can deadlock if
      the AG is entirely empty except for the busy extent held by the
      transaction.
      
      This can occur at runtime processing an XEFI with multiple extents
      in this path:
      
      __schedule+0x22f at ffffffff81f75e8f
      schedule+0x46 at ffffffff81f76366
      xfs_extent_busy_flush+0x69 at ffffffff81477d99
      xfs_alloc_ag_vextent_size+0x16a at ffffffff8141711a
      xfs_alloc_ag_vextent+0x19b at ffffffff81417edb
      xfs_alloc_fix_freelist+0x22f at ffffffff8141896f
      xfs_free_extent_fix_freelist+0x6a at ffffffff8141939a
      __xfs_free_extent+0x99 at ffffffff81419499
      xfs_trans_free_extent+0x3e at ffffffff814a6fee
      xfs_extent_free_finish_item+0x24 at ffffffff814a70d4
      xfs_defer_finish_noroll+0x1f7 at ffffffff81441407
      xfs_defer_finish+0x11 at ffffffff814417e1
      xfs_itruncate_extents_flags+0x13d at ffffffff8148b7dd
      xfs_inactive_truncate+0xb9 at ffffffff8148bb89
      xfs_inactive+0x227 at ffffffff8148c4f7
      xfs_fs_destroy_inode+0xb8 at ffffffff81496898
      destroy_inode+0x3b at ffffffff8127d2ab
      do_unlinkat+0x1d1 at ffffffff81270df1
      do_syscall_64+0x40 at ffffffff81f6b5f0
      entry_SYSCALL_64_after_hwframe+0x44 at ffffffff8200007c
      
      This can also happen in log recovery when processing an EFI
      with multiple extents through this path:
      
      context_switch() kernel/sched/core.c:3881
      __schedule() kernel/sched/core.c:5111
      schedule() kernel/sched/core.c:5186
      xfs_extent_busy_flush() fs/xfs/xfs_extent_busy.c:598
      xfs_alloc_ag_vextent_size() fs/xfs/libxfs/xfs_alloc.c:1641
      xfs_alloc_ag_vextent() fs/xfs/libxfs/xfs_alloc.c:828
      xfs_alloc_fix_freelist() fs/xfs/libxfs/xfs_alloc.c:2362
      xfs_free_extent_fix_freelist() fs/xfs/libxfs/xfs_alloc.c:3029
      __xfs_free_extent() fs/xfs/libxfs/xfs_alloc.c:3067
      xfs_trans_free_extent() fs/xfs/xfs_extfree_item.c:370
      xfs_efi_recover() fs/xfs/xfs_extfree_item.c:626
      xlog_recover_process_efi() fs/xfs/xfs_log_recover.c:4605
      xlog_recover_process_intents() fs/xfs/xfs_log_recover.c:4893
      xlog_recover_finish() fs/xfs/xfs_log_recover.c:5824
      xfs_log_mount_finish() fs/xfs/xfs_log.c:764
      xfs_mountfs() fs/xfs/xfs_mount.c:978
      xfs_fs_fill_super() fs/xfs/xfs_super.c:1908
      mount_bdev() fs/super.c:1417
      xfs_fs_mount() fs/xfs/xfs_super.c:1985
      legacy_get_tree() fs/fs_context.c:647
      vfs_get_tree() fs/super.c:1547
      do_new_mount() fs/namespace.c:2843
      do_mount() fs/namespace.c:3163
      ksys_mount() fs/namespace.c:3372
      __do_sys_mount() fs/namespace.c:3386
      __se_sys_mount() fs/namespace.c:3383
      __x64_sys_mount() fs/namespace.c:3383
      do_syscall_64() arch/x86/entry/common.c:296
      entry_SYSCALL_64() arch/x86/entry/entry_64.S:180
      
      To avoid this deadlock, we should not block in
      xfs_extent_busy_flush() if we hold a busy extent in the current
      transaction.
      
      Now that the EFI processing code can handle requeuing a partially
      completed EFI, we can detect this situation in
      xfs_extent_busy_flush() and return -EAGAIN rather than going to
      sleep forever. The -EAGAIN get propagated back out to the
      xfs_trans_free_extent() context, where the EFD is populated and the
      transaction is rolled, thereby moving the busy extents into the CIL.
      
      At this point, we can retry the extent free operation again with a
      clean transaction. If we hit the same "all free extents are busy"
      situation when trying to fix up the free list, we can safely call
      xfs_extent_busy_flush() and wait for the busy extents to resolve
      and wake us. At this point, the allocation search can make progress
      again and we can fix up the free list.
      
      This deadlock was first reported by Chandan in mid-2021, but I
      couldn't make myself understood during review, and didn't have time
      to fix it myself.
      
      It was reported again in March 2023, and again I have found myself
      unable to explain the complexities of the solution needed during
      review.
      
      As such, I don't have hours more time to waste trying to get the
      fix written the way it needs to be written, so I'm just doing it
      myself. This patchset is largely based on Wengang Wang's last patch,
      but with all the unnecessary stuff removed, split up into multiple
      patches and cleaned up somewhat.
      Reported-by: default avatarChandan Babu R <chandanrlinux@gmail.com>
      Reported-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      8ebbf262
    • Dave Chinner's avatar
      xfs: allow extent free intents to be retried · 0853b5de
      Dave Chinner authored
      Extent freeing neeeds to be able to avoid a busy extent deadlock
      when the transaction itself holds the only busy extents in the
      allocation group. This may occur if we have an EFI that contains
      multiple extents to be freed, and the freeing the second intent
      requires the space the first extent free released to expand the
      AGFL. If we block on the busy extent at this point, we deadlock.
      
      We hold a dirty transaction that contains a entire atomic extent
      free operations within it, so if we can abort the extent free
      operation and commit the progress that we've made, the busy extent
      can be resolved by a log force. Hence we can restart the aborted
      extent free with a new transaction and continue to make
      progress without risking deadlocks.
      
      To enable this, we need the EFI processing code to be able to handle
      an -EAGAIN error to tell it to commit the current transaction and
      retry again. This mechanism is already built into the defer ops
      processing (used bythe refcount btree modification intents), so
      there's relatively little handling we need to add to the EFI code to
      enable this.
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Reviewed-by: default avatarChandan Babu R <chandan.babu@oracle.com>
      0853b5de
    • Dave Chinner's avatar
      xfs: pass alloc flags through to xfs_extent_busy_flush() · 6a2a9d77
      Dave Chinner authored
      To avoid blocking in xfs_extent_busy_flush() when freeing extents
      and the only busy extents are held by the current transaction, we
      need to pass the XFS_ALLOC_FLAG_FREEING flag context all the way
      into xfs_extent_busy_flush().
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Reviewed-by: default avatarChandan Babu R <chandan.babu@oracle.com>
      6a2a9d77
    • Dave Chinner's avatar
      xfs: use deferred frees for btree block freeing · b742d7b4
      Dave Chinner authored
      Btrees that aren't freespace management trees use the normal extent
      allocation and freeing routines for their blocks. Hence when a btree
      block is freed, a direct call to xfs_free_extent() is made and the
      extent is immediately freed. This puts the entire free space
      management btrees under this path, so we are stacking btrees on
      btrees in the call stack. The inobt, finobt and refcount btrees
      all do this.
      
      However, the bmap btree does not do this - it calls
      xfs_free_extent_later() to defer the extent free operation via an
      XEFI and hence it gets processed in deferred operation processing
      during the commit of the primary transaction (i.e. via intent
      chaining).
      
      We need to change xfs_free_extent() to behave in a non-blocking
      manner so that we can avoid deadlocks with busy extents near ENOSPC
      in transactions that free multiple extents. Inserting or removing a
      record from a btree can cause a multi-level tree merge operation and
      that will free multiple blocks from the btree in a single
      transaction. i.e. we can call xfs_free_extent() multiple times, and
      hence the btree manipulation transaction is vulnerable to this busy
      extent deadlock vector.
      
      To fix this, convert all the remaining callers of xfs_free_extent()
      to use xfs_free_extent_later() to queue XEFIs and hence defer
      processing of the extent frees to a context that can be safely
      restarted if a deadlock condition is detected.
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Reviewed-by: default avatarChandan Babu R <chandan.babu@oracle.com>
      b742d7b4
    • Dave Chinner's avatar
      xfs: don't reverse order of items in bulk AIL insertion · 939bd50d
      Dave Chinner authored
      XFS has strict metadata ordering requirements. One of the things it
      does is maintain the commit order of items from transaction commit
      through the CIL and into the AIL. That is, if a transaction logs
      item A before item B in a modification, then they will be inserted
      into the CIL in the order {A, B}. These items are then written into
      the iclog during checkpointing in the order {A, B}. When the
      checkpoint commits, they are supposed to be inserted into the AIL in
      the order {A, B}, and when they are pushed from the AIL, they are
      pushed in the order {A, B}.
      
      If we crash, log recovery then replays the two items from the
      checkpoint in the order {A, B}, resulting in the objects the items
      apply to being queued for writeback at the end of the checkpoint
      in the order {A, B}. This means recovery behaves the same way as the
      runtime code.
      
      In places, we have subtle dependencies on this ordering being
      maintained. One of this place is performing intent recovery from the
      log. It assumes that recovering an intent will result in a
      non-intent object being the first thing that is modified in the
      recovery transaction, and so when the transaction commits and the
      journal flushes, the first object inserted into the AIL beyond the
      intent recovery range will be a non-intent item.  It uses the
      transistion from intent items to non-intent items to stop the
      recovery pass.
      
      A recent log recovery issue indicated that an intent was appearing
      as the first item in the AIL beyond the recovery range, hence
      breaking the end of recovery detection that exists.
      
      Tracing indicated insertion of the items into the AIL was apparently
      occurring in the right order (the intent was last in the commit item
      list), but the intent was appearing first in the AIL. IOWs, the
      order of items in the AIL was {D,C,B,A}, not {A,B,C,D}, and bulk
      insertion was reversing the order of the items in the batch of items
      being inserted.
      
      Lucky for us, all the items fed to bulk insertion have the same LSN,
      so the reversal of order does not affect the log head/tail tracking
      that is based on the contents of the AIL. It only impacts on code
      that has implicit, subtle dependencies on object order, and AFAICT
      only the intent recovery loop is impacted by it.
      
      Make sure bulk AIL insertion does not reorder items incorrectly.
      
      Fixes: 0e57f6a3 ("xfs: bulk AIL insertion during transaction commit")
      Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Reviewed-by: default avatarChandan Babu R <chandan.babu@oracle.com>
      939bd50d
    • Colin Ian King's avatar
      xfs: remove redundant initializations of pointers drop_leaf and save_leaf · 347eb95b
      Colin Ian King authored
      Pointers drop_leaf and save_leaf are initialized with values that are never
      read, they are being re-assigned later on just before they are used. Remove
      the redundant early initializations and keep the later assignments at the
      point where they are used. Cleans up two clang scan build warnings:
      
      fs/xfs/libxfs/xfs_attr_leaf.c:2288:29: warning: Value stored to 'drop_leaf'
      during its initialization is never read [deadcode.DeadStores]
      fs/xfs/libxfs/xfs_attr_leaf.c:2289:29: warning: Value stored to 'save_leaf'
      during its initialization is never read [deadcode.DeadStores]
      Signed-off-by: default avatarColin Ian King <colin.i.king@gmail.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      347eb95b
  3. 13 Jun, 2023 4 commits
    • Long Li's avatar
      xfs: fix ag count overflow during growfs · c3b880ac
      Long Li authored
      I found a corruption during growfs:
      
       XFS (loop0): Internal error agbno >= mp->m_sb.sb_agblocks at line 3661 of
         file fs/xfs/libxfs/xfs_alloc.c.  Caller __xfs_free_extent+0x28e/0x3c0
       CPU: 0 PID: 573 Comm: xfs_growfs Not tainted 6.3.0-rc7-next-20230420-00001-gda8c95746257
       Call Trace:
        <TASK>
        dump_stack_lvl+0x50/0x70
        xfs_corruption_error+0x134/0x150
        __xfs_free_extent+0x2c1/0x3c0
        xfs_ag_extend_space+0x291/0x3e0
        xfs_growfs_data+0xd72/0xe90
        xfs_file_ioctl+0x5f9/0x14a0
        __x64_sys_ioctl+0x13e/0x1c0
        do_syscall_64+0x39/0x80
        entry_SYSCALL_64_after_hwframe+0x63/0xcd
       XFS (loop0): Corruption detected. Unmount and run xfs_repair
       XFS (loop0): Internal error xfs_trans_cancel at line 1097 of file
         fs/xfs/xfs_trans.c.  Caller xfs_growfs_data+0x691/0xe90
       CPU: 0 PID: 573 Comm: xfs_growfs Not tainted 6.3.0-rc7-next-20230420-00001-gda8c95746257
       Call Trace:
        <TASK>
        dump_stack_lvl+0x50/0x70
        xfs_error_report+0x93/0xc0
        xfs_trans_cancel+0x2c0/0x350
        xfs_growfs_data+0x691/0xe90
        xfs_file_ioctl+0x5f9/0x14a0
        __x64_sys_ioctl+0x13e/0x1c0
        do_syscall_64+0x39/0x80
        entry_SYSCALL_64_after_hwframe+0x63/0xcd
       RIP: 0033:0x7f2d86706577
      
      The bug can be reproduced with the following sequence:
      
       # truncate -s  1073741824 xfs_test.img
       # mkfs.xfs -f -b size=1024 -d agcount=4 xfs_test.img
       # truncate -s 2305843009213693952  xfs_test.img
       # mount -o loop xfs_test.img /mnt/test
       # xfs_growfs -D  1125899907891200  /mnt/test
      
      The root cause is that during growfs, user space passed in a large value
      of newblcoks to xfs_growfs_data_private(), due to current sb_agblocks is
      too small, new AG count will exceed UINT_MAX. Because of AG number type
      is unsigned int and it would overflow, that caused nagcount much smaller
      than the actual value. During AG extent space, delta blocks in
      xfs_resizefs_init_new_ags() will much larger than the actual value due to
      incorrect nagcount, even exceed UINT_MAX. This will cause corruption and
      be detected in __xfs_free_extent. Fix it by growing the filesystem to up
      to the maximally allowed AGs and not return EINVAL when new AG count
      overflow.
      Signed-off-by: default avatarLong Li <leo.lilong@huawei.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      c3b880ac
    • Christoph Hellwig's avatar
      xfs: set FMODE_CAN_ODIRECT instead of a dummy direct_IO method · b2943499
      Christoph Hellwig authored
      Since commit a2ad63da ("VFS: add FMODE_CAN_ODIRECT file flag") file
      systems can just set the FMODE_CAN_ODIRECT flag at open time instead of
      wiring up a dummy direct_IO method to indicate support for direct I/O.
      Do that for xfs so that noop_direct_IO can eventually be removed.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      b2943499
    • Darrick J. Wong's avatar
      xfs: drop EXPERIMENTAL tag for large extent counts · 61d7e827
      Darrick J. Wong authored
      This feature has been baking in upstream for ~10mo with no bug reports.
      It seems to work fine here, let's get rid of the scary warnings?
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
      61d7e827
    • Darrick J. Wong's avatar
      xfs: don't deplete the reserve pool when trying to shrink the fs · 06f3ef6e
      Darrick J. Wong authored
      Every now and then, xfs/168 fails with this logged in dmesg:
      
      Reserve blocks depleted! Consider increasing reserve pool size.
      EXPERIMENTAL online shrink feature in use. Use at your own risk!
      Per-AG reservation for AG 1 failed.  Filesystem may run out of space.
      Per-AG reservation for AG 1 failed.  Filesystem may run out of space.
      Error -28 reserving per-AG metadata reserve pool.
      Corruption of in-memory data (0x8) detected at xfs_ag_shrink_space+0x23c/0x3b0 [xfs] (fs/xfs/libxfs/xfs_ag.c:1007).  Shutting down filesystem.
      
      It's silly to deplete the reserved blocks pool just to shrink the
      filesystem, particularly since the fs goes down after that.
      
      Fixes: fb2fc172 ("xfs: support shrinking unused space in the last AG")
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      06f3ef6e
  4. 11 Jun, 2023 3 commits
    • Linus Torvalds's avatar
      Linux 6.4-rc6 · 858fd168
      Linus Torvalds authored
      858fd168
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v6.4_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 4c605260
      Linus Torvalds authored
      Pull x86 fix from Borislav Petkov:
      
       - Set up the kernel CS earlier in the boot process in case EFI boots
         the kernel after bypassing the decompressor and the CS descriptor
         used ends up being the EFI one which is not mapped in the identity
         page table, leading to early SEV/SNP guest communication exceptions
         resulting in the guest crashing
      
      * tag 'x86_urgent_for_v6.4_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/head/64: Switch to KERNEL_CS as soon as new GDT is installed
      4c605260
    • Linus Torvalds's avatar
      Merge tag '6.4-rc5-smb3-server-fixes' of git://git.samba.org/ksmbd · 65d7ca59
      Linus Torvalds authored
      Pull smb server fixes from Steve French:
       "Five smb3 server fixes, all also for stable:
      
         - Fix four slab out of bounds warnings: improve checks for protocol
           id, and for small packet length, and for create context parsing,
           and for negotiate context parsing
      
         - Fix for incorrect dereferencing POSIX ACLs"
      
      * tag '6.4-rc5-smb3-server-fixes' of git://git.samba.org/ksmbd:
        ksmbd: validate smb request protocol id
        ksmbd: check the validation of pdu_size in ksmbd_conn_handler_loop
        ksmbd: fix posix_acls and acls dereferencing possible ERR_PTR()
        ksmbd: fix out-of-bound read in parse_lease_state()
        ksmbd: fix out-of-bound read in deassemble_neg_contexts()
      65d7ca59
  5. 10 Jun, 2023 3 commits
    • Linus Torvalds's avatar
      Merge tag 'i2c-for-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux · 022ce886
      Linus Torvalds authored
      Pull i2c fixes from Wolfram Sang:
       "Biggest news is that Andi Shyti steps in for maintaining the
        controller drivers. Thank you very much!
      
        Other than that, one new driver maintainer and the rest is usual
        driver bugfixes. at24 has a Kconfig dependecy fix"
      
      * tag 'i2c-for-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
        MAINTAINERS: Add entries for Renesas RZ/V2M I2C driver
        eeprom: at24: also select REGMAP
        i2c: sprd: Delete i2c adapter in .remove's error path
        i2c: mv64xxx: Fix reading invalid status value in atomic mode
        i2c: designware: fix idx_write_cnt in read loop
        i2c: mchp-pci1xxxx: Avoid cast to incompatible function type
        i2c: img-scb: Fix spelling mistake "innacurate" -> "inaccurate"
        MAINTAINERS: Add myself as I2C host drivers maintainer
      022ce886
    • Linus Torvalds's avatar
      Merge tag 'soundwire-6.4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire · 6be5e47b
      Linus Torvalds authored
      Pull soundwire fixes from Vinod Koul:
       "Core fix for missing flag clear, error patch handling in qcom driver
        and BIOS quirk for HP Spectre x360:
      
         - HP Spectre x360 soundwire DMI quirk
      
         - Error path handling for qcom driver
      
         - Core fix for missing clear of alloc_slave_rt"
      
      * tag 'soundwire-6.4-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/soundwire:
        soundwire: stream: Add missing clear of alloc_slave_rt
        soundwire: qcom: add proper error paths in qcom_swrm_startup()
        soundwire: dmi-quirks: add new mapping for HP Spectre x360
      6be5e47b
    • Linus Torvalds's avatar
      Merge tag 'arm-fixes-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · 859c7459
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "Most of the changes this time are for the Qualcomm Snapdragon
        platforms.
      
        There are bug fixes for error handling in Qualcomm icc-bwmon,
        rpmh-rsc, ramp_controller and rmtfs driver as well as the AMD tee
        firmware driver and a missing initialization in the Arm ff-a firmware
        driver. The Qualcomm RPMh and EDAC drivers need some rework to work
        correctly on all supported chips.
      
        The DT fixes include:
      
         - i.MX8 fixes for gpio, pinmux and clock settings
      
         - ADS touchscreen gpio polarity settings in several machines
      
         - Address dtb warnings for caches, panel and input-enable properties
           on Qualcomm platforms
      
         - Incorrect data on qualcomm platforms fir SA8155P power domains,
           SM8550 LLCC, SC7180-lite SDRAM frequencies and SM8550 soundwire
      
         - Remoteproc firmware paths are corrected for Sony Xperia 10 IV"
      
      * tag 'arm-fixes-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (36 commits)
        firmware: arm_ffa: Set handle field to zero in memory descriptor
        ARM: dts: Fix erroneous ADS touchscreen polarities
        arm64: dts: imx8mn-beacon: Fix SPI CS pinmux
        arm64: dts: imx8-ss-dma: assign default clock rate for lpuarts
        arm64: dts: imx8qm-mek: correct GPIOs for USDHC2 CD and WP signals
        EDAC/qcom: Get rid of hardcoded register offsets
        EDAC/qcom: Remove superfluous return variable assignment in qcom_llcc_core_setup()
        arm64: dts: qcom: sm8550: Use the correct LLCC register scheme
        dt-bindings: cache: qcom,llcc: Fix SM8550 description
        arm64: dts: qcom: sc7180-lite: Fix SDRAM freq for misidentified sc7180-lite boards
        arm64: dts: qcom: sm8550: use uint16 for Soundwire interval
        soc: qcom: rpmhpd: Add SA8155P power domains
        arm64: dts: qcom: Split out SA8155P and use correct RPMh power domains
        dt-bindings: power: qcom,rpmpd: Add SA8155P
        soc: qcom: Rename ice to qcom_ice to avoid module name conflict
        soc: qcom: rmtfs: Fix error code in probe()
        soc: qcom: ramp_controller: Fix an error handling path in qcom_ramp_controller_probe()
        ARM: dts: at91: sama7g5ek: fix debounce delay property for shdwc
        ARM: at91: pm: fix imbalanced reference counter for ethernet devices
        arm64: dts: qcom: sm6375-pdx225: Fix remoteproc firmware paths
        ...
      859c7459
  6. 09 Jun, 2023 20 commits
    • Linus Torvalds's avatar
      Merge tag 'block-6.4-2023-06-09' of git://git.kernel.dk/linux · 64569520
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - Fix an issue with the hardware queue nr_active, causing it to become
         imbalanced (Tian)
      
       - Fix an issue with null_blk not releasing pages if configured as
         memory backed (Nitesh)
      
       - Fix a locking issue in dasd (Jan)
      
      * tag 'block-6.4-2023-06-09' of git://git.kernel.dk/linux:
        s390/dasd: Use correct lock while counting channel queue length
        null_blk: Fix: memory release when memory_backed=1
        blk-mq: fix blk_mq_hw_ctx active request accounting
      64569520
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · dbfa18c5
      Linus Torvalds authored
      Pull virtio bug fixes from Michael Tsirkin:
       "A bunch of fixes all over the place"
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        tools/virtio: use canonical ftrace path
        vhost_vdpa: support PACKED when setting-getting vring_base
        vhost: support PACKED when setting-getting vring_base
        vhost: Fix worker hangs due to missed wake up calls
        vhost: Fix crash during early vhost_transport_send_pkt calls
        vhost_net: revert upend_idx only on retriable error
        vhost_vdpa: tell vqs about the negotiated
        vdpa/mlx5: Fix hang when cvq commands are triggered during device unregister
        tools/virtio: Add .gitignore for ringtest
        tools/virtio: Fix arm64 ringtest compilation error
        vduse: avoid empty string for dev name
        vhost: use kzalloc() instead of kmalloc() followed by memset()
      dbfa18c5
    • Linus Torvalds's avatar
      Merge tag 'ceph-for-6.4-rc6' of https://github.com/ceph/ceph-client · 7e8c948b
      Linus Torvalds authored
      Pull ceph fixes from Ilya Dryomov:
       "A fix for a potential data corruption in differential backup and
        snapshot-based mirroring scenarios in RBD and a reference counting
        fixup to avoid use-after-free in CephFS, all marked for stable"
      
      * tag 'ceph-for-6.4-rc6' of https://github.com/ceph/ceph-client:
        ceph: fix use-after-free bug for inodes when flushing capsnaps
        rbd: get snapshot context after exclusive lock is ensured to be held
        rbd: move RBD_OBJ_FLAG_COPYUP_ENABLED flag setting
      7e8c948b
    • Jan Höppner's avatar
      s390/dasd: Use correct lock while counting channel queue length · ccc45cb4
      Jan Höppner authored
      The lock around counting the channel queue length in the BIODASDINFO
      ioctl was incorrectly changed to the dasd_block->queue_lock with commit
      583d6535 ("dasd: remove dead code"). This can lead to endless list
      iterations and a subsequent crash.
      
      The queue_lock is supposed to be used only for queue lists belonging to
      dasd_block. For dasd_device related queue lists the ccwdev lock must be
      used.
      
      Fix the mentioned issues by correctly using the ccwdev lock instead of
      the queue lock.
      
      Fixes: 583d6535 ("dasd: remove dead code")
      Cc: stable@vger.kernel.org # v5.0+
      Signed-off-by: default avatarJan Höppner <hoeppner@linux.ibm.com>
      Reviewed-by: default avatarStefan Haberland <sth@linux.ibm.com>
      Signed-off-by: default avatarStefan Haberland <sth@linux.ibm.com>
      Link: https://lore.kernel.org/r/20230609153750.1258763-2-sth@linux.ibm.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
      ccc45cb4
    • Linus Torvalds's avatar
      Merge tag 'riscv-for-linus-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux · 0f506c7f
      Linus Torvalds authored
      Pull RISC-V fixes from Palmer Dabbelt:
      
       - A fix to avoid ISA-disallowed privilege mappings that can result from
         WRITE+EXEC mmap requests from userspace.
      
       - A fix for kfence to handle the huge pages.
      
       - A fix to avoid converting misaligned VAs to huge pages.
      
       - ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE has been selected so kprobe
         can understand user pointers.
      
      * tag 'riscv-for-linus-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
        riscv: fix kprobe __user string arg print fault issue
        riscv: Check the virtual alignment before choosing a map size
        riscv: Fix kfence now that the linear mapping can be backed by PUD/P4D/PGD
        riscv: mm: Ensure prot of VM_WRITE and VM_EXEC must be readable
      0f506c7f
    • Linus Torvalds's avatar
      Merge tag 's390-6.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 87aceaa7
      Linus Torvalds authored
      Pull s390 fixes from Alexander Gordeev:
      
       - Avoid linker error for randomly generated config file that has
         CONFIG_BRANCH_PROFILE_NONE enabled and make it similar to riscv, x86
         and also to commit 4bf3ec38 ("s390: disable branch profiling for
         vdso").
      
       - Currently, if the device is offline and all the channel paths are
         either configured or varied offline, the associated subchannel gets
         unregistered. Don't unregister the subchannel, instead unregister
         offline device.
      
      * tag 's390-6.4-3' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/purgatory: disable branch profiling
        s390/cio: unregister device when the only path is gone
      87aceaa7
    • Linus Torvalds's avatar
      Merge tag 'gpio-fixes-for-v6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux · 92d22212
      Linus Torvalds authored
      Pull gpio fixes from Bartosz Golaszewski:
       "Two fixes for the GPIO testing module and one commit making Andy a
        reviewer for the GPIO subsystem:
      
         - fix a memory corruption bug in gpio-sim
      
         - fix inconsistencies in user-space configuration of gpio-sim
      
         - make Andy Shevchenko a reviewer for the GPIO subsystem"
      
      * tag 'gpio-fixes-for-v6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux:
        MAINTAINERS: add Andy Shevchenko as reviewer for the GPIO subsystem
        gpio: sim: quietly ignore configured lines outside the bank
        gpio: sim: fix memory corruption when adding named lines and unnamed hogs
      92d22212
    • Ross Zwisler's avatar
      tools/virtio: use canonical ftrace path · 07496eea
      Ross Zwisler authored
      The canonical location for the tracefs filesystem is at /sys/kernel/tracing.
      
      But, from Documentation/trace/ftrace.rst:
      
        Before 4.1, all ftrace tracing control files were within the debugfs
        file system, which is typically located at /sys/kernel/debug/tracing.
        For backward compatibility, when mounting the debugfs file system,
        the tracefs file system will be automatically mounted at:
      
        /sys/kernel/debug/tracing
      
      A few spots in tools/virtio still refer to this older debugfs
      path, so let's update them to avoid confusion.
      Signed-off-by: default avatarRoss Zwisler <zwisler@google.com>
      Message-Id: <20230215223350.2658616-6-zwisler@google.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Reviewed-by: default avatarMukesh Ojha <quic_mojha@quicinc.com>
      07496eea
    • Shannon Nelson's avatar
      vhost_vdpa: support PACKED when setting-getting vring_base · beee7fdb
      Shannon Nelson authored
      Use the right structs for PACKED or split vqs when setting and
      getting the vring base.
      
      Fixes: 4c8cf318 ("vhost: introduce vDPA-based backend")
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Message-Id: <20230424225031.18947-4-shannon.nelson@amd.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Acked-by: default avatarJason Wang <jasowang@redhat.com>
      beee7fdb
    • Shannon Nelson's avatar
      vhost: support PACKED when setting-getting vring_base · 55d8122f
      Shannon Nelson authored
      Use the right structs for PACKED or split vqs when setting and
      getting the vring base.
      
      Fixes: 4c8cf318 ("vhost: introduce vDPA-based backend")
      Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
      Message-Id: <20230424225031.18947-3-shannon.nelson@amd.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Acked-by: default avatarJason Wang <jasowang@redhat.com>
      55d8122f
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 333a396d
      Linus Torvalds authored
      Pull pin control fix from Linus Walleij:
       "A single fix for the Meson driver, nothing else has surfaced so far
        this cycle"
      
      * tag 'pinctrl-v6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: meson-axg: add missing GPIOA_18 gpio group
      333a396d
    • Linus Torvalds's avatar
      Merge tag 'sound-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 697fa9b5
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "Lots of small fixes, and almost all are device-specific.
      
        A few of them are the fixes for the old regressions by the fast kctl
        lookups (introduced around 5.19). Others are ASoC simple-card fixes,
        selftest compile warning fixes, ASoC AMD quirks, various ASoC codec
        fixes as well as usual HD-audio quirks"
      
      * tag 'sound-6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (26 commits)
        ALSA: hda/realtek: Enable 4 amplifiers instead of 2 on a HP platform
        ALSA: hda: Fix kctl->id initialization
        ALSA: gus: Fix kctl->id initialization
        ALSA: cmipci: Fix kctl->id initialization
        ALSA: ymfpci: Fix kctl->id initialization
        ALSA: ice1712,ice1724: fix the kcontrol->id initialization
        ALSA: hda/realtek: Add quirk for Clevo NS50AU
        ALSA: hda/realtek: Add quirks for Asus ROG 2024 laptops using CS35L41
        ALSA: hda/realtek: Add "Intel Reference board" and "NUC 13" SSID in the ALC256
        ALSA: hda/realtek: Add Lenovo P3 Tower platform
        ALSA: hda/realtek: Add a quirk for HP Slim Desktop S01
        selftests: alsa: pcm-test: Fix compiler warnings about the format
        ASoC: fsl_sai: Enable BCI bit if SAI works on synchronous mode with BYP asserted
        ASoC: simple-card-utils: fix PCM constraint error check
        ASoC: cs35l56: Remove NULL check from cs35l56_sdw_dai_set_stream()
        ASoC: max98363: limit the number of channel to 1
        ASoC: max98363: Removed 32bit support
        ASoC: mediatek: mt8195: fix use-after-free in driver remove path
        ASoC: mediatek: mt8188: fix use-after-free in driver remove path
        ASoC: amd: yc: Add Thinkpad Neo14 to quirks list for acp6x
        ...
      697fa9b5
    • Linus Torvalds's avatar
      Merge tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 8fc1c596
      Linus Torvalds authored
      Pull ext4 fix from Ted Ts'o:
       "Fix an ext4 regression which breaks remounting r/w file systems that
        have the quota feature enabled"
      
      * tag 'ext4_for_linus_stable' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
        ext4: only check dquot_initialize_needed() when debugging
        Revert "ext4: don't clear SB_RDONLY when remounting r/w until quota is re-enabled"
      8fc1c596
    • Wolfram Sang's avatar
      Merge tag 'at24-fixes-for-v6.4-rc6' of... · 33f36147
      Wolfram Sang authored
      Merge tag 'at24-fixes-for-v6.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into i2c/for-current
      
      at24 fixes for v6.4-rc6
      
      - fix a Kconfig issue (we need to select REGMAP, not only REGMAP_I2C)
      33f36147
    • Arnd Bergmann's avatar
      Merge tag 'imx-fixes-6.4-2' of... · 5cdd5ec1
      Arnd Bergmann authored
      Merge tag 'imx-fixes-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into arm/fixes
      
      i.MX fixes for 6.4, round 2:
      
      - Fix SPI CS pinmux for the final production version of imx8mn-beacon
        board.
      - Fix GPIOs for USDHC2 CD and WP signals on imx8qm-mek board.
      - Assign default clock rate for i.MX8 LPUARTs to fix UART failure.
      
      * tag 'imx-fixes-6.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
        arm64: dts: imx8mn-beacon: Fix SPI CS pinmux
        arm64: dts: imx8-ss-dma: assign default clock rate for lpuarts
        arm64: dts: imx8qm-mek: correct GPIOs for USDHC2 CD and WP signals
      
      Link: https://lore.kernel.org/r/20230607141312.GU4199@dragonSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      5cdd5ec1
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-06-09' of git://anongit.freedesktop.org/drm/drm · 33f2b578
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Bit busier and a bit more scattered than usual. amdgpu is the main
        one, with ivpu and msm having a few fixes, then i915, exynos, ast,
        lima, radeon with some misc bits, but overall nothing standing out.
      
        fb-helper:
         - Fill in fb-helper vars more correctly
      
        amdgpu:
         - S0ix fixes
         - GPU reset fixes
         - SMU13 fixes
         - SMU11 fixes
         - Misc Display fixes
         - Revert RV/RV2/PCO clock counter changes
         - Fix Stoney xclk value
         - Fix reserved vram debug info
      
        radeon:
         - Fix a potential use after free
      
        i915:
         - CDCLK voltage fix for ADL-P
         - eDP wake sync pulse fix
         - Two error handling fixes to selftests
      
        exynos:
         - Fix wrong return in Exynos vidi driver
         - Fix use-after-free issue to Exynos g2d driver
      
        ast:
         - resume and modeset fixes for ast
      
        ivpu:
         - Assorted ivpu fixes
      
        lima:
         - lima context destroy fix
      
        msm:
         - Fix max segment size to address splat on newer a6xx
         - Disable PSR by default w/ modparam to re-enable, since there still
           seems to be a lingering issue
         - Fix HPD issue
         - Fix issue with unitialized GMU mutex"
      
      * tag 'drm-fixes-2023-06-09' of git://anongit.freedesktop.org/drm/drm: (32 commits)
        drm/msm/a6xx: initialize GMU mutex earlier
        drm/msm/dp: enable HDP plugin/unplugged interrupts at hpd_enable/disable
        accel/ivpu: Fix sporadic VPU boot failure
        accel/ivpu: Do not use mutex_lock_interruptible
        accel/ivpu: Do not trigger extra VPU reset if the VPU is idle
        drm/amd/display: Reduce sdp bw after urgent to 90%
        drm/amdgpu: change reserved vram info print
        drm/amdgpu: fix xclk freq on CHIP_STONEY
        drm/radeon: fix race condition UAF in radeon_gem_set_domain_ioctl
        Revert "drm/amdgpu: switch to golden tsc registers for raven/raven2"
        Revert "drm/amdgpu: Differentiate between Raven2 and Raven/Picasso according to revision id"
        Revert "drm/amdgpu: change the reference clock for raven/raven2"
        drm/amd/display: add ODM case when looking for first split pipe
        drm/amd: Make lack of `ACPI_FADT_LOW_POWER_S0` or `CONFIG_AMD_PMC` louder during suspend path
        drm/amd/pm: conditionally disable pcie lane switching for some sienna_cichlid SKUs
        drm/amd/pm: Fix power context allocation in SMU13
        drm/amdgpu: fix Null pointer dereference error in amdgpu_device_recover_vram
        drm/amd: Disallow s0ix without BIOS support again
        drm/i915/selftests: Add some missing error propagation
        drm/exynos: fix race condition UAF in exynos_g2d_exec_ioctl
        ...
      33f2b578
    • Linus Torvalds's avatar
      Merge tag 'cgroup-for-6.4-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 9cd6357f
      Linus Torvalds authored
      Pull cgroup fixes from Tejun Heo:
      
       - Fix css_set reference leaks on fork failures
      
       - Fix CPU hotplug locking in cgroup_transfer_tasks() which is used by
         cgroup1 cpuset
      
       - Doc update
      
      * tag 'cgroup-for-6.4-rc5-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup:
        cgroup: Documentation: Clarify usage of memory limits
        cgroup: always put cset in cgroup_css_set_put_fork
        cgroup: fix missing cpus_read_{lock,unlock}() in cgroup_transfer_tasks()
      9cd6357f
    • Dave Airlie's avatar
      Merge tag 'drm-msm-fixes-2023-06-08' of https://gitlab.freedesktop.org/drm/msm into drm-fixes · 986c34b4
      Dave Airlie authored
      A few more late fixes for v6.4-rc6
      
      + Fix max segment size to address splat on newer a6xx
      + Disable PSR by default w/ modparam to re-enable, since there
        still seems to be a lingering issue
      + Fix HPD issue
      + Fix issue with unitialized GMU mutex
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      From: Rob Clark <robdclark@gmail.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/CAF6AEGufjVZRNT6YfQ7YUXFC7Cz95wdLF7QHAYkiGfp+3Xc3DQ@mail.gmail.com
      986c34b4
    • Dmitry Baryshkov's avatar
      drm/msm/a6xx: initialize GMU mutex earlier · 12abd735
      Dmitry Baryshkov authored
      Move GMU mutex initialization earlier to make sure that it is always
      initialized. a6xx_destroy can be called from ther failure path before
      GMU initialization.
      
      This fixes the following backtrace:
      
      ------------[ cut here ]------------
      DEBUG_LOCKS_WARN_ON(lock->magic != lock)
      WARNING: CPU: 0 PID: 58 at kernel/locking/mutex.c:582 __mutex_lock+0x1ec/0x3d0
      Modules linked in:
      CPU: 0 PID: 58 Comm: kworker/u16:1 Not tainted 6.3.0-rc5-00155-g187c06436519 #565
      Hardware name: Qualcomm Technologies, Inc. SM8350 HDK (DT)
      Workqueue: events_unbound deferred_probe_work_func
      pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
      pc : __mutex_lock+0x1ec/0x3d0
      lr : __mutex_lock+0x1ec/0x3d0
      sp : ffff800008993620
      x29: ffff800008993620 x28: 0000000000000002 x27: ffff47b253c52800
      x26: 0000000001000606 x25: ffff47b240bb2810 x24: fffffffffffffff4
      x23: 0000000000000000 x22: ffffc38bba15ac14 x21: 0000000000000002
      x20: ffff800008993690 x19: ffff47b2430cc668 x18: fffffffffffe98f0
      x17: 6f74616c75676572 x16: 20796d6d75642067 x15: 0000000000000038
      x14: 0000000000000000 x13: ffffc38bbba050b8 x12: 0000000000000666
      x11: 0000000000000222 x10: ffffc38bbba603e8 x9 : ffffc38bbba050b8
      x8 : 00000000ffffefff x7 : ffffc38bbba5d0b8 x6 : 0000000000000222
      x5 : 000000000000bff4 x4 : 40000000fffff222 x3 : 0000000000000000
      x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff47b240cb1880
      Call trace:
       __mutex_lock+0x1ec/0x3d0
       mutex_lock_nested+0x2c/0x38
       a6xx_destroy+0xa0/0x138
       a6xx_gpu_init+0x41c/0x618
       adreno_bind+0x188/0x290
       component_bind_all+0x118/0x248
       msm_drm_bind+0x1c0/0x670
       try_to_bring_up_aggregate_device+0x164/0x1d0
       __component_add+0xa8/0x16c
       component_add+0x14/0x20
       dsi_dev_attach+0x20/0x2c
       dsi_host_attach+0x9c/0x144
       devm_mipi_dsi_attach+0x34/0xac
       lt9611uxc_attach_dsi.isra.0+0x84/0xfc
       lt9611uxc_probe+0x5b8/0x67c
       i2c_device_probe+0x1ac/0x358
       really_probe+0x148/0x2ac
       __driver_probe_device+0x78/0xe0
       driver_probe_device+0x3c/0x160
       __device_attach_driver+0xb8/0x138
       bus_for_each_drv+0x84/0xe0
       __device_attach+0x9c/0x188
       device_initial_probe+0x14/0x20
       bus_probe_device+0xac/0xb0
       deferred_probe_work_func+0x8c/0xc8
       process_one_work+0x2bc/0x594
       worker_thread+0x228/0x438
       kthread+0x108/0x10c
       ret_from_fork+0x10/0x20
      irq event stamp: 299345
      hardirqs last  enabled at (299345): [<ffffc38bb9ba61e4>] put_cpu_partial+0x1c8/0x22c
      hardirqs last disabled at (299344): [<ffffc38bb9ba61dc>] put_cpu_partial+0x1c0/0x22c
      softirqs last  enabled at (296752): [<ffffc38bb9890434>] _stext+0x434/0x4e8
      softirqs last disabled at (296741): [<ffffc38bb989669c>] ____do_softirq+0x10/0x1c
      ---[ end trace 0000000000000000 ]---
      
      Fixes: 4cd15a3e ("drm/msm/a6xx: Make GPU destroy a bit safer")
      Cc: Douglas Anderson <dianders@chromium.org>
      Signed-off-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Patchwork: https://patchwork.freedesktop.org/patch/531540/Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      12abd735
    • Kuogee Hsieh's avatar
      drm/msm/dp: enable HDP plugin/unplugged interrupts at hpd_enable/disable · a8e981ac
      Kuogee Hsieh authored
      The internal_hpd flag is set to true by dp_bridge_hpd_enable() and set to
      false by dp_bridge_hpd_disable() to handle GPIO pinmuxed into DP controller
      case. HDP related interrupts can not be enabled until internal_hpd is set
      to true. At current implementation dp_display_config_hpd() will initialize
      DP host controller first followed by enabling HDP related interrupts if
      internal_hpd was true at that time. Enable HDP related interrupts depends on
      internal_hpd status may leave system with DP driver host is in running state
      but without HDP related interrupts being enabled. This will prevent external
      display from being detected. Eliminated this dependency by moving HDP related
      interrupts enable/disable be done at dp_bridge_hpd_enable/disable() directly
      regardless of internal_hpd status.
      
      Changes in V3:
      -- dp_catalog_ctrl_hpd_enable() and dp_catalog_ctrl_hpd_disable()
      -- rewording ocmmit text
      
      Changes in V4:
      -- replace dp_display_config_hpd() with dp_display_host_start()
      -- move enable_irq() at dp_display_host_start();
      
      Changes in V5:
      -- replace dp_display_host_start() with dp_display_host_init()
      
      Changes in V6:
      -- squash remove enable_irq() and disable_irq()
      
      Fixes: cd198cad ("drm/msm/dp: Rely on hpd_enable/disable callbacks")
      Signed-off-by: default avatarKuogee Hsieh <quic_khsieh@quicinc.com>
      Tested-by: Leonard Lausen <leonard@lausen.nl> # on sc7180 lazor
      Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
      Reviewed-by: default avatarBjorn Andersson <andersson@kernel.org>
      Tested-by: default avatarBjorn Andersson <andersson@kernel.org>
      Reviewed-by: default avatarAbhinav Kumar <quic_abhinavk@quicinc.com>
      Link: https://lore.kernel.org/r/1684878756-17830-1-git-send-email-quic_khsieh@quicinc.comSigned-off-by: default avatarRob Clark <robdclark@chromium.org>
      a8e981ac