drm/gma500 : Suspend/resume issues

Guillaume Clément gclement at baobob.org
Wed May 16 16:25:52 PDT 2012


Hello,

On my Poulsbo-enabled machine, I cannot do suspend/resume since the gma500_gfx 
has left staging. I'm currently testing on linux-3.4-rc7.

After some debugging, I found out what the issue is. The crash occurs in 
psb_save_display_registers at the following lines : 

        list_for_each_entry(connector, &dev->mode_config.connector_list, head){
                connector->funcs->save(connector);
        }



It appears that connector->funcs->save is NULL : 

static const struct drm_connector_funcs psb_intel_sdvo_connector_funcs = {                                                                                                                          
        .dpms = drm_helper_connector_dpms,                                                                                                                                                          
        .detect = psb_intel_sdvo_detect,                                                                                                                                                            
        .fill_modes = drm_helper_probe_single_connector_modes,                                                                                                                                      
        .set_property = psb_intel_sdvo_set_property,                                                                                                                                                
        .destroy = psb_intel_sdvo_destroy,                                                                                                                                                          
};                                                                                                                                                                                                  

The staging version used to define a "save" function (psb_intel_sdvo_save). Was 
it broken ? If not, should we insert it back ? 


Either way, if I add an empty "save" function, suspend works again (but at the 
moment, resume still doesn't work, I'm still trying to work on that).

If I just add a "if (connector->funcs->save)", this also fixes the crash.





More information about the dri-devel mailing list