qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [BUG] nanoMIPS support problem related to extract2 supp


From: Aleksandar Markovic
Subject: Re: [Qemu-devel] [BUG] nanoMIPS support problem related to extract2 support for i386 TCG target
Date: Fri, 12 Jul 2019 21:07:31 +0200

On Fri, Jul 12, 2019 at 8:19 PM Aleksandar Markovic
<address@hidden> wrote:
>
> On Fri, Jul 12, 2019 at 8:09 PM Aleksandar Markovic
> <address@hidden> wrote:
> >
> > Hello, Richard, Peter, and others.
> >
> > As a part of activities before 4.1 release, I tested nanoMIPS support
> > in QEMU (which was officially fully integrated in 4.0, is currently
> > limited to system mode only, and was tested in a similar fashion right
> > prior to 4.0).
> >
> > This support appears to be broken now. Following command line works in
> > 4.0, but results in kernel panic for the current tip of the tree:
> >
> > ~/Build/qemu-test-revert-c6fb8c0cf704/mipsel-softmmu/qemu-system-mipsel
> > -cpu I7200 -kernel generic_nano32r6el_page4k -M malta -serial stdio -m
> > 1G -hda nanomips32r6_le_sf_2017.05-03-59-gf5595d6.ext4 -append
> > "mem=256m@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda"
> >
> > (kernel and rootfs image files used in this commend line can be
> > downloaded from the locations mentioned in our user guide)
> >
> > The quick bisect points to the commit:
> >
> > commit c6fb8c0cf704c4a1a48c3e99e995ad4c58150dab
> > Author: Richard Henderson <address@hidden>
> > Date:   Mon Feb 25 11:42:35 2019 -0800
> >
> >     tcg/i386: Support INDEX_op_extract2_{i32,i64}
> >
> >     Signed-off-by: Richard Henderson <address@hidden>
> >
> > Please advise on further actions.
> >
>
> Just to add a data point:
>
> If the following change is applied:
>
> diff --git a/tcg/i386/tcg-target.h b/tcg/i386/tcg-target.h
> index 928e8b8..b6a4cf2 100644
> --- a/tcg/i386/tcg-target.h
> +++ b/tcg/i386/tcg-target.h
> @@ -124,7 +124,7 @@ extern bool have_avx2;
>  #define TCG_TARGET_HAS_deposit_i32      1
>  #define TCG_TARGET_HAS_extract_i32      1
>  #define TCG_TARGET_HAS_sextract_i32     1
> -#define TCG_TARGET_HAS_extract2_i32     1
> +#define TCG_TARGET_HAS_extract2_i32     0
>  #define TCG_TARGET_HAS_movcond_i32      1
>  #define TCG_TARGET_HAS_add2_i32         1
>  #define TCG_TARGET_HAS_sub2_i32         1
> @@ -163,7 +163,7 @@ extern bool have_avx2;
>  #define TCG_TARGET_HAS_deposit_i64      1
>  #define TCG_TARGET_HAS_extract_i64      1
>  #define TCG_TARGET_HAS_sextract_i64     0
> -#define TCG_TARGET_HAS_extract2_i64     1
> +#define TCG_TARGET_HAS_extract2_i64     0
>  #define TCG_TARGET_HAS_movcond_i64      1
>  #define TCG_TARGET_HAS_add2_i64         1
>  #define TCG_TARGET_HAS_sub2_i64         1
>
> ... the problem disappears.
>

It looks the problem is in this code segment in of tcg_gen_deposit_i32():

        if (ofs == 0) {
            tcg_gen_extract2_i32(ret, arg1, arg2, len);
            tcg_gen_rotli_i32(ret, ret, len);
            goto done;
        }

)

If that code segment is deleted altogether (which effectively forces
usage of "fallback" part of tcg_gen_deposit_i32()), the problem also
vanishes (without changes from my previous mail).

>
> > Yours,
> > Aleksandar



reply via email to

[Prev in Thread] Current Thread [Next in Thread]