* [PATCH 1/2] platform/x86/intel/pmc: Fix ioremap of bad address
@ 2024-10-18 3:03 David E. Box
2024-10-18 3:03 ` [PATCH 2/2] platform/x86/intel/pmc: Remove unnecessary ioremap David E. Box
0 siblings, 1 reply; 3+ messages in thread
From: David E. Box @ 2024-10-18 3:03 UTC (permalink / raw)
To: david.e.box, hdegoede, ilpo.jarvinen, platform-driver-x86,
linux-kernel
In pmc_core_ssram_get_pmc(), the physical addresses for hidden SSRAM
devices are retrieved from the MMIO region of the primary SSRAM device. If
additional devices are not present, the address returned is zero.
Currently, the code does not check for this condition, resulting in ioremap
incorrectly attempting to map address 0. Add a check for a zero address and
return 0 if no additional devices are found, as it is not an error for the
device to be absent.
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Fixes: a01486dc4bb1 ("platform/x86/intel/pmc: Cleanup SSRAM discovery")
---
drivers/platform/x86/intel/pmc/core_ssram.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/platform/x86/intel/pmc/core_ssram.c b/drivers/platform/x86/intel/pmc/core_ssram.c
index c259c96b7dfd..70e03bd53740 100644
--- a/drivers/platform/x86/intel/pmc/core_ssram.c
+++ b/drivers/platform/x86/intel/pmc/core_ssram.c
@@ -267,8 +267,12 @@ pmc_core_ssram_get_pmc(struct pmc_dev *pmcdev, int pmc_idx, u32 offset)
/*
* The secondary PMC BARS (which are behind hidden PCI devices)
* are read from fixed offsets in MMIO of the primary PMC BAR.
+ * If a device is not present, the value will be 0.
*/
ssram_base = get_base(tmp_ssram, offset);
+ if (!ssram_base)
+ return 0;
+
ssram = ioremap(ssram_base, SSRAM_HDR_SIZE);
if (!ssram)
return -ENOMEM;
base-commit: 8e929cb546ee42c9a61d24fae60605e9e3192354
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] platform/x86/intel/pmc: Remove unnecessary ioremap
2024-10-18 3:03 [PATCH 1/2] platform/x86/intel/pmc: Fix ioremap of bad address David E. Box
@ 2024-10-18 3:03 ` David E. Box
2024-10-18 14:36 ` David E. Box
0 siblings, 1 reply; 3+ messages in thread
From: David E. Box @ 2024-10-18 3:03 UTC (permalink / raw)
To: david.e.box, hdegoede, ilpo.jarvinen, platform-driver-x86,
linux-kernel
pmc_get_pmc() unnecessarily calls ioremap to access memory that is already
available through a variable passed in as an argument. Replace the
redundant ioremap call with direct use of the provided variable, and remove
the ioremap and iounmap calls.
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
---
drivers/platform/x86/intel/pmc/core_ssram.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/platform/x86/intel/pmc/core_ssram.c b/drivers/platform/x86/intel/pmc/core_ssram.c
index 70e03bd53740..d293e6e166e1 100644
--- a/drivers/platform/x86/intel/pmc/core_ssram.c
+++ b/drivers/platform/x86/intel/pmc/core_ssram.c
@@ -171,13 +171,7 @@ pmc_add_pmt(struct pmc_dev *pmcdev, u64 ssram_base, void __iomem *ssram)
u32 dvsec_offset;
u32 table, hdr;
- ssram = ioremap(ssram_base, SSRAM_HDR_SIZE);
- if (!ssram)
- return;
-
dvsec_offset = readl(ssram + SSRAM_DVSEC_OFFSET);
- iounmap(ssram);
-
dvsec = ioremap(ssram_base + dvsec_offset, SSRAM_DVSEC_SIZE);
if (!dvsec)
return;
--
2.43.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 2/2] platform/x86/intel/pmc: Remove unnecessary ioremap
2024-10-18 3:03 ` [PATCH 2/2] platform/x86/intel/pmc: Remove unnecessary ioremap David E. Box
@ 2024-10-18 14:36 ` David E. Box
0 siblings, 0 replies; 3+ messages in thread
From: David E. Box @ 2024-10-18 14:36 UTC (permalink / raw)
To: hdegoede, ilpo.jarvinen, platform-driver-x86, linux-kernel
On Thu, 2024-10-17 at 20:03 -0700, David E. Box wrote:
> pmc_get_pmc() unnecessarily calls ioremap to access memory that is already
> available through a variable passed in as an argument. Replace the
> redundant ioremap call with direct use of the provided variable, and remove
> the ioremap and iounmap calls.
Woke up to a test failure on this one. I'll drop in V2 or modify after checking
what I missed.
David
>
> Signed-off-by: David E. Box <david.e.box@linux.intel.com>
> ---
> drivers/platform/x86/intel/pmc/core_ssram.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/drivers/platform/x86/intel/pmc/core_ssram.c
> b/drivers/platform/x86/intel/pmc/core_ssram.c
> index 70e03bd53740..d293e6e166e1 100644
> --- a/drivers/platform/x86/intel/pmc/core_ssram.c
> +++ b/drivers/platform/x86/intel/pmc/core_ssram.c
> @@ -171,13 +171,7 @@ pmc_add_pmt(struct pmc_dev *pmcdev, u64 ssram_base, void
> __iomem *ssram)
> u32 dvsec_offset;
> u32 table, hdr;
>
> - ssram = ioremap(ssram_base, SSRAM_HDR_SIZE);
> - if (!ssram)
> - return;
> -
> dvsec_offset = readl(ssram + SSRAM_DVSEC_OFFSET);
> - iounmap(ssram);
> -
> dvsec = ioremap(ssram_base + dvsec_offset, SSRAM_DVSEC_SIZE);
> if (!dvsec)
> return;
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-18 14:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-18 3:03 [PATCH 1/2] platform/x86/intel/pmc: Fix ioremap of bad address David E. Box
2024-10-18 3:03 ` [PATCH 2/2] platform/x86/intel/pmc: Remove unnecessary ioremap David E. Box
2024-10-18 14:36 ` David E. Box
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox