[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] ppc64: disable gen_pause() for linux-user mode
From: |
David Gibson |
Subject: |
Re: [Qemu-devel] [PATCH] ppc64: disable gen_pause() for linux-user mode |
Date: |
Mon, 20 Jun 2016 10:22:46 +1000 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Sun, Jun 19, 2016 at 09:19:24PM +0200, Laurent Vivier wrote:
> While trying to install a fedora container with
> "lxc-create -t fedora -- -I qemu-ppc64" the installation abort with
> the following error:
>
> qemu: fatal: Unknown exception 0x65537. Aborting
>
> NIP 0000004000927924 LR 00000040009e325c CTR 0000004000927480 XER
> 0000000000000000 CPU#0
> MSR 9000000102806000 HID0 0000000000000000 HF 9000000002806000 iidx 3 didx 3
> TB 00248932 1069155773327487
> GPR00 00000040009e325c 00000040007ff800 0000004000aba098 0000000000000000
> GPR04 00000040007ff878 0000004000dcb588 0000004000dcb830 0000004000a7a098
> GPR08 0000000000000000 0000000000000000 00000040007ff878 0000004000927960
> GPR12 0000000022022448 0000004000e2aef0 0000000000000000 0000000000000000
> GPR16 0000000000000000 0000000000000000 0000000000000002 0000000000000001
> GPR20 0000000000000000 0000000000000000 0000000000000000 0000004000800699
> GPR24 0000004000e13320 0000000000000000 0000004000ac9ad8 0000004000ac9ae0
> GPR28 0000000000000001 00000000100210a0 0000000000000000 0000000000000038
> CR 22022442 [ E E - E E G G E ] RES ffffffffffffffff
> FPR00 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR04 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR08 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR12 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR16 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR20 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR24 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPR28 0000000000000000 0000000000000000 0000000000000000 0000000000000000
> FPSCR 0000000000000000
> /usr/share/lxc/templates/lxc-fedora: line 487: 26661 Aborted
> (core dumped) chroot . yum -y --nogpgcheck --installroot /run/install install
> python rpm yum
>
> I've bisected until the commit:
>
> commit b68e60e6f0d2865e961a800fb8db96a7fc6494c4
> Author: Benjamin Herrenschmidt <address@hidden>
> Date: Tue May 3 18:03:33 2016 +0200
>
> ppc: Get out of emulation on SMT "OR" ops
>
> Otherwise tight loops at smt_low for example, which OPAL does,
> eat so much CPU that we can't boot a kernel anymore. With that,
> I can boot 8 CPUs just fine with powernv.
>
> Signed-off-by: Benjamin Herrenschmidt <address@hidden>
> Reviewed-by: David Gibson <address@hidden>
> Signed-off-by: David Gibson <address@hidden>
>
> We can fix that by preventing to send EXCP_HLT in the case of linux-user mode,
> as the main loop doesn't know how to manage it.
Applied to ppc-for-2.7
>
> Signed-off-by: Laurent Vivier <address@hidden>
> ---
> target-ppc/translate.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/target-ppc/translate.c b/target-ppc/translate.c
> index 30dc76a..07b7e64 100644
> --- a/target-ppc/translate.c
> +++ b/target-ppc/translate.c
> @@ -1393,7 +1393,7 @@ GEN_LOGICAL2(nand, tcg_gen_nand_tl, 0x0E, PPC_INTEGER);
> /* nor & nor. */
> GEN_LOGICAL2(nor, tcg_gen_nor_tl, 0x03, PPC_INTEGER);
>
> -#if defined(TARGET_PPC64)
> +#if defined(TARGET_PPC64) && !defined(CONFIG_USER_ONLY)
> static void gen_pause(DisasContext *ctx)
> {
> TCGv_i32 t0 = tcg_const_i32(0);
> @@ -1481,7 +1481,9 @@ static void gen_or(DisasContext *ctx)
> /* Pause us out of TCG otherwise spin loops with smt_low
> * eat too much CPU and the kernel hangs
> */
> +#if !defined(CONFIG_USER_ONLY)
> gen_pause(ctx);
> +#endif
> }
> #endif
> }
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
signature.asc
Description: PGP signature