Skip to content

Commit 4dea807

Browse files
xpardee-createij-intel
authored andcommitted
platform/x86:intel/pmc: Add support to undo ltr_ignore
Add ltr_restore support to undo the ltr_ignore action. It sets the ltr_ignore bit of the corresponding IP to 0. Ltr_restore reuses some functionality of pmc_core_ltr_ignore_write() so moved the common functionality into a helper function. Signed-off-by: Xi Pardee <[email protected]> Link: https://lore.kernel.org/r/[email protected] Reviewed-by: Ilpo Järvinen <[email protected]> Signed-off-by: Ilpo Järvinen <[email protected]>
1 parent 9e7f1e7 commit 4dea807

File tree

1 file changed

+32
-6
lines changed
  • drivers/platform/x86/intel/pmc

1 file changed

+32
-6
lines changed

drivers/platform/x86/intel/pmc/core.c

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -507,30 +507,54 @@ int pmc_core_send_ltr_ignore(struct pmc_dev *pmcdev, u32 value, int ignore)
507507
return 0;
508508
}
509509

510-
static ssize_t pmc_core_ltr_ignore_write(struct file *file,
511-
const char __user *userbuf,
512-
size_t count, loff_t *ppos)
510+
static ssize_t pmc_core_ltr_write(struct pmc_dev *pmcdev,
511+
const char __user *userbuf,
512+
size_t count, int ignore)
513513
{
514-
struct seq_file *s = file->private_data;
515-
struct pmc_dev *pmcdev = s->private;
516514
u32 value;
517515
int err;
518516

519517
err = kstrtou32_from_user(userbuf, count, 10, &value);
520518
if (err)
521519
return err;
522520

523-
err = pmc_core_send_ltr_ignore(pmcdev, value, 1);
521+
err = pmc_core_send_ltr_ignore(pmcdev, value, ignore);
524522

525523
return err ?: count;
526524
}
527525

526+
static ssize_t pmc_core_ltr_ignore_write(struct file *file,
527+
const char __user *userbuf,
528+
size_t count, loff_t *ppos)
529+
{
530+
struct seq_file *s = file->private_data;
531+
struct pmc_dev *pmcdev = s->private;
532+
533+
return pmc_core_ltr_write(pmcdev, userbuf, count, 1);
534+
}
535+
528536
static int pmc_core_ltr_ignore_show(struct seq_file *s, void *unused)
529537
{
530538
return 0;
531539
}
532540
DEFINE_SHOW_STORE_ATTRIBUTE(pmc_core_ltr_ignore);
533541

542+
static ssize_t pmc_core_ltr_restore_write(struct file *file,
543+
const char __user *userbuf,
544+
size_t count, loff_t *ppos)
545+
{
546+
struct seq_file *s = file->private_data;
547+
struct pmc_dev *pmcdev = s->private;
548+
549+
return pmc_core_ltr_write(pmcdev, userbuf, count, 0);
550+
}
551+
552+
static int pmc_core_ltr_restore_show(struct seq_file *s, void *unused)
553+
{
554+
return 0;
555+
}
556+
DEFINE_SHOW_STORE_ATTRIBUTE(pmc_core_ltr_restore);
557+
534558
static void pmc_core_slps0_dbg_latch(struct pmc_dev *pmcdev, bool reset)
535559
{
536560
struct pmc *pmc = pmcdev->pmcs[PMC_IDX_MAIN];
@@ -1208,6 +1232,8 @@ static void pmc_core_dbgfs_register(struct pmc_dev *pmcdev)
12081232
debugfs_create_file("ltr_ignore", 0644, dir, pmcdev,
12091233
&pmc_core_ltr_ignore_fops);
12101234

1235+
debugfs_create_file("ltr_restore", 0200, dir, pmcdev, &pmc_core_ltr_restore_fops);
1236+
12111237
debugfs_create_file("ltr_show", 0444, dir, pmcdev, &pmc_core_ltr_fops);
12121238

12131239
if (primary_pmc->map->s0ix_blocker_maps)

0 commit comments

Comments
 (0)