]> rtime.felk.cvut.cz Git - jailhouse.git/blob - TODO.md
TODO: Update according to latest improvements
[jailhouse.git] / TODO.md
1 Things to be addressed, at some point. Unsorted, unprioritized, incomplete.
2
3 x86 support
4   - AMD IOMMU support [WIP]
5   - power management
6     - block
7     - allow per cell (managing inter-core/inter-cell impacts)
8   - NMI control/status port - moderation or emulation required?
9   - whitelist-based MSR access
10   - add support for CDP (code/data L3 partitioning)
11
12 ARM support
13   - v7 (32-bit)
14     - System MMU support
15     - improve support for platform variations (device tree?)
16   - v8 (64-bit) [WIP]
17   - support for big endian
18     - infrastructure to support BE architectures (byte-swapping services)
19     - usage of that infrastructure in generic subsystems
20     - specific BE support for ARMv7, then v8
21
22 Configuration
23  - review of format, rework of textual representation
24  - platform device assignment
25  - enhance config generator
26     - confine the created root cell config to the essentially required
27       resources (e.g. PCI BARs)
28     - generate non-root cell configs
29     - add knowledge base about resource access rules that need manual review or
30       configurations that are known to be problematic (e.g. INTx sharing
31       between cells)
32
33 Setup validation
34   - check integrity of configurations
35   - check integrity of runtime environment (hypervisor core & page_pool,
36     probably just excluding volatile Linux-related state variables)
37     - pure software solution (without security requirements)
38     - Intel TXT support? [WIP: master thesis]
39     - secure boot?
40   - check for execution inside hypervisor, allow only when enabled in config
41   - clear memory regions before reassignment to prevent information leaks?
42
43 Inter-cell communication channel
44   - analysis of virtio reuse
45   - analysis of ARINC 653 semantics
46   - high-level mechanisms (specifically queues) based on selected/modified
47     standard
48   - Linux for consoles and message-based interfaces (if not reusable)
49
50 Testing
51   - unit tests?
52   - system tests, also in QEMU/KVM
53     - VT-d emulation for QEMU [WIP: interrupt redirection]
54
55 Inmates
56   - reusable runtime environment for cell inmates
57     - skeleton in separate directory
58     - hw access libraries
59       - x86: add TSC calibration
60     - inter-cell communication library
61   - port free small-footprint RTOS to Jailhouse bare-metal environment
62     [WIP: RTEMS]
63
64 Hardware error handling
65   - MCEs
66   - PCI AER
67   - APEI
68   - Thermal
69   - ...
70
71 Monitoring
72   - report error-triggering devices behind IOMMUs via sysfs
73   - hypervisor console via debugfs?
74   - cell software watchdog via comm region messages  
75     -> time out pending comm region messages and kill failing cells
76        (includes timeouts of unanswered shutdown requests)