Message ID | 20190627202719.17739-3-philmd@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block/pflash_cfi02: Implement missing AMD pflash functionality | expand |
Hi Phil, Thanks for pushing this forward! I'll try to get to the rest of these early next week. > On Jun 27, 2019, at 16:26, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > Call the read() trace function after the value is set, so we can > log the returned value. > Rename the I/O trace functions with '_io_' in their name. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > hw/block/pflash_cfi01.c | 5 +++-- > hw/block/pflash_cfi02.c | 6 ++---- > hw/block/trace-events | 4 ++-- > 3 files changed, 7 insertions(+), 8 deletions(-) > > diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c > index 35080d915f..74fc1bc2da 100644 > --- a/hw/block/pflash_cfi01.c > +++ b/hw/block/pflash_cfi01.c > @@ -288,7 +288,6 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, > uint32_t ret; > > ret = -1; > - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); > switch (pfl->cmd) { > default: > /* This should never happen : reset state & treat it as a read */ > @@ -391,6 +390,8 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, > > break; > } > + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); width * 2 might make it more clear what is going on. > + > return ret; > } > > @@ -453,7 +454,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset, > > cmd = value; > > - trace_pflash_write(offset, value, width, pfl->wcycle); > + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); Same here. > if (!pfl->wcycle) { > /* Set the device in I/O access mode */ > memory_region_rom_device_set_romd(&pfl->mem, false); > diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c > index eb106f4996..f05cd507b3 100644 > --- a/hw/block/pflash_cfi02.c > +++ b/hw/block/pflash_cfi02.c > @@ -145,7 +145,6 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > uint8_t *p; > > ret = -1; > - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); > /* Lazy reset to ROMD mode after a certain amount of read accesses */ > if (!pfl->rom_mode && pfl->wcycle == 0 && > ++pfl->read_counter > PFLASH_LAZY_ROMD_THRESHOLD) { > @@ -241,6 +240,7 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > } > break; > } > + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); And here. > > return ret; > } > @@ -267,6 +267,7 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, > uint8_t *p; > uint8_t cmd; > > + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); And here. > cmd = value; > if (pfl->cmd != 0xA0 && cmd == 0xF0) { > #if 0 > @@ -275,11 +276,8 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, > #endif > goto reset_flash; > } > - trace_pflash_write(offset, value, width, pfl->wcycle); > offset &= pfl->chip_len - 1; > > - DPRINTF("%s: offset " TARGET_FMT_plx " %08x %d\n", __func__, > - offset, value, width); > boff = offset & (pfl->sector_len - 1); > if (pfl->width == 2) > boff = boff >> 1; > diff --git a/hw/block/trace-events b/hw/block/trace-events > index 97a17838ed..f637fe918e 100644 > --- a/hw/block/trace-events > +++ b/hw/block/trace-events > @@ -7,9 +7,9 @@ fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" > # pflash_cfi02.c > # pflash_cfi01.c > pflash_reset(void) "reset" > -pflash_read(uint64_t offset, uint8_t cmd, int width, uint8_t wcycle) "offset:0x%04"PRIx64" cmd:0x%02x width:%d wcycle:%u" > -pflash_write(uint64_t offset, uint32_t value, int width, uint8_t wcycle) "offset:0x%04"PRIx64" value:0x%03x width:%d wcycle:%u" > pflash_timer_expired(uint8_t cmd) "command 0x%02x done" > +pflash_io_read(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x cmd:0x%02x wcycle:%u" > +pflash_io_write(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x wcycle:%u" > pflash_data_read8(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%02x" > pflash_data_read16(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%04x" > pflash_data_read32(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%08x" > -- > 2.20.1 > Either way, Signed-off-by: Stephen Checkoway <stephen.checkoway@oberlin.edu> (And please let me know if I'm doing code review incorrectly or if that should be Reviewed-by or whatever.) Cheers, Steve
On Thu, Jun 27, 2019 at 1:38 PM Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > Call the read() trace function after the value is set, so we can > log the returned value. > Rename the I/O trace functions with '_io_' in their name. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > hw/block/pflash_cfi01.c | 5 +++-- > hw/block/pflash_cfi02.c | 6 ++---- > hw/block/trace-events | 4 ++-- > 3 files changed, 7 insertions(+), 8 deletions(-) > > diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c > index 35080d915f..74fc1bc2da 100644 > --- a/hw/block/pflash_cfi01.c > +++ b/hw/block/pflash_cfi01.c > @@ -288,7 +288,6 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, > uint32_t ret; > > ret = -1; > - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); > switch (pfl->cmd) { > default: > /* This should never happen : reset state & treat it as a read */ > @@ -391,6 +390,8 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, > > break; > } > + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); > + > return ret; > } > > @@ -453,7 +454,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset, > > cmd = value; > > - trace_pflash_write(offset, value, width, pfl->wcycle); > + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); > if (!pfl->wcycle) { > /* Set the device in I/O access mode */ > memory_region_rom_device_set_romd(&pfl->mem, false); > diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c > index eb106f4996..f05cd507b3 100644 > --- a/hw/block/pflash_cfi02.c > +++ b/hw/block/pflash_cfi02.c > @@ -145,7 +145,6 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > uint8_t *p; > > ret = -1; > - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); > /* Lazy reset to ROMD mode after a certain amount of read accesses */ > if (!pfl->rom_mode && pfl->wcycle == 0 && > ++pfl->read_counter > PFLASH_LAZY_ROMD_THRESHOLD) { > @@ -241,6 +240,7 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > } > break; > } > + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); > > return ret; > } > @@ -267,6 +267,7 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, > uint8_t *p; > uint8_t cmd; > > + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); > cmd = value; > if (pfl->cmd != 0xA0 && cmd == 0xF0) { > #if 0 > @@ -275,11 +276,8 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, > #endif > goto reset_flash; > } > - trace_pflash_write(offset, value, width, pfl->wcycle); > offset &= pfl->chip_len - 1; > > - DPRINTF("%s: offset " TARGET_FMT_plx " %08x %d\n", __func__, > - offset, value, width); > boff = offset & (pfl->sector_len - 1); > if (pfl->width == 2) > boff = boff >> 1; > diff --git a/hw/block/trace-events b/hw/block/trace-events > index 97a17838ed..f637fe918e 100644 > --- a/hw/block/trace-events > +++ b/hw/block/trace-events > @@ -7,9 +7,9 @@ fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" > # pflash_cfi02.c > # pflash_cfi01.c > pflash_reset(void) "reset" > -pflash_read(uint64_t offset, uint8_t cmd, int width, uint8_t wcycle) "offset:0x%04"PRIx64" cmd:0x%02x width:%d wcycle:%u" > -pflash_write(uint64_t offset, uint32_t value, int width, uint8_t wcycle) "offset:0x%04"PRIx64" value:0x%03x width:%d wcycle:%u" > pflash_timer_expired(uint8_t cmd) "command 0x%02x done" > +pflash_io_read(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x cmd:0x%02x wcycle:%u" > +pflash_io_write(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x wcycle:%u" > pflash_data_read8(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%02x" > pflash_data_read16(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%04x" > pflash_data_read32(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%08x" > -- > 2.20.1 > >
On Thu, Jun 27, 2019 at 2:50 PM Stephen Checkoway <stephen.checkoway@oberlin.edu> wrote: > > Hi Phil, > > Thanks for pushing this forward! I'll try to get to the rest of these early next week. > > > On Jun 27, 2019, at 16:26, Philippe Mathieu-Daudé <philmd@redhat.com> wrote: > > > > Call the read() trace function after the value is set, so we can > > log the returned value. > > Rename the I/O trace functions with '_io_' in their name. > > > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > > --- > > hw/block/pflash_cfi01.c | 5 +++-- > > hw/block/pflash_cfi02.c | 6 ++---- > > hw/block/trace-events | 4 ++-- > > 3 files changed, 7 insertions(+), 8 deletions(-) > > > > diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c > > index 35080d915f..74fc1bc2da 100644 > > --- a/hw/block/pflash_cfi01.c > > +++ b/hw/block/pflash_cfi01.c > > @@ -288,7 +288,6 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, > > uint32_t ret; > > > > ret = -1; > > - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); > > switch (pfl->cmd) { > > default: > > /* This should never happen : reset state & treat it as a read */ > > @@ -391,6 +390,8 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, > > > > break; > > } > > + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); > > width * 2 might make it more clear what is going on. > > > + > > return ret; > > } > > > > @@ -453,7 +454,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset, > > > > cmd = value; > > > > - trace_pflash_write(offset, value, width, pfl->wcycle); > > + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); > > Same here. > > > if (!pfl->wcycle) { > > /* Set the device in I/O access mode */ > > memory_region_rom_device_set_romd(&pfl->mem, false); > > diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c > > index eb106f4996..f05cd507b3 100644 > > --- a/hw/block/pflash_cfi02.c > > +++ b/hw/block/pflash_cfi02.c > > @@ -145,7 +145,6 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > > uint8_t *p; > > > > ret = -1; > > - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); > > /* Lazy reset to ROMD mode after a certain amount of read accesses */ > > if (!pfl->rom_mode && pfl->wcycle == 0 && > > ++pfl->read_counter > PFLASH_LAZY_ROMD_THRESHOLD) { > > @@ -241,6 +240,7 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, > > } > > break; > > } > > + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); > > And here. > > > > > return ret; > > } > > @@ -267,6 +267,7 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, > > uint8_t *p; > > uint8_t cmd; > > > > + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); > > And here. > > > cmd = value; > > if (pfl->cmd != 0xA0 && cmd == 0xF0) { > > #if 0 > > @@ -275,11 +276,8 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, > > #endif > > goto reset_flash; > > } > > - trace_pflash_write(offset, value, width, pfl->wcycle); > > offset &= pfl->chip_len - 1; > > > > - DPRINTF("%s: offset " TARGET_FMT_plx " %08x %d\n", __func__, > > - offset, value, width); > > boff = offset & (pfl->sector_len - 1); > > if (pfl->width == 2) > > boff = boff >> 1; > > diff --git a/hw/block/trace-events b/hw/block/trace-events > > index 97a17838ed..f637fe918e 100644 > > --- a/hw/block/trace-events > > +++ b/hw/block/trace-events > > @@ -7,9 +7,9 @@ fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" > > # pflash_cfi02.c > > # pflash_cfi01.c > > pflash_reset(void) "reset" > > -pflash_read(uint64_t offset, uint8_t cmd, int width, uint8_t wcycle) "offset:0x%04"PRIx64" cmd:0x%02x width:%d wcycle:%u" > > -pflash_write(uint64_t offset, uint32_t value, int width, uint8_t wcycle) "offset:0x%04"PRIx64" value:0x%03x width:%d wcycle:%u" > > pflash_timer_expired(uint8_t cmd) "command 0x%02x done" > > +pflash_io_read(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x cmd:0x%02x wcycle:%u" > > +pflash_io_write(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x wcycle:%u" > > pflash_data_read8(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%02x" > > pflash_data_read16(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%04x" > > pflash_data_read32(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%08x" > > -- > > 2.20.1 > > > > Either way, > > Signed-off-by: Stephen Checkoway <stephen.checkoway@oberlin.edu> > > (And please let me know if I'm doing code review incorrectly or if that should be Reviewed-by or whatever.) For code review it should be Reviewed-by (or Acked-by if you are less sure). Alistair > > Cheers, > > Steve > > -- > Stephen Checkoway > > > > > >
diff --git a/hw/block/pflash_cfi01.c b/hw/block/pflash_cfi01.c index 35080d915f..74fc1bc2da 100644 --- a/hw/block/pflash_cfi01.c +++ b/hw/block/pflash_cfi01.c @@ -288,7 +288,6 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, uint32_t ret; ret = -1; - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); switch (pfl->cmd) { default: /* This should never happen : reset state & treat it as a read */ @@ -391,6 +390,8 @@ static uint32_t pflash_read(PFlashCFI01 *pfl, hwaddr offset, break; } + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); + return ret; } @@ -453,7 +454,7 @@ static void pflash_write(PFlashCFI01 *pfl, hwaddr offset, cmd = value; - trace_pflash_write(offset, value, width, pfl->wcycle); + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); if (!pfl->wcycle) { /* Set the device in I/O access mode */ memory_region_rom_device_set_romd(&pfl->mem, false); diff --git a/hw/block/pflash_cfi02.c b/hw/block/pflash_cfi02.c index eb106f4996..f05cd507b3 100644 --- a/hw/block/pflash_cfi02.c +++ b/hw/block/pflash_cfi02.c @@ -145,7 +145,6 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, uint8_t *p; ret = -1; - trace_pflash_read(offset, pfl->cmd, width, pfl->wcycle); /* Lazy reset to ROMD mode after a certain amount of read accesses */ if (!pfl->rom_mode && pfl->wcycle == 0 && ++pfl->read_counter > PFLASH_LAZY_ROMD_THRESHOLD) { @@ -241,6 +240,7 @@ static uint32_t pflash_read(PFlashCFI02 *pfl, hwaddr offset, } break; } + trace_pflash_io_read(offset, width, width << 1, ret, pfl->cmd, pfl->wcycle); return ret; } @@ -267,6 +267,7 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, uint8_t *p; uint8_t cmd; + trace_pflash_io_write(offset, width, width << 1, value, pfl->wcycle); cmd = value; if (pfl->cmd != 0xA0 && cmd == 0xF0) { #if 0 @@ -275,11 +276,8 @@ static void pflash_write(PFlashCFI02 *pfl, hwaddr offset, #endif goto reset_flash; } - trace_pflash_write(offset, value, width, pfl->wcycle); offset &= pfl->chip_len - 1; - DPRINTF("%s: offset " TARGET_FMT_plx " %08x %d\n", __func__, - offset, value, width); boff = offset & (pfl->sector_len - 1); if (pfl->width == 2) boff = boff >> 1; diff --git a/hw/block/trace-events b/hw/block/trace-events index 97a17838ed..f637fe918e 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -7,9 +7,9 @@ fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x" # pflash_cfi02.c # pflash_cfi01.c pflash_reset(void) "reset" -pflash_read(uint64_t offset, uint8_t cmd, int width, uint8_t wcycle) "offset:0x%04"PRIx64" cmd:0x%02x width:%d wcycle:%u" -pflash_write(uint64_t offset, uint32_t value, int width, uint8_t wcycle) "offset:0x%04"PRIx64" value:0x%03x width:%d wcycle:%u" pflash_timer_expired(uint8_t cmd) "command 0x%02x done" +pflash_io_read(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t cmd, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x cmd:0x%02x wcycle:%u" +pflash_io_write(uint64_t offset, int width, int fmt_width, uint32_t value, uint8_t wcycle) "offset:0x%04"PRIx64" width:%d value:0x%0*x wcycle:%u" pflash_data_read8(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%02x" pflash_data_read16(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%04x" pflash_data_read32(uint64_t offset, uint32_t value) "data offset:0x%04"PRIx64" value:0x%08x"
Call the read() trace function after the value is set, so we can log the returned value. Rename the I/O trace functions with '_io_' in their name. Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> --- hw/block/pflash_cfi01.c | 5 +++-- hw/block/pflash_cfi02.c | 6 ++---- hw/block/trace-events | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-)