[PATCH i-g-t 02/15] lib/xe/oa: Add PVC support

Ashutosh Dixit ashutosh.dixit at intel.com
Fri Jul 5 18:26:23 UTC 2024


Add oa-pvc.xml and enable support for PVC.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
---
 lib/meson.build              |    5 +-
 lib/xe/oa-configs/oa-pvc.xml | 1018 ++++++++++++++++++++++++++++++++++
 lib/xe/xe_oa.c               |    4 +
 3 files changed, 1024 insertions(+), 3 deletions(-)
 create mode 100644 lib/xe/oa-configs/oa-pvc.xml

diff --git a/lib/meson.build b/lib/meson.build
index 8c032cbb66..7577bee9d3 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -403,10 +403,9 @@ xe_oa_files = [
 
 xe_oa_hardware = [
   'tglgt1', 'tglgt2',
-  'dg1',
-  'rkl',
-  'adl',
+  'dg1', 'rkl', 'adl',
   'acmgt1', 'acmgt2', 'acmgt3',
+  'pvc',
   'mtlgt2', 'mtlgt3',
   'lnl',
 ]
diff --git a/lib/xe/oa-configs/oa-pvc.xml b/lib/xe/oa-configs/oa-pvc.xml
new file mode 100644
index 0000000000..9d212e65ad
--- /dev/null
+++ b/lib/xe/oa-configs/oa-pvc.xml
@@ -0,0 +1,1018 @@
+<?xml version="1.0"?>
+<metrics version="1619079818" merge_md5="">
+  <set name="Compute Metrics Basic"
+       chipset="PVC"
+       symbol_name="ComputeBasic"
+       underscore_name="compute_basic"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="8d637649-e8f5-4f80-83a4-6575b05d52d8"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="AVG GPU Core Frequency"
+             symbol_name="AvgGpuCoreFrequency"
+             underscore_name="avg_gpu_core_frequency"
+             description="Average GPU Core Frequency in the measurement."
+             data_type="uint64"
+             max_equation="$GpuMaxFrequency"
+             units="hz"
+             semantic_type="event"
+             equation="$GpuCoreClocks 1000000000 UMUL $GpuTime UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Memory Accesses"
+             symbol_name="ShaderMemoryAccesses"
+             underscore_name="shader_memory_accesses"
+             description="The total number of shader memory accesses to L3."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 32 READ"
+             mdapi_group="L3/Data Port"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Atomic Memory Accesses"
+             symbol_name="ShaderAtomics"
+             underscore_name="shader_atomics"
+             description="The total number of shader atomic memory accesses."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 34 READ"
+             mdapi_group="L3/Data Port/Atomics"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Shader Barrier Messages"
+             symbol_name="ShaderBarriers"
+             underscore_name="shader_barriers"
+             description="The total number of shader barrier messages."
+             data_type="uint64"
+             units="messages"
+             semantic_type="event"
+             equation="A 35 READ"
+             mdapi_group="EU Array/Barrier"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Reads"
+             symbol_name="SlmReads"
+             underscore_name="slm_reads"
+             description="The total number of reads from shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $EuSubslicesTotalCount UMUL"
+             units="events"
+             semantic_type="event"
+             equation="A 30 READ"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SLM Writes"
+             symbol_name="SlmWrites"
+             underscore_name="slm_writes"
+             description="The total number of writes to shared local memory."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $EuSubslicesTotalCount UMUL"
+             units="events"
+             semantic_type="event"
+             equation="A 31 READ"
+             mdapi_group="L3/Data Port/SLM"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Read Throughput"
+             symbol_name="GtiReadThroughput"
+             underscore_name="gti_read_throughput"
+             description="The total number of GPU memory bytes read from GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 36 READ UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Throughput"
+             symbol_name="GtiWriteThroughput"
+             underscore_name="gti_write_throughput"
+             description="The total number of GPU memory bytes written to GTI."
+             data_type="uint64"
+             max_equation="$GpuCoreClocks 64 UMUL"
+             units="bytes"
+             semantic_type="throughput"
+             equation="128  A 37 READ UMUL"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Active"
+             symbol_name="EU_ACTIVE_CYCLES"
+             underscore_name="eu_active_cycles"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EU_STALL_CYCLES"
+             underscore_name="eu_stall_cycles"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU FPU Pipe Active"
+             symbol_name="EU_INST_EXECUTED_ALU0_ALL"
+             underscore_name="eu_inst_executed_alu0_all"
+             description="The percentage of time in which EU FPU INT64 pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 9 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM Pipe Active"
+             symbol_name="EU_INST_EXECUTED_ALU1_ALL"
+             underscore_name="eu_inst_executed_alu1_all"
+             description="The percentage of time in which EU EM INT pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 10 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SYS Pipe Active"
+             symbol_name="EU_INST_EXECUTED_SYSTOLIC_ALL"
+             underscore_name="eu_inst_executed_systolic_all"
+             description="The percentage of time in which EU SYS pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Send Pipe Active"
+             symbol_name="EU_INST_EXECUTED_SEND_ALL"
+             underscore_name="eu_inst_executed_send_all"
+             description="The percentage of time in which EU send pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM JEU Instruction"
+             symbol_name="EU_INST_EXECUTED_CONTROL_ALL"
+             underscore_name="eu_inst_executed_control_all"
+             description="The percentage of time in which JEU instruction were processed actively on EM INT pipeline."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="EU_PIPE_ALU0_AND_ALU1_ACTIVE_CYCLES"
+             underscore_name="eu_pipe_alu0_and_alu1_active_cycles"
+             description="The percentage of time in which EU EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 15 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SYS And FPU Pipes Active"
+             symbol_name="EU_PIPE_ALU0_AND_SYSTOLIC_ACTIVE_CYCLES"
+             underscore_name="eu_pipe_alu0_and_systolic_active_cycles"
+             description="The percentage of time in which EU Systolic and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EU_THREADS_OCCUPANCY_ALL"
+             underscore_name="eu_threads_occupancy_all"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 16 READ FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SYSMEM_TRANSACTION_READ"
+             symbol_name="SYSMEM_TRANSACTION_READ"
+             underscore_name="sysmem_transaction_read"
+             description="The number of system memory reads (upstream)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SYSMEM_TRANSACTION_WRITE"
+             symbol_name="SYSMEM_TRANSACTION_WRITE"
+             underscore_name="sysmem_transaction_write"
+             description="The number of system memory writes  (upstream)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 6 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HOST_TO_GPUMEM_TRANSACTION_READ"
+             symbol_name="HOST_TO_GPUMEM_TRANSACTION_READ"
+             underscore_name="host_to_gpumem_transaction_read"
+             description="Host reads to GPU local (HBM) memory (downstream)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 5 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="HOST_TO_GPUMEM_TRANSACTION_WRITE"
+             symbol_name="HOST_TO_GPUMEM_TRANSACTION_WRITE"
+             underscore_name="host_to_gpumem_transaction_write"
+             description="Host writes to GPU local (HBM) memory (downstream)"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 4 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI0"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI0"
+             underscore_name="gpu_memory_request_queue_full_sqidi0"
+             description="The The percentage of time in which SQ 0 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 3 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI1"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI1"
+             underscore_name="gpu_memory_request_queue_full_sqidi1"
+             description="The The percentage of time in which SQ 1 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 2 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI2"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI2"
+             underscore_name="gpu_memory_request_queue_full_sqidi2"
+             description="The The percentage of time in which SQ 2 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 1 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI3"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI3"
+             underscore_name="gpu_memory_request_queue_full_sqidi3"
+             description="The The percentage of time in which SQ 3 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI4"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI4"
+             underscore_name="gpu_memory_request_queue_full_sqidi4"
+             description="The The percentage of time in which SQ 4 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 7 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI8"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI8"
+             underscore_name="gpu_memory_request_queue_full_sqidi8"
+             description="The The percentage of time in which SQ 8 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU_MEMORY_REQUEST_QUEUE_FULL _SQIDI12"
+             symbol_name="GPU_MEMORY_REQUEST_QUEUE_FULL_SQIDI12"
+             underscore_name="gpu_memory_request_queue_full_sqidi12"
+             description="The The percentage of time in which SQ 12 is filled above a threshold (usually 48 entries)"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x0000000C" />
+        <register type="NOA" address="0x00009888" value="0x14307FC0" />
+        <register type="NOA" address="0x00009888" value="0x04306000" />
+        <register type="NOA" address="0x00009888" value="0x14003400" />
+        <register type="NOA" address="0x00009888" value="0x14013400" />
+        <register type="NOA" address="0x00009888" value="0x14023400" />
+        <register type="NOA" address="0x00009888" value="0x14033400" />
+        <register type="NOA" address="0x00009888" value="0x14083400" />
+        <register type="NOA" address="0x00009888" value="0x140C3400" />
+        <register type="NOA" address="0x00009888" value="0x14043400" />
+        <register type="NOA" address="0x00009888" value="0x1A100090" />
+        <register type="NOA" address="0x00009888" value="0x1A110009" />
+        <register type="NOA" address="0x00009888" value="0x00142000" />
+        <register type="NOA" address="0x00009888" value="0x0050FFE0" />
+        <register type="NOA" address="0x00009888" value="0x00300240" />
+        <register type="NOA" address="0x00009888" value="0x0E300695" />
+        <register type="NOA" address="0x00009888" value="0x10300824" />
+        <register type="NOA" address="0x00009888" value="0x02300000" />
+        <register type="NOA" address="0x00009888" value="0x00000002" />
+        <register type="NOA" address="0x00009888" value="0x0E000080" />
+        <register type="NOA" address="0x00009888" value="0x04000000" />
+        <register type="NOA" address="0x00009888" value="0x00010002" />
+        <register type="NOA" address="0x00009888" value="0x0E010002" />
+        <register type="NOA" address="0x00009888" value="0x04010000" />
+        <register type="NOA" address="0x00009888" value="0x00020002" />
+        <register type="NOA" address="0x00009888" value="0x0C020080" />
+        <register type="NOA" address="0x00009888" value="0x04020000" />
+        <register type="NOA" address="0x00009888" value="0x00030002" />
+        <register type="NOA" address="0x00009888" value="0x0C030002" />
+        <register type="NOA" address="0x00009888" value="0x04030000" />
+        <register type="NOA" address="0x00009888" value="0x00080002" />
+        <register type="NOA" address="0x00009888" value="0x0A080002" />
+        <register type="NOA" address="0x00009888" value="0x04080000" />
+        <register type="NOA" address="0x00009888" value="0x00128000" />
+        <register type="NOA" address="0x00009888" value="0x00160800" />
+        <register type="NOA" address="0x00009888" value="0x000C0002" />
+        <register type="NOA" address="0x00009888" value="0x080C0080" />
+        <register type="NOA" address="0x00009888" value="0x040C0000" />
+        <register type="NOA" address="0x00009888" value="0x00040002" />
+        <register type="NOA" address="0x00009888" value="0x0A040080" />
+        <register type="NOA" address="0x00009888" value="0x04040000" />
+        <register type="NOA" address="0x00009888" value="0x2C500000" />
+        <register type="NOA" address="0x00009888" value="0x2E500400" />
+        <register type="NOA" address="0x00009888" value="0x30500000" />
+        <register type="NOA" address="0x00009888" value="0x18500000" />
+        <register type="NOA" address="0x00009888" value="0x32500A05" />
+        <register type="NOA" address="0x00009888" value="0x20500030" />
+        <register type="NOA" address="0x00009888" value="0x22500603" />
+        <register type="NOA" address="0x00009888" value="0x24500030" />
+        <register type="NOA" address="0x00009888" value="0x26500603" />
+        <register type="NOA" address="0x00009884" value="0x00000008" />
+        <register type="NOA" address="0x00009888" value="0x01404400" />
+        <register type="NOA" address="0x00009888" value="0x01414400" />
+        <register type="NOA" address="0x00009888" value="0x030755A0" />
+        <register type="NOA" address="0x00009888" value="0x0308AA00" />
+        <register type="NOA" address="0x00009888" value="0x01000040" />
+        <register type="NOA" address="0x00009888" value="0x01010040" />
+        <register type="NOA" address="0x00009888" value="0x01021000" />
+        <register type="NOA" address="0x00009888" value="0x01036400" />
+        <register type="NOA" address="0x00009888" value="0x0104A800" />
+        <register type="NOA" address="0x00009888" value="0x03045555" />
+        <register type="NOA" address="0x00009888" value="0x0305555A" />
+        <register type="NOA" address="0x00009888" value="0x0106FC00" />
+        <register type="NOA" address="0x00009888" value="0x01190400" />
+        <register type="NOA" address="0x00009888" value="0x011B0400" />
+        <register type="NOA" address="0x00009888" value="0x011C4800" />
+        <register type="NOA" address="0x00009888" value="0x011E4000" />
+        <register type="NOA" address="0x00009888" value="0x01108000" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0x00800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x00800000" />
+        <register type="OA" address="0x0000DC40" value="0x00000000" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00001000" />
+        <register type="FLEX" address="0x0000E658" value="0x00001002" />
+        <register type="FLEX" address="0x0000E758" value="0x0000A009" />
+        <register type="FLEX" address="0x0000E45C" value="0x00008003" />
+    </register_config>
+  </set>
+
+  <set name="TestOa"
+       chipset="PVC"
+       symbol_name="TestOa"
+       underscore_name="test_oa"
+       mdapi_supported_apis="VK OGL OCL IO"
+       hw_config_guid="339a376a-4696-4e0d-812a-5fd13b0e1aa8"
+       >
+    <counter name="GPU Time Elapsed"
+             symbol_name="GpuTime"
+             underscore_name="gpu_time"
+             description="Time elapsed on the GPU during the measurement."
+             data_type="uint64"
+             units="ns"
+             semantic_type="duration"
+             equation="GPU_TIME 0 READ 1000000000 UMUL $GpuTimestampFrequency UDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Core Clocks"
+             symbol_name="GpuCoreClocks"
+             underscore_name="gpu_core_clocks"
+             description="The total number of GPU core clocks elapsed during the measurement."
+             data_type="uint64"
+             units="cycles"
+             semantic_type="event"
+             equation="GPU_CLOCK 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter0"
+             symbol_name="Counter0"
+             underscore_name="counter0"
+             description="HW test counter 0. Factor: 0.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 0 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter1"
+             symbol_name="Counter1"
+             underscore_name="counter1"
+             description="HW test counter 1. Factor: 1.0"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 1 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter3"
+             symbol_name="Counter3"
+             underscore_name="counter3"
+             description="HW test counter 3. Factor: 0.5"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 2 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter4"
+             symbol_name="Counter4"
+             underscore_name="counter4"
+             description="HW test counter 4. Factor: 0.3333"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 3 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter5"
+             symbol_name="Counter5"
+             underscore_name="counter5"
+             description="HW test counter 5. Factor: 0.3333"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="B 4 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="TestCounter8"
+             symbol_name="Counter8"
+             underscore_name="counter8"
+             description="HW test counter 8. Should be equal to 1 in IOStream or in OAG query mode"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 7 READ"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="L3_BANK_INPUT_AVAILABLE _L3BANK0"
+             symbol_name="L3_BANK_INPUT_AVAILABLE_L3BANK0"
+             underscore_name="l3_bank_input_available_l3_bank0"
+             description="The percentage of time in which l3 bank 0 input is available"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="1"
+             mdapi_group="GTI/L3"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice_bank"
+             />
+    <counter name="L3_OUTPUT_READY _L3BANK0"
+             symbol_name="L3_OUTPUT_READY_L3BANK0"
+             underscore_name="l3_output_ready_l3_bank0"
+             description="The percentage of time in which l3 bank 0 output is ready"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="C 3 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="1"
+             mdapi_group="GTI/L3"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice_bank"
+             />
+    <counter name="L3_READ _L3BANK0"
+             symbol_name="L3_READ_L3BANK0"
+             underscore_name="l3_read_l3_bank0"
+             description="The number of L3 bank 0 read requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 5 READ"
+             availability="1"
+             mdapi_group="GTI/L3"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice_bank"
+             />
+    <counter name="L3_WRITE _L3BANK0"
+             symbol_name="L3_WRITE_L3BANK0"
+             underscore_name="l3_write_l3_bank0"
+             description="The number of L3 Bank 0 write requests"
+             data_type="uint64"
+             units="events"
+             semantic_type="event"
+             equation="C 4 READ"
+             availability="1"
+             mdapi_group="GTI/L3"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="subslice_bank"
+             />
+    <counter name="THREADGROUP_DISPATCH_QUEUE0_ACTIVE_CYCLES _DUALSUBSLICE0"
+             symbol_name="THREADGROUP_DISPATCH_QUEUE0_ACTIVE_CYCLES_DUALSUBSLICE0"
+             underscore_name="threadgroup_dispatch_queue0_active_cycles_dualsubslice0"
+             description="The percentage of time in which non-PS thread is ready for dispatch in thread dispatcher 0 queue 0"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 5 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="THREADGROUP_DISPATCH_QUEUE1_ACTIVE_CYCLES _DUALSUBSLICE0"
+             symbol_name="THREADGROUP_DISPATCH_QUEUE1_ACTIVE_CYCLES_DUALSUBSLICE0"
+             underscore_name="threadgroup_dispatch_queue1_active_cycles_dualsubslice0"
+             description="The percentage of time in which non-PS thread is ready for dispatch in thread dispatcher 0 queue 1"
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="B 6 READ 100 UMUL $GpuCoreClocks FDIV"
+             availability="$DualSubsliceMask 1 AND"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="dualsubslice"
+             />
+    <counter name="EU Active"
+             symbol_name="EuActive"
+             underscore_name="eu_active"
+             description="The percentage of time in which the Execution Units were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 7 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Stall"
+             symbol_name="EuStall"
+             underscore_name="eu_stall"
+             description="The percentage of time in which the Execution Units were stalled."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 8 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU Thread Occupancy"
+             symbol_name="EuThreadOccupancy"
+             underscore_name="eu_thread_occupancy"
+             description="The percentage of time in which hardware threads occupied EUs."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="8 A 10 READ FMUL $EuThreadsCount FDIV $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array"
+             mdapi_usage_flags="Tier2 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EU FPU Pipe Active"
+             symbol_name="FpuActive"
+             underscore_name="fpu_active"
+             description="The percentage of time in which EU FPU INT64 pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 11 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM Pipe Active"
+             symbol_name="EmActive"
+             underscore_name="em_active"
+             description="The percentage of time in which EU EM INT pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 12 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SYS Pipe Active"
+             symbol_name="SysActive"
+             underscore_name="sys_active"
+             description="The percentage of time in which EU SYS pipeline was actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 13 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="EM And FPU Pipes Active"
+             symbol_name="EmFpuActive"
+             underscore_name="em_fpu_active"
+             description="The percentage of time in which EU EM INT and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 9 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="SYS And FPU Pipes Active"
+             symbol_name="SysFpuActive"
+             underscore_name="sys_fpu_active"
+             description="The percentage of time in which EU Systolic and FPU INT64 pipelines were actively processing."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 14 READ $EuCoresTotalCount UDIV 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="EU Array/Pipes"
+             mdapi_usage_flags="Tier3 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="CS Threads Dispatched"
+             symbol_name="CsThreads"
+             underscore_name="cs_threads"
+             description="The total number of compute shader hardware threads dispatched."
+             data_type="uint64"
+             units="threads"
+             semantic_type="event"
+             equation="A 4 READ"
+             mdapi_group="EU Array/Compute Shader"
+             mdapi_usage_flags="Tier3 Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GPU Busy"
+             symbol_name="GpuBusy"
+             underscore_name="gpu_busy"
+             description="The percentage of time in which the GPU has been processing GPU commands."
+             data_type="float"
+             max_equation="100"
+             units="percent"
+             semantic_type="duration"
+             equation="A 0 READ 100 UMUL $GpuCoreClocks FDIV"
+             mdapi_group="GPU"
+             mdapi_usage_flags="Tier1 Overview System Frame"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="Gti Read Transactions"
+             symbol_name="GtiReadTransactions"
+             underscore_name="gti_read_transactions"
+             description="The total number of read transactions sent to GTI interfaces"
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $EuSlicesTotalCount 4 UGT 8 UMUL $EuSlicesTotalCount 4 ULTE $EuSlicesTotalCount 1 UADD 0x6 AND UMUL UADD UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 36 READ"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <counter name="GTI Write Transactions"
+             symbol_name="GtiWriteTransactions"
+             underscore_name="gti_write_transactions"
+             description="The total number of write transactions sent to GTI interfaces"
+             data_type="uint64"
+             max_equation="$GpuCoreClocks $EuSlicesTotalCount 4 UGT 8 UMUL $EuSlicesTotalCount 4 ULTE $EuSlicesTotalCount 1 UADD 0x6 AND UMUL UADD UMUL"
+             units="messages"
+             semantic_type="event"
+             equation="A 37 READ"
+             mdapi_group="GTI"
+             mdapi_usage_flags="Tier1 Overview System Frame Batch Draw"
+             mdapi_supported_apis=""
+             mdapi_hw_unit_type="gpu"
+             />
+    <register_config type="NOA">
+        <register type="NOA" address="0x00000D04" value="0x00000200" />
+        <register type="NOA" address="0x00009884" value="0x00000008" />
+        <register type="NOA" address="0x00009888" value="0x3B410000" />
+        <register type="NOA" address="0x00009888" value="0x0140000A" />
+        <register type="NOA" address="0x00009888" value="0x33406A80" />
+        <register type="NOA" address="0x00009888" value="0x07410006" />
+        <register type="NOA" address="0x00009888" value="0x17410033" />
+        <register type="NOA" address="0x00009888" value="0x03410000" />
+        <register type="NOA" address="0x00009888" value="0x4F410000" />
+        <register type="NOA" address="0x00009888" value="0x01030005" />
+        <register type="NOA" address="0x00009888" value="0x03035540" />
+        <register type="NOA" address="0x00009888" value="0x0104000A" />
+        <register type="NOA" address="0x00009888" value="0x0304AA80" />
+        <register type="NOA" address="0x00009888" value="0x1D500003" />
+        <register type="NOA" address="0x00009888" value="0x02E71540" />
+        <register type="NOA" address="0x00009888" value="0x02EA2A80" />
+        <register type="NOA" address="0x00009888" value="0x02E82A80" />
+        <register type="NOA" address="0x00009888" value="0x00F07803" />
+        <register type="NOA" address="0x00009888" value="0x00F10005" />
+        <register type="NOA" address="0x00009888" value="0x02F12A80" />
+        <register type="NOA" address="0x00009888" value="0x00F20003" />
+        <register type="NOA" address="0x00009888" value="0x22F30012" />
+        <register type="NOA" address="0x00009888" value="0x26F32490" />
+        <register type="NOA" address="0x00009888" value="0x00F4000A" />
+        <register type="NOA" address="0x00009888" value="0x22D3003F" />
+        <register type="NOA" address="0x00009884" value="0x00000004" />
+        <register type="NOA" address="0x00009888" value="0x044C2000" />
+        <register type="NOA" address="0x00009888" value="0x064C6000" />
+        <register type="NOA" address="0x00009888" value="0x004C0010" />
+        <register type="NOA" address="0x00009888" value="0x0E4C0180" />
+        <register type="NOA" address="0x00009888" value="0x104C0305" />
+        <register type="NOA" address="0x00009888" value="0x124C0007" />
+        <register type="NOA" address="0x00009884" value="0x0000000C" />
+        <register type="NOA" address="0x00009888" value="0x0050F803" />
+        <register type="NOA" address="0x00009888" value="0x1C500000" />
+        <register type="NOA" address="0x00009888" value="0x1E500000" />
+        <register type="NOA" address="0x00009888" value="0x28500000" />
+        <register type="NOA" address="0x00009888" value="0x18500000" />
+        <register type="NOA" address="0x00009888" value="0x20500000" />
+        <register type="NOA" address="0x00009888" value="0x22500C06" />
+        <register type="NOA" address="0x00009888" value="0x24500060" />
+        <register type="NOA" address="0x00009888" value="0x26501606" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x28036400" />
+        <register type="NOA" address="0x00009888" value="0x2A030080" />
+        <register type="NOA" address="0x00009888" value="0x06031300" />
+        <register type="NOA" address="0x00009888" value="0x08030FB0" />
+        <register type="NOA" address="0x00009888" value="0x00030000" />
+        <register type="NOA" address="0x00009888" value="0x00C00005" />
+        <register type="NOA" address="0x00009888" value="0x00C1000F" />
+        <register type="NOA" address="0x00009888" value="0x00C2000F" />
+        <register type="NOA" address="0x00009888" value="0x00C3001B" />
+        <register type="NOA" address="0x00009884" value="0x00000000" />
+        <register type="NOA" address="0x00009888" value="0x5C030002" />
+    </register_config>
+    <register_config type="OA">
+        <register type="OA" address="0x0000D920" value="0x00000000" />
+        <register type="OA" address="0x0000D900" value="0x00000000" />
+        <register type="OA" address="0x0000D904" value="0xF0800000" />
+        <register type="OA" address="0x0000D910" value="0x00000000" />
+        <register type="OA" address="0x0000D914" value="0x70800000" />
+        <register type="OA" address="0x0000DC40" value="0x007F0000" />
+        <register type="OA" address="0x0000D940" value="0x00000004" />
+        <register type="OA" address="0x0000D944" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC00" value="0x00000004" />
+        <register type="OA" address="0x0000DC04" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D948" value="0x00000003" />
+        <register type="OA" address="0x0000D94C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000DC08" value="0x00000003" />
+        <register type="OA" address="0x0000DC0C" value="0x0000FFFF" />
+        <register type="OA" address="0x0000D950" value="0x00100002" />
+        <register type="OA" address="0x0000D954" value="0x0000FFFB" />
+        <register type="OA" address="0x0000DC10" value="0x00100002" />
+        <register type="OA" address="0x0000DC14" value="0x0000FFFB" />
+        <register type="OA" address="0x0000D958" value="0x00100002" />
+        <register type="OA" address="0x0000D95C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000DC18" value="0x00100002" />
+        <register type="OA" address="0x0000DC1C" value="0x0000FFE7" />
+        <register type="OA" address="0x0000D960" value="0x00100042" />
+        <register type="OA" address="0x0000D964" value="0x0000FFF7" />
+        <register type="OA" address="0x0000DC20" value="0x00100042" />
+        <register type="OA" address="0x0000DC24" value="0x0000FFF7" />
+        <register type="OA" address="0x0000D968" value="0x00000002" />
+        <register type="OA" address="0x0000D96C" value="0x0000FFFE" />
+        <register type="OA" address="0x0000DC28" value="0x00000002" />
+        <register type="OA" address="0x0000DC2C" value="0x0000FFFE" />
+        <register type="OA" address="0x0000D970" value="0x00000002" />
+        <register type="OA" address="0x0000D974" value="0x0000FFFD" />
+        <register type="OA" address="0x0000DC30" value="0x00000002" />
+        <register type="OA" address="0x0000DC34" value="0x0000FFFD" />
+        <register type="OA" address="0x00002B2C" value="0x00000000" />
+    </register_config>
+    <register_config type="FLEX">
+        <register type="FLEX" address="0x0000E458" value="0x00005004" />
+        <register type="FLEX" address="0x0000E558" value="0x00008003" />
+        <register type="FLEX" address="0x0000E658" value="0x00001000" />
+        <register type="FLEX" address="0x0000E758" value="0x0000A009" />
+    </register_config>
+  </set>
+
+</metrics>
diff --git a/lib/xe/xe_oa.c b/lib/xe/xe_oa.c
index 98c53620d3..7974584392 100644
--- a/lib/xe/xe_oa.c
+++ b/lib/xe/xe_oa.c
@@ -36,6 +36,7 @@
 #include "xe_oa_metrics_acmgt3.h"
 #include "xe_oa_metrics_mtlgt2.h"
 #include "xe_oa_metrics_mtlgt3.h"
+#include "xe_oa_metrics_pvc.h"
 #include "xe_oa_metrics_lnl.h"
 
 static struct intel_xe_perf_logical_counter_group *
@@ -296,6 +297,9 @@ intel_xe_perf_for_devinfo(uint32_t device_id,
 			intel_xe_perf_load_metrics_acmgt3(perf);
 		else
 			return unsupported_xe_oa_platform(perf);
+	} else if (devinfo->is_pontevecchio) {
+		perf->devinfo.eu_threads_count = 8;
+		intel_xe_perf_load_metrics_pvc(perf);
 	} else if (intel_graphics_ver(device_id) >= IP_VER(20, 0)) {
 		intel_xe_perf_load_metrics_lnl(perf);
 	} else {
-- 
2.41.0



More information about the igt-dev mailing list