mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 20:33:58 -04:00
Merge tag 'LA.UM.9.14.1.r1-10900-QCM6490.QSSI14.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4 into android13-5.4-lahaina
"LA.UM.9.14.1.r1-10900-QCM6490.QSSI14.0" * tag 'LA.UM.9.14.1.r1-10900-QCM6490.QSSI14.0' of https://git.codelinaro.org/clo/la/kernel/msm-5.4: msm: kgsl: Defer drawobj_sync_timeline_fence_work() to a workqueue BACKPORT: of: base: Skip CPU nodes with "fail"/"fail-..." status qcom: cpufreq-hw: Use the topology coreid for offset msm: kgsl: Check user generated timestamp before queuing drawobjs msm: kgsl: Keep postamble packets in a privileged buffer net: qrtr: haven: Add bounds check on tx path pci: msm: Add support to retry for sending rpmsg cpu-topology: Change the size of allocation for cpu's devfreq: memlat: Correct the num_cpus in memlat-mon core_ctl: Add check for available cpus before accessing per_cpus msm: kgsl: Remove protected GPUCC registers from snapshot wifi: cfg80211: fix BSS refcounting bugs wifi: cfg80211: avoid nontransmitted BSS list corruption wifi: cfg80211: fix u8 overflow in cfg80211_update_notlisted_nontrans() cnss2: Add code to fallback to non-contiguous FW mem allocation msm: kgsl: Fix gpuaddr_in_range() to check upper bound msm: kgsl: Remove 'fd' dependency to get dma_buf handle msm: kgsl: Zap performance counters across context switches msm: kgsl: Update the IFPC power up reglist msm: kgsl: Update register protection config msm: kgsl: Add support for A643 GPU Change-Id: Ie958b06794787ef0672bb2cdd0c12911b819f3d5
This commit is contained in:
commit
d9b72de2cf
3 changed files with 15 additions and 6 deletions
|
|
@ -1,6 +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.
|
||||
*/
|
||||
|
||||
/*
|
||||
|
|
@ -253,7 +254,7 @@ static void drawobj_sync_func(struct kgsl_device *device,
|
|||
kgsl_drawobj_put(&event->syncobj->base);
|
||||
}
|
||||
|
||||
static void drawobj_sync_timeline_fence_work(struct irq_work *work)
|
||||
static void drawobj_sync_timeline_fence_work(struct work_struct *work)
|
||||
{
|
||||
struct kgsl_drawobj_sync_event *event = container_of(work,
|
||||
struct kgsl_drawobj_sync_event, work);
|
||||
|
|
@ -301,7 +302,7 @@ static void drawobj_sync_timeline_fence_callback(struct dma_fence *f,
|
|||
* removing the fence
|
||||
*/
|
||||
if (drawobj_sync_expire(event->device, event))
|
||||
irq_work_queue(&event->work);
|
||||
queue_work(kgsl_driver.mem_workqueue, &event->work);
|
||||
}
|
||||
|
||||
static void syncobj_destroy(struct kgsl_drawobj *drawobj)
|
||||
|
|
@ -498,7 +499,7 @@ static int drawobj_add_sync_timeline(struct kgsl_device *device,
|
|||
event->device = device;
|
||||
event->context = NULL;
|
||||
event->fence = fence;
|
||||
init_irq_work(&event->work, drawobj_sync_timeline_fence_work);
|
||||
INIT_WORK(&event->work, drawobj_sync_timeline_fence_work);
|
||||
|
||||
INIT_LIST_HEAD(&event->cb.node);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef __KGSL_DRAWOBJ_H
|
||||
|
|
@ -170,8 +171,8 @@ struct kgsl_drawobj_sync_event {
|
|||
struct dma_fence *fence;
|
||||
/** @cb: Callback struct for KGSL_CMD_SYNCPOINT_TYPE_TIMELINE */
|
||||
struct dma_fence_cb cb;
|
||||
/** @work : irq worker for KGSL_CMD_SYNCPOINT_TYPE_TIMELINE */
|
||||
struct irq_work work;
|
||||
/** @work : work_struct for KGSL_CMD_SYNCPOINT_TYPE_TIMELINE */
|
||||
struct work_struct work;
|
||||
};
|
||||
|
||||
#define KGSL_DRAWOBJ_FLAGS \
|
||||
|
|
|
|||
|
|
@ -7760,7 +7760,7 @@ static int msm_pcie_drv_send_rpmsg(struct msm_pcie_dev_t *pcie_dev,
|
|||
struct msm_pcie_drv_msg *msg)
|
||||
{
|
||||
struct msm_pcie_drv_info *drv_info = pcie_dev->drv_info;
|
||||
int ret;
|
||||
int ret, re_try = 5; /* sleep 5 ms per re-try */
|
||||
struct rpmsg_device *rpdev;
|
||||
|
||||
mutex_lock(&pcie_drv.rpmsg_lock);
|
||||
|
|
@ -7781,8 +7781,15 @@ static int msm_pcie_drv_send_rpmsg(struct msm_pcie_dev_t *pcie_dev,
|
|||
PCIE_DBG(pcie_dev, "PCIe: RC%d: DRV: sending rpmsg: command: 0x%x\n",
|
||||
pcie_dev->rc_idx, msg->pkt.dword[0]);
|
||||
|
||||
retry:
|
||||
ret = rpmsg_trysend(rpdev->ept, msg, sizeof(*msg));
|
||||
if (ret) {
|
||||
if (ret == -EBUSY && re_try) {
|
||||
usleep_range(5000, 5001);
|
||||
re_try--;
|
||||
goto retry;
|
||||
}
|
||||
|
||||
PCIE_ERR(pcie_dev,
|
||||
"PCIe: RC%d: DRV: failed to send rpmsg, ret:%d\n",
|
||||
pcie_dev->rc_idx, ret);
|
||||
|
|
|
|||
Loading…
Reference in a new issue