Adjust the registration method of PCIe and INET drivers, and set raid6_select to start asynchronously by default.
Asynchronous modules should now be configured in the DTS file, with an additional variable in the bootargs. The recommended configuration is as follows: driver_async_probe=spacemit-hdmi-drv,i2c-spacemit-k1x,ri2c-spacemit-k1x,k1xccic,sdhci-spacemit,k1x-dwc-pcie,pxa2xx-uart Change-Id: I2877696e84cc735c95363a1614dcbf3e5e26d5e0
This commit is contained in:
@@ -1861,6 +1861,7 @@ static const struct dev_pm_ops k1x_pcie_pm_ops = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_driver k1x_pcie_driver = {
|
static struct platform_driver k1x_pcie_driver = {
|
||||||
|
.probe = k1x_pcie_probe,
|
||||||
.driver = {
|
.driver = {
|
||||||
.name = "k1x-dwc-pcie",
|
.name = "k1x-dwc-pcie",
|
||||||
.of_match_table = of_k1x_pcie_match,
|
.of_match_table = of_k1x_pcie_match,
|
||||||
@@ -1868,4 +1869,4 @@ static struct platform_driver k1x_pcie_driver = {
|
|||||||
.pm = &k1x_pcie_pm_ops,
|
.pm = &k1x_pcie_pm_ops,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
builtin_platform_driver_probe(k1x_pcie_driver, k1x_pcie_probe);
|
module_platform_driver(k1x_pcie_driver);
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
#else
|
#else
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/gfp.h>
|
#include <linux/gfp.h>
|
||||||
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/of.h>
|
||||||
|
#include <linux/async.h>
|
||||||
/* In .bss so it's zeroed */
|
/* In .bss so it's zeroed */
|
||||||
const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(256)));
|
const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(256)));
|
||||||
EXPORT_SYMBOL(raid6_empty_zero_page);
|
EXPORT_SYMBOL(raid6_empty_zero_page);
|
||||||
@@ -289,7 +292,18 @@ static void raid6_exit(void)
|
|||||||
do { } while (0);
|
do { } while (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
subsys_initcall(raid6_select_algo);
|
static void raid6_select_algo_wrapper(void *data, long long unsigned int arg)
|
||||||
|
{
|
||||||
|
raid6_select_algo();
|
||||||
|
}
|
||||||
|
|
||||||
|
static int __init raid6_select_algo_async_init(void)
|
||||||
|
{
|
||||||
|
async_schedule(raid6_select_algo_wrapper, NULL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
subsys_initcall(raid6_select_algo_async_init);
|
||||||
module_exit(raid6_exit);
|
module_exit(raid6_exit);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_DESCRIPTION("RAID6 Q-syndrome calculations");
|
MODULE_DESCRIPTION("RAID6 Q-syndrome calculations");
|
||||||
|
|||||||
@@ -2080,7 +2080,7 @@ out_unregister_tcp_proto:
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
fs_initcall(inet_init);
|
subsys_initcall(inet_init);
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------ */
|
/* ------------------------------------------------------------------------ */
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user