]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/celsius-w420.c
Update TODO list
[jailhouse.git] / configs / celsius-w420.c
1 /*
2  * Jailhouse, a Linux-based partitioning hypervisor
3  *
4  * Test configuration for Celsius W420, 4 GB RAM, 64 MB hypervisor
5  *
6  * Copyright (c) Siemens AG, 2014
7  *
8  * Authors:
9  *  Ivan Kolchin <ivan.kolchin@siemens.com>
10  * 
11  * NOTE: This config expects the hypervisor to be at 0x1bf00000
12  *
13  * This work is licensed under the terms of the GNU GPL, version 2.  See
14  * the COPYING file in the top-level directory.
15  */
16
17 #include <linux/types.h>
18 #include <jailhouse/cell-config.h>
19
20 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
21
22 struct {
23         struct jailhouse_system header;
24         __u64 cpus[1];
25         struct jailhouse_memory mem_regions[13];
26         struct jailhouse_irqchip irqchips[1];
27         __u8 pio_bitmap[0x2000];
28         struct jailhouse_pci_device pci_devices[13];
29 } __attribute__((packed)) config = {
30         .header = {
31                 .hypervisor_memory = {
32                         .phys_start = 0x1c000000,
33                         .size = 0x4000000,
34                 },
35                 .config_memory = {
36                         .phys_start = 0xd8a1a000,
37                         .size = 0x10000,
38                 },
39                 .root_cell = {
40                         .name = "Celsius-W420",
41
42                         .cpu_set_size = sizeof(config.cpus),
43                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
44                         .num_irqchips = ARRAY_SIZE(config.irqchips),
45                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
46                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
47                 },
48         },
49
50         .cpus = {
51                 0xf,
52         },
53
54         .mem_regions = {
55                 /* RAM */ {
56                         .phys_start = 0x0,
57                         .virt_start = 0x0,
58                         .size = 0x1bf00000,
59                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
60                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
61                 },
62                 /* RAM */ {
63                         .phys_start = 0x1ff00000,
64                         .virt_start = 0x1ff00000,
65                         .size = 0x100000,
66                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
67                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
68                 },
69                 /* RAM */ {
70                         .phys_start = 0x20200000,
71                         .virt_start = 0x20200000,
72                         .size = 0x1fe04000,
73                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
74                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
75                 },
76                 /* RAM */ {
77                         .phys_start = 0x40005000,
78                         .virt_start = 0x40005000,
79                         .size = 0x97f3c000,
80                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
81                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
82                 },
83                 /* ACPI */ {
84                         .phys_start = 0xd8a2a000,
85                         .virt_start = 0xd8a2a000,
86                         .size = 0x11e000,
87                         .flags = JAILHOUSE_MEM_READ,
88                 },
89                 /* RAM */ {
90                         .phys_start = 0xda382000,
91                         .virt_start = 0xda382000,
92                         .size = 0x1000,
93                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
94                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
95                 },
96                 /* ACPI */ {
97                         .phys_start = 0xda383000,
98                         .virt_start = 0xda383000,
99                         .size = 0x43000,
100                         .flags = JAILHOUSE_MEM_READ,
101                 },
102                 /* RAM */ {
103                         .phys_start = 0xda3c6000,
104                         .virt_start = 0xda3c6000,
105                         .size = 0x9df000,
106                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
107                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
108                 },
109                 /* RAM */ {
110                         .phys_start = 0xdafef000,
111                         .virt_start = 0xdafef000,
112                         .size = 0x11000,
113                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
114                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
115                 },
116                 /* PCI */ {
117                         .phys_start = 0xdfa00000,
118                         .virt_start = 0xdfa00000,
119                         .size = 0x1f100000,
120                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
121                 },
122                 /* not safe until we catch MSIs via interrupt remapping */
123                 /* HPET */ {
124                         .phys_start = 0xfed00000,
125                         .virt_start = 0xfed00000,
126                         .size = 0x1000,
127                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
128                 },
129                 /* RAM */ {
130                         .phys_start = 0x100000000,
131                         .virt_start = 0x100000000,
132                         .size = 0x1e600000,
133                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
134                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
135                 },
136         },
137
138         .irqchips = {
139                 /* IOAPIC */ {
140                         .address = 0xfec00000,
141                         .pin_bitmap = 0xffffff,
142                 },
143         },
144
145         .pio_bitmap = {
146                 [     0/8 ...   0x1f/8] = -1,
147                 [  0x20/8 ...   0x27/8] = 0xfc, /* HACK: PIC */
148                 [  0x28/8 ...   0x3f/8] = -1,
149                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
150                 [  0x48/8 ...   0x5f/8] = -1,
151                 [  0x60/8 ...   0x67/8] = 0x0, /* HACK: 8042, and more? */
152                 [  0x68/8 ...   0x6f/8] = -1,
153                 [  0x70/8 ...   0x77/8] = 0xfc, /* rtc */
154                 [  0x78/8 ...   0x7f/8] = -1,
155                 [  0x80/8 ...   0x8f/8] = 0, /* dma */
156                 [  0x90/8 ...  0x16f/8] = -1,
157                 [ 0x170/8 ...  0x177/8] = 0, /* ide */
158                 [ 0x178/8 ...  0x1ef/8] = -1,
159                 [ 0x1f0/8 ...  0x1f7/8] = 0, /* ide */
160                 [ 0x1f8/8 ...  0x2f7/8] = -1,
161                 [ 0x2f8/8 ...  0x2ff/8] = 0, /* serial2 */
162                 [ 0x300/8 ...  0x36f/8] = -1,
163                 [ 0x370/8 ...  0x377/8] = 0xbf, /* ide */
164                 [ 0x378/8 ...  0x3af/8] = -1,
165                 [ 0x3b0/8 ...  0x3df/8] = 0, /* VGA */
166                 [ 0x3e0/8 ...  0x3f7/8] = -1,
167                 [ 0x3f8/8 ...  0x3ff/8] = 0, /* serial 1 */
168                 [ 0x400/8 ...  0x47f/8] = 0, /* ACPI...? */
169                 [ 0x480/8 ...  0xcff/8] = -1,
170                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
171         },
172
173         .pci_devices = {
174                 {
175                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
176                         .domain = 0x0000,
177                         .bus = 0x00,
178                         .devfn = (0x00<<3)|0x0,
179                 },
180                 {
181                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
182                         .domain = 0x0000,
183                         .bus = 0x00,
184                         .devfn = (0x02<<3)|0x0,
185                 },
186                 {
187                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
188                         .domain = 0x0000,
189                         .bus = 0x00,
190                         .devfn = (0x14<<3)|0x0,
191                 },
192                 {
193                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
194                         .domain = 0x0000,
195                         .bus = 0x00,
196                         .devfn = (0x16<<3)|0x0,
197                 },
198                 {
199                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
200                         .domain = 0x0000,
201                         .bus = 0x00,
202                         .devfn = (0x19<<3)|0x0,
203                 },
204                 {
205                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
206                         .domain = 0x0000,
207                         .bus = 0x00,
208                         .devfn = (0x1a<<3)|0x0,
209                 },
210                 {
211                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
212                         .domain = 0x0000,
213                         .bus = 0x00,
214                         .devfn = (0x1b<<3)|0x0,
215                 },
216                 {
217                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
218                         .domain = 0x0000,
219                         .bus = 0x00,
220                         .devfn = (0x1d<<3)|0x0,
221                 },
222                 {
223                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
224                         .domain = 0x0000,
225                         .bus = 0x00,
226                         .devfn = (0x1e<<3)|0x0,
227                 },
228                 {
229                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
230                         .domain = 0x0000,
231                         .bus = 0x00,
232                         .devfn = (0x1f<<3)|0x0,
233                 },
234                 {
235                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
236                         .domain = 0x0000,
237                         .bus = 0x00,
238                         .devfn = (0x1f<<3)|0x2,
239                 },
240                 {
241                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
242                         .domain = 0x0000,
243                         .bus = 0x00,
244                         .devfn = (0x1f<<3)|0x3,
245                 },
246                 {
247                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
248                         .domain = 0x0000,
249                         .bus = 0x00,
250                         .devfn = (0x1f<<3)|0x6,
251                 },
252         },
253 };