浏览代码

Merge tag 'stable/for-linus-3.14-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb

Pull swiotlb bug-fixes from Konrad Rzeszutek Wilk:
 - Don't DoS with 'swiotlb is full' message.
 - Documentation update.

* tag 'stable/for-linus-3.14-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb:
  swiotlb: Don't DoS us with 'swiotlb buffer is full' (v2)
  swiotlb: update format
Linus Torvalds 11 年之前
父节点
当前提交
ba6b5084e6
共有 2 个文件被更改,包括 7 次插入2 次删除
  1. 5 1
      Documentation/kernel-parameters.txt
  2. 2 1
      lib/swiotlb.c

+ 5 - 1
Documentation/kernel-parameters.txt

@@ -3124,7 +3124,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
 			controller if no parameter or 1 is given or disable
 			controller if no parameter or 1 is given or disable
 			it if 0 is given (See Documentation/cgroups/memory.txt)
 			it if 0 is given (See Documentation/cgroups/memory.txt)
 
 
-	swiotlb=	[IA-64] Number of I/O TLB slabs
+	swiotlb=	[ARM,IA-64,PPC,MIPS,X86]
+			Format: { <int> | force }
+			<int> -- Number of I/O TLB slabs
+			force -- force using of bounce buffers even if they
+			         wouldn't be automatically used by the kernel
 
 
 	switches=	[HW,M68k]
 	switches=	[HW,M68k]
 
 

+ 2 - 1
lib/swiotlb.c

@@ -510,7 +510,8 @@ phys_addr_t swiotlb_tbl_map_single(struct device *hwdev,
 
 
 not_found:
 not_found:
 	spin_unlock_irqrestore(&io_tlb_lock, flags);
 	spin_unlock_irqrestore(&io_tlb_lock, flags);
-	dev_warn(hwdev, "swiotlb buffer is full\n");
+	if (printk_ratelimit())
+		dev_warn(hwdev, "swiotlb buffer is full (sz: %zd bytes)\n", size);
 	return SWIOTLB_MAP_ERROR;
 	return SWIOTLB_MAP_ERROR;
 found:
 found:
 	spin_unlock_irqrestore(&io_tlb_lock, flags);
 	spin_unlock_irqrestore(&io_tlb_lock, flags);