drm/nouveau/bios/perf: pointers are 32-bit
authorBen Skeggs <bskeggs@redhat.com>
Fri, 18 Nov 2016 01:14:23 +0000 (11:14 +1000)
committerBen Skeggs <bskeggs@redhat.com>
Mon, 28 Nov 2016 05:39:35 +0000 (15:39 +1000)
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
drivers/gpu/drm/nouveau/include/nvkm/subdev/bios/perf.h
drivers/gpu/drm/nouveau/nvkm/subdev/bios/perf.c
drivers/gpu/drm/nouveau/nvkm/subdev/devinit/gm200.c

index d3bd250103d51a9e74f24c427f4d2bb163782463..478b1c0d2089cdab6b1a60dacc645200a1cbe4aa 100644 (file)
@@ -1,6 +1,6 @@
 #ifndef __NVBIOS_PERF_H__
 #define __NVBIOS_PERF_H__
-u16 nvbios_perf_table(struct nvkm_bios *, u8 *ver, u8 *hdr,
+u32 nvbios_perf_table(struct nvkm_bios *, u8 *ver, u8 *hdr,
                      u8 *cnt, u8 *len, u8 *snr, u8 *ssz);
 
 struct nvbios_perfE {
@@ -17,9 +17,9 @@ struct nvbios_perfE {
        u8  pcie_width;
 };
 
-u16 nvbios_perf_entry(struct nvkm_bios *, int idx,
+u32 nvbios_perf_entry(struct nvkm_bios *, int idx,
                      u8 *ver, u8 *hdr, u8 *cnt, u8 *len);
-u16 nvbios_perfEp(struct nvkm_bios *, int idx,
+u32 nvbios_perfEp(struct nvkm_bios *, int idx,
                  u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_perfE *);
 
 struct nvbios_perfS {
index 636bfb665bb924d293657b9d97e32d60db0afd6b..c3068358f695ba5be8705004551bb96d3e4c813a 100644 (file)
 #include <subdev/bios/perf.h>
 #include <subdev/pci.h>
 
-u16
+u32
 nvbios_perf_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr,
                  u8 *cnt, u8 *len, u8 *snr, u8 *ssz)
 {
        struct bit_entry bit_P;
-       u16 perf = 0x0000;
+       u32 perf = 0;
 
        if (!bit_entry(bios, 'P', &bit_P)) {
                if (bit_P.version <= 2) {
-                       perf = nvbios_rd16(bios, bit_P.offset + 0);
+                       perf = nvbios_rd32(bios, bit_P.offset + 0);
                        if (perf) {
                                *ver = nvbios_rd08(bios, perf + 0);
                                *hdr = nvbios_rd08(bios, perf + 1);
@@ -72,15 +72,15 @@ nvbios_perf_table(struct nvkm_bios *bios, u8 *ver, u8 *hdr,
                }
        }
 
-       return 0x0000;
+       return 0;
 }
 
-u16
+u32
 nvbios_perf_entry(struct nvkm_bios *bios, int idx,
                  u8 *ver, u8 *hdr, u8 *cnt, u8 *len)
 {
        u8  snr, ssz;
-       u16 perf = nvbios_perf_table(bios, ver, hdr, cnt, len, &snr, &ssz);
+       u32 perf = nvbios_perf_table(bios, ver, hdr, cnt, len, &snr, &ssz);
        if (perf && idx < *cnt) {
                perf = perf + *hdr + (idx * (*len + (snr * ssz)));
                *hdr = *len;
@@ -88,14 +88,14 @@ nvbios_perf_entry(struct nvkm_bios *bios, int idx,
                *len = ssz;
                return perf;
        }
-       return 0x0000;
+       return 0;
 }
 
-u16
+u32
 nvbios_perfEp(struct nvkm_bios *bios, int idx,
              u8 *ver, u8 *hdr, u8 *cnt, u8 *len, struct nvbios_perfE *info)
 {
-       u16 perf = nvbios_perf_entry(bios, idx, ver, hdr, cnt, len);
+       u32 perf = nvbios_perf_entry(bios, idx, ver, hdr, cnt, len);
        memset(info, 0x00, sizeof(*info));
        info->pstate = nvbios_rd08(bios, perf + 0x00);
        switch (!!perf * *ver) {
@@ -163,7 +163,7 @@ nvbios_perfEp(struct nvkm_bios *bios, int idx,
                info->pcie_width = 0xff;
                break;
        default:
-               return 0x0000;
+               return 0;
        }
        return perf;
 }
@@ -202,7 +202,7 @@ nvbios_perf_fan_parse(struct nvkm_bios *bios,
                      struct nvbios_perf_fan *fan)
 {
        u8  ver, hdr, cnt, len, snr, ssz;
-       u16 perf = nvbios_perf_table(bios, &ver, &hdr, &cnt, &len, &snr, &ssz);
+       u32 perf = nvbios_perf_table(bios, &ver, &hdr, &cnt, &len, &snr, &ssz);
        if (!perf)
                return -ENODEV;
 
index 42d94731655a47d1b2ce4ac7679ee60b8929a831..1730371933df7a587a54e9b8444403d0f6ff317a 100644 (file)
@@ -130,6 +130,7 @@ gm200_devinit_post(struct nvkm_devinit *base, bool post)
 
        /* upload first chunk of init data */
        if (post) {
+               // devinit tables
                u32 pmu = pmu_args(init, args + 0x08, 0x08);
                u32 img = nvbios_rd16(bios, bit_I.offset + 0x14);
                u32 len = nvbios_rd16(bios, bit_I.offset + 0x16);
@@ -138,6 +139,7 @@ gm200_devinit_post(struct nvkm_devinit *base, bool post)
 
        /* upload second chunk of init data */
        if (post) {
+               // devinit boot scripts
                u32 pmu = pmu_args(init, args + 0x08, 0x10);
                u32 img = nvbios_rd16(bios, bit_I.offset + 0x18);
                u32 len = nvbios_rd16(bios, bit_I.offset + 0x1a);