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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Mark Cave-Ayland
						Mark Cave-Ayland