lkml.org 
[lkml]   [2017]   [Jan]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/13] MIPS: VDSO: avoid duplicate CAC_BASE definition
    Date
    vdso.h includes <spaces.h> implicitly after defining CONFIG_32BITS.
    This defeats the override in mach-ip27/spaces.h, leading to
    a build error that shows up in kernelci.org:

    In file included from arch/mips/include/asm/mach-ip27/spaces.h:29:0,
    from arch/mips/include/asm/page.h:12,
    from arch/mips/vdso/vdso.h:26,
    from arch/mips/vdso/gettimeofday.c:11:
    arch/mips/include/asm/mach-generic/spaces.h:28:0: error: "CAC_BASE" redefined [-Werror]
    #define CAC_BASE _AC(0x80000000, UL)

    An earlier patch tried to make the second definition conditional,
    but that patch had the #ifdef in the wrong place, and would lead
    to another warning:

    arch/mips/include/asm/io.h: In function 'phys_to_virt':
    arch/mips/include/asm/io.h:138:9: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]

    For all I can tell, there is no other reason than vdso32 to ever
    include this file with CONFIG_32BITS set, and the vdso itself should
    never refer to the base addresses as it is running in user space,
    so adding an #ifdef here is safe.

    Link: https://patchwork.kernel.org/patch/9418187/
    Fixes: 3ffc17d8768b ("MIPS: Adjust MIPS64 CAC_BASE to reflect Config.K0")
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    arch/mips/include/asm/mach-ip27/spaces.h | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    diff --git a/arch/mips/include/asm/mach-ip27/spaces.h b/arch/mips/include/asm/mach-ip27/spaces.h
    index 4775a1136a5b..24d5e31bcfa6 100644
    --- a/arch/mips/include/asm/mach-ip27/spaces.h
    +++ b/arch/mips/include/asm/mach-ip27/spaces.h
    @@ -12,14 +12,16 @@

    /*
    * IP27 uses the R10000's uncached attribute feature. Attribute 3 selects
    - * uncached memory addressing.
    + * uncached memory addressing. Hide the definitions on 32-bit compilation
    + * of the compat-vdso code.
    */
    -
    +#ifdef CONFIG_64BIT
    #define HSPEC_BASE 0x9000000000000000
    #define IO_BASE 0x9200000000000000
    #define MSPEC_BASE 0x9400000000000000
    #define UNCAC_BASE 0x9600000000000000
    #define CAC_BASE 0xa800000000000000
    +#endif

    #define TO_MSPEC(x) (MSPEC_BASE | ((x) & TO_PHYS_MASK))
    #define TO_HSPEC(x) (HSPEC_BASE | ((x) & TO_PHYS_MASK))
    --
    2.9.0
    \
     
     \ /
      Last update: 2017-01-17 16:26    [W:4.240 / U:0.520 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site