163 lines
7.6 KiB
ReStructuredText
163 lines
7.6 KiB
ReStructuredText
![]() |
.. _skiboot-5.10-rc2:
|
|||
|
|
|||
|
skiboot-5.10-rc2
|
|||
|
================
|
|||
|
|
|||
|
skiboot v5.10-rc2 was released on Friday February 9th 2018. It is the second
|
|||
|
release candidate of skiboot 5.10, which will become the new stable release
|
|||
|
of skiboot following the 5.9 release, first released October 31st 2017.
|
|||
|
|
|||
|
skiboot v5.10-rc2 contains all bug fixes as of :ref:`skiboot-5.9.8`
|
|||
|
and :ref:`skiboot-5.4.9` (the currently maintained stable releases). There
|
|||
|
may be more 5.9.x stable releases, it will depend on demand.
|
|||
|
|
|||
|
For how the skiboot stable releases work, see :ref:`stable-rules` for details.
|
|||
|
|
|||
|
The current plan is to cut the final 5.10 in February, with skiboot 5.10
|
|||
|
being for all POWER8 and POWER9 platforms in op-build v1.21.
|
|||
|
This release will be targeted to early POWER9 systems.
|
|||
|
|
|||
|
Over skiboot-5.10-rc1, we have the following changes:
|
|||
|
|
|||
|
- hw/npu2: Implement logging HMI actions
|
|||
|
- opal-prd: Fix FTBFS with -Werror=format-overflow
|
|||
|
|
|||
|
i2c.c fails to compile with gcc7 and -Werror=format-overflow used in
|
|||
|
Debian Unstable and Ubuntu 18.04 : ::
|
|||
|
|
|||
|
i2c.c: In function ‘i2c_init’:
|
|||
|
i2c.c:211:15: error: ‘%s’ directive writing up to 255 bytes into a
|
|||
|
region of size 236 [-Werror=format-overflow=]
|
|||
|
|
|||
|
- core/exception: beautify exception handler, add MCE-involved registers
|
|||
|
|
|||
|
Print DSISR and DAR, to help with deciphering machine check exceptions,
|
|||
|
and improve the output a bit, decode NIP symbol, improve alignment, etc.
|
|||
|
Also print a specific header for machine check, because we do expect to
|
|||
|
see these if there is a hardware failure.
|
|||
|
|
|||
|
Before: ::
|
|||
|
|
|||
|
[ 0.005968779,3] ***********************************************
|
|||
|
[ 0.005974102,3] Unexpected exception 200 !
|
|||
|
[ 0.005978696,3] SRR0 : 000000003002ad80 SRR1 : 9000000000001000
|
|||
|
[ 0.005985239,3] HSRR0: 00000000300027b4 HSRR1: 9000000030001000
|
|||
|
[ 0.005991782,3] LR : 000000003002ad80 CTR : 0000000000000000
|
|||
|
[ 0.005998130,3] CFAR : 00000000300b58bc
|
|||
|
[ 0.006002769,3] CR : 40000004 XER: 20000000
|
|||
|
[ 0.006008069,3] GPR00: 000000003002ad80 GPR16: 0000000000000000
|
|||
|
[ 0.006015170,3] GPR01: 0000000031c03bd0 GPR17: 0000000000000000
|
|||
|
[...]
|
|||
|
|
|||
|
After: ::
|
|||
|
|
|||
|
[ 0.003287941,3] ***********************************************
|
|||
|
[ 0.003561769,3] Fatal MCE at 000000003002ad80 .nvram_init+0x24
|
|||
|
[ 0.003579628,3] CFAR : 00000000300b5964
|
|||
|
[ 0.003584268,3] SRR0 : 000000003002ad80 SRR1 : 9000000000001000
|
|||
|
[ 0.003590812,3] HSRR0: 00000000300027b4 HSRR1: 9000000030001000
|
|||
|
[ 0.003597355,3] DSISR: 00000000 DAR : 0000000000000000
|
|||
|
[ 0.003603480,3] LR : 000000003002ad68 CTR : 0000000030093d80
|
|||
|
[ 0.003609930,3] CR : 40000004 XER : 20000000
|
|||
|
[ 0.003615698,3] GPR00: 00000000300149e8 GPR16: 0000000000000000
|
|||
|
[ 0.003622799,3] GPR01: 0000000031c03bc0 GPR17: 0000000000000000
|
|||
|
[...]
|
|||
|
- core/init: manage MSR[ME] explicitly, always enable
|
|||
|
|
|||
|
The current boot sequence inherits MSR[ME] from the IPL firmware, and
|
|||
|
never changes it. Some environments disable MSR[ME] (e.g., mambo), and
|
|||
|
others can enable it (hostboot).
|
|||
|
|
|||
|
This has two problems. First, MSR[ME] must be disabled while in the
|
|||
|
process of taking over the interrupt vector from the previous
|
|||
|
environment. Second, after installing our machine check handler,
|
|||
|
MSR[ME] should be enabled to get some useful output rather than a
|
|||
|
checkstop.
|
|||
|
- fast-reboot: occ: Re-parse the pstate table during fast-reboot
|
|||
|
|
|||
|
OCC shares the frequency list to host by copying the pstate table to
|
|||
|
main memory in HOMER. This table is parsed during boot to create
|
|||
|
device-tree properties for frequency and pstate IDs. OCC can update
|
|||
|
the pstate table to present a new set of frequencies to the host. But
|
|||
|
host will remain oblivious to these changes unless it is re-inited
|
|||
|
with the updated device-tree CPU frequency properties. So this patch
|
|||
|
allows to re-parse the pstate table and update the device-tree
|
|||
|
properties during fast-reboot.
|
|||
|
|
|||
|
OCC updates the pstate table when asked to do so using pstate-table
|
|||
|
bias command. And this is mainly used by WOF team for
|
|||
|
characterization purposes.
|
|||
|
- fast-reboot: move pci_reset error handling into fast-reboot code
|
|||
|
|
|||
|
pci_reset() currently does a platform reboot if it fails. It
|
|||
|
should not know about fast-reboot at this level, so instead have
|
|||
|
it return an error, and the fast reboot caller will do the
|
|||
|
platform reboot.
|
|||
|
|
|||
|
The code essentially does the same thing, but flexibility is
|
|||
|
improved. Ideally the fast reboot code should perform pci_reset
|
|||
|
and all such fail-able operations before the CPU resets itself
|
|||
|
and destroys its own stack. That's not the case now, but that
|
|||
|
should be the goal.
|
|||
|
- capi: Fix the max tlbi divider and the directory size.
|
|||
|
|
|||
|
Switch to 512KB mode (directory size) as we don’t use bit 48 of the tag
|
|||
|
in addressing the array. This mode is controlled by the Snoop CAPI
|
|||
|
Configuration Register.
|
|||
|
Set the maximum of the number of data polls received before signaling
|
|||
|
TLBI hang detect timer expired. The value of '0000' is equal to 16.
|
|||
|
- npu2/tce: Fix page size checking
|
|||
|
|
|||
|
The page size is encoded in the TVT data [59:63] as @shift+11 but
|
|||
|
the tce_kill handler does not do the math right; this fixes it.
|
|||
|
- stb: Enforce secure boot if called before libstb initialized
|
|||
|
- stb: Correctly error out when no PCR for resource
|
|||
|
- core/init: move imc catalog preload init after the STB init.
|
|||
|
|
|||
|
As a safer side move the imc catalog preload after the STB init
|
|||
|
to make sure the imc catalog resource get's verified and measured
|
|||
|
properly during loading when both secure and trusted boot modes
|
|||
|
are on.
|
|||
|
- libstb: fix failure of calling trusted measure without STB initialization.
|
|||
|
|
|||
|
When we load a flash resource during OPAL init, STB calls trusted measure
|
|||
|
to measure the given resource. There is a situation when a flash gets loaded
|
|||
|
before STB initialization then trusted measure cannot measure properly.
|
|||
|
|
|||
|
So this patch fixes this issue by calling trusted measure only if the
|
|||
|
corresponding trusted init was done.
|
|||
|
|
|||
|
The ideal fix is to make sure STB init done at the first place during init
|
|||
|
and then do the loading of flash resources, by that way STB can properly
|
|||
|
verify and measure the all resources.
|
|||
|
- libstb: fix failure of calling cvc verify without STB initialization.
|
|||
|
|
|||
|
Currently in OPAL init time at various stages we are loading various
|
|||
|
PNOR partition containers from the flash device. When we load a flash
|
|||
|
resource STB calls the CVC verify and trusted measure(sha512) functions.
|
|||
|
So when we have a flash resource gets loaded before STB initialization,
|
|||
|
then cvc verify function fails to start the verify and enforce the boot.
|
|||
|
|
|||
|
Below is one of the example failure where our VERSION partition gets
|
|||
|
loading early in the boot stage without STB initialization done.
|
|||
|
|
|||
|
This is with secure mode off.
|
|||
|
STB: VERSION NOT VERIFIED, invalid param. buf=0x305ed930, len=4096 key-hash=0x0 hash-size=0
|
|||
|
|
|||
|
In the same code path when secure mode is on, the boot process will abort.
|
|||
|
|
|||
|
So this patch fixes this issue by calling cvc verify only if we have
|
|||
|
STB init was done.
|
|||
|
|
|||
|
And also we need a permanent fix in init path to ensure STB init gets
|
|||
|
done at first place and then start loading all other flash resources.
|
|||
|
- libstb/tpm_chip: Add missing new line to print messages.
|
|||
|
- libstb: increase the log level of verify/measure messages to PR_NOTICE.
|
|||
|
|
|||
|
Currently libstb logs the verify and hash caluculation messages in
|
|||
|
PR_INFO level. So when there is a secure boot enforcement happens
|
|||
|
in loading last flash resource(Ex: BOOTKERNEL), the previous verify
|
|||
|
and measure messages are not logged to console, which is not clear
|
|||
|
to the end user which resource is verified and measured.
|
|||
|
So this patch fixes this by increasing the log level to PR_NOTICE.
|