From: "Andreas Färber" <afaerber@suse.de>
To: Alexander Graf <agraf@suse.de>
Cc: Kevin Wolf <kwolf@redhat.com>,
programmingkidx@gmail.com, mark.cave-ayland@ilande.co.uk,
qemu-ppc@nongnu.org, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 05/15] PPC: Mac: Add debug prints in macio and dbdma code
Date: Sun, 30 Jun 2013 08:42:48 +0200 [thread overview]
Message-ID: <51CFD368.2020807@suse.de> (raw)
In-Reply-To: <1372555629-17976-6-git-send-email-agraf@suse.de>
Am 30.06.2013 03:26, schrieb Alexander Graf:
> The macio code is basically undebuggable as it stands today, with no
> debug prints anywhere whatsoever. DBDMA was better, but I needed a
> few more to create reasonable logs that tell me where breakage is.
>
> Add a DPRINTF macro in the macio source file and add a bunch of debug
> prints that are all disabled by default of course.
>
> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
> hw/ide/macio.c | 39 ++++++++++++++++++++++++++++++++++++++-
> hw/misc/macio/mac_dbdma.c | 12 ++++++++++--
> 2 files changed, 48 insertions(+), 3 deletions(-)
>
> diff --git a/hw/ide/macio.c b/hw/ide/macio.c
> index 82409dc..5cbc923 100644
> --- a/hw/ide/macio.c
> +++ b/hw/ide/macio.c
> @@ -30,6 +30,17 @@
>
> #include <hw/ide/internal.h>
>
> +/* debug MACIO */
> +// #define DEBUG_MACIO
> +
> +#ifdef DEBUG_MACIO
> +#define MACIO_DPRINTF(fmt, ...) \
> + do { printf("MACIO: %s: " fmt , __func__, ## __VA_ARGS__); } while (0)
> +#else
> +#define MACIO_DPRINTF(fmt, ...)
> +#endif
Please use the pattern you suggested yourself of having an if
(DEBUG_MACIO_ENABLED) {...} inside the macro rather than a second
MACIO_DPRINTF(), so that the newly added debug output doesn'T bitrot.
Andreas
> +
> +
> /***********************************************************/
> /* MacIO based PowerPC IDE */
>
> @@ -48,6 +59,8 @@ static void pmac_ide_atapi_transfer_cb(void *opaque, int ret)
> goto done;
> }
>
> + MACIO_DPRINTF("io_buffer_size = %#x\n", s->io_buffer_size);
> +
> if (s->io_buffer_size > 0) {
> m->aiocb = NULL;
> qemu_sglist_destroy(&s->sg);
> @@ -59,15 +72,22 @@ static void pmac_ide_atapi_transfer_cb(void *opaque, int ret)
> s->io_buffer_index &= 0x7ff;
> }
>
> - if (s->packet_transfer_size <= 0)
> + /* end of transfer ? */
> + if (s->packet_transfer_size <= 0) {
> + MACIO_DPRINTF("end of transfer\n");
> ide_atapi_cmd_ok(s);
> + }
>
> + /* end of DMA ? */
> if (io->len == 0) {
> + MACIO_DPRINTF("end of DMA\n");
> goto done;
> }
Both comments duplicate your debug output module question mark. :)
>
> /* launch next transfer */
>
> + MACIO_DPRINTF("io->len = %#x\n", io->len);
> +
> s->io_buffer_size = io->len;
>
> qemu_sglist_init(&s->sg, io->len / MACIO_PAGE_SIZE + 1,
> @@ -76,12 +96,17 @@ static void pmac_ide_atapi_transfer_cb(void *opaque, int ret)
> io->addr += io->len;
> io->len = 0;
>
> + MACIO_DPRINTF("sector_num=%d size=%d, cmd_cmd=%d\n",
> + (s->lba << 2) + (s->io_buffer_index >> 9),
> + s->packet_transfer_size, s->dma_cmd);
> +
> m->aiocb = dma_bdrv_read(s->bs, &s->sg,
> (int64_t)(s->lba << 2) + (s->io_buffer_index >> 9),
> pmac_ide_atapi_transfer_cb, io);
> return;
>
> done:
> + MACIO_DPRINTF("done DMA\n");
> bdrv_acct_done(s->bs, &s->acct);
> io->dma_end(opaque);
> }
> @@ -95,6 +120,7 @@ static void pmac_ide_transfer_cb(void *opaque, int ret)
> int64_t sector_num;
>
> if (ret < 0) {
> + MACIO_DPRINTF("DMA error\n");
> m->aiocb = NULL;
> qemu_sglist_destroy(&s->sg);
> ide_dma_error(s);
> @@ -102,6 +128,7 @@ static void pmac_ide_transfer_cb(void *opaque, int ret)
> }
>
> sector_num = ide_get_sector(s);
> + MACIO_DPRINTF("io_buffer_size = %#x\n", s->io_buffer_size);
> if (s->io_buffer_size > 0) {
> m->aiocb = NULL;
> qemu_sglist_destroy(&s->sg);
> @@ -113,12 +140,14 @@ static void pmac_ide_transfer_cb(void *opaque, int ret)
>
> /* end of transfer ? */
> if (s->nsector == 0) {
> + MACIO_DPRINTF("end of transfer\n");
> s->status = READY_STAT | SEEK_STAT;
> ide_set_irq(s->bus);
> }
>
> /* end of DMA ? */
> if (io->len == 0) {
> + MACIO_DPRINTF("end of DMA\n");
> goto done;
> }
>
> @@ -127,12 +156,18 @@ static void pmac_ide_transfer_cb(void *opaque, int ret)
> s->io_buffer_index = 0;
> s->io_buffer_size = io->len;
>
> +
Intentionally two white lines?
> + MACIO_DPRINTF("io->len = %#x\n", io->len);
> +
> qemu_sglist_init(&s->sg, io->len / MACIO_PAGE_SIZE + 1,
> &address_space_memory);
> qemu_sglist_add(&s->sg, io->addr, io->len);
> io->addr += io->len;
> io->len = 0;
>
> + MACIO_DPRINTF("sector_num=%" PRId64 " n=%d, nsector=%d, cmd_cmd=%d\n",
> + sector_num, n, s->nsector, s->dma_cmd);
> +
> switch (s->dma_cmd) {
> case IDE_DMA_READ:
> m->aiocb = dma_bdrv_read(s->bs, &s->sg, sector_num,
> @@ -162,6 +197,8 @@ static void pmac_ide_transfer(DBDMA_io *io)
> MACIOIDEState *m = io->opaque;
> IDEState *s = idebus_active_if(&m->bus);
>
> + MACIO_DPRINTF("\n", __LINE__);
The argument is unused.
> +
> s->io_buffer_size = 0;
> if (s->drive_kind == IDE_CD) {
> bdrv_acct_start(s->bs, &s->acct, io->len, BDRV_ACCT_READ);
> diff --git a/hw/misc/macio/mac_dbdma.c b/hw/misc/macio/mac_dbdma.c
> index ab174f5..903604d 100644
> --- a/hw/misc/macio/mac_dbdma.c
> +++ b/hw/misc/macio/mac_dbdma.c
> @@ -233,6 +233,7 @@ static void conditional_interrupt(DBDMA_channel *ch)
> return;
> case INTR_ALWAYS: /* always interrupt */
> qemu_irq_raise(ch->irq);
> + DBDMA_DPRINTF("conditional_interrupt: raise\n");
Use %s and __func__ in case we ever rename it? More instances below. For
dbdma_end() you did.
> return;
> }
>
> @@ -245,12 +246,16 @@ static void conditional_interrupt(DBDMA_channel *ch)
>
> switch(intr) {
> case INTR_IFSET: /* intr if condition bit is 1 */
> - if (cond)
> + if (cond) {
> qemu_irq_raise(ch->irq);
> + DBDMA_DPRINTF("conditional_interrupt: raise\n");
> + }
> return;
> case INTR_IFCLR: /* intr if condition bit is 0 */
> - if (!cond)
> + if (!cond) {
> qemu_irq_raise(ch->irq);
> + DBDMA_DPRINTF("conditional_interrupt: raise\n");
> + }
> return;
> }
> }
> @@ -368,6 +373,8 @@ static void dbdma_end(DBDMA_io *io)
> DBDMA_channel *ch = io->channel;
> dbdma_cmd *current = &ch->current;
>
> + DBDMA_DPRINTF("%s\n", __func__, __LINE__);
Unused argument.
> +
> if (conditional_wait(ch))
> goto wait;
>
> @@ -422,6 +429,7 @@ static void start_input(DBDMA_channel *ch, int key, uint32_t addr,
> * are not implemented in the mac-io chip
> */
>
> + DBDMA_DPRINTF("addr 0x%x key 0x%x\n", addr, key);
PRIx32 for addr
> if (!addr || key > KEY_STREAM3) {
> kill_channel(ch);
> return;
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2013-06-30 6:42 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-30 1:26 [Qemu-devel] [PATCH 00/15] PPC: Mac OS X guest bringup Alexander Graf
2013-06-30 1:26 ` [Qemu-devel] [PATCH 01/15] PPC: Mac: Fix guest exported tbfreq values Alexander Graf
2013-06-30 1:26 ` [Qemu-devel] [PATCH 02/15] PPC: g3beige: Move secondary IDE bus to mac-io Alexander Graf
2013-06-30 6:33 ` Andreas Färber
2013-06-30 23:18 ` Alexander Graf
2013-06-30 1:26 ` [Qemu-devel] [PATCH 03/15] PPC: Macio: Replace tabs with spaces Alexander Graf
2013-06-30 1:26 ` [Qemu-devel] [PATCH 04/15] PPC: dbdma: " Alexander Graf
2013-06-30 6:35 ` Andreas Färber
2013-06-30 11:21 ` Alexander Graf
2013-06-30 1:26 ` [Qemu-devel] [PATCH 05/15] PPC: Mac: Add debug prints in macio and dbdma code Alexander Graf
2013-06-30 6:42 ` Andreas Färber [this message]
2013-06-30 23:30 ` Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 06/15] PPC: dbdma: Fix debug print Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 07/15] PPC: dbdma: Allow new commands in RUN state Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 08/15] PPC: dbdma: Move defines into header file Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 09/15] PPC: dbdma: Introduce kick function Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 10/15] PPC: dbdma: Move static bh variable to device struct Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 11/15] PPC: dbdma: macio: Add DMA callback Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 12/15] PPC: dbdma: Move processing to io Alexander Graf
2013-06-30 6:48 ` Andreas Färber
2013-06-30 23:35 ` Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 13/15] PPC: dbdma: Wait for DMA until we have data Alexander Graf
2013-06-30 1:27 ` [Qemu-devel] [PATCH 14/15] PPC: dbdma: Support unaligned DMA access Alexander Graf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51CFD368.2020807@suse.de \
--to=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=kwolf@redhat.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=programmingkidx@gmail.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.