NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: cpuctl(8) - unable to update amd ucode - no such file



I’d run the failing commands under ktruss,  one should be able to see the path it tries to open.


----

On Sat, Sep 19, 2026 at 7:40 AM P Gman <patrickgunsolley%gmail.com@localhost> wrote:
Hello

I'm using NetBSD 11.0

cat /proc/cpuinfo (partial; showing cpu 0 only)

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen 5 PRO 2400G with Radeon Vega Graphics

cpuctl list:

Num  HwId Unbound LWPs Interrupts Last change              #Intr
---- ---- ------------ ---------- ------------------------ -----
0    0    online       intr       Fri Sep 18 08:01:29 2026 13
1    1    online       intr       Fri Sep 18 08:01:29 2026 1
2    2    online       intr       Fri Sep 18 08:01:29 2026 1
3    3    online       intr       Fri Sep 18 08:01:29 2026 1
4    4    online       intr       Fri Sep 18 08:01:29 2026 1
5    5    online       intr       Fri Sep 18 08:01:29 2026 1
6    6    online       intr       Fri Sep 18 08:01:29 2026 1
7    7    online       intr       Fri Sep 18 08:01:29 2026 1

The microcode was downloaded from the kernel.org git; url provided by cpuctl(8)

The firmware was copied before attempting ucode update to:

/libdata/firmware/x86/amd/microcode_amd_fam17h.bin

Here's the command description under cpuctl(8)

     ucode [cpu] [file]
               This applies the microcode patch to CPUs.  Unless -v was given,
               errors indicating that the microcode already exists on the CPU
               in question are ignored.  If cpu is not specified or -1, all
               CPUs are updated.  (AMD CPU updates need to update all CPUs at
               once.)  If cpu is -2, the current CPUs are updated.  The
               default filename is used if no filename is specified.  The file
               pathname containing the ucode updates are searched relative to
               the default firmware path found in sysctl(7) hw.firmware.path.
               The identify command prints the installed version on the
               specified CPUs.  On success the identify command shows
               different ucode versions before and after this command.

               Some problems will only be reported in the kernel message
               buffer, so check dmesg(8) in case of errors.

As mentioned, the file pathname is searched relative to hw.firmware.path:

hw.firmware.path =
/libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata

Also, notice that all cpus must be handled together. I'm guessing
that's where the -1 option comes into play.

So, I tried the following forms:

> doas cpuctl ucode -1 /x86/amd/microcode_amd_fam17h.bin
> doas cpuctl ucode -1 /libdata/firmware/x86/amd/microcode_amd_fam17h.bin
> doas cpuctl ucode -1 microcode_amd_fam17h.bin
> doas cpuctl ucode -1

Each form returns "cpuctl: -1: No such file or directory"

And, just in case the problem is cpu -1, I tried it with cpu 0, and it
returned:

> doas cpuctl ucode 0 /x86/amd/microcode_amd_fam17h.bin

cpuctl: ucode updates on AMD can only be done on all CPUs at once
cpuctl: unsupported

I'm hoping it's something extremely obvious, but maybe I'm too tired
at the moment to see it.


Home | Main Index | Thread Index | Old Index