lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 16 Feb 2022 11:29:52 +0100
From:   Ulf Hansson <ulf.hansson@...aro.org>
To:     Kai-Heng Feng <kai.heng.feng@...onical.com>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc:     Thomas Hebb <tommyhebb@...il.com>, linux-mmc@...r.kernel.org,
        linux-kernel@...r.kernel.org
Subject: Re: [PATCH] mmc: rtsx: Let MMC core handle runtime PM

On Wed, 16 Feb 2022 at 06:55, Kai-Heng Feng <kai.heng.feng@...onical.com> wrote:
>
> Since MMC core handles runtime PM reference counting, we can avoid doing
> redundant runtime PM work in the driver. That means the only thing
> commit 5b4258f6721f ("misc: rtsx: rts5249 support runtime PM") misses is
> to always enable runtime PM, to let its parent driver enable ASPM in the
> runtime idle routine.
>
> Fixes: 7499b529d97f ("mmc: rtsx: Use pm_runtime_{get,put}() to handle runtime PM")
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@...onical.com>

This looks good to me!

Reviewed-by: Ulf Hansson <ulf.hansson@...aro.org>

Greg, do you want to funnel this through your tree - or should I wait
for an rc containing 7499b529d97f and take it through my mmc tree?
Either way works for me.

Kind regards
Uffe

> ---
>  drivers/mmc/host/rtsx_pci_sdmmc.c | 18 ------------------
>  1 file changed, 18 deletions(-)
>
> diff --git a/drivers/mmc/host/rtsx_pci_sdmmc.c b/drivers/mmc/host/rtsx_pci_sdmmc.c
> index 2a3f14afe9f83..265b3889f9d72 100644
> --- a/drivers/mmc/host/rtsx_pci_sdmmc.c
> +++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
> @@ -823,7 +823,6 @@ static void sd_request(struct work_struct *work)
>         }
>
>         mutex_lock(&pcr->pcr_mutex);
> -       pm_runtime_get_sync(dev);
>
>         rtsx_pci_start_run(pcr);
>
> @@ -860,8 +859,6 @@ static void sd_request(struct work_struct *work)
>                         data->bytes_xfered = data->blocks * data->blksz;
>         }
>
> -       pm_runtime_mark_last_busy(dev);
> -       pm_runtime_put_autosuspend(dev);
>         mutex_unlock(&pcr->pcr_mutex);
>
>  finish:
> @@ -1093,7 +1090,6 @@ static void sdmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>                 return;
>
>         mutex_lock(&pcr->pcr_mutex);
> -       pm_runtime_get_sync(dev);
>
>         rtsx_pci_start_run(pcr);
>
> @@ -1127,8 +1123,6 @@ static void sdmmc_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
>         rtsx_pci_switch_clock(pcr, ios->clock, host->ssc_depth,
>                         host->initial_mode, host->double_clk, host->vpclk);
>
> -       pm_runtime_mark_last_busy(dev);
> -       pm_runtime_put_autosuspend(dev);
>         mutex_unlock(&pcr->pcr_mutex);
>  }
>
> @@ -1144,7 +1138,6 @@ static int sdmmc_get_ro(struct mmc_host *mmc)
>                 return -ENOMEDIUM;
>
>         mutex_lock(&pcr->pcr_mutex);
> -       pm_runtime_get_sync(dev);
>
>         rtsx_pci_start_run(pcr);
>
> @@ -1154,8 +1147,6 @@ static int sdmmc_get_ro(struct mmc_host *mmc)
>         if (val & SD_WRITE_PROTECT)
>                 ro = 1;
>
> -       pm_runtime_mark_last_busy(dev);
> -       pm_runtime_put_autosuspend(dev);
>         mutex_unlock(&pcr->pcr_mutex);
>
>         return ro;
> @@ -1173,7 +1164,6 @@ static int sdmmc_get_cd(struct mmc_host *mmc)
>                 return cd;
>
>         mutex_lock(&pcr->pcr_mutex);
> -       pm_runtime_get_sync(dev);
>
>         rtsx_pci_start_run(pcr);
>
> @@ -1183,8 +1173,6 @@ static int sdmmc_get_cd(struct mmc_host *mmc)
>         if (val & SD_EXIST)
>                 cd = 1;
>
> -       pm_runtime_mark_last_busy(dev);
> -       pm_runtime_put_autosuspend(dev);
>         mutex_unlock(&pcr->pcr_mutex);
>
>         return cd;
> @@ -1282,7 +1270,6 @@ static int sdmmc_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios)
>                 return err;
>
>         mutex_lock(&pcr->pcr_mutex);
> -       pm_runtime_get_sync(dev);
>
>         rtsx_pci_start_run(pcr);
>
> @@ -1312,8 +1299,6 @@ static int sdmmc_switch_voltage(struct mmc_host *mmc, struct mmc_ios *ios)
>         err = rtsx_pci_write_register(pcr, SD_BUS_STAT,
>                         SD_CLK_TOGGLE_EN | SD_CLK_FORCE_STOP, 0);
>
> -       pm_runtime_mark_last_busy(dev);
> -       pm_runtime_put_autosuspend(dev);
>         mutex_unlock(&pcr->pcr_mutex);
>
>         return err;
> @@ -1334,7 +1319,6 @@ static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
>                 return err;
>
>         mutex_lock(&pcr->pcr_mutex);
> -       pm_runtime_get_sync(dev);
>
>         rtsx_pci_start_run(pcr);
>
> @@ -1367,8 +1351,6 @@ static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
>                 err = sd_change_phase(host, DDR50_RX_PHASE(pcr), true);
>
>  out:
> -       pm_runtime_mark_last_busy(dev);
> -       pm_runtime_put_autosuspend(dev);
>         mutex_unlock(&pcr->pcr_mutex);
>
>         return err;
> --
> 2.34.1
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ