svn commit: r206546 - head/sys/kern

2010-04-13 Thread Konstantin Belousov
Author: kib
Date: Tue Apr 13 08:45:55 2010
New Revision: 206546
URL: http://svn.freebsd.org/changeset/base/206546

Log:
  Remove XXX comment. Add another comment, describing why f_vnode assignment
  is useful.
  
  MFC after:3 days

Modified:
  head/sys/kern/vfs_syscalls.c

Modified: head/sys/kern/vfs_syscalls.c
==
--- head/sys/kern/vfs_syscalls.cTue Apr 13 06:48:37 2010
(r206545)
+++ head/sys/kern/vfs_syscalls.cTue Apr 13 08:45:55 2010
(r206546)
@@ -1124,7 +1124,12 @@ kern_openat(struct thread *td, int fd, c
NDFREE(nd, NDF_ONLY_PNBUF);
vp = nd.ni_vp;
 
-   fp-f_vnode = vp;   /* XXX Does devfs need this? */
+   /*
+* Store the vnode, for any f_type. Typically, the vnode use
+* count is decremented by direct call to vn_closefile() for
+* files that switched type in the cdevsw fdopen() method.
+*/
+   fp-f_vnode = vp;
/*
 * If the file wasn't claimed by devfs bind it to the normal
 * vnode operations here.
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206548 - head/bin/ps

2010-04-13 Thread Konstantin Belousov
Author: kib
Date: Tue Apr 13 08:54:53 2010
New Revision: 206548
URL: http://svn.freebsd.org/changeset/base/206548

Log:
  Update the list of the process flags for P_WKILLED.
  
  MFC after:4 weeks

Modified:
  head/bin/ps/ps.1

Modified: head/bin/ps/ps.1
==
--- head/bin/ps/ps.1Tue Apr 13 08:52:20 2010(r206547)
+++ head/bin/ps/ps.1Tue Apr 13 08:54:53 2010(r206548)
@@ -29,7 +29,7 @@
 .\ @(#)ps.1   8.3 (Berkeley) 4/18/94
 .\ $FreeBSD$
 .\
-.Dd March 17, 2010
+.Dd April 13, 2010
 .Dt PS 1
 .Os
 .Sh NAME
@@ -298,6 +298,7 @@ the include file
 .It Dv P_WAITED Ta No 0x01000   Someone is waiting for us
 .It Dv P_WEXIT Ta No 0x02000Working on exiting
 .It Dv P_EXEC Ta No 0x04000 Process called exec
+.It Dv P_WKILLED Ta No 0x08000  Killed, shall go to kernel/user 
boundary ASAP
 .It Dv P_CONTINUED Ta No 0x1Proc has continued from a stopped state
 .It Dv P_STOPPED_SIG Ta No 0x2  Stopped due to SIGSTOP/SIGTSTP
 .It Dv P_STOPPED_TRACE Ta No 0x4Stopped because of tracing
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206550 - head/sbin/geom/class/sched

2010-04-13 Thread Luigi Rizzo
Author: luigi
Date: Tue Apr 13 09:52:42 2010
New Revision: 206550
URL: http://svn.freebsd.org/changeset/base/206550

Log:
  use correct .PATH, remove unused CFLAGS

Modified:
  head/sbin/geom/class/sched/Makefile

Modified: head/sbin/geom/class/sched/Makefile
==
--- head/sbin/geom/class/sched/Makefile Tue Apr 13 08:56:03 2010
(r206549)
+++ head/sbin/geom/class/sched/Makefile Tue Apr 13 09:52:42 2010
(r206550)
@@ -1,9 +1,8 @@
 # GEOM_LIBRARY_PATH
 # $FreeBSD$
 
-.PATH: /usr/src/sbin/geom/misc
-
-CFLAGS += -I/usr/src/sbin/geom
+.PATH: ${.CURDIR}/../../misc
+#CFLAGS += -I/usr/src/sbin/geom
 
 CLASS=sched
 
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


Re: svn commit: r206553 - in head/sys: amd64/amd64 amd64/ia32 i386/i386

2010-04-13 Thread Kostik Belousov
On Tue, Apr 13, 2010 at 10:12:58AM +, Konstantin Belousov wrote:
 Author: kib
 Date: Tue Apr 13 10:12:58 2010
 New Revision: 206553
 URL: http://svn.freebsd.org/changeset/base/206553
 
 Log:
   Change printf() calls to uprintf() for sigreturn() and trap() complaints
   about inacessible or wrong mcontext, and for dreaded kernel trap with
   interrupts disabled situation. The later is changed when trap is
   generated from user mode (shall never be ?).
   
   Normalize the messages to include both pid and thread name.
   
   MFC after:  1 week
I think that printfs from sigreturn should be changed to signal
delivery or even a call to trap_fatal(), but this is for other commit.

Anyway, the current situation where messages could be found in daily
periodic run (sigreturn pid 23334: cs=0x, so what ? pid is long time
gone) is not very useful for noting the issue.


pgpriHZZQhAIc.pgp
Description: PGP signature


svn commit: r206555 - head/sys/dev/aac

2010-04-13 Thread Ed Maste
Author: emaste
Date: Tue Apr 13 12:10:55 2010
New Revision: 206555
URL: http://svn.freebsd.org/changeset/base/206555

Log:
  Use enums in the aac_command_status_table rather than duplicating the same
  values in two places.
  
  Suggested by: Garrett Cooper

Modified:
  head/sys/dev/aac/aac_tables.h

Modified: head/sys/dev/aac/aac_tables.h
==
--- head/sys/dev/aac/aac_tables.h   Tue Apr 13 10:23:03 2010
(r206554)
+++ head/sys/dev/aac/aac_tables.h   Tue Apr 13 12:10:55 2010
(r206555)
@@ -34,42 +34,42 @@
  * relevant only to FSA operations.
  */
 static struct aac_code_lookup aac_command_status_table[] = {
-   {OK,  0},
-   {operation not permitted, 1},
-   {not found,   2},
-   {I/O error,   5},
-   {device not configured,   6},
-   {too big, 7},
-   {permission denied,   13},
-   {file exists, 17},
-   {cross-device link,   18},
-   {operation not supported by device,   19},
-   {not a directory, 20},
-   {is a directory,  21},
-   {invalid argument,22},
-   {file too large,  27},
-   {no space on device,  28},
-   {readonly filesystem, 30},
-   {too many links,  31},
-   {operation would block,   35},
-   {file name too long,  63},
-   {directory not empty, 66},
-   {quota exceeded,  69},
-   {stale file handle,   70},
-   {too many levels of remote in path,   71},
-   {device busy (spinning up),   72},
-   {bad file handle, 10001},
-   {not sync,10002},
-   {bad cookie,  10003},
-   {operation not supported, 10004},
-   {too small,   10005},
-   {server fault,10006},
-   {bad type,10007},
-   {jukebox, 10008},
-   {not mounted, 10009},
-   {in maintenance mode, 10010},
-   {stale ACL,   10011},
-   {bus reset - command aborted, 20001},
+   {OK,  ST_OK},
+   {operation not permitted, ST_PERM},
+   {not found,   ST_NOENT},
+   {I/O error,   ST_IO},
+   {device not configured,   ST_NXIO},
+   {too big, ST_E2BIG},
+   {permission denied,   ST_ACCES},
+   {file exists, ST_EXIST},
+   {cross-device link,   ST_XDEV},
+   {operation not supported by device,   ST_NODEV},
+   {not a directory, ST_NOTDIR},
+   {is a directory,  ST_ISDIR},
+   {invalid argument,ST_INVAL},
+   {file too large,  ST_FBIG},
+   {no space on device,  ST_NOSPC},
+   {readonly filesystem, ST_ROFS},
+   {too many links,  ST_MLINK},
+   {operation would block,   ST_WOULDBLOCK},
+   {file name too long,  ST_NAMETOOLONG},
+   {directory not empty, ST_NOTEMPTY},
+   {quota exceeded,  ST_DQUOT},
+   {stale file handle,   ST_STALE},
+   {too many levels of remote in path,   ST_REMOTE},
+   {device busy (spinning up),   ST_NOT_READY},
+   {bad file handle, ST_BADHANDLE},
+   {not sync,ST_NOT_SYNC},
+   {bad cookie,  ST_BAD_COOKIE},
+   {operation not supported, ST_NOTSUPP},
+   {too small,   ST_TOOSMALL},
+   {server fault,ST_SERVERFAULT},
+   {bad type,ST_BADTYPE},
+   {jukebox, ST_JUKEBOX},
+   {not mounted, ST_NOTMOUNTED},
+   {in maintenance mode, ST_MAINTMODE},
+   {stale ACL,   ST_STALEACL},
+   {bus reset - command aborted, ST_BUS_RESET},
{NULL,  0},
{unknown command status,  0}
 };
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206558 - head/sys/ia64/ia64

2010-04-13 Thread Marcel Moolenaar
Author: marcel
Date: Tue Apr 13 15:55:18 2010
New Revision: 206558
URL: http://svn.freebsd.org/changeset/base/206558

Log:
  Change the (generic) argument to ia64_store_mca_state() from the
  cpuid to the struct pcpu of the CPU. We casting between pointer
  types only then.

Modified:
  head/sys/ia64/ia64/mp_machdep.c

Modified: head/sys/ia64/ia64/mp_machdep.c
==
--- head/sys/ia64/ia64/mp_machdep.c Tue Apr 13 15:53:04 2010
(r206557)
+++ head/sys/ia64/ia64/mp_machdep.c Tue Apr 13 15:55:18 2010
(r206558)
@@ -152,13 +152,15 @@ cpu_topo(void)
 static void
 ia64_store_mca_state(void* arg)
 {
-   unsigned int ncpu = (unsigned int)(uintptr_t)arg;
-   struct thread* td;
+   struct pcpu *pc = arg;
+   struct thread *td = curthread;
 
-   /* ia64_mca_save_state() is CPU-sensitive, so bind ourself to our 
target CPU */
-   td = curthread;
+   /*
+* ia64_mca_save_state() is CPU-sensitive, so bind ourself to our
+* target CPU.
+*/
thread_lock(td);
-   sched_bind(td, ncpu);
+   sched_bind(td, pc-pc_cpuid);
thread_unlock(td);
 
/*
@@ -362,8 +364,7 @@ cpu_mp_unleash(void *dummy)
SLIST_FOREACH(pc, cpuhead, pc_allcpu) {
cpus++;
if (pc-pc_md.awake) {
-   kproc_create(ia64_store_mca_state,
-   (void*)((uintptr_t)pc-pc_cpuid), NULL, 0, 0,
+   kproc_create(ia64_store_mca_state, pc, NULL, 0, 0,
mca %u, pc-pc_cpuid);
smp_cpus++;
}
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206563 - head/sys/dev/mii

2010-04-13 Thread Pyun YongHyeon
Author: yongari
Date: Tue Apr 13 20:07:52 2010
New Revision: 206563
URL: http://svn.freebsd.org/changeset/base/206563

Log:
  Add Agere ET1011 PHY which is found on Belkin F5D5055 USB
  controller. Unlike Agere ET1011C, Agere ET1011 does not seem to
  need special DSP programming to workaround silicon bug.

Modified:
  head/sys/dev/mii/miidevs
  head/sys/dev/mii/truephy.c

Modified: head/sys/dev/mii/miidevs
==
--- head/sys/dev/mii/miidevsTue Apr 13 19:58:32 2010(r206562)
+++ head/sys/dev/mii/miidevsTue Apr 13 20:07:52 2010(r206563)
@@ -102,6 +102,7 @@ oui xxREALTEK   0x000732
  */
 
 /* Agere Systems PHYs */
+model AGERE ET1011 0x0001 ET1011 10/100/1000baseT PHY
 model AGERE ET1011C0x0004 ET1011C 10/100/1000baseT PHY
 
 /* Altima Communications PHYs */

Modified: head/sys/dev/mii/truephy.c
==
--- head/sys/dev/mii/truephy.c  Tue Apr 13 19:58:32 2010(r206562)
+++ head/sys/dev/mii/truephy.c  Tue Apr 13 20:07:52 2010(r206563)
@@ -76,6 +76,7 @@ static device_method_t truephy_methods[]
 };
 
 static const struct mii_phydesc truephys[] = {
+   MII_PHY_DESC(AGERE, ET1011),
MII_PHY_DESC(AGERE, ET1011C),
MII_PHY_END
 };
@@ -161,7 +162,10 @@ truephy_attach(device_t dev)
 
mii-mii_instance++;
 
-   truephy_reset(sc);
+   if (MII_MODEL(ma-mii_id2) == MII_MODEL_AGERE_ET1011)
+   mii_phy_reset(sc);
+   else
+   truephy_reset(sc);
 
sc-mii_capabilities = PHY_READ(sc, MII_BMSR)  ma-mii_capmask;
if (sc-mii_capabilities  BMSR_EXTSTAT) {
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206568 - head/usr.bin/calendar/calendars

2010-04-13 Thread Edwin Groothuis
Author: edwin
Date: Tue Apr 13 20:50:59 2010
New Revision: 206568
URL: http://svn.freebsd.org/changeset/base/206568

Log:
  Allerheilingen - Allerheiligen
  
  Submitted by: Ronald Klop ronald at realworks dot nl

Modified:
  head/usr.bin/calendar/calendars/calendar.dutch

Modified: head/usr.bin/calendar/calendars/calendar.dutch
==
--- head/usr.bin/calendar/calendars/calendar.dutch  Tue Apr 13 20:47:11 
2010(r206567)
+++ head/usr.bin/calendar/calendars/calendar.dutch  Tue Apr 13 20:50:59 
2010(r206568)
@@ -18,7 +18,7 @@ mei/01Dag van de Arbeid
 mei/04 Dodenherdenking
 mei/05 Bevrijdingsdag
 okt/04 Dierendag
-nov/01 Allerheilingen
+nov/01 Allerheiligen
 nov/02 Allerzielen
 nov/11 Sint Maarten
 nov/11 Elfde-van-de-elfde
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206570 - in head/sys/ia64: ia64 include

2010-04-13 Thread Marcel Moolenaar
Author: marcel
Date: Tue Apr 13 22:20:12 2010
New Revision: 206570
URL: http://svn.freebsd.org/changeset/base/206570

Log:
  Populate the sysctl tree with any MCA records we collected.
  The sequence number is used as the name of a sysctl node,
  under which we add the MCA records using the CPU id as the
  leaf  name.
  
  Add the hw.mca.inject sysctl to provide a way to inject
  MC errors and trigger machine checks.
  
  PR:   ia64/113102

Modified:
  head/sys/ia64/ia64/mca.c
  head/sys/ia64/include/mca.h

Modified: head/sys/ia64/ia64/mca.c
==
--- head/sys/ia64/ia64/mca.cTue Apr 13 21:32:06 2010(r206569)
+++ head/sys/ia64/ia64/mca.cTue Apr 13 22:20:12 2010(r206570)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2002 Marcel Moolenaar
+ * Copyright (c) 2002-2010 Marcel Moolenaar
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -37,6 +37,7 @@
 #include vm/vm.h
 #include vm/vm_kern.h
 #include machine/mca.h
+#include machine/pal.h
 #include machine/sal.h
 #include machine/smp.h
 
@@ -44,19 +45,19 @@ MALLOC_DEFINE(M_MCA, MCA, Machine Che
 
 struct mca_info {
STAILQ_ENTRY(mca_info) mi_link;
-   charmi_name[32];
+   u_long  mi_seqnr;
+   u_int   mi_cpuid;
size_t  mi_recsz;
charmi_record[0];
 };
 
-static STAILQ_HEAD(, mca_info) mca_records =
-STAILQ_HEAD_INITIALIZER(mca_records);
+STAILQ_HEAD(mca_info_list, mca_info);
 
-int64_tmca_info_size[SAL_INFO_TYPES];
-vm_offset_tmca_info_block;
-struct mtx mca_info_block_lock;
+static int64_t mca_info_size[SAL_INFO_TYPES];
+static vm_offset_t mca_info_block;
+static struct mtx  mca_info_block_lock;
 
-SYSCTL_NODE(_hw, OID_AUTO, mca, CTLFLAG_RW, 0, MCA container);
+SYSCTL_NODE(_hw, OID_AUTO, mca, CTLFLAG_RW, NULL, MCA container);
 
 static int mca_count;  /* Number of records stored. */
 static int mca_first;  /* First (lowest) record ID. */
@@ -69,6 +70,32 @@ SYSCTL_INT(_hw_mca, OID_AUTO, first, CTL
 SYSCTL_INT(_hw_mca, OID_AUTO, last, CTLFLAG_RD, mca_last, 0,
 Last record id);
 
+static struct mtx mca_sysctl_lock;
+
+static int
+mca_sysctl_inject(SYSCTL_HANDLER_ARGS)
+{
+   struct ia64_pal_result res;
+   u_int val;
+   int error;
+
+   val = 0;
+   error = sysctl_wire_old_buffer(req, sizeof(u_int));
+   if (!error)
+   error = sysctl_handle_int(oidp, val, 0, req);
+
+   if (error != 0 || req-newptr == NULL)
+   return (error);
+
+   /* For example: val=137 causes a fatal CPU error. */
+   res = ia64_call_pal_stacked(PAL_MC_ERROR_INJECT, val, 0, 0);
+   printf(%s: %#lx, %#lx, %#lx, %#lx\n, __func__, res.pal_status,
+   res.pal_result[0], res.pal_result[1], res.pal_result[2]);
+   return (0);
+}
+SYSCTL_PROC(_hw_mca, OID_AUTO, inject, CTLTYPE_INT | CTLFLAG_RW, NULL, 0,
+mca_sysctl_inject, I, set to trigger a MCA);
+
 static int
 mca_sysctl_handler(SYSCTL_HANDLER_ARGS)
 {
@@ -85,27 +112,8 @@ mca_sysctl_handler(SYSCTL_HANDLER_ARGS)
return (error);
 }
 
-void
-ia64_mca_populate(void)
-{
-   struct mca_info *rec;
-
-   mtx_lock_spin(mca_info_block_lock);
-   while (!STAILQ_EMPTY(mca_records)) {
-   rec = STAILQ_FIRST(mca_records);
-   STAILQ_REMOVE_HEAD(mca_records, mi_link);
-   mtx_unlock_spin(mca_info_block_lock);
-   (void)SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca),
-   OID_AUTO, rec-mi_name, CTLTYPE_OPAQUE | CTLFLAG_RD,
-   rec-mi_record, rec-mi_recsz, mca_sysctl_handler, S,MCA,
-   Error record);
-   mtx_lock_spin(mca_info_block_lock);
-   }
-   mtx_unlock_spin(mca_info_block_lock);
-}
-
-void
-ia64_mca_save_state(int type)
+static void
+ia64_mca_collect_state(int type, struct mca_info_list *reclst)
 {
struct ia64_sal_result result;
struct mca_record_header *hdr;
@@ -123,13 +131,13 @@ ia64_mca_save_state(int type)
if (mca_info_block == 0)
return;
 
-   mtx_lock_spin(mca_info_block_lock);
while (1) {
+   mtx_lock_spin(mca_info_block_lock);
result = ia64_sal_entry(SAL_GET_STATE_INFO, type, 0,
mca_info_block, 0, 0, 0, 0);
if (result.sal_status  0) {
mtx_unlock_spin(mca_info_block_lock);
-   return;
+   break;
}
 
hdr = (struct mca_record_header *)mca_info_block;
@@ -142,9 +150,10 @@ ia64_mca_save_state(int type)
M_NOWAIT | M_ZERO);
if (rec == NULL)
/* XXX: Not sure what to do. */
-   return;
+   break;
 
-   sprintf(rec-mi_name, %lld, (long long)seqnr);
+   

svn commit: r206571 - head/sbin/mca

2010-04-13 Thread Marcel Moolenaar
Author: marcel
Date: Tue Apr 13 22:27:39 2010
New Revision: 206571
URL: http://svn.freebsd.org/changeset/base/206571

Log:
  The sequence number is now a node under which the MCA records are
  hung by CPU id.
  When showing the MCA record, print the MIB as a comment.
  
  PR:   ia64/113102

Modified:
  head/sbin/mca/mca.c

Modified: head/sbin/mca/mca.c
==
--- head/sbin/mca/mca.c Tue Apr 13 22:20:12 2010(r206570)
+++ head/sbin/mca/mca.c Tue Apr 13 22:27:39 2010(r206571)
@@ -53,10 +53,12 @@ __FBSDID($FreeBSD$);
 
 #defineBCD(x)  ((x  4) * 10 + (x  15))
 
+#defineHW_MCA_MAX_CPUID255
+
 static char hw_mca_count[] = hw.mca.count;
 static char hw_mca_first[] = hw.mca.first;
 static char hw_mca_last[] = hw.mca.last;
-static char hw_mca_recid[] = hw.mca.%d;
+static char hw_mca_recid[] = hw.mca.%lu.%u;
 
 static char default_dumpfile[] = /var/log/mca.log;
 
@@ -372,10 +374,13 @@ show_section(struct mca_section_header *
 }
 
 static void
-show(char *data)
+show(char *data, const char *mib)
 {
size_t reclen, seclen;
 
+   if (mib != NULL)
+   printf(!-- MIB: %s --\n, mib);
+
printf(record\n);
reclen = show_header((void*)data) - sizeof(struct mca_record_header);
data += sizeof(struct mca_record_header);
@@ -402,7 +407,7 @@ showall(char *buf, size_t buflen)
if (buflen  reclen)
return;
 
-   show(buf);
+   show(buf, NULL);
 
buf += reclen;
buflen -= reclen;
@@ -442,7 +447,7 @@ main(int argc, char **argv)
char *buf;
size_t len;
int ch, error, fd;
-   int count, first, last;
+   int count, first, last, cpuid;
 
while ((ch = getopt(argc, argv, df:)) != -1) {
switch(ch) {
@@ -481,12 +486,19 @@ main(int argc, char **argv)
if (error)
err(1, hw_mca_last);
 
+   cpuid = 0;
while (count  first = last) {
-   sprintf(mib, hw_mca_recid, first);
-   len = 0;
-   error = sysctlbyname(mib, NULL, len, NULL, 0);
-   if (error == ENOENT) {
+   do {
+   sprintf(mib, hw_mca_recid, first, cpuid);
+   len = 0;
+   error = sysctlbyname(mib, NULL, len, NULL, 0);
+   if (error != ENOENT)
+   break;
+   cpuid++;
+   } while (cpuid = HW_MCA_MAX_CPUID);
+   if (error == ENOENT  cpuid  HW_MCA_MAX_CPUID) {
first++;
+   cpuid = 0;
continue;
}
if (error)
@@ -503,11 +515,15 @@ main(int argc, char **argv)
if (fl_dump)
dump(buf);
else
-   show(buf);
+   show(buf, mib);
 
free(buf);
-   first++;
count--;
+   if (cpuid == HW_MCA_MAX_CPUID) {
+   first++;
+   cpuid = 0;
+   } else
+   cpuid++;
}
} else {
fd = open(file, O_RDONLY);
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206582 - head/sys/mips/mips

2010-04-13 Thread Neel Natu
Author: neel
Date: Wed Apr 14 01:29:31 2010
New Revision: 206582
URL: http://svn.freebsd.org/changeset/base/206582

Log:
  Revert the vm_machdep.c part of r205072.
  
  This causes a panic in vm_thread_dispose() when it tries to add this kstack
  to the kstack cache. This happens only when 'td_kstack' is not (PAGE_SIZE * 2)
  bytes aligned and we have unmapped the page at that address in 
cpu_thread_alloc.
  
  Pointed out by: nwhitehorn@

Modified:
  head/sys/mips/mips/vm_machdep.c

Modified: head/sys/mips/mips/vm_machdep.c
==
--- head/sys/mips/mips/vm_machdep.c Wed Apr 14 01:24:09 2010
(r206581)
+++ head/sys/mips/mips/vm_machdep.c Wed Apr 14 01:29:31 2010
(r206582)
@@ -214,16 +214,6 @@ cpu_thread_swapin(struct thread *td)
 {
pt_entry_t *pte;
int i;
-   vm_offset_t unused_kstack_page;
-
-   /*
-* Unmap the unused kstack page.
-*/
-   unused_kstack_page = td-td_kstack;
-   if (td-td_md.md_realstack == td-td_kstack)
-   unused_kstack_page += (KSTACK_PAGES - 1) * PAGE_SIZE;
-
-   pmap_kremove(unused_kstack_page);
 
/*
 * The kstack may be at a different physical address now.
@@ -249,19 +239,13 @@ cpu_thread_swapout(struct thread *td)
 void
 cpu_thread_alloc(struct thread *td)
 {
-   vm_offset_t unused_kstack_page;
pt_entry_t *pte;
int i;
 
-   if (td-td_kstack  (1  PAGE_SHIFT)) {
+   if (td-td_kstack  (1  PAGE_SHIFT))
td-td_md.md_realstack = td-td_kstack + PAGE_SIZE;
-   unused_kstack_page = td-td_kstack;
-   } else {
+   else
td-td_md.md_realstack = td-td_kstack;
-   unused_kstack_page = td-td_kstack +
-   (KSTACK_PAGES - 1) * PAGE_SIZE;
-   }
-   pmap_kremove(unused_kstack_page);
 
td-td_pcb = (struct pcb *)(td-td_md.md_realstack +
(td-td_kstack_pages - 1) * PAGE_SIZE) - 1;
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org


svn commit: r206584 - head/sys/mips/mips

2010-04-13 Thread Neel Natu
Author: neel
Date: Wed Apr 14 01:57:53 2010
New Revision: 206584
URL: http://svn.freebsd.org/changeset/base/206584

Log:
  Destroy the pmap 'pm_mutex' in pmap_release() otherwise we will panic
  subsequently in pmap_pinit() with the following signature:
  
  panic: lock pmap 0xc7878bc8 already initialized
  
  This bug was uncovered by the changes made to vm_map.c in r206140.

Modified:
  head/sys/mips/mips/pmap.c

Modified: head/sys/mips/mips/pmap.c
==
--- head/sys/mips/mips/pmap.c   Wed Apr 14 01:43:25 2010(r206583)
+++ head/sys/mips/mips/pmap.c   Wed Apr 14 01:57:53 2010(r206584)
@@ -1263,6 +1263,7 @@ pmap_release(pmap_t pmap)
ptdpg-wire_count--;
atomic_subtract_int(cnt.v_wire_count, 1);
vm_page_free_zero(ptdpg);
+   PMAP_LOCK_DESTROY(pmap);
 }
 
 /*
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to svn-src-head-unsubscr...@freebsd.org