#
36320886 |
|
19-Jul-2018 |
Corey Tabaka <eieio@google.com> |
[kernel] Dispatchers and most kernel objects lockdep instrumented. - Convert SoloDispatcher to a CRTP template type similar to PeerDispatcher. This makes the lock classes for different solo dispatchers distinct. - Instrument the locks for all dispatchers. - Instrument the locks for all kernel objects except those that lock the thread_lock. Bug: ZX-23 Test: k ut all and system/test/* pass + manual stress testing. Change-Id: I8106c04911e47ea15ccce8e7abd5fbd62adfa6fe
|
#
bf29bc81 |
|
02-May-2018 |
Brian Swetland <swetland@google.com> |
[kernel][interrupts] cleanup, introduce VirtualInterruptDispatcher Since we already use virtual dispatch for registering, unregistering, masking, unmasking, and processing IRQs, let's introduce a separate subclass for Virtual interrupts and remove is_virtual checks. Also make the subclasses responsible for owning and managing their vectors and so forth. Change-Id: Ia323a39575571b2aad6248a12066860022cc0d64
|
#
cca25b86 |
|
26-Apr-2018 |
Brijen Raval <braval@google.com> |
[syscall][irq] Remove (disabled) old irq syscall implementations Change-Id: I2f4a4f42e174dbab5ac4eb84255955fa805cd75d
|
#
b05757ba |
|
29-Mar-2018 |
Brijen Raval <braval@google.com> |
[interrupts][syscalls] zx_irq_create/wait/trigger/destroy impl. This syscall is currently disabled by default and gated behind the building option ENABLE_NEW_IRQ_API ZX-2024 Change-Id: I29bf0ff2f858182c380e48808cfeb008143e6e79
|
#
fae163a8 |
|
21-Feb-2018 |
George Kulakowski <kulakowski@google.com> |
[interrupts] Use only the common dispatcher lock in interrupt dispatchers Change-Id: Id200ada6792ed35ddb53c1843d54fa3359bebf1e
|
#
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
|
#
92c2ca2f |
|
23-Jan-2018 |
Mark Seaborn <mseaborn@google.com> |
[kernel][interrupt] Remove the last remaining use of INT_RESCHEDULE Convert InterruptEventDispatcher to make use of preempt_disable: Pass reschedule=true to Signal() instead of returning INT_RESCHEDULE. Testing: Pressing the power button on a NUC triggers an ACPI interrupt that is handled via this code path. Disabling the poweroff() call in dev/bus/acpi/powerbtn.c allows verifying that. ZX-1490 Change-Id: I9e13b2a2900e79d3b59750bd8bee1f815acd3bda
|
#
038c9dc5 |
|
27-Dec-2017 |
Mike Voydanoff <voydanoff@google.com> |
[syscalls][ddk] Interrupt syscall improvements: It is now possible to wait for multiple interrupts on a single interrupt handle. The zx_interrupt_bind() syscall is used to bind an interrupt vector to an interrupt handle, allowing up to 62 interrupt vectors per handle. The zx_interrupt_get_timestamp() syscall can now be used to retrieve a timestamp for an interrupt. Virtual interrupts are now supported. zx_interrupt_bind() can be used to designate an interrupt slot as a virtual interrupt, and the virtual interrupt can be signaled using the zx_interrupt_signal() syscall. The zx_interrupt_complete() syscall has been removed. Instead, zx_interrupt_wait() now handles unmasking the interrupt at the right time depending on whether the interrupt is edge or level triggered. Slot ZX_INTERRUPT_SLOT_USER is reserved as a virtual interrupt, and is typically used with zx_interrupt_signal() to unblock interrupt threads so they can exit at driver shutdown or to perform periodic work. Currently PCI interrupt handles can only be bound to a single interrupt vector, but it is possible to bind virtual interrupts to PCI interrupt handles. ZX-1469 #done ZX-1471 #done Change-Id: I48c14183c1b9ecd437c8b1ce0d25326b7532e973
|
#
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
|
#
53412c6a |
|
02-Oct-2017 |
Todd Eisenberger <teisenbe@google.com> |
[syscall][interrupt] Let zx_interrupt_create set trigger mode ZX-1182 #comment Prerequisite work Change-Id: Iecd75a4e3f01e987c5f88d0769057f4fa5bba817
|
#
37da9f7e |
|
02-Oct-2017 |
Todd Eisenberger <teisenbe@google.com> |
[syscall][interrupt] Rename ZX_FLAG_REMAP_IRQ Namespace it to become ZX_INTERRUPT_REMAP_IRQ. Change-Id: If4e3e8737e8ffa2a4f836093fcdd5ce32484f245
|
#
4e80f4fc |
|
20-Sep-2017 |
Mike Voydanoff <voydanoff@google.com> |
[syscalls] return ZX_ERR_CANCELED from mx_interrupt_wait() after mx_interrupt_signal() This allows us to terminate interrupt threads without having to use an additional flag. Change-Id: I95cced20e723914a9698916f8c17e4bf5e39c64f
|
#
f3e2126c |
|
12-Sep-2017 |
Roland McGrath <mcgrathr@google.com> |
[zx] Magenta -> Zircon The Great Renaming is here! Change-Id: I3229bdeb2a3d0e40fb4db6fec8ca7d971fbffb94
|
#
59e644b1 |
|
07-Sep-2017 |
George Kulakowski <kulakowski@google.com> |
[zircon][mxtl->fbl] Rename mxtl to fbl Change-Id: Ie21b6498e1bfb0a7fa0315e40b9e5c3ee78646be
|
#
388a7f68 |
|
31-Aug-2017 |
Dave Bort <dbort@google.com> |
[lib/magenta] Rename kernel/lib/magenta to kernel/object TODO: Rename magenta.{cpp,h} and other instances of "magenta" in this module. For MG-1091 "Rename kernel/lib/magenta" Change-Id: I2abc316f543798e00d3a4d1c2c83195da26e6836
|