]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge branches 'x86/apic', 'x86/asm', 'x86/fixmap', 'x86/memtest', 'x86/mm', 'x86...
authorIngo Molnar <mingo@elte.hu>
Tue, 10 Mar 2009 08:26:38 +0000 (09:26 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 10 Mar 2009 08:26:38 +0000 (09:26 +0100)
1  2  3  4  5  6  7  8 
arch/blackfin/kernel/irqchip.c
arch/x86/mm/ioremap.c
kernel/softirq.c

index 23e9aa080710f095e3389b74892c2b6933dbdbda,23e9aa080710f095e3389b74892c2b6933dbdbda,23e9aa080710f095e3389b74892c2b6933dbdbda,23e9aa080710f095e3389b74892c2b6933dbdbda,23e9aa080710f095e3389b74892c2b6933dbdbda,75724eee6494c65c87545e14682f8cfe213877dd,7fd12656484666ee4c29784a1d2d1e0e4e5fee04,23e9aa080710f095e3389b74892c2b6933dbdbda..1ab5b532ec724c97e02dc1f71282aa9918d9a83f
@@@@@@@@@ -70,11 -70,11 -70,11 -70,11 -70,11 -70,6 -70,6 -70,11 +70,11 @@@@@@@@@ static struct irq_desc bad_irq_desc = 
        #endif
        };
        
     ++ #ifdef CONFIG_CPUMASK_OFFSTACK
     ++ /* We are not allocating a variable-sized bad_irq_desc.affinity */
     ++ #error "Blackfin architecture does not support CONFIG_CPUMASK_OFFSTACK."
     ++ #endif
     ++ 
        int show_interrupts(struct seq_file *p, void *v)
        {
                int i = *(loff_t *) v, j;
@@@@@@@@@ -149,11 -149,11 -149,11 -149,11 -149,11 -144,11 -144,15 -149,11 +149,15 @@@@@@@@@ asmlinkage void asm_do_IRQ(unsigned in
        #endif
                generic_handle_irq(irq);
        
------ -#ifndef CONFIG_IPIPE    /* Useless and bugous over the I-pipe: IRQs are threaded. */
------ -        /* If we're the only interrupt running (ignoring IRQ15 which is for
------ -           syscalls), lower our priority to IRQ14 so that softirqs run at
------ -           that level.  If there's another, lower-level interrupt, irq_exit
------ -           will defer softirqs to that.  */
++++++ +#ifndef CONFIG_IPIPE
++++++ +        /*
++++++ +         * If we're the only interrupt running (ignoring IRQ15 which
++++++ +         * is for syscalls), lower our priority to IRQ14 so that
++++++ +         * softirqs run at that level.  If there's another,
++++++ +         * lower-level interrupt, irq_exit will defer softirqs to
++++++ +         * that. If the interrupt pipeline is enabled, we are already
++++++ +         * running at IRQ14 priority, so we don't need this code.
++++++ +         */
                CSYNC();
                pending = bfin_read_IPEND() & ~0x8000;
                other_ints = pending & (pending - 1);
diff --combined arch/x86/mm/ioremap.c
index 62773abdf088f589503a539ed8423b81bc16dfa8,62773abdf088f589503a539ed8423b81bc16dfa8,96786ef2c9a9d4247942cfb6b0f71014e7d5497c,62773abdf088f589503a539ed8423b81bc16dfa8,62def57957308fe60556e33c8dc92016e435f32d,f45d5e29a72edf4e15616d48c0d174f7905ac417,f45d5e29a72edf4e15616d48c0d174f7905ac417,433f7bd4648af4206fbc4afb0b2fd6b6dab59b6e..aca924a30ee6da36146acf1d86da367df04e7cc1
@@@@@@@@@ -38,7 -38,7 -38,7 -38,7 -38,7 -38,8 -38,8 -38,8 +38,7 @@@@@@@@@ unsigned long __phys_addr(unsigned lon
                } else {
                        VIRTUAL_BUG_ON(x < PAGE_OFFSET);
                        x -= PAGE_OFFSET;
     ---                VIRTUAL_BUG_ON(system_state == SYSTEM_BOOTING ? x > MAXMEM :
     ---                                        !phys_addr_valid(x));
     +++                VIRTUAL_BUG_ON(!phys_addr_valid(x));
                }
                return x;
        }
@@@@@@@@@ -55,8 -55,8 -55,8 -55,8 -55,8 -56,10 -56,10 -56,10 +55,8 @@@@@@@@@ bool __virt_addr_valid(unsigned long x
                        if (x < PAGE_OFFSET)
                                return false;
                        x -= PAGE_OFFSET;
     ---                if (system_state == SYSTEM_BOOTING ?
     ---                                x > MAXMEM : !phys_addr_valid(x)) {
     +++                if (!phys_addr_valid(x))
                                return false;
     ---                }
                }
        
                return pfn_valid(x >> PAGE_SHIFT);
@@@@@@@@@ -73,9 -73,9 -73,9 -73,9 -73,9 -76,10 -76,10 -76,10 +73,9 @@@@@@@@@ static inline int phys_addr_valid(unsig
        #ifdef CONFIG_DEBUG_VIRTUAL
        unsigned long __phys_addr(unsigned long x)
        {
     ---        /* VMALLOC_* aren't constants; not available at the boot time */
     +++        /* VMALLOC_* aren't constants  */
                VIRTUAL_BUG_ON(x < PAGE_OFFSET);
     ---        VIRTUAL_BUG_ON(system_state != SYSTEM_BOOTING &&
     ---                is_vmalloc_addr((void *) x));
     +++        VIRTUAL_BUG_ON(__vmalloc_start_set && is_vmalloc_addr((void *) x));
                return x - PAGE_OFFSET;
        }
        EXPORT_SYMBOL(__phys_addr);
@@@@@@@@@ -85,8 -85,8 -85,8 -85,8 -85,10 -89,8 -89,8 -89,8 +85,10 @@@@@@@@@ bool __virt_addr_valid(unsigned long x
        {
                if (x < PAGE_OFFSET)
                        return false;
     ---        if (system_state != SYSTEM_BOOTING && is_vmalloc_addr((void *) x))
     +++        if (__vmalloc_start_set && is_vmalloc_addr((void *) x))
     +++                return false;
++++ +++        if (x >= FIXADDR_START)
++++                    return false;
                return pfn_valid((x - PAGE_OFFSET) >> PAGE_SHIFT);
        }
        EXPORT_SYMBOL(__virt_addr_valid);
@@@@@@@@@ -344,7 -344,7 -344,7 -344,7 -346,7 -348,7 -348,7 -348,7 +346,7 @@@@@@@@@ EXPORT_SYMBOL(ioremap_nocache)
         *
         * Must be freed with iounmap.
         */
     -- void __iomem *ioremap_wc(unsigned long phys_addr, unsigned long size)
     ++ void __iomem *ioremap_wc(resource_size_t phys_addr, unsigned long size)
        {
                if (pat_enabled)
                        return __ioremap_caller(phys_addr, size, _PAGE_CACHE_WC,
@@@@@@@@@ -504,13 -504,13 -504,19 -504,13 -506,13 -508,13 -508,13 -508,13 +506,19 @@@@@@@@@ static inline pte_t * __init early_iore
                return &bm_pte[pte_index(addr)];
        }
        
++ +++++static unsigned long slot_virt[FIX_BTMAPS_SLOTS] __initdata;
++ +++++
        void __init early_ioremap_init(void)
        {
                pmd_t *pmd;
++ +++++        int i;
        
                if (early_ioremap_debug)
                        printk(KERN_INFO "early_ioremap_init()\n");
        
++ +++++        for (i = 0; i < FIX_BTMAPS_SLOTS; i++)
++ +++++                slot_virt[i] = fix_to_virt(FIX_BTMAP_BEGIN - NR_FIX_BTMAPS*i);
++ +++++
                pmd = early_ioremap_pmd(fix_to_virt(FIX_BTMAP_BEGIN));
                memset(bm_pte, 0, sizeof(bm_pte));
                pmd_populate_kernel(&init_mm, pmd, bm_pte);
@@@@@@@@@ -577,6 -577,6 -583,7 -577,6 -579,6 -581,6 -581,6 -581,6 +585,7 @@@@@@@@@ static inline void __init early_clear_f
        
        static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata;
        static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata;
++ +++++
        static int __init check_early_ioremap_leak(void)
        {
                int count = 0;
        }
        late_initcall(check_early_ioremap_leak);
        
-- -----static void __init __iomem *__early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
++ +++++static void __init __iomem *
++ +++++__early_ioremap(unsigned long phys_addr, unsigned long size, pgprot_t prot)
        {
                unsigned long offset, last_addr;
                unsigned int nrpages;
                        --nrpages;
                }
                if (early_ioremap_debug)
-- -----                printk(KERN_CONT "%08lx + %08lx\n", offset, fix_to_virt(idx0));
++ +++++                printk(KERN_CONT "%08lx + %08lx\n", offset, slot_virt[slot]);
        
-- -----        prev_map[slot] = (void __iomem *)(offset + fix_to_virt(idx0));
++ +++++        prev_map[slot] = (void __iomem *)(offset + slot_virt[slot]);
                return prev_map[slot];
        }
        
@@@@@@@@@ -734,8 -734,8 -742,3 -734,8 -736,8 -738,8 -738,8 -738,8 +744,3 @@@@@@@@@ void __init early_iounmap(void __iomem 
                }
                prev_map[slot] = NULL;
        }
-- -----
-- -----void __this_fixmap_does_not_exist(void)
-- -----{
-- -----        WARN_ON(1);
-- -----}
diff --combined kernel/softirq.c
index 0365b4899a3d37e17c9f7fe4042e7ed3b4d0617b,0365b4899a3d37e17c9f7fe4042e7ed3b4d0617b,0365b4899a3d37e17c9f7fe4042e7ed3b4d0617b,0365b4899a3d37e17c9f7fe4042e7ed3b4d0617b,0365b4899a3d37e17c9f7fe4042e7ed3b4d0617b,bdbe9de9cd8d7091771201f232747bf30a83e467,9041ea7948feffbf887ed92fb8ce1e73ad55c81c,0365b4899a3d37e17c9f7fe4042e7ed3b4d0617b..57d3f67f6f38af7fdfb0fad66ff1cdbef790951e
@@@@@@@@@ -626,6 -626,6 -626,6 -626,6 -626,6 -626,6 -626,7 -626,6 +626,7 @@@@@@@@@ static int ksoftirqd(void * __bind_cpu
                                preempt_enable_no_resched();
                                cond_resched();
                                preempt_disable();
++++++ +                        rcu_qsctr_inc((long)__bind_cpu);
                        }
                        preempt_enable();
                        set_current_state(TASK_INTERRUPTIBLE);
@@@@@@@@@ -795,11 -795,11 -795,11 -795,11 -795,11 -795,6 -796,6 -795,11 +796,11 @@@@@@@@@ int __init __weak early_irq_init(void
                return 0;
        }
        
     ++ int __init __weak arch_probe_nr_irqs(void)
     ++ {
     ++         return 0;
     ++ }
     ++ 
        int __init __weak arch_early_irq_init(void)
        {
                return 0;