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