Re: [PATCH] nubus: Avoid scanning "private" card resources

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Wed, 22 Mar 2023, Finn Thain wrote:

Some Nubus cards have many ROM resources. A single Radius video card
produced well over a thousand entries under /proc/bus/nubus. Populating
/proc/bus/nubus on a slow machine with several such cards installed takes
long enough that the user may think that the system is wedged. All those
procfs entries also consume significant RAM though they are not normally
needed except by developers. Omit the "private" resources from
/proc/bus/nubus/ by default and add a kernel parameter to enable them
when needed. On the test machine, this saved 196 KiB and 5 seconds.


This patch is nice and short but I suspect it can be improved upon. If the 
procfs entries are only needed for debugging then I should probably omit 
all of them by default, and save even more time and RAM. So I think I'll 
revise this patch.

Tested-by: Stan Johnson <userm57@xxxxxxxxx>
Signed-off-by: Finn Thain <fthain@xxxxxxxxxxxxxx>
---
 drivers/nubus/nubus.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/nubus/nubus.c b/drivers/nubus/nubus.c
index f70ba58dbc55..777099b8e818 100644
--- a/drivers/nubus/nubus.c
+++ b/drivers/nubus/nubus.c
@@ -34,6 +34,9 @@
 
 LIST_HEAD(nubus_func_rsrcs);
 
+bool all_func_rsrcs;
+module_param(all_func_rsrcs, bool, 0444);
+
 /* Meaning of "bytelanes":
 
    The card ROM may appear on any or all bytes of each long word in
@@ -572,9 +575,9 @@ nubus_get_functional_resource(struct nubus_board *board, int slot,
 			nubus_proc_add_rsrc(dir.procdir, &ent);
 			break;
 		default:
-			/* Local/Private resources have their own
-			   function */
-			nubus_get_private_resource(fres, dir.procdir, &ent);
+			if (all_func_rsrcs)
+				nubus_get_private_resource(fres, dir.procdir,
+							   &ent);
 		}
 	}
 




[Index of Archives]     [Video for Linux]     [Yosemite News]     [Linux S/390]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux