]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.25/patches.drivers/sgi-ioc4-request-submodules
Reenabled linux-xen and xen-image build
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.drivers / sgi-ioc4-request-submodules
CommitLineData
00e5a55c
BS
1From: Michael Reed <mdr@sgi.com>
2Subject: ioc4 request module
3Patch-mainline: ?
4References: bnc#429215
5
6It modifies ioc4.c to call request_module() for each of the two modules
7which support the hardware.
8
9The patch uses a workqueue to prevent a deadlock. It seems to do the right
10thing on my system, but I don't have a way to install test it. If this works
11and you find it acceptable, I'll try to get it pushed upstream next week.
12
13Mike
14
15Acked-by: Raymund Will <rw@suse.de>
16
17--- linux-2.6.27-rc6-7.2/drivers/misc/ioc4.c 2008-07-13 16:51:29.000000000 -0500
18+++ b/drivers/misc/ioc4.c 2008-10-03 15:58:40.225723102 -0500
19@@ -269,6 +269,17 @@ ioc4_variant(struct ioc4_driver_data *id
20 return IOC4_VARIANT_PCI_RT;
21 }
22
23+static void
24+ioc4_load_modules(struct work_struct *work)
25+{
26+ /* arg just has to be freed */
27+
28+ request_module("sgiioc4");
29+ request_module("ioc4_serial");
30+
31+ kfree(work);
32+}
33+
34 /* Adds a new instance of an IOC4 card */
35 static int
36 ioc4_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id)
37@@ -378,6 +389,22 @@ ioc4_probe(struct pci_dev *pdev, const s
38 }
39 mutex_unlock(&ioc4_mutex);
40
41+ if (idd->idd_variant != IOC4_VARIANT_PCI_RT) {
42+ struct work_struct *work;
43+ work = kzalloc(sizeof(struct work_struct), GFP_KERNEL);
44+ if (!work) {
45+ printk(KERN_WARNING
46+ "%s: IOC4 unable to allocate memory for "
47+ "load of sub-modules.\n",
48+ __FUNCTION__);
49+ }
50+ else {
51+ printk(KERN_INFO "IOC4 loading ioc4 submodule\n");
52+ INIT_WORK(work, ioc4_load_modules);
53+ schedule_work(work);
54+ }
55+ }
56+
57 return 0;
58
59 out_misc_region: