#
2f2670a8 |
|
09-Aug-2018 |
Christopher Anderson <cja@google.com> |
[kernel] Pull MSI support out of PCIe into dev/interrupt - Remove PCI dependency from the Intel IOMMU impl. - Remove WITH_DEV_PCIE defines that gate MSI support. - Move msi_* functions to dev/interrupt.h and provide weak stubs in dev/interrupt/msi.c - Update intel and aram methods to use new MSI functions that exist standalone. The MSI interface is subject to change still in the future, but for now this decouples the IOMMU from PCI and sets up a framework for MSI being part of the kernel interrupt interface. PciePlatform support classes are mostly left alone to avoid refactoring a system that will be unused later. They may be eliminated in a future CL if it seems easy to do. Test: core-tests and boot tests Change-Id: I89f226ccf5ebf4930ea06d9f32cb6e1caabde34e
|
#
6ae3d36c |
|
08-Jun-2018 |
Nick Maniscalco <maniscalco@google.com> |
[kernel][interrupts][gicv2] Add shutdown_interrupts_curr_cpu On arm64, once we've powered off a CPU (via PSCI CPU_OFF) it's critical that it not receive any interrupts. This change: - adds a (currently unused) shutdown_cpu operation to the platform - implements shutdown_interrupts_curr_cpu for arm64 gicv2 On arm64 gicv2, shutdown_interrupts_curr_cpu asserts that all Private Peripheral Interrupts (PPIs) are disabled and any Shared Peripheral Interrupts (SPIs) no longer target the CPU that's about to be shutdown. On arm64, gicv3, shutdown_interrupts_curr_cpu is PANIC_UNIMPLEMENTED. On x64, shutdown_interrupts_curr_cpu is PANIC_UNIMPLEMENTED. Future changes will implement shutdown_interrupts_curr_cpu for gicv3 and x64. Tested: Manually tested gicv2 path on qemu using another change that actually called shutdown_interrupts_curr_cpu (prior to shutting down the platform timer). ZX-2228 #comment prereq ZX-2302 #comment progress Change-Id: I983e88c7b92159567efc9d3a305231dd86b53b8e
|
#
d62150ad |
|
11-Jun-2018 |
Christopher Anderson <cja@google.com> |
[kernel] Add get_base_vector and get_max_vector to interrupt interface Add interrupt_get_base_vector() and interrupt_get_max_vector() to the interrupt.h interface, as well as the pdev interrupt protocol structure. Test: none Change-Id: I3f7fd7b779e019bd82d3eb586ed4842a2c84b3a5
|
#
9f95363b |
|
05-Feb-2018 |
Mark Seaborn <mseaborn@google.com> |
[kernel][interrupts] Replace "enum handler_return" type with void Following recent changes for using preempt_disable, all of the in-kernel interrupt handlers now always return INT_NO_RESCHEDULE. We can therefore remove their return values. We can use "void" instead of "enum handler_return". The bulk changes are: * Search-and-replace "enum handler_return" -> "void". * Manually change "return INT_NO_RESCHEDULE;" -> "return;", or remove when at the end of a function. * Manually change "return foo();" -> "foo();" when return type is void (just a cleanup -- the code compiles without this change). The non-bulk changes include: * Remove the definition of enum handler_return. * Update the interrupt entry points: faults.cpp and exceptions_c.cpp. * Update a few places where handler_return values were propagated, such as "handler->handler()" calls, removing "ret =". Note that platform_fiq() (changed here) is called from ARM assembly. ZX-1490 Change-Id: I70b57c610ded0facb93c09ac8ffc81cf23a985fc
|
#
1e354201 |
|
25-Jan-2018 |
Mark Seaborn <mseaborn@google.com> |
[kernel] Revert "[kernel][interrupts] Add assertion to every interrupt-handling function" This reverts commit cae96aef07ff38db6e1ad7f05444758531c3e764. That change caused a kernel assertion failure via the following path: sys_mmap_device_io() -> IoBitmap::SetIoBitmap() -> mp_sync_exec() -> mp_mbx_generic_irq() ZX-1490 Change-Id: Ic2362d000be7b4e021c6942cc6d0f9550dd15649
|
#
cae96aef |
|
24-Jan-2018 |
Mark Seaborn <mseaborn@google.com> |
[kernel][interrupts] Add assertion to every interrupt-handling function This is in preparation for removing the "enum handler_return" type. When we replace that with "void", there will be nothing in the function signatures to mark out these functions that are only called in interrupt-handling context. To make up for that, add the assertion "DEBUG_ASSERT(arch_in_int_handler())" at the start of every function that currently returns a "handler_return". ZX-1490 Change-Id: I30deda7192eed9f5a5276ec6259cce78277e87ea
|
#
30cf5781 |
|
11-Dec-2017 |
Mike Voydanoff <voydanoff@google.com> |
[kernel][interrupt] return error from register_int_handler() register_int_handler() will return ZX_ERR_INVALID_ARGS instead of panicing if the interrupt vector is invalid and will now also return ZX_ERR_ALREADY_BOUND if the caller attempts to set a handler for an interrupt vector that already has a handler. This allows us to remove an unnecessary WAVL tree from InterruptEventDispatcher. Also, zx_interrupt_create() will return an error if it attempts to bind to an interrupt vector that is now being used by a kernel driver. Add interrupt_has_handler() to determine if we have a handler for an interrupt vector to use for this instead. Also added a missing sanity check to PciInterruptDispatcher. ZX-1369 #done Change-Id: I107634c66b57cd5a7adfd6780d0afa24dfda449b
|
#
39d88359 |
|
26-Sep-2017 |
George Kulakowski <kulakowski@google.com> |
[kernel][status] Migrate the rest to zx_status_t Change-Id: If0a5d3e04bfc3e2a57d068350ee1d1156ed67872
|
#
0601e9df |
|
30-Aug-2017 |
Travis Geiselbrecht <travisg@google.com> |
[kernel][mp] add new header with types and routines to deal with cpu numbers Add a few more types and switch some apis to using those. No functional change. Change-Id: I67add1247cf36d9e6a55f15dd809ffe4bafe06fd
|
#
f3e2126c |
|
12-Sep-2017 |
Roland McGrath <mcgrathr@google.com> |
[zx] Magenta -> Zircon The Great Renaming is here! Change-Id: I3229bdeb2a3d0e40fb4db6fec8ca7d971fbffb94
|
#
823081b0 |
|
05-Jul-2017 |
Mark Seaborn <mseaborn@google.com> |
[errors] Add MX_ prefix to ERR_NOT_CONFIGURED for consistency This is for consistency with other error codes. Change-Id: I21794cd75dfb6ecd4feb956a914418fb2fdf731b
|
#
ce995746 |
|
27-Apr-2017 |
Gurjant Kalsi <gkalsi@google.com> |
[pdev][interrupts] Hook for shutting down irqs Implements a PDev hook for shutting down the interrupt controller. Currently only implemented for the BCM28xx's interrupt controller. Panics for GIC[v3] for now. Change-Id: I734135d419da1e4a91d1a97c4008345fc0a9d0ed
|
#
1d163363 |
|
21-Mar-2017 |
Mike Voydanoff <voydanoff@google.com> |
[kernel][pdev][interrupts] Remove unneeded support for per-cpu interrupt handlers Change-Id: I44bbba3007d9f339f04dbe8ff0dd9928422ac624
|
#
1dad1344 |
|
20-Mar-2017 |
Gurjant Kalsi <gkalsi@google.com> |
[bcm28xx][irq] Fix IRQ Handler nullptr check for RPi3. Looks like we were checking the pointer to the struct that contains the handler rather than the handler itself. Change-Id: I4e5339b14bcabb2ade48e181265b0bf515dd8f0d
|
#
6b6ee00f |
|
20-Mar-2017 |
Mike Voydanoff <voydanoff@google.com> |
[kernel][pdev][interrupts] Add flag to enable/disable per-cpu interrupt handlers The RPi3 interrupt controller does not currently use per-cpu interrupts, and attempting to use them gives bad results. Change-Id: I1d34f18906f3ac8a4e372902fb1318480ec7bea9
|
#
228f1fde |
|
20-Mar-2017 |
Mike Voydanoff <voydanoff@google.com> |
[kernel][pdev] Fix uninitialized spin lock and add some memory barriers Change-Id: I47d585d710d6370b82abbffcad198a1d65f65842
|
#
d39c4a6d |
|
04-Mar-2017 |
Mike Voydanoff <voydanoff@google.com> |
[kernel][pdev] Add support for pdev interrupt controller and debug UART drivers Change-Id: I3216731bd0bd23d716105cf1f2d6b7755fdd05c2
|