On 17.06.2016 12:41, Cédric Le Goater wrote: > On 06/17/2016 09:10 AM, Thomas Huth wrote: >> On 17.06.2016 08:03, Cédric Le Goater wrote: >>> On 06/17/2016 07:54 AM, Cédric Le Goater wrote: >>>> On 06/17/2016 04:27 AM, David Gibson wrote: >>>>> On Thu, Jun 16, 2016 at 11:07:02AM +1000, David Gibson wrote: >>>>>> On Mon, Jun 13, 2016 at 07:24:47AM +0200, Cédric Le Goater wrote: >>>>>>> From: Benjamin Herrenschmidt <b...@kernel.crashing.org> >>>>>>> >>>>>>> This reworks emulation of the various "rfi" variants. I removed >>>>>>> some masking bits that I couldn't make sense of, the only bit that >>>>>>> I am aware we should mask here is POW, the CPU's MSR mask should >>>>>>> take care of the rest. >>>>>>> >>>>>>> This also fixes some problems when running 32-bit userspace under >>>>>>> a 64-bit kernel. > > he. > >>>>>>> Signed-off-by: Benjamin Herrenschmidt <b...@kernel.crashing.org> >>>>>>> Reviewed-by: David Gibson <da...@gibson.dropbear.id.au> >>>>>> >>>>>> I've merged this patch to ppc-for-2.7. >>>>> >>>>> ..and now I've removed it again. It seems that this breaks Thomas' >>>>> new test that OpenBIOS runs on the mac machine types. Not sure why, >>>>> but we need to figure that out before I apply. >>>> >>>> Just this patch ? I booted a macosx image with it. but maybe just a mac99. >>>> I will check today. >>> >>> With your branch ppc-for-2.7 (at commit aba2e6258d86) + the >>> "ppc: Fix rfi/rfid/hrfi/... emulation" patch, these guests : >>> >>> qemu-system-ppc -cdrom ./darwinppc-602.cdr -boot d >>> qemu-system-ppc -M mac99 -cdrom ./darwinppc-602.cdr -boot d >> ^ >> | >> You're missing the "64" here ;-) >> >>> reach the installer macosx installer. >> >> It seems to be only failing for the 64-bit builds - and there only for >> the PPC970 CPU (which is the default for the mac99 machine in 64-bit >> builds): >> >> qemu-system-ppc64 -nographic -cpu 750 -M mac99 ==> works fine >> >> qemu-system-ppc64 -nographic -cpu 970 -M mac99 ==> hangs > > > This is too brutal : > > + /* This instruction doesn't exist anymore on 64-bit server > + * processors compliant with arch 2.x > + */ > + if (ctx->insns_flags & PPC_SEGMENT_64B) { > + gen_inval_exception(ctx, POWERPC_EXCP_INVAL_INVAL); > + return; > + } > > There are a couple of instructions which have been deleted from > ISA 2.x. rfi is one of them. Could we use a insn_flag to filter > them ?
According to the PPC970FX user manual that I have: "The 970FX does not provide support for the following optional or obsolete instructions (or instruction forms). Attempted use of these will result in an illegal instruction type program interrupt. [...] · rfi - Return from interrupt (obsolete) " So if OpenBIOS is using this instruction in 970 mode, it's maybe OpenBIOS that should be fixed instead? Thomas