other: 0.886 instruction: 0.861 mistranslation: 0.859 semantic: 0.850 [Qemu-devel] [BUG] nanoMIPS support problem related to extract2 support for i386 TCG target 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 Date: Mon Feb 25 11:42:35 2019 -0800 tcg/i386: Support INDEX_op_extract2_{i32,i64} Signed-off-by: Richard Henderson Please advise on further actions. Yours, Aleksandar On Fri, Jul 12, 2019 at 8:09 PM Aleksandar Markovic 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 > Date: Mon Feb 25 11:42:35 2019 -0800 > > tcg/i386: Support INDEX_op_extract2_{i32,i64} > > Signed-off-by: Richard Henderson > > 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. > Yours, > Aleksandar On Fri, Jul 12, 2019 at 8:19 PM Aleksandar Markovic wrote: > > On Fri, Jul 12, 2019 at 8:09 PM Aleksandar Markovic > 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 > > Date: Mon Feb 25 11:42:35 2019 -0800 > > > > tcg/i386: Support INDEX_op_extract2_{i32,i64} > > > > Signed-off-by: Richard Henderson > > > > 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 Aleksandar Markovic writes: > 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 > Date: Mon Feb 25 11:42:35 2019 -0800 > > tcg/i386: Support INDEX_op_extract2_{i32,i64} > > Signed-off-by: Richard Henderson > > Please advise on further actions. Please see the fix: Subject: [PATCH for-4.1] tcg: Fix constant folding of INDEX_op_extract2_i32 Date: Tue, 9 Jul 2019 14:19:00 +0200 Message-Id: > > Yours, > Aleksandar -- Alex Bennée On Sat, Jul 13, 2019 at 9:21 AM Alex Bennée wrote: > > Please see the fix: > > Subject: [PATCH for-4.1] tcg: Fix constant folding of INDEX_op_extract2_i32 > Date: Tue, 9 Jul 2019 14:19:00 +0200 > Message-Id: > Thanks, this fixed the behavior. Sincerely, Aleksandar > > > > > Yours, > > Aleksandar > > > -- > Alex Bennée >