Commit f5d9b7f0f9 (fix r600_enable_sclk_control()) causes kexec issues

Alex Deucher alexdeucher at gmail.com
Mon Jul 29 11:02:26 PDT 2013


On Mon, Jul 29, 2013 at 11:50 AM, Eric W. Biederman
<ebiederm at xmission.com> wrote:
>
>
> Alex Deucher <alexdeucher at gmail.com> wrote:
>>On Mon, Jul 29, 2013 at 10:09 AM, Markus Trippelsdorf
>><markus at trippelsdorf.de> wrote:
>>> On 2013.07.29 at 09:58 -0400, Alex Deucher wrote:
>>>> On Mon, Jul 29, 2013 at 3:51 AM, Markus Trippelsdorf
>>>> <markus at trippelsdorf.de> wrote:
>>>> > On my test machine Xorg doesn't start anymore when I kexec into a
>>>> > 3.11.0-rc3 kernel.
>>>>
>>>> With kexec, dpm doesn't get torn down properly which can result in a
>>>> bad hardware state when the driver loads again.  Does the attached
>>>> patch help?  It attempts to disable dpm at startup in case it wasn't
>>>> torn down properly previously.
>>>
>>> dpm initialization now works, but unfortunately GPU acceleration
>>still gets
>>> disabled:
>>
>>Stupid kexec complicates things.  We need to make sure dpm is torn
>>down before we init the rest of the GPU, but dpm needs get initialized
>>later in the init process since it depends on certain other state from
>>the driver.  I need to think about this for a bit.  I'm not sure of a
>>good way to handle this.
>
> You might just want to implement a shutdown method that cleans things up properly.   At least as a first pass until you worry about things like kexec on panic.
>
> Or can you not shutdown the graphics stack on reboot because of the need to display the kernels shutdown progress?

Does kexec actually call this shutdown method?  The driver implements
appropriate clean-up measures if it's shutdown properly.

Alex


>
> Eric
>
>>Alex
>>
>>>
>>> [drm] Initialized drm 1.1.0 20060810
>>                                                             [135/1104]
>>> [drm] radeon kernel modesetting enabled.
>>> [drm] initializing kernel modesetting (RS780 0x1002:0x9614
>>0x1043:0x834D).
>>> [drm] register mmio base: 0xFBEE0000
>>> [drm] register mmio size: 65536
>>> ATOM BIOS: 113
>>> radeon 0000:01:05.0: VRAM: 128M 0x00000000C0000000 -
>>0x00000000C7FFFFFF (128M used)
>>> radeon 0000:01:05.0: GTT: 512M 0x00000000A0000000 -
>>0x00000000BFFFFFFF
>>> [drm] Detected VRAM RAM=128M, BAR=128M
>>> [drm] RAM width 32bits DDR
>>> [TTM] Zone  kernel: Available graphics memory: 4082356 kiB
>>> [TTM] Zone   dma32: Available graphics memory: 2097152 kiB
>>> [TTM] Initializing pool allocator
>>> [TTM] Initializing DMA pool allocator
>>> [drm] radeon: 128M of VRAM memory ready
>>> [drm] radeon: 512M of GTT memory ready.
>>> [drm] GART: num cpu pages 131072, num gpu pages 131072
>>> [drm] Loading RS780 Microcode
>>> [drm] PCIE GART of 512M enabled (table at 0x00000000C0040000).
>>> radeon 0000:01:05.0: WB enabled
>>> radeon 0000:01:05.0: fence driver on ring 0 use gpu addr
>>0x00000000a0000c00 and cpu addr 0xffff880215c30c00
>>> radeon 0000:01:05.0: fence driver on ring 3 use gpu addr
>>0x00000000a0000c0c and cpu addr 0xffff880215c30c0c
>>> [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
>>> [drm] Driver supports precise vblank timestamp query.
>>> [drm] radeon: irq initialized.
>>> radeon 0000:01:05.0: setting latency timer to 64
>>> [drm] ring test on 0 succeeded in 1 usecs
>>> [drm:r600_dma_ring_test] *ERROR* radeon: ring 3 test failed
>>(0xCAFEDEAD)
>>> radeon 0000:01:05.0: disabling GPU acceleration
>>> radeon 0000:01:05.0: ffff8802161cfc00 unpin not necessary
>>> [drm] Radeon Display Connectors
>>> [drm] Connector 0:
>>> [drm]   VGA-1
>>> [drm]   DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c
>>> [drm]   Encoders:
>>> [drm]     CRT1: INTERNAL_KLDSCP_DAC1
>>> [drm] Connector 1:
>>> [drm]   DVI-D-1
>>> [drm]   HPD3
>>> [drm]   DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c
>>> [drm]   Encoders:
>>> [drm]     DFP3: INTERNAL_KLDSCP_LVTMA
>>> == power state 0 ==
>>>         ui class: none
>>>         internal class: boot
>>>         caps: video
>>>         uvd    vclk: 0 dclk: 0
>>>                 power level 0    sclk: 50000 vddc_index: 2
>>>                 power level 1    sclk: 50000 vddc_index: 2
>>>         status: c r b
>>> == power state 1 ==
>>>         ui class: performance
>>>         internal class: none
>>>         caps: video
>>>         uvd    vclk: 0 dclk: 0
>>>                 power level 0    sclk: 50000 vddc_index: 1
>>>                 power level 1    sclk: 70000 vddc_index: 2
>>>         status:
>>> == power state 2 ==
>>>         ui class: none
>>>         internal class: uvd
>>>         caps: video
>>>         uvd    vclk: 53300 dclk: 40000
>>>                 power level 0    sclk: 50000 vddc_index: 1
>>>                 power level 1    sclk: 50000 vddc_index: 1
>>>         status:
>>> switching from power state:
>>>         ui class: none
>>>         internal class: boot
>>>         caps: video
>>>         uvd    vclk: 0 dclk: 0
>>>                 power level 0    sclk: 50000 vddc_index: 2
>>>                 power level 1    sclk: 50000 vddc_index: 2
>>>         status: c b
>>> switching to power state:
>>>         ui class: performance
>>>         internal class: none
>>>         caps: video
>>>         uvd    vclk: 0 dclk: 0
>>>                 power level 0    sclk: 50000 vddc_index: 1
>>>                 power level 1    sclk: 70000 vddc_index: 2
>>>         status: r
>>> [drm] radeon: dpm initialized
>>> [drm] fb mappable at 0xF0142000
>>> [drm] vram apper at 0xF0000000
>>> [drm] size 7299072
>>> [drm] fb depth is 24
>>> [drm]    pitch is 6912
>>> fbcon: radeondrmfb (fb0)
>>>
>>> --
>>> Markus
>


More information about the dri-devel mailing list