1. 04 Mar, 2024 21 commits
    • Filipe Manana's avatar
      btrfs: preallocate temporary extent buffer for inode logging when needed · e383e158
      Filipe Manana authored
      When logging an inode and we require to copy items from subvolume leaves
      to the log tree, we clone each subvolume leaf and than use that clone to
      copy items to the log tree. This is required to avoid possible deadlocks
      as stated in commit 796787c9 ("btrfs: do not modify log tree while
      holding a leaf from fs tree locked").
      
      The cloning requires allocating an extent buffer (struct extent_buffer)
      and then allocating pages (folios) to attach to the extent buffer. This
      may be slow in case we are under memory pressure, and since we are doing
      the cloning while holding a read lock on a subvolume leaf, it means we
      can be blocking other operations on that leaf for significant periods of
      time, which can increase latency on operations like creating other files,
      renaming files, etc. Similarly because we're under a log transaction, we
      may also cause extra delay on other tasks doing an fsync, because syncing
      the log requires waiting for tasks that joined a log transaction to exit
      the transaction.
      
      So to improve this, for any inode logging operation that needs to copy
      items from a subvolume leaf ("full sync" or "copy everything" bit set
      in the inode), preallocate a dummy extent buffer before locking any
      extent buffer from the subvolume tree, and even before joining a log
      transaction, add it to the log context and then use it when we need to
      copy items from a subvolume leaf to the log tree. This avoids making
      other operations get extra latency when waiting to lock a subvolume
      leaf that is used during inode logging and we are under heavy memory
      pressure.
      
      The following test script with bonnie++ was used to test this:
      
        $ cat test.sh
        #!/bin/bash
      
        DEV=/dev/sdh
        MNT=/mnt/sdh
        MOUNT_OPTIONS="-o ssd"
      
        MEMTOTAL_BYTES=`free -b | grep Mem: | awk '{ print $2 }'`
        NR_DIRECTORIES=20
        NR_FILES=20480
        DATASET_SIZE=$((MEMTOTAL_BYTES * 2 / 1048576))
        DIRECTORY_SIZE=$((MEMTOTAL_BYTES * 2 / NR_FILES))
        NR_FILES=$((NR_FILES / 1024))
      
        echo "performance" | \
            tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
      
        umount $DEV &> /dev/null
        mkfs.btrfs -f $MKFS_OPTIONS $DEV
        mount $MOUNT_OPTIONS $DEV $MNT
      
        bonnie++ -u root -d $MNT \
            -n $NR_FILES:$DIRECTORY_SIZE:$DIRECTORY_SIZE:$NR_DIRECTORIES \
            -r 0 -s $DATASET_SIZE -b
      
        umount $MNT
      
      The results of this test on a 8G VM running a non-debug kernel (Debian's
      default kernel config), were the following.
      
      Before this change:
      
        Version 2.00a       ------Sequential Output------ --Sequential Input- --Random-
                            -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
        Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
        debian0       7501M  376k  99  1.4g  96  117m  14 1510k  99  2.5g  95 +++++ +++
        Latency             35068us   24976us    2944ms   30725us   71770us   26152us
        Version 2.00a       ------Sequential Create------ --------Random Create--------
        debian0             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
        files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
        20:384100:384100/20 20480  32 20480  58 20480  48 20480  39 20480  56 20480  61
        Latency               411ms   11914us     119ms     617ms   10296us     110ms
      
      After this change:
      
        Version 2.00a       ------Sequential Output------ --Sequential Input- --Random-
                            -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
        Name:Size etc        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
        debian0       7501M  375k  99  1.4g  97  117m  14 1546k  99  2.3g  98 +++++ +++
        Latency             35975us  20945us    2144ms   10297us    2217us    6004us
        Version 2.00a       ------Sequential Create------ --------Random Create--------
        debian0             -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
        files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
        20:384100:384100/20 20480  35 20480  58 20480  48 20480  40 20480  57 20480  59
        Latency               320ms   11237us   77779us     518ms    6470us   86389us
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      e383e158
    • Filipe Manana's avatar
      btrfs: add comment about list_is_singular() use at btrfs_delete_unused_bgs() · edebd19a
      Filipe Manana authored
      At btrfs_delete_unused_bgs(), the use of the list_is_singular() check on
      a block group may not be immediately obvious. It is there to prevent
      losing raid profile information for a block group type (data, metadata or
      system), as that information is removed from
      fs_info->avail_[data|metadata|system]_alloc_bits when the last block group
      of a given type is deleted. So deleting the block group would later result
      in creating block groups of that type with a single profile (because
      fs_info->avail_*_alloc_bits would have a value of 0).
      
      This check was added in commit aefbe9a6 ("btrfs: Fix lost-data-profile
      caused by auto removing bg").
      
      So add a comment mentioning the need for the check.
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Reviewed-by: default avatarBoris Burkov <boris@bur.io>
      Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      edebd19a
    • Filipe Manana's avatar
      btrfs: document what the spinlock unused_bgs_lock protects · 4d945011
      Filipe Manana authored
      Add some comments to struct btrfs_fs_info to explicitly document which
      members are protected by the spinlock unused_bgs_lock. It is currently
      used to protect two linked lists, the reclaim_bgs and unused_bgs lists.
      
      So add an explicit comment on top of each list to mention its protected
      by unused_bgs_lock, as well as comment on top of unused_bgs_lock to
      mention the lists it protects.
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Reviewed-by: default avatarBoris Burkov <boris@bur.io>
      Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      4d945011
    • David Sterba's avatar
      btrfs: make btrfs_error_unpin_extent_range() return void · 91701bdf
      David Sterba authored
      This helper is used in transaction abort or cleanup context and the
      callers cannot handle all errors, only do best effort.
      
      btrfs_cleanup_one_transaction
        btrfs_destroy_delayed_refs
          btrfs_error_unpin_extent_range
        btrfs_destroy_pinned_extent
          btrfs_error_unpin_extent_range
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      91701bdf
    • David Sterba's avatar
      btrfs: return errors from unpin_extent_range() · 44a6c343
      David Sterba authored
      Handle the lookup failure of the block group to unpin, this is a logic
      error as the block group must exist at this point. If not, something else
      must have freed it, like clean_pinned_extents() would do without locking
      the unused_bg_unpin_mutex.
      
      Push the errors to the callers, proper handling will be done in followup
      patches.
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      44a6c343
    • David Sterba's avatar
      btrfs: handle errors returned from unpin_extent_cache() · c03c89f8
      David Sterba authored
      We've had numerous attempts to let function unpin_extent_cache() return
      void as it only returns 0. There are still error cases to handle so do
      that, in addition to the verbose messages. The only caller
      btrfs_finish_one_ordered() will now abort the transaction, previously it
      let it continue which could lead to further problems.
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      c03c89f8
    • Colin Ian King's avatar
      btrfs: zlib: Fix spelling mistake "infalte" -> "inflate" · 835cd826
      Colin Ian King authored
      There is a spelling mistake in a warning message. Fix it.
      Signed-off-by: default avatarColin Ian King <colin.i.king@gmail.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      835cd826
    • Qu Wenruo's avatar
      btrfs: zstd: fix and simplify the inline extent decompression (v2) · 56596a9f
      Qu Wenruo authored
      Note: this is a fixed version that was previously reverted as
      e01a83e1 ("Revert "btrfs: zstd: fix and simplify the inline extent
      decompression""), with fixed parameters to memzero_page().
      
      [BUG]
      If we have a filesystem with 4k sectorsize, and an inlined compressed
      extent created like this:
      
      	item 4 key (257 INODE_ITEM 0) itemoff 15863 itemsize 160
      		generation 8 transid 8 size 4096 nbytes 4096
      		block group 0 mode 100600 links 1 uid 0 gid 0 rdev 0
      		sequence 1 flags 0x0(none)
      	item 5 key (257 INODE_REF 256) itemoff 15839 itemsize 24
      		index 2 namelen 14 name: source_inlined
      	item 6 key (257 EXTENT_DATA 0) itemoff 15770 itemsize 69
      		generation 8 type 0 (inline)
      		inline extent data size 48 ram_bytes 4096 compression 3 (zstd)
      
      Then trying to reflink that extent in an aarch64 system with 64K page
      size, the reflink would just fail:
      
        # xfs_io -f -c "reflink $mnt/source_inlined 0 60k 4k" $mnt/dest
        XFS_IOC_CLONE_RANGE: Input/output error
      
      [CAUSE]
      In zstd_decompress(), we didn't treat @start_byte as just a page offset,
      but also use it as an indicator on whether we should error out, without
      any proper explanation (this is copied from other decompression code).
      
      In reality, for subpage cases, although @start_byte can be non-zero,
      we should never switch input/output buffer nor error out, since the whole
      input/output buffer should never exceed one sector, thus we should not
      need to do any buffer switch.
      
      Thus the current code using @start_byte as a condition to switch
      input/output buffer or finish the decompression is completely incorrect.
      
      [FIX]
      The fix involves several modification:
      
      - Rename @start_byte to @dest_pgoff to properly express its meaning
      
      - Use @sectorsize other than PAGE_SIZE to properly initialize the
        output buffer size
      
      - Use correct destination offset inside the destination page
      
      - Simplify the main loop
        Since the input/output buffer should never switch, we only need one
        zstd_decompress_stream() call.
      
      - Consider early end as an error
      
      After the fix, even on 64K page sized aarch64, above reflink now
      works as expected:
      
        # xfs_io -f -c "reflink $mnt/source_inlined 0 60k 4k" $mnt/dest
        linked 4096/4096 bytes at offset 61440
      
      And results the correct file layout:
      
      	item 9 key (258 INODE_ITEM 0) itemoff 15542 itemsize 160
      		generation 10 transid 10 size 65536 nbytes 4096
      		block group 0 mode 100600 links 1 uid 0 gid 0 rdev 0
      		sequence 1 flags 0x0(none)
      	item 10 key (258 INODE_REF 256) itemoff 15528 itemsize 14
      		index 3 namelen 4 name: dest
      	item 11 key (258 XATTR_ITEM 3817753667) itemoff 15445 itemsize 83
      		location key (0 UNKNOWN.0 0) type XATTR
      		transid 10 data_len 37 name_len 16
      		name: security.selinux
      		data unconfined_u:object_r:unlabeled_t:s0
      	item 12 key (258 EXTENT_DATA 61440) itemoff 15392 itemsize 53
      		generation 10 type 1 (regular)
      		extent data disk byte 13631488 nr 4096
      		extent data offset 0 nr 4096 ram 4096
      		extent compression 0 (none)
      Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      56596a9f
    • David Sterba's avatar
      btrfs: remove unused included headers · 2b712e3b
      David Sterba authored
      With help of neovim, LSP and clangd we can identify header files that
      are not actually needed to be included in the .c files. This is focused
      only on removal (with minor fixups), further cleanups are possible but
      will require doing the header files properly with forward declarations,
      minimized includes and include-what-you-use care.
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      2b712e3b
    • David Sterba's avatar
      btrfs: replace i_blocksize by fs_info::sectorsize · dc527961
      David Sterba authored
      The block size calculated by i_blocksize from inode is the same as what
      we have in fs_info, initalized in inode_init_always(). Unify that to use
      the fs_info value everywhere.
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      dc527961
    • David Sterba's avatar
      btrfs: replace sb::s_blocksize by fs_info::sectorsize · 4e00422e
      David Sterba authored
      The block size stored in the super block is used by subsystems outside
      of btrfs and it's a copy of fs_info::sectorsize. Unify that to always
      use our sectorsize, with the exception of mount where we first need to
      use fixed values (4K) until we read the super block and can set the
      sectorsize.
      
      Replace all uses, in most cases it's fewer pointer indirections.
      Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      4e00422e
    • Johannes Thumshirn's avatar
      btrfs: remove duplicate recording of physical address · c4e5b747
      Johannes Thumshirn authored
      Remove the duplicate physical recording of the original write physical
      address in case of a single device write.
      
      This duplicated code is most likely present due to a rebase error.
      Reviewed-by: default avatarFilipe Manana <fdmanana@suse.com>
      Signed-off-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      c4e5b747
    • Goldwyn Rodrigues's avatar
      btrfs: page to folio conversion in btrfs_truncate_block() · df055afe
      Goldwyn Rodrigues authored
      Convert use of struct page to struct folio inside btrfs_truncate_block().
      The only page based function is set_page_extent_mapped(). All other
      functions have folio equivalents.
      
      Had to use __filemap_get_folio() because filemap_grab_folio() does not
      allow passing allocation mask as a parameter.
      Signed-off-by: default avatarGoldwyn Rodrigues <rgoldwyn@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Reviewed-by: default avatarBoris Burkov <boris@bur.io>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      df055afe
    • Matthew Wilcox (Oracle)'s avatar
      btrfs: use a folio array throughout the defrag process · fae9cd25
      Matthew Wilcox (Oracle) authored
      Remove more hidden calls to compound_head() by using an array of folios
      instead of pages.  Also neaten the error path in defrag_one_range() by
      adjusting the length of the array instead of checking for NULL.
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      fae9cd25
    • Matthew Wilcox (Oracle)'s avatar
      btrfs: convert defrag_prepare_one_page() to use a folio · 03fbf77a
      Matthew Wilcox (Oracle) authored
      Use a folio throughout defrag_prepare_one_page() to remove dozens of
      hidden calls to compound_head().  There is no support here for large
      folios; indeed, turn the existing check for PageCompound into a check
      for large folios.
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      03fbf77a
    • Matthew Wilcox (Oracle)'s avatar
      btrfs: add set_folio_extent_mapped() helper · dfba9f47
      Matthew Wilcox (Oracle) authored
      Turn set_page_extent_mapped() into a wrapper around this version.
      Saves a call to compound_head() for callers who already have a folio
      and removes a couple of users of page->mapping.
      Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
      Signed-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      dfba9f47
    • Josef Bacik's avatar
      btrfs: WARN_ON_ONCE() in our leak detection code · 8fd2b12e
      Josef Bacik authored
      fstests looks for WARN_ON's in dmesg.  Add WARN_ON_ONCE() to our leak
      detection code (enabled only in debug builds) so that fstests will fail
      if these things trip at all.  This will allow us to easily catch
      problems with our reference counting that may otherwise go unnoticed.
      Reviewed-by: default avatarNeal Gompa <neal@gompa.dev>
      Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
      Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      8fd2b12e
    • Filipe Manana's avatar
      btrfs: remove extent_map_tree forward declaration at extent_io.h · 592a0ce9
      Filipe Manana authored
      There's no need to do a forward declaration of struct extent_map_tree at
      extent_io.h, as there are no function prototypes, inline functions or data
      structures that refer to struct extent_map_tree.
      
      So remove that forward declaration, which is not needed since commit
      477a30ba ("btrfs: Sink extent_tree arguments in
      try_release_extent_mapping").
      Signed-off-by: default avatarFilipe Manana <fdmanana@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      592a0ce9
    • Qu Wenruo's avatar
      btrfs: cache folio size and shift in extent_buffer · 84cda1a6
      Qu Wenruo authored
      After the conversion to folio interfaces (but without the patch to
      enable larger folio allocation), there is an LTP report about observable
      performance drop on metadata heavy operations.
      
      https://lore.kernel.org/linux-btrfs/202312221750.571925bd-oliver.sang@intel.com/
      
      This drop is caused by the extra code of calculating the
      folio_size()/folio_shift(), instead of the old hard coded
      PAGE_SIZE/PAGE_SHIFT.
      
      To slightly reduce the overhead, just cache both folio_size and
      folio_shift in extent_buffer.
      
      The two new members (u32 folio_size and u8 folio_shift) are stored
      inside the holes of extent_buffer. folio_size is shared with len, which
      is reduced to u32. The size of eb does not change.
      Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      84cda1a6
    • Qu Wenruo's avatar
      btrfs: remove unused variable bio_offset from end_bbio_data_read() · 4d02b543
      Qu Wenruo authored
      The variable @bio_offset was introduced in commit 7ffd27e3 ("btrfs:
      pass bio_offset to check_data_csum() directly"), when we are still using
      the same endio function for both data and metadata.
      
      Later we had several changes to data and metadata endio functions:
      
      - Data verification is handled by btrfs bio layer
      
      - Split data and metadata endio paths
      
      Now for data path we no longer do any verification in
      end_bbio_data_read(), as the verification is handled by btrfs bio layer
      already.
      
      Thus there is no need for such bio_offset variable.
      Reviewed-by: default avatarAnand Jain <anand.jain@oracle.com>
      Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      4d02b543
    • Qu Wenruo's avatar
      btrfs: remove the pg_offset parameter from btrfs_get_extent() · 8bab0a30
      Qu Wenruo authored
      The parameter @pg_offset of btrfs_get_extent() is only utilized for
      inlined extent, and we already have an ASSERT() and tree-checker, to
      make sure we can only get inline extent at file offset 0.
      
      Any invalid inline extent with non-zero file offset would be rejected by
      tree-checker in the first place.
      
      Thus the @pg_offset parameter is not really necessary, just remove it.
      Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      8bab0a30
  2. 03 Mar, 2024 5 commits
    • Linus Torvalds's avatar
      Linux 6.8-rc7 · 90d35da6
      Linus Torvalds authored
      90d35da6
    • Linus Torvalds's avatar
      Merge tag 'phy-fixes2-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy · 58c806d8
      Linus Torvalds authored
      Pull phy fixes from Vinod Koul:
      
        - qcom: m31 pointer err fix, eusb2 fix redundant zero-out loop and v3
          offset fix on qmp-usb
      
        - freescale: fix for dphy alias
      
      * tag 'phy-fixes2-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/phy/linux-phy:
        phy: qcom-qmp-usb: fix v3 offsets data
        phy: qualcomm: eusb2-repeater: Rework init to drop redundant zero-out loop
        phy: qcom: phy-qcom-m31: fix wrong pointer pass to PTR_ERR()
        phy: freescale: phy-fsl-imx8-mipi-dphy: Fix alias name to use dashes
      58c806d8
    • Linus Torvalds's avatar
      Merge tag 'dmaengine-fix2-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine · d57dd2d2
      Linus Torvalds authored
      Pull dmaengine fixes from Vinod Koul:
      
       - dw-edma fixes to improve driver and remote HDMA setup
      
       - fsl-edma fixes for SoC hange, irq init and byte calculations and
         sparse fixes
      
       - idxd: safe user copy of completion record fix
      
       - ptdma: consistent DMA mask fix
      
      * tag 'dmaengine-fix2-6.8' of git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/dmaengine:
        dmaengine: ptdma: use consistent DMA masks
        dmaengine: fsl-qdma: add __iomem and struct in union to fix sparse warning
        dmaengine: idxd: Ensure safe user copy of completion record
        dmaengine: fsl-edma: correct max_segment_size setting
        dmaengine: idxd: Remove shadow Event Log head stored in idxd
        dmaengine: fsl-edma: correct calculation of 'nbytes' in multi-fifo scenario
        dmaengine: fsl-qdma: init irq after reg initialization
        dmaengine: fsl-qdma: fix SoC may hang on 16 byte unaligned read
        dmaengine: dw-edma: eDMA: Add sync read before starting the DMA transfer in remote setup
        dmaengine: dw-edma: HDMA: Add sync read before starting the DMA transfer in remote setup
        dmaengine: dw-edma: Add HDMA remote interrupt configuration
        dmaengine: dw-edma: HDMA_V0_REMOTEL_STOP_INT_EN typo fix
        dmaengine: dw-edma: Fix wrong interrupt bit set for HDMA
        dmaengine: dw-edma: Fix the ch_count hdma callback
      d57dd2d2
    • Linus Torvalds's avatar
      Merge tag 'powerpc-6.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux · e4f79000
      Linus Torvalds authored
      Pull powerpc fixes from Michael Ellerman:
      
       - Fix IOMMU table initialisation when doing kdump over SR-IOV
      
       - Fix incorrect RTAS function name for resetting TCE tables
      
       - Fix fpu_signal selftest failures since a recent change
      
      Thanks to Gaurav Batra and Nathan Lynch.
      
      * tag 'powerpc-6.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux:
        selftests/powerpc: Fix fpu_signal failures
        powerpc/rtas: use correct function name for resetting TCE tables
        powerpc/pseries/iommu: IOMMU table is not initialized for kdump over SR-IOV
      e4f79000
    • Linus Torvalds's avatar
      Merge tag 'x86_urgent_for_v6.8_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 73d35f83
      Linus Torvalds authored
      Pull x86 fixes from Borislav Petkov:
      
       - Do not reserve SETUP_RNG_SEED setup data in the e820 map as it should
         be used by kexec only
      
       - Make sure MKTME feature detection happens at an earlier time in the
         boot process so that the physical address size supported by the CPU
         is properly corrected and MTRR masks are programmed properly, leading
         to TDX systems booting without disable_mtrr_cleanup on the cmdline
      
       - Make sure the different address sizes supported by the CPU are read
         out as early as possible
      
      * tag 'x86_urgent_for_v6.8_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/e820: Don't reserve SETUP_RNG_SEED in e820
        x86/cpu/intel: Detect TME keyid bits before setting MTRR mask registers
        x86/cpu: Allow reducing x86_phys_bits during early_identify_cpu()
      73d35f83
  3. 02 Mar, 2024 8 commits
  4. 01 Mar, 2024 6 commits