Commit e58b7dab authored by Linus Torvalds's avatar Linus Torvalds

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] Fix incorrect return value from ia64_setup_msi_irq()
  [IA64] arch/ia64/sn/kernel/mca.c: undo lock when sn_oemdata can't be extended
  [IA64] update sn2 defconfig to 64kb pages
  [IA64] fix typo in per_cpu_offset
  [IA64] /proc/cpuinfo "physical id" field cleanups
  [IA64] vDSO vs --build-id
  [IA64] check-segrel.lds vs --build-id
  [IA64] vmcore_find_descriptor_size should be in __init
  [IA64] ia64/mm/init.c: fix section mismatches
parents 71d00fec 3aff0373
This diff is collapsed.
...@@ -1231,7 +1231,7 @@ kdump_find_rsvd_region (unsigned long size, ...@@ -1231,7 +1231,7 @@ kdump_find_rsvd_region (unsigned long size,
#ifdef CONFIG_PROC_VMCORE #ifdef CONFIG_PROC_VMCORE
/* locate the size find a the descriptor at a certain address */ /* locate the size find a the descriptor at a certain address */
unsigned long unsigned long __init
vmcore_find_descriptor_size (unsigned long address) vmcore_find_descriptor_size (unsigned long address)
{ {
void *efi_map_start, *efi_map_end, *p; void *efi_map_start, *efi_map_end, *p;
......
...@@ -20,6 +20,8 @@ SECTIONS ...@@ -20,6 +20,8 @@ SECTIONS
.gnu.version_d : { *(.gnu.version_d) } .gnu.version_d : { *(.gnu.version_d) }
.gnu.version_r : { *(.gnu.version_r) } .gnu.version_r : { *(.gnu.version_r) }
.note : { *(.note*) } :readable :note
.dynamic : { *(.dynamic) } :readable :dynamic .dynamic : { *(.dynamic) } :readable :dynamic
/* /*
...@@ -83,6 +85,7 @@ PHDRS ...@@ -83,6 +85,7 @@ PHDRS
epc PT_LOAD FILEHDR PHDRS FLAGS(1); /* PF_X */ epc PT_LOAD FILEHDR PHDRS FLAGS(1); /* PF_X */
#endif #endif
dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ dynamic PT_DYNAMIC FLAGS(4); /* PF_R */
note PT_NOTE FLAGS(4); /* PF_R */
unwind PT_IA_64_UNWIND; unwind PT_IA_64_UNWIND;
} }
......
...@@ -109,7 +109,7 @@ int ia64_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc) ...@@ -109,7 +109,7 @@ int ia64_setup_msi_irq(struct pci_dev *pdev, struct msi_desc *desc)
write_msi_msg(irq, &msg); write_msi_msg(irq, &msg);
set_irq_chip_and_handler(irq, &ia64_msi_chip, handle_edge_irq); set_irq_chip_and_handler(irq, &ia64_msi_chip, handle_edge_irq);
return irq; return 0;
} }
void ia64_teardown_msi_irq(unsigned int irq) void ia64_teardown_msi_irq(unsigned int irq)
......
...@@ -417,34 +417,6 @@ mark_bsp_online (void) ...@@ -417,34 +417,6 @@ mark_bsp_online (void)
#endif #endif
} }
#ifdef CONFIG_SMP
static void __init
check_for_logical_procs (void)
{
pal_logical_to_physical_t info;
s64 status;
status = ia64_pal_logical_to_phys(0, &info);
if (status == -1) {
printk(KERN_INFO "No logical to physical processor mapping "
"available\n");
return;
}
if (status) {
printk(KERN_ERR "ia64_pal_logical_to_phys failed with %ld\n",
status);
return;
}
/*
* Total number of siblings that BSP has. Though not all of them
* may have booted successfully. The correct number of siblings
* booted is in info.overview_num_log.
*/
smp_num_siblings = info.overview_tpc;
smp_num_cpucores = info.overview_cpp;
}
#endif
static __initdata int nomca; static __initdata int nomca;
static __init int setup_nomca(char *s) static __init int setup_nomca(char *s)
{ {
...@@ -540,15 +512,6 @@ setup_arch (char **cmdline_p) ...@@ -540,15 +512,6 @@ setup_arch (char **cmdline_p)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
cpu_physical_id(0) = hard_smp_processor_id(); cpu_physical_id(0) = hard_smp_processor_id();
check_for_logical_procs();
if (smp_num_cpucores > 1)
printk(KERN_INFO
"cpu package is Multi-Core capable: number of cores=%d\n",
smp_num_cpucores);
if (smp_num_siblings > 1)
printk(KERN_INFO
"cpu package is Multi-Threading capable: number of siblings=%d\n",
smp_num_siblings);
#endif #endif
cpu_init(); /* initialize the bootstrap CPU */ cpu_init(); /* initialize the bootstrap CPU */
...@@ -661,12 +624,13 @@ show_cpuinfo (struct seq_file *m, void *v) ...@@ -661,12 +624,13 @@ show_cpuinfo (struct seq_file *m, void *v)
lpj*HZ/500000, (lpj*HZ/5000) % 100); lpj*HZ/500000, (lpj*HZ/5000) % 100);
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
seq_printf(m, "siblings : %u\n", cpus_weight(cpu_core_map[cpunum])); seq_printf(m, "siblings : %u\n", cpus_weight(cpu_core_map[cpunum]));
if (c->socket_id != -1)
seq_printf(m, "physical id: %u\n", c->socket_id);
if (c->threads_per_core > 1 || c->cores_per_socket > 1) if (c->threads_per_core > 1 || c->cores_per_socket > 1)
seq_printf(m, seq_printf(m,
"physical id: %u\n"
"core id : %u\n" "core id : %u\n"
"thread id : %u\n", "thread id : %u\n",
c->socket_id, c->core_id, c->thread_id); c->core_id, c->thread_id);
#endif #endif
seq_printf(m,"\n"); seq_printf(m,"\n");
...@@ -778,6 +742,9 @@ identify_cpu (struct cpuinfo_ia64 *c) ...@@ -778,6 +742,9 @@ identify_cpu (struct cpuinfo_ia64 *c)
c->socket_id = -1; c->socket_id = -1;
identify_siblings(c); identify_siblings(c);
if (c->threads_per_core > smp_num_siblings)
smp_num_siblings = c->threads_per_core;
#endif #endif
c->ppn = cpuid.field.ppn; c->ppn = cpuid.field.ppn;
c->number = cpuid.field.number; c->number = cpuid.field.number;
......
...@@ -142,7 +142,6 @@ DEFINE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map); ...@@ -142,7 +142,6 @@ DEFINE_PER_CPU_SHARED_ALIGNED(cpumask_t, cpu_sibling_map);
EXPORT_PER_CPU_SYMBOL(cpu_sibling_map); EXPORT_PER_CPU_SYMBOL(cpu_sibling_map);
int smp_num_siblings = 1; int smp_num_siblings = 1;
int smp_num_cpucores = 1;
/* which logical CPU number maps to which CPU (physical APIC ID) */ /* which logical CPU number maps to which CPU (physical APIC ID) */
volatile int ia64_cpu_to_sapicid[NR_CPUS]; volatile int ia64_cpu_to_sapicid[NR_CPUS];
...@@ -886,20 +885,28 @@ identify_siblings(struct cpuinfo_ia64 *c) ...@@ -886,20 +885,28 @@ identify_siblings(struct cpuinfo_ia64 *c)
u16 pltid; u16 pltid;
pal_logical_to_physical_t info; pal_logical_to_physical_t info;
if (smp_num_cpucores == 1 && smp_num_siblings == 1)
return;
if ((status = ia64_pal_logical_to_phys(-1, &info)) != PAL_STATUS_SUCCESS) { if ((status = ia64_pal_logical_to_phys(-1, &info)) != PAL_STATUS_SUCCESS) {
printk(KERN_ERR "ia64_pal_logical_to_phys failed with %ld\n", if (status != PAL_STATUS_UNIMPLEMENTED) {
printk(KERN_ERR
"ia64_pal_logical_to_phys failed with %ld\n",
status); status);
return; return;
} }
info.overview_ppid = 0;
info.overview_cpp = 1;
info.overview_tpc = 1;
}
if ((status = ia64_sal_physical_id_info(&pltid)) != PAL_STATUS_SUCCESS) { if ((status = ia64_sal_physical_id_info(&pltid)) != PAL_STATUS_SUCCESS) {
printk(KERN_ERR "ia64_sal_pltid failed with %ld\n", status); printk(KERN_ERR "ia64_sal_pltid failed with %ld\n", status);
return; return;
} }
c->socket_id = (pltid << 8) | info.overview_ppid; c->socket_id = (pltid << 8) | info.overview_ppid;
if (info.overview_cpp == 1 && info.overview_tpc == 1)
return;
c->cores_per_socket = info.overview_cpp; c->cores_per_socket = info.overview_cpp;
c->threads_per_core = info.overview_tpc; c->threads_per_core = info.overview_tpc;
c->num_log = info.overview_num_log; c->num_log = info.overview_num_log;
......
...@@ -472,7 +472,7 @@ struct memmap_init_callback_data { ...@@ -472,7 +472,7 @@ struct memmap_init_callback_data {
unsigned long zone; unsigned long zone;
}; };
static int static int __meminit
virtual_memmap_init (u64 start, u64 end, void *arg) virtual_memmap_init (u64 start, u64 end, void *arg)
{ {
struct memmap_init_callback_data *args; struct memmap_init_callback_data *args;
...@@ -503,7 +503,7 @@ virtual_memmap_init (u64 start, u64 end, void *arg) ...@@ -503,7 +503,7 @@ virtual_memmap_init (u64 start, u64 end, void *arg)
return 0; return 0;
} }
void void __meminit
memmap_init (unsigned long size, int nid, unsigned long zone, memmap_init (unsigned long size, int nid, unsigned long zone,
unsigned long start_pfn) unsigned long start_pfn)
{ {
......
SECTIONS { SECTIONS {
. = SIZEOF_HEADERS; . = SIZEOF_HEADERS;
.rodata : { *(.rodata) } :ro .rodata : { *(.rodata) } :ro
.note : { *(.note*) }
. = 0xa0000; . = 0xa0000;
.data : { *(.data) } :dat .data : { *(.data) } :dat
/DISCARD/ : { *(*) } /DISCARD/ : { *(*) }
......
...@@ -98,6 +98,7 @@ sn_platform_plat_specific_err_print(const u8 * sect_header, u8 ** oemdata, ...@@ -98,6 +98,7 @@ sn_platform_plat_specific_err_print(const u8 * sect_header, u8 ** oemdata,
while (*sn_oemdata_size > sn_oemdata_bufsize) { while (*sn_oemdata_size > sn_oemdata_bufsize) {
u8 *newbuf = vmalloc(*sn_oemdata_size); u8 *newbuf = vmalloc(*sn_oemdata_size);
if (!newbuf) { if (!newbuf) {
mutex_unlock(&sn_oemdata_mutex);
printk(KERN_ERR "%s: unable to extend sn_oemdata\n", printk(KERN_ERR "%s: unable to extend sn_oemdata\n",
__FUNCTION__); __FUNCTION__);
return 1; return 1;
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern unsigned long __per_cpu_offset[NR_CPUS]; extern unsigned long __per_cpu_offset[NR_CPUS];
#define per_cpu_offset(x) (__per_cpu_offset(x)) #define per_cpu_offset(x) (__per_cpu_offset[x])
/* Equal to __per_cpu_offset[smp_processor_id()], but faster to access: */ /* Equal to __per_cpu_offset[smp_processor_id()], but faster to access: */
DECLARE_PER_CPU(unsigned long, local_per_cpu_offset); DECLARE_PER_CPU(unsigned long, local_per_cpu_offset);
......
...@@ -60,7 +60,6 @@ extern cpumask_t cpu_online_map; ...@@ -60,7 +60,6 @@ extern cpumask_t cpu_online_map;
extern cpumask_t cpu_core_map[NR_CPUS]; extern cpumask_t cpu_core_map[NR_CPUS];
DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); DECLARE_PER_CPU(cpumask_t, cpu_sibling_map);
extern int smp_num_siblings; extern int smp_num_siblings;
extern int smp_num_cpucores;
extern void __iomem *ipi_base_addr; extern void __iomem *ipi_base_addr;
extern unsigned char smp_int_redirect; extern unsigned char smp_int_redirect;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment