#
a1330a71 |
| 18-Nov-2024 |
Andrew Turner <andrew@FreeBSD.org> |
acpi: Handle multiple interrupts
When multiple IRQs are specified in a single resource then we only check the first. Change this to check all interrupts for the value we expect to find.
Without thi
acpi: Handle multiple interrupts
When multiple IRQs are specified in a single resource then we only check the first. Change this to check all interrupts for the value we expect to find.
Without this we may still enable the interrupt, but it can have the wrong polatiry or trigger. This can cause an interrupt storm if the interrupt was configured with a level trigger when it should have been an edge.
PR: 282241 Reported by: trasz Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D47487
show more ...
|
Revision tags: release/13.4.0 |
|
#
0a34d050 |
| 15-Jul-2024 |
John Baldwin <jhb@FreeBSD.org> |
acpi: Narrow workaround for broken interrupt settings on x86
Commit 9a7bf07ccdc1 from 2016 introduced a workaround for some broken BIOSes that specified active-lo instead of active-hi polarity for I
acpi: Narrow workaround for broken interrupt settings on x86
Commit 9a7bf07ccdc1 from 2016 introduced a workaround for some broken BIOSes that specified active-lo instead of active-hi polarity for ISA IRQs for UARTs. The workaround assumed that edge-sensitive ISA IRQs on x86 should always be active-hi. However, some recent AMD systems actually use active-lo edge-sensitive ISA IRQs (and not just for UARTs, but also for the keyboard and PS/2 mouse devices) and the override causes interrupts to be dropped resulting in boot time hangs, non-working keyboards, etc.
Add a hw.acpi.override_isa_irq_polarity tunable (readable as a sysctl post-boot) to control this quirk. It can be set to 1 to force enable the override and 0 to disable it. The log of original message mentions an Intel motherboard as the sample case, so default the tunable to 1 on systems with an Intel CPU and 0 otherwise.
Special thanks to Matthias Lanter <freebsd@lanter-it.ch> for tracking down boot time issues on recent AMD systems to mismatched interrupt polarity.
PR: 270707 Reported by: aixdroix_OSS@protonmail.com, Michael Dexter Reported by: mfw_burn@pm.me, Hannes Hfauswedell <h2+fbsdports@fsfe.org> Reported by: Matthias Lanter <freebsd@lanter-it.ch> Reported by: William Bulley <web@umich.edu> Reviewed by: imp, emaste MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D45554
show more ...
|
Revision tags: release/14.1.0, release/13.3.0 |
|
#
055c1fe2 |
| 14-Feb-2024 |
John Baldwin <jhb@FreeBSD.org> |
acpi: Allow child drivers to use bus_set_resource for more resources
acpi_set_resource excludes certain types of resources for certain devices. The intention of this is to avoid adding resource ent
acpi: Allow child drivers to use bus_set_resource for more resources
acpi_set_resource excludes certain types of resources for certain devices. The intention of this is to avoid adding resource entries for bogus resources enumerated via _CRS. However, this also prevents drivers from adding those resources explicitly if needed. To fix this, move the logic to exclude these resources into an ignore hook used when parsing _CRS to create the initial set of resources for each device.
Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D43892
show more ...
|
#
0e1246e3 |
| 09-Feb-2024 |
John Baldwin <jhb@FreeBSD.org> |
acpi: Cleanup handling of suballocated resources
For resources suballocated from the system resource rmans, handle those in the ACPI bus driver without passing them up to the parent. This means usin
acpi: Cleanup handling of suballocated resources
For resources suballocated from the system resource rmans, handle those in the ACPI bus driver without passing them up to the parent. This means using bus_generic_rman_* for several bus methods for operations on suballocated resources. For bus_map/unmap_resource, find the system resource allocated from the parent bus (nexus) that contains the range being mapped and request a mapping of that parent resource.
This avoids a layering violation where nexus drivers were previously asked to manage the activation and mapping of resources created belonging to the ACPI resource managers.
Note that this does require passing RF_ACTIVE (with RF_UNMAPPED) when allocating system resources from the parent.
While here, don't assume that the parent bus (nexus) provides a resource list that sysres resources are placed on. Instead, create a dedicated resource_list in the ACPI bus driver's softc to hold sysres resources.
Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D43687
show more ...
|
#
6f38d2e7 |
| 15-Nov-2023 |
Andrew Gallatin <gallatin@FreeBSD.org> |
acpi: Add workaround for Altra I2C memory resource
Submitted by: allanjude Sponsored by: Ampere Computing LLC Reviewed by: imp Differential Revision: https://reviews.freebsd.org/D28741
|
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, release/13.1.0 |
|
#
916a5d8a |
| 19-Apr-2022 |
John Baldwin <jhb@FreeBSD.org> |
acpi: Remove unused devclass arguments to DRIVER_MODULE.
|
Revision tags: release/12.3.0 |
|
#
aed2afeb |
| 02-Aug-2021 |
Aleksandr Rybalko <ray@FreeBSD.org> |
Ignore ResourceProducer flag for: o Arm CoreLink TM CMN-600 Coherent Mesh Network controller, o Arm CoreLink DMC-620 Dynamic Memory Controller.
Sponsored by: Ampere Computing LLC Submitted by: Klara
Ignore ResourceProducer flag for: o Arm CoreLink TM CMN-600 Coherent Mesh Network controller, o Arm CoreLink DMC-620 Dynamic Memory Controller.
Sponsored by: Ampere Computing LLC Submitted by: Klara Inc.
show more ...
|
#
1472117a |
| 08-Jul-2021 |
Andrew Turner <andrew@FreeBSD.org> |
Support fixed size, variable location acpi resources
These have been found in some Arm ACPI tables generated by edk2, e.g. when describing the pl011 uart on the Arm AEMv8 model.
Reviewed by: imp, j
Support fixed size, variable location acpi resources
These have been found in some Arm ACPI tables generated by edk2, e.g. when describing the pl011 uart on the Arm AEMv8 model.
Reviewed by: imp, jkim Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31110
show more ...
|
Revision tags: release/13.0.0, release/12.2.0 |
|
#
a52c8a65 |
| 30-Sep-2020 |
Emmanuel Vadot <manu@FreeBSD.org> |
acpi_resource: support multiple IRQs
Some DSDT entries have multiple interrupts for one device. Add support for it.
This fixes ahci on NXP LS2160 and genet on RPi4
Submitted by: Greg V <greg@unrel
acpi_resource: support multiple IRQs
Some DSDT entries have multiple interrupts for one device. Add support for it.
This fixes ahci on NXP LS2160 and genet on RPi4
Submitted by: Greg V <greg@unrelenting.technology> Reviewed by: jhb MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D25145
show more ...
|
Revision tags: release/11.4.0 |
|
#
c7dada4c |
| 10-Jun-2020 |
Ruslan Bukin <br@FreeBSD.org> |
All the ARM Coresight interconnect devices set ResourceProducer on memory resources, ignore it.
The devices found in the ARM Neoverse N1 System Development Platform (N1SDP).
Sponsored by: DARPA, AF
All the ARM Coresight interconnect devices set ResourceProducer on memory resources, ignore it.
The devices found in the ARM Neoverse N1 System Development Platform (N1SDP).
Sponsored by: DARPA, AFRL
show more ...
|
#
b62d159c |
| 09-Jun-2020 |
Ruslan Bukin <br@FreeBSD.org> |
Similar to UART on ThunderX2, the ARM Coresight (ETM component) set ResourceProducer on memory resources: ignore it.
Tested on ARM N1SDP board.
Sponsored by: DARPA, AFRL
|
Revision tags: release/12.1.0 |
|
#
41c31f1c |
| 01-Aug-2019 |
Ed Maste <emaste@FreeBSD.org> |
acpi_resource.c: mention ThunderX2 firmware revision with issue
Presumably this will be fixed in the next version, and the workaround could eventually be removed. See r330113 and r346066 details.
|
Revision tags: release/11.3.0 |
|
#
7648bc9f |
| 13-May-2019 |
Alan Somers <asomers@FreeBSD.org> |
MFHead @347527
Sponsored by: The FreeBSD Foundation
|
#
e9a00a5d |
| 09-Apr-2019 |
John Baldwin <jhb@FreeBSD.org> |
Refine r330113 to honor the ProducerConsumer flag most of the time.
While it is true that the ACPI spec says that the flag is only valid on Extended Address Space Descriptors, examples of other desc
Refine r330113 to honor the ProducerConsumer flag most of the time.
While it is true that the ACPI spec says that the flag is only valid on Extended Address Space Descriptors, examples of other descriptors in the spec use the ProducerConsumer flag explicitly, and real hardware uses it as well. In fact, even in the ASL of the Thunder X2 for which r330113 was a workaround, some devices use this flag on non-Extended Address Space Descriptors correctly. Instead, only ignore the flag for resources associated with the UART devices on the Thunder X2 using the "ARMH0011" HID to identify these devices.
This should fix regressions from ignoring this flag in other contexts such as Hyper-V.
PR: 235876 Reported by: Wei Hu <weh@microsoft.com> Tested by: emaste (Thunder X2) MFC after: 2 weeks
show more ...
|
Revision tags: release/12.0.0 |
|
#
3d5db455 |
| 24-Nov-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r340427 through r340868.
|
#
f916d057 |
| 19-Nov-2018 |
Jayachandran C. <jchandra@FreeBSD.org> |
pci_host_generic, acpi_resource: drop unneeded code
Now that we are handling PCI resources in pci_host_generic_acpi.c, we don't need these change (made by r336129)
Reviewed by: andrew Differential
pci_host_generic, acpi_resource: drop unneeded code
Now that we are handling PCI resources in pci_host_generic_acpi.c, we don't need these change (made by r336129)
Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D17792
show more ...
|
#
d4d6ad3f |
| 19-Nov-2018 |
Jayachandran C. <jchandra@FreeBSD.org> |
acpica: rework INTRNG interrupts
On arm64 (where INTRNG is enabled), the interrupts have to be mapped with ACPI_BUS_MAP_INTR() before adding them as resources to devices.
The earlier code did the m
acpica: rework INTRNG interrupts
On arm64 (where INTRNG is enabled), the interrupts have to be mapped with ACPI_BUS_MAP_INTR() before adding them as resources to devices.
The earlier code did the mapping before calling acpi_set_resource(), which bypassed code that checked for PCI link interrupts.
To fix this, move the call to map interrupts into acpi_set_resource() and that requires additional work to lookup interrupt properties. The changes here are to: * extend acpi_lookup_irq_handler() to lookup an irq in the ACPI resources * create a helper function acpi_map_intr() which uses the updated acpi_lookup_irq_handler() to look up an irq, and then map it with ACPI_BUS_MAP_INTR() * use acpi_map_intr() in acpi_pcib_route_interrupt() to map pci link interrupts.
With these changes, we can drop the ifdefs in acpi_resource.c, and we can also drop the call for mapping interrupts in generic_timer.c
Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D17790
show more ...
|
#
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
|
#
db2156bc |
| 09-Jul-2018 |
Wojciech Macek <wma@FreeBSD.org> |
ARM64: Add support for ThunderX2 PCIe
Submitted by: Patryk Duda <pdk@semihalf.com> Obtained from: Semihalf Sponsored by: Cavium Differential revision: https://reviews.freeb
ARM64: Add support for ThunderX2 PCIe
Submitted by: Patryk Duda <pdk@semihalf.com> Obtained from: Semihalf Sponsored by: Cavium Differential revision: https://reviews.freebsd.org/D15141
show more ...
|
Revision tags: release/11.2.0 |
|
#
eb33d8ce |
| 18-Apr-2018 |
John Baldwin <jhb@FreeBSD.org> |
Workaround fixed I/O port resources encoded as I/O port ranges in _CRS.
ACPI I/O port descriptors use _MIN and _MAX fields to specify the set of allowable base (start) addresses for an I/O port reso
Workaround fixed I/O port resources encoded as I/O port ranges in _CRS.
ACPI I/O port descriptors use _MIN and _MAX fields to specify the set of allowable base (start) addresses for an I/O port resource along with a _LEN field specifying the length. A fixed resource is supposed to be encoded with _MIN == _MAX, but some buggy firmwares instead set _MAX to the end of the fixed range. Relocating I/O ranges only make sense in _PRS (possible resource settings), not in _CRS (current resource settings), so if an I/O port range with _MAX set set to the end of the range is present in _CRS, treat it as a fixed I/O port resource starting at _MIN.
PR: 224096 Submitted by: Harald Böhm <harald@boehm.codes> Pointy hat to: jhb (taking so long to actually commit this) MFC after: 1 week
show more ...
|
#
3d9294b0 |
| 28-Feb-2018 |
Andrew Turner <andrew@FreeBSD.org> |
Only check the ProducerConsumer flag on extended memory. As per the ACPI 6.0 spec 6.4.3.5 bit 0 is ignored on QWord, DWord, and Word Address Space Descriptors, but not Extended Address Space Descript
Only check the ProducerConsumer flag on extended memory. As per the ACPI 6.0 spec 6.4.3.5 bit 0 is ignored on QWord, DWord, and Word Address Space Descriptors, but not Extended Address Space Descriptors.
Reviewed by: jhb Sponsored by: DARPA, AFRL Sponsored by: Cavium (Hardware) Differential Revision: https://reviews.freebsd.org/D14516
show more ...
|
#
c79126f2 |
| 12-Jan-2018 |
Dimitry Andric <dim@FreeBSD.org> |
Merge ^/head r327624 through r327885.
|
#
224c3776 |
| 11-Jan-2018 |
Andrew Turner <andrew@FreeBSD.org> |
Add the start of INTRNG support for ACPI.
This adds a new acpi_bus interface with a map_intr method. This is similar to the Open Firmware map_intr method and allows us to create the needed mapping f
Add the start of INTRNG support for ACPI.
This adds a new acpi_bus interface with a map_intr method. This is similar to the Open Firmware map_intr method and allows us to create the needed mapping from ACPI space to INTRNG space.
Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D8617
show more ...
|