mirror of
https://kernel.googlesource.com/pub/scm/linux/kernel/git/stable/linux-stable.git
synced 2025-09-27 17:32:00 +10:00
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: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko <andy@kernel.org> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> Link: https://lore.kernel.org/r/20230711095920.264308-1-hdegoede@redhat.com
This commit is contained in:
parent
8b58f757cd
commit
f2ae72541d
@ -11,7 +11,6 @@
|
||||
#include <linux/dmi.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#include "pmc.h"
|
||||
|
||||
@ -135,12 +134,10 @@ static const struct dmi_system_id fwbug_list[] = {
|
||||
*/
|
||||
static void amd_pmc_skip_nvme_smi_handler(u32 s2idle_bug_mmio)
|
||||
{
|
||||
struct resource *res;
|
||||
void __iomem *addr;
|
||||
u8 val;
|
||||
|
||||
res = request_mem_region_muxed(s2idle_bug_mmio, 1, "amd_pmc_pm80");
|
||||
if (!res)
|
||||
if (!request_mem_region_muxed(s2idle_bug_mmio, 1, "amd_pmc_pm80"))
|
||||
return;
|
||||
|
||||
addr = ioremap(s2idle_bug_mmio, 1);
|
||||
@ -152,8 +149,7 @@ static void amd_pmc_skip_nvme_smi_handler(u32 s2idle_bug_mmio)
|
||||
|
||||
iounmap(addr);
|
||||
cleanup_resource:
|
||||
release_resource(res);
|
||||
kfree(res);
|
||||
release_mem_region(s2idle_bug_mmio, 1);
|
||||
}
|
||||
|
||||
void amd_pmc_process_restore_quirks(struct amd_pmc_dev *dev)
|
||||
|
Loading…
Reference in New Issue
Block a user