Linux kernel uprev UAPI investigations FEX currently exposes kernel version up to 5.18. Need to investigate UAPI changes to ensure it's safe to uprev. - 5.19 - Seems fine without any changes. - Detected Changes - si_perf_flags added to siginfo. FEX doesn't support. - SO_RCVMARK Added to socket. FEX never touches - agpgart changes. FEX doesn't support. - BPF added some stuff. FEX doesn't support. - io_uring changing some structs. Strictly padded so will just work. - io_uring async ioctls added. FEX doesn't have coverage. Should just work. - landlock added a bit. FEX doesn't care. - Syscalls - None added. - DRM - Already handled. - 6.0 - Seems fine without any changes. - Detected Changes - BPF added some stuff. FEX doesn't support. - dma_buf added two new ioctls. FEX doesn't have coverage. Should just work. - io_uring added more flags. Should just work. - v4l2 has some new structs. No coverage. So if it is broken we wouldn't know anyway. Not like x86 apps care about v4l2. - HabanaLabs added some stuff. Don't care if it is broken. - Syscalls - None added. - DRM - Already handled. - 6.1 - Seems fine without any changes. - Detected Changes - MADV_COLLAPSE added. Will just work. - Panfrost added some userspace coredump stuff. Looks padded fine. - More BPF stuff. - io_uring added a couple things. Should just work. - Syscalls - None added. - DRM - Already handled. - 6.2 - Seems fine without any changes. - Detected Changes - BPF added more stuff again. - btrfs added some stuff. We don't care about this. - Fuse adds some parallel write support. Will be fine. - iommufd ioctls added. They fucked up tail padding on some of these ioctls but since I have no idea what this is for, I don't care. - landlock added fs_truncate. Will be fine. - HabanaLabs added more things. Still don't care. - Syscalls - None added. - DRM - Already handled. #2590 - 6.3 - Needs work to expose because of the new prctl! - Detected Changes - `drm_amdgpu_info_device` added more elements. Will be fine. - i810 drm removed. - ivpu drm added. This is their FPGA vision system thing. Packing seems fine. Will fall down generic path and print a warning. - mga_drm removed - r128_drm removed - savage_drm removed - sis_drm removed - via_drm removed - BPF added more stuff again. - fuse added some stuff. Should be fine. - prctl PR_{GET,SET}_MDWE added. - This is dangerous for FEX! It disallows allocating any more memory as `WX`. Which means as soon as this is called, FEX's JIT breaks. - Can't be undone once enabled. Will likely need to be emulated in syscall handlers. - rseq adds more fields, should be fine. - v4l2 adds two new ioctls. Don't care. - Syscalls - None added. - DRM - amdgpu: Adds some more queries to `IOCTL_AMDGPU_INFO`. FEX doesn't care. - msm: Default BO_FLAGS options adds `NO_IMPLICIT`. FEX doesn't care. - 6.4+ (Not released as of 2023-04-09) - drm/amdgpu: https://patchwork.freedesktop.org/patch/531519/ - Needs release before full investigation. - 6.5 - cachestat syscall - new SNDRV ioctls (Needs investigation) - **Things that FEX doesn't care about** - Some drm additions that don't change ABI - bpf additions - New eventfd flags - New fcntl `AT_HANDLE_FID` flag - New FUSE `FUSE_HAS_EXPIRE_ONLY` flag - new io_uring flags - new mount flags - New v4l2 flags - new VFIO flags - new asound flags - 6.6 - fchmodat syscall - new `DRM_IOCTL_SYNCOBJ_EVENTFD` ioctl (already implemented) - New seccomp flags - `SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP` - `SECCOMP_IOCTL_NOTIF_SET_FLAGS` - Will matter when FEX supports user_notif - **Things that FEX doesn't care about** - fuse statx thing - io_uring flags - iommufd ioctls - vfio additions - 6.7 - New syscalls - already implemented - map_shadow_stack, futex_wake, futex_wait, futex_requeue - **Things that FEX doesn't care about** - btrfs things - new fuse flags - New futex2 flags for 8-bit, 16-bit, 32-bit, 64-bit sizes - io_uring changes - iommufd again - landlock changes - more vfio changes - 6.8 - syscall additions - statmount, listmount, lsm_get_self_attr, lsm_set_self_attr, lsm_list_modules - more drm ioctl changes - pvr_drm - v3d ioctls - xe_drm - virtgpu drm flags - **Things that FEX doesn't care about** - bpf changes - soft pages flag thing - more iommufd things - kvm changes - lsm stuff - mount flags - netdev changes - sync_file dead line ioctl - v4l2 changes - virtio changes - asound flag changes - 6.9 - **Things that FEX doesn't care about** - i915 guc change - More bpf changes - fs ioctl changes - fuse changes (fopen passthrough!) - io_uring changes - kfd_ioctl changes - kvm changes - virtio gpu capset changes - virtio sound stuff - auxv - AT_HWCAP3, AT_HWCAP4 - Reserved for PowerPC things, x86 won't use it yet. - 6.10 - mseal syscall - panthor_drm - xe_drm changes - fcntl notification flags - Will just get passed through (F_NOTIFY, F_DUPFD_QUERY) - NTSYNC semaphore ioctl! - Nothing for FEX to do here, will get passed through - **Things that FEX doesn't care about** - i915 changes - bpf changes - ethtool changes - landlock flags - trace mmap ioctl - more v4l2 changes - virtio_net changes - 6.11 - getrandom inside of vdso - **Things that FEX doesn't care about** - bpf additions - btrfs additions - ethtool things - procmap_query ioctl - We don't emulate any procfs ioctls - iommufd things? - kfd_ioctl additions - kvm things - landlock things - pi things - mount namespace id ioctl adding - tcp metrics - statx atomic write fields - 6.12 - some new ioctls - asound added some at least - Needs more investigation - 6.13 - New drm base ioctl - New xattr syscalls - Needs more investigation.