#
0b272e09 |
|
10-May-2024 |
Ed Maste <emaste@FreeBSD.org> |
madt: print CPU APIC ID as signed int Instead of printing something like "MADT: Found CPU APIC ID 4294967295 ACPI ID 512: disabled" print the APIC ID as a singed int for a more user-friendly -1. Reviewed by: jhb Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D45158
|
#
ecaab0fb |
|
01-May-2024 |
Stephen J. Kiernan <stevek@FreeBSD.org> |
guestrpc module to handle VMware backdoor port GuestRPC functionality Convert existing FreeBSD vmware_hvcall function to take a channel and parameter arguments. Added vmware_guestrpc_cmd() to send GuestRPC commands to the VMware hypervisor. The sbuf argument is used for both the command to send and to store the data to return to the caller. The following KPIs can be used to get and set FreeBSD-specific guest information in key/value pairs: * vmware_guestrpc_set_guestinfo - set a value into the guestinfo.fbsd.<keyword> key * vmware_guestrpc_get_guestinfo - get the value stored in the guestinfo.fbsd.<keyword> key Add VMware devices to x86 NOTES Reviewed by: jhb Obtained from: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D44528
|
#
fdafd315 |
|
24-Nov-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Automated cleanup of cdefs and other formatting Apply the following automated changes to try to eliminate no-longer-needed sys/cdefs.h includes as well as now-empty blank lines in a row. Remove /^#if.*\n#endif.*\n#include\s+<sys/cdefs.h>.*\n/ Remove /\n+#include\s+<sys/cdefs.h>.*\n+#if.*\n#endif.*\n+/ Remove /\n+#if.*\n#endif.*\n+/ Remove /^#if.*\n#endif.*\n/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/types.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/param.h>/ Remove /\n+#include\s+<sys/cdefs.h>\n#include\s+<sys/capsicum.h>/ Sponsored by: Netflix
|
#
12cce599 |
|
17-Oct-2023 |
Zhenlei Huang <zlei@FreeBSD.org> |
x86: Prefer consistent naming for loader tunables The following loader tunables do have corresponding sysctl MIBs but with inconsistent naming. That may be historical reason. Let's prefer consistent naming for them so that it will be easier to maintain. 1. hw.dmar.timeout -> hw.iommu.dmar.timeout 2. hw.lapic_eoi_suppression -> hw.apic.eoi_suppression 3. hw.lapic_tsc_deadline -> hw.apic.timer_tsc_deadline 4. hw.x2apic_enable -> hw.apic.x2apic_mode Those tunables are for field debugging, no need to keep old names for compatibility. Reviewed by: kib MFC after: 3 days Differential Revision: https://reviews.freebsd.org/D42248
|
#
685dc743 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
4d846d26 |
|
10-May-2023 |
Warner Losh <imp@FreeBSD.org> |
spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD The SPDX folks have obsoleted the BSD-2-Clause-FreeBSD identifier. Catch up to that fact and revert to their recommended match of BSD-2-Clause. Discussed with: pfg MFC After: 3 days Sponsored by: Netflix
|
#
7d06c761 |
|
13-Jan-2022 |
Roger Pau Monné <royger@FreeBSD.org> |
x86/madt: allow Xen guest to use x2APIC mode The old bogus Xen versions that would deliver a GPF when writing to the LAPIC MSR are likely retired, so it's safe to enable x2APIC unconditionally now if available. Tested by: avg Reviewed by: kib Sponsored by: Citrix Systems R&D Differential revision: https://reviews.freebsd.org/D33877
|
#
37f780d3 |
|
02-Jun-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
Disable x2APIC for SandyBridge laptops with Samsung BIOS From the PR: Almost always, my Samsung RF511 laptop could not boot with x2APIC enabled in the kernel. It froze during SMP initialization, shortly after "ACPI APIC Table: <SECCSD LH43STAR>" was printed to the console. When the kernel is instructed not to use x2APIC, the system boots correctly. PR: 256389 Submitted by: David Sebek <dasebek@gmail.com> Reviewed by: markj MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30624
|
#
e9e00cc0 |
|
02-Jun-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
madt_setup_local: extract special case checks into a helper Reviewed by: markj Tested by: David Sebek <dasebek@gmail.com> Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30624
|
#
92adf00d |
|
02-Jun-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
madt_setup_local: convert series of strcmp to iteration over the array to prepare for one more addition Reviewed by: markj Tested by: David Sebek <dasebek@gmail.com> Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30624
|
#
a603d41a |
|
02-Jun-2021 |
Konstantin Belousov <kib@FreeBSD.org> |
madt_setup_local: skip further checks if ACPI DMAR table already disabled x2APIC Reviewed by: markj Tested by: David Sebek <dasebek@gmail.com> Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D30624
|
#
ab6c81a2 |
|
01-Sep-2020 |
Mateusz Guzik <mjg@FreeBSD.org> |
x86: clean up empty lines in .c and .h files
|
#
2e43efd0 |
|
06-Mar-2019 |
John Baldwin <jhb@FreeBSD.org> |
Drop "All rights reserved" from my copyright statements. Reviewed by: rgrimes MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D19485
|
#
fd036dea |
|
28-Aug-2018 |
John Baldwin <jhb@FreeBSD.org> |
Dynamically allocate IRQ ranges on x86. Previously, x86 used static ranges of IRQ values for different types of I/O interrupts. Interrupt pins on I/O APICs and 8259A PICs used IRQ values from 0 to 254. MSI interrupts used a compile-time-defined range starting at 256, and Xen event channels used a compile-time-defined range after MSI. Some recent systems have more than 255 I/O APIC interrupt pins which resulted in those IRQ values overflowing into the MSI range triggering an assertion failure. Replace statically assigned ranges with dynamic ranges. Do a single pass computing the sizes of the IRQ ranges (PICs, MSI, Xen) to determine the total number of IRQs required. Allocate the interrupt source and interrupt count arrays dynamically once this pass has completed. To minimize runtime complexity these arrays are only sized once during bootup. The PIC range is determined by the PICs present in the system. The MSI and Xen ranges continue to use a fixed size, though this does make it possible to turn the MSI range size into a tunable in the future. As a result, various places are updated to use dynamic limits instead of constants. In addition, the vmstat(8) utility has been taught to understand that some kernels may treat 'intrcnt' and 'intrnames' as pointers rather than arrays when extracting interrupt stats from a crashdump. This is determined by the presence (vs absence) of a global 'nintrcnt' symbol. This change reverts r189404 which worked around a buggy BIOS which enumerated an I/O APIC twice (using the same memory mapped address for both entries but using an IRQ base of 256 for one entry and a valid IRQ base for the second entry). Making the "base" of MSI IRQ values dynamic avoids the panic that r189404 worked around, and there may now be valid I/O APICs with an IRQ base above 256 which this workaround would incorrectly skip. If in the future the issue reported in PR 130483 reoccurs, we will have to add a pass over the I/O APIC entries in the MADT to detect duplicates using the memory mapped address and use some strategy to choose the "correct" one. While here, reserve room in intrcnts for the Hyper-V counters. PR: 229429, 130483 Reviewed by: kib, royger, cem Tested by: royger (Xen), kib (DMAR) Approved by: re (gjb) MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D16861
|
#
6ac05ba4 |
|
13-Jul-2018 |
Mark Johnston <markj@FreeBSD.org> |
Use C99 initializers for instances of struct apic_enumerator. MFC after: 3 days
|
#
ebf5747b |
|
27-Nov-2017 |
Pedro F. Giffuni <pfg@FreeBSD.org> |
sys/x86: further adoption of SPDX licensing ID tags. Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts.
|
#
3f0a9fe0 |
|
10-Aug-2017 |
Roger Pau Monné <royger@FreeBSD.org> |
mptable: fix i386 build failure Reported by: emaste X-MFC-with: r322347
|
#
a74bb29a |
|
10-Aug-2017 |
Roger Pau Monné <royger@FreeBSD.org> |
x86: bump MAX_APIC_ID to 512 Introduce a new define to take int account the xAPIC ID limit, for systems where x2APIC is not available/reliable. Also change some of the usages of the APIC ID to use an unsigned int (which is the correct storage type to deal with x2APIC IDs as found in x2APIC MADT entries). This allows booting FreeBSD on a box with 256 CPUs and APIC IDs up to 295: FreeBSD/SMP: Multiprocessor System Detected: 256 CPUs FreeBSD/SMP: 1 package(s) x 64 core(s) x 4 hardware threads Package HW ID = 0 Core HW ID = 0 CPU0 (BSP): APIC ID: 0 CPU1 (AP/HT): APIC ID: 1 CPU2 (AP/HT): APIC ID: 2 CPU3 (AP/HT): APIC ID: 3 [...] Core HW ID = 73 CPU252 (AP): APIC ID: 292 CPU253 (AP/HT): APIC ID: 293 CPU254 (AP/HT): APIC ID: 294 CPU255 (AP/HT): APIC ID: 295 Submitted by: kib (previous version) Relnotes: yes MFC after: 1 month Reviewed by: kib Differential revision: https://reviews.freebsd.org/D11913
|
#
84525e55 |
|
10-Aug-2017 |
Roger Pau Monné <royger@FreeBSD.org> |
x86: make the arrays that depend on MAX_APIC_ID dynamic So that MAX_APIC_ID can be bumped without wasting memory. Note that the usage of MAX_APIC_ID in the SRAT parsing forces the parser to allocate memory directly from the phys_avail physical memory array, which is not the best approach probably, but I haven't found any other way to allocate memory so early in boot. This memory is not returned to the system afterwards, but at least it's sized according to the maximum APIC ID found in the MADT table. Sponsored by: Citrix Systems R&D MFC after: 1 month Reviewed by: kib Differential revision: https://reviews.freebsd.org/D11912
|
#
fd1f83fb |
|
10-Aug-2017 |
Roger Pau Monné <royger@FreeBSD.org> |
apic_enumerator: only set mp_ncpus and mp_maxid at probe cpus phase Populate the lapics arrays and call cpu_add/lapic_create in the setup phase instead. Also store the max APIC ID found in the newly introduced max_apic_id global variable. This is a requirement in order to make the static arrays currently using MAX_LAPIC_ID dynamic. Sponsored by: Citrix Systems R&D MFC after: 1 month Reviewed by: kib Differential revision: https://reviews.freebsd.org/D11911
|
#
36596c2a |
|
19-Sep-2016 |
Konstantin Belousov <kib@FreeBSD.org> |
Detect x2APIC mode on boot and obey it. If BIOS performed hand-off to OS with BSP LAPIC in the x2APIC mode, system usually consumes such configuration without a notice, since x2APIC is turned on by OS if possible (nop). But if BIOS simultaneously requested OS to not use x2APIC, code assumption that that xAPIC is active breaks. In my opinion, we cannot safely turn off x2APIC if control is passed in this mode. Make madt.c ignore user or BIOS requests to turn x2APIC off, and do not check the x2APIC black list. Just trust the config and try to continue, giving a warning in dmesg. Reported and tested by: Slawa Olhovchenkov <slw@zxy.spb.ru> (previous version) Diagnosed by and discussed with: avg Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
|
#
906430e4 |
|
03-Dec-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
In the SandyBridge x2APIC workaround detection code, only fetch the environment variable when SandyBridge CPU is detected. Reduce code duplication. Sponsored by: The FreeBSD Foundation
|
#
a14bc739 |
|
15-Sep-2015 |
Adrian Chadd <adrian@FreeBSD.org> |
Add ASUS Sandybridge laptops to the similar x2apic disable logic that was recently added for Lenovo laptops. This is a prime candidate for conversion into a table and also checking other fields like "product". Tested: * ASUS UX31E
|
#
8c486159 |
|
21-Aug-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
Automatically disable x2APIC mode on SandyBridge Lenovo machines. I believe that the bug only affects mobile CPUs, at least I did not see other reports, but it is impossible to detect it in madt_setup_local(). While there, reduce duplication in the information strings printed when x2APIC is auto-disabled, and do not print the line when user manually override the setting. Tested and reviewed by: royger (previous version) Sponsored by: The FreeBSD Foundation
|
#
125954c8 |
|
09-Jun-2015 |
John Baldwin <jhb@FreeBSD.org> |
Handle X2APIC entries in the MADT for APICs with an ID < 255. At least one BIOS has been seen to include such entries even though the relevant specs require that X2APIC entries only be used for CPUs with an APIC ID >= 255. This was tested on a system with "plain" local APIC entries in the MADT to ensure no regressions, but it has not yet been tested on a system with X2APIC entries in the MADT. Currently such systems do not boot at all, and with this change they might now boot correctly. Differential Revision: https://reviews.freebsd.org/D2521 Reviewed by: kib MFC after: 2 weeks
|
#
45bc78eb |
|
25-Feb-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
For now, disable x2APIC mode when Xen is detected, even if CPU declares support for it. Newer versions of Xen works fine with x2APIC code, but e.g. Xen 4.2 delivers GPF on the LAPIC MSR write, despite x2APIC mode being known to hypervisor. Discussed with: royger Sponsored by: The FreeBSD Foundation
|
#
738a5a4f |
|
14-Feb-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
Detect whether x2APIC on VMWare is usable without interrupt redirection support. Older versions of the hypervisor mis-interpret the cpuid format in ioapic registers when x2APIC is turned on, but IR is not used by the guest OS. Based on: Linux commit 4cca6ea04d31c22a7d0436949c072b27bde41f86 Tested by: markj Sponsored by: The FreeBSD Foundation MFC after: 2 months
|
#
4c918926 |
|
09-Feb-2015 |
Konstantin Belousov <kib@FreeBSD.org> |
Add x2APIC support. Enable it by default if CPU is capable. The hw.x2apic_enable tunable allows disabling it from the loader prompt. To closely repeat effects of the uncached memory ops when accessing registers in the xAPIC mode, the x2APIC writes to MSRs are preceeded by mfence, except for the EOI notifications. This is probably too strict, only ICR writes to send IPI require serialization to ensure that other CPUs see the previous actions when IPI is delivered. This may be changed later. In vmm justreturn IPI handler, call doreti_iret instead of doing iretd inline, to handle corner conditions. Note that the patch only switches LAPICs into x2APIC mode. It does not enables FreeBSD to support > 255 CPUs, which requires parsing x2APIC MADT entries and doing interrupts remapping, but is the required step on the way. Reviewed by: neel Tested by: pho (real hardware), neel (on bhyve) Discussed with: jhb, grehan Sponsored by: The FreeBSD Foundation MFC after: 2 months
|
#
f48223fa |
|
04-Aug-2014 |
Roger Pau Monné <royger@FreeBSD.org> |
x86/madt: make the interrupt override parser a public function Split a portion of the code in madt_parse_interrupt_override to a separate function, that is public and can be used from other code. This will be needed by the Xen port, since FreeBSD needs to parse the interrupt overrides and notify Xen about them. This commit should not introduce any functional change. Sponsored by: Citrix Systems R&D Reviewed by: jhb, gibbs x86/acpica/madt.c: - Introduce madt_parse_interrupt_values() that parses the intr information from ACPI and returns the triggering and the polarity. This is a subset of the functionality that used to be part of madt_parse_interrupt_override(). - Make madt_found_sci_override a global variable that can be used from other files. x86/include/acpica_machdep.h: - Prototype of madt_parse_interrupt_values. - Extern declaration of madt_found_sci_override.
|
#
d9aa19f1 |
|
04-Aug-2014 |
Roger Pau Monné <royger@FreeBSD.org> |
xen: change quality of the MADT ACPI enumerator Lower the quality of the MADT ACPI enumerator, so on Xen Dom0 we can force the usage of the Xen mptable enumerator even when ACPI is detected. This is needed because Xen might restrict the number of vCPUs available to Dom0, but the MADT ACPI table parsed in FreeBSD is the native one (which enumerates all the CPUs available in the system). Sponsored by: Citrix Systems R&D Reviewed by: gibbs x86/acpica/madt.c: - Lower MADT enumerator quality to -50. x86/xen/pvcpu_enum.c: - Rise Xen PV enumerator to 0.
|
#
0bd50b22 |
|
28-Jul-2014 |
Shunsuke Akiyama <akiyama@FreeBSD.org> |
Add missing newline to output dmesg properly.
|
#
95c52f14 |
|
27-Mar-2014 |
Takanori Watanabe <takawata@FreeBSD.org> |
Change default logic to CONFORM because this routine is shared with SCI polarity setting. Reviewed by: jhb
|
#
337877ca |
|
27-Mar-2014 |
Takanori Watanabe <takawata@FreeBSD.org> |
Strict value checking will cause problem. Bay trail DN2820FYKH is supported on Linux but does not work on FreeBSD. This behaviour is bug-compatible with Linux-3.13.5. References: http://d.hatena.ne.jp/syuu1228/20140326 http://lxr.linux.no/linux+v3.13.5/arch/x86/kernel/acpi/boot.c#L1094 Submitted by: syuu
|
#
7dcf10fe |
|
27-Mar-2014 |
Takanori Watanabe <takawata@FreeBSD.org> |
To check polarity, check ACPI_MADT_POLARITY_CONFORMS, instead of ACPI_MADT_TRIGGER_CONFORMS. PR:amd64/188010 Submitted by: syuu
|
#
e432d5f6 |
|
05-Feb-2014 |
John Baldwin <jhb@FreeBSD.org> |
Drop the 3rd clause from all 3 clause BSD licenses where I am the sole holder to convert them to 2 clause BSD licenses. MFC after: 1 week
|
#
e07ef9b0 |
|
23-Jan-2014 |
John Baldwin <jhb@FreeBSD.org> |
Move <machine/apicvar.h> to <x86/apicvar.h>.
|
#
316032ad |
|
09-Dec-2013 |
John Baldwin <jhb@FreeBSD.org> |
Move constants for indices in the local APIC's local vector table from apicvar.h to apicreg.h.
|
#
5fdd34ee |
|
05-Oct-2013 |
Justin T. Gibbs <gibbs@FreeBSD.org> |
Formalize the concept of virtual CPU ids by adding a per-cpu vcpu_id field. Perform vcpu enumeration for Xen PV and HVM environments and convert all Xen drivers to use vcpu_id instead of a hard coded assumption of the mapping algorithm (acpi or apic ID) in use. Submitted by: Roger Pau Monné Sponsored by: Citrix Systems R&D Reviewed by: gibbs Approved by: re (blanket Xen) amd64/include/pcpu.h: i386/include/pcpu.h: Add vcpu_id to the amd64 and i386 pcpu structures. dev/xen/timer/timer.c x86/xen/xen_intr.c Use new vcpu_id instead of assuming acpi_id == vcpu_id. i386/xen/mp_machdep.c: i386/xen/mptable.c x86/xen/hvm.c: Perform Xen HVM and Xen full PV vcpu_id mapping. x86/xen/hvm.c: x86/acpica/madt.c Change SYSINIT ordering of acpi CPU enumeration so that it is guaranteed to be available at the time of Xen HVM vcpu id mapping.
|
#
45a22584 |
|
28-Mar-2012 |
John Baldwin <jhb@FreeBSD.org> |
Allocate the ioapics[] array dynamically since it is only needed for the duration of madt_setup_io(). This avoids having the array take up permanent space in the BSS. Inspired by: bde MFC after: 2 weeks
|
#
d8c82701 |
|
21-Mar-2012 |
John Baldwin <jhb@FreeBSD.org> |
Mark the 'lapics' and 'ioapics' arrays here static since they are private to this file. The 'lapics' array was actually shadowing a completely different 'lapics' array that is private to local_apic.c. Reported by: bde MFC after: 2 weeks
|
#
d745c852 |
|
06-Nov-2011 |
Ed Schouten <ed@FreeBSD.org> |
Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. This means that their use is restricted to a single C file.
|
#
13e25cb7 |
|
08-Nov-2010 |
John Baldwin <jhb@FreeBSD.org> |
Move the MADT parser for amd64 and i386 to sys/x86/acpica now that it is identical on both platforms.
|