* Kconfig-induced build errors: CONFIG_PAGE_OFFSET
@ 2021-01-28 3:18 Randy Dunlap
2021-01-28 20:07 ` Atish Patra
0 siblings, 1 reply; 5+ messages in thread
From: Randy Dunlap @ 2021-01-28 3:18 UTC (permalink / raw)
To: LKML, linux-riscv; +Cc: Paul Walmsley, Palmer Dabbelt, Albert Ou
Hi,
I took a riscv-32 .config from kernel test robot (it was for a clang build)
and did a "make olddefconfig" (using gcc tools) and got build errors
due to this config item from arch/riscv/Kconfig;
config PAGE_OFFSET
hex
default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
default 0x80000000 if 64BIT && !MMU
default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
PAGE_OFFSET is undefined for the case of 32BIT && MAXPHYSMEM_2GB.
That causes lots of errors when _AC() is used to paste
CONFIG_PAGE_OFFSET to "UL", like these:
In file included from ../include/vdso/const.h:5,
from ../include/linux/const.h:4,
from ../include/linux/bits.h:5,
from ../include/linux/bitops.h:6,
from ../include/linux/kernel.h:11,
from ../init/do_mounts_initrd.c:3:
../arch/riscv/include/asm/uaccess.h: In function '__access_ok':
../arch/riscv/include/asm/page.h:34:46: error: 'UL' undeclared (first use in this function)
34 | #define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
| ^~
../include/uapi/linux/const.h:20:23: note: in definition of macro '__AC'
20 | #define __AC(X,Y) (X##Y)
| ^
../arch/riscv/include/asm/page.h:34:22: note: in expansion of macro '_AC'
34 | #define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
| ^~~
../arch/riscv/include/asm/pgtable.h:26:27: note: in expansion of macro 'PAGE_OFFSET'
26 | #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE)
| ^~~~~~~~~~~
../arch/riscv/include/asm/pgtable.h:41:24: note: in expansion of macro 'VMALLOC_START'
41 | #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE)
| ^~~~~~~~~~~~~
../arch/riscv/include/asm/pgtable.h:50:26: note: in expansion of macro 'VMEMMAP_START'
50 | #define PCI_IO_END VMEMMAP_START
| ^~~~~~~~~~~~~
../arch/riscv/include/asm/pgtable.h:51:27: note: in expansion of macro 'PCI_IO_END'
51 | #define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE)
| ^~~~~~~~~~
../arch/riscv/include/asm/pgtable.h:53:26: note: in expansion of macro 'PCI_IO_START'
53 | #define FIXADDR_TOP PCI_IO_START
| ^~~~~~~~~~~~
../arch/riscv/include/asm/pgtable.h:59:27: note: in expansion of macro 'FIXADDR_TOP'
59 | #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
| ^~~~~~~~~~~
../arch/riscv/include/asm/pgtable.h:471:19: note: in expansion of macro 'FIXADDR_START'
471 | #define TASK_SIZE FIXADDR_START
| ^~~~~~~~~~~~~
../arch/riscv/include/asm/uaccess.h:56:17: note: in expansion of macro 'TASK_SIZE'
56 | return size <= TASK_SIZE && addr <= TASK_SIZE - size;
I suppose that it wants something like this, but someone else can
fix/use the correct default value here:
---
From: Randy Dunlap <rdunlap@infradead.org>
Provide a default value for PAGE_OFFSET for the case of
32BIT and MAXPHYSMEM_2GB.
Fixes many build errors.
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
---
arch/riscv/Kconfig | 1 +
1 file changed, 1 insertion(+)
--- linux-next-20210125.orig/arch/riscv/Kconfig
+++ linux-next-20210125/arch/riscv/Kconfig
@@ -143,6 +143,7 @@ config PA_BITS
config PAGE_OFFSET
hex
default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
+ default 0x80000000 if 32BIT && MAXPHYSMEM_2GB
default 0x80000000 if 64BIT && !MMU
default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
--
~Randy
Reported-by: Randy Dunlap <rdunlap@infradead.org>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kconfig-induced build errors: CONFIG_PAGE_OFFSET
2021-01-28 3:18 Kconfig-induced build errors: CONFIG_PAGE_OFFSET Randy Dunlap
@ 2021-01-28 20:07 ` Atish Patra
2021-01-28 20:40 ` Randy Dunlap
0 siblings, 1 reply; 5+ messages in thread
From: Atish Patra @ 2021-01-28 20:07 UTC (permalink / raw)
To: Randy Dunlap; +Cc: LKML, linux-riscv, Albert Ou, Palmer Dabbelt, Paul Walmsley
On Wed, Jan 27, 2021 at 7:18 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>
> Hi,
>
> I took a riscv-32 .config from kernel test robot (it was for a clang build)
> and did a "make olddefconfig" (using gcc tools) and got build errors
> due to this config item from arch/riscv/Kconfig;
>
>
> config PAGE_OFFSET
> hex
> default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
> default 0x80000000 if 64BIT && !MMU
> default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
> default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
>
> PAGE_OFFSET is undefined for the case of 32BIT && MAXPHYSMEM_2GB.
Because, RV32 doesn't support 2GB physical memory yet.
The compilation errors can be fixed by not allowing MAXPHYSMEM_2GB for RV32 and
MAXPHYSMEM_1GB for RV64. How about this ?
--- a/arch/riscv/Kconfig
+++ b/arch/riscv/Kconfig
@@ -253,8 +253,10 @@ choice
default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
config MAXPHYSMEM_1GB
+ depends on 32BIT
bool "1GiB"
config MAXPHYSMEM_2GB
+ depends on 64BIT && CMODEL_MEDLOW
bool "2GiB"
config MAXPHYSMEM_128GB
depends on 64BIT && CMODEL_MEDANY
> That causes lots of errors when _AC() is used to paste
> CONFIG_PAGE_OFFSET to "UL", like these:
>
> In file included from ../include/vdso/const.h:5,
> from ../include/linux/const.h:4,
> from ../include/linux/bits.h:5,
> from ../include/linux/bitops.h:6,
> from ../include/linux/kernel.h:11,
> from ../init/do_mounts_initrd.c:3:
> ../arch/riscv/include/asm/uaccess.h: In function '__access_ok':
> ../arch/riscv/include/asm/page.h:34:46: error: 'UL' undeclared (first use in this function)
> 34 | #define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
> | ^~
> ../include/uapi/linux/const.h:20:23: note: in definition of macro '__AC'
> 20 | #define __AC(X,Y) (X##Y)
> | ^
> ../arch/riscv/include/asm/page.h:34:22: note: in expansion of macro '_AC'
> 34 | #define PAGE_OFFSET _AC(CONFIG_PAGE_OFFSET, UL)
> | ^~~
> ../arch/riscv/include/asm/pgtable.h:26:27: note: in expansion of macro 'PAGE_OFFSET'
> 26 | #define VMALLOC_START (PAGE_OFFSET - VMALLOC_SIZE)
> | ^~~~~~~~~~~
> ../arch/riscv/include/asm/pgtable.h:41:24: note: in expansion of macro 'VMALLOC_START'
> 41 | #define VMEMMAP_START (VMALLOC_START - VMEMMAP_SIZE)
> | ^~~~~~~~~~~~~
> ../arch/riscv/include/asm/pgtable.h:50:26: note: in expansion of macro 'VMEMMAP_START'
> 50 | #define PCI_IO_END VMEMMAP_START
> | ^~~~~~~~~~~~~
> ../arch/riscv/include/asm/pgtable.h:51:27: note: in expansion of macro 'PCI_IO_END'
> 51 | #define PCI_IO_START (PCI_IO_END - PCI_IO_SIZE)
> | ^~~~~~~~~~
> ../arch/riscv/include/asm/pgtable.h:53:26: note: in expansion of macro 'PCI_IO_START'
> 53 | #define FIXADDR_TOP PCI_IO_START
> | ^~~~~~~~~~~~
> ../arch/riscv/include/asm/pgtable.h:59:27: note: in expansion of macro 'FIXADDR_TOP'
> 59 | #define FIXADDR_START (FIXADDR_TOP - FIXADDR_SIZE)
> | ^~~~~~~~~~~
> ../arch/riscv/include/asm/pgtable.h:471:19: note: in expansion of macro 'FIXADDR_START'
> 471 | #define TASK_SIZE FIXADDR_START
> | ^~~~~~~~~~~~~
> ../arch/riscv/include/asm/uaccess.h:56:17: note: in expansion of macro 'TASK_SIZE'
> 56 | return size <= TASK_SIZE && addr <= TASK_SIZE - size;
>
>
> I suppose that it wants something like this, but someone else can
> fix/use the correct default value here:
>
> ---
>
> From: Randy Dunlap <rdunlap@infradead.org>
>
> Provide a default value for PAGE_OFFSET for the case of
> 32BIT and MAXPHYSMEM_2GB.
>
> Fixes many build errors.
>
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> ---
> arch/riscv/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> --- linux-next-20210125.orig/arch/riscv/Kconfig
> +++ linux-next-20210125/arch/riscv/Kconfig
> @@ -143,6 +143,7 @@ config PA_BITS
> config PAGE_OFFSET
> hex
> default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
> + default 0x80000000 if 32BIT && MAXPHYSMEM_2GB
> default 0x80000000 if 64BIT && !MMU
> default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
> default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
>
>
>
> --
> ~Randy
> Reported-by: Randy Dunlap <rdunlap@infradead.org>
>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
--
Regards,
Atish
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kconfig-induced build errors: CONFIG_PAGE_OFFSET
2021-01-28 20:07 ` Atish Patra
@ 2021-01-28 20:40 ` Randy Dunlap
0 siblings, 0 replies; 5+ messages in thread
From: Randy Dunlap @ 2021-01-28 20:40 UTC (permalink / raw)
To: Atish Patra; +Cc: LKML, linux-riscv, Albert Ou, Palmer Dabbelt, Paul Walmsley
On 1/28/21 12:07 PM, Atish Patra wrote:
> On Wed, Jan 27, 2021 at 7:18 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>>
>> Hi,
>>
>> I took a riscv-32 .config from kernel test robot (it was for a clang build)
>> and did a "make olddefconfig" (using gcc tools) and got build errors
>> due to this config item from arch/riscv/Kconfig;
>>
>>
>> config PAGE_OFFSET
>> hex
>> default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
>> default 0x80000000 if 64BIT && !MMU
>> default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
>> default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
>>
>> PAGE_OFFSET is undefined for the case of 32BIT && MAXPHYSMEM_2GB.
>
> Because, RV32 doesn't support 2GB physical memory yet.
>
> The compilation errors can be fixed by not allowing MAXPHYSMEM_2GB for RV32 and
> MAXPHYSMEM_1GB for RV64. How about this ?
>
> --- a/arch/riscv/Kconfig
> +++ b/arch/riscv/Kconfig
> @@ -253,8 +253,10 @@ choice
> default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
>
> config MAXPHYSMEM_1GB
> + depends on 32BIT
> bool "1GiB"
> config MAXPHYSMEM_2GB
> + depends on 64BIT && CMODEL_MEDLOW
> bool "2GiB"
> config MAXPHYSMEM_128GB
> depends on 64BIT && CMODEL_MEDANY
Looks good. Thanks.
Acked-by: Randy Dunlap <rdunlap@infradead.org>
--
~Randy
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kconfig-induced build errors: CONFIG_PAGE_OFFSET
2021-02-03 2:27 ` Palmer Dabbelt
@ 2021-02-03 2:35 ` Palmer Dabbelt
0 siblings, 0 replies; 5+ messages in thread
From: Palmer Dabbelt @ 2021-02-03 2:35 UTC (permalink / raw)
To: atishp; +Cc: geert, rdunlap, linux-riscv, aou, linux-kernel, Paul Walmsley
On Tue, 02 Feb 2021 18:27:42 PST (-0800), Palmer Dabbelt wrote:
> On Fri, 29 Jan 2021 05:52:51 PST (-0800), geert@linux-m68k.org wrote:
>> Hi Atish,
>>
>> On Thu, Jan 28, 2021 at 9:09 PM Atish Patra <atishp@atishpatra.org> wrote:
>>> On Wed, Jan 27, 2021 at 7:18 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>>> > I took a riscv-32 .config from kernel test robot (it was for a clang build)
>>> > and did a "make olddefconfig" (using gcc tools) and got build errors
>>> > due to this config item from arch/riscv/Kconfig;
>>> >
>>> >
>>> > config PAGE_OFFSET
>>> > hex
>>> > default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
>>> > default 0x80000000 if 64BIT && !MMU
>>> > default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
>>> > default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
>>> >
>>> > PAGE_OFFSET is undefined for the case of 32BIT && MAXPHYSMEM_2GB.
>>>
>>> Because, RV32 doesn't support 2GB physical memory yet.
>>>
>>> The compilation errors can be fixed by not allowing MAXPHYSMEM_2GB for RV32 and
>>> MAXPHYSMEM_1GB for RV64. How about this ?
>>>
>>> --- a/arch/riscv/Kconfig
>>> +++ b/arch/riscv/Kconfig
>>> @@ -253,8 +253,10 @@ choice
>>> default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
>>>
>>> config MAXPHYSMEM_1GB
>>> + depends on 32BIT
>>> bool "1GiB"
>>> config MAXPHYSMEM_2GB
>>> + depends on 64BIT && CMODEL_MEDLOW
>>> bool "2GiB"
>>> config MAXPHYSMEM_128GB
>>> depends on 64BIT && CMODEL_MEDANY
>>
>> Thanks, works fine on litex-vexriscv.
>> Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
>
> Atish: did I miss an actual patch? I just see diff here.
Never mind, I found it. Thanks!
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Kconfig-induced build errors: CONFIG_PAGE_OFFSET
[not found] <CAMuHMdWb8We=-L3mrZi5dSc308rapqH8NyAq9OJU=Qo7YijGpw@mail.gmail.com>
@ 2021-02-03 2:27 ` Palmer Dabbelt
2021-02-03 2:35 ` Palmer Dabbelt
0 siblings, 1 reply; 5+ messages in thread
From: Palmer Dabbelt @ 2021-02-03 2:27 UTC (permalink / raw)
To: geert; +Cc: atishp, rdunlap, linux-riscv, aou, linux-kernel, Paul Walmsley
On Fri, 29 Jan 2021 05:52:51 PST (-0800), geert@linux-m68k.org wrote:
> Hi Atish,
>
> On Thu, Jan 28, 2021 at 9:09 PM Atish Patra <atishp@atishpatra.org> wrote:
>> On Wed, Jan 27, 2021 at 7:18 PM Randy Dunlap <rdunlap@infradead.org> wrote:
>> > I took a riscv-32 .config from kernel test robot (it was for a clang build)
>> > and did a "make olddefconfig" (using gcc tools) and got build errors
>> > due to this config item from arch/riscv/Kconfig;
>> >
>> >
>> > config PAGE_OFFSET
>> > hex
>> > default 0xC0000000 if 32BIT && MAXPHYSMEM_1GB
>> > default 0x80000000 if 64BIT && !MMU
>> > default 0xffffffff80000000 if 64BIT && MAXPHYSMEM_2GB
>> > default 0xffffffe000000000 if 64BIT && MAXPHYSMEM_128GB
>> >
>> > PAGE_OFFSET is undefined for the case of 32BIT && MAXPHYSMEM_2GB.
>>
>> Because, RV32 doesn't support 2GB physical memory yet.
>>
>> The compilation errors can be fixed by not allowing MAXPHYSMEM_2GB for RV32 and
>> MAXPHYSMEM_1GB for RV64. How about this ?
>>
>> --- a/arch/riscv/Kconfig
>> +++ b/arch/riscv/Kconfig
>> @@ -253,8 +253,10 @@ choice
>> default MAXPHYSMEM_128GB if 64BIT && CMODEL_MEDANY
>>
>> config MAXPHYSMEM_1GB
>> + depends on 32BIT
>> bool "1GiB"
>> config MAXPHYSMEM_2GB
>> + depends on 64BIT && CMODEL_MEDLOW
>> bool "2GiB"
>> config MAXPHYSMEM_128GB
>> depends on 64BIT && CMODEL_MEDANY
>
> Thanks, works fine on litex-vexriscv.
> Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
Atish: did I miss an actual patch? I just see diff here.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-02-03 2:35 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-28 3:18 Kconfig-induced build errors: CONFIG_PAGE_OFFSET Randy Dunlap
2021-01-28 20:07 ` Atish Patra
2021-01-28 20:40 ` Randy Dunlap
[not found] <CAMuHMdWb8We=-L3mrZi5dSc308rapqH8NyAq9OJU=Qo7YijGpw@mail.gmail.com>
2021-02-03 2:27 ` Palmer Dabbelt
2021-02-03 2:35 ` Palmer Dabbelt
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).