1. 11 3月, 2009 1 次提交
    • B
      radeonfb/aty128fb: Disable broken early resume hook for PowerBooks · d801cec7
      Benjamin Herrenschmidt 提交于
      radeonfb and aty128fb have a special hook called by the PowerMac platform
      code very very early on resume from sleep to bring the screen back. This
      is useful for debugging wakup problems, but unfortunately, this also became
      a source of problems of its own.
      
      The hook is called extremely early, with interrupts still off, and the code
      path involved with that code nowadays rely on things like taking mutexes,
      GFP_KERNEL allocations, etc...
      
      In addition, the driver now relies on the PCI core to restore the standard
      config space before calling resume which doesn't happen with this early
      code path.
      
      I'm keeping the code in but commented out along with a fixup call to
      pci_restore_state(). The reason is that I still want to make it easy to
      re-enable temporarily to track wake up problems, and it's possible that
      I can revive it at some stage if we make sleeping things save to call
      in early resume using a system state.
      
      In the meantime, this should fix several reported regressions.
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      d801cec7
  2. 21 2月, 2009 1 次提交
  3. 09 2月, 2009 3 次提交
  4. 06 2月, 2009 1 次提交
  5. 02 2月, 2009 1 次提交
    • R
      fbdev/atyfb: Fix DSP config on some PowerMacs & PowerBooks · 7fbb7cad
      Risto Suominen 提交于
      Since the complete re-write in 2.6.10, some PowerMacs (At least PowerMac 5500
      and PowerMac G3 Beige rev A) with ATI Mach64 chip have suffered from unstable
      columns in their framebuffer image. This seems to depend on a value (4) read
      from PLL_EXT_CNTL register, which leads to incorrect DSP config parameters to
      be written to the chip. This patch uses a value calculated by aty_init_pll_ct
      instead, as a starting point.
      
      There are questions as to whether this should be extended to other platforms
      or maybe made dependent on specific chip types, but in the meantime, this has
      been tested on various powermacs and works for them so let's commit it.
      Signed-off-by: NRisto Suominen <Risto.Suominen@gmail.com>
      Tested-by: NMichael Pettersson <mike@it.uu.se>
      Cc: <stable@kernel.org>
      Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
      7fbb7cad
  6. 27 1月, 2009 1 次提交
  7. 07 1月, 2009 1 次提交
  8. 11 12月, 2008 1 次提交
  9. 10 12月, 2008 1 次提交
  10. 02 12月, 2008 1 次提交
  11. 17 10月, 2008 3 次提交
  12. 13 8月, 2008 1 次提交
    • 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
  13. 06 8月, 2008 3 次提交
  14. 25 7月, 2008 8 次提交
  15. 22 7月, 2008 1 次提交
  16. 23 5月, 2008 1 次提交
  17. 28 4月, 2008 7 次提交
  18. 19 2月, 2008 1 次提交
  19. 03 2月, 2008 1 次提交
  20. 27 11月, 2007 1 次提交
  21. 30 10月, 2007 1 次提交