From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 03/10] drm/i915/dmc: add support for package_header with version 2
Date: Thu, 23 May 2019 10:43:39 -0700 [thread overview]
Message-ID: <20190523174339.GR4441@intel.com> (raw)
In-Reply-To: <20190523082420.10352-3-lucas.demarchi@intel.com>
On Thu, May 23, 2019 at 01:24:13AM -0700, Lucas De Marchi wrote:
> The only meaninful change is that it supports up to 32 fw_info entries
> rather than the previous max=20.
>
> Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
> ---
> drivers/gpu/drm/i915/intel_csr.c | 35 ++++++++++++++++++++++----------
> 1 file changed, 24 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
> index 01ae356e69cc..b9651fbe4c25 100644
> --- a/drivers/gpu/drm/i915/intel_csr.c
> +++ b/drivers/gpu/drm/i915/intel_csr.c
> @@ -71,6 +71,7 @@ MODULE_FIRMWARE(BXT_CSR_PATH);
>
> #define CSR_DEFAULT_FW_OFFSET 0xFFFFFFFF
> #define PACKAGE_MAX_FW_INFO_ENTRIES 20
> +#define PACKAGE_V2_MAX_FW_INFO_ENTRIES 32
Looking to spec I could only find
"} FWInfo[20];"
Where did you get the 32?
>
> struct intel_css_header {
> /* 0x09 for DMC */
> @@ -133,7 +134,7 @@ struct intel_package_header {
> /* DMC container header length in dwords */
> u8 header_len;
>
> - /* always value would be 0x01 */
> + /* 0x01, 0x02 */
> u8 header_ver;
>
> u8 reserved[10];
> @@ -339,7 +340,7 @@ static u32 *parse_csr_fw(struct drm_i915_private *dev_priv,
> struct intel_dmc_header *dmc_header;
> struct intel_csr *csr = &dev_priv->csr;
> const struct stepping_info *si = intel_get_stepping_info(dev_priv);
> - u32 dmc_offset, num_entries, readcount = 0, nbytes;
> + u32 dmc_offset, num_entries, max_entries, readcount = 0, nbytes;
> u32 i;
> u32 *dmc_payload;
>
> @@ -374,18 +375,30 @@ static u32 *parse_csr_fw(struct drm_i915_private *dev_priv,
> /* Extract Package Header information*/
> package_header = (struct intel_package_header *)
> &fw->data[readcount];
> - if (sizeof(struct intel_package_header) !=
> - (package_header->header_len * 4)) {
> +
> + readcount += sizeof(struct intel_package_header);
> +
> + if (package_header->header_ver == 1) {
> + max_entries = PACKAGE_MAX_FW_INFO_ENTRIES;
> + } else if (package_header->header_ver == 2) {
> + max_entries = PACKAGE_V2_MAX_FW_INFO_ENTRIES;
> + } else {
> + DRM_ERROR("DMC firmware has unknown header version %u\n",
> + package_header->header_ver);
> + return NULL;
> + }
> +
> + if (package_header->header_len * 4 !=
> + sizeof(struct intel_package_header) +
> + max_entries * sizeof(struct intel_fw_info)) {
> DRM_ERROR("DMC firmware has wrong package header length "
> - "(%u bytes)\n",
> - (package_header->header_len * 4));
> + "(%u bytes)\n", package_header->header_len * 4);
> return NULL;
> }
>
> - readcount += sizeof(struct intel_package_header);
> num_entries = package_header->num_entries;
> - if (WARN_ON(package_header->num_entries > PACKAGE_MAX_FW_INFO_ENTRIES))
> - num_entries = PACKAGE_MAX_FW_INFO_ENTRIES;
> + if (WARN_ON(package_header->num_entries > max_entries))
> + num_entries = max_entries;
>
> dmc_offset = find_dmc_fw_offset((struct intel_fw_info *)
> &fw->data[readcount], num_entries, si);
> @@ -394,9 +407,9 @@ static u32 *parse_csr_fw(struct drm_i915_private *dev_priv,
> si->stepping);
> return NULL;
> }
> - /* we always have space for PACKAGE_MAX_FW_INFO_ENTRIES */
> - readcount += PACKAGE_MAX_FW_INFO_ENTRIES * sizeof(struct intel_fw_info);
>
> + /* we always have space for max_entries, even if not all are used */
> + readcount += max_entries * sizeof(struct intel_fw_info);
> /* Convert dmc_offset into number of bytes. By default it is in dwords*/
> dmc_offset *= 4;
> readcount += dmc_offset;
> --
> 2.21.0
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2019-05-23 17:43 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-23 8:24 [PATCH 01/10] drm/i915/dmc: use kernel types Lucas De Marchi
2019-05-23 8:24 ` [PATCH 02/10] drm/i915/dmc: extract fw_info and table walk from intel_package_header Lucas De Marchi
2019-05-23 17:36 ` Rodrigo Vivi
2019-05-23 17:45 ` Srivatsa, Anusha
2019-05-23 8:24 ` [PATCH 03/10] drm/i915/dmc: add support for package_header with version 2 Lucas De Marchi
2019-05-23 17:43 ` Rodrigo Vivi [this message]
2019-05-23 17:55 ` Lucas De Marchi
2019-05-23 17:49 ` Srivatsa, Anusha
2019-05-23 8:24 ` [PATCH 04/10] drm/i915/dmc: extract function to parse css header Lucas De Marchi
2019-05-23 17:45 ` Rodrigo Vivi
2019-05-23 17:51 ` Srivatsa, Anusha
2019-05-23 8:24 ` [PATCH 05/10] drm/i915/dmc: extract function to parse package_header Lucas De Marchi
2019-05-23 18:03 ` Srivatsa, Anusha
2019-05-23 8:24 ` [PATCH 06/10] drm/i915/dmc: extract function to parse dmc_header Lucas De Marchi
2019-05-23 18:22 ` Srivatsa, Anusha
2019-05-23 8:24 ` [PATCH 07/10] drm/i915/dmc: add support to load dmc_header version 3 Lucas De Marchi
2019-05-23 18:26 ` Srivatsa, Anusha
2019-05-23 18:57 ` Rodrigo Vivi
2019-05-23 19:25 ` Lucas De Marchi
2019-05-23 23:27 ` Rodrigo Vivi
2019-05-23 8:24 ` [PATCH 08/10] drm/i915/dmc: remove redundant return in parse_csr_fw() Lucas De Marchi
2019-05-23 18:28 ` Srivatsa, Anusha
2019-05-23 8:24 ` [PATCH 09/10] drm/i915/dmc: protect against reading random memory Lucas De Marchi
2019-05-23 18:58 ` Rodrigo Vivi
2019-05-23 19:41 ` Lucas De Marchi
2019-05-23 8:24 ` [PATCH 10/10] drm/i915/dmc: protect against loading wrong firmware Lucas De Marchi
2019-05-23 19:00 ` Rodrigo Vivi
2019-05-23 16:13 ` ✓ Fi.CI.BAT: success for series starting with [01/10] drm/i915/dmc: use kernel types Patchwork
2019-05-23 17:32 ` [PATCH 01/10] " Srivatsa, Anusha
2019-05-23 17:34 ` Rodrigo Vivi
2019-05-24 23:56 ` ✓ Fi.CI.IGT: success for series starting with [01/10] " Patchwork
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=20190523174339.GR4441@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=lucas.demarchi@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.