Date: Mon, 21 Nov 2005 21:07:54 GMT From: Olivier Houchard <cognet@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 87047 for review Message-ID: <200511212107.jALL7stH078547@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=87047 Change 87047 by cognet@cognet on 2005/11/21 21:07:11 IFC to get back arm9 changes Affected files ... .. //depot/projects/arm/src/sys/alpha/alpha/clock.c#3 integrate .. //depot/projects/arm/src/sys/alpha/alpha/pmap.c#3 integrate .. //depot/projects/arm/src/sys/alpha/conf/DEFAULTS#1 branch .. //depot/projects/arm/src/sys/alpha/conf/GENERIC#3 integrate .. //depot/projects/arm/src/sys/amd64/amd64/identcpu.c#3 integrate .. //depot/projects/arm/src/sys/amd64/amd64/machdep.c#5 integrate .. //depot/projects/arm/src/sys/amd64/amd64/pmap.c#3 integrate .. //depot/projects/arm/src/sys/amd64/amd64/trap.c#3 integrate .. //depot/projects/arm/src/sys/amd64/conf/DEFAULTS#2 integrate .. //depot/projects/arm/src/sys/arm/arm/identcpu.c#3 integrate .. //depot/projects/arm/src/sys/arm/arm/pmap.c#8 integrate .. //depot/projects/arm/src/sys/arm/include/armreg.h#2 integrate .. //depot/projects/arm/src/sys/arm/include/pmap.h#4 integrate .. //depot/projects/arm/src/sys/boot/forth/loader.conf.5#3 integrate .. //depot/projects/arm/src/sys/cam/scsi/scsi_cd.c#3 integrate .. //depot/projects/arm/src/sys/cam/scsi/scsi_da.c#3 integrate .. //depot/projects/arm/src/sys/compat/ndis/subr_ndis.c#4 integrate .. //depot/projects/arm/src/sys/compat/ndis/subr_ntoskrnl.c#5 integrate .. //depot/projects/arm/src/sys/conf/Makefile.arm#3 integrate .. //depot/projects/arm/src/sys/conf/files#5 integrate .. //depot/projects/arm/src/sys/conf/files.i386#6 integrate .. //depot/projects/arm/src/sys/dev/aic7xxx/aicasm/Makefile#3 integrate .. //depot/projects/arm/src/sys/dev/em/if_em.c#4 integrate .. //depot/projects/arm/src/sys/dev/em/if_em.h#3 integrate .. //depot/projects/arm/src/sys/dev/em/if_em_hw.h#3 integrate .. //depot/projects/arm/src/sys/dev/fe/if_fe_pccard.c#4 integrate .. //depot/projects/arm/src/sys/dev/hwpmc/hwpmc_x86.c#2 integrate .. //depot/projects/arm/src/sys/dev/ipw/if_ipw.c#2 integrate .. //depot/projects/arm/src/sys/dev/iwi/if_iwi.c#2 integrate .. //depot/projects/arm/src/sys/dev/iwi/if_iwireg.h#2 integrate .. //depot/projects/arm/src/sys/dev/iwi/if_iwivar.h#2 integrate .. //depot/projects/arm/src/sys/dev/puc/puc.c#5 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/ich.c#4 integrate .. //depot/projects/arm/src/sys/dev/usb/if_ural.c#2 integrate .. //depot/projects/arm/src/sys/dev/usb/if_uralvar.h#2 integrate .. //depot/projects/arm/src/sys/fs/msdosfs/msdosfs_vfsops.c#6 integrate .. //depot/projects/arm/src/sys/geom/geom_disk.c#3 integrate .. //depot/projects/arm/src/sys/geom/geom_disk.h#3 integrate .. //depot/projects/arm/src/sys/geom/geom_subr.c#3 integrate .. //depot/projects/arm/src/sys/geom/vinum/geom_vinum.c#4 integrate .. //depot/projects/arm/src/sys/geom/vinum/geom_vinum.h#2 integrate .. //depot/projects/arm/src/sys/geom/vinum/geom_vinum_drive.c#4 integrate .. //depot/projects/arm/src/sys/geom/vinum/geom_vinum_move.c#1 branch .. //depot/projects/arm/src/sys/geom/vinum/geom_vinum_rename.c#1 branch .. //depot/projects/arm/src/sys/geom/vinum/geom_vinum_rm.c#3 integrate .. //depot/projects/arm/src/sys/i386/conf/DEFAULTS#2 integrate .. //depot/projects/arm/src/sys/i386/i386/identcpu.c#4 integrate .. //depot/projects/arm/src/sys/i386/i386/pmap.c#3 integrate .. //depot/projects/arm/src/sys/i386/i386/trap.c#3 integrate .. //depot/projects/arm/src/sys/ia64/conf/DEFAULTS#1 branch .. //depot/projects/arm/src/sys/ia64/conf/GENERIC#3 integrate .. //depot/projects/arm/src/sys/ia64/ia64/pmap.c#3 integrate .. //depot/projects/arm/src/sys/kern/kern_time.c#3 integrate .. //depot/projects/arm/src/sys/kern/subr_rman.c#5 integrate .. //depot/projects/arm/src/sys/kern/vfs_mount.c#4 integrate .. //depot/projects/arm/src/sys/modules/Makefile#4 integrate .. //depot/projects/arm/src/sys/modules/geom/geom_vinum/Makefile#3 integrate .. //depot/projects/arm/src/sys/modules/iwi/Makefile#2 integrate .. //depot/projects/arm/src/sys/modules/oldcard/Makefile#2 delete .. //depot/projects/arm/src/sys/net/if_ethersubr.c#5 integrate .. //depot/projects/arm/src/sys/netinet/igmp.c#3 integrate .. //depot/projects/arm/src/sys/netinet/ip_carp.c#4 integrate .. //depot/projects/arm/src/sys/netinet/ip_fastfwd.c#3 integrate .. //depot/projects/arm/src/sys/netinet/ip_icmp.c#3 integrate .. //depot/projects/arm/src/sys/netinet/ip_input.c#5 integrate .. //depot/projects/arm/src/sys/netinet/ip_mroute.c#4 integrate .. //depot/projects/arm/src/sys/netinet/ip_options.c#1 branch .. //depot/projects/arm/src/sys/netinet/ip_options.h#1 branch .. //depot/projects/arm/src/sys/netinet/ip_output.c#4 integrate .. //depot/projects/arm/src/sys/netinet/ip_var.h#3 integrate .. //depot/projects/arm/src/sys/netinet/tcp_input.c#3 integrate .. //depot/projects/arm/src/sys/netinet/tcp_output.c#3 integrate .. //depot/projects/arm/src/sys/netinet/tcp_sack.c#5 integrate .. //depot/projects/arm/src/sys/netinet/tcp_syncache.c#4 integrate .. //depot/projects/arm/src/sys/netinet/udp_usrreq.c#4 integrate .. //depot/projects/arm/src/sys/netipx/ipx_ip.c#3 integrate .. //depot/projects/arm/src/sys/nfsclient/nfs_bio.c#4 integrate .. //depot/projects/arm/src/sys/nfsclient/nfs_socket.c#4 integrate .. //depot/projects/arm/src/sys/nfsclient/nfs_subs.c#4 integrate .. //depot/projects/arm/src/sys/nfsclient/nfs_vnops.c#5 integrate .. //depot/projects/arm/src/sys/nfsclient/nfsm_subs.h#2 integrate .. //depot/projects/arm/src/sys/pc98/conf/DEFAULTS#2 integrate .. //depot/projects/arm/src/sys/powerpc/conf/DEFAULTS#1 branch .. //depot/projects/arm/src/sys/powerpc/conf/GENERIC#3 integrate .. //depot/projects/arm/src/sys/powerpc/powerpc/mmu_if.m#2 integrate .. //depot/projects/arm/src/sys/powerpc/powerpc/pmap_dispatch.c#2 integrate .. //depot/projects/arm/src/sys/sparc64/conf/DEFAULTS#1 branch .. //depot/projects/arm/src/sys/sparc64/conf/GENERIC#5 integrate .. //depot/projects/arm/src/sys/sparc64/sparc64/pmap.c#4 integrate .. //depot/projects/arm/src/sys/sys/mbuf.h#5 integrate .. //depot/projects/arm/src/sys/sys/queue.h#4 integrate .. //depot/projects/arm/src/sys/sys/time.h#3 integrate .. //depot/projects/arm/src/sys/ufs/ffs/ffs_vfsops.c#6 integrate .. //depot/projects/arm/src/sys/vm/pmap.h#3 integrate .. //depot/projects/arm/src/sys/vm/vm_map.c#3 integrate Differences ... ==== //depot/projects/arm/src/sys/alpha/alpha/clock.c#3 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/clock.c,v 1.39 2005/05/14 09:10:00 nyan Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/clock.c,v 1.40 2005/11/20 01:31:29 marcel Exp $"); #include "opt_clock.h" @@ -475,31 +475,20 @@ * and the time of year clock (if any) provides the rest. */ void -inittodr(base) - time_t base; +inittodr(time_t base) { - register int days, yr; struct clocktime ct; - time_t deltat; - int badbase, clock_compat_osf1; - int s; struct timespec ts; - - if (base < 5*SECYR) { - printf("WARNING: preposterous time in filesystem"); - /* read the system clock anyway */ - base = 6*SECYR + 186*SECDAY + SECDAY/2; - badbase = 1; - } else - badbase = 0; + int clock_compat_osf1, todr_unreliable; + int days, yr; if (getenv_int("clock_compat_osf1", &clock_compat_osf1)) { if (clock_compat_osf1) clock_year_offset = UNIX_YEAR_OFFSET; } + todr_unreliable = 0; CLOCK_GET(clockdev, base, &ct); - clockinitted = 1; #ifdef DEBUG printf("readclock: %d/%d/%d/%d/%d/%d\n", ct.year, ct.mon, ct.day, @@ -508,7 +497,7 @@ ct.year += clock_year_offset; if (ct.year < 70) ct.year += 100; - + /* simple sanity checks */ if (ct.year < 70 || ct.mon < 1 || ct.mon > 12 || ct.day < 1 || ct.day > 31 || ct.hour > 23 || ct.min > 59 || ct.sec > 59) { @@ -516,48 +505,47 @@ * Believe the time in the filesystem for lack of * anything better, resetting the TODR. */ - s = splclock(); ts.tv_sec = base; - ts.tv_nsec = 0; - tc_setclock(&ts); - splx(s); - if (!badbase) { - printf("WARNING: preposterous clock chip time\n"); - resettodr(); - } - goto bad; + printf("WARNING: preposterous real-time clock"); + todr_unreliable = 1; + } else { + days = 0; + for (yr = 70; yr < ct.year; yr++) + days += LEAPYEAR(yr) ? 366 : 365; + days += dayyr[ct.mon - 1] + ct.day - 1; + if (LEAPYEAR(yr) && ct.mon > 2) + days++; + /* now have days since Jan 1, 1970; the rest is easy... */ + ts.tv_sec = days * SECDAY + ct.hour * SECHOUR + + ct.min * SECMIN + ct.sec; + if (wall_cmos_clock) + ts.tv_sec += adjkerntz; + /* + * The time base comes from a saved time, whereas the real- + * time clock is supposed to represent the current time. + * It is logically not possible for a saved time to be + * larger than the current time, so if that happens, assume + * the real-time clock is off. Warn when the real-time + * clock is off by two or more days. + */ + if (ts.tv_sec < base) { + ts.tv_sec = base; + days = (base - ts.tv_sec) / (60L * 60L * 24L); + if (days >= 2) { + printf("WARNING: real-time clock lost %d days", + days); + todr_unreliable = 1; + } + } } - days = 0; - for (yr = 70; yr < ct.year; yr++) - days += LEAPYEAR(yr) ? 366 : 365; - days += dayyr[ct.mon - 1] + ct.day - 1; - if (LEAPYEAR(yr) && ct.mon > 2) - days++; - /* now have days since Jan 1, 1970; the rest is easy... */ - s = splclock(); - ts.tv_sec = - days * SECDAY + ct.hour * SECHOUR + ct.min * SECMIN + ct.sec; - if (wall_cmos_clock) - ts.tv_sec += adjkerntz; ts.tv_nsec = 0; tc_setclock(&ts); - splx(s); + clockinitted = 1; - if (!badbase) { - /* - * See if we gained/lost two or more days; - * if so, assume something is amiss. - */ - deltat = ts.tv_sec - base; - if (deltat < 0) - deltat = -deltat; - if (deltat < 2 * SECDAY) - return; - printf("WARNING: clock %s %d days", - ts.tv_sec < base ? "lost" : "gained", deltat / SECDAY); + if (todr_unreliable) { + printf(" -- CHECK AND RESET THE DATE!\n"); + resettodr(); } -bad: - printf(" -- CHECK AND RESET THE DATE!\n"); } /* ==== //depot/projects/arm/src/sys/alpha/alpha/pmap.c#3 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.185 2005/11/13 02:17:04 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.186 2005/11/20 06:09:47 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -583,11 +583,6 @@ pv_entry_high_water = 9 * (pv_entry_max / 10); } -void -pmap_init2() -{ -} - /*************************************************** * Manipulate TLBs for a pmap ==== //depot/projects/arm/src/sys/alpha/conf/GENERIC#3 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.189 2005/11/05 19:48:53 marcel Exp $ +# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.190 2005/11/21 20:17:45 jhb Exp $ machine alpha cpu EV4 @@ -183,7 +183,6 @@ # Pseudo devices. device loop # Network loopback -device mem # Memory and kernel memory devices device random # Entropy device device ether # Ethernet support device sl # Kernel SLIP ==== //depot/projects/arm/src/sys/amd64/amd64/identcpu.c#3 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.140 2005/10/17 23:23:20 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/identcpu.c,v 1.141 2005/11/17 02:32:39 obrien Exp $"); #include "opt_cpu.h" @@ -339,7 +339,7 @@ cpu_feature &= ~CPUID_HTT; if (bootverbose) printf("\nHTT bit cleared - FreeBSD" - " does not have licenseing issues" + " does not have licensing issues" " requiring it.\n"); } ==== //depot/projects/arm/src/sys/amd64/amd64/machdep.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.643 2005/10/26 22:16:52 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.644 2005/11/21 18:39:17 jhb Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -124,7 +124,9 @@ #include <machine/smp.h> #endif +#include <dev/ic/i8259.h> #include <amd64/isa/icu.h> +#include <machine/apicvar.h> #include <isa/isareg.h> #include <isa/rtc.h> @@ -1125,14 +1127,6 @@ u_int64_t msr; char *env; -#ifdef DEV_ISA - /* Preemptively mask the atpics and leave them shut down */ - outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff); - outb(IO_ICU2 + ICU_IMR_OFFSET, 0xff); -#else -#error "have you forgotten the isa device?"; -#endif - thread0.td_kstack = physfree + KERNBASE; bzero((void *)thread0.td_kstack, KSTACK_PAGES * PAGE_SIZE); physfree += KSTACK_PAGES * PAGE_SIZE; @@ -1231,9 +1225,35 @@ */ cninit(); +#ifdef DEV_ISA #ifdef DEV_ATPIC elcr_probe(); atpic_startup(); +#else + /* Reset and mask the atpics and leave them shut down. */ + outb(IO_ICU1, ICW1_RESET | ICW1_IC4); + outb(IO_ICU1 + ICU_IMR_OFFSET, IDT_IO_INTS); + outb(IO_ICU1 + ICU_IMR_OFFSET, 1 << 2); + outb(IO_ICU1 + ICU_IMR_OFFSET, ICW4_8086); + outb(IO_ICU1 + ICU_IMR_OFFSET, 0xff); + outb(IO_ICU1, OCW3_SEL | OCW3_RR); + + outb(IO_ICU2, ICW1_RESET | ICW1_IC4); + outb(IO_ICU2 + ICU_IMR_OFFSET, IDT_IO_INTS + 8); + outb(IO_ICU2 + ICU_IMR_OFFSET, 2); + outb(IO_ICU2 + ICU_IMR_OFFSET, ICW4_8086); + outb(IO_ICU2 + ICU_IMR_OFFSET, 0xff); + outb(IO_ICU2, OCW3_SEL | OCW3_RR); + + /* + * Point the ICU spurious interrupt vectors at the APIC spurious + * interrupt handler. + */ + setidt(IDT_IO_INTS + 7, IDTVEC(spuriousint), SDT_SYSIGT, SEL_KPL, 0); + setidt(IDT_IO_INTS + 15, IDTVEC(spuriousint), SDT_SYSIGT, SEL_KPL, 0); +#endif +#else +#error "have you forgotten the isa device?"; #endif kdb_init(); ==== //depot/projects/arm/src/sys/amd64/amd64/pmap.c#3 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.534 2005/11/13 02:17:04 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.535 2005/11/20 06:09:48 alc Exp $"); /* * Manages physical address maps. @@ -579,11 +579,6 @@ uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); } -void -pmap_init2() -{ -} - /*************************************************** * Low level helper routines..... ==== //depot/projects/arm/src/sys/amd64/amd64/trap.c#3 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.296 2005/10/24 21:04:17 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.297 2005/11/18 19:26:46 jhb Exp $"); /* * AMD64 Trap and System call handling @@ -100,7 +100,7 @@ static void trap_fatal(struct trapframe *, vm_offset_t); void dblfault_handler(void); -#define MAX_TRAP_MSG 28 +#define MAX_TRAP_MSG 30 static char *trap_msg[] = { "", /* 0 unused */ "privileged instruction fault", /* 1 T_PRIVINFLT */ @@ -131,6 +131,8 @@ "segment not present fault", /* 26 T_SEGNPFLT */ "stack fault", /* 27 T_STKFLT */ "machine check trap", /* 28 T_MCHK */ + "SIMD floating-point exception", /* 29 T_XMMFLT */ + "reserved (unknown) fault", /* 30 T_RESERVED */ }; #ifdef KDB @@ -609,15 +611,18 @@ int code, type, ss; long esp; struct soft_segment_descriptor softseg; + char *msg; code = frame->tf_err; type = frame->tf_trapno; sdtossd(&gdt[IDXSEL(frame->tf_cs & 0xffff)], &softseg); if (type <= MAX_TRAP_MSG) - printf("\n\nFatal trap %d: %s while in %s mode\n", - type, trap_msg[type], - ISPL(frame->tf_cs) == SEL_UPL ? "user" : "kernel"); + msg = trap_msg[type]; + else + msg = "UNKNOWN"; + printf("\n\nFatal trap %d: %s while in %s mode\n", type, msg, + ISPL(frame->tf_cs) == SEL_UPL ? "user" : "kernel"); #ifdef SMP /* two separate prints in case of a trap on an unmapped page */ printf("cpuid = %d; ", PCPU_GET(cpuid)); ==== //depot/projects/arm/src/sys/amd64/conf/DEFAULTS#2 (text+ko) ==== @@ -1,7 +1,7 @@ # # DEFAULTS -- Default kernel configuration file for FreeBSD/amd64 # -# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.2 2005/10/27 18:54:43 peter Exp $ +# $FreeBSD: src/sys/amd64/conf/DEFAULTS,v 1.3 2005/11/21 20:22:34 jhb Exp $ # Not yet, this would break all existing configs #machine amd64 @@ -12,3 +12,5 @@ # Pseudo devices. device mem # Memory and kernel memory devices device io # I/O device + +options PUC_FASTINTR ==== //depot/projects/arm/src/sys/arm/arm/identcpu.c#3 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/identcpu.c,v 1.4 2005/01/05 21:58:47 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/identcpu.c,v 1.5 2005/11/21 19:06:25 cognet Exp $"); #include <sys/systm.h> #include <sys/param.h> #include <sys/malloc.h> @@ -187,6 +187,8 @@ { CPU_ID_ARM920T, CPU_CLASS_ARM9TDMI, "ARM920T", generic_steppings }, + { CPU_ID_ARM920T_ALT, CPU_CLASS_ARM9TDMI, "ARM920T", + generic_steppings }, { CPU_ID_ARM922T, CPU_CLASS_ARM9TDMI, "ARM922T", generic_steppings }, { CPU_ID_ARM940T, CPU_CLASS_ARM9TDMI, "ARM940T", ==== //depot/projects/arm/src/sys/arm/arm/pmap.c#8 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.40 2005/11/06 16:10:28 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.41 2005/11/20 06:09:48 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> @@ -2199,11 +2199,6 @@ } void -pmap_init2(void) -{ -} - -void pmap_postinit(void) { struct l2_bucket *l2b; ==== //depot/projects/arm/src/sys/arm/include/armreg.h#2 (text+ko) ==== @@ -35,7 +35,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/armreg.h,v 1.2 2005/01/05 21:58:48 imp Exp $ + * $FreeBSD: src/sys/arm/include/armreg.h,v 1.3 2005/11/21 19:06:25 cognet Exp $ */ #ifndef MACHINE_ARMREG_H @@ -129,6 +129,7 @@ /* Post-ARM7 CPUs */ #define CPU_ID_ARM810 0x41018100 #define CPU_ID_ARM920T 0x41129200 +#define CPU_ID_ARM920T_ALT 0x41009200 #define CPU_ID_ARM922T 0x41029220 #define CPU_ID_ARM940T 0x41029400 /* XXX no MMU */ #define CPU_ID_ARM946ES 0x41049460 /* XXX no MMU */ ==== //depot/projects/arm/src/sys/arm/include/pmap.h#4 (text+ko) ==== @@ -44,7 +44,7 @@ * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 * from: FreeBSD: src/sys/i386/include/pmap.h,v 1.70 2000/11/30 * - * $FreeBSD: src/sys/arm/include/pmap.h,v 1.13 2005/11/06 16:10:27 cognet Exp $ + * $FreeBSD: src/sys/arm/include/pmap.h,v 1.14 2005/11/21 19:10:44 cognet Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -335,8 +335,13 @@ #define PMAP_NEEDS_PTE_SYNC 1 #define PMAP_INCLUDE_PTE_SYNC #elif (ARM_MMU_SA1 == 0) +#if defined(CPU_ARM9) && !defined(ARM9_CACHE_WRITE_THROUGH) +#define PMAP_NEEDS_PTE_SYNC 1 +#define PMAP_INCLUDE_PTE_SYNC +#else #define PMAP_NEEDS_PTE_SYNC 0 #endif +#endif /* * These macros return various bits based on kernel/user and protection. ==== //depot/projects/arm/src/sys/boot/forth/loader.conf.5#3 (text+ko) ==== @@ -22,7 +22,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: src/sys/boot/forth/loader.conf.5,v 1.25 2005/11/15 21:26:49 ru Exp $ +.\" $FreeBSD: src/sys/boot/forth/loader.conf.5,v 1.26 2005/11/18 10:34:24 ru Exp $ .Dd November 15, 2005 .Dt LOADER.CONF 5 .Os @@ -165,13 +165,12 @@ Name of the bitmap to be loaded. Any other name can be used. .It Va comconsole_speed -.Po Dq 9600 +.Dq ( 9600 or the value of the .Va BOOT_COMCONSOLE_SPEED variable when .Xr loader 8 -was compiled -.Pc . +was compiled). Sets the speed of the serial console. If the previous boot loader stage specified that a serial console is in use then the default speed is determined from the current ==== //depot/projects/arm/src/sys/cam/scsi/scsi_cd.c#3 (text+ko) ==== @@ -46,7 +46,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.93 2005/03/26 06:05:06 ken Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.94 2005/11/18 02:43:49 jdp Exp $"); #include "opt_cd.h" @@ -407,6 +407,7 @@ && (softc->pinfo.index != CAM_UNQUEUED_INDEX)) camq_remove(&softc->changer->devq, softc->pinfo.index); + disk_gone(softc->disk); xpt_print_path(periph->path); printf("lost device\n"); } ==== //depot/projects/arm/src/sys/cam/scsi/scsi_da.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.180 2005/06/09 17:35:04 pjd Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_da.c,v 1.181 2005/11/18 02:43:49 jdp Exp $"); #include <sys/param.h> @@ -801,6 +801,7 @@ SLIST_REMOVE(&softc_list, softc, da_softc, links); + disk_gone(softc->disk); xpt_print_path(periph->path); printf("lost device\n"); } ==== //depot/projects/arm/src/sys/compat/ndis/subr_ndis.c#4 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.102 2005/11/14 18:19:57 ru Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.103 2005/11/20 01:29:29 wpaul Exp $"); /* * This file implements a translation layer between the BSD networking @@ -275,7 +275,7 @@ static void NdisMIndicateStatusComplete(ndis_handle); static void NdisMIndicateStatus(ndis_handle, ndis_status, void *, uint32_t); -static void ndis_intr(void *); +static uint8_t ndis_intr(kinterrupt *, void *); static void ndis_intrhand(kdpc *, ndis_miniport_interrupt *, void *, void *); static funcptr ndis_findwrap(funcptr); static void NdisCopyFromPacketToPacket(ndis_packet *, @@ -2326,22 +2326,21 @@ return (NDIS_STATUS_SUCCESS); } -static void -ndis_intr(arg) +static uint8_t +ndis_intr(iobj, arg) + kinterrupt *iobj; void *arg; { struct ndis_softc *sc; - struct ifnet *ifp; - int is_our_intr = 0; + uint8_t is_our_intr = FALSE; int call_isr = 0; ndis_miniport_interrupt *intr; sc = arg; - ifp = sc->ifp; intr = sc->ndis_block->nmb_interrupt; if (intr == NULL || sc->ndis_block->nmb_miniportadapterctx == NULL) - return; + return(FALSE); if (sc->ndis_block->nmb_interrupt->ni_isrreq == TRUE) MSCALL3(intr->ni_isrfunc, &is_our_intr, &call_isr, @@ -2352,10 +2351,10 @@ call_isr = 1; } - if ((is_our_intr || call_isr)) + if (call_isr) IoRequestDpc(sc->ndis_block->nmb_deviceobj, NULL, sc); - return; + return(is_our_intr); } static void @@ -3517,7 +3516,7 @@ IMPORT_SFUNC(NdisMRegisterUnloadHandler, 2), IMPORT_SFUNC(ndis_timercall, 4), IMPORT_SFUNC(ndis_asyncmem_complete, 2), - IMPORT_SFUNC(ndis_intr, 1), + IMPORT_SFUNC(ndis_intr, 2), IMPORT_SFUNC(ndis_intrhand, 4), /* ==== //depot/projects/arm/src/sys/compat/ndis/subr_ntoskrnl.c#5 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.83 2005/11/10 02:22:55 wpaul Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/ndis/subr_ntoskrnl.c,v 1.84 2005/11/20 01:29:29 wpaul Exp $"); #include <sys/ctype.h> #include <sys/unistd.h> @@ -1204,13 +1204,16 @@ { kinterrupt *iobj; uint8_t irql; + uint8_t claimed; list_entry *l; KeAcquireSpinLock(&ntoskrnl_intlock, &irql); l = ntoskrnl_intlist.nle_flink; while (l != &ntoskrnl_intlist) { iobj = CONTAINING_RECORD(l, kinterrupt, ki_list); - MSCALL1(iobj->ki_svcfunc, iobj->ki_svcctx); + claimed = MSCALL2(iobj->ki_svcfunc, iobj, iobj->ki_svcctx); + if (claimed == TRUE) + break; l = l->nle_flink; } KeReleaseSpinLock(&ntoskrnl_intlock, irql); ==== //depot/projects/arm/src/sys/conf/Makefile.arm#3 (text+ko) ==== @@ -1,7 +1,7 @@ # Makefile.arm -- with config changes. # Copyright 1990 W. Jolitz # from: @(#)Makefile.i386 7.1 5/10/91 -# $FreeBSD: src/sys/conf/Makefile.arm,v 1.16 2005/11/04 04:14:49 imp Exp $ +# $FreeBSD: src/sys/conf/Makefile.arm,v 1.17 2005/11/17 01:32:01 cognet Exp $ # # Makefile for FreeBSD # @@ -49,11 +49,13 @@ DDB_ENABLED!= grep DDB opt_ddb.h || true .if ${DDB_ENABLED} != "" -SYSTEM_LD_TAIL += ;echo "\#define KERNNAME \"${KERNEL_KO}\"" >opt_kernname.h ; \ +SYSTEM_LD_TAIL += ;echo "\#define KERNNAME \"${KERNEL_KO}.tmp\"" \ + >opt_kernname.h ;\ ${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \ - --strip-symbol '$$t' ${KERNEL_KO} ;\ + -g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp;\ ${CC} -O -nostdlib -I. -Xlinker -T -Xlinker ldscript.arm \ - $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S -o ${KERNEL_KO}.tramp + $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S -o ${KERNEL_KO}.tramp;\ + rm ${KERNEL_KO}.tmp .endif %BEFORE_DEPEND ==== //depot/projects/arm/src/sys/conf/files#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1064 2005/11/08 22:51:42 vkashyap Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1065 2005/11/18 20:12:40 andre Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -1678,6 +1678,7 @@ netinet/ip_icmp.c optional inet netinet/ip_input.c optional inet netinet/ip_mroute.c optional mrouting +netinet/ip_options.c optional inet netinet/ip_output.c optional inet netinet/raw_ip.c optional inet netinet/tcp_debug.c optional tcpdebug ==== //depot/projects/arm/src/sys/conf/files.i386#6 (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.544 2005/11/11 09:57:30 ru Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.545 2005/11/21 20:11:39 ru Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -232,7 +232,7 @@ i386/acpica/acpi_machdep.c optional acpi i386/acpica/acpi_wakeup.c optional acpi acpi_wakecode.h optional acpi \ - dependency "$S/i386/acpica/acpi_wakecode.S" \ + dependency "$S/i386/acpica/acpi_wakecode.S assym.s" \ compile-with "${MAKE} -f $S/i386/acpica/Makefile MAKESRCPATH=$S/i386/acpica" \ no-obj no-implicit-rule before-depend \ clean "acpi_wakecode.h acpi_wakecode.o acpi_wakecode.bin" ==== //depot/projects/arm/src/sys/dev/aic7xxx/aicasm/Makefile#3 (text+ko) ==== @@ -1,7 +1,7 @@ # # $Id: //depot/aic7xxx/freebsd/dev/aic7xxx/aicasm/Makefile#2 $ # -# $FreeBSD: src/sys/dev/aic7xxx/aicasm/Makefile,v 1.22 2005/08/03 00:47:33 rwatson Exp $ +# $FreeBSD: src/sys/dev/aic7xxx/aicasm/Makefile,v 1.23 2005/11/21 14:41:10 ru Exp $ PROG= aicasm @@ -20,7 +20,7 @@ # Don't rely on the kernel's .depend file .ifdef MAKESRCPATH .PATH: ${MAKESRCPATH} -DEPENDFILE= +DEPENDFILE= .depend_aicasm .endif .if ${CC} == "icc" ==== //depot/projects/arm/src/sys/dev/em/if_em.c#4 (text+ko) ==== @@ -31,7 +31,7 @@ ***************************************************************************/ -/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.86 2005/11/11 16:04:51 ru Exp $*/ +/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.88 2005/11/21 04:17:43 yongari Exp $*/ #ifdef HAVE_KERNEL_OPTION_HEADERS #include "opt_device_polling.h" @@ -231,11 +231,15 @@ static int em_rx_int_delay_dflt = E1000_TICKS_TO_USECS(EM_RDTR); static int em_tx_abs_int_delay_dflt = E1000_TICKS_TO_USECS(EM_TADV); static int em_rx_abs_int_delay_dflt = E1000_TICKS_TO_USECS(EM_RADV); +static int em_rxd = EM_DEFAULT_RXD; +static int em_txd = EM_DEFAULT_TXD; TUNABLE_INT("hw.em.tx_int_delay", &em_tx_int_delay_dflt); TUNABLE_INT("hw.em.rx_int_delay", &em_rx_int_delay_dflt); TUNABLE_INT("hw.em.tx_abs_int_delay", &em_tx_abs_int_delay_dflt); TUNABLE_INT("hw.em.rx_abs_int_delay", &em_rx_abs_int_delay_dflt); +TUNABLE_INT("hw.em.rxd", &em_rxd); +TUNABLE_INT("hw.em.txd", &em_txd); /********************************************************************* * Device identification routine @@ -357,15 +361,31 @@ E1000_REG_OFFSET(&adapter->hw, TADV), em_tx_abs_int_delay_dflt); } - - /* Parameters (to be read from user) */ - if (adapter->hw.mac_type >= em_82544) { - adapter->num_tx_desc = EM_TXD_82544; - adapter->num_rx_desc = EM_RXD_82544; - } else { - adapter->num_tx_desc = EM_TXD; - adapter->num_rx_desc = EM_RXD; - } + + /* + * Validate number of transmit and receive descriptors. It + * must not exceed hardware maximum, and must be multiple + * of E1000_DBA_ALIGN. + */ + if (((em_txd * sizeof(struct em_tx_desc)) % E1000_DBA_ALIGN) != 0 || + (adapter->hw.mac_type >= em_82544 && em_txd > EM_MAX_TXD) || + (adapter->hw.mac_type < em_82544 && em_txd > EM_MAX_TXD_82543) || + (em_txd < EM_MIN_TXD)) { + printf("em%d: Using %d TX descriptors instead of %d!\n", + adapter->unit, EM_DEFAULT_TXD, em_txd); + adapter->num_tx_desc = EM_DEFAULT_TXD; + } else + adapter->num_tx_desc = em_txd; + if (((em_rxd * sizeof(struct em_rx_desc)) % E1000_DBA_ALIGN) != 0 || + (adapter->hw.mac_type >= em_82544 && em_rxd > EM_MAX_RXD) || + (adapter->hw.mac_type < em_82544 && em_rxd > EM_MAX_RXD_82543) || + (em_rxd < EM_MIN_RXD)) { + printf("em%d: Using %d RX descriptors instead of %d!\n", + adapter->unit, EM_DEFAULT_RXD, em_rxd); + adapter->num_rx_desc = EM_DEFAULT_RXD; + } else + adapter->num_rx_desc = em_rxd; + adapter->hw.autoneg = DO_AUTO_NEG; adapter->hw.wait_autoneg_complete = WAIT_FOR_AUTO_NEG_DEFAULT; adapter->hw.autoneg_advertised = AUTONEG_ADV_DEFAULT; @@ -418,8 +438,8 @@ /* Initialize eeprom parameters */ em_init_eeprom_params(&adapter->hw); - tsize = EM_ROUNDUP(adapter->num_tx_desc * - sizeof(struct em_tx_desc), 4096); + tsize = roundup2(adapter->num_tx_desc * sizeof(struct em_tx_desc), + E1000_DBA_ALIGN); /* Allocate Transmit Descriptor ring */ if (em_dma_malloc(adapter, tsize, &adapter->txdma, BUS_DMA_NOWAIT)) { @@ -430,8 +450,8 @@ } adapter->tx_desc_base = (struct em_tx_desc *) adapter->txdma.dma_vaddr; - rsize = EM_ROUNDUP(adapter->num_rx_desc * - sizeof(struct em_rx_desc), 4096); + rsize = roundup2(adapter->num_rx_desc * sizeof(struct em_rx_desc), + E1000_DBA_ALIGN); /* Allocate Receive Descriptor ring */ if (em_dma_malloc(adapter, rsize, &adapter->rxdma, BUS_DMA_NOWAIT)) { @@ -1173,7 +1193,7 @@ { u_int32_t txd_upper; u_int32_t txd_lower, txd_used = 0, txd_saved = 0; - int i, j, error; + int i, j, error = 0; struct mbuf *m_head; @@ -1183,9 +1203,8 @@ u_int32_t counter; struct m_tag *mtag; bus_dma_segment_t segs[EM_MAX_SCATTER]; - bus_dmamap_t map; int nsegs; - struct em_buffer *tx_buffer = NULL; + struct em_buffer *tx_buffer; struct em_tx_desc *current_tx_desc = NULL; struct ifnet *ifp = adapter->ifp; @@ -1206,23 +1225,19 @@ /* * Map the packet for DMA. */ - if (bus_dmamap_create(adapter->txtag, BUS_DMA_NOWAIT, &map)) { - adapter->no_tx_map_avail++; - return (ENOMEM); - } - error = bus_dmamap_load_mbuf_sg(adapter->txtag, map, m_head, segs, - &nsegs, BUS_DMA_NOWAIT); + tx_buffer = &adapter->tx_buffer_area[adapter->next_avail_tx_desc]; + error = bus_dmamap_load_mbuf_sg(adapter->txtag, tx_buffer->map, m_head, + segs, &nsegs, BUS_DMA_NOWAIT); if (error != 0) { adapter->no_tx_dma_setup++; - bus_dmamap_destroy(adapter->txtag, map); return (error); } KASSERT(nsegs != 0, ("em_encap: empty packet")); if (nsegs > adapter->num_tx_desc_avail) { adapter->no_tx_desc_avail2++; - bus_dmamap_destroy(adapter->txtag, map); - return (ENOBUFS); + error = ENOBUFS; + goto encap_fail; } @@ -1249,21 +1264,21 @@ m_head = m_pullup(m_head, sizeof(eh)); if (m_head == NULL) { *m_headp = NULL; - bus_dmamap_destroy(adapter->txtag, map); - return (ENOBUFS); + error = ENOBUFS; + goto encap_fail; } eh = *mtod(m_head, struct ether_header *); M_PREPEND(m_head, sizeof(*evl), M_DONTWAIT); if (m_head == NULL) { *m_headp = NULL; - bus_dmamap_destroy(adapter->txtag, map); - return (ENOBUFS); + error = ENOBUFS; + goto encap_fail; } m_head = m_pullup(m_head, sizeof(*evl)); if (m_head == NULL) { *m_headp = NULL; - bus_dmamap_destroy(adapter->txtag, map); - return (ENOBUFS); + error = ENOBUFS; + goto encap_fail; } evl = mtod(m_head, struct ether_vlan_header *); bcopy(&eh, evl, sizeof(*evl)); @@ -1290,11 +1305,11 @@ array_elements = em_fill_descriptors(segs[j].ds_addr, segs[j].ds_len, &desc_array); for (counter = 0; counter < array_elements; counter++) { - if (txd_used == adapter->num_tx_desc_avail) { - adapter->next_avail_tx_desc = txd_saved; - adapter->no_tx_desc_avail2++; - bus_dmamap_destroy(adapter->txtag, map); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200511212107.jALL7stH078547>