[PR #69] [MERGED] fix(lxc): use cgroup:mixed so uinput device nodes keep their major:minor #68

Closed
opened 2026-10-15 12:51:46 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/LXC2Docker/pull/69
Author: @JBailes
Created: 6/7/2026
Status: ✅ Merged
Merged: 6/7/2026
Merged by: @JBailes

Base: main ← Head: fix/cgroup-mixed-device-nodes


📝 Commits (1)

  • cfdd044 fix(lxc): use cgroup:mixed so uinput device nodes keep their major:minor

📊 Changes

2 files changed (+41 additions, -12 deletions)

View changed files

📝 internal/lxc/config.go (+14 -10)
📝 internal/lxc/namespace_cgroup_test.go (+27 -2)

📄 Description

PR #43 switched the auto-mounted cgroup to cgroup:rw, which bind-mounts the full cgroup v2 hierarchy into the container. On the PVE path this makes a freshly-created uinput device stat() as 0:0, so udev/SDL never match it as a joystick and gamepads go undetected in Wolf — keyboard/mouse are unaffected because they predate the cgroup mount.

cgroup:mixed gives nested runtimes a writable own-cgroup without mounting the whole hierarchy, leaving device-node major:minor intact. It relies on the private cgroup namespace already cloned for host-namespace containers; without one LXC aborts the cgroup mount on cgroup v2.

Validated live on Proxmox: controllers (single and dual) work in Steam, BG3, and the Wolf UI after the change; broken before it.

Adds a regression test asserting the PVE path uses cgroup:mixed, not cgroup:rw.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/LXC2Docker/pull/69 **Author:** [@JBailes](https://github.com/JBailes) **Created:** 6/7/2026 **Status:** ✅ Merged **Merged:** 6/7/2026 **Merged by:** [@JBailes](https://github.com/JBailes) **Base:** `main` ← **Head:** `fix/cgroup-mixed-device-nodes` --- ### 📝 Commits (1) - [`cfdd044`](https://github.com/games-on-whales/LXC2Docker/commit/cfdd044522ce84995237d15b9eea01332a9c68c5) fix(lxc): use cgroup:mixed so uinput device nodes keep their major:minor ### 📊 Changes **2 files changed** (+41 additions, -12 deletions) <details> <summary>View changed files</summary> 📝 `internal/lxc/config.go` (+14 -10) 📝 `internal/lxc/namespace_cgroup_test.go` (+27 -2) </details> ### 📄 Description PR #43 switched the auto-mounted cgroup to `cgroup:rw`, which bind-mounts the full cgroup v2 hierarchy into the container. On the PVE path this makes a freshly-created uinput device `stat()` as `0:0`, so udev/SDL never match it as a joystick and gamepads go undetected in Wolf — keyboard/mouse are unaffected because they predate the cgroup mount. `cgroup:mixed` gives nested runtimes a writable own-cgroup without mounting the whole hierarchy, leaving device-node `major:minor` intact. It relies on the private cgroup namespace already cloned for host-namespace containers; without one LXC aborts the cgroup mount on cgroup v2. Validated live on Proxmox: controllers (single and dual) work in Steam, BG3, and the Wolf UI after the change; broken before it. Adds a regression test asserting the PVE path uses `cgroup:mixed`, not `cgroup:rw`. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/LXC2Docker#68
No description provided.