Skip to contentSkip to conversation

dmaengine: remove debugfs #ifdef

PATCH Applied Arnd Bergmann 3 participants 5 messages Sep 20, 2021 – Oct 25, 2021

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 dmaengine: remove debugfs #ifdef

From: Arnd Bergmann <[email protected]>

The ptdma driver has added debugfs support, but this fails to build when debugfs is disabled:

drivers/dma/ptdma/ptdma-debugfs.c: In function 'ptdma_debugfs_setup':
drivers/dma/ptdma/ptdma-debugfs.c:93:54: error: 'struct dma_device' has no member named 'dbg_dev_root'
93 | debugfs_create_file("info", 0400, pt->dma_dev.dbg_dev_root, pt,
| ^
drivers/dma/ptdma/ptdma-debugfs.c:96:55: error: 'struct dma_device' has no member named 'dbg_dev_root'
96 | debugfs_create_file("stats", 0400, pt->dma_dev.dbg_dev_root, pt,
| ^
drivers/dma/ptdma/ptdma-debugfs.c:102:52: error: 'struct dma_device' has no member named 'dbg_dev_root'
102 | debugfs_create_dir("q", pt->dma_dev.dbg_dev_root);
| ^

Remove the #ifdef in the header, as this only saves a few bytes, but would require ugly #ifdefs in each driver using it. Simplify the other user while we're at it.

Fixes e2fb2e2a33fa ("dmaengine: ptdma: Add debugfs entries for PTDMA")
Fixes 26cf132de6f7 ("dmaengine: Create debug directories for DMA devices")
---
 drivers/dma/xilinx/xilinx_dpdma.c | 15 +--------------
 include/linux/dmaengine.h         |  2 --
 2 files changed, 1 insertion(+), 16 deletions(-)
drivers/dma/xilinx/xilinx_dpdma.c +1 -14
index b280a53e8570..ce5c66e6897d 100644
@@ -271,9 +271,6 @@ struct xilinx_dpdma_device {
 /* -----------------------------------------------------------------------------
  * DebugFS
  */
-
-#ifdef CONFIG_DEBUG_FS
-
 #define XILINX_DPDMA_DEBUGFS_READ_MAX_SIZE	32
 #define XILINX_DPDMA_DEBUGFS_UINT16_MAX_STR	"65535"
 
@@ -299,7 +296,7 @@ struct xilinx_dpdma_debugfs_request {
 
 static void xilinx_dpdma_debugfs_desc_done_irq(struct xilinx_dpdma_chan *chan)
 {
-	if (chan->id == dpdma_debugfs.chan_id)
+	if (IS_ENABLED(CONFIG_DEBUG_FS) && chan->id == dpdma_debugfs.chan_id)
 		dpdma_debugfs.xilinx_dpdma_irq_done_count++;
 }
 
@@ -462,16 +459,6 @@ static void xilinx_dpdma_debugfs_init(struct xilinx_dpdma_device *xdev)
 		dev_err(xdev->dev, "Failed to create debugfs testcase file\n");
 }
 
-#else
-static void xilinx_dpdma_debugfs_init(struct xilinx_dpdma_device *xdev)
-{
-}
-
-static void xilinx_dpdma_debugfs_desc_done_irq(struct xilinx_dpdma_chan *chan)
-{
-}
-#endif /* CONFIG_DEBUG_FS */
-
 /* -----------------------------------------------------------------------------
  * I/O Accessors
  */
include/linux/dmaengine.h +0 -2
index e5c2c9e71bf1..9000f3ffce8b 100644
@@ -944,10 +944,8 @@ struct dma_device {
 	void (*device_issue_pending)(struct dma_chan *chan);
 	void (*device_release)(struct dma_device *dev);
 	/* debugfs support */
-#ifdef CONFIG_DEBUG_FS
 	void (*dbg_summary_show)(struct seq_file *s, struct dma_device *dev);
 	struct dentry *dbg_dev_root;
-#endif
 };
 
 static inline int dmaengine_slave_config(struct dma_chan *chan,
Signature · 1 line
2.29.2
maintainer
#1 lore raw

Hi Arnd,

Thank you for the patch.

Quoted 33 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

The ptdma driver has added debugfs support, but this fails to build when debugfs is disabled:

drivers/dma/ptdma/ptdma-debugfs.c: In function 'ptdma_debugfs_setup':
drivers/dma/ptdma/ptdma-debugfs.c:93:54: error: 'struct dma_device' has no member named 'dbg_dev_root'
93 | debugfs_create_file("info", 0400, pt->dma_dev.dbg_dev_root, pt,
| ^
drivers/dma/ptdma/ptdma-debugfs.c:96:55: error: 'struct dma_device' has no member named 'dbg_dev_root'
96 | debugfs_create_file("stats", 0400, pt->dma_dev.dbg_dev_root, pt,
| ^
drivers/dma/ptdma/ptdma-debugfs.c:102:52: error: 'struct dma_device' has no member named 'dbg_dev_root'
102 | debugfs_create_dir("q", pt->dma_dev.dbg_dev_root);
| ^

Remove the #ifdef in the header, as this only saves a few bytes, but would require ugly #ifdefs in each driver using it. Simplify the other user while we're at it.

Fixes e2fb2e2a33fa ("dmaengine: ptdma: Add debugfs entries for PTDMA")
Fixes 26cf132de6f7 ("dmaengine: Create debug directories for DMA devices")
---
 drivers/dma/xilinx/xilinx_dpdma.c | 15 +--------------
 include/linux/dmaengine.h         |  2 --
 2 files changed, 1 insertion(+), 16 deletions(-)
drivers/dma/xilinx/xilinx_dpdma.c +0 -0
index b280a53e8570..ce5c66e6897d 100644

drivers/dma/xilinx/xilinx_dpdma.c struct xilinx_dpdma_device { · line 276

Quoted 6 lines
drivers/dma/xilinx/xilinx_dpdma.c +0 -3
@@ -271,9 +271,6 @@ struct xilinx_dpdma_device {
 /* -----------------------------------------------------------------------------
  * DebugFS
  */
-
-#ifdef CONFIG_DEBUG_FS
-

It's only a few bytes of data in struct dma_device, but a bit more in .text here. Is the simplification really required in this driver ?

Quoted 44 lines
drivers/dma/xilinx/xilinx_dpdma.c +1 -11
 #define XILINX_DPDMA_DEBUGFS_READ_MAX_SIZE	32
 #define XILINX_DPDMA_DEBUGFS_UINT16_MAX_STR	"65535"
 
@@ -299,7 +296,7 @@ struct xilinx_dpdma_debugfs_request {
 
 static void xilinx_dpdma_debugfs_desc_done_irq(struct xilinx_dpdma_chan *chan)
 {
-	if (chan->id == dpdma_debugfs.chan_id)
+	if (IS_ENABLED(CONFIG_DEBUG_FS) && chan->id == dpdma_debugfs.chan_id)
 		dpdma_debugfs.xilinx_dpdma_irq_done_count++;
 }
 
@@ -462,16 +459,6 @@ static void xilinx_dpdma_debugfs_init(struct xilinx_dpdma_device *xdev)
 		dev_err(xdev->dev, "Failed to create debugfs testcase file\n");
 }
 
-#else
-static void xilinx_dpdma_debugfs_init(struct xilinx_dpdma_device *xdev)
-{
-}
-
-static void xilinx_dpdma_debugfs_desc_done_irq(struct xilinx_dpdma_chan *chan)
-{
-}
-#endif /* CONFIG_DEBUG_FS */
-
 /* -----------------------------------------------------------------------------
  * I/O Accessors
  */
include/linux/dmaengine.h +0 -2
index e5c2c9e71bf1..9000f3ffce8b 100644
@@ -944,10 +944,8 @@ struct dma_device {
 	void (*device_issue_pending)(struct dma_chan *chan);
 	void (*device_release)(struct dma_device *dev);
 	/* debugfs support */
-#ifdef CONFIG_DEBUG_FS
 	void (*dbg_summary_show)(struct seq_file *s, struct dma_device *dev);
 	struct dentry *dbg_dev_root;
-#endif
 };
 
 static inline int dmaengine_slave_config(struct dma_chan *chan,
Signature · 3 lines
Regards,

Laurent Pinchart
#2 lore raw
Quoted 3 lines · Laurent Pinchart

It's only a few bytes of data in struct dma_device, but a bit more in .text here. Is the simplification really required in this driver ?

The intention was to not change the resulting object code in this driver, and I still don't see where it would grow after dead-code-elimination removes all the unused static functions. What am I missing?

Arnd

maintainer Reviewed-by
#3 lore raw

Hi Arnd,

Quoted 8 lines · Arnd Bergmann
Quoted 3 lines · Laurent Pinchart

It's only a few bytes of data in struct dma_device, but a bit more in .text here. Is the simplification really required in this driver ?

The intention was to not change the resulting object code in this driver, and I still don't see where it would grow after dead-code-elimination removes all the unused static functions. What am I missing?

Indeed, gcc does a fairly good job there. The .text section doesn't grow. Interestingly, there's an increase in size in the .data and .rodata sections in the xilinx-dpdma module:

-  8 .rodata.str1.8 0000029f  0000000000000000  0000000000000000  00003660  2**3
+  8 .rodata.str1.8 000002a7  0000000000000000  0000000000000000  00003660  2**3
- 10 .rodata       00001080  0000000000000000  0000000000000000  00003960  2**5
+ 10 .rodata       000010e0  0000000000000000  0000000000000000  00003960  2**5
- 15 .data         00001050  0000000000000000  0000000000000000  00004e40  2**5
+ 15 .data         00001090  0000000000000000  0000000000000000  00004ea0  2**5

I'm not entirely sure where it comes from, it may be related to instrumentation caused by debugging options.

For your patch,

Signature · 3 lines
Regards,

Laurent Pinchart
maintainer Applied
#4 lore raw
In reply to Arnd Bergmann
Quoted 16 lines · Arnd Bergmann

From: Arnd Bergmann <[email protected]>

The ptdma driver has added debugfs support, but this fails to build when debugfs is disabled:

drivers/dma/ptdma/ptdma-debugfs.c: In function 'ptdma_debugfs_setup':
drivers/dma/ptdma/ptdma-debugfs.c:93:54: error: 'struct dma_device' has no member named 'dbg_dev_root'
93 | debugfs_create_file("info", 0400, pt->dma_dev.dbg_dev_root, pt,
| ^
drivers/dma/ptdma/ptdma-debugfs.c:96:55: error: 'struct dma_device' has no member named 'dbg_dev_root'
96 | debugfs_create_file("stats", 0400, pt->dma_dev.dbg_dev_root, pt,
| ^
drivers/dma/ptdma/ptdma-debugfs.c:102:52: error: 'struct dma_device' has no member named 'dbg_dev_root'
102 | debugfs_create_dir("q", pt->dma_dev.dbg_dev_root);
| ^

Quoted 3 lines

Remove the #ifdef in the header, as this only saves a few bytes, but would require ugly #ifdefs in each driver using it. Simplify the other user while we're at it.

Applied, thanks

Signature · 1 line
~Vinod