1. 12 2月, 2007 1 次提交
    • C
      [PATCH] optional ZONE_DMA: introduce CONFIG_ZONE_DMA · 66701b14
      Christoph Lameter 提交于
      This patch simply defines CONFIG_ZONE_DMA for all arches.  We later do special
      things with CONFIG_ZONE_DMA after the VM and an arch are prepared to work
      without ZONE_DMA.
      
      CONFIG_ZONE_DMA can be defined in two ways depending on how an architecture
      handles ISA DMA.
      
      First if CONFIG_GENERIC_ISA_DMA is set by the arch then we know that the arch
      needs ZONE_DMA because ISA DMA devices are supported.  We can catch this in
      mm/Kconfig and do not need to modify arch code.
      
      Second, arches may use ZONE_DMA in an unknown way.  We set CONFIG_ZONE_DMA for
      all arches that do not set CONFIG_GENERIC_ISA_DMA in order to insure backwards
      compatibility.  The arches may later undefine ZONE_DMA if their arch code has
      been verified to not depend on ZONE_DMA.
      Signed-off-by: NChristoph Lameter <clameter@sgi.com>
      Cc: Andi Kleen <ak@suse.de>
      Cc: "Luck, Tony" <tony.luck@intel.com>
      Cc: Kyle McMartin <kyle@mcmartin.ca>
      Cc: Matthew Wilcox <willy@debian.org>
      Cc: James Bottomley <James.Bottomley@steeleye.com>
      Cc: Paul Mundt <lethal@linux-sh.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      66701b14
  2. 06 2月, 2007 2 次提交
    • M
      [S390] Calibrate delay and bogomips. · 31ee4b2f
      Martin Schwidefsky 提交于
      Preset the bogomips number to the cpu capacity value reported by
      store system information in SYSIB 1.2.2. This value is constant
      for a particular machine model and can be used to determine
      relative performance differences between machines.
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      31ee4b2f
    • G
      [S390] noexec protection · c1821c2e
      Gerald Schaefer 提交于
      This provides a noexec protection on s390 hardware. Our hardware does
      not have any bits left in the pte for a hw noexec bit, so this is a
      different approach using shadow page tables and a special addressing
      mode that allows separate address spaces for code and data.
      
      As a special feature of our "secondary-space" addressing mode, separate
      page tables can be specified for the translation of data addresses
      (storage operands) and instruction addresses. The shadow page table is
      used for the instruction addresses and the standard page table for the
      data addresses.
      The shadow page table is linked to the standard page table by a pointer
      in page->lru.next of the struct page corresponding to the page that
      contains the standard page table (since page->private is not really
      private with the pte_lock and the page table pages are not in the LRU
      list).
      Depending on the software bits of a pte, it is either inserted into
      both page tables or just into the standard (data) page table. Pages of
      a vma that does not have the VM_EXEC bit set get mapped only in the
      data address space. Any try to execute code on such a page will cause a
      page translation exception. The standard reaction to this is a SIGSEGV
      with two exceptions: the two system call opcodes 0x0a77 (sys_sigreturn)
      and 0x0aad (sys_rt_sigreturn) are allowed. They are stored by the
      kernel to the signal stack frame. Unfortunately, the signal return
      mechanism cannot be modified to use an SA_RESTORER because the
      exception unwinding code depends on the system call opcode stored
      behind the signal stack frame.
      
      This feature requires that user space is executed in secondary-space
      mode and the kernel in home-space mode, which means that the addressing
      modes need to be switched and that the noexec protection only works
      for user space.
      After switching the addressing modes, we cannot use the mvcp/mvcs
      instructions anymore to copy between kernel and user space. A new
      mvcos instruction has been added to the z9 EC/BC hardware which allows
      to copy between arbitrary address spaces, but on older hardware the
      page tables need to be walked manually.
      Signed-off-by: NGerald Schaefer <geraldsc@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      c1821c2e
  3. 14 12月, 2006 1 次提交
  4. 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
  5. 08 12月, 2006 3 次提交
    • H
      [S390] Use add_active_range() and free_area_init_nodes(). · 39b742f9
      Heiko Carstens 提交于
      Size zones and holes in an architecture independent manner for s390.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      39b742f9
    • H
      [S390] Virtual memmap for s390. · f4eb07c1
      Heiko Carstens 提交于
      Virtual memmap support for s390. Inspired by the ia64 implementation.
      
      Unlike ia64 we need a mechanism which allows us to dynamically attach
      shared memory regions.
      These memory regions are accessed via the dcss device driver. dcss
      implements the 'direct_access' operation, which requires struct pages
      for every single shared page.
      Therefore this implementation provides an interface to attach/detach
      shared memory:
      
      int add_shared_memory(unsigned long start, unsigned long size);
      int remove_shared_memory(unsigned long start, unsigned long size);
      
      The purpose of the add_shared_memory function is to add the given
      memory range to the 1:1 mapping and to make sure that the
      corresponding range in the vmemmap is backed with physical pages.
      It also initialises the new struct pages.
      
      remove_shared_memory in turn only invalidates the page table
      entries in the 1:1 mapping. The page tables and the memory used for
      struct pages in the vmemmap are currently not freed. They will be
      reused when the next segment will be attached.
      Given that the maximum size of a shared memory region is 2GB and
      in addition all regions must reside below 2GB this is not too much of
      a restriction, but there is room for improvement.
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      f4eb07c1
    • U
      [S390] runtime switch for qdio performance statistics · 34249d0f
      Ursula Braun 提交于
      Remove CONFIG_QETH_PERF_STATS and use a sysfs attribute instead.
      We want to have the ability to turn the statistics on/off at runtime.
      Signed-off-by: NUrsula Braun <braunu@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      34249d0f
  6. 04 12月, 2006 2 次提交
  7. 06 11月, 2006 1 次提交
    • H
      [S390] revert add_active_range() usage patch. · bcc8bcb1
      Heiko Carstens 提交于
      Commit 7676bef9 breaks DCSS support on
      s390. DCSS needs initialized struct pages to work. With the usage of
      add_active_range() only the struct pages for physically present pages
      are initialized.
      This could be fixed if the DCSS driver would initiliaze the struct pages
      itself, but this doesn't work too. This is because the mem_map array
      does not include holes after the last present memory area and therefore
      there is nothing that could be initialized.
      To fix this and to avoid some dirty hacks revert this patch for now.
      Will be added later when we move to a virtual mem_map.
      
      Cc: Carsten Otte <cotte@de.ibm.com>
      Cc: Adrian Bunk <bunk@stusta.de>
      Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      bcc8bcb1
  8. 06 10月, 2006 1 次提交
  9. 05 10月, 2006 1 次提交
  10. 28 9月, 2006 2 次提交
  11. 20 9月, 2006 2 次提交
  12. 12 9月, 2006 1 次提交
  13. 11 7月, 2006 2 次提交
  14. 04 7月, 2006 2 次提交
  15. 23 6月, 2006 1 次提交
    • M
      [PATCH] s390_hypfs filesystem · 24bbb1fa
      Michael Holzheu 提交于
      On zSeries machines there exists an interface which allows the operating
      system to retrieve LPAR hypervisor accounting data.  For example, it is
      possible to get usage data for physical and virtual cpus.  In order to
      provide this information to user space programs, I implemented a new
      virtual Linux file system named 's390_hypfs' using the Linux 2.6 libfs
      framework.  The name 's390_hypfs' stands for 'S390 Hypervisor Filesystem'.
      All the accounting information is put into different virtual files which
      can be accessed from user space.  All data is represented as ASCII strings.
      
      When the file system is mounted the accounting information is retrieved and
      a file system tree is created with the attribute files containing the cpu
      information.  The content of the files remains unchanged until a new update
      is made.  An update can be triggered from user space through writing
      'something' into a special purpose update file.
      
      We create the following directory structure:
      
      <mount-point>/
              update
              cpus/
                      <cpu-id>
                              type
                              mgmtime
                      <cpu-id>
                              ...
              hyp/
                      type
              systems/
                      <lpar-name>
                              cpus/
                                      <cpu-id>
                                              type
                                              mgmtime
                                              cputime
                                              onlinetime
                                      <cpu-id>
                                              ...
                      <lpar-name>
                              cpus/
                                      ...
      
      - update: File to trigger update
      - cpus/: Directory for all physical cpus
      - cpus/<cpu-id>/: Directory for one physical cpu.
      - cpus/<cpu-id>/type: Type name of physical zSeries cpu.
      - cpus/<cpu-id>/mgmtime: Physical-LPAR-management time in microseconds.
      - hyp/: Directory for hypervisor information
      - hyp/type: Typ of hypervisor (currently only 'LPAR Hypervisor')
      - systems/: Directory for all LPARs
      - systems/<lpar-name>/: Directory for one LPAR.
      - systems/<lpar-name>/cpus/<cpu-id>/: Directory for the virtual cpus
      - systems/<lpar-name>/cpus/<cpu-id>/type: Typ of cpu.
      - systems/<lpar-name>/cpus/<cpu-id>/mgmtime:
      Accumulated number of microseconds during which a physical
      CPU was assigned to the logical cpu and the cpu time was
      consumed by the hypervisor and was not provided to
      the LPAR (LPAR overhead).
      
      - systems/<lpar-name>/cpus/<cpu-id>/cputime:
      Accumulated number of microseconds during which a physical CPU
      was assigned to the logical cpu and the cpu time was consumed
      by the LPAR.
      
      - systems/<lpar-name>/cpus/<cpu-id>/onlinetime:
      Accumulated number of microseconds during which the logical CPU
      has been online.
      
      As mount point for the filesystem /sys/hypervisor/s390 is created.
      
      The update process is triggered when writing 'something' into the
      'update' file at the top level hypfs directory. You can do this e.g.
      with 'echo 1 > update'. During the update the whole directory structure
      is deleted and built up again.
      
      Cc: Pekka Enberg <penberg@cs.helsinki.fi>
      Cc: Ingo Oeser <ioe-lkml@rameria.de>
      Cc: Joern Engel <joern@wohnheim.fh-wedel.de>
      Acked-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
      Signed-off-by: NMichael Holzheu <holzheu@de.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      24bbb1fa
  16. 27 3月, 2006 1 次提交
  17. 24 3月, 2006 1 次提交
  18. 18 2月, 2006 1 次提交
    • I
      [PATCH] Introduce CONFIG_DEFAULT_MIGRATION_COST · 4bbf39c2
      Ingo Molnar 提交于
      Heiko Carstens <heiko.carstens@de.ibm.com> wrote:
      
        The boot sequence on s390 sometimes takes ages and we spend a very long
        time (up to one or two minutes) in calibrate_migration_costs.  The time
        spent there differs from boot to boot.  Also the calculated costs differ
        a lot.  I've seen differences by up to a factor of 15 (yes, factor not
        percent).  Also I doubt that making these measurements make much sense on
        a completely virtualized architecture where you cannot tell how much cpu
        time you will get anyway.
      
      So introduce the CONFIG_DEFAULT_MIGRATION_COST method for an architecture
      to set the scheduler migration costs.  This turns off automatic detection
      of migration costs.  Makes sense on virtual platforms, where migration
      costs are hard to measure accurately.
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4bbf39c2
  19. 11 1月, 2006 1 次提交
    • A
      [PATCH] "tiny-make-id16-support-optional" fixes · 2308acca
      Adrian Bunk 提交于
      It seems the "make UID16 support optional" patch was checked when it
      edited the -tiny tree some time ago, but it wasn't checked whether it
      still matches the current situation when it was submitted for inclusion
      in -mm. This patch fixes the following bugs:
      - ARCH_S390X does no longer exist, nowadays this has to be expressed
        through (S390 && 64BIT)
      - in five architecture specific Kconfig files the UID16 options
        weren't removed
      
      Additionally, it changes the fragile negative dependencies of UID16 to
      positive dependencies (new architectures are more likely to not require
      UID16 support).
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      Acked-by: NMatt Mackall <mpm@selenic.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2308acca
  20. 07 1月, 2006 2 次提交
  21. 12 7月, 2005 1 次提交
    • S
      [NET]: add a top-level Networking menu to *config · d5950b43
      Sam Ravnborg 提交于
      Create a new top-level menu named "Networking" thus moving
      net related options and protocol selection way from the drivers
      menu and up on the top-level where they belong.
      
      To implement this all architectures has to source "net/Kconfig" before
      drivers/*/Kconfig in their Kconfig file. This change has been
      implemented for all architectures.
      
      Device drivers for ordinary NIC's are still to be found
      in the Device Drivers section, but Bluetooth, IrDA and ax25
      are located with their corresponding menu entries under the new
      networking menu item.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d5950b43
  22. 26 6月, 2005 1 次提交
  23. 24 6月, 2005 1 次提交
  24. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4