mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
accel/qaic: Collect crashdump from SSR channel
After subsystem of the device has crashed it sends a message with
command DEBUG_TRANSFER_INFO to kernel(host). Send ACK for that message
and then prepare to collect the ramdump of the subsystem
Steps of crashdump collection is as follows,
1) Device sends DEBUG_TRANSFER_INFO message indicating that device wants
to send crashdump.
2) Send an acknowledgment to that message either ACK or NACK.
a) NACK will inform the device that host will not download the
crashdump
b) ACK will inform the device that host will download the crashdump
3) Along with the DEBUG_TRANSFER_INFO we receive a table base address and
its length, use that to download that table from device.
a) This table is meta data of the crashdump and not the actual
crashdump.
4) After we respond as ACK for message received on step 1) we start
downloading the table. Use series of MEMORY_READ/MEMORY_READ_RSP SSR
commands to download the entire table.
5) Each entry in the table represents a segment of crashdump. Once the
table downloading is complete, iterate through each entry of table
and download each crashdump segment(same as table itself). Table entry
contains the memory base address and length along with other info.
6) After the entire crashdump is downloaded send DEBUG_TRANSFER_DONE
which marks that host is terminating the crashdump transfer. This
message can be send in both success or error case.
7) After receiving DEBUG_TRANSFER_DONE_RSP hand over the crashdump to
dev_coredumpv() and free all the necessary memory.
Co-developed-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Signed-off-by: Jeffrey Hugo <quic_jhugo@quicinc.com>
Co-developed-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
Signed-off-by: Pranjal Ramajor Asha Kanojiya <quic_pkanojiy@quicinc.com>
Signed-off-by: Pranjal Ramajor Asha Kanojiya <pkanojiy@codeaurora.org>
Signed-off-by: Youssef Samir <youssef.abdulrahman@oss.qualcomm.com>
Signed-off-by: Zack McKevitt <zachary.mckevitt@oss.qualcomm.com>
Reviewed-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Signed-off-by: Jeff Hugo <jeff.hugo@oss.qualcomm.com>
Link: https://patch.msgid.link/20251031174059.2814445-4-zachary.mckevitt@oss.qualcomm.com
This commit is contained in:
committed by
Jeff Hugo
parent
9675093ace
commit
6bc1fe6c74
@@ -9,6 +9,7 @@ config DRM_ACCEL_QAIC
|
||||
depends on PCI && HAS_IOMEM
|
||||
depends on MHI_BUS
|
||||
select CRC32
|
||||
select WANT_DEV_COREDUMP
|
||||
help
|
||||
Enables driver for Qualcomm's Cloud AI accelerator PCIe cards that are
|
||||
designed to accelerate Deep Learning inference workloads.
|
||||
|
||||
@@ -202,6 +202,8 @@ struct qaic_device {
|
||||
struct mhi_device *ssr_ch;
|
||||
/* Work queue for tasks related to MHI SSR device */
|
||||
struct workqueue_struct *ssr_wq;
|
||||
/* Buffer to collect SSR crashdump via SSR MHI channel */
|
||||
void *ssr_mhi_buf;
|
||||
/* DBC which is under SSR. Sentinel U32_MAX would mean that no SSR in progress */
|
||||
u32 ssr_dbc;
|
||||
};
|
||||
|
||||
@@ -449,7 +449,7 @@ static struct qaic_device *create_qdev(struct pci_dev *pdev,
|
||||
if (ret)
|
||||
return NULL;
|
||||
|
||||
ret = qaic_ssr_init(qdev);
|
||||
ret = qaic_ssr_init(qdev, drm);
|
||||
if (ret)
|
||||
pci_info(pdev, "QAIC SSR crashdump collection not supported.\n");
|
||||
|
||||
|
||||
+572
-16
File diff suppressed because it is too large
Load Diff
@@ -7,10 +7,11 @@
|
||||
#ifndef __QAIC_SSR_H__
|
||||
#define __QAIC_SSR_H__
|
||||
|
||||
struct drm_device;
|
||||
struct qaic_device;
|
||||
|
||||
int qaic_ssr_register(void);
|
||||
void qaic_ssr_unregister(void);
|
||||
void qaic_clean_up_ssr(struct qaic_device *qdev);
|
||||
int qaic_ssr_init(struct qaic_device *qdev);
|
||||
int qaic_ssr_init(struct qaic_device *qdev, struct drm_device *drm);
|
||||
#endif /* __QAIC_SSR_H__ */
|
||||
|
||||
Reference in New Issue
Block a user