Re: [PATCH v2 1/2] tests/qtest: Only run fuzz-megasas-test if megasas device is available
On 26/01/2021 19.01, Alexander Bulekov wrote: On 210126 1851, Thomas Huth wrote: On 26/01/2021 12.16, Philippe Mathieu-Daudé wrote: This test fails when QEMU is built without the megasas device, restrict it to its availability. Signed-off-by: Philippe Mathieu-Daudé --- tests/qtest/fuzz-megasas-test.c | 49 + tests/qtest/fuzz-test.c | 25 - MAINTAINERS | 1 + tests/qtest/meson.build | 4 ++- 4 files changed, 53 insertions(+), 26 deletions(-) create mode 100644 tests/qtest/fuzz-megasas-test.c diff --git a/tests/qtest/fuzz-megasas-test.c b/tests/qtest/fuzz-megasas-test.c new file mode 100644 index 000..940a76bf25a --- /dev/null +++ b/tests/qtest/fuzz-megasas-test.c @@ -0,0 +1,49 @@ +/* + * QTest fuzzer-generated testcase for megasas device + * + * Copyright (c) 2020 Li Qiang + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" + +#include "libqos/libqtest.h" + +/* + * This used to trigger the assert in scsi_dma_complete + * https://bugs.launchpad.net/qemu/+bug/1878263 + */ +static void test_lp1878263_megasas_zero_iov_cnt(void) +{ +QTestState *s; + +s = qtest_init("-nographic -monitor none -serial none " + "-M q35 -device megasas -device scsi-cd,drive=null0 " + "-blockdev driver=null-co,read-zeroes=on,node-name=null0"); +qtest_outl(s, 0xcf8, 0x80001818); +qtest_outl(s, 0xcfc, 0xc101); +qtest_outl(s, 0xcf8, 0x8000181c); +qtest_outl(s, 0xcf8, 0x80001804); +qtest_outw(s, 0xcfc, 0x7); +qtest_outl(s, 0xcf8, 0x8000186a); +qtest_writeb(s, 0x14, 0xfe); +qtest_writeb(s, 0x0, 0x02); +qtest_outb(s, 0xc1c0, 0x17); +qtest_quit(s); +} + +int main(int argc, char **argv) +{ +const char *arch = qtest_get_arch(); + +g_test_init(&argc, &argv, NULL); + +if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { +qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt", + test_lp1878263_megasas_zero_iov_cnt); +} + +return g_test_run(); +} diff --git a/tests/qtest/fuzz-test.c b/tests/qtest/fuzz-test.c index cdb1100a0b8..6188fbb8e96 100644 --- a/tests/qtest/fuzz-test.c +++ b/tests/qtest/fuzz-test.c @@ -11,29 +11,6 @@ #include "libqos/libqtest.h" -/* - * This used to trigger the assert in scsi_dma_complete - * https://bugs.launchpad.net/qemu/+bug/1878263 - */ -static void test_lp1878263_megasas_zero_iov_cnt(void) -{ -QTestState *s; - -s = qtest_init("-nographic -monitor none -serial none " - "-M q35 -device megasas -device scsi-cd,drive=null0 " - "-blockdev driver=null-co,read-zeroes=on,node-name=null0"); -qtest_outl(s, 0xcf8, 0x80001818); -qtest_outl(s, 0xcfc, 0xc101); -qtest_outl(s, 0xcf8, 0x8000181c); -qtest_outl(s, 0xcf8, 0x80001804); -qtest_outw(s, 0xcfc, 0x7); -qtest_outl(s, 0xcf8, 0x8000186a); -qtest_writeb(s, 0x14, 0xfe); -qtest_writeb(s, 0x0, 0x02); -qtest_outb(s, 0xc1c0, 0x17); -qtest_quit(s); -} - static void test_lp1878642_pci_bus_get_irq_level_assert(void) { QTestState *s; @@ -104,8 +81,6 @@ int main(int argc, char **argv) g_test_init(&argc, &argv, NULL); if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { -qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt", - test_lp1878263_megasas_zero_iov_cnt); qtest_add_func("fuzz/test_lp1878642_pci_bus_get_irq_level_assert", test_lp1878642_pci_bus_get_irq_level_assert); qtest_add_func("fuzz/test_mmio_oob_from_memory_region_cache", diff --git a/MAINTAINERS b/MAINTAINERS index 34359a99b8e..44cd74b03cd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1925,6 +1925,7 @@ S: Supported F: hw/scsi/megasas.c F: hw/scsi/mfi.h F: tests/qtest/megasas-test.c +F: tests/qtest/fuzz-megasas-test.c Network packet abstractions M: Dmitry Fleytman diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 16d04625b8b..85682d0dfce 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -4,7 +4,9 @@ subdir_done() endif -qtests_generic = [ +qtests_generic = \ + (config_all_devices.has_key('CONFIG_MEGASAS_SCSI_PCI') ? ['fuzz-megasas-test'] : []) + \ + [ 'cdrom-test', 'device-introspect-test', 'machine-none-test', Reviewed-by: Thomas Huth I assume Alexander will take this patch through his fuzzer branch now? Or shall I take it via the qtest branch? I can take take this through my branch, unless thats somehow inconvenient. That's perfectly fine! Thanks, Thomas
Re: [PATCH v2 1/2] tests/qtest: Only run fuzz-megasas-test if megasas device is available
On 210126 1851, Thomas Huth wrote: > On 26/01/2021 12.16, Philippe Mathieu-Daudé wrote: > > This test fails when QEMU is built without the megasas device, > > restrict it to its availability. > > > > Signed-off-by: Philippe Mathieu-Daudé > > --- > > tests/qtest/fuzz-megasas-test.c | 49 + > > tests/qtest/fuzz-test.c | 25 - > > MAINTAINERS | 1 + > > tests/qtest/meson.build | 4 ++- > > 4 files changed, 53 insertions(+), 26 deletions(-) > > create mode 100644 tests/qtest/fuzz-megasas-test.c > > > > diff --git a/tests/qtest/fuzz-megasas-test.c > > b/tests/qtest/fuzz-megasas-test.c > > new file mode 100644 > > index 000..940a76bf25a > > --- /dev/null > > +++ b/tests/qtest/fuzz-megasas-test.c > > @@ -0,0 +1,49 @@ > > +/* > > + * QTest fuzzer-generated testcase for megasas device > > + * > > + * Copyright (c) 2020 Li Qiang > > + * > > + * This work is licensed under the terms of the GNU GPL, version 2 or > > later. > > + * See the COPYING file in the top-level directory. > > + */ > > + > > +#include "qemu/osdep.h" > > + > > +#include "libqos/libqtest.h" > > + > > +/* > > + * This used to trigger the assert in scsi_dma_complete > > + * https://bugs.launchpad.net/qemu/+bug/1878263 > > + */ > > +static void test_lp1878263_megasas_zero_iov_cnt(void) > > +{ > > +QTestState *s; > > + > > +s = qtest_init("-nographic -monitor none -serial none " > > + "-M q35 -device megasas -device scsi-cd,drive=null0 " > > + "-blockdev > > driver=null-co,read-zeroes=on,node-name=null0"); > > +qtest_outl(s, 0xcf8, 0x80001818); > > +qtest_outl(s, 0xcfc, 0xc101); > > +qtest_outl(s, 0xcf8, 0x8000181c); > > +qtest_outl(s, 0xcf8, 0x80001804); > > +qtest_outw(s, 0xcfc, 0x7); > > +qtest_outl(s, 0xcf8, 0x8000186a); > > +qtest_writeb(s, 0x14, 0xfe); > > +qtest_writeb(s, 0x0, 0x02); > > +qtest_outb(s, 0xc1c0, 0x17); > > +qtest_quit(s); > > +} > > + > > +int main(int argc, char **argv) > > +{ > > +const char *arch = qtest_get_arch(); > > + > > +g_test_init(&argc, &argv, NULL); > > + > > +if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { > > +qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt", > > + test_lp1878263_megasas_zero_iov_cnt); > > +} > > + > > +return g_test_run(); > > +} > > diff --git a/tests/qtest/fuzz-test.c b/tests/qtest/fuzz-test.c > > index cdb1100a0b8..6188fbb8e96 100644 > > --- a/tests/qtest/fuzz-test.c > > +++ b/tests/qtest/fuzz-test.c > > @@ -11,29 +11,6 @@ > > #include "libqos/libqtest.h" > > -/* > > - * This used to trigger the assert in scsi_dma_complete > > - * https://bugs.launchpad.net/qemu/+bug/1878263 > > - */ > > -static void test_lp1878263_megasas_zero_iov_cnt(void) > > -{ > > -QTestState *s; > > - > > -s = qtest_init("-nographic -monitor none -serial none " > > - "-M q35 -device megasas -device scsi-cd,drive=null0 " > > - "-blockdev > > driver=null-co,read-zeroes=on,node-name=null0"); > > -qtest_outl(s, 0xcf8, 0x80001818); > > -qtest_outl(s, 0xcfc, 0xc101); > > -qtest_outl(s, 0xcf8, 0x8000181c); > > -qtest_outl(s, 0xcf8, 0x80001804); > > -qtest_outw(s, 0xcfc, 0x7); > > -qtest_outl(s, 0xcf8, 0x8000186a); > > -qtest_writeb(s, 0x14, 0xfe); > > -qtest_writeb(s, 0x0, 0x02); > > -qtest_outb(s, 0xc1c0, 0x17); > > -qtest_quit(s); > > -} > > - > > static void test_lp1878642_pci_bus_get_irq_level_assert(void) > > { > > QTestState *s; > > @@ -104,8 +81,6 @@ int main(int argc, char **argv) > > g_test_init(&argc, &argv, NULL); > > if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { > > -qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt", > > - test_lp1878263_megasas_zero_iov_cnt); > > qtest_add_func("fuzz/test_lp1878642_pci_bus_get_irq_level_assert", > > test_lp1878642_pci_bus_get_irq_level_assert); > > qtest_add_func("fuzz/test_mmio_oob_from_memory_region_cache", > > diff --git a/MAINTAINERS b/MAINTAINERS > > index 34359a99b8e..44cd74b03cd 100644 > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -1925,6 +1925,7 @@ S: Supported > > F: hw/scsi/megasas.c > > F: hw/scsi/mfi.h > > F: tests/qtest/megasas-test.c > > +F: tests/qtest/fuzz-megasas-test.c > > Network packet abstractions > > M: Dmitry Fleytman > > diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build > > index 16d04625b8b..85682d0dfce 100644 > > --- a/tests/qtest/meson.build > > +++ b/tests/qtest/meson.build > > @@ -4,7 +4,9 @@ > > subdir_done() > > endif > > -qtests_generic = [ > > +qtests_generic = \ > > + (config_all_devices.has_key('CONFIG_MEGASAS_SCSI_PCI') ? > > ['fuzz-megasas-test'] : []) + \ > > + [ > > 'cdrom-test', > > 'device-introspect-test', > > 'machine-none
Re: [PATCH v2 1/2] tests/qtest: Only run fuzz-megasas-test if megasas device is available
On 26/01/2021 12.16, Philippe Mathieu-Daudé wrote: This test fails when QEMU is built without the megasas device, restrict it to its availability. Signed-off-by: Philippe Mathieu-Daudé --- tests/qtest/fuzz-megasas-test.c | 49 + tests/qtest/fuzz-test.c | 25 - MAINTAINERS | 1 + tests/qtest/meson.build | 4 ++- 4 files changed, 53 insertions(+), 26 deletions(-) create mode 100644 tests/qtest/fuzz-megasas-test.c diff --git a/tests/qtest/fuzz-megasas-test.c b/tests/qtest/fuzz-megasas-test.c new file mode 100644 index 000..940a76bf25a --- /dev/null +++ b/tests/qtest/fuzz-megasas-test.c @@ -0,0 +1,49 @@ +/* + * QTest fuzzer-generated testcase for megasas device + * + * Copyright (c) 2020 Li Qiang + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + */ + +#include "qemu/osdep.h" + +#include "libqos/libqtest.h" + +/* + * This used to trigger the assert in scsi_dma_complete + * https://bugs.launchpad.net/qemu/+bug/1878263 + */ +static void test_lp1878263_megasas_zero_iov_cnt(void) +{ +QTestState *s; + +s = qtest_init("-nographic -monitor none -serial none " + "-M q35 -device megasas -device scsi-cd,drive=null0 " + "-blockdev driver=null-co,read-zeroes=on,node-name=null0"); +qtest_outl(s, 0xcf8, 0x80001818); +qtest_outl(s, 0xcfc, 0xc101); +qtest_outl(s, 0xcf8, 0x8000181c); +qtest_outl(s, 0xcf8, 0x80001804); +qtest_outw(s, 0xcfc, 0x7); +qtest_outl(s, 0xcf8, 0x8000186a); +qtest_writeb(s, 0x14, 0xfe); +qtest_writeb(s, 0x0, 0x02); +qtest_outb(s, 0xc1c0, 0x17); +qtest_quit(s); +} + +int main(int argc, char **argv) +{ +const char *arch = qtest_get_arch(); + +g_test_init(&argc, &argv, NULL); + +if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { +qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt", + test_lp1878263_megasas_zero_iov_cnt); +} + +return g_test_run(); +} diff --git a/tests/qtest/fuzz-test.c b/tests/qtest/fuzz-test.c index cdb1100a0b8..6188fbb8e96 100644 --- a/tests/qtest/fuzz-test.c +++ b/tests/qtest/fuzz-test.c @@ -11,29 +11,6 @@ #include "libqos/libqtest.h" -/* - * This used to trigger the assert in scsi_dma_complete - * https://bugs.launchpad.net/qemu/+bug/1878263 - */ -static void test_lp1878263_megasas_zero_iov_cnt(void) -{ -QTestState *s; - -s = qtest_init("-nographic -monitor none -serial none " - "-M q35 -device megasas -device scsi-cd,drive=null0 " - "-blockdev driver=null-co,read-zeroes=on,node-name=null0"); -qtest_outl(s, 0xcf8, 0x80001818); -qtest_outl(s, 0xcfc, 0xc101); -qtest_outl(s, 0xcf8, 0x8000181c); -qtest_outl(s, 0xcf8, 0x80001804); -qtest_outw(s, 0xcfc, 0x7); -qtest_outl(s, 0xcf8, 0x8000186a); -qtest_writeb(s, 0x14, 0xfe); -qtest_writeb(s, 0x0, 0x02); -qtest_outb(s, 0xc1c0, 0x17); -qtest_quit(s); -} - static void test_lp1878642_pci_bus_get_irq_level_assert(void) { QTestState *s; @@ -104,8 +81,6 @@ int main(int argc, char **argv) g_test_init(&argc, &argv, NULL); if (strcmp(arch, "i386") == 0 || strcmp(arch, "x86_64") == 0) { -qtest_add_func("fuzz/test_lp1878263_megasas_zero_iov_cnt", - test_lp1878263_megasas_zero_iov_cnt); qtest_add_func("fuzz/test_lp1878642_pci_bus_get_irq_level_assert", test_lp1878642_pci_bus_get_irq_level_assert); qtest_add_func("fuzz/test_mmio_oob_from_memory_region_cache", diff --git a/MAINTAINERS b/MAINTAINERS index 34359a99b8e..44cd74b03cd 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1925,6 +1925,7 @@ S: Supported F: hw/scsi/megasas.c F: hw/scsi/mfi.h F: tests/qtest/megasas-test.c +F: tests/qtest/fuzz-megasas-test.c Network packet abstractions M: Dmitry Fleytman diff --git a/tests/qtest/meson.build b/tests/qtest/meson.build index 16d04625b8b..85682d0dfce 100644 --- a/tests/qtest/meson.build +++ b/tests/qtest/meson.build @@ -4,7 +4,9 @@ subdir_done() endif -qtests_generic = [ +qtests_generic = \ + (config_all_devices.has_key('CONFIG_MEGASAS_SCSI_PCI') ? ['fuzz-megasas-test'] : []) + \ + [ 'cdrom-test', 'device-introspect-test', 'machine-none-test', Reviewed-by: Thomas Huth I assume Alexander will take this patch through his fuzzer branch now? Or shall I take it via the qtest branch? Thomas