drm/i915/bdw: Expand FADD to 64bit
For error state, like the recent modification to ACTHD, FADD also gets an upper dword. This is useful for debug to make sure the fetch address and head are similar. Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Родитель
64bed78820
Коммит
13ffadd1f9
|
@ -359,7 +359,7 @@ struct drm_i915_error_state {
|
||||||
u64 bbaddr;
|
u64 bbaddr;
|
||||||
u64 acthd;
|
u64 acthd;
|
||||||
u32 fault_reg;
|
u32 fault_reg;
|
||||||
u32 faddr;
|
u64 faddr;
|
||||||
u32 rc_psmi; /* sleep state */
|
u32 rc_psmi; /* sleep state */
|
||||||
u32 semaphore_mboxes[I915_NUM_RINGS - 1];
|
u32 semaphore_mboxes[I915_NUM_RINGS - 1];
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,8 @@ static void i915_ring_error_state(struct drm_i915_error_state_buf *m,
|
||||||
err_printf(m, " INSTPS: 0x%08x\n", ring->instps);
|
err_printf(m, " INSTPS: 0x%08x\n", ring->instps);
|
||||||
}
|
}
|
||||||
err_printf(m, " INSTPM: 0x%08x\n", ring->instpm);
|
err_printf(m, " INSTPM: 0x%08x\n", ring->instpm);
|
||||||
err_printf(m, " FADDR: 0x%08x\n", ring->faddr);
|
err_printf(m, " FADDR: 0x%08x %08x\n", upper_32_bits(ring->faddr),
|
||||||
|
lower_32_bits(ring->faddr));
|
||||||
if (INTEL_INFO(dev)->gen >= 6) {
|
if (INTEL_INFO(dev)->gen >= 6) {
|
||||||
err_printf(m, " RC PSMI: 0x%08x\n", ring->rc_psmi);
|
err_printf(m, " RC PSMI: 0x%08x\n", ring->rc_psmi);
|
||||||
err_printf(m, " FAULT_REG: 0x%08x\n", ring->fault_reg);
|
err_printf(m, " FAULT_REG: 0x%08x\n", ring->fault_reg);
|
||||||
|
@ -781,8 +782,10 @@ static void i915_record_ring_state(struct drm_device *dev,
|
||||||
ering->instdone = I915_READ(RING_INSTDONE(ring->mmio_base));
|
ering->instdone = I915_READ(RING_INSTDONE(ring->mmio_base));
|
||||||
ering->instps = I915_READ(RING_INSTPS(ring->mmio_base));
|
ering->instps = I915_READ(RING_INSTPS(ring->mmio_base));
|
||||||
ering->bbaddr = I915_READ(RING_BBADDR(ring->mmio_base));
|
ering->bbaddr = I915_READ(RING_BBADDR(ring->mmio_base));
|
||||||
if (INTEL_INFO(dev)->gen >= 8)
|
if (INTEL_INFO(dev)->gen >= 8) {
|
||||||
|
ering->faddr |= (u64) I915_READ(RING_DMA_FADD_UDW(ring->mmio_base)) << 32;
|
||||||
ering->bbaddr |= (u64) I915_READ(RING_BBADDR_UDW(ring->mmio_base)) << 32;
|
ering->bbaddr |= (u64) I915_READ(RING_BBADDR_UDW(ring->mmio_base)) << 32;
|
||||||
|
}
|
||||||
ering->bbstate = I915_READ(RING_BBSTATE(ring->mmio_base));
|
ering->bbstate = I915_READ(RING_BBSTATE(ring->mmio_base));
|
||||||
} else {
|
} else {
|
||||||
ering->faddr = I915_READ(DMA_FADD_I8XX);
|
ering->faddr = I915_READ(DMA_FADD_I8XX);
|
||||||
|
|
|
@ -835,6 +835,7 @@ enum punit_power_well {
|
||||||
#define RING_INSTDONE(base) ((base)+0x6c)
|
#define RING_INSTDONE(base) ((base)+0x6c)
|
||||||
#define RING_INSTPS(base) ((base)+0x70)
|
#define RING_INSTPS(base) ((base)+0x70)
|
||||||
#define RING_DMA_FADD(base) ((base)+0x78)
|
#define RING_DMA_FADD(base) ((base)+0x78)
|
||||||
|
#define RING_DMA_FADD_UDW(base) ((base)+0x60) /* gen8+ */
|
||||||
#define RING_INSTPM(base) ((base)+0xc0)
|
#define RING_INSTPM(base) ((base)+0xc0)
|
||||||
#define RING_MI_MODE(base) ((base)+0x9c)
|
#define RING_MI_MODE(base) ((base)+0x9c)
|
||||||
#define INSTPS 0x02070 /* 965+ only */
|
#define INSTPS 0x02070 /* 965+ only */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче