<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in arm</title>
    <link>http://nxr.netbsd.org/rss/src/sys/arch/arm/</link>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2005</copyright>
    <generator>Java</generator>
    
<item>
    <title>gicv3: don't wait for RWP to clear when unblocking irqs<br/><br/>The RWP bit does not track writes to ISENABLER&lt;n&gt;, only ICENABLER&lt;n&gt;. So<br/>don't bother waiting for it to clear when unblocking IRQs.<br/><br/>This is ok; pic_block_irqs is expected to be synchronous (no IRQs allowed<br/>after the call) but not pic_unblock_irqs (some time can pass before an IRQ<br/>is raised).</title>
    <description></description>
    <pubDate>Sun Sep 13 15:00:00 UTC 2026</pubDate>
    <dc:creator>jmcneill</dc:creator>
</item>

<item>
    <title>Enable sdhc on Google i.MX8MQ Phanbell</title>
    <description></description>
    <pubDate>Fri Sep 11 01:00:00 UTC 2026</pubDate>
    <dc:creator>rxg</dc:creator>
</item>

<item>
    <title>s/contorol/control/ in comments and log messages.</title>
    <description></description>
    <pubDate>Tue Sep 01 17:00:00 UTC 2026</pubDate>
    <dc:creator>andvar</dc:creator>
</item>

<item>
    <title>s/virutal/virtual/ in comments.</title>
    <description></description>
    <pubDate>Tue Sep 01 18:00:00 UTC 2026</pubDate>
    <dc:creator>andvar</dc:creator>
</item>

<item>
    <title>uvm: Fix missed wakeups and reduce lock contention a little bit.<br/><br/>This addresses two problems under heavy load:<br/><br/>(a) uvm_wait would sometimes miss wakeups, causing various processes<br/>    system to hang but then recover from `call wakeup(uvmexp+0x10)'<br/>    in ddb:<br/><br/>    PR kern/58964: uvm: missing wakeup on uvmexp.free<br/><br/>(b) Contention on uvmpd_lock would lead to so much time spent at<br/>    IPL_SOFTBIO softint context in uvm_pageout_done spinning for<br/>    uvmpd_lock that it would trip heartbeat panics:<br/><br/>    PR kern/60029: panic: cpu0: softints stuck for 16 seconds<br/><br/>There are three intertwined parts to this, which I tried to split<br/>into separate commits, but I eventually decided it wasn't worth the<br/>trouble:<br/><br/>1. New ticket idiom for uvm_wait is needed to avoid missing a wakeup<br/>   in the face of multiprocessing or kernel preemption:<br/><br/>top:	ticket = uvm_wait_prepare();<br/>	pg = uvm_pagealloc(...);<br/>	if (pg == NULL) {<br/>		uvm_wait("foo", ticket);<br/>		goto top;<br/>	}<br/><br/>   Without this, a wakeup by the page daemon that arrives after<br/>   uvm_pagealloc has failed and before we have called uvm_wait will<br/>   be lost, so we might hang indefinitely.<br/><br/>   Internally, the ticket is a 64-bit generation number, so it can't<br/>   possibly overflow, that is advanced on any wakeup(&amp;uvmexp.free).<br/>   For LP32 platforms, we manage it with a seqlock/Lamport-type<br/>   algorithm, so that reading it is cheap and unlocked.<br/><br/>   This may also help reduce contention on uvmpd_lock under heavy<br/>   paging load by having uvm_wait skip the lock if there has been<br/>   concurrent paging since uvm_wait_prepare.<br/><br/>2. Split uvmpd_lock into three different locks for different<br/>   purposes:<br/><br/>   - uvmpd_kick_lock to coordinate threads or interrupt handlers<br/>     wanting the page daemon to work with the page daemon wanting to<br/>     sleep (poor beast, woken by any thread or interrupt handler,<br/>     hence IPL_VM),<br/><br/>   - uvmpd_waiter_lock to coordinate the page daemon thread or paging<br/>     completion soft interrupt handler threads waiting for memory to<br/>     be freed up (thread/softint, hence IPL_SOFTBIO), and<br/><br/>   - uvmpd_pool_drain_lock to coordinate the page daemon thread with<br/>     the pool drain thread (thread-to-thread, hence IPL_NONE).<br/><br/>   This way, anyone trying to kick the page daemon, and the page<br/>   daemon's internal coordination with the pool drainer, won't incur<br/>   any contention on the same lock that uvm_pageout_done is trying to<br/>   take on paging completion to notify threads that they can try<br/>   allocation again.<br/><br/>3. Use Dekker-synchronized atomic_swap fast paths to reduce time<br/>   spent spinning on these locks when they are under contention.<br/><br/>   This way, if multiple callers (such as uvm_pageout_done and a<br/>   thread trying to allocate memory) want to wake the page daemon,<br/>   only one of them needs to take the lock most of the time.<br/><br/>   And if there's a lot of pageout activity because many threads want<br/>   to allocate memory, uvm_pageout_done need only take the lock once<br/>   to trigger a wakeup until the threads that have been waiting have<br/>   noticed it.<br/><br/>Additionally, move one call to uvm_availmem out from under any locks,<br/>to match the other calls to it -- this should help reduce the time<br/>anyone spends holding the locks, and thus the time everyone else<br/>spends waiting for it.<br/><br/>Empirically, this seems to enable a heavily loaded bulk build to<br/>complete when before the softbio completions would starve softclk<br/>leading to heartbeat panics.  Even without the heartbeat panics, we<br/>measured over 8sec running time for softint_dispatch for softbio, and<br/>extremely heavy contention on uvmpd_lock in uvm_pageout_done and<br/>uvm_wait.<br/><br/>This isn't really a solution to the contention, however -- it just<br/>mitigates the contention.  To scale to more CPUs in parallel, we'll<br/>probably need to devise a per-CPU or per-NUMA-cluster page daemon<br/>system, with each parallel daemon splitting up the work in some<br/>reasonable way that doesn't add more contention.<br/><br/>Note: Before, all access to uvm_pagedaemon_waiters was serialized by<br/>uvmpd_lock.  Now, all _writes_ are serialized by uvmpd_lock, but<br/>_reads_ are allowed unlocked.  So the writes have to be issued with<br/>atomic_store_*, but there is no need for atomic_r/m/w_*; hence we can<br/>increment it with<br/><br/>	atomic_store_relaxed(&amp;uvm_pagedaemon_waiters,<br/>	    atomic_load_relaxed(&amp;uvm_pagedaemon_waiters) + 1);<br/><br/>rather than needing the often costlier<br/><br/>	atomic_inc_uint(&amp;uvm_pagedaemon_waiters);</title>
    <description></description>
    <pubDate>Sun Aug 23 22:00:00 UTC 2026</pubDate>
    <dc:creator>riastradh</dc:creator>
</item>

<item>
    <title>evbarm/ti_edma: clear events before transfer<br/><br/>The sdmmc controller on the am18xx fires dma events even in PIO mode. Clear these event before starting a DMA transfer.</title>
    <description></description>
    <pubDate>Wed Aug 19 09:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>evbarm/am18xx: sdmmc driver<br/><br/>A first version of the SD card driver for the TI am1808. The driver works fine, but the performance is lower than expected.</title>
    <description></description>
    <pubDate>Wed Aug 19 09:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>vchiq: Back port of the change<br/><br/>    commit 49bec49fd7f273ec114e2e533c1bb8f21a654aaf<br/>    Author: Michael Zoran &lt;mzoran@crowfest.net&gt;<br/>    Date:   Sun Oct 30 05:55:07 2016 -0700<br/><br/>        staging: vc04_services: remove vchiq_copy_from_user<br/><br/>        The vchiq_copy_from_user function is not portable<br/>        and is consider "bad practice."  Replace this function<br/>        with a callback based mechanism that is passed downward<br/>        on the stack.  When it is actually time to copy the data,<br/>        the callback is called to copy the data into the message.<br/><br/>        This callback is provided internally for userland calls<br/>        through ioctls on the device.<br/><br/>        NOTE: Internal clients will need to be modified to work<br/>        with the new internal API.<br/><br/>        Test Run:<br/>        vchiq_test -p 1<br/>        vchiq_test -f 10<br/><br/>        Both tests pass.<br/><br/>        Internal API Changes:<br/><br/>        Change vchi_msg_queue to:<br/>        int32_t<br/>        vchi_msg_queue(VCHI_SERVICE_HANDLE_T handle,<br/>                       ssize_t (*copy_callback)(void *context, void *dest,<br/>                                                size_t offset, size_t maxsize),<br/>                       void *context,<br/>                       uint32_t data_size );<br/><br/>        Remove:<br/>        vchi_msg_queuev_ex<br/>        vchi_msg_queuev<br/><br/>        These functions were not implemented anyway so no need to fix them. It's<br/>        easier to just remove them.<br/><br/>        Signed-off-by: Michael Zoran &lt;mzoran@crowfest.net&gt;<br/>        Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;</title>
    <description></description>
    <pubDate>Sun Aug 16 19:00:00 UTC 2026</pubDate>
    <dc:creator>skrll</dc:creator>
</item>

<item>
    <title>s/forcably/forcibly/ and couple more typos in comments.</title>
    <description></description>
    <pubDate>Sat Aug 15 11:00:00 UTC 2026</pubDate>
    <dc:creator>andvar</dc:creator>
</item>

<item>
    <title>s/staring/starting/ in comments and log messages.</title>
    <description></description>
    <pubDate>Fri Aug 14 09:00:00 UTC 2026</pubDate>
    <dc:creator>andvar</dc:creator>
</item>

<item>
    <title>evbarm/am18xx: expose the PSC as powerdomain<br/><br/>Some peripherals in the DTB expect to manage clocks as power domains.</title>
    <description></description>
    <pubDate>Wed Aug 12 09:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>evbarm/ti_edma: start using fdt_dma<br/><br/>In preparation for the am18xx sdmmc driver.</title>
    <description></description>
    <pubDate>Wed Aug 12 09:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>evbarm/ti_edma: enable on am18xx SoCs<br/><br/>The linux dt-bindings allow two different ways to specify power/clock domains for the edma3. This commit adds support for the way used on the am18xx (powerdomains).</title>
    <description></description>
    <pubDate>Wed Aug 12 09:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>KNF comments</title>
    <description></description>
    <pubDate>Fri Jul 31 05:00:00 UTC 2026</pubDate>
    <dc:creator>skrll</dc:creator>
</item>

<item>
    <title>RCSId police</title>
    <description></description>
    <pubDate>Fri Jul 31 05:00:00 UTC 2026</pubDate>
    <dc:creator>skrll</dc:creator>
</item>

<item>
    <title>fix cvs revision comment not expanding</title>
    <description></description>
    <pubDate>Thu Jul 30 15:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>evbarm/am335x: initialize usb phy<br/><br/>This fixes the USB devices not being detected part of PR port-evbarm/60404.</title>
    <description></description>
    <pubDate>Wed Jul 29 08:00:00 UTC 2026</pubDate>
    <dc:creator>yurix</dc:creator>
</item>

<item>
    <title>Does not use i2c_bitbang, so should not depend on it.</title>
    <description></description>
    <pubDate>Fri Jul 17 17:00:00 UTC 2026</pubDate>
    <dc:creator>thorpej</dc:creator>
</item>

<item>
    <title>Remove unused variable.</title>
    <description></description>
    <pubDate>Wed Jul 15 06:00:00 UTC 2026</pubDate>
    <dc:creator>martin</dc:creator>
</item>

<item>
    <title>Now that bad144 handling is isolated to the places that care about it,<br/>garbage-collect it from all of the various machine-dependent files that<br/>have been cargo-culting it around needlessly for 20+ years.<br/><br/>Version bump to 11.99.7 because this changes the size of struct cpu_disklabel<br/>on some platforms, and that structure is exposed in the module ABI.</title>
    <description></description>
    <pubDate>Tue Jul 14 13:00:00 UTC 2026</pubDate>
    <dc:creator>thorpej</dc:creator>
</item>
</channel></rss>

