[PATCH 80/83] drm/radeon: Add register access functions to kfd2kgd interface

2014-07-10 Thread Oded Gabbay
From: Ben Goz 

This patch extends the kfd2kgd interface by adding functions
that perform direct register access.

These functions can be called from kfd and will allow to
eliminate all direct register accesses from within the kfd.

Signed-off-by: Ben Goz 
Signed-off-by: Oded Gabbay 
---
 drivers/gpu/drm/radeon/cikd.h   |  51 +-
 drivers/gpu/drm/radeon/radeon_kfd.c | 354 
 include/linux/radeon_kfd.h  |  11 ++
 3 files changed, 415 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/radeon/cikd.h b/drivers/gpu/drm/radeon/cikd.h
index 0c6e1b5..0a2a403 100644
--- a/drivers/gpu/drm/radeon/cikd.h
+++ b/drivers/gpu/drm/radeon/cikd.h
@@ -1137,6 +1137,9 @@
 #defineSH_MEM_ALIGNMENT_MODE_UNALIGNED 
3
 #defineDEFAULT_MTYPE(x)((x) << 
4)
 #defineAPE1_MTYPE(x)   ((x) << 
7)
+/* valid for both DEFAULT_MTYPE and APE1_MTYPE */
+#defineMTYPE_CACHED0
+#defineMTYPE_NONCACHED 3
 
 #defineSX_DEBUG_1  0x9060
 
@@ -1447,6 +1450,16 @@
 #define CP_HQD_ACTIVE 0xC91C
 #define CP_HQD_VMID   0xC920
 
+#define CP_HQD_PERSISTENT_STATE
0xC924u
+#defineDEFAULT_CP_HQD_PERSISTENT_STATE 
(0x33U << 8)
+
+#define CP_HQD_PIPE_PRIORITY   
0xC928u
+#define CP_HQD_QUEUE_PRIORITY  
0xC92Cu
+#define CP_HQD_QUANTUM 
0xC930u
+#defineQUANTUM_EN  
1U
+#defineQUANTUM_SCALE_1MS   
(1U << 4)
+#defineQUANTUM_DURATION(x) 
((x) << 8)
+
 #define CP_HQD_PQ_BASE0xC934
 #define CP_HQD_PQ_BASE_HI 0xC938
 #define CP_HQD_PQ_RPTR0xC93C
@@ -1474,12 +1487,32 @@
 #definePRIV_STATE  (1 << 30)
 #defineKMD_QUEUE   (1 << 31)
 
-#define CP_HQD_DEQUEUE_REQUEST  0xC974
+#define CP_HQD_IB_BASE_ADDR0xC95Cu
+#define CP_HQD_IB_BASE_ADDR_HI 0xC960u
+#define CP_HQD_IB_RPTR 0xC964u
+#define CP_HQD_IB_CONTROL  0xC968u
+#defineIB_ATC_EN   
(1U << 23)
+#defineDEFAULT_MIN_IB_AVAIL_SIZE   (3U << 20)
+
+#define CP_HQD_DEQUEUE_REQUEST 0xC974
+#defineDEQUEUE_REQUEST_DRAIN   1
+#define DEQUEUE_REQUEST_RESET  2
 
 #define CP_MQD_CONTROL  0xC99C
 #defineMQD_VMID(x) ((x) << 0)
 #defineMQD_VMID_MASK   (0xf << 0)
 
+#define CP_HQD_SEMA_CMD0xC97Cu
+#define CP_HQD_MSG_TYPE0xC980u
+#define CP_HQD_ATOMIC0_PREOP_LO0xC984u
+#define CP_HQD_ATOMIC0_PREOP_HI0xC988u
+#define CP_HQD_ATOMIC1_PREOP_LO0xC98Cu
+#define CP_HQD_ATOMIC1_PREOP_HI0xC990u
+#define CP_HQD_HQ_SCHEDULER0   0xC994u
+#define CP_HQD_HQ_SCHEDULER1   0xC998u
+
+#define SH_STATIC_MEM_CONFIG   0x9604u
+
 #define DB_RENDER_CONTROL   0x28000
 
 #define PA_SC_RASTER_CONFIG 0x28350
@@ -2069,4 +2102,20 @@
 #define VCE_CMD_IB_AUTO0x0005
 #define VCE_CMD_SEMAPHORE  0x0006
 
+#define ATC_VMID0_PASID_MAPPING0x339Cu
+#defineATC_VMID_PASID_MAPPING_UPDATE_STATUS0x3398u
+#defineATC_VMID_PASID_MAPPING_VALID(1U << 
31)
+
+#define ATC_VM_APERTURE0_CNTL  0x3310u
+#defineATS_ACCESS_MODE_NEVER   0
+#defineATS_ACCESS_MODE_ALWAYS  
1
+
+#define ATC_VM_APERTURE0_CNTL2 0x3318u
+#define ATC_VM_APERTURE0_HIGH_ADDR 0x3308u
+#define ATC_VM_APERTURE0_LOW_ADDR  0x3300u
+#define ATC_VM_APERTURE1_CNTL

[PATCH 80/83] drm/radeon: Add register access functions to kfd2kgd interface

2014-07-10 Thread Oded Gabbay
From: Ben Goz ben@amd.com

This patch extends the kfd2kgd interface by adding functions
that perform direct register access.

These functions can be called from kfd and will allow to
eliminate all direct register accesses from within the kfd.

Signed-off-by: Ben Goz ben@amd.com
Signed-off-by: Oded Gabbay oded.gab...@amd.com
---
 drivers/gpu/drm/radeon/cikd.h   |  51 +-
 drivers/gpu/drm/radeon/radeon_kfd.c | 354 
 include/linux/radeon_kfd.h  |  11 ++
 3 files changed, 415 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/radeon/cikd.h b/drivers/gpu/drm/radeon/cikd.h
index 0c6e1b5..0a2a403 100644
--- a/drivers/gpu/drm/radeon/cikd.h
+++ b/drivers/gpu/drm/radeon/cikd.h
@@ -1137,6 +1137,9 @@
 #defineSH_MEM_ALIGNMENT_MODE_UNALIGNED 
3
 #defineDEFAULT_MTYPE(x)((x)  
4)
 #defineAPE1_MTYPE(x)   ((x)  
7)
+/* valid for both DEFAULT_MTYPE and APE1_MTYPE */
+#defineMTYPE_CACHED0
+#defineMTYPE_NONCACHED 3
 
 #defineSX_DEBUG_1  0x9060
 
@@ -1447,6 +1450,16 @@
 #define CP_HQD_ACTIVE 0xC91C
 #define CP_HQD_VMID   0xC920
 
+#define CP_HQD_PERSISTENT_STATE
0xC924u
+#defineDEFAULT_CP_HQD_PERSISTENT_STATE 
(0x33U  8)
+
+#define CP_HQD_PIPE_PRIORITY   
0xC928u
+#define CP_HQD_QUEUE_PRIORITY  
0xC92Cu
+#define CP_HQD_QUANTUM 
0xC930u
+#defineQUANTUM_EN  
1U
+#defineQUANTUM_SCALE_1MS   
(1U  4)
+#defineQUANTUM_DURATION(x) 
((x)  8)
+
 #define CP_HQD_PQ_BASE0xC934
 #define CP_HQD_PQ_BASE_HI 0xC938
 #define CP_HQD_PQ_RPTR0xC93C
@@ -1474,12 +1487,32 @@
 #definePRIV_STATE  (1  30)
 #defineKMD_QUEUE   (1  31)
 
-#define CP_HQD_DEQUEUE_REQUEST  0xC974
+#define CP_HQD_IB_BASE_ADDR0xC95Cu
+#define CP_HQD_IB_BASE_ADDR_HI 0xC960u
+#define CP_HQD_IB_RPTR 0xC964u
+#define CP_HQD_IB_CONTROL  0xC968u
+#defineIB_ATC_EN   
(1U  23)
+#defineDEFAULT_MIN_IB_AVAIL_SIZE   (3U  20)
+
+#define CP_HQD_DEQUEUE_REQUEST 0xC974
+#defineDEQUEUE_REQUEST_DRAIN   1
+#define DEQUEUE_REQUEST_RESET  2
 
 #define CP_MQD_CONTROL  0xC99C
 #defineMQD_VMID(x) ((x)  0)
 #defineMQD_VMID_MASK   (0xf  0)
 
+#define CP_HQD_SEMA_CMD0xC97Cu
+#define CP_HQD_MSG_TYPE0xC980u
+#define CP_HQD_ATOMIC0_PREOP_LO0xC984u
+#define CP_HQD_ATOMIC0_PREOP_HI0xC988u
+#define CP_HQD_ATOMIC1_PREOP_LO0xC98Cu
+#define CP_HQD_ATOMIC1_PREOP_HI0xC990u
+#define CP_HQD_HQ_SCHEDULER0   0xC994u
+#define CP_HQD_HQ_SCHEDULER1   0xC998u
+
+#define SH_STATIC_MEM_CONFIG   0x9604u
+
 #define DB_RENDER_CONTROL   0x28000
 
 #define PA_SC_RASTER_CONFIG 0x28350
@@ -2069,4 +2102,20 @@
 #define VCE_CMD_IB_AUTO0x0005
 #define VCE_CMD_SEMAPHORE  0x0006
 
+#define ATC_VMID0_PASID_MAPPING0x339Cu
+#defineATC_VMID_PASID_MAPPING_UPDATE_STATUS0x3398u
+#defineATC_VMID_PASID_MAPPING_VALID(1U  
31)
+
+#define ATC_VM_APERTURE0_CNTL  0x3310u
+#defineATS_ACCESS_MODE_NEVER   0
+#defineATS_ACCESS_MODE_ALWAYS  
1
+
+#define ATC_VM_APERTURE0_CNTL2 0x3318u
+#define ATC_VM_APERTURE0_HIGH_ADDR 0x3308u
+#define ATC_VM_APERTURE0_LOW_ADDR  0x3300u
+#define