All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: David Weinehall <david.weinehall@linux.intel.com>
Cc: "intel-gfx@lists.freedesktop.org" <intel-gfx@lists.freedesktop.org>
Subject: Re: [PATCH 1/2 v2 addendum v2] drm/i915: Allow parsing of variable size child device entries from VBT
Date: Fri, 14 Aug 2015 11:42:06 +0300	[thread overview]
Message-ID: <87wpwyqn1d.fsf@intel.com> (raw)
In-Reply-To: <20150813131415.GO6150@boom>

On Thu, 13 Aug 2015, David Weinehall <david.weinehall@linux.intel.com> wrote:
> On Wed, Aug 12, 2015 at 05:19:35PM +0300, Jani Nikula wrote:
>> On Wed, 12 Aug 2015, David Weinehall <david.weinehall@linux.intel.com> wrote:
>> > Some more fixup is needed; the bits from Antti's patch
>> > that actually expanded the struct to fully fit the newer
>> > versions of the child_device_config was part of the second
>> > patch; since that patch hasn't been merged yet we need this bit:
>> >
>> > This applies on top of the patch you already merged
>> > (the Iboost patch will need corresponding adjustment to
>> >  remove the changes I split out):
>> >
>> > Expand common_child_dev_config to be able to fit all information
>> > defined by the latest VBT specification.
>> >
>> > Signed-off-by: David Weinehall <david.weinehall@linux.intel.com>
>> > CC: Antti Koskipaa <antti.koskipaa@linux.intel.com>
>> > ---
>> >  intel_bios.c |    7 ++++++-
>> >  intel_bios.h |    4 ++++
>> >  2 files changed, 10 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
>> > index 990acc20771a..40e2cc4e7419 100644
>> > --- a/drivers/gpu/drm/i915/intel_bios.c
>> > +++ b/drivers/gpu/drm/i915/intel_bios.c
>> > @@ -1038,6 +1038,10 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
>> >  		DRM_DEBUG_KMS("No general definition block is found, no devices defined.\n");
>> >  		return;
>> >  	}
>> > +	/* Remember to keep this in sync with child_device_config;
>> > +	 * whenever a new feature is added to BDB that causes that
>> > +	 * struct to grow this needs to be updated too
>> > +	 */
>> >  	if (bdb->version < 195) {
>> >  		expected_size = 33;
>> >  	} else if (bdb->version == 195) {
>> > @@ -1051,7 +1055,8 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
>> >  	}
>> >  
>> >  	if (expected_size > sizeof(*p_child)) {
>> > -		DRM_ERROR("child_device_config cannot fit in p_child\n");
>> > +		DRM_ERROR("child_device_config (size %u) cannot fit in p_child (size %u); bdb->version: %u\n",
>> > +			  expected_size, sizeof(*p_child), bdb->version);
>> 
>> drivers/gpu/drm/i915/intel_bios.c: In function ‘parse_device_mapping’:
>> drivers/gpu/drm/i915/intel_bios.c:1058:3: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 3 has type ‘long unsigned int’ [-Wformat=]
>>    DRM_ERROR("child_device_config (size %u) cannot fit in p_child (size %u); bdb->version: %u\n",
>>    ^
>>   CC [M]  drivers/gpu/drm/i915/intel_fifo_underrun.o
>
> Well spotted.  Or rather, stupid of me to forget that sizeof yields
> size_t as type, thus necessitating %zu as conversion specifier.
>
> Fixed version:
>
> Expand common_child_dev_config to be able to fit all information
> defined by the latest VBT specification.
>
> v2: Use proper conversion specifier for size_t (%zu)
>
> Signed-off-by: David Weinehall <david.weinehall@linux.intel.com>
> CC: Antti Koskipaa <antti.koskipaa@linux.intel.com>
>
>  intel_bios.c |    7 ++++++-
>  intel_bios.h |    4 ++++
>  2 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index 990acc20771a..5673ed53797b 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -1038,6 +1038,10 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
>  		DRM_DEBUG_KMS("No general definition block is found, no devices defined.\n");
>  		return;
>  	}
> +	/* Remember to keep this in sync with child_device_config;
> +	 * whenever a new feature is added to BDB that causes that
> +	 * struct to grow this needs to be updated too
> +	 */
>  	if (bdb->version < 195) {
>  		expected_size = 33;
>  	} else if (bdb->version == 195) {
> @@ -1051,7 +1055,8 @@ parse_device_mapping(struct drm_i915_private *dev_priv,
>  	}
>  
>  	if (expected_size > sizeof(*p_child)) {
> -		DRM_ERROR("child_device_config cannot fit in p_child\n");
> +		DRM_ERROR("child_device_config (size %u) cannot fit in p_child (size %zu); bdb->version: %u\n",
> +			  expected_size, sizeof(*p_child), bdb->version);
>  		return;
>  	}
>  
> diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
> index f7ad6a585129..71cb96f77870 100644
> --- a/drivers/gpu/drm/i915/intel_bios.h
> +++ b/drivers/gpu/drm/i915/intel_bios.h
> @@ -239,6 +239,10 @@ struct common_child_dev_config {
>  	u8 not_common2[2];
>  	u8 ddc_pin;
>  	u16 edid_ptr;
> +	u8 obsolete;
> +	u8 flags_1;
> +	u8 not_common3[13];
> +	u8 iboost_level;

How does this impact the if (p_defs->child_dev_size != sizeof(*p_child))
check in parse_sdvo_device_mapping()?

BR,
Jani.

>  } __packed;
>  
>  /* This field changes depending on the BDB version, so the most reliable way to

-- 
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

  parent reply	other threads:[~2015-08-14  8:39 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-10 11:10 [PATCH 0/2] VBT and I_boost fixes Antti Koskipaa
2015-07-10 11:10 ` [PATCH 1/2] drm/i915: Allow parsing of variable size child device entries from VBT Antti Koskipaa
2015-07-10 12:32   ` David Weinehall
2015-07-13  9:24   ` Daniel Vetter
2015-07-14  7:11     ` David Weinehall
2015-07-14  8:01       ` Daniel Vetter
2015-08-04 13:55   ` [PATCH 1/2 v2] " David Weinehall
2015-08-05  8:59     ` Daniel Vetter
2015-08-05 15:32       ` David Weinehall
2015-08-06 12:18         ` Daniel Vetter
2015-08-06 14:12           ` David Weinehall
2015-08-06 13:59       ` Michel Thierry
2015-08-06 14:08         ` David Weinehall
2015-08-06 15:31           ` Daniel Vetter
2015-08-12 10:29             ` [PATCH 1/2 v2 addendum] " David Weinehall
2015-08-12 12:13               ` Jani Nikula
2015-08-13 10:30                 ` David Weinehall
2015-08-13 11:35                   ` Jani Nikula
2015-08-12 14:19               ` Jani Nikula
2015-08-13 13:14                 ` [PATCH 1/2 v2 addendum v2] " David Weinehall
2015-08-14  8:07                   ` Timo Aaltonen
2015-08-14  8:42                   ` Jani Nikula [this message]
2015-08-14  9:40                     ` Jani Nikula
2015-07-10 11:10 ` [PATCH 2/2] drm/i915: Per-DDI I_boost override Antti Koskipaa
2015-08-06 14:11   ` David Weinehall
2015-08-06 15:31     ` Daniel Vetter

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=87wpwyqn1d.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=david.weinehall@linux.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.