]> rtime.felk.cvut.cz Git - jailhouse.git/blob - configs/h87i.c
configs, core, tools: Remove device_limit field from system configuration
[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 = 0xffffff,
132                 },
133         },
134
135         .pio_bitmap = {
136                 [     0/8 ...   0x3f/8] = -1,
137                 [  0x40/8 ...   0x47/8] = 0xf0, /* PIT */
138                 [  0x48/8 ...   0x5f/8] = -1,
139                 [  0x60/8 ...   0x67/8] = 0xec, /* HACK: NMI status/control */
140                 [  0x68/8 ...   0x6f/8] = -1,
141                 [  0x70/8 ...   0x77/8] = 0xfc, /* rtc */
142                 [  0x78/8 ...  0x3af/8] = -1,
143                 [ 0x3b0/8 ...  0x3df/8] = 0, /* VGA */
144                 [ 0x3e0/8 ...  0xcff/8] = -1,
145                 [ 0xd00/8 ... 0xffff/8] = 0, /* HACK: full PCI */
146         },
147
148         .pci_devices = {
149                 /* PCIDevice: 00:00.0 */
150                 {
151                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
152                         .iommu = 1,
153                         .domain = 0x0,
154                         .bdf = 0x0,
155                         .caps_start = 0,
156                         .num_caps = 1,
157                 },
158                 /* PCIDevice: 00:01.0 */
159                 {
160                         .type = JAILHOUSE_PCI_TYPE_BRIDGE,
161                         .iommu = 1,
162                         .domain = 0x0,
163                         .bdf = 0x8,
164                         .caps_start = 1,
165                         .num_caps = 4,
166                         .num_msi_vectors = 1,
167                 },
168                 /* PCIDevice: 00:02.0 */
169                 {
170                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
171                         .iommu = 0,
172                         .domain = 0x0,
173                         .bdf = 0x10,
174                         .caps_start = 5,
175                         .num_caps = 3,
176                         .num_msi_vectors = 1,
177                 },
178                 /* PCIDevice: 00:03.0 */
179                 {
180                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
181                         .iommu = 1,
182                         .domain = 0x0,
183                         .bdf = 0x18,
184                         .caps_start = 8,
185                         .num_caps = 3,
186                         .num_msi_vectors = 1,
187                 },
188                 /* PCIDevice: 00:14.0 */
189                 {
190                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
191                         .iommu = 1,
192                         .domain = 0x0,
193                         .bdf = 0xa0,
194                         .caps_start = 11,
195                         .num_caps = 2,
196                         .num_msi_vectors = 8,
197                         .msi_64bits = 1,
198                 },
199                 /* PCIDevice: 00:16.0 */
200                 {
201                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
202                         .iommu = 1,
203                         .domain = 0x0,
204                         .bdf = 0xb0,
205                         .caps_start = 13,
206                         .num_caps = 2,
207                         .num_msi_vectors = 1,
208                         .msi_64bits = 1,
209                 },
210                 /* PCIDevice: 00:19.0 */
211                 {
212                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
213                         .iommu = 1,
214                         .domain = 0x0,
215                         .bdf = 0xc8,
216                         .caps_start = 15,
217                         .num_caps = 3,
218                         .num_msi_vectors = 1,
219                         .msi_64bits = 1,
220                 },
221                 /* PCIDevice: 00:1a.0 */
222                 {
223                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
224                         .iommu = 1,
225                         .domain = 0x0,
226                         .bdf = 0xd0,
227                         .caps_start = 18,
228                         .num_caps = 3,
229                 },
230                 /* PCIDevice: 00:1b.0 */
231                 {
232                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
233                         .iommu = 1,
234                         .domain = 0x0,
235                         .bdf = 0xd8,
236                         .caps_start = 21,
237                         .num_caps = 4,
238                         .num_msi_vectors = 1,
239                         .msi_64bits = 1,
240                 },
241                 /* PCIDevice: 00:1d.0 */
242                 {
243                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
244                         .iommu = 1,
245                         .domain = 0x0,
246                         .bdf = 0xe8,
247                         .caps_start = 18,
248                         .num_caps = 3,
249                 },
250                 /* PCIDevice: 00:1f.0 */
251                 {
252                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
253                         .iommu = 1,
254                         .domain = 0x0,
255                         .bdf = 0xf8,
256                         .caps_start = 0,
257                         .num_caps = 1,
258                 },
259                 /* PCIDevice: 00:1f.2 */
260                 {
261                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
262                         .iommu = 1,
263                         .domain = 0x0,
264                         .bdf = 0xfa,
265                         .caps_start = 25,
266                         .num_caps = 3,
267                         .num_msi_vectors = 1,
268                 },
269                 /* PCIDevice: 00:1f.3 */
270                 {
271                         .type = JAILHOUSE_PCI_TYPE_DEVICE,
272                         .iommu = 1,
273                         .domain = 0x0,
274                         .bdf = 0xfb,
275                         .caps_start = 0,
276                         .num_caps = 0,
277                 },
278         },
279
280         .pci_caps = {
281                 /* PCIDevice: 00:00.0 */
282                 /* PCIDevice: 00:1f.0 */
283                 {
284                         .id = 0x9,
285                         .start = 0xe0,
286                         .len = 2,
287                         .flags = 0,
288                 },
289                 /* PCIDevice: 00:01.0 */
290                 {
291                         .id = 0xd,
292                         .start = 0x88,
293                         .len = 2,
294                         .flags = 0,
295                 },
296                 {
297                         .id = 0x1,
298                         .start = 0x80,
299                         .len = 8,
300                         .flags = JAILHOUSE_PCICAPS_WRITE,
301                 },
302                 {
303                         .id = 0x5,
304                         .start = 0x90,
305                         .len = 10,
306                         .flags = JAILHOUSE_PCICAPS_WRITE,
307                 },
308                 {
309                         .id = 0x10,
310                         .start = 0xa0,
311                         .len = 2,
312                         .flags = 0,
313                 },
314                 /* PCIDevice: 00:02.0 */
315                 {
316                         .id = 0x5,
317                         .start = 0x90,
318                         .len = 10,
319                         .flags = JAILHOUSE_PCICAPS_WRITE,
320                 },
321                 {
322                         .id = 0x1,
323                         .start = 0xd0,
324                         .len = 8,
325                         .flags = JAILHOUSE_PCICAPS_WRITE,
326                 },
327                 {
328                         .id = 0x13,
329                         .start = 0xa4,
330                         .len = 2,
331                         .flags = 0,
332                 },
333                 /* PCIDevice: 00:03.0 */
334                 {
335                         .id = 0x1,
336                         .start = 0x50,
337                         .len = 8,
338                         .flags = JAILHOUSE_PCICAPS_WRITE,
339                 },
340                 {
341                         .id = 0x5,
342                         .start = 0x60,
343                         .len = 10,
344                         .flags = JAILHOUSE_PCICAPS_WRITE,
345                 },
346                 {
347                         .id = 0x10,
348                         .start = 0x70,
349                         .len = 2,
350                         .flags = 0,
351                 },
352                 /* PCIDevice: 00:14.0 */
353                 {
354                         .id = 0x1,
355                         .start = 0x70,
356                         .len = 8,
357                         .flags = JAILHOUSE_PCICAPS_WRITE,
358                 },
359                 {
360                         .id = 0x5,
361                         .start = 0x80,
362                         .len = 14,
363                         .flags = JAILHOUSE_PCICAPS_WRITE,
364                 },
365                 /* PCIDevice: 00:16.0 */
366                 {
367                         .id = 0x1,
368                         .start = 0x50,
369                         .len = 8,
370                         .flags = JAILHOUSE_PCICAPS_WRITE,
371                 },
372                 {
373                         .id = 0x5,
374                         .start = 0x8c,
375                         .len = 14,
376                         .flags = JAILHOUSE_PCICAPS_WRITE,
377                 },
378                 /* PCIDevice: 00:19.0 */
379                 {
380                         .id = 0x1,
381                         .start = 0xc8,
382                         .len = 8,
383                         .flags = JAILHOUSE_PCICAPS_WRITE,
384                 },
385                 {
386                         .id = 0x5,
387                         .start = 0xd0,
388                         .len = 14,
389                         .flags = JAILHOUSE_PCICAPS_WRITE,
390                 },
391                 {
392                         .id = 0x13,
393                         .start = 0xe0,
394                         .len = 2,
395                         .flags = 0,
396                 },
397                 /* PCIDevice: 00:1a.0 */
398                 /* PCIDevice: 00:1d.0 */
399                 {
400                         .id = 0x1,
401                         .start = 0x50,
402                         .len = 8,
403                         .flags = JAILHOUSE_PCICAPS_WRITE,
404                 },
405                 {
406                         .id = 0xa,
407                         .start = 0x58,
408                         .len = 2,
409                         .flags = 0,
410                 },
411                 {
412                         .id = 0x13,
413                         .start = 0x98,
414                         .len = 2,
415                         .flags = 0,
416                 },
417                 /* PCIDevice: 00:1b.0 */
418                 {
419                         .id = 0x1,
420                         .start = 0x50,
421                         .len = 8,
422                         .flags = JAILHOUSE_PCICAPS_WRITE,
423                 },
424                 {
425                         .id = 0x5,
426                         .start = 0x60,
427                         .len = 14,
428                         .flags = JAILHOUSE_PCICAPS_WRITE,
429                 },
430                 {
431                         .id = 0x10,
432                         .start = 0x70,
433                         .len = 2,
434                         .flags = 0,
435                 },
436                 { /* non-cap registers: HDCTL, TCSEL, DCKCTL,DCKSTS */
437                         .start = 0x40,
438                         .len = 0x10,
439                         .flags = JAILHOUSE_PCICAPS_WRITE,
440                 },
441                 /* PCIDevice: 00:1f.2 */
442                 {
443                         .id = 0x5,
444                         .start = 0x80,
445                         .len = 10,
446                         .flags = JAILHOUSE_PCICAPS_WRITE,
447                 },
448                 {
449                         .id = 0x1,
450                         .start = 0x70,
451                         .len = 8,
452                         .flags = JAILHOUSE_PCICAPS_WRITE,
453                 },
454                 {
455                         .id = 0x12,
456                         .start = 0xa8,
457                         .len = 2,
458                         .flags = 0,
459                 },
460         },
461 };