armbian-build/patch/kernel/rockchip-current/0011-mali-kbase-v4.20-to-v5.0-rc2-changes.patch
Igor Pečovnik 150ac0c2af
Remove K<4, change branches, new features (#1586)
AR-1 - Adding support category for distributions
AR-4 - Remove Allwinner legacy
AR-5 - Drop Udoo family and move Udoo board into newly created imx6 family
AR-9 - Rename sunxi-next to sunxi-legacy
AR-10 - Rename sunxi-dev to sunxi-current
AR-11 - Adding Radxa Rockpi S support
AR-13 - Rename rockchip64-default to rockchip64-legacy
AR-14 - Add rockchip64-current as mainline source
AR-15 - Drop Rockchip 4.19.y NEXT, current become 5.3.y
AR-16 - Rename RK3399 default to legacy
AR-17 - Rename Odroid XU4 next and default to legacy 4.14.y, add DEV 5.4.y
AR-18 - Add Odroid N2 current mainline
AR-19 - Move Odroid C1 to meson family
AR-20 - Rename mvebu64-default to mvebu64-legacy
AR-21 - Rename mvebu-default to mvebu-legacy
AR-22 - Rename mvebu-next to mvebu-current
AR-23 - Drop meson64 default and next, current becomes former DEV 5.3.y
AR-24 - Drop cubox family and move Cubox/Hummingboard boards under imx6
AR-26 - Adjust motd
AR-27 - Enabling distribution release status
AR-28 - Added new GCC compilers
AR-29 - Implementing Ubuntu Eoan
AR-30 - Add desktop packages per board or family
AR-31 - Remove (Ubuntu/Debian) distribution name from image filename
AR-32 - Move arch configs from configuration.sh to separate arm64 and armhf config files
AR-33 - Revision numbers for beta builds changed to day_in_the_year
AR-34 - Patches support linked patches
AR-35 - Break meson64 family into gxbb and gxl
AR-36 - Add Nanopineo2 Black
AR-38 - Upgrade option from old branches to new one via armbian-config
AR-41 - Show full timezone info
AR-43 - Merge Odroid N2 to meson64
AR-44 - Enable FORCE_BOOTSCRIPT_UPDATE for all builds
2019-11-19 23:25:39 +01:00

136 lines
5.1 KiB
Diff

From c797a2ed95d500c1f7750a0703cff5ca2ed0af29 Mon Sep 17 00:00:00 2001
From: "Miouyouyou (Myy)" <myy@miouyouyou.fr>
Date: Sun, 20 Jan 2019 22:56:14 +0100
Subject: [PATCH] mali: kbase: v4.20 to v5.0-rc2 changes
The following changes are due to the following kernel changes :
* totalram_pages()
mm: convert totalram_pages and totalhigh_pages variables to atomic
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ca79b0c211af63fa3276f0e3fd7dd9ada2439839
Kernel 5.0-rc1
* reservation_object_reserve_shared(obj, 1)
dma-buf: allow reserving more than one shared fence slot
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ca05359f1e64cf8303ee532e50efe4ab7563d4a9
Kernel 5.0-rc1
* vmf_insert_pfn
mm: remove vm_insert_pfn()
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/include/linux/mm.h?id=ae2b01f37044c10e975d22116755df56252b09d8
Kernel 4.20-rc1
Signed-off-by: Miouyouyou (Myy) <myy@miouyouyou.fr>
---
drivers/gpu/arm/midgard/mali_kbase_dma_fence.c | 2 +-
drivers/gpu/arm/midgard/mali_kbase_gpuprops.c | 2 +-
drivers/gpu/arm/midgard/mali_kbase_mem_linux.c | 27 +++++++++++++-------------
3 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c b/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
index 9197743c8..a65a1fa18 100644
--- a/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
+++ b/drivers/gpu/arm/midgard/mali_kbase_dma_fence.c
@@ -342,7 +342,7 @@ int kbase_dma_fence_wait(struct kbase_jd_atom *katom,
struct reservation_object *obj = info->resv_objs[i];
if (!test_bit(i, info->dma_fence_excl_bitmap)) {
- err = reservation_object_reserve_shared(obj);
+ err = reservation_object_reserve_shared(obj, 1);
if (err) {
dev_err(katom->kctx->kbdev->dev,
"Error %d reserving space for shared fence.\n", err);
diff --git a/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c b/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c
index baf3c491c..e985d0a94 100644
--- a/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c
+++ b/drivers/gpu/arm/midgard/mali_kbase_gpuprops.c
@@ -242,7 +242,7 @@ static void kbase_gpuprops_calculate_props(base_gpu_props * const gpu_props, str
/* Populate the base_gpu_props structure */
kbase_gpuprops_update_core_props_gpu_id(gpu_props);
gpu_props->core_props.log2_program_counter_size = KBASE_GPU_PC_SIZE_LOG2;
- gpu_props->core_props.gpu_available_memory_size = totalram_pages << PAGE_SHIFT;
+ gpu_props->core_props.gpu_available_memory_size = totalram_pages() << PAGE_SHIFT;
for (i = 0; i < BASE_GPU_NUM_TEXTURE_FEATURES_REGISTERS; i++)
gpu_props->core_props.texture_features[i] = gpu_props->raw_props.texture_features[i];
diff --git a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
index 896aa3528..e36eeeec1 100644
--- a/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
+++ b/drivers/gpu/arm/midgard/mali_kbase_mem_linux.c
@@ -1791,8 +1791,10 @@ KBASE_EXPORT_TEST_API(kbase_cpu_vm_close);
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 11, 0))
static int kbase_cpu_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
-#else
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0))
static int kbase_cpu_vm_fault(struct vm_fault *vmf)
+#else
+static vm_fault_t kbase_cpu_vm_fault(struct vm_fault *vmf)
{
struct vm_area_struct *vma = vmf->vma;
#endif
@@ -1800,6 +1802,7 @@ static int kbase_cpu_vm_fault(struct vm_fault *vmf)
pgoff_t rel_pgoff;
size_t i;
pgoff_t addr;
+ vm_fault_t ret = VM_FAULT_NOPAGE;
KBASE_DEBUG_ASSERT(map);
KBASE_DEBUG_ASSERT(map->count > 0);
@@ -1810,11 +1813,11 @@ static int kbase_cpu_vm_fault(struct vm_fault *vmf)
kbase_gpu_vm_lock(map->kctx);
if (rel_pgoff >= map->alloc->nents)
- goto locked_bad_fault;
+ goto out;
/* Fault on access to DONT_NEED regions */
if (map->alloc->reg && (map->alloc->reg->flags & KBASE_REG_DONT_NEED))
- goto locked_bad_fault;
+ goto out;
/* insert all valid pages from the fault location */
i = rel_pgoff;
@@ -1824,21 +1827,18 @@ static int kbase_cpu_vm_fault(struct vm_fault *vmf)
addr = (pgoff_t)(vmf->address >> PAGE_SHIFT);
#endif
while (i < map->alloc->nents && (addr < vma->vm_end >> PAGE_SHIFT)) {
- int ret = vm_insert_pfn(vma, addr << PAGE_SHIFT,
+ ret = vmf_insert_pfn(vma, addr << PAGE_SHIFT,
PFN_DOWN(as_phys_addr_t(map->alloc->pages[i])));
- if (ret < 0 && ret != -EBUSY)
- goto locked_bad_fault;
+ if (ret != VM_FAULT_NOPAGE) // It's either OOM or SIGBUS
+ goto out;
i++; addr++;
}
+out:
kbase_gpu_vm_unlock(map->kctx);
/* we resolved it, nothing for VM to do */
- return VM_FAULT_NOPAGE;
-
-locked_bad_fault:
- kbase_gpu_vm_unlock(map->kctx);
- return VM_FAULT_SIGBUS;
+ return ret;
}
const struct vm_operations_struct kbase_vm_ops = {
@@ -1907,9 +1907,10 @@ static int kbase_cpu_mmap(struct kbase_va_region *reg, struct vm_area_struct *vm
phys_addr_t phys;
phys = as_phys_addr_t(page_array[i + start_off]);
- err = vm_insert_pfn(vma, addr, PFN_DOWN(phys));
- if (WARN_ON(err))
+ if (WARN_ON(vmf_insert_pfn(vma, addr, PFN_DOWN(phys)) != VM_FAULT_NOPAGE)) {
+ err = -ENOMEM;
break;
+ }
addr += PAGE_SIZE;
}
--
2.16.4