Age | Commit message (Collapse) | Author | Files | Lines |
|
Timer facility HMIs are reported with TB error reason set in the TFMR
register. With help from reason set in TFMR register, OPAL hmi handler
carry out appropriate recovery procedure to successfully recover from Timer
facility HMIs.
However, On p10, in a very rare situation when core is waking up from stop2
or higher stop state, timer facility goes into error state due to Missing
step, causing an HMI with no error reason set in TFMR register other than
TFMR[41]=0 (tb_valid) and TFMR[28:31]=9 (tbst_encoded). Ideally, "Missing
step" error should be reported in TFMR[44]=1. It looks like in this rare
case, while generating HMI, HW fails to sync up the TFMR register with the
core which is waking up from stop2. Hence, in absence of proper error
reason, OPAL fails to recover from this unusual HMI, resulting in system
panic/crash.
In order to recover from this HMI it needs to reset the core level error
"Missing step". Handle this as special case by treating this as TFMR
corrupt error (TFMR[60]) which will then force reset core level errors
including Missing step.
Reported-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
The documented PEC recovery procedure is to clear the PEC FIR
registers when the ETU/PHB is in reset. However, any xscom access
targeting a PHB register while it is in reset will raise a new
error (PFIR bit 3), so it is possible to get out of reset and still
have a FIR register showing errors. It has been observed that the OCC,
through its 24x7 service, can do such a xscom access at boot time if
we end up in the CRESET path. So the current behavior of logging an
error is not desirable.
The recommendation from the logic designer is to keep the existing
mechanism to clear the FIR registers and add an extra step to clear
any new errors immediately after taking the ETU out of reset. That's
what this patch is doing.
Fixes: https://github.com/open-power/skiboot/issues/273
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
This patch improves readability just a tiny bit by using symbols, most
of them already existing, instead of values when accessing the PEC
registers.
No functional changes.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Github is deprecating Node 12 for actions[1]. Support for Node 16 was
added to github-pages-deploy-action in v4.4.1. Instead of specifying
v4.2.5 in our workflow, only reference the major release, which will
pick up the latest.
[1] https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
The links used to download Mambo have stopped working:
Step 5/9 : RUN if [ `arch` = "x86_64" ]; then dnf -y install http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm; fi
---> Running in 4676caeeb953
Last metadata expiration check: 0:03:46 ago on Thu Jan 19 16:06:19 2023.
[MIRROR] systemsim-p9-1.1-0.f22.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm [Recv failure: Connection reset by peer]
[MIRROR] systemsim-p9-1.1-0.f22.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm [Recv failure: Connection reset by peer]
[MIRROR] systemsim-p9-1.1-0.f22.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm [Recv failure: Connection reset by peer]
[MIRROR] systemsim-p9-1.1-0.f22.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm [Recv failure: Connection reset by peer]
[FAILED] systemsim-p9-1.1-0.f22.x86_64.rpm: Curl error (56): Failure when receiving data from the peer for http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm [Recv failure: Connection reset by peer]
Curl error (56): Failure when receiving data from the peer for http://public.dhe.ibm.com/software/server/powerfuncsim/p9/packages/v1.1-0/systemsim-p9-1.1-0.f22.x86_64.rpm [Recv failure: Connection reset by peer]
Oddly, this only happens with dnf. Using curl directly to fetch the
package works. Since the issue is isolated to http, let's just change
these links to https, which is probably a good idea regardless.
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Starting with qemu 7.2, there's no longer any PCI root port configured
when the '-nodefaults' option is used. Since that option is used and
we include some PCI devices when we test booting with qemu, qemu 7.2
is throwing an error as it doesn't have a bus to attach the devices
to. It's currently breaking the CI on Fedora rawhide, where qemu has
been updated to version 7.2.
Support for powernv in qemu has improved since the qemu-boot-check
test was introduced and there's no good reason to run with
'-nodefaults' any more. So this patch removes it. Which allows to also
remove a few extra devices from the command line since the defaults
are sane. And we can still attach PCI devices.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Github is deprecating Node 12 for actions[1]. Update our workflow from
using actions/checkout@v2 to v3, which runs on Node 16.
[1] https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com>
|
|
Fedora 35 has reached end-of-life. Remove it and add Fedora 37.
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Add an ftrace command that steps instructions and prints the symbol
whenever it changes. This can be helpful for low level debugging.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Rainier has GA'd as the S1014/S1022/S1024.
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
My user id didn't have access to disk.img and the code printed
the error message:
ERROR: pmem: 'mysim mmap' command needs newer mambo
mysim mmap has been in Mambo for a while so this patch prints out the
error message from catch. Now we get the useful:
ERROR: pmem: 'mysim mmap' Error opening file disk.img for mapping
Signed-off-by: Ryan Grimm <grimm@linux.ibm.com>
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
In the case of LE kernel and BE skiboot, the bt functions triggers an
illegal address when the kernel has a stack pointer in skiboot. For
example, in copy_and_flush:
pc: 0x000000000000C25C +0x000000000000C25C
lr: 0x000000000000C240 +0x000000000000C240
stack:0x0000000031C13D20 0x8428023000000000 +0x8428023000000000
Illegal Address 0x001EC13100000007
The bad address is from mem_display_64 and is fixed up by inverting
the LE bit:
systemsim % mem_display_64 [ expr 0x0000000031C13D20 ] 1
0x103EC13100000000
systemsim % mem_display_64 [ expr 0x0000000031C13D20 ] 0
0x0000000031C13E10
This patch tests the pointer by catching the illegal access and
inverting the LE bit. Now the stack trace looks good:
pc: 0x000000000000C254 +0x000000000000C254
lr: 0x000000000000C240 +0x000000000000C240
stack:0x0000000031C13D20 0x0000000030022884 .load_and_boot_kernel+0xc6c
stack:0x0000000031C13E10 0x0000000030023344 .main_cpu_entry+0x8bc
Opal calls also look good too now:
pc: 0x0000000030028588 .cpu_idle_delay+0xb8
lr: 0x000000003002856C .cpu_idle_delay+0x9c
stack:0x0000000031C13A10 0x0000000030028514 .cpu_idle_delay+0x44
stack:0x0000000031C13AB0 0x000000003002D6C0 .time_wait_nopoll+0x34
stack:0x0000000031C13B20 0x000000003002D77C .time_wait+0xa8
stack:0x0000000031C13BA0 0x000000003002821C .cpu_wait_job+0x3c
stack:0x0000000031C13C40 0x0000000030029554 .opal_reinit_cpus+0x3c0
stack:0x0000000031C13D10 0x00000000300038AC opal_entry+0x14c
stack:0x000000000071FDA0 0xC0000000000537B0 opal_call+0x40
stack:0x000000000071FE60 0xC00000000005450C opal_reinit_cpus+0x20
stack:0x000000000071FED0 0xC00000000065FDAC opal_configure_cores+0x48
stack:0x000000000071FF00 0xC000000000656554 early_setup+0x134
Signed-off-by: Ryan Grimm <grimm@linux.ibm.com>
Reviewed-by: Dan Horák <dan@danny.cz>
Acked-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
When looking for which interrupts are serviced by opal, we scan all
sources and query every single interrupt to know if it's for linux or
opal. An optimization was made so that if the source doesn't have an
'interrupt' op (=the handler) or an 'attributes' op (to do the
query), then we can skip the source. That's all good.
However, when xive was introduced, the 'irq_source' defining those ops
was wrapped in a 'xive_src' source which adds a level of indirection
for those 'attributes' and 'interrupt' ops. So the previous
optimization no longer works: the 'attributes' and 'interrupt' ops are
defined from the wrapper, but if we could look past the indirection,
we would realize they are not.
That is getting problematic for the rather large generic IPIs
source. We have 8 million such interrupts defined per chip on P10 and
because the above optimization is no longer kicking in, we are now
querying every single one of them to know if it is for opal. Real
hardware swallows it without much difficulty, but simulators
don't. Running qemu on my laptop, the full scan takes ~12 seconds per
chip!
This patch adds a callback for an interrupt source to report whether
it has opal interrupts. If the source doesn't define it, then we
fallback to looking at the 'interrupt' and 'attributes' ops, like
before, as it is still useful on P8. We can then define that new
callback on the xive sources, allowing to look past the indirection
level and skip scanning the source when appropriate.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
There's no reason to skip 2 bits when printing the Notification Source
Register (NSR) of any thread context ring. So it's got to be a silly
mistake and we should shift by 56 bits and not 58 :-)
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Reviewed-by: Dan Horák <dan@danny.cz>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Changing the HID attn enable bit on POWER9 and POWER10 requires the
icache to be flushed *after* ATTN is changed. It is not clear that it
may be done at the same time, so move it to after the attn bit change.
Flushing the icache with HID requires a 0->1 edge and the bit does not
reset back to 0, so first write 1 then 0 ready for the next flush.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Some firmware configurations boot in LPAR-per-core mode, which is not
compatible with KVM on POWER9 and later machines.
Detect which LPAR mode the boot core is in (all others will be set
the same way), and if booted in LPAR-per-core mode then print a warning
and add a device-tree entry that the OS can test for.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Fedora 34 has reached end-of-life. Remove it and add Fedora 36.
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
Reviewed-by: Frederic Barrat <fbarrat@linux.ibm.com>
Reviewed-by: Dan Horák <dan@danny.cz>
|
|
Caught by `make check` on fedora-rawhide (GCC 12):
libstb/secvar/test/../storage/fakenv_ops.c: In function 'fakenv_readpublic':
libstb/secvar/test/../storage/fakenv_ops.c:155:17: error: 'memcpy' reading 134 bytes from a region of size 34 [-Werror=stringop-overread]
155 | memcpy(&nv_name->t.name, tpmnv_vars_name, sizeof(TPM2B_NAME));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from libstb/secvar/test/secvar-test-secboot-tpm.c:5:
libstb/secvar/test/../storage/secboot_tpm.c:35:15: note: source object 'tpmnv_vars_name' of size 34
35 | const uint8_t tpmnv_vars_name[] = {
| ^~~~~~~~~~~~~~~
libstb/secvar/test/../storage/fakenv_ops.c:158:17: error: 'memcpy' reading 134 bytes from a region of size 34 [-Werror=stringop-overread]
158 | memcpy(&nv_name->t.name, tpmnv_control_name, sizeof(TPM2B_NAME));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
libstb/secvar/test/../storage/secboot_tpm.c:41:15: note: source object 'tpmnv_control_name' of size 34
41 | const uint8_t tpmnv_control_name[] = {
| ^~~~~~~~~~~~~~~~~~
The source and destination of each memcpy have known sizes, and we are
copying the smaller buffer into the larger one, so change the memcpy
size to that of the smaller buffer.
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Several OpenSSL APIs that libstb uses have been deprecated in OpenSSL
3.0. Commit 9a1f95f87004 ("libstb/create-container: avoid using
deprecated APIs when compiling with OpenSSL 3.0") enabled `make` to
succeed on an OpenSSL 3.0 system, but `make check` still fails:
libstb/print-container.c:405:9: error: 'EC_KEY_new' is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
libstb/print-container.c:413:9: error: 'EC_KEY_set_group' is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
libstb/print-container.c:425:9: error: 'EC_POINT_bn2point' is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
libstb/print-container.c:429:9: error: 'EC_KEY_set_public_key' is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
libstb/print-container.c:434:9: error: 'ECDSA_do_verify' is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
libstb/print-container.c:449:9: error: 'EC_KEY_free' is deprecated: Since OpenSSL 3.0 [-Werror=deprecated-declarations]
This print-container.c is derived from the one in the sb-signing-utils
project. Ideally, OpenSSL 3.0 support should be added there first and
then synced back into skiboot. Until that is complete[1], build with
-Wno-error=deprecated-declarations so these errors stop blocking our CI.
[1] https://github.com/open-power/sb-signing-utils/issues/35
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Caught by CI in fedora-rawhide (GCC 12):
hw/fsp/fsp-codeupdate.c:116:26: error: '%s' directive argument is null [-Werror=format-overflow=]
116 | prlog(PR_NOTICE, "CUPD: IPL SIDE = %s\n", side);
To prevent this, explicitly print the value of ipl_side instead.
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
Reviewed-by: Dan Horák <dan@danny.cz>
|
|
Use a look up table to support the p9, p10dd1 and p10dd2 conversions.
Running on a Rainier:
> [ 268.267370706,6] CPU: P10 generation processor (max 4 threads/core)
> [ 268.267372501,7] CPU: Boot CPU PIR is 0x0460 PVR is 0x00801200
> [ 268.284420384,5] CHIP: Chip ID 0000 type: P10 DD2.02
> [ 268.284464084,5] CHIP: Chip ID 0002 type: P10 DD2.02
> [ 268.284500468,5] CHIP: Chip ID 0004 type: P10 DD2.02
> [ 268.284538166,5] CHIP: Chip ID 0006 type: P10 DD2.02
> [ 268.286317879,5] PLAT: Detected Rainier platform
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Dan Horák <dan@danny.cz>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
In preparation for adding p10 logic. No functional change.
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Testing on rawhide somehow vanished when we converted to github
actions. This patch cleans up the related CI files and re-enables it.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
New LTS release from Canonical. So let's split it from ubuntu-rolling,
which will keep tracking the latest.
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Package 'python' no longer exists. Replace it with 'python3'
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
Similar to commit: c043065cf923 ("flash: Make size 64 bit safe")
update the encoding for PNOR partition which is the partition that is mapping
the full disk 64 bit safe.
Without this mambo disk larger than 4G fails to mount with the below error:
[ 2.075170] EXT4-fs (mtdblock0): bad geometry: block count 7864320 exceeds size of device (524288 blocks)
Fixes: 27fcf2fa8350 ("Expose PNOR Flash partitions to host MTD driver via devicetree")
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
The Github CI runners sometimes need to update their apt cache, or
packages fail to install:
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/g/gcc-9-cross/gcc-9-powerpc64le-linux-gnu_9.3.0-17ubuntu1~20.04cross2_amd64.deb 404 Not Found [IP: 40.81.13.82 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
Error: Process completed with exit code 100.
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
OpenSSL 3.0
OpenSSL 3.0 has deprecated functions that operate on raw key data, however the
closest replacement function are not available in OpenSSL 1.x. This patch
attempts to maintain compatibility with both 3.0 and 1.x versions.
Avoids using the following deprecated functions when compiling with 3.0:
- EC_KEY_get0_group
- EC_KEY_get0_public_key
- EC_POINT_point2bn
- EC_KEY_free
Signed-off-by: Eric Richter <erichte@linux.ibm.com>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
This builds the gcov coverage report and the skiboot docs on the Github
hosted runner, without using a container.
Remove the CROSS= definition from build-docs.sh to allow the makefile
detect which cross compiler is installed, instead of hardcoding the
non-le variant.
This is a simplification from the previous docs build, which used the
containers. However the containers have since been re-worked and no
longer leave the build artifacts on the host system.
The github action used for deploying seems to be the most commonly used:
https://github.com/JamesIves/github-pages-deploy-action
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
The Fedora containers don't have 'which' installed. This means the
detection of the cross compiler gives false negatives, leaving CROSS
undefined.
Instead use command -v, which outputs the path of the executable if it
exists.
Fixes: 9cd556ca1e5f ("Makefile: Search for distro-provided cross-compiler")
Signed-off-by: Joel Stanley <joel@jms.id.au>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Fedora 33 has been EOL since the end of 2021, so remove it from the CI
setup.
Signed-off-by: Dan Horák <dan@danny.cz>
Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
|
|
The current release is 0.18.1, so as long as the systems has greater
than 0.15 we should be okay. Obviously when installing from pip the
build will be fine.
Ubuntu 18.04: 0.14
Ubuntu 20.04: 0.16
Fedora 33: 0.16
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
With Centos 8 gone "EOL", the Centos 8 repositories have been moved(!)
causing the build to fail:
Step 2/14 : RUN yum -y update && yum clean all
---> Running in 49e78cad4cda
CentOS Linux 8 - AppStream 424 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare
internal mirrorlist: No URLs in mirrorlist
Remove the build from CI as it no longer works.
Signed-off-by: Joel Stanley <joel@jms.id.au>
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
In OF mambo pads zeros in the CPU node names. So if you have more than
16 CPUs, the first core will be at /cpus/PowerPC@00. Currently we
always look for /cpus/PowerPC@0.
Fix by zero padding based on the max CPU count. This also converts to
hex since that's what's actually needed.
This fix should handle any topology. I've tested upto 128 threads (16
cores * 8 threads) but past that the mambo I have starts throwing
internal errors.
Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Resolve : "Missing #interrupt-cells" warning duriing dts(device tree source) compilation
hdata/test/p81-811.spira.dts:1434.37-1442.4: Warning (interrupt_provider): /interrupt-controller@3ffff80030000: Missing #interrupt-cells in interrupt provider
An #interrupt-cells added to both reference dts for testing and source code to generate dtb from hdata.
Signed-off-by: Abhishek Singh Tomar <abhishek@linux.ibm.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Resolves : the warray bounds warning during compilation
/build/libc/include/string.h:34:16: warning: '__builtin_memset' offset [0, 2097151] is out of the bounds [0, 0] [-Warray-bounds]
34 | #define memset __builtin_memset
hw/fsp/fsp.c:1855:9: note: in expansion of macro 'memset'
1855 | memset(fsp_tce_table, 0, PSI_TCE_TABLE_SIZE);
use volatile pointer to avoid optimization introduced with gcc-11 on constant
address assignment to pointer.
Signed-off-by: Abhishek Singh Tomar <abhishek@linux.ibm.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Shaves an additional 4kb off skiboot.lid.xz.
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Stewart Smith <stewart@flamingspork.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Make the P8 NPU code depend on CONFIG_P8. This requires converting
a low level function to a no-op because the HMI NPU handling is not
so cleanly layered.
This saves an extra 6kb of skiboot.lid.xz.
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Stewart Smith <stewart@flamingspork.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Convert VAS and NX to use the hwprobe facility for init.
Reviewed-by: Dan Horák <dan@danny.cz>
[npiggin: remove imc_init because it moved later in boot (fbcbd4e47c)]
Signed-off-by: Stewart Smith <stewart@flamingspork.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
POWER8 support is large and significantly different than P9/10 code.
This change prepares to make P8 support configurable.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[ clg: Removed commented headers in slw.c ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
This saves about 10kB from skiboot.lid.xz
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Rather than have code call processor-specific SBE routines depending
on version, hide those details in SBE APIs.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[ clg: Fixed run-timer test ]
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
We can use a base CPU of POWER9 if we don't have P8.
We can also hide PHB3 code behind this,
and shave 12kb off skiboot.lid.xz
Reviewed-by: Dan Horák <dan@danny.cz>
[npiggin: add cpp define, fail gracefully on P8]
Signed-off-by: Stewart Smith <stewart@flamingspork.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Reviewed-by: Dan Horák <dan@danny.cz>
[npiggin: split out from initial hwprobe pach]
Signed-off-by: Stewart Smith <stewart@flamingspork.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
hwprobe is a little system to have different hardware probing modules
run in the dependency order they choose rather than hard coding
that order in core/init.c.
Reviewed-by: Dan Horák <dan@danny.cz>
Signed-off-by: Stewart Smith <stewart@flamingspork.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
POWER9/10 are missing TLB flushing after fast reboot. Add it back to
cpu_fast_reboot_complete(), which is where fast-reboot code thinks it
should be.
Suggested-by: Cédric Le Goater <clg@fr.ibm.com>
Fixes: 53ef0db6e2 ("asm/head.S: set POWER9 radix HID bit at entry")
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
The sleep/wake synchronisation involes the waker setting a wake
condition then testing if the target needs to be woken, vs setting
a wake-required flag then testing the wake condition. The low level
sleep state call comes after that.
This patch moves the synchronisation out from the low level sleep
functions and consolidates both copies into one place.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Rework the CPU idle state code:
* in_idle is true for any kind of idle including spinning. This is not
used anywhere except for state assertions for now.
* in_sleep is true for idle that requires an IPI to wake up.
* in_job_sleep is true for in_sleep idle which is also cpu_wake_on_job.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
There is no need to send the IPI while holding the job_lock. If the
target does wake after the job is queued and before we send the IPI,
it will check for new jobs anyway.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|
|
Pull the IPI sending code into its own function where it is used in
two places.
cpu_wake() already checks in_idle, so its caller does not need to
check pm_enabled.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Cédric Le Goater <clg@kaod.org>
|