#
103d39ef |
|
24-Jan-2024 |
Jessica Clarke <jrtc27@FreeBSD.org> |
intrng: Allow alternative IPI PICs to be registered and used On RISC-V, the root PIC (whether the PLIC or, as will be the case in future, the local interrupt controller) cannot send IPIs, relying on another means to trigger the necessary software interrupts (firmware calls), but there are upcoming standard devices that will be able to inject them, so we can't just put the firmware calls in the root PIC driver. Thus, split out a new intr_ipi_dev from intr_irq_root_dev to use for sending IPIs. New devices can be registered with a given priority up until the first IPI is set up, when the best device seen so far gets frozen as the IPI device to use. Reviewed by: mhorne MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D35899
|
#
e06afdb2 |
|
24-Jan-2024 |
Jessica Clarke <jrtc27@FreeBSD.org> |
intrng: Remove irq_root_ipicount and corresponding intr_pic_claim_root arg The static irq_root_ipicount variable is only ever written to (with the value passed to irq_root_ipicount), never read. Moreover, the bcm2836 driver, as used by the Raspberry Pi 2B and 3A/B (but not 4, which uses a GIC-400, though does have the legacy interrupt controller present too) passes 0 as ipicount, despite implementing IPIs. It's thus inaccurate and serves no purpose, so should be removed. Reviewed by: mmel, imp, mhorne MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D35897
|
#
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
|
#
685dc743 |
|
16-Aug-2023 |
Warner Losh <imp@FreeBSD.org> |
sys: Remove $FreeBSD$: one-line .c pattern Remove /^[\s*]*__FBSDID\("\$FreeBSD\$"\);?\s*\n/
|
#
7b5d62bb |
|
18-Oct-2022 |
Takanori Watanabe <takawata@FreeBSD.org> |
ofw: add BUS_GET_DEVICE_PATH interface to openfirm/fdt, somewhat incomplete. This add BUS_GET_DEVICE_PATH interface, which shows device tree of openfirm/fdt. In qemu-system-arm64 with "virt" machine with device-tree firmware, % devctl getpath OFW cpu0 Reviewed by: andrew Differential Revision: https://reviews.freebsd.org/D37031
|
#
9ba957e4 |
|
22-Sep-2022 |
Andrew Turner <andrew@FreeBSD.org> |
Fix the spelling of interrupt in the GICv3 driver Reported by: jrtc27 Sponsored by: Innovate UK
|
#
839374bb |
|
22-Sep-2022 |
Andrew Turner <andrew@FreeBSD.org> |
Teach the GICv3 driver to translate memory ranges As with the GICv1/2 driver teach the GICv3 driver to translate memory ranges of children. This allows us to create a common bus_alloc_resource implementation for bot hACPI and FDT attachments. Sponsored by: The FreeBSD Foundation
|
#
bdc9ece9 |
|
22-Sep-2022 |
Andrew Turner <andrew@FreeBSD.org> |
Move the GICv3 bus_print_child function to the parent This should be common for both ACPI and FDT. Move this to the common part of the driver. Sponsored by: The FreeBSD Foundation
|
#
6fc6896c |
|
22-Sep-2022 |
Andrew Turner <andrew@FreeBSD.org> |
Add bus_get_resource_list functions to the GICv3 driver This will be used to reduce code duplication between the ACPI and FDT attachments. Sponsored by: The FreeBSD Foundation
|
#
e13c6a6f |
|
14-Sep-2022 |
Andrew Turner <andrew@FreeBSD.org> |
Teach the GICv3 driver about a vgic child This will be used by bhyve to attach a virtual GIC driver. Sponsored by: Innovate UK Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D36590
|
#
92f692fd |
|
06-Jul-2022 |
Andrew Turner <andrew@FreeBSD.org> |
Only add gicv3 fdt children with a compatible property Not all gicv3 fdt children have a compatible property. Those that don't are configuration data rather than something that should have a driver attach. Sponsored by: The FreeBSD Foundation
|
#
bb62bc22 |
|
09-May-2022 |
John Baldwin <jhb@FreeBSD.org> |
arm64: Remove unused devclass arguments to DRIVER_MODULE.
|
#
e4d89a63 |
|
01-Sep-2021 |
Andrew Turner <andrew@FreeBSD.org> |
Add support for gicv2m as a child of gicv3 On some systems, e.g. Parallels set to host a Linux VM under an M1 Mac, there is a GICv2m as a child of the GICv3. We previously assumed the GICv2m was always a child of a GICv2. Fix this by adding the needed support to the GICv3 driver. PR: 258136 Reported by: trasz Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D31768
|
#
9feff969 |
|
08-Aug-2021 |
Ed Maste <emaste@FreeBSD.org> |
Remove "All Rights Reserved" from FreeBSD Foundation sys/ copyrights These ones were unambiguous cases where the Foundation was the only listed copyright holder (in the associated license block). Sponsored by: The FreeBSD Foundation
|
#
35ebd8d3 |
|
05-Dec-2020 |
Cyprien Laplace <cyprien@cypou.net> |
gic_v3: add message based interrupts support Pull Request: https://github.com/freebsd/freebsd-src/pull/451
|
#
062c2768 |
|
13-Aug-2017 |
Andrew Turner <andrew@FreeBSD.org> |
Add support for multiple GICv3 ITS devices. For this we add sc_irq_base and sc_irq_length to the softc to handle the base number of IRQs available, make gicv3_get_nirqs return the number of available interrupt IDs, and limit which CPUs we send interrupts to based on the numa domain. The last point is only strictly needed on a dual socket ThunderX where we are unable to send MSI/MSI-X interrupts between sockets. Sponsored by: DARPA, AFRL
|
#
49f347f4 |
|
04-Aug-2017 |
Andrew Turner <andrew@FreeBSD.org> |
Start to teach the GICv3 driver about NUMA. On ThunderX we may have multiple ITS devices, however we only want a single ITS device to be configured on each CPU. To fix this only enable ITS when the node matches the CPUs node. Sponsored by: DARPA, AFRL
|
#
0afaf183 |
|
06-Dec-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Add the missing gic_common.h include for GIC_BUS_FDT. Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation
|
#
be04b41d |
|
06-Dec-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Create two GIC ivars to find the bus type and GIC hardware version. These will be used by the gicv2m and ITS ACPI drivers to only attach to the correct parent. Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation
|
#
3502e7b3 |
|
20-Sep-2016 |
Wojciech Macek <wma@FreeBSD.org> |
Register GICv3 xref. This allows other drivers to retrieve interrupt parent node. Obtained from: Semihalf Submitted by: Michal Stanek <mst@semihalf.com> Sponsored by: Annapurna Labs Reviewed by: wma, zbb Differential Revision: https://reviews.freebsd.org/D7568
|
#
e0f50f02 |
|
15-Jul-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Implement bus_print_child to print the resources used by the ITS driver. Obtained from: ABT Systems Ltd MFC after: 1 month Sponsored by: The FreeBSD Foundation
|
#
b30fd6a0 |
|
14-Jul-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Remove the non-INTRNG support from the GICv3 interrupt controller driver. This is no longer needed. Obtained from: ABT Systems Ltd MFC after: 1 month Sponsored by: The FreeBSD Foundation
|
#
550d01a2 |
|
03-Jun-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Add the GICv3 ITS intrng driver. As the interface to the interrupt framework has significantly changed the driver has moved to a new file. While it shares some code with the existing driver this has been modified to work better with the intrng framework. This has been tested on the ThunderX servers in the netperf cluster and has been used to boot them for other testing, including DTrace and hwpmc. With this we can use intrng on all supported arm64 platforms I was able to test on. It is expected we will move to intrng soon, and disable the old arm64 interrupt framework. Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D6437
|
#
32fb8300 |
|
01-Jun-2016 |
Zbigniew Bodek <zbb@FreeBSD.org> |
Return real error value instead of hard-coded ENXIO (fix after r300149) It is possible to return real error value in case of gic_v3_attach() failure instead of hard-coded ENXIO. Obtained from: Semihalf Sponsored by: Cavium
|
#
9346e913 |
|
18-May-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Return the struct intr_pic pointer from intr_pic_register. This will be needed in later changes where we may not be able to lock the pic list lock to perform a lookup, e.g. from within interrupt context. Obtained from: ABT Systems Ltd Sponsored by: The FreeBSD Foundation
|
#
88f7980a |
|
16-May-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Add intrng support to the GICv3 driver. It lacks ITS support so won't handle MSI or MSI-X interrupts, however this is enought to boot FreeBSD under the ARM Foundation Model with a GICv3 interrupt controller. Approved by: ABT Systems Ltd Relnotes: yes Sponsored by: The FreeBSD Foundation
|
#
42638f9c |
|
05-May-2016 |
Zbigniew Bodek <zbb@FreeBSD.org> |
Fix GICv3 build after r299090 Obtained from: Semihalf Sponsored by: Cavium
|
#
7915adb5 |
|
19-Feb-2016 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Introduce a RMAN_IS_DEFAULT_RANGE() macro, and use it. This simplifies checking for default resource range for bus_alloc_resource(), and improves readability. This is part of, and related to, the migration of rman_res_t from u_long to uintmax_t. Discussed with: jhb Suggested by: marcel
|
#
2dd1bdf1 |
|
26-Jan-2016 |
Justin Hibbits <jhibbits@FreeBSD.org> |
Convert rman to use rman_res_t instead of u_long Summary: Migrate to using the semi-opaque type rman_res_t to specify rman resources. For now, this is still compatible with u_long. This is step one in migrating rman to use uintmax_t for resources instead of u_long. Going forward, this could feasibly be used to specify architecture-specific definitions of resource ranges, rather than baking a specific integer type into the API. This change has been broken out to facilitate MFC'ing drivers back to 10 without breaking ABI. Reviewed By: jhb Sponsored by: Alex Perez/Inertial Computing Differential Revision: https://reviews.freebsd.org/D5075
|
#
004ae5cb |
|
25-Jan-2016 |
Zbigniew Bodek <zbb@FreeBSD.org> |
Simplify GICv3 related drivers' naming Rename gic_v3_ instances to simply use 'gic' and 'its'. The information about the controller's revision is printed in the device announcement during boot anyway. The intention behind this change is to avoid somewhat misleading GIC instances naming such as: gic_v30 gic_v31 ... etc. Submitted by: Zbigniew Bodek <zbb@semihalf.com> Obtained from: Semihalf Sponsored by: Cavium Differential Revision: https://reviews.freebsd.org/D5016
|
#
60f9d31c |
|
22-Jan-2016 |
Andrew Turner <andrew@FreeBSD.org> |
Stop including fdt_common.h in the arm64 code. We don't use anything from it, however may have relied on header pollution to pull in the needed headers through it Sponsored by: ABT Systems Ltd
|
#
1ae9c994 |
|
06-Jul-2015 |
Zbigniew Bodek <zbb@FreeBSD.org> |
Introduce ITS support for ARM64 Add ARM ITS (Interrupt Translation Services) support required to bring-up message signalled interrupts on some ARM64 platforms. Obtained from: Semihalf Sponsored by: The FreeBSD Foundation
|
#
42cb216a |
|
13-May-2015 |
Zbigniew Bodek <zbb@FreeBSD.org> |
Add support for ARM GICv3 interrupt controller used in some ARM64 chips GICv3 allows to distribute interrupts to more than 8 cores served by the previous GIC revisions. GICv3 introduces additional logic in form of Re-Distributors associated with particular CPUs to determine the highest priority interrupts and manage PPIs and LPIs (Locality-specific Peripheral Interrupts). Interrupts routing is based on CPUs' affinity numbers. CPU interface was changed to be accessible via CPU System Registers and this is the preferred (and supported) method in this driver. Obtained from: Semihalf Reviewed by: andrew, emaste, ian, imp Sponsored by: The FreeBSD Foundation
|