Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18303
-gerrit
commit f755fe685fd1aa559e326c1aff8dc1631e36e0c5
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Tue Feb 7 11:33:56 2017 -0600
soc/intel/apollolake: dump CSE status
Dump the CSE status registers for potential debugging purposes.
Explicitly call out manufacturing mode of the part since it's
important shipping devices ensure manufacturing mode is locked
down. Intel is planning on writing a common driver so a complete
status -> string dumps was not done because (surprise surprise)
not all the fields are equal with previous implementations.
BUG=chrome-os-partner:62177
BRANCH=reef
TEST=Booted and noted dump of CSE status registers.
Change-Id: I71d15722bb193877f1569c1d3e7f441302f5bd14
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/soc/intel/apollolake/Makefile.inc | 1 +
src/soc/intel/apollolake/cse.c | 57 +++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+)
diff --git a/src/soc/intel/apollolake/Makefile.inc b/src/soc/intel/apollolake/Makefile.inc
index 5a65f43..df93f0b 100644
--- a/src/soc/intel/apollolake/Makefile.inc
+++ b/src/soc/intel/apollolake/Makefile.inc
@@ -57,6 +57,7 @@ smm-y += uart_early.c
ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c
ramstage-y += cpu.c
ramstage-y += chip.c
+ramstage-y += cse.c
ramstage-y += elog.c
ramstage-y += flash_ctrlr.c
ramstage-y += dsp.c
diff --git a/src/soc/intel/apollolake/cse.c b/src/soc/intel/apollolake/cse.c
new file mode 100644
index 0000000..b8ab1f0
--- /dev/null
+++ b/src/soc/intel/apollolake/cse.c
@@ -0,0 +1,57 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2017 Google, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <arch/io.h>
+#include <bootstate.h>
+#include <console/console.h>
+#include <soc/pci_devs.h>
+#include <stdint.h>
+
+#define PCI_ME_HFSTS1 0x40
+#define PCI_ME_HFSTS2 0x48
+#define PCI_ME_HFSTS3 0x60
+#define PCI_ME_HFSTS4 0x64
+#define PCI_ME_HFSTS5 0x68
+#define PCI_ME_HFSTS6 0x6c
+
+static uint32_t dump_status(int index, int reg_addr)
+{
+ uint32_t reg = pci_read_config32(CSE_DEV, reg_addr);
+
+ printk(BIOS_DEBUG, "CSE FWSTS%d: 0x%08x\n", index, reg);
+
+ return reg;
+}
+
+static void dump_cse_state(void *unused)
+{
+ uint32_t fwsts1;
+
+ fwsts1 = dump_status(1, PCI_ME_HFSTS1);
+ dump_status(2, PCI_ME_HFSTS2);
+ dump_status(3, PCI_ME_HFSTS3);
+ dump_status(4, PCI_ME_HFSTS4);
+ dump_status(5, PCI_ME_HFSTS5);
+ dump_status(6, PCI_ME_HFSTS6);
+
+ /* Minimal decoding is done here in order to call out most important
+ pieces. Manufacturing mode needs to be locked down prior to shipping
+ the product so it's called out explicitly. */
+ printk(BIOS_DEBUG, "ME: Manufacturing Mode : %s\n",
+ (fwsts1 & (1 << 0x4)) ? "YES" : "NO");
+}
+
+BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, dump_cse_state, NULL);
+BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_LOAD, BS_ON_EXIT, dump_cse_state, NULL);
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18304
-gerrit
commit c72149782e4c0dc54f06529bd03100f7aad2457b
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Fri Feb 3 16:09:45 2017 -0600
southbridge/intel/common/firmware: allow locking ME without HAVE_ME_BIN
The apollolake boards don't have an me.bin proper, but they still have
descriptor regions which need to be locked down. Therefore, remove the
restriction of HAVE_ME_BIN from LOCK_MANAGEMENT_ENGINE.
BUG=chrome-os-partner:62177
TEST=For apollolake one can select LOCK_MANAGEMENT_ENGINE.
Change-Id: I73aab3a604ec25cd56d760bf76cc21c5a298799e
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/southbridge/intel/common/firmware/Kconfig | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/southbridge/intel/common/firmware/Kconfig b/src/southbridge/intel/common/firmware/Kconfig
index af26b2d..da40db0 100644
--- a/src/southbridge/intel/common/firmware/Kconfig
+++ b/src/southbridge/intel/common/firmware/Kconfig
@@ -165,7 +165,6 @@ config IFD_PLATFORM_SECTION
config LOCK_MANAGEMENT_ENGINE
bool "Lock ME/TXE section"
- depends on HAVE_ME_BIN
default n
help
The Intel Firmware Descriptor supports preventing write accesses
Aaron Durbin (adurbin(a)chromium.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18303
-gerrit
commit 1b5fb23f31d8a6a77bc4d12e17e31c0d288bddc6
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Tue Feb 7 11:33:56 2017 -0600
soc/intel/apollolake: dump CSE status
Dump the CSE status registers for potential debuggin purposes.
Explicitly call out manufacturing mode of the part since it's
important shipping devices ensure manufacturing mode is locked
down. Intel is planning on writing a common driver so a complete
status -> string dumps was not done because (surprise surprise)
not all the fields are equal with previous implementations.
BUG=chrome-os-partner:62177
BRANCH=reef
TEST=Booted and noted dump of CSE status registers.
Change-Id: I71d15722bb193877f1569c1d3e7f441302f5bd14
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
---
src/soc/intel/apollolake/Makefile.inc | 1 +
src/soc/intel/apollolake/cse.c | 57 +++++++++++++++++++++++++++++++++++
2 files changed, 58 insertions(+)
diff --git a/src/soc/intel/apollolake/Makefile.inc b/src/soc/intel/apollolake/Makefile.inc
index 5a65f43..df93f0b 100644
--- a/src/soc/intel/apollolake/Makefile.inc
+++ b/src/soc/intel/apollolake/Makefile.inc
@@ -57,6 +57,7 @@ smm-y += uart_early.c
ramstage-$(CONFIG_HAVE_ACPI_TABLES) += acpi.c
ramstage-y += cpu.c
ramstage-y += chip.c
+ramstage-y += cse.c
ramstage-y += elog.c
ramstage-y += flash_ctrlr.c
ramstage-y += dsp.c
diff --git a/src/soc/intel/apollolake/cse.c b/src/soc/intel/apollolake/cse.c
new file mode 100644
index 0000000..b8ab1f0
--- /dev/null
+++ b/src/soc/intel/apollolake/cse.c
@@ -0,0 +1,57 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2017 Google, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ */
+
+#include <arch/io.h>
+#include <bootstate.h>
+#include <console/console.h>
+#include <soc/pci_devs.h>
+#include <stdint.h>
+
+#define PCI_ME_HFSTS1 0x40
+#define PCI_ME_HFSTS2 0x48
+#define PCI_ME_HFSTS3 0x60
+#define PCI_ME_HFSTS4 0x64
+#define PCI_ME_HFSTS5 0x68
+#define PCI_ME_HFSTS6 0x6c
+
+static uint32_t dump_status(int index, int reg_addr)
+{
+ uint32_t reg = pci_read_config32(CSE_DEV, reg_addr);
+
+ printk(BIOS_DEBUG, "CSE FWSTS%d: 0x%08x\n", index, reg);
+
+ return reg;
+}
+
+static void dump_cse_state(void *unused)
+{
+ uint32_t fwsts1;
+
+ fwsts1 = dump_status(1, PCI_ME_HFSTS1);
+ dump_status(2, PCI_ME_HFSTS2);
+ dump_status(3, PCI_ME_HFSTS3);
+ dump_status(4, PCI_ME_HFSTS4);
+ dump_status(5, PCI_ME_HFSTS5);
+ dump_status(6, PCI_ME_HFSTS6);
+
+ /* Minimal decoding is done here in order to call out most important
+ pieces. Manufacturing mode needs to be locked down prior to shipping
+ the product so it's called out explicitly. */
+ printk(BIOS_DEBUG, "ME: Manufacturing Mode : %s\n",
+ (fwsts1 & (1 << 0x4)) ? "YES" : "NO");
+}
+
+BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, dump_cse_state, NULL);
+BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_LOAD, BS_ON_EXIT, dump_cse_state, NULL);
the following patch was just integrated into master:
commit 96a4317fa9543a0d07e34bae3d40da810554411f
Author: Aaron Durbin <adurbin(a)chromium.org>
Date: Mon Feb 6 10:08:45 2017 -0600
ec/google/chromeec: let platform prepare for reboot when resetting EC
This fixes an issue on systems where the S3 state in the pm1 control
registers are not cleared when vboot determines recovery mode is
required on an S3 resume. The EC code will reboot the system knowing
that the EC was in RW. However, on subsequent entry into romstage the
S3 path will be taken and fails to recover cbmem -- forcing another
reboot. To work around that, signal to the platform a reboot is
happening and let the platform perform the necessary fix ups to the
register state.
BUG=chrome-os-partner:62627
Change-Id: Ic144b11b4968c92a1273b8d9eb9dc10f0056bf3d
Signed-off-by: Aaron Durbin <adurbin(a)chromium.org>
Reviewed-on: https://review.coreboot.org/18295
Tested-by: build bot (Jenkins)
Reviewed-by: Duncan Laurie <dlaurie(a)chromium.org>
See https://review.coreboot.org/18295 for details.
-gerrit
Aamir Bohra (aamir.bohra(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18289
-gerrit
commit 7bd39aec4ddcf4d88ba8be35cf8622a170e2978e
Author: Aamir Bohra <aamir.bohra(a)intel.com>
Date: Thu Feb 2 22:05:02 2017 +0530
vendorcode/intel/skykabylake: Update FSP UPD header files
Update FSP UPD header files as per version 1.6.0.
Below UPDs have been added to FspsUpd.h:
* DelayUsbPdoProgramming
* MeUnconfigIsValid
* CpuS3ResumeDataSize
* CpuS3ResumeData
CQ-DEPEND=CL:*322871,CL:*323186,CL:*322870
BUG=None
BRANCH=None
TEST=Build and boot on RVP3 and poppy
Change-Id: Id51a474764a28eec463285757d0eb8ec7ca13fd1
Signed-off-by: Aamir Bohra <aamir.bohra(a)intel.com>
---
.../intel/fsp/fsp2_0/skykabylake/FspUpd.h | 2 +-
.../intel/fsp/fsp2_0/skykabylake/FspmUpd.h | 5 ++-
.../intel/fsp/fsp2_0/skykabylake/FspsUpd.h | 49 ++++++++++++++++------
3 files changed, 41 insertions(+), 15 deletions(-)
diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspUpd.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspUpd.h
index 4981f21..bea3509 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspmUpd.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspmUpd.h
index 3e65f0a..89dc419 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspmUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspmUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -773,7 +773,8 @@ typedef struct {
UINT8 HyperThreading;
/** Offset 0x02D4 - Enable or Disable CPU Ratio Override
- Enable or Disable CPU Ratio Override; <b>0: Disable</b>; 1: Enable.
+ Enable or Disable CPU Ratio Override; <b>0: Disable</b>; 1: Enable. @note If disabled,
+ BIOS will use the default max non-turbo ratio, and will not use any flex ratio setting.
$EN_DIS
**/
UINT8 CpuRatioOverride;
diff --git a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspsUpd.h b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspsUpd.h
index 0120cf8..f2cc9b4 100644
--- a/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspsUpd.h
+++ b/src/vendorcode/intel/fsp/fsp2_0/skykabylake/FspsUpd.h
@@ -1,6 +1,6 @@
/** @file
-Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
@@ -363,9 +363,16 @@ typedef struct {
**/
UINT8 PchLanEnable;
-/** Offset 0x00FC
+/** Offset 0x00FC - Delay USB PDO Programming
+ Enable/disable delay of PDO programming for USB from PEI phase to DXE phase. 0:
+ disable, 1: enable
+ $EN_DIS
+**/
+ UINT8 DelayUsbPdoProgramming;
+
+/** Offset 0x00FD
**/
- UINT8 UnusedUpdSpace3[24];
+ UINT8 UnusedUpdSpace3[23];
/** Offset 0x0114 - Enable PCIE RP CLKREQ Support
Enable/disable PCIE Root Port CLKREQ support. 0: disable, 1: enable. One byte for
@@ -739,7 +746,7 @@ typedef struct {
UINT8 SendVrMbxCmd1;
/** Offset 0x02E4 - CpuS3ResumeMtrrData
- Pointer CPU S3 Resume MTRR Data
+ Pointer to CPU S3 Resume MTRR Data
**/
UINT32 CpuS3ResumeMtrrData;
@@ -2041,9 +2048,15 @@ typedef struct {
**/
UINT8 MeUnconfigOnRtcClear;
-/** Offset 0x0779
+/** Offset 0x0779 - Check if MeUnconfigOnRtcClear is valid
+ The MeUnconfigOnRtcClear item could be not valid due to CMOS is clear.
+ $EN_DIS
+**/
+ UINT8 MeUnconfigIsValid;
+
+/** Offset 0x077A
**/
- UINT8 ReservedFspsUpd[7];
+ UINT8 ReservedFspsUpd[6];
} FSP_S_CONFIG;
/** Fsp S Test Configuration
@@ -2517,14 +2530,16 @@ typedef struct {
**/
UINT8 C1e;
-/** Offset 0x07DA - Enable or Disable Package Cstate Demotion
- Enable or Disable Package Cstate Demotion. Disable; <b>1: Enable</b>
+/** Offset 0x07DA - Enable or Disable Package C-State Demotion
+ Enable or Disable Package C-State Demotion. 0: Disable; 1: Enable; <b>2: Auto</b>
+ (Auto: Enabled for Skylake; Disabled for Kabylake)
$EN_DIS
**/
UINT8 PkgCStateDemotion;
-/** Offset 0x07DB - Enable or Disable Package Cstate UnDemotion
- Enable or Disable Package Cstate UnDemotion. Disable; <b>1: Enable</b>
+/** Offset 0x07DB - Enable or Disable Package C-State UnDemotion
+ Enable or Disable Package C-State UnDemotion. 0: Disable; 1: Enable; <b>2: Auto</b>
+ (Auto: Enabled for Skylake; Disabled for Kabylake)
$EN_DIS
**/
UINT8 PkgCStateUnDemotion;
@@ -2772,11 +2787,21 @@ typedef struct {
**/
UINT16 PsysPmax;
-/** Offset 0x087E - ReservedCpuPostMemTest
+/** Offset 0x087E - CpuS3ResumeDataSize
+ Size of CPU S3 Resume Data
+**/
+ UINT16 CpuS3ResumeDataSize;
+
+/** Offset 0x0880 - CpuS3ResumeData
+ Pointer to CPU S3 Resume Data
+**/
+ UINT32 CpuS3ResumeData;
+
+/** Offset 0x0884 - ReservedCpuPostMemTest
Reserved for CPU Post-Mem Test
$EN_DIS
**/
- UINT8 ReservedCpuPostMemTest[12];
+ UINT8 ReservedCpuPostMemTest[6];
/** Offset 0x088A - SgxSinitDataFromTpm
SgxSinitDataFromTpm default values
Martin Roth (martinroth(a)google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17909
-gerrit
commit fdcb0772e12b03e5e43bfd84c69354b7ddb7e623
Author: Martin Roth <martinroth(a)google.com>
Date: Thu Dec 15 16:04:55 2016 -0700
src/Kconfig: Move bootblock behavior to arch/x86 as TODO suggested
The four options are only used in X86:
- BOOTBLOCK_SIMPLE
- BOOTBLOCK_NORMAL
- BOOTBLOCK_SOURCE
- SKIP_MAX_REBOOT_CNT_CLEAR
Move them all into src/arch/x86/Kconfig - this puts them in the chipset
menu instead of general setup.
Verified that this makes no significant changes to any config file.
Change-Id: I2798ef67a8c6aed5afac34322be15fdf0c794059
Signed-off-by: Martin Roth <martinroth(a)google.com>
---
src/Kconfig | 27 ---------------------------
src/arch/x86/Kconfig | 26 ++++++++++++++++++++++++++
2 files changed, 26 insertions(+), 27 deletions(-)
diff --git a/src/Kconfig b/src/Kconfig
index d3a048c..bfa1832 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -214,33 +214,6 @@ config CACHE_RELOCATED_RAMSTAGE_OUTSIDE_CBMEM
The relocated ramstage is saved in an area specified by the
by the board and/or chipset.
-# TODO: This doesn't belong here, move to src/arch/x86/Kconfig
-choice
- prompt "Bootblock behaviour"
- default BOOTBLOCK_SIMPLE
-
-config BOOTBLOCK_SIMPLE
- bool "Always load fallback"
-
-config BOOTBLOCK_NORMAL
- bool "Switch to normal if CMOS says so"
-
-endchoice
-
-config BOOTBLOCK_SOURCE
- string
- default "bootblock_simple.c" if BOOTBLOCK_SIMPLE
- default "bootblock_normal.c" if BOOTBLOCK_NORMAL
-
-config SKIP_MAX_REBOOT_CNT_CLEAR
- bool "Do not clear reboot count after successful boot"
- depends on BOOTBLOCK_NORMAL
- help
- Do not clear the reboot count immediately after successful boot.
- Set to allow the payload to control normal/fallback image recovery.
- Note that it is the responsibility of the payload to reset the
- normal boot bit to 1 after each successsful boot.
-
config UPDATE_IMAGE
bool "Update existing coreboot.rom image"
help
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index 6280024..c153a74 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -214,3 +214,29 @@ config ROMSTAGE_DEBUG_SPINLOOP
help
Add a spin (JMP .) in assembly_entry.S during early romstage to wait
for a JTAG debugger to break into the execution sequence.
+
+choice
+ prompt "Bootblock behaviour"
+ default BOOTBLOCK_SIMPLE
+
+config BOOTBLOCK_SIMPLE
+ bool "Always load fallback"
+
+config BOOTBLOCK_NORMAL
+ bool "Switch to normal if CMOS says so"
+
+endchoice
+
+config BOOTBLOCK_SOURCE
+ string
+ default "bootblock_simple.c" if BOOTBLOCK_SIMPLE
+ default "bootblock_normal.c" if BOOTBLOCK_NORMAL
+
+config SKIP_MAX_REBOOT_CNT_CLEAR
+ bool "Do not clear reboot count after successful boot"
+ depends on BOOTBLOCK_NORMAL
+ help
+ Do not clear the reboot count immediately after successful boot.
+ Set to allow the payload to control normal/fallback image recovery.
+ Note that it is the responsibility of the payload to reset the
+ normal boot bit to 1 after each successsful boot.