mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 10:34:58 -06:00
Merge remote-tracking branch 'qemu-kvm/uq/master' into staging
# By Jan Kiszka (1) and others # Via Gleb Natapov * qemu-kvm/uq/master: kvm: Fix uninitialized cpuid_data pci-assign: Remove dead code for direct I/O region access from userspace KVM: x86: fix typo in KVM_GET_XCRS Message-id: cover.1385040432.git.gleb@redhat.com Signed-off-by: Anthony Liguori <aliguori@amazon.com>
This commit is contained in:
commit
0a3c738507
2 changed files with 14 additions and 55 deletions
|
@ -154,55 +154,19 @@ static uint64_t assigned_dev_ioport_rw(AssignedDevRegion *dev_region,
|
|||
uint64_t val = 0;
|
||||
int fd = dev_region->region->resource_fd;
|
||||
|
||||
if (fd >= 0) {
|
||||
if (data) {
|
||||
DEBUG("pwrite data=%" PRIx64 ", size=%d, e_phys=" TARGET_FMT_plx
|
||||
", addr="TARGET_FMT_plx"\n", *data, size, addr, addr);
|
||||
if (pwrite(fd, data, size, addr) != size) {
|
||||
error_report("%s - pwrite failed %s",
|
||||
__func__, strerror(errno));
|
||||
}
|
||||
} else {
|
||||
if (pread(fd, &val, size, addr) != size) {
|
||||
error_report("%s - pread failed %s",
|
||||
__func__, strerror(errno));
|
||||
val = (1UL << (size * 8)) - 1;
|
||||
}
|
||||
DEBUG("pread val=%" PRIx64 ", size=%d, e_phys=" TARGET_FMT_plx
|
||||
", addr=" TARGET_FMT_plx "\n", val, size, addr, addr);
|
||||
if (data) {
|
||||
DEBUG("pwrite data=%" PRIx64 ", size=%d, e_phys=" TARGET_FMT_plx
|
||||
", addr="TARGET_FMT_plx"\n", *data, size, addr, addr);
|
||||
if (pwrite(fd, data, size, addr) != size) {
|
||||
error_report("%s - pwrite failed %s", __func__, strerror(errno));
|
||||
}
|
||||
} else {
|
||||
uint32_t port = addr + dev_region->u.r_baseport;
|
||||
|
||||
if (data) {
|
||||
DEBUG("out data=%" PRIx64 ", size=%d, e_phys=" TARGET_FMT_plx
|
||||
", host=%x\n", *data, size, addr, port);
|
||||
switch (size) {
|
||||
case 1:
|
||||
outb(*data, port);
|
||||
break;
|
||||
case 2:
|
||||
outw(*data, port);
|
||||
break;
|
||||
case 4:
|
||||
outl(*data, port);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (size) {
|
||||
case 1:
|
||||
val = inb(port);
|
||||
break;
|
||||
case 2:
|
||||
val = inw(port);
|
||||
break;
|
||||
case 4:
|
||||
val = inl(port);
|
||||
break;
|
||||
}
|
||||
DEBUG("in data=%" PRIx64 ", size=%d, e_phys=" TARGET_FMT_plx
|
||||
", host=%x\n", val, size, addr, port);
|
||||
if (pread(fd, &val, size, addr) != size) {
|
||||
error_report("%s - pread failed %s", __func__, strerror(errno));
|
||||
val = (1UL << (size * 8)) - 1;
|
||||
}
|
||||
DEBUG("pread val=%" PRIx64 ", size=%d, e_phys=" TARGET_FMT_plx
|
||||
", addr=" TARGET_FMT_plx "\n", val, size, addr, addr);
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue