When building block/blk-iocost.c on arch/x6x/ or arch/nios2/, the
build fails due to missing the <asm/local64.h> file.
Fix this by adding local64.h as a "generic-y" file in their respective
Kbuild files, so that they will use a copy of <asm-generic/local64.h>
instead (copied to arch/*/include/generated/local64.h by the
build system).
c6x or nios2 build error:
../block/blk-iocost.c:183:10: fatal error: asm/local64.h: No such file or directory
183 | #include <asm/local64.h>
Fixes: 5e124f74325d ("blk-iocost: use local[64]_t for percpu stat")
Signed-off-by: Randy Dunlap <[email protected]>
Cc: Tejun Heo <[email protected]>
Cc: Jens Axboe <[email protected]>
Cc: [email protected]
Cc: Ley Foon Tan <[email protected]>
Cc: Mark Salter <[email protected]>
Cc: Aurelien Jacquiot <[email protected]>
Cc: [email protected]
---
arch/c6x/include/asm/Kbuild | 1 +
arch/nios2/include/asm/Kbuild | 1 +
2 files changed, 2 insertions(+)
--- linux-next-20201208.orig/arch/c6x/include/asm/Kbuild
+++ linux-next-20201208/arch/c6x/include/asm/Kbuild
@@ -1,5 +1,6 @@
# SPDX-License-Identifier: GPL-2.0
generic-y += extable.h
generic-y += kvm_para.h
+generic-y += local64.h
generic-y += mcs_spinlock.h
generic-y += user.h
--- linux-next-20201208.orig/arch/nios2/include/asm/Kbuild
+++ linux-next-20201208/arch/nios2/include/asm/Kbuild
@@ -2,6 +2,7 @@
generic-y += cmpxchg.h
generic-y += extable.h
generic-y += kvm_para.h
+generic-y += local64.h
generic-y += mcs_spinlock.h
generic-y += spinlock.h
generic-y += user.h
> -----Original Message-----
> From: Randy Dunlap <[email protected]>
> Sent: Thursday, December 10, 2020 4:47 AM
> To: [email protected]
> Cc: Randy Dunlap <[email protected]>; Tejun Heo <[email protected]>;
> Jens Axboe <[email protected]>; [email protected]; Tan, Ley Foon
> <[email protected]>; Mark Salter <[email protected]>; Aurelien
> Jacquiot <[email protected]>; [email protected]
> Subject: [PATCH] block: blk-iocost: fix build for ARCH with missing local64.h
> files
>
> When building block/blk-iocost.c on arch/x6x/ or arch/nios2/, the build fails
> due to missing the <asm/local64.h> file.
>
> Fix this by adding local64.h as a "generic-y" file in their respective Kbuild files,
> so that they will use a copy of <asm-generic/local64.h> instead (copied to
> arch/*/include/generated/local64.h by the build system).
>
> c6x or nios2 build error:
> ../block/blk-iocost.c:183:10: fatal error: asm/local64.h: No such file or
> directory
> 183 | #include <asm/local64.h>
>
> Fixes: 5e124f74325d ("blk-iocost: use local[64]_t for percpu stat")
> Signed-off-by: Randy Dunlap <[email protected]>
> Cc: Tejun Heo <[email protected]>
> Cc: Jens Axboe <[email protected]>
> Cc: [email protected]
> Cc: Ley Foon Tan <[email protected]>
> Cc: Mark Salter <[email protected]>
> Cc: Aurelien Jacquiot <[email protected]>
> Cc: [email protected]
> ---
> arch/c6x/include/asm/Kbuild | 1 +
> arch/nios2/include/asm/Kbuild | 1 +
> 2 files changed, 2 insertions(+)
>
> --- linux-next-20201208.orig/arch/c6x/include/asm/Kbuild
> +++ linux-next-20201208/arch/c6x/include/asm/Kbuild
> @@ -1,5 +1,6 @@
> # SPDX-License-Identifier: GPL-2.0
> generic-y += extable.h
> generic-y += kvm_para.h
> +generic-y += local64.h
> generic-y += mcs_spinlock.h
> generic-y += user.h
> --- linux-next-20201208.orig/arch/nios2/include/asm/Kbuild
> +++ linux-next-20201208/arch/nios2/include/asm/Kbuild
> @@ -2,6 +2,7 @@
> generic-y += cmpxchg.h
> generic-y += extable.h
> generic-y += kvm_para.h
> +generic-y += local64.h
> generic-y += mcs_spinlock.h
> generic-y += spinlock.h
> generic-y += user.h
For nios2:
Acked-by: Ley Foon Tan <[email protected]>
Regards
Ley Foon
On Wed, Dec 09, 2020 at 12:46:57PM -0800, Randy Dunlap wrote:
> When building block/blk-iocost.c on arch/x6x/ or arch/nios2/, the
> build fails due to missing the <asm/local64.h> file.
Please mark it mandatory-y if the asm-generic version is suitable
for everyone and random pieces of kernel code are supposed to include
it.
On 12/9/20 10:07 PM, Christoph Hellwig wrote:
> On Wed, Dec 09, 2020 at 12:46:57PM -0800, Randy Dunlap wrote:
>> When building block/blk-iocost.c on arch/x6x/ or arch/nios2/, the
>> build fails due to missing the <asm/local64.h> file.
>
> Please mark it mandatory-y if the asm-generic version is suitable
> for everyone and random pieces of kernel code are supposed to include
> it.
include/asm-generic/local64.h has comments about some $arch could do
its things better/faster instead of using asm-generic, but no $arch has
done that since 2010 when it was added.
Is that conclusive?
If it is, why even use mandatory-y?
Why not just change all occurrences of <asm/local64.h>
to <asm-generic/local64.h> ?
thanks.
--
~Randy
On Wed, Dec 09, 2020 at 10:16:20PM -0800, Randy Dunlap wrote:
> include/asm-generic/local64.h has comments about some $arch could do
> its things better/faster instead of using asm-generic, but no $arch has
> done that since 2010 when it was added.
>
> Is that conclusive?
> If it is, why even use mandatory-y?
> Why not just change all occurrences of <asm/local64.h>
> to <asm-generic/local64.h> ?
asm-generic must not be included by non-arch code directly. So the
sensible options are either:
a) mark it as mandatory-y in include/asm-generic/Kbuild
b) rename it to linux/local64.h and fixup all references
a) seems much less invasive, but b) might be the better option long
term.
On Wed, Dec 09, 2020 at 10:16:20PM -0800, Randy Dunlap wrote:
> On 12/9/20 10:07 PM, Christoph Hellwig wrote:
> > On Wed, Dec 09, 2020 at 12:46:57PM -0800, Randy Dunlap wrote:
> >> When building block/blk-iocost.c on arch/x6x/ or arch/nios2/, the
> >> build fails due to missing the <asm/local64.h> file.
> >
> > Please mark it mandatory-y if the asm-generic version is suitable
> > for everyone and random pieces of kernel code are supposed to include
> > it.
>
> include/asm-generic/local64.h has comments about some $arch could do
> its things better/faster instead of using asm-generic, but no $arch has
> done that since 2010 when it was added.
Yeah, it's only 32bit archs, and of those I'm only sure i386 could do it
better, very maybe arm-v7. But nobody cares enough to make it happen.
All the 64bit archs are already good, because local_t is long and
local64_t defaults to local_t.