]> git.karo-electronics.de Git - karo-tx-linux.git/commit
x86, iommu: Add proper dependency sort routine (and sanity check).
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Thu, 26 Aug 2010 17:57:58 +0000 (13:57 -0400)
committerH. Peter Anvin <hpa@linux.intel.com>
Thu, 26 Aug 2010 22:13:19 +0000 (15:13 -0700)
commit5bef80a4b826b9cee1c6aec7ecc371ec395260cc
treeda37af1b6760d443e1c8a301bb0af17b16ebcd9b
parent480125ba49ba62be93beea37770f266846e077ab
x86, iommu: Add proper dependency sort routine (and sanity check).

We are using a very simple sort routine which sorts the .iommu_table
array in the order of dependencies. Specifically each structure
of iommu_table_entry has a field 'depend' which contains the function
pointer to the IOMMU that MUST be run before us. We sort the array
of structures so that the struct iommu_table_entry with no
'depend' field are first, and then the subsequent ones are the
ones for which the 'depend' function has been already invoked
(in other words, precede us).

Using the kernel's version 'sort', which is a mergeheap is
feasible, but would require making the comparison operator
scan recursivly the array to satisfy the "heapify" process: setting the
levels properly. The end result would much more complex than it should
be an it is just much simpler to utilize this simple sort routine.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
LKML-Reference: <1282845485-8991-4-git-send-email-konrad.wilk@oracle.com>
CC: H. Peter Anvin <hpa@zytor.com>
CC: Fujita Tomonori <fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/include/asm/iommu_table.h
arch/x86/kernel/Makefile
arch/x86/kernel/pci-iommu_table.c [new file with mode: 0644]