Message ID | 20230310133721.005935440@linuxfoundation.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | None | expand |
On 11/3/23 00:37, Greg Kroah-Hartman wrote: > From: Randy Dunlap <rdunlap@infradead.org> > > [ Upstream commit 9b07d27d0fbb7f7441aa986859a0f53ec93a0335 ] > > swiotlb_memblock_alloc() calls memblock_alloc(), which calls > (__init) memblock_alloc_try_nid(). However, swiotlb_membloc_alloc() > can be marked as __init since it is only called by swiotlb_init_remap(), > which is already marked as __init. This prevents a modpost build > warning/error: > > WARNING: modpost: vmlinux.o: section mismatch in reference: swiotlb_memblock_alloc (section: .text) -> memblock_alloc_try_nid (section: .init.text) > WARNING: modpost: vmlinux.o: section mismatch in reference: swiotlb_memblock_alloc (section: .text) -> memblock_alloc_try_nid (section: .init.text) > > This fixes the build warning/error seen on ARM64, PPC64, S390, i386, > and x86_64. Did you do something special in your config to get these warnings? Or it is your toolchain? I tested with whatever comes with Ubuntu2210 and Fedora36 and neither printed the warning and I want to see those :-/ Thanks, > > Fixes: 8d58aa484920 ("swiotlb: reduce the swiotlb buffer size on allocation failure") > Signed-off-by: Randy Dunlap <rdunlap@infradead.org> > Cc: Alexey Kardashevskiy <aik@amd.com> > Cc: Christoph Hellwig <hch@lst.de> > Cc: iommu@lists.linux.dev > Cc: Mike Rapoport <rppt@kernel.org> > Cc: linux-mm@kvack.org > Signed-off-by: Christoph Hellwig <hch@lst.de> > Signed-off-by: Sasha Levin <sashal@kernel.org> > --- > kernel/dma/swiotlb.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c > index a34c38bbe28f1..ef3bc3a5bbed3 100644 > --- a/kernel/dma/swiotlb.c > +++ b/kernel/dma/swiotlb.c > @@ -300,7 +300,8 @@ static void swiotlb_init_io_tlb_mem(struct io_tlb_mem *mem, phys_addr_t start, > return; > } > > -static void *swiotlb_memblock_alloc(unsigned long nslabs, unsigned int flags, > +static void __init *swiotlb_memblock_alloc(unsigned long nslabs, > + unsigned int flags, > int (*remap)(void *tlb, unsigned long nslabs)) > { > size_t bytes = PAGE_ALIGN(nslabs << IO_TLB_SHIFT);
Hi, On 3/14/23 01:54, Alexey Kardashevskiy wrote: > > > On 11/3/23 00:37, Greg Kroah-Hartman wrote: >> From: Randy Dunlap <rdunlap@infradead.org> >> >> [ Upstream commit 9b07d27d0fbb7f7441aa986859a0f53ec93a0335 ] >> >> swiotlb_memblock_alloc() calls memblock_alloc(), which calls >> (__init) memblock_alloc_try_nid(). However, swiotlb_membloc_alloc() >> can be marked as __init since it is only called by swiotlb_init_remap(), >> which is already marked as __init. This prevents a modpost build >> warning/error: >> >> WARNING: modpost: vmlinux.o: section mismatch in reference: swiotlb_memblock_alloc (section: .text) -> memblock_alloc_try_nid (section: .init.text) >> WARNING: modpost: vmlinux.o: section mismatch in reference: swiotlb_memblock_alloc (section: .text) -> memblock_alloc_try_nid (section: .init.text) >> >> This fixes the build warning/error seen on ARM64, PPC64, S390, i386, >> and x86_64. > > Did you do something special in your config to get these warnings? Or it is your toolchain? I tested with whatever comes with Ubuntu2210 and Fedora36 and neither printed the warning and I want to see those :-/ Thanks, > I have no idea how I got these build warnings. I am using gcc-12.2.0. I don't know what .config file settings that I used. I just tried about 6 different ARCH builds without this patch applied and I cannot recreate the build warnings/errors. Sorry I couldn't help you with this. > >> >> Fixes: 8d58aa484920 ("swiotlb: reduce the swiotlb buffer size on allocation failure") >> Signed-off-by: Randy Dunlap <rdunlap@infradead.org> >> Cc: Alexey Kardashevskiy <aik@amd.com> >> Cc: Christoph Hellwig <hch@lst.de> >> Cc: iommu@lists.linux.dev >> Cc: Mike Rapoport <rppt@kernel.org> >> Cc: linux-mm@kvack.org >> Signed-off-by: Christoph Hellwig <hch@lst.de> >> Signed-off-by: Sasha Levin <sashal@kernel.org> >> --- >> kernel/dma/swiotlb.c | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c >> index a34c38bbe28f1..ef3bc3a5bbed3 100644 >> --- a/kernel/dma/swiotlb.c >> +++ b/kernel/dma/swiotlb.c >> @@ -300,7 +300,8 @@ static void swiotlb_init_io_tlb_mem(struct io_tlb_mem *mem, phys_addr_t start, >> return; >> } >> -static void *swiotlb_memblock_alloc(unsigned long nslabs, unsigned int flags, >> +static void __init *swiotlb_memblock_alloc(unsigned long nslabs, >> + unsigned int flags, >> int (*remap)(void *tlb, unsigned long nslabs)) >> { >> size_t bytes = PAGE_ALIGN(nslabs << IO_TLB_SHIFT); >
diff --git a/kernel/dma/swiotlb.c b/kernel/dma/swiotlb.c index a34c38bbe28f1..ef3bc3a5bbed3 100644 --- a/kernel/dma/swiotlb.c +++ b/kernel/dma/swiotlb.c @@ -300,7 +300,8 @@ static void swiotlb_init_io_tlb_mem(struct io_tlb_mem *mem, phys_addr_t start, return; } -static void *swiotlb_memblock_alloc(unsigned long nslabs, unsigned int flags, +static void __init *swiotlb_memblock_alloc(unsigned long nslabs, + unsigned int flags, int (*remap)(void *tlb, unsigned long nslabs)) { size_t bytes = PAGE_ALIGN(nslabs << IO_TLB_SHIFT);