Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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] Reserve elfcorehdr memory in CONFIG_CRASH_DUMP
[IA64] fix boot panic caused by offline CPUs
[IA64] reorder Kconfig options to match x86
[IA64] Build VT-D iommu support into generic kernel
[IA64] remove dead BIO_VMERGE_BOUNDARY definition
[IA64] remove duplicated #include from pci-dma.c
[IA64] use common header for software IO/TLB
[IA64] fix the difference between node_mem_map and node_start_pfn
[IA64] Add error_recovery_info field to SAL section header
[IA64] Add UV watchlist support.
[IA64] Simplify SGI uv vs. sn2 driver issues

+106 -76
+10 -9
arch/ia64/Kconfig
··· 148 148 select ACPI_NUMA 149 149 select SWIOTLB 150 150 select PCI_MSI 151 + select DMAR 151 152 help 152 153 This selects the system type of your hardware. A "generic" kernel 153 154 will run on any supported IA-64 system. However, if you configure ··· 586 585 587 586 endmenu 588 587 589 - menu "Power management and ACPI" 588 + menu "Power management and ACPI options" 590 589 591 590 source "kernel/power/Kconfig" 592 591 ··· 642 641 643 642 source "drivers/Kconfig" 644 643 644 + source "arch/ia64/hp/sim/Kconfig" 645 + 645 646 config MSPEC 646 647 tristate "Memory special operations driver" 647 648 depends on IA64 ··· 654 651 otherwise say N. 655 652 656 653 source "fs/Kconfig" 654 + 655 + source "arch/ia64/Kconfig.debug" 656 + 657 + source "security/Kconfig" 658 + 659 + source "crypto/Kconfig" 657 660 658 661 source "arch/ia64/kvm/Kconfig" 659 662 ··· 687 678 688 679 config IOMMU_HELPER 689 680 def_bool (IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB || IA64_GENERIC || SWIOTLB) 690 - 691 - source "arch/ia64/hp/sim/Kconfig" 692 - 693 - source "arch/ia64/Kconfig.debug" 694 - 695 - source "security/Kconfig" 696 - 697 - source "crypto/Kconfig"
+1 -8
arch/ia64/hp/common/hwsw_iommu.c
··· 13 13 */ 14 14 15 15 #include <linux/device.h> 16 + #include <linux/swiotlb.h> 16 17 17 18 #include <asm/machvec.h> 18 19 19 20 /* swiotlb declarations & definitions: */ 20 21 extern int swiotlb_late_init_with_default_size (size_t size); 21 - extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; 22 - extern ia64_mv_dma_free_coherent swiotlb_free_coherent; 23 - extern ia64_mv_dma_map_single_attrs swiotlb_map_single_attrs; 24 - extern ia64_mv_dma_unmap_single_attrs swiotlb_unmap_single_attrs; 25 - extern ia64_mv_dma_map_sg_attrs swiotlb_map_sg_attrs; 26 - extern ia64_mv_dma_unmap_sg_attrs swiotlb_unmap_sg_attrs; 27 - extern ia64_mv_dma_supported swiotlb_dma_supported; 28 - extern ia64_mv_dma_mapping_error swiotlb_dma_mapping_error; 29 22 30 23 /* hwiommu declarations & definitions: */ 31 24
-24
arch/ia64/include/asm/io.h
··· 434 434 435 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 437 #endif /* _ASM_IA64_IO_H */
+1 -21
arch/ia64/include/asm/machvec.h
··· 11 11 #define _ASM_IA64_MACHVEC_H 12 12 13 13 #include <linux/types.h> 14 + #include <linux/swiotlb.h> 14 15 15 16 /* forward declarations: */ 16 17 struct device; ··· 297 296 # else 298 297 # error Unknown configuration. Update arch/ia64/include/asm/machvec.h. 299 298 # endif /* CONFIG_IA64_GENERIC */ 300 - 301 - /* 302 - * Declare default routines which aren't declared anywhere else: 303 - */ 304 - extern ia64_mv_dma_init swiotlb_init; 305 - extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; 306 - extern ia64_mv_dma_free_coherent swiotlb_free_coherent; 307 - extern ia64_mv_dma_map_single swiotlb_map_single; 308 - extern ia64_mv_dma_map_single_attrs swiotlb_map_single_attrs; 309 - extern ia64_mv_dma_unmap_single swiotlb_unmap_single; 310 - extern ia64_mv_dma_unmap_single_attrs swiotlb_unmap_single_attrs; 311 - extern ia64_mv_dma_map_sg swiotlb_map_sg; 312 - extern ia64_mv_dma_map_sg_attrs swiotlb_map_sg_attrs; 313 - extern ia64_mv_dma_unmap_sg swiotlb_unmap_sg; 314 - extern ia64_mv_dma_unmap_sg_attrs swiotlb_unmap_sg_attrs; 315 - extern ia64_mv_dma_sync_single_for_cpu swiotlb_sync_single_for_cpu; 316 - extern ia64_mv_dma_sync_sg_for_cpu swiotlb_sync_sg_for_cpu; 317 - extern ia64_mv_dma_sync_single_for_device swiotlb_sync_single_for_device; 318 - extern ia64_mv_dma_sync_sg_for_device swiotlb_sync_sg_for_device; 319 - extern ia64_mv_dma_mapping_error swiotlb_dma_mapping_error; 320 - extern ia64_mv_dma_supported swiotlb_dma_supported; 321 299 322 300 /* 323 301 * Define default versions so we can extend machvec for new platforms without having
-1
arch/ia64/include/asm/meminit.h
··· 48 48 */ 49 49 #define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1)) 50 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 52 #ifdef CONFIG_NUMA 54 53 extern void call_pernode_memory (unsigned long start, unsigned long len, void *func);
+14 -1
arch/ia64/include/asm/sal.h
··· 337 337 #define sal_log_severity_fatal 1 338 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 352 /* Definition of log section header structures */ 341 353 typedef struct sal_log_sec_header { 342 354 efi_guid_t guid; /* Unique Section ID */ 343 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 358 u32 len; /* Section length */ 346 359 } sal_log_section_hdr_t; 347 360
+45
arch/ia64/include/asm/sn/sn_sal.h
··· 90 90 #define SN_SAL_SET_CPU_NUMBER 0x02000068 91 91 92 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 97 * Service-specific constants ··· 1185 1183 { 1186 1184 struct ia64_sal_retval rv; 1187 1185 SAL_CALL_NOLOCK(rv, SN_SAL_KERNEL_LAUNCH_EVENT, 0, 0, 0, 0, 0, 0, 0); 1186 + return rv.status; 1187 + } 1188 + 1189 + union sn_watchlist_u { 1190 + u64 val; 1191 + struct { 1192 + u64 blade : 16, 1193 + size : 32, 1194 + filler : 16; 1195 + }; 1196 + }; 1197 + 1198 + static inline int 1199 + sn_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size, 1200 + unsigned long *intr_mmr_offset) 1201 + { 1202 + struct ia64_sal_retval rv; 1203 + unsigned long addr; 1204 + union sn_watchlist_u size_blade; 1205 + int watchlist; 1206 + 1207 + addr = (unsigned long)mq; 1208 + size_blade.size = mq_size; 1209 + size_blade.blade = blade; 1210 + 1211 + /* 1212 + * bios returns watchlist number or negative error number. 1213 + */ 1214 + ia64_sal_oemcall_nolock(&rv, SN_SAL_WATCHLIST_ALLOC, addr, 1215 + size_blade.val, (u64)intr_mmr_offset, 1216 + (u64)&watchlist, 0, 0, 0); 1217 + if (rv.status < 0) 1218 + return rv.status; 1219 + 1220 + return watchlist; 1221 + } 1222 + 1223 + static inline int 1224 + sn_mq_watchlist_free(int blade, int watchlist_num) 1225 + { 1226 + struct ia64_sal_retval rv; 1227 + ia64_sal_oemcall_nolock(&rv, SN_SAL_WATCHLIST_FREE, blade, 1228 + watchlist_num, 0, 0, 0, 0, 0); 1188 1229 return rv.status; 1189 1230 } 1190 1231 #endif /* _ASM_IA64_SN_SN_SAL_H */
+24 -5
arch/ia64/kernel/acpi.c
··· 678 678 return 0; 679 679 } 680 680 681 + int __init early_acpi_boot_init(void) 682 + { 683 + int ret; 684 + 685 + /* 686 + * do a partial walk of MADT to determine how many CPUs 687 + * we have including offline CPUs 688 + */ 689 + if (acpi_table_parse(ACPI_SIG_MADT, acpi_parse_madt)) { 690 + printk(KERN_ERR PREFIX "Can't find MADT\n"); 691 + return 0; 692 + } 693 + 694 + ret = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC, 695 + acpi_parse_lsapic, NR_CPUS); 696 + if (ret < 1) 697 + printk(KERN_ERR PREFIX 698 + "Error parsing MADT - no LAPIC entries\n"); 699 + 700 + return 0; 701 + } 702 + 703 + 704 + 681 705 int __init acpi_boot_init(void) 682 706 { 683 707 ··· 724 700 (ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE, acpi_parse_lapic_addr_ovr, 0) < 0) 725 701 printk(KERN_ERR PREFIX 726 702 "Error parsing LAPIC address override entry\n"); 727 - 728 - if (acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC, acpi_parse_lsapic, NR_CPUS) 729 - < 1) 730 - printk(KERN_ERR PREFIX 731 - "Error parsing MADT - no LAPIC entries\n"); 732 703 733 704 if (acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_NMI, acpi_parse_lapic_nmi, 0) 734 705 < 0)
-2
arch/ia64/kernel/pci-dma.c
··· 12 12 #include <asm/machvec.h> 13 13 #include <linux/dma-mapping.h> 14 14 15 - #include <asm/machvec.h> 16 15 #include <asm/system.h> 17 16 18 17 #ifdef CONFIG_DMAR 19 18 20 19 #include <linux/kernel.h> 21 - #include <linux/string.h> 22 20 23 21 #include <asm/page.h> 24 22 #include <asm/iommu.h>
+5 -4
arch/ia64/kernel/setup.c
··· 359 359 } 360 360 #endif 361 361 362 - #ifdef CONFIG_CRASH_KERNEL 362 + #ifdef CONFIG_CRASH_DUMP 363 363 if (reserve_elfcorehdr(&rsvd_region[n].start, 364 364 &rsvd_region[n].end) == 0) 365 365 n++; ··· 561 561 #ifdef CONFIG_ACPI 562 562 /* Initialize the ACPI boot-time table parser */ 563 563 acpi_table_init(); 564 + early_acpi_boot_init(); 564 565 # ifdef CONFIG_ACPI_NUMA 565 566 acpi_numa_init(); 567 + #ifdef CONFIG_ACPI_HOTPLUG_CPU 568 + prefill_possible_map(); 569 + #endif 566 570 per_cpu_scan_finalize((cpus_weight(early_cpu_possible_map) == 0 ? 567 571 32 : cpus_weight(early_cpu_possible_map)), 568 572 additional_cpus > 0 ? additional_cpus : 0); ··· 857 853 setup_per_cpu_areas (void) 858 854 { 859 855 /* start_kernel() requires this... */ 860 - #ifdef CONFIG_ACPI_HOTPLUG_CPU 861 - prefill_possible_map(); 862 - #endif 863 856 } 864 857 865 858 /*
-1
arch/ia64/mm/discontig.c
··· 635 635 (min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT; 636 636 #endif 637 637 start = GRANULEROUNDDOWN(start); 638 - start = ORDERROUNDDOWN(start); 639 638 end = GRANULEROUNDUP(end); 640 639 mem_data[node].max_pfn = max(mem_data[node].max_pfn, 641 640 end >> PAGE_SHIFT);
+6
arch/ia64/uv/kernel/setup.c
··· 19 19 20 20 #ifdef CONFIG_IA64_SGI_UV 21 21 int sn_prom_type; 22 + long sn_partition_id; 23 + EXPORT_SYMBOL(sn_partition_id); 24 + long sn_coherency_id; 25 + EXPORT_SYMBOL_GPL(sn_coherency_id); 26 + long sn_region_size; 27 + EXPORT_SYMBOL(sn_region_size); 22 28 #endif 23 29 24 30 struct redir_addr {