ide: move retry constants out of BM_STATUS_* namespace
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: John Snow <jsnow@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									7e2648df86
								
							
						
					
					
						commit
						fd648f10af
					
				| 
						 | 
				
			
			@ -523,8 +523,8 @@ static void ide_sector_read_cb(void *opaque, int ret)
 | 
			
		|||
 | 
			
		||||
    bdrv_acct_done(s->bs, &s->acct);
 | 
			
		||||
    if (ret != 0) {
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, BM_STATUS_PIO_RETRY |
 | 
			
		||||
                                BM_STATUS_RETRY_READ)) {
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, IDE_RETRY_PIO |
 | 
			
		||||
                                IDE_RETRY_READ)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -614,14 +614,14 @@ void ide_dma_error(IDEState *s)
 | 
			
		|||
 | 
			
		||||
static int ide_handle_rw_error(IDEState *s, int error, int op)
 | 
			
		||||
{
 | 
			
		||||
    bool is_read = (op & BM_STATUS_RETRY_READ) != 0;
 | 
			
		||||
    bool is_read = (op & IDE_RETRY_READ) != 0;
 | 
			
		||||
    BlockErrorAction action = bdrv_get_error_action(s->bs, is_read, error);
 | 
			
		||||
 | 
			
		||||
    if (action == BLOCK_ERROR_ACTION_STOP) {
 | 
			
		||||
        s->bus->dma->ops->set_unit(s->bus->dma, s->unit);
 | 
			
		||||
        s->bus->error_status = op;
 | 
			
		||||
    } else if (action == BLOCK_ERROR_ACTION_REPORT) {
 | 
			
		||||
        if (op & BM_STATUS_DMA_RETRY) {
 | 
			
		||||
        if (op & IDE_RETRY_DMA) {
 | 
			
		||||
            dma_buf_commit(s);
 | 
			
		||||
            ide_dma_error(s);
 | 
			
		||||
        } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -640,12 +640,12 @@ void ide_dma_cb(void *opaque, int ret)
 | 
			
		|||
    bool stay_active = false;
 | 
			
		||||
 | 
			
		||||
    if (ret < 0) {
 | 
			
		||||
        int op = BM_STATUS_DMA_RETRY;
 | 
			
		||||
        int op = IDE_RETRY_DMA;
 | 
			
		||||
 | 
			
		||||
        if (s->dma_cmd == IDE_DMA_READ)
 | 
			
		||||
            op |= BM_STATUS_RETRY_READ;
 | 
			
		||||
            op |= IDE_RETRY_READ;
 | 
			
		||||
        else if (s->dma_cmd == IDE_DMA_TRIM)
 | 
			
		||||
            op |= BM_STATUS_RETRY_TRIM;
 | 
			
		||||
            op |= IDE_RETRY_TRIM;
 | 
			
		||||
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, op)) {
 | 
			
		||||
            return;
 | 
			
		||||
| 
						 | 
				
			
			@ -769,7 +769,7 @@ static void ide_sector_write_cb(void *opaque, int ret)
 | 
			
		|||
    s->status &= ~BUSY_STAT;
 | 
			
		||||
 | 
			
		||||
    if (ret != 0) {
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, BM_STATUS_PIO_RETRY)) {
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, IDE_RETRY_PIO)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -843,7 +843,7 @@ static void ide_flush_cb(void *opaque, int ret)
 | 
			
		|||
 | 
			
		||||
    if (ret < 0) {
 | 
			
		||||
        /* XXX: What sector number to set here? */
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, BM_STATUS_RETRY_FLUSH)) {
 | 
			
		||||
        if (ide_handle_rw_error(s, -ret, IDE_RETRY_FLUSH)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			@ -2338,7 +2338,7 @@ static bool ide_drive_pio_state_needed(void *opaque)
 | 
			
		|||
    IDEState *s = opaque;
 | 
			
		||||
 | 
			
		||||
    return ((s->status & DRQ_STAT) != 0)
 | 
			
		||||
        || (s->bus->error_status & BM_STATUS_PIO_RETRY);
 | 
			
		||||
        || (s->bus->error_status & IDE_RETRY_PIO);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static bool ide_tray_state_needed(void *opaque)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -484,12 +484,12 @@ struct IDEDevice {
 | 
			
		|||
    uint64_t wwn;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* FIXME These are not status register bits */
 | 
			
		||||
#define BM_STATUS_DMA_RETRY  0x08
 | 
			
		||||
#define BM_STATUS_PIO_RETRY  0x10
 | 
			
		||||
#define BM_STATUS_RETRY_READ  0x20
 | 
			
		||||
#define BM_STATUS_RETRY_FLUSH 0x40
 | 
			
		||||
#define BM_STATUS_RETRY_TRIM 0x80
 | 
			
		||||
/* These are used for the error_status field of IDEBus */
 | 
			
		||||
#define IDE_RETRY_DMA  0x08
 | 
			
		||||
#define IDE_RETRY_PIO  0x10
 | 
			
		||||
#define IDE_RETRY_READ  0x20
 | 
			
		||||
#define IDE_RETRY_FLUSH 0x40
 | 
			
		||||
#define IDE_RETRY_TRIM 0x80
 | 
			
		||||
 | 
			
		||||
static inline IDEState *idebus_active_if(IDEBus *bus)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										14
									
								
								hw/ide/pci.c
								
								
								
								
							
							
						
						
									
										14
									
								
								hw/ide/pci.c
								
								
								
								
							| 
						 | 
				
			
			@ -34,8 +34,8 @@
 | 
			
		|||
#define BMDMA_PAGE_SIZE 4096
 | 
			
		||||
 | 
			
		||||
#define BM_MIGRATION_COMPAT_STATUS_BITS \
 | 
			
		||||
        (BM_STATUS_DMA_RETRY | BM_STATUS_PIO_RETRY | \
 | 
			
		||||
        BM_STATUS_RETRY_READ | BM_STATUS_RETRY_FLUSH)
 | 
			
		||||
        (IDE_RETRY_DMA | IDE_RETRY_PIO | \
 | 
			
		||||
        IDE_RETRY_READ | IDE_RETRY_FLUSH)
 | 
			
		||||
 | 
			
		||||
static void bmdma_start_dma(IDEDMA *dma, IDEState *s,
 | 
			
		||||
                            BlockDriverCompletionFunc *dma_cb)
 | 
			
		||||
| 
						 | 
				
			
			@ -198,7 +198,7 @@ static void bmdma_restart_bh(void *opaque)
 | 
			
		|||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    is_read = (bus->error_status & BM_STATUS_RETRY_READ) != 0;
 | 
			
		||||
    is_read = (bus->error_status & IDE_RETRY_READ) != 0;
 | 
			
		||||
 | 
			
		||||
    /* The error status must be cleared before resubmitting the request: The
 | 
			
		||||
     * request may fail again, and this case can only be distinguished if the
 | 
			
		||||
| 
						 | 
				
			
			@ -206,19 +206,19 @@ static void bmdma_restart_bh(void *opaque)
 | 
			
		|||
    error_status = bus->error_status;
 | 
			
		||||
    bus->error_status = 0;
 | 
			
		||||
 | 
			
		||||
    if (error_status & BM_STATUS_DMA_RETRY) {
 | 
			
		||||
        if (error_status & BM_STATUS_RETRY_TRIM) {
 | 
			
		||||
    if (error_status & IDE_RETRY_DMA) {
 | 
			
		||||
        if (error_status & IDE_RETRY_TRIM) {
 | 
			
		||||
            bmdma_restart_dma(bm, IDE_DMA_TRIM);
 | 
			
		||||
        } else {
 | 
			
		||||
            bmdma_restart_dma(bm, is_read ? IDE_DMA_READ : IDE_DMA_WRITE);
 | 
			
		||||
        }
 | 
			
		||||
    } else if (error_status & BM_STATUS_PIO_RETRY) {
 | 
			
		||||
    } else if (error_status & IDE_RETRY_PIO) {
 | 
			
		||||
        if (is_read) {
 | 
			
		||||
            ide_sector_read(bmdma_active_if(bm));
 | 
			
		||||
        } else {
 | 
			
		||||
            ide_sector_write(bmdma_active_if(bm));
 | 
			
		||||
        }
 | 
			
		||||
    } else if (error_status & BM_STATUS_RETRY_FLUSH) {
 | 
			
		||||
    } else if (error_status & IDE_RETRY_FLUSH) {
 | 
			
		||||
        ide_flush_cache(bmdma_active_if(bm));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue