> > -#define hv_init_timer(timer, tick) wrmsrl(timer, tick) > > -#define hv_init_timer_config(config, val) wrmsrl(config, val) > > +#define hv_init_timer(timer, tick) \ > > + wrmsrl(HV_X64_MSR_STIMER0_COUNT + (2*timer), tick) > > +#define hv_init_timer_config(timer, val) \ > > + wrmsrl(HV_X64_MSR_STIMER0_CONFIG + (2*timer), val) > > Why are we stepping in units of 2? > > K. Y The register addresses for the *_CONFIG and *_COUNT registers are interleaved. From hyperv-tlfs.h: #define HV_X64_MSR_STIMER0_CONFIG 0x400000B0 #define HV_X64_MSR_STIMER0_COUNT 0x400000B1 #define HV_X64_MSR_STIMER1_CONFIG 0x400000B2 #define HV_X64_MSR_STIMER1_COUNT 0x400000B3 #define HV_X64_MSR_STIMER2_CONFIG 0x400000B4 #define HV_X64_MSR_STIMER2_COUNT 0x400000B5 #define HV_X64_MSR_STIMER3_CONFIG 0x400000B6 #define HV_X64_MSR_STIMER3_COUNT 0x400000B7 Michael _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel