kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc2

Helge Deller deller at gmx.de
Mon Oct 27 11:51:05 PDT 2014


With kernel 3.18.0-rc2 I'm getting the following kernel panic
in drm_calc_vbltimestamp_from_scanoutpos()on the parisc platform.

As you can see in the attached log, the ring test fails.
This is not a new bug - it has failed with older kernels too and of course it would be nice to get it fixed at some point:
[drm:r100_ring_test] *ERROR* radeon: ring test failed (scratch(0x15E4)=0xCAFEDEAD)

But what's new here now, is that the radeon driver segfaults afterwards.
There were no monitors attached to the radeon card.

I haven't tested this patch yet, but would it be the right fix? :
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 8309b11..0358676 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -795,6 +795,8 @@ int radeon_get_vblank_timestamp_kms(struct drm_device *dev, int crtc,
  
         /* Get associated drm_crtc: */
         drmcrtc = &rdev->mode_info.crtcs[crtc]->base;
+       if (!drmcrtc)
+               return -EINVAL;


Helge

...
[   11.312000] Linux agpgart interface v0.103
[   11.360000] quicksilver: IO PDIR shared with sba_iommu
[   11.436000]  (null): AGP aperture is 512M @ 0x60000000
[   11.500000] [drm] Initialized drm 1.1.0 20060810
[   11.552000] [drm] radeon kernel modesetting enabled.
[   11.628000] radeon 0000:80:00.0: enabling SERR and PARITY (0187 -> 01c7)
[   11.708000] [drm] initializing kernel modesetting (R300 0x1002:0x4E47 0x1002:0x0152).
[   11.816000] [drm] register mmio base: 0xD0030000
[   11.868000] [drm] register mmio size: 65536
[   11.980000] radeon 0000:80:00.0: putting AGP V3 device into 8x mode
[   12.056000] radeon 0000:80:00.0: GTT: 512M 0x60000000 - 0x7FFFFFFF
[   12.132000] [drm] Generation 1 PCI interface in multifunction mode
[   12.204000] [drm] Limiting VRAM to one aperture
[   12.260000] radeon 0000:80:00.0: VRAM: 256M 0xFFFFFFFFC8000000 - 0xFFFFFFFFD7FFFFFF (256M used)
[   12.364000] [drm] Detected VRAM RAM=256M, BAR=128M
[   12.420000] [drm] RAM width 256bits DDR
[   12.468000] [TTM] Zone  kernel: Available graphics memory: 4112944 kiB
[   12.544000] [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
[   12.624000] [TTM] Initializing pool allocator
[   12.676000] [drm] radeon: 256M of VRAM memory ready
[   12.732000] [drm] radeon: 512M of GTT memory ready.
[   12.792000] [drm] radeon: 2 quad pipes, 1 Z pipes initialized.
[   12.876000] radeon 0000:80:00.0: WB disabled
[   12.928000] radeon 0000:80:00.0: fence driver on ring 0 use gpu addr 0x0000000060000000 and cpu addr 0x0000000000048000
[   13.056000] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[   13.136000] [drm] Driver supports precise vblank timestamp query.
[   13.208000] [drm] radeon: irq initialized.
[   13.256000] [drm] Loading R300 Microcode
[   13.320000] [drm] radeon: ring at 0x0000000060001000
[   13.576000] [drm:r100_ring_test] *ERROR* radeon: ring test failed (scratch(0x15E4)=0xCAFEDEAD)
[   13.676000] [drm:r100_cp_init] *ERROR* radeon: cp isn't working (-22).
[   13.756000] radeon 0000:80:00.0: failed initializing CP (-22).
[   13.824000] radeon 0000:80:00.0: Disabling GPU acceleration
[   14.088000] [drm:r100_cp_fini] *ERROR* Wait for CP idle timeout, shutting down CP.
[   14.192000] [drm] radeon: cp finalized
[   14.704000] Backtrace:
[   14.732000]  [<0000000040647740>] radeon_get_vblank_timestamp_kms+0x90/0xa8
[   14.816000]  [<00000000405e7590>] drm_get_last_vbltimestamp+0x98/0xc0
[   14.892000]  [<00000000405e7b28>] vblank_disable_and_save+0xb8/0x350
[   14.968000]  [<00000000405ea270>] drm_vblank_cleanup+0xc8/0x158
[   15.040000]  [<0000000040690ab0>] radeon_irq_kms_fini+0x40/0xb8
[   15.112000]  [<00000000406a75c0>] r300_init+0x500/0x5a8
[   15.172000]  [<0000000040643304>] radeon_device_init+0xdac/0x1150
[   15.248000]  [<0000000040646bfc>] radeon_driver_load_kms+0x124/0x238
[   15.324000]  [<00000000405ec65c>] drm_dev_register+0x11c/0x250
[   15.392000]  [<00000000405f1994>] drm_get_pci_dev+0x1bc/0x2d8
[   15.460000]  [<000000004061e7d0>] radeon_pci_probe+0x128/0x148
[   15.532000]  [<0000000040513920>] pci_device_probe+0xb0/0x158
[   15.600000]  [<00000000407c4a60>] driver_probe_device+0x148/0x3c0
[   15.672000]  [<00000000407c4dbc>] __driver_attach+0xe4/0x160
[   15.740000]  [<00000000407c139c>] bus_for_each_dev+0xac/0x140
[   15.812000]  [<00000000407c40a0>] driver_attach+0x48/0x60
[ 15.876000]
[ 15.892000]
[   15.912000] Kernel Fault: Code=26 regs=000000007fcb1230 (Addr=000000000000024c)
[   16.000000] CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc1-64bit+ #562
[   16.084000] task: 000000007fca8000 ti: 000000007fcb0000 task.ti: 000000007fcb0000
[ 17.276000]
[   17.296000] IASQ: 0000000000000000 0000000000000000 IAOQ: 00000000405e95e8 00000000405e95ec
[   17.396000]  IIR: 4aad0498    ISR: 0000000000000000  IOR: 000000000000024c
[   17.476000]  CPU:        1   CR30: 000000007fcb0000 CR31: 9cb9a6fbd01f400f
[   17.560000]  ORIG_R28: 000000007fcb1420
[   17.604000]  IAOQ[0]: drm_calc_vbltimestamp_from_scanoutpos+0xe0/0x518
[   17.684000]  IAOQ[1]: drm_calc_vbltimestamp_from_scanoutpos+0xe4/0x518
[   17.760000]  RP(r2): radeon_get_vblank_timestamp_kms+0x90/0xa8
[   17.832000] Backtrace:
[   17.860000]  [<0000000040647740>] radeon_get_vblank_timestamp_kms+0x90/0xa8
[   17.944000]  [<00000000405e7590>] drm_get_last_vbltimestamp+0x98/0xc0
[   18.020000]  [<00000000405e7b28>] vblank_disable_and_save+0xb8/0x350
[   18.096000]  [<00000000405ea270>] drm_vblank_cleanup+0xc8/0x158
[   18.168000]  [<0000000040690ab0>] radeon_irq_kms_fini+0x40/0xb8
[   18.240000]  [<00000000406a75c0>] r300_init+0x500/0x5a8
[   18.300000]  [<0000000040643304>] radeon_device_init+0xdac/0x1150
[   18.376000]  [<0000000040646bfc>] radeon_driver_load_kms+0x124/0x238
[   18.452000]  [<00000000405ec65c>] drm_dev_register+0x11c/0x250
[   18.520000]  [<00000000405f1994>] drm_get_pci_dev+0x1bc/0x2d8
[   18.588000]  [<000000004061e7d0>] radeon_pci_probe+0x128/0x148
[   18.660000]  [<0000000040513920>] pci_device_probe+0xb0/0x158
[   18.728000]  [<00000000407c4a60>] driver_probe_device+0x148/0x3c0
[   18.800000]  [<00000000407c4dbc>] __driver_attach+0xe4/0x160
[   18.868000]  [<00000000407c139c>] bus_for_each_dev+0xac/0x140
[   18.936000]  [<00000000407c40a0>] driver_attach+0x48/0x60
[   19.324000] Kernel panic - not syncing: Kernel Fault



More information about the dri-devel mailing list