Index: stable/8/share/man/man4/Makefile =================================================================== --- stable/8/share/man/man4/Makefile (revision 226242) +++ stable/8/share/man/man4/Makefile (revision 226243) @@ -1,700 +1,701 @@ # @(#)Makefile 8.1 (Berkeley) 6/18/93 # $FreeBSD$ MAN= aac.4 \ acpi.4 \ ${_acpi_aiboost.4} \ ${_acpi_asus.4} \ ${_acpi_dock.4} \ ${_acpi_fujitsu.4} \ ${_acpi_hp.4} \ ${_acpi_ibm.4} \ ${_acpi_panasonic.4} \ ${_acpi_sony.4} \ acpi_thermal.4 \ ${_acpi_toshiba.4} \ acpi_video.4 \ ${_acpi_wmi.4} \ ada.4 \ adv.4 \ adw.4 \ ae.4 \ ${_aesni.4} \ age.4 \ agp.4 \ aha.4 \ ahb.4 \ ahc.4 \ ahci.4 \ ahd.4 \ ${_aibs.4} \ aio.4 \ alc.4 \ ale.4 \ alpm.4 \ altq.4 \ amd.4 \ amdpm.4 \ ${_amdsbwd.4} \ ${_amdsmb.4} \ ${_amdtemp.4} \ amr.4 \ an.4 \ arcmsr.4 \ ${_asmc.4} \ asr.4 \ ata.4 \ atapicam.4 \ ataraid.4 \ ath.4 \ ath_hal.4 \ atkbd.4 \ atkbdc.4 \ audit.4 \ auditpipe.4 \ aue.4 \ axe.4 \ bce.4 \ bfe.4 \ bge.4 \ bktr.4 \ blackhole.4 \ bpf.4 \ bridge.4 \ bt.4 \ bwi.4 \ bwn.4 \ cardbus.4 \ carp.4 \ cas.4 \ cc_chd.4 \ cc_cubic.4 \ cc_hd.4 \ cc_htcp.4 \ cc_newreno.4 \ cc_vegas.4 \ ccd.4 \ cd.4 \ cdce.4 \ ch.4 \ ciss.4 \ cm.4 \ cmx.4 \ coda.4 \ ${_coretemp.4} \ ${_cpuctl.4} \ cpufreq.4 \ crypto.4 \ cue.4 \ cxgb.4 \ cxgbe.4 \ cy.4 \ da.4 \ dc.4 \ dcons.4 \ dcons_crom.4 \ ddb.4 \ de.4 \ devctl.4 \ digi.4 \ disc.4 \ divert.4 \ ${_dpms.4} \ dpt.4 \ dummynet.4 \ ed.4 \ edsc.4 \ ef.4 \ ehci.4 \ em.4 \ en.4 \ enc.4 \ epair.4 \ esp.4 \ et.4 \ exca.4 \ faith.4 \ fatm.4 \ fd.4 \ fdc.4 \ firewire.4 \ fpa.4 \ fwe.4 \ fwip.4 \ fwohci.4 \ fxp.4 \ gbde.4 \ gdb.4 \ gem.4 \ geom.4 \ geom_fox.4 \ geom_linux_lvm.4 \ geom_uzip.4 \ gif.4 \ gpib.4 \ gre.4 \ h_ertt.4 \ harp.4 \ hatm.4 \ hfa.4 \ hifn.4 \ hme.4 \ ${_hptiop.4} \ ${_hptmv.4} \ ${_hptrr.4} \ hwpmc.4 \ ichsmb.4 \ ${_ichwd.4} \ icmp.4 \ icmp6.4 \ ida.4 \ idt.4 \ ifmib.4 \ igb.4 \ igmp.4 \ iic.4 \ iicbb.4 \ iicbus.4 \ iicsmb.4 \ iir.4 \ inet.4 \ inet6.4 \ intpm.4 \ intro.4 \ ${_io.4} \ ip.4 \ ip6.4 \ ipfirewall.4 \ ${_ipmi.4} \ ips.4 \ ipsec.4 \ ipw.4 \ ipwfw.4 \ iscsi_initiator.4 \ isp.4 \ ispfw.4 \ iwi.4 \ iwifw.4 \ iwn.4 \ iwnfw.4 \ ixgb.4 \ ixgbe.4 \ jme.4 \ joy.4 \ kbdmux.4 \ keyboard.4 \ kld.4 \ ksyms.4 \ ktr.4 \ kue.4 \ lagg.4 \ le.4 \ led.4 \ lge.4 \ ${_lindev.4} \ ${_linux.4} \ lmc.4 \ lo.4 \ lp.4 \ lpbb.4 \ lpt.4 \ mac.4 \ mac_biba.4 \ mac_bsdextended.4 \ mac_ifoff.4 \ mac_lomac.4 \ mac_mls.4 \ mac_none.4 \ mac_partition.4 \ mac_portacl.4 \ mac_seeotheruids.4 \ mac_stub.4 \ mac_test.4 \ malo.4 \ mcd.4 \ md.4 \ mem.4 \ meteor.4 \ mfi.4 \ miibus.4 \ mk48txx.4 \ mld.4 \ mlx.4 \ mly.4 \ mmc.4 \ mmcsd.4 \ mn.4 \ mod_cc.4 \ mouse.4 \ mps.4 \ mpt.4 \ msk.4 \ mtio.4 \ multicast.4 \ mvs.4 \ mwl.4 \ mwlfw.4 \ mxge.4 \ my.4 \ natm.4 \ natmip.4 \ ncr.4 \ ncv.4 \ ${_ndis.4} \ net80211.4 \ netgraph.4 \ netintro.4 \ ${_nfe.4} \ ${_nfsmb.4} \ ng_async.4 \ ng_atm.4 \ ngatmbase.4 \ ng_atmllc.4 \ ng_bluetooth.4 \ ng_bpf.4 \ ng_bridge.4 \ ng_bt3c.4 \ ng_btsocket.4 \ ng_car.4 \ ng_ccatm.4 \ ng_cisco.4 \ ng_deflate.4 \ ng_device.4 \ nge.4 \ ng_echo.4 \ ng_eiface.4 \ ng_etf.4 \ ng_ether.4 \ ng_ether_echo.4 \ ng_fec.4 \ ng_frame_relay.4 \ ng_gif.4 \ ng_gif_demux.4 \ ng_h4.4 \ ng_hci.4 \ ng_hole.4 \ ng_hub.4 \ ng_iface.4 \ ng_ipfw.4 \ ng_ip_input.4 \ ng_ksocket.4 \ ng_l2cap.4 \ ng_l2tp.4 \ ng_lmi.4 \ ng_mppc.4 \ ng_nat.4 \ ng_netflow.4 \ ng_one2many.4 \ ng_patch.4 \ ng_ppp.4 \ ng_pppoe.4 \ ng_pptpgre.4 \ ng_pred1.4 \ ng_rfc1490.4 \ ng_socket.4 \ ng_source.4 \ ng_split.4 \ ng_sppp.4 \ ng_sscfu.4 \ ng_sscop.4 \ ng_tag.4 \ ng_tcpmss.4 \ ng_tee.4 \ ng_tty.4 \ ng_ubt.4 \ ng_UI.4 \ ng_uni.4 \ ng_vjc.4 \ ng_vlan.4 \ nmdm.4 \ nsp.4 \ null.4 \ ${_nve.4} \ ${_nvram.4} \ ${_nxge.4} \ ohci.4 \ orm.4 \ ${_padlock.4} \ pass.4 \ patm.4 \ pccard.4 \ pccbb.4 \ pcf.4 \ pci.4 \ pcib.4 \ pcic.4 \ pcii.4 \ pcm.4 \ pcn.4 \ pim.4 \ polling.4 \ ppbus.4 \ ppc.4 \ ppi.4 \ psm.4 \ pst.4 \ pt.4 \ pts.4 \ pty.4 \ puc.4 \ ral.4 \ random.4 \ rc.4 \ re.4 \ rgephy.4 \ rl.4 \ rndtest.4 \ route.4 \ rp.4 \ rue.4 \ rum.4 \ run.4 \ runfw.4 \ sa.4 \ safe.4 \ sbp.4 \ sbp_targ.4 \ scc.4 \ scd.4 \ sched_4bsd.4 \ sched_ule.4 \ screen.4 \ scsi.4 \ sctp.4 \ sdhci.4 \ sem.4 \ ses.4 \ sf.4 \ sge.4 \ si.4 \ siftr.4 \ siis.4 \ sio.4 \ sis.4 \ sk.4 \ smb.4 \ smbus.4 \ smp.4 \ sn.4 \ snd_ad1816.4 \ snd_als4000.4 \ snd_atiixp.4 \ snd_cmi.4 \ snd_cs4281.4 \ snd_csa.4 \ snd_ds1.4 \ snd_emu10k1.4 \ snd_emu10kx.4 \ snd_envy24.4 \ snd_envy24ht.4 \ snd_es137x.4 \ snd_ess.4 \ snd_fm801.4 \ snd_gusc.4 \ snd_hda.4 \ snd_ich.4 \ snd_maestro3.4 \ snd_maestro.4 \ snd_mss.4 \ snd_neomagic.4 \ snd_sbc.4 \ snd_solo.4 \ snd_spicds.4 \ snd_t4dwave.4 \ snd_uaudio.4 \ snd_via8233.4 \ snd_via82c686.4 \ snd_vibes.4 \ snp.4 \ spic.4 \ ${_spkr.4} \ splash.4 \ sppp.4 \ ste.4 \ stf.4 \ stg.4 \ stge.4 \ sym.4 \ syncache.4 \ syncer.4 \ syscons.4 \ sysmouse.4 \ tap.4 \ targ.4 \ tcp.4 \ tdfx.4 \ termios.4 \ textdump.4 \ ti.4 \ tl.4 \ tnt4882.4 \ ${_tpm.4} \ trm.4 \ tty.4 \ tun.4 \ twa.4 \ twe.4 \ + tws.4 \ tx.4 \ txp.4 \ u3g.4 \ uark.4 \ uart.4 \ uath.4 \ ubsa.4 \ ubsec.4 \ ubser.4 \ ubtbcmfw.4 \ uchcom.4 \ ucom.4 \ ucycom.4 \ udav.4 \ udbp.4 \ udp.4 \ uep.4 \ ufm.4 \ ufoma.4 \ uftdi.4 \ ugen.4 \ uhci.4 \ uhid.4 \ uhso.4 \ uipaq.4 \ ukbd.4 \ ulpt.4 \ umass.4 \ umcs.4 \ umct.4 \ umodem.4 \ ums.4 \ unix.4 \ upgt.4 \ uplcom.4 \ ural.4 \ urio.4 \ ${_urtw.4} \ usb.4 \ usb_quirk.4 \ uslcom.4 \ utopia.4 \ uvisor.4 \ uvscom.4 \ vga.4 \ vge.4 \ viapm.4 \ vinum.4 \ vkbd.4 \ vlan.4 \ vpo.4 \ vr.4 \ vte.4 \ watchdog.4 \ wb.4 \ wi.4 \ witness.4 \ wlan.4 \ wlan_acl.4 \ wlan_amrr.4 \ wlan_ccmp.4 \ wlan_tkip.4 \ wlan_wep.4 \ wlan_xauth.4 \ ${_wpi.4} \ xe.4 \ ${_xen.4} \ xhci.4 \ xl.4 \ xpt.4 \ zero.4 \ zyd.4 MLINKS= ae.4 if_ae.4 MLINKS+=age.4 if_age.4 MLINKS+=agp.4 agpgart.4 MLINKS+=ale.4 if_ale.4 MLINKS+=altq.4 ALTQ.4 MLINKS+=an.4 if_an.4 MLINKS+=ata.4 acd.4 \ ata.4 ad.4 \ ata.4 afd.4 \ ata.4 ast.4 MLINKS+=aue.4 if_aue.4 MLINKS+=axe.4 if_axe.4 MLINKS+=bce.4 if_bce.4 MLINKS+=bfe.4 if_bfe.4 MLINKS+=bge.4 if_bge.4 MLINKS+=bktr.4 brooktree.4 MLINKS+=bridge.4 if_bridge.4 MLINKS+=bwi.4 if_bwi.4 MLINKS+=cas.4 if_cas.4 MLINKS+=crypto.4 cryptodev.4 MLINKS+=cue.4 if_cue.4 MLINKS+=dc.4 if_dc.4 MLINKS+=de.4 if_de.4 MLINKS+=disc.4 if_disc.4 MLINKS+=ed.4 if_ed.4 MLINKS+=edsc.4 if_edsc.4 MLINKS+=ef.4 if_ef.4 MLINKS+=em.4 if_em.4 MLINKS+=en.4 if_en.4 MLINKS+=enc.4 if_enc.4 MLINKS+=epair.4 if_epair.4 MLINKS+=et.4 if_et.4 MLINKS+=faith.4 if_faith.4 MLINKS+=fatm.4 if_fatm.4 MLINKS+=fd.4 stderr.4 \ fd.4 stdin.4 \ fd.4 stdout.4 MLINKS+=firewire.4 ieee1394.4 MLINKS+=fpa.4 fea.4 MLINKS+=fwe.4 if_fwe.4 MLINKS+=fwip.4 if_fwip.4 MLINKS+=fxp.4 if_fxp.4 MLINKS+=gem.4 if_gem.4 MLINKS+=geom.4 GEOM.4 MLINKS+=gif.4 if_gif.4 MLINKS+=gre.4 if_gre.4 MLINKS+=hatm.4 if_hatm.4 MLINKS+=hme.4 if_hme.4 MLINKS+=${_hptrr.4} ${_rr232x.4} MLINKS+=idt.4 if_idt.4 MLINKS+=igb.4 if_igb.4 MLINKS+=ip.4 rawip.4 MLINKS+=ipfirewall.4 ipaccounting.4 \ ipfirewall.4 ipacct.4 \ ipfirewall.4 ipfw.4 MLINKS+=ipw.4 if_ipw.4 MLINKS+=iwi.4 if_iwi.4 MLINKS+=iwn.4 if_iwn.4 MLINKS+=ixgb.4 if_ixgb.4 MLINKS+=ixgbe.4 if_ixgbe.4 MLINKS+=jme.4 if_jme.4 MLINKS+=kue.4 if_kue.4 MLINKS+=lagg.4 trunk.4 MLINKS+=le.4 if_le.4 MLINKS+=lge.4 if_lge.4 MLINKS+=lo.4 loop.4 MLINKS+=lp.4 plip.4 MLINKS+=malo.4 if_malo.4 MLINKS+=md.4 vn.4 MLINKS+=mem.4 kmem.4 MLINKS+=mn.4 if_mn.4 MLINKS+=mxge.4 if_mxge.4 MLINKS+=my.4 if_my.4 MLINKS+=${_ndis.4} ${_if_ndis.4} MLINKS+=netintro.4 net.4 \ netintro.4 networking.4 MLINKS+=${_nfe.4} ${_if_nfe.4} MLINKS+=nge.4 if_nge.4 MLINKS+=${_nve.4} ${_if_nve.4} MLINKS+=${_nxge.4} ${_if_nxge.4} MLINKS+=patm.4 if_patm.4 MLINKS+=pccbb.4 cbb.4 MLINKS+=pcm.4 snd.4 \ pcm.4 sound.4 MLINKS+=pcn.4 if_pcn.4 MLINKS+=ral.4 if_ral.4 MLINKS+=re.4 if_re.4 MLINKS+=rl.4 if_rl.4 MLINKS+=rue.4 if_rue.4 MLINKS+=rum.4 if_rum.4 MLINKS+=scsi.4 CAM.4 \ scsi.4 cam.4 \ scsi.4 scbus.4 \ scsi.4 SCSI.4 MLINKS+=sf.4 if_sf.4 MLINKS+=sis.4 if_sis.4 MLINKS+=sk.4 if_sk.4 MLINKS+=smp.4 SMP.4 MLINKS+=sn.4 if_sn.4 MLINKS+=snd_envy24.4 snd_ak452x.4 MLINKS+=snd_sbc.4 snd_sb16.4 \ snd_sbc.4 snd_sb8.4 MLINKS+=${_spkr.4} ${_speaker.4} MLINKS+=splash.4 screensaver.4 MLINKS+=ste.4 if_ste.4 MLINKS+=stf.4 if_stf.4 MLINKS+=stge.4 if_stge.4 MLINKS+=syncache.4 syncookies.4 MLINKS+=syscons.4 sc.4 MLINKS+=tap.4 if_tap.4 MLINKS+=tdfx.4 tdfx_linux.4 MLINKS+=ti.4 if_ti.4 MLINKS+=tl.4 if_tl.4 MLINKS+=tun.4 if_tun.4 MLINKS+=tx.4 if_tx.4 MLINKS+=txp.4 if_txp.4 MLINKS+=u3g.4 u3gstub.4 MLINKS+=uath.4 if_uath.4 MLINKS+=udav.4 if_udav.4 MLINKS+=upgt.4 if_upgt.4 MLINKS+=ural.4 if_ural.4 MLINKS+=${_urtw.4} ${_if_urtw.4} MLINKS+=vge.4 if_vge.4 MLINKS+=vlan.4 if_vlan.4 MLINKS+=vpo.4 imm.4 MLINKS+=vr.4 if_vr.4 MLINKS+=watchdog.4 SW_WATCHDOG.4 MLINKS+=wb.4 if_wb.4 MLINKS+=wi.4 if_wi.4 MLINKS+=${_wpi.4} ${_if_wpi.4} MLINKS+=xe.4 if_xe.4 MLINKS+=xl.4 if_xl.4 MLINKS+=zyd.4 if_zyd.4 .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386" _acpi_aiboost.4=acpi_aiboost.4 _acpi_asus.4= acpi_asus.4 _acpi_dock.4= acpi_dock.4 _acpi_fujitsu.4=acpi_fujitsu.4 _acpi_hp.4= acpi_hp.4 _acpi_ibm.4= acpi_ibm.4 _acpi_panasonic.4=acpi_panasonic.4 _acpi_sony.4= acpi_sony.4 _acpi_toshiba.4=acpi_toshiba.4 _acpi_wmi.4= acpi_wmi.4 _aesni.4= aesni.4 _aibs.4= aibs.4 _amdsbwd.4= amdsbwd.4 _amdsmb.4= amdsmb.4 _amdtemp.4= amdtemp.4 _asmc.4= asmc.4 _coretemp.4= coretemp.4 _cpuctl.4= cpuctl.4 _dpms.4= dpms.4 _hptiop.4= hptiop.4 _hptmv.4= hptmv.4 _hptrr.4= hptrr.4 _ichwd.4= ichwd.4 _if_ndis.4= if_ndis.4 _if_nfe.4= if_nfe.4 _if_nve.4= if_nve.4 _if_nxge.4= if_nxge.4 _if_urtw.4= if_urtw.4 _if_wpi.4= if_wpi.4 _ipmi.4= ipmi.4 _io.4= io.4 _lindev.4= lindev.4 _linux.4= linux.4 _ndis.4= ndis.4 _nfe.4= nfe.4 _nfsmb.4= nfsmb.4 _nve.4= nve.4 _nvram.4= nvram.4 _nxge.4= nxge.4 _padlock.4= padlock.4 _rr232x.4= rr232x.4 _speaker.4= speaker.4 _spkr.4= spkr.4 _tpm.4= tpm.4 _urtw.4= urtw.4 _wpi.4= wpi.4 _xen.4= xen.4 MLINKS+=lindev.4 full.4 .endif .if exists(${.CURDIR}/man4.${MACHINE_ARCH}) SUBDIR= man4.${MACHINE_ARCH} .endif .include Index: stable/8/share/man/man4/tws.4 =================================================================== --- stable/8/share/man/man4/tws.4 (nonexistent) +++ stable/8/share/man/man4/tws.4 (revision 226243) @@ -0,0 +1,118 @@ +.\" +.\"Copyright (c) 2010, 2011 iXsystems, Inc. +.\"All rights reserved. +.\" written by: Xin LI +.\" +.\"Redistribution and use in source and binary forms, with or without +.\"modification, are permitted provided that the following conditions +.\"are met: +.\"1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\"2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\"THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\"ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\"IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\"ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\"FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\"DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\"OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\"HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\"LIABILITY, OR TORT (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$ +.\" +.Dd October 4, 2011 +.Dt TWS 4 +.Os +.Sh NAME +.Nm tws +.Nd 3ware 9750 SATA+SAS 6Gb/s RAID controller card driver +.Sh SYNOPSIS +To compile this driver into the kernel, +place the following lines in your +kernel configuration file: +.Bd -ragged -offset indent +.Cd "device scbus" +.Cd "device tws" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +tws_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides support for LSI's 3ware 9750 SATA+SAS 6Gb/s RAID controller cards. +.Pp +These controllers feature the LSISAS2108 6Gb/s SAS RAID-on-Chip (ROC) +and are available in 4- and 8-port configurations, supports RAID levels +0, 1, 5, 6, 10, 50 and single disk, with 96 SATA and/or SAS hard drives and SSDs. +.Pp +For further hardware information, see +.Pa http://www.lsi.com/. +.Sh HARDWARE +The +.Nm +driver supports the following SATA/SAS RAID controller: +.Pp +.Bl -bullet -compact +.It +LSI's 3ware SAS 9750 series +.El +.Sh LOADER TUNABLES +Tunables can be set at the +.Xr loader 8 +prompt before booting the kernel or stored in +.Xr loader.conf 5 . +.Bl -tag -width "hw.tws.use_32bit_sgls" +.It Va hw.tws.cam_depth +The maximium queued CAM SIM requests for one controller. +The default value is 256. +.It Va hw.tws.enable_msi +This tunable enables MSI support on the controller if set to a non-zero value. +The default value is 0. +.It Va hw.tws.queue_depth +The maximium queued requests for one controller. +.It Va hw.tws.use_32bit_sgls +Limit the driver to use only 32-bit SG elements regardless whether the operating +system is running in 64-bit mode. +The default value is 0. +.El +.Sh FILES +.Bl -tag -width ".Pa /dev/tws?" -compact +.It Pa /dev/da? +array/logical disk interface +.It Pa /dev/tws? +management interface +.El +.Sh DIAGNOSTICS +Whenever the driver encounters a command failure, it prints out an error code in +the format: +.Qq Li "ERROR: (: ):" , +followed by a text description of the error. +There are other error messages and warnings that the +driver prints out, depending on the kinds of errors that it encounters. +If the driver is compiled with +.Dv TWS_DEBUG +defined, it prints out a whole bunch of debug +messages. +.Sh SEE ALSO +.Xr da 4 , +.Xr scsi 4 +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Manjunath Ranganathaiah +for LSI and this manual page was written by +.An Xin LI Aq delphij@FreeBSD.org +for iXsystems, Inc. Property changes on: stable/8/share/man/man4/tws.4 ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/share/man/man4 =================================================================== --- stable/8/share/man/man4 (revision 226242) +++ stable/8/share/man/man4 (revision 226243) Property changes on: stable/8/share/man/man4 ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/share/man/man4:r226026 Index: stable/8/sys/amd64/conf/GENERIC =================================================================== --- stable/8/sys/amd64/conf/GENERIC (revision 226242) +++ stable/8/sys/amd64/conf/GENERIC (revision 226243) @@ -1,325 +1,326 @@ # # GENERIC -- Generic kernel configuration file for FreeBSD/amd64 # # For more information on this file, please read the config(5) manual page, # and/or the handbook section on Kernel Configuration Files: # # http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html # # The handbook is also available locally in /usr/share/doc/handbook # if you've installed the doc distribution, otherwise always see the # FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the # latest information. # # An exhaustive list of options and more detailed explanations of the # device lines is also present in the ../../conf/NOTES and NOTES files. # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # # $FreeBSD$ cpu HAMMER ident GENERIC # To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices. # Use the following to compile in values accessible to the kernel # through getenv() (or kenv(1) in userland). The format of the file # is 'variable=value', see kenv(1) # # env "GENERIC.env" makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support options UFS_ACL # Support for access control lists options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options MD_ROOT # MD is a potential root device options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCLIENT options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_PART_GPT # GUID Partition Tables. options GEOM_LABEL # Provides labelization options COMPAT_43TTY # BSD 4.3 TTY compat (sgtty) options COMPAT_FREEBSD32 # Compatible with i386 binaries options COMPAT_FREEBSD4 # Compatible with FreeBSD4 options COMPAT_FREEBSD5 # Compatible with FreeBSD5 options COMPAT_FREEBSD6 # Compatible with FreeBSD6 options COMPAT_FREEBSD7 # Compatible with FreeBSD7 options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI options KTRACE # ktrace(1) support options STACK # stack(9) support options SYSVSHM # SYSV-style shared memory options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options P1003_1B_SEMAPHORES # POSIX-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework #options KDTRACE_FRAME # Ensure frames are compiled in #options KDTRACE_HOOKS # Kernel DTrace hooks options INCLUDE_CONFIG_FILE # Include this file in kernel options KDB # Kernel debugger related code options KDB_TRACE # Print a stack trace for a panic # Make an SMP-capable kernel by default options SMP # Symmetric MultiProcessor Kernel # CPU frequency control device cpufreq # Bus support. device acpi device pci # Floppy drives device fdc # ATA and ATAPI devices device ata device atadisk # ATA disk drives device ataraid # ATA RAID drives device atapicd # ATAPI CDROM drives device atapifd # ATAPI floppy drives device atapist # ATAPI tape drives options ATA_STATIC_ID # Static device numbering # SCSI Controllers device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. device amd # AMD 53C974 (Tekram DC-390(T)) device hptiop # Highpoint RocketRaid 3xxx series device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module device mpt # LSI-Logic MPT-Fusion device mps # LSI-Logic MPT-Fusion 2 #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters # SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE) # RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID #XXX it is not 64-bit clean, -scottl #device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family #XXX pointer/int warnings #device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID +device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller device atkbd # AT keyboard device psm # PS/2 mouse device kbdmux # keyboard multiplexer device vga # VGA video card driver device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc device agp # support several AGP chipsets # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus # Serial (COM) ports device uart # Generic UART driver # Parallel port device ppc device ppbus # Parallel port bus (required) device lpt # Printer device plip # TCP/IP over parallel device ppi # Parallel port interface device #device vpo # Requires scbus and da device puc # Multi I/O cards and multi-channel UARTs # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 Gigabit Ethernet Family device igb # Intel PRO/1000 PCIE Server Gigabit Family device ixgbe # Intel PRO/10GbE PCIE Ethernet Family device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') # PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support device ae # Attansic/Atheros L2 FastEthernet device age # Attansic/Atheros L1 Gigabit Ethernet device alc # Atheros AR8131/AR8132 Ethernet device ale # Atheros AR8121/AR8113/AR8114 Ethernet device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device et # Agere ET1310 10/100/Gigabit Ethernet device fxp # Intel EtherExpress PRO/100B (82557, 82558) device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet device lge # Level 1 LXT1001 gigabit Ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nfe # nVidia nForce MCP on-board Ethernet device nge # NatSemi DP83820 gigabit Ethernet #device nve # nVidia nForce MCP on-board Ethernet Networking device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (``Starfire'') device sge # Silicon Integrated Systems SiS190/191 device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 ``EPIC'') device vge # VIA VT612x gigabit Ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') # ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' requires 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # Wireless NIC cards device wlan # 802.11 support options IEEE80211_DEBUG # enable debug msgs options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's options IEEE80211_SUPPORT_MESH # enable 802.11s draft support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_amrr # AMRR transmit rate control algorithm device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # pci/cardbus chip support options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors device ath_rate_sample # SampleRate tx rate control for ath device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. # Pseudo devices. device loop # Network loopback device random # Entropy device device ether # Ethernet support device vlan # 802.1Q VLAN support device tun # Packet tunnel. device pty # BSD-style compatibility pseudo ttys device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device faith # IPv6-to-IPv4 relaying (translation) device firmware # firmware assist module # The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter # USB support options USB_DEBUG # enable debug msgs device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device uhid # "Human Interface Devices" device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device urio # Diamond Rio 500 MP3 player # USB Serial devices device uark # Technologies ARK3116 based serial adapters device ubsa # Belkin F5U103 and compatible serial adapters device uftdi # For FTDI usb serial adapters device uipaq # Some WinCE based devices device uplcom # Prolific PL-2303 serial adapters device uslcom # SI Labs CP2101/CP2102 serial adapters device uvisor # Visor and Palm devices device uvscom # USB serial support for DDI pocket's PHS # USB Ethernet, requires miibus device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet device udav # Davicom DM9601E USB # USB Wireless device rum # Ralink Technology RT2501USB wireless NICs device uath # Atheros AR5523 wireless NICs device ural # Ralink Technology RT2500USB wireless NICs device zyd # ZyDAS zb1211/zb1211b wireless NICs # FireWire support device firewire # FireWire bus code #device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!) device fwip # IP over FireWire (RFC 2734,3146) device dcons # Dumb console driver device dcons_crom # Configuration ROM for dcons Index: stable/8/sys/amd64/include/xen =================================================================== --- stable/8/sys/amd64/include/xen (revision 226242) +++ stable/8/sys/amd64/include/xen (revision 226243) Property changes on: stable/8/sys/amd64/include/xen ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/amd64/include/xen:r226026 Index: stable/8/sys/cddl/contrib/opensolaris =================================================================== --- stable/8/sys/cddl/contrib/opensolaris (revision 226242) +++ stable/8/sys/cddl/contrib/opensolaris (revision 226243) Property changes on: stable/8/sys/cddl/contrib/opensolaris ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/cddl/contrib/opensolaris:r226026 Index: stable/8/sys/conf/files =================================================================== --- stable/8/sys/conf/files (revision 226242) +++ stable/8/sys/conf/files (revision 226243) @@ -1,3050 +1,3055 @@ # $FreeBSD$ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and # dependency lines other than the first are silently ignored. # acpi_quirks.h optional acpi \ dependency "$S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ compile-with "${AWK} -f $S/tools/acpi_quirks2h.awk $S/dev/acpica/acpi_quirks" \ no-obj no-implicit-rule before-depend \ clean "acpi_quirks.h" aicasm optional ahc | ahd \ dependency "$S/dev/aic7xxx/aicasm/*.[chyl]" \ compile-with "CC='${CC}' ${MAKE} -f $S/dev/aic7xxx/aicasm/Makefile MAKESRCPATH=$S/dev/aic7xxx/aicasm" \ no-obj no-implicit-rule \ clean "aicasm* y.tab.h" aic7xxx_seq.h optional ahc \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h -p aic7xxx_reg_print.c -i $S/dev/aic7xxx/aic7xxx_osm.h $S/dev/aic7xxx/aic7xxx.seq" \ no-obj no-implicit-rule before-depend local \ clean "aic7xxx_seq.h" \ dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" aic7xxx_reg.h optional ahc \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h -p aic7xxx_reg_print.c -i $S/dev/aic7xxx/aic7xxx_osm.h $S/dev/aic7xxx/aic7xxx.seq" \ no-obj no-implicit-rule before-depend local \ clean "aic7xxx_reg.h" \ dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" aic7xxx_reg_print.c optional ahc \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic7xxx_seq.h -r aic7xxx_reg.h -p aic7xxx_reg_print.c -i $S/dev/aic7xxx/aic7xxx_osm.h $S/dev/aic7xxx/aic7xxx.seq" \ no-obj no-implicit-rule local \ clean "aic7xxx_reg_print.c" \ dependency "$S/dev/aic7xxx/aic7xxx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" aic7xxx_reg_print.o optional ahc ahc_reg_pretty_print \ compile-with "${NORMAL_C}" \ no-implicit-rule local aic79xx_seq.h optional ahd pci \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic79xx_seq.h -r aic79xx_reg.h -p aic79xx_reg_print.c -i $S/dev/aic7xxx/aic79xx_osm.h $S/dev/aic7xxx/aic79xx.seq" \ no-obj no-implicit-rule before-depend local \ clean "aic79xx_seq.h" \ dependency "$S/dev/aic7xxx/aic79xx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" aic79xx_reg.h optional ahd pci \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic79xx_seq.h -r aic79xx_reg.h -p aic79xx_reg_print.c -i $S/dev/aic7xxx/aic79xx_osm.h $S/dev/aic7xxx/aic79xx.seq" \ no-obj no-implicit-rule before-depend local \ clean "aic79xx_reg.h" \ dependency "$S/dev/aic7xxx/aic79xx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" aic79xx_reg_print.c optional ahd pci \ compile-with "./aicasm ${INCLUDES} -I$S/cam/scsi -I$S/dev/aic7xxx -o aic79xx_seq.h -r aic79xx_reg.h -p aic79xx_reg_print.c -i $S/dev/aic7xxx/aic79xx_osm.h $S/dev/aic7xxx/aic79xx.seq" \ no-obj no-implicit-rule local \ clean "aic79xx_reg_print.c" \ dependency "$S/dev/aic7xxx/aic79xx.{reg,seq} $S/cam/scsi/scsi_message.h aicasm" aic79xx_reg_print.o optional ahd pci ahd_reg_pretty_print \ compile-with "${NORMAL_C}" \ no-implicit-rule local emu10k1-alsa%diked.h optional snd_emu10k1 | snd_emu10kx \ dependency "$S/tools/sound/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/emu10k1-alsa.h" \ compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/sound/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/sound/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p16v-alsa.h" \ compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/sound/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/sound/emu10k1-mkalsa.sh $S/gnu/dev/sound/pci/p17v-alsa.h" \ compile-with "CC='${CC}' AWK=${AWK} sh $S/tools/sound/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" feeder_eq_gen.h optional sound \ dependency "$S/tools/sound/feeder_eq_mkfilter.awk" \ compile-with "${AWK} -f $S/tools/sound/feeder_eq_mkfilter.awk -- ${FEEDER_EQ_PRESETS} > feeder_eq_gen.h" \ no-obj no-implicit-rule before-depend \ clean "feeder_eq_gen.h" feeder_rate_gen.h optional sound \ dependency "$S/tools/sound/feeder_rate_mkfilter.awk" \ compile-with "${AWK} -f $S/tools/sound/feeder_rate_mkfilter.awk -- ${FEEDER_RATE_PRESETS} > feeder_rate_gen.h" \ no-obj no-implicit-rule before-depend \ clean "feeder_rate_gen.h" snd_fxdiv_gen.h optional sound \ dependency "$S/tools/sound/snd_fxdiv_gen.awk" \ compile-with "${AWK} -f $S/tools/sound/snd_fxdiv_gen.awk -- > snd_fxdiv_gen.h" \ no-obj no-implicit-rule before-depend \ clean "snd_fxdiv_gen.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" \ no-obj no-implicit-rule before-depend \ clean "miidevs.h" pccarddevs.h standard \ dependency "$S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \ compile-with "${AWK} -f $S/tools/pccarddevs2h.awk $S/dev/pccard/pccarddevs" \ no-obj no-implicit-rule before-depend \ clean "pccarddevs.h" teken_state.h optional sc \ dependency "$S/dev/syscons/teken/gensequences $S/dev/syscons/teken/sequences" \ compile-with "${AWK} -f $S/dev/syscons/teken/gensequences $S/dev/syscons/teken/sequences > teken_state.h" \ no-obj no-implicit-rule before-depend \ clean "teken_state.h" usbdevs.h optional usb \ dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \ compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -h" \ no-obj no-implicit-rule before-depend \ clean "usbdevs.h" usbdevs_data.h optional usb \ dependency "$S/tools/usbdevs2h.awk $S/dev/usb/usbdevs" \ compile-with "${AWK} -f $S/tools/usbdevs2h.awk $S/dev/usb/usbdevs -d" \ no-obj no-implicit-rule before-depend \ clean "usbdevs_data.h" cam/cam.c optional scbus cam/cam_periph.c optional scbus cam/cam_queue.c optional scbus cam/cam_sim.c optional scbus cam/cam_xpt.c optional scbus cam/ata/ata_all.c optional scbus cam/ata/ata_xpt.c optional scbus cam/ata/ata_pmp.c optional scbus cam/scsi/scsi_xpt.c optional scbus cam/scsi/scsi_all.c optional scbus cam/scsi/scsi_cd.c optional cd cam/scsi/scsi_ch.c optional ch cam/ata/ata_da.c optional ada | da cam/scsi/scsi_da.c optional da cam/scsi/scsi_low.c optional ct | ncv | nsp | stg cam/scsi/scsi_low_pisa.c optional ct | ncv | nsp | stg cam/scsi/scsi_pass.c optional pass cam/scsi/scsi_pt.c optional pt cam/scsi/scsi_sa.c optional sa cam/scsi/scsi_ses.c optional ses cam/scsi/scsi_sg.c optional sg cam/scsi/scsi_targ_bh.c optional targbh cam/scsi/scsi_target.c optional targ contrib/altq/altq/altq_cbq.c optional altq \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/altq/altq/altq_cdnr.c optional altq contrib/altq/altq/altq_hfsc.c optional altq \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/altq/altq/altq_priq.c optional altq \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/altq/altq/altq_red.c optional altq \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/altq/altq/altq_rio.c optional altq \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/altq/altq/altq_rmclass.c optional altq contrib/altq/altq/altq_subr.c optional altq \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/dev/acpica/debugger/dbcmds.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbdisply.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbexec.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbfileio.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbhistry.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbinput.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbstats.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbutils.c optional acpi acpi_debug contrib/dev/acpica/debugger/dbxface.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmbuffer.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmnames.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmopcode.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmobject.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmresrc.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmresrcl.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmresrcs.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmutils.c optional acpi acpi_debug contrib/dev/acpica/disassembler/dmwalk.c optional acpi acpi_debug contrib/dev/acpica/dispatcher/dsfield.c optional acpi contrib/dev/acpica/dispatcher/dsinit.c optional acpi contrib/dev/acpica/dispatcher/dsmethod.c optional acpi contrib/dev/acpica/dispatcher/dsmthdat.c optional acpi contrib/dev/acpica/dispatcher/dsobject.c optional acpi contrib/dev/acpica/dispatcher/dsopcode.c optional acpi contrib/dev/acpica/dispatcher/dsutils.c optional acpi contrib/dev/acpica/dispatcher/dswexec.c optional acpi contrib/dev/acpica/dispatcher/dswload.c optional acpi contrib/dev/acpica/dispatcher/dswscope.c optional acpi contrib/dev/acpica/dispatcher/dswstate.c optional acpi contrib/dev/acpica/events/evevent.c optional acpi contrib/dev/acpica/events/evgpe.c optional acpi contrib/dev/acpica/events/evgpeblk.c optional acpi contrib/dev/acpica/events/evgpeinit.c optional acpi contrib/dev/acpica/events/evgpeutil.c optional acpi contrib/dev/acpica/events/evmisc.c optional acpi contrib/dev/acpica/events/evregion.c optional acpi contrib/dev/acpica/events/evrgnini.c optional acpi contrib/dev/acpica/events/evsci.c optional acpi contrib/dev/acpica/events/evxface.c optional acpi contrib/dev/acpica/events/evxfevnt.c optional acpi contrib/dev/acpica/events/evxfregn.c optional acpi contrib/dev/acpica/executer/exconfig.c optional acpi contrib/dev/acpica/executer/exconvrt.c optional acpi contrib/dev/acpica/executer/excreate.c optional acpi contrib/dev/acpica/executer/exdebug.c optional acpi contrib/dev/acpica/executer/exdump.c optional acpi contrib/dev/acpica/executer/exfield.c optional acpi contrib/dev/acpica/executer/exfldio.c optional acpi contrib/dev/acpica/executer/exmisc.c optional acpi contrib/dev/acpica/executer/exmutex.c optional acpi contrib/dev/acpica/executer/exnames.c optional acpi contrib/dev/acpica/executer/exoparg1.c optional acpi contrib/dev/acpica/executer/exoparg2.c optional acpi contrib/dev/acpica/executer/exoparg3.c optional acpi contrib/dev/acpica/executer/exoparg6.c optional acpi contrib/dev/acpica/executer/exprep.c optional acpi contrib/dev/acpica/executer/exregion.c optional acpi contrib/dev/acpica/executer/exresnte.c optional acpi contrib/dev/acpica/executer/exresolv.c optional acpi contrib/dev/acpica/executer/exresop.c optional acpi contrib/dev/acpica/executer/exstore.c optional acpi contrib/dev/acpica/executer/exstoren.c optional acpi contrib/dev/acpica/executer/exstorob.c optional acpi contrib/dev/acpica/executer/exsystem.c optional acpi contrib/dev/acpica/executer/exutils.c optional acpi contrib/dev/acpica/hardware/hwacpi.c optional acpi contrib/dev/acpica/hardware/hwgpe.c optional acpi contrib/dev/acpica/hardware/hwpci.c optional acpi contrib/dev/acpica/hardware/hwregs.c optional acpi contrib/dev/acpica/hardware/hwsleep.c optional acpi contrib/dev/acpica/hardware/hwtimer.c optional acpi contrib/dev/acpica/hardware/hwvalid.c optional acpi contrib/dev/acpica/hardware/hwxface.c optional acpi contrib/dev/acpica/namespace/nsaccess.c optional acpi contrib/dev/acpica/namespace/nsalloc.c optional acpi contrib/dev/acpica/namespace/nsdump.c optional acpi contrib/dev/acpica/namespace/nseval.c optional acpi contrib/dev/acpica/namespace/nsinit.c optional acpi contrib/dev/acpica/namespace/nsload.c optional acpi contrib/dev/acpica/namespace/nsnames.c optional acpi contrib/dev/acpica/namespace/nsobject.c optional acpi contrib/dev/acpica/namespace/nsparse.c optional acpi contrib/dev/acpica/namespace/nspredef.c optional acpi contrib/dev/acpica/namespace/nsrepair.c optional acpi contrib/dev/acpica/namespace/nsrepair2.c optional acpi contrib/dev/acpica/namespace/nssearch.c optional acpi contrib/dev/acpica/namespace/nsutils.c optional acpi contrib/dev/acpica/namespace/nswalk.c optional acpi contrib/dev/acpica/namespace/nsxfeval.c optional acpi contrib/dev/acpica/namespace/nsxfname.c optional acpi contrib/dev/acpica/namespace/nsxfobj.c optional acpi contrib/dev/acpica/parser/psargs.c optional acpi contrib/dev/acpica/parser/psloop.c optional acpi contrib/dev/acpica/parser/psopcode.c optional acpi contrib/dev/acpica/parser/psparse.c optional acpi contrib/dev/acpica/parser/psscope.c optional acpi contrib/dev/acpica/parser/pstree.c optional acpi contrib/dev/acpica/parser/psutils.c optional acpi contrib/dev/acpica/parser/pswalk.c optional acpi contrib/dev/acpica/parser/psxface.c optional acpi contrib/dev/acpica/resources/rsaddr.c optional acpi contrib/dev/acpica/resources/rscalc.c optional acpi contrib/dev/acpica/resources/rscreate.c optional acpi contrib/dev/acpica/resources/rsdump.c optional acpi contrib/dev/acpica/resources/rsinfo.c optional acpi contrib/dev/acpica/resources/rsio.c optional acpi contrib/dev/acpica/resources/rsirq.c optional acpi contrib/dev/acpica/resources/rslist.c optional acpi contrib/dev/acpica/resources/rsmemory.c optional acpi contrib/dev/acpica/resources/rsmisc.c optional acpi contrib/dev/acpica/resources/rsutils.c optional acpi contrib/dev/acpica/resources/rsxface.c optional acpi contrib/dev/acpica/tables/tbfadt.c optional acpi contrib/dev/acpica/tables/tbfind.c optional acpi contrib/dev/acpica/tables/tbinstal.c optional acpi contrib/dev/acpica/tables/tbutils.c optional acpi contrib/dev/acpica/tables/tbxface.c optional acpi contrib/dev/acpica/tables/tbxfroot.c optional acpi contrib/dev/acpica/utilities/utalloc.c optional acpi contrib/dev/acpica/utilities/utcache.c optional acpi contrib/dev/acpica/utilities/utcopy.c optional acpi contrib/dev/acpica/utilities/utdebug.c optional acpi contrib/dev/acpica/utilities/utdelete.c optional acpi contrib/dev/acpica/utilities/uteval.c optional acpi contrib/dev/acpica/utilities/utglobal.c optional acpi contrib/dev/acpica/utilities/utids.c optional acpi contrib/dev/acpica/utilities/utinit.c optional acpi contrib/dev/acpica/utilities/utlock.c optional acpi contrib/dev/acpica/utilities/utmath.c optional acpi contrib/dev/acpica/utilities/utmisc.c optional acpi contrib/dev/acpica/utilities/utmutex.c optional acpi contrib/dev/acpica/utilities/utobject.c optional acpi contrib/dev/acpica/utilities/utosi.c optional acpi contrib/dev/acpica/utilities/utresrc.c optional acpi contrib/dev/acpica/utilities/utstate.c optional acpi contrib/dev/acpica/utilities/utxface.c optional acpi contrib/dev/acpica/utilities/utxferror.c optional acpi contrib/ipfilter/netinet/fil.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_auth.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_fil_freebsd.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_frag.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_log.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_nat.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_proxy.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_state.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_lookup.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-error -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_pool.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_htable.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_sync.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/mlfk_ipl.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ngatm/netnatm/api/cc_conn.c optional ngatm_ccatm \ compile-with "${NORMAL_C_NOWERROR} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_data.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_dump.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_port.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_sig.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/cc_user.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/api/unisap.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/misc/straddr.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/misc/unimsg_common.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/msg/traffic.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/msg/uni_ie.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/msg/uni_msg.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/saal/saal_sscfu.c optional ngatm_sscfu \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/saal/saal_sscop.c optional ngatm_sscop \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_call.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_coord.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_party.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_print.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_reset.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_uni.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_unimsgcpy.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/ngatm/netnatm/sig/sig_verify.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" contrib/pf/net/if_pflog.c optional pflog pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/if_pfsync.c optional pfsync pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_if.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_ioctl.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_norm.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_osfp.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_ruleset.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_subr.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/net/pf_table.c optional pf inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" contrib/pf/netinet/in4_cksum.c optional pf inet crypto/blowfish/bf_ecb.c optional ipsec crypto/blowfish/bf_skey.c optional crypto | ipsec crypto/camellia/camellia.c optional crypto | ipsec crypto/camellia/camellia-api.c optional crypto | ipsec crypto/des/des_ecb.c optional crypto | ipsec | netsmb crypto/des/des_setkey.c optional crypto | ipsec | netsmb crypto/rc4/rc4.c optional netgraph_mppc_encryption | kgssapi crypto/rijndael/rijndael-alg-fst.c optional crypto | geom_bde | \ ipsec | random | wlan_ccmp crypto/rijndael/rijndael-api-fst.c optional geom_bde | random crypto/rijndael/rijndael-api.c optional crypto | ipsec | wlan_ccmp crypto/sha1.c optional carp | crypto | ipsec | \ netgraph_mppc_encryption | sctp crypto/sha2/sha2.c optional crypto | geom_bde | ipsec | random | \ sctp ddb/db_access.c optional ddb ddb/db_break.c optional ddb ddb/db_capture.c optional ddb ddb/db_command.c optional ddb ddb/db_examine.c optional ddb ddb/db_expr.c optional ddb ddb/db_input.c optional ddb ddb/db_lex.c optional ddb ddb/db_main.c optional ddb ddb/db_output.c optional ddb ddb/db_print.c optional ddb ddb/db_ps.c optional ddb ddb/db_run.c optional ddb ddb/db_script.c optional ddb ddb/db_sym.c optional ddb ddb/db_thread.c optional ddb ddb/db_textdump.c optional ddb ddb/db_variables.c optional ddb ddb/db_watch.c optional ddb ddb/db_write_cmd.c optional ddb #dev/dpt/dpt_control.c optional dpt dev/aac/aac.c optional aac dev/aac/aac_cam.c optional aacp aac dev/aac/aac_debug.c optional aac dev/aac/aac_disk.c optional aac dev/aac/aac_linux.c optional aac compat_linux dev/aac/aac_pci.c optional aac pci dev/acpi_support/acpi_wmi.c optional acpi_wmi acpi dev/acpi_support/acpi_aiboost.c optional acpi_aiboost acpi dev/acpi_support/acpi_asus.c optional acpi_asus acpi dev/acpi_support/acpi_fujitsu.c optional acpi_fujitsu acpi dev/acpi_support/acpi_hp.c optional acpi_hp acpi dev/acpi_support/acpi_ibm.c optional acpi_ibm acpi dev/acpi_support/acpi_panasonic.c optional acpi_panasonic acpi dev/acpi_support/acpi_sony.c optional acpi_sony acpi dev/acpi_support/acpi_toshiba.c optional acpi_toshiba acpi dev/acpi_support/atk0110.c optional aibs acpi dev/acpica/Osd/OsdDebug.c optional acpi dev/acpica/Osd/OsdHardware.c optional acpi dev/acpica/Osd/OsdInterrupt.c optional acpi dev/acpica/Osd/OsdMemory.c optional acpi dev/acpica/Osd/OsdSchedule.c optional acpi dev/acpica/Osd/OsdStream.c optional acpi dev/acpica/Osd/OsdSynch.c optional acpi dev/acpica/Osd/OsdTable.c optional acpi dev/acpica/acpi.c optional acpi dev/acpica/acpi_acad.c optional acpi dev/acpica/acpi_battery.c optional acpi dev/acpica/acpi_button.c optional acpi dev/acpica/acpi_cmbat.c optional acpi dev/acpica/acpi_cpu.c optional acpi dev/acpica/acpi_ec.c optional acpi dev/acpica/acpi_hpet.c optional acpi dev/acpica/acpi_isab.c optional acpi isa dev/acpica/acpi_lid.c optional acpi dev/acpica/acpi_package.c optional acpi dev/acpica/acpi_pci.c optional acpi pci dev/acpica/acpi_pci_link.c optional acpi pci dev/acpica/acpi_pcib.c optional acpi pci dev/acpica/acpi_pcib_acpi.c optional acpi pci dev/acpica/acpi_pcib_pci.c optional acpi pci dev/acpica/acpi_perf.c optional acpi dev/acpica/acpi_powerres.c optional acpi dev/acpica/acpi_quirk.c optional acpi dev/acpica/acpi_resource.c optional acpi dev/acpica/acpi_smbat.c optional acpi dev/acpica/acpi_thermal.c optional acpi dev/acpica/acpi_throttle.c optional acpi dev/acpica/acpi_timer.c optional acpi dev/acpica/acpi_video.c optional acpi_video acpi dev/acpica/acpi_dock.c optional acpi_dock acpi dev/adlink/adlink.c optional adlink dev/advansys/adv_eisa.c optional adv eisa dev/advansys/adv_pci.c optional adv pci dev/advansys/advansys.c optional adv dev/advansys/advlib.c optional adv dev/advansys/advmcode.c optional adv dev/advansys/adw_pci.c optional adw pci dev/advansys/adwcam.c optional adw dev/advansys/adwlib.c optional adw dev/advansys/adwmcode.c optional adw dev/ae/if_ae.c optional ae pci dev/age/if_age.c optional age pci inet dev/agp/agp.c optional agp pci dev/agp/agp_if.m optional agp pci dev/aha/aha.c optional aha dev/aha/aha_isa.c optional aha isa dev/aha/aha_mca.c optional aha mca dev/ahb/ahb.c optional ahb eisa dev/ahci/ahci.c optional ahci pci dev/aic/aic.c optional aic dev/aic/aic_pccard.c optional aic pccard dev/aic7xxx/ahc_eisa.c optional ahc eisa dev/aic7xxx/ahc_isa.c optional ahc isa dev/aic7xxx/ahc_pci.c optional ahc pci dev/aic7xxx/ahd_pci.c optional ahd pci dev/aic7xxx/aic7770.c optional ahc dev/aic7xxx/aic79xx.c optional ahd pci dev/aic7xxx/aic79xx_osm.c optional ahd pci dev/aic7xxx/aic79xx_pci.c optional ahd pci dev/aic7xxx/aic7xxx.c optional ahc dev/aic7xxx/aic7xxx_93cx6.c optional ahc dev/aic7xxx/aic7xxx_osm.c optional ahc dev/aic7xxx/aic7xxx_pci.c optional ahc pci dev/alc/if_alc.c optional alc pci inet dev/ale/if_ale.c optional ale pci inet dev/amd/amd.c optional amd dev/amr/amr.c optional amr dev/amr/amr_cam.c optional amrp amr dev/amr/amr_disk.c optional amr dev/amr/amr_linux.c optional amr compat_linux dev/amr/amr_pci.c optional amr pci dev/an/if_an.c optional an dev/an/if_an_isa.c optional an isa dev/an/if_an_pccard.c optional an pccard dev/an/if_an_pci.c optional an pci dev/asr/asr.c optional asr pci # dev/ata/ata_if.m optional ata | atacore dev/ata/ata-all.c optional ata | atacore dev/ata/ata-dma.c optional ata | atacore dev/ata/ata-lowlevel.c optional ata | atacore dev/ata/ata-queue.c optional ata | atacore dev/ata/ata-sata.c optional ata | atacore dev/ata/ata-card.c optional ata pccard | atapccard dev/ata/ata-cbus.c optional ata pc98 | atapc98 dev/ata/ata-isa.c optional ata isa | ataisa dev/ata/ata-pci.c optional ata pci | atapci dev/ata/chipsets/ata-ahci.c optional ata pci | ataahci | ataacerlabs | \ ataati | ataintel | atajmicron | \ atavia | atanvidia dev/ata/chipsets/ata-acard.c optional ata pci | ataacard dev/ata/chipsets/ata-acerlabs.c optional ata pci | ataacerlabs dev/ata/chipsets/ata-adaptec.c optional ata pci | ataadaptec dev/ata/chipsets/ata-amd.c optional ata pci | ataamd dev/ata/chipsets/ata-ati.c optional ata pci | ataati dev/ata/chipsets/ata-cenatek.c optional ata pci | atacenatek dev/ata/chipsets/ata-cypress.c optional ata pci | atacypress dev/ata/chipsets/ata-cyrix.c optional ata pci | atacyrix dev/ata/chipsets/ata-highpoint.c optional ata pci | atahighpoint dev/ata/chipsets/ata-intel.c optional ata pci | ataintel dev/ata/chipsets/ata-ite.c optional ata pci | ataite dev/ata/chipsets/ata-jmicron.c optional ata pci | atajmicron dev/ata/chipsets/ata-marvell.c optional ata pci | atamarvell | ataadaptec dev/ata/chipsets/ata-micron.c optional ata pci | atamicron dev/ata/chipsets/ata-national.c optional ata pci | atanational dev/ata/chipsets/ata-netcell.c optional ata pci | atanetcell dev/ata/chipsets/ata-nvidia.c optional ata pci | atanvidia dev/ata/chipsets/ata-promise.c optional ata pci | atapromise dev/ata/chipsets/ata-serverworks.c optional ata pci | ataserverworks dev/ata/chipsets/ata-siliconimage.c optional ata pci | atasiliconimage | ataati dev/ata/chipsets/ata-sis.c optional ata pci | atasis dev/ata/chipsets/ata-via.c optional ata pci | atavia dev/ata/ata-disk.c optional atadisk dev/ata/ata-raid.c optional ataraid dev/ata/atapi-cd.c optional atapicd dev/ata/atapi-fd.c optional atapifd dev/ata/atapi-tape.c optional atapist dev/ata/atapi-cam.c optional atapicam # dev/ath/if_ath.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_pci.c optional ath pci \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ah_osdep.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/ath/ath_hal/ah.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v1.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v3.c optional ath_hal | ath_ar5211 | ath_ar5212 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v14.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_eeprom_v4k.c \ optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_regdomain.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" # ar5210 dev/ath/ath_hal/ar5210/ar5210_attach.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_beacon.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_interrupts.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_keycache.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_misc.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_phy.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_power.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_recv.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_reset.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5210/ar5210_xmit.c optional ath_hal | ath_ar5210 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar5211 dev/ath/ath_hal/ar5211/ar5211_attach.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_beacon.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_interrupts.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_keycache.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_misc.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_phy.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_power.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_recv.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_reset.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5211/ar5211_xmit.c optional ath_hal | ath_ar5211 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar5212 dev/ath/ath_hal/ar5212/ar5212_ani.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_attach.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_beacon.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_eeprom.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_gpio.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_interrupts.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_keycache.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_misc.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_phy.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_power.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_recv.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_reset.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_rfgain.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5212_xmit.c \ optional ath_hal | ath_ar5212 | ath_ar5416 | ath_ar9160 | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar5416 (depends on ar5212) dev/ath/ath_hal/ar5416/ar5416_ani.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_attach.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_beacon.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal_iq.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal_adcgain.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_cal_adcdc.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_eeprom.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_gpio.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_interrupts.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_keycache.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_misc.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_phy.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_power.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_recv.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_reset.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_xmit.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9160 (depends on ar5416) dev/ath/ath_hal/ar5416/ar9160_attach.c optional ath_hal | ath_ar9160 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9280 (depends on ar5416) dev/ath/ath_hal/ar5416/ar9280_attach.c optional ath_hal | ath_ar9280 | \ ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9285 (depends on ar5416 and ar9280) dev/ath/ath_hal/ar5416/ar9285_attach.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar9285_reset.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # rf backends dev/ath/ath_hal/ar5212/ar2316.c optional ath_rf2316 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar2317.c optional ath_rf2317 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar2413.c optional ath_hal | ath_rf2413 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar2425.c optional ath_hal | ath_rf2425 | ath_rf2417 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5111.c optional ath_hal | ath_rf5111 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5112.c optional ath_hal | ath_rf5112 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5212/ar5413.c optional ath_hal | ath_rf5413 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar2133.c optional ath_hal | ath_ar5416 | ath_ar9160 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar9280.c optional ath_hal | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar9285.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ath rate control algorithms dev/ath/ath_rate/amrr/amrr.c optional ath_rate_amrr \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_rate/onoe/onoe.c optional ath_rate_onoe \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_rate/sample/sample.c optional ath_rate_sample \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/bce/if_bce.c optional bce dev/bfe/if_bfe.c optional bfe dev/bge/if_bge.c optional bge dev/bktr/bktr_audio.c optional bktr pci dev/bktr/bktr_card.c optional bktr pci dev/bktr/bktr_core.c optional bktr pci dev/bktr/bktr_i2c.c optional bktr pci smbus dev/bktr/bktr_os.c optional bktr pci dev/bktr/bktr_tuner.c optional bktr pci dev/bktr/msp34xx.c optional bktr pci dev/buslogic/bt.c optional bt dev/buslogic/bt_eisa.c optional bt eisa dev/buslogic/bt_isa.c optional bt isa dev/buslogic/bt_mca.c optional bt mca dev/buslogic/bt_pci.c optional bt pci dev/bwi/bwimac.c optional bwi dev/bwi/bwiphy.c optional bwi dev/bwi/bwirf.c optional bwi dev/bwi/if_bwi.c optional bwi dev/bwi/if_bwi_pci.c optional bwi pci dev/bwn/if_bwn.c optional bwn siba_bwn dev/cardbus/cardbus.c optional cardbus dev/cardbus/cardbus_cis.c optional cardbus dev/cardbus/cardbus_device.c optional cardbus dev/cas/if_cas.c optional cas dev/cfi/cfi_core.c optional cfi dev/cfi/cfi_dev.c optional cfi dev/cfi/cfi_disk.c optional cfid dev/ciss/ciss.c optional ciss dev/cm/smc90cx6.c optional cm dev/cmx/cmx.c optional cmx dev/cmx/cmx_pccard.c optional cmx pccard dev/cpufreq/ichss.c optional cpufreq dev/cs/if_cs.c optional cs dev/cs/if_cs_isa.c optional cs isa dev/cs/if_cs_pccard.c optional cs pccard dev/cxgb/cxgb_main.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/cxgb_offload.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/cxgb_sge.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_mc5.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_vsc7323.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_vsc8211.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_ael1002.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_aq100x.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_mv88e1xxx.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_xgmac.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_t3_hw.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/common/cxgb_tn1010.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/sys/uipc_mvec.c optional cxgb pci \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgb/cxgb_t3fw.c optional cxgb cxgb_t3fw \ compile-with "${NORMAL_C} -I$S/dev/cxgb" dev/cxgbe/t4_main.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_sge.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_l2t.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/common/t4_hw.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cy/cy.c optional cy dev/cy/cy_isa.c optional cy isa dev/cy/cy_pci.c optional cy pci dev/dc/if_dc.c optional dc pci dev/dc/dcphy.c optional dc pci dev/dc/pnphy.c optional dc pci dev/dcons/dcons.c optional dcons dev/dcons/dcons_crom.c optional dcons_crom dev/dcons/dcons_os.c optional dcons dev/de/if_de.c optional de pci dev/digi/CX.c optional digi_CX dev/digi/CX_PCI.c optional digi_CX_PCI dev/digi/EPCX.c optional digi_EPCX dev/digi/EPCX_PCI.c optional digi_EPCX_PCI dev/digi/Xe.c optional digi_Xe dev/digi/Xem.c optional digi_Xem dev/digi/Xr.c optional digi_Xr dev/digi/digi.c optional digi dev/digi/digi_isa.c optional digi isa dev/digi/digi_pci.c optional digi pci dev/dpt/dpt_eisa.c optional dpt eisa dev/dpt/dpt_pci.c optional dpt pci dev/dpt/dpt_scsi.c optional dpt dev/drm/ati_pcigart.c optional drm dev/drm/drm_agpsupport.c optional drm dev/drm/drm_auth.c optional drm dev/drm/drm_bufs.c optional drm dev/drm/drm_context.c optional drm dev/drm/drm_dma.c optional drm dev/drm/drm_drawable.c optional drm dev/drm/drm_drv.c optional drm dev/drm/drm_fops.c optional drm dev/drm/drm_ioctl.c optional drm dev/drm/drm_irq.c optional drm dev/drm/drm_lock.c optional drm dev/drm/drm_memory.c optional drm dev/drm/drm_pci.c optional drm dev/drm/drm_scatter.c optional drm dev/drm/drm_sysctl.c optional drm dev/drm/drm_vm.c optional drm dev/drm/i915_dma.c optional i915drm dev/drm/i915_drv.c optional i915drm dev/drm/i915_irq.c optional i915drm dev/drm/i915_mem.c optional i915drm dev/drm/i915_suspend.c optional i915drm dev/drm/mach64_dma.c optional mach64drm dev/drm/mach64_drv.c optional mach64drm dev/drm/mach64_irq.c optional mach64drm dev/drm/mach64_state.c optional mach64drm dev/drm/mga_dma.c optional mgadrm dev/drm/mga_drv.c optional mgadrm dev/drm/mga_irq.c optional mgadrm dev/drm/mga_state.c optional mgadrm \ compile-with "${NORMAL_C} -finline-limit=13500" dev/drm/mga_warp.c optional mgadrm dev/drm/r128_cce.c optional r128drm dev/drm/r128_drv.c optional r128drm dev/drm/r128_irq.c optional r128drm dev/drm/r128_state.c optional r128drm \ compile-with "${NORMAL_C} -finline-limit=13500" dev/drm/r300_cmdbuf.c optional radeondrm dev/drm/r600_blit.c optional radeondrm dev/drm/r600_cp.c optional radeondrm dev/drm/radeon_cp.c optional radeondrm dev/drm/radeon_cs.c optional radeondrm dev/drm/radeon_drv.c optional radeondrm dev/drm/radeon_irq.c optional radeondrm dev/drm/radeon_mem.c optional radeondrm dev/drm/radeon_state.c optional radeondrm dev/drm/savage_bci.c optional savagedrm dev/drm/savage_drv.c optional savagedrm dev/drm/savage_state.c optional savagedrm dev/drm/sis_drv.c optional sisdrm dev/drm/sis_ds.c optional sisdrm dev/drm/sis_mm.c optional sisdrm dev/drm/tdfx_drv.c optional tdfxdrm dev/ed/if_ed.c optional ed dev/ed/if_ed_novell.c optional ed dev/ed/if_ed_rtl80x9.c optional ed dev/ed/if_ed_pccard.c optional ed pccard dev/ed/if_ed_pci.c optional ed pci dev/eisa/eisa_if.m standard dev/eisa/eisaconf.c optional eisa dev/e1000/if_em.c optional em inet \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/if_lem.c optional em inet \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/if_igb.c optional igb inet \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_80003es2lan.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82540.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82541.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82542.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82543.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82571.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82575.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_ich8lan.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_api.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_mac.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_manage.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_nvm.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_phy.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_vf.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_mbx.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_osdep.c optional em | igb \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/et/if_et.c optional et dev/en/if_en_pci.c optional en pci dev/en/midway.c optional en dev/ep/if_ep.c optional ep dev/ep/if_ep_eisa.c optional ep eisa dev/ep/if_ep_isa.c optional ep isa dev/ep/if_ep_mca.c optional ep mca dev/ep/if_ep_pccard.c optional ep pccard dev/esp/ncr53c9x.c optional esp dev/ex/if_ex.c optional ex dev/ex/if_ex_isa.c optional ex isa dev/ex/if_ex_pccard.c optional ex pccard dev/exca/exca.c optional cbb dev/fatm/if_fatm.c optional fatm pci dev/fb/splash.c optional splash dev/fe/if_fe.c optional fe dev/fe/if_fe_pccard.c optional fe pccard dev/firewire/firewire.c optional firewire dev/firewire/fwcrom.c optional firewire dev/firewire/fwdev.c optional firewire dev/firewire/fwdma.c optional firewire dev/firewire/fwmem.c optional firewire dev/firewire/fwohci.c optional firewire dev/firewire/fwohci_pci.c optional firewire pci dev/firewire/if_fwe.c optional fwe dev/firewire/if_fwip.c optional fwip dev/firewire/sbp.c optional sbp dev/firewire/sbp_targ.c optional sbp_targ dev/flash/at45d.c optional at45d dev/fxp/if_fxp.c optional fxp inet dev/gem/if_gem.c optional gem dev/gem/if_gem_pci.c optional gem pci dev/gem/if_gem_sbus.c optional gem sbus dev/hatm/if_hatm.c optional hatm pci dev/hatm/if_hatm_intr.c optional hatm pci dev/hatm/if_hatm_ioctl.c optional hatm pci dev/hatm/if_hatm_rx.c optional hatm pci dev/hatm/if_hatm_tx.c optional hatm pci dev/hifn/hifn7751.c optional hifn dev/hme/if_hme.c optional hme dev/hme/if_hme_pci.c optional hme pci dev/hme/if_hme_sbus.c optional hme sbus dev/hptiop/hptiop.c optional hptiop scbus dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc dev/ichsmb/ichsmb.c optional ichsmb dev/ichsmb/ichsmb_pci.c optional ichsmb pci dev/ida/ida.c optional ida dev/ida/ida_disk.c optional ida dev/ida/ida_eisa.c optional ida eisa dev/ida/ida_pci.c optional ida pci dev/ie/if_ie.c optional ie isa nowerror dev/ie/if_ie_isa.c optional ie isa dev/ieee488/ibfoo.c optional pcii | tnt4882 dev/ieee488/pcii.c optional pcii dev/ieee488/tnt4882.c optional tnt4882 dev/ieee488/upd7210.c optional pcii | tnt4882 dev/iicbus/ad7418.c optional ad7418 dev/iicbus/ds133x.c optional ds133x dev/iicbus/ds1672.c optional ds1672 dev/iicbus/icee.c optional icee dev/iicbus/if_ic.c optional ic dev/iicbus/iic.c optional iic dev/iicbus/iicbb.c optional iicbb dev/iicbus/iicbb_if.m optional iicbb dev/iicbus/iicbus.c optional iicbus dev/iicbus/iicbus_if.m optional iicbus dev/iicbus/iiconf.c optional iicbus dev/iicbus/iicsmb.c optional iicsmb \ dependency "iicbus_if.h" dev/iir/iir.c optional iir dev/iir/iir_ctrl.c optional iir dev/iir/iir_pci.c optional iir pci dev/ips/ips.c optional ips dev/ips/ips_commands.c optional ips dev/ips/ips_disk.c optional ips 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 dev/iscsi/initiator/isc_soc.c optional iscsi_initiator scbus dev/iscsi/initiator/isc_sm.c optional iscsi_initiator scbus dev/iscsi/initiator/isc_subr.c optional iscsi_initiator scbus dev/isp/isp.c optional isp dev/isp/isp_freebsd.c optional isp dev/isp/isp_library.c optional isp dev/isp/isp_pci.c optional isp pci dev/isp/isp_sbus.c optional isp sbus 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/iwn/if_iwn.c optional iwn iwn1000fw.c optional iwn1000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn1000.fw:iwn1000fw -miwn1000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn1000fw.c" iwn1000fw.fwo optional iwn1000fw | iwnfw \ dependency "iwn1000.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn1000.fw" \ no-implicit-rule \ clean "iwn1000fw.fwo" iwn1000.fw optional iwn1000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-1000-39.31.5.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn1000.fw" iwn4965fw.c optional iwn4965fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn4965.fw:iwn4965fw -miwn4965fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn4965fw.c" iwn4965fw.fwo optional iwn4965fw | iwnfw \ dependency "iwn4965.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn4965.fw" \ no-implicit-rule \ clean "iwn4965fw.fwo" iwn4965.fw optional iwn4965fw | iwnfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu" \ no-obj no-implicit-rule \ clean "iwn4965.fw" iwn5000fw.c optional iwn5000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn5000.fw:iwn5000fw -miwn5000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn5000fw.c" iwn5000fw.fwo optional iwn5000fw | iwnfw \ dependency "iwn5000.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn5000.fw" \ no-implicit-rule \ clean "iwn5000fw.fwo" iwn5000.fw optional iwn5000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-5000-8.83.5.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn5000.fw" iwn5150fw.c optional iwn5150fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn5150.fw:iwn5150fw -miwn5150fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn5150fw.c" iwn5150fw.fwo optional iwn5150fw | iwnfw \ dependency "iwn5150.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn5150.fw" \ no-implicit-rule \ clean "iwn5150fw.fwo" iwn5150.fw optional iwn5150fw | iwnfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-5150-8.24.2.2.fw.uu" \ no-obj no-implicit-rule \ clean "iwn5150.fw" iwn6000fw.c optional iwn6000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000.fw:iwn6000fw -miwn6000fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6000fw.c" iwn6000fw.fwo optional iwn6000fw | iwnfw \ dependency "iwn6000.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6000.fw" \ no-implicit-rule \ clean "iwn6000fw.fwo" iwn6000.fw optional iwn6000fw | iwnfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6000.fw" iwn6000g2afw.c optional iwn6000g2afw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2a.fw:iwn6000g2afw -miwn6000g2afw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6000g2afw.c" iwn6000g2afw.fwo optional iwn6000g2afw | iwnfw \ dependency "iwn6000g2a.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6000g2a.fw" \ no-implicit-rule \ clean "iwn6000g2afw.fwo" iwn6000g2a.fw optional iwn6000g2afw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000g2a-17.168.5.2.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6000g2a.fw" iwn6000g2bfw.c optional iwn6000g2bfw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6000g2b.fw:iwn6000g2bfw -miwn6000g2bfw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6000g2bfw.c" iwn6000g2bfw.fwo optional iwn6000g2bfw | iwnfw \ dependency "iwn6000g2b.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6000g2b.fw" \ no-implicit-rule \ clean "iwn6000g2bfw.fwo" iwn6000g2b.fw optional iwn6000g2bfw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000g2b-17.168.5.2.fw.uu" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000g2b-17.168.5.2.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6000g2b.fw" iwn6050fw.c optional iwn6050fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn6050.fw:iwn6050fw -miwn6050fw -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "iwn6050fw.c" iwn6050fw.fwo optional iwn6050fw | iwnfw \ dependency "iwn6050.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} iwn6050.fw" \ no-implicit-rule \ clean "iwn6050fw.fwo" iwn6050.fw optional iwn6050fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6050-41.28.5.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6050.fw" dev/ixgb/if_ixgb.c optional ixgb dev/ixgb/ixgb_ee.c optional ixgb dev/ixgb/ixgb_hw.c optional ixgb dev/ixgbe/ixgbe.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixv.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_phy.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_api.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_common.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_mbx.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_vf.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_82598.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_82599.c optional ixgbe inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/jme/if_jme.c optional jme pci inet dev/joy/joy.c optional joy dev/joy/joy_isa.c optional joy isa dev/joy/joy_pccard.c optional joy pccard dev/kbdmux/kbdmux.c optional kbdmux dev/ksyms/ksyms.c optional ksyms dev/le/am7990.c optional le dev/le/am79900.c optional le dev/le/if_le_pci.c optional le pci dev/le/lance.c optional le dev/led/led.c standard dev/lge/if_lge.c optional lge dev/lmc/if_lmc.c optional lmc dev/malo/if_malo.c optional malo dev/malo/if_malohal.c optional malo dev/malo/if_malo_pci.c optional malo pci dev/mc146818/mc146818.c optional mc146818 dev/mca/mca_bus.c optional mca dev/mcd/mcd.c optional mcd isa nowerror dev/mcd/mcd_isa.c optional mcd isa nowerror dev/md/md.c optional md dev/mem/memdev.c optional mem dev/mem/memutil.c optional mem dev/mfi/mfi.c optional mfi dev/mfi/mfi_debug.c optional mfi dev/mfi/mfi_pci.c optional mfi pci dev/mfi/mfi_disk.c optional mfi dev/mfi/mfi_linux.c optional mfi compat_linux dev/mfi/mfi_cam.c optional mfip scbus dev/mii/acphy.c optional miibus | acphy dev/mii/amphy.c optional miibus | amphy dev/mii/atphy.c optional miibus | atphy dev/mii/axphy.c optional miibus | axphy dev/mii/bmtphy.c optional miibus | bmtphy dev/mii/brgphy.c optional miibus | brgphy dev/mii/ciphy.c optional miibus | ciphy dev/mii/e1000phy.c optional miibus | e1000phy # XXX only xl cards? dev/mii/exphy.c optional miibus | exphy dev/mii/gentbi.c optional miibus | gentbi dev/mii/icsphy.c optional miibus | icsphy # XXX only fxp cards? dev/mii/inphy.c optional miibus | inphy dev/mii/ip1000phy.c optional miibus | ip1000phy dev/mii/jmphy.c optional miibus | jmphy dev/mii/lxtphy.c optional miibus | lxtphy dev/mii/mii.c optional miibus | mii dev/mii/mii_physubr.c optional miibus | mii dev/mii/miibus_if.m optional miibus | mii dev/mii/mlphy.c optional miibus | mlphy dev/mii/nsgphy.c optional miibus | nsgphy dev/mii/nsphy.c optional miibus | nsphy dev/mii/nsphyter.c optional miibus | nsphyter dev/mii/pnaphy.c optional miibus | pnaphy dev/mii/qsphy.c optional miibus | qsphy dev/mii/rdcphy.c optional miibus | rdcphy dev/mii/rgephy.c optional miibus | rgephy dev/mii/rlphy.c optional miibus | rlphy dev/mii/rlswitch.c optional rlswitch # XXX rue only? dev/mii/ruephy.c optional miibus | ruephy dev/mii/smcphy.c optional miibus | smcphy dev/mii/tdkphy.c optional miibus | tdkphy dev/mii/tlphy.c optional miibus | tlphy dev/mii/truephy.c optional miibus | truephy dev/mii/ukphy.c optional miibus | mii dev/mii/ukphy_subr.c optional miibus | mii dev/mii/xmphy.c optional miibus | xmphy dev/mk48txx/mk48txx.c optional mk48txx dev/mlx/mlx.c optional mlx dev/mlx/mlx_disk.c optional mlx dev/mlx/mlx_pci.c optional mlx pci dev/mly/mly.c optional mly dev/mmc/mmc.c optional mmc dev/mmc/mmcbr_if.m standard dev/mmc/mmcbus_if.m standard dev/mmc/mmcsd.c optional mmcsd dev/mn/if_mn.c optional mn pci dev/mps/mps.c optional mps dev/mps/mps_pci.c optional mps pci dev/mps/mps_sas.c optional mps dev/mps/mps_table.c optional mps dev/mps/mps_user.c optional mps dev/mpt/mpt.c optional mpt dev/mpt/mpt_cam.c optional mpt dev/mpt/mpt_debug.c optional mpt dev/mpt/mpt_pci.c optional mpt pci dev/mpt/mpt_raid.c optional mpt dev/mpt/mpt_user.c optional mpt dev/msk/if_msk.c optional msk inet dev/mvs/mvs.c optional mvs dev/mvs/mvs_if.m optional mvs dev/mvs/mvs_pci.c optional mvs pci dev/mwl/if_mwl.c optional mwl dev/mwl/if_mwl_pci.c optional mwl pci dev/mwl/mwlhal.c optional mwl mwlfw.c optional mwlfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk mw88W8363.fw:mw88W8363fw mwlboot.fw:mwlboot -mmwl -c${.TARGET}" \ no-implicit-rule before-depend local \ clean "mwlfw.c" mw88W8363.fwo optional mwlfw \ dependency "mw88W8363.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} mw88W8363.fw" \ no-implicit-rule \ clean "mw88W8363.fwo" mw88W8363.fw optional mwlfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/mwl/mw88W8363.fw.uu" \ no-obj no-implicit-rule \ clean "mw88W8363.fw" mwlboot.fwo optional mwlfw \ dependency "mwlboot.fw" \ compile-with "${LD} -b binary -d -warn-common -r -d -o ${.TARGET} mwlboot.fw" \ no-implicit-rule \ clean "mwlboot.fwo" mwlboot.fw optional mwlfw \ dependency ".PHONY" \ compile-with "uudecode -o ${.TARGET} $S/contrib/dev/mwl/mwlboot.fw.uu" \ no-obj no-implicit-rule \ clean "mwlboot.fw" dev/mxge/if_mxge.c optional mxge pci dev/mxge/mxge_lro.c optional mxge pci dev/mxge/mxge_eth_z8e.c optional mxge pci dev/mxge/mxge_ethp_z8e.c optional mxge pci dev/mxge/mxge_rss_eth_z8e.c optional mxge pci dev/mxge/mxge_rss_ethp_z8e.c optional mxge pci dev/my/if_my.c optional my dev/ncv/ncr53c500.c optional ncv dev/ncv/ncr53c500_pccard.c optional ncv pccard dev/nge/if_nge.c optional nge dev/nxge/if_nxge.c optional nxge dev/nxge/xgehal/xgehal-device.c optional nxge dev/nxge/xgehal/xgehal-mm.c optional nxge dev/nxge/xgehal/xge-queue.c optional nxge dev/nxge/xgehal/xgehal-driver.c optional nxge dev/nxge/xgehal/xgehal-ring.c optional nxge dev/nxge/xgehal/xgehal-channel.c optional nxge dev/nxge/xgehal/xgehal-fifo.c optional nxge dev/nxge/xgehal/xgehal-stats.c optional nxge dev/nxge/xgehal/xgehal-config.c optional nxge dev/nxge/xgehal/xgehal-mgmt.c optional nxge dev/nmdm/nmdm.c optional nmdm dev/nsp/nsp.c optional nsp dev/nsp/nsp_pccard.c optional nsp pccard dev/null/null.c standard dev/patm/if_patm.c optional patm pci dev/patm/if_patm_attach.c optional patm pci dev/patm/if_patm_intr.c optional patm pci dev/patm/if_patm_ioctl.c optional patm pci dev/patm/if_patm_rtables.c optional patm pci dev/patm/if_patm_rx.c optional patm pci dev/patm/if_patm_tx.c optional patm pci dev/pbio/pbio.c optional pbio isa dev/pccard/card_if.m standard dev/pccard/pccard.c optional pccard dev/pccard/pccard_cis.c optional pccard dev/pccard/pccard_cis_quirks.c optional pccard dev/pccard/pccard_device.c optional pccard dev/pccard/power_if.m standard dev/pccbb/pccbb.c optional cbb dev/pccbb/pccbb_isa.c optional cbb isa dev/pccbb/pccbb_pci.c optional cbb pci dev/pcf/pcf.c optional pcf dev/pci/eisa_pci.c optional pci eisa dev/pci/fixup_pci.c optional pci dev/pci/hostb_pci.c optional pci dev/pci/ignore_pci.c optional pci dev/pci/isa_pci.c optional pci isa dev/pci/pci.c optional pci dev/pci/pci_if.m standard dev/pci/pci_pci.c optional pci dev/pci/pci_user.c optional pci dev/pci/pcib_if.m standard dev/pci/vga_pci.c optional pci dev/pcn/if_pcn.c optional pcn pci dev/pdq/if_fea.c optional fea eisa dev/pdq/if_fpa.c optional fpa pci dev/pdq/pdq.c optional nowerror fea eisa | fpa pci dev/pdq/pdq_ifsubr.c optional nowerror fea eisa | fpa pci dev/ppbus/if_plip.c optional plip dev/ppbus/immio.c optional vpo dev/ppbus/lpbb.c optional lpbb dev/ppbus/lpt.c optional lpt dev/ppbus/pcfclock.c optional pcfclock dev/ppbus/ppb_1284.c optional ppbus dev/ppbus/ppb_base.c optional ppbus dev/ppbus/ppb_msq.c optional ppbus dev/ppbus/ppbconf.c optional ppbus dev/ppbus/ppbus_if.m optional ppbus dev/ppbus/ppi.c optional ppi dev/ppbus/pps.c optional pps dev/ppbus/vpo.c optional vpo dev/ppbus/vpoio.c optional vpo dev/ppc/ppc.c optional ppc dev/ppc/ppc_acpi.c optional ppc acpi dev/ppc/ppc_isa.c optional ppc isa dev/ppc/ppc_pci.c optional ppc pci dev/ppc/ppc_puc.c optional ppc puc dev/pst/pst-iop.c optional pst dev/pst/pst-pci.c optional pst pci dev/pst/pst-raid.c optional pst dev/puc/puc.c optional puc dev/puc/puc_cfg.c optional puc dev/puc/puc_pccard.c optional puc pccard dev/puc/puc_pci.c optional puc pci dev/puc/pucdata.c optional puc pci dev/quicc/quicc_core.c optional quicc 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 "rt2561fw.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 "rt2561sfw.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 "rt2661fw.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 "rt2860fw.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 dev/random/randomdev.c optional random dev/random/randomdev_soft.c optional random dev/random/yarrow.c optional random dev/rc/rc.c optional rc dev/re/if_re.c optional re dev/rndtest/rndtest.c optional rndtest dev/rp/rp.c optional rp dev/rp/rp_isa.c optional rp isa dev/rp/rp_pci.c optional rp pci dev/safe/safe.c optional safe dev/scc/scc_if.m optional scc dev/scc/scc_bfe_ebus.c optional scc ebus dev/scc/scc_bfe_quicc.c optional scc quicc dev/scc/scc_bfe_sbus.c optional scc fhc | scc sbus dev/scc/scc_core.c optional scc dev/scc/scc_dev_quicc.c optional scc quicc dev/scc/scc_dev_sab82532.c optional scc dev/scc/scc_dev_z8530.c optional scc dev/scd/scd.c optional scd isa dev/scd/scd_isa.c optional scd isa dev/sdhci/sdhci.c optional sdhci pci dev/sf/if_sf.c optional sf pci dev/sge/if_sge.c optional sge pci dev/si/si.c optional si dev/si/si2_z280.c optional si dev/si/si3_t225.c optional si dev/si/si_eisa.c optional si eisa dev/si/si_isa.c optional si isa dev/si/si_pci.c optional si pci dev/siba/siba_bwn.c optional siba_bwn pci dev/siba/siba_core.c optional siba_bwn pci dev/siis/siis.c optional siis pci dev/sis/if_sis.c optional sis pci dev/sk/if_sk.c optional sk pci inet dev/smbus/smb.c optional smb dev/smbus/smbconf.c optional smbus dev/smbus/smbus.c optional smbus dev/smbus/smbus_if.m optional smbus dev/smc/if_smc.c optional smc dev/sn/if_sn.c optional sn dev/sn/if_sn_isa.c optional sn isa dev/sn/if_sn_pccard.c optional sn pccard dev/snp/snp.c optional snp dev/sound/clone.c optional sound dev/sound/unit.c optional sound dev/sound/isa/ad1816.c optional snd_ad1816 isa dev/sound/isa/ess.c optional snd_ess isa dev/sound/isa/gusc.c optional snd_gusc isa dev/sound/isa/mss.c optional snd_mss isa dev/sound/isa/sb16.c optional snd_sb16 isa dev/sound/isa/sb8.c optional snd_sb8 isa dev/sound/isa/sbc.c optional snd_sbc isa dev/sound/isa/sndbuf_dma.c optional sound isa dev/sound/pci/als4000.c optional snd_als4000 pci dev/sound/pci/atiixp.c optional snd_atiixp pci dev/sound/pci/cmi.c optional snd_cmi pci dev/sound/pci/cs4281.c optional snd_cs4281 pci dev/sound/pci/csa.c optional snd_csa pci \ warning "kernel contains GPL contaminated csaimg.h header" dev/sound/pci/csapcm.c optional snd_csa pci dev/sound/pci/ds1.c optional snd_ds1 pci 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/envy24.c optional snd_envy24 pci dev/sound/pci/envy24ht.c optional snd_envy24ht pci 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 dev/sound/pci/maestro.c optional snd_maestro pci dev/sound/pci/maestro3.c optional snd_maestro3 pci \ warning "kernel contains GPL contaminated maestro3 headers" dev/sound/pci/neomagic.c optional snd_neomagic pci dev/sound/pci/solo.c optional snd_solo pci dev/sound/pci/spicds.c optional snd_spicds pci dev/sound/pci/t4dwave.c optional snd_t4dwave pci dev/sound/pci/via8233.c optional snd_via8233 pci dev/sound/pci/via82c686.c optional snd_via82c686 pci dev/sound/pci/vibes.c optional snd_vibes pci dev/sound/pci/hda/hdac.c optional snd_hda pci dev/sound/pcm/ac97.c optional sound dev/sound/pcm/ac97_if.m optional sound dev/sound/pcm/ac97_patch.c optional sound dev/sound/pcm/buffer.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/channel.c optional sound dev/sound/pcm/channel_if.m optional sound dev/sound/pcm/dsp.c optional sound dev/sound/pcm/feeder.c optional sound dev/sound/pcm/feeder_chain.c optional sound dev/sound/pcm/feeder_eq.c optional sound \ dependency "feeder_eq_gen.h" \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_if.m optional sound dev/sound/pcm/feeder_format.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_matrix.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_mixer.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_rate.c optional sound \ dependency "feeder_rate_gen.h" \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/feeder_volume.c optional sound \ dependency "snd_fxdiv_gen.h" dev/sound/pcm/mixer.c optional sound dev/sound/pcm/mixer_if.m optional sound dev/sound/pcm/sndstat.c optional sound dev/sound/pcm/sound.c optional sound dev/sound/pcm/vchan.c optional sound dev/sound/usb/uaudio.c optional snd_uaudio usb dev/sound/usb/uaudio_pcm.c optional snd_uaudio usb dev/sound/midi/midi.c optional sound dev/sound/midi/mpu401.c optional sound dev/sound/midi/mpu_if.m optional sound dev/sound/midi/mpufoi_if.m optional sound dev/sound/midi/sequencer.c optional sound dev/sound/midi/synth_if.m optional sound dev/spibus/spibus.c optional spibus \ dependency "spibus_if.h" dev/spibus/spibus_if.m optional spibus dev/ste/if_ste.c optional ste pci dev/stg/tmc18c30.c optional stg dev/stg/tmc18c30_isa.c optional stg isa dev/stg/tmc18c30_pccard.c optional stg pccard dev/stg/tmc18c30_pci.c optional stg pci dev/stg/tmc18c30_subr.c optional stg dev/stge/if_stge.c optional stge dev/streams/streams.c optional streams dev/sym/sym_hipd.c optional sym \ dependency "$S/dev/sym/sym_{conf,defs}.h" dev/syscons/blank/blank_saver.c optional blank_saver dev/syscons/daemon/daemon_saver.c optional daemon_saver dev/syscons/dragon/dragon_saver.c optional dragon_saver dev/syscons/fade/fade_saver.c optional fade_saver dev/syscons/fire/fire_saver.c optional fire_saver dev/syscons/green/green_saver.c optional green_saver dev/syscons/logo/logo.c optional logo_saver dev/syscons/logo/logo_saver.c optional logo_saver dev/syscons/rain/rain_saver.c optional rain_saver dev/syscons/schistory.c optional sc dev/syscons/scmouse.c optional sc dev/syscons/scterm.c optional sc dev/syscons/scvidctl.c optional sc dev/syscons/snake/snake_saver.c optional snake_saver dev/syscons/star/star_saver.c optional star_saver dev/syscons/syscons.c optional sc dev/syscons/sysmouse.c optional sc dev/syscons/warp/warp_saver.c optional warp_saver dev/tdfx/tdfx_linux.c optional tdfx_linux tdfx compat_linux dev/tdfx/tdfx_pci.c optional tdfx pci dev/ti/if_ti.c optional ti pci dev/tl/if_tl.c optional tl pci dev/trm/trm.c optional trm dev/twa/tw_cl_init.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_intr.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_io.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_cl_misc.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_osl_cam.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twa/tw_osl_freebsd.c optional twa \ compile-with "${NORMAL_C} -I$S/dev/twa" dev/twe/twe.c optional twe dev/twe/twe_freebsd.c optional twe +dev/tws/tws.c optional tws +dev/tws/tws_cam.c optional tws +dev/tws/tws_hdm.c optional tws +dev/tws/tws_services.c optional tws +dev/tws/tws_user.c optional tws dev/tx/if_tx.c optional tx dev/txp/if_txp.c optional txp inet dev/uart/uart_bus_acpi.c optional uart acpi #dev/uart/uart_bus_cbus.c optional uart cbus dev/uart/uart_bus_ebus.c optional uart ebus dev/uart/uart_bus_isa.c optional uart isa dev/uart/uart_bus_pccard.c optional uart pccard dev/uart/uart_bus_pci.c optional uart pci dev/uart/uart_bus_puc.c optional uart puc dev/uart/uart_bus_scc.c optional uart scc dev/uart/uart_core.c optional uart dev/uart/uart_dbg.c optional uart gdb dev/uart/uart_dev_ns8250.c optional uart uart_ns8250 dev/uart/uart_dev_quicc.c optional uart quicc dev/uart/uart_dev_sab82532.c optional uart uart_sab82532 dev/uart/uart_dev_sab82532.c optional uart scc dev/uart/uart_dev_z8530.c optional uart uart_z8530 dev/uart/uart_dev_z8530.c optional uart scc dev/uart/uart_if.m optional uart dev/uart/uart_subr.c optional uart dev/uart/uart_tty.c optional uart dev/ubsec/ubsec.c optional ubsec # # USB controller drivers # dev/usb/controller/at91dci.c optional at91dci dev/usb/controller/at91dci_atmelarm.c optional at91dci at91rm9200 dev/usb/controller/musb_otg.c optional musb dev/usb/controller/musb_otg_atmelarm.c optional musb at91rm9200 dev/usb/controller/ehci.c optional ehci dev/usb/controller/ehci_pci.c optional ehci pci dev/usb/controller/ohci.c optional ohci dev/usb/controller/ohci_atmelarm.c optional ohci at91rm9200 dev/usb/controller/ohci_pci.c optional ohci pci dev/usb/controller/uhci.c optional uhci dev/usb/controller/uhci_pci.c optional uhci pci dev/usb/controller/xhci.c optional xhci dev/usb/controller/xhci_pci.c optional xhci pci dev/usb/controller/uss820dci.c optional uss820dci dev/usb/controller/uss820dci_atmelarm.c optional uss820dci at91rm9200 dev/usb/controller/usb_controller.c optional usb # # USB storage drivers # dev/usb/storage/umass.c optional umass dev/usb/storage/urio.c optional urio dev/usb/storage/ustorage_fs.c optional usfs # # USB core # dev/usb/usb_busdma.c optional usb dev/usb/usb_compat_linux.c optional usb dev/usb/usb_core.c optional usb dev/usb/usb_debug.c optional usb dev/usb/usb_dev.c optional usb dev/usb/usb_device.c optional usb dev/usb/usb_dynamic.c optional usb dev/usb/usb_error.c optional usb dev/usb/usb_generic.c optional usb dev/usb/usb_handle_request.c optional usb dev/usb/usb_hid.c optional usb dev/usb/usb_hub.c optional usb dev/usb/usb_if.m optional usb dev/usb/usb_lookup.c optional usb dev/usb/usb_mbuf.c optional usb dev/usb/usb_msctest.c optional usb dev/usb/usb_parse.c optional usb dev/usb/usb_pf.c optional usb dev/usb/usb_process.c optional usb dev/usb/usb_request.c optional usb dev/usb/usb_transfer.c optional usb dev/usb/usb_util.c optional usb # # USB network drivers # dev/usb/net/if_aue.c optional aue dev/usb/net/if_axe.c optional axe dev/usb/net/if_cdce.c optional cdce dev/usb/net/if_cue.c optional cue dev/usb/net/if_ipheth.c optional ipheth dev/usb/net/if_kue.c optional kue dev/usb/net/if_rue.c optional rue dev/usb/net/if_udav.c optional udav dev/usb/net/usb_ethernet.c optional aue | axe | cdce | cue | kue | rue | \ udav dev/usb/net/uhso.c optional uhso # # USB WLAN drivers # dev/usb/wlan/if_rum.c optional rum dev/usb/wlan/if_run.c optional run dev/usb/wlan/if_uath.c optional uath dev/usb/wlan/if_upgt.c optional upgt dev/usb/wlan/if_ural.c optional ural dev/usb/wlan/if_urtw.c optional urtw dev/usb/wlan/if_zyd.c optional zyd # # USB serial and parallel port drivers # dev/usb/serial/u3g.c optional u3g dev/usb/serial/uark.c optional uark dev/usb/serial/ubsa.c optional ubsa dev/usb/serial/ubser.c optional ubser dev/usb/serial/uchcom.c optional uchcom dev/usb/serial/ucycom.c optional ucycom dev/usb/serial/ufoma.c optional ufoma dev/usb/serial/uftdi.c optional uftdi dev/usb/serial/ugensa.c optional ugensa dev/usb/serial/uipaq.c optional uipaq dev/usb/serial/ulpt.c optional ulpt dev/usb/serial/umcs.c optional umcs dev/usb/serial/umct.c optional umct dev/usb/serial/umodem.c optional umodem dev/usb/serial/umoscom.c optional umoscom dev/usb/serial/uplcom.c optional uplcom dev/usb/serial/uslcom.c optional uslcom dev/usb/serial/uvisor.c optional uvisor dev/usb/serial/uvscom.c optional uvscom dev/usb/serial/usb_serial.c optional ucom | u3g | uark | ubsa | ubser | \ uchcom | ucycom | ufoma | uftdi | \ ugensa | uipaq | umcs | umct | \ umodem | umoscom | uplcom | uslcom | \ uvisor | uvscom # # USB misc drivers # dev/usb/misc/ufm.c optional ufm dev/usb/misc/udbp.c optional udbp # # USB input drivers # dev/usb/input/atp.c optional atp dev/usb/input/uep.c optional uep dev/usb/input/uhid.c optional uhid dev/usb/input/ukbd.c optional ukbd dev/usb/input/ums.c optional ums # # USB quirks # dev/usb/quirk/usb_quirk.c optional usb # # USB templates # dev/usb/template/usb_template.c optional usb_template dev/usb/template/usb_template_audio.c optional usb_template dev/usb/template/usb_template_cdce.c optional usb_template dev/usb/template/usb_template_kbd.c optional usb_template dev/usb/template/usb_template_modem.c optional usb_template dev/usb/template/usb_template_mouse.c optional usb_template dev/usb/template/usb_template_msc.c optional usb_template dev/usb/template/usb_template_mtp.c optional usb_template # # USB END # dev/utopia/idtphy.c optional utopia dev/utopia/suni.c optional utopia dev/utopia/utopia.c optional utopia dev/vge/if_vge.c optional vge dev/vkbd/vkbd.c optional vkbd dev/vr/if_vr.c optional vr pci dev/vte/if_vte.c optional vte pci dev/vx/if_vx.c optional vx dev/vx/if_vx_eisa.c optional vx eisa dev/vx/if_vx_pci.c optional vx pci dev/watchdog/watchdog.c standard dev/wb/if_wb.c optional wb pci dev/wds/wd7000.c optional wds isa dev/wi/if_wi.c optional wi 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 -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 "wpifw.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 dev/xl/if_xl.c optional xl pci fs/coda/coda_fbsd.c optional vcoda fs/coda/coda_psdev.c optional vcoda fs/coda/coda_subr.c optional vcoda fs/coda/coda_venus.c optional vcoda fs/coda/coda_vfsops.c optional vcoda fs/coda/coda_vnops.c optional vcoda fs/deadfs/dead_vnops.c standard fs/devfs/devfs_devs.c standard fs/devfs/devfs_rule.c standard fs/devfs/devfs_vfsops.c standard fs/devfs/devfs_vnops.c standard fs/fdescfs/fdesc_vfsops.c optional fdescfs fs/fdescfs/fdesc_vnops.c optional fdescfs fs/fifofs/fifo_vnops.c standard fs/hpfs/hpfs_alsubr.c optional hpfs fs/hpfs/hpfs_lookup.c optional hpfs fs/hpfs/hpfs_subr.c optional hpfs fs/hpfs/hpfs_vfsops.c optional hpfs fs/hpfs/hpfs_vnops.c optional hpfs fs/msdosfs/msdosfs_conv.c optional msdosfs fs/msdosfs/msdosfs_denode.c optional msdosfs fs/msdosfs/msdosfs_fat.c optional msdosfs fs/msdosfs/msdosfs_fileno.c optional msdosfs fs/msdosfs/msdosfs_iconv.c optional msdosfs_iconv fs/msdosfs/msdosfs_lookup.c optional msdosfs fs/msdosfs/msdosfs_vfsops.c optional msdosfs fs/msdosfs/msdosfs_vnops.c optional msdosfs fs/nfs/nfs_commonkrpc.c optional nfscl | nfsd fs/nfs/nfs_commonsubs.c optional nfscl | nfsd fs/nfs/nfs_commonport.c optional nfscl | nfsd fs/nfs/nfs_commonacl.c optional nfscl | nfsd fs/nfsclient/nfs_clcomsubs.c optional nfscl fs/nfsclient/nfs_clsubs.c optional nfscl fs/nfsclient/nfs_clstate.c optional nfscl fs/nfsclient/nfs_clkrpc.c optional nfscl fs/nfsclient/nfs_clrpcops.c optional nfscl fs/nfsclient/nfs_clvnops.c optional nfscl fs/nfsclient/nfs_clnode.c optional nfscl fs/nfsclient/nfs_clvfsops.c optional nfscl fs/nfsclient/nfs_clport.c optional nfscl fs/nfsclient/nfs_clbio.c optional nfscl fs/nfsclient/nfs_clnfsiod.c optional nfscl fs/nfsserver/nfs_nfsdsocket.c optional nfsd inet fs/nfsserver/nfs_nfsdsubs.c optional nfsd inet fs/nfsserver/nfs_nfsdstate.c optional nfsd inet fs/nfsserver/nfs_nfsdkrpc.c optional nfsd inet fs/nfsserver/nfs_nfsdserv.c optional nfsd inet fs/nfsserver/nfs_nfsdport.c optional nfsd inet fs/nfsserver/nfs_nfsdcache.c optional nfsd inet fs/ntfs/ntfs_compr.c optional ntfs fs/ntfs/ntfs_iconv.c optional ntfs_iconv fs/ntfs/ntfs_ihash.c optional ntfs fs/ntfs/ntfs_subr.c optional ntfs fs/ntfs/ntfs_vfsops.c optional ntfs fs/ntfs/ntfs_vnops.c optional ntfs fs/nullfs/null_subr.c optional nullfs fs/nullfs/null_vfsops.c optional nullfs fs/nullfs/null_vnops.c optional nullfs fs/nwfs/nwfs_io.c optional nwfs fs/nwfs/nwfs_ioctl.c optional nwfs fs/nwfs/nwfs_node.c optional nwfs fs/nwfs/nwfs_subr.c optional nwfs fs/nwfs/nwfs_vfsops.c optional nwfs fs/nwfs/nwfs_vnops.c optional nwfs fs/portalfs/portal_vfsops.c optional portalfs fs/portalfs/portal_vnops.c optional portalfs fs/procfs/procfs.c optional procfs fs/procfs/procfs_ctl.c optional procfs fs/procfs/procfs_dbregs.c optional procfs fs/procfs/procfs_fpregs.c optional procfs fs/procfs/procfs_ioctl.c optional procfs fs/procfs/procfs_map.c optional procfs fs/procfs/procfs_mem.c optional procfs fs/procfs/procfs_note.c optional procfs fs/procfs/procfs_osrel.c optional procfs fs/procfs/procfs_regs.c optional procfs fs/procfs/procfs_rlimit.c optional procfs fs/procfs/procfs_status.c optional procfs fs/procfs/procfs_type.c optional procfs fs/pseudofs/pseudofs.c optional pseudofs fs/pseudofs/pseudofs_fileno.c optional pseudofs fs/pseudofs/pseudofs_vncache.c optional pseudofs fs/pseudofs/pseudofs_vnops.c optional pseudofs fs/smbfs/smbfs_io.c optional smbfs fs/smbfs/smbfs_node.c optional smbfs fs/smbfs/smbfs_smb.c optional smbfs fs/smbfs/smbfs_subr.c optional smbfs fs/smbfs/smbfs_vfsops.c optional smbfs fs/smbfs/smbfs_vnops.c optional smbfs fs/udf/osta.c optional udf fs/udf/udf_iconv.c optional udf_iconv fs/udf/udf_vfsops.c optional udf fs/udf/udf_vnops.c optional udf fs/unionfs/union_subr.c optional unionfs fs/unionfs/union_vfsops.c optional unionfs fs/unionfs/union_vnops.c optional unionfs fs/tmpfs/tmpfs_vnops.c optional tmpfs fs/tmpfs/tmpfs_fifoops.c optional tmpfs fs/tmpfs/tmpfs_vfsops.c optional tmpfs fs/tmpfs/tmpfs_subr.c optional tmpfs gdb/gdb_cons.c optional gdb gdb/gdb_main.c optional gdb gdb/gdb_packet.c optional gdb geom/bde/g_bde.c optional geom_bde geom/bde/g_bde_crypt.c optional geom_bde geom/bde/g_bde_lock.c optional geom_bde geom/bde/g_bde_work.c optional geom_bde geom/cache/g_cache.c optional geom_cache geom/concat/g_concat.c optional geom_concat geom/eli/g_eli.c optional geom_eli geom/eli/g_eli_crypto.c optional geom_eli geom/eli/g_eli_ctl.c optional geom_eli geom/eli/g_eli_integrity.c optional geom_eli geom/eli/g_eli_key.c optional geom_eli geom/eli/g_eli_privacy.c optional geom_eli geom/eli/pkcs5v2.c optional geom_eli geom/gate/g_gate.c optional geom_gate geom/geom_aes.c optional geom_aes geom/geom_bsd.c optional geom_bsd geom/geom_bsd_enc.c optional geom_bsd geom/geom_ccd.c optional ccd | geom_ccd geom/geom_ctl.c standard geom/geom_dev.c standard geom/geom_disk.c standard geom/geom_dump.c standard geom/geom_event.c standard geom/geom_fox.c optional geom_fox geom/geom_io.c standard geom/geom_kern.c standard geom/geom_mbr.c optional geom_mbr geom/geom_mbr_enc.c optional geom_mbr geom/geom_pc98.c optional geom_pc98 geom/geom_pc98_enc.c optional geom_pc98 geom/geom_redboot.c optional geom_redboot geom/geom_slice.c standard geom/geom_subr.c standard geom/geom_sunlabel.c optional geom_sunlabel geom/geom_sunlabel_enc.c optional geom_sunlabel geom/geom_vfs.c standard geom/geom_vol_ffs.c optional geom_vol geom/journal/g_journal.c optional geom_journal geom/journal/g_journal_ufs.c optional geom_journal geom/label/g_label.c optional geom_label geom/label/g_label_ext2fs.c optional geom_label geom/label/g_label_iso9660.c optional geom_label geom/label/g_label_msdosfs.c optional geom_label geom/label/g_label_ntfs.c optional geom_label geom/label/g_label_reiserfs.c optional geom_label geom/label/g_label_ufs.c optional geom_label geom/label/g_label_gpt.c optional geom_label geom/linux_lvm/g_linux_lvm.c optional geom_linux_lvm geom/mirror/g_mirror.c optional geom_mirror geom/mirror/g_mirror_ctl.c optional geom_mirror geom/multipath/g_multipath.c optional geom_multipath geom/nop/g_nop.c optional geom_nop geom/part/g_part.c standard geom/part/g_part_if.m standard geom/part/g_part_apm.c optional geom_part_apm geom/part/g_part_bsd.c optional geom_part_bsd geom/part/g_part_ebr.c optional geom_part_ebr geom/part/g_part_gpt.c optional geom_part_gpt geom/part/g_part_mbr.c optional geom_part_mbr geom/part/g_part_pc98.c optional geom_part_pc98 geom/part/g_part_vtoc8.c optional geom_part_vtoc8 geom/raid/g_raid.c optional geom_raid geom/raid/g_raid_ctl.c optional geom_raid geom/raid/g_raid_md_if.m optional geom_raid geom/raid/g_raid_tr_if.m optional geom_raid geom/raid/md_intel.c optional geom_raid geom/raid/md_jmicron.c optional geom_raid geom/raid/md_nvidia.c optional geom_raid geom/raid/md_promise.c optional geom_raid geom/raid/md_sii.c optional geom_raid geom/raid/tr_concat.c optional geom_raid geom/raid/tr_raid0.c optional geom_raid geom/raid/tr_raid1.c optional geom_raid geom/raid/tr_raid1e.c optional geom_raid geom/raid3/g_raid3.c optional geom_raid3 geom/raid3/g_raid3_ctl.c optional geom_raid3 geom/shsec/g_shsec.c optional geom_shsec geom/stripe/g_stripe.c optional geom_stripe geom/uzip/g_uzip.c optional geom_uzip geom/virstor/binstream.c optional geom_virstor geom/virstor/g_virstor.c optional geom_virstor geom/virstor/g_virstor_md.c optional geom_virstor geom/zero/g_zero.c optional geom_zero gnu/fs/ext2fs/ext2_alloc.c optional ext2fs \ warning "kernel contains GPL contaminated ext2fs filesystem" gnu/fs/ext2fs/ext2_balloc.c optional ext2fs gnu/fs/ext2fs/ext2_bmap.c optional ext2fs gnu/fs/ext2fs/ext2_inode.c optional ext2fs gnu/fs/ext2fs/ext2_inode_cnv.c optional ext2fs gnu/fs/ext2fs/ext2_linux_balloc.c optional ext2fs gnu/fs/ext2fs/ext2_linux_ialloc.c optional ext2fs gnu/fs/ext2fs/ext2_lookup.c optional ext2fs gnu/fs/ext2fs/ext2_subr.c optional ext2fs gnu/fs/ext2fs/ext2_vfsops.c optional ext2fs gnu/fs/ext2fs/ext2_vnops.c optional ext2fs gnu/fs/reiserfs/reiserfs_hashes.c optional reiserfs \ warning "kernel contains GPL contaminated ReiserFS filesystem" gnu/fs/reiserfs/reiserfs_inode.c optional reiserfs gnu/fs/reiserfs/reiserfs_item_ops.c optional reiserfs gnu/fs/reiserfs/reiserfs_namei.c optional reiserfs gnu/fs/reiserfs/reiserfs_prints.c optional reiserfs gnu/fs/reiserfs/reiserfs_stree.c optional reiserfs gnu/fs/reiserfs/reiserfs_vfsops.c optional reiserfs gnu/fs/reiserfs/reiserfs_vnops.c optional reiserfs # isa/isa_if.m standard isa/isa_common.c optional isa isa/isahint.c optional isa isa/orm.c optional isa isa/pnp.c optional isa isapnp isa/pnpparse.c optional isa isapnp fs/cd9660/cd9660_bmap.c optional cd9660 fs/cd9660/cd9660_lookup.c optional cd9660 fs/cd9660/cd9660_node.c optional cd9660 fs/cd9660/cd9660_rrip.c optional cd9660 fs/cd9660/cd9660_util.c optional cd9660 fs/cd9660/cd9660_vfsops.c optional cd9660 fs/cd9660/cd9660_vnops.c optional cd9660 fs/cd9660/cd9660_iconv.c optional cd9660_iconv kern/bus_if.m standard kern/clock_if.m standard kern/cpufreq_if.m standard kern/device_if.m standard kern/imgact_elf.c standard kern/imgact_shell.c standard kern/inflate.c optional gzip kern/init_main.c standard kern/init_sysent.c standard kern/ksched.c optional _kposix_priority_scheduling kern/kern_acct.c standard kern/kern_alq.c optional alq kern/kern_clock.c standard kern/kern_condvar.c standard kern/kern_conf.c standard kern/kern_cons.c standard kern/kern_cpu.c standard kern/kern_cpuset.c standard kern/kern_context.c standard kern/kern_descrip.c standard kern/kern_dtrace.c optional kdtrace_hooks kern/kern_environment.c standard kern/kern_event.c standard kern/kern_exec.c standard kern/kern_exit.c standard kern/kern_fail.c standard kern/kern_fork.c standard kern/kern_hhook.c standard kern/kern_idle.c standard kern/kern_intr.c standard kern/kern_jail.c standard kern/kern_khelp.c standard kern/kern_kthread.c standard kern/kern_ktr.c optional ktr kern/kern_ktrace.c standard kern/kern_linker.c standard kern/kern_lock.c standard kern/kern_lockf.c standard kern/kern_lockstat.c optional kdtrace_hooks kern/kern_malloc.c standard kern/kern_mbuf.c standard kern/kern_mib.c standard kern/kern_module.c standard kern/kern_mtxpool.c standard kern/kern_mutex.c standard kern/kern_ntptime.c standard kern/kern_osd.c standard kern/kern_physio.c standard kern/kern_pmc.c standard kern/kern_poll.c optional device_polling kern/kern_priv.c standard kern/kern_proc.c standard kern/kern_prot.c standard kern/kern_resource.c standard kern/kern_rmlock.c standard kern/kern_rwlock.c standard kern/kern_sdt.c optional kdtrace_hooks kern/kern_sema.c standard kern/kern_shutdown.c standard kern/kern_sig.c standard kern/kern_subr.c standard kern/kern_switch.c standard kern/kern_sx.c standard kern/kern_synch.c standard kern/kern_syscalls.c standard kern/kern_sysctl.c standard kern/kern_tc.c standard kern/kern_thr.c standard kern/kern_thread.c standard kern/kern_time.c standard kern/kern_timeout.c standard kern/kern_umtx.c standard kern/kern_uuid.c standard kern/kern_xxx.c standard kern/link_elf.c standard kern/linker_if.m standard kern/md4c.c optional netsmb kern/md5c.c standard kern/p1003_1b.c standard kern/posix4_mib.c standard kern/sched_4bsd.c optional sched_4bsd kern/sched_ule.c optional sched_ule kern/serdev_if.m standard kern/stack_protector.c standard \ compile-with "${NORMAL_C:N-fstack-protector*}" kern/subr_acl_nfs4.c standard kern/subr_acl_posix1e.c standard kern/subr_autoconf.c standard kern/subr_blist.c standard kern/subr_bus.c standard kern/subr_bufring.c standard kern/subr_clock.c standard kern/subr_devstat.c standard kern/subr_disk.c standard kern/subr_eventhandler.c standard kern/subr_fattime.c standard kern/subr_firmware.c optional firmware kern/subr_hints.c standard kern/subr_kdb.c standard kern/subr_kobj.c standard kern/subr_lock.c standard kern/subr_log.c standard kern/subr_mbpool.c optional libmbpool kern/subr_mchain.c optional libmchain kern/subr_module.c standard kern/subr_msgbuf.c standard kern/subr_param.c standard kern/subr_pcpu.c standard kern/subr_power.c standard kern/subr_prf.c standard kern/subr_prof.c standard kern/subr_rman.c standard kern/subr_rtc.c standard kern/subr_sbuf.c standard kern/subr_scanf.c standard kern/subr_sglist.c standard kern/subr_sleepqueue.c standard kern/subr_smp.c standard kern/subr_stack.c optional ddb | stack | ktr kern/subr_taskqueue.c standard kern/subr_trap.c standard kern/subr_turnstile.c standard kern/subr_unit.c standard kern/subr_witness.c optional witness kern/sys_generic.c standard kern/sys_pipe.c standard kern/sys_process.c standard kern/sys_socket.c standard kern/syscalls.c standard kern/sysv_ipc.c standard kern/sysv_msg.c optional sysvmsg kern/sysv_sem.c optional sysvsem kern/sysv_shm.c optional sysvshm kern/tty.c standard kern/tty_compat.c optional compat_43tty kern/tty_info.c standard kern/tty_inq.c standard kern/tty_outq.c standard kern/tty_pts.c standard kern/tty_pty.c optional pty kern/tty_tty.c standard kern/tty_ttydisc.c standard kern/uipc_accf.c optional inet kern/uipc_cow.c optional zero_copy_sockets kern/uipc_debug.c optional ddb kern/uipc_domain.c standard kern/uipc_mbuf.c standard kern/uipc_mbuf2.c standard kern/uipc_mqueue.c optional p1003_1b_mqueue kern/uipc_sem.c optional p1003_1b_semaphores kern/uipc_shm.c standard kern/uipc_sockbuf.c standard kern/uipc_socket.c standard kern/uipc_syscalls.c standard kern/uipc_usrreq.c standard kern/vfs_acl.c standard kern/vfs_aio.c optional vfs_aio kern/vfs_bio.c standard kern/vfs_cache.c standard kern/vfs_cluster.c standard kern/vfs_default.c standard kern/vfs_export.c standard kern/vfs_extattr.c standard kern/vfs_hash.c standard kern/vfs_init.c standard kern/vfs_lookup.c standard kern/vfs_mount.c standard kern/vfs_subr.c standard kern/vfs_syscalls.c standard kern/vfs_vnops.c standard # # Kernel GSS-API # gssd.h optional kgssapi \ dependency "$S/kgssapi/gssd.x" \ compile-with "rpcgen -hM $S/kgssapi/gssd.x | grep -v pthread.h > gssd.h" \ no-obj no-implicit-rule before-depend local \ clean "gssd.h" gssd_xdr.c optional kgssapi \ dependency "$S/kgssapi/gssd.x gssd.h" \ compile-with "rpcgen -c $S/kgssapi/gssd.x -o gssd_xdr.c" \ no-implicit-rule before-depend local \ clean "gssd_xdr.c" gssd_clnt.c optional kgssapi \ dependency "$S/kgssapi/gssd.x gssd.h" \ compile-with "rpcgen -lM $S/kgssapi/gssd.x | grep -v string.h > gssd_clnt.c" \ no-implicit-rule before-depend local \ clean "gssd_clnt.c" kgssapi/gss_accept_sec_context.c optional kgssapi kgssapi/gss_add_oid_set_member.c optional kgssapi kgssapi/gss_acquire_cred.c optional kgssapi kgssapi/gss_canonicalize_name.c optional kgssapi kgssapi/gss_create_empty_oid_set.c optional kgssapi kgssapi/gss_delete_sec_context.c optional kgssapi kgssapi/gss_display_status.c optional kgssapi kgssapi/gss_export_name.c optional kgssapi kgssapi/gss_get_mic.c optional kgssapi kgssapi/gss_init_sec_context.c optional kgssapi kgssapi/gss_impl.c optional kgssapi kgssapi/gss_import_name.c optional kgssapi kgssapi/gss_names.c optional kgssapi kgssapi/gss_pname_to_uid.c optional kgssapi kgssapi/gss_release_buffer.c optional kgssapi kgssapi/gss_release_cred.c optional kgssapi kgssapi/gss_release_name.c optional kgssapi kgssapi/gss_release_oid_set.c optional kgssapi kgssapi/gss_set_cred_option.c optional kgssapi kgssapi/gss_test_oid_set_member.c optional kgssapi kgssapi/gss_unwrap.c optional kgssapi kgssapi/gss_verify_mic.c optional kgssapi kgssapi/gss_wrap.c optional kgssapi kgssapi/gss_wrap_size_limit.c optional kgssapi kgssapi/gssd_prot.c optional kgssapi kgssapi/krb5/krb5_mech.c optional kgssapi kgssapi/krb5/kcrypto.c optional kgssapi kgssapi/krb5/kcrypto_aes.c optional kgssapi kgssapi/krb5/kcrypto_arcfour.c optional kgssapi kgssapi/krb5/kcrypto_des.c optional kgssapi kgssapi/krb5/kcrypto_des3.c optional kgssapi kgssapi/kgss_if.m optional kgssapi kgssapi/gsstest.c optional kgssapi_debug # These files in libkern/ are those needed by all architectures. Some # of the files in libkern/ are only needed on some architectures, e.g., # libkern/divdi3.c is needed by i386 but not alpha. Also, some of these # routines may be optimized for a particular platform. In either case, # the file should be moved to conf/files. from here. # libkern/arc4random.c standard libkern/bcd.c standard libkern/bsearch.c standard libkern/crc32.c standard libkern/fnmatch.c standard libkern/gets.c standard libkern/iconv.c optional libiconv libkern/iconv_converter_if.m optional libiconv libkern/iconv_xlat.c optional libiconv libkern/iconv_xlat16.c optional libiconv libkern/index.c standard libkern/inet_aton.c standard libkern/inet_ntoa.c standard libkern/inet_ntop.c standard libkern/inet_pton.c standard libkern/mcount.c optional profiling-routine libkern/memcmp.c standard libkern/qsort.c standard libkern/qsort_r.c standard libkern/random.c standard libkern/rindex.c standard libkern/scanc.c standard libkern/skpc.c standard libkern/strcasecmp.c standard libkern/strcat.c standard libkern/strcmp.c standard libkern/strcpy.c standard libkern/strcspn.c standard libkern/strdup.c standard libkern/strlcat.c standard libkern/strlcpy.c standard libkern/strlen.c standard libkern/strncmp.c standard libkern/strncpy.c standard libkern/strsep.c standard libkern/strspn.c standard libkern/strstr.c standard libkern/strtol.c standard libkern/strtoq.c standard libkern/strtoul.c standard libkern/strtouq.c standard libkern/strvalid.c standard net/bpf.c standard net/bpf_buffer.c optional bpf net/bpf_jitter.c optional bpf_jitter net/bpf_filter.c optional bpf | netgraph_bpf net/bpf_zerocopy.c optional bpf net/bridgestp.c optional bridge | if_bridge net/flowtable.c optional flowtable inet net/ieee8023ad_lacp.c optional lagg net/if.c standard net/if_arcsubr.c optional arcnet net/if_atmsubr.c optional atm net/if_bridge.c optional bridge inet | if_bridge inet net/if_clone.c standard net/if_dead.c standard net/if_debug.c optional ddb net/if_disc.c optional disc net/if_edsc.c optional edsc net/if_ef.c optional ef net/if_enc.c optional enc ipsec inet | enc ipsec inet6 net/if_epair.c optional epair net/if_ethersubr.c optional ether \ compile-with "${NORMAL_C} -I$S/contrib/pf" net/if_faith.c optional faith net/if_fddisubr.c optional fddi net/if_fwsubr.c optional fwip net/if_gif.c optional gif | netgraph_gif net/if_gre.c optional gre inet net/if_iso88025subr.c optional token net/if_lagg.c optional lagg net/if_loop.c optional loop net/if_llatbl.c standard net/if_media.c standard net/if_mib.c standard net/if_spppfr.c optional sppp | netgraph_sppp net/if_spppsubr.c optional sppp | netgraph_sppp net/if_stf.c optional stf inet inet6 net/if_tun.c optional tun net/if_tap.c optional tap net/if_vlan.c optional vlan net/mppcc.c optional netgraph_mppc_compression net/mppcd.c optional netgraph_mppc_compression net/netisr.c standard net/pfil.c optional ether | inet net/radix.c standard net/radix_mpath.c standard net/raw_cb.c standard net/raw_usrreq.c standard net/route.c standard net/rtsock.c standard net/slcompress.c optional netgraph_vjc | sppp | \ netgraph_sppp net/vnet.c optional vimage net/zlib.c optional crypto | geom_uzip | ipsec | \ mxge | netgraph_deflate | \ ddb_ctf net80211/ieee80211.c optional wlan net80211/ieee80211_acl.c optional wlan wlan_acl net80211/ieee80211_action.c optional wlan net80211/ieee80211_ageq.c optional wlan net80211/ieee80211_adhoc.c optional wlan net80211/ieee80211_ageq.c optional wlan net80211/ieee80211_amrr.c optional wlan | wlan_amrr net80211/ieee80211_crypto.c optional wlan net80211/ieee80211_crypto_ccmp.c optional wlan wlan_ccmp net80211/ieee80211_crypto_none.c optional wlan net80211/ieee80211_crypto_tkip.c optional wlan wlan_tkip net80211/ieee80211_crypto_wep.c optional wlan wlan_wep net80211/ieee80211_ddb.c optional wlan ddb net80211/ieee80211_dfs.c optional wlan net80211/ieee80211_freebsd.c optional wlan net80211/ieee80211_hostap.c optional wlan net80211/ieee80211_ht.c optional wlan net80211/ieee80211_hwmp.c optional wlan ieee80211_support_mesh net80211/ieee80211_input.c optional wlan net80211/ieee80211_ioctl.c optional wlan net80211/ieee80211_mesh.c optional wlan ieee80211_support_mesh net80211/ieee80211_monitor.c optional wlan net80211/ieee80211_node.c optional wlan net80211/ieee80211_output.c optional wlan net80211/ieee80211_phy.c optional wlan net80211/ieee80211_power.c optional wlan net80211/ieee80211_proto.c optional wlan net80211/ieee80211_radiotap.c optional wlan net80211/ieee80211_ratectl.c optional wlan net80211/ieee80211_ratectl_none.c optional wlan net80211/ieee80211_regdomain.c optional wlan net80211/ieee80211_rssadapt.c optional wlan wlan_rssadapt net80211/ieee80211_scan.c optional wlan net80211/ieee80211_scan_sta.c optional wlan net80211/ieee80211_sta.c optional wlan net80211/ieee80211_superg.c optional wlan ieee80211_support_superg net80211/ieee80211_tdma.c optional wlan ieee80211_support_tdma net80211/ieee80211_wds.c optional wlan net80211/ieee80211_xauth.c optional wlan wlan_xauth netatalk/aarp.c optional netatalk netatalk/at_control.c optional netatalk netatalk/at_proto.c optional netatalk netatalk/at_rmx.c optional netatalk netatalk/ddp_input.c optional netatalk netatalk/ddp_output.c optional netatalk netatalk/ddp_pcb.c optional netatalk netatalk/ddp_usrreq.c optional netatalk netgraph/atm/ccatm/ng_ccatm.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/ng_atm.c optional ngatm_atm netgraph/atm/ngatmbase.c optional ngatm_atmbase \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/sscfu/ng_sscfu.c optional ngatm_sscfu \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/sscop/ng_sscop.c optional ngatm_sscop \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/atm/uni/ng_uni.c optional ngatm_uni \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" netgraph/bluetooth/common/ng_bluetooth.c optional netgraph_bluetooth netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c optional netgraph_bluetooth_bt3c netgraph/bluetooth/drivers/h4/ng_h4.c optional netgraph_bluetooth_h4 netgraph/bluetooth/drivers/ubt/ng_ubt.c optional netgraph_bluetooth_ubt usb netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c optional netgraph_bluetooth_ubtbcmfw usb netgraph/bluetooth/hci/ng_hci_cmds.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_evnt.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_main.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_misc.c optional netgraph_bluetooth_hci netgraph/bluetooth/hci/ng_hci_ulpi.c optional netgraph_bluetooth_hci netgraph/bluetooth/l2cap/ng_l2cap_cmds.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_evnt.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_llpi.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_main.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_misc.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/l2cap/ng_l2cap_ulpi.c optional netgraph_bluetooth_l2cap netgraph/bluetooth/socket/ng_btsocket.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_hci_raw.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_l2cap.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_rfcomm.c optional netgraph_bluetooth_socket netgraph/bluetooth/socket/ng_btsocket_sco.c optional netgraph_bluetooth_socket netgraph/netflow/netflow.c optional netgraph_netflow netgraph/netflow/ng_netflow.c optional netgraph_netflow netgraph/ng_UI.c optional netgraph_UI netgraph/ng_async.c optional netgraph_async netgraph/ng_atmllc.c optional netgraph_atmllc netgraph/ng_base.c optional netgraph netgraph/ng_bpf.c optional netgraph_bpf netgraph/ng_bridge.c optional netgraph_bridge netgraph/ng_car.c optional netgraph_car netgraph/ng_cisco.c optional netgraph_cisco netgraph/ng_deflate.c optional netgraph_deflate netgraph/ng_device.c optional netgraph_device netgraph/ng_echo.c optional netgraph_echo netgraph/ng_eiface.c optional netgraph_eiface netgraph/ng_ether.c optional netgraph_ether netgraph/ng_ether_echo.c optional netgraph_ether_echo netgraph/ng_fec.c optional netgraph_fec netgraph/ng_frame_relay.c optional netgraph_frame_relay netgraph/ng_gif.c optional netgraph_gif netgraph/ng_gif_demux.c optional netgraph_gif_demux netgraph/ng_hole.c optional netgraph_hole netgraph/ng_iface.c optional netgraph_iface netgraph/ng_ip_input.c optional netgraph_ip_input netgraph/ng_ipfw.c optional netgraph_ipfw inet ipfirewall netgraph/ng_ksocket.c optional netgraph_ksocket netgraph/ng_l2tp.c optional netgraph_l2tp netgraph/ng_lmi.c optional netgraph_lmi netgraph/ng_mppc.c optional netgraph_mppc_compression | \ netgraph_mppc_encryption netgraph/ng_nat.c optional netgraph_nat inet libalias netgraph/ng_one2many.c optional netgraph_one2many netgraph/ng_parse.c optional netgraph netgraph/ng_patch.c optional netgraph_patch netgraph/ng_pipe.c optional netgraph_pipe netgraph/ng_ppp.c optional netgraph_ppp netgraph/ng_pppoe.c optional netgraph_pppoe netgraph/ng_pptpgre.c optional netgraph_pptpgre netgraph/ng_pred1.c optional netgraph_pred1 netgraph/ng_rfc1490.c optional netgraph_rfc1490 netgraph/ng_socket.c optional netgraph_socket netgraph/ng_split.c optional netgraph_split netgraph/ng_sppp.c optional netgraph_sppp netgraph/ng_tag.c optional netgraph_tag netgraph/ng_tcpmss.c optional netgraph_tcpmss netgraph/ng_tee.c optional netgraph_tee netgraph/ng_tty.c optional netgraph_tty netgraph/ng_vjc.c optional netgraph_vjc netinet/accf_data.c optional accept_filter_data inet netinet/accf_dns.c optional accept_filter_dns inet netinet/accf_http.c optional accept_filter_http inet netinet/if_atm.c optional atm netinet/if_ether.c optional inet ether netinet/igmp.c optional inet netinet/in.c optional inet netinet/in_debug.c optional inet ddb netinet/ip_carp.c optional inet carp | inet6 carp netinet/in_gif.c optional gif inet | netgraph_gif inet netinet/ip_gre.c optional gre inet netinet/ip_id.c optional inet netinet/in_mcast.c optional inet netinet/in_pcb.c optional inet | inet6 netinet/in_proto.c optional inet \ compile-with "${NORMAL_C} -I$S/contrib/pf" netinet/in_rmx.c optional inet netinet/ip_divert.c optional inet ipdivert ipfirewall netinet/ipfw/dn_heap.c optional inet dummynet netinet/ipfw/dn_sched_fifo.c optional inet dummynet netinet/ipfw/dn_sched_prio.c optional inet dummynet netinet/ipfw/dn_sched_qfq.c optional inet dummynet netinet/ipfw/dn_sched_rr.c optional inet dummynet netinet/ipfw/dn_sched_wf2q.c optional inet dummynet netinet/ipfw/ip_dummynet.c optional inet dummynet netinet/ipfw/ip_dn_io.c optional inet dummynet netinet/ipfw/ip_dn_glue.c optional inet dummynet netinet/ip_ecn.c optional inet | inet6 netinet/ip_encap.c optional inet | inet6 netinet/ip_fastfwd.c optional inet netinet/ipfw/ip_fw2.c optional inet ipfirewall \ compile-with "${NORMAL_C} -I$S/contrib/pf" netinet/ipfw/ip_fw_dynamic.c optional inet ipfirewall netinet/ipfw/ip_fw_log.c optional inet ipfirewall netinet/ipfw/ip_fw_pfil.c optional inet ipfirewall netinet/ipfw/ip_fw_sockopt.c optional inet ipfirewall netinet/ipfw/ip_fw_table.c optional inet ipfirewall netinet/ipfw/ip_fw_nat.c optional inet ipfirewall_nat netinet/ip_icmp.c optional inet netinet/ip_input.c optional inet netinet/ip_ipsec.c optional inet ipsec netinet/ip_mroute.c optional mrouting inet | mrouting inet6 netinet/ip_options.c optional inet netinet/ip_output.c optional inet netinet/raw_ip.c optional inet netinet/cc/cc.c optional inet netinet/cc/cc_newreno.c optional inet netinet/sctp_asconf.c optional inet sctp netinet/sctp_auth.c optional inet sctp netinet/sctp_bsd_addr.c optional inet sctp netinet/sctp_cc_functions.c optional inet sctp netinet/sctp_crc32.c optional inet sctp netinet/sctp_indata.c optional inet sctp netinet/sctp_input.c optional inet sctp netinet/sctp_output.c optional inet sctp netinet/sctp_pcb.c optional inet sctp netinet/sctp_peeloff.c optional inet sctp netinet/sctp_sysctl.c optional inet sctp netinet/sctp_timer.c optional inet sctp netinet/sctp_usrreq.c optional inet sctp netinet/sctputil.c optional inet sctp netinet/tcp_debug.c optional tcpdebug netinet/tcp_hostcache.c optional inet netinet/tcp_input.c optional inet netinet/tcp_lro.c optional inet netinet/tcp_output.c optional inet netinet/tcp_offload.c optional inet netinet/tcp_reass.c optional inet netinet/tcp_sack.c optional inet netinet/tcp_subr.c optional inet netinet/tcp_syncache.c optional inet netinet/tcp_timer.c optional inet netinet/tcp_timewait.c optional inet netinet/tcp_usrreq.c optional inet netinet/udp_usrreq.c optional inet netinet/libalias/alias.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_db.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_mod.c optional libalias | netgraph_nat netinet/libalias/alias_proxy.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_util.c optional libalias inet | netgraph_nat inet netinet/libalias/alias_sctp.c optional libalias inet | netgraph_nat inet netinet6/dest6.c optional inet6 netinet6/frag6.c optional inet6 netinet6/icmp6.c optional inet6 netinet6/in6.c optional inet6 netinet6/in6_cksum.c optional inet6 netinet6/in6_gif.c optional gif inet6 | netgraph_gif inet6 netinet6/in6_ifattach.c optional inet6 netinet6/in6_mcast.c optional inet6 netinet6/in6_pcb.c optional inet6 netinet6/in6_proto.c optional inet6 netinet6/in6_rmx.c optional inet6 netinet6/in6_src.c optional inet6 netinet6/ip6_forward.c optional inet6 netinet6/ip6_id.c optional inet6 netinet6/ip6_input.c optional inet6 netinet6/ip6_mroute.c optional mrouting inet6 netinet6/ip6_output.c optional inet6 netinet6/ip6_ipsec.c optional inet6 ipsec netinet6/mld6.c optional inet6 netinet6/nd6.c optional inet6 netinet6/nd6_nbr.c optional inet6 netinet6/nd6_rtr.c optional inet6 netinet6/raw_ip6.c optional inet6 netinet6/route6.c optional inet6 netinet6/scope6.c optional inet6 netinet6/sctp6_usrreq.c optional inet6 sctp netinet6/udp6_usrreq.c optional inet6 netipsec/ipsec.c optional ipsec inet | ipsec inet6 netipsec/ipsec_input.c optional ipsec inet | ipsec inet6 netipsec/ipsec_mbuf.c optional ipsec inet | ipsec inet6 netipsec/ipsec_output.c optional ipsec inet | ipsec inet6 netipsec/key.c optional ipsec inet | ipsec inet6 netipsec/key_debug.c optional ipsec inet | ipsec inet6 netipsec/keysock.c optional ipsec inet | ipsec inet6 netipsec/xform_ah.c optional ipsec inet | ipsec inet6 netipsec/xform_esp.c optional ipsec inet | ipsec inet6 netipsec/xform_ipcomp.c optional ipsec inet | ipsec inet6 netipsec/xform_ipip.c optional ipsec inet | ipsec inet6 netipsec/xform_tcp.c optional ipsec inet tcp_signature | \ ipsec inet6 tcp_signature netipx/ipx.c optional ipx netipx/ipx_cksum.c optional ipx netipx/ipx_input.c optional ipx netipx/ipx_outputfl.c optional ipx netipx/ipx_pcb.c optional ipx netipx/ipx_proto.c optional ipx netipx/ipx_usrreq.c optional ipx netipx/spx_debug.c optional ipx netipx/spx_reass.c optional ipx netipx/spx_usrreq.c optional ipx netnatm/natm.c optional natm netnatm/natm_pcb.c optional natm netnatm/natm_proto.c optional natm netncp/ncp_conn.c optional ncp netncp/ncp_crypt.c optional ncp netncp/ncp_login.c optional ncp netncp/ncp_mod.c optional ncp netncp/ncp_ncp.c optional ncp netncp/ncp_nls.c optional ncp netncp/ncp_rq.c optional ncp netncp/ncp_sock.c optional ncp netncp/ncp_subr.c optional ncp netsmb/smb_conn.c optional netsmb netsmb/smb_crypt.c optional netsmb netsmb/smb_dev.c optional netsmb netsmb/smb_iod.c optional netsmb netsmb/smb_rq.c optional netsmb netsmb/smb_smb.c optional netsmb netsmb/smb_subr.c optional netsmb netsmb/smb_trantcp.c optional netsmb netsmb/smb_usr.c optional netsmb nfs/bootp_subr.c optional bootp nfsclient | bootp nfscl nfs/krpc_subr.c optional bootp nfsclient | bootp nfscl nfs/nfs_common.c optional nfsclient | nfsserver nfs/nfs_diskless.c optional nfsclient nfs_root | nfscl nfs_root nfs/nfs_lock.c optional nfsclient | nfscl | nfslockd | nfsd nfsclient/nfs_bio.c optional nfsclient nfsclient/nfs_node.c optional nfsclient nfsclient/nfs_krpc.c optional nfsclient nfsclient/nfs_subs.c optional nfsclient nfsclient/nfs_nfsiod.c optional nfsclient nfsclient/nfs_vfsops.c optional nfsclient nfsclient/nfs_vnops.c optional nfsclient nfsserver/nfs_fha.c optional nfsserver nfsserver/nfs_serv.c optional nfsserver nfsserver/nfs_srvkrpc.c optional nfsserver nfsserver/nfs_srvsubs.c optional nfsserver nfs/nfs_nfssvc.c optional nfsserver | nfscl | nfsd nlm/nlm_advlock.c optional nfslockd | nfsd nlm/nlm_prot_clnt.c optional nfslockd | nfsd nlm/nlm_prot_impl.c optional nfslockd | nfsd nlm/nlm_prot_server.c optional nfslockd | nfsd nlm/nlm_prot_svc.c optional nfslockd | nfsd nlm/nlm_prot_xdr.c optional nfslockd | nfsd nlm/sm_inter_xdr.c optional nfslockd | nfsd # crypto support opencrypto/cast.c optional crypto | ipsec opencrypto/criov.c optional crypto opencrypto/crypto.c optional crypto opencrypto/cryptodev.c optional cryptodev opencrypto/cryptodev_if.m optional crypto opencrypto/cryptosoft.c optional crypto opencrypto/deflate.c optional crypto opencrypto/rmd160.c optional crypto | ipsec opencrypto/skipjack.c optional crypto opencrypto/xform.c optional crypto pci/alpm.c optional alpm pci pci/amdpm.c optional amdpm pci | nfpm pci pci/amdsmb.c optional amdsmb pci pci/if_rl.c optional rl pci pci/intpm.c optional intpm pci pci/ncr.c optional ncr pci pci/nfsmb.c optional nfsmb pci pci/viapm.c optional viapm pci rpc/auth_none.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/auth_unix.c optional krpc | nfslockd | nfsclient | nfscl | nfsd rpc/authunix_prot.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/clnt_dg.c optional krpc | nfslockd | nfsclient | nfscl | nfsd rpc/clnt_rc.c optional krpc | nfslockd | nfsclient | nfscl | nfsd rpc/clnt_vc.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/getnetconfig.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/replay.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/rpc_callmsg.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/rpc_generic.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/rpc_prot.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/rpcb_clnt.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/rpcb_prot.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd rpc/svc.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/svc_auth.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/svc_auth_unix.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/svc_dg.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/svc_generic.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/svc_vc.c optional krpc | nfslockd | nfsserver | nfscl | nfsd rpc/rpcsec_gss/rpcsec_gss.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/rpcsec_gss_conf.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/rpcsec_gss_misc.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/rpcsec_gss_prot.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi rpc/rpcsec_gss/svc_rpcsec_gss.c optional krpc kgssapi | nfslockd kgssapi | nfscl kgssapi | nfsd kgssapi security/audit/audit.c optional audit security/audit/audit_arg.c optional audit security/audit/audit_bsm.c optional audit security/audit/audit_bsm_domain.c optional audit security/audit/audit_bsm_errno.c optional audit security/audit/audit_bsm_fcntl.c optional audit security/audit/audit_bsm_klib.c optional audit security/audit/audit_bsm_socket_type.c optional audit security/audit/audit_bsm_token.c optional audit security/audit/audit_pipe.c optional audit security/audit/audit_syscalls.c standard security/audit/audit_trigger.c optional audit security/audit/audit_worker.c optional audit security/mac/mac_atalk.c optional mac netatalk security/mac/mac_audit.c optional mac audit security/mac/mac_cred.c optional mac security/mac/mac_framework.c optional mac security/mac/mac_inet.c optional mac inet security/mac/mac_inet6.c optional mac inet6 security/mac/mac_label.c optional mac security/mac/mac_net.c optional mac security/mac/mac_pipe.c optional mac security/mac/mac_posix_sem.c optional mac security/mac/mac_posix_shm.c optional mac security/mac/mac_priv.c optional mac security/mac/mac_process.c optional mac security/mac/mac_socket.c optional mac security/mac/mac_syscalls.c standard security/mac/mac_system.c optional mac security/mac/mac_sysv_msg.c optional mac security/mac/mac_sysv_sem.c optional mac security/mac/mac_sysv_shm.c optional mac security/mac/mac_vfs.c optional mac security/mac_biba/mac_biba.c optional mac_biba security/mac_bsdextended/mac_bsdextended.c optional mac_bsdextended security/mac_bsdextended/ugidfw_system.c optional mac_bsdextended security/mac_bsdextended/ugidfw_vnode.c optional mac_bsdextended security/mac_ifoff/mac_ifoff.c optional mac_ifoff security/mac_lomac/mac_lomac.c optional mac_lomac security/mac_mls/mac_mls.c optional mac_mls security/mac_none/mac_none.c optional mac_none security/mac_partition/mac_partition.c optional mac_partition security/mac_portacl/mac_portacl.c optional mac_portacl security/mac_seeotheruids/mac_seeotheruids.c optional mac_seeotheruids security/mac_stub/mac_stub.c optional mac_stub security/mac_test/mac_test.c optional mac_test ufs/ffs/ffs_alloc.c optional ffs ufs/ffs/ffs_balloc.c optional ffs ufs/ffs/ffs_inode.c optional ffs ufs/ffs/ffs_snapshot.c optional ffs ufs/ffs/ffs_softdep.c optional ffs ufs/ffs/ffs_subr.c optional ffs ufs/ffs/ffs_tables.c optional ffs ufs/ffs/ffs_vfsops.c optional ffs ufs/ffs/ffs_vnops.c optional ffs ufs/ffs/ffs_rawread.c optional directio ufs/ufs/ufs_acl.c optional ffs ufs/ufs/ufs_bmap.c optional ffs ufs/ufs/ufs_dirhash.c optional ffs ufs/ufs/ufs_extattr.c optional ffs ufs/ufs/ufs_gjournal.c optional ffs ufs/ufs/ufs_inode.c optional ffs ufs/ufs/ufs_lookup.c optional ffs ufs/ufs/ufs_quota.c optional ffs ufs/ufs/ufs_vfsops.c optional ffs ufs/ufs/ufs_vnops.c optional ffs vm/default_pager.c standard vm/device_pager.c standard vm/phys_pager.c standard vm/redzone.c optional DEBUG_REDZONE vm/sg_pager.c standard vm/swap_pager.c standard vm/uma_core.c standard vm/uma_dbg.c standard vm/vm_contig.c standard vm/memguard.c optional DEBUG_MEMGUARD vm/vm_fault.c standard vm/vm_glue.c standard vm/vm_init.c standard vm/vm_kern.c standard vm/vm_map.c standard vm/vm_meter.c standard vm/vm_mmap.c standard vm/vm_object.c standard vm/vm_page.c standard vm/vm_pageout.c standard vm/vm_pager.c standard vm/vm_phys.c standard vm/vm_reserv.c standard vm/vm_unix.c standard vm/vm_zeroidle.c standard vm/vnode_pager.c standard xdr/xdr.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd xdr/xdr_array.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd xdr/xdr_mbuf.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd xdr/xdr_mem.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd xdr/xdr_reference.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd xdr/xdr_sizeof.c optional krpc | nfslockd | nfsclient | nfsserver | nfscl | nfsd # gnu/fs/xfs/xfs_alloc.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" \ warning "kernel contains GPL contaminated xfs filesystem" gnu/fs/xfs/xfs_alloc_btree.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_bit.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_bmap.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_bmap_btree.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_btree.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_buf_item.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_da_btree.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2_block.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2_data.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2_leaf.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2_node.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2_sf.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir2_trace.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dir_leaf.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_error.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_extfree_item.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_fsops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_ialloc.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_ialloc_btree.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_inode.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_inode_item.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_iocore.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_itable.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dfrag.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_log.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_log_recover.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_mount.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_rename.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_trans.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_trans_ail.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_trans_buf.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_trans_extfree.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_trans_inode.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_trans_item.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_utils.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_vfsops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_vnodeops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_rw.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_attr_leaf.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_attr.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_dmops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_qmops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_iget.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_freebsd_iget.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_mountops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_vnops.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_frw.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_buf.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_globals.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_dmistubs.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_super.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_stats.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_vfs.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_vnode.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_sysctl.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_fs_subr.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/xfs_ioctl.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/support/debug.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/support/ktrace.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/support/mrlock.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/support/uuid.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/FreeBSD/support/kmem.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_iomap.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" gnu/fs/xfs/xfs_behavior.c optional xfs \ compile-with "${NORMAL_C} -I$S/gnu/fs/xfs/FreeBSD -I$S/gnu/fs/xfs/FreeBSD/support -I$S/gnu/fs/xfs" xen/gnttab.c optional xen | xenhvm xen/features.c optional xen | xenhvm xen/evtchn/evtchn.c optional xen xen/evtchn/evtchn_dev.c optional xen | xenhvm xen/xenbus/xenbus_if.m optional xen | xenhvm xen/xenbus/xenbus.c optional xen | xenhvm xen/xenbus/xenbusb_if.m optional xen | xenhvm xen/xenbus/xenbusb.c optional xen | xenhvm xen/xenbus/xenbusb_front.c optional xen | xenhvm xen/xenbus/xenbusb_back.c optional xen | xenhvm xen/xenstore/xenstore.c optional xen | xenhvm xen/xenstore/xenstore_dev.c optional xen | xenhvm dev/xen/balloon/balloon.c optional xen | xenhvm dev/xen/blkfront/blkfront.c optional xen | xenhvm dev/xen/blkback/blkback.c optional xen | xenhvm dev/xen/console/console.c optional xen dev/xen/console/xencons_ring.c optional xen dev/xen/control/control.c optional xen | xenhvm dev/xen/netfront/netfront.c optional xen | xenhvm dev/xen/xenpci/xenpci.c optional xenpci dev/xen/xenpci/evtchn.c optional xenpci Index: stable/8/sys/contrib/dev/acpica =================================================================== --- stable/8/sys/contrib/dev/acpica (revision 226242) +++ stable/8/sys/contrib/dev/acpica (revision 226243) Property changes on: stable/8/sys/contrib/dev/acpica ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/contrib/dev/acpica:r226026 Index: stable/8/sys/contrib/pf =================================================================== --- stable/8/sys/contrib/pf (revision 226242) +++ stable/8/sys/contrib/pf (revision 226243) Property changes on: stable/8/sys/contrib/pf ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys/contrib/pf:r226026 Index: stable/8/sys/dev/tws/tws.c =================================================================== --- stable/8/sys/dev/tws/tws.c (nonexistent) +++ stable/8/sys/dev/tws/tws.c (revision 226243) @@ -0,0 +1,905 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ +*/ + + +#include +#include +#include + +#include +#include + +MALLOC_DEFINE(M_TWS, "twsbuf", "buffers used by tws driver"); +int tws_queue_depth = TWS_MAX_REQS; +int tws_enable_msi = 0; +int tws_enable_msix = 0; + + + +/* externs */ +extern int tws_cam_attach(struct tws_softc *sc); +extern void tws_cam_detach(struct tws_softc *sc); +extern int tws_init_ctlr(struct tws_softc *sc); +extern boolean tws_ctlr_ready(struct tws_softc *sc); +extern void tws_turn_off_interrupts(struct tws_softc *sc); +extern void tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ); +extern struct tws_request *tws_q_remove_request(struct tws_softc *sc, + struct tws_request *req, u_int8_t q_type ); +extern struct tws_request *tws_q_remove_head(struct tws_softc *sc, + u_int8_t q_type ); +extern boolean tws_get_response(struct tws_softc *sc, u_int16_t *req_id); +extern boolean tws_ctlr_reset(struct tws_softc *sc); +extern void tws_intr(void *arg); +extern int tws_use_32bit_sgls; + + +struct tws_request *tws_get_request(struct tws_softc *sc, u_int16_t type); +int tws_init_connect(struct tws_softc *sc, u_int16_t mc); +void tws_send_event(struct tws_softc *sc, u_int8_t event); +uint8_t tws_get_state(struct tws_softc *sc); +void tws_release_request(struct tws_request *req); + + + +/* Function prototypes */ +static d_open_t tws_open; +static d_close_t tws_close; +static d_read_t tws_read; +static d_write_t tws_write; +extern d_ioctl_t tws_ioctl; + +static int tws_init(struct tws_softc *sc); +static void tws_dmamap_cmds_load_cbfn(void *arg, bus_dma_segment_t *segs, + int nseg, int error); + +static int tws_init_reqs(struct tws_softc *sc, u_int32_t dma_mem_size); +static int tws_init_aen_q(struct tws_softc *sc); +static int tws_init_trace_q(struct tws_softc *sc); +static int tws_setup_irq(struct tws_softc *sc); +int tws_setup_intr(struct tws_softc *sc, int irqs); +int tws_teardown_intr(struct tws_softc *sc); + + +/* Character device entry points */ + +static struct cdevsw tws_cdevsw = { + .d_version = D_VERSION, + .d_open = tws_open, + .d_close = tws_close, + .d_read = tws_read, + .d_write = tws_write, + .d_ioctl = tws_ioctl, + .d_name = "tws", +}; + +/* + * In the cdevsw routines, we find our softc by using the si_drv1 member + * of struct cdev. We set this variable to point to our softc in our + * attach routine when we create the /dev entry. + */ + +int +tws_open(struct cdev *dev, int oflags, int devtype, d_thread_t *td) +{ + struct tws_softc *sc = dev->si_drv1; + + if ( sc ) + TWS_TRACE_DEBUG(sc, "entry", dev, oflags); + return (0); +} + +int +tws_close(struct cdev *dev, int fflag, int devtype, d_thread_t *td) +{ + struct tws_softc *sc = dev->si_drv1; + + if ( sc ) + TWS_TRACE_DEBUG(sc, "entry", dev, fflag); + return (0); +} + +int +tws_read(struct cdev *dev, struct uio *uio, int ioflag) +{ + struct tws_softc *sc = dev->si_drv1; + + if ( sc ) + TWS_TRACE_DEBUG(sc, "entry", dev, ioflag); + return (0); +} + +int +tws_write(struct cdev *dev, struct uio *uio, int ioflag) +{ + struct tws_softc *sc = dev->si_drv1; + + if ( sc ) + TWS_TRACE_DEBUG(sc, "entry", dev, ioflag); + return (0); +} + +/* PCI Support Functions */ + +/* + * Compare the device ID of this device against the IDs that this driver + * supports. If there is a match, set the description and return success. + */ +static int +tws_probe(device_t dev) +{ + static u_int8_t first_ctlr = 1; + + if ((pci_get_vendor(dev) == TWS_VENDOR_ID) && + (pci_get_device(dev) == TWS_DEVICE_ID)) { + device_set_desc(dev, "LSI 3ware SAS/SATA Storage Controller"); + if (first_ctlr) { + printf("LSI 3ware device driver for SAS/SATA storage " + "controllers, version: %s\n", TWS_DRIVER_VERSION_STRING); + first_ctlr = 0; + } + + return(0); + } + return (ENXIO); +} + +/* Attach function is only called if the probe is successful. */ + +static int +tws_attach(device_t dev) +{ + struct tws_softc *sc = device_get_softc(dev); + u_int32_t cmd, bar; + int error=0,i; + + /* no tracing yet */ + /* Look up our softc and initialize its fields. */ + sc->tws_dev = dev; + sc->device_id = pci_get_device(dev); + sc->subvendor_id = pci_get_subvendor(dev); + sc->subdevice_id = pci_get_subdevice(dev); + + /* Intialize mutexes */ + mtx_init( &sc->q_lock, "tws_q_lock", NULL, MTX_DEF); + mtx_init( &sc->sim_lock, "tws_sim_lock", NULL, MTX_DEF); + mtx_init( &sc->gen_lock, "tws_gen_lock", NULL, MTX_DEF); + mtx_init( &sc->io_lock, "tws_io_lock", NULL, MTX_DEF); + + if ( tws_init_trace_q(sc) == FAILURE ) + printf("trace init failure\n"); + /* send init event */ + mtx_lock(&sc->gen_lock); + tws_send_event(sc, TWS_INIT_START); + mtx_unlock(&sc->gen_lock); + + +#if _BYTE_ORDER == _BIG_ENDIAN + TWS_TRACE(sc, "BIG endian", 0, 0); +#endif + /* sysctl context setup */ + sysctl_ctx_init(&sc->tws_clist); + sc->tws_oidp = SYSCTL_ADD_NODE(&sc->tws_clist, + SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, + device_get_nameunit(dev), + CTLFLAG_RD, 0, ""); + if ( sc->tws_oidp == NULL ) { + tws_log(sc, SYSCTL_TREE_NODE_ADD); + goto attach_fail_1; + } + SYSCTL_ADD_STRING(&sc->tws_clist, SYSCTL_CHILDREN(sc->tws_oidp), + OID_AUTO, "driver_version", CTLFLAG_RD, + TWS_DRIVER_VERSION_STRING, 0, "TWS driver version"); + + cmd = pci_read_config(dev, PCIR_COMMAND, 2); + if ( (cmd & PCIM_CMD_PORTEN) == 0) { + tws_log(sc, PCI_COMMAND_READ); + goto attach_fail_1; + } + /* Force the busmaster enable bit on. */ + cmd |= PCIM_CMD_BUSMASTEREN; + pci_write_config(dev, PCIR_COMMAND, cmd, 2); + + bar = pci_read_config(dev, TWS_PCI_BAR0, 4); + TWS_TRACE_DEBUG(sc, "bar0 ", bar, 0); + bar = pci_read_config(dev, TWS_PCI_BAR1, 4); + bar = bar & ~TWS_BIT2; + TWS_TRACE_DEBUG(sc, "bar1 ", bar, 0); + + /* MFA base address is BAR2 register used for + * push mode. Firmware will evatualy move to + * pull mode during witch this needs to change + */ +#ifndef TWS_PULL_MODE_ENABLE + sc->mfa_base = (u_int64_t)pci_read_config(dev, TWS_PCI_BAR2, 4); + sc->mfa_base = sc->mfa_base & ~TWS_BIT2; + TWS_TRACE_DEBUG(sc, "bar2 ", sc->mfa_base, 0); +#endif + + /* allocate MMIO register space */ + sc->reg_res_id = TWS_PCI_BAR1; /* BAR1 offset */ + if ((sc->reg_res = bus_alloc_resource(dev, SYS_RES_MEMORY, + &(sc->reg_res_id), 0, ~0, 1, RF_ACTIVE)) + == NULL) { + tws_log(sc, ALLOC_MEMORY_RES); + goto attach_fail_1; + } + sc->bus_tag = rman_get_bustag(sc->reg_res); + sc->bus_handle = rman_get_bushandle(sc->reg_res); + +#ifndef TWS_PULL_MODE_ENABLE + /* Allocate bus space for inbound mfa */ + sc->mfa_res_id = TWS_PCI_BAR2; /* BAR2 offset */ + if ((sc->mfa_res = bus_alloc_resource(dev, SYS_RES_MEMORY, + &(sc->mfa_res_id), 0, ~0, 0x100000, RF_ACTIVE)) + == NULL) { + tws_log(sc, ALLOC_MEMORY_RES); + goto attach_fail_2; + } + sc->bus_mfa_tag = rman_get_bustag(sc->mfa_res); + sc->bus_mfa_handle = rman_get_bushandle(sc->mfa_res); +#endif + + /* Allocate and register our interrupt. */ + sc->intr_type = TWS_INTx; /* default */ + + if ( tws_enable_msi ) + sc->intr_type = TWS_MSI; + if ( tws_setup_irq(sc) == FAILURE ) { + tws_log(sc, ALLOC_MEMORY_RES); + goto attach_fail_3; + } + + /* + * Create a /dev entry for this device. The kernel will assign us + * a major number automatically. We use the unit number of this + * device as the minor number and name the character device + * "tws". + */ + sc->tws_cdev = make_dev(&tws_cdevsw, device_get_unit(dev), + UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR, "tws%u", + device_get_unit(dev)); + sc->tws_cdev->si_drv1 = sc; + + if ( tws_init(sc) == FAILURE ) { + tws_log(sc, TWS_INIT_FAILURE); + goto attach_fail_4; + } + if ( tws_init_ctlr(sc) == FAILURE ) { + tws_log(sc, TWS_CTLR_INIT_FAILURE); + goto attach_fail_4; + } + if ((error = tws_cam_attach(sc))) { + tws_log(sc, TWS_CAM_ATTACH); + goto attach_fail_4; + } + /* send init complete event */ + mtx_lock(&sc->gen_lock); + tws_send_event(sc, TWS_INIT_COMPLETE); + mtx_unlock(&sc->gen_lock); + + TWS_TRACE_DEBUG(sc, "attached successfully", 0, sc->device_id); + return(0); + +attach_fail_4: + tws_teardown_intr(sc); + destroy_dev(sc->tws_cdev); +attach_fail_3: + for(i=0;iirqs;i++) { + if ( sc->irq_res[i] ){ + if (bus_release_resource(sc->tws_dev, + SYS_RES_IRQ, sc->irq_res_id[i], sc->irq_res[i])) + TWS_TRACE(sc, "bus irq res", 0, 0); + } + } +#ifndef TWS_PULL_MODE_ENABLE +attach_fail_2: +#endif + if ( sc->mfa_res ){ + if (bus_release_resource(sc->tws_dev, + SYS_RES_MEMORY, sc->mfa_res_id, sc->mfa_res)) + TWS_TRACE(sc, "bus release ", 0, sc->mfa_res_id); + } + if ( sc->reg_res ){ + if (bus_release_resource(sc->tws_dev, + SYS_RES_MEMORY, sc->reg_res_id, sc->reg_res)) + TWS_TRACE(sc, "bus release2 ", 0, sc->reg_res_id); + } +attach_fail_1: + mtx_destroy(&sc->q_lock); + mtx_destroy(&sc->sim_lock); + mtx_destroy(&sc->gen_lock); + mtx_destroy(&sc->io_lock); + sysctl_ctx_free(&sc->tws_clist); + return (ENXIO); +} + +/* Detach device. */ + +static int +tws_detach(device_t dev) +{ + struct tws_softc *sc = device_get_softc(dev); + int i; + u_int32_t reg; + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + + mtx_lock(&sc->gen_lock); + tws_send_event(sc, TWS_UNINIT_START); + mtx_unlock(&sc->gen_lock); + + /* needs to disable interrupt before detaching from cam */ + tws_turn_off_interrupts(sc); + /* clear door bell */ + tws_write_reg(sc, TWS_I2O0_HOBDBC, ~0, 4); + reg = tws_read_reg(sc, TWS_I2O0_HIMASK, 4); + TWS_TRACE_DEBUG(sc, "turn-off-intr", reg, 0); + sc->obfl_q_overrun = false; + tws_init_connect(sc, 1); + + /* Teardown the state in our softc created in our attach routine. */ + /* Disconnect the interrupt handler. */ + tws_teardown_intr(sc); + + /* Release irq resource */ + for(i=0;iirqs;i++) { + if ( sc->irq_res[i] ){ + if (bus_release_resource(sc->tws_dev, + SYS_RES_IRQ, sc->irq_res_id[i], sc->irq_res[i])) + TWS_TRACE(sc, "bus release irq resource", + i, sc->irq_res_id[i]); + } + } + if ( sc->intr_type == TWS_MSI ) { + pci_release_msi(sc->tws_dev); + } + + tws_cam_detach(sc); + + /* Release memory resource */ + if ( sc->mfa_res ){ + if (bus_release_resource(sc->tws_dev, + SYS_RES_MEMORY, sc->mfa_res_id, sc->mfa_res)) + TWS_TRACE(sc, "bus release mem resource", 0, sc->mfa_res_id); + } + if ( sc->reg_res ){ + if (bus_release_resource(sc->tws_dev, + SYS_RES_MEMORY, sc->reg_res_id, sc->reg_res)) + TWS_TRACE(sc, "bus release mem resource", 0, sc->reg_res_id); + } + + free(sc->reqs, M_TWS); + free(sc->sense_bufs, M_TWS); + free(sc->scan_ccb, M_TWS); + free(sc->aen_q.q, M_TWS); + free(sc->trace_q.q, M_TWS); + mtx_destroy(&sc->q_lock); + mtx_destroy(&sc->sim_lock); + mtx_destroy(&sc->gen_lock); + mtx_destroy(&sc->io_lock); + destroy_dev(sc->tws_cdev); + sysctl_ctx_free(&sc->tws_clist); + return (0); +} + +int +tws_setup_intr(struct tws_softc *sc, int irqs) +{ + int i, error; + + for(i=0;iintr_handle[i])) { + if ((error = bus_setup_intr(sc->tws_dev, sc->irq_res[i], + INTR_TYPE_CAM | INTR_MPSAFE, +#if (__FreeBSD_version >= 700000) + NULL, +#endif + tws_intr, sc, &sc->intr_handle[i]))) { + tws_log(sc, SETUP_INTR_RES); + return(FAILURE); + } + } + } + return(SUCCESS); + +} + + +int +tws_teardown_intr(struct tws_softc *sc) +{ + int i, error; + + for(i=0;iirqs;i++) { + if (sc->intr_handle[i]) { + error = bus_teardown_intr(sc->tws_dev, + sc->irq_res[i], sc->intr_handle[i]); + sc->intr_handle[i] = NULL; + } + } + return(SUCCESS); +} + + +static int +tws_setup_irq(struct tws_softc *sc) +{ + int messages; + u_int16_t cmd; + + cmd = pci_read_config(sc->tws_dev, PCIR_COMMAND, 2); + switch(sc->intr_type) { + case TWS_INTx : + cmd = cmd & ~0x0400; + pci_write_config(sc->tws_dev, PCIR_COMMAND, cmd, 2); + sc->irqs = 1; + sc->irq_res_id[0] = 0; + sc->irq_res[0] = bus_alloc_resource_any(sc->tws_dev, SYS_RES_IRQ, + &sc->irq_res_id[0], RF_SHAREABLE | RF_ACTIVE); + if ( ! sc->irq_res[0] ) + return(FAILURE); + if ( tws_setup_intr(sc, sc->irqs) == FAILURE ) + return(FAILURE); + device_printf(sc->tws_dev, "Using legacy INTx\n"); + break; + case TWS_MSI : + cmd = cmd | 0x0400; + pci_write_config(sc->tws_dev, PCIR_COMMAND, cmd, 2); + sc->irqs = 1; + sc->irq_res_id[0] = 1; + messages = 1; + if (pci_alloc_msi(sc->tws_dev, &messages) != 0 ) { + TWS_TRACE(sc, "pci alloc msi fail", 0, messages); + return(FAILURE); + } + sc->irq_res[0] = bus_alloc_resource_any(sc->tws_dev, SYS_RES_IRQ, + &sc->irq_res_id[0], RF_SHAREABLE | RF_ACTIVE); + + if ( !sc->irq_res[0] ) + return(FAILURE); + if ( tws_setup_intr(sc, sc->irqs) == FAILURE ) + return(FAILURE); + device_printf(sc->tws_dev, "Using MSI\n"); + break; + + } + + return(SUCCESS); +} + +static int +tws_init(struct tws_softc *sc) +{ + + u_int32_t max_sg_elements; + u_int32_t dma_mem_size; + int error; + u_int32_t reg; + + sc->seq_id = 0; + if ( tws_queue_depth > TWS_MAX_REQS ) + tws_queue_depth = TWS_MAX_REQS; + if (tws_queue_depth < TWS_RESERVED_REQS+1) + tws_queue_depth = TWS_RESERVED_REQS+1; + sc->is64bit = (sizeof(bus_addr_t) == 8) ? true : false; + max_sg_elements = (sc->is64bit && !tws_use_32bit_sgls) ? + TWS_MAX_64BIT_SG_ELEMENTS : + TWS_MAX_32BIT_SG_ELEMENTS; + dma_mem_size = (sizeof(struct tws_command_packet) * tws_queue_depth) + + (TWS_SECTOR_SIZE) ; + if ( bus_dma_tag_create(NULL, /* parent */ + TWS_ALIGNMENT, /* alignment */ + 0, /* boundary */ + BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + BUS_SPACE_MAXSIZE, /* maxsize */ + max_sg_elements, /* numsegs */ + BUS_SPACE_MAXSIZE, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockfuncarg */ + &sc->parent_tag /* tag */ + )) { + TWS_TRACE_DEBUG(sc, "DMA parent tag Create fail", max_sg_elements, + sc->is64bit); + return(ENOMEM); + } + /* In bound message frame requires 16byte alignment. + * Outbound MF's can live with 4byte alignment - for now just + * use 16 for both. + */ + if ( bus_dma_tag_create(sc->parent_tag, /* parent */ + TWS_IN_MF_ALIGNMENT, /* alignment */ + 0, /* boundary */ + BUS_SPACE_MAXADDR_32BIT, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + dma_mem_size, /* maxsize */ + 1, /* numsegs */ + BUS_SPACE_MAXSIZE, /* maxsegsize */ + 0, /* flags */ + NULL, NULL, /* lockfunc, lockfuncarg */ + &sc->cmd_tag /* tag */ + )) { + TWS_TRACE_DEBUG(sc, "DMA cmd tag Create fail", max_sg_elements, sc->is64bit); + return(ENOMEM); + } + + if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem, + BUS_DMA_NOWAIT, &sc->cmd_map)) { + TWS_TRACE_DEBUG(sc, "DMA mem alloc fail", max_sg_elements, sc->is64bit); + return(ENOMEM); + } + + /* if bus_dmamem_alloc succeeds then bus_dmamap_load will succeed */ + sc->dma_mem_phys=0; + error = bus_dmamap_load(sc->cmd_tag, sc->cmd_map, sc->dma_mem, + dma_mem_size, tws_dmamap_cmds_load_cbfn, + &sc->dma_mem_phys, 0); + + /* + * Create a dma tag for data buffers; size will be the maximum + * possible I/O size (128kB). + */ + if (bus_dma_tag_create(sc->parent_tag, /* parent */ + TWS_ALIGNMENT, /* alignment */ + 0, /* boundary */ + BUS_SPACE_MAXADDR_32BIT,/* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + TWS_MAX_IO_SIZE, /* maxsize */ + max_sg_elements, /* nsegments */ + TWS_MAX_IO_SIZE, /* maxsegsize */ + BUS_DMA_ALLOCNOW, /* flags */ + busdma_lock_mutex, /* lockfunc */ + &sc->io_lock, /* lockfuncarg */ + &sc->data_tag /* tag */)) { + TWS_TRACE_DEBUG(sc, "DMA cmd tag Create fail", max_sg_elements, sc->is64bit); + return(ENOMEM); + } + + sc->reqs = malloc(sizeof(struct tws_request) * tws_queue_depth, M_TWS, + M_WAITOK | M_ZERO); + if ( sc->reqs == NULL ) { + TWS_TRACE_DEBUG(sc, "malloc failed", 0, sc->is64bit); + return(ENOMEM); + } + sc->sense_bufs = malloc(sizeof(struct tws_sense) * tws_queue_depth, M_TWS, + M_WAITOK | M_ZERO); + if ( sc->sense_bufs == NULL ) { + TWS_TRACE_DEBUG(sc, "sense malloc failed", 0, sc->is64bit); + return(ENOMEM); + } + sc->scan_ccb = malloc(sizeof(union ccb), M_TWS, M_WAITOK | M_ZERO); + if ( sc->scan_ccb == NULL ) { + TWS_TRACE_DEBUG(sc, "ccb malloc failed", 0, sc->is64bit); + return(ENOMEM); + } + + if ( !tws_ctlr_ready(sc) ) + if( !tws_ctlr_reset(sc) ) + return(FAILURE); + + bzero(&sc->stats, sizeof(struct tws_stats)); + tws_init_qs(sc); + tws_turn_off_interrupts(sc); + + /* + * enable pull mode by setting bit1 . + * setting bit0 to 1 will enable interrupt coalesing + * will revisit. + */ + +#ifdef TWS_PULL_MODE_ENABLE + + reg = tws_read_reg(sc, TWS_I2O0_CTL, 4); + TWS_TRACE_DEBUG(sc, "i20 ctl", reg, TWS_I2O0_CTL); + tws_write_reg(sc, TWS_I2O0_CTL, reg | TWS_BIT1, 4); + +#endif + + TWS_TRACE_DEBUG(sc, "dma_mem_phys", sc->dma_mem_phys, TWS_I2O0_CTL); + if ( tws_init_reqs(sc, dma_mem_size) == FAILURE ) + return(FAILURE); + if ( tws_init_aen_q(sc) == FAILURE ) + return(FAILURE); + + return(SUCCESS); + +} + +static int +tws_init_aen_q(struct tws_softc *sc) +{ + sc->aen_q.head=0; + sc->aen_q.tail=0; + sc->aen_q.depth=256; + sc->aen_q.overflow=0; + sc->aen_q.q = malloc(sizeof(struct tws_event_packet)*sc->aen_q.depth, + M_TWS, M_WAITOK | M_ZERO); + if ( ! sc->aen_q.q ) + return(FAILURE); + return(SUCCESS); +} + +static int +tws_init_trace_q(struct tws_softc *sc) +{ + sc->trace_q.head=0; + sc->trace_q.tail=0; + sc->trace_q.depth=256; + sc->trace_q.overflow=0; + sc->trace_q.q = malloc(sizeof(struct tws_trace_rec)*sc->trace_q.depth, + M_TWS, M_WAITOK | M_ZERO); + if ( ! sc->trace_q.q ) + return(FAILURE); + return(SUCCESS); +} + +static int +tws_init_reqs(struct tws_softc *sc, u_int32_t dma_mem_size) +{ + + struct tws_command_packet *cmd_buf; + cmd_buf = (struct tws_command_packet *)sc->dma_mem; + int i; + + bzero(cmd_buf, dma_mem_size); + TWS_TRACE_DEBUG(sc, "phy cmd", sc->dma_mem_phys, 0); + mtx_lock(&sc->q_lock); + for ( i=0; i< tws_queue_depth; i++) + { + if (bus_dmamap_create(sc->data_tag, 0, &sc->reqs[i].dma_map)) { + /* log a ENOMEM failure msg here */ + return(FAILURE); + } + sc->reqs[i].cmd_pkt = &cmd_buf[i]; + + sc->sense_bufs[i].hdr = &cmd_buf[i].hdr ; + sc->sense_bufs[i].hdr_pkt_phy = sc->dma_mem_phys + + (i * sizeof(struct tws_command_packet)); + + sc->reqs[i].cmd_pkt_phy = sc->dma_mem_phys + + sizeof(struct tws_command_header) + + (i * sizeof(struct tws_command_packet)); + sc->reqs[i].request_id = i; + sc->reqs[i].sc = sc; + + sc->reqs[i].cmd_pkt->hdr.header_desc.size_header = 128; + + sc->reqs[i].state = TWS_REQ_STATE_FREE; + if ( i >= TWS_RESERVED_REQS ) + tws_q_insert_tail(sc, &sc->reqs[i], TWS_FREE_Q); + } + mtx_unlock(&sc->q_lock); + return(SUCCESS); +} + +static void +tws_dmamap_cmds_load_cbfn(void *arg, bus_dma_segment_t *segs, + int nseg, int error) +{ + + /* printf("command load done \n"); */ + + *((bus_addr_t *)arg) = segs[0].ds_addr; +} + +void +tws_send_event(struct tws_softc *sc, u_int8_t event) +{ + mtx_assert(&sc->gen_lock, MA_OWNED); + TWS_TRACE_DEBUG(sc, "received event ", 0, event); + switch (event) { + + case TWS_INIT_START: + sc->tws_state = TWS_INIT; + break; + + case TWS_INIT_COMPLETE: + if (sc->tws_state != TWS_INIT) { + device_printf(sc->tws_dev, "invalid state transition %d => TWS_ONLINE\n", sc->tws_state); + } else { + sc->tws_state = TWS_ONLINE; + } + break; + + case TWS_RESET_START: + /* We can transition to reset state from any state except reset*/ + if (sc->tws_state != TWS_RESET) { + sc->tws_prev_state = sc->tws_state; + sc->tws_state = TWS_RESET; + } + break; + + case TWS_RESET_COMPLETE: + if (sc->tws_state != TWS_RESET) { + device_printf(sc->tws_dev, "invalid state transition %d => %d (previous state)\n", sc->tws_state, sc->tws_prev_state); + } else { + sc->tws_state = sc->tws_prev_state; + } + break; + + case TWS_SCAN_FAILURE: + if (sc->tws_state != TWS_ONLINE) { + device_printf(sc->tws_dev, "invalid state transition %d => TWS_OFFLINE\n", sc->tws_state); + } else { + sc->tws_state = TWS_OFFLINE; + } + break; + + case TWS_UNINIT_START: + if ((sc->tws_state != TWS_ONLINE) && (sc->tws_state != TWS_OFFLINE)) { + device_printf(sc->tws_dev, "invalid state transition %d => TWS_UNINIT\n", sc->tws_state); + } else { + sc->tws_state = TWS_UNINIT; + } + break; + } + +} + +uint8_t +tws_get_state(struct tws_softc *sc) +{ + + return((u_int8_t)sc->tws_state); + +} + +/* Called during system shutdown after sync. */ + +static int +tws_shutdown(device_t dev) +{ + + struct tws_softc *sc = device_get_softc(dev); + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + + tws_turn_off_interrupts(sc); + tws_init_connect(sc, 1); + + return (0); +} + +/* + * Device suspend routine. + */ +static int +tws_suspend(device_t dev) +{ + struct tws_softc *sc = device_get_softc(dev); + + if ( sc ) + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + return (0); +} + +/* + * Device resume routine. + */ +static int +tws_resume(device_t dev) +{ + + struct tws_softc *sc = device_get_softc(dev); + + if ( sc ) + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + return (0); +} + + +struct tws_request * +tws_get_request(struct tws_softc *sc, u_int16_t type) +{ + struct mtx *my_mutex = ((type == TWS_REQ_TYPE_SCSI_IO) ? &sc->q_lock : &sc->gen_lock); + struct tws_request *r = NULL; + + mtx_lock(my_mutex); + + if (type == TWS_REQ_TYPE_SCSI_IO) { + r = tws_q_remove_head(sc, TWS_FREE_Q); + } else { + if ( sc->reqs[type].state == TWS_REQ_STATE_FREE ) { + r = &sc->reqs[type]; + } + } + + if ( r ) { + bzero(&r->cmd_pkt->cmd, sizeof(struct tws_command_apache)); + r->data = NULL; + r->length = 0; + r->type = type; + r->flags = TWS_DIR_UNKNOWN; + r->error_code = TWS_REQ_RET_INVALID; + r->cb = NULL; + r->ccb_ptr = NULL; + r->thandle.callout = NULL; + r->next = r->prev = NULL; + + r->state = ((type == TWS_REQ_TYPE_SCSI_IO) ? TWS_REQ_STATE_TRAN : TWS_REQ_STATE_BUSY); + } + + mtx_unlock(my_mutex); + + return(r); +} + +void +tws_release_request(struct tws_request *req) +{ + + struct tws_softc *sc = req->sc; + + TWS_TRACE_DEBUG(sc, "entry", sc, 0); + mtx_lock(&sc->q_lock); + tws_q_insert_tail(sc, req, TWS_FREE_Q); + mtx_unlock(&sc->q_lock); +} + +static device_method_t tws_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, tws_probe), + DEVMETHOD(device_attach, tws_attach), + DEVMETHOD(device_detach, tws_detach), + DEVMETHOD(device_shutdown, tws_shutdown), + DEVMETHOD(device_suspend, tws_suspend), + DEVMETHOD(device_resume, tws_resume), + + DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_driver_added, bus_generic_driver_added), + { 0, 0 } +}; + +static driver_t tws_driver = { + "tws", + tws_methods, + sizeof(struct tws_softc) +}; + + +static devclass_t tws_devclass; + +/* DEFINE_CLASS_0(tws, tws_driver, tws_methods, sizeof(struct tws_softc)); */ +DRIVER_MODULE(tws, pci, tws_driver, tws_devclass, 0, 0); +MODULE_DEPEND(tws, cam, 1, 1, 1); +MODULE_DEPEND(tws, pci, 1, 1, 1); + +TUNABLE_INT("hw.tws.queue_depth", &tws_queue_depth); +TUNABLE_INT("hw.tws.enable_msi", &tws_enable_msi); Property changes on: stable/8/sys/dev/tws/tws.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws.h =================================================================== --- stable/8/sys/dev/tws/tws.h (nonexistent) +++ stable/8/sys/dev/tws/tws.h (revision 226243) @@ -0,0 +1,265 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + +#include /* defines used in kernel.h */ +#include +#include +#include +#include +#include /* types used in module initialization */ +#include /* cdevsw struct */ +#include /* uio struct */ +#include +#include /* structs, prototypes for pci bus stuff */ + + +#include +#include +#include + +#include /* For pci_get macros! */ +#include + +#include +#include +#include + + +#define TWS_PULL_MODE_ENABLE 1 + +MALLOC_DECLARE(M_TWS); +/* externs */ +extern int tws_queue_depth; + + +#define TWS_DRIVER_VERSION_STRING "10.80.00.003" +#define TWS_MAX_NUM_UNITS 65 +#define TWS_MAX_NUM_LUNS 16 +#define TWS_MAX_IRQS 2 +#define TWS_SCSI_INITIATOR_ID 66 +#define TWS_MAX_IO_SIZE 0x20000 /* 128kB */ +#define TWS_SECTOR_SIZE 0x200 +#define TWS_POLL_TIMEOUT 60 +#define TWS_IO_TIMEOUT 60 +#define TWS_IOCTL_TIMEOUT 60 +#define TWS_RESET_TIMEOUT 60 + +#define TWS_PCI_BAR0 0x10 +#define TWS_PCI_BAR1 0x14 +#define TWS_PCI_BAR2 0x1C + +#define TWS_VENDOR_ID 0x13C1 +#define TWS_DEVICE_ID 0x1010 + +#define TWS_INVALID_REQID 0xFFFF + +/* bus tag related */ +#define TWS_ALIGNMENT 4 +#define TWS_IN_MF_ALIGNMENT 16 +#define TWS_OUT_MF_ALIGNMENT 4 + +#define TWS_MAX_32BIT_SG_ELEMENTS 93 /* max 32-bit sg elements */ +#define TWS_MAX_64BIT_SG_ELEMENTS 46 /* max 64-bit sg elements */ + +#define TWS_MAX_QS 4 +#define TWS_MAX_REQS 256 +#define TWS_RESERVED_REQS 4 + +/* Request states */ +#define TWS_REQ_STATE_FREE 0 +#define TWS_REQ_STATE_BUSY 1 +#define TWS_REQ_STATE_TRAN 2 +#define TWS_REQ_STATE_COMPLETE 3 + +/* Request types */ +#define TWS_REQ_TYPE_INTERNAL_CMD 0x0 +#define TWS_REQ_TYPE_AEN_FETCH 0x1 +#define TWS_REQ_TYPE_PASSTHRU 0x2 +#define TWS_REQ_TYPE_GETSET_PARAM 0x3 +#define TWS_REQ_TYPE_SCSI_IO 0x4 + +/* Driver states */ + +enum tws_states { + TWS_INIT=50, + TWS_UNINIT, + TWS_OFFLINE, + TWS_ONLINE, + TWS_RESET, +}; + +/* events */ + +enum tws_events { + TWS_INIT_START=100, + TWS_INIT_COMPLETE, + TWS_UNINIT_START, + TWS_RESET_START, + TWS_RESET_COMPLETE, + TWS_SCAN_FAILURE, +}; + +enum tws_req_flags { + TWS_DIR_UNKNOWN = 0x1, + TWS_DIR_IN = 0x2, + TWS_DIR_OUT = 0x4, + TWS_DIR_NONE = 0x8, +}; + +enum tws_intrs { + TWS_INTx, + TWS_MSI, + TWS_MSIX, +}; + +struct tws_msix_info { + int tbl_res_id; + bus_space_tag_t tbl_tag; + bus_space_handle_t tbl_handle; + struct resource *tbl_res; +}; + +struct tws_ioctl_lock { + u_int32_t lock; + time_t timeout; +}; + + +#define TWS_TRACE_FNAME_LEN 10 +#define TWS_TRACE_FUNC_LEN 15 +#define TWS_TRACE_DESC_LEN 10 +struct tws_trace_rec { + struct timespec ts; + char fname[TWS_TRACE_FNAME_LEN]; + char func[TWS_TRACE_FUNC_LEN]; + int linenum; + char desc[TWS_TRACE_DESC_LEN]; + u_int64_t val1; + u_int64_t val2; +}; + +struct tws_circular_q { + volatile int16_t head; + volatile int16_t tail; + u_int16_t depth; + u_int8_t overflow; + void * q; +}; + + + +struct tws_stats { + u_int64_t reqs_in; + u_int64_t reqs_out; + u_int64_t reqs_errored; + u_int64_t spurios_intrs; + u_int64_t num_intrs; + u_int64_t num_aens; + u_int64_t ioctls; + u_int64_t scsi_ios; +}; + +struct tws_init_connect_info { + u_int16_t working_srl; + u_int16_t working_branch; + u_int16_t working_build; + u_int16_t fw_on_ctlr_srl; + u_int16_t fw_on_ctlr_branch; + u_int16_t fw_on_ctlr_build; + +}; + + +/* ------------ boolean types ------------------- */ + +typedef enum _boolean { false, true } boolean; +enum err { SUCCESS, FAILURE }; + +/* ----------- per instance data ---------------- */ + +/* The softc holds our per-instance data. */ +struct tws_softc { + device_t tws_dev; /* bus device */ + struct cdev *tws_cdev; /* controller device */ + u_int32_t device_id; /* device id */ + u_int32_t subvendor_id; /* device id */ + u_int32_t subdevice_id; /* device id */ + u_int8_t tws_state; /* driver state */ + u_int8_t tws_prev_state; /* driver prev state */ + struct sysctl_ctx_list tws_clist; /* sysctl context */ + struct sysctl_oid *tws_oidp; /* sysctl context */ + struct resource *reg_res; /* register interface window */ + struct resource *mfa_res; /* mfa interface window */ + int reg_res_id; /* register resource id */ + int mfa_res_id; /* register resource id */ + bus_space_handle_t bus_handle; /* bus space handle */ + bus_space_handle_t bus_mfa_handle; /* bus space handle */ + bus_space_tag_t bus_tag; /* bus space tag */ + bus_space_tag_t bus_mfa_tag; /* bus space tag for mfa's */ + u_int64_t mfa_base; /* mfa base address */ + struct resource *irq_res[TWS_MAX_IRQS];/* interrupt resource */ + int irq_res_id[TWS_MAX_IRQS]; /* intr resource id */ + void *intr_handle[TWS_MAX_IRQS]; /* interrupt handle */ + int irqs; /* intrs used */ + struct tws_msix_info msix; /* msix info */ + struct cam_sim *sim; /* sim for this controller */ + struct cam_path *path; /* Ctlr path to CAM */ + struct mtx q_lock; /* queue lock */ + struct mtx sim_lock; /* sim lock */ + struct mtx gen_lock; /* general driver lock */ + struct mtx io_lock; /* IO lock */ + struct tws_ioctl_lock ioctl_lock; /* ioctl lock */ + u_int32_t seq_id; /* Sequence id */ + int chan; /* wait channel */ + struct tws_circular_q aen_q; /* aen q */ + struct tws_circular_q trace_q; /* trace q */ + struct tws_stats stats; /* I/O stats */ + struct tws_init_connect_info cinfo; /* compatibility info */ + boolean is64bit; /* True - 64bit else 32bit */ + u_int8_t intr_type; /* Interrupt type used */ + bus_dma_tag_t parent_tag; /* parent DMA tag */ + bus_dma_tag_t cmd_tag; /* command DMA tag */ + bus_dmamap_t cmd_map; /* command map */ + void *dma_mem; /* pointer to dmable memory */ + u_int64_t dma_mem_phys; /* phy addr */ + bus_dma_tag_t data_tag; /* data DMA tag */ + struct tws_request *reqs; /* pointer to requests */ + struct tws_sense *sense_bufs; /* pointer to sense buffers */ + boolean obfl_q_overrun; /* OBFL overrun flag */ + union ccb *scan_ccb; /* pointer to a ccb */ + struct tws_request *q_head[TWS_MAX_QS]; /* head pointers to q's */ + struct tws_request *q_tail[TWS_MAX_QS]; /* tail pointers to q's */ +}; Property changes on: stable/8/sys/dev/tws/tws.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_cam.c =================================================================== --- stable/8/sys/dev/tws/tws_cam.c (nonexistent) +++ stable/8/sys/dev/tws/tws_cam.c (revision 226243) @@ -0,0 +1,1342 @@ +/* + * Copyright (c) 2010 LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +static int tws_cam_depth=(TWS_MAX_REQS - TWS_RESERVED_REQS); +static char tws_sev_str[5][8]={"","ERROR","WARNING","INFO","DEBUG"}; + +static void tws_action(struct cam_sim *sim, union ccb *ccb); +static void tws_poll(struct cam_sim *sim); +static void tws_scsi_complete(struct tws_request *req); + + + +void tws_unmap_request(struct tws_softc *sc, struct tws_request *req); +int32_t tws_map_request(struct tws_softc *sc, struct tws_request *req); +int tws_bus_scan(struct tws_softc *sc); +int tws_cam_attach(struct tws_softc *sc); +void tws_cam_detach(struct tws_softc *sc); +void tws_reset(void *arg); + +static void tws_reset_cb(void *arg); +static void tws_reinit(void *arg); +static int32_t tws_execute_scsi(struct tws_softc *sc, union ccb *ccb); +static void tws_freeze_simq(struct tws_softc *sc, struct tws_request *req); +static void tws_dmamap_data_load_cbfn(void *arg, bus_dma_segment_t *segs, + int nseg, int error); +static void tws_fill_sg_list(struct tws_softc *sc, void *sgl_src, + void *sgl_dest, u_int16_t num_sgl_entries); +static void tws_err_complete(struct tws_softc *sc, u_int64_t mfa); +static void tws_scsi_err_complete(struct tws_request *req, + struct tws_command_header *hdr); +static void tws_passthru_err_complete(struct tws_request *req, + struct tws_command_header *hdr); + + +void tws_timeout(void *arg); +static void tws_intr_attn_aen(struct tws_softc *sc); +static void tws_intr_attn_error(struct tws_softc *sc); +static void tws_intr_resp(struct tws_softc *sc); +void tws_intr(void *arg); +void tws_cmd_complete(struct tws_request *req); +void tws_aen_complete(struct tws_request *req); +int tws_send_scsi_cmd(struct tws_softc *sc, int cmd); +void tws_getset_param_complete(struct tws_request *req); +int tws_set_param(struct tws_softc *sc, u_int32_t table_id, u_int32_t param_id, + u_int32_t param_size, void *data); +int tws_get_param(struct tws_softc *sc, u_int32_t table_id, u_int32_t param_id, + u_int32_t param_size, void *data); + + +extern struct tws_request *tws_get_request(struct tws_softc *sc, + u_int16_t type); +extern void *tws_release_request(struct tws_request *req); +extern int tws_submit_command(struct tws_softc *sc, struct tws_request *req); +extern boolean tws_get_response(struct tws_softc *sc, + u_int16_t *req_id, u_int64_t *mfa); +extern void tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ); +extern struct tws_request * tws_q_remove_request(struct tws_softc *sc, + struct tws_request *req, u_int8_t q_type ); +extern void tws_send_event(struct tws_softc *sc, u_int8_t event); + +extern struct tws_sense * +tws_find_sense_from_mfa(struct tws_softc *sc, u_int64_t mfa); + +extern void tws_fetch_aen(void *arg); +extern void tws_disable_db_intr(struct tws_softc *sc); +extern void tws_enable_db_intr(struct tws_softc *sc); +extern void tws_passthru_complete(struct tws_request *req); +extern void tws_aen_synctime_with_host(struct tws_softc *sc); +extern void tws_circular_aenq_insert(struct tws_softc *sc, + struct tws_circular_q *cq, struct tws_event_packet *aen); +extern int tws_use_32bit_sgls; +extern boolean tws_ctlr_reset(struct tws_softc *sc); +extern struct tws_request * tws_q_remove_tail(struct tws_softc *sc, + u_int8_t q_type ); +extern void tws_turn_off_interrupts(struct tws_softc *sc); +extern void tws_turn_on_interrupts(struct tws_softc *sc); +extern int tws_init_connect(struct tws_softc *sc, u_int16_t mc); +extern void tws_init_obfl_q(struct tws_softc *sc); +extern uint8_t tws_get_state(struct tws_softc *sc); +extern void tws_assert_soft_reset(struct tws_softc *sc); +extern boolean tws_ctlr_ready(struct tws_softc *sc); +extern u_int16_t tws_poll4_response(struct tws_softc *sc, u_int64_t *mfa); +extern int tws_setup_intr(struct tws_softc *sc, int irqs); +extern int tws_teardown_intr(struct tws_softc *sc); + + + +int +tws_cam_attach(struct tws_softc *sc) +{ + struct cam_devq *devq; + + TWS_TRACE_DEBUG(sc, "entry", 0, sc); + /* Create a device queue for sim */ + + /* + * if the user sets cam depth to less than 1 + * cam may get confused + */ + if ( tws_cam_depth < 1 ) + tws_cam_depth = 1; + if ( tws_cam_depth > (tws_queue_depth - TWS_RESERVED_REQS) ) + tws_cam_depth = tws_queue_depth - TWS_RESERVED_REQS; + + TWS_TRACE_DEBUG(sc, "depths,ctlr,cam", tws_queue_depth, tws_cam_depth); + + if ((devq = cam_simq_alloc(tws_cam_depth)) == NULL) { + tws_log(sc, CAM_SIMQ_ALLOC); + return(ENOMEM); + } + + /* + * Create a SIM entry. Though we can support tws_cam_depth + * simultaneous requests, we claim to be able to handle only + * (tws_cam_depth), so that we always have reserved requests + * packet available to service ioctls and internal commands. + */ + sc->sim = cam_sim_alloc(tws_action, tws_poll, "tws", sc, + device_get_unit(sc->tws_dev), +#if (__FreeBSD_version >= 700000) + &sc->sim_lock, +#endif + tws_cam_depth, 1, devq); + /* 1, 1, devq); */ + if (sc->sim == NULL) { + cam_simq_free(devq); + tws_log(sc, CAM_SIM_ALLOC); + } + /* Register the bus. */ + mtx_lock(&sc->sim_lock); + if (xpt_bus_register(sc->sim, +#if (__FreeBSD_version >= 700000) + sc->tws_dev, +#endif + 0) != CAM_SUCCESS) { + cam_sim_free(sc->sim, TRUE); /* passing true will free the devq */ + sc->sim = NULL; /* so cam_detach will not try to free it */ + mtx_unlock(&sc->sim_lock); + tws_log(sc, TWS_XPT_BUS_REGISTER); + return(ENXIO); + } + if (xpt_create_path(&sc->path, NULL, cam_sim_path(sc->sim), + CAM_TARGET_WILDCARD, + CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + xpt_bus_deregister(cam_sim_path(sc->sim)); + /* Passing TRUE to cam_sim_free will free the devq as well. */ + cam_sim_free(sc->sim, TRUE); + tws_log(sc, TWS_XPT_CREATE_PATH); + mtx_unlock(&sc->sim_lock); + return(ENXIO); + } + mtx_unlock(&sc->sim_lock); + + return(0); +} + +void +tws_cam_detach(struct tws_softc *sc) +{ + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + mtx_lock(&sc->sim_lock); + if (sc->path) + xpt_free_path(sc->path); + if (sc->sim) { + xpt_bus_deregister(cam_sim_path(sc->sim)); + cam_sim_free(sc->sim, TRUE); + } + mtx_unlock(&sc->sim_lock); +} + +int +tws_bus_scan(struct tws_softc *sc) +{ + union ccb *ccb; + + TWS_TRACE_DEBUG(sc, "entry", sc, 0); + if (!(sc->sim)) + return(ENXIO); + mtx_assert(&sc->sim_lock, MA_OWNED); + if ((ccb = xpt_alloc_ccb()) == NULL) + return(ENOMEM); + + if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(sc->sim), + CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + xpt_free_ccb(ccb); + return(EIO); + } + xpt_rescan(ccb); + + return(0); +} + +static void +tws_action(struct cam_sim *sim, union ccb *ccb) +{ + struct tws_softc *sc = (struct tws_softc *)cam_sim_softc(sim); + + + switch( ccb->ccb_h.func_code ) { + case XPT_SCSI_IO: + { + if ( tws_execute_scsi(sc, ccb) ) + TWS_TRACE_DEBUG(sc, "execute scsi failed", 0, 0); + break; + } + case XPT_ABORT: + { + TWS_TRACE_DEBUG(sc, "abort i/o", 0, 0); + ccb->ccb_h.status = CAM_UA_ABORT; + xpt_done(ccb); + break; + } + case XPT_RESET_BUS: + { + TWS_TRACE_DEBUG(sc, "reset bus", sim, ccb); + break; + } + case XPT_SET_TRAN_SETTINGS: + { + TWS_TRACE_DEBUG(sc, "set tran settings", sim, ccb); + ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; + xpt_done(ccb); + + break; + } + case XPT_GET_TRAN_SETTINGS: + { + TWS_TRACE_DEBUG(sc, "get tran settings", sim, ccb); + +#if (__FreeBSD_version >= 700000 ) + ccb->cts.protocol = PROTO_SCSI; + ccb->cts.protocol_version = SCSI_REV_2; + ccb->cts.transport = XPORT_SPI; + ccb->cts.transport_version = 2; + + ccb->cts.xport_specific.spi.valid = CTS_SPI_VALID_DISC; + ccb->cts.xport_specific.spi.flags = CTS_SPI_FLAGS_DISC_ENB; + ccb->cts.proto_specific.scsi.valid = CTS_SCSI_VALID_TQ; + ccb->cts.proto_specific.scsi.flags = CTS_SCSI_FLAGS_TAG_ENB; +#else + ccb->cts.valid = (CCB_TRANS_DISC_VALID | CCB_TRANS_TQ_VALID); + ccb->cts.flags &= ~(CCB_TRANS_DISC_ENB | CCB_TRANS_TAG_ENB); +#endif + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + + break; + } + case XPT_CALC_GEOMETRY: + { + TWS_TRACE_DEBUG(sc, "calc geometry(ccb,block-size)", ccb, + ccb->ccg.block_size); + cam_calc_geometry(&ccb->ccg, 1/* extended */); + xpt_done(ccb); + + break; + } + case XPT_PATH_INQ: + { + TWS_TRACE_DEBUG(sc, "path inquiry", sim, ccb); + ccb->cpi.version_num = 1; + ccb->cpi.hba_inquiry = 0; + ccb->cpi.target_sprt = 0; + ccb->cpi.hba_misc = 0; + ccb->cpi.hba_eng_cnt = 0; + ccb->cpi.max_target = TWS_MAX_NUM_UNITS; + ccb->cpi.max_lun = TWS_MAX_NUM_LUNS - 1; + ccb->cpi.unit_number = cam_sim_unit(sim); + ccb->cpi.bus_id = cam_sim_bus(sim); + ccb->cpi.initiator_id = TWS_SCSI_INITIATOR_ID; + ccb->cpi.base_transfer_speed = 6000000; + strncpy(ccb->cpi.sim_vid, "FreeBSD", SIM_IDLEN); + strncpy(ccb->cpi.hba_vid, "3ware", HBA_IDLEN); + strncpy(ccb->cpi.dev_name, cam_sim_name(sim), DEV_IDLEN); +#if (__FreeBSD_version >= 700000 ) + ccb->cpi.transport = XPORT_SPI; + ccb->cpi.transport_version = 2; + ccb->cpi.protocol = PROTO_SCSI; + ccb->cpi.protocol_version = SCSI_REV_2; + ccb->cpi.maxio = TWS_MAX_IO_SIZE; +#endif + ccb->ccb_h.status = CAM_REQ_CMP; + xpt_done(ccb); + + break; + } + default: + TWS_TRACE_DEBUG(sc, "default", sim, ccb); + ccb->ccb_h.status = CAM_REQ_INVALID; + xpt_done(ccb); + break; + } +} + +static void +tws_scsi_complete(struct tws_request *req) +{ + struct tws_softc *sc = req->sc; + + mtx_lock(&sc->q_lock); + tws_q_remove_request(sc, req, TWS_BUSY_Q); + mtx_unlock(&sc->q_lock); + + untimeout(tws_timeout, req, req->ccb_ptr->ccb_h.timeout_ch); + tws_unmap_request(req->sc, req); + + + req->ccb_ptr->ccb_h.status = CAM_REQ_CMP; + mtx_lock(&sc->sim_lock); + xpt_done(req->ccb_ptr); + mtx_unlock(&sc->sim_lock); + + mtx_lock(&sc->q_lock); + tws_q_insert_tail(sc, req, TWS_FREE_Q); + mtx_unlock(&sc->q_lock); +} + +void +tws_getset_param_complete(struct tws_request *req) +{ + struct tws_softc *sc = req->sc; + + TWS_TRACE_DEBUG(sc, "getset complete", req, req->request_id); + + untimeout(tws_timeout, req, req->thandle); + tws_unmap_request(sc, req); + + free(req->data, M_TWS); + + req->state = TWS_REQ_STATE_FREE; +} + +void +tws_aen_complete(struct tws_request *req) +{ + struct tws_softc *sc = req->sc; + struct tws_command_header *sense; + struct tws_event_packet event; + u_int16_t aen_code=0; + + TWS_TRACE_DEBUG(sc, "aen complete", 0, req->request_id); + + untimeout(tws_timeout, req, req->thandle); + tws_unmap_request(sc, req); + + sense = (struct tws_command_header *)req->data; + + TWS_TRACE_DEBUG(sc,"sense code, key",sense->sense_data[0], + sense->sense_data[2]); + TWS_TRACE_DEBUG(sc,"sense rid, seve",sense->header_desc.request_id, + sense->status_block.res__severity); + TWS_TRACE_DEBUG(sc,"sense srcnum, error",sense->status_block.srcnum, + sense->status_block.error); + TWS_TRACE_DEBUG(sc,"sense shdr, ssense",sense->header_desc.size_header, + sense->header_desc.size_sense); + + aen_code = sense->status_block.error; + + switch ( aen_code ) { + case TWS_AEN_SYNC_TIME_WITH_HOST : + tws_aen_synctime_with_host(sc); + break; + case TWS_AEN_QUEUE_EMPTY : + break; + default : + bzero(&event, sizeof(struct tws_event_packet)); + event.sequence_id = sc->seq_id; + event.time_stamp_sec = (u_int32_t)TWS_LOCAL_TIME; + event.aen_code = sense->status_block.error; + event.severity = sense->status_block.res__severity & 0x7; + event.event_src = TWS_SRC_CTRL_EVENT; + strcpy(event.severity_str, tws_sev_str[event.severity]); + event.retrieved = TWS_AEN_NOT_RETRIEVED; + + bcopy(sense->err_specific_desc, event.parameter_data, + TWS_ERROR_SPECIFIC_DESC_LEN); + event.parameter_data[TWS_ERROR_SPECIFIC_DESC_LEN - 1] = '\0'; + event.parameter_len = (u_int8_t)strlen(event.parameter_data)+1; + + if ( event.parameter_len < TWS_ERROR_SPECIFIC_DESC_LEN ) { + event.parameter_len += ((u_int8_t)strlen(event.parameter_data + + event.parameter_len) + 1); + } + + device_printf(sc->tws_dev, "%s: (0x%02X: 0x%04X): %s: %s\n", + event.severity_str, + event.event_src, + event.aen_code, + event.parameter_data + + (strlen(event.parameter_data) + 1), + event.parameter_data); + + mtx_lock(&sc->gen_lock); + tws_circular_aenq_insert(sc, &sc->aen_q, &event); + sc->seq_id++; + mtx_unlock(&sc->gen_lock); + break; + + } + + free(req->data, M_TWS); + + req->state = TWS_REQ_STATE_FREE; + + if ( aen_code != TWS_AEN_QUEUE_EMPTY ) { + /* timeout(tws_fetch_aen, sc, 1);*/ + sc->stats.num_aens++; + tws_fetch_aen((void *)sc); + } +} + +void +tws_cmd_complete(struct tws_request *req) +{ + struct tws_softc *sc = req->sc; + + untimeout(tws_timeout, req, req->ccb_ptr->ccb_h.timeout_ch); + tws_unmap_request(sc, req); +} + +static void +tws_err_complete(struct tws_softc *sc, u_int64_t mfa) +{ + struct tws_command_header *hdr; + struct tws_sense *sen; + struct tws_request *req; + u_int16_t req_id; + u_int32_t reg, status; + + if ( !mfa ) { + TWS_TRACE_DEBUG(sc, "null mfa", 0, mfa); + return; + } else { + /* lookup the sense */ + sen = tws_find_sense_from_mfa(sc, mfa); + if ( sen == NULL ) { + TWS_TRACE_DEBUG(sc, "found null req", 0, mfa); + return; + } + hdr = sen->hdr; + TWS_TRACE_DEBUG(sc, "sen, hdr", sen, hdr); + req_id = hdr->header_desc.request_id; + req = &sc->reqs[req_id]; + TWS_TRACE_DEBUG(sc, "req, id", req, req_id); + if ( req->error_code != TWS_REQ_RET_SUBMIT_SUCCESS ) + TWS_TRACE_DEBUG(sc, "submit failure?", 0, req->error_code); + } + + switch (req->type) { + case TWS_REQ_TYPE_PASSTHRU : + tws_passthru_err_complete(req, hdr); + break; + case TWS_REQ_TYPE_GETSET_PARAM : + tws_getset_param_complete(req); + break; + case TWS_REQ_TYPE_SCSI_IO : + tws_scsi_err_complete(req, hdr); + break; + + } + + mtx_lock(&sc->io_lock); + hdr->header_desc.size_header = 128; + reg = (u_int32_t)( mfa>>32); + tws_write_reg(sc, TWS_I2O0_HOBQPH, reg, 4); + reg = (u_int32_t)(mfa); + tws_write_reg(sc, TWS_I2O0_HOBQPL, reg, 4); + + status = tws_read_reg(sc, TWS_I2O0_STATUS, 4); + if ( status & TWS_BIT13 ) { + device_printf(sc->tws_dev, "OBFL Overrun\n"); + sc->obfl_q_overrun = true; + } + mtx_unlock(&sc->io_lock); +} + +static void +tws_scsi_err_complete(struct tws_request *req, struct tws_command_header *hdr) +{ + u_int8_t *sense_data; + struct tws_softc *sc = req->sc; + union ccb *ccb = req->ccb_ptr; + + TWS_TRACE_DEBUG(sc, "sbe, cmd_status", hdr->status_block.error, + req->cmd_pkt->cmd.pkt_a.status); + if ( hdr->status_block.error == TWS_ERROR_LOGICAL_UNIT_NOT_SUPPORTED || + hdr->status_block.error == TWS_ERROR_UNIT_OFFLINE ) { + + if ( ccb->ccb_h.target_lun ) { + TWS_TRACE_DEBUG(sc, "invalid lun error",0,0); + ccb->ccb_h.status |= CAM_LUN_INVALID; + } else { + TWS_TRACE_DEBUG(sc, "invalid target error",0,0); + ccb->ccb_h.status |= CAM_TID_INVALID; + } + + } else { + TWS_TRACE_DEBUG(sc, "scsi status error",0,0); + ccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR; + if (((ccb->csio.cdb_io.cdb_bytes[0] == 0x1A) && + (hdr->status_block.error == TWS_ERROR_NOT_SUPPORTED))) { + ccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID; + TWS_TRACE_DEBUG(sc, "page mode not supported",0,0); + } + } + + /* if there were no error simply mark complete error */ + if (ccb->ccb_h.status == 0) + ccb->ccb_h.status = CAM_REQ_CMP_ERR; + + sense_data = (u_int8_t *)&ccb->csio.sense_data; + if (sense_data) { + memcpy(sense_data, hdr->sense_data, TWS_SENSE_DATA_LENGTH ); + ccb->csio.sense_len = TWS_SENSE_DATA_LENGTH; + ccb->ccb_h.status |= CAM_AUTOSNS_VALID; + } + ccb->csio.scsi_status = req->cmd_pkt->cmd.pkt_a.status; + + ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + mtx_lock(&sc->sim_lock); + xpt_done(ccb); + mtx_unlock(&sc->sim_lock); + + untimeout(tws_timeout, req, req->ccb_ptr->ccb_h.timeout_ch); + tws_unmap_request(req->sc, req); + mtx_lock(&sc->q_lock); + tws_q_remove_request(sc, req, TWS_BUSY_Q); + tws_q_insert_tail(sc, req, TWS_FREE_Q); + mtx_unlock(&sc->q_lock); +} + +static void +tws_passthru_err_complete(struct tws_request *req, + struct tws_command_header *hdr) +{ + TWS_TRACE_DEBUG(req->sc, "entry", hdr, req->request_id); + req->error_code = hdr->status_block.error; + memcpy(&(req->cmd_pkt->hdr), hdr, sizeof(struct tws_command_header)); + tws_passthru_complete(req); +} + +static void +tws_drain_busy_queue(struct tws_softc *sc) +{ + struct tws_request *req; + union ccb *ccb; + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + + mtx_lock(&sc->q_lock); + req = tws_q_remove_tail(sc, TWS_BUSY_Q); + mtx_unlock(&sc->q_lock); + while ( req ) { + TWS_TRACE_DEBUG(sc, "moved to TWS_COMPLETE_Q", 0, req->request_id); + untimeout(tws_timeout, req, req->ccb_ptr->ccb_h.timeout_ch); + + req->error_code = TWS_REQ_RET_RESET; + ccb = (union ccb *)(req->ccb_ptr); + + ccb->ccb_h.status &= ~CAM_SIM_QUEUED; + ccb->ccb_h.status |= CAM_REQUEUE_REQ; + ccb->ccb_h.status |= CAM_SCSI_BUS_RESET; + + tws_unmap_request(req->sc, req); + + mtx_lock(&sc->sim_lock); + xpt_done(req->ccb_ptr); + mtx_unlock(&sc->sim_lock); + + mtx_lock(&sc->q_lock); + tws_q_insert_tail(sc, req, TWS_FREE_Q); + req = tws_q_remove_tail(sc, TWS_BUSY_Q); + mtx_unlock(&sc->q_lock); + } +} + + +static void +tws_drain_reserved_reqs(struct tws_softc *sc) +{ + struct tws_request *r; + + r = &sc->reqs[TWS_REQ_TYPE_AEN_FETCH]; + if ( r->state != TWS_REQ_STATE_FREE ) { + TWS_TRACE_DEBUG(sc, "reset aen req", 0, 0); + untimeout(tws_timeout, r, r->thandle); + tws_unmap_request(sc, r); + free(r->data, M_TWS); + r->state = TWS_REQ_STATE_FREE; + r->error_code = TWS_REQ_RET_RESET; + } + + r = &sc->reqs[TWS_REQ_TYPE_PASSTHRU]; + if ( r->state == TWS_REQ_STATE_BUSY ) { + TWS_TRACE_DEBUG(sc, "reset passthru req", 0, 0); + r->error_code = TWS_REQ_RET_RESET; + } + + r = &sc->reqs[TWS_REQ_TYPE_GETSET_PARAM]; + if ( r->state != TWS_REQ_STATE_FREE ) { + TWS_TRACE_DEBUG(sc, "reset setparam req", 0, 0); + untimeout(tws_timeout, r, r->thandle); + tws_unmap_request(sc, r); + free(r->data, M_TWS); + r->state = TWS_REQ_STATE_FREE; + r->error_code = TWS_REQ_RET_RESET; + } +} + +static void +tws_drain_response_queue(struct tws_softc *sc) +{ + u_int16_t req_id; + u_int64_t mfa; + while ( tws_get_response(sc, &req_id, &mfa) ); +} + + +static int32_t +tws_execute_scsi(struct tws_softc *sc, union ccb *ccb) +{ + struct tws_command_packet *cmd_pkt; + struct tws_request *req; + struct ccb_hdr *ccb_h = &(ccb->ccb_h); + struct ccb_scsiio *csio = &(ccb->csio); + int error; + u_int16_t lun; + + mtx_assert(&sc->sim_lock, MA_OWNED); + if (ccb_h->target_id >= TWS_MAX_NUM_UNITS) { + TWS_TRACE_DEBUG(sc, "traget id too big", ccb_h->target_id, ccb_h->target_lun); + ccb_h->status |= CAM_TID_INVALID; + xpt_done(ccb); + return(0); + } + if (ccb_h->target_lun >= TWS_MAX_NUM_LUNS) { + TWS_TRACE_DEBUG(sc, "target lun 2 big", ccb_h->target_id, ccb_h->target_lun); + ccb_h->status |= CAM_LUN_INVALID; + xpt_done(ccb); + return(0); + } + + if(ccb_h->flags & CAM_CDB_PHYS) { + TWS_TRACE_DEBUG(sc, "cdb phy", ccb_h->target_id, ccb_h->target_lun); + ccb_h->status = CAM_REQ_INVALID; + xpt_done(ccb); + return(0); + } + + /* + * We are going to work on this request. Mark it as enqueued (though + * we don't actually queue it...) + */ + ccb_h->status |= CAM_SIM_QUEUED; + + req = tws_get_request(sc, TWS_REQ_TYPE_SCSI_IO); + if ( !req ) { + TWS_TRACE_DEBUG(sc, "no reqs", ccb_h->target_id, ccb_h->target_lun); + ccb_h->status |= CAM_REQUEUE_REQ; + xpt_done(ccb); + return(0); + } + + if((ccb_h->flags & CAM_DIR_MASK) != CAM_DIR_NONE) { + if(ccb_h->flags & CAM_DIR_IN) + req->flags |= TWS_DIR_IN; + if(ccb_h->flags & CAM_DIR_OUT) + req->flags |= TWS_DIR_OUT; + } else { + req->flags = TWS_DIR_NONE; /* no data */ + } + + req->type = TWS_REQ_TYPE_SCSI_IO; + req->cb = tws_scsi_complete; + + cmd_pkt = req->cmd_pkt; + /* cmd_pkt->hdr.header_desc.size_header = 128; */ + cmd_pkt->cmd.pkt_a.res__opcode = TWS_FW_CMD_EXECUTE_SCSI; + cmd_pkt->cmd.pkt_a.unit = ccb_h->target_id; + cmd_pkt->cmd.pkt_a.status = 0; + cmd_pkt->cmd.pkt_a.sgl_offset = 16; + + /* lower nibble */ + lun = ccb_h->target_lun & 0XF; + lun = lun << 12; + cmd_pkt->cmd.pkt_a.lun_l4__req_id = lun | req->request_id; + /* upper nibble */ + lun = ccb_h->target_lun & 0XF0; + lun = lun << 8; + cmd_pkt->cmd.pkt_a.lun_h4__sgl_entries = lun; + +#ifdef TWS_DEBUG + if ( csio->cdb_len > 16 ) + TWS_TRACE(sc, "cdb len too big", ccb_h->target_id, csio->cdb_len); +#endif + + if(ccb_h->flags & CAM_CDB_POINTER) + bcopy(csio->cdb_io.cdb_ptr, cmd_pkt->cmd.pkt_a.cdb, csio->cdb_len); + else + bcopy(csio->cdb_io.cdb_bytes, cmd_pkt->cmd.pkt_a.cdb, csio->cdb_len); + + if (!(ccb_h->flags & CAM_DATA_PHYS)) { + /* Virtual data addresses. Need to convert them... */ + if (!(ccb_h->flags & CAM_SCATTER_VALID)) { + if (csio->dxfer_len > TWS_MAX_IO_SIZE) { + TWS_TRACE(sc, "I/O is big", csio->dxfer_len, 0); + tws_release_request(req); + ccb_h->status = CAM_REQ_TOO_BIG; + xpt_done(ccb); + return(0); + } + + req->length = csio->dxfer_len; + if (req->length) { + req->data = csio->data_ptr; + /* there is 1 sgl_entrie */ + /* cmd_pkt->cmd.pkt_a.lun_h4__sgl_entries |= 1; */ + } + } else { + TWS_TRACE_DEBUG(sc, "got sglist", ccb_h->target_id, ccb_h->target_lun); + tws_release_request(req); + ccb_h->status = CAM_REQ_INVALID; + xpt_done(ccb); + return(0); + } + } else { + /* Data addresses are physical. */ + TWS_TRACE_DEBUG(sc, "Phy data addr", ccb_h->target_id, ccb_h->target_lun); + tws_release_request(req); + ccb_h->status = CAM_REQ_INVALID; + ccb_h->status &= ~CAM_SIM_QUEUED; + xpt_done(ccb); + return(0); + } + /* save ccb ptr */ + req->ccb_ptr = ccb; + /* + * tws_map_load_data_callback will fill in the SGL, + * and submit the I/O. + */ + sc->stats.scsi_ios++; + ccb_h->timeout_ch = timeout(tws_timeout, req, (ccb_h->timeout * hz)/1000); + error = tws_map_request(sc, req); + return(error); +} + + +int +tws_send_scsi_cmd(struct tws_softc *sc, int cmd) +{ + struct tws_request *req; + struct tws_command_packet *cmd_pkt; + int error; + + TWS_TRACE_DEBUG(sc, "entry",sc, cmd); + req = tws_get_request(sc, TWS_REQ_TYPE_AEN_FETCH); + + if ( req == NULL ) + return(ENOMEM); + + req->cb = tws_aen_complete; + + cmd_pkt = req->cmd_pkt; + cmd_pkt->cmd.pkt_a.res__opcode = TWS_FW_CMD_EXECUTE_SCSI; + cmd_pkt->cmd.pkt_a.status = 0; + cmd_pkt->cmd.pkt_a.unit = 0; + cmd_pkt->cmd.pkt_a.sgl_offset = 16; + cmd_pkt->cmd.pkt_a.lun_l4__req_id = req->request_id; + + cmd_pkt->cmd.pkt_a.cdb[0] = (u_int8_t)cmd; + cmd_pkt->cmd.pkt_a.cdb[4] = 128; + + req->length = TWS_SECTOR_SIZE; + req->data = malloc(TWS_SECTOR_SIZE, M_TWS, M_NOWAIT); + if ( req->data == NULL ) + return(ENOMEM); + bzero(req->data, TWS_SECTOR_SIZE); + req->flags = TWS_DIR_IN; + + req->thandle = timeout(tws_timeout, req, (TWS_IO_TIMEOUT * hz)); + error = tws_map_request(sc, req); + return(error); + +} + +int +tws_set_param(struct tws_softc *sc, u_int32_t table_id, u_int32_t param_id, + u_int32_t param_size, void *data) +{ + struct tws_request *req; + struct tws_command_packet *cmd_pkt; + union tws_command_giga *cmd; + struct tws_getset_param *param; + int error; + + req = tws_get_request(sc, TWS_REQ_TYPE_GETSET_PARAM); + if ( req == NULL ) { + TWS_TRACE_DEBUG(sc, "null req", 0, 0); + return(ENOMEM); + } + + req->length = TWS_SECTOR_SIZE; + req->data = malloc(TWS_SECTOR_SIZE, M_TWS, M_NOWAIT); + if ( req->data == NULL ) + return(ENOMEM); + bzero(req->data, TWS_SECTOR_SIZE); + param = (struct tws_getset_param *)req->data; + + req->cb = tws_getset_param_complete; + req->flags = TWS_DIR_OUT; + cmd_pkt = req->cmd_pkt; + + cmd = &cmd_pkt->cmd.pkt_g; + cmd->param.sgl_off__opcode = + BUILD_SGL_OFF__OPCODE(2, TWS_FW_CMD_SET_PARAM); + cmd->param.request_id = (u_int8_t)req->request_id; + cmd->param.host_id__unit = 0; + cmd->param.param_count = 1; + cmd->param.size = 2; /* map routine will add sgls */ + + /* Specify which parameter we want to set. */ + param->table_id = (table_id | TWS_9K_PARAM_DESCRIPTOR); + param->parameter_id = (u_int8_t)(param_id); + param->parameter_size_bytes = (u_int16_t)param_size; + memcpy(param->data, data, param_size); + + req->thandle = timeout(tws_timeout, req, (TWS_IOCTL_TIMEOUT * hz)); + error = tws_map_request(sc, req); + return(error); + +} + +int +tws_get_param(struct tws_softc *sc, u_int32_t table_id, u_int32_t param_id, + u_int32_t param_size, void *data) +{ + struct tws_request *req; + struct tws_command_packet *cmd_pkt; + union tws_command_giga *cmd; + struct tws_getset_param *param; + u_int16_t reqid; + u_int64_t mfa; + int error = SUCCESS; + + + req = tws_get_request(sc, TWS_REQ_TYPE_GETSET_PARAM); + if ( req == NULL ) { + TWS_TRACE_DEBUG(sc, "null req", 0, 0); + return(FAILURE); + } + + req->length = TWS_SECTOR_SIZE; + req->data = malloc(TWS_SECTOR_SIZE, M_TWS, M_NOWAIT); + if ( req->data == NULL ) + return(FAILURE); + bzero(req->data, TWS_SECTOR_SIZE); + param = (struct tws_getset_param *)req->data; + + req->cb = NULL; + req->flags = TWS_DIR_IN; + cmd_pkt = req->cmd_pkt; + + cmd = &cmd_pkt->cmd.pkt_g; + cmd->param.sgl_off__opcode = + BUILD_SGL_OFF__OPCODE(2, TWS_FW_CMD_GET_PARAM); + cmd->param.request_id = (u_int8_t)req->request_id; + cmd->param.host_id__unit = 0; + cmd->param.param_count = 1; + cmd->param.size = 2; /* map routine will add sgls */ + + /* Specify which parameter we want to set. */ + param->table_id = (table_id | TWS_9K_PARAM_DESCRIPTOR); + param->parameter_id = (u_int8_t)(param_id); + param->parameter_size_bytes = (u_int16_t)param_size; + + error = tws_map_request(sc, req); + if (!error) { + reqid = tws_poll4_response(sc, &mfa); + tws_unmap_request(sc, req); + + if ( reqid == TWS_REQ_TYPE_GETSET_PARAM ) { + memcpy(data, param->data, param_size); + } else { + error = FAILURE; + } + } + + free(req->data, M_TWS); + req->state = TWS_REQ_STATE_FREE; + return(error); + +} + +void +tws_unmap_request(struct tws_softc *sc, struct tws_request *req) +{ + if (req->data != NULL) { + if ( req->flags & TWS_DIR_IN ) + bus_dmamap_sync(sc->data_tag, req->dma_map, + BUS_DMASYNC_POSTREAD); + if ( req->flags & TWS_DIR_OUT ) + bus_dmamap_sync(sc->data_tag, req->dma_map, + BUS_DMASYNC_POSTWRITE); + mtx_lock(&sc->io_lock); + bus_dmamap_unload(sc->data_tag, req->dma_map); + mtx_unlock(&sc->io_lock); + } +} + +int32_t +tws_map_request(struct tws_softc *sc, struct tws_request *req) +{ + int32_t error = 0; + + + /* If the command involves data, map that too. */ + if (req->data != NULL) { + int my_flags = ((req->type == TWS_REQ_TYPE_SCSI_IO) ? BUS_DMA_WAITOK : BUS_DMA_NOWAIT); + + /* + * Map the data buffer into bus space and build the SG list. + */ + mtx_lock(&sc->io_lock); + error = bus_dmamap_load(sc->data_tag, req->dma_map, + req->data, req->length, + tws_dmamap_data_load_cbfn, req, + my_flags); + mtx_unlock(&sc->io_lock); + + if (error == EINPROGRESS) { + TWS_TRACE(sc, "in progress", 0, error); + tws_freeze_simq(sc, req); + } + } else { /* no data involved */ + error = tws_submit_command(sc, req); + } + return(error); +} + + +static void +tws_dmamap_data_load_cbfn(void *arg, bus_dma_segment_t *segs, + int nseg, int error) +{ + struct tws_request *req = (struct tws_request *)arg; + struct tws_softc *sc = req->sc; + u_int16_t sgls = nseg; + void *sgl_ptr; + struct tws_cmd_generic *gcmd; + + + if ( error == EFBIG ) { + TWS_TRACE(sc, "not enough data segs", 0, nseg); + req->error_code = error; + req->ccb_ptr->ccb_h.status = CAM_REQ_TOO_BIG; + return; + } + + if ( req->flags & TWS_DIR_IN ) + bus_dmamap_sync(req->sc->data_tag, req->dma_map, + BUS_DMASYNC_PREREAD); + if ( req->flags & TWS_DIR_OUT ) + bus_dmamap_sync(req->sc->data_tag, req->dma_map, + BUS_DMASYNC_PREWRITE); + if ( segs ) { + if ( (req->type == TWS_REQ_TYPE_PASSTHRU && + GET_OPCODE(req->cmd_pkt->cmd.pkt_a.res__opcode) != + TWS_FW_CMD_EXECUTE_SCSI) || + req->type == TWS_REQ_TYPE_GETSET_PARAM) { + gcmd = &req->cmd_pkt->cmd.pkt_g.generic; + sgl_ptr = (u_int32_t *)(gcmd) + gcmd->size; + gcmd->size += sgls * + ((req->sc->is64bit && !tws_use_32bit_sgls) ? 4 :2 ); + tws_fill_sg_list(req->sc, (void *)segs, sgl_ptr, sgls); + + } else { + tws_fill_sg_list(req->sc, (void *)segs, + (void *)req->cmd_pkt->cmd.pkt_a.sg_list, sgls); + req->cmd_pkt->cmd.pkt_a.lun_h4__sgl_entries |= sgls ; + } + } + + + req->error_code = tws_submit_command(req->sc, req); + +} + + +static void +tws_fill_sg_list(struct tws_softc *sc, void *sgl_src, void *sgl_dest, + u_int16_t num_sgl_entries) +{ + int i; + + if ( sc->is64bit ) { + struct tws_sg_desc64 *sgl_s = (struct tws_sg_desc64 *)sgl_src; + + if ( !tws_use_32bit_sgls ) { + struct tws_sg_desc64 *sgl_d = (struct tws_sg_desc64 *)sgl_dest; + if ( num_sgl_entries > TWS_MAX_64BIT_SG_ELEMENTS ) + TWS_TRACE(sc, "64bit sg overflow", num_sgl_entries, 0); + for (i = 0; i < num_sgl_entries; i++) { + sgl_d[i].address = sgl_s->address; + sgl_d[i].length = sgl_s->length; + sgl_d[i].flag = 0; + sgl_d[i].reserved = 0; + sgl_s = (struct tws_sg_desc64 *) (((u_int8_t *)sgl_s) + + sizeof(bus_dma_segment_t)); + } + } else { + struct tws_sg_desc32 *sgl_d = (struct tws_sg_desc32 *)sgl_dest; + if ( num_sgl_entries > TWS_MAX_32BIT_SG_ELEMENTS ) + TWS_TRACE(sc, "32bit sg overflow", num_sgl_entries, 0); + for (i = 0; i < num_sgl_entries; i++) { + sgl_d[i].address = sgl_s->address; + sgl_d[i].length = sgl_s->length; + sgl_d[i].flag = 0; + sgl_s = (struct tws_sg_desc64 *) (((u_int8_t *)sgl_s) + + sizeof(bus_dma_segment_t)); + } + } + } else { + struct tws_sg_desc32 *sgl_s = (struct tws_sg_desc32 *)sgl_src; + struct tws_sg_desc32 *sgl_d = (struct tws_sg_desc32 *)sgl_dest; + + if ( num_sgl_entries > TWS_MAX_32BIT_SG_ELEMENTS ) + TWS_TRACE(sc, "32bit sg overflow", num_sgl_entries, 0); + + + for (i = 0; i < num_sgl_entries; i++) { + sgl_d[i].address = sgl_s[i].address; + sgl_d[i].length = sgl_s[i].length; + sgl_d[i].flag = 0; + } + } +} + + +void +tws_intr(void *arg) +{ + struct tws_softc *sc = (struct tws_softc *)arg; + u_int32_t histat=0, db=0; + + if (!(sc)) { + device_printf(sc->tws_dev, "null softc!!!\n"); + return; + } + + if ( tws_get_state(sc) == TWS_RESET ) { + return; + } + + if ( tws_get_state(sc) != TWS_ONLINE ) { + return; + } + + sc->stats.num_intrs++; + histat = tws_read_reg(sc, TWS_I2O0_HISTAT, 4); + if ( histat & TWS_BIT2 ) { + TWS_TRACE_DEBUG(sc, "door bell :)", histat, TWS_I2O0_HISTAT); + db = tws_read_reg(sc, TWS_I2O0_IOBDB, 4); + if ( db & TWS_BIT21 ) { + tws_intr_attn_error(sc); + return; + } + if ( db & TWS_BIT18 ) { + tws_intr_attn_aen(sc); + } + } + + if ( histat & TWS_BIT3 ) { + tws_intr_resp(sc); + } +} + +static void +tws_intr_attn_aen(struct tws_softc *sc) +{ + u_int32_t db=0; + + /* maskoff db intrs untill all the aens are fetched */ + /* tws_disable_db_intr(sc); */ + tws_fetch_aen((void *)sc); + tws_write_reg(sc, TWS_I2O0_HOBDBC, TWS_BIT18, 4); + db = tws_read_reg(sc, TWS_I2O0_IOBDB, 4); + +} + +static void +tws_intr_attn_error(struct tws_softc *sc) +{ + u_int32_t db=0; + + TWS_TRACE(sc, "attn error", 0, 0); + tws_write_reg(sc, TWS_I2O0_HOBDBC, ~0, 4); + db = tws_read_reg(sc, TWS_I2O0_IOBDB, 4); + device_printf(sc->tws_dev, "Micro controller error.\n"); + tws_reset(sc); +} + +static void +tws_intr_resp(struct tws_softc *sc) +{ + u_int16_t req_id; + u_int64_t mfa; + + while ( tws_get_response(sc, &req_id, &mfa) ) { + sc->stats.reqs_out++; + if ( req_id == TWS_INVALID_REQID ) { + TWS_TRACE_DEBUG(sc, "invalid req_id", mfa, req_id); + sc->stats.reqs_errored++; + tws_err_complete(sc, mfa); + continue; + } + sc->reqs[req_id].cb(&sc->reqs[req_id]); + } + +} + + +static void +tws_poll(struct cam_sim *sim) +{ + struct tws_softc *sc = (struct tws_softc *)cam_sim_softc(sim); + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + tws_intr((void *) sc); +} + +void +tws_timeout(void *arg) +{ + struct tws_request *req = (struct tws_request *)arg; + struct tws_softc *sc = req->sc; + + + if ( req->error_code == TWS_REQ_RET_RESET ) { + return; + } + + mtx_lock(&sc->gen_lock); + if ( req->error_code == TWS_REQ_RET_RESET ) { + mtx_unlock(&sc->gen_lock); + return; + } + + if ( tws_get_state(sc) == TWS_RESET ) { + mtx_unlock(&sc->gen_lock); + return; + } + + tws_teardown_intr(sc); + xpt_freeze_simq(sc->sim, 1); + + tws_send_event(sc, TWS_RESET_START); + + if (req->type == TWS_REQ_TYPE_SCSI_IO) { + device_printf(sc->tws_dev, "I/O Request timed out... Resetting controller\n"); + } else if (req->type == TWS_REQ_TYPE_PASSTHRU) { + device_printf(sc->tws_dev, "IOCTL Request timed out... Resetting controller\n"); + } else { + device_printf(sc->tws_dev, "Internal Request timed out... Resetting controller\n"); + } + + tws_assert_soft_reset(sc); + tws_turn_off_interrupts(sc); + tws_reset_cb( (void*) sc ); + tws_reinit( (void*) sc ); + +// device_printf(sc->tws_dev, "Controller Reset complete!\n"); + tws_send_event(sc, TWS_RESET_COMPLETE); + mtx_unlock(&sc->gen_lock); + + xpt_release_simq(sc->sim, 1); + tws_setup_intr(sc, sc->irqs); +} + +void +tws_reset(void *arg) +{ + struct tws_softc *sc = (struct tws_softc *)arg; + + mtx_lock(&sc->gen_lock); + if ( tws_get_state(sc) == TWS_RESET ) { + mtx_unlock(&sc->gen_lock); + return; + } + + tws_teardown_intr(sc); + xpt_freeze_simq(sc->sim, 1); + + tws_send_event(sc, TWS_RESET_START); + + device_printf(sc->tws_dev, "Resetting controller\n"); + + tws_assert_soft_reset(sc); + tws_turn_off_interrupts(sc); + tws_reset_cb( (void*) sc ); + tws_reinit( (void*) sc ); + +// device_printf(sc->tws_dev, "Controller Reset complete!\n"); + tws_send_event(sc, TWS_RESET_COMPLETE); + mtx_unlock(&sc->gen_lock); + + xpt_release_simq(sc->sim, 1); + tws_setup_intr(sc, sc->irqs); +} + +static void +tws_reset_cb(void *arg) +{ + struct tws_softc *sc = (struct tws_softc *)arg; + time_t endt; + int found = 0; + u_int32_t reg; + + if ( tws_get_state(sc) != TWS_RESET ) { + return; + } + +// device_printf(sc->tws_dev, "Draining Busy Queue\n"); + tws_drain_busy_queue(sc); +// device_printf(sc->tws_dev, "Draining Reserved Reqs\n"); + tws_drain_reserved_reqs(sc); +// device_printf(sc->tws_dev, "Draining Response Queue\n"); + tws_drain_response_queue(sc); + +// device_printf(sc->tws_dev, "Looking for controller ready flag...\n"); + endt = TWS_LOCAL_TIME + TWS_POLL_TIMEOUT; + while ((TWS_LOCAL_TIME <= endt) && (!found)) { + reg = tws_read_reg(sc, TWS_I2O0_SCRPD3, 4); + if ( reg & TWS_BIT13 ) { + found = 1; +// device_printf(sc->tws_dev, " ... Got it!\n"); + } + } + if ( !found ) + device_printf(sc->tws_dev, " ... Controller ready flag NOT found!\n"); +} + +static void +tws_reinit(void *arg) +{ + struct tws_softc *sc = (struct tws_softc *)arg; + int timeout_val=0; + int try=2; + int done=0; + + +// device_printf(sc->tws_dev, "Waiting for Controller Ready\n"); + while ( !done && try ) { + if ( tws_ctlr_ready(sc) ) { + done = 1; + break; + } else { + timeout_val += 5; + if ( timeout_val >= TWS_RESET_TIMEOUT ) { + timeout_val = 0; + if ( try ) + tws_assert_soft_reset(sc); + try--; + } + mtx_sleep(sc, &sc->gen_lock, 0, "tws_reinit", 5*hz); + } + } + + if (!done) { + device_printf(sc->tws_dev, "FAILED to get Controller Ready!\n"); + return; + } + + sc->obfl_q_overrun = false; +// device_printf(sc->tws_dev, "Sending initConnect\n"); + if ( tws_init_connect(sc, tws_queue_depth) ) { + TWS_TRACE_DEBUG(sc, "initConnect failed", 0, sc->is64bit); + } + tws_init_obfl_q(sc); + + tws_turn_on_interrupts(sc); + + if ( sc->chan ) { + sc->chan = 0; + wakeup_one((void *)&sc->chan); + } +} + + +static void +tws_freeze_simq(struct tws_softc *sc, struct tws_request *req) +{ + /* Only for IO commands */ + if (req->type == TWS_REQ_TYPE_SCSI_IO) { + union ccb *ccb = (union ccb *)(req->ccb_ptr); + + xpt_freeze_simq(sc->sim, 1); + ccb->ccb_h.status |= CAM_RELEASE_SIMQ; + ccb->ccb_h.status |= CAM_REQUEUE_REQ; + } +} + + +TUNABLE_INT("hw.tws.cam_depth", &tws_cam_depth); Property changes on: stable/8/sys/dev/tws/tws_cam.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_hdm.c =================================================================== --- stable/8/sys/dev/tws/tws_hdm.c (nonexistent) +++ stable/8/sys/dev/tws/tws_hdm.c (revision 226243) @@ -0,0 +1,535 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + + +#include +#include +#include + + +int tws_use_32bit_sgls=0; +extern u_int64_t mfa_base; +extern struct tws_request *tws_get_request(struct tws_softc *sc, + u_int16_t type); +extern void tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ); +extern struct tws_request * tws_q_remove_request(struct tws_softc *sc, + struct tws_request *req, u_int8_t q_type ); + +extern void tws_cmd_complete(struct tws_request *req); +extern void tws_print_stats(void *arg); +extern int tws_send_scsi_cmd(struct tws_softc *sc, int cmd); +extern int tws_set_param(struct tws_softc *sc, u_int32_t table_id, + u_int32_t param_id, u_int32_t param_size, void *data); +extern int tws_get_param(struct tws_softc *sc, u_int32_t table_id, + u_int32_t param_id, u_int32_t param_size, void *data); +extern void tws_reset(void *arg); + +int tws_init_connect(struct tws_softc *sc, u_int16_t mc); +int tws_init_ctlr(struct tws_softc *sc); +int tws_submit_command(struct tws_softc *sc, struct tws_request *req); +void tws_nop_cmd(void *arg); +u_int16_t tws_poll4_response(struct tws_softc *sc, u_int64_t *mfa); +boolean tws_get_response(struct tws_softc *sc, u_int16_t *req_id, + u_int64_t *mfa); +boolean tws_ctlr_ready(struct tws_softc *sc); +void tws_turn_on_interrupts(struct tws_softc *sc); +void tws_turn_off_interrupts(struct tws_softc *sc); +boolean tws_ctlr_reset(struct tws_softc *sc); +void tws_assert_soft_reset(struct tws_softc *sc); + +int tws_send_generic_cmd(struct tws_softc *sc, u_int8_t opcode); +void tws_fetch_aen(void *arg); +void tws_disable_db_intr(struct tws_softc *sc); +void tws_enable_db_intr(struct tws_softc *sc); +void tws_aen_synctime_with_host(struct tws_softc *sc); +void tws_init_obfl_q(struct tws_softc *sc); +void tws_display_ctlr_info(struct tws_softc *sc); + +int +tws_init_ctlr(struct tws_softc *sc) +{ + u_int64_t reg; + u_int32_t regh, regl; + + TWS_TRACE_DEBUG(sc, "entry", sc, sc->is64bit); + sc->obfl_q_overrun = false; + if ( tws_init_connect(sc, tws_queue_depth) ) + { + TWS_TRACE_DEBUG(sc, "initConnect failed", 0, sc->is64bit); + return(FAILURE); + + } + + + while( 1 ) { + regh = tws_read_reg(sc, TWS_I2O0_IOPOBQPH, 4); + regl = tws_read_reg(sc, TWS_I2O0_IOPOBQPL, 4); + reg = (((u_int64_t)regh) << 32) | regl; + TWS_TRACE_DEBUG(sc, "host outbound clenup",reg, regl); + if ( regh == TWS_FIFO_EMPTY32 ) + break; + } + + tws_init_obfl_q(sc); + tws_display_ctlr_info(sc); + tws_write_reg(sc, TWS_I2O0_HOBDBC, ~0, 4); + tws_turn_on_interrupts(sc); + return(SUCCESS); +} + +void +tws_init_obfl_q(struct tws_softc *sc) +{ + int i=0; + u_int64_t paddr; + u_int32_t paddrh, paddrl, status; + + TWS_TRACE_DEBUG(sc, "entry", 0, sc->obfl_q_overrun); + + while ( i < tws_queue_depth ) { + paddr = sc->sense_bufs[i].hdr_pkt_phy; + paddrh = (u_int32_t)( paddr>>32); + paddrl = (u_int32_t) paddr; + tws_write_reg(sc, TWS_I2O0_HOBQPH, paddrh, 4); + tws_write_reg(sc, TWS_I2O0_HOBQPL, paddrl, 4); + + status = tws_read_reg(sc, TWS_I2O0_STATUS, 4); + if ( status & TWS_BIT13 ) { + device_printf(sc->tws_dev, "OBFL Overrun\n"); + sc->obfl_q_overrun = true; + break; + } + i++; + } + + if ( i == tws_queue_depth ) + sc->obfl_q_overrun = false; +} + +int +tws_init_connect(struct tws_softc *sc, u_int16_t mcreadits ) +{ + struct tws_request *req; + struct tws_cmd_init_connect *initc; + u_int16_t reqid; + u_int64_t mfa; + + TWS_TRACE_DEBUG(sc, "entry", 0, mcreadits); +#if 0 + req = tws_get_request(sc, TWS_REQ_TYPE_INTERNAL_CMD); +#else // 0 + req = &sc->reqs[TWS_REQ_TYPE_INTERNAL_CMD]; + bzero(&req->cmd_pkt->cmd, sizeof(struct tws_command_apache)); + req->data = NULL; + req->length = 0; + req->type = TWS_REQ_TYPE_INTERNAL_CMD; + req->flags = TWS_DIR_UNKNOWN; + req->error_code = TWS_REQ_RET_INVALID; + req->cb = NULL; + req->ccb_ptr = NULL; + req->thandle.callout = NULL; + req->next = req->prev = NULL; + req->state = TWS_REQ_STATE_BUSY; +#endif // 0 + + if ( req == NULL ) { + TWS_TRACE_DEBUG(sc, "no requests", 0, 0); +// device_printf(sc->tws_dev, "No requests for initConnect\n"); + return(FAILURE); + } + + tws_swap16(0xbeef); /* just for test */ + tws_swap32(0xdeadbeef); /* just for test */ + tws_swap64(0xdeadbeef); /* just for test */ + initc = &(req->cmd_pkt->cmd.pkt_g.init_connect); + /* req->cmd_pkt->hdr.header_desc.size_header = 128; */ + + initc->res1__opcode = + BUILD_RES__OPCODE(0, TWS_FW_CMD_INIT_CONNECTION); + initc->size = 6; + initc->request_id = req->request_id; + initc->message_credits = mcreadits; + initc->features |= TWS_BIT_EXTEND; + if ( sc->is64bit && !tws_use_32bit_sgls ) + initc->features |= TWS_64BIT_SG_ADDRESSES; + /* assuming set features is always on */ + + initc->size = 6; + initc->fw_srl = sc->cinfo.working_srl = TWS_CURRENT_FW_SRL; + initc->fw_arch_id = 0; + initc->fw_branch = sc->cinfo.working_branch = 0; + initc->fw_build = sc->cinfo.working_build = 0; + + req->error_code = tws_submit_command(sc, req); + reqid = tws_poll4_response(sc, &mfa); + if ( reqid != TWS_INVALID_REQID && reqid == req->request_id ) { + sc->cinfo.fw_on_ctlr_srl = initc->fw_srl; + sc->cinfo.fw_on_ctlr_branch = initc->fw_branch; + sc->cinfo.fw_on_ctlr_build = initc->fw_build; + sc->stats.reqs_out++; + req->state = TWS_REQ_STATE_FREE; + } + else { + /* + * REVISIT::If init connect fails we need to reset the ctlr + * and try again? + */ + TWS_TRACE(sc, "unexpected req_id ", reqid, 0); + TWS_TRACE(sc, "INITCONNECT FAILED", reqid, 0); + return(FAILURE); + } + return(SUCCESS); +} + +void +tws_display_ctlr_info(struct tws_softc *sc) +{ + + uint8_t fw_ver[16], bios_ver[16], ctlr_model[16], num_phys=0; + uint32_t error[4]; + + error[0] = tws_get_param(sc, TWS_PARAM_PHYS_TABLE, + TWS_PARAM_CONTROLLER_PHYS_COUNT, 1, &num_phys); + error[1] = tws_get_param(sc, TWS_PARAM_VERSION_TABLE, + TWS_PARAM_VERSION_FW, 16, fw_ver); + error[2] = tws_get_param(sc, TWS_PARAM_VERSION_TABLE, + TWS_PARAM_VERSION_BIOS, 16, bios_ver); + error[3] = tws_get_param(sc, TWS_PARAM_VERSION_TABLE, + TWS_PARAM_CTLR_MODEL, 16, ctlr_model); + + if ( !error[0] && !error[1] && !error[2] && !error[3] ) { + device_printf( sc->tws_dev, + "Controller details: Model %.16s, %d Phys, Firmware %.16s, BIOS %.16s\n", + ctlr_model, num_phys, fw_ver, bios_ver); + } + +} + +int +tws_send_generic_cmd(struct tws_softc *sc, u_int8_t opcode) +{ + struct tws_request *req; + struct tws_cmd_generic *cmd; + + TWS_TRACE_DEBUG(sc, "entry", sc, opcode); + req = tws_get_request(sc, TWS_REQ_TYPE_INTERNAL_CMD); + + if ( req == NULL ) { + TWS_TRACE_DEBUG(sc, "no requests", 0, 0); + return(FAILURE); + } + + cmd = &(req->cmd_pkt->cmd.pkt_g.generic); + bzero(cmd, sizeof(struct tws_cmd_generic)); + /* req->cmd_pkt->hdr.header_desc.size_header = 128; */ + req->cb = tws_cmd_complete; + + cmd->sgl_off__opcode = BUILD_RES__OPCODE(0, opcode); + cmd->size = 2; + cmd->request_id = req->request_id; + cmd->host_id__unit = 0; + cmd->status = 0; + cmd->flags = 0; + cmd->count = 0; + + req->error_code = tws_submit_command(sc, req); + + return(SUCCESS); + +} + + +int +tws_submit_command(struct tws_softc *sc, struct tws_request *req) +{ + u_int32_t regl, regh; + u_int64_t mfa=0; + + /* + * mfa register read and write must be in order. + * Get the io_lock to protect against simultinous + * passthru calls + */ + mtx_lock(&sc->io_lock); + + if ( sc->obfl_q_overrun ) { + tws_init_obfl_q(sc); + } + +#ifdef TWS_PULL_MODE_ENABLE + regh = (u_int32_t)(req->cmd_pkt_phy >> 32); + /* regh = regh | TWS_MSG_ACC_MASK; */ + mfa = regh; + mfa = mfa << 32; + regl = (u_int32_t)req->cmd_pkt_phy; + regl = regl | TWS_BIT0; + mfa = mfa | regl; +#else + regh = tws_read_reg(sc, TWS_I2O0_HIBQPH, 4); + mfa = regh; + mfa = mfa << 32; + regl = tws_read_reg(sc, TWS_I2O0_HIBQPL, 4); + mfa = mfa | regl; +#endif + + mtx_unlock(&sc->io_lock); + + if ( mfa == TWS_FIFO_EMPTY ) { + TWS_TRACE_DEBUG(sc, "inbound fifo empty", mfa, 0); + + /* + * Generaly we should not get here. + * If the fifo was empty we can't do any thing much + * retry later + */ + return(TWS_REQ_RET_PEND_NOMFA); + + } + +#ifndef TWS_PULL_MODE_ENABLE + for (int i=mfa; i<(sizeof(struct tws_command_packet)+ mfa - + sizeof( struct tws_command_header)); i++) { + + bus_space_write_1(sc->bus_mfa_tag, sc->bus_mfa_handle,i, + ((u_int8_t *)&req->cmd_pkt->cmd)[i-mfa]); + + } +#endif + + if ( req->type == TWS_REQ_TYPE_SCSI_IO ) { + mtx_lock(&sc->q_lock); + tws_q_insert_tail(sc, req, TWS_BUSY_Q); + mtx_unlock(&sc->q_lock); + } + + /* + * mfa register read and write must be in order. + * Get the io_lock to protect against simultinous + * passthru calls + */ + mtx_lock(&sc->io_lock); + + tws_write_reg(sc, TWS_I2O0_HIBQPH, regh, 4); + tws_write_reg(sc, TWS_I2O0_HIBQPL, regl, 4); + + sc->stats.reqs_in++; + mtx_unlock(&sc->io_lock); + + return(TWS_REQ_RET_SUBMIT_SUCCESS); + +} + +/* + * returns true if the respose was available othewise, false. + * In the case of error the arg mfa will contain the address and + * req_id will be TWS_INVALID_REQID + */ +boolean +tws_get_response(struct tws_softc *sc, u_int16_t *req_id, u_int64_t *mfa) +{ + u_int64_t out_mfa=0, val=0; + struct tws_outbound_response out_res; + + *req_id = TWS_INVALID_REQID; + out_mfa = (u_int64_t)tws_read_reg(sc, TWS_I2O0_HOBQPH, 4); + + if ( out_mfa == TWS_FIFO_EMPTY32 ) { + return(false); + + } + out_mfa = out_mfa << 32; + val = tws_read_reg(sc, TWS_I2O0_HOBQPL, 4); + out_mfa = out_mfa | val; + + out_res = *(struct tws_outbound_response *)&out_mfa; + + if ( !out_res.not_mfa ) { + *mfa = out_mfa; + return(true); + } else { + *req_id = out_res.request_id; + } + + return(true); +} + + + + +u_int16_t +tws_poll4_response(struct tws_softc *sc, u_int64_t *mfa) +{ + u_int16_t req_id; + time_t endt; + + endt = TWS_LOCAL_TIME + TWS_POLL_TIMEOUT; + do { + if(tws_get_response(sc, &req_id, mfa)) { + + if ( req_id == TWS_INVALID_REQID ) { + TWS_TRACE_DEBUG(sc, "invalid req_id", 0, req_id); + return(TWS_INVALID_REQID); + } + return(req_id); + } + } while (TWS_LOCAL_TIME <= endt); + TWS_TRACE_DEBUG(sc, "poll timeout", 0, 0); + return(TWS_INVALID_REQID); +} + +boolean +tws_ctlr_ready(struct tws_softc *sc) +{ + u_int32_t reg; + + reg = tws_read_reg(sc, TWS_I2O0_SCRPD3, 4); + if ( reg & TWS_BIT13 ) + return(true); + else + return(false); +} + +void +tws_turn_on_interrupts(struct tws_softc *sc) +{ + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + /* turn on responce and db interrupt only */ + tws_write_reg(sc, TWS_I2O0_HIMASK, TWS_BIT0, 4); + +} + +void +tws_turn_off_interrupts(struct tws_softc *sc) +{ + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + + tws_write_reg(sc, TWS_I2O0_HIMASK, ~0, 4); + +} + +void +tws_disable_db_intr(struct tws_softc *sc) +{ + u_int32_t reg; + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + reg = tws_read_reg(sc, TWS_I2O0_HIMASK, 4); + reg = reg | TWS_BIT2; + tws_write_reg(sc, TWS_I2O0_HIMASK, reg, 4); +} + +void +tws_enable_db_intr(struct tws_softc *sc) +{ + u_int32_t reg; + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + reg = tws_read_reg(sc, TWS_I2O0_HIMASK, 4); + reg = reg & ~TWS_BIT2; + tws_write_reg(sc, TWS_I2O0_HIMASK, reg, 4); +} + +boolean +tws_ctlr_reset(struct tws_softc *sc) +{ + + u_int32_t reg; + time_t endt; + /* int i=0; */ + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + + tws_assert_soft_reset(sc); + + do { + reg = tws_read_reg(sc, TWS_I2O0_SCRPD3, 4); + } while ( reg & TWS_BIT13 ); + + endt = TWS_LOCAL_TIME + TWS_RESET_TIMEOUT; + do { + if(tws_ctlr_ready(sc)) + return(true); + } while (TWS_LOCAL_TIME <= endt); + return(false); + +} + +void +tws_assert_soft_reset(struct tws_softc *sc) +{ + u_int32_t reg; + + reg = tws_read_reg(sc, TWS_I2O0_HIBDB, 4); + TWS_TRACE_DEBUG(sc, "in bound door bell read ", reg, TWS_I2O0_HIBDB); + tws_write_reg(sc, TWS_I2O0_HIBDB, reg | TWS_BIT8, 4); + +} + +void +tws_fetch_aen(void *arg) +{ + struct tws_softc *sc = (struct tws_softc *)arg; + int error = 0; + + TWS_TRACE_DEBUG(sc, "entry", 0, 0); + + if ((error = tws_send_scsi_cmd(sc, 0x03 /* REQUEST_SENSE */))) { + TWS_TRACE_DEBUG(sc, "aen fetch send in progress", 0, 0); + } +} + +void +tws_aen_synctime_with_host(struct tws_softc *sc) +{ + + int error; + long int sync_time; + + TWS_TRACE_DEBUG(sc, "entry", sc, 0); + + sync_time = (TWS_LOCAL_TIME - (3 * 86400)) % 604800; + TWS_TRACE_DEBUG(sc, "sync_time,ts", sync_time, time_second); + TWS_TRACE_DEBUG(sc, "utc_offset", utc_offset(), 0); + error = tws_set_param(sc, TWS_PARAM_TIME_TABLE, TWS_PARAM_TIME_SCHED_TIME, + 4, &sync_time); + if ( error ) + TWS_TRACE_DEBUG(sc, "set param failed", sync_time, error); +} + +TUNABLE_INT("hw.tws.use_32bit_sgls", &tws_use_32bit_sgls); Property changes on: stable/8/sys/dev/tws/tws_hdm.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_hdm.h =================================================================== --- stable/8/sys/dev/tws/tws_hdm.h (nonexistent) +++ stable/8/sys/dev/tws/tws_hdm.h (revision 226243) @@ -0,0 +1,420 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + + +/* bit's defination */ + +#define TWS_BIT0 0x00000001 +#define TWS_BIT1 0x00000002 +#define TWS_BIT2 0x00000004 +#define TWS_BIT3 0x00000008 +#define TWS_BIT4 0x00000010 +#define TWS_BIT5 0x00000020 +#define TWS_BIT6 0x00000040 +#define TWS_BIT7 0x00000080 +#define TWS_BIT8 0x00000100 +#define TWS_BIT9 0x00000200 +#define TWS_BIT10 0x00000400 +#define TWS_BIT11 0x00000800 +#define TWS_BIT12 0x00001000 +#define TWS_BIT13 0x00002000 +#define TWS_BIT14 0x00004000 +#define TWS_BIT15 0x00008000 +#define TWS_BIT16 0x00010000 +#define TWS_BIT17 0x00020000 +#define TWS_BIT18 0x00040000 +#define TWS_BIT19 0x00080000 +#define TWS_BIT20 0x00100000 +#define TWS_BIT21 0x00200000 +#define TWS_BIT22 0x00400000 +#define TWS_BIT23 0x00800000 +#define TWS_BIT24 0x01000000 +#define TWS_BIT25 0x02000000 +#define TWS_BIT26 0x04000000 +#define TWS_BIT27 0x08000000 +#define TWS_BIT28 0x10000000 +#define TWS_BIT29 0x20000000 +#define TWS_BIT30 0x40000000 +#define TWS_BIT31 0x80000000 + +#define TWS_SENSE_DATA_LENGTH 18 +#define TWS_ERROR_SPECIFIC_DESC_LEN 98 + +/* response codes */ +#define TWS_SENSE_SCSI_CURRENT_ERROR 0x70 +#define TWS_SENSE_SCSI_DEFERRED_ERROR 0x71 + +#define TWS_SRC_CTRL_ERROR 3 +#define TWS_SRC_CTRL_EVENT 4 +#define TWS_SRC_FREEBSD_DRIVER 5 +#define TWS_SRC_FREEBSD_OS 8 + + +enum tws_sense_severity { + error = 1, + warning , + info, + debug, +}; + +/* + * Some errors of interest (in cmd_hdr->status_block.error) when a command + * is completed by the firmware with an error. + */ +#define TWS_ERROR_LOGICAL_UNIT_NOT_SUPPORTED 0x010a +#define TWS_ERROR_NOT_SUPPORTED 0x010D +#define TWS_ERROR_UNIT_OFFLINE 0x0128 +#define TWS_ERROR_MORE_DATA 0x0231 + + +/* AEN codes of interest. */ +#define TWS_AEN_QUEUE_EMPTY 0x00 +#define TWS_AEN_SOFT_RESET 0x01 +#define TWS_AEN_SYNC_TIME_WITH_HOST 0x31 + + +/* AEN severity */ +#define TWS_SEVERITY_ERROR 0x1 +#define TWS_SEVERITY_WARNING 0x2 +#define TWS_SEVERITY_INFO 0x3 +#define TWS_SEVERITY_DEBUG 0x4 + +#define TWS_64BIT_SG_ADDRESSES 0x00000001 +#define TWS_BIT_EXTEND 0x00000002 + +#define TWS_BASE_FW_SRL 24 +#define TWS_BASE_FW_BRANCH 0 +#define TWS_BASE_FW_BUILD 1 +#define TWS_CURRENT_FW_SRL 41 + +#define TWS_CURRENT_FW_BRANCH 8 +#define TWS_CURRENT_FW_BUILD 4 +#define TWS_CURRENT_ARCH_ID 0x000A + + +#define TWS_FIFO_EMPTY 0xFFFFFFFFFFFFFFFFull +#define TWS_FIFO_EMPTY32 0xFFFFFFFFull + + +/* Register offsets from base address. */ +#define TWS_CONTROL_REGISTER_OFFSET 0x0 +#define TWS_STATUS_REGISTER_OFFSET 0x4 +#define TWS_COMMAND_QUEUE_OFFSET 0x8 +#define TWS_RESPONSE_QUEUE_OFFSET 0xC +#define TWS_COMMAND_QUEUE_OFFSET_LOW 0x20 +#define TWS_COMMAND_QUEUE_OFFSET_HIGH 0x24 +#define TWS_LARGE_RESPONSE_QUEUE_OFFSET 0x30 + +/* I2O offsets */ +#define TWS_I2O0_STATUS 0x0 + +#define TWS_I2O0_HIBDB 0x20 + +#define TWS_I2O0_HISTAT 0x30 +#define TWS_I2O0_HIMASK 0x34 + +#define TWS_I2O0_HIBQP 0x40 +#define TWS_I2O0_HOBQP 0x44 + +#define TWS_I2O0_CTL 0x74 + +#define TWS_I2O0_IOBDB 0x9C +#define TWS_I2O0_HOBDBC 0xA0 + +#define TWS_I2O0_SCRPD3 0xBC + +#define TWS_I2O0_HIBQPL 0xC0 /* 64bit inb port low */ +#define TWS_I2O0_HIBQPH 0xC4 /* 64bit inb port high */ +#define TWS_I2O0_HOBQPL 0xC8 /* 64bit out port low */ +#define TWS_I2O0_HOBQPH 0xCC /* 64bit out port high */ + +/* IOP related */ +#define TWS_I2O0_IOPOBQPL 0xD8 /* OBFL */ +#define TWS_I2O0_IOPOBQPH 0xDC /* OBFH */ +#define TWS_I2O0_SRC_ADDRH 0xF8 /* Msg ASA */ + +#define TWS_MSG_ACC_MASK 0x20000000 +#define TWS_32BIT_MASK 0xFFFFFFFF + +/* revisit */ +#define TWS_FW_CMD_NOP 0x0 +#define TWS_FW_CMD_INIT_CONNECTION 0x01 +#define TWS_FW_CMD_EXECUTE_SCSI 0x10 + +#define TWS_FW_CMD_ATA_PASSTHROUGH 0x11 +#define TWS_FW_CMD_GET_PARAM 0x12 +#define TWS_FW_CMD_SET_PARAM 0x13 + + +#define BUILD_SGL_OFF__OPCODE(sgl_off, opcode) \ + ((sgl_off << 5) & 0xE0) | (opcode & 0x1F) /* 3:5 */ + +#define BUILD_RES__OPCODE(res, opcode) \ + ((res << 5) & 0xE0) | (opcode & 0x1F) /* 3:5 */ + +#define GET_OPCODE(sgl_off__opcode) \ + (sgl_off__opcode & 0x1F) /* 3:5 */ + + + +/* end revisit */ + + +/* Table #'s and id's of parameters of interest in firmware's param table. */ +#define TWS_PARAM_VERSION_TABLE 0x0402 +#define TWS_PARAM_VERSION_FW 3 /* firmware version [16] */ +#define TWS_PARAM_VERSION_BIOS 4 /* BIOSs version [16] */ +#define TWS_PARAM_CTLR_MODEL 8 /* Controller model [16] */ + +#define TWS_PARAM_CONTROLLER_TABLE 0x0403 +#define TWS_PARAM_CONTROLLER_PORT_COUNT 3 /* number of ports [1] */ + +#define TWS_PARAM_TIME_TABLE 0x40A +#define TWS_PARAM_TIME_SCHED_TIME 0x3 + +#define TWS_PARAM_PHYS_TABLE 0x0001 +#define TWS_PARAM_CONTROLLER_PHYS_COUNT 2 /* number of phys */ + +#define TWS_9K_PARAM_DESCRIPTOR 0x8000 + + +/* ----------- request ------------- */ + + +#pragma pack(1) + +struct tws_cmd_init_connect { + u_int8_t res1__opcode; /* 3:5 */ + u_int8_t size; + u_int8_t request_id; + u_int8_t res2; + u_int8_t status; + u_int8_t flags; + u_int16_t message_credits; + u_int32_t features; + u_int16_t fw_srl; + u_int16_t fw_arch_id; + u_int16_t fw_branch; + u_int16_t fw_build; + u_int32_t result; +}; + +/* Structure for downloading firmware onto the controller. */ +struct tws_cmd_download_firmware { + u_int8_t sgl_off__opcode;/* 3:5 */ + u_int8_t size; + u_int8_t request_id; + u_int8_t unit; + u_int8_t status; + u_int8_t flags; + u_int16_t param; + u_int8_t sgl[1]; +}; + +/* Structure for hard resetting the controller. */ +struct tws_cmd_reset_firmware { + u_int8_t res1__opcode; /* 3:5 */ + u_int8_t size; + u_int8_t request_id; + u_int8_t unit; + u_int8_t status; + u_int8_t flags; + u_int8_t res2; + u_int8_t param; +}; + + +/* Structure for sending get/set param commands. */ +struct tws_cmd_param { + u_int8_t sgl_off__opcode;/* 3:5 */ + u_int8_t size; + u_int8_t request_id; + u_int8_t host_id__unit; /* 4:4 */ + u_int8_t status; + u_int8_t flags; + u_int16_t param_count; + u_int8_t sgl[1]; +}; + +/* Generic command packet. */ +struct tws_cmd_generic { + u_int8_t sgl_off__opcode;/* 3:5 */ + u_int8_t size; + u_int8_t request_id; + u_int8_t host_id__unit; /* 4:4 */ + u_int8_t status; + u_int8_t flags; + u_int16_t count; /* block cnt, parameter cnt, message credits */ +}; + + + + +/* Command packet header. */ +struct tws_command_header { + u_int8_t sense_data[TWS_SENSE_DATA_LENGTH]; + struct { /* status block - additional sense data */ + u_int16_t srcnum; + u_int8_t reserved; + u_int8_t status; + u_int16_t error; + u_int8_t res__srcid; /* 4:4 */ + u_int8_t res__severity; /* 5:3 */ + } status_block; + u_int8_t err_specific_desc[TWS_ERROR_SPECIFIC_DESC_LEN]; + struct { /* sense buffer descriptor */ + u_int8_t size_header; + u_int16_t request_id; + u_int8_t size_sense; + } header_desc; +}; + +/* Command - 1024 byte size including header (128+24+896)*/ +union tws_command_giga { + struct tws_cmd_init_connect init_connect; + struct tws_cmd_download_firmware download_fw; + struct tws_cmd_reset_firmware reset_fw; + struct tws_cmd_param param; + struct tws_cmd_generic generic; + u_int8_t padding[1024 - sizeof(struct tws_command_header)]; +}; + +/* driver command pkt - 1024 byte size including header(128+24+744+128) */ +/* h/w & f/w supported command size excluding header 768 */ +struct tws_command_apache { + u_int8_t res__opcode; /* 3:5 */ + u_int8_t unit; + u_int16_t lun_l4__req_id; /* 4:12 */ + u_int8_t status; + u_int8_t sgl_offset; /* offset (in bytes) to sg_list, + from the end of sgl_entries */ + u_int16_t lun_h4__sgl_entries; + u_int8_t cdb[16]; + u_int8_t sg_list[744]; /* 768 - 24 */ + u_int8_t padding[128]; /* make it 1024 bytes */ +}; + +struct tws_command_packet { + struct tws_command_header hdr; + union { + union tws_command_giga pkt_g; + struct tws_command_apache pkt_a; + } cmd; +}; + +/* Structure describing payload for get/set param commands. */ +struct tws_getset_param { + u_int16_t table_id; + u_int8_t parameter_id; + u_int8_t reserved; + u_int16_t parameter_size_bytes; + u_int16_t parameter_actual_size_bytes; + u_int8_t data[1]; +}; + +struct tws_outbound_response { + u_int32_t not_mfa :1; /* 1 if the structure is valid else MFA */ + u_int32_t reserved :7; /* reserved bits */ + u_int32_t status :8; /* should be 0 */ + u_int32_t request_id:16; /* request id */ +}; + + +/* Scatter/Gather list entry with 32 bit addresses. */ +struct tws_sg_desc32 { + u_int32_t address; + u_int32_t length :24; + u_int32_t flag :8; +}; + +/* Scatter/Gather list entry with 64 bit addresses. */ +struct tws_sg_desc64 { + u_int64_t address; + u_int64_t length :32; + u_int64_t reserved :24; + u_int64_t flag :8; +}; + +/* + * Packet that describes an AEN/error generated by the controller, + * shared with user + */ +struct tws_event_packet { + u_int32_t sequence_id; + u_int32_t time_stamp_sec; + u_int16_t aen_code; + u_int8_t severity; + u_int8_t retrieved; + u_int8_t repeat_count; + u_int8_t parameter_len; + u_int8_t parameter_data[TWS_ERROR_SPECIFIC_DESC_LEN]; + u_int32_t event_src; + u_int8_t severity_str[20]; +}; + + + +#pragma pack() + +struct tws_sense { + struct tws_command_header *hdr; + u_int64_t hdr_pkt_phy; +}; + +struct tws_request { + struct tws_command_packet *cmd_pkt; /* command pkt */ + u_int64_t cmd_pkt_phy; /* cmd pkt physical address */ + void *data; /* ptr to data being passed to fw */ + u_int32_t length; /* length of data being passed to fw */ + + u_int32_t state; /* request state */ + u_int32_t type; /* request type */ + u_int32_t flags; /* request flags */ + + u_int32_t error_code; /* error during request processing */ + + u_int32_t request_id; /* request id for tracking with fw */ + void (*cb)(struct tws_request *); /* callback func */ + bus_dmamap_t dma_map; /* dma map */ + union ccb *ccb_ptr; /* pointer to ccb */ + struct callout_handle thandle; /* handle to req timeout */ + struct tws_softc *sc; /* pointer back to ctlr softc */ + + struct tws_request *next; /* pointer to next request */ + struct tws_request *prev; /* pointer to prev request */ +}; + + Property changes on: stable/8/sys/dev/tws/tws_hdm.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_services.c =================================================================== --- stable/8/sys/dev/tws/tws_services.c (nonexistent) +++ stable/8/sys/dev/tws/tws_services.c (revision 226243) @@ -0,0 +1,401 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + +#include +#include +#include +#include + +void tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ); +struct tws_request * tws_q_remove_request(struct tws_softc *sc, + struct tws_request *req, u_int8_t q_type ); +struct tws_request *tws_q_remove_head(struct tws_softc *sc, u_int8_t q_type ); +void tws_q_insert_head(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ); +struct tws_request * tws_q_remove_tail(struct tws_softc *sc, u_int8_t q_type ); +void tws_print_stats(void *arg); + +struct tws_sense *tws_find_sense_from_mfa(struct tws_softc *sc, u_int64_t mfa); + + + +struct error_desc array[] = { + { "Cannot add sysctl tree node", 0x2000, ERROR, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Register window not available", 0x2001, ERROR, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Can't allocate register window", 0x2002, ERROR, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Can't allocate interrupt", 0x2003, ERROR, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Can't set up interrupt", 0x2004, ERROR, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Couldn't intialize CAM", 0x2007, ERROR, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Couldn't create SIM device queue", 0x2100, ENOMEM, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Unable to create SIM entry", 0x2101, ENOMEM, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Unable to register the bus", 0x2102, ENXIO, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Unable to create the path", 0x2103, ENXIO, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Bus scan request to CAM failed", 0x2104, ENXIO, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Unable to intialize the driver", 0x2008, ENXIO, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, + { "Unable to intialize the controller", 0x2009, ENXIO, + "%s: (0x%02X: 0x%04X): %s:\n", "ERROR" }, +}; + +void +tws_trace(const char *file, const char *fun, int linenum, + struct tws_softc *sc, char *desc, u_int64_t val1, u_int64_t val2) +{ + + + struct tws_trace_rec *rec = (struct tws_trace_rec *)sc->trace_q.q; + volatile u_int16_t head, tail; + char fmt[256]; + + head = sc->trace_q.head; + tail = sc->trace_q.tail; +/* + getnanotime(&rec[tail].ts); +*/ + strncpy(rec[tail].fname, file, TWS_TRACE_FNAME_LEN); + strncpy(rec[tail].func, fun, TWS_TRACE_FUNC_LEN); + rec[tail].linenum = linenum; + strncpy(rec[tail].desc, desc, TWS_TRACE_DESC_LEN); + rec[tail].val1 = val1; + rec[tail].val2 = val2; + + tail = (tail+1) % sc->trace_q.depth; + + if ( head == tail ) { + sc->trace_q.overflow = 1; + sc->trace_q.head = (head+1) % sc->trace_q.depth; + } + sc->trace_q.tail = tail; + +/* + tws_circular_q_insert(sc, &sc->trace_q, + &rec, sizeof(struct tws_trace_rec)); +*/ + if ( sc->is64bit ) + strcpy(fmt, "%05d:%s::%s :%s: 0x%016lx : 0x%016lx \n"); + else + strcpy(fmt, "%05d:%s::%s :%s: 0x%016llx : 0x%016llx \n"); + +/* + printf("%05d:%s::%s :%s: 0x%016llx : 0x%016llx \n", + linenum, file, fun, desc, val1, val2); +*/ + printf(fmt, linenum, file, fun, desc, val1, val2); +} + +void +tws_log(struct tws_softc *sc, int index) +{ + device_printf((sc)->tws_dev, array[index].fmt, + array[index].error_str, + array[index].error_code, + array[index].severity_level, + array[index].desc ); +} + +/* ----------- swap functions ----------- */ + + +u_int16_t +tws_swap16(u_int16_t val) +{ + return((val << 8) | (val >> 8)); +} + +u_int32_t +tws_swap32(u_int32_t val) +{ + return(((val << 24) | ((val << 8) & (0xFF0000)) | + ((val >> 8) & (0xFF00)) | (val >> 24))); +} + + +u_int64_t +tws_swap64(u_int64_t val) +{ + return((((u_int64_t)(tws_swap32(((u_int32_t *)(&(val)))[1]))) << 32) | + ((u_int32_t)(tws_swap32(((u_int32_t *)(&(val)))[0])))); +} + + +/* ----------- reg access ----------- */ + + +void +tws_write_reg(struct tws_softc *sc, int offset, + u_int32_t value, int size) +{ + bus_space_tag_t bus_tag = sc->bus_tag; + bus_space_handle_t bus_handle = sc->bus_handle; + + if (size == 4) + bus_space_write_4(bus_tag, bus_handle, offset, value); + else + if (size == 2) + bus_space_write_2(bus_tag, bus_handle, offset, + (u_int16_t)value); + else + bus_space_write_1(bus_tag, bus_handle, offset, (u_int8_t)value); +} + +u_int32_t +tws_read_reg(struct tws_softc *sc, int offset, int size) +{ + bus_space_tag_t bus_tag = sc->bus_tag; + bus_space_handle_t bus_handle = sc->bus_handle; + + if (size == 4) + return((u_int32_t)bus_space_read_4(bus_tag, bus_handle, offset)); + else if (size == 2) + return((u_int32_t)bus_space_read_2(bus_tag, bus_handle, offset)); + else + return((u_int32_t)bus_space_read_1(bus_tag, bus_handle, offset)); +} + +/* --------------------- Q service --------------------- */ + +/* + * intialize q pointers with null. + */ +void +tws_init_qs(struct tws_softc *sc) +{ + + mtx_lock(&sc->q_lock); + for(int i=0;iq_head[i] = NULL; + sc->q_tail[i] = NULL; + } + mtx_unlock(&sc->q_lock); + +} + +/* called with lock held */ +static void +tws_insert2_empty_q(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ) +{ + + mtx_assert(&sc->q_lock, MA_OWNED); + req->next = req->prev = NULL; + sc->q_head[q_type] = sc->q_tail[q_type] = req; + +} + +/* called with lock held */ +void +tws_q_insert_head(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ) +{ + + mtx_assert(&sc->q_lock, MA_OWNED); + if ( sc->q_head[q_type] == NULL ) { + tws_insert2_empty_q(sc, req, q_type); + } else { + req->next = sc->q_head[q_type]; + req->prev = NULL; + sc->q_head[q_type]->prev = req; + sc->q_head[q_type] = req; + } + +} + +/* called with lock held */ +void +tws_q_insert_tail(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ) +{ + + mtx_assert(&sc->q_lock, MA_OWNED); + if ( sc->q_tail[q_type] == NULL ) { + tws_insert2_empty_q(sc, req, q_type); + } else { + req->prev = sc->q_tail[q_type]; + req->next = NULL; + sc->q_tail[q_type]->next = req; + sc->q_tail[q_type] = req; + } + +} + +/* called with lock held */ +struct tws_request * +tws_q_remove_head(struct tws_softc *sc, u_int8_t q_type ) +{ + + struct tws_request *r; + + mtx_assert(&sc->q_lock, MA_OWNED); + r = sc->q_head[q_type]; + if ( !r ) + return(NULL); + if ( r->next == NULL && r->prev == NULL ) { + /* last element */ + sc->q_head[q_type] = sc->q_tail[q_type] = NULL; + } else { + sc->q_head[q_type] = r->next; + r->next->prev = NULL; + r->next = NULL; + r->prev = NULL; + } + return(r); +} + +/* called with lock held */ +struct tws_request * +tws_q_remove_tail(struct tws_softc *sc, u_int8_t q_type ) +{ + + struct tws_request *r; + + mtx_assert(&sc->q_lock, MA_OWNED); + r = sc->q_tail[q_type]; + if ( !r ) + return(NULL); + if ( r->next == NULL && r->prev == NULL ) { + /* last element */ + sc->q_head[q_type] = sc->q_tail[q_type] = NULL; + } else { + sc->q_tail[q_type] = r->prev; + r->prev->next = NULL; + r->next = NULL; + r->prev = NULL; + } + return(r); +} + +/* returns removed request if successful. return NULL otherwise */ +/* called with lock held */ +struct tws_request * +tws_q_remove_request(struct tws_softc *sc, struct tws_request *req, + u_int8_t q_type ) +{ + + struct tws_request *r; + + mtx_assert(&sc->q_lock, MA_OWNED); + if ( req == NULL ) { + TWS_TRACE_DEBUG(sc, "null req", 0, q_type); + return(NULL); + } + + if ( req == sc->q_head[q_type] ) + return(tws_q_remove_head(sc, q_type)); + if ( req == sc->q_tail[q_type] ) + return(tws_q_remove_tail(sc, q_type)); + + + /* The given node is not at head or tail. + * It's in the middle and there are more than + * 2 elements on the q. + */ + + if ( req->next == NULL || req->prev == NULL ) { + TWS_TRACE_DEBUG(sc, "invalid req", 0, q_type); + return(NULL); + } + +/* debug only */ + r = sc->q_head[q_type]; + while ( r ) { + if ( req == r ) + break; + r = r->next; + } + + if ( !r ) { + TWS_TRACE_DEBUG(sc, "req not in q", 0, req->request_id); + return(NULL); + } +/* debug end */ + + req->prev->next = r->next; + req->next->prev = r->prev; + req->next = NULL; + req->prev = NULL; + return(req); +} + +struct tws_sense * +tws_find_sense_from_mfa(struct tws_softc *sc, u_int64_t mfa) +{ + struct tws_sense *s; + int i; + TWS_TRACE_DEBUG(sc, "entry",sc,mfa); + + i = (mfa - sc->dma_mem_phys) / sizeof(struct tws_command_packet); + if ( i>= 0 && isense_bufs[i]; + if ( mfa == s->hdr_pkt_phy ) + return(s); + } + + TWS_TRACE_DEBUG(sc, "return null",0,mfa); + return(NULL); + +} + +/* --------------------- Q service end --------------------- */ +/* --------------------- misc service start --------------------- */ + + +void +tws_print_stats(void *arg) +{ + + struct tws_softc *sc = (struct tws_softc *)arg; + + TWS_TRACE(sc, "reqs(in, out)", sc->stats.reqs_in, sc->stats.reqs_out); + TWS_TRACE(sc, "reqs(err, intrs)", sc->stats.reqs_errored + , sc->stats.num_intrs); + TWS_TRACE(sc, "reqs(ioctls, scsi)", sc->stats.ioctls + , sc->stats.scsi_ios); + timeout(tws_print_stats, sc, 300*hz); + +} +/* --------------------- misc service end --------------------- */ Property changes on: stable/8/sys/dev/tws/tws_services.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_services.h =================================================================== --- stable/8/sys/dev/tws/tws_services.h (nonexistent) +++ stable/8/sys/dev/tws/tws_services.h (revision 226243) @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + + +/* #define TWS_DEBUG on */ + +void tws_trace(const char *file, const char *fun, int linenum, + struct tws_softc *sc, char *desc, u_int64_t val1, u_int64_t val2); +void tws_log(struct tws_softc *sc, int index); +u_int32_t tws_read_reg(struct tws_softc *sc, + int offset, int size); +void tws_write_reg(struct tws_softc *sc, int offset, + u_int32_t value, int size); + +u_int16_t tws_swap16(u_int16_t val); +u_int32_t tws_swap32(u_int32_t val); +u_int64_t tws_swap64(u_int64_t val); + +void tws_init_qs(struct tws_softc *sc); + + + +/* ----------------- trace ----------------- */ + +#define TWS_TRACE_ON on /* Alawys on - use wisely to trace errors */ + +#ifdef TWS_DEBUG + #define TWS_TRACE_DEBUG_ON on +#endif + +#ifdef TWS_TRACE_DEBUG_ON + #define TWS_TRACE_DEBUG(sc, desc, val1, val2) \ + tws_trace(__FILE__, __func__, __LINE__, sc, desc, \ + (u_int64_t)val1, (u_int64_t)val2) +#else + #define TWS_TRACE_DEBUG(sc, desc, val1, val2) +#endif + +#ifdef TWS_TRACE_ON + #define TWS_TRACE(sc, desc, val1, val2) \ + tws_trace(__FILE__, __func__, __LINE__, sc, desc, \ + (u_int64_t)val1, (u_int64_t)val2) +#else + #define TWS_TRACE(sc, desc, val1, val2) +#endif + +/* ---------------- logging ---------------- */ + + +/* ---------------- logging ---------------- */ +enum error_index { + SYSCTL_TREE_NODE_ADD, + PCI_COMMAND_READ, + ALLOC_MEMORY_RES, + ALLOC_IRQ_RES, + SETUP_INTR_RES, + TWS_CAM_ATTACH, + CAM_SIMQ_ALLOC, + CAM_SIM_ALLOC, + TWS_XPT_BUS_REGISTER, + TWS_XPT_CREATE_PATH, + TWS_BUS_SCAN_REQ, + TWS_INIT_FAILURE, + TWS_CTLR_INIT_FAILURE, +}; + +enum severity { + ERROR = 1, + WARNING, + INFO, +#if 0 + DEBUG, +#endif +}; + +struct error_desc { + char desc[256]; + u_int32_t error_code; + int severity_level; + char *fmt; + char *error_str; +}; + +extern struct error_desc array[]; +/* ----------- q services ------------- */ + +#define TWS_FREE_Q 0 +#define TWS_PENDING_Q 1 +#define TWS_BUSY_Q 2 +#define TWS_COMPLETE_Q 3 + +/* req return codes */ +#define TWS_REQ_RET_SUBMIT_SUCCESS 0 +#define TWS_REQ_RET_PEND_NOMFA 1 +#define TWS_REQ_RET_RESET 2 +#define TWS_REQ_RET_INVALID 0xdead + + +/* ------------------------ */ +#if (__FreeBSD_version >= 700000) +#include +#define TWS_LOCAL_TIME (time_second - utc_offset()) +#else +#include +#define TWS_LOCAL_TIME (time_second - (tz_minuteswest * 60) - \ + (wall_cmos_clock ? adjkerntz : 0)) +#endif + Property changes on: stable/8/sys/dev/tws/tws_services.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_user.c =================================================================== --- stable/8/sys/dev/tws/tws_user.c (nonexistent) +++ stable/8/sys/dev/tws/tws_user.c (revision 226243) @@ -0,0 +1,379 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + +#include +#include +#include +#include + + +int tws_ioctl(struct cdev *dev, long unsigned int cmd, caddr_t buf, int flags, + d_thread_t *proc); +void tws_passthru_complete(struct tws_request *req); +extern void tws_circular_aenq_insert(struct tws_softc *sc, + struct tws_circular_q *cq, struct tws_event_packet *aen); + + +static int tws_passthru(struct tws_softc *sc, void *buf); +static int tws_ioctl_aen(struct tws_softc *sc, u_long cmd, void *buf); + +extern int tws_bus_scan(struct tws_softc *sc); +extern struct tws_request *tws_get_request(struct tws_softc *sc, + u_int16_t type); +extern int32_t tws_map_request(struct tws_softc *sc, struct tws_request *req); +extern void tws_unmap_request(struct tws_softc *sc, struct tws_request *req); +extern uint8_t tws_get_state(struct tws_softc *sc); +extern void tws_timeout(void *arg); + +int +tws_ioctl(struct cdev *dev, u_long cmd, caddr_t buf, int flags, + d_thread_t *proc) +{ + struct tws_softc *sc = (struct tws_softc *)(dev->si_drv1); + int error; + + TWS_TRACE_DEBUG(sc, "entry", sc, cmd); + sc->stats.ioctls++; + switch(cmd) { + case TWS_IOCTL_FIRMWARE_PASS_THROUGH : + error = tws_passthru(sc, (void *)buf); + break; + case TWS_IOCTL_SCAN_BUS : + TWS_TRACE_DEBUG(sc, "scan-bus", 0, 0); + mtx_lock(&sc->sim_lock); + error = tws_bus_scan(sc); + mtx_unlock(&sc->sim_lock); + break; + default : + TWS_TRACE_DEBUG(sc, "ioctl-aen", cmd, buf); + error = tws_ioctl_aen(sc, cmd, (void *)buf); + break; + + } + return(error); +} + +static int +tws_passthru(struct tws_softc *sc, void *buf) +{ + struct tws_request *req; + struct tws_ioctl_no_data_buf *ubuf = (struct tws_ioctl_no_data_buf *)buf; + int error; + u_int16_t lun4; + + if ( tws_get_state(sc) != TWS_ONLINE) { + return(EBUSY); + } + + do { + req = tws_get_request(sc, TWS_REQ_TYPE_PASSTHRU); + if ( !req ) { + sc->chan = 1; + error = tsleep((void *)&sc->chan, 0, + "tws_sleep", TWS_IOCTL_TIMEOUT*hz); + if ( error == EWOULDBLOCK ) { + return(ETIMEDOUT); + } + } else { + break; + } + }while(1); + + req->length = ubuf->driver_pkt.buffer_length; + TWS_TRACE_DEBUG(sc, "datal,rid", req->length, req->request_id); + if ( req->length ) { + req->data = malloc(req->length, M_TWS, M_WAITOK | M_ZERO); + if ( !req->data ) { + TWS_TRACE_DEBUG(sc, "malloc failed", 0, req->request_id); + req->state = TWS_REQ_STATE_FREE; + ubuf->driver_pkt.os_status = ENOMEM; + if ( sc->chan ) { + sc->chan = 0; + wakeup_one((void *)&sc->chan); + } + return(ENOMEM); + } + bzero(req->data, req->length); + error = copyin(ubuf->pdata, req->data, req->length); + } + req->flags = TWS_DIR_IN | TWS_DIR_OUT; + req->cb = tws_passthru_complete; + + memcpy(&req->cmd_pkt->cmd, &ubuf->cmd_pkt.cmd, + sizeof(struct tws_command_apache)); + + if ( GET_OPCODE(req->cmd_pkt->cmd.pkt_a.res__opcode) == + TWS_FW_CMD_EXECUTE_SCSI ) { + lun4 = req->cmd_pkt->cmd.pkt_a.lun_l4__req_id & 0xF000; + req->cmd_pkt->cmd.pkt_a.lun_l4__req_id = lun4 | req->request_id; + } else { + req->cmd_pkt->cmd.pkt_g.generic.request_id = (u_int8_t) req->request_id; + + } + + error = tws_map_request(sc, req); + if (error) { + ubuf->driver_pkt.os_status = error; + goto out; + } + +//================================================================================================== + mtx_lock(&sc->gen_lock); + error = mtx_sleep(req, &sc->gen_lock, 0, "tws_passthru", TWS_IOCTL_TIMEOUT*hz); + mtx_unlock(&sc->gen_lock); + if (( req->state != TWS_REQ_STATE_COMPLETE ) && ( error == EWOULDBLOCK )) { + TWS_TRACE_DEBUG(sc, "msleep timeout", error, req->request_id); + tws_timeout((void*) req); + } + + if ( req->error_code == TWS_REQ_RET_RESET ) { + error = EBUSY; + req->error_code = EBUSY; + TWS_TRACE_DEBUG(sc, "ioctl reset", error, req->request_id); + } + + tws_unmap_request(sc, req); + + memcpy(&ubuf->cmd_pkt.hdr, &req->cmd_pkt->hdr, sizeof(struct tws_command_apache)); + memcpy(&ubuf->cmd_pkt.cmd, &req->cmd_pkt->cmd, sizeof(struct tws_command_apache)); + if ( !error && req->length ) { + error = copyout(req->data, ubuf->pdata, req->length); + } +//================================================================================================== + +out: + free(req->data, M_TWS); + + if ( error ) + TWS_TRACE_DEBUG(sc, "errored", error, 0); + + if ( req->error_code != TWS_REQ_RET_SUBMIT_SUCCESS ) + ubuf->driver_pkt.os_status = error; + + req->state = TWS_REQ_STATE_FREE; + + if ( sc->chan && (tws_get_state(sc) == TWS_ONLINE) ) { + sc->chan = 0; + wakeup_one((void *)&sc->chan); + } + return(error); +} + +void +tws_passthru_complete(struct tws_request *req) +{ + req->state = TWS_REQ_STATE_COMPLETE; + wakeup_one(req); + +} + +static void +tws_retrive_aen(struct tws_softc *sc, u_long cmd, + struct tws_ioctl_packet *ubuf) +{ + u_int16_t index=0; + struct tws_event_packet eventp, *qp; + + if ( sc->aen_q.head == sc->aen_q.tail ) { + ubuf->driver_pkt.status = TWS_AEN_NO_EVENTS; + return; + } + + ubuf->driver_pkt.status = 0; + + /* + * once this flag is set cli will not display alarms + * needs a revisit from tools? + */ + if ( sc->aen_q.overflow ) { + ubuf->driver_pkt.status = TWS_AEN_OVERFLOW; + sc->aen_q.overflow = 0; /* reset */ + } + + qp = (struct tws_event_packet *)sc->aen_q.q; + + switch (cmd) { + case TWS_IOCTL_GET_FIRST_EVENT : + index = sc->aen_q.head; + break; + case TWS_IOCTL_GET_LAST_EVENT : + /* index = tail-1 */ + index = (sc->aen_q.depth + sc->aen_q.tail - 1) % sc->aen_q.depth; + break; + case TWS_IOCTL_GET_NEXT_EVENT : + memcpy(&eventp, ubuf->data_buf, sizeof(struct tws_event_packet)); + index = sc->aen_q.head; + do { + if ( qp[index].sequence_id == + (eventp.sequence_id + 1) ) + break; + index = (index+1) % sc->aen_q.depth; + }while ( index != sc->aen_q.tail ); + if ( index == sc->aen_q.tail ) { + ubuf->driver_pkt.status = TWS_AEN_NO_EVENTS; + return; + } + break; + case TWS_IOCTL_GET_PREVIOUS_EVENT : + memcpy(&eventp, ubuf->data_buf, sizeof(struct tws_event_packet)); + index = sc->aen_q.head; + do { + if ( qp[index].sequence_id == + (eventp.sequence_id - 1) ) + break; + index = (index+1) % sc->aen_q.depth; + }while ( index != sc->aen_q.tail ); + if ( index == sc->aen_q.tail ) { + ubuf->driver_pkt.status = TWS_AEN_NO_EVENTS; + return; + } + break; + default : + TWS_TRACE_DEBUG(sc, "not a valid event", sc, cmd); + ubuf->driver_pkt.status = TWS_AEN_NO_EVENTS; + return; + } + + memcpy(ubuf->data_buf, &qp[index], + sizeof(struct tws_event_packet)); + qp[index].retrieved = TWS_AEN_RETRIEVED; + + return; + +} + +static int +tws_ioctl_aen(struct tws_softc *sc, u_long cmd, void *buf) +{ + + struct tws_ioctl_packet *ubuf = (struct tws_ioctl_packet *)buf; + struct tws_compatibility_packet cpkt; + struct tws_lock_packet lpkt; + time_t ctime; + + mtx_lock(&sc->gen_lock); + ubuf->driver_pkt.status = 0; + switch(cmd) { + case TWS_IOCTL_GET_FIRST_EVENT : + case TWS_IOCTL_GET_LAST_EVENT : + case TWS_IOCTL_GET_NEXT_EVENT : + case TWS_IOCTL_GET_PREVIOUS_EVENT : + tws_retrive_aen(sc,cmd,ubuf); + break; + case TWS_IOCTL_GET_LOCK : + ctime = TWS_LOCAL_TIME; + memcpy(&lpkt, ubuf->data_buf, sizeof(struct tws_lock_packet)); + if ( (sc->ioctl_lock.lock == TWS_IOCTL_LOCK_FREE) || + (lpkt.force_flag) || + (ctime >= sc->ioctl_lock.timeout) ) { + sc->ioctl_lock.lock = TWS_IOCTL_LOCK_HELD; + sc->ioctl_lock.timeout = ctime + (lpkt.timeout_msec / 1000); + lpkt.time_remaining_msec = lpkt.timeout_msec; + } else { + lpkt.time_remaining_msec = (u_int32_t) + ((sc->ioctl_lock.timeout - ctime) * 1000); + ubuf->driver_pkt.status = TWS_IOCTL_LOCK_ALREADY_HELD; + + } + break; + case TWS_IOCTL_RELEASE_LOCK : + if (sc->ioctl_lock.lock == TWS_IOCTL_LOCK_FREE) { + ubuf->driver_pkt.status = TWS_IOCTL_LOCK_NOT_HELD; + } else { + sc->ioctl_lock.lock = TWS_IOCTL_LOCK_FREE; + ubuf->driver_pkt.status = 0; + } + break; + case TWS_IOCTL_GET_COMPATIBILITY_INFO : + TWS_TRACE_DEBUG(sc, "get comp info", sc, cmd); + + memcpy( cpkt.driver_version, TWS_DRIVER_VERSION_STRING, + sizeof(TWS_DRIVER_VERSION_STRING)); + cpkt.working_srl = sc->cinfo.working_srl; + cpkt.working_branch = sc->cinfo.working_branch; + cpkt.working_build = sc->cinfo.working_build; + cpkt.driver_srl_high = TWS_CURRENT_FW_SRL; + cpkt.driver_branch_high = TWS_CURRENT_FW_BRANCH; + cpkt.driver_build_high = TWS_CURRENT_FW_BUILD; + cpkt.driver_srl_low = TWS_BASE_FW_SRL; + cpkt.driver_branch_low = TWS_BASE_FW_BRANCH; + cpkt.driver_build_low = TWS_BASE_FW_BUILD; + cpkt.fw_on_ctlr_srl = sc->cinfo.fw_on_ctlr_srl; + cpkt.fw_on_ctlr_branch = sc->cinfo.fw_on_ctlr_branch; + cpkt.fw_on_ctlr_build = sc->cinfo.fw_on_ctlr_build; + ubuf->driver_pkt.status = 0; + int len = sizeof(struct tws_compatibility_packet); + if ( ubuf->driver_pkt.buffer_length < len ) + len = ubuf->driver_pkt.buffer_length; + memcpy(ubuf->data_buf, &cpkt, len); + + break; + default : + TWS_TRACE_DEBUG(sc, "not valid cmd", cmd, + TWS_IOCTL_GET_COMPATIBILITY_INFO); + break; + + } + mtx_unlock(&sc->gen_lock); + return(SUCCESS); + +} + +void +tws_circular_aenq_insert(struct tws_softc *sc, struct tws_circular_q *cq, +struct tws_event_packet *aen) +{ + + struct tws_event_packet *q = (struct tws_event_packet *)cq->q; + volatile u_int16_t head, tail; + u_int8_t retr; + mtx_assert(&sc->gen_lock, MA_OWNED); + + head = cq->head; + tail = cq->tail; + retr = q[tail].retrieved; + + memcpy(&q[tail], aen, sizeof(struct tws_event_packet)); + tail = (tail+1) % cq->depth; + + if ( head == tail ) { /* q is full */ + if ( retr != TWS_AEN_RETRIEVED ) + cq->overflow = 1; + cq->head = (head+1) % cq->depth; + } + cq->tail = tail; + +} Property changes on: stable/8/sys/dev/tws/tws_user.c ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/dev/tws/tws_user.h =================================================================== --- stable/8/sys/dev/tws/tws_user.h (nonexistent) +++ stable/8/sys/dev/tws/tws_user.h (revision 226243) @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2010, LSI Corp. + * All rights reserved. + * Author : Manjunath Ranganathaiah + * Support: freebsdraid@lsi.com + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name of the nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + +#define TWS_AEN_NOT_RETRIEVED 0x1 +#define TWS_AEN_RETRIEVED 0x2 + +#define TWS_AEN_NO_EVENTS 0x1003 /* No more events */ +#define TWS_AEN_OVERFLOW 0x1004 /* AEN overflow occurred */ + +#define TWS_IOCTL_LOCK_NOT_HELD 0x1001 /* Not locked */ +#define TWS_IOCTL_LOCK_ALREADY_HELD 0x1002 /* Already locked */ + +#define TWS_IOCTL_LOCK_HELD 0x1 +#define TWS_IOCTL_LOCK_FREE 0x0 + +#pragma pack(1) + +/* Structure used to handle GET/RELEASE LOCK ioctls. */ +struct tws_lock_packet { + u_int32_t timeout_msec; + u_int32_t time_remaining_msec; + u_int32_t force_flag; +}; + +/* Structure used to handle GET COMPATIBILITY INFO ioctl. */ +struct tws_compatibility_packet { + u_int8_t driver_version[32];/* driver version */ + u_int16_t working_srl; /* driver & firmware negotiated srl */ + u_int16_t working_branch; /* branch # of the firmware that the + driver is compatible with */ + u_int16_t working_build; /* build # of the firmware that the + driver is compatible with */ + u_int16_t driver_srl_high;/* highest driver supported srl */ + u_int16_t driver_branch_high;/* highest driver supported branch */ + u_int16_t driver_build_high;/* highest driver supported build */ + u_int16_t driver_srl_low;/* lowest driver supported srl */ + u_int16_t driver_branch_low;/* lowest driver supported branch */ + u_int16_t driver_build_low;/* lowest driver supported build */ + u_int16_t fw_on_ctlr_srl; /* srl of running firmware */ + u_int16_t fw_on_ctlr_branch;/* branch # of running firmware */ + u_int16_t fw_on_ctlr_build;/* build # of running firmware */ +}; + + +/* Driver understandable part of the ioctl packet built by the API. */ +struct tws_driver_packet { + u_int32_t control_code; + u_int32_t status; + u_int32_t unique_id; + u_int32_t sequence_id; + u_int32_t os_status; + u_int32_t buffer_length; +}; + +/* ioctl packet built by the API. */ +struct tws_ioctl_packet { + struct tws_driver_packet driver_pkt; + char padding[488]; + struct tws_command_packet cmd_pkt; + char data_buf[1]; +}; + +#pragma pack() + + +#pragma pack(1) +/* + * We need the structure below to ensure that the first byte of + * data_buf is not overwritten by the kernel, after we return + * from the ioctl call. Note that cmd_pkt has been reduced + * to an array of 1024 bytes even though it's actually 2048 bytes + * in size. This is because, we don't expect requests from user + * land requiring 2048 (273 sg elements) byte cmd pkts. + */ +struct tws_ioctl_no_data_buf { + struct tws_driver_packet driver_pkt; + void *pdata; /* points to data_buf */ + char padding[488 - sizeof(void *)]; + struct tws_command_packet cmd_pkt; +}; + +#pragma pack() + + +#include + +#pragma pack(1) + +struct tws_ioctl_with_payload { + struct tws_driver_packet driver_pkt; + char padding[488]; + struct tws_command_packet cmd_pkt; + union { + struct tws_event_packet event_pkt; + struct tws_lock_packet lock_pkt; + struct tws_compatibility_packet compat_pkt; + char data_buf[1]; + } payload; +}; + +#pragma pack() + +/* ioctl cmds */ + +#define TWS_IOCTL_SCAN_BUS \ + _IO('T', 200) +#define TWS_IOCTL_FIRMWARE_PASS_THROUGH \ + _IOWR('T', 202, struct tws_ioctl_no_data_buf) +#define TWS_IOCTL_GET_FIRST_EVENT \ + _IOWR('T', 203, struct tws_ioctl_with_payload) +#define TWS_IOCTL_GET_LAST_EVENT \ + _IOWR('T', 204, struct tws_ioctl_with_payload) +#define TWS_IOCTL_GET_NEXT_EVENT \ + _IOWR('T', 205, struct tws_ioctl_with_payload) +#define TWS_IOCTL_GET_PREVIOUS_EVENT \ + _IOWR('T', 206, struct tws_ioctl_with_payload) +#define TWS_IOCTL_GET_LOCK \ + _IOWR('T', 207, struct tws_ioctl_with_payload) +#define TWS_IOCTL_RELEASE_LOCK \ + _IOWR('T', 208, struct tws_ioctl_with_payload) +#define TWS_IOCTL_GET_COMPATIBILITY_INFO \ + _IOWR('T', 209, struct tws_ioctl_with_payload) + Property changes on: stable/8/sys/dev/tws/tws_user.h ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys/i386/conf/GENERIC =================================================================== --- stable/8/sys/i386/conf/GENERIC (revision 226242) +++ stable/8/sys/i386/conf/GENERIC (revision 226243) @@ -1,339 +1,340 @@ # # GENERIC -- Generic kernel configuration file for FreeBSD/i386 # # For more information on this file, please read the config(5) manual page, # and/or the handbook section on Kernel Configuration Files: # # http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html # # The handbook is also available locally in /usr/share/doc/handbook # if you've installed the doc distribution, otherwise always see the # FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the # latest information. # # An exhaustive list of options and more detailed explanations of the # device lines is also present in the ../../conf/NOTES and NOTES files. # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # # $FreeBSD$ cpu I486_CPU cpu I586_CPU cpu I686_CPU ident GENERIC # To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices. # Use the following to compile in values accessible to the kernel # through getenv() (or kenv(1) in userland). The format of the file # is 'variable=value', see kenv(1) # # env "GENERIC.env" makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options INET # InterNETworking options INET6 # IPv6 communications protocols options SCTP # Stream Control Transmission Protocol options FFS # Berkeley Fast Filesystem options SOFTUPDATES # Enable FFS soft updates support options UFS_ACL # Support for access control lists options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options MD_ROOT # MD is a potential root device options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCLIENT options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options GEOM_PART_GPT # GUID Partition Tables. options GEOM_LABEL # Provides labelization options COMPAT_43TTY # BSD 4.3 TTY compat (sgtty) options COMPAT_FREEBSD4 # Compatible with FreeBSD4 options COMPAT_FREEBSD5 # Compatible with FreeBSD5 options COMPAT_FREEBSD6 # Compatible with FreeBSD6 options COMPAT_FREEBSD7 # Compatible with FreeBSD7 options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI options KTRACE # ktrace(1) support options STACK # stack(9) support options SYSVSHM # SYSV-style shared memory options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options P1003_1B_SEMAPHORES # POSIX-style semaphores options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions options PRINTF_BUFR_SIZE=128 # Prevent printf output being interspersed. options KBD_INSTALL_CDEV # install a CDEV entry in /dev options HWPMC_HOOKS # Necessary kernel hooks for hwpmc(4) options AUDIT # Security event auditing options MAC # TrustedBSD MAC Framework #options KDTRACE_HOOKS # Kernel DTrace hooks options INCLUDE_CONFIG_FILE # Include this file in kernel options KDB # Kernel debugger related code options KDB_TRACE # Print a stack trace for a panic # To make an SMP kernel, the next two lines are needed options SMP # Symmetric MultiProcessor Kernel device apic # I/O APIC # CPU frequency control device cpufreq # Bus support. device acpi device eisa device pci # Floppy drives device fdc # ATA and ATAPI devices device ata device atadisk # ATA disk drives device ataraid # ATA RAID drives device atapicd # ATAPI CDROM drives device atapifd # ATAPI floppy drives device atapist # ATAPI tape drives options ATA_STATIC_ID # Static device numbering # SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. device amd # AMD 53C974 (Tekram DC-390(T)) device hptiop # Highpoint RocketRaid 3xxx series device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aha # Adaptec 154x SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50 # SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE) # RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device hptrr # Highpoint RocketRAID 17xx, 22xx, 23xx, 25xx device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID +device tws # LSI 3ware 9750 SATA+SAS 6Gb/s RAID controller # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller device atkbd # AT keyboard device psm # PS/2 mouse device kbdmux # keyboard multiplexer device vga # VGA video card driver device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc device agp # support several AGP chipsets # Power management support (see NOTES for more options) #device apm # Add suspend/resume support for the i8254. device pmtimer # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus # Serial (COM) ports device uart # Generic UART driver # Parallel port device ppc device ppbus # Parallel port bus (required) device lpt # Printer device plip # TCP/IP over parallel device ppi # Parallel port interface device #device vpo # Requires scbus and da device puc # Multi I/O cards and multi-channel UARTs # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (``Tulip'') device em # Intel PRO/1000 Gigabit Ethernet Family device igb # Intel PRO/1000 PCIE Server Gigabit Family device ixgb # Intel PRO/10GbE Ethernet Card device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') # PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support device ae # Attansic/Atheros L2 FastEthernet device age # Attansic/Atheros L1 Gigabit Ethernet device alc # Atheros AR8131/AR8132 Ethernet device ale # Atheros AR8121/AR8113/AR8114 Ethernet device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device et # Agere ET1310 10/100/Gigabit Ethernet device fxp # Intel EtherExpress PRO/100B (82557, 82558) device jme # JMicron JMC250 Gigabit/JMC260 Fast Ethernet device lge # Level 1 LXT1001 gigabit Ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nfe # nVidia nForce MCP on-board Ethernet device nge # NatSemi DP83820 gigabit Ethernet #device nve # nVidia nForce MCP on-board Ethernet Networking device pcn # AMD Am79C97x PCI 10/100 (precedence over 'le') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (``Starfire'') device sge # Silicon Integrated Systems SiS190/191 device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 ``EPIC'') device vge # VIA VT612x gigabit Ethernet device vr # VIA Rhine, Rhine II device vte # DM&P Vortex86 RDC R6040 Fast Ethernet device wb # Winbond W89C840F device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') # ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' requires 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc. device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # Wireless NIC cards device wlan # 802.11 support options IEEE80211_DEBUG # enable debug msgs options IEEE80211_AMPDU_AGE # age frames in AMPDU reorder q's options IEEE80211_SUPPORT_MESH # enable 802.11s draft support device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support device wlan_amrr # AMRR transmit rate control algorithm device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # pci/cardbus chip support options AH_SUPPORT_AR5416 # enable AR5416 tx/rx descriptors device ath_rate_sample # SampleRate tx rate control for ath device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC. # Pseudo devices. device loop # Network loopback device random # Entropy device device ether # Ethernet support device vlan # 802.1Q VLAN support device tun # Packet tunnel. device pty # BSD-style compatibility pseudo ttys device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device faith # IPv6-to-IPv4 relaying (translation) device firmware # firmware assist module # The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter # USB support options USB_DEBUG # enable debug msgs device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device uhid # "Human Interface Devices" device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device urio # Diamond Rio 500 MP3 player # USB Serial devices device u3g # USB-based 3G modems (Option, Huawei, Sierra) device uark # Technologies ARK3116 based serial adapters device ubsa # Belkin F5U103 and compatible serial adapters device uftdi # For FTDI usb serial adapters device uipaq # Some WinCE based devices device uplcom # Prolific PL-2303 serial adapters device uslcom # SI Labs CP2101/CP2102 serial adapters device uvisor # Visor and Palm devices device uvscom # USB serial support for DDI pocket's PHS # USB Ethernet, requires miibus device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet device udav # Davicom DM9601E USB # USB Wireless device rum # Ralink Technology RT2501USB wireless NICs device uath # Atheros AR5523 wireless NICs device ural # Ralink Technology RT2500USB wireless NICs device zyd # ZyDAS zb1211/zb1211b wireless NICs # FireWire support device firewire # FireWire bus code #device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!) device fwip # IP over FireWire (RFC 2734,3146) device dcons # Dumb console driver device dcons_crom # Configuration ROM for dcons Index: stable/8/sys/modules/Makefile =================================================================== --- stable/8/sys/modules/Makefile (revision 226242) +++ stable/8/sys/modules/Makefile (revision 226243) @@ -1,689 +1,690 @@ # $FreeBSD$ .include SUBDIR= ${_3dfx} \ ${_3dfx_linux} \ ${_aac} \ accf_data \ accf_dns \ accf_http \ ${_acpi} \ ae \ ${_aesni} \ age \ ${_agp} \ aha \ ${_ahb} \ ahci \ ${_aic} \ aic7xxx \ aio \ alc \ ale \ alq \ ${_amd} \ ${_amdsbwd} \ ${_amdtemp} \ amr \ ${_an} \ ${_aout} \ ${_apm} \ ${_arcmsr} \ ${_arcnet} \ ${_asmc} \ ${_asr} \ ata \ ath \ ${_auxio} \ ${_bce} \ bfe \ bge \ ${_bios} \ ${_bktr} \ ${_bm} \ bridgestp \ ${_bwi} \ ${_bwn} \ cam \ ${_canbepm} \ ${_canbus} \ ${_cardbus} \ cas \ ${_cbb} \ cc \ cd9660 \ cd9660_iconv \ ${_ce} \ ${_ciss} \ ${_cm} \ ${_cmx} \ coda \ coda5 \ ${_coff} \ ${_coretemp} \ ${_cp} \ ${_cpuctl} \ ${_cpufreq} \ ${_crypto} \ ${_cryptodev} \ ${_cs} \ ${_ctau} \ ${_cxgb} \ cxgbe \ ${_cyclic} \ dc \ dcons \ dcons_crom \ de \ ${_dpms} \ ${_dpt} \ ${_drm} \ ${_dtrace} \ dummynet \ ${_ed} \ ${_elink} \ ${_em} \ en \ ${_ep} \ ${_epic} \ ${_et} \ ${_ex} \ ${_exca} \ ${_ext2fs} \ fatm \ fdc \ fdescfs \ ${_fe} \ firewire \ firmware \ fxp \ gem \ geom \ ${_glxsb} \ hatm \ hifn \ hme \ ${_hptiop} \ ${_hptmv} \ ${_hptrr} \ hwpmc \ ${_i2c} \ ${_ibcs2} \ ${_ichwd} \ ${_ida} \ ${_ie} \ if_bridge \ if_carp \ if_disc \ if_edsc \ if_ef \ if_epair \ if_faith \ if_gif \ if_gre \ if_lagg \ ${_if_ndis} \ if_stf \ if_tap \ if_tun \ if_vlan \ ${_igb} \ ${_iir} \ ${_io} \ ipdivert \ ${_ipfilter} \ ipfw \ ipfw_nat \ ${_ipmi} \ ip_mroute_mod \ ${_ips} \ ${_ipw} \ ${_ipwfw} \ iscsi \ isp \ ispfw \ ${_iwi} \ ${_iwifw} \ ${_iwn} \ ${_iwnfw} \ ${_ixgb} \ ${_ixgbe} \ jme \ joy \ kbdmux \ kgssapi \ kgssapi_krb5 \ khelp \ krpc \ ksyms \ le \ lge \ libalias \ libiconv \ libmbpool \ libmchain \ ${_lindev} \ ${_linprocfs} \ ${_linsysfs} \ ${_linux} \ lmc \ lpt \ mac_biba \ mac_bsdextended \ mac_ifoff \ mac_lomac \ mac_mls \ mac_none \ mac_partition \ mac_portacl \ mac_seeotheruids \ mac_stub \ mac_test \ malo \ mcd \ md \ mem \ ${_mfi} \ mii \ mlx \ ${_mly} \ mmc \ mmcsd \ ${_mpt} \ mps \ mqueue \ msdosfs \ msdosfs_iconv \ ${_mse} \ msk \ mvs \ mwl \ mwlfw \ mxge \ my \ ${_ncp} \ ${_ncv} \ ${_ndis} \ ${_netgraph} \ ${_nfe} \ nfs_common \ nfscl \ nfsclient \ nfscommon \ nfsd \ nfslock \ nfslockd \ nfsserver \ nfssvc \ nge \ nmdm \ ${_nsp} \ ntfs \ ntfs_iconv \ nullfs \ ${_nve} \ ${_nvram} \ ${_nwfs} \ ${_nxge} \ ${_opensolaris} \ ${_padlock} \ patm \ ${_pccard} \ ${_pcfclock} \ pcn \ ${_pf} \ ${_pflog} \ plip \ ${_pmc} \ portalfs \ ppbus \ ppc \ ppi \ pps \ procfs \ pseudofs \ ${_pst} \ puc \ ral \ ralfw \ ${_random} \ rc4 \ ${_rdma} \ re \ reiserfs \ rl \ runfw \ ${_s3} \ ${_safe} \ ${_sbni} \ scc \ scd \ ${_scsi_low} \ sdhci \ sem \ sf \ sge \ ${_siba_bwn} \ siftr \ siis \ sis \ sk \ ${_smbfs} \ sn \ ${_snc} \ snp \ ${_sound} \ ${_speaker} \ ${_splash} \ ${_sppp} \ ste \ ${_stg} \ stge \ ${_streams} \ ${_svr4} \ ${_sym} \ ${_syscons} \ sysvipc \ ti \ tl \ ${_tmpfs} \ ${_tpm} \ trm \ ${_twa} \ twe \ + tws \ tx \ txp \ ${_uart} \ ubsec \ udf \ udf_iconv \ ufs \ unionfs \ usb \ utopia \ ${_vesa} \ vge \ vkbd \ ${_vpo} \ vr \ vte \ vx \ wb \ ${_wi} \ wlan \ wlan_acl \ wlan_amrr \ wlan_ccmp \ wlan_rssadapt \ wlan_tkip \ wlan_wep \ wlan_xauth \ ${_wpi} \ ${_wpifw} \ ${_x86bios} \ ${_xe} \ xfs \ xl \ ${_zfs} \ zlib \ .if ${MACHINE_ARCH} != "powerpc" && ${MACHINE_ARCH} != "arm" && \ ${MACHINE_ARCH} != "mips" _syscons= syscons _vpo= vpo .endif .if ${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "mips" # no BUS_SPACE_UNSPECIFIED _bce= bce _bwi= bwi _bwn= bwn _mfi= mfi _mpt= mpt _siba_bwn= siba_bwn # No barrier instruction support (specific to this driver) _sym= sym # no uart_cpu_$MACHINE_ARCH _uart= uart # disable_intr() interferes _cxgb= cxgb .endif .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) .if exists(${.CURDIR}/../opencrypto) _crypto= crypto _cryptodev= cryptodev .endif .if exists(${.CURDIR}/../crypto) _random= random .endif .endif .if ${MK_IPFILTER} != "no" || defined(ALL_MODULES) _ipfilter= ipfilter .endif .if ${MK_NETGRAPH} != "no" || defined(ALL_MODULES) _netgraph= netgraph .endif .if ${MK_PF} != "no" || defined(ALL_MODULES) _pf= pf _pflog= pflog .endif .if ${MACHINE_ARCH} == "i386" # XXX some of these can move to the general case when de-i386'ed # XXX some of these can move now, but are untested on other architectures. _3dfx= 3dfx _3dfx_linux= 3dfx_linux _agp= agp _aic= aic _amd= amd _an= an _aout= aout _apm= apm _arcnet= arcnet _bktr= bktr _cardbus= cardbus _cbb= cbb _ce= ce _coff= coff _cp= cp _cpuctl= cpuctl _cpufreq= cpufreq _cs= cs .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _cyclic= cyclic .endif _dpms= dpms _drm= drm .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _dtrace= dtrace .endif _ed= ed _elink= elink _em= em _ep= ep _et= et _exca= exca _ext2fs= ext2fs _fe= fe _glxsb= glxsb _i2c= i2c _ibcs2= ibcs2 _ie= ie _if_ndis= if_ndis _igb= igb _io= io _lindev= lindev _linprocfs= linprocfs _linsysfs= linsysfs _linux= linux _mse= mse .if ${MK_NCP} != "no" _ncp= ncp .endif _ncv= ncv _ndis= ndis _nsp= nsp .if ${MK_NCP} != "no" _nwfs= nwfs .endif .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _opensolaris= opensolaris .endif _pccard= pccard _pcfclock= pcfclock _pst= pst _rdma= rdma _safe= safe _sbni= sbni _scsi_low= scsi_low _smbfs= smbfs _sound= sound _speaker= speaker _splash= splash _sppp= sppp _stg= stg _streams= streams _svr4= svr4 _tmpfs= tmpfs _wi= wi _xe= xe .if ${MK_ZFS} != "no" || defined(ALL_MODULES) _zfs= zfs .endif .if ${MACHINE} == "i386" _aac= aac _acpi= acpi .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _aesni= aesni .endif _ahb= ahb _amdsbwd= amdsbwd _amdtemp= amdtemp _arcmsr= arcmsr _asmc= asmc _asr= asr _bios= bios _ciss= ciss _cm= cm _cmx= cmx _coretemp= coretemp _ctau= ctau _dpt= dpt _ex= ex _hptiop= hptiop _hptmv= hptmv _hptrr= hptrr _ichwd= ichwd _ida= ida _iir= iir _ipmi= ipmi _ips= ips _ipw= ipw _ipwfw= ipwfw _iwi= iwi _iwifw= iwifw _iwn= iwn _iwnfw= iwnfw _ixgb= ixgb _ixgbe= ixgbe _mly= mly _nfe= nfe _nve= nve _nvram= nvram _nxge= nxge _tpm= tpm _wpi= wpi _wpifw= wpifw .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _padlock= padlock .endif _s3= s3 _twa= twa _vesa= vesa _x86bios= x86bios .elif ${MACHINE} == "pc98" _canbepm= canbepm _canbus= canbus _pmc= pmc _snc= snc .endif .endif .if ${MACHINE_ARCH} == "amd64" _aac= aac _acpi= acpi .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _aesni= aesni .endif _agp= agp _an= an _amdsbwd= amdsbwd _amdtemp= amdtemp _arcmsr= arcmsr _asmc= asmc _cardbus= cardbus _cbb= cbb _cmx= cmx _ciss= ciss _coretemp= coretemp _cpuctl= cpuctl _cpufreq= cpufreq .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _cyclic= cyclic .endif _dpms= dpms _drm= drm .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _dtrace= dtrace .endif _ed= ed _et= et _em= em _exca= exca _ext2fs= ext2fs _hptiop= hptiop _hptmv= hptmv _hptrr= hptrr _i2c= i2c _ichwd= ichwd _ida= ida _if_ndis= if_ndis _igb= igb _iir= iir _io= io _ipmi= ipmi _ips= ips _ipw= ipw _ipwfw= ipwfw _iwi= iwi _iwifw= iwifw _iwn= iwn _iwnfw= iwnfw _ixgb= ixgb _ixgbe= ixgbe _lindev= lindev _linprocfs= linprocfs _linsysfs= linsysfs _linux= linux _mly= mly _ndis= ndis _nfe= nfe _nve= nve _nvram= nvram _nxge= nxge .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _opensolaris= opensolaris .endif .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _padlock= padlock .endif _pccard= pccard _rdma= rdma _s3= s3 _safe= safe _scsi_low= scsi_low _smbfs= smbfs _sound= sound _speaker= speaker _splash= splash _sppp= sppp _tmpfs= tmpfs _tpm= tpm _twa= twa _vesa= vesa _x86bios= x86bios _wi= wi _wpi= wpi _wpifw= wpifw .if ${MK_ZFS} != "no" || defined(ALL_MODULES) _zfs= zfs .endif .endif .if ${MACHINE_ARCH} == "ia64" _aac= aac _aic= aic _an= an _arcnet= arcnet _asr= asr _bktr= bktr _cardbus= cardbus _cbb= cbb _ciss= ciss _cm= cm _cmx= cmx _coff= coff _cpufreq= cpufreq _dpt= dpt _em= em _ep= ep _et= et _exca= exca _fe= fe _hptiop= hptiop _ida= ida _igb= igb _iir= iir _ips= ips _mly= mly _pccard= pccard _scsi_low= scsi_low _smbfs= smbfs _sound= sound _splash= splash _sppp= sppp _streams= streams _tpm= tpm _twa= twa _wi= wi _xe= xe .endif .if ${MACHINE_ARCH} == "powerpc" _an= an _bm= bm _cpufreq= cpufreq _nvram= powermac_nvram _smbfs= smbfs _sound= sound .endif .if ${MACHINE_ARCH} == "sparc64" _auxio= auxio _em= em _epic= epic _i2c= i2c _igb= igb .if ${MK_CDDL} != "no" || defined(ALL_MODULES) _opensolaris= opensolaris .endif _sound= sound .if ${MK_ZFS} != "no" || defined(ALL_MODULES) _zfs= zfs .endif .endif .if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES) SUBDIR=${MODULES_OVERRIDE} .endif .for reject in ${WITHOUT_MODULES} SUBDIR:= ${SUBDIR:N${reject}} .endfor # Calling kldxref(8) for each module is expensive. .if !defined(NO_XREF) .MAKEFLAGS+= -DNO_XREF afterinstall: @if type kldxref >/dev/null 2>&1; then \ ${ECHO} kldxref ${DESTDIR}${KMODDIR}; \ kldxref ${DESTDIR}${KMODDIR}; \ fi .endif .include Index: stable/8/sys/modules/tws/Makefile =================================================================== --- stable/8/sys/modules/tws/Makefile (nonexistent) +++ stable/8/sys/modules/tws/Makefile (revision 226243) @@ -0,0 +1,10 @@ +# Makefile for tws (LSI 3ware 9750 SAS2/SATA-II RAID PCIe) driver +# $FreeBSD$ + +KMOD= tws +.PATH: ${.CURDIR}/../../dev/${KMOD} + +SRCS= tws.c tws_services.c tws_cam.c tws_hdm.c tws_user.c +SRCS+= device_if.h bus_if.h pci_if.h opt_cam.h opt_scsi.h + +.include Property changes on: stable/8/sys/modules/tws/Makefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: stable/8/sys =================================================================== --- stable/8/sys (revision 226242) +++ stable/8/sys (revision 226243) Property changes on: stable/8/sys ___________________________________________________________________ Modified: svn:mergeinfo ## -0,0 +0,1 ## Merged /head/sys:r226026