1. 16 3月, 2009 5 次提交
  2. 05 3月, 2009 1 次提交
    • D
      sparc64: Fix lost interrupts on sun4u. · d0cac39e
      David S. Miller 提交于
      Based upon a report by Meelis Roos.
      
      Sparc64 SBUS and PCI controllers use a combination of IMAP and ICLR
      registers to manage device interrupts.
      
      The IMAP register contains the "valid" enable bit as well as CPU
      targetting information.  Whereas the ICLR register is written with
      zero at the end of handling an interrupt to reset the state machine
      for that interrupt to IDLE so it can be sent again.
      
      For PCI slot and SBUS slot devices we can have multiple interrupts
      sharing the same IMAP register.  There are individual ICLR registers
      but only one IMAP register for managing those.
      
      We represent each shared case with individual virtual IRQs so the
      generic IRQ layer thinks there is only one user of the IRQ instance.
      
      In such shared IMAP cases this is wrong, so if there are multiple
      active users then a free_irq() call will prematurely turn off the
      interrupt by clearing the Valid bit in the IMAP register even though
      there are other active users.
      
      Fix this by simply doing nothing in sun4u_disable_irq() and checking
      IRQF_DISABLED during IRQ dispatch.
      
      This situation doesn't exist in the hypervisor sun4v cases, so I left
      those alone.
      Tested-by: NMeelis Roos <mroos@linux.ee>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      d0cac39e
  3. 11 2月, 2009 1 次提交
  4. 09 2月, 2009 1 次提交
    • D
      sparc64: Kill .fixup section bloat. · 40bdac7d
      David S. Miller 提交于
      This is an implementation of a suggestion made by Chris Torek:
      --------------------
      Something else I noticed in passing: the EX and EX_LD/EX_ST macros
      scattered throughout the various .S files make a fair bit of .fixup
      code, all of which does the same thing.  At the cost of one symbol
      in copy_in_user.S, you could just have one common two-instruction
      retl-and-mov-1 fixup that they all share.
      --------------------
      
      The following is with a defconfig build:
      
         text	   data	    bss	    dec	    hex	filename
      3972767	 344024	 584449	4901240	 4ac978	vmlinux.orig
      39688877	 344024	 584449	4897360	 4aba50	vmlinux
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      40bdac7d
  5. 06 2月, 2009 1 次提交
  6. 05 2月, 2009 1 次提交
  7. 03 2月, 2009 2 次提交
  8. 30 1月, 2009 1 次提交
  9. 29 1月, 2009 2 次提交
  10. 20 1月, 2009 3 次提交
  11. 18 1月, 2009 1 次提交
  12. 14 1月, 2009 3 次提交
  13. 09 1月, 2009 8 次提交
    • J
    • S
      sparc64: move EXPORT_SYMBOL to the symbols definition · 917c3660
      Sam Ravnborg 提交于
      Move all applicable EXPORT_SYMBOL()s to the file where the respective
      symbol is defined.
      
      Removed all the includes that are no longer needed in sparc_ksyms_64.c
      
      Comment all remaining EXPORT_SYMBOL()s in sparc_ksyms_64.c
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      
      Additions by Julian Calaby:
      * Moved EXPORT_SYMBOL()s for prom functions to their rightful places.
      * Made some minor cleanups to the includes and comments of sparc_ksyms_64.c
      * Updated and tidied commit message.
      * Rebased patch over sparc-2.6.git HEAD.
      * Ensured that all modified files have the correct includes.
      Signed-off-by: NJulian Calaby <julian.calaby@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      917c3660
    • S
      sparc: move EXPORT_SYMBOL to the symbols definition · 6943f3da
      Sam Ravnborg 提交于
      Move all applicable EXPORT_SYMBOL()s to the file where the respective
      symbol is defined.
      
      Removed all the includes that are no longer needed in sparc_ksyms_32.c
      
      Comment all remaining EXPORT_SYMBOL()s in sparc_ksyms_32.c
      
      Two symbols are shared with sparc64 thus the exports were removed from
      the sparc_ksyms_64.c too, along with the include their ommission made
      redundant.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      
      Additions by Julian Calaby:
      * Moved EXPORT_SYMBOL()s for prom functions to their rightful places.
      * Made some minor cleanups to the includes and comments of sparc_ksyms_32.c
      * Made another subtraction from sparc_ksyms_64.c
      * Updated and tidied commit message.
      * Rebased patch over sparc-2.6.git HEAD.
      * Ensured that all modified files have the correct includes.
      Signed-off-by: NJulian Calaby <julian.calaby@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6943f3da
    • S
      sparc: Create a new file lib/ksyms.c and add export of all symbols defined in... · 45536ffc
      Sam Ravnborg 提交于
      sparc: Create a new file lib/ksyms.c and add export of all symbols defined in assembler in lib/ to this file.
      
      Remove the duplicate entries from kernel/sparc_ksyms_*.c
      
      The rationale behind this is that the EXPORT_SYMBOL() should be close to
      their definition and we cannot add designate a symbol to be exported in
      assembler so at least put it in a file in the same directory.
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      
      Additions by Julian Calaby:
      * Rebased over sparc-2.6.git HEAD
      Signed-off-by: NJulian Calaby <julian.calaby@gmail.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      45536ffc
    • D
      sparc: Most unaligned_64.c tweaks for branch tracer warnings. · b41418f4
      David S. Miller 提交于
      arch/sparc/kernel/unaligned_64.c: In function 'handle_lddfmna':
      arch/sparc/kernel/unaligned_64.c:592: warning: 'second' may be used uninitialized in this function
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b41418f4
    • D
      sparc: Fix sun4d_irq.c build. · a638f25a
      David S. Miller 提交于
      Reported by Robert Reif.
      
      Fallout from 'swap' changes.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      a638f25a
    • S
      sparc64: fix warnings in psycho_common after ull conversion · e8dc7c48
      Sam Ravnborg 提交于
      After conversion to use unsigned long long for u64
      I saw following warnings:
      
        CC      arch/sparc/kernel/psycho_common.o
      arch/sparc/kernel/psycho_common.c: In function `psycho_check_stc_error':
      arch/sparc/kernel/psycho_common.c:104: warning: long long unsigned int format, long unsigned int arg (arg 4)
      arch/sparc/kernel/psycho_common.c:104: warning: long long unsigned int format, long unsigned int arg (arg 5)
      arch/sparc/kernel/psycho_common.c:114: warning: long long unsigned int format, long unsigned int arg (arg 4)
      arch/sparc/kernel/psycho_common.c:114: warning: long long unsigned int format, long unsigned int arg (arg 5)
      arch/sparc/kernel/psycho_common.c:114: warning: long long unsigned int format, long unsigned int arg (arg 6)
      arch/sparc/kernel/psycho_common.c:114: warning: long long unsigned int format, long unsigned int arg (arg 7)
      arch/sparc/kernel/psycho_common.c: In function `psycho_dump_iommu_tags_and_data':
      arch/sparc/kernel/psycho_common.c:187: warning: long long unsigned int format, long unsigned int arg (arg 8)
      arch/sparc/kernel/psycho_common.c:193: warning: long long unsigned int format, long unsigned int arg (arg 6)
      arch/sparc/kernel/psycho_common.c: In function `psycho_pcierr_intr':
      arch/sparc/kernel/psycho_common.c:333: warning: long long unsigned int format, long unsigned int arg (arg 3)
      arch/sparc/kernel/psycho_common.c:333: warning: long long unsigned int format, long unsigned int arg (arg 4)
      
      This is due to different integer promotion in my 32 bit hosted gcc.
      The fix is to force a few constants to ULL.
      
      The following stands out from the rest:
      +#define  PSYCHO_IOMMU_TAG_VPAGE         0x7ffffULL
      +#define  PSYCHO_IOMMU_DATA_PPAGE 0xfffffffULL
      
      They were needed otherwise the expression:
      
          (data_val & PSYCHO_IOMMU_DATA_PPAGE) << IOMMU_PAGE_SHIFT)
      
      were promoted to a unsigned long and not a unsigned long long as expected.
      
      I tried the alternative solution and made IOMMU_PAGE_SHIFT an ULL but that did not help.
      The only way gcc would make this expression an unsigned long long was to
      define PSYCHO_IOMMU_DATA_PPAGE as ULL. The alternative to add a cast was
      not considered a valid solution.
      
      We had this issue in two places and this were the only places the above
      two constants are used.
      
      A small coding style diff sneaked in too. 
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      e8dc7c48
    • W
      generic swap(): sparc: rename swap() to swap_ulong() · 1a8a27c9
      Wu Fengguang 提交于
      In preparation for the introduction of a generic swap() macro.
      Signed-off-by: NWu Fengguang <fengguang.wu@intel.com>
      Acked-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      1a8a27c9
  14. 08 1月, 2009 1 次提交
  15. 07 1月, 2009 3 次提交
  16. 06 1月, 2009 2 次提交
  17. 05 1月, 2009 1 次提交
  18. 03 1月, 2009 2 次提交
  19. 01 1月, 2009 1 次提交