lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20090226181119.GQ6690@bombadil.infradead.org>
Date:	Thu, 26 Feb 2009 13:11:19 -0500
From:	Kyle McMartin <kyle@...radead.org>
To:	Kyle McMartin <kyle@...radead.org>
Cc:	airlied@...hat.com, jbarnes@...tuousgeek.org,
	linux-kernel@...r.kernel.org, dri-devel@...ts.sf.net
Subject: Re: [PATCH] drm: edid: don't fail to build on big endian

On Thu, Feb 26, 2009 at 12:23:27PM -0500, Kyle McMartin wrote:
> From: Kyle McMartin <kyle@...hat.com>
> 
> Currently, DRM only accidently builds on powerpc/sparc64/etc, because
> the #ifdef in drm_edid.h was using BIG_ENDIAN instead of __BIG_ENDIAN.
> 
> Since there's currently no driver which can use this on powerpc at the
> moment (radeon modesetting is not upstream yet...) instead of failing to
> build the entire DRM because of it, just bail out in the individual
> EDID functions.
> 
> Signed-off-by: Kyle McMartin <kyle@...hat.com>
> 

Ugh, I noviced a hand-edit of that email. My bad.

---
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index a839a28..3357394 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -551,6 +551,7 @@ static int add_detailed_info(struct drm_connector *connector,
 
 #define DDC_ADDR 0x50
 
+#ifdef __LITTLE_ENDIAN
 unsigned char *drm_do_probe_ddc_edid(struct i2c_adapter *adapter)
 {
 	unsigned char start = 0x0;
@@ -582,6 +583,13 @@ unsigned char *drm_do_probe_ddc_edid(struct i2c_adapter *adapter)
 	kfree(buf);
 	return NULL;
 }
+#else
+unsigned char *drm_do_probe_ddc_edid(struct i2c_adapter *adapter)
+{
+	dev_info(&adapter->dev, "EDID unsupported on big endian.\n");
+	return NULL;
+}
+#endif /*__BIG_ENDIAN*/
 EXPORT_SYMBOL(drm_do_probe_ddc_edid);
 
 static unsigned char *drm_ddc_read(struct i2c_adapter *adapter)
@@ -653,6 +661,7 @@ static unsigned char *drm_ddc_read(struct i2c_adapter *adapter)
  *
  * Return edid data or NULL if we couldn't find any.
  */
+#ifdef __LITTLE_ENDIAN
 struct edid *drm_get_edid(struct drm_connector *connector,
 			  struct i2c_adapter *adapter)
 {
@@ -675,6 +684,15 @@ struct edid *drm_get_edid(struct drm_connector *connector,
 
 	return edid;
 }
+#else
+struct edid *drm_get_edid(struct drm_connector *connector,
+			  struct i2c_adapter *adapter)
+{
+	dev_warn(&connector->dev->pdev->dev, "%s: EDID unsupported on big endian.\n",
+		drm_get_connector_name(connector));
+	return NULL;
+}
+#endif /*__BIG_ENDIAN*/
 EXPORT_SYMBOL(drm_get_edid);
 
 /**
@@ -686,6 +704,7 @@ EXPORT_SYMBOL(drm_get_edid);
  *
  * Return number of modes added or 0 if we couldn't find any.
  */
+#ifdef __LITTLE_ENDIAN
 int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
 {
 	int num_modes = 0;
@@ -729,4 +748,12 @@ int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
 
 	return num_modes;
 }
+#else
+int drm_add_edid_modes(struct drm_connector *connector, struct edid *edid)
+{
+	dev_warn(&connector->dev->pdev->dev, "%s: EDID unsupported on big endian.\n",
+		 drm_get_connector_name(connector));
+	return 0;
+}
+#endif /*__BIG_ENDIAN*/
 EXPORT_SYMBOL(drm_add_edid_modes);
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
index ff8d27a..918b619 100644
--- a/include/drm/drm_edid.h
+++ b/include/drm/drm_edid.h
@@ -28,10 +28,6 @@
 #define EDID_LENGTH 128
 #define DDC_ADDR 0x50
 
-#ifdef BIG_ENDIAN
-#error "EDID structure is little endian, need big endian versions"
-#else
-
 struct est_timings {
 	u8 t1;
 	u8 t2;
@@ -195,8 +191,6 @@ struct edid {
 	u8 checksum;
 } __attribute__((packed));
 
-#endif /* little endian structs */
-
 #define EDID_PRODUCT_ID(e) ((e)->prod_code[0] | ((e)->prod_code[1] << 8))
 
 #endif /* __DRM_EDID_H__ */
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ