pci: define a constant to represent a unmapped bar and use it.
define a constant to represent a unmapped bar instead of -1 and use it. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									2217dcfff5
								
							
						
					
					
						commit
						182f9c8a64
					
				| 
						 | 
					@ -3210,7 +3210,7 @@ static void pci_cirrus_write_config(PCIDevice *d,
 | 
				
			||||||
    CirrusVGAState *s = &pvs->cirrus_vga;
 | 
					    CirrusVGAState *s = &pvs->cirrus_vga;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pci_default_write_config(d, address, val, len);
 | 
					    pci_default_write_config(d, address, val, len);
 | 
				
			||||||
    if (s->vga.map_addr && d->io_regions[0].addr == -1)
 | 
					    if (s->vga.map_addr && d->io_regions[0].addr == PCI_BAR_UNMAPPED)
 | 
				
			||||||
        s->vga.map_addr = 0;
 | 
					        s->vga.map_addr = 0;
 | 
				
			||||||
    cirrus_update_memory_access(s);
 | 
					    cirrus_update_memory_access(s);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								hw/pci.c
								
								
								
								
							
							
						
						
									
										18
									
								
								hw/pci.c
								
								
								
								
							| 
						 | 
					@ -418,7 +418,7 @@ static void pci_unregister_io_regions(PCIDevice *pci_dev)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for(i = 0; i < PCI_NUM_REGIONS; i++) {
 | 
					    for(i = 0; i < PCI_NUM_REGIONS; i++) {
 | 
				
			||||||
        r = &pci_dev->io_regions[i];
 | 
					        r = &pci_dev->io_regions[i];
 | 
				
			||||||
        if (!r->size || r->addr == -1)
 | 
					        if (!r->size || r->addr == PCI_BAR_UNMAPPED)
 | 
				
			||||||
            continue;
 | 
					            continue;
 | 
				
			||||||
        if (r->type == PCI_ADDRESS_SPACE_IO) {
 | 
					        if (r->type == PCI_ADDRESS_SPACE_IO) {
 | 
				
			||||||
            isa_unassign_ioport(r->addr, r->size);
 | 
					            isa_unassign_ioport(r->addr, r->size);
 | 
				
			||||||
| 
						 | 
					@ -466,7 +466,7 @@ void pci_register_bar(PCIDevice *pci_dev, int region_num,
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    r = &pci_dev->io_regions[region_num];
 | 
					    r = &pci_dev->io_regions[region_num];
 | 
				
			||||||
    r->addr = -1;
 | 
					    r->addr = PCI_BAR_UNMAPPED;
 | 
				
			||||||
    r->size = size;
 | 
					    r->size = size;
 | 
				
			||||||
    r->type = type;
 | 
					    r->type = type;
 | 
				
			||||||
    r->map_func = map_func;
 | 
					    r->map_func = map_func;
 | 
				
			||||||
| 
						 | 
					@ -500,10 +500,10 @@ static void pci_update_mappings(PCIDevice *d)
 | 
				
			||||||
                    /* NOTE: we have only 64K ioports on PC */
 | 
					                    /* NOTE: we have only 64K ioports on PC */
 | 
				
			||||||
                    if (last_addr <= new_addr || new_addr == 0 ||
 | 
					                    if (last_addr <= new_addr || new_addr == 0 ||
 | 
				
			||||||
                        last_addr >= 0x10000) {
 | 
					                        last_addr >= 0x10000) {
 | 
				
			||||||
                        new_addr = -1;
 | 
					                        new_addr = PCI_BAR_UNMAPPED;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    new_addr = -1;
 | 
					                    new_addr = PCI_BAR_UNMAPPED;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                if (cmd & PCI_COMMAND_MEMORY) {
 | 
					                if (cmd & PCI_COMMAND_MEMORY) {
 | 
				
			||||||
| 
						 | 
					@ -518,17 +518,17 @@ static void pci_update_mappings(PCIDevice *d)
 | 
				
			||||||
                       mappings, we handle specific values as invalid
 | 
					                       mappings, we handle specific values as invalid
 | 
				
			||||||
                       mappings. */
 | 
					                       mappings. */
 | 
				
			||||||
                    if (last_addr <= new_addr || new_addr == 0 ||
 | 
					                    if (last_addr <= new_addr || new_addr == 0 ||
 | 
				
			||||||
                        last_addr == -1) {
 | 
					                        last_addr == PCI_BAR_UNMAPPED) {
 | 
				
			||||||
                        new_addr = -1;
 | 
					                        new_addr = PCI_BAR_UNMAPPED;
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                no_mem_map:
 | 
					                no_mem_map:
 | 
				
			||||||
                    new_addr = -1;
 | 
					                    new_addr = PCI_BAR_UNMAPPED;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            /* now do the real mapping */
 | 
					            /* now do the real mapping */
 | 
				
			||||||
            if (new_addr != r->addr) {
 | 
					            if (new_addr != r->addr) {
 | 
				
			||||||
                if (r->addr != -1) {
 | 
					                if (r->addr != PCI_BAR_UNMAPPED) {
 | 
				
			||||||
                    if (r->type & PCI_ADDRESS_SPACE_IO) {
 | 
					                    if (r->type & PCI_ADDRESS_SPACE_IO) {
 | 
				
			||||||
                        int class;
 | 
					                        int class;
 | 
				
			||||||
                        /* NOTE: specific hack for IDE in PC case:
 | 
					                        /* NOTE: specific hack for IDE in PC case:
 | 
				
			||||||
| 
						 | 
					@ -547,7 +547,7 @@ static void pci_update_mappings(PCIDevice *d)
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                r->addr = new_addr;
 | 
					                r->addr = new_addr;
 | 
				
			||||||
                if (r->addr != -1) {
 | 
					                if (r->addr != PCI_BAR_UNMAPPED) {
 | 
				
			||||||
                    r->map_func(d, i, r->addr, r->size, r->type);
 | 
					                    r->map_func(d, i, r->addr, r->size, r->type);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								hw/pci.h
								
								
								
								
							
							
						
						
									
										1
									
								
								hw/pci.h
								
								
								
								
							| 
						 | 
					@ -85,6 +85,7 @@ typedef int PCIUnregisterFunc(PCIDevice *pci_dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct PCIIORegion {
 | 
					typedef struct PCIIORegion {
 | 
				
			||||||
    uint32_t addr; /* current PCI mapping address. -1 means not mapped */
 | 
					    uint32_t addr; /* current PCI mapping address. -1 means not mapped */
 | 
				
			||||||
 | 
					#define PCI_BAR_UNMAPPED (~(uint32_t)0)
 | 
				
			||||||
    uint32_t size;
 | 
					    uint32_t size;
 | 
				
			||||||
    uint8_t type;
 | 
					    uint8_t type;
 | 
				
			||||||
    PCIMapIORegionFunc *map_func;
 | 
					    PCIMapIORegionFunc *map_func;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue