Message ID | 20200527043426.3242439-1-natechancellor@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: omap3isp: Shuffle cacheflush.h and include mm.h | expand |
On Tue, May 26, 2020 at 09:34:27PM -0700, Nathan Chancellor wrote: > After mm.h was removed from the asm-generic version of cacheflush.h, > s390 allyesconfig shows several warnings of the following nature: Hmm, I'm pretty sure I sent the same fix a few days ago in response to a build bot report. But if that didn't get picked up I'm fine with your version of it as well of course: Acked-by: Christoph Hellwig <hch@lst.de>
Hi Nathan, CC Laurent On Wed, May 27, 2020 at 6:37 AM Nathan Chancellor <natechancellor@gmail.com> wrote: > After mm.h was removed from the asm-generic version of cacheflush.h, > s390 allyesconfig shows several warnings of the following nature: > > In file included from ./arch/s390/include/generated/asm/cacheflush.h:1, > from drivers/media/platform/omap3isp/isp.c:42: > ./include/asm-generic/cacheflush.h:16:42: warning: 'struct mm_struct' > declared inside parameter list will not be visible outside of this > definition or declaration > > cacheflush.h does not include mm.h nor does it include any forward > declaration of these structures hence the warning. To avoid this, > include mm.h explicitly in this file and shuffle cacheflush.h below it. > > Fixes: 19c0054597a0 ("asm-generic: don't include <linux/mm.h> in cacheflush.h") > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Thanks for your patch! > I am aware the fixes tag is kind of irrelevant because that SHA will > change in the next linux-next revision and this will probably get folded > into the original patch anyways but still. > > The other solution would be to add forward declarations of these structs > to the top of cacheflush.h, I just chose to do what Christoph did in the > original patch. I am happy to do that instead if you all feel that is > better. That actually looks like a better solution to me, as it would address the problem for all users. > drivers/media/platform/omap3isp/isp.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c > index a4ee6b86663e..54106a768e54 100644 > --- a/drivers/media/platform/omap3isp/isp.c > +++ b/drivers/media/platform/omap3isp/isp.c > @@ -39,8 +39,6 @@ > * Troy Laramy <t-laramy@ti.com> > */ > > -#include <asm/cacheflush.h> > - > #include <linux/clk.h> > #include <linux/clkdev.h> > #include <linux/delay.h> > @@ -49,6 +47,7 @@ > #include <linux/i2c.h> > #include <linux/interrupt.h> > #include <linux/mfd/syscon.h> > +#include <linux/mm.h> > #include <linux/module.h> > #include <linux/omap-iommu.h> > #include <linux/platform_device.h> > @@ -58,6 +57,8 @@ > #include <linux/sched.h> > #include <linux/vmalloc.h> > > +#include <asm/cacheflush.h> > + > #ifdef CONFIG_ARM_DMA_USE_IOMMU > #include <asm/dma-iommu.h> > #endif Why does this file need <asm/cacheflush.h> at all? It doesn't call any of the flush_*() functions, and seems to compile fine without (on arm32). Perhaps it was included at the top intentionally, to override the definitions of copy_{to,from}_user_page()? Fortunately that doesn't seem to be the case, from a quick look at the assembler output. So let's just remove the #include instead? Gr{oetje,eeting}s, Geert
Hi Geert, On Wed, May 27, 2020 at 09:02:51AM +0200, Geert Uytterhoeven wrote: > Hi Nathan, > > CC Laurent > > On Wed, May 27, 2020 at 6:37 AM Nathan Chancellor > <natechancellor@gmail.com> wrote: > > After mm.h was removed from the asm-generic version of cacheflush.h, > > s390 allyesconfig shows several warnings of the following nature: > > > > In file included from ./arch/s390/include/generated/asm/cacheflush.h:1, > > from drivers/media/platform/omap3isp/isp.c:42: > > ./include/asm-generic/cacheflush.h:16:42: warning: 'struct mm_struct' > > declared inside parameter list will not be visible outside of this > > definition or declaration > > > > cacheflush.h does not include mm.h nor does it include any forward > > declaration of these structures hence the warning. To avoid this, > > include mm.h explicitly in this file and shuffle cacheflush.h below it. > > > > Fixes: 19c0054597a0 ("asm-generic: don't include <linux/mm.h> in cacheflush.h") > > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > > Thanks for your patch! > > > I am aware the fixes tag is kind of irrelevant because that SHA will > > change in the next linux-next revision and this will probably get folded > > into the original patch anyways but still. > > > > The other solution would be to add forward declarations of these structs > > to the top of cacheflush.h, I just chose to do what Christoph did in the > > original patch. I am happy to do that instead if you all feel that is > > better. > > That actually looks like a better solution to me, as it would address the > problem for all users. > > > drivers/media/platform/omap3isp/isp.c | 5 +++-- > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c > > index a4ee6b86663e..54106a768e54 100644 > > --- a/drivers/media/platform/omap3isp/isp.c > > +++ b/drivers/media/platform/omap3isp/isp.c > > @@ -39,8 +39,6 @@ > > * Troy Laramy <t-laramy@ti.com> > > */ > > > > -#include <asm/cacheflush.h> > > - > > #include <linux/clk.h> > > #include <linux/clkdev.h> > > #include <linux/delay.h> > > @@ -49,6 +47,7 @@ > > #include <linux/i2c.h> > > #include <linux/interrupt.h> > > #include <linux/mfd/syscon.h> > > +#include <linux/mm.h> > > #include <linux/module.h> > > #include <linux/omap-iommu.h> > > #include <linux/platform_device.h> > > @@ -58,6 +57,8 @@ > > #include <linux/sched.h> > > #include <linux/vmalloc.h> > > > > +#include <asm/cacheflush.h> > > + > > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > #include <asm/dma-iommu.h> > > #endif > > Why does this file need <asm/cacheflush.h> at all? > It doesn't call any of the flush_*() functions, and seems to compile fine > without (on arm32). > > Perhaps it was included at the top intentionally, to override the definitions > of copy_{to,from}_user_page()? Fortunately that doesn't seem to be the > case, from a quick look at the assembler output. > > So let's just remove the #include instead? Sounds good to me. I can send a patch if needed or I suppose Andrew can just make a small fixup patch for it. Let me know what I should do. Cheers, Nathan
Hi Nathan, (CC'ing Sakari Ailus and the linux-media mailing list) On Wed, May 27, 2020 at 01:13:37AM -0700, Nathan Chancellor wrote: > On Wed, May 27, 2020 at 09:02:51AM +0200, Geert Uytterhoeven wrote: > > On Wed, May 27, 2020 at 6:37 AM Nathan Chancellor wrote: > > > After mm.h was removed from the asm-generic version of cacheflush.h, > > > s390 allyesconfig shows several warnings of the following nature: > > > > > > In file included from ./arch/s390/include/generated/asm/cacheflush.h:1, > > > from drivers/media/platform/omap3isp/isp.c:42: > > > ./include/asm-generic/cacheflush.h:16:42: warning: 'struct mm_struct' > > > declared inside parameter list will not be visible outside of this > > > definition or declaration > > > > > > cacheflush.h does not include mm.h nor does it include any forward > > > declaration of these structures hence the warning. To avoid this, > > > include mm.h explicitly in this file and shuffle cacheflush.h below it. > > > > > > Fixes: 19c0054597a0 ("asm-generic: don't include <linux/mm.h> in cacheflush.h") > > > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> > > > > Thanks for your patch! > > > > > I am aware the fixes tag is kind of irrelevant because that SHA will > > > change in the next linux-next revision and this will probably get folded > > > into the original patch anyways but still. > > > > > > The other solution would be to add forward declarations of these structs > > > to the top of cacheflush.h, I just chose to do what Christoph did in the > > > original patch. I am happy to do that instead if you all feel that is > > > better. > > > > That actually looks like a better solution to me, as it would address the > > problem for all users. Headers should be self-contained, so that would be the best fix in my opinion. This being said, as cacheflush.h isn't needed in isp.c, I think we should also drop it. It seems to have been included there since the first driver version, and was likely a left-over from the out-of-tree development. Manual cache handling was part of drivers/media/platform/omap3isp/ispqueue.c and has been removed in commit fbac1400bd1a ("[media] omap3isp: Move to videobuf2"). cacheflush.h can also be dropped from ispvideo.c which suffers from the same issue. > > > drivers/media/platform/omap3isp/isp.c | 5 +++-- > > > 1 file changed, 3 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c > > > index a4ee6b86663e..54106a768e54 100644 > > > --- a/drivers/media/platform/omap3isp/isp.c > > > +++ b/drivers/media/platform/omap3isp/isp.c > > > @@ -39,8 +39,6 @@ > > > * Troy Laramy <t-laramy@ti.com> > > > */ > > > > > > -#include <asm/cacheflush.h> > > > - > > > #include <linux/clk.h> > > > #include <linux/clkdev.h> > > > #include <linux/delay.h> > > > @@ -49,6 +47,7 @@ > > > #include <linux/i2c.h> > > > #include <linux/interrupt.h> > > > #include <linux/mfd/syscon.h> > > > +#include <linux/mm.h> > > > #include <linux/module.h> > > > #include <linux/omap-iommu.h> > > > #include <linux/platform_device.h> > > > @@ -58,6 +57,8 @@ > > > #include <linux/sched.h> > > > #include <linux/vmalloc.h> > > > > > > +#include <asm/cacheflush.h> > > > + > > > #ifdef CONFIG_ARM_DMA_USE_IOMMU > > > #include <asm/dma-iommu.h> > > > #endif > > > > Why does this file need <asm/cacheflush.h> at all? > > It doesn't call any of the flush_*() functions, and seems to compile fine > > without (on arm32). > > > > Perhaps it was included at the top intentionally, to override the definitions > > of copy_{to,from}_user_page()? Fortunately that doesn't seem to be the > > case, from a quick look at the assembler output. > > > > So let's just remove the #include instead? > > Sounds good to me. I can send a patch if needed or I suppose Andrew can > just make a small fixup patch for it. Let me know what I should do.
diff --git a/drivers/media/platform/omap3isp/isp.c b/drivers/media/platform/omap3isp/isp.c index a4ee6b86663e..54106a768e54 100644 --- a/drivers/media/platform/omap3isp/isp.c +++ b/drivers/media/platform/omap3isp/isp.c @@ -39,8 +39,6 @@ * Troy Laramy <t-laramy@ti.com> */ -#include <asm/cacheflush.h> - #include <linux/clk.h> #include <linux/clkdev.h> #include <linux/delay.h> @@ -49,6 +47,7 @@ #include <linux/i2c.h> #include <linux/interrupt.h> #include <linux/mfd/syscon.h> +#include <linux/mm.h> #include <linux/module.h> #include <linux/omap-iommu.h> #include <linux/platform_device.h> @@ -58,6 +57,8 @@ #include <linux/sched.h> #include <linux/vmalloc.h> +#include <asm/cacheflush.h> + #ifdef CONFIG_ARM_DMA_USE_IOMMU #include <asm/dma-iommu.h> #endif
After mm.h was removed from the asm-generic version of cacheflush.h, s390 allyesconfig shows several warnings of the following nature: In file included from ./arch/s390/include/generated/asm/cacheflush.h:1, from drivers/media/platform/omap3isp/isp.c:42: ./include/asm-generic/cacheflush.h:16:42: warning: 'struct mm_struct' declared inside parameter list will not be visible outside of this definition or declaration cacheflush.h does not include mm.h nor does it include any forward declaration of these structures hence the warning. To avoid this, include mm.h explicitly in this file and shuffle cacheflush.h below it. Fixes: 19c0054597a0 ("asm-generic: don't include <linux/mm.h> in cacheflush.h") Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> --- I am aware the fixes tag is kind of irrelevant because that SHA will change in the next linux-next revision and this will probably get folded into the original patch anyways but still. The other solution would be to add forward declarations of these structs to the top of cacheflush.h, I just chose to do what Christoph did in the original patch. I am happy to do that instead if you all feel that is better. drivers/media/platform/omap3isp/isp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)