svn commit: r346063 - head/sys/dev/acpica
John Baldwin
jhb at FreeBSD.org
Tue Sep 3 14:07:14 UTC 2019
Author: jhb
Date: Tue Apr 9 19:22:08 2019
New Revision: 346063
URL: https://svnweb.freebsd.org/changeset/base/346063
Log:
Don't pre-reserve resources for CPU devices when they are set.
CPUs can use shared (RF_SHAREABLE) resources for the I/O port used for
entering and exiting C states. If this I/O port is included in an ACPI
system resource device, then this happens to still work, but if the port
wasn't part of a system resource device, only the first CPU could allocate
the I/O port and use C states since resource_list_reserve() was always
allocating the resource from nexus0 without RF_SHAREABLE. By avoiding
the reservation, the flags from the bus_alloc_resource() in the CPU driver
(which include RF_SHAREABLE) are honored.
PR: 236513
Reported by: stockhausen at collogia.de
Sleuthing by: avg
Reviewed by: avg
MFC after: 2 weeks
Modified:
head/sys/dev/acpica/acpi.c
Modified: head/sys/dev/acpica/acpi.c
==============================================================================
--- head/sys/dev/acpica/acpi.c Tue Apr 9 18:07:17 2019 (r346062)
+++ head/sys/dev/acpica/acpi.c Tue Apr 9 19:22:08 2019 (r346063)
@@ -1353,6 +1353,14 @@ acpi_set_resource(device_t dev, device_t child, int ty
return (0);
/*
+ * Don't reserve resources for CPU devices. Some of these
+ * resources need to be allocated as shareable, but reservations
+ * are always non-shareable.
+ */
+ if (device_get_devclass(child) == devclass_find("cpu"))
+ return (0);
+
+ /*
* Reserve the resource.
*
* XXX: Ignores failure for now. Failure here is probably a
More information about the svn-src-all
mailing list