it replaces a static complied in DSDT MMIO region for CPU hotplug with one created at runtime leaving only truly static CPU hotplug related ASL bits in DSDT. It also puts CPU_HOTPLUG_RESOURCE_DEVICE into PCI0 scope and reserves resources from it, preparing for dropping manual hole punching in PCI0._CRS. Later it also would make easier to reuse current ACPI CPU hotplug on other targets. Also later it would be possible to move remaining CPU hotplug ASL methods into build_ssdt() and add all CPU hotplug related AML into SSDT only when CPU hotplug is enabled, further reducing ACPI tables blob if CPU hotplug isn't used. impl. detail: Windows XP can't handle /BSODs/ OperationRegion declaration in DSDT when variable from SSDT is used for specifying its address/length and also when Field declared in DSDT with OperationRegion from SSDT if DSDT is being parsed before SSDT. But it works just fine when referencing named fields from another table. Hence OperationRegion and Field declaration are moved to SSDT to make XP based editions work. PS: Later Windows editions seem to be fine with above conditions. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * QEMU ACPI hotplug utilities shared defines
 | |
|  *
 | |
|  * Copyright (C) 2014 Red Hat Inc
 | |
|  *
 | |
|  * Authors:
 | |
|  *   Igor Mammedov <imammedo@redhat.com>
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2 or later.
 | |
|  * See the COPYING file in the top-level directory.
 | |
|  */
 | |
| #ifndef PC_HOTPLUG_H
 | |
| #define PC_HOTPLUG_H
 | |
| 
 | |
| /*
 | |
|  * ONLY DEFINEs are permited in this file since it's shared
 | |
|  * between C and ASL code.
 | |
|  */
 | |
| #define ACPI_CPU_HOTPLUG_STATUS 4
 | |
| 
 | |
| /* Limit for CPU arch IDs for CPU hotplug. All hotpluggable CPUs should
 | |
|  * have CPUClass.get_arch_id() < ACPI_CPU_HOTPLUG_ID_LIMIT.
 | |
|  */
 | |
| #define ACPI_CPU_HOTPLUG_ID_LIMIT 256
 | |
| 
 | |
| /* 256 CPU IDs, 8 bits per entry: */
 | |
| #define ACPI_GPE_PROC_LEN 32
 | |
| 
 | |
| #define ICH9_CPU_HOTPLUG_IO_BASE 0x0CD8
 | |
| #define PIIX4_CPU_HOTPLUG_IO_BASE 0xaf00
 | |
| #define CPU_HOTPLUG_RESOURCE_DEVICE PRES
 | |
| 
 | |
| #define ACPI_MEMORY_HOTPLUG_IO_LEN 24
 | |
| #define ACPI_MEMORY_HOTPLUG_BASE 0x0a00
 | |
| 
 | |
| #define MEMORY_HOTPLUG_DEVICE        MHPD
 | |
| #define MEMORY_SLOTS_NUMBER          MDNR
 | |
| #define MEMORY_HOTPLUG_IO_REGION     HPMR
 | |
| #define MEMORY_SLOT_ADDR_LOW         MRBL
 | |
| #define MEMORY_SLOT_ADDR_HIGH        MRBH
 | |
| #define MEMORY_SLOT_SIZE_LOW         MRLL
 | |
| #define MEMORY_SLOT_SIZE_HIGH        MRLH
 | |
| #define MEMORY_SLOT_PROXIMITY        MPX
 | |
| #define MEMORY_SLOT_ENABLED          MES
 | |
| #define MEMORY_SLOT_INSERT_EVENT     MINS
 | |
| #define MEMORY_SLOT_SLECTOR          MSEL
 | |
| #define MEMORY_SLOT_OST_EVENT        MOEV
 | |
| #define MEMORY_SLOT_OST_STATUS       MOSC
 | |
| #define MEMORY_SLOT_LOCK             MLCK
 | |
| #define MEMORY_SLOT_STATUS_METHOD    MRST
 | |
| #define MEMORY_SLOT_CRS_METHOD       MCRS
 | |
| #define MEMORY_SLOT_OST_METHOD       MOST
 | |
| #define MEMORY_SLOT_PROXIMITY_METHOD MPXM
 | |
| #define MEMORY_SLOT_NOTIFY_METHOD    MTFY
 | |
| #define MEMORY_SLOT_SCAN_METHOD      MSCN
 | |
| 
 | |
| #endif
 |