drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
authorJani Nikula <jani.nikula@intel.com>
Fri, 8 Feb 2019 18:42:53 +0000 (20:42 +0200)
committerJani Nikula <jani.nikula@intel.com>
Tue, 12 Feb 2019 13:37:58 +0000 (15:37 +0200)
commit16eb0f34cdf4cf04cd92762c7a79f98aa51e053f
tree60d46ae4618fb77840620ca86277808f11b1d3d1
parentfc89a38d99d4b1b33ca5b0e2329f5ddea02ecfb5
drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+

Starting from opregion version 2.1 (roughly corresponding to ICL+) the
RVDA field is relative from the beginning of opregion, not absolute
address.

Fix the error path while at it.

v2: Make relative vs. absolute conditional on the opregion version,
    bumped for the purpose. Turned out there are machines relying on
    absolute RVDA in the wild.

v3: Fix the version checks

Fixes: 04ebaadb9f2d ("drm/i915/opregion: handle VBT sizes bigger than 6 KB")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Imre Deak <imre.deak@intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190208184254.24123-2-jani.nikula@intel.com
(cherry picked from commit a0f52c3d357af218a9c1f7cd906ab70426176a1a)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/intel_opregion.c