Disable render standby
Render standby is known to cause possible hang issue on some mobile chips, so always disable it.
This commit is contained in:
parent
58a3817305
commit
f9c625e1e5
|
|
@ -2838,4 +2838,7 @@ typedef enum {
|
|||
|
||||
#define PEG_BAND_GAP_DATA 0x14d68
|
||||
|
||||
#define MCHBAR_RENDER_STANDBY 0x111B8
|
||||
#define RENDER_STANDBY_ENABLE (1 << 30)
|
||||
|
||||
#endif /* _I810_REG_H */
|
||||
|
|
|
|||
|
|
@ -3012,6 +3012,23 @@ I830SwapPipes(ScrnInfoPtr pScrn)
|
|||
}
|
||||
}
|
||||
|
||||
static void
|
||||
i830_disable_render_standby(ScrnInfoPtr pScrn)
|
||||
{
|
||||
I830Ptr pI830 = I830PTR(pScrn);
|
||||
uint32_t render_standby;
|
||||
|
||||
/* Render Standby might cause hang issue, try always disable it.*/
|
||||
if (IS_I965GM(pI830) || IS_GM45(pI830)) {
|
||||
render_standby = INREG(MCHBAR_RENDER_STANDBY);
|
||||
if (render_standby & RENDER_STANDBY_ENABLE) {
|
||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Disable render standby.\n");
|
||||
OUTREG(MCHBAR_RENDER_STANDBY,
|
||||
(render_standby & (~RENDER_STANDBY_ENABLE)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static Bool
|
||||
I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
||||
{
|
||||
|
|
@ -3291,6 +3308,8 @@ I830ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
|
|||
|
||||
i830_init_bufmgr(pScrn);
|
||||
|
||||
i830_disable_render_standby(pScrn);
|
||||
|
||||
DPRINTF(PFX, "assert( if(!I830EnterVT(scrnIndex, 0)) )\n");
|
||||
|
||||
if (pI830->accel <= ACCEL_XAA) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue