Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 62440
b: refs/heads/master
c: bc2cea6
h: refs/heads/master
v: v3
  • Loading branch information
Yinghai Lu authored and Linus Torvalds committed Jul 22, 2007
1 parent 0dbe477 commit 2f83e14
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 48dd9343d0bb54362a2ba65380fea7c8f07f9e74
refs/heads/master: bc2cea6a34fdb30f118ec75db39a46a191870607
5 changes: 5 additions & 0 deletions trunk/arch/x86_64/kernel/pci-dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -321,6 +321,11 @@ static int __init pci_iommu_init(void)
return 0;
}

void pci_iommu_shutdown(void)
{
gart_iommu_shutdown();
}

#ifdef CONFIG_PCI
/* Many VIA bridges seem to corrupt data for DAC. Disable it here */

Expand Down
20 changes: 20 additions & 0 deletions trunk/arch/x86_64/kernel/pci-gart.c
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,26 @@ static const struct dma_mapping_ops gart_dma_ops = {
.unmap_sg = gart_unmap_sg,
};

void gart_iommu_shutdown(void)
{
struct pci_dev *dev;
int i;

if (no_agp && (dma_ops != &gart_dma_ops))
return;

for (i = 0; i < num_k8_northbridges; i++) {
u32 ctl;

dev = k8_northbridges[i];
pci_read_config_dword(dev, 0x90, &ctl);

ctl &= ~1;

pci_write_config_dword(dev, 0x90, ctl);
}
}

void __init gart_iommu_init(void)
{
struct agp_kern_info info;
Expand Down
4 changes: 4 additions & 0 deletions trunk/arch/x86_64/kernel/reboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <asm/pgtable.h>
#include <asm/tlbflush.h>
#include <asm/apic.h>
#include <asm/proto.h>

/*
* Power off function, if any
Expand Down Expand Up @@ -81,6 +82,7 @@ static inline void kb_wait(void)
void machine_shutdown(void)
{
unsigned long flags;

/* Stop the cpus and apics */
#ifdef CONFIG_SMP
int reboot_cpu_id;
Expand Down Expand Up @@ -111,6 +113,8 @@ void machine_shutdown(void)
disable_IO_APIC();

local_irq_restore(flags);

pci_iommu_shutdown();
}

void machine_emergency_restart(void)
Expand Down
7 changes: 7 additions & 0 deletions trunk/include/asm-x86_64/proto.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,11 +85,13 @@ extern int exception_trace;
extern unsigned cpu_khz;
extern unsigned tsc_khz;

extern void pci_iommu_shutdown(void);
extern void no_iommu_init(void);
extern int force_iommu, no_iommu;
extern int iommu_detected;
#ifdef CONFIG_IOMMU
extern void gart_iommu_init(void);
extern void gart_iommu_shutdown(void);
extern void __init gart_parse_options(char *);
extern void iommu_hole_init(void);
extern int fallback_aper_order;
Expand All @@ -101,6 +103,11 @@ extern int fix_aperture;
#else
#define iommu_aperture 0
#define iommu_aperture_allowed 0

static inline void gart_iommu_shutdown(void)
{
}

#endif

extern int reboot_force;
Expand Down

0 comments on commit 2f83e14

Please sign in to comment.