esp: include the current PDMA callback in the migration stream
This involves (re)adding a PDMA-specific subsection to hold the reference to the current PDMA callback. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20220305155530.9265-10-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
77987ef5a3
commit
eda59b392d
@ -1209,6 +1209,33 @@ static int esp_post_load(void *opaque, int version_id)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* PDMA (or pseudo-DMA) is only used on the Macintosh and requires the
|
||||
* guest CPU to perform the transfers between the SCSI bus and memory
|
||||
* itself. This is indicated by the dma_memory_read and dma_memory_write
|
||||
* functions being NULL (in contrast to the ESP PCI device) whilst
|
||||
* dma_enabled is still set.
|
||||
*/
|
||||
|
||||
static bool esp_pdma_needed(void *opaque)
|
||||
{
|
||||
ESPState *s = ESP(opaque);
|
||||
|
||||
return s->dma_memory_read == NULL && s->dma_memory_write == NULL &&
|
||||
s->dma_enabled;
|
||||
}
|
||||
|
||||
static const VMStateDescription vmstate_esp_pdma = {
|
||||
.name = "esp/pdma",
|
||||
.version_id = 0,
|
||||
.minimum_version_id = 0,
|
||||
.needed = esp_pdma_needed,
|
||||
.fields = (VMStateField[]) {
|
||||
VMSTATE_UINT8(pdma_cb, ESPState),
|
||||
VMSTATE_END_OF_LIST()
|
||||
}
|
||||
};
|
||||
|
||||
const VMStateDescription vmstate_esp = {
|
||||
.name = "esp",
|
||||
.version_id = 6,
|
||||
@ -1243,6 +1270,10 @@ const VMStateDescription vmstate_esp = {
|
||||
VMSTATE_UINT8_TEST(lun, ESPState, esp_is_version_6),
|
||||
VMSTATE_END_OF_LIST()
|
||||
},
|
||||
.subsections = (const VMStateDescription * []) {
|
||||
&vmstate_esp_pdma,
|
||||
NULL
|
||||
}
|
||||
};
|
||||
|
||||
static void sysbus_esp_mem_write(void *opaque, hwaddr addr,
|
||||
|
Loading…
Reference in New Issue
Block a user