Message ID | 1466363964-21378-1-git-send-email-laurent@vivier.eu (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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 <benh@kernel.crashing.org> > 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 <benh@kernel.crashing.org> > Reviewed-by: David Gibson <david@gibson.dropbear.id.au> > Signed-off-by: David Gibson <david@gibson.dropbear.id.au> > > 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 <laurent@vivier.eu> > --- > 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 > }
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 }