mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
The HW will generate a teardown interrupt when session termination is
required, which requires i915 to submit a terminating batch. Once the HW
is done with the termination it will generate another interrupt, at
which point it is safe to re-create the session.
Since the termination and re-creation flow is something we want to
trigger from the driver as well, use a common work function that can be
called both from the irq handler and from the driver set-up flows, which
has the addded benefit of allowing us to skip any extra locks because
the work itself serializes the operations.
v2: use struct completion instead of bool (Chris)
v3: drop locks, clean up functions and improve comments (Chris),
move to common work function.
v4: improve comments, simplify wait logic (Rodrigo)
v5: unconditionally set interrupts, rename state_attacked var (Rodrigo)
v10: remove inclusion of intel_gt_types.h from intel_pxp.h (Jani)
Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
Signed-off-by: Huang, Sean Z <sean.z.huang@intel.com>
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20210924191452.1539378-10-alan.previn.teres.alexis@intel.com
33 lines
892 B
C
33 lines
892 B
C
/* SPDX-License-Identifier: MIT */
|
|
/*
|
|
* Copyright(c) 2020, Intel Corporation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef __INTEL_PXP_IRQ_H__
|
|
#define __INTEL_PXP_IRQ_H__
|
|
|
|
#include <linux/types.h>
|
|
|
|
struct intel_pxp;
|
|
|
|
#define GEN12_DISPLAY_PXP_STATE_TERMINATED_INTERRUPT BIT(1)
|
|
#define GEN12_DISPLAY_APP_TERMINATED_PER_FW_REQ_INTERRUPT BIT(2)
|
|
#define GEN12_DISPLAY_STATE_RESET_COMPLETE_INTERRUPT BIT(3)
|
|
|
|
#define GEN12_PXP_INTERRUPTS \
|
|
(GEN12_DISPLAY_PXP_STATE_TERMINATED_INTERRUPT | \
|
|
GEN12_DISPLAY_APP_TERMINATED_PER_FW_REQ_INTERRUPT | \
|
|
GEN12_DISPLAY_STATE_RESET_COMPLETE_INTERRUPT)
|
|
|
|
#ifdef CONFIG_DRM_I915_PXP
|
|
void intel_pxp_irq_enable(struct intel_pxp *pxp);
|
|
void intel_pxp_irq_disable(struct intel_pxp *pxp);
|
|
void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir);
|
|
#else
|
|
static inline void intel_pxp_irq_handler(struct intel_pxp *pxp, u16 iir)
|
|
{
|
|
}
|
|
#endif
|
|
|
|
#endif /* __INTEL_PXP_IRQ_H__ */
|