Project

General

Profile

Actions

Bug #505

open

Intel Harcuvar CRB Denverton_NS С3000. Only 15 cores of a 16 core processor is defined in the operating system.

Added by Dmitry Ponamorev over 1 year ago. Updated about 1 year ago.

Status:
New
Priority:
Low
Category:
board support
Target version:
Start date:
08/22/2023
Due date:
08/22/2023 (about 15 months late)
% Done:

100%

Estimated time:
1.00 h
Affected versions:
Needs backport to:
Affected hardware:
Intel Harcuvar CRB, Intel(R) Atom(TM) CPU C3958
Affected OS:
Debian 11, Ubunto 20.04 (and later)

Description

Found a bug with the definition of not all processor cores of the Intel(R) Atom(TM) CPU C3958 processor in operating systems.
The Debian or Ubuntu operating system defines only 15 cores. The problem concerns exactly the 16th core processor.
For processors with fewer cores, the number of cores is determined correctly.
The problem was found in coreboot version 4.14 and later. Version coreboot 4.11 did not have this problem.
Most likely this is due to incorrect initialization of apic_id. (apic_id 0)

An example of the initialization output of the processor cores is below:

Will perform SMM setup.
CPU: Intel(R) Atom(TM) CPU C3958 @ 2.00GHz.
AP: slot 1 apic_id 6, MCU rev: 0x00000034
AP: slot 13 apic_id 1e, MCU rev: 0x00000034
AP: slot 6 apic_id a, MCU rev: 0x00000034
AP: slot 14 apic_id e, MCU rev: 0x00000034
AP: slot 5 apic_id 4, MCU rev: 0x00000034
AP: slot 2 apic_id 10, MCU rev: 0x00000034
AP: slot 4 apic_id 14, MCU rev: 0x00000034
AP: slot 11 apic_id 1c, MCU rev: 0x00000034
AP: slot 15 apic_id 8, MCU rev: 0x00000034
AP: slot 8 apic_id 16, MCU rev: 0x00000034
AP: slot 10 apic_id c, MCU rev: 0x00000034
AP: slot 3 apic_id 1a, MCU rev: 0x00000034
AP: slot 9 apic_id 2, MCU rev: 0x00000034
AP: slot 7 apic_id 12, MCU rev: 0x00000034
AP: slot 12 apic_id 18, MCU rev: 0x00000034
smm_place_entry_code: smbase 7ffe8400, stack_top 7fe08000
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffec000, cpu = 0
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe9000, cpu = 12
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe8800, cpu = 14
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe9c00, cpu = 9
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe8400, cpu = 15
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffeb800, cpu = 2
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe9400, cpu = 11
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe8c00, cpu = 13
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffea000, cpu = 8
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffeb400, cpu = 3
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffeb000, cpu = 4
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffea400, cpu = 7
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffe9800, cpu = 10
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffebc00, cpu = 1
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffea800, cpu = 6
smm_do_relocation : curr_smbase 0x30000 perm_smbase 0x7ffeac00, cpu = 5
Initializing CPU #0
Turbo is unavailable
CPU #0 initialized
Initializing CPU #8
Initializing CPU #12
Initializing CPU #14
Initializing CPU #4
Initializing CPU #9
Initializing CPU #10
Initializing CPU #1
Initializing CPU #15
Initializing CPU #7
Initializing CPU #11
Initializing CPU #3
Initializing CPU #2
Initializing CPU #13
Initializing CPU #6
CPU #7 initialized
CPU #14 initialized
CPU #15 initialized
CPU #2 initialized
CPU #6 initialized
CPU #12 initialized
Initializing CPU #5
CPU #3 initialized
CPU #1 initialized
CPU #10 initialized
CPU #4 initialized
CPU #11 initialized
CPU #5 initialized
CPU #9 initialized
CPU #8 initialized
CPU #13 initialized

Actions #1

Updated by Dmitry Ponamorev over 1 year ago

  • Due date set to 08/22/2023
  • Assignee changed from Angel Pons to Dmitry Ponamorev
  • % Done changed from 0 to 100
  • Estimated time set to 1.00 h

The problem was in devicetree.cb initializetion. These changes helped:

device cpu_cluster 0 on
- device lapic 0xbeef on end # NOTE: correct Local APIC ID is set in in dev_enumerate()
+ device lapic 0 on end
end

Actions #2

Updated by Dmitry Ponamorev about 1 year ago

  • Priority changed from Normal to Low
Actions

Also available in: Atom PDF