<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in register.rs</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>0fc8f6200d2313278fbf4539bbab74677c685531 - Merge drm/drm-fixes into drm-misc-fixes</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#0fc8f6200d2313278fbf4539bbab74677c685531</link>
        <description>Merge drm/drm-fixes into drm-misc-fixesGetting fixes and updates from v7.1-rc1.Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Mon, 27 Apr 2026 10:26:49 +0200</pubDate>
        <dc:creator>Thomas Zimmermann &lt;tzimmermann@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>4793dae01f47754e288cdbb3a22581cac2317f2b - Merge tag &apos;driver-core-7.1-rc1&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#4793dae01f47754e288cdbb3a22581cac2317f2b</link>
        <description>Merge tag &apos;driver-core-7.1-rc1&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-corePull driver core updates from Danilo Krummrich: &quot;debugfs:   - Fix NULL pointer dereference in debugfs_create_str()   - Fix misplaced EXPORT_SYMBOL_GPL for debugfs_create_str()   - Fix soundwire debugfs NULL pointer dereference from uninitialized     firmware_file  device property:   - Make fwnode flags modifications thread safe; widen the field to     unsigned long and use set_bit() / clear_bit() based accessors   - Document how to check for the property presence  devres:   - Separate struct devres_node from its &quot;subclasses&quot; (struct devres,     struct devres_group); give struct devres_node its own release and     free callbacks for per-type dispatch   - Introduce struct devres_action for devres actions, avoiding the     ARCH_DMA_MINALIGN alignment overhead of struct devres   - Export struct devres_node and its init/add/remove/dbginfo     primitives for use by Rust Devres&lt;T&gt;   - Fix missing node debug info in devm_krealloc()   - Use guard(spinlock_irqsave) where applicable; consolidate unlock     paths in devres_release_group()  driver_override:   - Convert PCI, WMI, vdpa, s390/cio, s390/ap, and fsl-mc to the     generic driver_override infrastructure, replacing per-bus     driver_override strings, sysfs attributes, and match logic; fixes a     potential UAF from unsynchronized access to driver_override in bus     match() callbacks   - Simplify __device_set_driver_override() logic  kernfs:   - Send IN_DELETE_SELF and IN_IGNORED inotify events on kernfs file     and directory removal   - Add corresponding selftests for memcg  platform:   - Allow attaching software nodes when creating platform devices via a     new &apos;swnode&apos; field in struct platform_device_info   - Add kerneldoc for struct platform_device_info  software node:   - Move software node initialization from postcore_initcall() to     driver_init(), making it available early in the boot process   - Move kernel_kobj initialization (ksysfs_init) earlier to support     the above   - Remove software_node_exit(); dead code in a built-in unit  SoC:   - Introduce of_machine_read_compatible() and of_machine_read_model()     OF helpers and export soc_attr_read_machine() to replace direct     accesses to of_root from SoC drivers; also enables     CONFIG_COMPILE_TEST coverage for these drivers  sysfs:   - Constify attribute group array pointers to     &apos;const struct attribute_group *const *&apos; in sysfs functions,     device_add_groups() / device_remove_groups(), and struct class  Rust:   - Devres:      - Embed struct devres_node directly in Devres&lt;T&gt; instead of going        through devm_add_action(), avoiding the extra allocation and the        unnecessary ARCH_DMA_MINALIGN alignment   - I/O:      - Turn IoCapable from a marker trait into a functional trait        carrying the raw I/O accessor implementation (io_read /        io_write), providing working defaults for the per-type Io        methods      - Add RelaxedMmio wrapper type, making relaxed accessors usable in        code generic over the Io trait      - Remove overloaded per-type Io methods and per-backend macros        from Mmio and PCI ConfigSpace   - I/O (Register):      - Add IoLoc trait and generic read/write/update methods to the Io        trait, making I/O operations parameterizable by typed locations      - Add register! macro for defining hardware register types with        typed bitfield accessors backed by Bounded values; supports        direct, relative, and array register addressing      - Add write_reg() / try_write_reg() and LocatedRegister trait      - Update PCI sample driver to demonstrate the register! macro         Example:         ```             register! {                 /// UART control register.                 CTRL(u32) @ 0x18 {                     /// Receiver enable.                     19:19   rx_enable =&gt; bool;                     /// Parity configuration.                     14:13   parity ?=&gt; Parity;                 }                 /// FIFO watermark and counter register.                 WATER(u32) @ 0x2c {                     /// Number of datawords in the receive FIFO.                     26:24   rx_count;                     /// RX interrupt threshold.                     17:16   rx_water;                 }             }             impl WATER {                 fn rx_above_watermark(&amp;self) -&gt; bool {                     self.rx_count() &gt; self.rx_water()                 }             }             fn init(bar: &amp;pci::Bar&lt;BAR0_SIZE&gt;) {                 let water = WATER::zeroed()                     .with_const_rx_water::&lt;1&gt;(); // &gt; 3 would not compile                 bar.write_reg(water);                 let ctrl = CTRL::zeroed()                     .with_parity(Parity::Even)                     .with_rx_enable(true);                 bar.write_reg(ctrl);             }             fn handle_rx(bar: &amp;pci::Bar&lt;BAR0_SIZE&gt;) {                 if bar.read(WATER).rx_above_watermark() {                     // drain the FIFO                 }             }             fn set_parity(bar: &amp;pci::Bar&lt;BAR0_SIZE&gt;, parity: Parity) {                 bar.update(CTRL, |r| r.with_parity(parity));             }         ```   - IRQ:      - Move &apos;static bounds from where clauses to trait declarations for        IRQ handler traits   - Misc:      - Enable the generic_arg_infer Rust feature      - Extend Bounded with shift operations, single-bit bool        conversion, and const get()  Misc:   - Make deferred_probe_timeout default a Kconfig option   - Drop auxiliary_dev_pm_ops; the PM core falls back to driver PM     callbacks when no bus type PM ops are set   - Add conditional guard support for device_lock()   - Add ksysfs.c to the DRIVER CORE MAINTAINERS entry   - Fix kernel-doc warnings in base.h   - Fix stale reference to memory_block_add_nid() in documentation&quot;* tag &apos;driver-core-7.1-rc1&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core: (67 commits)  bus: fsl-mc: use generic driver_override infrastructure  s390/ap: use generic driver_override infrastructure  s390/cio: use generic driver_override infrastructure  vdpa: use generic driver_override infrastructure  platform/wmi: use generic driver_override infrastructure  PCI: use generic driver_override infrastructure  driver core: make software nodes available earlier  software node: remove software_node_exit()  kernel: ksysfs: initialize kernel_kobj earlier  MAINTAINERS: add ksysfs.c to the DRIVER CORE entry  drivers/base/memory: fix stale reference to memory_block_add_nid()  device property: Document how to check for the property presence  soundwire: debugfs: initialize firmware_file to empty string  debugfs: fix placement of EXPORT_SYMBOL_GPL for debugfs_create_str()  debugfs: check for NULL pointer in debugfs_create_str()  driver core: Make deferred_probe_timeout default a Kconfig option  driver core: simplify __device_set_driver_override() clearing logic  driver core: auxiliary bus: Drop auxiliary_dev_pm_ops  device property: Make modifications of fwnode &quot;flags&quot; thread safe  rust: devres: embed struct devres_node directly  ...

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Tue, 14 Apr 2026 04:03:11 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>9bdbf7eb25b3121ef19533df4fb70f2c39fc0d6a - Merge tag &apos;drm-rust-next-2026-03-30&apos; of https://gitlab.freedesktop.org/drm/rust/kernel into drm-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#9bdbf7eb25b3121ef19533df4fb70f2c39fc0d6a</link>
        <description>Merge tag &apos;drm-rust-next-2026-03-30&apos; of https://gitlab.freedesktop.org/drm/rust/kernel into drm-nextDRM Rust changes for v7.1-rc1- DMA:  - Rework the DMA coherent API: introduce Coherent&lt;T&gt; as a generalized    container for arbitrary types, replacing the slice-only    CoherentAllocation&lt;T&gt;. Add CoherentBox for memory initialization    before exposing a buffer to hardware (converting to Coherent when    ready), and CoherentHandle for allocations without kernel mapping.  - Add Coherent::init() / init_with_attrs() for one-shot initialization    via pin-init, and from-slice constructors for both Coherent and    CoherentBox  - Add uaccess write_dma() for copying from DMA buffers to userspace    and BinaryWriter support for Coherent&lt;T&gt;- DRM:  - Add GPU buddy allocator abstraction  - Add DRM shmem GEM helper abstraction  - Allow drm::Device to dispatch work and delayed work items to driver    private data  - Add impl_aref_for_gem_obj!() macro to reduce GEM refcount    boilerplate, and introduce DriverObject::Args for constructor    context  - Add dma_resv_lock helper and raw_dma_resv() accessor on GEM objects  - Clean up imports across the DRM module- I/O:  - Merged via a signed tag from the driver-core tree: register!() macro    and I/O infrastructure improvements (IoCapable refactor, RelaxedMmio    wrapper, IoLoc trait, generic accessors, write_reg /    LocatedRegister)- Nova (Core):  - Fix and harden the GSP command queue: correct write pointer    advancing, empty slot handling, and ring buffer indexing; add mutex    locking and make Cmdq a pinned type; distinguish wait vs no-wait    commands  - Add support for large RPCs via continuation records, splitting    oversized commands across multiple queue slots  - Simplify GSP sequencer and message handling code: remove unused    trait and Display impls, derive Debug and Zeroable where applicable,    warn on unconsumed message data  - Refactor Falcon firmware handling: create DMA objects lazily, add    PIO upload support, and use the Generic Bootloader to boot FWSEC on    Turing  - Convert all register definitions (PMC, PBUS, PFB, GC6, FUSE, PDISP,    Falcon) to the kernel register!() macro; add bounded_enum macro to    define enums usable as register fields  - Migrate all DMA usage to the new Coherent, CoherentBox, and    CoherentHandle APIs  - Harden firmware parsing with checked arithmetic throughout FWSEC,    Booter, RISC-V parsing paths  - Add debugfs support for reading GSP-RM log buffers; replace    module_pci_driver!() with explicit module init to support    module-level debugfs setup  - Fix auxiliary device registration for multi-GPU systems  - Various cleanups: import style, firmware parsing refactoring,    framebuffer size logging- Rust:  - Add interop::list module providing a C linked list interface  - Extend num::Bounded with shift operations, into_bool(), and const    get() to support register bitfield manipulation  - Enable the generic_arg_infer Rust feature and add EMSGSIZE error    code- Tyr:  - Adopt vertical import style per kernel Rust guidelines  - Clarify driver/device type names and use DRM device type alias    consistently across the driver  - Fix GPU model/version decoding in GpuInfo- Workqueue:  - Add ARef&lt;T&gt; support for work and delayed workSigned-off-by: Dave Airlie &lt;airlied@redhat.com&gt;From: &quot;Danilo Krummrich&quot; &lt;dakr@kernel.org&gt;Link: https://patch.msgid.link/DHGH4BLT03BU.ZJH5U52WE8BY@kernel.org

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Tue, 31 Mar 2026 23:20:59 +0200</pubDate>
        <dc:creator>Dave Airlie &lt;airlied@redhat.com&gt;</dc:creator>
    </item>
<item>
        <title>d19ab42867ae7c68be84ed957d95712b7934773f - Merge tag &apos;rust_io-7.1-rc1&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core into drm-rust-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#d19ab42867ae7c68be84ed957d95712b7934773f</link>
        <description>Merge tag &apos;rust_io-7.1-rc1&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/driver-core/driver-core into drm-rust-nextRegister abstraction and I/O infrastructure improvementsIntroduce the register!() macro to define type-safe I/O registeraccesses. Refactor the IoCapable trait into a functional trait, whichsimplifies I/O backends and removes the need for overloaded Io methods.This is a stable tag for other trees to merge.Signed-off-by: Danilo Krummrich &lt;dakr@kernel.org&gt;

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Tue, 17 Mar 2026 20:13:16 +0100</pubDate>
        <dc:creator>Danilo Krummrich &lt;dakr@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>de25dc008ea74bc6f33b8d6e773e51a920813fdc - Merge tag &apos;rust_io-7.1-rc1&apos; into driver-core-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#de25dc008ea74bc6f33b8d6e773e51a920813fdc</link>
        <description>Merge tag &apos;rust_io-7.1-rc1&apos; into driver-core-nextRegister abstraction and I/O infrastructure improvementsIntroduce the register!() macro to define type-safe I/O registeraccesses. Refactor the IoCapable trait into a functional trait, whichsimplifies I/O backends and removes the need for overloaded Io methods.This is a stable tag for other trees to merge.Signed-off-by: Danilo Krummrich &lt;dakr@kernel.org&gt;

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Tue, 17 Mar 2026 20:11:03 +0100</pubDate>
        <dc:creator>Danilo Krummrich &lt;dakr@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>9a52a8f5ed97d47c9641248874f4c6a78e136d97 - rust: io: introduce `write_reg` and `LocatedRegister`</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#9a52a8f5ed97d47c9641248874f4c6a78e136d97</link>
        <description>rust: io: introduce `write_reg` and `LocatedRegister`Some I/O types, like fixed address registers, carry their locationalongside their values. For these types, the regular `Io::write` methodcan lead into repeating the location information twice: once to providethe location itself, another time to build the value.We are also considering supporting making all register values carrytheir full location information for convenience and safety.Add a new `Io::write_reg` method that takes a single argumentimplementing `LocatedRegister`, a trait that decomposes implementorsinto a `(location, value)` tuple. This allows write operations on fixedoffset registers to be done while specifying their name only once.Suggested-by: Danilo Krummrich &lt;dakr@kernel.org&gt;Link: https://lore.kernel.org/all/DH0XBLXZD81K.22SWIZ1ZAOW1@kernel.org/Signed-off-by: Alexandre Courbot &lt;acourbot@nvidia.com&gt;Link: https://patch.msgid.link/20260314-register-v9-8-86805b2f7e9d@nvidia.com[ Replace FIFO with VERSION register in the examples. - Danilo ]Signed-off-by: Danilo Krummrich &lt;dakr@kernel.org&gt;

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Sat, 14 Mar 2026 02:06:18 +0100</pubDate>
        <dc:creator>Alexandre Courbot &lt;acourbot@nvidia.com&gt;</dc:creator>
    </item>
<item>
        <title>20ba6a1dbcb957152f6d858015b3a3311dd6da49 - rust: io: add `register!` macro</title>
        <link>http://kernelsources.org:8080/source/history/linux/rust/kernel/io/register.rs#20ba6a1dbcb957152f6d858015b3a3311dd6da49</link>
        <description>rust: io: add `register!` macroAdd a macro for defining hardware register types with I/O accessors.Each register field is represented as a `Bounded` of the appropriate bitwidth, ensuring field values are never silently truncated.Fields can optionally be converted to/from custom types, either falliblyor infallibly.The address of registers can be direct, relative, or indexed, supportingmost of the patterns in which registers are arranged.Suggested-by: Danilo Krummrich &lt;dakr@kernel.org&gt;Link: https://lore.kernel.org/all/20250306222336.23482-6-dakr@kernel.org/Co-developed-by: Gary Guo &lt;gary@garyguo.net&gt;Signed-off-by: Gary Guo &lt;gary@garyguo.net&gt;Signed-off-by: Alexandre Courbot &lt;acourbot@nvidia.com&gt;Link: https://patch.msgid.link/20260314-register-v9-7-86805b2f7e9d@nvidia.com[ * Improve wording and formatting of doc-comments,  * Import build_assert!(),  * Add missing inline annotations,  * Call static_assert!() with absolute path,  * Use expect instead of allow.    - Danilo ]Signed-off-by: Danilo Krummrich &lt;dakr@kernel.org&gt;

            List of files:
            /linux/rust/kernel/io/register.rs</description>
        <pubDate>Sat, 14 Mar 2026 02:06:17 +0100</pubDate>
        <dc:creator>Alexandre Courbot &lt;acourbot@nvidia.com&gt;</dc:creator>
    </item>
</channel>
</rss>
