All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/3] drm/i915/opregion: fix version check
@ 2019-02-08 18:42 Jani Nikula
  2019-02-08 18:42 ` [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+ Jani Nikula
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Jani Nikula @ 2019-02-08 18:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

The u32 version field encodes major, minor, revision and reserved. We've
basically been checking for any non-zero version.

Add opregion version logging while at it.

v2: Fix the fix of the version check

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 | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index 30ae96c5c97c..f1b841580521 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -54,7 +54,12 @@
 struct opregion_header {
 	u8 signature[16];
 	u32 size;
-	u32 opregion_ver;
+	struct {
+		u8 rsvd;
+		u8 revision;
+		u8 minor;
+		u8 major;
+	}  __packed over;
 	u8 bios_ver[32];
 	u8 vbios_ver[16];
 	u8 driver_ver[16];
@@ -924,6 +929,11 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
 	opregion->header = base;
 	opregion->lid_state = base + ACPI_CLID;
 
+	DRM_DEBUG_DRIVER("ACPI OpRegion version %u.%u.%u\n",
+			 opregion->header->over.major,
+			 opregion->header->over.minor,
+			 opregion->header->over.revision);
+
 	mboxes = opregion->header->mboxes;
 	if (mboxes & MBOX_ACPI) {
 		DRM_DEBUG_DRIVER("Public ACPI methods supported\n");
@@ -952,7 +962,7 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
 	if (dmi_check_system(intel_no_opregion_vbt))
 		goto out;
 
-	if (opregion->header->opregion_ver >= 2 && opregion->asle &&
+	if (opregion->header->over.major >= 2 && opregion->asle &&
 	    opregion->asle->rvda && opregion->asle->rvds) {
 		opregion->rvda = memremap(opregion->asle->rvda,
 					  opregion->asle->rvds,
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
  2019-02-08 18:42 [PATCH v3 1/3] drm/i915/opregion: fix version check Jani Nikula
@ 2019-02-08 18:42 ` Jani Nikula
  2019-02-08 18:57   ` Ville Syrjälä
  2019-02-08 18:42 ` [PATCH v3 3/3] HACK: drm/i915/opregion: ICL should have opregion 2.1+ and relative rvda Jani Nikula
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: Jani Nikula @ 2019-02-08 18:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

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>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_opregion.c | 24 +++++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index f1b841580521..5e00ee9270b5 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -123,7 +123,8 @@ struct opregion_asle {
 	u64 fdss;
 	u32 fdsp;
 	u32 stat;
-	u64 rvda;	/* Physical address of raw vbt data */
+	u64 rvda;	/* Physical (2.0) or relative from opregion (2.1+)
+			 * address of raw VBT data. */
 	u32 rvds;	/* Size of raw vbt data */
 	u8 rsvd[58];
 } __packed;
@@ -964,9 +965,24 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
 
 	if (opregion->header->over.major >= 2 && opregion->asle &&
 	    opregion->asle->rvda && opregion->asle->rvds) {
-		opregion->rvda = memremap(opregion->asle->rvda,
-					  opregion->asle->rvds,
+		resource_size_t rvda = opregion->asle->rvda;
+
+		/*
+		 * opregion 2.0: rvda is the physical VBT address.
+		 *
+		 * opregion 2.1+: rvda is unsigned, relative offset from
+		 * opregion base, and should never point within opregion.
+		 */
+		if (opregion->header->over.major > 2 ||
+		    opregion->header->over.minor >= 1) {
+			WARN_ON(rvda < OPREGION_SIZE);
+
+			rvda += asls;
+		}
+
+		opregion->rvda = memremap(rvda, opregion->asle->rvds,
 					  MEMREMAP_WB);
+
 		vbt = opregion->rvda;
 		vbt_size = opregion->asle->rvds;
 		if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
@@ -976,6 +992,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;
 		}
 	}
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH v3 3/3] HACK: drm/i915/opregion: ICL should have opregion 2.1+ and relative rvda
  2019-02-08 18:42 [PATCH v3 1/3] drm/i915/opregion: fix version check Jani Nikula
  2019-02-08 18:42 ` [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+ Jani Nikula
@ 2019-02-08 18:42 ` Jani Nikula
  2019-02-08 18:51 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/3] drm/i915/opregion: fix version check Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Jani Nikula @ 2019-02-08 18:42 UTC (permalink / raw)
  To: intel-gfx; +Cc: jani.nikula

Temporary CI workaround before proper opregion version bump propagates
to the machines.

v2: Rebase

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 | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
index 5e00ee9270b5..5437effcb396 100644
--- a/drivers/gpu/drm/i915/intel_opregion.c
+++ b/drivers/gpu/drm/i915/intel_opregion.c
@@ -974,7 +974,8 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
 		 * opregion base, and should never point within opregion.
 		 */
 		if (opregion->header->over.major > 2 ||
-		    opregion->header->over.minor >= 1) {
+		    opregion->header->over.minor >= 1 ||
+		    IS_ICELAKE(dev_priv)) {
 			WARN_ON(rvda < OPREGION_SIZE);
 
 			rvda += asls;
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 10+ messages in thread

* ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/3] drm/i915/opregion: fix version check
  2019-02-08 18:42 [PATCH v3 1/3] drm/i915/opregion: fix version check Jani Nikula
  2019-02-08 18:42 ` [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+ Jani Nikula
  2019-02-08 18:42 ` [PATCH v3 3/3] HACK: drm/i915/opregion: ICL should have opregion 2.1+ and relative rvda Jani Nikula
@ 2019-02-08 18:51 ` Patchwork
  2019-02-08 19:08 ` ✓ Fi.CI.BAT: success " Patchwork
  2019-02-08 23:30 ` ✓ Fi.CI.IGT: " Patchwork
  4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2019-02-08 18:51 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3,1/3] drm/i915/opregion: fix version check
URL   : https://patchwork.freedesktop.org/series/56429/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
1fd6ccae8d76 drm/i915/opregion: fix version check
cb64272c9352 drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
-:37: WARNING:BLOCK_COMMENT_STYLE: Block comments use a trailing */ on a separate line
#37: FILE: drivers/gpu/drm/i915/intel_opregion.c:127:
+			 * address of raw VBT data. */

total: 0 errors, 1 warnings, 0 checks, 43 lines checked
a309bdc64118 HACK: drm/i915/opregion: ICL should have opregion 2.1+ and relative rvda

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
  2019-02-08 18:42 ` [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+ Jani Nikula
@ 2019-02-08 18:57   ` Ville Syrjälä
  2019-02-08 19:00     ` Jani Nikula
  0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2019-02-08 18:57 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Fri, Feb 08, 2019 at 08:42:53PM +0200, Jani Nikula wrote:
> 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>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_opregion.c | 24 +++++++++++++++++++++---
>  1 file changed, 21 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> index f1b841580521..5e00ee9270b5 100644
> --- a/drivers/gpu/drm/i915/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> @@ -123,7 +123,8 @@ struct opregion_asle {
>  	u64 fdss;
>  	u32 fdsp;
>  	u32 stat;
> -	u64 rvda;	/* Physical address of raw vbt data */
> +	u64 rvda;	/* Physical (2.0) or relative from opregion (2.1+)
> +			 * address of raw VBT data. */
>  	u32 rvds;	/* Size of raw vbt data */
>  	u8 rsvd[58];
>  } __packed;
> @@ -964,9 +965,24 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
>  
>  	if (opregion->header->over.major >= 2 && opregion->asle &&
>  	    opregion->asle->rvda && opregion->asle->rvds) {
> -		opregion->rvda = memremap(opregion->asle->rvda,
> -					  opregion->asle->rvds,
> +		resource_size_t rvda = opregion->asle->rvda;
> +
> +		/*
> +		 * opregion 2.0: rvda is the physical VBT address.
> +		 *
> +		 * opregion 2.1+: rvda is unsigned, relative offset from
> +		 * opregion base, and should never point within opregion.
> +		 */
> +		if (opregion->header->over.major > 2 ||
> +		    opregion->header->over.minor >= 1) {

What happens with version 1.1?

> +			WARN_ON(rvda < OPREGION_SIZE);
> +
> +			rvda += asls;
> +		}
> +
> +		opregion->rvda = memremap(rvda, opregion->asle->rvds,
>  					  MEMREMAP_WB);
> +
>  		vbt = opregion->rvda;
>  		vbt_size = opregion->asle->rvds;
>  		if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
> @@ -976,6 +992,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;
>  		}
>  	}
>  
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
  2019-02-08 18:57   ` Ville Syrjälä
@ 2019-02-08 19:00     ` Jani Nikula
  2019-02-08 19:10       ` Ville Syrjälä
  0 siblings, 1 reply; 10+ messages in thread
From: Jani Nikula @ 2019-02-08 19:00 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Fri, 08 Feb 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Fri, Feb 08, 2019 at 08:42:53PM +0200, Jani Nikula wrote:
>> 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>
>> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> ---
>>  drivers/gpu/drm/i915/intel_opregion.c | 24 +++++++++++++++++++++---
>>  1 file changed, 21 insertions(+), 3 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
>> index f1b841580521..5e00ee9270b5 100644
>> --- a/drivers/gpu/drm/i915/intel_opregion.c
>> +++ b/drivers/gpu/drm/i915/intel_opregion.c
>> @@ -123,7 +123,8 @@ struct opregion_asle {
>>  	u64 fdss;
>>  	u32 fdsp;
>>  	u32 stat;
>> -	u64 rvda;	/* Physical address of raw vbt data */
>> +	u64 rvda;	/* Physical (2.0) or relative from opregion (2.1+)
>> +			 * address of raw VBT data. */
>>  	u32 rvds;	/* Size of raw vbt data */
>>  	u8 rsvd[58];
>>  } __packed;
>> @@ -964,9 +965,24 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
>>  
>>  	if (opregion->header->over.major >= 2 && opregion->asle &&

Push this line to short term memory.

>>  	    opregion->asle->rvda && opregion->asle->rvds) {
>> -		opregion->rvda = memremap(opregion->asle->rvda,
>> -					  opregion->asle->rvds,
>> +		resource_size_t rvda = opregion->asle->rvda;
>> +
>> +		/*
>> +		 * opregion 2.0: rvda is the physical VBT address.
>> +		 *
>> +		 * opregion 2.1+: rvda is unsigned, relative offset from
>> +		 * opregion base, and should never point within opregion.
>> +		 */
>> +		if (opregion->header->over.major > 2 ||
>> +		    opregion->header->over.minor >= 1) {
>
> What happens with version 1.1?

Pop. ;)

BR,
Jani.

>
>> +			WARN_ON(rvda < OPREGION_SIZE);
>> +
>> +			rvda += asls;
>> +		}
>> +
>> +		opregion->rvda = memremap(rvda, opregion->asle->rvds,
>>  					  MEMREMAP_WB);
>> +
>>  		vbt = opregion->rvda;
>>  		vbt_size = opregion->asle->rvds;
>>  		if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
>> @@ -976,6 +992,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;
>>  		}
>>  	}
>>  
>> -- 
>> 2.20.1

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

* ✓ Fi.CI.BAT: success for series starting with [v3,1/3] drm/i915/opregion: fix version check
  2019-02-08 18:42 [PATCH v3 1/3] drm/i915/opregion: fix version check Jani Nikula
                   ` (2 preceding siblings ...)
  2019-02-08 18:51 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/3] drm/i915/opregion: fix version check Patchwork
@ 2019-02-08 19:08 ` Patchwork
  2019-02-08 23:30 ` ✓ Fi.CI.IGT: " Patchwork
  4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2019-02-08 19:08 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3,1/3] drm/i915/opregion: fix version check
URL   : https://patchwork.freedesktop.org/series/56429/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5568 -> Patchwork_12181
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/56429/revisions/1/mbox/

Known issues
------------

  Here are the changes found in Patchwork_12181 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-kbl-7567u:       PASS -> DMESG-WARN [fdo#105602] / [fdo#108529] +1

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-kbl-7567u:       PASS -> DMESG-FAIL [fdo#105079]

  * igt@kms_flip@basic-flip-vs-dpms:
    - fi-skl-6700hq:      PASS -> DMESG-WARN [fdo#105998]

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
    - fi-byt-clapper:     PASS -> FAIL [fdo#103191] / [fdo#107362]

  * igt@pm_rpm@module-reload:
    - fi-skl-6600u:       PASS -> DMESG-WARN [fdo#109513]
    - fi-kbl-7567u:       PASS -> DMESG-WARN [fdo#108529]

  
#### Possible fixes ####

  * igt@i915_selftest@live_execlists:
    - fi-apl-guc:         INCOMPLETE [fdo#103927] -> PASS

  * igt@kms_busy@basic-flip-b:
    - fi-gdg-551:         FAIL [fdo#103182] -> PASS

  * igt@kms_frontbuffer_tracking@basic:
    - {fi-icl-u2}:        FAIL [fdo#103167] -> PASS

  * igt@pm_rpm@module-reload:
    - fi-skl-6770hq:      FAIL [fdo#108511] -> PASS
    - {fi-whl-u}:         DMESG-WARN [fdo#109513] -> PASS

  * igt@prime_vgem@basic-fence-flip:
    - fi-gdg-551:         DMESG-FAIL [fdo#103182] -> PASS

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#105079]: https://bugs.freedesktop.org/show_bug.cgi?id=105079
  [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
  [fdo#105998]: https://bugs.freedesktop.org/show_bug.cgi?id=105998
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
  [fdo#108529]: https://bugs.freedesktop.org/show_bug.cgi?id=108529
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#108654]: https://bugs.freedesktop.org/show_bug.cgi?id=108654
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109513]: https://bugs.freedesktop.org/show_bug.cgi?id=109513


Participating hosts (48 -> 44)
------------------------------

  Additional (2): fi-icl-u3 fi-pnv-d510 
  Missing    (6): fi-kbl-soraka fi-ilk-m540 fi-byt-squawks fi-bsw-cyan fi-glk-j4005 fi-bdw-samus 


Build changes
-------------

    * Linux: CI_DRM_5568 -> Patchwork_12181

  CI_DRM_5568: d4794b009ccd1ef8816e15c833f07ab696911a8d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4815: 947301563259726b65ce47d3a3fe37931ed42efe @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12181: a309bdc64118ee6306c289cc03e68d7dc27de907 @ git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a309bdc64118 HACK: drm/i915/opregion: ICL should have opregion 2.1+ and relative rvda
cb64272c9352 drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
1fd6ccae8d76 drm/i915/opregion: fix version check

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12181/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
  2019-02-08 19:00     ` Jani Nikula
@ 2019-02-08 19:10       ` Ville Syrjälä
  2019-02-11 15:36         ` Jani Nikula
  0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2019-02-08 19:10 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

On Fri, Feb 08, 2019 at 09:00:59PM +0200, Jani Nikula wrote:
> On Fri, 08 Feb 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> > On Fri, Feb 08, 2019 at 08:42:53PM +0200, Jani Nikula wrote:
> >> 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>
> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> >> ---
> >>  drivers/gpu/drm/i915/intel_opregion.c | 24 +++++++++++++++++++++---
> >>  1 file changed, 21 insertions(+), 3 deletions(-)
> >> 
> >> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
> >> index f1b841580521..5e00ee9270b5 100644
> >> --- a/drivers/gpu/drm/i915/intel_opregion.c
> >> +++ b/drivers/gpu/drm/i915/intel_opregion.c
> >> @@ -123,7 +123,8 @@ struct opregion_asle {
> >>  	u64 fdss;
> >>  	u32 fdsp;
> >>  	u32 stat;
> >> -	u64 rvda;	/* Physical address of raw vbt data */
> >> +	u64 rvda;	/* Physical (2.0) or relative from opregion (2.1+)
> >> +			 * address of raw VBT data. */
> >>  	u32 rvds;	/* Size of raw vbt data */
> >>  	u8 rsvd[58];
> >>  } __packed;
> >> @@ -964,9 +965,24 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
> >>  
> >>  	if (opregion->header->over.major >= 2 && opregion->asle &&
> 
> Push this line to short term memory.

Stack overflow.

Series is
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> 
> >>  	    opregion->asle->rvda && opregion->asle->rvds) {
> >> -		opregion->rvda = memremap(opregion->asle->rvda,
> >> -					  opregion->asle->rvds,
> >> +		resource_size_t rvda = opregion->asle->rvda;
> >> +
> >> +		/*
> >> +		 * opregion 2.0: rvda is the physical VBT address.
> >> +		 *
> >> +		 * opregion 2.1+: rvda is unsigned, relative offset from
> >> +		 * opregion base, and should never point within opregion.
> >> +		 */
> >> +		if (opregion->header->over.major > 2 ||
> >> +		    opregion->header->over.minor >= 1) {
> >
> > What happens with version 1.1?
> 
> Pop. ;)
> 
> BR,
> Jani.
> 
> >
> >> +			WARN_ON(rvda < OPREGION_SIZE);
> >> +
> >> +			rvda += asls;
> >> +		}
> >> +
> >> +		opregion->rvda = memremap(rvda, opregion->asle->rvds,
> >>  					  MEMREMAP_WB);
> >> +
> >>  		vbt = opregion->rvda;
> >>  		vbt_size = opregion->asle->rvds;
> >>  		if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
> >> @@ -976,6 +992,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;
> >>  		}
> >>  	}
> >>  
> >> -- 
> >> 2.20.1
> 
> -- 
> Jani Nikula, Intel Open Source Graphics Center

-- 
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* ✓ Fi.CI.IGT: success for series starting with [v3,1/3] drm/i915/opregion: fix version check
  2019-02-08 18:42 [PATCH v3 1/3] drm/i915/opregion: fix version check Jani Nikula
                   ` (3 preceding siblings ...)
  2019-02-08 19:08 ` ✓ Fi.CI.BAT: success " Patchwork
@ 2019-02-08 23:30 ` Patchwork
  4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2019-02-08 23:30 UTC (permalink / raw)
  To: Jani Nikula; +Cc: intel-gfx

== Series Details ==

Series: series starting with [v3,1/3] drm/i915/opregion: fix version check
URL   : https://patchwork.freedesktop.org/series/56429/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5568_full -> Patchwork_12181_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Known issues
------------

  Here are the changes found in Patchwork_12181_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_suspend@shrink:
    - shard-glk:          NOTRUN -> DMESG-WARN [fdo#109244]

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
    - shard-kbl:          NOTRUN -> DMESG-WARN [fdo#107956]

  * igt@kms_cursor_crc@cursor-128x42-onscreen:
    - shard-kbl:          NOTRUN -> FAIL [fdo#103232]

  * igt@kms_cursor_crc@cursor-256x256-random:
    - shard-glk:          NOTRUN -> FAIL [fdo#103232]

  * igt@kms_cursor_crc@cursor-64x64-suspend:
    - shard-snb:          PASS -> INCOMPLETE [fdo#105411]

  * igt@kms_cursor_crc@cursor-alpha-opaque:
    - shard-glk:          PASS -> FAIL [fdo#109350]

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-glk:          NOTRUN -> FAIL [fdo#103167]

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
    - shard-glk:          PASS -> FAIL [fdo#103167]

  * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
    - shard-apl:          NOTRUN -> FAIL [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-b-alpha-basic:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145] / [fdo#108590]

  * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145]

  * igt@kms_universal_plane@universal-plane-pipe-b-functional:
    - shard-kbl:          NOTRUN -> FAIL [fdo#103166]

  * igt@kms_universal_plane@universal-plane-pipe-c-functional:
    - shard-glk:          PASS -> FAIL [fdo#103166] +1
    - shard-apl:          PASS -> FAIL [fdo#103166]

  
#### Possible fixes ####

  * igt@gem_eio@reset-stress:
    - shard-hsw:          INCOMPLETE [fdo#103540] / [fdo#109482] -> PASS

  * igt@kms_cursor_crc@cursor-256x256-dpms:
    - shard-apl:          FAIL [fdo#103232] -> PASS +1

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-apl:          FAIL [fdo#103167] -> PASS +1

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-onoff:
    - shard-glk:          FAIL [fdo#103167] -> PASS +3

  * igt@kms_plane_multiple@atomic-pipe-c-tiling-x:
    - shard-glk:          FAIL [fdo#103166] -> PASS

  * igt@kms_setmode@basic:
    - shard-kbl:          FAIL [fdo#99912] -> PASS

  
#### Warnings ####

  * igt@kms_frontbuffer_tracking@fbc-farfromfence:
    - shard-snb:          DMESG-FAIL [fdo#107469] -> INCOMPLETE [fdo#105411]

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103166]: https://bugs.freedesktop.org/show_bug.cgi?id=103166
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
  [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
  [fdo#105411]: https://bugs.freedesktop.org/show_bug.cgi?id=105411
  [fdo#107469]: https://bugs.freedesktop.org/show_bug.cgi?id=107469
  [fdo#107956]: https://bugs.freedesktop.org/show_bug.cgi?id=107956
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#108590]: https://bugs.freedesktop.org/show_bug.cgi?id=108590
  [fdo#109244]: https://bugs.freedesktop.org/show_bug.cgi?id=109244
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109350]: https://bugs.freedesktop.org/show_bug.cgi?id=109350
  [fdo#109482]: https://bugs.freedesktop.org/show_bug.cgi?id=109482
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (7 -> 5)
------------------------------

  Missing    (2): shard-skl shard-iclb 


Build changes
-------------

    * Linux: CI_DRM_5568 -> Patchwork_12181

  CI_DRM_5568: d4794b009ccd1ef8816e15c833f07ab696911a8d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4815: 947301563259726b65ce47d3a3fe37931ed42efe @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12181: a309bdc64118ee6306c289cc03e68d7dc27de907 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12181/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+
  2019-02-08 19:10       ` Ville Syrjälä
@ 2019-02-11 15:36         ` Jani Nikula
  0 siblings, 0 replies; 10+ messages in thread
From: Jani Nikula @ 2019-02-11 15:36 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Fri, 08 Feb 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Fri, Feb 08, 2019 at 09:00:59PM +0200, Jani Nikula wrote:
>> On Fri, 08 Feb 2019, Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
>> > On Fri, Feb 08, 2019 at 08:42:53PM +0200, Jani Nikula wrote:
>> >> 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>
>> >> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
>> >> ---
>> >>  drivers/gpu/drm/i915/intel_opregion.c | 24 +++++++++++++++++++++---
>> >>  1 file changed, 21 insertions(+), 3 deletions(-)
>> >> 
>> >> diff --git a/drivers/gpu/drm/i915/intel_opregion.c b/drivers/gpu/drm/i915/intel_opregion.c
>> >> index f1b841580521..5e00ee9270b5 100644
>> >> --- a/drivers/gpu/drm/i915/intel_opregion.c
>> >> +++ b/drivers/gpu/drm/i915/intel_opregion.c
>> >> @@ -123,7 +123,8 @@ struct opregion_asle {
>> >>  	u64 fdss;
>> >>  	u32 fdsp;
>> >>  	u32 stat;
>> >> -	u64 rvda;	/* Physical address of raw vbt data */
>> >> +	u64 rvda;	/* Physical (2.0) or relative from opregion (2.1+)
>> >> +			 * address of raw VBT data. */
>> >>  	u32 rvds;	/* Size of raw vbt data */
>> >>  	u8 rsvd[58];
>> >>  } __packed;
>> >> @@ -964,9 +965,24 @@ int intel_opregion_setup(struct drm_i915_private *dev_priv)
>> >>  
>> >>  	if (opregion->header->over.major >= 2 && opregion->asle &&
>> 
>> Push this line to short term memory.
>
> Stack overflow.
>
> Series is
> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

Thanks, pushed patches 1&2 to dinq.

BR,
Jani.

>
>> 
>> >>  	    opregion->asle->rvda && opregion->asle->rvds) {
>> >> -		opregion->rvda = memremap(opregion->asle->rvda,
>> >> -					  opregion->asle->rvds,
>> >> +		resource_size_t rvda = opregion->asle->rvda;
>> >> +
>> >> +		/*
>> >> +		 * opregion 2.0: rvda is the physical VBT address.
>> >> +		 *
>> >> +		 * opregion 2.1+: rvda is unsigned, relative offset from
>> >> +		 * opregion base, and should never point within opregion.
>> >> +		 */
>> >> +		if (opregion->header->over.major > 2 ||
>> >> +		    opregion->header->over.minor >= 1) {
>> >
>> > What happens with version 1.1?
>> 
>> Pop. ;)
>> 
>> BR,
>> Jani.
>> 
>> >
>> >> +			WARN_ON(rvda < OPREGION_SIZE);
>> >> +
>> >> +			rvda += asls;
>> >> +		}
>> >> +
>> >> +		opregion->rvda = memremap(rvda, opregion->asle->rvds,
>> >>  					  MEMREMAP_WB);
>> >> +
>> >>  		vbt = opregion->rvda;
>> >>  		vbt_size = opregion->asle->rvds;
>> >>  		if (intel_bios_is_valid_vbt(vbt, vbt_size)) {
>> >> @@ -976,6 +992,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;
>> >>  		}
>> >>  	}
>> >>  
>> >> -- 
>> >> 2.20.1
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center

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

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2019-02-11 16:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-08 18:42 [PATCH v3 1/3] drm/i915/opregion: fix version check Jani Nikula
2019-02-08 18:42 ` [PATCH v3 2/3] drm/i915/opregion: rvda is relative from opregion base in opregion 2.1+ Jani Nikula
2019-02-08 18:57   ` Ville Syrjälä
2019-02-08 19:00     ` Jani Nikula
2019-02-08 19:10       ` Ville Syrjälä
2019-02-11 15:36         ` Jani Nikula
2019-02-08 18:42 ` [PATCH v3 3/3] HACK: drm/i915/opregion: ICL should have opregion 2.1+ and relative rvda Jani Nikula
2019-02-08 18:51 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/3] drm/i915/opregion: fix version check Patchwork
2019-02-08 19:08 ` ✓ Fi.CI.BAT: success " Patchwork
2019-02-08 23:30 ` ✓ Fi.CI.IGT: " Patchwork

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.