summaryrefslogtreecommitdiffstats
path: root/CODING_STYLE
diff options
context:
space:
mode:
authorGabriel L. Somlo <somlo@cmu.edu>2015-11-05 09:32:48 -0500
committerTimothy Pearson <tpearson@raptorengineering.com>2019-11-29 19:28:18 -0600
commit0926f0f075ab494738e1d47a5ff7c2d70bb6c9e5 (patch)
tree6eca2f34f857ba99f2af691f8f150362bf2a0264 /CODING_STYLE
parentdc7854a76d1abd81fce3913bea53f7565cfc63a1 (diff)
downloadhqemu-0926f0f075ab494738e1d47a5ff7c2d70bb6c9e5.zip
hqemu-0926f0f075ab494738e1d47a5ff7c2d70bb6c9e5.tar.gz
fw_cfg: amend callback behavior spec to once per select
Currently, the fw_cfg internal API specifies that if an item was set up with a read callback, the callback must be run each time a byte is read from the item. This behavior is both wasteful (most items do not have a read callback set), and impractical for bulk transfers (e.g., DMA read). At the time of this writing, the only items configured with a callback are "/etc/table-loader", "/etc/acpi/tables", and "/etc/acpi/rsdp". They all share the same callback functions: virt_acpi_build_update() on ARM (in hw/arm/virt-acpi-build.c), and acpi_build_update() on i386 (in hw/i386/acpi.c). Both of these callbacks are one-shot (i.e. they return without doing anything at all after the first time they are invoked with a given build_state; since build_state is also shared across all three items mentioned above, the callback only ever runs *once*, the first time either of the listed items is read). This patch amends the specification for fw_cfg_add_file_callback() to state that any available read callback will only be invoked once each time the item is selected. This change has no practical effect on the current behavior of QEMU, and it enables us to significantly optimize the behavior of fw_cfg reads during guest firmware setup, eliminating a large amount of redundant callback checks and invocations. Cc: Laszlo Ersek <lersek@redhat.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Marc MarĂ­ <markmb@redhat.com> Signed-off-by: Gabriel Somlo <somlo@cmu.edu> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Message-id: 1446733972-1602-3-git-send-email-somlo@cmu.edu Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'CODING_STYLE')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud