30cf36bb04
Add ivpu_mmu_evtq_dump() function that dumps existing MMU events from MMU event queue. Call this function if VPU boot failed. Previously MMU events were only checked in interrupt handler, but if VPU failed to boot due to MMU faults, those faults were missed because of interrupts not yet being enabled. This will allow checking potential fault reason of VPU not booting. Signed-off-by: Wachowski, Karol <karol.wachowski@intel.com> Signed-off-by: Jacek Lawrynowicz <jacek.lawrynowicz@linux.intel.com> Reviewed-by: Jeffrey Hugo <quic_jhugo@quicinc.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240115134434.493839-2-jacek.lawrynowicz@linux.intel.com
52 lines
1.2 KiB
C
52 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2020-2023 Intel Corporation
|
|
*/
|
|
|
|
#ifndef __IVPU_MMU_H__
|
|
#define __IVPU_MMU_H__
|
|
|
|
struct ivpu_device;
|
|
|
|
struct ivpu_mmu_cdtab {
|
|
void *base;
|
|
dma_addr_t dma;
|
|
};
|
|
|
|
struct ivpu_mmu_strtab {
|
|
void *base;
|
|
dma_addr_t dma;
|
|
u64 dma_q;
|
|
u32 base_cfg;
|
|
};
|
|
|
|
struct ivpu_mmu_queue {
|
|
void *base;
|
|
dma_addr_t dma;
|
|
u64 dma_q;
|
|
u32 prod;
|
|
u32 cons;
|
|
};
|
|
|
|
struct ivpu_mmu_info {
|
|
struct mutex lock; /* Protects cdtab, strtab, cmdq, on */
|
|
struct ivpu_mmu_cdtab cdtab;
|
|
struct ivpu_mmu_strtab strtab;
|
|
struct ivpu_mmu_queue cmdq;
|
|
struct ivpu_mmu_queue evtq;
|
|
bool on;
|
|
};
|
|
|
|
int ivpu_mmu_init(struct ivpu_device *vdev);
|
|
void ivpu_mmu_disable(struct ivpu_device *vdev);
|
|
int ivpu_mmu_enable(struct ivpu_device *vdev);
|
|
int ivpu_mmu_set_pgtable(struct ivpu_device *vdev, int ssid, struct ivpu_mmu_pgtable *pgtable);
|
|
void ivpu_mmu_clear_pgtable(struct ivpu_device *vdev, int ssid);
|
|
int ivpu_mmu_invalidate_tlb(struct ivpu_device *vdev, u16 ssid);
|
|
|
|
void ivpu_mmu_irq_evtq_handler(struct ivpu_device *vdev);
|
|
void ivpu_mmu_irq_gerr_handler(struct ivpu_device *vdev);
|
|
void ivpu_mmu_evtq_dump(struct ivpu_device *vdev);
|
|
|
|
#endif /* __IVPU_MMU_H__ */
|