mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend
@ 2006-11-13  9:43 Myaskouvskey, Artiom
  2006-11-13  9:51 ` Arjan van de Ven
  2006-12-11  4:20 ` Randy Dunlap
  0 siblings, 2 replies; 4+ messages in thread
From: Myaskouvskey, Artiom @ 2006-11-13  9:43 UTC (permalink / raw)
  To: davej, hpa; +Cc: linux-kernel, Satt, Shai

From: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>

Function efi_get_time called not only during init kernel phase but also
during suspend (from get_cmos_time). 
When it is called from get_cmos_time the corresponding runtime service
should be called in virtual and not in physical mode.

Signed-off-by: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>
---

diff -uprN linux-2.6.19-rc5-git2.orig/include/linux/efi.h
linux-2.6.19-rc5-git2/include/linux/efi.h
--- linux-2.6.19-rc5-git2.orig/include/linux/efi.h	2006-11-13
11:15:19.000000000 +0200
+++ linux-2.6.19-rc5-git2/include/linux/efi.h	2006-11-13
11:15:38.000000000 +0200
@@ -300,7 +300,7 @@ extern int efi_mem_attribute_range (unsi
 extern int __init efi_uart_console_only (void);
 extern void efi_initialize_iomem_resources(struct resource
*code_resource,
 					struct resource *data_resource);
-extern unsigned long __init efi_get_time(void);
+extern unsigned long efi_get_time(void);
 extern int __init efi_set_rtc_mmss(unsigned long nowtime);
 extern struct efi_memory_map memmap;
 
diff -uprN linux-2.6.19-rc5-git2.orig/arch/i386/kernel/efi.c
linux-2.6.19-rc5-git2/arch/i386/kernel/efi.c
--- linux-2.6.19-rc5-git2.orig/arch/i386/kernel/efi.c	2006-11-13
11:15:17.000000000 +0200
+++ linux-2.6.19-rc5-git2/arch/i386/kernel/efi.c	2006-11-13
11:15:38.000000000 +0200
@@ -194,17 +194,25 @@ inline int efi_set_rtc_mmss(unsigned lon
 	return 0;
 }
 /*
- * This should only be used during kernel init and before runtime
- * services have been remapped, therefore, we'll need to call in
physical
- * mode.  Note, this call isn't used later, so mark it __init.
+ * This is used during kernel init before runtime
+ * services have been remapped and also during suspend, therefore, 
+ * we'll need to call both in physical and virtual modes. 
  */
-inline unsigned long __init efi_get_time(void)
+inline unsigned long efi_get_time(void)
 {
 	efi_status_t status;
 	efi_time_t eft;
 	efi_time_cap_t cap;
 
-	status = phys_efi_get_time(&eft, &cap);
+	if (efi.get_time) {
+		/* if we are in virtual mode use remapped function */ 
+ 		status = efi.get_time(&eft, &cap);
+        }
+        else {
+	    /* we are in physical mode */
+            status = phys_efi_get_time(&eft, &cap);
+        }
+
 	if (status != EFI_SUCCESS)
 		printk("Oops: efitime: can't read time status:
0x%lx\n",status);
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend
  2006-11-13  9:43 [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend Myaskouvskey, Artiom
@ 2006-11-13  9:51 ` Arjan van de Ven
  2006-12-11  4:20 ` Randy Dunlap
  1 sibling, 0 replies; 4+ messages in thread
From: Arjan van de Ven @ 2006-11-13  9:51 UTC (permalink / raw)
  To: Myaskouvskey, Artiom; +Cc: davej, hpa, linux-kernel, Satt, Shai

On Mon, 2006-11-13 at 11:43 +0200, Myaskouvskey, Artiom wrote:
> From: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>

Hi,

> - * This should only be used during kernel init and before runtime
> - * services have been remapped, therefore, we'll need to call in
> physical
> - * mode.  Note, this call isn't used later, so mark it __init.


unfortunately your patch is word wrapped; please try using an email
program that does not wrap emails (or worst case, try using attachments
instead, but those are horrible in terms of patch review)

Greetings,
   Arjan van de Ven

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend
  2006-11-13  9:43 [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend Myaskouvskey, Artiom
  2006-11-13  9:51 ` Arjan van de Ven
@ 2006-12-11  4:20 ` Randy Dunlap
  1 sibling, 0 replies; 4+ messages in thread
From: Randy Dunlap @ 2006-12-11  4:20 UTC (permalink / raw)
  To: Myaskouvskey, Artiom; +Cc: davej, hpa, linux-kernel, Satt, Shai

On Mon, 13 Nov 2006 11:43:45 +0200 Myaskouvskey, Artiom wrote:

> From: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>
> 
> Function efi_get_time called not only during init kernel phase but also
> during suspend (from get_cmos_time). 
> When it is called from get_cmos_time the corresponding runtime service
> should be called in virtual and not in physical mode.
> 
> Signed-off-by: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>
> ---
> 
> diff -uprN linux-2.6.19-rc5-git2.orig/include/linux/efi.h
> linux-2.6.19-rc5-git2/include/linux/efi.h
> --- linux-2.6.19-rc5-git2.orig/include/linux/efi.h	2006-11-13
> 11:15:19.000000000 +0200
> +++ linux-2.6.19-rc5-git2/include/linux/efi.h	2006-11-13
> 11:15:38.000000000 +0200
> @@ -300,7 +300,7 @@ extern int efi_mem_attribute_range (unsi
>  extern int __init efi_uart_console_only (void);
>  extern void efi_initialize_iomem_resources(struct resource
> *code_resource,
>  					struct resource *data_resource);
> -extern unsigned long __init efi_get_time(void);
> +extern unsigned long efi_get_time(void);
>  extern int __init efi_set_rtc_mmss(unsigned long nowtime);

Hi--

Shouldn't the /__init/ on efi_set_rtc_mmss() also be dropped?

>  extern struct efi_memory_map memmap;
>  
> diff -uprN linux-2.6.19-rc5-git2.orig/arch/i386/kernel/efi.c
> linux-2.6.19-rc5-git2/arch/i386/kernel/efi.c
> --- linux-2.6.19-rc5-git2.orig/arch/i386/kernel/efi.c	2006-11-13
> 11:15:17.000000000 +0200
> +++ linux-2.6.19-rc5-git2/arch/i386/kernel/efi.c	2006-11-13
> 11:15:38.000000000 +0200
> @@ -194,17 +194,25 @@ inline int efi_set_rtc_mmss(unsigned lon
>  	return 0;
>  }
>  /*
> - * This should only be used during kernel init and before runtime
> - * services have been remapped, therefore, we'll need to call in
> physical
> - * mode.  Note, this call isn't used later, so mark it __init.
> + * This is used during kernel init before runtime
> + * services have been remapped and also during suspend, therefore, 
> + * we'll need to call both in physical and virtual modes. 
>   */
> -inline unsigned long __init efi_get_time(void)
> +inline unsigned long efi_get_time(void)
>  {
>  	efi_status_t status;
>  	efi_time_t eft;
>  	efi_time_cap_t cap;
>  
> -	status = phys_efi_get_time(&eft, &cap);
> +	if (efi.get_time) {
> +		/* if we are in virtual mode use remapped function */ 
> + 		status = efi.get_time(&eft, &cap);
> +        }
> +        else {
> +	    /* we are in physical mode */
> +            status = phys_efi_get_time(&eft, &cap);
> +        }
> +
>  	if (status != EFI_SUCCESS)
>  		printk("Oops: efitime: can't read time status:
> 0x%lx\n",status);

---
~Randy

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend
@ 2006-11-13 11:07 Myaskouvskey, Artiom
  0 siblings, 0 replies; 4+ messages in thread
From: Myaskouvskey, Artiom @ 2006-11-13 11:07 UTC (permalink / raw)
  To: davej@codemonkey.org.uk, hpa@zytor.com
  Cc: linux-kernel@vger.kernel.org, Satt, Shai

From: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>

Function efi_get_time called not only during init kernel phase but also during suspend (from get_cmos_time). 
When it is called from get_cmos_time the corresponding runtime service should be called in virtual and not in physical mode.

Signed-off-by: Artiom Myaskouvskey <artiom.myaskouvskey@intel.com>
---

diff -uprN linux-2.6.19-rc5-git2.orig/include/linux/efi.h linux-2.6.19-rc5-git2/include/linux/efi.h
--- linux-2.6.19-rc5-git2.orig/include/linux/efi.h	2006-11-13 11:15:19.000000000 +0200
+++ linux-2.6.19-rc5-git2/include/linux/efi.h	2006-11-13 11:15:38.000000000 +0200
@@ -300,7 +300,7 @@ extern int efi_mem_attribute_range (unsi
 extern int __init efi_uart_console_only (void);
 extern void efi_initialize_iomem_resources(struct resource *code_resource,
 					struct resource *data_resource);
-extern unsigned long __init efi_get_time(void);
+extern unsigned long efi_get_time(void);
 extern int __init efi_set_rtc_mmss(unsigned long nowtime);
 extern struct efi_memory_map memmap;
 
diff -uprN linux-2.6.19-rc5-git2.orig/arch/i386/kernel/efi.c linux-2.6.19-rc5-git2/arch/i386/kernel/efi.c
--- linux-2.6.19-rc5-git2.orig/arch/i386/kernel/efi.c	2006-11-13 11:15:17.000000000 +0200
+++ linux-2.6.19-rc5-git2/arch/i386/kernel/efi.c	2006-11-13 11:15:38.000000000 +0200
@@ -194,17 +194,25 @@ inline int efi_set_rtc_mmss(unsigned lon
 	return 0;
 }
 /*
- * This should only be used during kernel init and before runtime
- * services have been remapped, therefore, we'll need to call in physical
- * mode.  Note, this call isn't used later, so mark it __init.
+ * This is used during kernel init before runtime
+ * services have been remapped and also during suspend, therefore, 
+ * we'll need to call both in physical and virtual modes. 
  */
-inline unsigned long __init efi_get_time(void)
+inline unsigned long efi_get_time(void)
 {
 	efi_status_t status;
 	efi_time_t eft;
 	efi_time_cap_t cap;
 
-	status = phys_efi_get_time(&eft, &cap);
+	if (efi.get_time) {
+		/* if we are in virtual mode use remapped function */ 
+ 		status = efi.get_time(&eft, &cap);
+        }
+        else {
+	    /* we are in physical mode */
+            status = phys_efi_get_time(&eft, &cap);
+        }
+
 	if (status != EFI_SUCCESS)
 		printk("Oops: efitime: can't read time status: 0x%lx\n",status);
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-12-11  4:19 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-13  9:43 [PATCH 2.6.19-rc5-git2] EFI: calling efi_get_time during suspend Myaskouvskey, Artiom
2006-11-13  9:51 ` Arjan van de Ven
2006-12-11  4:20 ` Randy Dunlap
2006-11-13 11:07 Myaskouvskey, Artiom

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®