The pflash device lacks a reset() function. When a machine is resetted, the flash might be in an inconsistent state, leading to unexpected behavior: https://bugzilla.redhat.com/show_bug.cgi?id=1678713 Resolve this issue by adding a DeviceReset() handler.
Fix also two minor issues, and clean a bit the codebase. Since v1: https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg00962.html - addressed Laszlo review comments Since v2: - consider migration (Laszlo, Peter) $ git backport-diff -u v2 Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/9:[----] [--] 'hw/block/pflash_cfi01: Removed an unused timer' 002/9:[0008] [FC] 'hw/block/pflash_cfi01: Use the correct READ_ARRAY value' 003/9:[----] [-C] 'hw/block/pflash_cfi01: Extract pflash_mode_read_array()' 004/9:[----] [--] 'hw/block/pflash_cfi01: Start state machine as READY to accept commands' 005/9:[----] [--] 'hw/block/pflash_cfi01: Add the DeviceReset() handler' 006/9:[----] [--] 'hw/block/pflash_cfi01: Simplify CFI_QUERY processing' 007/9:[----] [--] 'hw/block/pflash_cfi01: Improve command comments' 008/9:[----] [--] 'hw/block/pflash_cfi01: Replace DPRINTF by qemu_log_mask(GUEST_ERROR)' 009/9:[----] [--] 'hw/block/pflash_cfi01: Hold the PRI table offset in a variable' Functional differences on patch #2 are the 6 lines added for migration of the 'cmd' field, and the updated commit description. Regards, Phil. Philippe Mathieu-Daudé (9): hw/block/pflash_cfi01: Removed an unused timer hw/block/pflash_cfi01: Use the correct READ_ARRAY value hw/block/pflash_cfi01: Extract pflash_mode_read_array() hw/block/pflash_cfi01: Start state machine as READY to accept commands hw/block/pflash_cfi01: Add the DeviceReset() handler hw/block/pflash_cfi01: Simplify CFI_QUERY processing hw/block/pflash_cfi01: Improve command comments hw/block/pflash_cfi01: Replace DPRINTF by qemu_log_mask(GUEST_ERROR) hw/block/pflash_cfi01: Hold the PRI table offset in a variable hw/block/pflash_cfi01.c | 148 ++++++++++++++++++++++------------------ hw/block/trace-events | 1 + 2 files changed, 81 insertions(+), 68 deletions(-) -- 2.20.1