1fc277a0e8
Add an update buffer where all block updates are staged.
Flush or discard updates properly, so we should never see
half-completed block writes in pflash storage.
Drop a bunch of FIXME comments ;)
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240108160900.104835-4-kraxel@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
(cherry picked from commit 284a7ee2e2
)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
(Mjt: drop const in hw/block/pflash_cfi01.c for before
v8.2.0-220-g7d5dc0a367 "hw/block: Constify VMState")
104 lines
8.1 KiB
Plaintext
104 lines
8.1 KiB
Plaintext
# See docs/devel/tracing.rst for syntax documentation.
|
|
|
|
# fdc.c
|
|
fdc_ioport_read(uint8_t reg, uint8_t value) "read reg 0x%02x val 0x%02x"
|
|
fdc_ioport_write(uint8_t reg, uint8_t value) "write reg 0x%02x val 0x%02x"
|
|
|
|
# fdc-sysbus.c
|
|
fdctrl_tc_pulse(int level) "TC pulse: %u"
|
|
|
|
# pflash_cfi01.c
|
|
# pflash_cfi02.c
|
|
pflash_chip_erase_invalid(const char *name, uint64_t offset) "%s: chip erase: invalid address 0x%" PRIx64
|
|
pflash_chip_erase_start(const char *name) "%s: start chip erase"
|
|
pflash_data_read(const char *name, uint64_t offset, unsigned size, uint32_t value) "%s: data offset:0x%04"PRIx64" size:%u value:0x%04x"
|
|
pflash_data_write(const char *name, uint64_t offset, unsigned size, uint32_t value) "%s: data offset:0x%04"PRIx64" size:%u value:0x%04x"
|
|
pflash_data_write_block(const char *name, uint64_t offset, unsigned size, uint32_t value, uint64_t counter) "%s: data offset:0x%04"PRIx64" size:%u value:0x%04x counter:0x%016"PRIx64
|
|
pflash_device_id(const char *name, uint16_t id) "%s: read device ID: 0x%04x"
|
|
pflash_device_info(const char *name, uint64_t offset) "%s: read device information offset:0x%04" PRIx64
|
|
pflash_erase_complete(const char *name) "%s: sector erase complete"
|
|
pflash_erase_timeout(const char *name, int count) "%s: erase timeout fired; erasing %d sectors"
|
|
pflash_io_read(const char *name, uint64_t offset, unsigned int size, uint32_t value, uint8_t cmd, uint8_t wcycle) "%s: offset:0x%04" PRIx64 " size:%u value:0x%04x cmd:0x%02x wcycle:%u"
|
|
pflash_io_write(const char *name, uint64_t offset, unsigned int size, uint32_t value, uint8_t wcycle) "%s: offset:0x%04"PRIx64" size:%u value:0x%04x wcycle:%u"
|
|
pflash_manufacturer_id(const char *name, uint16_t id) "%s: read manufacturer ID: 0x%04x"
|
|
pflash_mode_read_array(const char *name) "%s: read array mode"
|
|
pflash_postload_cb(const char *name) "%s: updating bdrv"
|
|
pflash_read_done(const char *name, uint64_t offset, uint64_t ret) "%s: ID:0x%" PRIx64 " ret:0x%" PRIx64
|
|
pflash_read_status(const char *name, uint32_t ret) "%s: status:0x%x"
|
|
pflash_read_unknown_state(const char *name, uint8_t cmd) "%s: unknown command state:0x%x"
|
|
pflash_reset(const char *name) "%s: reset"
|
|
pflash_sector_erase_start(const char *name, int width1, uint64_t start, int width2, uint64_t end) "%s: start sector erase at: 0x%0*" PRIx64 "-0x%0*" PRIx64
|
|
pflash_timer_expired(const char *name, uint8_t cmd) "%s: command 0x%02x done"
|
|
pflash_unlock0_failed(const char *name, uint64_t offset, uint8_t cmd, uint16_t addr0) "%s: unlock0 failed 0x%" PRIx64 " 0x%02x 0x%04x"
|
|
pflash_unlock1_failed(const char *name, uint64_t offset, uint8_t cmd) "%s: unlock0 failed 0x%" PRIx64 " 0x%02x"
|
|
pflash_unsupported_device_configuration(const char *name, uint8_t width, uint8_t max) "%s: unsupported device configuration: device_width:%d max_device_width:%d"
|
|
pflash_write(const char *name, const char *str) "%s: %s"
|
|
pflash_write_block_start(const char *name, uint32_t value) "%s: block write start: bytes:0x%x"
|
|
pflash_write_block_flush(const char *name) "%s: block write flush"
|
|
pflash_write_block_abort(const char *name) "%s: block write abort"
|
|
pflash_write_block_erase(const char *name, uint64_t offset, uint64_t len) "%s: block erase offset:0x%" PRIx64 " bytes:0x%" PRIx64
|
|
pflash_write_failed(const char *name, uint64_t offset, uint8_t cmd) "%s: command failed 0x%" PRIx64 " 0x%02x"
|
|
pflash_write_invalid(const char *name, uint8_t cmd) "%s: invalid write for command 0x%02x"
|
|
pflash_write_invalid_command(const char *name, uint8_t cmd) "%s: invalid command 0x%02x (wc 5)"
|
|
pflash_write_invalid_state(const char *name, uint8_t cmd, int wc) "%s: invalid command state 0x%02x (wc %d)"
|
|
pflash_write_start(const char *name, uint8_t cmd) "%s: starting command 0x%02x"
|
|
pflash_write_unknown(const char *name, uint8_t cmd) "%s: unknown command 0x%02x"
|
|
|
|
# virtio-blk.c
|
|
virtio_blk_req_complete(void *vdev, void *req, int status) "vdev %p req %p status %d"
|
|
virtio_blk_rw_complete(void *vdev, void *req, int ret) "vdev %p req %p ret %d"
|
|
virtio_blk_zone_report_complete(void *vdev, void *req, unsigned int nr_zones, int ret) "vdev %p req %p nr_zones %u ret %d"
|
|
virtio_blk_zone_mgmt_complete(void *vdev, void *req, int ret) "vdev %p req %p ret %d"
|
|
virtio_blk_zone_append_complete(void *vdev, void *req, int64_t sector, int ret) "vdev %p req %p, append sector 0x%" PRIx64 " ret %d"
|
|
virtio_blk_handle_write(void *vdev, void *req, uint64_t sector, size_t nsectors) "vdev %p req %p sector %"PRIu64" nsectors %zu"
|
|
virtio_blk_handle_read(void *vdev, void *req, uint64_t sector, size_t nsectors) "vdev %p req %p sector %"PRIu64" nsectors %zu"
|
|
virtio_blk_submit_multireq(void *vdev, void *mrb, int start, int num_reqs, uint64_t offset, size_t size, bool is_write) "vdev %p mrb %p start %d num_reqs %d offset %"PRIu64" size %zu is_write %d"
|
|
virtio_blk_handle_zone_report(void *vdev, void *req, int64_t sector, unsigned int nr_zones) "vdev %p req %p sector 0x%" PRIx64 " nr_zones %u"
|
|
virtio_blk_handle_zone_mgmt(void *vdev, void *req, uint8_t op, int64_t sector, int64_t len) "vdev %p req %p op 0x%x sector 0x%" PRIx64 " len 0x%" PRIx64 ""
|
|
virtio_blk_handle_zone_reset_all(void *vdev, void *req, int64_t sector, int64_t len) "vdev %p req %p sector 0x%" PRIx64 " cap 0x%" PRIx64 ""
|
|
virtio_blk_handle_zone_append(void *vdev, void *req, int64_t sector) "vdev %p req %p, append sector 0x%" PRIx64 ""
|
|
|
|
# hd-geometry.c
|
|
hd_geometry_lchs_guess(void *blk, int cyls, int heads, int secs) "blk %p LCHS %d %d %d"
|
|
hd_geometry_guess(void *blk, uint32_t cyls, uint32_t heads, uint32_t secs, int trans) "blk %p CHS %u %u %u trans %d"
|
|
|
|
# xen-block.c
|
|
xen_block_realize(const char *type, uint32_t disk, uint32_t partition) "%s d%up%u"
|
|
xen_block_connect(const char *type, uint32_t disk, uint32_t partition) "%s d%up%u"
|
|
xen_block_disconnect(const char *type, uint32_t disk, uint32_t partition) "%s d%up%u"
|
|
xen_block_unrealize(const char *type, uint32_t disk, uint32_t partition) "%s d%up%u"
|
|
xen_block_size(const char *type, uint32_t disk, uint32_t partition, int64_t sectors) "%s d%up%u %"PRIi64
|
|
xen_disk_realize(void) ""
|
|
xen_disk_unrealize(void) ""
|
|
xen_cdrom_realize(void) ""
|
|
xen_cdrom_unrealize(void) ""
|
|
xen_block_blockdev_add(char *str) "%s"
|
|
xen_block_blockdev_del(const char *node_name) "%s"
|
|
xen_block_device_create(unsigned int number) "%u"
|
|
xen_block_device_destroy(unsigned int number) "%u"
|
|
|
|
# m25p80.c
|
|
m25p80_flash_erase(void *s, int offset, uint32_t len) "[%p] offset = 0x%"PRIx32", len = %u"
|
|
m25p80_programming_zero_to_one(void *s, uint32_t addr, uint8_t prev, uint8_t data) "[%p] programming zero to one! addr=0x%"PRIx32" 0x%"PRIx8" -> 0x%"PRIx8
|
|
m25p80_reset_done(void *s) "[%p] Reset done."
|
|
m25p80_command_decoded(void *s, uint32_t cmd) "[%p] new command:0x%"PRIx32
|
|
m25p80_complete_collecting(void *s, uint32_t cmd, int n, uint8_t ear, uint32_t cur_addr) "[%p] decode cmd: 0x%"PRIx32" len %d ear 0x%"PRIx8" addr 0x%"PRIx32
|
|
m25p80_populated_jedec(void *s) "[%p] populated jedec code"
|
|
m25p80_chip_erase(void *s) "[%p] chip erase"
|
|
m25p80_select(void *s, const char *what) "[%p] %sselect"
|
|
m25p80_page_program(void *s, uint32_t addr, uint8_t tx) "[%p] page program cur_addr=0x%"PRIx32" data=0x%"PRIx8
|
|
m25p80_transfer(void *s, uint8_t state, uint32_t len, uint8_t needed, uint32_t pos, uint32_t cur_addr, uint8_t t) "[%p] Transfer state 0x%"PRIx8" len 0x%"PRIx32" needed 0x%"PRIx8" pos 0x%"PRIx32" addr 0x%"PRIx32" tx 0x%"PRIx8
|
|
m25p80_read_byte(void *s, uint32_t addr, uint8_t v) "[%p] Read byte 0x%"PRIx32"=0x%"PRIx8
|
|
m25p80_read_data(void *s, uint32_t pos, uint8_t v) "[%p] Read data 0x%"PRIx32"=0x%"PRIx8
|
|
m25p80_read_sfdp(void *s, uint32_t addr, uint8_t v) "[%p] Read SFDP 0x%"PRIx32"=0x%"PRIx8
|
|
m25p80_binding(void *s) "[%p] Binding to IF_MTD drive"
|
|
m25p80_binding_no_bdrv(void *s) "[%p] No BDRV - binding to RAM"
|
|
|
|
# swim.c
|
|
swim_ismctrl_read(int reg, const char *name, unsigned size, uint64_t value) "reg=%d [%s] size=%u value=0x%"PRIx64
|
|
swim_ismctrl_write(int reg, const char *name, unsigned size, uint64_t value) "reg=%d [%s] size=%u value=0x%"PRIx64
|
|
swim_iwmctrl_read(int reg, const char *name, unsigned size, uint64_t value) "reg=%d [%s] size=%u value=0x%"PRIx64
|
|
swim_iwmctrl_write(int reg, const char *name, unsigned size, uint64_t value) "reg=%d [%s] size=%u value=0x%"PRIx64
|
|
swim_switch_to_ism(void) "switch from IWM to ISM mode"
|
|
swim_switch_to_iwm(void) "switch from ISM to IWM mode"
|