qemu/docs
Damien Hedde 310616d367 hw/core/resettable: fix reset level counting
The code for handling the reset level count in the Resettable code
has two issues:

The reset count is only decremented for the 1->0 case.  This means
that if there's ever a nested reset that takes the count to 2 then it
will never again be decremented.  Eventually the count will exceed
the '50' limit in resettable_phase_enter() and QEMU will trip over
the assertion failure.  The repro case in issue 1266 is an example of
this that happens now the SCSI subsystem uses three-phase reset.

Secondly, the count is decremented only after the exit phase handler
is called.  Moving the reset count decrement from "just after" to
"just before" calling the exit phase handler allows
resettable_is_in_reset() to return false during the handler
execution.

This simplifies reset handling in resettable devices.  Typically, a
function that updates the device state will just need to read the
current reset state and not anymore treat the "in a reset-exit
transition" as a special case.

Note that the semantics change to the *_is_in_reset() functions
will have no effect on the current codebase, because only two
devices (hw/char/cadence_uart.c and hw/misc/zynq_sclr.c) currently
call those functions, and in neither case do they do it from the
device's exit phase methed.

Fixes: 4a5fc890 ("scsi: Use device_cold_reset() and bus_cold_reset()")
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1266
Signed-off-by: Damien Hedde <damien.hedde@greensocs.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reported-by: Michael Peter <michael.peter@hensoldt-cyber.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20221020142749.3357951-1-peter.maydell@linaro.org
Buglink: https://bugs.launchpad.net/qemu/+bug/1905297
Reported-by: Michael Peter <michael.peter@hensoldt-cyber.com>
[PMM: adjust the docs paragraph changed to get the name of the
 'enter' phase right and to clarify exactly when the count is
 adjusted; rewrite the commit message]
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2022-10-27 10:27:23 +01:00
..
_templates docs: Add QEMU version information to HTML footer 2021-07-18 10:59:47 +01:00
about watchdog: remove -watchdog option 2022-09-29 11:40:28 +02:00
config docs: Grammar and spelling fixes 2018-07-13 10:16:04 +01:00
devel hw/core/resettable: fix reset level counting 2022-10-27 10:27:23 +01:00
interop docs: add firmware feature flags 2022-10-12 11:02:44 +02:00
specs pci-ids: drop list of modern virtio devices 2022-10-12 12:01:11 +02:00
sphinx docs/sphinx: fix compatibility with sphinx < 1.8 2022-01-05 11:10:13 +01:00
sphinx-static docs/sphinx: add 's' keyboard binding to focus search 2021-11-08 12:27:23 +04:00
spin docs: create config/, devel/ and spin/ subdirectories 2017-06-07 18:22:03 +02:00
system target/arm: Implement FEAT_E0PD 2022-10-27 10:27:23 +01:00
tools qemu-img: Wean documentation and help output off '?' for help 2022-09-30 18:02:30 +02:00
user linux-user: Remove the deprecated ppc64abi32 target 2022-02-09 13:29:38 +00:00
block-replication.txt docs/block-replication.txt: Fix replication top-id command demo 2021-12-17 11:35:00 +01:00
bypass-iommu.txt docs: Add documentation for iommu bypass 2021-07-16 11:10:45 -04:00
COLO-FT.txt docs: Use double quotes instead of single quotes for COLO 2021-11-22 15:02:38 +01:00
colo-proxy.txt docs: update to show preferred boolean syntax for -chardev 2021-02-25 14:14:33 +01:00
conf.py sphinx: change default language to 'en' 2022-06-27 10:39:03 +01:00
defs.rst.inc docs: Fix typo in the default name of the qemu-system-x86_64 binary 2021-04-01 14:28:39 +02:00
igd-assign.txt vfio/pci: Add IGD documentation 2016-05-26 11:12:05 -06:00
image-fuzzer.txt docs: Render binary names as monospaced text 2021-11-22 15:02:38 +01:00
index.rst docs: standardize book titles to === with overline 2021-09-13 13:56:26 +02:00
memory-hotplug.txt docs: Grammar and spelling fixes 2018-07-13 10:16:04 +01:00
meson.build meson, configure: move --with-pkgversion, CONFIG_STAMP to meson 2022-05-07 07:46:58 +02:00
multi-thread-compression.txt Replace '-enable-kvm' with '-accel kvm' in docs and help texts 2018-06-28 19:05:32 +02:00
multiseat.txt docs: Spell QEMU all caps 2021-11-19 10:16:58 +01:00
nvdimm.txt docs/nvdimm: Update nvdimm option value in machine example 2021-09-27 10:57:21 +02:00
pci_expander_bridge.txt pxb: cleanup 2016-03-11 16:59:12 +02:00
pcie_pci_bridge.txt docs: add slot when adding new PCIe root port 2021-07-03 03:12:35 -04:00
pcie_sriov.txt docs: Replace Qemu -> QEMU 2022-04-26 12:38:44 +02:00
pcie.txt docs: pcie: Spell out machine type needs for PCIe features 2018-03-01 16:25:37 +02:00
pvrdma.txt docs: Fix broken links 2020-09-01 09:31:33 +02:00
qcow2-cache.txt qcow2: Document the Extended L2 Entries feature 2020-08-25 08:33:20 +02:00
qdev-device-use.txt hw/ide: remove 'ide-drive' device 2021-03-18 09:22:55 +00:00
qemu-option-trace.rst.inc qemu-option-trace.rst.inc: Don't use option:: markup 2020-11-02 16:52:18 +00:00
qemupciserial.inf docs: Grammar and spelling fixes 2018-07-13 10:16:04 +01:00
rdma.txt migrate: remove QMP/HMP commands for speed, downtime and cache size 2021-03-18 09:22:55 +00:00
spice-port-fqdn.txt docs: add spice-port-fqdn.txt 2012-12-17 14:01:41 +01:00
throttle.txt docs: Drop deprecated 'props' from object-add 2021-11-22 15:02:38 +01:00
u2f.txt docs: Spell QEMU all caps 2021-11-19 10:16:58 +01:00
xbzrle.txt migrate: remove QMP/HMP commands for speed, downtime and cache size 2021-03-18 09:22:55 +00:00
xen-save-devices-state.txt Fix up dangling references to qmp-commands.* in comment and doc 2018-03-02 13:48:26 -06:00