All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Baoquan He <bhe@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
	linux-mm@kvack.org, arnd@arndb.de, christophe.leroy@csgroup.eu,
	hch@infradead.org, agordeev@linux.ibm.com,
	wangkefeng.wang@huawei.com, schnelle@linux.ibm.com,
	David.Laight@aculab.com, shorne@gmail.com, willy@infradead.org,
	deller@gmx.de, Michael Ellerman <mpe@ellerman.id.au>,
	Nicholas Piggin <npiggin@gmail.com>,
	linuxppc-dev@lists.ozlabs.org
Subject: Re: [PATCH v5 RESEND 15/17] powerpc: mm: Convert to GENERIC_IOREMAP
Date: Tue, 16 May 2023 10:00:13 +0300	[thread overview]
Message-ID: <ZGMp/dltHeJiRKBn@kernel.org> (raw)
In-Reply-To: <20230515090848.833045-16-bhe@redhat.com>

On Mon, May 15, 2023 at 05:08:46PM +0800, Baoquan He wrote:
> From: Christophe Leroy <christophe.leroy@csgroup.eu>
> 
> By taking GENERIC_IOREMAP method, the generic generic_ioremap_prot(),
> generic_iounmap(), and their generic wrapper ioremap_prot(), ioremap()
> and iounmap() are all visible and available to arch. Arch needs to
> provide wrapper functions to override the generic versions if there's
> arch specific handling in its ioremap_prot(), ioremap() or iounmap().
> This change will simplify implementation by removing duplicated codes
> with generic_ioremap_prot() and generic_iounmap(), and has the equivalent
> functioality as before.
> 
> Here, add wrapper functions ioremap_prot() and iounmap() for powerpc's
> special operation when ioremap() and iounmap().
> 
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Nicholas Piggin <npiggin@gmail.com>
> Cc: linuxppc-dev@lists.ozlabs.org

Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>

> ---
>  arch/powerpc/Kconfig          |  1 +
>  arch/powerpc/include/asm/io.h |  8 +++-----
>  arch/powerpc/mm/ioremap.c     | 26 +-------------------------
>  arch/powerpc/mm/ioremap_32.c  | 19 +++++++++----------
>  arch/powerpc/mm/ioremap_64.c  | 12 ++----------
>  5 files changed, 16 insertions(+), 50 deletions(-)
> 
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 539d1f03ff42..e0a88ebcd026 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -194,6 +194,7 @@ config PPC
>  	select GENERIC_CPU_VULNERABILITIES	if PPC_BARRIER_NOSPEC
>  	select GENERIC_EARLY_IOREMAP
>  	select GENERIC_GETTIMEOFDAY
> +	select GENERIC_IOREMAP
>  	select GENERIC_IRQ_SHOW
>  	select GENERIC_IRQ_SHOW_LEVEL
>  	select GENERIC_PCI_IOMAP		if PCI
> diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h
> index 67a3fb6de498..0732b743e099 100644
> --- a/arch/powerpc/include/asm/io.h
> +++ b/arch/powerpc/include/asm/io.h
> @@ -889,8 +889,8 @@ static inline void iosync(void)
>   *
>   */
>  extern void __iomem *ioremap(phys_addr_t address, unsigned long size);
> -extern void __iomem *ioremap_prot(phys_addr_t address, unsigned long size,
> -				  unsigned long flags);
> +#define ioremap ioremap
> +#define ioremap_prot ioremap_prot
>  extern void __iomem *ioremap_wc(phys_addr_t address, unsigned long size);
>  #define ioremap_wc ioremap_wc
>  
> @@ -904,14 +904,12 @@ void __iomem *ioremap_coherent(phys_addr_t address, unsigned long size);
>  #define ioremap_cache(addr, size) \
>  	ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL))
>  
> -extern void iounmap(volatile void __iomem *addr);
> +#define iounmap iounmap
>  
>  void __iomem *ioremap_phb(phys_addr_t paddr, unsigned long size);
>  
>  int early_ioremap_range(unsigned long ea, phys_addr_t pa,
>  			unsigned long size, pgprot_t prot);
> -void __iomem *do_ioremap(phys_addr_t pa, phys_addr_t offset, unsigned long size,
> -			 pgprot_t prot, void *caller);
>  
>  extern void __iomem *__ioremap_caller(phys_addr_t, unsigned long size,
>  				      pgprot_t prot, void *caller);
> diff --git a/arch/powerpc/mm/ioremap.c b/arch/powerpc/mm/ioremap.c
> index 4f12504fb405..705e8e8ffde4 100644
> --- a/arch/powerpc/mm/ioremap.c
> +++ b/arch/powerpc/mm/ioremap.c
> @@ -41,7 +41,7 @@ void __iomem *ioremap_coherent(phys_addr_t addr, unsigned long size)
>  	return __ioremap_caller(addr, size, prot, caller);
>  }
>  
> -void __iomem *ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags)
> +void __iomem *ioremap_prot(phys_addr_t addr, size_t size, unsigned long flags)
>  {
>  	pte_t pte = __pte(flags);
>  	void *caller = __builtin_return_address(0);
> @@ -74,27 +74,3 @@ int early_ioremap_range(unsigned long ea, phys_addr_t pa,
>  
>  	return 0;
>  }
> -
> -void __iomem *do_ioremap(phys_addr_t pa, phys_addr_t offset, unsigned long size,
> -			 pgprot_t prot, void *caller)
> -{
> -	struct vm_struct *area;
> -	int ret;
> -	unsigned long va;
> -
> -	area = __get_vm_area_caller(size, VM_IOREMAP, IOREMAP_START, IOREMAP_END, caller);
> -	if (area == NULL)
> -		return NULL;
> -
> -	area->phys_addr = pa;
> -	va = (unsigned long)area->addr;
> -
> -	ret = ioremap_page_range(va, va + size, pa, prot);
> -	if (!ret)
> -		return (void __iomem *)area->addr + offset;
> -
> -	vunmap_range(va, va + size);
> -	free_vm_area(area);
> -
> -	return NULL;
> -}
> diff --git a/arch/powerpc/mm/ioremap_32.c b/arch/powerpc/mm/ioremap_32.c
> index 9d13143b8be4..ca5bc6be3e6f 100644
> --- a/arch/powerpc/mm/ioremap_32.c
> +++ b/arch/powerpc/mm/ioremap_32.c
> @@ -21,6 +21,13 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *call
>  	phys_addr_t p, offset;
>  	int err;
>  
> +	/*
> +	 * If the address lies within the first 16 MB, assume it's in ISA
> +	 * memory space
> +	 */
> +	if (addr < SZ_16M)
> +		addr += _ISA_MEM_BASE;
> +
>  	/*
>  	 * Choose an address to map it to.
>  	 * Once the vmalloc system is running, we use it.
> @@ -31,13 +38,6 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *call
>  	offset = addr & ~PAGE_MASK;
>  	size = PAGE_ALIGN(addr + size) - p;
>  
> -	/*
> -	 * If the address lies within the first 16 MB, assume it's in ISA
> -	 * memory space
> -	 */
> -	if (p < 16 * 1024 * 1024)
> -		p += _ISA_MEM_BASE;
> -
>  #ifndef CONFIG_CRASH_DUMP
>  	/*
>  	 * Don't allow anybody to remap normal RAM that we're using.
> @@ -63,7 +63,7 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *call
>  		return (void __iomem *)v + offset;
>  
>  	if (slab_is_available())
> -		return do_ioremap(p, offset, size, prot, caller);
> +		return generic_ioremap_prot(addr, size, prot);
>  
>  	/*
>  	 * Should check if it is a candidate for a BAT mapping
> @@ -87,7 +87,6 @@ void iounmap(volatile void __iomem *addr)
>  	if (v_block_mapped((unsigned long)addr))
>  		return;
>  
> -	if (addr > high_memory && (unsigned long)addr < ioremap_bot)
> -		vunmap((void *)(PAGE_MASK & (unsigned long)addr));
> +	generic_iounmap(addr);
>  }
>  EXPORT_SYMBOL(iounmap);
> diff --git a/arch/powerpc/mm/ioremap_64.c b/arch/powerpc/mm/ioremap_64.c
> index 3acece00b33e..d24e5f166723 100644
> --- a/arch/powerpc/mm/ioremap_64.c
> +++ b/arch/powerpc/mm/ioremap_64.c
> @@ -29,7 +29,7 @@ void __iomem *__ioremap_caller(phys_addr_t addr, unsigned long size,
>  		return NULL;
>  
>  	if (slab_is_available())
> -		return do_ioremap(paligned, offset, size, prot, caller);
> +		return generic_ioremap_prot(addr, size, prot);
>  
>  	pr_warn("ioremap() called early from %pS. Use early_ioremap() instead\n", caller);
>  
> @@ -49,17 +49,9 @@ void __iomem *__ioremap_caller(phys_addr_t addr, unsigned long size,
>   */
>  void iounmap(volatile void __iomem *token)
>  {
> -	void *addr;
> -
>  	if (!slab_is_available())
>  		return;
>  
> -	addr = (void *)((unsigned long __force)PCI_FIX_ADDR(token) & PAGE_MASK);
> -
> -	if ((unsigned long)addr < ioremap_bot) {
> -		pr_warn("Attempt to iounmap early bolted mapping at 0x%p\n", addr);
> -		return;
> -	}
> -	vunmap(addr);
> +	generic_iounmap(PCI_FIX_ADDR(token));
>  }
>  EXPORT_SYMBOL(iounmap);
> -- 
> 2.34.1
> 
> 

-- 
Sincerely yours,
Mike.

WARNING: multiple messages have this Message-ID (diff)
From: Mike Rapoport <rppt@kernel.org>
To: Baoquan He <bhe@redhat.com>
Cc: linux-arch@vger.kernel.org, wangkefeng.wang@huawei.com,
	arnd@arndb.de, schnelle@linux.ibm.com, deller@gmx.de,
	Nicholas Piggin <npiggin@gmail.com>,
	linux-kernel@vger.kernel.org, hch@infradead.org,
	linux-mm@kvack.org, David.Laight@aculab.com, willy@infradead.org,
	agordeev@linux.ibm.com, linuxppc-dev@lists.ozlabs.org,
	shorne@gmail.com
Subject: Re: [PATCH v5 RESEND 15/17] powerpc: mm: Convert to GENERIC_IOREMAP
Date: Tue, 16 May 2023 10:00:13 +0300	[thread overview]
Message-ID: <ZGMp/dltHeJiRKBn@kernel.org> (raw)
In-Reply-To: <20230515090848.833045-16-bhe@redhat.com>

On Mon, May 15, 2023 at 05:08:46PM +0800, Baoquan He wrote:
> From: Christophe Leroy <christophe.leroy@csgroup.eu>
> 
> By taking GENERIC_IOREMAP method, the generic generic_ioremap_prot(),
> generic_iounmap(), and their generic wrapper ioremap_prot(), ioremap()
> and iounmap() are all visible and available to arch. Arch needs to
> provide wrapper functions to override the generic versions if there's
> arch specific handling in its ioremap_prot(), ioremap() or iounmap().
> This change will simplify implementation by removing duplicated codes
> with generic_ioremap_prot() and generic_iounmap(), and has the equivalent
> functioality as before.
> 
> Here, add wrapper functions ioremap_prot() and iounmap() for powerpc's
> special operation when ioremap() and iounmap().
> 
> Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Nicholas Piggin <npiggin@gmail.com>
> Cc: linuxppc-dev@lists.ozlabs.org

Reviewed-by: Mike Rapoport (IBM) <rppt@kernel.org>

> ---
>  arch/powerpc/Kconfig          |  1 +
>  arch/powerpc/include/asm/io.h |  8 +++-----
>  arch/powerpc/mm/ioremap.c     | 26 +-------------------------
>  arch/powerpc/mm/ioremap_32.c  | 19 +++++++++----------
>  arch/powerpc/mm/ioremap_64.c  | 12 ++----------
>  5 files changed, 16 insertions(+), 50 deletions(-)
> 
> diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
> index 539d1f03ff42..e0a88ebcd026 100644
> --- a/arch/powerpc/Kconfig
> +++ b/arch/powerpc/Kconfig
> @@ -194,6 +194,7 @@ config PPC
>  	select GENERIC_CPU_VULNERABILITIES	if PPC_BARRIER_NOSPEC
>  	select GENERIC_EARLY_IOREMAP
>  	select GENERIC_GETTIMEOFDAY
> +	select GENERIC_IOREMAP
>  	select GENERIC_IRQ_SHOW
>  	select GENERIC_IRQ_SHOW_LEVEL
>  	select GENERIC_PCI_IOMAP		if PCI
> diff --git a/arch/powerpc/include/asm/io.h b/arch/powerpc/include/asm/io.h
> index 67a3fb6de498..0732b743e099 100644
> --- a/arch/powerpc/include/asm/io.h
> +++ b/arch/powerpc/include/asm/io.h
> @@ -889,8 +889,8 @@ static inline void iosync(void)
>   *
>   */
>  extern void __iomem *ioremap(phys_addr_t address, unsigned long size);
> -extern void __iomem *ioremap_prot(phys_addr_t address, unsigned long size,
> -				  unsigned long flags);
> +#define ioremap ioremap
> +#define ioremap_prot ioremap_prot
>  extern void __iomem *ioremap_wc(phys_addr_t address, unsigned long size);
>  #define ioremap_wc ioremap_wc
>  
> @@ -904,14 +904,12 @@ void __iomem *ioremap_coherent(phys_addr_t address, unsigned long size);
>  #define ioremap_cache(addr, size) \
>  	ioremap_prot((addr), (size), pgprot_val(PAGE_KERNEL))
>  
> -extern void iounmap(volatile void __iomem *addr);
> +#define iounmap iounmap
>  
>  void __iomem *ioremap_phb(phys_addr_t paddr, unsigned long size);
>  
>  int early_ioremap_range(unsigned long ea, phys_addr_t pa,
>  			unsigned long size, pgprot_t prot);
> -void __iomem *do_ioremap(phys_addr_t pa, phys_addr_t offset, unsigned long size,
> -			 pgprot_t prot, void *caller);
>  
>  extern void __iomem *__ioremap_caller(phys_addr_t, unsigned long size,
>  				      pgprot_t prot, void *caller);
> diff --git a/arch/powerpc/mm/ioremap.c b/arch/powerpc/mm/ioremap.c
> index 4f12504fb405..705e8e8ffde4 100644
> --- a/arch/powerpc/mm/ioremap.c
> +++ b/arch/powerpc/mm/ioremap.c
> @@ -41,7 +41,7 @@ void __iomem *ioremap_coherent(phys_addr_t addr, unsigned long size)
>  	return __ioremap_caller(addr, size, prot, caller);
>  }
>  
> -void __iomem *ioremap_prot(phys_addr_t addr, unsigned long size, unsigned long flags)
> +void __iomem *ioremap_prot(phys_addr_t addr, size_t size, unsigned long flags)
>  {
>  	pte_t pte = __pte(flags);
>  	void *caller = __builtin_return_address(0);
> @@ -74,27 +74,3 @@ int early_ioremap_range(unsigned long ea, phys_addr_t pa,
>  
>  	return 0;
>  }
> -
> -void __iomem *do_ioremap(phys_addr_t pa, phys_addr_t offset, unsigned long size,
> -			 pgprot_t prot, void *caller)
> -{
> -	struct vm_struct *area;
> -	int ret;
> -	unsigned long va;
> -
> -	area = __get_vm_area_caller(size, VM_IOREMAP, IOREMAP_START, IOREMAP_END, caller);
> -	if (area == NULL)
> -		return NULL;
> -
> -	area->phys_addr = pa;
> -	va = (unsigned long)area->addr;
> -
> -	ret = ioremap_page_range(va, va + size, pa, prot);
> -	if (!ret)
> -		return (void __iomem *)area->addr + offset;
> -
> -	vunmap_range(va, va + size);
> -	free_vm_area(area);
> -
> -	return NULL;
> -}
> diff --git a/arch/powerpc/mm/ioremap_32.c b/arch/powerpc/mm/ioremap_32.c
> index 9d13143b8be4..ca5bc6be3e6f 100644
> --- a/arch/powerpc/mm/ioremap_32.c
> +++ b/arch/powerpc/mm/ioremap_32.c
> @@ -21,6 +21,13 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *call
>  	phys_addr_t p, offset;
>  	int err;
>  
> +	/*
> +	 * If the address lies within the first 16 MB, assume it's in ISA
> +	 * memory space
> +	 */
> +	if (addr < SZ_16M)
> +		addr += _ISA_MEM_BASE;
> +
>  	/*
>  	 * Choose an address to map it to.
>  	 * Once the vmalloc system is running, we use it.
> @@ -31,13 +38,6 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *call
>  	offset = addr & ~PAGE_MASK;
>  	size = PAGE_ALIGN(addr + size) - p;
>  
> -	/*
> -	 * If the address lies within the first 16 MB, assume it's in ISA
> -	 * memory space
> -	 */
> -	if (p < 16 * 1024 * 1024)
> -		p += _ISA_MEM_BASE;
> -
>  #ifndef CONFIG_CRASH_DUMP
>  	/*
>  	 * Don't allow anybody to remap normal RAM that we're using.
> @@ -63,7 +63,7 @@ __ioremap_caller(phys_addr_t addr, unsigned long size, pgprot_t prot, void *call
>  		return (void __iomem *)v + offset;
>  
>  	if (slab_is_available())
> -		return do_ioremap(p, offset, size, prot, caller);
> +		return generic_ioremap_prot(addr, size, prot);
>  
>  	/*
>  	 * Should check if it is a candidate for a BAT mapping
> @@ -87,7 +87,6 @@ void iounmap(volatile void __iomem *addr)
>  	if (v_block_mapped((unsigned long)addr))
>  		return;
>  
> -	if (addr > high_memory && (unsigned long)addr < ioremap_bot)
> -		vunmap((void *)(PAGE_MASK & (unsigned long)addr));
> +	generic_iounmap(addr);
>  }
>  EXPORT_SYMBOL(iounmap);
> diff --git a/arch/powerpc/mm/ioremap_64.c b/arch/powerpc/mm/ioremap_64.c
> index 3acece00b33e..d24e5f166723 100644
> --- a/arch/powerpc/mm/ioremap_64.c
> +++ b/arch/powerpc/mm/ioremap_64.c
> @@ -29,7 +29,7 @@ void __iomem *__ioremap_caller(phys_addr_t addr, unsigned long size,
>  		return NULL;
>  
>  	if (slab_is_available())
> -		return do_ioremap(paligned, offset, size, prot, caller);
> +		return generic_ioremap_prot(addr, size, prot);
>  
>  	pr_warn("ioremap() called early from %pS. Use early_ioremap() instead\n", caller);
>  
> @@ -49,17 +49,9 @@ void __iomem *__ioremap_caller(phys_addr_t addr, unsigned long size,
>   */
>  void iounmap(volatile void __iomem *token)
>  {
> -	void *addr;
> -
>  	if (!slab_is_available())
>  		return;
>  
> -	addr = (void *)((unsigned long __force)PCI_FIX_ADDR(token) & PAGE_MASK);
> -
> -	if ((unsigned long)addr < ioremap_bot) {
> -		pr_warn("Attempt to iounmap early bolted mapping at 0x%p\n", addr);
> -		return;
> -	}
> -	vunmap(addr);
> +	generic_iounmap(PCI_FIX_ADDR(token));
>  }
>  EXPORT_SYMBOL(iounmap);
> -- 
> 2.34.1
> 
> 

-- 
Sincerely yours,
Mike.

  reply	other threads:[~2023-05-16  7:00 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-15  9:08 [PATCH v5 RESEND 00/17] mm: ioremap: Convert architectures to take GENERIC_IOREMAP way Baoquan He
2023-05-15  9:08 ` [PATCH v5 RESEND 01/17] asm-generic/iomap.h: remove ARCH_HAS_IOREMAP_xx macros Baoquan He
2023-05-15  9:08   ` Baoquan He
2023-05-16  6:15   ` Mike Rapoport
2023-05-16  6:15     ` Mike Rapoport
2023-05-16 12:54     ` Baoquan He
2023-05-16 12:54       ` Baoquan He
2023-05-16  7:07   ` Geert Uytterhoeven
2023-05-16  7:07     ` Geert Uytterhoeven
2023-05-17  6:27   ` Christoph Hellwig
2023-05-17  6:27     ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 02/17] hexagon: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-05-16  6:17   ` Mike Rapoport
2023-05-17  6:27   ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 03/17] openrisc: mm: remove unneeded early ioremap code Baoquan He
2023-05-16  6:17   ` Mike Rapoport
2023-05-16 13:03     ` Baoquan He
2023-05-17  6:28   ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 04/17] mm/ioremap: Define generic_ioremap_prot() and generic_iounmap() Baoquan He
2023-05-16  6:17   ` Mike Rapoport
2023-05-17  6:29   ` Christoph Hellwig
2023-05-18  3:38     ` Baoquan He
2023-05-18  1:56   ` Kefeng Wang
2023-05-15  9:08 ` [PATCH v5 RESEND 05/17] mm: ioremap: allow ARCH to have its own ioremap method definition Baoquan He
2023-05-16  6:48   ` Mike Rapoport
2023-05-17  6:30   ` Christoph Hellwig
2023-05-18  1:56   ` Kefeng Wang
2023-05-15  9:08 ` [PATCH v5 RESEND 06/17] mm/ioremap: add slab availability checking in ioremap_prot Baoquan He
2023-05-16  6:48   ` Mike Rapoport
2023-05-17  6:30   ` Christoph Hellwig
2023-05-18  3:43     ` Baoquan He
2023-05-18  1:57   ` Kefeng Wang
2023-05-15  9:08 ` [PATCH v5 RESEND 07/17] arc: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-05-15  9:08   ` Baoquan He
2023-05-16  6:49   ` Mike Rapoport
2023-05-16  6:49     ` Mike Rapoport
2023-05-17  6:31   ` Christoph Hellwig
2023-05-17  6:31     ` Christoph Hellwig
2023-05-18  3:43     ` Baoquan He
2023-05-18  3:43       ` Baoquan He
2023-05-30  9:25     ` Baoquan He
2023-05-30  9:25       ` Baoquan He
2023-06-01 11:14       ` Christoph Hellwig
2023-06-01 11:14         ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 08/17] ia64: " Baoquan He
2023-05-15  9:08   ` Baoquan He
2023-05-16  6:49   ` Mike Rapoport
2023-05-16  6:49     ` Mike Rapoport
2023-05-17  6:33   ` Christoph Hellwig
2023-05-17  6:33     ` Christoph Hellwig
2023-05-18  3:44     ` Baoquan He
2023-05-18  3:44       ` Baoquan He
2023-05-15  9:08 ` [PATCH v5 RESEND 09/17] openrisc: " Baoquan He
2023-05-16  6:49   ` Mike Rapoport
2023-05-16 13:05     ` Baoquan He
2023-05-15  9:08 ` [PATCH v5 RESEND 10/17] s390: " Baoquan He
2023-05-16  6:50   ` Mike Rapoport
2023-05-17  6:36   ` Christoph Hellwig
2023-05-17  7:58     ` Niklas Schnelle
2023-05-17  8:08       ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 11/17] sh: " Baoquan He
2023-05-17  6:37   ` Christoph Hellwig
2023-05-18  3:45     ` Baoquan He
2023-05-15  9:08 ` [PATCH v5 RESEND 12/17] xtensa: " Baoquan He
2023-05-16  6:51   ` Mike Rapoport
2023-05-17  6:38   ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 13/17] parisc: " Baoquan He
2023-05-16  6:52   ` Mike Rapoport
2023-05-16 13:07     ` Baoquan He
2023-05-17  6:38   ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 14/17] mm/ioremap: Consider IOREMAP space in generic ioremap Baoquan He
2023-05-16  6:53   ` Mike Rapoport
2023-05-17  6:41   ` Christoph Hellwig
2023-05-17  6:44     ` Christoph Hellwig
2023-05-20  3:31       ` Baoquan He
2023-05-20  5:04         ` Christoph Hellwig
2023-05-30  9:37       ` Baoquan He
2023-06-01 11:13         ` Christoph Hellwig
2023-06-02 10:42           ` Baoquan He
2023-06-02 15:05             ` Christoph Hellwig
2023-05-20  3:28     ` Baoquan He
2023-05-15  9:08 ` [PATCH v5 RESEND 15/17] powerpc: mm: Convert to GENERIC_IOREMAP Baoquan He
2023-05-15  9:08   ` Baoquan He
2023-05-16  7:00   ` Mike Rapoport [this message]
2023-05-16  7:00     ` Mike Rapoport
2023-05-17  6:42   ` Christoph Hellwig
2023-05-17  6:42     ` Christoph Hellwig
2023-05-15  9:08 ` [PATCH v5 RESEND 16/17] arm64 : mm: add wrapper function ioremap_prot() Baoquan He
2023-05-15  9:08   ` Baoquan He
2023-05-16  7:02   ` Mike Rapoport
2023-05-16  7:02     ` Mike Rapoport
2023-05-17  6:42   ` Christoph Hellwig
2023-05-17  6:42     ` Christoph Hellwig
2023-05-18  1:58   ` Kefeng Wang
2023-05-18  1:58     ` Kefeng Wang
2023-05-15  9:08 ` [PATCH v5 RESEND 17/17] mm: ioremap: remove unneeded ioremap_allowed and iounmap_allowed Baoquan He
2023-05-16  7:02   ` Mike Rapoport
2023-05-17  6:43   ` Christoph Hellwig
2023-05-18  1:58   ` Kefeng Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZGMp/dltHeJiRKBn@kernel.org \
    --to=rppt@kernel.org \
    --cc=David.Laight@aculab.com \
    --cc=agordeev@linux.ibm.com \
    --cc=arnd@arndb.de \
    --cc=bhe@redhat.com \
    --cc=christophe.leroy@csgroup.eu \
    --cc=deller@gmx.de \
    --cc=hch@infradead.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=schnelle@linux.ibm.com \
    --cc=shorne@gmail.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=willy@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.