Print this page
9578 HVM fails assertion in opteron_get_nnodes() with a Opteron 6262 HE CPU on the host system
*** 26,36 ****
* Copyright (c) 2010, Intel Corporation.
* All rights reserved.
*/
/*
* Copyright 2018 Joyent, Inc.
! * Copyright 2013 Nexenta Systems, Inc. All rights reserved.
* Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
*/
#include <sys/types.h>
#include <sys/thread.h>
--- 26,36 ----
* Copyright (c) 2010, Intel Corporation.
* All rights reserved.
*/
/*
* Copyright 2018 Joyent, Inc.
! * Copyright 2018 Nexenta Systems, Inc.
* Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
*/
#include <sys/types.h>
#include <sys/thread.h>
*** 717,765 ****
cmn_err(CE_WARN, "cpu%d: couldn't %smsr 0x%x, error %d",
cp->cpu_id, rw, msr, error);
}
/*
! * Determine the number of nodes in a Hammer / Greyhound / Griffin family
! * system.
*/
static uint_t
opteron_get_nnodes(void)
{
static uint_t nnodes = 0;
- if (nnodes == 0) {
- #ifdef DEBUG
- uint_t family;
-
/*
- * This routine uses a PCI config space based mechanism
- * for retrieving the number of nodes in the system.
- * Device 24, function 0, offset 0x60 as used here is not
- * AMD processor architectural, and may not work on processor
- * families other than those listed below.
- *
- * Callers of this routine must ensure that we're running on
- * a processor which supports this mechanism.
- * The assertion below is meant to catch calls on unsupported
- * processors.
- */
- family = cpuid_getfamily(CPU);
- ASSERT(family == 0xf || family == 0x10 || family == 0x11);
- #endif /* DEBUG */
-
- /*
* Obtain the number of nodes in the system from
* bits [6:4] of the Node ID register on node 0.
*
* The actual node count is NodeID[6:4] + 1
*
* The Node ID register is accessed via function 0,
* offset 0x60. Node 0 is device 24.
*/
nnodes = ((pci_getl_func(0, 24, 0, 0x60) & 0x70) >> 4) + 1;
! }
return (nnodes);
}
uint_t
do_erratum_298(struct cpu *cpu)
--- 717,751 ----
cmn_err(CE_WARN, "cpu%d: couldn't %smsr 0x%x, error %d",
cp->cpu_id, rw, msr, error);
}
/*
! * Determine the number of nodes in a system.
! *
! * This routine uses a PCI config space based mechanism
! * for retrieving the number of nodes in the system.
! *
! * Current processor families that support this mechanism are
! * 0xf, 0x10, 0x11, and 0x15.
*/
static uint_t
opteron_get_nnodes(void)
{
static uint_t nnodes = 0;
/*
* Obtain the number of nodes in the system from
* bits [6:4] of the Node ID register on node 0.
*
* The actual node count is NodeID[6:4] + 1
*
* The Node ID register is accessed via function 0,
* offset 0x60. Node 0 is device 24.
*/
+ if (nnodes == 0)
nnodes = ((pci_getl_func(0, 24, 0, 0x60) & 0x70) >> 4) + 1;
!
return (nnodes);
}
uint_t
do_erratum_298(struct cpu *cpu)