Commit Graph

1147477 Commits

Author SHA1 Message Date
Ramji Jiyani
cc85c8ade8 ANDROID: GKI: arm64: Enable KMI strict mode
Enables the KMI strict mode for the aarch64;
also remove the TODO comment for aarch64-debug
as KMI strict mode shouldn't be enabled for
that target.

Bug: 269346251
Test: bazel build //common:kernel_aarch64
Test: TH
Change-Id: If8cb717d2e3dfef29004fafe1315a69caa940716
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2023-03-17 17:21:52 +00:00
Ramji Jiyani
c2afaf7149 ANDROID: GKI: QCOM: Remove stale symbols
Enabling the KMI strict mode gave these errors:

Symbols missing from the ksymtab:
  __traceiter_android_rvh_update_cpus_allowed
  __traceiter_android_rvh_update_readahead_gfp_mask
  __tracepoint_android_rvh_update_cpus_allowed
  __tracepoint_android_rvh_update_readahead_gfp_mask
  devm_pm_opp_attach_genpd
  drm_dp_mst_dump_topology

Remove these symbols from android/abi_gki_aarch64_qcom as
they are stale and not being exported by the kernel.

Bug: 269346251
Test: bazel build //common:kernel_aarch64 (kmi_stricte_mode=True)
Test: TH
Change-Id: I3d11fd9c4b8b817415c95c0461e7ef0350338f08
Signed-off-by: Ramji Jiyani <ramjiyani@google.com>
2023-03-17 17:21:52 +00:00
Wesley Cheng
35a0e36ee8 FROMGIT: usb: dwc3: gadget: Add 1ms delay after end transfer command without IOC
Previously, there was a 100uS delay inserted after issuing an end transfer
command for specific controller revisions.  This was due to the fact that
there was a GUCTL2 bit field which enabled synchronous completion of the
end transfer command once the CMDACT bit was cleared in the DEPCMD
register.  Since this bit does not exist for all controller revisions and
the current implementation heavily relies on utizling the EndTransfer
command completion interrupt, add the delay back in for uses where the
interrupt on completion bit is not set, and increase the duration to 1ms
for the controller to complete the command.

An issue was seen where the USB request buffer was unmapped while the DWC3
controller was still accessing the TRB.  However, it was confirmed that the
end transfer command was successfully submitted. (no end transfer timeout)
In situations, such as dwc3_gadget_soft_disconnect() and
__dwc3_gadget_ep_disable(), the dwc3_remove_request() is utilized, which
will issue the end transfer command, and follow up with
dwc3_gadget_giveback().  At least for the USB ep disable path, it is
required for any pending and started requests to be completed and returned
to the function driver in the same context of the disable call.  Without
the GUCTL2 bit, it is not ensured that the end transfer is completed before
the buffers are unmapped.

Fixes: cf2f8b63f7 ("usb: dwc3: gadget: Remove END_TRANSFER delay")
Cc: stable <stable@kernel.org>
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/20230306200557.29387-1-quic_wcheng@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Bug: 271815733
Change-Id: I9e06d4810e7052717c7b8e16facd7b765b1ce414
(cherry picked from commit d8a2bb4eb7 https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-linus)
Signed-off-by: Wesley Cheng <quic_wcheng@quicinc.com>
2023-03-17 12:05:33 +00:00
Satya Durga Srinivasu Prabhala
14fdf61f25 ANDROID: abi_gki_aarch64_qcom: update symbol list
Vendor modules needs below symbols, so, update symbol list accordingly.

device_get_dma_attr
rproc_set_firmware
sock_edemux
tcp_hashinfo
__inet_lookup_established
__inet6_lookup_established
udp_table
__udp4_lib_lookup
__udp6_lib_lookup

ABI difference:

6 function symbol(s) added
  'struct sock* __inet6_lookup_established(struct net*, struct inet_hashinfo*, const struct in6_addr*, __be16, const struct in6_addr*, u16, int, int)'
  'struct sock* __inet_lookup_established(struct net*, struct inet_hashinfo*, __be32, __be16, __be32, u16, int, int)'
  'struct sock* __udp4_lib_lookup(struct net*, __be32, __be16, __be32, __be16, int, int, struct udp_table*, struct sk_buff*)'
  'struct sock* __udp6_lib_lookup(struct net*, const struct in6_addr*, __be16, const struct in6_addr*, __be16, int, int, struct udp_table*, struct sk_buff*)'
  'int rproc_set_firmware(struct rproc*, const char*)'
  'void sock_edemux(struct sk_buff*)'

2 variable symbol(s) added
  'struct inet_hashinfo tcp_hashinfo'
  'struct udp_table udp_table'

Bug: 273518985
Change-Id: Ib84846939a2ca423ecc709b0832efc9fcff39df5
Signed-off-by: Satya Durga Srinivasu Prabhala <quic_satyap@quicinc.com>
Signed-off-by: Maria Yu <quic_aiquny@quicinc.com>
Signed-off-by: Giuliano Procida <gprocida@google.com>
2023-03-16 14:36:58 +00:00
Giuliano Procida
c392d5c554 ANDROID: further fix incorrectly submitted KMI update
The previous fix omitted a pair of vendor hook symbols.

Fixes: 77ba93e199 ("ANDROID: fix incorrectly submitted KMI update")
Change-Id: If5352d50edd706148dc0d2c4ba468ab4735e6a26
Signed-off-by: Giuliano Procida <gprocida@google.com>
2023-03-16 14:28:51 +00:00
Giuliano Procida
77ba93e199 ANDROID: fix incorrectly submitted KMI update
Fixes: 5a54ac0ca5 ("ANDROID: ABI: Update QCOM symbol list")
Change-Id: Iad9267962349d99d125ec71cc093987ef740a434
Signed-off-by: Giuliano Procida <gprocida@google.com>
2023-03-16 12:37:45 +00:00
Rashid Zafar
5a54ac0ca5 ANDROID: ABI: Update QCOM symbol list
Add the following symbol to allow vendor module to disable thermal
cooling device stats.

1 function symbol(s) added
  'int __traceiter_android_vh_disable_thermal_cooling_stats(void*,
struct thermal_cooling_device*, bool*)'

Bug: 218825214
Signed-off-by: Rashid Zafar <quic_rzafar@quicinc.com>
Change-Id: I38e56b2cf9b5bc78ac7ebefe2861d7a8932c09b2
2023-03-15 22:26:06 +00:00
Manaf Meethalavalappu Pallikunhi
a56bbec0f4 ANDROID: thermal: vendor hook to disable thermal cooling stats
Add vendor hook to thermal to allow vendor to selectively disable
thermal cooling device stats feature based on requirement. It helps
vendor to optimize memory footprint due to this feature especially
for low memory devices.

Bug: 218825214
Change-Id: I2ec72505f03575e09229c54765584614b16a3904
Signed-off-by: Manaf Meethalavalappu Pallikunhi <quic_manafm@quicinc.com>
(cherry picked from commit f6e47fd00f24d5e814d316b03974e970dd87879e)
Signed-off-by: Rashid Zafar <quic_rzafar@quicinc.com>
2023-03-15 20:51:32 +00:00
Todd Kjos
e3f059ee54 ANDROID: GKI: 3/15/2023 KMI update
Set KMI_GENERATION=2 for 3/15 KMI update

function symbol 'struct block_device* I_BDEV(struct inode*)' changed
  CRC changed from 0x56b2634e to 0x66b14c8d

function symbol 'void __ClearPageMovable(struct page*)' changed
  CRC changed from 0x6f60ec1b to 0xbf6e946f

function symbol 'void __SetPageMovable(struct page*, const struct movable_operations*)' changed
  CRC changed from 0xd0d79e98 to 0x8c770d3

... 3520 omitted; 3523 symbols have only CRC changes

type 'struct task_struct' changed
  member 'unsigned int in_lru_fault : 1' was added
  6 members ('unsigned int no_cgroup_migration : 1' .. 'unsigned int in_eventfd : 1') changed
    offset changed by 1

type 'struct mm_struct' changed
  byte size changed from 880 to 912
  member changed from 'struct { struct maple_tree mm_mt; unsigned long(* get_unmapped_area)(struct file*, unsigned long, unsigned long, unsigned long, unsigned long); unsigned long mmap_base; unsigned long mmap_legacy_base; unsigned long task_size; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; atomic64_t pinned_vm; unsigned long data_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long start_code; unsigned long end_code; unsigned long start_data; unsigned long end_data; unsigned long start_brk; unsigned long brk; unsigned long start_stack; unsigned long arg_start; unsigned long arg_end; unsigned long env_start; unsigned long env_end; unsigned long saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt* binfmt; mm_context_t context; unsigned long flags; spinlock_t ioctx_lock; struct kioctx_table* ioctx_table; struct task_struct* owner; struct user_namespace* user_ns; struct file* exe_file; struct mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; }' to 'struct { struct maple_tree mm_mt; unsigned long(* get_unmapped_area)(struct file*, unsigned long, unsigned long, unsigned long, unsigned long); unsigned long mmap_base; unsigned long mmap_legacy_base; unsigned long task_size; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; atomic64_t pinned_vm; unsigned long data_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long start_code; unsigned long end_code; unsigned long start_data; unsigned long end_data; unsigned long start_brk; unsigned long brk; unsigned long start_stack; unsigned long arg_start; unsigned long arg_end; unsigned long env_start; unsigned long env_end; unsigned long saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt* binfmt; mm_context_t context; unsigned long flags; spinlock_t ioctx_lock; struct kioctx_table* ioctx_table; struct task_struct* owner; struct user_namespace* user_ns; struct file* exe_file; struct mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; struct { struct list_head list; unsigned long bitmap; struct mem_cgroup* memcg; } lru_gen; }'
    type changed from 'struct { struct maple_tree mm_mt; unsigned long(* get_unmapped_area)(struct file*, unsigned long, unsigned long, unsigned long, unsigned long); unsigned long mmap_base; unsigned long mmap_legacy_base; unsigned long task_size; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; atomic64_t pinned_vm; unsigned long data_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long start_code; unsigned long end_code; unsigned long start_data; unsigned long end_data; unsigned long start_brk; unsigned long brk; unsigned long start_stack; unsigned long arg_start; unsigned long arg_end; unsigned long env_start; unsigned long env_end; unsigned long saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt* binfmt; mm_context_t context; unsigned long flags; spinlock_t ioctx_lock; struct kioctx_table* ioctx_table; struct task_struct* owner; struct user_namespace* user_ns; struct file* exe_file; struct mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; }' to 'struct { struct maple_tree mm_mt; unsigned long(* get_unmapped_area)(struct file*, unsigned long, unsigned long, unsigned long, unsigned long); unsigned long mmap_base; unsigned long mmap_legacy_base; unsigned long task_size; pgd_t* pgd; atomic_t membarrier_state; atomic_t mm_users; atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_lock; struct list_head mmlist; unsigned long hiwater_rss; unsigned long hiwater_vm; unsigned long total_vm; unsigned long locked_vm; atomic64_t pinned_vm; unsigned long data_vm; unsigned long exec_vm; unsigned long stack_vm; unsigned long def_flags; seqcount_t write_protect_seq; spinlock_t arg_lock; unsigned long start_code; unsigned long end_code; unsigned long start_data; unsigned long end_data; unsigned long start_brk; unsigned long brk; unsigned long start_stack; unsigned long arg_start; unsigned long arg_end; unsigned long env_start; unsigned long env_end; unsigned long saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt* binfmt; mm_context_t context; unsigned long flags; spinlock_t ioctx_lock; struct kioctx_table* ioctx_table; struct task_struct* owner; struct user_namespace* user_ns; struct file* exe_file; struct mmu_notifier_subscriptions* notifier_subscriptions; atomic_t tlb_flush_pending; struct uprobes_state uprobes_state; struct work_struct async_put_work; struct { struct list_head list; unsigned long bitmap; struct mem_cgroup* memcg; } lru_gen; }'
      byte size changed from 880 to 912
      member 'struct { struct list_head list; unsigned long bitmap; struct mem_cgroup* memcg; } lru_gen' was added
  member 'unsigned long cpu_bitmap[0]' changed
    offset changed by 256

type 'struct pglist_data' changed
  byte size changed from 5760 to 6976
  member 'unsigned long flags' changed
    offset changed by 8512
  member 'struct lru_gen_mm_walk mm_walk' was added
  3 members ('struct cacheline_padding _pad2_' .. 'atomic_long_t vm_stat[42]') changed
    offset changed by 9728

type 'struct fsverity_info' changed
  byte size changed from 256 to 272
  member 'unsigned long* hash_block_verified' was added
  member 'spinlock_t hash_page_init_lock' was added

type 'struct reclaim_state' changed
  byte size changed from 8 to 16
  member 'struct lru_gen_mm_walk* mm_walk' was added

type 'struct mem_cgroup' changed
  byte size changed from 2112 to 2176
  member 'struct lru_gen_mm_list mm_list' was added
  member 'struct mem_cgroup_per_node* nodeinfo[0]' changed
    offset changed by 192

type 'struct fsverity_operations' changed
  member changed from 'int(* write_merkle_tree_block)(struct inode*, const void*, u64, int)' to 'int(* write_merkle_tree_block)(struct inode*, const void*, u64, unsigned int)'
    type changed from 'int(*)(struct inode*, const void*, u64, int)' to 'int(*)(struct inode*, const void*, u64, unsigned int)'
      pointed-to type changed from 'int(struct inode*, const void*, u64, int)' to 'int(struct inode*, const void*, u64, unsigned int)'
        parameter 4 type changed from 'int' to 'unsigned int'

type 'struct psi_group' changed
  member 'atomic_t poll_scheduled' was added

type 'struct lruvec' changed
  byte size changed from 144 to 1208
  member 'struct lru_gen_struct lrugen' was added
  member 'struct lru_gen_mm_state mm_state' was added
  member 'struct pglist_data* pgdat' changed
    offset changed by 8512

type 'struct merkle_tree_params' changed
  member 'unsigned int blocks_per_page' was added
  member 'u8 log_digestsize' was added
  member changed from 'unsigned int log_blocksize' to 'u8 log_blocksize'
    offset changed from 224 to 264
    type changed from 'unsigned int' to 'u8' = '__u8' = 'unsigned char'
      resolved type changed from 'unsigned int' to 'unsigned char'
  member changed from 'unsigned int log_arity' to 'u8 log_arity'
    offset changed from 256 to 272
    type changed from 'unsigned int' to 'u8' = '__u8' = 'unsigned char'
      resolved type changed from 'unsigned int' to 'unsigned char'
  member 'u8 log_blocks_per_page' was added
  member 'unsigned long tree_pages' was added
  member 'unsigned long level0_blocks' was removed
  member changed from 'u64 level_start[8]' to 'unsigned long level_start[8]'
    type changed from 'u64[8]' to 'unsigned long[8]'
      element type changed from 'u64' = '__u64' = 'unsigned long long' to 'unsigned long'
        resolved type changed from 'unsigned long long' to 'unsigned long'

type 'struct mem_cgroup_per_node' changed
  byte size changed from 1016 to 2080
  9 members ('struct lruvec_stats_percpu* lruvec_stats_percpu' .. 'struct mem_cgroup* memcg') changed
    offset changed by 8512

Bug: 273322767
Change-Id: Ie07b906b23433e2f7690885bf588b1d27a0848f8
Signed-off-by: Todd Kjos <tkjos@google.com>
2023-03-15 18:37:24 +00:00
Kalesh Singh
d64f37b5f5 ANDROID: GKI: Enable MGLRU by default
MGLRU has been tested and edge cases addressed on Android workloads;
after which the MGLRU showed good results across various performance
metrics. Enable the MGLRU as default memory reclaim in algorithm.

Bug: 261619133
Change-Id: I7ed7fbfd6ef9ce10053347528125dd98c39e50bf
Signed-off-by: Kalesh Singh <kaleshsingh@google.com>
2023-03-15 16:41:52 +00:00
Greg Kroah-Hartman
9154eb052f Revert "Revert "sched/psi: Stop relying on timer_pending() for poll_work rescheduling""
This reverts commit 02bdd918e6.  It was
perserving the ABI, but that is not needed anymore at this point in
time.

Change-Id: I486cebed8ec0f91985d117eed3e1069d6160e267
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2023-03-15 16:41:08 +00:00
Jaegeuk Kim
a0bdc392de Merge remote-tracking branch 'aosp/upstream-f2fs-stable-linux-6.1.y' into android14-6.1
* aosp/upstream-f2fs-stable-linux-6.1.y:
  fscrypt: support decrypting data from large folios
  fsverity: support verifying data from large folios
  fsverity.rst: update git repo URL for fsverity-utils
  ext4: allow verity with fs block size < PAGE_SIZE
  fs/buffer.c: support fsverity in block_read_full_folio()
  f2fs: simplify f2fs_readpage_limit()
  ext4: simplify ext4_readpage_limit()
  fsverity: support enabling with tree block size < PAGE_SIZE
  fsverity: support verification with tree block size < PAGE_SIZE
  fsverity: replace fsverity_hash_page() with fsverity_hash_block()
  fsverity: use EFBIG for file too large to enable verity
  fsverity: store log2(digest_size) precomputed
  fsverity: simplify Merkle tree readahead size calculation
  fsverity: use unsigned long for level_start
  fsverity: remove debug messages and CONFIG_FS_VERITY_DEBUG
  fsverity: pass pos and size to ->write_merkle_tree_block
  fsverity: optimize fsverity_cleanup_inode() on non-verity files
  fsverity: optimize fsverity_prepare_setattr() on non-verity files
  fsverity: optimize fsverity_file_open() on non-verity files
  fscrypt: clean up fscrypt_add_test_dummy_key()
  fs/super.c: stop calling fscrypt_destroy_keyring() from __put_super()
  f2fs: stop calling fscrypt_add_test_dummy_key()
  ext4: stop calling fscrypt_add_test_dummy_key()
  fscrypt: add the test dummy encryption key on-demand
  f2fs: drop unnecessary arg for f2fs_ioc_*()
  f2fs: Revert "f2fs: truncate blocks in batch in __complete_revoke_list()"
  f2fs: synchronize atomic write aborts
  f2fs: fix wrong segment count
  f2fs: replace si->sbi w/ sbi in stat_show()
  f2fs: export ipu policy in debugfs
  f2fs: make kobj_type structures constant
  f2fs: fix to do sanity check on extent cache correctly
  f2fs: add missing description for ipu_policy node
  f2fs: fix to set ipu policy
  f2fs: fix typos in comments
  f2fs: fix kernel crash due to null io->bio
  f2fs: use iostat_lat_type directly as a parameter in the iostat_update_and_unbind_ctx()
  f2fs: add sysfs nodes to set last_age_weight
  f2fs: fix f2fs_show_options to show nogc_merge mount option
  f2fs: fix cgroup writeback accounting with fs-layer encryption
  f2fs: fix wrong calculation of block age
  f2fs: fix to update age extent in f2fs_do_zero_range()
  f2fs: fix to update age extent correctly during truncation
  f2fs: fix to avoid potential memory corruption in __update_iostat_latency()
  f2fs: retry to update the inode page given data corruption
  f2fs: fix to handle F2FS_IOC_START_ATOMIC_REPLACE in f2fs_compat_ioctl()
  f2fs: clean up i_compress_flag and i_compress_level usage
  f2fs: reduce stack memory cost by using bitfield in struct f2fs_io_info
  f2fs: factor the read/write tracing logic into a helper
  f2fs: remove __has_curseg_space
  f2fs: refactor next blk selection
  f2fs: remove __allocate_new_section
  f2fs: refactor __allocate_new_segment
  f2fs: add a f2fs_curseg_valid_blocks helper
  f2fs: simplify do_checkpoint
  f2fs: remove __add_sum_entry
  f2fs: fix to abort atomic write only during do_exist()
  f2fs: allow set compression option of files without blocks
  f2fs: fix information leak in f2fs_move_inline_dirents()
  fs: f2fs: initialize fsdata in pagecache_write()
  f2fs: fix to check warm_data_age_threshold
  f2fs: return true if all cmd were issued or no cmd need to be issued for f2fs_issue_discard_timeout()
  f2fs: clarify compress level bit offset
  f2fs: fix to show discard_unit mount opt
  f2fs: fix to do sanity check on extent cache correctly
  f2fs: remove unneeded f2fs_cp_error() in f2fs_create_whiteout()
  f2fs: clear atomic_write_task in f2fs_abort_atomic_write()
  f2fs: introduce trace_f2fs_replace_atomic_write_block
  f2fs: introduce discard_io_aware_gran sysfs node
  f2fs: drop useless initializer and unneeded local variable
  f2fs: add iostat support for flush
  f2fs: support accounting iostat count and avg_bytes
  f2fs: convert discard_wake and gc_wake to bool type
  f2fs: convert to use MIN_DISCARD_GRANULARITY macro
  f2fs: merge f2fs_show_injection_info() into time_to_inject()
  f2fs: add a f2fs_ prefix to punch_hole() and expand_inode_data()
  f2fs: remove unnecessary blank lines
  f2fs: mark f2fs_init_compress_mempool w/ __init
  f2fs: judge whether discard_unit is section only when have CONFIG_BLK_DEV_ZONED
  f2fs: start freeing cluster pages from the unused number
  MAINTAINERS: Add f2fs's patchwork
  f2fs: deliver the accumulated 'issued' to __issue_discard_cmd_orderly()
  f2fs: avoid to check PG_error flag
  f2fs: add missing doc for fault injection sysfs
  f2fs: fix to avoid potential deadlock
  f2fs: introduce IS_F2FS_IPU_* macro
  f2fs: refactor the hole reporting and allocation logic in f2fs_map_blocks
  f2fs: factor out a f2fs_map_no_dnode
  f2fs: factor a f2fs_map_blocks_cached helper
  f2fs: remove the create argument to f2fs_map_blocks
  f2fs: remove f2fs_get_block
  docs: f2fs: fix html doc error
  f2fs: simplify __allocate_data_block
  f2fs: reflow prepare_write_begin
  f2fs: f2fs_do_map_lock
  f2fs: add a f2fs_get_block_locked helper
  f2fs: add a f2fs_lookup_extent_cache_block helper
  f2fs: split __submit_bio
  f2fs: rename F2FS_MAP_UNWRITTEN to F2FS_MAP_DELALLOC
  f2fs: decouple F2FS_MAP_ from buffer head flags
  f2fs: don't rely on F2FS_MAP_* in f2fs_iomap_begin
  f2fs: fix to call clear_page_private_reference in .{release,invalid}_folio
  f2fs: remove unused PAGE_PRIVATE_ATOMIC_WRITE
  f2fs: fix to support .migrate_folio for compressed inode
  f2fs: file: drop useless initializer in expand_inode_data()

Bug: 264705711
Bug: 269384820
Bug: 269593531
Change-Id: Ib84dc3389b6a06068a10d427c03f6dbc034831a6
Signed-off-by: Jaegeuk Kim <jaegeuk@google.com>
2023-03-15 09:35:23 -07:00
Todd Kjos
9733980ba7 ANDROID: update db845c symbol list
Update for recent changes to scsi/ufshcd

11 function symbol(s) added
  'int insert_resource(struct resource*, struct resource*)'
  'struct msi_desc* msi_first_desc(struct device*, enum msi_desc_filter)'
  'struct msi_desc* msi_next_desc(struct device*, enum msi_desc_filter)'
  'int remove_resource(struct resource*)'
  'void ufshcd_mcq_config_esi(struct ufs_hba*, struct msi_msg*)'
  'void ufshcd_mcq_enable_esi(struct ufs_hba*)'
  'unsigned long ufshcd_mcq_poll_cqe_nolock(struct ufs_hba*, struct ufs_hw_queue*)'
  'void ufshcd_mcq_write_cqis(struct ufs_hba*, u32, int)'
  'int ufshcd_system_freeze(struct device*)'
  'int ufshcd_system_restore(struct device*)'
  'int ufshcd_system_thaw(struct device*)'

function symbol 'struct scsi_device* __scsi_iterate_devices(struct Scsi_Host*, struct scsi_device*)' changed
  CRC changed from 0x103ea7e3 to 0x9039be7e

function symbol 'int scsi_autopm_get_device(struct scsi_device*)' changed
  CRC changed from 0xad35aadc to 0x88e729b3

function symbol 'void scsi_autopm_put_device(struct scsi_device*)' changed
  CRC changed from 0x12c1bce to 0x54fe744f

... 36 omitted; 39 symbols have only CRC changes

type 'struct ufs_hba' changed
  byte size changed from 4488 to 4800
  member 'u32 mcq_capabilities' was added
  3 members ('int nutmrs' .. 'u32 ufs_version') changed
    offset changed by 32
  member 'bool logical_unit_scan_finished' was added
  5 members ('u32 eh_flags' .. 'u16 ee_usr_mask') changed
    offset changed by 32
  3 members ('ktime_t last_dme_cmd_tstamp' .. 'struct ufs_dev_info dev_info') changed
    offset changed by 64
  11 members ('bool auto_bkops_enabled' .. 'struct ufs_clk_scaling clk_scaling') changed
    offset changed by 128
  member 'bool system_suspending' was added
  member 'bool is_sys_suspended' changed
    offset changed by 136
  4 members ('enum bkops_status urgent_bkops_lvl' .. 'struct rw_semaphore clk_scaling_lock') changed
    offset changed by 128
  member 'unsigned char desc_size[10]' was removed
  member 'atomic_t scsi_block_reqs_cnt' changed
    offset changed by 32
  12 members ('struct device bsg_dev' .. 'u32 luns_avail') changed
    offset changed by 64
  member 'unsigned int nr_hw_queues' was added
  member 'unsigned int nr_queues[3]' was added
  member 'bool complete_put' changed
    offset changed by 192
  member 'bool ext_iid_sup' was added
  member 'bool scsi_host_added' was added
  member 'bool mcq_sup' was added
  member 'bool mcq_enabled' was added
  member 'struct ufshcd_res_info res[7]' was added
  member 'void* mcq_base' was added
  member 'struct ufs_hw_queue* uhq' was added
  member 'struct ufs_hw_queue* dev_cmd_queue' was added
  member 'struct ufshcd_mcq_opr_info_t mcq_opr[4]' was added

type 'struct ufs_hba_variant_ops' changed
  byte size changed from 176 to 224
  member 'void(* reinit_notify)(struct ufs_hba*)' was added
  member 'int(* mcq_config_resource)(struct ufs_hba*)' was added
  member 'int(* get_hba_mac)(struct ufs_hba*)' was added
  member 'int(* op_runtime_config)(struct ufs_hba*)' was added
  member 'int(* get_outstanding_cqs)(struct ufs_hba*, unsigned long*)' was added
  member 'int(* config_esi)(struct ufs_hba*)' was added

type 'enum attr_idn' changed
  enumerator 'QUERY_ATTR_IDN_EXT_IID_EN' (42) was added

type 'struct scsi_host_template' changed
  member changed from 'enum blk_eh_timer_return(* eh_timed_out)(struct scsi_cmnd*)' to 'enum scsi_timeout_action(* eh_timed_out)(struct scsi_cmnd*)'
    type changed from 'enum blk_eh_timer_return(*)(struct scsi_cmnd*)' to 'enum scsi_timeout_action(*)(struct scsi_cmnd*)'
      pointed-to type changed from 'enum blk_eh_timer_return(struct scsi_cmnd*)' to 'enum scsi_timeout_action(struct scsi_cmnd*)'
        return type changed from 'enum blk_eh_timer_return' to 'enum scsi_timeout_action'

type 'struct ufs_dev_cmd' changed
  byte size changed from 104 to 112
  member 'struct cq_entry* cqe' was added

type 'struct ufs_dev_info' changed
  byte size changed from 32 to 40
  member 'u8 bqueuedepth' was added
  7 members ('bool hpb_enabled' .. 'u8 b_presrv_uspc_en') changed
    offset changed by 8
  member 'bool b_advanced_rpmb_en' was added
  member 'bool b_ext_iid_en' was added

type 'enum dev_cmd_type' changed
  enumerator 'DEV_CMD_TYPE_RPMB' (2) was added

Bug: 273322767
Change-Id: Id42d69756c884faa120f1206f2d70a8de5db6271
Signed-off-by: Todd Kjos <tkjos@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
e6efdc8f71 UPSTREAM: scsi: ufs: core: Simplify ufshcd_execute_start_stop()
Use scsi_execute_cmd() instead of open-coding it.

Link: https://lore.kernel.org/r/20230210193258.4004923-4-bvanassche@acm.org
Cc: Mike Christie <michael.christie@oracle.com>
Cc: John Garry <john.g.garry@oracle.com>
Change-Id: Idc2ba8563c6e922eed1111e8de08b09f150809fe
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Asutosh Das <quic_asutoshd@quicinc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 2702812ae3)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
ac666c99ee UPSTREAM: scsi: ufs: core: Rely on the block layer for setting RQF_PM
Do not set RQF_PM explicitly since scsi_alloc_request() sets it indirectly
if BLK_MQ_REQ_PM is set. The call chain for the code that sets RQF_PM is as
follows:

    scsi_alloc_request()
      blk_mq_alloc_request()
        __blk_mq_alloc_requests()
          blk_mq_rq_ctx_init()
            if (data->flags & BLK_MQ_REQ_PM)
              data->rq_flags |= RQF_PM;

Link: https://lore.kernel.org/r/20230210193258.4004923-3-bvanassche@acm.org
Cc: Mike Christie <michael.christie@oracle.com>
Cc: John Garry <john.g.garry@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Change-Id: Ia22b419fab491b2cd328e95ff3ff89050b98d360
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 93bc4a5d00)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Asutosh Das
b7b12c4376 UPSTREAM: scsi: ufs: mcq: Fix incorrectly set queue depth
ufshcd_config_mcq() may change the can_queue value. The current code
invokes scsi_add_host() before ufshcd_config_mcq() so the tags are
limited to the original can_queue value.

Fix this by invoking scsi_add_host() after ufshcd_config_mcq().

Link: https://lore.kernel.org/r/8840cea4a57b46dabce18acc39afc50ab826330f.1676567593.git.quic_asutoshd@quicinc.com
Fixes: 2468da61ea ("scsi: ufs: core: mcq: Configure operation and runtime interface")
Change-Id: Icf2e55c32d821124a0364f8121ba481188e8fefc
Signed-off-by: Asutosh Das <quic_asutoshd@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 2076f57f2c)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Yangtao Li
6b1ddf700e UPSTREAM: scsi: ufs: ufs-mediatek: Guard power management functions with CONFIG_PM
Fix the following compilation error when CONFIG_PM is set to 'n':

drivers/ufs/host/ufs-mediatek.c: In function `ufs_mtk_runtime_suspend`:
drivers/ufs/host/ufs-mediatek.c:1623:8: error: implicit declaration of
	function `ufshcd_runtime_suspend`; did you mean `ufs_mtk_runtime_suspend`?
	[-Werror=implicit-function-declaration]
 1623 |  ret = ufshcd_runtime_suspend(dev);
      |        ^~~~~~~~~~~~~~~~~~~~~~
      |        ufs_mtk_runtime_suspend
drivers/ufs/host/ufs-mediatek.c: In function `ufs_mtk_runtime_resume`:
drivers/ufs/host/ufs-mediatek.c:1638:9: error: implicit declaration of function
	`ufshcd_runtime_resume`; did you mean `ufs_mtk_runtime_resume`?
	[-Werror=implicit-function-declaration]
 1638 |  return ufshcd_runtime_resume(dev);
      |         ^~~~~~~~~~~~~~~~~~~~~
      |         ufs_mtk_runtime_resume
At top level:
drivers/ufs/host/ufs-mediatek.c:1632:12: error: `ufs_mtk_runtime_resume`
	defined but not used [-Werror=unused-function]
 1632 | static int ufs_mtk_runtime_resume(struct device *dev)
      |            ^~~~~~~~~~~~~~~~~~~~~~
drivers/ufs/host/ufs-mediatek.c:1618:12: error: `ufs_mtk_runtime_suspend`
	defined but not used [-Werror=unused-function]
 1618 | static int ufs_mtk_runtime_suspend(struct device *dev)

Link: https://lore.kernel.org/r/20230220142431.54589-1-frank.li@vivo.com
Reported-by: k2ci <kernel-bot@kylinos.cn>
Reported-by: Shida Zhang <zhangshida@kylinos.cn>
Change-Id: I422a92737f5dd14e07c018375afb66438385a0b1
Signed-off-by: Yangtao Li <frank.li@vivo.com>
Reviewed-by: Stanley Chu <stanley.chu@mediatek.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 19873b03f1)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Adrien Thierry
cb42f459a6 UPSTREAM: scsi: ufs: core: Initialize devfreq synchronously
During UFS initialization, devfreq initialization is asynchronous:
ufshcd_async_scan() calls ufshcd_add_lus(), which in turn initializes
devfreq for UFS. The simple ondemand governor is then loaded. If it is
built as a module, request_module() is called and throws a warning:

  WARNING: CPU: 7 PID: 167 at kernel/kmod.c:136 __request_module+0x1e0/0x460
  Modules linked in: crct10dif_ce llcc_qcom phy_qcom_qmp_usb ufs_qcom phy_qcom_snps_femto_v2 ufshcd_pltfrm phy_qcom_qmp_combo ufshcd_core phy_qcom_qmp_ufs qcom_wdt socinfo fuse ipv6
  CPU: 7 PID: 167 Comm: kworker/u16:3 Not tainted 6.2.0-rc6-00009-g58706f7fb045 #1
  Hardware name: Qualcomm SA8540P Ride (DT)
  Workqueue: events_unbound async_run_entry_fn
  pstate: 00400005 (nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
  pc : __request_module+0x1e0/0x460
  lr : __request_module+0x1d8/0x460
  sp : ffff800009323b90
  x29: ffff800009323b90 x28: 0000000000000000 x27: 0000000000000000
  x26: ffff800009323d50 x25: ffff7b9045f57810 x24: ffff7b9045f57830
  x23: ffffdc5a83e426e8 x22: ffffdc5ae80a9818 x21: 0000000000000001
  x20: ffffdc5ae7502f98 x19: ffff7b9045f57800 x18: ffffffffffffffff
  x17: 312f716572667665 x16: 642f7366752e3030 x15: 0000000000000000
  x14: 000000000000021c x13: 0000000000005400 x12: ffff7b9042ed7614
  x11: ffff7b9042ed7600 x10: 00000000636c0890 x9 : 0000000000000038
  x8 : ffff7b9045f2c880 x7 : ffff7b9045f57c68 x6 : 0000000000000080
  x5 : 0000000000000000 x4 : 8000000000000000 x3 : 0000000000000000
  x2 : 0000000000000000 x1 : ffffdc5ae5d382f0 x0 : 0000000000000001
  Call trace:
   __request_module+0x1e0/0x460
   try_then_request_governor+0x7c/0x100
   devfreq_add_device+0x4b0/0x5fc
   ufshcd_async_scan+0x1d4/0x310 [ufshcd_core]
   async_run_entry_fn+0x34/0xe0
   process_one_work+0x1d0/0x320
   worker_thread+0x14c/0x444
   kthread+0x10c/0x110
   ret_from_fork+0x10/0x20

This occurs because synchronous module loading from async is not
allowed. According to __request_module():

  /*
   * We don't allow synchronous module loading from async.  Module
   * init may invoke async_synchronize_full() which will end up
   * waiting for this task which already is waiting for the module
   * loading to complete, leading to a deadlock.
   */

Such a deadlock was experienced on the Qualcomm QDrive3/sa8540p-ride. With
DEVFREQ_GOV_SIMPLE_ONDEMAND=m, the boot hangs after the warning.

Fix both the warning and the deadlock by moving devfreq initialization out
of the async routine.

Tested on the sa8540p-ride by using fio to put the UFS under load, and
printing the trace generated by
/sys/kernel/tracing/events/ufs/ufshcd_clk_scaling events. The trace looks
similar with and without the change.

Link: https://lore.kernel.org/r/20230217194423.42553-1-athierry@redhat.com
Change-Id: I7fd8960cc6321c8572dba7a74d84d07f310d0573
Signed-off-by: Adrien Thierry <athierry@redhat.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 7dafc3e007)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
d33adeb677 UPSTREAM: scsi: ufs: Make the TC G210 driver dependent on CONFIG_OF
The TC G210 driver only supports devices declared in the device tree.
Hence make this driver dependent on CONFIG_OF. This patch fixes the
following compiler error:

drivers/ufs/host/tc-dwc-g210-pltfrm.c:36:34: error: ‘tc_dwc_g210_pltfm_match’ defined but not used [-Werror=unused-const-variable=]
   36 | static const struct of_device_id tc_dwc_g210_pltfm_match[] = {
      |

Link: https://lore.kernel.org/r/20230209184914.2762172-1-bvanassche@acm.org
Cc: Joao Pinto <jpinto@synopsys.com>
Change-Id: I6d353d0d32fe53f400e81422943145635f14e2cb
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Bean Huo <beanhuo@micron.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 473025a6b6)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Christophe JAILLET
300409ad8d UPSTREAM: scsi: ufs: core: Fix an error handling path in ufshcd_read_desc_param()
If an error occurs, some memory may need to be freed, as in the other error
handling paths.

Before the commit in the Fixes tag, this test was done before the memory
allocation, so there was no issue.

Fixes: 16ed9d312b ("scsi: ufs: core: Remove ufshcd_map_desc_id_to_length()")
Link: https://lore.kernel.org/r/2c6e42205e5ec22e5e8c7c85c6deb8fde31c74da.1673781835.git.christophe.jaillet@wanadoo.fr
Change-Id: Ic2c3b46ffaa34c43bb0440cccb57092cf7012566
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 833f7d4819)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
f98465ca0d UPSTREAM: scsi: ufs: core: Fix kernel-doc syntax
Fix the following kernel-doc warnings:

drivers/ufs/core/ufs-mcq.c:87: warning: Function parameter or member 'hba' not described in 'ufshcd_mcq_config_mac'
drivers/ufs/core/ufs-mcq.c:87: warning: Function parameter or member 'max_active_cmds' not described in 'ufshcd_mcq_config_mac'
drivers/ufs/core/ufs-mcq.c:107: warning: Function parameter or member 'hba' not described in 'ufshcd_mcq_req_to_hwq'
drivers/ufs/core/ufs-mcq.c:107: warning: Function parameter or member 'req' not described in 'ufshcd_mcq_req_to_hwq'
drivers/ufs/core/ufs-mcq.c:128: warning: Function parameter or member 'hba' not described in 'ufshcd_mcq_decide_queue_depth'

Link: https://lore.kernel.org/r/20230202220155.561115-1-bvanassche@acm.org
Fixes: 854f84e7fe ("scsi: ufs: core: mcq: Find hardware queue to queue request")
Fixes: 2468da61ea ("scsi: ufs: core: mcq: Configure operation and runtime interface")
Fixes: 7224c80687 ("scsi: ufs: core: mcq: Calculate queue depth")
Cc: Asutosh Das <quic_asutoshd@quicinc.com>
Change-Id: I3e93fb0a240940f3e0247859fa6e0ac2f3dba3c7
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Asutosh Das <quic_asutoshd@quicinc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit b62c8292d2)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Anjana Hari
34c3757473 UPSTREAM: scsi: ufs: core: Add hibernation callbacks
Add freeze, thaw, and restore callbacks for hibernate and restore
functionality.

Link: https://lore.kernel.org/r/20230202161045.3956-2-quic_ahari@quicinc.com
Change-Id: I20d0733c56b1e5e4fe60e435ced2213e66ffff9c
Signed-off-by: Anjana Hari <quic_ahari@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 88441a8d35)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bjorn Andersson
c09f6d36f9 UPSTREAM: scsi: ufs: core: Limit DMA alignment check
The three DMA memory regions allocated for the host memory space are
documented to require alignment of 128, 1024, and 1024 respectively, but
the returned address is checked for PAGE_SIZE alignment.

In the case where these allocations are serviced by e.g. the Arm SMMU, the
size and alignment will be determined by its supported page sizes. In most
cases SZ_4K and a few larger sizes are available.

In the typical configuration this does not cause problems, but in the event
that the system PAGE_SIZE is increased beyond 4k, it's no longer reasonable
to expect that the allocation will be PAGE_SIZE aligned.

Limit the DMA alignment check to the actual alignment requirements written
in the comments in the code, to avoid the UFS core refusing to initialize
with such configuration.

Link: https://lore.kernel.org/r/20230201034917.1902330-1-quic_bjorande@quicinc.com
Change-Id: I680d6d993b235ea2bc772265c8849aaea648d32b
Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Asutosh Das <quic_asutoshd@quicinc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 339aa12218)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Abel Vesa
23c802800c UPSTREAM: scsi: ufs: ufs-qcom: Clear qunipro_g4_sel for HW version major 5
On SM8550, depending on the Qunipro, we can run with G5 or G4.  For now,
when the major version is 5 or above, we go with G5.  Therefore, we need to
specifically tell UFS HC that.

Change-Id: I65ef6ac8de60f5c78e097e09cc5f1e4eab72a6bd
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 9c02aa24bf)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Arnd Bergmann
edc29b9891 UPSTREAM: scsi: ufs: qcom: fix platform_msi_domain_free_irqs() reference
The newly added MSI support is mostly hidden inside of an #ifdef,
except for one line that now causes a build failure when MSI
is disabled:

drivers/ufs/host/ufs-qcom.c: In function 'ufs_qcom_remove':
drivers/ufs/host/ufs-qcom.c:1698:9: error: implicit declaration of function 'platform_msi_domain_free_irqs' [-Werror=i]
 1698 |         platform_msi_domain_free_irqs(hba->dev);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Above that, the symbol that guards the other call was recently removed, so
that is all dead code at the moment.

Remove the incorrect #ifdef and instead of a Kconfig dependency to only
allow building the driver when CONFIG_GENERIC_MSI_IRQ is enabled. This
symbol is always present when PCI_MSI or ARM_GIC_V3_ITS are enabled, both
of which should be present on kernels that can run on Qualcomm SoCs.

The 'select RESET_CONTROLLER' in combination with this dependency
unfortunately causes a dependency loop and this is a user-visible symbol,
so it's better to change both to 'depends on'.

Link: https://lore.kernel.org/r/20230126211831.2274211-1-arnd@kernel.org
Fixes: 519b6274a7 ("scsi: ufs: qcom: Add MCQ ESI config vendor specific ops")
Fixes: 13e7accb81 ("genirq: Get rid of GENERIC_MSI_IRQ_DOMAIN")
Change-Id: Idb5afb5a8abac9091b621e61c20369dafb9c04d7
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Manivannan Sadhasivam <mani@kernel.org>
Acked-by: Can Guo <quic_cang@quicinc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 49f262bc3c)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
815c633905 UPSTREAM: scsi: core: Extend struct scsi_exec_args
Allow SCSI LLDs to specify SCMD_* flags.

Link: https://lore.kernel.org/r/20230210193258.4004923-2-bvanassche@acm.org
Cc: Mike Christie <michael.christie@oracle.com>
Cc: John Garry <john.g.garry@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Change-Id: I28215cedc9e4f5686d5f6ba802830bb12c144b51
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 35cd2f5542)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
fdfc5ffbe2 UPSTREAM: scsi: core: Remove scsi_execute_req()/scsi_execute() functions
scsi_execute() and scsi_execute_req() are no longer used so remove them.

Change-Id: I8173edc95f4771163ff2384d7905e35a74111f63
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 946a10511f)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
59c7d1f081 UPSTREAM: scsi: cxlflash: Convert to scsi_execute_cmd()
scsi_execute() is going to be removed. Convert cxlflash to use
scsi_execute_cmd().

[mkp: roll in fix for issue reported by sfr]

Change-Id: Id365f87ef9acc61930c782e0ed614f9ab9eec46a
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
(cherry picked from commit 1035c9893f)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
20048acc7b UPSTREAM: scsi: target: target_core_pscsi: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert pscsi to
scsi_execute_cmd().

Change-Id: I5136c1ec0394c9e4c361eb48fae3d1ad162d6097
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit e335795f27)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
9eba6a6249 UPSTREAM: scsi: virtio_scsi: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert virtio_scsi to
scsi_execute_cmd().

Change-Id: Icc3a3efedcdc2907628491a51dc2d5ee03b54c98
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 5314ce761f)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
ea6129a8ea UPSTREAM: scsi: sr: Convert to scsi_execute_cmd()
scsi_execute*() is going to be removed. Convert sr to scsi_execute_cmd().

Change-Id: I3049c213efafb6ca549013ca680d647c9939a7c0
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 49d33b6245)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
2c2df7e407 UPSTREAM: scsi: ses: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert ses to
scsi_execute_cmd().

Change-Id: I250f75f61f6393f10552b40d90c4fa1453b99e8a
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit ae4145a5f2)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
ae1dc46256 UPSTREAM: scsi: zbc: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Conver zbc to
scsi_execute_cmd().

Change-Id: Ie1dbd3aa3e703ee8ac570f5c91c5222bf9bb4355
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 6ff236e847)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
b99bb6eefb UPSTREAM: scsi: sd: Convert to scsi_execute_cmd()
scsi_execute*() is going to be removed. Convert sd_mod to use
scsi_execute_cmd().

Change-Id: Ib5c52dff6d96fb2e0d1355b4c1e0065e1b2bebeb
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit af16cd63d9)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
7634111c5e UPSTREAM: scsi: spi: Convert to scsi_execute_cmd()
scsi_execute() is going to be removed. Convert to the SPI class to
scsi_execute_cmd().

Change-Id: I4947e5681e82586206187f485d99384719dd67b3
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit c9ee828aad)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
2aafdd0d89 UPSTREAM: scsi: core: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert SCSI midlayer to
scsi_execute_cmd().

Change-Id: Ic2449be3b1c8ceae13c7913c717f380902f73150
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 7dfe0b5e7c)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
3f04bc3849 UPSTREAM: scsi: scsi_dh: Convert to scsi_execute_cmd()
scsi_execute() is going to be removed. Convert the scsi_dh users to
scsi_execute_cmd().

Change-Id: I9080a8ab101834f53cb77431449764ee44ec795b
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 31fc28c6b1)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
b752167797 UPSTREAM: scsi: ch: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert ch to
scsi_execute_cmd().

Change-Id: Ib984424642bc2681b1f28ee7fac7bded87bd276a
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit ed226f0889)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
dcef4680d3 UPSTREAM: scsi: hwmon: drivetemp: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert drivetemp to
scsi_execute_cmd().

Change-Id: Ic05a172417073f58077e6a0bea6e510dfae1b168
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 08e95a2ba4)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
fe9eed5348 UPSTREAM: scsi: ata: libata-scsi: Convert to scsi_execute_cmd()
scsi_execute_req() is going to be removed. Convert libata to
scsi_execute_cmd().

Change-Id: I19dec745ab9708ff43943324c49dafdf95873725
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 5fa7b07267)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Mike Christie
ea120395be UPSTREAM: scsi: core: Add struct for args to execution functions
Move the SCSI execution functions to use a struct for passing in optional
args. This commit adds the new struct, temporarily converts scsi_execute()
and scsi_execute_req() ands a new helper, scsi_execute_cmd(), which takes
the scsi_exec_args struct.

There should be no change in behavior. We no longer allow users to pass in
any request->rq_flags value, but they were only passing in RQF_PM which we
do support by allowing users to pass in the BLK_MQ_REQ flags used by
blk_mq_alloc_request().

Subsequent commits will convert scsi_execute() and scsi_execute_req() users
to the new helpers then remove scsi_execute() and scsi_execute_req().

Change-Id: I56d96a1c376734d623bc203b33fb62fc3b7a3202
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit d094956581)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
84de8ae1a8 UPSTREAM: scsi: core: Fix the scsi_device_put() might_sleep annotation
Although most calls of scsi_device_put() happen from non-atomic context,
alua_rtpg_queue() calls this function from atomic context if
alua_rtpg_queue() itself is called from atomic context. alua_rtpg_queue()
is always called from contexts where the caller must hold at least one
reference to the scsi device in question. This means that the reference
taken by alua_rtpg_queue() itself can't be the last one, and thus can be
dropped without entering the code path in which scsi_device_put() might
actually sleep. Hence move the might_sleep() annotation from
scsi_device_put() into scsi_device_dev_release().

[1] https://lore.kernel.org/linux-scsi/b49e37d5-edfb-4c56-3eeb-62c7d5855c00@linux.ibm.com/
[2] https://lore.kernel.org/linux-scsi/55c35e64-a7d4-9072-46fd-e8eae6a90e96@linux.ibm.com/

Note: a significant part of the above description was written by Martin
Wilck.

Fixes: f93ed747e2 ("scsi: core: Release SCSI devices synchronously")
Cc: Martin Wilck <mwilck@suse.com>
Cc: Steffen Maier <maier@linux.ibm.com>
Cc: Hannes Reinecke <hare@suse.de>
Cc: Sachin Sant <sachinp@linux.ibm.com>
Cc: Benjamin Block <bblock@linux.ibm.com>
Reported-by: Steffen Maier <maier@linux.ibm.com>
Change-Id: I3a53ed24429080c2a31fed8394e2c4be52f33da9
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Martin Wilck <mwilck@suse.com>
Link: https://lore.kernel.org/r/20230125194311.249553-1-bvanassche@acm.org
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 2542fc9578)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Hannes Reinecke
c95e163e13 UPSTREAM: scsi: core: scsi_error: Do not queue pointless abort workqueue functions
If a host template doesn't implement the .eh_abort_handler() there is no
point in queueing the abort workqueue function; all it does is invoking
SCSI EH anyway.  So return 'FAILED' from scsi_abort_command() if the
.eh_abort_handler() is not implemented and save us from having to wait for
the abort workqueue function to complete.

Cc: Niklas Cassel <niklas.cassel@wdc.com>
Cc: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Cc: John Garry <john.g.garry@oracle.com>
Change-Id: Ia59f44ad16e2bb28d7dea7226b3b9ca2988e8dcf
Signed-off-by: Hannes Reinecke <hare@suse.de>
[niklas: moved the check to the top of scsi_abort_command()]
Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Link: https://lore.kernel.org/r/20221206131346.2045375-1-niklas.cassel@wdc.com
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit d0b9025540)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
dd16d98234 ANDROID: scsi: ufs: Enable CONFIG_SCSI_UFS_VARIABLE_SG_ENTRY_SIZE if encryption is enabled
CONFIG_SCSI_UFS_VARIABLE_SG_ENTRY_SIZE must be enabled for both
CONFIG_SCSI_UFS_EXYNOS and CONFIG_SCSI_UFS_EXYNOS_GS. Since there is
no CONFIG_SCSI_UFS_EXYNOS_GS symbol in this kernel tree, make
CONFIG_SCSI_UFS_VARIABLE_SG_ENTRY_SIZE independent of the Exynos driver.

This patch is the android14-6.1 equivalent of
https://partner-android-review.git.corp.google.com/c/kernel/common/+/2378527.

Bug: 267974767
Change-Id: I41381e1ad9c5599ba4512f6a9a2cca064bac0ee0
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
fde3e2d751 FROMGIT: scsi: ufs: core: Enable DMA clustering
All UFS host controllers support DMA clustering. Hence enable DMA
clustering.

Notes:

 - The max_segment_size parameter implements the 256 KiB limit for the
   PRDT. The dma_boundary parameter represents a boundary that must not be
   crossed by DMA scatter/gather lists. I'm not aware of any restrictions
   on DMA scatter/gather lists in the UFSHCI specification other than the
   256 KiB limit for the PRDT and the 32-bit address restriction for
   controllers that only support 32-bits DMA. The latter restriction is
   already handled by ufshcd_set_dma_mask().

 - Without patch "scsi: ufs: exynos: Fix the maximum segment size", this
   patch breaks support for the Exynos controller.

The history of the dma_boundary parameter in the UFS driver is as
follows:

 * The initial UFS driver did not set the dma_boundary parameter.

 * Commit 4dd4130a72 ("scsi: make sure all drivers set the use_clustering
   flag") set the .use_clustering flag.

 * Commit 4af14d113b ("scsi: remove the use_clustering flag") removed the
   use_clustering flag and set the dma_boundary parameter instead.

Cc: Avri Altman <avri.altman@wdc.com>
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Kiwoong Kim <kwmad.kim@samsung.com>
Change-Id: I5e002e7254146789f8bb373644f08f9b6e6dd86f
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 13f87983fb git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Bart Van Assche
edb93849ed FROMGIT: scsi: ufs: exynos: Fix the maximum segment size
Prepare for enabling DMA clustering and also for supporting PAGE_SIZE !=
4096 by declaring explicitly that the maximum segment size is 4096 bytes
for Exynos UFS host controllers. Add this code in
exynos_ufs_hce_enable_notify() such that it happens after scsi_host_alloc()
and before __scsi_init_queue() is called by the LUN scanning code.

Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Kiwoong Kim <kwmad.kim@samsung.com>
Change-Id: I60c24ba2f1b6610df2de775021b94543d890d640
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Tested-by: Alim Akhtar <alim.akhtar@samsung.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 9a80bc5deb git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Alim Akhtar
f327d54c2f FROMGIT: scsi: ufs: ufs: Remove duplicate entry
PA_GRANULARITY is duplicated, delete one of the entries.

Change-Id: I1ac57fdd497b8e820328ebb5fdc7f08f081d3fa2
Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Link: https://lore.kernel.org/r/20230114022010.27088-1-alim.akhtar@samsung.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 3730bea883 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Can Guo
458a5c67c5 FROMGIT: scsi: ufs: qcom: Add MCQ ESI config vendor specific ops
Add MCQ ESI config vendor specific ops.

Co-developed-by: Asutosh Das <quic_asutoshd@quicinc.com>
Change-Id: Id4bd28905b00265ef2353d567bc7e1ca70571dc5
Signed-off-by: Asutosh Das <quic_asutoshd@quicinc.com>
Signed-off-by: Can Guo <quic_cang@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit 519b6274a7 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Can Guo
4437b0dc47 FROMGIT: scsi: ufs: core: mcq: Add Event Specific Interrupt enable and config functions
Add and export two functions to enable ESI and config ESI base addresses.
The calls to these exported functions will be added by the next patch in
this series.

Change-Id: I5f16934fb2c6be9ae3977f177e443b2a83616a27
Signed-off-by: Can Guo <quic_cang@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit e02288e026 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00
Can Guo
bd3ef04cb5 FROMGIT: scsi: ufs: core: Add Event Specific Interrupt configuration vendor specific ops
As Event Specific Interrupt message format is not defined in UFSHCI JEDEC
specs, and the ESI handling highly depends on how the format is designed,
hence add a vendor specific ops such that SoC vendors can configure their
own ESI handlers. If ESI vops is not provided or returning error, go with
the legacy (central) interrupt way.

Change-Id: I55ac0ce9921476f7c21f7e370692d8bca62fd9e3
Signed-off-by: Can Guo <quic_cang@quicinc.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Bug: 267974767
(cherry picked from commit edb0db0560 git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git for-next)
Signed-off-by: Bart Van Assche <bvanassche@google.com>
2023-03-15 16:17:14 +00:00