It looks to me that MSR access API uses in KVM x86 are NOT consistent; sometimes {wr,rd}msrl() are used and sometimes native_{wr,rd}msrl() are used. Was there a reason that how a generic or native MSR API was chosen? In my opinion KVM should use the native MSR APIs, which can streamline operations and potentially improve performance by avoiding the overhead associated with generic MSR API indirect calls when CONFIG_XEN_PV=y. No? Thanks! Xin