lkml.org 
[lkml]   [2010]   [Apr]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/12] x86/amd-iommu: Pt mode fix for domain_destroy
    Date
    From: Chris Wright <chrisw@sous-sol.org>

    After a guest is shutdown, assigned devices are not properly
    returned to the pt domain. This can leave the device using
    stale cached IOMMU data, and result in a non-functional
    device after it's re-bound to the host driver. For example,
    I see this upon rebinding:

    AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a8000 flags=0x0050]
    AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a8040 flags=0x0050]
    AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a8080 flags=0x0050]
    AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a80c0 flags=0x0050]
    0000:02:00.0: eth2: Detected Hardware Unit Hang:
    ...

    The amd_iommu_destroy_domain() function calls do_detach()
    which doesn't reattach the pt domain to the device.
    Use __detach_device() instead.

    Cc: stable@kernel.org
    Signed-off-by: Chris Wright <chrisw@sous-sol.org>
    Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
    ---
    arch/x86/kernel/amd_iommu.c | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)

    diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
    index b97f2f1..0c04254 100644
    --- a/arch/x86/kernel/amd_iommu.c
    +++ b/arch/x86/kernel/amd_iommu.c
    @@ -2298,7 +2298,7 @@ static void cleanup_domain(struct protection_domain *domain)
    list_for_each_entry_safe(dev_data, next, &domain->dev_list, list) {
    struct device *dev = dev_data->dev;

    - do_detach(dev);
    + __detach_device(dev);
    atomic_set(&dev_data->bind, 0);
    }

    --
    1.7.0.4



    \
     
     \ /
      Last update: 2010-04-07 14:51    [W:0.024 / U:30.360 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site