On 9/12/22 13:39, Jacob Pan wrote: >>> + if (pasid_valid(mm->pasid) && !forced) { > I don't think this works since we have lazy pasid free. for example, > after all the devices did sva_unbind, mm->pasid we'll remain valid until > mmdrop(). LAM should be supported in this case. Nah, it works fine. It just means that the rules are "you can't do LAM if your process *EVER* got a PASID" instead of "you can't do LAM if you are actively using your PASID". We knew that PASID use would be a one-way trip for a process when we moved to the simplified implementation. This is just more fallout from that. It's fine. > Perhaps, we could introduce another prctl flag for SVA, PR_GET_SVA? > Both iommu driver and LAM can set/query the flag. LAM applications may not > be the only ones want to know if share virtual addressing is on. I don't think it's a good idea to add yet more UABI around this issue. Won't the IOMMU folks eventually get their hardware in line with LAM? Isn't this situation temporary?