History

Merge branches 'acpi-misc' and 'pnp'

Merge miscellaneous ACPI support updates and a PNP update for 6.19-rc1: - Replace `core::mem::zeroed` with `pin_init::zeroed` in the ACPI Rust code (Siyuan Huang) - Update the ACPI code to use the new style of allocating workqueues and new global workqueues (Marco Crivellari) - Fix two spelling mistakes in the ACPI code (Chu Guangqing) - Fix ISAPNP to generate uevents to auto-load modules (René Rebe) * acpi-misc: ACPI: PM: Fix a spelling mistake ACPI: LPSS: Fix a spelling mistake ACPI: thermal: Add WQ_PERCPU to alloc_workqueue() users ACPI: OSL: Add WQ_PERCPU to alloc_workqueue() users ACPI: EC: Add WQ_PERCPU to alloc_workqueue() users ACPI: OSL: replace use of system_wq with system_percpu_wq ACPI: scan: replace use of system_unbound_wq with system_dfl_wq rust: acpi: replace `core::mem::zeroed` with `pin_init::zeroed` * pnp: PNP: Fix ISAPNP to generate uevents to auto-load modules

Rafael J. Wysocki committed 11 months ago

Commit af47d983 parents ba9aeba a508939 e96190d8 files · +30 −11Browse files

Unified · Split

8 files
  1. drivers/acpi/ec.c +2 −1
  2. drivers/acpi/osl.c +3 −3
  3. drivers/acpi/scan.c +1 −1
  4. drivers/acpi/sleep.c +1 −1
  5. drivers/acpi/thermal.c +2 −1
  6. drivers/acpi/x86/lpss.c +1 −1
  7. drivers/pnp/driver.c +19 −0
  8. rust/kernel/acpi.rs +1 −3
drivers/acpi/ec.c+2−1
@@ -2294,7 +2294,8 @@ static int acpi_ec_init_workqueues(void) · 2293 unmodified lines
2294 ec_wq = alloc_ordered_workqueue("kec", 0);2294 ec_wq = alloc_ordered_workqueue("kec", 0);
2295 2295
2296 if (!ec_query_wq)2296 if (!ec_query_wq)
2297 ec_query_wq = alloc_workqueue("kec_query", 0, ec_max_queries);2297 ec_query_wq = alloc_workqueue("kec_query", WQ_PERCPU,
2298 ec_max_queries);
2298 2299
2299 if (!ec_wq || !ec_query_wq) {2300 if (!ec_wq || !ec_query_wq) {
2300 acpi_ec_destroy_workqueues();2301 acpi_ec_destroy_workqueues();
drivers/acpi/osl.c+3−3
@@ -398,7 +398,7 @@ static void acpi_os_drop_map_ref(struct acpi_ioremap *map) · 397 unmodified lines
398 list_del_rcu(&map->list);398 list_del_rcu(&map->list);
399 399
400 INIT_RCU_WORK(&map->track.rwork, acpi_os_map_remove);400 INIT_RCU_WORK(&map->track.rwork, acpi_os_map_remove);
401 queue_rcu_work(system_wq, &map->track.rwork);401 queue_rcu_work(system_percpu_wq, &map->track.rwork);
402}402}
403 403
404/**404/**
@@ -1694,8 +1694,8 @@ acpi_status __init acpi_os_initialize(void) · 1289 unmodified lines
1694 1694
1695acpi_status __init acpi_os_initialize1(void)1695acpi_status __init acpi_os_initialize1(void)
1696{1696{
1697 kacpid_wq = alloc_workqueue("kacpid", 0, 1);1697 kacpid_wq = alloc_workqueue("kacpid", WQ_PERCPU, 1);
1698 kacpi_notify_wq = alloc_workqueue("kacpi_notify", 0, 0);1698 kacpi_notify_wq = alloc_workqueue("kacpi_notify", WQ_PERCPU, 0);
1699 kacpi_hotplug_wq = alloc_ordered_workqueue("kacpi_hotplug", 0);1699 kacpi_hotplug_wq = alloc_ordered_workqueue("kacpi_hotplug", 0);
1700 BUG_ON(!kacpid_wq);1700 BUG_ON(!kacpid_wq);
1701 BUG_ON(!kacpi_notify_wq);1701 BUG_ON(!kacpi_notify_wq);
drivers/acpi/scan.c+1−1
@@ -2397,7 +2397,7 @@ static bool acpi_scan_clear_dep_queue(struct acpi_device *adev) · 2396 unmodified lines
2397 * initial enumeration of devices is complete, put it into the unbound2397 * initial enumeration of devices is complete, put it into the unbound
2398 * workqueue.2398 * workqueue.
2399 */2399 */
2400 queue_work(system_unbound_wq, &cdw->work);2400 queue_work(system_dfl_wq, &cdw->work);
2401 2401
2402 return true;2402 return true;
2403}2403}
drivers/acpi/sleep.c+1−1
@@ -642,7 +642,7 @@ static int acpi_suspend_enter(suspend_state_t pm_state) · 641 unmodified lines
642 /*642 /*
643 * Disable all GPE and clear their status bits before interrupts are643 * Disable all GPE and clear their status bits before interrupts are
644 * enabled. Some GPEs (like wakeup GPEs) have no handlers and this can644 * enabled. Some GPEs (like wakeup GPEs) have no handlers and this can
645 * prevent them from producing spurious interrups.645 * prevent them from producing spurious interrupts.
646 *646 *
647 * acpi_leave_sleep_state() will reenable specific GPEs later.647 * acpi_leave_sleep_state() will reenable specific GPEs later.
648 *648 *
drivers/acpi/thermal.c+2−1
@@ -1060,7 +1060,8 @@ static int __init acpi_thermal_init(void) · 1059 unmodified lines
1060 }1060 }
1061 1061
1062 acpi_thermal_pm_queue = alloc_workqueue("acpi_thermal_pm",1062 acpi_thermal_pm_queue = alloc_workqueue("acpi_thermal_pm",
1063 WQ_HIGHPRI | WQ_MEM_RECLAIM, 0);1063 WQ_HIGHPRI | WQ_MEM_RECLAIM | WQ_PERCPU,
1064 0);
1064 if (!acpi_thermal_pm_queue)1065 if (!acpi_thermal_pm_queue)
1065 return -ENODEV;1066 return -ENODEV;
1066 1067
drivers/acpi/x86/lpss.c+1−1
@@ -181,7 +181,7 @@ static void byt_i2c_setup(struct lpss_private_data *pdata) · 180 unmodified lines
181 acpi_status status;181 acpi_status status;
182 u64 uid;182 u64 uid;
183 183
184 /* Expected to always be successfull, but better safe then sorry */184 /* Expected to always be successful, but better safe then sorry */
185 if (!acpi_dev_uid_to_integer(pdata->adev, &uid) && uid) {185 if (!acpi_dev_uid_to_integer(pdata->adev, &uid) && uid) {
186 /* Detect I2C bus shared with PUNIT and ignore its d3 status */186 /* Detect I2C bus shared with PUNIT and ignore its d3 status */
187 status = acpi_evaluate_integer(handle, "_SEM", NULL, &shared_host);187 status = acpi_evaluate_integer(handle, "_SEM", NULL, &shared_host);
drivers/pnp/driver.c+19−0
@@ -150,6 +150,24 @@ static void pnp_device_shutdown(struct device *dev) · 149 unmodified lines
150 drv->shutdown(pnp_dev);150 drv->shutdown(pnp_dev);
151}151}
152 152
153static int pnp_uevent(const struct device *dev, struct kobj_uevent_env *env)
154{
155 struct pnp_id *pos;
156 const struct pnp_dev *pnp_dev = to_pnp_dev(dev);
157
158 if (!dev)
159 return -ENODEV;
160
161 pos = pnp_dev->id;
162 while (pos) {
163 if (add_uevent_var(env, "MODALIAS=pnp:d%s", pos->id))
164 return -ENOMEM;
165 pos = pos->next;
166 }
167
168 return 0;
169}
170
153static int pnp_bus_match(struct device *dev, const struct device_driver *drv)171static int pnp_bus_match(struct device *dev, const struct device_driver *drv)
154{172{
155 struct pnp_dev *pnp_dev = to_pnp_dev(dev);173 struct pnp_dev *pnp_dev = to_pnp_dev(dev);
@@ -259,6 +277,7 @@ static const struct dev_pm_ops pnp_bus_dev_pm_ops = { · 103 unmodified lines
259const struct bus_type pnp_bus_type = {277const struct bus_type pnp_bus_type = {
260 .name = "pnp",278 .name = "pnp",
261 .match = pnp_bus_match,279 .match = pnp_bus_match,
280 .uevent = pnp_uevent,
262 .probe = pnp_device_probe,281 .probe = pnp_device_probe,
263 .remove = pnp_device_remove,282 .remove = pnp_device_remove,
264 .shutdown = pnp_device_shutdown,283 .shutdown = pnp_device_shutdown,
rust/kernel/acpi.rs+1−3
@@ -39,9 +39,7 @@ impl DeviceId { · 38 unmodified lines
39 pub const fn new(id: &'static CStr) -> Self {39 pub const fn new(id: &'static CStr) -> Self {
40 let src = id.to_bytes_with_nul();40 let src = id.to_bytes_with_nul();
41 build_assert!(src.len() <= Self::ACPI_ID_LEN, "ID exceeds 16 bytes");41 build_assert!(src.len() <= Self::ACPI_ID_LEN, "ID exceeds 16 bytes");
42 // Replace with `bindings::acpi_device_id::default()` once stabilized for `const`.42 let mut acpi: bindings::acpi_device_id = pin_init::zeroed();
43 // SAFETY: FFI type is valid to be zero-initialized.
44 let mut acpi: bindings::acpi_device_id = unsafe { core::mem::zeroed() };
45 let mut i = 0;43 let mut i = 0;
46 while i < src.len() {44 while i < src.len() {
47 acpi.id[i] = src[i];45 acpi.id[i] = src[i];

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t