From: Michael Kelley <mikelley@microsoft.com> To: Nuno Das Neves <nunodasneves@linux.microsoft.com>, "linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org> Cc: "virtualization@lists.linux-foundation.org" <virtualization@lists.linux-foundation.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "viremana@linux.microsoft.com" <viremana@linux.microsoft.com>, Sunil Muthuswamy <sunilmut@microsoft.com>, "wei.liu@kernel.org" <wei.liu@kernel.org>, Lillian Grassin-Drake <Lillian.GrassinDrake@microsoft.com>, KY Srinivasan <kys@microsoft.com> Subject: RE: [RFC PATCH 06/18] virt/mshv: create, initialize, finalize, delete partition hypercalls Date: Thu, 4 Mar 2021 23:58:58 +0000 [thread overview] Message-ID: <MWHPR21MB1593060CD27B9AAA10862833D7979@MWHPR21MB1593.namprd21.prod.outlook.com> (raw) In-Reply-To: <e6cc796d-f9ee-5203-95a9-05906f95d3f8@linux.microsoft.com> From: Nuno Das Neves <nunodasneves@linux.microsoft.com> Sent: Thursday, March 4, 2021 3:49 PM > > On 2/8/2021 11:42 AM, Michael Kelley wrote: > > From: Nuno Das Neves <nunodasneves@linux.microsoft.com> Sent: Friday, November > 20, 2020 4:30 PM > >> [snip] > >> + > >> +static int > >> +hv_call_create_partition( > >> + u64 flags, > >> + struct hv_partition_creation_properties creation_properties, > >> + u64 *partition_id) > >> +{ > >> + struct hv_create_partition_in *input; > >> + struct hv_create_partition_out *output; > >> + int status; > >> + int ret; > >> + unsigned long irq_flags; > >> + int i; > >> + > >> + do { > >> + local_irq_save(irq_flags); > >> + input = (struct hv_create_partition_in *)(*this_cpu_ptr( > >> + hyperv_pcpu_input_arg)); > >> + output = (struct hv_create_partition_out *)(*this_cpu_ptr( > >> + hyperv_pcpu_output_arg)); > >> + > >> + input->flags = flags; > >> + input->proximity_domain_info.as_uint64 = 0; > >> + input->compatibility_version = HV_COMPATIBILITY_MANGANESE; > >> + for (i = 0; i < HV_PARTITION_PROCESSOR_FEATURE_BANKS; ++i) > >> + input->partition_creation_properties > >> + .disabled_processor_features.as_uint64[i] = 0; > >> + input->partition_creation_properties > >> + .disabled_processor_xsave_features.as_uint64 = 0; > >> + input->isolation_properties.as_uint64 = 0; > >> + > >> + status = hv_do_hypercall(HVCALL_CREATE_PARTITION, > >> + input, output); > > > > hv_do_hypercall returns a u64, which should then be masked with > > HV_HYPERCALL_RESULT_MASK before checking the result. > > > > Yes, I'll fix this everywhere. > > >> + if (status != HV_STATUS_INSUFFICIENT_MEMORY) { > >> + if (status == HV_STATUS_SUCCESS) > >> + *partition_id = output->partition_id; > >> + else > >> + pr_err("%s: %s\n", > >> + __func__, hv_status_to_string(status)); > >> + local_irq_restore(irq_flags); > >> + ret = -hv_status_to_errno(status); > >> + break; > >> + } > >> + local_irq_restore(irq_flags); > >> + ret = hv_call_deposit_pages(NUMA_NO_NODE, > >> + hv_current_partition_id, 1); > >> + } while (!ret); > >> + > >> + return ret; > >> +} > >> + I had a separate thread on the linux-hyperv mailing list about the inconsistency in how we check hypercall status in current upstream code, and proposed some helper functions to make it easier and more consistent. Joe Salisbury has started work on a patch to provide those helper functions and to start using them in current upstream code. You could coordinate with Joe to get the helper functions as well and use them as discussed in that thread. Then later on we won't have to come back and fix up the uses in this patch series. Michael
WARNING: multiple messages have this Message-ID (diff)
From: Michael Kelley via Virtualization <virtualization@lists.linux-foundation.org> To: Nuno Das Neves <nunodasneves@linux.microsoft.com>, "linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org> Cc: "wei.liu@kernel.org" <wei.liu@kernel.org>, Lillian Grassin-Drake <Lillian.GrassinDrake@microsoft.com>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "virtualization@lists.linux-foundation.org" <virtualization@lists.linux-foundation.org>, Sunil Muthuswamy <sunilmut@microsoft.com>, "viremana@linux.microsoft.com" <viremana@linux.microsoft.com> Subject: RE: [RFC PATCH 06/18] virt/mshv: create, initialize, finalize, delete partition hypercalls Date: Thu, 4 Mar 2021 23:58:58 +0000 [thread overview] Message-ID: <MWHPR21MB1593060CD27B9AAA10862833D7979@MWHPR21MB1593.namprd21.prod.outlook.com> (raw) In-Reply-To: <e6cc796d-f9ee-5203-95a9-05906f95d3f8@linux.microsoft.com> From: Nuno Das Neves <nunodasneves@linux.microsoft.com> Sent: Thursday, March 4, 2021 3:49 PM > > On 2/8/2021 11:42 AM, Michael Kelley wrote: > > From: Nuno Das Neves <nunodasneves@linux.microsoft.com> Sent: Friday, November > 20, 2020 4:30 PM > >> [snip] > >> + > >> +static int > >> +hv_call_create_partition( > >> + u64 flags, > >> + struct hv_partition_creation_properties creation_properties, > >> + u64 *partition_id) > >> +{ > >> + struct hv_create_partition_in *input; > >> + struct hv_create_partition_out *output; > >> + int status; > >> + int ret; > >> + unsigned long irq_flags; > >> + int i; > >> + > >> + do { > >> + local_irq_save(irq_flags); > >> + input = (struct hv_create_partition_in *)(*this_cpu_ptr( > >> + hyperv_pcpu_input_arg)); > >> + output = (struct hv_create_partition_out *)(*this_cpu_ptr( > >> + hyperv_pcpu_output_arg)); > >> + > >> + input->flags = flags; > >> + input->proximity_domain_info.as_uint64 = 0; > >> + input->compatibility_version = HV_COMPATIBILITY_MANGANESE; > >> + for (i = 0; i < HV_PARTITION_PROCESSOR_FEATURE_BANKS; ++i) > >> + input->partition_creation_properties > >> + .disabled_processor_features.as_uint64[i] = 0; > >> + input->partition_creation_properties > >> + .disabled_processor_xsave_features.as_uint64 = 0; > >> + input->isolation_properties.as_uint64 = 0; > >> + > >> + status = hv_do_hypercall(HVCALL_CREATE_PARTITION, > >> + input, output); > > > > hv_do_hypercall returns a u64, which should then be masked with > > HV_HYPERCALL_RESULT_MASK before checking the result. > > > > Yes, I'll fix this everywhere. > > >> + if (status != HV_STATUS_INSUFFICIENT_MEMORY) { > >> + if (status == HV_STATUS_SUCCESS) > >> + *partition_id = output->partition_id; > >> + else > >> + pr_err("%s: %s\n", > >> + __func__, hv_status_to_string(status)); > >> + local_irq_restore(irq_flags); > >> + ret = -hv_status_to_errno(status); > >> + break; > >> + } > >> + local_irq_restore(irq_flags); > >> + ret = hv_call_deposit_pages(NUMA_NO_NODE, > >> + hv_current_partition_id, 1); > >> + } while (!ret); > >> + > >> + return ret; > >> +} > >> + I had a separate thread on the linux-hyperv mailing list about the inconsistency in how we check hypercall status in current upstream code, and proposed some helper functions to make it easier and more consistent. Joe Salisbury has started work on a patch to provide those helper functions and to start using them in current upstream code. You could coordinate with Joe to get the helper functions as well and use them as discussed in that thread. Then later on we won't have to come back and fix up the uses in this patch series. Michael _______________________________________________ Virtualization mailing list Virtualization@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2021-03-04 23:59 UTC|newest] Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-21 0:30 [RFC PATCH 00/18] Microsoft Hypervisor root partition ioctl interface Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 01/18] x86/hyperv: convert hyperv statuses to linux error codes Nuno Das Neves 2021-02-09 13:04 ` Vitaly Kuznetsov 2021-02-09 13:04 ` Vitaly Kuznetsov 2021-03-04 18:24 ` Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 02/18] asm-generic/hyperv: convert hyperv statuses to strings Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 03/18] virt/mshv: minimal mshv module (/dev/mshv/) Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 04/18] virt/mshv: request version ioctl Nuno Das Neves 2021-02-08 19:41 ` Michael Kelley 2021-02-08 19:41 ` Michael Kelley via Virtualization 2021-03-04 21:35 ` Nuno Das Neves 2021-02-09 13:11 ` Vitaly Kuznetsov 2021-03-04 18:43 ` Nuno Das Neves 2021-03-05 9:18 ` Vitaly Kuznetsov 2021-03-05 9:18 ` Vitaly Kuznetsov 2021-04-07 0:21 ` Nuno Das Neves 2021-04-07 7:38 ` Vitaly Kuznetsov 2021-04-07 7:38 ` Vitaly Kuznetsov 2021-04-07 13:43 ` Wei Liu 2021-04-07 14:02 ` Vitaly Kuznetsov 2021-04-07 14:02 ` Vitaly Kuznetsov 2021-04-07 14:19 ` Wei Liu 2020-11-21 0:30 ` [RFC PATCH 05/18] virt/mshv: create partition ioctl Nuno Das Neves 2021-02-09 13:15 ` Vitaly Kuznetsov 2021-02-09 13:15 ` Vitaly Kuznetsov 2021-03-04 18:44 ` Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 06/18] virt/mshv: create, initialize, finalize, delete partition hypercalls Nuno Das Neves 2021-02-08 19:42 ` Michael Kelley 2021-02-08 19:42 ` Michael Kelley via Virtualization 2021-03-04 23:49 ` Nuno Das Neves 2021-03-04 23:58 ` Michael Kelley [this message] 2021-03-04 23:58 ` Michael Kelley via Virtualization 2020-11-21 0:30 ` [RFC PATCH 07/18] virt/mshv: withdraw memory hypercall Nuno Das Neves 2021-02-08 19:44 ` Michael Kelley 2021-02-08 19:44 ` Michael Kelley via Virtualization 2021-03-05 21:01 ` Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 08/18] virt/mshv: map and unmap guest memory Nuno Das Neves 2021-02-08 19:45 ` Michael Kelley 2021-02-08 19:45 ` Michael Kelley via Virtualization 2021-03-08 19:14 ` Nuno Das Neves 2021-03-08 19:30 ` Michael Kelley 2021-03-08 19:30 ` Michael Kelley via Virtualization 2020-11-21 0:30 ` [RFC PATCH 09/18] virt/mshv: create vcpu ioctl Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 10/18] virt/mshv: get and set vcpu registers ioctls Nuno Das Neves 2021-02-08 19:47 ` Michael Kelley 2021-02-08 19:47 ` Michael Kelley via Virtualization 2021-03-09 1:39 ` Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 11/18] virt/mshv: set up synic pages for intercept messages Nuno Das Neves 2021-02-08 19:47 ` Michael Kelley 2021-02-08 19:47 ` Michael Kelley via Virtualization 2021-03-11 19:37 ` Nuno Das Neves 2021-03-11 20:45 ` Michael Kelley 2021-03-11 20:45 ` Michael Kelley via Virtualization 2020-11-21 0:30 ` [RFC PATCH 12/18] virt/mshv: run vp ioctl and isr Nuno Das Neves 2020-11-24 16:15 ` Wei Liu 2020-11-21 0:30 ` [RFC PATCH 13/18] virt/mshv: install intercept ioctl Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 14/18] virt/mshv: assert interrupt ioctl Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 15/18] virt/mshv: get and set vp state ioctls Nuno Das Neves 2021-02-08 19:48 ` Michael Kelley 2021-02-08 19:48 ` Michael Kelley via Virtualization 2021-03-11 23:38 ` Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 16/18] virt/mshv: mmap vp register page Nuno Das Neves 2021-02-08 19:49 ` Michael Kelley 2021-02-08 19:49 ` Michael Kelley via Virtualization 2021-03-25 17:36 ` Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 17/18] virt/mshv: get and set partition property ioctls Nuno Das Neves 2020-11-21 0:30 ` [RFC PATCH 18/18] virt/mshv: Add enlightenment bits to create partition ioctl Nuno Das Neves 2020-11-24 16:18 ` [RFC PATCH 00/18] Microsoft Hypervisor root partition ioctl interface Wei Liu 2021-02-08 19:40 ` Michael Kelley 2021-02-08 19:40 ` Michael Kelley via Virtualization
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=MWHPR21MB1593060CD27B9AAA10862833D7979@MWHPR21MB1593.namprd21.prod.outlook.com \ --to=mikelley@microsoft.com \ --cc=Lillian.GrassinDrake@microsoft.com \ --cc=kys@microsoft.com \ --cc=linux-hyperv@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=nunodasneves@linux.microsoft.com \ --cc=sunilmut@microsoft.com \ --cc=viremana@linux.microsoft.com \ --cc=virtualization@lists.linux-foundation.org \ --cc=wei.liu@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.