Project

General

Profile

Actions

Bug #5948

open

drmach_init should support 12 cpus (not a power of 2)

Added by Richard PALO about 7 years ago. Updated about 7 years ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
kernel
Start date:
2015-05-24
Due date:
% Done:

0%

Estimated time:
Difficulty:
Medium
Tags:
needs-triage
Gerrit CR:

Description

[from discuss@]
Happy to have now a clone of our server board (supermicro H8SGL-F) for a
workstation, naturally with latest optéron:

 $ psrinfo  -v -p 1
 The physical processor has 12 virtual processors (0-11)
   x86 (AuthenticAMD 600F20 family 21 model 2 step 0 clock 2300 MHz)
     AMD Opteron(tm) Processor 6338P

It is a 12 core processor and I notice the following new message:
drmach_acpi: [ID 779328 kern.warning] WARNING: drmach_init: number of logical CPUs (12) in physical processor is not power of 2.

not [yet] too familiar with dynamic reconfigure issues, is this [already] an issue or a rather a noop?

 static int
 drmach_init(void)
 {
     DRMACH_HANDLE   hdl;
     drmachid_t  id;
     uint_t      bnum;

     if (MAX_BOARDS > SHRT_MAX) {
         cmn_err(CE_WARN, "!drmach_init: system has too many (%d) " 
             "hotplug capable boards.", MAX_BOARDS);
         return (ENXIO);
     } else if (MAX_CMP_UNITS_PER_BOARD > 1) {
         cmn_err(CE_WARN, "!drmach_init: DR doesn't support multiple " 
             "(%d) physical processors on one board.",
             MAX_CMP_UNITS_PER_BOARD);
         return (ENXIO);
     } else if (MAX_CORES_PER_CMP & (MAX_CORES_PER_CMP - 1)) {
         cmn_err(CE_WARN, "!drmach_init: number of logical CPUs (%d) in " 
             "physical processor is not power of 2.",
             MAX_CORES_PER_CMP);
         return (ENXIO);
     } else if (MAX_CPU_UNITS_PER_BOARD > DEVSET_CPU_NUMBER ||
         MAX_MEM_UNITS_PER_BOARD > DEVSET_MEM_NUMBER ||
         MAX_IO_UNITS_PER_BOARD > DEVSET_IO_NUMBER) {
         cmn_err(CE_WARN, "!drmach_init: system has more CPU/memory/IO " 
             "units than the DR driver can handle.");
         return (ENXIO);
     }

     rw_init(&drmach_cpr_rwlock, NULL, RW_DEFAULT, NULL);
     drmach_cpr_cid = callb_add(drmach_cpr_callb, NULL,
         CB_CL_CPR_PM, "drmach");

It appears to simply turn off dynamic reconfiguration.

so far I've done:

diff --git a/usr/src/uts/i86pc/io/acpi/drmach_acpi/drmach_acpi.c b/usr/src/uts/i86pc/io/acpi/drmach_acpi/drmach_acpi.c
index 8f93c2d..7078347 100644
--- a/usr/src/uts/i86pc/io/acpi/drmach_acpi/drmach_acpi.c
+++ b/usr/src/uts/i86pc/io/acpi/drmach_acpi/drmach_acpi.c
@@ -895,11 +895,6 @@ drmach_init(void)
                    "(%d) physical processors on one board.",
                    MAX_CMP_UNITS_PER_BOARD);
                return (ENXIO);
-       } else if (!ISP2(MAX_CORES_PER_CMP)) {
-               cmn_err(CE_WARN, "!drmach_init: number of logical CPUs (%d) in " 
-                   "physical processor is not power of 2.",
-                   MAX_CORES_PER_CMP);
-               return (ENXIO);
        } else if (MAX_CPU_UNITS_PER_BOARD > DEVSET_CPU_NUMBER ||
            MAX_MEM_UNITS_PER_BOARD > DEVSET_MEM_NUMBER ||
            MAX_IO_UNITS_PER_BOARD > DEVSET_IO_NUMBER) {

which stifles the warning, but on this processor board I don't believe I have means to test
the actual reconfiguration code with physical processors to see what else needs to be done.
(would psradm -f <x> cause a soft reconfig?)

Actions #1

Updated by Richard PALO about 7 years ago

(! this should be in illumos-gate, not openindiana... sorry)

Actions #2

Updated by Marcel Telka about 7 years ago

  • Project changed from OpenIndiana Distribution to illumos gate
  • Category set to kernel
Actions

Also available in: Atom PDF