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_trysend
rpmsg_unregister_device
rpmsg_register_device_override
rtc_add_group
rtc_class_close
rtc_class_open

View File

@ -38,3 +38,4 @@ CONFIG_BUG_ON_DATA_CORRUPTION=y
CONFIG_DEBUG_CREDENTIALS=y
CONFIG_QCOM_MEMORY_DUMP_V2=y
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_MSM=y
CONFIG_QCOM_MINIDUMP=y
CONFIG_QCOM_MINIDUMP_FTRACE=y
CONFIG_QCOM_MINIDUMP_PANIC_DUMP=y
CONFIG_ENABLE_SFE=y
# CONFIG_ENABLE_VMALLOC_SAVING is not set
# CONFIG_SLUB_DEBUG is not set
@ -510,3 +512,4 @@ CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDERFS=y
CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
# 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);
mutex_destroy(&devfreq->lock);
srcu_cleanup_notifier_head(&devfreq->transition_notifier_list);
event_mutex_destroy(devfreq);
srcu_cleanup_notifier_head(&devfreq->transition_notifier_list);
kfree(devfreq);
}

View File

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

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* 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>
@ -3035,6 +3035,11 @@ static ssize_t pattern_s_dbgfs_write(struct file *fp,
goto exit;
}
if (i >= ARRAY_SIZE(tmp)) {
pr_err("too many patterns in input string\n");
rc = -EINVAL;
goto exit;
}
tmp[i++] = val;
}

View File

@ -24,7 +24,7 @@ enum qcom_download_dest {
struct qcom_dload {
struct notifier_block panic_nb;
struct notifier_block reboot_nb;
struct notifier_block restart_nb;
struct kobject kobj;
bool in_panic;
@ -251,28 +251,15 @@ static int qcom_dload_panic(struct notifier_block *this, unsigned long event,
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)
{
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 (!poweroff->in_panic)
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)
if (cmd && !strcmp(cmd, "edl")) {
set_download_mode(QCOM_DOWNLOAD_EDL);
reboot_mode = REBOOT_WARM;
}
return NOTIFY_OK;
}
@ -381,9 +368,14 @@ static int qcom_dload_probe(struct platform_device *pdev)
atomic_notifier_chain_register(&panic_notifier_list,
&poweroff->panic_nb);
poweroff->reboot_nb.notifier_call = qcom_dload_reboot;
poweroff->reboot_nb.priority = 255;
register_reboot_notifier(&poweroff->reboot_nb);
poweroff->restart_nb.notifier_call = qcom_dload_restart;
/* Here, Restart handler priority should be higher than
* 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);
@ -396,7 +388,7 @@ static int qcom_dload_remove(struct platform_device *pdev)
atomic_notifier_chain_unregister(&panic_notifier_list,
&poweroff->panic_nb);
unregister_reboot_notifier(&poweroff->reboot_nb);
unregister_restart_handler(&poweroff->restart_nb);
if (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;
int list;
for (list = 0; list < DCC_MAX_LINK_LIST; list++) {
for (list = 0; list < drvdata->nr_link_list; list++) {
if (drvdata->enable[list]) {
dcc_enable = true;
break;

View File

@ -656,10 +656,16 @@ static void md_dump_task_info(struct task_struct *task, char *status,
se = &task->se;
if (task == curr) {
#ifdef CONFIG_ARM64
seq_buf_printf(md_runq_seq_buf,
"[status: curr] pid: %d comm: %s preempt: %#x\n",
task_pid_nr(task), task->comm,
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;
}

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",
__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)
ret = pil_assign_mem_to_subsys(desc, 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,
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)
{
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;
}
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);

View File

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