qmp: add architecture specific cpu data for query-cpus-fast
The s390 CPU state can be retrieved without interrupting the
VM execution. Extendend the CpuInfoFast union with architecture
specific data and an implementation for s390.
Return data looks like this:
 [
   {"thread-id":64301,"props":{"core-id":0},
    "arch":"s390","cpu-state":"operating",
    "qom-path":"/machine/unattached/device[0]","cpu-index":0},
   {"thread-id":64302,"props":{"core-id":1},
    "arch":"s390","cpu-state":"operating",
    "qom-path":"/machine/unattached/device[1]","cpu-index":1}
]
Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Message-Id: <1518797321-28356-4-git-send-email-mihajlov@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
			
			
This commit is contained in:
		
							parent
							
								
									ce74ee3dea
								
							
						
					
					
						commit
						ca230ff33f
					
				
							
								
								
									
										10
									
								
								cpus.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								cpus.c
									
									
									
									
									
								
							| @ -2166,6 +2166,10 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp) | ||||
|     MachineClass *mc = MACHINE_GET_CLASS(ms); | ||||
|     CpuInfoFastList *head = NULL, *cur_item = NULL; | ||||
|     CPUState *cpu; | ||||
| #if defined(TARGET_S390X) | ||||
|     S390CPU *s390_cpu; | ||||
|     CPUS390XState *env; | ||||
| #endif | ||||
| 
 | ||||
|     CPU_FOREACH(cpu) { | ||||
|         CpuInfoFastList *info = g_malloc0(sizeof(*info)); | ||||
| @ -2183,6 +2187,12 @@ CpuInfoFastList *qmp_query_cpus_fast(Error **errp) | ||||
|             info->value->props = props; | ||||
|         } | ||||
| 
 | ||||
| #if defined(TARGET_S390X) | ||||
|         s390_cpu = S390_CPU(cpu); | ||||
|         env = &s390_cpu->env; | ||||
|         info->value->arch = CPU_INFO_ARCH_S390; | ||||
|         info->value->u.s390.cpu_state = env->cpu_state; | ||||
| #endif | ||||
|         if (!cur_item) { | ||||
|             head = cur_item = info; | ||||
|         } else { | ||||
|  | ||||
| @ -408,7 +408,7 @@ | ||||
| # @CpuInfoArch: | ||||
| # | ||||
| # An enumeration of cpu types that enable additional information during | ||||
| # @query-cpus. | ||||
| # @query-cpus and @query-cpus-fast. | ||||
| # | ||||
| # @s390: since 2.12 | ||||
| # | ||||
| @ -604,12 +604,24 @@ | ||||
| # @props: properties describing to which node/socket/core/thread | ||||
| #         virtual CPU belongs to, provided if supported by board | ||||
| # | ||||
| # @arch: architecture of the cpu, which determines which additional fields | ||||
| #        will be listed | ||||
| # | ||||
| # Since: 2.12 | ||||
| # | ||||
| ## | ||||
| { 'struct': 'CpuInfoFast', | ||||
|   'data': {'cpu-index': 'int', 'qom-path': 'str', | ||||
|            'thread-id': 'int', '*props': 'CpuInstanceProperties' } } | ||||
| { 'union': 'CpuInfoFast', | ||||
|   'base': {'cpu-index': 'int', 'qom-path': 'str', | ||||
|            'thread-id': 'int', '*props': 'CpuInstanceProperties', | ||||
|            'arch': 'CpuInfoArch' }, | ||||
|   'discriminator': 'arch', | ||||
|   'data': { 'x86': 'CpuInfoOther', | ||||
|             'sparc': 'CpuInfoOther', | ||||
|             'ppc': 'CpuInfoOther', | ||||
|             'mips': 'CpuInfoOther', | ||||
|             'tricore': 'CpuInfoOther', | ||||
|             's390': 'CpuInfoS390', | ||||
|             'other': 'CpuInfoOther' } } | ||||
| 
 | ||||
| ## | ||||
| # @query-cpus-fast: | ||||
| @ -620,9 +632,6 @@ | ||||
| # | ||||
| # Returns: list of @CpuInfoFast | ||||
| # | ||||
| # Notes: The CPU architecture name is not returned by query-cpus-fast. | ||||
| #        Use query-target to retrieve that information. | ||||
| # | ||||
| # Since: 2.12 | ||||
| # | ||||
| # Example: | ||||
| @ -637,6 +646,7 @@ | ||||
| #                 "socket-id": 0 | ||||
| #             }, | ||||
| #             "qom-path": "/machine/unattached/device[0]", | ||||
| #             "arch":"x86", | ||||
| #             "cpu-index": 0 | ||||
| #         }, | ||||
| #         { | ||||
| @ -647,6 +657,7 @@ | ||||
| #                 "socket-id": 1 | ||||
| #             }, | ||||
| #             "qom-path": "/machine/unattached/device[2]", | ||||
| #             "arch":"x86", | ||||
| #             "cpu-index": 1 | ||||
| #         } | ||||
| #     ] | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Viktor Mihajlovski
						Viktor Mihajlovski