13
13
#include <linux/acpi.h>
14
14
#include <linux/cpu.h>
15
15
#include <linux/cpumask.h>
16
+ #include <linux/debugfs.h>
16
17
#include <linux/gfp.h>
17
18
#include <linux/init.h>
18
19
#include <linux/io.h>
@@ -73,6 +74,8 @@ struct amd_hfi_data {
73
74
void __iomem * pcc_comm_addr ;
74
75
struct acpi_subtable_header * pcct_entry ;
75
76
struct amd_shmem_info * shmem ;
77
+
78
+ struct dentry * dbgfs_dir ;
76
79
};
77
80
78
81
/**
@@ -238,6 +241,13 @@ static int amd_hfi_alloc_class_data(struct platform_device *pdev)
238
241
return 0 ;
239
242
}
240
243
244
+ static void amd_hfi_remove (struct platform_device * pdev )
245
+ {
246
+ struct amd_hfi_data * dev = platform_get_drvdata (pdev );
247
+
248
+ debugfs_remove_recursive (dev -> dbgfs_dir );
249
+ }
250
+
241
251
static int amd_set_hfi_ipcc_score (struct amd_hfi_cpuinfo * hfi_cpuinfo , int cpu )
242
252
{
243
253
for (int i = 0 ; i < hfi_cpuinfo -> nr_class ; i ++ )
@@ -393,6 +403,26 @@ static int amd_hfi_metadata_parser(struct platform_device *pdev,
393
403
return ret ;
394
404
}
395
405
406
+ static int class_capabilities_show (struct seq_file * s , void * unused )
407
+ {
408
+ u32 cpu , idx ;
409
+
410
+ seq_puts (s , "CPU #\tWLC\tPerf\tEff\n" );
411
+ for_each_possible_cpu (cpu ) {
412
+ struct amd_hfi_cpuinfo * hfi_cpuinfo = per_cpu_ptr (& amd_hfi_cpuinfo , cpu );
413
+
414
+ seq_printf (s , "%d" , cpu );
415
+ for (idx = 0 ; idx < hfi_cpuinfo -> nr_class ; idx ++ ) {
416
+ seq_printf (s , "\t%u\t%u\t%u\n" , idx ,
417
+ hfi_cpuinfo -> amd_hfi_classes [idx ].perf ,
418
+ hfi_cpuinfo -> amd_hfi_classes [idx ].eff );
419
+ }
420
+ }
421
+
422
+ return 0 ;
423
+ }
424
+ DEFINE_SHOW_ATTRIBUTE (class_capabilities );
425
+
396
426
static int amd_hfi_pm_resume (struct device * dev )
397
427
{
398
428
int ret , cpu ;
@@ -469,6 +499,10 @@ static int amd_hfi_probe(struct platform_device *pdev)
469
499
470
500
schedule_work (& sched_amd_hfi_itmt_work );
471
501
502
+ amd_hfi_data -> dbgfs_dir = debugfs_create_dir ("amd_hfi" , arch_debugfs_dir );
503
+ debugfs_create_file ("class_capabilities" , 0644 , amd_hfi_data -> dbgfs_dir , pdev ,
504
+ & class_capabilities_fops );
505
+
472
506
return 0 ;
473
507
}
474
508
@@ -480,6 +514,7 @@ static struct platform_driver amd_hfi_driver = {
480
514
.acpi_match_table = ACPI_PTR (amd_hfi_platform_match ),
481
515
},
482
516
.probe = amd_hfi_probe ,
517
+ .remove = amd_hfi_remove ,
483
518
};
484
519
485
520
static int __init amd_hfi_init (void )
0 commit comments