Re: [PATCH 00/14] mmc: Replace kmap_atomic() with kmap_local_page()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 5 Oct 2022 at 12:20, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
>
> Hi
>
> Here are patches primarily aimed at replacing kmap_atomic() with
> kmap_local_page().
>
> kmap_local_page() is equivalent to kmap_atomic() except that it does not
> disable page faults or preemption. Where possible kmap_local_page() is
> preferred to kmap_atomic() - refer kernel highmem documentation.
>
> In these cases, there is no need to disable page faults or preemption, so
> kmap_atomic() is replaced with kmap_local_page(), and, correspondingly,
> kunmap_atomic() with kunmap_local().
>
> That work raised the question of why local_irq_{save,restore}() was being
> used with k[un]map_atomic().  It turns out to be for legacy reasons that
> have gone away.
>
> A long time ago the kmap_atomic API required a slot to be provided which
> risked the possibility that other code might use the same slot at the
> same time. Disabling interrupts prevented the possibility of an interrupt
> handler doing that. However, that went away with
> commit 3e4d3af501cc ("mm: stack based kmap_atomic()").
>
> The work is mostly divided into separate patches, to enable separate review
> for driver reviewers and to enable separate reverts if necessary.
>
>
> Adrian Hunter (14):
>       mmc: sdhci: Remove local_irq_{save,restore}() around k[un]map_atomic()
>       mmc: sdhci: Remove local_irq_{save,restore}() around sg_miter_{next,stop}()
>       mmc: sdhci: Replace kmap_atomic() with kmap_local_page()
>       mmc: bcm2835: Remove local_irq_{save,restore}() around k[un]map_atomic()
>       mmc: bcm2835: Remove local_irq_{save,restore}() around sg_miter_{next,stop}()
>       mmc: bcm2835: Replace kmap_atomic() with kmap_local_page()
>       mmc: mmc_test: Remove local_irq_{save,restore}() around sg_copy_{from,to}_buffer()
>       mmc: tifm_sd: Remove local_irq_{save,restore}() around tifm_sd_transfer_data()
>       mmc: tifm_sd: Remove local_irq_{save,restore}() around tifm_sd_bounce_block()
>       mmc: tifm_sd: Replace kmap_atomic() with kmap_local_page()
>       mmc: tmio_mmc_core: Remove local_irq_{save,restore}() around k[un]map_atomic()
>       mmc: tmio_mmc_core: Replace kmap_atomic() with kmap_local_page()
>       mmc: au1xmmc: Replace kmap_atomic() with kmap_local_page()
>       mmc: wbsd: Replace kmap_atomic() with kmap_local_page()
>
>  drivers/mmc/core/mmc_test.c              |  5 -----
>  drivers/mmc/host/au1xmmc.c               |  8 ++++----
>  drivers/mmc/host/bcm2835.c               | 12 ++----------
>  drivers/mmc/host/renesas_sdhi_sys_dmac.c |  5 ++---
>  drivers/mmc/host/sdhci.c                 | 30 ++++++++----------------------
>  drivers/mmc/host/tifm_sd.c               | 28 ++++++++++------------------
>  drivers/mmc/host/tmio_mmc.h              | 11 ++++-------
>  drivers/mmc/host/tmio_mmc_core.c         | 10 ++++------
>  drivers/mmc/host/wbsd.c                  | 10 +++++-----
>  9 files changed, 39 insertions(+), 80 deletions(-)
>
>
> Regards
> Adrian

Applied for next, thanks!

Kind regards
Uffe



[Index of Archives]     [Linux Memonry Technology]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux