Commit f5d9b7f0f9 (fix r600_enable_sclk_control()) causes kexec issues

Alex Deucher alexdeucher at gmail.com
Mon Jul 29 12:53:33 PDT 2013


On Mon, Jul 29, 2013 at 2:10 PM, Eric W. Biederman
<ebiederm at xmission.com> wrote:
> Alex Deucher <alexdeucher at gmail.com> writes:
>
>> 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.
>
> Absoltuely.  All parts of the reboot path call ->shutdown.  Including
> kexec.
>
> You don't get a device remove/hotunplug but unless this is a kexec on
> panic ->shutdown is most definitely called.  Now I am talking about the
> device layer/pci layer shutdown method I don't know how gpu drivers are
> wired up.  GPU land was a little strange last I looked.  Hopefully it
> isn't so strange that there is a method named shutdown that is not wired
> up.

It doesn't look like the drm infrastructure has a shutdown callback.
The drm drivers register a drm_driver callback struct that includes an
unload callback which takes care of all the device teardown (if you
unload the module for example).  I don't know that it actually gets
called at kexec time however.  I don't know enough about how kexec
works.

Markus, does everything work ok after a reboot?  Is it just kexec that
is a problem?

Alex


More information about the dri-devel mailing list