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:
commit
ca99e36dea
@ -1 +1 @@
|
|||||||
LTS_5.4.254_d43ac48de222
|
LTS_5.4.259_81334f26ac70
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -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
|
||||||
|
@ -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
|
||||||
|
3
arch/arm/configs/vendor/sdxlemur.config
vendored
3
arch/arm/configs/vendor/sdxlemur.config
vendored
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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));
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user