]> Git Repo - linux.git/commitdiff
Merge commit 'origin/master' into next
authorBenjamin Herrenschmidt <[email protected]>
Fri, 12 Jun 2009 06:53:38 +0000 (16:53 +1000)
committerBenjamin Herrenschmidt <[email protected]>
Fri, 12 Jun 2009 06:53:38 +0000 (16:53 +1000)
Manual merge of:
arch/powerpc/kernel/asm-offsets.c

1  2 
Documentation/kernel-parameters.txt
arch/powerpc/include/asm/paca.h
arch/powerpc/kernel/Makefile
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/irq.c
arch/powerpc/platforms/Kconfig.cputype
arch/powerpc/sysdev/mpic.c
include/linux/pci_ids.h

index 779160afa351b67003fd49993514c215167fddad,7bcdebffdab3850d9d3471a2f3ca5ea3b1f0b32a..f93c6336e6891a5b048eb787364e8150f326ebb5
@@@ -56,7 -56,6 +56,6 @@@ parameter is applicable
        ISAPNP  ISA PnP code is enabled.
        ISDN    Appropriate ISDN support is enabled.
        JOY     Appropriate joystick support is enabled.
-       KMEMTRACE kmemtrace is enabled.
        LIBATA  Libata driver is enabled
        LP      Printer support is enabled.
        LOOP    Loopback device support is enabled.
@@@ -329,11 -328,6 +328,6 @@@ and is between 256 and 4096 characters
                                    flushed before they will be reused, which
                                    is a lot of faster
  
-       amd_iommu_size= [HW,X86-64]
-                       Define the size of the aperture for the AMD IOMMU
-                       driver. Possible values are:
-                       '32M', '64M' (default), '128M', '256M', '512M', '1G'
        amijoy.map=     [HW,JOY] Amiga joystick support
                        Map of devices attached to JOY0DAT and JOY1DAT
                        Format: <a>,<b>
                        Also note the kernel might malfunction if you disable
                        some critical bits.
  
 +      cmo_free_hint=  [PPC] Format: { yes | no }
 +                      Specify whether pages are marked as being inactive
 +                      when they are freed.  This is used in CMO environments
 +                      to determine OS memory pressure for page stealing by
 +                      a hypervisor.
 +                      Default: yes
 +
        code_bytes      [X86] How many bytes of object code to print
                        in an oops report.
                        Range: 0 - 8192
                        DMA-API debugging code disables itself because the
                        architectural default is too low.
  
+       dma_debug_driver=<driver_name>
+                       With this option the DMA-API debugging driver
+                       filter feature can be enabled at boot time. Just
+                       pass the driver to filter for as the parameter.
+                       The filter can be disabled or changed to another
+                       driver later using sysfs.
        dscc4.setup=    [NET]
  
        dtc3181e=       [HW,SCSI]
                        ia64_pal_cache_flush instead of SAL_CACHE_FLUSH.
  
        ftrace=[tracer]
-                       [ftrace] will set and start the specified tracer
+                       [FTRACE] will set and start the specified tracer
                        as early as possible in order to facilitate early
                        boot debugging.
  
        ftrace_dump_on_oops
-                       [ftrace] will dump the trace buffers on oops.
+                       [FTRACE] will dump the trace buffers on oops.
+       ftrace_filter=[function-list]
+                       [FTRACE] Limit the functions traced by the function
+                       tracer at boot up. function-list is a comma separated
+                       list of functions. This list can be changed at run
+                       time by the set_ftrace_filter file in the debugfs
+                       tracing directory. 
+       ftrace_notrace=[function-list]
+                       [FTRACE] Do not trace the functions specified in
+                       function-list. This list can be changed at run time
+                       by the set_ftrace_notrace file in the debugfs
+                       tracing directory.
  
        gamecon.map[2|3]=
                        [HW,JOY] Multisystem joystick and NES/SNES/PSX pad
                        Formt: { "sha1" | "md5" }
                        default: "sha1"
  
+       ima_tcb         [IMA]
+                       Load a policy which meets the needs of the Trusted
+                       Computing Base.  This means IMA will measure all
+                       programs exec'd, files mmap'd for exec, and all files
+                       opened for read by uid=0.
        in2000=         [HW,SCSI]
                        See header of drivers/scsi/in2000.c.
  
                        use the HighMem zone if it exists, and the Normal
                        zone if it does not.
  
-       kmemtrace.enable=       [KNL,KMEMTRACE] Format: { yes | no }
-                               Controls whether kmemtrace is enabled
-                               at boot-time.
-       kmemtrace.subbufs=n     [KNL,KMEMTRACE] Overrides the number of
-                       subbufs kmemtrace's relay channel has. Set this
-                       higher than default (KMEMTRACE_N_SUBBUFS in code) if
-                       you experience buffer overruns.
        kgdboc=         [HW] kgdb over consoles.
                        Requires a tty driver that supports console polling.
                        (only serial suported for now)
                        Configure the RouterBoard 532 series on-chip
                        Ethernet adapter MAC address.
  
+       kmemleak=       [KNL] Boot-time kmemleak enable/disable
+                       Valid arguments: on, off
+                       Default: on
        kstack=N        [X86] Print N words from the kernel stack
                        in oops dumps.
  
        noinitrd        [RAM] Tells the kernel not to load any configured
                        initial RAM disk.
  
+       nointremap      [X86-64, Intel-IOMMU] Do not enable interrupt
+                       remapping.
        nointroute      [IA-64]
  
        nojitter        [IA64] Disables jitter checking for ITC timers.
        oprofile.timer= [HW]
                        Use timer interrupt instead of performance counters
  
+       oprofile.cpu_type=      Force an oprofile cpu type
+                       This might be useful if you have an older oprofile
+                       userland or if you want common events.
+                       Format: { archperfmon }
+                       archperfmon: [X86] Force use of architectural
+                               perfmon on Intel CPUs instead of the
+                               CPU specific event set.
        osst=           [HW,SCSI] SCSI Tape Driver
                        Format: <buffer_size>,<write_threshold>
                        See also Documentation/scsi/st.txt.
index 0ea1985bdb8b51de64becad0c2a40414c4ac4bae,6ef055723019f3048cb14866b8eedddce179ba04..c8a3cbfe02ffaea0bca9be6d35a9fa8ef218bf18
@@@ -43,7 -43,6 +43,7 @@@ struct task_struct
   * processor.
   */
  struct paca_struct {
 +#ifdef CONFIG_PPC_BOOK3S
        /*
         * Because hw_cpu_id, unlike other paca fields, is accessed
         * routinely from other CPUs (from the IRQ code), we stick to
@@@ -52,7 -51,7 +52,7 @@@
         */
  
        struct lppaca *lppaca_ptr;      /* Pointer to LpPaca for PLIC */
 -
 +#endif /* CONFIG_PPC_BOOK3S */
        /*
         * MAGIC: the spinlock functions in arch/powerpc/lib/locks.c 
         * load lock_token and paca_index with a single lwz
        u64 kernel_toc;                 /* Kernel TOC address */
        u64 kernelbase;                 /* Base address of kernel */
        u64 kernel_msr;                 /* MSR while running in kernel */
 +#ifdef CONFIG_PPC_STD_MMU_64
        u64 stab_real;                  /* Absolute address of segment table */
        u64 stab_addr;                  /* Virtual address of segment table */
 +#endif /* CONFIG_PPC_STD_MMU_64 */
        void *emergency_sp;             /* pointer to emergency stack */
        u64 data_offset;                /* per cpu data offset */
        s16 hw_cpu_id;                  /* Physical processor number */
        u8 cpu_start;                   /* At startup, processor spins until */
                                        /* this becomes non-zero. */
 +#ifdef CONFIG_PPC_STD_MMU_64
        struct slb_shadow *slb_shadow_ptr;
  
        /*
        u64 exmc[10];           /* used for machine checks */
        u64 exslb[10];          /* used for SLB/segment table misses
                                 * on the linear mapping */
 -
 -      mm_context_t context;
 +      /* SLB related definitions */
        u16 vmalloc_sllp;
        u16 slb_cache_ptr;
        u16 slb_cache[SLB_CACHE_ENTRIES];
 +#endif /* CONFIG_PPC_STD_MMU_64 */
 +
 +      mm_context_t context;
  
        /*
         * then miscellaneous read-write fields
        u8 soft_enabled;                /* irq soft-enable flag */
        u8 hard_enabled;                /* set if irqs are enabled in MSR */
        u8 io_sync;                     /* writel() needs spin_unlock sync */
+       u8 perf_counter_pending;        /* PM interrupt while soft-disabled */
  
        /* Stuff for accurate time accounting */
        u64 user_time;                  /* accumulated usermode TB ticks */
index 65cf36502aa60142d6229c0dbab1b119bb62c9f8,a2c683403c2bea4a76d8d946cfb673b4526687dc..a7def5f90cadbe2392b7ecfd6aa65f80570b1014
@@@ -36,7 -36,7 +36,7 @@@ obj-$(CONFIG_PPC64)           += setup_64.o sys_
                                   firmware.o nvram_64.o
  obj64-$(CONFIG_RELOCATABLE)   += reloc_64.o
  obj-$(CONFIG_PPC64)           += vdso64/
 -obj-$(CONFIG_ALTIVEC)         += vecemu.o vector.o
 +obj-$(CONFIG_ALTIVEC)         += vecemu.o
  obj-$(CONFIG_PPC_970_NAP)     += idle_power4.o
  obj-$(CONFIG_PPC_OF)          += of_device.o of_platform.o prom_parse.o
  obj-$(CONFIG_PPC_CLOCK)               += clock.o
@@@ -82,7 -82,6 +82,7 @@@ obj-$(CONFIG_SMP)             += smp.
  obj-$(CONFIG_KPROBES)         += kprobes.o
  obj-$(CONFIG_PPC_UDBG_16550)  += legacy_serial.o udbg_16550.o
  obj-$(CONFIG_STACKTRACE)      += stacktrace.o
 +obj-$(CONFIG_SWIOTLB)         += dma-swiotlb.o
  
  pci64-$(CONFIG_PPC64)         += pci_dn.o isa-bridge.o
  obj-$(CONFIG_PCI)             += pci_$(CONFIG_WORD_SIZE).o $(pci64-y) \
@@@ -95,6 -94,9 +95,9 @@@ obj64-$(CONFIG_AUDIT)         += compat_audit.
  
  obj-$(CONFIG_DYNAMIC_FTRACE)  += ftrace.o
  obj-$(CONFIG_FUNCTION_GRAPH_TRACER)   += ftrace.o
+ obj-$(CONFIG_PERF_COUNTERS)   += perf_counter.o power4-pmu.o ppc970-pmu.o \
+                                  power5-pmu.o power5+-pmu.o power6-pmu.o \
+                                  power7-pmu.o
  
  obj-$(CONFIG_8XX_MINIMAL_FPEMU) += softemu8xx.o
  
@@@ -109,7 -111,6 +112,7 @@@ obj-y                              += ppc_save_regs.
  endif
  
  extra-$(CONFIG_PPC_FPU)               += fpu.o
 +extra-$(CONFIG_ALTIVEC)               += vector.o
  extra-$(CONFIG_PPC64)         += entry_64.o
  
  extra-y                               += systbl_chk.i
index ce90c570cd8ee1f40a4042720572c89724f6f694,e981d1ce1914b20994be3d63d2e0d5acba86deda..561b6465231105073ef991300d6aab206e1e0531
@@@ -122,6 -122,8 +122,6 @@@ int main(void
        DEFINE(PACAKSAVE, offsetof(struct paca_struct, kstack));
        DEFINE(PACACURRENT, offsetof(struct paca_struct, __current));
        DEFINE(PACASAVEDMSR, offsetof(struct paca_struct, saved_msr));
 -      DEFINE(PACASTABREAL, offsetof(struct paca_struct, stab_real));
 -      DEFINE(PACASTABVIRT, offsetof(struct paca_struct, stab_addr));
        DEFINE(PACASTABRR, offsetof(struct paca_struct, stab_rr));
        DEFINE(PACAR1, offsetof(struct paca_struct, saved_r1));
        DEFINE(PACATOC, offsetof(struct paca_struct, kernel_toc));
        DEFINE(PACAKMSR, offsetof(struct paca_struct, kernel_msr));
        DEFINE(PACASOFTIRQEN, offsetof(struct paca_struct, soft_enabled));
        DEFINE(PACAHARDIRQEN, offsetof(struct paca_struct, hard_enabled));
 -      DEFINE(PACASLBCACHE, offsetof(struct paca_struct, slb_cache));
 -      DEFINE(PACASLBCACHEPTR, offsetof(struct paca_struct, slb_cache_ptr));
+       DEFINE(PACAPERFPEND, offsetof(struct paca_struct, perf_counter_pending));
        DEFINE(PACACONTEXTID, offsetof(struct paca_struct, context.id));
 -      DEFINE(PACAVMALLOCSLLP, offsetof(struct paca_struct, vmalloc_sllp));
  #ifdef CONFIG_PPC_MM_SLICES
        DEFINE(PACALOWSLICESPSIZE, offsetof(struct paca_struct,
                                            context.low_slices_psize));
        DEFINE(PACAHIGHSLICEPSIZE, offsetof(struct paca_struct,
                                            context.high_slices_psize));
        DEFINE(MMUPSIZEDEFSIZE, sizeof(struct mmu_psize_def));
 +#endif /* CONFIG_PPC_MM_SLICES */
 +#ifdef CONFIG_PPC_STD_MMU_64
 +      DEFINE(PACASTABREAL, offsetof(struct paca_struct, stab_real));
 +      DEFINE(PACASTABVIRT, offsetof(struct paca_struct, stab_addr));
 +      DEFINE(PACASLBCACHE, offsetof(struct paca_struct, slb_cache));
 +      DEFINE(PACASLBCACHEPTR, offsetof(struct paca_struct, slb_cache_ptr));
 +      DEFINE(PACAVMALLOCSLLP, offsetof(struct paca_struct, vmalloc_sllp));
 +#ifdef CONFIG_PPC_MM_SLICES
        DEFINE(MMUPSIZESLLP, offsetof(struct mmu_psize_def, sllp));
  #else
        DEFINE(PACACONTEXTSLLP, offsetof(struct paca_struct, context.sllp));
 -
  #endif /* CONFIG_PPC_MM_SLICES */
        DEFINE(PACA_EXGEN, offsetof(struct paca_struct, exgen));
        DEFINE(PACA_EXMC, offsetof(struct paca_struct, exmc));
        DEFINE(PACA_EXSLB, offsetof(struct paca_struct, exslb));
 -      DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp));
        DEFINE(PACALPPACAPTR, offsetof(struct paca_struct, lppaca_ptr));
 -      DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id));
 -      DEFINE(PACA_STARTPURR, offsetof(struct paca_struct, startpurr));
 -      DEFINE(PACA_STARTSPURR, offsetof(struct paca_struct, startspurr));
 -      DEFINE(PACA_USER_TIME, offsetof(struct paca_struct, user_time));
 -      DEFINE(PACA_SYSTEM_TIME, offsetof(struct paca_struct, system_time));
        DEFINE(PACA_SLBSHADOWPTR, offsetof(struct paca_struct, slb_shadow_ptr));
 -      DEFINE(PACA_DATA_OFFSET, offsetof(struct paca_struct, data_offset));
 -      DEFINE(PACA_TRAP_SAVE, offsetof(struct paca_struct, trap_save));
 -
        DEFINE(SLBSHADOW_STACKVSID,
               offsetof(struct slb_shadow, save_area[SLB_NUM_BOLTED - 1].vsid));
        DEFINE(SLBSHADOW_STACKESID,
        DEFINE(LPPACAANYINT, offsetof(struct lppaca, int_dword.any_int));
        DEFINE(LPPACADECRINT, offsetof(struct lppaca, int_dword.fields.decr_int));
        DEFINE(SLBSHADOW_SAVEAREA, offsetof(struct slb_shadow, save_area));
 +#endif /* CONFIG_PPC_STD_MMU_64 */
 +      DEFINE(PACAEMERGSP, offsetof(struct paca_struct, emergency_sp));
 +      DEFINE(PACAHWCPUID, offsetof(struct paca_struct, hw_cpu_id));
 +      DEFINE(PACA_STARTPURR, offsetof(struct paca_struct, startpurr));
 +      DEFINE(PACA_STARTSPURR, offsetof(struct paca_struct, startspurr));
 +      DEFINE(PACA_USER_TIME, offsetof(struct paca_struct, user_time));
 +      DEFINE(PACA_SYSTEM_TIME, offsetof(struct paca_struct, system_time));
 +      DEFINE(PACA_DATA_OFFSET, offsetof(struct paca_struct, data_offset));
 +      DEFINE(PACA_TRAP_SAVE, offsetof(struct paca_struct, trap_save));
  #endif /* CONFIG_PPC64 */
  
        /* RTAS */
index 8564a412e7a66f28b0403007f7a6615d23167816,844d3f882a15051f4b4cba821c10c377d2529501..f7f376ea7b178792fa12927b0578230e9bc61915
@@@ -53,6 -53,7 +53,7 @@@
  #include <linux/bootmem.h>
  #include <linux/pci.h>
  #include <linux/debugfs.h>
+ #include <linux/perf_counter.h>
  
  #include <asm/uaccess.h>
  #include <asm/system.h>
@@@ -117,7 -118,6 +118,7 @@@ notrace void raw_local_irq_restore(unsi
        if (!en)
                return;
  
 +#ifdef CONFIG_PPC_STD_MMU_64
        if (firmware_has_feature(FW_FEATURE_ISERIES)) {
                /*
                 * Do we need to disable preemption here?  Not really: in the
                if (local_paca->lppaca_ptr->int_dword.any_int)
                        iseries_handle_interrupts();
        }
 +#endif /* CONFIG_PPC_STD_MMU_64 */
  
+       if (test_perf_counter_pending()) {
+               clear_perf_counter_pending();
+               perf_counter_do_pending();
+       }
        /*
         * if (get_paca()->hard_enabled) return;
         * But again we need to take care that gcc gets hard_enabled directly
@@@ -250,84 -254,77 +256,84 @@@ void fixup_irqs(cpumask_t map
  }
  #endif
  
 -void do_IRQ(struct pt_regs *regs)
 -{
 -      struct pt_regs *old_regs = set_irq_regs(regs);
 -      unsigned int irq;
  #ifdef CONFIG_IRQSTACKS
 +static inline void handle_one_irq(unsigned int irq)
 +{
        struct thread_info *curtp, *irqtp;
 -#endif
 +      unsigned long saved_sp_limit;
 +      struct irq_desc *desc;
  
 -      irq_enter();
 +      /* Switch to the irq stack to handle this */
 +      curtp = current_thread_info();
 +      irqtp = hardirq_ctx[smp_processor_id()];
 +
 +      if (curtp == irqtp) {
 +              /* We're already on the irq stack, just handle it */
 +              generic_handle_irq(irq);
 +              return;
 +      }
 +
 +      desc = irq_desc + irq;
 +      saved_sp_limit = current->thread.ksp_limit;
 +
 +      irqtp->task = curtp->task;
 +      irqtp->flags = 0;
 +
 +      /* Copy the softirq bits in preempt_count so that the
 +       * softirq checks work in the hardirq context. */
 +      irqtp->preempt_count = (irqtp->preempt_count & ~SOFTIRQ_MASK) |
 +                             (curtp->preempt_count & SOFTIRQ_MASK);
 +
 +      current->thread.ksp_limit = (unsigned long)irqtp +
 +              _ALIGN_UP(sizeof(struct thread_info), 16);
 +
 +      call_handle_irq(irq, desc, irqtp, desc->handle_irq);
 +      current->thread.ksp_limit = saved_sp_limit;
 +      irqtp->task = NULL;
 +
 +      /* Set any flag that may have been set on the
 +       * alternate stack
 +       */
 +      if (irqtp->flags)
 +              set_bits(irqtp->flags, &curtp->flags);
 +}
 +#else
 +static inline void handle_one_irq(unsigned int irq)
 +{
 +      generic_handle_irq(irq);
 +}
 +#endif
  
 +static inline void check_stack_overflow(void)
 +{
  #ifdef CONFIG_DEBUG_STACKOVERFLOW
 -      /* Debugging check for stack overflow: is there less than 2KB free? */
 -      {
 -              long sp;
 +      long sp;
  
 -              sp = __get_SP() & (THREAD_SIZE-1);
 +      sp = __get_SP() & (THREAD_SIZE-1);
  
 -              if (unlikely(sp < (sizeof(struct thread_info) + 2048))) {
 -                      printk("do_IRQ: stack overflow: %ld\n",
 -                              sp - sizeof(struct thread_info));
 -                      dump_stack();
 -              }
 +      /* check for stack overflow: is there less than 2KB free? */
 +      if (unlikely(sp < (sizeof(struct thread_info) + 2048))) {
 +              printk("do_IRQ: stack overflow: %ld\n",
 +                      sp - sizeof(struct thread_info));
 +              dump_stack();
        }
  #endif
 +}
 +
 +void do_IRQ(struct pt_regs *regs)
 +{
 +      struct pt_regs *old_regs = set_irq_regs(regs);
 +      unsigned int irq;
 +
 +      irq_enter();
 +
 +      check_stack_overflow();
  
 -      /*
 -       * Every platform is required to implement ppc_md.get_irq.
 -       * This function will either return an irq number or NO_IRQ to
 -       * indicate there are no more pending.
 -       * The value NO_IRQ_IGNORE is for buggy hardware and means that this
 -       * IRQ has already been handled. -- Tom
 -       */
        irq = ppc_md.get_irq();
  
 -      if (irq != NO_IRQ && irq != NO_IRQ_IGNORE) {
 -#ifdef CONFIG_IRQSTACKS
 -              /* Switch to the irq stack to handle this */
 -              curtp = current_thread_info();
 -              irqtp = hardirq_ctx[smp_processor_id()];
 -              if (curtp != irqtp) {
 -                      struct irq_desc *desc = irq_desc + irq;
 -                      void *handler = desc->handle_irq;
 -                      unsigned long saved_sp_limit = current->thread.ksp_limit;
 -                      if (handler == NULL)
 -                              handler = &__do_IRQ;
 -                      irqtp->task = curtp->task;
 -                      irqtp->flags = 0;
 -
 -                      /* Copy the softirq bits in preempt_count so that the
 -                       * softirq checks work in the hardirq context.
 -                       */
 -                      irqtp->preempt_count =
 -                              (irqtp->preempt_count & ~SOFTIRQ_MASK) |
 -                              (curtp->preempt_count & SOFTIRQ_MASK);
 -
 -                      current->thread.ksp_limit = (unsigned long)irqtp +
 -                              _ALIGN_UP(sizeof(struct thread_info), 16);
 -                      call_handle_irq(irq, desc, irqtp, handler);
 -                      current->thread.ksp_limit = saved_sp_limit;
 -                      irqtp->task = NULL;
 -
 -
 -                      /* Set any flag that may have been set on the
 -                       * alternate stack
 -                       */
 -                      if (irqtp->flags)
 -                              set_bits(irqtp->flags, &curtp->flags);
 -              } else
 -#endif
 -                      generic_handle_irq(irq);
 -      } else if (irq != NO_IRQ_IGNORE)
 +      if (irq != NO_IRQ && irq != NO_IRQ_IGNORE)
 +              handle_one_irq(irq);
 +      else if (irq != NO_IRQ_IGNORE)
                /* That's not SMP safe ... but who cares ? */
                ppc_spurious_interrupts++;
  
index 25f8a9c2ba1a601aa09cfc5829472fcf0c1c4f72,732ee93a8e988fd594eed27614d2034f2b71ed67..cca6b4fc719a2a3eb3b7d774c5c2c4d2329e8c8d
@@@ -1,6 -1,7 +1,7 @@@
  config PPC64
        bool "64-bit kernel"
        default n
+       select HAVE_PERF_COUNTERS
        help
          This option selects whether a 32-bit or a 64-bit kernel
          will be built.
@@@ -9,6 -10,7 +10,6 @@@ menu "Processor support
  choice
        prompt "Processor Type"
        depends on PPC32
 -      default 6xx
        help
          There are five families of 32 bit PowerPC chips supported.
          The most common ones are the desktop and server CPUs (601, 603,
@@@ -20,7 -22,7 +21,7 @@@
  
          If unsure, select 52xx/6xx/7xx/74xx/82xx/83xx/86xx.
  
 -config 6xx
 +config PPC_BOOK3S
        bool "512x/52xx/6xx/7xx/74xx/82xx/83xx/86xx"
        select PPC_FPU
  
@@@ -56,11 -58,13 +57,11 @@@ config E20
  
  endchoice
  
 -# Until we have a choice of exclusive CPU types on 64-bit, we always
 -# use PPC_BOOK3S. On 32-bit, this is equivalent to 6xx which is
 -# "classic" MMU
 -
  config PPC_BOOK3S
 -       def_bool y
 -       depends on PPC64 || 6xx
 +      default y
 +      depends on PPC64
 +      select PPC_FPU
 +
  
  config POWER4_ONLY
        bool "Optimize for POWER4"
          The resulting binary will not work on POWER3 or RS64 processors
          when compiled with binutils 2.15 or later.
  
 +config 6xx
 +      def_bool y
 +      depends on PPC32 && PPC_BOOK3S
 +
  config POWER3
        bool
        depends on PPC64 && PPC_BOOK3S
@@@ -203,8 -203,9 +204,8 @@@ config SP
          If in doubt, say Y here.
  
  config PPC_STD_MMU
 -      bool
 -      depends on 6xx || PPC64
 -      default y
 +      def_bool y
 +      depends on PPC_BOOK3S
  
  config PPC_STD_MMU_32
        def_bool y
@@@ -262,8 -263,8 +263,8 @@@ config SM
          If you don't know what to do here, say N.
  
  config NR_CPUS
 -      int "Maximum number of CPUs (2-1024)"
 -      range 2 1024
 +      int "Maximum number of CPUs (2-8192)"
 +      range 2 8192
        depends on SMP
        default "32" if PPC64
        default "4"
index bbee441ae867c2e2d420de7775b815ed8c551428,352d8c3ef5269c97e548789edccc49c420214a71..9c3af5045495bb67c0259998a39dd641c65e47ea
@@@ -613,23 -613,23 +613,23 @@@ static int irq_choose_cpu(unsigned int 
  #define mpic_irq_to_hw(virq)  ((unsigned int)irq_map[virq].hwirq)
  
  /* Find an mpic associated with a given linux interrupt */
 -static struct mpic *mpic_find(unsigned int irq, unsigned int *is_ipi)
 +static struct mpic *mpic_find(unsigned int irq)
  {
 -      unsigned int src = mpic_irq_to_hw(irq);
 -      struct mpic *mpic;
 -
        if (irq < NUM_ISA_INTERRUPTS)
                return NULL;
  
 -      mpic = irq_desc[irq].chip_data;
 +      return irq_desc[irq].chip_data;
 +}
  
 -      if (is_ipi)
 -              *is_ipi = (src >= mpic->ipi_vecs[0] &&
 -                         src <= mpic->ipi_vecs[3]);
 +/* Determine if the linux irq is an IPI */
 +static unsigned int mpic_is_ipi(struct mpic *mpic, unsigned int irq)
 +{
 +      unsigned int src = mpic_irq_to_hw(irq);
  
 -      return mpic;
 +      return (src >= mpic->ipi_vecs[0] && src <= mpic->ipi_vecs[3]);
  }
  
 +
  /* Convert a cpu mask from logical to physical cpu numbers. */
  static inline u32 mpic_physmask(u32 cpumask)
  {
@@@ -807,7 -807,7 +807,7 @@@ static void mpic_end_ipi(unsigned int i
  
  #endif /* CONFIG_SMP */
  
void mpic_set_affinity(unsigned int irq, const struct cpumask *cpumask)
int mpic_set_affinity(unsigned int irq, const struct cpumask *cpumask)
  {
        struct mpic *mpic = mpic_from_irq(irq);
        unsigned int src = mpic_irq_to_hw(irq);
                mpic_irq_write(src, MPIC_INFO(IRQ_DESTINATION),
                               mpic_physmask(cpus_addr(tmp)[0]));
        }
+       return 0;
  }
  
  static unsigned int mpic_type_to_vecpri(struct mpic *mpic, unsigned int type)
@@@ -1381,7 -1383,8 +1383,7 @@@ void __init mpic_set_serial_int(struct 
  
  void mpic_irq_set_priority(unsigned int irq, unsigned int pri)
  {
 -      unsigned int is_ipi;
 -      struct mpic *mpic = mpic_find(irq, &is_ipi);
 +      struct mpic *mpic = mpic_find(irq);
        unsigned int src = mpic_irq_to_hw(irq);
        unsigned long flags;
        u32 reg;
                return;
  
        spin_lock_irqsave(&mpic_lock, flags);
 -      if (is_ipi) {
 +      if (mpic_is_ipi(mpic, irq)) {
                reg = mpic_ipi_read(src - mpic->ipi_vecs[0]) &
                        ~MPIC_VECPRI_PRIORITY_MASK;
                mpic_ipi_write(src - mpic->ipi_vecs[0],
diff --combined include/linux/pci_ids.h
index b6ab381748c58850197173c234c3a4fb5467fc0b,d7d1c41a0b17db03da5768b35233f409b98b9b7d..d77c23779c6700dcafec121b34f43c25191537e0
  #define PCI_DEVICE_ID_OXSEMI_PCIe952_1_U      0xC118
  #define PCI_DEVICE_ID_OXSEMI_PCIe952_1_GU     0xC11C
  #define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
+ #define PCI_DEVICE_ID_OXSEMI_C950     0x950B
  #define PCI_DEVICE_ID_OXSEMI_16PCI95N 0x9511
  #define PCI_DEVICE_ID_OXSEMI_16PCI954PP       0x9513
  #define PCI_DEVICE_ID_OXSEMI_16PCI952 0x9521
  #define PCI_DEVICE_ID_OXSEMI_16PCI952PP       0x9523
+ #define PCI_SUBDEVICE_ID_OXSEMI_C950  0x0001
  
  #define PCI_VENDOR_ID_CHELSIO         0x1425
  
  #define PCI_DEVICE_ID_MPC8547E                0x0018
  #define PCI_DEVICE_ID_MPC8545E                0x0019
  #define PCI_DEVICE_ID_MPC8545         0x001a
 +#define PCI_DEVICE_ID_MPC8569E                0x0061
 +#define PCI_DEVICE_ID_MPC8569         0x0060
  #define PCI_DEVICE_ID_MPC8568E                0x0020
  #define PCI_DEVICE_ID_MPC8568         0x0021
  #define PCI_DEVICE_ID_MPC8567E                0x0022
  #define PCI_DEVICE_ID_MPC8572         0x0041
  #define PCI_DEVICE_ID_MPC8536E                0x0050
  #define PCI_DEVICE_ID_MPC8536         0x0051
 +#define PCI_DEVICE_ID_P2020E          0x0070
 +#define PCI_DEVICE_ID_P2020           0x0071
  #define PCI_DEVICE_ID_MPC8641         0x7010
  #define PCI_DEVICE_ID_MPC8641D                0x7011
  #define PCI_DEVICE_ID_MPC8610         0x7018
This page took 0.16843 seconds and 4 git commands to generate.