diff options
-rw-r--r-- | .SRCINFO | 30 | ||||
-rw-r--r-- | 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch | 6 | ||||
-rw-r--r-- | 0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch | 12 | ||||
-rw-r--r-- | 0003-Partially-revert-swiotlb-remove-various-exports.patch | 29 | ||||
-rw-r--r-- | 0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch | 552 | ||||
-rw-r--r-- | 0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch | 95 | ||||
-rw-r--r-- | 0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch | 72 | ||||
-rw-r--r-- | PKGBUILD | 30 | ||||
-rw-r--r-- | config | 8 |
9 files changed, 29 insertions, 805 deletions
@@ -1,7 +1,7 @@ # Generated by mksrcinfo v8 -# Mon Apr 23 01:18:01 UTC 2018 +# Wed May 23 22:09:03 UTC 2018 pkgbase = linux-tomoyo - pkgver = 4.16.3 + pkgver = 4.16.11 pkgrel = 1 url = https://www.kernel.org/ arch = x86_64 @@ -14,32 +14,24 @@ pkgbase = linux-tomoyo options = !strip source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.16.tar.xz source = https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.16.tar.sign - source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.16.3.xz - source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.16.3.sign + source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.16.11.xz + source = https://www.kernel.org/pub/linux/kernel/v4.x/patch-4.16.11.sign source = config source = 60-linux.hook source = 90-linux.hook source = linux.preset source = 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch source = 0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch - source = 0003-Partially-revert-swiotlb-remove-various-exports.patch - source = 0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch - source = 0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch - source = 0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch sha256sums = 63f6dc8e3c9f3a0273d5d6f4dca38a2413ca3a5f689329d05b750e4c87bb21b9 sha256sums = SKIP - sha256sums = 336252cb15f2f2574461c1d3daabf5dc207842526085802270e1e5223f645db3 + sha256sums = d0d998f193c3feeab95f1378dea15aa6ba145f591661547cc00ef16d161651fe sha256sums = SKIP - sha256sums = 51f794dee6098b19b5f8ec2277f52a313584f2ff8b3abf111f2fd92a6ea118dd + sha256sums = e39c02fd021f125a6202f7e4c0692dfd3ced93d404ecb6c8dca6994c8e17b227 sha256sums = ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21 sha256sums = 75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919 sha256sums = ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65 - sha256sums = a6119b46856ed2652c509fed380052e6df2be89c69a0d748cf7d8745bf35b871 - sha256sums = 545566a7358d711b8d4f9924df685e2410549e20d99e5d1c0dfaccdfeafda60d - sha256sums = bef6dd7b3a749ec072614ea4ed0bd5ea1d90519731f3438e4938d5b957032cc5 - sha256sums = d647211e288436bcc010019a69f4ebf9a94c33b423c650aea8098969208ec836 - sha256sums = 6fb4fb81dab69ff432767e02585b3eb6a5a39c941e4bc2a6d4940ee17116c14e - sha256sums = d49a70d3b3f60c81d93735871f01ea60cafca87588d8d0d01801b2aec92e0e93 + sha256sums = b01e9bd4e0f3cc2b91db1d8c043b2d85329bd0c9a9441a91d337c3c33661b658 + sha256sums = 09170daf49fe4cb720f331cd2da1c75771eb4f9f124353bf035218b1f8ca57d1 pkgname = linux-tomoyo pkgdesc = The Linux kernel with TOMOYO configuration @@ -49,14 +41,14 @@ pkgname = linux-tomoyo depends = kmod depends = mkinitcpio>=0.7 optdepends = crda: to set the correct wireless channels of your country - provides = linux-tomoyo=4.16.3 + provides = linux-tomoyo=4.16.11 backup = etc/mkinitcpio.d/linux-tomoyo.preset pkgname = linux-tomoyo-headers pkgdesc = Header files and scripts for building modules for Linux-tomoyo kernel - provides = linux-tomoyo-headers=4.16.3 + provides = linux-tomoyo-headers=4.16.11 pkgname = linux-tomoyo-docs pkgdesc = Kernel hackers manual - HTML documentation that comes with the Linux-tomoyo kernel - provides = linux-tomoyo-docs=4.16.3 + provides = linux-tomoyo-docs=4.16.11 diff --git a/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch b/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch index 10d9a4bfda83..f669b43a7b4a 100644 --- a/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch +++ b/0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch @@ -1,8 +1,8 @@ -From ff9d06de19e83c0c5a00a4d46376b4d1032c4f99 Mon Sep 17 00:00:00 2001 -Message-Id: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> +From 05e9de6f123ae14e08a0b3c0e028f7e3a129d0e8 Mon Sep 17 00:00:00 2001 +Message-Id: <05e9de6f123ae14e08a0b3c0e028f7e3a129d0e8.1527025123.git.jan.steffens@gmail.com> From: Serge Hallyn <serge.hallyn@canonical.com> Date: Fri, 31 May 2013 19:12:12 +0100 -Subject: [PATCH 1/6] add sysctl to disallow unprivileged CLONE_NEWUSER by +Subject: [PATCH 1/2] add sysctl to disallow unprivileged CLONE_NEWUSER by default Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com> diff --git a/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch b/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch index 32c398976100..0fb23b73b2ab 100644 --- a/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch +++ b/0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch @@ -1,10 +1,10 @@ -From 3dcbf4dd14d295c3a238d73e9f791a827b906058 Mon Sep 17 00:00:00 2001 -Message-Id: <3dcbf4dd14d295c3a238d73e9f791a827b906058.1524129246.git.jan.steffens@gmail.com> -In-Reply-To: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -References: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> +From b5f4a5ba26b365471531e328b237887bab4ab89b Mon Sep 17 00:00:00 2001 +Message-Id: <b5f4a5ba26b365471531e328b237887bab4ab89b.1527025123.git.jan.steffens@gmail.com> +In-Reply-To: <05e9de6f123ae14e08a0b3c0e028f7e3a129d0e8.1527025123.git.jan.steffens@gmail.com> +References: <05e9de6f123ae14e08a0b3c0e028f7e3a129d0e8.1527025123.git.jan.steffens@gmail.com> From: Jim Bride <jim.bride@linux.intel.com> Date: Mon, 6 Nov 2017 13:38:57 -0800 -Subject: [PATCH 2/6] drm/i915/edp: Only use the alternate fixed mode if it's +Subject: [PATCH 2/2] drm/i915/edp: Only use the alternate fixed mode if it's asked for In commit dc911f5bd8aa ("drm/i915/edp: Allow alternate fixed mode for @@ -24,7 +24,7 @@ Signed-off-by: Jim Bride <jim.bride@linux.intel.com> 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c -index a29868cd30c7..b6d07b615b12 100644 +index 79521da5d11d..837cbaa55a2b 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1597,7 +1597,8 @@ static bool intel_edp_compare_alt_mode(struct drm_display_mode *m1, diff --git a/0003-Partially-revert-swiotlb-remove-various-exports.patch b/0003-Partially-revert-swiotlb-remove-various-exports.patch deleted file mode 100644 index 5a5f9ce0d2cd..000000000000 --- a/0003-Partially-revert-swiotlb-remove-various-exports.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 1b03bcc6faecde170f9bea83accdde7bbd36df96 Mon Sep 17 00:00:00 2001 -Message-Id: <1b03bcc6faecde170f9bea83accdde7bbd36df96.1524129246.git.jan.steffens@gmail.com> -In-Reply-To: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -References: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> -Date: Fri, 6 Apr 2018 16:19:38 +0200 -Subject: [PATCH 3/6] Partially revert "swiotlb: remove various exports" - -This partially reverts commit 4bd89ed39b2ab8dc4ac4b6c59b07d420b0213bec. -The proprietary NVIDIA driver needs one of the exports. ---- - lib/swiotlb.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/swiotlb.c b/lib/swiotlb.c -index c43ec2271469..77d699f14af7 100644 ---- a/lib/swiotlb.c -+++ b/lib/swiotlb.c -@@ -1016,6 +1016,7 @@ swiotlb_map_sg_attrs(struct device *hwdev, struct scatterlist *sgl, int nelems, - } - return nelems; - } -+EXPORT_SYMBOL(swiotlb_map_sg_attrs); - - /* - * Unmap a set of streaming mode DMA translations. Again, cpu read rules --- -2.17.0 - diff --git a/0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch b/0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch deleted file mode 100644 index 05924c39ce59..000000000000 --- a/0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch +++ /dev/null @@ -1,552 +0,0 @@ -From b04d533fa7e16e58243296b5063a624e91d2048e Mon Sep 17 00:00:00 2001 -Message-Id: <b04d533fa7e16e58243296b5063a624e91d2048e.1524129246.git.jan.steffens@gmail.com> -In-Reply-To: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -References: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com> -Date: Wed, 11 Apr 2018 21:27:44 +0200 -Subject: [PATCH 4/6] Fix vboxguest on guests with more than 4G RAM - -Squashed commit of the following: - -commit 042b191f6b98165d6bcca3ae09a0f9b289d6155e -Author: Hans de Goede <hdegoede@redhat.com> -Date: Thu Mar 29 17:28:57 2018 +0200 - - virt: vbox: Log an error when we fail to get the host version - - This was the only error path during probe without a message being logged - about what went wrong, this fixes this. - - Signed-off-by: Hans de Goede <hdegoede@redhat.com> - -commit e4111a6c617687f7cb414ddfa8176206910db76e -Author: Hans de Goede <hdegoede@redhat.com> -Date: Thu Mar 29 17:28:56 2018 +0200 - - virt: vbox: Use __get_free_pages instead of kmalloc for DMA32 memory - - It is not possible to get DMA32 zone memory through kmalloc, causing - the vboxguest driver to malfunction due to getting memory above - 4G which the PCI device cannot handle. - - This commit changes the kmalloc calls where the 4G limit matters to - using __get_free_pages() fixing vboxguest not working on x86_64 guests - with more then 4G RAM. - - Cc: stable@vger.kernel.org - Reported-by: Eloy Coto Pereiro <eloy.coto@gmail.com> - Signed-off-by: Hans de Goede <hdegoede@redhat.com> - -commit 2cb20368ce32e7275a351eadadd4c8f3da742a28 -Author: Hans de Goede <hdegoede@redhat.com> -Date: Thu Mar 29 17:28:55 2018 +0200 - - virt: vbox: Add vbg_req_free() helper function - - This is a preparation patch for fixing issues on x86_64 virtual-machines - with more then 4G of RAM, atm we pass __GFP_DMA32 to kmalloc, but kmalloc - does not honor that, so we need to switch to get_pages, which means we - will not be able to use kfree to free memory allocated with vbg_alloc_req. - - While at it also remove a comment on a vbg_alloc_req call which talks - about Windows (inherited from the vbox upstream cross-platform code). - - Cc: stable@vger.kernel.org - Signed-off-by: Hans de Goede <hdegoede@redhat.com> - -commit fa5c012bc9c3e1ada5cde0bfa3c6706be97b7cb0 -Author: Hans de Goede <hdegoede@redhat.com> -Date: Thu Mar 29 17:28:54 2018 +0200 - - virt: vbox: Move declarations of vboxguest private functions to private header - - Move the declarations of functions from vboxguest_utils.c which are only - meant for vboxguest internal use from include/linux/vbox_utils.h to - drivers/virt/vboxguest/vboxguest_core.h. - - Cc: stable@vger.kernel.org - Signed-off-by: Hans de Goede <hdegoede@redhat.com> ---- - drivers/virt/vboxguest/vboxguest_core.c | 70 +++++++++++++----------- - drivers/virt/vboxguest/vboxguest_core.h | 9 +++ - drivers/virt/vboxguest/vboxguest_linux.c | 19 ++++++- - drivers/virt/vboxguest/vboxguest_utils.c | 17 ++++-- - include/linux/vbox_utils.h | 23 -------- - 5 files changed, 76 insertions(+), 62 deletions(-) - -diff --git a/drivers/virt/vboxguest/vboxguest_core.c b/drivers/virt/vboxguest/vboxguest_core.c -index 190dbf8cfcb5..2f3856a95856 100644 ---- a/drivers/virt/vboxguest/vboxguest_core.c -+++ b/drivers/virt/vboxguest/vboxguest_core.c -@@ -114,7 +114,7 @@ static void vbg_guest_mappings_init(struct vbg_dev *gdev) - } - - out: -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - kfree(pages); - } - -@@ -144,7 +144,7 @@ static void vbg_guest_mappings_exit(struct vbg_dev *gdev) - - rc = vbg_req_perform(gdev, req); - -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - - if (rc < 0) { - vbg_err("%s error: %d\n", __func__, rc); -@@ -214,8 +214,8 @@ static int vbg_report_guest_info(struct vbg_dev *gdev) - ret = vbg_status_code_to_errno(rc); - - out_free: -- kfree(req2); -- kfree(req1); -+ vbg_req_free(req2, sizeof(*req2)); -+ vbg_req_free(req1, sizeof(*req1)); - return ret; - } - -@@ -245,7 +245,7 @@ static int vbg_report_driver_status(struct vbg_dev *gdev, bool active) - if (rc == VERR_NOT_IMPLEMENTED) /* Compatibility with older hosts. */ - rc = VINF_SUCCESS; - -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - - return vbg_status_code_to_errno(rc); - } -@@ -431,58 +431,52 @@ static int vbg_heartbeat_host_config(struct vbg_dev *gdev, bool enabled) - rc = vbg_req_perform(gdev, req); - do_div(req->interval_ns, 1000000); /* ns -> ms */ - gdev->heartbeat_interval_ms = req->interval_ns; -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - - return vbg_status_code_to_errno(rc); - } - - /** - * Initializes the heartbeat timer. This feature may be disabled by the host. - * Return: 0 or negative errno value. - * @gdev: The Guest extension device. - */ - static int vbg_heartbeat_init(struct vbg_dev *gdev) - { - int ret; - - /* Make sure that heartbeat checking is disabled if we fail. */ - ret = vbg_heartbeat_host_config(gdev, false); - if (ret < 0) - return ret; - - ret = vbg_heartbeat_host_config(gdev, true); - if (ret < 0) - return ret; - -- /* -- * Preallocate the request to use it from the timer callback because: -- * 1) on Windows vbg_req_alloc must be called at IRQL <= APC_LEVEL -- * and the timer callback runs at DISPATCH_LEVEL; -- * 2) avoid repeated allocations. -- */ - gdev->guest_heartbeat_req = vbg_req_alloc( - sizeof(*gdev->guest_heartbeat_req), - VMMDEVREQ_GUEST_HEARTBEAT); - if (!gdev->guest_heartbeat_req) - return -ENOMEM; - - vbg_info("%s: Setting up heartbeat to trigger every %d milliseconds\n", - __func__, gdev->heartbeat_interval_ms); - mod_timer(&gdev->heartbeat_timer, 0); - - return 0; - } - - /** - * Cleanup hearbeat code, stop HB timer and disable host heartbeat checking. - * @gdev: The Guest extension device. - */ - static void vbg_heartbeat_exit(struct vbg_dev *gdev) - { - del_timer_sync(&gdev->heartbeat_timer); - vbg_heartbeat_host_config(gdev, false); -- kfree(gdev->guest_heartbeat_req); -- -+ vbg_req_free(gdev->guest_heartbeat_req, -+ sizeof(*gdev->guest_heartbeat_req)); - } - - /** -@@ -543,7 +537,7 @@ static int vbg_reset_host_event_filter(struct vbg_dev *gdev, - if (rc < 0) - vbg_err("%s error, rc: %d\n", __func__, rc); - -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - return vbg_status_code_to_errno(rc); - } - -@@ -617,32 +611,32 @@ static int vbg_set_session_event_filter(struct vbg_dev *gdev, - - out: - mutex_unlock(&gdev->session_mutex); -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - - return ret; - } - - /** - * Init and termination worker for set guest capabilities to zero on the host. - * Return: 0 or negative errno value. - * @gdev: The Guest extension device. - */ - static int vbg_reset_host_capabilities(struct vbg_dev *gdev) - { - struct vmmdev_mask *req; - int rc; - - req = vbg_req_alloc(sizeof(*req), VMMDEVREQ_SET_GUEST_CAPABILITIES); - if (!req) - return -ENOMEM; - - req->not_mask = U32_MAX; - req->or_mask = 0; - rc = vbg_req_perform(gdev, req); - if (rc < 0) - vbg_err("%s error, rc: %d\n", __func__, rc); - -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - return vbg_status_code_to_errno(rc); - } - -@@ -712,44 +706,46 @@ static int vbg_set_session_capabilities(struct vbg_dev *gdev, - - out: - mutex_unlock(&gdev->session_mutex); -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - - return ret; - } - - /** - * vbg_query_host_version get the host feature mask and version information. - * Return: 0 or negative errno value. - * @gdev: The Guest extension device. - */ - static int vbg_query_host_version(struct vbg_dev *gdev) - { - struct vmmdev_host_version *req; - int rc, ret; - - req = vbg_req_alloc(sizeof(*req), VMMDEVREQ_GET_HOST_VERSION); - if (!req) - return -ENOMEM; - - rc = vbg_req_perform(gdev, req); - ret = vbg_status_code_to_errno(rc); -- if (ret) -+ if (ret) { -+ vbg_err("%s error: %d\n", __func__, rc); - goto out; -+ } - - snprintf(gdev->host_version, sizeof(gdev->host_version), "%u.%u.%ur%u", - req->major, req->minor, req->build, req->revision); - gdev->host_features = req->features; - - vbg_info("vboxguest: host-version: %s %#x\n", gdev->host_version, - gdev->host_features); - - if (!(req->features & VMMDEV_HVF_HGCM_PHYS_PAGE_LIST)) { - vbg_err("vboxguest: Error host too old (does not support page-lists)\n"); - ret = -ENODEV; - } - - out: -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - return ret; - } - -@@ -847,36 +843,46 @@ int vbg_core_init(struct vbg_dev *gdev, u32 fixed_events) - return 0; - - err_free_reqs: -- kfree(gdev->mouse_status_req); -- kfree(gdev->ack_events_req); -- kfree(gdev->cancel_req); -- kfree(gdev->mem_balloon.change_req); -- kfree(gdev->mem_balloon.get_req); -+ vbg_req_free(gdev->mouse_status_req, -+ sizeof(*gdev->mouse_status_req)); -+ vbg_req_free(gdev->ack_events_req, -+ sizeof(*gdev->ack_events_req)); -+ vbg_req_free(gdev->cancel_req, -+ sizeof(*gdev->cancel_req)); -+ vbg_req_free(gdev->mem_balloon.change_req, -+ sizeof(*gdev->mem_balloon.change_req)); -+ vbg_req_free(gdev->mem_balloon.get_req, -+ sizeof(*gdev->mem_balloon.get_req)); - return ret; - } - - /** - * Call this on exit to clean-up vboxguest-core managed resources. - * - * The native code should call this before the driver is loaded, - * but don't call this on shutdown. - * @gdev: The Guest extension device. - */ - void vbg_core_exit(struct vbg_dev *gdev) - { - vbg_heartbeat_exit(gdev); - vbg_guest_mappings_exit(gdev); - - /* Clear the host flags (mouse status etc). */ - vbg_reset_host_event_filter(gdev, 0); - vbg_reset_host_capabilities(gdev); - vbg_core_set_mouse_status(gdev, 0); - -- kfree(gdev->mouse_status_req); -- kfree(gdev->ack_events_req); -- kfree(gdev->cancel_req); -- kfree(gdev->mem_balloon.change_req); -- kfree(gdev->mem_balloon.get_req); -+ vbg_req_free(gdev->mouse_status_req, -+ sizeof(*gdev->mouse_status_req)); -+ vbg_req_free(gdev->ack_events_req, -+ sizeof(*gdev->ack_events_req)); -+ vbg_req_free(gdev->cancel_req, -+ sizeof(*gdev->cancel_req)); -+ vbg_req_free(gdev->mem_balloon.change_req, -+ sizeof(*gdev->mem_balloon.change_req)); -+ vbg_req_free(gdev->mem_balloon.get_req, -+ sizeof(*gdev->mem_balloon.get_req)); - } - - /** -@@ -1415,7 +1421,7 @@ static int vbg_ioctl_write_core_dump(struct vbg_dev *gdev, - req->flags = dump->u.in.flags; - dump->hdr.rc = vbg_req_perform(gdev, req); - -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - return 0; - } - -@@ -1513,7 +1519,7 @@ int vbg_core_set_mouse_status(struct vbg_dev *gdev, u32 features) - if (rc < 0) - vbg_err("%s error, rc: %d\n", __func__, rc); - -- kfree(req); -+ vbg_req_free(req, sizeof(*req)); - return vbg_status_code_to_errno(rc); - } - -diff --git a/drivers/virt/vboxguest/vboxguest_core.h b/drivers/virt/vboxguest/vboxguest_core.h -index 6c784bf4fa6d..7ad9ec45bfa9 100644 ---- a/drivers/virt/vboxguest/vboxguest_core.h -+++ b/drivers/virt/vboxguest/vboxguest_core.h -@@ -171,4 +171,13 @@ irqreturn_t vbg_core_isr(int irq, void *dev_id); - - void vbg_linux_mouse_event(struct vbg_dev *gdev); - -+/* Private (non exported) functions form vboxguest_utils.c */ -+void *vbg_req_alloc(size_t len, enum vmmdev_request_type req_type); -+void vbg_req_free(void *req, size_t len); -+int vbg_req_perform(struct vbg_dev *gdev, void *req); -+int vbg_hgcm_call32( -+ struct vbg_dev *gdev, u32 client_id, u32 function, u32 timeout_ms, -+ struct vmmdev_hgcm_function_parameter32 *parm32, u32 parm_count, -+ int *vbox_status); -+ - #endif -diff --git a/drivers/virt/vboxguest/vboxguest_linux.c b/drivers/virt/vboxguest/vboxguest_linux.c -index 82e280d38cc2..398d22693234 100644 ---- a/drivers/virt/vboxguest/vboxguest_linux.c -+++ b/drivers/virt/vboxguest/vboxguest_linux.c -@@ -87,52 +87,65 @@ static long vbg_misc_device_ioctl(struct file *filp, unsigned int req, - struct vbg_session *session = filp->private_data; - size_t returned_size, size; - struct vbg_ioctl_hdr hdr; -+ bool is_vmmdev_req; - int ret = 0; - void *buf; - - if (copy_from_user(&hdr, (void *)arg, sizeof(hdr))) - return -EFAULT; - - if (hdr.version != VBG_IOCTL_HDR_VERSION) - return -EINVAL; - - if (hdr.size_in < sizeof(hdr) || - (hdr.size_out && hdr.size_out < sizeof(hdr))) - return -EINVAL; - - size = max(hdr.size_in, hdr.size_out); - if (_IOC_SIZE(req) && _IOC_SIZE(req) != size) - return -EINVAL; - if (size > SZ_16M) - return -E2BIG; - -- /* __GFP_DMA32 because IOCTL_VMMDEV_REQUEST passes this to the host */ -- buf = kmalloc(size, GFP_KERNEL | __GFP_DMA32); -+ /* -+ * IOCTL_VMMDEV_REQUEST needs the buffer to be below 4G to avoid -+ * the need for a bounce-buffer and another copy later on. -+ */ -+ is_vmmdev_req = (req & ~IOCSIZE_MASK) == VBG_IOCTL_VMMDEV_REQUEST(0) || -+ req == VBG_IOCTL_VMMDEV_REQUEST_BIG; -+ -+ if (is_vmmdev_req) -+ buf = vbg_req_alloc(size, VBG_IOCTL_HDR_TYPE_DEFAULT); -+ else -+ buf = kmalloc(size, GFP_KERNEL); - if (!buf) - return -ENOMEM; - - if (copy_from_user(buf, (void *)arg, hdr.size_in)) { - ret = -EFAULT; - goto out; - } - if (hdr.size_in < size) - memset(buf + hdr.size_in, 0, size - hdr.size_in); - - ret = vbg_core_ioctl(session, req, buf); - if (ret) - goto out; - - returned_size = ((struct vbg_ioctl_hdr *)buf)->size_out; - if (returned_size > size) { - vbg_debug("%s: too much output data %zu > %zu\n", - __func__, returned_size, size); - returned_size = size; - } - if (copy_to_user((void *)arg, buf, returned_size) != 0) - ret = -EFAULT; - - out: -- kfree(buf); -+ if (is_vmmdev_req) -+ vbg_req_free(buf, size); -+ else -+ kfree(buf); - - return ret; - } -diff --git a/drivers/virt/vboxguest/vboxguest_utils.c b/drivers/virt/vboxguest/vboxguest_utils.c -index 0f0dab8023cf..bf4474214b4d 100644 ---- a/drivers/virt/vboxguest/vboxguest_utils.c -+++ b/drivers/virt/vboxguest/vboxguest_utils.c -@@ -65,23 +65,32 @@ VBG_LOG(vbg_debug, pr_debug); - void *vbg_req_alloc(size_t len, enum vmmdev_request_type req_type) - { - struct vmmdev_request_header *req; -+ int order = get_order(PAGE_ALIGN(len)); - -- req = kmalloc(len, GFP_KERNEL | __GFP_DMA32); -+ req = (void *)__get_free_pages(GFP_KERNEL | GFP_DMA32, order); - if (!req) - return NULL; - - memset(req, 0xaa, len); - - req->size = len; - req->version = VMMDEV_REQUEST_HEADER_VERSION; - req->request_type = req_type; - req->rc = VERR_GENERAL_FAILURE; - req->reserved1 = 0; - req->reserved2 = 0; - - return req; - } - -+void vbg_req_free(void *req, size_t len) -+{ -+ if (!req) -+ return; -+ -+ free_pages((unsigned long)req, get_order(PAGE_ALIGN(len))); -+} -+ - /* Note this function returns a VBox status code, not a negative errno!! */ - int vbg_req_perform(struct vbg_dev *gdev, void *req) - { -@@ -137,7 +146,7 @@ int vbg_hgcm_connect(struct vbg_dev *gdev, - rc = hgcm_connect->header.result; - } - -- kfree(hgcm_connect); -+ vbg_req_free(hgcm_connect, sizeof(*hgcm_connect)); - - *vbox_status = rc; - return 0; -@@ -166,7 +175,7 @@ int vbg_hgcm_disconnect(struct vbg_dev *gdev, u32 client_id, int *vbox_status) - if (rc >= 0) - rc = hgcm_disconnect->header.result; - -- kfree(hgcm_disconnect); -+ vbg_req_free(hgcm_disconnect, sizeof(*hgcm_disconnect)); - - *vbox_status = rc; - return 0; -@@ -623,7 +632,7 @@ int vbg_hgcm_call(struct vbg_dev *gdev, u32 client_id, u32 function, - } - - if (!leak_it) -- kfree(call); -+ vbg_req_free(call, size); - - free_bounce_bufs: - if (bounce_bufs) { -diff --git a/include/linux/vbox_utils.h b/include/linux/vbox_utils.h -index c71def6b310f..a240ed2a0372 100644 ---- a/include/linux/vbox_utils.h -+++ b/include/linux/vbox_utils.h -@@ -24,39 +24,16 @@ __printf(1, 2) void vbg_debug(const char *fmt, ...); - #define vbg_debug pr_debug - #endif - --/** -- * Allocate memory for generic request and initialize the request header. -- * -- * Return: the allocated memory -- * @len: Size of memory block required for the request. -- * @req_type: The generic request type. -- */ --void *vbg_req_alloc(size_t len, enum vmmdev_request_type req_type); -- --/** -- * Perform a generic request. -- * -- * Return: VBox status code -- * @gdev: The Guest extension device. -- * @req: Pointer to the request structure. -- */ --int vbg_req_perform(struct vbg_dev *gdev, void *req); -- - int vbg_hgcm_connect(struct vbg_dev *gdev, - struct vmmdev_hgcm_service_location *loc, - u32 *client_id, int *vbox_status); - - int vbg_hgcm_disconnect(struct vbg_dev *gdev, u32 client_id, int *vbox_status); - - int vbg_hgcm_call(struct vbg_dev *gdev, u32 client_id, u32 function, - u32 timeout_ms, struct vmmdev_hgcm_function_parameter *parms, - u32 parm_count, int *vbox_status); - --int vbg_hgcm_call32( -- struct vbg_dev *gdev, u32 client_id, u32 function, u32 timeout_ms, -- struct vmmdev_hgcm_function_parameter32 *parm32, u32 parm_count, -- int *vbox_status); -- - /** - * Convert a VirtualBox status code to a standard Linux kernel return value. - * Return: 0 or negative errno value. --- -2.17.0 - diff --git a/0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch b/0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch deleted file mode 100644 index 8fc4edeaf954..000000000000 --- a/0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch +++ /dev/null @@ -1,95 +0,0 @@ -From 23675bf063a1b39fccd29e7f573ec6729a11b3fa Mon Sep 17 00:00:00 2001 -Message-Id: <23675bf063a1b39fccd29e7f573ec6729a11b3fa.1524129246.git.jan.steffens@gmail.com> -In-Reply-To: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -References: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -From: Harry Wentland <harry.wentland@amd.com> -Date: Thu, 12 Apr 2018 10:51:52 -0400 -Subject: [PATCH 5/6] Revert "drm/amd/display: disable CRTCs with NULL FB on - their primary plane (V2)" -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This seems to cause flickering and lock-ups for a wide range of users. -Revert until we've found a proper fix for the flickering and lock-ups. - -This reverts commit 36cc549d59864b7161f0e23d710c1c4d1b9cf022. - -Cc: Shirish S <shirish.s@amd.com> -Cc: Alex Deucher <alexander.deucher@amd.com> -Cc: stable@vger.kernel.org -Reviewed-by: Michel Dänzer <michel.daenzer@amd.com> -Signed-off-by: Harry Wentland <harry.wentland@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 31 ------------------- - 1 file changed, 31 deletions(-) - -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 63c67346d316..8a6e6fbc78cd 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -4776,60 +4776,29 @@ static int dm_update_planes_state(struct dc *dc, - return ret; - } - --static int dm_atomic_check_plane_state_fb(struct drm_atomic_state *state, -- struct drm_crtc *crtc) --{ -- struct drm_plane *plane; -- struct drm_crtc_state *crtc_state; -- -- WARN_ON(!drm_atomic_get_new_crtc_state(state, crtc)); -- -- drm_for_each_plane_mask(plane, state->dev, crtc->state->plane_mask) { -- struct drm_plane_state *plane_state = -- drm_atomic_get_plane_state(state, plane); -- -- if (IS_ERR(plane_state)) -- return -EDEADLK; -- -- crtc_state = drm_atomic_get_crtc_state(plane_state->state, crtc); -- if (IS_ERR(crtc_state)) -- return PTR_ERR(crtc_state); -- -- if (crtc->primary == plane && crtc_state->active) { -- if (!plane_state->fb) -- return -EINVAL; -- } -- } -- return 0; --} -- - static int amdgpu_dm_atomic_check(struct drm_device *dev, - struct drm_atomic_state *state) - { - struct amdgpu_device *adev = dev->dev_private; - struct dc *dc = adev->dm.dc; - struct dm_atomic_state *dm_state = to_dm_atomic_state(state); - struct drm_connector *connector; - struct drm_connector_state *old_con_state, *new_con_state; - struct drm_crtc *crtc; - struct drm_crtc_state *old_crtc_state, *new_crtc_state; - int ret, i; - - /* - * This bool will be set for true for any modeset/reset - * or plane update which implies non fast surface update. - */ - bool lock_and_validation_needed = false; - - ret = drm_atomic_helper_check_modeset(dev, state); - if (ret) - goto fail; - - for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) { -- ret = dm_atomic_check_plane_state_fb(state, crtc); -- if (ret) -- goto fail; -- - if (!drm_atomic_crtc_needs_modeset(new_crtc_state) && - !new_crtc_state->color_mgmt_changed) - continue; --- -2.17.0 - diff --git a/0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch b/0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch deleted file mode 100644 index d32cfc4088ae..000000000000 --- a/0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch +++ /dev/null @@ -1,72 +0,0 @@ -From fb08717dc5ecf3ada73f93663b528d9d4ce4380b Mon Sep 17 00:00:00 2001 -Message-Id: <fb08717dc5ecf3ada73f93663b528d9d4ce4380b.1524129246.git.jan.steffens@gmail.com> -In-Reply-To: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -References: <ff9d06de19e83c0c5a00a4d46376b4d1032c4f99.1524129246.git.jan.steffens@gmail.com> -From: Igor Russkikh <igor.russkikh@aquantia.com> -Date: Wed, 11 Apr 2018 15:23:24 +0300 -Subject: [PATCH 6/6] net: aquantia: Regression on reset with 1.x firmware - -On ASUS XG-C100C with 1.5.44 firmware a special mode called "dirty wake" -is active. With this mode when motherboard gets powered (but no poweron -happens yet), NIC automatically enables powersave link and watches -for WOL packet. -This normally allows to powerup the PC after AC power failures. - -Not all motherboards or bios settings gives power to PCI slots, -so this mode is not enabled on all the hardware. - -4.16 linux driver introduced full hardware reset sequence -This is required since before that we had no NIC hardware -reset implemented and there were side effects of "not clean start". - -But this full reset is incompatible with "dirty wake" WOL feature -it keeps the PHY link in a special mode forever. As a consequence, -driver sees no link and no traffic. - -To fix this we forcibly change FW state to idle state before doing -the full reset. This makes FW to restore link state. - -Fixes: c8c82eb net: aquantia: Introduce global AQC hardware reset sequence -Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - .../aquantia/atlantic/hw_atl/hw_atl_utils.c | 16 ++++++++++++++++ - 1 file changed, 16 insertions(+) - -diff --git a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c -index d3b847ec7465..c58b2c227260 100644 ---- a/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c -+++ b/drivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_utils.c -@@ -48,6 +48,8 @@ - #define FORCE_FLASHLESS 0 - - static int hw_atl_utils_ver_match(u32 ver_expected, u32 ver_actual); -+static int hw_atl_utils_mpi_set_state(struct aq_hw_s *self, -+ enum hal_atl_utils_fw_state_e state); - - int hw_atl_utils_initfw(struct aq_hw_s *self, const struct aq_fw_ops **fw_ops) - { -@@ -247,6 +249,20 @@ int hw_atl_utils_soft_reset(struct aq_hw_s *self) - - self->rbl_enabled = (boot_exit_code != 0); - -+ /* FW 1.x may bootup in an invalid POWER state (WOL feature). -+ * We should work around this by forcing its state back to DEINIT -+ */ -+ if (!hw_atl_utils_ver_match(HW_ATL_FW_VER_1X, -+ aq_hw_read_reg(self, -+ HW_ATL_MPI_FW_VERSION))) { -+ int err = 0; -+ -+ hw_atl_utils_mpi_set_state(self, MPI_DEINIT); -+ AQ_HW_WAIT_FOR((aq_hw_read_reg(self, HW_ATL_MPI_STATE_ADR) & -+ HW_ATL_MPI_STATE_MSK) == MPI_DEINIT, -+ 10, 1000U); -+ } -+ - if (self->rbl_enabled) - return hw_atl_utils_soft_reset_rbl(self); - else --- -2.17.0 - @@ -7,7 +7,7 @@ pkgbase=linux-tomoyo _srcname=linux-4.16 -pkgver=4.16.3 +pkgver=4.16.11 pkgrel=1 arch=('x86_64') url="https://www.kernel.org/" @@ -27,26 +27,18 @@ source=("https://www.kernel.org/pub/linux/kernel/v4.x/${_srcname}.tar.xz" 'linux.preset' 0001-add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by.patch 0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch - 0003-Partially-revert-swiotlb-remove-various-exports.patch - 0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch - 0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch - 0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch ) sha256sums=('63f6dc8e3c9f3a0273d5d6f4dca38a2413ca3a5f689329d05b750e4c87bb21b9' 'SKIP' - '336252cb15f2f2574461c1d3daabf5dc207842526085802270e1e5223f645db3' + 'd0d998f193c3feeab95f1378dea15aa6ba145f591661547cc00ef16d161651fe' 'SKIP' - '51f794dee6098b19b5f8ec2277f52a313584f2ff8b3abf111f2fd92a6ea118dd' + 'e39c02fd021f125a6202f7e4c0692dfd3ced93d404ecb6c8dca6994c8e17b227' 'ae2e95db94ef7176207c690224169594d49445e04249d2499e9d2fbc117a0b21' '75f99f5239e03238f88d1a834c50043ec32b1dc568f2cc291b07d04718483919' 'ad6344badc91ad0630caacde83f7f9b97276f80d26a20619a87952be65492c65' - 'a6119b46856ed2652c509fed380052e6df2be89c69a0d748cf7d8745bf35b871' - '545566a7358d711b8d4f9924df685e2410549e20d99e5d1c0dfaccdfeafda60d' - 'bef6dd7b3a749ec072614ea4ed0bd5ea1d90519731f3438e4938d5b957032cc5' - 'd647211e288436bcc010019a69f4ebf9a94c33b423c650aea8098969208ec836' - '6fb4fb81dab69ff432767e02585b3eb6a5a39c941e4bc2a6d4940ee17116c14e' - 'd49a70d3b3f60c81d93735871f01ea60cafca87588d8d0d01801b2aec92e0e93') + 'b01e9bd4e0f3cc2b91db1d8c043b2d85329bd0c9a9441a91d337c3c33661b658' + '09170daf49fe4cb720f331cd2da1c75771eb4f9f124353bf035218b1f8ca57d1') validpgpkeys=( 'ABAF11C65A2970B130ABE3C479BE3E4300411886' # Linus Torvalds '647F28654894E3BD457199BE38DBBDC86092693E' # Greg Kroah-Hartman @@ -70,18 +62,6 @@ prepare() { # https://bugs.archlinux.org/task/56711 patch -Np1 -i ../0002-drm-i915-edp-Only-use-the-alternate-fixed-mode-if-it.patch - # NVIDIA driver compat - patch -Np1 -i ../0003-Partially-revert-swiotlb-remove-various-exports.patch - - # https://bugs.archlinux.org/task/58153 - patch -Np1 -i ../0004-Fix-vboxguest-on-guests-with-more-than-4G-RAM.patch - - # https://bugs.archlinux.org/task/58158 - patch -Np1 -i ../0005-Revert-drm-amd-display-disable-CRTCs-with-NULL-FB-on.patch - - # https://bugs.archlinux.org/task/58174 - patch -Np1 -i ../0006-net-aquantia-Regression-on-reset-with-1.x-firmware.patch - cat ../config - >.config <<END CONFIG_LOCALVERSION="${_kernelname}" CONFIG_LOCALVERSION_AUTO=n @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 4.16.2-1 Kernel Configuration +# Linux/x86 4.16.10-1 Kernel Configuration # CONFIG_64BIT=y CONFIG_X86_64=y @@ -571,7 +571,7 @@ CONFIG_AMD_NUMA=y CONFIG_X86_64_ACPI_NUMA=y CONFIG_NODES_SPAN_OTHER_NODES=y # CONFIG_NUMA_EMU is not set -CONFIG_NODES_SHIFT=2 +CONFIG_NODES_SHIFT=5 CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_DEFAULT=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y @@ -661,7 +661,7 @@ CONFIG_ARCH_USES_PG_UNCACHED=y CONFIG_ARCH_RANDOM=y CONFIG_X86_SMAP=y CONFIG_X86_INTEL_UMIP=y -CONFIG_X86_INTEL_MPX=y +# CONFIG_X86_INTEL_MPX is not set CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=y CONFIG_EFI=y CONFIG_EFI_STUB=y @@ -6203,7 +6203,7 @@ CONFIG_SND_HDA_CODEC_CA0132_DSP=y CONFIG_SND_HDA_CODEC_CMEDIA=m CONFIG_SND_HDA_CODEC_SI3054=m CONFIG_SND_HDA_GENERIC=m -CONFIG_SND_HDA_POWER_SAVE_DEFAULT=10 +CONFIG_SND_HDA_POWER_SAVE_DEFAULT=0 CONFIG_SND_HDA_CORE=m CONFIG_SND_HDA_DSP_LOADER=y CONFIG_SND_HDA_I915=y |