* [Qemu-devel] [PATCH v1 0/4] m25p80: Fix debug printfery
@ 2013-04-03 4:09 Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages Peter Crosthwaite
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-04-03 4:09 UTC (permalink / raw)
To: qemu-devel, qemu-trivial; +Cc: Peter Crosthwaite
Fix up the debug printfery m25p80 in various ways. 0 functional diff.
Peter Crosthwaite (4):
m25p80: Fix debug messages.
m25p80: Convert guest errors to LOG_GUEST_ERROR
m25p80.c: Multiple debug verbosity levels
m25p80: Add debug message for no bdrv
hw/m25p80.c | 53 +++++++++++++++++++++++++++++------------------------
1 files changed, 29 insertions(+), 24 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages.
2013-04-03 4:09 [Qemu-devel] [PATCH v1 0/4] m25p80: Fix debug printfery Peter Crosthwaite
@ 2013-04-03 4:09 ` Peter Crosthwaite
2013-04-03 6:50 ` Edgar E. Iglesias
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 2/4] m25p80: Convert guest errors to LOG_GUEST_ERROR Peter Crosthwaite
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Peter Crosthwaite @ 2013-04-03 4:09 UTC (permalink / raw)
To: qemu-devel, qemu-trivial; +Cc: Peter Crosthwaite
Some dodgy casts were making a mess of these msgs.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/m25p80.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/m25p80.c b/hw/m25p80.c
index 55e9d0d..34b476b 100644
--- a/hw/m25p80.c
+++ b/hw/m25p80.c
@@ -538,15 +538,15 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t tx)
switch (s->state) {
case STATE_PAGE_PROGRAM:
- DB_PRINT("page program cur_addr=%lx data=%x\n", s->cur_addr,
- (uint8_t)tx);
+ DB_PRINT("page program cur_addr=%lx data=%x\n", (unsigned)s->cur_addr,
+ (unsigned)(uint8_t)tx);
flash_write8(s, s->cur_addr, (uint8_t)tx);
s->cur_addr++;
break;
case STATE_READ:
r = s->storage[s->cur_addr];
- DB_PRINT("READ 0x%lx=%x\n", s->cur_addr, r);
+ DB_PRINT("READ 0x%lx=%x\n", (unsigned)s->cur_addr, (unsigned)r);
s->cur_addr = (s->cur_addr + 1) % s->size;
break;
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v1 2/4] m25p80: Convert guest errors to LOG_GUEST_ERROR
2013-04-03 4:09 [Qemu-devel] [PATCH v1 0/4] m25p80: Fix debug printfery Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages Peter Crosthwaite
@ 2013-04-03 4:09 ` Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 3/4] m25p80.c: Multiple debug verbosity levels Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 4/4] m25p80: Add debug message for no bdrv Peter Crosthwaite
3 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-04-03 4:09 UTC (permalink / raw)
To: qemu-devel, qemu-trivial; +Cc: Peter Crosthwaite
Some of the debug printfs in m25p80 are really guest errors.
Changed over to qemu_log_mask(LOG_GUEST_ERROR accordingly.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/m25p80.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/hw/m25p80.c b/hw/m25p80.c
index 34b476b..1f7fb28 100644
--- a/hw/m25p80.c
+++ b/hw/m25p80.c
@@ -319,11 +319,12 @@ static void flash_erase(Flash *s, int offset, FlashCMD cmd)
DB_PRINT("offset = %#x, len = %d\n", offset, len);
if ((s->pi->flags & capa_to_assert) != capa_to_assert) {
- hw_error("m25p80: %dk erase size not supported by device\n", len);
- }
+ qemu_log_mask(LOG_GUEST_ERROR, "M25P80: %dk erase size not supported by"
+ " device\n", len);
+ };
if (!s->write_enable) {
- DB_PRINT("erase with write protect!\n");
+ qemu_log_mask(LOG_GUEST_ERROR, "M25P80: erase with write protect!\n");
return;
}
memset(s->storage + offset, 0xff, len);
@@ -345,7 +346,7 @@ void flash_write8(Flash *s, uint64_t addr, uint8_t data)
uint8_t prev = s->storage[s->cur_addr];
if (!s->write_enable) {
- DB_PRINT("write with write protect!\n");
+ qemu_log_mask(LOG_GUEST_ERROR, "M25P80: write with write protect!\n");
}
if ((prev ^ data) & data) {
@@ -503,13 +504,14 @@ static void decode_new_cmd(Flash *s, uint32_t value)
DB_PRINT("chip erase\n");
flash_erase(s, 0, BULK_ERASE);
} else {
- DB_PRINT("chip erase with write protect!\n");
+ qemu_log_mask(LOG_GUEST_ERROR, "M25P80: chip erase with write "
+ "protect!\n");
}
break;
case NOP:
break;
default:
- DB_PRINT("Unknown cmd %x\n", value);
+ qemu_log_mask(LOG_GUEST_ERROR, "M25P80: Unknown cmd %x\n", value);
break;
}
}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v1 3/4] m25p80.c: Multiple debug verbosity levels
2013-04-03 4:09 [Qemu-devel] [PATCH v1 0/4] m25p80: Fix debug printfery Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 2/4] m25p80: Convert guest errors to LOG_GUEST_ERROR Peter Crosthwaite
@ 2013-04-03 4:09 ` Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 4/4] m25p80: Add debug message for no bdrv Peter Crosthwaite
3 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-04-03 4:09 UTC (permalink / raw)
To: qemu-devel, qemu-trivial; +Cc: Peter Crosthwaite
The debug printfs on every page program/read is extremely verbose. Add
add second level of debug for this.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/m25p80.c | 36 +++++++++++++++++++-----------------
1 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/hw/m25p80.c b/hw/m25p80.c
index 1f7fb28..f8aa0e9 100644
--- a/hw/m25p80.c
+++ b/hw/m25p80.c
@@ -26,15 +26,17 @@
#include "hw/ssi.h"
#include "hw/devices.h"
-#ifdef M25P80_ERR_DEBUG
-#define DB_PRINT(...) do { \
- fprintf(stderr, ": %s: ", __func__); \
- fprintf(stderr, ## __VA_ARGS__); \
- } while (0);
-#else
- #define DB_PRINT(...)
+#ifndef M25P80_ERR_DEBUG
+#define M25P80_ERR_DEBUG 0
#endif
+#define DB_PRINT_L(level, ...) do { \
+ if (M25P80_ERR_DEBUG > (level)) { \
+ fprintf(stderr, ": %s: ", __func__); \
+ fprintf(stderr, ## __VA_ARGS__); \
+ } \
+} while (0);
+
/* Fields for FlashPartInfo->flags */
/* erase capabilities */
@@ -317,7 +319,7 @@ static void flash_erase(Flash *s, int offset, FlashCMD cmd)
abort();
}
- DB_PRINT("offset = %#x, len = %d\n", offset, len);
+ DB_PRINT_L(0, "offset = %#x, len = %d\n", offset, len);
if ((s->pi->flags & capa_to_assert) != capa_to_assert) {
qemu_log_mask(LOG_GUEST_ERROR, "M25P80: %dk erase size not supported by"
" device\n", len);
@@ -350,8 +352,8 @@ void flash_write8(Flash *s, uint64_t addr, uint8_t data)
}
if ((prev ^ data) & data) {
- DB_PRINT("programming zero to one! addr=%lx %x -> %x\n",
- addr, prev, data);
+ DB_PRINT_L(1, "programming zero to one! addr=%x %x -> %x\n",
+ (unsigned)addr, (unsigned)prev, (unsigned)data);
}
if (s->pi->flags & WR_1) {
@@ -404,7 +406,7 @@ static void complete_collecting_data(Flash *s)
static void decode_new_cmd(Flash *s, uint32_t value)
{
s->cmd_in_progress = value;
- DB_PRINT("decoded new command:%x\n", value);
+ DB_PRINT_L(0, "decoded new command:%x\n", value);
switch (value) {
@@ -484,7 +486,7 @@ static void decode_new_cmd(Flash *s, uint32_t value)
break;
case JEDEC_READ:
- DB_PRINT("populated jedec code\n");
+ DB_PRINT_L(0, "populated jedec code\n");
s->data[0] = (s->pi->jedec >> 16) & 0xff;
s->data[1] = (s->pi->jedec >> 8) & 0xff;
s->data[2] = s->pi->jedec & 0xff;
@@ -501,7 +503,7 @@ static void decode_new_cmd(Flash *s, uint32_t value)
case BULK_ERASE:
if (s->write_enable) {
- DB_PRINT("chip erase\n");
+ DB_PRINT_L(0, "chip erase\n");
flash_erase(s, 0, BULK_ERASE);
} else {
qemu_log_mask(LOG_GUEST_ERROR, "M25P80: chip erase with write "
@@ -527,7 +529,7 @@ static int m25p80_cs(SSISlave *ss, bool select)
flash_sync_dirty(s, -1);
}
- DB_PRINT("%sselect\n", select ? "de" : "");
+ DB_PRINT_L(0, "%sselect\n", select ? "de" : "");
return 0;
}
@@ -540,7 +542,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t tx)
switch (s->state) {
case STATE_PAGE_PROGRAM:
- DB_PRINT("page program cur_addr=%lx data=%x\n", (unsigned)s->cur_addr,
+ DB_PRINT_L(1, "page program cur_addr=%x data=%x\n", (unsigned)s->cur_addr,
(unsigned)(uint8_t)tx);
flash_write8(s, s->cur_addr, (uint8_t)tx);
s->cur_addr++;
@@ -548,7 +550,7 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t tx)
case STATE_READ:
r = s->storage[s->cur_addr];
- DB_PRINT("READ 0x%lx=%x\n", (unsigned)s->cur_addr, (unsigned)r);
+ DB_PRINT_L(1, "READ %#x=%x\n", (unsigned)s->cur_addr, (unsigned)r);
s->cur_addr = (s->cur_addr + 1) % s->size;
break;
@@ -594,7 +596,7 @@ static int m25p80_init(SSISlave *ss)
dinfo = drive_get_next(IF_MTD);
if (dinfo && dinfo->bdrv) {
- DB_PRINT("Binding to IF_MTD drive\n");
+ DB_PRINT_L(0, "Binding to IF_MTD drive\n");
s->bdrv = dinfo->bdrv;
/* FIXME: Move to late init */
if (bdrv_read(s->bdrv, 0, s->storage, DIV_ROUND_UP(s->size,
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH v1 4/4] m25p80: Add debug message for no bdrv
2013-04-03 4:09 [Qemu-devel] [PATCH v1 0/4] m25p80: Fix debug printfery Peter Crosthwaite
` (2 preceding siblings ...)
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 3/4] m25p80.c: Multiple debug verbosity levels Peter Crosthwaite
@ 2013-04-03 4:09 ` Peter Crosthwaite
3 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-04-03 4:09 UTC (permalink / raw)
To: qemu-devel, qemu-trivial; +Cc: Peter Crosthwaite
If there is no backing bdrv, let the debugging developer know about it.
Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
---
hw/m25p80.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/hw/m25p80.c b/hw/m25p80.c
index f8aa0e9..812cae0 100644
--- a/hw/m25p80.c
+++ b/hw/m25p80.c
@@ -605,6 +605,7 @@ static int m25p80_init(SSISlave *ss)
return 1;
}
} else {
+ DB_PRINT_L(0, "No BDRV - binding to RAM\n");
memset(s->storage, 0xFF, s->size);
}
--
1.7.0.4
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages.
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages Peter Crosthwaite
@ 2013-04-03 6:50 ` Edgar E. Iglesias
2013-04-07 5:52 ` Peter Crosthwaite
0 siblings, 1 reply; 7+ messages in thread
From: Edgar E. Iglesias @ 2013-04-03 6:50 UTC (permalink / raw)
To: Peter Crosthwaite; +Cc: qemu-trivial, qemu-devel
On Wed, Apr 03, 2013 at 02:09:16PM +1000, Peter Crosthwaite wrote:
> Some dodgy casts were making a mess of these msgs.
Hi Peter
>
> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> ---
>
> hw/m25p80.c | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/hw/m25p80.c b/hw/m25p80.c
> index 55e9d0d..34b476b 100644
> --- a/hw/m25p80.c
> +++ b/hw/m25p80.c
> @@ -538,15 +538,15 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t tx)
> switch (s->state) {
>
> case STATE_PAGE_PROGRAM:
> - DB_PRINT("page program cur_addr=%lx data=%x\n", s->cur_addr,
> - (uint8_t)tx);
> + DB_PRINT("page program cur_addr=%lx data=%x\n", (unsigned)s->cur_addr,
Shouldn't this be using PRIx64 for cur_addr?
> + (unsigned)(uint8_t)tx);
> flash_write8(s, s->cur_addr, (uint8_t)tx);
> s->cur_addr++;
> break;
>
> case STATE_READ:
> r = s->storage[s->cur_addr];
> - DB_PRINT("READ 0x%lx=%x\n", s->cur_addr, r);
> + DB_PRINT("READ 0x%lx=%x\n", (unsigned)s->cur_addr, (unsigned)r);
same here.
> s->cur_addr = (s->cur_addr + 1) % s->size;
> break;
>
> --
> 1.7.0.4
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages.
2013-04-03 6:50 ` Edgar E. Iglesias
@ 2013-04-07 5:52 ` Peter Crosthwaite
0 siblings, 0 replies; 7+ messages in thread
From: Peter Crosthwaite @ 2013-04-07 5:52 UTC (permalink / raw)
To: Edgar E. Iglesias; +Cc: qemu-trivial, qemu-devel
Hi Edgar,
On Wed, Apr 3, 2013 at 4:50 PM, Edgar E. Iglesias
<edgar.iglesias@gmail.com> wrote:
> On Wed, Apr 03, 2013 at 02:09:16PM +1000, Peter Crosthwaite wrote:
>> Some dodgy casts were making a mess of these msgs.
>
>
> Hi Peter
>
>>
>> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
>> ---
>>
>> hw/m25p80.c | 6 +++---
>> 1 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/hw/m25p80.c b/hw/m25p80.c
>> index 55e9d0d..34b476b 100644
>> --- a/hw/m25p80.c
>> +++ b/hw/m25p80.c
>> @@ -538,15 +538,15 @@ static uint32_t m25p80_transfer8(SSISlave *ss, uint32_t tx)
>> switch (s->state) {
>>
>> case STATE_PAGE_PROGRAM:
>> - DB_PRINT("page program cur_addr=%lx data=%x\n", s->cur_addr,
>> - (uint8_t)tx);
>> + DB_PRINT("page program cur_addr=%lx data=%x\n", (unsigned)s->cur_addr,
>
> Shouldn't this be using PRIx64 for cur_addr?
>
Yes, fixed in v2. Also used PRIx8 for the uint8_ts around the place.
Regards,
Peter
>
>> + (unsigned)(uint8_t)tx);
>> flash_write8(s, s->cur_addr, (uint8_t)tx);
>> s->cur_addr++;
>> break;
>>
>> case STATE_READ:
>> r = s->storage[s->cur_addr];
>> - DB_PRINT("READ 0x%lx=%x\n", s->cur_addr, r);
>> + DB_PRINT("READ 0x%lx=%x\n", (unsigned)s->cur_addr, (unsigned)r);
>
>
> same here.
>
>
>> s->cur_addr = (s->cur_addr + 1) % s->size;
>> break;
>>
>> --
>> 1.7.0.4
>>
>>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-04-07 5:52 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-04-03 4:09 [Qemu-devel] [PATCH v1 0/4] m25p80: Fix debug printfery Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 1/4] m25p80: Fix debug messages Peter Crosthwaite
2013-04-03 6:50 ` Edgar E. Iglesias
2013-04-07 5:52 ` Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 2/4] m25p80: Convert guest errors to LOG_GUEST_ERROR Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 3/4] m25p80.c: Multiple debug verbosity levels Peter Crosthwaite
2013-04-03 4:09 ` [Qemu-devel] [PATCH v1 4/4] m25p80: Add debug message for no bdrv Peter Crosthwaite
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).