mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 21:30:53 +07:00
ieee1394: video1394: reorder module init, prepare BKL removal
This prepares video1394 for removal of the BKL (big kernel lock): It allows video1394_open() to be called while video1394_init_module() is still in progress. Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
parent
fde675fa2a
commit
055a7da0bb
@ -228,10 +228,8 @@ void hpsb_register_highlevel(struct hpsb_highlevel *hl)
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
hpsb_init_highlevel(hl);
|
||||
INIT_LIST_HEAD(&hl->addr_list);
|
||||
INIT_LIST_HEAD(&hl->host_info_list);
|
||||
|
||||
rwlock_init(&hl->host_info_lock);
|
||||
|
||||
down_write(&hl_drivers_sem);
|
||||
list_add_tail(&hl->hl_list, &hl_drivers);
|
||||
|
@ -2,7 +2,7 @@
|
||||
#define IEEE1394_HIGHLEVEL_H
|
||||
|
||||
#include <linux/list.h>
|
||||
#include <linux/spinlock_types.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct module;
|
||||
@ -103,6 +103,17 @@ int highlevel_lock64(struct hpsb_host *host, int nodeid, octlet_t *store,
|
||||
void highlevel_fcp_request(struct hpsb_host *host, int nodeid, int direction,
|
||||
void *data, size_t length);
|
||||
|
||||
/**
|
||||
* hpsb_init_highlevel - initialize a struct hpsb_highlevel
|
||||
*
|
||||
* This is only necessary if hpsb_get_hostinfo_bykey can be called
|
||||
* before hpsb_register_highlevel.
|
||||
*/
|
||||
static inline void hpsb_init_highlevel(struct hpsb_highlevel *hl)
|
||||
{
|
||||
rwlock_init(&hl->host_info_lock);
|
||||
INIT_LIST_HEAD(&hl->host_info_list);
|
||||
}
|
||||
void hpsb_register_highlevel(struct hpsb_highlevel *hl);
|
||||
void hpsb_unregister_highlevel(struct hpsb_highlevel *hl);
|
||||
|
||||
|
@ -1503,6 +1503,8 @@ static int __init video1394_init_module (void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
hpsb_init_highlevel(&video1394_highlevel);
|
||||
|
||||
cdev_init(&video1394_cdev, &video1394_fops);
|
||||
video1394_cdev.owner = THIS_MODULE;
|
||||
ret = cdev_add(&video1394_cdev, IEEE1394_VIDEO1394_DEV, 16);
|
||||
|
Loading…
Reference in New Issue
Block a user