On Tue, May 30, 2023 at 11:40:35AM +0200, Johan Hovold wrote: > On Mon, May 29, 2023 at 09:55:15PM -0400, Linus Torvalds wrote: > > On Mon, May 29, 2023 at 11:18 AM Johan Hovold <johan@xxxxxxxxxx> wrote: > > > > > > I took a closer look at some of the modules that failed to load and > > > noticed a pattern in that they have dependencies that are needed by more > > > than one device. > > > > Ok, this is a "maybe something like this" RFC series of two patches - > > one trivial one to re-organize things a bit so that we can then do the > > real one which uses a filter based on the inode pointer to return an > > "idempotent return value" for module loads that share the same inode. > > > > It's entirely untested, and since I'm on the road I'm going to not > > really be able to test it. It compiles for me, and the code looks > > fairly straightforward, but it's probably buggy. > > > > It's very loosely based on Luis' attempt, but it > > (a) is internal to module loading > > (b) uses a reliable cookie > > (c) doesn't leave the cookie around randomly for later > > (d) has seen absolutely no testing > > > > Put another way: if somebody wants to play with this, please treat it > > as a starting point, not the final thing. You might need to debug > > things, and fix silly mistakes. > > With the missing spinlock initialisation fixed: > > -static struct spinlock idem_lock; > +static DEFINE_SPINLOCK(idem_lock); > > this passes basic smoke testing and allows the X13s to boot. > > It does not seem to have any significant impact on boot time, but it > avoids some of the unnecessary load attempts as intended: Took another look at code which modulo some nits like missing spaces around a + operator and an "ourselfs" typo looks good to me. So with the spinlock initialisation fixed: Reviewed-by: Johan Hovold <johan@xxxxxxxxxx> Tested-by: Johan Hovold <johan@xxxxxxxxxx> Johan