Merge tag 'LA.UM.9.14.r1-23800-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4 into android13-5.4-lahaina

"LA.UM.9.14.r1-23800-LAHAINA.QSSI14.0"

* tag 'LA.UM.9.14.r1-23800-LAHAINA.QSSI14.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4:
  qcom-dload-mode: Convert reboot notifier to restart notifier
  defconfig: sdxlemur: Enable minidump for sdxlemur
  soc: qcom: Don't print thread info for arm arch
  soc: qcom: dcc_v2: Fix slab-out-of-bounds issue in dcc driver
  rpmsg: slatecom: Discard unaligned packet to read
  soc: qcom: peripheral-loader: Add KPI marker
  input: misc: Validate input pattern count in pattern_s_dbgfs_write
  BACKPORT: media: venus: hfi: fix the check in session buffer requirement
  BACKPORT: media: venus: hfi: add checks to perform sanity on queue pointers
  net: qrtr: smd: kfree svc_arr after use

 Conflicts:
	drivers/devfreq/devfreq.c
	drivers/rpmsg/qcom_glink_slatecom.c
	include/net/tcp.h

Change-Id: If26696f886bf78d4d77e36a7266fabc0ceba7a85
This commit is contained in:
Michael Bestas 2024-02-09 00:36:24 +02:00
commit ca99e36dea
No known key found for this signature in database
GPG Key ID: CC95044519BE6669
15 changed files with 4354 additions and 5366 deletions

View File

@ -1 +1 @@
LTS_5.4.254_d43ac48de222 LTS_5.4.259_81334f26ac70

View File

@ -2062,6 +2062,7 @@
rpmsg_set_signals rpmsg_set_signals
rpmsg_trysend rpmsg_trysend
rpmsg_unregister_device rpmsg_unregister_device
rpmsg_register_device_override
rtc_add_group rtc_add_group
rtc_class_close rtc_class_close
rtc_class_open rtc_class_open

View File

@ -38,3 +38,4 @@ CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_DEBUG_CREDENTIALS=y CONFIG_DEBUG_CREDENTIALS=y
CONFIG_QCOM_MEMORY_DUMP_V2=y CONFIG_QCOM_MEMORY_DUMP_V2=y
CONFIG_LKDTM=m CONFIG_LKDTM=m
CONFIG_SLUB_DEBUG=y

View File

@ -350,6 +350,8 @@ CONFIG_POWER_RESET_QCOM_DOWNLOAD_MODE_DEFAULT=y
CONFIG_POWER_RESET_QCOM_REBOOT_REASON=y CONFIG_POWER_RESET_QCOM_REBOOT_REASON=y
CONFIG_POWER_RESET_MSM=y CONFIG_POWER_RESET_MSM=y
CONFIG_QCOM_MINIDUMP=y CONFIG_QCOM_MINIDUMP=y
CONFIG_QCOM_MINIDUMP_FTRACE=y
CONFIG_QCOM_MINIDUMP_PANIC_DUMP=y
CONFIG_ENABLE_SFE=y CONFIG_ENABLE_SFE=y
# CONFIG_ENABLE_VMALLOC_SAVING is not set # CONFIG_ENABLE_VMALLOC_SAVING is not set
# CONFIG_SLUB_DEBUG is not set # CONFIG_SLUB_DEBUG is not set
@ -510,3 +512,4 @@ CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder" CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
# CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set # CONFIG_ANDROID_BINDER_IPC_SELFTEST is not set
CONFIG_IPC_LOG_MINIDUMP_BUFFERS=16

View File

@ -595,8 +595,8 @@ static void devfreq_dev_release(struct device *dev)
devfreq->profile->exit(devfreq->dev.parent); devfreq->profile->exit(devfreq->dev.parent);
mutex_destroy(&devfreq->lock); mutex_destroy(&devfreq->lock);
srcu_cleanup_notifier_head(&devfreq->transition_notifier_list);
event_mutex_destroy(devfreq); event_mutex_destroy(devfreq);
srcu_cleanup_notifier_head(&devfreq->transition_notifier_list);
kfree(devfreq); kfree(devfreq);
} }

View File

@ -1229,6 +1229,7 @@ static void qcom_scm_shutdown(struct platform_device *pdev)
{ {
qcom_scm_disable_sdi(); qcom_scm_disable_sdi();
qcom_scm_halt_spmi_pmic_arbiter(); qcom_scm_halt_spmi_pmic_arbiter();
/* Clean shutdown, disable download mode to allow normal restart */
qcom_scm_set_download_mode(QCOM_DOWNLOAD_NODUMP, 0); qcom_scm_set_download_mode(QCOM_DOWNLOAD_NODUMP, 0);
} }

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2022-2023, Qualcomm Innovation Center, Inc. All rights reserved.
*/ */
#include <linux/atomic.h> #include <linux/atomic.h>
@ -3035,6 +3035,11 @@ static ssize_t pattern_s_dbgfs_write(struct file *fp,
goto exit; goto exit;
} }
if (i >= ARRAY_SIZE(tmp)) {
pr_err("too many patterns in input string\n");
rc = -EINVAL;
goto exit;
}
tmp[i++] = val; tmp[i++] = val;
} }

View File

@ -24,7 +24,7 @@ enum qcom_download_dest {
struct qcom_dload { struct qcom_dload {
struct notifier_block panic_nb; struct notifier_block panic_nb;
struct notifier_block reboot_nb; struct notifier_block restart_nb;
struct kobject kobj; struct kobject kobj;
bool in_panic; bool in_panic;
@ -251,28 +251,15 @@ static int qcom_dload_panic(struct notifier_block *this, unsigned long event,
return NOTIFY_OK; return NOTIFY_OK;
} }
static int qcom_dload_reboot(struct notifier_block *this, unsigned long event, static int qcom_dload_restart(struct notifier_block *this, unsigned long event,
void *ptr) void *ptr)
{ {
char *cmd = ptr; char *cmd = ptr;
struct qcom_dload *poweroff = container_of(this, struct qcom_dload,
reboot_nb);
/* Clean shutdown, disable dump mode to allow normal restart */ if (cmd && !strcmp(cmd, "edl")) {
if (!poweroff->in_panic) set_download_mode(QCOM_DOWNLOAD_EDL);
set_download_mode(QCOM_DOWNLOAD_NODUMP);
if (cmd) {
if (!strcmp(cmd, "edl")) {
early_pcie_init_enable ? set_download_mode(QCOM_EDLOAD_PCI_MODE)
: set_download_mode(QCOM_DOWNLOAD_EDL);
}
else if (!strcmp(cmd, "qcom_dload"))
msm_enable_dump_mode(true);
}
if (current_download_mode != QCOM_DOWNLOAD_NODUMP)
reboot_mode = REBOOT_WARM; reboot_mode = REBOOT_WARM;
}
return NOTIFY_OK; return NOTIFY_OK;
} }
@ -381,9 +368,14 @@ static int qcom_dload_probe(struct platform_device *pdev)
atomic_notifier_chain_register(&panic_notifier_list, atomic_notifier_chain_register(&panic_notifier_list,
&poweroff->panic_nb); &poweroff->panic_nb);
poweroff->reboot_nb.notifier_call = qcom_dload_reboot; poweroff->restart_nb.notifier_call = qcom_dload_restart;
poweroff->reboot_nb.priority = 255; /* Here, Restart handler priority should be higher than
register_reboot_notifier(&poweroff->reboot_nb); * of restart handler present in scm driver so that
* reboot_mode set by this handler seen by SCM's one
* for EDL mode.
*/
poweroff->restart_nb.priority = 131;
register_restart_handler(&poweroff->restart_nb);
platform_set_drvdata(pdev, poweroff); platform_set_drvdata(pdev, poweroff);
@ -396,7 +388,7 @@ static int qcom_dload_remove(struct platform_device *pdev)
atomic_notifier_chain_unregister(&panic_notifier_list, atomic_notifier_chain_unregister(&panic_notifier_list,
&poweroff->panic_nb); &poweroff->panic_nb);
unregister_reboot_notifier(&poweroff->reboot_nb); unregister_restart_handler(&poweroff->restart_nb);
if (poweroff->dload_dest_addr) if (poweroff->dload_dest_addr)
iounmap(poweroff->dload_dest_addr); iounmap(poweroff->dload_dest_addr);

View File

@ -612,7 +612,7 @@ static bool is_dcc_enabled(struct dcc_drvdata *drvdata)
bool dcc_enable = false; bool dcc_enable = false;
int list; int list;
for (list = 0; list < DCC_MAX_LINK_LIST; list++) { for (list = 0; list < drvdata->nr_link_list; list++) {
if (drvdata->enable[list]) { if (drvdata->enable[list]) {
dcc_enable = true; dcc_enable = true;
break; break;

View File

@ -656,10 +656,16 @@ static void md_dump_task_info(struct task_struct *task, char *status,
se = &task->se; se = &task->se;
if (task == curr) { if (task == curr) {
#ifdef CONFIG_ARM64
seq_buf_printf(md_runq_seq_buf, seq_buf_printf(md_runq_seq_buf,
"[status: curr] pid: %d comm: %s preempt: %#x\n", "[status: curr] pid: %d comm: %s preempt: %#x\n",
task_pid_nr(task), task->comm, task_pid_nr(task), task->comm,
task->thread_info.preempt_count); task->thread_info.preempt_count);
#else
seq_buf_printf(md_runq_seq_buf,
"[status: curr] pid: %d comm: %s\n",
task_pid_nr(task), task->comm);
#endif
return; return;
} }

View File

@ -383,6 +383,10 @@ static int pil_do_minidump(struct pil_desc *desc, void *ramdump_dev)
pil_err(desc, "%s: Minidump collection failed for subsys %s rc:%d\n", pil_err(desc, "%s: Minidump collection failed for subsys %s rc:%d\n",
__func__, desc->name, ret); __func__, desc->name, ret);
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
if (!strcmp(desc->name, "modem"))
update_marker("M - Modem Dump completed");
#endif
if (desc->subsys_vmid > 0) if (desc->subsys_vmid > 0)
ret = pil_assign_mem_to_subsys(desc, priv->region_start, ret = pil_assign_mem_to_subsys(desc, priv->region_start,
(priv->region_end - priv->region_start)); (priv->region_end - priv->region_start));

View File

@ -362,6 +362,7 @@ extern int tcp_proc_delayed_ack_control(struct ctl_table *table, int write,
void __user *buffer, size_t *length, void __user *buffer, size_t *length,
loff_t *ppos); loff_t *ppos);
void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks);
static inline void tcp_dec_quickack_mode(struct sock *sk) static inline void tcp_dec_quickack_mode(struct sock *sk)
{ {
struct inet_connection_sock *icsk = inet_csk(sk); struct inet_connection_sock *icsk = inet_csk(sk);

View File

@ -236,7 +236,7 @@ static void tcp_incr_quickack(struct sock *sk, unsigned int max_quickacks)
icsk->icsk_ack.quick = quickacks; icsk->icsk_ack.quick = quickacks;
} }
static void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks) void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks)
{ {
struct inet_connection_sock *icsk = inet_csk(sk); struct inet_connection_sock *icsk = inet_csk(sk);

View File

@ -93,6 +93,7 @@ static int qcom_smd_qrtr_probe(struct rpmsg_device *rpdev)
svc_arr, size); svc_arr, size);
} }
rc = qrtr_endpoint_register(&qdev->ep, net_id, rt, svc_arr); rc = qrtr_endpoint_register(&qdev->ep, net_id, rt, svc_arr);
kfree(svc_arr);
if (rc) if (rc)
return rc; return rc;