[PATCH 1/5] QEMU Add cpu_phyid_to_cpu() to map cpu phyid to CPUState

From: Liu Ping Fan
Date: Sat Nov 26 2011 - 21:45:51 EST


From: Liu Ping Fan <pingfank@xxxxxxxxxxxxxxxxxx>

The guest has different cpu logic id from qemu, but they have the
same phyid. When cpu phyid is told by guest, we need to obtain
the corresponding CPUState.

Signed-off-by: Liu Ping Fan <pingfank@xxxxxxxxxxxxxxxxxx>
---
target-i386/cpu.h | 2 ++
target-i386/helper.c | 12 ++++++++++++
2 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/target-i386/cpu.h b/target-i386/cpu.h
index abdeb40..251e63b 100644
--- a/target-i386/cpu.h
+++ b/target-i386/cpu.h
@@ -767,6 +767,7 @@ typedef struct CPUX86State {
} CPUX86State;

CPUX86State *cpu_x86_init(const char *cpu_model);
+CPUX86State *x86_phyid_to_cpu(int phy_id);
int cpu_x86_exec(CPUX86State *s);
void cpu_x86_close(CPUX86State *s);
void x86_cpu_list (FILE *f, fprintf_function cpu_fprintf, const char *optarg);
@@ -1063,4 +1064,5 @@ void svm_check_intercept(CPUState *env1, uint32_t type);

uint32_t cpu_cc_compute_all(CPUState *env1, int op);

+#define cpu_phyid_to_cpu x86_phyid_to_cpu
#endif /* CPU_I386_H */
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 5df40d4..e35a75e 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1263,6 +1263,18 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
return env;
}

+CPUX86State *x86_phyid_to_cpu(int phy_id)
+{
+ CPUX86State *env = first_cpu;
+ while (env) {
+ if (env->cpuid_apic_id == phy_id) {
+ break;
+ }
+ env = env->next_cpu;
+ }
+ return env;
+}
+
#if !defined(CONFIG_USER_ONLY)
void do_cpu_init(CPUState *env)
{
--
1.7.4.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/