861 lines
35 KiB
ReStructuredText
861 lines
35 KiB
ReStructuredText
.. _skiboot-5.5.0-rc1:
|
|
|
|
skiboot-5.5.0-rc1
|
|
=================
|
|
|
|
skiboot-5.5.0-rc1 was released on Tuesday March 28th 2017. It is the first
|
|
release candidate of skiboot 5.5, which will become the new stable release
|
|
of skiboot following the 5.4 release, first released November 11th 2016.
|
|
|
|
skiboot-5.5.0-rc1 contains all bug fixes as of :ref:`skiboot-5.4.3`
|
|
and :ref:`skiboot-5.1.19` (the currently maintained stable releases).
|
|
|
|
For how the skiboot stable releases work, see :ref:`stable-rules` for details.
|
|
|
|
The current plan is to cut the final 5.5.0 by April 8th, with skiboot 5.5.0
|
|
being for all POWER8 and POWER9 platforms in op-build v1.16 (Due April 12th).
|
|
This is a short cycle as this release is mainly targetted towards POWER9
|
|
bringup efforts.
|
|
|
|
Following skiboot-5.5.0, we will move to a regular six week release cycle,
|
|
similar to op-build, but slightly offset to allow for a short stabilisation
|
|
period. Expected release dates and contents are tracked using GitHub milestone
|
|
and issues: https://github.com/open-power/skiboot/milestones
|
|
|
|
Over skiboot-5.4, we have the following changes:
|
|
|
|
New Platforms
|
|
-------------
|
|
- SuperMicro's (SMC) P8DNU: An astbmc based POWER8 platform
|
|
- Add a generic platform to help with bringup of new systems.
|
|
- Four POWER9 based systems (NOTE: All POWER9 systems should be considered
|
|
for bringup use only at this point):
|
|
|
|
- Romulus
|
|
- Witherspoon (a POWER9 system with NVLink2 attached GPUs)
|
|
- Zaius (OpenCompute platform, also known as "Barreleye 2")
|
|
- ZZ (FSP based system)
|
|
|
|
New features
|
|
------------
|
|
|
|
- System reset IPI facility and Mambo implementation
|
|
Add an opal call :ref:`OPAL_SIGNAL_SYSTEM_RESET` which allows system reset
|
|
exceptions to be raised on other CPUs and act as an NMI IPI. There
|
|
is an initial simple Mambo implementation, but allowances are made
|
|
for a more complex hardware implementation.
|
|
|
|
The Mambo implementation is based on the RFC implementation for POWER8
|
|
hardware (see https://patchwork.ozlabs.org/patch/694794/) which we hope
|
|
makes it into a future release.
|
|
|
|
This implements an in-band NMI equivalent.
|
|
- add CONTRIBUTING.md, ensuring that people new to the project have a one-stop
|
|
place to find out how to get started.
|
|
- interrupts: Add optional name for OPAL interrupts
|
|
|
|
This adds the infrastructure for an interrupt source to provide
|
|
a name for an interrupt directed toward OPAL. Those names will
|
|
be put into an "opal-interrupts-names" property which is a
|
|
standard DT string list corresponding 1:1 with the "opal-interrupts"
|
|
property. PSI interrupts get names, and this is visible in Linux
|
|
through /proc/interrupts
|
|
- platform: add OPAL_REBOOT_FULL_IPL reboot type
|
|
|
|
There may be circumstances in which a user wants to force a full IPL reboot
|
|
rather than using fast reboot. Add a new reboot type, OPAL_REBOOT_FULL_IPL,
|
|
that disables fast reboot. On platforms which don't support fast reboot,
|
|
this will be equivalent to a normal reboot.
|
|
- phb3: Trick to allow control of the PCIe link width and speed
|
|
|
|
This implements a hook inside OPAL that catches 16 and 32 bit writes
|
|
to the link status register of the PHB.
|
|
|
|
It allows you to write a new speed or a new width, and OPAL will then
|
|
cause the PHB to renegociate.
|
|
|
|
Example:
|
|
|
|
First read the link status on PHB4: ::
|
|
|
|
setpci -s 0004:00:00.0 0x5a.w
|
|
a103
|
|
|
|
It's at x16 Gen3 speed (8GT/s)
|
|
|
|
bits 0x0ff0 are the width and 0x000f the speed. The width can be
|
|
1 to 16 and the speed 1 to 3 (2.5, 5 and 8GT/s)
|
|
|
|
Then try to bring it down to 1x Gen1 : ::
|
|
|
|
setpci -s 0004:00:00.0 0x5a.w=0xa011
|
|
|
|
Observe the result in the PHB: ::
|
|
|
|
/ # lspci -s 0004:00:00.0 -vv
|
|
0004:00:00.0 PCI bridge: IBM Device 03dc (prog-if 00 [Normal decode])
|
|
.../...
|
|
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive+ BWMgmt- ABWMgmt+
|
|
|
|
And in the device: ::
|
|
|
|
/ # lspci -s 0004:01:00.0 -vv
|
|
.../...
|
|
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
|
|
|
|
- core/init: Add hdat-map property to OPAL node.
|
|
|
|
Exports the HDAT heap to the OS. This allows the OS to view the HDAT heap
|
|
directly. This allows us to view the HDAT area without having to use
|
|
getmemproc.
|
|
|
|
- Add a generic platform: If /bmc in device tree, attempt to init one
|
|
For the most part, this gets us somewhere on some OpenPOWER systems
|
|
before there's a platform file for that machine.
|
|
|
|
Useful in bringup only, and marked as such with scary looking log
|
|
messages.
|
|
|
|
|
|
Core
|
|
----
|
|
|
|
- asm: Don't try to set LPCR:LPES1 on P8 and P9, the bit doesn't exist.
|
|
|
|
- pci: Add a framework for quirks
|
|
|
|
In future we may want to be able to do fixups for specific PCI devices in
|
|
skiboot, so add a small framework for doing this.
|
|
|
|
This is not intended for the same purposes as quirks in the Linux kernel,
|
|
as the PCI devices that quirks can match for in skiboot are not properly
|
|
configured. This is intended to enable having a custom path to make
|
|
changes that don't directly interact with the PCI device, for example
|
|
adding device tree entries.
|
|
|
|
- hw/slw: fix possible NULL dereference
|
|
- slw: Print enabled stop states on boot
|
|
- uart: Fix Linux pass-through policy, provide NVRAM override option
|
|
- libc/stdio/vsnprintf.c: add explicit fallthrough, this silences a recent
|
|
(GCC 7.x) warning
|
|
- init: print the FDT blob size in decimal
|
|
- init: Print some more info before booting linux
|
|
|
|
The kernel command line from nvram and the stdout-path are
|
|
useful to know when debugging console related problems.
|
|
|
|
- Makefile: Disable stack protector due to gcc problems
|
|
|
|
Depending on how it was built, gcc will use the canary from a global
|
|
(works for us) or from the TLS (doesn't work for us and accesses
|
|
random stuff instead).
|
|
|
|
Fixing that would be tricky. There are talks of adding a gcc option
|
|
to force use of globals, but in the meantime, disable the stack
|
|
protector.
|
|
- Stop using 3-operand cmp[l][i] for latest binutils
|
|
Since a5721ba270, binutils does not support 3-operand cmp[l][i].
|
|
This adds (previously optional) parameter L.
|
|
- buddy: Add a simple generic buddy allocator
|
|
- stack: Don't recurse into __stack_chk_fail
|
|
- Makefile: Use -ffixed-r13
|
|
We use r13 for our own stuff, make sure it's properly fixed
|
|
- Always set ibm,occ-functional-state correctly
|
|
- psi: fix the xive registers initialization on P8, which seems to be fine
|
|
for real HW but causes a lof of pain under qemu
|
|
- slw: Set PSSCR value for idle states
|
|
- Limit number of "Poller recursion detected" errors to display
|
|
|
|
In some error conditions, we could spiral out of control on this
|
|
and spend all of our time printing the exact same backtrace.
|
|
|
|
Limit it to 16 times, because 16 is a nice number.
|
|
- slw: do SLW timer testing while holding xscom lock
|
|
|
|
We add some routines that let a caller get the xscom lock once and
|
|
then do a bunch of xscoms while holding it.
|
|
In some situations without this, it could take long enough to get
|
|
the xscom lock that the 1ms timeout would expire and we'd falsely
|
|
think the SLW timer didn't work when in fact it did.
|
|
- wait_for_resource_loaded: don't needlessly sleep for 5ms
|
|
- run pollers in cpu_process_local_jobs() if running job synchonously
|
|
- fsp: Don't recurse pollers in ibm_fsp_terminate
|
|
- chiptod: More hardening against -1 chip ID
|
|
- interrupts: Rewrite/correct doc for opal_set/get_xive
|
|
- cpu: Don't enable nap mode/PM mode on non-P8
|
|
- platform: Call generic platform probe and init UART there
|
|
- psi: Don't register more interrupts than the HW supports
|
|
- psi: Add DT option to disable LPC interrupts
|
|
|
|
I2C and TPM
|
|
-----------
|
|
- p8i2c: Use calculated poll_interval when booting OPAL
|
|
Otherwise we'd default to 2seconds (TIMER_POLL) during boot on
|
|
chips with a functional i2c interrupt, leading to slow i2c
|
|
during boot (or hitting timeouts instead).
|
|
- i2c: Add i2c_run_req() to crank the state machine for a request
|
|
- tpm_i2c_nuvoton: work out the polling time using mftb()
|
|
- tpm_i2c_nuvoton: handle errors after reading the tpm fifo
|
|
- tpm_i2c_nuvoton: cleanup variables in tpm_read_fifo()
|
|
- tpm_i2c_nuvoton: handle errors after writting the tpm fifo
|
|
- tpm_i2c_nuvoton: cleanup variables in tpm_write_fifo()
|
|
- tpm_i2c_nuvoton: handle errors after writing sts.commandReady in step 5
|
|
- tpm_i2c_nuvoton: handle errors after writing sts.go
|
|
- tpm_i2c_nuvoton: handle errors after checking the tpm fifo status
|
|
- tpm_i2c_nuvoton: return burst_count in tpm_read_burst_count()
|
|
- tpm_i2c_nuvoton: isolate the code that handles the TPM_TIMEOUT_D timeout
|
|
- tpm_i2c_nuvoton: handle errors after reading sts.commandReady
|
|
- tpm_i2c_nuvoton: add tpm_status_read_byte()
|
|
- tpm_i2c_nuvoton: add tpm_check_status()
|
|
- tpm_i2c_nuvoton: rename defines to shorter names
|
|
- tpm_i2c_interface: decouple rc from being done with i2c request
|
|
- tpm_i2c_interface: set timeout before each request
|
|
- i2c: Add nuvoton quirk, disallowing i2cdetect as it locks TPM
|
|
|
|
p8-i2c reset things manually in some error conditions
|
|
- stb: create-container and wrap skiboot in Secure/Trusted Boot container
|
|
|
|
We produce **UNSIGNED** skiboot.lid.stb and skiboot.lid.xz.stb as build
|
|
artifacts.
|
|
|
|
These are suitable blobs for flashing onto Trusted Boot enabled op-build
|
|
builds *WITH* the secure boot jumpers *ON* (i.e. *NOT* in secure mode).
|
|
It's just enough of the Secure and Trusted Boot container format to
|
|
make Hostboot behave.
|
|
|
|
|
|
PCI
|
|
---
|
|
- core/pci: Support SRIOV VFs
|
|
|
|
Currently, skiboot can't see SRIOV VFs. It introduces some troubles
|
|
as I can see: The device initialization logic (phb->ops->device_init())
|
|
isn't applied to VFs, meaning we have to maintain same and duplicated
|
|
mechanism in kernel for VFs only. It introduces difficulty to code
|
|
maintaining and prone to lose sychronization.
|
|
|
|
This was motivated by bug reported by Carol: The VF's Max Payload
|
|
Size (MPS) isn't matched with PF's on Mellanox's adapter even kernel
|
|
tried to make them same. It's caused by readonly PCIECAP_EXP_DEVCTL
|
|
register on VFs. The skiboot would be best place to emulate this bits
|
|
to eliminate the gap as I can see.
|
|
|
|
This supports SRIOV VFs. When the PF's SRIOV capability is populated,
|
|
the number of maximal VFs (struct pci_device) are instanciated, but
|
|
but not usable yet. In the mean while, PCI config register filter is
|
|
registered against PCIECAP_SRIOV_CTRL_VFE to capture the event of
|
|
enabling or disabling VFs. The VFs are initialized, put into the PF's
|
|
children list (pd->children), populate its PCI capabilities, and
|
|
register PCI config register filter against PCICAP_EXP_DEVCTL. The
|
|
filter's handler caches what is written to MPS field and returns
|
|
the cached value on read, to eliminate the gap mentioned as above.
|
|
|
|
- core/pci: Avoid hreset after freset
|
|
|
|
Commit 5ac71c9 ("pci: Avoid hot resets at boot time") missed to
|
|
avoid hot reset after fundamental reset for PCIe common slots.
|
|
|
|
This fixes it.
|
|
- core/pci: Enforce polling PCIe link in hot-add path
|
|
|
|
In surprise hot-add path, the power state isn't changed on hardware.
|
|
Instead, we set the cached power state (@slot->power_state) and
|
|
return OPAL_SUCCESS. The upper layer starts the PCI probing immediately
|
|
when receiving OPAL_SUCCESS. However, the PCIe link behind the PCI
|
|
slot is likely down. Nothing will be probed from the PCI slot even
|
|
we do have PCI adpater connected to the slot.
|
|
|
|
This fixes the issue by returning OPAL_ASYNC_COMPLETION to force
|
|
upper layer to poll the PCIe link before probing the PCI devices
|
|
behind the slot in surprise and managed hot-add paths.
|
|
- hw/phb3: fix error handling in complete reset
|
|
During a complete reset, when we get a timeout waiting for pending
|
|
transaction in state PHB3_STATE_CRESET_WAIT_CQ, we mark the PHB as
|
|
permanently broken.
|
|
|
|
Set the state to PHB3_STATE_FENCED so that the kernel can retry the
|
|
complete reset.
|
|
- phb3: Lock the PHB on set_xive callbacks
|
|
|
|
p8dnu platform
|
|
--------------
|
|
- astbmc/p8dnu: Enable PCI slot's power supply on PEX9733 in hot-add path
|
|
- astbmc/p8dnu: Enable PCI slot's power supply on PEX8718 in hot-add path
|
|
- core/pci: Mark broken PDC on slots without surprise hotplug capability
|
|
|
|
We has to support surprise hotplug on PCI slots that don't support
|
|
it on hardware. So we're fully utilizing the PCIe link state change
|
|
event to detect the events (hot-remove and hot-add). The PDC (Presence
|
|
Detection Change) event isn't reliable for the purpose. For example,
|
|
PEX8718 on superMicro's machines.
|
|
|
|
This adds another PCI slot property "ibm,slot-broken-pdc" in the
|
|
device-tree, to indicate the PDC isn't reliable on those (software
|
|
claimed) surprise pluggable slots.
|
|
- core/pci: Fix PCIe slot's presence
|
|
|
|
According to PCIe spec, the presence bit is hardcoded to 1 if PCIe
|
|
switch downstream port doesn't support slot capability. The register
|
|
used for the check in pcie_slot_get_presence_state() is wrong. It
|
|
should be PCIe capability register instead of PCIe slot capability
|
|
register. Otherwise, we always have present bit on the PCI topology.
|
|
The issue is found on Supermicro's p8dtu2u machine: ::
|
|
|
|
# lspci -t
|
|
-+-[0022:00]---00.0-[01-08]----00.0-[02-08]--+-01.0-[03]----00.0
|
|
| \-02.0-[04-08]--
|
|
# cat /sys/bus/pci/slots/S002204/adapter
|
|
1
|
|
# lspci -vvs 0022:02:02.0
|
|
# lspci -vvs 0022:02:02.0
|
|
0022:02:02.0 PCI bridge: PLX Technology, Inc. PEX 8718 16-Lane, \
|
|
5-Port PCI Express Gen 3 (8.0 GT/s) Switch (rev ab) (prog-if 00 [Normal decode])
|
|
:
|
|
Capabilities: [68] Express (v2) Downstream Port (Slot+), MSI 00
|
|
:
|
|
SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock-
|
|
Changed: MRL- PresDet- LinkState-
|
|
|
|
This fixes the issue by checking the correct register (PCIe capability).
|
|
Also, the register's value is cached in advance as we did for slot and
|
|
link capability.
|
|
- core/pci: More reliable way to update PCI slot power state
|
|
|
|
The power control bit (SLOT_CTL, offset: PCIe cap + 0x18) isn't
|
|
reliable enough to reflect the PCI slot's power state. Instead,
|
|
the power indication bits are more reliable comparatively. This
|
|
leads to mismatch between the cached power state and PCI slot's
|
|
presence state, resulting in the hotplug driver in kernel refuses
|
|
to unplug the devices properly on the request. The issue was
|
|
found on below NVMe card on "supermicro,p8dtu2u" machine. We don't
|
|
have this issue on the integrated PLX 8718 switch. ::
|
|
|
|
# lspci
|
|
0022:01:00.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
|
|
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
|
|
0022:02:01.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
|
|
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
|
|
0022:02:04.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
|
|
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
|
|
0022:02:05.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
|
|
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
|
|
0022:02:06.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
|
|
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
|
|
0022:02:07.0 PCI bridge: PLX Technology, Inc. PEX 9733 33-lane, \
|
|
9-port PCI Express Gen 3 (8.0 GT/s) Switch (rev aa)
|
|
0022:17:00.0 Non-Volatile memory controller: Device 19e5:0123 (rev 45)
|
|
|
|
This updates the cached PCI slot's power state using the power
|
|
indication bits instead of power control bit, to fix above issue.
|
|
|
|
Utilities
|
|
---------
|
|
|
|
- opal-prd: Direct systemd to always restart opal-prd
|
|
Always restart the opal-prd daemon, irrespective of why it stopped.
|
|
- external/ffspart: Simple C program to be able to make an FFS partition
|
|
- getscom: Add chip info for P9.
|
|
- gard: Fix make dist target
|
|
- pflash/libflash: arch_flash_arm: Don't assume mtd labels are short
|
|
|
|
libffs
|
|
------
|
|
- libffs: Understand how to create FFS partition TOCs and entries.
|
|
|
|
BMC Based systems
|
|
-----------------
|
|
- platforms/astbmc: Support PCI slots for palmetto
|
|
- habanero/slottable: Remove Network Mezz(2, 0) from PHB1.
|
|
- BMC/PCI: Check slot tables against detected devices
|
|
On BMC machines, we have slot tables of built in PHBs, slots and devices
|
|
that are physically present in the system (such as the BMC itself). We
|
|
can use these tables to check what we *detected* against what *should*
|
|
be in the system and throw an error if they differ.
|
|
|
|
We have seen this occur a couple of times while still booting, giving the
|
|
user just an empty petitboot screen and not much else to go on. This
|
|
patch helps in that we get a skiboot error message, and at some point
|
|
in the future when we pump them up to the OS we could get a big friendly
|
|
error message telling you you're having a bad day.
|
|
- pci/quirk: Populate device tree for AST2400 VGA
|
|
|
|
Adding these properties enables the kernel to function in the same way
|
|
that it would if it could no longer access BMC configuration registers
|
|
through a backdoor, which may become the default in future.
|
|
|
|
The comments describe how isolating the host from the BMC could be
|
|
achieved in skiboot, assuming all kernels that the system boots
|
|
support this. Isolating the BMC and the host from each other is
|
|
important if they are owned by different parties; for example, a cloud
|
|
provider renting machines "bare metal".
|
|
|
|
- astbmc/pnor: Use mbox-flash for flash accesses
|
|
|
|
If the BMC is MBOX protocol aware, request flash reads/writes over the
|
|
MBOX regs. This inits the blocklevel for pnor access with mbox-flash.
|
|
- ast: Account for differences between 2400 vs 2500
|
|
- platform: set default bmc_platform
|
|
The bmc_platform pointer is set to NULL by default and on non-AMI BMC
|
|
platforms. As a result a few places in hw/ipmi/ipmi-sel.c will blindly
|
|
dereference a NULL pointer.
|
|
|
|
POWER9
|
|
------
|
|
|
|
- external: Update xscom utils for type 1 indirect accesses
|
|
- xscom: Harden indirect writes
|
|
- xscom: Add POWER9 scom reset
|
|
- homer : Enable HOMER region reservation for POWER9
|
|
- slw: Define stop idle states for P9 DD1
|
|
- slw: Fix parsing of supported STOP states
|
|
- slw: only enable supported STOP states
|
|
- dts: add support for p9 cores
|
|
|
|
- asm: Add POWER9 case to init_shared_sprs
|
|
|
|
For now, setup the HID and HMEER. We'll add more as we get
|
|
good default values from HW.
|
|
- xive/psi/lpc: Handle proper clearing of LPC SerIRQ latch on POWER9 DD1
|
|
- lpc: Mark the power9 LPC bus as compatible with power8
|
|
- Fix typo in PIR mask for POWER9. Fixes booting multi-chip.
|
|
- vpd: add vpd_valid() to check keyword VPD blobs
|
|
|
|
Adds a function to check whether a blob is a valid IBM ASCII keyword
|
|
VPD blob. This allows us to recognise when we do and do not have a VPD
|
|
blob and act accordingly.
|
|
- core/cpu.c: Use a device-tree node to detect nest mmu presence
|
|
The nest mmu address scom was hardcoded which could lead to boot
|
|
failure on POWER9 systems without a nest mmu. For example Mambo
|
|
doesn't model the nest mmu which results in failure when
|
|
calling opal_nmmu_set_ptcr() during kernel load.
|
|
- psi: Fix P9 BAR setup on multi-chips
|
|
|
|
PHB4:
|
|
|
|
- phb4: Fix TVE encoding for start address
|
|
- phb4: Always assign powerbus BARs
|
|
|
|
HostBoot configure them with weird values that confuse us, instead
|
|
let's just own the assignment. This is temporary, I will centralize
|
|
memory map management next but this gets us going.
|
|
- phb4: Fix endian issue with link control2/status2 registers
|
|
Fixes training at larger than PCIe Gen1 speeds.
|
|
- phb4: Add ability to log config space access
|
|
Useful for debugging
|
|
- phb4: Change debug prints
|
|
Currently we print "PHB4" and mean either "PHB version 4" or "PHB
|
|
number 4" which can be quite confusing.
|
|
- phb4: Fix config space enable bits on DD1
|
|
- phb4: Fix location of EEH enable bits
|
|
- phb4: Fix setting of max link speed
|
|
- phb4: Updated inits as of PHB4 spec 0.52
|
|
|
|
HDAT fixes:
|
|
|
|
- hdat: Parse BMC nodes much earlier
|
|
|
|
This moves the parsing of the BMC and LPC details to the start of the
|
|
HDAT parsing. This allows us to enable the Skiboot log console earlier
|
|
so we can get debug output while parsing the rest of the HDAT.
|
|
- astbmc: Don't do P8 PSI or DT fixups on P9
|
|
|
|
Previously the HDAT format was only ever used with IBM hardware so it
|
|
would store vital product data (VPD) blobs in the IBM ASCII Keyword VPD
|
|
format. With P9 HDAT is used on OpenPower machines which use Industry
|
|
Standard DIMMs that provide their product data through a "Serial Present
|
|
Detect" EEPROM mounted on the DIMM.
|
|
|
|
The SPD blob has a different format and is exported in the device-tree
|
|
under the "spd" property rather than the "ibm,vpd" property. This patch
|
|
adds support for recognising these blobs and placing them in the
|
|
appropriate DT property.
|
|
- hdat: Add __packed to all HDAT structures and workaround HB reserve
|
|
|
|
Some HDAT structures aren't properly aligned. We were using __packed
|
|
on some but not others and got at least one wrong (HB reserve). This
|
|
adds it everywhere to avoid such problems.
|
|
|
|
However this then triggers another problem where HB gives us a
|
|
crazy range (0.256M) to reserve with no label, which triggers an
|
|
assertion failure later on in mem_regions.c.
|
|
|
|
So also add a test to skip any region starting at 0 until we can
|
|
undertand that better and have it fixed one way or another.
|
|
- hdat: Ignore broken memory reserves
|
|
|
|
Ignore HDAT memory reserves > 512MB. These are considered bogus and
|
|
workaround known HDAT bugs.
|
|
- hdat: Add BMC device-tree node for P9 OpenPOWER systems
|
|
- hdat: Fix interrupt & device_type of UART node
|
|
|
|
The interrupt should use a standard "interrupts" property. The UART
|
|
node also need a device_type="serial" property for historical reasons
|
|
otherwise Linux won't pick it up.
|
|
- parse and export STOP levels
|
|
- add new sppcrd_chip_info fields
|
|
- add radix-AP-encodings
|
|
- stop using proc_int_line in favor of pir
|
|
- rename add_icp() to add_xics_icp()
|
|
- Add support for PHB4
|
|
- create XIVE nodes under each xscom node
|
|
- Add P9 compatible property
|
|
- Parse hostboot memory reservations from HDAT
|
|
- Add new fields to IPL params structure and update sys family for p9.
|
|
- Fix ibm,pa-features for all CPU types
|
|
- Fix XSCOM nodes for P9
|
|
- Remove deprecated 'ibm, mem-interleave-scope' from DT on POWER9
|
|
- Grab system model name from HDAT when available
|
|
- Grab vendor information from HDAT when available
|
|
- SPIRA-H/S changes for P9
|
|
- Add BMC and LPC IOPATH support
|
|
- handle ISDIMM SPD blobs
|
|
- make HDIF_child() print more useful errors
|
|
- Add PSI HB xscom details
|
|
- Add new fields to proc_init_data structure
|
|
- Add processor version check for hs service ntuple
|
|
- add_iplparams_serial - Validate HDIF_get_iarray_size() return value
|
|
|
|
|
|
XIVE:
|
|
|
|
The list of XIVE fixes and updates is extensive. Below is only a portion of
|
|
the changes that have gone into skiboot 5.5.0-rc1 for the new XIVE hardware
|
|
that is present in POWER9:
|
|
|
|
- xive: Enable backlog on queues
|
|
- xive: Use for_each_present_cpu() for setting up XIVE
|
|
- xive: Fix logic in opal_xive_get_xirr()
|
|
- xive: Properly initialize new VP and EQ structures
|
|
- xive: Improve/fix EOI of LSIs
|
|
- xive: Add FIXME comments about mask/umask races
|
|
- xive: Fix memory barrier in opal_xive_get_xirr()
|
|
- xive: Don't try to find a target EQ for prio 0xff
|
|
- xive: Bump table sizes in direct mode
|
|
- xive: Properly register escalation interrupts
|
|
- xive: Split the OPAL irq flags from the internal ones
|
|
- xive: Don't touch ESB masks unless masking/unmasking
|
|
- xive: Fix xive_get_ir_targetting()
|
|
- xive: Cleanup escalation PQ on queue change
|
|
- xive: Add *any chip* for allocating interrupts
|
|
- xive: Add chip_id to get_vp_info
|
|
- xive: Add opal_xive_get/set_vp_info
|
|
- xive: Add VP alloc/free OPAL functions
|
|
- xive: Workaround for bad DD1 checker
|
|
- xive: Add more checks for exploitation mode
|
|
- xive: Add support for EOIs via OPAL
|
|
- xive/phb4: Work around broken LSI control on P9 DD1
|
|
- xive: Forward interrupt names callback
|
|
- xive: Export opal_xive_reset() arguments in OPAL API
|
|
- xive: Add interrupt allocator
|
|
- xive: Implement xive_reset
|
|
- xive: Don't assert if xive_get_vp() fails
|
|
- xive: Expose exploitation mode DT properties
|
|
- xive: Use a constant for max# of chips
|
|
- xive: Keep track of which interrupts were ever enabled
|
|
In order to speed up xive reset
|
|
- xive: Implement internal VP allocator
|
|
- xive: Add xive_get/set_queue_info
|
|
- xive: Add helpers to encode and decode VP numbers
|
|
- xive: Add API to donate pages in indirect mode
|
|
- xive: Add asynchronous cache updates and update irq targetting
|
|
- xive: Split xive_provision_cpu() and use cache watch for VP
|
|
- xive: Add cache scrub to push watch updates to memory
|
|
- xive: Mark XIVE owned EQs with a specific flag
|
|
- xive: Use an allocator for EQDs
|
|
- xive: Break assumption that block ID == chip ID
|
|
- xive/phb4: Handle bad ESB offsets in PHB4 DD1
|
|
- xive: Implement get/set_irq_config APIs
|
|
- xive: Rework xive_set_eq_info() to store all info even when masking
|
|
- xive: Implement cache watch and use it for EQs
|
|
- xive: Add locking to some API calls
|
|
- xive: Add opal_xive_get_irq_info()
|
|
- xive: Add CPU node "interrupts" properties representing the IPIs
|
|
- xive: Add basic opal_xive_reset() call and exploitation mode
|
|
- xive: Add support for escalation interrupts
|
|
- xive: OPAL API update
|
|
- xive: Add some dump facility for debugging
|
|
- xive: Document exploitation mode
|
|
(Pretty much work in progress)
|
|
- xive: Indirect table entries must have top bits "type" set
|
|
- xive: Remove unused field and clarify comment
|
|
- xive: Provide a way to override some IPI sources
|
|
- xive: Add helper to retrieve an IPI trigger port
|
|
- xive: Fix IPI EOI logic in opal_xive_eoi()
|
|
- xive: Don't try to EOI a masked source
|
|
- xive: Fix comments in xive_source_set_xive()
|
|
- xive: Fix comments in xive_get_ive()
|
|
- xive: Configure forwarding ports
|
|
- xive: Fix mangling of interrupt server# in opal_get/set_xive()
|
|
- xive: Fix interrupt number mangling
|
|
|
|
|
|
Fast-reboot
|
|
-----------
|
|
- fast-reboot: creset PHBs on fast reboot
|
|
On fast reboot, perform a creset of all PHBs. This ensures that any PHBs
|
|
that are fenced will be working after the reboot.
|
|
- fast-reboot: Enable fast reboot with CAPI adapters in CAPI mode
|
|
CAPI mode is disabled as part of OPAL_SYNC_HOST_REBOOT.
|
|
- opal/fast-reboot: set fw_progress sensor status with IPMI_FW_PCI_INIT.
|
|
|
|
CAPI
|
|
----
|
|
|
|
- hmi: Print CAPP FIR information when handling CAPP malfunction alerts
|
|
|
|
FSP based systems
|
|
-----------------
|
|
|
|
- hw/fsp: Do not queue SP and SPCN class messages during reset/reload
|
|
This could cause soft lockups if FSP reset reload was done while in OPAL
|
|
During FSP R/R, the FSP is inaccessible and will lose state. Messages to the
|
|
FSP are generally queued for sending later.
|
|
|
|
Tests
|
|
-----
|
|
- core/test/run-trace: Reduce number of samples when running under valgrind
|
|
This reduces 'make check' run time by ~10 seconds on my laptop,
|
|
and just the run-trace test itself takes 15 seconds less (under valgrind).
|
|
- test/sreset_world: Kind of like Hello World, but from the SRESET vector.
|
|
A regression test for the mambo implementation of OPAL_SIGNAL_SYSTEM_RESET.
|
|
- nvram-format: Fix endian issues
|
|
NVRAM formats are always BE, so let's use the sparse annotation to catch
|
|
any issues (and correct said issues).
|
|
|
|
On LE platforms, the test was erroneously passing as with building the
|
|
nvram-format code on LE we were produces an incorrect NVRAM image.
|
|
|
|
- test/hello_world: use P9MAMBO to differentiate from P8
|
|
- hdata_to_dt: Specify PVR on command line
|
|
- hdata/test: Add DTS output for the test cases
|
|
- hdata/test: strip blobs from the DT output
|
|
- mambo: add mprintf()
|
|
|
|
mprintf() is printf(), but it goes straight to the mambo console. This
|
|
allows it to be independent of Skiboot's actual console infrastructure
|
|
so it can be used for debugging the console drivers and for debugging
|
|
code that runs before the console is setup.
|
|
- generate-fwts-olog: add support for parsing prerror()
|
|
- Add bitmap test
|
|
The worst test suite ever
|
|
- mambo_utils: add ascii output to hexdump
|
|
- mambo_utils: add p_str <addr> [limit]
|
|
- mambo_utils: make p return a value
|
|
- hello_world: print out full path of missing MAMBO_BINARY
|
|
- print-stb-container: Fix build on centos7
|
|
|
|
- Travis-ci improvements:
|
|
- install expect on ubuntu 12.04, disable qemu on 16.04/latest
|
|
- build and test more on centos7
|
|
- hello_world: run p9 mambo tests
|
|
- install systemsim-p8 on centos7
|
|
- install systemsim-p8 on centos6
|
|
- install systemsim-p9
|
|
- enable fedora25
|
|
- always pull new docker image
|
|
- add fedora rawhide
|
|
|
|
- Add fwts annotation for duplicate DT node entries.
|
|
|
|
Reference bug: https://github.com/open-power/op-build/issues/751
|
|
- external/fwts: Add 'last-tag' to FWTS olog output
|
|
This isn't so useful at the moment, but this will make cleaning out
|
|
crufty old error definitions much easier.
|
|
- external/fwts: Add FWTS olog merge script
|
|
A script to merge olog error definitions from multiple skiboot versions
|
|
into a single olog JSON file. Will prompt when conflicting patterns are
|
|
found to update the pattern, or add both.
|
|
- mambo: fake NVRAM support
|
|
- mambo: Add Fake NVRAM driver
|
|
- external/mambo: add shortcut to print all GPRs
|
|
|
|
|
|
|
|
Contributors
|
|
------------
|
|
|
|
Processed 363 csets from 28 developers.
|
|
A total of 18105 lines added, 16499 removed (delta 1606)
|
|
|
|
Developers with the most changesets
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
========================== === =======
|
|
Developer # %
|
|
========================== === =======
|
|
Benjamin Herrenschmidt 138 (38.0%)
|
|
Stewart Smith 56 (15.4%)
|
|
Oliver O'Halloran 47 (12.9%)
|
|
Michael Neuling 18 (5.0%)
|
|
Gavin Shan 15 (4.1%)
|
|
Claudio Carvalho 14 (3.9%)
|
|
Vasant Hegde 11 (3.0%)
|
|
Cyril Bur 11 (3.0%)
|
|
Andrew Donnellan 11 (3.0%)
|
|
Ananth N Mavinakayanahalli 5 (1.4%)
|
|
Cédric Le Goater 5 (1.4%)
|
|
Pridhiviraj Paidipeddi 5 (1.4%)
|
|
Shilpasri G Bhat 4 (1.1%)
|
|
Nicholas Piggin 4 (1.1%)
|
|
Russell Currey 3 (0.8%)
|
|
Alistair Popple 2 (0.6%)
|
|
Jack Miller 2 (0.6%)
|
|
Chris Smart 2 (0.6%)
|
|
Matt Brown 1 (0.3%)
|
|
Michael Ellerman 1 (0.3%)
|
|
Frederic Barrat 1 (0.3%)
|
|
Hank Chang 1 (0.3%)
|
|
Willie Liauw 1 (0.3%)
|
|
Werner Fischer 1 (0.3%)
|
|
Jeremy Kerr 1 (0.3%)
|
|
Patrick Williams 1 (0.3%)
|
|
Joel Stanley 1 (0.3%)
|
|
Alexey Kardashevskiy 1 (0.3%)
|
|
========================== === =======
|
|
|
|
Developers with the most changed lines
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
=========================== ===== =======
|
|
Developer # %
|
|
=========================== ===== =======
|
|
Oliver O'Halloran 17961 (56.7%)
|
|
Benjamin Herrenschmidt 5509 (17.4%)
|
|
Cyril Bur 2801 (8.8%)
|
|
Stewart Smith 1649 (5.2%)
|
|
Gavin Shan 653 (2.1%)
|
|
Claudio Carvalho 489 (1.5%)
|
|
Willie Liauw 361 (1.1%)
|
|
Ananth N Mavinakayanahalli 340 (1.1%)
|
|
Andrew Donnellan 315 (1.0%)
|
|
Michael Neuling 240 (0.8%)
|
|
Shilpasri G Bhat 228 (0.7%)
|
|
Nicholas Piggin 219 (0.7%)
|
|
Vasant Hegde 207 (0.7%)
|
|
Russell Currey 158 (0.5%)
|
|
Jack Miller 127 (0.4%)
|
|
Cédric Le Goater 126 (0.4%)
|
|
Chris Smart 95 (0.3%)
|
|
Hank Chang 56 (0.2%)
|
|
Pridhiviraj Paidipeddi 47 (0.1%)
|
|
Alistair Popple 39 (0.1%)
|
|
Matt Brown 29 (0.1%)
|
|
Michael Ellerman 3 (0.0%)
|
|
Alexey Kardashevskiy 2 (0.0%)
|
|
Frederic Barrat 1 (0.0%)
|
|
Werner Fischer 1 (0.0%)
|
|
Jeremy Kerr 1 (0.0%)
|
|
Patrick Williams 1 (0.0%)
|
|
Joel Stanley 1 (0.0%)
|
|
=========================== ===== =======
|
|
|
|
Developers with the most lines removed
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
=========================== ===== =======
|
|
Developer # %
|
|
=========================== ===== =======
|
|
Oliver O'Halloran 8810 (53.4%)
|
|
Ananth N Mavinakayanahalli 98 (0.6%)
|
|
Alistair Popple 9 (0.1%)
|
|
Michael Ellerman 3 (0.0%)
|
|
Werner Fischer 1 (0.0%)
|
|
=========================== ===== =======
|
|
|
|
Developers with the most signoffs
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Total 322
|
|
|
|
======================== ===== =======
|
|
Developer # %
|
|
======================== ===== =======
|
|
Stewart Smith 307 (95.3%)
|
|
Michael Neuling 6 (1.9%)
|
|
Oliver O'Halloran 3 (0.9%)
|
|
Benjamin Herrenschmidt 2 (0.6%)
|
|
Vaidyanathan Srinivasan 1 (0.3%)
|
|
Hank Chang 1 (0.3%)
|
|
Jack Miller 1 (0.3%)
|
|
Gavin Shan 1 (0.3%)
|
|
======================== ===== =======
|
|
|
|
Developers with the most reviews
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Total: 45
|
|
|
|
======================== ===== =======
|
|
Developer # %
|
|
======================== ===== =======
|
|
Vasant Hegde 10 (22.2%)
|
|
Andrew Donnellan 9 (20.0%)
|
|
Russell Currey 6 (13.3%)
|
|
Cédric Le Goater 5 (11.1%)
|
|
Oliver O'Halloran 4 (8.9%)
|
|
Gavin Shan 3 (6.7%)
|
|
Vaidyanathan Srinivasan 2 (4.4%)
|
|
Alistair Popple 2 (4.4%)
|
|
Frederic Barrat 2 (4.4%)
|
|
Mahesh Salgaonkar 1 (2.2%)
|
|
Cyril Bur 1 (2.2%)
|
|
======================== ===== =======
|
|
|
|
Developers with the most test credits
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Total 11
|
|
|
|
======================== ===== =======
|
|
Developer # %
|
|
======================== ===== =======
|
|
Willie Liauw 4 (36.4%)
|
|
Claudio Carvalho 3 (27.3%)
|
|
Gavin Shan 1 (9.1%)
|
|
Michael Neuling 1 (9.1%)
|
|
Pridhiviraj Paidipeddi 1 (9.1%)
|
|
Chris Smart 1 (9.1%)
|
|
======================== ===== =======
|
|
|
|
Developers who gave the most tested-by credits
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Total 11
|
|
|
|
========================== ===== =======
|
|
Developer # %
|
|
========================== ===== =======
|
|
Gavin Shan 4 (36.4%)
|
|
Stewart Smith 4 (36.4%)
|
|
Chris Smart 1 (9.1%)
|
|
Oliver O'Halloran 1 (9.1%)
|
|
Ananth N Mavinakayanahalli 1 (9.1%)
|
|
========================== ===== =======
|
|
|
|
Developers with the most report credits
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Total 7
|
|
|
|
========================== === =======
|
|
Developer # %
|
|
========================== === =======
|
|
Hank Chang 4 (57.1%)
|
|
Guilherme G. Piccoli 1 (14.3%)
|
|
Colin Ian King 1 (14.3%)
|
|
Pradipta Ghosh 1 (14.3%)
|
|
========================== === =======
|
|
|
|
|
|
Developers who gave the most report credits
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
Total 7
|
|
|
|
========================== === =======
|
|
Developer # %
|
|
========================== === =======
|
|
Gavin Shan 5 (71.4%)
|
|
Andrew Donnellan 1 (14.3%)
|
|
Jeremy Kerr 1 (14.3%)
|
|
========================== === =======
|