summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>2015-06-07 22:40:19 +0200
committerBen Skeggs <bskeggs@redhat.com>2015-08-28 12:37:23 +1000
commit6161834e83500cd950667c1ebb6d4506ee3b0fca (patch)
tree00d926a1baba442c3717c34f3ea128aa8cb9cb24
parent021e8fed44ce8bd006a23cee01957dbc5d7fda9e (diff)
pm: change signal iter to u16
16 bits is large enough to store the maximum number of signals available for one domain (i.e. 256). Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r--bin/nv_perfmon.c4
-rw-r--r--drm/nouveau/include/nvif/class.h7
-rw-r--r--drm/nouveau/nvkm/engine/pm/base.c10
-rw-r--r--drm/nouveau/nvkm/engine/pm/priv.h2
4 files changed, 12 insertions, 11 deletions
diff --git a/bin/nv_perfmon.c b/bin/nv_perfmon.c
index 958520eb..043d8643 100644
--- a/bin/nv_perfmon.c
+++ b/bin/nv_perfmon.c
@@ -289,7 +289,7 @@ ui_perfmon_query_signals(struct nvif_object *perfmon,
args.domain = dom->id;
do {
- u32 prev_iter = args.iter;
+ u16 prev_iter = args.iter;
args.name[0] = '\0';
ret = nvif_mthd(perfmon, NVIF_PERFMON_V0_QUERY_SIGNAL,
@@ -308,7 +308,7 @@ ui_perfmon_query_signals(struct nvif_object *perfmon,
&args, sizeof(args));
assert(ret == 0);
}
- } while (args.iter != 0xffffffff);
+ } while (args.iter != 0xffff);
}
static void
diff --git a/drm/nouveau/include/nvif/class.h b/drm/nouveau/include/nvif/class.h
index cf2af89b..871247c6 100644
--- a/drm/nouveau/include/nvif/class.h
+++ b/drm/nouveau/include/nvif/class.h
@@ -259,14 +259,15 @@ struct nvif_perfmon_query_domain_v0 {
__u8 id;
__u8 counter_nr;
__u8 iter;
- __u32 signal_nr;
+ __u16 signal_nr;
+ __u8 pad05[2];
};
struct nvif_perfmon_query_signal_v0 {
__u8 version;
__u8 domain;
- __u8 pad02[2];
- __u32 iter;
+ __u16 iter;
+ __u8 pad03[4];
char name[64];
};
diff --git a/drm/nouveau/nvkm/engine/pm/base.c b/drm/nouveau/nvkm/engine/pm/base.c
index d61beffd..fab05985 100644
--- a/drm/nouveau/nvkm/engine/pm/base.c
+++ b/drm/nouveau/nvkm/engine/pm/base.c
@@ -45,10 +45,10 @@ nvkm_pm_count_perfdom(struct nvkm_pm *ppm)
return domain_nr;
}
-static u32
+static u16
nvkm_perfdom_count_perfsig(struct nvkm_perfdom *dom)
{
- u32 signal_nr = 0;
+ u16 signal_nr = 0;
int i;
if (dom) {
@@ -183,9 +183,9 @@ nvkm_perfmon_mthd_query_signal(struct nvkm_object *object, void *data, u32 size)
nv_ioctl(object, "perfmon query signal size %d\n", size);
if (nvif_unpack(args->v0, 0, 0, false)) {
nv_ioctl(object,
- "perfmon query signal vers %d dom %d iter %08x\n",
+ "perfmon query signal vers %d dom %d iter %04x\n",
args->v0.version, args->v0.domain, args->v0.iter);
- si = (args->v0.iter & 0xffffffff) - 1;
+ si = (args->v0.iter & 0xffff) - 1;
} else
return ret;
@@ -209,7 +209,7 @@ nvkm_perfmon_mthd_query_signal(struct nvkm_object *object, void *data, u32 size)
}
}
- args->v0.iter = 0xffffffff;
+ args->v0.iter = 0xffff;
return 0;
}
diff --git a/drm/nouveau/nvkm/engine/pm/priv.h b/drm/nouveau/nvkm/engine/pm/priv.h
index 06a6e608..71667fcb 100644
--- a/drm/nouveau/nvkm/engine/pm/priv.h
+++ b/drm/nouveau/nvkm/engine/pm/priv.h
@@ -44,7 +44,7 @@ struct nvkm_perfdom {
char name[32];
u32 addr;
u8 quad;
- u32 signal_nr;
+ u16 signal_nr;
struct nvkm_perfsig signal[];
};