[PATCH] AMD IOMMU: disable suspend/resume with IOMMU enabled (for now) - Kernel

This is a discussion on [PATCH] AMD IOMMU: disable suspend/resume with IOMMU enabled (for now) - Kernel ; This patch disables suspend/resume on machines with AMD IOMMU enabled. Real suspend/resume support for AMD IOMMU is currently being worked on. Until this is ready it will be disabled to avoid data corruption when the IOMMU is not properly re-enabled ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: [PATCH] AMD IOMMU: disable suspend/resume with IOMMU enabled (for now)

  1. [PATCH] AMD IOMMU: disable suspend/resume with IOMMU enabled (for now)

    This patch disables suspend/resume on machines with AMD IOMMU enabled. Real
    suspend/resume support for AMD IOMMU is currently being worked on. Until this
    is ready it will be disabled to avoid data corruption when the IOMMU is not
    properly re-enabled at resume. The patch is based on a similar patch for the
    GART driver written by Pavel Machek.
    The overall driver merged into tip/master is tested with parallel disk and
    network loads and showed no problems in a test running for 3 days.

    Signed-off-by: Joerg Roedel
    ---
    arch/x86/kernel/amd_iommu_init.c | 35 +++++++++++++++++++++++++++++++++++
    1 files changed, 35 insertions(+), 0 deletions(-)

    diff --git a/arch/x86/kernel/amd_iommu_init.c b/arch/x86/kernel/amd_iommu_init.c
    index 6ab8128..5d9e45c 100644
    --- a/arch/x86/kernel/amd_iommu_init.c
    +++ b/arch/x86/kernel/amd_iommu_init.c
    @@ -21,6 +21,7 @@
    #include
    #include
    #include
    +#include
    #include
    #include
    #include
    @@ -654,6 +655,32 @@ static void __init enable_iommus(void)
    }
    }

    +/*
    + * Suspend/Resume support
    + * disable suspend until real resume implemented
    + */
    +
    +static int amd_iommu_resume(struct sys_device *dev)
    +{
    + return 0;
    +}
    +
    +static int amd_iommu_suspend(struct sys_device *dev, pm_message_t state)
    +{
    + return -EINVAL;
    +}
    +
    +static struct sysdev_class amd_iommu_sysdev_class = {
    + .name = "amd_iommu",
    + .suspend = amd_iommu_suspend,
    + .resume = amd_iommu_resume,
    +};
    +
    +static struct sys_device device_amd_iommu = {
    + .id = 0,
    + .cls = &amd_iommu_sysdev_class,
    +};
    +
    int __init amd_iommu_init(void)
    {
    int i, ret = 0;
    @@ -745,6 +772,14 @@ int __init amd_iommu_init(void)
    if (ret)
    goto free;

    + ret = sysdev_class_register(&amd_iommu_sysdev_class);
    + if (ret)
    + goto free;
    +
    + ret = sysdev_register(&device_amd_iommu);
    + if (ret)
    + goto free;
    +
    enable_iommus();

    printk(KERN_INFO "AMD IOMMU: aperture size is %d MB\n",
    --
    1.5.3.7


    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  2. Re: [PATCH] AMD IOMMU: disable suspend/resume with IOMMU enabled (for now)


    * Joerg Roedel wrote:

    > This patch disables suspend/resume on machines with AMD IOMMU enabled.
    > Real suspend/resume support for AMD IOMMU is currently being worked
    > on. Until this is ready it will be disabled to avoid data corruption
    > when the IOMMU is not properly re-enabled at resume. The patch is
    > based on a similar patch for the GART driver written by Pavel Machek.
    > The overall driver merged into tip/master is tested with parallel disk
    > and network loads and showed no problems in a test running for 3 days.


    applied to tip/x86/amd-iommu, thanks Joerg.

    Ingo
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

+ Reply to Thread