Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package evdi for openSUSE:Factory checked in at 2025-06-20 16:50:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/evdi (Old) and /work/SRC/openSUSE:Factory/.evdi.new.31170 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "evdi" Fri Jun 20 16:50:11 2025 rev:11 rq:1287020 version:1.14.10 Changes: -------- --- /work/SRC/openSUSE:Factory/evdi/evdi.changes 2025-04-08 17:53:09.483342816 +0200 +++ /work/SRC/openSUSE:Factory/.evdi.new.31170/evdi.changes 2025-06-20 16:51:53.434418802 +0200 @@ -1,0 +2,18 @@ +Thu Jun 12 19:54:14 UTC 2025 - Stefan Dirsch <sndir...@suse.com> + +- fixed local build + +------------------------------------------------------------------- +Thu Jun 12 16:36:45 UTC 2025 - Stefan Dirsch <sndir...@suse.com> + +- first try to re-enable secureboot signing + +------------------------------------------------------------------- +Thu Jun 12 14:59:20 UTC 2025 - Stefan Dirsch <sndir...@suse.com> + +- Update to version 1.14.10 + * Preliminary support for kernel 6.15 + * README and logs update. +- disabled secureboot signing for now (build fails for some reason) + +------------------------------------------------------------------- Old: ---- evdi-1.14.9.obscpio New: ---- evdi-1.14.10.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ evdi.spec ++++++ --- /var/tmp/diff_new_pack.jjekCc/_old 2025-06-20 16:51:54.034443661 +0200 +++ /var/tmp/diff_new_pack.jjekCc/_new 2025-06-20 16:51:54.034443661 +0200 @@ -21,7 +21,7 @@ Name: evdi Release: 0 -Version: 1.14.9 +Version: 1.14.10 Summary: Extensible Virtual Display Interface (EVDI) is a Linux Kernel Module License: GPL-2.0-only AND LGPL-2.1-only Group: System/Kernel @@ -30,11 +30,11 @@ Source1: evdi-kmp-preamble Source2: evdi-rpmlintrc BuildRequires: %{kernel_module_package_buildreqs} +BuildRequires: pesign-obs-integration BuildRequires: pkgconfig BuildRequires: pkgconfig(libdrm) # needssslcertforbuild -%kernel_module_package -p %{_sourcedir}/evdi-kmp-preamble -c %{_sourcedir}/_projectcert.crt -%define kver %(uname -r | sed 's/-default//') +%kernel_module_package -p %{_sourcedir}/evdi-kmp-preamble %description The Extensible Virtual Display Interface (EVDI) is a Linux kernel module @@ -86,11 +86,12 @@ for flavor in %flavors_to_build; do rm -rf obj/$flavor cp -r source obj/$flavor - make %{?_smp_mflags} -C %kernel_module_directory/%{kver}-$flavor/build M=$PWD/obj/$flavor \ + make %{?_smp_mflags} -C /usr/src/linux-obj/%_target_cpu/$flavor M=$PWD/obj/$flavor \ modules done %install +export BRP_PESIGN_FILES="*.ko" pushd library %make_install PREFIX=%{_prefix} LIBDIR=%{_dllibdir} install -m644 -D evdi_lib.h %{buildroot}%{_includedir}/%{name}/evdi_lib.h @@ -98,7 +99,7 @@ pushd module for flavor in %flavors_to_build; do - make -C %kernel_module_directory/%{kver}-$flavor/build M=$PWD/obj/$flavor \ + make -C /usr/src/linux-obj/%_target_cpu/$flavor M=$PWD/obj/$flavor \ INSTALL_MOD_PATH=%{buildroot} \ INSTALL_MOD_DIR=/extra \ modules_install ++++++ _service ++++++ --- /var/tmp/diff_new_pack.jjekCc/_old 2025-06-20 16:51:54.074445318 +0200 +++ /var/tmp/diff_new_pack.jjekCc/_new 2025-06-20 16:51:54.078445484 +0200 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://github.com/DisplayLink/evdi.git</param> - <param name="revision">v1.14.9</param> + <param name="revision">v1.14.10</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="versionrewrite-replacement">\1</param> ++++++ evdi-1.14.9.obscpio -> evdi-1.14.10.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/Jenkinsfile new/evdi-1.14.10/Jenkinsfile --- old/evdi-1.14.9/Jenkinsfile 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/Jenkinsfile 2025-05-08 09:25:57.000000000 +0200 @@ -36,7 +36,7 @@ } steps { script { - synopsys_detect detectProperties: "--detect.project.name='Evdi' --detect.project.version.name='${env.GIT_BRANCH}' --detect.excluded.directories=tmp,bd_evdi,synopsys_download --detect.output.path='${env.WORKSPACE}/bd_evdi'", downloadStrategyOverride: [$class: 'ScriptOrJarDownloadStrategy'] + blackduck_detect detectProperties: "--detect.project.name='Evdi' --detect.project.version.name='${env.GIT_BRANCH}' --detect.excluded.directories=tmp,bd_evdi,synopsys_download --detect.output.path='${env.WORKSPACE}/bd_evdi'", downloadStrategyOverride: [$class: 'ScriptOrJarDownloadStrategy'] def buildUrl = "$BUILD_URL" env.BLACKDUCK = sh(script: "curl -Lk '${buildUrl}/consoleText' | grep 'Black Duck Project BOM:'", returnStdout: true) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/README.md new/evdi-1.14.10/README.md --- old/evdi-1.14.9/README.md 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/README.md 2025-05-08 09:25:57.000000000 +0200 @@ -1,32 +1,44 @@ # Extensible Virtual Display Interface -[](https://travis-ci.org/DisplayLink/evdi) The Extensible Virtual Display Interface (EVDI) is a Linux® kernel module that enables management of multiple screens, allowing user-space programs to take control over what happens with the image. It is essentially a virtual display you can add, remove and receive screen updates for, in an application that uses the `libevdi` library. -The project is part of the DisplayLink Ubuntu development which enables support for DisplayLink USB 3.0 devices on Ubuntu. Please note that **this is NOT a complete driver for DisplayLink devices**. For more information and the full driver package, see [DisplayLink Ubuntu driver](http://www.displaylink.com/downloads/ubuntu.php). - This open-source project includes source code for both the `evdi` kernel module and a wrapper `libevdi` library that can be used by applications like DisplayLink's user mode driver to send and receive information from and to the kernel module. +The `pyevdi` library is a python wrapper for `libevdi`. + ## How to use See [libevdi API documentation](https://displaylink.github.io/evdi) for details. EVDI is a driver compatible with a standard Linux DRM subsystem. Due to this, displays can be controlled by standard tools, eg. `xrandr` or display settings applets in graphical environments eg. Unity, Gnome or KDE. +Virtual displays can also be created with the help of `pyevdi`. -Minimum supported kernel version required is 4.15. DisplayLink have checked the module compiles and works with Ubuntu variants of kernels up to 5.5. Although other vanilla Linux kernel sources are used for Travis CI job, newer kernels, or kernel variants used by other distributions may require extra development. Please see below to see how you can help. +### Installation and packages -## Future Development +For detailed installation instructions refer to [module/README.md](module/README.md). Minimum supported kernel version required is 4.15. DisplayLink has verified the module compiles and works with Ubuntu variants of kernels up to 6.15. Although other vanilla Linux kernel sources are used for the CI jobs, newer kernels, or kernel variants used by other distributions may require extra development. Please see below to see how you can help. -This is a first release. DisplayLink are open to suggestions and feedback on improving the proposed architecture and will gladly review patches or proposals from the developer community. Please find a current list of areas we identify as requiring attention below. +EVDI is usually combined with the DisplayLink driver, we release it as a deb package or in a form of standalone installer paired with the driver, visit the [DisplayLink page](https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu) for the latest release. **EVDI is not a complete driver for DisplayLink devices** and will require the driver for the full functionality . -- Compatibility with distributions other than Ubuntu 18.04/20.04 LTS is not verified. Please let us know if you make it work on other distros - pull requests are welcome! -- The communication between the EVDI kernel module and the wrapper libevdi library is not access-controlled or authenticated. This could be improved in future releases, making it harder to compromise the data EVDI is sending and receiving. -- EVDI kernel module driver is currently a platform_driver, for multiple reasons; most importantly because virtual displays are not discoverable, i.e. cannot be enumerated at the hardware level. EVDI is also a generic device, not tied to any particular kind of device, transport layer or a bus. +There is an community driven GitHub project at [DisplayLink RPM](https://github.com/displaylink-rpm/displaylink-rpm) which is generating RPM package for Fedora, CentOS Stream, Rocky Linux and AlmaLinux OS. It uses our code as the basis to create the RPM packages. + +There is also an [AUR package](https://aur.archlinux.org/packages/evdi) maintained by the community. + +## Contributing -## Packages for other distributions +We welcome all contributions. There are many ways you can contribute to the project. -There is an unoffical github project at [DisplayLink RPM](https://github.com/displaylink-rpm/displaylink-rpm) which is generating RPM package for Fedora, CentOS Stream, Rocky Linux and AlmaLinux OS. It is not in our control but it uses our code as the basis to create the RPM packages. +- Submit bugs or feature requests. +- Help us ensure that EVDI works on other distributions than Ubuntu. +- Report issues. +- Help with future development. + +### Future development + +There are several topics we plan to cover in the future, including: + +- The communication between the EVDI kernel module and the wrapper libevdi library is not access-controlled or authenticated. This could be enhanced in future releases, making it more difficult to compromise the data that EVDI sends and receives. +- EVDI kernel module driver is currently a platform_driver, for multiple reasons; most importantly because virtual displays are not discoverable, i.e. cannot be enumerated at the hardware level. EVDI is also a generic device, not tied to any particular kind of device, transport layer or a bus. ## Licensing @@ -34,10 +46,7 @@ under GPL v2 and LGPL v2.1 respectively - consult separate `LICENSE` files in subfolders. Remaining files and subfolders (unless a separate `LICENSE` file states otherwise) are licensed under MIT license. -### More information - -For more information, see our [support page](http://support.displaylink.com). Visit [displaylink.com](http://displaylink.com) to learn more about DisplayLink technology. -© Copyright 2015-2020 DisplayLink (UK) Ltd. +© Copyright 2015-2025 DisplayLink (UK) Ltd. Linux is a registered trademark of Linus Torvalds in the U.S. and other countries. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/ci/deb_config new/evdi-1.14.10/ci/deb_config --- old/evdi-1.14.9/ci/deb_config 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/ci/deb_config 2025-05-08 09:25:57.000000000 +0200 @@ -8,7 +8,7 @@ evdi_maintainer='Synaptics Technical Support <technical-enquir...@synaptics.com>' # shellcheck disable=SC2034 -evdi_version='1.14.9' +evdi_version='1.14.10' # shellcheck disable=SC2034 evdi_description="Extensible Virtual Display Interface (EVDI) is a Linux® kernel module that enables management of multiple screens. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/library/Makefile new/evdi-1.14.10/library/Makefile --- old/evdi-1.14.9/library/Makefile 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/library/Makefile 2025-05-08 09:25:57.000000000 +0200 @@ -11,7 +11,7 @@ DEPS = evdi_ioctl.h CFLAGS := -I../module -std=gnu99 -fPIC -D_FILE_OFFSET_BITS=64 $(CFLAGS) $$($(PKG_CONFIG) --cflags-only-I libdrm) -LIBVER := 1.14.9 +LIBVER := 1.14.10 LIBABI := 1 PREFIX ?= /usr/local diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/library/evdi_lib.h new/evdi-1.14.10/library/evdi_lib.h --- old/evdi-1.14.9/library/evdi_lib.h 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/library/evdi_lib.h 2025-05-08 09:25:57.000000000 +0200 @@ -15,7 +15,7 @@ #define LIBEVDI_VERSION_MAJOR 1 #define LIBEVDI_VERSION_MINOR 14 -#define LIBEVDI_VERSION_PATCH 9 +#define LIBEVDI_VERSION_PATCH 10 struct evdi_lib_version { int version_major; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/Makefile new/evdi-1.14.10/module/Makefile --- old/evdi-1.14.9/module/Makefile 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/Makefile 2025-05-08 09:25:57.000000000 +0200 @@ -63,7 +63,7 @@ DKMS ?= dkms RM ?= rm -MODVER=1.14.9 +MODVER=1.14.10 ifeq ($(KVER),) KVER := $(shell uname -r) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/README.md new/evdi-1.14.10/module/README.md --- old/evdi-1.14.9/module/README.md 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/README.md 2025-05-08 09:25:57.000000000 +0200 @@ -24,9 +24,9 @@ Adding `evdi` to `/etc/modules` enables system to load the driver on boot time. ## Usage -Evdi driver is just kernel space driver that adds virtual displays to the Linux. DisplayLink device enumeration and control is done in binary driver that can be downloaded from https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu. +Evdi driver is a kernel space driver that adds virtual displays to Linux. It is primarily used by proprietary user-space DisplayLink [driver](https://www.synaptics.com/products/displaylink-graphics/downloads/ubuntu) which provides DisplayLink [device](https://www.synaptics.com/products/displaylink-graphics/displaylink-products) enumeration and control. -Alternatively one can manually add outputs with: +Alternatively `pyevdi` bindings are provided for other applications or one can manually add outputs with: ``` # echo 1 > /sys/devices/evdi/add ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/dkms.conf new/evdi-1.14.10/module/dkms.conf --- old/evdi-1.14.9/module/dkms.conf 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/dkms.conf 2025-05-08 09:25:57.000000000 +0200 @@ -7,7 +7,7 @@ # PACKAGE_NAME="evdi" -PACKAGE_VERSION=1.14.9 +PACKAGE_VERSION=1.14.10 AUTOINSTALL=yes MAKE[0]="make all INCLUDEDIR=/lib/modules/$kernelver/build/include KVERSION=$kernelver DKMS_BUILD=1" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/dkms_install.sh new/evdi-1.14.10/module/dkms_install.sh --- old/evdi-1.14.9/module/dkms_install.sh 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/dkms_install.sh 2025-05-08 09:25:57.000000000 +0200 @@ -2,7 +2,7 @@ # SPDX-License-Identifier: GPL-2.0-only # Copyright (c) 2023 DisplayLink (UK) Ltd. -evdi_version='1.14.9' +evdi_version='1.14.10' EVDI_DIR=$(dirname "${BASH_SOURCE[0]}") EVDI_REBOOT_RATIONALE= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_connector.c new/evdi-1.14.10/module/evdi_connector.c --- old/evdi-1.14.9/module/evdi_connector.c 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_connector.c 2025-05-08 09:25:57.000000000 +0200 @@ -51,19 +51,19 @@ #endif if (ret) { - EVDI_ERROR("Failed to set edid property! error: %d", ret); + EVDI_ERROR("Failed to set edid property! error: %d\n", ret); goto err; } ret = drm_add_edid_modes(connector, edid); - EVDI_INFO("(card%d) Edid property set", evdi->dev_index); + EVDI_INFO("(card%d) Edid property set\n", evdi->dev_index); err: kfree(edid); return ret; } static bool is_lowest_frequency_mode_of_given_resolution( - struct drm_connector *connector, struct drm_display_mode *mode) + struct drm_connector *connector, const struct drm_display_mode *mode) { struct drm_display_mode *modeptr; @@ -78,7 +78,11 @@ } static enum drm_mode_status evdi_mode_valid(struct drm_connector *connector, +#if KERNEL_VERSION(6, 15, 0) <= LINUX_VERSION_CODE + const struct drm_display_mode *mode) +#else struct drm_display_mode *mode) +#endif { struct evdi_device *evdi = connector->dev->dev_private; uint32_t area_limit = mode->hdisplay * mode->vdisplay; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_drm_drv.c new/evdi-1.14.10/module/evdi_drm_drv.c --- old/evdi-1.14.9/module/evdi_drm_drv.c 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_drm_drv.c 2025-05-08 09:25:57.000000000 +0200 @@ -104,6 +104,12 @@ .open = evdi_driver_open, .postclose = evdi_driver_postclose, +#if KERNEL_VERSION(6, 15, 0) <= LINUX_VERSION_CODE +#ifdef CONFIG_FB + .fbdev_probe = evdifb_create, +#endif +#endif + /* gem hooks */ #if KERNEL_VERSION(5, 11, 0) <= LINUX_VERSION_CODE || defined(EL8) #elif KERNEL_VERSION(5, 9, 0) <= LINUX_VERSION_CODE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_drm_drv.h new/evdi-1.14.10/module/evdi_drm_drv.h --- old/evdi-1.14.9/module/evdi_drm_drv.h 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_drm_drv.h 2025-05-08 09:25:57.000000000 +0200 @@ -36,6 +36,7 @@ #include <drm/drm_rect.h> #include <drm/drm_gem.h> #include <drm/drm_framebuffer.h> +#include <drm/drm_fb_helper.h> #include "evdi_debug.h" #include "tests/evdi_test.h" @@ -102,6 +103,8 @@ int evdi_fbdev_init(struct drm_device *dev); void evdi_fbdev_cleanup(struct drm_device *dev); void evdi_fbdev_unplug(struct drm_device *dev); +int evdifb_create(struct drm_fb_helper *helper, + struct drm_fb_helper_surface_size *sizes); #endif /* CONFIG_FB */ struct drm_framebuffer *evdi_fb_user_fb_create( struct drm_device *dev, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_fb.c new/evdi-1.14.10/module/evdi_fb.c --- old/evdi-1.14.9/module/evdi_fb.c 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_fb.c 2025-05-08 09:25:57.000000000 +0200 @@ -349,7 +349,7 @@ } #ifdef CONFIG_FB -static int evdifb_create(struct drm_fb_helper *helper, +int evdifb_create(struct drm_fb_helper *helper, struct drm_fb_helper_surface_size *sizes) { struct evdi_fbdev *efbdev = (struct evdi_fbdev *)helper; @@ -455,9 +455,12 @@ return ret; } +#if KERNEL_VERSION(6, 15, 0) <= LINUX_VERSION_CODE +#else static struct drm_fb_helper_funcs evdi_fb_helper_funcs = { .fb_probe = evdifb_create, }; +#endif static void evdi_fbdev_destroy(__always_unused struct drm_device *dev, struct evdi_fbdev *efbdev) @@ -501,7 +504,9 @@ return -ENOMEM; evdi->fbdev = efbdev; -#if KERNEL_VERSION(6, 3, 0) <= LINUX_VERSION_CODE || defined(EL8) || defined(EL9) +#if KERNEL_VERSION(6, 15, 0) <= LINUX_VERSION_CODE + drm_fb_helper_prepare(dev, &efbdev->helper, 32, NULL); +#elif KERNEL_VERSION(6, 3, 0) <= LINUX_VERSION_CODE || defined(EL8) || defined(EL9) drm_fb_helper_prepare(dev, &efbdev->helper, 32, &evdi_fb_helper_funcs); #else drm_fb_helper_prepare(dev, &efbdev->helper, &evdi_fb_helper_funcs); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_gem.c new/evdi-1.14.10/module/evdi_gem.c --- old/evdi-1.14.9/module/evdi_gem.c 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_gem.c 2025-05-08 09:25:57.000000000 +0200 @@ -408,7 +408,7 @@ /* Don't allow imported objects to be mapped */ if (obj->import_attach) { - EVDI_WARN("Don't allow imported objects to be mapped: owner: %s", obj->import_attach->dmabuf->owner->name); + EVDI_WARN("Don't allow imported objects to be mapped: owner: %s\n", obj->import_attach->dmabuf->owner->name); ret = -EINVAL; goto out; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_painter.c new/evdi-1.14.10/module/evdi_painter.c --- old/evdi-1.14.9/module/evdi_painter.c 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_painter.c 2025-05-08 09:25:57.000000000 +0200 @@ -329,7 +329,7 @@ struct drm_pending_event *event) { if (!event) { - EVDI_ERROR("Null drm event!"); + EVDI_ERROR("Null drm event!\n"); return; } @@ -340,13 +340,13 @@ } if (!painter->drm_device) { - EVDI_WARN("Painter is not connected to drm device!"); + EVDI_WARN("Painter is not connected to drm device!\n"); drm_event_cancel_free(painter->drm_device, event); return; } if (!painter->is_connected) { - EVDI_WARN("Painter is not connected!"); + EVDI_WARN("Painter is not connected!\n"); drm_event_cancel_free(painter->drm_device, event); return; } @@ -367,7 +367,7 @@ event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event) { - EVDI_ERROR("Failed to create update ready event"); + EVDI_ERROR("Failed to create update ready event\n"); return NULL; } @@ -415,7 +415,7 @@ event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event) { - EVDI_ERROR("Failed to create cursor set event"); + EVDI_ERROR("Failed to create cursor set event\n"); return NULL; } @@ -462,7 +462,7 @@ event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event) { - EVDI_ERROR("Failed to create cursor move event"); + EVDI_ERROR("Failed to create cursor move event\n"); return NULL; } @@ -494,7 +494,7 @@ event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event) { - EVDI_ERROR("Failed to create dpms event"); + EVDI_ERROR("Failed to create dpms event\n"); return NULL; } @@ -522,7 +522,7 @@ event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event) { - EVDI_ERROR("Failed to create mode changed event"); + EVDI_ERROR("Failed to create mode changed event\n"); return NULL; } @@ -556,7 +556,7 @@ int num_dirts; if (painter == NULL) { - EVDI_WARN("Painter is not connected!"); + EVDI_WARN("Painter is not connected!\n"); return 0; } @@ -576,7 +576,7 @@ struct evdi_framebuffer *efb = NULL; if (painter == NULL) { - EVDI_WARN("Painter is not connected!"); + EVDI_WARN("Painter is not connected!\n"); return rect; } @@ -584,7 +584,7 @@ efb = painter->scanout_fb; if (!efb) { if (painter->is_connected) - EVDI_WARN("Scanout buffer not set."); + EVDI_WARN("Scanout buffer not set.\n"); goto unlock; } rect.x1 = 0; @@ -604,7 +604,7 @@ struct evdi_painter *painter = evdi->painter; if (painter == NULL) { - EVDI_WARN("Painter is not connected!"); + EVDI_WARN("Painter is not connected!\n"); return; } @@ -700,7 +700,7 @@ painter_unlock(painter); } else { - EVDI_WARN("Painter does not exist!"); + EVDI_WARN("Painter does not exist!\n"); } } @@ -711,7 +711,7 @@ const char *mode_str; if (!painter) { - EVDI_WARN("Painter does not exist!"); + EVDI_WARN("Painter does not exist!\n"); return; } @@ -775,7 +775,7 @@ painter_unlock(painter); evdi_log_pixel_format(pixel_format, buf, sizeof(buf)); - EVDI_INFO("(card%d) Notifying mode changed: %dx%d@%d; bpp %d; %s", + EVDI_INFO("(card%d) Notifying mode changed: %dx%d@%d; bpp %d; %s\n", evdi->dev_index, new_mode->hdisplay, new_mode->vdisplay, drm_mode_vrefresh(new_mode), bits_per_pixel, buf); @@ -810,7 +810,7 @@ evdi->i2c_adapter = kzalloc(sizeof(*evdi->i2c_adapter), GFP_KERNEL); if (!evdi->i2c_adapter) { - EVDI_ERROR("(card%d) Failed to allocate for i2c adapter", + EVDI_ERROR("(card%d) Failed to allocate for i2c adapter\n", evdi->dev_index); return; } @@ -820,19 +820,19 @@ if (result) { kfree(evdi->i2c_adapter); evdi->i2c_adapter = NULL; - EVDI_ERROR("(card%d) Failed to add i2c adapter, error %d", + EVDI_ERROR("(card%d) Failed to add i2c adapter, error %d\n", evdi->dev_index, result); return; } - EVDI_INFO("(card%d) Added i2c adapter bus number %d", + EVDI_INFO("(card%d) Added i2c adapter bus number %d\n", evdi->dev_index, evdi->i2c_adapter->nr); result = sysfs_create_link(&evdi->conn->kdev->kobj, &evdi->i2c_adapter->dev.kobj, "ddc"); if (result) { - EVDI_ERROR("(card%d) Failed to create sysfs link, error %d", + EVDI_ERROR("(card%d) Failed to create sysfs link, error %d\n", evdi->dev_index, result); return; } @@ -841,7 +841,7 @@ static void evdi_remove_i2c_adapter(struct evdi_device *evdi) { if (evdi->i2c_adapter) { - EVDI_INFO("(card%d) Removing i2c adapter bus number %d", + EVDI_INFO("(card%d) Removing i2c adapter bus number %d\n", evdi->dev_index, evdi->i2c_adapter->nr); sysfs_remove_link(&evdi->conn->kdev->kobj, "ddc"); @@ -1008,7 +1008,7 @@ } return ret; } - EVDI_WARN("(card%d) Painter does not exist!", evdi->dev_index); + EVDI_WARN("(card%d) Painter does not exist!\n", evdi->dev_index); return -ENODEV; } @@ -1309,7 +1309,7 @@ event = kzalloc(sizeof(*event), GFP_KERNEL); if (!event || !msg) { - EVDI_ERROR("Failed to create ddcci data event"); + EVDI_ERROR("Failed to create ddcci data event\n"); return NULL; } @@ -1345,28 +1345,28 @@ painter_lock(painter); if (expected_response_length != painter->ddcci_buffer_length) - EVDI_WARN("DDCCI buffer length mismatch"); + EVDI_WARN("DDCCI buffer length mismatch\n"); else if (painter->ddcci_buffer) memcpy(msg->buf, painter->ddcci_buffer, painter->ddcci_buffer_length); else - EVDI_WARN("Ignoring NULL DDCCI buffer"); + EVDI_WARN("Ignoring NULL DDCCI buffer\n"); painter_unlock(painter); } else { - EVDI_WARN("DDCCI response timeout"); + EVDI_WARN("DDCCI response timeout\n"); } } bool evdi_painter_i2c_data_notify(struct evdi_painter *painter, struct i2c_msg *msg) { if (!evdi_painter_is_connected(painter)) { - EVDI_WARN("Painter not connected"); + EVDI_WARN("Painter not connected\n"); return false; } if (!msg) { - EVDI_WARN("Ignored NULL ddc/ci message"); + EVDI_WARN("Ignored NULL ddc/ci message\n"); return false; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_platform_drv.c new/evdi-1.14.10/module/evdi_platform_drv.c --- old/evdi-1.14.9/module/evdi_platform_drv.c 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_platform_drv.c 2025-05-08 09:25:57.000000000 +0200 @@ -215,7 +215,7 @@ int ret; EVDI_INFO("Initialising logging on level %u\n", evdi_loglevel); - EVDI_INFO("Atomic driver: yes"); + EVDI_INFO("Atomic driver: yes\n"); memset(&g_ctx, 0, sizeof(g_ctx)); g_ctx.root_dev = root_device_register(DRIVER_NAME); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/evdi-1.14.9/module/evdi_platform_drv.h new/evdi-1.14.10/module/evdi_platform_drv.h --- old/evdi-1.14.9/module/evdi_platform_drv.h 2025-03-25 08:36:12.000000000 +0100 +++ new/evdi-1.14.10/module/evdi_platform_drv.h 2025-05-08 09:25:57.000000000 +0200 @@ -29,12 +29,12 @@ #define DRIVER_DESC "Extensible Virtual Display Interface" #if KERNEL_VERSION(6, 14, 0) <= LINUX_VERSION_CODE #else -#define DRIVER_DATE "20250325" +#define DRIVER_DATE "20250508" #endif #define DRIVER_MAJOR 1 #define DRIVER_MINOR 14 -#define DRIVER_PATCH 9 +#define DRIVER_PATCH 10 void evdi_platform_remove_all_devices(struct device *device); unsigned int evdi_platform_device_count(struct device *device); ++++++ evdi.obsinfo ++++++ --- /var/tmp/diff_new_pack.jjekCc/_old 2025-06-20 16:51:54.282453936 +0200 +++ /var/tmp/diff_new_pack.jjekCc/_new 2025-06-20 16:51:54.286454101 +0200 @@ -1,5 +1,5 @@ name: evdi -version: 1.14.9 -mtime: 1742888172 -commit: 2ca67e89a15ef01bf36abbb217fd74081faf9b4e +version: 1.14.10 +mtime: 1746689157 +commit: 600ed4342a7251d4575ee4810756649f9e77cdf0