svn commit: r244748 - projects/altix2/sys/ia64/ia64
Marcel Moolenaar
marcel at FreeBSD.org
Thu Dec 27 20:49:14 UTC 2012
Author: marcel
Date: Thu Dec 27 20:49:13 2012
New Revision: 244748
URL: http://svnweb.freebsd.org/changeset/base/244748
Log:
The local APIC memory address is set to 0 on Altix, because there's no
local APIC. Don't call pmap_mapdev() when the address is 0. Also use this
fact to determine whether to use the local APIC for IPIs or not.
Modified:
projects/altix2/sys/ia64/ia64/machdep.c
projects/altix2/sys/ia64/ia64/mp_machdep.c
Modified: projects/altix2/sys/ia64/ia64/machdep.c
==============================================================================
--- projects/altix2/sys/ia64/ia64/machdep.c Thu Dec 27 20:47:34 2012 (r244747)
+++ projects/altix2/sys/ia64/ia64/machdep.c Thu Dec 27 20:49:13 2012 (r244748)
@@ -134,7 +134,7 @@ vm_offset_t ia64_port_base;
u_int64_t ia64_lapic_addr = PAL_PIB_DEFAULT_ADDR;
-struct ia64_pib *ia64_pib;
+struct ia64_pib *ia64_pib = NULL;
static int ia64_sync_icache_needed;
@@ -285,7 +285,8 @@ cpu_startup(void *dummy)
* information.
*/
ia64_probe_sapics();
- ia64_pib = pmap_mapdev(ia64_lapic_addr, sizeof(*ia64_pib));
+ if (ia64_lapic_addr)
+ ia64_pib = pmap_mapdev(ia64_lapic_addr, sizeof(*ia64_pib));
ia64_mca_init();
Modified: projects/altix2/sys/ia64/ia64/mp_machdep.c
==============================================================================
--- projects/altix2/sys/ia64/ia64/mp_machdep.c Thu Dec 27 20:47:34 2012 (r244747)
+++ projects/altix2/sys/ia64/ia64/mp_machdep.c Thu Dec 27 20:49:13 2012 (r244748)
@@ -522,14 +522,15 @@ ipi_send(struct pcpu *cpu, int xiv)
sapic_id = IA64_LID_GET_SAPIC_ID(cpu->pc_md.lid);
-#if 0
- ipip = &(ia64_pib->ib_ipi[sapic_id][0]);
- ipi = xiv;
-#else
- ipip = (void *)(IA64_PHYS_TO_RR6(0x800000000UL) |
- ((u_long)cpu->pc_md.sgisn_nasid << 38) | 0x110000380UL);
- ipi = 0x80000001fdc00000UL | ((u_long)xiv << 52) | (sapic_id << 4);
-#endif
+ if (ia64_pib != NULL) {
+ ipip = &(ia64_pib->ib_ipi[sapic_id][0]);
+ ipi = xiv;
+ } else {
+ ipip = (void *)(IA64_PHYS_TO_RR6(0x800000000UL) |
+ ((u_long)cpu->pc_md.sgisn_nasid << 38) | 0x110000380UL);
+ ipi = 0x80000001fdc00000UL | ((u_long)xiv << 52) |
+ (sapic_id << 4);
+ }
ia64_mf();
ia64_st8(ipip, ipi);
More information about the svn-src-projects
mailing list