diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 14:31:57 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-17 14:31:57 -0400 |
commit | 492559af235eb56884d62553f191c0b5c4def990 (patch) | |
tree | a5dfa19243b3b8b976e9f5b9c788cafcd3ad80c7 /arch/ia64/hp/common/sba_iommu.c | |
parent | d3676756968eef4a31da11be5addc4eec1b6db2c (diff) | |
parent | 4f8de2745629330d78776282ea490fece22ee5e4 (diff) |
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
[IA64] Clean away some code inside some non-existent CONFIG ifdefs
[IA64] ar.itc access must really be after xtime_lock.sequence has been read
[IA64] correctly count CPU objects in the ia64/sn hwperf interface
[IA64] arbitary speed tty ioctl support
[IA64] use machvec=dig on hpzx1 platforms
Diffstat (limited to 'arch/ia64/hp/common/sba_iommu.c')
-rw-r--r-- | arch/ia64/hp/common/sba_iommu.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index c1dca226b479..cd4adf52f174 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <linux/efi.h> | 34 | #include <linux/efi.h> |
35 | #include <linux/nodemask.h> | 35 | #include <linux/nodemask.h> |
36 | #include <linux/bitops.h> /* hweight64() */ | 36 | #include <linux/bitops.h> /* hweight64() */ |
37 | #include <linux/crash_dump.h> | ||
37 | 38 | ||
38 | #include <asm/delay.h> /* ia64_get_itc() */ | 39 | #include <asm/delay.h> /* ia64_get_itc() */ |
39 | #include <asm/io.h> | 40 | #include <asm/io.h> |
@@ -43,6 +44,8 @@ | |||
43 | 44 | ||
44 | #include <asm/acpi-ext.h> | 45 | #include <asm/acpi-ext.h> |
45 | 46 | ||
47 | extern int swiotlb_late_init_with_default_size (size_t size); | ||
48 | |||
46 | #define PFX "IOC: " | 49 | #define PFX "IOC: " |
47 | 50 | ||
48 | /* | 51 | /* |
@@ -2026,11 +2029,24 @@ sba_init(void) | |||
2026 | if (!ia64_platform_is("hpzx1") && !ia64_platform_is("hpzx1_swiotlb")) | 2029 | if (!ia64_platform_is("hpzx1") && !ia64_platform_is("hpzx1_swiotlb")) |
2027 | return 0; | 2030 | return 0; |
2028 | 2031 | ||
2032 | #if defined(CONFIG_IA64_GENERIC) && defined(CONFIG_CRASH_DUMP) | ||
2033 | /* If we are booting a kdump kernel, the sba_iommu will | ||
2034 | * cause devices that were not shutdown properly to MCA | ||
2035 | * as soon as they are turned back on. Our only option for | ||
2036 | * a successful kdump kernel boot is to use the swiotlb. | ||
2037 | */ | ||
2038 | if (elfcorehdr_addr < ELFCORE_ADDR_MAX) { | ||
2039 | if (swiotlb_late_init_with_default_size(64 * (1<<20)) != 0) | ||
2040 | panic("Unable to initialize software I/O TLB:" | ||
2041 | " Try machvec=dig boot option"); | ||
2042 | machvec_init("dig"); | ||
2043 | return 0; | ||
2044 | } | ||
2045 | #endif | ||
2046 | |||
2029 | acpi_bus_register_driver(&acpi_sba_ioc_driver); | 2047 | acpi_bus_register_driver(&acpi_sba_ioc_driver); |
2030 | if (!ioc_list) { | 2048 | if (!ioc_list) { |
2031 | #ifdef CONFIG_IA64_GENERIC | 2049 | #ifdef CONFIG_IA64_GENERIC |
2032 | extern int swiotlb_late_init_with_default_size (size_t size); | ||
2033 | |||
2034 | /* | 2050 | /* |
2035 | * If we didn't find something sba_iommu can claim, we | 2051 | * If we didn't find something sba_iommu can claim, we |
2036 | * need to setup the swiotlb and switch to the dig machvec. | 2052 | * need to setup the swiotlb and switch to the dig machvec. |