From: Stafford Horne <shorne@gmail.com>
To: Baoquan He <bhe@redhat.com>
Cc: Jonas Bonn <jonas@southpole.se>,
wangkefeng.wang@huawei.com, linux-kernel@vger.kernel.org,
hch@infradead.org, linux-mm@kvack.org,
openrisc@lists.librecores.org, akpm@linux-foundation.org,
agordeev@linux.ibm.com, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v2 07/11] openrisc: mm: Convert to GENERIC_IOREMAP
Date: Mon, 29 Aug 2022 06:32:30 +0000 [thread overview]
Message-ID: <Ywxdfs4t1fB1EYec@oscomms1> (raw)
In-Reply-To: <20220820003125.353570-8-bhe@redhat.com>
On Sat, Aug 20, 2022 at 08:31:21AM +0800, Baoquan He wrote:
> Add hooks arch_ioremap() and arch_iounmap() for operisc's special
> operation when ioremap() and iounmap.
>
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: Jonas Bonn <jonas@southpole.se>
> Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
> Cc: Stafford Horne <shorne@gmail.com>
> Cc: openrisc@lists.librecores.org
> ---
> arch/openrisc/Kconfig | 1 +
> arch/openrisc/include/asm/io.h | 16 ++++++++---
> arch/openrisc/mm/ioremap.c | 51 +++++++++++-----------------------
> 3 files changed, 29 insertions(+), 39 deletions(-)
>
> diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
> index c7f282f60f64..fd9bb76a610b 100644
> --- a/arch/openrisc/Kconfig
> +++ b/arch/openrisc/Kconfig
> @@ -21,6 +21,7 @@ config OPENRISC
> select GENERIC_IRQ_PROBE
> select GENERIC_IRQ_SHOW
> select GENERIC_PCI_IOMAP
> + select GENERIC_IOREMAP
> select GENERIC_CPU_DEVICES
> select HAVE_PCI
> select HAVE_UID16
> diff --git a/arch/openrisc/include/asm/io.h b/arch/openrisc/include/asm/io.h
> index ee6043a03173..9db67938bfc4 100644
> --- a/arch/openrisc/include/asm/io.h
> +++ b/arch/openrisc/include/asm/io.h
> @@ -15,6 +15,8 @@
> #define __ASM_OPENRISC_IO_H
>
> #include <linux/types.h>
> +#include <asm/pgtable.h>
> +#include <asm/pgalloc.h>
This seems to cause a compilation issue when building virt_defconig:
CC kernel/irq/generic-chip.o
In file included from ./include/asm-generic/pgtable-nopud.h:7,
from ./include/asm-generic/pgtable-nopmd.h:7,
from ./arch/openrisc/include/asm/pgtable.h:24,
from ./arch/openrisc/include/asm/io.h:18,
from ./include/linux/io.h:13,
from kernel/irq/generic-chip.c:7:
./include/asm-generic/pgtable-nop4d.h:9:18: error: unknown type name 'pgd_t'
9 | typedef struct { pgd_t pgd; } p4d_t;
| ^~~~~
It works if we swap the order arround:
+#include <asm/pgalloc.h>
+#include <asm/pgtable.h>
Otherwise we need to add an asm/page.h include to asm/pgtable.h (which is more
correct) but means you would touch more files.
> /*
> * PCI: We do not use IO ports in OpenRISC
> @@ -27,11 +29,17 @@
> #define PIO_OFFSET 0
> #define PIO_MASK 0
>
> -#define ioremap ioremap
> -void __iomem *ioremap(phys_addr_t offset, unsigned long size);
> +/*
> + * I/O memory mapping functions.
> + */
> +void __iomem *
> +arch_ioremap(phys_addr_t *paddr, size_t size, unsigned long *prot_val);
> +#define arch_ioremap arch_ioremap
> +
> +int arch_iounmap(void __iomem *addr);
> +#define arch_iounmap arch_iounmap
>
> -#define iounmap iounmap
> -extern void iounmap(volatile void __iomem *addr);
> +#define _PAGE_IOREMAP (pgprot_val(PAGE_KERNEL) | _PAGE_CI)
>
> #include <asm-generic/io.h>
>
> diff --git a/arch/openrisc/mm/ioremap.c b/arch/openrisc/mm/ioremap.c
> index 8ec0dafecf25..bc41660e1fb0 100644
> --- a/arch/openrisc/mm/ioremap.c
> +++ b/arch/openrisc/mm/ioremap.c
> @@ -24,26 +24,18 @@ extern int mem_init_done;
>
> static unsigned int fixmaps_used __initdata;
>
> -/*
> - * Remap an arbitrary physical address space into the kernel virtual
> - * address space. Needed when the kernel wants to access high addresses
> - * directly.
> - *
> - * NOTE! We need to allow non-page-aligned mappings too: we will obviously
> - * have to convert them into an offset in a page-aligned mapping, but the
> - * caller shouldn't need to know that small detail.
> - */
> -void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
> +void __iomem *
> +arch_ioremap(phys_addr_t *paddr, size_t size, unsigned long *prot_val)
> {
> phys_addr_t p;
> unsigned long v;
> - unsigned long offset, last_addr;
> - struct vm_struct *area = NULL;
> + unsigned long offset, last_addr, addr = *paddr;
> + int ret = -EINVAL;
>
> /* Don't allow wraparound or zero size */
> last_addr = addr + size - 1;
> if (!size || last_addr < addr)
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
>
> /*
> * Mappings have to be page-aligned
> @@ -52,32 +44,24 @@ void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
> p = addr & PAGE_MASK;
> size = PAGE_ALIGN(last_addr + 1) - p;
>
> - if (likely(mem_init_done)) {
> - area = get_vm_area(size, VM_IOREMAP);
> - if (!area)
> - return NULL;
> - v = (unsigned long)area->addr;
> - } else {
> + if (unlikely(!mem_init_done)) {
> if ((fixmaps_used + (size >> PAGE_SHIFT)) > FIX_N_IOREMAPS)
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
> v = fix_to_virt(FIX_IOREMAP_BEGIN + fixmaps_used);
> fixmaps_used += (size >> PAGE_SHIFT);
> - }
>
> - if (ioremap_page_range(v, v + size, p,
> - __pgprot(pgprot_val(PAGE_KERNEL) | _PAGE_CI))) {
> - if (likely(mem_init_done))
> - vfree(area->addr);
> - else
> + if (ioremap_page_range(v, v + size, p, __pgprot(*prot_val))) {
> fixmaps_used -= (size >> PAGE_SHIFT);
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
> + }
> +
> + return (void __iomem *)(offset + (char *)v);
> }
>
> - return (void __iomem *)(offset + (char *)v);
> + return NULL;
> }
> -EXPORT_SYMBOL(ioremap);
>
> -void iounmap(volatile void __iomem *addr)
> +int arch_iounmap(void __iomem *addr)
> {
> /* If the page is from the fixmap pool then we just clear out
> * the fixmap mapping.
> @@ -97,13 +81,10 @@ void iounmap(volatile void __iomem *addr)
> * ii) invalid accesses to the freed areas aren't made
> */
> flush_tlb_all();
> - return;
> + return -EINVAL;
> }
> -
> - return vfree((void *)(PAGE_MASK & (unsigned long)addr));
> + return 0;
> }
> -EXPORT_SYMBOL(iounmap);
> -
> /**
> * OK, this one's a bit tricky... ioremap can get called before memory is
> * initialized (early serial console does this) and will want to alloc a page
> --
> 2.34.1
Other than that compiler issue, I fixed it and test booted this and it works
well.
Acked-by: Stafford Horne <shorne@gmail.com>
WARNING: multiple messages have this Message-ID (diff)
From: Stafford Horne <shorne@gmail.com>
To: Baoquan He <bhe@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
akpm@linux-foundation.org, hch@infradead.org,
agordeev@linux.ibm.com, wangkefeng.wang@huawei.com,
linux-arm-kernel@lists.infradead.org,
Jonas Bonn <jonas@southpole.se>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
openrisc@lists.librecores.org
Subject: Re: [PATCH v2 07/11] openrisc: mm: Convert to GENERIC_IOREMAP
Date: Mon, 29 Aug 2022 06:32:30 +0000 [thread overview]
Message-ID: <Ywxdfs4t1fB1EYec@oscomms1> (raw)
In-Reply-To: <20220820003125.353570-8-bhe@redhat.com>
On Sat, Aug 20, 2022 at 08:31:21AM +0800, Baoquan He wrote:
> Add hooks arch_ioremap() and arch_iounmap() for operisc's special
> operation when ioremap() and iounmap.
>
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: Jonas Bonn <jonas@southpole.se>
> Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
> Cc: Stafford Horne <shorne@gmail.com>
> Cc: openrisc@lists.librecores.org
> ---
> arch/openrisc/Kconfig | 1 +
> arch/openrisc/include/asm/io.h | 16 ++++++++---
> arch/openrisc/mm/ioremap.c | 51 +++++++++++-----------------------
> 3 files changed, 29 insertions(+), 39 deletions(-)
>
> diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
> index c7f282f60f64..fd9bb76a610b 100644
> --- a/arch/openrisc/Kconfig
> +++ b/arch/openrisc/Kconfig
> @@ -21,6 +21,7 @@ config OPENRISC
> select GENERIC_IRQ_PROBE
> select GENERIC_IRQ_SHOW
> select GENERIC_PCI_IOMAP
> + select GENERIC_IOREMAP
> select GENERIC_CPU_DEVICES
> select HAVE_PCI
> select HAVE_UID16
> diff --git a/arch/openrisc/include/asm/io.h b/arch/openrisc/include/asm/io.h
> index ee6043a03173..9db67938bfc4 100644
> --- a/arch/openrisc/include/asm/io.h
> +++ b/arch/openrisc/include/asm/io.h
> @@ -15,6 +15,8 @@
> #define __ASM_OPENRISC_IO_H
>
> #include <linux/types.h>
> +#include <asm/pgtable.h>
> +#include <asm/pgalloc.h>
This seems to cause a compilation issue when building virt_defconig:
CC kernel/irq/generic-chip.o
In file included from ./include/asm-generic/pgtable-nopud.h:7,
from ./include/asm-generic/pgtable-nopmd.h:7,
from ./arch/openrisc/include/asm/pgtable.h:24,
from ./arch/openrisc/include/asm/io.h:18,
from ./include/linux/io.h:13,
from kernel/irq/generic-chip.c:7:
./include/asm-generic/pgtable-nop4d.h:9:18: error: unknown type name 'pgd_t'
9 | typedef struct { pgd_t pgd; } p4d_t;
| ^~~~~
It works if we swap the order arround:
+#include <asm/pgalloc.h>
+#include <asm/pgtable.h>
Otherwise we need to add an asm/page.h include to asm/pgtable.h (which is more
correct) but means you would touch more files.
> /*
> * PCI: We do not use IO ports in OpenRISC
> @@ -27,11 +29,17 @@
> #define PIO_OFFSET 0
> #define PIO_MASK 0
>
> -#define ioremap ioremap
> -void __iomem *ioremap(phys_addr_t offset, unsigned long size);
> +/*
> + * I/O memory mapping functions.
> + */
> +void __iomem *
> +arch_ioremap(phys_addr_t *paddr, size_t size, unsigned long *prot_val);
> +#define arch_ioremap arch_ioremap
> +
> +int arch_iounmap(void __iomem *addr);
> +#define arch_iounmap arch_iounmap
>
> -#define iounmap iounmap
> -extern void iounmap(volatile void __iomem *addr);
> +#define _PAGE_IOREMAP (pgprot_val(PAGE_KERNEL) | _PAGE_CI)
>
> #include <asm-generic/io.h>
>
> diff --git a/arch/openrisc/mm/ioremap.c b/arch/openrisc/mm/ioremap.c
> index 8ec0dafecf25..bc41660e1fb0 100644
> --- a/arch/openrisc/mm/ioremap.c
> +++ b/arch/openrisc/mm/ioremap.c
> @@ -24,26 +24,18 @@ extern int mem_init_done;
>
> static unsigned int fixmaps_used __initdata;
>
> -/*
> - * Remap an arbitrary physical address space into the kernel virtual
> - * address space. Needed when the kernel wants to access high addresses
> - * directly.
> - *
> - * NOTE! We need to allow non-page-aligned mappings too: we will obviously
> - * have to convert them into an offset in a page-aligned mapping, but the
> - * caller shouldn't need to know that small detail.
> - */
> -void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
> +void __iomem *
> +arch_ioremap(phys_addr_t *paddr, size_t size, unsigned long *prot_val)
> {
> phys_addr_t p;
> unsigned long v;
> - unsigned long offset, last_addr;
> - struct vm_struct *area = NULL;
> + unsigned long offset, last_addr, addr = *paddr;
> + int ret = -EINVAL;
>
> /* Don't allow wraparound or zero size */
> last_addr = addr + size - 1;
> if (!size || last_addr < addr)
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
>
> /*
> * Mappings have to be page-aligned
> @@ -52,32 +44,24 @@ void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
> p = addr & PAGE_MASK;
> size = PAGE_ALIGN(last_addr + 1) - p;
>
> - if (likely(mem_init_done)) {
> - area = get_vm_area(size, VM_IOREMAP);
> - if (!area)
> - return NULL;
> - v = (unsigned long)area->addr;
> - } else {
> + if (unlikely(!mem_init_done)) {
> if ((fixmaps_used + (size >> PAGE_SHIFT)) > FIX_N_IOREMAPS)
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
> v = fix_to_virt(FIX_IOREMAP_BEGIN + fixmaps_used);
> fixmaps_used += (size >> PAGE_SHIFT);
> - }
>
> - if (ioremap_page_range(v, v + size, p,
> - __pgprot(pgprot_val(PAGE_KERNEL) | _PAGE_CI))) {
> - if (likely(mem_init_done))
> - vfree(area->addr);
> - else
> + if (ioremap_page_range(v, v + size, p, __pgprot(*prot_val))) {
> fixmaps_used -= (size >> PAGE_SHIFT);
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
> + }
> +
> + return (void __iomem *)(offset + (char *)v);
> }
>
> - return (void __iomem *)(offset + (char *)v);
> + return NULL;
> }
> -EXPORT_SYMBOL(ioremap);
>
> -void iounmap(volatile void __iomem *addr)
> +int arch_iounmap(void __iomem *addr)
> {
> /* If the page is from the fixmap pool then we just clear out
> * the fixmap mapping.
> @@ -97,13 +81,10 @@ void iounmap(volatile void __iomem *addr)
> * ii) invalid accesses to the freed areas aren't made
> */
> flush_tlb_all();
> - return;
> + return -EINVAL;
> }
> -
> - return vfree((void *)(PAGE_MASK & (unsigned long)addr));
> + return 0;
> }
> -EXPORT_SYMBOL(iounmap);
> -
> /**
> * OK, this one's a bit tricky... ioremap can get called before memory is
> * initialized (early serial console does this) and will want to alloc a page
> --
> 2.34.1
Other than that compiler issue, I fixed it and test booted this and it works
well.
Acked-by: Stafford Horne <shorne@gmail.com>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Stafford Horne <shorne@gmail.com>
To: Baoquan He <bhe@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
akpm@linux-foundation.org, hch@infradead.org,
agordeev@linux.ibm.com, wangkefeng.wang@huawei.com,
linux-arm-kernel@lists.infradead.org,
Jonas Bonn <jonas@southpole.se>,
Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
openrisc@lists.librecores.org
Subject: Re: [PATCH v2 07/11] openrisc: mm: Convert to GENERIC_IOREMAP
Date: Mon, 29 Aug 2022 06:32:30 +0000 [thread overview]
Message-ID: <Ywxdfs4t1fB1EYec@oscomms1> (raw)
In-Reply-To: <20220820003125.353570-8-bhe@redhat.com>
On Sat, Aug 20, 2022 at 08:31:21AM +0800, Baoquan He wrote:
> Add hooks arch_ioremap() and arch_iounmap() for operisc's special
> operation when ioremap() and iounmap.
>
> Signed-off-by: Baoquan He <bhe@redhat.com>
> Cc: Jonas Bonn <jonas@southpole.se>
> Cc: Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>
> Cc: Stafford Horne <shorne@gmail.com>
> Cc: openrisc@lists.librecores.org
> ---
> arch/openrisc/Kconfig | 1 +
> arch/openrisc/include/asm/io.h | 16 ++++++++---
> arch/openrisc/mm/ioremap.c | 51 +++++++++++-----------------------
> 3 files changed, 29 insertions(+), 39 deletions(-)
>
> diff --git a/arch/openrisc/Kconfig b/arch/openrisc/Kconfig
> index c7f282f60f64..fd9bb76a610b 100644
> --- a/arch/openrisc/Kconfig
> +++ b/arch/openrisc/Kconfig
> @@ -21,6 +21,7 @@ config OPENRISC
> select GENERIC_IRQ_PROBE
> select GENERIC_IRQ_SHOW
> select GENERIC_PCI_IOMAP
> + select GENERIC_IOREMAP
> select GENERIC_CPU_DEVICES
> select HAVE_PCI
> select HAVE_UID16
> diff --git a/arch/openrisc/include/asm/io.h b/arch/openrisc/include/asm/io.h
> index ee6043a03173..9db67938bfc4 100644
> --- a/arch/openrisc/include/asm/io.h
> +++ b/arch/openrisc/include/asm/io.h
> @@ -15,6 +15,8 @@
> #define __ASM_OPENRISC_IO_H
>
> #include <linux/types.h>
> +#include <asm/pgtable.h>
> +#include <asm/pgalloc.h>
This seems to cause a compilation issue when building virt_defconig:
CC kernel/irq/generic-chip.o
In file included from ./include/asm-generic/pgtable-nopud.h:7,
from ./include/asm-generic/pgtable-nopmd.h:7,
from ./arch/openrisc/include/asm/pgtable.h:24,
from ./arch/openrisc/include/asm/io.h:18,
from ./include/linux/io.h:13,
from kernel/irq/generic-chip.c:7:
./include/asm-generic/pgtable-nop4d.h:9:18: error: unknown type name 'pgd_t'
9 | typedef struct { pgd_t pgd; } p4d_t;
| ^~~~~
It works if we swap the order arround:
+#include <asm/pgalloc.h>
+#include <asm/pgtable.h>
Otherwise we need to add an asm/page.h include to asm/pgtable.h (which is more
correct) but means you would touch more files.
> /*
> * PCI: We do not use IO ports in OpenRISC
> @@ -27,11 +29,17 @@
> #define PIO_OFFSET 0
> #define PIO_MASK 0
>
> -#define ioremap ioremap
> -void __iomem *ioremap(phys_addr_t offset, unsigned long size);
> +/*
> + * I/O memory mapping functions.
> + */
> +void __iomem *
> +arch_ioremap(phys_addr_t *paddr, size_t size, unsigned long *prot_val);
> +#define arch_ioremap arch_ioremap
> +
> +int arch_iounmap(void __iomem *addr);
> +#define arch_iounmap arch_iounmap
>
> -#define iounmap iounmap
> -extern void iounmap(volatile void __iomem *addr);
> +#define _PAGE_IOREMAP (pgprot_val(PAGE_KERNEL) | _PAGE_CI)
>
> #include <asm-generic/io.h>
>
> diff --git a/arch/openrisc/mm/ioremap.c b/arch/openrisc/mm/ioremap.c
> index 8ec0dafecf25..bc41660e1fb0 100644
> --- a/arch/openrisc/mm/ioremap.c
> +++ b/arch/openrisc/mm/ioremap.c
> @@ -24,26 +24,18 @@ extern int mem_init_done;
>
> static unsigned int fixmaps_used __initdata;
>
> -/*
> - * Remap an arbitrary physical address space into the kernel virtual
> - * address space. Needed when the kernel wants to access high addresses
> - * directly.
> - *
> - * NOTE! We need to allow non-page-aligned mappings too: we will obviously
> - * have to convert them into an offset in a page-aligned mapping, but the
> - * caller shouldn't need to know that small detail.
> - */
> -void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
> +void __iomem *
> +arch_ioremap(phys_addr_t *paddr, size_t size, unsigned long *prot_val)
> {
> phys_addr_t p;
> unsigned long v;
> - unsigned long offset, last_addr;
> - struct vm_struct *area = NULL;
> + unsigned long offset, last_addr, addr = *paddr;
> + int ret = -EINVAL;
>
> /* Don't allow wraparound or zero size */
> last_addr = addr + size - 1;
> if (!size || last_addr < addr)
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
>
> /*
> * Mappings have to be page-aligned
> @@ -52,32 +44,24 @@ void __iomem *__ref ioremap(phys_addr_t addr, unsigned long size)
> p = addr & PAGE_MASK;
> size = PAGE_ALIGN(last_addr + 1) - p;
>
> - if (likely(mem_init_done)) {
> - area = get_vm_area(size, VM_IOREMAP);
> - if (!area)
> - return NULL;
> - v = (unsigned long)area->addr;
> - } else {
> + if (unlikely(!mem_init_done)) {
> if ((fixmaps_used + (size >> PAGE_SHIFT)) > FIX_N_IOREMAPS)
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
> v = fix_to_virt(FIX_IOREMAP_BEGIN + fixmaps_used);
> fixmaps_used += (size >> PAGE_SHIFT);
> - }
>
> - if (ioremap_page_range(v, v + size, p,
> - __pgprot(pgprot_val(PAGE_KERNEL) | _PAGE_CI))) {
> - if (likely(mem_init_done))
> - vfree(area->addr);
> - else
> + if (ioremap_page_range(v, v + size, p, __pgprot(*prot_val))) {
> fixmaps_used -= (size >> PAGE_SHIFT);
> - return NULL;
> + return IOMEM_ERR_PTR(ret);
> + }
> +
> + return (void __iomem *)(offset + (char *)v);
> }
>
> - return (void __iomem *)(offset + (char *)v);
> + return NULL;
> }
> -EXPORT_SYMBOL(ioremap);
>
> -void iounmap(volatile void __iomem *addr)
> +int arch_iounmap(void __iomem *addr)
> {
> /* If the page is from the fixmap pool then we just clear out
> * the fixmap mapping.
> @@ -97,13 +81,10 @@ void iounmap(volatile void __iomem *addr)
> * ii) invalid accesses to the freed areas aren't made
> */
> flush_tlb_all();
> - return;
> + return -EINVAL;
> }
> -
> - return vfree((void *)(PAGE_MASK & (unsigned long)addr));
> + return 0;
> }
> -EXPORT_SYMBOL(iounmap);
> -
> /**
> * OK, this one's a bit tricky... ioremap can get called before memory is
> * initialized (early serial console does this) and will want to alloc a page
> --
> 2.34.1
Other than that compiler issue, I fixed it and test booted this and it works
well.
Acked-by: Stafford Horne <shorne@gmail.com>
next prev parent reply other threads:[~2022-08-29 6:32 UTC|newest]
Thread overview: 155+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-20 0:31 [PATCH v2 00/11] mm: ioremap: Convert architectures to take GENERIC_IOREMAP way Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 01/11] mm/ioremap: change the return value of io[re|un]map_allowed and rename Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-21 6:53 ` Christoph Hellwig
2022-08-21 6:53 ` Christoph Hellwig
2022-08-22 23:55 ` Baoquan He
2022-08-22 23:55 ` Baoquan He
2022-08-22 6:25 ` Christophe Leroy
2022-08-22 6:25 ` Christophe Leroy
2022-08-23 0:20 ` Baoquan He
2022-08-23 0:20 ` Baoquan He
2022-08-23 5:24 ` Christophe Leroy
2022-08-23 5:24 ` Christophe Leroy
2022-08-23 15:14 ` Baoquan He
2022-08-23 15:14 ` Baoquan He
2022-08-23 15:26 ` Christophe Leroy
2022-08-23 15:26 ` Christophe Leroy
2022-08-24 8:16 ` David Laight
2022-08-24 8:16 ` David Laight
2022-08-28 14:44 ` Baoquan He
2022-08-28 14:44 ` Baoquan He
2022-08-28 8:36 ` Alexander Gordeev
2022-08-28 8:36 ` Alexander Gordeev
2022-08-28 9:55 ` Baoquan He
2022-08-28 9:55 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 02/11] mm: ioremap: fixup the physical address and page prot Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-21 6:54 ` Christoph Hellwig
2022-08-21 6:54 ` Christoph Hellwig
2022-08-23 1:13 ` Baoquan He
2022-08-23 1:13 ` Baoquan He
2022-08-22 6:30 ` Christophe Leroy
2022-08-22 6:30 ` Christophe Leroy
2022-08-23 1:19 ` Baoquan He
2022-08-23 1:19 ` Baoquan He
2022-08-23 5:33 ` Christophe Leroy
2022-08-23 5:33 ` Christophe Leroy
2022-08-23 12:32 ` Baoquan He
2022-08-23 12:32 ` Baoquan He
2022-08-23 19:03 ` Christophe Leroy
2022-08-23 19:03 ` Christophe Leroy
2022-08-28 11:10 ` Baoquan He
2022-08-28 11:10 ` Baoquan He
2022-09-12 2:55 ` Baoquan He
2022-09-12 2:55 ` Baoquan He
2022-09-12 7:10 ` Christophe Leroy
2022-09-12 7:10 ` Christophe Leroy
2022-09-13 15:11 ` Baoquan He
2022-09-13 15:11 ` Baoquan He
2022-09-21 16:40 ` Christophe Leroy
2022-09-21 16:40 ` Christophe Leroy
2022-09-22 13:23 ` Baoquan He
2022-09-22 13:23 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 03/11] mm: ioremap: allow ARCH to have its own ioremap definition Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-21 6:57 ` Christoph Hellwig
2022-08-21 6:57 ` Christoph Hellwig
2022-08-23 2:42 ` Baoquan He
2022-08-23 2:42 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 04/11] arc: mm: Convert to GENERIC_IOREMAP Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 05/11] hexagon: " Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 1:23 ` Brian Cain
2022-08-20 1:23 ` Brian Cain
2022-08-21 7:00 ` Christoph Hellwig
2022-08-21 7:00 ` Christoph Hellwig
2022-08-28 15:08 ` Baoquan He
2022-08-28 15:08 ` Baoquan He
2022-08-22 6:38 ` Christophe Leroy
2022-08-22 6:38 ` Christophe Leroy
2022-08-28 15:12 ` Baoquan He
2022-08-28 15:12 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 06/11] ia64: " Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-21 6:58 ` Christoph Hellwig
2022-08-21 7:02 ` Christoph Hellwig
2022-08-21 7:02 ` Christoph Hellwig
2022-08-28 15:12 ` Baoquan He
2022-08-28 15:12 ` Baoquan He
2022-08-28 15:12 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 07/11] openrisc: " Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-21 7:03 ` Christoph Hellwig
2022-08-21 7:03 ` Christoph Hellwig
2022-08-21 7:03 ` Christoph Hellwig
2022-08-29 1:40 ` Baoquan He
2022-08-29 1:40 ` Baoquan He
2022-08-29 1:40 ` Baoquan He
2022-08-29 6:42 ` Stafford Horne
2022-08-29 6:42 ` Stafford Horne
2022-08-29 6:42 ` Stafford Horne
2022-08-29 8:18 ` Baoquan He
2022-08-29 8:18 ` Baoquan He
2022-08-29 8:18 ` Baoquan He
2022-08-30 6:05 ` Christophe Leroy
2022-08-30 6:05 ` Christophe Leroy
2022-08-30 6:05 ` Christophe Leroy
2022-08-29 6:32 ` Stafford Horne [this message]
2022-08-29 6:32 ` Stafford Horne
2022-08-29 6:32 ` Stafford Horne
2022-08-29 8:19 ` Baoquan He
2022-08-29 8:19 ` Baoquan He
2022-08-29 8:19 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 08/11] parisc: " Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 4:03 ` kernel test robot
2022-08-20 4:03 ` kernel test robot
2022-08-21 10:26 ` Baoquan He
2022-08-21 10:26 ` Baoquan He
2022-08-21 14:18 ` Helge Deller
2022-08-21 14:18 ` Helge Deller
2022-08-30 13:00 ` Baoquan He
2022-08-30 13:00 ` Baoquan He
2022-08-30 13:00 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 09/11] s390: " Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-21 7:05 ` Christoph Hellwig
2022-08-21 7:05 ` Christoph Hellwig
2022-08-22 15:08 ` Niklas Schnelle
2022-08-22 15:08 ` Niklas Schnelle
2022-08-31 8:59 ` Baoquan He
2022-08-31 8:59 ` Baoquan He
2022-08-22 15:19 ` Niklas Schnelle
2022-08-22 15:19 ` Niklas Schnelle
2022-08-31 8:58 ` Baoquan He
2022-08-31 8:58 ` Baoquan He
2022-08-23 12:30 ` Niklas Schnelle
2022-08-23 12:30 ` Niklas Schnelle
2022-08-31 8:50 ` Baoquan He
2022-08-31 8:50 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 10/11] sh: " Baoquan He
2022-08-20 0:31 ` Baoquan He
2022-08-20 3:41 ` kernel test robot
2022-09-01 10:39 ` Baoquan He
2022-09-01 10:39 ` Baoquan He
2022-09-01 10:39 ` Baoquan He
2022-09-01 12:11 ` [kbuild-all] " Chen, Rong A
2022-09-01 12:11 ` Chen, Rong A
2022-09-01 12:31 ` Baoquan He
2022-09-01 12:31 ` Baoquan He
2022-09-01 12:31 ` [kbuild-all] " Baoquan He
2022-09-02 9:48 ` Baoquan He
2022-09-02 9:48 ` Baoquan He
2022-09-02 9:48 ` Baoquan He
2022-08-21 7:06 ` Christoph Hellwig
2022-08-21 7:06 ` Christoph Hellwig
2022-09-01 7:36 ` Baoquan He
2022-09-01 7:36 ` Baoquan He
2022-08-20 0:31 ` [PATCH v2 11/11] xtensa: " Baoquan He
2022-08-20 0:31 ` Baoquan He
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=Ywxdfs4t1fB1EYec@oscomms1 \
--to=shorne@gmail.com \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=bhe@redhat.com \
--cc=hch@infradead.org \
--cc=jonas@southpole.se \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=openrisc@lists.librecores.org \
--cc=wangkefeng.wang@huawei.com \
/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.