Merge pull request #1441 from MilhouseVH/linux4110

linux: update to linux-4.11.0
This commit is contained in:
Lukas Rusak
2017-05-12 13:57:23 -07:00
committed by GitHub
19 changed files with 6779 additions and 34851 deletions

View File

@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="RTL8188EU"
PKG_VERSION="ced2b64"
PKG_VERSION="18a5f33"
PKG_ARCH="any"
PKG_LICENSE="GPL"
# realtek: PKG_SITE="http://www.realtek.com.tw/downloads/downloadsView.aspx?Langid=1&PFid=48&Level=5&Conn=4&ProdID=274&DownTypeID=3&GetDown=false&Downloads=true"

View File

@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="RTL8192CU"
PKG_VERSION="372d4b0"
PKG_VERSION="76b54cd"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/pvaret/rtl8192cu-fixes"

View File

@@ -1,18 +0,0 @@
diff -Naur a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
--- a/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:43:17.669610692 +0100
+++ b/os_dep/linux/ioctl_cfg80211.c 2016-09-11 01:45:09.268139751 +0100
@@ -1789,7 +1789,14 @@
}
else
{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0)
+ struct cfg80211_scan_info info = {
+ .aborted = aborted
+ };
+ cfg80211_scan_done(pwdev_priv->scan_request, &info);
+#else
cfg80211_scan_done(pwdev_priv->scan_request, aborted);
+#endif
}
pwdev_priv->scan_request = NULL;

View File

@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="RTL8192EU"
PKG_VERSION="a7fd035"
PKG_VERSION="dcd71fa"
PKG_ARCH="any"
PKG_LICENSE="GPL"
PKG_SITE="https://github.com/Mange/rtl8192eu-linux-driver"

View File

@@ -0,0 +1,27 @@
From 14eb40c9bcbb68044361334d5f95a4f63ebc8775 Mon Sep 17 00:00:00 2001
From: MilhouseVH <milhouseVH.github@nmacleod.com>
Date: Mon, 13 Mar 2017 19:47:38 +0000
Subject: [PATCH] RTL8812AU: Fix build for API changes in kernel 4.11
---
include/osdep_service.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/osdep_service.h b/include/osdep_service.h
index 82e27c5..d866551 100644
--- a/include/osdep_service.h
+++ b/include/osdep_service.h
@@ -20,6 +20,10 @@
#ifndef __OSDEP_SERVICE_H_
#define __OSDEP_SERVICE_H_
+#include <linux/version.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/signal.h>
+#endif
#define _FAIL 0
#define _SUCCESS 1
--
2.7.4

View File

@@ -0,0 +1,68 @@
From 7e8dddb7a545bc5ba74336ef2aafed1c0b4ceee1 Mon Sep 17 00:00:00 2001
From: MilhouseVH <milhouseVH.github@nmacleod.com>
Date: Mon, 13 Mar 2017 20:48:44 +0000
Subject: [PATCH 1/2] bcm_sta: Fix build for API changes in kernel 4.11
---
x86-64/src/wl/sys/wl_cfg80211_hybrid.c | 4 ++++
x86-64/src/wl/sys/wl_linux.c | 4 ++++
2 files changed, 8 insertions(+)
diff --git a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
index 7b606e0..76ef208 100644
--- a/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
+++ b/x86-64/src/wl/sys/wl_cfg80211_hybrid.c
@@ -26,6 +26,10 @@
#include <linuxver.h>
#include <osl.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/signal.h>
+#endif
+
#include <linux/kernel.h>
#include <linux/kthread.h>
#include <linux/netdevice.h>
diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c
index 0d05100..dca7c71 100644
--- a/x86-64/src/wl/sys/wl_linux.c
+++ b/x86-64/src/wl/sys/wl_linux.c
@@ -26,6 +26,10 @@
#include <typedefs.h>
#include <linuxver.h>
#include <osl.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0)
+#include <linux/sched/signal.h>
+#endif
+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 14)
#include <linux/module.h>
#endif
--
2.7.4
From 1d066a57a682af0ac42b8d1c65bf7bd1984a54ca Mon Sep 17 00:00:00 2001
From: MilhouseVH <milhouseVH.github@nmacleod.com>
Date: Mon, 13 Mar 2017 20:49:01 +0000
Subject: [PATCH 2/2] bcm_sta: Remove usage of net_device last_rx member
---
x86-64/src/wl/sys/wl_linux.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/x86-64/src/wl/sys/wl_linux.c b/x86-64/src/wl/sys/wl_linux.c
index dca7c71..f3be019 100644
--- a/x86-64/src/wl/sys/wl_linux.c
+++ b/x86-64/src/wl/sys/wl_linux.c
@@ -2919,7 +2919,6 @@ wl_monitor(wl_info_t *wl, wl_rxsts_t *rxsts, void *p)
if (skb == NULL) return;
skb->dev = wl->monitor_dev;
- skb->dev->last_rx = jiffies;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 22)
skb_reset_mac_header(skb);
#else
--
2.7.4

View File

@@ -17,7 +17,7 @@
################################################################################
PKG_NAME="iwlwifi-firmware"
PKG_VERSION="ba301aa"
PKG_VERSION="6a717a9"
PKG_ARCH="any"
PKG_LICENSE="Free-to-use"
PKG_SITE="https://github.com/LibreELEC/iwlwifi-firmware"

View File

@@ -59,7 +59,7 @@ case "$LINUX" in
PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET imx6-status-led imx6-soc-fan irqbalanced"
;;
*)
PKG_VERSION="4.10.14"
PKG_VERSION="4.11"
PKG_URL="http://www.kernel.org/pub/linux/kernel/v4.x/$PKG_NAME-$PKG_VERSION.tar.xz"
PKG_PATCH_DIRS="default"
;;

View File

@@ -0,0 +1,38 @@
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c
index d845336..a89d7bd 100644
--- a/drivers/media/rc/rc-main.c
+++ b/drivers/media/rc/rc-main.c
@@ -1699,6 +1699,16 @@ static int rc_setup_rx_device(struct rc_dev *dev)
if (dev->close)
dev->input_dev->close = ir_close;
+ dev->input_dev->dev.parent = &dev->dev;
+ memcpy(&dev->input_dev->id, &dev->input_id, sizeof(dev->input_id));
+ dev->input_dev->phys = dev->input_phys;
+ dev->input_dev->name = dev->input_name;
+
+ /* rc_open will be called here */
+ rc = input_register_device(dev->input_dev);
+ if (rc)
+ goto out_table;
+
/*
* Default delay of 250ms is too short for some protocols, especially
* since the timeout is currently set to 250ms. Increase it to 500ms,
@@ -1714,16 +1724,6 @@ static int rc_setup_rx_device(struct rc_dev *dev)
*/
dev->input_dev->rep[REP_PERIOD] = 125;
- dev->input_dev->dev.parent = &dev->dev;
- memcpy(&dev->input_dev->id, &dev->input_id, sizeof(dev->input_id));
- dev->input_dev->phys = dev->input_phys;
- dev->input_dev->name = dev->input_name;
-
- /* rc_open will be called here */
- rc = input_register_device(dev->input_dev);
- if (rc)
- goto out_table;
-
return 0;
out_table:

View File

@@ -1,20 +1,20 @@
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index f68c789..a6b6dfe 100644
index 0a4b42d..b3aa01e 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -3948,6 +3948,7 @@ __raw_write(64, q)
@@ -3896,6 +3896,7 @@ __raw_write(64, q)
#define INTEL_BROADCAST_RGB_AUTO 0
#define INTEL_BROADCAST_RGB_FULL 1
#define INTEL_BROADCAST_RGB_LIMITED 2
+#define INTEL_BROADCAST_RGB_VIDEO 3
static inline i915_reg_t i915_vgacntrl_reg(struct drm_device *dev)
static inline i915_reg_t i915_vgacntrl_reg(struct drm_i915_private *dev_priv)
{
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index ff399b9..f2ac0ff 100644
index 344f238..1143551 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -522,6 +522,13 @@ struct intel_crtc_state {
@@ -563,6 +563,13 @@ struct intel_crtc_state {
*/
bool limited_color_range;
@@ -28,7 +28,7 @@ index ff399b9..f2ac0ff 100644
/* Bitmask of encoder types (enum intel_output_type)
* driven by the pipe.
*/
@@ -805,6 +812,7 @@ struct intel_hdmi {
@@ -840,6 +847,7 @@ struct intel_hdmi {
} dp_dual_mode;
bool limited_color_range;
bool color_range_auto;
@@ -37,20 +37,19 @@ index ff399b9..f2ac0ff 100644
bool has_audio;
enum hdmi_force_audio force_audio;
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c
index 4df9f38..8b64508 100644
index ebae2bd..ed925e5 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -462,7 +462,8 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
@@ -469,7 +469,7 @@ static void intel_hdmi_set_avi_infoframe(struct drm_encoder *encoder,
}
if (intel_hdmi->rgb_quant_range_selectable) {
- if (intel_crtc->config->limited_color_range)
+ if (intel_crtc->config->limited_color_range ||
+ intel_crtc->config->video_color_range)
frame.avi.quantization_range =
HDMI_QUANTIZATION_RANGE_LIMITED;
else
@@ -1308,6 +1309,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
drm_hdmi_avi_infoframe_quant_range(&frame.avi, adjusted_mode,
- crtc_state->limited_color_range ?
+ (crtc_state->limited_color_range || crtc_state->video_color_range) ?
HDMI_QUANTIZATION_RANGE_LIMITED :
HDMI_QUANTIZATION_RANGE_FULL,
intel_hdmi->rgb_quant_range_selectable);
@@ -1336,6 +1336,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder,
pipe_config->limited_color_range =
intel_hdmi->limited_color_range;
}
@@ -59,7 +58,7 @@ index 4df9f38..8b64508 100644
if (adjusted_mode->flags & DRM_MODE_FLAG_DBLCLK) {
pipe_config->pixel_multiplier = 2;
@@ -1588,25 +1591,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
@@ -1593,25 +1595,35 @@ intel_hdmi_set_property(struct drm_connector *connector,
if (property == dev_priv->broadcast_rgb_property) {
bool old_auto = intel_hdmi->color_range_auto;
bool old_range = intel_hdmi->limited_color_range;
@@ -97,10 +96,10 @@ index 4df9f38..8b64508 100644
goto done;
diff --git a/drivers/gpu/drm/i915/intel_modes.c b/drivers/gpu/drm/i915/intel_modes.c
index f2584d0..5a6f853 100644
index 951e834..d817558 100644
--- a/drivers/gpu/drm/i915/intel_modes.c
+++ b/drivers/gpu/drm/i915/intel_modes.c
@@ -103,6 +103,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = {
@@ -102,6 +102,7 @@ static const struct drm_prop_enum_list broadcast_rgb_names[] = {
{ INTEL_BROADCAST_RGB_AUTO, "Automatic" },
{ INTEL_BROADCAST_RGB_FULL, "Full" },
{ INTEL_BROADCAST_RGB_LIMITED, "Limited 16:235" },

View File

@@ -1,33 +1,114 @@
diff --git a/kernel/nv-linux.h b/kernel/nv-linux.h
index e7068e3..3ac3c0b 100644
diff -Naur a/kernel/nv-linux.h b/kernel/nv-linux.h
--- a/kernel/nv-linux.h
+++ b/kernel/nv-linux.h
@@ -270,7 +270,7 @@ RM_STATUS nvos_forward_error_to_cray(struct pci_dev *, NvU32,
extern int nv_pat_mode;
-#if !defined(NV_VMWARE) && defined(CONFIG_HOTPLUG_CPU)
+#if 0
#define NV_ENABLE_HOTPLUG_CPU
#include <linux/cpu.h> /* CPU hotplug support */
#include <linux/notifier.h> /* struct notifier_block, etc */
diff --git a/kernel/nv-pat.c b/kernel/nv-pat.c
index a725533..91070e0 100644
@@ -2082,6 +2082,8 @@ static inline NvU64 nv_node_end_pfn(int nid)
* 2016 Dec 14:5b56d49fc31dbb0487e14ead790fc81ca9fb2c99
*/
+#include <linux/version.h>
+
#if defined(NV_GET_USER_PAGES_REMOTE_PRESENT)
#if defined(NV_GET_USER_PAGES_HAS_WRITE_AND_FORCE_ARGS)
#define NV_GET_USER_PAGES get_user_pages
@@ -2129,8 +2131,13 @@ static inline NvU64 nv_node_end_pfn(int nid)
#else
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
pages, vmas);
+#else
+ return get_user_pages_remote(tsk, mm, start, nr_pages, flags,
+ pages, vmas, NULL);
+#endif
#endif
diff -Naur a/kernel/nv-pat.c b/kernel/nv-pat.c
--- a/kernel/nv-pat.c
+++ b/kernel/nv-pat.c
@@ -210,14 +210,13 @@ nvidia_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu
switch (action)
@@ -203,6 +203,7 @@ void nv_disable_pat_support(void)
}
#if defined(NV_ENABLE_PAT_SUPPORT) && defined(NV_ENABLE_HOTPLUG_CPU)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
static int
nvidia_cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu)
{
@@ -234,6 +235,34 @@ static struct notifier_block nv_hotcpu_nfb = {
.notifier_call = nvidia_cpu_callback,
.priority = 0
};
+#else
+static int nvidia_cpu_online(unsigned int hcpu)
+{
+ unsigned int cpu = get_cpu();
+ if (cpu == hcpu)
+ nv_setup_pat_entries(NULL);
+ else
+ NV_SMP_CALL_FUNCTION(nv_setup_pat_entries, (void *)(long int)hcpu, 1);
+
+ put_cpu();
+
+ return 0;
+}
+
+static int nvidia_cpu_down_prep(unsigned int hcpu)
+{
+ unsigned int cpu = get_cpu();
+ if (cpu == hcpu)
+ nv_restore_pat_entries(NULL);
+ else
+ NV_SMP_CALL_FUNCTION(nv_restore_pat_entries, (void *)(long int)hcpu, 1);
+
+ put_cpu();
+
+ return 0;
+}
+#endif
+
#endif
int nv_init_pat_support(nv_stack_t *sp)
@@ -255,7 +284,14 @@ int nv_init_pat_support(nv_stack_t *sp)
#if defined(NV_ENABLE_PAT_SUPPORT) && defined(NV_ENABLE_HOTPLUG_CPU)
if (nv_pat_mode == NV_PAT_MODE_BUILTIN)
{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
if (register_hotcpu_notifier(&nv_hotcpu_nfb) != 0)
+#else
+ if (cpuhp_setup_state(CPUHP_AP_ONLINE_DYN,
+ "gpu/nvidia:online",
+ nvidia_cpu_online,
+ nvidia_cpu_down_prep) != 0)
+#endif
{
nv_disable_pat_support();
nv_printf(NV_DBG_ERRORS,
@@ -280,7 +316,11 @@ void nv_teardown_pat_support(void)
{
- case CPU_DOWN_FAILED:
case CPU_ONLINE:
if (cpu == (NvUPtr)hcpu)
nv_setup_pat_entries(NULL);
else
NV_SMP_CALL_FUNCTION(nv_setup_pat_entries, hcpu, 1);
break;
- case CPU_DOWN_PREPARE:
+ case CPU_DOWN_PREPARE_FROZEN:
if (cpu == (NvUPtr)hcpu)
nv_restore_pat_entries(NULL);
else
nv_disable_pat_support();
#if defined(NV_ENABLE_PAT_SUPPORT) && defined(NV_ENABLE_HOTPLUG_CPU)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
unregister_hotcpu_notifier(&nv_hotcpu_nfb);
+#else
+ cpuhp_remove_state_nocalls(CPUHP_AP_ONLINE_DYN);
+#endif
#endif
}
}
diff -Naur a/kernel/uvm/nvidia_uvm_lite.c b/kernel/uvm/nvidia_uvm_lite.c
--- a/kernel/uvm/nvidia_uvm_lite.c
+++ b/kernel/uvm/nvidia_uvm_lite.c
@@ -820,7 +820,11 @@ done:
#if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0)
unsigned long vaddr = (unsigned long)vmf->virtual_address;
+#else
+ unsigned long vaddr = (unsigned long)vmf->address;
+#endif
struct page *page = NULL;
int retval;

View File

@@ -0,0 +1,89 @@
diff -Naur a/kernel/nv-drm.c b/kernel/nv-drm.c
--- a/kernel/nv-drm.c 2017-03-31 03:42:21.000000000 +0200
+++ b/kernel/nv-drm.c 2017-04-06 23:53:14.273356795 +0200
@@ -48,7 +48,7 @@
return -ENODEV;
}
-static int nv_drm_unload(
+static void nv_drm_unload(
struct drm_device *dev
)
{
@@ -60,7 +60,7 @@
{
BUG_ON(nvl->drm != dev);
nvl->drm = NULL;
- return 0;
+ return;
}
}
@@ -64,7 +64,7 @@
}
}
- return -ENODEV;
+ return;
}
static void nv_gem_free(
diff -Naur a/kernel/uvm/nvidia_uvm_linux.h b/kernel/uvm/nvidia_uvm_linux.h
--- a/kernel/uvm/nvidia_uvm_linux.h 2017-03-31 03:42:21.000000000 +0200
+++ b/kernel/uvm/nvidia_uvm_linux.h 2017-04-06 23:53:14.273356795 +0200
@@ -124,6 +124,7 @@
#include <linux/delay.h> /* mdelay, udelay */
#include <linux/sched.h> /* suser(), capable() replacement */
+#include <linux/sched/signal.h>
#include <linux/moduleparam.h> /* module_param() */
#if !defined(NV_VMWARE)
#include <asm/tlbflush.h> /* flush_tlb(), flush_tlb_all() */
@@ -362,17 +363,6 @@
void address_space_init_once(struct address_space *mapping);
#endif
-#if !defined(NV_FATAL_SIGNAL_PENDING_PRESENT)
- static inline int __fatal_signal_pending(struct task_struct *p)
- {
- return unlikely(sigismember(&p->pending.signal, SIGKILL));
- }
-
- static inline int fatal_signal_pending(struct task_struct *p)
- {
- return signal_pending(p) && __fatal_signal_pending(p);
- }
-#endif
//
// Before the current->cred structure was introduced, current->euid,
diff -Naur a/kernel/uvm/nvidia_uvm_lite.c b/kernel/uvm/nvidia_uvm_lite.c
--- a/kernel/uvm/nvidia_uvm_lite.c 2017-03-31 03:42:21.000000000 +0200
+++ b/kernel/uvm/nvidia_uvm_lite.c 2017-04-06 23:53:14.273356795 +0200
@@ -818,7 +818,7 @@
}
#if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
-int _fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+int _fault(struct vm_fault *vmf)
{
unsigned long vaddr = (unsigned long)vmf->virtual_address;
struct page *page = NULL;
@@ -828,7 +828,7 @@
struct page *page = NULL;
int retval;
- retval = _fault_common(vma, vaddr, &page, vmf->flags);
+ retval = _fault_common(NULL, vaddr, &page, vmf->flags);
vmf->page = page;
@@ -866,7 +866,7 @@
// it's dealing with anonymous mapping (see handle_pte_fault).
//
#if defined(NV_VM_OPERATIONS_STRUCT_HAS_FAULT)
-int _sigbus_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
+int _sigbus_fault(struct vm_fault *vmf)
{
vmf->page = NULL;
return VM_FAULT_SIGBUS;

View File

@@ -0,0 +1 @@
../xf86-video-nvidia/udev.d/

View File

@@ -44,6 +44,9 @@ make_target() {
unset LDFLAGS
cd kernel
# Don't build nvidia-drm with kernel 4.11.0 due to incompatible license
export NV_EXCLUDE_KERNEL_MODULES=nvidia-drm
make module CC=$CC SYSSRC=$(kernel_path) SYSOUT=$(kernel_path)
$STRIP --strip-debug nvidia.ko
cd ..

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff