NetBSD Problem Report #60180

From john@beaver.zia.io  Tue Apr  7 01:49:20 2026
Return-Path: <john@beaver.zia.io>
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 "R12" (not verified))
	by mollari.NetBSD.org (Postfix) with ESMTPS id EA8D91A9239
	for <gnats-bugs@gnats.NetBSD.org>; Tue,  7 Apr 2026 01:49:19 +0000 (UTC)
Message-Id: <20260407014215.8559DB86E92@beaver.zia.io>
Date: Tue, 07 Apr 2026 01:42:15 +0000 (UTC)
From: john@klos.com
Reply-To: john@klos.com
To: gnats-bugs@NetBSD.org
Subject: radeon* is problematically slow
X-Send-Pr-Version: 3.95
X-From4GNATS: "john@klos.com via gnats" <gnats-admin@NetBSD.org>

>Number:         60180
>Category:       kern
>Synopsis:       radeon* is problematically slow
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Apr 07 01:50:00 +0000 2026
>Last-Modified:  Fri Apr 10 07:15:01 +0000 2026
>Originator:     John Klos
>Release:        NetBSD 11.0_RC3
>Organization:

>Environment:


System: NetBSD beaver.zia.io 11.0_RC3 NetBSD 11.0_RC3 (GENERIC) #0: Mon Apr 6 23:59:22 UTC 2026 john@beaver.zia.io:/usr/obj-amd64/sys/arch/amd64/compile/GENERIC amd64
Architecture: x86_64
Machine: amd64
>Description:

On a system with Radeon graphics built in to the CPU, framebuffer operations 
significantly slow the whole system. cat'ing a 250 meg text file:

time cat amd64_24-march-2026.log > /dev/null
        0.06 real         0.00 user         0.06 sys

The same over ssh to a local (fast) machine:

time cat amd64_24-march-2026.log
       24.31 real         0.04 user         2.87 sys

Running it on radeondrmkmsfb0 console:

time cat amd64_24-march-2026.log
      315.82 real         0.04 user       173.28 sys

While the cat is running on the Radeon console, the whole system becomes significantly
slower:

load averages:  1.08,  0.37,  0.25;               up 0+00:36:52                    22:56:28
28 processes: 23 sleeping, 5 on CPU
CPU states:  0.0% user,  0.0% nice, 44.8% system, 31.9% interrupt, 23.1% idle
Memory: 330M Act, 24M Wired, 17M Exec, 292M File, 30G Free
Swap: 64G Total, 64G Free / Pools: 43M Used / Network: 1K In, 4K Out

  PID USERNAME PRI NICE   SIZE   RES STATE       TIME   WCPU    CPU COMMAND
  426 root      28    0    11M 1564K CPU/0       0:26   102% 72.66% cat
 2679 root      28    0    13M 2892K CPU/1       0:18 49.07% 49.07% sysstat
 2175 john      28    0    29M   11M CPU/2       0:28 45.56% 45.56% sshd-session
    0 root     223    0     0K  328M CPU/1       1:30 16.94% 16.94% [system]
 1878 john      85    0    24M 6356K poll/2      0:03  6.15%  6.15% sshd-session
 1958 john      40    0    13M 2452K CPU/3       0:02  2.83%  2.83% top
 1455 root      85    0    20M   19M pause/3     0:00  0.10%  0.10% ntpd
 2289 root      85    0    12M 2340K wait/3      0:02  0.00%  0.00% sh
 2361 john      85    0    12M 2340K wait/2      0:02  0.00%  0.00% sh
 2356 root      82    0    24M 8984K poll/1      0:02  0.00%  0.00% sshd-session
 2036 root      85    0    24M 8932K poll/0      0:00  0.00%  0.00% sshd-session
 2227 root      85    0    21M 6944K wait/1      0:00  0.00%  0.00% login
 2084 postfix   85    0    23M 5476K kqueue/1    0:00  0.00%  0.00% qmgr
 2005 postfix   85    0    23M 5412K kqueue/2    0:00  0.00%  0.00% pickup
 1570 root      85    0    19M 4696K poll/0      0:00  0.00%  0.00% sshd
 1853 root      85    0    23M 2888K kqueue/1    0:00  0.00%  0.00% master
  677 root      85    0    20M 2564K kqueue/3    0:00  0.00%  0.00% syslogd
 1243 root      85    0    12M 2356K wait/0      0:00  0.00%  0.00% sh
 1845 john      85    0    12M 2340K wait/0      0:00  0.00%  0.00% sh
  552 _dhcpcd   85    0    13M 2100K poll/1      0:00  0.00%  0.00% dhcpcd
    1 root      85    0    12M 1808K wait/0      0:00  0.00%  0.00% init
 2221 root      85    0    12M 1752K nanosl/2    0:00  0.00%  0.00% cron
  551 root      85    0    14M 1728K poll/1      0:00  0.00%  0.00% dhcpcd
  555 _dhcpcd   85    0    12M 1580K poll/2      0:00  0.00%  0.00% dhcpcd
 2232 root      85    0    11M 1580K wait/1      0:00  0.00%  0.00% time


systat vmstat takes multiple seconds to update itself:

    3 users    Load  1.62  0.54  0.31                  Mon Apr  6 22:56:49

Proc:r  d  s        Csw  Traps SysCal  Intr   Soft  Fault     PAGING   SWAPPING
     1     7         31           145     7     43            in  out   in  out
                                                        ops
  47.8% Sy   0.0% Us   0.0% Ni  38.5% In  24.2% Id    pages
|    |    |    |    |    |    |    |    |    |    |
===================%%%%%%%%%%%%%%%%%%%                                    forks
                                                                          fkppw
Anon        45356    %   zero                106 Interrupts               fksvm
Exec        17788    %   wired   24072           TLB shootdown            pwait
File       299244    %   inact               100 cpu0 timer               relck
Meta         9757    %   bufs      722           ioapic0 pin 4            rlkok
 (kB)        real   swaponly      free           msi0 vec 0               noram
Active     338316             31351580         4 msix1 vec 0              ndcpy
Namei         Sys-cache     Proc-cache         2 msi3 vec 0               fltcp
    Calls     hits    %     hits     %           ioapic0 pin 18           zfod
        6        6  100                          ioapic0 pin 17           cow
                                                 msi4 vec 0          1024 fmin
  Disks:   seeks   xfers   bytes   %busy                             1365 ftarg
     wd0               7  143238    19.0                                  itarg
     dk0                                                                  flnan
     dk1               6  125333    30.2                                  pdfre
     dk2                                                                  pdscn
     wd1               7  143238    19.0
     dk3
     dk4               6  125333    30.2
     dk5
   raid0               6  122775    43.9
     dk6               6  122775    57.1

>How-To-Repeat:

Print a lot of stuff to the Radeon framebuffer console.

>Fix:

One option is to disable radeon*, which gives much better performance and 
doesn't slow the whole system when printing to the console.

>Audit-Trail:
From: John Klos <john@klos.com>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/60180: radeon* is problematically slow
Date: Tue, 7 Apr 2026 02:00:47 +0000 (UTC)

 dmesg:

 Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
      2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
      2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023,
      2024, 2025, 2026
      The NetBSD Foundation, Inc.  All rights reserved.
 Copyright (c) 1982, 1986, 1989, 1991, 1993
      The Regents of the University of California.  All rights reserved.

 NetBSD 11.0_RC3 (GENERIC) #0: Mon Apr  6 23:59:22 UTC 2026
  	john@beaver.zia.io:/usr/obj-amd64/sys/arch/amd64/compile/GENERIC
 total memory = 32201 MB
 avail memory = 31122 MB
 timecounter: Timecounters tick every 10.000 msec
 Kernelized RAIDframe activated
 timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
 efi: systbl at pa 9e35ef18
 mainbus0 (root)
 ACPI: RSDP 0x000000009D5F5000 000024 (v02 ALASKA)
 ACPI: XSDT 0x000000009D5F5078 00006C (v01 ALASKA A M I    01072009 AMI  00010013)
 ACPI: FACP 0x000000009D5FA1A0 00010C (v05 ALASKA A M I    01072009 AMI  00010013)
 Firmware Warning (ACPI): Optional FADT field Pm2ControlBlock has valid Length but zero Address: 0x0000000000000000/0x1 (20241212/tbfadt-796)
 ACPI: DSDT 0x000000009D5F5178 005022 (v02 ALASKA A M I    00000000 INTL 20051117)
 ACPI: FACS 0x000000009D625D80 000040
 ACPI: APIC 0x000000009D5FA2B0 00007E (v03 ALASKA A M I    01072009 AMI  00010013)
 ACPI: FPDT 0x000000009D5FA330 000044 (v01 ALASKA A M I    01072009 AMI  00010013)
 ACPI: MCFG 0x000000009D5FA378 00003C (v01 ALASKA A M I    01072009 MSFT 00010013)
 ACPI: HPET 0x000000009D5FA3B8 000038 (v01 ALASKA A M I    01072009 AMI  00000005)
 ACPI: SSDT 0x000000009D5FA3F0 000E58 (v01 AMD    AGESA    00000001 AMD  00000001)
 ACPI: SSDT 0x000000009D5FB248 0046B7 (v02 AMD    AGESA    00000002 MSFT 04000000)
 ACPI: CRAT 0x000000009D5FF900 0003F8 (v01 AMD    AGESA    00000001 AMD  00000001)
 ACPI: SSDT 0x000000009D5FFCF8 001204 (v01 AMD    CPMCMN   00000001 INTL 20051117)
 ACPI: 4 ACPI AML tables successfully acquired and loaded
 ioapic0 at mainbus0 apid 5: pa 0xfec00000, version 0x21, 24 pins
 ioapic1 at mainbus0 apid 6: pa 0xfec01000, version 0x21, 32 pins
 cpu0 at mainbus0 apid 0
 cpu0: Use mfence to serialize rdtsc
 cpu0: AMD Athlon(tm) 5350 APU with Radeon(tm) R3     , id 0x700f01
 cpu0: node 0, package 0, core 0, smt 0
 cpu0: searching errata for cpu revision 0x00700f01
 cpu1 at mainbus0 apid 1
 cpu1: AMD Athlon(tm) 5350 APU with Radeon(tm) R3     , id 0x700f01
 cpu1: node 0, package 0, core 1, smt 0
 cpu2 at mainbus0 apid 2
 cpu2: AMD Athlon(tm) 5350 APU with Radeon(tm) R3     , id 0x700f01
 cpu2: node 0, package 0, core 2, smt 0
 cpu3 at mainbus0 apid 3
 cpu3: AMD Athlon(tm) 5350 APU with Radeon(tm) R3     , id 0x700f01
 cpu3: node 0, package 0, core 3, smt 0
 acpi0 at mainbus0: Intel ACPICA 20241212
 acpi0: X/RSDT: OemId <ALASKA,   A M I,01072009>, AslId <AMI ,00010013>
 acpi0: MCFG: segment 0, bus 0-255, address 0x00000000e0000000
 acpi0: SCI interrupting at int 9
 acpi0: fixed power button present
 timecounter: Timecounter "ACPI-Fast" frequency 3579545 Hz quality 1000
 hpet0 at acpi0: high precision event timer (mem 0xfed00000-0xfed00400)
 timecounter: Timecounter "hpet0" frequency 14318180 Hz quality 2000
 AMDN (PNP0C01) at acpi0 not configured
 com0 at acpi0 (UAR1, PNP0501-1): io 0x3f8-0x3ff irq 4
 com0: ns16550a, 16-byte FIFO
 attimer1 at acpi0 (TMR, PNP0100): io 0x40-0x43 irq 0
 pcppi1 at acpi0 (SPKR, PNP0800): io 0x61
 spkr0 at pcppi1: PC Speaker
 wsbell at spkr0 not configured
 midi0 at pcppi1: PC speaker
 sysbeep0 at pcppi1
 acpibut0 at acpi0 (PWRB, PNP0C0C-170): ACPI Power Button
 RMEM (PNP0C01) at acpi0 not configured
 acpiwmi0 at acpi0 (WMIO, PNP0C14-0): ACPI WMI Interface
 acpiwmibus at acpiwmi0 not configured
 attimer1: attached to pcppi1
 pci0 at mainbus0 bus 0: configuration mode 1
 pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
 pchb0 at pci0 dev 0 function 0: AMD Family16h Root Complex (rev. 0x00)
 radeon0 at pci0 dev 1 function 0: ATI Technologies Radeon HD 8400 / R3 Series (rev. 0x00)
 hdaudio0 at pci0 dev 1 function 1: HD Audio Controller
 hdaudio0: interrupting at msi0 vec 0
 hdaudio0: HDA ver. 1.0, OSS 2, ISS 0, BSS 0, SDO 2, 64-bit
 hdafg0 at hdaudio0: ATI R6xx HDMI
 hdafg0: HDMI00 2ch: Digital Out [Jack]
 hdafg0: 2ch/0ch 32000Hz 44100Hz 48000Hz PCM16 AC3
 audio0 at hdafg0: playback
 audio0: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for playback
 spkr1 at audio0: PC Speaker (synthesized)
 wsbell at spkr1 not configured
 pchb1 at pci0 dev 2 function 0: AMD Family16h Host Bridge (rev. 0x00)
 ppb0 at pci0 dev 2 function 1: AMD Family16h GPP Bridge (rev. 0x00)
 ppb0: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x4 @ 5.0GT/s
 ppb0: link is x1 @ 2.5GT/s
 pci1 at ppb0 bus 1
 pci1: i/o space, memory space enabled, rd/line, wr/inv ok
 re0 at pci1 dev 0 function 0: RealTek 8168/8111 PCIe Gigabit Ethernet (rev. 0x07)
 re0: interrupting at msix1 vec 0
 re0: RTL8168E/8111E-VL (0x2c80)
 re0: Ethernet address b4:4b:d6:21:30:0c
 re0: using 256 tx descriptors
 rgephy0 at re0 phy 7: RTL8211E 1000BASE-T media interface
 rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
 ppb1 at pci0 dev 2 function 4: AMD Family16h GPP Bridge (rev. 0x00)
 ppb1: PCI Express capability version 2 <Root Port of PCI-E Root Complex> x1 @ 5.0GT/s
 ppb1: link is x1 @ 2.5GT/s
 pci2 at ppb1 bus 2
 pci2: i/o space, memory space enabled, rd/line, wr/inv ok
 re1 at pci2 dev 0 function 0: RealTek 8168/8111 PCIe Gigabit Ethernet (rev. 0x0c)
 re1: interrupting at msix2 vec 0
 re1: RTL8168G/8111G (0x4c00)
 re1: Ethernet address 4c:cc:6a:08:eb:ce
 re1: using 256 tx descriptors
 rgephy1 at re1 phy 7: RTL8251 1000BASE-T media interface, rev. 0
 rgephy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT-FDX, auto
 xhci0 at pci0 dev 16 function 0: AMD FCH USB xHCI Controller (rev. 0x01)
 xhci0: 64-bit DMA
 xhci0: interrupting at msix3 vec 0
 xhci0: xHCI version 1.0
 usb0 at xhci0: USB revision 3.0
 usb1 at xhci0: USB revision 2.0
 ahcisata0 at pci0 dev 17 function 0: AMD Hudson SATA (AHCI) Controller (rev. 0x40)
 ahcisata0: 64-bit DMA
 ahcisata0: ignoring broken port multiplier support
 ahcisata0: AHCI revision 1.30, 2 ports, 32 slots, CAP 0xf3309f01<PMD,ISS=0x3=Gen3,SCLO,SAL,SMPS,SSNTF,SNCQ,S64A>
 ahcisata0: interrupting at msi4 vec 0
 atabus0 at ahcisata0 channel 0
 atabus1 at ahcisata0 channel 1
 ohci0 at pci0 dev 18 function 0: AMD Hudson USB OHCI Controller (rev. 0x39)
 ohci0: interrupting at ioapic0 pin 18
 ohci0: OHCI version 1.0, legacy support
 usb2 at ohci0: USB revision 1.0
 ehci0 at pci0 dev 18 function 2: AMD Hudson USB EHCI Controller (rev. 0x39)
 ehci0: 32-bit DMA
 ehci0: interrupting at ioapic0 pin 17
 ehci0: EHCI version 1.0
 ehci0: 1 companion controller, 4 ports: ohci0
 ehci0: Using DMA subregion for control data structures
 usb3 at ehci0: USB revision 2.0
 ohci1 at pci0 dev 19 function 0: AMD Hudson USB OHCI Controller (rev. 0x39)
 ohci1: interrupting at ioapic0 pin 18
 ohci1: OHCI version 1.0, legacy support
 usb4 at ohci1: USB revision 1.0
 ehci1 at pci0 dev 19 function 2: AMD Hudson USB EHCI Controller (rev. 0x39)
 ehci1: 32-bit DMA
 ehci1: interrupting at ioapic0 pin 17
 ehci1: EHCI version 1.0
 ehci1: 1 companion controller, 4 ports: ohci1
 ehci1: Using DMA subregion for control data structures
 usb5 at ehci1: USB revision 2.0
 piixpm0 at pci0 dev 20 function 0: AMD Hudson SMBus Controller (rev. 0x3a)
 piixpm0: SMBus initialization failed
 hdaudio1 at pci0 dev 20 function 2: HD Audio Controller
 hdaudio1: interrupting at ioapic0 pin 16
 hdaudio1: HDA ver. 1.0, OSS 4, ISS 4, BSS 0, SDO 1, 64-bit
 hdafg1 at hdaudio1: Realtek ALC887
 hdafg1: DAC00 2ch: Speaker [Jack]
 hdafg1: DAC01 2ch: HP Out [Jack]
 hdafg1: ADC02 2ch: Line In [Jack], Mic In [Jack]
 hdafg1: ADC03 2ch: Mic In [Jack]
 hdafg1: 2ch/2ch 32000Hz 44100Hz 48000Hz 88200Hz 96000Hz 192000Hz PCM16 PCM20 PCM24 AC3
 audio1 at hdafg1: playback, capture, full duplex, independent
 audio1: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for playback
 audio1: slinear_le:16 2ch 48000Hz, blk 1920 bytes (10ms) for recording
 spkr2 at audio1: PC Speaker (synthesized)
 wsbell at spkr2 not configured
 pcib0 at pci0 dev 20 function 3: AMD Hudson LPC Bridge (rev. 0x11)
 pchb2 at pci0 dev 24 function 0: AMD Family16h HyperTransport Configuration (rev. 0x00)
 pchb3 at pci0 dev 24 function 1: AMD Family16h Address Map Configuration (rev. 0x00)
 pchb4 at pci0 dev 24 function 2: AMD Family16h DRAM Configuration (rev. 0x00)
 amdnb_misc0 at pci0 dev 24 function 3: AMD NB Misc Configuration
 amdtemp0 at amdnb_misc0: AMD CPU Temperature Sensors (Family16h)
 pchb5 at pci0 dev 24 function 4: AMD Family16h CPU C-state Configuration (rev. 0x00)
 pchb6 at pci0 dev 24 function 5: AMD Family16h Miscellaneous Configuration (rev. 0x00)
 isa0 at pcib0
 pckbc0 at isa0 port 0x60-0x64
 acpicpu0 at cpu0: ACPI CPU
 acpicpu0: C1: HLT, lat   0 us, pow     0 mW
 acpicpu0: C2: I/O, lat 400 us, pow     0 mW
 acpicpu0: P0: FFH, lat   4 us, pow  5070 mW, 2050 MHz
 acpicpu0: P1: FFH, lat   4 us, pow  4635 mW, 1850 MHz
 acpicpu0: P2: FFH, lat   4 us, pow  3712 mW, 1650 MHz
 acpicpu0: P3: FFH, lat   4 us, pow  2968 mW, 1400 MHz
 acpicpu0: P4: FFH, lat   4 us, pow  2291 mW, 1200 MHz
 acpicpu0: P5: FFH, lat   4 us, pow  1902 mW, 1000 MHz
 acpicpu0: P6: FFH, lat   4 us, pow  1545 mW,  800 MHz
 acpicpu0: T0: I/O, lat   1 us, pow     0 mW, 100 %
 acpicpu0: T1: I/O, lat   1 us, pow     0 mW,  88 %
 acpicpu0: T2: I/O, lat   1 us, pow     0 mW,  76 %
 acpicpu0: T3: I/O, lat   1 us, pow     0 mW,  64 %
 acpicpu0: T4: I/O, lat   1 us, pow     0 mW,  52 %
 acpicpu0: T5: I/O, lat   1 us, pow     0 mW,  40 %
 acpicpu0: T6: I/O, lat   1 us, pow     0 mW,  28 %
 acpicpu0: T7: I/O, lat   1 us, pow     0 mW,  16 %
 acpicpu1 at cpu1: ACPI CPU
 acpicpu2 at cpu2: ACPI CPU
 acpicpu3 at cpu3: ACPI CPU
 timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
 uhub0 at usb0: NetBSD (0x0000) xHCI root hub (0x0000), class 9/0, rev 3.00/1.00, addr 0
 uhub0: 2 ports with 2 removable, self powered
 uhub1 at usb1: NetBSD (0x0000) xHCI root hub (0x0000), class 9/0, rev 2.00/1.00, addr 0
 uhub1: 2 ports with 2 removable, self powered
 IPsec: Initialized Security Association Processing.
 uhub2 at usb2: NetBSD (0x0000) OHCI root hub (0x0000), class 9/0, rev 1.00/1.00, addr 1
 uhub2: 4 ports with 4 removable, self powered
 uhub3 at usb5: NetBSD (0x0000) EHCI root hub (0x0000), class 9/0, rev 2.00/1.00, addr 1
 uhub3: 4 ports with 4 removable, self powered
 uhub4 at usb4: NetBSD (0x0000) OHCI root hub (0x0000), class 9/0, rev 1.00/1.00, addr 1
 uhub4: 4 ports with 4 removable, self powered
 uhub5 at usb3: NetBSD (0x0000) EHCI root hub (0x0000), class 9/0, rev 2.00/1.00, addr 1
 uhub5: 4 ports with 4 removable, self powered
 ahcisata0 port 0: device present, speed: 6.0Gb/s
 ahcisata0 port 1: device present, speed: 6.0Gb/s
 wd0 at atabus0 drive 0
 wd0: <HGST HTS721010A9E630>
 wd0: drive supports 16-sector PIO transfers, LBA48 addressing
 wd0: 931 GB, 1938021 cyl, 16 head, 63 sec, 512 bytes/sect x 1953525168 sectors (4096 bytes/physsect)
 uhub6 at uhub4 port 2: Mitsumi Electric (0x05ac) Hub in Apple Extended USB Keyboard (0x1003), class 9/0, rev 1.10/4.10, addr 2
 uhub6: 3 ports with 2 removable, bus powered
 wd0: GPT GUID: bac2ec41-8302-4eef-9e8c-1dbead4ed9b7
 dk0 at wd0: "EFIa", 262144 blocks at 128, type: msdos
 dk1 at wd0: "1tbraida", 1886153984 blocks at 262272, type: raidframe
 dk2 at wd0: "1tbswapa", 67108864 blocks at 1886416256, type: swap
 wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), WRITE DMA FUA, NCQ (32 tags) w/PRIO
 wd0(ahcisata0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags) w/PRIO
 wd1 at atabus1 drive 0
 wd1: <HGST HTS721010A9E630>
 wd1: drive supports 16-sector PIO transfers, LBA48 addressing
 wd1: 931 GB, 1938021 cyl, 16 head, 63 sec, 512 bytes/sect x 1953525168 sectors (4096 bytes/physsect)
 wd1: GPT GUID: 70f43314-bf77-43a6-a78d-c5bd834c03ea
 dk3 at wd1: "EFIb", 262144 blocks at 128, type: msdos
 dk4 at wd1: "1tbraidb", 1886153984 blocks at 262272, type: raidframe
 dk5 at wd1: "1tbswapb", 67108864 blocks at 1886416256, type: swap
 wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133), WRITE DMA FUA, NCQ (32 tags) w/PRIO
 wd1(ahcisata0:1:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133) (using DMA), NCQ (31 tags) w/PRIO
 uhidev0 at uhub6 port 3 configuration 1 interface 0
 uhidev0: Mitsumi Electric (0x05ac) Apple Extended USB Keyboard (0x020b), rev 1.10/4.10, addr 3, iclass 3/1
 ukbd0 at uhidev0
 wskbd0 at ukbd0: console keyboard
 uhidev1 at uhub6 port 3 configuration 1 interface 1
 uhidev1: Mitsumi Electric (0x05ac) Apple Extended USB Keyboard (0x020b), rev 1.10/4.10, addr 3, iclass 3/0
 uhidev1: 3 report ids
 uhid0 at uhidev1 reportid 2: input=1, output=0, feature=0
 uhid1 at uhidev1 reportid 3: input=3, output=0, feature=0
 swwdog0: software watchdog initialized
 WARNING: findroot: double match for boot device (bootinfo/bootwedge:wd0 bootinfo/bootwedge:wd1)
 raid0: RAID Level 1
 raid0: Components: /dev/dk1 /dev/dk4
 raid0: Total Sectors: 1886153856 (920973 MB)
 raid0: GPT GUID: 220c2c59-70d9-4478-9dd1-77c39f6189f5
 dk6 at raid0: "mirrorffs", 1886153600 blocks at 128, type: ffs
 boot device: dk6
 root on dk6 dumps on dk2
 root file system type: ffs
 kern.module.path=/stand/amd64/11.0/modules
 [drm] initializing kernel modesetting (KABINI 0x1002:0x9830 0x1462:0x7865 0x00).
 [drm] register mmio base: 0xfeb00000
 [drm] register mmio size: 262144
 [drm] doorbell mmio base: 0xD0000000
 [drm] doorbell mmio size: 8388608
 ATOM BIOS: AMD
 radeon0: VRAM: 512M 0x0000000000000000 - 0x000000001FFFFFFF (512M used)
 radeon0: GTT: 2048M 0x0000000020000000 - 0x000000009FFFFFFF
 [drm] Detected VRAM RAM=200M, BAR=256M
 [drm] RAM width 128bits DDR
 Zone  kernel: Available graphics memory: 9007199251494812 KiB
 Zone   dma32: Available graphics memory: 2097152 KiB
 [drm] radeon: 512M of VRAM memory ready
 [drm] radeon: 2048M of GTT memory ready.
 [drm] Loading kabini Microcode
 entropy: best effort
 [drm] Internal thermal controller without fan control
 [drm] radeon: dpm initialized
 [drm] Found UVD firmware Version: 1.64 Family ID: 9
 [drm] Found VCE firmware/feedback version 40.2.2 / 15!
 [drm] GART: num cpu pages 524288, num gpu pages 524288
 [drm] PCIE GART of 2048M enabled (table at 0x000000000030E000).
 radeon0: WB enabled
 radeon0: fence driver on ring 0 use gpu addr 0x0000000020000c00 and cpu addr 0x0xffff8c596af20c00
 radeon0: fence driver on ring 1 use gpu addr 0x0000000020000c04 and cpu addr 0x0xffff8c596af20c04
 radeon0: fence driver on ring 2 use gpu addr 0x0000000020000c08 and cpu addr 0x0xffff8c596af20c08
 radeon0: fence driver on ring 3 use gpu addr 0x0000000020000c0c and cpu addr 0x0xffff8c596af20c0c
 radeon0: fence driver on ring 4 use gpu addr 0x0000000020000c10 and cpu addr 0x0xffff8c596af20c10
 radeon0: fence driver on ring 5 use gpu addr 0x0000000000078d30 and cpu addr 0x0xffff8c892a0f8d30
 radeon0: fence driver on ring 6 use gpu addr 0x0000000020000c18 and cpu addr 0x0xffff8c596af20c18
 radeon0: fence driver on ring 7 use gpu addr 0x0000000020000c1c and cpu addr 0x0xffff8c596af20c1c
 [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
 [drm] Driver supports precise vblank timestamp query.
 radeon0: radeon: using MSI.
 radeon0: interrupting at msi5 vec 0 (radeon0)
 [drm] radeon: irq initialized.
 [drm] ring test on 0 succeeded in 3 usecs
 [drm] ring test on 1 succeeded in 3 usecs
 [drm] ring test on 2 succeeded in 3 usecs
 [drm] ring test on 3 succeeded in 4 usecs
 [drm] ring test on 4 succeeded in 4 usecs
 [drm] ring test on 5 succeeded in 2 usecs
 [drm] UVD initialized successfully.
 [drm] ring test on 6 succeeded in 15 usecs
 [drm] ring test on 7 succeeded in 4 usecs
 [drm] VCE initialized successfully.
 [drm] ib test on ring 0 succeeded in 0 usecs
 [drm] ib test on ring 1 succeeded in 0 usecs
 [drm] ib test on ring 2 succeeded in 0 usecs
 [drm] ib test on ring 3 succeeded in 0 usecs
 [drm] ib test on ring 4 succeeded in 0 usecs
 [drm] ib test on ring 5 succeeded
 [drm] ib test on ring 6 succeeded
 [drm] ib test on ring 7 succeeded
 [drm] Radeon Display Connectors
 [drm] Connector 0:
 [drm]   DVI-D-1
 [drm]   HPD1
 [drm]   DDC: 0x6530 0x6530 0x6534 0x6534 0x6538 0x6538 0x653c 0x653c
 [drm]   Encoders:
 [drm]     DFP1: INTERNAL_UNIPHY
 [drm] Connector 1:
 [drm]   HDMI-A-1
 [drm]   HPD2
 [drm]   DDC: 0x6540 0x6540 0x6544 0x6544 0x6548 0x6548 0x654c 0x654c
 [drm]   Encoders:
 [drm]     DFP2: INTERNAL_UNIPHY
 [drm] Connector 2:
 [drm]   VGA-1
 [drm]   DDC: 0x65c0 0x65c0 0x65c4 0x65c4 0x65c8 0x65c8 0x65cc 0x65cc
 [drm]   Encoders:
 [drm]     CRT1: INTERNAL_KLDSCP_DAC1
 radeondrmkmsfb0 at radeon0
 [drm] Initialized radeon 2.50.0 20080528 for radeon0 on minor 0
 radeondrmkmsfb0: framebuffer at 0xc0722000, size 1920x1080, depth 32, stride 7680
 wsdisplay0 at radeondrmkmsfb0 kbdmux 1: console (default, vt100 emulation), using wskbd0
 wsmux1: connecting to wsdisplay0
 entropy: ready

From: mlelstv@serpens.de (Michael van Elst)
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: kern/60180: radeon* is problematically slow
Date: Fri, 10 Apr 2026 07:13:48 -0000 (UTC)

 gnats-admin@NetBSD.org ("john@klos.com via gnats") writes:

 >While the cat is running on the Radeon console, the whole system becomes significantly
 >slower:


 That's not related to Radeon. Any kind of output to a framebuffer
 console is slow, in particular when there is no hardware support
 for scrolling.

 The whole system slows down because console output is done under
 KERNEL_LOCK.

 I use a patched wscons that avoids this. It probably leaves a
 small chance for a race that can disrupt the display. I sometimes
 see it for e.g. panic messages.

 Index: wsdisplay_vcons.c
 ===================================================================
 RCS file: /cvsroot/src/sys/dev/wscons/wsdisplay_vcons.c,v
 retrieving revision 1.70
 diff -p -u -r1.70 wsdisplay_vcons.c
 --- wsdisplay_vcons.c	28 Apr 2025 07:43:41 -0000	1.70
 +++ wsdisplay_vcons.c	10 Apr 2026 07:05:30 -0000
 @@ -215,7 +215,7 @@ vcons_init_common(struct vcons_data *vd,
  	vdp->wanted = NULL;
  	vdp->currenttype = def;
  	vdp->defaulttype = def;
 -	callout_init(&vdp->switch_callout, 0);
 +	callout_init(&vdp->switch_callout, CALLOUT_MPSAFE);
  	callout_setfunc(&vdp->switch_callout, vcons_do_switch, vd);
  #ifdef VCONS_DRAW_INTR
  	vdp->cells = 0;
 @@ -234,7 +234,8 @@ vcons_init_common(struct vcons_data *vd,
  #endif
  #ifdef VCONS_DRAW_INTR
  	if (enable_intr) {
 -		vdp->intr_softint = softint_establish(SOFTINT_SERIAL,
 +		vdp->intr_softint = softint_establish(
 +		    SOFTINT_SERIAL | SOFTINT_MPSAFE,
  		    vcons_softintr, vd);
  		callout_init(&vdp->intr, CALLOUT_MPSAFE);
  		callout_setfunc(&vdp->intr, vcons_intr, vd);
 @@ -766,8 +767,8 @@ void
  vcons_update_screen(struct vcons_screen *scr)
  {
  #ifdef VCONS_DRAW_INTR
 -	uint32_t *charptr = scr->scr_chars;
 -	long *attrptr = scr->scr_attrs;
 +	uint32_t *charptr = scr->scr_chars, c;
 +	long *attrptr = scr->scr_attrs, a;
  	struct rasops_info *ri = &scr->scr_ri;
  	struct vcons_data *vd = scr->scr_vd;
  	struct vcons_data_private *vdp = vd->private;
 @@ -799,12 +800,14 @@ vcons_update_screen(struct vcons_screen 
  				 * and we already made sure the screen we're
  				 * working on is visible
  				 */
 -				if ((vdp->chars[boffset] != charptr[offset]) ||
 -				    (vdp->attrs[boffset] != attrptr[offset])) {
 -					scr->putchar(ri, i, j,
 -				 	   charptr[offset], attrptr[offset]);
 -					vdp->chars[boffset] = charptr[offset];
 -					vdp->attrs[boffset] = attrptr[offset];
 +				c = charptr[offset];
 +				a = attrptr[offset];
 +
 +				if ((vdp->chars[boffset] != c) ||
 +				    (vdp->attrs[boffset] != a)) {
 +					scr->putchar(ri, i, j, c, a);
 +					vdp->chars[boffset] = c;
 +					vdp->attrs[boffset] = a;
  				}
  				offset++;
  				boffset++;
 @@ -1379,20 +1382,26 @@ vcons_cursor_noread(void *cookie, int on
  	struct rasops_info *ri = cookie;
  	struct vcons_screen *scr = ri->ri_hw;
  	int offset = 0, ofs;
 +	int orow, ocol;

  #ifdef WSDISPLAY_SCROLLSUPPORT
  	offset = scr->scr_current_offset;
  #endif
 -	ofs = offset + ri->ri_crow * ri->ri_cols + ri->ri_ccol;
 +
 +	orow = ri->ri_crow;
 +	ocol = ri->ri_ccol;
 +	ri->ri_crow = row;
 +	ri->ri_ccol = col;
 +
 +	ofs = offset + orow * ri->ri_cols + ocol;
  	if ((ri->ri_flg & RI_CURSOR) &&
  	   (((scr->scr_flags & VCONS_DONT_READ) != VCONS_DONT_READ) || on)) {
 -		scr->putchar(cookie, ri->ri_crow, ri->ri_ccol,
 +		scr->putchar(cookie, orow, ocol,
  		    scr->scr_chars[ofs], scr->scr_attrs[ofs]);
  		ri->ri_flg &= ~RI_CURSOR;
  	}
 -	ri->ri_crow = row;
 -	ri->ri_ccol = col;
 -	ofs = offset + ri->ri_crow * ri->ri_cols + ri->ri_ccol;
 +
 +	ofs = offset + row * ri->ri_cols + col;
  	if (on) {
  		scr->putchar(cookie, row, col, scr->scr_chars[ofs],
  #ifdef VCONS_DEBUG_CURSOR_NOREAD

>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.