Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 118643
b: refs/heads/master
c: 70e9067
h: refs/heads/master
i:
  118641: 73e9cea
  118639: c06db39
v: v3
  • Loading branch information
Alexey Dobriyan authored and David S. Miller committed Nov 7, 2008
1 parent ecf8724 commit ac82ab2
Show file tree
Hide file tree
Showing 80 changed files with 391 additions and 1,203 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 4694516d1987303dd83bfd0efdd36fa5b65d701b
refs/heads/master: 70e90679ffce0937deb77e2bd8bd918a24a897fd
2 changes: 1 addition & 1 deletion trunk/Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 28
EXTRAVERSION = -rc4
EXTRAVERSION = -rc3
NAME = Killer Bat of Doom

# *DOCUMENTATION*
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ config OPROFILE_IBS
Instruction-Based Sampling (IBS) is a new profiling
technique that provides rich, precise program performance
information. IBS is introduced by AMD Family10h processors
(AMD Opteron Quad-Core processor "Barcelona") to overcome
(AMD Opteron Quad-Core processor Barcelona) to overcome
the limitations of conventional performance counter
sampling.

Expand Down
19 changes: 9 additions & 10 deletions trunk/arch/ia64/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,6 @@ config IA64_GENERIC
select ACPI_NUMA
select SWIOTLB
select PCI_MSI
select DMAR
help
This selects the system type of your hardware. A "generic" kernel
will run on any supported IA-64 system. However, if you configure
Expand Down Expand Up @@ -586,7 +585,7 @@ source "fs/Kconfig.binfmt"

endmenu

menu "Power management and ACPI options"
menu "Power management and ACPI"

source "kernel/power/Kconfig"

Expand Down Expand Up @@ -642,8 +641,6 @@ source "net/Kconfig"

source "drivers/Kconfig"

source "arch/ia64/hp/sim/Kconfig"

config MSPEC
tristate "Memory special operations driver"
depends on IA64
Expand All @@ -655,12 +652,6 @@ config MSPEC

source "fs/Kconfig"

source "arch/ia64/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "arch/ia64/kvm/Kconfig"

source "lib/Kconfig"
Expand All @@ -687,3 +678,11 @@ config IRQ_PER_CPU

config IOMMU_HELPER
def_bool (IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB || IA64_GENERIC || SWIOTLB)

source "arch/ia64/hp/sim/Kconfig"

source "arch/ia64/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"
9 changes: 8 additions & 1 deletion trunk/arch/ia64/hp/common/hwsw_iommu.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,19 @@
*/

#include <linux/device.h>
#include <linux/swiotlb.h>

#include <asm/machvec.h>

/* swiotlb declarations & definitions: */
extern int swiotlb_late_init_with_default_size (size_t size);
extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent;
extern ia64_mv_dma_free_coherent swiotlb_free_coherent;
extern ia64_mv_dma_map_single_attrs swiotlb_map_single_attrs;
extern ia64_mv_dma_unmap_single_attrs swiotlb_unmap_single_attrs;
extern ia64_mv_dma_map_sg_attrs swiotlb_map_sg_attrs;
extern ia64_mv_dma_unmap_sg_attrs swiotlb_unmap_sg_attrs;
extern ia64_mv_dma_supported swiotlb_dma_supported;
extern ia64_mv_dma_mapping_error swiotlb_dma_mapping_error;

/* hwiommu declarations & definitions: */

Expand Down
24 changes: 24 additions & 0 deletions trunk/arch/ia64/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -434,4 +434,28 @@ extern void memset_io(volatile void __iomem *s, int c, long n);

# endif /* __KERNEL__ */

/*
* Enabling BIO_VMERGE_BOUNDARY forces us to turn off I/O MMU bypassing. It is said that
* BIO-level virtual merging can give up to 4% performance boost (not verified for ia64).
* On the other hand, we know that I/O MMU bypassing gives ~8% performance improvement on
* SPECweb-like workloads on zx1-based machines. Thus, for now we favor I/O MMU bypassing
* over BIO-level virtual merging.
*/
extern unsigned long ia64_max_iommu_merge_mask;
#if 1
#define BIO_VMERGE_BOUNDARY 0
#else
/*
* It makes no sense at all to have this BIO_VMERGE_BOUNDARY macro here. Should be
* replaced by dma_merge_mask() or something of that sort. Note: the only way
* BIO_VMERGE_BOUNDARY is used is to mask off bits. Effectively, our definition gets
* expanded into:
*
* addr & ((ia64_max_iommu_merge_mask + 1) - 1) == (addr & ia64_max_iommu_vmerge_mask)
*
* which is precisely what we want.
*/
#define BIO_VMERGE_BOUNDARY (ia64_max_iommu_merge_mask + 1)
#endif

#endif /* _ASM_IA64_IO_H */
22 changes: 21 additions & 1 deletion trunk/arch/ia64/include/asm/machvec.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
#define _ASM_IA64_MACHVEC_H

#include <linux/types.h>
#include <linux/swiotlb.h>

/* forward declarations: */
struct device;
Expand Down Expand Up @@ -298,6 +297,27 @@ extern void machvec_init_from_cmdline(const char *cmdline);
# error Unknown configuration. Update arch/ia64/include/asm/machvec.h.
# endif /* CONFIG_IA64_GENERIC */

/*
* Declare default routines which aren't declared anywhere else:
*/
extern ia64_mv_dma_init swiotlb_init;
extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent;
extern ia64_mv_dma_free_coherent swiotlb_free_coherent;
extern ia64_mv_dma_map_single swiotlb_map_single;
extern ia64_mv_dma_map_single_attrs swiotlb_map_single_attrs;
extern ia64_mv_dma_unmap_single swiotlb_unmap_single;
extern ia64_mv_dma_unmap_single_attrs swiotlb_unmap_single_attrs;
extern ia64_mv_dma_map_sg swiotlb_map_sg;
extern ia64_mv_dma_map_sg_attrs swiotlb_map_sg_attrs;
extern ia64_mv_dma_unmap_sg swiotlb_unmap_sg;
extern ia64_mv_dma_unmap_sg_attrs swiotlb_unmap_sg_attrs;
extern ia64_mv_dma_sync_single_for_cpu swiotlb_sync_single_for_cpu;
extern ia64_mv_dma_sync_sg_for_cpu swiotlb_sync_sg_for_cpu;
extern ia64_mv_dma_sync_single_for_device swiotlb_sync_single_for_device;
extern ia64_mv_dma_sync_sg_for_device swiotlb_sync_sg_for_device;
extern ia64_mv_dma_mapping_error swiotlb_dma_mapping_error;
extern ia64_mv_dma_supported swiotlb_dma_supported;

/*
* Define default versions so we can extend machvec for new platforms without having
* to update the machvec files for all existing platforms.
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/ia64/include/asm/meminit.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ extern int reserve_elfcorehdr(unsigned long *start, unsigned long *end);
*/
#define GRANULEROUNDDOWN(n) ((n) & ~(IA64_GRANULE_SIZE-1))
#define GRANULEROUNDUP(n) (((n)+IA64_GRANULE_SIZE-1) & ~(IA64_GRANULE_SIZE-1))
#define ORDERROUNDDOWN(n) ((n) & ~((PAGE_SIZE<<MAX_ORDER)-1))

#ifdef CONFIG_NUMA
extern void call_pernode_memory (unsigned long start, unsigned long len, void *func);
Expand Down
15 changes: 1 addition & 14 deletions trunk/arch/ia64/include/asm/sal.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,24 +337,11 @@ typedef struct sal_log_record_header {
#define sal_log_severity_fatal 1
#define sal_log_severity_corrected 2

/*
* Error Recovery Info (ERI) bit decode. From SAL Spec section B.2.2 Table B-3
* Error Section Error_Recovery_Info Field Definition.
*/
#define ERI_NOT_VALID 0x0 /* Error Recovery Field is not valid */
#define ERI_NOT_ACCESSIBLE 0x30 /* Resource not accessible */
#define ERI_CONTAINMENT_WARN 0x22 /* Corrupt data propagated */
#define ERI_UNCORRECTED_ERROR 0x20 /* Uncorrected error */
#define ERI_COMPONENT_RESET 0x24 /* Component must be reset */
#define ERI_CORR_ERROR_LOG 0x21 /* Corrected error, needs logging */
#define ERI_CORR_ERROR_THRESH 0x29 /* Corrected error threshold exceeded */

/* Definition of log section header structures */
typedef struct sal_log_sec_header {
efi_guid_t guid; /* Unique Section ID */
sal_log_revision_t revision; /* Major and Minor revision of Section */
u8 error_recovery_info; /* Platform error recovery status */
u8 reserved;
u16 reserved;
u32 len; /* Section length */
} sal_log_section_hdr_t;

Expand Down
45 changes: 0 additions & 45 deletions trunk/arch/ia64/include/asm/sn/sn_sal.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,6 @@
#define SN_SAL_SET_CPU_NUMBER 0x02000068

#define SN_SAL_KERNEL_LAUNCH_EVENT 0x02000069
#define SN_SAL_WATCHLIST_ALLOC 0x02000070
#define SN_SAL_WATCHLIST_FREE 0x02000071

/*
* Service-specific constants
Expand Down Expand Up @@ -1187,47 +1185,4 @@ ia64_sn_kernel_launch_event(void)
SAL_CALL_NOLOCK(rv, SN_SAL_KERNEL_LAUNCH_EVENT, 0, 0, 0, 0, 0, 0, 0);
return rv.status;
}

union sn_watchlist_u {
u64 val;
struct {
u64 blade : 16,
size : 32,
filler : 16;
};
};

static inline int
sn_mq_watchlist_alloc(int blade, void *mq, unsigned int mq_size,
unsigned long *intr_mmr_offset)
{
struct ia64_sal_retval rv;
unsigned long addr;
union sn_watchlist_u size_blade;
int watchlist;

addr = (unsigned long)mq;
size_blade.size = mq_size;
size_blade.blade = blade;

/*
* bios returns watchlist number or negative error number.
*/
ia64_sal_oemcall_nolock(&rv, SN_SAL_WATCHLIST_ALLOC, addr,
size_blade.val, (u64)intr_mmr_offset,
(u64)&watchlist, 0, 0, 0);
if (rv.status < 0)
return rv.status;

return watchlist;
}

static inline int
sn_mq_watchlist_free(int blade, int watchlist_num)
{
struct ia64_sal_retval rv;
ia64_sal_oemcall_nolock(&rv, SN_SAL_WATCHLIST_FREE, blade,
watchlist_num, 0, 0, 0, 0, 0);
return rv.status;
}
#endif /* _ASM_IA64_SN_SN_SAL_H */
29 changes: 5 additions & 24 deletions trunk/arch/ia64/kernel/acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -678,30 +678,6 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table)
return 0;
}

int __init early_acpi_boot_init(void)
{
int ret;

/*
* do a partial walk of MADT to determine how many CPUs
* we have including offline CPUs
*/
if (acpi_table_parse(ACPI_SIG_MADT, acpi_parse_madt)) {
printk(KERN_ERR PREFIX "Can't find MADT\n");
return 0;
}

ret = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC,
acpi_parse_lsapic, NR_CPUS);
if (ret < 1)
printk(KERN_ERR PREFIX
"Error parsing MADT - no LAPIC entries\n");

return 0;
}



int __init acpi_boot_init(void)
{

Expand All @@ -725,6 +701,11 @@ int __init acpi_boot_init(void)
printk(KERN_ERR PREFIX
"Error parsing LAPIC address override entry\n");

if (acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC, acpi_parse_lsapic, NR_CPUS)
< 1)
printk(KERN_ERR PREFIX
"Error parsing MADT - no LAPIC entries\n");

if (acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_NMI, acpi_parse_lapic_nmi, 0)
< 0)
printk(KERN_ERR PREFIX "Error parsing LAPIC NMI entry\n");
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/ia64/kernel/pci-dma.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@
#include <asm/machvec.h>
#include <linux/dma-mapping.h>

#include <asm/machvec.h>
#include <asm/system.h>

#ifdef CONFIG_DMAR

#include <linux/kernel.h>
#include <linux/string.h>

#include <asm/page.h>
#include <asm/iommu.h>
Expand Down
9 changes: 4 additions & 5 deletions trunk/arch/ia64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -359,7 +359,7 @@ reserve_memory (void)
}
#endif

#ifdef CONFIG_CRASH_DUMP
#ifdef CONFIG_CRASH_KERNEL
if (reserve_elfcorehdr(&rsvd_region[n].start,
&rsvd_region[n].end) == 0)
n++;
Expand Down Expand Up @@ -561,12 +561,8 @@ setup_arch (char **cmdline_p)
#ifdef CONFIG_ACPI
/* Initialize the ACPI boot-time table parser */
acpi_table_init();
early_acpi_boot_init();
# ifdef CONFIG_ACPI_NUMA
acpi_numa_init();
#ifdef CONFIG_ACPI_HOTPLUG_CPU
prefill_possible_map();
#endif
per_cpu_scan_finalize((cpus_weight(early_cpu_possible_map) == 0 ?
32 : cpus_weight(early_cpu_possible_map)),
additional_cpus > 0 ? additional_cpus : 0);
Expand Down Expand Up @@ -857,6 +853,9 @@ void __init
setup_per_cpu_areas (void)
{
/* start_kernel() requires this... */
#ifdef CONFIG_ACPI_HOTPLUG_CPU
prefill_possible_map();
#endif
}

/*
Expand Down
1 change: 1 addition & 0 deletions trunk/arch/ia64/mm/discontig.c
Original file line number Diff line number Diff line change
Expand Up @@ -635,6 +635,7 @@ static __init int count_node_pages(unsigned long start, unsigned long len, int n
(min(end, __pa(MAX_DMA_ADDRESS)) - start) >>PAGE_SHIFT;
#endif
start = GRANULEROUNDDOWN(start);
start = ORDERROUNDDOWN(start);
end = GRANULEROUNDUP(end);
mem_data[node].max_pfn = max(mem_data[node].max_pfn,
end >> PAGE_SHIFT);
Expand Down
6 changes: 0 additions & 6 deletions trunk/arch/ia64/uv/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,6 @@ EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info);

#ifdef CONFIG_IA64_SGI_UV
int sn_prom_type;
long sn_partition_id;
EXPORT_SYMBOL(sn_partition_id);
long sn_coherency_id;
EXPORT_SYMBOL_GPL(sn_coherency_id);
long sn_region_size;
EXPORT_SYMBOL(sn_region_size);
#endif

struct redir_addr {
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/x86/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -957,7 +957,7 @@ config ARCH_PHYS_ADDR_T_64BIT
config NUMA
bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)"
depends on SMP
depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && BROKEN)
depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || X86_BIGSMP || X86_SUMMIT && ACPI) && EXPERIMENTAL)
default n if X86_PC
default y if (X86_NUMAQ || X86_SUMMIT || X86_BIGSMP)
help
Expand Down
2 changes: 2 additions & 0 deletions trunk/arch/x86/include/asm/msr.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,9 @@ static __always_inline unsigned long long __native_read_tsc(void)
{
DECLARE_ARGS(val, low, high);

rdtsc_barrier();
asm volatile("rdtsc" : EAX_EDX_RET(val, low, high));
rdtsc_barrier();

return EAX_EDX_VAL(val, low, high);
}
Expand Down
Loading

0 comments on commit ac82ab2

Please sign in to comment.