diff mbox series

[v4,01/11] platform/x86/amd/pmc: Move STB block into amd_pmc_s2d_init()

Message ID 20241107072714.943423-2-Shyam-sundar.S-k@amd.com (mailing list archive)
State Changes Requested, archived
Headers show
Series platform/x86/amd/pmc: Updates to AMD PMC driver | expand

Commit Message

Shyam Sundar S K Nov. 7, 2024, 7:27 a.m. UTC
Transfer the support for STB-related file operations to the
amd_pmc_s2d_init() function, thereby consolidating the STB and S2D
(Spill to DRAM) functionality in one location.

For older platforms that supported S2D, exit immediately after creating
debugfs. These platforms may not support the PMFW messages available on
newer platforms. This adjustment is necessary due to the relocation of
debugfs creation into amd_pmc_s2d_init().

Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Co-developed-by: Sanket Goswami <Sanket.Goswami@amd.com>
Signed-off-by: Sanket Goswami <Sanket.Goswami@amd.com>
Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
---
 drivers/platform/x86/amd/pmc/pmc.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

Comments

Ilpo Järvinen Nov. 7, 2024, 10:40 a.m. UTC | #1
On Thu, 7 Nov 2024, Shyam Sundar S K wrote:

> Transfer the support for STB-related file operations to the
> amd_pmc_s2d_init() function, thereby consolidating the STB and S2D
> (Spill to DRAM) functionality in one location.
> 
> For older platforms that supported S2D, exit immediately after creating
> debugfs. These platforms may not support the PMFW messages available on
> newer platforms. This adjustment is necessary due to the relocation of
> debugfs creation into amd_pmc_s2d_init().
> 
> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
> Co-developed-by: Sanket Goswami <Sanket.Goswami@amd.com>
> Signed-off-by: Sanket Goswami <Sanket.Goswami@amd.com>
> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
> ---
>  drivers/platform/x86/amd/pmc/pmc.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c
> index bbb8edb62e00..54ceb2f9bf56 100644
> --- a/drivers/platform/x86/amd/pmc/pmc.c
> +++ b/drivers/platform/x86/amd/pmc/pmc.c
> @@ -648,15 +648,6 @@ static void amd_pmc_dbgfs_register(struct amd_pmc_dev *dev)
>  			    &s0ix_stats_fops);
>  	debugfs_create_file("amd_pmc_idlemask", 0644, dev->dbgfs_dir, dev,
>  			    &amd_pmc_idlemask_fops);
> -	/* Enable STB only when the module_param is set */
> -	if (enable_stb) {
> -		if (amd_pmc_is_stb_supported(dev))
> -			debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
> -					    &amd_pmc_stb_debugfs_fops_v2);
> -		else
> -			debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
> -					    &amd_pmc_stb_debugfs_fops);
> -	}
>  }
>  
>  static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
> @@ -982,6 +973,15 @@ static int amd_pmc_s2d_init(struct amd_pmc_dev *dev)
>  	u32 size = 0;
>  	int ret;
>  
> +	if (amd_pmc_is_stb_supported(dev)) {
> +		debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
> +				    &amd_pmc_stb_debugfs_fops_v2);
> +	} else {
> +		debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
> +				    &amd_pmc_stb_debugfs_fops);
> +		return 0;
> +	}
> +
>  	/* Spill to DRAM feature uses separate SMU message port */
>  	dev->msg_port = 1;

This now runs afoul the other issue you even mentioned yourself (IIRC), 
that is, dev->dbgfs_dir is initialized inside amd_pmc_dbgfs_register() 
which is only called after amd_pmc_s2d_init() until it is moved in patch 
2.

Thus, you need to combine patches 1 & 2 so you don't get a broken kernel
after this patch.

Please also move the enable_stb check inside amd_pmc_s2d_init() in this 
patch since that's another thing you've now broken in between patches 1 & 
3.

So to reiterate, in the first patch combine: Patch 1 + 2 + the if () logic 
move from amd_pmc_probe() into amd_pmc_s2d_init().
Shyam Sundar S K Nov. 7, 2024, 3:32 p.m. UTC | #2
On 11/7/2024 16:10, Ilpo Järvinen wrote:
> On Thu, 7 Nov 2024, Shyam Sundar S K wrote:
> 
>> Transfer the support for STB-related file operations to the
>> amd_pmc_s2d_init() function, thereby consolidating the STB and S2D
>> (Spill to DRAM) functionality in one location.
>>
>> For older platforms that supported S2D, exit immediately after creating
>> debugfs. These platforms may not support the PMFW messages available on
>> newer platforms. This adjustment is necessary due to the relocation of
>> debugfs creation into amd_pmc_s2d_init().
>>
>> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
>> Co-developed-by: Sanket Goswami <Sanket.Goswami@amd.com>
>> Signed-off-by: Sanket Goswami <Sanket.Goswami@amd.com>
>> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
>> ---
>>  drivers/platform/x86/amd/pmc/pmc.c | 18 +++++++++---------
>>  1 file changed, 9 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c
>> index bbb8edb62e00..54ceb2f9bf56 100644
>> --- a/drivers/platform/x86/amd/pmc/pmc.c
>> +++ b/drivers/platform/x86/amd/pmc/pmc.c
>> @@ -648,15 +648,6 @@ static void amd_pmc_dbgfs_register(struct amd_pmc_dev *dev)
>>  			    &s0ix_stats_fops);
>>  	debugfs_create_file("amd_pmc_idlemask", 0644, dev->dbgfs_dir, dev,
>>  			    &amd_pmc_idlemask_fops);
>> -	/* Enable STB only when the module_param is set */
>> -	if (enable_stb) {
>> -		if (amd_pmc_is_stb_supported(dev))
>> -			debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
>> -					    &amd_pmc_stb_debugfs_fops_v2);
>> -		else
>> -			debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
>> -					    &amd_pmc_stb_debugfs_fops);
>> -	}
>>  }
>>  
>>  static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
>> @@ -982,6 +973,15 @@ static int amd_pmc_s2d_init(struct amd_pmc_dev *dev)
>>  	u32 size = 0;
>>  	int ret;
>>  
>> +	if (amd_pmc_is_stb_supported(dev)) {
>> +		debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
>> +				    &amd_pmc_stb_debugfs_fops_v2);
>> +	} else {
>> +		debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
>> +				    &amd_pmc_stb_debugfs_fops);
>> +		return 0;
>> +	}
>> +
>>  	/* Spill to DRAM feature uses separate SMU message port */
>>  	dev->msg_port = 1;
> 
> This now runs afoul the other issue you even mentioned yourself (IIRC), 
> that is, dev->dbgfs_dir is initialized inside amd_pmc_dbgfs_register() 
> which is only called after amd_pmc_s2d_init() until it is moved in patch 
> 2.
> 
> Thus, you need to combine patches 1 & 2 so you don't get a broken kernel
> after this patch.
> 
> Please also move the enable_stb check inside amd_pmc_s2d_init() in this 
> patch since that's another thing you've now broken in between patches 1 & 
> 3.
> 
> So to reiterate, in the first patch combine: Patch 1 + 2 + the if () logic 
> move from amd_pmc_probe() into amd_pmc_s2d_init().
> 

OK. Will do it.

Thanks,
Shyam
diff mbox series

Patch

diff --git a/drivers/platform/x86/amd/pmc/pmc.c b/drivers/platform/x86/amd/pmc/pmc.c
index bbb8edb62e00..54ceb2f9bf56 100644
--- a/drivers/platform/x86/amd/pmc/pmc.c
+++ b/drivers/platform/x86/amd/pmc/pmc.c
@@ -648,15 +648,6 @@  static void amd_pmc_dbgfs_register(struct amd_pmc_dev *dev)
 			    &s0ix_stats_fops);
 	debugfs_create_file("amd_pmc_idlemask", 0644, dev->dbgfs_dir, dev,
 			    &amd_pmc_idlemask_fops);
-	/* Enable STB only when the module_param is set */
-	if (enable_stb) {
-		if (amd_pmc_is_stb_supported(dev))
-			debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
-					    &amd_pmc_stb_debugfs_fops_v2);
-		else
-			debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
-					    &amd_pmc_stb_debugfs_fops);
-	}
 }
 
 static void amd_pmc_dump_registers(struct amd_pmc_dev *dev)
@@ -982,6 +973,15 @@  static int amd_pmc_s2d_init(struct amd_pmc_dev *dev)
 	u32 size = 0;
 	int ret;
 
+	if (amd_pmc_is_stb_supported(dev)) {
+		debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
+				    &amd_pmc_stb_debugfs_fops_v2);
+	} else {
+		debugfs_create_file("stb_read", 0644, dev->dbgfs_dir, dev,
+				    &amd_pmc_stb_debugfs_fops);
+		return 0;
+	}
+
 	/* Spill to DRAM feature uses separate SMU message port */
 	dev->msg_port = 1;