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