@@ -4878,92 +4878,6 @@ void rapl_probe_amd(void)
48784878 fprintf (outf , "RAPL: %.0f sec. Joule Counter Range, at %.0f Watts\n" , rapl_joule_counter_range , tdp );
48794879}
48804880
4881- /*
4882- * probe_rapl()
4883- *
4884- * sets rapl_power_units, rapl_energy_units, rapl_time_units
4885- */
4886- void probe_rapl (void )
4887- {
4888- if (!platform -> rapl_msrs )
4889- return ;
4890-
4891- if (genuine_intel )
4892- rapl_probe_intel ();
4893- if (authentic_amd || hygon_genuine )
4894- rapl_probe_amd ();
4895- }
4896-
4897- void probe_thermal (void )
4898- {
4899- if (!access ("/sys/devices/system/cpu/cpu0/thermal_throttle/core_throttle_count" , R_OK ))
4900- BIC_PRESENT (BIC_CORE_THROT_CNT );
4901- else
4902- BIC_NOT_PRESENT (BIC_CORE_THROT_CNT );
4903- }
4904-
4905- int print_thermal (struct thread_data * t , struct core_data * c , struct pkg_data * p )
4906- {
4907- unsigned long long msr ;
4908- unsigned int dts , dts2 ;
4909- int cpu ;
4910-
4911- UNUSED (c );
4912- UNUSED (p );
4913-
4914- if (!(do_dts || do_ptm ))
4915- return 0 ;
4916-
4917- cpu = t -> cpu_id ;
4918-
4919- /* DTS is per-core, no need to print for each thread */
4920- if (!(t -> flags & CPU_IS_FIRST_THREAD_IN_CORE ))
4921- return 0 ;
4922-
4923- if (cpu_migrate (cpu )) {
4924- fprintf (outf , "print_thermal: Could not migrate to CPU %d\n" , cpu );
4925- return -1 ;
4926- }
4927-
4928- if (do_ptm && (t -> flags & CPU_IS_FIRST_CORE_IN_PACKAGE )) {
4929- if (get_msr (cpu , MSR_IA32_PACKAGE_THERM_STATUS , & msr ))
4930- return 0 ;
4931-
4932- dts = (msr >> 16 ) & 0x7F ;
4933- fprintf (outf , "cpu%d: MSR_IA32_PACKAGE_THERM_STATUS: 0x%08llx (%d C)\n" , cpu , msr , tj_max - dts );
4934-
4935- if (get_msr (cpu , MSR_IA32_PACKAGE_THERM_INTERRUPT , & msr ))
4936- return 0 ;
4937-
4938- dts = (msr >> 16 ) & 0x7F ;
4939- dts2 = (msr >> 8 ) & 0x7F ;
4940- fprintf (outf , "cpu%d: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x%08llx (%d C, %d C)\n" ,
4941- cpu , msr , tj_max - dts , tj_max - dts2 );
4942- }
4943-
4944- if (do_dts && debug ) {
4945- unsigned int resolution ;
4946-
4947- if (get_msr (cpu , MSR_IA32_THERM_STATUS , & msr ))
4948- return 0 ;
4949-
4950- dts = (msr >> 16 ) & 0x7F ;
4951- resolution = (msr >> 27 ) & 0xF ;
4952- fprintf (outf , "cpu%d: MSR_IA32_THERM_STATUS: 0x%08llx (%d C +/- %d)\n" ,
4953- cpu , msr , tj_max - dts , resolution );
4954-
4955- if (get_msr (cpu , MSR_IA32_THERM_INTERRUPT , & msr ))
4956- return 0 ;
4957-
4958- dts = (msr >> 16 ) & 0x7F ;
4959- dts2 = (msr >> 8 ) & 0x7F ;
4960- fprintf (outf , "cpu%d: MSR_IA32_THERM_INTERRUPT: 0x%08llx (%d C, %d C)\n" ,
4961- cpu , msr , tj_max - dts , tj_max - dts2 );
4962- }
4963-
4964- return 0 ;
4965- }
4966-
49674881void print_power_limit_msr (int cpu , unsigned long long msr , char * label )
49684882{
49694883 fprintf (outf , "cpu%d: %s: %sabled (%0.3f Watts, %f sec, clamp %sabled)\n" ,
@@ -5095,29 +5009,20 @@ int print_rapl(struct thread_data *t, struct core_data *c, struct pkg_data *p)
50955009 return 0 ;
50965010}
50975011
5098- int get_cpu_type (struct thread_data * t , struct core_data * c , struct pkg_data * p )
5012+ /*
5013+ * probe_rapl()
5014+ *
5015+ * sets rapl_power_units, rapl_energy_units, rapl_time_units
5016+ */
5017+ void probe_rapl (void )
50995018{
5100- unsigned int eax , ebx , ecx , edx ;
5101-
5102- UNUSED (c );
5103- UNUSED (p );
5104-
5105- if (!genuine_intel )
5106- return 0 ;
5107-
5108- if (cpu_migrate (t -> cpu_id )) {
5109- fprintf (outf , "Could not migrate to CPU %d\n" , t -> cpu_id );
5110- return -1 ;
5111- }
5112-
5113- if (max_level < 0x1a )
5114- return 0 ;
5019+ if (!platform -> rapl_msrs )
5020+ return ;
51155021
5116- __cpuid (0x1a , eax , ebx , ecx , edx );
5117- eax = (eax >> 24 ) & 0xFF ;
5118- if (eax == 0x20 )
5119- t -> is_atom = true;
5120- return 0 ;
5022+ if (genuine_intel )
5023+ rapl_probe_intel ();
5024+ if (authentic_amd || hygon_genuine )
5025+ rapl_probe_amd ();
51215026}
51225027
51235028/*
@@ -5200,6 +5105,101 @@ int set_temperature_target(struct thread_data *t, struct core_data *c, struct pk
52005105 return 0 ;
52015106}
52025107
5108+ int print_thermal (struct thread_data * t , struct core_data * c , struct pkg_data * p )
5109+ {
5110+ unsigned long long msr ;
5111+ unsigned int dts , dts2 ;
5112+ int cpu ;
5113+
5114+ UNUSED (c );
5115+ UNUSED (p );
5116+
5117+ if (!(do_dts || do_ptm ))
5118+ return 0 ;
5119+
5120+ cpu = t -> cpu_id ;
5121+
5122+ /* DTS is per-core, no need to print for each thread */
5123+ if (!(t -> flags & CPU_IS_FIRST_THREAD_IN_CORE ))
5124+ return 0 ;
5125+
5126+ if (cpu_migrate (cpu )) {
5127+ fprintf (outf , "print_thermal: Could not migrate to CPU %d\n" , cpu );
5128+ return -1 ;
5129+ }
5130+
5131+ if (do_ptm && (t -> flags & CPU_IS_FIRST_CORE_IN_PACKAGE )) {
5132+ if (get_msr (cpu , MSR_IA32_PACKAGE_THERM_STATUS , & msr ))
5133+ return 0 ;
5134+
5135+ dts = (msr >> 16 ) & 0x7F ;
5136+ fprintf (outf , "cpu%d: MSR_IA32_PACKAGE_THERM_STATUS: 0x%08llx (%d C)\n" , cpu , msr , tj_max - dts );
5137+
5138+ if (get_msr (cpu , MSR_IA32_PACKAGE_THERM_INTERRUPT , & msr ))
5139+ return 0 ;
5140+
5141+ dts = (msr >> 16 ) & 0x7F ;
5142+ dts2 = (msr >> 8 ) & 0x7F ;
5143+ fprintf (outf , "cpu%d: MSR_IA32_PACKAGE_THERM_INTERRUPT: 0x%08llx (%d C, %d C)\n" ,
5144+ cpu , msr , tj_max - dts , tj_max - dts2 );
5145+ }
5146+
5147+ if (do_dts && debug ) {
5148+ unsigned int resolution ;
5149+
5150+ if (get_msr (cpu , MSR_IA32_THERM_STATUS , & msr ))
5151+ return 0 ;
5152+
5153+ dts = (msr >> 16 ) & 0x7F ;
5154+ resolution = (msr >> 27 ) & 0xF ;
5155+ fprintf (outf , "cpu%d: MSR_IA32_THERM_STATUS: 0x%08llx (%d C +/- %d)\n" ,
5156+ cpu , msr , tj_max - dts , resolution );
5157+
5158+ if (get_msr (cpu , MSR_IA32_THERM_INTERRUPT , & msr ))
5159+ return 0 ;
5160+
5161+ dts = (msr >> 16 ) & 0x7F ;
5162+ dts2 = (msr >> 8 ) & 0x7F ;
5163+ fprintf (outf , "cpu%d: MSR_IA32_THERM_INTERRUPT: 0x%08llx (%d C, %d C)\n" ,
5164+ cpu , msr , tj_max - dts , tj_max - dts2 );
5165+ }
5166+
5167+ return 0 ;
5168+ }
5169+
5170+ void probe_thermal (void )
5171+ {
5172+ if (!access ("/sys/devices/system/cpu/cpu0/thermal_throttle/core_throttle_count" , R_OK ))
5173+ BIC_PRESENT (BIC_CORE_THROT_CNT );
5174+ else
5175+ BIC_NOT_PRESENT (BIC_CORE_THROT_CNT );
5176+ }
5177+
5178+ int get_cpu_type (struct thread_data * t , struct core_data * c , struct pkg_data * p )
5179+ {
5180+ unsigned int eax , ebx , ecx , edx ;
5181+
5182+ UNUSED (c );
5183+ UNUSED (p );
5184+
5185+ if (!genuine_intel )
5186+ return 0 ;
5187+
5188+ if (cpu_migrate (t -> cpu_id )) {
5189+ fprintf (outf , "Could not migrate to CPU %d\n" , t -> cpu_id );
5190+ return -1 ;
5191+ }
5192+
5193+ if (max_level < 0x1a )
5194+ return 0 ;
5195+
5196+ __cpuid (0x1a , eax , ebx , ecx , edx );
5197+ eax = (eax >> 24 ) & 0xFF ;
5198+ if (eax == 0x20 )
5199+ t -> is_atom = true;
5200+ return 0 ;
5201+ }
5202+
52035203void decode_feature_control_msr (void )
52045204{
52055205 unsigned long long msr ;
0 commit comments