Closed DeX77 closed 4 years ago
@abucodonosor Thank you. Sorry, I've got confused a bit by the statement in the readme.md file:
"Please note that this is NOT a complete driver for DisplayLink devices. For more information and the full driver package, see DisplayLink Ubuntu driver".
So I was under impression that merely cloning and compiling this repo (evdi module) is not enough to have DisplayLink devices working on my ubuntu system.
Disclaimer: I'm not an expert on building kernel modules
But after this patch got merged I'm still unable to build for 5.4 using dkms build
# cd module && cp -Rv . /usr/src/evdi-dev/
# dkms build -m evdi -v dev -k 5.4.20-050420-generic
Results in
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area...
make -j12 KERNELRELEASE=5.4.20-050420-generic all INCLUDEDIR=/lib/modules/5.4.20-050420-generic/build/include KVERSION=5.4.20-050420-generic DKMS_BUILD=1...(bad exit status: 2)
ERROR (dkms apport): binary package for evdi: dev not found
Error! Bad return status for module build on kernel: 5.4.20-050420-generic (x86_64)
Consult /var/lib/dkms/evdi/dev/build/make.log for more information.
The make.log file is big, it contains a lot of errors like
In file included from <command-line>:0:0:
./arch/x86/include/asm/segment.h: In function ‘vdso_read_cpunode’:
././include/linux/compiler_types.h:210:24: error: expected ‘(’ before ‘__inline’
#define asm_inline asm __inline
^
./arch/x86/include/asm/alternative.h:240:2: note: in expansion of macro ‘asm_inline’
asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \
^~~~~~~~~~
./arch/x86/include/asm/segment.h:266:2: note: in expansion of macro ‘alternative_io’
alternative_io ("lsl %[seg],%[p]",
^~~~~~~~~~~~~~
In file included from ./arch/x86/include/asm/barrier.h:5:0,
from ./include/linux/compiler.h:256,
from ./include/linux/export.h:42,
from ./include/linux/linkage.h:7,
from ./include/linux/kernel.h:8,
from ./include/linux/list.h:9,
from ./include/linux/agp_backend.h:33,
from ./include/drm/drmP.h:35,
from /var/lib/dkms/evdi/dev/build/evdi_drv.c:13:
./arch/x86/include/asm/alternative.h:108:2: error: expected identifier or ‘(’ before string constant
"# ALT: oldnstr\n" \
^
It ends with
scripts/Makefile.build:265: recipe for target '/var/lib/dkms/evdi/dev/build/evdi_cursor.o' failed
make[2]: *** [/var/lib/dkms/evdi/dev/build/evdi_cursor.o] Error 1
Makefile:1652: recipe for target '/var/lib/dkms/evdi/dev/build' failed
make[1]: *** [/var/lib/dkms/evdi/dev/build] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.4.20-050420-generic'
Makefile:22: recipe for target 'all' failed
make: *** [all] Error 2
Can someone point me in the right direction?
Looks like your kernel include files are broken.
@abucodonosor Thanks for your response, although I'm not sure what you mean with include files being broken :)
It's becoming even more strange (to me). I was able to build for kernel 5.5.4 and I am successfully using multiple monitors with my DisplayLink device. It just does not build for any other 5.5 or 5.4 kernel. Building for 5.3 versions is still doing fine.
# dkms status
evdi, 5.1.26: added
evdi, 5.2.14, 5.3.17-050317-generic, x86_64: installed
evdi, 5.2.14, 5.3.18-050318-generic, x86_64: built
evdi, dev, 4.15.0-76-generic, x86_64: built
evdi, dev, 5.3.17-050317-generic, x86_64: built
evdi, dev, 5.3.18-050318-generic, x86_64: installed
evdi, dev, 5.5.4-050504-generic, x86_64: installed
I have the same problem as @netiul with the 5.5.5 kernel
@devnix are you using latest evdi from devel branch?
Yes, tried the devel branch and the patchs on the latest tag.
@devnix
So DKMS builds? If so I've no idea about those, it seems like distros are doing very strange things with their kernel-source packages. It builds for me on any 5.4 or any 5.5 kernel.
@abucodonosor Thanks for your response, although I'm not sure what you mean with include files being broken :)
Stuff like this:
./arch/x86/include/asm/segment.h: In function ‘vdso_read_cpunode’:
././include/linux/compiler_types.h:210:24: error: expected ‘(’ before ‘__inline’
.......
just means 1) your kernel files have some problems eg some of these header files, 2) DKMS is doing something wrong ( missing arguments maybe ) or 3) A mix of 1 and 2.
IOW, does it build without dkms?
Builds on 5.5 just fine from git.
crazy@nitro5:~$ uname -a
Linux nitro5 5.5.5-fw1 #1 SMP PREEMPT Sun Feb 23 20:20:22 CET 2020 x86_64 AMD Ryzen 7 3750H with Radeon Vega Mobile Gfx AuthenticAMD GNU/Linux
crazy@nitro5:~$ mkdir temp-test
crazy@nitro5:~$ cd temp-test
crazy@nitro5:~/temp-test$ git clone https://github.com/DisplayLink/evdi.git
Klone nach 'evdi' ...
remote: Enumerating objects: 163, done.
remote: Counting objects: 100% (163/163), done.
remote: Compressing objects: 100% (92/92), done.
remote: Total 1314 (delta 99), reused 123 (delta 71), pack-reused 1151
Empfange Objekte: 100% (1314/1314), 799.76 KiB | 4.68 MiB/s, Fertig.
Löse Unterschiede auf: 100% (868/868), Fertig.
crazy@nitro5:~/temp-test$ cd evdi
crazy@nitro5:~/temp-test/evdi$ make -j8
CFLAGS="-Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers" make -C module -j8 --jobserver-auth=3,4
make[1]: Warnung: -jN in „make“-Verarbeitungszweig erzwungen:
Jobserver-Modus nicht verfügbar.
make[1]: Verzeichnis „/home/crazy/temp-test/evdi/module“ wird betreten
make -C /lib/modules/5.5.5-fw1/build M=$PWD
make[2]: Verzeichnis „/usr/src/linux-5.5.5-fw1“ wird betreten
AR /home/crazy/temp-test/evdi/module/built-in.a
CC [M] /home/crazy/temp-test/evdi/module/evdi_drv.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_modeset.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_connector.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_encoder.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_main.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_fb.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_gem.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_painter.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_params.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_cursor.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_debug.o
CC [M] /home/crazy/temp-test/evdi/module/evdi_ioc32.o
LD [M] /home/crazy/temp-test/evdi/module/evdi.o
Building modules, stage 2.
MODPOST 1 modules
CC [M] /home/crazy/temp-test/evdi/module/evdi.mod.o
LD [M] /home/crazy/temp-test/evdi/module/evdi.ko
make[2]: Verzeichnis „/usr/src/linux-5.5.5-fw1“ wird verlassen
make[1]: Verzeichnis „/home/crazy/temp-test/evdi/module“ wird verlassen
CFLAGS="-I../module -Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers " make -C library -j8 --jobserver-auth=3,4
make[1]: Warnung: -jN in „make“-Verarbeitungszweig erzwungen:
Jobserver-Modus nicht verfügbar.
make[1]: Verzeichnis „/home/crazy/temp-test/evdi/library“ wird betreten
cc -I../module -std=gnu99 -fPIC -I../module -Werror -Wextra -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-error=missing-field-initializers -c -o evdi_lib.o evdi_lib.c
cc evdi_lib.o -shared -Wl,-soname,libevdi.so.0 -o libevdi.so.1.6.4 -lc -lgcc
cp libevdi.so.1.6.4 libevdi.so
make[1]: Verzeichnis „/home/crazy/temp-test/evdi/library“ wird verlassen
crazy@nitro5:~/temp-test/evdi$ find . -name "*.ko"
./module/evdi.ko
I'm unsure if the installation went well, and I don't understand what's wrong with the DKMS installation. Maybe I'm doing that step wrong!
Oh, ok! I've just run sudo dkms install ./module
on the repo root and it seems like it's installed! Indeed, the DisplayLink screen started to work immediately.
Thank you for your patience. I'm missing some instructions in order to build and install the module in the readme, that was all.
Just jumping in here to say thanks to all who have contributed to this thread. I recently upgraded my Fedora 31 to kernel 5.5.11-200.fc31.x86_64, and once again, my DisplayLink driver (fedora-31-displaylink-1.6.4-1.x86_64.rpm) was failing to work. Searched high and low and finally came across the suggestions here in thread. In summary:
$ sudo dnf install displaylink-1.6.4-2.x86_64.rpm $ git clone https://github.com/DisplayLink/evdi.git $ cd evdi $ sudo dkms install ./module
"Magically" my monitors attached to my Dell D3100 dock came to life. Again, thanks to all!
P.S. I'm in no way bashing elguero and all who have contributed to https://github.com/elguero/displaylink-rpm.git. Huge thanks to everyone on that project who has even made the DisplayLink drivers availabe to us Fedora users. https://www.displaylink.com/downloads themselves won't even support us!
Awesome! Thank you everybody!
I just used this on Fedora 32 and it worked like a charm
This worked for me on my Fedora 32 system as well.
evdi 1.6.4 fails to build on kernel 5.4:
module/evdi_drv.h:23:10: fatal error: linux/reservation.h: No such file or directory