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