Ok, So try adding this check: vmbuf = x86bios_alloc(&offs, sizeof(*buf), M_WAITOK); if (vmbuf == NULL) { printf("%s: x86bios_alloc failed!\n", __func__); goto fail; } ... that call shouldn't be failing, but if it's truely failing on the bcopy(), the only reason is because vmbuf is NULL. -a