1. 14 8月, 2008 17 次提交
  2. 13 8月, 2008 22 次提交
    • S
      crypto: padlock - fix VIA PadLock instruction usage with irq_ts_save/restore() · e4914012
      Suresh Siddha 提交于
      Wolfgang Walter reported this oops on his via C3 using padlock for
      AES-encryption:
      
      ##################################################################
      
      BUG: unable to handle kernel NULL pointer dereference at 000001f0
      IP: [<c01028c5>] __switch_to+0x30/0x117
      *pde = 00000000
      Oops: 0002 [#1] PREEMPT
      Modules linked in:
      
      Pid: 2071, comm: sleep Not tainted (2.6.26 #11)
      EIP: 0060:[<c01028c5>] EFLAGS: 00010002 CPU: 0
      EIP is at __switch_to+0x30/0x117
      EAX: 00000000 EBX: c0493300 ECX: dc48dd00 EDX: c0493300
      ESI: dc48dd00 EDI: c0493530 EBP: c04cff8c ESP: c04cff7c
       DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
      Process sleep (pid: 2071, ti=c04ce000 task=dc48dd00 task.ti=d2fe6000)
      Stack: dc48df30 c0493300 00000000 00000000 d2fe7f44 c03b5b43 c04cffc8 00000046
             c0131856 0000005a dc472d3c c0493300 c0493470 d983ae00 00002696 00000000
             c0239f54 00000000 c04c4000 c04cffd8 c01025fe c04f3740 00049800 c04cffe0
      Call Trace:
       [<c03b5b43>] ? schedule+0x285/0x2ff
       [<c0131856>] ? pm_qos_requirement+0x3c/0x53
       [<c0239f54>] ? acpi_processor_idle+0x0/0x434
       [<c01025fe>] ? cpu_idle+0x73/0x7f
       [<c03a4dcd>] ? rest_init+0x61/0x63
       =======================
      
      Wolfgang also found out that adding kernel_fpu_begin() and kernel_fpu_end()
      around the padlock instructions fix the oops.
      
      Suresh wrote:
      
      These padlock instructions though don't use/touch SSE registers, but it behaves
      similar to other SSE instructions. For example, it might cause DNA faults
      when cr0.ts is set. While this is a spurious DNA trap, it might cause
      oops with the recent fpu code changes.
      
      This is the code sequence  that is probably causing this problem:
      
      a) new app is getting exec'd and it is somewhere in between
         start_thread() and flush_old_exec() in the load_xyz_binary()
      
      b) At pont "a", task's fpu state (like TS_USEDFPU, used_math() etc) is
         cleared.
      
      c) Now we get an interrupt/softirq which starts using these encrypt/decrypt
         routines in the network stack. This generates a math fault (as
         cr0.ts is '1') which sets TS_USEDFPU and restores the math that is
         in the task's xstate.
      
      d) Return to exec code path, which does start_thread() which does
         free_thread_xstate() and sets xstate pointer to NULL while
         the TS_USEDFPU is still set.
      
      e) At the next context switch from the new exec'd task to another task,
         we have a scenarios where TS_USEDFPU is set but xstate pointer is null.
         This can cause an oops during unlazy_fpu() in __switch_to()
      
      Now:
      
      1) This should happen with or with out pre-emption. Viro also encountered
         similar problem with out CONFIG_PREEMPT.
      
      2) kernel_fpu_begin() and kernel_fpu_end() will fix this problem, because
         kernel_fpu_begin() will manually do a clts() and won't run in to the
         situation of setting TS_USEDFPU in step "c" above.
      
      3) This was working before the fpu changes, because its a spurious
         math fault  which doesn't corrupt any fpu/sse registers and the task's
         math state was always in an allocated state.
      
      With out the recent lazy fpu allocation changes, while we don't see oops,
      there is a possible race still present in older kernels(for example,
      while kernel is using kernel_fpu_begin() in some optimized clear/copy
      page and an interrupt/softirq happens which uses these padlock
      instructions generating DNA fault).
      
      This is the failing scenario that existed even before the lazy fpu allocation
      changes:
      
      0. CPU's TS flag is set
      
      1. kernel using FPU in some optimized copy  routine and while doing
      kernel_fpu_begin() takes an interrupt just before doing clts()
      
      2. Takes an interrupt and ipsec uses padlock instruction. And we
      take a DNA fault as TS flag is still set.
      
      3. We handle the DNA fault and set TS_USEDFPU and clear cr0.ts
      
      4. We complete the padlock routine
      
      5. Go back to step-1, which resumes clts() in kernel_fpu_begin(), finishes
      the optimized copy routine and does kernel_fpu_end(). At this point,
      we have cr0.ts again set to '1' but the task's TS_USEFPU is stilll
      set and not cleared.
      
      6. Now kernel resumes its user operation. And at the next context
      switch, kernel sees it has do a FP save as TS_USEDFPU is still set
      and then will do a unlazy_fpu() in __switch_to(). unlazy_fpu()
      will take a DNA fault, as cr0.ts is '1' and now, because we are
      in __switch_to(), math_state_restore() will get confused and will
      restore the next task's FP state and will save it in prev tasks's FP state.
      Remember, in __switch_to() we are already on the stack of the next task
      but take a DNA fault for the prev task.
      
      This causes the fpu leakage.
      
      Fix the padlock instruction usage by calling them inside the
      context of new routines irq_ts_save/restore(), which clear/restore cr0.ts
      manually in the interrupt context. This will not generate spurious DNA
      in the  context of the interrupt which will fix the oops encountered and
      the possible FPU leakage issue.
      Reported-and-bisected-by: NWolfgang Walter <wolfgang.walter@stwm.de>
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      e4914012
    • L
      crypto: talitos - Add handling for SEC 3.x treatment of link table · f3c85bc1
      Lee Nipper 提交于
      Later SEC revision requires the link table (used for scatter/gather)
      to have an extra entry to account for the total length in descriptor [4],
      which contains cipher Input and ICV.
      This only applies to decrypt, not encrypt.
      Without this change, on 837x, a gather return/length error results
      when a decryption uses a link table to gather the fragments.
      This is observed by doing a ping with size of 1447 or larger with AES,
      or a ping with size 1455 or larger with 3des.
      
      So, add check for SEC compatible "fsl,3.0" for using extra link table entry.
      Signed-off-by: NLee Nipper <lee.nipper@freescale.com>
      Signed-off-by: NKim Phillips <kim.phillips@freescale.com>
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      f3c85bc1
    • B
      firmware/memmap: cleanup · 31bad924
      Bernhard Walle 提交于
      Various cleanup the drivers/firmware/memmap (after review by AKPM):
      
          - fix kdoc to conform to the standard
          - move kdoc from header to implementation files
          - remove superfluous WARN_ON() after kmalloc()
          - WARN_ON(x); if (!x) -> if(!WARN_ON(x))
          - improve some comments
      Signed-off-by: NBernhard Walle <bwalle@suse.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      31bad924
    • A
      ALi M7101 PMU also available on Sun Netra's too · bdd87354
      Alexander Clouter 提交于
      My Sun Netra T1 AC200 has one of these... bit harsh not letting me use it
      and all :)
      
      ==========
      alex@woodchuck:~$ lspci -nn
      00:01.0 PCI bridge [0604]: Sun Microsystems Computer Corp. Simba Advanced PCI Bridge [108e:5000] (rev 13)
      00:01.1 PCI bridge [0604]: Sun Microsystems Computer Corp. Simba Advanced PCI Bridge [108e:5000] (rev 13)
      01:03.0 Non-VGA unclassified device [0000]: ALi Corporation M7101 Power Management Controller [PMU] [10b9:7101]
      01:05.1 Ethernet controller [0200]: Sun Microsystems Computer Corp. RIO GEM [108e:1101] (rev 01)
      01:05.3 USB Controller [0c03]: Sun Microsystems Computer Corp. RIO USB [108e:1103] (rev 01)
      01:07.0 ISA bridge [0601]: ALi Corporation M1533/M1535 PCI to ISA Bridge [Aladdin IV/V/V+] [10b9:1533]
      01:0c.0 Bridge [0680]: Sun Microsystems Computer Corp. RIO EBUS [108e:1100] (rev 01)
      01:0c.1 Ethernet controller [0200]: Sun Microsystems Computer Corp. RIO GEM [108e:1101] (rev 01)
      01:0c.3 USB Controller [0c03]: Sun Microsystems Computer Corp. RIO USB [108e:1103] (rev 01)
      01:0d.0 IDE interface [0101]: ALi Corporation M5229 IDE [10b9:5229] (rev c3)
      02:08.0 SCSI storage controller [0100]: LSI Logic / Symbios Logic 53C896/897 [1000:000b] (rev 07)
      02:08.1 SCSI storage controller [0100]: LSI Logic / Symbios Logic 53C896/897 [1000:000b] (rev 07)
      ==========
      Signed-off-by: NAlexander Clouter <alex@digriz.org.uk>
      Cc: Wim Van Sebroeck <wim@iguana.be>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      bdd87354
    • H
    • K
      fbcon: prevent cursor disappearance after switching to 512 character font · afa9b649
      Krzysztof Helt 提交于
      Adjust and honor the vc_scrl_erase_char for 256 and 512 character fonts.
      
      It fixes the issue with disappearing cursor during scrolling
      (http://bugzilla.kernel.org/show_bug.cgi?id=11258).  The issue was
      reported and tracked by Peter Hanzel.
      Signed-off-by: NKrzysztof Helt <krzysztof.h1@wp.pl>
      Reported-by: NPeter Hanzel <hanzelpeter@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      afa9b649
    • H
      atmel_lcdfb: add board parameter specify framebuffer memory size · ea757aca
      Haavard Skinnemoen 提交于
      Specify how much physically continuous, DMA capable memory will be
      allocated at driver initialization time.  This allow to create framebuffer
      device with larger virtual resolution.  Combine with y-panning this can be
      used to implement double buffering acceleration method.
      Signed-off-by: NStanislaw Gruszka <stf_xl@wp.pl>
      Acked-by: NHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      Acked-by: NKrzysztof Helt <krzysztof.h1@wp.pl>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ea757aca
    • H
      atmel_lcdfb: set ypanstep to 1 and enable y-panning on AT91 · e730d8b0
      Haavard Skinnemoen 提交于
      Panning in the y-direction can be done by simply changing the DMA base
      address.  This code is already in place, but FBIOPAN_DISPLAY will
      currently fail because ypanstep is 0.
      
      Set ypanstep to 1 to indicate that we do support y-panning and also set
      the necessary acceleration flags on AT91 (AVR32 already have them.)
      Signed-off-by: NHaavard Skinnemoen <hskinnemoen@atmel.com>
      Acked-by: NKrzysztof Helt <krzysztof.h1@wp.pl>
      Cc: Nicolas Ferre <nicolas.ferre@atmel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e730d8b0
    • J
      matrox maven: convert to a new-style i2c driver · 10546355
      Jean Delvare 提交于
      The legacy i2c model is going away soon, so switch to the new model.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Acked-by: NKrzysztof Helt <krzysztof.h1@wp.pl>
      Cc: Petr Vandrovec <VANDROVE@vc.cvut.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      10546355
    • J
      matroxfb: i2c structure templates clean-up · 73b7d92f
      Jean Delvare 提交于
      Clean up the use of structure templates in i2c-matroxfb. In this case
      it's more efficient to initialize the few fields we need individually.
      This makes i2c-matroxfb.ko 16% smaller on my system.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Acked-by: NKrzysztof Helt <krzysztof.h1@wp.pl>
      Cc: Petr Vandrovec <VANDROVE@vc.cvut.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      73b7d92f
    • J
      matrox maven: fix a broken error path · 5ede40f8
      Jean Delvare 提交于
      I broke an error path with d03c21ec,
      sorry about that.
      
      The machine will crash if the i2c_attach_client() or maven_init_client()
      calls fail, although nobody has yet reported this happening.
      Signed-off-by: NJean Delvare <khali@linux-fr.org>
      Acked-by: NKrzysztof Helt <krzysztof.h1@wp.pl>
      Cc: Petr Vandrovec <VANDROVE@vc.cvut.cz>
      Cc: <stable@kernel.org>		[2.6.25.x, 2.6.26.x]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5ede40f8
    • R
      GRU: fix preprocessor symbol for sparse · 6a4ad39b
      Randy Dunlap 提交于
      Fix preprocessor symbol so that sparse sees it and does not generate
      errors:
      
        drivers/misc/sgi-gru/grutables.h:286:2: error: "Unsupported architecture"
        drivers/misc/sgi-gru/grutables.h:286:2: error: "Unsupported architecture"
        drivers/misc/sgi-gru/grutables.h:286:2: error: "Unsupported architecture"
        drivers/misc/sgi-gru/grutables.h:286:2: error: "Unsupported architecture"
        drivers/misc/sgi-gru/grutlbpurge.c:185:11: error: undefined identifier 'GRUREGION'
        drivers/misc/sgi-gru/grutables.h:286:2: error: "Unsupported architecture"
        drivers/misc/sgi-gru/grutables.h:286:2: error: "Unsupported architecture"
      Signed-off-by: NRandy Dunlap <randy.dunlap@oracle.com>
      Cc: Jack Steiner <steiner@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6a4ad39b
    • D
      radeonfb: fix accel engine hangs · 969830b2
      David Miller 提交于
      Some chips appear to have the 2D engine hang during screen redraw,
      typically in a sequence of copyarea operations. This appear to be
      solved by adding a flush of the engine destination pixel cache
      and waiting for the engine to be idle before issuing the accel
      operation. The performance impact seems to be fairly small.
      
      Here is a trace on an RV370 (PCI device ID 0x5b64), it records the
      RBBM_STATUS register, then the source x/y, destination x/y, and
      width/height used for the copy:
      
      ----------------------------------------
      radeonfb_prim_copyarea: STATUS[00000140] src[210:70] dst[210:60] wh[a0:10]
      radeonfb_prim_copyarea: STATUS[00000140] src[2b8:70] dst[2b8:60] wh[88:10]
      radeonfb_prim_copyarea: STATUS[00000140] src[348:70] dst[348:60] wh[40:10]
      radeonfb_prim_copyarea: STATUS[80020140] src[390:70] dst[390:60] wh[88:10]
      radeonfb_prim_copyarea: STATUS[8002613f] src[40:80] dst[40:70] wh[28:10]
      radeonfb_prim_copyarea: STATUS[80026139] src[a8:80] dst[a8:70] wh[38:10]
      radeonfb_prim_copyarea: STATUS[80026133] src[e8:80] dst[e8:70] wh[80:10]
      radeonfb_prim_copyarea: STATUS[8002612d] src[170:80] dst[170:70] wh[30:10]
      radeonfb_prim_copyarea: STATUS[80026127] src[1a8:80] dst[1a8:70] wh[8:10]
      radeonfb_prim_copyarea: STATUS[80026121] src[1b8:80] dst[1b8:70] wh[88:10]
      radeonfb_prim_copyarea: STATUS[8002611b] src[248:80] dst[248:70] wh[68:10]
      ----------------------------------------
      
      When things are going fine the copies complete before the next ROP is
      even issued, but all of a sudden the 2D unit becomes active (bit 17 in
      RBBM_STATUS) and the FIFO retry (bit 13) and FIFO pipeline busy (bit
      14) are set as well.  The FIFO begins to backup until it becomes full.
      
      What happens next is the radeon_fifo_wait() times out, and we access
      the chip illegally leading to a bus error which usually wedges the
      box.  None of this makes it to the console screen, of course :-)
      radeon_fifo_wait() should be modified to reset the accelerator when
      this timeout happens instead of programming the chip anyways.
      
      ----------------------------------------
      radeonfb: FIFO Timeout !
      ERROR(0): Cheetah error trap taken afsr[0010080005000000] afar[000007f900800e40] TL1(0)
      ERROR(0): TPC[595114] TNPC[595118] O7[459788] TSTATE[11009601]
      ERROR(0): TPC<radeonfb_copyarea+0xfc/0x248>
      ERROR(0): M_SYND(0),  E_SYND(0), Privileged
      ERROR(0): Highest priority error (0000080000000000) "Bus error response from system bus"
      ERROR(0): D-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000]
      ERROR(0): D-cache data0[0000000000000000] data1[0000000000000000] data2[0000000000000000] data3[0000000000000000]
      ERROR(0): I-cache idx[0] tag[0000000000000000] utag[0000000000000000] stag[0000000000000000] u[0000000000000000] l[00\
      
      ERROR(0): I-cache INSN0[0000000000000000] INSN1[0000000000000000] INSN2[0000000000000000] INSN3[0000000000000000]
      ERROR(0): I-cache INSN4[0000000000000000] INSN5[0000000000000000] INSN6[0000000000000000] INSN7[0000000000000000]
      ERROR(0): E-cache idx[800e40] tag[000000000e049f4c]
      ERROR(0): E-cache data0[fffff8127d300180] data1[00000000004b5384] data2[0000000000000000] data3[0000000000000000]
      Ker:xnel panic - not syncing: Irrecoverable deferred error trap.
      ----------------------------------------
      
      Another quirk is that these copyarea calls will not happen until the
      first drivers/char/vt.c:redraw_screen() occurs.  This will only happen
      if you 1) VC switch or 2) run "consolechars" or 3) unblank the screen.
      
      This seems to happen because until a redraw_screen() the screen scrolling
      method used by fbcon is not finalized yet.  I've seen this with other fb
      drivers too.
      
      So if all you do is boot straight into X you will never see this bug on
      the relevant chips.
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: <stable@kernel.org>		[2.6.25.x, 2.6.26.x]
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      969830b2
    • P
    • R
      cpuidle: make sysfs attributes sysdev class attributes · 66198f36
      Rabin Vincent 提交于
      These attributes are really sysdev class attributes.  The incorrect
      definition leads to an oops because of recent changes which make sysdev
      attributes use a different prototype.
      
      Based on Andi's f718cd4a ("sched: make
      scheduler sysfs attributes sysdev class devices")
      Reported-by: NEric Sesterhenn <snakebyte@gmx.de>
      Signed-off-by: NRabin Vincent <rabin@rab.in>
      Acked-by: NAndi Kleen <ak@linux.intel.com>
      Cc: "Li, Shaohua" <shaohua.li@intel.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      66198f36
    • A
      rtc-isl1208: fix double removal of a sysfs entry · 001e979d
      Alessandro Zummo 提交于
      Signed-off-by: NAlessandro Zummo <a.zummo@towertech.it>
      Cc: Herbert Valerio Riedel <hvr@gnu.org>
      Cc: Hartley Sweeten <hartleys@visionengravers.com>
      Cc: David Brownell <david-b@pacbell.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      001e979d
    • D
      revert "rtc: cdev lock_kernel() pushdown" · b1c3c898
      David Brownell 提交于
      Revert commit 51a776fa ("rtc: cdev
      lock_kernel() pushdown").  The RTC framework does not need BKL
      protection.
      Signed-off-by: NDavid Brownell <dbrownell@users.sourceforge.net>
      Cc: Jonathan Corbet <corbet@lwn.net>
      Cc: Alessandro Zummo <alessandro.zummo@towertech.it>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b1c3c898
    • A
      IB/ehca: Discard double CQE for one WR · 6773f079
      Alexander Schmidt 提交于
      Under rare circumstances, the ehca hardware might erroneously generate
      two CQEs for the same WQE, which is not compliant to the IB spec and
      will cause unpredictable errors like memory being freed twice. To
      avoid this problem, the driver needs to detect the second CQE and
      discard it.
      
      For this purpose, introduce an array holding as many elements as the
      SQ of the QP, called sq_map. Each sq_map entry stores a "reported"
      flag for one WQE in the SQ. When a work request is posted to the SQ,
      the respective "reported" flag is set to zero. After the arrival of a
      CQE, the flag is set to 1, which allows to detect the occurence of a
      second CQE.
      
      The mapping between WQE / CQE and the corresponding sq_map element is
      implemented by replacing the lowest 16 Bits of the wr_id with the
      index in the queue map. The original 16 Bits are stored in the sq_map
      entry and are restored when the CQE is passed to the application.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6773f079
    • A
      IB/ehca: Check idr_find() return value · 129a10fb
      Alexander Schmidt 提交于
      The idr_find() function may fail when trying to get the QP that is
      associated with a CQE, e.g. when a QP has been destroyed between the
      generation of a CQE and the poll request for it.  In consequence, the
      return value of idr_find() must be checked and the CQE must be
      discarded when the QP cannot be found.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      129a10fb
    • A
      IB/ehca: Repoll CQ on invalid opcode · 17c2b53a
      Alexander Schmidt 提交于
      When the ehca driver detects an invalid opcode in a CQE, it currently
      passes the CQE to the application and returns with success. This patch
      changes the CQE handling to discard CQEs with invalid opcodes and to
      continue reading the next CQE from the CQ.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      17c2b53a
    • A
      IB/ehca: Rename goto label in ehca_poll_cq_one() · 6c02eed9
      Alexander Schmidt 提交于
      Rename the "poll_cq_one_read_cqe" goto label to what it actually does,
      namely "repoll".
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      6c02eed9
    • A
      IB/ehca: Update qp_state on cached modify_qp() · 51ad241a
      Alexander Schmidt 提交于
      Since the introduction of the port auto-detect mode for ehca, calls to
      modify_qp() may be cached in the device driver when the ports are not
      activated yet. When a modify_qp() call is cached, the qp state remains
      untouched until the port is activated, which will leave the qp in the
      reset state. In the reset state, however, it is not allowed to post SQ
      WQEs, which confuses applications like ib_mad.
      
      The solution for this problem is to immediately set the qp state as
      requested by modify_qp(), even when the call is cached.
      Signed-off-by: NAlexander Schmidt <alexs@linux.vnet.ibm.com>
      Signed-off-by: NRoland Dreier <rolandd@cisco.com>
      51ad241a
  3. 12 8月, 2008 1 次提交
    • C
      fix spinlock recursion in hvc_console · b1b135c8
      Christian Borntraeger 提交于
      commit 611e097d
      Author: Christian Borntraeger <borntraeger@de.ibm.com>
      hvc_console: rework setup to replace irq functions with callbacks
      introduced a spinlock recursion problem.
      
      request_irq tries to call the handler if the IRQ is shared.
      The irq handler of hvc_console calls hvc_poll and hvc_kill
      which might take the hvc_struct spinlock. Therefore, we have
      to call request_irq outside the spinlock.
      
      We can move the notifier_add safely outside the spinlock as ->data must
      not be changed by the backend. Otherwise, tty_hangup would fail anyway.
      Signed-off-by: NChristian Borntraeger <borntraeger@de.ibm.com>
      Signed-off-by: NRusty Russell <rusty@rustcorp.com.au>
      b1b135c8