Skip to content
  • David Woodhouse's avatar
    iommu/vt-d: Fix PASID table allocation · 91017044
    David Woodhouse authored
    
    
    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>
    Cc: stable@vger.kernel.org
    91017044