From: Alexander Gordeev Date: Sun, 7 May 2023 16:09:02 +0000 (+0200) Subject: s390/ipl: fix IPIB virtual vs physical address confusion X-Git-Tag: v6.6.17~4642^2~12 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2facd5d3980f3a26c04fe6ec8689a1d019a5812c;p=platform%2Fkernel%2Flinux-rpi.git s390/ipl: fix IPIB virtual vs physical address confusion The pointer to IPL Parameter Information Block is stored in the absolute lowcore for later use by dump tools. That pointer is a virtual address, though it should be physical instead. Note, this does not fix a real issue, since virtual and physical addresses are currently the same. Suggested-by: Heiko Carstens Reviewed-by: Heiko Carstens Signed-off-by: Alexander Gordeev --- diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c index 43de939..f44f70d 100644 --- a/arch/s390/kernel/ipl.c +++ b/arch/s390/kernel/ipl.c @@ -1935,14 +1935,13 @@ static struct shutdown_action __refdata dump_action = { static void dump_reipl_run(struct shutdown_trigger *trigger) { - unsigned long ipib = (unsigned long) reipl_block_actual; struct lowcore *abs_lc; unsigned int csum; csum = (__force unsigned int) csum_partial(reipl_block_actual, reipl_block_actual->hdr.len, 0); abs_lc = get_abs_lowcore(); - abs_lc->ipib = ipib; + abs_lc->ipib = __pa(reipl_block_actual); abs_lc->ipib_checksum = csum; put_abs_lowcore(abs_lc); dump_run(trigger);