aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/platform
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-08 14:31:16 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-08 14:31:16 -0400
commit3f17ea6dea8ba5668873afa54628a91aaa3fb1c0 (patch)
treeafbeb2accd4c2199ddd705ae943995b143a0af02 /arch/x86/platform
parent1860e379875dfe7271c649058aeddffe5afd9d0d (diff)
parent1a5700bc2d10cd379a795fd2bb377a190af5acd4 (diff)
Merge branch 'next' (accumulated 3.16 merge window patches) into master
Now that 3.15 is released, this merges the 'next' branch into 'master', bringing us to the normal situation where my 'master' branch is the merge window. * accumulated work in next: (6809 commits) ufs: sb mutex merge + mutex_destroy powerpc: update comments for generic idle conversion cris: update comments for generic idle conversion idle: remove cpu_idle() forward declarations nbd: zero from and len fields in NBD_CMD_DISCONNECT. mm: convert some level-less printks to pr_* MAINTAINERS: adi-buildroot-devel is moderated MAINTAINERS: add linux-api for review of API/ABI changes mm/kmemleak-test.c: use pr_fmt for logging fs/dlm/debug_fs.c: replace seq_printf by seq_puts fs/dlm/lockspace.c: convert simple_str to kstr fs/dlm/config.c: convert simple_str to kstr mm: mark remap_file_pages() syscall as deprecated mm: memcontrol: remove unnecessary memcg argument from soft limit functions mm: memcontrol: clean up memcg zoneinfo lookup mm/memblock.c: call kmemleak directly from memblock_(alloc|free) mm/mempool.c: update the kmemleak stack trace for mempool allocations lib/radix-tree.c: update the kmemleak stack trace for radix tree allocations mm: introduce kmemleak_update_trace() mm/kmemleak.c: use %u to print ->checksum ...
Diffstat (limited to 'arch/x86/platform')
-rw-r--r--arch/x86/platform/efi/efi.c48
-rw-r--r--arch/x86/platform/efi/efi_stub_64.S81
-rw-r--r--arch/x86/platform/uv/bios_uv.c2
-rw-r--r--arch/x86/platform/uv/uv_irq.c10
-rw-r--r--arch/x86/platform/uv/uv_nmi.c2
5 files changed, 31 insertions, 112 deletions
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 4d36932ca4f2..87fc96bcc13c 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -110,7 +110,7 @@ static efi_status_t virt_efi_get_time(efi_time_t *tm, efi_time_cap_t *tc)
110 efi_status_t status; 110 efi_status_t status;
111 111
112 spin_lock_irqsave(&rtc_lock, flags); 112 spin_lock_irqsave(&rtc_lock, flags);
113 status = efi_call_virt2(get_time, tm, tc); 113 status = efi_call_virt(get_time, tm, tc);
114 spin_unlock_irqrestore(&rtc_lock, flags); 114 spin_unlock_irqrestore(&rtc_lock, flags);
115 return status; 115 return status;
116} 116}
@@ -121,7 +121,7 @@ static efi_status_t virt_efi_set_time(efi_time_t *tm)
121 efi_status_t status; 121 efi_status_t status;
122 122
123 spin_lock_irqsave(&rtc_lock, flags); 123 spin_lock_irqsave(&rtc_lock, flags);
124 status = efi_call_virt1(set_time, tm); 124 status = efi_call_virt(set_time, tm);
125 spin_unlock_irqrestore(&rtc_lock, flags); 125 spin_unlock_irqrestore(&rtc_lock, flags);
126 return status; 126 return status;
127} 127}
@@ -134,8 +134,7 @@ static efi_status_t virt_efi_get_wakeup_time(efi_bool_t *enabled,
134 efi_status_t status; 134 efi_status_t status;
135 135
136 spin_lock_irqsave(&rtc_lock, flags); 136 spin_lock_irqsave(&rtc_lock, flags);
137 status = efi_call_virt3(get_wakeup_time, 137 status = efi_call_virt(get_wakeup_time, enabled, pending, tm);
138 enabled, pending, tm);
139 spin_unlock_irqrestore(&rtc_lock, flags); 138 spin_unlock_irqrestore(&rtc_lock, flags);
140 return status; 139 return status;
141} 140}
@@ -146,8 +145,7 @@ static efi_status_t virt_efi_set_wakeup_time(efi_bool_t enabled, efi_time_t *tm)
146 efi_status_t status; 145 efi_status_t status;
147 146
148 spin_lock_irqsave(&rtc_lock, flags); 147 spin_lock_irqsave(&rtc_lock, flags);
149 status = efi_call_virt2(set_wakeup_time, 148 status = efi_call_virt(set_wakeup_time, enabled, tm);
150 enabled, tm);
151 spin_unlock_irqrestore(&rtc_lock, flags); 149 spin_unlock_irqrestore(&rtc_lock, flags);
152 return status; 150 return status;
153} 151}
@@ -158,17 +156,17 @@ static efi_status_t virt_efi_get_variable(efi_char16_t *name,
158 unsigned long *data_size, 156 unsigned long *data_size,
159 void *data) 157 void *data)
160{ 158{
161 return efi_call_virt5(get_variable, 159 return efi_call_virt(get_variable,
162 name, vendor, attr, 160 name, vendor, attr,
163 data_size, data); 161 data_size, data);
164} 162}
165 163
166static efi_status_t virt_efi_get_next_variable(unsigned long *name_size, 164static efi_status_t virt_efi_get_next_variable(unsigned long *name_size,
167 efi_char16_t *name, 165 efi_char16_t *name,
168 efi_guid_t *vendor) 166 efi_guid_t *vendor)
169{ 167{
170 return efi_call_virt3(get_next_variable, 168 return efi_call_virt(get_next_variable,
171 name_size, name, vendor); 169 name_size, name, vendor);
172} 170}
173 171
174static efi_status_t virt_efi_set_variable(efi_char16_t *name, 172static efi_status_t virt_efi_set_variable(efi_char16_t *name,
@@ -177,9 +175,9 @@ static efi_status_t virt_efi_set_variable(efi_char16_t *name,
177 unsigned long data_size, 175 unsigned long data_size,
178 void *data) 176 void *data)
179{ 177{
180 return efi_call_virt5(set_variable, 178 return efi_call_virt(set_variable,
181 name, vendor, attr, 179 name, vendor, attr,
182 data_size, data); 180 data_size, data);
183} 181}
184 182
185static efi_status_t virt_efi_query_variable_info(u32 attr, 183static efi_status_t virt_efi_query_variable_info(u32 attr,
@@ -190,13 +188,13 @@ static efi_status_t virt_efi_query_variable_info(u32 attr,
190 if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION) 188 if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
191 return EFI_UNSUPPORTED; 189 return EFI_UNSUPPORTED;
192 190
193 return efi_call_virt4(query_variable_info, attr, storage_space, 191 return efi_call_virt(query_variable_info, attr, storage_space,
194 remaining_space, max_variable_size); 192 remaining_space, max_variable_size);
195} 193}
196 194
197static efi_status_t virt_efi_get_next_high_mono_count(u32 *count) 195static efi_status_t virt_efi_get_next_high_mono_count(u32 *count)
198{ 196{
199 return efi_call_virt1(get_next_high_mono_count, count); 197 return efi_call_virt(get_next_high_mono_count, count);
200} 198}
201 199
202static void virt_efi_reset_system(int reset_type, 200static void virt_efi_reset_system(int reset_type,
@@ -204,8 +202,8 @@ static void virt_efi_reset_system(int reset_type,
204 unsigned long data_size, 202 unsigned long data_size,
205 efi_char16_t *data) 203 efi_char16_t *data)
206{ 204{
207 efi_call_virt4(reset_system, reset_type, status, 205 __efi_call_virt(reset_system, reset_type, status,
208 data_size, data); 206 data_size, data);
209} 207}
210 208
211static efi_status_t virt_efi_update_capsule(efi_capsule_header_t **capsules, 209static efi_status_t virt_efi_update_capsule(efi_capsule_header_t **capsules,
@@ -215,7 +213,7 @@ static efi_status_t virt_efi_update_capsule(efi_capsule_header_t **capsules,
215 if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION) 213 if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
216 return EFI_UNSUPPORTED; 214 return EFI_UNSUPPORTED;
217 215
218 return efi_call_virt3(update_capsule, capsules, count, sg_list); 216 return efi_call_virt(update_capsule, capsules, count, sg_list);
219} 217}
220 218
221static efi_status_t virt_efi_query_capsule_caps(efi_capsule_header_t **capsules, 219static efi_status_t virt_efi_query_capsule_caps(efi_capsule_header_t **capsules,
@@ -226,8 +224,8 @@ static efi_status_t virt_efi_query_capsule_caps(efi_capsule_header_t **capsules,
226 if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION) 224 if (efi.runtime_version < EFI_2_00_SYSTEM_TABLE_REVISION)
227 return EFI_UNSUPPORTED; 225 return EFI_UNSUPPORTED;
228 226
229 return efi_call_virt4(query_capsule_caps, capsules, count, max_size, 227 return efi_call_virt(query_capsule_caps, capsules, count, max_size,
230 reset_type); 228 reset_type);
231} 229}
232 230
233static efi_status_t __init phys_efi_set_virtual_address_map( 231static efi_status_t __init phys_efi_set_virtual_address_map(
@@ -239,9 +237,9 @@ static efi_status_t __init phys_efi_set_virtual_address_map(
239 efi_status_t status; 237 efi_status_t status;
240 238
241 efi_call_phys_prelog(); 239 efi_call_phys_prelog();
242 status = efi_call_phys4(efi_phys.set_virtual_address_map, 240 status = efi_call_phys(efi_phys.set_virtual_address_map,
243 memory_map_size, descriptor_size, 241 memory_map_size, descriptor_size,
244 descriptor_version, virtual_map); 242 descriptor_version, virtual_map);
245 efi_call_phys_epilog(); 243 efi_call_phys_epilog();
246 return status; 244 return status;
247} 245}
diff --git a/arch/x86/platform/efi/efi_stub_64.S b/arch/x86/platform/efi/efi_stub_64.S
index e0984ef0374b..5fcda7272550 100644
--- a/arch/x86/platform/efi/efi_stub_64.S
+++ b/arch/x86/platform/efi/efi_stub_64.S
@@ -73,84 +73,7 @@
73 2: 73 2:
74 .endm 74 .endm
75 75
76ENTRY(efi_call0) 76ENTRY(efi_call)
77 SAVE_XMM
78 subq $32, %rsp
79 SWITCH_PGT
80 call *%rdi
81 RESTORE_PGT
82 addq $32, %rsp
83 RESTORE_XMM
84 ret
85ENDPROC(efi_call0)
86
87ENTRY(efi_call1)
88 SAVE_XMM
89 subq $32, %rsp
90 mov %rsi, %rcx
91 SWITCH_PGT
92 call *%rdi
93 RESTORE_PGT
94 addq $32, %rsp
95 RESTORE_XMM
96 ret
97ENDPROC(efi_call1)
98
99ENTRY(efi_call2)
100 SAVE_XMM
101 subq $32, %rsp
102 mov %rsi, %rcx
103 SWITCH_PGT
104 call *%rdi
105 RESTORE_PGT
106 addq $32, %rsp
107 RESTORE_XMM
108 ret
109ENDPROC(efi_call2)
110
111ENTRY(efi_call3)
112 SAVE_XMM
113 subq $32, %rsp
114 mov %rcx, %r8
115 mov %rsi, %rcx
116 SWITCH_PGT
117 call *%rdi
118 RESTORE_PGT
119 addq $32, %rsp
120 RESTORE_XMM
121 ret
122ENDPROC(efi_call3)
123
124ENTRY(efi_call4)
125 SAVE_XMM
126 subq $32, %rsp
127 mov %r8, %r9
128 mov %rcx, %r8
129 mov %rsi, %rcx
130 SWITCH_PGT
131 call *%rdi
132 RESTORE_PGT
133 addq $32, %rsp
134 RESTORE_XMM
135 ret
136ENDPROC(efi_call4)
137
138ENTRY(efi_call5)
139 SAVE_XMM
140 subq $48, %rsp
141 mov %r9, 32(%rsp)
142 mov %r8, %r9
143 mov %rcx, %r8
144 mov %rsi, %rcx
145 SWITCH_PGT
146 call *%rdi
147 RESTORE_PGT
148 addq $48, %rsp
149 RESTORE_XMM
150 ret
151ENDPROC(efi_call5)
152
153ENTRY(efi_call6)
154 SAVE_XMM 77 SAVE_XMM
155 mov (%rsp), %rax 78 mov (%rsp), %rax
156 mov 8(%rax), %rax 79 mov 8(%rax), %rax
@@ -166,7 +89,7 @@ ENTRY(efi_call6)
166 addq $48, %rsp 89 addq $48, %rsp
167 RESTORE_XMM 90 RESTORE_XMM
168 ret 91 ret
169ENDPROC(efi_call6) 92ENDPROC(efi_call)
170 93
171#ifdef CONFIG_EFI_MIXED 94#ifdef CONFIG_EFI_MIXED
172 95
diff --git a/arch/x86/platform/uv/bios_uv.c b/arch/x86/platform/uv/bios_uv.c
index 766612137a62..1584cbed0dce 100644
--- a/arch/x86/platform/uv/bios_uv.c
+++ b/arch/x86/platform/uv/bios_uv.c
@@ -39,7 +39,7 @@ s64 uv_bios_call(enum uv_bios_cmd which, u64 a1, u64 a2, u64 a3, u64 a4, u64 a5)
39 */ 39 */
40 return BIOS_STATUS_UNIMPLEMENTED; 40 return BIOS_STATUS_UNIMPLEMENTED;
41 41
42 ret = efi_call6((void *)__va(tab->function), (u64)which, 42 ret = efi_call((void *)__va(tab->function), (u64)which,
43 a1, a2, a3, a4, a5); 43 a1, a2, a3, a4, a5);
44 return ret; 44 return ret;
45} 45}
diff --git a/arch/x86/platform/uv/uv_irq.c b/arch/x86/platform/uv/uv_irq.c
index acf7752da952..b233681af4de 100644
--- a/arch/x86/platform/uv/uv_irq.c
+++ b/arch/x86/platform/uv/uv_irq.c
@@ -238,11 +238,9 @@ uv_set_irq_affinity(struct irq_data *data, const struct cpumask *mask,
238int uv_setup_irq(char *irq_name, int cpu, int mmr_blade, 238int uv_setup_irq(char *irq_name, int cpu, int mmr_blade,
239 unsigned long mmr_offset, int limit) 239 unsigned long mmr_offset, int limit)
240{ 240{
241 int irq, ret; 241 int ret, irq = irq_alloc_hwirq(uv_blade_to_memory_nid(mmr_blade));
242 242
243 irq = create_irq_nr(NR_IRQS_LEGACY, uv_blade_to_memory_nid(mmr_blade)); 243 if (!irq)
244
245 if (irq <= 0)
246 return -EBUSY; 244 return -EBUSY;
247 245
248 ret = arch_enable_uv_irq(irq_name, irq, cpu, mmr_blade, mmr_offset, 246 ret = arch_enable_uv_irq(irq_name, irq, cpu, mmr_blade, mmr_offset,
@@ -250,7 +248,7 @@ int uv_setup_irq(char *irq_name, int cpu, int mmr_blade,
250 if (ret == irq) 248 if (ret == irq)
251 uv_set_irq_2_mmr_info(irq, mmr_offset, mmr_blade); 249 uv_set_irq_2_mmr_info(irq, mmr_offset, mmr_blade);
252 else 250 else
253 destroy_irq(irq); 251 irq_free_hwirq(irq);
254 252
255 return ret; 253 return ret;
256} 254}
@@ -285,6 +283,6 @@ void uv_teardown_irq(unsigned int irq)
285 n = n->rb_right; 283 n = n->rb_right;
286 } 284 }
287 spin_unlock_irqrestore(&uv_irq_lock, irqflags); 285 spin_unlock_irqrestore(&uv_irq_lock, irqflags);
288 destroy_irq(irq); 286 irq_free_hwirq(irq);
289} 287}
290EXPORT_SYMBOL_GPL(uv_teardown_irq); 288EXPORT_SYMBOL_GPL(uv_teardown_irq);
diff --git a/arch/x86/platform/uv/uv_nmi.c b/arch/x86/platform/uv/uv_nmi.c
index be27da60dc8f..c89c93320c12 100644
--- a/arch/x86/platform/uv/uv_nmi.c
+++ b/arch/x86/platform/uv/uv_nmi.c
@@ -85,7 +85,7 @@ static cpumask_var_t uv_nmi_cpu_mask;
85 * Default is all stack dumps go to the console and buffer. 85 * Default is all stack dumps go to the console and buffer.
86 * Lower level to send to log buffer only. 86 * Lower level to send to log buffer only.
87 */ 87 */
88static int uv_nmi_loglevel = 7; 88static int uv_nmi_loglevel = CONSOLE_LOGLEVEL_DEFAULT;
89module_param_named(dump_loglevel, uv_nmi_loglevel, int, 0644); 89module_param_named(dump_loglevel, uv_nmi_loglevel, int, 0644);
90 90
91/* 91/*