Skip to content

Commit 33e26f3

Browse files
committed
Merge tag 'drm-xe-next-2025-02-24' of https://gitlab.freedesktop.org/drm/xe/kernel into drm-next
UAPI Changes: - Add mmap support for PCI memory barrier (Tejas, Matthew Auld) - Enable integration with perf pmu, exposing event counters: for now, just GT C6 residency (Vinay, Lucas) - Add "survivability mode" to allow putting the driver in a state capable of firmware upgrade on critical failures (Riana, Rodrigo) - Add PXP HWDRM support and enable for compatible platforms: Meteor Lake and Lunar Lake (Daniele, John Harrison) - Expose package and vram temperature over hwmon subsystem (Raag, Badal, Rodrigo) Cross-subsystem Changes: - Backmege drm-next to synchronize with i915 display and other internal APIs Display Changes (including i915): - Device probe re-order to help with flicker-free boot (Maarten) - Align watermark, hpd and dsm with i915 (Rodrigo) - Better abstraction for d3cold (Rodrigo) Driver Changes: - Make sure changes to ccs_mode is with helper for gt sync reset (Maciej) - Drop mmio_ext abstraction since it didn't prove useful in its current form (Matt Roper) - Reject BO eviction if BO is bound to current VM (Oak, Thomas Hellström) - Add GuC Power Conservation debugfs (Rodrigo) - L3 cache topology updates for Xe3 (Francois, Matt Atwood) - Better logging about missing GuC logs (John Harrison) - Better logging for hwconfig-related data availability (John Harrison) - Tracepoint updates for xe_bo_create, xe_vm and xe_vma (Oak) - Add missing SPDX licenses (Francois) - Xe suballocator imporovements (Michal Wajdeczko) - Improve logging for native vs SR-IOV driver mode (Satyanarayana) - Make sure VF bootstrap is not attempted in execlist mode (Maarten) - Add GuC Buffer Cache abstraction for some CTB H2G actions and use during VF provisioning (Michal Wajdeczko) - Better synchronization in gtidle for new users (Vinay) - New workarounds for Panther Lake (Nirmoy, Vinay) - PCI ID updates for Panther Lake (Matt Atwood) - Enable SR-IOV for Panther Lake (Michal Wajdeczko) - Update MAINTAINERS to stop directing xe changes to drm-misc (Lucas) - New PCI IDs for Battle Mage (Shekhar) - Better pagefault logging (Francois) - SR-IOV fixes and refactors for past and new platforms (Michal Wajdeczko) - Platform descriptor refactors and updates (Sai Teja) - Add gt stats debugfs (Francois) - Add guc_log debugfs to dump to dmesg (Lucas) - Abstract per-platform LMTT availability (Piotr Piórkowski) - Refactor VRAM manager location (Piotr Piórkowski) - Add missing xe_pm_runtime_put when forcing wedged mode (Shuicheng) - Fix possible lockup when forcing wedged mode (Xin Wang) - Probe refactors to use cleanup actions with better error handling (Lucas) - XE_IOCTL_DBG clarification for userspace (Maarten) - Better xe_mmio initialization and abstraction (Ilia) - Drop unnecessary GT lookup (Matt Roper) - Skip client engine usage from fdinfo for VFs (Marcin Bernatowicz) - Allow to test xe_sync_entry_parse with error injection (Priyanka) - OA fix for polled read (Umesh) Signed-off-by: Dave Airlie <airlied@redhat.com> From: Lucas De Marchi <lucas.demarchi@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/m3gbuh32wgiep43i4zxbyhxqbenvtgvtao5sczivlasj7tikwv@dmlba4bfg2ny
2 parents 16893dd + b7b68c6 commit 33e26f3

File tree

127 files changed

+5153
-676
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

127 files changed

+5153
-676
lines changed

Documentation/ABI/testing/sysfs-driver-intel-xe-hwmon

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,19 @@ Contact: intel-xe@lists.freedesktop.org
108108
Description: RO. Package current voltage in millivolt.
109109

110110
Only supported for particular Intel Xe graphics platforms.
111+
112+
What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/temp2_input
113+
Date: March 2025
114+
KernelVersion: 6.14
115+
Contact: intel-xe@lists.freedesktop.org
116+
Description: RO. Package temperature in millidegree Celsius.
117+
118+
Only supported for particular Intel Xe graphics platforms.
119+
120+
What: /sys/bus/pci/drivers/xe/.../hwmon/hwmon<i>/temp3_input
121+
Date: March 2025
122+
KernelVersion: 6.14
123+
Contact: intel-xe@lists.freedesktop.org
124+
Description: RO. VRAM temperature in millidegree Celsius.
125+
126+
Only supported for particular Intel Xe graphics platforms.

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7673,6 +7673,7 @@ X: drivers/gpu/drm/msm/
76737673
X: drivers/gpu/drm/nouveau/
76747674
X: drivers/gpu/drm/radeon/
76757675
X: drivers/gpu/drm/tegra/
7676+
X: drivers/gpu/drm/xe/
76767677

76777678
DRM DRIVERS FOR ALLWINNER A10
76787679
M: Maxime Ripard <mripard@kernel.org>

drivers/gpu/drm/i915/display/intel_display.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
685685
if ((crtc_state->active_planes & ~BIT(PLANE_CURSOR)) == 0 &&
686686
hsw_ips_disable(crtc_state)) {
687687
crtc_state->ips_enabled = false;
688-
intel_crtc_wait_for_next_vblank(crtc);
688+
intel_plane_initial_vblank_wait(crtc);
689689
}
690690

691691
/*
@@ -699,7 +699,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
699699
*/
700700
if (HAS_GMCH(dev_priv) &&
701701
intel_set_memory_cxsr(dev_priv, false))
702-
intel_crtc_wait_for_next_vblank(crtc);
702+
intel_plane_initial_vblank_wait(crtc);
703703

704704
/*
705705
* Gen2 reports pipe underruns whenever all planes are disabled.
@@ -709,7 +709,7 @@ void intel_plane_disable_noatomic(struct intel_crtc *crtc,
709709
intel_set_cpu_fifo_underrun_reporting(display, crtc->pipe, false);
710710

711711
intel_plane_disable_arm(NULL, plane, crtc_state);
712-
intel_crtc_wait_for_next_vblank(crtc);
712+
intel_plane_initial_vblank_wait(crtc);
713713
}
714714

715715
unsigned int

drivers/gpu/drm/i915/display/intel_display_driver.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -564,6 +564,8 @@ void intel_display_driver_register(struct intel_display *display)
564564

565565
intel_display_device_info_print(DISPLAY_INFO(display),
566566
DISPLAY_RUNTIME_INFO(display), &p);
567+
568+
intel_register_dsm_handler();
567569
}
568570

569571
/* part #1: call before irq uninstall */
@@ -639,6 +641,8 @@ void intel_display_driver_unregister(struct intel_display *display)
639641
if (!HAS_DISPLAY(display))
640642
return;
641643

644+
intel_unregister_dsm_handler();
645+
642646
drm_client_dev_unregister(display->drm);
643647

644648
/*

drivers/gpu/drm/i915/display/intel_plane_initial.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414
#include "intel_frontbuffer.h"
1515
#include "intel_plane_initial.h"
1616

17+
void intel_plane_initial_vblank_wait(struct intel_crtc *crtc)
18+
{
19+
intel_crtc_wait_for_next_vblank(crtc);
20+
}
21+
1722
static bool
1823
intel_reuse_initial_plane_obj(struct intel_crtc *this,
1924
const struct intel_initial_plane_config plane_configs[],
@@ -442,7 +447,7 @@ void intel_initial_plane_config(struct intel_display *display)
442447
intel_find_initial_plane_obj(crtc, plane_configs);
443448

444449
if (display->funcs.display->fixup_initial_plane_config(crtc, plane_config))
445-
intel_crtc_wait_for_next_vblank(crtc);
450+
intel_plane_initial_vblank_wait(crtc);
446451

447452
plane_config_fini(plane_config);
448453
}

drivers/gpu/drm/i915/display/intel_plane_initial.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
#ifndef __INTEL_PLANE_INITIAL_H__
77
#define __INTEL_PLANE_INITIAL_H__
88

9+
struct intel_crtc;
910
struct intel_display;
1011

1112
void intel_initial_plane_config(struct intel_display *display);
13+
void intel_plane_initial_vblank_wait(struct intel_crtc *crtc);
1214

1315
#endif

drivers/gpu/drm/i915/i915_driver.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
#include <drm/drm_probe_helper.h>
4747

4848
#include "display/i9xx_display_sr.h"
49-
#include "display/intel_acpi.h"
5049
#include "display/intel_bw.h"
5150
#include "display/intel_cdclk.h"
5251
#include "display/intel_crtc.h"
@@ -657,8 +656,6 @@ static void i915_driver_register(struct drm_i915_private *dev_priv)
657656
intel_power_domains_enable(display);
658657
intel_runtime_pm_enable(&dev_priv->runtime_pm);
659658

660-
intel_register_dsm_handler();
661-
662659
if (i915_switcheroo_register(dev_priv))
663660
drm_err(&dev_priv->drm, "Failed to register vga switcheroo!\n");
664661
}
@@ -675,8 +672,6 @@ static void i915_driver_unregister(struct drm_i915_private *dev_priv)
675672

676673
i915_switcheroo_unregister(dev_priv);
677674

678-
intel_unregister_dsm_handler();
679-
680675
intel_runtime_pm_disable(&dev_priv->runtime_pm);
681676
intel_power_domains_disable(display);
682677

drivers/gpu/drm/xe/Kconfig.profile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# SPDX-License-Identifier: GPL-2.0-only
12
config DRM_XE_JOB_TIMEOUT_MAX
23
int "Default max job timeout (ms)"
34
default 10000 # milliseconds

drivers/gpu/drm/xe/Makefile

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ xe-y += xe_bb.o \
3434
xe_dma_buf.o \
3535
xe_drm_client.o \
3636
xe_exec.o \
37-
xe_execlist.o \
3837
xe_exec_queue.o \
38+
xe_execlist.o \
3939
xe_force_wake.o \
4040
xe_ggtt.o \
4141
xe_gpu_scheduler.o \
@@ -56,6 +56,7 @@ xe-y += xe_bb.o \
5656
xe_gt_topology.o \
5757
xe_guc.o \
5858
xe_guc_ads.o \
59+
xe_guc_buf.o \
5960
xe_guc_capture.o \
6061
xe_guc_ct.o \
6162
xe_guc_db_mgr.o \
@@ -66,11 +67,11 @@ xe-y += xe_bb.o \
6667
xe_guc_pc.o \
6768
xe_guc_submit.o \
6869
xe_heci_gsc.o \
70+
xe_huc.o \
6971
xe_hw_engine.o \
7072
xe_hw_engine_class_sysfs.o \
7173
xe_hw_engine_group.o \
7274
xe_hw_fence.o \
73-
xe_huc.o \
7475
xe_irq.o \
7576
xe_lrc.o \
7677
xe_migrate.o \
@@ -86,24 +87,28 @@ xe-y += xe_bb.o \
8687
xe_preempt_fence.o \
8788
xe_pt.o \
8889
xe_pt_walk.o \
90+
xe_pxp.o \
91+
xe_pxp_debugfs.o \
92+
xe_pxp_submit.o \
8993
xe_query.o \
9094
xe_range_fence.o \
9195
xe_reg_sr.o \
9296
xe_reg_whitelist.o \
93-
xe_rtp.o \
9497
xe_ring_ops.o \
98+
xe_rtp.o \
9599
xe_sa.o \
96100
xe_sched_job.o \
97101
xe_step.o \
102+
xe_survivability_mode.o \
98103
xe_sync.o \
99104
xe_tile.o \
100105
xe_tile_sysfs.o \
101106
xe_trace.o \
102107
xe_trace_bo.o \
103108
xe_trace_guc.o \
104109
xe_trace_lrc.o \
105-
xe_ttm_sys_mgr.o \
106110
xe_ttm_stolen_mgr.o \
111+
xe_ttm_sys_mgr.o \
107112
xe_ttm_vram_mgr.o \
108113
xe_tuning.o \
109114
xe_uc.o \
@@ -112,15 +117,17 @@ xe-y += xe_bb.o \
112117
xe_vram.o \
113118
xe_vram_freq.o \
114119
xe_vsec.o \
115-
xe_wait_user_fence.o \
116120
xe_wa.o \
121+
xe_wait_user_fence.o \
117122
xe_wopcm.o
118123

119124
xe-$(CONFIG_HMM_MIRROR) += xe_hmm.o
120125

121126
# graphics hardware monitoring (HWMON) support
122127
xe-$(CONFIG_HWMON) += xe_hwmon.o
123128

129+
xe-$(CONFIG_PERF_EVENTS) += xe_pmu.o
130+
124131
# graphics virtualization (SR-IOV) support
125132
xe-y += \
126133
xe_gt_sriov_vf.o \
@@ -222,6 +229,7 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
222229
i915-display/intel_display_wa.o \
223230
i915-display/intel_dkl_phy.o \
224231
i915-display/intel_dmc.o \
232+
i915-display/intel_dmc_wl.o \
225233
i915-display/intel_dp.o \
226234
i915-display/intel_dp_aux.o \
227235
i915-display/intel_dp_aux_backlight.o \
@@ -270,7 +278,6 @@ xe-$(CONFIG_DRM_XE_DISPLAY) += \
270278
i915-display/intel_vdsc.o \
271279
i915-display/intel_vga.o \
272280
i915-display/intel_vrr.o \
273-
i915-display/intel_dmc_wl.o \
274281
i915-display/intel_wm.o \
275282
i915-display/skl_scaler.o \
276283
i915-display/skl_universal_plane.o \

drivers/gpu/drm/xe/abi/gsc_pxp_commands_abi.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,20 @@
66
#ifndef _ABI_GSC_PXP_COMMANDS_ABI_H
77
#define _ABI_GSC_PXP_COMMANDS_ABI_H
88

9+
#include <linux/sizes.h>
910
#include <linux/types.h>
1011

1112
/* Heci client ID for PXP commands */
1213
#define HECI_MEADDRESS_PXP 17
1314

1415
#define PXP_APIVER(x, y) (((x) & 0xFFFF) << 16 | ((y) & 0xFFFF))
1516

17+
/*
18+
* A PXP sub-section in an HECI packet can be up to 64K big in each direction.
19+
* This does not include the top-level GSC header.
20+
*/
21+
#define PXP_MAX_PACKET_SIZE SZ_64K
22+
1623
/*
1724
* there are a lot of status codes for PXP, but we only define the cross-API
1825
* common ones that we actually can handle in the kernel driver. Other failure
@@ -24,6 +31,7 @@ enum pxp_status {
2431
PXP_STATUS_NOT_READY = 0x100e,
2532
PXP_STATUS_PLATFCONFIG_KF1_NOVERIF = 0x101a,
2633
PXP_STATUS_PLATFCONFIG_KF1_BAD = 0x101f,
34+
PXP_STATUS_PLATFCONFIG_FIXED_KF1_NOT_SUPPORTED = 0x1037,
2735
PXP_STATUS_OP_NOT_PERMITTED = 0x4013
2836
};
2937

@@ -42,6 +50,8 @@ struct pxp_cmd_header {
4250
u32 buffer_len;
4351
} __packed;
4452

53+
#define PXP43_CMDID_INVALIDATE_STREAM_KEY 0x00000007
54+
#define PXP43_CMDID_INIT_SESSION 0x00000036
4555
#define PXP43_CMDID_NEW_HUC_AUTH 0x0000003F /* MTL+ */
4656

4757
/* PXP-Input-Packet: HUC Auth-only */
@@ -56,4 +66,35 @@ struct pxp43_huc_auth_out {
5666
struct pxp_cmd_header header;
5767
} __packed;
5868

69+
/* PXP-Input-Packet: Init PXP session */
70+
struct pxp43_create_arb_in {
71+
struct pxp_cmd_header header;
72+
/* header.stream_id fields for vesion 4.3 of Init PXP session: */
73+
#define PXP43_INIT_SESSION_VALID BIT(0)
74+
#define PXP43_INIT_SESSION_APPTYPE BIT(1)
75+
#define PXP43_INIT_SESSION_APPID GENMASK(17, 2)
76+
u32 protection_mode;
77+
#define PXP43_INIT_SESSION_PROTECTION_ARB 0x2
78+
u32 sub_session_id;
79+
u32 init_flags;
80+
u32 rsvd[12];
81+
} __packed;
82+
83+
/* PXP-Input-Packet: Init PXP session */
84+
struct pxp43_create_arb_out {
85+
struct pxp_cmd_header header;
86+
u32 rsvd[8];
87+
} __packed;
88+
89+
/* PXP-Input-Packet: Invalidate Stream Key */
90+
struct pxp43_inv_stream_key_in {
91+
struct pxp_cmd_header header;
92+
u32 rsvd[3];
93+
} __packed;
94+
95+
/* PXP-Output-Packet: Invalidate Stream Key */
96+
struct pxp43_inv_stream_key_out {
97+
struct pxp_cmd_header header;
98+
u32 rsvd;
99+
} __packed;
59100
#endif

0 commit comments

Comments
 (0)