Module: xenomai-rpm
Branch: for-upstream
Commit: f081d26bcbdeeb5a0530c45cbe81b752c98f822b
URL:    
http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=f081d26bcbdeeb5a0530c45cbe81b752c98f822b

Author: Philippe Gerum <r...@xenomai.org>
Date:   Sat Apr 10 12:03:44 2010 +0200

x86: upgrade I-pipe support to 2.6.32.11-x86-2.6-02

---

 ...atch => adeos-ipipe-2.6.32.11-x86-2.6-02.patch} |  175 +++++++++++---------
 1 files changed, 96 insertions(+), 79 deletions(-)

diff --git a/ksrc/arch/x86/patches/adeos-ipipe-2.6.32.7-x86-2.6-01.patch 
b/ksrc/arch/x86/patches/adeos-ipipe-2.6.32.11-x86-2.6-02.patch
similarity index 98%
rename from ksrc/arch/x86/patches/adeos-ipipe-2.6.32.7-x86-2.6-01.patch
rename to ksrc/arch/x86/patches/adeos-ipipe-2.6.32.11-x86-2.6-02.patch
index 11a3740..1ba4ecd 100644
--- a/ksrc/arch/x86/patches/adeos-ipipe-2.6.32.7-x86-2.6-01.patch
+++ b/ksrc/arch/x86/patches/adeos-ipipe-2.6.32.11-x86-2.6-02.patch
@@ -1,5 +1,5 @@
 diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
-index 72ace95..4629709 100644
+index 4fdb669..89b72a9 100644
 --- a/arch/x86/Kconfig
 +++ b/arch/x86/Kconfig
 @@ -480,6 +480,7 @@ config SCHED_OMIT_FRAME_POINTER
@@ -168,7 +168,7 @@ index 0b72282..6574056 100644
  /*
 diff --git a/arch/x86/include/asm/ipipe.h b/arch/x86/include/asm/ipipe.h
 new file mode 100644
-index 0000000..35d21c2
+index 0000000..32b2ece
 --- /dev/null
 +++ b/arch/x86/include/asm/ipipe.h
 @@ -0,0 +1,156 @@
@@ -199,10 +199,10 @@ index 0000000..35d21c2
 +#ifdef CONFIG_IPIPE
 +
 +#ifndef IPIPE_ARCH_STRING
-+#define IPIPE_ARCH_STRING     "2.6-01"
++#define IPIPE_ARCH_STRING     "2.6-02"
 +#define IPIPE_MAJOR_NUMBER    2
 +#define IPIPE_MINOR_NUMBER    6
-+#define IPIPE_PATCH_NUMBER    1
++#define IPIPE_PATCH_NUMBER    2
 +#endif
 +
 +DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
@@ -1234,7 +1234,7 @@ index d8e5d0c..847cc01 100644
  obj-$(CONFIG_HPET_TIMER)      += hpet.o
  
 diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
-index c86dbcf..e027030 100644
+index 0e69e17..47586ca 100644
 --- a/arch/x86/kernel/apic/apic.c
 +++ b/arch/x86/kernel/apic/apic.c
 @@ -446,7 +446,7 @@ static void lapic_timer_setup(enum clock_event_mode mode,
@@ -1293,7 +1293,7 @@ index c86dbcf..e027030 100644
                }
        }
  
-@@ -1737,7 +1741,7 @@ void smp_spurious_interrupt(struct pt_regs *regs)
+@@ -1735,7 +1739,7 @@ void smp_spurious_interrupt(struct pt_regs *regs)
         */
        v = apic_read(APIC_ISR + ((SPURIOUS_APIC_VECTOR & ~0x1f) >> 1));
        if (v & (1 << (SPURIOUS_APIC_VECTOR & 0x1f)))
@@ -1302,7 +1302,7 @@ index c86dbcf..e027030 100644
  
        inc_irq_stat(irq_spurious_count);
  
-@@ -2018,13 +2022,13 @@ static int lapic_suspend(struct sys_device *dev, 
pm_message_t state)
+@@ -2004,13 +2008,13 @@ static int lapic_suspend(struct sys_device *dev, 
pm_message_t state)
                apic_pm_state.apic_thmr = apic_read(APIC_LVTTHMR);
  #endif
  
@@ -1318,7 +1318,7 @@ index c86dbcf..e027030 100644
        return 0;
  }
  
-@@ -2039,7 +2043,7 @@ static int lapic_resume(struct sys_device *dev)
+@@ -2025,7 +2029,7 @@ static int lapic_resume(struct sys_device *dev)
        if (!apic_pm_state.active)
                return 0;
  
@@ -1327,7 +1327,7 @@ index c86dbcf..e027030 100644
        if (intr_remapping_enabled) {
                ioapic_entries = alloc_ioapic_entries();
                if (!ioapic_entries) {
-@@ -2105,7 +2109,7 @@ static int lapic_resume(struct sys_device *dev)
+@@ -2091,7 +2095,7 @@ static int lapic_resume(struct sys_device *dev)
                free_ioapic_entries(ioapic_entries);
        }
  restore:
@@ -1353,7 +1353,7 @@ index 873f81f..aada533 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 dc69f28..d1674f6 100644
+index dc4f486..2ed892b 100644
 --- a/arch/x86/kernel/apic/io_apic.c
 +++ b/arch/x86/kernel/apic/io_apic.c
 @@ -75,8 +75,11 @@
@@ -1410,7 +1410,7 @@ index dc69f28..d1674f6 100644
        spin_unlock_irqrestore(&ioapic_lock, flags);
  }
  
-@@ -2200,6 +2214,7 @@ static unsigned int startup_ioapic_irq(unsigned int irq)
+@@ -2250,6 +2264,7 @@ static unsigned int startup_ioapic_irq(unsigned int irq)
        }
        cfg = irq_cfg(irq);
        __unmask_IO_APIC_irq(cfg);
@@ -1418,7 +1418,7 @@ index dc69f28..d1674f6 100644
        spin_unlock_irqrestore(&ioapic_lock, flags);
  
        return was_pending;
-@@ -2479,23 +2494,61 @@ static void irq_complete_move(struct irq_desc **descp)
+@@ -2529,23 +2544,61 @@ static void irq_complete_move(struct irq_desc **descp)
  static inline void irq_complete_move(struct irq_desc **descp) {}
  #endif
  
@@ -1482,7 +1482,7 @@ index dc69f28..d1674f6 100644
        int do_unmask_irq = 0;
  
        irq_complete_move(&desc);
-@@ -2578,6 +2631,26 @@ static void ack_apic_level(unsigned int irq)
+@@ -2628,6 +2681,26 @@ static void ack_apic_level(unsigned int irq)
                __unmask_and_level_IO_APIC_irq(cfg);
                spin_unlock(&ioapic_lock);
        }
@@ -1509,7 +1509,7 @@ index dc69f28..d1674f6 100644
  }
  
  #ifdef CONFIG_INTR_REMAP
-@@ -2606,14 +2679,14 @@ eoi_ioapic_irq(struct irq_desc *desc)
+@@ -2656,14 +2729,14 @@ eoi_ioapic_irq(struct irq_desc *desc)
  
  static void ir_ack_apic_edge(unsigned int irq)
  {
@@ -1526,7 +1526,7 @@ index dc69f28..d1674f6 100644
        eoi_ioapic_irq(desc);
  }
  #endif /* CONFIG_INTR_REMAP */
-@@ -2627,6 +2700,9 @@ static struct irq_chip ioapic_chip __read_mostly = {
+@@ -2677,6 +2750,9 @@ static struct irq_chip ioapic_chip __read_mostly = {
        .eoi            = ack_apic_level,
  #ifdef CONFIG_SMP
        .set_affinity   = set_ioapic_affinity_irq,
@@ -1536,7 +1536,7 @@ index dc69f28..d1674f6 100644
  #endif
        .retrigger      = ioapic_retrigger_irq,
  };
-@@ -2641,6 +2717,9 @@ static struct irq_chip ir_ioapic_chip __read_mostly = {
+@@ -2691,6 +2767,9 @@ static struct irq_chip ir_ioapic_chip __read_mostly = {
        .eoi            = ir_ack_apic_level,
  #ifdef CONFIG_SMP
        .set_affinity   = set_ir_ioapic_affinity_irq,
@@ -1546,7 +1546,7 @@ index dc69f28..d1674f6 100644
  #endif
  #endif
        .retrigger      = ioapic_retrigger_irq,
-@@ -2686,23 +2765,29 @@ static inline void init_IO_APIC_traps(void)
+@@ -2736,23 +2815,29 @@ static inline void init_IO_APIC_traps(void)
  
  static void mask_lapic_irq(unsigned int irq)
  {
@@ -1579,7 +1579,7 @@ index dc69f28..d1674f6 100644
  }
  
  static struct irq_chip lapic_chip __read_mostly = {
-@@ -2710,6 +2795,9 @@ static struct irq_chip lapic_chip __read_mostly = {
+@@ -2760,6 +2845,9 @@ static struct irq_chip lapic_chip __read_mostly = {
        .mask           = mask_lapic_irq,
        .unmask         = unmask_lapic_irq,
        .ack            = ack_lapic_irq,
@@ -1589,7 +1589,7 @@ index dc69f28..d1674f6 100644
  };
  
  static void lapic_register_intr(int irq, struct irq_desc *desc)
-@@ -2957,6 +3045,10 @@ static inline void __init check_timer(void)
+@@ -3007,6 +3095,10 @@ static inline void __init check_timer(void)
                    "...trying to set up timer as Virtual Wire IRQ...\n");
  
        lapic_register_intr(0, desc);
@@ -1600,7 +1600,7 @@ index dc69f28..d1674f6 100644
        apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector);     /* Fixed mode */
        enable_8259A_irq(0);
  
-@@ -3361,6 +3453,9 @@ static struct irq_chip msi_chip = {
+@@ -3404,6 +3496,9 @@ static struct irq_chip msi_chip = {
        .ack            = ack_apic_edge,
  #ifdef CONFIG_SMP
        .set_affinity   = set_msi_irq_affinity,
@@ -1610,7 +1610,7 @@ index dc69f28..d1674f6 100644
  #endif
        .retrigger      = ioapic_retrigger_irq,
  };
-@@ -3373,6 +3468,9 @@ static struct irq_chip msi_ir_chip = {
+@@ -3416,6 +3511,9 @@ static struct irq_chip msi_ir_chip = {
        .ack            = ir_ack_apic_edge,
  #ifdef CONFIG_SMP
        .set_affinity   = ir_set_msi_irq_affinity,
@@ -1620,7 +1620,7 @@ index dc69f28..d1674f6 100644
  #endif
  #endif
        .retrigger      = ioapic_retrigger_irq,
-@@ -3661,6 +3759,9 @@ static struct irq_chip ht_irq_chip = {
+@@ -3704,6 +3802,9 @@ static struct irq_chip ht_irq_chip = {
        .ack            = ack_apic_edge,
  #ifdef CONFIG_SMP
        .set_affinity   = set_ht_irq_affinity,
@@ -1630,7 +1630,7 @@ index dc69f28..d1674f6 100644
  #endif
        .retrigger      = ioapic_retrigger_irq,
  };
-@@ -4032,6 +4133,14 @@ int acpi_get_override_irq(int bus_irq, int *trigger, 
int *polarity)
+@@ -4075,6 +4176,14 @@ int acpi_get_override_irq(int bus_irq, int *trigger, 
int *polarity)
        return 0;
  }
  
@@ -4120,7 +4120,7 @@ index 40f3077..e3604ee 100644
  }
  
 diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c
-index 5284cd2..52fc9c1 100644
+index d0ba107..b624d46 100644
 --- a/arch/x86/kernel/process.c
 +++ b/arch/x86/kernel/process.c
 @@ -35,7 +35,15 @@ int arch_dup_task_struct(struct task_struct *dst, struct 
task_struct *src)
@@ -4150,7 +4150,7 @@ index 5284cd2..52fc9c1 100644
  }
  
  /*
-@@ -321,7 +333,7 @@ EXPORT_SYMBOL(default_idle);
+@@ -309,7 +321,7 @@ EXPORT_SYMBOL(default_idle);
  
  void stop_this_cpu(void *dummy)
  {
@@ -4159,7 +4159,7 @@ index 5284cd2..52fc9c1 100644
        /*
         * Remove this CPU:
         */
-@@ -530,6 +542,11 @@ static void c1e_idle(void)
+@@ -534,6 +546,11 @@ static void c1e_idle(void)
  
  void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c)
  {
@@ -4171,7 +4171,7 @@ index 5284cd2..52fc9c1 100644
  #ifdef CONFIG_SMP
        if (pm_idle == poll_idle && smp_num_siblings > 1) {
                printk(KERN_WARNING "WARNING: polling idle and HT enabled,"
-@@ -539,7 +556,7 @@ void __cpuinit select_idle_routine(const struct 
cpuinfo_x86 *c)
+@@ -543,7 +560,7 @@ void __cpuinit select_idle_routine(const struct 
cpuinfo_x86 *c)
        if (pm_idle)
                return;
  
@@ -4207,7 +4207,7 @@ index 4cf7956..fff349c 100644
        bool preload_fpu;
  
 diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
-index eb62cbc..5252a84 100644
+index 6eabe90..e96b01d 100644
 --- a/arch/x86/kernel/process_64.c
 +++ b/arch/x86/kernel/process_64.c
 @@ -58,6 +58,8 @@ asmlinkage extern void ret_from_fork(void);
@@ -4266,7 +4266,7 @@ index ec1de97..a3f5bd6 100644
  
  /*
 diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
-index 565ebc6..bdc55d7 100644
+index 28e963d..9eee566 100644
 --- a/arch/x86/kernel/smpboot.c
 +++ b/arch/x86/kernel/smpboot.c
 @@ -266,7 +266,7 @@ static void __cpuinit smp_callin(void)
@@ -4413,7 +4413,7 @@ index bf9a7d5..98609ae 100644
        CFI_STARTPROC
        SAVE_ARGS
 diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
-index f4cee90..f7b6ec2 100644
+index f4cee90..d678a7c 100644
 --- a/arch/x86/mm/fault.c
 +++ b/arch/x86/mm/fault.c
 @@ -1,3 +1,4 @@
@@ -4522,16 +4522,17 @@ index f4cee90..f7b6ec2 100644
  static const char errata93_warning[] =
  KERN_ERR 
  "******* Your BIOS seems to not contain a fix for K8 errata #93\n"
-@@ -958,6 +964,8 @@ do_page_fault(struct pt_regs *regs, unsigned long 
error_code)
+@@ -958,6 +964,9 @@ do_page_fault(struct pt_regs *regs, unsigned long 
error_code)
        /* Get the faulting address: */
        address = read_cr2();
  
-+      local_irq_enable_hw_cond();
++      if (!__ipipe_pipeline_head_p(ipipe_root_domain))
++              local_irq_enable_hw_cond();
 +
        /*
         * Detect and handle instructions that would cause a page fault for
         * both a tracked kernel page and a userspace page.
-@@ -1137,3 +1145,43 @@ good_area:
+@@ -1137,3 +1146,43 @@ good_area:
  
        up_read(&mm->mmap_sem);
  }
@@ -4619,10 +4620,10 @@ index 737a1c4..15e81de 100644
  struct ht_irq_cfg {
        struct pci_dev *dev;
 diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
-index 807042b..b5babf8 100644
+index 5ed1b82..d57ad7d 100644
 --- a/drivers/serial/8250.c
 +++ b/drivers/serial/8250.c
-@@ -3015,6 +3015,51 @@ static int serial8250_resume(struct platform_device 
*dev)
+@@ -3016,6 +3016,53 @@ static int serial8250_resume(struct platform_device 
*dev)
        return 0;
  }
  
@@ -4669,16 +4670,18 @@ index 807042b..b5babf8 100644
 +        local_irq_restore_hw(flags);
 +}
 +
++EXPORT_SYMBOL(__ipipe_serial_debug);
++
 +#endif
 +
  static struct platform_driver serial8250_isa_driver = {
        .probe          = serial8250_probe,
        .remove         = __devexit_p(serial8250_remove),
 diff --git a/fs/exec.c b/fs/exec.c
-index ba112bd..b60b2a9 100644
+index a2a3944..0708ae7 100644
 --- a/fs/exec.c
 +++ b/fs/exec.c
-@@ -699,6 +699,7 @@ static int exec_mmap(struct mm_struct *mm)
+@@ -715,6 +715,7 @@ static int exec_mmap(struct mm_struct *mm)
  {
        struct task_struct *tsk;
        struct mm_struct * old_mm, *active_mm;
@@ -4686,7 +4689,7 @@ index ba112bd..b60b2a9 100644
  
        /* Notify parent that we're no longer interested in the old VM */
        tsk = current;
-@@ -721,8 +722,10 @@ static int exec_mmap(struct mm_struct *mm)
+@@ -737,8 +738,10 @@ static int exec_mmap(struct mm_struct *mm)
        task_lock(tsk);
        active_mm = tsk->active_mm;
        tsk->mm = mm;
@@ -4890,10 +4893,10 @@ index 6d527ee..c997ef1 100644
  #endif /* LINUX_HARDIRQ_H */
 diff --git a/include/linux/ipipe.h b/include/linux/ipipe.h
 new file mode 100644
-index 0000000..a20d4aa
+index 0000000..b7f81be
 --- /dev/null
 +++ b/include/linux/ipipe.h
-@@ -0,0 +1,685 @@
+@@ -0,0 +1,688 @@
 +/* -*- linux-c -*-
 + * include/linux/ipipe.h
 + *
@@ -5085,6 +5088,8 @@ index 0000000..a20d4aa
 +
 +/* Private interface */
 +
++void ipipe_init_early(void);
++
 +void ipipe_init(void);
 +
 +#ifdef CONFIG_PROC_FS
@@ -5532,6 +5537,7 @@ index 0000000..a20d4aa
 +
 +#else /* !CONFIG_IPIPE */
 +
++#define ipipe_init_early()            do { } while(0)
 +#define ipipe_init()                  do { } while(0)
 +#define ipipe_suspend_domain()                do { } while(0)
 +#define ipipe_sigwake_notify(p)               do { } while(0)
@@ -6151,7 +6157,7 @@ index 0000000..627b354
 +
 +#endif        /* !__LINUX_IPIPE_TRACE_H */
 diff --git a/include/linux/irq.h b/include/linux/irq.h
-index ae9653d..23e446a 100644
+index 9e5f45a..85642bc 100644
 --- a/include/linux/irq.h
 +++ b/include/linux/irq.h
 @@ -124,6 +124,9 @@ struct irq_chip {
@@ -6251,7 +6257,7 @@ index 72b1a10..80553be 100644
  
  #define inc_preempt_count() add_preempt_count(1)
 diff --git a/include/linux/sched.h b/include/linux/sched.h
-index 0f67914..081f24d 100644
+index 70abfd3..efecc7a 100644
 --- a/include/linux/sched.h
 +++ b/include/linux/sched.h
 @@ -61,6 +61,7 @@ struct sched_param {
@@ -6313,7 +6319,7 @@ index 0f67914..081f24d 100644
  
  #define MMF_INIT_MASK         (MMF_DUMPABLE_MASK | MMF_DUMP_FILTER_MASK)
  
-@@ -1493,6 +1513,9 @@ struct task_struct {
+@@ -1496,6 +1516,9 @@ struct task_struct {
  #endif
        atomic_t fs_excl;       /* holding fs exclusive resources */
        struct rcu_head rcu;
@@ -6323,7 +6329,7 @@ index 0f67914..081f24d 100644
  
        /*
         * cache last used pipe for splice
-@@ -1733,6 +1756,11 @@ extern cputime_t task_gtime(struct task_struct *p);
+@@ -1736,6 +1759,11 @@ extern cputime_t task_gtime(struct task_struct *p);
  #define PF_EXITING    0x00000004      /* getting shut down */
  #define PF_EXITPIDONE 0x00000008      /* pi exit done on shut down */
  #define PF_VCPU               0x00000010      /* I'm a virtual CPU */
@@ -6459,10 +6465,10 @@ index eb4b337..a73e078 100644
          Append an extra string to the end of your kernel version.
          This will show up when you type uname, for example.
 diff --git a/init/main.c b/init/main.c
-index 4051d75..604145a 100644
+index bc109c7..4672e7d 100644
 --- a/init/main.c
 +++ b/init/main.c
-@@ -535,7 +535,7 @@ asmlinkage void __init start_kernel(void)
+@@ -530,7 +530,7 @@ asmlinkage void __init start_kernel(void)
  
        cgroup_init_early();
  
@@ -6471,7 +6477,15 @@ index 4051d75..604145a 100644
        early_boot_irqs_off();
        early_init_irq_lock_class();
  
-@@ -598,6 +598,11 @@ asmlinkage void __init start_kernel(void)
+@@ -565,6 +565,7 @@ asmlinkage void __init start_kernel(void)
+       pidhash_init();
+       vfs_caches_init_early();
+       sort_main_extable();
++      ipipe_init_early();
+       trap_init();
+       mm_init();
+       /*
+@@ -593,6 +594,11 @@ asmlinkage void __init start_kernel(void)
        softirq_init();
        timekeeping_init();
        time_init();
@@ -6483,7 +6497,7 @@ index 4051d75..604145a 100644
        profile_init();
        if (!irqs_disabled())
                printk(KERN_CRIT "start_kernel(): bug: interrupts were "
-@@ -779,6 +784,7 @@ static void __init do_basic_setup(void)
+@@ -774,6 +780,7 @@ static void __init do_basic_setup(void)
        init_tmpfs();
        driver_init();
        init_irq_proc();
@@ -6716,10 +6730,10 @@ index 0000000..6257dfa
 +obj-$(CONFIG_IPIPE_TRACE) += tracer.o
 diff --git a/kernel/ipipe/core.c b/kernel/ipipe/core.c
 new file mode 100644
-index 0000000..88c7c81
+index 0000000..63deaf9
 --- /dev/null
 +++ b/kernel/ipipe/core.c
-@@ -0,0 +1,1951 @@
+@@ -0,0 +1,1954 @@
 +/* -*- linux-c -*-
 + * linux/kernel/ipipe/core.c
 + *
@@ -6927,15 +6941,15 @@ index 0000000..88c7c81
 +
 +#endif /* CONFIG_GENERIC_CLOCKEVENTS */
 +
-+/*
-+ * ipipe_init() -- Initialization routine of the IPIPE layer. Called
-+ * by the host kernel early during the boot procedure.
-+ */
-+void __init ipipe_init(void)
++void __init ipipe_init_early(void)
 +{
 +      struct ipipe_domain *ipd = &ipipe_root;
 +
-+      __ipipe_check_platform();       /* Do platform dependent checks first. 
*/
++      /*
++       * Do the early init stuff. At this point, the kernel does not
++       * provide much services yet: be careful.
++       */
++      __ipipe_check_platform(); /* Do platform dependent checks first. */
 +
 +      /*
 +       * A lightweight registration code for the root domain. We are
@@ -6953,7 +6967,6 @@ index 0000000..88c7c81
 +
 +      __ipipe_init_stage(ipd);
 +
-+      INIT_LIST_HEAD(&ipd->p_link);
 +      list_add_tail(&ipd->p_link, &__ipipe_pipeline);
 +
 +      __ipipe_init_platform();
@@ -6965,7 +6978,11 @@ index 0000000..88c7c81
 +      ipd->irqs[__ipipe_printk_virq].acknowledge = NULL;
 +      ipd->irqs[__ipipe_printk_virq].control = IPIPE_HANDLE_MASK;
 +#endif /* CONFIG_PRINTK */
++}
 +
++void __init ipipe_init(void)
++{
++      /* Now we may engage the pipeline. */
 +      __ipipe_enable_pipeline();
 +
 +      printk(KERN_INFO "I-pipe %s: pipeline enabled.\n",
@@ -10119,7 +10136,7 @@ index 0000000..d3c1866
 +#endif /* CONFIG_IPIPE_TRACE_MCOUNT */
 +}
 diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
-index c166019..5e045ab 100644
+index e570d19..7cebb6f 100644
 --- a/kernel/irq/chip.c
 +++ b/kernel/irq/chip.c
 @@ -15,6 +15,7 @@
@@ -10130,7 +10147,7 @@ index c166019..5e045ab 100644
  
  #include "internals.h"
  
-@@ -425,7 +426,9 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)
+@@ -459,7 +460,9 @@ handle_level_irq(unsigned int irq, struct irq_desc *desc)
        irqreturn_t action_ret;
  
        spin_lock(&desc->lock);
@@ -10140,7 +10157,7 @@ index c166019..5e045ab 100644
  
        if (unlikely(desc->status & IRQ_INPROGRESS))
                goto out_unlock;
-@@ -505,8 +508,13 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc 
*desc)
+@@ -539,8 +542,13 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc 
*desc)
  
        spin_lock(&desc->lock);
        desc->status &= ~IRQ_INPROGRESS;
@@ -10154,7 +10171,7 @@ index c166019..5e045ab 100644
  
        spin_unlock(&desc->lock);
  }
-@@ -548,8 +556,10 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
+@@ -582,8 +590,10 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
        kstat_incr_irqs_this_cpu(irq, desc);
  
        /* Start handling the irq */
@@ -10165,7 +10182,7 @@ index c166019..5e045ab 100644
  
        /* Mark the IRQ currently in progress.*/
        desc->status |= IRQ_INPROGRESS;
-@@ -603,8 +613,10 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
+@@ -637,8 +647,10 @@ handle_percpu_irq(unsigned int irq, struct irq_desc *desc)
  
        kstat_incr_irqs_this_cpu(irq, desc);
  
@@ -10176,7 +10193,7 @@ index c166019..5e045ab 100644
  
        action_ret = handle_IRQ_event(irq, desc->action);
        if (!noirqdebug)
-@@ -614,6 +626,134 @@ handle_percpu_irq(unsigned int irq, struct irq_desc 
*desc)
+@@ -648,6 +660,134 @@ handle_percpu_irq(unsigned int irq, struct irq_desc 
*desc)
                desc->chip->eoi(irq);
  }
  
@@ -10311,7 +10328,7 @@ index c166019..5e045ab 100644
  void
  __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained,
                  const char *name)
-@@ -645,6 +785,8 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t 
handle, int is_chained,
+@@ -679,6 +819,8 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t 
handle, int is_chained,
        chip_bus_lock(irq, desc);
        spin_lock_irqsave(&desc->lock, flags);
  
@@ -10572,7 +10589,7 @@ index f38b07f..f3f0057 100644
  /* cpu currently holding logbuf_lock */
  static volatile unsigned int printk_cpu = UINT_MAX;
 diff --git a/kernel/sched.c b/kernel/sched.c
-index 60d74cc..b5ce482 100644
+index ed61192..83937d6 100644
 --- a/kernel/sched.c
 +++ b/kernel/sched.c
 @@ -2344,6 +2344,7 @@ static int try_to_wake_up(struct task_struct *p, 
unsigned int state,
@@ -10635,7 +10652,7 @@ index 60d74cc..b5ce482 100644
  }
  
  /*
-@@ -5279,6 +5295,7 @@ notrace unsigned long get_parent_ip(unsigned long addr)
+@@ -5300,6 +5316,7 @@ notrace unsigned long get_parent_ip(unsigned long addr)
  
  void __kprobes add_preempt_count(int val)
  {
@@ -10643,7 +10660,7 @@ index 60d74cc..b5ce482 100644
  #ifdef CONFIG_DEBUG_PREEMPT
        /*
         * Underflow?
-@@ -5301,6 +5318,7 @@ EXPORT_SYMBOL(add_preempt_count);
+@@ -5322,6 +5339,7 @@ EXPORT_SYMBOL(add_preempt_count);
  
  void __kprobes sub_preempt_count(int val)
  {
@@ -10651,7 +10668,7 @@ index 60d74cc..b5ce482 100644
  #ifdef CONFIG_DEBUG_PREEMPT
        /*
         * Underflow?
-@@ -5349,6 +5367,7 @@ static noinline void __schedule_bug(struct task_struct 
*prev)
+@@ -5370,6 +5388,7 @@ static noinline void __schedule_bug(struct task_struct 
*prev)
   */
  static inline void schedule_debug(struct task_struct *prev)
  {
@@ -10659,7 +10676,7 @@ index 60d74cc..b5ce482 100644
        /*
         * Test if we are atomic. Since do_exit() needs to call into
         * schedule() atomically, we ignore that path for now.
-@@ -5427,7 +5446,7 @@ pick_next_task(struct rq *rq)
+@@ -5448,7 +5467,7 @@ pick_next_task(struct rq *rq)
  /*
   * schedule() is the main scheduler function.
   */
@@ -10668,7 +10685,7 @@ index 60d74cc..b5ce482 100644
  {
        struct task_struct *prev, *next;
        unsigned long *switch_count;
-@@ -5441,6 +5460,9 @@ need_resched:
+@@ -5462,6 +5481,9 @@ need_resched:
        rcu_sched_qs(cpu);
        prev = rq->curr;
        switch_count = &prev->nivcsw;
@@ -10678,7 +10695,7 @@ index 60d74cc..b5ce482 100644
  
        release_kernel_lock(prev);
  need_resched_nonpreemptible:
-@@ -5478,15 +5500,18 @@ need_resched_nonpreemptible:
+@@ -5499,15 +5521,18 @@ need_resched_nonpreemptible:
                rq->curr = next;
                ++*switch_count;
  
@@ -10699,7 +10716,7 @@ index 60d74cc..b5ce482 100644
  
        post_schedule(rq);
  
-@@ -5496,6 +5521,8 @@ need_resched_nonpreemptible:
+@@ -5517,6 +5542,8 @@ need_resched_nonpreemptible:
        preempt_enable_no_resched();
        if (need_resched())
                goto need_resched;
@@ -10708,7 +10725,7 @@ index 60d74cc..b5ce482 100644
  }
  EXPORT_SYMBOL(schedule);
  
-@@ -5579,7 +5606,8 @@ asmlinkage void __sched preempt_schedule(void)
+@@ -5600,7 +5627,8 @@ asmlinkage void __sched preempt_schedule(void)
  
        do {
                add_preempt_count(PREEMPT_ACTIVE);
@@ -10718,15 +10735,15 @@ index 60d74cc..b5ce482 100644
                sub_preempt_count(PREEMPT_ACTIVE);
  
                /*
-@@ -6348,6 +6376,7 @@ recheck:
- 
+@@ -6371,6 +6399,7 @@ recheck:
        oldprio = p->prio;
+       prev_class = p->sched_class;
        __setscheduler(rq, p, policy, param->sched_priority);
 +      ipipe_setsched_notify(p);
  
        if (running)
                p->sched_class->set_curr_task(rq);
-@@ -6995,6 +7024,7 @@ void __cpuinit init_idle(struct task_struct *idle, int 
cpu)
+@@ -7018,6 +7047,7 @@ void __cpuinit init_idle(struct task_struct *idle, int 
cpu)
  #else
        task_thread_info(idle)->preempt_count = 0;
  #endif
@@ -10734,7 +10751,7 @@ index 60d74cc..b5ce482 100644
        /*
         * The idle tasks have their own, simple scheduling class:
         */
-@@ -10935,3 +10965,64 @@ void synchronize_sched_expedited(void)
+@@ -10958,3 +10988,64 @@ void synchronize_sched_expedited(void)
  EXPORT_SYMBOL_GPL(synchronize_sched_expedited);
  
  #endif /* #else #ifndef CONFIG_SMP */
@@ -10903,7 +10920,7 @@ index 5db5a8d..1b45eb9 100644
   * This function runs timers and the timer-tq in bottom half context.
   */
 diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
-index 6dc4e5e..7252373 100644
+index 0cccb6c..eaba13e 100644
 --- a/kernel/trace/ftrace.c
 +++ b/kernel/trace/ftrace.c
 @@ -28,6 +28,7 @@
@@ -11334,7 +11351,7 @@ index ded9081..cb2ac0e 100644
  
        if (active_mm != mm)
 diff --git a/mm/vmalloc.c b/mm/vmalloc.c
-index a3a99d3..29cedb6 100644
+index c228731..4da3110 100644
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
 @@ -172,6 +172,8 @@ static int vmap_page_range_noflush(unsigned long start, 
unsigned long end,


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to