[Bug 276426] amd64: microcode update caused a page fault trying to send data to the logger

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 18 Jan 2024 20:13:56 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=276426

--- Comment #3 from John F. Carr <jfc@mit.edu> ---
Microcode update is late in /etc/rc processing after "Mounting local
filesytems" but before a login prompt.

SMAP is already enabled before the microcode is updated.  The copyout call is
bound to copyout_smap_std:

   0xffffffff80c337ca <uiomove_faultflag+298>:  mov    %r15,%rdi
   0xffffffff80c337cd <uiomove_faultflag+301>:  mov    %r12,%rdx
   0xffffffff80c337d0 <uiomove_faultflag+304>:  call   0xffffffff81088be0
<copyout_smap_std>

When the crash is triggered, about once in 15 boots, it happens during /etc/rc
script processing just before the system would go multi-user.

The active processes in the latest crash are

UID PID PPID  C PRI NI   VSZ  RSS MWCHAN   STAT TT     TIME COMMAND
  0   0    0 25 -16  0     0    0 swapin   DLs   -  0:00.17 [kernel]
  0   1    0  0  31  0 11780  836 wait     DLs   -  0:00.00 [init]
  0   2    0 19 -16  0     0    0 -        DL    -  0:00.00 [KTLS]
  0   3    0 47 -16  0     0    0 crypto_w DL    -  0:00.00 [crypto]
  0   4    0 41 -16  0     0    0 -        DL    -  0:00.00 [cam]
  0   5    0 14 -16  0     0    0 -        DL    -  0:00.00 [rand_harvestq]
  0   6    0 29 -16  0     0    0 idle     DL    -  0:00.00 [enc_daemon0]
  0   7    0  3 -16  0     0    0 psleep   DL    -  0:00.00 [pagedaemon]
  0   8    0 28 -16  0     0    0 psleep   DL    -  0:00.00 [vmdaemon]
  0   9    0 22 -16  0     0    0 psleep   DL    -  0:00.00 [bufdaemon]
  0  10    0 37 -16  0     0    0 audit_wo DL    -  0:00.00 [audit]
  0  11    0  0 155  0     0    0 -        RL    -  0:00.00 [idle]
  0  12    0 -1 -52  0     0    0 -        WL    -  0:00.00 [intr]
  0  13    0 39  20  0     0    0 -        DL    -  0:00.00 [geom]
  0  14    0 32 -16  0     0    0 seqstate DL    -  0:00.00 [sequencer 00]
  0  15    0 11 -68  0     0    0 -        DL    -  0:00.00 [usb]
  0  16    0 20 -16  0     0    0 vlruwt   DL    -  0:00.00 [vnlru]
  0  17    0 14  16  0     0    0 syncer   DL    -  0:00.00 [syncer]
  0  18    1 31  52  0 13552 2576 wait     Ds+   -  0:00.00 [sh]
  0  82    0  6  -8  0     0    0 t->zthr_ DL    -  0:04.74 [zfskern]
  0 139   18 43  52  0 13552 2588 wait     D+    -  0:00.00 [sh]
  0 144  139  0  52  0 12732 1868 pipelk   D+    -  0:00.00 [cpucontrol]
  0 145  139 45  52  0 12872 2176 -        RC+   -  0:00.00 [logger]
  0 148    1 31  52  0 12872 2052 select   Ds    -  0:00.00 [logger]


This is my processor as reported early in boot:

CPU: AMD EPYC 7402P 24-Core Processor                (2794.96-MHz K8-class CPU)
  Origin="AuthenticAMD"  Id=0x830f10  Family=0x17  Model=0x31  Stepping=0
 
Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
 
Features2=0x7ed8320b<SSE3,PCLMULQDQ,MON,SSSE3,FMA,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
  AMD Features=0x2e500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM>
  AMD
Features2=0x75c237ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,IBS,SKINIT,WDT,TCE,Topology,PCXC,PNXC,DBE,PL2I,MWAITX,ADMSKX>
  Structured Extended
Features=0x219c91a9<FSGSBASE,BMI1,AVX2,SMEP,BMI2,PQM,PQE,RDSEED,ADX,SMAP,CLFLUSHOPT,CLWB,SHA>
  Structured Extended Features2=0x400004<UMIP,RDPID>
  XSAVE Features=0xf<XSAVEOPT,XSAVEC,XINUSE,XSAVES>
  AMD Extended Feature Extensions ID
EBX=0x18cf757<CLZERO,IRPerf,XSaveErPtr,RDPRU,MCOMMIT,WBNOINVD,IBPB,IBRS,STIBP,PREFER_IBRS,PPIN,SSBD>
  SVM: NP,NRIP,VClean,AFlush,DAssist,NAsids=32768
  TSC: P-state invariant, performance statistics

After update I have microcode version 0x830107a.

I don't think the boot loader can install microcode on my AMD processor, only
on an Intel processor.

-- 
You are receiving this mail because:
You are the assignee for the bug.