summaryrefslogtreecommitdiffstats
path: root/revert-efi-rtclock.patch
diff options
context:
space:
mode:
authorDave Jones <davej@redhat.com>2011-08-30 11:49:37 -0400
committerDave Jones <davej@redhat.com>2011-08-30 11:49:37 -0400
commit92c3aba6f2d2a3296a90f5b2ded2d1cdc786961c (patch)
tree46853b7497cddf607b25c3dc4c3a4810bdf03ee3 /revert-efi-rtclock.patch
parent2af2b0f5ca57a21d14f97505c5f71e8311e57321 (diff)
downloadkernel-92c3aba6f2d2a3296a90f5b2ded2d1cdc786961c.tar.gz
kernel-92c3aba6f2d2a3296a90f5b2ded2d1cdc786961c.tar.xz
kernel-92c3aba6f2d2a3296a90f5b2ded2d1cdc786961c.zip
Revert "x86: Serialize EFI time accesses on rtc_lock" (rhbz 732755)
Diffstat (limited to 'revert-efi-rtclock.patch')
-rw-r--r--revert-efi-rtclock.patch76
1 files changed, 76 insertions, 0 deletions
diff --git a/revert-efi-rtclock.patch b/revert-efi-rtclock.patch
new file mode 100644
index 000000000..87ecaa11a
--- /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;
+ }
+