From owner-p4-projects@FreeBSD.ORG Mon Jul 17 23:12:37 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 073A416A4E2; Mon, 17 Jul 2006 23:12:37 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BD2DD16A4DD for ; Mon, 17 Jul 2006 23:12:36 +0000 (UTC) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 91CB343D7C for ; Mon, 17 Jul 2006 23:12:32 +0000 (GMT) (envelope-from imp@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.6/8.13.6) with ESMTP id k6HNCVCc063455 for ; Mon, 17 Jul 2006 23:12:31 GMT (envelope-from imp@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.6/8.13.4/Submit) id k6HNCUBL063452 for perforce@freebsd.org; Mon, 17 Jul 2006 23:12:30 GMT (envelope-from imp@freebsd.org) Date: Mon, 17 Jul 2006 23:12:30 GMT Message-Id: <200607172312.k6HNCUBL063452@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 101818 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: Mon, 17 Jul 2006 23:12:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=101818 Change 101818 by imp@imp_harmony on 2006/07/17 23:12:09 IFC @101815 Affected files ... .. //depot/projects/arm/src/sys/amd64/amd64/pmap.c#19 integrate .. //depot/projects/arm/src/sys/arm/arm/vm_machdep.c#7 integrate .. //depot/projects/arm/src/sys/arm/at91/if_ate.c#53 integrate .. //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c#32 integrate .. //depot/projects/arm/src/sys/arm/conf/KB920X#38 integrate .. //depot/projects/arm/src/sys/conf/NOTES#27 integrate .. //depot/projects/arm/src/sys/conf/files#38 integrate .. //depot/projects/arm/src/sys/conf/files.ia64#7 integrate .. //depot/projects/arm/src/sys/conf/kern.pre.mk#5 integrate .. //depot/projects/arm/src/sys/conf/options#25 integrate .. //depot/projects/arm/src/sys/dev/acpica/acpi_perf.c#6 integrate .. //depot/projects/arm/src/sys/dev/amr/amr.c#11 integrate .. //depot/projects/arm/src/sys/dev/isp/isp.c#8 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_freebsd.c#12 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_library.c#4 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_pci.c#11 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_sbus.c#7 integrate .. //depot/projects/arm/src/sys/dev/isp/isp_target.c#6 integrate .. //depot/projects/arm/src/sys/dev/lmc/if_lmc.c#4 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt.c#17 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt.h#17 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_cam.c#20 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_raid.c#8 integrate .. //depot/projects/arm/src/sys/dev/mpt/mpt_raid.h#5 integrate .. //depot/projects/arm/src/sys/dev/mxge/if_mxge.c#3 integrate .. //depot/projects/arm/src/sys/dev/sio/sio.c#7 integrate .. //depot/projects/arm/src/sys/dev/sound/driver.c#5 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/cmi.c#7 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/emu10k1.c#6 integrate .. //depot/projects/arm/src/sys/dev/sound/pci/emu10kx-midi.c#1 branch .. //depot/projects/arm/src/sys/dev/sound/pci/emu10kx-pcm.c#1 branch .. //depot/projects/arm/src/sys/dev/sound/pci/emu10kx.c#1 branch .. //depot/projects/arm/src/sys/dev/sound/pci/emu10kx.h#1 branch .. //depot/projects/arm/src/sys/dev/sound/pcm/buffer.c#3 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/buffer.h#2 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/mixer.h#2 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/sound.c#8 integrate .. //depot/projects/arm/src/sys/dev/sound/pcm/sound.h#7 integrate .. //depot/projects/arm/src/sys/dev/spibus/spi.h#3 integrate .. //depot/projects/arm/src/sys/dev/spibus/spibusvar.h#3 integrate .. //depot/projects/arm/src/sys/fs/devfs/devfs_devs.c#5 integrate .. //depot/projects/arm/src/sys/fs/devfs/devfs_rule.c#5 integrate .. //depot/projects/arm/src/sys/fs/devfs/devfs_vfsops.c#4 integrate .. //depot/projects/arm/src/sys/fs/devfs/devfs_vnops.c#8 integrate .. //depot/projects/arm/src/sys/fs/smbfs/smbfs_vfsops.c#5 integrate .. //depot/projects/arm/src/sys/gnu/dev/sound/pci/emu10k1-ac97.h#2 delete .. //depot/projects/arm/src/sys/gnu/dev/sound/pci/emu10k1-alsa.h#2 integrate .. //depot/projects/arm/src/sys/gnu/dev/sound/pci/emu10k1.h#2 delete .. //depot/projects/arm/src/sys/gnu/dev/sound/pci/p16v-alsa.h#1 branch .. //depot/projects/arm/src/sys/gnu/dev/sound/pci/p17v-alsa.h#1 branch .. //depot/projects/arm/src/sys/i386/i386/pmap.c#15 integrate .. //depot/projects/arm/src/sys/ia64/conf/DEFAULTS#5 integrate .. //depot/projects/arm/src/sys/kern/kern_mac.c#4 integrate .. //depot/projects/arm/src/sys/kern/kern_uuid.c#3 integrate .. //depot/projects/arm/src/sys/kern/uipc_socket.c#16 integrate .. //depot/projects/arm/src/sys/kern/vfs_subr.c#21 integrate .. //depot/projects/arm/src/sys/modules/sound/driver/Makefile#5 integrate .. //depot/projects/arm/src/sys/modules/sound/driver/emu10kx/Makefile#1 branch .. //depot/projects/arm/src/sys/net/if_spppsubr.c#4 integrate .. //depot/projects/arm/src/sys/net/if_tap.c#6 integrate .. //depot/projects/arm/src/sys/net80211/ieee80211_input.c#9 integrate .. //depot/projects/arm/src/sys/net80211/ieee80211_ioctl.c#9 integrate .. //depot/projects/arm/src/sys/netsmb/smb_conn.c#3 integrate .. //depot/projects/arm/src/sys/security/mac/mac_vfs.c#4 integrate .. //depot/projects/arm/src/sys/sys/libkern.h#3 integrate .. //depot/projects/arm/src/sys/sys/mbuf.h#11 integrate .. //depot/projects/arm/src/sys/sys/param.h#13 integrate .. //depot/projects/arm/src/sys/vm/uma_core.c#7 integrate .. //depot/projects/arm/src/sys/vm/vm_object.c#9 integrate Differences ... ==== //depot/projects/arm/src/sys/amd64/amd64/pmap.c#19 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.565 2006/07/06 06:17:08 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.566 2006/07/17 03:10:17 alc Exp $"); /* * Manages physical address maps. @@ -1627,6 +1627,7 @@ int idx, field, bit; mtx_assert(&vm_page_queue_mtx, MA_OWNED); + PMAP_LOCK_ASSERT(pmap, MA_OWNED); PV_STAT(pv_entry_frees++); PV_STAT(pv_entry_spare++); pv_entry_count--; @@ -2015,8 +2016,8 @@ TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); m->md.pv_list_count--; pmap_unuse_pt(pmap, pv->pv_va, ptepde); + free_pv_entry(pmap, pv); PMAP_UNLOCK(pmap); - free_pv_entry(pmap, pv); } vm_page_flag_clear(m, PG_WRITEABLE); } ==== //depot/projects/arm/src/sys/arm/arm/vm_machdep.c#7 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.24 2006/06/05 23:42:47 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.26 2006/07/15 23:15:31 cognet Exp $"); #include #include @@ -512,7 +512,7 @@ void *ret; struct arm_small_page *sp, *tmp; TAILQ_HEAD(,arm_small_page) *head; - static int in_alloc; + static struct thread *in_alloc; static int in_sleep; int should_wakeup = 0; @@ -532,12 +532,13 @@ if (!sp) { /* No more free pages, need to alloc more. */ - if (!(wait & M_WAITOK)) { + if (!(wait & M_WAITOK) || + in_alloc == curthread) { mtx_unlock(&smallalloc_mtx); *flags = UMA_SLAB_KMEM; return ((void *)kmem_malloc(kmem_map, bytes, M_NOWAIT)); } - if (in_alloc) { + if (in_alloc != NULL) { /* Somebody else is already doing the allocation. */ in_sleep++; msleep(&in_alloc, &smallalloc_mtx, PWAIT, @@ -545,14 +546,14 @@ in_sleep--; goto retry; } - in_alloc = 1; + in_alloc = curthread; mtx_unlock(&smallalloc_mtx); /* Try to alloc 1MB of contiguous memory. */ ret = arm_uma_do_alloc(&sp, bytes, zone == l2zone ? SECTION_PT : SECTION_CACHE); mtx_lock(&smallalloc_mtx); - in_alloc = 0; - if (in_sleep) + in_alloc = NULL; + if (in_sleep > 0) should_wakeup = 1; if (sp) { for (int i = 0; i < (0x100000 / PAGE_SIZE) - 1; ==== //depot/projects/arm/src/sys/arm/at91/if_ate.c#53 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.8 2006/06/17 23:24:35 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.9 2006/07/17 21:36:08 cognet Exp $"); #include #include @@ -764,7 +764,7 @@ } mdefrag = m_defrag(m, M_DONTWAIT); if (mdefrag == NULL) { - m_freem(m); + IFQ_DRV_PREPEND(&ifp->if_snd, m); return; } m = mdefrag; ==== //depot/projects/arm/src/sys/arm/at91/kb920x_machdep.c#32 (text+ko) ==== @@ -48,7 +48,7 @@ #include "opt_at91.h" #include -__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.10 2006/07/14 22:22:57 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/at91/kb920x_machdep.c,v 1.12 2006/07/17 21:20:00 cognet Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -159,6 +159,15 @@ VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, + /* + * We can't just map the OHCI registers VA == PA, because + * AT91RM92_OHCI_BASE belongs to the userland address space. + * We could just choose a different virtual address, but a better + * solution would probably be to just use pmap_mapdev() to allocate + * KVA, as we don't need the OHCI controller before the vm + * initialization is done. However, the AT91 resource allocation + * system doesn't know how to use pmap_mapdev() yet. + */ #if 0 { /* @@ -225,7 +234,7 @@ /* PIOA's B periph: Turn USART 3's TX/RX pins */ at91_pio_use_periph_b(AT91RM92_PIOA_BASE, AT91C_PA6_RXD3, 0); at91_pio_use_periph_b(AT91RM92_PIOA_BASE, AT91C_PA5_TXD3, 1); -#if AT91_TSC +#ifdef AT91_TSC /* We're using TC0's A1 and A2 input */ at91_pio_use_periph_b(AT91RM92_PIOA_BASE, AT91C_PA19_TIOA1 | AT91C_PA21_TIOA2, 0); @@ -235,7 +244,7 @@ at91_pio_use_periph_a(AT91RM92_PIOB_BASE, AT91C_PB20_TXD1, 1); /* Pin assignment */ -#if AT91_TSC +#ifdef AT91_TSC /* Assert PA24 low -- talk to rubidium */ at91_pio_use_gpio(AT91RM92_PIOA_BASE, AT91C_PIO_PA24); at91_pio_gpio_output(AT91RM92_PIOA_BASE, AT91C_PIO_PA24, 0); ==== //depot/projects/arm/src/sys/arm/conf/KB920X#38 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/KB920X,v 1.8 2006/07/14 15:20:31 imp Exp $ +# $FreeBSD: src/sys/arm/conf/KB920X,v 1.9 2006/07/17 21:17:20 cognet Exp $ machine arm ident KB920X @@ -95,6 +95,7 @@ device md device at91_twi # TWI: Two Wire Interface device at91_spi # SPI: +device spibus device at91_ssc # iic device iic ==== //depot/projects/arm/src/sys/conf/NOTES#27 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1371 2006/07/10 05:25:18 thompsa Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1374 2006/07/17 09:07:01 phk Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -1787,8 +1787,7 @@ # the D-Link DFE-550TX. # ti: Support for PCI gigabit ethernet NICs based on the Alteon Networks # Tigon 1 and Tigon 2 chipsets. This includes the Alteon AceNIC, the -# 3Com 3c985, the Netgear GA620 and various others. Note that you will -# probably want to bump up NMBCLUSTERS a lot to use this driver. +# 3Com 3c985, the Netgear GA620 and various others. # tl: Support for the Texas Instruments TNETE100 series 'ThunderLAN' # cards and integrated ethernet controllers. This includes several # Compaq Netelligent 10/100 cards and the built-in ethernet controllers @@ -1962,6 +1961,7 @@ # 4281) # snd_ds1: Yamaha DS-1 PCI. # snd_emu10k1: Creative EMU10K1 PCI and EMU10K2 (Audigy) PCI. +# snd_emu10kx: Creative SoundBlaster Live! and Audigy # snd_es137x: Ensoniq AudioPCI ES137x PCI. # snd_ess: Ensoniq ESS ISA PnP/non-PnP, to be used in # conjunction with snd_sbc. @@ -1998,6 +1998,8 @@ device snd_csa device snd_ds1 device snd_emu10k1 +device snd_emu10kx +options SND_EMU10KX_MULTICHANNEL device snd_es137x device snd_ess device snd_fm801 @@ -2594,8 +2596,6 @@ options NBUF=512 # Number of buffer headers -options NMBCLUSTERS=1024 # Number of mbuf clusters - options SCSI_NCR_DEBUG options SCSI_NCR_MAX_SYNC=10000 options SCSI_NCR_MAX_WIDE=1 @@ -2625,8 +2625,6 @@ ##options BKTR_ALLOC_PAGES=(217*4+1) options BROOKTREE_ALLOC_PAGES=(217*4+1) options MAXFILES=999 -options NDEVFSINO=1025 -options NDEVFSOVERFLOW=32769 # Yet more undocumented options for linting. options VGA_DEBUG ==== //depot/projects/arm/src/sys/conf/files#38 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.1129 2006/07/14 22:50:46 imp Exp $ +# $FreeBSD: src/sys/conf/files,v 1.1130 2006/07/15 20:22:40 netchild Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -55,6 +55,21 @@ compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/emu10k1-alsa.h emu10k1-alsa%diked.h" \ no-obj no-implicit-rule before-depend \ clean "emu10k1-alsa%diked.h" +emu10k1-alsa%diked.h optional snd_emu10kx pci \ + dependency "$S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/emu10k1-alsa.h" \ + compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/emu10k1-alsa.h emu10k1-alsa%diked.h" \ + no-obj no-implicit-rule before-depend \ + clean "emu10k1-alsa%diked.h" +p16v-alsa%diked.h optional snd_emu10kx pci \ + dependency "$S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p16v-alsa.h" \ + compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p16v-alsa.h p16v-alsa%diked.h" \ + no-obj no-implicit-rule before-depend \ + clean "p16v-alsa%diked.h" +p17v-alsa%diked.h optional snd_emu10kx pci \ + dependency "$S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p17v-alsa.h" \ + compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p17v-alsa.h p17v-alsa%diked.h" \ + no-obj no-implicit-rule before-depend \ + clean "p17v-alsa%diked.h" miidevs.h optional miibus | mii \ dependency "$S/tools/miidevs2h.awk $S/dev/mii/miidevs" \ compile-with "${AWK} -f $S/tools/miidevs2h.awk $S/dev/mii/miidevs" \ @@ -873,6 +888,19 @@ dev/sound/pci/emu10k1.c optional snd_emu10k1 pci \ dependency "emu10k1-alsa%diked.h" \ warning "kernel contains GPL contaminated emu10k1 headers" +dev/sound/pci/emu10kx.c optional snd_emu10kx pci \ + dependency "emu10k1-alsa%diked.h" \ + dependency "p16v-alsa%diked.h" \ + dependency "p17v-alsa%diked.h" \ + warning "kernel contains GPL contaminated emu10kx headers" +dev/sound/pci/emu10kx-pcm.c optional snd_emu10kx pci \ + dependency "emu10k1-alsa%diked.h" \ + dependency "p16v-alsa%diked.h" \ + dependency "p17v-alsa%diked.h" \ + warning "kernel contains GPL contaminated emu10kx headers" +dev/sound/pci/emu10kx-midi.c optional snd_emu10kx pci \ + dependency "emu10k1-alsa%diked.h" \ + warning "kernel contains GPL contaminated emu10kx headers" dev/sound/pci/es137x.c optional snd_es137x pci dev/sound/pci/fm801.c optional snd_fm801 pci dev/sound/pci/ich.c optional snd_ich pci ==== //depot/projects/arm/src/sys/conf/files.ia64#7 (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.ia64,v 1.87 2006/06/29 19:59:16 marcel Exp $ +# $FreeBSD: src/sys/conf/files.ia64,v 1.88 2006/07/17 20:02:50 marcel Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -69,11 +69,6 @@ dev/syscons/syscons.c optional sc dev/syscons/sysmouse.c optional sc dev/uart/uart_cpu_ia64.c optional uart -geom/geom_bsd.c standard -geom/geom_bsd_enc.c standard -geom/geom_gpt.c standard -geom/geom_mbr.c standard -geom/geom_mbr_enc.c standard dev/acpica/acpi_if.m standard ia64/acpica/OsdEnvironment.c optional acpi ia64/acpica/acpi_machdep.c optional acpi ==== //depot/projects/arm/src/sys/conf/kern.pre.mk#5 (text+ko) ==== @@ -1,8 +1,13 @@ -# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.75 2006/06/29 21:15:25 obrien Exp $ +# $FreeBSD: src/sys/conf/kern.pre.mk,v 1.76 2006/07/17 18:43:16 obrien Exp $ # Part of a unified Makefile for building kernels. This part contains all # of the definitions that need to be before %BEFORE_DEPEND. +SRCCONF?= /etc/src.conf +.if exists(${SRCCONF}) +.include "${SRCCONF}" +.endif + # Can be overridden by makeoptions or /etc/make.conf KERNEL_KO?= kernel KERNEL?= kernel ==== //depot/projects/arm/src/sys/conf/options#25 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.550 2006/06/27 12:45:27 glebius Exp $ +# $FreeBSD: src/sys/conf/options,v 1.553 2006/07/17 09:07:01 phk Exp $ # # On the handling of kernel options # @@ -257,7 +257,6 @@ HZ opt_param.h MAXFILES opt_param.h NBUF opt_param.h -NMBCLUSTERS opt_param.h NSFBUFS opt_param.h VM_BCACHE_SIZE_MAX opt_param.h VM_SWZONE_SIZE_MAX opt_param.h @@ -624,10 +623,6 @@ DEV_ISA opt_isa.h ISAPNP opt_isa.h -# options for DEVFS, see sys/fs/devfs/devfs.h -NDEVFSINO opt_devfs.h -NDEVFSOVERFLOW opt_devfs.h - # various 'device presence' options. DEV_BPF opt_bpf.h DEV_MCA opt_mca.h @@ -727,3 +722,6 @@ # XFS XFS + +# snd_emu10kx sound driver options +SND_EMU10KX_MULTICHANNEL opt_emu10kx.h ==== //depot/projects/arm/src/sys/dev/acpica/acpi_perf.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_perf.c,v 1.23 2005/12/12 11:15:20 bruno Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_perf.c,v 1.24 2006/07/15 17:34:03 bruno Exp $"); #include "opt_acpi.h" #include @@ -299,6 +299,12 @@ sc->px_states[count].core_freq >= 0xffff) continue; + /* Check for duplicate entries */ + if (count > 0 && + sc->px_states[count - 1].core_freq == + sc->px_states[count].core_freq) + continue; + count++; } sc->px_count = count; ==== //depot/projects/arm/src/sys/dev/amr/amr.c#11 (text+ko) ==== @@ -56,7 +56,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/amr/amr.c,v 1.78 2006/05/03 16:45:15 ambrisko Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/amr/amr.c,v 1.79 2006/07/17 19:45:47 jhb Exp $"); /* * Driver for the AMI MegaRaid family of controllers. @@ -1785,13 +1785,44 @@ } } +static void +amr_setup_dmamap_cb(void *arg, bus_dma_segment_t *segs, int nsegments, + int error) +{ + struct amr_command *ac = (struct amr_command *)arg; + struct amr_softc *sc = ac->ac_sc; + + amr_setup_dmamap(arg, segs, nsegments, error); + + if (bus_dmamap_load(sc->amr_buffer_dmat, ac->ac_ccb_dmamap, + ac->ac_ccb_data, ac->ac_ccb_length, amr_setup_ccbmap, ac, + 0) == EINPROGRESS) { + sc->amr_state |= AMR_STATE_QUEUE_FRZN; + } +} + +static void +amr_setup_dma64map_cb(void *arg, bus_dma_segment_t *segs, int nsegments, + int error) +{ + struct amr_command *ac = (struct amr_command *)arg; + struct amr_softc *sc = ac->ac_sc; + + amr_setup_dma64map(arg, segs, nsegments, error); + + if (bus_dmamap_load(sc->amr_buffer64_dmat, ac->ac_ccb_dma64map, + ac->ac_ccb_data, ac->ac_ccb_length, amr_setup_ccb64map, ac, + 0) == EINPROGRESS) { + sc->amr_state |= AMR_STATE_QUEUE_FRZN; + } +} + static int amr_mapcmd(struct amr_command *ac) { bus_dma_tag_t tag; - bus_dmamap_t datamap, ccbmap; + bus_dmamap_t datamap; bus_dmamap_callback_t *cb; - bus_dmamap_callback_t *ccb_cb; struct amr_softc *sc = ac->ac_sc; debug_called(3); @@ -1799,35 +1830,22 @@ if (AC_IS_SG64(ac)) { tag = sc->amr_buffer64_dmat; datamap = ac->ac_dma64map; - ccbmap = ac->ac_ccb_dma64map; - cb = amr_setup_dma64map; - ccb_cb = amr_setup_ccb64map; + cb = amr_setup_dma64map_cb; } else { tag = sc->amr_buffer_dmat; datamap = ac->ac_dmamap; - ccbmap = ac->ac_ccb_dmamap; - cb = amr_setup_dmamap; - ccb_cb = amr_setup_ccbmap; + cb = amr_setup_dmamap_cb; } /* if the command involves data at all, and hasn't been mapped */ if ((ac->ac_flags & AMR_CMD_MAPPED) == 0 && (ac->ac_data != NULL)) { - if (ac->ac_ccb_data == NULL) { - /* map the data buffers into bus space and build the s/g list */ - if (bus_dmamap_load(tag, datamap, ac->ac_data, ac->ac_length, - amr_setup_data_dmamap, ac, 0) == EINPROGRESS) { - sc->amr_state |= AMR_STATE_QUEUE_FRZN; - } - } else { - if (bus_dmamap_load(tag, datamap, ac->ac_data, ac->ac_length, - cb, ac, BUS_DMA_NOWAIT) != 0) { - return (ENOMEM); - } - if (bus_dmamap_load(tag, ccbmap, ac->ac_ccb_data, - ac->ac_ccb_length, ccb_cb, ac, 0) == EINPROGRESS) { - sc->amr_state |= AMR_STATE_QUEUE_FRZN; - } - } + if (ac->ac_ccb_data == NULL) + cb = amr_setup_data_dmamap; + /* map the data buffers into bus space and build the s/g list */ + if (bus_dmamap_load(tag, datamap, ac->ac_data, ac->ac_length, + cb, ac, 0) == EINPROGRESS) { + sc->amr_state |= AMR_STATE_QUEUE_FRZN; + } } else { if (sc->amr_submit_command(ac) == EBUSY) { amr_freeslot(ac); ==== //depot/projects/arm/src/sys/dev/isp/isp.c#8 (text+ko) ==== @@ -1,7 +1,4 @@ /*- - * Machine and OS Independent (well, as best as possible) - * code for the Qlogic ISP SCSI adapters. - * * Copyright (c) 1997-2006 by Matthew Jacob * All rights reserved. * @@ -28,14 +25,14 @@ */ /* + * Machine and OS Independent (well, as best as possible) + * code for the Qlogic ISP SCSI adapters. + */ +/* * Inspiration and ideas about this driver are from Erik Moe's Linux driver * (qlogicisp.c) and Dave Miller's SBus version of same (qlogicisp.c). Some * ideas dredged from the Solaris driver. */ -#ifdef __FreeBSD__ -#include -__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.122 2006/07/14 05:14:48 mjacob Exp $"); -#endif /* * Include header file appropriate for platform we're building on. @@ -44,6 +41,8 @@ #include #endif #ifdef __FreeBSD__ +#include +__FBSDID("$FreeBSD: src/sys/dev/isp/isp.c,v 1.123 2006/07/16 20:11:49 mjacob Exp $"); #include #endif #ifdef __OpenBSD__ @@ -166,7 +165,6 @@ char *btype = "????"; isp->isp_state = ISP_NILSTATE; - MEMZERO(&mbs, sizeof (mbs)); /* * Basic types (SCSI, FibreChannel and PCI or SBus) @@ -205,6 +203,7 @@ * Just in case it was paused... */ ISP_WRITE(isp, HCCR, HCCR_CMD_RELEASE); + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_ABOUT_FIRMWARE; isp_mboxcmd(isp, &mbs, MBLOGNONE); if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { @@ -596,6 +595,7 @@ /* * Do some sanity checking. */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_NO_OP; isp_mboxcmd(isp, &mbs, MBLOGALL); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { @@ -603,6 +603,7 @@ } if (IS_SCSI(isp)) { + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_MAILBOX_REG_TEST; mbs.param[1] = 0xdead; mbs.param[2] = 0xbeef; @@ -650,6 +651,7 @@ isp->isp_mbxworkp = &ptr[1]; isp->isp_mbxwrk0 = ptr[3] - 1; isp->isp_mbxwrk1 = code_org + 1; + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_WRITE_RAM_WORD; mbs.param[1] = code_org; mbs.param[2] = ptr[0]; @@ -665,6 +667,7 @@ /* * Verify that it downloaded correctly. */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_VERIFY_CHECKSUM; mbs.param[1] = code_org; isp_mboxcmd(isp, &mbs, MBLOGNONE); @@ -687,10 +690,11 @@ isp->isp_mbxwrk0 = ptr[3] - 1; isp->isp_mbxwrk1 = ptr[5] + 1; isp->isp_mbxwrk8 = ptr[4]; + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_WRITE_RAM_WORD_EXTENDED; - mbs.param[8] = ptr[4]; mbs.param[1] = ptr[5]; mbs.param[2] = ptr[0]; + mbs.param[8] = ptr[4]; isp_mboxcmd(isp, &mbs, MBLOGNONE); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { isp_prt(isp, ISP_LOGERR, @@ -703,10 +707,11 @@ isp->isp_mbxwrk0 = ptr[3] - 1; isp->isp_mbxwrk1 = ptr[5] + 1; isp->isp_mbxwrk8 = ptr[4]; + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_WRITE_RAM_WORD_EXTENDED; - mbs.param[8] = ptr[4]; mbs.param[1] = ptr[5]; mbs.param[2] = ptr[0]; + mbs.param[8] = ptr[4]; isp_mboxcmd(isp, &mbs, MBLOGNONE); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { isp_prt(isp, ISP_LOGERR, @@ -729,6 +734,7 @@ */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_EXEC_FIRMWARE; mbs.param[1] = code_org; if (IS_2322(isp) || IS_24XX(isp)) { @@ -739,8 +745,8 @@ } mbs.obits |= 2; } + isp_mboxcmd(isp, &mbs, MBLOGNONE); - isp_mboxcmd(isp, &mbs, MBLOGNONE); /* * Give it a chance to start. */ @@ -758,6 +764,7 @@ } } + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_ABOUT_FIRMWARE; isp_mboxcmd(isp, &mbs, MBLOGALL); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { @@ -785,6 +792,7 @@ isp->isp_fwrev[1] = mbs.param[2]; isp->isp_fwrev[2] = mbs.param[3]; } + isp_prt(isp, ISP_LOGCONFIG, "Board Type %s, Chip Revision 0x%x, %s F/W Revision %d.%d.%d", btype, isp->isp_revision, dodnld? "loaded" : "resident", @@ -821,6 +829,7 @@ isp->isp_romfw_rev[2]); } + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_GET_FIRMWARE_STATUS; isp_mboxcmd(isp, &mbs, MBLOGALL); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { @@ -946,6 +955,7 @@ /* * Set ASYNC DATA SETUP time. This is very important. */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_ASYNC_DATA_SETUP_TIME; mbs.param[1] = sdp_chan0->isp_async_data_setup; mbs.param[2] = sdp_chan1->isp_async_data_setup; @@ -957,6 +967,7 @@ /* * Set ACTIVE Negation State. */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_ACT_NEG_STATE; mbs.param[1] = (sdp_chan0->isp_req_ack_active_neg << 4) | @@ -965,6 +976,7 @@ (sdp_chan1->isp_req_ack_active_neg << 4) | (sdp_chan1->isp_data_line_active_neg << 5); + MEMZERO(&mbs, sizeof (mbs)); isp_mboxcmd(isp, &mbs, MBLOGNONE); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { isp_prt(isp, ISP_LOGERR, @@ -981,6 +993,7 @@ /* * Set the Tag Aging limit */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_TAG_AGE_LIMIT; mbs.param[1] = sdp_chan0->isp_tag_aging; mbs.param[2] = sdp_chan1->isp_tag_aging; @@ -994,6 +1007,7 @@ /* * Set selection timeout. */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_SELECT_TIMEOUT; mbs.param[1] = sdp_chan0->isp_selection_timeout; mbs.param[2] = sdp_chan1->isp_selection_timeout; @@ -1012,6 +1026,7 @@ */ if (IS_ULTRA2(isp) || IS_1240(isp)) { + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_INIT_RES_QUEUE_A64; mbs.param[1] = RESULT_QUEUE_LEN(isp); mbs.param[2] = DMA_WD1(isp->isp_result_dma); @@ -1025,6 +1040,7 @@ } isp->isp_residx = mbs.param[5]; + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_INIT_REQ_QUEUE_A64; mbs.param[1] = RQUEST_QUEUE_LEN(isp); mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); @@ -1038,6 +1054,7 @@ } isp->isp_reqidx = isp->isp_reqodx = mbs.param[4]; } else { + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_INIT_RES_QUEUE; mbs.param[1] = RESULT_QUEUE_LEN(isp); mbs.param[2] = DMA_WD1(isp->isp_result_dma); @@ -1049,6 +1066,7 @@ } isp->isp_residx = mbs.param[5]; + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_INIT_REQ_QUEUE; mbs.param[1] = RQUEST_QUEUE_LEN(isp); mbs.param[2] = DMA_WD1(isp->isp_rquest_dma); @@ -1070,6 +1088,7 @@ * to assume not for them. */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_FW_FEATURES; mbs.param[1] = 0; if (IS_ULTRA2(isp)) @@ -1153,6 +1172,7 @@ */ sdp->isp_devparam[tgt].goal_flags = sdf = DPARM_DEFAULT; #endif + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_TARGET_PARAMS; mbs.param[1] = (channel << 15) | (tgt << 8); mbs.param[2] = sdf; @@ -1170,6 +1190,7 @@ isp_mboxcmd(isp, &mbs, MBLOGNONE); if (mbs.param[0] != MBOX_COMMAND_COMPLETE) { sdf = DPARM_SAFE_DFLT; + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_TARGET_PARAMS; mbs.param[1] = (tgt << 8) | (channel << 15); mbs.param[2] = sdf; @@ -1193,6 +1214,7 @@ */ sdp->isp_devparam[tgt].actv_flags = sdf & ~DPARM_TQING; for (lun = 0; lun < (int) isp->isp_maxluns; lun++) { + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_DEV_QUEUE_PARAMS; mbs.param[1] = (channel << 15) | (tgt << 8) | lun; mbs.param[2] = sdp->isp_max_queue_depth; @@ -1395,7 +1417,6 @@ } } - MEMZERO(&mbs, sizeof (mbs)); /* * For 22XX > 2.1.26 && 23XX, set some options. @@ -1407,6 +1428,7 @@ * Turn on generate AE 8013 on all LIP Resets (2) * Disable LIP F7 switching (8) */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_SET_FIRMWARE_OPTIONS; mbs.param[1] = 0xb; mbs.param[2] = 0; @@ -1466,14 +1488,15 @@ /* * Init the firmware */ + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_INIT_FIRMWARE; - mbs.param[1] = 0; mbs.param[2] = DMA_WD1(fcp->isp_scdma); mbs.param[3] = DMA_WD0(fcp->isp_scdma); - mbs.param[4] = 0; - mbs.param[5] = 0; mbs.param[6] = DMA_WD3(fcp->isp_scdma); mbs.param[7] = DMA_WD2(fcp->isp_scdma); + isp_prt(isp, ISP_LOGDEBUG0, "INIT F/W from %p (%08x%08x)", + fcp->isp_scratch, (uint32_t) ((uint64_t)fcp->isp_scdma >> 32), + (uint32_t) fcp->isp_scdma); MEMORYBARRIER(isp, SYNC_SFORDEV, 0, sizeof (*icbp)); isp_mboxcmd(isp, &mbs, MBLOGALL); FC_SCRATCH_RELEASE(isp); @@ -1505,16 +1528,8 @@ MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_GET_FC_AL_POSITION_MAP; - mbs.param[1] = 0; mbs.param[2] = DMA_WD1(fcp->isp_scdma); mbs.param[3] = DMA_WD0(fcp->isp_scdma); - /* - * Unneeded. For the 2100, except for initializing f/w, registers - * 4/5 have to not be written to. - * mbs.param[4] = 0; - * mbs.param[5] = 0; - * - */ mbs.param[6] = DMA_WD3(fcp->isp_scdma); mbs.param[7] = DMA_WD2(fcp->isp_scdma); FC_SCRATCH_ACQUIRE(isp); @@ -1556,13 +1571,6 @@ } mbs.param[2] = DMA_WD1(fcp->isp_scdma); mbs.param[3] = DMA_WD0(fcp->isp_scdma); - /* - * Unneeded. For the 2100, except for initializing f/w, registers - * 4/5 have to not be written to. - * mbs.param[4] = 0; - * mbs.param[5] = 0; - * - */ mbs.param[6] = DMA_WD3(fcp->isp_scdma); mbs.param[7] = DMA_WD2(fcp->isp_scdma); FC_SCRATCH_ACQUIRE(isp); @@ -1821,6 +1829,7 @@ fcp->isp_gbspeed = 1; if (IS_23XX(isp)) { + MEMZERO(&mbs, sizeof (mbs)); mbs.param[0] = MBOX_GET_SET_DATA_RATE; mbs.param[1] = MBGSD_GET_RATE; /* mbs.param[2] undefined if we're just getting rate */ @@ -2056,8 +2065,6 @@ } else { mbs.param[1] = lp->loopid << 8; } - mbs.param[2] = 0; - mbs.param[3] = 0; isp_mboxcmd(isp, &mbs, MBLOGNONE); isp_prt(isp, ISP_LOGINFO, plogout, (int) (lp - fcp->portdb), lp->loopid, @@ -2505,6 +2512,7 @@ static int isp_fabric_mbox_cmd(ispsoftc_t *isp, mbreg_t *mbp) { + /* the caller sets up the mailbox */ isp_mboxcmd(isp, mbp, MBLOGNONE); if (mbp->param[0] != MBOX_COMMAND_COMPLETE) { if (FCPARAM(isp)->isp_loopstate == LOOP_SCANNING_FABRIC) { @@ -3466,7 +3474,6 @@ * Issue a bus reset. */ mbs.param[0] = MBOX_BUS_RESET; - mbs.param[2] = 0; if (IS_SCSI(isp)) { mbs.param[1] = ((sdparam *) isp->isp_param)->isp_bus_reset_delay; @@ -3532,8 +3539,6 @@ } else { mbs.param[1] = tgt << 8; } - mbs.param[4] = 0; - mbs.param[5] = 0; mbs.param[6] = XS_LUN(xs); } else { mbs.param[1] = tgt << 8 | XS_LUN(xs); @@ -3542,7 +3547,6 @@ mbs.param[1] = (bus << 15) | (XS_TGT(xs) << 8) | XS_LUN(xs); } - mbs.param[3] = 0; mbs.param[2] = handle; isp_mboxcmd(isp, &mbs, MBLOGALL & ~MBOX_COMMAND_ERROR); if (mbs.param[0] == MBOX_COMMAND_COMPLETE) { @@ -5316,7 +5320,7 @@ ISPOPMAP(0x07, 0x03), /* 0x5d: MBOX_GET_SET_DATA_RATE */ ISPOPMAP(0x00, 0x00), /* 0x5e: */ ISPOPMAP(0x00, 0x00), /* 0x5f: */ - ISPOPMAP(0xfd, 0x31), /* 0x60: MBOX_INIT_FIRMWARE */ + ISPOPMAP(0xcd, 0x31), /* 0x60: MBOX_INIT_FIRMWARE */ ISPOPMAP(0x00, 0x00), /* 0x61: */ ISPOPMAP(0x01, 0x01), /* 0x62: MBOX_INIT_LIP */ ISPOPMAP(0xcd, 0x03), /* 0x63: MBOX_GET_FC_AL_POSITION_MAP */ @@ -5572,6 +5576,8 @@ for (box = 0; box < MAX_MAILBOX(isp); box++) { if (ibits & (1 << box)) { + isp_prt(isp, ISP_LOGDEBUG1, "IN mbox %d = 0x%x", box, + mbp->param[box]); ISP_WRITE(isp, MBOX_OFF(box), mbp->param[box]); } isp->isp_mboxtmp[box] = mbp->param[box] = 0; @@ -5610,6 +5616,8 @@ for (box = 0; box < MAX_MAILBOX(isp); box++) { if (obits & (1 << box)) { mbp->param[box] = isp->isp_mboxtmp[box]; + isp_prt(isp, ISP_LOGDEBUG1, "OUT mbox %d = 0x%x", box, + mbp->param[box]); } } @@ -5734,7 +5742,6 @@ } sdp = isp->isp_param; sdp += bus; - MEMZERO(&mbs, sizeof (mbs)); for (tgt = 0; tgt < MAX_TARGETS; tgt++) { uint16_t flags, period, offset; @@ -5754,6 +5761,8 @@ * current device state, get the current parameters. */ + MEMZERO(&mbs, sizeof (mbs)); + /* * Refresh overrides set */ @@ -5780,9 +5789,7 @@ mbs.param[2] |= DPARM_PARITY; } - if ((mbs.param[2] & DPARM_SYNC) == 0) { - mbs.param[3] = 0; - } else { + if (mbs.param[2] & DPARM_SYNC) { mbs.param[3] = (sdp->isp_devparam[tgt].goal_offset << 8) | (sdp->isp_devparam[tgt].goal_period); @@ -5847,10 +5854,8 @@ isp_setdfltparm(ispsoftc_t *isp, int channel) { int tgt; - mbreg_t mbs; sdparam *sdp; - MEMZERO(&mbs, sizeof (mbs)); if (IS_FC(isp)) { fcparam *fcp = (fcparam *) isp->isp_param; >>> TRUNCATED FOR MAIL (1000 lines) <<<