qmp: add query-acpi-ospm-status command
... to get ACPI OSPM status reported by ACPI devices via _OST method. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
							parent
							
								
									43f5041008
								
							
						
					
					
						commit
						02419bcb3f
					
				| @ -3276,3 +3276,13 @@ | ||||
|               'slot-type': 'ACPISlotType', | ||||
|               'source': 'int', | ||||
|               'status': 'int' } } | ||||
| 
 | ||||
| ## | ||||
| # @query-acpi-ospm-status | ||||
| # | ||||
| # Lists ACPI OSPM status of ACPI device objects, | ||||
| # which might be reported via _OST method | ||||
| # | ||||
| # Since: 2.1 | ||||
| ## | ||||
| { 'command': 'query-acpi-ospm-status', 'returns': ['ACPIOSTInfo'] } | ||||
|  | ||||
| @ -3639,3 +3639,25 @@ Example: | ||||
|                    "type": "dimm" | ||||
|                  } ] } | ||||
| EQMP | ||||
| 
 | ||||
|     { | ||||
|         .name       = "query-acpi-ospm-status", | ||||
|         .args_type  = "", | ||||
|         .mhandler.cmd_new = qmp_marshal_input_query_acpi_ospm_status, | ||||
|     }, | ||||
| 
 | ||||
| SQMP | ||||
| @query-acpi-ospm-status | ||||
| -------------------- | ||||
| 
 | ||||
| Return list of ACPIOSTInfo for devices that support status reporting | ||||
| via ACPI _OST method. | ||||
| 
 | ||||
| Example: | ||||
| -> { "execute": "query-acpi-ospm-status" } | ||||
| <- { "return": [ { "device": "d1", "slot": "0", "slot-type": "DIMM", "source": 1, "status": 0}, | ||||
|                  { "slot": "1", "slot-type": "DIMM", "source": 0, "status": 0}, | ||||
|                  { "slot": "2", "slot-type": "DIMM", "source": 0, "status": 0}, | ||||
|                  { "slot": "3", "slot-type": "DIMM", "source": 0, "status": 0} | ||||
|    ]} | ||||
| EQMP | ||||
|  | ||||
							
								
								
									
										20
									
								
								qmp.c
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								qmp.c
									
									
									
									
									
								
							| @ -29,6 +29,7 @@ | ||||
| #include "hw/boards.h" | ||||
| #include "qom/object_interfaces.h" | ||||
| #include "hw/mem/pc-dimm.h" | ||||
| #include "hw/acpi/acpi_dev_interface.h" | ||||
| 
 | ||||
| NameInfo *qmp_query_name(Error **errp) | ||||
| { | ||||
| @ -639,3 +640,22 @@ MemoryDeviceInfoList *qmp_query_memory_devices(Error **errp) | ||||
| 
 | ||||
|     return head; | ||||
| } | ||||
| 
 | ||||
| ACPIOSTInfoList *qmp_query_acpi_ospm_status(Error **errp) | ||||
| { | ||||
|     bool ambig; | ||||
|     ACPIOSTInfoList *head = NULL; | ||||
|     ACPIOSTInfoList **prev = &head; | ||||
|     Object *obj = object_resolve_path_type("", TYPE_ACPI_DEVICE_IF, &ambig); | ||||
| 
 | ||||
|     if (obj) { | ||||
|         AcpiDeviceIfClass *adevc = ACPI_DEVICE_IF_GET_CLASS(obj); | ||||
|         AcpiDeviceIf *adev = ACPI_DEVICE_IF(obj); | ||||
| 
 | ||||
|         adevc->ospm_status(adev, &prev); | ||||
|     } else { | ||||
|         error_setg(errp, "command is not supported, missing ACPI device"); | ||||
|     } | ||||
| 
 | ||||
|     return head; | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Igor Mammedov
						Igor Mammedov