aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2026-05-18 16:58:59 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2026-05-18 16:58:59 +0000
commitaf5cdcd8b18c9a24cc317f1886dd3c32b253ef27 (patch)
treebceeec5aa41ed4973196d24a77f3f9f6862bcd0f
parent2509ddee9bdb2240ba2f622e3a55a98ebc2aa4ae (diff)
Revert "asmc: fix asmc_key_dump() page fault on T2 MMIO backend"
This reverts commit 3abc07947c14f5c30e5328d56a2da8dbf8412ebf. I'm not sure how this built locally for me but obviously failed in CI; I'll go figure that out with the submitter and come back.
-rw-r--r--sys/dev/asmc/asmc.c36
1 files changed, 5 insertions, 31 deletions
diff --git a/sys/dev/asmc/asmc.c b/sys/dev/asmc/asmc.c
index 30c5da698361..8cd7842d03fd 100644
--- a/sys/dev/asmc/asmc.c
+++ b/sys/dev/asmc/asmc.c
@@ -45,7 +45,6 @@
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/mutex.h>
-#include <sys/sbuf.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
#include <sys/taskqueue.h>
@@ -1091,27 +1090,6 @@ asmc_key_dump(device_t dev, int number)
uint8_t maxlen;
int i, error = 1, try = 0;
- if (sc->sc_is_mmio) {
- uint8_t len = 0;
- char mmio_type[ASMC_TYPELEN + 1] = { 0 };
- if (asmc_key_dump_by_index(dev, number, key, mmio_type, &len))
- return (1);
- memset(v, 0, sizeof(v));
- len = MIN(len, sizeof(v));
- asmc_key_read(dev, key, v, len);
- struct sbuf sb;
- char buf[128];
- sbuf_new(&sb, buf, sizeof(buf), SBUF_FIXEDLEN);
- sbuf_printf(&sb, "key %d: %s, type %s (len %d), data",
- number, key, mmio_type, len);
- for (i = 0; i < len; i++)
- sbuf_printf(&sb, " %02x", v[i]);
- sbuf_finish(&sb);
- device_printf(dev, "%s\n", sbuf_data(&sb));
- sbuf_delete(&sb);
- return (0);
- }
-
mtx_lock_spin(&sc->sc_mtx);
index[0] = (number >> 24) & 0xff;
@@ -1172,23 +1150,19 @@ out:
maxlen = type[0];
type[0] = ' ';
type[5] = '\0';
- maxlen = MIN(maxlen, sizeof(v));
+ if (maxlen > sizeof(v))
+ maxlen = sizeof(v);
memset(v, 0, sizeof(v));
error = asmc_key_read(dev, key, v, maxlen);
if (error)
return (error);
- struct sbuf sb;
- char buf[128];
- sbuf_new(&sb, buf, sizeof(buf), SBUF_FIXEDLEN);
- sbuf_printf(&sb, "key %d: %s, type%s (len %d), data",
+ device_printf(dev, "key %d: %s, type%s (len %d), data",
number, key, type, maxlen);
for (i = 0; i < maxlen; i++)
- sbuf_printf(&sb, " %02x", v[i]);
- sbuf_finish(&sb);
- device_printf(dev, "%s\n", sbuf_data(&sb));
- sbuf_delete(&sb);
+ printf(" %02x", v[i]);
+ printf("\n");
return (0);
}