1. 05 2月, 2010 32 次提交
  2. 30 1月, 2010 3 次提交
    • D
      sparc: TIF_ABI_PENDING bit removal · 94673e96
      David Miller 提交于
      Here are the sparc bits to remove TIF_ABI_PENDING now that
      set_personality() is called at the appropriate place in exec.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      94673e96
    • H
      x86: get rid of the insane TIF_ABI_PENDING bit · 05d43ed8
      H. Peter Anvin 提交于
      Now that the previous commit made it possible to do the personality
      setting at the point of no return, we do just that for ELF binaries.
      And suddenly all the reasons for that insane TIF_ABI_PENDING bit go
      away, and we can just make SET_PERSONALITY() just do the obvious thing
      for a 32-bit compat process.
      
      Everything becomes much more straightforward this way.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      05d43ed8
    • L
      Split 'flush_old_exec' into two functions · 221af7f8
      Linus Torvalds 提交于
      'flush_old_exec()' is the point of no return when doing an execve(), and
      it is pretty badly misnamed.  It doesn't just flush the old executable
      environment, it also starts up the new one.
      
      Which is very inconvenient for things like setting up the new
      personality, because we want the new personality to affect the starting
      of the new environment, but at the same time we do _not_ want the new
      personality to take effect if flushing the old one fails.
      
      As a result, the x86-64 '32-bit' personality is actually done using this
      insane "I'm going to change the ABI, but I haven't done it yet" bit
      (TIF_ABI_PENDING), with SET_PERSONALITY() not actually setting the
      personality, but just the "pending" bit, so that "flush_thread()" can do
      the actual personality magic.
      
      This patch in no way changes any of that insanity, but it does split the
      'flush_old_exec()' function up into a preparatory part that can fail
      (still called flush_old_exec()), and a new part that will actually set
      up the new exec environment (setup_new_exec()).  All callers are changed
      to trivially comply with the new world order.
      Signed-off-by: NH. Peter Anvin <hpa@zytor.com>
      Cc: stable@kernel.org
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      221af7f8
  3. 29 1月, 2010 2 次提交
  4. 28 1月, 2010 3 次提交
    • D
      MIPS: PowerTV: Fix support for timer interrupts with > 64 external IRQs · 010c108d
      David VomLehn 提交于
      The MIPS processor is limited to 64 external interrupt sources. Using a
      greater number without IRQ sharing requires reading platform-specific
      registers. On such platforms, reading the IntCtl register to determine
      which interrupt corresponds to a timer interrupt will not work.
      
      On MIPSR2 systems there is a solution - the TI bit in the Cause register,
      specifically indicates that a timer interrupt has occured. This patch uses
      that bit to detect interrupts for MIPSR2 processors, which may be expected
      to work regardless of how the timer interrupt may be routed in the hardware.
      
      Signed-off-by: David VomLehn (dvomlehn@cisco.com)
      To: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/804/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      010c108d
    • D
      MIPS: PowerTV: Streamline access to platform device registers · 59dfa2fc
      David VomLehn 提交于
      Pre-compute addresses for the basic ASIC registers. This speeds up access
      and allows memory for unused configurations to be freed. In addition,
      uninitialized register addresses will be returned as NULL to catch bad
      usage quickly.
      Signed-off-by: NDavid VomLehn <dvomlehn@cisco.com>
      To: linux-mips@linux-mips.org
      Patchwork: http://patchwork.linux-mips.org/patch/806/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      59dfa2fc
    • A
      MIPS: Fix vmlinuz build for 32bit-only math shells · 9c4a6fce
      Alexander Clouter 提交于
      POSIX requires $((<expression>)) arithmetic in sh only to have long
      arithmetic so on 32-bit sh binaries might do only 32-bit arithmetic but
      the arithmetic done in arch/mips/boot/compressed/Makefile needs 64-bit.
      
      I play with the AR7 platform, so VMLINUX_LOAD_ADDRESS is
      0xffffffff94100000, and for an example 4MiB kernel
      VMLINUZ_LOAD_ADDRESS is made out to be:
      ----
      alex@berk:~$ bash -c 'printf "%x\n" $((0xffffffff94100000 + 0x400000))'
      ffffffff94500000
      alex@berk:~$ dash -c 'printf "%x\n" $((0xffffffff94100000 + 0x400000))'
      80000000003fffff
      ----
      
      The former is obviously correct whilst the later breaks things royally.
      
      Fortunately working with only the lower 32bit's works for both bash and
      dash:
      ----
      $ bash -c 'printf "%x\n" $((0x94100000 + 0x400000))'
      94500000
      $ dash -c 'printf "%x\n" $((0x94100000 + 0x400000))'
      94500000
      ----
      
      So, we can split the original 64bit string to two parts, and only
      calculate the low 32bit part, which is big enough (1GiB kernel sizes
      anyone?) for a normal Linux kernel image file, now, we calculate the
      VMLINUZ_LOAD_ADDRESS like this:
      
      1. if present, append top 32bit of VMLINUX_LOAD_ADDRESS" as a prefix
      2. get the sum of the low 32bit of VMLINUX_LOAD_ADDRESS + VMLINUX_SIZE
      
      This patch fixes vmlinuz kernel builds on systems where only a
      32bit-only math shell is available.
      
      Patch Changelog:
        Version 2
          - simplified method by using 'expr' for 'substr' and making it work
      	with dash once again
        Version 1
          - Revert the removals of '-n "$(VMLINUX_SIZE)"' to avoid the error
              of "make clean"
          - Consider more cases of the VMLINUX_LOAD_ADDRESS
        Version 0
          - initial release
      Signed-off-by: NAlexander Clouter <alex@digriz.org.uk>
      Acked-by: NWu Zhangjin <wuzhangjin@gmail.com>
      Patchwork: http://patchwork.linux-mips.org/patch/861/Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      9c4a6fce