On Wed, Mar 27, 2013 at 01:49:47PM +0100, Daniel Vetter wrote: > On Wed, Mar 27, 2013 at 3:09 AM, Jesse Barnes <jbarnes at virtuousgeek.org> wrote: > > If for example the BIOS fb is too small for the dual pipe config we detect, > > we may have valid timings and such, but no fb. The pfit case also hits this > > path (though currently only fastboots if you hack your mode clock to match). > > But even when the BIOS fb is to small and the BIOS config uses the > pfit, we /should/ have an fb around. Looking a bit closer I think the > confusion stems from you reading out the adjusted mode, but treating > it like the requested mode. I think it'd be much more solid if we > store the read-out mode in the adjusted_mode (won't work otherwise > with hw state cross-checking anyway), and then do two comparisons > here: > > - Does the request mode (plus everything else) match? If so, just do > an fb_set_base call. > - Does the adjusted mode match (plus the entire output routing ofc)? > That means there's either the vga plane or a pfit in-between which we > don't like. If possible we can then play some tricks to avoid the full > modeset. > > The reason that I'm a bit freaked about about your change here is that > in a lot of places we treat crtc->fb == NULL as "no mode set". So I > fear we're breaking a few too many assumptions here with that hack, > and it simply needs more thought about what we should actually check. The check here is why we were so enthusiastic about moving to a pipe_config framework that could match up a configured pipe with an invalid fb and then just exchange the fb. -Chris -- Chris Wilson, Intel Open Source Technology Centre