@@ -290,6 +290,7 @@ def full_compile_test(args, suite=None):
290290 k ('powernv_defconfig' , image , merge_config = cfgs )
291291 # CELL
292292 k ('cell_defconfig' , image , merge_config = cell_configs )
293+ k ('ps3_defconfig' , image )
293294 # POWERNV, some shrinking/hardening options
294295 k ('skiroot_defconfig' , image )
295296 # PPC_86xx (BOOK3S_32)
@@ -387,3 +388,157 @@ def qemu_kasan(args, suite=None):
387388 # script='qemu-pseries+p9+kvm+fedora34', tests=[test], cmdline='disable_radix')
388389
389390 return suite
391+
392+
393+ def qemu_selftests (args ):
394+ suite = TestSuite ('qemu-selftests' )
395+ k = suite .add_kernel
396+ b = suite .add_qemu_boot
397+
398+ image = 'fedora'
399+
400+ for arch in ['ppc64' , 'ppc64le' ]:
401+ k (f'{ arch } _guest_defconfig' , image , merge_config = guest_configs )
402+ selftests = suite .add_selftest ('ubuntu@20.04' , arch )
403+
404+ exclude = []
405+ # Not clear what causes failure
406+ exclude .append ('powerpc/pmu/ebb:instruction_count_test' )
407+ exclude .append ('powerpc/pmu/ebb:fork_cleanup_test' )
408+ # Confused by qemu
409+ exclude .append ('powerpc/security:rfi_flush' )
410+ exclude .append ('powerpc/security:entry_flush' )
411+ exclude .append ('powerpc/security:uaccess_flush' )
412+ exclude .append ('powerpc/security:spectre_v2' )
413+ # Slow and not that useful for bug finding
414+ exclude .append ('powerpc/benchmarks:context_switch' )
415+ exclude .append ('powerpc/benchmarks:fork' )
416+ exclude .append ('powerpc/benchmarks:futex_bench' )
417+ exclude .append ('powerpc/benchmarks:mmap_bench' )
418+ # Tends to timeout
419+ exclude .append ('powerpc/signal:sigfuz' )
420+ # Requires certain hardware
421+ exclude .append ('powerpc/eeh:eeh-basic.sh' )
422+
423+ if arch == 'ppc64le' :
424+ tests = [QemuSelftestsConfig (selftests , 'powerpc.*' , exclude = exclude )]
425+ name = 'qemu-pseries+p9+kvm+fedora41'
426+ b (name , f'{ arch } _guest_defconfig' , image , tests = tests )
427+ else :
428+ # 64-bit tests don't work due to missing libraries
429+ exclude .append ('powerpc/stringloops:.*' )
430+ exclude .append ('powerpc/copyloops:.*' )
431+ exclude .append ('powerpc/tm:.*' )
432+ exclude .append ('powerpc/pmu.*' )
433+ exclude .append ('powerpc/mm:.*' )
434+ exclude .append ('powerpc/math:.*' )
435+ exclude .append ('powerpc/ptrace:.*' )
436+ exclude .append ('powerpc/papr_sysparm:papr_sysparm' )
437+ exclude .append ('powerpc/switch_endian:switch_endian_test' )
438+ exclude .append ('powerpc/vphn:test-vphn' )
439+ tests = [QemuSelftestsConfig (selftests , 'powerpc.*' , exclude = exclude )]
440+ name = 'qemu-pseries+p9+kvm+be+debian'
441+ b (name , f'{ arch } _guest_defconfig' , image , tests = tests )
442+
443+ return suite
444+
445+
446+ def std_boot (args , hostname , defconfig , merge_configs , suite = None ):
447+ images = args .images
448+ if not images :
449+ images = [DEFAULT_NEW_IMAGE ]
450+
451+ if suite is None :
452+ suite = TestSuite (hostname )
453+
454+ for image in images :
455+ suite .add_kernel (defconfig , image , merge_config = merge_configs )
456+ suite .add_boot (hostname , defconfig , image )
457+
458+ return suite
459+
460+
461+ def std_boot_and_test (args , hostname , defconfig , merge_configs , suite = None ):
462+ images = args .images
463+ if not images :
464+ images = [DEFAULT_NEW_IMAGE ]
465+
466+ if suite is None :
467+ suite = TestSuite (hostname )
468+
469+ ppctests = suite .add_selftest ('ubuntu@24.04' , 'ppc64le' , 'ppctests' )
470+
471+ exclude = []
472+ # Tends to timeout
473+ exclude .append ('powerpc/signal:sigfuz' )
474+ # Requires certain hardware
475+ exclude .append ('powerpc/eeh:eeh-basic.sh' )
476+ # Not always reliable depending on firmware settings etc.
477+ exclude .append ('powerpc/security:spectre_v2' )
478+ # Flakey
479+ exclude .append ('powerpc/pmu:count_stcx_fail' )
480+
481+ tests = [SelftestsConfig (ppctests , 'powerpc' , exclude )]
482+
483+ for image in images :
484+ suite .add_kernel (defconfig , image , merge_config = merge_configs )
485+ suite .add_boot (hostname , defconfig , image , tests = tests )
486+
487+ return suite
488+
489+
490+ def ltcppm1 (args , suite = None ):
491+ return std_boot (args , 'ltcppm1.aus.stglabs.ibm.com' , 'powernv_defconfig' , powernv_configs , suite )
492+
493+ def ltcppm2 (args , suite = None ):
494+ return std_boot (args , 'ltcppm2.aus.stglabs.ibm.com' , 'ppc64le_guest_config' , guest_configs , suite )
495+
496+ def ltcppm3 (args , suite = None ):
497+ return std_boot_and_test (args , 'ltcppm3.aus.stglabs.ibm.com' , 'powernv_defconfig' , powernv_configs , suite )
498+
499+
500+ def ppm_hw_boots (args ):
501+ suite = TestSuite ('ppm-hw-boots' )
502+ ltcppm1 (args , suite )
503+ ltcppm2 (args , suite )
504+ ltcppm3 (args , suite )
505+ return suite
506+
507+
508+ def t4240rdb (args , suite = None ):
509+ images = args .images
510+ if not images :
511+ images = [DEFAULT_NEW_IMAGE ]
512+
513+ if suite is None :
514+ suite = TestSuite ('t4240rdb' )
515+
516+ for image in images :
517+ suite .add_kernel ('corenet64_smp_defconfig+e6500' , image , merge_config = corenet64_configs + ['e6500-y' , 'altivec-y' ])
518+ suite .add_boot ('t4240rdb' , 'corenet64_smp_defconfig+e6500' , image )
519+
520+ # XXX Can't run selftests because Void userspace is BE ELFv2
521+ # Need to build the tests with a matching toolchain.
522+
523+ return suite
524+
525+
526+ def didgo5 (args , suite = None ):
527+ return std_boot (args , 'didgo5' , 'ppc64_guest_defconfig+legacy' , legacy_guest_configs , suite )
528+
529+
530+ def mpe_g5 (args , suite = None ):
531+ return std_boot (args , 'mpe-g5' , 'g5_defconfig' , g5_configs , suite )
532+
533+
534+ def spork (args , suite = None ):
535+ return std_boot_and_test (args , 'spork' , 'powernv_defconfig' , powernv_configs , suite )
536+
537+
538+ def oz_hw_boots (args ):
539+ suite = TestSuite ('oz-hw-boots' )
540+ t4240rdb (args , suite )
541+ didgo5 (args , suite )
542+ mpe_g5 (args , suite )
543+ spork (args , suite )
544+ return suite
0 commit comments