diff options
author | Dave Airlie <airlied@redhat.com> | 2013-06-27 06:40:44 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2013-06-27 06:40:44 -0400 |
commit | 4300a0f8bdcce5a03b88bfa16fc9827e15c52dc4 (patch) | |
tree | dea0276d7d0a12147f04ddbef9121e32e903c5ca /arch/s390 | |
parent | 160954b7bca43da7cd3cfbce310e6df919a8216e (diff) | |
parent | 9e895ace5d82df8929b16f58e9f515f6d54ab82d (diff) |
Merge tag 'v3.10-rc7' into drm-next
Linux 3.10-rc7
The sdvo lvds fix in this -fixes pull
commit c3456fb3e4712d0448592af3c5d644c9472cd3c1
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date: Mon Jun 10 09:47:58 2013 +0200
drm/i915: prefer VBT modes for SVDO-LVDS over EDID
has a silent functional conflict with
commit 990256aec2f10800595dddf4d1c3441fcd6b2616
Author: Ville Syrjälä <ville.syrjala@linux.intel.com>
Date: Fri May 31 12:17:07 2013 +0000
drm: Add probed modes in probe order
in drm-next. W simply need to add the vbt modes before edid modes, i.e. the
other way round than now.
Conflicts:
drivers/gpu/drm/drm_prime.c
drivers/gpu/drm/i915/intel_sdvo.c
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/appldata/appldata_base.c | 7 | ||||
-rw-r--r-- | arch/s390/include/asm/dma-mapping.h | 2 | ||||
-rw-r--r-- | arch/s390/include/asm/io.h | 1 | ||||
-rw-r--r-- | arch/s390/include/asm/pgtable.h | 45 | ||||
-rw-r--r-- | arch/s390/kernel/dumpstack.c | 12 | ||||
-rw-r--r-- | arch/s390/kernel/irq.c | 64 | ||||
-rw-r--r-- | arch/s390/kernel/sclp.S | 2 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 27 | ||||
-rw-r--r-- | arch/s390/mm/pgtable.c | 2 | ||||
-rw-r--r-- | arch/s390/pci/pci.c | 33 |
10 files changed, 124 insertions, 71 deletions
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index bae0f402bf2a..87a22092b68f 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -212,7 +212,9 @@ appldata_timer_handler(ctl_table *ctl, int write, | |||
212 | return 0; | 212 | return 0; |
213 | } | 213 | } |
214 | if (!write) { | 214 | if (!write) { |
215 | len = sprintf(buf, appldata_timer_active ? "1\n" : "0\n"); | 215 | strncpy(buf, appldata_timer_active ? "1\n" : "0\n", |
216 | ARRAY_SIZE(buf)); | ||
217 | len = strnlen(buf, ARRAY_SIZE(buf)); | ||
216 | if (len > *lenp) | 218 | if (len > *lenp) |
217 | len = *lenp; | 219 | len = *lenp; |
218 | if (copy_to_user(buffer, buf, len)) | 220 | if (copy_to_user(buffer, buf, len)) |
@@ -317,7 +319,8 @@ appldata_generic_handler(ctl_table *ctl, int write, | |||
317 | return 0; | 319 | return 0; |
318 | } | 320 | } |
319 | if (!write) { | 321 | if (!write) { |
320 | len = sprintf(buf, ops->active ? "1\n" : "0\n"); | 322 | strncpy(buf, ops->active ? "1\n" : "0\n", ARRAY_SIZE(buf)); |
323 | len = strnlen(buf, ARRAY_SIZE(buf)); | ||
321 | if (len > *lenp) | 324 | if (len > *lenp) |
322 | len = *lenp; | 325 | len = *lenp; |
323 | if (copy_to_user(buffer, buf, len)) { | 326 | if (copy_to_user(buffer, buf, len)) { |
diff --git a/arch/s390/include/asm/dma-mapping.h b/arch/s390/include/asm/dma-mapping.h index 9411db653bac..886ac7d4937a 100644 --- a/arch/s390/include/asm/dma-mapping.h +++ b/arch/s390/include/asm/dma-mapping.h | |||
@@ -71,8 +71,8 @@ static inline void dma_free_coherent(struct device *dev, size_t size, | |||
71 | { | 71 | { |
72 | struct dma_map_ops *dma_ops = get_dma_ops(dev); | 72 | struct dma_map_ops *dma_ops = get_dma_ops(dev); |
73 | 73 | ||
74 | dma_ops->free(dev, size, cpu_addr, dma_handle, NULL); | ||
75 | debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); | 74 | debug_dma_free_coherent(dev, size, cpu_addr, dma_handle); |
75 | dma_ops->free(dev, size, cpu_addr, dma_handle, NULL); | ||
76 | } | 76 | } |
77 | 77 | ||
78 | #endif /* _ASM_S390_DMA_MAPPING_H */ | 78 | #endif /* _ASM_S390_DMA_MAPPING_H */ |
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h index 379d96e2105e..fd9be010f9b2 100644 --- a/arch/s390/include/asm/io.h +++ b/arch/s390/include/asm/io.h | |||
@@ -36,6 +36,7 @@ static inline void * phys_to_virt(unsigned long address) | |||
36 | } | 36 | } |
37 | 37 | ||
38 | void *xlate_dev_mem_ptr(unsigned long phys); | 38 | void *xlate_dev_mem_ptr(unsigned long phys); |
39 | #define xlate_dev_mem_ptr xlate_dev_mem_ptr | ||
39 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr); | 40 | void unxlate_dev_mem_ptr(unsigned long phys, void *addr); |
40 | 41 | ||
41 | /* | 42 | /* |
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h index 0f0de30e3e3f..e8b6e5b8932c 100644 --- a/arch/s390/include/asm/pgtable.h +++ b/arch/s390/include/asm/pgtable.h | |||
@@ -623,7 +623,7 @@ static inline pgste_t pgste_get_lock(pte_t *ptep) | |||
623 | " csg %0,%1,%2\n" | 623 | " csg %0,%1,%2\n" |
624 | " jl 0b\n" | 624 | " jl 0b\n" |
625 | : "=&d" (old), "=&d" (new), "=Q" (ptep[PTRS_PER_PTE]) | 625 | : "=&d" (old), "=&d" (new), "=Q" (ptep[PTRS_PER_PTE]) |
626 | : "Q" (ptep[PTRS_PER_PTE]) : "cc"); | 626 | : "Q" (ptep[PTRS_PER_PTE]) : "cc", "memory"); |
627 | #endif | 627 | #endif |
628 | return __pgste(new); | 628 | return __pgste(new); |
629 | } | 629 | } |
@@ -635,18 +635,26 @@ static inline void pgste_set_unlock(pte_t *ptep, pgste_t pgste) | |||
635 | " nihh %1,0xff7f\n" /* clear RCP_PCL_BIT */ | 635 | " nihh %1,0xff7f\n" /* clear RCP_PCL_BIT */ |
636 | " stg %1,%0\n" | 636 | " stg %1,%0\n" |
637 | : "=Q" (ptep[PTRS_PER_PTE]) | 637 | : "=Q" (ptep[PTRS_PER_PTE]) |
638 | : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE]) : "cc"); | 638 | : "d" (pgste_val(pgste)), "Q" (ptep[PTRS_PER_PTE]) |
639 | : "cc", "memory"); | ||
639 | preempt_enable(); | 640 | preempt_enable(); |
640 | #endif | 641 | #endif |
641 | } | 642 | } |
642 | 643 | ||
644 | static inline void pgste_set(pte_t *ptep, pgste_t pgste) | ||
645 | { | ||
646 | #ifdef CONFIG_PGSTE | ||
647 | *(pgste_t *)(ptep + PTRS_PER_PTE) = pgste; | ||
648 | #endif | ||
649 | } | ||
650 | |||
643 | static inline pgste_t pgste_update_all(pte_t *ptep, pgste_t pgste) | 651 | static inline pgste_t pgste_update_all(pte_t *ptep, pgste_t pgste) |
644 | { | 652 | { |
645 | #ifdef CONFIG_PGSTE | 653 | #ifdef CONFIG_PGSTE |
646 | unsigned long address, bits; | 654 | unsigned long address, bits; |
647 | unsigned char skey; | 655 | unsigned char skey; |
648 | 656 | ||
649 | if (!pte_present(*ptep)) | 657 | if (pte_val(*ptep) & _PAGE_INVALID) |
650 | return pgste; | 658 | return pgste; |
651 | address = pte_val(*ptep) & PAGE_MASK; | 659 | address = pte_val(*ptep) & PAGE_MASK; |
652 | skey = page_get_storage_key(address); | 660 | skey = page_get_storage_key(address); |
@@ -680,7 +688,7 @@ static inline pgste_t pgste_update_young(pte_t *ptep, pgste_t pgste) | |||
680 | #ifdef CONFIG_PGSTE | 688 | #ifdef CONFIG_PGSTE |
681 | int young; | 689 | int young; |
682 | 690 | ||
683 | if (!pte_present(*ptep)) | 691 | if (pte_val(*ptep) & _PAGE_INVALID) |
684 | return pgste; | 692 | return pgste; |
685 | /* Get referenced bit from storage key */ | 693 | /* Get referenced bit from storage key */ |
686 | young = page_reset_referenced(pte_val(*ptep) & PAGE_MASK); | 694 | young = page_reset_referenced(pte_val(*ptep) & PAGE_MASK); |
@@ -704,17 +712,19 @@ static inline void pgste_set_key(pte_t *ptep, pgste_t pgste, pte_t entry) | |||
704 | { | 712 | { |
705 | #ifdef CONFIG_PGSTE | 713 | #ifdef CONFIG_PGSTE |
706 | unsigned long address; | 714 | unsigned long address; |
707 | unsigned long okey, nkey; | 715 | unsigned long nkey; |
708 | 716 | ||
709 | if (!pte_present(entry)) | 717 | if (pte_val(entry) & _PAGE_INVALID) |
710 | return; | 718 | return; |
719 | VM_BUG_ON(!(pte_val(*ptep) & _PAGE_INVALID)); | ||
711 | address = pte_val(entry) & PAGE_MASK; | 720 | address = pte_val(entry) & PAGE_MASK; |
712 | okey = nkey = page_get_storage_key(address); | 721 | /* |
713 | nkey &= ~(_PAGE_ACC_BITS | _PAGE_FP_BIT); | 722 | * Set page access key and fetch protection bit from pgste. |
714 | /* Set page access key and fetch protection bit from pgste */ | 723 | * The guest C/R information is still in the PGSTE, set real |
715 | nkey |= (pgste_val(pgste) & (RCP_ACC_BITS | RCP_FP_BIT)) >> 56; | 724 | * key C/R to 0. |
716 | if (okey != nkey) | 725 | */ |
717 | page_set_storage_key(address, nkey, 0); | 726 | nkey = (pgste_val(pgste) & (RCP_ACC_BITS | RCP_FP_BIT)) >> 56; |
727 | page_set_storage_key(address, nkey, 0); | ||
718 | #endif | 728 | #endif |
719 | } | 729 | } |
720 | 730 | ||
@@ -1098,6 +1108,11 @@ static inline pte_t ptep_modify_prot_start(struct mm_struct *mm, | |||
1098 | pte = *ptep; | 1108 | pte = *ptep; |
1099 | if (!mm_exclusive(mm)) | 1109 | if (!mm_exclusive(mm)) |
1100 | __ptep_ipte(address, ptep); | 1110 | __ptep_ipte(address, ptep); |
1111 | |||
1112 | if (mm_has_pgste(mm)) { | ||
1113 | pgste = pgste_update_all(&pte, pgste); | ||
1114 | pgste_set(ptep, pgste); | ||
1115 | } | ||
1101 | return pte; | 1116 | return pte; |
1102 | } | 1117 | } |
1103 | 1118 | ||
@@ -1105,9 +1120,13 @@ static inline void ptep_modify_prot_commit(struct mm_struct *mm, | |||
1105 | unsigned long address, | 1120 | unsigned long address, |
1106 | pte_t *ptep, pte_t pte) | 1121 | pte_t *ptep, pte_t pte) |
1107 | { | 1122 | { |
1123 | pgste_t pgste; | ||
1124 | |||
1108 | if (mm_has_pgste(mm)) { | 1125 | if (mm_has_pgste(mm)) { |
1126 | pgste = *(pgste_t *)(ptep + PTRS_PER_PTE); | ||
1127 | pgste_set_key(ptep, pgste, pte); | ||
1109 | pgste_set_pte(ptep, pte); | 1128 | pgste_set_pte(ptep, pte); |
1110 | pgste_set_unlock(ptep, *(pgste_t *)(ptep + PTRS_PER_PTE)); | 1129 | pgste_set_unlock(ptep, pgste); |
1111 | } else | 1130 | } else |
1112 | *ptep = pte; | 1131 | *ptep = pte; |
1113 | } | 1132 | } |
diff --git a/arch/s390/kernel/dumpstack.c b/arch/s390/kernel/dumpstack.c index 298297477257..87acc38f73c6 100644 --- a/arch/s390/kernel/dumpstack.c +++ b/arch/s390/kernel/dumpstack.c | |||
@@ -74,6 +74,8 @@ __show_trace(unsigned long sp, unsigned long low, unsigned long high) | |||
74 | 74 | ||
75 | static void show_trace(struct task_struct *task, unsigned long *stack) | 75 | static void show_trace(struct task_struct *task, unsigned long *stack) |
76 | { | 76 | { |
77 | const unsigned long frame_size = | ||
78 | STACK_FRAME_OVERHEAD + sizeof(struct pt_regs); | ||
77 | register unsigned long __r15 asm ("15"); | 79 | register unsigned long __r15 asm ("15"); |
78 | unsigned long sp; | 80 | unsigned long sp; |
79 | 81 | ||
@@ -82,11 +84,13 @@ static void show_trace(struct task_struct *task, unsigned long *stack) | |||
82 | sp = task ? task->thread.ksp : __r15; | 84 | sp = task ? task->thread.ksp : __r15; |
83 | printk("Call Trace:\n"); | 85 | printk("Call Trace:\n"); |
84 | #ifdef CONFIG_CHECK_STACK | 86 | #ifdef CONFIG_CHECK_STACK |
85 | sp = __show_trace(sp, S390_lowcore.panic_stack - 4096, | 87 | sp = __show_trace(sp, |
86 | S390_lowcore.panic_stack); | 88 | S390_lowcore.panic_stack + frame_size - 4096, |
89 | S390_lowcore.panic_stack + frame_size); | ||
87 | #endif | 90 | #endif |
88 | sp = __show_trace(sp, S390_lowcore.async_stack - ASYNC_SIZE, | 91 | sp = __show_trace(sp, |
89 | S390_lowcore.async_stack); | 92 | S390_lowcore.async_stack + frame_size - ASYNC_SIZE, |
93 | S390_lowcore.async_stack + frame_size); | ||
90 | if (task) | 94 | if (task) |
91 | __show_trace(sp, (unsigned long) task_stack_page(task), | 95 | __show_trace(sp, (unsigned long) task_stack_page(task), |
92 | (unsigned long) task_stack_page(task) + THREAD_SIZE); | 96 | (unsigned long) task_stack_page(task) + THREAD_SIZE); |
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c index f7fb58903f6a..408e866ae548 100644 --- a/arch/s390/kernel/irq.c +++ b/arch/s390/kernel/irq.c | |||
@@ -311,3 +311,67 @@ void measurement_alert_subclass_unregister(void) | |||
311 | spin_unlock(&ma_subclass_lock); | 311 | spin_unlock(&ma_subclass_lock); |
312 | } | 312 | } |
313 | EXPORT_SYMBOL(measurement_alert_subclass_unregister); | 313 | EXPORT_SYMBOL(measurement_alert_subclass_unregister); |
314 | |||
315 | void synchronize_irq(unsigned int irq) | ||
316 | { | ||
317 | /* | ||
318 | * Not needed, the handler is protected by a lock and IRQs that occur | ||
319 | * after the handler is deleted are just NOPs. | ||
320 | */ | ||
321 | } | ||
322 | EXPORT_SYMBOL_GPL(synchronize_irq); | ||
323 | |||
324 | #ifndef CONFIG_PCI | ||
325 | |||
326 | /* Only PCI devices have dynamically-defined IRQ handlers */ | ||
327 | |||
328 | int request_irq(unsigned int irq, irq_handler_t handler, | ||
329 | unsigned long irqflags, const char *devname, void *dev_id) | ||
330 | { | ||
331 | return -EINVAL; | ||
332 | } | ||
333 | EXPORT_SYMBOL_GPL(request_irq); | ||
334 | |||
335 | void free_irq(unsigned int irq, void *dev_id) | ||
336 | { | ||
337 | WARN_ON(1); | ||
338 | } | ||
339 | EXPORT_SYMBOL_GPL(free_irq); | ||
340 | |||
341 | void enable_irq(unsigned int irq) | ||
342 | { | ||
343 | WARN_ON(1); | ||
344 | } | ||
345 | EXPORT_SYMBOL_GPL(enable_irq); | ||
346 | |||
347 | void disable_irq(unsigned int irq) | ||
348 | { | ||
349 | WARN_ON(1); | ||
350 | } | ||
351 | EXPORT_SYMBOL_GPL(disable_irq); | ||
352 | |||
353 | #endif /* !CONFIG_PCI */ | ||
354 | |||
355 | void disable_irq_nosync(unsigned int irq) | ||
356 | { | ||
357 | disable_irq(irq); | ||
358 | } | ||
359 | EXPORT_SYMBOL_GPL(disable_irq_nosync); | ||
360 | |||
361 | unsigned long probe_irq_on(void) | ||
362 | { | ||
363 | return 0; | ||
364 | } | ||
365 | EXPORT_SYMBOL_GPL(probe_irq_on); | ||
366 | |||
367 | int probe_irq_off(unsigned long val) | ||
368 | { | ||
369 | return 0; | ||
370 | } | ||
371 | EXPORT_SYMBOL_GPL(probe_irq_off); | ||
372 | |||
373 | unsigned int probe_irq_mask(unsigned long val) | ||
374 | { | ||
375 | return val; | ||
376 | } | ||
377 | EXPORT_SYMBOL_GPL(probe_irq_mask); | ||
diff --git a/arch/s390/kernel/sclp.S b/arch/s390/kernel/sclp.S index b6506ee32a36..29bd7bec4176 100644 --- a/arch/s390/kernel/sclp.S +++ b/arch/s390/kernel/sclp.S | |||
@@ -225,7 +225,7 @@ _sclp_print: | |||
225 | ahi %r2,1 | 225 | ahi %r2,1 |
226 | ltr %r0,%r0 # end of string? | 226 | ltr %r0,%r0 # end of string? |
227 | jz .LfinalizemtoS4 | 227 | jz .LfinalizemtoS4 |
228 | chi %r0,0x15 # end of line (NL)? | 228 | chi %r0,0x0a # end of line (NL)? |
229 | jz .LfinalizemtoS4 | 229 | jz .LfinalizemtoS4 |
230 | stc %r0,0(%r6,%r7) # copy to mto | 230 | stc %r0,0(%r6,%r7) # copy to mto |
231 | la %r11,0(%r6,%r7) | 231 | la %r11,0(%r6,%r7) |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 05674b669001..4f977d0d25c2 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -428,34 +428,27 @@ void smp_stop_cpu(void) | |||
428 | * This is the main routine where commands issued by other | 428 | * This is the main routine where commands issued by other |
429 | * cpus are handled. | 429 | * cpus are handled. |
430 | */ | 430 | */ |
431 | static void do_ext_call_interrupt(struct ext_code ext_code, | 431 | static void smp_handle_ext_call(void) |
432 | unsigned int param32, unsigned long param64) | ||
433 | { | 432 | { |
434 | unsigned long bits; | 433 | unsigned long bits; |
435 | int cpu; | ||
436 | |||
437 | cpu = smp_processor_id(); | ||
438 | if (ext_code.code == 0x1202) | ||
439 | inc_irq_stat(IRQEXT_EXC); | ||
440 | else | ||
441 | inc_irq_stat(IRQEXT_EMS); | ||
442 | /* | ||
443 | * handle bit signal external calls | ||
444 | */ | ||
445 | bits = xchg(&pcpu_devices[cpu].ec_mask, 0); | ||
446 | 434 | ||
435 | /* handle bit signal external calls */ | ||
436 | bits = xchg(&pcpu_devices[smp_processor_id()].ec_mask, 0); | ||
447 | if (test_bit(ec_stop_cpu, &bits)) | 437 | if (test_bit(ec_stop_cpu, &bits)) |
448 | smp_stop_cpu(); | 438 | smp_stop_cpu(); |
449 | |||
450 | if (test_bit(ec_schedule, &bits)) | 439 | if (test_bit(ec_schedule, &bits)) |
451 | scheduler_ipi(); | 440 | scheduler_ipi(); |
452 | |||
453 | if (test_bit(ec_call_function, &bits)) | 441 | if (test_bit(ec_call_function, &bits)) |
454 | generic_smp_call_function_interrupt(); | 442 | generic_smp_call_function_interrupt(); |
455 | |||
456 | if (test_bit(ec_call_function_single, &bits)) | 443 | if (test_bit(ec_call_function_single, &bits)) |
457 | generic_smp_call_function_single_interrupt(); | 444 | generic_smp_call_function_single_interrupt(); |
445 | } | ||
458 | 446 | ||
447 | static void do_ext_call_interrupt(struct ext_code ext_code, | ||
448 | unsigned int param32, unsigned long param64) | ||
449 | { | ||
450 | inc_irq_stat(ext_code.code == 0x1202 ? IRQEXT_EXC : IRQEXT_EMS); | ||
451 | smp_handle_ext_call(); | ||
459 | } | 452 | } |
460 | 453 | ||
461 | void arch_send_call_function_ipi_mask(const struct cpumask *mask) | 454 | void arch_send_call_function_ipi_mask(const struct cpumask *mask) |
@@ -760,6 +753,8 @@ int __cpu_disable(void) | |||
760 | { | 753 | { |
761 | unsigned long cregs[16]; | 754 | unsigned long cregs[16]; |
762 | 755 | ||
756 | /* Handle possible pending IPIs */ | ||
757 | smp_handle_ext_call(); | ||
763 | set_cpu_online(smp_processor_id(), false); | 758 | set_cpu_online(smp_processor_id(), false); |
764 | /* Disable pseudo page faults on this cpu. */ | 759 | /* Disable pseudo page faults on this cpu. */ |
765 | pfault_fini(); | 760 | pfault_fini(); |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 18dc417aaf79..a938b548f07e 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
@@ -492,7 +492,7 @@ static int gmap_connect_pgtable(unsigned long address, unsigned long segment, | |||
492 | mp = (struct gmap_pgtable *) page->index; | 492 | mp = (struct gmap_pgtable *) page->index; |
493 | rmap->gmap = gmap; | 493 | rmap->gmap = gmap; |
494 | rmap->entry = segment_ptr; | 494 | rmap->entry = segment_ptr; |
495 | rmap->vmaddr = address; | 495 | rmap->vmaddr = address & PMD_MASK; |
496 | spin_lock(&mm->page_table_lock); | 496 | spin_lock(&mm->page_table_lock); |
497 | if (*segment_ptr == segment) { | 497 | if (*segment_ptr == segment) { |
498 | list_add(&rmap->list, &mp->mapper); | 498 | list_add(&rmap->list, &mp->mapper); |
diff --git a/arch/s390/pci/pci.c b/arch/s390/pci/pci.c index e6f15b5d8b7d..f1e5be85d592 100644 --- a/arch/s390/pci/pci.c +++ b/arch/s390/pci/pci.c | |||
@@ -302,15 +302,6 @@ static int zpci_cfg_store(struct zpci_dev *zdev, int offset, u32 val, u8 len) | |||
302 | return rc; | 302 | return rc; |
303 | } | 303 | } |
304 | 304 | ||
305 | void synchronize_irq(unsigned int irq) | ||
306 | { | ||
307 | /* | ||
308 | * Not needed, the handler is protected by a lock and IRQs that occur | ||
309 | * after the handler is deleted are just NOPs. | ||
310 | */ | ||
311 | } | ||
312 | EXPORT_SYMBOL_GPL(synchronize_irq); | ||
313 | |||
314 | void enable_irq(unsigned int irq) | 305 | void enable_irq(unsigned int irq) |
315 | { | 306 | { |
316 | struct msi_desc *msi = irq_get_msi_desc(irq); | 307 | struct msi_desc *msi = irq_get_msi_desc(irq); |
@@ -327,30 +318,6 @@ void disable_irq(unsigned int irq) | |||
327 | } | 318 | } |
328 | EXPORT_SYMBOL_GPL(disable_irq); | 319 | EXPORT_SYMBOL_GPL(disable_irq); |
329 | 320 | ||
330 | void disable_irq_nosync(unsigned int irq) | ||
331 | { | ||
332 | disable_irq(irq); | ||
333 | } | ||
334 | EXPORT_SYMBOL_GPL(disable_irq_nosync); | ||
335 | |||
336 | unsigned long probe_irq_on(void) | ||
337 | { | ||
338 | return 0; | ||
339 | } | ||
340 | EXPORT_SYMBOL_GPL(probe_irq_on); | ||
341 | |||
342 | int probe_irq_off(unsigned long val) | ||
343 | { | ||
344 | return 0; | ||
345 | } | ||
346 | EXPORT_SYMBOL_GPL(probe_irq_off); | ||
347 | |||
348 | unsigned int probe_irq_mask(unsigned long val) | ||
349 | { | ||
350 | return val; | ||
351 | } | ||
352 | EXPORT_SYMBOL_GPL(probe_irq_mask); | ||
353 | |||
354 | void pcibios_fixup_bus(struct pci_bus *bus) | 321 | void pcibios_fixup_bus(struct pci_bus *bus) |
355 | { | 322 | { |
356 | } | 323 | } |