.snip.. > +static u16 hvcall_sigevent_param(struct kvm_vcpu *vcpu, gpa_t gpa, u32 *conn_id) > +{ > + struct page *page; > + void *pg; > + struct hv_input_signal_event *msg; > + > + if ((gpa & (__alignof__(*msg) - 1)) || > + offset_in_page(gpa) + sizeof(*msg) > PAGE_SIZE) > + return HV_STATUS_INVALID_ALIGNMENT; > + > + page = kvm_vcpu_gfn_to_page(vcpu, gpa >> PAGE_SHIFT); > + if (is_error_page(page)) > + return HV_STATUS_INSUFFICIENT_MEMORY; > + > + pg = kmap_atomic(page); > + msg = pg + offset_in_page(gpa); > + *conn_id = msg->connectionid.u.id + msg->flag_number; Here it is u32.. > + kunmap_atomic(pg); > + return HV_STATUS_SUCCESS; > +} > + .. snip.. > +static int kvm_hv_eventfd_assign(struct kvm *kvm, int conn_id, int fd) It is uint32 in the hypercall, but here you are making it an 'int'. Is that intentional? Or could it be the same type?