From: Jani Nikula <jani.nikula@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915/opregion: rvda is relative from opregion base, not absolute
Date: Thu, 13 Dec 2018 16:06:05 +0200 [thread overview]
Message-ID: <87tvjh4j3m.fsf@intel.com> (raw)
In-Reply-To: <20181213134704.30945-1-jani.nikula@intel.com>
On Thu, 13 Dec 2018, Jani Nikula <jani.nikula@intel.com> wrote:
> We've supported the opregion RVDA/RVDS fields for VBT size >= 6 KB since
> commit 04ebaadb9f2d ("drm/i915/opregion: handle VBT sizes bigger than 6
> KB"). That's three years, almost to the date.
>
> The implementation was based on spec only, in anticipation of systems
> with big VBT. Now, the spec has been changed. The RVDA is supposed to be
> relative from the beginning of opregion, not absolute address.
>
> This is obviously a backward/forward incompatible change. I've been told
> there are no systems out there using the field. Fingers crossed. This
> will still be problematic for older kernels, and we can only try to
> backport the fix.
Should add this to the commit message:
While at it, add the missing memunmap() on the failure path for
completeness.
>
> 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>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/intel_opregion.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index b8f106d9ecf8..700fddaa8d9e 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -119,7 +119,7 @@ struct opregion_asle {
> u64 fdss;
> u32 fdsp;
> u32 stat;
> - u64 rvda; /* Physical address of raw vbt data */
> + u64 rvda; /* Address of raw vbt data, relative from opregion */
> u32 rvds; /* Size of raw vbt data */
> u8 rsvd[58];
> } __packed;
> @@ -955,7 +955,13 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
>
> if (opregion->header->opregion_ver >= 2 && opregion->asle &&
> opregion->asle->rvda && opregion->asle->rvds) {
> - opregion->rvda = memremap(opregion->asle->rvda,
> + /*
> + * rvda is unsigned, relative from opregion base, and should
> + * never point within opregion.
> + */
> + WARN_ON(opregion->asle->rvda < OPREGION_SIZE);
> +
> + opregion->rvda = memremap(asls + opregion->asle->rvda,
> opregion->asle->rvds,
> MEMREMAP_WB);
> vbt = opregion->rvda;
> @@ -967,6 +973,8 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
> goto out;
> } else {
> DRM_DEBUG_KMS("Invalid VBT in ACPI OpRegion (RVDA)\n");
> + memunmap(opregion->rvda);
> + opregion->rvda = NULL;
> }
> }
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2018-12-13 14:05 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-13 13:47 [PATCH] drm/i915/opregion: rvda is relative from opregion base, not absolute Jani Nikula
2018-12-13 14:06 ` Jani Nikula [this message]
2018-12-13 14:59 ` ✗ Fi.CI.BAT: failure for " Patchwork
-- strict thread matches above, loose matches on Subject: below --
2019-01-29 13:31 [PATCH] " Jani Nikula
2019-01-31 8:24 ` Ville Syrjälä
2019-01-31 11:51 ` Jani Nikula
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87tvjh4j3m.fsf@intel.com \
--to=jani.nikula@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.