From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Alexander Usyskin <alexander.usyskin@intel.com>
Cc: "Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Tvrtko Ursulin" <tursulin@ursulin.net>,
"Oren Weil" <oren.jer.weil@intel.com>,
linux-mtd@lists.infradead.org, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 10/10] drm/xe/nvm: add support for access mode
Date: Thu, 7 Nov 2024 16:38:50 -0500 [thread overview]
Message-ID: <Zy0zalKiZXB2G1-X@intel.com> (raw)
In-Reply-To: <20241107131356.2796969-11-alexander.usyskin@intel.com>
On Thu, Nov 07, 2024 at 03:13:56PM +0200, Alexander Usyskin wrote:
> Check NVM access mode from GSC FW status registers
> and overwrite access status read from SPI descriptor, if needed.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
> ---
> drivers/gpu/drm/xe/regs/xe_gsc_regs.h | 4 ++++
> drivers/gpu/drm/xe/xe_heci_gsc.c | 5 +----
> drivers/gpu/drm/xe/xe_nvm.c | 32 ++++++++++++++++++++++++++-
> 3 files changed, 36 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/regs/xe_gsc_regs.h b/drivers/gpu/drm/xe/regs/xe_gsc_regs.h
> index 7702364b65f1..9b66cc972a63 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gsc_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gsc_regs.h
> @@ -16,6 +16,10 @@
> #define MTL_GSC_HECI1_BASE 0x00116000
> #define MTL_GSC_HECI2_BASE 0x00117000
>
> +#define DG1_GSC_HECI2_BASE 0x00259000
> +#define PVC_GSC_HECI2_BASE 0x00285000
> +#define DG2_GSC_HECI2_BASE 0x00374000
> +
> #define HECI_H_CSR(base) XE_REG((base) + 0x4)
> #define HECI_H_CSR_IE REG_BIT(0)
> #define HECI_H_CSR_IS REG_BIT(1)
> diff --git a/drivers/gpu/drm/xe/xe_heci_gsc.c b/drivers/gpu/drm/xe/xe_heci_gsc.c
> index 65b2e147c4b9..27734085164e 100644
> --- a/drivers/gpu/drm/xe/xe_heci_gsc.c
> +++ b/drivers/gpu/drm/xe/xe_heci_gsc.c
> @@ -11,14 +11,11 @@
> #include "xe_device_types.h"
> #include "xe_drv.h"
> #include "xe_heci_gsc.h"
> +#include "regs/xe_gsc_regs.h"
> #include "xe_platform_types.h"
>
> #define GSC_BAR_LENGTH 0x00000FFC
>
> -#define DG1_GSC_HECI2_BASE 0x259000
> -#define PVC_GSC_HECI2_BASE 0x285000
> -#define DG2_GSC_HECI2_BASE 0x374000
> -
> static void heci_gsc_irq_mask(struct irq_data *d)
> {
> /* generic irq handling */
> diff --git a/drivers/gpu/drm/xe/xe_nvm.c b/drivers/gpu/drm/xe/xe_nvm.c
> index 787272761e42..3396bec29c97 100644
> --- a/drivers/gpu/drm/xe/xe_nvm.c
> +++ b/drivers/gpu/drm/xe/xe_nvm.c
> @@ -5,8 +5,11 @@
>
> #include <linux/intel_dg_nvm_aux.h>
> #include <linux/pci.h>
> +#include "xe_device.h"
> #include "xe_device_types.h"
> +#include "xe_mmio.h"
> #include "xe_nvm.h"
> +#include "regs/xe_gsc_regs.h"
> #include "xe_sriov.h"
>
> #define GEN12_GUNIT_NVM_BASE 0x00102040
> @@ -24,6 +27,33 @@ static void xe_nvm_release_dev(struct device *dev)
> {
> }
>
> +static bool xe_nvm_writeable_override(struct xe_device *xe)
> +{
> + struct xe_gt *gt = xe_root_mmio_gt(xe);
> + resource_size_t base;
> + bool writeable_override;
> +
> + if (xe->info.platform == XE_BATTLEMAGE) {
> + base = DG2_GSC_HECI2_BASE;
> + } else if (xe->info.platform == XE_PVC) {
> + base = PVC_GSC_HECI2_BASE;
> + } else if (xe->info.platform == XE_DG2) {
> + base = DG2_GSC_HECI2_BASE;
> + } else if (xe->info.platform == XE_DG1) {
> + base = DG1_GSC_HECI2_BASE;
> + } else {
> + drm_err(&xe->drm, "Unknown platform\n");
> + return true;
> + }
> +
> + writeable_override =
> + !(xe_mmio_read32(>->mmio, HECI_FWSTS2(base)) &
> + HECI_FW_STATUS_2_NVM_ACCESS_MODE);
> + if (writeable_override)
> + drm_info(&xe->drm, "NVM access overridden by jumper\n");
> + return writeable_override;
> +}
> +
> void xe_nvm_init(struct xe_device *xe)
> {
> struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> @@ -48,7 +78,7 @@ void xe_nvm_init(struct xe_device *xe)
>
> nvm = xe->nvm;
>
> - nvm->writeable_override = false;
> + nvm->writeable_override = xe_nvm_writeable_override(xe);
> nvm->bar.parent = &pdev->resource[0];
> nvm->bar.start = GEN12_GUNIT_NVM_BASE + pdev->resource[0].start;
> nvm->bar.end = nvm->bar.start + GEN12_GUNIT_NVM_SIZE - 1;
> --
> 2.43.0
>
WARNING: multiple messages have this Message-ID (diff)
From: Rodrigo Vivi <rodrigo.vivi@intel.com>
To: Alexander Usyskin <alexander.usyskin@intel.com>
Cc: "Miquel Raynal" <miquel.raynal@bootlin.com>,
"Richard Weinberger" <richard@nod.at>,
"Vignesh Raghavendra" <vigneshr@ti.com>,
"Lucas De Marchi" <lucas.demarchi@intel.com>,
"Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Tvrtko Ursulin" <tursulin@ursulin.net>,
"Oren Weil" <oren.jer.weil@intel.com>,
linux-mtd@lists.infradead.org, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 10/10] drm/xe/nvm: add support for access mode
Date: Thu, 7 Nov 2024 16:38:50 -0500 [thread overview]
Message-ID: <Zy0zalKiZXB2G1-X@intel.com> (raw)
In-Reply-To: <20241107131356.2796969-11-alexander.usyskin@intel.com>
On Thu, Nov 07, 2024 at 03:13:56PM +0200, Alexander Usyskin wrote:
> Check NVM access mode from GSC FW status registers
> and overwrite access status read from SPI descriptor, if needed.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>
> Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
> ---
> drivers/gpu/drm/xe/regs/xe_gsc_regs.h | 4 ++++
> drivers/gpu/drm/xe/xe_heci_gsc.c | 5 +----
> drivers/gpu/drm/xe/xe_nvm.c | 32 ++++++++++++++++++++++++++-
> 3 files changed, 36 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/regs/xe_gsc_regs.h b/drivers/gpu/drm/xe/regs/xe_gsc_regs.h
> index 7702364b65f1..9b66cc972a63 100644
> --- a/drivers/gpu/drm/xe/regs/xe_gsc_regs.h
> +++ b/drivers/gpu/drm/xe/regs/xe_gsc_regs.h
> @@ -16,6 +16,10 @@
> #define MTL_GSC_HECI1_BASE 0x00116000
> #define MTL_GSC_HECI2_BASE 0x00117000
>
> +#define DG1_GSC_HECI2_BASE 0x00259000
> +#define PVC_GSC_HECI2_BASE 0x00285000
> +#define DG2_GSC_HECI2_BASE 0x00374000
> +
> #define HECI_H_CSR(base) XE_REG((base) + 0x4)
> #define HECI_H_CSR_IE REG_BIT(0)
> #define HECI_H_CSR_IS REG_BIT(1)
> diff --git a/drivers/gpu/drm/xe/xe_heci_gsc.c b/drivers/gpu/drm/xe/xe_heci_gsc.c
> index 65b2e147c4b9..27734085164e 100644
> --- a/drivers/gpu/drm/xe/xe_heci_gsc.c
> +++ b/drivers/gpu/drm/xe/xe_heci_gsc.c
> @@ -11,14 +11,11 @@
> #include "xe_device_types.h"
> #include "xe_drv.h"
> #include "xe_heci_gsc.h"
> +#include "regs/xe_gsc_regs.h"
> #include "xe_platform_types.h"
>
> #define GSC_BAR_LENGTH 0x00000FFC
>
> -#define DG1_GSC_HECI2_BASE 0x259000
> -#define PVC_GSC_HECI2_BASE 0x285000
> -#define DG2_GSC_HECI2_BASE 0x374000
> -
> static void heci_gsc_irq_mask(struct irq_data *d)
> {
> /* generic irq handling */
> diff --git a/drivers/gpu/drm/xe/xe_nvm.c b/drivers/gpu/drm/xe/xe_nvm.c
> index 787272761e42..3396bec29c97 100644
> --- a/drivers/gpu/drm/xe/xe_nvm.c
> +++ b/drivers/gpu/drm/xe/xe_nvm.c
> @@ -5,8 +5,11 @@
>
> #include <linux/intel_dg_nvm_aux.h>
> #include <linux/pci.h>
> +#include "xe_device.h"
> #include "xe_device_types.h"
> +#include "xe_mmio.h"
> #include "xe_nvm.h"
> +#include "regs/xe_gsc_regs.h"
> #include "xe_sriov.h"
>
> #define GEN12_GUNIT_NVM_BASE 0x00102040
> @@ -24,6 +27,33 @@ static void xe_nvm_release_dev(struct device *dev)
> {
> }
>
> +static bool xe_nvm_writeable_override(struct xe_device *xe)
> +{
> + struct xe_gt *gt = xe_root_mmio_gt(xe);
> + resource_size_t base;
> + bool writeable_override;
> +
> + if (xe->info.platform == XE_BATTLEMAGE) {
> + base = DG2_GSC_HECI2_BASE;
> + } else if (xe->info.platform == XE_PVC) {
> + base = PVC_GSC_HECI2_BASE;
> + } else if (xe->info.platform == XE_DG2) {
> + base = DG2_GSC_HECI2_BASE;
> + } else if (xe->info.platform == XE_DG1) {
> + base = DG1_GSC_HECI2_BASE;
> + } else {
> + drm_err(&xe->drm, "Unknown platform\n");
> + return true;
> + }
> +
> + writeable_override =
> + !(xe_mmio_read32(>->mmio, HECI_FWSTS2(base)) &
> + HECI_FW_STATUS_2_NVM_ACCESS_MODE);
> + if (writeable_override)
> + drm_info(&xe->drm, "NVM access overridden by jumper\n");
> + return writeable_override;
> +}
> +
> void xe_nvm_init(struct xe_device *xe)
> {
> struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> @@ -48,7 +78,7 @@ void xe_nvm_init(struct xe_device *xe)
>
> nvm = xe->nvm;
>
> - nvm->writeable_override = false;
> + nvm->writeable_override = xe_nvm_writeable_override(xe);
> nvm->bar.parent = &pdev->resource[0];
> nvm->bar.start = GEN12_GUNIT_NVM_BASE + pdev->resource[0].start;
> nvm->bar.end = nvm->bar.start + GEN12_GUNIT_NVM_SIZE - 1;
> --
> 2.43.0
>
______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2024-11-07 21:39 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-07 13:13 [PATCH v2 00/10] mtd: add driver for Intel discrete graphics Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 01/10] mtd: add driver for intel graphics non-volatile memory device Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 02/10] mtd: intel-dg: implement region enumeration Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 03/10] mtd: intel-dg: implement access functions Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 04/10] mtd: intel-dg: register with mtd Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 05/10] mtd: intel-dg: align 64bit read and write Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 06/10] mtd: intel-dg: wake card on operations Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 07/10] drm/i915/nvm: add nvm device for discrete graphics Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 21:40 ` Rodrigo Vivi
2024-11-07 21:40 ` Rodrigo Vivi
2024-11-07 13:13 ` [PATCH v2 08/10] drm/i915/nvm: add support for access mode Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 21:41 ` Rodrigo Vivi
2024-11-07 21:41 ` Rodrigo Vivi
2024-11-07 13:13 ` [PATCH v2 09/10] drm/xe/nvm: add on-die non-volatile memory device Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 13:13 ` [PATCH v2 10/10] drm/xe/nvm: add support for access mode Alexander Usyskin
2024-11-07 13:13 ` Alexander Usyskin
2024-11-07 21:38 ` Rodrigo Vivi [this message]
2024-11-07 21:38 ` Rodrigo Vivi
2024-11-07 13:55 ` ✗ Fi.CI.CHECKPATCH: warning for mtd: add driver for Intel discrete graphics (rev2) Patchwork
2024-11-07 13:55 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-11-07 14:15 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-11-11 19:59 ` [PATCH v2 00/10] mtd: add driver for Intel discrete graphics Miquel Raynal
2024-11-11 19:59 ` Miquel Raynal
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=Zy0zalKiZXB2G1-X@intel.com \
--to=rodrigo.vivi@intel.com \
--cc=airlied@gmail.com \
--cc=alexander.usyskin@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=lucas.demarchi@intel.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=miquel.raynal@bootlin.com \
--cc=mripard@kernel.org \
--cc=oren.jer.weil@intel.com \
--cc=richard@nod.at \
--cc=simona@ffwll.ch \
--cc=thomas.hellstrom@linux.intel.com \
--cc=tursulin@ursulin.net \
--cc=tzimmermann@suse.de \
--cc=vigneshr@ti.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.