A bit of debugging on what is going on with Xe:
int xe_display_init_noirq(struct xe_device *xe)calls to some old code (intel_display_driver_probe_noirq in i915) that then attempts to enable power wells, then eventually gets tohsw_power_well_post_enableand to that code:
if (has_vga)
intel_vga_reset_io_mem(dev_priv);
intel_vga_reset_io_memdo
vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
outb(inb(VGA_MIS_R), VGA_MIS_W);
vga_put(pdev, VGA_RSRC_LEGACY_IO);
and it fails at outb(inb...) line
So it seemed to me that it might be just unnecessary on ARM, so I’ve put a return in the beginning of that function (also seems it is only there to make vgacon happy and I don’t think it is even can be used on ARM).
It went a bit further, get display modes of my capture card, tried to initialize it and eventually have up with:
[ 251.771403] xe 0004:04:00.0: [drm:__drm_atomic_state_free [drm]] Freeing atomic state 00000000b0f7023d
[ 251.787412] xe 0004:04:00.0: [drm:drm_crtc_vblank_helper_get_vblank_timestamp_internal [drm]] crtc 0 : v p(0,-30)@ 252.067673 -> 252.068339 [e 1 us, 0 rep]
[ 251.787444] xe 0004:04:00.0: [drm:drm_update_vblank_count [drm]] updating vblank count on crtc 0: current=13, diff=1, hw=14 hw_last=13
[ 251.787471] xe 0004:04:00.0: [drm:vblank_disable_fn [drm]] disabling vblank on crtc 0
[ 251.787500] xe 0004:04:00.0: [drm:drm_crtc_vblank_helper_get_vblank_timestamp_internal [drm]] crtc 0 : v p(0,-26)@ 252.067760 -> 252.068338 [e 1 us, 0 rep]
[ 251.787528] xe 0004:04:00.0: [drm:drm_update_vblank_count [drm]] updating vblank count on crtc 0: current=14, diff=0, hw=14 hw_last=14
[ 251.877237] xe 0004:04:00.0: [drm:hsw_dp_audio_config_update.isra.0 [xe]] using Maud 512, Naud 3375
[ 253.154320] xe 0004:04:00.0: [drm:intel_power_well_disable [xe]] disabling PW_2
[ 256.726289] xe 0004:04:00.0: [drm:drm_dp_dpcd_probe [drm_display_helper]] AUX A/DDI A/PHY A: 0x00000 AUX -> (ret= 1) 12
[ 256.727040] xe 0004:04:00.0: [drm:drm_dp_dpcd_read [drm_display_helper]] AUX A/DDI A/PHY A: 0x00500 AUX -> (ret= 13) 00 e0 4c 49 4d 43 52 41 42 20 82 01 00
[ 256.983460] xe 0004:04:00.0: [drm:drm_dp_dpcd_access [drm_display_helper]] AUX B/DDI B/PHY B: Too many retries, giving up. First error: -6
[ 256.983487] xe 0004:04:00.0: [drm:drm_dp_dpcd_probe [drm_display_helper]] AUX B/DDI B/PHY B: 0x00000 AUX -> (ret= -6)
[ 257.239446] xe 0004:04:00.0: [drm:drm_dp_dpcd_access [drm_display_helper]] AUX C/DDI C/PHY C: Too many retries, giving up. First error: -6
[ 257.239468] xe 0004:04:00.0: [drm:drm_dp_dpcd_probe [drm_display_helper]] AUX C/DDI C/PHY C: 0x00000 AUX -> (ret= -6)
[ 257.495431] xe 0004:04:00.0: [drm:drm_dp_dpcd_access [drm_display_helper]] AUX D/DDI D/PHY D: Too many retries, giving up. First error: -6
[ 257.495454] xe 0004:04:00.0: [drm:drm_dp_dpcd_probe [drm_display_helper]] AUX D/DDI D/PHY D: 0x00000 AUX -> (ret= -6)
I’m not sure if that happens because previously it complains about Resizable-BAR support not working (AFAIR Arc requires it) or something else.
Full log: gist:4adfa5c87761b58a5f907ee2ce015090 · GitHub (except I’ve removed debug prints that I’ve added to figure out what stage it gets stuck)
EDIT: rebar support is available in the BIOS, it was just turned off. So I’ll try with it enabled.