lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAMvTesCFZ6sxQp7qqSDjD9idRjVHxh96Sp4betomgFH-OFLZ3Q@mail.gmail.com>
Date: Mon, 10 Mar 2025 21:41:57 +0800
From: Tianyu Lan <ltykernel@...il.com>
To: Roman Kisel <romank@...ux.microsoft.com>
Cc: arnd@...db.de, bhelgaas@...gle.com, bp@...en8.de, catalin.marinas@....com, 
	conor+dt@...nel.org, dave.hansen@...ux.intel.com, decui@...rosoft.com, 
	haiyangz@...rosoft.com, hpa@...or.com, joey.gouly@....com, krzk+dt@...nel.org, 
	kw@...ux.com, kys@...rosoft.com, lenb@...nel.org, lpieralisi@...nel.org, 
	manivannan.sadhasivam@...aro.org, mark.rutland@....com, maz@...nel.org, 
	mingo@...hat.com, oliver.upton@...ux.dev, rafael@...nel.org, robh@...nel.org, 
	ssengar@...ux.microsoft.com, sudeep.holla@....com, suzuki.poulose@....com, 
	tglx@...utronix.de, wei.liu@...nel.org, will@...nel.org, yuzenghui@...wei.com, 
	devicetree@...r.kernel.org, kvmarm@...ts.linux.dev, 
	linux-acpi@...r.kernel.org, linux-arch@...r.kernel.org, 
	linux-arm-kernel@...ts.infradead.org, linux-hyperv@...r.kernel.org, 
	linux-kernel@...r.kernel.org, linux-pci@...r.kernel.org, x86@...nel.org, 
	apais@...rosoft.com, benhill@...rosoft.com, bperkins@...rosoft.com, 
	sunilmut@...rosoft.com
Subject: Re: [PATCH hyperv-next v5 09/11] Drivers: hv: vmbus: Introduce hv_get_vmbus_root_device()

On Sat, Mar 8, 2025 at 6:05 AM Roman Kisel <romank@...ux.microsoft.com> wrote:
>
> The ARM64 PCI code for hyperv needs to know the VMBus root
> device, and it is private.
>
> Provide a function that returns it. Rename it from "hv_dev"
> as "hv_dev" as a symbol is very overloaded. No functional
> changes.
>
> Signed-off-by: Roman Kisel <romank@...ux.microsoft.com>

Why change all device's parent to vmbus_root_device?

The ARM64 platform uses the device tree to enumerate vmbus
devices..  Can we find the root device via device tree? vmbus
code on the x86 use ACPI and it seems to work via ACPI.


> ---
>  drivers/hv/vmbus_drv.c | 23 +++++++++++++++--------
>  include/linux/hyperv.h |  2 ++
>  2 files changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
> index c8474b48dcd2..7bfafe702963 100644
> --- a/drivers/hv/vmbus_drv.c
> +++ b/drivers/hv/vmbus_drv.c
> @@ -45,7 +45,8 @@ struct vmbus_dynid {
>         struct hv_vmbus_device_id id;
>  };
>
> -static struct device  *hv_dev;
> +/* VMBus Root Device */
> +static struct device  *vmbus_root_device;
>
>  static int hyperv_cpuhp_online;
>
> @@ -80,9 +81,15 @@ static struct resource *fb_mmio;
>  static struct resource *hyperv_mmio;
>  static DEFINE_MUTEX(hyperv_mmio_lock);
>
> +struct device *hv_get_vmbus_root_device(void)
> +{
> +       return vmbus_root_device;
> +}
> +EXPORT_SYMBOL_GPL(hv_get_vmbus_root_device);
> +
>  static int vmbus_exists(void)
>  {
> -       if (hv_dev == NULL)
> +       if (vmbus_root_device == NULL)
>                 return -ENODEV;
>
>         return 0;
> @@ -861,7 +868,7 @@ static int vmbus_dma_configure(struct device *child_device)
>          * On x86/x64 coherence is assumed and these calls have no effect.
>          */
>         hv_setup_dma_ops(child_device,
> -               device_get_dma_attr(hv_dev) == DEV_DMA_COHERENT);
> +               device_get_dma_attr(vmbus_root_device) == DEV_DMA_COHERENT);
>         return 0;
>  }
>
> @@ -1930,7 +1937,7 @@ int vmbus_device_register(struct hv_device *child_device_obj)
>                      &child_device_obj->channel->offermsg.offer.if_instance);
>
>         child_device_obj->device.bus = &hv_bus;
> -       child_device_obj->device.parent = hv_dev;
> +       child_device_obj->device.parent = vmbus_root_device;
>         child_device_obj->device.release = vmbus_device_release;
>
>         child_device_obj->device.dma_parms = &child_device_obj->dma_parms;
> @@ -2292,7 +2299,7 @@ static int vmbus_acpi_add(struct platform_device *pdev)
>         struct acpi_device *ancestor;
>         struct acpi_device *device = ACPI_COMPANION(&pdev->dev);
>
> -       hv_dev = &device->dev;
> +       vmbus_root_device = &device->dev;
>
>         /*
>          * Older versions of Hyper-V for ARM64 fail to include the _CCA
> @@ -2383,7 +2390,7 @@ static int vmbus_device_add(struct platform_device *pdev)
>         struct device_node *np = pdev->dev.of_node;
>         int ret;
>
> -       hv_dev = &pdev->dev;
> +       vmbus_root_device = &pdev->dev;
>
>         ret = of_range_parser_init(&parser, np);
>         if (ret)
> @@ -2702,7 +2709,7 @@ static int __init hv_acpi_init(void)
>         if (ret)
>                 return ret;
>
> -       if (!hv_dev) {
> +       if (!vmbus_root_device) {
>                 ret = -ENODEV;
>                 goto cleanup;
>         }
> @@ -2733,7 +2740,7 @@ static int __init hv_acpi_init(void)
>
>  cleanup:
>         platform_driver_unregister(&vmbus_platform_driver);
> -       hv_dev = NULL;
> +       vmbus_root_device = NULL;
>         return ret;
>  }
>
> diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
> index 7f4f8d8bdf43..1f0851fde041 100644
> --- a/include/linux/hyperv.h
> +++ b/include/linux/hyperv.h
> @@ -1333,6 +1333,8 @@ static inline void *hv_get_drvdata(struct hv_device *dev)
>         return dev_get_drvdata(&dev->device);
>  }
>
> +struct device *hv_get_vmbus_root_device(void);
> +
>  struct hv_ring_buffer_debug_info {
>         u32 current_interrupt_mask;
>         u32 current_read_index;
> --
> 2.43.0
>
>


-- 
Thanks
Tianyu Lan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ