Date: Wed, 24 Sep 2003 23:14:52 -0700 (PDT) From: Serguei Tzukanov <tzukanov@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 38564 for review Message-ID: <200309250614.h8P6Eqf6060880@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=38564 Change 38564 by tzukanov@tzukanov_antares on 2003/09/24 23:14:02 Update to -current. Move some definitions related to ELF relocation into one file. Misc style(9) fixes. Affected files ... .. //depot/projects/s390/libexec/rtld-elf/s390/reloc.c#6 edit .. //depot/projects/s390/sys/s390/include/elf.h#2 edit .. //depot/projects/s390/sys/s390/include/endian.h#2 edit .. //depot/projects/s390/sys/s390/include/signal.h#4 edit .. //depot/projects/s390/sys/s390/s390/critical.c#3 edit .. //depot/projects/s390/sys/s390/s390/elf_machdep.c#6 edit .. //depot/projects/s390/sys/s390/s390/external.c#5 edit .. //depot/projects/s390/sys/s390/s390/identcpu.c#6 edit .. //depot/projects/s390/sys/s390/s390/machdep.c#11 edit .. //depot/projects/s390/sys/s390/s390/mp_machdep.c#3 edit .. //depot/projects/s390/sys/s390/s390/pmap.c#16 edit .. //depot/projects/s390/sys/s390/s390/sys_machdep.c#4 edit .. //depot/projects/s390/sys/s390/s390/trap.c#11 edit .. //depot/projects/s390/sys/s390/s390/vm_machdep.c#10 edit .. //depot/projects/s390/usr.bin/Makefile#12 edit Differences ... ==== //depot/projects/s390/libexec/rtld-elf/s390/reloc.c#6 (text+ko) ==== @@ -41,65 +41,10 @@ #include <unistd.h> #include "debug.h" +#define _RTLD_COMMON_RELOC #include "rtld.h" -#define _ILL 0 -#define _B8 1 -#define _L12 2 -#define _H16 3 -#define _PC16 5 -#define _W32 6 - -#ifdef __s390x__ -#define _PC32 7 -#define _Q64 8 - -#define _AD _Q64 -#else -#define _AD _W32 -#endif - -#define _B 1 -#define _G 2 -#define _L 4 -#define _O 8 -#define _P 16 -#define _S 32 - -static struct _reldesc { - uint8_t field; - uint8_t action; -} reldesc[] = { - { _ILL }, /* R_390_NONE */ - { _B8, _S, }, /* R_390_8 */ - { _L12, _S, }, /* R_390_12 */ - { _H16, _S, }, /* R_390_16 */ - { _W32, _S, }, /* R_390_32 */ - { _W32, _S | _P }, /* R_390_PC32 */ - { _L12, _O }, /* R_390_GOT12 */ - { _W32, _O, }, /* R_390_GOT32 */ - { _W32, _L, }, /* R_390_PLT32 */ - { _ILL }, /* R_390_COPY */ - { _AD, _S }, /* R_390_GLOB_DAT */ - { _ILL }, /* R_390_JMP_SLOT */ - { _AD, _B }, /* R_390_RELATIVE */ - { _AD, _S | _G }, /* R_390_GOTOFF */ - { _AD, _G | _P }, /* R_390_GOTPC */ - { _H16, _O }, /* R_390_GOT16 */ - { _H16, _S | _P }, /* R_390_PC16 */ - { _PC16, _S | _P }, /* R_390_PC16DBL */ - { _PC16, _L | _P }, /* R_390_PLT16DBL */ -#ifdef __s390x__ - { _PC32, _S | _P }, /* R_390_PC32DBL */ - { _PC32, _L | _P }, /* R_390_PLT32DBL */ - { _PC32, _G | _P }, /* R_390_GOTPCDBL */ - { _Q64, _S }, /* R_390_64 */ - { _Q64, _S | _P }, /* R_390_PC64 */ - { _Q64, _O }, /* R_390_GOT64 */ - { _Q64, _L }, /* R_390_PLT64 */ - { _PC32, _G | _O | _P }, /* R_390_GOTENT */ -#endif -}; +static struct _reldesc reldesc[] = _RELDESC_INITIALIZER; /* * Process the special R_390_COPY relocations in the main program. These ==== //depot/projects/s390/sys/s390/include/elf.h#2 (text+ko) ==== @@ -108,4 +108,76 @@ #define ELF_RTLD_ADDR(vmspace) (round_page((vmspace)->vm_daddr + maxdsiz)) #endif +#ifdef _RTLD_COMMON_RELOC +#define _ILL 0 +#define _B8 1 +#define _L12 2 +#define _H16 3 +#define _PC16 5 +#define _W32 6 + +#define _B 1 +#define _G 2 +#define _L 4 +#define _O 8 +#define _P 16 +#define _S 32 + +struct _reldesc { + uint8_t field; + uint8_t action; +}; + +#define _RELDESC_INITIALIZER_S390 \ + { _ILL }, /* R_390_NONE */ \ + { _B8, _S, }, /* R_390_8 */ \ + { _L12, _S, }, /* R_390_12 */ \ + { _H16, _S, }, /* R_390_16 */ \ + { _W32, _S, }, /* R_390_32 */ \ + { _W32, _S | _P }, /* R_390_PC32 */ \ + { _L12, _O }, /* R_390_GOT12 */ \ + { _W32, _O, }, /* R_390_GOT32 */ \ + { _W32, _L, }, /* R_390_PLT32 */ \ + { _ILL }, /* R_390_COPY */ \ + { _AD, _S }, /* R_390_GLOB_DAT */ \ + { _ILL }, /* R_390_JMP_SLOT */ \ + { _AD, _B }, /* R_390_RELATIVE */ \ + { _AD, _S | _G }, /* R_390_GOTOFF */ \ + { _AD, _G | _P }, /* R_390_GOTPC */ \ + { _H16, _O }, /* R_390_GOT16 */ \ + { _H16, _S | _P }, /* R_390_PC16 */ \ + { _PC16, _S | _P }, /* R_390_PC16DBL */ \ + { _PC16, _L | _P }, /* R_390_PLT16DBL */ + +#ifdef __s390x__ +#define _PC32 7 +#define _Q64 8 + +#define _AD _Q64 + +#define _RELDESC_INITIALIZER_S390X \ + { _PC32, _S | _P }, /* R_390_PC32DBL */ \ + { _PC32, _L | _P }, /* R_390_PLT32DBL */ \ + { _PC32, _G | _P }, /* R_390_GOTPCDBL */ \ + { _Q64, _S }, /* R_390_64 */ \ + { _Q64, _S | _P }, /* R_390_PC64 */ \ + { _Q64, _O }, /* R_390_GOT64 */ \ + { _Q64, _L }, /* R_390_PLT64 */ \ + { _PC32, _G | _O | _P }, /* R_390_GOTENT */ + +#define _RELDESC_INITIALIZER \ +{ \ + _RELDESC_INITIALIZER_S390 \ + _RELDESC_INITIALIZER_S390X \ +} +#else +#define _AD _W32 + +#define _RELDESC_INITIALIZER \ +{ \ + _RELDESC_INITIALIZER_S390 \ +} +#endif + +#endif /* _RTLD_COMMON_RELOC */ #endif /* !_MACHINE_ELF_H_ */ ==== //depot/projects/s390/sys/s390/include/endian.h#2 (text+ko) ==== @@ -29,6 +29,8 @@ #define BYTE_ORDER _BYTE_ORDER #endif +#ifdef __GNUC__ + static __inline __uint16_t __bswap16(__uint16_t x) { @@ -83,4 +85,15 @@ #define __ntohl(x) ((__uint32_t)(x)) #define __ntohs(x) ((__uint16_t)(x)) +#else /* !__GNUC__ */ + +/* + * No optimizations are available for this compiler. Fall back to + * non-optimized functions by defining the constant usually used to prevent + * redefinition. + */ +#define _BYTEORDER_FUNC_DEFINED + +#endif /* __GNUC__ */ + #endif /* !_MACHINE_ENDIAN_H_ */ ==== //depot/projects/s390/sys/s390/include/signal.h#4 (text+ko) ==== @@ -11,7 +11,6 @@ #define _MACHINE_SIGNAL_H_ #include <sys/types.h> -#include <machine/psw.h> typedef int sig_atomic_t; @@ -59,6 +58,8 @@ #endif #if __BSD_VISIBLE +#include <machine/psw.h> + struct sigcontext { struct __sigset sc_mask; int sc_onstack; ==== //depot/projects/s390/sys/s390/s390/critical.c#3 (text+ko) ==== @@ -9,7 +9,6 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/pcpu.h> -#include <sys/ktr.h> #include <sys/kernel.h> #include <sys/proc.h> #include <machine/critical.h> @@ -20,8 +19,6 @@ { struct thread *td = curthread; - CTR1(KTR_PROC, "cpu_critical_fork_exit: td = %p", td); - td->td_critnest = 1; td->td_md.md_savecrit = SM_T|SM_IO|SM_EX|esa_sm_per; } ==== //depot/projects/s390/sys/s390/s390/elf_machdep.c#6 (text+ko) ==== @@ -11,10 +11,10 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/sys/s390/s390/elf_machdep.c,v 1.0 2002/08/01 23:51:16 tzukanov Exp $"); +#define _RTLD_COMMON_RELOC #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> -#include <sys/ktr.h> #include <sys/exec.h> #include <sys/imgact.h> #include <sys/linker.h> @@ -24,74 +24,10 @@ #include <sys/signalvar.h> #include <sys/vnode.h> #include <vm/vm.h> -#include <vm/pmap.h> #include <vm/vm_param.h> -#include <machine/elf.h> + #include <machine/md_var.h> -#ifndef KTR_LD -#define KTR_LD KTR_GEN -#endif - -#define _SHIFT1 (1 << 7) - -#define _B8 1 -#define _L12 2 -#define _H16 3 -#define _PC16 (_H16 | _SHIFT1) -#define _W32 4 -#define _PC32 (_W32 | _SHIFT1) -#define _Q64 5 - -#ifdef __s390x__ -#define _AD _Q64 -#else -#define _AD _W32 -#endif - -#define _B 1 -#define _G 2 -#define _L 3 -#define _O 4 -#define _P 5 -#define _S 6 - -#define _ILL 0 - -static struct _reldesc { - uint8_t op[4]; -} reldesc[] = { - {{ _ILL }}, /* R_390_NONE */ - {{ _B8, _S, }}, /* R_390_8 */ - {{ _L12, _S, }}, /* R_390_12 */ - {{ _H16, _S, }}, /* R_390_16 */ - {{ _W32, _S, }}, /* R_390_32 */ - {{ _W32, _S, _P }}, /* R_390_PC32 */ - {{ _L12, _O, }}, /* R_390_GOT12 */ - {{ _W32, _O, }}, /* R_390_GOT32 */ - {{ _W32, _L, }}, /* R_390_PLT32 */ - {{ _ILL }}, /* R_390_COPY */ - {{ _AD, _S }}, /* R_390_GLOB_DAT */ - {{ _ILL }}, /* R_390_JMP_SLOT */ - {{ _AD, _B }}, /* R_390_RELATIVE */ - {{ _AD, _S, _G }}, /* R_390_GOTOFF */ - {{ _AD, _G, _P }}, /* R_390_GOTPC */ - {{ _H16, _O }}, /* R_390_GOT16 */ - {{ _H16, _S, _P }}, /* R_390_PC16 */ - {{ _PC16, _S, _P }}, /* R_390_PC16DBL */ - {{ _PC16, _L, _P }}, /* R_390_PLT16DBL */ -#ifdef __s390x__ - {{ _PC32, _S, _P }}, /* R_390_PC32DBL */ - {{ _PC32, _L, _P }}, /* R_390_PLT32DBL */ - {{ _PC32, _G, _P }}, /* R_390_GOTPCDBL */ - {{ _Q64, _S }}, /* R_390_64 */ - {{ _Q64, _S, _P }}, /* R_390_PC64 */ - {{ _Q64, _O }}, /* R_390_GOT64 */ - {{ _Q64, _L }}, /* R_390_PLT64 */ - {{ _PC32, _G, _O, _P }}, /* R_390_GOTENT */ -#endif -}; - struct sysentvec elf32_freebsd_sysvec = { SYS_MAXSYSCALL, sysent, @@ -133,78 +69,65 @@ (sysinit_cfunc_t)elf32_insert_brand_entry, &freebsd_brand_info); +static struct _reldesc reldesc[] = _RELDESC_INITIALIZER; + static int elf_reloc_internal(linker_file_t lf, const void *data, int type, int local) { - Elf_Addr A, *where = NULL; /* XXX */ + Elf_Addr value, *where; const Elf_Rela *rela; - struct _reldesc d; - int t, i; + struct _reldesc desc; - CTR3(KTR_LD, "elf_reloc: lf = %p, data = %p, type = %d", lf, data, type); - - /* S/390 and zSeries use only Elf32_Rela and Elf64_Rela respectively. */ + /* + * S/390 and zSeries use only Elf32_Rela + * and Elf64_Rela respectively. + */ if (type != ELF_RELOC_RELA) return -1; rela = (const Elf_Rela *)data; - d = reldesc[ELF_R_TYPE(rela->r_info)]; - t = d.op[0]; - if (t == _ILL) { - return -1; - } + desc = reldesc[ELF_R_TYPE(rela->r_info)]; + + value = rela->r_addend; + where = (Elf_Addr *)(lf->address + rela->r_offset); + + if (desc.action & _B) + value += (Elf_Addr)lf->address; - A = rela->r_addend; - for (i = 1; d.op[i] && (i < 4); i++) { - switch (d.op[i]) { - case _B: - A += (Elf_Addr)lf->address; - break; - case _G: - CTR0(KTR_LD, "elf_reloc: unimplemented t"); - break; - case _L: - CTR0(KTR_LD, "elf_reloc: unimplemented t"); - break; - case _O: - CTR0(KTR_LD, "elf_reloc: unimplemented t"); - break; - case _P: - A -= (Elf_Addr)where; - break; - case _S: - A += elf_lookup(lf, ELF_R_SYM(rela->r_info), 1); - break; - } - } + if (desc.action & (_S|_L)) + value += elf_lookup(lf, ELF_R_SYM(rela->r_info), 1); - if (t & _SHIFT1) { - /* We need shifting with sign copying. */ - A = ((long)A) >> 1; - t &= ~_SHIFT1; - } + if (desc.action & _P) + value -= (Elf_Addr)where; - switch (t) { + switch (desc.field) { case _B8: - *(uint8_t *)where = (uint8_t)A; + *(uint8_t *)where = (uint8_t)value; break; case _L12: - *(uint16_t *)where += A << 4; + *(uint16_t *)where |= value << 4; + break; + case _PC16: + *(int16_t *)where = ((int16_t)value) >> 1; break; case _H16: - *(int16_t *)where = (int16_t)A; + *(int16_t *)where = (int16_t)value; break; case _W32: - *(int32_t *)where = (int32_t)A; + *(int32_t *)where = (int32_t)value; break; #ifdef __s390x__ + case _PC32: + *(int32_t *)where = ((int32_t)value) >> 1; + break; case _Q64: - *where = A; + *where = value; + break; #endif } - return 0; + return (0); } int ==== //depot/projects/s390/sys/s390/s390/external.c#5 (text+ko) ==== @@ -13,7 +13,6 @@ #include <sys/bus.h> #include <sys/kernel.h> #include <sys/interrupt.h> -#include <sys/ktr.h> #include <machine/frame.h> #include <machine/sysarea.h> #include <s390/s390/external.h> @@ -84,8 +83,6 @@ code = sysarea.external_code; - CTR1(KTR_INTR, "Entering external interruption %#x", code); - td = curthread; atomic_add_int(&td->td_intr_nesting_level, 1); @@ -105,8 +102,6 @@ } atomic_subtract_int(&td->td_intr_nesting_level, 1); - - CTR1(KTR_INTR, "Leaving external interruption %#x", code); } /* ==== //depot/projects/s390/sys/s390/s390/identcpu.c#6 (text+ko) ==== @@ -58,6 +58,7 @@ {"9672", "Yn7", "Generation 6"}, {"2066", "nnn", "z800"}, {"2064", "nnn", "z900"}, + {"2084", "nnn", "z990"}, {"nnnn", "HERCULES", "Hercules"} }; @@ -111,10 +112,10 @@ : [r0]"r"(r1), [r1]"r"(r1), [sysib]"a"(sysib) : "r0", "r1", "cc"); - return cc; + return (cc); nostsi: - return 3; + return (3); } /* @@ -149,15 +150,15 @@ mc = *model++; if (mc == '\0') { if (pc == '\0') - return 0; + return (0); else - return 1; + return (1); } if ((pc != mc) && (pc != 'n')) - return 1; + return (1); } - return 0; + return (0); } void ==== //depot/projects/s390/sys/s390/s390/machdep.c#11 (text+ko) ==== @@ -49,7 +49,6 @@ #include <sys/systm.h> #include <sys/cons.h> #include <sys/kernel.h> -#include <sys/ktr.h> #include <sys/linker.h> #include <sys/lock.h> #include <sys/malloc.h> @@ -260,8 +259,6 @@ struct proc *p; int oonstack; - CTR3(KTR_SIG, "sendsig: td = %p, sig = %d, code = %u", curthread, sig, code); - td = curthread; p = td->td_proc; @@ -323,8 +320,6 @@ psw_define_addr(&tf->tf_psw, PS_STRINGS - *(p->p_sysent->sv_szsigcode)); tf->tf_gpr[15] = (u_long)sfp - sizeof(struct stackframe); - CTR2(KTR_SIG, "ps_strings = %p, *sz = %d", PS_STRINGS, *(p->p_sysent->sv_szsigcode)); - PROC_LOCK(p); } @@ -345,8 +340,6 @@ ucontext_t uc; int error; - CTR2(KTR_SIG, "sigreturn: td = %p, uap->sigcntxp = %p", td, uap->sigcntxp); - error = copyin(uap->sigcntxp, &uc, sizeof(uc)); if (error) return (error); @@ -400,9 +393,6 @@ { struct trapframe *tf; - CTR4(KTR_PROC, "setregs: td = %p, entry = %x, stack = %x, ps_strings = %x", - td, entry, stack, ps_strings); - tf = td->td_frame; bzero(tf, sizeof(*tf)); psw_define(&tf->tf_psw, PSW_USER, entry); @@ -415,7 +405,7 @@ u_long x; int argc; - CTR0(KTR_PROC, "setregs: stack not aligned properly"); + printf("%s: stack is not aligned properly\n", __func__); ostack = (caddr_t)stack; stack &= ~7ul; ==== //depot/projects/s390/sys/s390/s390/mp_machdep.c#3 (text+ko) ==== @@ -28,8 +28,8 @@ static u_int cpu2cpuid[MAXCPU]; /* - * There are no machines with more than 16 simultaneously - * online CPUs at the time (July 2002). + * There are no machines with more than 32 simultaneously + * online CPUs at the time (last revised: September 2003). */ static int mp_overflow; ==== //depot/projects/s390/sys/s390/s390/pmap.c#16 (text+ko) ==== @@ -55,14 +55,12 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> -#include <sys/ktr.h> #include <sys/lock.h> #include <sys/mman.h> #include <sys/msgbuf.h> #include <sys/smp.h> #include <sys/mutex.h> #include <sys/proc.h> -#include <sys/sx.h> #include <sys/user.h> #include <sys/vmmeter.h> #include <vm/vm.h> @@ -297,8 +295,6 @@ else pte = (vm_offset_t)&invalid_pte; - CTR3(KTR_PMAP, "pmap_ptepa: pmap = %p, va = %x, pte = %x", pmap, va, pte); - return (pte); } @@ -368,26 +364,20 @@ static int pmap_unwire_pte_hold(pmap_t pmap, vm_page_t mpte) { - CTR2(KTR_PMAP, "pmap_unwire_pte_hold: pmap = %p, mpte = %x", pmap, mpte); - vm_page_unhold(mpte); if (mpte->hold_count) - return 0; + return (0); while (vm_page_sleep_if_busy(mpte , FALSE, "pmuph")) vm_page_lock_queues(); if (mpte->hold_count == 0) { - CTR0(KTR_PMAP, "\tmpte_hold_count == 0"); - pmap_clear_ste_quad(&pmap->pm_sto[mpte->pindex << 2]); pmap->pm_stats.resident_count--; /* Free the page if it is finally unwired. */ if (--mpte->wire_count == 0) { - CTR0(KTR_PMAP, "\t\tmpte->wire_count == 0"); - vm_page_busy(mpte); vm_page_free(mpte); cnt.v_wire_count--; @@ -400,8 +390,6 @@ static int pmap_unuse_ptp(pmap_t pmap, vm_offset_t va, vm_page_t mpte) { - CTR3(KTR_PMAP, "pmap_unuse_ptp: pmap = %p, va = %x, mpte = %x", pmap, va, mpte); - if (pmap == kernel_pmap) return (0); @@ -422,16 +410,12 @@ pv_entry_t pv; int rv = 0; - CTR3(KTR_PMAP, "pmap_remove_entry: pmap = %p, va = %x, pa = %x", pmap, va, VM_PAGE_TO_PHYS(m)); - if (m->md.pv_list_count < pmap->pm_stats.resident_count) { - CTR0(KTR_PMAP, "\tpv_list_count < resident_count"); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { if (pmap == pv->pv_pmap && va == pv->pv_va) break; } } else { - CTR0(KTR_PMAP, "\tpv_list_count > resident_count"); TAILQ_FOREACH(pv, &pmap->pm_pvlist, pv_plist) { if (va == pv->pv_va) break; @@ -455,8 +439,6 @@ { pv_entry_t pv; - CTR4(KTR_PMAP, "pmap_insert_entry: pmap = %p, va = %x, pa = %x, mpte = %x", pmap, va, VM_PAGE_TO_PHYS(m), mpte); - pv = pv_get(); pv->pv_va = va; pv->pv_pmap = pmap; @@ -477,8 +459,6 @@ pmap_t pmap; pte_t pte; - CTR1(KTR_PMAP, "pmap_remove_all: pa = %x", VM_PAGE_TO_PHYS(m)); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pmap = pv->pv_pmap; @@ -514,8 +494,6 @@ vm_page_t mpte; int i; - CTR2(KTR_PMAP, "pmap_create_pte: pmap = %p, ptindex = %u", pmap, ptindex); - VM_OBJECT_LOCK(pmap->pm_pteobj); mpte = vm_page_grab(pmap->pm_pteobj, (ptindex >> 2), VM_ALLOC_RETRY | VM_ALLOC_WIRED); @@ -551,10 +529,7 @@ vm_page_t mpte; ste_t ste; - CTR2(KTR_PMAP, "pmap_get_pte: pmap = %p, va = %x", pmap, va); - ste = pmap->pm_sto[ptindex]; - CTR1(KTR_PMAP, "\tste = %x", ste); if (ste_valid(ste)) { mpte = PHYS_TO_VM_PAGE(ste); KASSERT(mpte != NULL, ("pmap_get_pte: mpte == NULL")); @@ -569,11 +544,9 @@ static int pmap_remove_pte(pmap_t pmap, vm_paddr_t ptepa, vm_offset_t va) { - vm_page_t m; + vm_page_t m, mpte; pte_t pte; - CTR3(KTR_PMAP, "pmap_remove_pte: pmap = %p, ptepa = %x, va = %x", pmap, ptepa, va); - ipte(ptepa); pte = lura(ptepa); @@ -582,8 +555,6 @@ pmap->pm_stats.resident_count--; if (pte & PTE_MANAGED) { - CTR0(KTR_PMAP, "\tpage managed"); - m = PHYS_TO_VM_PAGE(pte); if (pmap_is_modified(m) && pmap_track_modified(va)) vm_page_dirty(m); @@ -592,10 +563,9 @@ return pmap_remove_entry(pmap, m, va); } else { - return pmap_unuse_ptp(pmap, va, NULL); + mpte = PHYS_TO_VM_PAGE(ptepa); + return pmap_unuse_ptp(pmap, va, mpte); } - - return (0); } static void * @@ -613,8 +583,6 @@ pmap_t pmap; u_long cr7; - CTR1(KTR_PMAP, "pmap_activate: td = %p", td); - pmap = vmspace_pmap(td->td_proc->p_vmspace); pmap->pm_active |= PCPU_GET(cpumask); stopa = vtophys(pmap->pm_sto); @@ -626,8 +594,6 @@ vm_offset_t pmap_addr_hint(vm_object_t object, vm_offset_t va, vm_size_t size) { - CTR3(KTR_PMAP, "pmap_addr_hint: object = %p, va = %x, size = %u", object, va, size); - return (va); } @@ -637,8 +603,6 @@ vm_offset_t ptepa; pte_t pte; - CTR3(KTR_PMAP, "pmap_change_wiring: pmap = %p, va = %x, wired = %d", pmap, va, wired); - ptepa = pmap_ptepa(pmap, va); pte = lura(ptepa); if (wired) { @@ -658,8 +622,6 @@ { vm_paddr_t pa = VM_PAGE_TO_PHYS(m); - CTR1(KTR_PMAP, "pmap_clear_modify: pa = %x", pa); - sk_set(pa, sk_get(pa) & ~SK_C); } @@ -668,8 +630,6 @@ { vm_paddr_t pa = VM_PAGE_TO_PHYS(m); - CTR1(KTR_PMAP, "pmap_clear_reference: pa = %x", pa); - __asm volatile ( " rrbe %%r0, %[pa]" :: [pa]"r"(pa) : "r0", "cc"); @@ -679,9 +639,6 @@ pmap_copy(pmap_t dst_pmap, pmap_t src_pmap, vm_offset_t dst_addr, vm_size_t len, vm_offset_t src_addr) { - CTR5(KTR_PMAP, "pmap_copy: dst_pmap = %p, src_pmap = %p, va = %x, len = %u, src_addr = %x", - dst_pmap, src_pmap, dst_addr, len, src_addr); - /* Optional for perfomance */ } @@ -691,8 +648,6 @@ vm_paddr_t srcpa = VM_PAGE_TO_PHYS(src); vm_paddr_t dstpa = VM_PAGE_TO_PHYS(dst); - CTR2(KTR_PMAP, "pmap_copy_page: srcpa = %x, dstpa = %x", srcpa, dstpa); - KASSERT(lura(csrc_ptepa) & PTE_INVALID, ("pmap_copy_page: csrc_ptepa busy")); KASSERT(lura(cdst_ptepa) & PTE_INVALID, @@ -715,9 +670,6 @@ pte_t opte, pte; vm_page_t mpte; - CTR5(KTR_PMAP, "pmap_enter: pmap=%p, va = %x, pa = %x, prot = %x, wired = %d", - pmap, va, VM_PAGE_TO_PHYS(m), prot, wired); - KASSERT(va < VM_MAX_ADDRESS, ("pmap_enter: va is too big")); @@ -737,8 +689,6 @@ /* If this is protection or wiring change. */ if (((opte & PTE_INVALID) == 0) && (pte == opa)) { - CTR0(KTR_PMAP, "\tprotection or wiring change"); - if (wired && !pte_wired(opte)) pmap->pm_stats.wired_count++; else if (!wired && pte_wired(opte)) @@ -775,8 +725,6 @@ if ((opte & PTE_INVALID) == 0) { int error; - CTR0(KTR_PMAP, "\told pte valid"); - vm_page_lock_queues(); error = pmap_remove_pte(pmap, ptepa, va); vm_page_unlock_queues(); @@ -786,8 +734,6 @@ /* Enter on the pv list if part of our managed memory. */ if (pmap_initialized && ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0)) { - CTR0(KTR_PMAP, "\tentering on the pv list"); - pmap_insert_entry(pmap, va, mpte, m); pte |= PTE_MANAGED; } @@ -873,7 +819,7 @@ } vm_page_t -pmap_extract_and_hold(pmap_t pmap, vm_offset_t va) +pmap_extract_and_hold(pmap_t pmap, vm_offset_t va, vm_prot_t prot) { vm_paddr_t pa; vm_page_t m; @@ -896,7 +842,6 @@ pmap_growkernel(vm_offset_t va) { kernel_vm_end = 4*nkptp*SEGMENT_SIZE; - CTR2(KTR_PMAP, "pmap_growkernel: va = %x, kernel_vm_end = %x", va, kernel_vm_end); } void @@ -904,8 +849,6 @@ { int i; - CTR2(KTR_PMAP, "pmap_init: spa = %x, epa = %x", spa, epa); - /* Allocate memory for random pmap structures. */ for (i = 0; i < vm_page_array_size; i++) { vm_page_t m; @@ -930,8 +873,6 @@ { int shpgperproc = PMAP_SHPGPERPROC; - CTR0(KTR_PMAP, "pmap_init2: "); - TUNABLE_INT_FETCH("vm.pmap.shpgperproc", &shpgperproc); pv_entry_max = shpgperproc * maxproc + vm_page_array_size; TUNABLE_INT_FETCH("vm.pmap.pv_entries", &pv_entry_max); @@ -944,8 +885,6 @@ { vm_paddr_t pa = VM_PAGE_TO_PHYS(m); - CTR1(KTR_PMAP, "pmap_is_modified: pa = %x", pa); - if (!pmap_initialized || (m->flags & PG_FICTITIOUS)) return FALSE; @@ -957,8 +896,6 @@ { vm_paddr_t ptepa; - CTR2(KTR_PMAP, "pmap_kenter: va = %x, pa = %x", va, pa); - ptepa = pmap_ptepa(kernel_pmap, va); ipte(ptepa); stura(ptepa, pa); @@ -978,8 +915,6 @@ void pmap_kremove(vm_offset_t va) { - CTR1(KTR_PMAP, "pmap_kremove: va = %x", va); - ipte(pmap_ptepa(kernel_pmap, va)); } @@ -988,8 +923,6 @@ { vm_offset_t va, sva; - CTR4(KTR_PMAP, "pmap_map: vap = %p, spa = %x, epa = %x, prot = %d", vap, spa, epa, prot); - va = sva = *vap; for (; spa < epa; va += PAGE_SIZE, spa += PAGE_SIZE) pmap_kenter(va, spa); @@ -1005,8 +938,6 @@ pte_t pte; int rv; - CTR2(KTR_PMAP, "pmap_mincore: pmap = %p, va = %x", pmap, va); - pte = lura(pmap_ptepa(pmap, va)); if (!pte_valid(pte)) return (0); @@ -1042,8 +973,6 @@ pv_entry_t pv; int loops = 0; - CTR2(KTR_PMAP, "pmap_page_exists_quick: pmap = %p, pa = %x", pmap, VM_PAGE_TO_PHYS(m)); - if (m->flags & PG_FICTITIOUS) return FALSE; @@ -1063,7 +992,6 @@ vm_offset_t pa = VM_PAGE_TO_PHYS(m); panic("GGGG: %s", __func__); - CTR2(KTR_PMAP, "pmap_page_protect: pa = %x, prot = %d", pa, prot); KASSERT((prot == VM_PROT_READ) || (prot == VM_PROT_NONE), ("pmap_page_protect: unexpected prot")); @@ -1080,11 +1008,10 @@ void pmap_pinit(pmap_t pmap) { + static int color; vm_page_t stpg; int i; - CTR1(KTR_PMAP, "pmap_pinit: pmap = %p", pmap); - if (pmap->pm_sto == NULL) pmap->pm_sto = (ste_t *) kmem_alloc_pageable(kernel_map, PAGE_SIZE); @@ -1092,15 +1019,19 @@ if (pmap->pm_pteobj == NULL) pmap->pm_pteobj = vm_object_allocate(OBJT_DEFAULT, NPTP + 1); - VM_OBJECT_LOCK(pmap->pm_pteobj); - stpg = vm_page_grab(pmap->pm_pteobj, NPTP, - VM_ALLOC_NORMAL | VM_ALLOC_RETRY | - VM_ALLOC_WIRED); - vm_page_lock_queues(); - vm_page_flag_clear(stpg, PG_BUSY); - stpg->valid = VM_PAGE_BITS_ALL; - vm_page_unlock_queues(); - VM_OBJECT_UNLOCK(pmap->pm_pteobj); + for (;;) { + stpg = vm_page_alloc(NULL, color++, + VM_ALLOC_NORMAL | VM_ALLOC_WIRED | + VM_ALLOC_NOOBJ); + if (stpg == NULL) { + VM_WAIT; + } else { + vm_page_lock_queues(); + vm_page_flag_clear(stpg, PG_BUSY); + stpg->valid = VM_PAGE_BITS_ALL; + vm_page_unlock_queues(); + } + } pmap_kenter((vm_offset_t)pmap->pm_sto, VM_PAGE_TO_PHYS(stpg)); for (i = 0; i < 4*NPTP; i++) @@ -1114,8 +1045,6 @@ void pmap_pinit0(pmap_t pmap) { - CTR1(KTR_PMAP, "pmap_pinit0: pmap = %p", pmap); - pmap->pm_sto = proc0sto; pmap->pm_active = 0; TAILQ_INIT(&pmap->pm_pvlist); @@ -1131,7 +1060,6 @@ void pmap_prefault(pmap_t pmap, vm_offset_t va, vm_map_entry_t entry) { - CTR3(KTR_PMAP, "pmap_prefault: pmap = %p, va = %x, entry = %p", pmap, va, entry); /* optional */ >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200309250614.h8P6Eqf6060880>