summaryrefslogtreecommitdiff
path: root/nvif
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2014-08-10 04:10:24 +1000
committerBen Skeggs <bskeggs@redhat.com>2014-08-10 04:43:40 +1000
commit8c59608de24a7f2be535e2185d807d6fae862d60 (patch)
treec5d6912bd45aa09be91b0887f5c70aa966eb042f /nvif
parentabde6a90a032e842f69c8c012bd3847d7b348e5d (diff)
downloadnouveau-8c59608de24a7f2be535e2185d807d6fae862d60.tar.gz
pm: audit and version NVIF_PERFMON class and methods
The full object interfaces are about to be exposed to userspace, so we need to check for any security-related issues and version the structs to make it easier to handle any changes we may need in the future. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'nvif')
-rw-r--r--nvif/class.h34
-rw-r--r--nvif/ioctl.h2
2 files changed, 36 insertions, 0 deletions
diff --git a/nvif/class.h b/nvif/class.h
index 5279d0dd4..decca22ea 100644
--- a/nvif/class.h
+++ b/nvif/class.h
@@ -151,4 +151,38 @@ struct gf110_dma_v0 {
__u8 pad03[5];
};
+
+/*******************************************************************************
+ * perfmon
+ ******************************************************************************/
+
+struct nvif_perfctr_v0 {
+ __u8 version;
+ __u8 pad01[1];
+ __u16 logic_op;
+ __u8 pad04[4];
+ char name[4][64];
+};
+
+#define NVIF_PERFCTR_V0_QUERY 0x00
+#define NVIF_PERFCTR_V0_SAMPLE 0x01
+#define NVIF_PERFCTR_V0_READ 0x02
+
+struct nvif_perfctr_query_v0 {
+ __u8 version;
+ __u8 pad01[3];
+ __u32 iter;
+ char name[64];
+};
+
+struct nvif_perfctr_sample {
+};
+
+struct nvif_perfctr_read_v0 {
+ __u8 version;
+ __u8 pad01[7];
+ __u32 ctr;
+ __u32 clk;
+};
+
#endif
diff --git a/nvif/ioctl.h b/nvif/ioctl.h
index 38f24d1e9..67a56711b 100644
--- a/nvif/ioctl.h
+++ b/nvif/ioctl.h
@@ -48,6 +48,8 @@ struct nvif_ioctl_new_v0 {
__u8 route;
__u64 token;
__u32 handle;
+/* these class numbers are made up by us, and not nvidia-assigned */
+#define NVIF_IOCTL_NEW_V0_PERFCTR 0x0000ffff
__u32 oclass;
__u8 data[]; /* class data (class.h) */
};