msi: Generalize msix_supported to msi_supported
Rename msix_supported to msi_supported and control MSI and MSI-X activation this way. That was likely to original intention for this flag, but MSI support came after MSI-X. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
This commit is contained in:
		
							parent
							
								
									eab70139a6
								
							
						
					
					
						commit
						60ba3cc231
					
				
							
								
								
									
										8
									
								
								hw/msi.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								hw/msi.c
									
									
									
									
									
								
							| @ -36,6 +36,9 @@ | ||||
| 
 | ||||
| #define PCI_MSI_VECTORS_MAX     32 | ||||
| 
 | ||||
| /* Flag for interrupt controller to declare MSI/MSI-X support */ | ||||
| bool msi_supported; | ||||
| 
 | ||||
| /* If we get rid of cap allocator, we won't need this. */ | ||||
| static inline uint8_t msi_cap_sizeof(uint16_t flags) | ||||
| { | ||||
| @ -116,6 +119,11 @@ int msi_init(struct PCIDevice *dev, uint8_t offset, | ||||
|     uint16_t flags; | ||||
|     uint8_t cap_size; | ||||
|     int config_offset; | ||||
| 
 | ||||
|     if (!msi_supported) { | ||||
|         return -ENOTSUP; | ||||
|     } | ||||
| 
 | ||||
|     MSI_DEV_PRINTF(dev, | ||||
|                    "init offset: 0x%"PRIx8" vector: %"PRId8 | ||||
|                    " 64bit %d mask %d\n", | ||||
|  | ||||
							
								
								
									
										2
									
								
								hw/msi.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								hw/msi.h
									
									
									
									
									
								
							| @ -24,6 +24,8 @@ | ||||
| #include "qemu-common.h" | ||||
| #include "pci.h" | ||||
| 
 | ||||
| extern bool msi_supported; | ||||
| 
 | ||||
| bool msi_enabled(const PCIDevice *dev); | ||||
| int msi_init(struct PCIDevice *dev, uint8_t offset, | ||||
|              unsigned int nr_vectors, bool msi64bit, bool msi_per_vector_mask); | ||||
|  | ||||
							
								
								
									
										11
									
								
								hw/msix.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								hw/msix.c
									
									
									
									
									
								
							| @ -15,6 +15,7 @@ | ||||
|  */ | ||||
| 
 | ||||
| #include "hw.h" | ||||
| #include "msi.h" | ||||
| #include "msix.h" | ||||
| #include "pci.h" | ||||
| #include "range.h" | ||||
| @ -35,9 +36,6 @@ | ||||
| #define MSIX_MAX_ENTRIES 32 | ||||
| 
 | ||||
| 
 | ||||
| /* Flag for interrupt controller to declare MSI-X support */ | ||||
| int msix_supported; | ||||
| 
 | ||||
| /* Add MSI-X capability to the config space for the device. */ | ||||
| /* Given a bar and its size, add MSI-X table on top of it
 | ||||
|  * and fill MSI-X capability in the config space. | ||||
| @ -238,10 +236,11 @@ int msix_init(struct PCIDevice *dev, unsigned short nentries, | ||||
|               unsigned bar_nr, unsigned bar_size) | ||||
| { | ||||
|     int ret; | ||||
|     /* Nothing to do if MSI is not supported by interrupt controller */ | ||||
|     if (!msix_supported) | ||||
|         return -ENOTSUP; | ||||
| 
 | ||||
|     /* Nothing to do if MSI is not supported by interrupt controller */ | ||||
|     if (!msi_supported) { | ||||
|         return -ENOTSUP; | ||||
|     } | ||||
|     if (nentries > MSIX_MAX_ENTRIES) | ||||
|         return -EINVAL; | ||||
| 
 | ||||
|  | ||||
| @ -29,6 +29,4 @@ void msix_notify(PCIDevice *dev, unsigned vector); | ||||
| 
 | ||||
| void msix_reset(PCIDevice *dev); | ||||
| 
 | ||||
| extern int msix_supported; | ||||
| 
 | ||||
| #endif | ||||
|  | ||||
							
								
								
									
										4
									
								
								hw/pc.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								hw/pc.c
									
									
									
									
									
								
							| @ -36,7 +36,7 @@ | ||||
| #include "elf.h" | ||||
| #include "multiboot.h" | ||||
| #include "mc146818rtc.h" | ||||
| #include "msix.h" | ||||
| #include "msi.h" | ||||
| #include "sysbus.h" | ||||
| #include "sysemu.h" | ||||
| #include "blockdev.h" | ||||
| @ -896,7 +896,7 @@ static DeviceState *apic_init(void *env, uint8_t apic_id) | ||||
|         apic_mapped = 1; | ||||
|     } | ||||
| 
 | ||||
|     msix_supported = 1; | ||||
|     msi_supported = true; | ||||
| 
 | ||||
|     return dev; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jan Kiszka
						Jan Kiszka