platform/x86: intel/pmc: Fix ioremap() of bad address

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.

Fixes: a01486dc4bb1 ("platform/x86/intel/pmc: Cleanup SSRAM discovery")
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Link: https://lore.kernel.org/r/20250106174653.1497128-1-david.e.box@linux.intel.com
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>

authored by David E. Box and committed by Ilpo Järvinen 1d7461d0 cc1ff7bc

Changed files
+4
drivers
platform
x86
intel
+4
drivers/platform/x86/intel/pmc/core_ssram.c
··· 269 269 /* 270 270 * The secondary PMC BARS (which are behind hidden PCI devices) 271 271 * are read from fixed offsets in MMIO of the primary PMC BAR. 272 + * If a device is not present, the value will be 0. 272 273 */ 273 274 ssram_base = get_base(tmp_ssram, offset); 275 + if (!ssram_base) 276 + return 0; 277 + 274 278 ssram = ioremap(ssram_base, SSRAM_HDR_SIZE); 275 279 if (!ssram) 276 280 return -ENOMEM;