[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v3 3/4] target-i386: Migrate to new nmi() CPU callba
From: |
Alexey Kardashevskiy |
Subject: |
[Qemu-devel] [PATCH v3 3/4] target-i386: Migrate to new nmi() CPU callback |
Date: |
Wed, 4 Jun 2014 18:08:49 +1000 |
This defines a nmi() callback for i386 CPU class.
This removes #ifdef I386 branch in qmp_inject_nmi so new i386's nmi()
callback is going to be used for NMI.
This changes code to inject NMI on the current CPU instead of injecting
it on every CPU. However that does not seem to be an issue.
Since kvm_apic_external_nmi() takes care of preforming operations in
the specific CPU thread so no extra measure is required here.
Signed-off-by: Alexey Kardashevskiy <address@hidden>
---
Changes:
v3:
* now contains both old code removal and new code insertion, easier to
track changes
* fixed compile for linux-user
---
cpus.c | 14 --------------
target-i386/cpu.c | 16 ++++++++++++++++
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/cpus.c b/cpus.c
index 83223d3..c0c8ac9 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1468,19 +1468,6 @@ exit:
void qmp_inject_nmi(Error **errp)
{
-#if defined(TARGET_I386)
- CPUState *cs;
-
- CPU_FOREACH(cs) {
- X86CPU *cpu = X86_CPU(cs);
-
- if (!cpu->apic_state) {
- cpu_interrupt(cs, CPU_INTERRUPT_NMI);
- } else {
- apic_deliver_nmi(cpu->apic_state);
- }
- }
-#else
CPUState *cs = qemu_get_cpu(monitor_get_cpu_index());
CPUClass *cc = CPU_GET_CLASS(cs);
int ret = -1;
@@ -1491,5 +1478,4 @@ void qmp_inject_nmi(Error **errp)
if (ret) {
error_set(errp, QERR_UNSUPPORTED);
}
-#endif
}
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 042a48d..af250a4 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -2500,6 +2500,21 @@ static void x86_cpu_reset(CPUState *s)
#endif
}
+static int x86_cpu_nmi(CPUState *cs)
+{
+ X86CPU *cpu = X86_CPU(cs);
+
+ if (!cpu->apic_state) {
+ cpu_interrupt(cs, CPU_INTERRUPT_NMI);
+#ifndef CONFIG_USER_ONLY
+ } else {
+ apic_deliver_nmi(cpu->apic_state);
+#endif
+ }
+
+ return 0;
+}
+
#ifndef CONFIG_USER_ONLY
bool cpu_is_bsp(X86CPU *cpu)
{
@@ -2808,6 +2823,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc,
void *data)
xcc->parent_reset = cc->reset;
cc->reset = x86_cpu_reset;
+ cc->nmi = x86_cpu_nmi;
cc->reset_dump_flags = CPU_DUMP_FPU | CPU_DUMP_CCOP;
cc->class_by_name = x86_cpu_class_by_name;
--
2.0.0
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, (continued)
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Alexey Kardashevskiy, 2014/06/11
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Paolo Bonzini, 2014/06/11
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Cornelia Huck, 2014/06/11
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Cornelia Huck, 2014/06/11
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Eric Blake, 2014/06/10
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Alexey Kardashevskiy, 2014/06/10
- Re: [Qemu-devel] [PATCH v3 1/4] cpus: Define NMI callback, Luiz Capitulino, 2014/06/11
[Qemu-devel] [PATCH v3 3/4] target-i386: Migrate to new nmi() CPU callback,
Alexey Kardashevskiy <=
[Qemu-devel] [PATCH v3 2/4] target-s390x: Migrate to new nmi() CPU callback, Alexey Kardashevskiy, 2014/06/04
Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Paolo Bonzini, 2014/06/04
Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Peter Maydell, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Alexey Kardashevskiy, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Peter Maydell, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Alexander Graf, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Alexey Kardashevskiy, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Paolo Bonzini, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Peter Maydell, 2014/06/04
- Re: [Qemu-devel] [PATCH v3 0/4] cpus: Add generic NMI support, Alexander Graf, 2014/06/04