mbox series

[v4,00/11] hugetlb: Factorize hugetlb architecture primitives

Message ID 20180705110716.3919-1-alex@ghiti.fr
Headers show
Series hugetlb: Factorize hugetlb architecture primitives | expand

Message

Alexandre Ghiti July 5, 2018, 11:07 a.m. UTC
In order to reduce copy/paste of functions across architectures and then
make riscv hugetlb port (and future ports) simpler and smaller, this
patchset intends to factorize the numerous hugetlb primitives that are
defined across all the architectures.

Except for prepare_hugepage_range, this patchset moves the versions that
are just pass-through to standard pte primitives into
asm-generic/hugetlb.h by using the same #ifdef semantic that can be
found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.

s390 architecture has not been tackled in this serie since it does not
use asm-generic/hugetlb.h at all.
powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).

This patchset has been compiled on x86 only. 

Changelog:

v4:
  Fix powerpc build error due to misplacing of #include
  <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
  pointed by Christophe Leroy.

v1, v2, v3:
  Same version, just problems with email provider and misuse of
  --batch-size option of git send-email

Alexandre Ghiti (11):
  hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
  hugetlb: Introduce generic version of hugetlb_free_pgd_range
  hugetlb: Introduce generic version of set_huge_pte_at
  hugetlb: Introduce generic version of huge_ptep_get_and_clear
  hugetlb: Introduce generic version of huge_ptep_clear_flush
  hugetlb: Introduce generic version of huge_pte_none
  hugetlb: Introduce generic version of huge_pte_wrprotect
  hugetlb: Introduce generic version of prepare_hugepage_range
  hugetlb: Introduce generic version of huge_ptep_set_wrprotect
  hugetlb: Introduce generic version of huge_ptep_set_access_flags
  hugetlb: Introduce generic version of huge_ptep_get

 arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
 arch/arm/include/asm/hugetlb.h               | 33 +----------
 arch/arm64/include/asm/hugetlb.h             | 39 +++---------
 arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
 arch/mips/include/asm/hugetlb.h              | 40 +++----------
 arch/parisc/include/asm/hugetlb.h            | 33 +++--------
 arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
 arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
 arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
 arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
 arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
 arch/sh/include/asm/hugetlb.h                | 54 ++---------------
 arch/sparc/include/asm/hugetlb.h             | 40 +++----------
 arch/x86/include/asm/hugetlb.h               | 72 +----------------------
 include/asm-generic/hugetlb.h                | 88 +++++++++++++++++++++++++++-
 15 files changed, 143 insertions(+), 384 deletions(-)

Comments

Michal Hocko July 9, 2018, 2:16 p.m. UTC | #1
[CC hugetlb guys - http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]

On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
> In order to reduce copy/paste of functions across architectures and then
> make riscv hugetlb port (and future ports) simpler and smaller, this
> patchset intends to factorize the numerous hugetlb primitives that are
> defined across all the architectures.
> 
> Except for prepare_hugepage_range, this patchset moves the versions that
> are just pass-through to standard pte primitives into
> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
> 
> s390 architecture has not been tackled in this serie since it does not
> use asm-generic/hugetlb.h at all.
> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
> 
> This patchset has been compiled on x86 only. 
> 
> Changelog:
> 
> v4:
>   Fix powerpc build error due to misplacing of #include
>   <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>   pointed by Christophe Leroy.
> 
> v1, v2, v3:
>   Same version, just problems with email provider and misuse of
>   --batch-size option of git send-email
> 
> Alexandre Ghiti (11):
>   hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>   hugetlb: Introduce generic version of hugetlb_free_pgd_range
>   hugetlb: Introduce generic version of set_huge_pte_at
>   hugetlb: Introduce generic version of huge_ptep_get_and_clear
>   hugetlb: Introduce generic version of huge_ptep_clear_flush
>   hugetlb: Introduce generic version of huge_pte_none
>   hugetlb: Introduce generic version of huge_pte_wrprotect
>   hugetlb: Introduce generic version of prepare_hugepage_range
>   hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>   hugetlb: Introduce generic version of huge_ptep_set_access_flags
>   hugetlb: Introduce generic version of huge_ptep_get
> 
>  arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>  arch/arm/include/asm/hugetlb.h               | 33 +----------
>  arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>  arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>  arch/mips/include/asm/hugetlb.h              | 40 +++----------
>  arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>  arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>  arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>  arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>  arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>  arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>  arch/sh/include/asm/hugetlb.h                | 54 ++---------------
>  arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>  arch/x86/include/asm/hugetlb.h               | 72 +----------------------
>  include/asm-generic/hugetlb.h                | 88 +++++++++++++++++++++++++++-
>  15 files changed, 143 insertions(+), 384 deletions(-)
> 
> -- 
> 2.16.2
Alexandre Ghiti July 20, 2018, 6:37 p.m. UTC | #2
Does anyone have any suggestion about those patches ?

On 07/09/2018 02:16 PM, Michal Hocko wrote:
> [CC hugetlb guys - http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]
>
> On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
>> In order to reduce copy/paste of functions across architectures and then
>> make riscv hugetlb port (and future ports) simpler and smaller, this
>> patchset intends to factorize the numerous hugetlb primitives that are
>> defined across all the architectures.
>>
>> Except for prepare_hugepage_range, this patchset moves the versions that
>> are just pass-through to standard pte primitives into
>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>
>> s390 architecture has not been tackled in this serie since it does not
>> use asm-generic/hugetlb.h at all.
>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>
>> This patchset has been compiled on x86 only.
>>
>> Changelog:
>>
>> v4:
>>    Fix powerpc build error due to misplacing of #include
>>    <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>>    pointed by Christophe Leroy.
>>
>> v1, v2, v3:
>>    Same version, just problems with email provider and misuse of
>>    --batch-size option of git send-email
>>
>> Alexandre Ghiti (11):
>>    hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>>    hugetlb: Introduce generic version of hugetlb_free_pgd_range
>>    hugetlb: Introduce generic version of set_huge_pte_at
>>    hugetlb: Introduce generic version of huge_ptep_get_and_clear
>>    hugetlb: Introduce generic version of huge_ptep_clear_flush
>>    hugetlb: Introduce generic version of huge_pte_none
>>    hugetlb: Introduce generic version of huge_pte_wrprotect
>>    hugetlb: Introduce generic version of prepare_hugepage_range
>>    hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>>    hugetlb: Introduce generic version of huge_ptep_set_access_flags
>>    hugetlb: Introduce generic version of huge_ptep_get
>>
>>   arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>>   arch/arm/include/asm/hugetlb.h               | 33 +----------
>>   arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>>   arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>>   arch/mips/include/asm/hugetlb.h              | 40 +++----------
>>   arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>>   arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>>   arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>>   arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>>   arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>>   arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>>   arch/sh/include/asm/hugetlb.h                | 54 ++---------------
>>   arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>>   arch/x86/include/asm/hugetlb.h               | 72 +----------------------
>>   include/asm-generic/hugetlb.h                | 88 +++++++++++++++++++++++++++-
>>   15 files changed, 143 insertions(+), 384 deletions(-)
>>
>> -- 
>> 2.16.2

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mike Kravetz July 21, 2018, 12:24 a.m. UTC | #3
On 07/20/2018 11:37 AM, Alex Ghiti wrote:
> Does anyone have any suggestion about those patches ?

I only took a quick look.  From the hugetlb perspective, I like the
idea of moving routines to a common file.  If any of the arch owners
(or anyone else) agree, I can do a review of the series.
Michael Ellerman July 23, 2018, 2 p.m. UTC | #4
Alex Ghiti <alex@ghiti.fr> writes:

> Does anyone have any suggestion about those patches ?

Cross compiling it for some non-x86 arches would be a good start :)

There are cross compilers available here:

  https://mirrors.edge.kernel.org/pub/tools/crosstool/


cheers

> On 07/09/2018 02:16 PM, Michal Hocko wrote:
>> [CC hugetlb guys - http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]
>>
>> On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
>>> In order to reduce copy/paste of functions across architectures and then
>>> make riscv hugetlb port (and future ports) simpler and smaller, this
>>> patchset intends to factorize the numerous hugetlb primitives that are
>>> defined across all the architectures.
>>>
>>> Except for prepare_hugepage_range, this patchset moves the versions that
>>> are just pass-through to standard pte primitives into
>>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>>
>>> s390 architecture has not been tackled in this serie since it does not
>>> use asm-generic/hugetlb.h at all.
>>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>>
>>> This patchset has been compiled on x86 only.
>>>
>>> Changelog:
>>>
>>> v4:
>>>    Fix powerpc build error due to misplacing of #include
>>>    <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>>>    pointed by Christophe Leroy.
>>>
>>> v1, v2, v3:
>>>    Same version, just problems with email provider and misuse of
>>>    --batch-size option of git send-email
>>>
>>> Alexandre Ghiti (11):
>>>    hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>>>    hugetlb: Introduce generic version of hugetlb_free_pgd_range
>>>    hugetlb: Introduce generic version of set_huge_pte_at
>>>    hugetlb: Introduce generic version of huge_ptep_get_and_clear
>>>    hugetlb: Introduce generic version of huge_ptep_clear_flush
>>>    hugetlb: Introduce generic version of huge_pte_none
>>>    hugetlb: Introduce generic version of huge_pte_wrprotect
>>>    hugetlb: Introduce generic version of prepare_hugepage_range
>>>    hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>>>    hugetlb: Introduce generic version of huge_ptep_set_access_flags
>>>    hugetlb: Introduce generic version of huge_ptep_get
>>>
>>>   arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>>>   arch/arm/include/asm/hugetlb.h               | 33 +----------
>>>   arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>>>   arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>>>   arch/mips/include/asm/hugetlb.h              | 40 +++----------
>>>   arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>>>   arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>>>   arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>>>   arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>>>   arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>>>   arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>>>   arch/sh/include/asm/hugetlb.h                | 54 ++---------------
>>>   arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>>>   arch/x86/include/asm/hugetlb.h               | 72 +----------------------
>>>   include/asm-generic/hugetlb.h                | 88 +++++++++++++++++++++++++++-
>>>   15 files changed, 143 insertions(+), 384 deletions(-)
>>>
>>> -- 
>>> 2.16.2
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 23, 2018, 5:41 p.m. UTC | #5
Ok will do and report when done.

Thanks for your feedback,

Alex

On 07/23/2018 02:00 PM, Michael Ellerman wrote:
> Alex Ghiti <alex@ghiti.fr> writes:
>
>> Does anyone have any suggestion about those patches ?
> Cross compiling it for some non-x86 arches would be a good start :)
>
> There are cross compilers available here:
>
>    https://mirrors.edge.kernel.org/pub/tools/crosstool/
>
>
> cheers
>
>> On 07/09/2018 02:16 PM, Michal Hocko wrote:
>>> [CC hugetlb guys - http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]
>>>
>>> On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
>>>> In order to reduce copy/paste of functions across architectures and then
>>>> make riscv hugetlb port (and future ports) simpler and smaller, this
>>>> patchset intends to factorize the numerous hugetlb primitives that are
>>>> defined across all the architectures.
>>>>
>>>> Except for prepare_hugepage_range, this patchset moves the versions that
>>>> are just pass-through to standard pte primitives into
>>>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>>>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>>>
>>>> s390 architecture has not been tackled in this serie since it does not
>>>> use asm-generic/hugetlb.h at all.
>>>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>>>
>>>> This patchset has been compiled on x86 only.
>>>>
>>>> Changelog:
>>>>
>>>> v4:
>>>>     Fix powerpc build error due to misplacing of #include
>>>>     <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>>>>     pointed by Christophe Leroy.
>>>>
>>>> v1, v2, v3:
>>>>     Same version, just problems with email provider and misuse of
>>>>     --batch-size option of git send-email
>>>>
>>>> Alexandre Ghiti (11):
>>>>     hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>>>>     hugetlb: Introduce generic version of hugetlb_free_pgd_range
>>>>     hugetlb: Introduce generic version of set_huge_pte_at
>>>>     hugetlb: Introduce generic version of huge_ptep_get_and_clear
>>>>     hugetlb: Introduce generic version of huge_ptep_clear_flush
>>>>     hugetlb: Introduce generic version of huge_pte_none
>>>>     hugetlb: Introduce generic version of huge_pte_wrprotect
>>>>     hugetlb: Introduce generic version of prepare_hugepage_range
>>>>     hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>>>>     hugetlb: Introduce generic version of huge_ptep_set_access_flags
>>>>     hugetlb: Introduce generic version of huge_ptep_get
>>>>
>>>>    arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>>>>    arch/arm/include/asm/hugetlb.h               | 33 +----------
>>>>    arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>>>>    arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>>>>    arch/mips/include/asm/hugetlb.h              | 40 +++----------
>>>>    arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>>>>    arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>>>>    arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>>>>    arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>>>>    arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>>>>    arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>>>>    arch/sh/include/asm/hugetlb.h                | 54 ++---------------
>>>>    arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>>>>    arch/x86/include/asm/hugetlb.h               | 72 +----------------------
>>>>    include/asm-generic/hugetlb.h                | 88 +++++++++++++++++++++++++++-
>>>>    15 files changed, 143 insertions(+), 384 deletions(-)
>>>>
>>>> -- 
>>>> 2.16.2

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Burton July 25, 2018, 12:34 a.m. UTC | #6
Hi Alexandre,

On Thu, Jul 05, 2018 at 11:07:05AM +0000, Alexandre Ghiti wrote:
> In order to reduce copy/paste of functions across architectures and then
> make riscv hugetlb port (and future ports) simpler and smaller, this
> patchset intends to factorize the numerous hugetlb primitives that are
> defined across all the architectures.
> 
> Except for prepare_hugepage_range, this patchset moves the versions that
> are just pass-through to standard pte primitives into
> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
> 
> s390 architecture has not been tackled in this serie since it does not
> use asm-generic/hugetlb.h at all.
> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
> 
> This patchset has been compiled on x86 only. 

For MIPS these look good - I don't see any issues & they pass a build
test (using cavium_octeon_defconfig which enables huge pages), so:

    Acked-by: Paul Burton <paul.burton@mips.com> # MIPS parts

Thanks,
    Paul
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 25, 2018, 7:38 a.m. UTC | #7
Hi Paul,

Thanks for having tested it, I remove mips from my list.

Thanks again,

Alex


On 07/25/2018 02:34 AM, Paul Burton wrote:
> Hi Alexandre,
>
> On Thu, Jul 05, 2018 at 11:07:05AM +0000, Alexandre Ghiti wrote:
>> In order to reduce copy/paste of functions across architectures and then
>> make riscv hugetlb port (and future ports) simpler and smaller, this
>> patchset intends to factorize the numerous hugetlb primitives that are
>> defined across all the architectures.
>>
>> Except for prepare_hugepage_range, this patchset moves the versions that
>> are just pass-through to standard pte primitives into
>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>
>> s390 architecture has not been tackled in this serie since it does not
>> use asm-generic/hugetlb.h at all.
>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>
>> This patchset has been compiled on x86 only.
> For MIPS these look good - I don't see any issues & they pass a build
> test (using cavium_octeon_defconfig which enables huge pages), so:
>
>      Acked-by: Paul Burton <paul.burton@mips.com> # MIPS parts
>
> Thanks,
>      Paul

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 26, 2018, 5:41 a.m. UTC | #8
Hi everyone,

This is the result of the build for all arches tackled in this series 
rebased on 4.18-rc6:

arm:
         versatile_defconfig: without huge page OK
         keystone_defconfig: with huge page OK
arm64:
         defconfig: with huge page OK
ia64:
         generic_defconfig: with huge page OK
mips:
         Paul Burton tested cavium octeon with huge page OK
parisc:
         generic-64bit_defconfig: with huge page does not link
         generic-64bit_defconfig: without huge page does not link
         BUT not because of this series, any feedback welcome.
powerpc:
         ppc64_defconfig: without huge page OK
         ppc64_defconfig: with huge page OK
sh:
         dreamcast_defconfig: with huge page OK
sparc:
         sparc32_defconfig: without huge page OK
sparc64:
         sparc64_defconfig: with huge page OK
x86:
         with huge page OK

Alex

On 07/23/2018 02:00 PM, Michael Ellerman wrote:
> Alex Ghiti <alex@ghiti.fr> writes:
>
>> Does anyone have any suggestion about those patches ?
> Cross compiling it for some non-x86 arches would be a good start :)
>
> There are cross compilers available here:
>
>    https://mirrors.edge.kernel.org/pub/tools/crosstool/
>
>
> cheers
>
>> On 07/09/2018 02:16 PM, Michal Hocko wrote:
>>> [CC hugetlb guys - http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]
>>>
>>> On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
>>>> In order to reduce copy/paste of functions across architectures and then
>>>> make riscv hugetlb port (and future ports) simpler and smaller, this
>>>> patchset intends to factorize the numerous hugetlb primitives that are
>>>> defined across all the architectures.
>>>>
>>>> Except for prepare_hugepage_range, this patchset moves the versions that
>>>> are just pass-through to standard pte primitives into
>>>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>>>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>>>
>>>> s390 architecture has not been tackled in this serie since it does not
>>>> use asm-generic/hugetlb.h at all.
>>>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>>>
>>>> This patchset has been compiled on x86 only.
>>>>
>>>> Changelog:
>>>>
>>>> v4:
>>>>     Fix powerpc build error due to misplacing of #include
>>>>     <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>>>>     pointed by Christophe Leroy.
>>>>
>>>> v1, v2, v3:
>>>>     Same version, just problems with email provider and misuse of
>>>>     --batch-size option of git send-email
>>>>
>>>> Alexandre Ghiti (11):
>>>>     hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>>>>     hugetlb: Introduce generic version of hugetlb_free_pgd_range
>>>>     hugetlb: Introduce generic version of set_huge_pte_at
>>>>     hugetlb: Introduce generic version of huge_ptep_get_and_clear
>>>>     hugetlb: Introduce generic version of huge_ptep_clear_flush
>>>>     hugetlb: Introduce generic version of huge_pte_none
>>>>     hugetlb: Introduce generic version of huge_pte_wrprotect
>>>>     hugetlb: Introduce generic version of prepare_hugepage_range
>>>>     hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>>>>     hugetlb: Introduce generic version of huge_ptep_set_access_flags
>>>>     hugetlb: Introduce generic version of huge_ptep_get
>>>>
>>>>    arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>>>>    arch/arm/include/asm/hugetlb.h               | 33 +----------
>>>>    arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>>>>    arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>>>>    arch/mips/include/asm/hugetlb.h              | 40 +++----------
>>>>    arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>>>>    arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>>>>    arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>>>>    arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>>>>    arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>>>>    arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>>>>    arch/sh/include/asm/hugetlb.h                | 54 ++---------------
>>>>    arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>>>>    arch/x86/include/asm/hugetlb.h               | 72 +----------------------
>>>>    include/asm-generic/hugetlb.h                | 88 +++++++++++++++++++++++++++-
>>>>    15 files changed, 143 insertions(+), 384 deletions(-)
>>>>
>>>> -- 
>>>> 2.16.2

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Michael Ellerman July 26, 2018, 11:46 a.m. UTC | #9
Mike Kravetz <mike.kravetz@oracle.com> writes:

> On 07/20/2018 11:37 AM, Alex Ghiti wrote:
>> Does anyone have any suggestion about those patches ?
>
> I only took a quick look.  From the hugetlb perspective, I like the
> idea of moving routines to a common file.  If any of the arch owners
> (or anyone else) agree, I can do a review of the series.

The conversions look pretty good to me. If you want to give it a review
then from my point of view it could go in -mm to shake out any bugs.

cheers
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Helge Deller July 26, 2018, 12:59 p.m. UTC | #10
* Alex Ghiti <alex@ghiti.fr>:
> This is the result of the build for all arches tackled in this series
> rebased on 4.18-rc6:
> ...
> parisc:
>         generic-64bit_defconfig: with huge page does not link
>         generic-64bit_defconfig: without huge page does not link
>         BUT not because of this series, any feedback welcome.
Strange, but I will check that later....

Anyway, I applied your v4-patch to my parisc64 tree, built the kernel,
started it and ran some hugetlb LTP testcases sucessfully.
So, please add:

Tested-by: Helge Deller <deller@gmx.de> # parisc

Helge
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Christophe Leroy July 26, 2018, 3:13 p.m. UTC | #11
Alex Ghiti <alex@ghiti.fr> a écrit :

> Hi everyone,
>
> This is the result of the build for all arches tackled in this  
> series rebased on 4.18-rc6:
>
> arm:
>         versatile_defconfig: without huge page OK
>         keystone_defconfig: with huge page OK
> arm64:
>         defconfig: with huge page OK
> ia64:
>         generic_defconfig: with huge page OK
> mips:
>         Paul Burton tested cavium octeon with huge page OK
> parisc:
>         generic-64bit_defconfig: with huge page does not link
>         generic-64bit_defconfig: without huge page does not link
>         BUT not because of this series, any feedback welcome.
> powerpc:
>         ppc64_defconfig: without huge page OK
>         ppc64_defconfig: with huge page OK

Can you also test ppc32 both with and without hugepage (mpc885_ads_defconfig)

Thanks
Christophe

> sh:
>         dreamcast_defconfig: with huge page OK
> sparc:
>         sparc32_defconfig: without huge page OK
> sparc64:
>         sparc64_defconfig: with huge page OK
> x86:
>         with huge page OK
>
> Alex
>
> On 07/23/2018 02:00 PM, Michael Ellerman wrote:
>> Alex Ghiti <alex@ghiti.fr> writes:
>>
>>> Does anyone have any suggestion about those patches ?
>> Cross compiling it for some non-x86 arches would be a good start :)
>>
>> There are cross compilers available here:
>>
>>   https://mirrors.edge.kernel.org/pub/tools/crosstool/
>>
>>
>> cheers
>>
>>> On 07/09/2018 02:16 PM, Michal Hocko wrote:
>>>> [CC hugetlb guys -  
>>>> http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]
>>>>
>>>> On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
>>>>> In order to reduce copy/paste of functions across architectures and then
>>>>> make riscv hugetlb port (and future ports) simpler and smaller, this
>>>>> patchset intends to factorize the numerous hugetlb primitives that are
>>>>> defined across all the architectures.
>>>>>
>>>>> Except for prepare_hugepage_range, this patchset moves the versions that
>>>>> are just pass-through to standard pte primitives into
>>>>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>>>>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>>>>
>>>>> s390 architecture has not been tackled in this serie since it does not
>>>>> use asm-generic/hugetlb.h at all.
>>>>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>>>>
>>>>> This patchset has been compiled on x86 only.
>>>>>
>>>>> Changelog:
>>>>>
>>>>> v4:
>>>>>    Fix powerpc build error due to misplacing of #include
>>>>>    <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>>>>>    pointed by Christophe Leroy.
>>>>>
>>>>> v1, v2, v3:
>>>>>    Same version, just problems with email provider and misuse of
>>>>>    --batch-size option of git send-email
>>>>>
>>>>> Alexandre Ghiti (11):
>>>>>    hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>>>>>    hugetlb: Introduce generic version of hugetlb_free_pgd_range
>>>>>    hugetlb: Introduce generic version of set_huge_pte_at
>>>>>    hugetlb: Introduce generic version of huge_ptep_get_and_clear
>>>>>    hugetlb: Introduce generic version of huge_ptep_clear_flush
>>>>>    hugetlb: Introduce generic version of huge_pte_none
>>>>>    hugetlb: Introduce generic version of huge_pte_wrprotect
>>>>>    hugetlb: Introduce generic version of prepare_hugepage_range
>>>>>    hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>>>>>    hugetlb: Introduce generic version of huge_ptep_set_access_flags
>>>>>    hugetlb: Introduce generic version of huge_ptep_get
>>>>>
>>>>>   arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>>>>>   arch/arm/include/asm/hugetlb.h               | 33 +----------
>>>>>   arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>>>>>   arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>>>>>   arch/mips/include/asm/hugetlb.h              | 40 +++----------
>>>>>   arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>>>>>   arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>>>>>   arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>>>>>   arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>>>>>   arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>>>>>   arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>>>>>   arch/sh/include/asm/hugetlb.h                | 54 ++---------------
>>>>>   arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>>>>>   arch/x86/include/asm/hugetlb.h               | 72  
>>>>> +----------------------
>>>>>   include/asm-generic/hugetlb.h                | 88  
>>>>> +++++++++++++++++++++++++++-
>>>>>   15 files changed, 143 insertions(+), 384 deletions(-)
>>>>>
>>>>> -- 
>>>>> 2.16.2


--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 26, 2018, 4:46 p.m. UTC | #12
Hi Christophe,

Sorry, I should have done it already: with and without huge page 
activated, the build for mpc885_ads_defconfig is OK.

Thanks,

Alex

On 07/26/2018 03:13 PM, LEROY Christophe wrote:
> Alex Ghiti <alex@ghiti.fr> a écrit :
>
>> Hi everyone,
>>
>> This is the result of the build for all arches tackled in this series 
>> rebased on 4.18-rc6:
>>
>> arm:
>>         versatile_defconfig: without huge page OK
>>         keystone_defconfig: with huge page OK
>> arm64:
>>         defconfig: with huge page OK
>> ia64:
>>         generic_defconfig: with huge page OK
>> mips:
>>         Paul Burton tested cavium octeon with huge page OK
>> parisc:
>>         generic-64bit_defconfig: with huge page does not link
>>         generic-64bit_defconfig: without huge page does not link
>>         BUT not because of this series, any feedback welcome.
>> powerpc:
>>         ppc64_defconfig: without huge page OK
>>         ppc64_defconfig: with huge page OK
>
> Can you also test ppc32 both with and without hugepage 
> (mpc885_ads_defconfig)
>
> Thanks
> Christophe
>
>> sh:
>>         dreamcast_defconfig: with huge page OK
>> sparc:
>>         sparc32_defconfig: without huge page OK
>> sparc64:
>>         sparc64_defconfig: with huge page OK
>> x86:
>>         with huge page OK
>>
>> Alex
>>
>> On 07/23/2018 02:00 PM, Michael Ellerman wrote:
>>> Alex Ghiti <alex@ghiti.fr> writes:
>>>
>>>> Does anyone have any suggestion about those patches ?
>>> Cross compiling it for some non-x86 arches would be a good start :)
>>>
>>> There are cross compilers available here:
>>>
>>>   https://mirrors.edge.kernel.org/pub/tools/crosstool/
>>>
>>>
>>> cheers
>>>
>>>> On 07/09/2018 02:16 PM, Michal Hocko wrote:
>>>>> [CC hugetlb guys - 
>>>>> http://lkml.kernel.org/r/20180705110716.3919-1-alex@ghiti.fr]
>>>>>
>>>>> On Thu 05-07-18 11:07:05, Alexandre Ghiti wrote:
>>>>>> In order to reduce copy/paste of functions across architectures 
>>>>>> and then
>>>>>> make riscv hugetlb port (and future ports) simpler and smaller, this
>>>>>> patchset intends to factorize the numerous hugetlb primitives 
>>>>>> that are
>>>>>> defined across all the architectures.
>>>>>>
>>>>>> Except for prepare_hugepage_range, this patchset moves the 
>>>>>> versions that
>>>>>> are just pass-through to standard pte primitives into
>>>>>> asm-generic/hugetlb.h by using the same #ifdef semantic that can be
>>>>>> found in asm-generic/pgtable.h, i.e. __HAVE_ARCH_***.
>>>>>>
>>>>>> s390 architecture has not been tackled in this serie since it 
>>>>>> does not
>>>>>> use asm-generic/hugetlb.h at all.
>>>>>> powerpc could be factorized a bit more (cf huge_ptep_set_wrprotect).
>>>>>>
>>>>>> This patchset has been compiled on x86 only.
>>>>>>
>>>>>> Changelog:
>>>>>>
>>>>>> v4:
>>>>>>    Fix powerpc build error due to misplacing of #include
>>>>>>    <asm-generic/hugetlb.h> outside of #ifdef CONFIG_HUGETLB_PAGE, as
>>>>>>    pointed by Christophe Leroy.
>>>>>>
>>>>>> v1, v2, v3:
>>>>>>    Same version, just problems with email provider and misuse of
>>>>>>    --batch-size option of git send-email
>>>>>>
>>>>>> Alexandre Ghiti (11):
>>>>>>    hugetlb: Harmonize hugetlb.h arch specific defines with pgtable.h
>>>>>>    hugetlb: Introduce generic version of hugetlb_free_pgd_range
>>>>>>    hugetlb: Introduce generic version of set_huge_pte_at
>>>>>>    hugetlb: Introduce generic version of huge_ptep_get_and_clear
>>>>>>    hugetlb: Introduce generic version of huge_ptep_clear_flush
>>>>>>    hugetlb: Introduce generic version of huge_pte_none
>>>>>>    hugetlb: Introduce generic version of huge_pte_wrprotect
>>>>>>    hugetlb: Introduce generic version of prepare_hugepage_range
>>>>>>    hugetlb: Introduce generic version of huge_ptep_set_wrprotect
>>>>>>    hugetlb: Introduce generic version of huge_ptep_set_access_flags
>>>>>>    hugetlb: Introduce generic version of huge_ptep_get
>>>>>>
>>>>>>   arch/arm/include/asm/hugetlb-3level.h        | 32 +---------
>>>>>>   arch/arm/include/asm/hugetlb.h               | 33 +----------
>>>>>>   arch/arm64/include/asm/hugetlb.h             | 39 +++---------
>>>>>>   arch/ia64/include/asm/hugetlb.h              | 47 ++-------------
>>>>>>   arch/mips/include/asm/hugetlb.h              | 40 +++----------
>>>>>>   arch/parisc/include/asm/hugetlb.h            | 33 +++--------
>>>>>>   arch/powerpc/include/asm/book3s/32/pgtable.h |  2 +
>>>>>>   arch/powerpc/include/asm/book3s/64/pgtable.h |  1 +
>>>>>>   arch/powerpc/include/asm/hugetlb.h           | 43 ++------------
>>>>>>   arch/powerpc/include/asm/nohash/32/pgtable.h |  2 +
>>>>>>   arch/powerpc/include/asm/nohash/64/pgtable.h |  1 +
>>>>>>   arch/sh/include/asm/hugetlb.h                | 54 
>>>>>> ++---------------
>>>>>>   arch/sparc/include/asm/hugetlb.h             | 40 +++----------
>>>>>>   arch/x86/include/asm/hugetlb.h               | 72 
>>>>>> +----------------------
>>>>>>   include/asm-generic/hugetlb.h                | 88 
>>>>>> +++++++++++++++++++++++++++-
>>>>>>   15 files changed, 143 insertions(+), 384 deletions(-)
>>>>>>
>>>>>> -- 
>>>>>> 2.16.2
>
>

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 26, 2018, 5:01 p.m. UTC | #13
Hi Helge,

Thanks for your tests.
In case it can help you, this is what I get when I try to build 
generic-64bit_defconfig (I truncated the output):

...

  LD      vmlinux.o
  MODPOST vmlinux.o
hppa64-linux-ld: init/main.o(.text+0x98): cannot reach strreplace
init/main.o: In function `initcall_blacklisted':
init/.tmp_main.o:(.text+0x98): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strreplace' defined in .text section 
in lib/string.o
hppa64-linux-ld: init/main.o(.text+0xbc): cannot reach strcmp
init/.tmp_main.o:(.text+0xbc): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strcmp' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.text+0x21c): cannot reach strcpy
init/main.o: In function `do_one_initcall':
(.text+0x21c): relocation truncated to fit: R_PARISC_PCREL22F against 
symbol `strcpy' defined in .text section in lib/string.o
hppa64-linux-ld: init/main.o(.text+0x250): cannot reach strlcat
(.text+0x250): relocation truncated to fit: R_PARISC_PCREL22F against 
symbol `strlcat' defined in .text section in lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x1d4): cannot reach strcmp
init/main.o: In function `do_early_param':
init/.tmp_main.o:(.init.text+0x1d4): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strcmp' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x250): cannot reach strcmp
init/.tmp_main.o:(.init.text+0x250): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strcmp' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x294): cannot reach strlen
init/main.o: In function `repair_env_string':
init/.tmp_main.o:(.init.text+0x294): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strlen' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x2f0): cannot reach strlen
init/.tmp_main.o:(.init.text+0x2f0): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strlen' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x308): cannot reach memmove
init/.tmp_main.o:(.init.text+0x308): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `memmove' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x454): cannot reach strlen
init/main.o: In function `unknown_bootoption':
init/.tmp_main.o:(.init.text+0x454): relocation truncated to fit: 
R_PARISC_PCREL22F against symbol `strlen' defined in .text section in 
lib/string.o
hppa64-linux-ld: init/main.o(.init.text+0x4dc): cannot reach strchr
init/.tmp_main.o:(.init.text+0x4dc): additional relocation overflows 
omitted from the output
hppa64-linux-ld: init/main.o(.init.text+0x638): cannot reach strncmp
hppa64-linux-ld: init/main.o(.init.text+0x694): cannot reach get_option
hppa64-linux-ld: init/main.o(.init.text+0x744): cannot reach strsep
hppa64-linux-ld: init/main.o(.init.text+0x798): cannot reach strlen
hppa64-linux-ld: init/main.o(.init.text+0x7d0): cannot reach strcpy
hppa64-linux-ld: init/main.o(.init.text+0x954): cannot reach strlcpy
hppa64-linux-ld: init/main.o(.init.text+0xab8): cannot reach strlen
hppa64-linux-ld: init/main.o(.init.text+0xafc): cannot reach strlen
hppa64-linux-ld: init/main.o(.init.text+0xb40): cannot reach strlen
hppa64-linux-ld: init/main.o(.init.text+0xb84): cannot reach strlen
hppa64-linux-ld: init/main.o(.init.text+0xbd0): cannot reach strcpy
hppa64-linux-ld: init/main.o(.init.text+0xbe8): cannot reach strcpy
hppa64-linux-ld: init/main.o(.init.text+0xc3c): cannot reach 
build_all_zonelists
hppa64-linux-ld: init/main.o(.init.text+0x1200): cannot reach unknown
hppa64-linux-ld: init/main.o(.init.text+0x1278): cannot reach 
wait_for_completion
hppa64-linux-ld: init/main.o(.init.text+0x12b0): cannot reach _raw_spin_lock
hppa64-linux-ld: init/main.o(.init.text+0x147c): cannot reach strcpy
hppa64-linux-ld: init/main.o(.ref.text+0x40): cannot reach kernel_thread
hppa64-linux-ld: init/main.o(.ref.text+0x60): cannot reach 
find_task_by_pid_ns
hppa64-linux-ld: init/main.o(.ref.text+0x98): cannot reach 
set_cpus_allowed_ptr
hppa64-linux-ld: init/main.o(.ref.text+0xbc): cannot reach kernel_thread
hppa64-linux-ld: init/main.o(.ref.text+0xd4): cannot reach 
find_task_by_pid_ns
hppa64-linux-ld: init/main.o(.ref.text+0x108): cannot reach complete
hppa64-linux-ld: init/main.o(.ref.text+0x128): cannot reach 
cpu_startup_entry
hppa64-linux-ld: init/main.o(.ref.text+0x164): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x174): cannot reach 
async_synchronize_full
hppa64-linux-ld: init/main.o(.ref.text+0x1a4): cannot reach 
rcu_barrier_sched
hppa64-linux-ld: init/main.o(.ref.text+0x1b4): cannot reach mark_rodata_ro
hppa64-linux-ld: init/main.o(.ref.text+0x1d4): cannot reach 
rcu_end_inkernel_boot
hppa64-linux-ld: init/main.o(.ref.text+0x1f4): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x218): cannot reach printk
hppa64-linux-ld: init/main.o(.ref.text+0x238): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x258): cannot reach panic
hppa64-linux-ld: init/main.o(.ref.text+0x268): cannot reach printk
hppa64-linux-ld: init/main.o(.ref.text+0x280): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x29c): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x2b8): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x2d4): cannot reach unknown
hppa64-linux-ld: init/main.o(.ref.text+0x2f0): cannot reach panic
hppa64-linux-ld: init/do_mounts.o(.text+0x30): cannot reach strncasecmp
hppa64-linux-ld: init/do_mounts.o(.text+0x158): cannot reach strncmp
hppa64-linux-ld: init/do_mounts.o(.text+0x180): cannot reach strchr

...


On 07/26/2018 12:59 PM, Helge Deller wrote:
> * Alex Ghiti <alex@ghiti.fr>:
>> This is the result of the build for all arches tackled in this series
>> rebased on 4.18-rc6:
>> ...
>> parisc:
>>          generic-64bit_defconfig: with huge page does not link
>>          generic-64bit_defconfig: without huge page does not link
>>          BUT not because of this series, any feedback welcome.
> Strange, but I will check that later....
>
> Anyway, I applied your v4-patch to my parisc64 tree, built the kernel,
> started it and ran some hugetlb LTP testcases sucessfully.
> So, please add:
>
> Tested-by: Helge Deller <deller@gmx.de> # parisc
>
> Helge

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 26, 2018, 7:13 p.m. UTC | #14
Actually, I went back to v4.17, and I have the same errors.

I used:

$ make ARCH=parisc O=build_parisc generic-64bit_defconfig
$ PATH=/home/alex/wip/toolchain/gcc-8.1.0-nolibc/hppa64-linux/bin:$PATH 
make ARCH=parisc CROSS_COMPILE=hppa64-linux-

I downloaded the crosscompiler here: 
https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/


On 07/26/2018 05:01 PM, Alex Ghiti wrote:
> Hi Helge,
>
> Thanks for your tests.
> In case it can help you, this is what I get when I try to build 
> generic-64bit_defconfig (I truncated the output):
>
> ...
>
>  LD      vmlinux.o
>  MODPOST vmlinux.o
> hppa64-linux-ld: init/main.o(.text+0x98): cannot reach strreplace
> init/main.o: In function `initcall_blacklisted':
> init/.tmp_main.o:(.text+0x98): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strreplace' defined in .text section 
> in lib/string.o
> hppa64-linux-ld: init/main.o(.text+0xbc): cannot reach strcmp
> init/.tmp_main.o:(.text+0xbc): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strcmp' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.text+0x21c): cannot reach strcpy
> init/main.o: In function `do_one_initcall':
> (.text+0x21c): relocation truncated to fit: R_PARISC_PCREL22F against 
> symbol `strcpy' defined in .text section in lib/string.o
> hppa64-linux-ld: init/main.o(.text+0x250): cannot reach strlcat
> (.text+0x250): relocation truncated to fit: R_PARISC_PCREL22F against 
> symbol `strlcat' defined in .text section in lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x1d4): cannot reach strcmp
> init/main.o: In function `do_early_param':
> init/.tmp_main.o:(.init.text+0x1d4): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strcmp' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x250): cannot reach strcmp
> init/.tmp_main.o:(.init.text+0x250): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strcmp' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x294): cannot reach strlen
> init/main.o: In function `repair_env_string':
> init/.tmp_main.o:(.init.text+0x294): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strlen' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x2f0): cannot reach strlen
> init/.tmp_main.o:(.init.text+0x2f0): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strlen' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x308): cannot reach memmove
> init/.tmp_main.o:(.init.text+0x308): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `memmove' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x454): cannot reach strlen
> init/main.o: In function `unknown_bootoption':
> init/.tmp_main.o:(.init.text+0x454): relocation truncated to fit: 
> R_PARISC_PCREL22F against symbol `strlen' defined in .text section in 
> lib/string.o
> hppa64-linux-ld: init/main.o(.init.text+0x4dc): cannot reach strchr
> init/.tmp_main.o:(.init.text+0x4dc): additional relocation overflows 
> omitted from the output
> hppa64-linux-ld: init/main.o(.init.text+0x638): cannot reach strncmp
> hppa64-linux-ld: init/main.o(.init.text+0x694): cannot reach get_option
> hppa64-linux-ld: init/main.o(.init.text+0x744): cannot reach strsep
> hppa64-linux-ld: init/main.o(.init.text+0x798): cannot reach strlen
> hppa64-linux-ld: init/main.o(.init.text+0x7d0): cannot reach strcpy
> hppa64-linux-ld: init/main.o(.init.text+0x954): cannot reach strlcpy
> hppa64-linux-ld: init/main.o(.init.text+0xab8): cannot reach strlen
> hppa64-linux-ld: init/main.o(.init.text+0xafc): cannot reach strlen
> hppa64-linux-ld: init/main.o(.init.text+0xb40): cannot reach strlen
> hppa64-linux-ld: init/main.o(.init.text+0xb84): cannot reach strlen
> hppa64-linux-ld: init/main.o(.init.text+0xbd0): cannot reach strcpy
> hppa64-linux-ld: init/main.o(.init.text+0xbe8): cannot reach strcpy
> hppa64-linux-ld: init/main.o(.init.text+0xc3c): cannot reach 
> build_all_zonelists
> hppa64-linux-ld: init/main.o(.init.text+0x1200): cannot reach unknown
> hppa64-linux-ld: init/main.o(.init.text+0x1278): cannot reach 
> wait_for_completion
> hppa64-linux-ld: init/main.o(.init.text+0x12b0): cannot reach 
> _raw_spin_lock
> hppa64-linux-ld: init/main.o(.init.text+0x147c): cannot reach strcpy
> hppa64-linux-ld: init/main.o(.ref.text+0x40): cannot reach kernel_thread
> hppa64-linux-ld: init/main.o(.ref.text+0x60): cannot reach 
> find_task_by_pid_ns
> hppa64-linux-ld: init/main.o(.ref.text+0x98): cannot reach 
> set_cpus_allowed_ptr
> hppa64-linux-ld: init/main.o(.ref.text+0xbc): cannot reach kernel_thread
> hppa64-linux-ld: init/main.o(.ref.text+0xd4): cannot reach 
> find_task_by_pid_ns
> hppa64-linux-ld: init/main.o(.ref.text+0x108): cannot reach complete
> hppa64-linux-ld: init/main.o(.ref.text+0x128): cannot reach 
> cpu_startup_entry
> hppa64-linux-ld: init/main.o(.ref.text+0x164): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x174): cannot reach 
> async_synchronize_full
> hppa64-linux-ld: init/main.o(.ref.text+0x1a4): cannot reach 
> rcu_barrier_sched
> hppa64-linux-ld: init/main.o(.ref.text+0x1b4): cannot reach 
> mark_rodata_ro
> hppa64-linux-ld: init/main.o(.ref.text+0x1d4): cannot reach 
> rcu_end_inkernel_boot
> hppa64-linux-ld: init/main.o(.ref.text+0x1f4): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x218): cannot reach printk
> hppa64-linux-ld: init/main.o(.ref.text+0x238): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x258): cannot reach panic
> hppa64-linux-ld: init/main.o(.ref.text+0x268): cannot reach printk
> hppa64-linux-ld: init/main.o(.ref.text+0x280): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x29c): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x2b8): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x2d4): cannot reach unknown
> hppa64-linux-ld: init/main.o(.ref.text+0x2f0): cannot reach panic
> hppa64-linux-ld: init/do_mounts.o(.text+0x30): cannot reach strncasecmp
> hppa64-linux-ld: init/do_mounts.o(.text+0x158): cannot reach strncmp
> hppa64-linux-ld: init/do_mounts.o(.text+0x180): cannot reach strchr
>
> ...
>
>
> On 07/26/2018 12:59 PM, Helge Deller wrote:
>> * Alex Ghiti <alex@ghiti.fr>:
>>> This is the result of the build for all arches tackled in this series
>>> rebased on 4.18-rc6:
>>> ...
>>> parisc:
>>>          generic-64bit_defconfig: with huge page does not link
>>>          generic-64bit_defconfig: without huge page does not link
>>>          BUT not because of this series, any feedback welcome.
>> Strange, but I will check that later....
>>
>> Anyway, I applied your v4-patch to my parisc64 tree, built the kernel,
>> started it and ran some hugetlb LTP testcases sucessfully.
>> So, please add:
>>
>> Tested-by: Helge Deller <deller@gmx.de> # parisc
>>
>> Helge
>

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mike Kravetz July 26, 2018, 7:16 p.m. UTC | #15
On 07/26/2018 04:46 AM, Michael Ellerman wrote:
> Mike Kravetz <mike.kravetz@oracle.com> writes:
> 
>> On 07/20/2018 11:37 AM, Alex Ghiti wrote:
>>> Does anyone have any suggestion about those patches ?
>>
>> I only took a quick look.  From the hugetlb perspective, I like the
>> idea of moving routines to a common file.  If any of the arch owners
>> (or anyone else) agree, I can do a review of the series.
> 
> The conversions look pretty good to me. If you want to give it a review
> then from my point of view it could go in -mm to shake out any bugs.

Nothing of significance found in a review.  As others have suggested,
the (cross)compiler may be better at finding issues than human eyes.

I also suggest it be added to -mm.
Helge Deller July 26, 2018, 9:08 p.m. UTC | #16
Hi Alex,

On 26.07.2018 21:13, Alex Ghiti wrote:
> $ make ARCH=parisc O=build_parisc generic-64bit_defconfig
> $ PATH=/home/alex/wip/toolchain/gcc-8.1.0-nolibc/hppa64-linux/bin:$PATH make ARCH=parisc CROSS_COMPILE=hppa64-linux-
> 
>> ...
>>  LD      vmlinux.o
>>  MODPOST vmlinux.o
>> hppa64-linux-ld: init/main.o(.text+0x98): cannot reach strreplace
>> init/main.o: In function `initcall_blacklisted':
>> init/.tmp_main.o:(.text+0x98): relocation truncated to fit: R_PARISC_PCREL22F against symbol `strreplace' defined in .text section in lib/string.o
>> hppa64-linux-ld: init/main.o(.text+0xbc): cannot reach strcmp

In order to be able to link vmlinux, we need to enable 
CONFIG_MLONGCALLS=y in the defconfig.

Nevertheless, I see some modversion issues too which I still need 
to analyze (but that's a completely off-topic issue here).

Helge
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Alexandre Ghiti July 27, 2018, 6:51 a.m. UTC | #17
Hi Mike,

Thanks for your review. I'm going to fix the 2nd patch as you said, 
you're right, no need to move the #include at the bottom of the file.
I'm going to post a v5, add -mm in cc and ask for inclusion in their tree.

Thanks again for your time,

Alex


On 07/26/2018 09:16 PM, Mike Kravetz wrote:
> On 07/26/2018 04:46 AM, Michael Ellerman wrote:
>> Mike Kravetz <mike.kravetz@oracle.com> writes:
>>
>>> On 07/20/2018 11:37 AM, Alex Ghiti wrote:
>>>> Does anyone have any suggestion about those patches ?
>>> I only took a quick look.  From the hugetlb perspective, I like the
>>> idea of moving routines to a common file.  If any of the arch owners
>>> (or anyone else) agree, I can do a review of the series.
>> The conversions look pretty good to me. If you want to give it a review
>> then from my point of view it could go in -mm to shake out any bugs.
> Nothing of significance found in a review.  As others have suggested,
> the (cross)compiler may be better at finding issues than human eyes.
>
> I also suggest it be added to -mm.

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html