aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm2708/patches-4.19/950-0344-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0344-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch')
-rw-r--r--target/linux/brcm2708/patches-4.19/950-0344-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch199
1 files changed, 0 insertions, 199 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0344-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch b/target/linux/brcm2708/patches-4.19/950-0344-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch
deleted file mode 100644
index 0ddbb4297e..0000000000
--- a/target/linux/brcm2708/patches-4.19/950-0344-staging-vc-sm-cma-Fix-up-for-64bit-builds.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From 8da5f5ca322c3b6c5c9055381af9db67f724bdc3 Mon Sep 17 00:00:00 2001
-From: Dave Stevenson <dave.stevenson@raspberrypi.org>
-Date: Tue, 29 Jan 2019 16:32:57 +0000
-Subject: [PATCH 344/725] staging: vc-sm-cma: Fix up for 64bit builds
-
-There were a number of logging lines that were using
-inappropriate formatting under 64bit kernels.
-
-The kernel_id field passed to/from the VPU was being
-abused for storing the struct vc_sm_buffer *.
-This breaks with 64bit kernels, so change to using an IDR.
-
-Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
----
- .../staging/vc04_services/vc-sm-cma/vc_sm.c | 60 +++++++++++++++----
- .../vc04_services/vc-sm-cma/vc_sm_cma_vchi.c | 3 +-
- 2 files changed, 48 insertions(+), 15 deletions(-)
-
---- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
-+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm.c
-@@ -75,6 +75,9 @@ struct sm_state_t {
- struct miscdevice dev;
- struct sm_instance *sm_handle; /* Handle for videocore service. */
-
-+ spinlock_t kernelid_map_lock; /* Spinlock protecting kernelid_map */
-+ struct idr kernelid_map;
-+
- struct mutex map_lock; /* Global map lock. */
- struct list_head buffer_list; /* List of buffer. */
-
-@@ -97,6 +100,29 @@ static int sm_inited;
-
- /* ---- Private Functions ------------------------------------------------ */
-
-+static int get_kernel_id(struct vc_sm_buffer *buffer)
-+{
-+ int handle;
-+
-+ spin_lock(&sm_state->kernelid_map_lock);
-+ handle = idr_alloc(&sm_state->kernelid_map, buffer, 0, 0, GFP_KERNEL);
-+ spin_unlock(&sm_state->kernelid_map_lock);
-+
-+ return handle;
-+}
-+
-+static struct vc_sm_buffer *lookup_kernel_id(int handle)
-+{
-+ return idr_find(&sm_state->kernelid_map, handle);
-+}
-+
-+static void free_kernel_id(int handle)
-+{
-+ spin_lock(&sm_state->kernelid_map_lock);
-+ idr_remove(&sm_state->kernelid_map, handle);
-+ spin_unlock(&sm_state->kernelid_map_lock);
-+}
-+
- static int vc_sm_cma_seq_file_show(struct seq_file *s, void *v)
- {
- struct sm_pde_t *sm_pde;
-@@ -129,8 +155,7 @@ static int vc_sm_cma_global_state_show(s
- if (!sm_state)
- return 0;
-
-- seq_printf(s, "\nVC-ServiceHandle 0x%x\n",
-- (unsigned int)sm_state->sm_handle);
-+ seq_printf(s, "\nVC-ServiceHandle %p\n", sm_state->sm_handle);
-
- /* Log all applicable mapping(s). */
-
-@@ -145,7 +170,7 @@ static int vc_sm_cma_global_state_show(s
- resource);
- seq_printf(s, " NAME %s\n",
- resource->name);
-- seq_printf(s, " SIZE %d\n",
-+ seq_printf(s, " SIZE %zu\n",
- resource->size);
- seq_printf(s, " DMABUF %p\n",
- resource->dma_buf);
-@@ -181,7 +206,7 @@ static void vc_sm_add_resource(struct vc
- list_add(&buffer->global_buffer_list, &sm_state->buffer_list);
- mutex_unlock(&sm_state->map_lock);
-
-- pr_debug("[%s]: added buffer %p (name %s, size %d)\n",
-+ pr_debug("[%s]: added buffer %p (name %s, size %zu)\n",
- __func__, buffer, buffer->name, buffer->size);
- }
-
-@@ -194,7 +219,7 @@ static void vc_sm_release_resource(struc
- mutex_lock(&sm_state->map_lock);
- mutex_lock(&buffer->lock);
-
-- pr_debug("[%s]: buffer %p (name %s, size %d)\n",
-+ pr_debug("[%s]: buffer %p (name %s, size %zu)\n",
- __func__, buffer, buffer->name, buffer->size);
-
- if (buffer->vc_handle && buffer->vpu_state == VPU_MAPPED) {
-@@ -443,6 +468,7 @@ vc_sm_cma_import_dmabuf_internal(struct
- struct vc_sm_import_result result = { };
- struct dma_buf_attachment *attach = NULL;
- struct sg_table *sgt = NULL;
-+ dma_addr_t dma_addr;
- int ret = 0;
- int status;
-
-@@ -478,21 +504,22 @@ vc_sm_cma_import_dmabuf_internal(struct
- }
-
- import.type = VC_SM_ALLOC_NON_CACHED;
-- import.addr = (uint32_t)sg_dma_address(sgt->sgl);
-+ dma_addr = sg_dma_address(sgt->sgl);
-+ import.addr = (uint32_t)dma_addr;
- if ((import.addr & 0xC0000000) != 0xC0000000) {
-- pr_err("%s: Expecting an uncached alias for dma_addr %08x\n",
-- __func__, import.addr);
-+ pr_err("%s: Expecting an uncached alias for dma_addr %pad\n",
-+ __func__, &dma_addr);
- import.addr |= 0xC0000000;
- }
- import.size = sg_dma_len(sgt->sgl);
- import.allocator = current->tgid;
-- import.kernel_id = (uint32_t)buffer; //FIXME: 64 bit support needed.
-+ import.kernel_id = get_kernel_id(buffer);
-
- memcpy(import.name, VC_SM_RESOURCE_NAME_DEFAULT,
- sizeof(VC_SM_RESOURCE_NAME_DEFAULT));
-
-- pr_debug("[%s]: attempt to import \"%s\" data - type %u, addr %p, size %u\n",
-- __func__, import.name, import.type, (void *)import.addr,
-+ pr_debug("[%s]: attempt to import \"%s\" data - type %u, addr %pad, size %u\n",
-+ __func__, import.name, import.type, &dma_addr,
- import.size);
-
- /* Allocate the videocore buffer. */
-@@ -527,7 +554,7 @@ vc_sm_cma_import_dmabuf_internal(struct
-
- buffer->attach = attach;
- buffer->sgt = sgt;
-- buffer->dma_addr = sg_dma_address(sgt->sgl);
-+ buffer->dma_addr = dma_addr;
- buffer->in_use = 1;
-
- /*
-@@ -559,6 +586,7 @@ error:
- vc_sm_cma_vchi_free(sm_state->sm_handle, &free,
- &sm_state->int_trans_id);
- }
-+ free_kernel_id(import.kernel_id);
- kfree(buffer);
- if (sgt)
- dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL);
-@@ -586,7 +614,7 @@ vc_sm_vpu_event(struct sm_instance *inst
- {
- struct vc_sm_released *release = (struct vc_sm_released *)reply;
- struct vc_sm_buffer *buffer =
-- (struct vc_sm_buffer *)release->kernel_id;
-+ lookup_kernel_id(release->kernel_id);
-
- /*
- * FIXME: Need to check buffer is still valid and allocated
-@@ -599,6 +627,7 @@ vc_sm_vpu_event(struct sm_instance *inst
- buffer->vc_handle = 0;
- buffer->vpu_state = VPU_NOT_MAPPED;
- mutex_unlock(&buffer->lock);
-+ free_kernel_id(release->kernel_id);
-
- vc_sm_release_resource(buffer, 0);
- }
-@@ -711,6 +740,9 @@ static int bcm2835_vc_sm_cma_probe(struc
- sm_state->pdev = pdev;
- mutex_init(&sm_state->map_lock);
-
-+ spin_lock_init(&sm_state->kernelid_map_lock);
-+ idr_init_base(&sm_state->kernelid_map, 1);
-+
- pdev->dev.dma_parms = devm_kzalloc(&pdev->dev,
- sizeof(*pdev->dev.dma_parms),
- GFP_KERNEL);
-@@ -735,6 +767,8 @@ static int bcm2835_vc_sm_cma_remove(stru
- /* Stop the videocore shared memory service. */
- vc_sm_cma_vchi_stop(&sm_state->sm_handle);
-
-+ idr_destroy(&sm_state->kernelid_map);
-+
- /* Free the memory for the state structure. */
- mutex_destroy(&sm_state->map_lock);
- kfree(sm_state);
---- a/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
-+++ b/drivers/staging/vc04_services/vc-sm-cma/vc_sm_cma_vchi.c
-@@ -356,8 +356,7 @@ struct sm_instance *vc_sm_cma_vchi_init(
- set_user_nice(instance->io_thread, -10);
- wake_up_process(instance->io_thread);
-
-- pr_debug("%s: success - instance 0x%x", __func__,
-- (unsigned int)instance);
-+ pr_debug("%s: success - instance %p", __func__, instance);
- return instance;
-
- err_close_services: