x86emul: MSR indexes are only 32 bits wide ... and hence the respective {read,write}_msr() hook parameter doesn't need to be "unsigned long". Signed-off-by: Jan Beulich --- a/xen/arch/x86/hvm/emulate.c +++ b/xen/arch/x86/hvm/emulate.c @@ -966,7 +966,7 @@ static int hvmemul_write_io_discard( } static int hvmemul_write_msr_discard( - unsigned long reg, + unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) { @@ -1439,7 +1439,7 @@ static int hvmemul_write_cr( } static int hvmemul_read_msr( - unsigned long reg, + unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt) { @@ -1447,7 +1447,7 @@ static int hvmemul_read_msr( } static int hvmemul_write_msr( - unsigned long reg, + unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt) { --- a/xen/arch/x86/x86_emulate/x86_emulate.h +++ b/xen/arch/x86/x86_emulate/x86_emulate.h @@ -334,7 +334,7 @@ struct x86_emulate_ops * @reg: [IN ] Register to read. */ int (*read_msr)( - unsigned long reg, + unsigned int reg, uint64_t *val, struct x86_emulate_ctxt *ctxt); @@ -343,7 +343,7 @@ struct x86_emulate_ops * @reg: [IN ] Register to write. */ int (*write_msr)( - unsigned long reg, + unsigned int reg, uint64_t val, struct x86_emulate_ctxt *ctxt);