Skip site navigation (1)Skip section navigation (2)
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>