[U-Boot] [PATCH v2 00/20] x86: Add CPU uclass and multi-core support for Minnowboard MAX

Simon Glass sjg at chromium.org
Wed Apr 29 04:25:02 CEST 2015


This series adds a new CPU uclass which is intended to be useful on any
architecture. So far it has a very simple interface and a command to show
CPU details.

This series also introduces multi-core init for x86. It is implemented and
enabled on Minnowboard MAX, a single/dual-core Atom board. The CPU uclass is
implemented for x86 and the Simple Firmware Interface provides these details
to the kernel, since ACPI is not yet available.

With these changes Minnowboard MAX can boot into Linux with both cores
enabled.

This series is available at u-boot-x86 branch 'cpu-working'.

Changes in v2:
- Use capitals for the header guard
- Change 'print' to 'Print' in comment
- Correct bugs in number output
- Change header guard to capital letters
- Change get_info() in function comment to cpu_get_info()
- Rename CONFIG_SFI to CONFIG_GENERATE_SFI_TABLE and move within Kconfig
- Correct Kconfig help indentation and text
- Drop SFI_BASE config option
- Always build sfi.o
- Use SFI_TABLE_MAX_ENTRIES instead of 16 and ARRAY_SIZE()
- Make get_entry_start() static
- Use table_compute_checksum() to computer checksum
- Add a few blank lines
- Move patch to after the CPU uclass patch
- Drop the RTC table as it is not needed
- Move SFI calling code to write_tables()
- Remove IDLE table
- Remove SFI_SYST_SEARCH_BEGIN and SFI_SYST_SEARCH_END
- Move '__packed' to immediately after 'struct'
- Add SFI_DEV_TYPE_SD and convert to enum
- Remove #ifdef CONFIG_SFI from hedaer file
- Move sfi.h header file to arch/x86/include/asm
- Remove unnecessary \t\n after mfence assembler instruction

Simon Glass (20):
  Fix comment nits in board_f.c
  dm: core: Add a function to bind a driver for a device tree node
  x86: Remove unwanted MMC debugging
  x86: Disable -Werror
  Move display_options functions to their own header
  Add print_freq() to display frequencies nicely
  dm: Implement a CPU uclass
  x86: Add support for the Simple Firmware Interface (SFI)
  Add a 'cpu' command to print CPU information
  x86: Add atomic operations
  x86: Add defines for fixed MTRRs
  x86: Add an mfence macro
  x86: Store the GDT pointer in global_data
  x86: Provide access to the IDT
  x86: Add multi-processor init
  x86: Add functions to set and clear bits on MSRs
  x86: Allow CPUs to be set up after relocation
  x86: Add a CPU driver for baytrail
  x86: Tidy up the LAPIC init code
  x86: Enable multi-core init for Minnowboard MAX

 arch/x86/Kconfig                         |  39 +++
 arch/x86/cpu/Makefile                    |   2 +
 arch/x86/cpu/baytrail/Makefile           |   1 +
 arch/x86/cpu/baytrail/cpu.c              | 206 +++++++++++++
 arch/x86/cpu/baytrail/valleyview.c       |   1 -
 arch/x86/cpu/config.mk                   |   2 +-
 arch/x86/cpu/cpu.c                       |  38 +++
 arch/x86/cpu/interrupts.c                |   5 +
 arch/x86/cpu/ivybridge/model_206ax.c     |   4 +-
 arch/x86/cpu/lapic.c                     |  20 +-
 arch/x86/cpu/mp_init.c                   | 507 +++++++++++++++++++++++++++++++
 arch/x86/cpu/sipi.S                      | 215 +++++++++++++
 arch/x86/dts/minnowmax.dts               |  20 ++
 arch/x86/include/asm/arch-baytrail/msr.h |  30 ++
 arch/x86/include/asm/atomic.h            | 115 +++++++
 arch/x86/include/asm/cpu.h               |  19 ++
 arch/x86/include/asm/global_data.h       |   1 +
 arch/x86/include/asm/interrupt.h         |   2 +
 arch/x86/include/asm/lapic.h             |   7 -
 arch/x86/include/asm/mp.h                |  94 ++++++
 arch/x86/include/asm/msr.h               |  19 ++
 arch/x86/include/asm/mtrr.h              |  14 +
 arch/x86/include/asm/sfi.h               | 137 +++++++++
 arch/x86/include/asm/sipi.h              |  79 +++++
 arch/x86/include/asm/smm.h               |  14 +
 arch/x86/include/asm/u-boot-x86.h        |   2 +
 arch/x86/lib/Makefile                    |   1 +
 arch/x86/lib/sfi.c                       | 154 ++++++++++
 arch/x86/lib/tables.c                    |   5 +
 common/Kconfig                           |   8 +
 common/Makefile                          |   1 +
 common/board_f.c                         |   9 +-
 common/board_r.c                         |   2 +-
 common/cmd_cpu.c                         | 113 +++++++
 configs/minnowmax_defconfig              |   4 +
 drivers/Kconfig                          |   2 +
 drivers/Makefile                         |   1 +
 drivers/core/lists.c                     |   9 +-
 drivers/cpu/Kconfig                      |   8 +
 drivers/cpu/Makefile                     |   7 +
 drivers/cpu/cpu-uclass.c                 |  61 ++++
 include/common.h                         |  16 +-
 include/cpu.h                            |  84 +++++
 include/display_options.h                |  59 ++++
 include/dm/lists.h                       |  16 +
 include/dm/uclass-id.h                   |   1 +
 lib/display_options.c                    |  51 +++-
 47 files changed, 2151 insertions(+), 54 deletions(-)
 create mode 100644 arch/x86/cpu/baytrail/cpu.c
 create mode 100644 arch/x86/cpu/mp_init.c
 create mode 100644 arch/x86/cpu/sipi.S
 create mode 100644 arch/x86/include/asm/arch-baytrail/msr.h
 create mode 100644 arch/x86/include/asm/atomic.h
 create mode 100644 arch/x86/include/asm/mp.h
 create mode 100644 arch/x86/include/asm/sfi.h
 create mode 100644 arch/x86/include/asm/sipi.h
 create mode 100644 arch/x86/include/asm/smm.h
 create mode 100644 arch/x86/lib/sfi.c
 create mode 100644 common/cmd_cpu.c
 create mode 100644 drivers/cpu/Kconfig
 create mode 100644 drivers/cpu/Makefile
 create mode 100644 drivers/cpu/cpu-uclass.c
 create mode 100644 include/cpu.h
 create mode 100644 include/display_options.h

-- 
2.2.0.rc0.207.ga3a616c



More information about the U-Boot mailing list