Matt Roper
996da37ffa
drm/xe: Convert job timeouts from assert to warning
...
xe_assert() is intended to be used only for "impossible" situations that
should never be hit (and if they are hit it means there's a driver bug
somewhere); assertions are only compiled into debug builds.
Although we expect jobs submitted by the kernel to be well-behaved and
run without error, timeouts are a legitimate possibility for reasons
beyond our control (bad firmware, flaky hardware, etc.). We should use
a real WARN if we encounter these, even for non-debug builds, to ensure
the issue is being properly highlighted in bug reports and such.
Also give the WARNs more human-readable messages and move them below the
general notice-level message that gets printed for any kind of timeout
to make the errors a bit more understandable.
v2:
- Convert the VM / exec_queue_killed assertion as well. (MattB)
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Reviewed-by: Matthew Brost <matthew.brost@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240130200308.1429134-2-matthew.d.roper@intel.com
2024-01-31 08:09:30 -08:00
Thomas Hellström
78366eed68
drm/xe: Don't use __user error pointers
...
The error pointer macros are not aware of __user pointers and as a
consequence sparse warns.
Have the copy_mask() function return an integer instead of a __user
pointer.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Matthew Brost <matthew.brost@intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Reviewed-by: Matthew Brost <matthew.brost@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117134048.165425-5-thomas.hellstrom@linux.intel.com
2024-01-31 14:34:35 +01:00
Thomas Hellström
97fd7a7e4e
drm/xe: Annotate mcr_[un]lock()
...
These functions acquire and release the gt::mcr_lock. Annotate
accordingly.
Fix the corresponding sparse warning.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Fixes: fb1d55efdf ("drm/xe: Cleanup OPEN_BRACE style issues")
Cc: Francois Dugast <francois.dugast@intel.com >
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Matthew Brost <matthew.brost@intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Reviewed-by: Matthew Brost <matthew.brost@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117134048.165425-4-thomas.hellstrom@linux.intel.com
2024-01-31 14:34:35 +01:00
Jani Nikula
1e5a4dfe38
drm/xe: drop display/ subdir from include directories
...
There are very few places that need to include anything from under
display/. Require the display/ prefix in #include directives, and drop
the subdirectory from the header search path.
Sort the include lists while at it.
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Acked-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240122101428.2683468-2-jani.nikula@intel.com
2024-01-31 14:59:07 +02:00
Jani Nikula
f01ece502a
drm/xe: move xe_display.[ch] under display/
...
All the other display related files are under display/ subdirectory,
also move xe_display.[ch] there.
Sort the build list while at it.
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Acked-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240122101428.2683468-1-jani.nikula@intel.com
2024-01-31 14:58:40 +02:00
Matthew Brost
d1df9bfbf6
drm/xe: Only allow 1 ufence per exec / bind IOCTL
...
The way exec ufences are coded only 1 ufence per IOCTL will be signaled.
It is possible to fix this but for current use cases 1 ufence per IOCTL
is sufficient. Enforce a limit of 1 ufence per IOCTL (both exec and bind
to be uniform).
v2:
- Add fixes tag (Thomas)
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Cc: Mika Kahola <mika.kahola@intel.com >
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Signed-off-by: Matthew Brost <matthew.brost@intel.com >
Reviewed-by: Brian Welty <brian.welty@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240124234413.1640825-1-matthew.brost@intel.com
2024-01-30 15:51:04 -08:00
José Roberto de Souza
be7d51c5b4
drm/xe: Add batch buffer addresses to devcoredump
...
Those addresses are necessary to Mesa tools knows where in VM are the
batch buffers to parse and print instructions that are human readable.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240130135648.30211-2-jose.souza@intel.com
2024-01-30 11:53:47 -08:00
José Roberto de Souza
5746eaaa80
drm/xe: Add functions to convert regular address to canonical address and back
...
Some instructions requires canonical address like
MI_BATCH_BUFFER_START(UMDs must call xe_exec with a canonical address
for Xe2+).
So here adding functions to convert regular address to canonical
address and back, the first user of this functions will be added
in the next patch.
v3:
- inline removed
- rename highest_address_bit_get() to ppgtt_msb_get()
v4:
- use xe->info.va_bits instead of xe->info.dma_mask_size
BSpec: 47626
Cc: Matt Roper <matthew.d.roper@intel.com >
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Cc: Stuart Summers <stuart.summers@intel.com >
Cc: Jani Nikula <jani.nikula@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240130135648.30211-1-jose.souza@intel.com
2024-01-30 11:53:47 -08:00
José Roberto de Souza
8945a46a7c
drm/xe: Use function to emit PIPE_CONTROL
...
This reduces code duplication in xe_ring_ops.
v2:
- fix flags of emit_pipe_imm_ggtt()
- reduce to only one function
v3:
- fix emit_pipe_imm_ggtt() stall_only check
Cc: Matt Roper <matthew.d.roper@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240130132249.8615-1-jose.souza@intel.com
2024-01-30 11:51:53 -08:00
Karthik Poosa
cd43106c9b
drm/xe/guc: Reduce a print from warn to debug
...
Reduce debug print from warn to debug to avoid unnecessary warning
message in dmesg: the firmware loading logic already has the right
printk priority level when checking the firmware version.
Fixes: c5a06c9169 ("drm/xe/guc: Enable WA 14018913170")
Suggested-by: Lucas De Marchi <lucas.demarchi@intel.com >
Signed-off-by: Karthik Poosa <karthik.poosa@intel.com >
Reviewed-by: Stuart Summers <stuart.summers@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240125165652.3764711-1-karthik.poosa@intel.com
[ slightly reword debug and commit messages ]
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
2024-01-30 11:37:38 -08:00
Lucas De Marchi
aeacfd2dbe
drm/xe/xe2: Enable has_usm
...
When xe2 support started to be added, USM was still not functional. This
has changed, and now USM can be enabled for xe2. Remove FIXME leftover
to allow VM to be created with DRM_XE_VM_CREATE_FLAG_FAULT_MODE.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240129214510.123829-1-lucas.demarchi@intel.com
2024-01-30 06:54:26 -08:00
Matt Roper
9f5971bdf7
drm/xe: Grab mem_access when disabling C6 on skip_guc_pc platforms
...
If skip_guc_pc is set for a platform, C6 is disabled directly without
acquiring a mem_access reference, triggering an assertion inside
xe_gt_idle_disable_c6.
Fixes: 975e4a3795 ("drm/xe: Manually setup C6 when skip_guc_pc is set")
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Vinay Belgaumkar <vinay.belgaumkar@intel.com >
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Reviewed-by: Matthew Auld <matthew.auld@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240126220613.865939-2-matthew.d.roper@intel.com
2024-01-29 08:55:05 -08:00
Fei Yang
348769d1cb
drm/xe: correct the assertion for number of PTEs
...
While one MI_STORE_DATA_IMM can take no more than 0x1fe qwords,
the size of the pgtable can be 512 entries.
Fixes: 43d48379c9 ("drm/xe: correct the calculation of remaining size")
Cc: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Fei Yang <fei.yang@intel.com >
Tested-by: José Roberto de Souza <jose.souza@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240125065245.1204731-2-fei.yang@intel.com
2024-01-26 18:29:05 -08:00
Matthew Brost
d688b86a29
drm/xe/guc: Flush G2H handler when turning off CTs
...
Make sure G2H handler is not running when changing the CT state to drop
messages or disabled. This will help prevent races in the code ensuring
that G2H are not being processed after changing the state.
v2:
- s/flush_g2h_handler/stop_g2h_handler (Michal)
Signed-off-by: Matthew Brost <matthew.brost@intel.com >
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com >
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
[Rodrigo remove the extra line while pushing]
Link: https://patchwork.freedesktop.org/patch/msgid/20240122210156.1517444-4-matthew.brost@intel.com
2024-01-26 15:14:01 -05:00
Matthew Brost
83a7173bac
drm/xe: Move TLB invalidation reset before HW reset
...
This is a software reset which can be done immediately after stopping
the UC.
Signed-off-by: Matthew Brost <matthew.brost@intel.com >
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com >
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240122210156.1517444-3-matthew.brost@intel.com
2024-01-26 15:12:29 -05:00
Matthew Brost
dc75d03716
drm/xe/guc: Add more GuC CT states
...
The Guc CT has more than enabled / disables states rather it has 4. The
4 states are not initialized, disabled, stopped, and enabled. Change the
code to reflect this. These states will enable proper return codes from
functions and therefore enable proper error messages.
v2:
- s/XE_GUC_CT_STATE_DROP_MESSAGES/XE_GUC_CT_STATE_STOPPED (Michal)
- Add assert for CT being initialized (Michal)
- Fix kernel for CT state enum (Michal)
v3:
- Kernel doc (Michal)
- s/reiecved/received (Michal)
- assert CT state not initialized in xe_guc_ct_init (Michal)
- add argument xe_guc_ct_set_state to clear g2h (Michal)
v4:
- Drop clear_outstanding_g2h argument (Michal)
v5:
- Move xa_destroy outside of fast lock (CI)
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com >
Cc: Tejas Upadhyay <tejas.upadhyay@intel.com >
Signed-off-by: Matthew Brost <matthew.brost@intel.com >
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com >
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240122210156.1517444-2-matthew.brost@intel.com
2024-01-26 15:12:28 -05:00
José Roberto de Souza
c6878e4743
drm/xe: Fix crash in trace_dma_fence_init()
...
trace_dma_fence_init() uses dma_fence_ops functions
like get_driver_name() and get_timeline_name() to generate trace
information but the Xe KMD implementation of those functions makes
use of xe_hw_fence_ctx that was being set after dma_fence_init().
So here just inverting the order to fix the crash.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Reviewed-by: Matthew Brost <matthew.brost@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240124171830.95774-1-jose.souza@intel.com
2024-01-25 05:31:54 -08:00
Jani Nikula
439987f6f4
drm/xe: don't build debugfs files when CONFIG_DEBUG_FS=n
...
If we unconditionally build the debugfs files, we'll get both the static
inline stubs from the headers and the real functions for
CONFIG_DEBUG_FS=n. Avoid building the debugfs files with that config.
Reported-by: Randy Dunlap <rdunlap@infradead.org >
Closes: https://lore.kernel.org/r/152521f9-119f-4c61-b467-3e91f4aecb1a@infradead.org
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
Tested-by: Randy Dunlap <rdunlap@infradead.org > # build-tested
Reviewed-by: Randy Dunlap <rdunlap@infradead.org >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240124090515.3363901-1-jani.nikula@intel.com
2024-01-24 14:34:07 -08:00
José Roberto de Souza
28a98c39fa
drm/xe: Remove additional spaces in devcoredump HW Engines section
...
I guess the indention was to keep it visually aligned but that
would require a lot of spaces and was not followed by other registers
so lets just drop it.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-7-jose.souza@intel.com
2024-01-24 11:08:26 -08:00
José Roberto de Souza
89e394f0db
drm/xe: Print registers spread in 2 u32 as u64
...
This makes easier to use those registers when copying its values to
calculator also makes easier for tools to parse it.
To avoids padding holes in xe_hw_engine_snapshot the u64 variables
were moved to the top of xe_hw_engine_snapshot.reg.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-6-jose.souza@intel.com
2024-01-24 11:08:25 -08:00
José Roberto de Souza
4376cee620
drm/xe: Print more device information in devcoredump
...
To properly decode batch buffer Mesa tools needs to know what
platform is this one, for now we can do that with PCI id but
already making it future proof by also printing GTs GMD version.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-5-jose.souza@intel.com
2024-01-24 11:08:25 -08:00
Matt Roper
facd388708
drm/xe: Stash GMD_ID value in xe_gt
...
Although we've stored the major and minor versions for graphics/media in
xe_device, it will be simpler to implement the uapi version query if we
also stash the raw register value in the GT itself.
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-4-jose.souza@intel.com
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
2024-01-24 11:08:18 -08:00
José Roberto de Souza
83ef64ebde
drm/xe: Nuke xe from xe_devcoredump
...
xe is never set in xe_devcoredump but if xe_device is needed
devcoredump_to_xe_device() can be used.
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-3-jose.souza@intel.com
2024-01-24 10:53:38 -08:00
José Roberto de Souza
98fefec8c3
drm/xe: Change devcoredump functions parameters to xe_sched_job
...
When devcoredump start to dump the VMs contents it will be necessary
to know the starting addresses of batch buffers of the job that hang.
This information it set in xe_sched_job and xe_sched_job is not easily
acessible from xe_exec_queue, so here changing the parameter, next
patch will append the batch buffer addresses to devcoredump snapshot
capture.
v3:
- update functions documentation to xe_sched_job
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Reviewed-by: Stuart Summers <stuart.summers@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-2-jose.souza@intel.com
2024-01-24 10:53:38 -08:00
José Roberto de Souza
c65908c33b
drm/xe: Remove double new lines in devcoredump
...
Right now devcoredump has a new line between '**** GuC CT ****' and
'H2G CTB (all sizes in DW):' while other sections don't have.
v2: remove double new line after IPEHR
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Maarten Lankhorst <dev@lankhorst.se >
Cc: Stuart Summers <stuart.summers@intel.com >
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
Reviewed-by: Stuart Summers <stuart.summers@intel.com >
Signed-off-by: José Roberto de Souza <jose.souza@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123204454.246788-1-jose.souza@intel.com
2024-01-24 10:53:31 -08:00
Lucas De Marchi
9e3a13f3ee
drm/xe: Remove PVC from xe_wa kunit tests
...
Since the PCI IDs for PVC weren't added to the xe driver, the xe_wa
tests should not try to create a fake PVC device since they can't find
the right PCI ID. Fix bugs when running kunit:
# xe_wa_gt: ASSERTION FAILED at drivers/gpu/drm/xe/tests/xe_wa_test.c:111
Expected ret == 0, but
ret == -19 (0xffffffffffffffed)
[FAILED] PVC (B0)
# xe_wa_gt: ASSERTION FAILED at drivers/gpu/drm/xe/tests/xe_wa_test.c:111
Expected ret == 0, but
ret == -19 (0xffffffffffffffed)
[FAILED] PVC (B1)
# xe_wa_gt: ASSERTION FAILED at drivers/gpu/drm/xe/tests/xe_wa_test.c:111
Expected ret == 0, but
ret == -19 (0xffffffffffffffed)
[FAILED] PVC (C0)
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123031242.3548724-1-lucas.demarchi@intel.com
(cherry picked from commit ab5ae65fb2 )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:13:55 +01:00
Moti Haimovski
d186e51b0e
drm/xe/vm: bugfix in xe_vm_create_ioctl
...
Fix xe_vm_create_ioctl routine not freeing the vm-id allocated to it
when the function fails.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Signed-off-by: Moti Haimovski <mhaimovski@habana.ai >
Reviewed-by: Matthew Brost <matthew.brost@intel.com >
Reviewed-by: Tomer Tayar <ttayar@habana.ai >
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240122102424.4008095-1-mhaimovski@habana.ai
(cherry picked from commit f6bf0424ca )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:13:41 +01:00
Himal Prasad Ghimiray
c0e2508cb1
drm/xe/xe2: Use XE_CACHE_WB pat index
...
The pat table entry associated with XE_CACHE_WB is coherent whereas
XE_CACHE_NONE is non coherent. Migration expects the coherency
with cpu therefore use the coherent entry XE_CACHE_WB for
buffers not supporting compression. For read/write to flat ccs region
the issue is not related to coherency with cpu. The hardware expects
the pat index associated with GPUVA for indirect access to be
compression enabled hence use XE_CACHE_NONE_COMPRESSION.
v2
- Fix the argument to emit_pte, pass the bool directly. (Thomas)
v3
- Rebase
- Update commit message (Matt)
v4
- Add a Fixes: tag. (Thomas)
Cc: Matt Roper <matthew.d.roper@intel.com >
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Fixes: 65ef8dbad1 ("drm/xe/xe2: Update emit_pte to use compression enabled PAT index")
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com >
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119041826.1670496-1-himal.prasad.ghimiray@intel.com
(cherry picked from commit 6a02867560 )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:13:33 +01:00
Lucas De Marchi
981460d8ee
drm/xe/display: Avoid calling readq()
...
readq() is not available in 32bits and i915_gem_object_read_from_page()
is supposed to allow reading arbitrary sizes determined by the `size`
argument. Currently the only caller only passes a size == 8 so the
second problem is not that big. Migrate to calling
memcpy()/memcpy_fromio() to allow possible changes in the display side
and to fix the build on 32b architectures.
v2: Use memcpy/memcpy_fromio directly rather than using iosys-map with
the same size == 8 bytes restriction (Matt Roper)
Fixes: 44e694958b ("drm/xe/display: Implement display support")
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-4-lucas.demarchi@intel.com
(cherry picked from commit 406663f777 )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:13:25 +01:00
Lucas De Marchi
52e8948c6b
drm/xe/mmio: Cast to u64 when printing
...
resource_size_t uses %pa format in printk since the size varies
depending on build options. However to keep the io_size/physical_size
addition in the same call we can't pass the address without adding yet
another variable in these function. Simply cast it to u64 and keep using
%llx.
Fixes: 286089ce69 ("drm/xe: Improve vram info debug printing")
Cc: Oak Zeng <oak.zeng@intel.com >
Cc: Michael J. Ruhl <michael.j.ruhl@intel.com >
Cc: Matthew Brost <matthew.brost@intel.com >
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-3-lucas.demarchi@intel.com
(cherry picked from commit 6d8d038364 )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:13:15 +01:00
Lucas De Marchi
32f6c33257
drm/xe: Use _ULL for u64 division
...
Use DIV_ROUND_UP_ULL() so it also works on 32bit build.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-2-lucas.demarchi@intel.com
(cherry picked from commit 7b5bdb447b )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:13:06 +01:00
Thomas Hellström
03b72dbbd4
drm/xe: Use a NULL pointer instead of 0.
...
The last argument of xe_pcode_read() is a pointer. Use NULL instead of 0.
Fixes: 92d44a422d ("drm/xe/hwmon: Expose card reactive critical power")
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Reviewed-by: Francois Dugast <francois.dugast@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117134048.165425-6-thomas.hellstrom@linux.intel.com
(cherry picked from commit 79f8eacbdf )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:12:59 +01:00
Thomas Hellström
3213b8070a
drm/xe/dmabuf: Make xe_dmabuf_ops static
...
It is not referenced outside of the xe_dma_buf.c source file.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Cc: Matthew Brost <matthew.brost@intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Reviewed-by: Francois Dugast <francois.dugast@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117134048.165425-2-thomas.hellstrom@linux.intel.com
(cherry picked from commit e2dc52f849 )
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
2024-01-24 11:12:45 +01:00
Lucas De Marchi
ab5ae65fb2
drm/xe: Remove PVC from xe_wa kunit tests
...
Since the PCI IDs for PVC weren't added to the xe driver, the xe_wa
tests should not try to create a fake PVC device since they can't find
the right PCI ID. Fix bugs when running kunit:
# xe_wa_gt: ASSERTION FAILED at drivers/gpu/drm/xe/tests/xe_wa_test.c:111
Expected ret == 0, but
ret == -19 (0xffffffffffffffed)
[FAILED] PVC (B0)
# xe_wa_gt: ASSERTION FAILED at drivers/gpu/drm/xe/tests/xe_wa_test.c:111
Expected ret == 0, but
ret == -19 (0xffffffffffffffed)
[FAILED] PVC (B1)
# xe_wa_gt: ASSERTION FAILED at drivers/gpu/drm/xe/tests/xe_wa_test.c:111
Expected ret == 0, but
ret == -19 (0xffffffffffffffed)
[FAILED] PVC (C0)
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123031242.3548724-1-lucas.demarchi@intel.com
2024-01-23 21:04:04 -08:00
Thomas Hellström
6240c2c43f
drm/xe: Document nested struct members according to guidelines
...
Document nested struct members with full names as described in
Documentation/doc-guide/kernel-doc.rst.
For this documentation we allow a column width of 100 to make
it more readable.
This fixes warnings similar to:
drivers/gpu/drm/xe/xe_lrc_types.h:45: warning: Excess struct member 'size' description in 'xe_lrc'
v2:
- Only change the documentation, not the member.
v3:
- Fix the commit message wording.
Cc: Lucas De Marchi <lucas.demarchi@intel.com >
Cc: Matthew Brost <matthew.brost@intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123153147.27305-1-thomas.hellstrom@linux.intel.com
2024-01-23 16:54:41 +01:00
Shekhar Chauhan
02c4e64a86
drm/xe/xe2_lpg: Introduce performance guide changes
...
Add performance guide changes to Xe2_LPG.
BSpec: 72161
Signed-off-by: Shekhar Chauhan <shekhar.chauhan@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240123050552.2250699-2-shekhar.chauhan@intel.com
2024-01-23 07:41:00 -08:00
Sujaritha Sundaresan
c885886bda
drm/xe: Fix typo in vram frequency sysfs documentation
...
Fix function naming and description for xe_vram_freq_sysfs_init
function.
v2: Add fixes tag (Riana)
Fix review comments (Lucas)
Fixes: 4ae3aeab32 ("drm/xe: Add vram frequency sysfs attributes")
Signed-off-by: Sujaritha Sundaresan <sujaritha.sundaresan@intel.com >
Reviewed-by: Riana Tauro <riana.tauro@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117043215.2598677-1-sujaritha.sundaresan@intel.com
2024-01-23 07:34:54 -08:00
Lucas De Marchi
be3382ecdf
Merge drm/drm-next into drm-xe-next
...
Sync to v6.8-rc1.
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
2024-01-22 15:10:10 -08:00
Moti Haimovski
f6bf0424ca
drm/xe/vm: bugfix in xe_vm_create_ioctl
...
Fix xe_vm_create_ioctl routine not freeing the vm-id allocated to it
when the function fails.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Signed-off-by: Moti Haimovski <mhaimovski@habana.ai >
Reviewed-by: Matthew Brost <matthew.brost@intel.com >
Reviewed-by: Tomer Tayar <ttayar@habana.ai >
Signed-off-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240122102424.4008095-1-mhaimovski@habana.ai
2024-01-22 08:57:16 -08:00
Himal Prasad Ghimiray
6a02867560
drm/xe/xe2: Use XE_CACHE_WB pat index
...
The pat table entry associated with XE_CACHE_WB is coherent whereas
XE_CACHE_NONE is non coherent. Migration expects the coherency
with cpu therefore use the coherent entry XE_CACHE_WB for
buffers not supporting compression. For read/write to flat ccs region
the issue is not related to coherency with cpu. The hardware expects
the pat index associated with GPUVA for indirect access to be
compression enabled hence use XE_CACHE_NONE_COMPRESSION.
v2
- Fix the argument to emit_pte, pass the bool directly. (Thomas)
v3
- Rebase
- Update commit message (Matt)
v4
- Add a Fixes: tag. (Thomas)
Cc: Matt Roper <matthew.d.roper@intel.com >
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Fixes: 65ef8dbad1 ("drm/xe/xe2: Update emit_pte to use compression enabled PAT index")
Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com >
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119041826.1670496-1-himal.prasad.ghimiray@intel.com
2024-01-22 12:36:36 +01:00
Lucas De Marchi
836e487149
drm/xe: Enable 32bits build
...
Now that all the issues with 32bits are fixed, enable it again.
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-6-lucas.demarchi@intel.com
2024-01-19 13:09:04 -08:00
Lucas De Marchi
8d038f49c1
drm/xe: Fix cast on trace variable
...
Cast the pointer to unsigned long and let it be implicitly extended to
u64. This fixes the build on 32bits arch.
Cc: Matthew Brost <matthew.brost@intel.com >
Cc: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com >
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-5-lucas.demarchi@intel.com
2024-01-19 13:09:04 -08:00
Lucas De Marchi
406663f777
drm/xe/display: Avoid calling readq()
...
readq() is not available in 32bits and i915_gem_object_read_from_page()
is supposed to allow reading arbitrary sizes determined by the `size`
argument. Currently the only caller only passes a size == 8 so the
second problem is not that big. Migrate to calling
memcpy()/memcpy_fromio() to allow possible changes in the display side
and to fix the build on 32b architectures.
v2: Use memcpy/memcpy_fromio directly rather than using iosys-map with
the same size == 8 bytes restriction (Matt Roper)
Fixes: 44e694958b ("drm/xe/display: Implement display support")
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-4-lucas.demarchi@intel.com
2024-01-19 13:08:53 -08:00
Lucas De Marchi
6d8d038364
drm/xe/mmio: Cast to u64 when printing
...
resource_size_t uses %pa format in printk since the size varies
depending on build options. However to keep the io_size/physical_size
addition in the same call we can't pass the address without adding yet
another variable in these function. Simply cast it to u64 and keep using
%llx.
Fixes: 286089ce69 ("drm/xe: Improve vram info debug printing")
Cc: Oak Zeng <oak.zeng@intel.com >
Cc: Michael J. Ruhl <michael.j.ruhl@intel.com >
Cc: Matthew Brost <matthew.brost@intel.com >
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com >
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-3-lucas.demarchi@intel.com
2024-01-19 13:08:23 -08:00
Lucas De Marchi
7b5bdb447b
drm/xe: Use _ULL for u64 division
...
Use DIV_ROUND_UP_ULL() so it also works on 32bit build.
Fixes: dd08ebf6c3 ("drm/xe: Introduce a new DRM driver for Intel GPUs")
Reviewed-by: Matt Roper <matthew.d.roper@intel.com >
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119001612.2991381-2-lucas.demarchi@intel.com
2024-01-19 13:08:22 -08:00
Rodrigo Vivi
06af1954ae
drm/xe: Do not flood dmesg with guc log
...
This information is already present at
/sys/kernel/debug/dri/0/gt0/uc/guc_log if needed.
v2: add missing chunk
v3: remove spurious line
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240118214856.399952-1-rodrigo.vivi@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2024-01-19 09:52:18 -05:00
Badal Nilawar
f87f5ea439
drm/xe/xe_debugfs: Print skip_guc_pc in xe info
...
Print xe->info.skip_guc_pc in xe info
Cc: Anshuman Gupta <anshuman.gupta@intel.com >
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com >
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240119131025.1872947-1-badal.nilawar@intel.com
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com >
2024-01-19 08:28:31 -05:00
Jani Nikula
9c0155b652
drm/xe: constify engine class sysfs attributes
...
All of the attributes, as well as the array of attributes, can be const
and placed in rodata.
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117122044.1544174-5-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-01-19 14:36:04 +02:00
Jani Nikula
480ea9e306
drm/xe: make gpuvm_ops const
...
Place the function pointers in rodata.
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117122044.1544174-4-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-01-19 14:35:53 +02:00
Jani Nikula
3cacf808c9
drm/xe: make hwmon_info const
...
Make hwmon_info a const array of const pointers, and let it be placed in
rodata.
Reviewed-by: Thomas Hellström <thomas.hellstrom@linux.intel.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20240117122044.1544174-3-jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com >
2024-01-19 14:35:41 +02:00