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