Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753334AbdFUQ7o (ORCPT ); Wed, 21 Jun 2017 12:59:44 -0400 Received: from mail.skyhub.de ([5.9.137.197]:42410 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751961AbdFUQ7l (ORCPT ); Wed, 21 Jun 2017 12:59:41 -0400 Date: Wed, 21 Jun 2017 18:59:22 +0200 From: Borislav Petkov To: Joerg Roedel Cc: Tom Lendacky , linux-arch@vger.kernel.org, linux-efi@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, x86@kernel.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-mm@kvack.org, iommu@lists.linux-foundation.org, Rik van Riel , Radim =?utf-8?B?S3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Konrad Rzeszutek Wilk , Paolo Bonzini , Larry Woodman , Brijesh Singh , Ingo Molnar , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , Alexander Potapenko , Dave Young , Thomas Gleixner , Dmitry Vyukov Subject: Re: [PATCH v6 26/34] iommu/amd: Allow the AMD IOMMU to work with memory encryption Message-ID: <20170621165921.tv2jfhf5dz7hsjsy@pd.tnic> References: <20170607191309.28645.15241.stgit@tlendack-t1.amdoffice.net> <20170607191745.28645.81756.stgit@tlendack-t1.amdoffice.net> <20170614174208.p2yr5exs4b6pjxhf@pd.tnic> <0611d01a-19f8-d6ae-2682-932789855518@amd.com> <20170615094111.wga334kg2bhxqib3@pd.tnic> <20170621153721.GP30388@8bytes.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20170621153721.GP30388@8bytes.org> User-Agent: NeoMutt/20170113 (1.7.2) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1275 Lines: 36 On Wed, Jun 21, 2017 at 05:37:22PM +0200, Joerg Roedel wrote: > > Do you mean this is like the last exception case in that document above: > > > > " > > - Pointers to data structures in coherent memory which might be modified > > by I/O devices can, sometimes, legitimately be volatile. A ring buffer > > used by a network adapter, where that adapter changes pointers to > > indicate which descriptors have been processed, is an example of this > > type of situation." > > > > ? > > So currently (without this patch) the build_completion_wait function > does not take a volatile parameter, only wait_on_sem() does. > > Wait_on_sem() needs it because its purpose is to poll a memory location > which is changed by the iommu-hardware when its done with command > processing. Right, the reason above - memory modifiable by an IO device. You could add a comment there explaining the need for the volatile. > But the 'volatile' in build_completion_wait() looks unnecessary, because > the function does not poll the memory location. It only uses the > pointer, converts it to a physical address and writes it to the command > to be queued. Ok. Thanks. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.