swiotlb: don't assume PA 0 is invalid
authorJan Beulich <JBeulich@suse.com>
Mon, 2 Jun 2014 13:58:25 +0000 (14:58 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 20 Jun 2014 20:04:32 +0000 (16:04 -0400)
commit8e0629c1d4ce86ce7d98ca8756f42769bb17a3c8
tree3b82fe0fc81f5d2671bf3a33667422e1f36ea93e
parent7171511eaec5bf23fb06078f59784a3a0626b38f
swiotlb: don't assume PA 0 is invalid

In 2.6.29 io_tlb_orig_addr[] got converted from storing virtual addresses
to storing physical ones. While checking virtual addresses against NULL
is a legitimate thing to catch invalid entries, checking physical ones
against zero isn't: There's no guarantee that PFN 0 is reserved on a
particular platform.

Since it is unclear whether the check in swiotlb_tbl_unmap_single() is
actually needed, retain it but check against a guaranteed invalid physical
address. This requires setting up the array in a suitable fashion. And
since the original code failed to invalidate array entries when regions
get unmapped, this is being fixed at once along with adding a similar
check to swiotlb_tbl_sync_single().

Obviously the less intrusive change would be to simply drop the check in
swiotlb_tbl_unmap_single().

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
lib/swiotlb.c