Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 Apr 2008 07:27:52 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 140072 for review
Message-ID:  <200804150727.m3F7Rquw036051@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=140072

Change 140072 by imp@imp_paco-paco on 2008/04/15 07:27:44

	IFC @140069

Affected files ...

.. //depot/projects/arm/src/Makefile.inc1#37 integrate
.. //depot/projects/arm/src/lib/libthr/thread/thr_rwlock.c#3 integrate
.. //depot/projects/arm/src/sbin/restore/dirs.c#5 integrate
.. //depot/projects/arm/src/sys/amd64/include/clock.h#9 integrate
.. //depot/projects/arm/src/sys/amd64/include/pcb_ext.h#2 delete
.. //depot/projects/arm/src/sys/amd64/isa/clock.c#19 integrate
.. //depot/projects/arm/src/sys/conf/files.amd64#32 integrate
.. //depot/projects/arm/src/sys/conf/files.i386#34 integrate
.. //depot/projects/arm/src/sys/dev/acpi_support/acpi_ibm.c#9 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-all.h#21 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-chipset.c#45 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-dma.c#10 integrate
.. //depot/projects/arm/src/sys/dev/ata/ata-lowlevel.c#14 integrate
.. //depot/projects/arm/src/sys/dev/fb/vga.c#5 integrate
.. //depot/projects/arm/src/sys/dev/k8temp/k8temp.c#2 integrate
.. //depot/projects/arm/src/sys/dev/nvram/nvram.c#2 integrate
.. //depot/projects/arm/src/sys/dev/re/if_re.c#33 integrate
.. //depot/projects/arm/src/sys/fs/smbfs/smbfs_vnops.c#9 integrate
.. //depot/projects/arm/src/sys/i386/include/clock.h#11 integrate
.. //depot/projects/arm/src/sys/i386/isa/clock.c#20 integrate
.. //depot/projects/arm/src/sys/ia64/conf/GENERIC#18 integrate
.. //depot/projects/arm/src/sys/ia64/conf/SKI#5 integrate
.. //depot/projects/arm/src/sys/ia64/ia64/interrupt.c#14 integrate
.. //depot/projects/arm/src/sys/ia64/ia64/machdep.c#23 integrate
.. //depot/projects/arm/src/sys/ia64/ia64/sapic.c#3 integrate
.. //depot/projects/arm/src/sys/isa/atrtc.c#2 integrate
.. //depot/projects/arm/src/sys/isa/rtc.h#2 integrate
.. //depot/projects/arm/src/sys/kern/sched_ule.c#34 integrate
.. //depot/projects/arm/src/sys/kern/uipc_socket.c#43 integrate
.. //depot/projects/arm/src/sys/mips/include/ns16550.h#2 delete
.. //depot/projects/arm/src/sys/mips/include/pcb_ext.h#2 delete
.. //depot/projects/arm/src/sys/mips/mips/cache.c#2 integrate
.. //depot/projects/arm/src/sys/mips/mips/copystr.S#2 integrate
.. //depot/projects/arm/src/sys/mips/mips/machdep.c#2 integrate
.. //depot/projects/arm/src/sys/mips/mips/mainbus.c#2 integrate
.. //depot/projects/arm/src/sys/net/bpf.c#28 integrate
.. //depot/projects/arm/src/sys/netinet/sctp_constants.h#21 integrate
.. //depot/projects/arm/src/sys/netinet/sctp_indata.c#24 integrate
.. //depot/projects/arm/src/sys/netinet/sctp_input.c#25 integrate
.. //depot/projects/arm/src/sys/netinet/sctp_output.c#25 integrate
.. //depot/projects/arm/src/sys/netinet/sctp_usrreq.c#25 integrate
.. //depot/projects/arm/src/sys/netinet/sctp_var.h#15 integrate
.. //depot/projects/arm/src/sys/netinet6/sctp6_usrreq.c#20 integrate
.. //depot/projects/arm/src/sys/sys/protosw.h#9 integrate
.. //depot/projects/arm/src/sys/sys/socket.h#10 integrate
.. //depot/projects/arm/src/usr.sbin/ndiscvt/inf.c#2 integrate
.. //depot/projects/arm/src/usr.sbin/ndiscvt/ndiscvt.c#3 integrate
.. //depot/projects/arm/src/usr.sbin/ndiscvt/ndisgen.sh#2 integrate

Differences ...

==== //depot/projects/arm/src/Makefile.inc1#37 (text+ko) ====

@@ -1,5 +1,5 @@
 #
-# $FreeBSD: src/Makefile.inc1,v 1.602 2008/03/29 17:44:38 ru Exp $
+# $FreeBSD: src/Makefile.inc1,v 1.603 2008/04/15 05:14:42 ru Exp $
 #
 # Make command line options:
 #	-DNO_CLEANDIR run ${MAKE} clean, instead of ${MAKE} cleandir
@@ -965,10 +965,12 @@
 #
 # cross-tools: Build cross-building tools
 #
-.if ${TARGET_ARCH} != ${MACHINE_ARCH}
+.if ${TARGET_ARCH} != ${MACHINE_ARCH} || ${BOOTSTRAPPING} < 800035
 .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386"
 _btxld=		usr.sbin/btxld
 .endif
+.endif
+.if ${TARGET_ARCH} != ${MACHINE_ARCH}
 .if ${MK_RESCUE} != "no" || defined(RELEASEDIR)
 _crunchide=	usr.sbin/crunch/crunchide
 .endif

==== //depot/projects/arm/src/lib/libthr/thread/thr_rwlock.c#3 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/lib/libthr/thread/thr_rwlock.c,v 1.14 2008/04/02 04:32:31 davidxu Exp $
+ * $FreeBSD: src/lib/libthr/thread/thr_rwlock.c,v 1.15 2008/04/14 08:08:40 davidxu Exp $
  */
 
 #include <errno.h>
@@ -32,7 +32,6 @@
 
 #include "namespace.h"
 #include <pthread.h>
-#include <pthread_np.h>
 #include "un-namespace.h"
 #include "thr_private.h"
 

==== //depot/projects/arm/src/sbin/restore/dirs.c#5 (text+ko) ====

@@ -37,7 +37,7 @@
 static char sccsid[] = "@(#)dirs.c	8.7 (Berkeley) 5/1/95";
 #endif
 static const char rcsid[] =
-  "$FreeBSD: src/sbin/restore/dirs.c,v 1.33 2008/04/11 21:48:13 mckusick Exp $";
+  "$FreeBSD: src/sbin/restore/dirs.c,v 1.34 2008/04/14 20:15:53 mckusick Exp $";
 #endif /* not lint */
 
 #include <sys/param.h>
@@ -120,6 +120,7 @@
 static void		 rst_seekdir(RST_DIR *, long, long);
 static long		 rst_telldir(RST_DIR *);
 static struct direct	*searchdir(ino_t, char *);
+static void		 fail_dirtmp(char *);
 
 /*
  *	Extract directory contents, building up a directory structure
@@ -147,7 +148,7 @@
 	if (fd == -1 || (df = fdopen(fd, "w")) == NULL) {
 		if (fd != -1)
 			close(fd);
-		warn("%s - cannot create directory temporary\nfopen", dirfile);
+		warn("%s: cannot create directory database", dirfile);
 		done(1);
 	}
 	if (genmode != 0) {
@@ -160,7 +161,7 @@
 		if (fd == -1 || (mf = fdopen(fd, "w")) == NULL) {
 			if (fd != -1)
 				close(fd);
-			warn("%s - cannot create modefile\nfopen", modefile);
+			warn("%s: cannot create modefile", modefile);
 			done(1);
 		}
 	}
@@ -172,25 +173,24 @@
 	for (;;) {
 		curfile.name = "<directory file - name unknown>";
 		curfile.action = USING;
-		if (curfile.mode == 0 || (curfile.mode & IFMT) != IFDIR) {
-			(void) fclose(df);
-			dirp = opendirfile(dirfile);
-			if (dirp == NULL)
-				fprintf(stderr, "opendirfile: %s\n",
-				    strerror(errno));
-			if (mf != NULL)
-				(void) fclose(mf);
-			i = dirlookup(dot);
-			if (i == 0)
-				panic("Root directory is not on tape\n");
-			return;
-		}
+		if (curfile.mode == 0 || (curfile.mode & IFMT) != IFDIR)
+			break;
 		itp = allocinotab(&curfile, seekpt);
 		getfile(putdir, putdirattrs, xtrnull);
 		putent(&nulldir);
 		flushent();
 		itp->t_size = seekpt - itp->t_seekpt;
 	}
+	if (fclose(df) != 0)
+		fail_dirtmp(dirfile);
+	dirp = opendirfile(dirfile);
+	if (dirp == NULL)
+		fprintf(stderr, "opendirfile: %s\n", strerror(errno));
+	if (mf != NULL && fclose(mf) != 0)
+		fail_dirtmp(modefile);
+	i = dirlookup(dot);
+	if (i == 0)
+		panic("Root directory is not on tape\n");
 }
 
 /*
@@ -390,7 +390,8 @@
 	if (dirloc + dp->d_reclen > DIRBLKSIZ) {
 		((struct direct *)(dirbuf + prev))->d_reclen =
 		    DIRBLKSIZ - prev;
-		(void) fwrite(dirbuf, 1, DIRBLKSIZ, df);
+		if (fwrite(dirbuf, DIRBLKSIZ, 1, df) != 1)
+			fail_dirtmp(dirfile);
 		dirloc = 0;
 	}
 	memmove(dirbuf + dirloc, dp, (long)dp->d_reclen);
@@ -405,7 +406,8 @@
 flushent(void)
 {
 	((struct direct *)(dirbuf + prev))->d_reclen = DIRBLKSIZ - prev;
-	(void) fwrite(dirbuf, (int)dirloc, 1, df);
+	if (fwrite(dirbuf, (int)dirloc, 1, df) != 1)
+		fail_dirtmp(dirfile);
 	seekpt = ftell(df);
 	dirloc = 0;
 }
@@ -417,8 +419,8 @@
 putdirattrs(char *buf, long size)
 {
 
-	if (mf != NULL)
-		(void) fwrite(buf, 1, size, mf);
+	if (mf != NULL && fwrite(buf, size, 1, mf) != 1)
+		fail_dirtmp(modefile);
 }
 
 /*
@@ -582,6 +584,11 @@
 	myuid = getuid();
 	for (;;) {
 		(void) fread((char *)&node, 1, sizeof(struct modeinfo), mf);
+		if (ferror(mf)) {
+			warn("%s: cannot read modefile.", modefile);
+			fprintf(stderr, "Mode, owner, and times not set.\n");
+			break;
+		}
 		if (feof(mf))
 			break;
 		if (node.extsize > 0) {
@@ -596,8 +603,22 @@
 			}
 			if (bufsize >= node.extsize) {
 				(void) fread(buf, 1, node.extsize, mf);
+				if (ferror(mf)) {
+					warn("%s: cannot read modefile.",
+					    modefile);
+					fprintf(stderr, "Not all external ");
+					fprintf(stderr, "attributes set.\n");
+					break;
+				}
 			} else {
 				(void) fseek(mf, node.extsize, SEEK_CUR);
+				if (ferror(mf)) {
+					warn("%s: cannot seek in modefile.",
+					    modefile);
+					fprintf(stderr, "Not all directory ");
+					fprintf(stderr, "attributes set.\n");
+					break;
+				}
 			}
 		}
 		ep = lookupino(node.ino);
@@ -639,8 +660,6 @@
 	}
 	if (bufsize > 0)
 		free(buf);
-	if (ferror(mf))
-		panic("error setting directory modes\n");
 	(void) fclose(mf);
 }
 
@@ -734,7 +753,8 @@
 	node.flags = ctxp->file_flags;
 	node.uid = ctxp->uid;
 	node.gid = ctxp->gid;
-	(void) fwrite((char *)&node, 1, sizeof(struct modeinfo), mf);
+	if (fwrite((char *)&node, sizeof(struct modeinfo), 1, mf) != 1)
+		fail_dirtmp(modefile);
 	return (itp);
 }
 
@@ -760,9 +780,33 @@
 {
 
 	closemt();
-	if (modefile[0] != '#')
+	if (modefile[0] != '#') {
+		(void) truncate(modefile, 0);
 		(void) unlink(modefile);
-	if (dirfile[0] != '#')
+	}
+	if (dirfile[0] != '#') {
+		(void) truncate(dirfile, 0);
 		(void) unlink(dirfile);
+	}
 	exit(exitcode);
 }
+
+/*
+ * Print out information about the failure to save directory,
+ * extended attribute, and mode information.
+ */
+static void
+fail_dirtmp(char *filename)
+{
+	const char *tmpdir;
+
+	warn("%s: cannot write directory database", filename);
+	if (errno == ENOSPC) {
+		if ((tmpdir = getenv("TMPDIR")) == NULL || tmpdir[0] == '\0')
+			tmpdir = _PATH_TMP;
+		fprintf(stderr, "Try making space in %s, %s\n%s\n", tmpdir,
+		    "or set environment variable TMPDIR",
+		    "to an alternate location with more disk space.");
+	}
+	done(1);
+}

==== //depot/projects/arm/src/sys/amd64/include/clock.h#9 (text+ko) ====

@@ -3,7 +3,7 @@
  * Garrett Wollman, September 1994.
  * This file is in the public domain.
  *
- * $FreeBSD: src/sys/amd64/include/clock.h,v 1.58 2008/03/26 20:09:18 phk Exp $
+ * $FreeBSD: src/sys/amd64/include/clock.h,v 1.59 2008/04/14 07:59:59 phk Exp $
  */
 
 #ifndef _MACHINE_CLOCK_H_
@@ -27,8 +27,6 @@
  * Driver to clock driver interface.
  */
 
-int	rtcin(int reg);
-void	writertc(int reg, unsigned char val);
 void	init_TSC(void);
 void	init_TSC_tc(void);
 

==== //depot/projects/arm/src/sys/amd64/isa/clock.c#19 (text+ko) ====

@@ -33,19 +33,12 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.241 2008/03/26 22:11:59 phk Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/isa/clock.c,v 1.242 2008/04/14 07:59:59 phk Exp $");
 
 /*
  * Routines to handle clock hardware.
  */
 
-/*
- * inittodr, settodr and support routines written
- * by Christoph Robitschko <chmr@edvz.tu-graz.ac.at>
- *
- * reintroduced and updated by Chris Stenton <chris@gnome.co.uk> 8/10/94
- */
-
 #include "opt_clock.h"
 #include "opt_isa.h"
 
@@ -62,7 +55,6 @@
 #include <sys/module.h>
 #include <sys/sched.h>
 #include <sys/sysctl.h>
-#include <sys/cons.h>
 
 #include <machine/clock.h>
 #include <machine/cpu.h>
@@ -78,13 +70,6 @@
 #include <isa/isavar.h>
 #endif
 
-/*
- * 32-bit time_t's can't reach leap years before 1904 or after 2036, so we
- * can use a simple formula for leap years.
- */
-#define	LEAPYEAR(y) (((u_int)(y) % 4 == 0) ? 1 : 0)
-#define DAYSPERYEAR   (31+28+31+30+31+30+31+31+30+31+30+31)
-
 #define	TIMER_DIV(x) ((i8254_freq + (x) / 2) / (x))
 
 int	clkintr_pending;
@@ -98,20 +83,14 @@
 TUNABLE_INT("hw.i8254.freq", &i8254_freq);
 int	i8254_max_count;
 static int i8254_real_max_count;
-#define	RTC_LOCK	mtx_lock_spin(&clock_lock)
-#define	RTC_UNLOCK	mtx_unlock_spin(&clock_lock)
 
-static	struct mtx clock_lock;
-static	const u_char daysinmonth[] = {31,28,31,30,31,30,31,31,30,31,30,31};
+struct mtx clock_lock;
 static	struct intsrc *i8254_intsrc;
 static	u_int32_t i8254_lastcount;
 static	u_int32_t i8254_offset;
 static	int	(*i8254_pending)(struct intsrc *);
 static	int	i8254_ticked;
 static	int	using_lapic_timer;
-static	int	rtc_reg = -1;
-static	u_char	rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
-static	u_char	rtc_statusb = RTCSB_24HR;
 
 /* Values for timerX_state: */
 #define	RELEASED	0
@@ -239,19 +218,6 @@
 	return(flag ? FILTER_HANDLED : FILTER_STRAY);
 }
 
-#include "opt_ddb.h"
-#ifdef DDB
-#include <ddb/ddb.h>
-
-DB_SHOW_COMMAND(rtc, rtc)
-{
-	printf("%02x/%02x/%02x %02x:%02x:%02x, A = %02x, B = %02x, C = %02x\n",
-	       rtcin(RTC_YEAR), rtcin(RTC_MONTH), rtcin(RTC_DAY),
-	       rtcin(RTC_HRS), rtcin(RTC_MIN), rtcin(RTC_SEC),
-	       rtcin(RTC_STATUSA), rtcin(RTC_STATUSB), rtcin(RTC_INTR));
-}
-#endif /* DDB */
-
 static int
 getit(void)
 {
@@ -386,50 +352,6 @@
 #endif
 }
 
-/*
- * RTC support routines
- */
-
-int
-rtcin(reg)
-	int reg;
-{
-	u_char val;
-
-	RTC_LOCK;
-	if (rtc_reg != reg) {
-		inb(0x84);
-		outb(IO_RTC, reg);
-		rtc_reg = reg;
-		inb(0x84);
-	}
-	val = inb(IO_RTC + 1);
-	RTC_UNLOCK;
-	return (val);
-}
-
-void
-writertc(int reg, u_char val)
-{
-
-	RTC_LOCK;
-	if (rtc_reg != reg) {
-		inb(0x84);
-		outb(IO_RTC, reg);
-		rtc_reg = reg;
-		inb(0x84);
-	}
-	outb(IO_RTC + 1, val);
-	inb(0x84);
-	RTC_UNLOCK;
-}
-
-static __inline int
-readrtc(int port)
-{
-	return(bcd2bin(rtcin(port)));
-}
-
 static void
 set_i8254_freq(u_int freq, int intr_freq)
 {
@@ -468,8 +390,7 @@
 startrtclock()
 {
 
-	writertc(RTC_STATUSA, rtc_statusa);
-	writertc(RTC_STATUSB, RTCSB_24HR);
+	atrtc_start();
 
 	set_i8254_freq(i8254_freq, hz);
 	tc_init(&i8254_timecounter);
@@ -478,140 +399,6 @@
 }
 
 /*
- * Initialize the time of day register, based on the time base which is, e.g.
- * from a filesystem.
- */
-void
-inittodr(time_t base)
-{
-	unsigned long	sec, days;
-	int		year, month;
-	int		y, m, s;
-	struct timespec ts;
-
-	if (base) {
-		s = splclock();
-		ts.tv_sec = base;
-		ts.tv_nsec = 0;
-		tc_setclock(&ts);
-		splx(s);
-	}
-
-	/* Look if we have a RTC present and the time is valid */
-	if (!(rtcin(RTC_STATUSD) & RTCSD_PWR))
-		goto wrong_time;
-
-	/* wait for time update to complete */
-	/* If RTCSA_TUP is zero, we have at least 244us before next update */
-	s = splhigh();
-	while (rtcin(RTC_STATUSA) & RTCSA_TUP) {
-		splx(s);
-		s = splhigh();
-	}
-
-	days = 0;
-#ifdef USE_RTC_CENTURY
-	year = readrtc(RTC_YEAR) + readrtc(RTC_CENTURY) * 100;
-#else
-	year = readrtc(RTC_YEAR) + 1900;
-	if (year < 1970)
-		year += 100;
-#endif
-	if (year < 1970) {
-		splx(s);
-		goto wrong_time;
-	}
-	month = readrtc(RTC_MONTH);
-	for (m = 1; m < month; m++)
-		days += daysinmonth[m-1];
-	if ((month > 2) && LEAPYEAR(year))
-		days ++;
-	days += readrtc(RTC_DAY) - 1;
-	for (y = 1970; y < year; y++)
-		days += DAYSPERYEAR + LEAPYEAR(y);
-	sec = ((( days * 24 +
-		  readrtc(RTC_HRS)) * 60 +
-		  readrtc(RTC_MIN)) * 60 +
-		  readrtc(RTC_SEC));
-	/* sec now contains the number of seconds, since Jan 1 1970,
-	   in the local time zone */
-
-	sec += utc_offset();
-
-	y = time_second - sec;
-	if (y <= -2 || y >= 2) {
-		/* badly off, adjust it */
-		ts.tv_sec = sec;
-		ts.tv_nsec = 0;
-		tc_setclock(&ts);
-	}
-	splx(s);
-	return;
-
-wrong_time:
-	printf("Invalid time in clock: check and reset the date!\n");
-}
-
-/*
- * Write system time back to RTC
- */
-void
-resettodr()
-{
-	unsigned long	tm;
-	int		y, m, s;
-
-	if (disable_rtc_set)
-		return;
-
-	s = splclock();
-	tm = time_second;
-	splx(s);
-
-	/* Disable RTC updates and interrupts. */
-	writertc(RTC_STATUSB, RTCSB_HALT | RTCSB_24HR);
-
-	/* Calculate local time to put in RTC */
-
-	tm -= utc_offset();
-
-	writertc(RTC_SEC, bin2bcd(tm%60)); tm /= 60;	/* Write back Seconds */
-	writertc(RTC_MIN, bin2bcd(tm%60)); tm /= 60;	/* Write back Minutes */
-	writertc(RTC_HRS, bin2bcd(tm%24)); tm /= 24;	/* Write back Hours   */
-
-	/* We have now the days since 01-01-1970 in tm */
-	writertc(RTC_WDAY, (tm + 4) % 7 + 1);		/* Write back Weekday */
-	for (y = 1970, m = DAYSPERYEAR + LEAPYEAR(y);
-	     tm >= m;
-	     y++,      m = DAYSPERYEAR + LEAPYEAR(y))
-	     tm -= m;
-
-	/* Now we have the years in y and the day-of-the-year in tm */
-	writertc(RTC_YEAR, bin2bcd(y%100));		/* Write back Year    */
-#ifdef USE_RTC_CENTURY
-	writertc(RTC_CENTURY, bin2bcd(y/100));		/* ... and Century    */
-#endif
-	for (m = 0; ; m++) {
-		int ml;
-
-		ml = daysinmonth[m];
-		if (m == 1 && LEAPYEAR(y))
-			ml++;
-		if (tm < ml)
-			break;
-		tm -= ml;
-	}
-
-	writertc(RTC_MONTH, bin2bcd(m + 1));            /* Write back Month   */
-	writertc(RTC_DAY, bin2bcd(tm + 1));             /* Write back Month Day */
-
-	/* Reenable RTC updates and interrupts. */
-	writertc(RTC_STATUSB, rtc_statusb);
-	rtcin(RTC_INTR);
-}
-
-
-/*
  * Start both clocks running.
  */
 void
@@ -627,8 +414,8 @@
 	 * timecounter to user a simpler algorithm.
 	 */
 	if (!using_lapic_timer) {
-		intr_add_handler("clk", 0, (driver_filter_t *)clkintr, NULL, NULL,
-		    INTR_TYPE_CLK, NULL);
+		intr_add_handler("clk", 0, (driver_filter_t *)clkintr, NULL,
+		    NULL, INTR_TYPE_CLK, NULL);
 		i8254_intsrc = intr_lookup_source(0);
 		if (i8254_intsrc != NULL)
 			i8254_pending =
@@ -641,8 +428,7 @@
 	}
 
 	/* Initialize RTC. */
-	writertc(RTC_STATUSA, rtc_statusa);
-	writertc(RTC_STATUSB, RTCSB_24HR);
+	atrtc_start();
 
 	/*
 	 * If the separate statistics clock hasn't been explicility disabled
@@ -653,19 +439,18 @@
 	if (!statclock_disable && !using_lapic_timer) {
 		diag = rtcin(RTC_DIAG);
 		if (diag != 0)
-			printf("RTC BIOS diagnostic error %b\n", diag, RTCDG_BITS);
+			printf("RTC BIOS diagnostic error %b\n",
+			    diag, RTCDG_BITS);
 
 	        /* Setting stathz to nonzero early helps avoid races. */
 		stathz = RTC_NOPROFRATE;
 		profhz = RTC_PROFRATE;
 
 		/* Enable periodic interrupts from the RTC. */
-		rtc_statusb |= RTCSB_PINTR;
-		intr_add_handler("rtc", 8, (driver_filter_t *)rtcintr, NULL, NULL,
+		intr_add_handler("rtc", 8,
+		    (driver_filter_t *)rtcintr, NULL, NULL,
 		    INTR_TYPE_CLK, NULL);
-
-		writertc(RTC_STATUSB, rtc_statusb);
-		rtcin(RTC_INTR);
+		atrtc_enable_intr();
 	}
 
 	init_TSC_tc();
@@ -677,8 +462,7 @@
 
 	if (using_lapic_timer)
 		return;
-	rtc_statusa = RTCSA_DIVIDER | RTCSA_PROF;
-	writertc(RTC_STATUSA, rtc_statusa);
+	atrtc_rate(RTCSA_PROF);
 	psdiv = pscnt = psratio;
 }
 
@@ -688,8 +472,7 @@
 
 	if (using_lapic_timer)
 		return;
-	rtc_statusa = RTCSA_DIVIDER | RTCSA_NOPROF;
-	writertc(RTC_STATUSA, rtc_statusa);
+	atrtc_rate(RTCSA_NOPROF);
 	psdiv = pscnt = 1;
 }
 
@@ -738,7 +521,8 @@
 	count = i8254_max_count - ((high << 8) | low);
 	if (count < i8254_lastcount ||
 	    (!i8254_ticked && (clkintr_pending ||
-	    ((count < 20 || (!(rflags & PSL_I) && count < i8254_max_count / 2u)) &&
+	    ((count < 20 || (!(rflags & PSL_I) &&
+	    count < i8254_max_count / 2u)) &&
 	    i8254_pending != NULL && i8254_pending(i8254_intsrc))))) {
 		i8254_ticked = 1;
 		i8254_offset += i8254_max_count;
@@ -751,11 +535,10 @@
 
 #ifdef DEV_ISA
 /*
- * Attach to the ISA PnP descriptors for the timer and realtime clock.
+ * Attach to the ISA PnP descriptors for the timer
  */
 static struct isa_pnp_id attimer_ids[] = {
 	{ 0x0001d041 /* PNP0100 */, "AT timer" },
-	{ 0x000bd041 /* PNP0B00 */, "AT realtime clock" },
 	{ 0 }
 };
 
@@ -764,7 +547,8 @@
 {
 	int result;
 	
-	if ((result = ISA_PNP_PROBE(device_get_parent(dev), dev, attimer_ids)) <= 0)
+	result = ISA_PNP_PROBE(device_get_parent(dev), dev, attimer_ids);
+	if (result <= 0)
 		device_quiet(dev);
 	return(result);
 }
@@ -781,8 +565,8 @@
 	DEVMETHOD(device_attach,	attimer_attach),
 	DEVMETHOD(device_detach,	bus_generic_detach),
 	DEVMETHOD(device_shutdown,	bus_generic_shutdown),
-	DEVMETHOD(device_suspend,	bus_generic_suspend),	/* XXX stop statclock? */
-	DEVMETHOD(device_resume,	bus_generic_resume),	/* XXX restart statclock? */
+	DEVMETHOD(device_suspend,	bus_generic_suspend),
+	DEVMETHOD(device_resume,	bus_generic_resume),
 	{ 0, 0 }
 };
 

==== //depot/projects/arm/src/sys/conf/files.amd64#32 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.amd64,v 1.119 2008/04/12 14:20:22 rpaulo Exp $
+# $FreeBSD: src/sys/conf/files.amd64,v 1.120 2008/04/14 07:59:59 phk Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -207,9 +207,12 @@
 dev/syscons/scvtb.c		optional	sc
 dev/uart/uart_cpu_amd64.c	optional	uart
 dev/wpi/if_wpi.c		optional	wpi
+isa/atrtc.c			standard
 isa/syscons_isa.c		optional	sc
 isa/vga_isa.c			optional	vga
+kern/clock_if.m			standard
 kern/link_elf_obj.c		standard
+kern/subr_rtc.c			standard
 #
 # IA32 binary support
 #

==== //depot/projects/arm/src/sys/conf/files.i386#34 (text+ko) ====

@@ -1,7 +1,7 @@
 # This file tells config what files go into building a kernel,
 # files marked standard are always included.
 #
-# $FreeBSD: src/sys/conf/files.i386,v 1.593 2008/04/12 20:46:06 phk Exp $
+# $FreeBSD: src/sys/conf/files.i386,v 1.594 2008/04/14 07:59:59 phk Exp $
 #
 # The long compile-with and dependency lines are required because of
 # limitations in config: backslash-newline doesn't work in strings, and
@@ -443,6 +443,7 @@
 i4b/layer1/itjc/i4b_itjc_l1.c	optional itjc
 i4b/layer1/itjc/i4b_itjc_l1fsm.c optional itjc
 #
+isa/atrtc.c			standard
 isa/syscons_isa.c		optional sc
 isa/vga_isa.c			optional vga
 kern/clock_if.m			standard

==== //depot/projects/arm/src/sys/dev/acpi_support/acpi_ibm.c#9 (text+ko) ====

@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_ibm.c,v 1.15 2007/10/25 17:30:18 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_ibm.c,v 1.16 2008/04/14 08:00:00 phk Exp $");
 
 /*
  * Driver for extra ACPI-controlled gadgets found on IBM ThinkPad laptops.
@@ -48,7 +48,7 @@
 #include <dev/acpica/acpivar.h>
 #include <dev/led/led.h>
 #include <sys/sysctl.h>
-#include <machine/clock.h>
+#include <isa/rtc.h>
 
 #define _COMPONENT	ACPI_OEM
 ACPI_MODULE_NAME("IBM")

==== //depot/projects/arm/src/sys/dev/ata/ata-all.h#21 (text+ko) ====

@@ -23,7 +23,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.131 2008/04/13 16:05:34 sos Exp $
+ * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.132 2008/04/14 18:34:24 sos Exp $
  */
 
 /* ATA register defines */
@@ -418,8 +418,8 @@
     device_t                    dev;            /* device handle */
     int                         unit;           /* physical unit */
 #define         ATA_MASTER              0x00
+#define         ATA_SLAVE               0x01
 #define         ATA_PM                  0x0f
-#define         ATA_SLAVE               0x10
 
     struct ata_params           param;          /* ata param structure */
     int                         mode;           /* current transfermode */

==== //depot/projects/arm/src/sys/dev/ata/ata-chipset.c#45 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.215 2008/04/12 17:21:22 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.216 2008/04/14 18:34:24 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -1055,9 +1055,10 @@
 {
     struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev));
     struct ata_channel *ch = device_get_softc(dev);
+    int offset = ch->unit << 7;
+#ifdef AHCI_PM
     struct ata_ahci_cmd_tab *ctp =
 	(struct ata_ahci_cmd_tab *)(ch->dma.work + ATA_AHCI_CT_OFFSET);
-    int offset = ch->unit << 7;
     int timeout = 0;
 
     /* kick controller into sane state if needed */
@@ -1097,7 +1098,7 @@
     } while (ATA_INL(ctlr->r_res2, ATA_AHCI_P_TFD + offset) & ATA_S_BUSY);
     if (bootverbose)
 	device_printf(dev, "BUSY wait time=%dms\n", timeout);
-
+#endif
     return ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset);
 }
 
@@ -4306,7 +4307,7 @@
     ATA_OUTB(ctlr->r_res2, 0x4e8 + (ch->unit << 8), port & 0x0f);
 
     /* softreset device on this channel */
-    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_MASTER);
+    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(ATA_MASTER));
     DELAY(10);
     ATA_IDX_OUTB(ch, ATA_CONTROL, ATA_A_IDS | ATA_A_RESET);
     ata_udelay(10000); 

==== //depot/projects/arm/src/sys/dev/ata/ata-dma.c#10 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.152 2008/04/11 11:30:27 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.153 2008/04/14 18:34:24 sos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -112,8 +112,8 @@
 			 &ch->dma.work_map))
 	goto error;
 
-    if (bus_dmamap_load(ch->dma.work_tag, ch->dma.work_map ,ch->dma.work,
-			MAXWSPCSZ, ata_dmasetupc_cb, &dcba, BUS_DMA_NOWAIT) ||
+    if (bus_dmamap_load(ch->dma.work_tag, ch->dma.work_map, ch->dma.work,
+			MAXWSPCSZ, ata_dmasetupc_cb, &dcba, 0) ||
 			dcba.error) {
 	bus_dmamem_free(ch->dma.work_tag, ch->dma.work, ch->dma.work_map);
 	goto error;
@@ -202,8 +202,8 @@
     }
 
     if (bus_dmamap_load(request->dma.sg_tag, request->dma.sg_map,
-			request->dma.sg, MAXTABSZ,
-			ata_dmasetupc_cb, &dcba, BUS_DMA_NOWAIT) || dcba.error){
+			request->dma.sg, MAXTABSZ, ata_dmasetupc_cb, &dcba, 0)||
+			dcba.error) {
 	bus_dmamem_free(request->dma.sg_tag,
 			request->dma.sg, request->dma.sg_map);
 	device_printf(request->dev, "FAILURE - load sg\n");

==== //depot/projects/arm/src/sys/dev/ata/ata-lowlevel.c#14 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.81 2008/04/10 13:05:05 sos Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/ata/ata-lowlevel.c,v 1.82 2008/04/14 18:34:24 sos Exp $");
 
 #include "opt_ata.h"
 #include <sys/param.h>
@@ -463,7 +463,7 @@
     int mask = 0, timeout;
 
     /* do we have any signs of ATA/ATAPI HW being present ? */
-    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_MASTER);
+    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(ATA_MASTER));
     DELAY(10);
     ostat0 = ATA_IDX_INB(ch, ATA_STATUS);
     if ((ostat0 & 0xf8) != 0xf8 && ostat0 != 0xa5) {
@@ -473,7 +473,7 @@
 
     /* in some setups we dont want to test for a slave */
     if (!(ch->flags & ATA_NO_SLAVE)) {
-	ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_SLAVE);
+	ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(ATA_SLAVE));
 	DELAY(10);      
 	ostat1 = ATA_IDX_INB(ch, ATA_STATUS);
 	if ((ostat1 & 0xf8) != 0xf8 && ostat1 != 0xa5) {
@@ -493,7 +493,7 @@
 	return;
 
     /* reset (both) devices on this channel */
-    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_MASTER);
+    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_D_LBA | ATA_DEV(ATA_MASTER));
     DELAY(10);
     ATA_IDX_OUTB(ch, ATA_CONTROL, ATA_A_IDS | ATA_A_RESET);
     ata_udelay(10000); 
@@ -504,7 +504,7 @@
     /* wait for BUSY to go inactive */
     for (timeout = 0; timeout < 310; timeout++) {
 	if ((mask & 0x01) && (stat0 & ATA_S_BUSY)) {
-	    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_MASTER);
+	    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_DEV(ATA_MASTER));
 	    DELAY(10);
 	    err = ATA_IDX_INB(ch, ATA_ERROR);
 	    lsb = ATA_IDX_INB(ch, ATA_CYL_LSB);
@@ -534,7 +534,7 @@
 
 	if ((mask & 0x02) && (stat1 & ATA_S_BUSY) &&
 	    !((mask & 0x01) && (stat0 & ATA_S_BUSY))) {
-	    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_SLAVE);
+	    ATA_IDX_OUTB(ch, ATA_DRIVE, ATA_D_IBM | ATA_DEV(ATA_SLAVE));
 	    DELAY(10);
 	    err = ATA_IDX_INB(ch, ATA_ERROR);
 	    lsb = ATA_IDX_INB(ch, ATA_CYL_LSB);
@@ -582,9 +582,8 @@
     }
 
     if (bootverbose)
-	device_printf(dev, "reset tp2 stat0=%02x stat1=%02x devices=0x%b\n",
-		      stat0, stat1, ch->devices,
-		      "\20\4ATAPI_SLAVE\3ATAPI_MASTER\2ATA_SLAVE\1ATA_MASTER");
+	device_printf(dev, "reset tp2 stat0=%02x stat1=%02x devices=0x%x\n",
+		      stat0, stat1, ch->devices);
 }
 
 /* must be called with ATA channel locked and state_mtx held */

==== //depot/projects/arm/src/sys/dev/fb/vga.c#5 (text+ko) ====

@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fb/vga.c,v 1.37 2007/12/29 23:26:55 wkoszek Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fb/vga.c,v 1.38 2008/04/14 08:00:00 phk Exp $");
 
 #include "opt_vga.h"
 #include "opt_fb.h"
@@ -154,7 +154,7 @@
 
 /* LOW-LEVEL */
 
-#include <machine/clock.h>
+#include <isa/rtc.h>
 #ifdef __i386__
 #include <machine/pc/vesa.h>
 #endif

==== //depot/projects/arm/src/sys/dev/k8temp/k8temp.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  * POSSIBILITY OF SUCH DAMAGE.
  *
- * $P4: //depot/projects/arm/src/sys/dev/k8temp/k8temp.c#1 $
+ * $P4: //depot/projects/arm/src/sys/dev/k8temp/k8temp.c#2 $
  */
 
 /*

==== //depot/projects/arm/src/sys/dev/nvram/nvram.c#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/dev/nvram/nvram.c,v 1.1 2007/10/26 03:23:53 peter Exp $
+ * $FreeBSD: src/sys/dev/nvram/nvram.c,v 1.2 2008/04/14 08:00:00 phk Exp $
  */
 
 #include <sys/param.h>
@@ -35,7 +35,6 @@
 #include <sys/uio.h>
 #include <sys/module.h>
 

>>> TRUNCATED FOR MAIL (1000 lines) <<<



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200804150727.m3F7Rquw036051>