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