diff options
| author | Ingo Molnar <mingo@elte.hu> | 2008-11-10 03:16:27 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2008-11-10 03:16:27 -0500 |
| commit | 4ecd33d930591d41fe356160593a9076467b961c (patch) | |
| tree | b9051a334540bbce38db1b2b03cebb4cf1d51f73 /arch/ia64/include | |
| parent | 7d5a78cd98c3a5eb83bd6a061c5ea6ef1e9b8fcb (diff) | |
| parent | f7160c7573615ec82c691e294cf80d920b5d588d (diff) | |
Merge commit 'v2.6.28-rc4' into x86/apic
Diffstat (limited to 'arch/ia64/include')
| -rw-r--r-- | arch/ia64/include/asm/io.h | 24 | ||||
| -rw-r--r-- | arch/ia64/include/asm/iommu.h | 1 | ||||
| -rw-r--r-- | arch/ia64/include/asm/kvm_host.h | 6 | ||||
| -rw-r--r-- | arch/ia64/include/asm/machvec.h | 22 | ||||
| -rw-r--r-- | arch/ia64/include/asm/meminit.h | 1 | ||||
| -rw-r--r-- | arch/ia64/include/asm/sal.h | 15 | ||||
| -rw-r--r-- | arch/ia64/include/asm/sn/sn_sal.h | 45 |
7 files changed, 65 insertions, 49 deletions
diff --git a/arch/ia64/include/asm/io.h b/arch/ia64/include/asm/io.h index 7f257507cd86..0d9d16e2d949 100644 --- a/arch/ia64/include/asm/io.h +++ b/arch/ia64/include/asm/io.h | |||
| @@ -434,28 +434,4 @@ extern void memset_io(volatile void __iomem *s, int c, long n); | |||
| 434 | 434 | ||
| 435 | # endif /* __KERNEL__ */ | 435 | # endif /* __KERNEL__ */ |
| 436 | 436 | ||
| 437 | /* | ||
| 438 | * Enabling BIO_VMERGE_BOUNDARY forces us to turn off I/O MMU bypassing. It is said that | ||
| 439 | * BIO-level virtual merging can give up to 4% performance boost (not verified for ia64). | ||
| 440 | * On the other hand, we know that I/O MMU bypassing gives ~8% performance improvement on | ||
| 441 | * SPECweb-like workloads on zx1-based machines. Thus, for now we favor I/O MMU bypassing | ||
| 442 | * over BIO-level virtual merging. | ||
| 443 | */ | ||
| 444 | extern unsigned long ia64_max_iommu_merge_mask; | ||
| 445 | #if 1 | ||
| 446 | #define BIO_VMERGE_BOUNDARY 0 | ||
| 447 | #else | ||
| 448 | /* | ||
| 449 | * It makes no sense at all to have this BIO_VMERGE_BOUNDARY macro here. Should be | ||
| 450 | * replaced by dma_merge_mask() or something of that sort. Note: the only way | ||
| 451 | * BIO_VMERGE_BOUNDARY is used is to mask off bits. Effectively, our definition gets | ||
| 452 | * expanded into: | ||
| 453 | * | ||
| 454 | * addr & ((ia64_max_iommu_merge_mask + 1) - 1) == (addr & ia64_max_iommu_vmerge_mask) | ||
| 455 | * | ||
| 456 | * which is precisely what we want. | ||
| 457 | */ | ||
| 458 | #define BIO_VMERGE_BOUNDARY (ia64_max_iommu_merge_mask + 1) | ||
| 459 | #endif | ||
| 460 | |||
| 461 | #endif /* _ASM_IA64_IO_H */ | 437 | #endif /* _ASM_IA64_IO_H */ |
diff --git a/arch/ia64/include/asm/iommu.h b/arch/ia64/include/asm/iommu.h index 5fb2bb93de3b..0490794fe4aa 100644 --- a/arch/ia64/include/asm/iommu.h +++ b/arch/ia64/include/asm/iommu.h | |||
| @@ -11,6 +11,5 @@ extern int force_iommu, no_iommu; | |||
| 11 | extern int iommu_detected; | 11 | extern int iommu_detected; |
| 12 | extern void iommu_dma_init(void); | 12 | extern void iommu_dma_init(void); |
| 13 | extern void machvec_init(const char *name); | 13 | extern void machvec_init(const char *name); |
| 14 | extern int forbid_dac; | ||
| 15 | 14 | ||
| 16 | #endif | 15 | #endif |
diff --git a/arch/ia64/include/asm/kvm_host.h b/arch/ia64/include/asm/kvm_host.h index 85db124d37f6..c60d324da540 100644 --- a/arch/ia64/include/asm/kvm_host.h +++ b/arch/ia64/include/asm/kvm_host.h | |||
| @@ -365,7 +365,8 @@ struct kvm_vcpu_arch { | |||
| 365 | long itc_offset; | 365 | long itc_offset; |
| 366 | unsigned long itc_check; | 366 | unsigned long itc_check; |
| 367 | unsigned long timer_check; | 367 | unsigned long timer_check; |
| 368 | unsigned long timer_pending; | 368 | unsigned int timer_pending; |
| 369 | unsigned int timer_fired; | ||
| 369 | 370 | ||
| 370 | unsigned long vrr[8]; | 371 | unsigned long vrr[8]; |
| 371 | unsigned long ibr[8]; | 372 | unsigned long ibr[8]; |
| @@ -417,6 +418,9 @@ struct kvm_arch { | |||
| 417 | struct list_head assigned_dev_head; | 418 | struct list_head assigned_dev_head; |
| 418 | struct dmar_domain *intel_iommu_domain; | 419 | struct dmar_domain *intel_iommu_domain; |
| 419 | struct hlist_head irq_ack_notifier_list; | 420 | struct hlist_head irq_ack_notifier_list; |
| 421 | |||
| 422 | unsigned long irq_sources_bitmap; | ||
| 423 | unsigned long irq_states[KVM_IOAPIC_NUM_PINS]; | ||
| 420 | }; | 424 | }; |
| 421 | 425 | ||
| 422 | union cpuid3_t { | 426 | union cpuid3_t { |
diff --git a/arch/ia64/include/asm/machvec.h b/arch/ia64/include/asm/machvec.h index 1ea28bcee33b..59c17e446683 100644 --- a/arch/ia64/include/asm/machvec.h +++ b/arch/ia64/include/asm/machvec.h | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #define _ASM_IA64_MACHVEC_H | 11 | #define _ASM_IA64_MACHVEC_H |
| 12 | 12 | ||
| 13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
| 14 | #include <linux/swiotlb.h> | ||
| 14 | 15 | ||
| 15 | /* forward declarations: */ | 16 | /* forward declarations: */ |
| 16 | struct device; | 17 | struct device; |
| @@ -298,27 +299,6 @@ extern void machvec_init_from_cmdline(const char *cmdline); | |||
| 298 | # endif /* CONFIG_IA64_GENERIC */ | 299 | # endif /* CONFIG_IA64_GENERIC */ |
| 299 | 300 | ||
| 300 | /* | 301 | /* |
| 301 | * Declare default routines which aren't declared anywhere else: | ||
| 302 | */ | ||
| 303 | extern ia64_mv_dma_init swiotlb_init; | ||
| 304 | extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; | ||
| 305 | extern ia64_mv_dma_free_coherent swiotlb_free_coherent; | ||
| 306 | extern ia64_mv_dma_map_single swiotlb_map_single; | ||
| 307 | extern ia64_mv_dma_map_single_attrs swiotlb_map_single_attrs; | ||
| 308 | extern ia64_mv_dma_unmap_single swiotlb_unmap_single; | ||
| 309 | extern ia64_mv_dma_unmap_single_attrs swiotlb_unmap_single_attrs; | ||
| 310 | extern ia64_mv_dma_map_sg swiotlb_map_sg; | ||
| 311 | extern ia64_mv_dma_map_sg_attrs swiotlb_map_sg_attrs; | ||
| 312 | extern ia64_mv_dma_unmap_sg swiotlb_unmap_sg; | ||
| 313 | extern ia64_mv_dma_unmap_sg_attrs swiotlb_unmap_sg_attrs; | ||
| 314 | extern ia64_mv_dma_sync_single_for_cpu swiotlb_sync_single_for_cpu; | ||
| 315 | extern ia64_mv_dma_sync_sg_for_cpu swiotlb_sync_sg_for_cpu; | ||
| 316 | extern ia64_mv_dma_sync_single_for_device swiotlb_sync_single_for_device; | ||
| 317 | extern ia64_mv_dma_sync_sg_for_device swiotlb_sync_sg_for_device; | ||
| 318 | extern ia64_mv_dma_mapping_error swiotlb_dma_mapping_error; | ||
| 319 | extern ia64_mv_dma_supported swiotlb_dma_supported; | ||
| 320 | |||
| 321 | /* | ||
| 322 | * Define default versions so we can extend machvec for new platforms without having | 302 | * Define default versions so we can extend machvec for new platforms without having |
| 323 | * to update the machvec files for all existing platforms. | 303 | * to update the machvec files for all existing platforms. |
| 324 | */ | 304 | */ |
diff --git a/arch/ia64/include/asm/meminit.h b/arch/ia64/include/asm/meminit.h index 6bc96ee54327..c0cea375620a 100644 --- a/arch/ia64/include/asm/meminit.h +++ b/arch/ia64/include/asm/meminit.h | |||
| @@ -48,7 +48,6 @@ extern int reserve_elfcorehdr(unsigned long *start, unsigned long *end); | |||
| 48 | */ | 48 | */ |
| 49 | #define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1)) | 49 | #define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1)) |
| 50 | #define GRANULEROUNDUP(n) (((n)+IA64_GRANULE_SIZE-1) & ~(IA64_GRANULE_SIZE-1)) | 50 | #define GRANULEROUNDUP(n) (((n)+IA64_GRANULE_SIZE-1) & ~(IA64_GRANULE_SIZE-1)) |
| 51 | #define ORDERROUNDDOWN(n) ((n) & ~((PAGE_SIZE<<MAX_ORDER)-1)) | ||
| 52 | 51 | ||
| 53 | #ifdef CONFIG_NUMA | 52 | #ifdef CONFIG_NUMA |
| 54 | extern void call_pernode_memory (unsigned long start, unsigned long len, void *func); | 53 | extern void call_pernode_memory (unsigned long start, unsigned long len, void *func); |
diff --git a/arch/ia64/include/asm/sal.h b/arch/ia64/include/asm/sal.h index ea310c0812aa..966797a97c94 100644 --- a/arch/ia64/include/asm/sal.h +++ b/arch/ia64/include/asm/sal.h | |||
| @@ -337,11 +337,24 @@ typedef struct sal_log_record_header { | |||
| 337 | #define sal_log_severity_fatal 1 | 337 | #define sal_log_severity_fatal 1 |
| 338 | #define sal_log_severity_corrected 2 | 338 | #define sal_log_severity_corrected 2 |
| 339 | 339 | ||
| 340 | /* | ||
| 341 | * Error Recovery Info (ERI) bit decode. From SAL Spec section B.2.2 Table B-3 | ||
| 342 | * Error Section Error_Recovery_Info Field Definition. | ||
| 343 | */ | ||
| 344 | #define ERI_NOT_VALID 0x0 /* Error Recovery Field is not valid */ | ||
| 345 | #define ERI_NOT_ACCESSIBLE 0x30 /* Resource not accessible */ | ||
| 346 | #define ERI_CONTAINMENT_WARN 0x22 /* Corrupt data propagated */ | ||
| 347 | #define ERI_UNCORRECTED_ERROR 0x20 /* Uncorrected error */ | ||
| 348 | #define ERI_COMPONENT_RESET 0x24 /* Component must be reset */ | ||
| 349 | #define ERI_CORR_ERROR_LOG 0x21 /* Corrected error, needs logging */ | ||
| 350 | #define ERI_CORR_ERROR_THRESH 0x29 /* Corrected error threshold exceeded */ | ||
| 351 | |||
| 340 | /* Definition of log section header structures */ | 352 | /* Definition of log section header structures */ |
| 341 | typedef struct sal_log_sec_header { | 353 | typedef struct sal_log_sec_header { |
| 342 | efi_guid_t guid; /* Unique Section ID */ | 354 | efi_guid_t guid; /* Unique Section ID */ |
| 343 | sal_log_revision_t revision; /* Major and Minor revision of Section */ | 355 | sal_log_revision_t revision; /* Major and Minor revision of Section */ |
| 344 | u16 reserved; | 356 | u8 error_recovery_info; /* Platform error recovery status */ |
| 357 | u8 reserved; | ||
| 345 | u32 len; /* Section length */ | 358 | u32 len; /* Section length */ |
| 346 | } sal_log_section_hdr_t; | 359 | } sal_log_section_hdr_t; |
| 347 | 360 | ||
diff --git a/arch/ia64/include/asm/sn/sn_sal.h b/arch/ia64/include/asm/sn/sn_sal.h index 57e649d388b8..e310fc0135dc 100644 --- a/arch/ia64/include/asm/sn/sn_sal.h +++ b/arch/ia64/include/asm/sn/sn_sal.h | |||
| @@ -90,6 +90,8 @@ | |||
| 90 | #define SN_SAL_SET_CPU_NUMBER 0x02000068 | 90 | #define SN_SAL_SET_CPU_NUMBER 0x02000068 |
| 91 | 91 | ||
| 92 | #define SN_SAL_KERNEL_LAUNCH_EVENT 0x02000069 | 92 | #define SN_SAL_KERNEL_LAUNCH_EVENT 0x02000069 |
| 93 | #define SN_SAL_WATCHLIST_ALLOC 0x02000070 | ||
| 94 | #define SN_SAL_WATCHLIST_FREE 0x02000071 | ||
| 93 | 95 | ||
| 94 | /* | 96 | /* |
| 95 | * Service-specific constants | 97 | * Service-specific constants |
| @@ -1185,4 +1187,47 @@ ia64_sn_kernel_launch_event(void) | |||
| 1185 | SAL_CALL_NOLOCK(rv, SN_SAL_KERNEL_LAUNCH_EVENT, 0, 0, 0, 0, 0, 0, 0); | 1187 | SAL_CALL_NOLOCK(rv, SN_SAL_KERNEL_LAUNCH_EVENT, 0, 0, 0, 0, 0, 0, 0); |
| 1186 | return rv.status; | 1188 | return rv.status; |
| 1187 | } | 1189 | } |
| 1190 | |||
| 1191 | union sn_watchlist_u { | ||
| 1192 | u64 val; | ||
| 1193 | struct { | ||
| 1194 | u64 blade : 16, | ||
| 1195 | size : 32, | ||
| 1196 | filler : 16; | ||
| 1197 | }; | ||
| 1198 | }; | ||
| 1199 | |||
| 1200 | static inline int | ||
| 1201 | sn_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size, | ||
| 1202 | unsigned long *intr_mmr_offset) | ||
| 1203 | { | ||
| 1204 | struct ia64_sal_retval rv; | ||
| 1205 | unsigned long addr; | ||
| 1206 | union sn_watchlist_u size_blade; | ||
| 1207 | int watchlist; | ||
| 1208 | |||
| 1209 | addr = (unsigned long)mq; | ||
| 1210 | size_blade.size = mq_size; | ||
| 1211 | size_blade.blade = blade; | ||
| 1212 | |||
| 1213 | /* | ||
| 1214 | * bios returns watchlist number or negative error number. | ||
| 1215 | */ | ||
| 1216 | ia64_sal_oemcall_nolock(&rv, SN_SAL_WATCHLIST_ALLOC, addr, | ||
| 1217 | size_blade.val, (u64)intr_mmr_offset, | ||
| 1218 | (u64)&watchlist, 0, 0, 0); | ||
| 1219 | if (rv.status < 0) | ||
| 1220 | return rv.status; | ||
| 1221 | |||
| 1222 | return watchlist; | ||
| 1223 | } | ||
| 1224 | |||
| 1225 | static inline int | ||
| 1226 | sn_mq_watchlist_free(int blade, int watchlist_num) | ||
| 1227 | { | ||
| 1228 | struct ia64_sal_retval rv; | ||
| 1229 | ia64_sal_oemcall_nolock(&rv, SN_SAL_WATCHLIST_FREE, blade, | ||
| 1230 | watchlist_num, 0, 0, 0, 0, 0); | ||
| 1231 | return rv.status; | ||
| 1232 | } | ||
| 1188 | #endif /* _ASM_IA64_SN_SN_SAL_H */ | 1233 | #endif /* _ASM_IA64_SN_SN_SAL_H */ |
