[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v10 05/10] xen: Add vmware_port support
On 05/19/15 16:23, Andrew Cooper wrote: > On 15/05/15 00:34, Don Slutz wrote: >> This includes adding is_vmware_port_enabled >> >> diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c >> index bc3d3a5..153048a 100644 >> --- a/xen/arch/x86/domain.c >> +++ b/xen/arch/x86/domain.c >> @@ -519,7 +519,11 @@ int arch_domain_create(struct domain *d, unsigned int >> domcr_flags, >> (domcr_flags & DOMCRF_hap); >> d->arch.hvm_domain.mem_sharing_enabled = 0; >> if ( config ) >> + { >> d->arch.hvm_domain.vmware_hwver = config->vmware_hwver; >> + d->arch.hvm_domain.is_vmware_port_enabled = >> + !!(config->arch_flags & XEN_DOMCTL_CONFIG_VMWARE_PORT_MASK); >> + } > > This hunk is also subject to my rebase request from patch 2. > Yes, will re-base. >> >> d->arch.s3_integrity = !!(domcr_flags & DOMCRF_s3_integrity); >> >> +static int vmport_ioport(int dir, uint32_t port, uint32_t bytes, uint32_t >> *val) >> +{ >> + struct cpu_user_regs *regs = guest_cpu_user_regs(); >> + >> + /* >> + * While VMware expects only 32-bit in, they do support using >> + * other sizes and out. However they do require only the 1 port >> + * and the correct value in eax. Since some of the data >> + * returned in eax is smaller the 32 bits and/or you only need >> + * the other registers the dir and bytes do not need any >> + * checking. The caller will handle the bytes, and dir is >> + * handled below for eax. >> + */ >> + if ( port == BDOOR_PORT && regs->_eax == BDOOR_MAGIC ) >> + { >> + uint32_t new_eax = ~0u; >> + uint64_t value; >> + struct vcpu *curr = current; >> + struct domain *currd = curr->domain; >> + >> + ASSERT(is_hvm_domain(currd)); > > You will not be getting here for a non HVM domain, but there is nothing > anti PVH here. I would drop the assert. > Ok, will drop. >> + /* >> + * VMware changes the other (non eax) registers ignoring dir >> + * (IN vs OUT). It also changes only the 32-bit part >> + * leaving the high 32-bits unchanged, unlike what one would >> + * expect to happen. >> + */ >> + switch ( regs->_ecx & 0xffff ) >> + { >> + case BDOOR_CMD_GETMHZ: >> + new_eax = currd->arch.tsc_khz / 1000; >> + break; > > Newlines after break statements please. > Will add. >> + case BDOOR_CMD_GETVERSION: >> + /* MAGIC */ >> + regs->_ebx = BDOOR_MAGIC; ... > > Otherwise, Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> I > have not paid any attention to the implementation of the backdoor port > handler, but everything else seems ok. > Thanks. -Don Slutz > ~Andrew > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |