Intel Arc on Ampere Altra (unstable but somewhat working)

I think it is better to have a separate thread about all the effort to get it working.

For historical context: ASRock Rack Ampere bundle - #40 by Civiloid and below are the original messages.

Current status:
Modesetting: works after a patch
DRM: Hangs on start

HW I have:
GPU: Intel Arc 750
MB: Asrock ALTRAD8UD-1L2T
CPU: Altra Q64-22

Kernel: latest (6.9-git from master from ~5th of May, will update it at some point)

What has been done:
First note - card barely fits because it is large. It doesn’t fit into last two slots because they are too close to the battery. See photos in the original thread: ASRock Rack Ampere bundle - #44 by Civiloid

Attempt to just compile Xe kernel module and start gdm - compiles just fine, module OOPSes on load with:

[   57.555741] xe 0004:04:00.0: [drm] Using GuC firmware from i915/dg2_guc_70.bin version 70.20.0
[   57.581832] xe 0004:04:00.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=none:owns=none
[   57.581848] Unable to handle kernel paging request at virtual address ffffffffc08003cc
[   57.589768] Mem abort info:
[   57.592561]   ESR = 0x0000000096000006
[   57.596305]   EC = 0x25: DABT (current EL), IL = 32 bits
[   57.601615]   SET = 0, FnV = 0
[   57.604663]   EA = 0, S1PTW = 0
[   57.607794]   FSC = 0x06: level 2 translation fault
[   57.612668] Data abort info:
[   57.615538]   ISV = 0, ISS = 0x00000006, ISS2 = 0x00000000
[   57.621026]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[   57.626075]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[   57.631384] swapper pgtable: 4k pages, 48-bit VAs, pgdp=00000801c6b7d000
[   57.638083] [ffffffffc08003cc] pgd=1800081fffcc6003, p4d=00000801c760a003, pud=00000801c760b003, pmd=0000000000000000
[   57.648696] Internal error: Oops: 0000000096000006 [#1] SMP
[   57.654259] Modules linked in: xe(+) snd_seq_dummy snd_hrtimer snd_seq snd_seq_device qrtr snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hda_core aes_ce_blk aes_ce_cipher polyval_ce snd_hwdep polyval_generic snd_pcm ghash_ce gf128mul snd_timer acpi_ipmi snd sha2_ce soundcore sha256_arm64 ipmi_ssif sbsa_gwdt sha1_ce arm_spe_pmu ipmi_devintf binfmt_misc arm_cmn ipmi_msghandler xgene_hwmon nls_ascii nls_cp437 vfat fat arm_dsu_pmu cppc_cpufreq joydev acpi_tad evdev dm_mod loop efi_pstore dax configfs nfnetlink efivarfs ip_tables x_tables autofs4 ext4 crc32c_generic crc16 cdc_ether mbcache usbnet jbd2 mii hid_generic usbhid hid drm_gpuvm drm_exec drm_buddy gpu_sched nvme video drm_suballoc_helper drm_ttm_helper ttm cec nvme_core rc_core ixgbe t10_pi drm_display_helper xhci_pci xfrm_algo mdio_devres xhci_hcd drm_kms_helper of_mdio crc64_rocksoft fixed_phy crc64 fwnode_mdio crc_t10dif drm usbcore igb crct10dif_generic libphy crct10dif_ce crct10dif_common mdio usb_common i2c_algo_bit i2c_designware_platform
[   57.654393]  i2c_designware_core [last unloaded: xe]
[   57.748068] CPU: 0 PID: 7 Comm: kworker/0:0 Tainted: G     U             6.9.0-rc6+ #4
[   57.755975] Hardware name:  ALTRAD8UD-1L2T/ALTRAD8UD-1L2T, BIOS 2.05 04/12/2024
[   57.763272] Workqueue: events work_for_cpu_fn
[   57.767623] pstate: 80400009 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   57.774575] pc : logic_inb+0xa0/0xe0
[   57.778145] lr : intel_vga_reset_io_mem+0x38/0x68 [xe]
[   57.783547] sp : ffff8000802dbaa0
[   57.786850] x29: ffff8000802dbaa0 x28: ffffa9bdd90e9928 x27: 0000000000000000
[   57.793978] x26: 0000000000000001 x25: 0000000000000002 x24: ffff07ff82cfb0c8
[   57.801105] x23: ffffa9bdd90f6c38 x22: ffff07ffa8901000 x21: 0000000000000000
[   57.808232] x20: 0000000000000000 x19: ffff07ff82cfb000 x18: ffffffffffffffff
[   57.815358] x17: 2c6d656d2b6f693d x16: ffffa9be0b0be3c8 x15: 6c6f203a6465676e
[   57.822484] x14: 616863207365646f x13: 656e6f6e3d736e77 x12: ffff081eef6e0000
[   57.829610] x11: 0000000000000001 x10: 0000000000000001 x9 : ffffa9be0aa2702c
[   57.836737] x8 : c0000000ffffbfff x7 : ffffa9be0ca1c120 x6 : 00000000000000ff
[   57.843863] x5 : ffffa9be0b659f10 x4 : 000000000000000a x3 : 0000000000000000
[   57.850989] x2 : 0000000000ffbffe x1 : 00000000000003cc x0 : ffffffffc08003cc
[   57.858116] Call trace:
[   57.860552]  logic_inb+0xa0/0xe0
[   57.863772]  hsw_power_well_enable+0x198/0x288 [xe]
[   57.868900]  intel_power_well_enable+0x74/0x98 [xe]
[   57.874019]  intel_power_well_get+0x2c/0x40 [xe]
[   57.878873]  __intel_display_power_get_domain.part.0+0x7c/0xd0 [xe]
[   57.885375]  intel_display_power_get+0x5c/0x98 [xe]
[   57.890487]  intel_power_domains_init_hw+0x64/0x320 [xe]
[   57.896031]  intel_display_driver_probe_noirq+0xa0/0x1f8 [xe]
[   57.902008]  xe_display_init_noirq+0x58/0x90 [xe]
[   57.906945]  xe_device_probe+0x248/0x4e8 [xe]
[   57.911538]  xe_pci_probe+0x5d8/0x918 [xe]
[   57.915866]  local_pci_probe+0x48/0xb8
[   57.919610]  work_for_cpu_fn+0x24/0x40
[   57.923349]  process_one_work+0x18c/0x400
[   57.927350]  worker_thread+0x204/0x420
[   57.931090]  kthread+0xe8/0xf8
[   57.934135]  ret_from_fork+0x10/0x20
[   57.937705] Code: d65f03c0 929fffe0 f2b81000 8b000020 (39400000)
[   57.943787] ---[ end trace 0000000000000000 ]---

Note: module reuiqres xe.force_probe='56a1 option on cmdline or equivalent on modprobe.

Patch to fix that: linux-xe-aarch64-v0.patch · GitHub

After that module loads and I gnome running in software mode and outputing via Xe.

That makes modestetting - working.

Attempting to get 3D Acceleration to work:

  1. On debian, libdrm doesn’t build libdrm_intel on non-x86, that is simple to fix: libdrm-2.4.120-debian-intel-aarch.patch · GitHub
  2. For mesa, I took 24.1.0-rc3 as there was a lot of work around support of Xe kernel module, but few things in just a build system was required: mesa-24.1.0-rc3-allow-i915-to-compile-on-aarch64.patch

That compiles mesa just fine. Then the problem starts.

I’m getting initial image with a cursor, however gdm hangs immediately, consuming 100% CPU in a busy loop.

Kernel messages are:

[  687.185731] xe 0004:04:00.0: [drm:drm_open_helper [drm]] comm="systemd-logind", pid=1479, minor=0
[  687.185771] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="systemd-logind" pid=1479, dev=0xe200, auth=1, DRM_IOCTL_SET_MASTER
[  687.186257] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_VERSION
<...>
[  687.276617] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
<...>
[  687.277202] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
<...>
[  687.277219] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_CREATE
[  687.278073] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.278096] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 262144
[  687.278159] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.278177] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000000200000000, range=0x0000000000040000, bo_offset_or_userptr=0x0000000000000000
[  687.278218] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000000200000000, range=0x0000000000040000
[  687.278261] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [200000000...200040000) engine 00000000c49156d1.
[  687.278719] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.278757] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 3 at (0 + 1) [0...8000000000) f:0
[  687.278804] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.278846] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.278862] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 65536
[  687.278908] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.278924] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffeffff0000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.278962] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffeffff0000, range=0x0000000000010000
[  687.279011] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffeffff0000...ffff00000000) engine 00000000c49156d1.
[  687.279400] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.279436] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 3 at (511 + 1) [ff8000000000...1000000000000) f:0
[  687.279653] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.279673] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 65536
[  687.279720] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.279736] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefffe0000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.279775] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefffe0000, range=0x0000000000010000
[  687.279814] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefffe0000...fffeffff0000) engine 00000000c49156d1.
[  687.279854] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.279890] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (480 + 16) [fffefffe0000...fffeffff0000) f:0
[  687.279941] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.281486] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.281508] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_WAIT
[  687.281524] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell", pid=2393, ret=-62
[  687.281538] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.283500] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_GET_CAP
[  687.287151] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.287180] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 2097152
[  687.287236] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.287254] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x000000013f600000, range=0x0000000000200000, bo_offset_or_userptr=0x0000000000000000
[  687.287293] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x000000013f600000, range=0x0000000000200000
[  687.287335] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [13f600000...13f800000) engine 00000000c49156d1.
[  687.287734] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.287772] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 2 at (4 + 1) [100000000...140000000) f:0
[  687.287819] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.287854] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.287871] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 65536
[  687.287916] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.287932] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x00000001ff7e0000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.287970] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x00000001ff7e0000, range=0x0000000000010000
[  687.288010] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [1ff7e0000...1ff7f0000) engine 00000000c49156d1.
[  687.288288] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.288325] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 2 at (7 + 1) [1c0000000...200000000) f:0
[  687.288379] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.288818] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.288838] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.288854] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.288868] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.288883] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC_QUEUE_CREATE
[  687.289028] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.289043] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.289057] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC_QUEUE_CREATE
[  687.289186] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.289201] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_DEVICE_QUERY
[  687.289215] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC_QUEUE_CREATE
[  687.289341] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.289372] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.289389] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefffd0000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.289428] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefffd0000, range=0x0000000000010000
[  687.289469] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefffd0000...fffefffe0000) engine 00000000c49156d1.
[  687.289510] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.289547] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (464 + 16) [fffefffd0000...fffefffe0000) f:0
[  687.289599] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.289631] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.289653] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 131072
[  687.289701] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.289716] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefffb0000, range=0x0000000000020000, bo_offset_or_userptr=0x0000000000000000
[  687.289754] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefffb0000, range=0x0000000000020000
[  687.289794] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefffb0000...fffefffd0000) engine 00000000c49156d1.
[  687.289833] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.289870] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (432 + 32) [fffefffb0000...fffefffd0000) f:0
[  687.289919] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.289945] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.289962] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.289987] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.290004] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefffa0000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.290042] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefffa0000, range=0x0000000000010000
[  687.290081] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefffa0000...fffefffb0000) engine 00000000c49156d1.
[  687.290119] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.290156] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (416 + 16) [fffefffa0000...fffefffb0000) f:0
[  687.290201] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.290223] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.290239] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 131072
[  687.290282] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.290297] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefff80000, range=0x0000000000020000, bo_offset_or_userptr=0x0000000000000000
[  687.290335] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefff80000, range=0x0000000000020000
[  687.290374] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefff80000...fffefffa0000) engine 00000000c49156d1.
[  687.290413] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.290450] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (384 + 32) [fffefff80000...fffefffa0000) f:0
[  687.290499] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.290517] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.290533] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.290555] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.290570] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefff70000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.290608] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefff70000, range=0x0000000000010000
[  687.290647] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefff70000...fffefff80000) engine 00000000c49156d1.
[  687.290685] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.290722] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (368 + 16) [fffefff70000...fffefff80000) f:0
[  687.290768] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.290789] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.290805] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 131072
[  687.290848] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.290863] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefff50000, range=0x0000000000020000, bo_offset_or_userptr=0x0000000000000000
[  687.290901] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefff50000, range=0x0000000000020000
[  687.290939] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefff50000...fffefff70000) engine 00000000c49156d1.
[  687.290978] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.291026] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (336 + 32) [fffefff50000...fffefff70000) f:0
[  687.291075] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.291094] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.291148] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.291177] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 65536
[  687.291221] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.291237] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x000000027fff0000, range=0x0000000000010000, bo_offset_or_userptr=0x0000000000000000
[  687.291275] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x000000027fff0000, range=0x0000000000010000
[  687.291314] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [27fff0000...280000000) engine 00000000c49156d1.
[  687.291588] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.291625] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 2 at (9 + 1) [240000000...280000000) f:0
[  687.291669] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.294883] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC
[  687.294919] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD
[  687.294947] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_WAIT
[  687.294964] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell", pid=2393, ret=-62
[  687.294978] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_WAIT
[  687.295003] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell", pid=2393, ret=-62
[  687.295017] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_CREATE
[  687.295037] xe 0004:04:00.0: [drm:xe_migrate_clear [xe]] Pass 0, size: 131072
[  687.295087] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_VM_BIND
[  687.295104] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] op=0, addr=0x0000fffefff30000, range=0x0000000000020000, bo_offset_or_userptr=0x0000000000000000
[  687.295143] xe 0004:04:00.0: [drm:xe_vm_bind_ioctl [xe]] MAP: addr=0x0000fffefff30000, range=0x0000000000020000
[  687.295185] xe 0004:04:00.0: [drm:__xe_pt_bind_vma [xe]] Preparing bind, with range [fffefff30000...fffefff50000) engine 00000000c49156d1.
[  687.295227] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 1 entries to update
[  687.295263] xe 0004:04:00.0: [drm:xe_vm_dbg_print_entries [xe]] 	0: Update level 0 at (304 + 32) [fffefff30000...fffefff50000) f:0
[  687.295313] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_GEM_MMAP_OFFSET
[  687.295343] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.295360] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC
[  687.295380] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD
[  687.295400] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_WAIT
[  687.295416] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.295751] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.295772] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.295787] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC
[  687.295804] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.295818] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC_QUEUE_DESTROY
[  687.295838] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.295853] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.295867] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC
[  687.295882] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.295896] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC_QUEUE_DESTROY
[  687.295913] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.295918] xe 0004:04:00.0: [drm] Timedout job: seqno=4294967169, guc_id=3, flags=0x0
[  687.295928] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_CREATE
[  687.295943] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC
[  687.295957] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SYNCOBJ_DESTROY
[  687.295971] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, XE_EXEC_QUEUE_DESTROY
[  687.296030] xe 0004:04:00.0: [drm] Xe device coredump has been created
[  687.296035] xe 0004:04:00.0: [drm] Check your /sys/class/drm/card0/device/devcoredump/data
[  687.296212] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SET_CLIENT_CAP
[  687.296229] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_SET_CLIENT_CAP
[  687.296250] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_VERSION
[  687.296265] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_VERSION
[  687.296305] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[  687.296326] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_MODE_GETRESOURCES
[  687.296342] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_GET_CAP
[  687.296356] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_GET_CAP
[  687.296369] xe 0004:04:00.0: [drm:drm_ioctl [drm]] comm="gnome-shell" pid=2393, dev=0xe200, auth=1, DRM_IOCTL_GET_CAP
[  687.296338] xe 0004:04:00.0: [drm:guc_exec_queue_timedout_job [xe]] Timedout signaled job: seqno=4294967169, guc_id=3, flags=0x1
<...>

And after that it is basically stuck. I guess no surprise if something times out and then it suggested to get a coredump (though sysfs path is wrong).

And full log: gist:bee72c168ecc319b8eef89eb12b3db9e · GitHub

But that is on a kernel without PCIe patch, so maybe that is the reason why card is stuck. I’ll verify that.

UPD: And no signicant change if I re-apply the patch. I think I’ve managed to better isolate messages around the problem:

[  +0.000016] [drm:drm_mode_object_put.part.0 [drm]] OBJ ID: 288 (4)
[  +0.000013] [drm:drm_mode_object_get [drm]] OBJ ID: 290 (2)
[  +0.000018] xe 0004:04:00.0: [drm:intel_plane_atomic_check_with_state [xe]] [CRTC:80:pipe A] with [PLANE:31:plane 1A] visible 1 -> 1, off 0, on 0, ms 0
[  +0.000042] [drm:drm_mode_object_get [drm]] OBJ ID: 292 (2)
[  +0.000014] xe 0004:04:00.0: [drm:intel_plane_atomic_check_with_state [xe]] [CRTC:80:pipe A] with [PLANE:76:cursor A] visible 0 -> 1, off 0, on 1, ms 0
[  +0.000047] xe 0004:04:00.0: [drm:intel_atomic_get_global_obj_state [xe]] Added new global object 000000000d80a9ae state 0000000040be01be to 00000000306efab0
[  +0.000044] xe 0004:04:00.0: [drm:intel_atomic_get_global_obj_state [xe]] Added new global object 0000000050377418 state 00000000e1717c20 to 00000000306efab0
[  +0.000040] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:31:plane 1A]   level *wm0,*wm1,*wm2,*wm3,*wm4,*wm5,*wm6,*wm7,*twm, swm, stwm -> *wm0,*wm1,*wm2,*wm3,*wm4,*wm5,*wm6,*wm7,*twm, swm, stwm
[  +0.000040] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:31:plane 1A]   lines    1,   4,   5,   6,  12,  14,  22,  33,   0,   0,    0 ->    4,   4,   5,   6,  12,  14,  22,  33,   0,   0,    0
[  +0.000041] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:31:plane 1A]  blocks   21,  85, 106, 127, 253, 295, 463, 694,  35,   0,    0 ->   82,  82, 103, 123, 244, 285, 447, 670, 177,   0,    0
[  +0.000040] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:31:plane 1A] min_ddb   25,  95, 118, 141, 280, 326, 511, 765,  36,   0,    0 ->  163, 163, 244, 244, 325, 406, 568, 811, 178,   0,    0
[  +0.000040] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:76:cursor A]   level  wm0, wm1, wm2, wm3, wm4, wm5, wm6, wm7, twm, swm, stwm -> *wm0,*wm1,*wm2,*wm3,*wm4,*wm5,*wm6,*wm7,*twm, swm, stwm
[  +0.000039] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:76:cursor A]   lines    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,    0 ->    3,   4,   5,   6,  12,  14,  22,  33,   0,   0,    0
[  +0.000040] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:76:cursor A]  blocks    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,    0 ->    8,  13,  16,  19,  37,  43,  67, 100,  22,   0,    0
[  +0.000040] xe 0004:04:00.0: [drm:skl_compute_wm [xe]] [PLANE:76:cursor A] min_ddb    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,    0 ->   10,  16,  19,  22,  42,  49,  75, 111,  23,   0,    0
[  +0.000045] xe 0004:04:00.0: [drm:drm_atomic_commit [drm]] committing 00000000306efab0
[  +5.196998] xe 0004:04:00.0: [drm] Timedout job: seqno=4294967170, guc_id=5, flags=0x0
[  +0.000021] xe 0004:04:00.0: [drm:xe_devcoredump [xe]] Multiple hangs are occurring, but only the first snapshot was taken
[  +0.000492] xe 0004:04:00.0: [drm] Engine reset: guc_id=5
[  +0.000064] xe 0004:04:00.0: [drm:guc_exec_queue_timedout_job [xe]] Timedout signaled job: seqno=4294967171, guc_id=5, flags=0x1
[  +0.000094] xe 0004:04:00.0: [drm:guc_exec_queue_timedout_job [xe]] Timedout signaled job: seqno=4294967171, guc_id=5, flags=0x1
[  +0.000089] xe 0004:04:00.0: [drm:guc_exec_queue_timedout_job [xe]] Timedout signaled job: seqno=4294967171, guc_id=5, flags=0x1

Currently I’m stuck here as I don’t know the reason why the card hangs.

1 Like

@bexcran tagging you just bc it might be relevant to your A310 too

So, I’ve compiled a kernel from drm / xe / xe kernel driver · GitLab with Altra’s PCIe Errata patch applied and with my patch to make it not-OOPS, and with mesa and libdrm patches I’ve mentioned I can actually run doom3 there (though sometimes it locks up, but I don’t know is it because of the Xe driver state or not)

It is slow (probably because I still have debug drm flags enabled), but it works.

When I’ve tried to run Quake 2 RTX, I got a kernel panic:

[  524.968400] SError Interrupt on CPU38, code 0x00000000be000411 -- SError
[  524.968409] CPU: 38 PID: 5610 Comm: kworker/u295:4 Tainted: G     U             6.9.0-rc6+ #2
[  524.968412] Hardware name:  ALTRAD8UD-1L2T/ALTRAD8UD-1L2T, BIOS 2.05 04/12/2024
[  524.968413] Workqueue: events_unbound xe_devcoredump_deferred_snap_work [xe]
[  524.968461] pstate: 20400009 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[  524.968463] pc : __memcpy_fromio+0x54/0x98
[  524.968469] lr : xe_vm_snapshot_capture_delayed+0x25c/0x310 [xe]
[  524.968508] sp : ffff80008d2ebd00
[  524.968509] x29: ffff80008d2ebd20 x28: ffff0800d2ab61b0 x27: ffff07ffebe28000
[  524.968512] x26: 0000000000120000 x25: ffff07ffd2400000 x24: ffff0800c3b32c00
[  524.968514] x23: 0000000000000000 x22: 0000000000100cc0 x21: 0000000000000009
[  524.968516] x20: ffff0800d2ab6000 x19: 0000000000000009 x18: ffffffffffffffff
[  524.968518] x17: 4d45545359534255 x16: ffffd09354044d18 x15: 2f706d756465726f
[  524.968520] x14: 0000000000000000 x13: 0000000000000030 x12: ffff800080000000
[  524.968523] x11: 0000000000040dc0 x10: dead000000000040 x9 : ffffd0931cc4f05c
[  524.968525] x8 : 000028000011f000 x7 : 000000000000003f x6 : 0000000000120000
[  524.968527] x5 : 0000000000000000 x4 : ffff80008e000060 x3 : ffff07ffd2520000
[  524.968529] x2 : 0000000000120000 x1 : ffff80008e000000 x0 : ffff07ffd2400060
[  524.968532] Kernel panic - not syncing: Asynchronous SError Interrupt
[  524.968534] CPU: 38 PID: 5610 Comm: kworker/u295:4 Tainted: G     U             6.9.0-rc6+ #2
[  524.968536] Hardware name:  ALTRAD8UD-1L2T/ALTRAD8UD-1L2T, BIOS 2.05 04/12/2024
[  524.968537] Workqueue: events_unbound xe_devcoredump_deferred_snap_work [xe]
[  524.968576] Call trace:
[  524.968577]  dump_backtrace+0x9c/0x128
[  524.968580]  show_stack+0x20/0x38
[  524.968582]  dump_stack_lvl+0x34/0x90
[  524.968587]  dump_stack+0x18/0x28
[  524.968589]  panic+0x3b4/0x3f0
[  524.968593]  nmi_panic+0x50/0xa8
[  524.968596]  arm64_serror_panic+0x78/0x90
[  524.968598]  do_serror+0x30/0x78
[  524.968600]  el1h_64_error_handler+0x30/0x48
[  524.968602]  el1h_64_error+0x64/0x68
[  524.968604]  __memcpy_fromio+0x54/0x98
[  524.968606]  xe_devcoredump_deferred_snap_work+0x5c/0x90 [xe]
[  524.968644]  process_one_work+0x18c/0x400
[  524.968648]  worker_thread+0x204/0x420
[  524.968650]  kthread+0xe8/0xf8
[  524.968653]  ret_from_fork+0x10/0x20
[  524.968656] SMP: stopping secondary CPUs
[  524.968673] Kernel Offset: 0x5092d4020000 from 0xffff800080000000
[  524.968675] PHYS_OFFSET: 0xfff1000080000000
[  524.968676] CPU features: 0x0,0000010b,80140528,4241720b
[  524.968677] Memory Limit: none
[  525.304772] ---[ end Kernel panic - not syncing: Asynchronous SError Interrupt ]---

It was showing picture but extremely slow.

Also so far I see a pattern: on a first run on GDB it locks up when I try to enter password, then if I restart gdm (over ssh for example) it allows me to login and OpenGL seems to be working to some extent (doom3 was running idle for 30 minutes without any issues)

At some point I managed to get an OOPS instead of panic:

[   77.164211] Unable to handle kernel paging request at virtual address 007e78c50c533354
[   77.172131] Mem abort info:
[   77.174912]   ESR = 0x0000000096000004
[   77.178655]   EC = 0x25: DABT (current EL), IL = 32 bits
[   77.183959]   SET = 0, FnV = 0
[   77.187000]   EA = 0, S1PTW = 0
[   77.190132]   FSC = 0x04: level 0 translation fault
[   77.195000] Data abort info:
[   77.197872]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[   77.203347]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[   77.208389]   GCS = 0, Overlay = 0, DirtyBit = 0, Xs = 0
[   77.213691] [007e78c50c533354] address between user and kernel address ranges
[   77.220817] Internal error: Oops: 0000000096000004 [#1] SMP
[   77.226378] Modules linked in: snd_seq_dummy snd_hrtimer snd_seq snd_seq_device qrtr snd_hda_codec_hdmi snd_hda_intel snd_intel_dspcfg snd_hda_codec snd_hda_core binfmt_misc snd_hwdep snd_pcm aes_ce_blk aes_ce_cipher polyval_ce snd_timer acpi_ipmi polyval_generic ghash_ce snd ipmi_ssif gf128mul nls_ascii sha2_ce nls_cp437 ipmi_devintf vfat sha256_arm64 arm_spe_pmu ipmi_msghandler soundcore arm_cmn sbsa_gwdt fat sha1_ce xgene_hwmon arm_dsu_pmu joydev cppc_cpufreq acpi_tad evdev dm_mod configfs loop dax efi_pstore nfnetlink efivarfs ip_tables x_tables autofs4 ext4 crc32c_generic crc16 mbcache jbd2 cdc_ether usbnet mii hid_generic usbhid hid xe drm_gpuvm drm_exec drm_buddy gpu_sched video drm_suballoc_helper drm_ttm_helper ttm cec rc_core drm_display_helper drm_kms_helper xhci_pci ixgbe drm xhci_hcd nvme usbcore nvme_core xfrm_algo mdio_devres igb of_mdio fixed_phy fwnode_mdio t10_pi libphy crc64_rocksoft crc64 crc_t10dif crct10dif_generic i2c_designware_platform crct10dif_ce usb_common i2c_algo_bit mdio crct10dif_common
[   77.226454]  i2c_designware_core
[   77.319778] CPU: 16 PID: 341 Comm: kworker/u259:0 Tainted: G     U             6.9.0-rc6+ #2
[   77.328203] Hardware name:  ALTRAD8UD-1L2T/ALTRAD8UD-1L2T, BIOS 2.05 04/12/2024
[   77.335498] Workqueue: events_unbound xe_devcoredump_deferred_snap_work [xe]
[   77.342578] pstate: 20400009 (nzCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   77.349527] pc : __ww_mutex_lock.constprop.0+0xa8/0xae8
[   77.354744] lr : __ww_mutex_lock.constprop.0+0x4c/0xae8
[   77.359957] sp : ffff800082043c40
[   77.363259] x29: ffff800082043c70 x28: ffff07ff81ba9440 x27: ffff07ff8001f098
[   77.370383] x26: ffff07ff8001f000 x25: ffff07ff81ba94c0 x24: ffff07ff80dcf605
[   77.377506] x23: ffff0800cbfec640 x22: 0000000000000002 x21: ffff800082043c48
[   77.384628] x20: 0000000000000000 x19: ffff07ff8e344900 x18: 0000000000000000
[   77.391751] x17: ffff55fb02c14000 x16: ffffb223ebd3a5b8 x15: 0000000000000000
[   77.398874] x14: 0000000000000004 x13: 0000000000000000 x12: 0000000000000000
[   77.405997] x11: 0000000000052cc0 x10: ffff081f700512e8 x9 : ffffb223ebd37b88
[   77.413120] x8 : 0000000000000030 x7 : 0000000000002c38 x6 : 0000000000001000
[   77.420243] x5 : 00000000ffffffff x4 : 0000000000012cc0 x3 : ffff07ff81da2480
[   77.427366] x2 : 0000000000000000 x1 : 257e78c50c533320 x0 : 257e78c50c533320
[   77.434489] Call trace:
[   77.436923]  __ww_mutex_lock.constprop.0+0xa8/0xae8
[   77.441790]  __ww_mutex_lock_slowpath+0x20/0x38
[   77.446309]  ww_mutex_lock+0x98/0x148
[   77.449960]  xe_bo_lock+0x24/0x50 [xe]
[   77.453734]  xe_lrc_snapshot_capture_delayed+0x64/0x188 [xe]
[   77.459417]  xe_guc_exec_queue_snapshot_capture_delayed+0x48/0x70 [xe]
[   77.465967]  xe_devcoredump_deferred_snap_work+0x64/0x90 [xe]
[   77.471736]  process_one_work+0x18c/0x400
[   77.475735]  worker_thread+0x204/0x420
[   77.479472]  kthread+0xe8/0xf8
[   77.482514]  ret_from_fork+0x10/0x20
[   77.486080] Code: f9400260 f1001c1f 54000ee9 927df000 (b9403401)
[   77.492160] ---[ end trace 0000000000000000 ]---

Actually reproduction there is somewhat easy - you need to build and run GitHub - GPSnoopy/RayTracingInVulkan: Implementation of Peter Shirley's Ray Tracing In One Weekend book using Vulkan and NVIDIA's RTX extension.

4 Likes

cool… thanks for posting this…

1 Like

@Civiloid May you try transcoding a video file?

@Civiloid did you not run into this?

Yes, I did. I’ve ported those patches to 6.9.0 myself. I haven’t tried 6.10-rc1 though as I in general try to avoid kernels up until at least rc3 with very few exceptions.

The whole diff (I haven’t maintained proper split on commit-level and also mixed in my patch for Xe driver): altera-6.9.0.patch · GitHub

For 6.9.0 the change is relatively simple:

  1. You need to have ARM64_PA_BITS_52 in a kernel, so ALTRA_ERRATUM_82288 must depend on that (therefore added select ARM64_PA_BITS_52 in KConfig)
  2. The bitmask was renamed to PHYS_TO_PTE_ADDR_MASK (was PTE_ADDR_MASK)

P.S. I’ve also commented on github issue.

Thanks @Civiloid . You mentioned in your blog that some distro’s are already including these patches in their binary kernels. Which distro’s would that be?

Given the fact that these patches come with a performance penalty, it would surprise me if they are built and activated in binary kernels. They would slow down all ARM architectures, and might unnecessary slow down Ampere servers that do not require GPU’s. I would think that activation would need to be triggered by a kernel command line option, or a detection that an Ampere CPU is being used, before including into pre-built binary kernels.

Which distro’s would that be?

Honestly I don’t remember, I’ve seen here on the forums that some one included the patches. But who - not sure. Not a major distro for sure.

There has been a huge update on drm / xe / xe kernel driver · GitLab
The underlying kernel is now 6.10-rc3 and of course a lot of updates on the xe driver that seem to have been merged from an internal repo.

Did anyone try this? I haven’t been lucky; driver loads, no error messages, but screen stays blank.

Using a Sparkle Intel Arc A310 Eco.

I would love to see this running: single slot, low profile, half length, low power consumption, yet potentially much more powerful than similar sized cards.

1 Like