diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2015-01-12 10:09:41 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-01-12 10:09:41 +0000 |
commit | 5435f1d77eb4e8cf5e4103f64f0ecbe9f2902c71 (patch) | |
tree | 154f3bf6d8cb1762fe4c1628553919308a3bc343 /kvm-all.c | |
parent | 64ea8038ffbf703dcd438a108d2d5499c8ff95d9 (diff) | |
parent | 9e03a0405d56b4af8952b794d0e5dd9206ee7329 (diff) |
Merge remote-tracking branch 'remotes/cohuck/tags/s390x-20150112-v3' into staging
s390x patches for 2.3.
Highlight is support for PCI devices on s390x. Otherwise, performance
improvements (register sync) and small cleanups.
# gpg: Signature made Mon 12 Jan 2015 09:49:31 GMT using RSA key ID C6F02FAF
# gpg: Good signature from "Cornelia Huck <huckc@linux.vnet.ibm.com>"
# gpg: aka "Cornelia Huck <cornelia.huck@de.ibm.com>"
* remotes/cohuck/tags/s390x-20150112-v3:
kvm: extend kvm_irqchip_add_msi_route to work on s390
s390: implement pci instructions
s390: Add PCI bus support
s390x/kvm: avoid syscalls by syncing registers with kvm_run
s390x/kvm: sync register support helper function
s390x/css: Clean up unnecessary CONFIG_USER_ONLY wrappers
s390x/ccw: fix oddity in machine class init
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -1225,6 +1225,10 @@ int kvm_irqchip_add_msi_route(KVMState *s, MSIMessage msg) kroute.u.msi.address_lo = (uint32_t)msg.address; kroute.u.msi.address_hi = msg.address >> 32; kroute.u.msi.data = le32_to_cpu(msg.data); + if (kvm_arch_fixup_msi_route(&kroute, msg.address, msg.data)) { + kvm_irqchip_release_virq(s, virq); + return -EINVAL; + } kvm_add_routing_entry(s, &kroute); kvm_irqchip_commit_routes(s); @@ -1250,6 +1254,9 @@ int kvm_irqchip_update_msi_route(KVMState *s, int virq, MSIMessage msg) kroute.u.msi.address_lo = (uint32_t)msg.address; kroute.u.msi.address_hi = msg.address >> 32; kroute.u.msi.data = le32_to_cpu(msg.data); + if (kvm_arch_fixup_msi_route(&kroute, msg.address, msg.data)) { + return -EINVAL; + } return kvm_update_routing_entry(s, &kroute); } |