Commit f2ae7254 authored by Hans de Goede's avatar Hans de Goede

platform/x86/amd: pmc: Use release_mem_region() to undo request_mem_region_muxed()

Muxed (mem) regions will wait in request_mem_region_muxed() if the region
is busy (in use by another consumer) during the call.

In order to wake-up possibly waiting other consumers of the region,
it must be released by a release_mem_region() call, which will actually
wake up any waiters.

release_mem_region() also frees the resource created by
request_mem_region_muxed(), avoiding the need for the unmatched kfree().
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Reviewed-by: default avatarAndy Shevchenko <andy@kernel.org>
Reviewed-by: default avatarMario Limonciello <mario.limonciello@amd.com>
Link: https://lore.kernel.org/r/20230711095920.264308-1-hdegoede@redhat.com
parent 8b58f757
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include <linux/dmi.h> #include <linux/dmi.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/slab.h>
#include "pmc.h" #include "pmc.h"
...@@ -135,12 +134,10 @@ static const struct dmi_system_id fwbug_list[] = { ...@@ -135,12 +134,10 @@ static const struct dmi_system_id fwbug_list[] = {
*/ */
static void amd_pmc_skip_nvme_smi_handler(u32 s2idle_bug_mmio) static void amd_pmc_skip_nvme_smi_handler(u32 s2idle_bug_mmio)
{ {
struct resource *res;
void __iomem *addr; void __iomem *addr;
u8 val; u8 val;
res = request_mem_region_muxed(s2idle_bug_mmio, 1, "amd_pmc_pm80"); if (!request_mem_region_muxed(s2idle_bug_mmio, 1, "amd_pmc_pm80"))
if (!res)
return; return;
addr = ioremap(s2idle_bug_mmio, 1); addr = ioremap(s2idle_bug_mmio, 1);
...@@ -152,8 +149,7 @@ static void amd_pmc_skip_nvme_smi_handler(u32 s2idle_bug_mmio) ...@@ -152,8 +149,7 @@ static void amd_pmc_skip_nvme_smi_handler(u32 s2idle_bug_mmio)
iounmap(addr); iounmap(addr);
cleanup_resource: cleanup_resource:
release_resource(res); release_mem_region(s2idle_bug_mmio, 1);
kfree(res);
} }
void amd_pmc_process_restore_quirks(struct amd_pmc_dev *dev) void amd_pmc_process_restore_quirks(struct amd_pmc_dev *dev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment