Date: Fri, 4 Oct 2013 01:42:28 +0000 (UTC) From: "Cherry G. Mathew" <cherry@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r256036 - in projects/amd64_xen_pv/sys: amd64/include amd64/xen conf Message-ID: <201310040142.r941gS0Y074362@svn.freebsd.org>
index | next in thread | raw e-mail
Author: cherry Date: Fri Oct 4 01:42:27 2013 New Revision: 256036 URL: http://svnweb.freebsd.org/changeset/base/256036 Log: Glue in cpu enumeration without -DSMP. This is a shim for until we get an MP build for amd64 pv. Approved by: gibbs(implicit) Modified: projects/amd64_xen_pv/sys/amd64/include/smp.h projects/amd64_xen_pv/sys/amd64/xen/machdep.c projects/amd64_xen_pv/sys/conf/files.amd64 Modified: projects/amd64_xen_pv/sys/amd64/include/smp.h ============================================================================== --- projects/amd64_xen_pv/sys/amd64/include/smp.h Fri Oct 4 01:39:20 2013 (r256035) +++ projects/amd64_xen_pv/sys/amd64/include/smp.h Fri Oct 4 01:42:27 2013 (r256036) @@ -90,5 +90,10 @@ void smp_masked_invltlb(cpuset_t mask, s #endif /* !LOCORE */ #endif /* SMP */ +#ifdef XEN +/* XXX: shim - remove when we get -D SMP */ +void cpu_add(u_int apic_id, char boot_cpu); +#endif + #endif /* _KERNEL */ #endif /* _MACHINE_SMP_H_ */ Modified: projects/amd64_xen_pv/sys/amd64/xen/machdep.c ============================================================================== --- projects/amd64_xen_pv/sys/amd64/xen/machdep.c Fri Oct 4 01:39:20 2013 (r256035) +++ projects/amd64_xen_pv/sys/amd64/xen/machdep.c Fri Oct 4 01:42:27 2013 (r256036) @@ -88,6 +88,7 @@ #include <machine/md_var.h> #include <machine/pcb.h> #include <machine/stdarg.h> +#include <machine/smp.h> #include <machine/tss.h> #include <machine/vmparam.h> @@ -859,6 +860,56 @@ cpu_pcpu_init(struct pcpu *pcpu, int cpu pcpu->pc_acpi_id = 0xffffffff; } +/* XXX: Delete when we get mp_machdep.c */ +/* Dummy defines to get x86/x86/local_apic.c to link. */ +int Xspuriousint, Xtimerint, Xerrorint, Xcmcint, Xapic_isr1; +int Xapic_isr2, Xapic_isr3, Xapic_isr4, Xapic_isr5; +int Xapic_isr6, Xapic_isr7; +int cmc_intr; + +void setidt(int idx, alias_for_inthand_t *func, int typ, int dpl, int ist) +{ +} + + +struct cpu_info { + int cpu_present:1; + int cpu_bsp:1; + int cpu_disabled:1; +}; + +/* We don't want to #include <machine/apicvar.h */ +#define MAX_APIC_ID 0xfe + +static struct cpu_info cpu_info[MAX_APIC_ID + 1]; +int boot_cpu_id = -1; /* designated BSP */ + +void +cpu_add(u_int apic_id, char boot_cpu) +{ + + if (apic_id > MAX_APIC_ID) { + panic("SMP: APIC ID %d too high", apic_id); + return; + } + KASSERT(cpu_info[apic_id].cpu_present == 0, ("CPU %d added twice", + apic_id)); + cpu_info[apic_id].cpu_present = 1; + if (boot_cpu) { + KASSERT(boot_cpu_id == -1, + ("CPU %d claims to be BSP, but CPU %d already is", apic_id, + boot_cpu_id)); + boot_cpu_id = apic_id; + cpu_info[apic_id].cpu_bsp = 1; + } + if (mp_ncpus < MAXCPU) + mp_ncpus++; + if (bootverbose) + printf("SMP: Added CPU %d (%s)\n", apic_id, boot_cpu ? "BSP" : + "AP"); +} +/* Delete when we get mp_machdep.c : XXX*/ + void spinlock_enter(void) { Modified: projects/amd64_xen_pv/sys/conf/files.amd64 ============================================================================== --- projects/amd64_xen_pv/sys/conf/files.amd64 Fri Oct 4 01:39:20 2013 (r256035) +++ projects/amd64_xen_pv/sys/conf/files.amd64 Fri Oct 4 01:42:27 2013 (r256036) @@ -557,7 +557,7 @@ x86/x86/fdt_machdep.c optional fdt x86/x86/intr_machdep.c standard x86/x86/io_apic.c optional native x86/x86/legacy.c optional native -x86/x86/local_apic.c optional native +x86/x86/local_apic.c standard x86/x86/mca.c optional native x86/x86/mptable.c optional native mptable x86/x86/mptable_pci.c optional native mptable pcihelp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201310040142.r941gS0Y074362>
