Page MenuHomeFreeBSD

D51487.id159074.diff
No OneTemporary

D51487.id159074.diff

diff --git a/sys/dev/amdsmu/amdsmu.h b/sys/dev/amdsmu/amdsmu.h
--- a/sys/dev/amdsmu/amdsmu.h
+++ b/sys/dev/amdsmu/amdsmu.h
@@ -91,6 +91,7 @@
bus_space_handle_t metrics_space;
struct amdsmu_metrics metrics;
+ uint32_t idlemask;
};
static inline uint32_t
diff --git a/sys/dev/amdsmu/amdsmu.c b/sys/dev/amdsmu/amdsmu.c
--- a/sys/dev/amdsmu/amdsmu.c
+++ b/sys/dev/amdsmu/amdsmu.c
@@ -281,6 +281,14 @@
return (0);
}
+static void
+amdsmu_dump_idlemask(device_t dev)
+{
+ struct amdsmu_softc *sc = device_get_softc(dev);
+
+ sc->idlemask = amdsmu_read4(sc, SMU_REG_IDLEMASK);
+}
+
static int
amdsmu_enter(device_t dev)
{
@@ -304,6 +312,7 @@
device_printf(dev, "failed to hint to SMU to exit sleep");
return (err);
}
+ amdsmu_dump_idlemask(dev);
return (amdsmu_dump_metrics(dev));
}
@@ -433,6 +442,13 @@
if (err != 0)
goto err_dump;
+ /* Get idlemask & add sysctl. */
+ amdsmu_dump_idlemask(dev);
+ SYSCTL_ADD_U32(sc->sysctlctx, SYSCTL_CHILDREN(sc->sysctlnode), OID_AUTO,
+ "idlemask", CTLFLAG_RD, &sc->idlemask, 0, "SMU idlemask. This "
+ "value is not documented - only used to help AMD internally debug "
+ "issues");
+
return (0);
err_dump:
bus_space_unmap(sc->bus_tag, sc->reg_space, SMU_MEM_SIZE);
diff --git a/sys/dev/amdsmu/amdsmu_reg.h b/sys/dev/amdsmu/amdsmu_reg.h
--- a/sys/dev/amdsmu/amdsmu_reg.h
+++ b/sys/dev/amdsmu/amdsmu_reg.h
@@ -21,6 +21,7 @@
#define SMU_REG_MESSAGE 0x538
#define SMU_REG_RESPONSE 0x980
#define SMU_REG_ARGUMENT 0x9BC
+#define SMU_REG_IDLEMASK 0xD14
enum amdsmu_res {
SMU_RES_WAIT = 0x00,

File Metadata

Mime Type
text/plain
Expires
Wed, Jun 10, 11:04 AM (1 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33848280
Default Alt Text
D51487.id159074.diff (1 KB)

Event Timeline