]> git.openfabrics.org - ~shefty/rdma-dev.git/commitdiff
Merge branch 'x86-olpc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 18:15:12 +0000 (10:15 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Jan 2011 18:15:12 +0000 (10:15 -0800)
* 'x86-olpc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86, olpc: Speed up device tree creation during boot
  x86, olpc: Add OLPC device-tree support
  x86, of: Define irq functions to allow drivers/of/* to build on x86

1  2 
arch/x86/Kconfig
arch/x86/include/asm/irq.h
arch/x86/kernel/irq.c
arch/x86/mm/init_32.c

diff --combined arch/x86/Kconfig
index 6e15fa9455e0cc964e9612f6f336f6a5b06f380c,ef34031a83397b902c7e08f1bb89b435955a31f1..36ed2e2c896b47d9b6982f515046b768fa995a86
@@@ -51,7 -51,6 +51,7 @@@ config X8
        select HAVE_KERNEL_GZIP
        select HAVE_KERNEL_BZIP2
        select HAVE_KERNEL_LZMA
 +      select HAVE_KERNEL_XZ
        select HAVE_KERNEL_LZO
        select HAVE_HW_BREAKPOINT
        select HAVE_MIXED_BREAKPOINTS_REGS
@@@ -66,7 -65,6 +66,7 @@@
        select HAVE_SPARSE_IRQ
        select GENERIC_IRQ_PROBE
        select GENERIC_PENDING_IRQ if SMP
 +      select USE_GENERIC_SMP_HELPERS if SMP
  
  config INSTRUCTION_DECODER
        def_bool (KPROBES || PERF_EVENTS)
@@@ -205,6 -203,10 +205,6 @@@ config HAVE_INTEL_TX
        def_bool y
        depends on EXPERIMENTAL && DMAR && ACPI
  
 -config USE_GENERIC_SMP_HELPERS
 -      def_bool y
 -      depends on SMP
 -
  config X86_32_SMP
        def_bool y
        depends on X86_32 && SMP
@@@ -375,18 -377,6 +375,18 @@@ config X86_ELA
  
          If unsure, choose "PC-compatible" instead.
  
 +config X86_INTEL_CE
 +      bool "CE4100 TV platform"
 +      depends on PCI
 +      depends on PCI_GODIRECT
 +      depends on X86_32
 +      depends on X86_EXTENDED_PLATFORM
 +      select X86_REBOOTFIXUPS
 +      ---help---
 +        Select for the Intel CE media processor (CE4100) SOC.
 +        This option compiles in support for the CE4100 SOC for settop
 +        boxes and media devices.
 +
  config X86_MRST
         bool "Moorestown MID platform"
        depends on PCI
        depends on X86_EXTENDED_PLATFORM
        depends on X86_IO_APIC
        select APB_TIMER
 +      select I2C
 +      select SPI
 +      select INTEL_SCU_IPC
 +      select X86_PLATFORM_DEVICES
        ---help---
          Moorestown is Intel's Low Power Intel Architecture (LPIA) based Moblin
          Internet Device(MID) platform. Moorestown consists of two chips:
@@@ -480,19 -466,6 +480,19 @@@ config X86_ES700
          Support for Unisys ES7000 systems.  Say 'Y' here if this kernel is
          supposed to run on an IA32-based Unisys ES7000 system.
  
 +config X86_32_IRIS
 +      tristate "Eurobraille/Iris poweroff module"
 +      depends on X86_32
 +      ---help---
 +        The Iris machines from EuroBraille do not have APM or ACPI support
 +        to shut themselves down properly.  A special I/O sequence is
 +        needed to do so, which is what this module does at
 +        kernel shutdown.
 +
 +        This is only for Iris machines from EuroBraille.
 +
 +        If unused, say N.
 +
  config SCHED_OMIT_FRAME_POINTER
        def_bool y
        prompt "Single-depth WCHAN output"
@@@ -1168,16 -1141,16 +1168,16 @@@ config NUM
  comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI"
        depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)
  
 -config K8_NUMA
 +config AMD_NUMA
        def_bool y
        prompt "Old style AMD Opteron NUMA detection"
        depends on X86_64 && NUMA && PCI
        ---help---
 -        Enable K8 NUMA node topology detection.  You should say Y here if
 -        you have a multi processor AMD K8 system. This uses an old
 -        method to read the NUMA configuration directly from the builtin
 -        Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA
 -        instead, which also takes priority if both are compiled in.
 +        Enable AMD NUMA node topology detection.  You should say Y here if
 +        you have a multi processor AMD system. This uses an old method to
 +        read the NUMA configuration directly from the builtin Northbridge
 +        of Opteron. It is recommended to use X86_64_ACPI_NUMA instead,
 +        which also takes priority if both are compiled in.
  
  config X86_64_ACPI_NUMA
        def_bool y
@@@ -2076,11 -2049,17 +2076,17 @@@ config OLPC_OPENFIRMWAR
        bool "Support for OLPC's Open Firmware"
        depends on !X86_64 && !X86_PAE
        default n
+       select OF
        help
          This option adds support for the implementation of Open Firmware
          that is used on the OLPC XO-1 Children's Machine.
          If unsure, say N here.
  
+ config OLPC_OPENFIRMWARE_DT
+       bool
+       default y if OLPC_OPENFIRMWARE && PROC_DEVICETREE
+       select OF_PROMTREE
  endif # X86_32
  
  config AMD_NB
index ba870bb6dd8ef30ab81a317a8eb43dcb83066630,8d2c6717a5c34d3c1c756fea5489910a03c390e8..c704b38c57a244b0067df81118b7cb2a344e1f27
  #include <asm/apicdef.h>
  #include <asm/irq_vectors.h>
  
+ /* Even though we don't support this, supply it to appease OF */
+ static inline void irq_dispose_mapping(unsigned int virq) { }
  static inline int irq_canonicalize(int irq)
  {
        return ((irq == 2) ? 9 : irq);
  }
  
 -#ifdef CONFIG_X86_LOCAL_APIC
 -# define ARCH_HAS_NMI_WATCHDOG
 -#endif
 -
  #ifdef CONFIG_X86_32
  extern void irq_ctx_init(int cpu);
  #else
diff --combined arch/x86/kernel/irq.c
index 3a43caa3beb79a30e478d200c302d35187424cb4,d833d1b962a51992faaf8fbe6acab8b3d63a5a39..52945da52a9496c3dbbc65d83fcf02e06cb983ae
@@@ -4,6 -4,7 +4,7 @@@
  #include <linux/cpu.h>
  #include <linux/interrupt.h>
  #include <linux/kernel_stat.h>
+ #include <linux/of.h>
  #include <linux/seq_file.h>
  #include <linux/smp.h>
  #include <linux/ftrace.h>
@@@ -234,7 -235,7 +235,7 @@@ unsigned int __irq_entry do_IRQ(struct 
        exit_idle();
        irq_enter();
  
 -      irq = __get_cpu_var(vector_irq)[vector];
 +      irq = __this_cpu_read(vector_irq[vector]);
  
        if (!handle_irq(irq, regs)) {
                ack_APIC_irq();
@@@ -275,6 -276,15 +276,15 @@@ void smp_x86_platform_ipi(struct pt_reg
  
  EXPORT_SYMBOL_GPL(vector_used_by_percpu_irq);
  
+ #ifdef CONFIG_OF
+ unsigned int irq_create_of_mapping(struct device_node *controller,
+               const u32 *intspec, unsigned int intsize)
+ {
+       return intspec[0];
+ }
+ EXPORT_SYMBOL_GPL(irq_create_of_mapping);
+ #endif
  #ifdef CONFIG_HOTPLUG_CPU
  /* A cpu has been removed from cpu_online_mask.  Reset irq affinities. */
  void fixup_irqs(void)
        for (vector = FIRST_EXTERNAL_VECTOR; vector < NR_VECTORS; vector++) {
                unsigned int irr;
  
 -              if (__get_cpu_var(vector_irq)[vector] < 0)
 +              if (__this_cpu_read(vector_irq[vector]) < 0)
                        continue;
  
                irr = apic_read(APIC_IRR + (vector / 32 * 0x10));
                if (irr  & (1 << (vector % 32))) {
 -                      irq = __get_cpu_var(vector_irq)[vector];
 +                      irq = __this_cpu_read(vector_irq[vector]);
  
                        data = irq_get_irq_data(irq);
                        raw_spin_lock(&desc->lock);
diff --combined arch/x86/mm/init_32.c
index f89b5bb4e93f82926f339054aa37f5bd4e829216,8c852e4af452052d2c1a6c0d7eaa0ea9cf0607c9..c821074b7f0bcfaa0cdf2d25cd78835df099faee
@@@ -45,6 -45,7 +45,7 @@@
  #include <asm/bugs.h>
  #include <asm/tlb.h>
  #include <asm/tlbflush.h>
+ #include <asm/olpc_ofw.h>
  #include <asm/pgalloc.h>
  #include <asm/sections.h>
  #include <asm/paravirt.h>
@@@ -226,7 -227,7 +227,7 @@@ page_table_range_init(unsigned long sta
  
  static inline int is_kernel_text(unsigned long addr)
  {
 -      if (addr >= PAGE_OFFSET && addr <= (unsigned long)__init_end)
 +      if (addr >= (unsigned long)_text && addr <= (unsigned long)__init_end)
                return 1;
        return 0;
  }
@@@ -715,6 -716,7 +716,7 @@@ void __init paging_init(void
        /*
         * NOTE: at this point the bootmem allocator is fully available.
         */
+       olpc_dt_build_devicetree();
        sparse_init();
        zone_sizes_init();
  }
@@@ -912,23 -914,6 +914,23 @@@ void set_kernel_text_ro(void
        set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
  }
  
 +static void mark_nxdata_nx(void)
 +{
 +      /*
 +       * When this called, init has already been executed and released,
 +       * so everything past _etext sould be NX.
 +       */
 +      unsigned long start = PFN_ALIGN(_etext);
 +      /*
 +       * This comes from is_kernel_text upper limit. Also HPAGE where used:
 +       */
 +      unsigned long size = (((unsigned long)__init_end + HPAGE_SIZE) & HPAGE_MASK) - start;
 +
 +      if (__supported_pte_mask & _PAGE_NX)
 +              printk(KERN_INFO "NX-protecting the kernel data: %luk\n", size >> 10);
 +      set_pages_nx(virt_to_page(start), size >> PAGE_SHIFT);
 +}
 +
  void mark_rodata_ro(void)
  {
        unsigned long start = PFN_ALIGN(_text);
        printk(KERN_INFO "Testing CPA: write protecting again\n");
        set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
  #endif
 +      mark_nxdata_nx();
  }
  #endif