inmates: pci: allow pci_find_device to discover multiple devices

Systems can have more than one PCI device with the same vendor/device
id pair. Change the discovery helper to allow searching for more than
just the first bdf.

Signed-off-by: Henning Schild <henning.schild@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
inmates: pci: add msix support to inmate lib

Add basic MSI-X support to inmate PCI library.

Signed-off-by: Henning Schild <henning.schild@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Documentation: Add Doxygen infrastructure

We diverge from Linux kernel style and use Doxygen as our code
documentation generator, see [1] for the reasoning. This adds the
required build infrastructure. Run "make docs" to trigger it (not
automatically done via other targets).

[1] http://thread.gmane.org/gmane.linux.jailhouse/1281

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Prefix arch-specific PCI functions properly

Add the "arch_"-prefix to pci_suppress_msi, pci_update_msi and
pci_update_msix_vector. This clearly signals that those functions have
to be implemented by the architecture support.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Document PCI subsystem interfaces

Convert existing kernel-doc comments to doxygen style and add missing
functions and structure descriptions for public interfaces. Architecture
specific functions are documented in the headers to avoid duplications
at the implementation site.

No functional changes.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Rename page_map_* -> paging_*

The module is already called "paging", so lets call its functions like
this as well. No functional changes.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Rename *MAX_PAGE_DIR_LEVELS to *MAX_PAGE_TABLE_LEVELS

To be consistent with terms used throughout the hypervisor.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Rename arch-specific cache and TLB flush functions

Consistently add "arch_" and the subsystem prefix und use clearer names
for cache and TLB flushing services.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Document page management subsystem interfaces

This adds doxygen-style documentation for public parts of the page
management subsystem. Again we place documentation of architecture-
provided entities in the generic header.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Factor out generic jailhouse/types.h

Some types in the architecture-specific header are in fact generic. Move
them into a separate header and include this one directly from now on.
Document cpu_set at this chance according to doxygen style.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Remove cpu_data parameter from hypercall functions

We can obtain a reference on demand now.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Remove unused cpu_data from arch_cell_create/destroy

Became obsolete with 77b0e690ec.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Remove cpu_data from arch_config_commit

We can obtain a reference inside arch_config_commit. This also allows to
drop cpu_data from late_init.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Rename [arch_]panic_halt to [arch_]panic_park

This makes naming consistent with other parts of the code.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Document control subsystem

This adds doxygen-style documentation for public parts of the control
subsystem.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Rename vm_exit to vmx_vmexit

Clarify that this is in fact a VMX-specific entry point. Consequently,
move the misplaced prototype to the VMX header.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core: Document setup subsystem

This adds doxygen-style documentation for public parts of the setup
subsystem, including the hypervisor header.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Document cell structure

Document the x86-specific cell structure. This is a temporary solution
until we factored out generic bits.

The cell structure is cross-subsystem, so leave it unassigned to
group.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
core Assign root_cell to control subsystem

Move the global root_cell structure to the control subsystem, both
code- and documentation-wise.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Disentangle circular dependency of percpu.h and vmx.h

Move the struct vmcs to where it really belongs: vmx.h. This requires
including of the latter file from percpu.h. Enable this via a forward-
declaration of struct per_cpu in vmx.h. And now that we split things up,
we can move the vmx_state enum as well.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>