Date: Thu, 26 Dec 2002 00:00:13 -0800 (PST) From: Serguei Tzukanov <tzukanov@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 22751 for review Message-ID: <200212260800.gBQ80Dnx017355@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=22751 Change 22751 by tzukanov@tzukanov_antares on 2002/12/25 23:59:17 Fixed hang on pmap_release(). Affected files ... .. //depot/projects/s390/sys/s390/conf/GENERIC#5 edit .. //depot/projects/s390/sys/s390/s390/hhc.c#3 edit .. //depot/projects/s390/sys/s390/s390/hmcsc.c#4 edit .. //depot/projects/s390/sys/s390/s390/locore.S#3 edit .. //depot/projects/s390/sys/s390/s390/machdep.c#5 edit .. //depot/projects/s390/sys/s390/s390/pmap.c#6 edit .. //depot/projects/s390/sys/s390/s390/swtch.S#2 edit .. //depot/projects/s390/sys/s390/s390/vm_machdep.c#5 edit Differences ... ==== //depot/projects/s390/sys/s390/conf/GENERIC#5 (text+ko) ==== @@ -34,8 +34,8 @@ options INVARIANT_SUPPORT options INVARIANTS options WITNESS -#options WITNESS_SKIPSPIN -#options DIAGNOSTIC +options WITNESS_SKIPSPIN +options DIAGNOSTIC options DEBUG_LOCKS options KTR @@ -43,7 +43,7 @@ options KTR_COMPILE=KTR_ALL #options KTR_MASK="(KTR_PMAP|KTR_TRAP|KTR_PROC|KTR_SIG|KTR_VM|KTR_SYSC|KTR_VOP|KTR_SMP)" #options KTR_MASK="(KTR_PMAP|KTR_SIG|KTR_PROC)" -options KTR_MASK=KTR_PROC +options KTR_MASK=0 options KTR_CPUMASK=0x3 options KTR_VERBOSE ==== //depot/projects/s390/sys/s390/s390/hhc.c#3 (text+ko) ==== @@ -50,14 +50,15 @@ static void hhc_cnprobe(struct consdev *cn) { - cn->cn_dev = makedev(CDEV_MAJOR, 0); + cn->cn_dev = NULL; cn->cn_pri = CN_INTERNAL; - cn->cn_tp = hhc_tp; } static void hhc_cninit(struct consdev *cn) { + cn->cn_dev = makedev(CDEV_MAJOR, 0); + cn->cn_tp = hhc_tp; } static __inline int ==== //depot/projects/s390/sys/s390/s390/hmcsc.c#4 (text+ko) ==== @@ -63,7 +63,7 @@ static struct sccb_mcdb *mcdb; static struct sccb_mcdbh *mcdbh; static struct sccb_mto *mto; -static struct sccb_go *go; +/*static struct sccb_go *go;*/ static int outcur; static volatile int incur; @@ -129,15 +129,17 @@ static void hmcsc_cnprobe(struct consdev *cn) { - cn->cn_dev = makedev(CDEV_MAJOR, 0); + cn->cn_dev = NULL; cn->cn_pri = CN_NORMAL; - cn->cn_tp = hmcsc_tp; } static void hmcsc_cninit(struct consdev *cn) { struct sccb_em *em; + + cn->cn_dev = makedev(CDEV_MAJOR, 0); + cn->cn_tp = hmcsc_tp; em = (struct sccb_em *)(sccb + 1); edh = (struct sccb_edh *)(sccb + 1); @@ -160,10 +162,12 @@ external_register(EI_SERVICE_SIGNAL, hmcsc_intr); } +#if 0 static void hmcsc_term(struct consdev *cn) { } +#endif static int hmcsc_cngetc(dev_t dev) @@ -366,4 +370,4 @@ } SYSINIT -(hmcsc, SI_SUB_DRIVERS, SI_ORDER_MIDDLE + CDEV_MAJOR, hmcsc_devinit, NULL); +(hmcsc, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE + CDEV_MAJOR, hmcsc_devinit, NULL); ==== //depot/projects/s390/sys/s390/s390/locore.S#3 (text+ko) ==== @@ -117,9 +117,9 @@ .align 8 .globl sigcode sigcode: - .long 0 basr %r14, %r5 - lhi %r0, SYSCALLNUM(sigreturn) + lr %r2, %r8 + lhi %r0, SYS_sigreturn svc 0 /* not reached */ .align 8 ==== //depot/projects/s390/sys/s390/s390/machdep.c#5 (text+ko) ==== @@ -281,7 +281,7 @@ /* Build the argument list for the signal handler. */ tf->tf_gpr[2] = sig; - tf->tf_gpr[4] = (register_t)&sfp->sf_uc; + tf->tf_gpr[4] = tf->tf_gpr[8] = (register_t)&sfp->sf_uc; tf->tf_gpr[5] = (register_t)catcher; PROC_LOCK(p); if (SIGISMEMBER(p->p_sigacts->ps_siginfo, sig)) { ==== //depot/projects/s390/sys/s390/s390/pmap.c#6 (text+ko) ==== @@ -1156,12 +1156,11 @@ pmap_kremove(ks); ks += PAGE_SIZE; #else - ks = kmem_alloc_nofault(kernel_map, pages); + ks = kmem_alloc_nofault(kernel_map, pages * PAGE_SIZE); if (ks == 0) panic("pmap_new_thread: kstack allocation failed"); #endif td->td_kstack = ks; - td->td_kstack_pages = pages; for (i = 0; i < pages; i++) { m = vm_page_grab(ksobj, i, VM_ALLOC_NORMAL | @@ -1248,7 +1247,7 @@ stpg = vm_page_grab(pmap->pm_pteobj, NPTP, VM_ALLOC_NORMAL | VM_ALLOC_RETRY | VM_ALLOC_WIRED | VM_ALLOC_ZERO); - + vm_page_flag_clear(stpg, PG_BUSY); stpg->valid = VM_PAGE_BITS_ALL; pmap_kenter((vm_offset_t)pmap->pm_sto, VM_PAGE_TO_PHYS(stpg)); ==== //depot/projects/s390/sys/s390/s390/swtch.S#2 (text+ko) ==== @@ -30,6 +30,11 @@ /* Mark current pmap inactive. */ l %r1, TD_PROC(%r2) l %r1, P_VMSPACE(%r1) +/* l %r3, PC_CPUMASK(%r5) + lnr %r3, %r3 + l %r4, VM_PMAP + PM_ACTIVE(%r1) + nr %r4, %r3 + st %r4, VM_PMAP + PM_ACTIVE(%r1)*/ xc VM_PMAP + PM_ACTIVE(4, %r1), PC_CPUMASK(%r5) /* Save current context. */ ==== //depot/projects/s390/sys/s390/s390/vm_machdep.c#5 (text+ko) ==== @@ -168,7 +168,15 @@ void cpu_set_upcall_kse(struct thread *td, struct kse *ke) { + struct trapframe *tf; + cpu_thread_clean(td); + + tf = td->td_frame; + tf->tf_gpr[15] = + (int)ke->ke_stack.ss_sp + ke->ke_stack.ss_size; + psw_define_addr(&tf->tf_psw, (u_long)ke->ke_upcall); + suword(&td->td_frame->tf_gpr[2], (u_long)ke->ke_mailbox); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200212260800.gBQ80Dnx017355>
