* Re: [oe] [meta-oe][PATCHv2] kmscon: upgrade 10.0.1 -> 10.0.4
[not found] <18DC5B316D5BB4DF.3217699@lists.openembedded.org>
@ 2026-10-07 21:06 ` Markus Volk
0 siblings, 0 replies; only message in thread
From: Markus Volk @ 2026-10-07 21:06 UTC (permalink / raw)
To: openembedded-devel
[-- Attachment #1: Type: text/plain, Size: 15317 bytes --]
v2: update
0001-uterm-treat-platform-display-controllers-as-primary-GPUs.patch to
the one that was merged upstream and make its Upstream-Status Backport
On Wed, Oct 7 2026 at 23:03:19 +02:00:00, Markus Volk via
lists.openembedded.org <f_l_k=t-online.de@lists.openembedded.org> wrote:
> Drop the pty patch, the problem is fixed upstream since 10.0.2.
> Refresh the platform GPU patch to the version merged upstream,
> which also excludes USB displays from the primary GPUs. Backport the
> libseat build fix, 10.0.4 does not build with libseat otherwise.
> Tested on a Raspberry Pi 4 with gpus=primary.
>
> License-Update: COPYING now states that the Unifont font is licensed
> under OFL-1.1 instead of GPL, drops the third-party notices for the
> dbus-loop, wcwidth and vt.c code and updates the path of the htable
> code to src/shl/htable.
>
> AI-Generated: Uses Claude Code (Claude Opus 5.5)
> Signed-off-by: Markus Volk <f_l_k@t-online.de
> <mailto:f_l_k@t-online.de>>
> ---
> ...-pty-only-once-a-display-is-attached.patch | 64 --------------
> ...-display-controllers-as-primary-GPUs.patch | 53 ++++++++++++
> ...-display-controllers-as-primary-GPUs.patch | 84
> -------------------
> ...x-build-error-due-to-logging-changes.patch | 32 +++++++
> .../{kmscon_10.0.1.bb => kmscon_10.0.4.bb} | 8 +-
> 5 files changed, 89 insertions(+), 152 deletions(-)
> delete mode 100644
> meta-oe/recipes-graphics/kmscon/kmscon/0001-terminal-open-the-pty-only-once-a-display-is-attached.patch
> create mode 100644
> meta-oe/recipes-graphics/kmscon/kmscon/0001-uterm-treat-platform-display-controllers-as-primary-GPUs.patch
> delete mode 100644
> meta-oe/recipes-graphics/kmscon/kmscon/0002-uterm_monitor-treat-platform-display-controllers-as-primary-GPUs.patch
> create mode 100644
> meta-oe/recipes-graphics/kmscon/kmscon/0002-vt_libseat-Fix-build-error-due-to-logging-changes.patch
> rename meta-oe/recipes-graphics/kmscon/{kmscon_10.0.1.bb =>
> kmscon_10.0.4.bb} (89%)
>
> diff --git
> a/meta-oe/recipes-graphics/kmscon/kmscon/0001-terminal-open-the-pty-only-once-a-display-is-attached.patch
> b/meta-oe/recipes-graphics/kmscon/kmscon/0001-terminal-open-the-pty-only-once-a-display-is-attached.patch
> deleted file mode 100644
> index 68f2ccc157..0000000000
> ---
> a/meta-oe/recipes-graphics/kmscon/kmscon/0001-terminal-open-the-pty-only-once-a-display-is-attached.patch
> +++ /dev/null
> @@ -1,64 +0,0 @@
> -From c63a880187db708b50d25c37b6fc1e24ed68492a Mon Sep 17 00:00:00
> 2001
> -From: Markus Volk <f_l_k@t-online.de <mailto:f_l_k@t-online.de>>
> -Date: Fri, 18 Sep 2026 21:52:35 +0200
> -Subject: [PATCH] terminal: open the pty only once a display is
> attached
> -
> -The session type handed to the child (TERM_SESSION_TYPE=kms or fb) is
> -decided in terminal_open() from the displays attached at that moment.
> -On a real VT the first session is activated as soon as the seat wakes
> -up, which happens before the DRM display has finished probing, so the
> -login is spawned with TERM_SESSION_TYPE=fb even though the terminal
> -ends up on a KMS display a few hundred milliseconds later.
> -
> -Session managers such as uwsm rely on that variable to decide whether
> -they have to ask kmscon to release the display before starting a
> -compositor. With the wrong type the request is never sent, kmscon
> -keeps DRM master, and the compositor fails to open the device until
> it
> -gives up.
> -
> -Defer opening the pty until the first display has been added to the
> -terminal, and open it from terminal_add_display() when the terminal
> is
> -already awake at that point.
> -
> -Upstream-Status: Pending
> -
> -AI-Generated: Uses Claude Code (Claude Opus 5)
> -Signed-off-by: Markus Volk <f_l_k@t-online.de
> <mailto:f_l_k@t-online.de>>
> ----
> - src/kmscon_terminal.c | 6 +++++-
> - 1 file changed, 5 insertions(+), 1 deletion(-)
> -
> -diff --git a/src/kmscon_terminal.c b/src/kmscon_terminal.c
> -index 15b00b4..42b6cd9 100644
> ---- a/src/kmscon_terminal.c
> -+++ b/src/kmscon_terminal.c
> -@@ -107,6 +107,7 @@ struct kmscon_terminal {
> - #define BLINK_TIMER_NS (500 * 1000 * 1000)
> -
> - static int font_set(struct kmscon_terminal *term);
> -+static int terminal_open(struct kmscon_terminal *term);
> -
> - static void coord_to_cell(struct kmscon_terminal *term, int32_t x,
> int32_t y, unsigned int *posx,
> - unsigned int *posy)
> -@@ -726,6 +727,9 @@ int terminal_add_display(struct kmscon_terminal
> *term, struct display *disp)
> - update_pointer_max_all(term);
> - display_ref(scr->disp);
> - do_redraw_screen(scr);
> -+
> -+ if (term->awake && !term->opened)
> -+ terminal_open(term);
> - return 0;
> -
> - err_text:
> -@@ -1124,7 +1128,7 @@ void terminal_activate(struct kmscon_terminal
> *term)
> - {
> - term->awake = true;
> - ev_timer_enable(term->blink_timer);
> -- if (!term->opened)
> -+ if (!term->opened && !shl_dlist_empty(&term->screens))
> - terminal_open(term);
> - if (term->pointer.visible)
> - hw_cursor_show(term, term->pointer.x, term->pointer.y);
> ---
> -2.55.0
> -
> diff --git
> a/meta-oe/recipes-graphics/kmscon/kmscon/0001-uterm-treat-platform-display-controllers-as-primary-GPUs.patch
> b/meta-oe/recipes-graphics/kmscon/kmscon/0001-uterm-treat-platform-display-controllers-as-primary-GPUs.patch
> new file mode 100644
> index 0000000000..af0f829ebb
> --- /dev/null
> +++
> b/meta-oe/recipes-graphics/kmscon/kmscon/0001-uterm-treat-platform-display-controllers-as-primary-GPUs.patch
> @@ -0,0 +1,53 @@
> +From 92b87c18f67ba9c01b23b50d014c5c5cfa72717e Mon Sep 17 00:00:00
> 2001
> +From: Markus Volk <f_l_k@t-online.de <mailto:f_l_k@t-online.de>>
> +Date: Wed, 7 Oct 2026 13:09:58 +0200
> +Subject: [PATCH] uterm: treat platform display controllers as
> primary GPUs
> +
> +A GPU only counted as primary when its PCI parent had boot_vga set.
> +SoC display controllers such as vc4 on the Raspberry Pi are platform
> +devices without a PCI parent, so with gpus=primary kmscon ignored the
> +only display in the system and never showed a terminal.
> +
> +Treat DRM devices on the platform bus as primary. USB displays are
> +excluded: on these systems the USB controller is a platform device
> too,
> +so they would otherwise be taken as primary.
> +
> +Tested on a Raspberry Pi 4 with --gpus=primary: before, card0 (vc4)
> +was ignored as "no primary GPU"; now the terminal comes up on HDMI-A
> +with the drm2d backend. The USB exclusion is not tested on hardware.
> +
> +Assisted-By: Claude Opus 5.5
> +Signed-off-by: Markus Volk <f_l_k@t-online.de
> <mailto:f_l_k@t-online.de>>
> +
> +Upstream-Status: Backport
> [<https://github.com/kmscon/kmscon/pull/551/changes/e8d5af950b1046f060604932440306dd16c9039e>]
> +---
> + src/uterm/monitor.c | 14 +++++++++++++-
> + 1 file changed, 13 insertions(+), 1 deletion(-)
> +
> +diff --git a/src/uterm/monitor.c b/src/uterm/monitor.c
> +index f2141969..ccb5e422 100644
> +--- a/src/uterm/monitor.c
> ++++ b/src/uterm/monitor.c
> +@@ -244,9 +244,21 @@ static bool is_drm_primary(struct uterm_monitor
> *mon, struct udev_device *dev, c
> + log_debug("DRM device %s is primary PCI GPU", node);
> + return true;
> + }
> ++ return false;
> + }
> +
> +- return false;
> ++ /*
> ++ * SoC display controllers are platform devices without a boot_vga
> ++ * attribute. Treat them as primary. USB displays sit below a
> platform
> ++ * USB controller on such systems, but are never primary.
> ++ */
> ++ if (udev_device_get_parent_with_subsystem_devtype(dev, "usb",
> NULL))
> ++ return false;
> ++ if (!udev_device_get_parent_with_subsystem_devtype(dev,
> "platform", NULL))
> ++ return false;
> ++
> ++ log_debug("DRM device %s is primary platform GPU", node);
> ++ return true;
> + }
> +
> + /*
> \ No newline at end of file
> diff --git
> a/meta-oe/recipes-graphics/kmscon/kmscon/0002-uterm_monitor-treat-platform-display-controllers-as-primary-GPUs.patch
> b/meta-oe/recipes-graphics/kmscon/kmscon/0002-uterm_monitor-treat-platform-display-controllers-as-primary-GPUs.patch
> deleted file mode 100644
> index c85607783c..0000000000
> ---
> a/meta-oe/recipes-graphics/kmscon/kmscon/0002-uterm_monitor-treat-platform-display-controllers-as-primary-GPUs.patch
> +++ /dev/null
> @@ -1,84 +0,0 @@
> -From d321a1572a12d760ddade294f4e7eabe57d555d1 Mon Sep 17 00:00:00
> 2001
> -From: Markus Volk <f_l_k@t-online.de <mailto:f_l_k@t-online.de>>
> -Date: Sat, 26 Sep 2026 10:00:57 +0200
> -Subject: [PATCH] uterm_monitor: treat platform display controllers
> as primary
> - GPUs
> -
> -A GPU only counted as primary when its PCI parent had boot_vga set.
> -SoC display controllers such as vc4 on the Raspberry Pi are platform
> -devices without a PCI parent, so with gpus=primary kmscon ignored the
> -only display in the system and never showed a terminal.
> -
> -Treat DRM devices on the platform bus as primary, except for the
> -simpledrm, efidrm, vesadrm and ofdrm firmware framebuffers that only
> -stand in until the native driver has loaded.
> -
> -Upstream-Status: Pending
> -
> -AI-Generated: Uses Claude Code (Claude Opus 5.5)
> ----
> - src/uterm_monitor.c | 29 ++++++++++++++++++++++++++---
> - 1 file changed, 26 insertions(+), 3 deletions(-)
> -
> -diff --git a/src/uterm_monitor.c b/src/uterm_monitor.c
> -index d89bfa1..25ec91f 100644
> ---- a/src/uterm_monitor.c
> -+++ b/src/uterm_monitor.c
> -@@ -234,10 +234,15 @@ out_close:
> - return flags;
> - }
> -
> --static bool is_drm_primary(struct uterm_monitor *mon, struct
> udev_device *dev, const char *node)
> -+static char *get_drm_name(int fd);
> -+
> -+static bool is_drm_primary(struct uterm_monitor *mon, struct
> udev_device *dev, const char *node,
> -+ int fd)
> - {
> - struct udev_device *pci;
> - const char *id;
> -+ char *name;
> -+ bool res;
> -
> - pci = udev_device_get_parent_with_subsystem_devtype(dev, "pci",
> NULL);
> - if (pci) {
> -@@ -246,9 +251,27 @@ static bool is_drm_primary(struct uterm_monitor
> *mon, struct udev_device *dev, c
> - log_debug("DRM device %s is primary PCI GPU", node);
> - return true;
> - }
> -+ return false;
> - }
> -
> -- return false;
> -+ /*
> -+ * SoC display controllers are platform devices without a boot_vga
> -+ * attribute. Treat them as primary, except for the generic
> firmware
> -+ * framebuffer drivers that only stand in until the real driver
> loads.
> -+ */
> -+ if (!udev_device_get_parent_with_subsystem_devtype(dev,
> "platform", NULL))
> -+ return false;
> -+
> -+ name = get_drm_name(fd);
> -+ if (!name)
> -+ return false;
> -+
> -+ res = strcmp(name, "simpledrm") && strcmp(name, "efidrm") &&
> strcmp(name, "vesadrm") &&
> -+ strcmp(name, "ofdrm");
> -+ if (res)
> -+ log_debug("DRM device %s is primary platform GPU (%s)", node,
> name);
> -+ free(name);
> -+ return res;
> - }
> -
> - /*
> -@@ -334,7 +357,7 @@ static unsigned int get_drm_flags(struct
> uterm_monitor *mon, struct udev_device
> - return flags;
> - }
> -
> -- if (is_drm_primary(mon, dev, node))
> -+ if (is_drm_primary(mon, dev, node, fd))
> - flags |= UTERM_MONITOR_PRIMARY;
> - if (is_drm_usb(mon, node, fd))
> - flags |= UTERM_MONITOR_AUX;
> ---
> -2.55.0
> -
> diff --git
> a/meta-oe/recipes-graphics/kmscon/kmscon/0002-vt_libseat-Fix-build-error-due-to-logging-changes.patch
> b/meta-oe/recipes-graphics/kmscon/kmscon/0002-vt_libseat-Fix-build-error-due-to-logging-changes.patch
> new file mode 100644
> index 0000000000..63db2e5297
> --- /dev/null
> +++
> b/meta-oe/recipes-graphics/kmscon/kmscon/0002-vt_libseat-Fix-build-error-due-to-logging-changes.patch
> @@ -0,0 +1,32 @@
> +From 153db63d679df719a99dd36505f9c2f55d9c59f6 Mon Sep 17 00:00:00
> 2001
> +From: Jocelyn Falempe <jfalempe@redhat.com
> <mailto:jfalempe@redhat.com>>
> +Date: Mon, 28 Sep 2026 11:46:21 +0200
> +Subject: [PATCH] vt_libseat: Fix build error due to logging changes
> +
> +Commit "efda2b5 log: Simplify logging, remove timestamp, and level
> for notice and info."
> +changed the log_submit() arguments, and this was not updated in
> +vt_libseat.c
> +
> +Upstream-Status: Backport
> [<https://github.com/kmscon/kmscon/commit/153db63d679df719a99dd36505f9c2f55d9c59f6>]
> +
> +Signed-off-by: Jocelyn Falempe <jfalempe@redhat.com
> <mailto:jfalempe@redhat.com>>
> +---
> + src/uterm/vt_libseat.c | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/src/uterm/vt_libseat.c b/src/uterm/vt_libseat.c
> +index 4f65c84..2097628 100644
> +--- a/src/uterm/vt_libseat.c
> ++++ b/src/uterm/vt_libseat.c
> +@@ -260,7 +260,7 @@ static enum log_severity log_level(enum
> libseat_log_level level)
> +
> + static void log_libseat(enum libseat_log_level level, const char
> *fmt, va_list args)
> + {
> +- log_submit(LOG_DEFAULT, log_level(level), fmt, args);
> ++ log_submit(log_level(level), "libseat", fmt, args);
> + }
> +
> + static void vt_libseat_input(struct input *input, struct
> input_key_event *ev, void *data)
> +--
> +2.55.0
> +
> diff --git a/meta-oe/recipes-graphics/kmscon/kmscon_10.0.1.bb
> b/meta-oe/recipes-graphics/kmscon/kmscon_10.0.4.bb
> similarity index 89%
> rename from meta-oe/recipes-graphics/kmscon/kmscon_10.0.1.bb
> rename to meta-oe/recipes-graphics/kmscon/kmscon_10.0.4.bb
> index 0336649551..400d9b5f59 100644
> --- a/meta-oe/recipes-graphics/kmscon/kmscon_10.0.1.bb
> +++ b/meta-oe/recipes-graphics/kmscon/kmscon_10.0.4.bb
> @@ -11,7 +11,7 @@ CVE_PRODUCT = "kmscon"
> SECTION = "graphics"
>
> LICENSE = "MIT"
> -LIC_FILES_CHKSUM =
> "file://COPYING;md5=6d4602d249f8a3401040238e98367d9e"
> <file://copying;md5=6d4602d249f8a3401040238e98367d9e/>
> +LIC_FILES_CHKSUM =
> "file://COPYING;md5=e88b340bd6389ec41d4cf634a770a771"
> <file://copying;md5=e88b340bd6389ec41d4cf634a770a771/>
>
> DEPENDS = "\
> libtsm \
> @@ -21,11 +21,11 @@ DEPENDS = "\
> "
>
> SRC_URI =
> "git://github.com/kmscon/kmscon;protocol=https;branch=main;tag=v${PV}"
> -SRCREV = "c9d0e23336c6bb7645a1f5f48a4a82f1d5a589d9"
> +SRCREV = "68fc8e1b2601e816e3a4ef95e3d8e700677509b9"
>
> SRC_URI += " \
> -
> file://0001-terminal-open-the-pty-only-once-a-display-is-attached.patch
> <file://0001-terminal-open-the-pty-only-once-a-display-is-attached.patch/>
> \
> -
> file://0002-uterm_monitor-treat-platform-display-controllers-as-primary-GPUs.patch
> <file://0002-uterm_monitor-treat-platform-display-controllers-as-primary-gpus.patch/>
> \
> +
> file://0001-uterm-treat-platform-display-controllers-as-primary-GPUs.patch
> <file://0001-uterm-treat-platform-display-controllers-as-primary-gpus.patch/>
> \
> +
> file://0002-vt_libseat-Fix-build-error-due-to-logging-changes.patch
> <file://0002-vt_libseat-fix-build-error-due-to-logging-changes.patch/>
> \
> "
>
> inherit meson pkgconfig systemd
> --
> 2.55.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#130661):
> <https://lists.openembedded.org/g/openembedded-devel/message/130661>
> Mute This Topic: <https://lists.openembedded.org/mt/121635504/3618223>
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> <mailto:openembedded-devel+owner@lists.openembedded.org>
> Unsubscribe:
> <https://lists.openembedded.org/g/openembedded-devel/unsub>
> [f_l_k@t-online.de <mailto:f_l_k@t-online.de>]
> -=-=-=-=-=-=-=-=-=-=-=-
>
[-- Attachment #2: Type: text/html, Size: 15512 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-07 21:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <18DC5B316D5BB4DF.3217699@lists.openembedded.org>
2026-10-07 21:06 ` [oe] [meta-oe][PATCHv2] kmscon: upgrade 10.0.1 -> 10.0.4 Markus Volk
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.