[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/PCI: Intercept Dom0 MMCFG from dom0s in HVM containers
>>> On 16.12.15 at 15:04, <boris.ostrovsky@xxxxxxxxxx> wrote: > On 12/16/2015 04:04 AM, Jan Beulich wrote: >>>>> On 15.12.15 at 22:02,<boris.ostrovsky@xxxxxxxxxx> wrote: >>> --- a/xen/arch/x86/hvm/emulate.c >>> +++ b/xen/arch/x86/hvm/emulate.c >>> @@ -1778,6 +1778,28 @@ int hvm_emulate_one_no_write( >>> return _hvm_emulate_one(hvmemul_ctxt, &hvm_emulate_ops_no_write); >>> } >>> >>> +static const struct x86_emulate_ops hvm_emulate_ops_mmio = { >>> + .read = mmio_ro_emulated_read, >>> + .insn_fetch = hvmemul_insn_fetch, >>> + .write = mmio_intercept_write, >>> +}; >> Blank line missing here, but as a probably better alternative this could >> move into the function below. >> >>> +int hvm_emulate_one_mmio(unsigned seg, unsigned bdf, unsigned long gla) >> Name and function parameters don't match up (also for e.g. the >> changed struct mmio_ro_emulate_ctxt). DYM e.g. >> hvm_emulate_one_mmcfg()? > > Yes. I in fact first named it *_mmcfg() and then renamed it to _*mmio(). > But then by the same logic wouldn't we want to rename > mmio_intercept_write() as well, not necessarily because of arguments but > because of what it actually does? We might. I named it that way just to match its neighbors. > I am not sure what you mean by your statement in parentheses about > mmio_ro_emulate_ctxt. I simply hinted at this also likely needing s/mmio/mmcfg/. >> (The function naming in x86/mm.c >> is actually using mmio because its serving wider purpose than >> just MMCFG write interception. Which makes me wonder whether >> we don't actually need that other part for PVH too, in which case >> the naming would again be fine.) > > I don't think I understand what the other part is used for in PV so I > don't know whether it is useful for PVH. It discards writes to the config space of r/o devices. >>> +{ >>> + struct mmio_ro_emulate_ctxt mmio_ro_ctxt = { >>> + .cr2 = gla, >>> + .seg = seg, >>> + .bdf = bdf >>> + }; >>> + struct hvm_emulate_ctxt ctxt = { .ctxt.data = &mmio_ro_ctxt }; >> hvm_mem_access_emulate_one() so far is the only example pre- >> initializing ctxt before calling hvm_emulate_prepare(), and I don't >> think it actually needs this. I think the proper place to set .data is >> after the call to hvm_emulate_prepare(). > > I used hvm_emulate_prepare() as a convenient way to initialize the > context to a reasonable state, with definition of "reasonable" possibly > changing at some point later. Other emulating routines have > hvm_emulate_ctxt passed in so it may already have certain fields set. Oh, I wasn't questioning that part - you certainly need to use that function. I was questioning the zero-initialization of all the fields other than .data prior to calling this function. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |