[linux-dvb] Howto automatically load saa7134-dvb?
Ole Reinartz
ole.reinartz at gmx.de
Mon Mar 20 21:18:24 CET 2006
Johannes Stezenbach schrieb:
> On Mon, Mar 13, 2006, Ole Reinartz wrote:
>
>> I'm struggling to automate the loading of saa7134-dvb for my Avermedia 777.
>> I'm using Jose Alberto Reguero's patch to get the 777 working, and it is
>> working well. However, whenever the system starts up, it detects the
>> card and loads the saa7134 module, but not the saa7134-dvb. After I
>> modprobe this module, everything is ok.
>> Is that working automatically at someones system? How can that be done?
>>
>> Now I searched the source for a reason and found out that someone
>> (probably Gerd Knorr himself) added a mechanism to load the saa7134-dvb
>> from the saa7134 whenever that detects a dvb- card.
>> The saa7134-dvb is dependent on saa7134, so it cannot be loaded while
>> the saa7134 itself is being loaded. So the code registers a notifier to
>> get notified after it got 'live' (i.e. its state changed to
>> MODULE_STATE_LIVE) I guess. And this notifier never gets called.
>> Looking in module.c (of kernel 2.6.15, which is the kernel I use) I find
>> that in sys_init_module() the notification mechanism is called only
>> before the module actually gets initialised, but not after that. That
>> confuses me a bit. Does someone know how this is going to work? Can the
>> module somehow act at the time it got 'live'?
>>
>
> Well, I reported a bug (modprobe saa7134 deadlocked) which
> lead to some discussion on lkml and finally Gerd's changes.
> I suggest you look up the date of Gerd's change from the
> hg or cvs history, and then search for the lkml discussion
> around that time. Probably a piece of code from the module
> notification stuff went missing. It would be nice to get
> this fixed.
>
I searched in the hg history on linuxtv.org. I guess the change you are
refering to is the one introducing the use of this notification
mechanism (register_module_depend() and related). Then I searched
through the kernel versions to find out how this notification works and
how it evolved. I didn't get to the version where this got introduced,
but with all versions I saw the mechanism in saa7134-core.c can't ever
have been working:
The notifier call chain is only called once in sys_init_module() in
kernel/module.c, and only with MODULE_STATE_COMING as the notfied state.
However the function registered as notifier (pending_call() in
saa7134-core.c) only acts when MODULE_STATE_LIVE is notified, which I
found done nowhere in the kernel.
So I ask myself (and the list, of course): has this ever worked? Was
there once a notification mechanism that sent this notification?
BTW I tried sending such a notification in sys_init_module() just before
the return, after the modules lock got released. But this only produces
a deadlock while startup.So now I'm stuck. Maybe I should ask in the
kernel list?
At a loss
Ole
More information about the linux-dvb
mailing list