diff mbox

[U-Boot,5/5] efi_loader: Add generic PSCI RTS

Message ID 1471374529-61610-6-git-send-email-agraf@suse.de
State Accepted
Commit b6575f34e20ddc40baa391c2db0e1e015e942af2
Delegated to: Alexander Graf
Headers show

Commit Message

Alexander Graf Aug. 16, 2016, 7:08 p.m. UTC
Now that we have generic PSCI reset and shutdown support in place, we can
advertise those as EFI Run Time Services, allowing efi applications and
OSs to reset and shut down systems.

Signed-off-by: Alexander Graf <agraf@suse.de>
---
 arch/arm/cpu/armv8/fwcall.c | 31 ++++++++++++++++++++++++++-----
 1 file changed, 26 insertions(+), 5 deletions(-)

Comments

Simon Glass Aug. 18, 2016, 3:44 a.m. UTC | #1
On 16 August 2016 at 13:08, Alexander Graf <agraf@suse.de> wrote:
> Now that we have generic PSCI reset and shutdown support in place, we can
> advertise those as EFI Run Time Services, allowing efi applications and
> OSs to reset and shut down systems.
>
> Signed-off-by: Alexander Graf <agraf@suse.de>
> ---
>  arch/arm/cpu/armv8/fwcall.c | 31 ++++++++++++++++++++++++++-----
>  1 file changed, 26 insertions(+), 5 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

(assuming you are going to do a patch to rename EFI_RUNTIME_TEXT)
Alexander Graf Aug. 18, 2016, 4:01 a.m. UTC | #2
> Am 18.08.2016 um 05:44 schrieb Simon Glass <sjg@chromium.org>:
> 
>> On 16 August 2016 at 13:08, Alexander Graf <agraf@suse.de> wrote:
>> Now that we have generic PSCI reset and shutdown support in place, we can
>> advertise those as EFI Run Time Services, allowing efi applications and
>> OSs to reset and shut down systems.
>> 
>> Signed-off-by: Alexander Graf <agraf@suse.de>
>> ---
>> arch/arm/cpu/armv8/fwcall.c | 31 ++++++++++++++++++++++++++-----
>> 1 file changed, 26 insertions(+), 5 deletions(-)
> 
> Reviewed-by: Simon Glass <sjg@chromium.org>
> 
> (assuming you are going to do a patch to rename EFI_RUNTIME_TEXT)

Yes, but with the number of patches in flight that use the macro, I don't want to hold up functional improvements for cosmetics just yet. Once this is merged I'll rename.

Alex
Simon Glass Aug. 18, 2016, 5:58 p.m. UTC | #3
Hi Alex,

On 17 August 2016 at 22:01, Alexander Graf <agraf@suse.de> wrote:
>
>
>> Am 18.08.2016 um 05:44 schrieb Simon Glass <sjg@chromium.org>:
>>
>>> On 16 August 2016 at 13:08, Alexander Graf <agraf@suse.de> wrote:
>>> Now that we have generic PSCI reset and shutdown support in place, we can
>>> advertise those as EFI Run Time Services, allowing efi applications and
>>> OSs to reset and shut down systems.
>>>
>>> Signed-off-by: Alexander Graf <agraf@suse.de>
>>> ---
>>> arch/arm/cpu/armv8/fwcall.c | 31 ++++++++++++++++++++++++++-----
>>> 1 file changed, 26 insertions(+), 5 deletions(-)
>>
>> Reviewed-by: Simon Glass <sjg@chromium.org>
>>
>> (assuming you are going to do a patch to rename EFI_RUNTIME_TEXT)
>
> Yes, but with the number of patches in flight that use the macro, I don't want to hold up functional improvements for cosmetics just yet. Once this is merged I'll rename.

OK that's what I thought.

Regards,
Simon
Alexander Graf Oct. 13, 2016, 2:35 p.m. UTC | #4
> Now that we have generic PSCI reset and shutdown support in place, we can
> advertise those as EFI Run Time Services, allowing efi applications and
> OSs to reset and shut down systems.
> 
> Signed-off-by: Alexander Graf <agraf@suse.de>
> Reviewed-by: Simon Glass <sjg@chromium.org>

Thanks, applied to
diff mbox

Patch

diff --git a/arch/arm/cpu/armv8/fwcall.c b/arch/arm/cpu/armv8/fwcall.c
index c57b15f..64539f9 100644
--- a/arch/arm/cpu/armv8/fwcall.c
+++ b/arch/arm/cpu/armv8/fwcall.c
@@ -6,6 +6,7 @@ 
 
 #include <asm-offsets.h>
 #include <config.h>
+#include <efi_loader.h>
 #include <version.h>
 #include <asm/macro.h>
 #include <asm/psci.h>
@@ -17,7 +18,7 @@ 
  * x0~x7: input arguments
  * x0~x3: output arguments
  */
-static void hvc_call(struct pt_regs *args)
+static void EFI_RUNTIME_TEXT hvc_call(struct pt_regs *args)
 {
 	asm volatile(
 		"ldr x0, %0\n"
@@ -51,7 +52,7 @@  static void hvc_call(struct pt_regs *args)
  * x0~x3: output arguments
  */
 
-void smc_call(struct pt_regs *args)
+void EFI_RUNTIME_TEXT smc_call(struct pt_regs *args)
 {
 	asm volatile(
 		"ldr x0, %0\n"
@@ -81,9 +82,9 @@  void smc_call(struct pt_regs *args)
  * use PSCI on U-Boot running below a hypervisor, please detect
  * this and set the flag accordingly.
  */
-static const bool use_smc_for_psci = true;
+static const EFI_RUNTIME_DATA bool use_smc_for_psci = true;
 
-void __noreturn psci_system_reset(void)
+void __noreturn EFI_RUNTIME_TEXT psci_system_reset(void)
 {
 	struct pt_regs regs;
 
@@ -98,7 +99,7 @@  void __noreturn psci_system_reset(void)
 		;
 }
 
-void __noreturn psci_system_off(void)
+void __noreturn EFI_RUNTIME_TEXT psci_system_off(void)
 {
 	struct pt_regs regs;
 
@@ -118,4 +119,24 @@  void reset_misc(void)
 {
 	psci_system_reset();
 }
+
+#ifdef CONFIG_EFI_LOADER
+void EFI_RUNTIME_TEXT EFIAPI efi_reset_system(
+			enum efi_reset_type reset_type,
+			efi_status_t reset_status,
+			unsigned long data_size, void *reset_data)
+{
+	switch (reset_type) {
+	case EFI_RESET_COLD:
+	case EFI_RESET_WARM:
+		psci_system_reset();
+		break;
+	case EFI_RESET_SHUTDOWN:
+		psci_system_off();
+		break;
+	}
+
+	while (1) { }
+}
+#endif /* CONFIG_EFI_LOADER */
 #endif /* CONFIG_PSCI_RESET */