Home
last modified time | relevance | path

Searched full:pxp (Results 1 – 25 of 66) sorted by relevance

123

/linux/drivers/gpu/drm/i915/pxp/
H A Dintel_pxp_session.c18 static bool intel_pxp_session_is_in_play(struct intel_pxp *pxp, u32 id) in intel_pxp_session_is_in_play() argument
20 struct intel_uncore *uncore = pxp->ctrl_gt->uncore; in intel_pxp_session_is_in_play()
26 sip = intel_uncore_read(uncore, KCR_SIP(pxp->kcr_base)); in intel_pxp_session_is_in_play()
31 static int pxp_wait_for_session_state(struct intel_pxp *pxp, u32 id, bool in_play) in pxp_wait_for_session_state() argument
33 struct intel_uncore *uncore = pxp->ctrl_gt->uncore; in pxp_wait_for_session_state()
44 KCR_SIP(pxp->kcr_base), in pxp_wait_for_session_state()
54 static int pxp_create_arb_session(struct intel_pxp *pxp) in pxp_create_arb_session() argument
56 struct intel_gt *gt = pxp->ctrl_gt; in pxp_create_arb_session()
59 pxp->arb_is_valid = false; in pxp_create_arb_session()
61 if (intel_pxp_session_is_in_play(pxp, ARB_SESSION)) { in pxp_create_arb_session()
[all …]
H A Dintel_pxp_tee.c27 is_fw_err_platform_config(struct intel_pxp *pxp, u32 type) in is_fw_err_platform_config() argument
33 pxp->platform_cfg_is_bad = true; in is_fw_err_platform_config()
58 static int intel_pxp_tee_io_message(struct intel_pxp *pxp, in intel_pxp_tee_io_message() argument
63 struct drm_i915_private *i915 = pxp->ctrl_gt->i915; in intel_pxp_tee_io_message()
64 struct i915_pxp_component *pxp_component = pxp->pxp_component; in intel_pxp_tee_io_message()
67 mutex_lock(&pxp->tee_mutex); in intel_pxp_tee_io_message()
81 drm_err(&i915->drm, "Failed to send PXP TEE message\n"); in intel_pxp_tee_io_message()
88 drm_err(&i915->drm, "Failed to receive PXP TEE message\n"); in intel_pxp_tee_io_message()
94 "Failed to receive PXP TEE message due to unexpected output size\n"); in intel_pxp_tee_io_message()
104 mutex_unlock(&pxp->tee_mutex); in intel_pxp_tee_io_message()
[all …]
H A Dintel_pxp_pm.c14 void intel_pxp_suspend_prepare(struct intel_pxp *pxp) in intel_pxp_suspend_prepare() argument
16 if (!intel_pxp_is_enabled(pxp)) in intel_pxp_suspend_prepare()
19 intel_pxp_end(pxp); in intel_pxp_suspend_prepare()
21 intel_pxp_invalidate(pxp); in intel_pxp_suspend_prepare()
24 void intel_pxp_suspend(struct intel_pxp *pxp) in intel_pxp_suspend() argument
28 if (!intel_pxp_is_enabled(pxp)) in intel_pxp_suspend()
31 with_intel_runtime_pm(&pxp->ctrl_gt->i915->runtime_pm, wakeref) { in intel_pxp_suspend()
32 intel_pxp_fini_hw(pxp); in intel_pxp_suspend()
33 pxp->hw_state_invalidated = false; in intel_pxp_suspend()
37 static void _pxp_resume(struct intel_pxp *pxp, bool take_wakeref) in _pxp_resume() argument
[all …]
H A Dintel_pxp_gsccs.c21 is_fw_err_platform_config(struct intel_pxp *pxp, u32 type) in is_fw_err_platform_config() argument
27 pxp->platform_cfg_is_bad = true; in is_fw_err_platform_config()
53 gsccs_send_message(struct intel_pxp *pxp, in gsccs_send_message() argument
59 struct intel_gt *gt = pxp->ctrl_gt; in gsccs_send_message()
61 struct gsccs_session_resources *exec_res = &pxp->gsccs_res; in gsccs_send_message()
81 mutex_lock(&pxp->tee_mutex); in gsccs_send_message()
117 drm_err(&i915->drm, "failed to send gsc PXP msg (%d)\n", ret); in gsccs_send_message()
123 drm_err(&i915->drm, "gsc PXP reply with invalid validity marker\n"); in gsccs_send_message()
128 drm_dbg(&i915->drm, "gsc PXP reply status has error = 0x%08x\n", in gsccs_send_message()
134 drm_dbg(&i915->drm, "gsc PXP reply is busy\n"); in gsccs_send_message()
[all …]
H A Dintel_pxp_irq.c21 * intel_pxp_irq_handler - Handles PXP interrupts.
22 * @pxp: pointer to pxp struct
25 void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir) in intel_pxp_irq_handler() argument
29 if (GEM_WARN_ON(!intel_pxp_is_enabled(pxp))) in intel_pxp_irq_handler()
32 gt = pxp->ctrl_gt; in intel_pxp_irq_handler()
41 /* immediately mark PXP as inactive on termination */ in intel_pxp_irq_handler()
42 intel_pxp_mark_termination_in_progress(pxp); in intel_pxp_irq_handler()
43 pxp->session_events |= PXP_TERMINATION_REQUEST | PXP_INVAL_REQUIRED | in intel_pxp_irq_handler()
48 pxp->session_events |= PXP_TERMINATION_COMPLETE | PXP_EVENT_TYPE_IRQ; in intel_pxp_irq_handler()
50 if (pxp->session_events) in intel_pxp_irq_handler()
[all …]
H A Dintel_pxp_pm.h12 void intel_pxp_suspend_prepare(struct intel_pxp *pxp);
13 void intel_pxp_suspend(struct intel_pxp *pxp);
14 void intel_pxp_resume_complete(struct intel_pxp *pxp);
15 void intel_pxp_runtime_suspend(struct intel_pxp *pxp);
16 void intel_pxp_runtime_resume(struct intel_pxp *pxp);
18 static inline void intel_pxp_suspend_prepare(struct intel_pxp *pxp) in intel_pxp_suspend_prepare() argument
22 static inline void intel_pxp_suspend(struct intel_pxp *pxp) in intel_pxp_suspend() argument
26 static inline void intel_pxp_resume_complete(struct intel_pxp *pxp) in intel_pxp_resume_complete() argument
30 static inline void intel_pxp_runtime_suspend(struct intel_pxp *pxp) in intel_pxp_runtime_suspend() argument
34 static inline void intel_pxp_runtime_resume(struct intel_pxp *pxp) in intel_pxp_runtime_resume() argument
H A Dintel_pxp_gsccs.h21 void intel_pxp_gsccs_fini(struct intel_pxp *pxp);
22 int intel_pxp_gsccs_init(struct intel_pxp *pxp);
24 int intel_pxp_gsccs_create_session(struct intel_pxp *pxp, int arb_session_id);
25 void intel_pxp_gsccs_end_arb_fw_session(struct intel_pxp *pxp, u32 arb_session_id);
26 bool intel_pxp_gsccs_is_ready_for_sessions(struct intel_pxp *pxp);
29 static inline void intel_pxp_gsccs_fini(struct intel_pxp *pxp) in intel_pxp_gsccs_fini() argument
33 static inline int intel_pxp_gsccs_init(struct intel_pxp *pxp) in intel_pxp_gsccs_init() argument
38 static inline bool intel_pxp_gsccs_is_ready_for_sessions(struct intel_pxp *pxp) in intel_pxp_gsccs_is_ready_for_sessions() argument
H A Dintel_pxp_irq.h23 void intel_pxp_irq_enable(struct intel_pxp *pxp);
24 void intel_pxp_irq_disable(struct intel_pxp *pxp);
25 void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir);
27 static inline void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir) in intel_pxp_irq_handler() argument
31 static inline void intel_pxp_irq_enable(struct intel_pxp *pxp) in intel_pxp_irq_enable() argument
35 static inline void intel_pxp_irq_disable(struct intel_pxp *pxp) in intel_pxp_irq_disable() argument
H A Dintel_pxp_cmd_interface_42.h12 /* PXP-Opcode for Init Session */
15 /* PXP-Opcode for Invalidate Stream Key */
18 /* PXP-Input-Packet: Init Session (Arb-Session) */
26 /* PXP-Output-Packet: Init Session */
31 /* PXP-Input-Packet: Invalidate Stream Key */
37 /* PXP-Output-Packet: Invalidate Stream Key */
H A Dintel_pxp_huc.c17 int intel_pxp_huc_load_and_auth(struct intel_pxp *pxp) in intel_pxp_huc_load_and_auth() argument
28 if (!pxp || !pxp->pxp_component) in intel_pxp_huc_load_and_auth()
31 gt = pxp->ctrl_gt; in intel_pxp_huc_load_and_auth()
36 /* write the PXP message into the lmem (the sg list) */ in intel_pxp_huc_load_and_auth()
43 err = intel_pxp_tee_stream_message(pxp, client_id, fence_id, in intel_pxp_huc_load_and_auth()
H A Dintel_pxp_cmd.c18 /* stall until prior PXP and MFX/HCP/HUC objects are cmopleted */
27 /* pxp off */ in pxp_emit_session_selection()
37 /* pxp on */ in pxp_emit_session_selection()
97 int intel_pxp_terminate_session(struct intel_pxp *pxp, u32 id) in intel_pxp_terminate_session() argument
100 struct intel_context *ce = pxp->ce; in intel_pxp_terminate_session()
104 if (!intel_pxp_is_enabled(pxp)) in intel_pxp_terminate_session()
H A Dintel_pxp_session.h14 void intel_pxp_session_management_init(struct intel_pxp *pxp);
15 void intel_pxp_terminate(struct intel_pxp *pxp, bool post_invalidation_needs_restart);
17 static inline void intel_pxp_session_management_init(struct intel_pxp *pxp) in intel_pxp_session_management_init() argument
21 static inline void intel_pxp_terminate(struct intel_pxp *pxp, bool post_invalidation_needs_restart) in intel_pxp_terminate() argument
H A Dintel_pxp_tee.h11 int intel_pxp_tee_component_init(struct intel_pxp *pxp);
12 void intel_pxp_tee_component_fini(struct intel_pxp *pxp);
14 int intel_pxp_tee_cmd_create_arb_session(struct intel_pxp *pxp,
17 int intel_pxp_tee_stream_message(struct intel_pxp *pxp,
H A Dintel_pxp_debugfs.h13 void intel_pxp_debugfs_register(struct intel_pxp *pxp);
16 intel_pxp_debugfs_register(struct intel_pxp *pxp) in intel_pxp_debugfs_register() argument
H A Dintel_pxp_cmd_interface_cmn.h14 * there are a lot of status codes for PXP, but we only define the cross-API
27 /* Common PXP FW message header */
/linux/drivers/gpu/drm/xe/
H A Dxe_pxp_debugfs.c24 static const char *pxp_status_to_str(struct xe_pxp *pxp) in pxp_status_to_str() argument
26 lockdep_assert_held(&pxp->mutex); in pxp_status_to_str()
28 switch (pxp->status) { in pxp_status_to_str()
48 struct xe_pxp *pxp = node_to_pxp(m->private); in pxp_info() local
52 if (!xe_pxp_is_enabled(pxp)) in pxp_info()
55 mutex_lock(&pxp->mutex); in pxp_info()
56 status = pxp_status_to_str(pxp); in pxp_info()
59 drm_printf(&p, "instance counter: %u\n", pxp->key_instance); in pxp_info()
60 mutex_unlock(&pxp->mutex); in pxp_info()
67 struct xe_pxp *pxp = node_to_pxp(m->private); in pxp_terminate() local
[all …]
H A Dxe_exec_queue_types.h150 /** @pxp: PXP info tracking */
152 /** @pxp.type: PXP session type used by this queue */
154 /** @pxp.link: link into the list of PXP exec queues */
156 } pxp; member
H A Dxe_exec_queue.c50 xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q); in __xe_exec_queue_free()
124 INIT_LIST_HEAD(&q->pxp.link); in __xe_exec_queue_alloc()
169 * PXP workloads executing on RCS or CCS must run in isolation (i.e. no in __xe_exec_queue_init()
233 * We can only add the queue to the PXP list after the init is complete, in xe_exec_queue_create()
234 * because the PXP termination can call exec_queue_kill and that will in xe_exec_queue_create()
236 * can't do it when we handle the PXP extension in __xe_exec_queue_alloc in xe_exec_queue_create()
240 err = xe_pxp_exec_queue_add(xe->pxp, q); in xe_exec_queue_create()
337 xe_pxp_exec_queue_remove(gt_to_xe(q->gt)->pxp, q); in xe_exec_queue_destroy()
500 if (!xe_pxp_is_enabled(xe->pxp)) in exec_queue_set_pxp_type()
503 return xe_pxp_exec_queue_set_type(xe->pxp, q, DRM_XE_PXP_TYPE_HWDRM); in exec_queue_set_pxp_type()
H A Dxe_pm.c129 err = xe_pxp_pm_suspend(xe->pxp); in xe_pm_suspend()
162 xe_pxp_pm_resume(xe->pxp); in xe_pm_suspend()
217 xe_pxp_pm_resume(xe->pxp); in xe_pm_resume()
505 err = xe_pxp_pm_suspend(xe->pxp); in xe_pm_runtime_suspend()
545 xe_pxp_pm_resume(xe->pxp); in xe_pm_runtime_suspend()
604 xe_pxp_pm_resume(xe->pxp); in xe_pm_runtime_resume()
/linux/include/drm/intel/
H A Di915_pxp_tee_interface.h14 * struct i915_pxp_component_ops - ops for PXP services.
23 * @send: Send a PXP message.
28 * @recv: Receive a PXP message.
43 * drivers for the PXP services
47 * @tee_dev: device that provide the PXP service from TEE Bus.
/linux/drivers/misc/mei/pxp/
H A Dmei_pxp.c9 * The mei_pxp driver acts as a translation layer between PXP
10 * protocol implementer (I915) and ME FW by translating PXP
46 * mei_pxp_send_message() - Sends a PXP message to ME FW.
95 * mei_pxp_receive_message() - Receives a PXP message from ME FW.
211 * mei_pxp_component_match - compare function for matching mei pxp.
213 * The function checks if the driver is i915, the subcomponent is PXP
214 * and the grand parent of pxp and the parent of i915 are the same
219 * @data: compare data (mei pxp device)
344 MODULE_DESCRIPTION("MEI PXP");
H A DKconfig5 tristate "Intel PXP services of ME Interface"
9 MEI Support for PXP Services on Intel platforms.
11 Enables the ME FW services required for PXP support through
/linux/include/uapi/drm/
H A Dxe_drm.h645 * struct drm_xe_query_pxp_status - query if PXP is ready
647 * If PXP is enabled and no fatal error has occurred, the status will be set to
649 * 0: PXP init still in progress
650 * 1: PXP init complete
652 * If PXP is not enabled or something has gone wrong, the query will be failed
654 * -ENODEV: PXP not supported or disabled;
655 * -EIO: fatal error occurred during init, so PXP will never be enabled;
670 /** @status: current PXP status */
673 /** @supported_session_types: bitmask of supported PXP session types */
803 * - %DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE - set the type of PXP sessio
[all...]
/linux/arch/arm/boot/dts/nxp/imx/
H A Dimx7d.dtsi169 pxp: pxp@30700000 { label
170 compatible = "fsl,imx7d-pxp";
/linux/drivers/gpu/drm/i915/gt/uc/
H A Dintel_huc.c15 #include "pxp/intel_pxp_cmd_interface_43.h"
68 * MEI-PXP + HuC load usually takes ~300ms, but if the GSC needs to be resumed
110 /* MEI-GSC init is done, now we wait for MEI-PXP to bind */ in gsc_init_done()
126 huc_notice(huc, "timed out waiting for MEI PXP\n"); in huc_delayed_load_timer_callback()
144 * do need to wait for MEI-PXP to reset & re-bind in huc_delayed_load_start()
162 * the PXP bind callback. in huc_delayed_load_start()

123