Linux v4.17.11
This commit is contained in:
parent
c77aa80fb3
commit
32987359b5
|
@ -1,125 +0,0 @@
|
|||
From 3c16e0cc4ace8bd838bf234caead5a766b07fe9d Mon Sep 17 00:00:00 2001
|
||||
From: Christoph Hellwig <hch@lst.de>
|
||||
Date: Thu, 5 Jul 2018 13:29:55 -0600
|
||||
Subject: [PATCH] Revert "iommu/intel-iommu: Enable CONFIG_DMA_DIRECT_OPS=y and
|
||||
clean up intel_{alloc,free}_coherent()"
|
||||
|
||||
This commit may cause a less than required dma mask to be used for
|
||||
some allocations, which apparently leads to module load failures for
|
||||
iwlwifi sometimes.
|
||||
|
||||
This reverts commit d657c5c73ca987214a6f9436e435b34fc60f332a.
|
||||
|
||||
Signed-off-by: Christoph Hellwig <hch@lst.de>
|
||||
Reported-by: Fabio Coatti <fabio.coatti@gmail.com>
|
||||
Tested-by: Fabio Coatti <fabio.coatti@gmail.com>
|
||||
Signed-off-by: Jeremy Cline <jcline@redhat.com>
|
||||
---
|
||||
drivers/iommu/Kconfig | 1 -
|
||||
drivers/iommu/intel-iommu.c | 62 +++++++++++++++++++++++++++----------
|
||||
2 files changed, 46 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig
|
||||
index b38798cc5288..f3a21343e636 100644
|
||||
--- a/drivers/iommu/Kconfig
|
||||
+++ b/drivers/iommu/Kconfig
|
||||
@@ -142,7 +142,6 @@ config DMAR_TABLE
|
||||
config INTEL_IOMMU
|
||||
bool "Support for Intel IOMMU using DMA Remapping Devices"
|
||||
depends on PCI_MSI && ACPI && (X86 || IA64_GENERIC)
|
||||
- select DMA_DIRECT_OPS
|
||||
select IOMMU_API
|
||||
select IOMMU_IOVA
|
||||
select DMAR_TABLE
|
||||
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
|
||||
index 749d8f235346..6392a4964fc5 100644
|
||||
--- a/drivers/iommu/intel-iommu.c
|
||||
+++ b/drivers/iommu/intel-iommu.c
|
||||
@@ -31,7 +31,6 @@
|
||||
#include <linux/pci.h>
|
||||
#include <linux/dmar.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
-#include <linux/dma-direct.h>
|
||||
#include <linux/mempool.h>
|
||||
#include <linux/memory.h>
|
||||
#include <linux/cpu.h>
|
||||
@@ -3709,30 +3708,61 @@ static void *intel_alloc_coherent(struct device *dev, size_t size,
|
||||
dma_addr_t *dma_handle, gfp_t flags,
|
||||
unsigned long attrs)
|
||||
{
|
||||
- void *vaddr;
|
||||
+ struct page *page = NULL;
|
||||
+ int order;
|
||||
|
||||
- vaddr = dma_direct_alloc(dev, size, dma_handle, flags, attrs);
|
||||
- if (iommu_no_mapping(dev) || !vaddr)
|
||||
- return vaddr;
|
||||
+ size = PAGE_ALIGN(size);
|
||||
+ order = get_order(size);
|
||||
|
||||
- *dma_handle = __intel_map_single(dev, virt_to_phys(vaddr),
|
||||
- PAGE_ALIGN(size), DMA_BIDIRECTIONAL,
|
||||
- dev->coherent_dma_mask);
|
||||
- if (!*dma_handle)
|
||||
- goto out_free_pages;
|
||||
- return vaddr;
|
||||
+ if (!iommu_no_mapping(dev))
|
||||
+ flags &= ~(GFP_DMA | GFP_DMA32);
|
||||
+ else if (dev->coherent_dma_mask < dma_get_required_mask(dev)) {
|
||||
+ if (dev->coherent_dma_mask < DMA_BIT_MASK(32))
|
||||
+ flags |= GFP_DMA;
|
||||
+ else
|
||||
+ flags |= GFP_DMA32;
|
||||
+ }
|
||||
+
|
||||
+ if (gfpflags_allow_blocking(flags)) {
|
||||
+ unsigned int count = size >> PAGE_SHIFT;
|
||||
+
|
||||
+ page = dma_alloc_from_contiguous(dev, count, order, flags);
|
||||
+ if (page && iommu_no_mapping(dev) &&
|
||||
+ page_to_phys(page) + size > dev->coherent_dma_mask) {
|
||||
+ dma_release_from_contiguous(dev, page, count);
|
||||
+ page = NULL;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!page)
|
||||
+ page = alloc_pages(flags, order);
|
||||
+ if (!page)
|
||||
+ return NULL;
|
||||
+ memset(page_address(page), 0, size);
|
||||
+
|
||||
+ *dma_handle = __intel_map_single(dev, page_to_phys(page), size,
|
||||
+ DMA_BIDIRECTIONAL,
|
||||
+ dev->coherent_dma_mask);
|
||||
+ if (*dma_handle)
|
||||
+ return page_address(page);
|
||||
+ if (!dma_release_from_contiguous(dev, page, size >> PAGE_SHIFT))
|
||||
+ __free_pages(page, order);
|
||||
|
||||
-out_free_pages:
|
||||
- dma_direct_free(dev, size, vaddr, *dma_handle, attrs);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void intel_free_coherent(struct device *dev, size_t size, void *vaddr,
|
||||
dma_addr_t dma_handle, unsigned long attrs)
|
||||
{
|
||||
- if (!iommu_no_mapping(dev))
|
||||
- intel_unmap(dev, dma_handle, PAGE_ALIGN(size));
|
||||
- dma_direct_free(dev, size, vaddr, dma_handle, attrs);
|
||||
+ int order;
|
||||
+ struct page *page = virt_to_page(vaddr);
|
||||
+
|
||||
+ size = PAGE_ALIGN(size);
|
||||
+ order = get_order(size);
|
||||
+
|
||||
+ intel_unmap(dev, dma_handle, size);
|
||||
+ if (!dma_release_from_contiguous(dev, page, size >> PAGE_SHIFT))
|
||||
+ __free_pages(page, order);
|
||||
}
|
||||
|
||||
static void intel_unmap_sg(struct device *dev, struct scatterlist *sglist,
|
||||
--
|
||||
2.17.1
|
||||
|
13
kernel.spec
13
kernel.spec
|
@ -54,7 +54,7 @@ Summary: The Linux kernel
|
|||
%if 0%{?released_kernel}
|
||||
|
||||
# Do we have a -stable update to apply?
|
||||
%define stable_update 10
|
||||
%define stable_update 11
|
||||
# Set rpm version accordingly
|
||||
%if 0%{?stable_update}
|
||||
%define stablerev %{stable_update}
|
||||
|
@ -126,6 +126,10 @@ Summary: The Linux kernel
|
|||
# See also 'make debug' and 'make release'.
|
||||
%define debugbuildsenabled 1
|
||||
|
||||
# Kernel headers are being split out into a separate package
|
||||
%define with_headers 0
|
||||
%define with_cross_headers 0
|
||||
|
||||
%if %{with_verbose}
|
||||
%define make_opts V=1
|
||||
%else
|
||||
|
@ -667,9 +671,6 @@ Patch523: 0001-xfs-More-robust-inode-extent-count-validation.patch
|
|||
# rhbz 1597333
|
||||
# Patch526: xhci-Fix-perceived-dead-host-due-to-runtime-suspend-.patch
|
||||
|
||||
# rbhz 1607092
|
||||
Patch528: Revert-iommu-intel-iommu-Enable-CONFIG_DMA_DIRECT_OP.patch
|
||||
|
||||
# rhbz 1602971
|
||||
Patch529: ext4-fix-false-negative-and-false-positives.patch
|
||||
|
||||
|
@ -1923,6 +1924,10 @@ fi
|
|||
#
|
||||
#
|
||||
%changelog
|
||||
* Mon Jul 30 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.17.11-100
|
||||
- Linux v4.17.11
|
||||
- Turn off kernel-headers for the split
|
||||
|
||||
* Wed Jul 25 2018 Justin M. Forbes <jforbes@fedoraproject.org> - 4.17.10-100
|
||||
- Linux v4.17.10
|
||||
|
||||
|
|
2
sources
2
sources
|
@ -1,2 +1,2 @@
|
|||
SHA512 (linux-4.17.tar.xz) = 4d9de340a26155a89ea8773131c76220cc2057f2b5d031b467b60e8b14c1842518e2d60a863d8c695f0f7640f3f18d43826201984a238dade857b6cef79837db
|
||||
SHA512 (patch-4.17.10.xz) = 4ed5a6d47de7b4153805d937c44cb5eb03628a590d597c38be299afe67047611a6b37b1c13d0a8503de296779fc4ad6337dd4209f06b375c0111400b454b59c7
|
||||
SHA512 (patch-4.17.11.xz) = 6cab8f1aecceb0491dca25afa088f9601178c8dfec51551afd34e219600bba54f65f929d9a10948cdb5595e339e096473127b55b1142e6dbe9a818149bec307d
|
||||
|
|
Loading…
Reference in New Issue