On 2012-08-31 17:30, Don Slutz wrote: > This is known is linux as VMWARE_PORT_CMD_GETHZ. > > Signed-off-by: Don Slutz <d...@cloudswitch.com> > --- > hw/vmport.c | 22 +++++++++++++++++++++- > 1 files changed, 21 insertions(+), 1 deletions(-) > > diff --git a/hw/vmport.c b/hw/vmport.c > index a4f52ee..37dbf91 100644 > --- a/hw/vmport.c > +++ b/hw/vmport.c > @@ -26,13 +26,15 @@ > #include "pc.h" > #include "kvm.h" > #include "qdev.h" > +#include "qemu-timer.h"
Won't be needed, see below. > > //#define VMPORT_DEBUG > > #define VMPORT_CMD_GETVERSION 0x0a > #define VMPORT_CMD_GETRAMSIZE 0x14 > +#define VMPORT_CMD_GETHZ 0x2d > > -#define VMPORT_ENTRIES 0x2c > +#define VMPORT_ENTRIES 0x2e > #define VMPORT_MAGIC 0x564D5868 > > typedef struct _VMPortState > @@ -102,6 +104,23 @@ static uint32_t vmport_cmd_ram_size(void *opaque, > uint32_t addr) > return ram_size; > } > > +static uint32_t vmport_cmd_get_hz(void *opaque, uint32_t addr) > +{ > + CPUX86State *env = cpu_single_env; > + uint64_t value; > + > + value = (uint64_t)env->tsc_khz * 1000; > + if (value) { > + /* apic-frequency (bus speed) */ > + env->regs[R_ECX] = (uint32_t)get_ticks_per_sec(); So this is 1MHz. That happens to be what we return in get_ticks_per_sec(), but I don't see the logical relation between both. Better set a constant, none of our APIC emulations will change it. > + /* High part of tsc-frequency */ > + env->regs[R_EBX] = (uint32_t)(value >> 32); > + /* Low part of tsc-frequency */ > + return (uint32_t)value; EDX is unused by GETHZ? Just wondering if there is spec. > + } else > + return env->regs[R_EAX]; Use checkpatch.pl, please. > +} > + > /* vmmouse helpers */ > void vmmouse_get_data(uint32_t *data) > { > @@ -141,6 +160,7 @@ static int vmport_initfn(ISADevice *dev) > /* Register some generic port commands */ > vmport_register(VMPORT_CMD_GETVERSION, vmport_cmd_get_version, NULL); > vmport_register(VMPORT_CMD_GETRAMSIZE, vmport_cmd_ram_size, NULL); > + vmport_register(VMPORT_CMD_GETHZ, vmport_cmd_get_hz, NULL); > return 0; > } > > Looks good otherwise. Jan -- Siemens AG, Corporate Technology, CT RTC ITP SDP-DE Corporate Competence Center Embedded Linux