tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

QUAGGA drm:netbsd:intel_dp_aux_xfer+0x9fa ELAND dp_aux_ch timeout status 0x7d4003ff



Hello to everyone.

I'm a NetBSD user. I've installed NetBSD 9.2. My monitor turns off every time with multiple graphic cards connected,but only one is used and chosen as primary on the BIOS,this :

000:02:0: Intel UHD Graphics 630 (VGA display, revision 0x02)

My motherboard is the AORUS pro and my CPU is I9-9900k.

On my PC I have 3 graphic cards :

000:02:0: Intel UHD Graphics 630 (VGA display, revision 0x02)
001:00:0: NVIDIA product 1e04 (VGA display, revision 0xa1) : (NVIDIA RTX 2080ti)
002:00:0: NVIDIA GeForce GTX 1060 3GB (VGA display, revision 0xa1)

NetBSD chooses the graphic card n. 2 even if it is not chosen as primary on the BIOS. Even if I have recompiled the kernel with DRM_MAX_RESOLUTION uncommented in the kernel config.

Below u can see how I have configured everything :

Inside the folder /etc/X11/xorg.conf.d I've created a file called "xorg-modesetting.conf" with this content inside :

Section "Device"
Identifier "Card0"
Driver "modesetting"
BusID "pci:0:2:0"
EndSection

boot.cfg ->

menu=Boot normally:rndseed /var/db/entropy-file;gop 4;boot
menu=Boot single user:rndseed /var/db/entropy-file;boot -s
menu=Boot DEVELOPMENT kernel:rndseed /var/db/entropy-file;gop 4;boot netbsd -v -x
menu=Drop to boot prompt:prompt
#userconf=disable i915drmkms*
userconf=disable nouveau*
default=1
timeout=5
clear=1

With BusID "pci:0:2:0" added, things are like this with the Intel DRM driver:

[     1.000000] [   377.000000] nouveau* disabled
...
[     1.015531] i915drmkms0 at pci0 dev 2 function 0: Intel UHD Graphics 630 (rev. 0x02)
...
[    10.221872] kern.module.path=/stand/amd64/9.99.82/modules
[    10.231872] kern info: [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[    10.231872] kern info: [drm] Driver supports precise vblank timestamp query.
[    10.231872] kern info: [drm] Failed to find VBIOS tables (VBT)
[    10.231872] allocated pic msi9 type edge pin 0 level 6 to cpu1 slot 2 idt entry 98
[    10.231872] i915drmkms0: interrupting at msi9 vec 0 (i915drmkms0)
[    10.231872] kern info: [drm] Finished loading DMC firmware i915/kbl_dmc_ver1_04.bin (v1.4)
[    10.501871] kern info: [drm] failed to retrieve link info, disabling eDP
[    10.521872] kern info: [drm] Initialized i915 1.6.0 20200114 for i915drmkms0 on minor 0
[    12.071867] i915drmkms0: info: [drm] Cannot find any crtc or sizes
[    12.081866] kern info: [drm] DRM_I915_DEBUG enabled
[    12.081866] kern info: [drm] DRM_I915_DEBUG_GEM enabled
[    14.231859] i915drmkms0: info: [drm] Cannot find any crtc or sizes
...

No intelfb0 framebuffer is created, and so we have in the Xorg.log file:


[   320.124] (EE) open /dev/dri/card0: No such file or directory
[   320.124] (WW) Falling back to old probe method for modesetting
[   320.124] (EE) open /dev/dri/card0: No such file or directory
[   320.124] (WW) VGA arbiter: cannot open kernel arbiter, no multi-card support
[   320.124] (EE) Screen 0 deleted because of no matching config section.
[   320.125] (II) UnloadModule: "modesetting"
[   320.125] (EE) Device(s) detected, but none match those in the config file.

X is still loading the nouveau video driver for some reason.

If I choose to boot NetBSD with the Nvidia card using this xorg.conf file :

Section "Device"
Identifier "Card0"
Driver "modesetting"
BusID "pci:1:0:0"
EndSection

The nouveau DRM driver didn't configure either on my Nvidia cards, so only genfb is running on all 3:

[     1.000000] [   373.000000] i915drmkms* disabled
...
[     1.012984] genfb0 at pci1 dev 0 function 0: NVIDIA product 1e04 (rev. 0xa1)
[     1.012984] genfb0: framebuffer at 0x40000000, size 1920x1080, depth 32, stride 7680
[     1.012984] genfb0: shadow framebuffer enabled, size 8100 KB
[     1.012984] wsdisplay0 at genfb0 kbdmux 1: console (default, vt100 emulation)
[     1.012984] wsmux1: connecting to wsdisplay0
[     1.012984] drm at genfb0 not configured
...
[     1.012984] genfb1 at pci2 dev 0 function 0: NVIDIA GeForce GTX 1060 3GB (rev. 0xa1)
...
[     1.012984] genfb2 at pci0 dev 2 function 0: Intel UHD Graphics 630 (rev. 0x02)

And, in Xorg.log:


[    53.577] (EE) open /dev/dri/card0: Operation not supported by device
[    53.577] (WW) Falling back to old probe method for modesetting
[    53.577] (EE) open /dev/dri/card0: Operation not supported by device
[    53.577] (EE) No devices detected.
The screen doesn't turn off because its running on genfb (no Nvidia DRM drivers have taken over!); and X doesnt start because the modesetting driver needs DRM kernel drivers. It won't run on top of genfb.
[     9.576848] kern info: [drm] failed to retrieve link info, disabling eDP
[    11.136843] i915drmkms0: info: [drm] Cannot find any crtc or sizes
[    13.286834] i915drmkms0: info: [drm] Cannot find any crtc or sizes

This is why the screen turns off. The DRM driver can't find any monitors or the EDID info. returned by the monitor is wrong or not read properly. This is the situation:

Nouveau disabled; i915drmkms enabled, but, not finding any monitors.

Xorg runs, modesetting driver loaded (nouveau_drv also loaded, don't know why), but can't run because no monitors are found. Nouveau_drv won't run because the nouveau DRM driver is disabled.

I think that you will find the log below interesting. It has been taken after booting the kernel with -v -x. I've pressed Power off; then I've interrupted the bootloader; at the prompt I typed boot -v -x.

https://pastebin.ubuntu.com/p/rBwpMMjtZ6/

this is the relevant part :

[ 103.410755] QUAGGA drm:netbsd:intel_dp_aux_xfer+0x9fa ELAND dp_aux_ch timeout status 0x7d4003ff

If u want to have more informations,there is a long troubleshooting that can be reached at the link below :

https://www.unitedbsd.com/d/582-trying-to-install-the-driver-for-my-main-gputhe-intel-uhd-graphics-630i915/66

I tried to check if my monitor is returning proper EDID data. I've SSH into my machine, I've compiled and ran (as root) the program below.

cc -o wsedid wsedid.c                   # compile
./wsedid > /tmp/hdmi_edid.bin           # run
/dev/ttyE0 EDID data_size = 128         # printed by program

/**
 * wsedid.c: Print EDID info. using wsdisplay(4) on NetBSD/OpenBSD.
 */
#include <dev/wscons/wsconsio.h>
#include <sys/ioctl.h>
#include <sys/utsname.h>
#include <err.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int
main(int argc, char* argv[])
{
	struct utsname un;
	struct wsdisplayio_edid_info ei;
	char ebuf[4096];
	char* dev, *os;
	int fd, rc = EXIT_FAILURE;

	if ((uname(&un)) < 0)
		err(rc, "uname failed");
	os = un.sysname;
	if (argc == 2)
		dev = argv[1];
	else {
		if (strcmp(os, "NetBSD") == 0)
			dev = "/dev/ttyE0";
		else if (strcmp(os, "OpenBSD") == 0)
			dev = "/dev/ttyC0";
		else
			errx(rc, "%s: OS is not supported", os);
	}
	ei.edid_data = ebuf;
	ei.buffer_size = sizeof ebuf;
	if ((fd = open(dev, O_RDONLY)) < 0)
		err(rc, "%s: open failed", dev);
	if (ioctl(fd, WSDISPLAYIO_GET_EDID, &ei) < 0)
		err(rc, "ioctl(WSDISPLAYIO_GET_EDID) failed");
	fprintf(stderr, "%s EDID data_size = %u\n", dev, ei.data_size);
	fwrite(ebuf, 1, ei.data_size, stdout);

	rc = EXIT_SUCCESS;
	return rc;
}

Like this :

netbsd-marietto# cc -o wsedid wsedid.c

netbsd-marietto# ./wsedid > /tmp/hdmi_edid.bin

wsedid: ioctl(WSDISPLAYIO_GET_EDID) failed: Operation not supported by device

and like this :

./wsedid /dev/constty > /tmp/hdmi_edid.intel.bin    # with intel DRM
./wsedid /dev/constty > /tmp/hdmi_edid.genfb.bin    # with genfb

It always tell "wsedid: ioctl(WSDISPLAYIO_GET_EDID) failed: Operation not supported by device",you can give a look on the screenshots that I have attached...


Q55VMGO.jpg


ej4LMsT.jpg
--
Mario.


Home | Main Index | Thread Index | Old Index