diff options
author | Dave Airlie <airlied@redhat.com> | 2016-12-05 17:11:48 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-12-05 17:11:48 +1000 |
commit | f03ee46be9401e3434f52bb15e92d1e640f76438 (patch) | |
tree | f0a1819bd3e44902578b80e1a03d1dde1c6099b8 /arch/powerpc/boot/opal.c | |
parent | 0d5320fc194128a1a584a7e91a606cb3af2ded80 (diff) | |
parent | 3e5de27e940d00d8d504dfb96625fb654f641509 (diff) | |
download | linux-f03ee46be9401e3434f52bb15e92d1e640f76438.tar.bz2 |
Backmerge tag 'v4.9-rc8' into drm-next
Linux 4.9-rc8
Daniel requested this so we could apply some follow on fixes cleanly to -next.
Diffstat (limited to 'arch/powerpc/boot/opal.c')
-rw-r--r-- | arch/powerpc/boot/opal.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/powerpc/boot/opal.c b/arch/powerpc/boot/opal.c index 1f37e1c1d6d8..d7b4fd47eb44 100644 --- a/arch/powerpc/boot/opal.c +++ b/arch/powerpc/boot/opal.c @@ -23,14 +23,25 @@ struct opal { static u32 opal_con_id; +/* see opal-wrappers.S */ int64_t opal_console_write(int64_t term_number, u64 *length, const u8 *buffer); int64_t opal_console_read(int64_t term_number, uint64_t *length, u8 *buffer); int64_t opal_console_write_buffer_space(uint64_t term_number, uint64_t *length); int64_t opal_console_flush(uint64_t term_number); int64_t opal_poll_events(uint64_t *outstanding_event_mask); +void opal_kentry(unsigned long fdt_addr, void *vmlinux_addr); + static int opal_con_open(void) { + /* + * When OPAL loads the boot kernel it stashes the OPAL base and entry + * address in r8 and r9 so the kernel can use the OPAL console + * before unflattening the devicetree. While executing the wrapper will + * probably trash r8 and r9 so this kentry hook restores them before + * entering the decompressed kernel. + */ + platform_ops.kentry = opal_kentry; return 0; } |