Date: Fri, 9 Mar 2007 10:57:45 GMT From: Paolo Pisati <piso@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 115591 for review Message-ID: <200703091057.l29Avj42008991@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=115591 Change 115591 by piso@piso_newluxor on 2007/03/09 10:56:46 IFC@115590 Affected files ... .. //depot/projects/soc2006/intr_filter/amd64/amd64/trap.c#8 integrate .. //depot/projects/soc2006/intr_filter/dev/ata/ata-all.h#4 integrate .. //depot/projects/soc2006/intr_filter/dev/ata/ata-chipset.c#13 integrate .. //depot/projects/soc2006/intr_filter/dev/bge/if_bge.c#14 integrate .. //depot/projects/soc2006/intr_filter/dev/bge/if_bgereg.h#12 integrate .. //depot/projects/soc2006/intr_filter/dev/mxge/eth_z8e.dat.gz.uu#3 integrate .. //depot/projects/soc2006/intr_filter/dev/mxge/ethp_z8e.dat.gz.uu#3 integrate .. //depot/projects/soc2006/intr_filter/dev/sound/pci/maestro3.c#3 integrate .. //depot/projects/soc2006/intr_filter/i386/i386/trap.c#7 integrate .. //depot/projects/soc2006/intr_filter/ia64/ia64/trap.c#6 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_jail.c#8 integrate .. //depot/projects/soc2006/intr_filter/kern/kern_thread.c#7 integrate .. //depot/projects/soc2006/intr_filter/netgraph/ng_eiface.c#3 integrate .. //depot/projects/soc2006/intr_filter/netinet/udp_usrreq.c#8 integrate .. //depot/projects/soc2006/intr_filter/nfsclient/nfs_socket.c#9 integrate .. //depot/projects/soc2006/intr_filter/nfsclient/nfs_subs.c#3 integrate .. //depot/projects/soc2006/intr_filter/nfsclient/nfs_vnops.c#7 integrate .. //depot/projects/soc2006/intr_filter/nfsclient/nfsnode.h#3 integrate .. //depot/projects/soc2006/intr_filter/powerpc/powerpc/trap.c#5 integrate .. //depot/projects/soc2006/intr_filter/sparc64/sparc64/trap.c#4 integrate .. //depot/projects/soc2006/intr_filter/sun4v/sun4v/hcall.S#4 integrate .. //depot/projects/soc2006/intr_filter/sys/proc.h#9 integrate Differences ... ==== //depot/projects/soc2006/intr_filter/amd64/amd64/trap.c#8 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.313 2006/12/17 06:48:39 kmacy Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.314 2007/03/09 04:02:36 mohans Exp $"); /* * AMD64 Trap and System call handling @@ -813,6 +813,8 @@ CTR4(KTR_SYSC, "syscall enter thread %p pid %d proc %s code %d", td, td->td_proc->p_pid, td->td_proc->p_comm, code); + td->td_syscalls++; + if (error == 0) { td->td_retval[0] = 0; td->td_retval[1] = frame->tf_rdx; ==== //depot/projects/soc2006/intr_filter/dev/ata/ata-all.h#4 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.120 2007/02/21 19:07:18 sos Exp $ + * $FreeBSD: src/sys/dev/ata/ata-all.h,v 1.121 2007/03/08 16:39:25 sos Exp $ */ /* ATA register defines */ @@ -491,6 +491,7 @@ #define ATA_ATA_SLAVE 0x02 #define ATA_ATAPI_MASTER 0x04 #define ATA_ATAPI_SLAVE 0x08 +#define ATA_PORTMULTIPLIER 0x10 struct mtx state_mtx; /* state lock */ int state; /* ATA channel state */ ==== //depot/projects/soc2006/intr_filter/dev/ata/ata-chipset.c#13 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.186 2007/03/01 21:18:27 sos Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/ata/ata-chipset.c,v 1.188 2007/03/08 20:21:42 sos Exp $"); #include "opt_ata.h" #include <sys/param.h> @@ -55,10 +55,11 @@ static int ata_generic_chipinit(device_t dev); static void ata_generic_intr(void *data); static void ata_generic_setmode(device_t dev, int mode); -static void ata_sata_phy_reset(device_t dev); +static int ata_sata_phy_reset(device_t dev); static void ata_sata_phy_event(void *context, int dummy); static int ata_sata_connect(struct ata_channel *ch); static void ata_sata_setmode(device_t dev, int mode); +static int ata_request2fis_h2d(struct ata_request *request, u_int8_t *fis); static int ata_ahci_chipinit(device_t dev); static int ata_ahci_allocate(device_t dev); static int ata_ahci_status(device_t dev); @@ -97,6 +98,7 @@ static int ata_intel_31244_allocate(device_t dev); static int ata_intel_31244_status(device_t dev); static int ata_intel_31244_command(struct ata_request *request); +static void ata_intel_31244_reset(device_t dev); static int ata_ite_chipinit(device_t dev); static void ata_ite_setmode(device_t dev, int mode); static int ata_jmicron_chipinit(device_t dev); @@ -122,6 +124,7 @@ static int ata_nvidia_chipinit(device_t dev); static int ata_nvidia_allocate(device_t dev); static int ata_nvidia_status(device_t dev); +static void ata_nvidia_reset(device_t dev); static int ata_promise_chipinit(device_t dev); static int ata_promise_allocate(device_t dev); static int ata_promise_status(device_t dev); @@ -157,6 +160,7 @@ static void ata_sii_setmode(device_t dev, int mode); static int ata_sis_chipinit(device_t dev); static int ata_sis_allocate(device_t dev); +static void ata_sis_reset(device_t dev); static void ata_sis_setmode(device_t dev, int mode); static int ata_via_chipinit(device_t dev); static int ata_via_allocate(device_t dev); @@ -227,39 +231,6 @@ * SATA support functions */ static void -ata_sata_phy_reset(device_t dev) -{ - struct ata_channel *ch = device_get_softc(dev); - int loop, retry; - - if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE) { - ata_sata_connect(ch); - return; - } - - for (retry = 0; retry < 10; retry++) { - for (loop = 0; loop < 10; loop++) { - ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_RESET); - ata_udelay(100); - if ((ATA_IDX_INL(ch, ATA_SCONTROL) & - ATA_SC_DET_MASK) == ATA_SC_DET_RESET) - break; - } - ata_udelay(5000); - for (loop = 0; loop < 10; loop++) { - ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_IDLE | - ATA_SC_IPM_DIS_PARTIAL | - ATA_SC_IPM_DIS_SLUMBER); - ata_udelay(100); - if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == 0) { - ata_sata_connect(ch); - return; - } - } - } -} - -static void ata_sata_phy_event(void *context, int dummy) { struct ata_connect_task *tp = (struct ata_connect_task *)context; @@ -271,7 +242,7 @@ if (tp->action == ATA_C_ATTACH) { if (bootverbose) device_printf(tp->dev, "CONNECTED\n"); - ata_sata_connect(ch); + ATA_RESET(tp->dev); ata_identify(tp->dev); } if (tp->action == ATA_C_DETACH) { @@ -292,6 +263,36 @@ } static int +ata_sata_phy_reset(device_t dev) +{ + struct ata_channel *ch = device_get_softc(dev); + int loop, retry; + + if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == ATA_SC_DET_IDLE) + return ata_sata_connect(ch); + + for (retry = 0; retry < 10; retry++) { + for (loop = 0; loop < 10; loop++) { + ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_RESET); + ata_udelay(100); + if ((ATA_IDX_INL(ch, ATA_SCONTROL) & + ATA_SC_DET_MASK) == ATA_SC_DET_RESET) + break; + } + ata_udelay(5000); + for (loop = 0; loop < 10; loop++) { + ATA_IDX_OUTL(ch, ATA_SCONTROL, ATA_SC_DET_IDLE | + ATA_SC_IPM_DIS_PARTIAL | + ATA_SC_IPM_DIS_SLUMBER); + ata_udelay(100); + if ((ATA_IDX_INL(ch, ATA_SCONTROL) & ATA_SC_DET_MASK) == 0) + return ata_sata_connect(ch); + } + } + return 0; +} + +static int ata_sata_connect(struct ata_channel *ch) { u_int32_t status; @@ -310,37 +311,12 @@ device_printf(ch->dev, "SATA connect status=%08x\n", status); return 0; } + if (bootverbose) + device_printf(ch->dev, "SATA connect time=%dms\n", timeout * 10); /* clear SATA error register */ ATA_IDX_OUTL(ch, ATA_SERROR, ATA_IDX_INL(ch, ATA_SERROR)); - /* poll 31 seconds for device ready */ - /* XXX SOS 10 secs for now as I have little patience */ - for (timeout = 0; timeout < 1000; timeout++) { - if (ATA_IDX_INB(ch, ATA_STATUS) & ATA_S_BUSY) - DELAY(10000); - else - break; - } - if (bootverbose) - device_printf(ch->dev, "SATA connect ready time=%dms\n", timeout * 10); - - /* if we have legacy resources an old fashioned reset might be needed */ - if (ch->r_io[ATA_DATA].res) - ata_generic_reset(ch->dev); - - /* register device type from signature */ - ch->devices = 0; - if (timeout < 1000) { - if ((ATA_IDX_INB(ch, ATA_CYL_LSB) == ATAPI_MAGIC_LSB) && - (ATA_IDX_INB(ch, ATA_CYL_MSB) == ATAPI_MAGIC_MSB)) - ch->devices = ATA_ATAPI_MASTER; - else - ch->devices = ATA_ATA_MASTER; - } - if (bootverbose) - device_printf(ch->dev, "sata_connect devices=0x%b\n", - ch->devices, "\20\3ATAPI_MASTER\1ATA_MASTER"); return 1; } @@ -378,6 +354,49 @@ } } +static int +ata_request2fis_h2d(struct ata_request *request, u_int8_t *fis) +{ + struct ata_device *atadev = device_get_softc(request->dev); + + if (request->flags & ATA_R_ATAPI) { + fis[0] = 0x27; /* host to device */ + fis[1] = 0x80; /* command FIS (note PM goes here) */ + fis[2] = ATA_PACKET_CMD; + if (request->flags & ATA_R_DMA) + fis[3] = ATA_F_DMA; + else { + fis[5] = request->transfersize; + fis[6] = request->transfersize >> 8; + } + fis[7] = ATA_D_LBA | atadev->unit; + fis[15] = ATA_A_4BIT; + return 20; + } + else { + ata_modify_if_48bit(request); + fis[0] = 0x27; /* host to device */ + fis[1] = 0x80; /* command FIS (note PM goes here) */ + fis[2] = request->u.ata.command; + fis[3] = request->u.ata.feature; + fis[4] = request->u.ata.lba; + fis[5] = request->u.ata.lba >> 8; + fis[6] = request->u.ata.lba >> 16; + fis[7] = ATA_D_LBA | atadev->unit; + if (!(atadev->flags & ATA_D_48BIT_ACTIVE)) + fis[7] |= (request->u.ata.lba >> 24 & 0x0f); + fis[8] = request->u.ata.lba >> 24; + fis[9] = request->u.ata.lba >> 32; + fis[10] = request->u.ata.lba >> 40; + fis[11] = request->u.ata.feature >> 8; + fis[12] = request->u.ata.count; + fis[13] = request->u.ata.count >> 8; + fis[15] = ATA_A_4BIT; + return 20; + } + return 0; +} + /* * AHCI v1.x compliant SATA chipset support functions @@ -440,17 +459,6 @@ struct ata_channel *ch = device_get_softc(dev); int offset = ch->unit << 7; - /* setup legacy cruft we need */ - ch->r_io[ATA_DATA].res = NULL; - ch->r_io[ATA_CYL_LSB].res = ctlr->r_res2; - ch->r_io[ATA_CYL_LSB].offset = ATA_AHCI_P_SIG + 2 + offset; - ch->r_io[ATA_CYL_MSB].res = ctlr->r_res2; - ch->r_io[ATA_CYL_MSB].offset = ATA_AHCI_P_SIG + 3 + offset; - ch->r_io[ATA_STATUS].res = ctlr->r_res2; - ch->r_io[ATA_STATUS].offset = ATA_AHCI_P_TFD + offset; - ch->r_io[ATA_ALTSTAT].res = ctlr->r_res2; - ch->r_io[ATA_ALTSTAT].offset = ATA_AHCI_P_TFD + offset; - /* set the SATA resources */ ch->r_io[ATA_SSTATUS].res = ctlr->r_res2; ch->r_io[ATA_SSTATUS].offset = ATA_AHCI_P_SSTS + offset; @@ -495,62 +503,48 @@ { struct ata_pci_controller *ctlr = device_get_softc(device_get_parent(dev)); struct ata_channel *ch = device_get_softc(dev); - struct ata_connect_task *tp; - u_int32_t action, istatus, sstatus, error, issued; + u_int32_t action = ATA_INL(ctlr->r_res2, ATA_AHCI_IS); int offset = ch->unit << 7; int tag = 0; - action = ATA_INL(ctlr->r_res2, ATA_AHCI_IS); if (action & (1 << ch->unit)) { - istatus = ATA_INL(ctlr->r_res2, ATA_AHCI_P_IS + offset); - issued = ATA_INL(ctlr->r_res2, ATA_AHCI_P_CI + offset); - sstatus = ATA_INL(ctlr->r_res2, ATA_AHCI_P_SSTS + offset); - error = ATA_INL(ctlr->r_res2, ATA_AHCI_P_SERR + offset); + u_int32_t istatus = ATA_INL(ctlr->r_res2, ATA_AHCI_P_IS + offset); + u_int32_t status = ATA_IDX_INL(ch, ATA_SSTATUS); + u_int32_t error = ATA_IDX_INL(ch, ATA_SERROR); /* clear interrupt(s) */ - ATA_OUTL(ctlr->r_res2, ATA_AHCI_IS, action); + ATA_OUTL(ctlr->r_res2, ATA_AHCI_IS, action & (1 << ch->unit)); ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_IS + offset, istatus); - ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_SERR + offset, error); + ATA_IDX_OUTL(ch, ATA_SERROR, error); - /* do we have cold connect surprise */ - if (istatus & ATA_AHCI_P_IX_CPD) { - printf("ata_ahci_status status=%08x sstatus=%08x error=%08x\n", - istatus, sstatus, error); - } + if (error) { + struct ata_connect_task *tp; - /* check for and handle connect events */ - if ((istatus & ATA_AHCI_P_IX_PC) && - (tp = (struct ata_connect_task *) - malloc(sizeof(struct ata_connect_task), - M_ATA, M_NOWAIT | M_ZERO))) { + /* if we have a connection event deal with it */ + if ((error & ATA_SE_PHY_CHANGED) && + (tp = (struct ata_connect_task *) + malloc(sizeof(struct ata_connect_task), + M_ATA, M_NOWAIT | M_ZERO))) { - if (bootverbose) - device_printf(ch->dev, "CONNECT requested\n"); - tp->action = ATA_C_ATTACH; - tp->dev = ch->dev; - TASK_INIT(&tp->task, 0, ata_sata_phy_event, tp); - taskqueue_enqueue(taskqueue_thread, &tp->task); + if (((status & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN1) || + ((status & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN2)) { + if (bootverbose) + device_printf(ch->dev, "CONNECT requested\n"); + tp->action = ATA_C_ATTACH; + } + else { + if (bootverbose) + device_printf(ch->dev, "DISCONNECT requested\n"); + tp->action = ATA_C_DETACH; + } + tp->dev = ch->dev; + TASK_INIT(&tp->task, 0, ata_sata_phy_event, tp); + taskqueue_enqueue(taskqueue_thread, &tp->task); + } } - /* check for and handle disconnect events */ - else if ((istatus & ATA_AHCI_P_IX_PRC) && - !((sstatus & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN1 || - (sstatus & ATA_SS_CONWELL_MASK) == ATA_SS_CONWELL_GEN2) && - (tp = (struct ata_connect_task *) - malloc(sizeof(struct ata_connect_task), - M_ATA, M_NOWAIT | M_ZERO))) { - - if (bootverbose) - device_printf(ch->dev, "DISCONNECT requested\n"); - tp->action = ATA_C_DETACH; - tp->dev = ch->dev; - TASK_INIT(&tp->task, 0, ata_sata_phy_event, tp); - taskqueue_enqueue(taskqueue_thread, &tp->task); - } - /* do we have any device action ? */ - if (!(issued & (1 << tag))) - return 1; + return (!(ATA_INL(ctlr->r_res2, ATA_AHCI_P_CI + offset) & (1 << tag))); } return 0; } @@ -667,8 +661,9 @@ if (!(ATA_INL(ctlr->r_res2, ATA_AHCI_PI) & (1 << ch->unit))) { device_printf(dev, "port not implemented\n"); - ch->devices = 0; + return; } + ch->devices = 0; /* kill off all activity on this channel */ cmd = ATA_INL(ctlr->r_res2, ATA_AHCI_P_CMD + offset); @@ -704,12 +699,22 @@ ATA_OUTL(ctlr->r_res2, ATA_AHCI_P_CMD + offset, ATA_AHCI_P_CMD_SUD); /* enable interface */ - ata_sata_phy_reset(dev); - - /* no ATAPI yet */ - if (ch->devices & ATA_ATAPI_MASTER) { - device_printf(ch->dev, "AHCI SATA ATAPI devices not supported yet\n"); - ch->devices = 0; + if (ata_sata_phy_reset(dev)) { + switch (ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset)) { + case 0xeb140101: + ch->devices = ATA_ATAPI_MASTER; + device_printf(ch->dev, "SATA ATAPI devices not supported yet\n"); + ch->devices = 0; + break; + case 0x96690101: + ch->devices = ATA_PORTMULTIPLIER; + device_printf(ch->dev, "Portmultipliers not supported yet\n"); + ch->devices = 0; + break; + case 0x00000101: + ch->devices = ATA_ATA_MASTER; + break; + } } /* clear any interrupts pending on this channel */ @@ -754,47 +759,12 @@ static int ata_ahci_setup_fis(struct ata_ahci_cmd_tab *ctp, struct ata_request *request) { - struct ata_device *atadev = device_get_softc(request->dev); - bzero(ctp->cfis, 64); if (request->flags & ATA_R_ATAPI) { - ctp->cfis[0] = 0x27; /* host to device */ - ctp->cfis[1] = 0x80; /* command FIS (note PM goes here) */ - ctp->cfis[2] = ATA_PACKET_CMD; - if (request->flags & ATA_R_DMA) - ctp->cfis[3] = ATA_F_DMA; - else { - ctp->cfis[5] = request->transfersize; - ctp->cfis[6] = request->transfersize >> 8; - } - ctp->cfis[7] = ATA_D_LBA | atadev->unit; - ctp->cfis[15] = ATA_A_4BIT; bzero(ctp->acmd, 32); bcopy(request->u.atapi.ccb, ctp->acmd, 12); - return 20; } - else { - ata_modify_if_48bit(request); - ctp->cfis[0] = 0x27; /* host to device */ - ctp->cfis[1] = 0x80; /* command FIS (note PM goes here) */ - ctp->cfis[2] = request->u.ata.command; - ctp->cfis[3] = request->u.ata.feature; - ctp->cfis[4] = request->u.ata.lba; - ctp->cfis[5] = request->u.ata.lba >> 8; - ctp->cfis[6] = request->u.ata.lba >> 16; - ctp->cfis[7] = ATA_D_LBA | atadev->unit; - if (!(atadev->flags & ATA_D_48BIT_ACTIVE)) - ctp->cfis[7] |= (request->u.ata.lba >> 24 & 0x0f); - ctp->cfis[8] = request->u.ata.lba >> 24; - ctp->cfis[9] = request->u.ata.lba >> 32; - ctp->cfis[10] = request->u.ata.lba >> 40; - ctp->cfis[11] = request->u.ata.feature >> 8; - ctp->cfis[12] = request->u.ata.count; - ctp->cfis[13] = request->u.ata.count >> 8; - ctp->cfis[15] = ATA_A_4BIT; - return 20; - } - return 0; + return ata_request2fis_h2d(request, &ctp->cfis[0]); } @@ -1362,6 +1332,7 @@ } } + /* * Cyrix chipset support functions */ @@ -1751,7 +1722,7 @@ return ENXIO; ctlr->channels = 4; ctlr->allocate = ata_intel_31244_allocate; - ctlr->reset = ata_sata_phy_reset; + ctlr->reset = ata_intel_31244_reset; } ctlr->setmode = ata_sata_setmode; } @@ -2042,6 +2013,13 @@ return 0; } +static void +ata_intel_31244_reset(device_t dev) +{ + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); +} + /* * Integrated Technology Express Inc. (ITE) chipset support functions @@ -2694,9 +2672,6 @@ u_int32_t rsp_in, rsp_out; int slot; - /* unload SG list */ - ch->dma->unload(ch->dev); - /* stop timeout */ callout_stop(&request->callout); @@ -2720,6 +2695,10 @@ if (!(request->status & ATA_S_ERROR) && !(request->flags & ATA_R_TIMEOUT)) request->donecount = request->bytecount; + + /* unload SG list */ + ch->dma->unload(ch->dev); + res = ATA_OP_FINISHED; } @@ -2754,7 +2733,8 @@ ATA_OUTL(ctlr->r_res1, 0x0200c + ATA_MV_EDMA_BASE(ch), ~0x0); /* enable channel and test for devices */ - ata_sata_phy_reset(dev); + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); /* enable EDMA machinery */ ATA_OUTL(ctlr->r_res1, 0x02028 + ATA_MV_EDMA_BASE(ch), 0x00000001); @@ -2773,8 +2753,8 @@ for (i = 0; i < nsegs; i++) { prd[i].addrlo = htole32(segs[i].ds_addr); - prd[i].addrhi = 0; prd[i].count = htole32(segs[i].ds_len); + prd[i].addrhi = htole32((u_int64_t)segs[i].ds_addr >> 32); } prd[i - 1].count |= htole32(ATA_DMA_EOT); } @@ -2866,6 +2846,7 @@ } } + /* * NetCell chipset support functions */ @@ -2909,6 +2890,7 @@ return 0; } + /* * nVidia chipset support functions */ @@ -2971,7 +2953,7 @@ int offset = ctlr->chip->cfg2 & NV4 ? 0x0440 : 0x0010; ctlr->allocate = ata_nvidia_allocate; - ctlr->reset = ata_sata_phy_reset; + ctlr->reset = ata_nvidia_reset; /* enable control access */ pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1); @@ -3086,6 +3068,13 @@ return (status & (0x01 << shift)); } +static void +ata_nvidia_reset(device_t dev) +{ + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); +} + /* * Promise chipset support functions @@ -3755,7 +3744,8 @@ if ((ctlr->chip->cfg2 == PRSATA) || ((ctlr->chip->cfg2 == PRCMBO) && (ch->unit < 2))) { - ata_sata_phy_reset(dev); + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); /* reset and enable plug/unplug intr */ ATA_OUTL(ctlr->r_res2, 0x06c, (0x00000011 << ch->unit)); @@ -3790,7 +3780,8 @@ (ATA_INL(ctlr->r_res2, 0x414 + (ch->unit << 8)) & ~0x00000003) | 0x00000001); - ata_sata_phy_reset(dev); + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); /* reset and enable plug/unplug intr */ ATA_OUTL(ctlr->r_res2, 0x060, (0x00000011 << ch->unit)); @@ -4527,7 +4518,8 @@ ATA_OUTL(ctlr->r_res2, 0x48, ATA_INL(ctlr->r_res2, 0x48) & ~(0xc0 >> ch->unit)); - ata_sata_phy_reset(dev); + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); /* enable PHY state change interrupt */ ATA_OUTL(ctlr->r_res2, 0x148 + offset, (1 << 16)); @@ -4713,7 +4705,7 @@ if ((ctlr->r_res2 = bus_alloc_resource_any(dev, ctlr->r_type2, &ctlr->r_rid2, RF_ACTIVE))) { ctlr->allocate = ata_sis_allocate; - ctlr->reset = ata_sata_phy_reset; + ctlr->reset = ata_sis_reset; /* enable PCI interrupt */ pci_write_config(dev, PCIR_COMMAND, @@ -4753,6 +4745,13 @@ } static void +ata_sis_reset(device_t dev) +{ + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); +} + +static void ata_sis_setmode(device_t dev, int mode) { device_t gparent = GRANDPARENT(dev); @@ -5008,9 +5007,10 @@ struct ata_channel *ch = device_get_softc(dev); if ((ctlr->chip->cfg2 & VIABAR) && (ch->unit > 1)) - ata_generic_reset(dev); + ata_generic_reset(dev); else - ata_sata_phy_reset(dev); + if (ata_sata_phy_reset(dev)) + ata_generic_reset(dev); } static void ==== //depot/projects/soc2006/intr_filter/dev/bge/if_bge.c#14 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.183 2007/03/08 00:49:26 jkim Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bge/if_bge.c,v 1.184 2007/03/09 01:30:23 jkim Exp $"); /* * Broadcom BCM570x family gigabit ethernet driver for FreeBSD. @@ -256,6 +256,10 @@ { BGE_CHIPID_BCM5714_B3, "BCM5714 B3" }, { BGE_CHIPID_BCM5715_A0, "BCM5715 A0" }, { BGE_CHIPID_BCM5715_A1, "BCM5715 A1" }, + { BGE_CHIPID_BCM5715_A3, "BCM5715 A3" }, + { BGE_CHIPID_BCM5755_A0, "BCM5755 A0" }, + { BGE_CHIPID_BCM5755_A1, "BCM5755 A1" }, + { BGE_CHIPID_BCM5755_A2, "BCM5755 A2" }, /* 5754 and 5787 share the same ASIC ID */ { BGE_CHIPID_BCM5787_A0, "BCM5754/5787 A0" }, { BGE_CHIPID_BCM5787_A1, "BCM5754/5787 A1" }, ==== //depot/projects/soc2006/intr_filter/dev/bge/if_bgereg.h#12 (text+ko) ==== @@ -30,7 +30,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.70 2007/02/12 23:58:52 jkim Exp $ + * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.71 2007/03/09 01:30:23 jkim Exp $ */ /* @@ -273,6 +273,7 @@ #define BGE_CHIPID_BCM5714_B3 0x80030000 #define BGE_CHIPID_BCM5715_A0 0x90000000 #define BGE_CHIPID_BCM5715_A1 0x90010000 +#define BGE_CHIPID_BCM5715_A3 0x90030000 #define BGE_CHIPID_BCM5755_A0 0xa0000000 #define BGE_CHIPID_BCM5755_A1 0xa0010000 #define BGE_CHIPID_BCM5755_A2 0xa0020000 ==== //depot/projects/soc2006/intr_filter/dev/mxge/eth_z8e.dat.gz.uu#3 (text+ko) ==== @@ -29,866 +29,986 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -$FreeBSD: src/sys/dev/mxge/eth_z8e.dat.gz.uu,v 1.3 2006/09/15 19:24:45 gallatin Exp $ +$FreeBSD: src/sys/dev/mxge/eth_z8e.dat.gz.uu,v 1.4 2007/03/08 17:49:06 gallatin Exp $ ***************************************************************************/ begin 644 eth_z8e.dat.gz -M'XL("-3I"D4``V5T:%]Z.&4N9&%T`.Q:?6Q45W8_\V:,QQ.6F1@#8V-@,#;8 -MQH`#5H(JLW%WC4I4B"D?K5?0X%3.UDEI,DF\=&"-9WAX*QL1[!(KH0W@62V1 -MVHALJ,I*J43*9/%*J01^1*(J*Z7*K,M:LY%))GC`@_WFW?[.>_/LF?$SR6XB -M]1]&NGKOWGO.N>?KGG/N?4/T#7Z2^YM@/_P]_#W\/?P]_#W\/?S]/_WN2`[Z -M91_1N.ST1NF=^C=?%RJ&;5%R>OF9;G02XU(?.5_U"BU83`YQ3-JHR8*40))\ -M)10<)F<@(1&=.$3.H%\DE<`H#<5'*1@7,46]2YUWR:FHMZGS9?(.=OR6CBP$ -MO2(B^0V1-&EKDJ!@*>/>HJ'3MRAX.ALWN(2\U]`7,KG;3PEMT*>2ZI(V=KQ- -MCN!RDJZU1LBWDGDI:&!>NEX@Y\]^&)'$,=?>\DI:.?D>.*MY&N>#\AY=0F -M4A(JG7B!YEY)U)/2I1'34_;7XWD7,*/D>X5HA`IJ^T$G:M"TC<L%]1_ZB5A/ -MW+>2H\Q#GM<7BE$!'H[B.;!0Q%;T4Q'@/<#OB-HFDXS?B_%U_>2YV!EW]+XA -M1MT!LOD.49Y;)1MD>'8`8RN*=)P+4=IRD7'$HCU?:HOVQ+4W]]P1;^X92[VY -M)Q$\2,[4HCUWA_RZKCQ#?N@J1<[#M\GSS,NPD?H_=/AY\FH%SKBB_A<]TT%" -M*RC(LL&.S7^^B;;]\?<WT?:_V+%IVMZ0Q:'=T^CL&R(AQK>0KY-U\LAF]@O( -MEAB374[(Y1B77;NB-M6;EBNAA(FNH-D#Y#!P7)<,^5U3\L.'6A+!-CO3P7@_ -M\*,F_F"@@=QAL@WPNC_;8DO3J#=\\Y'&C/6_DU[_AKG^T?3ZF"MT>\WU']'Y -MO!)@7W^$8,^M#!LE5Q?3PEB1B7_BC0S^VZ?X[P*^"W#U)O^,FR@H;+#R@0FI -MZ$/(][V)8"5-RN3$>\.DJ"31+6U?C<JY.D0%BGJ1FE210INL(GI44<_32J+E -MBMH/F[7RW.7RD,V&9W!%2+(IZE9:00X\ZVG+3\2XHM8![CC]29[X=%^*/$_] -M1`05M1UCIZDII8FFU'VT<;0OQ+:\RWA^*K;^)"@4]09@KI+HD;:K\%&V@PH[ -M@+>6>S()X9+\BKJ?]J4DAFE1?XRY8])+.HQ+>E'O=TLAX93\:T*4SW)HT*VB -M8E^IOZ6F@W'!LBB!&S3O",>(JQC_@.8ER"T*F/8HTPV!UN$TK3#@XCS/M$PZ -M3"/Y72$87E&[&">L%DA]:!?0HN#I#NL7=.*3DZQ;.][MG@GL2UVW*<H7/7;8 -MFQK')UD&>ZTNPS'[N@E=%OM:0S;[&AY79<K#^W95Z'--P-NEXW7;MPNGO07V -MMS>E1(CU"WV'0'N[$F@D46!O40OL?N#*JLZ/O6_"H-L+&GO'F9[3W@<ZX93L -M@WY$<M]!DII4FZH$CNO[4PFT8YP*0?\RZ/7Q&J`?!JTSH-'*?&@R>4#S@F;P -M]]ZJ$`72_%W7G/;H.O+;,GU*MX'N2[=)Z[;',>9A'V+_>3HAU*$$S]?1TWZ5 -M)F0*[5.=-.1_FU).>T11$S24Z$?_79V_H40KX.)'4MWV"\"]##ZU9_P.^M,\ -M$1_R)YA>$&.I;6TB.OGW1-?:K@&';2`FW3;5[@Z$\JZ-7L38!S3WB%#9;Z^U -MM:(!]Z[JOC;Z`3WC]]/<6T'XJ?B"_5C,"]&VVYH8\E\%S*2`/JYSC-OV_)AX -M^NZXV'8[8DOUV"^D"NP1K<`>U7KL<7',T0)]%>@Z=SGV&?9U/(.Q4L,.#K_H -M=L"''"$EL!^V<^B^+GH<?8#O2\.'#3^9\SW`P=<<$=W/G',:1/><L!*XJ.]/ -M)?`![5/)IP2Z:-_!DA#O4T5]%S0!US,'MG,.)W[,?NF,JHBWJAY_+^I[P?!G -M9S0S=A@9V8&6YR2:@Y;O-./)N.R^&*4?;N&X@_=(E/[:DWZ_&J4=[7H\16SQ -M=]*"S\@32LE$>)^+]ZZFJLM"ZZZ/0:_CO.>%7,=[HF%\O,TIQBOG"I?KK)CT -M<LYPHS\/^;4<S\(S]Z@(S7M&UD(<(_%>*_[.ZSIQ@&K<"7(.R%JS^XB'D*^* -M^%W(N[H'[I&#\YA6@/4";B%>K:2!5Q#_9*H<D,6%U'BEQ'R:O#!OX',)^.S? -M?;"!?H7X;!5/QV7/E/RSS-\P=3++?,+4TRPYV\'[*'5`Q'M?(-:%-ZB*_X4> -M0YTI6M)T<)E01D5$"=RF`<QW=@A-]+BZQ@X(]0SRA5;@ZAZ7'VV.4EF]80O[ -M]=<P/N9T=8'6HTSK&O!3/:[C@`M%Z:6VV7@!;ER[)V*]!Z;X^$W304WPNQ)( -MT0#&>5W0^<A<;W:97*>,_%58*5"O19:J_%[%]L0^"(UA/W"MP'D6M5UR7"XL -MC9(WH.=ASH/J9MX;H5GH%TW37^!-T^P3SL*N3H/O9&="Q)AVI/,.W0(,ZHBX -MZ"X,<(Z-')C@L6+XAC#X6E`\)M$BY/]XY-`$C720G6L@\(3Z9\T-YFE,IG?& -MI-V[,388I;5Z'@;.`O1O3,&`!OJW,G!VCTG5[V`LF8TSWYF-,]]K]L'?J.\` -MRU7T:^"'T4+&NO/K<VALS:&Q=R:O\_TY.*$<G+Z9O,X_EX-S,0=GT.P;=1#5 -M8NQF#DXL!R>9T9\_+A=-R<^V1GX1H$/!P^R##K^1=^_2JQTB"1_P`WZC2=_T -M'1W>\)^8X3]%>Z=@4#X,^A($7<9@TU$EL9E0W[).P^Q3YIKN#L-ON(XUUXS" -M5S@F9_CG+5XKO4;$7`.T;['_Z+4[Z*?QTK8JBF7KHRB9K8\%SDP='H5O1FG^ -M5?9CRWWIM(>#]VEI4!/#\-4S\'L[/R&#O2D)>9WSKO*Y1^FXRS4!P\X'["W` -MO):&Y:<C_<SG)_+Y&?!\+L[YQEG88/8%^GCN%3WSKEK'LP6#9CS3D)-2]\1H -M[XNPQ5U:A%ILV34:IFL=_QT*_H[FH]X8Y[B!LT&Q$AJ&GD1H`+"(7Z>-.++0 -M\Z`X`MM$P*\T0@L/LPV&:6$;RX-FP]@/Q#VQ%S;@.(%]NK`?SXC>9&I)]R\` -M;HO`.8+',=8B9!O'L$M8^WB4*LBHIQ<V,ZU9>+C`YRF.(Z!UU]=I8S[^4X\Y -MH#4@&3E*`Z]G9:T-^:A-.^8)Z^_I.>9#P_J6]*=BT**?IN-86',Z(NGX&X.L -M!<.T*(R^)*1%C3_7XM*'[7K"QOEX4=BB[4?K0.M.]_MU&<9:<7Y9%-904W`? -M[^UBK%PRWP>^Y+/,HC!T$9[5'E.\>O\R@]<+&;PZA\F[-\UK/)M7[UZT2K0& -MM.WI?F8K&I>]/JQ?:MB$Q[`&Z^)+G-$GF_5ZDL=9GSRNH79`OP[S'O:57LWP -MA>S:QKJNX1SU.L<O/1YY3^7$--0IWO/F'FY?3MYVGX@]X,R=>!U[N!^QYDJI -MCAN;RF5\'I<-_[E%Q9M8)LXS'+>X7L$9/6Z<#8LS\Q_'K<3%0TD'X_.YW,#W -MJK/%"/`Q%_FM;>@TT9`/=?#I!N3<"6+>AJFX2_?A%R>(WY6./R(%,$9,++XT -MB/4Y)@[Z[^#L"AN_PKY>_+LK'7'FZV+4EO(:-BF.\?ICW84M9UD&EC>QD6$0 -M_[T14]X3"SF>%??E\KIY\YKG6S?Y:@,5`5?FW0YX]QIQL<27G</R$$M+ZK)C -M:4EC=BPMV96=PR3DL)*V')Q`#DYW!DY?>IW3.3CG<W`N9?0A<\E5TUYC^OU, -MR2<9?0F^$,=8W!Q#K-;O,MA'#'J+Y^;X'.`7^[)Y6%R;S</BAJF\"?JPWR]' -MJ%2O?_@>!_NOB?N@=0KPT,/BG/R_."?_+^[+Z'O0#V?(X+%[R0;_B6'\?7.< -MZR?P&POJ=V,-?`=7.$R+W^9:*TWS5J:>TG+EU#^E.?5/J3=#KH3["/V96]WQ -M`Z[%(%><:R+XB!/U@1?K>OCN;Z2=[$H@1@.%J#4+7$DA%2?P#KN4MD9M$X[< -M&+;]^T^MV=&TS;?_N1<W5;3ZGFU/NV&&#Y:.N0KUN@+G;1_HG#=]&N^0O\1A -MW!VY202;3T'WR$%+?F7$P<(NWL_(X[$51337N!<J'<W8$PG?H2?%,"WYF._5 -MN"[A6O1*(HZ8]AFQG)B[;N`M*<_`B_.^9'B>6Z>2@W%`HTBO4T'O"O8Y<)I- -M',#J..YV<JSM($?DT+!..^TC,9P-1I6.&'+Q33X_.2*=PTSGNCUIQ!!-+O6/ -M]12VG#F)^'B2G*F>PK:S)UFO2RZ9>HVFZ6G=A?"GTAOP:\O8:)E#)'+WRMI- -M14OPNJJ1'UT!(5]N1NZ\:5US+$7]MR1NU'^N`/Q\8H26?HSG))Z_,&E&.IGF -M4IPS;3N95LYX&_QJPJV&FBWFNH1LWV$Q?AJQ>R)*2Z\SCQGC%X4\;Q?#1WD] -MX%C7#J[`J\7D!9_W1VC9\Z@A8P;/RS[(7F>9PYKG9:7@^;XUS\LVZKJ3P+<T -M8VX7^+ZOZS5[?'_P'Y$K)=)Q=G9,VR,]?]Q]BK9;K'5.R/D[H[3L$]V/IL<O -M&3Q`%Q+K`G(`;S8[FCF7]3`N^Q#_EGYBG@%0Z\=95^FYRIRY9,9<8];<X:GQ -MO>;X5]@"^E]N8YQL&7W=UC;PA6L;^"Y9^XWOACA)5K2X%IADN[`=9NI_ -M^5Q3_U\A0PJPOYCVIS);#IU=UK(LWP]94M:R+.^VEF5Y&#RG9OK2\O<Q;@5_ -M7<B6]&.H$9$/RTJY7IP>+Z/IO02^@<.U9*1S/3$_(SZ2'J0/R/\%:'RH2;9S -MABY6O)R];EF+M2[*`M#%%]:Z*.NWUD79><C\Q4Q=E`V:ND">=XNW]HFU?N2K -M%'EPQG0:<*,,-^I.&O;UO4+.SZGL$]"QB;?VB'EQRF=X)?!%1$&$Y=HK>XT5 -ME=9[<T4#>#UI,=YL?+-8<3Q[SZ[P3^L;N@%.QO>V![8'VZ#\64/_Y9MS^(A: -MZW]%<G;]EQ=9Z[^\AO4?I?*6['A<WC@M$]8#CI#GS.?^UY7-;*!O&_@GG"-D -MV_(_!'^VUE=B?;_H6XH\*G$=7E$!W[F)/LZ[*Z]ILM21UNVGF/NIH=N5[V;K -MHZ+>6K<5NZ#;3ZUU6^&?/6]4'(?\G\[T[XIS!@X=91SC^^3*!0QC^'%%BN?9 -MYS-P;H)6\[2O5]Q(T\BDJ[KC5CZ]LDBGE^!OL]1\EM<\0/0YK7R>X7A\A3?3 -MIU<VFG`<8]*P]>*M-F*X'-II^?-W#J3A&2X'IM_8.RMO9N^=E>>S\QWT#SQ- -MMIW#>SEX^-K^\H"]!'NO>M>P]ZI_R.9K58VUO5<USF[O52W6>VE5@&T=I57G -ML_?2JK[IO83U]+U$C_X^>P&UPJQ[S]Q?7U<GV`_@J5*O=5";;V0=#>'$`_T$ -M,?[O?-XV=%7UHVSY*INM=57IAZZ"UKJJ/&ZMJTK4/Q2<N2\J+W'<!X_\3>+F -MYU3U'3W^C^T3\#N+^%\Y'?]+>$]4ZO64&$/\/T7YG`NF<T"M10ZHJK'.`56- -MUCF@:J_AQU5]V7Y<U3YM8^CIV\D!O2-4_13R<,BP1_7]'%YBUO:H1O%,O=;V -MJ"ZUMD=U'?3>.],>U5N_7AZN;L_.P]6M7S\/5U^PMD'U1]8VJ(X:-EA=E&V# -MZN2T#:IBW]0&&MO@``V,T.J/\83^UQS)YF-UF[7^5X>@_P%K_:\^/7NN6/V^ -M?@:4:4`SZMG"G1W1G'IV]2>FKL#3>R-4\[=IWI[+AJMQ&.O8=LY<I\8'_MZS -MYJ^FWMH_:G:E<\U[HB#71VI0_UC5YC7=:9QFG0?X3R^>D4-\WUFCYS_P(92D -MRO[0W([SB@7<U4PX_@[%L(.^%%G`)G-I6L.M\67#Y>_4OTM@GN&S95BSU?"U -M->%L7UO3.NUK-8X<G%!V3H.??#OQX/((K=UMQ(*U_Y*S9L+:%]?.A9R7K6V] -MMM+:UFM1_])E,>6##?DY\RW6^W5M8!9Z?88.UPYFZW#M/T_K$/Q_.SI21FC= -M84-'M<]F\['.:ZVC=;70D6*MHW5;9]^OZ[#_29D9,]>%@F?T.P%][^U4$4MD -M<YYCY3H^_PEW*6U73JG\S<W#</LZ].\![B[VTS+VTW4?&?E=D#LP!>LT87-H -M\AV?,.&,NXA03NRH]5K;K;;6VFZU6PR[U8:R[5;;DNW?T.OO8;MVGXA;VN_H -MGIO^3EKZ&3VV1*>/_KPC-OY?AB2._LU--]X'9)'LE<3U7EE<5]0[7*?,'Z;: -MVP9_(FGHHO86PX[+CY6:=URSK<?_KV':#[I;`9U6Z.!]\UX9_7;S&QO>0U%Z -MK/(!W^V=YK<,P)[/I'/4&(N8W\SP?O4K:)G\)++Y6>]`OALT:*SW/(@&V\GP -M+[;C^LJONAOA.X,1VE!L[*?U.?7'^C;C[LO(,<^HN?ZVOMN=L/*W]6'3WU"S -M,=U?Y\Q'#+_;X!TKR*RCU^OUKR@T]E44<#EXR6R_7-_VH'O$M&S_:LA6EW,N -MV-#X8-DVM%K+MJ$C6[:ZG+N3#7K^'YN10S=<-.LL7QG73W5Y>KTUL$^4^ZSJ -MK0VWINHM'7Z#<18<0+T5SJU[&^B*FEMSU96[3UOQ7U>?CG<G9\:[NO3]1]V% -M['A0Y\^VRX;3.7A]V7;9T/B'QGH^Y-CM=LENDVQV3$-,RK<[['EH<]+/?,DN -M.=#RTL\Y.?U\QD5SI)]Y.?TY7S&?GU[77-^1T\_[BODYWQ"?9O2SO\?^U4LO -MM>][Y3E^5%:T5N5^%YS+,4E(CSOYV\[KA69,>7R+^2V"[X!AGR?Y?X/PH468 -M:_VPX[!^OOR-$TO.DG\Y)H\5;*SE;W>B9U,?\$Y'Z?'2!]P?AU+'"J]CG_#_ -M5*1_.W13XN^RG7@_(8N/^!U\".;C/^[<E$;H\3AR+>+MX[$9?K'D=MAA%Y(0 -MPB:,'SG2+W8T2=AT3=G!??X<![GGS74N6UKJ??*[]1N#G1T!H:E)MYC6D^A^ -MXOKNJI"1>WJ>N&[%_VNR\/,W2,VUR1/\$4GO342E>0FRH1Z7^'^6P_3$X<L8 -M0[X*B.Y-'F,O//&!=FR39YJ^@YC^J\4DG2N)2<;9_/_8^_ZPN(MSW]EE@\N& -ML"NE<8VQKFV\=T\/*FU3H2TQ:%"C)@$UK:A1,":*,2:8("$$EF4A9$$"J"1% -MPZ]H[(F:*.?4]N2<:]N-$"\J8>FYZ7UH'[Q=4XP44=>P"0B[._?SSGR_[+)9 -M4E/[G-M[G_O'/-_O_'[GG7?>>6?FG7=2?T?MZX1_%CP7`"^,RL'X=99_P;2* -MOKGV4Y;Z1:<M>KXQ0T*O/(=/6XPUJD7T]<RY5#O$TM*0[CVDTR+=&C5=U/51 -M$1]NV,)8X"P?2JAPD2[L1;G;648[PAH^9:0C'$,Z0*17V?YI]+TZ7KOV7LSI -M+H*#G_WS<+LM>CJCQK6;G^5IQN+[M93&6`%_$5]L],,_";^,3XF(3PZ+;T5\ -M#N*9$M^*^-6(9V'QV1'Q*R+BET?$9T;$9T3$IZOQ8T5\S;CC!X?4>7HFWB_J -M'V(_Z!3MT[CF&8O+U#;,DVTL4]LP3[9Q1GQR6/SELHUE*@R7RS:6L;#X[(CX -M%1'QRR/B,R/B,R+BT]5XV<8?-L[>QA\V*6V$/)NAMH')-F:H;6"RC3/BD\/B -M3;*-&2H,)MG&#!86GQT1OR(B?GE$?&9$?$9$?+H:+]OXH\+9V_BCXDC>E+WL -MUILLCVZU/%DPXVP\'N6\Z6&_E'I?I/-5Q!AX8B?M76>A%-(-%3RP!F%QJ8UP -M_:3C==,_E'/DG9C63XVY;UC)IZ'[-K3'DEL,]H=\/.:QX7%'^B(/2Y7W,1QB -M_6R7O"A]?T+%][Z7X/O>]]J$+)J^PL/2#BGZ?O9VK9AO2:[NIS-PTD43>[LQ -M]PVX_:C'/DGZ9RZJMP_^+'!1TJE%G0-4#WBC7<HJZ1E"YM&R;-31"9E\4-9A -M1MIOWRE@K[R/]FLT;L@I?3X?Z;-U/N!CL9")=,'*QX;!(QN_K+P0-,RU)%28 -M6)LVF)/@T]C;',&<1E5O#'&DYPPY),?HU]C;P^(@KW@:M,$)S#TFFG.(=Y$. -MQKACR3H5+Z)=`G]#:->2G93OM$/'/.Q'A[Z9)'@SVJUALMU+[A'E@D;H3@3: -M<D5Y,?!(^)OP@S]RKYL!AX7C=MK#[4/8J@(>I#L_0<(AZO;&?#L/:R+-"%MB -M)=B5?HXG>IBFC=KX#J,&[24=[F*T21O6)FW04^]`F[1H$_J&X',7?TCS^GRA -M?RSF_NLSH[?O^O71V@>9F$GZN?X'%%^OP$EG!*-LB5_`4V$GVET&WMY(,*NP -M1NLON6ZC\I;JD2\/\)R8!9XSY\?W]>]0?H(%M*0W^B$\`$^`P1FMW@1-AZ9- -M&SV.TWBT2=ULC"6.\<B)'XP[EA:HXRZAPA)#\WT;VABM#*.FD=;MRS".HL:C -MSRV\\A^_"?QT)&C84F_,/QH2"OSBCA+@*C[%,GY!>D]2%VKIL(?=W$CU>N,, -M'5)?:BE&^FW.D/Y41KR'=<BQ%7/9\[PVH3/H,')+B9&CK'>"W*KEAH3.$/U+ -M77^55I!_172\9SQ^?KQGW$#QA/=S^6&&W`.LO.QYBTW`8248/"RC%S"O0)TN -MM5T>H$#H-\GP@6D^`?H1^N_:'S4;`TR3Y6>DHR1XQ+CC!J;*K=RQ)`Y]?9#J -M.WNMF8T!!WNTP8,$]]G*!0=W7<-T;R]8RPJ^RY(JKM.QC].8EMJB1=G1^/6Z -MS=LV77GE#)ZM$W`X;EC>+O1W;BA5ZZ8RX*\#?@[,OM^PX,95Y23?W7@5W6GD -MEX'_.2Z2^YH!1K*O,0O\%3SB#,ER2*?I:YY@?+*<DW[]27:#V.>XQF=GUVPA -M7:D;.KL*&?KDQD6BO'TY6M#.(N2[,D;S`8LQZS!7W6B!O"STS,YSQQ'R;D(_ -MZ3.?9)EVJ6MZXYJ9NJ8W8HUW8QUCR]8QEKD0SJ[4L1UU5*EU>!"NCFGPK801 -M=N-^8X6%]FWL2`?YYX9F2H<U*_"06<'I;@3H'?PQ"%[-Z2X5Z5WG%M<R_.O: -M;>K]B!N'U7$7(;,:AMB-HZ1_#)D5-+S,I.ZGH.R#]4$AGPZ3/C7\A^I1GNT, -MNXQD5;K/@#HZ;`7\3WT%PXSTJ(-Q"2=D?<M"]S\@"U.[>$U"?U@]Q>'U4!LP -MAQ]J.(NUS'9V&?IP..A,.$%W16A.<Q7Y17O%79"S)&?P('@USPW06L''Z+Y6 -M5H#'P)_1?E;J-9(>JP++D`H+\5JAPX8T=$>+\E)Z6D]XXQ+ZL_SC7-[A('A3 -M^PENDA="_9'Y'6/%E4I_9*;_]?V16:S"Y&'+2&=<%XVV$BJT3*YI,G_7#:HA -M.)[5!O.?=<#A2W-L:*[B$PKL)[I1)_CJQ&QZN;2.D3KG=$]@NA_L#;*_![$V -M&0`=Z^C."?5]_6E&9P>GLK8OY0BC^W-!NO>#--\0\R#2K,)\W.?[D/(/M'VJ -MMO.F/+6=8]_<U3%V-LBZ6KZ+L7\3VI]9)\*+.!NKU;`F,9?>U*B&`X;!!M2[ -MFV0GE$GRG>UQ]@W2%\P*+.5T+](VRH<@-WEI;J;T[:<%'0V0[$<ZC@2#N_@F -M99Z^:52%I0K^:+AIQ'IPW,%BQRLWE(P[;EX(?IXO]P5OMN+_A/*_6.7S0057 -M1$^TEIN'L9H;<+%6X![SGI%HB]9S$A<W;SS?W8*QN-0CL^ESTUQ"^PQ8ZX.O -M+5])NL[T?Y+=4H4O>-DM3TI^,J<"]9Q0^0G^/1YF$+K28[%IH-F;O9@OBN6\ -M$-M(.*(U.-:8=$^OD71;Y5VDY2_Q.$,S-VC3&B9!+^"/A6>86)_+?;];5G0U -M@R[H?E+12:2_Q8RY&KQC^4',K\U5)4R/,2CN>X\[;EEWM%3>$Z=[WJ0[ZV&W -M+!;SFM-P@&0;P'0"\]$!J9=*]T-N[J;V<+HO#-D5Z0Z1G!R,,ZARVR&,UUX: -ML_SL)QT8<[2>]B94>""S&)J(;A)\5W#PDGFY?A-3[](0?<B^N&5:_@\6(?]I -M%H^Q8T>[+R:XB,:)3Q!N7$6DYW[S[^C>,B_ZI+,>XUC(+;;P]B^W`BX3M4-I -MUT$%SH/CCN60?^=F*_3B5>$&GAJ]!"NM4P"WT6_D[F)_V)VVY2TA'B'+)=Q& -MHY%`$>_%_,7J1QC=*?7&#QGICEQ\GZ\7ZX$`:QL1\YMFE<]KQ/CLI[$=%JYM -M4,8OPA=F;2<XY)BF.-)MR-KN)1TX_W2>L9P8@A'IDZ;3CN7HZ'XSU1L6-B>K -M&'E1GQHV[KBU\/QW;-*'7;9[06.W+:*[FP']7-.UPTQC`\]Q%?T!X;?^RNT# -M/PIRR$.W=LX;A:PX2OM,<Y/$OHXAS>.>&&:]]C^P7K_;_N9IKT[N[^@@`]SZ -M6XHK'^;!W$`'\?'HLB7F`_"X/TI^>MLBF@MH'O@+\);R6L->SLTL6#O?"UBP -MT+2R:TMH_7';:M!,AE+N9TJYI><KEV2E7HPQV:;YG@#*#A@NL6!\E)=_P6)/ -ML=N/HQY/G[]?K%G;@BPY^)F9*7M9Y9^RVPY#9C5!;B)YOMSR,&,TW]D"+-9= -M2.,D?1AE'#TV07/[)QT!;M;^ZJR'T1R`M;J>9,Z$"K:4:XUB#S%80_N'2ZS> -MN/0)N7]F>"-L[RSF4W;[]VGOC.L-52VTIHE+<WGC4CMYW%S3N./V?`^[U4Y] -M7H<X@@5U_\X;ETAG$`S]K`D6!3H;/E=M#-S^B[[1<1=W)KKHCHU2AQ%U[.0U -MB9!Y;U?&F?COH'C_E!5SV>VFEDFR47';F]QQA6M,G^BZRVP'S=T^[-%<=T*1 -M1\3]V]GV8?D^L\&-0C#?)XVP5?=,0GZ9`N^9U#(3QD-\_0*6@K@%(VS%$BR1 -MDN!,WLORXU!N!LGPQT^3K+*B5<S)S[-%091':X>&!6P1K1L09LT-8`T1MG:H -M7,"29]:[8I$\*U@ES@RV>=DW"JZGNW8KS=P1PR'[:N5=F94:8[.DP02L&8GV -M:!VKK$\@ZQLYU@L=?,JJ%6%8YQ*?%G`H=YD#E=^F\VAQASGW0;FVH7O.'K9" -M[,74/<_BGWJ>F8X_3.U:F2+R:'6,X`TZ:<R!/@`WU2?NROL_<Y478JQN.(WQ -MMO()UY9#+&O(+_AO[AKF;4=Y[0N8"665N3<*.?Z;KBUO4-E/NS:-L-W`#WV' -MV*I,]\0`.XZQCG5]@,I!FG=$>_>9+;D!N\`AP3N]9E3:X3XMRAMTYV%N4]JD -MXEK2UZI+75L.,.H?2@^_WCV*M)_,[!=*@[@?H-Q4VA.A.+EF#:5I07N`J])] -MP)'+-D)M?HE@];"5!]R%?XB^;PL^`+JOZ!/K]E5[5OF#7-ZQS5H>%')GUG+B -M"X*W7$/W*K)N-6ID_U);D#<C6A^'K4UI;WNZC[D^?3A(>PP+@.\I,Y/TQQM1 -M[@^4^<JKS%?>L;BY"_D.,U/WV#%^S;GR+,%*_`KK\4Y)FUG+E;RC<@[/PEQM -M&(W:WACP(`=8-MI#<QSDB5@.WN4N3G6Y?9-,WAW)$F.&CX?@0YE>N;;..NAA -M_RCNO',]<(=U.=USI3TS6M_G3C`[R2.^N'0OCTOMEV,C:]`;M\0B\%@CVX)R -M(/^D"IGN0M:XLZ[[U':)MO@9]1=DCECU#LTIEOWTA:ZG/>S.?(G7=*]K`95Q -MY]?%F1#Z`[SADA&6/<1CJSO^NC*76/;071SE_MXI=D<`/-TB9&74!]H(XT%W -M-%$?77.(94@:O*.F3=ZU@BQ]1QIH7JX;IL]B-.(L)IR__E4P&J[K\+`[K"2S -M$[S;_"KON\.JKJ_$OM)VD]AC;A=[KW=,W_\7][,<O(?296W_3.P[8=W40WUB -ML<5\=)+=\;[83T5[J1YE;U4W[K@S7CUO\[!L<0](GO?<N4BE&;0M5NJ69._O -M2F:BO\>XV?"M%J+1.U>$XR3+'RR7O.:.Y7(M><?RORQ#W+E?E3\D3DW@(W?U -M"+PZ8[+)+H7-QC\XQ>YZT%^;V!C0DZT50QOF;F;9P.@.FC;7Q[1(-X]_9(U7 -MY1&NC[&332F$F;@C@[YZT*F)]E-)9P;^Q+[B(;(;DV=[@E&<&>M\+>UUEF'Z -M[2OL8?=#S@I\9$T(Q"4>@`SC!Q],PMK&#)DZ*5B3"%DVL4FV^S-E#2WA)O@E -M+U-M<MQU-`#8">X@P68`C,1O:#_O,VNB@.\SJYYL<^`;C_`DS/F-@(?T?C5\ -ML]44C$L\&/S,FH#O`92?B?@F^L+?&/7,[S66AGK>H+V93IM7N_,UEOQ5QS^M -MQ:D<M"EQA*U>KNS3.+]JN7\+V';O%;I0Y?5[(:>!]W>924\///.`CVUM1?]^ -MPN:Y_2NQ%D]A;5C[\#%KXK/HQU!?Q/`^'_)LM9H:]JHRV8]7EH(F+)O$_XI, -M"_<W:8/Y+8Y@/C>DDDR1K]I'$7-9,=,&QLR&W5M8,N@DQ>B5<[/DS3\N!7PF -MQ6:*2;&9D@):TBGQAP.03T6Y6]BBEM/@*9C7<C^4<S#)_"M'C3SPL96UCH1L -MJGBW6K5M#FZ>;=^C8;[8@XQW-XL]4#W\K.D9IB.=[>X.N2_:A9'?;:9Q_Q.L -M_U=WS[Y.27-=*^;,--=7[2\JB_K];U6>L%7FE+)U,!9ROW?<)??0[A;VW4+R -M]$\^H#@*(QMP&:*?[[:2C*VL57YCF0Z3:Q7:"VB7]X,3QAUW9WA8OFK#S2?O -MC=^]VJ-)FQ5OZOUTL3<O]@+OKE+Y*Y5!^[Q;M[.%=UU*>WJ,[HL/2QY_]R%U -MW\58D2'H@/83A"RK!;_?*^ZPCTI>?UKA]7>_$U;/Z#0?1QUT+YS*E_/@W1U4 -M!\GPDK_?W3';^@#P6PFW067=XA[]2.*VF,5<G<3,O]G@T244`+];F/$DRUE" -M\30&7=?0O=:<Y]S)(M\5?"HGOB\X2&%.R@=_XJ]')G0-)2R9[L@B7.@%>2]Y -M;/Q;B/]6$[...W(Z/9I4(0>)^FN79%R+N-<G/7-D/]VS$F597Q]1_3E_5O:3 -MP8?O64%Z!/1/Z_V@,_4(X4G*K/>LE/+G/2N[4&OK7GZB;3[O'W?<8_&PN_/$ -MWBG\@J9(_JHF6?\CUVZDHSV!W&*6(67%U'[,!:ZP]O\;QFK4O4W(WDSDJ4DE -M.5S':Y9VX`L9,JT'WWB$T]>$KPM?S`%+[$236"N1/*H?B[MN8C;=$J)_VCMP -M5_V$9!D-[6&,L/L.'<=Z@Z3,K7X^:?D&N^@DPKCVWOCR5J:=N5]_+WKIW@RX -M)KANQNY#\'THY;Y#<'GCCGLA_]R3+V6%^\0=G`:2K>/F]\NV+&'PZWG<DA2E -M+0/PFRSEF./B4BDNB<<M[<!:TDPP!./2>L)U9JA,:AO6SP.$)_[-71TJKB@= -M\NDH71!ER#D6Z5&&FGX:KPO([A'Z"^EV`QY5'P?P3QS-9TR%WX>\P"O&[GTF -M]=Z[VJY*M(?BVH3<=U_*M+T9^"E?PVFQ1T?[G_%4#_PF27OW'9;KA'OM<N]* -MPD;SQPSXXL+Z?0&5D7A$Z7>]TM8DV=;4SE/LWE&"_ZOR1]N5D&U:/+2WDAZL -M3?42WW4O]#%W2Y`=GQAFJX+<=8JM6<DG[>S"9-C[Q7F=N_2[PI;%I^S^[6ZO -M.&>A?W$>3/OVRER9WZ;,E\$2.K.4MEK<HU[B;=-QO/:Z88G/^[\CY!_`[/;? -MXB)X@\[KA@GV<M(=\(^[:"Q:BFA?[/YYH',>K+EN^*^!O]S//_7&73=,\E*# -M;8Y^60MWC1E2P8/O3SE:+.GFKRF7VMZFM-W#UHB]MVN;Q3H>_OOS9]V3`1W0 -M_(CYZ`L%%T?4^>BKS[W394_)LA](^EN6#3ZDZ[,1GW^@=<J0EG%A>,NS"/IP -MI@Y(_IP7-^FXWSOE7,+$_2\ML[L'_<ROG]_?.X%U=-&[;(@](/3?>GVT/EF2 -M0K@E&6V?Q+V@J3[?N\R]IH>Y_3T8ATM2P*=8$#RJ?(@'!`X@NUG6TIW35`O- -M78I]B^FUQ;B#98^/Y>LA-\9C_=\2V)%C*1OBP96C,5RL4<Y('3YWP3!#FH3` -M5FMBRQ:6M&^2)6'=8*+Y`[)>"M\*^?`T2U9E0Z&#<0+_D`,#->G#^Q39;U^8 -M[$>RB["GM]E*^\DS9+\P'JJ[4#ZAXMJO3V53SJ4=O:.,H;^PKLS5`>=-T?I7 -M/8LC.5C=#SJZ2,XA*"_[/#*$/K2WD_>+"U\KK]7+?9$\%V2M)+GF3'-U?S-` -MY=GE65K>H(>ME^M11[G8+^%%GW0TE0A;>(V2UA_\LSAG<1J:CA?3V=DGG6+O -MU\'L^,;3.5E?*2.[HAD-DPS".=.XOGF2M9]ANB'VH(7V$L7]R1'3&N">[)0( -MF0C^;`X<TIXN_E<#MAY\<ZC-O-PL[`9R?:++/7J+2Y1)]XI`7Y9ODLSPX!-M -MGY.M73XDST9<M$:($?M&6/?3^<BXX\$CH3L$#W:K<N&8/K5GS)GJ\NF7V'W. -MZR80YT$_),OY3.*,SH5CS'%W(\ZOGI,U"/M`>>>S941WE)CM"\Q#6$>^?M:C -M[9I@3-H"6_MH:`]\[56A\X.`L@Y>6R?GZ+5U8AU<F]KQ8M&$5IY)KK5[V"/9 -MJNR+-)E43G2;:\!=[7R/ZQJ25Q\R]V&\J_M/A!O:=W*5C(@X21MKI_N_RT(X -M6POY]\:4O]'>ET[9C\)Z?MT_DSR/_ROP_QS5C7\S_I]4_B_#__W*_P+\WZ3\ -M?PW_5RO_2?C_NO+_C1'V4$#YGX__#Y7_2_%_7-G#U9]BZWID.Q]"_^>MDWT\ -M'3;@83_I5O=B/.RA3LJ#</3SVJ2P\`Z9?AW&U`,KPL*;E'#(OVN;P\*=2GA: -MR-:H""]5PK/5<PXEO$`)Q_QV6TI8^#HA,PH;14;>54IV2-?5>5BV-2Q-CI+W -M@(=EK0X+7Z&$O^EA^\/;DG&A?"1:WRZ*9WG1PC7-T<-I/4TVI,3YM-"#>'@) -MW=<QMO*3%AOG)]G#BQ0>4T5GO_)\^>%Y%$;C3NCG"'M#Z\5>Z;7%=EI?>NOE -M&>PHR6`AFT3K_XW&(95#:SUWH;3'1',<A9&-.\(I^:?W^TLD3$'P+\4&7CZ- -M-4I/9X'A:3WL87%_`_R!CSL>7AC2RUE?J(0'$;XX+#QO=IE%F\WU6OO46>[S -MG^43]?\+<#\L;$1^(^#4-I*."]DS]1=Q+\:N#N%S5_F\;%7!.-^-N;?/=X;U -M%018^2C93S=RTNLL^X3%DXWAMH<I_GVV,M_+CN<'6!O*;EVKGAL_?")D>U5+ -M>X9DI_$#X$",*;K;A;7606,%`VT_@GGR.H]T2P_.U@XY)A_)D+PMALFQ_D@& -M?X'TIQ[)!']KAGP?]6RZ#&LK/_',3UU:R0_S4X):?06M(^D\@-<:NE_]=$)[ -MO&2([;B4F==,:)'FD7].*"3]]M0.K'.U/]\TH?WU)I?6+_AH?HI8/T#N(%G# -M/1`@'9YXKC<T\:U6?6!;?N+46/[<5JQ'('<D/7N6I:DV?EN+('.,FPV85Y*% -M?JO&Q+!63:+_H/:NP;8BIA/G(&2SE\Y5IJQ,F0^ES=YM5BWI(1`LT=I:A[52 -M0-%+LWW(YA<\S+0)9[AK9"/3VGQ\Q+9>R.]SCN?[F;OX#\RVA?HE?R>=*9'M -M,*0WC;#\/<8)IH73N#:0?)#_,LVK:/<HZ:"YMMQ(8<?*/Q1G+TZIVY;?07[0 -MTT?<D&!Y;7)BCI07\]7]Y$;TV4*4/>N^!M;#2:<VLAA\XT^Q#1^(L2/V^AZ] -M&F%7D!W?W`"MTV+Z3[)'=P9I+:*/Z>?.6/NW6ACDQ-C&/M]25^YVVAOX!#06 -M:^\Z3?J-&[P\+J:_H(1H9H-7V6]/&7<\6JK.?1XE'&45N`N7NJ0^ZX;?'2\D -M&3:F/P`:0-TZJAMIR+Z5IJ]XJ8OK8_,$39'M-?^'X!%#LKZ:V&S9_@W?H38@ -M'=T9O<+=(LZ,/*2+$#S;R%Q;!'Q7\[C8#CH;P[^87^0:/K93KDMC77(-'TM[ -M#Z:QN%B/Q,N&)RT;L)X&?!*W&[SE?X8?M$Y[";+^1S=V#3.FC*%+1N#/#62@ -M+Q_=2#:?4<8O4(8&7WGV-9U.E@6\K*#RE#HP!C?<JH17*6.Q7]J,G@XOI?+P -MC1\S7-Q!\:CK`.G)4=ET9@I_$M4=50=I6C_O,?.T7I@S84".V\<V0B8[R,_R -M-T@OD!?Q(_4EPL[J`M)KMQ7PD;Z"">#:,`BZ]&`-8+"1CC;HFO03>!S":PP> -M*D/1U??9MK/$H-,P!/ZW`/F'P1,_Z!,VZ#Q8CQB&I%V7C>`O!A_I']*9#N@H -M9H0]-BS*(7W!8OXG\('+R$:3>(-#Z`]M_#[AYR3;2/O)1FD;[[$S"LX@`VS, -MRPI@@),M>'S)3^\&(-]52(OU\V/#:MJP>'N$/R/";U'L"UK&'1MSU'U1#WOL -M`,$.VHUZ;Y?V0VG>)%V/4^SQ_;T+&=M-^R)Z0TM"!2M`O\:@;1^2C=F^X5&2 -M\XS<D<+<PWXY1V#-?W(1TOR9S4>Z$<M_$>4<N^^,@04?R9G+M8N'0;?ZPY.> -M.;178'N.D;VK^>B;(:[]/LU!HR].#L]Q^__`"D#/(^SQ([I2IFLXQ4QTSM/E >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200703091057.l29Avj42008991>