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 <brijesh.si...@amd.com>
Why do we need new interfaces for this though? Just set dma_enabled=false on command line. > --- > 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 */