fuzzer: add more logging and cleanup printf

provide more detail to the user and print to stdout.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
This commit is contained in:
Liam Girdwood 2019-09-14 14:42:16 +01:00 committed by Liam Girdwood
parent c33e1a3677
commit 29a9b9d529
2 changed files with 23 additions and 16 deletions

View File

@ -83,6 +83,7 @@ static void usage(char *name)
for (i = 0; i < ARRAY_SIZE(platform); i++)
fprintf(stdout, "%s ", platform[i]->name);
fprintf(stdout, "\n");
fprintf(stdout, "Qemu must be started before the fuzzer is run.\n");
exit(0);
}
@ -111,7 +112,7 @@ void *fuzzer_create_io_region(struct fuzz *fuzzer, int id, int idx)
space = &plat->reg_region[idx];
sprintf(shm_name, "%s-io", space->name);
fprintf(stdout, "registering %s\n", shm_name);
err = qemu_io_register_shm(shm_name, id, space->desc.size, &ptr);
if (err < 0)
fprintf(stderr, "error: can't allocate IO %s:%d SHM %d\n", shm_name,
@ -132,6 +133,7 @@ void *fuzzer_create_memory_region(struct fuzz *fuzzer, int id, int idx)
/* shared via SHM (not shared on real HW) */
sprintf(shm_name, "%s-mem", desc->name);
fprintf(stdout, "registering %s\n", shm_name);
err = qemu_io_register_shm(shm_name, id, desc->size, &ptr);
if (err < 0)
fprintf(stderr, "error: can't allocate %s:%d SHM %d\n", shm_name,
@ -210,7 +212,7 @@ void fuzzer_ipc_msg_reply(struct fuzz *fuzzer)
void fuzzer_ipc_crash(struct fuzz *fuzzer, unsigned int offset)
{
/* TODO: DSP FW has crashed. dump stack, regs, last IPC, log etc */
fprintf(stderr, "DSP FW crash\n");
fprintf(stderr, "error: DSP FW crash\n");
exit(EXIT_FAILURE);
}
@ -318,6 +320,7 @@ int main(int argc, char *argv[])
}
/* init plaform */
fprintf(stdout, "initialising platform %s\n", platform[i]->name);
ret = platform[i]->init(&fuzzer, platform[i]);
if (ret == ETIMEDOUT) {
fprintf(stderr, "error: platform %s failed to initialise\n",

View File

@ -46,7 +46,7 @@
#define ADSP_BYT_SHIM_SIZE 0x1000
#define ADSP_MAILBOX_SIZE 0x1000
// TODO get from driver.
/* TODO get from driver. */
#define BYT_PANIC_OFFSET(x) (x)
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
@ -131,7 +131,8 @@ static void dsp_write64(struct fuzz *fuzzer, unsigned int bar,
/* do we need to send an IRQ ? */
if (value & SHIM_IPCX_BUSY) {
printf("irq: send busy interrupt 0x%8.8lx\n", value);
fprintf(stdout, "irq: send busy interrupt 0x%8.8lx\n",
value);
/* send IRQ to child */
irq.hdr.type = QEMU_IO_TYPE_IRQ;
@ -154,7 +155,8 @@ static void dsp_write64(struct fuzz *fuzzer, unsigned int bar,
/* do we need to send an IRQ ? */
if (value & SHIM_IPCD_DONE) {
printf("irq: send done interrupt 0x%8.8lx\n", value);
fprintf(stdout, "irq: send done interrupt 0x%8.8lx\n",
value);
/* send IRQ to child */
irq.hdr.type = QEMU_IO_TYPE_IRQ;
@ -170,9 +172,9 @@ static void dsp_write64(struct fuzz *fuzzer, unsigned int bar,
active = dsp_read64(fuzzer, bar, SHIM_ISRX) &
~(dsp_read64(fuzzer, bar, SHIM_IMRX));
printf("irq: masking %lx mask %lx active %x\n",
dsp_read64(fuzzer, bar, SHIM_ISRD),
dsp_read64(fuzzer, bar, SHIM_IMRD), active);
fprintf(stdout, "irq: masking %lx mask %lx active %x\n",
dsp_read64(fuzzer, bar, SHIM_ISRD),
dsp_read64(fuzzer, bar, SHIM_IMRD), active);
break;
default:
break;
@ -277,7 +279,7 @@ static int byt_irq_thread(int irq, void *context)
SHIM_IMRX_DONE,
SHIM_IMRX_DONE);
printf("reply msg from DSP\n");
fprintf(stdout, "ipc: reply msg from DSP\n");
/*
* handle immediate reply from DSP core. If the msg is
* found, set done bit in cmd_done which is called at the
@ -352,7 +354,8 @@ static int byt_get_reply(struct fuzz *fuzzer, struct ipc_msg *msg)
} else {
/* reply correct size ? */
if (reply.hdr.size != msg->reply_size) {
printf("error: reply expected 0x%x got 0x%x bytes\n",
fprintf(stderr,
"error: reply expected 0x%x got 0x%x bytes\n",
msg->reply_size, reply.hdr.size);
size = msg->reply_size;
ret = -EINVAL;
@ -476,14 +479,15 @@ static void byt_fw_ready(struct fuzz *fuzzer)
data->dsp_box.offset = 0;
data->dsp_box.size = 0x400;
printf("host box 0x%x size 0x%x\n", data->host_box.offset,
data->host_box.size);
printf("dsp box 0x%x size 0x%x\n", data->dsp_box.offset,
data->dsp_box.size);
fprintf(stdout,
"ipc: host box 0x%x size 0x%x\n", data->host_box.offset,
data->host_box.size);
fprintf(stdout, "ipc: dsp box 0x%x size 0x%x\n", data->dsp_box.offset,
data->dsp_box.size);
version = fw_ready.version;
printf("FW version major: %d minor: %d tag: %s\n",
version.major, version.minor, version.tag);
fprintf(stdout, "ipc: FW version major: %d minor: %d tag: %s\n",
version.major, version.minor, version.tag);
}
struct fuzz_platform byt_platform = {