x86: Prepare PIO error reporting for multiple filters

To prepare the addition of the i8042 filter, rework the PIO access error
reporting so that only unhandled errors are printed by the dispatcher.
The PCI config space handler is extended to dump a specific message.
This pattern is analogous to MMIO handling.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Add i8042 moderation

To avoid that a cell can trigger a system reset or fiddle with the A20
gate via the keyboard controller i8042, intercept the command register
access. This happens for all cells, even when port access is granted.
The filter will only perform the access on behalf of the cell if port
access is granted in the cell's PIO bitmap - and the output port of the
i8042 is not touched as well.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
configs: Release only ports 0x60, 0x61 and 0x64 to root cells

The i8042 is now moderated, just the NMI control registers needs a
second look and thought. Other ports in the range 0x60..0x67 should be
unused or are not wired up.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
configs/README: Fix and update QEMU config and demo description

The config file was no longer in sync with the setup described in the
README. Morever, we should include the HDA audio device in the QEMU
command line so that the pci-demo can be run. Update and enhance the
step-wise introduction in the README accordingly.

Include the virtio-9p-pci device in the config although we are not
referring to it in the README. It's an optional device at 00:1f.7, used
for local testings only.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
configs: h87i: Add non-cap config space regs for Intel HDA

They are all harmless. At least TCSEL is used on device initialization.

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

Remove recently added features, and also support for HPET MSIs (unused
on modern CPUs with proper APICs). Add a check for virtualized
environment (safety requirement) and the to-be-clarified topic NMI
status/control port.

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>
x86: Remove unused cpu_data argument from vmx_entry_failure

panic_stop no longer requires it, so it became useless.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Remove cpu_data parameter from interrupt handling path

We can obtain a reference on demand now.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
x86: Remove cpu_data parameter from vmx_set_cell_config

As a consequence, this allows to remove it also from vmx_cpu_reset and
vmx_cpu_park. All functions always work against the invoking CPU.

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>