Re: [PATCH v3] powerpc xmon: use `dcbf` inplace of `dcbi` instruction for 64bit Book3S
On Mon, 30 Mar 2020 13:29:54 +0530, Balamuruhan S wrote: > Data Cache Block Invalidate (dcbi) instruction implemented back in > PowerPC architecture version 2.03. But as per Power Processor Users Manual > it is obsolete and not supported by POWER8/POWER9 core. Attempt to use of > this illegal instruction results in a hypervisor emulation assistance > interrupt. So, ifdef it out the option `i` in xmon for 64bit Book3S. > > 0:mon> fi > cpu 0x0: Vector: 700 (Program Check) at [c3be74a0] > pc: c0102030: cacheflush+0x180/0x1a0 > lr: c0101f3c: cacheflush+0x8c/0x1a0 > sp: c3be7730 >msr: 80081033 > current = 0xc35e5c00 > paca= 0xc191 irqmask: 0x03 irq_happened: 0x01 > pid = 1025, comm = bash > Linux version 5.6.0-rc5-g5aa19adac (root@ltc-wspoon6) (gcc version 7.4.0 > (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #1 SMP Tue Mar 10 04:38:41 CDT 2020 > cpu 0x0: Exception 700 (Program Check) in xmon, returning to main loop > [c3be7c50] c084abb0 __handle_sysrq+0xf0/0x2a0 > [c3be7d00] c084b3c0 write_sysrq_trigger+0xb0/0xe0 > [c3be7d30] c04d1edc proc_reg_write+0x8c/0x130 > [c3be7d60] c040dc7c __vfs_write+0x3c/0x70 > [c3be7d80] c0410e70 vfs_write+0xd0/0x210 > [c3be7dd0] c041126c ksys_write+0xdc/0x130 > [c3be7e20] c000b9d0 system_call+0x5c/0x68 > --- Exception: c01 (System Call) at 7fffa345e420 > SP (70b08ab0) is in userspace Applied to powerpc/next. [1/1] powerpc/xmon: Use `dcbf` inplace of `dcbi` instruction for 64bit Book3S https://git.kernel.org/powerpc/c/81a413259a224f0d1783c41a74f18864d4f3d67e cheers
Re: [PATCH v3] powerpc xmon: use `dcbf` inplace of `dcbi` instruction for 64bit Book3S
Le 30/03/2020 à 09:59, Balamuruhan S a écrit : Data Cache Block Invalidate (dcbi) instruction implemented back in PowerPC architecture version 2.03. But as per Power Processor Users Manual it is obsolete and not supported by POWER8/POWER9 core. Attempt to use of this illegal instruction results in a hypervisor emulation assistance interrupt. So, ifdef it out the option `i` in xmon for 64bit Book3S. 0:mon> fi cpu 0x0: Vector: 700 (Program Check) at [c3be74a0] pc: c0102030: cacheflush+0x180/0x1a0 lr: c0101f3c: cacheflush+0x8c/0x1a0 sp: c3be7730 msr: 80081033 current = 0xc35e5c00 paca= 0xc191 irqmask: 0x03 irq_happened: 0x01 pid = 1025, comm = bash Linux version 5.6.0-rc5-g5aa19adac (root@ltc-wspoon6) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #1 SMP Tue Mar 10 04:38:41 CDT 2020 cpu 0x0: Exception 700 (Program Check) in xmon, returning to main loop [c3be7c50] c084abb0 __handle_sysrq+0xf0/0x2a0 [c3be7d00] c084b3c0 write_sysrq_trigger+0xb0/0xe0 [c3be7d30] c04d1edc proc_reg_write+0x8c/0x130 [c3be7d60] c040dc7c __vfs_write+0x3c/0x70 [c3be7d80] c0410e70 vfs_write+0xd0/0x210 [c3be7dd0] c041126c ksys_write+0xdc/0x130 [c3be7e20] c000b9d0 system_call+0x5c/0x68 --- Exception: c01 (System Call) at 7fffa345e420 SP (70b08ab0) is in userspace Signed-off-by: Balamuruhan S Reviewed-by: Christophe Leroy --- arch/powerpc/xmon/xmon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- changes in v3: - Fix Christophe's review comments and rebase it on latest mpe's merge tree, * mention the dcbi obsolete statement based on Power processor users manual in commit message. * make #ifdef in a more simple way. changes in v2: - Fix review comments from Segher and Michael, * change incorrect architecture version 2.01 to 2.03 in commit message. * ifdef it out the option `i` for PPC_BOOK3S_64 instead to drop it and change the commit message accordingly. diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index ea303b7e4e29..7b62d5dcc4a1 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -1808,7 +1808,7 @@ static void cacheflush(void) catch_memory_errors = 1; sync(); - if (cmd != 'i') { + if (cmd != 'i' || IS_ENABLED(CONFIG_PPC_BOOK3S_64)) { for (; nflush > 0; --nflush, adrs += L1_CACHE_BYTES) cflush((void *) adrs); } else { base-commit: 1ad3b5ebe084246ad593a22707cd91ef6418c31e
[PATCH v3] powerpc xmon: use `dcbf` inplace of `dcbi` instruction for 64bit Book3S
Data Cache Block Invalidate (dcbi) instruction implemented back in PowerPC architecture version 2.03. But as per Power Processor Users Manual it is obsolete and not supported by POWER8/POWER9 core. Attempt to use of this illegal instruction results in a hypervisor emulation assistance interrupt. So, ifdef it out the option `i` in xmon for 64bit Book3S. 0:mon> fi cpu 0x0: Vector: 700 (Program Check) at [c3be74a0] pc: c0102030: cacheflush+0x180/0x1a0 lr: c0101f3c: cacheflush+0x8c/0x1a0 sp: c3be7730 msr: 80081033 current = 0xc35e5c00 paca= 0xc191 irqmask: 0x03 irq_happened: 0x01 pid = 1025, comm = bash Linux version 5.6.0-rc5-g5aa19adac (root@ltc-wspoon6) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #1 SMP Tue Mar 10 04:38:41 CDT 2020 cpu 0x0: Exception 700 (Program Check) in xmon, returning to main loop [c3be7c50] c084abb0 __handle_sysrq+0xf0/0x2a0 [c3be7d00] c084b3c0 write_sysrq_trigger+0xb0/0xe0 [c3be7d30] c04d1edc proc_reg_write+0x8c/0x130 [c3be7d60] c040dc7c __vfs_write+0x3c/0x70 [c3be7d80] c0410e70 vfs_write+0xd0/0x210 [c3be7dd0] c041126c ksys_write+0xdc/0x130 [c3be7e20] c000b9d0 system_call+0x5c/0x68 --- Exception: c01 (System Call) at 7fffa345e420 SP (70b08ab0) is in userspace Signed-off-by: Balamuruhan S --- arch/powerpc/xmon/xmon.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) --- changes in v3: - Fix Christophe's review comments and rebase it on latest mpe's merge tree, * mention the dcbi obsolete statement based on Power processor users manual in commit message. * make #ifdef in a more simple way. changes in v2: - Fix review comments from Segher and Michael, * change incorrect architecture version 2.01 to 2.03 in commit message. * ifdef it out the option `i` for PPC_BOOK3S_64 instead to drop it and change the commit message accordingly. diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index ea303b7e4e29..7b62d5dcc4a1 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c @@ -1808,7 +1808,7 @@ static void cacheflush(void) catch_memory_errors = 1; sync(); - if (cmd != 'i') { + if (cmd != 'i' || IS_ENABLED(CONFIG_PPC_BOOK3S_64)) { for (; nflush > 0; --nflush, adrs += L1_CACHE_BYTES) cflush((void *) adrs); } else { base-commit: 1ad3b5ebe084246ad593a22707cd91ef6418c31e -- 2.24.1