Module: xenomai-3 Branch: next Commit: b2ffcb119159299b95a9110095e2b9b98bdab042 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=b2ffcb119159299b95a9110095e2b9b98bdab042
Author: Philippe Gerum <r...@xenomai.org> Date: Wed Mar 4 09:15:54 2015 +0100 cobalt/x86: upgrade I-pipe support --- ...-x86-7.patch => ipipe-core-3.14.33-x86-8.patch} | 167 +++++++++++--------- 1 file changed, 91 insertions(+), 76 deletions(-) diff --git a/kernel/cobalt/arch/x86/patches/ipipe-core-3.14.28-x86-7.patch b/kernel/cobalt/arch/x86/patches/ipipe-core-3.14.33-x86-8.patch similarity index 99% rename from kernel/cobalt/arch/x86/patches/ipipe-core-3.14.28-x86-7.patch rename to kernel/cobalt/arch/x86/patches/ipipe-core-3.14.33-x86-8.patch index 0086f76..97a412f 100644 --- a/kernel/cobalt/arch/x86/patches/ipipe-core-3.14.28-x86-7.patch +++ b/kernel/cobalt/arch/x86/patches/ipipe-core-3.14.33-x86-8.patch @@ -1,5 +1,5 @@ diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig -index 98aa930..91e382d 100644 +index 2f645c9..908b4f5 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -9,6 +9,7 @@ config 64BIT @@ -50,7 +50,7 @@ index 98aa930..91e382d 100644 + config X86_UP_APIC bool "Local APIC support on uniprocessors" - depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI + depends on X86_32 && !SMP && !X86_32_NON_STANDARD diff --git a/arch/x86/ia32/ia32entry.S b/arch/x86/ia32/ia32entry.S index 92a2e93..56aa429 100644 --- a/arch/x86/ia32/ia32entry.S @@ -202,7 +202,7 @@ index 4b528a9..0cf06c6 100644 static inline void debug_stack_usage_inc(void) { diff --git a/arch/x86/include/asm/desc.h b/arch/x86/include/asm/desc.h -index 50d033a..f87cb28 100644 +index a94b82e..e185603 100644 --- a/arch/x86/include/asm/desc.h +++ b/arch/x86/include/asm/desc.h @@ -4,6 +4,7 @@ @@ -213,7 +213,7 @@ index 50d033a..f87cb28 100644 #include <linux/smp.h> #include <linux/percpu.h> -@@ -368,11 +369,16 @@ static inline void _set_gate(int gate, unsigned type, void *addr, +@@ -376,11 +377,16 @@ static inline void _set_gate(int gate, unsigned type, void *addr, * Pentium F0 0F bugfix can have resulted in the mapped * IDT being write-protected. */ @@ -231,7 +231,7 @@ index 50d033a..f87cb28 100644 _trace_set_gate(n, GATE_INTERRUPT, (void *)trace_##addr,\ 0, 0, __KERNEL_CS); \ } while (0) -@@ -384,6 +390,13 @@ extern unsigned long used_vectors[]; +@@ -392,6 +398,13 @@ extern unsigned long used_vectors[]; static inline void alloc_system_vector(int vector) { if (!test_bit(vector, used_vectors)) { @@ -245,7 +245,7 @@ index 50d033a..f87cb28 100644 set_bit(vector, used_vectors); if (first_system_vector > vector) first_system_vector = vector; -@@ -392,6 +405,12 @@ static inline void alloc_system_vector(int vector) +@@ -400,6 +413,12 @@ static inline void alloc_system_vector(int vector) } } @@ -258,7 +258,7 @@ index 50d033a..f87cb28 100644 #define alloc_intr_gate(n, addr) \ do { \ alloc_system_vector(n); \ -@@ -437,7 +456,7 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist) +@@ -445,7 +464,7 @@ static inline void set_system_intr_gate_ist(int n, void *addr, unsigned ist) _set_gate(n, GATE_INTERRUPT, addr, 0x3, ist, __KERNEL_CS); } @@ -442,7 +442,7 @@ index 615fa90..e0a62ab 100644 extern void default_send_IPI_mask_sequence_phys(const struct cpumask *mask, diff --git a/arch/x86/include/asm/ipipe.h b/arch/x86/include/asm/ipipe.h new file mode 100644 -index 0000000..f6df562 +index 0000000..a244663 --- /dev/null +++ b/arch/x86/include/asm/ipipe.h @@ -0,0 +1,96 @@ @@ -472,7 +472,7 @@ index 0000000..f6df562 + +#ifdef CONFIG_IPIPE + -+#define IPIPE_CORE_RELEASE 7 ++#define IPIPE_CORE_RELEASE 8 + +struct ipipe_domain; + @@ -1664,7 +1664,7 @@ index 2c621a6..18b3219 100644 static void flat_send_IPI_mask(const struct cpumask *cpumask, int vector) diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c -index 6ad4658..c97b856 100644 +index 6ad4658..9233e45 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -71,8 +71,8 @@ @@ -1809,7 +1809,7 @@ index 6ad4658..c97b856 100644 ioapic_write_entry(attr->ioapic, attr->ioapic_pin, entry); } -@@ -2139,7 +2180,7 @@ static unsigned int startup_ioapic_irq(struct irq_data *data) +@@ -2139,11 +2180,12 @@ static unsigned int startup_ioapic_irq(struct irq_data *data) raw_spin_lock_irqsave(&ioapic_lock, flags); if (irq < legacy_pic->nr_legacy_irqs) { @@ -1818,7 +1818,12 @@ index 6ad4658..c97b856 100644 if (legacy_pic->irq_pending(irq)) was_pending = 1; } -@@ -2198,7 +2239,8 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void) + __unmask_ioapic(data->chip_data); ++ ipipe_unlock_irq(irq); + raw_spin_unlock_irqrestore(&ioapic_lock, flags); + + return was_pending; +@@ -2198,7 +2240,8 @@ asmlinkage void smp_irq_move_cleanup_interrupt(void) exit_idle(); me = smp_processor_id(); @@ -1828,7 +1833,7 @@ index 6ad4658..c97b856 100644 int irq; unsigned int irr; struct irq_desc *desc; -@@ -2359,14 +2401,16 @@ int native_ioapic_set_affinity(struct irq_data *data, +@@ -2359,14 +2402,16 @@ int native_ioapic_set_affinity(struct irq_data *data, static void ack_apic_edge(struct irq_data *data) { @@ -1847,7 +1852,7 @@ index 6ad4658..c97b856 100644 static bool io_apic_level_ack_pending(struct irq_cfg *cfg) { struct irq_pin_list *entry; -@@ -2394,7 +2438,7 @@ static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg) +@@ -2394,7 +2439,7 @@ static inline bool ioapic_irqd_mask(struct irq_data *data, struct irq_cfg *cfg) { /* If we are moving the irq we need to mask it */ if (unlikely(irqd_is_setaffinity_pending(data))) { @@ -1856,7 +1861,7 @@ index 6ad4658..c97b856 100644 return true; } return false; -@@ -2432,7 +2476,7 @@ static inline void ioapic_irqd_unmask(struct irq_data *data, +@@ -2432,7 +2477,7 @@ static inline void ioapic_irqd_unmask(struct irq_data *data, */ if (!io_apic_level_ack_pending(cfg)) irq_move_masked_irq(data); @@ -1865,7 +1870,7 @@ index 6ad4658..c97b856 100644 } } #else -@@ -2446,12 +2490,46 @@ static inline void ioapic_irqd_unmask(struct irq_data *data, +@@ -2446,12 +2491,46 @@ static inline void ioapic_irqd_unmask(struct irq_data *data, } #endif @@ -1913,7 +1918,7 @@ index 6ad4658..c97b856 100644 irq_complete_move(cfg); masked = ioapic_irqd_mask(data, cfg); -@@ -2511,8 +2589,50 @@ static void ack_apic_level(struct irq_data *data) +@@ -2511,8 +2590,50 @@ static void ack_apic_level(struct irq_data *data) } ioapic_irqd_unmask(data, cfg, masked); @@ -1964,7 +1969,7 @@ index 6ad4658..c97b856 100644 static struct irq_chip ioapic_chip __read_mostly = { .name = "IO-APIC", .irq_startup = startup_ioapic_irq, -@@ -2522,6 +2642,13 @@ static struct irq_chip ioapic_chip __read_mostly = { +@@ -2522,6 +2643,13 @@ static struct irq_chip ioapic_chip __read_mostly = { .irq_eoi = ack_apic_level, .irq_set_affinity = native_ioapic_set_affinity, .irq_retrigger = ioapic_retrigger_irq, @@ -1978,7 +1983,7 @@ index 6ad4658..c97b856 100644 }; static inline void init_IO_APIC_traps(void) -@@ -2563,23 +2690,29 @@ static inline void init_IO_APIC_traps(void) +@@ -2563,23 +2691,29 @@ static inline void init_IO_APIC_traps(void) static void mask_lapic_irq(struct irq_data *data) { @@ -2011,7 +2016,7 @@ index 6ad4658..c97b856 100644 } static struct irq_chip lapic_chip __read_mostly = { -@@ -2587,6 +2720,9 @@ static struct irq_chip lapic_chip __read_mostly = { +@@ -2587,6 +2721,9 @@ static struct irq_chip lapic_chip __read_mostly = { .irq_mask = mask_lapic_irq, .irq_unmask = unmask_lapic_irq, .irq_ack = ack_lapic_irq, @@ -2021,7 +2026,7 @@ index 6ad4658..c97b856 100644 }; static void lapic_register_intr(int irq) -@@ -2687,7 +2823,7 @@ static inline void __init check_timer(void) +@@ -2687,7 +2824,7 @@ static inline void __init check_timer(void) /* * get/set the timer IRQ vector: */ @@ -2030,7 +2035,7 @@ index 6ad4658..c97b856 100644 assign_irq_vector(0, cfg, apic->target_cpus()); /* -@@ -2744,7 +2880,7 @@ static inline void __init check_timer(void) +@@ -2744,7 +2881,7 @@ static inline void __init check_timer(void) int idx; idx = find_irq_entry(apic1, pin1, mp_INT); if (idx != -1 && irq_trigger(idx)) @@ -2039,7 +2044,7 @@ index 6ad4658..c97b856 100644 } if (timer_irq_works()) { if (disable_timer_pin_1 > 0) -@@ -2777,7 +2913,7 @@ static inline void __init check_timer(void) +@@ -2777,7 +2914,7 @@ static inline void __init check_timer(void) * Cleanup, just in case ... */ local_irq_disable(); @@ -2048,7 +2053,7 @@ index 6ad4658..c97b856 100644 clear_IO_APIC_pin(apic2, pin2); apic_printk(APIC_QUIET, KERN_INFO "....... failed.\n"); } -@@ -2786,6 +2922,10 @@ static inline void __init check_timer(void) +@@ -2786,6 +2923,10 @@ static inline void __init check_timer(void) "...trying to set up timer as Virtual Wire IRQ...\n"); lapic_register_intr(0); @@ -2059,7 +2064,7 @@ index 6ad4658..c97b856 100644 apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */ legacy_pic->unmask(0); -@@ -2794,7 +2934,7 @@ static inline void __init check_timer(void) +@@ -2794,7 +2935,7 @@ static inline void __init check_timer(void) goto out; } local_irq_disable(); @@ -2068,7 +2073,7 @@ index 6ad4658..c97b856 100644 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | cfg->vector); apic_printk(APIC_QUIET, KERN_INFO "..... failed.\n"); -@@ -3102,6 +3242,9 @@ static struct irq_chip msi_chip = { +@@ -3102,6 +3243,9 @@ static struct irq_chip msi_chip = { .irq_ack = ack_apic_edge, .irq_set_affinity = msi_set_affinity, .irq_retrigger = ioapic_retrigger_irq, @@ -2078,7 +2083,7 @@ index 6ad4658..c97b856 100644 }; int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, -@@ -3201,6 +3344,9 @@ static struct irq_chip dmar_msi_type = { +@@ -3201,6 +3345,9 @@ static struct irq_chip dmar_msi_type = { .irq_ack = ack_apic_edge, .irq_set_affinity = dmar_msi_set_affinity, .irq_retrigger = ioapic_retrigger_irq, @@ -2088,7 +2093,7 @@ index 6ad4658..c97b856 100644 }; int arch_setup_dmar_msi(unsigned int irq) -@@ -3249,6 +3395,9 @@ static struct irq_chip hpet_msi_type = { +@@ -3249,6 +3396,9 @@ static struct irq_chip hpet_msi_type = { .irq_ack = ack_apic_edge, .irq_set_affinity = hpet_msi_set_affinity, .irq_retrigger = ioapic_retrigger_irq, @@ -2098,7 +2103,7 @@ index 6ad4658..c97b856 100644 }; int default_setup_hpet_msi(unsigned int irq, unsigned int id) -@@ -3310,6 +3459,9 @@ static struct irq_chip ht_irq_chip = { +@@ -3310,6 +3460,9 @@ static struct irq_chip ht_irq_chip = { .irq_ack = ack_apic_edge, .irq_set_affinity = ht_set_affinity, .irq_retrigger = ioapic_retrigger_irq, @@ -2108,7 +2113,7 @@ index 6ad4658..c97b856 100644 }; int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev) -@@ -3597,6 +3749,18 @@ int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity) +@@ -3597,6 +3750,18 @@ int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity) return 0; } @@ -2431,7 +2436,7 @@ index 66e274a..9ce7358 100644 /* * When in-kernel, we also print out the stack and code at the diff --git a/arch/x86/kernel/entry_32.S b/arch/x86/kernel/entry_32.S -index c5a9cb9..1a8704f 100644 +index c5a9cb9..1c20915 100644 --- a/arch/x86/kernel/entry_32.S +++ b/arch/x86/kernel/entry_32.S @@ -45,6 +45,7 @@ @@ -2571,7 +2576,7 @@ index c5a9cb9..1a8704f 100644 LOCKDEP_SYS_EXIT DISABLE_INTERRUPTS(CLBR_ANY) TRACE_IRQS_OFF -@@ -451,6 +533,23 @@ sysenter_exit: +@@ -451,6 +533,24 @@ sysenter_exit: PTGS_TO_GS ENABLE_INTERRUPTS_SYSEXIT @@ -2589,13 +2594,14 @@ index c5a9cb9..1a8704f 100644 + jmp sysenter_exit +sysenter_exit_root: + call __ipipe_root_sync ++ movl PT_EAX(%esp),%eax + jmp sysenter_exit_check +#endif + #ifdef CONFIG_AUDITSYSCALL sysenter_audit: testl $(_TIF_WORK_SYSCALL_ENTRY & ~_TIF_SYSCALL_AUDIT),TI_flags(%ebp) -@@ -507,6 +606,25 @@ ENTRY(system_call) +@@ -507,6 +607,25 @@ ENTRY(system_call) pushl_cfi %eax # save orig_eax SAVE_ALL GET_THREAD_INFO(%ebp) @@ -2621,7 +2627,7 @@ index c5a9cb9..1a8704f 100644 # system call tracing in operation / emulation testl $_TIF_WORK_SYSCALL_ENTRY,TI_flags(%ebp) jnz syscall_trace_entry -@@ -548,7 +666,7 @@ irq_return: +@@ -548,7 +667,7 @@ irq_return: .section .fixup,"ax" ENTRY(iret_exc) pushl $0 # no error code @@ -2630,7 +2636,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code .previous _ASM_EXTABLE(irq_return,iret_exc) -@@ -608,6 +726,7 @@ work_pending: +@@ -608,6 +727,7 @@ work_pending: testb $_TIF_NEED_RESCHED, %cl jz work_notifysig work_resched: @@ -2638,7 +2644,7 @@ index c5a9cb9..1a8704f 100644 call schedule LOCKDEP_SYS_EXIT DISABLE_INTERRUPTS(CLBR_ANY) # make sure we don't miss an interrupt -@@ -623,6 +742,7 @@ work_resched: +@@ -623,6 +743,7 @@ work_resched: work_notifysig: # deal with pending signals and # notify-resume requests @@ -2646,7 +2652,7 @@ index c5a9cb9..1a8704f 100644 #ifdef CONFIG_VM86 testl $X86_EFLAGS_VM, PT_EFLAGS(%esp) movl %esp, %eax -@@ -775,6 +895,58 @@ END(irq_entries_start) +@@ -775,6 +896,58 @@ END(irq_entries_start) END(interrupt) .previous @@ -2705,7 +2711,7 @@ index c5a9cb9..1a8704f 100644 /* * the CPU automatically disables interrupts when executing an IRQ vector, * so IRQ-flags tracing has to follow that: -@@ -808,6 +980,7 @@ ENTRY(name) \ +@@ -808,6 +981,7 @@ ENTRY(name) \ CFI_ENDPROC; \ ENDPROC(name) @@ -2713,7 +2719,7 @@ index c5a9cb9..1a8704f 100644 #ifdef CONFIG_TRACING #define TRACE_BUILD_INTERRUPT(name, nr) \ -@@ -827,7 +1000,7 @@ ENTRY(coprocessor_error) +@@ -827,7 +1001,7 @@ ENTRY(coprocessor_error) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2722,7 +2728,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(coprocessor_error) -@@ -838,17 +1011,17 @@ ENTRY(simd_coprocessor_error) +@@ -838,17 +1012,17 @@ ENTRY(simd_coprocessor_error) pushl_cfi $0 #ifdef CONFIG_X86_INVD_BUG /* AMD 486 bug: invd from userspace calls exception 19 instead of #GP */ @@ -2743,7 +2749,7 @@ index c5a9cb9..1a8704f 100644 #endif jmp error_code CFI_ENDPROC -@@ -858,7 +1031,7 @@ ENTRY(device_not_available) +@@ -858,7 +1032,7 @@ ENTRY(device_not_available) RING0_INT_FRAME ASM_CLAC pushl_cfi $-1 # mark this as an int @@ -2752,7 +2758,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(device_not_available) -@@ -879,7 +1052,7 @@ ENTRY(overflow) +@@ -879,7 +1053,7 @@ ENTRY(overflow) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2761,7 +2767,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(overflow) -@@ -888,7 +1061,7 @@ ENTRY(bounds) +@@ -888,7 +1062,7 @@ ENTRY(bounds) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2770,7 +2776,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(bounds) -@@ -897,7 +1070,7 @@ ENTRY(invalid_op) +@@ -897,7 +1071,7 @@ ENTRY(invalid_op) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2779,7 +2785,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(invalid_op) -@@ -906,7 +1079,7 @@ ENTRY(coprocessor_segment_overrun) +@@ -906,7 +1080,7 @@ ENTRY(coprocessor_segment_overrun) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2788,7 +2794,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(coprocessor_segment_overrun) -@@ -914,7 +1087,7 @@ END(coprocessor_segment_overrun) +@@ -914,7 +1088,7 @@ END(coprocessor_segment_overrun) ENTRY(invalid_TSS) RING0_EC_FRAME ASM_CLAC @@ -2797,7 +2803,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(invalid_TSS) -@@ -922,7 +1095,7 @@ END(invalid_TSS) +@@ -922,7 +1096,7 @@ END(invalid_TSS) ENTRY(segment_not_present) RING0_EC_FRAME ASM_CLAC @@ -2806,7 +2812,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(segment_not_present) -@@ -930,7 +1103,7 @@ END(segment_not_present) +@@ -930,7 +1104,7 @@ END(segment_not_present) ENTRY(stack_segment) RING0_EC_FRAME ASM_CLAC @@ -2815,7 +2821,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(stack_segment) -@@ -938,7 +1111,7 @@ END(stack_segment) +@@ -938,7 +1112,7 @@ END(stack_segment) ENTRY(alignment_check) RING0_EC_FRAME ASM_CLAC @@ -2824,7 +2830,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(alignment_check) -@@ -947,7 +1120,7 @@ ENTRY(divide_error) +@@ -947,7 +1121,7 @@ ENTRY(divide_error) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 # no error code @@ -2833,7 +2839,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(divide_error) -@@ -957,7 +1130,7 @@ ENTRY(machine_check) +@@ -957,7 +1131,7 @@ ENTRY(machine_check) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2842,7 +2848,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(machine_check) -@@ -967,7 +1140,7 @@ ENTRY(spurious_interrupt_bug) +@@ -967,7 +1141,7 @@ ENTRY(spurious_interrupt_bug) RING0_INT_FRAME ASM_CLAC pushl_cfi $0 @@ -2851,7 +2857,7 @@ index c5a9cb9..1a8704f 100644 jmp error_code CFI_ENDPROC END(spurious_interrupt_bug) -@@ -1267,7 +1440,7 @@ END(trace_page_fault) +@@ -1267,7 +1441,7 @@ END(trace_page_fault) ENTRY(page_fault) RING0_EC_FRAME ASM_CLAC @@ -2860,7 +2866,7 @@ index c5a9cb9..1a8704f 100644 ALIGN error_code: /* the function address is in %gs's slot on the stack */ -@@ -1304,9 +1477,11 @@ error_code: +@@ -1304,9 +1478,11 @@ error_code: movl $(__USER_DS), %ecx movl %ecx, %ds movl %ecx, %es @@ -2873,7 +2879,7 @@ index c5a9cb9..1a8704f 100644 jmp ret_from_exception CFI_ENDPROC END(page_fault) -@@ -1346,6 +1521,7 @@ ENTRY(debug) +@@ -1346,6 +1522,7 @@ ENTRY(debug) debug_stack_correct: pushl_cfi $-1 # mark this as an int SAVE_ALL @@ -2881,7 +2887,7 @@ index c5a9cb9..1a8704f 100644 TRACE_IRQS_OFF xorl %edx,%edx # error code 0 movl %esp,%eax # pt_regs pointer -@@ -1442,6 +1618,7 @@ ENTRY(int3) +@@ -1442,6 +1619,7 @@ ENTRY(int3) ASM_CLAC pushl_cfi $-1 # mark this as an int SAVE_ALL @@ -2889,7 +2895,7 @@ index c5a9cb9..1a8704f 100644 TRACE_IRQS_OFF xorl %edx,%edx # zero error code movl %esp,%eax # pt_regs pointer -@@ -1452,7 +1629,7 @@ END(int3) +@@ -1452,7 +1630,7 @@ END(int3) ENTRY(general_protection) RING0_EC_FRAME @@ -4647,7 +4653,7 @@ index 6828765..5f10db9 100644 while (!cpu_online(cpu)) { cpu_relax(); diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c -index f9d976e..19b33b5 100644 +index b1d9002..9cf6e8e 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c @@ -102,7 +102,16 @@ static inline void conditional_cli(struct pt_regs *regs) @@ -4714,7 +4720,7 @@ index f9d976e..19b33b5 100644 set_intr_gate(X86_TRAP_PF, page_fault); #endif diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c -index de02906..63c0889 100644 +index b20bced..b17a543 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -652,15 +652,15 @@ unsigned long native_calibrate_tsc(void) @@ -4871,10 +4877,10 @@ index 9643eda6..7fdc371 100644 } diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c -index 0c90f4b..ab0f47b 100644 +index 80c22a3..c1157a4 100644 --- a/arch/x86/kvm/vmx.c +++ b/arch/x86/kvm/vmx.c -@@ -1758,9 +1758,11 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx) +@@ -1759,9 +1759,11 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx) static void vmx_load_host_state(struct vcpu_vmx *vmx) { @@ -4888,7 +4894,7 @@ index 0c90f4b..ab0f47b 100644 } /* -@@ -2060,6 +2062,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) +@@ -2061,6 +2063,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) { int save_nmsrs, index; @@ -4896,7 +4902,7 @@ index 0c90f4b..ab0f47b 100644 save_nmsrs = 0; #ifdef CONFIG_X86_64 if (is_long_mode(&vmx->vcpu)) { -@@ -2089,6 +2092,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) +@@ -2090,6 +2093,7 @@ static void setup_msrs(struct vcpu_vmx *vmx) move_msr_up(vmx, index, save_nmsrs++); vmx->save_nmsrs = save_nmsrs; @@ -4904,7 +4910,7 @@ index 0c90f4b..ab0f47b 100644 if (cpu_has_vmx_msr_bitmap()) vmx_set_msr_bitmap(&vmx->vcpu); -@@ -7058,8 +7062,10 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu) +@@ -7064,8 +7068,10 @@ static void vmx_handle_external_intr(struct kvm_vcpu *vcpu) [ss]"i"(__KERNEL_DS), [cs]"i"(__KERNEL_CS) ); @@ -4916,7 +4922,7 @@ index 0c90f4b..ab0f47b 100644 } static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx) -@@ -7430,7 +7436,9 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) +@@ -7442,7 +7448,9 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) vmx_vcpu_load(&vmx->vcpu, cpu); vmx->vcpu.cpu = cpu; err = vmx_vcpu_setup(vmx); @@ -4926,7 +4932,7 @@ index 0c90f4b..ab0f47b 100644 put_cpu(); if (err) goto free_vmcs; -@@ -7453,6 +7461,9 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) +@@ -7465,6 +7473,9 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id) vmx->nested.current_vmptr = -1ull; vmx->nested.current_vmcs12 = NULL; @@ -13813,7 +13819,7 @@ index 452d6f2..7f20d7c 100644 } diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h -index 001fa5b..4dad5c7 100644 +index 8a160e8..8a62f8b 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h @@ -53,6 +53,9 @@ enum { @@ -13827,7 +13833,7 @@ index 001fa5b..4dad5c7 100644 #include "debug.h" diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c -index 8ab8e93..5261b2a 100644 +index 07d4551..dc0af3d 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -91,6 +91,9 @@ static void desc_set_defaults(unsigned int irq, struct irq_desc *desc, int node, @@ -13840,7 +13846,7 @@ index 8ab8e93..5261b2a 100644 } int nr_irqs = NR_IRQS; -@@ -270,11 +273,13 @@ int __init early_irq_init(void) +@@ -286,11 +289,13 @@ int __init early_irq_init(void) return arch_early_irq_init(); } @@ -14680,7 +14686,7 @@ index 0de9d7f..7615cff 100644 } diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c -index 6558b7a..f0ddb74 100644 +index 8c08a6f..a21ec0f 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c @@ -148,7 +148,7 @@ static void tick_sched_handle(struct tick_sched *ts, struct pt_regs *regs) @@ -15024,7 +15030,7 @@ index 2aefbee..c3ec43f 100644 } EXPORT_SYMBOL(trace_hardirqs_off_caller); diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug -index a48abea..50cc0312 100644 +index a48abea..0e8ae4a 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -312,6 +312,7 @@ config MAGIC_SYSRQ @@ -15053,6 +15059,15 @@ index a48abea..50cc0312 100644 ---help--- Say Y here if you want to check for overflows of kernel, IRQ and exception stacks (if your archicture uses them). This +@@ -1088,7 +1091,7 @@ menu "RCU Debugging" + + config PROVE_RCU + bool "RCU debugging: prove RCU correctness" +- depends on PROVE_LOCKING ++ depends on PROVE_LOCKING && !IPIPE + default n + help + This feature enables lockdep extensions that check for correct diff --git a/lib/atomic64.c b/lib/atomic64.c index 08a4f06..15810f4 100644 --- a/lib/atomic64.c @@ -15244,7 +15259,7 @@ index 0862816..aacbf2df 100644 help Transparent Hugepages allows the kernel to use huge pages and diff --git a/mm/memory.c b/mm/memory.c -index 48d7365..e23fa86 100644 +index 7f30bea..100a209 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -788,6 +788,34 @@ out: @@ -15315,7 +15330,7 @@ index 48d7365..e23fa86 100644 ptep_set_wrprotect(src_mm, addr, src_pte); pte = pte_wrprotect(pte); } -@@ -888,13 +931,27 @@ int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, +@@ -888,13 +931,27 @@ static int copy_pte_range(struct mm_struct *dst_mm, struct mm_struct *src_mm, int progress = 0; int rss[NR_MM_COUNTERS]; swp_entry_t entry = (swp_entry_t){0}; @@ -15483,7 +15498,7 @@ index b1eb536..ca23f83 100644 +} +#endif diff --git a/mm/mmap.c b/mm/mmap.c -index b91ac80..47ee8c0 100644 +index 085bcd8..ef56280 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -45,6 +45,10 @@ @@ -15497,7 +15512,7 @@ index b91ac80..47ee8c0 100644 #ifndef arch_mmap_check #define arch_mmap_check(addr, len, flags) (0) #endif -@@ -2613,7 +2617,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) +@@ -2616,7 +2620,7 @@ static unsigned long do_brk(unsigned long addr, unsigned long len) flags = VM_DATA_DEFAULT_FLAGS | VM_ACCOUNT | mm->def_flags; @@ -15548,7 +15563,7 @@ index 769a67a..8c40894 100644 return pages; diff --git a/mm/vmalloc.c b/mm/vmalloc.c -index 0fdf968..4a96f40 100644 +index aa3891e..5c756384 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -191,6 +191,8 @@ static int vmap_page_range_noflush(unsigned long start, unsigned long end, _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git