From: Jani Nikula <jani.nikula@linux.intel.com>
To: Sean Z Huang <sean.z.huang@intel.com>,
sean.z.huang@intel.com, Intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PXP CLEAN PATCH v06 07/27] drm/i915/pxp: Add PXP-related registers into allowlist
Date: Mon, 23 Nov 2020 17:05:59 +0200 [thread overview]
Message-ID: <877dqcnmeg.fsf@intel.com> (raw)
In-Reply-To: <20201114003716.4875-7-sean.z.huang@intel.com>
On Fri, 13 Nov 2020, Sean Z Huang <sean.z.huang@intel.com> wrote:
> From: "Huang, Sean Z" <sean.z.huang@intel.com>
>
> Add several PXP-related reg into allowlist to allow
> ring3 driver to read the those register values.
>
> Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com>
> ---
> drivers/gpu/drm/i915/i915_reg.h | 8 ++++
> drivers/gpu/drm/i915/intel_uncore.c | 57 +++++++++++++++++++++--------
> 2 files changed, 50 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index faf6b06145fa..5c51c9df8b28 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -12419,4 +12419,12 @@ enum skl_power_gate {
> #define TGL_ROOT_DEVICE_SKU_ULX 0x2
> #define TGL_ROOT_DEVICE_SKU_ULT 0x4
>
> +/* Registers for passlist check */
allowlist
> +#define PXP_REG_01_LOWERBOUND _MMIO(0x32260)
> +#define PXP_REG_01_UPPERBOUND _MMIO(0x32268)
> +#define PXP_REG_02_LOWERBOUND _MMIO(0x32670)
> +#define PXP_REG_02_UPPERBOUND _MMIO(0x32678)
> +#define PXP_REG_03_LOWERBOUND _MMIO(0x32860)
> +#define PXP_REG_03_UPPERBOUND _MMIO(0x32c7c)
> +
> #endif /* _I915_REG_H_ */
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index c9ef0025c60e..670856e095c4 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1990,16 +1990,41 @@ void intel_uncore_fini_mmio(struct intel_uncore *uncore)
> }
>
> static const struct reg_allowlist {
> - i915_reg_t offset_ldw;
> + i915_reg_t offset_ldw_lowerbound;
> + i915_reg_t offset_ldw_upperbound;
> i915_reg_t offset_udw;
> u16 gen_mask;
> u8 size;
> -} reg_read_allowlist[] = { {
> - .offset_ldw = RING_TIMESTAMP(RENDER_RING_BASE),
> +} reg_read_allowlist[] = {
> + {
> + .offset_ldw_lowerbound = RING_TIMESTAMP(RENDER_RING_BASE),
> + .offset_ldw_upperbound = RING_TIMESTAMP(RENDER_RING_BASE),
> .offset_udw = RING_TIMESTAMP_UDW(RENDER_RING_BASE),
> .gen_mask = INTEL_GEN_MASK(4, 12),
> .size = 8
> -} };
> + },
> + {
> + .offset_ldw_lowerbound = PXP_REG_01_LOWERBOUND,
> + .offset_ldw_upperbound = PXP_REG_01_UPPERBOUND,
> + .offset_udw = {0},
> + .gen_mask = INTEL_GEN_MASK(4, 12),
> + .size = 4
> + },
> + {
> + .offset_ldw_lowerbound = PXP_REG_02_LOWERBOUND,
> + .offset_ldw_upperbound = PXP_REG_02_UPPERBOUND,
> + .offset_udw = {0},
> + .gen_mask = INTEL_GEN_MASK(4, 12),
> + .size = 4
> + },
> + {
> + .offset_ldw_lowerbound = PXP_REG_03_LOWERBOUND,
> + .offset_ldw_upperbound = PXP_REG_03_UPPERBOUND,
> + .offset_udw = {0},
> + .gen_mask = INTEL_GEN_MASK(4, 12),
> + .size = 4
> + }
> +};
>
> int i915_reg_read_ioctl(struct drm_device *dev,
> void *data, struct drm_file *file)
> @@ -2012,18 +2037,22 @@ int i915_reg_read_ioctl(struct drm_device *dev,
> unsigned int flags;
> int remain;
> int ret = 0;
> + i915_reg_t offset_ldw;
>
> entry = reg_read_allowlist;
> remain = ARRAY_SIZE(reg_read_allowlist);
> while (remain) {
> - u32 entry_offset = i915_mmio_reg_offset(entry->offset_ldw);
> + u32 entry_offset_lb = i915_mmio_reg_offset(entry->offset_ldw_lowerbound);
> + u32 entry_offset_ub = i915_mmio_reg_offset(entry->offset_ldw_upperbound);
>
> GEM_BUG_ON(!is_power_of_2(entry->size));
> GEM_BUG_ON(entry->size > 8);
> - GEM_BUG_ON(entry_offset & (entry->size - 1));
> + GEM_BUG_ON(entry_offset_lb & (entry->size - 1));
> + GEM_BUG_ON(entry_offset_ub & (entry->size - 1));
>
> if (INTEL_INFO(i915)->gen_mask & entry->gen_mask &&
> - entry_offset == (reg->offset & -entry->size))
> + entry_offset_lb <= (reg->offset & -entry->size) &&
> + (reg->offset & -entry->size) <= entry_offset_ub)
> break;
> entry++;
> remain--;
> @@ -2033,23 +2062,21 @@ int i915_reg_read_ioctl(struct drm_device *dev,
> return -EINVAL;
>
> flags = reg->offset & (entry->size - 1);
> + offset_ldw = _MMIO(reg->offset - flags);
>
> with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
> if (entry->size == 8 && flags == I915_REG_READ_8B_WA)
> reg->val = intel_uncore_read64_2x32(uncore,
> - entry->offset_ldw,
> + offset_ldw,
> entry->offset_udw);
> else if (entry->size == 8 && flags == 0)
> - reg->val = intel_uncore_read64(uncore,
> - entry->offset_ldw);
> + reg->val = intel_uncore_read64(uncore, offset_ldw);
> else if (entry->size == 4 && flags == 0)
> - reg->val = intel_uncore_read(uncore, entry->offset_ldw);
> + reg->val = intel_uncore_read(uncore, offset_ldw);
> else if (entry->size == 2 && flags == 0)
> - reg->val = intel_uncore_read16(uncore,
> - entry->offset_ldw);
> + reg->val = intel_uncore_read16(uncore, offset_ldw);
> else if (entry->size == 1 && flags == 0)
> - reg->val = intel_uncore_read8(uncore,
> - entry->offset_ldw);
> + reg->val = intel_uncore_read8(uncore, offset_ldw);
> else
> ret = -EINVAL;
> }
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2020-11-23 15:06 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-14 0:36 [Intel-gfx] [PXP CLEAN PATCH v06 01/27] drm/i915/pxp: Introduce Intel PXP component Sean Z Huang
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 02/27] drm/i915/pxp: Enable PXP irq worker and callback stub Sean Z Huang
2020-11-16 14:27 ` Souza, Jose
2020-11-23 15:01 ` Jani Nikula
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 03/27] drm/i915/pxp: Add PXP context for logical hardware states Sean Z Huang
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 04/27] drm/i915/pxp: set KCR reg init during the boot time Sean Z Huang
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 05/27] drm/i915/pxp: Enable ioctl action to set the ring3 context Sean Z Huang
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 06/27] drm/i915: Rename the whitelist to allowlist Sean Z Huang
2020-11-23 15:04 ` Jani Nikula
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 07/27] drm/i915/pxp: Add PXP-related registers into allowlist Sean Z Huang
2020-11-23 15:05 ` Jani Nikula [this message]
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 08/27] drm/i915/pxp: Read register to check hardware session state Sean Z Huang
2020-11-14 2:42 ` kernel test robot
2020-11-14 2:42 ` kernel test robot
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 09/27] drm/i915/pxp: Implement funcs to get/set PXP tag Sean Z Huang
2020-11-14 0:36 ` [Intel-gfx] [PXP CLEAN PATCH v06 10/27] drm/i915/pxp: Enable ioctl action to reserve session slot Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 11/27] drm/i915/pxp: Enable ioctl action to set session in play Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 12/27] drm/i915/pxp: Func to send hardware session termination Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 13/27] drm/i915/pxp: Enable ioctl action to terminate the session Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 14/27] drm/i915/pxp: Enable ioctl action to query PXP tag Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 15/27] drm/i915/pxp: Destroy all type0 sessions upon teardown Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 16/27] drm/i915/pxp: Termiante the session upon app crash Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 17/27] drm/i915/pxp: Enable PXP power management Sean Z Huang
2020-11-23 15:09 ` Jani Nikula
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 18/27] drm/i915/pxp: Implement funcs to create the TEE channel Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 19/27] drm/i915/pxp: Enable ioctl action to send TEE commands Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 20/27] drm/i915/pxp: Create the arbitrary session after boot Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 21/27] drm/i915/pxp: Add i915 trace logs for PXP operations Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 22/27] drm/i915/pxp: Expose session state for display protection flip Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 23/27] mei: bus: enable pavp device Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 24/27] mei: pxp: export pavp client to me client bus Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 25/27] drm/i915/uapi: introduce drm_i915_gem_create_ext for TGL Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 26/27] drm/i915/pavp: User interface for Protected buffer Sean Z Huang
2020-11-14 0:37 ` [Intel-gfx] [PXP CLEAN PATCH v06 27/27] drm/i915/pxp: Add plane decryption support Sean Z Huang
2020-11-14 0:42 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for series starting with [PXP,CLEAN,v06,01/27] drm/i915/pxp: Introduce Intel PXP component Patchwork
2020-11-23 15:13 ` Jani Nikula
2020-11-16 14:24 ` [Intel-gfx] [PXP CLEAN PATCH v06 01/27] " Souza, Jose
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=877dqcnmeg.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=Intel-gfx@lists.freedesktop.org \
--cc=sean.z.huang@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.