> -----Original Message----- > From: Nuno Das Neves <nunodasneves@xxxxxxxxxxxxxxxxxxx> > Sent: Friday, August 18, 2023 3:32 AM > To: linux-hyperv@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; > x86@xxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux- > arch@xxxxxxxxxxxxxxx > Cc: patches@xxxxxxxxxxxxxxx; Michael Kelley (LINUX) > <mikelley@xxxxxxxxxxxxx>; KY Srinivasan <kys@xxxxxxxxxxxxx>; > wei.liu@xxxxxxxxxx; Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>; Dexuan Cui > <decui@xxxxxxxxxxxxx>; apais@xxxxxxxxxxxxxxxxxxx; Tianyu Lan > <Tianyu.Lan@xxxxxxxxxxxxx>; ssengar@xxxxxxxxxxxxxxxxxxx; MUKESH > RATHOR <mukeshrathor@xxxxxxxxxxxxx>; stanislav.kinsburskiy@xxxxxxxxx; > jinankjain@xxxxxxxxxxxxxxxxxxx; vkuznets <vkuznets@xxxxxxxxxx>; > tglx@xxxxxxxxxxxxx; mingo@xxxxxxxxxx; bp@xxxxxxxxx; > dave.hansen@xxxxxxxxxxxxxxx; hpa@xxxxxxxxx; will@xxxxxxxxxx; > catalin.marinas@xxxxxxx > Subject: [PATCH v2 15/15] Drivers: hv: Add modules to expose /dev/mshv to > VMMs running on Hyper-V > > Add mshv, mshv_root, and mshv_vtl modules: > <snip> > + ret = mshv_set_vp_registers(vp->index, vp->partition->id, > + 1, &dispatch_suspend); > + if (ret) > + pr_err("%s: failed to suspend partition %llu vp %u\n", > + __func__, vp->partition->id, vp->index); > + > + return ret; > +} > + > +static int > +get_vp_signaled_count(struct mshv_vp *vp, u64 *count) > +{ > + int ret; > + struct hv_register_assoc root_signal_count = { > + .name = HV_REGISTER_VP_ROOT_SIGNAL_COUNT, > + }; > + > + ret = mshv_get_vp_registers(vp->index, vp->partition->id, > + 1, &root_signal_count); > + > + if (ret) { > + pr_err("%s: failed to get root signal count for partition %llu vp > %u", > + __func__, vp->partition->id, vp->index); > + *count = 0; Have we missed a return here ? Moreover, the return type of this function is never checked consider checking it or change it to void. <snip> > + > +/* Retrieve and stash the supported scheduler type */ > +static int __init mshv_retrieve_scheduler_type(void) > +{ > + struct hv_input_get_system_property *input; > + struct hv_output_get_system_property *output; > + unsigned long flags; > + u64 status; > + > + local_irq_save(flags); > + input = *this_cpu_ptr(hyperv_pcpu_input_arg); > + output = *this_cpu_ptr(hyperv_pcpu_output_arg); > + > + memset(input, 0, sizeof(*input)); > + memset(output, 0, sizeof(*output)); > + input->property_id = HV_SYSTEM_PROPERTY_SCHEDULER_TYPE; > + > + status = hv_do_hypercall(HVCALL_GET_SYSTEM_PROPERTY, input, > output); > + if (!hv_result_success(status)) { > + local_irq_restore(flags); > + pr_err("%s: %s\n", __func__, hv_status_to_string(status)); > + return hv_status_to_errno(status); > + } > + > + hv_scheduler_type = output->scheduler_type; > + local_irq_restore(flags); > + > + pr_info("mshv: hypervisor using %s\n", > scheduler_type_to_string(hv_scheduler_type)); Nit: In this file we are using two styles of prints, few are appended with "mshv:" and few with "__func__". It's better to have a single style for one module.