From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37547) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bjukL-00035e-1w for qemu-devel@nongnu.org; Tue, 13 Sep 2016 16:56:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bjukF-0002PO-Pm for qemu-devel@nongnu.org; Tue, 13 Sep 2016 16:56:00 -0400 Received: from mx1.redhat.com ([209.132.183.28]:44550) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bjukF-0002P8-Js for qemu-devel@nongnu.org; Tue, 13 Sep 2016 16:55:55 -0400 Date: Tue, 13 Sep 2016 23:55:52 +0300 From: "Michael S. Tsirkin" Message-ID: <20160913235055-mutt-send-email-mst@kernel.org> References: <147377800565.11859.4411044563640180545.stgit@brijesh-build-machine> <147377820679.11859.11888810000954712438.stgit@brijesh-build-machine> <20160913213912-mutt-send-email-mst@kernel.org> <0dfffab0-4774-e458-2485-fa8e32d7dcdb@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <0dfffab0-4774-e458-2485-fa8e32d7dcdb@amd.com> Subject: Re: [Qemu-devel] [RFC PATCH v1 20/22] fw_cfg: sev: disable dma in real mode List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Brijesh Singh Cc: ehabkost@redhat.com, crosthwaite.peter@gmail.com, armbru@redhat.com, p.fedin@samsung.com, qemu-devel@nongnu.org, lcapitulino@redhat.com, pbonzini@redhat.com, rth@twiddle.net On Tue, Sep 13, 2016 at 03:46:15PM -0500, Brijesh Singh wrote: > Hi Michael, > > On 09/13/2016 01:39 PM, Michael S. Tsirkin wrote: > > On Tue, Sep 13, 2016 at 10:50:06AM -0400, Brijesh Singh wrote: > > > In SEV-enabled guest dma should be performed on shared pages. Since > > > the SeaBIOS executes in non PAE mode and does not have access to C-bit > > > to create a shared page hence disable the dma operation when reading > > > from fw_cfg interface. > > > > > > Signed-off-by: Brijesh Singh > > > > Why do we need new interfaces for this though? Just > > set dma_enabled=false on command line. > > > > Thanks, i was not aware of dma_enabled=false command line option. > Could you please tell me how to set this command line option? > > I see this in 'qemu --help' > > -fw_cfg [name=],file= > add named fw_cfg entry from file > -fw_cfg [name=],string= > add named fw_cfg entry from string > For example, set it on all fw cfg devices: -global fw_cfg.dma_enabled=false should work. > > > --- > > > hw/nvram/fw_cfg.c | 6 ++++++ > > > 1 file changed, 6 insertions(+) > > > > > > diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c > > > index 6a68e59..aca99e9 100644 > > > --- a/hw/nvram/fw_cfg.c > > > +++ b/hw/nvram/fw_cfg.c > > > @@ -24,6 +24,7 @@ > > > #include "qemu/osdep.h" > > > #include "hw/hw.h" > > > #include "sysemu/sysemu.h" > > > +#include "sysemu/kvm.h" > > > #include "sysemu/dma.h" > > > #include "hw/boards.h" > > > #include "hw/isa/isa.h" > > > @@ -1009,6 +1010,11 @@ static void fw_cfg_io_realize(DeviceState *dev, Error **errp) > > > FWCfgIoState *s = FW_CFG_IO(dev); > > > SysBusDevice *sbd = SYS_BUS_DEVICE(dev); > > > > > > + /* disable dma on fw_cfg when SEV is enabled */ > > > + if (kvm_sev_enabled()) { > > > + qdev_prop_set_bit(dev, "dma_enabled", false); > > > + } > > > + > > > /* when using port i/o, the 8-bit data register ALWAYS overlaps > > > * with half of the 16-bit control register. Hence, the total size > > > * of the i/o region used is FW_CFG_CTL_SIZE */