]> rtime.felk.cvut.cz Git - jailhouse.git/commitdiff
core: Remove cpu_data parameter from panic_stop/halt functions
authorJan Kiszka <jan.kiszka@siemens.com>
Fri, 22 Aug 2014 05:24:03 +0000 (07:24 +0200)
committerJan Kiszka <jan.kiszka@siemens.com>
Thu, 28 Aug 2014 06:36:10 +0000 (08:36 +0200)
In many cases, we had no chance to pass a proper cpu_data to these
functions anyway. These days we have this_*() and can make use of it
also for panic stopping/halting.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
hypervisor/arch/arm/setup.c
hypervisor/arch/x86/control.c
hypervisor/arch/x86/ioapic.c
hypervisor/arch/x86/vmx.c
hypervisor/control.c
hypervisor/include/jailhouse/control.h
hypervisor/pci.c

index 7dfe5078b19dfb3ec23ea9cf69ecc1ebf29a951e..e0fc7322710ef7fb54f89911ae74fcccb618bd57 100644 (file)
@@ -71,5 +71,5 @@ void arch_paging_init(void) { }
 
 const struct paging arm_paging[1];
 
-void arch_panic_stop(struct per_cpu *cpu_data) {__builtin_unreachable();}
-void arch_panic_halt(struct per_cpu *cpu_data) {}
+void arch_panic_stop(void) {__builtin_unreachable();}
+void arch_panic_halt(void) {}
index 1f6e683d787ece011a82fb1951e3e5dfbadf1c2c..92f7e6885d19f59612fee3cbcb41343d92c6ddfa 100644 (file)
@@ -280,17 +280,19 @@ void x86_exception_handler(struct exception_frame *frame)
        panic_printk("RIP: %p RSP: %p FLAGS: %x\n", frame->rip, frame->rsp,
                     frame->flags);
 
-       panic_stop(NULL);
+       panic_stop();
 }
 
-void arch_panic_stop(struct per_cpu *cpu_data)
+void arch_panic_stop(void)
 {
        asm volatile("1: hlt; jmp 1b");
        __builtin_unreachable();
 }
 
-void arch_panic_halt(struct per_cpu *cpu_data)
+void arch_panic_halt(void)
 {
+       struct per_cpu *cpu_data = this_cpu_data();
+
        spin_lock(&cpu_data->control_lock);
        x86_enter_wait_for_sipi(cpu_data);
        spin_unlock(&cpu_data->control_lock);
index 426b7b05b6d08264c3c46b3f36da177a8dbcaf6a..10a44c665694f746b1e801053654be99d4af6657 100644 (file)
@@ -280,7 +280,7 @@ void ioapic_config_commit(struct cell *cell_added_removed)
                                            entry.raw[0]) < 0) {
                        panic_printk("FATAL: Unsupported IOAPIC state, "
                                     "pin %d\n", pin);
-                       panic_stop(NULL);
+                       panic_stop();
                }
        }
 }
index 434a95c652c848f733b6c5229345b789fef2d9e3..24ec4d2e586bbdd9b276752cf9a0129f409a318c 100644 (file)
@@ -396,7 +396,7 @@ void vmx_invept(void)
        if (!ok) {
                panic_printk("FATAL: invept failed, error %d\n",
                             vmcs_read32(VM_INSTRUCTION_ERROR));
-               panic_stop(NULL);
+               panic_stop();
        }
 }
 
@@ -675,7 +675,7 @@ void vmx_cpu_activate_vmm(struct per_cpu *cpu_data)
 
        panic_printk("FATAL: vmlaunch failed, error %d\n",
                     vmcs_read32(VM_INSTRUCTION_ERROR));
-       panic_stop(cpu_data);
+       panic_stop();
 }
 
 static void __attribute__((noreturn))
@@ -823,7 +823,7 @@ static void vmx_cpu_reset(struct per_cpu *cpu_data, unsigned int sipi_vector)
 
        if (!ok) {
                panic_printk("FATAL: CPU reset failed\n");
-               panic_stop(cpu_data);
+               panic_stop();
        }
 }
 
@@ -1196,12 +1196,12 @@ void vmx_handle_exit(struct registers *guest_regs, struct per_cpu *cpu_data)
                break;
        }
        dump_guest_regs(guest_regs);
-       panic_halt(cpu_data);
+       panic_halt();
 }
 
 void vmx_entry_failure(struct per_cpu *cpu_data)
 {
        panic_printk("FATAL: vmresume failed, error %d\n",
                     vmcs_read32(VM_INSTRUCTION_ERROR));
-       panic_stop(cpu_data);
+       panic_stop();
 }
index c97cb11ce5403c52e1703f705c1b0e294bef25b9..3fe1a586d1d6d2c4b744eec66a54a6f5600aef13 100644 (file)
@@ -746,30 +746,26 @@ long hypercall(struct per_cpu *cpu_data, unsigned long code,
        }
 }
 
-void panic_stop(struct per_cpu *cpu_data)
+void panic_stop(void)
 {
-       panic_printk("Stopping CPU");
-       if (cpu_data) {
-               panic_printk(" %d", cpu_data->cpu_id);
-               cpu_data->cpu_stopped = true;
-       }
-       panic_printk("\n");
+       panic_printk("Stopping CPU %d\n", this_cpu_id());
+       this_cpu_data()->cpu_stopped = true;
 
        if (phys_processor_id() == panic_cpu)
                panic_in_progress = 0;
 
-       arch_panic_stop(cpu_data);
+       arch_panic_stop();
 }
 
-void panic_halt(struct per_cpu *cpu_data)
+void panic_halt(void)
 {
-       struct cell *cell = cpu_data->cell;
+       struct cell *cell = this_cell();
        bool cell_failed = true;
        unsigned int cpu;
 
-       panic_printk("Parking CPU %d\n", cpu_data->cpu_id);
+       panic_printk("Parking CPU %d\n", this_cpu_id());
 
-       cpu_data->failed = true;
+       this_cpu_data()->failed = true;
        for_each_cpu(cpu, cell->cpu_set)
                if (!per_cpu(cpu)->failed) {
                        cell_failed = false;
@@ -778,7 +774,7 @@ void panic_halt(struct per_cpu *cpu_data)
        if (cell_failed)
                cell->comm_page.comm_region.cell_state = JAILHOUSE_CELL_FAILED;
 
-       arch_panic_halt(cpu_data);
+       arch_panic_halt();
 
        if (phys_processor_id() == panic_cpu)
                panic_in_progress = 0;
index b4e50b6d597d62b5f9f3b821a26e4b180ef98373..bda3e95ddf624b8b1fbaa73a3ec518a2c5d1c7db 100644 (file)
@@ -48,8 +48,8 @@ int cell_init(struct cell *cell);
 long hypercall(struct per_cpu *cpu_data, unsigned long code,
               unsigned long arg1, unsigned long arg2);
 
-void __attribute__((noreturn)) panic_stop(struct per_cpu *cpu_data);
-void panic_halt(struct per_cpu *cpu_data);
+void __attribute__((noreturn)) panic_stop(void);
+void panic_halt(void);
 
 void arch_suspend_cpu(unsigned int cpu_id);
 void arch_resume_cpu(unsigned int cpu_id);
@@ -70,5 +70,5 @@ void arch_config_commit(struct per_cpu *cpu_data,
 
 void arch_shutdown(void);
 
-void __attribute__((noreturn)) arch_panic_stop(struct per_cpu *cpu_data);
-void arch_panic_halt(struct per_cpu *cpu_data);
+void __attribute__((noreturn)) arch_panic_stop(void);
+void arch_panic_halt(void);
index 85924c2671f3967d66e58be56f82d82f3529276f..b7b458b04c450d314530ae4f2bb73fed86f1e24e 100644 (file)
@@ -692,7 +692,7 @@ void pci_config_commit(struct cell *cell_added_removed)
 error:
        panic_printk("FATAL: Unsupported MSI/MSI-X state, device %02x:%02x.%x,"
                     " cap %d\n", PCI_BDF_PARAMS(device->info->bdf), cap->id);
-       panic_stop(NULL);
+       panic_stop();
 }
 
 void pci_shutdown(void)