Skip to content

Commit

Permalink
tests/qtest: Only run fuzz-megasas-test if megasas device is available
Browse files Browse the repository at this point in the history
This test fails when QEMU is built without the megasas device,
restrict it to its availability.

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
philmd authored and bonzini committed Mar 16, 2021
1 parent 6e31b3a commit c887d33
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 26 deletions.
1 change: 1 addition & 0 deletions MAINTAINERS
Expand Up @@ -1969,6 +1969,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 <dmitry.fleytman@gmail.com>
Expand Down
49 changes: 49 additions & 0 deletions tests/qtest/fuzz-megasas-test.c
@@ -0,0 +1,49 @@
/*
* QTest fuzzer-generated testcase for megasas device
*
* Copyright (c) 2020 Li Qiang <liq3ea@gmail.com>
*
* 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();
}
25 changes: 0 additions & 25 deletions tests/qtest/fuzz-test.c
Expand Up @@ -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;
Expand Down Expand Up @@ -103,8 +80,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",
Expand Down
4 changes: 3 additions & 1 deletion tests/qtest/meson.build
Expand Up @@ -17,7 +17,9 @@ slow_qtests = {
'test-hmp' : 120,
}

qtests_generic = [
qtests_generic = \
(config_all_devices.has_key('CONFIG_MEGASAS_SCSI_PCI') ? ['fuzz-megasas-test'] : []) + \
[
'cdrom-test',
'device-introspect-test',
'machine-none-test',
Expand Down

0 comments on commit c887d33

Please sign in to comment.