Message ID | 20201209204657.6676-1-rdunlap@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: blk-iocost: fix build for ARCH with missing local64.h files | expand |
> -----Original Message----- > From: Randy Dunlap <rdunlap@infradead.org> > Sent: Thursday, December 10, 2020 4:47 AM > To: linux-kernel@vger.kernel.org > Cc: Randy Dunlap <rdunlap@infradead.org>; Tejun Heo <tj@kernel.org>; > Jens Axboe <axboe@kernel.dk>; linux-block@vger.kernel.org; Tan, Ley Foon > <ley.foon.tan@intel.com>; Mark Salter <msalter@redhat.com>; Aurelien > Jacquiot <jacquiot.aurelien@gmail.com>; linux-c6x-dev@linux-c6x.org > 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 <rdunlap@infradead.org> > Cc: Tejun Heo <tj@kernel.org> > Cc: Jens Axboe <axboe@kernel.dk> > Cc: linux-block@vger.kernel.org > Cc: Ley Foon Tan <ley.foon.tan@intel.com> > Cc: Mark Salter <msalter@redhat.com> > Cc: Aurelien Jacquiot <jacquiot.aurelien@gmail.com> > Cc: linux-c6x-dev@linux-c6x.org > --- > 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 <ley.foon.tan@intel.com> 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.
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.
--- 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
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 <rdunlap@infradead.org> Cc: Tejun Heo <tj@kernel.org> Cc: Jens Axboe <axboe@kernel.dk> Cc: linux-block@vger.kernel.org Cc: Ley Foon Tan <ley.foon.tan@intel.com> Cc: Mark Salter <msalter@redhat.com> Cc: Aurelien Jacquiot <jacquiot.aurelien@gmail.com> Cc: linux-c6x-dev@linux-c6x.org --- arch/c6x/include/asm/Kbuild | 1 + arch/nios2/include/asm/Kbuild | 1 + 2 files changed, 2 insertions(+)