From: lon...@linuxonhyperv.com <lon...@linuxonhyperv.com> Sent: Wednesday, April 30, 2025 3:06 PM > > Those helpers are simply wrappers for page allocations. > > Signed-off-by: Long Li <lon...@microsoft.com> > --- > drivers/hv/connection.c | 23 +++++++++++++++++------ > drivers/hv/hv_common.c | 24 ------------------------ > include/asm-generic/mshyperv.h | 4 ---- > 3 files changed, 17 insertions(+), 34 deletions(-) > > diff --git a/drivers/hv/connection.c b/drivers/hv/connection.c > index 8351360bba16..a0160b73b593 100644 > --- a/drivers/hv/connection.c > +++ b/drivers/hv/connection.c
See my comment in Patch 1 of the series, suggesting that these changes to connection.c move into Patch 1. > @@ -206,11 +206,20 @@ int vmbus_connect(void) > INIT_LIST_HEAD(&vmbus_connection.chn_list); > mutex_init(&vmbus_connection.channel_mutex); > > + /* > + * The following Hyper-V interrupt and monitor pages can be used by > + * UIO for mapping to user-space, it should always be allocated on s/it should/so should/ > + * system page boundaries. We use page allocation functions to allocate > + * those pages. We assume system page be bigger than Hyper-v page. Instead of your last sentence above, say: The system page size must be >= the Hyper-V page size. > + */ > + BUILD_BUG_ON(PAGE_SIZE < HV_HYP_PAGE_SIZE); > + > /* > * Setup the vmbus event connection for channel interrupt > * abstraction stuff > */ > - vmbus_connection.int_page = hv_alloc_hyperv_zeroed_page(); > + vmbus_connection.int_page = > + (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); > if (vmbus_connection.int_page == NULL) { > ret = -ENOMEM; > goto cleanup; > @@ -225,8 +234,8 @@ int vmbus_connect(void) > * Setup the monitor notification facility. The 1st page for > * parent->child and the 2nd page for child->parent > */ > - vmbus_connection.monitor_pages[0] = hv_alloc_hyperv_page(); > - vmbus_connection.monitor_pages[1] = hv_alloc_hyperv_page(); > + vmbus_connection.monitor_pages[0] = (void *)__get_free_page(GFP_KERNEL); > + vmbus_connection.monitor_pages[1] = (void *)__get_free_page(GFP_KERNEL); > if ((vmbus_connection.monitor_pages[0] == NULL) || > (vmbus_connection.monitor_pages[1] == NULL)) { > ret = -ENOMEM; > @@ -342,21 +351,23 @@ void vmbus_disconnect(void) > destroy_workqueue(vmbus_connection.work_queue); > > if (vmbus_connection.int_page) { > - hv_free_hyperv_page(vmbus_connection.int_page); > + free_page((unsigned long)vmbus_connection.int_page); > vmbus_connection.int_page = NULL; > } > > if (vmbus_connection.monitor_pages[0]) { > if (!set_memory_encrypted( > (unsigned long)vmbus_connection.monitor_pages[0], 1)) > - hv_free_hyperv_page(vmbus_connection.monitor_pages[0]); > + free_page((unsigned long) > + vmbus_connection.monitor_pages[0]); > vmbus_connection.monitor_pages[0] = NULL; > } > > if (vmbus_connection.monitor_pages[1]) { > if (!set_memory_encrypted( > (unsigned long)vmbus_connection.monitor_pages[1], 1)) > - hv_free_hyperv_page(vmbus_connection.monitor_pages[1]); > + free_page((unsigned long) > + vmbus_connection.monitor_pages[1]); > vmbus_connection.monitor_pages[1] = NULL; > } > } > diff --git a/drivers/hv/hv_common.c b/drivers/hv/hv_common.c > index 297ccd7d4997..421376cea17e 100644 > --- a/drivers/hv/hv_common.c > +++ b/drivers/hv/hv_common.c > @@ -105,30 +105,6 @@ void __init hv_common_free(void) > hv_synic_eventring_tail = NULL; > } > > -/* > - * A Hyper-V page can be used by UIO for mapping to user-space, it should > - * always be allocated on system page boundaries. > - */ > -void *hv_alloc_hyperv_page(void) > -{ > - BUILD_BUG_ON(PAGE_SIZE < HV_HYP_PAGE_SIZE); > - return (void *)__get_free_page(GFP_KERNEL); > -} > -EXPORT_SYMBOL_GPL(hv_alloc_hyperv_page); > - > -void *hv_alloc_hyperv_zeroed_page(void) > -{ > - BUILD_BUG_ON(PAGE_SIZE < HV_HYP_PAGE_SIZE); > - return (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO); > -} > -EXPORT_SYMBOL_GPL(hv_alloc_hyperv_zeroed_page); > - > -void hv_free_hyperv_page(void *addr) > -{ > - free_page((unsigned long)addr); > -} > -EXPORT_SYMBOL_GPL(hv_free_hyperv_page); > - > static void *hv_panic_page; > > /* > diff --git a/include/asm-generic/mshyperv.h b/include/asm-generic/mshyperv.h > index ccccb1cbf7df..4033508fbb11 100644 > --- a/include/asm-generic/mshyperv.h > +++ b/include/asm-generic/mshyperv.h > @@ -236,10 +236,6 @@ int hv_common_cpu_init(unsigned int cpu); > int hv_common_cpu_die(unsigned int cpu); > void hv_identify_partition_type(void); > > -void *hv_alloc_hyperv_page(void); > -void *hv_alloc_hyperv_zeroed_page(void); > -void hv_free_hyperv_page(void *addr); > - > /** > * hv_cpu_number_to_vp_number() - Map CPU to VP. > * @cpu_number: CPU number in Linux terms > -- > 2.34.1 >