mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
synced 2025-09-15 17:16:52 +10:00
drm/i915/mcr: Hold forcewake and MCR lock over PPAT setup
PPAT setup involves a series of multicast writes. This can be optimized slightly be acquiring forcewake and the steering lock just once for the entire sequence. v2: - We should use FW_REG_WRITE instead of FW_REG_READ. (Bala) Suggested-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com> Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Reviewed-by: Balasubramani Vivekanandan <balasubramani.vivekanandan@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20221130155852.19601-1-matthew.d.roper@intel.com
This commit is contained in:
parent
e3995e08a3
commit
70b6120845
@ -481,14 +481,25 @@ static void tgl_setup_private_ppat(struct intel_uncore *uncore)
|
|||||||
|
|
||||||
static void xehp_setup_private_ppat(struct intel_gt *gt)
|
static void xehp_setup_private_ppat(struct intel_gt *gt)
|
||||||
{
|
{
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(0), GEN8_PPAT_WB);
|
enum forcewake_domains fw;
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(1), GEN8_PPAT_WC);
|
unsigned long flags;
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(2), GEN8_PPAT_WT);
|
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(3), GEN8_PPAT_UC);
|
fw = intel_uncore_forcewake_for_reg(gt->uncore, _MMIO(XEHP_PAT_INDEX(0).reg),
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(4), GEN8_PPAT_WB);
|
FW_REG_WRITE);
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(5), GEN8_PPAT_WB);
|
intel_uncore_forcewake_get(gt->uncore, fw);
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(6), GEN8_PPAT_WB);
|
|
||||||
intel_gt_mcr_multicast_write(gt, XEHP_PAT_INDEX(7), GEN8_PPAT_WB);
|
intel_gt_mcr_lock(gt, &flags);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(0), GEN8_PPAT_WB);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(1), GEN8_PPAT_WC);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(2), GEN8_PPAT_WT);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(3), GEN8_PPAT_UC);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(4), GEN8_PPAT_WB);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(5), GEN8_PPAT_WB);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(6), GEN8_PPAT_WB);
|
||||||
|
intel_gt_mcr_multicast_write_fw(gt, XEHP_PAT_INDEX(7), GEN8_PPAT_WB);
|
||||||
|
intel_gt_mcr_unlock(gt, flags);
|
||||||
|
|
||||||
|
intel_uncore_forcewake_put(gt->uncore, fw);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void icl_setup_private_ppat(struct intel_uncore *uncore)
|
static void icl_setup_private_ppat(struct intel_uncore *uncore)
|
||||||
|
Loading…
Reference in New Issue
Block a user