# Copyright 2020 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

instances:
 - upstream-apparmor-kasan:	[linux-next, x86_64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan, kfence]
 - upstream-selinux-kasan:	[linux-next, x86_64, timeouts_native, gcc, lsm, selinux, kasan, kfence]
 - upstream-smack-kasan:	[linux-next, x86_64, timeouts_native, clang, bpfjit, lsm, smack, kasan, kfence]
 - upstream-kasan-badwrites:	[linux-next, x86_64, timeouts_native, gcc, bpfjit, lsm, apparmor, kasan, kasan_panic_on_write, kfence]
 - upstream-unmaintained:	[upstream, x86_64, timeouts_native, clang, baseline, unmaintained, kasan, kfence]
 - upstream-kmsan:		[upstream, timeouts_native, x86_64, clang, lsm, apparmor, nonoise, kmsan]
 - upstream-kcsan:		[upstream, timeouts_native, x86_64, clang, onlynet, nonoise, kcsan]
 - upstream-leak:		[upstream, timeouts_native, x86_64, gcc, bpfjit, lsm, apparmor, nonoise, kmemleak]
 - upstream-usb:		[upstream, timeouts_native, x86_64, gcc, lsm, apparmor, onlyusb, kasan]
 - upstream-arm64-kasan:	[upstream, arm64, arm64_emu, timeouts_emu, clang, lsm, selinux, reduced, kasan, nokcov]
 - upstream-arm64-mte:		[upstream, arm64, arm64_emu, timeouts_emu, clang, bpfjit, lsm, smack, nonoise, reduced, kfence, mte, nokcov]
 # The full configs are used with syz-check to avoid no-such-struct warnings.
 - upstream-arm64-full:		[upstream, arm64, timeouts_native, clang, bpfjit, lsm, smack, kasan, kfence]
 # TODO: enable kasan when it works, currently Go binaries hang on KASAN kernel:
 # https://lore.kernel.org/linux-arm-kernel/CACT4Y+YdJoNTqnBSELcEbcbVsKBtJfYUc7_GSXbUQfAJN3JyRg@mail.gmail.com/
 - upstream-arm-kasan:		[upstream, arm, timeouts_emu, gcc, bpfjit, lsm, selinux, reduced]
 - upstream-arm-full:		[upstream, arm, timeouts_emu, gcc, bpfjit, lsm, selinux]
 - upstream-riscv64-kasan:	[upstream, riscv, timeouts_emu, gcc, bpfjit, lsm, apparmor, reduced, kasan, kfence]
 - upstream-s390-kasan:		[upstream, s390, gcc, bpfjit, lsm, selinux, nonoise, reduced, kasan, kfence, nokcov]
 - stable-5.4-kasan:		[stable-5.4, x86_64, timeouts_native, gcc, bpfjit, lsm, apparmor, kasan]
 - stable-5.10-kasan:		[stable-5.10, x86_64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan]
 - stable-5.10-arm64-kasan:	[stable-5.10, arm64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan]
 - stable-5.15-kasan:		[stable-5.15, x86_64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan]
 - stable-5.15-arm64-kasan:	[stable-5.15, arm64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan]
 - stable-6.1-kasan:		[stable-6.1, x86_64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan, kfence]
 - stable-6.1-arm64-kasan:	[stable-6.1, arm64, timeouts_native, clang, bpfjit, lsm, apparmor, kasan, kfence]
 - android-5.4:			[android, android-5.4, nodefconfig, x86_64, timeouts_native, clang, onlyusb, nonoise, kasan]
 - android-5.10:		[android, android-5.10, nodefconfig, x86_64, timeouts_native, clang, onlyusb, nonoise, kasan]
 - android-5.10-cuttlefish:     [android, android-5.10, nodefconfig, x86_64, modules, cuttlefish, timeouts_native, clang, baseline, nonoise, kasan]
 - android-5.15:		[android, android-5.15, nodefconfig, x86_64, timeouts_native, clang, onlyusb, nonoise, kasan]
 - android-5.15-cuttlefish:     [android, android-5.15, nodefconfig, x86_64, modules, cuttlefish, timeouts_native, clang, baseline, nonoise, kasan]
 - android14-5.15-cuttlefish:     [android, android14-5.15, nodefconfig, x86_64, modules, cuttlefish, timeouts_native, clang, baseline, nonoise, kasan]
 - android-6.1:			[android, android-6.1, nodefconfig, x86_64, timeouts_native, clang, onlyusb, nonoise, kasan]
 - chromeos-5.10:		[chromeos, chromeos-5.10, nodefconfig, x86_64, timeouts_native, clang, onlyusb, kasan]
 - chromeos-5.15:		[chromeos, chromeos-5.15, nodefconfig, x86_64, timeouts_native, clang, onlyusb, kasan]
 - chromeos-6.1:		[chromeos, chromeos-6.1, nodefconfig, x86_64, timeouts_native, clang, onlyusb, kasan]
 - chromeos-6.6:		[chromeos, chromeos-6.6, nodefconfig, x86_64, timeouts_native, clang, onlyusb, kasan]
 - cos-5.15-kasan:		[cos, cos-5.15, x86_64, clang, nodefconfig, baseline, timeouts_native, nonoise, kasan]
 - cos-5.15-arm64-kasan:	[cos, cos-5.15, arm64, clang, nodefconfig, baseline, timeouts_native, nonoise, kasan]
 - cos-6.1-kasan:		[cos, cos-6.1, x86_64, clang, nodefconfig, baseline, timeouts_native, nonoise, kasan]
 - cos-6.1-arm64-kasan:		[cos, cos-6.1, arm64, clang, nodefconfig, baseline, timeouts_native, nonoise, kasan]

# Note: fragments are included top to bottom from this list. When a config fragments overrides
# another, the override has to be loaded second. These files are included from the bits/ dir.
includes:
 - base.yml: []
 - x86_64.yml: [x86_64]
 - arm64.yml: [arm64]
 - arm64_emu.yml: [arm64_emu]
 - arm.yml: [arm]
 - timeouts_emu.yml: [timeouts_emu]
 - timeouts_native.yml: [timeouts_native]
 - riscv64.yml: [riscv]
 - s390.yml: [s390]
 - subsystems.yml: [-baseline, -onlynet, -onlyusb]
 - net.yml: [-baseline, -onlyusb]
 - net-extra.yml: [-baseline, -onlyusb, -reduced]
 - crypto.yml: [-baseline, -onlynet, -onlyusb]
 - bpf.yml: [-baseline, -onlynet, -onlyusb]
 - partitions.yml: [-baseline, -onlynet, -onlyusb, -reduced]
 - filesystems.yml: [-baseline, -onlynet, -onlyusb, -reduced]
 - media.yml: [-baseline, -onlynet, -onlyusb, -reduced]
 - bluetooth.yml: [-baseline, -onlynet, -onlyusb, -reduced, -s390]
 - wireless.yml: [-baseline, -onlynet, -onlyusb, -reduced, -s390]
 - hamradio.yml: [-baseline, -onlynet, -onlyusb, -reduced, -s390]
 - usb.yml: [onlyusb]
 - lsm.yml: [lsm]
 - apparmor.yml: [apparmor]
 - selinux.yml: [selinux]
 - smack.yml: [smack]
 - debug.yml: [-nonoise]
 # lockdep is broken on arm: https://lore.kernel.org/all/0000000000004f14c105bde08f75@google.com/
 - lockdep.yml: [-nonoise, -arm]
 - kmemleak.yml: [kmemleak]
 - kasan.yml: [kasan]
 - kasan_panic_on_write.yml: [kasan_panic_on_write]
 - mte.yml: [mte]
 - kcsan.yml: [kcsan]
 - kmsan.yml: [kmsan]
 - kfence.yml: [kfence]
 - baseline.yml: [base-config]
 - unmaintained.yml: [unmaintained]
 - maintained.yml: [-unmaintained]
 - linux-upstream.yml: [upstream]
 - linux-next.yml: [linux-next]
 - stable-5.4.yml: [stable-5.4]
 - stable-5.10.yml: [stable-5.10]
 - stable-5.15.yml: [stable-5.15]
 - stable-6.1.yml: [stable-6.1]
 - android.yml: [android]
 - android-subsystems.yml: [android, -baseline]
 - android-5.4.yml: [android-5.4]
 - android-5.10.yml: [android-5.10]
 - android-5.15.yml: [android-5.15]
 - android14-5.15.yml: [android14-5.15]
 - android-6.1.yml: [android-6.1]
 - chromeos.yml: [chromeos]
 - chromeos-subsystems.yml: [chromeos, -baseline]
 - chromeos-5.10.yml: [chromeos-5.10]
 - chromeos-5.15.yml: [chromeos-5.15]
 - chromeos-6.1.yml: [chromeos-6.1]
 - chromeos-6.6.yml: [chromeos-6.6]
 - cos-5.15.yml: [cos-5.15]
 - cos-6.1.yml: [cos-6.1]
