x86: Move swiotlb initialization before dma32_free_bootmem
The commit 75f1cdf1dda92cae037ec848ae63690d91913eac introduced a bug that we initialize SWIOTLB right after dma32_free_bootmem so we wrongly steal memory area allocated for GART with broken BIOS earlier. This moves swiotlb initialization before dma32_free_bootmem(). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Cc: yinghai@kernel.org LKML-Reference: <1260759135-6450-2-git-send-email-fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
eba11d6da7
commit
f4780ca005
@ -120,11 +120,14 @@ static void __init dma32_free_bootmem(void)
|
|||||||
|
|
||||||
void __init pci_iommu_alloc(void)
|
void __init pci_iommu_alloc(void)
|
||||||
{
|
{
|
||||||
|
int use_swiotlb;
|
||||||
|
|
||||||
|
use_swiotlb = pci_swiotlb_init();
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
/* free the range so iommu could get some range less than 4G */
|
/* free the range so iommu could get some range less than 4G */
|
||||||
dma32_free_bootmem();
|
dma32_free_bootmem();
|
||||||
#endif
|
#endif
|
||||||
if (pci_swiotlb_init())
|
if (use_swiotlb)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gart_iommu_hole_init();
|
gart_iommu_hole_init();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user