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…
	
		Reference in New Issue