diff options
Diffstat (limited to 'sys/dev/ed/if_ed.c')
-rw-r--r-- | sys/dev/ed/if_ed.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/sys/dev/ed/if_ed.c b/sys/dev/ed/if_ed.c index 9f17bfa..22f9704 100644 --- a/sys/dev/ed/if_ed.c +++ b/sys/dev/ed/if_ed.c @@ -3463,3 +3463,25 @@ ed_ds_getmcaf(struct ed_softc *sc, uint32_t *mcaf) af[index >> 3] |= 1 << (index & 7); } } + +int +ed_clear_memory(device_t dev) +{ + struct ed_softc *sc = device_get_softc(dev); + int i; + + /* + * Now zero memory and verify that it is clear + */ + bzero(sc->mem_start, sc->mem_size); + + for (i = 0; i < sc->mem_size; ++i) { + if (sc->mem_start[i]) { + device_printf(dev, "failed to clear shared memory at " + "0x%jx - check configuration\n", + (uintmax_t)rman_get_start(sc->mem_res) + i); + return (ENXIO); + } + } + return (0); +} |