Merge tag 'android14-6.1-2023-11_r1' of https://android.googlesource.com/kernel/common

* commit 'android14-6.1-2023-11_r1': (3456 commits)
  ANDROID: fs/passthrough: Fix compatibility with R/O file system
  FROMLIST: usb: typec: tcpm: Fix sink caps op current check
  UPSTREAM: scsi: ufs: core: Add advanced RPMB support where UFSHCI 4.0 does not support EHS length in UTRD
  ANDROID: ABI: Update symbol list for MediatTek
  ANDROID: vendor_hooks: Add hook for mmc queue
  Revert "proc: allow pid_revalidate() during LOOKUP_RCU"
  UPSTREAM: scsi: ufs: ufs-qcom: Clear qunipro_g4_sel for HW major version > 5
  ANDROID: GKI: Update symbols to symbol list
  ANDROID: vendor_hook: Add hook to tune readaround size
  ANDROID: add for tuning readahead size
  ANDROID: vendor_hooks: Add hooks to avoid key threads stalled in memory allocations
  ANDROID: GKI: Update oplus symbol list
  ANDROID: vendor_hooks: add hooks for adjust kvmalloc_node alloc_flags
  UPSTREAM: netfilter: ipset: add the missing IP_SET_HASH_WITH_NET0 macro for ip_set_hash_netportnet.c
  ANDROID: ABI: Update symbol list for imx
  ANDROID: abi_gki_aarch64_qcom: Add __netif_rx
  ANDROID: ABI: Update sony symbol list and stg
  ANDROID: mmc: Add vendor hooks for sdcard failure diagnostics
  ANDROID: Update symbol list for mtk
  UPSTREAM: scsi: ufs: mcq: Fix the search/wrap around logic
  ...

Change-Id: I068babc9a4a733e7cff2e6be0620be36fbbee5a8

Conflicts:
	arch/arm64/boot/dts/rockchip/rk3568.dtsi
	arch/arm64/boot/dts/rockchip/rk356x.dtsi
	drivers/dma/pl330.c
	drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
	drivers/gpu/drm/rockchip/rockchip_drm_vop.c
	drivers/mmc/core/card.h
	drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c
	drivers/nvme/host/nvme.h
	drivers/pci/controller/pcie-rockchip.c
	drivers/power/supply/rk817_charger.c
	drivers/tty/serial/8250/8250_port.c
	drivers/usb/gadget/function/f_uvc.c
	drivers/usb/host/xhci.h
	drivers/usb/typec/tcpm/tcpm.c
This commit is contained in:
Tao Huang
2023-12-01 19:41:50 +08:00
2896 changed files with 40150 additions and 22918 deletions

View File

@@ -706,12 +706,17 @@ static void clear_work_data(struct work_struct *work)
set_work_data(work, WORK_STRUCT_NO_POOL, 0);
}
static inline struct pool_workqueue *work_struct_pwq(unsigned long data)
{
return (struct pool_workqueue *)(data & WORK_STRUCT_WQ_DATA_MASK);
}
static struct pool_workqueue *get_work_pwq(struct work_struct *work)
{
unsigned long data = atomic_long_read(&work->data);
if (data & WORK_STRUCT_PWQ)
return (void *)(data & WORK_STRUCT_WQ_DATA_MASK);
return work_struct_pwq(data);
else
return NULL;
}
@@ -739,8 +744,7 @@ static struct worker_pool *get_work_pool(struct work_struct *work)
assert_rcu_or_pool_mutex();
if (data & WORK_STRUCT_PWQ)
return ((struct pool_workqueue *)
(data & WORK_STRUCT_WQ_DATA_MASK))->pool;
return work_struct_pwq(data)->pool;
pool_id = data >> WORK_OFFQ_POOL_SHIFT;
if (pool_id == WORK_OFFQ_POOL_NONE)
@@ -761,8 +765,7 @@ static int get_work_pool_id(struct work_struct *work)
unsigned long data = atomic_long_read(&work->data);
if (data & WORK_STRUCT_PWQ)
return ((struct pool_workqueue *)
(data & WORK_STRUCT_WQ_DATA_MASK))->pool->id;
return work_struct_pwq(data)->pool->id;
return data >> WORK_OFFQ_POOL_SHIFT;
}
@@ -4867,10 +4870,16 @@ static void show_one_worker_pool(struct worker_pool *pool)
struct worker *worker;
bool first = true;
unsigned long flags;
unsigned long hung = 0;
raw_spin_lock_irqsave(&pool->lock, flags);
if (pool->nr_workers == pool->nr_idle)
goto next_pool;
/* How long the first pending work is waiting for a worker. */
if (!list_empty(&pool->worklist))
hung = jiffies_to_msecs(jiffies - pool->watchdog_ts) / 1000;
/*
* Defer printing to avoid deadlocks in console drivers that
* queue work while holding locks also taken in their write
@@ -4879,9 +4888,7 @@ static void show_one_worker_pool(struct worker_pool *pool)
printk_deferred_enter();
pr_info("pool %d:", pool->id);
pr_cont_pool_info(pool);
pr_cont(" hung=%us workers=%d",
jiffies_to_msecs(jiffies - pool->watchdog_ts) / 1000,
pool->nr_workers);
pr_cont(" hung=%lus workers=%d", hung, pool->nr_workers);
if (pool->manager)
pr_cont(" manager: %d",
task_pid_nr(pool->manager->task));