• David Woodhouse's avatar
    iommu/vt-d: Fix PASID table allocation · d88a1bd0
    David Woodhouse authored
    commit 91017044 upstream.
    
    Somehow I ended up with an off-by-three error in calculating the size of
    the PASID and PASID State tables, which triggers allocations failures as
    those tables unfortunately have to be physically contiguous.
    
    In fact, even the *correct* maximum size of 8MiB is problematic and is
    wont to lead to allocation failures. Since I have extracted a promise
    that this *will* be fixed in hardware, I'm happy to limit it on the
    current hardware to a maximum of 0x20000 PASIDs, which gives us 1MiB
    tables — still not ideal, but better than before.
    
    Reported by Mika Kuoppala <mika.kuoppala@linux.intel.com> and also by
    Xunlei Pang <xlpang@redhat.com> who submitted a simpler patch to fix
    only the allocation (and not the free) to the "correct" limit... which
    was still problematic.
    Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    d88a1bd0
intel-svm.c 18.1 KB