Merge "Merge 301c6b0cba on remote branch" into kernel.lnx.5.4.r1-rel

This commit is contained in:
Linux Build Service Account 2024-02-14 02:19:13 -08:00 committed by Gerrit - the friendly Code Review server
commit d4eac70ee3
12 changed files with 1208 additions and 341 deletions

View File

@ -1 +1 @@
LTS_5.4.259_81334f26ac70
LTS_5.4.259_70db018a109

View File

@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/*
@ -510,6 +510,8 @@ static int drawobj_add_sync_timeline(struct kgsl_device *device,
/* Set pending flag before adding callback to avoid race */
set_bit(event->id, &syncobj->pending);
/* Get a dma_fence refcount to hand over to the callback */
dma_fence_get(event->fence);
ret = dma_fence_add_callback(event->fence,
&event->cb, drawobj_sync_timeline_fence_callback);
@ -522,11 +524,16 @@ static int drawobj_add_sync_timeline(struct kgsl_device *device,
ret = 0;
}
/* Put the refcount from fence creation */
dma_fence_put(event->fence);
kgsl_drawobj_put(drawobj);
return ret;
}
trace_syncpoint_timeline_fence(event->syncobj, event->fence, false);
/* Put the refcount from fence creation */
dma_fence_put(event->fence);
return 0;
}

View File

@ -321,6 +321,15 @@ static void nvmet_tcp_fatal_error(struct nvmet_tcp_queue *queue)
kernel_sock_shutdown(queue->sock, SHUT_RDWR);
}
static void nvmet_tcp_socket_error(struct nvmet_tcp_queue *queue, int status)
{
queue->rcv_state = NVMET_TCP_RECV_ERR;
if (status == -EPIPE || status == -ECONNRESET)
kernel_sock_shutdown(queue->sock, SHUT_RDWR);
else
nvmet_tcp_fatal_error(queue);
}
static int nvmet_tcp_map_data(struct nvmet_tcp_cmd *cmd)
{
struct nvme_sgl_desc *sgl = &cmd->req.cmd->common.dptr.sgl;
@ -714,11 +723,15 @@ static int nvmet_tcp_try_send(struct nvmet_tcp_queue *queue,
for (i = 0; i < budget; i++) {
ret = nvmet_tcp_try_send_one(queue, i == budget - 1);
if (ret <= 0)
if (unlikely(ret < 0)) {
nvmet_tcp_socket_error(queue, ret);
goto done;
} else if (ret == 0) {
break;
}
(*sends)++;
}
done:
return ret;
}
@ -816,15 +829,11 @@ static int nvmet_tcp_handle_icreq(struct nvmet_tcp_queue *queue)
iov.iov_len = sizeof(*icresp);
ret = kernel_sendmsg(queue->sock, &msg, &iov, 1, iov.iov_len);
if (ret < 0)
goto free_crypto;
return ret; /* queue removal will cleanup */
queue->state = NVMET_TCP_Q_LIVE;
nvmet_prepare_receive_pdu(queue);
return 0;
free_crypto:
if (queue->hdr_digest || queue->data_digest)
nvmet_tcp_free_crypto(queue);
return ret;
}
static void nvmet_tcp_handle_req_failure(struct nvmet_tcp_queue *queue,
@ -1167,11 +1176,15 @@ static int nvmet_tcp_try_recv(struct nvmet_tcp_queue *queue,
for (i = 0; i < budget; i++) {
ret = nvmet_tcp_try_recv_one(queue);
if (ret <= 0)
if (unlikely(ret < 0)) {
nvmet_tcp_socket_error(queue, ret);
goto done;
} else if (ret == 0) {
break;
}
(*recvs)++;
}
done:
return ret;
}
@ -1196,27 +1209,16 @@ static void nvmet_tcp_io_work(struct work_struct *w)
pending = false;
ret = nvmet_tcp_try_recv(queue, NVMET_TCP_RECV_BUDGET, &ops);
if (ret > 0) {
if (ret > 0)
pending = true;
} else if (ret < 0) {
if (ret == -EPIPE || ret == -ECONNRESET)
kernel_sock_shutdown(queue->sock, SHUT_RDWR);
else
nvmet_tcp_fatal_error(queue);
else if (ret < 0)
return;
}
ret = nvmet_tcp_try_send(queue, NVMET_TCP_SEND_BUDGET, &ops);
if (ret > 0) {
/* transmitted message/data */
if (ret > 0)
pending = true;
} else if (ret < 0) {
if (ret == -EPIPE || ret == -ECONNRESET)
kernel_sock_shutdown(queue->sock, SHUT_RDWR);
else
nvmet_tcp_fatal_error(queue);
else if (ret < 0)
return;
}
} while (pending && ops < NVMET_TCP_IO_WORK_BUDGET);

View File

@ -1012,10 +1012,10 @@ dump_rq:
if (md_meminfo_seq_buf)
md_dump_meminfo();
#ifdef CONFIG_SLUB_DEBUG
if (md_slabinfo_seq_buf)
md_dump_slabinfo();
#ifdef CONFIG_SLUB_DEBUG
if (md_slabowner_dump_addr)
md_dump_slabowner();
#endif

View File

@ -781,8 +781,10 @@ static const struct soc_id soc_id[] = {
{ 450, "SHIMA" },
{ 454, "HOLI" },
{ 507, "BLAIR" },
{ 578, "BLAIR-LITE" },
{ 565, "BLAIRP" },
{ 628, "BLAIRP-XR" },
{ 647, "BLAIRP-LTE" },
{ 486, "MONACO" },
{ 458, "SDXLEMUR" },
{ 483, "SDXLEMUR-SD"},

View File

@ -1849,7 +1849,7 @@ static void msm_hs_sps_tx_callback(struct sps_event_notify *notify)
&addr, notify->data.transfer.iovec.size,
notify->data.transfer.iovec.flags);
del_timer(&msm_uport->tx.tx_timeout_timer);
del_timer_sync(&msm_uport->tx.tx_timeout_timer);
MSM_HS_DBG("%s(): Queue kthread work\n", __func__);
kthread_queue_work(&msm_uport->tx.kworker, &msm_uport->tx.kwork);
}

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _IPA_H_
@ -490,6 +491,17 @@ struct ipa_ep_cfg_seq {
int seq_type;
};
/**
* struct ipa_ep_cfg_ucp - uCP config register
* @command: Command ID at uCP, that the packets should hit
*
* @enable: 0 - Disabled
* 1- Enabled
*/
struct ipa_ep_cfg_ucp {
u16 command;
u32 enable;
};
/**
* struct ipa_ep_cfg_ulso - ULSO configurations
* @ipid_min_max_idx: A value in the range [0, 2]. Determines the registers

View File

@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2018 - 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.
*/
#ifndef _IPA_WDI3_H_
@ -73,6 +73,7 @@ typedef void (*ipa_wdi_mesh_ast_notifier_cb)(void *priv, unsigned long data);
* @wdi_notify: bw notification cb
* inst_id: Instance ID
* @ast_update: AST update needed or not.
* @is_hsp: need to identify if attach is hsp/pine.
*/
struct ipa_wdi_init_in_params {
enum ipa_wdi_version wdi_version;
@ -83,6 +84,7 @@ struct ipa_wdi_init_in_params {
#endif
int inst_id;
bool ast_update;
bool is_hsp;
};
/**

View File

@ -2,7 +2,7 @@
/*
* Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
*
* Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
#ifndef _UAPI_MSM_IPA_H_
@ -151,6 +151,7 @@
#define IPA_IOCTL_QUERY_CACHED_DRIVER_MSG 94
#define IPA_IOCTL_SET_EXT_ROUTER_MODE 95
#define IPA_IOCTL_ADD_DEL_DSCP_PCP_MAPPING 96
#define IPA_IOCTL_SEND_VLAN_MUXID_MAPPING 97
/**
* max size of the header to be inserted
*/
@ -1755,6 +1756,27 @@ struct IpaDscpVlanPcpMap_t {
uint16_t vlan_s[IPA_EoGRE_MAX_VLAN * IPA_GRE_MAX_S_VLAN];
} __packed;
#define MAX_VLAN_CONFIGURE 16
enum pkt_path {
SW_PATH = 0,
HW_PATH_OUTSIDE_TUNNEL = 1,
HW_PATH_INSIDE_TUNNEL = 2
};
/* VLANID - Action - Tunnel_ID - MUX_ID */
struct singletag_mux_map_entry {
uint16_t vlan_id;
uint8_t mux_id;
uint8_t pkt_path;
uint32_t tunnel_id;
};
struct ipa_ioc_mux_mapping_table {
struct singletag_mux_map_entry map_entries[MAX_VLAN_CONFIGURE];
};
/**
* struct ipa_exception
*
@ -4077,6 +4099,11 @@ struct ipa_ioc_dscp_pcp_map_info {
IPA_IOCTL_ADD_DEL_DSCP_PCP_MAPPING, \
struct ipa_ioc_dscp_pcp_map_info)
#define IPA_IOC_SEND_VLAN_MUXID_MAPPING _IOWR(IPA_IOC_MAGIC, \
IPA_IOCTL_SEND_VLAN_MUXID_MAPPING, \
struct ipa_ioc_mux_mapping_table)
/*
* unique magic number of the Tethering bridge ioctls
*/

View File

@ -6240,6 +6240,7 @@ static int sysfs_slab_alias(struct kmem_cache *s, const char *name)
return 0;
}
#ifdef CONFIG_SLUB_DEBUG
#ifdef CONFIG_QCOM_MINIDUMP_PANIC_DUMP
static ssize_t slab_owner_filter_write(struct file *file,
const char __user *ubuf,
@ -6321,7 +6322,8 @@ static const struct file_operations proc_slab_owner_handle_ops = {
.write = slab_owner_handle_write,
.read = slab_owner_handle_read,
};
#endif
#endif /* CONFIG_QCOM_MINIDUMP_PANIC_DUMP */
#endif /* CONFIG_SLUB_DEBUG */
static int __init slab_sysfs_init(void)
{
@ -6366,6 +6368,7 @@ static int __init slab_sysfs_init(void)
kfree(al);
}
#ifdef CONFIG_SLUB_DEBUG
#ifdef CONFIG_QCOM_MINIDUMP_PANIC_DUMP
if (slub_debug) {
int i;
@ -6380,6 +6383,7 @@ static int __init slab_sysfs_init(void)
set_bit(i, &slab_owner_filter);
}
}
#endif
#endif
mutex_unlock(&slab_mutex);
resiliency_test();

View File

@ -218,8 +218,10 @@ static void igmp_start_timer(struct ip_mc_list *im, int max_delay)
int tv = prandom_u32() % max_delay;
im->tm_running = 1;
if (!mod_timer(&im->timer, jiffies+tv+2))
refcount_inc(&im->refcnt);
if (refcount_inc_not_zero(&im->refcnt)) {
if (mod_timer(&im->timer, jiffies + tv + 2))
ip_ma_put(im);
}
}
static void igmp_gq_start_timer(struct in_device *in_dev)

File diff suppressed because it is too large Load Diff