[lkml]   [2004]   [Nov]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: modprobe + request_module() deadlock
    > > > 	MODULE_DEPENDS_ON("somemodule");
    > >
    > > On the other hand I don't depend on request_module() waiting for the
    > > modprobe being finished. So maybe we can solve that with a
    > > request_module_async()?
    > The problem is fairly simple: we don't let you get at the symbols from a
    > module which hasn't finished initializing yet. This means that a
    > request_module() inside a module's init() will fail if the requested
    > module depends on this one. async() will race with init() finishing, so
    > won't really help.

    Hmm, so module loading is not serialized by a lock? I assumed that
    caused the deadlock in $subject which started this thread ...

    > The traditional way to do this has been to have saa7134-empress do its
    > own probe, and likewise saa7134-dvb.

    They can't actually probe themself. It's _one_ PCI device (driven by
    the saa7134 module) which can handle (among other v4l-related things)
    the DMA transfer of mpeg streams. That can be used in different ways
    (or not at all) and the different use cases are handled by the

    So the way it is intended to work is that saa7134 has the pci table and
    gets autoloaded by hotplug, it will have a look at the hardware and then
    load either saa7134-empress or saa7134-dvb or none of them, so you'll
    get everything nicely autoloaded.

    > Unfortunately, these days modules are not supposed to fail to load
    > simply because there are no devices, so wild module loading has a real
    > cost.

    Yes, thats exactly the problem. And this is especially true for the
    saa7134-dvb module as this one has a bunch of dependencies to other
    modules of the dvb subsystem. Thats why I try to avoid loading them
    if they are not needed.

    > Otherwise I'd be tempted to make multiple aliases load *all* of them,
    > and solve the problem that way.

    Well, that will actually work. You can simply load both saa7134-empress
    and saa7134-dvb, the saa7134 core module will take care that they can
    only attach to devices they can actually handle. Drawback is the memory
    footprint ...


    #define printk(args...) fprintf(stderr, ## args)
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 14:08    [W:0.022 / U:297.288 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site