Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8dc5da25 authored by Praneeth Paladugu's avatar Praneeth Paladugu Committed by Gerrit - the friendly Code Review server
Browse files

msm: vidc: Halt the AXI after SYS error from Venus



When SYS_ERROR recieved from Venus, HW may be accessing input
and\or output buffers. As part of clean-up driver un-maps the
buffers that are still being used HW. This may cause page faults.
Hence driver needs to halt the AXI to make sure all the pending
transactions are cleared and future transactions are blocked.

Change-Id: I3d0be5b3d0b339dabccbad05f3d42b78ebd89944
Signed-off-by: default avatarPraneeth Paladugu <ppaladug@codeaurora.org>
parent 9f6f9250
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -3253,6 +3253,14 @@ static void venus_hfi_process_msg_event_notify(

		venus_hfi_set_state(device, VENUS_STATE_DEINIT);

		/* Once SYS_ERROR received from HW, it is safe to halt the AXI.
		 * With SYS_ERROR, Venus FW may have crashed and HW might be
		 * active and causing unnecessary transactions. Hence it is
		 * safe to stop all AXI transactions from venus sub-system. */
		if (venus_hfi_halt_axi(device))
			dprintk(VIDC_WARN,
				"Failed to halt AXI after SYS_ERROR\n");

		vsfr = (struct hfi_sfr_struct *)
				device->sfr.align_virtual_addr;
		if (vsfr) {