Merge "Merge 301c6b0cba
on remote branch" into kernel.lnx.5.4.r1-rel
This commit is contained in:
commit
d4eac70ee3
@ -1 +1 @@
|
||||
LTS_5.4.259_81334f26ac70
|
||||
LTS_5.4.259_70db018a109
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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
|
||||
|
@ -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"},
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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();
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user