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: stockhau...@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 _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"