1. 17 10月, 2007 2 次提交
  2. 22 7月, 2007 1 次提交
  3. 20 7月, 2007 1 次提交
  4. 18 7月, 2007 1 次提交
  5. 16 7月, 2007 3 次提交
    • D
      [SPARC64]: Fix build regressions added by dr-cpu changes. · b14f5c10
      David S. Miller 提交于
      Do not select HOTPLUG_CPU from SUN_LDOMS, that causes
      HOTPLUG_CPU to be selected even on non-SMP which is
      illegal.
      
      Only build hvtramp.o when SMP, just like trampoline.o
      
      Protect dr-cpu code in ds.c with HOTPLUG_CPU.
      
      Likewise move ldom_startcpu_cpuid() to smp.c and protect
      it and the call site with SUN_LDOMS && HOTPLUG_CPU.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b14f5c10
    • D
      [SPARC64]: Initial LDOM cpu hotplug support. · 4f0234f4
      David S. Miller 提交于
      Only adding cpus is supports at the moment, removal
      will come next.
      
      When new cpus are configured, the machine description is
      updated.  When we get the configure request we pass in a
      cpu mask of to-be-added cpus to the mdesc CPU node parser
      so it only fetches information for those cpus.  That code
      also proceeds to update the SMT/multi-core scheduling bitmaps.
      
      cpu_up() does all the work and we return the status back
      over the DS channel.
      
      CPUs via dr-cpu need to be booted straight out of the
      hypervisor, and this requires:
      
      1) A new trampoline mechanism.  CPUs are booted straight
         out of the hypervisor with MMU disabled and running in
         physical addresses with no mappings installed in the TLB.
      
         The new hvtramp.S code sets up the critical cpu state,
         installs the locked TLB mappings for the kernel, and
         turns the MMU on.  It then proceeds to follow the logic
         of the existing trampoline.S SMP cpu bringup code.
      
      2) All calls into OBP have to be disallowed when domaining
         is enabled.  Since cpus boot straight into the kernel from
         the hypervisor, OBP has no state about that cpu and therefore
         cannot handle being invoked on that cpu.
      
         Luckily it's only a handful of interfaces which can be called
         after the OBP device tree is obtained.  For example, rebooting,
         halting, powering-off, and setting options node variables.
      
      CPU removal support will require some infrastructure changes
      here.  Namely we'll have to process the requests via a true
      kernel thread instead of in a workqueue.  workqueues run on
      a per-cpu thread, but when unconfiguring we might need to
      force the thread to execute on another cpu if the current cpu
      is the one being removed.  Removal of a cpu also causes the kernel
      to destroy that cpu's workqueue running thread.
      
      Another issue on removal is that we may have interrupts still
      pointing to the cpu-to-be-removed.  So new code will be needed
      to walk the active INO list and retarget those cpus as-needed.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      4f0234f4
    • D
      [SPARC64]: Add LDOM virtual channel driver and VIO device layer. · e53e97ce
      David S. Miller 提交于
      Virtual devices on Sun Logical Domains are built on top
      of a virtual channel framework.  This, with help of hypervisor
      interfaces, provides a link layer protocol with basic
      handshaking over which virtual device clients and servers
      communicate.
      
      Built on top of this is a VIO device protocol which has it's
      own handshaking and message types.  At this layer attributes
      are exchanged (disk size, network device addresses, etc.)
      descriptor rings are registered, and data transfers are
      triggers and replied to.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e53e97ce
  6. 12 7月, 2007 1 次提交
  7. 05 6月, 2007 1 次提交
  8. 29 5月, 2007 1 次提交
    • D
      [SPARC64]: Eliminate NR_CPUS limitations. · 22adb358
      David S. Miller 提交于
      Cheetah systems can have cpuids as large as 1023, although physical
      systems don't have that many cpus.
      
      Only three limitations existed in the kernel preventing arbitrary
      NR_CPUS values:
      
      1) dcache dirty cpu state stored in page->flags on
         D-cache aliasing platforms.  With some build time
         calculations and some build-time BUG checks on
         page->flags layout, this one was easily solved.
      
      2) The cheetah XCALL delivery code could only handle
         a cpumask with up to 32 cpus set.  Some simple looping
         logic clears that up too.
      
      3) thread_info->cpu was a u8, easily changed to a u16.
      
      There are a few spots in the kernel that still put NR_CPUS
      sized arrays on the kernel stack, but that's not a sparc64
      specific problem.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      22adb358
  9. 12 5月, 2007 1 次提交
  10. 08 5月, 2007 1 次提交
  11. 03 5月, 2007 1 次提交
  12. 26 4月, 2007 2 次提交
    • D
      [SPARC64]: Use SPARSEMEM_STATIC · d78d0891
      David S. Miller 提交于
      Decrease the SECTION_SIZE_BITS --> MAX_PHYSADDR_BITS
      range a little bit.
      
      The cost of going to SPARSEMEM_STATIC becomes 8K of BSS space, and in
      return we save a pointer dereferences on every page struct lookup.
      Even better we hit the main kernel image for the base address which is
      in a hugepage locked TLB entry.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d78d0891
    • D
      [SPARC64]: Add clocksource/clockevents support. · 112f4871
      David S. Miller 提交于
      I'd like to thank John Stul and others for helping
      me along the way.
      
      A lot of cleanups fell out of this.  For example, the get_compare()
      tick_op was totally unused, so was deleted.  And the most often used
      tick_op members were grouped together for cache-friendlyness.
      
      The sparc64 TSC is given to the kernel as a one-shot timer.
      
      tick_ops->init_timer() simply turns off the privileged bit in
      the tick register (when possible), and disables the interrupt
      by setting bit 63 in the compare register.  The ->disable_irq()
      op also sets this bit.
      
      tick_ops->add_compare() is changed to:
      
      1) Add the given delta to "tick" not to "compare"
      2) Return a boolean which, if true, means that the tick
         value read after writing the compare value was found
         to have incremented past the initial tick value.  This
         mirrors logic used in the HPET driver's ->next_event()
         method.
      
      Each tick_ops implementation also now provides a name string.
      And we feed this into the clocksource and clockevents layers.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      112f4871
  13. 18 3月, 2007 1 次提交
  14. 13 2月, 2007 1 次提交
  15. 12 2月, 2007 1 次提交
    • C
      [PATCH] Set CONFIG_ZONE_DMA for arches with GENERIC_ISA_DMA · 5ac6da66
      Christoph Lameter 提交于
      As Andi pointed out: CONFIG_GENERIC_ISA_DMA only disables the ISA DMA
      channel management.  Other functionality may still expect GFP_DMA to
      provide memory below 16M.  So we need to make sure that CONFIG_ZONE_DMA is
      set independent of CONFIG_GENERIC_ISA_DMA.  Undo the modifications to
      mm/Kconfig where we made ZONE_DMA dependent on GENERIC_ISA_DMA and set
      theses explicitly in each arches Kconfig.
      
      Reviews must occur for each arch in order to determine if ZONE_DMA can be
      switched off.  It can only be switched off if we know that all devices
      supported by a platform are capable of performing DMA transfers to all of
      memory (Some arches already support this: uml, avr32, sh sh64, parisc and
      IA64/Altix).
      
      In order to switch ZONE_DMA off conditionally, one would have to establish
      a scheme by which one can assure that no drivers are enabled that are only
      capable of doing I/O to a part of memory, or one needs to provide an
      alternate means of performing an allocation from a specific range of memory
      (like provided by alloc_pages_range()) and insure that all drivers use that
      call.  In that case the arches alloc_dma_coherent() may need to be modified
      to call alloc_pages_range() instead of relying on GFP_DMA.
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5ac6da66
  16. 10 12月, 2006 1 次提交
  17. 09 12月, 2006 1 次提交
    • D
      [PATCH] LOG2: Implement a general integer log2 facility in the kernel · f0d1b0b3
      David Howells 提交于
      This facility provides three entry points:
      
      	ilog2()		Log base 2 of unsigned long
      	ilog2_u32()	Log base 2 of u32
      	ilog2_u64()	Log base 2 of u64
      
      These facilities can either be used inside functions on dynamic data:
      
      	int do_something(long q)
      	{
      		...;
      		y = ilog2(x)
      		...;
      	}
      
      Or can be used to statically initialise global variables with constant values:
      
      	unsigned n = ilog2(27);
      
      When performing static initialisation, the compiler will report "error:
      initializer element is not constant" if asked to take a log of zero or of
      something not reducible to a constant.  They treat negative numbers as
      unsigned.
      
      When not dealing with a constant, they fall back to using fls() which permits
      them to use arch-specific log calculation instructions - such as BSR on
      x86/x86_64 or SCAN on FRV - if available.
      
      [akpm@osdl.org: MMC fix]
      Signed-off-by: NDavid Howells <dhowells@redhat.com>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Herbert Xu <herbert@gondor.apana.org.au>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Wojtek Kaniewski <wojtekka@toxygen.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      f0d1b0b3
  18. 02 10月, 2006 1 次提交
    • A
      [PATCH] Kprobes: Make kprobe modules more portable · 3a872d89
      Ananth N Mavinakayanahalli 提交于
      In an effort to make kprobe modules more portable, here is a patch that:
      
      o Introduces the "symbol_name" field to struct kprobe.
        The symbol->address resolution now happens in the kernel in an
        architecture agnostic manner. 64-bit powerpc users no longer have
        to specify the ".symbols"
      o Introduces the "offset" field to struct kprobe to allow a user to
        specify an offset into a symbol.
      o The legacy mechanism of specifying the kprobe.addr is still supported.
        However, if both the kprobe.addr and kprobe.symbol_name are specified,
        probe registration fails with an -EINVAL.
      o The symbol resolution code uses kallsyms_lookup_name(). So
        CONFIG_KPROBES now depends on CONFIG_KALLSYMS
      o Apparantly kprobe modules were the only legitimate out-of-tree user of
        the kallsyms_lookup_name() EXPORT. Now that the symbol resolution
        happens in-kernel, remove the EXPORT as suggested by Christoph Hellwig
      o Modify tcp_probe.c that uses the kprobe interface so as to make it
        work on multiple platforms (in its earlier form, the code wouldn't
        work, say, on powerpc)
      Signed-off-by: NAnanth N Mavinakayanahalli <ananth@in.ibm.com>
      Signed-off-by: NPrasanna S Panchamukhi <prasanna@in.ibm.com>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      3a872d89
  19. 12 9月, 2006 1 次提交
  20. 11 7月, 2006 1 次提交
    • C
      [PATCH] disallow modular binfmt_elf32 · 289fbc21
      Christoph Hellwig 提交于
      Currently most architectures either always build binfmt_elf32 in the kernel
      image or make it a boolean option.  Only sparc64 and s390 allow to build it
      modularly.  This patch turns the option into a boolean aswell because elf
      requires various symbols that shouldn't be available to modules.  The most
      urgent one is tasklist_lock whos export this patch series kills, but there
      are others like force_sgi aswell.
      
      Note that sparc doesn't allow a modular 32bit a.out handler either, and
      that would be the more useful case as only few people want 32bit sunos
      compatibility and 99.9% of all sparc64 users need 32bit linux native elf
      support.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Acked-by: N"David S. Miller" <davem@davemloft.net>
      Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      289fbc21
  21. 20 6月, 2006 1 次提交
    • D
      [SPARC64]: Move over to GENERIC_HARDIRQS. · e18e2a00
      David S. Miller 提交于
      This is the long overdue conversion of sparc64 over to
      the generic IRQ layer.
      
      The kernel image is slightly larger, but the BSS is ~60K
      smaller due to the reduced size of struct ino_bucket.
      
      A lot of IRQ implementation details, including ino_bucket,
      were moved out of asm-sparc64/irq.h and are now private to
      arch/sparc64/kernel/irq.c, and most of the code in irq.c
      totally disappeared.
      
      One thing that's different at the moment is IRQ distribution,
      we do it at enable_irq() time.  If the cpu mask is ALL then
      we round-robin using a global rotating cpu counter, else
      we pick the first cpu in the mask to support single cpu
      targetting.  This is similar to what powerpc's XICS IRQ
      support code does.
      
      This works fine on my UP SB1000, and the SMP build goes
      fine and runs on that machine, but lots of testing on
      different setups is needed.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e18e2a00
  22. 19 4月, 2006 1 次提交
  23. 10 4月, 2006 1 次提交
  24. 27 3月, 2006 1 次提交
    • A
      [PATCH] bitops: sparc64: use generic bitops · 2d78d4be
      Akinobu Mita 提交于
      - remove __{,test_and_}{set,clear,change}_bit() and test_bit()
      - remove ffz()
      - remove __ffs()
      - remove generic_fls()
      - remove generic_fls64()
      - remove sched_find_first_bit()
      - remove ffs()
      
      - unless defined(ULTRA_HAS_POPULATION_COUNT)
      
        - remove generic_hweight{64,32,16,8}()
      
      - remove find_{next,first}{,_zero}_bit()
      - remove ext2_{set,clear,test,find_first_zero,find_next_zero}_bit()
      - remove minix_{test,set,test_and_clear,test,find_first_zero}_bit()
      Signed-off-by: NAkinobu Mita <mita@miraclelinux.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2d78d4be
  25. 22 3月, 2006 1 次提交
  26. 20 3月, 2006 3 次提交
  27. 27 2月, 2006 1 次提交
  28. 12 1月, 2006 1 次提交
  29. 09 1月, 2006 1 次提交
  30. 23 12月, 2005 1 次提交
  31. 07 11月, 2005 1 次提交
  32. 08 9月, 2005 1 次提交
    • V
      [PATCH] Kconfig fix (BLK_DEV_FD dependencies) · a08b6b79
      viro@ZenIV.linux.org.uk 提交于
      Sanitized and fixed floppy dependencies: split the messy dependencies for
      BLK_DEV_FD by introducing a new symbol (ARCH_MAY_HAVE_PC_FDC), making
      BLK_DEV_FD depend on that one and taking declarations of ARCH_MAY_HAVE_PC_FDC
      to arch/*/Kconfig.  While we are at it, fixed several obvious cases when
      BLK_DEV_FD should have been excluded (architectures lacking asm/floppy.h
      are *not* going to have floppy.c compile, let alone work).
      
      If you can come up with better name for that ("this architecture might
      have working PC-compatible floppy disk controller"), you are more than
      welcome - just s/ARCH_MAY_HAVE_PC_FDC/your_prefered_name/g in the patch
      below...
      Signed-off-by: NAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a08b6b79
  33. 06 9月, 2005 1 次提交
  34. 31 8月, 2005 1 次提交