#
dc8ae7db |
|
03-Apr-2018 |
Travis Geiselbrecht <travisg@google.com> |
[kernel][pci] add a Dump() virtual for pci devices to print some info Change-Id: I5140715d7c37701322ed8dd14ba3febf8e70b6a2
|
#
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
|
#
9a709d3b |
|
26-Sep-2017 |
George Kulakowski <kulakowski@google.com> |
[kernel][pcie][status] Use zx_status_t Change-Id: I358be7e0a47a235ad489d1cfa52fde2606204df3
|
#
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
|
#
052e284a |
|
03-Aug-2017 |
Dave Bort <dbort@google.com> |
[kernel] Make kernel always use mxtl:: for Mutex/AutoLock No functional changes, just makes everything more consistent. Change-Id: I9bba8630e79d6d9f1c1bdacc595cdbfc97cf75ba
|
#
545e2143 |
|
12-Jul-2017 |
Christopher Anderson <cja@google.com> |
[pci] Rework VMO resource handling - Fix bug where BARs that did not have allocations already resulted in VMOs having a base of 0x0 (MG-863) - Move VMO creation to the syscall layer rather than during device probing. This allows device bars and config to be a 1 vmo : 1 dispatcher : 1 process mapping and no longer results in object usage that is a grey area in our design (unblocks MG-826) - Add names to VMOs created by the pci bus driver. - With VMOs now being on demand all driver resources have been moved to handles (MG-641) These changes also make the transition to userspace simpler by removing resource creation from pcie_device. Change-Id: I4d15daf4af301bcf095ac0a7a18f954d3c8af024
|
#
b31d7b7f |
|
06-Jul-2017 |
George Kulakowski <kulakowski@google.com> |
[cpp][countof] Prefer the typesafe mxtl::count_of in C++ code Change-Id: I3e475731f6872e6daf764f31964bed9f09186c7c
|
#
47c02055 |
|
22-Jun-2017 |
Christopher Anderson <cja@google.com> |
[pci] Remove device claiming. Now that the device coordinator provides a central method for handing devices to drivers there is no longer a need to explicitly claim a device exclusively. This has the added benefit of simplifying the work that needs to be done when a driver is killed or unloaded. Change-Id: I5d0b810464ee0858430a08821b233e08a3b7abe6
|
#
1903af67 |
|
15-Jun-2017 |
George Kulakowski <kulakowski@google.com> |
[kernel][dev] Use the new MX_OK and MX_ERR_* names Change-Id: I8a280c31fdaedf7476c02f3b5ea8d0b473bf7979
|
#
fb972adf |
|
01-Mar-2017 |
Christopher Anderson <cja@google.com> |
[pci] Shift to using mx_pci_resource_t for memory PCI syscalls and protocols have been added to get pci_resource_t objects that encapsulate MMIO and PIO resources (Configs and BARs). In the MMIO case this means we're passing VMOs from the bus driver to users of the protocol. PIO is platform defined, but on x86 corresponds to an addr / size range. Change-Id: Ibcbd695efe3900316949adb837ee3c6a690c5802
|
#
1fb8124a |
|
16-May-2017 |
George Kulakowski <kulakowski@google.com> |
[mxcpp][mxalloc] Split mxcpp into mxcpp and mxalloc mxcpp used to provide three things. (1) is a very minimal C++ runtime environment. This means essentially the definition of __cxa_pure_virtual, which is a function the compiler expects to have ambient. This functionality is necessary for code written in environments which cannot link the standard library (the kernel and a handful of initial userspace processes). (2) is the definitions of the standard new and delete overloads. Again, these are needed for code that wants to call them but to not link the standard library, but this time only in userspace (the kernel does not want certain behavior stemming from the standard overloads). The behavior is slightly different than the standard ones in failure cases, but not in a way particularly interesting to the rest of this email. (3) is the userspace version of our special AllocChecker new overloads. This mechanism exists for kernelspace, where allocation failure is real and needs to be handled. This mechanism works perfectly well in userspace, in that it compiles, even though the underlying allocator is unlikely to ever return nullptr. It's therefore essentially harmless in userspace. A handful of small libraries are used in both userspace and in the kernel, and also use this mechanism. Note that this feature is essentially copy-pasted between the kernel and userspace. This all works perfectly well for the kernel. Some userspace code also uses these mechanisms, as mentioned. As long as the standard library isn't linked, there are again no issues. But as soon as you want both (3) and std::vector, which is a reasonable thing to want!, there are issues because (1) and (3) come in the same static library. This causes link failures due to duplicate __cxa_pure_virtual symbols. This issue is exacerbated by different behavior in Linux, OS X, and target linkage, in terms of confusion and it-works-on-my-machine sort of issues. This patch splits mxcpp into: mxcpp, containing (1) __cxa_pure_virtual and (2) only if in userspace, the standard new and delete overloads; and mxalloc, containing (3) AllocChecker. mxcpp is mutually exclusive of the standard library. mxalloc can be linked against both code using the standard library, and against code using mxcpp. This patch also deduplicates the AllocChecker between userspace and kernel, and moves the InlineArray class into the kernel (its only callsites are in the kernel). Change-Id: Id42d5d019ee977d44d6cb89ce7ab6884f7a56cd1
|
#
80fbf2dd |
|
27-Feb-2017 |
George Kulakowski <kulakowski@google.com> |
[mxtl] Remove reference-taking variants of AutoLock constructors Change-Id: I3f2c3a6ff88a4004448e9e90668541203d1ff50e
|
#
5077b76a |
|
05-Jan-2017 |
Christopher Anderson <cja@google.com> |
[pci] PCI refactor for C++/PIO/MMIO - Create PciConfig/PciMmioConfig/PciPioConfig classes for abstracting out all PCI configuration reads/writes. - Modify existing PCI codebase to not assume memory mapped MMIO address space for all devices. - Unify PCI device and bridge device types into a single entity separated only by config register mappings. - Update lspci command so it can properly show configuration data whether a device is MMIO or PIO. - Rework PCI Capabilities to use an object hierarchy and common interface. - Convert the remaining C interfaces in the PCI codebase to C++. - Fix clang build. Change-Id: Ia5b32f88f48ba317848befde853b9af9a489205d
|
#
c4082b77 |
|
22-Nov-2016 |
John Grossman <johngro@google.com> |
[pcie] Make IRQ swizzling a PcieRoot property. Move Legacy IRQ swizzling behavior out of the platform interface class and make it a property of a PcieRoot instead. The behavior is not a property of the system as a whole, it is a property of the root being traversed. Change-Id: I3b8241be98582d006cb3570119ed4174201562f2
|
#
f5042c3a |
|
14-Dec-2016 |
John Grossman <johngro@google.com> |
[pcie] Change how ref-counting works. Eliminate the confusing ref-count redirects introduced to deal with multiple inheritance issues. Instead, leverage vtables and some macros to implement something which behaves much like virtual inheritance, but without actually using virtual inheritance. See the extensive document in pcie_ref_counted.h for details. Change-Id: I8dd7e400f2a25ca2296d8f50c580f76ab3c3cf39
|
#
e8881e2e |
|
03-Nov-2016 |
John Grossman <johngro@google.com> |
[pcie] Refactor to add PcieRoot Refactor PcieBridge so we can model PCIe roots as objects which manage a bus and have children, but are not devices. Specifically, there is now a PcieUpstreamNode class which manages children, and is a base class for PcieRoot and PcieDevice. "Having children" is implemented by UpstreamNode, "Being a device with children" is implemented by PcieBridge, and "Being a non-device with children" is implemented by PcieRoot. Next steps ++ Get rid of the root_complex_ singleton member of the bus driver. Replace it with a collection roots. ++ Move the management of legacy IRQ swizzling out of the PciePlatform class and into the PcieRoot class. Swizzle behavior is platform specific, but also specific to the traversal of a specific root. When the platform adds roots to the driver, the swizzle behavior of that specific root should be provided. Change-Id: I62118429632eb30a827f50b49df737eda0f4f693
|
#
0115f2cf |
|
01-Nov-2016 |
John Grossman <johngro@google.com> |
[pcie] Add quirks framework. Add the hooks for a quirks framework so we can address annoying undocumented behavior present on some platforms. Change-Id: I1551e0cf316dce7676e5e6308774ad2d1c1d42b6
|
#
3b4d5f55 |
|
27-Oct-2016 |
John Grossman <johngro@google.com> |
[pcie][c++] Continue conversion to C++ This time, turn pcie_(device|bridge)_state_t into Pcie(Device|Bridge). The process of turning these structs into proper C++ classes is not quite complete yet, but it is close. There are some surface area issues (exposing too much internal state) which still needs to be cleaned up. The areas where some further cleanup is needed include... 1) Capability parsing. 2) Refactoring code so that PCI device tree roots are not modeled as PcieBridges. 3) Legacy IRQ pin swizzling and handling. 4) Debug console code. 5) MMIO/PIO window allocation. 6) Bus topology locking (hot plug/unplug) Still, the major objects in the system are mostly well behaved classes now. This code should be landed soon in order to allow concurrent development without having a huge style refactor looming over everyone. Change-Id: Ib880c9690f2554aaf23823c1ccf891fead03b71b
|
#
59a4c28b |
|
27-Oct-2016 |
John Grossman <johngro@google.com> |
[pcie] More C++ migration. In preparation for turning pcie_(bridge|device)_state_t into proper C++ classes, roughly partition existing code into bridge and device specific cpp/h files. Change-Id: If379a837efeab4b2a9f4f7eb92e6a1fc7f284b13
|