Skip to content

Commit

Permalink
x86: Calgary: Convert detect_calgary() to use iommu_init hook
Browse files Browse the repository at this point in the history
This changes detect_calgary() to set init_calgary() to
iommu_init hook if detect_calgary() finds the Calgary IOMMU.

We can kill the code to check if we found the IOMMU in
init_calgary() since detect_calgary() sets init_calgary() only
when it found the IOMMU.

Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Acked-by: Muli Ben-Yehuda <muli@il.ibm.com>
Cc: chrisw@sous-sol.org
Cc: dwmw2@infradead.org
Cc: joerg.roedel@amd.com
LKML-Reference: <1257849980-22640-3-git-send-email-fujita.tomonori@lab.ntt.co.jp>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
FUJITA Tomonori authored and Ingo Molnar committed Nov 10, 2009
1 parent d07c1be commit d7b9f7b
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 10 deletions.
2 changes: 0 additions & 2 deletions arch/x86/include/asm/calgary.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,8 @@ struct cal_chipset_ops {
extern int use_calgary;

#ifdef CONFIG_CALGARY_IOMMU
extern int calgary_iommu_init(void);
extern void detect_calgary(void);
#else
static inline int calgary_iommu_init(void) { return 1; }
static inline void detect_calgary(void) { return; }
#endif

Expand Down
11 changes: 5 additions & 6 deletions arch/x86/kernel/pci-calgary_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
#include <asm/dma.h>
#include <asm/rio.h>
#include <asm/bios_ebda.h>
#include <asm/x86_init.h>

#ifdef CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT
int use_calgary __read_mostly = 1;
Expand Down Expand Up @@ -1344,6 +1345,8 @@ static void __init get_tce_space_from_tar(void)
return;
}

int __init calgary_iommu_init(void);

void __init detect_calgary(void)
{
int bus;
Expand Down Expand Up @@ -1445,6 +1448,8 @@ void __init detect_calgary(void)
/* swiotlb for devices that aren't behind the Calgary. */
if (max_pfn > MAX_DMA32_PFN)
swiotlb = 1;

x86_init.iommu.iommu_init = calgary_iommu_init;
}
return;

Expand All @@ -1461,12 +1466,6 @@ int __init calgary_iommu_init(void)
{
int ret;

if (no_iommu || (swiotlb && !calgary_detected))
return -ENODEV;

if (!calgary_detected)
return -ENODEV;

/* ok, we're trying to use Calgary - let's roll */
printk(KERN_INFO "PCI-DMA: Using Calgary IOMMU\n");

Expand Down
2 changes: 0 additions & 2 deletions arch/x86/kernel/pci-dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -294,8 +294,6 @@ static int __init pci_iommu_init(void)

x86_init.iommu.iommu_init();

calgary_iommu_init();

intel_iommu_init();

amd_iommu_init();
Expand Down

0 comments on commit d7b9f7b

Please sign in to comment.