On 23.01.19 13:02, Burak Atalay wrote:
Hello Mr. Kiszka,
Thanks for the reply. Removing that memory region from the sysconfig did not solve the
problem, however could you please elaborate on what you mean by "update indexes that
refer to entries after that one"? It is probably something obvious that I am
missing, but I did not understand where the indexes that I am supposed to update are in
the config file. I also tried removing the mem regions for the device 03:00.0 completely,
and I also removed the entries for 03:00.0 from pci_devices and pci_caps, but then I got
an error for the device 03:00.1:
Activating Hypervisor
VT-d fault event reported by IOMMU 0:
Source Identifier (bus:dev.func): 03:00.1
Fault Reason 0x22 Fault Info: 6b000000000 Type 0
Could you please point me towards how the mapping for mem regions is defined in
the config file?
Ok, the error moved on to the next device/function (3:00.1). And the reason
seems to be some bug in the config generator that stumbles for MSI-X regions at
locations > 4G. This causes wrong values here:
/* PCIDevice: 03:00.0 */
{
...
.msix_address = 0xffe04000,
},
/* PCIDevice: 03:00.1 */
{
...
.msix_address = 0xffe00000,
},
The higher bits are missing, and the related regions are incorrectly mapped into
the guest. Let me debug that...
Which Jailhouse version are you using?
Jan
-----Original Message-----
From: Jan Kiszka <[email protected]>
Sent: Sunday, January 13, 2019 3:39 AM
To: Atalay Burak 1CS2 <[email protected]>;
[email protected]
Cc: Haase Heiko 1CS2 <[email protected]>
Subject: *EXT* Re: Jailhouse Enable Error // VT-d fault event reported by IOMMU 0
On 11.01.19 22:05, Burak Atalay wrote:
Hello everyone,
I am encountering some problems while trying to run Jailhouse.
Attached you can find the sysconfig file that was generated by “jailhouse
config create” command.
While I was cross-checking the memory regions in the sysconfig file
with the output from “cat /proc/iomem” I realized that there was a
missing memory region, so I had to manually enter the following to the
sysconfig file:
/* MemRegion: 796b9000-79887fff : Reserved APEI ERST
{
.phys_start = 0x796b9000,
.virt_start = 0x796b9000,
.size = 0x1cf000,
.flags = JAILHOUSE_MEM_READ |
JAILHOUSE_MEM_WRITE |
JAILHOUSE_MEM_EXECUTE
| JAILHOUSE_MEM_DMA,
},
Yes, the config generator does not always catch all required regions. We could
possibly improve on that by digging deeper into what Linux reports as I/O
resources. Specifically, we would have to tell generally reserved and therefore
unused regions apart from these here which are still used.
Before this configuration, “jailhouse enable” command would crash the
machine, after this modification when I run Jailhouse I get the following error:
Activating Hypervisor
VT-d fault event reported by IOMMU 0:
Source Identifier (bus:dev.func): 03:00.0
Fault Reason 0x26 Fault Info: 49000000000 Type 0
I studied the source code for Jailhouse, and also tried to find a
solution in the mailing list, but I was unable to do so. I am
attaching the output of the command “lspci –vvv –s 03:00.0”,
“jailhouse hardware check”, “cat /proc/iomem”, and the system
information that is collected by “tools/jailhouse config collect data.tar”.
Any suggestions are welcome.
On first glance I suspect that - for whatever reason - your system
configuration got an entry to map the I/O region of 03:00.0 in BAR 4 (at
0x383fffe04000) directly into the guest. That prevents the required
virtualization of MSI-X interrupts by Jailhouse so that the hardware correctly
detect an invalid MSI-X request and rejects it.
Try to remove that mapping from the mem_regions (but make sure to update
indexes that refer to entries after that one).
Jan
--
You received this message because you are subscribed to the Google Groups
"Jailhouse" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.