Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 6, 2013 at 1:40 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 12:28:16AM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 It cannot. In 16 bit mode it is decoded as two instructions: 0f 1f 80 00 00 nopw 0x0(%bx,%si) 00 00 add%al,(%bx,%si) OK, I will just test the first four nop instructions. Should I commit another patch? Arthur. DR6=0ff0 DR7=0400 EFER=0500 Code=00 00 e9 50 ff ff ff 00 00 00 00 85 d2 74 20 45 31 c0 31 c9 0f 1f 80 00 00 00 00 0f b6 04 31 41 83 c0 01 88 04 39 48 83 c1 01 41 39 d0 75 ec 48 89 f8 The error code is 0f 1f 80 00 00 00 00, which is a 7-bytes nop. Will the emulator runs well in that case when booting RHEL5.9 64-bit? Arthur + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 06, 2013 at 02:49:14PM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 1:40 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 12:28:16AM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 It cannot. In 16 bit mode it is decoded as two instructions: 0f 1f 80 00 00 nopw 0x0(%bx,%si) 00 00 add%al,(%bx,%si) OK, I will just test the first four nop instructions. Should I commit another patch? Yes, all others will have to go into emulator.c. Arthur. DR6=0ff0 DR7=0400 EFER=0500 Code=00 00 e9 50 ff ff ff 00 00 00 00 85 d2 74 20 45 31 c0 31 c9 0f 1f 80 00 00 00 00 0f b6 04 31 41 83 c0 01 88 04 39 48 83 c1 01 41 39 d0 75 ec 48 89 f8 The error code is 0f 1f 80 00 00 00 00, which is a 7-bytes nop. Will the emulator runs well in that case when booting RHEL5.9 64-bit? Arthur + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- Gleb. -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 6, 2013 at 3:02 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 02:49:14PM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 1:40 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 12:28:16AM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 It cannot. In 16 bit mode it is decoded as two instructions: 0f 1f 80 00 00 nopw 0x0(%bx,%si) 00 00 add%al,(%bx,%si) OK, I will just test the first four nop instructions. Should I commit another patch? Yes, all others will have to go into emulator.c. You mean I need also add another test for nopl5~nop9 in emulator.c with the trick emulator mode? I will commit a modified one for realmode.c since some other works should be done in emulator.c. Arthur. DR6=0ff0 DR7=0400 EFER=0500 Code=00 00 e9 50 ff ff ff 00 00 00 00 85 d2 74 20 45 31 c0 31 c9 0f 1f 80 00 00 00 00 0f b6 04 31 41 83 c0 01 88 04 39 48 83 c1 01 41 39 d0 75 ec 48 89 f8 The error code is 0f 1f 80 00 00 00 00, which is a 7-bytes nop. Will the emulator runs well in that case when booting RHEL5.9 64-bit? Arthur + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- Gleb. -- Gleb. -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 6, 2013 at 3:17 PM, 李春奇 Arthur Chunqi Li yzt...@gmail.com wrote: On Thu, Jun 6, 2013 at 3:02 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 02:49:14PM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 1:40 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 12:28:16AM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 It cannot. In 16 bit mode it is decoded as two instructions: 0f 1f 80 00 00 nopw 0x0(%bx,%si) 00 00 add%al,(%bx,%si) OK, I will just test the first four nop instructions. Should I commit another patch? Yes, all others will have to go into emulator.c. You mean I need also add another test for nopl5~nop9 in emulator.c with the trick emulator mode? I will commit a modified one for realmode.c since some other works should be done in emulator.c. Since we need to place some relevant codes in emulator.c, why don't we place all the tests in emulator.c? Arthur. Arthur. DR6=0ff0 DR7=0400 EFER=0500 Code=00 00 e9 50 ff ff ff 00 00 00 00 85 d2 74 20 45 31 c0 31 c9 0f 1f 80 00 00 00 00 0f b6 04 31 41 83 c0 01 88 04 39 48 83 c1 01 41 39 d0 75 ec 48 89 f8 The error code is 0f 1f 80 00 00 00 00, which is a 7-bytes nop. Will the emulator runs well in that case when booting RHEL5.9 64-bit? Arthur + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- Gleb. -- Gleb. -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 06, 2013 at 03:22:59PM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 3:17 PM, 李春奇 Arthur Chunqi Li yzt...@gmail.com wrote: On Thu, Jun 6, 2013 at 3:02 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 02:49:14PM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 1:40 PM, Gleb Natapov g...@redhat.com wrote: On Thu, Jun 06, 2013 at 12:28:16AM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 It cannot. In 16 bit mode it is decoded as two instructions: 0f 1f 80 00 00 nopw 0x0(%bx,%si) 00 00 add%al,(%bx,%si) OK, I will just test the first four nop instructions. Should I commit another patch? Yes, all others will have to go into emulator.c. You mean I need also add another test for nopl5~nop9 in emulator.c with the trick emulator mode? I will commit a modified one for realmode.c since some other works should be done in emulator.c. Since we need to place some relevant codes in emulator.c, why don't we place all the tests in emulator.c? We can place those 4 in both. I do not always run all tests so it is nice to cover as much as possible in both. -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Wed, Jun 05, 2013 at 05:41:41PM +0800, 李春奇 Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. The patch is mangled. Lines are wrapped, tabs are replaced with spaces. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e6e48c9 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ +MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop +MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop +MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop +MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop +MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop +MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop +MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop +MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop +MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop +exec_in_big_real_mode(insn_nopl1); +exec_in_big_real_mode(insn_nopl2); +exec_in_big_real_mode(insn_nopl3); +exec_in_big_real_mode(insn_nopl4); +exec_in_big_real_mode(insn_nopl5); +exec_in_big_real_mode(insn_nopl6); +exec_in_big_real_mode(insn_nopl7); +exec_in_big_real_mode(insn_nopl8); +exec_in_big_real_mode(insn_nopl9); +report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
Hi Gleb, I generate this mail by git send-email and I think the format is OK. This is my first try to commit a patch in open source community. Sorry for annoying you guys so much. Thanks, Arthur On Wed, Jun 5, 2013 at 10:54 PM, Arthur Chunqi Li yzt...@gmail.com wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Wed, Jun 05, 2013 at 10:56:54PM +0800, 李春奇 Arthur Chunqi Li wrote: Hi Gleb, I generate this mail by git send-email and I think the format is OK. But I have not received the email, only this your reply to it. This is my first try to commit a patch in open source community. Sorry for annoying you guys so much. Thanks, No problem. Arthur On Wed, Jun 5, 2013 at 10:54 PM, Arthur Chunqi Li yzt...@gmail.com wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Wed, Jun 5, 2013 at 11:11 PM, Gleb Natapov g...@redhat.com wrote: On Wed, Jun 05, 2013 at 10:56:54PM +0800, 李春奇 Arthur Chunqi Li wrote: Hi Gleb, I generate this mail by git send-email and I think the format is OK. But I have not received the email, only this your reply to it. Maybe the initial mail is in your spam box. This is my first try to commit a patch in open source community. Sorry for annoying you guys so much. Thanks, No problem. Arthur On Wed, Jun 5, 2013 at 10:54 PM, Arthur Chunqi Li yzt...@gmail.com wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Wed, Jun 5, 2013 at 11:17 PM, Gleb Natapov g...@redhat.com wrote: On Wed, Jun 05, 2013 at 11:13:37PM +0800, 李春奇 Arthur Chunqi Li wrote: On Wed, Jun 5, 2013 at 11:11 PM, Gleb Natapov g...@redhat.com wrote: On Wed, Jun 05, 2013 at 10:56:54PM +0800, 李春奇 Arthur Chunqi Li wrote: Hi Gleb, I generate this mail by git send-email and I think the format is OK. But I have not received the email, only this your reply to it. Maybe the initial mail is in your spam box. Doubt it. I do not see it in mailing list archive either: http://news.gmane.org/gmane.comp.emulators.kvm.devel What git command line you've used to sent the email? git send-email --to kvm@vger.kernel.org --cc pbonz...@redhat.com --cc g...@redhat.com 0001-Test-case-of-emulating-multibyte-NOP.patch Should I need to add some smtp options? Arthur This is my first try to commit a patch in open source community. Sorry for annoying you guys so much. Thanks, No problem. Arthur On Wed, Jun 5, 2013 at 10:54 PM, Arthur Chunqi Li yzt...@gmail.com wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Wed, Jun 05, 2013 at 11:13:37PM +0800, 李春奇 Arthur Chunqi Li wrote: On Wed, Jun 5, 2013 at 11:11 PM, Gleb Natapov g...@redhat.com wrote: On Wed, Jun 05, 2013 at 10:56:54PM +0800, 李春奇 Arthur Chunqi Li wrote: Hi Gleb, I generate this mail by git send-email and I think the format is OK. But I have not received the email, only this your reply to it. Maybe the initial mail is in your spam box. Doubt it. I do not see it in mailing list archive either: http://news.gmane.org/gmane.comp.emulators.kvm.devel What git command line you've used to sent the email? This is my first try to commit a patch in open source community. Sorry for annoying you guys so much. Thanks, No problem. Arthur On Wed, Jun 5, 2013 at 10:54 PM, Arthur Chunqi Li yzt...@gmail.com wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Wed, Jun 05, 2013 at 11:22:19PM +0800, 李春奇 Arthur Chunqi Li wrote: On Wed, Jun 5, 2013 at 11:17 PM, Gleb Natapov g...@redhat.com wrote: On Wed, Jun 05, 2013 at 11:13:37PM +0800, 李春奇 Arthur Chunqi Li wrote: On Wed, Jun 5, 2013 at 11:11 PM, Gleb Natapov g...@redhat.com wrote: On Wed, Jun 05, 2013 at 10:56:54PM +0800, 李春奇 Arthur Chunqi Li wrote: Hi Gleb, I generate this mail by git send-email and I think the format is OK. But I have not received the email, only this your reply to it. Maybe the initial mail is in your spam box. Doubt it. I do not see it in mailing list archive either: http://news.gmane.org/gmane.comp.emulators.kvm.devel What git command line you've used to sent the email? git send-email --to kvm@vger.kernel.org --cc pbonz...@redhat.com --cc g...@redhat.com 0001-Test-case-of-emulating-multibyte-NOP.patch Should I need to add some smtp options? You need to configure smtp server. Just like you need to do that for any other email application. Arthur This is my first try to commit a patch in open source community. Sorry for annoying you guys so much. Thanks, No problem. Arthur On Wed, Jun 5, 2013 at 10:54 PM, Arthur Chunqi Li yzt...@gmail.com wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- Arthur Chunqi Li Department of Computer Science School of EECS Peking University Beijing, China -- Gleb. -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 DR6=0ff0 DR7=0400 EFER=0500 Code=00 00 e9 50 ff ff ff 00 00 00 00 85 d2 74 20 45 31 c0 31 c9 0f 1f 80 00 00 00 00 0f b6 04 31 41 83 c0 01 88 04 39 48 83 c1 01 41 39 d0 75 ec 48 89 f8 The error code is 0f 1f 80 00 00 00 00, which is a 7-bytes nop. Will the emulator runs well in that case when booting RHEL5.9 64-bit? Arthur + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] Test case of emulating multibyte NOP
On Thu, Jun 06, 2013 at 12:28:16AM +0800, 李春奇 Arthur Chunqi Li wrote: On Thu, Jun 6, 2013 at 12:13 AM, Gleb Natapov g...@redhat.com wrote: This time the email is perfect :) On Thu, Jun 06, 2013 at 12:02:52AM +0800, Arthur Chunqi Li wrote: Add multibyte NOP test case to kvm-unit-tests. This version adds test cases into x86/realmode.c. This can test one of bugs when booting RHEL5.9 64-bit. Signed-off-by: Arthur Chunqi Li yzt...@gmail.com --- x86/realmode.c | 24 1 file changed, 24 insertions(+) diff --git a/x86/realmode.c b/x86/realmode.c index 981be08..e103ca6 100644 --- a/x86/realmode.c +++ b/x86/realmode.c @@ -1504,6 +1504,29 @@ static void test_fninit(void) report(fninit, 0, fsw == 0 (fcw 0x103f) == 0x003f); } +static void test_nopl(void) +{ + MK_INSN(nopl1, .byte 0x90\n\r); // 1 byte nop + MK_INSN(nopl2, .byte 0x66, 0x90\n\r); // 2 bytes nop + MK_INSN(nopl3, .byte 0x0f, 0x1f, 0x00\n\r); // 3 bytes nop + MK_INSN(nopl4, .byte 0x0f, 0x1f, 0x40, 0x00\n\r); // 4 bytes nop But all nops below that are not supported in 16 bit mode. You can disassemble realmode.elf in 16bit node (objdump -z -d -mi8086 x86/realmode.elf) and check yourself. Lets not complicate things for now and test only those that are easy to test. Yes. But what if a 7-bytes nop runs in 16bit mode? Just the same as https://bugzilla.redhat.com/show_bug.cgi?id=967652 It cannot. In 16 bit mode it is decoded as two instructions: 0f 1f 80 00 00 nopw 0x0(%bx,%si) 00 00 add%al,(%bx,%si) DR6=0ff0 DR7=0400 EFER=0500 Code=00 00 e9 50 ff ff ff 00 00 00 00 85 d2 74 20 45 31 c0 31 c9 0f 1f 80 00 00 00 00 0f b6 04 31 41 83 c0 01 88 04 39 48 83 c1 01 41 39 d0 75 ec 48 89 f8 The error code is 0f 1f 80 00 00 00 00, which is a 7-bytes nop. Will the emulator runs well in that case when booting RHEL5.9 64-bit? Arthur + MK_INSN(nopl5, .byte 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 5 bytes nop + MK_INSN(nopl6, .byte 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00\n\r); // 6 bytes nop + MK_INSN(nopl7, .byte 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00\n\r); // 7 bytes nop + MK_INSN(nopl8, .byte 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 8 bytes nop + MK_INSN(nopl9, .byte 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00\n\r); // 9 bytes nop + exec_in_big_real_mode(insn_nopl1); + exec_in_big_real_mode(insn_nopl2); + exec_in_big_real_mode(insn_nopl3); + exec_in_big_real_mode(insn_nopl4); + exec_in_big_real_mode(insn_nopl5); + exec_in_big_real_mode(insn_nopl6); + exec_in_big_real_mode(insn_nopl7); + exec_in_big_real_mode(insn_nopl8); + exec_in_big_real_mode(insn_nopl9); + report(nopl, 0, 1); +} + void realmode_start(void) { test_null(); @@ -1548,6 +1571,7 @@ void realmode_start(void) test_xlat(); test_salc(); test_fninit(); + test_nopl(); exit(0); } -- 1.7.9.5 -- Gleb. -- Gleb. -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html