[{"id":1759742,"web_url":"http://patchwork.ozlabs.org/comment/1759742/","msgid":"<9b08ca85-7411-3c39-d416-5fd845b538de@amsat.org>","list_archive_url":null,"date":"2017-08-29T22:20:47","subject":"Re: [Qemu-devel] [PATCH v2 3/9] IDE: add tracing for data ports","submitter":{"id":70924,"url":"http://patchwork.ozlabs.org/api/people/70924/","name":"Philippe Mathieu-Daudé","email":"f4bug@amsat.org"},"content":"On 08/29/2017 05:49 PM, John Snow wrote:\n> To be used sparingly, but still interesting in the case of small\n> firmwares designed to reproduce bugs in QEMU IDE.\n> \n> Signed-off-by: John Snow <jsnow@redhat.com>\n\nReviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>\n\n> ---\n>   hw/ide/core.c       | 12 +++++++++++-\n>   hw/ide/trace-events |  5 +++++\n>   2 files changed, 16 insertions(+), 1 deletion(-)\n> \n> diff --git a/hw/ide/core.c b/hw/ide/core.c\n> index cb250e6..82a19b1 100644\n> --- a/hw/ide/core.c\n> +++ b/hw/ide/core.c\n> @@ -2259,6 +2259,8 @@ void ide_data_writew(void *opaque, uint32_t addr, uint32_t val)\n>       IDEState *s = idebus_active_if(bus);\n>       uint8_t *p;\n>   \n> +    trace_ide_data_writew(addr, val, bus, s);\n> +\n>       /* PIO data access allowed only when DRQ bit is set. The result of a write\n>        * during PIO out is indeterminate, just ignore it. */\n>       if (!(s->status & DRQ_STAT) || ide_is_pio_out(s)) {\n> @@ -2304,6 +2306,8 @@ uint32_t ide_data_readw(void *opaque, uint32_t addr)\n>           s->status &= ~DRQ_STAT;\n>           s->end_transfer_func(s);\n>       }\n> +\n> +    trace_ide_data_readw(addr, ret, bus, s);\n>       return ret;\n>   }\n>   \n> @@ -2313,6 +2317,8 @@ void ide_data_writel(void *opaque, uint32_t addr, uint32_t val)\n>       IDEState *s = idebus_active_if(bus);\n>       uint8_t *p;\n>   \n> +    trace_ide_data_writel(addr, val, bus, s);\n> +\n>       /* PIO data access allowed only when DRQ bit is set. The result of a write\n>        * during PIO out is indeterminate, just ignore it. */\n>       if (!(s->status & DRQ_STAT) || ide_is_pio_out(s)) {\n> @@ -2343,7 +2349,8 @@ uint32_t ide_data_readl(void *opaque, uint32_t addr)\n>       /* PIO data access allowed only when DRQ bit is set. The result of a read\n>        * during PIO in is indeterminate, return 0 and don't move forward. */\n>       if (!(s->status & DRQ_STAT) || !ide_is_pio_out(s)) {\n> -        return 0;\n> +        ret = 0;\n> +        goto out;\n>       }\n>   \n>       p = s->data_ptr;\n> @@ -2358,6 +2365,9 @@ uint32_t ide_data_readl(void *opaque, uint32_t addr)\n>           s->status &= ~DRQ_STAT;\n>           s->end_transfer_func(s);\n>       }\n> +\n> +out:\n> +    trace_ide_data_readl(addr, ret, bus, s);\n>       return ret;\n>   }\n>   \n> diff --git a/hw/ide/trace-events b/hw/ide/trace-events\n> index bff8f39..17bc6f1 100644\n> --- a/hw/ide/trace-events\n> +++ b/hw/ide/trace-events\n> @@ -6,6 +6,11 @@ ide_ioport_read(uint32_t addr, const char *reg, uint32_t val, void *bus, void *s\n>   ide_ioport_write(uint32_t addr, const char *reg, uint32_t val, void *bus, void *s) \"IDE PIO wr @ 0x%\"PRIx32\" (%s); val 0x%02\"PRIx32\"; bus %p IDEState %p\"\n>   ide_status_read(uint32_t addr, uint32_t val, void *bus, void *s)                   \"IDE PIO rd @ 0x%\"PRIx32\" (Alt Status); val 0x%02\"PRIx32\"; bus %p; IDEState %p\"\n>   ide_cmd_write(uint32_t addr, uint32_t val, void *bus)                              \"IDE PIO wr @ 0x%\"PRIx32\" (Device Control); val 0x%02\"PRIx32\"; bus %p\"\n> +# Warning: verbose\n> +ide_data_readw(uint32_t addr, uint32_t val, void *bus, void *s)                    \"IDE PIO rd @ 0x%\"PRIx32\" (Data: Word); val 0x%04\"PRIx32\"; bus %p; IDEState %p\"\n> +ide_data_writew(uint32_t addr, uint32_t val, void *bus, void *s)                   \"IDE PIO wr @ 0x%\"PRIx32\" (Data: Word); val 0x%04\"PRIx32\"; bus %p; IDEState %p\"\n> +ide_data_readl(uint32_t addr, uint32_t val, void *bus, void *s)                    \"IDE PIO rd @ 0x%\"PRIx32\" (Data: Long); val 0x%08\"PRIx32\"; bus %p; IDEState %p\"\n> +ide_data_writel(uint32_t addr, uint32_t val, void *bus, void *s)                   \"IDE PIO wr @ 0x%\"PRIx32\" (Data: Long); val 0x%08\"PRIx32\"; bus %p; IDEState %p\"\n>   # misc\n>   ide_exec_cmd(void *bus, void *state, uint32_t cmd) \"IDE exec cmd: bus %p; state %p; cmd 0x%02x\"\n>   ide_cancel_dma_sync_buffered(void *fn, void *req) \"invoking cb %p of buffered request %p with -ECANCELED\"\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"ReHOVhgl\"; dkim-atps=neutral"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xhjmZ32sBz9sN7\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 30 Aug 2017 08:22:05 +1000 (AEST)","from localhost ([::1]:47287 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dmotV-0007Pr-Nc\n\tfor incoming@patchwork.ozlabs.org; Tue, 29 Aug 2017 18:22:01 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:43845)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dmot9-0007Op-91\n\tfor qemu-devel@nongnu.org; Tue, 29 Aug 2017 18:21:40 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dmot5-0003KP-AF\n\tfor qemu-devel@nongnu.org; Tue, 29 Aug 2017 18:21:39 -0400","from mail-qt0-x244.google.com ([2607:f8b0:400d:c0d::244]:33828)\n\tby eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)\n\t(Exim 4.71) (envelope-from <philippe.mathieu.daude@gmail.com>)\n\tid 1dmot5-0003K6-5Z; Tue, 29 Aug 2017 18:21:35 -0400","by mail-qt0-x244.google.com with SMTP id v29so3940295qtv.1;\n\tTue, 29 Aug 2017 15:21:35 -0700 (PDT)","from [192.168.1.10] ([181.93.89.178])\n\tby smtp.gmail.com with ESMTPSA id\n\tl6sm2775182qki.31.2017.08.29.15.21.09\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tTue, 29 Aug 2017 15:21:33 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;\n\th=sender:subject:to:cc:references:from:message-id:date:user-agent\n\t:mime-version:in-reply-to:content-language:content-transfer-encoding; \n\tbh=PfBYDF2SOfo8iNzGCwdYd7Mu1V0v67DVikFYnwVIVBA=;\n\tb=ReHOVhglLEFLKFMAdJE3r0WxKfrZTiuUoLsdVM7EoEEEWh0a0DI+/l1V0X7Z6nzc7R\n\thOfjVwlouP9WDs3wV8WSc5hqdyNRZ0/Sxm6BBedmaH6vJ4uwI+k2LliuH5+lp6z8R3dB\n\t2XiYNvjjaZamt8k+jxta5JaGu9HuektHXPrEZatWrxamgwadG/r8esR9jMpgcf+Z7PbN\n\t9o0URAo4NmB4xQoF7WDQVqK7bUqonabjxL9UhZmScAyxcA2QGTGqKfv4TRuiwudqWkau\n\t3hwh6Qd7KD3RgY0M/CLRGIPKjRCRkgzbhYhEMi+xJZY0uKScaqitvA/B/pXyKusxEfr7\n\tzDqg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:sender:subject:to:cc:references:from:message-id\n\t:date:user-agent:mime-version:in-reply-to:content-language\n\t:content-transfer-encoding;\n\tbh=PfBYDF2SOfo8iNzGCwdYd7Mu1V0v67DVikFYnwVIVBA=;\n\tb=jxkRY6fBF3YmWG5Wg4D9tL4Fy0UGTgrW0Zb/i8DyN39y4K6T3iRQHLJCGuslY9cjpy\n\teS/m0zFTt+L6hTHW2d550TlwfK593Nc+18kiM1S688POGMWffErhxWHCbh6/ikGBqNM8\n\t016usMnSJ9f5yaqIkveypKe7JJoJqdu6olvKlfYPoA4TGKil8NCR9WeNpy8gRszm8K6B\n\tPHU/dnMka0Kp1zzuPBOk7xmR/JX0XASinPWFwadiDigbdRk7XNuSfIZg8EUwS70Qy9HH\n\t2/CgA3tBYqWjkxulZWsy1JVs7o+pIPLtvtA+d3Zv15OJpfCPK+qyH8st3tjMKd9ROrTc\n\tmpqA==","X-Gm-Message-State":"AHYfb5ix/ppgiD0vkSf/YPdt2CA2drEPGvijjHpNAnuV65rO6Jm+znVd\n\tdrOET2sPBR7Ftg8xdLg=","X-Received":"by 10.200.15.130 with SMTP id b2mr8344435qtk.68.1504045294366;\n\tTue, 29 Aug 2017 15:21:34 -0700 (PDT)","To":"John Snow <jsnow@redhat.com>, qemu-block@nongnu.org","References":"<20170829204934.9039-1-jsnow@redhat.com>\n\t<20170829204934.9039-4-jsnow@redhat.com>","From":"=?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= <f4bug@amsat.org>","Message-ID":"<9b08ca85-7411-3c39-d416-5fd845b538de@amsat.org>","Date":"Tue, 29 Aug 2017 19:20:47 -0300","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170829204934.9039-4-jsnow@redhat.com>","Content-Type":"text/plain; charset=utf-8; format=flowed","Content-Language":"en-US","Content-Transfer-Encoding":"8bit","X-detected-operating-system":"by eggs.gnu.org: Genre and OS details not\n\trecognized.","X-Received-From":"2607:f8b0:400d:c0d::244","Subject":"Re: [Qemu-devel] [PATCH v2 3/9] IDE: add tracing for data ports","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"qemu-devel@nongnu.org","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]