FILE
reset.c
File preview with syntax highlighting.
linux-6.19.14/arch/loongarch/kernel/reset.c
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited 4 */ 5#include <linux/kernel.h> 6#include <linux/acpi.h> 7#include <linux/efi.h> 8#include <linux/export.h> 9#include <linux/pm.h> 10#include <linux/types.h> 11#include <linux/reboot.h> 12#include <linux/delay.h> 13#include <linux/console.h> 14 15#include <acpi/reboot.h> 16#include <asm/idle.h> 17#include <asm/loongarch.h> 18#include <asm/loongson.h> 19 20void (*pm_power_off)(void); 21EXPORT_SYMBOL(pm_power_off); 22 23void machine_halt(void) 24{ 25#ifdef CONFIG_SMP 26 preempt_disable(); 27 smp_send_stop(); 28#endif 29 local_irq_disable(); 30 clear_csr_ecfg(ECFG0_IM); 31 32 pr_notice("\n\n** You can safely turn off the power now **\n\n"); 33 console_flush_on_panic(CONSOLE_FLUSH_PENDING); 34 35 while (true) { 36 __asm__ __volatile__("idle 0" : : : "memory"); 37 } 38} 39 40void machine_power_off(void) 41{ 42#ifdef CONFIG_SMP 43 preempt_disable(); 44 smp_send_stop(); 45#endif 46#ifdef CONFIG_PM 47 if (!acpi_disabled) 48 enable_pci_wakeup(); 49#endif 50 do_kernel_power_off(); 51#ifdef CONFIG_EFI 52 efi.reset_system(EFI_RESET_SHUTDOWN, EFI_SUCCESS, 0, NULL); 53#endif 54 55 while (true) { 56 __asm__ __volatile__("idle 0" : : : "memory"); 57 } 58} 59 60void machine_restart(char *command) 61{ 62#ifdef CONFIG_SMP 63 preempt_disable(); 64 smp_send_stop(); 65#endif 66 do_kernel_restart(command); 67#ifdef CONFIG_EFI 68 if (efi_capsule_pending(NULL)) 69 efi_reboot(REBOOT_WARM, NULL); 70 else 71 efi_reboot(REBOOT_COLD, NULL); 72#endif 73 if (!acpi_disabled) 74 acpi_reboot(); 75 76 while (true) { 77 __asm__ __volatile__("idle 0" : : : "memory"); 78 } 79}
~/
Read-only file preview.