Re: [PATCH 08/14] accel/ivpu: Fix missing MMU events from reserved SSID

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Jacek Lawrynowicz <jacek.lawrynowicz@xxxxxxxxxxxxxxx>

On 1/7/2025 6:32 PM, Maciej Falkowski wrote:
> From: Karol Wachowski <karol.wachowski@xxxxxxxxx>
> 
> Generate recovery when fault from reserved context is detected.
> Add Abort (A) bit to reserved (1) SSID to ensure NPU also receives a fault.
> 
> There is no way to create a file_priv with reserved SSID
> but it is still possible to receive MMU faults from that SSID
> as it is a default NPU HW setting. Such situation will occur if
> FW freed context related resources but still performed access to DRAM.
> 
> Signed-off-by: Karol Wachowski <karol.wachowski@xxxxxxxxx>
> Signed-off-by: Maciej Falkowski <maciej.falkowski@xxxxxxxxxxxxxxx>
> ---
>  drivers/accel/ivpu/ivpu_mmu.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/accel/ivpu/ivpu_mmu.c b/drivers/accel/ivpu/ivpu_mmu.c
> index ae1dcd04051c..b80bdded9fd7 100644
> --- a/drivers/accel/ivpu/ivpu_mmu.c
> +++ b/drivers/accel/ivpu/ivpu_mmu.c
> @@ -725,8 +725,8 @@ static int ivpu_mmu_cdtab_entry_set(struct ivpu_device *vdev, u32 ssid, u64 cd_d
>  	cd[2] = 0;
>  	cd[3] = 0x0000000000007444;
>  
> -	/* For global context generate memory fault on VPU */
> -	if (ssid == IVPU_GLOBAL_CONTEXT_MMU_SSID)
> +	/* For global and reserved contexts generate memory fault on VPU */
> +	if (ssid == IVPU_GLOBAL_CONTEXT_MMU_SSID || ssid == IVPU_RESERVED_CONTEXT_MMU_SSID)
>  		cd[0] |= IVPU_MMU_CD_0_A;
>  
>  	if (valid)
> @@ -945,7 +945,8 @@ void ivpu_mmu_irq_evtq_handler(struct ivpu_device *vdev)
>  
>  	while ((event = ivpu_mmu_get_event(vdev))) {
>  		ssid = FIELD_GET(IVPU_MMU_EVT_SSID_MASK, *event);
> -		if (ssid == IVPU_GLOBAL_CONTEXT_MMU_SSID) {
> +		if (ssid == IVPU_GLOBAL_CONTEXT_MMU_SSID ||
> +		    ssid == IVPU_RESERVED_CONTEXT_MMU_SSID) {
>  			ivpu_mmu_dump_event(vdev, event);
>  			ivpu_pm_trigger_recovery(vdev, "MMU event");
>  			return;




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux