[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 51/69] ahci: Recompute cur_cmd on migrate post load
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 51/69] ahci: Recompute cur_cmd on migrate post load |
Date: |
Fri, 27 Feb 2015 18:18:49 +0000 |
From: John Snow <address@hidden>
When the AHCI HBA device is migrated, all of the information that
led to the request being created is stored in the AHCIDevice
structures, except for pointers into guest data where return
information needs to be stored.
The "cur_cmd" field is usually responsible for this.
To rebuild the cur_cmd pointer post-migration, we can utilize
the busy_slot index to figure out where the command header
we are still processing is.
This allows a machine in a halted state from rerror=stop or
werror=stop to be migrated and resume operations without issue.
Signed-off-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
hw/ide/ahci.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/ide/ahci.c b/hw/ide/ahci.c
index 56a4867..e1ae36f 100644
--- a/hw/ide/ahci.c
+++ b/hw/ide/ahci.c
@@ -1376,6 +1376,13 @@ static int ahci_state_post_load(void *opaque, int
version_id)
*/
if (ad->busy_slot == -1) {
check_cmd(s, i);
+ } else {
+ /* We are in the middle of a command, and may need to access
+ * the command header in guest memory again. */
+ if (ad->busy_slot < 0 || ad->busy_slot >= AHCI_MAX_CMDS) {
+ return -1;
+ }
+ ad->cur_cmd = &((AHCICmdHdr *)ad->lst)[ad->busy_slot];
}
}
--
2.1.0
- [Qemu-devel] [PULL 43/69] ide: replace set_unit callback with more IDEBus state, (continued)
- [Qemu-devel] [PULL 43/69] ide: replace set_unit callback with more IDEBus state, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 44/69] ide: place initial state of the current request to IDEBus, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 35/69] BlockConf: Call backend functions to detect geometry and blocksizes, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 45/69] ide: migrate initial request state via IDEBus, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 46/69] ide: commonize io_buffer_index initialization, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 47/69] ide: make more functions static, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 48/69] ide: support PIO restart for the ISA controller, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 50/69] ahci: add support for restarting non-queued commands, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 49/69] ahci: Migrate IDEStatus, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 53/69] libqos/ahci: Zero-fill AHCI headers, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 51/69] ahci: Recompute cur_cmd on migrate post load,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 52/69] qtest/ide: Test flush / retry for ISA and PCI, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 56/69] qtest/ahci: Add DMA test variants, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 54/69] qtest/ahci: Add a macro bootup routine, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 58/69] qtest/ahci: add fragmented dma test, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 55/69] libqos/ahci: add ahci command helpers, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 57/69] qtest/ahci: Add PIO and LBA48 tests, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 59/69] qtest/ahci: add qcow2 support to ahci-test, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 61/69] qtest/ahci: Add simple flush test, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 62/69] qtest/ahci: Allow override of default CLI options, Stefan Hajnoczi, 2015/02/27
- [Qemu-devel] [PULL 60/69] qtest/ahci: test different disk sectors, Stefan Hajnoczi, 2015/02/27