Bug 35062
Summary: | Suspend to ram stopped working after commit of " intel-iommu: Unlink domain from iommu " | ||
---|---|---|---|
Product: | Drivers | Reporter: | optiluca |
Component: | Other | Assignee: | drivers_other |
Status: | CLOSED CODE_FIX | ||
Severity: | high | CC: | akpm, alex.williamson, dwmw2, florian, maciej.rutecki, rjw |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.38.5 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 7216, 32012 |
Description
optiluca
2011-05-14 11:08:46 UTC
First-Bad-Commit : a97590e56d0d58e1dd262353f7cbd84e81d8e600 commit a97590e56d0d58e1dd262353f7cbd84e81d8e600 Author: Alex Williamson <alex.williamson@redhat.com> Date: Fri Mar 4 14:52:16 2011 -0700 intel-iommu: Unlink domain from iommu When we remove a device, we unlink the iommu from the domain, but we never do the reverse unlinking of the domain from the iommu. This means that we never clear iommu->domain_ids, eventually leading to resource exhaustion if we repeatedly bind and unbind a device to a driver. Also free empty domains to avoid a resource leak. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Acked-by: Donald Dutile <ddutile@redhat.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com> (In reply to comment #3) > http://david.woodhou.se/flush-unmaps-on-unbind.patch ? David, this seems to work for me. I found I was able to reproduce a similar issue by unbinding a device from snd_hda_intel. It seems only some devices trigger this, so we never hit it in testing a97590e5. Thanks, Alex Patch : http://david.woodhou.se/flush-unmaps-on-unbind.patch Handled-By : David Woodhouse <dwmw2@infradead.org> David, please ensure that the patch (which isn't in linux-next yet?) has the cc:stable in the changelog? A patch referencing this bug report has been merged in v3.0-rc2: commit 7b668357810ecb5fdda4418689d50f5d95aea6a8 Author: Alex Williamson <alex.williamson@redhat.com> Date: Tue May 24 12:02:41 2011 +0100 intel-iommu: Flush unmaps at domain_exit |