* [PATCH] iommu/amd: Implement syscore_ops.shutdown() [not found] ` <20140801225049.GC4553-fF5Pk5pvG8Y@public.gmane.org> @ 2014-08-02 2:25 ` Jiang Liu [not found] ` <1406946339-4297-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> 0 siblings, 1 reply; 2+ messages in thread From: Jiang Liu @ 2014-08-02 2:25 UTC (permalink / raw) To: Borislav Petkov, Rafael J . Wysocki, Thomas Gleixner, Joerg Roedel Cc: iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, x86-ml, Jiang Liu, lkml During hibernation or shutdown, AMD iommu generates warnings on some platforms as below: [ 89.089832] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x0000000000000080 flags=0x0020] [ 89.102239] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x0000000000000000 flags=0x0000] [ 89.114684] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 89.127162] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 89.139576] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 89.152017] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 89.164481] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] It may be caused by that the firmware takes back the device after the OS released it and now the legacy emulation tries to do DMA with it. But since there is an IOMMU the physical addresses it tries to DMA to is not mapped and it generated IO page faults. So explicitly shutdown IOMMU units during hibernation or poweroff. Signed-off-by: Jiang Liu <jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> --- Hi Borislav, Could you please help to verify whether this patch help to minimize the race window and reduce IOMMU warning messages? Regards! Gerry --- drivers/iommu/amd_iommu_init.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c index 0e08545d7298..4d1752fe12e1 100644 --- a/drivers/iommu/amd_iommu_init.c +++ b/drivers/iommu/amd_iommu_init.c @@ -1687,9 +1687,16 @@ static int amd_iommu_suspend(void) return 0; } +static void amd_iommu_shutdown(void) +{ + /* disable IOMMUs to go out of the way for BIOS */ + disable_iommus(); +} + static struct syscore_ops amd_iommu_syscore_ops = { .suspend = amd_iommu_suspend, .resume = amd_iommu_resume, + .shutdown = amd_iommu_shutdown, }; static void __init free_on_init_error(void) -- 1.7.10.4 ^ permalink raw reply related [flat|nested] 2+ messages in thread
[parent not found: <1406946339-4297-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>]
* Re: [PATCH] iommu/amd: Implement syscore_ops.shutdown() [not found] ` <1406946339-4297-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org> @ 2014-08-04 10:12 ` Borislav Petkov 0 siblings, 0 replies; 2+ messages in thread From: Borislav Petkov @ 2014-08-04 10:12 UTC (permalink / raw) To: Jiang Liu Cc: x86-ml, Rafael J . Wysocki, lkml, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA, Thomas Gleixner On Sat, Aug 02, 2014 at 10:25:39AM +0800, Jiang Liu wrote: > During hibernation or shutdown, AMD iommu generates warnings on some > platforms as below: > [ 89.089832] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x0000000000000080 flags=0x0020] > [ 89.102239] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x0000000000000000 flags=0x0000] > [ 89.114684] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] > [ 89.127162] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] > [ 89.139576] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] > [ 89.152017] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] > [ 89.164481] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] > > It may be caused by that the firmware takes back the device after the OS > released it and now the legacy emulation tries to do DMA with it. But > since there is an IOMMU the physical addresses it tries to DMA to is > not mapped and it generated IO page faults. So explicitly shutdown > IOMMU units during hibernation or poweroff. Unfortunately, this doesn't help. The current observation is that I don't get the IOPFs during *every* suspend-to-disk cycle but I do get them from time to time. Here are all IOPFs from 10ish suspend/resume cycles with this patch. The newlines between them show how the IOPFs happen: sometimes it is the GPU (device 01:00.0) with a single IOPF... [ 78.482122] AMD-Vi: Event logged [IO_PAGE_FAULT device=01:00.0 domain=0x0014 address=0x0000000020001000 flags=0x0000] [ 171.593660] AMD-Vi: Event logged [IO_PAGE_FAULT device=01:00.0 domain=0x0014 address=0x0000000020001000 flags=0x0000] and sometimes it is the GPU and OHCI0 with multiple ones. [ 280.680624] IO_PAGE_FAULT device=01:00.0 domain=0x0014 address=0x0000000020001000 flags=0x0000] [ 280.694539] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x0000000000000080 flags=0x0020] [ 280.707917] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x0000000000000000 flags=0x0000] [ 280.721234] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 280.734565] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 280.747877] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 280.761227] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 280.774444] AMD-Vi: Event logged [IO_PAGE_FAULT device=00:12.0 domain=0x0009 address=0x00000000ffffffc0 flags=0x0010] [ 290.686170] AMD-Vi: Event logged [IO_PAGE_FAULT device=01:00.0 domain=0x0014 address=0x0000000020001000 flags=0x0000] [ 49.393307] IO_PAGE_FAULT device=01:00.0 domain=0x0014 address=0x0000000020001000 flags=0x0000] Other than that, the box is fine AFAICT. -- Regards/Gruss, Boris. Sent from a fat crate under my desk. Formatting is fine. -- ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2014-08-04 10:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20140801225049.GC4553@pd.tnic>
[not found] ` <20140801225049.GC4553-fF5Pk5pvG8Y@public.gmane.org>
2014-08-02 2:25 ` [PATCH] iommu/amd: Implement syscore_ops.shutdown() Jiang Liu
[not found] ` <1406946339-4297-1-git-send-email-jiang.liu-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-08-04 10:12 ` Borislav Petkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).