From 1543e317f1da31b75942316931e8f491a8920811 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Thu, 04 Jan 2024 10:08:02 +0000
Subject: [PATCH] disable FB
---
kernel/drivers/gpu/drm/i915/i915_gem.c | 40 +++++++++++++++++++++++++++-------------
1 files changed, 27 insertions(+), 13 deletions(-)
diff --git a/kernel/drivers/gpu/drm/i915/i915_gem.c b/kernel/drivers/gpu/drm/i915/i915_gem.c
index 88944c3..5827669 100644
--- a/kernel/drivers/gpu/drm/i915/i915_gem.c
+++ b/kernel/drivers/gpu/drm/i915/i915_gem.c
@@ -355,15 +355,22 @@
char __user *user_data, int length)
{
void __iomem *vaddr;
- bool fail = false;
+ unsigned long unwritten;
/* We can use the cpu mem copy function because this is X86. */
- vaddr = io_mapping_map_local_wc(mapping, base);
- if (copy_to_user(user_data, (void __force *)vaddr + offset, length))
- fail = true;
- io_mapping_unmap_local(vaddr);
-
- return fail;
+ vaddr = io_mapping_map_atomic_wc(mapping, base);
+ unwritten = __copy_to_user_inatomic(user_data,
+ (void __force *)vaddr + offset,
+ length);
+ io_mapping_unmap_atomic(vaddr);
+ if (unwritten) {
+ vaddr = io_mapping_map_wc(mapping, base, PAGE_SIZE);
+ unwritten = copy_to_user(user_data,
+ (void __force *)vaddr + offset,
+ length);
+ io_mapping_unmap(vaddr);
+ }
+ return unwritten;
}
static int
@@ -532,14 +539,21 @@
char __user *user_data, int length)
{
void __iomem *vaddr;
- bool fail = false;
+ unsigned long unwritten;
/* We can use the cpu mem copy function because this is X86. */
- vaddr = io_mapping_map_local_wc(mapping, base);
- if (copy_from_user((void __force *)vaddr + offset, user_data, length))
- fail = true;
- io_mapping_unmap_local(vaddr);
- return fail;
+ vaddr = io_mapping_map_atomic_wc(mapping, base);
+ unwritten = __copy_from_user_inatomic_nocache((void __force *)vaddr + offset,
+ user_data, length);
+ io_mapping_unmap_atomic(vaddr);
+ if (unwritten) {
+ vaddr = io_mapping_map_wc(mapping, base, PAGE_SIZE);
+ unwritten = copy_from_user((void __force *)vaddr + offset,
+ user_data, length);
+ io_mapping_unmap(vaddr);
+ }
+
+ return unwritten;
}
/**
--
Gitblit v1.6.2