]> rtime.felk.cvut.cz Git - jailhouse.git/blob - TODO.md
TODO: Add items about MMIO dispatching enhancements
[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
10 ARM support
11   - v7 (32-bit) [WIP]
12     - System MMU support
13     - improve support for platform variations (device tree?)
14   - v8 (64-bit)
15   - support for big endian
16     - infrastructure to support BE architectures (byte-swapping services)
17     - usage of that infrastructure in generic subsystems
18     - specific BE support for ARMv7, then v8
19
20 Configuration
21  - review of format, rework of textual representation
22  - platform device assignment
23  - enhance config generator
24     - confine the created root cell config to the essentially required
25       resources (e.g. PCI BARs)
26     - generate non-root cell configs
27     - add knowledge base about resource access rules that need manual review or
28       configurations that are known to be problematic (e.g. INTx sharing
29       between cells)
30
31 Setup validation
32   - check integrity of configurations
33   - check integrity of runtime environment (hypervisor core & page_pool,
34     probably just excluding volatile Linux-related state variables)
35     - pure software solution (without security requirements)
36     - Intel TXT support? [WIP: master thesis]
37     - secure boot?
38   - check for execution inside hypervisor, allow only when enabled in config
39   - clear memory regions before reassignment to prevent information leaks?
40
41 Inter-cell communication channel
42   - analysis of virtio reuse
43   - analysis of ARINC 653 semantics
44   - high-level mechanisms (specifically queues) based on selected/modified
45     standard
46   - Linux for consoles and message-based interfaces (if not reusable)
47
48 Testing
49   - unit tests?
50   - system tests, also in QEMU/KVM
51     - VT-d emulation for QEMU [WIP: interrupt redirection]
52
53 Inmates
54   - reusable runtime environment for cell inmates
55     - skeleton in separate directory
56     - hw access libraries
57       - x86: add TSC calibration
58     - inter-cell communication library
59   - port free small-footprint RTOS to Jailhouse bare-metal environment
60     [WIP: RTEMS]
61
62 Hardware error handling
63   - MCEs
64   - PCI AER
65   - APEI
66   - Thermal
67   - ...
68
69 Monitoring
70   - report error-triggering devices behind IOMMUs via sysfs
71   - hypervisor console via debugfs?
72   - cell software watchdog via comm region messages  
73     -> time out pending comm region messages and kill failing cells
74        (includes timeouts of unanswered shutdown requests)
75
76 Misc
77   - generic sub-page access filtering
78     - use bitmap, likely with byte granularity, to filter access on specific
79       registers in a MMIO page
80   - generic and faster MMIO dispatching
81     - use binary search on an per-cell array of (start, size, handler, opaque)
82       entries
83     - should be able to deal with both existing devices as well as sub-page
84       filtering