NetBSD Problem Report #60541

From technoid@AlphaBox.Atari8us  Wed Aug  5 17:09:30 2026
Return-Path: <technoid@AlphaBox.Atari8us>
Received: from mail.netbsd.org (mail.netbsd.org [199.233.217.200])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256
	 client-signature RSA-PSS (2048 bits) client-digest SHA256)
	(Client CN "mail.netbsd.org", Issuer "YR2" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id 8A3221A9245
	for <gnats-bugs@gnats.NetBSD.org>; Wed,  5 Aug 2026 17:09:30 +0000 (UTC)
Message-Id: <20260805170337.7815027EFA1F@AlphaBox.Atari8us>
Date: Wed,  5 Aug 2026 12:03:37 -0500 (EST)
From: technoid@AlphaBox.Atari8us
Reply-To: technoid@AlphaBox.Atari8us
To: gnats-bugs@NetBSD.org
Subject: port-alpha: ATA stray IRQs, video fencing instability, and network buffer exhaustion under NetBSD 10.1 Multiuser
X-Send-Pr-Version: 3.95
X-From4GNATS: "technoid@AlphaBox.Atari8us via gnats" <gnats-admin@NetBSD.org>

>Number:         60541
>Category:       port-alpha
>Synopsis:       port-alpha: ATA stray IRQs, video fencing instability, and network buffer exhaustion under NetBSD 10.1 Multiuser
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-alpha-maintainer
>State:          feedback
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Aug 05 17:10:00 +0000 2026
>Closed-Date:    
>Last-Modified:  Wed Aug 05 18:05:01 +0000 2026
>Originator:     technoid@AlphaBox.Atari8us
>Release:        NetBSD 10.1
>Organization:

>Environment:


System: NetBSD AlphaBox.Atari8us 10.1 NetBSD 10.1 (GENERIC) #0: Mon Dec 16 13:08:11 UTC 2024 mkrepro@mkrepro.NetBSD.org:/usr/src/sys/arch/alpha/compile/GENERIC alpha
Architecture: alpha
Machine: alpha
>Description:
Severe bus synchronization and data fencing instability observed on 
AlphaStation XP900 hardware configuration running NetBSD 10.1 GENERIC 
multiuser baseline. 

The system regularly experiences ATA controller stray IRQs and catastrophic 
video controller synchronization failures during active I/O. The primary 
onboard/workstation video subsystem fails to stabilize due to missing or 
misaligned memory-mapped I/O (MMIO) fences. It appears that the machine-
independent (MI) driver layers fail to enforce native `bus_space_barrier()` 
or `alpha_mb()` execution constraints necessary to handle the EV6's highly 
aggressive, weak memory out-of-order execution model.

Completely germane to this core architectural fencing failure is a critical 
network buffer starvation issue. When standard TCP socket buffers are 
increased at runtime or initialized at boot, the kernel immediately deadlocks 
and throws a "No buffer space available" (ENOBUFS) error, despite the 
presence of 2GB of physical system RAM. Because the unified 10.x network 
allocator lacks explicit hardware memory-ordering fences on the Alpha port, 
the EV6 processor performs out-of-order memory allocations during socket 
creation. This corrupts the kernel's internal mbuf alignment metrics, 
instantly starving the network memory pool and knocking the Intel PRO/1000 
(wm0) interface offline.

To achieve system stability and maintain continuous uptime in a multiuser 
environment, the native workstation video subsystem (Gloria, Powerstorm) had to be bypassed entirely 
by installing a simple, generic unaccelerated legacy x86 PCI VGA card to serve 
as the system console head. 

>How-To-Repeat:
BOot an AlphaStation XP900 (EV6) with a native workstation display adapter 
   (such as TGA2/PowerStorm series) into NetBSD 10.1 multiuser mode.
2. Trigger concurrent disk I/O workloads alongside console terminal output.
3. Observe a flood of ATA controller stray IRQ traps in dmesg, quickly followed 
   by console video driver register corruption, memory fence lockups, or a hard 
   kernel panic.
4. Attempt to scale up TCP network windows (e.g. net.inet.tcp.recvspace=262144) 
   and observe instant socket buffer starvation (ENOBUFS).

>Fix:
The problem appears to stem from the modernization of MI frameworks in 10.x, 
where strict Alpha-specific memory ordering barriers were dropped or omitted 
during the unified network/storage memory allocation overhauls. 

Temporary workaround requires disabling native workstation 3D/2D video hardware 
and inserting a legacy PCI VGA adapter to isolate system console initialization.

A permanent fix requires auditing the Alpha machine-dependent (MD) bus_space 
layers to ensure strict memory-ordering barriers (`alpha_mb()`) are explicitly 
enforced before and after MMIO read/write blocks on shared 32-bit PCI buses.

>Release-Note:

>Audit-Trail:

State-Changed-From-To: open->feedback
State-Changed-By: riastradh@NetBSD.org
State-Changed-When: Wed, 05 Aug 2026 18:03:22 +0000
State-Changed-Why:
feedback requested


From: Taylor R Campbell <riastradh@NetBSD.org>
To: gnats-bugs@NetBSD.org, netbsd-bugs@NetBSD.org
Cc: 
Subject: Re: port-alpha/60541: port-alpha: ATA stray IRQs, video fencing instability, and network buffer exhaustion under NetBSD 10.1 Multiuser
Date: Wed, 5 Aug 2026 18:02:21 +0000

 [+bcc Technoid6502@gmail.com based on similarities to PR 60366 in case
 that was the submitter's address]

 > Date: Wed,  5 Aug 2026 12:03:37 -0500 (EST)
 > From: technoid@AlphaBox.Atari8us

 Does the submitter have a real email address for replies?  If you find
 this via the mail archive or gnats web site, can you please follow up
 to gnats-bugs@NetBSD.org cc netbsd-bugs@NetBSD.org with subject line
 `Re: port-alpha/60541' with an email address we can reply to?

 I'm having a hard time understanding many things in this message and
 it's heavy on broad speculation but very light on specific evidence or
 observations.  Did you use an LLM to write this, or to assist in
 translation from your native language?  (Using an LLM to assist in
 translating from your native language is fine as long as you disclose
 it, but please don't send us LLM-generated speculation in lieu of
 writing a message you understand yourself.)

 > Severe bus synchronization and data fencing instability observed on
 > AlphaStation XP900 hardware configuration running NetBSD 10.1 GENERIC
 > multiuser baseline.

 Are you saying:

 1. This hardware worked fine in 9.x, but stopped working in 10.1?

    If so, can you bisect to find what version started having problems?

    From the symptoms I think you're describing, you can probably just
    boot newer kernels on a working 9.x userland -- we generally ensure
    older userlands work fine on newer kernels.

 2. 10.1 worked fine on this hardware in _single-user_ boot with heavy
    disk I/O and console output, but fails on this hardware in
    _multi-user_ boot with the same heavy disk I/O and console output?

 Can you provide the dmesg output on the affected hardware under the
 most recent working version you tested, and under 10.1?

 >                                                              The primary
 > onboard/workstation video subsystem fails to stabilize due to missing or
 > misaligned memory-mapped I/O (MMIO) fences.

 What is a `misaligned MMIO fence'?

 >                                             It appears that the machine-
 > independent (MI) driver layers fail to enforce native `bus_space_barrier(=
 )`
 > or `alpha_mb()` execution constraints necessary to handle the EV6's highly
 > aggressive, weak memory out-of-order execution model.

 bus_space_barrier is only relevant (on any platform) for mappings that
 either:

 (a) are mapped into kva with BUS_SPACE_MAP_LINEAR and accessed through
     normal memory operations instead of bus_space_read/write_*,
 and/or
 (b) are mapped with BUS_SPACE_MAP_PREFETCHABLE.

 Pretty much only framebuffer drivers use these.  It's possible that
 the driver for yours (tga(4)?) is missing some bus_space_barrier
 calls.

 > The problem appears to stem from the modernization of MI frameworks in 10=
 .x,
 > where strict Alpha-specific memory ordering barriers were dropped or omit=
 ted
 > during the unified network/storage memory allocation overhauls.

 What changes are you referring to?  Can you please point to specific
 commits or specific diffs between netbsd-9 and netbsd-10?

 Every bus_space_read/write_* in alpha, as far as I can tell, is issued
 with alpha_mb, and this hasn't changed in a looooong time:

 https://nxr.netbsd.org/xref/src/sys/arch/alpha/pci/pci_bwx_bus_io_chipdep.c=
 ?r=3D1.24#566
 https://nxr.netbsd.org/xref/src/sys/arch/alpha/pci/pci_bwx_bus_mem_chipdep.=
 c?r=3D1.30#536
 https://nxr.netbsd.org/xref/src/sys/arch/alpha/pci/pci_swiz_bus_io_chipdep.=
 c?r=3D1.45#640
 https://nxr.netbsd.org/xref/src/sys/arch/alpha/pci/pci_swiz_bus_mem_chipdep=
 .c?r=3D1.50#972

 Are you referring to this change to replace extent(9) by vmem(9) for
 bus space allocation?  This doesn't affect any paths that actually
 issue reads and writes to hardware registers; it only affects the
 bookkeeping logic of which subsets of bus space are in use by drivers.
 And it doesn't appear in the netbsd-10 branch at all.

 https://mail-index.netbsd.org/source-changes/2023/12/04/msg148732.html

>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.51 2026/08/10 02:28:17 riastradh Exp $
$NetBSD: gnats_config.sh,v 1.10 2026/05/13 22:00:09 riastradh Exp $
Copyright © 1994-2026 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.