Merge branches 'x86-platform-for-linus' and 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 platform changes from Ingo Molnar: "A handful of numachip APIC driver updates/fixes, and two small SGI/UV fixes" * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86: numachip: APIC driver cleanups x86: numachip: Elide self-IPI ICR polling x86: numachip: Fix 16-bit APIC ID truncation * 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86: UV BAU: Increase maximum CPUs per socket/hub x86: UV BAU: Avoid NULL pointer reference in ptc_seq_show
This commit is contained in:
Коммит
773fed910d
|
@ -33,8 +33,8 @@
|
|||
* Each of the descriptors is 64 bytes in size (8*64 = 512 bytes in a set).
|
||||
*/
|
||||
|
||||
#define MAX_CPUS_PER_UVHUB 64
|
||||
#define MAX_CPUS_PER_SOCKET 32
|
||||
#define MAX_CPUS_PER_UVHUB 128
|
||||
#define MAX_CPUS_PER_SOCKET 64
|
||||
#define ADP_SZ 64 /* hardware-provided max. */
|
||||
#define UV_CPUS_PER_AS 32 /* hardware-provided max. */
|
||||
#define ITEMS_PER_DESC 8
|
||||
|
|
|
@ -40,7 +40,7 @@ static unsigned int get_apic_id(unsigned long x)
|
|||
unsigned int id;
|
||||
|
||||
rdmsrl(MSR_FAM10H_NODE_ID, value);
|
||||
id = ((x >> 24) & 0xffU) | ((value << 2) & 0x3f00U);
|
||||
id = ((x >> 24) & 0xffU) | ((value << 2) & 0xff00U);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ static void numachip_send_IPI_all(int vector)
|
|||
|
||||
static void numachip_send_IPI_self(int vector)
|
||||
{
|
||||
__default_send_IPI_shortcut(APIC_DEST_SELF, vector, APIC_DEST_PHYSICAL);
|
||||
apic_write(APIC_SELF_IPI, vector);
|
||||
}
|
||||
|
||||
static int __init numachip_probe(void)
|
||||
|
@ -153,20 +153,8 @@ static int __init numachip_probe(void)
|
|||
return apic == &apic_numachip;
|
||||
}
|
||||
|
||||
static void __init map_csrs(void)
|
||||
{
|
||||
printk(KERN_INFO "NumaChip: Mapping local CSR space (%016llx - %016llx)\n",
|
||||
NUMACHIP_LCSR_BASE, NUMACHIP_LCSR_BASE + NUMACHIP_LCSR_SIZE - 1);
|
||||
init_extra_mapping_uc(NUMACHIP_LCSR_BASE, NUMACHIP_LCSR_SIZE);
|
||||
|
||||
printk(KERN_INFO "NumaChip: Mapping global CSR space (%016llx - %016llx)\n",
|
||||
NUMACHIP_GCSR_BASE, NUMACHIP_GCSR_BASE + NUMACHIP_GCSR_SIZE - 1);
|
||||
init_extra_mapping_uc(NUMACHIP_GCSR_BASE, NUMACHIP_GCSR_SIZE);
|
||||
}
|
||||
|
||||
static void fixup_cpu_id(struct cpuinfo_x86 *c, int node)
|
||||
{
|
||||
|
||||
if (c->phys_proc_id != node) {
|
||||
c->phys_proc_id = node;
|
||||
per_cpu(cpu_llc_id, smp_processor_id()) = node;
|
||||
|
@ -175,19 +163,15 @@ static void fixup_cpu_id(struct cpuinfo_x86 *c, int node)
|
|||
|
||||
static int __init numachip_system_init(void)
|
||||
{
|
||||
unsigned int val;
|
||||
|
||||
if (!numachip_system)
|
||||
return 0;
|
||||
|
||||
init_extra_mapping_uc(NUMACHIP_LCSR_BASE, NUMACHIP_LCSR_SIZE);
|
||||
init_extra_mapping_uc(NUMACHIP_GCSR_BASE, NUMACHIP_GCSR_SIZE);
|
||||
|
||||
x86_cpuinit.fixup_cpu_id = fixup_cpu_id;
|
||||
x86_init.pci.arch_init = pci_numachip_init;
|
||||
|
||||
map_csrs();
|
||||
|
||||
val = read_lcsr(CSR_G0_NODE_IDS);
|
||||
printk(KERN_INFO "NumaChip: Local NodeID = %08x\n", val);
|
||||
|
||||
return 0;
|
||||
}
|
||||
early_initcall(numachip_system_init);
|
||||
|
|
|
@ -103,7 +103,7 @@ static int pci_mmcfg_write_numachip(unsigned int seg, unsigned int bus,
|
|||
return 0;
|
||||
}
|
||||
|
||||
const struct pci_raw_ops pci_mmcfg_numachip = {
|
||||
static const struct pci_raw_ops pci_mmcfg_numachip = {
|
||||
.read = pci_mmcfg_read_numachip,
|
||||
.write = pci_mmcfg_write_numachip,
|
||||
};
|
||||
|
|
|
@ -1382,6 +1382,10 @@ static int ptc_seq_show(struct seq_file *file, void *data)
|
|||
}
|
||||
if (cpu < num_possible_cpus() && cpu_online(cpu)) {
|
||||
bcp = &per_cpu(bau_control, cpu);
|
||||
if (bcp->nobau) {
|
||||
seq_printf(file, "cpu %d bau disabled\n", cpu);
|
||||
return 0;
|
||||
}
|
||||
stat = bcp->statp;
|
||||
/* source side statistics */
|
||||
seq_printf(file,
|
||||
|
|
Загрузка…
Ссылка в новой задаче