All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Abdurachmanov <david.abdurachmanov@gmail.com>
To: Palmer Dabbelt <palmerdabbelt@google.com>
Cc: Atish Patra <Atish.Patra@wdc.com>,
	"linux-kernel@vger.kernel.org List"
	<linux-kernel@vger.kernel.org>, Albert Ou <aou@eecs.berkeley.edu>,
	nickhu@andestech.com, Bjorn Topel <bjorn.topel@gmail.com>,
	Anup Patel <Anup.Patel@wdc.com>,
	stable@vger.kernel.org, Mike Rapoport <rppt@linux.ibm.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Greentime Hu <greentime.hu@sifive.com>,
	akpm@linux-foundation.org,
	linux-riscv <linux-riscv@lists.infradead.org>
Subject: Re: [PATCH] RISC-V: Move all address space definition macros to one place
Date: Mon, 23 Mar 2020 12:31:58 +0200	[thread overview]
Message-ID: <CAEn-LTokKZXgoNgDi2e5XW2WgL5O+e5UVs7wX2ndqecCdPnN4g@mail.gmail.com> (raw)
In-Reply-To: <CAEn-LTo=GP5OMZiaBi8BL1etLcGrCyofQrtQ4-JOo5zcpCLu8A@mail.gmail.com>

On Sat, Mar 21, 2020 at 10:29 PM David Abdurachmanov
<david.abdurachmanov@gmail.com> wrote:
>
> On Fri, Mar 6, 2020 at 2:20 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >
> > On Mon, 24 Feb 2020 11:34:36 PST (-0800), Atish Patra wrote:
> > > If both CONFIG_KASAN and CONFIG_SPARSEMEM_VMEMMAP are set, we get the
> > > following compilation error.
> > >
> > > ---------------------------------------------------------------
> > > ./arch/riscv/include/asm/pgtable-64.h: In function ‘pud_page’:
> > > ./include/asm-generic/memory_model.h:54:29: error: ‘vmemmap’ undeclared
> > > (first use in this function); did you mean ‘mem_map’?
> > >  #define __pfn_to_page(pfn) (vmemmap + (pfn))
> > >                              ^~~~~~~
> > > ./include/asm-generic/memory_model.h:82:21: note: in expansion of
> > > macro ‘__pfn_to_page’
> > >
> > >  #define pfn_to_page __pfn_to_page
> > >                      ^~~~~~~~~~~~~
> > > ./arch/riscv/include/asm/pgtable-64.h:70:9: note: in expansion of macro
> > > ‘pfn_to_page’
> > >   return pfn_to_page(pud_val(pud) >> _PAGE_PFN_SHIFT);
> > > ---------------------------------------------------------------
> > >
> > > Fix the compliation errors by moving all the address space definition
> > > macros before including pgtable-64.h.
> > >
> > > Cc: stable@vger.kernel.org
> > > Fixes: 8ad8b72721d0 (riscv: Add KASAN support)
> > >
> > > Signed-off-by: Atish Patra <atish.patra@wdc.com>
> > > ---
> > >  arch/riscv/include/asm/pgtable.h | 78 +++++++++++++++++---------------
> > >  1 file changed, 41 insertions(+), 37 deletions(-)
> > >
> > > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
> > > index 453afb0a570a..4f6ee48a42e8 100644
> > > --- a/arch/riscv/include/asm/pgtable.h
> > > +++ b/arch/riscv/include/asm/pgtable.h
> > > @@ -19,6 +19,47 @@
> > >  #include <asm/tlbflush.h>
> > >  #include <linux/mm_types.h>
> > >
> > > +#ifdef CONFIG_MMU
> > > +
> > > +#define VMALLOC_SIZE     (KERN_VIRT_SIZE >> 1)
> > > +#define VMALLOC_END      (PAGE_OFFSET - 1)
> > > +#define VMALLOC_START    (PAGE_OFFSET - VMALLOC_SIZE)
> > > +
> > > +#define BPF_JIT_REGION_SIZE  (SZ_128M)
> > > +#define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE)
> > > +#define BPF_JIT_REGION_END   (VMALLOC_END)
> > > +
> > > +/*
> > > + * Roughly size the vmemmap space to be large enough to fit enough
> > > + * struct pages to map half the virtual address space. Then
> > > + * position vmemmap directly below the VMALLOC region.
> > > + */
> > > +#define VMEMMAP_SHIFT \
> > > +     (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)
> > > +#define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT)
> > > +#define VMEMMAP_END  (VMALLOC_START - 1)
> > > +#define VMEMMAP_START        (VMALLOC_START - VMEMMAP_SIZE)
> > > +
> > > +/*
> > > + * Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel
> > > + * is configured with CONFIG_SPARSEMEM_VMEMMAP enabled.
> > > + */
> > > +#define vmemmap              ((struct page *)VMEMMAP_START)
> > > +
> > > +#define PCI_IO_SIZE      SZ_16M
> > > +#define PCI_IO_END       VMEMMAP_START
> > > +#define PCI_IO_START     (PCI_IO_END - PCI_IO_SIZE)
> > > +
> > > +#define FIXADDR_TOP      PCI_IO_START
> > > +#ifdef CONFIG_64BIT
> > > +#define FIXADDR_SIZE     PMD_SIZE
> > > +#else
> > > +#define FIXADDR_SIZE     PGDIR_SIZE
> > > +#endif
> > > +#define FIXADDR_START    (FIXADDR_TOP - FIXADDR_SIZE)
> > > +
> > > +#endif
> > > +
> > >  #ifdef CONFIG_64BIT
> > >  #include <asm/pgtable-64.h>
> > >  #else
> > > @@ -90,31 +131,6 @@ extern pgd_t swapper_pg_dir[];
> > >  #define __S110       PAGE_SHARED_EXEC
> > >  #define __S111       PAGE_SHARED_EXEC
> > >
> > > -#define VMALLOC_SIZE     (KERN_VIRT_SIZE >> 1)
> > > -#define VMALLOC_END      (PAGE_OFFSET - 1)
> > > -#define VMALLOC_START    (PAGE_OFFSET - VMALLOC_SIZE)
> > > -
> > > -#define BPF_JIT_REGION_SIZE  (SZ_128M)
> > > -#define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE)
> > > -#define BPF_JIT_REGION_END   (VMALLOC_END)
> > > -
> > > -/*
> > > - * Roughly size the vmemmap space to be large enough to fit enough
> > > - * struct pages to map half the virtual address space. Then
> > > - * position vmemmap directly below the VMALLOC region.
> > > - */
> > > -#define VMEMMAP_SHIFT \
> > > -     (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)
> > > -#define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT)
> > > -#define VMEMMAP_END  (VMALLOC_START - 1)
> > > -#define VMEMMAP_START        (VMALLOC_START - VMEMMAP_SIZE)
> > > -
> > > -/*
> > > - * Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel
> > > - * is configured with CONFIG_SPARSEMEM_VMEMMAP enabled.
> > > - */
> > > -#define vmemmap              ((struct page *)VMEMMAP_START)
> > > -
> > >  static inline int pmd_present(pmd_t pmd)
> > >  {
> > >       return (pmd_val(pmd) & (_PAGE_PRESENT | _PAGE_PROT_NONE));
> > > @@ -452,18 +468,6 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
> > >  #define __pte_to_swp_entry(pte)      ((swp_entry_t) { pte_val(pte) })
> > >  #define __swp_entry_to_pte(x)        ((pte_t) { (x).val })
> > >
> > > -#define PCI_IO_SIZE      SZ_16M
> > > -#define PCI_IO_END       VMEMMAP_START
> > > -#define PCI_IO_START     (PCI_IO_END - PCI_IO_SIZE)
> > > -
> > > -#define FIXADDR_TOP      PCI_IO_START
> > > -#ifdef CONFIG_64BIT
> > > -#define FIXADDR_SIZE     PMD_SIZE
> > > -#else
> > > -#define FIXADDR_SIZE     PGDIR_SIZE
> > > -#endif
> > > -#define FIXADDR_START    (FIXADDR_TOP - FIXADDR_SIZE)
> > > -
> > >  /*
> > >   * Task size is 0x4000000000 for RV64 or 0x9fc00000 for RV32.
> > >   * Note that PGDIR_SIZE must evenly divide TASK_SIZE.
> >
> > While this isn't technically a fix, I'm inclined to target it for the RCs just
> > to avoid conflicts.  I've put it on for-next now so the builders have some time
> > to chew on things, as I don't want to put in a non-fix too quickly.
>
> I hit the same issue in Fedora/RISCV while building kernel-5.6.0-0.rc6, and
> we don't have KASAN selected. We do have CONFIG_SPARSEMEM_VMEMMAP
> selected.
>
> I will try this patch tomorrow.
>
Confirmed to solve my build errors with kernel in Fedora/RISCV.

david

WARNING: multiple messages have this Message-ID (diff)
From: David Abdurachmanov <david.abdurachmanov@gmail.com>
To: Palmer Dabbelt <palmerdabbelt@google.com>
Cc: Albert Ou <aou@eecs.berkeley.edu>,
	nickhu@andestech.com, Bjorn Topel <bjorn.topel@gmail.com>,
	Anup Patel <Anup.Patel@wdc.com>,
	"linux-kernel@vger.kernel.org List"
	<linux-kernel@vger.kernel.org>,
	stable@vger.kernel.org, Mike Rapoport <rppt@linux.ibm.com>,
	Atish Patra <Atish.Patra@wdc.com>,
	linux-riscv <linux-riscv@lists.infradead.org>,
	Paul Walmsley <paul.walmsley@sifive.com>,
	Greentime Hu <greentime.hu@sifive.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	akpm@linux-foundation.org
Subject: Re: [PATCH] RISC-V: Move all address space definition macros to one place
Date: Mon, 23 Mar 2020 12:31:58 +0200	[thread overview]
Message-ID: <CAEn-LTokKZXgoNgDi2e5XW2WgL5O+e5UVs7wX2ndqecCdPnN4g@mail.gmail.com> (raw)
In-Reply-To: <CAEn-LTo=GP5OMZiaBi8BL1etLcGrCyofQrtQ4-JOo5zcpCLu8A@mail.gmail.com>

On Sat, Mar 21, 2020 at 10:29 PM David Abdurachmanov
<david.abdurachmanov@gmail.com> wrote:
>
> On Fri, Mar 6, 2020 at 2:20 AM Palmer Dabbelt <palmerdabbelt@google.com> wrote:
> >
> > On Mon, 24 Feb 2020 11:34:36 PST (-0800), Atish Patra wrote:
> > > If both CONFIG_KASAN and CONFIG_SPARSEMEM_VMEMMAP are set, we get the
> > > following compilation error.
> > >
> > > ---------------------------------------------------------------
> > > ./arch/riscv/include/asm/pgtable-64.h: In function ‘pud_page’:
> > > ./include/asm-generic/memory_model.h:54:29: error: ‘vmemmap’ undeclared
> > > (first use in this function); did you mean ‘mem_map’?
> > >  #define __pfn_to_page(pfn) (vmemmap + (pfn))
> > >                              ^~~~~~~
> > > ./include/asm-generic/memory_model.h:82:21: note: in expansion of
> > > macro ‘__pfn_to_page’
> > >
> > >  #define pfn_to_page __pfn_to_page
> > >                      ^~~~~~~~~~~~~
> > > ./arch/riscv/include/asm/pgtable-64.h:70:9: note: in expansion of macro
> > > ‘pfn_to_page’
> > >   return pfn_to_page(pud_val(pud) >> _PAGE_PFN_SHIFT);
> > > ---------------------------------------------------------------
> > >
> > > Fix the compliation errors by moving all the address space definition
> > > macros before including pgtable-64.h.
> > >
> > > Cc: stable@vger.kernel.org
> > > Fixes: 8ad8b72721d0 (riscv: Add KASAN support)
> > >
> > > Signed-off-by: Atish Patra <atish.patra@wdc.com>
> > > ---
> > >  arch/riscv/include/asm/pgtable.h | 78 +++++++++++++++++---------------
> > >  1 file changed, 41 insertions(+), 37 deletions(-)
> > >
> > > diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
> > > index 453afb0a570a..4f6ee48a42e8 100644
> > > --- a/arch/riscv/include/asm/pgtable.h
> > > +++ b/arch/riscv/include/asm/pgtable.h
> > > @@ -19,6 +19,47 @@
> > >  #include <asm/tlbflush.h>
> > >  #include <linux/mm_types.h>
> > >
> > > +#ifdef CONFIG_MMU
> > > +
> > > +#define VMALLOC_SIZE     (KERN_VIRT_SIZE >> 1)
> > > +#define VMALLOC_END      (PAGE_OFFSET - 1)
> > > +#define VMALLOC_START    (PAGE_OFFSET - VMALLOC_SIZE)
> > > +
> > > +#define BPF_JIT_REGION_SIZE  (SZ_128M)
> > > +#define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE)
> > > +#define BPF_JIT_REGION_END   (VMALLOC_END)
> > > +
> > > +/*
> > > + * Roughly size the vmemmap space to be large enough to fit enough
> > > + * struct pages to map half the virtual address space. Then
> > > + * position vmemmap directly below the VMALLOC region.
> > > + */
> > > +#define VMEMMAP_SHIFT \
> > > +     (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)
> > > +#define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT)
> > > +#define VMEMMAP_END  (VMALLOC_START - 1)
> > > +#define VMEMMAP_START        (VMALLOC_START - VMEMMAP_SIZE)
> > > +
> > > +/*
> > > + * Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel
> > > + * is configured with CONFIG_SPARSEMEM_VMEMMAP enabled.
> > > + */
> > > +#define vmemmap              ((struct page *)VMEMMAP_START)
> > > +
> > > +#define PCI_IO_SIZE      SZ_16M
> > > +#define PCI_IO_END       VMEMMAP_START
> > > +#define PCI_IO_START     (PCI_IO_END - PCI_IO_SIZE)
> > > +
> > > +#define FIXADDR_TOP      PCI_IO_START
> > > +#ifdef CONFIG_64BIT
> > > +#define FIXADDR_SIZE     PMD_SIZE
> > > +#else
> > > +#define FIXADDR_SIZE     PGDIR_SIZE
> > > +#endif
> > > +#define FIXADDR_START    (FIXADDR_TOP - FIXADDR_SIZE)
> > > +
> > > +#endif
> > > +
> > >  #ifdef CONFIG_64BIT
> > >  #include <asm/pgtable-64.h>
> > >  #else
> > > @@ -90,31 +131,6 @@ extern pgd_t swapper_pg_dir[];
> > >  #define __S110       PAGE_SHARED_EXEC
> > >  #define __S111       PAGE_SHARED_EXEC
> > >
> > > -#define VMALLOC_SIZE     (KERN_VIRT_SIZE >> 1)
> > > -#define VMALLOC_END      (PAGE_OFFSET - 1)
> > > -#define VMALLOC_START    (PAGE_OFFSET - VMALLOC_SIZE)
> > > -
> > > -#define BPF_JIT_REGION_SIZE  (SZ_128M)
> > > -#define BPF_JIT_REGION_START (PAGE_OFFSET - BPF_JIT_REGION_SIZE)
> > > -#define BPF_JIT_REGION_END   (VMALLOC_END)
> > > -
> > > -/*
> > > - * Roughly size the vmemmap space to be large enough to fit enough
> > > - * struct pages to map half the virtual address space. Then
> > > - * position vmemmap directly below the VMALLOC region.
> > > - */
> > > -#define VMEMMAP_SHIFT \
> > > -     (CONFIG_VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)
> > > -#define VMEMMAP_SIZE BIT(VMEMMAP_SHIFT)
> > > -#define VMEMMAP_END  (VMALLOC_START - 1)
> > > -#define VMEMMAP_START        (VMALLOC_START - VMEMMAP_SIZE)
> > > -
> > > -/*
> > > - * Define vmemmap for pfn_to_page & page_to_pfn calls. Needed if kernel
> > > - * is configured with CONFIG_SPARSEMEM_VMEMMAP enabled.
> > > - */
> > > -#define vmemmap              ((struct page *)VMEMMAP_START)
> > > -
> > >  static inline int pmd_present(pmd_t pmd)
> > >  {
> > >       return (pmd_val(pmd) & (_PAGE_PRESENT | _PAGE_PROT_NONE));
> > > @@ -452,18 +468,6 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
> > >  #define __pte_to_swp_entry(pte)      ((swp_entry_t) { pte_val(pte) })
> > >  #define __swp_entry_to_pte(x)        ((pte_t) { (x).val })
> > >
> > > -#define PCI_IO_SIZE      SZ_16M
> > > -#define PCI_IO_END       VMEMMAP_START
> > > -#define PCI_IO_START     (PCI_IO_END - PCI_IO_SIZE)
> > > -
> > > -#define FIXADDR_TOP      PCI_IO_START
> > > -#ifdef CONFIG_64BIT
> > > -#define FIXADDR_SIZE     PMD_SIZE
> > > -#else
> > > -#define FIXADDR_SIZE     PGDIR_SIZE
> > > -#endif
> > > -#define FIXADDR_START    (FIXADDR_TOP - FIXADDR_SIZE)
> > > -
> > >  /*
> > >   * Task size is 0x4000000000 for RV64 or 0x9fc00000 for RV32.
> > >   * Note that PGDIR_SIZE must evenly divide TASK_SIZE.
> >
> > While this isn't technically a fix, I'm inclined to target it for the RCs just
> > to avoid conflicts.  I've put it on for-next now so the builders have some time
> > to chew on things, as I don't want to put in a non-fix too quickly.
>
> I hit the same issue in Fedora/RISCV while building kernel-5.6.0-0.rc6, and
> we don't have KASAN selected. We do have CONFIG_SPARSEMEM_VMEMMAP
> selected.
>
> I will try this patch tomorrow.
>
Confirmed to solve my build errors with kernel in Fedora/RISCV.

david


  reply	other threads:[~2020-03-23 10:32 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-24 19:34 [PATCH] RISC-V: Move all address space definition macros to one place Atish Patra
2020-02-24 19:34 ` Atish Patra
2020-02-28  4:08 ` Anup Patel
2020-02-28  4:08   ` Anup Patel
2020-02-28 18:23   ` Atish Patra
2020-02-28 18:23     ` Atish Patra
2020-03-06  0:20 ` Palmer Dabbelt
2020-03-06  0:20   ` Palmer Dabbelt
2020-03-21 20:29   ` David Abdurachmanov
2020-03-21 20:29     ` David Abdurachmanov
2020-03-23 10:31     ` David Abdurachmanov [this message]
2020-03-23 10:31       ` David Abdurachmanov
2020-03-26 21:43       ` Atish Patra
2020-03-26 21:43         ` Atish Patra
  -- strict thread matches above, loose matches on Subject: below --
2020-02-24 18:43 Atish Patra

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=CAEn-LTokKZXgoNgDi2e5XW2WgL5O+e5UVs7wX2ndqecCdPnN4g@mail.gmail.com \
    --to=david.abdurachmanov@gmail.com \
    --cc=Anup.Patel@wdc.com \
    --cc=Atish.Patra@wdc.com \
    --cc=akpm@linux-foundation.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=bjorn.topel@gmail.com \
    --cc=greentime.hu@sifive.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=nickhu@andestech.com \
    --cc=palmerdabbelt@google.com \
    --cc=paul.walmsley@sifive.com \
    --cc=rppt@linux.ibm.com \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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.