Bug #8902

Panic with debug kernel on AMD Ryzen hardware

Added by Gary Mills 8 months ago. Updated 7 months ago.

Status:ClosedStart date:2017-12-07
Priority:NormalDue date:
Assignee:-% Done:

100%

Category:kernel
Target version:-
Difficulty:Medium Tags:needs-triage

Description

This AMD Ryzen system is running OI hipster quite nicely. When I use ONU to build a new BE with an illumos debug kernel, the new BE fails early in the boot. Only the SunOS banner appears on the console. With a serial console and a verbose boot, I get this output when the panic occurs:

Reading Intel IOMMU boot options
npe0 at root: space 0 offset 0
npe0 is /pci@0,0
PCI Express-device: isa@14,3, isa0
startup.c:2308: configure() done
startup.c:2329: NULLing out bootops
startup.c:2346: Enabling interrupts

panic[cpu0]/thread=fffffffffbc46540: assertion failed: AMD_IOMMU_REG_GET32(&ivrsp->ivrs_ivinfo, AMD_IOMMU_ACPI_IVINFO_RSV2) == 0, file: ../../i86pc/io/amd_iommu/amd_iommu_acpi.c, line: 348

Warning - stack not written to the dump buffer
fffffffffbc88700 genunix:process_type+166960 ()
fffffffffbc88740 amd_iommu:amd_iommu_acpi_init+219 ()
fffffffffbc88760 amd_iommu:_init+51 ()
fffffffffbc887a0 genunix:modinstall+113 ()
fffffffffbc88800 genunix:mod_hold_installed_mod+77 ()
fffffffffbc88880 genunix:modrload+dd ()
fffffffffbc888a0 genunix:modload+17 ()
fffffffffbc888c0 unix:startup_end+174 ()
fffffffffbc888d0 unix:startup+5a ()
fffffffffbc88910 genunix:main+9b ()
fffffffffbc88920 unix:_locore_start+90 ()

skipping system dump - no dump device configured
booting...

Here is part of the code from the i86pc/io/amd_iommu/amd_iommu_acpi.c file, in the amd_iommu_acpi_init function:

335:    if (AcpiGetTable(IVRS_SIG, 1, (ACPI_TABLE_HEADER **)&ivrsp) != AE_OK) {
336:        cmn_err(CE_NOTE, "!amd_iommu: No AMD IOMMU ACPI IVRS table");
337:        return (DDI_FAILURE);
338:    }
339:
340:    /*
341:     * Reserved field must be 0
342:     */
343:    ASSERT(ivrsp->ivrs_resv == 0);
344:
345:    ASSERT(AMD_IOMMU_REG_GET32(&ivrsp->ivrs_ivinfo,
346:        AMD_IOMMU_ACPI_IVINFO_RSV1) == 0);
347:    ASSERT(AMD_IOMMU_REG_GET32(&ivrsp->ivrs_ivinfo,
348:        AMD_IOMMU_ACPI_IVINFO_RSV2) == 0);

It seems to be the second assert that causes the panic. Perhaps it should be doing something other than assert at this point?

History

#1 Updated by Electric Monk 7 months ago

  • % Done changed from 0 to 100
  • Status changed from New to Closed

git commit bea2d2b818ffe6739ebe3d447f51007733f518ce

commit  bea2d2b818ffe6739ebe3d447f51007733f518ce
Author: Gary Mills <gary_mills@fastmail.fm>
Date:   2017-12-14T01:29:13.000Z

    8902 Panic with debug kernel on AMD Ryzen hardware
    Reviewed by: ken mays <maybird1776@yahoo.com>
    Reviewed by: Toomas Soome <tsoome@me.com>
    Approved by: Robert Mustacchi <rm@joyent.com>

Also available in: Atom