#
18250ec6 |
| 06-Dec-2024 |
John Baldwin <jhb@FreeBSD.org> |
Replace calls to bus_generic_attach with bus_attach_children
Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D47675
|
#
723da5d9 |
| 06-Dec-2024 |
John Baldwin <jhb@FreeBSD.org> |
Replace calls to bus_generic_probe with bus_identify_children
Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D47674
|
Revision tags: release/14.2.0 |
|
#
fd67ff5c |
| 08-Nov-2024 |
Andrew Gallatin <gallatin@FreeBSD.org> |
Use the correct idle routine on recent AMD EPYC servers
We have been incorrectly choosing the "hlt" idle method on modern AMD EPYC servers for C1 idle. This is because AMD also uses the Functional F
Use the correct idle routine on recent AMD EPYC servers
We have been incorrectly choosing the "hlt" idle method on modern AMD EPYC servers for C1 idle. This is because AMD also uses the Functional Fixed Hardware interface. Due to not parsing the table properly for AMD, and due to a weird quirk where the mwait latency for C1 is mis-interpreted as the latency for hlt, we wind up choosing hlt for c1, which has a far higher wake up latency (similar to IO) of roughly 400us on my test system (AMD 7502P).
This patch fixes this by:
- Looking for AMD in addition to Intel in the FFH (Note the vendor id of "2" for AMD is not publically documented, but AMD has confirmed they are using "2" and has promised to document it.)
- Using mwait on AMD when specified in the table, and when CPUid says its supported
- Fixing a weird issue where we copy the contents of cx_ptr for C1 and when moving to C2, we do not reinitialize cx_ptr. This leads to mwait being selected, and ignoring the specified i/o halt method unless we clear mwait before looking at the table for C2.
Differential Revision: https://reviews.freebsd.org/D47444 Reviewed by: dab, kib, vangyzen Sponsored by: Netflix
show more ...
|
Revision tags: release/13.4.0, release/14.1.0, release/13.3.0 |
|
#
5bc10fea |
| 26-Dec-2023 |
Alexander Motin <mav@FreeBSD.org> |
acpi_cpu: Reduce BUS_MASTER_RLD manipulations
Instead of setting and clearing BUS_MASTER_RLD register on every C3 state enter/exit, set it only once if the system supports C3 state and we are going
acpi_cpu: Reduce BUS_MASTER_RLD manipulations
Instead of setting and clearing BUS_MASTER_RLD register on every C3 state enter/exit, set it only once if the system supports C3 state and we are going to "disable" bus master arbitration while in it.
This is what Linux does for the past 14 years, and for even more time this register is not implemented in a relevant hardware. Same time since this is only a single bit in a bigger register, ACPI has to do take a global lock and do read-modify-write for it, that is too expensive, saved only by C3 not entered frequently, but enough to be seen in idle system CPU profiles.
MFC after: 1 month
show more ...
|
Revision tags: release/14.0.0 |
|
#
685dc743 |
| 16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern
Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
Revision tags: release/13.2.0, release/12.4.0 |
|
#
15bd2f36 |
| 23-Oct-2022 |
Tom Jones <thj@FreeBSD.org> |
acpi: Create cppc_notify sysctl before it is checked
Reported by: Henrix Reviewed by: jhb Differential Revision: https://reviews.freebsd.org/D37081
|
#
eee0f7ae |
| 11-Oct-2022 |
Tom Jones <thj@FreeBSD.org> |
acpi: Put CPPC workaround behind i386/amd64 if def
While CPPC is available on arm64 platforms with ACPI we don't know if we need to work around issues with firmware there.
|
#
67f2a563 |
| 10-Oct-2022 |
Tom Jones <thj@FreeBSD.org> |
acpi: Tell SMM we will handle CPPC notifications
Buggy SMM implementations can hang while processing CPPC notifications. This leads to some laptops (notably Thinkpads) hanging when the hwpstate_inte
acpi: Tell SMM we will handle CPPC notifications
Buggy SMM implementations can hang while processing CPPC notifications. This leads to some laptops (notably Thinkpads) hanging when the hwpstate_intel driver is loaded.
Tell the SMM that we will handle CPPC notifications as described in:
- Intel® Processor Vendor-Specific ACPI - Intel® 64 and IA-32 Architectures Software Developer’s Manual
CPPC events default to masked (disabled) so while we do not do any handling right now this does not seem to lead to any issues.
This approach was found via this Linux Kernel patch: https://lkml.org/lkml/2016/3/17/563
PR: 253288 Reviewed by: imp, jhb Sponsored by: Modirum Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D36699
show more ...
|
Revision tags: release/13.1.0 |
|
#
916a5d8a |
| 19-Apr-2022 |
John Baldwin <jhb@FreeBSD.org> |
acpi: Remove unused devclass arguments to DRIVER_MODULE.
|
#
e206dddc |
| 21-Apr-2022 |
John Baldwin <jhb@FreeBSD.org> |
acpi_cpu: Use device_get_devclass to find devclass in attach.
Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D34988
|
#
b93f47ea |
| 17-Mar-2022 |
Roger Pau Monné <royger@FreeBSD.org> |
xen/acpi: upload Cx and Px data to Xen
When FreeBSD is running as dom0 (initial domain) on a Xen system it has access to the native ACPI tables and is the OSPM. However the hypervisor is the entity
xen/acpi: upload Cx and Px data to Xen
When FreeBSD is running as dom0 (initial domain) on a Xen system it has access to the native ACPI tables and is the OSPM. However the hypervisor is the entity in charge of the CPU idle and frequency states, and in order to perform this duty it requires information found the ACPI dynamic tables that can only be parsed by the OSPM.
Introduce a new Xen specific ACPI driver to fetch the Processor related information and upload it to Xen. Note that this driver needs to take precedence over the generic ACPI CPU driver when running as dom0, so downgrade the probe score of the native driver to BUS_PROBE_DEFAULT in order for the Xen specific driver to use BUS_PROBE_SPECIFIC.
Tested on an Intel NUC to successfully parse and upload both the Cx and Px states to Xen.
Sponsored by: Citrix Systems R&D Reviewed by: jhb kib Differential revision: https://reviews.freebsd.org/D34841
show more ...
|
#
3e68d2c5 |
| 27-Dec-2021 |
Alexander Motin <mav@FreeBSD.org> |
acpica: Remove CTLFLAG_NEEDGIANT from most sysctls.
MFC after: 2 weeks
|
#
de291c5d |
| 10-Dec-2021 |
Alexander Motin <mav@FreeBSD.org> |
acpi_cpu: Replace Giant with bus_topo_lock.
|
Revision tags: release/12.3.0 |
|
#
4e50efb1 |
| 27-Sep-2021 |
Andrew Turner <andrew@FreeBSD.org> |
Check cpu_softc is not NULL before dereferencing
In the acpi_cpu_postattach SYSINIT function cpu_softc may be NULL, e.g. on arm64 when booting from FDT. Check it is not NULL at the start of the func
Check cpu_softc is not NULL before dereferencing
In the acpi_cpu_postattach SYSINIT function cpu_softc may be NULL, e.g. on arm64 when booting from FDT. Check it is not NULL at the start of the function so we don't try to dereference a NULL pointer.
Sponsored by: The FreeBSD Foundation
show more ...
|
#
695323ae |
| 25-Sep-2021 |
Alexander Motin <mav@FreeBSD.org> |
acpi_cpu: Fix panic if some CPU devices are disabled.
While there, remove couple unneeded global variables.
|
#
c8077ccd |
| 25-Sep-2021 |
Alexander Motin <mav@FreeBSD.org> |
acpi_cpu: Make device unit numbers match OS CPU IDs.
There are already APIC ID, ACPI ID and OS ID for each CPU. In perfect world all of those may match, but at least for SuperMicro server boards no
acpi_cpu: Make device unit numbers match OS CPU IDs.
There are already APIC ID, ACPI ID and OS ID for each CPU. In perfect world all of those may match, but at least for SuperMicro server boards none of them do. Plus none of them match the CPU devices listing order by ACPI. Previous code used the ACPI device listing order to number cpuX devices. It looked nice from NewBus perspective, but introduced 4th different set of IDs. Extremely confusing one, since in some places the device unit numbers were treated as OS CPU IDs (coretemp), but not in others (sysctl dev.cpu.X.%location).
show more ...
|
Revision tags: release/13.0.0 |
|
#
2cee045b |
| 10-Mar-2021 |
Alexander Motin <mav@FreeBSD.org> |
Move time math out of disabled interrupts sections.
We don't need the result before next sleep time, so no reason to additionally increase interrupt latency.
While there, remove extra PM ticks to m
Move time math out of disabled interrupts sections.
We don't need the result before next sleep time, so no reason to additionally increase interrupt latency.
While there, remove extra PM ticks to microseconds conversion, making C2/C3 sleep times look 4 times smaller than really. The conversion is already done by AcpiGetTimerDuration(). Now I see reported sleep times up to 0.5s, just as expected for planned 2 wakeups per second.
MFC after: 1 month
show more ...
|
#
075e4807 |
| 09-Mar-2021 |
Alexander Motin <mav@FreeBSD.org> |
Do not read timer extra time when MWAIT is used.
When we enter C2+ state via memory read, it may take chipset some time to stop CPU. Extra register read covers that time. But MWAIT makes CPU stop
Do not read timer extra time when MWAIT is used.
When we enter C2+ state via memory read, it may take chipset some time to stop CPU. Extra register read covers that time. But MWAIT makes CPU stop immediately, so we don't need to waste time after wakeup with interrupts still disabled, increasing latency.
On my system it reduces ping localhost latency, waking up all CPUs once a second, from 277us to 242us.
MFC after: 1 month
show more ...
|
#
45521967 |
| 08-Mar-2021 |
Alexander Motin <mav@FreeBSD.org> |
Change mwait_bm_avoidance use to match Linux.
Even though the information is very limited, it seems the intent of this flag is to control ACPI_BITREG_BUS_MASTER_STATUS use for C3, not force ACPI_BIT
Change mwait_bm_avoidance use to match Linux.
Even though the information is very limited, it seems the intent of this flag is to control ACPI_BITREG_BUS_MASTER_STATUS use for C3, not force ACPI_BITREG_ARB_DISABLE manipulations for C2, where it was never needed, and which register not really doing anything for years. It wasted lots of CPU time on congested global ACPI hardware lock when many CPU cores were trying to enter/exit deep C-states same time.
On idle 80-core system it pushed ping localhost latency up to 20ms, since badport_bandlim() via counter_ratecheck() wakes up all CPUs same time once a second just to synchronously reset the counters. Now enabling C-states increases the latency from 0.1 to just 0.25ms.
Discussed with: kib MFC after: 1 month
show more ...
|
Revision tags: release/12.2.0 |
|
#
82c28121 |
| 01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
acpica: clean up empty lines in .c and .h files
|
Revision tags: release/11.4.0 |
|
#
75dfc66c |
| 27-Feb-2020 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r358269 through r358399.
|
#
7029da5c |
| 26-Feb-2020 |
Pawel Biernacki <kaktus@FreeBSD.org> |
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)
r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are still not MPSAFE (or already are but aren’t properly mark
Mark more nodes as CTLFLAG_MPSAFE or CTLFLAG_NEEDGIANT (17 of many)
r357614 added CTLFLAG_NEEDGIANT to make it easier to find nodes that are still not MPSAFE (or already are but aren’t properly marked). Use it in preparation for a general review of all nodes.
This is non-functional change that adds annotations to SYSCTL_NODE and SYSCTL_PROC nodes using one of the soon-to-be-required flags.
Mark all obvious cases as MPSAFE. All entries that haven't been marked as MPSAFE before are by default marked as NEEDGIANT
Approved by: kib (mentor, blanket) Commented by: kib, gallatin, melifaro Differential Revision: https://reviews.freebsd.org/D23718
show more ...
|
Revision tags: release/12.1.0, release/11.3.0, release/12.0.0 |
|
#
fda9adaf |
| 27-Oct-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r339670 through r339812.
|
#
5efca36f |
| 26-Oct-2018 |
Takanori Watanabe <takawata@FreeBSD.org> |
Distinguish _CID match and _HID match and make lower priority probe when _CID match.
Reviewed by: jhb, imp Differential Revision:https://reviews.freebsd.org/D16468
|
Revision tags: release/11.2.0 |
|
#
43d9cb5b |
| 07-May-2018 |
Warner Losh <imp@FreeBSD.org> |
Use device_quiet_children to silence verbose CPU probe messages.
Have cpu0 be noisy, but all the other CPU devices be quiet on boot.
|