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: <20180510010601.GJ29093@builder>
Date:   Wed, 9 May 2018 18:06:01 -0700
From:   Bjorn Andersson <bjorn.andersson@...aro.org>
To:     Loic Pallardy <loic.pallardy@...com>
Cc:     ohad@...ery.com, linux-remoteproc@...r.kernel.org,
        linux-kernel@...r.kernel.org, arnaud.pouliquen@...com,
        benjamin.gaignard@...aro.org
Subject: Re: [PATCH v3 11/13] remoteproc: create vdev subdevice with specific
 dma memory pool

On Thu 01 Mar 08:23 PST 2018, Loic Pallardy wrote:
> @@ -479,6 +481,41 @@ static int rproc_handle_vdev(struct rproc *rproc, struct fw_rsc_vdev *rsc,
>  			goto unwind_vring_allocations;
>  	}
>  
> +	/* Initialise vdev subdevice */
> +	snprintf(name, sizeof(name), "vdev%dbuffer", rvdev->index);
> +	rvdev->dev.parent = rproc->dev.parent;
> +	dev_set_name(&rvdev->dev, "%s#%s", dev_name(rvdev->dev.parent), name);
> +	dev_set_drvdata(&rvdev->dev, rvdev);
> +	dma_set_coherent_mask(&rvdev->dev, DMA_BIT_MASK(32));
> +
> +	ret = device_register(&rvdev->dev);
> +	if (ret)
> +		goto unwind_vring_allocations;
> +
> +	/* Try to find dedicated vdev buffer carveout */
> +	carveout = rproc_find_carveout_by_name(rproc, name);
> +
> +	if (carveout) {
> +		phys_addr_t pa;
> +
> +		if (carveout->va) {
> +			dev_warn(dev, "vdev %d buffer carveout already mapped\n",
> +				 rvdev->index);
> +			pa = rproc_va_to_pa(carveout->va);
> +		} else {
> +			/* Use dma address as carveout no memmapped yet */
> +			pa = (phys_addr_t)carveout->dma;
> +		}
> +
> +		/* Associate vdev buffer memory pool to vdev subdevice */
> +		ret = dmam_declare_coherent_memory(&rvdev->dev, pa,
> +						   carveout->da,
> +						   carveout->len,
> +						   DMA_MEMORY_EXCLUSIVE);
> +		if (ret < 0)
> +			goto unregister_device;
> +	}
> +

So with this there will be one more device between rproc->dev and the
virtio dev, for the sake of memory management. So e.g. a rpmsg device
will still need to allocate memory from dev->parent->parent; which now
possibly has a specific dma_mem.

Is it not possible to assign the memory to the vdev->dev and allow the
virtio devices can allocate memory from their parent device?

Regards,
Bjorn

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ