1. 29 11月, 2005 1 次提交
    • L
      mm: re-architect the VM_UNPAGED logic · 6aab341e
      Linus Torvalds 提交于
      This replaces the (in my opinion horrible) VM_UNMAPPED logic with very
      explicit support for a "remapped page range" aka VM_PFNMAP.  It allows a
      VM area to contain an arbitrary range of page table entries that the VM
      never touches, and never considers to be normal pages.
      
      Any user of "remap_pfn_range()" automatically gets this new
      functionality, and doesn't even have to mark the pages reserved or
      indeed mark them any other way.  It just works.  As a side effect, doing
      mmap() on /dev/mem works for arbitrary ranges.
      
      Sparc update from David in the next commit.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6aab341e
  2. 24 11月, 2005 1 次提交
    • J
      [PATCH] kprobes: Fix return probes on sys_execve · 8bf1101b
      Jim Keniston 提交于
      Fix a bug in kprobes that can cause an Oops or even a crash when a return
      probe is installed on one of the following functions: sys_execve,
      do_execve, load_*_binary, flush_old_exec, or flush_thread.  The fix is to
      remove the call to kprobe_flush_task() in flush_thread().  This fix has
      been tested on all architectures for which the return-probes feature has
      been implemented (i386, x86_64, ppc64, ia64).  Please apply.
      
      BACKGROUND
      
      Up to now, we have called kprobe_flush_task() under two situations: when a
      task exits, and when it execs.  Flushing kretprobe_instances on exit is
      correct because (a) do_exit() doesn't return, and (b) one or more
      return-probed functions may be active when a task calls do_exit().  Neither
      is the case for sys_execve() and its callees.
      
      Initially, the mistaken call to kprobe_flush_task() on exec was harmless
      because we put the "real" return address of each active probed function
      back in the stack, just to be safe, when we recycled its
      kretprobe_instance.  When support for ppc64 and ia64 was added, this safety
      measure couldn't be employed, and was eventually dropped even for i386 and
      x86_64.  sys_execve() and its callees were informally blacklisted for
      return probes until this fix was developed.
      Acked-by: NPrasanna S Panchamukhi <prasanna@in.ibm.com>
      Signed-off-by: NJim Keniston <jkenisto@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      8bf1101b
  3. 23 11月, 2005 1 次提交
    • H
      [PATCH] unpaged: VM_UNPAGED · 0b14c179
      Hugh Dickins 提交于
      Although we tend to associate VM_RESERVED with remap_pfn_range, quite a few
      drivers set VM_RESERVED on areas which are then populated by nopage.  The
      PageReserved removal in 2.6.15-rc1 changed VM_RESERVED not to free pages in
      zap_pte_range, without changing those drivers not to set it: so their pages
      just leak away.
      
      Let's not change miscellaneous drivers now: introduce VM_UNPAGED at the core,
      to flag the special areas where the ptes may have no struct page, or if they
      have then it's not to be touched.  Replace most instances of VM_RESERVED in
      core mm by VM_UNPAGED.  Force it on in remap_pfn_range, and the sparc and
      sparc64 io_remap_pfn_range.
      
      Revert addition of VM_RESERVED to powerpc vdso, it's not needed there.  Is it
      needed anywhere?  It still governs the mm->reserved_vm statistic, and special
      vmas not to be merged, and areas not to be core dumped; but could probably be
      eliminated later (the drivers are probably specifying it because in 2.4 it
      kept swapout off the vma, but in 2.6 we work from the LRU, which these pages
      don't get on).
      
      Use the VM_SHM slot for VM_UNPAGED, and define VM_SHM to 0: it serves no
      purpose whatsoever, and should be removed from drivers when we clean up.
      Signed-off-by: NHugh Dickins <hugh@veritas.com>
      Acked-by: NWilliam Irwin <wli@holomorphy.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      0b14c179
  4. 19 11月, 2005 2 次提交
  5. 18 11月, 2005 4 次提交
  6. 16 11月, 2005 4 次提交
  7. 15 11月, 2005 1 次提交
    • P
      powerpc: Fix clearing of the FPSCR when invoking a signal handler · cc657f53
      Paul Mackerras 提交于
      As pointed out by Gary Byers, we were clearing the image of the FPSCR
      (floating point status and control register) in the thread_struct before
      copying it to the user stack when invoking a signal.  Thus the task
      would see its FPSCR getting cleared when it took a signal.
      
      While fixing it I noticed that our swapcontext system call was also
      clearing FPSCR.  It shouldn't, so I fixed that too.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      cc657f53
  8. 14 11月, 2005 9 次提交
  9. 13 11月, 2005 1 次提交
    • C
      [SPARC]: Fix RTC compat ioctl kernel log spam. · 535f8d65
      Christoph Hellwig 提交于
      On Fri, Nov 11, 2005 at 12:58:40PM -0800, David S. Miller wrote:
      > 
      > This change:
      > 
      > diff-tree 8ca2bdc7 (from feee207e44d3643d19e648aAuthor: Christoph Hellwig <hch@lst.de>
      > Date:   Wed Nov 9 12:07:18 2005 -0800
      > 
      >     [SPARC] sbus rtc: implement ->compat_ioctl
      >     
      >     Signed-off-by: Christoph Hellwig <hch@lst.de>
      >     Signed-off-by: David S. Miller <davem@davemloft.net>
      > 
      > results in the console now getting spewed on sparc64 systems
      > with messages like:
      > 
      > [   11.968298] ioctl32(hwclock:464): Unknown cmd fd(3) cmd(401c7014){00} arg(efc
      > What's happening is hwclock tries first the SBUS rtc device ioctls
      > then the normal rtc driver ones.
      > 
      > So things actually worked better when we had the SBUS rtc compat ioctl
      > directly handled via the generic compat ioctl code.
      > 
      > There are _so_ many rtc drivers in the kernel implementing the
      > generic rtc ioctls that I don't think putting a ->compat_ioctl
      > into all of them to fix this problem is feasible.  Unless we
      > write a single rtc_compat_ioctl(), export it to modules, and hook
      > it into all of those somehow.
      > 
      > But even that doesn't appear to have any pretty implementation.
      > 
      > Any better ideas?
      
      We had similar problems with other ioctls where userspace did things
      like that.  What we did there was to put the compat handler to generic
      code.  The patch below does that, adding a big comment about what's
      going on and removing the COMPAT_IOCTL entires for these on powerpc
      that not only weren't ever useful but are duplicated now aswell.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      535f8d65
  10. 11 11月, 2005 6 次提交
  11. 10 11月, 2005 10 次提交
    • P
      powerpc: Move some extern declarations from C code into headers · 49b09853
      Paul Mackerras 提交于
      This also make klimit have the same type on 32-bit as on 64-bit,
      namely unsigned long, and defines and initializes it in one place.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      49b09853
    • D
      [PATCH] powerpc: Move more ppc64 files with no ppc32 equivalent to powerpc · d3d2176a
      David Gibson 提交于
      This patch moves a bunch more files from arch/ppc64 and
      include/asm-ppc64 which have no equivalents in ppc32 code into
      arch/powerpc and include/asm-powerpc.  The file affected are:
      	hvcall.h
      	proc_ppc64.c
      	sysfs.c
      	lparcfg.c
      	rtas_pci.c
      
      The only changes apart from the move and corresponding Makefile
      changes are:
      	- #ifndef/#define in includes updated to _ASM_POWERPC_ form
      	- trailing whitespace removed
      	- comments giving full paths removed
      
      Built and booted on POWER5 LPAR (ARCH=powerpc and ARCH=ppc64), built
      for 32-bit powermac (ARCH=powerpc).
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      d3d2176a
    • S
      676e2497
    • P
      powerpc: Add user CPU features for POWER4, POWER5, POWER5+ and Cell. · a7ddc5e8
      Paul Mackerras 提交于
      This is at the request of the glibc folks, who want to use these bits
      to select libraries optimized for the microarchitecture and new
      instructions in these processors.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      a7ddc5e8
    • P
      powerpc: Fix SMP time initialization problem · cbe62e2b
      Paul Mackerras 提交于
      We were getting the last_jiffy per-cpu variable set ahead of the current
      timebase in smp_space_timers on SMP machines.  This caused the loop in
      timer_interrupt to loop virtually forever, since tb_ticks_since assumes
      that it will never be called with the timebase behind the last_jiffy
      value.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      cbe62e2b
    • P
      powerpc: Fixes for 32-bit powermac SMP · 094fe2e7
      Paul Mackerras 提交于
      A couple of bugs crept in with the merge of smp.c...
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      094fe2e7
    • P
      [PATCH] powerpc: merge code values for identifying platforms · 799d6046
      Paul Mackerras 提交于
      This patch merges platform codes.  systemcfg->platform is no longer used,
      systemcfg use in general is deprecated as much as possible (and renamed
      _systemcfg before it gets completely moved elsewhere in a future patch),
      _machine is now used on ppc64 along as ppc32.  Platform codes aren't gone
      yet but we are getting a step closer. A bunch of asm code in head[_64].S
      is also turned into C code.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      799d6046
    • D
      [PATCH] powerpc: Consolidate asm compatibility macros · 3ddfbcf1
      David Gibson 提交于
      This patch consolidates macros used to generate assembly for
      compatibility across different CPUs or configs.  A new header,
      asm-powerpc/asm-compat.h contains the main compatibility macros.  It
      uses some preprocessor magic to make the macros suitable both for use
      in .S files, and in inline asm in .c files.  Headers (bitops.h,
      uaccess.h, atomic.h, bug.h) which had their own such compatibility
      macros are changed to use asm-compat.h.
      
      ppc_asm.h is now for use in .S files *only*, and a #error enforces
      that.  As such, we're a lot more careless about namespace pollution
      here than in asm-compat.h.
      
      While we're at it, this patch adds a call to the PPC405_ERR77 macro in
      futex.h which should have had it already, but didn't.
      
      Built and booted on pSeries, Maple and iSeries (ARCH=powerpc).  Built
      for 32-bit powermac (ARCH=powerpc) and Walnut (ARCH=ppc).
      Signed-off-by: NDavid Gibson <dwg@au1.ibm.com>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      3ddfbcf1
    • D
      [PATCH] powerpc: Merge cacheflush.h and cache.h · 26ef5c09
      David Gibson 提交于
      The ppc32 and ppc64 versions of cacheflush.h were almost identical.
      The two versions of cache.h are fairly similar, except for a bunch of
      register definitions in the ppc32 version which probably belong better
      elsewhere.  This patch, therefore, merges both headers.  Notable
      points:
      	- there are several functions in cacheflush.h which exist only
      on ppc32 or only on ppc64.  These are handled by #ifdef for now, but
      these should probably be consolidated, along with the actual code
      behind them later.
      	- Confusingly, both ppc32 and ppc64 have a
      flush_dcache_range(), but they're subtly different: it uses dcbf on
      ppc32 and dcbst on ppc64, ppc64 has a flush_inval_dcache_range() which
      uses dcbf.  These too should be merged and consolidated later.
      	- Also flush_dcache_range() was defined in cacheflush.h on
      ppc64, and in cache.h on ppc32.  In the merged version it's in
      cacheflush.h
      	- On ppc32 flush_icache_range() is a normal function from
      misc.S.  On ppc64, it was wrapper, testing a feature bit before
      calling __flush_icache_range() which does the actual flush.  This
      patch takes the ppc64 approach, which amounts to no change on ppc32,
      since CPU_FTR_COHERENT_ICACHE will never be set there, but does mean
      renaming flush_icache_range() to __flush_icache_range() in
      arch/ppc/kernel/misc.S and arch/powerpc/kernel/misc_32.S
      	- The PReP register info from asm-ppc/cache.h has moved to
      arch/ppc/platforms/prep_setup.c
      	- The 8xx register info from asm-ppc/cache.h has moved to a
      new asm-powerpc/reg_8xx.h, included from reg.h
      	- flush_dcache_all() was defined on ppc32 (only), but was
      never called (although it was exported).  Thus this patch removes it
      from cacheflush.h and from ARCH=powerpc (misc_32.S) entirely.  It's
      left in ARCH=ppc for now, with the prototype moved to ppc_ksyms.c.
      
      Built for Walnut (ARCH=ppc), 32-bit multiplatform (pmac, CHRP and PReP
      ARCH=ppc, pmac and CHRP ARCH=powerpc).  Built and booted on POWER5
      LPAR (ARCH=powerpc and ARCH=ppc64).
      
      Built for 32-bit powermac (ARCH=ppc and ARCH=powerpc).  Built and
      booted on POWER5 LPAR (ARCH=powerpc and ARCH=ppc64).  Built and booted
      on G5 (ARCH=powerpc)
      Signed-off-by: NDavid Gibson <david@gibson.dropbear.id.au>
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      26ef5c09
    • P
      ppc/powerpc: workarounds for old Open Firmware versions · a23414be
      Paul Mackerras 提交于
      This adds code to work around some problems with old versions of
      Open Firmware, such as on the early powermacs (7500 etc.) and the
      "Longtrail" CHRP machine.  On these machines we have to claim
      the physical and virtual address ranges explicitly when claiming
      memory and then set up a V->P mapping.
      
      The Longtrail has more problems: setprop doesn't work, and we have
      to set an "allow-reclaim" variable to 0 in order to get claim on
      physical memory ranges to fail if the memory is already claimed.
      Signed-off-by: NPaul Mackerras <paulus@samba.org>
      a23414be