mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
Merge 3686b916e5 on remote branch
Change-Id: Ibca9097d15066ffd4c5a18352236ce31307714ed
This commit is contained in:
commit
0b722f30d8
11 changed files with 61 additions and 13 deletions
|
|
@ -809,6 +809,12 @@ static inline void mhi_trigger_resume(struct mhi_controller *mhi_cntrl)
|
|||
pm_wakeup_hard_event(&mhi_cntrl->mhi_dev->dev);
|
||||
}
|
||||
|
||||
static inline bool is_valid_ring_ptr(struct mhi_ring *ring, dma_addr_t addr)
|
||||
{
|
||||
return ((addr >= ring->iommu_base &&
|
||||
addr < ring->iommu_base + ring->len) && (addr % 16 == 0));
|
||||
}
|
||||
|
||||
/* queue transfer buffer */
|
||||
int mhi_gen_tre(struct mhi_controller *mhi_cntrl, struct mhi_chan *mhi_chan,
|
||||
void *buf, void *cb, size_t buf_len, enum MHI_FLAGS flags);
|
||||
|
|
|
|||
|
|
@ -1403,6 +1403,12 @@ int mhi_process_tsync_ev_ring(struct mhi_controller *mhi_cntrl,
|
|||
int ret = 0;
|
||||
|
||||
spin_lock_bh(&mhi_event->lock);
|
||||
if (!is_valid_ring_ptr(ev_ring, er_ctxt->rp)) {
|
||||
MHI_ERR("Event ring rp points outside of the event ring or unalign rp %llx\n",
|
||||
er_ctxt->rp);
|
||||
spin_unlock_bh(&mhi_event->lock);
|
||||
return 0;
|
||||
}
|
||||
dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
|
||||
if (ev_ring->rp == dev_rp) {
|
||||
spin_unlock_bh(&mhi_event->lock);
|
||||
|
|
@ -1496,8 +1502,14 @@ int mhi_process_bw_scale_ev_ring(struct mhi_controller *mhi_cntrl,
|
|||
int ret = 0;
|
||||
|
||||
spin_lock_bh(&mhi_event->lock);
|
||||
dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
|
||||
if (!is_valid_ring_ptr(ev_ring, er_ctxt->rp)) {
|
||||
MHI_ERR("Event ring rp points outside of the event ring or unalign rp %llx\n",
|
||||
er_ctxt->rp);
|
||||
spin_unlock_bh(&mhi_event->lock);
|
||||
return 0;
|
||||
}
|
||||
|
||||
dev_rp = mhi_to_virtual(ev_ring, er_ctxt->rp);
|
||||
if (ev_ring->rp == dev_rp) {
|
||||
spin_unlock_bh(&mhi_event->lock);
|
||||
goto exit_bw_scale_process;
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -2415,6 +2415,20 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
|
|||
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_CK804_PCIE,
|
||||
quirk_nvidia_ck804_pcie_aer_ext_cap);
|
||||
|
||||
/*
|
||||
* Quirk to limit QCOM RC MPS to 128 in case of Realtek 8168
|
||||
* attaches.
|
||||
*/
|
||||
static void quirk_realtek_rc_mpss_limit(struct pci_dev *pdev)
|
||||
{
|
||||
struct pci_dev *root_port = pcie_find_root_port(pdev);
|
||||
|
||||
if (root_port->vendor == PCI_VENDOR_ID_QCOM)
|
||||
pcie_set_mps(root_port, 128);
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_REALTEK, 0x8168,
|
||||
quirk_realtek_rc_mpss_limit);
|
||||
|
||||
static void quirk_via_cx700_pci_parking_caching(struct pci_dev *dev)
|
||||
{
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -150,6 +150,13 @@ void place_marker(const char *name)
|
|||
}
|
||||
EXPORT_SYMBOL(place_marker);
|
||||
|
||||
void update_marker(const char *name)
|
||||
{
|
||||
destroy_marker(name);
|
||||
place_marker(name);
|
||||
}
|
||||
EXPORT_SYMBOL(update_marker);
|
||||
|
||||
void destroy_marker(const char *name)
|
||||
{
|
||||
_destroy_boot_marker((char *) name);
|
||||
|
|
@ -217,7 +224,7 @@ static ssize_t bootkpi_writer(struct kobject *obj, struct kobj_attribute *attr,
|
|||
return rc;
|
||||
|
||||
buf[rc] = '\0';
|
||||
place_marker(buf);
|
||||
update_marker(buf);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -654,7 +654,7 @@ static int subsystem_shutdown(struct subsys_device *dev, void *data)
|
|||
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
if (!strcmp(dev->desc->name, "modem"))
|
||||
place_marker("M - Modem Stop");
|
||||
update_marker("M - Modem Stop");
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -474,7 +474,7 @@ int pil_do_ramdump(struct pil_desc *desc,
|
|||
__func__, desc->name, ret);
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
if (!strcmp(desc->name, "modem"))
|
||||
place_marker("M - Modem Dump completed");
|
||||
update_marker("M - Modem Dump completed");
|
||||
#endif
|
||||
if (desc->subsys_vmid > 0)
|
||||
ret = pil_assign_mem_to_subsys(desc, priv->region_start,
|
||||
|
|
@ -873,7 +873,7 @@ static int pil_init_mmap(struct pil_desc *desc, const struct pil_mdt *mdt)
|
|||
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
if (!strcmp(desc->name, "modem"))
|
||||
place_marker("M - Modem Image Start Loading");
|
||||
update_marker("M - Modem Image Start Loading");
|
||||
#endif
|
||||
|
||||
pil_info(desc, "loading from %pa to %pa\n", &priv->region_start,
|
||||
|
|
@ -1339,7 +1339,7 @@ int pil_boot(struct pil_desc *desc)
|
|||
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
if (!strcmp(desc->name, "modem"))
|
||||
place_marker("M - Modem out of reset");
|
||||
update_marker("M - Modem out of reset");
|
||||
#endif
|
||||
|
||||
pil_info(desc, "Brought out of reset\n");
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2023, Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/delay.h>
|
||||
|
|
@ -439,6 +440,10 @@ void seb_rx_msg(void *data, int len)
|
|||
dev->seb_resp_cmplt = true;
|
||||
wake_up(&dev->link_state_wait);
|
||||
if (dev->wait_for_resp) {
|
||||
if (len > SEB_GLINK_INTENT_SIZE) {
|
||||
pr_err("Invalid seb rx buffer length\n");
|
||||
return;
|
||||
}
|
||||
memcpy(dev->rx_buf, data, len);
|
||||
} else {
|
||||
/* Handle the event received from Slate */
|
||||
|
|
|
|||
|
|
@ -873,7 +873,7 @@ static int subsys_ramdump(int enable, const struct subsys_desc *subsys)
|
|||
return 0;
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
if (!strcmp(subsys->name, "modem"))
|
||||
place_marker("M - Modem Dump start");
|
||||
update_marker("M - Modem Dump start");
|
||||
#endif
|
||||
|
||||
return pil_do_ramdump(&d->desc, d->ramdump_dev, d->minidump_dev);
|
||||
|
|
@ -921,7 +921,7 @@ static irqreturn_t subsys_err_fatal_intr_handler (int irq, void *drv_data)
|
|||
}
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
if (!strcmp(d->subsys_desc.name, "modem"))
|
||||
place_marker("M - Modem crash");
|
||||
update_marker("M - Modem crash");
|
||||
#endif
|
||||
subsys_set_crash_status(d->subsys, CRASH_STATUS_ERR_FATAL);
|
||||
log_failure_reason(d);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#ifdef CONFIG_QGKI_MSM_BOOT_TIME_MARKER
|
||||
void place_marker(const char *name);
|
||||
void update_marker(const char *name);
|
||||
void destroy_marker(const char *name);
|
||||
unsigned long long msm_timer_get_sclk_ticks(void);
|
||||
static inline int boot_marker_enabled(void) { return 1; }
|
||||
|
|
@ -13,6 +14,7 @@ static inline int boot_marker_enabled(void) { return 1; }
|
|||
static inline int init_bootkpi(void) { return 0; }
|
||||
static inline void exit_bootkpi(void) { };
|
||||
static inline void place_marker(char *name) { };
|
||||
static inline void update_marker(char *name) { };
|
||||
static inline void destroy_marker(const char *name) { };
|
||||
static inline int boot_marker_enabled(void) { return 0; }
|
||||
static inline unsigned long long msm_timer_get_sclk_ticks(void) { return -EINVAL; }
|
||||
|
|
|
|||
Loading…
Reference in a new issue