<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>planet on tony is coding</title>
    <link>https://andrealmeid.com/tags/planet/</link>
    <description>Recent content in planet on tony is coding</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <copyright>© André Almeida 2022&lt;br/&gt;Licensed as &lt;a href=&#39;https://creativecommons.org/licenses/by/4.0/&#39;&gt;CC BY 4.0&lt;/a&gt;</copyright>
    <lastBuildDate>Mon, 26 May 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://andrealmeid.com/tags/planet/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Linux 6.15, DRM scheduler, wedged events, sched_ext and more</title>
      <link>https://andrealmeid.com/post/2025-05-26-kernel-6-15/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2025-05-26-kernel-6-15/</guid>
      <description>&lt;p&gt;The Linux 6.15 has just been released, bringing a lot of new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://lore.kernel.org/linux-doc/20250306222336.23482-1-dakr@kernel.org/T/&#34;&gt;nova-core&lt;/a&gt;, the &amp;ldquo;base&amp;rdquo; driver for the new NVIDIA GPU driver, written in Rust. nova project will eventually replace Nouveau driver for all GSP-based GPUs.&lt;/li&gt;
&lt;li&gt;RISC-V gained support for some extensions: BFloat16 floating-point, Zaamo, Zalrsc and ZBKB.&lt;/li&gt;
&lt;li&gt;The fwctl subsystem has been merged. This new family of drivers acts as a transport layer between userspace and complex firmware. To understand more about its controversies and how it got merged, check out this &lt;a href=&#34;https://lwn.net/Articles/990802/&#34;&gt;LWN article&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Support for MacBook touch bars, both as a DRM driver and input source.&lt;/li&gt;
&lt;li&gt;Support for Adreno 623 GPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As always, I suggest to have a look at the &lt;a href=&#34;https://kernelnewbies.org/Linux_6.15&#34;&gt;Kernel Newbies summary&lt;/a&gt;. Now, let&amp;rsquo;s have a look at Igalia&amp;rsquo;s contributions.&lt;/p&gt;
&lt;h2 id=&#34;drm-wedged-events&#34;&gt;DRM wedged events&lt;/h2&gt;
&lt;p&gt;In 3D graphics APIs such Vulkan and OpenGL, there are some mechanisms that applications can rely to check if the GPU had reset (you can read more about this in the &lt;a href=&#34;https://www.kernel.org/doc/html/latest/gpu/drm-uapi.html#robustness&#34;&gt;kernel documentation&lt;/a&gt;). However, there was no generic mechanism to inform userspace that a GPU reset has happened. This is useful because in some cases the reset affected not only the app involved in the reset, but the whole graphic stack and thus needs some action to recover, like doing a module rebind or even bus reset to recovery the hardware. For this release, we helped to add an userspace event for this, so a daemon or the compositor can listen to it and trigger some recovery measure after the GPU has reset. Read more in the &lt;a href=&#34;https://www.kernel.org/doc/html/latest/gpu/drm-uapi.html#device-wedging&#34;&gt;kernel docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;drm-scheduler-work&#34;&gt;DRM scheduler work&lt;/h2&gt;
&lt;p&gt;In the DRM scheduler area, in preparation for the future scheduling improvements, we worked on cleaning up the code base, better separation of the internal and external interfaces, and adding formal interfaces at places where individual drivers had too much knowledge of the scheduler internals.&lt;/p&gt;
&lt;h2 id=&#34;general-gpudrm-stack&#34;&gt;General GPU/DRM stack&lt;/h2&gt;
&lt;p&gt;In the wider GPU stack area we optimised the most frequent dma-fence single fence merge operation to avoid memory allocations and array sorting. This should slightly reduce the CPU utilisation with workloads which use the DRM sync objects heavily, such as the modern composited desktops using Vulkan explicit sync.&lt;/p&gt;
&lt;p&gt;Some releases ago, we helped to enable &lt;a href=&#34;https://lore.kernel.org/lkml/20231122161941.320564-1-andrealmeid@igalia.com/&#34;&gt;async page flips in the atomic DRM uAPI&lt;/a&gt;. So far, this feature was only enabled for the primary plane. In this release, we added a mechanism for the driver to decide which plane can perform async flips. We used this to enable overlay planes to do async flips in AMDGPU driver.&lt;/p&gt;
&lt;p&gt;We also fixed a bug in the DRM fdinfo common layer which could cause use after free after driver unbind.&lt;/p&gt;
&lt;h2 id=&#34;intel-xe-driver-improvements&#34;&gt;Intel Xe driver improvements&lt;/h2&gt;
&lt;p&gt;On the Intel GPU specific front we worked on adding better Alderlake-P support to the new Intel Xe driver by identifying and adding missing hardware workarounds, fixed the workaround application in general and also made some other smaller improvements.&lt;/p&gt;
&lt;h2 id=&#34;sched_ext&#34;&gt;sched_ext&lt;/h2&gt;
&lt;p&gt;When developing and optimizing a &lt;code&gt;sched_ext&lt;/code&gt;-based scheduler, it is important to understand the interactions between the BPF scheduler and the in-kernel &lt;code&gt;sched_ext&lt;/code&gt; core. If there is a mismatch between what the BPF scheduler developer expects and how the &lt;code&gt;sched_ext&lt;/code&gt; core actually works, such a mismatch could often be the source of bugs or performance issues.&lt;/p&gt;
&lt;p&gt;To address such a problem, we added a mechanism to count and report the internal events of the &lt;code&gt;sched_ext&lt;/code&gt; core. This significantly improves the visibility of subtle edge cases, which might easily slip off. So far, eight events have been added, and the events can be monitored through a BPF program, sysfs, and a tracepoint.&lt;/p&gt;
&lt;h2 id=&#34;a-few-less-bugs&#34;&gt;A few less bugs&lt;/h2&gt;
&lt;p&gt;As usual, as part of our work on diverse projects, we keep an eye on automated test results to look for potential security and stability issues in different kernel areas. We&amp;rsquo;re happy to have contributed to making this release a bit more robust by fixing bugs in memory management, network (SCTP), ext4, suspend/resume and other subsystems.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;This is the complete list of Igalia&amp;rsquo;s contributions for this release:&lt;/p&gt;
&lt;h2 id=&#34;authored-75&#34;&gt;Authored (75)&lt;/h2&gt;
&lt;h3 id=&#34;andré-almeida&#34;&gt;André Almeida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6fe52b63f569c11a70b737751055afd46c4454b3&#34;&gt;drm/amdgpu: Use device wedged event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fd40a63c63a182aeea1089a343e2f729de7e514d&#34;&gt;drm/atomic: Let drivers decide which planes to async flip&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=41129e236f14c6c54145c722da06f6793e9fd13d&#34;&gt;drm/amdgpu: Enable async flip on overlay planes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28d05f0836dfc4479d81e664f345ce125ea921d8&#34;&gt;drm/amdgpu: Log the creation of a coredump file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7fd6528b5ad80eea66df6240f2399602d9fd388&#34;&gt;drm/amdgpu: Log after a successful ring reset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9c696cc57c1a6dab6da6b51f4b30a7d16e233cbc&#34;&gt;drm/amdgpu: Create a debug option to disable ring reset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=099f273eff9c4927be47e337ecf9b10df88a99ad&#34;&gt;drm/amdgpu: Trigger a wedged event for ring reset&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;angelos-oikonomopoulos&#34;&gt;Angelos Oikonomopoulos&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c28f31deeacda307acfee2f18c0ad904e5123aac&#34;&gt;arm64: Don&amp;rsquo;t call NULL in do_compat_alignment_fixup()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bhupesh&#34;&gt;Bhupesh&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8e008b60492cf6fd31ef127aea6d02fd3d314cd&#34;&gt;ext4: ignore xattrs past end&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;changwoo-min&#34;&gt;Changwoo Min&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=17103b8504de68958b0ff412ed2ae2e6484fa65f&#34;&gt;sched_ext: Implement event counter infrastructure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f7f6142107f0e0dd4a2b041116461a049ca18cb0&#34;&gt;sched_ext: Add an event, SCX_EV_SELECT_CPU_FALLBACK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9be0a1b0c8fbd21ef6d7f9428a76b759f9db0de3&#34;&gt;sched_ext: Add an event, SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7125660bc16b7e87665bc859e7337388bdb63e0a&#34;&gt;sched_ext: Add an event, SCX_EV_DISPATCH_KEEP_LAST&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=824d4f2dce50da4b748c1e280cb50e4b82146ce7&#34;&gt;sched_ext: Add an event, SCX_EV_ENQ_SKIP_EXITING&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f7a38c7c917436bb40f10c251a1a973e2f1ada8&#34;&gt;sched_ext: Add an event, SCX_EV_BYPASS_ACTIVATE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5c605cd33cad957f3eff747e088d07db23808080&#34;&gt;sched_ext: Add an event, SCX_EV_BYPASS_DISPATCH&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d46457c31c432b6b717dcaebab634d5126e2969a&#34;&gt;sched_ext: Add an event, SCX_EV_BYPASS_DURATION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9865f31d852a40e39b8efb8feec69182e1002489&#34;&gt;sched_ext: Add scx_bpf_events() and scx_read_event() for BPF schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6df93804b718ec9741f056dae777f12332d54002&#34;&gt;sched_ext: Print core event count in scx_central scheduler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2494e555fbaadf1b02eb89f3bee0cec95516f6c2&#34;&gt;sched_ext: Print core event count in scx_qmap scheduler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6d3f8fb4b2d47b7b6581a1a5a6ce35700f1416e6&#34;&gt;sched_ext: Add an event, SCX_EV_ENQ_SLICE_DFL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=38d65cd692a26e09152bcec67d641a7914a5cba6&#34;&gt;sched_ext: Print an event, SCX_EV_ENQ_SLICE_DFL, in scx_qmap/central&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=372033ad9e98dce205fc3c48a146cfff5699e3e9&#34;&gt;tools/sched_ext: Compatible testing of SCX_ENQ_CPU_SELECTED&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2e7df12bdde13c0efefc3230dc96b36edfa53ec5&#34;&gt;tools/sched_ext: Update enum_defs.autogen.h&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ad3b301aa05af408462775368bd25d2a05409fe1&#34;&gt;sched_ext: Provides a sysfs &amp;lsquo;events&amp;rsquo; to expose core event counters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=038730dc12cb1fa016a95978286a767e8a8b521e&#34;&gt;sched_ext: Change the event type from u64 to s64&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71d078803ccbc020ae3b640293a40a86691b9151&#34;&gt;sched_ext: Add trace point to track sched_ext core events&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;gavin-guo&#34;&gt;Gavin Guo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=be6e843fc51a584672dfd9c4a6a24c8cb81d5fb7&#34;&gt;mm/huge_memory: fix dereferencing invalid pmd migration entry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;guilherme-g-piccoli&#34;&gt;Guilherme G. Piccoli&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d90c9de9de2f1712df56de6e4f7d6982d358cabe&#34;&gt;x86/tsc: Always save/restore TSC sched_clock() on suspend/resume&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=35dac71cff8f68f065a6719631db919d0640d5e5&#34;&gt;scripts: add script to extract built-in firmware blobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;luis-henriques&#34;&gt;Luis Henriques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=841c7b812c038661e4f659d1b9c9a366c6d24b71&#34;&gt;fuse: removed unused function fuse_uring_create() from header&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc4afc0de9654f88676d77094a38f9451d519011&#34;&gt;drm/v3d: Remove &lt;code&gt;v3d-&amp;gt;cpu_job&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04630796c437a9285643097825cbd3cd06603f47&#34;&gt;drm/vc4: Use DRM Execution Contexts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21bd85f82ec20ddfc65ae999f49356c86fb68a8d&#34;&gt;drm/vc4: Use DMA Resv to implement VC4 wait BO IOCTL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e8941ac97f281ffa06d6ed058b3bba676f3f8183&#34;&gt;drm/vc4: Remove BOs seqnos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dcdae6e92d4e062da29235fe88980604595e3f0f&#34;&gt;drm/v3d: Fix Indirect Dispatch configuration for V3D 7.1.6 and later&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=35e4079bf1a2570abffce6ababa631afcf8ea0e5&#34;&gt;drm/v3d: Add job to pending list if the reset was skipped&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;melissa-wen&#34;&gt;Melissa Wen&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=81262b1656feb3813e3d917ab78824df6831e69e&#34;&gt;drm/amd/display: restore edid reading from a given i2c adapter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a3b7e65b6be59e686e163fa1ceb0922f996897c2&#34;&gt;drm/amd/display: Fix null check of pipe_ctx-&amp;gt;plane_state for update_dchubp_dpp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fe14c0f096f58d2569e587e9f4b05d772272bbb4&#34;&gt;Revert &amp;ldquo;drm/amd/display: Hardware cursor changes color when switched to software cursor&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ricardo-cañuelo-navarro&#34;&gt;Ricardo Cañuelo Navarro&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f1a69a940de58b16e8249dff26f74c8cc59b32be&#34;&gt;sctp: detect and prevent references to a freed transport in sendmsg&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ee40c9920ac286c5bfe7c811e66ff899266d2582&#34;&gt;mm: fix copy_vma() error handling for hugetlb mappings&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rodrigo-siqueira&#34;&gt;Rodrigo Siqueira&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2df30ae0ba0b8b529c64f670a5294634db24ed16&#34;&gt;Documentation/gpu: Add acronyms for some firmware components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9b3ef540397cfc356f10f504841b2e9d16e31286&#34;&gt;MAINTAINERS: Change my role from Maintainer to Reviewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=289387d0dbf806bd59063ab93d94f48cd4c75c7c&#34;&gt;mailmap: Add entry for Rodrigo Siqueira&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thadeu-lima-de-souza-cascardo&#34;&gt;Thadeu Lima de Souza Cascardo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8e2bad543eca5c25cd02cbc63d72557934d45f13&#34;&gt;dlm: prevent NPD when writing a positive value to event_done&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6aa9826330539abcfd3435de93b45cb506e7b86d&#34;&gt;char: misc: improve testing Kconfig description&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9feb82badf33e9269ebca47ccbfca0278102ec39&#34;&gt;parisc: perf: use named initializers for struct miscdevice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=42d9d7bed270247f134190ba0cb05bbd072f58c2&#34;&gt;drm/amd/display: avoid NPD when ASIC does not support DMUB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=17d253af4c2c8a2acf84bb55a0c2045f150b7dfd&#34;&gt;tpm: do not start chip while suspended&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=424eafe65647a8d6c690284536e711977153195a&#34;&gt;i2c: cros-ec-tunnel: defer probe if parent EC is not present&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c876be906ce7e518d9ef9926478669c151999e69&#34;&gt;char: misc: register chrdev region with all possible minors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=178ada9d6e90637667a7410dd7fe75fbbe2cd4c5&#34;&gt;dma-fence: Add a single fence fast path for fence merging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2a0b1bc5773d3124ef7bee886fce1bb59fd9b76&#34;&gt;dma-fence: Add some more fence-merge-unwrap tests&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=573b73e5ac2ce0d58859eace8218f3a7e9212186&#34;&gt;drm/sched: Delete unused update_job_credits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=440aaf479c9aaf5ecea9a463eb826ec243d5f1cf&#34;&gt;drm/sched: Remove weak paused submission checks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=51678bb9a7fb25e44f38a4f0b1bd283fec809917&#34;&gt;drm/sched: Add helper to check job dependencies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cdb73451bc675392c9c76779e2fec720edafd7ab&#34;&gt;drm/imagination: Use the drm_sched_job_has_dependency helper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2eca617f12586abff62038db1c14cb3aa60a15aa&#34;&gt;drm/scheduler: Remove some unused prototypes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b6eb664d89e7ed1e3369fe2860fea31e6dc45e34&#34;&gt;drm/sched: Add internal job peek/pop API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=80b6ef8ae25ade45e6418df3ddf699a5a10a7ca4&#34;&gt;drm/amdgpu: Pop jobs from the queue more robustly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b76f1467dc56fccecfdd63357e2c71542ecd96c5&#34;&gt;drm/sched: Remove a hole from struct drm_sched_job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4b7320bfd49dcaf33ef8ab724b88f7baf6bd9978&#34;&gt;drm/sched: Move drm_sched_entity_is_ready to internal header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71a18f7266f301b20faf9f5fd7aee228c83bb4a3&#34;&gt;drm/sched: Move internal prototypes to internal header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=27d4815149ba0c80ef2db2a82f0512f647e76d62&#34;&gt;drm/sched: Group exported prototypes by object type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=25d434cef791e03cf40680f5441b576c639bfa84&#34;&gt;drm/xe: Fix GT &amp;ldquo;for each engine&amp;rdquo; workarounds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d9b5d83c5a4d720af6ddbefe2825c78f0325a3fd&#34;&gt;drm/xe/xelp: Move Wa_16011163337 from tunings to workarounds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=96f18263140266d737e931530cb759d14858b0df&#34;&gt;drm/xe/xelp: Add Wa_1604555607&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f122372579d28e5ac74f3c222c173466ae5951d&#34;&gt;drm/xe/xelp: L3 recommended hashing mask&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=067a974fd8a9ea43f97ca184e2768b583f2f8c44&#34;&gt;drm/xe: Add performance tunings to debugfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=298661cd9cea55233cf60dee3ef9f736ddd1db7a&#34;&gt;drm/xe: Fix MOCS debugfs LNCF readout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e2a0a6328ea7385db00c3d4f3067ded9bbb709a1&#34;&gt;drm/xe: Fix ring flush invalidation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=11ef40eb57322322139de460f6370aec38da5a45&#34;&gt;drm/xe: Pass flags directly to emit_flush_imm_ggtt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7b7b07c285c304317d00ea21c2a659167d4d4d12&#34;&gt;drm/xe: Use correct type width for alignment in fb pinning code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5b1834d6202f86180e451ad1a2a8a193a1da18fc&#34;&gt;drm/fdinfo: Protect against driver unbind&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reviewed-30&#34;&gt;Reviewed (30)&lt;/h2&gt;
&lt;h3 id=&#34;andré-almeida-1&#34;&gt;André Almeida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b7cf9f4ac1b8ad0fae1c0f011913361c140b49e1&#34;&gt;drm: Introduce device wedged event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a97bc11b20df7083e1a5f9250eacf054f5d2eae0&#34;&gt;drm/doc: Document device wedged event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7d50e00fef2832e98d7e06bbfc85c1d66ee110ca&#34;&gt;selftests/futex: futex_waitv wouldblock test should fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b662b162c3d06f120749eea0351ec9317d9dd905&#34;&gt;drm: Fix potential overflow issue in event_string array&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;christian-gmeiner&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=796a9f55a8d1d85387b973df9a06cbf4bc2d6327&#34;&gt;drm/sched: Use struct for drm_sched_init() params&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;iago-toral-quiroga&#34;&gt;Iago Toral Quiroga&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dcdae6e92d4e062da29235fe88980604595e3f0f&#34;&gt;drm/v3d: Fix Indirect Dispatch configuration for V3D 7.1.6 and later&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=35e4079bf1a2570abffce6ababa631afcf8ea0e5&#34;&gt;drm/v3d: Add job to pending list if the reset was skipped&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;jose-maria-casanova-crespo&#34;&gt;Jose Maria Casanova Crespo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dc4afc0de9654f88676d77094a38f9451d519011&#34;&gt;drm/v3d: Remove &lt;code&gt;v3d-&amp;gt;cpu_job&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;luis-henriques-1&#34;&gt;Luis Henriques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9b17cb59a7db983a967c3658fe9a2f250f588bbd&#34;&gt;fuse: add default_request_timeout and max_request_timeout sysctls&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal-1&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0a3f3f7c5da8e45e1d4adf4ed6f4e2b05912785a&#34;&gt;drm/vkms: Switch to managed for connector&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=16d22ba2debda22907b3eda4cc8ec1229136f424&#34;&gt;drm/vkms: Switch to managed for encoder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=796a9f55a8d1d85387b973df9a06cbf4bc2d6327&#34;&gt;drm/sched: Use struct for drm_sched_init() params&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dd40b5f9c3d89b67af0dbe059cf4a51aac6bf06&#34;&gt;drm/v3d: Add clock handling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;melissa-wen-1&#34;&gt;Melissa Wen&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04630796c437a9285643097825cbd3cd06603f47&#34;&gt;drm/vc4: Use DRM Execution Contexts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21bd85f82ec20ddfc65ae999f49356c86fb68a8d&#34;&gt;drm/vc4: Use DMA Resv to implement VC4 wait BO IOCTL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e8941ac97f281ffa06d6ed058b3bba676f3f8183&#34;&gt;drm/vc4: Remove BOs seqnos&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rodrigo-siqueira-1&#34;&gt;Rodrigo Siqueira&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c0a01660de20bfc60b01f616e7aead727f12ba9e&#34;&gt;Documentation/gpu: remove duplicate entries in different glossaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f4f086de310026abfe28512dfa4984fb4648663a&#34;&gt;drm/amd/display: change kzalloc to kcalloc in dcn30_validate_bandwidth()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=934cb529e90c57f5766668fe13624624dae1d790&#34;&gt;drm/amd/display: change kzalloc to kcalloc in dcn31_validate_bandwidth()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b17a94f2fe8225e47c8efe770c6c246488c76a20&#34;&gt;drm/amd/display: change kzalloc to kcalloc in dcn314_validate_bandwidth()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=315ce6c41aa9b913461a3e018ce7516435245787&#34;&gt;drm/amd/display: change kzalloc to kcalloc in dml1_validate()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6a87982b5897c387f5508fddfe2404726045517c&#34;&gt;drm/amd/display: Remove incorrect macro guard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=42d9d7bed270247f134190ba0cb05bbd072f58c2&#34;&gt;drm/amd/display: avoid NPD when ASIC does not support DMUB&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thadeu-lima-de-souza-cascardo-1&#34;&gt;Thadeu Lima de Souza Cascardo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=35dac71cff8f68f065a6719631db919d0640d5e5&#34;&gt;scripts: add script to extract built-in firmware blobs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin-1&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b1cce631e61fcf3e1bc77ace05f10d00c737af9a&#34;&gt;dma-buf: add selftest for fence order after merge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=87b593d79864e6e82cb00aa3d837094a1643e272&#34;&gt;drm/i915/pmu: Drop custom hotplug code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=af6c2b7c46e16701fba44a21326cb634786e3e71&#34;&gt;drm/file: Add fdinfo helper for printing regions with prefix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=796a9f55a8d1d85387b973df9a06cbf4bc2d6327&#34;&gt;drm/sched: Use struct for drm_sched_init() params&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=44d2f310f008613c1dbe5e234c2cf2be90cbbfab&#34;&gt;drm/sched: drm_sched_job_cleanup(): correct false doc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cedf23842d7433eb32cb782a637bb870fb096a3b&#34;&gt;drm/xe/rtp: Drop sentinels from arg to xe_rtp_process_to_sr()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tested-2&#34;&gt;Tested (2)&lt;/h2&gt;
&lt;h3 id=&#34;changwoo-min-1&#34;&gt;Changwoo Min&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e38be1c7647c8c78304ce6d931b3b654e27948b3&#34;&gt;sched_ext: Fix rq lock state in hotplug ops&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;guilherme-g-piccoli-1&#34;&gt;Guilherme G. Piccoli&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c929d08df8bee855528b9d15b853c892c54e1eee&#34;&gt;x86/split_lock: Fix the delayed detection logic&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;acked-12&#34;&gt;Acked (12)&lt;/h2&gt;
&lt;h3 id=&#34;changwoo-min-2&#34;&gt;Changwoo Min&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=46a0e1615886b87bdb18cf3f29bf494a30aafc01&#34;&gt;tool/sched_ext: Event counter dumping updates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=26176116d931621fd96bcef15e7b42a9ddf524da&#34;&gt;sched_ext: Count SCX_EV_DISPATCH_LOCAL_DSQ_OFFLINE in the right spot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eace54dff05157ed2629848111366b836dcf3ad9&#34;&gt;sched_ext: Add SCX_EV_ENQ_SKIP_MIGRATION_DISABLED&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1a4e0d8682eb66a4fb37158a520eacd37c0b61b7&#34;&gt;sched_ext: Take NUMA node into account when allocating per-CPU cpumasks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5e3b64246fe4cafed0755e3850de2874bf4a0da9&#34;&gt;tools/sched_ext: Provide consistent access to scx flags&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18853ba782bef65fc81ef2b3370382e5b479c5eb&#34;&gt;sched_ext: Track currently locked rq&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a11d6784d7316a6c77ca9f14fb1a698ebbb3c1fb&#34;&gt;sched_ext: Fix missing rq lock in scx_bpf_cpuperf_set()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal-2&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=099b79f94366f3110783301e20d8136d762247f8&#34;&gt;drm/doc: Document KUnit expectations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin-2&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3ddf003c7e41c038c877ee4661d4900d5eb05268&#34;&gt;Documentation/gpu: Clarify format of driver-specific fidnfo keys&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=11bb3d1876fc59d2699e8050a361c9bc92464830&#34;&gt;drm/i915: Use device wedged event&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=099b79f94366f3110783301e20d8136d762247f8&#34;&gt;drm/doc: Document KUnit expectations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=35e4079bf1a2570abffce6ababa631afcf8ea0e5&#34;&gt;drm/v3d: Add job to pending list if the reset was skipped&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;maintainer-sob-2&#34;&gt;Maintainer SoB (2)&lt;/h2&gt;
&lt;h3 id=&#34;maíra-canal-3&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dd40b5f9c3d89b67af0dbe059cf4a51aac6bf06&#34;&gt;drm/v3d: Add clock handling&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin-3&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b1cce631e61fcf3e1bc77ace05f10d00c737af9a&#34;&gt;dma-buf: add selftest for fence order after merge&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Linux 6.14, an almost forgotten release</title>
      <link>https://andrealmeid.com/post/2025-03-28-kernel-6-14/</link>
      <pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2025-03-28-kernel-6-14/</guid>
      <description>&lt;p&gt;Linux 6.14 is the second release of 2025, and as usual Igalia took part on it. It&amp;rsquo;s a very normal release, except that it was release on Monday, instead of the usual Sunday release that has been going on for years now. The reason behind this? Well, &lt;a href=&#34;https://lore.kernel.org/lkml/CAHk-=wg7TO09Si5tTPyhdrLLvyYtVmCf+GGN4kVJ0=Xk=5TE3g@mail.gmail.com/&#34;&gt;quoting Linus himself&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;rsquo;d like to say that some important last-minute thing came up and
delayed things.&lt;/p&gt;
&lt;p&gt;But no. It&amp;rsquo;s just pure incompetence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;But we did not forget about it, so here&amp;rsquo;s our Linux 6.14 blog post!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;A part of the development cycle for this release happened during late December, when a lot of maintainers and developers were taking their deserved breaks. As a result of this, this release contains less changes than usual as &lt;a href=&#34;https://lwn.net/Articles/1006378/&#34;&gt;stated by LWN&lt;/a&gt; as the &amp;ldquo;lowest level of merge-window activity seen in years&amp;rdquo;. Nevertheless, some cool features made through this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://docs.kernel.org/next/userspace-api/ntsync.html&#34;&gt;NT synchronization primitives&lt;/a&gt;: Elizabeth Figura, from Codeweavers, is know from her work around improving Wine sync functions, like mutexes and semaphores. She was one the main collaborators behind the &lt;code&gt;futex_waitv()&lt;/code&gt; work and now developed a virtual driver that is more compliant with the precise semantics that the NT kernel exposes. This allows Wine to behave closer to Windows without the need to create new syscalls, since this driver uses &lt;code&gt;ioctl()&lt;/code&gt; as the front-end uAPI.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lwn.net/Articles/998783/&#34;&gt;RWF_UNCACHED&lt;/a&gt;: Linux has two ways of dealing with storage I/O:  buffered I/O (usually the preferred one) that stores data in a temporary buffer and regularly syncs the cache data with the device; and direct I/O that doesn&amp;rsquo;t use cache and always writes/reads synchronously with the storage device. Now a new mixed approach is available: uncached buffered I/O. This method is aimed to have a fast way to write or read data that will not be needed again in the short term. For reading, the device writes data in the buffer and as soon as the user finished reading the buffer, it&amp;rsquo;s cleared from the cache. For writing, as soon as userspace fills the cache, the device reads it and removes it from the cache. In this way we still have the advantage of using a fast cache but reducing the cache pressure.&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://lore.kernel.org/amd-gfx/20241112213716.49355-1-alexander.deucher@amd.com/&#34;&gt;amdgpu panic support&lt;/a&gt;: AMD developers added kernel panic support for amdgpu driver, &amp;ldquo;which displays a pretty user friendly message on the screen when a Linux kernel panic occurs&amp;rdquo; instead of just a black screen or a partial dmesg log.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As usual Kernel Newbies provides a very good summary, you should check it for more details: &lt;a href=&#34;https://kernelnewbies.org/Linux_6.14&#34;&gt;Linux 6.14 changelog&lt;/a&gt;. Now let&amp;rsquo;s jump to see what were the merged contributions by Igalia for this release!&lt;/p&gt;
&lt;h2 id=&#34;drm&#34;&gt;DRM&lt;/h2&gt;
&lt;p&gt;For the DRM common infrastructure, we helped to land a standardization for DRM client memory usage reporting. Additionally, we contributed to improve and fix bugs found in drivers of AMD, Intel, Broadcom, and Vivante.&lt;/p&gt;
&lt;h3 id=&#34;amdgpu&#34;&gt;AMDGPU&lt;/h3&gt;
&lt;p&gt;For the AMD driver, we fixed bugs experienced by users of Cosmic Desktop Environment on several AMD hardware versions. One was uncovered with the introduction of overlay cursor mode, and a definition mismatch across the display driver caused a page-fault in the usage of multiple overlay planes. Another bug was related to division by zero on plane scaling. Also, we fixed regressions on VRR and MST generated by the series of changes to migrate AMD display driver from open-coded EDID handling to &lt;code&gt;drm_edid&lt;/code&gt; struct.&lt;/p&gt;
&lt;h3 id=&#34;intel&#34;&gt;Intel&lt;/h3&gt;
&lt;p&gt;For the Intel drivers, we fixed a bug in the xe GPU driver which prevented certain type of workarounds from being applied, helped with the maintainership of the i915 driver, handled external code contributions, maintained the development branch and sent several pull requests.&lt;/p&gt;
&lt;h3 id=&#34;raspberry-pi-v3d&#34;&gt;Raspberry Pi (V3D)&lt;/h3&gt;
&lt;p&gt;We &lt;a href=&#34;https://lore.kernel.org/dri-devel/20250226-v3d-gpu-reset-fixes-v1-0-83a969fdd9c1@igalia.com/&#34;&gt;fixed the GPU resets&lt;/a&gt; for the Raspberry Pi 4 as we found out to be broken as per &lt;a href=&#34;https://github.com/raspberrypi/linux/issues/6660&#34;&gt;a user bug report&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Also in the V3D driver, the active performance monitor is now properly stopped before being destroyed, addressing a potential use-after-free issue. Additionally, support for a global performance monitor has been added via a new &lt;code&gt;DRM_IOCTL_V3D_PERFMON_SET_GLOBAL&lt;/code&gt; ioctl. This allows all jobs to share a single, globally configured perfmon, enabling more consistent performance tracking and paving the way for integration with user-space tools such as &lt;a href=&#34;https://perfetto.dev&#34;&gt;perfetto&lt;/a&gt;.&lt;/p&gt;

 

&lt;video width=100% controls autoplay&gt;
    &lt;source src=&#34;https://andrealmeid.com/videos/2025-03-28-perfetto.webm&#34; type=&#34;video/webm&#34;&gt;
    Your browser does not support the video tag.  
&lt;/video&gt;



&lt;p&gt;&lt;em&gt;A small video demo of perfetto integration with V3D&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;etnaviv&#34;&gt;etnaviv&lt;/h3&gt;
&lt;p&gt;On the etnaviv side, &lt;code&gt;fdinfo&lt;/code&gt; support has been implemented to expose memory usage statistics per file descriptor, enhancing observability and debugging capabilities for memory-related behavior.&lt;/p&gt;
&lt;h2 id=&#34;sched_ext&#34;&gt;sched_ext&lt;/h2&gt;
&lt;p&gt;Many BPF schedulers (e.g., &lt;code&gt;scx_lavd&lt;/code&gt;) frequently call &lt;code&gt;bpf_ktime_get_ns()&lt;/code&gt; for tracking tasks&amp;rsquo; runtime properties. &lt;code&gt;bpf_ktime_get_ns()&lt;/code&gt; eventually reads a hardware timestamp counter (TSC). However, reading a hardware TSC is not performant in some hardware platforms, degrading instructions per cycyle (IPC).&lt;/p&gt;
&lt;p&gt;We addressed the performance problem of reading hardware TSC by leveraging the rq clock in the scheduler core, introducing a &lt;code&gt;scx_bpf_now()&lt;/code&gt; function for BPF schedulers. Whenever the rq clock is fresh and valid, &lt;code&gt;scx_bpf_now()&lt;/code&gt; provides the rq clock, which is already updated by the scheduler core, so it can reduce reading the hardware TSC. Using &lt;code&gt;scx_bpf_now()&lt;/code&gt; reduces the number of reading hardware TSC by 50-80% (e.g., 76% for &lt;code&gt;scx_lavd&lt;/code&gt;).&lt;/p&gt;
&lt;h2 id=&#34;assorted-kernel-fixes&#34;&gt;Assorted kernel fixes&lt;/h2&gt;
&lt;p&gt;Continuing our efforts on cleaning up kernel bugs, we provided a few fixes that address issues reported by &lt;a href=&#34;https://syzkaller.appspot.com/upstream&#34;&gt;syzbot&lt;/a&gt; with the goal of increasing stability and security, leveraging the fuzzing capabilities of &lt;a href=&#34;https://lwn.net/Articles/677764/&#34;&gt;syzkaller&lt;/a&gt; to bring to the surface certain bugs that are hard to notice otherwise. We&amp;rsquo;re addressing bug reports from different kernel areas, including drivers and core subsystems such as the memory manager. As part of this effort, several fixes were done for the probe path of the rtlwifi driver.&lt;/p&gt;
&lt;h2 id=&#34;check-the-complete-list-of-igalias-contributions-for-the-614-release&#34;&gt;Check the complete list of Igalia’s contributions for the 6.14 release&lt;/h2&gt;
&lt;h2 id=&#34;authored-38&#34;&gt;Authored (38)&lt;/h2&gt;
&lt;h3 id=&#34;changwoo-min&#34;&gt;Changwoo Min&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ea9b2626271f4e82f329ba52503dd5193fe656e9&#34;&gt;sched_ext: Relocate scx_enabled() related code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3a9910b5904d29c566e3ff9290990b519827ba75&#34;&gt;sched_ext: Implement scx_bpf_now()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2e1ce39fde7caacc98bc0472d15e8c641dfb31bf&#34;&gt;sched_ext: Add scx_bpf_now() for BPF scheduler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d07be814fc7165cb804317c99228243382e81188&#34;&gt;sched_ext: Add time helpers for BPF schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0f130bc341d09a82ad23e7fc59d4306528c4c4ce&#34;&gt;sched_ext: Replace bpf_ktime_get_ns() to scx_bpf_now()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=62addc6dbf3644272c064c16076221bf4f633f25&#34;&gt;sched_ext: Use time helpers in BPF schedulers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=029b6ce733712a41421955194b113f283dcb1026&#34;&gt;sched_ext: Fix incorrect time delta calculation in time_delta()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;christian-gmeiner&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21f1435b1e6b012a07c42f36b206d2b66fc8f13b&#34;&gt;drm/v3d: Stop active perfmon if it is being destroyed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6bef484c5e9a5d3937a4bdf56e0f08f25517f8a0&#34;&gt;drm/etnaviv: Add fdinfo support for memory stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6eabbab359c156669e10d5dec3e71e80ff09bd2&#34;&gt;drm/v3d: Add DRM_IOCTL_V3D_PERFMON_SET_GLOBAL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;luis-henriques&#34;&gt;Luis Henriques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d55011469b41d9da6c06cb1c4a4da7a87fe155bc&#34;&gt;fuse: fix possible deadlock if rings are never initialized&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e987e22e9229d70c2083a91cc61269b2c4924955&#34;&gt;drm/v3d: Fix performance counter source settings on V3D 7.x&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4ee06e3b6120a77fd3967c2c62268083d26c5500&#34;&gt;drm/v3d: Fix miscellaneous documentation errors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e64d6b3a3c39655de56682ec83e894978d23412&#34;&gt;drm/v3d: Assign job pointer to NULL before signaling the fence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=80cbee810e4e13cdbd3ae9654e9ecddf17f3e828&#34;&gt;drm/v3d: Don&amp;rsquo;t run jobs that have errors flagged in its fence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c3e4a25602f8b941b154f52a4da13ae77b4664c4&#34;&gt;drm/v3d: Set job pointer to NULL when the job&amp;rsquo;s fence has an error&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;melissa-wen&#34;&gt;Melissa Wen&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1c86c81a86c60f9b15d3e3f43af0363cf56063e7&#34;&gt;drm/amd/display: fix page fault due to max surface definition mismatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b8d6daffc871a42026c3c20bff7b8fa0302298c1&#34;&gt;drm/amd/display: increase MAX_SURFACES to the value supported by hw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ab75a0d2e07942ae15d32c0a5092fd336451378c&#34;&gt;drm/amd/display: fix divide error in DM plane scale calcs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7f2b5237e313e39008a85b33ca94ab503a8fdff9&#34;&gt;drm/amd/display: restore invalid MSA timing check for freesync&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=12f3b92d1cfa5526715fff93a6d6fe29300d5e2a&#34;&gt;drm/amd/display: restore edid reading from a given i2c adapter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;ricardo-cañuelo-navarro&#34;&gt;Ricardo Cañuelo Navarro&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2ede647a6fde3e54a6bfda7cf01c716649655900&#34;&gt;mm,madvise,hugetlb: check for 0-length range after end address adjustment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=adae46ac1e38a288b14f0298e27412adcba83f8e&#34;&gt;mm: shmem: remove unnecessary warning in shmem_writepage()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rodrigo-siqueira&#34;&gt;Rodrigo Siqueira&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=733d675c2a436b416107893db87eb182585c1b39&#34;&gt;MAINTAINERS: Change my role from Maintainer to Reviewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=96989f3dca6f51f202b6dbc92c37e17df6ca12f4&#34;&gt;mailmap: Add entry for Rodrigo Siqueira&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thadeu-lima-de-souza-cascardo&#34;&gt;Thadeu Lima de Souza Cascardo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e73e11d303940119e41850a0452a0deda2cc4eb5&#34;&gt;wifi: rtlwifi: do not complete firmware loading needlessly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8559a9e0c457729fe3edb3176bbf7c7874f482b0&#34;&gt;wifi: rtlwifi: rtl8192se: rise completion of firmware loading as last step&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b4b26642b31ef282df6ff7ea8531985edfdef12a&#34;&gt;wifi: rtlwifi: wait for firmware loading before releasing memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=00260350aed80c002df270c805ca443ec9a719a6&#34;&gt;wifi: rtlwifi: fix init_sw_vars leak when probe fails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f79bc5c67867c19ce2762e7934c20dbb835ed82c&#34;&gt;wifi: rtlwifi: usb: fix workqueue leak when probe fails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2fdac64c3c35858aa8ac5caa70b232e03456e120&#34;&gt;wifi: rtlwifi: remove unused check_buddy_priv&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d8ece6fc3694657e4886191b32ca1690af11adda&#34;&gt;wifi: rtlwifi: destroy workqueue at rtl_deinit_core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e7ceefbfd8d447abc8aca8ab993a942803522c06&#34;&gt;wifi: rtlwifi: fix memory leaks and invalid access at probe error path&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b59b86c5d08be7d761c04affcbcec8184738c200&#34;&gt;wifi: rtlwifi: pci: wait for firmware loading before releasing memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8004d635f27bbccaa5c083c50d4d5302a6ffa00e&#34;&gt;Revert &amp;ldquo;media: uvcvideo: Require entities to have a non-zero unique ID&amp;rdquo;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6d991f569c5ef6eaeadf1238df2c36e3975233ad&#34;&gt;char: misc: deallocate static minor in error path&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e996127ec1aabecc33e405de42e7e1cbfae39315&#34;&gt;drm/amdgpu: Use DRM scheduler API in amdgpu_xcp_release_sched&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=54f94dc7f6b4db45dbc23b4db3d20c7194e2c54f&#34;&gt;drm/xe: Fix GT &amp;ldquo;for each engine&amp;rdquo; workarounds&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reviewed-36&#34;&gt;Reviewed (36)&lt;/h2&gt;
&lt;h3 id=&#34;andré-almeida&#34;&gt;André Almeida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1d44a30ae3f9195cb4eb7d81bb9ced2776232094&#34;&gt;ASoC: cs35l41: Fallback to using HID for system_name if no SUB is available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b19181638182d1f5c43757b471c056b6196c8ca3&#34;&gt;ASoC: cs35l41: Fix acpi_device_hid() not found&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;christian-gmeiner-1&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e987e22e9229d70c2083a91cc61269b2c4924955&#34;&gt;drm/v3d: Fix performance counter source settings on V3D 7.x&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=16ab70e8dabe4f26b2de1c13e1937e190b0d2d24&#34;&gt;drm/etnaviv: Convert timeouts to secs_to_jiffies()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;iago-toral-quiroga&#34;&gt;Iago Toral Quiroga&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e987e22e9229d70c2083a91cc61269b2c4924955&#34;&gt;drm/v3d: Fix performance counter source settings on V3D 7.x&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e64d6b3a3c39655de56682ec83e894978d23412&#34;&gt;drm/v3d: Assign job pointer to NULL before signaling the fence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=80cbee810e4e13cdbd3ae9654e9ecddf17f3e828&#34;&gt;drm/v3d: Don&amp;rsquo;t run jobs that have errors flagged in its fence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c3e4a25602f8b941b154f52a4da13ae77b4664c4&#34;&gt;drm/v3d: Set job pointer to NULL when the job&amp;rsquo;s fence has an error&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;jose-maria-casanova-crespo&#34;&gt;Jose Maria Casanova Crespo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e64d6b3a3c39655de56682ec83e894978d23412&#34;&gt;drm/v3d: Assign job pointer to NULL before signaling the fence&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;luis-henriques-1&#34;&gt;Luis Henriques&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=92270d076115ae81b83f0605703602d2d5a866e2&#34;&gt;fuse: rename to fuse_dev_end_requests and make non-static&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=867d93dcdede5ea453543085d1ed0bf43cde60de&#34;&gt;fuse: Move fuse_get_dev to header file&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=88be7aa98d91f5761f8764273ebd961915e4632d&#34;&gt;fuse: Move request bits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a7040a06e4bc6a550ddb2078d59fad311dc0ee3b&#34;&gt;fuse: Add fuse-io-uring design documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7ccd86ba3a485a8bc33478776eb7053d9adb7816&#34;&gt;fuse: make args-&amp;gt;in_args[0] to be always the header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=24fe962c86f55347385933a1b06ca71b60854690&#34;&gt;fuse: {io-uring} Handle SQEs - register commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0f9c62aaf7a98412b46a91fe7daad76b316b3b7&#34;&gt;fuse: Make fuse_copy non static&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f773a7c2c3d934d00542c6471170066d150d152f&#34;&gt;fuse: Add fuse-io-uring handling into fuse_copy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3821336530616776414aa7a879640052b89def28&#34;&gt;fuse: {io-uring} Make hash-list req unique finding functions non-static&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c090c8abae4b6b77a1bee116aa6c385456ebef96&#34;&gt;fuse: Add io-uring sqe commit and fetch support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4a9bfb9b6850fec0685447aed280533cf980de70&#34;&gt;fuse: {io-uring} Handle teardown of ring entries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ba74ba571189668697a8d8da906ad6d44762ebc6&#34;&gt;fuse: {io-uring} Make fuse_dev_queue_{interrupt,forget} non-static&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c2c9af9a0b13261c36909036057a116f2edb5e1a&#34;&gt;fuse: Allow to queue fg requests through io-uring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=857b0263f30eebe13ab4b6a65156a0d6c8fc2210&#34;&gt;fuse: Allow to queue bg requests through io-uring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b6236c8407cba5d7a108facb1bcfab24994d3814&#34;&gt;fuse: {io-uring} Prevent mount point hang on fuse-server termination&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3393ff964e0fa5def66570c54a4612bf9df06b76&#34;&gt;fuse: block request allocation until io-uring init is complete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=786412a73e7ee5b00ef3437bbf2f3a250759b2ae&#34;&gt;fuse: enable fuse-over-io-uring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2d4fde59fd502a65c1698b61ad4d0f10a9ab665a&#34;&gt;fuse: prevent disabling io-uring on active connections&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal-1&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=12e755103f2404fa87bd1d7af93100ec45b43feb&#34;&gt;drm/vkms: Remove index parameter from init_vkms_output&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=22f16c50beb6b7c4e2744eb7ea998dae0d2cdbdc&#34;&gt;drm/vkms: Code formatting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f9741ac3b94c5f4418cd727d232ae0590b8ef1a&#34;&gt;drm/vkms: Use drm_frame directly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=51091b4ab257887d9ab79d93078b7989abeeda6f&#34;&gt;drm/vkms: Use const for input pointers in pixel_read an pixel_write functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6eabbab359c156669e10d5dec3e71e80ff09bd2&#34;&gt;drm/v3d: Add DRM_IOCTL_V3D_PERFMON_SET_GLOBAL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin-1&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6bef484c5e9a5d3937a4bdf56e0f08f25517f8a0&#34;&gt;drm/etnaviv: Add fdinfo support for memory stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bebf2ebd70f210a6c8fe5f668dadefb083014217&#34;&gt;drm: make drm-active- stats optional&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e77d0401e8a198d348bdff5ad48f9dab07902eb4&#34;&gt;Documentation/gpu: Clarify drm memory stats definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=23e0832d6d7be2d3c713f9390c060b6f1c48bf36&#34;&gt;drm/sched: Fix preprocessor guard&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tested-2&#34;&gt;Tested (2)&lt;/h2&gt;
&lt;h3 id=&#34;andré-almeida-1&#34;&gt;André Almeida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1d44a30ae3f9195cb4eb7d81bb9ced2776232094&#34;&gt;ASoC: cs35l41: Fallback to using HID for system_name if no SUB is available&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;christian-gmeiner-2&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8a20030038742b9915c6d811a4e6c14b126cafb4&#34;&gt;hexagon: fix using plain integer as NULL pointer warning in cmpxchg&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;acked-1&#34;&gt;Acked (1)&lt;/h2&gt;
&lt;h3 id=&#34;iago-toral-quiroga-1&#34;&gt;Iago Toral Quiroga&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4ee06e3b6120a77fd3967c2c62268083d26c5500&#34;&gt;drm/v3d: Fix miscellaneous documentation errors&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;maintainer-sob-6&#34;&gt;Maintainer SoB (6)&lt;/h2&gt;
&lt;h3 id=&#34;maíra-canal-2&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21f1435b1e6b012a07c42f36b206d2b66fc8f13b&#34;&gt;drm/v3d: Stop active perfmon if it is being destroyed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c6eabbab359c156669e10d5dec3e71e80ff09bd2&#34;&gt;drm/v3d: Add DRM_IOCTL_V3D_PERFMON_SET_GLOBAL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c5cf801914ef3e67923e5dc912e04167e665dd11&#34;&gt;drm/vc4: plane: Remove WARN on state being set in plane_reset&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin-2&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bc6b027e6d735bde7622f3bbf809de5b911b49e9&#34;&gt;drm/i915: Remove deadcode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=64420d2f3e3bf3e72c4a56f806711fb93faf1feb&#34;&gt;drm/i915: Remove unused intel_huc_suspend&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0a1584ec3dd947ce31d031122f7f57dd1a8f5a0e&#34;&gt;drm/i915: Remove unused intel_ring_cacheline_align&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Linux 6.13, I WANT A GUITAR PEDAL</title>
      <link>https://andrealmeid.com/post/2025-01-20-kernel-13/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2025-01-20-kernel-13/</guid>
      <description>&lt;p&gt;Just as 2025 is starting, we got a new Linux release in mid January, tagged as 6.13. In the spirit of holidays, Linus Torvalds even announced during 6.13-rc6 that he would be &lt;a href=&#34;https://lore.kernel.org/lkml/CAHk-=wjrP_uH7_2h7_P+qAO9o5wmQRnhpiivsq1dti4xsM-_9w@mail.gmail.com/&#34;&gt;building and raffling a guitar pedal&lt;/a&gt; for a random kernel developer!&lt;/p&gt;
&lt;p&gt;As usual, this release comes with a pack of exciting news done by the kernel community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;This release has two important improvements for task scheduling: lazy preemption and proxy execution. The goal with lazy preemption is to find a better balance between throughput and response time. A secondary goal is being able to make it the preferred non-realtime scheduling policy for most cases. Tasks that really need a reschedule in a hurry will use the older &lt;code&gt;TIF_NEED_RESCHED&lt;/code&gt; flag. A preliminary work for proxy execution was merged, which will let us avoid priority-inversion scenarios when using real time tasks with deadline scheduling, for use cases such as Android.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;New important Rust abstractions arrived, such as VFS data structures and interfaces, and also abstractions for misc devices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lightweight guard pages: guard pages are used to raise a fatal signal when accessed. This feature had the drawback of having a heavy performance impact, but in this new release the flag &lt;code&gt;MADV_GUARD_INSTALL&lt;/code&gt; was added for the &lt;code&gt;madvise()&lt;/code&gt; syscall, offering a lightweight way to guard pages.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To know more about the community improvements, check out the &lt;a href=&#34;https://kernelnewbies.org/Linux_6.13&#34;&gt;summary made by Kernel Newbies&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now let&amp;rsquo;s highlight the contributions made by Igalians for this release.&lt;/p&gt;
&lt;h2 id=&#34;case-insensitive-support-for-tmpfs&#34;&gt;Case-insensitive support for tmpfs&lt;/h2&gt;
&lt;p&gt;Case sensitivity has been a traditional difference between Linux distros and MS Windows, with the most popular filesystems been in opposite sides: while ext4 is case sensitive, NTFS is case insensitive. This difference proved to be challenging when Windows apps, mainly games, started to be a common use case for Linux distros (thanks to Wine!). For instance, games running through Steam&amp;rsquo;s Proton would expect that the path &lt;code&gt;assets/player.png&lt;/code&gt; and &lt;code&gt;assets/PLAYER.PNG&lt;/code&gt; would point to be the same file, but this is not the case in ext4. To avoid doing workarounds in userspace, &lt;a href=&#34;https://lwn.net/Articles/829737/&#34;&gt;ext4 has support for casefolding since Linux 5.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Now, tmpfs joins the group of filesystems with case-insensitive support. This is particularly useful for running games inside containers, like the combination of Wine + Flatpak. In such scenarios, the container shares a subset of the host filesystem with the application, mounting it using tmpfs. To keep the filesystem consistent, with the same expectations of the host filesystem about the mounted one, if the host filesystem is case-insensitive we can do the same thing for the container filesystem too. You can read more about the use case in the &lt;a href=&#34;https://lore.kernel.org/all/20241021-tonyk-tmpfs-v8-0-f443d5814194@igalia.com/&#34;&gt;patchset cover letter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While the container frameworks implement proper support for this feature, you can play with it and try it yourself:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;$ mount -t tmpfs -o casefold fs_name /mytmpfs
$ cd /mytmpfs &lt;span style=&#34;color:#75715e&#34;&gt;# case-sensitive by default, we still need to enable it&lt;/span&gt;
$ mkdir a
$ touch a; touch A
$ ls
A  a
$ mkdir B; cd b
cd: The directory &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;b&amp;#39;&lt;/span&gt; does not exist
$ &lt;span style=&#34;color:#75715e&#34;&gt;# now let&amp;#39;s create a case-insensitive dir&lt;/span&gt;
$ mkdir case_dir
$ chattr +F case_dir
$ cd case_dir
$ touch a; touch A
$ ls
a
$ mkdir B; cd b
$ pwd
$ /home/user/mytmpfs/case_dir/B
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;v3d-super-pages-support&#34;&gt;V3D Super Pages support&lt;/h2&gt;
&lt;p&gt;As part of Igalia&amp;rsquo;s effort for enhancing the graphics stack for Raspberry Pi, the V3D DRM driver now has support for Super Pages, improving performance and making memory usage more efficient for Raspberry Pi 4 and 5. Using Linux 6.13, the driver will enable the MMU to allocate not only the default 4KB pages, but also 64KB &amp;ldquo;Big Pages&amp;rdquo; and 1MB &amp;ldquo;Super Pages&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;To measure the difference that Super Pages made to the performance, a series of benchmarks where used, and the highlights are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;+8.36% of FPS boost for Warzone 2100 in RPi4&lt;/li&gt;
&lt;li&gt;+3.62% of FPS boost for Quake 2 in RPi5&lt;/li&gt;
&lt;li&gt;10% time reduction for the Mesa CI job &lt;code&gt;v3dv-rpi5-vk-full:arm64&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Aether SX2 emulator is more fluid to play&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read a detailed post about this, with all benchmark results, in &lt;a href=&#34;https://mairacanal.github.io/unleashing-power-enabling-super-pages-on-RPi/&#34;&gt;Maíra&amp;rsquo;s blog post&lt;/a&gt;, including a super cool PlayStation 2 emulation showcase!&lt;/p&gt;
&lt;h2 id=&#34;new-transparent_hugepage_shmem-command-line-parameter&#34;&gt;New &lt;code&gt;transparent_hugepage_shmem=&lt;/code&gt; command-line parameter&lt;/h2&gt;
&lt;p&gt;Igalia contributed new kernel command-line parameters to improve the configuration of multi-size Transparent Huge Pages (mTHP) for shmem. These parameters, &lt;code&gt;transparent_hugepage_shmem=&lt;/code&gt; and &lt;code&gt;thp_shmem=&lt;/code&gt;, enable more flexible and fine-grained control over the allocation of huge pages when using shmem.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;transparent_hugepage_shmem=&lt;/code&gt; parameter allows users to set a global default huge page allocation policy for the internal shmem mount. This is particularly valuable for DRM GPU drivers. Just as CPU architectures, GPUs can also take advantage of huge pages, but this is possible only if DRM GEM objects are backed by huge pages.&lt;/p&gt;
&lt;p&gt;Since GEM uses shmem to allocate anonymous pageable memory, having control over the default huge page allocation policy allows for the exploration of huge pages use on GPUs that rely on GEM objects backed by shmem.&lt;/p&gt;
&lt;p&gt;In addition, the &lt;code&gt;thp_shmem=&lt;/code&gt; parameter provides fine-grained control over the default huge page allocation policy for specific huge page sizes.&lt;/p&gt;
&lt;p&gt;By configuring page sizes and policies of huge-page allocations for the internal shmem mount, these changes complement the V3D Super Pages feature, as we can now tailor the size of the huge pages to the needs of our GPUs.&lt;/p&gt;
&lt;h2 id=&#34;drm-and-amdgpu-improvements&#34;&gt;DRM and AMDGPU improvements&lt;/h2&gt;
&lt;p&gt;As usual in Linux releases, this one collects a list of improvements made by our team in DRM and AMDGPU driver from the last cycle.&lt;/p&gt;
&lt;p&gt;Cosmic (the desktop environment behind Pop! OS) users discovered some bugs in the AMD display driver regarding the handling of overlay planes. These issues were pre-existing and came to light with the introduction of cursor overlay mode. They were causing page faults and divide errors. We debugged the issue together with reporters and proposed a set of solutions that were ultimately accepted by AMD developers in time for this release.&lt;/p&gt;
&lt;p&gt;In addition, we worked with AMD developers to migrate the driver-specific handling of EDID data to the DRM common code, using drm_edid opaque objects to avoid handling raw EDID data. The first phase was incorporated and allowed the inclusion of new functionality to get EDID from ACPI. However, some dependencies between the AMD the Linux-dependent and OS-agnostic components were left to be resolved in next iterations. It means that next steps will focus on removing the legacy way of handling this data.&lt;/p&gt;
&lt;p&gt;Also in the AMD driver, we fixed one out of bounds memory write, fixed one warning on a boot regression and exposed special GPU memory pools via the fdinfo common DRM framework.&lt;/p&gt;
&lt;p&gt;In the DRM scheduler code, we added some missing locking, removed a couple of re-lock cycles for slightly reduced command submission overheads and clarified the internal documentation.&lt;/p&gt;
&lt;p&gt;In the common dma-fence code, we fixed one memory leak on the failure path and one significant runtime memory leak caused by incorrect merging of fences. The latter was found by the community and was manifesting itself as a system out of memory condition after a few hours of gameplay.&lt;/p&gt;
&lt;h2 id=&#34;sched_ext&#34;&gt;sched_ext&lt;/h2&gt;
&lt;p&gt;The sched_ext landed in kernel 6.12 to enable the efficient development of BPF-based custom schedulers. During the 6.13 development cycle, the sched_ext community has made efforts to harden the code to make it more reliable and clean up the BPF APIs and documentation for clarity.&lt;/p&gt;
&lt;p&gt;Igalia has contributed to hardening the sched_ext core code. We fixed the incorrect use of the scheduler run queue lock, especially during initializing and finalizing the BPF scheduler. Also, we fixed the missing RCU lock protections when the sched_core selects a proper CPU for a task. Without these fixes, the sched_ext core, in the worst case, could crash or raise a kernel oops message.&lt;/p&gt;
&lt;h2 id=&#34;other-contributions--fixes&#34;&gt;Other Contributions &amp;amp; Fixes&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://lwn.net/Articles/677764/&#34;&gt;syzkaller&lt;/a&gt;, a kernel fuzzer, has been an important instrument to find kernel bugs. With the help of &lt;a href=&#34;https://www.kernel.org/doc/html/v4.14/dev-tools/kasan.html&#34;&gt;KASAN&lt;/a&gt;, a memory error detector, and &lt;a href=&#34;https://syzkaller.appspot.com/upstream&#34;&gt;syzbot&lt;/a&gt;, numerous such bugs have been reported and fixed.&lt;/p&gt;
&lt;p&gt;Igalians have contributed to such fixes around a lot of subsystems (like media, network, etc), helping reduce the number of open bugs.&lt;/p&gt;
&lt;h2 id=&#34;check-the-complete-list-of-igalias-contributions-for-the-613-release&#34;&gt;Check the complete list of Igalia’s contributions for the 6.13 release&lt;/h2&gt;
&lt;h2 id=&#34;authored-70&#34;&gt;Authored (70)&lt;/h2&gt;
&lt;h3 id=&#34;andré-almeida&#34;&gt;André Almeida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=156bb2c569cd869583c593d27a5bd69e7b2a4264&#34;&gt;unicode: Fix utf8_load() error path&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6b56a63d286f6f57066c4b5648d8fbec9510beae&#34;&gt;MAINTAINERS: Add Unicode tree&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=82f5ee35d0b960c54370a72418b9ec0dca382262&#34;&gt;scripts/kernel-doc: Fix build time warnings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0e152beb5aa1ccdac9aae9fa570a9e039aff7a03&#34;&gt;libfs: Create the helper function generic_ci_validate_strict_name()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3f5ad0d21db80e31894de4c49874ef5dfc5999a7&#34;&gt;ext4: Use generic_ci_validate_strict_name helper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04dad6c6d37d741bad9946a92171bfa637e989f0&#34;&gt;unicode: Export latest available UTF-8 version number&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=142fa60f61f93805471012f24e029af6d113c5cc&#34;&gt;unicode: Recreate utf8_parse_version()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=458532c8dfeb24edd5e07467605a6484a728e5c2&#34;&gt;libfs: Export generic_ci_ dentry functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=58e55efd6c72cbc3e76423a1086f7b4d6c2ae9c2&#34;&gt;tmpfs: Add casefold lookup support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5cd9aecbc72c07e8b83e900078669a7d0bc5f98f&#34;&gt;tmpfs: Add flag FS_CASEFOLD_FL support for tmpfs dirs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5132f08bd3325602f4de01ccd59537c7f91e1f89&#34;&gt;tmpfs: Expose filesystem features via sysfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a713f830c9033f0e92f8f036bd49d6f2e03dde3c&#34;&gt;docs: tmpfs: Add casefold options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=33b091c08ed85e023c21376e6f787355fd46b440&#34;&gt;libfs: Fix kernel-doc warning in generic_ci_validate_strict_name&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=18d2f10f6284f5bb9c03a759044121c71e5b3b4c&#34;&gt;tmpfs: Fix type for sysfs&amp;rsquo; casefold attribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65c481f30896750f659345b915b669f78a3c0289&#34;&gt;tmpfs: Initialize sysfs during tmpfs init&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;changwoo-min&#34;&gt;Changwoo Min&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6268d5bc10354fc2ab8d44a0cd3b042d49a0417e&#34;&gt;sched_ext: Replace rq_lock() to raw_spin_rq_lock() in scx_ops_bypass()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=153591f7036be19ddcdb102c34b9f3e876a236c7&#34;&gt;sched_ext: Clarify sched_ext_ops table for userland scheduler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f39489fea677ad78ca4ce1ab2d204a6639b868dc&#34;&gt;sched_ext: add a missing rcu_read_lock/unlock pair at scx_select_cpu_dfl()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48ca421268735c60ea0d4c2e19610b224d5c8656&#34;&gt;MAINTAINERS: add me as reviewer for sched_ext&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;christian-gmeiner&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f2a4bcb2532881655ee546305f2a4fc6e1399a3e&#34;&gt;drm/v3d: Use v3d_perfmon_find()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;guilherme-g-piccoli&#34;&gt;Guilherme G. Piccoli&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7d6094e62cc0e987bab01c4c3f7e3b613fb314d2&#34;&gt;Documentation: Improve crash_kexec_post_notifiers description&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5c1b544563005a00591a3aa86ecff62ed4d11be3&#34;&gt;wifi: rtlwifi: Drastically reduce the attempts to read efuse in case of failures&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cf1becb7f996a0a23ea2c270cf6bb0911ec3ca1a&#34;&gt;drm/v3d: Address race-condition in MMU flush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2fb8811108b2c1285c56f4fba4fff8fe3525593&#34;&gt;drm/v3d: Flush the MMU before we supply more memory to the binner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=56cf76ed784fe5347c9305f7f0f3d0f9cb8d8a3b&#34;&gt;drm/v3d: Fix return if scheduler initialization fails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0992b2541e1cd9580c2e70fab7a78558de054bae&#34;&gt;drm/gem: Create a drm_gem_object_init_with_mnt() function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb8d395f68421449c6201d3019f51011d034f00e&#34;&gt;drm/v3d: Introduce gemfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=be431dfec976e553a08883e26d0d0cc2598a8dfa&#34;&gt;drm/gem: Create shmem GEM object in a given mountpoint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8dd6074d4719644b676adf9f07d71292bee28e3a&#34;&gt;drm/v3d: Reduce the alignment of the node allocation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e4c17720262f394f6320a2b6e17a128bfdabb37c&#34;&gt;drm/v3d: Support Big/Super Pages when writing out PTEs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=20d69e8905fc36818ab585cb50f6de48fb8f6de3&#34;&gt;drm/v3d: Use gemfs/THP in BO creation if available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0df4a13ca8bed29cbc362c99b958fbb8b27b1675&#34;&gt;drm/v3d: Add modparam for turning off Big/Super Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f8e1c93a0d459463819d8bd222196b2655c279f&#34;&gt;drm/v3d: Expose Super Pages capability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=82fe69e63d2b5a5e86ea94c7361c833d3848ab69&#34;&gt;drm/vc4: Use &lt;code&gt;vc4_perfmon_find()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=522bb461b1335e5999fe30838b03f0cec6a721de&#34;&gt;MAINTAINERS: Add Maíra to VC4 reviewers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=949042811117d2f437ef6b529a69d45e2ee2d429&#34;&gt;mm: shmem: control THP support through the kernel command line&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1c8d48497525d77acfb7bdaaa246a887e754f379&#34;&gt;mm: move &lt;code&gt;get_order_from_str()&lt;/code&gt; to internal.h&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=24f9cd195fbc9382ae0ed8b332e6302d1722d8e0&#34;&gt;mm: shmem: override mTHP shmem default with a kernel parameter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=93c1e57adeb0aa7d3feedeb82ac19845cbe540de&#34;&gt;mm: huge_memory: use strscpy() instead of strcpy()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c98b10496b2f3c4f576af3482c71aadcfcbf765e&#34;&gt;drm/v3d: Enable Performance Counters before clearing them&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e4b5ccd392b92300a2b341705cc4805681094e49&#34;&gt;drm/v3d: Ensure job pointer is set to NULL after job completion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;melissa-wen&#34;&gt;Melissa Wen&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48edb2a4256eedf6c92eecf2bc7744e6ecb44b5e&#34;&gt;drm/amd/display: switch amdgpu_dm_connector to use struct drm_edid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f293c4544f74a428275e6fbf9b2b62587ced7f0&#34;&gt;drm/amd/display: switch to setting physical address directly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=abb91c545a51feb9ea871593dd819c42644f25ad&#34;&gt;drm/amd/display: always call connector_update when parsing freesync_caps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0159f88a99c9f5722dbe52ac42faf3446f371dea&#34;&gt;drm/amd/display: remove redundant freesync parser for DP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5605a0d363f1283e10985aa81000e63e5b783fc4&#34;&gt;drm/amd/display: add missing tracepoint event in DM atomic_commit_tail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7de8d5c90be9ad9f6575e818a674801db2ada794&#34;&gt;drm/amd/display: fix page fault due to max surface definition mismatch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21541bc6b44241e3f791f9e552352d8440b2b29e&#34;&gt;drm/amd/display: increase MAX_SURFACES to the value supported by hw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5225fd2a26211d012533acf98a6ad3f983885817&#34;&gt;drm/amd/display: fix divide error in DM plane scale calcs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;thadeu-lima-de-souza-cascardo&#34;&gt;Thadeu Lima de Souza Cascardo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3dd075fe8ebbc6fcbf998f81a75b8c4b159a6195&#34;&gt;media: uvcvideo: Require entities to have a non-zero unique ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1c82587cb57687de3f18ab4b98a8850c789bedcf&#34;&gt;hfsplus: don&amp;rsquo;t query the device logical block size multiple times&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b548f5e9456c568155499d9ebac675c0d7a296e8&#34;&gt;Bluetooth: btmtk: avoid UAF in btmtk_process_coredump&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=06c3c406850e5495bb56ccf624d0c9477e1ba901&#34;&gt;drm/v3d: Appease lockdep while updating GPU stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b37918090b2e84133c6eb9a1e227b2b7092d219e&#34;&gt;drm/sched: Add locking to drm_sched_entity_modify_sched&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2c04742b04ee35ab75ffdbf4fe1a6ef1792775af&#34;&gt;Documentation/gpu: Document the situation with unqualified drm-memory-&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fc282e9e8651842db8bd48d449566f4d3b82da9c&#34;&gt;drm/amdgpu: Drop unused fence argument from amdgpu_vmid_grab_used&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=04bdba46542c953e26f3ba4ac84dd65fbb4e7382&#34;&gt;drm/amdgpu: Use drm_print_memory_stats helper from fdinfo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=871f44b4ba74a676ef2f0528a3efc591346fa92a&#34;&gt;drm/amdgpu: Drop impossible condition from amdgpu_job_prepare_job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=89cfa73b612a711ad19c6323814f4d28535a0fca&#34;&gt;drm/amdgpu: Remove the while loop from amdgpu_job_prepare_job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d42a254633c773921884a19e8a1a0f53a31150c3&#34;&gt;drm/sched: Optimise drm_sched_entity_push_job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6a313579eac899b34dc40b0c342f5bd91e44a081&#34;&gt;drm/sched: Stop setting current entity in FIFO mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a6f46283e952fe50dea5f932a1e4f0b6b2370968&#34;&gt;drm/sched: Re-order struct drm_sched_rq members for clarity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f93126f5d55920d1447ef00a3fbe6706f40f53de&#34;&gt;drm/sched: Re-group and rename the entity run-queue lock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=134e71bd1edcc7252b64ca31efe88edfef86d784&#34;&gt;drm/sched: Further optimise drm_sched_entity_push_job&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0880f58f9609f0200483a49429af0f050d281703&#34;&gt;drm/amd/pm: Vangogh: Fix kernel memory out of bounds write&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cd3037f3fce5bf1556ad1a078cf458ebe52b12e8&#34;&gt;drm/amdgpu: Stop reporting special chip memory pools as CPU memory in fdinfo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=aa2ac51c8e1952ff95588d082e1a8b402c510ed0&#34;&gt;drm/amdgpu: Expose special on chip memory pools in fdinfo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=949291c5314009b4f6e252391edbb40fdd5d5414&#34;&gt;dma-fence: Fix reference leak on fence merge failure path&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fe52c649438b8489c9456681d93a9b3de3d38263&#34;&gt;dma-fence: Use kernel&amp;rsquo;s sort for merging fences&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=de35994ecd2dd6148ab5a6c5050a1670a04dec77&#34;&gt;workqueue: Do not warn when cancelling WQ_MEM_RECLAIM work from !WQ_MEM_RECLAIM worker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;reviewed-41&#34;&gt;Reviewed (41)&lt;/h2&gt;
&lt;h3 id=&#34;andré-almeida-1&#34;&gt;André Almeida&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=19298f48694987fac843261c84e24834c255b451&#34;&gt;futex: Use atomic64_inc_return() in get_inode_sequence_number()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=87347f148061b48c3495fb61dcbad384760da9cf&#34;&gt;futex: Use atomic64_try_cmpxchg_relaxed() in get_inode_sequence_number()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b071cc35469ea44392222fe8de69b431a0778a5f&#34;&gt;mm: shmem: use signed int for version handling in casefold option&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;christian-gmeiner-1&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=82fe69e63d2b5a5e86ea94c7361c833d3848ab69&#34;&gt;drm/vc4: Use &lt;code&gt;vc4_perfmon_find()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=13c96ac9a3f0f1c7ba1ff0656ea508e7fa065e7e&#34;&gt;drm/etnaviv: Request pages from DMA32 zone on addressing_limited&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=56257d4c422d0f45b1367145ffe1a1350d4338b6&#34;&gt;drm/etnaviv: Use unsigned type to count the number of pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c82e8b292c2a2a4e780677af895c6233ef5538b2&#34;&gt;drm/etnaviv: Use &amp;lsquo;unsigned&amp;rsquo; type to count the number of pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b09ccba779c8dd241c9254a4b5c062c51e6fa80d&#34;&gt;drm/etnaviv: Drop the &amp;lt;linux/pm_runtime.h&amp;gt; header&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=deadf1ef4adce096352489d1ef3721e43fa188bf&#34;&gt;drm/etnaviv: Fix missing mutex_destroy()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=37dc4737447a7667f8e9ec790dac251da057eb27&#34;&gt;drm/etnaviv: hold GPU lock across perfmon sampling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=67cb86039f8e2e29164b317d16756804e0deaa2a&#34;&gt;drm/etnaviv: assert GPU lock held in perfmon pipe_*_read functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ca0593a29e9ea2df17bf222a649a41bc16936255&#34;&gt;drm/etnaviv: unconditionally enable debug registers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=46864a690b92464063947420ad1a55e295b2004d&#34;&gt;drm/etnaviv: update hardware headers from rnndb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e1f3220b957a55a875d668f3e2fadd6315c8bbf4&#34;&gt;drm/etnaviv: take current primitive into account when checking for hung GPU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5a85670cfaaca6a88eb6ee23777e45de444e5967&#34;&gt;drm/etnaviv: always allocate 4K for kernel ringbuffers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f8dbadef085ab447a01a8d4806a3f629fea05ed&#34;&gt;drm/etnaviv: flush shader L1 cache after user commandstream&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;iago-toral-quiroga&#34;&gt;Iago Toral Quiroga&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cf1becb7f996a0a23ea2c270cf6bb0911ec3ca1a&#34;&gt;drm/v3d: Address race-condition in MMU flush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2fb8811108b2c1285c56f4fba4fff8fe3525593&#34;&gt;drm/v3d: Flush the MMU before we supply more memory to the binner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=56cf76ed784fe5347c9305f7f0f3d0f9cb8d8a3b&#34;&gt;drm/v3d: Fix return if scheduler initialization fails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb8d395f68421449c6201d3019f51011d034f00e&#34;&gt;drm/v3d: Introduce gemfs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8dd6074d4719644b676adf9f07d71292bee28e3a&#34;&gt;drm/v3d: Reduce the alignment of the node allocation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f8e1c93a0d459463819d8bd222196b2655c279f&#34;&gt;drm/v3d: Expose Super Pages capability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c98b10496b2f3c4f576af3482c71aadcfcbf765e&#34;&gt;drm/v3d: Enable Performance Counters before clearing them&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;jose-maria-casanova-crespo&#34;&gt;Jose Maria Casanova Crespo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e4b5ccd392b92300a2b341705cc4805681094e49&#34;&gt;drm/v3d: Ensure job pointer is set to NULL after job completion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;juan-a-suarez&#34;&gt;Juan A. Suarez&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=82fe69e63d2b5a5e86ea94c7361c833d3848ab69&#34;&gt;drm/vc4: Use &lt;code&gt;vc4_perfmon_find()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal-1&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f2a4bcb2532881655ee546305f2a4fc6e1399a3e&#34;&gt;drm/v3d: Use v3d_perfmon_find()&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=01c29dbf9dfdf0ba8527e559bc78804a3ce4075d&#34;&gt;drm/vc4: Run default client setup for all variants.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cf1c87d978d47339a39bfa7a6133ecd3f8f87525&#34;&gt;drm/vc4: Match drm_dev_enter and exit calls in vc4_hvs_lut_load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6b0bd1b02ea24b10522c92b2503981970b26d1a2&#34;&gt;drm/vc4: Match drm_dev_enter and exit calls in vc4_hvs_atomic_flush&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=42aa18d1c3e7762bcebd89a5857ed7774e669d92&#34;&gt;drm/vc4: Correct generation check in vc4_hvs_lut_load&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1d43dddd7c38ea1aa93f78f7ee10087afb0a561f&#34;&gt;drm/vkms: Drop unnecessary call to drm_crtc_cleanup()&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;tvrtko-ursulin-1&#34;&gt;Tvrtko Ursulin&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0992b2541e1cd9580c2e70fab7a78558de054bae&#34;&gt;drm/gem: Create a drm_gem_object_init_with_mnt() function&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=be431dfec976e553a08883e26d0d0cc2598a8dfa&#34;&gt;drm/gem: Create shmem GEM object in a given mountpoint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e4c17720262f394f6320a2b6e17a128bfdabb37c&#34;&gt;drm/v3d: Support Big/Super Pages when writing out PTEs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=20d69e8905fc36818ab585cb50f6de48fb8f6de3&#34;&gt;drm/v3d: Use gemfs/THP in BO creation if available&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0df4a13ca8bed29cbc362c99b958fbb8b27b1675&#34;&gt;drm/v3d: Add modparam for turning off Big/Super Pages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=56c594d8df64e726e803652ee9f4ab08659d4574&#34;&gt;drm: add DRM_SET_CLIENT_NAME ioctl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2c34a5464007c45142af009d13c668b0630ef9c0&#34;&gt;drm: use drm_file client_name in fdinfo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f2863650384b32f1a511e338f102b819044ca930&#34;&gt;drm/amdgpu: make drm-memory-* report resident memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=78ac1c3558810486d90aa533b0039aa70487a3da&#34;&gt;dma-buf: fix dma_fence_array_signaled v4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0cff90dec63da908fb16d9ea2872ebbcd2d18e6a&#34;&gt;dma-buf: Fix __dma_buf_debugfs_list_del argument for !CONFIG_DEBUG_FS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tested-1&#34;&gt;Tested (1)&lt;/h2&gt;
&lt;h3 id=&#34;christian-gmeiner-2&#34;&gt;Christian Gmeiner&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=72dc70a062f9faea178d674416d72a2596b69633&#34;&gt;drm/etnaviv: Replace the &amp;lsquo;&amp;amp;pdev-&amp;gt;dev&amp;rsquo; with &amp;lsquo;dev&amp;rsquo;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;acked-5&#34;&gt;Acked (5)&lt;/h2&gt;
&lt;h3 id=&#34;changwoo-min-1&#34;&gt;Changwoo Min&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cc26abb1a19adbb91b79d25a2e74976633ece429&#34;&gt;sched_ext: Rename &lt;code&gt;scx_bpf_dispatch[_vtime]()&lt;/code&gt; to &lt;code&gt;scx_bpf_dsq_insert[_vtime]()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5209c03c8ed215357a4827496a71fd32167d83ef&#34;&gt;sched_ext: Rename &lt;code&gt;scx_bpf_consume()&lt;/code&gt; to &lt;code&gt;scx_bpf_dsq_move_to_local()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5cbb302880f50f3edf35f8c6a1d38b6948bf4d11&#34;&gt;sched_ext: Rename &lt;code&gt;scx_bpf_dispatch[_vtime]_from_dsq*()&lt;/code&gt; -&amp;gt; &lt;code&gt;scx_bpf_dsq_move[_vtime]*()&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;maíra-canal-2&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65676a6fc0ab83cc368ec4fae0f55422ecb1464d&#34;&gt;MAINTAINERS: remove myself as a VKMS maintainer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=80fd814e93f10fe60d02d8a31c46718ff9e9edec&#34;&gt;MAINTAINERS: Add myself as VKMS Maintainer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;maintainer-sob-6&#34;&gt;Maintainer SoB (6)&lt;/h2&gt;
&lt;h3 id=&#34;maíra-canal-3&#34;&gt;Maíra Canal&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=65676a6fc0ab83cc368ec4fae0f55422ecb1464d&#34;&gt;MAINTAINERS: remove myself as a VKMS maintainer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=80fd814e93f10fe60d02d8a31c46718ff9e9edec&#34;&gt;MAINTAINERS: Add myself as VKMS Maintainer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e5eb6dcb3042adcda432a3498d0d62d91588c4d&#34;&gt;drm/vkms: Add documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b75feb312894f87d0539d46eeb364f447df723f&#34;&gt;drm/vkms: Suppress context imbalance detected by sparse warning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f7bd9d66e638e1ce4a20fea83c9d44c25c3dae8&#34;&gt;drm/vkms: Add missing check for CRTC initialization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d28292aa48d1917db39fac6bcdaf991ba0ed279f&#34;&gt;drm/v3d: Drop allocation of object without mountpoint&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Installing kernel modules faster with multithread XZ</title>
      <link>https://andrealmeid.com/post/2023-03-03-xz/</link>
      <pubDate>Fri, 03 Mar 2023 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2023-03-03-xz/</guid>
      <description>&lt;p&gt;As a kernel developer, everyday I need to compile and install custom kernels, and any improvement in this workflow means to be more productive. While installing my fresh compiled modules, I noticed that it would be stuck in &lt;code&gt;amdgpu&lt;/code&gt; compression for some time:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;XZ      /usr/lib/modules/6.2.0-tonyk/kernel/drivers/gpu/drm/amd/amdgpu/amdgpu.ko.xz
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;xz-format&#34;&gt;XZ format&lt;/h3&gt;
&lt;p&gt;My target machine is the Steam Deck, that uses &lt;code&gt;.xz&lt;/code&gt; for compressing the modules. Giving that we want gamers to be able to install as many games as possible, the OS shouldn&amp;rsquo;t waste much disk space. &lt;code&gt;amdgpu&lt;/code&gt;, when compiled with debug symbols can use a good hunk of space. Here&amp;rsquo;s the comparison of disk size of the module uncompressed, and then with &lt;code&gt;.zst&lt;/code&gt; and &lt;code&gt;.xz&lt;/code&gt; compression:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;360M amdgpu.ko
61M  amdgpu.ko.zst
38M  amdgpu.ko.xz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This more compact module comes with a cost: more CPU time for compression.&lt;/p&gt;
&lt;h3 id=&#34;multithread-compression&#34;&gt;Multithread compression&lt;/h3&gt;
&lt;p&gt;When I opened &lt;code&gt;htop&lt;/code&gt;, I saw that only a lonely thread was doing the hard work to compress &lt;code&gt;amdgpu&lt;/code&gt;, even that compression is a task easily parallelizable. I then hacked &lt;code&gt; scripts/Makefile.modinst&lt;/code&gt; so &lt;code&gt;XZ&lt;/code&gt; would use as many threads as possible, with the option &lt;code&gt;-T0&lt;/code&gt;. In my main build machine, &lt;code&gt;modules_install&lt;/code&gt; was running 4 times faster!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# before the patch
$ time make modules_install -j16
Executed in  100.08 secs

# after the patch
$ time make  modules_install -j16
Executed in   28.60 secs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Then, I submitted a patch to make this default for everyone: &lt;a href=&#34;https://lore.kernel.org/lkml/20230223001607.95523-1-andrealmeid@igalia.com/&#34;&gt;[PATCH] kbuild: modinst: Enable multithread xz compression&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;However, as Masahiro Yamada noticed, we shouldn&amp;rsquo;t be spawning numerous threads in the build system without the user request. Until today we specify manually how many threads we should run with &lt;code&gt;make -jX&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Hopefully, Nathan Chancellor suggested that the same results can be achieved using &lt;code&gt;XZ_OPT=-T0&lt;/code&gt;, so we still can benefit from this without the patch. I experimented with different &lt;code&gt;-TX&lt;/code&gt; and &lt;code&gt;-jY&lt;/code&gt; values, but in my notebook the most efficient values were &lt;code&gt;X = Y = nproc&lt;/code&gt;. You can check some results bellow:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ make modules_install
174.83 secs

$ make modules_install -j8
100.55 secs

$ make modules_install XZ_OPT=-T0
81.51 secs

$ make modules_install -j8 XZ_OPT=-T0
53.22 sec
&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    
    <item>
      <title>futex2 at Linux Plumbers Conference 2022</title>
      <link>https://andrealmeid.com/post/2022-09-22-lpc22/</link>
      <pubDate>Fri, 23 Sep 2022 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2022-09-22-lpc22/</guid>
      <description>&lt;p&gt;In-person conferences are finally back! After two years of remote conferences, the kernel development community got together in Dublin, Ireland, to discuss current problems that need collaboration to be solved.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;img src=&#34;https://andrealmeid.com/blog-pics/lpc22-talk.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;As in the past editions, I took the opportunity to discuss about &lt;strong&gt;futex2&lt;/strong&gt;, a project I&amp;rsquo;m deeply involved in. futex2 is a project to solve issues found in the current futex interface. This years&amp;rsquo; session was about NUMA awaress of futex. Currently, futex allocates a single hash table in the kernel to store all data. If this is done in a NUMA machine, the table is allocated in a single node. This increases the cost of futex operations when done from any other node, given that will need to access a memory outside of it&amp;rsquo;s node.&lt;/p&gt;
&lt;p&gt;To solve this, futex2 will allocate a table per NUMA node and have a NUMA-aware interface to tell the kernel which node to work on, using this struct:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; futexX_numa {
   __uX value;
   __sX hint;
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Where &lt;code&gt;X&lt;/code&gt; can be a range of values &lt;code&gt;[8, 16, 32, 64]&lt;/code&gt;, for each available futex size in futex2. &lt;code&gt;value&lt;/code&gt; is the futex value and &lt;code&gt;hint&lt;/code&gt; is the node where you want to operate on. It can be &lt;code&gt;-1&lt;/code&gt; for the current node or &lt;code&gt;[0, MAX_NUMNODES)&lt;/code&gt; to specify the node. So, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; futex32_numa f &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; {.value &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, .hint &lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;};

futex_wait(&lt;span style=&#34;color:#f92672&#34;&gt;&amp;amp;&lt;/span&gt;f, &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, FUTEX_NUMA &lt;span style=&#34;color:#f92672&#34;&gt;|&lt;/span&gt; FUTEX_32, NULL);
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The session was short, but very productive, with Peter Zijlstra and Thomas Gleixner  giving most feedback about the proposal. Here&amp;rsquo;s a list of ideas that were covered in the session and are to be consider when implementing this interface:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Userspace always initialize &lt;code&gt;.hint = -1&lt;/code&gt;. The kernel then overwrites &lt;code&gt;-1&lt;/code&gt; with the current node being used by &lt;strong&gt;the first waiter&lt;/strong&gt;. In that way, every following futex operation (wait or wake) will be guaranteed to be on the same node.&lt;/li&gt;
&lt;li&gt;After the last waiter is waked, &lt;code&gt;.hint&lt;/code&gt; can be set as &lt;code&gt;-1&lt;/code&gt; again.&lt;/li&gt;
&lt;li&gt;To avoid racing, any change to the &lt;code&gt;struct futex_numa&lt;/code&gt; needs to be done atomically for the whole structure.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;struct&lt;/code&gt; needs to have explicitly alignment and to be &lt;code&gt;__packed&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Benchmark data will for sure attracts reviewers and users. &lt;code&gt;perf bench&lt;/code&gt; is the right place to add that.&lt;/li&gt;
&lt;li&gt;The local hash table doesn&amp;rsquo;t need to be as big as is the global futex table, probably &lt;code&gt;num_possible_cpus()&lt;/code&gt; will be enough.&lt;/li&gt;
&lt;li&gt;Support for a &lt;code&gt;struct futex64_numa&lt;/code&gt; might be tricky, so we might just restrict for smaller sizes. &lt;code&gt;hint&lt;/code&gt; may be always &lt;code&gt;s16&lt;/code&gt; giving that &lt;code&gt;MAX_NUMNODES&lt;/code&gt; isn&amp;rsquo;t that huge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&#34;https://lpc.events/event/16/contributions/1306/attachments/1031/1977/futex2.pdf&#34;&gt;Here&lt;/a&gt; are my slides from this year. If you need any help with futex, you can get in touch with me &lt;a href=&#34;mailto:andrealmeid@igalia.com&#34;&gt;andrealmeid@igalia.com&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Apart from futex, there were other talks to highlight. As a trend in recent Plumber editions, Rust was once again a hot topic in the conference. From a single session at &lt;a href=&#34;https://lpc.events/event/7/contributions/804/&#34;&gt;LPC 2020&lt;/a&gt;, this year we had Rust in the main track, in the &lt;a href=&#34;https://lwn.net/Articles/908320/&#34;&gt;Maintainers Summit&lt;/a&gt; and its own &lt;a href=&#34;https://lpc.events/event/16/sessions/150/&#34;&gt;Microconference&lt;/a&gt;. The initial mistrust of adding a second language to the kernel is long gone, and now the conversations are around the final bits on how to get it merged (Will the patches go though the maintainers tree, or directly to Torvalds? Which Rust version to use? Stable or unstable?). This whole effort is a good showcase of the conference ability to join efforts from different companies, communities and projects along the stack (GCC, clang) to solve complex problems together. Oh, and if you are wondering, Rust will likely be available in &lt;a href=&#34;https://lwn.net/SubscriberLink/908347/da67a5162d1bc4a3/&#34;&gt;Linux 6.1 or 6.2&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From the GPU world we had &lt;a href=&#34;https://airlied.blogspot.com/2022/09/accelerators-bof-outcomes-summary.html&#34;&gt;a session&lt;/a&gt; to discuss how to deal with &lt;a href=&#34;https://lwn.net/Articles/870418/&#34;&gt;accelerator drivers&lt;/a&gt; in the kernel, as there&amp;rsquo;s some disagreement on how to accept (and where to accept) these new drivers. Along with that, &lt;a href=&#34;https://airlied.blogspot.com/2022/09/lpc-2022-gpu-bof-user-console-and.html&#34;&gt;a BoF&lt;/a&gt; to talk about getting a userspace console to be used in case the graphics stack crashes and how to get an implementation of cgroups for GPUs.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&#34;https://lpc.events/event/16/sessions/140/&#34;&gt;Kernel Testing &amp;amp; Dependability Microconference&lt;/a&gt; was a stage to get news from testing tools, like syzbot, kselftests, KernelCI and KUnit. There was some discussion on how to integrate all frameworks as well, given that there&amp;rsquo;s a lot of testing nowadays, but not much communication and deploying of all this. Last but not least, Tales Aparecida (my GSoC mentee) presented the challenges of using &lt;a href=&#34;https://lpc.events/event/16/contributions/1310/&#34;&gt;KUnit to test device drivers&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s it for 2022 edition. Thanks &lt;a href=&#34;https://igalia.com&#34;&gt;Igalia&lt;/a&gt; for sponsoring my travel to LPC and see ya next year!&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Keeping a project bisectable</title>
      <link>https://andrealmeid.com/post/2022-07-31-keep-bisect/</link>
      <pubDate>Thu, 04 Aug 2022 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2022-07-31-keep-bisect/</guid>
      <description>&lt;p&gt;People write code. Test coverage is never enough. Some angry contributor will
disable the CI. And we all write bugs.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;But that&amp;rsquo;s OK, it part of the job. Programming is hard and sometimes we may miss
a corner case, forget that numbers overflow and all other strange things that
computers can do.&lt;/p&gt;
&lt;p&gt;One easy thing that we can do to help the poor developer that needs to find
what changed in the code that stopped their printer to work properly, is to keep
the project bisectable.&lt;/p&gt;
&lt;p&gt;A &amp;ldquo;bisectable&amp;rdquo; project is a project where one can reliably run &lt;a href=&#34;https://git-scm.com/docs/git-bisect&#34;&gt;&lt;code&gt;git bisect&lt;/code&gt;&lt;/a&gt;, which is a very useful command
to find a commit that introduces a bug. It works doing a binary search in the
git history until finding the guilty commit. This process involves building
each step of the bisect and running a test on each build to check if it&amp;rsquo;s good
or bad (that you can magically automate with &lt;a href=&#34;https://git-scm.com/docs/git-bisect#_bisect_run&#34;&gt;&lt;code&gt;git bisect run&lt;/code&gt;&lt;/a&gt;).  The problem is, if
you can&amp;rsquo;t compile, you can&amp;rsquo;t tell if this commit is before or
after the bug (it can even be the culpable commit itself!). Then you need to
jump and try &lt;a href=&#34;https://git-scm.com/docs/git-bisect#_avoiding_testing_a_commit&#34;&gt;another commit&lt;/a&gt;
and hope that it will compile, making the process more painful. A lot of build
breakages along the commit history can easily discourage a brave bisecter.&lt;/p&gt;
&lt;h3 id=&#34;keep-it-buildable&#34;&gt;Keep it buildable&lt;/h3&gt;
&lt;p&gt;To make sure we keep the bisectability of a project, we just need to make sure
that &lt;strong&gt;every commit&lt;/strong&gt; is buildable. Sometimes we split a feature in a bunch of
cool commits but fail to see if they work as standalone changes. We can simply
do a interactive rebase, building it at each step:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;git rebase -i main --exec &amp;quot;make&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Replace &lt;code&gt;main&lt;/code&gt; with the reference that you want to build from and &lt;code&gt;make&lt;/code&gt; with
your fancy build system and ta-da, let the magic happen. If any of the steps
fails to build, the rebase stops (given that &amp;ldquo;any command that fails will
interrupt the rebase, with exit code 1&amp;rdquo;) so you can investigate what happened.&lt;/p&gt;
&lt;p&gt;Of course, there&amp;rsquo;s still some room for build breakages for different build
configurations, but if you always follow this practice before upstreaming your
patches you are building a better git log.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Discussion on &lt;a href=&#34;https://www.reddit.com/r/programming/comments/wg1ql3/keeping_a_project_bisectable/&#34;&gt;Reddit&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Discussion on &lt;a href=&#34;https://news.ycombinator.com/item?id=32342860&#34;&gt;Hacker News&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
</description>
    </item>
    
    <item>
      <title>Create an ArchLinux image for kernel testing</title>
      <link>https://andrealmeid.com/post/2020-03-10-bootstrap-arch/</link>
      <pubDate>Tue, 10 Mar 2020 00:00:00 +0000</pubDate>
      
      <guid>https://andrealmeid.com/post/2020-03-10-bootstrap-arch/</guid>
      <description>&lt;p&gt;In this tutorial, we&amp;rsquo;ll look on how to create a functional and simple ArchLinux
virtual machine image, that can access the internet, display graphical windows
and share a folder with the host to help you with your kernel development.
The only requirement is that you need to have a working ArchLinux installation.&lt;/p&gt;
&lt;p&gt;A virtual machine is useful in a lot of development scenarios, but it&amp;rsquo;s
particularly essential in the Linux kernel development. It can be really
time-consuming to install the kernel on your own system and then needing to
reboot the machine just to see if your &lt;code&gt;printk()&lt;/code&gt; is working. This is why this
topic was already covered in
&lt;a href=&#34;https://www.collabora.com/news-and-blog/&#34;&gt;Collabora&amp;rsquo;s blog&lt;/a&gt;,
with Ezequiel explaining how to use
&lt;a href=&#34;https://www.collabora.com/news-and-blog/blog/2018/09/18/virtme-the-kernel-developers-best-friend/&#34;&gt;virtme&lt;/a&gt;
and Frédéric showing how to setup a minimal
&lt;a href=&#34;https://www.collabora.com/news-and-blog/blog/2017/01/16/setting-up-qemu-kvm-for-kernel-development/&#34;&gt;Debian to use with QEMU-KVM&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As already said by my colleagues, there&amp;rsquo;s no need to install a complete system
from scratch, using a installation disc. If you&amp;rsquo;ve already used to Arch Linux,
you probably know that the distro slogan is
&lt;a href=&#34;https://wiki.archlinux.org/index.php/Arch_terminology#KISS&#34;&gt;&amp;ldquo;Keep it Simple, Stupid&amp;rdquo;&lt;/a&gt;. So let&amp;rsquo;s try not to suffer in order to get a kernel development environment.
It may seem to be complicated to achieve this, but once I explain all the
concepts behind it, you will notice how this is very customizable and easily
scriptable, so you can automate this part of your workflow.&lt;/p&gt;
&lt;p&gt;Since we&amp;rsquo;re going to work with two systems at the same time, let&amp;rsquo;s explicitly
state in which machine you should run the command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ &lt;span style=&#34;color:#75715e&#34;&gt;# for you real machine&lt;/span&gt;

&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ &lt;span style=&#34;color:#75715e&#34;&gt;# for the virtual machine&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;creating-a-disk&#34;&gt;Creating a disk&lt;/h2&gt;
&lt;p&gt;We will need a disk to store our new OS in. Hopefully, we have no need for a
physical device, a file will do the work. It&amp;rsquo;s up to you how much space you&amp;rsquo;ll
allocate, but I recommend a minimum of 4 GB. We&amp;rsquo;re going to create a 5GB sparse
file (a file that allocates space as needed) to be our disk, using the
&lt;code&gt;truncate&lt;/code&gt; command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ truncate -s 5G arch_disk.raw&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you check the size with &lt;code&gt;du -h arch_disk.raw&lt;/code&gt;, it&amp;rsquo;s going to say &lt;code&gt;0&lt;/code&gt;
(because we haven&amp;rsquo;t used it yet), but if you run &lt;code&gt;du -h --apparent-size arch_disk.raw&lt;/code&gt; you can see the maximum size the file may expand.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s add a file system at this file. This means that this file will be ready to
contain files and folders, and will contain the new file system as its data.
This will make our disk to look and behave as a single partition.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ mkfs.ext4 arch_disk.raw&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Since we have a file that represents a partition, we can mount it. Create a
directory to be the mounting point and mount it:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ mkdir mnt
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo mount arch_disk.raw mnt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;installing-archlinux&#34;&gt;Installing ArchLinux&lt;/h2&gt;
&lt;p&gt;Now that we have a disk, let&amp;rsquo;s place an initial system, just like when we are
installing Arch. Install these packages:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo pacman -S arch-install-scripts qemu&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The first package has some scripts that are really helpful to install ArchLinux
(e.g. &lt;code&gt;pacstrap&lt;/code&gt;, &lt;code&gt;arch-chroot&lt;/code&gt;) and the second one is the QEMU emulator.&lt;/p&gt;
&lt;p&gt;Just remember to check if you are using a nice mirror close to you on top of
your mirrorlist file (&lt;code&gt;/etc/pacman.d/mirrorlist&lt;/code&gt;). This will speedup your
download.&lt;/p&gt;
&lt;p&gt;Now, let&amp;rsquo;s transform that formatted partition into a functional system.
&lt;code&gt;pacstrap&lt;/code&gt; is wrapper for &lt;code&gt;pacman&lt;/code&gt; that will install in the first argument
(&lt;code&gt;mnt&lt;/code&gt;) the packages/groups (&lt;code&gt;base&lt;/code&gt;, &lt;code&gt;base-devel&lt;/code&gt;) and create the root
filesystem, with the appropriated folders (&lt;code&gt;lib&lt;/code&gt;, &lt;code&gt;dev&lt;/code&gt;, &lt;code&gt;tmp&lt;/code&gt;, &lt;code&gt;home&lt;/code&gt;, &amp;hellip;).
You may also take this step to add more packages that you would like to have
in the virtual environment, like &lt;code&gt;vim&lt;/code&gt; for instance. If you want to enable
internet access in the guest in the future, use this step to install the
&lt;code&gt;dhcpcd&lt;/code&gt; package. Just add then after &lt;code&gt;base-devel&lt;/code&gt; in the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo pacstrap mnt base base-devel&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro tip&lt;/strong&gt;: if your host system is up-to-date, you can use the flag &lt;code&gt;-c&lt;/code&gt; to
just copy the packages from your host to the guest, instead of downloading
them all again: &lt;code&gt;pacstrap -c mnt ...&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This will create the directory structure and install the basic packages. You can
navigate through &lt;code&gt;mnt/&lt;/code&gt; and see an entire file system there, and even change the
root to this new system:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo arch-chroot mnt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you use &lt;code&gt;ls&lt;/code&gt; and &lt;code&gt;pwd&lt;/code&gt; you will see that you are definitely in a guest
system, and not in your host machine anymore. If you use &lt;code&gt;uname -r&lt;/code&gt; you can see
the kernel version was installed on your host system:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ls
bin   dev  home  lib64	     mnt  proc	run   srv  tmp	var
boot etc  lib	 lost+found  opt  root	sbin  sys  usr
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ls home/
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ pwd
/
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ uname -r 4.20.7-arch1-1-ARCH&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Once inside, it can be useful to set a password for the root user with &lt;code&gt;passwd&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Use CTRL+D to exit from the guest and then &lt;code&gt;sudo umount mnt&lt;/code&gt; to umount the disk.
Let&amp;rsquo;s use a custom kernel now.&lt;/p&gt;
&lt;h2 id=&#34;using-qemu-and-your-kernel&#34;&gt;Using QEMU and your kernel&lt;/h2&gt;
&lt;p&gt;Now, for the next steps, you will need a compiled and functional Linux Kernel.
You already have one, since you are running a GNU/Linux distribution, but if you
still don&amp;rsquo;t have a custom kernel to make experiments, you can easily get one
like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ git clone --depth&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt; git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ cd linux
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ make x86_64_defconfig
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ make kvm_guest.config
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ make -j8&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;The goal of this article is not get in details on how to compile the kernel.
For more information, check the
&lt;a href=&#34;https://wiki.archlinux.org/index.php/Kernel/Traditional_compilation&#34;&gt;Arch wiki&lt;/a&gt;
article and have a look at
&lt;a href=&#34;https://nickdesaulniers.github.io/blog/2018/06/02/speeding-up-linux-kernel-builds-with-ccache/&#34;&gt;ccache&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The git command will clone Linus&amp;rsquo; tree source code of the kernel into your
machine. With the argument &lt;code&gt;--depth=1&lt;/code&gt;, you won&amp;rsquo;t clone all the commit history of
the kernel and the download will be faster. If you want to have the
history (which is advisable with you want to send patches to the project),
remove this argument. The &lt;code&gt;make ...config&lt;/code&gt; commands will create a basic kernel
with virtualization powers for x86_64 machines.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;make -j8&lt;/code&gt; can take some time and some CPU usage. The &lt;code&gt;-j8&lt;/code&gt; argument will create
8 jobs to compile the kernel, change it according to the number of threads in
your machine.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s play with QEMU. We are going to use a lot of flags and arguments, so let&amp;rsquo;s
check in details each one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-hda disk.raw&lt;/code&gt;: specify that the &lt;code&gt;arch_disk.raw&lt;/code&gt; file should be provided as the
first hard disk in the emulated system.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-m 4G&lt;/code&gt;: amount of RAM we are going to loan to the virtual machine.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-nographic&lt;/code&gt;: QEMU will run on the terminal instead of a graphical window.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-kernel linux/arch/x86_64/boot/bzImage&lt;/code&gt;: define the file where your
compressed kernel image is. You can also use the kernel installed on your
machine, it should be somewhere in &lt;code&gt;/boot/&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-smp 1&lt;/code&gt;: how many virtual CPUs QEMU will use.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-append &amp;quot;root=/dev/sda rw console=ttyS0 loglevel=5&amp;quot;&lt;/code&gt;: kernel parameters.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;root&lt;/code&gt; defines which disk/partition has the root file system. In our
case, it will be the first storage device&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;, the hard disk
&lt;code&gt;arch_disk.raw&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rw&lt;/code&gt; that we want to read and write to disk.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;console&lt;/code&gt; is to set the standard output of the kernel and of the PID 1.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;loglevel&lt;/code&gt; is to set how much log the kernel will output to the
console and 7 is the highest and it will display all the kernel messages
in the console prompt.
&lt;ul&gt;
&lt;li&gt;I don&amp;rsquo;t find the
&lt;a href=&#34;https://wiki.archlinux.org/index.php/Audit_framework&#34;&gt;Audit logs&lt;/a&gt; useful.
You can disable them with &lt;code&gt;audit=0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;You can learn more about kernel parameters in the
&lt;a href=&#34;https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html&#34;&gt;documentation&lt;/a&gt;;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--enable-kvm&lt;/code&gt;: this is to enable hardware acceleration to virtualization.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Feel free to change these parameters to suit your environment. Now run it all
together:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ qemu-system-x86_64 -hda arch_disk.raw -m 4G -nographic &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;        -kernel linux/.../bzImage &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;        -append &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;root=/dev/sda rw console=ttyS0 loglevel=5&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;        --enable-kvm&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;When the prompt displays archlinux login:, just type root and enter. Use &lt;code&gt;uname -r&lt;/code&gt; again to check which kernel you are running. When you are done, use CTRL+a
then x to exit:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;archlinux login: root
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ uname -r
5.0.0-rc1+&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&#34;auto-login&#34;&gt;Auto login&lt;/h3&gt;
&lt;p&gt;If you always use the root user, you may set to auto login using systemd. Type
&lt;code&gt;systemctl edit serial-getty@.service&lt;/code&gt; in the guest and a text editor will
open. Add those lines and in the next login you should be good:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;Service&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt;
ExecStart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;
ExecStart&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;-/usr/bin/agetty --autologin root --noclear %I $TERM&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;connecting-to-the-internet&#34;&gt;Connecting to the internet&lt;/h2&gt;
&lt;p&gt;You may want to install some packages on your virtual machine or perform some
network tests, but as it stands, you can&amp;rsquo;t reach the internet:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ping eff.org
ping: eff.org: Temporary failure in name resolution&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s use our host as a network bridge; login in our virtual machine with root
user and then:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ systemctl enable dhcpcd
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ systemctl start dhcpcd&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Every time your system boots, it&amp;rsquo;ll start to run a DHCP service and connects to
the internet using a &amp;ldquo;virtual wire&amp;rdquo; to the host.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ping eff.org
PING eff.org &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;173.239.79.196&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; 56&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;84&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt; bytes of data.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Due to the configuration of the NAT, you won&amp;rsquo;t get ping answers like
&lt;code&gt;64 bytes from vm1.eff.org (173.239.79.196): icmp_seq=1 ttl=46 time=197 ms&lt;/code&gt;.
However, since we managed to solve the DNS (since ping showed to us the IP
address of &lt;code&gt;eff.org&lt;/code&gt;), we are sure that we have internet connection.&lt;/p&gt;
&lt;h2 id=&#34;displaying-graphical-windows&#34;&gt;Displaying graphical windows&lt;/h2&gt;
&lt;p&gt;If you want to run graphical applications inside your virtual machine, you may
follow one of the methods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;QEMU display&lt;/strong&gt;: use QEMU display in graphical mode with a GUI compositor;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;SSH with XForwarding&lt;/strong&gt;: use your own terminal to SSH into the VM and then
display the content using your host&amp;rsquo;s display.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This can be useful to test some subsystems like DRM or V4L2. Keep in mind that
the performance won&amp;rsquo;t be the best and the functionality can be a bit buggy, so
I recommend using lightweight apps like &lt;code&gt;gstreamer&lt;/code&gt; and &lt;code&gt;ffmpeg&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;qemu-display&#34;&gt;QEMU display&lt;/h3&gt;
&lt;p&gt;The first difference here is that we&amp;rsquo;re going to remove the &lt;code&gt;-nographic&lt;/code&gt; argument
from QEMU. Run it now and it should open a new window.&lt;/p&gt;
&lt;p&gt;Now, make sure to have this module enabled at your kernel: &lt;code&gt;DRM_BOCHS&lt;/code&gt;, a driver
to help us displaying graphical content in QEMU. This means that if you open the
&lt;code&gt;.config&lt;/code&gt; file at your kernel source directory it should have this line:
&lt;code&gt;CONFIG_DRM_BOCHS=y&lt;/code&gt;. Remember to recompile the kernel each time you change it&amp;rsquo;s
configuration.&lt;/p&gt;
&lt;p&gt;We need software to manage the windows and display them on the screen, so we are
going to install a lightweight Wayland compositor,
&lt;a href=&#34;https://gitlab.freedesktop.org/wayland/weston&#34;&gt;weston&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ pacman -S weston xorg-server-xwayland xorg-fonts-type1 xorg-xclock&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Create a file &lt;code&gt;~/.config/weston.ini&lt;/code&gt; in guest and add this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;[&lt;/span&gt;core&lt;span style=&#34;color:#f92672&#34;&gt;]&lt;/span&gt; xwayland&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;true&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Run the weston command in guest, and the graphical interface should appear. You
can use your mouse to open the weston-terminal at the top left corner. If your
mouse is moving oddly, make sure your window zoom is set to the &amp;ldquo;Best fit&amp;rdquo;
option in the QEMU window bar. Inside the terminal, run &lt;code&gt;xclock&lt;/code&gt; and you should
be able to check the hours inside your virtual machine. When you&amp;rsquo;re done, you
can use Ctrl+Alt+Backspace to quit weston.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://andrealmeid.com/blog-pics/xclock-weston.png&#34; alt=&#34;Screen capture showing xclock inside weston&#34;&gt;
&lt;em&gt;Screen capture showing &lt;code&gt;xclock&lt;/code&gt; inside weston&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is just the basic setup using QEMU graphical mode. To improve performance
and usability (like to have clipboard and multimonitor support) one can use a
QEMU front end (like &lt;code&gt;virt-manager&lt;/code&gt;) or SPICE to expand your options and features
between guest and host. Check the ArchWiki to learn more about
&lt;a href=&#34;https://wiki.archlinux.org/index.php/QEMU#Graphic_card&#34;&gt;virtual graphic cards&lt;/a&gt;,
&lt;a href=&#34;https://wiki.archlinux.org/index.php/QEMU/Guest_graphics_acceleration&#34;&gt;graphics acceleration&lt;/a&gt; and
&lt;a href=&#34;https://wiki.archlinux.org/index.php/QEMU#SPICE&#34;&gt;SPICE&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;xforwarding&#34;&gt;XForwarding&lt;/h3&gt;
&lt;p&gt;This is a way to display graphical interfaces running in a remote host in the
local machine. This means that the X server on your guest machine will forward
the graphical input/output to the X client on your host machine. You can keep
the argument &lt;code&gt;-nographic&lt;/code&gt; in QEMU. Let&amp;rsquo;s get some packages that will help us (you
need to install xorg-auth in both machines, the host and guest):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo pacman -S xorg-xauth&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ pacman -S xorg-xauth xorg-xclock openssh xorg-fonts-type1&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;As in the last section, our goal here is to run the application xclock, a simple
graphical clock as a proof of concept. If you try to run it now, this should
happen:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ xclock Error: Can&lt;span style=&#34;color:#960050;background-color:#1e0010&#34;&gt;&amp;#39;&lt;/span&gt;t open display:&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;That&amp;rsquo;s why we are going to use SSH, to help us get the graphical output. The
default TCP port of SSH is 22, but probably your localhost already has reserved
this port. Besides this, the IP address QEMU gives to your VM usually isn&amp;rsquo;t
routable. So, let&amp;rsquo;s map our guest &lt;code&gt;22&lt;/code&gt; to another port, let&amp;rsquo;s say &lt;code&gt;1337&lt;/code&gt;, and
expose this port using the &lt;code&gt;hostfwd&lt;/code&gt; option. This can be done with these
additional QEMU flags:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-net nic&lt;/code&gt;: creates a basic network card;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-net user,hostfwd=tcp::1337-:22&lt;/code&gt;: maps port host&amp;rsquo;s &lt;code&gt;1337&lt;/code&gt; to guest&amp;rsquo;s &lt;code&gt;22&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you try to access the machine now via ssh (with QEMU running with this new
parameters), it won&amp;rsquo;t be possible yet:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ssh root@localhost -p &lt;span style=&#34;color:#ae81ff&#34;&gt;1337&lt;/span&gt; ssh_exchange_identification: read: Connection
reset by peer&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;In the guest, if you run &lt;code&gt;systemctl status sshd&lt;/code&gt;, you can see that it isn&amp;rsquo;t
running. Let&amp;rsquo;s configure sshd before running it. Let&amp;rsquo;s edit &lt;strong&gt;guest&amp;rsquo;s&lt;/strong&gt;
&lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt; to ensure that you have those lines uncommented and edited:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;PermitRootLogin yes &lt;span style=&#34;color:#75715e&#34;&gt;# allows root login with password via ssh&lt;/span&gt;
X11Forwarding yes &lt;span style=&#34;color:#75715e&#34;&gt;# allows XForwarding&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s configure sshd to run at boot and to start now:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ systemctl enable sshd
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ systemctl start sshd
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ systemctl status sshd
* sshd.service - OpenSSH Daemon
     Loaded: loaded &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
     Active: active &lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;running&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;
     ...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To have access to the guest without using a password every time, you can
place your SSH public key inside the file &lt;code&gt;~/.ssh/authorized_keys&lt;/code&gt;. You can
copy and paste your key in this file while the guest machine is running, or
you can mount the guest rootfs and write in the file, like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ &lt;span style=&#34;color:#75715e&#34;&gt;# Stop guest machine using CTRL+A, X&lt;/span&gt;
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo mount arch_disk.raw mnt
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo su
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;root-host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ cat /home/user/.ssh/id_rsa.pub &amp;gt; mnt/root/.ssh/authorized_keys
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;root-host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ exit
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ sudo umount mnt&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Start the virtual machine again and, with a second terminal session, try to
login:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ssh root@localhost -p &lt;span style=&#34;color:#ae81ff&#34;&gt;1337&lt;/span&gt;
Last login: Mon Feb &lt;span style=&#34;color:#ae81ff&#34;&gt;18&lt;/span&gt; 17:57:15 &lt;span style=&#34;color:#ae81ff&#34;&gt;2019&lt;/span&gt; from 10.0.2.2
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can use &lt;code&gt;exit&lt;/code&gt; command to close the session. If you don&amp;rsquo;t have a
&lt;code&gt;.Xauthority&lt;/code&gt; file on your home folder, it will prompt a warning, but don&amp;rsquo;t
worry: after the warning, the file will be created. Access the virtual machine
using ssh with the argument &lt;code&gt;-X&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ssh -X root@localhost -p &lt;span style=&#34;color:#ae81ff&#34;&gt;1337&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And check the hours with &lt;code&gt;xclock&lt;/code&gt;! To exit, you can also use CTRL+D.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://andrealmeid.com/blog-pics/xclock-ssh.png&#34; alt=&#34;Screen capture showing xclock with XForwarding&#34;&gt;
&lt;em&gt;Screen capture showing xclock with XForwarding&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;shared-folder-between-host-and-guest&#34;&gt;Shared folder between host and guest&lt;/h2&gt;
&lt;p&gt;Copy-pasting is definitely not the best way to send a file to your guest
machine. Hopefully, we can easily solve this problem by sharing a folder between
machines.&lt;/p&gt;
&lt;p&gt;If you ran &lt;code&gt;make x86_64_defconfig&lt;/code&gt; and &lt;code&gt;make kvmconfig&lt;/code&gt; before the kernel
compilation, you should already have the required modules enabled. If you get
errors, please make sure your kernel has the following options enabled:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ grep &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;VIRTIO_PCI=\|NET_9P=\|9P_FS=\|NET_9P_V\|IG_PCI=&amp;#39;&lt;/span&gt; .config
CONFIG_NET_9P&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;y
CONFIG_NET_9P_VIRTIO&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;y
CONFIG_PCI&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;y
CONFIG_VIRTIO_PCI&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;y
CONFIG_9P_FS&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;y&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If something looks like &lt;code&gt;# CONFIG_XXX is not set&lt;/code&gt;, you should enable it.&lt;/p&gt;
&lt;p&gt;Now, elect a folder to be your shared holder, for example &lt;code&gt;/home/user/shared&lt;/code&gt;.
Then, we need to add more arguments to our QEMU command:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-fsdev local,id=fs1,path=/home/user/shared,security_model=none&lt;/code&gt;: this will
add a new file system device to our emulation. Make sure to put the right
directory at path. Don&amp;rsquo;t worry about &lt;code&gt;security_model=none&lt;/code&gt;, this argument will
let the permission of creating/modifying files inside the guest as if was
created by the host user.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-device virtio-9p-pci,fsdev=fs1,mount_tag=shared_folder&lt;/code&gt;: this defines the
name and type of the virtual device.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We need to edit our guest &lt;code&gt;/etc/fstab&lt;/code&gt;. It should look like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#75715e&#34;&gt;# Static information about the filesystems.&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# See fstab(5) for details.&lt;/span&gt;
&lt;span style=&#34;color:#75715e&#34;&gt;# &amp;lt;file system&amp;gt; &amp;lt;dir&amp;gt; &amp;lt;type&amp;gt; &amp;lt;options&amp;gt; &amp;lt;dump&amp;gt; &amp;lt;pass&amp;gt;&lt;/span&gt;
shared_folder /root/host_folder 9p trans&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;virtio &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This determines the mounting pointing of the shared folder. As long you are
consistent, you can choose whatever name for &lt;code&gt;shared_folder&lt;/code&gt; and &lt;code&gt;host_folder&lt;/code&gt;.
Reboot the guest machine and then:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ ls /root/
host_folder&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&#34;adding-a-new-user&#34;&gt;Adding a new user&lt;/h2&gt;
&lt;p&gt;For some testing or actions, it&amp;rsquo;s maybe useful to have a regular user, that is
not the root one. For instance, &lt;code&gt;makepkg&lt;/code&gt; refuses to run as root for safety
reasons. The following commands should be used in the guest. Use &lt;code&gt;useradd -m user -G wheel&lt;/code&gt; to create a new user with the name &lt;code&gt;user&lt;/code&gt;, with a home directory
and part of group &lt;code&gt;wheel&lt;/code&gt;. You can set a password for it using &lt;code&gt;passwd user&lt;/code&gt;.
To use this account, just type &lt;code&gt;su user&lt;/code&gt;. If you want to login to this user
from SSH, remember to add the public key to &lt;code&gt;/home/user/.ssh/authorized_keys&lt;/code&gt;.
If you want to be able to run any &lt;code&gt;sudo&lt;/code&gt; command without typing password, run
as root user &lt;code&gt;visudo&lt;/code&gt; and uncomment the line that says &lt;code&gt;%wheel ALL=(ALL) NOPASSWD: ALL&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You may also want your kernel to have a custom name, it may be useful for you to
organize your versions. You can do this changing the &lt;code&gt;LOCALVERSION&lt;/code&gt; value at
&lt;code&gt;menuconfig&lt;/code&gt; or simply running &lt;code&gt;make LOCALVERSION=&lt;/code&gt;, e.g.:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ make LOCALVERSION&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;-VM ...
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;host&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ qemu-system-x86_64 ...
&lt;span style=&#34;color:#f92672&#34;&gt;(&lt;/span&gt;guest&lt;span style=&#34;color:#f92672&#34;&gt;)&lt;/span&gt;$ uname -r
5.0.0-rc1-VM&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now you can easily hack and test your kernel! I recommend you read this section
of the ArchWiki, as you&amp;rsquo;ll find some cool tips to improve your VM performance.
You may also want to create scripts and alias to not deal with all the flags,
that will definitively make your life easier.&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;This content was originally posted at
&lt;a href=&#34;https://www.collabora.com/news-and-blog/blog/2019/03/20/bootstraping-a-minimal-arch-linux-image/&#34;&gt;Collabora&amp;rsquo;s blog&lt;/a&gt;
, as part of my Software Engineer job. It was slight updated and edited before
being posted here.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;section class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34; role=&#34;doc-endnote&#34;&gt;
&lt;p&gt;The observant will notice that the argument used by QEMU to specify the
first drive is &lt;code&gt;hda&lt;/code&gt;, which results in the kernel enumerating a drive as &lt;code&gt;sda&lt;/code&gt;.
Historically IDE drives were labelled &lt;code&gt;hdX&lt;/code&gt; (where &lt;code&gt;X&lt;/code&gt; is an increasing drive
letter), but for quite a while it has been typical for IDE
drives to be accessed via an emulation layer in the SCSI subsystem, which labels
drive &lt;code&gt;sdX&lt;/code&gt;. Also in contrast to how most physical hard drives are used, we have
not created a boot partition and partitions in the virtual drive, instead
treating the whole device as a partition, and thus lacking the numerical suffix
we would typically see when referring to specific partitions. &lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</description>
    </item>
    
  </channel>
</rss>
