summaryrefslogtreecommitdiffstats
path: root/poison.h
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2012-02-27 17:18:07 +0000
committerAlexander Graf <agraf@suse.de>2012-03-15 13:12:11 +0100
commitb5aec39672dc6084b43fa3f77764a6f549255a53 (patch)
tree9df7f9a0b6d77a959afcc20a82f350d77685c72a /poison.h
parentb7c28f02a12c98a4710b5c150b0753d39454101e (diff)
downloadhqemu-b5aec39672dc6084b43fa3f77764a6f549255a53.zip
hqemu-b5aec39672dc6084b43fa3f77764a6f549255a53.tar.gz
pseries: Don't try to munmap() a malloc()ed TCE table
For the pseries machine, TCE (IOMMU) tables can either be directly malloc()ed in qemu or, when running on a KVM which supports it, mmap()ed from a KVM ioctl. The latter option is used when available, because it allows the (frequent bottlenext) H_PUT_TCE hypercall to be KVM accelerated. However, even when KVM is persent, TCE acceleration is not always possible. Only KVM HV supports this ioctl(), not KVM PR, or the kernel could run out of contiguous memory to allocate the new table. In this case we need to fall back on the malloc()ed table. When a device is removed, and we need to remove the TCE table, we need to either munmap() or free() the table as appropriate for how it was allocated. The code is supposed to do that, but we buggily fail to initialize the tcet->fd variable in the malloc() case, which is used as a flag to determine which is the right choice. This patch fixes the bug, and cleans up error messages relating to this path while we're at it. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'poison.h')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud