[kernel/f16] Revert "x86: Serialize EFI time accesses on rtc_lock" (rhbz 732755)

Dave Jones davej at fedoraproject.org
Tue Aug 30 15:51:43 UTC 2011


commit 787b0f02c4187f3eb4150a856e9e4318a824381c
Author: Dave Jones <davej at redhat.com>
Date:   Tue Aug 30 11:44:45 2011 -0400

    Revert "x86: Serialize EFI time accesses on rtc_lock" (rhbz 732755)

 kernel.spec              |    5 +++
 revert-efi-rtclock.patch |   76 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 81 insertions(+), 0 deletions(-)
---
diff --git a/kernel.spec b/kernel.spec
index 492d39f..176fb0f 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -718,6 +718,7 @@ Patch12029: crypto-register-cryptd-first.patch
 
 Patch12303: dmar-disable-when-ricoh-multifunction.patch
 
+Patch13002: revert-efi-rtclock.patch
 Patch13003: efi-dont-map-boot-services-on-32bit.patch
 Patch13004: iwlagn-revert-max-aggregate-size.patch
 
@@ -1329,6 +1330,7 @@ ApplyPatch crypto-register-cryptd-first.patch
 # rhbz#605888
 ApplyPatch dmar-disable-when-ricoh-multifunction.patch
 
+ApplyPatch revert-efi-rtclock.patch
 ApplyPatch efi-dont-map-boot-services-on-32bit.patch
 ApplyPatch iwlagn-revert-max-aggregate-size.patch
 
@@ -2034,6 +2036,9 @@ fi
 # and build.
 
 %changelog
+* Tue Aug 30 2011 Dave Jones <davej at redhat.com>
+- Revert "x86: Serialize EFI time accesses on rtc_lock" (rhbz 732755)
+
 * Tue Aug 30 2011 Josh Boyer <jwboyer at redhat.com>
 - Add patch to fix rhbz 606017
 
diff --git a/revert-efi-rtclock.patch b/revert-efi-rtclock.patch
new file mode 100644
index 0000000..87ecaa1
--- /dev/null
+++ b/revert-efi-rtclock.patch
@@ -0,0 +1,76 @@
+diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
+index 3ae4128..e17c6d2 100644
+--- a/arch/x86/platform/efi/efi.c
++++ b/arch/x86/platform/efi/efi.c
+@@ -89,50 +89,26 @@ early_param("add_efi_memmap", setup_add_efi_memmap);
+ 
+ static efi_status_t virt_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc)
+ {
+-	unsigned long flags;
+-	efi_status_t status;
+-
+-	spin_lock_irqsave(&rtc_lock, flags);
+-	status = efi_call_virt2(get_time, tm, tc);
+-	spin_unlock_irqrestore(&rtc_lock, flags);
+-	return status;
++	return efi_call_virt2(get_time, tm, tc);
+ }
+ 
+ static efi_status_t virt_efi_set_time(efi_time_t *tm)
+ {
+-	unsigned long flags;
+-	efi_status_t status;
+-
+-	spin_lock_irqsave(&rtc_lock, flags);
+-	status = efi_call_virt1(set_time, tm);
+-	spin_unlock_irqrestore(&rtc_lock, flags);
+-	return status;
++	return efi_call_virt1(set_time, tm);
+ }
+ 
+ static efi_status_t virt_efi_get_wakeup_time(efi_bool_t *enabled,
+ 					     efi_bool_t *pending,
+ 					     efi_time_t *tm)
+ {
+-	unsigned long flags;
+-	efi_status_t status;
+-
+-	spin_lock_irqsave(&rtc_lock, flags);
+-	status = efi_call_virt3(get_wakeup_time,
+-				enabled, pending, tm);
+-	spin_unlock_irqrestore(&rtc_lock, flags);
+-	return status;
++	return efi_call_virt3(get_wakeup_time,
++			      enabled, pending, tm);
+ }
+ 
+ static efi_status_t virt_efi_set_wakeup_time(efi_bool_t enabled, efi_time_t *tm)
+ {
+-	unsigned long flags;
+-	efi_status_t status;
+-
+-	spin_lock_irqsave(&rtc_lock, flags);
+-	status = efi_call_virt2(set_wakeup_time,
+-				enabled, tm);
+-	spin_unlock_irqrestore(&rtc_lock, flags);
+-	return status;
++	return efi_call_virt2(set_wakeup_time,
++			      enabled, tm);
+ }
+ 
+ static efi_status_t virt_efi_get_variable(efi_char16_t *name,
+@@ -232,14 +208,11 @@ static efi_status_t __init phys_efi_set_virtual_address_map(
+ static efi_status_t __init phys_efi_get_time(efi_time_t *tm,
+ 					     efi_time_cap_t *tc)
+ {
+-	unsigned long flags;
+ 	efi_status_t status;
+ 
+-	spin_lock_irqsave(&rtc_lock, flags);
+ 	efi_call_phys_prelog();
+ 	status = efi_call_phys2(efi_phys.get_time, tm, tc);
+ 	efi_call_phys_epilog();
+-	spin_unlock_irqrestore(&rtc_lock, flags);
+ 	return status;
+ }
+ 


More information about the scm-commits mailing list