From owner-p4-projects@FreeBSD.ORG Tue Apr 15 07:27:52 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A99A21065671; Tue, 15 Apr 2008 07:27:52 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6B8B6106566B for ; Tue, 15 Apr 2008 07:27:52 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 56F6C8FC0A for ; Tue, 15 Apr 2008 07:27:52 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id m3F7Rqls036053 for ; Tue, 15 Apr 2008 07:27:52 GMT (envelope-from imp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m3F7Rquw036051 for perforce@freebsd.org; Tue, 15 Apr 2008 07:27:52 GMT (envelope-from imp@freebsd.org) Date: Tue, 15 Apr 2008 07:27:52 GMT Message-Id: <200804150727.m3F7Rquw036051@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to imp@freebsd.org using -f From: Warner Losh To: Perforce Change Reviews Cc: Subject: PERFORCE change 140072 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Apr 2008 07:27:52 -0000 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 @@ -32,7 +32,6 @@ #include "namespace.h" #include -#include #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 @@ -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 = ""; 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 -__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 - * - * reintroduced and updated by Chris Stenton 8/10/94 - */ - #include "opt_clock.h" #include "opt_isa.h" @@ -62,7 +55,6 @@ #include #include #include -#include #include #include @@ -78,13 +70,6 @@ #include #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 - -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 -__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 #include #include -#include +#include #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 -__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 @@ -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 -__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 #include @@ -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 -__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 @@ -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 -__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 +#include #ifdef __i386__ #include #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 @@ -35,7 +35,6 @@ #include #include >>> TRUNCATED FOR MAIL (1000 lines) <<<