1f08c3bdfSopenharmony_ci#!/usr/bin/env python3 2f08c3bdfSopenharmony_ci''' This Python script validates sched domain information in dmesg 3f08c3bdfSopenharmony_ci with information in sysfs topology 4f08c3bdfSopenharmony_ci''' 5f08c3bdfSopenharmony_ci 6f08c3bdfSopenharmony_ciimport os 7f08c3bdfSopenharmony_ciimport sys 8f08c3bdfSopenharmony_cifrom pm_sched_mc import * 9f08c3bdfSopenharmony_cifrom optparse import OptionParser 10f08c3bdfSopenharmony_ci 11f08c3bdfSopenharmony_ci__author__ = "Poornima Nayak <mpnayak@linux.vnet.ibm.com>" 12f08c3bdfSopenharmony_ci 13f08c3bdfSopenharmony_ciclass Usage(Exception): 14f08c3bdfSopenharmony_ci def __init__(self, msg): 15f08c3bdfSopenharmony_ci self.msg = msg 16f08c3bdfSopenharmony_ci 17f08c3bdfSopenharmony_cidef main(argv=None): 18f08c3bdfSopenharmony_ci if argv is None: 19f08c3bdfSopenharmony_ci argv = sys.argv 20f08c3bdfSopenharmony_ci 21f08c3bdfSopenharmony_ci usage = "-w" 22f08c3bdfSopenharmony_ci parser = OptionParser(usage) 23f08c3bdfSopenharmony_ci parser.add_option("-c", "--mc_level", dest="mc_level", default=-1, 24f08c3bdfSopenharmony_ci help="Sched mc power saving value 0/1/2") 25f08c3bdfSopenharmony_ci parser.add_option("-t", "--smt_level", dest="smt_level", default=-1, 26f08c3bdfSopenharmony_ci help="Sched smt power saving value 0/1/2") 27f08c3bdfSopenharmony_ci (options, args) = parser.parse_args() 28f08c3bdfSopenharmony_ci 29f08c3bdfSopenharmony_ci try: 30f08c3bdfSopenharmony_ci clear_dmesg() 31f08c3bdfSopenharmony_ci count_num_cpu() 32f08c3bdfSopenharmony_ci map_cpuid_pkgid() 33f08c3bdfSopenharmony_ci 34f08c3bdfSopenharmony_ci if is_hyper_threaded() and int(options.smt_level) >= 0: 35f08c3bdfSopenharmony_ci set_sched_smt_power(options.smt_level) 36f08c3bdfSopenharmony_ci 37f08c3bdfSopenharmony_ci if int(options.mc_level) >= 0: 38f08c3bdfSopenharmony_ci set_sched_mc_power(options.mc_level) 39f08c3bdfSopenharmony_ci if int(options.smt_level) >= 0 or int(options.mc_level) >= 0: 40f08c3bdfSopenharmony_ci status = verify_sched_domain_dmesg(options.mc_level, options.smt_level) 41f08c3bdfSopenharmony_ci reset_schedmc() 42f08c3bdfSopenharmony_ci if is_hyper_threaded(): 43f08c3bdfSopenharmony_ci reset_schedsmt() 44f08c3bdfSopenharmony_ci return(status) 45f08c3bdfSopenharmony_ci else: 46f08c3bdfSopenharmony_ci print("INFO: Invalid arguments given") 47f08c3bdfSopenharmony_ci return 1 48f08c3bdfSopenharmony_ci except Exception as details: 49f08c3bdfSopenharmony_ci print("INFO: sched domain test failed: ", details) 50f08c3bdfSopenharmony_ci return(1) 51f08c3bdfSopenharmony_ci 52f08c3bdfSopenharmony_ci# Run test based on the command line arguments 53f08c3bdfSopenharmony_ciif __name__ == "__main__": 54f08c3bdfSopenharmony_ci sys.exit(main()) 55