[Intel-gfx] Fixing i915/opregion issues with firmware which lists more then 8 output devices

Jani Nikula jani.nikula at linux.intel.com
Fri Nov 6 02:19:29 PST 2015


On Thu, 05 Nov 2015, Hans de Goede <hdegoede at redhat.com> wrote:
> Hi,
>
> As discussed in the past, the i915 opregion code does not do the
> right thing wrt the CADL field when there are more then 8 outputs,
> this is causing issues on many different types of Asus laptops.
>
> This thread has details and a number of attempts to fix this:
>
> https://lkml.org/lkml/2014/2/11/1032
>
> This is impacting many users, here is an incomplete list of bug reports:
>
> https://bugzilla.kernel.org/show_bug.cgi?id=70241
> https://bugzilla.kernel.org/show_bug.cgi?id=88941
> https://bugzilla.redhat.com/show_bug.cgi?id=1144866
> https://bugzilla.redhat.com/show_bug.cgi?id=1277785
>
> And I'm pretty sure that is just the tip of the iceberg, some users
> have even analyzed their BIOS AML code and come up with an AML
> hack in an attempt to fix this:
>
> http://blog.yjwong.name/fixing-display-backlight-hotkeys-on-asus-n550jk/
>
> It would be really great of someone from Intel could step up and start
> working on a proper fix for this.

Hans, thanks for bringing this up again.

IIUC this would require something along the lines of:

- Properly map acpi video bus children and DRM connectors in
  intel_didl_outputs(). This is likely the hardest part. Save the
  display ids in struct intel_connector.

- Replace intel_setup_cadls() with functions to add/remove display ids
  from opregion CADL.

- Call the above functions as part of the modeset sequence (either from
  intel_display.c or from the encoder hooks, whichever is best) to keep
  CADL up-to-date about active outputs. Here, getting DP MST right is
  probably the hard one.

If the mapping goes wrong, and some id that used to be in CADL with the
current code gets dropped, this may regress. That's the biggest risk,
really.

For the backlight/hotkey stuff, the minimal fix may be to keep the
stupid static initialization of the CADL in intel_setup_cadls() like we
have now, but ensuring the embedded displays are included in the list.


BR,
Jani.


-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list