git: kernel - Add support for up to 63 cpus & 512G of ram for 64

看板DFBSD_commit作者時間15年前 (2010/12/10 07:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
commit da23a592849ab6010314c28c571f343b43c9b6d5 Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Thu Dec 9 14:09:17 2010 -0800 kernel - Add support for up to 63 cpus & 512G of ram for 64-bit builds. * Increase SMP_MAXCPU to 63 for 64-bit builds. * cpumask_t is 64 bits on 64-bit builds now. It remains 32 bits on 32-bit builds. * Add #define's for atomic_set_cpumask(), atomic_clear_cpumask, and atomic_cmpset_cpumask(). Replace all use cases on cpu masks with these functions. * Add CPUMASK(), BSRCPUMASK(), and BSFCPUMASK() macros. Replace all use cases on cpu masks with these functions. In particular note that (1 << cpu) just doesn't work with a 64-bit cpumask. Numerous bits of assembly also had to be adjusted to use e.g. btq instead of btl, etc. * Change __uint32_t declarations that were meant to be cpu masks to use cpumask_t (most already have). Also change other bits of code which work on cpu masks to be more agnostic. For example, poll_cpumask0 and lwp_cpumask. * 64-bit atomic ops cannot use "iq", they must use "r", because most x86-64 do NOT have 64-bit immediate value support. * Rearrange initial kernel memory allocations to start from KvaStart and not KERNBASE, because only 2GB of KVM is available after KERNBASE. Certain VM allocations with > 32G of ram can exceed 2GB. For example, vm_page_array[]. 2GB was not enough. * Remove numerous mdglobaldata fields that are not used. * Align CPU_prvspace[] for now. Eventually it will be moved into a mapped area. Reserve sufficient space at MPPTDI now, but it is still unused. * When pre-allocating kernel page table PD entries calculate the number of page table pages at KvaStart and at KERNBASE separately, since the KVA space starting at KERNBASE caps out at 2GB. * Change kmem_init() and vm_page_startup() to not take memory range arguments. Instead the globals (virtual_start and virtual_end) are manipualted directly. Summary of changes: sys/cpu/i386/include/atomic.h | 5 ++ sys/cpu/i386/include/types.h | 3 + sys/cpu/x86_64/include/atomic.h | 55 ++++++++------ sys/cpu/x86_64/include/param.h | 2 +- sys/cpu/x86_64/include/types.h | 7 ++- sys/dev/acpica5/acpi_cpu.c | 2 +- sys/kern/init_main.c | 4 +- sys/kern/kern_mplock.c | 10 ++-- sys/kern/kern_poll.c | 14 ++-- sys/kern/kern_proc.c | 2 +- sys/kern/kern_synch.c | 10 ++-- sys/kern/kern_usched.c | 15 ++-- sys/kern/lwkt_ipiq.c | 12 ++-- sys/kern/usched_bsd4.c | 40 +++++----- sys/kern/usched_dummy.c | 30 ++++---- sys/netinet/tcp_subr.c | 2 +- sys/platform/pc32/acpica5/madt.c | 2 +- sys/platform/pc32/apic/mpapic.c | 6 +- sys/platform/pc32/i386/genassym.c | 3 +- sys/platform/pc32/i386/machdep.c | 2 +- sys/platform/pc32/i386/mp_machdep.c | 42 ++++++----- sys/platform/pc32/i386/pmap.c | 7 +- sys/platform/pc32/i386/pmap_inval.c | 4 +- sys/platform/pc32/i386/vm_machdep.c | 4 +- sys/platform/pc32/include/globaldata.h | 6 +- sys/platform/pc32/include/pmap.h | 3 +- sys/platform/pc32/include/smp.h | 10 ++-- sys/platform/pc64/acpica5/madt.c | 2 +- sys/platform/pc64/apic/apic_vector.s | 14 ++-- sys/platform/pc64/apic/mpapic.c | 12 +--- sys/platform/pc64/include/globaldata.h | 35 ++++----- sys/platform/pc64/include/pmap.h | 21 ++++-- sys/platform/pc64/include/smp.h | 10 ++-- sys/platform/pc64/include/vmparam.h | 9 ++- sys/platform/pc64/isa/clock.c | 2 +- sys/platform/pc64/x86_64/db_interface.c | 14 ++-- sys/platform/pc64/x86_64/genassym.c | 3 +- sys/platform/pc64/x86_64/global.s | 10 --- sys/platform/pc64/x86_64/machdep.c | 8 +-- sys/platform/pc64/x86_64/mp_machdep.c | 100 ++++++++++--------------- sys/platform/pc64/x86_64/pmap.c | 53 +++++++------- sys/platform/pc64/x86_64/pmap_inval.c | 4 +- sys/platform/pc64/x86_64/swtch.s | 16 ++-- sys/platform/vkernel/i386/cpu_regs.c | 2 +- sys/platform/vkernel/i386/db_interface.c | 8 +- sys/platform/vkernel/i386/genassym.c | 3 +- sys/platform/vkernel/i386/mp.c | 40 +++++----- sys/platform/vkernel/include/globaldata.h | 6 +- sys/platform/vkernel/include/pmap.h | 3 +- sys/platform/vkernel/include/smp.h | 12 ++-- sys/platform/vkernel/platform/pmap.c | 34 +++++---- sys/platform/vkernel64/include/globaldata.h | 6 +- sys/platform/vkernel64/include/pmap.h | 3 + sys/platform/vkernel64/include/smp.h | 12 ++-- sys/platform/vkernel64/platform/pmap.c | 8 +- sys/platform/vkernel64/x86_64/cpu_regs.c | 2 +- sys/platform/vkernel64/x86_64/db_interface.c | 8 +- sys/platform/vkernel64/x86_64/mp.c | 40 +++++----- sys/platform/vkernel64/x86_64/swtch.s | 12 ++-- sys/sys/globaldata.h | 2 +- sys/sys/mplock2.h | 6 +- sys/sys/thread2.h | 4 +- sys/vm/vm_extern.h | 2 +- sys/vm/vm_init.c | 6 +- sys/vm/vm_kern.c | 22 +++---- sys/vm/vm_page.c | 25 ++++--- sys/vm/vm_page.h | 2 +- 67 files changed, 447 insertions(+), 436 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/da23a592849ab6010314c28c571f343b43c9b6d5 -- DragonFly BSD source repository
文章代碼(AID): #1D0L-oaQ (DFBSD_commit)
文章代碼(AID): #1D0L-oaQ (DFBSD_commit)