From owner-p4-projects@FreeBSD.ORG Sat Apr 26 13:55:59 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CCED0106567D; Sat, 26 Apr 2008 13:55:58 +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 5D64B106567B for ; Sat, 26 Apr 2008 13:55:58 +0000 (UTC) (envelope-from snagg@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 4E81E8FC1B for ; Sat, 26 Apr 2008 13:55:58 +0000 (UTC) (envelope-from snagg@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 m3QDtwJD089139 for ; Sat, 26 Apr 2008 13:55:58 GMT (envelope-from snagg@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id m3QDtvXO089136 for perforce@freebsd.org; Sat, 26 Apr 2008 13:55:57 GMT (envelope-from snagg@FreeBSD.org) Date: Sat, 26 Apr 2008 13:55:57 GMT Message-Id: <200804261355.m3QDtvXO089136@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to snagg@FreeBSD.org using -f From: Vincenzo Iozzo To: Perforce Change Reviews Cc: Subject: PERFORCE change 140675 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: Sat, 26 Apr 2008 13:55:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=140675 Change 140675 by snagg@snagg_macosx on 2008/04/26 13:55:00 IFC Affected files ... .. //depot/projects/soc2008/snagg-audit/sys/amd64/amd64/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/amd64/amd64/pmap.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/amd64/include/pcpu.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/arm/arm/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/conf/files#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/conf/files.sparc64#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/conf/files.sun4v#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/ddb/db_capture.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/acpica/acpi_thermal.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/bge/if_bge.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_82571.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_82571.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_api.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_api.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_defines.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_hw.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_ich8lan.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_ich8lan.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_osdep.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_phy.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_phy.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/if_em.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/em/if_em.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/hme/if_hme.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/hme/if_hme_pci.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/hme/if_hme_sbus.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/hme/if_hmereg.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/hme/if_hmevar.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_82575.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_api.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_api.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_defines.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_hw.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_mac.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_manage.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_osdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_osdep.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/e1000_phy.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/if_igb.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/igb/if_igb.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/sym/sym_hipd.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/usb/if_rum.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/usb/if_udav.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/usb/usbdevs#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/dev/vx/if_vx.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/fs/unionfs/union.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/fs/unionfs/union_subr.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/fs/unionfs/union_vnops.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/i386/i386/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/i386/i386/pmap.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/i386/include/pcpu.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/ia64/ia64/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/kern/kern_descrip.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/kern/sched_4bsd.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/kern/sched_ule.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/mips/mips/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/modules/em/Makefile#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/net80211/ieee80211.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/pc98/pc98/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/powerpc/aim/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/powerpc/booke/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sparc64/isa/isa.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sparc64/pci/ofw_pci.h#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sparc64/pci/ofw_pci_if.m#2 delete .. //depot/projects/soc2008/snagg-audit/sys/sparc64/pci/psycho.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sparc64/sparc64/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sun4v/sun4v/hv_pci.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sun4v/sun4v/machdep.c#2 integrate .. //depot/projects/soc2008/snagg-audit/sys/sys/proc.h#2 integrate Differences ... ==== //depot/projects/soc2008/snagg-audit/sys/amd64/amd64/machdep.c#2 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.685 2008/04/22 19:38:26 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.686 2008/04/25 05:18:47 jeff Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -53,6 +53,7 @@ #include "opt_maxmem.h" #include "opt_msgbuf.h" #include "opt_perfmon.h" +#include "opt_sched.h" #include #include @@ -527,62 +528,192 @@ __asm__ ("hlt"); } +void (*cpu_idle_hook)(void) = NULL; /* ACPI idle hook. */ + +static void +cpu_idle_hlt(int busy) +{ + /* + * we must absolutely guarentee that hlt is the next instruction + * after sti or we introduce a timing window. + */ + disable_intr(); + if (sched_runnable()) + enable_intr(); + else + __asm __volatile("sti; hlt"); +} + +static void +cpu_idle_acpi(int busy) +{ + disable_intr(); + if (sched_runnable()) + enable_intr(); + else if (cpu_idle_hook) + cpu_idle_hook(); + else + __asm __volatile("sti; hlt"); +} + +static void +cpu_idle_spin(int busy) +{ + return; +} + +void (*cpu_idle_fn)(int) = cpu_idle_acpi; + +void +cpu_idle(int busy) +{ +#ifdef SMP + if (mp_grab_cpu_hlt()) + return; +#endif + cpu_idle_fn(busy); +} + /* - * Hook to idle the CPU when possible. In the SMP case we default to - * off because a halted cpu will not currently pick up a new thread in the - * run queue until the next timer tick. If turned on this will result in - * approximately a 4.2% loss in real time performance in buildworld tests - * (but improves user and sys times oddly enough), and saves approximately - * 5% in power consumption on an idle machine (tests w/2xCPU 1.1GHz P3). - * - * XXX we need to have a cpu mask of idle cpus and generate an IPI or - * otherwise generate some sort of interrupt to wake up cpus sitting in HLT. - * Then we can have our cake and eat it too. - * - * XXX I'm turning it on for SMP as well by default for now. It seems to - * help lock contention somewhat, and this is critical for HTT. -Peter + * mwait cpu power states. Lower 4 bits are sub-states. */ -static int cpu_idle_hlt = 1; -TUNABLE_INT("machdep.cpu_idle_hlt", &cpu_idle_hlt); -SYSCTL_INT(_machdep, OID_AUTO, cpu_idle_hlt, CTLFLAG_RW, - &cpu_idle_hlt, 0, "Idle loop HLT enable"); +#define MWAIT_C0 0xf0 +#define MWAIT_C1 0x00 +#define MWAIT_C2 0x10 +#define MWAIT_C3 0x20 +#define MWAIT_C4 0x30 + +#define MWAIT_DISABLED 0x0 +#define MWAIT_WOKEN 0x1 +#define MWAIT_WAITING 0x2 + +static void +cpu_idle_mwait(int busy) +{ + int *mwait; + + mwait = (int *)PCPU_PTR(monitorbuf); + *mwait = MWAIT_WAITING; + if (sched_runnable()) + return; + cpu_monitor(mwait, 0, 0); + if (*mwait == MWAIT_WAITING) + cpu_mwait(0, MWAIT_C1); +} static void -cpu_idle_default(void) +cpu_idle_mwait_hlt(int busy) +{ + int *mwait; + + mwait = (int *)PCPU_PTR(monitorbuf); + if (busy == 0) { + *mwait = MWAIT_DISABLED; + cpu_idle_hlt(busy); + return; + } + *mwait = MWAIT_WAITING; + if (sched_runnable()) + return; + cpu_monitor(mwait, 0, 0); + if (*mwait == MWAIT_WAITING) + cpu_mwait(0, MWAIT_C1); +} + +int +cpu_idle_wakeup(int cpu) { + struct pcpu *pcpu; + int *mwait; + + if (cpu_idle_fn == cpu_idle_spin) + return (1); + if (cpu_idle_fn != cpu_idle_mwait && cpu_idle_fn != cpu_idle_mwait_hlt) + return (0); + pcpu = pcpu_find(cpu); + mwait = (int *)pcpu->pc_monitorbuf; /* - * we must absolutely guarentee that hlt is the - * absolute next instruction after sti or we - * introduce a timing window. + * This doesn't need to be atomic since missing the race will + * simply result in unnecessary IPIs. */ - __asm __volatile("sti; hlt"); + if (cpu_idle_fn == cpu_idle_mwait_hlt && *mwait == MWAIT_DISABLED) + return (0); + *mwait = MWAIT_WOKEN; + + return (1); } /* - * Note that we have to be careful here to avoid a race between checking - * sched_runnable() and actually halting. If we don't do this, we may waste - * the time between calling hlt and the next interrupt even though there - * is a runnable process. + * Ordered by speed/power consumption. */ -void -cpu_idle(void) +struct { + void *id_fn; + char *id_name; +} idle_tbl[] = { + { cpu_idle_spin, "spin" }, + { cpu_idle_mwait, "mwait" }, + { cpu_idle_mwait_hlt, "mwait_hlt" }, + { cpu_idle_hlt, "hlt" }, + { cpu_idle_acpi, "acpi" }, + { NULL, NULL } +}; + +static int +idle_sysctl_available(SYSCTL_HANDLER_ARGS) +{ + char *avail, *p; + int error; + int i; + + avail = malloc(256, M_TEMP, M_WAITOK); + p = avail; + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (strstr(idle_tbl[i].id_name, "mwait") && + (cpu_feature2 & CPUID2_MON) == 0) + continue; + p += sprintf(p, "%s, ", idle_tbl[i].id_name); + } + error = sysctl_handle_string(oidp, avail, 0, req); + free(avail, M_TEMP); + return (error); +} + +static int +idle_sysctl(SYSCTL_HANDLER_ARGS) { + char buf[16]; + int error; + char *p; + int i; -#ifdef SMP - if (mp_grab_cpu_hlt()) - return; -#endif - if (cpu_idle_hlt) { - disable_intr(); - if (sched_runnable()) - enable_intr(); - else - (*cpu_idle_hook)(); + p = "unknown"; + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (idle_tbl[i].id_fn == cpu_idle_fn) { + p = idle_tbl[i].id_name; + break; + } + } + strncpy(buf, p, sizeof(buf)); + error = sysctl_handle_string(oidp, buf, sizeof(buf), req); + if (error != 0 || req->newptr == NULL) + return (error); + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (strstr(idle_tbl[i].id_name, "mwait") && + (cpu_feature2 & CPUID2_MON) == 0) + continue; + if (strcmp(idle_tbl[i].id_name, buf)) + continue; + cpu_idle_fn = idle_tbl[i].id_fn; + return (0); } + return (EINVAL); } -/* Other subsystems (e.g., ACPI) can hook this later. */ -void (*cpu_idle_hook)(void) = cpu_idle_default; +SYSCTL_PROC(_machdep, OID_AUTO, idle_available, CTLTYPE_STRING | CTLFLAG_RD, + 0, 0, idle_sysctl_available, "A", "list of available idle functions"); + +SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, + idle_sysctl, "A", "currently selected idle function"); /* * Clear registers on exec ==== //depot/projects/soc2008/snagg-audit/sys/amd64/amd64/pmap.c#2 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.614 2008/04/10 16:04:50 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.615 2008/04/25 16:00:39 alc Exp $"); /* * Manages physical address maps. @@ -2266,7 +2266,7 @@ * the 2mpage to referencing the page table page. */ if ((oldpde & PG_MANAGED) != 0) - pmap_pv_demote_pde(pmap, va, oldpde & PG_FRAME); + pmap_pv_demote_pde(pmap, va, oldpde & PG_PS_FRAME); pmap_pde_demotions++; CTR2(KTR_PMAP, "pmap_demote_pde: success for va %#lx" @@ -2301,10 +2301,10 @@ pmap_invalidate_page(kernel_pmap, sva); pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; if (oldpde & PG_MANAGED) { - pvh = pa_to_pvh(oldpde & PG_FRAME); + pvh = pa_to_pvh(oldpde & PG_PS_FRAME); pmap_pvh_free(pvh, pmap, sva); eva = sva + NBPDR; - for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_FRAME); + for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME); va < eva; va += PAGE_SIZE, m++) { if ((oldpde & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); @@ -2600,7 +2600,7 @@ oldpde = newpde = *pde; if (oldpde & PG_MANAGED) { eva = sva + NBPDR; - for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_FRAME); + for (va = sva, m = PHYS_TO_VM_PAGE(oldpde & PG_PS_FRAME); va < eva; va += PAGE_SIZE, m++) { /* * In contrast to the analogous operation on a 4KB page @@ -2839,7 +2839,7 @@ * Promote the pv entries. */ if ((newpde & PG_MANAGED) != 0) - pmap_pv_promote_pde(pmap, va, newpde & PG_FRAME); + pmap_pv_promote_pde(pmap, va, newpde & PG_PS_FRAME); /* * Propagate the PAT index to its proper position. @@ -3820,7 +3820,7 @@ pc->pc_map[field] |= bitmask; if ((tpte & PG_PS) != 0) { pmap->pm_stats.resident_count -= NBPDR / PAGE_SIZE; - pvh = pa_to_pvh(tpte & PG_FRAME); + pvh = pa_to_pvh(tpte & PG_PS_FRAME); TAILQ_REMOVE(&pvh->pv_list, pv, pv_list); if (TAILQ_EMPTY(&pvh->pv_list)) { for (mt = m; mt < &m[NBPDR / PAGE_SIZE]; mt++) @@ -4029,7 +4029,7 @@ * table page. */ va += VM_PAGE_TO_PHYS(m) - (oldpde & - PG_FRAME); + PG_PS_FRAME); pmap_remove_page(pmap, va, pde, NULL); rtval++; if (rtval > 4) { @@ -4098,7 +4098,7 @@ * write access may repromote. */ va += VM_PAGE_TO_PHYS(m) - (oldpde & - PG_FRAME); + PG_PS_FRAME); pte = pmap_pde_to_pte(pde, va); oldpte = *pte; if ((oldpte & PG_V) != 0) { @@ -4163,7 +4163,8 @@ * fully populated, this removal never frees * a page table page. */ - va += VM_PAGE_TO_PHYS(m) - (oldpde & PG_FRAME); + va += VM_PAGE_TO_PHYS(m) - (oldpde & + PG_PS_FRAME); pmap_remove_page(pmap, va, pde, NULL); } } ==== //depot/projects/soc2008/snagg-audit/sys/amd64/include/pcpu.h#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/amd64/include/pcpu.h,v 1.48 2007/06/04 21:38:45 attilio Exp $ + * $FreeBSD: src/sys/amd64/include/pcpu.h,v 1.49 2008/04/25 05:18:48 jeff Exp $ */ #ifndef _MACHINE_PCPU_H_ @@ -43,6 +43,7 @@ * other processors" */ #define PCPU_MD_FIELDS \ + char pc_monitorbuf[128] __aligned(128); /* cache line */ \ struct pcpu *pc_prvspace; /* Self-reference */ \ struct pmap *pc_curpmap; \ struct amd64tss *pc_tssp; \ ==== //depot/projects/soc2008/snagg-audit/sys/arm/arm/machdep.c#2 (text+ko) ==== @@ -46,7 +46,7 @@ #include "opt_ddb.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.30 2008/04/03 16:44:49 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.31 2008/04/25 05:18:48 jeff Exp $"); #include #include @@ -326,12 +326,19 @@ } void -cpu_idle(void) +cpu_idle(int busy) { cpu_sleep(0); } int +cpu_idle_wakeup(int cpu) +{ + + return (0); +} + +int fill_regs(struct thread *td, struct reg *regs) { struct trapframe *tf = td->td_frame; ==== //depot/projects/soc2008/snagg-audit/sys/conf/files#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1294 2008/04/21 10:09:53 phk Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1295 2008/04/25 20:42:48 sam Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -732,6 +732,48 @@ dev/ips/ips_ioctl.c optional ips dev/ips/ips_pci.c optional ips pci dev/ipw/if_ipw.c optional ipw +ipwbssfw.c optional ipwbssfw | ipwfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_bss.fw:ipw_bss:130 -lintel_ipw -mipw_bss -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "ipwbssfw.c" +ipw_bss.fwo optional ipwbssfw | ipwfw \ + dependency "ipw_bss.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} ipw_bss.fw" \ + no-implicit-rule \ + clean "ipw_bss.fwo" +ipw_bss.fw optional ipwbssfw | ipwfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ipw/ipw2100-1.3.fw.uu" \ + no-obj no-implicit-rule \ + clean "ipw_bss.fw" +ipwibssfw.c optional ipwibssfw | ipwfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_ibss.fw:ipw_ibss:130 -lintel_ipw -mipw_ibss -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "ipwibssfw.c" +ipw_ibss.fwo optional ipwibssfw | ipwfw \ + dependency "ipw_ibss.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} ipw_ibss.fw" \ + no-implicit-rule \ + clean "ipw_ibss.fwo" +ipw_ibss.fw optional ipwibssfw | ipwfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ipw/ipw2100-1.3-i.fw.uu" \ + no-obj no-implicit-rule \ + clean "ipw_ibss.fw" +ipwmonitorfw.c optional ipwmonitorfw | ipwfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk ipw_monitor.fw:ipw_monitor:130 -lintel_ipw -mipw_monitor -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "ipwmonitorfw.c" +ipw_monitor.fwo optional ipwmonitorfw | ipwfw \ + dependency "ipw_monitor.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} ipw_monitor.fw" \ + no-implicit-rule \ + clean "ipw_monitor.fwo" +ipw_monitor.fw optional ipwmonitorfw | ipwfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ipw/ipw2100-1.3-p.fw.uu" \ + no-obj no-implicit-rule \ + clean "ipw_monitor.fw" dev/iscsi/initiator/iscsi.c optional iscsi_initiator scbus dev/iscsi/initiator/iscsi_subr.c optional iscsi_initiator scbus dev/iscsi/initiator/isc_cam.c optional iscsi_initiator scbus @@ -746,6 +788,48 @@ dev/isp/isp_target.c optional isp dev/ispfw/ispfw.c optional ispfw dev/iwi/if_iwi.c optional iwi +iwibssfw.c optional iwibssfw | iwifw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_bss.fw:iwi_bss:300 -lintel_iwi -miwi_bss -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "iwibssfw.c" +iwi_bss.fwo optional iwibssfw | iwifw \ + dependency "iwi_bss.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwi_bss.fw" \ + no-implicit-rule \ + clean "iwi_bss.fwo" +iwi_bss.fw optional iwibssfw | iwifw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwi/ipw2200-bss.fw.uu" \ + no-obj no-implicit-rule \ + clean "iwi_bss.fw" +iwiibssfw.c optional iwiibssfw | iwifw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_ibss.fw:iwi_ibss:300 -lintel_iwi -miwi_ibss -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "iwiibssfw.c" +iwi_ibss.fwo optional iwiibssfw | iwifw \ + dependency "iwi_ibss.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwi_ibss.fw" \ + no-implicit-rule \ + clean "iwi_ibss.fwo" +iwi_ibss.fw optional iwiibssfw | iwifw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwi/ipw2200-ibss.fw.uu" \ + no-obj no-implicit-rule \ + clean "iwi_ibss.fw" +iwimonitorfw.c optional iwimonitorfw | iwifw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk iwi_monitor.fw:iwi_monitor:300 -lintel_iwi -miwi_monitor -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "iwimonitorfw.c" +iwi_monitor.fwo optional iwimonitorfw | iwifw \ + dependency "iwi_monitor.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwi_monitor.fw" \ + no-implicit-rule \ + clean "iwi_monitor.fwo" +iwi_monitor.fw optional iwimonitorfw | iwifw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwi/ipw2200-sniffer.fw.uu" \ + no-obj no-implicit-rule \ + clean "iwi_monitor.fw" dev/ixgb/if_ixgb.c optional ixgb dev/ixgb/ixgb_ee.c optional ixgb dev/ixgb/ixgb_hw.c optional ixgb @@ -922,6 +1006,62 @@ dev/ral/rt2560.c optional ral dev/ral/rt2661.c optional ral dev/ral/if_ral_pci.c optional ral pci +rt2561fw.c optional rt2561fw | ralfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rt2561.fw:rt2561fw -mrt2561 -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rt2561fw.c" +rt2561fw.fwo optional rt2561fw | ralfw \ + dependency "rt2561.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2561.fw" \ + no-implicit-rule \ + clean "rt2561.fwo" +rt2561.fw optional rt2561fw | ralfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2561.fw.uu" \ + no-obj no-implicit-rule \ + clean "rt2561.fw" +rt2561sfw.c optional rt2561sfw | ralfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rt2561s.fw:rt2561sfw -mrt2561s -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rt2561sfw.c" +rt2561sfw.fwo optional rt2561sfw | ralfw \ + dependency "rt2561s.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2561s.fw" \ + no-implicit-rule \ + clean "rt2561s.fwo" +rt2561s.fw optional rt2561sfw | ralfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2561s.fw.uu" \ + no-obj no-implicit-rule \ + clean "rt2561s.fw" +rt2661fw.c optional rt2661fw | ralfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rt2661.fw:rt2661fw -mrt2661 -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rt2661fw.c" +rt2661fw.fwo optional rt2661fw | ralfw \ + dependency "rt2661.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2661.fw" \ + no-implicit-rule \ + clean "rt2661.fwo" +rt2661.fw optional rt2661fw | ralfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2661.fw.uu" \ + no-obj no-implicit-rule \ + clean "rt2661.fw" +rt2860fw.c optional rt2860fw | ralfw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk rt2860.fw:rt2860fw -mrt2860 -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "rt2860fw.c" +rt2860fw.fwo optional rt2860fw | ralfw \ + dependency "rt2860.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} rt2860.fw" \ + no-implicit-rule \ + clean "rt2860.fwo" +rt2860.fw optional rt2860fw | ralfw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/ral/rt2860.fw.uu" \ + no-obj no-implicit-rule \ + clean "rt2860.fw" dev/random/harvest.c standard dev/random/hash.c optional random dev/random/probe.c optional random @@ -1183,6 +1323,20 @@ dev/wi/if_wi_pccard.c optional wi pccard dev/wi/if_wi_pci.c optional wi pci dev/wl/if_wl.c optional wl isa +wpifw.c optional wpifw \ + compile-with "${AWK} -f $S/tools/fw_stub.awk wpi.fw:wpifw:2144 -lintel_wpi -mwpi -c${.TARGET}" \ + no-implicit-rule before-depend local \ + clean "wpifw.c" +wpifw.fwo optional wpifw \ + dependency "wpi.fw" \ + compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} wpi.fw" \ + no-implicit-rule \ + clean "wpi.fwo" +wpi.fw optional wpifw \ + dependency ".PHONY" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/wpi/iwlwifi-3945-2.14.4.fw.uu" \ + no-obj no-implicit-rule \ + clean "wpi.fw" dev/xe/if_xe.c optional xe dev/xe/if_xe_pccard.c optional xe pccard fs/coda/coda_fbsd.c optional vcoda ==== //depot/projects/soc2008/snagg-audit/sys/conf/files.sparc64#2 (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.sparc64,v 1.94 2008/02/11 21:40:22 marius Exp $ +# $FreeBSD: src/sys/conf/files.sparc64,v 1.95 2008/04/26 11:01:37 marius Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -83,7 +83,6 @@ sparc64/pci/ofw_pcib.c optional pci sparc64/pci/ofw_pcib_subr.c optional pci sparc64/pci/ofw_pcibus.c optional pci -sparc64/pci/ofw_pci_if.m optional pci sparc64/pci/psycho.c optional pci sparc64/sbus/dma_sbus.c optional sbus sparc64/sbus/sbus.c optional sbus ==== //depot/projects/soc2008/snagg-audit/sys/conf/files.sun4v#2 (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.sun4v,v 1.13 2007/12/02 20:40:31 rwatson Exp $ +# $FreeBSD: src/sys/conf/files.sun4v,v 1.14 2008/04/26 11:01:37 marius Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -49,7 +49,6 @@ sparc64/pci/ofw_pcib.c optional pci sparc64/pci/ofw_pcib_subr.c optional pci sparc64/pci/ofw_pcibus.c optional pci -sparc64/pci/ofw_pci_if.m optional pci # XXX hvcons should be optional sun4v/sun4v/hvcons.c standard ==== //depot/projects/soc2008/snagg-audit/sys/ddb/db_capture.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ddb/db_capture.c,v 1.5 2008/01/26 23:02:14 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/ddb/db_capture.c,v 1.6 2008/04/25 13:23:36 rwatson Exp $"); #include "opt_ddb.h" @@ -83,13 +83,16 @@ static SYSCTL_NODE(_debug_ddb, OID_AUTO, capture, CTLFLAG_RW, 0, "DDB capture options"); -SYSCTL_UINT(_debug_ddb_capture, OID_AUTO, bytes, CTLFLAG_RD, +SYSCTL_UINT(_debug_ddb_capture, OID_AUTO, bufoff, CTLFLAG_RD, &db_capture_bufoff, 0, "Bytes of data in DDB capture buffer"); SYSCTL_UINT(_debug_ddb_capture, OID_AUTO, maxbufsize, CTLFLAG_RD, &db_capture_maxbufsize, 0, "Maximum value for debug.ddb.capture.bufsize"); +SYSCTL_UINT(_debug_ddb_capture, OID_AUTO, inprogress, CTLFLAG_RD, + &db_capture_inprogress, 0, "DDB output capture in progress"); + /* * Boot-time allocation of the DDB capture buffer, if any. Force all buffer * sizes, including the maximum size, to be rounded to block sizes. ==== //depot/projects/soc2008/snagg-audit/sys/dev/acpica/acpi_thermal.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.69 2008/02/16 07:15:34 ume Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_thermal.c,v 1.70 2008/04/25 16:45:13 rpaulo Exp $"); #include "opt_acpi.h" #include @@ -90,6 +90,7 @@ int tz_temperature; /*Current temperature*/ int tz_active; /*Current active cooling*/ #define TZ_ACTIVE_NONE -1 +#define TZ_ACTIVE_UNKNOWN -2 int tz_requested; /*Minimum active cooling*/ int tz_thflags; /*Current temp-related flags*/ #define TZ_THFLAG_NONE 0 @@ -202,7 +203,7 @@ sc->tz_dev = dev; sc->tz_handle = acpi_get_handle(dev); sc->tz_requested = TZ_ACTIVE_NONE; - sc->tz_active = TZ_ACTIVE_NONE; + sc->tz_active = TZ_ACTIVE_UNKNOWN; sc->tz_thflags = TZ_THFLAG_NONE; sc->tz_cooling_proc = NULL; sc->tz_cooling_proc_running = FALSE; @@ -520,6 +521,7 @@ * minimum cooling run time if requested. */ if (acpi_tz_min_runtime > 0 && sc->tz_active != TZ_ACTIVE_NONE && + sc->tz_active != TZ_ACTIVE_UNKNOWN && (newactive == TZ_ACTIVE_NONE || newactive > sc->tz_active)) { getnanotime(&curtime); @@ -543,6 +545,23 @@ newflags |= TZ_THFLAG_CRT; /* If the active cooling state has changed, we have to switch things. */ + if (sc->tz_active == TZ_ACTIVE_UNKNOWN) { + /* + * We don't know which cooling device is on or off, + * so stop them all, because we now know which + * should be on (if any). + */ + for (i = 0; i < TZ_NUMLEVELS; i++) { + if (sc->tz_zone.al[i].Pointer != NULL) { + acpi_ForeachPackageObject( + (ACPI_OBJECT *)sc->tz_zone.al[i].Pointer, + acpi_tz_switch_cooler_off, sc); + } + } + /* now we know that all devices are off */ + sc->tz_active = TZ_ACTIVE_NONE; + } + if (newactive != sc->tz_active) { /* Turn off the cooling devices that are on, if any are */ if (sc->tz_active != TZ_ACTIVE_NONE) ==== //depot/projects/soc2008/snagg-audit/sys/dev/bge/if_bge.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.205 2008/04/08 11:51:17 bz Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.206 2008/04/26 10:54:17 marius Exp $"); /* * Broadcom BCM570x family gigabit ethernet driver for FreeBSD. @@ -1894,16 +1894,10 @@ /* * Allocate the parent bus DMA tag appropriate for PCI. */ - error = bus_dma_tag_create(bus_get_dma_tag(sc->bge_dev), /* parent */ - 1, 0, /* alignment, boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - MAXBSIZE, BGE_NSEG_NEW, /* maxsize, nsegments */ - BUS_SPACE_MAXSIZE_32BIT, /* maxsegsize */ - 0, /* flags */ - NULL, NULL, /* lockfunc, lockarg */ - &sc->bge_cdata.bge_parent_tag); + error = bus_dma_tag_create(bus_get_dma_tag(sc->bge_dev), + 1, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, + NULL, BUS_SPACE_MAXSIZE_32BIT, 0, BUS_SPACE_MAXSIZE_32BIT, + 0, NULL, NULL, &sc->bge_cdata.bge_parent_tag); if (error != 0) { device_printf(sc->bge_dev, @@ -1912,7 +1906,7 @@ } /* - * Create tag for RX mbufs. + * Create tag for mbufs. */ error = bus_dma_tag_create(sc->bge_cdata.bge_parent_tag, 1, 0, BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR, NULL, @@ -3402,7 +3396,7 @@ error = bus_dmamap_load_mbuf_sg(sc->bge_cdata.bge_mtag, map, m, segs, &nsegs, BUS_DMA_NOWAIT); if (error == EFBIG) { - m = m_defrag(m, M_DONTWAIT); + m = m_collapse(m, M_DONTWAIT, BGE_NSEG_NEW); if (m == NULL) { m_freem(*m_head); *m_head = NULL; ==== //depot/projects/soc2008/snagg-audit/sys/dev/em/e1000_82571.c#2 (text+ko) ==== @@ -30,7 +30,7 @@ POSSIBILITY OF SUCH DAMAGE. ******************************************************************************/ -/*$FreeBSD: src/sys/dev/em/e1000_82571.c,v 1.6 2008/04/02 22:00:35 jfv Exp $*/ +/*$FreeBSD: src/sys/dev/em/e1000_82571.c,v 1.7 2008/04/25 21:19:39 jfv Exp $*/ /* e1000_82571 * e1000_82572 @@ -150,6 +150,25 @@ goto out; } break; + case e1000_82574: + phy->type = e1000_phy_bm; + phy->ops.get_cfg_done = e1000_get_cfg_done_generic; + phy->ops.get_info = e1000_get_phy_info_m88; + phy->ops.commit = e1000_phy_sw_reset_generic; + phy->ops.force_speed_duplex = e1000_phy_force_speed_duplex_m88; + phy->ops.get_cable_length = e1000_get_cable_length_m88; + phy->ops.read_reg = e1000_read_phy_reg_bm2; + phy->ops.write_reg = e1000_write_phy_reg_bm2; + + /* This uses above function pointers */ + ret_val = e1000_get_phy_id_82571(hw); + /* Verify PHY ID */ + if (phy->id != BME1000_E_PHY_ID_R2) { + ret_val = -E1000_ERR_PHY; + DEBUGOUT1("PHY ID unknown: type = 0x%08x\n", phy->id); + goto out; + } + break; default: ret_val = -E1000_ERR_PHY; goto out; @@ -193,6 +212,7 @@ switch (hw->mac.type) { case e1000_82573: + case e1000_82574: if (((eecd >> 15) & 0x3) == 0x3) { nvm->type = e1000_nvm_flash_hw; nvm->word_size = 2048; @@ -374,6 +394,7 @@ { struct e1000_phy_info *phy = &hw->phy; s32 ret_val = E1000_SUCCESS; + u16 phy_id = 0; DEBUGFUNC("e1000_get_phy_id_82571"); @@ -391,11 +412,26 @@ case e1000_82573: ret_val = e1000_get_phy_id(hw); break; + case e1000_82574: + ret_val = phy->ops.read_reg(hw, PHY_ID1, &phy_id); + if (ret_val) + goto out; + + phy->id = (u32)(phy_id << 16); + usec_delay(20); + ret_val = phy->ops.read_reg(hw, PHY_ID2, &phy_id); + if (ret_val) + goto out; + + phy->id |= (u32)(phy_id); + phy->revision = (u32)(phy_id & ~PHY_REVISION_MASK); + break; default: ret_val = -E1000_ERR_PHY; break; } +out: return ret_val; } @@ -476,7 +512,7 @@ if (ret_val) goto out; - if (hw->mac.type != e1000_82573) + if (hw->mac.type != e1000_82573 && hw->mac.type != e1000_82574) ret_val = e1000_acquire_nvm_generic(hw); if (ret_val) @@ -521,6 +557,7 @@ switch (hw->mac.type) { case e1000_82573: + case e1000_82574: ret_val = e1000_write_nvm_eewr_82571(hw, offset, words, data); break; case e1000_82571: @@ -825,7 +862,7 @@ * Must acquire the MDIO ownership before MAC reset. * Ownership defaults to firmware after a reset. */ - if (hw->mac.type == e1000_82573) { + if (hw->mac.type == e1000_82573 || hw->mac.type == e1000_82574) { extcnf_ctrl = E1000_READ_REG(hw, E1000_EXTCNF_CTRL); extcnf_ctrl |= E1000_EXTCNF_CTRL_MDIO_SW_OWNERSHIP; @@ -866,7 +903,7 @@ * Need to wait for Phy configuration completion before accessing * NVM and Phy. */ - if (hw->mac.type == e1000_82573) + if (hw->mac.type == e1000_82573 || hw->mac.type == e1000_82574) msec_delay(25); /* Clear any pending interrupt events. */ @@ -934,7 +971,7 @@ E1000_WRITE_REG(hw, E1000_TXDCTL(0), reg_data); /* ...for both queues. */ - if (mac->type != e1000_82573) { + if (mac->type != e1000_82573 && mac->type != e1000_82574) { reg_data = E1000_READ_REG(hw, E1000_TXDCTL(1)); reg_data = (reg_data & ~E1000_TXDCTL_WTHRESH) | E1000_TXDCTL_FULL_TX_DESC_WB | @@ -1014,14 +1051,14 @@ } /* Device Control */ - if (hw->mac.type == e1000_82573) { + if (hw->mac.type == e1000_82573 || hw->mac.type == e1000_82574) { reg = E1000_READ_REG(hw, E1000_CTRL); reg &= ~(1 << 29); E1000_WRITE_REG(hw, E1000_CTRL, reg); } /* Extended Device Control */ - if (hw->mac.type == e1000_82573) { + if (hw->mac.type == e1000_82573 || hw->mac.type == e1000_82574) { reg = E1000_READ_REG(hw, E1000_CTRL_EXT); reg &= ~(1 << 23); reg |= (1 << 22); @@ -1048,7 +1085,7 @@ DEBUGFUNC("e1000_clear_vfta_82571"); - if (hw->mac.type == e1000_82573) { + if (hw->mac.type == e1000_82573 || hw->mac.type == e1000_82574) { if (hw->mng_cookie.vlan_id != 0) { /* * The VFTA is a 4096b bit-field, each identifying @@ -1121,7 +1158,8 @@ * the default flow control setting, so we explicitly * set it to full. */ >>> TRUNCATED FOR MAIL (1000 lines) <<<