summaryrefslogtreecommitdiffstats
path: root/pvr-source/services4/srvkm/devices/sgx/mmu.h
diff options
context:
space:
mode:
Diffstat (limited to 'pvr-source/services4/srvkm/devices/sgx/mmu.h')
-rwxr-xr-xpvr-source/services4/srvkm/devices/sgx/mmu.h501
1 files changed, 0 insertions, 501 deletions
diff --git a/pvr-source/services4/srvkm/devices/sgx/mmu.h b/pvr-source/services4/srvkm/devices/sgx/mmu.h
deleted file mode 100755
index 3c849fc..0000000
--- a/pvr-source/services4/srvkm/devices/sgx/mmu.h
+++ /dev/null
@@ -1,501 +0,0 @@
-/*************************************************************************/ /*!
-@Title MMU Management
-@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved
-@Description Implements basic low level control of MMU.
-@License Dual MIT/GPLv2
-
-The contents of this file are subject to the MIT license as set out below.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-Alternatively, the contents of this file may be used under the terms of
-the GNU General Public License Version 2 ("GPL") in which case the provisions
-of GPL are applicable instead of those above.
-
-If you wish to allow use of your version of this file only under the terms of
-GPL, and not to allow others to use your version of this file under the terms
-of the MIT license, indicate your decision by deleting the provisions above
-and replace them with the notice and other provisions required by GPL as set
-out in the file called "GPL-COPYING" included in this distribution. If you do
-not delete the provisions above, a recipient may use your version of this file
-under the terms of either the MIT license or GPL.
-
-This License is also included in this distribution in the file called
-"MIT-COPYING".
-
-EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS
-PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
-BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
-PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-*/ /**************************************************************************/
-
-#ifndef _MMU_H_
-#define _MMU_H_
-
-#include "sgxinfokm.h"
-
-/*
-******************************************************************************
- FUNCTION: MMU_Initialise
-
- PURPOSE: Initialise the mmu module.
-
- PARAMETERS: None
- RETURNS: PVRSRV_ERROR
-******************************************************************************/
-PVRSRV_ERROR
-MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, IMG_DEV_PHYADDR *psPDDevPAddr);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Finalise
-
- PURPOSE: Finalise the mmu module, deallocate all resources.
-
- PARAMETERS: None.
- RETURNS: None.
-******************************************************************************/
-IMG_VOID
-MMU_Finalise (MMU_CONTEXT *psMMUContext);
-
-
-/*
-******************************************************************************
- FUNCTION: MMU_InsertHeap
-
- PURPOSE: Inserts shared heap into the specified context
- from the kernel context
-
- PARAMETERS: None.
- RETURNS: None.
-******************************************************************************/
-IMG_VOID
-MMU_InsertHeap(MMU_CONTEXT *psMMUContext, MMU_HEAP *psMMUHeap);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Create
-
- PURPOSE: Create an mmu device.
-
- PARAMETERS: In: psMMUContext -
- In: psDevArena -
- Out: ppsVMArena
- RETURNS: MMU_HEAP
-******************************************************************************/
-MMU_HEAP *
-MMU_Create (MMU_CONTEXT *psMMUContext,
- DEV_ARENA_DESCRIPTOR *psDevArena,
- RA_ARENA **ppsVMArena,
- PDUMP_MMU_ATTRIB **ppsMMUAttrib);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Delete
-
- PURPOSE: Delete an mmu device.
-
- PARAMETERS: In: pMMUHeap - The mmu to delete.
- RETURNS:
-******************************************************************************/
-IMG_VOID
-MMU_Delete (MMU_HEAP *pMMUHeap);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Alloc
- PURPOSE: Allocate space in an mmu's virtual address space.
- PARAMETERS: In: pMMUHeap - MMU to allocate on.
- In: uSize - Size in bytes to allocate.
- Out: pActualSize - If non null receives actual size allocated.
- In: uFlags - Allocation flags.
- In: uDevVAddrAlignment - Required alignment.
- Out: pDevVAddr - Receives base address of allocation.
- RETURNS: IMG_TRUE - Success
- IMG_FALSE - Failure
-******************************************************************************/
-IMG_BOOL
-MMU_Alloc (MMU_HEAP *pMMUHeap,
- IMG_SIZE_T uSize,
- IMG_SIZE_T *pActualSize,
- IMG_UINT32 uFlags,
- IMG_UINT32 uDevVAddrAlignment,
- IMG_DEV_VIRTADDR *pDevVAddr);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Free
- PURPOSE: Frees space in an mmu's virtual address space.
- PARAMETERS: In: pMMUHeap - MMU to free on.
- In: DevVAddr - Base address of allocation.
- RETURNS: IMG_TRUE - Success
- IMG_FALSE - Failure
-******************************************************************************/
-IMG_VOID
-MMU_Free (MMU_HEAP *pMMUHeap,
- IMG_DEV_VIRTADDR DevVAddr,
- IMG_UINT32 ui32Size);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Enable
-
- PURPOSE: Enable an mmu. Establishes pages tables and takes the mmu out
- of bypass and waits for the mmu to acknowledge enabled.
-
- PARAMETERS: In: pMMUHeap - the mmu
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_Enable (MMU_HEAP *pMMUHeap);
-
-/*
-******************************************************************************
- FUNCTION: MMU_Disable
-
- PURPOSE: Disable an mmu, takes the mmu into bypass.
-
- PARAMETERS: In: pMMUHeap - the mmu
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_Disable (MMU_HEAP *pMMUHeap);
-
-/*
-******************************************************************************
- FUNCTION: MMU_MapPages
-
- PURPOSE: Create a mapping for a range of pages from a device physical
- adddress to a specified device virtual address.
-
- PARAMETERS: In: pMMUHeap - the mmu.
- In: DevVAddr - the device virtual address.
- In: SysPAddr - the system physical address of the page to map.
- In: uSize - size of memory range in bytes
- In: ui32MemFlags - page table flags.
- In: hUniqueTag - A unique ID for use as a tag identifier
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_MapPages (MMU_HEAP *pMMUHeap,
- IMG_DEV_VIRTADDR DevVAddr,
- IMG_SYS_PHYADDR SysPAddr,
- IMG_SIZE_T uSize,
- IMG_UINT32 ui32MemFlags,
- IMG_HANDLE hUniqueTag);
-
-/*
-******************************************************************************
- FUNCTION: MMU_MapPagesSparse
-
- PURPOSE: Create a mapping for a range of pages from a device physical
- adddress to a specified device virtual address.
-
- PARAMETERS: In: pMMUHeap - the mmu.
- In: DevVAddr - the device virtual address.
- In: SysPAddr - the system physical address of the page to map.
- In: ui32ChunkSize - Size of the chunk (must be page multiple)
- In: ui32NumVirtChunks - Number of virtual chunks
- In: ui32NumPhysChunks - Number of physical chunks
- In: pabMapChunk - Mapping array
- In: ui32MemFlags - page table flags.
- In: hUniqueTag - A unique ID for use as a tag identifier
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_MapPagesSparse (MMU_HEAP *pMMUHeap,
- IMG_DEV_VIRTADDR DevVAddr,
- IMG_SYS_PHYADDR SysPAddr,
- IMG_UINT32 ui32ChunkSize,
- IMG_UINT32 ui32NumVirtChunks,
- IMG_UINT32 ui32NumPhysChunks,
- IMG_BOOL *pabMapChunk,
- IMG_UINT32 ui32MemFlags,
- IMG_HANDLE hUniqueTag);
-
-/*
-******************************************************************************
- FUNCTION: MMU_MapShadow
-
- PURPOSE: Create a mapping for a range of pages from a CPU virtual
- adddress to a specified device virtual address.
-
- PARAMETERS: In: pMMUHeap - the mmu.
- In: MapBaseDevVAddr - A page aligned device virtual address
- to start mapping from.
- In: uByteSize - A page aligned mapping length in bytes.
- In: CpuVAddr - A page aligned CPU virtual address.
- In: hOSMemHandle - An alternative OS specific memory handle
- for mapping RAM without a CPU virtual
- address
- Out: pDevVAddr - deprecated
- In: hUniqueTag - A unique ID for use as a tag identifier
- In: ui32MemFlags - page table flags.
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_MapShadow (MMU_HEAP * pMMUHeap,
- IMG_DEV_VIRTADDR MapBaseDevVAddr,
- IMG_SIZE_T uByteSize,
- IMG_CPU_VIRTADDR CpuVAddr,
- IMG_HANDLE hOSMemHandle,
- IMG_DEV_VIRTADDR * pDevVAddr,
- IMG_UINT32 ui32MemFlags,
- IMG_HANDLE hUniqueTag);
-
-/*
-******************************************************************************
- FUNCTION: MMU_MapShadowSparse
-
- PURPOSE: Create a mapping for a range of pages from a CPU virtual
- adddress to a specified device virtual address.
-
- PARAMETERS: In: pMMUHeap - the mmu.
- In: MapBaseDevVAddr - A page aligned device virtual address
- to start mapping from.
- In: ui32ChunkSize - Size of the chunk (must be page multiple)
- In: ui32NumVirtChunks - Number of virtual chunks
- In: ui32NumPhysChunks - Number of physical chunks
- In: pabMapChunk - Mapping array
- In: CpuVAddr - A page aligned CPU virtual address.
- In: hOSMemHandle - An alternative OS specific memory handle
- for mapping RAM without a CPU virtual
- address
- Out: pDevVAddr - deprecated
- In: hUniqueTag - A unique ID for use as a tag identifier
- In: ui32MemFlags - page table flags.
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_MapShadowSparse (MMU_HEAP * pMMUHeap,
- IMG_DEV_VIRTADDR MapBaseDevVAddr,
- IMG_UINT32 ui32ChunkSize,
- IMG_UINT32 ui32NumVirtChunks,
- IMG_UINT32 ui32NumPhysChunks,
- IMG_BOOL * pabMapChunk,
- IMG_CPU_VIRTADDR CpuVAddr,
- IMG_HANDLE hOSMemHandle,
- IMG_DEV_VIRTADDR * pDevVAddr,
- IMG_UINT32 ui32MemFlags,
- IMG_HANDLE hUniqueTag);
-
-/*
-******************************************************************************
- FUNCTION: MMU_UnmapPages
-
- PURPOSE: unmaps pages and invalidates virtual address.
-
- PARAMETERS: In: psMMUHeap - the mmu.
- In: sDevVAddr - the device virtual address.
- In: ui32PageCount - page count.
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_UnmapPages (MMU_HEAP *psMMUHeap,
- IMG_DEV_VIRTADDR sDevVAddr,
- IMG_UINT32 ui32PageCount,
- IMG_HANDLE hUniqueTag);
-
-/*
-******************************************************************************
- FUNCTION: MMU_MapScatter
-
- PURPOSE: Create a mapping for a list of pages to a specified device
- virtual address.
-
- PARAMETERS: In: pMMUHeap - the mmu.
- In: DevVAddr - the device virtual address.
- In: psSysAddr - the list of physical addresses of the pages to
- map.
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-MMU_MapScatter (MMU_HEAP *pMMUHeap,
- IMG_DEV_VIRTADDR DevVAddr,
- IMG_SYS_PHYADDR *psSysAddr,
- IMG_SIZE_T uSize,
- IMG_UINT32 ui32MemFlags,
- IMG_HANDLE hUniqueTag);
-
-
-/*
-******************************************************************************
- FUNCTION: MMU_GetPhysPageAddr
-
- PURPOSE: extracts physical address from MMU page tables
-
- PARAMETERS: In: pMMUHeap - the mmu
- PARAMETERS: In: sDevVPageAddr - the virtual address to extract physical
- page mapping from
- RETURNS: IMG_DEV_PHYADDR
-******************************************************************************/
-IMG_DEV_PHYADDR
-MMU_GetPhysPageAddr(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR sDevVPageAddr);
-
-
-/*
-******************************************************************************
- FUNCTION: MMU_GetPDDevPAddr
-
- PURPOSE: returns PD given the MMU context (SGX to MMU API)
-
- PARAMETERS: In: pMMUContext - the mmu
- RETURNS: IMG_DEV_PHYADDR
-******************************************************************************/
-IMG_DEV_PHYADDR
-MMU_GetPDDevPAddr(MMU_CONTEXT *pMMUContext);
-
-
-#ifdef SUPPORT_SGX_MMU_BYPASS
-/*
-******************************************************************************
- FUNCTION: EnableHostAccess
-
- PURPOSE: Enables Host accesses to device memory, by passing the device
- MMU address translation
-
- PARAMETERS: In: psMMUContext
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-EnableHostAccess (MMU_CONTEXT *psMMUContext);
-
-
-/*
-******************************************************************************
- FUNCTION: DisableHostAccess
-
- PURPOSE: Disables Host accesses to device memory, by passing the device
- MMU address translation
-
- PARAMETERS: In: psMMUContext
- RETURNS: None
-******************************************************************************/
-IMG_VOID
-DisableHostAccess (MMU_CONTEXT *psMMUContext);
-#endif
-
-/*
-******************************************************************************
- FUNCTION: MMU_InvalidateDirectoryCache
-
- PURPOSE: Invalidates the page directory cache
-
- PARAMETERS: In: psDevInfo
- RETURNS: None
-******************************************************************************/
-IMG_VOID MMU_InvalidateDirectoryCache(PVRSRV_SGXDEV_INFO *psDevInfo);
-
-/*
-******************************************************************************
- FUNCTION: MMU_BIFResetPDAlloc
-
- PURPOSE: Allocate a dummy Page Directory which causes all virtual
- addresses to page fault.
-
- PARAMETERS: In: psDevInfo - device info
- RETURNS: PVRSRV_OK or error
-******************************************************************************/
-PVRSRV_ERROR MMU_BIFResetPDAlloc(PVRSRV_SGXDEV_INFO *psDevInfo);
-
-/*
-******************************************************************************
- FUNCTION: MMU_BIFResetPDFree
-
- PURPOSE: Free resources allocated in MMU_BIFResetPDAlloc.
-
- PARAMETERS: In: psDevInfo - device info
- RETURNS:
-******************************************************************************/
-IMG_VOID MMU_BIFResetPDFree(PVRSRV_SGXDEV_INFO *psDevInfo);
-
-#if defined(SUPPORT_EXTERNAL_SYSTEM_CACHE)
-/*
-******************************************************************************
- FUNCTION: MMU_MapExtSystemCacheRegs
-
- PURPOSE: maps external system cache control registers into SGX MMU
-
- PARAMETERS: In: psDeviceNode - device node
- RETURNS:
-******************************************************************************/
-PVRSRV_ERROR MMU_MapExtSystemCacheRegs(PVRSRV_DEVICE_NODE *psDeviceNode);
-
-/*
-******************************************************************************
- FUNCTION: MMU_UnmapExtSystemCacheRegs
-
- PURPOSE: unmaps external system cache control registers
-
- PARAMETERS: In: psDeviceNode - device node
- RETURNS:
-******************************************************************************/
-PVRSRV_ERROR MMU_UnmapExtSystemCacheRegs(PVRSRV_DEVICE_NODE *psDeviceNode);
-#endif /* #if defined(SUPPORT_EXTERNAL_SYSTEM_CACHE) */
-
-/*
-******************************************************************************
- FUNCTION: MMU_IsHeapShared
-
- PURPOSE: Is this heap shared?
- PARAMETERS: In: pMMU_Heap
- RETURNS: true if heap is shared
-******************************************************************************/
-IMG_BOOL MMU_IsHeapShared(MMU_HEAP* pMMU_Heap);
-
-#if defined(FIX_HW_BRN_31620)
-/*
-******************************************************************************
- FUNCTION: MMU_GetCacheFlushRange
-
- PURPOSE: Gets device physical address of the mmu context.
-
- PARAMETERS: In: pMMUContext - the mmu context
- Out: pui32RangeMask - Bit mask showing which PD cache
- lines have changed
- RETURNS: None
-******************************************************************************/
-IMG_VOID MMU_GetCacheFlushRange(MMU_CONTEXT *pMMUContext, IMG_UINT32 *pui32RangeMask);
-
-/*
-******************************************************************************
- FUNCTION: MMU_GetPDPhysAddr
-
- PURPOSE: Gets device physical address of the mmu contexts PD.
-
- PARAMETERS: In: pMMUContext - the mmu context
- Out: psDevPAddr - Address of PD
- RETURNS: None
-******************************************************************************/
-IMG_VOID MMU_GetPDPhysAddr(MMU_CONTEXT *pMMUContext, IMG_DEV_PHYADDR *psDevPAddr);
-
-#endif
-
-
-IMG_VOID MMU_CheckFaultAddr(PVRSRV_SGXDEV_INFO *psDevInfo, IMG_UINT32 ui32PDDevPAddr, IMG_UINT32 ui32RegVal);
-
-#if defined(PDUMP)
-/*
-******************************************************************************
- FUNCTION: MMU_GetPDumpContextID
-
- PURPOSE: translates device mem context to unique pdump identifier
-
- PARAMETERS: In: hDevMemContext - device memory per-process context
- RETURNS: context identifier used internally in pdump
-******************************************************************************/
-IMG_UINT32 MMU_GetPDumpContextID(IMG_HANDLE hDevMemContext);
-#endif /* #ifdef PDUMP */
-
-#endif /* #ifndef _MMU_H_ */