]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/h87i.c
configs: Remove obsolete chromebook config
[jailhouse.git] / configs / h87i.c
1 /*
2  * Jailhouse, a Linux-based partitioning hypervisor
3  *
4  * Test configuration for Asus H87I-PLUS, 4 GB RAM, 64 MB hypervisor
5  *
6  * Copyright (c) Siemens AG, 2013
7  *
8  * Authors:
9  *  Jan Kiszka <jan.kiszka@siemens.com>
10  *
11  * This work is licensed under the terms of the GNU GPL, version 2.  See
12  * the COPYING file in the top-level directory.
13  */
14
15 #include <linux/types.h>
16 #include <jailhouse/cell-config.h>
17
18 #define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0])
19
20 struct {
21         struct jailhouse_system header;
22         __u64 cpus[1];
23         struct jailhouse_memory mem_regions[9];
24         struct jailhouse_irqchip irqchips[1];
25         __u8 pio_bitmap[0x2000];
26         struct jailhouse_pci_device pci_devices[13];
27         struct jailhouse_pci_capability pci_caps[28];
28 } __attribute__((packed)) config = {
29         .header = {
30                 .hypervisor_memory = {
31                         .phys_start = 0x3b000000,
32                         .size = 0x4000000,
33                 },
34                 .platform_info.x86 = {
35                         .mmconfig_base = 0xf8000000,
36                         .mmconfig_end_bus = 0x3f,
37                         .pm_timer_address = 0x1808,
38                         .dmar_unit_base = {
39                                 0xfed90000,
40                                 0xfed91000,
41                         },
42                 },
43                 .interrupt_limit = 256,
44                 .root_cell = {
45                         .name = "H87I-PLUS",
46
47                         .cpu_set_size = sizeof(config.cpus),
48                         .num_memory_regions = ARRAY_SIZE(config.mem_regions),
49                         .num_irqchips = ARRAY_SIZE(config.irqchips),
50                         .pio_bitmap_size = ARRAY_SIZE(config.pio_bitmap),
51                         .num_pci_devices = ARRAY_SIZE(config.pci_devices),
52                         .num_pci_caps = ARRAY_SIZE(config.pci_caps),
53                 },
54         },
55
56         .cpus = {
57                 0xff,
58         },
59
60         .mem_regions = {
61                 /* RAM */ {
62                         .phys_start = 0x0,
63                         .virt_start = 0x0,
64                         .size = 0x3b000000,
65                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
66                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
67                 },
68                 /* RAM */ {
69                         .phys_start = 0x3f000000,
70                         .virt_start = 0x3f000000,
71                         .size = 0x8da64000,
72                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
73                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
74                 },
75                 /* ACPI */ {
76                         .phys_start = 0xcca63000,
77                         .virt_start = 0xcca63000,
78                         .size = 0x15000,
79                         .flags = JAILHOUSE_MEM_READ,
80                 },
81                 /* RAM */ {
82                         .phys_start = 0xcdfff000,
83                         .virt_start = 0xcdfff000,
84                         .size = 0x1000,
85                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
86                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
87                 },
88                 /* RAM */ {
89                         .phys_start = 0xcf200000,
90                         .virt_start = 0xcf200000,
91                         .size = 0x10000000,
92                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
93                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
94                 },
95                 /* PCI */ {
96                         .phys_start = 0xdf200000,
97                         .virt_start = 0xdf200000,
98                         .size = 0x18e00000,
99                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
100                 },
101                 /* not safe until we catch MSIs via interrupt remapping */
102                 /* HPET */ {
103                         .phys_start = 0xfed00000,
104                         .virt_start = 0xfed00000,
105                         .size = 0x1000,
106                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE,
107                 },
108                 /* RAM */ {
109                         .phys_start = 0x100000000,
110                         .virt_start = 0x100000000,
111                         .size = 0x20000000,
112                         .flags = JAILHOUSE_MEM_READ | JAILHOUSE_MEM_WRITE |
113                                 JAILHOUSE_MEM_EXECUTE | JAILHOUSE_MEM_DMA,
114                 },
115         },
116
117         .irqchips = {
118                 /* IOAPIC */ {
119                         .address = 0xfec00000,
120                         .id = 0x1f0f8,
121                         .pin_bitmap = 0xffffff,
122                 },
123         },
124
125         .pio_bitmap = {
126                 [     0/8 ...   0x3f/8] = -1,
127                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
128                 [  0x48/8 ...   0x5f/8] = -1,
129                 [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
130                 [  0x68/8 ...   0x6f/8] = -1,
131                 [  0x70/8 ...   0x77/8] = 0xfc, /* rtc */
132                 [  0x78/8 ...  0x3af/8] = -1,
133                 [ 0x3b0/8 ...  0x3df/8] = 0, /* VGA */
134                 [ 0x3e0/8 ...  0xcff/8] = -1,
135                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
136         },
137
138         .pci_devices = {
139                 /* PCIDevice: 00:00.0 */
140                 {
141                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
142                         .iommu = 1,
143                         .domain = 0x0,
144                         .bdf = 0x0,
145                         .caps_start = 0,
146                         .num_caps = 1,
147                 },
148                 /* PCIDevice: 00:01.0 */
149                 {
150                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
151                         .iommu = 1,
152                         .domain = 0x0,
153                         .bdf = 0x8,
154                         .caps_start = 1,
155                         .num_caps = 4,
156                         .num_msi_vectors = 1,
157                 },
158                 /* PCIDevice: 00:02.0 */
159                 {
160                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
161                         .iommu = 0,
162                         .domain = 0x0,
163                         .bdf = 0x10,
164                         .caps_start = 5,
165                         .num_caps = 3,
166                         .num_msi_vectors = 1,
167                 },
168                 /* PCIDevice: 00:03.0 */
169                 {
170                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
171                         .iommu = 1,
172                         .domain = 0x0,
173                         .bdf = 0x18,
174                         .caps_start = 8,
175                         .num_caps = 3,
176                         .num_msi_vectors = 1,
177                 },
178                 /* PCIDevice: 00:14.0 */
179                 {
180                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
181                         .iommu = 1,
182                         .domain = 0x0,
183                         .bdf = 0xa0,
184                         .caps_start = 11,
185                         .num_caps = 2,
186                         .num_msi_vectors = 8,
187                         .msi_64bits = 1,
188                 },
189                 /* PCIDevice: 00:16.0 */
190                 {
191                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
192                         .iommu = 1,
193                         .domain = 0x0,
194                         .bdf = 0xb0,
195                         .caps_start = 13,
196                         .num_caps = 2,
197                         .num_msi_vectors = 1,
198                         .msi_64bits = 1,
199                 },
200                 /* PCIDevice: 00:19.0 */
201                 {
202                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
203                         .iommu = 1,
204                         .domain = 0x0,
205                         .bdf = 0xc8,
206                         .caps_start = 15,
207                         .num_caps = 3,
208                         .num_msi_vectors = 1,
209                         .msi_64bits = 1,
210                 },
211                 /* PCIDevice: 00:1a.0 */
212                 {
213                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
214                         .iommu = 1,
215                         .domain = 0x0,
216                         .bdf = 0xd0,
217                         .caps_start = 18,
218                         .num_caps = 3,
219                 },
220                 /* PCIDevice: 00:1b.0 */
221                 {
222                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
223                         .iommu = 1,
224                         .domain = 0x0,
225                         .bdf = 0xd8,
226                         .caps_start = 21,
227                         .num_caps = 4,
228                         .num_msi_vectors = 1,
229                         .msi_64bits = 1,
230                 },
231                 /* PCIDevice: 00:1d.0 */
232                 {
233                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
234                         .iommu = 1,
235                         .domain = 0x0,
236                         .bdf = 0xe8,
237                         .caps_start = 18,
238                         .num_caps = 3,
239                 },
240                 /* PCIDevice: 00:1f.0 */
241                 {
242                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
243                         .iommu = 1,
244                         .domain = 0x0,
245                         .bdf = 0xf8,
246                         .caps_start = 0,
247                         .num_caps = 1,
248                 },
249                 /* PCIDevice: 00:1f.2 */
250                 {
251                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
252                         .iommu = 1,
253                         .domain = 0x0,
254                         .bdf = 0xfa,
255                         .caps_start = 25,
256                         .num_caps = 3,
257                         .num_msi_vectors = 1,
258                 },
259                 /* PCIDevice: 00:1f.3 */
260                 {
261                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
262                         .iommu = 1,
263                         .domain = 0x0,
264                         .bdf = 0xfb,
265                         .caps_start = 0,
266                         .num_caps = 0,
267                 },
268         },
269
270         .pci_caps = {
271                 /* PCIDevice: 00:00.0 */
272                 /* PCIDevice: 00:1f.0 */
273                 {
274                         .id = 0x9,
275                         .start = 0xe0,
276                         .len = 2,
277                         .flags = 0,
278                 },
279                 /* PCIDevice: 00:01.0 */
280                 {
281                         .id = 0xd,
282                         .start = 0x88,
283                         .len = 2,
284                         .flags = 0,
285                 },
286                 {
287                         .id = 0x1,
288                         .start = 0x80,
289                         .len = 8,
290                         .flags = JAILHOUSE_PCICAPS_WRITE,
291                 },
292                 {
293                         .id = 0x5,
294                         .start = 0x90,
295                         .len = 10,
296                         .flags = JAILHOUSE_PCICAPS_WRITE,
297                 },
298                 {
299                         .id = 0x10,
300                         .start = 0xa0,
301                         .len = 2,
302                         .flags = 0,
303                 },
304                 /* PCIDevice: 00:02.0 */
305                 {
306                         .id = 0x5,
307                         .start = 0x90,
308                         .len = 10,
309                         .flags = JAILHOUSE_PCICAPS_WRITE,
310                 },
311                 {
312                         .id = 0x1,
313                         .start = 0xd0,
314                         .len = 8,
315                         .flags = JAILHOUSE_PCICAPS_WRITE,
316                 },
317                 {
318                         .id = 0x13,
319                         .start = 0xa4,
320                         .len = 2,
321                         .flags = 0,
322                 },
323                 /* PCIDevice: 00:03.0 */
324                 {
325                         .id = 0x1,
326                         .start = 0x50,
327                         .len = 8,
328                         .flags = JAILHOUSE_PCICAPS_WRITE,
329                 },
330                 {
331                         .id = 0x5,
332                         .start = 0x60,
333                         .len = 10,
334                         .flags = JAILHOUSE_PCICAPS_WRITE,
335                 },
336                 {
337                         .id = 0x10,
338                         .start = 0x70,
339                         .len = 2,
340                         .flags = 0,
341                 },
342                 /* PCIDevice: 00:14.0 */
343                 {
344                         .id = 0x1,
345                         .start = 0x70,
346                         .len = 8,
347                         .flags = JAILHOUSE_PCICAPS_WRITE,
348                 },
349                 {
350                         .id = 0x5,
351                         .start = 0x80,
352                         .len = 14,
353                         .flags = JAILHOUSE_PCICAPS_WRITE,
354                 },
355                 /* PCIDevice: 00:16.0 */
356                 {
357                         .id = 0x1,
358                         .start = 0x50,
359                         .len = 8,
360                         .flags = JAILHOUSE_PCICAPS_WRITE,
361                 },
362                 {
363                         .id = 0x5,
364                         .start = 0x8c,
365                         .len = 14,
366                         .flags = JAILHOUSE_PCICAPS_WRITE,
367                 },
368                 /* PCIDevice: 00:19.0 */
369                 {
370                         .id = 0x1,
371                         .start = 0xc8,
372                         .len = 8,
373                         .flags = JAILHOUSE_PCICAPS_WRITE,
374                 },
375                 {
376                         .id = 0x5,
377                         .start = 0xd0,
378                         .len = 14,
379                         .flags = JAILHOUSE_PCICAPS_WRITE,
380                 },
381                 {
382                         .id = 0x13,
383                         .start = 0xe0,
384                         .len = 2,
385                         .flags = 0,
386                 },
387                 /* PCIDevice: 00:1a.0 */
388                 /* PCIDevice: 00:1d.0 */
389                 {
390                         .id = 0x1,
391                         .start = 0x50,
392                         .len = 8,
393                         .flags = JAILHOUSE_PCICAPS_WRITE,
394                 },
395                 {
396                         .id = 0xa,
397                         .start = 0x58,
398                         .len = 2,
399                         .flags = 0,
400                 },
401                 {
402                         .id = 0x13,
403                         .start = 0x98,
404                         .len = 2,
405                         .flags = 0,
406                 },
407                 /* PCIDevice: 00:1b.0 */
408                 {
409                         .id = 0x1,
410                         .start = 0x50,
411                         .len = 8,
412                         .flags = JAILHOUSE_PCICAPS_WRITE,
413                 },
414                 {
415                         .id = 0x5,
416                         .start = 0x60,
417                         .len = 14,
418                         .flags = JAILHOUSE_PCICAPS_WRITE,
419                 },
420                 {
421                         .id = 0x10,
422                         .start = 0x70,
423                         .len = 2,
424                         .flags = 0,
425                 },
426                 { /* non-cap registers: HDCTL, TCSEL, DCKCTL,DCKSTS */
427                         .start = 0x40,
428                         .len = 0x10,
429                         .flags = JAILHOUSE_PCICAPS_WRITE,
430                 },
431                 /* PCIDevice: 00:1f.2 */
432                 {
433                         .id = 0x5,
434                         .start = 0x80,
435                         .len = 10,
436                         .flags = JAILHOUSE_PCICAPS_WRITE,
437                 },
438                 {
439                         .id = 0x1,
440                         .start = 0x70,
441                         .len = 8,
442                         .flags = JAILHOUSE_PCICAPS_WRITE,
443                 },
444                 {
445                         .id = 0x12,
446                         .start = 0xa8,
447                         .len = 2,
448                         .flags = 0,
449                 },
450         },
451 };