From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Jani Nikula <jani.nikula@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 2/2] drm/i915: constify validate_vbt in VBT parsing
Date: Tue, 12 May 2015 15:09:46 +0300 [thread overview]
Message-ID: <20150512120946.GX18908@intel.com> (raw)
In-Reply-To: <1429100309-21983-2-git-send-email-jani.nikula@intel.com>
On Wed, Apr 15, 2015 at 03:18:29PM +0300, Jani Nikula wrote:
> Make input and output of validate_vbt const, and fix the fallout. We
> shouldn't modify the VBT, so make the compiler help us here.
>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
> drivers/gpu/drm/i915/intel_bios.c | 50 ++++++++++++++++++++-------------------
> 1 file changed, 26 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_bios.c b/drivers/gpu/drm/i915/intel_bios.c
> index 4e3f3f427178..b1e047c5e594 100644
> --- a/drivers/gpu/drm/i915/intel_bios.c
> +++ b/drivers/gpu/drm/i915/intel_bios.c
> @@ -205,7 +205,7 @@ get_lvds_fp_timing(const struct bdb_header *bdb,
> /* Try to find integrated panel data */
> static void
> parse_lfp_panel_data(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> const struct bdb_lvds_options *lvds_options;
> const struct bdb_lvds_lfp_data *lvds_lfp_data;
> @@ -311,7 +311,8 @@ parse_lfp_panel_data(struct drm_i915_private *dev_priv,
> }
>
> static void
> -parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> +parse_lfp_backlight(struct drm_i915_private *dev_priv,
> + const struct bdb_header *bdb)
> {
> const struct bdb_lfp_backlight_data *backlight_data;
> const struct bdb_lfp_backlight_data_entry *entry;
> @@ -349,7 +350,7 @@ parse_lfp_backlight(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> /* Try to find sdvo panel data */
> static void
> parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> const struct lvds_dvo_timing *dvo_timing;
> struct drm_display_mode *panel_fixed_mode;
> @@ -403,7 +404,7 @@ static int intel_bios_ssc_frequency(struct drm_device *dev,
>
> static void
> parse_general_features(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> struct drm_device *dev = dev_priv->dev;
> const struct bdb_general_features *general;
> @@ -429,7 +430,7 @@ parse_general_features(struct drm_i915_private *dev_priv,
>
> static void
> parse_general_definitions(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> const struct bdb_general_definitions *general;
>
> @@ -456,7 +457,7 @@ child_device_ptr(const struct bdb_general_definitions *p_defs, int i)
>
> static void
> parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> struct sdvo_device_mapping *p_mapping;
> const struct bdb_general_definitions *p_defs;
> @@ -546,7 +547,7 @@ parse_sdvo_device_mapping(struct drm_i915_private *dev_priv,
>
> static void
> parse_driver_features(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> const struct bdb_driver_features *driver;
>
> @@ -572,7 +573,7 @@ parse_driver_features(struct drm_i915_private *dev_priv,
> }
>
> static void
> -parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> +parse_edp(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
> {
> const struct bdb_edp *edp;
> const struct edp_power_seq *edp_pps;
> @@ -679,7 +680,7 @@ parse_edp(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> }
>
> static void
> -parse_psr(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> +parse_psr(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
> {
> const struct bdb_psr *psr;
> const struct psr_table *psr_table;
> @@ -790,7 +791,7 @@ static u8 *goto_next_sequence(u8 *data, int *size)
> }
>
> static void
> -parse_mipi(struct drm_i915_private *dev_priv, struct bdb_header *bdb)
> +parse_mipi(struct drm_i915_private *dev_priv, const struct bdb_header *bdb)
> {
> const struct bdb_mipi_config *start;
> const struct bdb_mipi_sequence *sequence;
> @@ -941,7 +942,7 @@ err:
> }
>
> static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> union child_device_config *it, *child = NULL;
> struct ddi_vbt_port_info *info = &dev_priv->vbt.ddi_port_info[port];
> @@ -1043,7 +1044,7 @@ static void parse_ddi_port(struct drm_i915_private *dev_priv, enum port port,
> }
>
> static void parse_ddi_ports(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> struct drm_device *dev = dev_priv->dev;
> enum port port;
> @@ -1063,7 +1064,7 @@ static void parse_ddi_ports(struct drm_i915_private *dev_priv,
>
> static void
> parse_device_mapping(struct drm_i915_private *dev_priv,
> - struct bdb_header *bdb)
> + const struct bdb_header *bdb)
> {
> const struct bdb_general_definitions *p_defs;
> const union child_device_config *p_child;
> @@ -1193,19 +1194,21 @@ static const struct dmi_system_id intel_no_opregion_vbt[] = {
> { }
> };
>
> -static struct bdb_header *validate_vbt(char *base, size_t size,
> - struct vbt_header *vbt,
> - const char *source)
> +const static struct bdb_header *validate_vbt(const void *_base, size_t size,
> + const void *_vbt,
> + const char *source)
> {
> + const char *base = _base;
> + const struct vbt_header *vbt = _vbt;
> size_t offset;
> - struct bdb_header *bdb;
> + const struct bdb_header *bdb;
>
> if (vbt == NULL) {
> DRM_DEBUG_DRIVER("VBT signature missing\n");
> return NULL;
> }
>
> - offset = (char *)vbt - base;
> + offset = (const char *)vbt - base;
I believe we're using void* arithmetic elsewhere already, so maybe just
use it here too and avoid the duplicated variables?
> if (offset + sizeof(struct vbt_header) > size) {
> DRM_DEBUG_DRIVER("VBT header incomplete\n");
> return NULL;
> @@ -1222,7 +1225,7 @@ static struct bdb_header *validate_vbt(char *base, size_t size,
> return NULL;
> }
>
> - bdb = (struct bdb_header *)(base + offset);
> + bdb = (const struct bdb_header *)(base + offset);
> if (offset + bdb->bdb_size > size) {
> DRM_DEBUG_DRIVER("BDB incomplete\n");
> return NULL;
> @@ -1247,7 +1250,7 @@ intel_parse_bios(struct drm_device *dev)
> {
> struct drm_i915_private *dev_priv = dev->dev_private;
> struct pci_dev *pdev = dev->pdev;
> - struct bdb_header *bdb = NULL;
> + const struct bdb_header *bdb = NULL;
> u8 __iomem *bios = NULL;
>
> if (HAS_PCH_NOP(dev))
> @@ -1257,9 +1260,8 @@ intel_parse_bios(struct drm_device *dev)
>
> /* XXX Should this validation be moved to intel_opregion.c? */
> if (!dmi_check_system(intel_no_opregion_vbt) && dev_priv->opregion.vbt)
> - bdb = validate_vbt((char *)dev_priv->opregion.header, OPREGION_SIZE,
> - (struct vbt_header *)dev_priv->opregion.vbt,
> - "OpRegion");
> + bdb = validate_vbt(dev_priv->opregion.header, OPREGION_SIZE,
> + dev_priv->opregion.vbt, "OpRegion");
>
> if (bdb == NULL) {
> size_t i, size;
> @@ -1272,7 +1274,7 @@ intel_parse_bios(struct drm_device *dev)
> for (i = 0; i + 4 < size; i++) {
> if (memcmp(bios + i, "$VBT", 4) == 0) {
> bdb = validate_vbt(bios, size,
> - (struct vbt_header *)(bios + i),
> + bios + i,
> "PCI ROM");
> break;
> }
> --
> 2.1.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2015-05-12 12:09 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-15 12:18 [PATCH 1/2] drm/i915: constify find_section in VBT parsing Jani Nikula
2015-04-15 12:18 ` [PATCH 2/2] drm/i915: constify validate_vbt " Jani Nikula
2015-05-12 12:09 ` Ville Syrjälä [this message]
2015-05-12 12:41 ` [PATCH v2] " Jani Nikula
2015-05-12 12:53 ` Ville Syrjälä
2015-05-12 13:07 ` Daniel Vetter
2015-05-12 12:06 ` [PATCH 1/2] drm/i915: constify find_section " Ville Syrjälä
2015-05-12 12:30 ` 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=20150512120946.GX18908@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
/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.