diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index ce2ce1ec8640..9504cde7626e 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -1,1038 +1,1037 @@ # @(#)Makefile 8.1 (Berkeley) 6/18/93 # $FreeBSD$ .include MAN= aac.4 \ aacraid.4 \ acpi.4 \ ${_acpi_asus.4} \ ${_acpi_asus_wmi.4} \ ${_acpi_dock.4} \ ${_acpi_fujitsu.4} \ ${_acpi_hp.4} \ ${_acpi_ibm.4} \ ${_acpi_panasonic.4} \ ${_acpi_rapidstart.4} \ ${_acpi_sony.4} \ acpi_thermal.4 \ acpi_battery.4 \ ${_acpi_toshiba.4} \ acpi_video.4 \ ${_acpi_wmi.4} \ ada.4 \ adm6996fc.4 \ ads111x.4 \ ae.4 \ ${_aesni.4} \ age.4 \ agp.4 \ ahc.4 \ ahci.4 \ ahd.4 \ ${_aibs.4} \ aio.4 \ alc.4 \ ale.4 \ alpm.4 \ altera_atse.4 \ altera_avgen.4 \ altera_jtag_uart.4 \ altera_sdcard.4 \ altq.4 \ amdpm.4 \ ${_amdsbwd.4} \ ${_amdsmb.4} \ ${_amdsmn.4} \ ${_amdtemp.4} \ ${_bxe.4} \ amr.4 \ ${_aout.4} \ ${_apic.4} \ arcmsr.4 \ arswitch.4 \ ${_asmc.4} \ at45d.4 \ ata.4 \ ath.4 \ ath_ahb.4 \ ath_hal.4 \ ath_pci.4 \ atkbd.4 \ atkbdc.4 \ atp.4 \ ${_atf_test_case.4} \ ${_atrtc.4} \ ${_attimer.4} \ audit.4 \ auditpipe.4 \ aue.4 \ axe.4 \ axge.4 \ axp.4 \ bce.4 \ bcma.4 \ bfe.4 \ bge.4 \ ${_bhyve.4} \ bhnd.4 \ bhnd_chipc.4 \ bhnd_pmu.4 \ bhndb.4 \ bhndb_pci.4 \ blackhole.4 \ bnxt.4 \ bpf.4 \ bridge.4 \ bwi.4 \ bwn.4 \ ${_bytgpio.4} \ capsicum.4 \ cardbus.4 \ carp.4 \ cas.4 \ cc_cdg.4 \ cc_chd.4 \ cc_cubic.4 \ cc_dctcp.4 \ cc_hd.4 \ cc_htcp.4 \ cc_newreno.4 \ cc_vegas.4 \ ${_ccd.4} \ ccr.4 \ cd.4 \ cdce.4 \ cdceem.4 \ cfi.4 \ cfumass.4 \ ${_cgem.4} \ ch.4 \ chromebook_platform.4 \ ${_chvgpio.4} \ ciss.4 \ ${_coretemp.4} \ cp2112.4 \ ${_cpuctl.4} \ cpufreq.4 \ crypto.4 \ ctl.4 \ cue.4 \ cxgb.4 \ cxgbe.4 \ cxgbev.4 \ cyapa.4 \ da.4 \ dc.4 \ dcons.4 \ dcons_crom.4 \ ddb.4 \ devctl.4 \ disc.4 \ disk.4 \ divert.4 \ ${_dpms.4} \ ds1307.4 \ ds3231.4 \ ${_dtrace_provs} \ dummynet.4 \ edsc.4 \ ehci.4 \ em.4 \ ena.4 \ enc.4 \ epair.4 \ est.4 \ et.4 \ etherswitch.4 \ eventtimers.4 \ exca.4 \ e6060sw.4 \ fd.4 \ fdc.4 \ fdt.4 \ fdt_pinctrl.4 \ fdtbus.4 \ ffclock.4 \ filemon.4 \ firewire.4 \ ${_ftwd.4} \ full.4 \ fwe.4 \ fwip.4 \ fwohci.4 \ fxp.4 \ gbde.4 \ gdb.4 \ gem.4 \ geom.4 \ geom_linux_lvm.4 \ geom_map.4 \ geom_uzip.4 \ gif.4 \ gpio.4 \ gpioiic.4 \ gpiokeys.4 \ gpioled.4 \ gpioths.4 \ gre.4 \ h_ertt.4 \ hconf.4 \ hcons.4 \ hgame.4 \ hidbus.4 \ hidquirk.4 \ hidraw.4 \ hifn.4 \ hkbd.4 \ hms.4 \ hmt.4 \ hpen.4 \ hpet.4 \ ${_hpt27xx.4} \ ${_hptiop.4} \ ${_hptmv.4} \ ${_hptnr.4} \ ${_hptrr.4} \ hsctrl.4 \ htu21.4 \ ${_hv_kvp.4} \ ${_hv_netvsc.4} \ ${_hv_storvsc.4} \ ${_hv_utils.4} \ ${_hv_vmbus.4} \ ${_hv_vss.4} \ hwpmc.4 \ ${_hwpstate_intel.4} \ iavf.4 \ ichsmb.4 \ ${_ichwd.4} \ icmp.4 \ icmp6.4 \ ida.4 \ if_ipsec.4 \ iflib.4 \ ifmib.4 \ ig4.4 \ igmp.4 \ iic.4 \ iic_gpiomux.4 \ iicbb.4 \ iicbus.4 \ iichid.4 \ iicmux.4 \ iicsmb.4 \ ${_igc.4} \ ${_imcsmb.4} \ inet.4 \ inet6.4 \ intpm.4 \ intro.4 \ ${_io.4} \ ${_ioat.4} \ ip.4 \ ip6.4 \ ipfirewall.4 \ ipheth.4 \ ${_ipmi.4} \ ips.4 \ ipsec.4 \ ipw.4 \ ipwfw.4 \ isci.4 \ isl.4 \ ismt.4 \ isp.4 \ ispfw.4 \ ${_itwd.4} \ iwi.4 \ iwifw.4 \ iwm.4 \ iwmfw.4 \ iwn.4 \ iwnfw.4 \ ixgbe.4 \ ixl.4 \ jedec_dimm.4 \ jme.4 \ kbdmux.4 \ kcov.4 \ keyboard.4 \ kld.4 \ ksyms.4 \ ksz8995ma.4 \ ktls.4 \ ktr.4 \ kue.4 \ lagg.4 \ le.4 \ led.4 \ lge.4 \ ${_linux.4} \ liquidio.4 \ lm75.4 \ lo.4 \ lp.4 \ lpbb.4 \ lpt.4 \ ltc430x.4 \ mac.4 \ mac_biba.4 \ mac_bsdextended.4 \ mac_ifoff.4 \ mac_lomac.4 \ mac_mls.4 \ mac_none.4 \ mac_ntpd.4 \ mac_partition.4 \ mac_portacl.4 \ mac_seeotheruids.4 \ mac_stub.4 \ mac_test.4 \ malo.4 \ max44009.4 \ md.4 \ mdio.4 \ me.4 \ mem.4 \ meteor.4 \ mfi.4 \ ${_mgb.4} \ miibus.4 \ mld.4 \ mlx.4 \ mlx4en.4 \ mlx5en.4 \ mmc.4 \ mmcsd.4 \ mod_cc.4 \ mos.4 \ mouse.4 \ mpr.4 \ mps.4 \ mpt.4 \ mrsas.4 \ msk.4 \ mtio.4 \ multicast.4 \ muge.4 \ mvs.4 \ mwl.4 \ mwlfw.4 \ mx25l.4 \ mxge.4 \ my.4 \ net80211.4 \ netdump.4 \ netfpga10g_nf10bmac.4 \ netgdb.4 \ netgraph.4 \ netintro.4 \ netmap.4 \ ${_nfe.4} \ ${_nfsmb.4} \ ng_async.4 \ ngatmbase.4 \ ng_atmllc.4 \ ng_bpf.4 \ ng_bridge.4 \ ng_btsocket.4 \ ng_car.4 \ ng_ccatm.4 \ ng_checksum.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_frame_relay.4 \ ng_gif.4 \ ng_gif_demux.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_macfilter.4 \ ng_mppc.4 \ ng_nat.4 \ ng_netflow.4 \ ng_one2many.4 \ ng_patch.4 \ ng_pipe.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_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 \ ng_vlan_rotate.4 \ nmdm.4 \ ${_ntb.4} \ ${_ntb_hw_amd.4} \ ${_ntb_hw_intel.4} \ ${_ntb_hw_plx.4} \ ${_ntb_transport.4} \ ${_nda.4} \ ${_if_ntb.4} \ null.4 \ numa.4 \ ${_nvd.4} \ ${_nvdimm.4} \ ${_nvme.4} \ ${_nvram.4} \ ${_nvram2env.4} \ oce.4 \ ocs_fc.4\ ohci.4 \ openfirm.4 \ orm.4 \ ${_ossl.4} \ ow.4 \ ow_temp.4 \ owc.4 \ ${_padlock.4} \ pass.4 \ pca954x.4 \ pccard.4 \ pccbb.4 \ pcf.4 \ pcf8574.4 \ pcf8591.4 \ ${_pchtherm.4} \ pci.4 \ pcib.4 \ pcic.4 \ pcm.4 \ ${_pf.4} \ ${_pflog.4} \ ${_pfsync.4} \ pim.4 \ pms.4 \ polling.4 \ ppbus.4 \ ppc.4 \ ppi.4 \ procdesc.4 \ proto.4 \ ps4dshock.4 \ psm.4 \ pst.4 \ pt.4 \ ptnet.4 \ pts.4 \ pty.4 \ puc.4 \ pwmc.4 \ ${_qat.4} \ ${_qlxge.4} \ ${_qlxgb.4} \ ${_qlxgbe.4} \ ${_qlnxe.4} \ ral.4 \ random.4 \ rctl.4 \ re.4 \ rgephy.4 \ rights.4 \ rl.4 \ rndtest.4 \ route.4 \ rtsx.4 \ rtwn.4 \ rtwnfw.4 \ rtwn_pci.4 \ rue.4 \ sa.4 \ safe.4 \ safexcel.4 \ sbp.4 \ sbp_targ.4 \ scc.4 \ sched_4bsd.4 \ sched_ule.4 \ screen.4 \ scsi.4 \ sctp.4 \ sdhci.4 \ sem.4 \ send.4 \ ses.4 \ ${_sfxge.4} \ sge.4 \ siba.4 \ siftr.4 \ siis.4 \ simplebus.4 \ sis.4 \ sk.4 \ ${_smartpqi.4} \ smb.4 \ smbios.4 \ smbus.4 \ smp.4 \ smsc.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_hdspe.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 \ sndstat.4 \ snp.4 \ spigen.4 \ ${_spkr.4} \ splash.4 \ ste.4 \ stf.4 \ stge.4 \ ${_sume.4} \ ${_superio.4} \ sym.4 \ syncache.4 \ syncer.4 \ syscons.4 \ sysmouse.4 \ tap.4 \ targ.4 \ tcp.4 \ tcp_bbr.4 \ tdfx.4 \ terasic_mtl.4 \ termios.4 \ textdump.4 \ ti.4 \ timecounters.4 \ ${_tpm.4} \ tty.4 \ tun.4 \ - twa.4 \ twe.4 \ tws.4 \ udp.4 \ udplite.4 \ ure.4 \ vale.4 \ vga.4 \ vge.4 \ viapm.4 \ ${_viawd.4} \ virtio.4 \ virtio_balloon.4 \ virtio_blk.4 \ virtio_console.4 \ virtio_random.4 \ virtio_scsi.4 \ ${_vmci.4} \ vkbd.4 \ vlan.4 \ vxlan.4 \ ${_vmd.4} \ ${_vmm.4} \ ${_vmx.4} \ vr.4 \ vt.4 \ vte.4 \ vtnet.4 \ watchdog.4 \ ${_wbwd.4} \ witness.4 \ wlan.4 \ wlan_acl.4 \ wlan_amrr.4 \ wlan_ccmp.4 \ wlan_tkip.4 \ wlan_wep.4 \ wlan_xauth.4 \ wmt.4 \ ${_wpi.4} \ wsp.4 \ xb360gp.4 \ ${_xen.4} \ xhci.4 \ xl.4 \ ${_xnb.4} \ xpt.4 \ zero.4 MLINKS= ads111x.4 ads1013.4 \ ads111x.4 ads1014.4 \ ads111x.4 ads1015.4 \ ads111x.4 ads1113.4 \ ads111x.4 ads1114.4 \ ads111x.4 ads1115.4 MLINKS+=ae.4 if_ae.4 MLINKS+=age.4 if_age.4 MLINKS+=agp.4 agpgart.4 MLINKS+=alc.4 if_alc.4 MLINKS+=ale.4 if_ale.4 MLINKS+=altera_atse.4 atse.4 MLINKS+=altera_sdcard.4 altera_sdcardc.4 MLINKS+=altq.4 ALTQ.4 MLINKS+=ath.4 if_ath.4 MLINKS+=ath_pci.4 if_ath_pci.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+=bnxt.4 if_bnxt.4 MLINKS+=bridge.4 if_bridge.4 MLINKS+=bwi.4 if_bwi.4 MLINKS+=bwn.4 if_bwn.4 MLINKS+=${_bxe.4} ${_if_bxe.4} MLINKS+=cas.4 if_cas.4 MLINKS+=cdce.4 if_cdce.4 MLINKS+=cfi.4 cfid.4 MLINKS+=crypto.4 cryptodev.4 MLINKS+=cue.4 if_cue.4 MLINKS+=cxgb.4 if_cxgb.4 MLINKS+=cxgbe.4 if_cxgbe.4 \ cxgbe.4 vcxgbe.4 \ cxgbe.4 if_vcxgbe.4 \ cxgbe.4 cxl.4 \ cxgbe.4 if_cxl.4 \ cxgbe.4 vcxl.4 \ cxgbe.4 if_vcxl.4 \ cxgbe.4 cc.4 \ cxgbe.4 if_cc.4 \ cxgbe.4 vcc.4 \ cxgbe.4 if_vcc.4 MLINKS+=cxgbev.4 if_cxgbev.4 \ cxgbev.4 cxlv.4 \ cxgbev.4 if_cxlv.4 \ cxgbev.4 ccv.4 \ cxgbev.4 if_ccv.4 MLINKS+=dc.4 if_dc.4 MLINKS+=disc.4 if_disc.4 MLINKS+=edsc.4 if_edsc.4 MLINKS+=em.4 if_em.4 \ em.4 igb.4 \ em.4 if_igb.4 MLINKS+=enc.4 if_enc.4 MLINKS+=epair.4 if_epair.4 MLINKS+=et.4 if_et.4 MLINKS+=fd.4 stderr.4 \ fd.4 stdin.4 \ fd.4 stdout.4 MLINKS+=fdt.4 FDT.4 MLINKS+=firewire.4 ieee1394.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+=gpio.4 gpiobus.4 MLINKS+=gpioths.4 dht11.4 MLINKS+=gpioths.4 dht22.4 MLINKS+=gre.4 if_gre.4 MLINKS+=hpet.4 acpi_hpet.4 MLINKS+=${_hptrr.4} ${_rr232x.4} MLINKS+=${_attimer.4} ${_i8254.4} MLINKS+=ip.4 rawip.4 MLINKS+=ipfirewall.4 ipaccounting.4 \ ipfirewall.4 ipacct.4 \ ipfirewall.4 ipfw.4 MLINKS+=ipheth.4 if_ipheth.4 MLINKS+=ipw.4 if_ipw.4 MLINKS+=iwi.4 if_iwi.4 MLINKS+=iwm.4 if_iwm.4 MLINKS+=iwn.4 if_iwn.4 MLINKS+=ixgbe.4 ix.4 MLINKS+=ixgbe.4 if_ix.4 MLINKS+=ixgbe.4 if_ixgbe.4 MLINKS+=ixl.4 if_ixl.4 MLINKS+=iavf.4 if_iavf.4 MLINKS+=jme.4 if_jme.4 MLINKS+=kue.4 if_kue.4 MLINKS+=lagg.4 trunk.4 MLINKS+=lagg.4 if_lagg.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+=mfi.4 mfi_linux.4 \ mfi.4 mfip.4 MLINKS+=mlx5en.4 mce.4 MLINKS+=mos.4 if_mos.4 MLINKS+=msk.4 if_msk.4 MLINKS+=mwl.4 if_mwl.4 MLINKS+=mxge.4 if_mxge.4 MLINKS+=my.4 if_my.4 MLINKS+=netfpga10g_nf10bmac.4 if_nf10bmac.4 MLINKS+=netintro.4 net.4 \ netintro.4 networking.4 MLINKS+=${_nfe.4} ${_if_nfe.4} MLINKS+=nge.4 if_nge.4 MLINKS+=openfirm.4 openfirmware.4 MLINKS+=ow.4 onewire.4 MLINKS+=pccbb.4 cbb.4 MLINKS+=pcm.4 snd.4 \ pcm.4 sound.4 MLINKS+=pms.4 pmspcv.4 MLINKS+=ptnet.4 if_ptnet.4 MLINKS+=ral.4 if_ral.4 MLINKS+=re.4 if_re.4 MLINKS+=rl.4 if_rl.4 MLINKS+=rtwn_pci.4 if_rtwn_pci.4 MLINKS+=rue.4 if_rue.4 MLINKS+=scsi.4 CAM.4 \ scsi.4 cam.4 \ scsi.4 scbus.4 \ scsi.4 SCSI.4 MLINKS+=sge.4 if_sge.4 MLINKS+=sis.4 if_sis.4 MLINKS+=sk.4 if_sk.4 MLINKS+=smp.4 SMP.4 MLINKS+=smsc.4 if_smsc.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 \ tap.4 vmnet.4 \ tap.4 if_vmnet.4 MLINKS+=tdfx.4 tdfx_linux.4 MLINKS+=ti.4 if_ti.4 MLINKS+=tun.4 if_tun.4 MLINKS+=ure.4 if_ure.4 MLINKS+=vge.4 if_vge.4 MLINKS+=vlan.4 if_vlan.4 MLINKS+=vxlan.4 if_vxlan.4 MLINKS+=${_vmx.4} ${_if_vmx.4} MLINKS+=vr.4 if_vr.4 MLINKS+=vte.4 if_vte.4 MLINKS+=vtnet.4 if_vtnet.4 MLINKS+=watchdog.4 SW_WATCHDOG.4 MLINKS+=${_wpi.4} ${_if_wpi.4} MLINKS+=xl.4 if_xl.4 .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" _acpi_asus.4= acpi_asus.4 _acpi_asus_wmi.4= acpi_asus_wmi.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_rapidstart.4=acpi_rapidstart.4 _acpi_sony.4= acpi_sony.4 _acpi_toshiba.4=acpi_toshiba.4 _acpi_wmi.4= acpi_wmi.4 _aesni.4= aesni.4 _aout.4= aout.4 _apic.4= apic.4 _atrtc.4= atrtc.4 _attimer.4= attimer.4 _aibs.4= aibs.4 _amdsbwd.4= amdsbwd.4 _amdsmb.4= amdsmb.4 _amdsmn.4= amdsmn.4 _amdtemp.4= amdtemp.4 _asmc.4= asmc.4 _bxe.4= bxe.4 _bytgpio.4= bytgpio.4 _chvgpio.4= chvgpio.4 _coretemp.4= coretemp.4 _cpuctl.4= cpuctl.4 _dpms.4= dpms.4 _ftwd.4= ftwd.4 _hpt27xx.4= hpt27xx.4 _hptiop.4= hptiop.4 _hptmv.4= hptmv.4 _hptnr.4= hptnr.4 _hptrr.4= hptrr.4 _hv_kvp.4= hv_kvp.4 _hv_netvsc.4= hv_netvsc.4 _hv_storvsc.4= hv_storvsc.4 _hv_utils.4= hv_utils.4 _hv_vmbus.4= hv_vmbus.4 _hv_vss.4= hv_vss.4 _hwpstate_intel.4= hwpstate_intel.4 _i8254.4= i8254.4 _ichwd.4= ichwd.4 _if_bxe.4= if_bxe.4 _if_nfe.4= if_nfe.4 _if_urtw.4= if_urtw.4 _if_vmx.4= if_vmx.4 _if_wpi.4= if_wpi.4 _igc.4= igc.4 _imcsmb.4= imcsmb.4 _io.4= io.4 _itwd.4= itwd.4 _mgb.4= mgb.4 _nda.4= nda.4 _nfe.4= nfe.4 _nfsmb.4= nfsmb.4 _if_ntb.4= if_ntb.4 _ntb.4= ntb.4 _ntb_hw_amd.4= ntb_hw_amd.4 _ntb_hw_intel.4= ntb_hw_intel.4 _ntb_hw_plx.4= ntb_hw_plx.4 _ntb_transport.4=ntb_transport.4 _nvd.4= nvd.4 _nvme.4= nvme.4 _nvram.4= nvram.4 _padlock.4= padlock.4 _pchtherm.4= pchtherm.4 _qat.4= qat.4 _rr232x.4= rr232x.4 _speaker.4= speaker.4 _spkr.4= spkr.4 _superio.4= superio.4 _tpm.4= tpm.4 _urtw.4= urtw.4 _viawd.4= viawd.4 _vmci.4= vmci.4 _vmd.4= vmd.4 _vmx.4= vmx.4 _wbwd.4= wbwd.4 _wpi.4= wpi.4 _xen.4= xen.4 _xnb.4= xnb.4 .endif .if ${MACHINE_CPUARCH} == "amd64" _ioat.4= ioat.4 _nvdimm.4= nvdimm.4 _qlxge.4= qlxge.4 _qlxgb.4= qlxgb.4 _qlxgbe.4= qlxgbe.4 _qlnxe.4= qlnxe.4 _sfxge.4= sfxge.4 _smartpqi.4= smartpqi.4 _sume.4= sume.4 MLINKS+=qlxge.4 if_qlxge.4 MLINKS+=qlxgb.4 if_qlxgb.4 MLINKS+=qlxgbe.4 if_qlxgbe.4 MLINKS+=qlnxe.4 if_qlnxe.4 MLINKS+=sfxge.4 if_sfxge.4 MLINKS+=sume.4 if_sume.4 .if ${MK_BHYVE} != "no" _bhyve.4= bhyve.4 _vmm.4= vmm.4 .endif .endif .if ${MACHINE_CPUARCH} == "mips" _nvram2env.4= nvram2env.4 .endif .if ${MACHINE_CPUARCH} == "powerpc" _nvd.4= nvd.4 _nvme.4= nvme.4 .endif .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" || \ ${MACHINE_CPUARCH} == "aarch64" _ipmi.4= ipmi.4 _linux.4= linux.4 _ossl.4= ossl.4 .endif .if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "aarch64" || \ ${MACHINE_CPUARCH} == "riscv" _cgem.4= cgem.4 MLINKS+=cgem.4 if_cgem.4 .endif .if empty(MAN_ARCH) || ${MAN_ARCH} == "all" __arches= ${:!/bin/sh -c "/bin/ls -d ${.CURDIR}/man4.*"!:E} .else __arches= ${MAN_ARCH} .endif .for __arch in ${__arches:O:u} .if exists(${.CURDIR}/man4.${__arch}) SUBDIR+= man4.${__arch} .endif .endfor .if ${MK_BLUETOOTH} != "no" MAN+= ng_bluetooth.4 .endif .if ${MK_CCD} != "no" _ccd.4= ccd.4 .endif .if ${MK_CDDL} != "no" _dtrace_provs= dtrace_audit.4 \ dtrace_io.4 \ dtrace_ip.4 \ dtrace_lockstat.4 \ dtrace_proc.4 \ dtrace_sched.4 \ dtrace_sctp.4 \ dtrace_tcp.4 \ dtrace_udp.4 \ dtrace_udplite.4 MLINKS+= dtrace_audit.4 dtaudit.4 .endif .if ${MK_EFI} != "no" MAN+= efidev.4 MLINKS+= efidev.4 efirtc.4 .endif .if ${MK_ISCSI} != "no" MAN+= cfiscsi.4 MAN+= iscsi.4 MAN+= iser.4 .endif .if ${MK_OFED} != "no" MAN+= mlx4ib.4 MAN+= mlx5ib.4 .endif .if ${MK_MLX5TOOL} != "no" MAN+= mlx5io.4 .endif .if ${MK_TESTS} != "no" ATF= ${SRCTOP}/contrib/atf .PATH: ${ATF}/doc _atf_test_case.4= atf-test-case.4 .endif .if ${MK_PF} != "no" _pf.4= pf.4 _pflog.4= pflog.4 _pfsync.4= pfsync.4 .endif .if ${MK_USB} != "no" MAN+= \ otus.4 \ otusfw.4 \ rsu.4 \ rsufw.4 \ rtwn_usb.4 \ rum.4 \ run.4 \ runfw.4 \ u3g.4 \ uark.4 \ uart.4 \ uath.4 \ ubsa.4 \ ubser.4 \ ubtbcmfw.4 \ uchcom.4 \ ucom.4 \ ucycom.4 \ udav.4 \ udbp.4 \ udl.4 \ uep.4 \ ufoma.4 \ uftdi.4 \ ugen.4 \ ugold.4 \ uhci.4 \ uhid.4 \ uhso.4 \ uipaq.4 \ ukbd.4 \ uled.4 \ ulpt.4 \ umass.4 \ umcs.4 \ umct.4 \ umodem.4 \ umoscom.4 \ ums.4 \ unix.4 \ upgt.4 \ uplcom.4 \ ural.4 \ urio.4 \ urndis.4 \ ${_urtw.4} \ usb.4 \ usb_quirk.4 \ usb_template.4 \ usbhid.4 \ usfs.4 \ uslcom.4 \ uvisor.4 \ uvscom.4 \ zyd.4 MLINKS+=otus.4 if_otus.4 MLINKS+=rsu.4 if_rsu.4 MLINKS+=rtwn_usb.4 if_rtwn_usb.4 MLINKS+=rum.4 if_rum.4 MLINKS+=run.4 if_run.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+=urndis.4 if_urndis.4 MLINKS+=${_urtw.4} ${_if_urtw.4} MLINKS+=zyd.4 if_zyd.4 .endif .include diff --git a/share/man/man4/twa.4 b/share/man/man4/twa.4 deleted file mode 100644 index 64e3e37f7da0..000000000000 --- a/share/man/man4/twa.4 +++ /dev/null @@ -1,140 +0,0 @@ -.\" -.\" Copyright (c) 2004 3ware, Inc. -.\" Copyright (c) 2000 BSDi -.\" All rights reserved. -.\" -.\" 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 ``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 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 May 9, 2007 -.Dt TWA 4 -.Os -.Sh NAME -.Nm twa -.Nd 3ware 9000/9500/9550/9650 series SATA RAID controllers driver -.Sh DEPRECATION NOTICE -The -.Nm -driver is not present in -.Fx 13.0 . -.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 twa" -.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 -twa_load="YES" -.Ed -.Sh DESCRIPTION -The -.Nm -driver provides support for AMCC's 3ware 9000/9500/9550/9650 series -SATA controllers. -.Pp -These controllers are available in 4, 8, 12 or 16-port configurations, -and support the following RAID levels: 0, 1, 10, 5, 50. -The device nodes for the controllers are of the form -.Pa /dev/twa Ns Ar X , -where -.Ar X -is the controller number. -The driver is implemented as a SCSI SIM -under CAM, and, as such, the logical units that it controls are accessible -via the device nodes, -.Pa /dev/da Ns Ar Y , -where -.Ar Y -is the logical unit number. -.Sh HARDWARE -The -.Nm -driver supports the following SATA RAID controllers: -.Pp -.Bl -bullet -compact -.It -AMCC's 3ware 9500S-4LP -.It -AMCC's 3ware 9500S-8 -.It -AMCC's 3ware 9500S-8MI -.It -AMCC's 3ware 9500S-12 -.It -AMCC's 3ware 9500S-12MI -.It -AMCC's 3ware 9500SX-4LP -.It -AMCC's 3ware 9500SX-8LP -.It -AMCC's 3ware 9500SX-12 -.It -AMCC's 3ware 9500SX-12MI -.It -AMCC's 3ware 9500SX-16ML -.It -AMCC's 3ware 9550SX-4LP -.It -AMCC's 3ware 9550SX-8LP -.It -AMCC's 3ware 9550SX-12 -.It -AMCC's 3ware 9550SX-12MI -.It -AMCC's 3ware 9550SX-16ML -.It -AMCC's 3ware 9650SE-2LP -.It -AMCC's 3ware 9650SE-4LPML -.It -AMCC's 3ware 9650SE-8LPML -.It -AMCC's 3ware 9650SE-12ML -.It -AMCC's 3ware 9650SE-16ML -.It -AMCC's 3ware 9650SE-24M8 -.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 TWA_DEBUG -defined, it prints out a whole bunch of debug -messages, the quantity of which varies depending on the value assigned to -.Dv TWA_DEBUG -(0 to 10). -.Sh AUTHORS -The -.Nm -driver and manpage were written by -.An Vinod Kashyap Aq Mt vkashyap@FreeBSD.org . diff --git a/sys/amd64/conf/GENERIC b/sys/amd64/conf/GENERIC index f0bc090e376e..60d2d0376aac 100644 --- a/sys/amd64/conf/GENERIC +++ b/sys/amd64/conf/GENERIC @@ -1,405 +1,404 @@ # # 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: # # https://docs.freebsd.org/en/books/handbook/kernelconfig/#kernelconfig-config # # 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 (https://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 makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support options SCHED_ULE # ULE scheduler options NUMA # Non-Uniform Memory Architecture support options PREEMPTION # Enable kernel thread preemption options VIMAGE # Subsystem virtualization, e.g. VNET options INET # InterNETworking options INET6 # IPv6 communications protocols options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 options ROUTE_MPATH # Multipath routing support options FIB_ALGO # Modular fib lookups options TCP_OFFLOAD # TCP offload options TCP_BLACKBOX # Enhanced TCP event logging options TCP_HHOOK # hhook(9) framework for TCP options TCP_RFC7413 # TCP Fast Open options SCTP_SUPPORT # Allow kldload of SCTP options KERN_TLS # TLS transmit & receive offload 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 QUOTA # Enable disk quotas for UFS options MD_ROOT # MD is a potential root device options NFSCL # Network Filesystem Client options NFSD # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCL options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options TMPFS # Efficient memory filesystem options GEOM_RAID # Soft RAID functionality. options GEOM_LABEL # Provides labelization options EFIRT # EFI Runtime Services support 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 COMPAT_FREEBSD9 # Compatible with FreeBSD9 options COMPAT_FREEBSD10 # Compatible with FreeBSD10 options COMPAT_FREEBSD11 # Compatible with FreeBSD11 options COMPAT_FREEBSD12 # Compatible with FreeBSD12 options COMPAT_FREEBSD13 # Compatible with FreeBSD13 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 _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 CAPABILITY_MODE # Capsicum capability mode options CAPABILITIES # Capsicum capabilities options MAC # TrustedBSD MAC Framework options KDTRACE_FRAME # Ensure frames are compiled in options KDTRACE_HOOKS # Kernel DTrace hooks options DDB_CTF # Kernel ELF linker loads CTF data options INCLUDE_CONFIG_FILE # Include this file in kernel options RACCT # Resource accounting framework options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default options RCTL # Resource limits # Debugging support. Always need this: options KDB # Enable kernel debugger support. options KDB_TRACE # Print a stack trace for a panic. # For full debugger support use (turn off in stable branch): options BUF_TRACKING # Track buffer history options DDB # Support DDB. options FULL_BUF_TRACKING # Track more buffer history options GDB # Support remote GDB. options DEADLKRES # Enable the deadlock resolver options INVARIANTS # Enable calls of extra sanity checking options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS options QUEUE_MACRO_DEBUG_TRASH # Trash queue(2) internal pointers on invalidation options WITNESS # Enable checks to detect deadlocks and cycles options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones options VERBOSE_SYSINIT=0 # Support debug.verbose_sysinit, off by default # Kernel Sanitizers #options COVERAGE # Generic kernel coverage. Used by KCOV #options KCOV # Kernel Coverage Sanitizer # Warning: KUBSAN can result in a kernel too large for loader to load #options KUBSAN # Kernel Undefined Behavior Sanitizer #options KCSAN # Kernel Concurrency Sanitizer # Kernel dump features. options EKCD # Support for encrypted kernel dumps options GZIO # gzip-compressed kernel and user dumps options ZSTDIO # zstd-compressed kernel and user dumps options DEBUGNET # debugnet networking options NETDUMP # netdump(4) client support options NETGDB # netgdb(4) client support # Make an SMP-capable kernel by default options SMP # Symmetric MultiProcessor Kernel options EARLY_AP_STARTUP # CPU frequency control device cpufreq # Bus support. device acpi device smbios options IOMMU device pci options PCI_HP # PCI-Express native HotPlug options PCI_IOV # PCI SR-IOV support options COMPAT_LINUXKPI # Enable support for the kernel PLL to use an external PPS signal, # under supervision of [x]ntpd(8) # More info in ntpd documentation: http://www.eecis.udel.edu/~ntp options PPS_SYNC # Floppy drives device fdc # ATA controllers device ahci # AHCI-compatible SATA controllers device ata # Legacy ATA/SATA controllers device mvs # Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA device siis # SiliconImage SiI3124/SiI3132/SiI3531 SATA # SCSI Controllers device ahc # AHA2940 and onboard AIC7xxx devices device ahd # AHA39320/29320 and onboard AIC79xx devices 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 mpr # LSI-Logic MPT-Fusion 3 device sym # NCR/Symbios Logic device isci # Intel C600 SAS controller device ocs_fc # Emulex FC adapters device pvscsi # VMware PVSCSI # ATA/SCSI peripherals device scbus # SCSI bus (required for ATA/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 ATA/SCSI access) device ses # Enclosure Services (SES and SAF-TE) #device ctl # CAM Target Layer # RAID controllers interfaced to the SCSI subsystem device arcmsr # Areca SATA II RAID device ciss # Compaq Smart RAID 5* device ips # IBM (Adaptec) ServeRAID -device twa # 3ware 9000 series PATA/SATA RAID device smartpqi # Microsemi smartpqi driver 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 aacraid # Adaptec by PMC RAID device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device mrsas # LSI/Avago MegaRAID SAS/SATA, 6Gb/s and 12Gb/s device pmspcv # PMC-Sierra SAS/SATA Controller driver #XXX pointer/int warnings #device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID # NVM Express (NVMe) support device nvme # base NVMe driver device nvd # expose NVMe namespaces as disks, depends on nvme # Intel Volume Management Device (VMD) support device vmd # 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 options VESA # Add support for VESA BIOS Extensions (VBE) device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc options SC_PIXEL_MODE # add support for the raster text mode # vt is the new video console driver device vt device vt_vga device vt_efifb device vt_vbefb device agp # support several AGP chipsets # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge 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 ppi # Parallel port interface device #device vpo # Requires scbus and da device puc # Multi I/O cards and multi-channel UARTs # PCI/PCI-X/PCIe Ethernet NICs that use iflib infrastructure device iflib device em # Intel PRO/1000 Gigabit Ethernet Family device igc # Intel I225 2.5G Ethernet device ix # Intel PRO/10GbE PCIE PF Ethernet device ixv # Intel PRO/10GbE PCIE VF Ethernet device ixl # Intel 700 Series Physical Function device iavf # Intel Adaptive Virtual Function device ice # Intel 800 Series Physical Function device vmx # VMware VMXNET3 Ethernet device axp # AMD EPYC integrated NIC (requires miibus) # PCI Ethernet NICs. device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet # Nvidia/Mellanox Connect-X 4 and later, Ethernet only # mlx5ib requires ibcore infra and is not included by default device mlx5 # Base driver device mlxfw # Firmware update device mlx5en # Ethernet driver # 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 cas # Sun Cassini/Cassini+ and NS DP83065 Saturn 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 gem # Sun GEM/Sun ERI/Apple GMAC 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 re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 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 vge # VIA VT612x gigabit Ethernet device vr # VIA Rhine, Rhine II device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') # Wireless NIC cards device wlan # 802.11 support options IEEE80211_DEBUG # enable debug msgs 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 ath # Atheros NICs device ath_pci # Atheros pci/cardbus glue device ath_hal # pci/cardbus chip support options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later device ath_rate_sample # SampleRate tx rate control for ath #device bwi # Broadcom BCM430x/BCM431x wireless NICs. #device bwn # Broadcom BCM43xx wireless NICs. device ipw # Intel 2100 wireless NICs. device iwi # Intel 2200BG/2225BG/2915ABG wireless NICs. device iwn # Intel 4965/1000/5000/6000 wireless NICs. device malo # Marvell Libertas wireless NICs. device mwl # Marvell 88W8363 802.11n wireless NICs. device ral # Ralink Technology RT2500 wireless NICs. device wpi # Intel 3945ABG wireless NICs. # Pseudo devices. device crypto # core crypto support device aesni # AES-NI OpenCrypto module device loop # Network loopback device padlock_rng # VIA Padlock RNG device rdrand_rng # Intel Bull Mountain RNG device ether # Ethernet support device vlan # 802.1Q VLAN support device tuntap # Packet tunnel. device md # Memory "disks" device gif # IPv6 and IPv4 tunneling device firmware # firmware assist module device xz # lzma decompression # 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 xhci # XHCI PCI->USB interface (USB 3.0) device usb # USB Bus (required) device ukbd # Keyboard device umass # Disks/Mass storage - Requires scbus and da # Sound support device sound # Generic sound driver (required) device snd_cmi # CMedia CMI8338/CMI8738 device snd_csa # Crystal Semiconductor CS461x/428x device snd_emu10kx # Creative SoundBlaster Live! and Audigy device snd_es137x # Ensoniq AudioPCI ES137x device snd_hda # Intel High Definition Audio device snd_ich # Intel, NVidia and other ICH AC'97 Audio device snd_via8233 # VIA VT8233x Audio # MMC/SD device mmc # MMC/SD bus device mmcsd # MMC/SD memory card device sdhci # Generic PCI SD Host Controller device rtsx # Realtek SD card reader # VirtIO support device virtio # Generic VirtIO bus (required) device virtio_pci # VirtIO PCI device device vtnet # VirtIO Ethernet device device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device # Linux KVM paravirtualization support device kvm_clock # KVM paravirtual clock driver # HyperV drivers and enhancement support device hyperv # HyperV drivers # Xen HVM Guest Optimizations # NOTE: XENHVM depends on xenpci and xentimer. # They must be added or removed together. options XENHVM # Xen HVM kernel infrastructure device xenpci # Xen HVM Hypervisor services driver device xentimer # Xen x86 PV timer device # Netmap provides direct access to TX/RX rings on supported NICs device netmap # netmap(4) support # evdev interface options EVDEV_SUPPORT # evdev support in legacy drivers device evdev # input event device support device uinput # install /dev/uinput cdev # HID support options HID_DEBUG # enable debug msgs device hid # Generic HID support options IICHID_SAMPLING # Workaround missing GPIO INTR support diff --git a/sys/amd64/conf/NOTES b/sys/amd64/conf/NOTES index ce1cf6bb76ce..8cb84d6248c2 100644 --- a/sys/amd64/conf/NOTES +++ b/sys/amd64/conf/NOTES @@ -1,670 +1,663 @@ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # # $FreeBSD$ # # # Enable the kernel DTrace hooks which are required to load the DTrace # kernel modules. # options KDTRACE_HOOKS # DTrace core # NOTE: introduces CDDL-licensed components into the kernel #device dtrace # DTrace modules #device dtrace_profile #device dtrace_sdt #device dtrace_fbt #device dtrace_systrace #device dtrace_prototype #device dtnfscl #device dtmalloc # Alternatively include all the DTrace modules #device dtraceall ##################################################################### # SMP OPTIONS: # # Notes: # # IPI_PREEMPTION instructs the kernel to preempt threads running on other # CPUS if needed. Relies on the PREEMPTION option # Optional: options IPI_PREEMPTION device atpic # Optional legacy pic support device mptable # Optional MPSPEC mptable support # # Watchdog routines. # options MP_WATCHDOG # Debugging options. # options COUNT_XINVLTLB_HITS # Counters for TLB events options COUNT_IPIS # Per-CPU IPI interrupt counters ##################################################################### # CPU OPTIONS # # You must specify at least one CPU (the one you intend to run on); # deleting the specification for CPUs you don't need to use may make # parts of the system run faster. # cpu HAMMER # aka K8, aka Opteron & Athlon64 # # Options for CPU features. # ##################################################################### # NETWORKING OPTIONS # # DEVICE_POLLING adds support for mixed interrupt-polling handling # of network device drivers, which has significant benefits in terms # of robustness to overloads and responsivity, as well as permitting # accurate scheduling of the CPU time between kernel network processing # and other activities. The drawback is a moderate (up to 1/HZ seconds) # potential increase in response times. # It is strongly recommended to use HZ=1000 or 2000 with DEVICE_POLLING # to achieve smoother behaviour. # Additionally, you can enable/disable polling at runtime with help of # the ifconfig(8) utility, and select the CPU fraction reserved to # userland with the sysctl variable kern.polling.user_frac # (default 50, range 0..100). # # Not all device drivers support this mode of operation at the time of # this writing. See polling(4) for more details. options DEVICE_POLLING # BPF_JITTER adds support for BPF just-in-time compiler. options BPF_JITTER # OpenFabrics Enterprise Distribution (Infiniband). options OFED options OFED_DEBUG_INIT # Sockets Direct Protocol options SDP options SDP_DEBUG # IP over Infiniband options IPOIB options IPOIB_DEBUG options IPOIB_CM ##################################################################### # CLOCK OPTIONS # Provide read/write access to the memory in the clock chip. device nvram # Access to rtc cmos via /dev/nvram ##################################################################### # MISCELLANEOUS DEVICES AND OPTIONS device speaker #Play IBM BASIC-style noises out your speaker envvar hint.speaker.0.at="isa" envvar hint.speaker.0.port="0x61" ##################################################################### # HARDWARE BUS CONFIGURATION # # ISA bus # device isa # # Options for `isa': # # AUTO_EOI_1 enables the `automatic EOI' feature for the master 8259A # interrupt controller. This saves about 0.7-1.25 usec for each interrupt. # This option breaks suspend/resume on some portables. # # AUTO_EOI_2 enables the `automatic EOI' feature for the slave 8259A # interrupt controller. This saves about 0.7-1.25 usec for each interrupt. # Automatic EOI is documented not to work for for the slave with the # original i8259A, but it works for some clones and some integrated # versions. # # MAXMEM specifies the amount of RAM on the machine; if this is not # specified, FreeBSD will first read the amount of memory from the CMOS # RAM, so the amount of memory will initially be limited to 64MB or 16MB # depending on the BIOS. If the BIOS reports 64MB, a memory probe will # then attempt to detect the installed amount of RAM. If this probe # fails to detect >64MB RAM you will have to use the MAXMEM option. # The amount is in kilobytes, so for a machine with 128MB of RAM, it would # be 131072 (128 * 1024). # # BROKEN_KEYBOARD_RESET disables the use of the keyboard controller to # reset the CPU for reboot. This is needed on some systems with broken # keyboard controllers. options AUTO_EOI_1 #options AUTO_EOI_2 options MAXMEM=(128*1024) #options BROKEN_KEYBOARD_RESET # # AGP GART support device agp # # AGP debugging. # options AGP_DEBUG ##################################################################### # HARDWARE DEVICE CONFIGURATION # To include support for VGA VESA video modes options VESA # Turn on extra debugging checks and output for VESA support. options VESA_DEBUG device dpms # DPMS suspend & resume via VESA BIOS # x86 real mode BIOS emulator, required by atkbdc/dpms/vesa options X86BIOS # # Optional devices: # # PS/2 mouse device psm envvar hint.psm.0.at="atkbdc" envvar hint.psm.0.irq="12" # Options for psm: options PSM_HOOKRESUME #hook the system resume event, useful #for some laptops options PSM_RESETAFTERSUSPEND #reset the device at the resume event # The keyboard controller; it controls the keyboard and the PS/2 mouse. device atkbdc envvar hint.atkbdc.0.at="isa" envvar hint.atkbdc.0.port="0x060" # The AT keyboard device atkbd envvar hint.atkbd.0.at="atkbdc" envvar hint.atkbd.0.irq="1" # Options for atkbd: options ATKBD_DFLT_KEYMAP # specify the built-in keymap makeoptions ATKBD_DFLT_KEYMAP=fr.dvorak # `flags' for atkbd: # 0x01 Force detection of keyboard, else we always assume a keyboard # 0x02 Don't reset keyboard, useful for some newer ThinkPads # 0x03 Force detection and avoid reset, might help with certain # dockingstations # 0x04 Old-style (XT) keyboard support, useful for older ThinkPads # Video card driver for VGA adapters. device vga envvar hint.vga.0.at="isa" # Options for vga: # Try the following option if the mouse pointer is not drawn correctly # or font does not seem to be loaded properly. May cause flicker on # some systems. options VGA_ALT_SEQACCESS # If you can dispense with some vga driver features, you may want to # use the following options to save some memory. #options VGA_NO_FONT_LOADING # don't save/load font #options VGA_NO_MODE_CHANGE # don't change video modes # Older video cards may require this option for proper operation. options VGA_SLOW_IOACCESS # do byte-wide i/o's to TS and GDC regs # The following option probably won't work with the LCD displays. options VGA_WIDTH90 # support 90 column modes # Debugging. options VGA_DEBUG # vt(4) drivers. device vt_vga # VGA device vt_efifb # EFI framebuffer device vt_vbefb # VBE framebuffer # Linear framebuffer driver for S3 VESA 1.2 cards. Works on top of VESA. device s3pci # 3Dfx Voodoo Graphics, Voodoo II /dev/3dfx CDEV support. This will create # the /dev/3dfx0 device to work with glide implementations. This should get # linked to /dev/3dfx and /dev/voodoo. Note that this is not the same as # the tdfx DRI module from XFree86 and is completely unrelated. # device tdfx # Enable 3Dfx Voodoo support # # ACPI support using the Intel ACPI Component Architecture reference # implementation. # # ACPI_DEBUG enables the use of the debug.acpi.level and debug.acpi.layer # kernel environment variables to select initial debugging levels for the # Intel ACPICA code. (Note that the Intel code must also have USE_DEBUGGER # defined when it is built). device acpi options ACPI_DEBUG # The cpufreq(4) driver provides support for non-ACPI CPU frequency control device cpufreq # # Network interfaces: # # bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet # adapters. # ice: Intel 800 Series Physical Function # Requires the ice_ddp module for full functionality # igc: Intel I225 2.5Gb Ethernet adapter # ipw: Intel PRO/Wireless 2100 IEEE 802.11 adapter # Requires the ipw firmware module # iwi: Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapters # Requires the iwi firmware module # iwn: Intel Wireless WiFi Link 1000/105/135/2000/4965/5000/6000/6050 abgn # 802.11 network adapters # Requires the iwn firmware module # mthca: Mellanox HCA InfiniBand # mlx4ib: Mellanox ConnectX HCA InfiniBand # mlx4en: Mellanox ConnectX HCA Ethernet # nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # sfxge: Solarflare SFC9000 family 10Gb Ethernet adapters # vmx: VMware VMXNET3 Ethernet (BSD open source) # wpi: Intel 3945ABG Wireless LAN controller # Requires the wpi firmware module # axp: AMD EPYC integrated NIC # Requires the miibus module device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE options ED_3C503 options ED_HPP options ED_SIC device igc # Intel I225 2.5G Ethernet device ipw # Intel 2100 wireless NICs. device iwi # Intel 2200BG/2225BG/2915ABG wireless NICs. device iwn # Intel 4965/1000/5000/6000 wireless NICs. device ixl # Intel 700 Series Physical Function device iavf # Intel Adaptive Virtual Function device ice # Intel 800 Series Physical Function device ice_ddp # Intel 800 Series DDP Package device mthca # Mellanox HCA InfiniBand device mlx4 # Shared code module between IB and Ethernet device mlx4ib # Mellanox ConnectX HCA InfiniBand device mlx4en # Mellanox ConnectX HCA Ethernet device nfe # nVidia nForce MCP on-board Ethernet device sfxge # Solarflare SFC9000 10Gb Ethernet device vmx # VMware VMXNET3 Ethernet device wpi # Intel 3945ABG wireless NICs. device axp # AMD EPYC integrated NIC # IEEE 802.11 adapter firmware modules # Intel PRO/Wireless 2100 firmware: # ipwfw: BSS/IBSS/monitor mode firmware # ipwbssfw: BSS mode firmware # ipwibssfw: IBSS mode firmware # ipwmonitorfw: Monitor mode firmware # Intel PRO/Wireless 2200BG/2225BG/2915ABG firmware: # iwifw: BSS/IBSS/monitor mode firmware # iwibssfw: BSS mode firmware # iwiibssfw: IBSS mode firmware # iwimonitorfw: Monitor mode firmware # Intel Wireless WiFi Link 4965/1000/5000/6000 series firmware: # iwnfw: Single module to support all devices # iwn1000fw: Specific module for the 1000 only # iwn105fw: Specific module for the 105 only # iwn135fw: Specific module for the 135 only # iwn2000fw: Specific module for the 2000 only # iwn2030fw: Specific module for the 2030 only # iwn4965fw: Specific module for the 4965 only # iwn5000fw: Specific module for the 5000 only # iwn5150fw: Specific module for the 5150 only # iwn6000fw: Specific module for the 6000 only # iwn6000g2afw: Specific module for the 6000g2a only # iwn6000g2bfw: Specific module for the 6000g2b only # iwn6050fw: Specific module for the 6050 only # wpifw: Intel 3945ABG Wireless LAN Controller firmware device iwifw device iwibssfw device iwiibssfw device iwimonitorfw device ipwfw device ipwbssfw device ipwibssfw device ipwmonitorfw device iwnfw device iwn1000fw device iwn105fw device iwn135fw device iwn2000fw device iwn2030fw device iwn4965fw device iwn5000fw device iwn5150fw device iwn6000fw device iwn6000g2afw device iwn6000g2bfw device iwn6050fw device wpifw # # Non-Transparent Bridge (NTB) drivers # device if_ntb # Virtual NTB network interface device ntb_transport # NTB packet transport driver device ntb # NTB hardware interface device ntb_hw_amd # AMD NTB hardware driver device ntb_hw_intel # Intel NTB hardware driver device ntb_hw_plx # PLX NTB hardware driver # #XXX this stores pointers in a 32bit field that is defined by the hardware #device pst # # Areca 11xx and 12xx series of SATA II RAID controllers. # CAM is required. # device arcmsr # Areca SATA II RAID # # Microsemi smartpqi controllers. # These controllers have a SCSI-like interface, and require the # CAM infrastructure. # device smartpqi -# -# 3ware 9000 series PATA/SATA RAID controller driver and options. -# The driver is implemented as a SIM, and so, needs the CAM infrastructure. -# -options TWA_DEBUG # 0-10; 10 prints the most messages. -device twa # 3ware 9000 series PATA/SATA RAID - # # Adaptec FSA RAID controllers, including integrated DELL controllers, # the Dell PERC 2/QC and the HP NetRAID-4M device aac device aacp # SCSI Passthrough interface (optional, CAM required) # # Highpoint RocketRAID 27xx. device hpt27xx # # Highpoint RocketRAID 182x. device hptmv # # Highpoint DC7280 and R750. device hptnr # # Highpoint RocketRAID. Supports RR172x, RR222x, RR2240, RR232x, RR2340, # RR2210, RR174x, RR2522, RR231x, RR230x. device hptrr # # Highpoint RocketRaid 3xxx series SATA RAID device hptiop # # IBM (now Adaptec) ServeRAID controllers device ips # # Intel integrated Memory Controller (iMC) SMBus controller # Sandybridge-Xeon, Ivybridge-Xeon, Haswell-Xeon, Broadwell-Xeon device imcsmb # # Intel C600 (Patsburg) integrated SAS controller device isci options ISCI_LOGGING # enable debugging in isci HAL # # NVM Express (NVMe) support device nvme # base NVMe driver device nvd # expose NVMe namespaces as disks, depends on nvme # # Intel Volume Management Device (VMD) support device vmd # # PMC-Sierra SAS/SATA controller device pmspcv # # Intel QuickAssist device qat # # SafeNet crypto driver: can be moved to the MI NOTES as soon as # it's tested on a big-endian machine # device safe # SafeNet 1141 options SAFE_DEBUG # enable debugging support: hw.safe.debug options SAFE_RNDTEST # enable rndtest support # # VirtIO support # # The virtio entry provides a generic bus for use by the device drivers. # It must be combined with an interface that communicates with the host. # Multiple such interfaces are defined by the VirtIO specification. FreeBSD # only has support for PCI. Therefore, virtio_pci must be statically # compiled in or loaded as a module for the device drivers to function. # device virtio # Generic VirtIO bus (required) device virtio_pci # VirtIO PCI Interface device vtnet # VirtIO Ethernet device device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device device virtio_random # VirtIO Entropy device device virtio_console # VirtIO Console device # Linux KVM paravirtualization support device kvm_clock # KVM paravirtual clock driver # Microsoft Hyper-V enhancement support device hyperv # HyperV drivers # Xen HVM Guest Optimizations options XENHVM # Xen HVM kernel infrastructure device xenpci # Xen HVM Hypervisor services driver device xentimer # Xen x86 PV timer device ##################################################################### # # Miscellaneous hardware: # # ipmi: Intelligent Platform Management Interface # pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) # smbios: DMI/SMBIOS entry point (requires EFIRT option) # vpd: Vital Product Data kernel interface # asmc: Apple System Management Controller # si: Specialix International SI/XIO or SX intelligent serial card # tpm: Trusted Platform Module # Notes on the Specialix SI/XIO driver: # The host card is memory, not IO mapped. # The Rev 1 host cards use a 64K chunk, on a 32K boundary. # The Rev 2 host cards use a 32K chunk, on a 32K boundary. # The cards can use an IRQ of 11, 12 or 15. device ipmi device pbio envvar hint.pbio.0.at="isa" envvar hint.pbio.0.port="0x360" device smbios device vpd device asmc device tpm device padlock_rng # VIA Padlock RNG device rdrand_rng # Intel Bull Mountain RNG device aesni # AES-NI OpenCrypto module device ossl # OpenSSL OpenCrypto module device ioat # Intel I/OAT DMA engine # # Laptop/Notebook options: # device backlight # # I2C Bus # # # Hardware watchdog timers: # # ichwd: Intel ICH watchdog timer # amdsbwd: AMD SB7xx watchdog timer # viawd: VIA south bridge watchdog timer # wbwd: Winbond watchdog timer # itwd: ITE Super I/O watchdog timer # device ichwd device amdsbwd device viawd device wbwd device itwd # # Temperature sensors: # # coretemp: on-die sensor on Intel Core and newer CPUs # amdtemp: on-die sensor on AMD K8/K10/K11 CPUs # device coretemp device amdtemp # # CPU control pseudo-device. Provides access to MSRs, CPUID info and # microcode update feature. # device cpuctl # # SuperIO driver. # device superio # # System Management Bus (SMB) # options ENABLE_ALART # Control alarm on Intel intpm driver # # AMD System Management Network (SMN) # device amdsmn # # Number of initial kernel page table pages used for early bootstrap. # This number should include enough pages to map the kernel and any # modules or other data loaded with the kernel by the loader. Each # page table page maps 2MB. # options NKPT=31 # EFI Runtime Services support options EFIRT # # HID-over-I2C support # device iichid # HID-over-I2C support options IICHID_DEBUG # Enable HID-over-I2C debug messages options IICHID_SAMPLING # Workaround missing GPIO INTR support ##################################################################### # ABI Emulation #XXX keep these here for now and reactivate when support for emulating #XXX these 32 bit binaries is added. # Enable 32-bit runtime support for FreeBSD/i386 binaries. options COMPAT_FREEBSD32 # Enable (32-bit) a.out binary support options COMPAT_AOUT ##################################################################### # ZFS support # NB: This depends on crypto, cryptodev and ZSTDIO options ZFS ##################################################################### # VM OPTIONS # KSTACK_PAGES is the number of memory pages to assign to the kernel # stack of each thread. options KSTACK_PAGES=5 # Enable detailed accounting by the PV entry allocator. options PV_STATS ##################################################################### # More undocumented options for linting. # Note that documenting these are not considered an affront. options FB_INSTALL_CDEV # install a CDEV entry in /dev options KBDIO_DEBUG=2 options KBD_MAXRETRY=4 options KBD_MAXWAIT=6 options KBD_RESETDELAY=201 options PSM_DEBUG=1 options TIMER_FREQ=((14318182+6)/12) options VM_KMEM_SIZE options VM_KMEM_SIZE_MAX options VM_KMEM_SIZE_SCALE # GCOV (code coverage) support options LINDEBUGFS options GCOV diff --git a/sys/conf/files b/sys/conf/files index 4f084a2733a7..0c54622e2563 100644 --- a/sys/conf/files +++ b/sys/conf/files @@ -1,5174 +1,5162 @@ # $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" bhnd_nvram_map.h optional bhnd \ dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \ compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -h" \ no-obj no-implicit-rule before-depend \ clean "bhnd_nvram_map.h" bhnd_nvram_map_data.h optional bhnd \ dependency "$S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/tools/nvram_map_gen.awk $S/dev/bhnd/nvram/nvram_map" \ compile-with "sh $S/dev/bhnd/tools/nvram_map_gen.sh $S/dev/bhnd/nvram/nvram_map -d" \ no-obj no-implicit-rule before-depend \ clean "bhnd_nvram_map_data.h" fdt_static_dtb.h optional fdt fdt_dtb_static \ compile-with "sh -c 'MACHINE=${MACHINE} $S/tools/fdt/make_dtbh.sh ${FDT_DTS_FILE} ${.CURDIR}'" \ dependency "${FDT_DTS_FILE:T:R}.dtb" \ no-obj no-implicit-rule before-depend \ clean "fdt_static_dtb.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" font.h optional sc_dflt_font \ compile-with "uudecode < ${SRCTOP}/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < ${SRCTOP}/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < ${SRCTOP}/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \ no-obj no-implicit-rule before-depend \ clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8" 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" kbdmuxmap.h optional kbdmux_dflt_keymap \ compile-with "${KEYMAP} -L ${KBDMUX_DFLT_KEYMAP} | ${KEYMAP_FIX} > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "kbdmuxmap.h" teken_state.h optional sc | vt \ dependency "$S/teken/gensequences $S/teken/sequences" \ compile-with "${AWK} -f $S/teken/gensequences $S/teken/sequences > teken_state.h" \ no-obj no-implicit-rule before-depend \ clean "teken_state.h" ukbdmap.h optional ukbd_dflt_keymap \ compile-with "${KEYMAP} -L ${UKBD_DFLT_KEYMAP} | ${KEYMAP_FIX} > ${.TARGET}" \ no-obj no-implicit-rule before-depend \ clean "ukbdmap.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" sdiodevs.h optional mmccam \ dependency "$S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs" \ compile-with "${AWK} -f $S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs -h" \ no-obj no-implicit-rule before-depend \ clean "sdiodevs.h" sdiodevs_data.h optional mmccam \ dependency "$S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs" \ compile-with "${AWK} -f $S/tools/sdiodevs2h.awk $S/dev/sdio/sdiodevs -d" \ no-obj no-implicit-rule before-depend \ clean "sdiodevs_data.h" cam/cam.c optional scbus cam/cam_compat.c optional scbus cam/cam_iosched.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/nvme/nvme_all.c optional scbus cam/nvme/nvme_da.c optional nda | da cam/nvme/nvme_xpt.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/ctl/ctl.c optional ctl cam/ctl/ctl_backend.c optional ctl cam/ctl/ctl_backend_block.c optional ctl cam/ctl/ctl_backend_ramdisk.c optional ctl cam/ctl/ctl_cmd_table.c optional ctl cam/ctl/ctl_frontend.c optional ctl cam/ctl/ctl_frontend_cam_sim.c optional ctl cam/ctl/ctl_frontend_ioctl.c optional ctl cam/ctl/ctl_frontend_iscsi.c optional ctl cfiscsi cam/ctl/ctl_ha.c optional ctl cam/ctl/ctl_scsi_all.c optional ctl cam/ctl/ctl_tpc.c optional ctl cam/ctl/ctl_tpc_local.c optional ctl cam/ctl/ctl_error.c optional ctl cam/ctl/ctl_util.c optional ctl cam/ctl/scsi_ctl.c optional ctl cam/mmc/mmc_xpt.c optional scbus mmccam cam/mmc/mmc_sim.c optional scbus mmccam cam/mmc/mmc_sim_if.m optional scbus mmccam cam/mmc/mmc_da.c optional scbus mmccam da cam/scsi/scsi_da.c optional da cam/scsi/scsi_pass.c optional pass cam/scsi/scsi_pt.c optional pt cam/scsi/scsi_sa.c optional sa cam/scsi/scsi_enc.c optional ses cam/scsi/scsi_enc_ses.c optional ses cam/scsi/scsi_enc_safte.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 cam/scsi/smp_all.c optional scbus # shared between zfs and dtrace cddl/compat/opensolaris/kern/opensolaris.c optional dtrace compile-with "${CDDL_C}" cddl/compat/opensolaris/kern/opensolaris_proc.c optional zfs | dtrace compile-with "${CDDL_C}" contrib/openzfs/module/os/freebsd/spl/spl_misc.c optional zfs | dtrace compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_cmn_err.c optional zfs | dtrace compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_taskq.c optional zfs | dtrace compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_kmem.c optional zfs | dtrace compile-with "${ZFS_C}" #zfs solaris portability layer contrib/openzfs/module/os/freebsd/spl/acl_common.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/callb.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/list.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_acl.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_dtrace.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_kstat.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_policy.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_string.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_sunddi.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_sysevent.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_uio.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_vfs.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_vm.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_zone.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_procfs_list.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/spl/spl_zlib.c optional zfs compile-with "${ZFS_C}" # zfs specific #zfs avl contrib/openzfs/module/avl/avl.c optional zfs compile-with "${ZFS_C}" # zfs lua support contrib/openzfs/module/lua/lapi.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lauxlib.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lbaselib.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lcode.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lcompat.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lcorolib.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lctype.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/ldebug.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/ldo.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lfunc.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lgc.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/llex.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lmem.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lobject.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lopcodes.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lparser.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lstate.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lstring.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lstrlib.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/ltable.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/ltablib.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/ltm.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lvm.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/lua/lzio.c optional zfs compile-with "${ZFS_C}" # zfs nvpair support contrib/openzfs/module/nvpair/fnvpair.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/nvpair/nvpair.c optional zfs compile-with "${ZFS_RPC_C}" contrib/openzfs/module/nvpair/nvpair_alloc_fixed.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/nvpair/nvpair_alloc_spl.c optional zfs compile-with "${ZFS_C}" #zfs platform compatibility code contrib/openzfs/module/os/freebsd/zfs/abd_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/arc_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/crypto_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/dmu_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/hkdf.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/kmod_core.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/spa_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/sysctl_os.c optional zfs compile-with "${ZFS_C} -include $S/modules/zfs/zfs_config.h" contrib/openzfs/module/os/freebsd/zfs/vdev_file.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/vdev_label_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/vdev_geom.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_acl.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_ctldir.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_debug.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_dir.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_file_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_ioctl_compat.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_ioctl_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_racct.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_vfsops.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zfs_znode.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zio_crypt.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/os/freebsd/zfs/zvol_os.c optional zfs compile-with "${ZFS_C}" #zfs unicode support contrib/openzfs/module/unicode/uconv.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/unicode/u8_textprep.c optional zfs compile-with "${ZFS_C}" #zfs checksums / zcommon contrib/openzfs/module/zcommon/cityhash.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfeature_common.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_comutil.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_deleg.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_fletcher.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_fletcher_superscalar.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_fletcher_superscalar4.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_namecheck.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zfs_prop.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zpool_prop.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zcommon/zprop_common.c optional zfs compile-with "${ZFS_C}" # zfs edon-r hash support contrib/openzfs/module/icp/algs/edonr/edonr.c optional zfs compile-with "${ZFS_C}" #zfs core common code contrib/openzfs/module/zfs/abd.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/aggsum.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/arc.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/blkptr.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/bplist.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/bpobj.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/bptree.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/btree.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/bqueue.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dbuf.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dbuf_stats.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dataset_kstats.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/ddt.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/ddt_zap.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_diff.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_object.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_objset.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_recv.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_redact.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_send.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_traverse.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_tx.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dmu_zfetch.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dnode.c optional zfs compile-with "${ZFS_C}" \ warning "kernel contains CDDL licensed ZFS filesystem" contrib/openzfs/module/zfs/dnode_sync.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_bookmark.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_crypt.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_dataset.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_deadlist.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_deleg.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_destroy.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_dir.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_pool.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_prop.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_scan.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_synctask.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/dsl_userhold.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/edonr_zfs.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/fm.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/gzip.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/lzjb.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/lz4.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/metaslab.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/mmp.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/multilist.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/objlist.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/pathname.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/range_tree.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/refcount.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/rrwlock.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/sa.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/sha256.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/skein_zfs.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_boot.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_checkpoint.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_config.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_errlog.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_history.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_log_spacemap.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_misc.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/spa_stats.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/space_map.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/space_reftree.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/txg.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/uberblock.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/unique.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_cache.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_draid.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_draid_rand.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_indirect.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_indirect_births.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_indirect_mapping.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_initialize.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_label.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_mirror.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_missing.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_queue.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_raidz.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_raidz_math.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_raidz_math_scalar.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_rebuild.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_removal.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_root.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/vdev_trim.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zap.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zap_leaf.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zap_micro.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zcp.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zcp_get.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zcp_global.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zcp_iter.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zcp_set.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zcp_synctask.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfeature.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_byteswap.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_fm.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_fuid.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_ioctl.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_log.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_onexit.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_quota.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_ratelimit.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_replay.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_rlock.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_sa.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zfs_vnops.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zstd/zfs_zstd.c optional zfs zstdio compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zil.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zio.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zio_checksum.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zio_compress.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zio_inject.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zle.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zrlock.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zthr.c optional zfs compile-with "${ZFS_C}" contrib/openzfs/module/zfs/zvol.c optional zfs compile-with "${ZFS_C}" # dtrace specific cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c optional dtrace compile-with "${DTRACE_C}" \ warning "kernel contains CDDL licensed DTRACE" cddl/contrib/opensolaris/uts/common/dtrace/dtrace_xoroshiro128_plus.c optional dtrace compile-with "${DTRACE_C}" cddl/dev/dtmalloc/dtmalloc.c optional dtmalloc | dtraceall compile-with "${CDDL_C}" cddl/dev/profile/profile.c optional dtrace_profile | dtraceall compile-with "${CDDL_C}" cddl/dev/sdt/sdt.c optional dtrace_sdt | dtraceall compile-with "${CDDL_C}" cddl/dev/fbt/fbt.c optional dtrace_fbt | dtraceall compile-with "${FBT_C}" cddl/dev/systrace/systrace.c optional dtrace_systrace | dtraceall compile-with "${CDDL_C}" cddl/dev/prototype.c optional dtrace_prototype | dtraceall compile-with "${CDDL_C}" fs/nfsclient/nfs_clkdtrace.c optional dtnfscl nfscl | dtraceall nfscl compile-with "${CDDL_C}" compat/freebsd32/freebsd32_abort2.c optional compat_freebsd32 compat/freebsd32/freebsd32_capability.c optional compat_freebsd32 compat/freebsd32/freebsd32_ioctl.c optional compat_freebsd32 compat/freebsd32/freebsd32_misc.c optional compat_freebsd32 compat/freebsd32/freebsd32_syscalls.c optional compat_freebsd32 compat/freebsd32/freebsd32_sysent.c optional compat_freebsd32 contrib/ck/src/ck_array.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_barrier_centralized.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_barrier_combining.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_barrier_dissemination.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_barrier_mcs.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_barrier_tournament.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_epoch.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_hp.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_hs.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_ht.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/ck/src/ck_rhs.c standard compile-with "${NORMAL_C} -I$S/contrib/ck/include" contrib/dev/acpica/common/ahids.c optional acpi acpi_debug contrib/dev/acpica/common/ahuuids.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbcmds.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbconvert.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbdisply.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbexec.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbhistry.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbinput.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbmethod.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbnames.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbobject.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbstats.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbtest.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbutils.c optional acpi acpi_debug contrib/dev/acpica/components/debugger/dbxface.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmbuffer.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmcstyle.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmdeferred.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmnames.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmopcode.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrc.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrcl.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrcl2.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmresrcs.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmutils.c optional acpi acpi_debug contrib/dev/acpica/components/disassembler/dmwalk.c optional acpi acpi_debug contrib/dev/acpica/components/dispatcher/dsargs.c optional acpi contrib/dev/acpica/components/dispatcher/dscontrol.c optional acpi contrib/dev/acpica/components/dispatcher/dsdebug.c optional acpi contrib/dev/acpica/components/dispatcher/dsfield.c optional acpi contrib/dev/acpica/components/dispatcher/dsinit.c optional acpi contrib/dev/acpica/components/dispatcher/dsmethod.c optional acpi contrib/dev/acpica/components/dispatcher/dsmthdat.c optional acpi contrib/dev/acpica/components/dispatcher/dsobject.c optional acpi contrib/dev/acpica/components/dispatcher/dsopcode.c optional acpi contrib/dev/acpica/components/dispatcher/dspkginit.c optional acpi contrib/dev/acpica/components/dispatcher/dsutils.c optional acpi contrib/dev/acpica/components/dispatcher/dswexec.c optional acpi contrib/dev/acpica/components/dispatcher/dswload.c optional acpi contrib/dev/acpica/components/dispatcher/dswload2.c optional acpi contrib/dev/acpica/components/dispatcher/dswscope.c optional acpi contrib/dev/acpica/components/dispatcher/dswstate.c optional acpi contrib/dev/acpica/components/events/evevent.c optional acpi contrib/dev/acpica/components/events/evglock.c optional acpi contrib/dev/acpica/components/events/evgpe.c optional acpi contrib/dev/acpica/components/events/evgpeblk.c optional acpi contrib/dev/acpica/components/events/evgpeinit.c optional acpi contrib/dev/acpica/components/events/evgpeutil.c optional acpi contrib/dev/acpica/components/events/evhandler.c optional acpi contrib/dev/acpica/components/events/evmisc.c optional acpi contrib/dev/acpica/components/events/evregion.c optional acpi contrib/dev/acpica/components/events/evrgnini.c optional acpi contrib/dev/acpica/components/events/evsci.c optional acpi contrib/dev/acpica/components/events/evxface.c optional acpi contrib/dev/acpica/components/events/evxfevnt.c optional acpi contrib/dev/acpica/components/events/evxfgpe.c optional acpi contrib/dev/acpica/components/events/evxfregn.c optional acpi contrib/dev/acpica/components/executer/exconcat.c optional acpi contrib/dev/acpica/components/executer/exconfig.c optional acpi contrib/dev/acpica/components/executer/exconvrt.c optional acpi contrib/dev/acpica/components/executer/excreate.c optional acpi contrib/dev/acpica/components/executer/exdebug.c optional acpi contrib/dev/acpica/components/executer/exdump.c optional acpi contrib/dev/acpica/components/executer/exfield.c optional acpi contrib/dev/acpica/components/executer/exfldio.c optional acpi contrib/dev/acpica/components/executer/exmisc.c optional acpi contrib/dev/acpica/components/executer/exmutex.c optional acpi contrib/dev/acpica/components/executer/exnames.c optional acpi contrib/dev/acpica/components/executer/exoparg1.c optional acpi contrib/dev/acpica/components/executer/exoparg2.c optional acpi contrib/dev/acpica/components/executer/exoparg3.c optional acpi contrib/dev/acpica/components/executer/exoparg6.c optional acpi contrib/dev/acpica/components/executer/exprep.c optional acpi contrib/dev/acpica/components/executer/exregion.c optional acpi contrib/dev/acpica/components/executer/exresnte.c optional acpi contrib/dev/acpica/components/executer/exresolv.c optional acpi contrib/dev/acpica/components/executer/exresop.c optional acpi contrib/dev/acpica/components/executer/exserial.c optional acpi contrib/dev/acpica/components/executer/exstore.c optional acpi contrib/dev/acpica/components/executer/exstoren.c optional acpi contrib/dev/acpica/components/executer/exstorob.c optional acpi contrib/dev/acpica/components/executer/exsystem.c optional acpi contrib/dev/acpica/components/executer/extrace.c optional acpi contrib/dev/acpica/components/executer/exutils.c optional acpi contrib/dev/acpica/components/hardware/hwacpi.c optional acpi contrib/dev/acpica/components/hardware/hwesleep.c optional acpi contrib/dev/acpica/components/hardware/hwgpe.c optional acpi contrib/dev/acpica/components/hardware/hwpci.c optional acpi contrib/dev/acpica/components/hardware/hwregs.c optional acpi contrib/dev/acpica/components/hardware/hwsleep.c optional acpi contrib/dev/acpica/components/hardware/hwtimer.c optional acpi contrib/dev/acpica/components/hardware/hwvalid.c optional acpi contrib/dev/acpica/components/hardware/hwxface.c optional acpi contrib/dev/acpica/components/hardware/hwxfsleep.c optional acpi contrib/dev/acpica/components/namespace/nsaccess.c optional acpi contrib/dev/acpica/components/namespace/nsalloc.c optional acpi contrib/dev/acpica/components/namespace/nsarguments.c optional acpi contrib/dev/acpica/components/namespace/nsconvert.c optional acpi contrib/dev/acpica/components/namespace/nsdump.c optional acpi contrib/dev/acpica/components/namespace/nseval.c optional acpi contrib/dev/acpica/components/namespace/nsinit.c optional acpi contrib/dev/acpica/components/namespace/nsload.c optional acpi contrib/dev/acpica/components/namespace/nsnames.c optional acpi contrib/dev/acpica/components/namespace/nsobject.c optional acpi contrib/dev/acpica/components/namespace/nsparse.c optional acpi contrib/dev/acpica/components/namespace/nspredef.c optional acpi contrib/dev/acpica/components/namespace/nsprepkg.c optional acpi contrib/dev/acpica/components/namespace/nsrepair.c optional acpi contrib/dev/acpica/components/namespace/nsrepair2.c optional acpi contrib/dev/acpica/components/namespace/nssearch.c optional acpi contrib/dev/acpica/components/namespace/nsutils.c optional acpi contrib/dev/acpica/components/namespace/nswalk.c optional acpi contrib/dev/acpica/components/namespace/nsxfeval.c optional acpi contrib/dev/acpica/components/namespace/nsxfname.c optional acpi contrib/dev/acpica/components/namespace/nsxfobj.c optional acpi contrib/dev/acpica/components/parser/psargs.c optional acpi contrib/dev/acpica/components/parser/psloop.c optional acpi contrib/dev/acpica/components/parser/psobject.c optional acpi contrib/dev/acpica/components/parser/psopcode.c optional acpi contrib/dev/acpica/components/parser/psopinfo.c optional acpi contrib/dev/acpica/components/parser/psparse.c optional acpi contrib/dev/acpica/components/parser/psscope.c optional acpi contrib/dev/acpica/components/parser/pstree.c optional acpi contrib/dev/acpica/components/parser/psutils.c optional acpi contrib/dev/acpica/components/parser/pswalk.c optional acpi contrib/dev/acpica/components/parser/psxface.c optional acpi contrib/dev/acpica/components/resources/rsaddr.c optional acpi contrib/dev/acpica/components/resources/rscalc.c optional acpi contrib/dev/acpica/components/resources/rscreate.c optional acpi contrib/dev/acpica/components/resources/rsdump.c optional acpi acpi_debug contrib/dev/acpica/components/resources/rsdumpinfo.c optional acpi contrib/dev/acpica/components/resources/rsinfo.c optional acpi contrib/dev/acpica/components/resources/rsio.c optional acpi contrib/dev/acpica/components/resources/rsirq.c optional acpi contrib/dev/acpica/components/resources/rslist.c optional acpi contrib/dev/acpica/components/resources/rsmemory.c optional acpi contrib/dev/acpica/components/resources/rsmisc.c optional acpi contrib/dev/acpica/components/resources/rsserial.c optional acpi contrib/dev/acpica/components/resources/rsutils.c optional acpi contrib/dev/acpica/components/resources/rsxface.c optional acpi contrib/dev/acpica/components/tables/tbdata.c optional acpi contrib/dev/acpica/components/tables/tbfadt.c optional acpi contrib/dev/acpica/components/tables/tbfind.c optional acpi contrib/dev/acpica/components/tables/tbinstal.c optional acpi contrib/dev/acpica/components/tables/tbprint.c optional acpi contrib/dev/acpica/components/tables/tbutils.c optional acpi contrib/dev/acpica/components/tables/tbxface.c optional acpi contrib/dev/acpica/components/tables/tbxfload.c optional acpi contrib/dev/acpica/components/tables/tbxfroot.c optional acpi contrib/dev/acpica/components/utilities/utaddress.c optional acpi contrib/dev/acpica/components/utilities/utalloc.c optional acpi contrib/dev/acpica/components/utilities/utascii.c optional acpi contrib/dev/acpica/components/utilities/utbuffer.c optional acpi contrib/dev/acpica/components/utilities/utcache.c optional acpi contrib/dev/acpica/components/utilities/utcopy.c optional acpi contrib/dev/acpica/components/utilities/utdebug.c optional acpi contrib/dev/acpica/components/utilities/utdecode.c optional acpi contrib/dev/acpica/components/utilities/utdelete.c optional acpi contrib/dev/acpica/components/utilities/uterror.c optional acpi contrib/dev/acpica/components/utilities/uteval.c optional acpi contrib/dev/acpica/components/utilities/utexcep.c optional acpi contrib/dev/acpica/components/utilities/utglobal.c optional acpi contrib/dev/acpica/components/utilities/uthex.c optional acpi contrib/dev/acpica/components/utilities/utids.c optional acpi contrib/dev/acpica/components/utilities/utinit.c optional acpi contrib/dev/acpica/components/utilities/utlock.c optional acpi contrib/dev/acpica/components/utilities/utmath.c optional acpi contrib/dev/acpica/components/utilities/utmisc.c optional acpi contrib/dev/acpica/components/utilities/utmutex.c optional acpi contrib/dev/acpica/components/utilities/utnonansi.c optional acpi contrib/dev/acpica/components/utilities/utobject.c optional acpi contrib/dev/acpica/components/utilities/utosi.c optional acpi contrib/dev/acpica/components/utilities/utownerid.c optional acpi contrib/dev/acpica/components/utilities/utpredef.c optional acpi contrib/dev/acpica/components/utilities/utresdecode.c optional acpi acpi_debug contrib/dev/acpica/components/utilities/utresrc.c optional acpi contrib/dev/acpica/components/utilities/utstate.c optional acpi contrib/dev/acpica/components/utilities/utstring.c optional acpi contrib/dev/acpica/components/utilities/utstrsuppt.c optional acpi contrib/dev/acpica/components/utilities/utstrtoul64.c optional acpi contrib/dev/acpica/components/utilities/utuuid.c optional acpi acpi_debug contrib/dev/acpica/components/utilities/utxface.c optional acpi contrib/dev/acpica/components/utilities/utxferror.c optional acpi contrib/dev/acpica/components/utilities/utxfinit.c optional acpi contrib/dev/acpica/os_specific/service_layers/osgendbg.c optional acpi acpi_debug contrib/ipfilter/netinet/fil.c optional ipfilter inet \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_auth.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_fil_freebsd.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_frag.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -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} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_proxy.c optional ipfilter inet \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_state.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_lookup.c optional ipfilter inet \ compile-with "${NORMAL_C} ${NO_WSELF_ASSIGN} -Wno-unused -Wno-error -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_pool.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_htable.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter ${NO_WTAUTOLOGICAL_POINTER_COMPARE}" contrib/ipfilter/netinet/ip_sync.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/mlfk_ipl.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_nat6.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_rules.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_scan.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/ip_dstlist.c optional ipfilter inet \ compile-with "${NORMAL_C} -Wno-unused -I$S/contrib/ipfilter" contrib/ipfilter/netinet/radix_ipf.c optional ipfilter inet \ compile-with "${NORMAL_C} -I$S/contrib/ipfilter" contrib/libfdt/fdt.c optional fdt contrib/libfdt/fdt_ro.c optional fdt contrib/libfdt/fdt_rw.c optional fdt contrib/libfdt/fdt_strerror.c optional fdt contrib/libfdt/fdt_sw.c optional fdt contrib/libfdt/fdt_wip.c optional fdt contrib/libnv/cnvlist.c standard contrib/libnv/dnvlist.c standard contrib/libnv/nvlist.c standard contrib/libnv/bsd_nvpair.c standard 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" # xz dev/xz/xz_mod.c optional xz \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_crc32.c optional xz \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_dec_bcj.c optional xz \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_dec_lzma2.c optional xz \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" contrib/xz-embedded/linux/lib/xz/xz_dec_stream.c optional xz \ compile-with "${NORMAL_C} -I$S/contrib/xz-embedded/freebsd/ -I$S/contrib/xz-embedded/linux/lib/xz/ -I$S/contrib/xz-embedded/linux/include/linux/" # Zstd contrib/zstd/lib/freebsd/zstd_kmalloc.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/common/zstd_common.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/common/fse_decompress.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/common/entropy_common.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/common/error_private.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/common/xxhash.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_compress.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_compress_literals.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_compress_sequences.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_compress_superblock.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/fse_compress.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/hist.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/huf_compress.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_double_fast.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_fast.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_lazy.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_ldm.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/compress/zstd_opt.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/decompress/zstd_ddict.c optional zstdio compile-with ${ZSTD_C} contrib/zstd/lib/decompress/zstd_decompress.c optional zstdio compile-with ${ZSTD_C} # See comment in sys/conf/kern.pre.mk contrib/zstd/lib/decompress/zstd_decompress_block.c optional zstdio \ compile-with "${ZSTD_C} ${ZSTD_DECOMPRESS_BLOCK_FLAGS}" contrib/zstd/lib/decompress/huf_decompress.c optional zstdio compile-with ${ZSTD_C} # Blake 2 contrib/libb2/blake2b-ref.c optional crypto | ipsec | ipsec_support | !random_loadable random_fenestrasx \ compile-with "${NORMAL_C} -I$S/crypto/blake2 -Wno-cast-qual -DSUFFIX=_ref -Wno-unused-function" contrib/libb2/blake2s-ref.c optional crypto | ipsec | ipsec_support \ compile-with "${NORMAL_C} -I$S/crypto/blake2 -Wno-cast-qual -DSUFFIX=_ref -Wno-unused-function" crypto/blake2/blake2-sw.c optional crypto | ipsec | ipsec_support \ compile-with "${NORMAL_C} -I$S/crypto/blake2 -Wno-cast-qual" crypto/camellia/camellia.c optional crypto | ipsec | ipsec_support crypto/camellia/camellia-api.c optional crypto | ipsec | ipsec_support crypto/chacha20/chacha.c standard crypto/chacha20/chacha-sw.c optional crypto | ipsec | ipsec_support crypto/des/des_ecb.c optional netsmb crypto/des/des_setkey.c optional netsmb crypto/openssl/ossl.c optional ossl crypto/openssl/ossl_aes.c optional ossl crypto/openssl/ossl_chacha20.c optional ossl crypto/openssl/ossl_poly1305.c optional ossl crypto/openssl/ossl_sha1.c optional ossl crypto/openssl/ossl_sha256.c optional ossl crypto/openssl/ossl_sha512.c optional ossl crypto/rc4/rc4.c optional netgraph_mppc_encryption crypto/rijndael/rijndael-alg-fst.c optional crypto | ekcd | geom_bde | \ ipsec | ipsec_support | !random_loadable | wlan_ccmp crypto/rijndael/rijndael-api-fst.c optional ekcd | geom_bde | !random_loadable crypto/rijndael/rijndael-api.c optional crypto | ipsec | ipsec_support | \ wlan_ccmp crypto/sha1.c optional carp | crypto | ether | ipsec | \ ipsec_support | netgraph_mppc_encryption | sctp crypto/sha2/sha256c.c optional crypto | ekcd | geom_bde | ipsec | \ ipsec_support | !random_loadable | sctp | zfs crypto/sha2/sha512c.c optional crypto | geom_bde | ipsec | \ ipsec_support | zfs crypto/skein/skein.c optional crypto | zfs crypto/skein/skein_block.c optional crypto | zfs crypto/siphash/siphash.c optional inet | inet6 crypto/siphash/siphash_test.c optional inet | inet6 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/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_pci.c optional aac pci dev/aacraid/aacraid.c optional aacraid dev/aacraid/aacraid_cam.c optional aacraid scbus dev/aacraid/aacraid_debug.c optional aacraid dev/aacraid/aacraid_pci.c optional aacraid pci dev/acpi_support/acpi_wmi.c optional acpi_wmi acpi dev/acpi_support/acpi_asus.c optional acpi_asus acpi dev/acpi_support/acpi_asus_wmi.c optional acpi_asus_wmi 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_apei.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_isab.c optional acpi isa dev/acpica/acpi_lid.c optional acpi dev/acpica/acpi_package.c optional acpi 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_container.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_video.c optional acpi_video acpi dev/acpica/acpi_dock.c optional acpi_dock acpi dev/adlink/adlink.c optional adlink dev/ae/if_ae.c optional ae pci dev/age/if_age.c optional age pci dev/agp/agp.c optional agp pci dev/agp/agp_if.m optional agp pci dev/ahci/ahci.c optional ahci dev/ahci/ahciem.c optional ahci dev/ahci/ahci_pci.c optional ahci pci dev/aic7xxx/ahc_isa.c optional ahc isa dev/aic7xxx/ahc_pci.c optional ahc pci \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" dev/aic7xxx/ahd_pci.c optional ahd pci \ compile-with "${NORMAL_C} ${NO_WCONSTANT_CONVERSION}" 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/aic79xx_reg_print.c optional ahd pci ahd_reg_pretty_print 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/aic7xxx/aic7xxx_reg_print.c optional ahc ahc_reg_pretty_print dev/al_eth/al_eth.c optional al_eth fdt \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" dev/al_eth/al_init_eth_lm.c optional al_eth fdt \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" dev/al_eth/al_init_eth_kr.c optional al_eth fdt \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_iofic.c optional al_iofic \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_serdes_25g.c optional al_serdes \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_serdes_hssp.c optional al_serdes \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_udma_config.c optional al_udma \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_udma_debug.c optional al_udma \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_udma_iofic.c optional al_udma \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_hal_udma_main.c optional al_udma \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/al_serdes.c optional al_serdes \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/eth/al_hal_eth_kr.c optional al_eth \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" contrib/alpine-hal/eth/al_hal_eth_main.c optional al_eth \ no-depend \ compile-with "${CC} -c -o ${.TARGET} ${CFLAGS} -I$S/contrib/alpine-hal -I$S/contrib/alpine-hal/eth ${.IMPSRC}" dev/alc/if_alc.c optional alc pci dev/ale/if_ale.c optional ale pci dev/alpm/alpm.c optional alpm pci dev/altera/avgen/altera_avgen.c optional altera_avgen dev/altera/avgen/altera_avgen_fdt.c optional altera_avgen fdt dev/altera/avgen/altera_avgen_nexus.c optional altera_avgen dev/altera/msgdma/msgdma.c optional altera_msgdma xdma dev/altera/sdcard/altera_sdcard.c optional altera_sdcard dev/altera/sdcard/altera_sdcard_disk.c optional altera_sdcard dev/altera/sdcard/altera_sdcard_io.c optional altera_sdcard dev/altera/sdcard/altera_sdcard_fdt.c optional altera_sdcard fdt dev/altera/sdcard/altera_sdcard_nexus.c optional altera_sdcard dev/altera/softdma/softdma.c optional altera_softdma xdma fdt dev/altera/pio/pio.c optional altera_pio dev/altera/pio/pio_if.m optional altera_pio dev/amdpm/amdpm.c optional amdpm pci | nfpm pci dev/amdsmb/amdsmb.c optional amdsmb 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-sata.c optional ata | atacore dev/ata/ata-isa.c optional ata isa | ataisa dev/ata/ata-pci.c optional ata pci | atapci dev/ata/chipsets/ata-acard.c optional ata pci | ataacard dev/ata/chipsets/ata-acerlabs.c optional ata pci | ataacerlabs 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 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/ath/if_ath_pci.c optional ath_pci pci \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/ath/if_ath_ahb.c optional ath_ahb \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/ath/if_ath.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_alq.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_beacon.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_btcoex.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_btcoex_mci.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_debug.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_descdma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_keycache.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_ioctl.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_led.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_lna_div.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tx.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tx_edma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tx_ht.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_tdma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_sysctl.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_rx.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_rx_edma.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/if_ath_spectral.c optional ath \ 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_eeprom_9287.c \ optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath" dev/ath/ath_hal/ah_regdomain.c optional ath \ compile-with "${NORMAL_C} ${NO_WSHIFT_COUNT_NEGATIVE} ${NO_WSHIFT_COUNT_OVERFLOW} -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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_btcoex.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_radar.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar5416/ar5416_spectral.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 | \ ath_ar9287 \ 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 | \ ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9130 (depends upon ar5416) - also requires AH_SUPPORT_AR9130 # # Since this is an embedded MAC SoC, there's no need to compile it into the # default HAL. dev/ath/ath_hal/ar9001/ar9130_attach.c optional ath_ar9130 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9001/ar9130_phy.c optional ath_ar9130 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9001/ar9130_eeprom.c optional ath_ar9130 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9160 (depends on ar5416) dev/ath/ath_hal/ar9001/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/ar9002/ar9280_attach.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/ar9002/ar9280_olc.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/ar9002/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/ar9002/ar9285_btcoex.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_reset.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_cal.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_phy.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9285_diversity.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9287 (depends on ar5416) dev/ath/ath_hal/ar9002/ar9287_attach.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287_reset.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287_cal.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287_olc.c optional ath_hal | ath_ar9287 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" # ar9300 contrib/dev/ath/ath_hal/ar9300/ar9300_ani.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_attach.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_beacon.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_eeprom.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal ${NO_WCONSTANT_CONVERSION}" contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_gpio.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_interrupts.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_keycache.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_mci.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_misc.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_paprd.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_phy.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_power.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_radar.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_radio.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_recv.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_recv_ds.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_reset.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal ${NO_WSOMETIMES_UNINITIALIZED} -Wno-unused-function" contrib/dev/ath/ath_hal/ar9300/ar9300_stub.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_stub_funcs.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_spectral.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_timer.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_xmit.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/dev/ath/ath_hal" contrib/dev/ath/ath_hal/ar9300/ar9300_xmit_ds.c optional ath_hal | ath_ar9300 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal -I$S/contrib/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_ar9130 | ath_ar9160 | ath_ar9280 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/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/ar9002/ar9285.c optional ath_hal | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" dev/ath/ath_hal/ar9002/ar9287.c optional ath_hal | ath_ar9287 \ 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" # ath DFS modules dev/ath/ath_dfs/null/dfs_null.c optional ath \ compile-with "${NORMAL_C} -I$S/dev/ath" # dev/backlight/backlight_if.m optional backlight | compat_linuxkpi dev/backlight/backlight.c optional backlight | compat_linuxkpi dev/bce/if_bce.c optional bce dev/bfe/if_bfe.c optional bfe dev/bge/if_bge.c optional bge dev/bhnd/bhnd.c optional bhnd dev/bhnd/bhnd_erom.c optional bhnd dev/bhnd/bhnd_erom_if.m optional bhnd dev/bhnd/bhnd_subr.c optional bhnd dev/bhnd/bhnd_bus_if.m optional bhnd dev/bhnd/bhndb/bhnd_bhndb.c optional bhndb bhnd dev/bhnd/bhndb/bhndb.c optional bhndb bhnd dev/bhnd/bhndb/bhndb_bus_if.m optional bhndb bhnd dev/bhnd/bhndb/bhndb_hwdata.c optional bhndb bhnd dev/bhnd/bhndb/bhndb_if.m optional bhndb bhnd dev/bhnd/bhndb/bhndb_pci.c optional bhndb_pci bhndb bhnd pci dev/bhnd/bhndb/bhndb_pci_hwdata.c optional bhndb_pci bhndb bhnd pci dev/bhnd/bhndb/bhndb_pci_sprom.c optional bhndb_pci bhndb bhnd pci dev/bhnd/bhndb/bhndb_subr.c optional bhndb bhnd dev/bhnd/bcma/bcma.c optional bcma bhnd dev/bhnd/bcma/bcma_bhndb.c optional bcma bhnd bhndb dev/bhnd/bcma/bcma_erom.c optional bcma bhnd dev/bhnd/bcma/bcma_subr.c optional bcma bhnd dev/bhnd/cores/chipc/bhnd_chipc_if.m optional bhnd dev/bhnd/cores/chipc/bhnd_sprom_chipc.c optional bhnd dev/bhnd/cores/chipc/bhnd_pmu_chipc.c optional bhnd dev/bhnd/cores/chipc/chipc.c optional bhnd dev/bhnd/cores/chipc/chipc_cfi.c optional bhnd cfi dev/bhnd/cores/chipc/chipc_gpio.c optional bhnd gpio dev/bhnd/cores/chipc/chipc_slicer.c optional bhnd cfi | bhnd spibus dev/bhnd/cores/chipc/chipc_spi.c optional bhnd spibus dev/bhnd/cores/chipc/chipc_subr.c optional bhnd dev/bhnd/cores/chipc/pwrctl/bhnd_pwrctl.c optional bhnd dev/bhnd/cores/chipc/pwrctl/bhnd_pwrctl_if.m optional bhnd dev/bhnd/cores/chipc/pwrctl/bhnd_pwrctl_hostb_if.m optional bhnd dev/bhnd/cores/chipc/pwrctl/bhnd_pwrctl_subr.c optional bhnd dev/bhnd/cores/pci/bhnd_pci.c optional bhnd pci dev/bhnd/cores/pci/bhnd_pci_hostb.c optional bhndb bhnd pci dev/bhnd/cores/pci/bhnd_pcib.c optional bhnd_pcib bhnd pci dev/bhnd/cores/pcie2/bhnd_pcie2.c optional bhnd pci dev/bhnd/cores/pcie2/bhnd_pcie2_hostb.c optional bhndb bhnd pci dev/bhnd/cores/pcie2/bhnd_pcie2b.c optional bhnd_pcie2b bhnd pci dev/bhnd/cores/pmu/bhnd_pmu.c optional bhnd dev/bhnd/cores/pmu/bhnd_pmu_core.c optional bhnd dev/bhnd/cores/pmu/bhnd_pmu_if.m optional bhnd dev/bhnd/cores/pmu/bhnd_pmu_subr.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data_bcm.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data_bcmraw.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data_btxt.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data_sprom.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data_sprom_subr.c optional bhnd dev/bhnd/nvram/bhnd_nvram_data_tlv.c optional bhnd dev/bhnd/nvram/bhnd_nvram_if.m optional bhnd dev/bhnd/nvram/bhnd_nvram_io.c optional bhnd dev/bhnd/nvram/bhnd_nvram_iobuf.c optional bhnd dev/bhnd/nvram/bhnd_nvram_ioptr.c optional bhnd dev/bhnd/nvram/bhnd_nvram_iores.c optional bhnd dev/bhnd/nvram/bhnd_nvram_plist.c optional bhnd dev/bhnd/nvram/bhnd_nvram_store.c optional bhnd dev/bhnd/nvram/bhnd_nvram_store_subr.c optional bhnd dev/bhnd/nvram/bhnd_nvram_subr.c optional bhnd dev/bhnd/nvram/bhnd_nvram_value.c optional bhnd dev/bhnd/nvram/bhnd_nvram_value_fmts.c optional bhnd dev/bhnd/nvram/bhnd_nvram_value_prf.c optional bhnd dev/bhnd/nvram/bhnd_nvram_value_subr.c optional bhnd dev/bhnd/nvram/bhnd_sprom.c optional bhnd dev/bhnd/siba/siba.c optional siba bhnd dev/bhnd/siba/siba_bhndb.c optional siba bhnd bhndb dev/bhnd/siba/siba_erom.c optional siba bhnd dev/bhnd/siba/siba_subr.c optional siba bhnd # dev/bnxt/bnxt_hwrm.c optional bnxt iflib pci dev/bnxt/bnxt_sysctl.c optional bnxt iflib pci dev/bnxt/bnxt_txrx.c optional bnxt iflib pci dev/bnxt/if_bnxt.c optional bnxt iflib 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 bhnd dev/bwn/if_bwn_pci.c optional bwn pci bhnd bhndb bhndb_pci dev/bwn/if_bwn_phy_common.c optional bwn bhnd dev/bwn/if_bwn_phy_g.c optional bwn bhnd dev/bwn/if_bwn_phy_lp.c optional bwn bhnd dev/bwn/if_bwn_phy_n.c optional bwn bhnd dev/bwn/if_bwn_util.c optional bwn bhnd dev/cadence/if_cgem.c optional cgem fdt dev/cardbus/card_if.m standard dev/cardbus/cardbus.c optional cardbus dev/cardbus/cardbus_cis.c optional cardbus dev/cardbus/cardbus_device.c optional cardbus dev/cardbus/power_if.m standard dev/cas/if_cas.c optional cas dev/cfi/cfi_bus_fdt.c optional cfi fdt dev/cfi/cfi_bus_nexus.c optional cfi dev/cfi/cfi_core.c optional cfi dev/cfi/cfi_dev.c optional cfi dev/cfi/cfi_disk.c optional cfid dev/chromebook_platform/chromebook_platform.c optional chromebook_platform dev/ciss/ciss.c optional ciss dev/cpufreq/ichss.c optional cpufreq pci dev/cxgb/cxgb_main.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_clip.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_filter.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_if.m optional cxgbe pci dev/cxgbe/t4_iov.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_mp_ring.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_main.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_netmap.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_sched.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_smt.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/t4_tracer.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/t4_vf.c optional cxgbev 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/cxgbe/common/t4vf_hw.c optional cxgbev pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/crypto/t4_kern_tls.c optional cxgbe pci kern_tls \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/crypto/t4_keyctx.c optional cxgbe pci \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/cudbg/cudbg_common.c optional cxgbe \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/cudbg/cudbg_flash_utils.c optional cxgbe \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/cudbg/cudbg_lib.c optional cxgbe \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/cudbg/cudbg_wtp.c optional cxgbe \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/cudbg/fastlz.c optional cxgbe \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cxgbe/cudbg/fastlz_api.c optional cxgbe \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" t4fw_cfg.c optional cxgbe \ compile-with "${AWK} -f $S/tools/fw_stub.awk t4fw_cfg.fw:t4fw_cfg t4fw_cfg_uwire.fw:t4fw_cfg_uwire t4fw.fw:t4fw -mt4fw_cfg -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "t4fw_cfg.c" t4fw_cfg.fwo optional cxgbe \ dependency "t4fw_cfg.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t4fw_cfg.fwo" t4fw_cfg.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t4fw_cfg.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t4fw_cfg.fw" t4fw_cfg_uwire.fwo optional cxgbe \ dependency "t4fw_cfg_uwire.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t4fw_cfg_uwire.fwo" t4fw_cfg_uwire.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t4fw_cfg_uwire.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t4fw_cfg_uwire.fw" t4fw.fwo optional cxgbe \ dependency "t4fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t4fw.fwo" t4fw.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t4fw-1.26.2.0.bin" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t4fw.fw" t5fw_cfg.c optional cxgbe \ compile-with "${AWK} -f $S/tools/fw_stub.awk t5fw_cfg.fw:t5fw_cfg t5fw_cfg_uwire.fw:t5fw_cfg_uwire t5fw.fw:t5fw -mt5fw_cfg -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "t5fw_cfg.c" t5fw_cfg.fwo optional cxgbe \ dependency "t5fw_cfg.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t5fw_cfg.fwo" t5fw_cfg.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t5fw_cfg.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t5fw_cfg.fw" t5fw_cfg_uwire.fwo optional cxgbe \ dependency "t5fw_cfg_uwire.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t5fw_cfg_uwire.fwo" t5fw_cfg_uwire.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t5fw_cfg_uwire.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t5fw_cfg_uwire.fw" t5fw.fwo optional cxgbe \ dependency "t5fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t5fw.fwo" t5fw.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t5fw-1.26.2.0.bin" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t5fw.fw" t6fw_cfg.c optional cxgbe \ compile-with "${AWK} -f $S/tools/fw_stub.awk t6fw_cfg.fw:t6fw_cfg t6fw_cfg_uwire.fw:t6fw_cfg_uwire t6fw.fw:t6fw -mt6fw_cfg -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "t6fw_cfg.c" t6fw_cfg.fwo optional cxgbe \ dependency "t6fw_cfg.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t6fw_cfg.fwo" t6fw_cfg.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t6fw_cfg.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t6fw_cfg.fw" t6fw_cfg_uwire.fwo optional cxgbe \ dependency "t6fw_cfg_uwire.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t6fw_cfg_uwire.fwo" t6fw_cfg_uwire.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t6fw_cfg_uwire.txt" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t6fw_cfg_uwire.fw" t6fw.fwo optional cxgbe \ dependency "t6fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "t6fw.fwo" t6fw.fw optional cxgbe \ dependency "$S/dev/cxgbe/firmware/t6fw-1.26.2.0.bin" \ compile-with "${CP} ${.ALLSRC} ${.TARGET}" \ no-obj no-implicit-rule \ clean "t6fw.fw" dev/cxgbe/crypto/t4_crypto.c optional ccr \ compile-with "${NORMAL_C} -I$S/dev/cxgbe" dev/cyapa/cyapa.c optional cyapa iicbus 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/dme/if_dme.c optional dme dev/drm2/drm_agpsupport.c optional drm2 dev/drm2/drm_auth.c optional drm2 dev/drm2/drm_bufs.c optional drm2 dev/drm2/drm_buffer.c optional drm2 dev/drm2/drm_context.c optional drm2 dev/drm2/drm_crtc.c optional drm2 dev/drm2/drm_crtc_helper.c optional drm2 dev/drm2/drm_dma.c optional drm2 dev/drm2/drm_dp_helper.c optional drm2 dev/drm2/drm_dp_iic_helper.c optional drm2 dev/drm2/drm_drv.c optional drm2 dev/drm2/drm_edid.c optional drm2 dev/drm2/drm_fb_helper.c optional drm2 dev/drm2/drm_fops.c optional drm2 dev/drm2/drm_gem.c optional drm2 dev/drm2/drm_gem_names.c optional drm2 dev/drm2/drm_global.c optional drm2 dev/drm2/drm_hashtab.c optional drm2 dev/drm2/drm_ioctl.c optional drm2 dev/drm2/drm_irq.c optional drm2 dev/drm2/drm_linux_list_sort.c optional drm2 dev/drm2/drm_lock.c optional drm2 dev/drm2/drm_memory.c optional drm2 dev/drm2/drm_mm.c optional drm2 dev/drm2/drm_modes.c optional drm2 dev/drm2/drm_pci.c optional drm2 dev/drm2/drm_platform.c optional drm2 dev/drm2/drm_scatter.c optional drm2 dev/drm2/drm_stub.c optional drm2 dev/drm2/drm_sysctl.c optional drm2 dev/drm2/drm_vm.c optional drm2 dev/drm2/drm_os_freebsd.c optional drm2 dev/drm2/ttm/ttm_agp_backend.c optional drm2 dev/drm2/ttm/ttm_lock.c optional drm2 dev/drm2/ttm/ttm_object.c optional drm2 dev/drm2/ttm/ttm_tt.c optional drm2 dev/drm2/ttm/ttm_bo_util.c optional drm2 dev/drm2/ttm/ttm_bo.c optional drm2 dev/drm2/ttm/ttm_bo_manager.c optional drm2 dev/drm2/ttm/ttm_execbuf_util.c optional drm2 dev/drm2/ttm/ttm_memory.c optional drm2 dev/drm2/ttm/ttm_page_alloc.c optional drm2 dev/drm2/ttm/ttm_bo_vm.c optional drm2 dev/efidev/efidev.c optional efirt dev/efidev/efirt.c optional efirt dev/efidev/efirtc.c optional efirt dev/e1000/if_em.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/em_txrx.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/igb_txrx.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_80003es2lan.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82540.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82541.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82542.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82543.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82571.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_82575.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_ich8lan.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_i210.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_api.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_base.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_mac.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_manage.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_nvm.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_phy.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_vf.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_mbx.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/e1000/e1000_osdep.c optional em \ compile-with "${NORMAL_C} -I$S/dev/e1000" dev/et/if_et.c optional et dev/ena/ena.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" dev/ena/ena_datapath.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" dev/ena/ena_netmap.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" dev/ena/ena_rss.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" dev/ena/ena_sysctl.c optional ena \ compile-with "${NORMAL_C} -I$S/contrib" contrib/ena-com/ena_com.c optional ena contrib/ena-com/ena_eth_com.c optional ena dev/etherswitch/arswitch/arswitch.c optional arswitch dev/etherswitch/arswitch/arswitch_reg.c optional arswitch dev/etherswitch/arswitch/arswitch_phy.c optional arswitch dev/etherswitch/arswitch/arswitch_8216.c optional arswitch dev/etherswitch/arswitch/arswitch_8226.c optional arswitch dev/etherswitch/arswitch/arswitch_8316.c optional arswitch dev/etherswitch/arswitch/arswitch_8327.c optional arswitch dev/etherswitch/arswitch/arswitch_7240.c optional arswitch dev/etherswitch/arswitch/arswitch_9340.c optional arswitch dev/etherswitch/arswitch/arswitch_vlans.c optional arswitch dev/etherswitch/etherswitch.c optional etherswitch dev/etherswitch/etherswitch_if.m optional etherswitch dev/etherswitch/ip17x/ip17x.c optional ip17x dev/etherswitch/ip17x/ip175c.c optional ip17x dev/etherswitch/ip17x/ip175d.c optional ip17x dev/etherswitch/ip17x/ip17x_phy.c optional ip17x dev/etherswitch/ip17x/ip17x_vlans.c optional ip17x dev/etherswitch/miiproxy.c optional miiproxy dev/etherswitch/rtl8366/rtl8366rb.c optional rtl8366rb dev/etherswitch/e6000sw/e6000sw.c optional e6000sw dev/etherswitch/e6000sw/e6060sw.c optional e6060sw dev/etherswitch/infineon/adm6996fc.c optional adm6996fc dev/etherswitch/micrel/ksz8995ma.c optional ksz8995ma dev/etherswitch/ukswitch/ukswitch.c optional ukswitch dev/evdev/cdev.c optional evdev dev/evdev/evdev.c optional evdev dev/evdev/evdev_mt.c optional evdev dev/evdev/evdev_utils.c optional evdev dev/evdev/uinput.c optional evdev uinput dev/exca/exca.c optional cbb dev/extres/clk/clk.c optional ext_resources clk fdt dev/extres/clk/clkdev_if.m optional ext_resources clk fdt dev/extres/clk/clknode_if.m optional ext_resources clk fdt dev/extres/clk/clk_bus.c optional ext_resources clk fdt dev/extres/clk/clk_div.c optional ext_resources clk fdt dev/extres/clk/clk_fixed.c optional ext_resources clk fdt dev/extres/clk/clk_gate.c optional ext_resources clk fdt dev/extres/clk/clk_link.c optional ext_resources clk fdt dev/extres/clk/clk_mux.c optional ext_resources clk fdt dev/extres/phy/phy.c optional ext_resources phy fdt dev/extres/phy/phydev_if.m optional ext_resources phy fdt dev/extres/phy/phynode_if.m optional ext_resources phy fdt dev/extres/phy/phy_usb.c optional ext_resources phy fdt dev/extres/phy/phynode_usb_if.m optional ext_resources phy fdt dev/extres/hwreset/hwreset.c optional ext_resources hwreset fdt dev/extres/hwreset/hwreset_if.m optional ext_resources hwreset fdt dev/extres/nvmem/nvmem.c optional ext_resources nvmem fdt dev/extres/nvmem/nvmem_if.m optional ext_resources nvmem fdt dev/extres/regulator/regdev_if.m optional ext_resources regulator fdt dev/extres/regulator/regnode_if.m optional ext_resources regulator fdt dev/extres/regulator/regulator.c optional ext_resources regulator fdt dev/extres/regulator/regulator_bus.c optional ext_resources regulator fdt dev/extres/regulator/regulator_fixed.c optional ext_resources regulator fdt dev/extres/syscon/syscon.c optional ext_resources syscon dev/extres/syscon/syscon_generic.c optional ext_resources syscon fdt dev/extres/syscon/syscon_if.m optional ext_resources syscon dev/extres/syscon/syscon_power.c optional ext_resources syscon syscon_power fdt dev/fb/fbd.c optional fbd | vt dev/fb/fb_if.m standard dev/fb/splash.c optional sc splash dev/fdt/fdt_clock.c optional fdt fdt_clock dev/fdt/fdt_clock_if.m optional fdt fdt_clock dev/fdt/fdt_common.c optional fdt dev/fdt/fdt_pinctrl.c optional fdt fdt_pinctrl dev/fdt/fdt_pinctrl_if.m optional fdt fdt_pinctrl dev/fdt/fdt_slicer.c optional fdt cfi | fdt mx25l | fdt n25q | fdt at45d dev/fdt/fdt_static_dtb.S optional fdt fdt_dtb_static \ dependency "${FDT_DTS_FILE:T:R}.dtb" dev/fdt/simplebus.c optional fdt dev/fdt/simple_mfd.c optional syscon fdt dev/filemon/filemon.c optional filemon 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/flash/cqspi.c optional cqspi fdt xdma dev/flash/mx25l.c optional mx25l dev/flash/n25q.c optional n25q fdt dev/flash/qspi_if.m optional cqspi fdt | n25q fdt dev/fxp/if_fxp.c optional fxp dev/fxp/inphy.c optional fxp dev/gem/if_gem.c optional gem dev/gem/if_gem_pci.c optional gem pci dev/goldfish/goldfish_rtc.c optional goldfish_rtc fdt dev/gpio/dwgpio/dwgpio.c optional gpio dwgpio fdt dev/gpio/dwgpio/dwgpio_bus.c optional gpio dwgpio fdt dev/gpio/dwgpio/dwgpio_if.m optional gpio dwgpio fdt dev/gpio/gpiobacklight.c optional gpiobacklight fdt dev/gpio/gpiokeys.c optional gpiokeys fdt dev/gpio/gpiokeys_codes.c optional gpiokeys fdt dev/gpio/gpiobus.c optional gpio \ dependency "gpiobus_if.h" dev/gpio/gpioc.c optional gpio \ dependency "gpio_if.h" dev/gpio/gpioiic.c optional gpioiic dev/gpio/gpioled.c optional gpioled !fdt dev/gpio/gpioled_fdt.c optional gpioled fdt dev/gpio/gpiomdio.c optional gpiomdio mii_bitbang dev/gpio/gpiopower.c optional gpiopower fdt dev/gpio/gpioregulator.c optional gpioregulator fdt ext_resources dev/gpio/gpiospi.c optional gpiospi dev/gpio/gpioths.c optional gpioths dev/gpio/gpio_if.m optional gpio dev/gpio/gpiobus_if.m optional gpio dev/gpio/gpiopps.c optional gpiopps fdt dev/gpio/ofw_gpiobus.c optional fdt gpio dev/hid/hconf.c optional hconf dev/hid/hcons.c optional hcons dev/hid/hgame.c optional hgame dev/hid/hid.c optional hid dev/hid/hid_if.m optional hid dev/hid/hidbus.c optional hidbus dev/hid/hidmap.c optional hidmap dev/hid/hidquirk.c optional hid dev/hid/hidraw.c optional hidraw dev/hid/hkbd.c optional hkbd dev/hid/hms.c optional hms dev/hid/hmt.c optional hmt hconf dev/hid/hpen.c optional hpen dev/hid/hsctrl.c optional hsctrl dev/hid/ps4dshock.c optional ps4dshock dev/hid/xb360gp.c optional xb360gp dev/hifn/hifn7751.c optional hifn dev/hptiop/hptiop.c optional hptiop scbus dev/hwpmc/hwpmc_logging.c optional hwpmc dev/hwpmc/hwpmc_mod.c optional hwpmc dev/hwpmc/hwpmc_soft.c optional hwpmc dev/ichiic/ig4_acpi.c optional ig4 acpi iicbus dev/ichiic/ig4_iic.c optional ig4 iicbus dev/ichiic/ig4_pci.c optional ig4 pci iicbus 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_pci.c optional ida pci dev/iicbus/acpi_iicbus.c optional acpi iicbus dev/iicbus/ad7418.c optional ad7418 dev/iicbus/ads111x.c optional ads111x dev/iicbus/ds1307.c optional ds1307 dev/iicbus/ds13rtc.c optional ds13rtc | ds133x | ds1374 dev/iicbus/ds1672.c optional ds1672 dev/iicbus/ds3231.c optional ds3231 dev/iicbus/htu21.c optional htu21 dev/iicbus/icee.c optional icee dev/iicbus/if_ic.c optional ic dev/iicbus/iic.c optional iic dev/iicbus/iic_recover_bus.c optional iicbus 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/iichid.c optional iichid acpi hid iicbus dev/iicbus/iiconf.c optional iicbus dev/iicbus/iicsmb.c optional iicsmb \ dependency "iicbus_if.h" dev/iicbus/iicoc.c optional iicoc dev/iicbus/iicoc_fdt.c optional iicoc ext_resources fdt dev/iicbus/iicoc_pci.c optional iicoc pci dev/iicbus/isl12xx.c optional isl12xx dev/iicbus/lm75.c optional lm75 dev/iicbus/max44009.c optional max44009 dev/iicbus/mux/pca9547.c optional pca9547 iicmux fdt dev/iicbus/mux/iicmux.c optional iicmux dev/iicbus/mux/iicmux_if.m optional iicmux dev/iicbus/mux/iic_gpiomux.c optional iic_gpiomux fdt dev/iicbus/mux/ltc430x.c optional ltc430x dev/iicbus/mux/pca954x.c optional pca954x dev/iicbus/nxprtc.c optional nxprtc | pcf8563 dev/iicbus/ofw_iicbus.c optional fdt iicbus dev/iicbus/pcf8574.c optional pcf8574 dev/iicbus/pcf8591.c optional pcf8591 dev/iicbus/rtc8583.c optional rtc8583 dev/iicbus/rtc/pcf85063.c optional pcf85063 iicbus fdt dev/iicbus/rtc/rx8803.c optional rx8803 iicbus fdt dev/iicbus/s35390a.c optional s35390a dev/iicbus/sy8106a.c optional sy8106a ext_resources fdt dev/iicbus/syr827.c optional syr827 ext_resources fdt dev/iicbus/gpio/tca6408.c optional tca6408 fdt gpio dev/iicbus/gpio/tca6416.c optional tca6416 fdt dev/iicbus/pmic/fan53555.c optional fan53555 ext_resources fdt dev/igc/if_igc.c optional igc iflib pci dev/igc/igc_api.c optional igc iflib pci dev/igc/igc_base.c optional igc iflib pci dev/igc/igc_i225.c optional igc iflib pci dev/igc/igc_mac.c optional igc iflib pci dev/igc/igc_nvm.c optional igc iflib pci dev/igc/igc_phy.c optional igc iflib pci dev/igc/igc_txrx.c optional igc iflib pci dev/intpm/intpm.c optional intpm pci # XXX Work around clang warning, until maintainer approves fix. dev/ips/ips.c optional ips \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" 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-ctfconvert no-implicit-rule before-depend local \ clean "ipwbssfw.c" ipw_bss.fwo optional ipwbssfw | ipwfw \ dependency "ipw_bss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "ipw_bss.fwo" ipw_bss.fw optional ipwbssfw | ipwfw \ dependency "$S/contrib/dev/ipw/ipw2100-1.3.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "ipwibssfw.c" ipw_ibss.fwo optional ipwibssfw | ipwfw \ dependency "ipw_ibss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "ipw_ibss.fwo" ipw_ibss.fw optional ipwibssfw | ipwfw \ dependency "$S/contrib/dev/ipw/ipw2100-1.3-i.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "ipwmonitorfw.c" ipw_monitor.fwo optional ipwmonitorfw | ipwfw \ dependency "ipw_monitor.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "ipw_monitor.fwo" ipw_monitor.fw optional ipwmonitorfw | ipwfw \ dependency "$S/contrib/dev/ipw/ipw2100-1.3-p.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "ipw_monitor.fw" dev/iscsi/icl.c optional iscsi dev/iscsi/icl_conn_if.m optional cfiscsi | iscsi dev/iscsi/icl_soft.c optional iscsi dev/iscsi/icl_soft_proxy.c optional iscsi dev/iscsi/iscsi.c optional iscsi scbus dev/ismt/ismt.c optional ismt dev/isl/isl.c optional isl iicbus 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_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-ctfconvert no-implicit-rule before-depend local \ clean "iwibssfw.c" iwi_bss.fwo optional iwibssfw | iwifw \ dependency "iwi_bss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwi_bss.fwo" iwi_bss.fw optional iwibssfw | iwifw \ dependency "$S/contrib/dev/iwi/ipw2200-bss.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwiibssfw.c" iwi_ibss.fwo optional iwiibssfw | iwifw \ dependency "iwi_ibss.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwi_ibss.fwo" iwi_ibss.fw optional iwiibssfw | iwifw \ dependency "$S/contrib/dev/iwi/ipw2200-ibss.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwimonitorfw.c" iwi_monitor.fwo optional iwimonitorfw | iwifw \ dependency "iwi_monitor.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwi_monitor.fwo" iwi_monitor.fw optional iwimonitorfw | iwifw \ dependency "$S/contrib/dev/iwi/ipw2200-sniffer.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwi_monitor.fw" dev/iwm/if_iwm.c optional iwm dev/iwm/if_iwm_7000.c optional iwm dev/iwm/if_iwm_8000.c optional iwm dev/iwm/if_iwm_9000.c optional iwm dev/iwm/if_iwm_9260.c optional iwm dev/iwm/if_iwm_binding.c optional iwm dev/iwm/if_iwm_fw.c optional iwm dev/iwm/if_iwm_led.c optional iwm dev/iwm/if_iwm_mac_ctxt.c optional iwm dev/iwm/if_iwm_notif_wait.c optional iwm dev/iwm/if_iwm_pcie_trans.c optional iwm dev/iwm/if_iwm_phy_ctxt.c optional iwm dev/iwm/if_iwm_phy_db.c optional iwm dev/iwm/if_iwm_power.c optional iwm dev/iwm/if_iwm_scan.c optional iwm dev/iwm/if_iwm_sf.c optional iwm dev/iwm/if_iwm_sta.c optional iwm dev/iwm/if_iwm_time_event.c optional iwm dev/iwm/if_iwm_util.c optional iwm iwm3160fw.c optional iwm3160fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm3160.fw:iwm3160fw -miwm3160fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm3160fw.c" iwm3160fw.fwo optional iwm3160fw | iwmfw \ dependency "iwm3160.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm3160fw.fwo" iwm3160.fw optional iwm3160fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-3160-17.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm3160.fw" iwm3168fw.c optional iwm3168fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm3168.fw:iwm3168fw -miwm3168fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm3168fw.c" iwm3168fw.fwo optional iwm3168fw | iwmfw \ dependency "iwm3168.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm3168fw.fwo" iwm3168.fw optional iwm3168fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-3168-22.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm3168.fw" iwm7260fw.c optional iwm7260fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7260.fw:iwm7260fw -miwm7260fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm7260fw.c" iwm7260fw.fwo optional iwm7260fw | iwmfw \ dependency "iwm7260.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm7260fw.fwo" iwm7260.fw optional iwm7260fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-7260-17.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm7260.fw" iwm7265fw.c optional iwm7265fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7265.fw:iwm7265fw -miwm7265fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm7265fw.c" iwm7265fw.fwo optional iwm7265fw | iwmfw \ dependency "iwm7265.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm7265fw.fwo" iwm7265.fw optional iwm7265fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-7265-17.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm7265.fw" iwm7265Dfw.c optional iwm7265Dfw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm7265D.fw:iwm7265Dfw -miwm7265Dfw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm7265Dfw.c" iwm7265Dfw.fwo optional iwm7265Dfw | iwmfw \ dependency "iwm7265D.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm7265Dfw.fwo" iwm7265D.fw optional iwm7265Dfw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-7265D-17.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm7265D.fw" iwm8000Cfw.c optional iwm8000Cfw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm8000C.fw:iwm8000Cfw -miwm8000Cfw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm8000Cfw.c" iwm8000Cfw.fwo optional iwm8000Cfw | iwmfw \ dependency "iwm8000C.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm8000Cfw.fwo" iwm8000C.fw optional iwm8000Cfw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-8000C-16.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm8000C.fw" iwm8265.fw optional iwm8265fw | iwmfw \ dependency "$S/contrib/dev/iwm/iwm-8265-22.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwm8265.fw" iwm8265fw.c optional iwm8265fw | iwmfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwm8265.fw:iwm8265fw -miwm8265fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwm8265fw.c" iwm8265fw.fwo optional iwm8265fw | iwmfw \ dependency "iwm8265.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwm8265fw.fwo" 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn1000fw.c" iwn1000fw.fwo optional iwn1000fw | iwnfw \ dependency "iwn1000.fw" \ compile-with "${NORMAL_FWO}" \ 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 "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn1000.fw" iwn100fw.c optional iwn100fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn100.fw:iwn100fw -miwn100fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwn100fw.c" iwn100fw.fwo optional iwn100fw | iwnfw \ dependency "iwn100.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn100fw.fwo" iwn100.fw optional iwn100fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-100-39.31.5.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn100.fw" iwn105fw.c optional iwn105fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn105.fw:iwn105fw -miwn105fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwn105fw.c" iwn105fw.fwo optional iwn105fw | iwnfw \ dependency "iwn105.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn105fw.fwo" iwn105.fw optional iwn105fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-105-6-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn105.fw" iwn135fw.c optional iwn135fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn135.fw:iwn135fw -miwn135fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwn135fw.c" iwn135fw.fwo optional iwn135fw | iwnfw \ dependency "iwn135.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn135fw.fwo" iwn135.fw optional iwn135fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-135-6-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn135.fw" iwn2000fw.c optional iwn2000fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn2000.fw:iwn2000fw -miwn2000fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwn2000fw.c" iwn2000fw.fwo optional iwn2000fw | iwnfw \ dependency "iwn2000.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn2000fw.fwo" iwn2000.fw optional iwn2000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-2000-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn2000.fw" iwn2030fw.c optional iwn2030fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn2030.fw:iwn2030fw -miwn2030fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwn2030fw.c" iwn2030fw.fwo optional iwn2030fw | iwnfw \ dependency "iwn2030.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn2030fw.fwo" iwn2030.fw optional iwn2030fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwnwifi-2030-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn2030.fw" iwn4965fw.c optional iwn4965fw | iwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk iwn4965.fw:iwn4965fw -miwn4965fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "iwn4965fw.c" iwn4965fw.fwo optional iwn4965fw | iwnfw \ dependency "iwn4965.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn4965fw.fwo" iwn4965.fw optional iwn4965fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-4965-228.61.2.24.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn5000fw.c" iwn5000fw.fwo optional iwn5000fw | iwnfw \ dependency "iwn5000.fw" \ compile-with "${NORMAL_FWO}" \ 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 "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn5150fw.c" iwn5150fw.fwo optional iwn5150fw | iwnfw \ dependency "iwn5150.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn5150fw.fwo" iwn5150.fw optional iwn5150fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-5150-8.24.2.2.fw.uu"\ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn6000fw.c" iwn6000fw.fwo optional iwn6000fw | iwnfw \ dependency "iwn6000.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6000fw.fwo" iwn6000.fw optional iwn6000fw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000-9.221.4.1.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn6000g2afw.c" iwn6000g2afw.fwo optional iwn6000g2afw | iwnfw \ dependency "iwn6000g2a.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6000g2afw.fwo" iwn6000g2a.fw optional iwn6000g2afw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000g2a-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn6000g2bfw.c" iwn6000g2bfw.fwo optional iwn6000g2bfw | iwnfw \ dependency "iwn6000g2b.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "iwn6000g2bfw.fwo" iwn6000g2b.fw optional iwn6000g2bfw | iwnfw \ dependency "$S/contrib/dev/iwn/iwlwifi-6000g2b-18.168.6.1.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "iwn6050fw.c" iwn6050fw.fwo optional iwn6050fw | iwnfw \ dependency "iwn6050.fw" \ compile-with "${NORMAL_FWO}" \ 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 "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "iwn6050.fw" dev/ixgbe/if_ix.c optional ix inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" dev/ixgbe/if_ixv.c optional ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe -DSMP" dev/ixgbe/if_bypass.c optional ix inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/if_fdir.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/if_sriov.c optional ix inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ix_txrx.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_osdep.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_phy.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_api.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_common.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_mbx.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_vf.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_82598.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_82599.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_x540.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_x550.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_dcb.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_dcb_82598.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/ixgbe/ixgbe_dcb_82599.c optional ix inet | ixv inet \ compile-with "${NORMAL_C} -I$S/dev/ixgbe" dev/jedec_dimm/jedec_dimm.c optional jedec_dimm smbus dev/jme/if_jme.c optional jme pci dev/kbd/kbd.c optional atkbd | pckbd | sc | ukbd | vt | hkbd 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/liquidio/base/cn23xx_pf_device.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_console.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_ctrl.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_device.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_droq.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_mem_ops.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_request_manager.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/base/lio_response_manager.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/lio_core.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/lio_ioctl.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/lio_main.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/lio_rss.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/lio_rxtx.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" dev/liquidio/lio_sysctl.c optional lio \ compile-with "${NORMAL_C} \ -I$S/dev/liquidio -I$S/dev/liquidio/base -DSMP" lio.c optional lio \ compile-with "${AWK} -f $S/tools/fw_stub.awk lio_23xx_nic.bin.fw:lio_23xx_nic.bin -mlio_23xx_nic.bin -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "lio.c" lio_23xx_nic.bin.fw.fwo optional lio \ dependency "lio_23xx_nic.bin.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "lio_23xx_nic.bin.fw.fwo" lio_23xx_nic.bin.fw optional lio \ dependency "$S/contrib/dev/liquidio/lio_23xx_nic.bin.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "lio_23xx_nic.bin.fw" dev/malo/if_malo.c optional malo dev/malo/if_malohal.c optional malo dev/malo/if_malo_pci.c optional malo pci dev/md/md.c optional md dev/mdio/mdio_if.m optional miiproxy | mdio dev/mdio/mdio.c optional miiproxy | mdio 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_syspd.c optional mfi dev/mfi/mfi_tbolt.c optional mfi 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/dp83822phy.c optional miibus | dp83822phy dev/mii/dp83867phy.c optional miibus | dp83867phy dev/mii/e1000phy.c optional miibus | e1000phy dev/mii/gentbi.c optional miibus | gentbi dev/mii/icsphy.c optional miibus | icsphy dev/mii/ip1000phy.c optional miibus | ip1000phy dev/mii/jmphy.c optional miibus | jmphy dev/mii/lxtphy.c optional miibus | lxtphy dev/mii/micphy.c optional miibus fdt | micphy fdt dev/mii/mii.c optional miibus | mii dev/mii/mii_bitbang.c optional miibus | mii_bitbang dev/mii/mii_physubr.c optional miibus | mii dev/mii/mii_fdt.c optional miibus fdt | mii fdt dev/mii/miibus_if.m optional miibus | mii 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 dev/mii/smcphy.c optional miibus | smcphy dev/mii/smscphy.c optional miibus | smscphy dev/mii/tdkphy.c optional miibus | tdkphy dev/mii/truephy.c optional miibus | truephy dev/mii/ukphy.c optional miibus | mii dev/mii/ukphy_subr.c optional miibus | mii dev/mii/vscphy.c optional miibus | vscphy dev/mii/xmphy.c optional miibus | xmphy dev/mlxfw/mlxfw_fsm.c optional mlxfw \ compile-with "${MLXFW_C}" dev/mlxfw/mlxfw_mfa2.c optional mlxfw \ compile-with "${MLXFW_C}" dev/mlxfw/mlxfw_mfa2_tlv_multi.c optional mlxfw \ compile-with "${MLXFW_C}" dev/mlx/mlx.c optional mlx dev/mlx/mlx_disk.c optional mlx dev/mlx/mlx_pci.c optional mlx pci dev/mmc/mmc_subr.c optional mmc | mmcsd !mmccam dev/mmc/mmc.c optional mmc !mmccam dev/mmc/mmcbr_if.m standard dev/mmc/mmcbus_if.m standard dev/mmc/mmcsd.c optional mmcsd !mmccam dev/mmc/mmc_fdt_helpers.c optional ext_resources mmc fdt | ext_resources mmccam fdt dev/mmc/mmc_helpers.c optional ext_resources mmc | ext_resources mmccam dev/mmc/mmc_pwrseq.c optional ext_resources mmc fdt | ext_resources mmccam fdt dev/mmc/mmc_pwrseq_if.m optional ext_resources mmc fdt | ext_resources mmccam fdt dev/mmcnull/mmcnull.c optional mmcnull dev/mpr/mpr.c optional mpr dev/mpr/mpr_config.c optional mpr # XXX Work around clang warning, until maintainer approves fix. dev/mpr/mpr_mapping.c optional mpr \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/mpr/mpr_pci.c optional mpr pci dev/mpr/mpr_sas.c optional mpr \ compile-with "${NORMAL_C} ${NO_WUNNEEDED_INTERNAL_DECL}" dev/mpr/mpr_sas_lsi.c optional mpr dev/mpr/mpr_table.c optional mpr dev/mpr/mpr_user.c optional mpr dev/mps/mps.c optional mps dev/mps/mps_config.c optional mps # XXX Work around clang warning, until maintainer approves fix. dev/mps/mps_mapping.c optional mps \ compile-with "${NORMAL_C} ${NO_WSOMETIMES_UNINITIALIZED}" dev/mps/mps_pci.c optional mps pci dev/mps/mps_sas.c optional mps \ compile-with "${NORMAL_C} ${NO_WUNNEEDED_INTERNAL_DECL}" dev/mps/mps_sas_lsi.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/mrsas/mrsas.c optional mrsas dev/mrsas/mrsas_cam.c optional mrsas dev/mrsas/mrsas_ioctl.c optional mrsas dev/mrsas/mrsas_fp.c optional mrsas dev/msk/if_msk.c optional msk 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-ctfconvert no-implicit-rule before-depend local \ clean "mwlfw.c" mw88W8363.fwo optional mwlfw \ dependency "mw88W8363.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "mw88W8363.fwo" mw88W8363.fw optional mwlfw \ dependency "$S/contrib/dev/mwl/mw88W8363.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "mw88W8363.fw" mwlboot.fwo optional mwlfw \ dependency "mwlboot.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "mwlboot.fwo" mwlboot.fw optional mwlfw \ dependency "$S/contrib/dev/mwl/mwlboot.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "mwlboot.fw" dev/mxge/if_mxge.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/netmap/if_ptnet.c optional netmap inet dev/netmap/netmap.c optional netmap dev/netmap/netmap_bdg.c optional netmap dev/netmap/netmap_freebsd.c optional netmap dev/netmap/netmap_generic.c optional netmap dev/netmap/netmap_kloop.c optional netmap dev/netmap/netmap_legacy.c optional netmap dev/netmap/netmap_mbq.c optional netmap dev/netmap/netmap_mem2.c optional netmap dev/netmap/netmap_monitor.c optional netmap dev/netmap/netmap_null.c optional netmap dev/netmap/netmap_offloadings.c optional netmap dev/netmap/netmap_pipe.c optional netmap dev/netmap/netmap_vale.c optional netmap # compile-with "${NORMAL_C} -Wconversion -Wextra" dev/nfsmb/nfsmb.c optional nfsmb pci dev/nge/if_nge.c optional nge dev/nmdm/nmdm.c optional nmdm dev/null/null.c standard dev/nvd/nvd.c optional nvd nvme dev/nvme/nvme.c optional nvme dev/nvme/nvme_ahci.c optional nvme ahci dev/nvme/nvme_ctrlr.c optional nvme dev/nvme/nvme_ctrlr_cmd.c optional nvme dev/nvme/nvme_ns.c optional nvme dev/nvme/nvme_ns_cmd.c optional nvme dev/nvme/nvme_pci.c optional nvme pci dev/nvme/nvme_qpair.c optional nvme dev/nvme/nvme_sim.c optional nvme scbus dev/nvme/nvme_sysctl.c optional nvme dev/nvme/nvme_test.c optional nvme dev/nvme/nvme_util.c optional nvme dev/oce/oce_hw.c optional oce pci dev/oce/oce_if.c optional oce pci dev/oce/oce_mbox.c optional oce pci dev/oce/oce_queue.c optional oce pci dev/oce/oce_sysctl.c optional oce pci dev/oce/oce_util.c optional oce pci dev/ocs_fc/ocs_gendump.c optional ocs_fc pci dev/ocs_fc/ocs_pci.c optional ocs_fc pci dev/ocs_fc/ocs_ioctl.c optional ocs_fc pci dev/ocs_fc/ocs_os.c optional ocs_fc pci dev/ocs_fc/ocs_utils.c optional ocs_fc pci dev/ocs_fc/ocs_hw.c optional ocs_fc pci dev/ocs_fc/ocs_hw_queues.c optional ocs_fc pci dev/ocs_fc/sli4.c optional ocs_fc pci dev/ocs_fc/ocs_sm.c optional ocs_fc pci dev/ocs_fc/ocs_device.c optional ocs_fc pci dev/ocs_fc/ocs_xport.c optional ocs_fc pci dev/ocs_fc/ocs_domain.c optional ocs_fc pci dev/ocs_fc/ocs_sport.c optional ocs_fc pci dev/ocs_fc/ocs_els.c optional ocs_fc pci dev/ocs_fc/ocs_fabric.c optional ocs_fc pci dev/ocs_fc/ocs_io.c optional ocs_fc pci dev/ocs_fc/ocs_node.c optional ocs_fc pci dev/ocs_fc/ocs_scsi.c optional ocs_fc pci dev/ocs_fc/ocs_unsol.c optional ocs_fc pci dev/ocs_fc/ocs_ddump.c optional ocs_fc pci dev/ocs_fc/ocs_mgmt.c optional ocs_fc pci dev/ocs_fc/ocs_cam.c optional ocs_fc pci dev/ofw/ofw_bus_if.m optional fdt dev/ofw/ofw_bus_subr.c optional fdt dev/ofw/ofw_cpu.c optional fdt dev/ofw/ofw_fdt.c optional fdt dev/ofw/ofw_if.m optional fdt dev/ofw/ofw_graph.c optional fdt dev/ofw/ofw_subr.c optional fdt dev/ofw/ofwbus.c optional fdt dev/ofw/openfirm.c optional fdt dev/ofw/openfirmio.c optional fdt dev/ow/ow.c optional ow \ dependency "owll_if.h" \ dependency "own_if.h" dev/ow/owll_if.m optional ow dev/ow/own_if.m optional ow dev/ow/ow_temp.c optional ow_temp dev/ow/owc_gpiobus.c optional owc gpio dev/pbio/pbio.c optional pbio isa 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/pccbb/pccbb.c optional cbb dev/pccbb/pccbb_pci.c optional cbb pci dev/pcf/pcf.c optional pcf 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_iov.c optional pci pci_iov dev/pci/pci_iov_if.m standard dev/pci/pci_iov_schema.c optional pci pci_iov dev/pci/pci_pci.c optional pci dev/pci/pci_subr.c optional pci dev/pci/pci_user.c optional pci dev/pci/pcib_if.m standard dev/pci/pcib_support.c standard dev/pci/vga_pci.c optional pci dev/pms/freebsd/driver/ini/src/agtiapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sadisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/mpi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saframe.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sahw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sainit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saint.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sampicmd.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sampirsp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saphy.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saport.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sasata.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sasmp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sassp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/satimer.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/sautil.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/saioctlcmd.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sallsdk/spc/mpidebug.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dminit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmsmp.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmdisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmport.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmtimer.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/discovery/dm/dmmisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/sminit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smmisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smsat.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smsatcb.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smsathw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/sat/src/smtimer.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdinit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdmisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdesgl.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdport.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdint.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdioctl.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdhw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/ossacmnapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tddmcmnapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdsmcmnapi.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/common/tdtimers.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itdio.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itdcb.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itdinit.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sas/ini/itddisc.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sata/host/sat.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sata/host/ossasat.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/pms/RefTisa/tisa/sassata/sata/host/sathw.c optional pmspcv \ compile-with "${NORMAL_C} -Wunused-variable -Woverflow -Wparentheses -w" dev/ppbus/if_plip.c optional plip 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/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/proto/proto_bus_isa.c optional proto acpi | proto isa dev/proto/proto_bus_pci.c optional proto pci dev/proto/proto_busdma.c optional proto dev/proto/proto_core.c optional proto dev/pst/pst-iop.c optional pst dev/pst/pst-pci.c optional pst pci dev/pst/pst-raid.c optional pst dev/pty/pty.c optional pty dev/puc/puc.c optional puc dev/puc/puc_cfg.c optional puc dev/puc/puc_pci.c optional puc pci dev/pwm/pwmc.c optional pwm | pwmc dev/pwm/pwmbus.c optional pwm | pwmbus dev/pwm/pwmbus_if.m optional pwm | pwmbus dev/pwm/ofw_pwm.c optional pwm fdt | pwmbus fdt dev/pwm/ofw_pwmbus.c optional pwm fdt | pwmbus fdt dev/pwm/pwm_backlight.c optional pwm pwm_backlight ext_resources fdt dev/quicc/quicc_core.c optional quicc dev/ral/rt2560.c optional ral dev/ral/rt2661.c optional ral dev/ral/rt2860.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-ctfconvert no-implicit-rule before-depend local \ clean "rt2561fw.c" rt2561fw.fwo optional rt2561fw | ralfw \ dependency "rt2561.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2561fw.fwo" rt2561.fw optional rt2561fw | ralfw \ dependency "$S/contrib/dev/ral/rt2561.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "rt2561sfw.c" rt2561sfw.fwo optional rt2561sfw | ralfw \ dependency "rt2561s.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2561sfw.fwo" rt2561s.fw optional rt2561sfw | ralfw \ dependency "$S/contrib/dev/ral/rt2561s.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "rt2661fw.c" rt2661fw.fwo optional rt2661fw | ralfw \ dependency "rt2661.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2661fw.fwo" rt2661.fw optional rt2661fw | ralfw \ dependency "$S/contrib/dev/ral/rt2661.fw.uu" \ compile-with "${NORMAL_FW}" \ 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-ctfconvert no-implicit-rule before-depend local \ clean "rt2860fw.c" rt2860fw.fwo optional rt2860fw | ralfw \ dependency "rt2860.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rt2860fw.fwo" rt2860.fw optional rt2860fw | ralfw \ dependency "$S/contrib/dev/ral/rt2860.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rt2860.fw" dev/random/random_infra.c standard dev/random/random_harvestq.c standard dev/random/randomdev.c optional !random_loadable dev/random/fenestrasX/fx_brng.c optional !random_loadable random_fenestrasx dev/random/fenestrasX/fx_main.c optional !random_loadable random_fenestrasx \ compile-with "${NORMAL_C} -I$S/crypto/blake2" dev/random/fenestrasX/fx_pool.c optional !random_loadable random_fenestrasx \ compile-with "${NORMAL_C} -I$S/crypto/blake2" dev/random/fenestrasX/fx_rng.c optional !random_loadable random_fenestrasx \ compile-with "${NORMAL_C} -I$S/crypto/blake2" dev/random/fortuna.c optional !random_loadable !random_fenestrasx dev/random/hash.c optional !random_loadable dev/rccgpio/rccgpio.c optional rccgpio gpio dev/re/if_re.c optional re dev/rl/if_rl.c optional rl pci dev/rndtest/rndtest.c optional rndtest # dev/rtsx/rtsx.c optional rtsx pci # dev/rtwn/if_rtwn.c optional rtwn dev/rtwn/if_rtwn_beacon.c optional rtwn dev/rtwn/if_rtwn_calib.c optional rtwn dev/rtwn/if_rtwn_cam.c optional rtwn dev/rtwn/if_rtwn_efuse.c optional rtwn dev/rtwn/if_rtwn_fw.c optional rtwn dev/rtwn/if_rtwn_rx.c optional rtwn dev/rtwn/if_rtwn_task.c optional rtwn dev/rtwn/if_rtwn_tx.c optional rtwn # dev/rtwn/pci/rtwn_pci_attach.c optional rtwn_pci pci dev/rtwn/pci/rtwn_pci_reg.c optional rtwn_pci pci dev/rtwn/pci/rtwn_pci_rx.c optional rtwn_pci pci dev/rtwn/pci/rtwn_pci_tx.c optional rtwn_pci pci # dev/rtwn/usb/rtwn_usb_attach.c optional rtwn_usb dev/rtwn/usb/rtwn_usb_ep.c optional rtwn_usb dev/rtwn/usb/rtwn_usb_reg.c optional rtwn_usb dev/rtwn/usb/rtwn_usb_rx.c optional rtwn_usb dev/rtwn/usb/rtwn_usb_tx.c optional rtwn_usb # RTL8188E dev/rtwn/rtl8188e/r88e_beacon.c optional rtwn dev/rtwn/rtl8188e/r88e_calib.c optional rtwn dev/rtwn/rtl8188e/r88e_chan.c optional rtwn dev/rtwn/rtl8188e/r88e_fw.c optional rtwn dev/rtwn/rtl8188e/r88e_init.c optional rtwn dev/rtwn/rtl8188e/r88e_led.c optional rtwn dev/rtwn/rtl8188e/r88e_tx.c optional rtwn dev/rtwn/rtl8188e/r88e_rf.c optional rtwn dev/rtwn/rtl8188e/r88e_rom.c optional rtwn dev/rtwn/rtl8188e/r88e_rx.c optional rtwn dev/rtwn/rtl8188e/pci/r88ee_attach.c optional rtwn_pci pci dev/rtwn/rtl8188e/pci/r88ee_init.c optional rtwn_pci pci dev/rtwn/rtl8188e/pci/r88ee_rx.c optional rtwn_pci pci dev/rtwn/rtl8188e/usb/r88eu_attach.c optional rtwn_usb dev/rtwn/rtl8188e/usb/r88eu_init.c optional rtwn_usb # RTL8192C dev/rtwn/rtl8192c/r92c_attach.c optional rtwn dev/rtwn/rtl8192c/r92c_beacon.c optional rtwn dev/rtwn/rtl8192c/r92c_calib.c optional rtwn dev/rtwn/rtl8192c/r92c_chan.c optional rtwn dev/rtwn/rtl8192c/r92c_fw.c optional rtwn dev/rtwn/rtl8192c/r92c_init.c optional rtwn dev/rtwn/rtl8192c/r92c_llt.c optional rtwn dev/rtwn/rtl8192c/r92c_rf.c optional rtwn dev/rtwn/rtl8192c/r92c_rom.c optional rtwn dev/rtwn/rtl8192c/r92c_rx.c optional rtwn dev/rtwn/rtl8192c/r92c_tx.c optional rtwn dev/rtwn/rtl8192c/pci/r92ce_attach.c optional rtwn_pci pci dev/rtwn/rtl8192c/pci/r92ce_calib.c optional rtwn_pci pci dev/rtwn/rtl8192c/pci/r92ce_fw.c optional rtwn_pci pci dev/rtwn/rtl8192c/pci/r92ce_init.c optional rtwn_pci pci dev/rtwn/rtl8192c/pci/r92ce_led.c optional rtwn_pci pci dev/rtwn/rtl8192c/pci/r92ce_rx.c optional rtwn_pci pci dev/rtwn/rtl8192c/pci/r92ce_tx.c optional rtwn_pci pci dev/rtwn/rtl8192c/usb/r92cu_attach.c optional rtwn_usb dev/rtwn/rtl8192c/usb/r92cu_init.c optional rtwn_usb dev/rtwn/rtl8192c/usb/r92cu_led.c optional rtwn_usb dev/rtwn/rtl8192c/usb/r92cu_rx.c optional rtwn_usb dev/rtwn/rtl8192c/usb/r92cu_tx.c optional rtwn_usb # RTL8192E dev/rtwn/rtl8192e/r92e_chan.c optional rtwn dev/rtwn/rtl8192e/r92e_fw.c optional rtwn dev/rtwn/rtl8192e/r92e_init.c optional rtwn dev/rtwn/rtl8192e/r92e_led.c optional rtwn dev/rtwn/rtl8192e/r92e_rf.c optional rtwn dev/rtwn/rtl8192e/r92e_rom.c optional rtwn dev/rtwn/rtl8192e/r92e_rx.c optional rtwn dev/rtwn/rtl8192e/usb/r92eu_attach.c optional rtwn_usb dev/rtwn/rtl8192e/usb/r92eu_init.c optional rtwn_usb # RTL8812A dev/rtwn/rtl8812a/r12a_beacon.c optional rtwn dev/rtwn/rtl8812a/r12a_calib.c optional rtwn dev/rtwn/rtl8812a/r12a_caps.c optional rtwn dev/rtwn/rtl8812a/r12a_chan.c optional rtwn dev/rtwn/rtl8812a/r12a_fw.c optional rtwn dev/rtwn/rtl8812a/r12a_init.c optional rtwn dev/rtwn/rtl8812a/r12a_led.c optional rtwn dev/rtwn/rtl8812a/r12a_rf.c optional rtwn dev/rtwn/rtl8812a/r12a_rom.c optional rtwn dev/rtwn/rtl8812a/r12a_rx.c optional rtwn dev/rtwn/rtl8812a/r12a_tx.c optional rtwn dev/rtwn/rtl8812a/usb/r12au_attach.c optional rtwn_usb dev/rtwn/rtl8812a/usb/r12au_init.c optional rtwn_usb dev/rtwn/rtl8812a/usb/r12au_rx.c optional rtwn_usb dev/rtwn/rtl8812a/usb/r12au_tx.c optional rtwn_usb # RTL8821A dev/rtwn/rtl8821a/r21a_beacon.c optional rtwn dev/rtwn/rtl8821a/r21a_calib.c optional rtwn dev/rtwn/rtl8821a/r21a_chan.c optional rtwn dev/rtwn/rtl8821a/r21a_fw.c optional rtwn dev/rtwn/rtl8821a/r21a_init.c optional rtwn dev/rtwn/rtl8821a/r21a_led.c optional rtwn dev/rtwn/rtl8821a/r21a_rom.c optional rtwn dev/rtwn/rtl8821a/r21a_rx.c optional rtwn dev/rtwn/rtl8821a/usb/r21au_attach.c optional rtwn_usb dev/rtwn/rtl8821a/usb/r21au_dfs.c optional rtwn_usb dev/rtwn/rtl8821a/usb/r21au_init.c optional rtwn_usb rtwn-rtl8188eefw.c optional rtwn-rtl8188eefw | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8188eefw.fw:rtwn-rtl8188eefw:111 -mrtwn-rtl8188eefw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8188eefw.c" rtwn-rtl8188eefw.fwo optional rtwn-rtl8188eefw | rtwnfw \ dependency "rtwn-rtl8188eefw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8188eefw.fwo" rtwn-rtl8188eefw.fw optional rtwn-rtl8188eefw | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8188eefw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8188eefw.fw" rtwn-rtl8188eufw.c optional rtwn-rtl8188eufw | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8188eufw.fw:rtwn-rtl8188eufw:111 -mrtwn-rtl8188eufw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8188eufw.c" rtwn-rtl8188eufw.fwo optional rtwn-rtl8188eufw | rtwnfw \ dependency "rtwn-rtl8188eufw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8188eufw.fwo" rtwn-rtl8188eufw.fw optional rtwn-rtl8188eufw | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8188eufw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8188eufw.fw" rtwn-rtl8192cfwE.c optional rtwn-rtl8192cfwE | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwE.fw:rtwn-rtl8192cfwE:111 -mrtwn-rtl8192cfwE -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8192cfwE.c" rtwn-rtl8192cfwE.fwo optional rtwn-rtl8192cfwE | rtwnfw \ dependency "rtwn-rtl8192cfwE.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8192cfwE.fwo" rtwn-rtl8192cfwE.fw optional rtwn-rtl8192cfwE | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwE.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8192cfwE.fw" rtwn-rtl8192cfwE_B.c optional rtwn-rtl8192cfwE_B | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwE_B.fw:rtwn-rtl8192cfwE_B:111 -mrtwn-rtl8192cfwE_B -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8192cfwE_B.c" rtwn-rtl8192cfwE_B.fwo optional rtwn-rtl8192cfwE_B | rtwnfw \ dependency "rtwn-rtl8192cfwE_B.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8192cfwE_B.fwo" rtwn-rtl8192cfwE_B.fw optional rtwn-rtl8192cfwE_B | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwE_B.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8192cfwE_B.fw" rtwn-rtl8192cfwT.c optional rtwn-rtl8192cfwT | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwT.fw:rtwn-rtl8192cfwT:111 -mrtwn-rtl8192cfwT -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8192cfwT.c" rtwn-rtl8192cfwT.fwo optional rtwn-rtl8192cfwT | rtwnfw \ dependency "rtwn-rtl8192cfwT.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8192cfwT.fwo" rtwn-rtl8192cfwT.fw optional rtwn-rtl8192cfwT | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwT.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8192cfwT.fw" rtwn-rtl8192cfwU.c optional rtwn-rtl8192cfwU | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192cfwU.fw:rtwn-rtl8192cfwU:111 -mrtwn-rtl8192cfwU -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8192cfwU.c" rtwn-rtl8192cfwU.fwo optional rtwn-rtl8192cfwU | rtwnfw \ dependency "rtwn-rtl8192cfwU.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8192cfwU.fwo" rtwn-rtl8192cfwU.fw optional rtwn-rtl8192cfwU | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8192cfwU.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8192cfwU.fw" rtwn-rtl8192eufw.c optional rtwn-rtl8192eufw | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8192eufw.fw:rtwn-rtl8192eufw:111 -mrtwn-rtl8192eufw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8192eufw.c" rtwn-rtl8192eufw.fwo optional rtwn-rtl8192eufw | rtwnfw \ dependency "rtwn-rtl8192eufw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8192eufw.fwo" rtwn-rtl8192eufw.fw optional rtwn-rtl8192eufw | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8192eufw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8192eufw.fw" rtwn-rtl8812aufw.c optional rtwn-rtl8812aufw | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8812aufw.fw:rtwn-rtl8812aufw:111 -mrtwn-rtl8812aufw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8812aufw.c" rtwn-rtl8812aufw.fwo optional rtwn-rtl8812aufw | rtwnfw \ dependency "rtwn-rtl8812aufw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8812aufw.fwo" rtwn-rtl8812aufw.fw optional rtwn-rtl8812aufw | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8812aufw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8812aufw.fw" rtwn-rtl8821aufw.c optional rtwn-rtl8821aufw | rtwnfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rtwn-rtl8821aufw.fw:rtwn-rtl8821aufw:111 -mrtwn-rtl8821aufw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rtwn-rtl8821aufw.c" rtwn-rtl8821aufw.fwo optional rtwn-rtl8821aufw | rtwnfw \ dependency "rtwn-rtl8821aufw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rtwn-rtl8821aufw.fwo" rtwn-rtl8821aufw.fw optional rtwn-rtl8821aufw | rtwnfw \ dependency "$S/contrib/dev/rtwn/rtwn-rtl8821aufw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rtwn-rtl8821aufw.fw" dev/safe/safe.c optional safe dev/scc/scc_if.m optional scc dev/scc/scc_bfe_quicc.c optional scc quicc dev/scc/scc_core.c optional scc dev/scc/scc_dev_quicc.c optional scc quicc dev/scc/scc_dev_z8530.c optional scc dev/sdhci/sdhci.c optional sdhci dev/sdhci/sdhci_fdt.c optional sdhci fdt dev/sdhci/sdhci_fdt_gpio.c optional sdhci fdt gpio dev/sdhci/sdhci_fsl_fdt.c optional sdhci ext_resources fdt gpio dev/sdhci/sdhci_if.m optional sdhci dev/sdhci/sdhci_acpi.c optional sdhci acpi dev/sdhci/sdhci_pci.c optional sdhci pci dev/sdio/sdio_if.m optional mmccam dev/sdio/sdio_subr.c optional mmccam dev/sdio/sdiob.c optional mmccam dev/sge/if_sge.c optional sge pci dev/siis/siis.c optional siis pci dev/sis/if_sis.c optional sis pci dev/sk/if_sk.c optional sk pci dev/smbios/smbios.c optional smbios 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/smc/if_smc_acpi.c optional smc acpi dev/smc/if_smc_fdt.c optional smc fdt 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 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 dev/sound/pci/emu10kx.c optional snd_emu10kx pci dev/sound/pci/emu10kx-pcm.c optional snd_emu10kx pci dev/sound/pci/emu10kx-midi.c optional snd_emu10kx pci 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 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/hdaa.c optional snd_hda pci dev/sound/pci/hda/hdaa_patches.c optional snd_hda pci dev/sound/pci/hda/hdac.c optional snd_hda pci dev/sound/pci/hda/hdac_if.m optional snd_hda pci dev/sound/pci/hda/hdacc.c optional snd_hda pci dev/sound/pci/hdspe.c optional snd_hdspe pci dev/sound/pci/hdspe-pcm.c optional snd_hdspe 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/ofw_spibus.c optional fdt spibus dev/spibus/spibus.c optional spibus \ dependency "spibus_if.h" dev/spibus/spigen.c optional spigen dev/spibus/spibus_if.m optional spibus dev/ste/if_ste.c optional ste pci dev/stge/if_stge.c optional stge 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/scterm-dumb.c optional sc !SC_NO_TERM_DUMB dev/syscons/scterm-sc.c optional sc !SC_NO_TERM_SC dev/syscons/scterm-teken.c optional sc !SC_NO_TERM_TEKEN dev/syscons/scvidctl.c optional sc dev/syscons/scvtb.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/tcp_log/tcp_log_dev.c optional tcp_blackbox inet | tcp_blackbox inet6 dev/tdfx/tdfx_pci.c optional tdfx pci dev/ti/if_ti.c optional ti pci -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/uart/uart_bus_acpi.c optional uart acpi dev/uart/uart_bus_fdt.c optional uart fdt dev/uart/uart_bus_isa.c optional uart isa 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_cpu_acpi.c optional uart acpi dev/uart/uart_dbg.c optional uart gdb dev/uart/uart_dev_imx.c optional uart uart_imx fdt dev/uart/uart_dev_msm.c optional uart uart_msm fdt dev/uart/uart_dev_mvebu.c optional uart uart_mvebu dev/uart/uart_dev_ns8250.c optional uart uart_ns8250 | uart uart_snps dev/uart/uart_dev_pl011.c optional uart pl011 dev/uart/uart_dev_quicc.c optional uart quicc dev/uart/uart_dev_snps.c optional uart uart_snps fdt dev/uart/uart_dev_z8530.c optional uart uart_z8530 | uart scc dev/uart/uart_if.m optional uart dev/uart/uart_subr.c optional uart dev/uart/uart_tty.c optional uart # # USB controller drivers # dev/usb/controller/musb_otg.c optional musb dev/usb/controller/dwc_otg.c optional dwcotg dev/usb/controller/dwc_otg_fdt.c optional dwcotg fdt dev/usb/controller/dwc_otg_acpi.c optional dwcotg acpi dev/usb/controller/ehci.c optional ehci dev/usb/controller/ehci_msm.c optional ehci_msm fdt dev/usb/controller/ehci_pci.c optional ehci pci dev/usb/controller/ohci.c optional ohci 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/saf1761_otg.c optional saf1761otg dev/usb/controller/saf1761_otg_fdt.c optional saf1761otg fdt dev/usb/controller/uss820dci.c optional uss820dci dev/usb/controller/usb_controller.c optional usb # # USB storage drivers # dev/usb/storage/cfumass.c optional cfumass ctl 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_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_fdt_support.c optional usb fdt 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_hub_acpi.c optional uacpi acpi 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_axge.c optional axge dev/usb/net/if_cdce.c optional cdce dev/usb/net/if_cdceem.c optional cdceem 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_mos.c optional mos dev/usb/net/if_muge.c optional muge dev/usb/net/if_rue.c optional rue dev/usb/net/if_smsc.c optional smsc dev/usb/net/if_udav.c optional udav dev/usb/net/if_ure.c optional ure dev/usb/net/if_usie.c optional usie dev/usb/net/if_urndis.c optional urndis dev/usb/net/ruephy.c optional rue dev/usb/net/usb_ethernet.c optional uether | aue | axe | axge | cdce | \ cdceem | cue | ipheth | kue | mos | \ rue | smsc | udav | ure | urndis | muge dev/usb/net/uhso.c optional uhso # # USB WLAN drivers # dev/usb/wlan/if_rsu.c optional rsu rsu-rtl8712fw.c optional rsu-rtl8712fw | rsufw \ compile-with "${AWK} -f $S/tools/fw_stub.awk rsu-rtl8712fw.fw:rsu-rtl8712fw:120 -mrsu-rtl8712fw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "rsu-rtl8712fw.c" rsu-rtl8712fw.fwo optional rsu-rtl8712fw | rsufw \ dependency "rsu-rtl8712fw.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "rsu-rtl8712fw.fwo" rsu-rtl8712fw.fw optional rsu-rtl8712.fw | rsufw \ dependency "$S/contrib/dev/rsu/rsu-rtl8712fw.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "rsu-rtl8712fw.fw" dev/usb/wlan/if_rum.c optional rum dev/usb/wlan/if_run.c optional run runfw.c optional runfw \ compile-with "${AWK} -f $S/tools/fw_stub.awk run.fw:runfw -mrunfw -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "runfw.c" runfw.fwo optional runfw \ dependency "run.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "runfw.fwo" run.fw optional runfw \ dependency "$S/contrib/dev/run/rt2870.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "run.fw" 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 | usie | \ uslcom | uvisor | uvscom # # USB misc drivers # dev/usb/misc/cp2112.c optional cp2112 dev/usb/misc/udbp.c optional udbp dev/usb/misc/ugold.c optional ugold dev/usb/misc/uled.c optional uled # # 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/uhid_snes.c optional uhid_snes dev/usb/input/ukbd.c optional ukbd dev/usb/input/ums.c optional ums dev/usb/input/usbhid.c optional usbhid dev/usb/input/wmt.c optional wmt dev/usb/input/wsp.c optional wsp # # 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 dev/usb/template/usb_template_phone.c optional usb_template dev/usb/template/usb_template_serialnet.c optional usb_template dev/usb/template/usb_template_midi.c optional usb_template dev/usb/template/usb_template_multi.c optional usb_template dev/usb/template/usb_template_cdceem.c optional usb_template # # USB video drivers # dev/usb/video/udl.c optional udl # # USB END # dev/videomode/videomode.c optional videomode dev/videomode/edid.c optional videomode dev/videomode/pickmode.c optional videomode dev/videomode/vesagtf.c optional videomode dev/veriexec/verified_exec.c optional mac_veriexec dev/vge/if_vge.c optional vge dev/viapm/viapm.c optional viapm pci dev/virtio/virtio.c optional virtio dev/virtio/virtqueue.c optional virtio dev/virtio/virtio_bus_if.m optional virtio dev/virtio/virtio_if.m optional virtio dev/virtio/pci/virtio_pci.c optional virtio_pci dev/virtio/pci/virtio_pci_if.m optional virtio_pci dev/virtio/pci/virtio_pci_legacy.c optional virtio_pci dev/virtio/pci/virtio_pci_modern.c optional virtio_pci dev/virtio/mmio/virtio_mmio.c optional virtio_mmio dev/virtio/mmio/virtio_mmio_acpi.c optional virtio_mmio acpi dev/virtio/mmio/virtio_mmio_fdt.c optional virtio_mmio fdt dev/virtio/mmio/virtio_mmio_if.m optional virtio_mmio dev/virtio/network/if_vtnet.c optional vtnet dev/virtio/block/virtio_blk.c optional virtio_blk dev/virtio/balloon/virtio_balloon.c optional virtio_balloon dev/virtio/scsi/virtio_scsi.c optional virtio_scsi dev/virtio/random/virtio_random.c optional virtio_random dev/virtio/console/virtio_console.c optional virtio_console dev/vkbd/vkbd.c optional vkbd dev/vmgenc/vmgenc_acpi.c optional acpi dev/vmware/vmxnet3/if_vmx.c optional vmx dev/vmware/vmci/vmci.c optional vmci dev/vmware/vmci/vmci_datagram.c optional vmci dev/vmware/vmci/vmci_doorbell.c optional vmci dev/vmware/vmci/vmci_driver.c optional vmci dev/vmware/vmci/vmci_event.c optional vmci dev/vmware/vmci/vmci_hashtable.c optional vmci dev/vmware/vmci/vmci_kernel_if.c optional vmci dev/vmware/vmci/vmci_qpair.c optional vmci dev/vmware/vmci/vmci_queue_pair.c optional vmci dev/vmware/vmci/vmci_resource.c optional vmci dev/vmware/pvscsi/pvscsi.c optional pvscsi dev/vr/if_vr.c optional vr pci dev/vt/colors/vt_termcolors.c optional vt dev/vt/font/vt_font_default.c optional vt dev/vt/font/vt_mouse_cursor.c optional vt dev/vt/hw/efifb/efifb.c optional vt_efifb dev/vt/hw/vbefb/vbefb.c optional vt_vbefb dev/vt/hw/fb/vt_fb.c optional vt dev/vt/hw/vga/vt_vga.c optional vt vt_vga dev/vt/logo/logo_freebsd.c optional vt splash dev/vt/logo/logo_beastie.c optional vt splash dev/vt/vt_buf.c optional vt dev/vt/vt_consolectl.c optional vt dev/vt/vt_core.c optional vt dev/vt/vt_cpulogos.c optional vt splash dev/vt/vt_font.c optional vt dev/vt/vt_sysmouse.c optional vt dev/vte/if_vte.c optional vte pci dev/watchdog/watchdog.c standard dev/wpi/if_wpi.c optional wpi pci wpifw.c optional wpifw \ compile-with "${AWK} -f $S/tools/fw_stub.awk wpi.fw:wpifw:153229 -mwpi -c${.TARGET}" \ no-ctfconvert no-implicit-rule before-depend local \ clean "wpifw.c" wpifw.fwo optional wpifw \ dependency "wpi.fw" \ compile-with "${NORMAL_FWO}" \ no-implicit-rule \ clean "wpifw.fwo" wpi.fw optional wpifw \ dependency "$S/contrib/dev/wpi/iwlwifi-3945-15.32.2.9.fw.uu" \ compile-with "${NORMAL_FW}" \ no-obj no-implicit-rule \ clean "wpi.fw" dev/xdma/controller/pl330.c optional xdma pl330 dev/xdma/xdma.c optional xdma dev/xdma/xdma_bank.c optional xdma dev/xdma/xdma_bio.c optional xdma dev/xdma/xdma_fdt_test.c optional xdma xdma_test fdt dev/xdma/xdma_if.m optional xdma dev/xdma/xdma_iommu.c optional xdma dev/xdma/xdma_mbuf.c optional xdma dev/xdma/xdma_queue.c optional xdma dev/xdma/xdma_sg.c optional xdma dev/xdma/xdma_sglist.c optional xdma dev/xen/balloon/balloon.c optional xenhvm dev/xen/blkfront/blkfront.c optional xenhvm dev/xen/blkback/blkback.c optional xenhvm dev/xen/bus/xenpv.c optional xenhvm dev/xen/console/xen_console.c optional xenhvm dev/xen/control/control.c optional xenhvm dev/xen/efi/pvefi.c optional xenhvm efirt dev/xen/grant_table/grant_table.c optional xenhvm dev/xen/netback/netback.c optional xenhvm dev/xen/netfront/netfront.c optional xenhvm dev/xen/timer/timer.c optional xenhvm xentimer dev/xen/xenpci/xenpci.c optional xenpci dev/xen/xenstore/xenstore.c optional xenhvm dev/xen/xenstore/xenstore_dev.c optional xenhvm dev/xen/xenstore/xenstored_dev.c optional xenhvm dev/xen/evtchn/evtchn_dev.c optional xenhvm dev/xen/privcmd/privcmd.c optional xenhvm dev/xen/gntdev/gntdev.c optional xenhvm dev/xen/debug/debug.c optional xenhvm dev/xl/if_xl.c optional xl pci dev/xl/xlphy.c optional xl pci fs/autofs/autofs.c optional autofs fs/autofs/autofs_vfsops.c optional autofs fs/autofs/autofs_vnops.c optional autofs fs/deadfs/dead_vnops.c standard fs/devfs/devfs_devs.c standard fs/devfs/devfs_dir.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/cuse/cuse.c optional cuse fs/fuse/fuse_device.c optional fusefs fs/fuse/fuse_file.c optional fusefs fs/fuse/fuse_internal.c optional fusefs fs/fuse/fuse_io.c optional fusefs fs/fuse/fuse_ipc.c optional fusefs fs/fuse/fuse_main.c optional fusefs fs/fuse/fuse_node.c optional fusefs fs/fuse/fuse_vfsops.c optional fusefs fs/fuse/fuse_vnops.c optional fusefs fs/mntfs/mntfs_vnops.c standard fs/msdosfs/msdosfs_conv.c optional msdosfs fs/msdosfs/msdosfs_denode.c optional msdosfs fs/msdosfs/msdosfs_fat.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 | nfslockd | nfsd fs/nfs/nfs_commonsubs.c optional nfscl | nfslockd | nfsd fs/nfs/nfs_commonport.c optional nfscl | nfslockd | nfsd fs/nfs/nfs_commonacl.c optional nfscl | nfslockd | 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_fha_new.c optional nfsd inet 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/nullfs/null_subr.c optional nullfs fs/nullfs/null_vfsops.c optional nullfs fs/nullfs/null_vnops.c optional nullfs fs/procfs/procfs.c optional procfs fs/procfs/procfs_dbregs.c optional procfs fs/procfs/procfs_fpregs.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 gdb/netgdb.c optional ddb debugnet gdb netgdb inet 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_hmac.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_key_cache.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_bsd_enc.c optional geom_part_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_flashmap.c optional fdt cfi | fdt mx25l | mmcsd | fdt n25q | fdt at45d geom/geom_io.c standard geom/geom_kern.c standard geom/geom_map.c optional geom_map geom/geom_redboot.c optional geom_redboot geom/geom_slice.c standard geom/geom_subr.c standard geom/geom_vfs.c standard 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_gpt geom/label/g_label_ext2fs.c optional geom_label geom/label/g_label_flashmap.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_label_gpt geom/label/g_label_disk_ident.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/mountver/g_mountver.c optional geom_mountver 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_bsd64.c optional geom_part_bsd64 geom/part/g_part_ebr.c optional geom_part_ebr geom/part/g_part_gpt.c optional geom_part_gpt geom/part/g_part_ldm.c optional geom_part_ldm geom/part/g_part_mbr.c optional geom_part_mbr 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_ddf.c 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/raid/tr_raid5.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/uzip/g_uzip_lzma.c optional geom_uzip geom/uzip/g_uzip_wrkthr.c optional geom_uzip geom/uzip/g_uzip_zlib.c optional geom_uzip geom/uzip/g_uzip_zstd.c optional geom_uzip zstdio \ compile-with "${NORMAL_C} -I$S/contrib/zstd/lib/freebsd" geom/vinum/geom_vinum.c optional geom_vinum geom/vinum/geom_vinum_create.c optional geom_vinum geom/vinum/geom_vinum_drive.c optional geom_vinum geom/vinum/geom_vinum_plex.c optional geom_vinum geom/vinum/geom_vinum_volume.c optional geom_vinum geom/vinum/geom_vinum_subr.c optional geom_vinum geom/vinum/geom_vinum_raid5.c optional geom_vinum geom/vinum/geom_vinum_share.c optional geom_vinum geom/vinum/geom_vinum_list.c optional geom_vinum geom/vinum/geom_vinum_rm.c optional geom_vinum geom/vinum/geom_vinum_init.c optional geom_vinum geom/vinum/geom_vinum_state.c optional geom_vinum geom/vinum/geom_vinum_rename.c optional geom_vinum geom/vinum/geom_vinum_move.c optional geom_vinum geom/vinum/geom_vinum_events.c optional geom_vinum 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 fs/ext2fs/ext2_acl.c optional ext2fs fs/ext2fs/ext2_alloc.c optional ext2fs fs/ext2fs/ext2_balloc.c optional ext2fs fs/ext2fs/ext2_bmap.c optional ext2fs fs/ext2fs/ext2_csum.c optional ext2fs fs/ext2fs/ext2_extattr.c optional ext2fs fs/ext2fs/ext2_extents.c optional ext2fs fs/ext2fs/ext2_inode.c optional ext2fs fs/ext2fs/ext2_inode_cnv.c optional ext2fs fs/ext2fs/ext2_hash.c optional ext2fs fs/ext2fs/ext2_htree.c optional ext2fs fs/ext2fs/ext2_lookup.c optional ext2fs fs/ext2fs/ext2_subr.c optional ext2fs fs/ext2fs/ext2_vfsops.c optional ext2fs fs/ext2fs/ext2_vnops.c optional ext2fs # isa/isa_if.m standard isa/isa_common.c optional isa isa/isahint.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 gnu/gcov/gcc_4_7.c optional gcov \ warning "kernel contains GPL licensed gcov support" gnu/gcov/gcov_fs.c optional gcov lindebugfs \ compile-with "${LINUXKPI_C}" gnu/gcov/gcov_subr.c optional gcov kern/bus_if.m standard kern/clock_if.m standard kern/cpufreq_if.m standard kern/device_if.m standard kern/imgact_binmisc.c optional imagact_binmisc kern/imgact_elf.c standard kern/imgact_elf32.c optional compat_freebsd32 kern/imgact_shell.c standard 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_clocksource.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_dump.c standard kern/kern_environment.c standard kern/kern_et.c standard kern/kern_event.c standard kern/kern_exec.c standard kern/kern_exit.c standard kern/kern_fail.c standard kern/kern_ffclock.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_kcov.c optional kcov \ compile-with "${NORMAL_C:N-fsanitize*} ${NORMAL_C:M-fsanitize=kernel-memory}" 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_loginclass.c standard 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_procctl.c standard kern/kern_prot.c standard kern/kern_racct.c standard kern/kern_rangelock.c standard kern/kern_rctl.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_sendfile.c standard kern/kern_sharedpage.c standard kern/kern_shutdown.c standard kern/kern_sig.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_tslog.c optional tslog kern/kern_ubsan.c optional kubsan 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 optional ufs_acl | zfs kern/subr_acl_posix1e.c optional ufs_acl kern/subr_asan.c optional kasan \ compile-with "${NORMAL_C:N-fsanitize*}" kern/subr_autoconf.c standard kern/subr_blist.c standard kern/subr_boot.c standard kern/subr_bus.c standard kern/subr_bus_dma.c standard kern/subr_bufring.c standard kern/subr_capability.c standard kern/subr_clock.c standard kern/subr_compressor.c standard \ compile-with "${NORMAL_C} -I$S/contrib/zstd/lib/freebsd" kern/subr_coverage.c optional coverage \ compile-with "${NORMAL_C:N-fsanitize*}" kern/subr_counter.c standard kern/subr_csan.c optional kcsan \ compile-with "${NORMAL_C:N-fsanitize*}" kern/subr_devstat.c standard kern/subr_disk.c standard kern/subr_early.c standard kern/subr_epoch.c standard kern/subr_eventhandler.c standard kern/subr_fattime.c standard kern/subr_firmware.c optional firmware kern/subr_filter.c standard kern/subr_gtaskqueue.c standard kern/subr_hash.c standard 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_mchain.c optional libmchain kern/subr_module.c standard kern/subr_msan.c optional kmsan \ compile-with "${NORMAL_C:N-fsanitize*}" kern/subr_msgbuf.c standard kern/subr_param.c standard kern/subr_pcpu.c standard kern/subr_pctrie.c standard kern/subr_pidctrl.c standard kern/subr_power.c standard kern/subr_prf.c standard kern/subr_prng.c standard kern/subr_prof.c standard kern/subr_rangeset.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_smr.c standard kern/subr_stack.c optional ddb | stack | ktr kern/subr_stats.c optional stats kern/subr_taskqueue.c standard kern/subr_terminal.c optional vt kern/subr_trap.c standard kern/subr_turnstile.c standard kern/subr_uio.c standard kern/subr_unit.c standard kern/subr_vmem.c standard kern/subr_witness.c optional witness kern/sys_capability.c standard kern/sys_eventfd.c standard kern/sys_generic.c standard kern/sys_getrandom.c standard kern/sys_pipe.c standard kern/sys_procdesc.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_tty.c standard kern/tty_ttydisc.c standard kern/uipc_accf.c standard kern/uipc_debug.c optional ddb kern/uipc_domain.c standard kern/uipc_ktls.c optional kern_tls kern/uipc_mbuf.c standard kern/uipc_mbuf2.c standard kern/uipc_mbufhash.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 standard 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_mountroot.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_CPP='${CPP}' 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_CPP='${CPP}' rpcgen -c $S/kgssapi/gssd.x -o gssd_xdr.c" \ no-ctfconvert 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_CPP='${CPP}' rpcgen -lM $S/kgssapi/gssd.x | grep -v string.h > gssd_clnt.c" \ no-ctfconvert 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/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/arc4random_uniform.c standard libkern/asprintf.c standard libkern/bcd.c standard libkern/bsearch.c standard libkern/explicit_bzero.c standard libkern/fnmatch.c standard libkern/gsb_crc32.c standard libkern/iconv.c optional libiconv libkern/iconv_converter_if.m optional libiconv libkern/iconv_ucs.c optional libiconv libkern/iconv_xlat.c optional libiconv libkern/iconv_xlat16.c optional libiconv libkern/inet_aton.c standard libkern/inet_ntoa.c standard libkern/inet_ntop.c standard libkern/inet_pton.c standard libkern/jenkins_hash.c standard libkern/murmur3_32.c standard libkern/memcchr.c standard libkern/memchr.c standard libkern/memmem.c optional gdb libkern/qsort.c standard libkern/qsort_r.c standard libkern/random.c standard libkern/scanc.c standard libkern/strcasecmp.c standard libkern/strcasestr.c standard libkern/strcat.c standard libkern/strchr.c standard libkern/strchrnul.c optional gdb libkern/strcmp.c standard libkern/strcpy.c standard libkern/strcspn.c standard libkern/strdup.c standard libkern/strndup.c standard libkern/strlcat.c standard libkern/strlcpy.c standard libkern/strncat.c standard libkern/strncmp.c standard libkern/strncpy.c standard libkern/strnlen.c standard libkern/strnstr.c standard libkern/strrchr.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 libkern/timingsafe_bcmp.c standard contrib/zlib/adler32.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib contrib/zlib/compress.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \ compile-with "${NORMAL_C} -Wno-cast-qual" contrib/zlib/crc32.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib contrib/zlib/deflate.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \ compile-with "${NORMAL_C} -Wno-cast-qual" contrib/zlib/inffast.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib contrib/zlib/inflate.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib contrib/zlib/inftrees.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib contrib/zlib/trees.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib contrib/zlib/uncompr.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib \ compile-with "${NORMAL_C} -Wno-cast-qual" contrib/zlib/zutil.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib dev/zlib/zlib_mod.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib dev/zlib/zcalloc.c optional crypto | geom_uzip | ipsec | \ ipsec_support | mxge | ddb_ctf | gzio | zfs | zlib net/altq/altq_cbq.c optional altq net/altq/altq_codel.c optional altq net/altq/altq_hfsc.c optional altq net/altq/altq_fairq.c optional altq net/altq/altq_priq.c optional altq net/altq/altq_red.c optional altq net/altq/altq_rio.c optional altq net/altq/altq_rmclass.c optional altq net/altq/altq_subr.c optional altq 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/ieee8023ad_lacp.c optional lagg net/if.c standard net/if_bridge.c optional bridge inet | if_bridge inet net/if_clone.c standard net/if_dead.c standard net/if_disc.c optional disc net/if_edsc.c optional edsc net/if_enc.c optional enc inet | enc inet6 net/if_epair.c optional epair net/if_ethersubr.c optional ether net/if_fwsubr.c optional fwip net/if_gif.c optional gif inet | gif inet6 | \ netgraph_gif inet | netgraph_gif inet6 net/if_gre.c optional gre inet | gre inet6 net/if_ipsec.c optional inet ipsec | inet6 ipsec net/if_lagg.c optional lagg net/if_loop.c optional loop net/if_llatbl.c standard net/if_me.c optional me inet net/if_media.c standard net/if_mib.c standard net/if_stf.c optional stf inet inet6 net/if_tuntap.c optional tuntap net/if_vlan.c optional vlan net/if_vxlan.c optional vxlan inet | vxlan inet6 net/ifdi_if.m optional ether pci iflib net/iflib.c optional ether pci iflib net/iflib_clone.c optional ether pci iflib net/mp_ring.c optional ether iflib net/mppcc.c optional netgraph_mppc_compression net/mppcd.c optional netgraph_mppc_compression net/netisr.c standard net/debugnet.c optional inet debugnet net/debugnet_inet.c optional inet debugnet net/pfil.c optional ether | inet net/radix.c standard net/raw_cb.c standard net/raw_usrreq.c standard net/route.c standard net/route/mpath_ctl.c optional route_mpath net/route/nhgrp.c optional route_mpath net/route/nhgrp_ctl.c optional route_mpath net/route/nhop.c standard net/route/nhop_ctl.c standard net/route/nhop_utils.c standard net/route/fib_algo.c optional fib_algo net/route/route_ctl.c standard net/route/route_ddb.c optional ddb net/route/route_helpers.c standard net/route/route_ifaddrs.c standard net/route/route_tables.c standard net/route/route_temporal.c standard net/rss_config.c optional inet rss | inet6 rss net/rtsock.c standard net/slcompress.c optional netgraph_vjc net/toeplitz.c optional inet rss | inet6 rss | route_mpath net/vnet.c optional vimage net80211/ieee80211.c optional wlan net80211/ieee80211_acl.c optional wlan wlan_acl net80211/ieee80211_action.c optional wlan net80211/ieee80211_adhoc.c optional wlan \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_ageq.c optional wlan net80211/ieee80211_amrr.c optional wlan | wlan_amrr net80211/ieee80211_crypto.c optional wlan \ compile-with "${NORMAL_C} -Wno-unused-function" 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 \ compile-with "${NORMAL_C} -Wno-unused-function" 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 \ compile-with "${NORMAL_C} -Wno-unused-function" 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 \ compile-with "${NORMAL_C} -Wno-unused-function" net80211/ieee80211_superg.c optional wlan ieee80211_support_superg net80211/ieee80211_scan_sw.c optional wlan net80211/ieee80211_tdma.c optional wlan ieee80211_support_tdma net80211/ieee80211_vht.c optional wlan net80211/ieee80211_wds.c optional wlan net80211/ieee80211_xauth.c optional wlan wlan_xauth net80211/ieee80211_alq.c optional wlan ieee80211_alq netgraph/atm/ccatm/ng_ccatm.c optional ngatm_ccatm \ compile-with "${NORMAL_C} -I$S/contrib/ngatm" 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/ubt/ng_ubt.c optional netgraph_bluetooth_ubt usb netgraph/bluetooth/drivers/ubt/ng_ubt_intel.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/netflow_v9.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_checksum.c optional netgraph_checksum 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_frame_relay.c optional netgraph_frame_relay netgraph/ng_gif.c optional netgraph_gif inet6 | netgraph_gif inet 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_macfilter.c optional netgraph_macfilter 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_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 netgraph/ng_vlan.c optional netgraph_vlan netgraph/ng_vlan_rotate.c optional netgraph_vlan_rotate 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_ether.c optional inet ether netinet/igmp.c optional inet netinet/in.c optional inet netinet/in_cksum.c optional inet | inet6 netinet/in_debug.c optional inet ddb netinet/in_kdtrace.c optional inet | inet6 netinet/ip_carp.c optional inet carp | inet6 carp netinet/in_fib.c optional inet netinet/in_fib_algo.c optional inet fib_algo 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_jail.c optional inet netinet/in_mcast.c optional inet netinet/in_pcb.c optional inet | inet6 netinet/in_pcbgroup.c optional inet pcbgroup | inet6 pcbgroup netinet/in_prot.c optional inet | inet6 netinet/in_proto.c optional inet | inet6 netinet/in_rmx.c optional inet netinet/in_rss.c optional inet rss netinet/ip_divert.c optional inet ipdivert ipfirewall netinet/ip_ecn.c optional inet | inet6 netinet/ip_encap.c optional inet | inet6 netinet/ip_fastfwd.c optional inet netinet/ip_icmp.c optional inet | inet6 netinet/ip_input.c optional inet netinet/ip_mroute.c optional mrouting inet netinet/ip_options.c optional inet netinet/ip_output.c optional inet netinet/ip_reass.c optional inet netinet/raw_ip.c optional inet | inet6 netinet/cc/cc.c optional cc_newreno inet | cc_vegas inet | \ cc_htcp inet | cc_hd inet | cc_dctcp inet | cc_cubic inet | \ cc_chd inet | cc_cdg inet | cc_newreno inet6 | cc_vegas inet6 | \ cc_htcp inet6 | cc_hd inet6 |cc_dctcp inet6 | cc_cubic inet6 | \ cc_chd inet6 | cc_cdg inet6 netinet/cc/cc_cdg.c optional inet cc_cdg tcp_hhook netinet/cc/cc_chd.c optional inet cc_chd tcp_hhook netinet/cc/cc_cubic.c optional inet cc_cubic | inet6 cc_cubic netinet/cc/cc_dctcp.c optional inet cc_dctcp | inet6 cc_dctcp netinet/cc/cc_hd.c optional inet cc_hd tcp_hhook netinet/cc/cc_htcp.c optional inet cc_htcp | inet6 cc_htcp netinet/cc/cc_newreno.c optional inet cc_newreno | inet6 cc_newreno netinet/cc/cc_vegas.c optional inet cc_vegas tcp_hhook netinet/khelp/h_ertt.c optional inet tcp_hhook netinet/sctp_asconf.c optional inet sctp | inet6 sctp netinet/sctp_auth.c optional inet sctp | inet6 sctp netinet/sctp_bsd_addr.c optional inet sctp | inet6 sctp netinet/sctp_cc_functions.c optional inet sctp | inet6 sctp netinet/sctp_crc32.c optional inet | inet6 netinet/sctp_indata.c optional inet sctp | inet6 sctp netinet/sctp_input.c optional inet sctp | inet6 sctp netinet/sctp_kdtrace.c optional inet sctp | inet6 sctp netinet/sctp_output.c optional inet sctp | inet6 sctp netinet/sctp_pcb.c optional inet sctp | inet6 sctp netinet/sctp_peeloff.c optional inet sctp | inet6 sctp netinet/sctp_ss_functions.c optional inet sctp | inet6 sctp netinet/sctp_syscalls.c optional inet sctp | inet6 sctp netinet/sctp_sysctl.c optional inet sctp | inet6 sctp netinet/sctp_timer.c optional inet sctp | inet6 sctp netinet/sctp_usrreq.c optional inet sctp | inet6 sctp netinet/sctputil.c optional inet sctp | inet6 sctp netinet/siftr.c optional inet siftr alq | inet6 siftr alq netinet/tcp_debug.c optional tcpdebug netinet/tcp_fastopen.c optional inet tcp_rfc7413 | inet6 tcp_rfc7413 netinet/tcp_hostcache.c optional inet | inet6 netinet/tcp_input.c optional inet | inet6 netinet/tcp_log_buf.c optional tcp_blackbox inet | tcp_blackbox inet6 netinet/tcp_lro.c optional inet | inet6 netinet/tcp_output.c optional inet | inet6 netinet/tcp_offload.c optional tcp_offload inet | tcp_offload inet6 netinet/tcp_hpts.c optional tcphpts inet | tcphpts inet6 netinet/tcp_ratelimit.c optional ratelimit inet | ratelimit inet6 netinet/tcp_pcap.c optional inet tcppcap | inet6 tcppcap \ compile-with "${NORMAL_C} ${NO_WNONNULL}" netinet/tcp_reass.c optional inet | inet6 netinet/tcp_sack.c optional inet | inet6 netinet/tcp_stats.c optional stats inet | stats inet6 netinet/tcp_subr.c optional inet | inet6 netinet/tcp_syncache.c optional inet | inet6 netinet/tcp_timer.c optional inet | inet6 netinet/tcp_timewait.c optional inet | inet6 netinet/tcp_usrreq.c optional inet | inet6 netinet/udp_usrreq.c optional inet | inet6 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 netinet/netdump/netdump_client.c optional inet debugnet netdump 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_fib.c optional inet6 netinet6/in6_fib_algo.c optional inet6 fib_algo netinet6/in6_gif.c optional gif inet6 | netgraph_gif inet6 netinet6/in6_ifattach.c optional inet6 netinet6/in6_jail.c optional inet6 netinet6/in6_mcast.c optional inet6 netinet6/in6_pcb.c optional inet6 netinet6/in6_pcbgroup.c optional inet6 pcbgroup netinet6/in6_proto.c optional inet6 netinet6/in6_rmx.c optional inet6 netinet6/in6_rss.c optional inet6 rss netinet6/in6_src.c optional inet6 netinet6/ip6_fastfwd.c optional inet6 netinet6/ip6_forward.c optional inet6 netinet6/ip6_gre.c optional gre 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/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_mod.c optional ipsec inet | ipsec inet6 netipsec/ipsec_output.c optional ipsec inet | ipsec inet6 netipsec/ipsec_pcb.c optional ipsec inet | ipsec inet6 | \ ipsec_support inet | ipsec_support inet6 netipsec/key.c optional ipsec inet | ipsec inet6 | \ ipsec_support inet | ipsec_support inet6 netipsec/key_debug.c optional ipsec inet | ipsec inet6 | \ ipsec_support inet | ipsec_support inet6 netipsec/keysock.c optional ipsec inet | ipsec inet6 | \ ipsec_support inet | ipsec_support inet6 netipsec/subr_ipsec.c optional ipsec inet | ipsec inet6 | \ ipsec_support inet | ipsec_support inet6 netipsec/udpencap.c optional ipsec inet 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_tcp.c optional ipsec inet tcp_signature | \ ipsec inet6 tcp_signature | ipsec_support inet tcp_signature | \ ipsec_support inet6 tcp_signature netpfil/ipfw/dn_aqm_codel.c optional inet dummynet netpfil/ipfw/dn_aqm_pie.c optional inet dummynet netpfil/ipfw/dn_heap.c optional inet dummynet netpfil/ipfw/dn_sched_fifo.c optional inet dummynet netpfil/ipfw/dn_sched_fq_codel.c optional inet dummynet netpfil/ipfw/dn_sched_fq_pie.c optional inet dummynet netpfil/ipfw/dn_sched_prio.c optional inet dummynet netpfil/ipfw/dn_sched_qfq.c optional inet dummynet netpfil/ipfw/dn_sched_rr.c optional inet dummynet netpfil/ipfw/dn_sched_wf2q.c optional inet dummynet netpfil/ipfw/ip_dummynet.c optional inet dummynet netpfil/ipfw/ip_dn_io.c optional inet dummynet netpfil/ipfw/ip_dn_glue.c optional inet dummynet netpfil/ipfw/ip_fw2.c optional inet ipfirewall netpfil/ipfw/ip_fw_bpf.c optional inet ipfirewall netpfil/ipfw/ip_fw_dynamic.c optional inet ipfirewall \ compile-with "${NORMAL_C} -I$S/contrib/ck/include" netpfil/ipfw/ip_fw_eaction.c optional inet ipfirewall netpfil/ipfw/ip_fw_log.c optional inet ipfirewall netpfil/ipfw/ip_fw_pfil.c optional inet ipfirewall netpfil/ipfw/ip_fw_sockopt.c optional inet ipfirewall netpfil/ipfw/ip_fw_table.c optional inet ipfirewall netpfil/ipfw/ip_fw_table_algo.c optional inet ipfirewall netpfil/ipfw/ip_fw_table_value.c optional inet ipfirewall netpfil/ipfw/ip_fw_iface.c optional inet ipfirewall netpfil/ipfw/ip_fw_nat.c optional inet ipfirewall_nat netpfil/ipfw/nat64/ip_fw_nat64.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64clat.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64clat_control.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64lsn.c optional inet inet6 ipfirewall \ ipfirewall_nat64 compile-with "${NORMAL_C} -I$S/contrib/ck/include" netpfil/ipfw/nat64/nat64lsn_control.c optional inet inet6 ipfirewall \ ipfirewall_nat64 compile-with "${NORMAL_C} -I$S/contrib/ck/include" netpfil/ipfw/nat64/nat64stl.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64stl_control.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nat64/nat64_translate.c optional inet inet6 ipfirewall \ ipfirewall_nat64 netpfil/ipfw/nptv6/ip_fw_nptv6.c optional inet inet6 ipfirewall \ ipfirewall_nptv6 netpfil/ipfw/nptv6/nptv6.c optional inet inet6 ipfirewall \ ipfirewall_nptv6 netpfil/ipfw/pmod/ip_fw_pmod.c optional inet ipfirewall_pmod netpfil/ipfw/pmod/tcpmod.c optional inet ipfirewall_pmod netpfil/pf/if_pflog.c optional pflog pf inet netpfil/pf/if_pfsync.c optional pfsync pf inet netpfil/pf/pf.c optional pf inet netpfil/pf/pf_if.c optional pf inet netpfil/pf/pf_ioctl.c optional pf inet netpfil/pf/pf_lb.c optional pf inet netpfil/pf/pf_norm.c optional pf inet netpfil/pf/pf_nv.c optional pf inet netpfil/pf/pf_osfp.c optional pf inet netpfil/pf/pf_ruleset.c optional pf inet netpfil/pf/pf_syncookies.c optional pf inet netpfil/pf/pf_table.c optional pf inet netpfil/pf/in4_cksum.c optional pf inet 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 nfscl nfs/krpc_subr.c optional bootp nfscl nfs/nfs_diskless.c optional nfscl nfs_root nfs/nfs_nfssvc.c optional nfscl | nfslockd | 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 # Linux Kernel Programming Interface compat/linuxkpi/common/src/linux_kmod.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_acpi.c optional compat_linuxkpi acpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_compat.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_current.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_devres.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_dmi.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_domain.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_firmware.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_fpu.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_hrtimer.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_interrupt.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_kthread.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_lock.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_page.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_pci.c optional compat_linuxkpi pci \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_tasklet.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_idr.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_radix.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_rcu.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C} -I$S/contrib/ck/include" compat/linuxkpi/common/src/linux_schedule.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_shmemfs.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_shrinker.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_slab.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_usb.c optional compat_linuxkpi usb \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_work.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_xarray.c optional compat_linuxkpi \ compile-with "${LINUXKPI_C}" compat/linuxkpi/common/src/linux_seq_file.c optional compat_linuxkpi | lindebugfs \ compile-with "${LINUXKPI_C}" compat/lindebugfs/lindebugfs.c optional lindebugfs \ compile-with "${LINUXKPI_C}" # OpenFabrics Enterprise Distribution (Infiniband) net/if_infiniband.c optional ofed | lagg ofed/drivers/infiniband/core/ib_addr.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_agent.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_cache.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_cm.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_cma.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_core_uverbs.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_cq.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_device.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_fmr_pool.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_iwcm.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_iwpm_msg.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_iwpm_util.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_mad.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_mad_rmpp.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_multicast.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_packer.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_rdma_core.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_roce_gid_mgmt.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_sa_query.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_smi.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_sysfs.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_ucm.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_ucma.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_ud_header.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_umem.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_user_mad.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_cmd.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_ioctl.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_main.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_marshall.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_async_fd.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_counters.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_cq.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_device.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_dm.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_flow_action.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_std_types_mr.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_uverbs_uapi.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/core/ib_verbs.c optional ofed \ compile-with "${OFED_C}" ofed/drivers/infiniband/ulp/ipoib/ipoib_cm.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" #ofed/drivers/infiniband/ulp/ipoib/ipoib_fs.c optional ipoib \ # compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_ib.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_main.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_multicast.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/ipoib/ipoib_verbs.c optional ipoib \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" #ofed/drivers/infiniband/ulp/ipoib/ipoib_vlan.c optional ipoib \ # compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/ipoib/" ofed/drivers/infiniband/ulp/sdp/sdp_bcopy.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_main.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_rx.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_cma.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" ofed/drivers/infiniband/ulp/sdp/sdp_tx.c optional sdp inet \ compile-with "${OFED_C} -I$S/ofed/drivers/infiniband/ulp/sdp/" dev/mthca/mthca_allocator.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_av.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_catas.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_cmd.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_cq.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_eq.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_mad.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_main.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_mcg.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_memfree.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_mr.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_pd.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_profile.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_provider.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_qp.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_reset.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_srq.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mthca/mthca_uar.c optional mthca pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_alias_GUID.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_mcg.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_sysfs.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_cm.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_ah.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_cq.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_doorbell.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_mad.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_main.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_mr.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_qp.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_srq.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_ib/mlx4_ib_wc.c optional mlx4ib pci ofed \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_alloc.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_catas.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_cmd.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_cq.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_eq.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_fw.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_fw_qos.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_icm.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_intf.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_main.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_mcg.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_mr.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_pd.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_port.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_profile.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_qp.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_reset.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_sense.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_srq.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_core/mlx4_resource_tracker.c optional mlx4 pci \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_cq.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_main.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_netdev.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_port.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_resources.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_rx.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx4/mlx4_en/mlx4_en_tx.c optional mlx4en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_ah.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_cong.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_cq.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_devx.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_doorbell.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_gsi.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_mad.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_main.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_mem.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_mr.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_qp.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_srq.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_ib/mlx5_ib_virt.c optional mlx5ib pci ofed \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_alloc.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_cmd.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_cq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_diagnostics.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_eq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_eswitch.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_fs_cmd.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_fs_tree.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_fw.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_fwdump.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_health.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mad.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_main.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mcg.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mpfs.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_mr.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_pagealloc.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_pd.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_port.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_qp.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_rl.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_srq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_tls.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_transobj.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_uar.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_vport.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_vsc.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_core/mlx5_wq.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_lib/mlx5_gid.c optional mlx5 pci \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_dim.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_ethtool.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_main.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_tx.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_flow_table.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_hw_tls.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_rx.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_rl.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_txrx.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" dev/mlx5/mlx5_en/mlx5_en_port_buffer.c optional mlx5en pci inet inet6 \ compile-with "${OFED_C}" # crypto support opencrypto/cbc_mac.c optional crypto opencrypto/criov.c optional crypto | ipsec | ipsec_support opencrypto/crypto.c optional crypto | ipsec | ipsec_support opencrypto/cryptodev.c optional cryptodev opencrypto/cryptodev_if.m optional crypto | ipsec | ipsec_support opencrypto/cryptosoft.c optional crypto | ipsec | ipsec_support opencrypto/cryptodeflate.c optional crypto | ipsec | ipsec_support opencrypto/gmac.c optional crypto | ipsec | ipsec_support opencrypto/gfmult.c optional crypto | ipsec | ipsec_support opencrypto/ktls_ocf.c optional kern_tls opencrypto/rmd160.c optional crypto | ipsec | ipsec_support opencrypto/xform.c optional crypto | ipsec | ipsec_support opencrypto/xform_cbc_mac.c optional crypto opencrypto/xform_chacha20_poly1305.c optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include -I$S/crypto/libsodium" opencrypto/xform_poly1305.c optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_onetimeauth/poly1305/onetimeauth_poly1305.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_onetimeauth/poly1305/donna/poly1305_donna.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_verify/sodium/verify.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" crypto/libsodium/randombytes.c optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include -I$S/crypto/libsodium" crypto/libsodium/utils.c optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_core/hchacha20/core_hchacha20.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_stream/chacha20/stream_chacha20.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_stream/chacha20/ref/chacha20_ref.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_aead/chacha20poly1305/sodium/aead_chacha20poly1305.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" contrib/libsodium/src/libsodium/crypto_aead/xchacha20poly1305/sodium/aead_xchacha20poly1305.c \ optional crypto \ compile-with "${NORMAL_C} -I$S/contrib/libsodium/src/libsodium/include/sodium -I$S/crypto/libsodium" rpc/auth_none.c optional krpc | nfslockd | nfscl | nfsd rpc/auth_unix.c optional krpc | nfslockd | nfscl | nfsd rpc/authunix_prot.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_bck.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_dg.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_rc.c optional krpc | nfslockd | nfscl | nfsd rpc/clnt_vc.c optional krpc | nfslockd | nfscl | nfsd rpc/getnetconfig.c optional krpc | nfslockd | nfscl | nfsd rpc/replay.c optional krpc | nfslockd | nfscl | nfsd rpc/rpc_callmsg.c optional krpc | nfslockd | nfscl | nfsd rpc/rpc_generic.c optional krpc | nfslockd | nfscl | nfsd rpc/rpc_prot.c optional krpc | nfslockd | nfscl | nfsd rpc/rpcb_clnt.c optional krpc | nfslockd | nfscl | nfsd rpc/rpcb_prot.c optional krpc | nfslockd | nfscl | nfsd rpc/svc.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_auth.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_auth_unix.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_dg.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_generic.c optional krpc | nfslockd | nfscl | nfsd rpc/svc_vc.c optional krpc | nfslockd | nfscl | nfsd # # Kernel RPC-over-TLS # rpctlscd.h optional krpc | nfslockd | nfscl | nfsd \ dependency "$S/rpc/rpcsec_tls/rpctlscd.x" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -hM $S/rpc/rpcsec_tls/rpctlscd.x | grep -v pthread.h > rpctlscd.h" \ no-obj no-implicit-rule before-depend local \ clean "rpctlscd.h" rpctlscd_xdr.c optional krpc | nfslockd | nfscl | nfsd \ dependency "$S/rpc/rpcsec_tls/rpctlscd.x rpctlscd.h" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -c $S/rpc/rpcsec_tls/rpctlscd.x -o rpctlscd_xdr.c" no-ctfconvert \ no-implicit-rule before-depend local \ clean "rpctlscd_xdr.c" rpctlscd_clnt.c optional krpc | nfslockd | nfscl | nfsd \ dependency "$S/rpc/rpcsec_tls/rpctlscd.x rpctlscd.h" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -lM $S/rpc/rpcsec_tls/rpctlscd.x | grep -v string.h > rpctlscd_clnt.c" no-ctfconvert \ no-implicit-rule before-depend local \ clean "rpctlscd_clnt.c" rpctlssd.h optional krpc | nfslockd | nfscl | nfsd \ dependency "$S/rpc/rpcsec_tls/rpctlssd.x" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -hM $S/rpc/rpcsec_tls/rpctlssd.x | grep -v pthread.h > rpctlssd.h" \ no-obj no-implicit-rule before-depend local \ clean "rpctlssd.h" rpctlssd_xdr.c optional krpc | nfslockd | nfscl | nfsd \ dependency "$S/rpc/rpcsec_tls/rpctlssd.x rpctlssd.h" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -c $S/rpc/rpcsec_tls/rpctlssd.x -o rpctlssd_xdr.c" no-ctfconvert \ no-implicit-rule before-depend local \ clean "rpctlssd_xdr.c" rpctlssd_clnt.c optional krpc | nfslockd | nfscl | nfsd \ dependency "$S/rpc/rpcsec_tls/rpctlssd.x rpctlssd.h" \ compile-with "RPCGEN_CPP='${CPP}' rpcgen -lM $S/rpc/rpcsec_tls/rpctlssd.x | grep -v string.h > rpctlssd_clnt.c" no-ctfconvert \ no-implicit-rule before-depend local \ clean "rpctlssd_clnt.c" rpc/rpcsec_tls/rpctls_impl.c optional krpc | nfslockd | nfscl | nfsd rpc/rpcsec_tls/auth_tls.c optional krpc | nfslockd | 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_db.c optional audit security/audit/audit_bsm_klib.c optional audit security/audit/audit_dtrace.c optional dtaudit audit | dtraceall audit compile-with "${CDDL_C}" 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/audit/bsm_domain.c optional audit security/audit/bsm_errno.c optional audit security/audit/bsm_fcntl.c optional audit security/audit/bsm_socket_type.c optional audit security/audit/bsm_token.c optional audit 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 | mac inet6 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_ntpd/mac_ntpd.c optional mac_ntpd 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 security/mac_veriexec/mac_veriexec.c optional mac_veriexec security/mac_veriexec/veriexec_fingerprint.c optional mac_veriexec security/mac_veriexec/veriexec_metadata.c optional mac_veriexec security/mac_veriexec_parser/mac_veriexec_parser.c optional mac_veriexec mac_veriexec_parser security/mac_veriexec/mac_veriexec_rmd160.c optional mac_veriexec_rmd160 security/mac_veriexec/mac_veriexec_sha1.c optional mac_veriexec_sha1 security/mac_veriexec/mac_veriexec_sha256.c optional mac_veriexec_sha256 security/mac_veriexec/mac_veriexec_sha384.c optional mac_veriexec_sha384 security/mac_veriexec/mac_veriexec_sha512.c optional mac_veriexec_sha512 teken/teken.c optional sc !SC_NO_TERM_TEKEN | vt 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 | geom_label ufs/ffs/ffs_tables.c optional ffs | geom_label ufs/ffs/ffs_vfsops.c optional ffs ufs/ffs/ffs_vnops.c optional ffs ufs/ffs/ffs_rawread.c optional ffs directio ufs/ffs/ffs_suspend.c optional ffs 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_GJOURNAL 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/memguard.c optional DEBUG_MEMGUARD vm/vm_domainset.c standard 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_radix.c standard vm/vm_reserv.c standard vm/vm_swapout.c optional !NO_SWAPPING vm/vm_swapout_dummy.c optional NO_SWAPPING vm/vm_unix.c standard vm/vnode_pager.c standard xen/features.c optional xenhvm xen/xenbus/xenbus_if.m optional xenhvm xen/xenbus/xenbus.c optional xenhvm xen/xenbus/xenbusb_if.m optional xenhvm xen/xenbus/xenbusb.c optional xenhvm xen/xenbus/xenbusb_front.c optional xenhvm xen/xenbus/xenbusb_back.c optional xenhvm xen/xenmem/xenmem_if.m optional xenhvm xdr/xdr.c optional xdr | krpc | nfslockd | nfscl | nfsd xdr/xdr_array.c optional xdr | krpc | nfslockd | nfscl | nfsd xdr/xdr_mbuf.c optional xdr | krpc | nfslockd | nfscl | nfsd xdr/xdr_mem.c optional xdr | krpc | nfslockd | nfscl | nfsd xdr/xdr_reference.c optional xdr | krpc | nfslockd | nfscl | nfsd xdr/xdr_sizeof.c optional xdr | krpc | nfslockd | nfscl | nfsd diff --git a/sys/conf/options b/sys/conf/options index 58cb6458b656..123a770ed74c 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -1,1041 +1,1039 @@ # $FreeBSD$ # # On the handling of kernel options # # All kernel options should be listed in NOTES, with suitable # descriptions. Negative options (options that make some code not # compile) should be commented out; LINT (generated from NOTES) should # compile as much code as possible. Try to structure option-using # code so that a single option only switch code on, or only switch # code off, to make it possible to have a full compile-test. If # necessary, you can check for COMPILING_LINT to get maximum code # coverage. # # All new options shall also be listed in either "conf/options" or # "conf/options.". Options that affect a single source-file # .[c|s] should be directed into "opt_.h", while options # that affect multiple files should either go in "opt_global.h" if # this is a kernel-wide option (used just about everywhere), or in # "opt_.h" if it affects only some files. # Note that the effect of listing only an option without a # header-file-name in conf/options (and cousins) is that the last # convention is followed. # # This handling scheme is not yet fully implemented. # # # Format of this file: # Option name filename # # If filename is missing, the default is # opt_.h AAC_DEBUG opt_aac.h AACRAID_DEBUG opt_aacraid.h AHC_ALLOW_MEMIO opt_aic7xxx.h AHC_TMODE_ENABLE opt_aic7xxx.h AHC_DUMP_EEPROM opt_aic7xxx.h AHC_DEBUG opt_aic7xxx.h AHC_DEBUG_OPTS opt_aic7xxx.h AHC_REG_PRETTY_PRINT opt_aic7xxx.h AHD_DEBUG opt_aic79xx.h AHD_DEBUG_OPTS opt_aic79xx.h AHD_TMODE_ENABLE opt_aic79xx.h AHD_REG_PRETTY_PRINT opt_aic79xx.h -TWA_DEBUG opt_twa.h - # Debugging options. ALT_BREAK_TO_DEBUGGER opt_kdb.h BREAK_TO_DEBUGGER opt_kdb.h BUF_TRACKING opt_global.h DDB DDB_BUFR_SIZE opt_ddb.h DDB_CAPTURE_DEFAULTBUFSIZE opt_ddb.h DDB_CAPTURE_MAXBUFSIZE opt_ddb.h DDB_CTF opt_ddb.h DDB_NUMSYM opt_ddb.h EARLY_PRINTF opt_global.h FULL_BUF_TRACKING opt_global.h GDB KDB opt_global.h KDB_TRACE opt_kdb.h KDB_UNATTENDED opt_kdb.h KLD_DEBUG opt_kld.h NUM_CORE_FILES opt_global.h QUEUE_MACRO_DEBUG_TRACE opt_global.h QUEUE_MACRO_DEBUG_TRASH opt_global.h SYSCTL_DEBUG opt_sysctl.h TEXTDUMP_PREFERRED opt_ddb.h TEXTDUMP_VERBOSE opt_ddb.h TSLOG opt_global.h TSLOGSIZE opt_global.h # Miscellaneous options. ALQ ALTERA_SDCARD_FAST_SIM opt_altera_sdcard.h ATSE_CFI_HACK opt_cfi.h AUDIT opt_global.h BOOTHOWTO opt_global.h BOOTVERBOSE opt_global.h CALLOUT_PROFILING CAPABILITIES opt_capsicum.h CAPABILITY_MODE opt_capsicum.h CC_CDG opt_global.h CC_CHD opt_global.h CC_CUBIC opt_global.h CC_DEFAULT opt_cc.h CC_DCTCP opt_global.h CC_HD opt_global.h CC_HTCP opt_global.h CC_NEWRENO opt_global.h CC_VEGAS opt_global.h COMPAT_43 opt_global.h COMPAT_43TTY opt_global.h COMPAT_FREEBSD4 opt_global.h COMPAT_FREEBSD5 opt_global.h COMPAT_FREEBSD6 opt_global.h COMPAT_FREEBSD7 opt_global.h COMPAT_FREEBSD9 opt_global.h COMPAT_FREEBSD10 opt_global.h COMPAT_FREEBSD11 opt_global.h COMPAT_FREEBSD12 opt_global.h COMPAT_FREEBSD13 opt_global.h COMPAT_LINUXKPI opt_dontuse.h _COMPAT_LINUX32 opt_compat.h # XXX: make sure opt_compat.h exists COMPILING_LINT opt_global.h CY_PCI_FASTINTR DEADLKRES opt_watchdog.h EXPERIMENTAL opt_global.h EXT_RESOURCES opt_global.h DIRECTIO FILEMON opt_dontuse.h FFCLOCK FULL_PREEMPTION opt_sched.h GZIO opt_gzio.h IMAGACT_BINMISC opt_dontuse.h IPI_PREEMPTION opt_sched.h GEOM_BDE opt_geom.h GEOM_CACHE opt_geom.h GEOM_CONCAT opt_geom.h GEOM_ELI opt_geom.h GEOM_GATE opt_geom.h GEOM_JOURNAL opt_geom.h GEOM_LABEL opt_geom.h GEOM_LABEL_GPT opt_geom.h GEOM_LINUX_LVM opt_geom.h GEOM_MAP opt_geom.h GEOM_MIRROR opt_geom.h GEOM_MOUNTVER opt_geom.h GEOM_MULTIPATH opt_geom.h GEOM_NOP opt_geom.h GEOM_PART_APM opt_geom.h GEOM_PART_BSD opt_geom.h GEOM_PART_BSD64 opt_geom.h GEOM_PART_EBR opt_geom.h GEOM_PART_GPT opt_geom.h GEOM_PART_LDM opt_geom.h GEOM_PART_MBR opt_geom.h GEOM_PART_VTOC8 opt_geom.h GEOM_RAID opt_geom.h GEOM_RAID3 opt_geom.h GEOM_SHSEC opt_geom.h GEOM_STRIPE opt_geom.h GEOM_UZIP opt_geom.h GEOM_UZIP_DEBUG opt_geom.h GEOM_VINUM opt_geom.h GEOM_VIRSTOR opt_geom.h GEOM_ZERO opt_geom.h IFLIB opt_iflib.h KDTRACE_HOOKS opt_global.h KDTRACE_FRAME opt_kdtrace.h KN_HASHSIZE opt_kqueue.h KSTACK_MAX_PAGES KSTACK_PAGES KSTACK_USAGE_PROF KTRACE KTRACE_REQUEST_POOL opt_ktrace.h LIBICONV MAC opt_global.h MAC_BIBA opt_dontuse.h MAC_BSDEXTENDED opt_dontuse.h MAC_IFOFF opt_dontuse.h MAC_LOMAC opt_dontuse.h MAC_MLS opt_dontuse.h MAC_NONE opt_dontuse.h MAC_NTPD opt_dontuse.h MAC_PARTITION opt_dontuse.h MAC_PORTACL opt_dontuse.h MAC_SEEOTHERUIDS opt_dontuse.h MAC_STATIC opt_mac.h MAC_STUB opt_dontuse.h MAC_TEST opt_dontuse.h MAC_VERIEXEC opt_dontuse.h MAC_VERIEXEC_SHA1 opt_dontuse.h MAC_VERIEXEC_SHA256 opt_dontuse.h MAC_VERIEXEC_SHA384 opt_dontuse.h MAC_VERIEXEC_SHA512 opt_dontuse.h MD_ROOT opt_md.h MD_ROOT_FSTYPE opt_md.h MD_ROOT_READONLY opt_md.h MD_ROOT_SIZE opt_md.h MD_ROOT_MEM opt_md.h MFI_DEBUG opt_mfi.h MFI_DECODE_LOG opt_mfi.h MPROF_BUFFERS opt_mprof.h MPROF_HASH_SIZE opt_mprof.h NEW_PCIB opt_global.h NO_ADAPTIVE_MUTEXES opt_adaptive_mutexes.h NO_ADAPTIVE_RWLOCKS NO_ADAPTIVE_SX NO_OBSOLETE_CODE opt_global.h NO_SYSCTL_DESCR opt_global.h NSWBUF_MIN opt_param.h MBUF_PACKET_ZONE_DISABLE opt_global.h PANIC_REBOOT_WAIT_TIME opt_panic.h PCI_HP opt_pci.h PCI_IOV opt_global.h PPC_DEBUG opt_ppc.h PPC_PROBE_CHIPSET opt_ppc.h PPS_SYNC opt_ntp.h PREEMPTION opt_sched.h QUOTA SCHED_4BSD opt_sched.h SCHED_STATS opt_sched.h SCHED_ULE opt_sched.h SLEEPQUEUE_PROFILING SLHCI_DEBUG opt_slhci.h STACK opt_stack.h SUIDDIR MSGMNB opt_sysvipc.h MSGMNI opt_sysvipc.h MSGSEG opt_sysvipc.h MSGSSZ opt_sysvipc.h MSGTQL opt_sysvipc.h SEMMNI opt_sysvipc.h SEMMNS opt_sysvipc.h SEMMNU opt_sysvipc.h SEMMSL opt_sysvipc.h SEMOPM opt_sysvipc.h SEMUME opt_sysvipc.h SHMALL opt_sysvipc.h SHMMAX opt_sysvipc.h SHMMAXPGS opt_sysvipc.h SHMMIN opt_sysvipc.h SHMMNI opt_sysvipc.h SHMSEG opt_sysvipc.h SYSVMSG opt_sysvipc.h SYSVSEM opt_sysvipc.h SYSVSHM opt_sysvipc.h SW_WATCHDOG opt_watchdog.h TCPHPTS opt_inet.h TURNSTILE_PROFILING UMTX_PROFILING UMTX_CHAINS opt_global.h VERBOSE_SYSINIT ZSTDIO opt_zstdio.h # Sanitizers COVERAGE opt_global.h KASAN opt_global.h KCOV KCSAN opt_global.h KMSAN opt_global.h KUBSAN opt_global.h # POSIX kernel options P1003_1B_MQUEUE opt_posix.h P1003_1B_SEMAPHORES opt_posix.h _KPOSIX_PRIORITY_SCHEDULING opt_posix.h # Do we want the config file compiled into the kernel? INCLUDE_CONFIG_FILE opt_config.h # Options for static filesystems. These should only be used at config # time, since the corresponding lkms cannot work if there are any static # dependencies. Unusability is enforced by hiding the defines for the # options in a never-included header. AUTOFS opt_dontuse.h CD9660 opt_dontuse.h EXT2FS opt_dontuse.h FDESCFS opt_dontuse.h FFS opt_dontuse.h FUSEFS opt_dontuse.h MSDOSFS opt_dontuse.h NULLFS opt_dontuse.h PROCFS opt_dontuse.h PSEUDOFS opt_dontuse.h SMBFS opt_dontuse.h TMPFS opt_dontuse.h UDF opt_dontuse.h UNIONFS opt_dontuse.h ZFS opt_dontuse.h # Pseudofs debugging PSEUDOFS_TRACE opt_pseudofs.h # In-kernel GSS-API KGSSAPI opt_kgssapi.h KGSSAPI_DEBUG opt_kgssapi.h # These static filesystems have one slightly bogus static dependency in # sys/i386/i386/autoconf.c. If any of these filesystems are # statically compiled into the kernel, code for mounting them as root # filesystems will be enabled - but look below. # NFSCL - client # NFSD - server NFSCL opt_nfs.h NFSD opt_nfs.h # filesystems and libiconv bridge CD9660_ICONV opt_dontuse.h MSDOSFS_ICONV opt_dontuse.h UDF_ICONV opt_dontuse.h # If you are following the conditions in the copyright, # you can enable soft-updates which will speed up a lot of thigs # and make the system safer from crashes at the same time. # otherwise a STUB module will be compiled in. SOFTUPDATES opt_ffs.h # On small, embedded systems, it can be useful to turn off support for # snapshots. It saves about 30-40k for a feature that would be lightly # used, if it is used at all. NO_FFS_SNAPSHOT opt_ffs.h # Enabling this option turns on support for Access Control Lists in UFS, # which can be used to support high security configurations. Depends on # UFS_EXTATTR. UFS_ACL opt_ufs.h # Enabling this option turns on support for extended attributes in UFS-based # filesystems, which can be used to support high security configurations # as well as new filesystem features. UFS_EXTATTR opt_ufs.h UFS_EXTATTR_AUTOSTART opt_ufs.h # Enable fast hash lookups for large directories on UFS-based filesystems. UFS_DIRHASH opt_ufs.h # Enable gjournal-based UFS journal. UFS_GJOURNAL opt_ufs.h # The below sentence is not in English, and neither is this one. # We plan to remove the static dependences above, with a # _ROOT option to control if it usable as root. This list # allows these options to be present in config files already (though # they won't make any difference yet). NFS_ROOT opt_nfsroot.h # SMB/CIFS requester NETSMB opt_netsmb.h # Enable debugnet(4) networking support. DEBUGNET opt_global.h # Enable netdump(4) client support. NETDUMP opt_global.h # Enable netgdb(4) support. NETGDB opt_global.h # Options used only in subr_param.c. HZ opt_param.h MAXFILES opt_param.h NBUF opt_param.h NSFBUFS opt_param.h VM_BCACHE_SIZE_MAX opt_param.h VM_SWZONE_SIZE_MAX opt_param.h MAXUSERS DFLDSIZ opt_param.h MAXDSIZ opt_param.h MAXSSIZ opt_param.h # Generic SCSI options. CAM_MAX_HIGHPOWER opt_cam.h CAMDEBUG opt_cam.h CAM_DEBUG_COMPILE opt_cam.h CAM_DEBUG_DELAY opt_cam.h CAM_DEBUG_BUS opt_cam.h CAM_DEBUG_TARGET opt_cam.h CAM_DEBUG_LUN opt_cam.h CAM_DEBUG_FLAGS opt_cam.h CAM_BOOT_DELAY opt_cam.h CAM_IOSCHED_DYNAMIC opt_cam.h CAM_IO_STATS opt_cam.h CAM_TEST_FAILURE opt_cam.h SCSI_DELAY opt_scsi.h SCSI_NO_SENSE_STRINGS opt_scsi.h SCSI_NO_OP_STRINGS opt_scsi.h # Options used only in cam/ata/ata_da.c ATA_STATIC_ID opt_ada.h # Options used only in cam/scsi/scsi_cd.c CHANGER_MIN_BUSY_SECONDS opt_cd.h CHANGER_MAX_BUSY_SECONDS opt_cd.h # Options used only in cam/scsi/scsi_da.c DA_TRACK_REFS opt_da.h # Options used only in cam/scsi/scsi_sa.c. SA_IO_TIMEOUT opt_sa.h SA_SPACE_TIMEOUT opt_sa.h SA_REWIND_TIMEOUT opt_sa.h SA_ERASE_TIMEOUT opt_sa.h SA_1FM_AT_EOD opt_sa.h # Options used only in cam/scsi/scsi_pt.c SCSI_PT_DEFAULT_TIMEOUT opt_pt.h # Options used only in cam/scsi/scsi_ses.c SES_ENABLE_PASSTHROUGH opt_ses.h # Options used in dev/sym/ (Symbios SCSI driver). SYM_SETUP_SCSI_DIFF opt_sym.h #-HVD support for 825a, 875, 885 # disabled:0 (default), enabled:1 SYM_SETUP_PCI_PARITY opt_sym.h #-PCI parity checking # disabled:0, enabled:1 (default) SYM_SETUP_MAX_LUN opt_sym.h #-Number of LUNs supported # default:8, range:[1..64] # Options used only in dev/isp/* ISP_TARGET_MODE opt_isp.h ISP_FW_CRASH_DUMP opt_isp.h ISP_DEFAULT_ROLES opt_isp.h ISP_INTERNAL_TARGET opt_isp.h ISP_FCTAPE_OFF opt_isp.h # Options used only in dev/iscsi ISCSI_INITIATOR_DEBUG opt_iscsi_initiator.h # Net stuff. ACCEPT_FILTER_DATA ACCEPT_FILTER_DNS ACCEPT_FILTER_HTTP ALTQ opt_global.h ALTQ_CBQ opt_altq.h ALTQ_CDNR opt_altq.h ALTQ_CODEL opt_altq.h ALTQ_DEBUG opt_altq.h ALTQ_HFSC opt_altq.h ALTQ_FAIRQ opt_altq.h ALTQ_NOPCC opt_altq.h ALTQ_PRIQ opt_altq.h ALTQ_RED opt_altq.h ALTQ_RIO opt_altq.h BOOTP opt_bootp.h BOOTP_BLOCKSIZE opt_bootp.h BOOTP_COMPAT opt_bootp.h BOOTP_NFSROOT opt_bootp.h BOOTP_NFSV3 opt_bootp.h BOOTP_WIRED_TO opt_bootp.h DEVICE_POLLING DUMMYNET opt_ipdn.h RATELIMIT opt_ratelimit.h RATELIMIT_DEBUG opt_ratelimit.h INET opt_inet.h INET6 opt_inet6.h STATS opt_global.h IPDIVERT IPFILTER opt_ipfilter.h IPFILTER_DEFAULT_BLOCK opt_ipfilter.h IPFILTER_LOG opt_ipfilter.h IPFILTER_LOOKUP opt_ipfilter.h IPFIREWALL opt_ipfw.h IPFIREWALL_DEFAULT_TO_ACCEPT opt_ipfw.h IPFIREWALL_NAT opt_ipfw.h IPFIREWALL_NAT64 opt_ipfw.h IPFIREWALL_NPTV6 opt_ipfw.h IPFIREWALL_VERBOSE opt_ipfw.h IPFIREWALL_VERBOSE_LIMIT opt_ipfw.h IPFIREWALL_PMOD opt_ipfw.h IPSEC opt_ipsec.h IPSEC_DEBUG opt_ipsec.h IPSEC_SUPPORT opt_ipsec.h IPSTEALTH KERN_TLS KRPC LIBALIAS LIBMCHAIN MBUF_PROFILING MBUF_STRESS_TEST MROUTING opt_mrouting.h NFSLOCKD PCBGROUP opt_pcbgroup.h PF_DEFAULT_TO_DROP opt_pf.h ROUTE_MPATH opt_route.h ROUTETABLES opt_route.h FIB_ALGO opt_route.h RSS opt_rss.h SLIP_IFF_OPTS opt_slip.h TCPDEBUG TCPPCAP opt_global.h SIFTR TCP_BLACKBOX opt_global.h TCP_HHOOK opt_inet.h TCP_OFFLOAD opt_inet.h # Enable code to dispatch TCP offloading TCP_RFC7413 opt_inet.h TCP_RFC7413_MAX_KEYS opt_inet.h TCP_RFC7413_MAX_PSKS opt_inet.h TCP_SIGNATURE opt_ipsec.h VLAN_ARRAY opt_vlan.h XDR XBONEHACK # # SCTP # SCTP opt_sctp.h SCTP_SUPPORT opt_sctp.h SCTP_DEBUG opt_sctp.h # Enable debug printfs SCTP_LOCK_LOGGING opt_sctp.h # Log to KTR lock activity SCTP_MBUF_LOGGING opt_sctp.h # Log to KTR general mbuf aloc/free SCTP_MBCNT_LOGGING opt_sctp.h # Log to KTR mbcnt activity SCTP_PACKET_LOGGING opt_sctp.h # Log to a packet buffer last N packets SCTP_LTRACE_CHUNKS opt_sctp.h # Log to KTR chunks processed SCTP_LTRACE_ERRORS opt_sctp.h # Log to KTR error returns. SCTP_USE_PERCPU_STAT opt_sctp.h # Use per cpu stats. SCTP_MCORE_INPUT opt_sctp.h # Have multiple input threads for input mbufs SCTP_LOCAL_TRACE_BUF opt_sctp.h # Use tracebuffer exported via sysctl SCTP_DETAILED_STR_STATS opt_sctp.h # Use per PR-SCTP policy stream stats # # # # Netgraph(4). Use option NETGRAPH to enable the base netgraph code. # Each netgraph node type can be either be compiled into the kernel # or loaded dynamically. To get the former, include the corresponding # option below. Each type has its own man page, e.g. ng_async(4). NETGRAPH NETGRAPH_DEBUG opt_netgraph.h NETGRAPH_ASYNC opt_netgraph.h NETGRAPH_ATMLLC opt_netgraph.h NETGRAPH_ATM_ATMPIF opt_netgraph.h NETGRAPH_BLUETOOTH opt_netgraph.h NETGRAPH_BLUETOOTH_BT3C opt_netgraph.h NETGRAPH_BLUETOOTH_H4 opt_netgraph.h NETGRAPH_BLUETOOTH_HCI opt_netgraph.h NETGRAPH_BLUETOOTH_L2CAP opt_netgraph.h NETGRAPH_BLUETOOTH_SOCKET opt_netgraph.h NETGRAPH_BLUETOOTH_UBT opt_netgraph.h NETGRAPH_BLUETOOTH_UBTBCMFW opt_netgraph.h NETGRAPH_BPF opt_netgraph.h NETGRAPH_BRIDGE opt_netgraph.h NETGRAPH_CAR opt_netgraph.h NETGRAPH_CHECKSUM opt_netgraph.h NETGRAPH_CISCO opt_netgraph.h NETGRAPH_DEFLATE opt_netgraph.h NETGRAPH_DEVICE opt_netgraph.h NETGRAPH_ECHO opt_netgraph.h NETGRAPH_EIFACE opt_netgraph.h NETGRAPH_ETHER opt_netgraph.h NETGRAPH_ETHER_ECHO opt_netgraph.h NETGRAPH_FEC opt_netgraph.h NETGRAPH_FRAME_RELAY opt_netgraph.h NETGRAPH_GIF opt_netgraph.h NETGRAPH_GIF_DEMUX opt_netgraph.h NETGRAPH_HOLE opt_netgraph.h NETGRAPH_IFACE opt_netgraph.h NETGRAPH_IP_INPUT opt_netgraph.h NETGRAPH_IPFW opt_netgraph.h NETGRAPH_KSOCKET opt_netgraph.h NETGRAPH_L2TP opt_netgraph.h NETGRAPH_LMI opt_netgraph.h NETGRAPH_MPPC_COMPRESSION opt_netgraph.h NETGRAPH_MPPC_ENCRYPTION opt_netgraph.h NETGRAPH_NAT opt_netgraph.h NETGRAPH_NETFLOW opt_netgraph.h NETGRAPH_ONE2MANY opt_netgraph.h NETGRAPH_PATCH opt_netgraph.h NETGRAPH_PIPE opt_netgraph.h NETGRAPH_PPP opt_netgraph.h NETGRAPH_PPPOE opt_netgraph.h NETGRAPH_PPTPGRE opt_netgraph.h NETGRAPH_PRED1 opt_netgraph.h NETGRAPH_RFC1490 opt_netgraph.h NETGRAPH_SOCKET opt_netgraph.h NETGRAPH_SPLIT opt_netgraph.h NETGRAPH_SPPP opt_netgraph.h NETGRAPH_TAG opt_netgraph.h NETGRAPH_TCPMSS opt_netgraph.h NETGRAPH_TEE opt_netgraph.h NETGRAPH_TTY opt_netgraph.h NETGRAPH_UI opt_netgraph.h NETGRAPH_VJC opt_netgraph.h NETGRAPH_VLAN opt_netgraph.h # NgATM options NGATM_ATM opt_netgraph.h NGATM_ATMBASE opt_netgraph.h NGATM_SSCOP opt_netgraph.h NGATM_SSCFU opt_netgraph.h NGATM_UNI opt_netgraph.h NGATM_CCATM opt_netgraph.h # DRM options DRM_DEBUG opt_drm.h TI_SF_BUF_JUMBO opt_ti.h TI_JUMBO_HDRSPLIT opt_ti.h # Misc debug flags. Most of these should probably be replaced with # 'DEBUG', and then let people recompile just the interesting modules # with 'make CC="cc -DDEBUG"'. DEBUG_1284 opt_ppb_1284.h LPT_DEBUG opt_lpt.h PLIP_DEBUG opt_plip.h LOCKF_DEBUG opt_debug_lockf.h SI_DEBUG opt_debug_si.h IFMEDIA_DEBUG opt_ifmedia.h # Fb options FB_DEBUG opt_fb.h FB_INSTALL_CDEV opt_fb.h # ppbus related options PERIPH_1284 opt_ppb_1284.h DONTPROBE_1284 opt_ppb_1284.h # smbus related options ENABLE_ALART opt_intpm.h # These cause changes all over the kernel BLKDEV_IOSIZE opt_global.h BURN_BRIDGES opt_global.h DEBUG opt_global.h DEBUG_LOCKS opt_global.h DEBUG_VFS_LOCKS opt_global.h DFLTPHYS opt_global.h DIAGNOSTIC opt_global.h INVARIANT_SUPPORT opt_global.h INVARIANTS opt_global.h KASSERT_PANIC_OPTIONAL opt_global.h MAXCPU opt_global.h MAXMEMDOM opt_global.h MAXPHYS opt_maxphys.h MCLSHIFT opt_global.h MUTEX_NOINLINE opt_global.h LOCK_PROFILING opt_global.h LOCK_PROFILING_FAST opt_global.h MSIZE opt_global.h REGRESSION opt_global.h RWLOCK_NOINLINE opt_global.h SX_NOINLINE opt_global.h VFS_BIO_DEBUG opt_global.h # These are VM related options VM_KMEM_SIZE opt_vm.h VM_KMEM_SIZE_SCALE opt_vm.h VM_KMEM_SIZE_MAX opt_vm.h VM_NRESERVLEVEL opt_vm.h VM_LEVEL_0_ORDER opt_vm.h NO_SWAPPING opt_vm.h MALLOC_MAKE_FAILURES opt_vm.h MALLOC_PROFILE opt_vm.h MALLOC_DEBUG_MAXZONES opt_vm.h # The MemGuard replacement allocator used for tamper-after-free detection DEBUG_MEMGUARD opt_vm.h # The RedZone malloc(9) protection DEBUG_REDZONE opt_vm.h # Standard SMP options EARLY_AP_STARTUP opt_global.h SMP opt_global.h NUMA opt_global.h # Size of the kernel message buffer MSGBUF_SIZE opt_msgbuf.h # NFS options NFS_MINATTRTIMO opt_nfs.h NFS_MAXATTRTIMO opt_nfs.h NFS_MINDIRATTRTIMO opt_nfs.h NFS_MAXDIRATTRTIMO opt_nfs.h NFS_DEBUG opt_nfs.h # TMPFS options TMPFS_PAGES_MINRESERVED opt_tmpfs.h # Options for uart(4) UART_PPS_ON_CTS opt_uart.h UART_POLL_FREQ opt_uart.h UART_DEV_TOLERANCE_PCT opt_uart.h # options for bus/device framework BUS_DEBUG opt_bus.h # options for USB support USB_DEBUG opt_usb.h USB_HOST_ALIGN opt_usb.h USB_REQ_DEBUG opt_usb.h USB_TEMPLATE opt_usb.h USB_VERBOSE opt_usb.h USB_DMA_SINGLE_ALLOC opt_usb.h USB_EHCI_BIG_ENDIAN_DESC opt_usb.h U3G_DEBUG opt_u3g.h UKBD_DFLT_KEYMAP opt_ukbd.h UPLCOM_INTR_INTERVAL opt_uplcom.h UVSCOM_DEFAULT_OPKTSIZE opt_uvscom.h UVSCOM_INTR_INTERVAL opt_uvscom.h # options for the Realtek rtwn driver RTWN_DEBUG opt_rtwn.h RTWN_WITHOUT_UCODE opt_rtwn.h # Embedded system options INIT_PATH ROOTDEVNAME FDC_DEBUG opt_fdc.h PCFCLOCK_VERBOSE opt_pcfclock.h PCFCLOCK_MAX_RETRIES opt_pcfclock.h KTR opt_global.h KTR_ALQ opt_ktr.h KTR_MASK opt_ktr.h KTR_CPUMASK opt_ktr.h KTR_COMPILE opt_global.h KTR_BOOT_ENTRIES opt_global.h KTR_ENTRIES opt_global.h KTR_VERBOSE opt_ktr.h WITNESS opt_global.h WITNESS_KDB opt_witness.h WITNESS_NO_VNODE opt_witness.h WITNESS_SKIPSPIN opt_witness.h WITNESS_COUNT opt_witness.h OPENSOLARIS_WITNESS opt_global.h EPOCH_TRACE opt_global.h # options for ACPI support ACPI_DEBUG opt_acpi.h ACPI_MAX_TASKS opt_acpi.h ACPI_MAX_THREADS opt_acpi.h DEV_ACPI opt_acpi.h ACPI_EARLY_EPYC_WAR opt_acpi.h # options for IOMMU support IOMMU opt_iommu.h # ISA support DEV_ISA opt_isa.h ISAPNP opt_isa.h # various 'device presence' options. DEV_BPF opt_bpf.h DEV_CARP opt_carp.h DEV_NETMAP opt_global.h DEV_PCI opt_pci.h DEV_PF opt_pf.h DEV_PFLOG opt_pf.h DEV_PFSYNC opt_pf.h DEV_SPLASH opt_splash.h DEV_VLAN opt_vlan.h # ed driver ED_HPP opt_ed.h ED_3C503 opt_ed.h ED_SIC opt_ed.h # bce driver BCE_DEBUG opt_bce.h BCE_NVRAM_WRITE_SUPPORT opt_bce.h SOCKBUF_DEBUG opt_global.h # options for hifn driver HIFN_DEBUG opt_hifn.h HIFN_RNDTEST opt_hifn.h # options for safenet driver SAFE_DEBUG opt_safe.h SAFE_NO_RNG opt_safe.h SAFE_RNDTEST opt_safe.h # syscons/vt options MAXCONS opt_syscons.h SC_ALT_MOUSE_IMAGE opt_syscons.h SC_CUT_SPACES2TABS opt_syscons.h SC_CUT_SEPCHARS opt_syscons.h SC_DEBUG_LEVEL opt_syscons.h SC_DFLT_FONT opt_syscons.h SC_DFLT_TERM opt_syscons.h SC_DISABLE_KDBKEY opt_syscons.h SC_DISABLE_REBOOT opt_syscons.h SC_HISTORY_SIZE opt_syscons.h SC_KERNEL_CONS_ATTR opt_syscons.h SC_KERNEL_CONS_ATTRS opt_syscons.h SC_KERNEL_CONS_REV_ATTR opt_syscons.h SC_MOUSE_CHAR opt_syscons.h SC_NO_CUTPASTE opt_syscons.h SC_NO_FONT_LOADING opt_syscons.h SC_NO_HISTORY opt_syscons.h SC_NO_MODE_CHANGE opt_syscons.h SC_NO_SUSPEND_VTYSWITCH opt_syscons.h SC_NO_SYSMOUSE opt_syscons.h SC_NO_TERM_DUMB opt_syscons.h SC_NO_TERM_SC opt_syscons.h SC_NO_TERM_TEKEN opt_syscons.h SC_NORM_ATTR opt_syscons.h SC_NORM_REV_ATTR opt_syscons.h SC_PIXEL_MODE opt_syscons.h SC_RENDER_DEBUG opt_syscons.h SC_TWOBUTTON_MOUSE opt_syscons.h VT_ALT_TO_ESC_HACK opt_syscons.h VT_FB_MAX_WIDTH opt_syscons.h VT_FB_MAX_HEIGHT opt_syscons.h VT_MAXWINDOWS opt_syscons.h VT_TWOBUTTON_MOUSE opt_syscons.h DEV_SC opt_syscons.h DEV_VT opt_syscons.h # teken terminal emulator options TEKEN_CONS25 opt_teken.h TEKEN_UTF8 opt_teken.h TERMINAL_KERN_ATTR opt_teken.h TERMINAL_NORM_ATTR opt_teken.h # options for printf PRINTF_BUFR_SIZE opt_printf.h BOOT_TAG opt_printf.h BOOT_TAG_SZ opt_printf.h # kbd options KBD_DISABLE_KEYMAP_LOAD opt_kbd.h KBD_INSTALL_CDEV opt_kbd.h KBD_MAXRETRY opt_kbd.h KBD_MAXWAIT opt_kbd.h KBD_RESETDELAY opt_kbd.h KBDIO_DEBUG opt_kbd.h KBDMUX_DFLT_KEYMAP opt_kbdmux.h # options for the Atheros driver ATH_DEBUG opt_ath.h ATH_TXBUF opt_ath.h ATH_RXBUF opt_ath.h ATH_DIAGAPI opt_ath.h ATH_TX99_DIAG opt_ath.h ATH_ENABLE_11N opt_ath.h ATH_ENABLE_DFS opt_ath.h ATH_EEPROM_FIRMWARE opt_ath.h ATH_ENABLE_RADIOTAP_VENDOR_EXT opt_ath.h ATH_DEBUG_ALQ opt_ath.h ATH_KTR_INTR_DEBUG opt_ath.h # options for the Atheros hal # XXX For now, this breaks non-AR9130 chipsets, so only use it # XXX when actually targeting AR9130. AH_SUPPORT_AR9130 opt_ah.h # This is required for AR933x SoC support AH_SUPPORT_AR9330 opt_ah.h AH_SUPPORT_AR9340 opt_ah.h AH_SUPPORT_QCA9530 opt_ah.h AH_SUPPORT_QCA9550 opt_ah.h AH_DEBUG opt_ah.h AH_ASSERT opt_ah.h AH_DEBUG_ALQ opt_ah.h AH_REGOPS_FUNC opt_ah.h AH_WRITE_REGDOMAIN opt_ah.h AH_DEBUG_COUNTRY opt_ah.h AH_WRITE_EEPROM opt_ah.h AH_PRIVATE_DIAG opt_ah.h AH_NEED_DESC_SWAP opt_ah.h AH_USE_INIPDGAIN opt_ah.h AH_MAXCHAN opt_ah.h AH_RXCFG_SDMAMW_4BYTES opt_ah.h AH_INTERRUPT_DEBUGGING opt_ah.h # AR5416 and later interrupt mitigation # XXX do not use this for AR9130 AH_AR5416_INTERRUPT_MITIGATION opt_ah.h # options for the Altera mSGDMA driver (altera_msgdma) ALTERA_MSGDMA_DESC_STD opt_altera_msgdma.h ALTERA_MSGDMA_DESC_EXT opt_altera_msgdma.h ALTERA_MSGDMA_DESC_PF_STD opt_altera_msgdma.h ALTERA_MSGDMA_DESC_PF_EXT opt_altera_msgdma.h # options for the Broadcom BCM43xx driver (bwi) BWI_DEBUG opt_bwi.h BWI_DEBUG_VERBOSE opt_bwi.h # options for the Brodacom BCM43xx driver (bwn) BWN_DEBUG opt_bwn.h BWN_GPL_PHY opt_bwn.h BWN_USE_SIBA opt_bwn.h # Options for the SIBA driver SIBA_DEBUG opt_siba.h # options for the Marvell 8335 wireless driver MALO_DEBUG opt_malo.h MALO_TXBUF opt_malo.h MALO_RXBUF opt_malo.h # options for the Marvell wireless driver MWL_DEBUG opt_mwl.h MWL_TXBUF opt_mwl.h MWL_RXBUF opt_mwl.h MWL_DIAGAPI opt_mwl.h MWL_AGGR_SIZE opt_mwl.h MWL_TX_NODROP opt_mwl.h # Options for the Marvell NETA driver MVNETA_MULTIQUEUE opt_mvneta.h MVNETA_KTR opt_mvneta.h # Options for the Intel 802.11ac wireless driver IWM_DEBUG opt_iwm.h # Options for the Intel 802.11n wireless driver IWN_DEBUG opt_iwn.h # Options for the Intel 3945ABG wireless driver WPI_DEBUG opt_wpi.h # dcons options DCONS_BUF_SIZE opt_dcons.h DCONS_POLL_HZ opt_dcons.h DCONS_FORCE_CONSOLE opt_dcons.h DCONS_FORCE_GDB opt_dcons.h # HWPMC options HWPMC_DEBUG opt_global.h HWPMC_HOOKS HWPMC_MIPS_BACKTRACE opt_hwpmc_hooks.h # 802.11 support layer IEEE80211_DEBUG opt_wlan.h IEEE80211_DEBUG_REFCNT opt_wlan.h IEEE80211_SUPPORT_MESH opt_wlan.h IEEE80211_SUPPORT_SUPERG opt_wlan.h IEEE80211_SUPPORT_TDMA opt_wlan.h IEEE80211_ALQ opt_wlan.h IEEE80211_DFS_DEBUG opt_wlan.h # 802.11 TDMA support TDMA_SLOTLEN_DEFAULT opt_tdma.h TDMA_SLOTCNT_DEFAULT opt_tdma.h TDMA_BINTVAL_DEFAULT opt_tdma.h TDMA_TXRATE_11B_DEFAULT opt_tdma.h TDMA_TXRATE_11G_DEFAULT opt_tdma.h TDMA_TXRATE_11A_DEFAULT opt_tdma.h TDMA_TXRATE_TURBO_DEFAULT opt_tdma.h TDMA_TXRATE_HALF_DEFAULT opt_tdma.h TDMA_TXRATE_QUARTER_DEFAULT opt_tdma.h TDMA_TXRATE_11NA_DEFAULT opt_tdma.h TDMA_TXRATE_11NG_DEFAULT opt_tdma.h # VideoMode PICKMODE_DEBUG opt_videomode.h # Network stack virtualization options VIMAGE opt_global.h VNET_DEBUG opt_global.h # Common Flash Interface (CFI) options CFI_SUPPORT_STRATAFLASH opt_cfi.h CFI_ARMEDANDDANGEROUS opt_cfi.h CFI_HARDWAREBYTESWAP opt_cfi.h # Sound options SND_DEBUG opt_snd.h SND_DIAGNOSTIC opt_snd.h SND_FEEDER_MULTIFORMAT opt_snd.h SND_FEEDER_FULL_MULTIFORMAT opt_snd.h SND_FEEDER_RATE_HP opt_snd.h SND_PCM_64 opt_snd.h SND_OLDSTEREO opt_snd.h X86BIOS # Flattened device tree options FDT opt_platform.h FDT_DTB_STATIC opt_platform.h # OFED Infiniband stack OFED opt_ofed.h OFED_DEBUG_INIT opt_ofed.h SDP opt_ofed.h SDP_DEBUG opt_ofed.h IPOIB opt_ofed.h IPOIB_DEBUG opt_ofed.h IPOIB_CM opt_ofed.h # Resource Accounting RACCT opt_global.h RACCT_DEFAULT_TO_DISABLED opt_global.h # Resource Limits RCTL opt_global.h # Random number generator(s) # Alternative RNG algorithm. RANDOM_FENESTRASX opt_global.h # With this, no entropy processor is loaded, but the entropy # harvesting infrastructure is present. This means an entropy # processor may be loaded as a module. RANDOM_LOADABLE opt_global.h # This turns on high-rate and potentially expensive harvesting in # the uma slab allocator. RANDOM_ENABLE_UMA opt_global.h RANDOM_ENABLE_ETHER opt_global.h # This options turns TPM into entropy source. TPM_HARVEST opt_tpm.h # BHND(4) driver BHND_LOGLEVEL opt_global.h # GPIO and child devices GPIO_SPI_DEBUG opt_gpio.h # SPI devices SPIGEN_LEGACY_CDEVNAME opt_spi.h # etherswitch(4) driver RTL8366_SOFT_RESET opt_etherswitch.h # evdev protocol support EVDEV_SUPPORT opt_evdev.h EVDEV_DEBUG opt_evdev.h UINPUT_DEBUG opt_evdev.h # Hyper-V network driver HN_DEBUG opt_hn.h # CAM-based MMC stack MMCCAM # Encrypted kernel crash dumps EKCD opt_ekcd.h # NVME options NVME_USE_NVD opt_nvme.h NVME_2X_RESET opt_nvme.h # amdsbwd options AMDSBWD_DEBUG opt_amdsbwd.h # gcov support GCOV opt_global.h LINDEBUGFS # options for HID support HID_DEBUG opt_hid.h IICHID_DEBUG opt_hid.h IICHID_SAMPLING opt_hid.h HKBD_DFLT_KEYMAP opt_hkbd.h HIDRAW_MAKE_UHID_ALIAS opt_hid.h # kenv options # The early kernel environment (loader environment, config(8)-provided static) # is typically cleared after the dynamic environment comes up to ensure that # we're not inadvertently holding on to 'secret' values in these stale envs. # This option is insecure except in controlled environments where the static # environment's contents are known to be safe. PRESERVE_EARLY_KENV opt_global.h diff --git a/sys/dev/twa/tw_cl.h b/sys/dev/twa/tw_cl.h deleted file mode 100644 index 8f047329c318..000000000000 --- a/sys/dev/twa/tw_cl.h +++ /dev/null @@ -1,324 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_CL_H - -#define TW_CL_H - -/* - * Common Layer internal macros, structures and functions. - */ - -#define TW_CLI_SECTOR_SIZE 0x200 -#define TW_CLI_REQUEST_TIMEOUT_PERIOD 60 /* seconds */ -#define TW_CLI_RESET_TIMEOUT_PERIOD 60 /* seconds */ -#define TW_CLI_MAX_RESET_ATTEMPTS 2 - -/* Possible values of ctlr->ioctl_lock.lock. */ -#define TW_CLI_LOCK_FREE 0x0 /* lock is free */ -#define TW_CLI_LOCK_HELD 0x1 /* lock is held */ - -/* Possible values of req->state. */ -#define TW_CLI_REQ_STATE_INIT 0x0 /* being initialized */ -#define TW_CLI_REQ_STATE_BUSY 0x1 /* submitted to controller */ -#define TW_CLI_REQ_STATE_PENDING 0x2 /* in pending queue */ -#define TW_CLI_REQ_STATE_COMPLETE 0x3 /* completed by controller */ - -/* Possible values of req->flags. */ -#define TW_CLI_REQ_FLAGS_7K (1<<0) /* 7000 cmd pkt */ -#define TW_CLI_REQ_FLAGS_9K (1<<1) /* 9000 cmd pkt */ -#define TW_CLI_REQ_FLAGS_INTERNAL (1<<2) /* internal request */ -#define TW_CLI_REQ_FLAGS_PASSTHRU (1<<3) /* passthru request */ -#define TW_CLI_REQ_FLAGS_EXTERNAL (1<<4) /* external request */ - -#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE -/* Register offsets in PCI config space. */ -#define TW_CLI_PCI_CONFIG_COMMAND_OFFSET 0x4 /* cmd register offset */ -#define TW_CLI_PCI_CONFIG_STATUS_OFFSET 0x6 /* status register offset */ -#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ - -#ifdef TW_OSL_DEBUG -struct tw_cli_q_stats { - TW_UINT32 cur_len;/* current # of entries in q */ - TW_UINT32 max_len; /* max # of entries in q, ever reached */ -}; -#endif /* TW_OSL_DEBUG */ - -/* Queues of CL internal request context packets. */ -#define TW_CLI_FREE_Q 0 /* free q */ -#define TW_CLI_BUSY_Q 1 /* q of reqs submitted to fw */ -#define TW_CLI_PENDING_Q 2 /* q of reqs deferred due to 'q full' */ -#define TW_CLI_COMPLETE_Q 3 /* q of reqs completed by fw */ -#define TW_CLI_RESET_Q 4 /* q of reqs reset by timeout */ -#define TW_CLI_Q_COUNT 5 /* total number of queues */ - -/* CL's internal request context. */ -struct tw_cli_req_context { - struct tw_cl_req_handle *req_handle;/* handle to track requests between - OSL & CL */ - struct tw_cli_ctlr_context *ctlr; /* ptr to CL's controller context */ - struct tw_cl_command_packet *cmd_pkt;/* ptr to ctlr cmd pkt */ - TW_UINT64 cmd_pkt_phys; /* cmd pkt physical address */ - TW_VOID *data; /* ptr to data being passed to fw */ - TW_UINT32 length; /* length of data being passed to fw */ - TW_UINT64 data_phys; /* physical address of data */ - - TW_UINT32 state; /* request state */ - TW_UINT32 flags; /* request flags */ - - TW_UINT32 error_code; /* error encountered before submission - of request to fw, if any */ - - TW_VOID *orig_req; /* ptr to original request for use - during callback */ - TW_VOID (*tw_cli_callback)(struct tw_cli_req_context *req); - /* CL internal callback */ - TW_UINT32 request_id; /* request id for tracking with fw */ - struct tw_cl_link link; /* to link this request in a list */ -}; - -/* CL's internal controller context. */ -struct tw_cli_ctlr_context { - struct tw_cl_ctlr_handle *ctlr_handle; /* handle to track ctlr between - OSL & CL. */ - struct tw_cli_req_context *req_ctxt_buf;/* pointer to the array of CL's - internal request context pkts */ - struct tw_cl_command_packet *cmd_pkt_buf;/* ptr to array of cmd pkts */ - - TW_UINT64 cmd_pkt_phys; /* phys addr of cmd_pkt_buf */ - - TW_UINT32 device_id; /* controller device id */ - TW_UINT32 arch_id; /* controller architecture id */ - TW_UINT8 active; /* Initialization done, and controller is active. */ - TW_UINT8 interrupts_enabled; /* Interrupts on controller enabled. */ - TW_UINT8 internal_req_busy; /* Data buffer for internal requests in use. */ - TW_UINT8 get_more_aens; /* More AEN's need to be retrieved. */ - TW_UINT8 reset_needed; /* Controller needs a soft reset. */ - TW_UINT8 reset_in_progress; /* Controller is being reset. */ - TW_UINT8 reset_phase1_in_progress; /* In 'phase 1' of reset. */ - TW_UINT32 flags; /* controller settings */ - TW_UINT32 sg_size_factor; /* SG element size should be a - multiple of this */ - - /* Request queues and arrays. */ - struct tw_cl_link req_q_head[TW_CLI_Q_COUNT]; - - TW_UINT8 *internal_req_data;/* internal req data buf */ - TW_UINT64 internal_req_data_phys;/* phys addr of internal - req data buf */ - TW_UINT32 max_simult_reqs; /* max simultaneous requests - supported */ - TW_UINT32 max_aens_supported;/* max AEN's supported */ - /* AEN handler fields. */ - struct tw_cl_event_packet *aen_queue; /* circular queue of AENs from - firmware/CL/OSL */ - TW_UINT32 aen_head; /* AEN queue head */ - TW_UINT32 aen_tail; /* AEN queue tail */ - TW_UINT32 aen_cur_seq_id; /* index of the last event+1 */ - TW_UINT32 aen_q_overflow; /* indicates if unretrieved - events were overwritten */ - TW_UINT32 aen_q_wrapped; /* indicates if AEN queue ever - wrapped */ - - TW_UINT16 working_srl; /* driver & firmware negotiated - srl */ - TW_UINT16 working_branch; /* branch # of the firmware - that the driver is compatible with */ - TW_UINT16 working_build; /* build # of the firmware - that the driver is compatible with */ - TW_UINT16 fw_on_ctlr_srl; /* srl of running firmware */ - TW_UINT16 fw_on_ctlr_branch;/* branch # of running - firmware */ - TW_UINT16 fw_on_ctlr_build;/* build # of running - firmware */ - TW_UINT32 operating_mode; /* base mode/current mode */ - - TW_INT32 host_intr_pending;/* host intr processing - needed */ - TW_INT32 attn_intr_pending;/* attn intr processing - needed */ - TW_INT32 cmd_intr_pending;/* cmd intr processing - needed */ - TW_INT32 resp_intr_pending;/* resp intr processing - needed */ - - TW_LOCK_HANDLE gen_lock_handle;/* general purpose lock */ - TW_LOCK_HANDLE *gen_lock;/* ptr to general purpose lock */ - TW_LOCK_HANDLE io_lock_handle; /* lock held during cmd - submission */ - TW_LOCK_HANDLE *io_lock;/* ptr to lock held during cmd - submission */ - -#ifdef TW_OSL_CAN_SLEEP - TW_SLEEP_HANDLE sleep_handle; /* handle to co-ordinate sleeps - & wakeups */ -#endif /* TW_OSL_CAN_SLEEP */ - - struct { - TW_UINT32 lock; /* lock state */ - TW_TIME timeout; /* time at which the lock will - become available, even if not - explicitly released */ - } ioctl_lock; /* lock for use by user applications, for - synchronization between ioctl calls */ -#ifdef TW_OSL_DEBUG - struct tw_cli_q_stats q_stats[TW_CLI_Q_COUNT];/* queue statistics */ -#endif /* TW_OSL_DEBUG */ -}; - -/* - * Queue primitives - */ - -#ifdef TW_OSL_DEBUG - -#define TW_CLI_Q_INIT(ctlr, q_type) do { \ - (ctlr)->q_stats[q_type].cur_len = 0; \ - (ctlr)->q_stats[q_type].max_len = 0; \ -} while (0) - -#define TW_CLI_Q_INSERT(ctlr, q_type) do { \ - struct tw_cli_q_stats *q_stats = &((ctlr)->q_stats[q_type]); \ - \ - if (++(q_stats->cur_len) > q_stats->max_len) \ - q_stats->max_len = q_stats->cur_len; \ -} while (0) - -#define TW_CLI_Q_REMOVE(ctlr, q_type) \ - (ctlr)->q_stats[q_type].cur_len-- - -#else /* TW_OSL_DEBUG */ - -#define TW_CLI_Q_INIT(ctlr, q_index) -#define TW_CLI_Q_INSERT(ctlr, q_index) -#define TW_CLI_Q_REMOVE(ctlr, q_index) - -#endif /* TW_OSL_DEBUG */ - -/* Initialize a queue of requests. */ -static __inline TW_VOID -tw_cli_req_q_init(struct tw_cli_ctlr_context *ctlr, TW_UINT8 q_type) -{ - TW_CL_Q_INIT(&(ctlr->req_q_head[q_type])); - TW_CLI_Q_INIT(ctlr, q_type); -} - -/* Insert the given request at the head of the given queue (q_type). */ -static __inline TW_VOID -tw_cli_req_q_insert_head(struct tw_cli_req_context *req, TW_UINT8 q_type) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - - tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); - TW_CL_Q_INSERT_HEAD(&(ctlr->req_q_head[q_type]), &(req->link)); - TW_CLI_Q_INSERT(ctlr, q_type); - tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); -} - -/* Insert the given request at the tail of the given queue (q_type). */ -static __inline TW_VOID -tw_cli_req_q_insert_tail(struct tw_cli_req_context *req, TW_UINT8 q_type) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - - tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); - TW_CL_Q_INSERT_TAIL(&(ctlr->req_q_head[q_type]), &(req->link)); - TW_CLI_Q_INSERT(ctlr, q_type); - tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); -} - -/* Remove and return the request at the head of the given queue (q_type). */ -static __inline struct tw_cli_req_context * -tw_cli_req_q_remove_head(struct tw_cli_ctlr_context *ctlr, TW_UINT8 q_type) -{ - struct tw_cli_req_context *req = TW_CL_NULL; - struct tw_cl_link *link; - - tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); - if ((link = TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[q_type]))) != - TW_CL_NULL) { - req = TW_CL_STRUCT_HEAD(link, - struct tw_cli_req_context, link); - TW_CL_Q_REMOVE_ITEM(&(ctlr->req_q_head[q_type]), &(req->link)); - TW_CLI_Q_REMOVE(ctlr, q_type); - } - tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); - return(req); -} - -/* Remove the given request from the given queue (q_type). */ -static __inline TW_VOID -tw_cli_req_q_remove_item(struct tw_cli_req_context *req, TW_UINT8 q_type) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - - tw_osl_get_lock(ctlr->ctlr_handle, ctlr->gen_lock); - TW_CL_Q_REMOVE_ITEM(&(ctlr->req_q_head[q_type]), &(req->link)); - TW_CLI_Q_REMOVE(ctlr, q_type); - tw_osl_free_lock(ctlr->ctlr_handle, ctlr->gen_lock); -} - -/* Create an event packet for an event/error posted by the controller. */ -#define tw_cli_create_ctlr_event(ctlr, event_src, cmd_hdr) do { \ - TW_UINT8 severity = \ - GET_SEVERITY((cmd_hdr)->status_block.res__severity); \ - \ - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_TRUE, event_src, \ - (cmd_hdr)->status_block.error, \ - severity, \ - tw_cli_severity_string_table[severity], \ - (cmd_hdr)->err_specific_desc + \ - tw_osl_strlen((cmd_hdr)->err_specific_desc) + 1, \ - (cmd_hdr)->err_specific_desc); \ - /* Print 18 bytes of sense information. */ \ - tw_cli_dbg_printf(2, ctlr->ctlr_handle, \ - tw_osl_cur_func(), \ - "sense info: %x %x %x %x %x %x %x %x %x " \ - "%x %x %x %x %x %x %x %x %x", \ - (cmd_hdr)->sense_data[0], (cmd_hdr)->sense_data[1], \ - (cmd_hdr)->sense_data[2], (cmd_hdr)->sense_data[3], \ - (cmd_hdr)->sense_data[4], (cmd_hdr)->sense_data[5], \ - (cmd_hdr)->sense_data[6], (cmd_hdr)->sense_data[7], \ - (cmd_hdr)->sense_data[8], (cmd_hdr)->sense_data[9], \ - (cmd_hdr)->sense_data[10], (cmd_hdr)->sense_data[11], \ - (cmd_hdr)->sense_data[12], (cmd_hdr)->sense_data[13], \ - (cmd_hdr)->sense_data[14], (cmd_hdr)->sense_data[15], \ - (cmd_hdr)->sense_data[16], (cmd_hdr)->sense_data[17]); \ -} while (0) - -#endif /* TW_CL_H */ diff --git a/sys/dev/twa/tw_cl_externs.h b/sys/dev/twa/tw_cl_externs.h deleted file mode 100644 index 30ad4a297e06..000000000000 --- a/sys/dev/twa/tw_cl_externs.h +++ /dev/null @@ -1,191 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_CL_EXTERNS_H - -#define TW_CL_EXTERNS_H - -/* - * Data structures and functions global to the Common Layer. - */ - -extern TW_INT8 tw_cli_fw_img[]; -extern TW_INT32 tw_cli_fw_img_size; -extern TW_INT8 *tw_cli_severity_string_table[]; - -/* Do controller initialization. */ -extern TW_INT32 tw_cli_start_ctlr(struct tw_cli_ctlr_context *ctlr); - -/* Establish a logical connection with the firmware on the controller. */ -extern TW_INT32 tw_cli_init_connection(struct tw_cli_ctlr_context *ctlr, - TW_UINT16 message_credits, TW_UINT32 set_features, - TW_UINT16 current_fw_srl, TW_UINT16 current_fw_arch_id, - TW_UINT16 current_fw_branch, TW_UINT16 current_fw_build, - TW_UINT16 *fw_on_ctlr_srl, TW_UINT16 *fw_on_ctlr_arch_id, - TW_UINT16 *fw_on_ctlr_branch, TW_UINT16 *fw_on_ctlr_build, - TW_UINT32 *init_connect_result); - -/* Functions in tw_cl_io.c */ - -/* Submit a command packet to the firmware on the controller. */ -extern TW_INT32 tw_cli_submit_cmd(struct tw_cli_req_context *req); - -/* Get a firmware parameter. */ -extern TW_INT32 tw_cli_get_param(struct tw_cli_ctlr_context *ctlr, - TW_INT32 table_id, TW_INT32 parameter_id, TW_VOID *param_data, - TW_INT32 size, TW_VOID (* callback)(struct tw_cli_req_context *req)); - -/* Set a firmware parameter. */ -extern TW_INT32 tw_cli_set_param(struct tw_cli_ctlr_context *ctlr, - TW_INT32 table_id, TW_INT32 param_id, TW_INT32 param_size, - TW_VOID *data, TW_VOID (* callback)(struct tw_cli_req_context *req)); - -/* Submit a command to the firmware and poll for completion. */ -extern TW_INT32 tw_cli_submit_and_poll_request(struct tw_cli_req_context *req, - TW_UINT32 timeout); - -/* Soft reset the controller. */ -extern TW_INT32 tw_cli_soft_reset(struct tw_cli_ctlr_context *ctlr); -extern int twa_setup_intr(struct twa_softc *sc); -extern int twa_teardown_intr(struct twa_softc *sc); - -/* Send down a SCSI command to the firmware (usually, an internal Req Sense. */ -extern TW_INT32 tw_cli_send_scsi_cmd(struct tw_cli_req_context *req, - TW_INT32 cmd); - -/* Get an AEN from the firmware (by sending down a Req Sense). */ -extern TW_INT32 tw_cli_get_aen(struct tw_cli_ctlr_context *ctlr); - -/* Fill in the scatter/gather list. */ -extern TW_VOID tw_cli_fill_sg_list(struct tw_cli_ctlr_context *ctlr, - TW_VOID *sgl_src, TW_VOID *sgl_dest, TW_INT32 num_sgl_entries); - -/* Functions in tw_cl_intr.c */ - -/* Process a host interrupt. */ -extern TW_VOID tw_cli_process_host_intr(struct tw_cli_ctlr_context *ctlr); - -/* Process an attention interrupt. */ -extern TW_VOID tw_cli_process_attn_intr(struct tw_cli_ctlr_context *ctlr); - -/* Process a command interrupt. */ -extern TW_VOID tw_cli_process_cmd_intr(struct tw_cli_ctlr_context *ctlr); - -/* Process a response interrupt from the controller. */ -extern TW_INT32 tw_cli_process_resp_intr(struct tw_cli_ctlr_context *ctlr); - -/* Submit any requests in the pending queue to the firmware. */ -extern TW_INT32 tw_cli_submit_pending_queue(struct tw_cli_ctlr_context *ctlr); - -/* Process all requests in the complete queue. */ -extern TW_VOID tw_cli_process_complete_queue(struct tw_cli_ctlr_context *ctlr); - -/* CL internal callback for SCSI/fw passthru requests. */ -extern TW_VOID tw_cli_complete_io(struct tw_cli_req_context *req); - -/* Completion routine for SCSI requests. */ -extern TW_VOID tw_cli_scsi_complete(struct tw_cli_req_context *req); - -/* Callback for get/set param requests. */ -extern TW_VOID tw_cli_param_callback(struct tw_cli_req_context *req); - -/* Callback for Req Sense commands to get AEN's. */ -extern TW_VOID tw_cli_aen_callback(struct tw_cli_req_context *req); - -/* Decide what to do with a retrieved AEN. */ -extern TW_UINT16 tw_cli_manage_aen(struct tw_cli_ctlr_context *ctlr, - struct tw_cli_req_context *req); - -/* Enable controller interrupts. */ -extern TW_VOID - tw_cli_enable_interrupts(struct tw_cli_ctlr_context *ctlr_handle); - -/* Disable controller interrupts. */ -extern TW_VOID - tw_cli_disable_interrupts(struct tw_cli_ctlr_context *ctlr_handle); - -/* Functions in tw_cl_misc.c */ - -/* Print if dbg_level is appropriate (by calling OS Layer). */ -extern TW_VOID tw_cli_dbg_printf(TW_UINT8 dbg_level, - struct tw_cl_ctlr_handle *ctlr_handle, const TW_INT8 *cur_func, - TW_INT8 *fmt, ...); - -/* Describe meaning of each set bit in the given register. */ -extern TW_INT8 *tw_cli_describe_bits(TW_UINT32 reg, TW_INT8 *str); - -/* Complete all requests in the complete queue with a RESET status. */ -extern TW_VOID tw_cli_drain_complete_queue(struct tw_cli_ctlr_context *ctlr); - -/* Complete all requests in the busy queue with a RESET status. */ -extern TW_VOID tw_cli_drain_busy_queue(struct tw_cli_ctlr_context *ctlr); - -/* Complete all requests in the pending queue with a RESET status. */ -extern TW_VOID tw_cli_drain_pending_queue(struct tw_cli_ctlr_context *ctlr); - -/* Drain the controller response queue. */ -extern TW_INT32 tw_cli_drain_response_queue(struct tw_cli_ctlr_context *ctlr); - -/* Find a particular response in the controller response queue. */ -extern TW_INT32 tw_cli_find_response(struct tw_cli_ctlr_context *ctlr, - TW_INT32 req_id); - -/* Drain the controller AEN queue. */ -extern TW_INT32 tw_cli_drain_aen_queue(struct tw_cli_ctlr_context *ctlr); - -/* Determine if a given AEN has been posted by the firmware. */ -extern TW_INT32 tw_cli_find_aen(struct tw_cli_ctlr_context *ctlr, - TW_UINT16 aen_code); - -/* Poll for a given status to show up in the firmware status register. */ -extern TW_INT32 tw_cli_poll_status(struct tw_cli_ctlr_context *ctlr, - TW_UINT32 status, TW_UINT32 timeout); - -/* Get a free CL internal request context packet. */ -extern struct tw_cli_req_context * - tw_cli_get_request(struct tw_cli_ctlr_context *ctlr - ); - -/* Notify OSL of controller info (fw/BIOS versions, etc.). */ -extern TW_VOID tw_cli_notify_ctlr_info(struct tw_cli_ctlr_context *ctlr); - -/* Make sure that the firmware status register reports a proper status. */ -extern TW_INT32 tw_cli_check_ctlr_state(struct tw_cli_ctlr_context *ctlr, - TW_UINT32 status_reg); - -#endif /* TW_CL_EXTERNS_H */ diff --git a/sys/dev/twa/tw_cl_fwif.h b/sys/dev/twa/tw_cl_fwif.h deleted file mode 100644 index cade2249d820..000000000000 --- a/sys/dev/twa/tw_cl_fwif.h +++ /dev/null @@ -1,418 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_CL_FWIF_H - -#define TW_CL_FWIF_H - -/* - * Macros and data structures for interfacing with the firmware. - */ - -/* Register offsets from base address. */ -#define TWA_CONTROL_REGISTER_OFFSET 0x0 -#define TWA_STATUS_REGISTER_OFFSET 0x4 -#define TWA_COMMAND_QUEUE_OFFSET 0x8 -#define TWA_RESPONSE_QUEUE_OFFSET 0xC -#define TWA_COMMAND_QUEUE_OFFSET_LOW 0x20 -#define TWA_COMMAND_QUEUE_OFFSET_HIGH 0x24 -#define TWA_LARGE_RESPONSE_QUEUE_OFFSET 0x30 - -/* Control register bit definitions. */ -#define TWA_CONTROL_ISSUE_HOST_INTERRUPT 0x00000020 -#define TWA_CONTROL_DISABLE_INTERRUPTS 0x00000040 -#define TWA_CONTROL_ENABLE_INTERRUPTS 0x00000080 -#define TWA_CONTROL_ISSUE_SOFT_RESET 0x00000100 -#define TWA_CONTROL_UNMASK_RESPONSE_INTERRUPT 0x00004000 -#define TWA_CONTROL_UNMASK_COMMAND_INTERRUPT 0x00008000 -#define TWA_CONTROL_MASK_RESPONSE_INTERRUPT 0x00010000 -#define TWA_CONTROL_MASK_COMMAND_INTERRUPT 0x00020000 -#define TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT 0x00040000 -#define TWA_CONTROL_CLEAR_HOST_INTERRUPT 0x00080000 -#define TWA_CONTROL_CLEAR_PCI_ABORT 0x00100000 -#define TWA_CONTROL_CLEAR_QUEUE_ERROR 0x00400000 -#define TWA_CONTROL_CLEAR_PARITY_ERROR 0x00800000 - -/* Status register bit definitions. */ -#define TWA_STATUS_ROM_BIOS_IN_SBUF 0x00000002 -#define TWA_STATUS_COMMAND_QUEUE_EMPTY 0x00001000 -#define TWA_STATUS_MICROCONTROLLER_READY 0x00002000 -#define TWA_STATUS_RESPONSE_QUEUE_EMPTY 0x00004000 -#define TWA_STATUS_COMMAND_QUEUE_FULL 0x00008000 -#define TWA_STATUS_RESPONSE_INTERRUPT 0x00010000 -#define TWA_STATUS_COMMAND_INTERRUPT 0x00020000 -#define TWA_STATUS_ATTENTION_INTERRUPT 0x00040000 -#define TWA_STATUS_HOST_INTERRUPT 0x00080000 -#define TWA_STATUS_PCI_ABORT_INTERRUPT 0x00100000 -#define TWA_STATUS_MICROCONTROLLER_ERROR 0x00200000 -#define TWA_STATUS_QUEUE_ERROR_INTERRUPT 0x00400000 -#define TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT 0x00800000 -#define TWA_STATUS_MINOR_VERSION_MASK 0x0F000000 -#define TWA_STATUS_MAJOR_VERSION_MASK 0xF0000000 - -#define TWA_STATUS_UNEXPECTED_BITS 0x00D00000 - -/* PCI related defines. */ -#define TWA_IO_CONFIG_REG 0x10 - -#define TWA_PCI_CONFIG_CLEAR_PARITY_ERROR 0xc100 -#define TWA_PCI_CONFIG_CLEAR_PCI_ABORT 0x2000 - -#define TWA_RESET_PHASE1_NOTIFICATION_RESPONSE 0xFFFF -#define TWA_RESET_PHASE1_WAIT_TIME_MS 500 - -/* Command packet opcodes. */ -#define TWA_FW_CMD_NOP 0x00 -#define TWA_FW_CMD_INIT_CONNECTION 0x01 -#define TWA_FW_CMD_READ 0x02 -#define TWA_FW_CMD_WRITE 0x03 -#define TWA_FW_CMD_READVERIFY 0x04 -#define TWA_FW_CMD_VERIFY 0x05 -#define TWA_FW_CMD_ZEROUNIT 0x08 -#define TWA_FW_CMD_REPLACEUNIT 0x09 -#define TWA_FW_CMD_HOTSWAP 0x0A -#define TWA_FW_CMD_SELFTESTS 0x0B -#define TWA_FW_CMD_SYNC_PARAM 0x0C -#define TWA_FW_CMD_REORDER_UNITS 0x0D - -#define TWA_FW_CMD_EXECUTE_SCSI 0x10 -#define TWA_FW_CMD_ATA_PASSTHROUGH 0x11 -#define TWA_FW_CMD_GET_PARAM 0x12 -#define TWA_FW_CMD_SET_PARAM 0x13 -#define TWA_FW_CMD_CREATEUNIT 0x14 -#define TWA_FW_CMD_DELETEUNIT 0x15 -#define TWA_FW_CMD_DOWNLOAD_FIRMWARE 0x16 -#define TWA_FW_CMD_REBUILDUNIT 0x17 -#define TWA_FW_CMD_POWER_MANAGEMENT 0x18 - -#define TWA_FW_CMD_REMOTE_PRINT 0x1B -#define TWA_FW_CMD_HARD_RESET_FIRMWARE 0x1C -#define TWA_FW_CMD_DEBUG 0x1D - -#define TWA_FW_CMD_DIAGNOSTICS 0x1F - -/* Misc defines. */ -#define TWA_SHUTDOWN_MESSAGE_CREDITS 0x001 -#define TWA_64BIT_SG_ADDRESSES 0x00000001 -#define TWA_EXTENDED_INIT_CONNECT 0x00000002 -#define TWA_BASE_MODE 1 -#define TWA_BASE_FW_SRL 24 -#define TWA_BASE_FW_BRANCH 0 -#define TWA_BASE_FW_BUILD 1 -#define TWA_CURRENT_FW_SRL 41 -#define TWA_CURRENT_FW_BRANCH_9K 4 -#define TWA_CURRENT_FW_BUILD_9K 8 -#define TWA_CURRENT_FW_BRANCH_9K_X 8 -#define TWA_CURRENT_FW_BUILD_9K_X 4 -#define TWA_MULTI_LUN_FW_SRL 28 -#define TWA_ARCH_ID_9K 0x5 /* 9000 PCI controllers */ -#define TWA_ARCH_ID_9K_X 0x6 /* 9000 PCI-X controllers */ -#define TWA_CTLR_FW_SAME_OR_NEWER 0x00000001 -#define TWA_CTLR_FW_COMPATIBLE 0x00000002 -#define TWA_SENSE_DATA_LENGTH 18 - -#define TWA_ARCH_ID(device_id) \ - (((device_id) == TW_CL_DEVICE_ID_9K) ? TWA_ARCH_ID_9K : \ - TWA_ARCH_ID_9K_X) -#define TWA_CURRENT_FW_BRANCH(arch_id) \ - (((arch_id) == TWA_ARCH_ID_9K) ? TWA_CURRENT_FW_BRANCH_9K : \ - TWA_CURRENT_FW_BRANCH_9K_X) -#define TWA_CURRENT_FW_BUILD(arch_id) \ - (((arch_id) == TWA_ARCH_ID_9K) ? TWA_CURRENT_FW_BUILD_9K : \ - TWA_CURRENT_FW_BUILD_9K_X) - -/* - * All SG addresses and DMA'able memory allocated by the OSL should be - * TWA_ALIGNMENT bytes aligned, and have a size that is a multiple of - * TWA_SG_ELEMENT_SIZE_FACTOR. - */ -#define TWA_ALIGNMENT(device_id) 0x4 -#define TWA_SG_ELEMENT_SIZE_FACTOR(device_id) \ - (((device_id) == TW_CL_DEVICE_ID_9K) ? 512 : 4) - -/* - * Some errors of interest (in cmd_hdr->status_block.error) when a command - * is completed by the firmware with a bad status. - */ -#define TWA_ERROR_LOGICAL_UNIT_NOT_SUPPORTED 0x010a -#define TWA_ERROR_UNIT_OFFLINE 0x0128 -#define TWA_ERROR_MORE_DATA 0x0231 - -/* AEN codes of interest. */ -#define TWA_AEN_QUEUE_EMPTY 0x00 -#define TWA_AEN_SOFT_RESET 0x01 -#define TWA_AEN_SYNC_TIME_WITH_HOST 0x31 - -/* Table #'s and id's of parameters of interest in firmware's param table. */ -#define TWA_PARAM_VERSION_TABLE 0x0402 -#define TWA_PARAM_VERSION_FW 3 /* firmware version [16] */ -#define TWA_PARAM_VERSION_BIOS 4 /* BIOSs version [16] */ -#define TWA_PARAM_CTLR_MODEL 8 /* Controller model [16] */ - -#define TWA_PARAM_CONTROLLER_TABLE 0x0403 -#define TWA_PARAM_CONTROLLER_PORT_COUNT 3 /* number of ports [1] */ - -#define TWA_PARAM_TIME_TABLE 0x40A -#define TWA_PARAM_TIME_SCHED_TIME 0x3 - -#define TWA_9K_PARAM_DESCRIPTOR 0x8000 - -#pragma pack(1) -/* 7000 structures. */ -struct tw_cl_command_init_connect { - TW_UINT8 res1__opcode; /* 3:5 */ - TW_UINT8 size; - TW_UINT8 request_id; - TW_UINT8 res2; - TW_UINT8 status; - TW_UINT8 flags; - TW_UINT16 message_credits; - TW_UINT32 features; - TW_UINT16 fw_srl; - TW_UINT16 fw_arch_id; - TW_UINT16 fw_branch; - TW_UINT16 fw_build; - TW_UINT32 result; -}; - -/* Structure for downloading firmware onto the controller. */ -struct tw_cl_command_download_firmware { - TW_UINT8 sgl_off__opcode;/* 3:5 */ - TW_UINT8 size; - TW_UINT8 request_id; - TW_UINT8 unit; - TW_UINT8 status; - TW_UINT8 flags; - TW_UINT16 param; - TW_UINT8 sgl[1]; -}; - -/* Structure for hard resetting the controller. */ -struct tw_cl_command_reset_firmware { - TW_UINT8 res1__opcode; /* 3:5 */ - TW_UINT8 size; - TW_UINT8 request_id; - TW_UINT8 unit; - TW_UINT8 status; - TW_UINT8 flags; - TW_UINT8 res2; - TW_UINT8 param; -}; - -/* Structure for sending get/set param commands. */ -struct tw_cl_command_param { - TW_UINT8 sgl_off__opcode;/* 3:5 */ - TW_UINT8 size; - TW_UINT8 request_id; - TW_UINT8 host_id__unit; /* 4:4 */ - TW_UINT8 status; - TW_UINT8 flags; - TW_UINT16 param_count; - TW_UINT8 sgl[1]; -}; - -/* Generic command packet. */ -struct tw_cl_command_generic { - TW_UINT8 sgl_off__opcode;/* 3:5 */ - TW_UINT8 size; - TW_UINT8 request_id; - TW_UINT8 host_id__unit; /* 4:4 */ - TW_UINT8 status; - TW_UINT8 flags; - TW_UINT16 count; /* block cnt, parameter cnt, message credits */ -}; - -/* Command packet header. */ -struct tw_cl_command_header { - TW_UINT8 sense_data[TWA_SENSE_DATA_LENGTH]; - struct { - TW_INT8 reserved[4]; - TW_UINT16 error; - TW_UINT8 padding; - TW_UINT8 res__severity; /* 5:3 */ - } status_block; - TW_UINT8 err_specific_desc[98]; - struct { - TW_UINT8 size_header; - TW_UINT16 reserved; - TW_UINT8 size_sense; - } header_desc; -}; - -/* 7000 Command packet. */ -union tw_cl_command_7k { - struct tw_cl_command_init_connect init_connect; - struct tw_cl_command_download_firmware download_fw; - struct tw_cl_command_reset_firmware reset_fw; - struct tw_cl_command_param param; - struct tw_cl_command_generic generic; - TW_UINT8 padding[1024 - sizeof(struct tw_cl_command_header)]; -}; - -/* 9000 Command Packet. */ -struct tw_cl_command_9k { - TW_UINT8 res__opcode; /* 3:5 */ - TW_UINT8 unit; - TW_UINT16 lun_l4__req_id; /* 4:12 */ - TW_UINT8 status; - TW_UINT8 sgl_offset; /* offset (in bytes) to sg_list, from the - end of sgl_entries */ - TW_UINT16 lun_h4__sgl_entries; - TW_UINT8 cdb[16]; - TW_UINT8 sg_list[872];/* total struct size = - 1024-sizeof(cmd_hdr) */ -}; - -/* Full command packet. */ -struct tw_cl_command_packet { - struct tw_cl_command_header cmd_hdr; - union { - union tw_cl_command_7k cmd_pkt_7k; - struct tw_cl_command_9k cmd_pkt_9k; - } command; -}; - -/* Structure describing payload for get/set param commands. */ -struct tw_cl_param_9k { - TW_UINT16 table_id; - TW_UINT8 parameter_id; - TW_UINT8 reserved; - TW_UINT16 parameter_size_bytes; - TW_UINT16 parameter_actual_size_bytes; - TW_UINT8 data[1]; -}; -#pragma pack() - -/* Functions to read from, and write to registers */ -#define TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, value) \ - tw_osl_write_reg(ctlr_handle, TWA_CONTROL_REGISTER_OFFSET, value, 4) - -#define TW_CLI_READ_STATUS_REGISTER(ctlr_handle) \ - tw_osl_read_reg(ctlr_handle, TWA_STATUS_REGISTER_OFFSET, 4) - -#define TW_CLI_WRITE_COMMAND_QUEUE(ctlr_handle, value) do { \ - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { \ - /* First write the low 4 bytes, then the high 4. */ \ - tw_osl_write_reg(ctlr_handle, TWA_COMMAND_QUEUE_OFFSET_LOW, \ - (TW_UINT32)(value), 4); \ - tw_osl_write_reg(ctlr_handle, TWA_COMMAND_QUEUE_OFFSET_HIGH,\ - (TW_UINT32)(((TW_UINT64)value)>>32), 4); \ - } else \ - tw_osl_write_reg(ctlr_handle, TWA_COMMAND_QUEUE_OFFSET, \ - (TW_UINT32)(value), 4); \ -} while (0) - -#define TW_CLI_READ_RESPONSE_QUEUE(ctlr_handle) \ - tw_osl_read_reg(ctlr_handle, TWA_RESPONSE_QUEUE_OFFSET, 4) - -#define TW_CLI_READ_LARGE_RESPONSE_QUEUE(ctlr_handle) \ - tw_osl_read_reg(ctlr_handle, TWA_LARGE_RESPONSE_QUEUE_OFFSET, 4) - -#define TW_CLI_SOFT_RESET(ctlr) \ - TW_CLI_WRITE_CONTROL_REGISTER(ctlr, \ - TWA_CONTROL_ISSUE_SOFT_RESET | \ - TWA_CONTROL_CLEAR_HOST_INTERRUPT | \ - TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT | \ - TWA_CONTROL_MASK_COMMAND_INTERRUPT | \ - TWA_CONTROL_MASK_RESPONSE_INTERRUPT | \ - TWA_CONTROL_DISABLE_INTERRUPTS) - -/* Detect inconsistencies in the status register. */ -#define TW_CLI_STATUS_ERRORS(x) \ - ((x & TWA_STATUS_UNEXPECTED_BITS) && \ - (x & TWA_STATUS_MICROCONTROLLER_READY)) - -/* - * Functions for making transparent, the bit fields in firmware - * interface structures. - */ -#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 BUILD_HOST_ID__UNIT(host_id, unit) \ - ((host_id << 4) & 0xF0) | (unit & 0xF) /* 4:4 */ - -#define BUILD_RES__SEVERITY(res, severity) \ - ((res << 3) & 0xF8) | (severity & 0x7) /* 5:3 */ - -#define BUILD_LUN_L4__REQ_ID(lun, req_id) \ - (((lun << 12) & 0xF000) | (req_id & 0xFFF)) /* 4:12 */ - -#define BUILD_LUN_H4__SGL_ENTRIES(lun, sgl_entries) \ - (((lun << 8) & 0xF000) | (sgl_entries & 0xFFF)) /* 4:12 */ - -#define GET_OPCODE(sgl_off__opcode) \ - (sgl_off__opcode & 0x1F) /* 3:5 */ - -#define GET_SGL_OFF(sgl_off__opcode) \ - ((sgl_off__opcode >> 5) & 0x7) /* 3:5 */ - -#define GET_UNIT(host_id__unit) \ - (host_id__unit & 0xF) /* 4:4 */ - -#define GET_HOST_ID(host_id__unit) \ - ((host_id__unit >> 4) & 0xF) /* 4:4 */ - -#define GET_SEVERITY(res__severity) \ - (res__severity & 0x7) /* 5:3 */ - -#define GET_RESP_ID(undef2__resp_id__undef1) \ - ((undef2__resp_id__undef1 >> 4) & 0xFF) /* 20:8:4 */ - -#define GET_RESP_ID_9K_X(undef2__resp_id) \ - ((undef2__resp_id) & 0xFFF) /* 20:12 */ - -#define GET_LARGE_RESP_ID(misc__large_resp_id) \ - ((misc__large_resp_id) & 0xFFFF) /* 16:16 */ - -#define GET_REQ_ID(lun_l4__req_id) \ - (lun_l4__req_id & 0xFFF) /* 4:12 */ - -#define GET_LUN_L4(lun_l4__req_id) \ - ((lun_l4__req_id >> 12) & 0xF) /* 4:12 */ - -#define GET_SGL_ENTRIES(lun_h4__sgl_entries) \ - (lun_h4__sgl_entries & 0xFFF) /* 4:12 */ - -#define GET_LUN_H4(lun_h4__sgl_entries) \ - ((lun_h4__sgl_entries >> 12) & 0xF) /* 4:12 */ - -#endif /* TW_CL_FWIF_H */ diff --git a/sys/dev/twa/tw_cl_init.c b/sys/dev/twa/tw_cl_init.c deleted file mode 100644 index ce213ed531ef..000000000000 --- a/sys/dev/twa/tw_cl_init.c +++ /dev/null @@ -1,696 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -/* - * Common Layer initialization functions. - */ - -#include "tw_osl_share.h" -#include "tw_cl_share.h" -#include "tw_cl_fwif.h" -#include "tw_cl_ioctl.h" -#include "tw_cl.h" -#include "tw_cl_externs.h" -#include "tw_osl_ioctl.h" - -/* - * Function name: tw_cl_ctlr_supported - * Description: Determines if a controller is supported. - * - * Input: vendor_id -- vendor id of the controller - * device_id -- device id of the controller - * Output: None - * Return value: TW_CL_TRUE-- controller supported - * TW_CL_FALSE-- controller not supported - */ -TW_INT32 -tw_cl_ctlr_supported(TW_INT32 vendor_id, TW_INT32 device_id) -{ - if ((vendor_id == TW_CL_VENDOR_ID) && - ((device_id == TW_CL_DEVICE_ID_9K) || - (device_id == TW_CL_DEVICE_ID_9K_X) || - (device_id == TW_CL_DEVICE_ID_9K_E) || - (device_id == TW_CL_DEVICE_ID_9K_SA))) - return(TW_CL_TRUE); - return(TW_CL_FALSE); -} - -/* - * Function name: tw_cl_get_pci_bar_info - * Description: Returns PCI BAR info. - * - * Input: device_id -- device id of the controller - * bar_type -- type of PCI BAR in question - * Output: bar_num -- PCI BAR number corresponding to bar_type - * bar0_offset -- byte offset from BAR 0 (0x10 in - * PCI config space) - * bar_size -- size, in bytes, of the BAR in question - * Return value: 0 -- success - * non-zero -- failure - */ -TW_INT32 -tw_cl_get_pci_bar_info(TW_INT32 device_id, TW_INT32 bar_type, - TW_INT32 *bar_num, TW_INT32 *bar0_offset, TW_INT32 *bar_size) -{ - TW_INT32 error = TW_OSL_ESUCCESS; - - switch(device_id) { - case TW_CL_DEVICE_ID_9K: - switch(bar_type) { - case TW_CL_BAR_TYPE_IO: - *bar_num = 0; - *bar0_offset = 0; - *bar_size = 4; - break; - - case TW_CL_BAR_TYPE_MEM: - *bar_num = 1; - *bar0_offset = 0x4; - *bar_size = 8; - break; - - case TW_CL_BAR_TYPE_SBUF: - *bar_num = 2; - *bar0_offset = 0xC; - *bar_size = 8; - break; - } - break; - - case TW_CL_DEVICE_ID_9K_X: - case TW_CL_DEVICE_ID_9K_E: - case TW_CL_DEVICE_ID_9K_SA: - switch(bar_type) { - case TW_CL_BAR_TYPE_IO: - *bar_num = 2; - *bar0_offset = 0x10; - *bar_size = 4; - break; - - case TW_CL_BAR_TYPE_MEM: - *bar_num = 1; - *bar0_offset = 0x8; - *bar_size = 8; - break; - - case TW_CL_BAR_TYPE_SBUF: - *bar_num = 0; - *bar0_offset = 0; - *bar_size = 8; - break; - } - break; - - default: - error = TW_OSL_ENOTTY; - break; - } - - return(error); -} - -/* - * Function name: tw_cl_get_mem_requirements - * Description: Provides info about Common Layer requirements for a - * controller, given the controller type (in 'flags'). - * Input: ctlr_handle -- controller handle - * flags -- more info passed by the OS Layer - * device_id -- device id of the controller - * max_simult_reqs -- maximum # of simultaneous - * requests that the OS Layer expects - * the Common Layer to support - * max_aens -- maximun # of AEN's needed to be supported - * Output: alignment -- alignment needed for all DMA'able - * buffers - * sg_size_factor -- every SG element should have a size - * that's a multiple of this number - * non_dma_mem_size -- # of bytes of memory needed for - * non-DMA purposes - * dma_mem_size -- # of bytes of DMA'able memory needed - * per_req_dma_mem_size -- # of bytes of DMA'able memory - * needed per request, if applicable - * per_req_non_dma_mem_size -- # of bytes of memory needed - * per request for non-DMA purposes, - * if applicable - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_get_mem_requirements(struct tw_cl_ctlr_handle *ctlr_handle, - TW_UINT32 flags, TW_INT32 device_id, TW_INT32 max_simult_reqs, - TW_INT32 max_aens, TW_UINT32 *alignment, TW_UINT32 *sg_size_factor, - TW_UINT32 *non_dma_mem_size, TW_UINT32 *dma_mem_size - ) -{ - if (device_id == 0) - device_id = TW_CL_DEVICE_ID_9K; - - if (max_simult_reqs > TW_CL_MAX_SIMULTANEOUS_REQUESTS) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1000, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Too many simultaneous requests to support!", - "requested = %d, supported = %d, error = %d\n", - max_simult_reqs, TW_CL_MAX_SIMULTANEOUS_REQUESTS, - TW_OSL_EBIG); - return(TW_OSL_EBIG); - } - - *alignment = TWA_ALIGNMENT(device_id); - *sg_size_factor = TWA_SG_ELEMENT_SIZE_FACTOR(device_id); - - /* - * Total non-DMA memory needed is the sum total of memory needed for - * the controller context, request packets (including the 1 needed for - * CL internal requests), and event packets. - */ - - *non_dma_mem_size = sizeof(struct tw_cli_ctlr_context) + - (sizeof(struct tw_cli_req_context) * max_simult_reqs) + - (sizeof(struct tw_cl_event_packet) * max_aens); - - /* - * Total DMA'able memory needed is the sum total of memory needed for - * all command packets (including the 1 needed for CL internal - * requests), and memory needed to hold the payload for internal - * requests. - */ - - *dma_mem_size = (sizeof(struct tw_cl_command_packet) * - (max_simult_reqs)) + (TW_CLI_SECTOR_SIZE); - - return(0); -} - -/* - * Function name: tw_cl_init_ctlr - * Description: Initializes driver data structures for the controller. - * - * Input: ctlr_handle -- controller handle - * flags -- more info passed by the OS Layer - * device_id -- device id of the controller - * max_simult_reqs -- maximum # of simultaneous requests - * that the OS Layer expects the Common - * Layer to support - * max_aens -- maximun # of AEN's needed to be supported - * non_dma_mem -- ptr to allocated non-DMA memory - * dma_mem -- ptr to allocated DMA'able memory - * dma_mem_phys -- physical address of dma_mem - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_init_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, TW_UINT32 flags, - TW_INT32 device_id, TW_INT32 max_simult_reqs, TW_INT32 max_aens, - TW_VOID *non_dma_mem, TW_VOID *dma_mem, TW_UINT64 dma_mem_phys - ) -{ - struct tw_cli_ctlr_context *ctlr; - struct tw_cli_req_context *req; - TW_UINT8 *free_non_dma_mem; - TW_INT32 error = TW_OSL_ESUCCESS; - TW_INT32 i; - - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), "entered"); - - if (flags & TW_CL_START_CTLR_ONLY) { - ctlr = (struct tw_cli_ctlr_context *) - (ctlr_handle->cl_ctlr_ctxt); - goto start_ctlr; - } - - if (max_simult_reqs > TW_CL_MAX_SIMULTANEOUS_REQUESTS) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1000, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Too many simultaneous requests to support!", - "requested = %d, supported = %d, error = %d\n", - max_simult_reqs, TW_CL_MAX_SIMULTANEOUS_REQUESTS, - TW_OSL_EBIG); - return(TW_OSL_EBIG); - } - - if ((non_dma_mem == TW_CL_NULL) || (dma_mem == TW_CL_NULL) - ) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1001, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Insufficient memory for Common Layer's internal usage", - "error = %d\n", TW_OSL_ENOMEM); - return(TW_OSL_ENOMEM); - } - - tw_osl_memzero(non_dma_mem, sizeof(struct tw_cli_ctlr_context) + - (sizeof(struct tw_cli_req_context) * max_simult_reqs) + - (sizeof(struct tw_cl_event_packet) * max_aens)); - - tw_osl_memzero(dma_mem, - (sizeof(struct tw_cl_command_packet) * - max_simult_reqs) + - TW_CLI_SECTOR_SIZE); - - free_non_dma_mem = (TW_UINT8 *)non_dma_mem; - - ctlr = (struct tw_cli_ctlr_context *)free_non_dma_mem; - free_non_dma_mem += sizeof(struct tw_cli_ctlr_context); - - ctlr_handle->cl_ctlr_ctxt = ctlr; - ctlr->ctlr_handle = ctlr_handle; - - ctlr->device_id = (TW_UINT32)device_id; - ctlr->arch_id = TWA_ARCH_ID(device_id); - ctlr->flags = flags; - ctlr->sg_size_factor = TWA_SG_ELEMENT_SIZE_FACTOR(device_id); - ctlr->max_simult_reqs = max_simult_reqs; - ctlr->max_aens_supported = max_aens; - - /* Initialize queues of CL internal request context packets. */ - tw_cli_req_q_init(ctlr, TW_CLI_FREE_Q); - tw_cli_req_q_init(ctlr, TW_CLI_BUSY_Q); - tw_cli_req_q_init(ctlr, TW_CLI_PENDING_Q); - tw_cli_req_q_init(ctlr, TW_CLI_COMPLETE_Q); - tw_cli_req_q_init(ctlr, TW_CLI_RESET_Q); - - /* Initialize all locks used by CL. */ - ctlr->gen_lock = &(ctlr->gen_lock_handle); - tw_osl_init_lock(ctlr_handle, "tw_cl_gen_lock", ctlr->gen_lock); - ctlr->io_lock = &(ctlr->io_lock_handle); - tw_osl_init_lock(ctlr_handle, "tw_cl_io_lock", ctlr->io_lock); - - /* Initialize CL internal request context packets. */ - ctlr->req_ctxt_buf = (struct tw_cli_req_context *)free_non_dma_mem; - free_non_dma_mem += (sizeof(struct tw_cli_req_context) * - max_simult_reqs); - - ctlr->cmd_pkt_buf = (struct tw_cl_command_packet *)dma_mem; - ctlr->cmd_pkt_phys = dma_mem_phys; - - ctlr->internal_req_data = (TW_UINT8 *) - (ctlr->cmd_pkt_buf + - max_simult_reqs); - ctlr->internal_req_data_phys = ctlr->cmd_pkt_phys + - (sizeof(struct tw_cl_command_packet) * - max_simult_reqs); - - for (i = 0; i < max_simult_reqs; i++) { - req = &(ctlr->req_ctxt_buf[i]); - - req->cmd_pkt = &(ctlr->cmd_pkt_buf[i]); - req->cmd_pkt_phys = ctlr->cmd_pkt_phys + - (i * sizeof(struct tw_cl_command_packet)); - - req->request_id = i; - req->ctlr = ctlr; - - /* Insert request into the free queue. */ - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - - /* Initialize the AEN queue. */ - ctlr->aen_queue = (struct tw_cl_event_packet *)free_non_dma_mem; - -start_ctlr: - /* - * Disable interrupts. Interrupts will be enabled in tw_cli_start_ctlr - * (only) if initialization succeeded. - */ - tw_cli_disable_interrupts(ctlr); - - /* Initialize the controller. */ - if ((error = tw_cli_start_ctlr(ctlr))) { - /* Soft reset the controller, and try one more time. */ - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1002, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Controller initialization failed. Retrying...", - "error = %d\n", error); - if ((error = tw_cli_soft_reset(ctlr))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1003, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Controller soft reset failed", - "error = %d\n", error); - return(error); - } else if ((error = tw_cli_start_ctlr(ctlr))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1004, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Controller initialization retry failed", - "error = %d\n", error); - return(error); - } - } - /* Notify some info about the controller to the OSL. */ - tw_cli_notify_ctlr_info(ctlr); - - /* Mark the controller active. */ - ctlr->active = TW_CL_TRUE; - return(error); -} - -/* - * Function name: tw_cli_start_ctlr - * Description: Establishes a logical connection with the controller. - * Determines whether or not the driver is compatible - * with the firmware on the controller, before proceeding - * to work with it. - * - * Input: ctlr -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_start_ctlr(struct tw_cli_ctlr_context *ctlr) -{ - TW_UINT16 fw_on_ctlr_srl = 0; - TW_UINT16 fw_on_ctlr_arch_id = 0; - TW_UINT16 fw_on_ctlr_branch = 0; - TW_UINT16 fw_on_ctlr_build = 0; - TW_UINT32 init_connect_result = 0; - TW_INT32 error = TW_OSL_ESUCCESS; - - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Wait for the controller to become ready. */ - if ((error = tw_cli_poll_status(ctlr, - TWA_STATUS_MICROCONTROLLER_READY, - TW_CLI_REQUEST_TIMEOUT_PERIOD))) { - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1009, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Microcontroller not ready", - "error = %d", error); - return(error); - } - /* Drain the response queue. */ - if ((error = tw_cli_drain_response_queue(ctlr))) { - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x100A, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Can't drain response queue", - "error = %d", error); - return(error); - } - /* Establish a logical connection with the controller. */ - if ((error = tw_cli_init_connection(ctlr, - (TW_UINT16)(ctlr->max_simult_reqs), - TWA_EXTENDED_INIT_CONNECT, TWA_CURRENT_FW_SRL, - (TW_UINT16)(ctlr->arch_id), - TWA_CURRENT_FW_BRANCH(ctlr->arch_id), - TWA_CURRENT_FW_BUILD(ctlr->arch_id), - &fw_on_ctlr_srl, &fw_on_ctlr_arch_id, - &fw_on_ctlr_branch, &fw_on_ctlr_build, - &init_connect_result))) { - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x100B, 0x2, TW_CL_SEVERITY_WARNING_STRING, - "Can't initialize connection in current mode", - "error = %d", error); - return(error); - } - { - /* See if we can at least work with the firmware on the - * controller in the current mode. - */ - if (init_connect_result & TWA_CTLR_FW_COMPATIBLE) { - /* Yes, we can. Make note of the operating mode. */ - if (init_connect_result & TWA_CTLR_FW_SAME_OR_NEWER) { - ctlr->working_srl = TWA_CURRENT_FW_SRL; - ctlr->working_branch = - TWA_CURRENT_FW_BRANCH(ctlr->arch_id); - ctlr->working_build = - TWA_CURRENT_FW_BUILD(ctlr->arch_id); - } else { - ctlr->working_srl = fw_on_ctlr_srl; - ctlr->working_branch = fw_on_ctlr_branch; - ctlr->working_build = fw_on_ctlr_build; - } - } else { - /* - * No, we can't. See if we can at least work with - * it in the base mode. - */ - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1010, 0x2, TW_CL_SEVERITY_WARNING_STRING, - "Driver/Firmware mismatch. " - "Negotiating for base level...", - " "); - if ((error = tw_cli_init_connection(ctlr, - (TW_UINT16)(ctlr->max_simult_reqs), - TWA_EXTENDED_INIT_CONNECT, - TWA_BASE_FW_SRL, - (TW_UINT16)(ctlr->arch_id), - TWA_BASE_FW_BRANCH, TWA_BASE_FW_BUILD, - &fw_on_ctlr_srl, &fw_on_ctlr_arch_id, - &fw_on_ctlr_branch, &fw_on_ctlr_build, - &init_connect_result))) { - tw_cl_create_event(ctlr->ctlr_handle, - TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1011, 0x1, - TW_CL_SEVERITY_ERROR_STRING, - "Can't initialize connection in " - "base mode", - " "); - return(error); - } - if (!(init_connect_result & TWA_CTLR_FW_COMPATIBLE)) { - /* - * The firmware on the controller is not even - * compatible with our base mode. We cannot - * work with it. Bail... - */ - return(1); - } - /* - * We can work with this firmware, but only in - * base mode. - */ - ctlr->working_srl = TWA_BASE_FW_SRL; - ctlr->working_branch = TWA_BASE_FW_BRANCH; - ctlr->working_build = TWA_BASE_FW_BUILD; - ctlr->operating_mode = TWA_BASE_MODE; - } - ctlr->fw_on_ctlr_srl = fw_on_ctlr_srl; - ctlr->fw_on_ctlr_branch = fw_on_ctlr_branch; - ctlr->fw_on_ctlr_build = fw_on_ctlr_build; - } - - /* Drain the AEN queue */ - if ((error = tw_cli_drain_aen_queue(ctlr))) - /* - * We will just print that we couldn't drain the AEN queue. - * There's no need to bail out. - */ - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1014, 0x2, TW_CL_SEVERITY_WARNING_STRING, - "Can't drain AEN queue", - "error = %d", error); - - /* Enable interrupts. */ - tw_cli_enable_interrupts(ctlr); - - return(TW_OSL_ESUCCESS); -} - -/* - * Function name: tw_cl_shutdown_ctlr - * Description: Closes logical connection with the controller. - * - * Input: ctlr -- ptr to per ctlr structure - * flags -- more info passed by the OS Layer - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_shutdown_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, TW_UINT32 flags) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - TW_INT32 error; - - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), "entered"); - /* - * Mark the controller as inactive, disable any further interrupts, - * and notify the controller that we are going down. - */ - ctlr->active = TW_CL_FALSE; - - tw_cli_disable_interrupts(ctlr); - - /* Let the controller know that we are going down. */ - if ((error = tw_cli_init_connection(ctlr, TWA_SHUTDOWN_MESSAGE_CREDITS, - 0, 0, 0, 0, 0, TW_CL_NULL, TW_CL_NULL, TW_CL_NULL, - TW_CL_NULL, TW_CL_NULL))) - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1015, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Can't close connection with controller", - "error = %d", error); - - if (flags & TW_CL_STOP_CTLR_ONLY) - goto ret; - - /* Destroy all locks used by CL. */ - tw_osl_destroy_lock(ctlr_handle, ctlr->gen_lock); - tw_osl_destroy_lock(ctlr_handle, ctlr->io_lock); - -ret: - return(error); -} - -/* - * Function name: tw_cli_init_connection - * Description: Sends init_connection cmd to firmware - * - * Input: ctlr -- ptr to per ctlr structure - * message_credits -- max # of requests that we might send - * down simultaneously. This will be - * typically set to 256 at init-time or - * after a reset, and to 1 at shutdown-time - * set_features -- indicates if we intend to use 64-bit - * sg, also indicates if we want to do a - * basic or an extended init_connection; - * - * Note: The following input/output parameters are valid, only in case of an - * extended init_connection: - * - * current_fw_srl -- srl of fw we are bundled - * with, if any; 0 otherwise - * current_fw_arch_id -- arch_id of fw we are bundled - * with, if any; 0 otherwise - * current_fw_branch -- branch # of fw we are bundled - * with, if any; 0 otherwise - * current_fw_build -- build # of fw we are bundled - * with, if any; 0 otherwise - * Output: fw_on_ctlr_srl -- srl of fw on ctlr - * fw_on_ctlr_arch_id -- arch_id of fw on ctlr - * fw_on_ctlr_branch -- branch # of fw on ctlr - * fw_on_ctlr_build -- build # of fw on ctlr - * init_connect_result -- result bitmap of fw response - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_init_connection(struct tw_cli_ctlr_context *ctlr, - TW_UINT16 message_credits, TW_UINT32 set_features, - TW_UINT16 current_fw_srl, TW_UINT16 current_fw_arch_id, - TW_UINT16 current_fw_branch, TW_UINT16 current_fw_build, - TW_UINT16 *fw_on_ctlr_srl, TW_UINT16 *fw_on_ctlr_arch_id, - TW_UINT16 *fw_on_ctlr_branch, TW_UINT16 *fw_on_ctlr_build, - TW_UINT32 *init_connect_result) -{ - struct tw_cli_req_context *req; - struct tw_cl_command_init_connect *init_connect; - TW_INT32 error = TW_OSL_EBUSY; - - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Get a request packet. */ - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) - goto out; - - req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; - - /* Build the cmd pkt. */ - init_connect = &(req->cmd_pkt->command.cmd_pkt_7k.init_connect); - - req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; - - init_connect->res1__opcode = - BUILD_RES__OPCODE(0, TWA_FW_CMD_INIT_CONNECTION); - init_connect->request_id = - (TW_UINT8)(TW_CL_SWAP16(req->request_id)); - init_connect->message_credits = TW_CL_SWAP16(message_credits); - init_connect->features = TW_CL_SWAP32(set_features); - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) - init_connect->features |= TW_CL_SWAP32(TWA_64BIT_SG_ADDRESSES); - if (set_features & TWA_EXTENDED_INIT_CONNECT) { - /* - * Fill in the extra fields needed for an extended - * init_connect. - */ - init_connect->size = 6; - init_connect->fw_srl = TW_CL_SWAP16(current_fw_srl); - init_connect->fw_arch_id = TW_CL_SWAP16(current_fw_arch_id); - init_connect->fw_branch = TW_CL_SWAP16(current_fw_branch); - init_connect->fw_build = TW_CL_SWAP16(current_fw_build); - } else - init_connect->size = 3; - - /* Submit the command, and wait for it to complete. */ - error = tw_cli_submit_and_poll_request(req, - TW_CLI_REQUEST_TIMEOUT_PERIOD); - if (error) - goto out; - if ((error = init_connect->status)) { -#if 0 - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - &(req->cmd_pkt->cmd_hdr)); -#endif // 0 - goto out; - } - if (set_features & TWA_EXTENDED_INIT_CONNECT) { - *fw_on_ctlr_srl = TW_CL_SWAP16(init_connect->fw_srl); - *fw_on_ctlr_arch_id = TW_CL_SWAP16(init_connect->fw_arch_id); - *fw_on_ctlr_branch = TW_CL_SWAP16(init_connect->fw_branch); - *fw_on_ctlr_build = TW_CL_SWAP16(init_connect->fw_build); - *init_connect_result = TW_CL_SWAP32(init_connect->result); - } - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - return(error); - -out: - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1016, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "init_connection failed", - "error = %d", error); - if (req) - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - return(error); -} diff --git a/sys/dev/twa/tw_cl_intr.c b/sys/dev/twa/tw_cl_intr.c deleted file mode 100644 index 85f96da3046d..000000000000 --- a/sys/dev/twa/tw_cl_intr.c +++ /dev/null @@ -1,724 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -/* - * Common Layer interrupt handling functions. - */ - -#include "tw_osl_share.h" -#include "tw_cl_share.h" -#include "tw_cl_fwif.h" -#include "tw_cl_ioctl.h" -#include "tw_cl.h" -#include "tw_cl_externs.h" -#include "tw_osl_ioctl.h" - -/* - * Function name: twa_interrupt - * Description: Interrupt handler. Determines the kind of interrupt, - * and returns TW_CL_TRUE if it recognizes the interrupt. - * - * Input: ctlr_handle -- controller handle - * Output: None - * Return value: TW_CL_TRUE -- interrupt recognized - * TW_CL_FALSE-- interrupt not recognized - */ -TW_INT32 -tw_cl_interrupt(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - TW_UINT32 status_reg; - TW_INT32 rc = TW_CL_FALSE; - - tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), "entered"); - - /* If we don't have controller context, bail */ - if (ctlr == NULL) - goto out; - - /* - * Bail If we get an interrupt while resetting, or shutting down. - */ - if (ctlr->reset_in_progress || !(ctlr->active)) - goto out; - - /* Read the status register to determine the type of interrupt. */ - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); - if (tw_cli_check_ctlr_state(ctlr, status_reg)) - goto out; - - /* Clear the interrupt. */ - if (status_reg & TWA_STATUS_HOST_INTERRUPT) { - tw_cli_dbg_printf(6, ctlr_handle, tw_osl_cur_func(), - "Host interrupt"); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_CLEAR_HOST_INTERRUPT); - } - if (status_reg & TWA_STATUS_ATTENTION_INTERRUPT) { - tw_cli_dbg_printf(6, ctlr_handle, tw_osl_cur_func(), - "Attention interrupt"); - rc |= TW_CL_TRUE; /* request for a deferred isr call */ - tw_cli_process_attn_intr(ctlr); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT); - } - if (status_reg & TWA_STATUS_COMMAND_INTERRUPT) { - tw_cli_dbg_printf(6, ctlr_handle, tw_osl_cur_func(), - "Command interrupt"); - rc |= TW_CL_TRUE; /* request for a deferred isr call */ - tw_cli_process_cmd_intr(ctlr); - if ((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) == TW_CL_NULL) - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_MASK_COMMAND_INTERRUPT); - } - if (status_reg & TWA_STATUS_RESPONSE_INTERRUPT) { - tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), - "Response interrupt"); - rc |= TW_CL_TRUE; /* request for a deferred isr call */ - tw_cli_process_resp_intr(ctlr); - } -out: - return(rc); -} - -/* - * Function name: tw_cli_process_host_intr - * Description: This function gets called if we triggered an interrupt. - * We don't use it as of now. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_process_host_intr(struct tw_cli_ctlr_context *ctlr) -{ - tw_cli_dbg_printf(6, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); -} - -/* - * Function name: tw_cli_process_attn_intr - * Description: This function gets called if the fw posted an AEN - * (Asynchronous Event Notification). It fetches - * all the AEN's that the fw might have posted. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_process_attn_intr(struct tw_cli_ctlr_context *ctlr) -{ - TW_INT32 error; - - tw_cli_dbg_printf(6, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - if ((error = tw_cli_get_aen(ctlr))) { - /* - * If the driver is already in the process of retrieveing AEN's, - * we will be returned TW_OSL_EBUSY. In this case, - * tw_cli_param_callback or tw_cli_aen_callback will eventually - * retrieve the AEN this attention interrupt is for. So, we - * don't need to print the failure. - */ - if (error != TW_OSL_EBUSY) - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1200, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Failed to fetch AEN", - "error = %d", error); - } -} - -/* - * Function name: tw_cli_process_cmd_intr - * Description: This function gets called if we hit a queue full - * condition earlier, and the fw is now ready for - * new cmds. Submits any pending requests. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_process_cmd_intr(struct tw_cli_ctlr_context *ctlr) -{ - tw_cli_dbg_printf(6, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Start any requests that might be in the pending queue. */ - tw_cli_submit_pending_queue(ctlr); - - /* - * If tw_cli_submit_pending_queue was unsuccessful due to a "cmd queue - * full" condition, cmd_intr will already have been unmasked by - * tw_cli_submit_cmd. We don't need to do it again... simply return. - */ -} - -/* - * Function name: tw_cli_process_resp_intr - * Description: Looks for cmd completions from fw; queues cmds completed - * by fw into complete queue. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: 0 -- no ctlr error - * non-zero-- ctlr error - */ -TW_INT32 -tw_cli_process_resp_intr(struct tw_cli_ctlr_context *ctlr) -{ - TW_UINT32 resp; - struct tw_cli_req_context *req; - TW_INT32 error; - TW_UINT32 status_reg; - - tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - for (;;) { - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); - if ((error = tw_cli_check_ctlr_state(ctlr, status_reg))) - break; - if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) { - tw_cli_dbg_printf(7, ctlr->ctlr_handle, - tw_osl_cur_func(), "Response queue empty"); - break; - } - - /* Response queue is not empty. */ - resp = TW_CLI_READ_RESPONSE_QUEUE(ctlr->ctlr_handle); - { - req = &(ctlr->req_ctxt_buf[GET_RESP_ID(resp)]); - } - - if (req->state != TW_CLI_REQ_STATE_BUSY) { - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1201, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Unposted command completed!!", - "request = %p, status = %d", - req, req->state); -#ifdef TW_OSL_DEBUG - tw_cl_print_ctlr_stats(ctlr->ctlr_handle); -#endif /* TW_OSL_DEBUG */ - continue; - } - - /* - * Remove the request from the busy queue, mark it as complete, - * and enqueue it in the complete queue. - */ - tw_cli_req_q_remove_item(req, TW_CLI_BUSY_Q); - req->state = TW_CLI_REQ_STATE_COMPLETE; - tw_cli_req_q_insert_tail(req, TW_CLI_COMPLETE_Q); - } - - /* Complete this, and other requests in the complete queue. */ - tw_cli_process_complete_queue(ctlr); - - return(error); -} - -/* - * Function name: tw_cli_submit_pending_queue - * Description: Kick starts any requests in the pending queue. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: 0 -- all pending requests submitted successfully - * non-zero-- otherwise - */ -TW_INT32 -tw_cli_submit_pending_queue(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - TW_INT32 error = TW_OSL_ESUCCESS; - - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* - * Pull requests off the pending queue, and submit them. - */ - while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_PENDING_Q)) != - TW_CL_NULL) { - if ((error = tw_cli_submit_cmd(req))) { - if (error == TW_OSL_EBUSY) { - tw_cli_dbg_printf(2, ctlr->ctlr_handle, - tw_osl_cur_func(), - "Requeueing pending request"); - req->state = TW_CLI_REQ_STATE_PENDING; - /* - * Queue the request at the head of the pending - * queue, and break away, so we don't try to - * submit any more requests. - */ - tw_cli_req_q_insert_head(req, TW_CLI_PENDING_Q); - break; - } else { - tw_cl_create_event(ctlr->ctlr_handle, - TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1202, 0x1, - TW_CL_SEVERITY_ERROR_STRING, - "Could not start request " - "in pending queue", - "request = %p, opcode = 0x%x, " - "error = %d", req, - GET_OPCODE(req->cmd_pkt-> - command.cmd_pkt_9k.res__opcode), - error); - /* - * Set the appropriate error and call the CL - * internal callback if there's one. If the - * request originator is polling for completion, - * he should be checking req->error to - * determine that the request did not go - * through. The request originators are - * responsible for the clean-up. - */ - req->error_code = error; - req->state = TW_CLI_REQ_STATE_COMPLETE; - if (req->tw_cli_callback) - req->tw_cli_callback(req); - error = TW_OSL_ESUCCESS; - } - } - } - return(error); -} - -/* - * Function name: tw_cli_process_complete_queue - * Description: Calls the CL internal callback routine, if any, for - * each request in the complete queue. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_process_complete_queue(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - - tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* - * Pull commands off the completed list, dispatch them appropriately. - */ - while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_COMPLETE_Q)) != - TW_CL_NULL) { - /* Call the CL internal callback, if there's one. */ - if (req->tw_cli_callback) - req->tw_cli_callback(req); - } -} - -/* - * Function name: tw_cli_complete_io - * Description: CL internal callback for SCSI/fw passthru requests. - * - * Input: req -- ptr to CL internal request context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_complete_io(struct tw_cli_req_context *req) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - struct tw_cl_req_packet *req_pkt = - (struct tw_cl_req_packet *)(req->orig_req); - - tw_cli_dbg_printf(8, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - req_pkt->status = TW_CL_ERR_REQ_SUCCESS; - if (req->error_code) { - req_pkt->status = TW_CL_ERR_REQ_UNABLE_TO_SUBMIT_COMMAND; - goto out; - } - - if (req->state != TW_CLI_REQ_STATE_COMPLETE) { - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1203, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "I/O completion on incomplete command!!", - "request = %p, status = %d", - req, req->state); -#ifdef TW_OSL_DEBUG - tw_cl_print_ctlr_stats(ctlr->ctlr_handle); -#endif /* TW_OSL_DEBUG */ - return; - } - - if (req->flags & TW_CLI_REQ_FLAGS_PASSTHRU) { - /* Copy the command packet back into OSL's space. */ - tw_osl_memcpy(req_pkt->gen_req_pkt.pt_req.cmd_pkt, req->cmd_pkt, - sizeof(struct tw_cl_command_packet)); - } else - tw_cli_scsi_complete(req); - -out: - req_pkt->tw_osl_callback(req->req_handle); - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); -} - -/* - * Function name: tw_cli_scsi_complete - * Description: Completion routine for SCSI requests. - * - * Input: req -- ptr to CL internal request context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_scsi_complete(struct tw_cli_req_context *req) -{ - struct tw_cl_req_packet *req_pkt = - (struct tw_cl_req_packet *)(req->orig_req); - struct tw_cl_scsi_req_packet *scsi_req = - &(req_pkt->gen_req_pkt.scsi_req); - struct tw_cl_command_9k *cmd = - &(req->cmd_pkt->command.cmd_pkt_9k); - struct tw_cl_command_header *cmd_hdr; - TW_UINT16 error; - TW_UINT8 *cdb; - - tw_cli_dbg_printf(8, req->ctlr->ctlr_handle, tw_osl_cur_func(), - "entered"); - - scsi_req->scsi_status = cmd->status; - if (! cmd->status) - return; - - tw_cli_dbg_printf(1, req->ctlr->ctlr_handle, tw_osl_cur_func(), - "req_id = 0x%x, status = 0x%x", - GET_REQ_ID(cmd->lun_l4__req_id), cmd->status); - - cmd_hdr = &(req->cmd_pkt->cmd_hdr); - error = cmd_hdr->status_block.error; - if ((error == TWA_ERROR_LOGICAL_UNIT_NOT_SUPPORTED) || - (error == TWA_ERROR_UNIT_OFFLINE)) { - if (GET_LUN_L4(cmd->lun_l4__req_id)) - req_pkt->status |= TW_CL_ERR_REQ_INVALID_LUN; - else - req_pkt->status |= TW_CL_ERR_REQ_INVALID_TARGET; - } else { - tw_cli_dbg_printf(2, req->ctlr->ctlr_handle, - tw_osl_cur_func(), - "cmd = %x %x %x %x %x %x %x", - GET_OPCODE(cmd->res__opcode), - GET_SGL_OFF(cmd->res__opcode), - cmd->unit, - cmd->lun_l4__req_id, - cmd->status, - cmd->sgl_offset, - cmd->lun_h4__sgl_entries); - - cdb = (TW_UINT8 *)(cmd->cdb); - tw_cli_dbg_printf(2, req->ctlr->ctlr_handle, - tw_osl_cur_func(), - "cdb = %x %x %x %x %x %x %x %x " - "%x %x %x %x %x %x %x %x", - cdb[0], cdb[1], cdb[2], cdb[3], - cdb[4], cdb[5], cdb[6], cdb[7], - cdb[8], cdb[9], cdb[10], cdb[11], - cdb[12], cdb[13], cdb[14], cdb[15]); - -#if 0 - /* - * Print the error. Firmware doesn't yet support - * the 'Mode Sense' cmd. Don't print if the cmd - * is 'Mode Sense', and the error is 'Invalid field - * in CDB'. - */ - if (! ((cdb[0] == 0x1A) && (error == 0x10D))) - tw_cli_create_ctlr_event(req->ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - cmd_hdr); -#endif // 0 - } - - if (scsi_req->sense_data) { - tw_osl_memcpy(scsi_req->sense_data, cmd_hdr->sense_data, - TWA_SENSE_DATA_LENGTH); - scsi_req->sense_len = TWA_SENSE_DATA_LENGTH; - req_pkt->status |= TW_CL_ERR_REQ_AUTO_SENSE_VALID; - } - req_pkt->status |= TW_CL_ERR_REQ_SCSI_ERROR; -} - -/* - * Function name: tw_cli_param_callback - * Description: Callback for get/set_param requests. - * - * Input: req -- ptr to completed request pkt - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_param_callback(struct tw_cli_req_context *req) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - union tw_cl_command_7k *cmd = - &(req->cmd_pkt->command.cmd_pkt_7k); - TW_INT32 error; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* - * If the request was never submitted to the controller, the function - * that sets req->error is responsible for calling tw_cl_create_event. - */ - if (! req->error_code) - if (cmd->param.status) { -#if 0 - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - &(req->cmd_pkt->cmd_hdr)); -#endif // 0 - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1204, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "get/set_param failed", - "status = %d", cmd->param.status); - } - - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - - if ((ctlr->get_more_aens) && (!(ctlr->reset_in_progress))) { - ctlr->get_more_aens = TW_CL_FALSE; - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), - "Fetching more AEN's"); - if ((error = tw_cli_get_aen(ctlr))) - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1205, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Failed to fetch all AEN's from param_callback", - "error = %d", error); - } -} - -/* - * Function name: tw_cli_aen_callback - * Description: Callback for requests to fetch AEN's. - * - * Input: req -- ptr to completed request pkt - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_aen_callback(struct tw_cli_req_context *req) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - struct tw_cl_command_header *cmd_hdr; - struct tw_cl_command_9k *cmd = - &(req->cmd_pkt->command.cmd_pkt_9k); - TW_UINT16 aen_code = TWA_AEN_QUEUE_EMPTY; - TW_INT32 error; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), - "req_id = 0x%x, req error = %d, status = 0x%x", - GET_REQ_ID(cmd->lun_l4__req_id), req->error_code, cmd->status); - - /* - * If the request was never submitted to the controller, the function - * that sets error is responsible for calling tw_cl_create_event. - */ - if (!(error = req->error_code)) - if ((error = cmd->status)) { - cmd_hdr = (struct tw_cl_command_header *) - (&(req->cmd_pkt->cmd_hdr)); -#if 0 - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - cmd_hdr); -#endif // 0 - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1206, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Request Sense failed", - "opcode = 0x%x, status = %d", - GET_OPCODE(cmd->res__opcode), cmd->status); - } - - if (error) { - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - return; - } - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), - "Request Sense command succeeded"); - - aen_code = tw_cli_manage_aen(ctlr, req); - - if (aen_code != TWA_AEN_SYNC_TIME_WITH_HOST) { - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - if (aen_code != TWA_AEN_QUEUE_EMPTY) - if ((error = tw_cli_get_aen(ctlr))) - tw_cl_create_event(ctlr->ctlr_handle, - TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1207, 0x1, - TW_CL_SEVERITY_ERROR_STRING, - "Failed to fetch all AEN's", - "error = %d", error); - } -} - -/* - * Function name: tw_cli_manage_aen - * Description: Handles AEN's. - * - * Input: ctlr -- ptr to CL internal ctlr context - * req -- ptr to CL internal request context - * Output: None - * Return value: None - */ -TW_UINT16 -tw_cli_manage_aen(struct tw_cli_ctlr_context *ctlr, - struct tw_cli_req_context *req) -{ - struct tw_cl_command_header *cmd_hdr; - TW_UINT16 aen_code; - TW_TIME local_time; - TW_TIME sync_time; - TW_UINT32 error; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - cmd_hdr = (struct tw_cl_command_header *)(req->data); - aen_code = cmd_hdr->status_block.error; - - switch (aen_code) { - case TWA_AEN_SYNC_TIME_WITH_HOST: - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), - "Received AEN_SYNC_TIME"); - /* - * Free the internal req pkt right here, since - * tw_cli_set_param will need it. - */ - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - - /* - * We will use a callback in tw_cli_set_param only when - * interrupts are enabled and we can expect our callback - * to get called. Setting the get_more_aens - * flag will make the callback continue to try to retrieve - * more AEN's. - */ - if (ctlr->interrupts_enabled) - ctlr->get_more_aens = TW_CL_TRUE; - /* Calculate time (in seconds) since last Sunday 12.00 AM. */ - local_time = tw_osl_get_local_time(); - sync_time = (local_time - (3 * 86400)) % 604800; - if ((error = tw_cli_set_param(ctlr, TWA_PARAM_TIME_TABLE, - TWA_PARAM_TIME_SCHED_TIME, 4, - &sync_time, - (ctlr->interrupts_enabled) - ? tw_cli_param_callback : TW_CL_NULL))) - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1208, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Unable to sync time with ctlr", - "error = %d", error); - - break; - - case TWA_AEN_QUEUE_EMPTY: - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), - "AEN queue empty"); - break; - - default: - /* Queue the event. */ - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), - "Queueing AEN"); - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_EVENT, - cmd_hdr); - break; - } /* switch */ - return(aen_code); -} - -/* - * Function name: tw_cli_enable_interrupts - * Description: Enables interrupts on the controller - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_enable_interrupts(struct tw_cli_ctlr_context *ctlr) -{ - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - ctlr->interrupts_enabled = TW_CL_TRUE; - TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, - TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT | - TWA_CONTROL_UNMASK_RESPONSE_INTERRUPT | - TWA_CONTROL_ENABLE_INTERRUPTS); -} - -/* - * Function name: twa_setup - * Description: Disables interrupts on the controller - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_disable_interrupts(struct tw_cli_ctlr_context *ctlr) -{ - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, - TWA_CONTROL_DISABLE_INTERRUPTS); - ctlr->interrupts_enabled = TW_CL_FALSE; -} diff --git a/sys/dev/twa/tw_cl_io.c b/sys/dev/twa/tw_cl_io.c deleted file mode 100644 index a2a84f4daf69..000000000000 --- a/sys/dev/twa/tw_cl_io.c +++ /dev/null @@ -1,1407 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -/* - * Common Layer I/O functions. - */ - -#include "tw_osl_share.h" -#include "tw_cl_share.h" -#include "tw_cl_fwif.h" -#include "tw_cl_ioctl.h" -#include "tw_cl.h" -#include "tw_cl_externs.h" -#include "tw_osl_ioctl.h" - -#include -#include -#include - -/* - * Function name: tw_cl_start_io - * Description: Interface to OS Layer for accepting SCSI requests. - * - * Input: ctlr_handle -- controller handle - * req_pkt -- OSL built request packet - * req_handle -- request handle - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_start_io(struct tw_cl_ctlr_handle *ctlr_handle, - struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle) -{ - struct tw_cli_ctlr_context *ctlr; - struct tw_cli_req_context *req; - struct tw_cl_command_9k *cmd; - struct tw_cl_scsi_req_packet *scsi_req; - TW_INT32 error = TW_CL_ERR_REQ_SUCCESS; - - tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), "entered"); - - ctlr = (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - - /* - * If working with a firmware version that does not support multiple - * luns, and this request is directed at a non-zero lun, error it - * back right away. - */ - if ((req_pkt->gen_req_pkt.scsi_req.lun) && - (ctlr->working_srl < TWA_MULTI_LUN_FW_SRL)) { - req_pkt->status |= (TW_CL_ERR_REQ_INVALID_LUN | - TW_CL_ERR_REQ_SCSI_ERROR); - req_pkt->tw_osl_callback(req_handle); - return(TW_CL_ERR_REQ_SUCCESS); - } - - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) { - tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), - "Out of request context packets: returning busy"); - return(TW_OSL_EBUSY); - } - - req_handle->cl_req_ctxt = req; - req->req_handle = req_handle; - req->orig_req = req_pkt; - req->tw_cli_callback = tw_cli_complete_io; - - req->flags |= TW_CLI_REQ_FLAGS_EXTERNAL; - req->flags |= TW_CLI_REQ_FLAGS_9K; - - scsi_req = &(req_pkt->gen_req_pkt.scsi_req); - - /* Build the cmd pkt. */ - cmd = &(req->cmd_pkt->command.cmd_pkt_9k); - - req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; - - cmd->res__opcode = BUILD_RES__OPCODE(0, TWA_FW_CMD_EXECUTE_SCSI); - cmd->unit = (TW_UINT8)(scsi_req->unit); - cmd->lun_l4__req_id = TW_CL_SWAP16( - BUILD_LUN_L4__REQ_ID(scsi_req->lun, req->request_id)); - cmd->status = 0; - cmd->sgl_offset = 16; /* offset from end of hdr = max cdb len */ - tw_osl_memcpy(cmd->cdb, scsi_req->cdb, scsi_req->cdb_len); - - if (req_pkt->flags & TW_CL_REQ_CALLBACK_FOR_SGLIST) { - TW_UINT32 num_sgl_entries; - - req_pkt->tw_osl_sgl_callback(req_handle, cmd->sg_list, - &num_sgl_entries); - cmd->lun_h4__sgl_entries = - TW_CL_SWAP16(BUILD_LUN_H4__SGL_ENTRIES(scsi_req->lun, - num_sgl_entries)); - } else { - cmd->lun_h4__sgl_entries = - TW_CL_SWAP16(BUILD_LUN_H4__SGL_ENTRIES(scsi_req->lun, - scsi_req->sgl_entries)); - tw_cli_fill_sg_list(ctlr, scsi_req->sg_list, - cmd->sg_list, scsi_req->sgl_entries); - } - - if (((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) != TW_CL_NULL) || - (ctlr->reset_in_progress)) { - tw_cli_req_q_insert_tail(req, TW_CLI_PENDING_Q); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_UNMASK_COMMAND_INTERRUPT); - } else if ((error = tw_cli_submit_cmd(req))) { - tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), - "Could not start request. request = %p, error = %d", - req, error); - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - return(error); -} - -/* - * Function name: tw_cli_submit_cmd - * Description: Submits a cmd to firmware. - * - * Input: req -- ptr to CL internal request context - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_submit_cmd(struct tw_cli_req_context *req) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; - TW_UINT32 status_reg; - TW_INT32 error = 0; - - tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Serialize access to the controller cmd queue. */ - tw_osl_get_lock(ctlr_handle, ctlr->io_lock); - - /* For 9650SE first write low 4 bytes */ - if ((ctlr->device_id == TW_CL_DEVICE_ID_9K_E) || - (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA)) - tw_osl_write_reg(ctlr_handle, - TWA_COMMAND_QUEUE_OFFSET_LOW, - (TW_UINT32)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)), 4); - - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); - if (status_reg & TWA_STATUS_COMMAND_QUEUE_FULL) { - struct tw_cl_req_packet *req_pkt = - (struct tw_cl_req_packet *)(req->orig_req); - - tw_cli_dbg_printf(7, ctlr_handle, tw_osl_cur_func(), - "Cmd queue full"); - - if ((req->flags & TW_CLI_REQ_FLAGS_INTERNAL) - || ((req_pkt) && - (req_pkt->flags & TW_CL_REQ_RETRY_ON_BUSY)) - ) { - if (req->state != TW_CLI_REQ_STATE_PENDING) { - tw_cli_dbg_printf(2, ctlr_handle, - tw_osl_cur_func(), - "pending internal/ioctl request"); - req->state = TW_CLI_REQ_STATE_PENDING; - tw_cli_req_q_insert_tail(req, TW_CLI_PENDING_Q); - /* Unmask command interrupt. */ - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_UNMASK_COMMAND_INTERRUPT); - } else - error = TW_OSL_EBUSY; - } else { - error = TW_OSL_EBUSY; - } - } else { - tw_cli_dbg_printf(10, ctlr_handle, tw_osl_cur_func(), - "Submitting command"); - - /* Insert command into busy queue */ - req->state = TW_CLI_REQ_STATE_BUSY; - tw_cli_req_q_insert_tail(req, TW_CLI_BUSY_Q); - - if ((ctlr->device_id == TW_CL_DEVICE_ID_9K_E) || - (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA)) { - /* Now write the high 4 bytes */ - tw_osl_write_reg(ctlr_handle, - TWA_COMMAND_QUEUE_OFFSET_HIGH, - (TW_UINT32)(((TW_UINT64)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)))>>32), 4); - } else { - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { - /* First write the low 4 bytes, then the high 4. */ - tw_osl_write_reg(ctlr_handle, - TWA_COMMAND_QUEUE_OFFSET_LOW, - (TW_UINT32)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)), 4); - tw_osl_write_reg(ctlr_handle, - TWA_COMMAND_QUEUE_OFFSET_HIGH, - (TW_UINT32)(((TW_UINT64)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)))>>32), 4); - } else - tw_osl_write_reg(ctlr_handle, - TWA_COMMAND_QUEUE_OFFSET, - (TW_UINT32)(req->cmd_pkt_phys + sizeof(struct tw_cl_command_header)), 4); - } - } - - tw_osl_free_lock(ctlr_handle, ctlr->io_lock); - - return(error); -} - -/* - * Function name: tw_cl_fw_passthru - * Description: Interface to OS Layer for accepting firmware - * passthru requests. - * Input: ctlr_handle -- controller handle - * req_pkt -- OSL built request packet - * req_handle -- request handle - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_fw_passthru(struct tw_cl_ctlr_handle *ctlr_handle, - struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle) -{ - struct tw_cli_ctlr_context *ctlr; - struct tw_cli_req_context *req; - union tw_cl_command_7k *cmd_7k; - struct tw_cl_command_9k *cmd_9k; - struct tw_cl_passthru_req_packet *pt_req; - TW_UINT8 opcode; - TW_UINT8 sgl_offset; - TW_VOID *sgl = TW_CL_NULL; - TW_INT32 error = TW_CL_ERR_REQ_SUCCESS; - - tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), "entered"); - - ctlr = (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) { - tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), - "Out of request context packets: returning busy"); - return(TW_OSL_EBUSY); - } - - req_handle->cl_req_ctxt = req; - req->req_handle = req_handle; - req->orig_req = req_pkt; - req->tw_cli_callback = tw_cli_complete_io; - - req->flags |= TW_CLI_REQ_FLAGS_PASSTHRU; - - pt_req = &(req_pkt->gen_req_pkt.pt_req); - - tw_osl_memcpy(req->cmd_pkt, pt_req->cmd_pkt, - pt_req->cmd_pkt_length); - /* Build the cmd pkt. */ - if ((opcode = GET_OPCODE(((TW_UINT8 *) - (pt_req->cmd_pkt))[sizeof(struct tw_cl_command_header)])) - == TWA_FW_CMD_EXECUTE_SCSI) { - TW_UINT16 lun_l4, lun_h4; - - tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), - "passthru: 9k cmd pkt"); - req->flags |= TW_CLI_REQ_FLAGS_9K; - cmd_9k = &(req->cmd_pkt->command.cmd_pkt_9k); - lun_l4 = GET_LUN_L4(cmd_9k->lun_l4__req_id); - lun_h4 = GET_LUN_H4(cmd_9k->lun_h4__sgl_entries); - cmd_9k->lun_l4__req_id = TW_CL_SWAP16( - BUILD_LUN_L4__REQ_ID(lun_l4, req->request_id)); - if (pt_req->sgl_entries) { - cmd_9k->lun_h4__sgl_entries = - TW_CL_SWAP16(BUILD_LUN_H4__SGL_ENTRIES(lun_h4, - pt_req->sgl_entries)); - sgl = (TW_VOID *)(cmd_9k->sg_list); - } - } else { - tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), - "passthru: 7k cmd pkt"); - cmd_7k = &(req->cmd_pkt->command.cmd_pkt_7k); - cmd_7k->generic.request_id = - (TW_UINT8)(TW_CL_SWAP16(req->request_id)); - if ((sgl_offset = - GET_SGL_OFF(cmd_7k->generic.sgl_off__opcode))) { - if (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA) - sgl = (((TW_UINT32 *)cmd_7k) + cmd_7k->generic.size); - else - sgl = (((TW_UINT32 *)cmd_7k) + sgl_offset); - cmd_7k->generic.size += pt_req->sgl_entries * - ((ctlr->flags & TW_CL_64BIT_ADDRESSES) ? 3 : 2); - } - } - - if (sgl) - tw_cli_fill_sg_list(ctlr, pt_req->sg_list, - sgl, pt_req->sgl_entries); - - if (((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) != TW_CL_NULL) || - (ctlr->reset_in_progress)) { - tw_cli_req_q_insert_tail(req, TW_CLI_PENDING_Q); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_UNMASK_COMMAND_INTERRUPT); - } else if ((error = tw_cli_submit_cmd(req))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1100, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Failed to start passthru command", - "error = %d", error); - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - return(error); -} - -/* - * Function name: tw_cl_ioctl - * Description: Handler of CL supported ioctl cmds. - * - * Input: ctlr -- ptr to per ctlr structure - * cmd -- ioctl cmd - * buf -- ptr to buffer in kernel memory, which is - * a copy of the input buffer in user-space - * Output: buf -- ptr to buffer in kernel memory, which will - * need to be copied to the output buffer in - * user-space - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_ioctl(struct tw_cl_ctlr_handle *ctlr_handle, u_long cmd, TW_VOID *buf) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - struct tw_cl_ioctl_packet *user_buf = - (struct tw_cl_ioctl_packet *)buf; - struct tw_cl_event_packet event_buf; - TW_INT32 event_index; - TW_INT32 start_index; - TW_INT32 error = TW_OSL_ESUCCESS; - - tw_cli_dbg_printf(5, ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Serialize access to the AEN queue and the ioctl lock. */ - tw_osl_get_lock(ctlr_handle, ctlr->gen_lock); - - switch (cmd) { - case TW_CL_IOCTL_GET_FIRST_EVENT: - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get First Event"); - - if (ctlr->aen_q_wrapped) { - if (ctlr->aen_q_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_OVERFLOW; - ctlr->aen_q_overflow = TW_CL_FALSE; - } else - user_buf->driver_pkt.status = 0; - event_index = ctlr->aen_head; - } else { - if (ctlr->aen_head == ctlr->aen_tail) { - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_NO_EVENTS; - break; - } - user_buf->driver_pkt.status = 0; - event_index = ctlr->aen_tail; /* = 0 */ - } - tw_osl_memcpy(user_buf->data_buf, - &(ctlr->aen_queue[event_index]), - sizeof(struct tw_cl_event_packet)); - - ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; - - break; - - case TW_CL_IOCTL_GET_LAST_EVENT: - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get Last Event"); - - if (ctlr->aen_q_wrapped) { - if (ctlr->aen_q_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_OVERFLOW; - ctlr->aen_q_overflow = TW_CL_FALSE; - } else - user_buf->driver_pkt.status = 0; - } else { - if (ctlr->aen_head == ctlr->aen_tail) { - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_NO_EVENTS; - break; - } - user_buf->driver_pkt.status = 0; - } - event_index = (ctlr->aen_head - 1 + ctlr->max_aens_supported) % - ctlr->max_aens_supported; - - tw_osl_memcpy(user_buf->data_buf, - &(ctlr->aen_queue[event_index]), - sizeof(struct tw_cl_event_packet)); - - ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; - - break; - - case TW_CL_IOCTL_GET_NEXT_EVENT: - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get Next Event"); - - user_buf->driver_pkt.status = 0; - if (ctlr->aen_q_wrapped) { - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get Next Event: wrapped"); - if (ctlr->aen_q_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - tw_cli_dbg_printf(2, ctlr_handle, - tw_osl_cur_func(), - "Get Next Event: overflow"); - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_OVERFLOW; - ctlr->aen_q_overflow = TW_CL_FALSE; - } - start_index = ctlr->aen_head; - } else { - if (ctlr->aen_head == ctlr->aen_tail) { - tw_cli_dbg_printf(3, ctlr_handle, - tw_osl_cur_func(), - "Get Next Event: empty queue"); - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_NO_EVENTS; - break; - } - start_index = ctlr->aen_tail; /* = 0 */ - } - tw_osl_memcpy(&event_buf, user_buf->data_buf, - sizeof(struct tw_cl_event_packet)); - - event_index = (start_index + event_buf.sequence_id - - ctlr->aen_queue[start_index].sequence_id + 1) % - ctlr->max_aens_supported; - - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get Next Event: si = %x, ei = %x, ebsi = %x, " - "sisi = %x, eisi = %x", - start_index, event_index, event_buf.sequence_id, - ctlr->aen_queue[start_index].sequence_id, - ctlr->aen_queue[event_index].sequence_id); - - if (! (ctlr->aen_queue[event_index].sequence_id > - event_buf.sequence_id)) { - /* - * We don't have any event matching the criterion. So, - * we have to report TW_CL_ERROR_NO_EVENTS. If we also - * encountered an overflow condition above, we cannot - * report both conditions during this call. We choose - * to report NO_EVENTS this time, and an overflow the - * next time we are called. - */ - if (user_buf->driver_pkt.status == - TW_CL_ERROR_AEN_OVERFLOW) { - /* - * Make a note so we report the overflow - * next time. - */ - ctlr->aen_q_overflow = TW_CL_TRUE; - } - user_buf->driver_pkt.status = TW_CL_ERROR_AEN_NO_EVENTS; - break; - } - /* Copy the event -- even if there has been an overflow. */ - tw_osl_memcpy(user_buf->data_buf, - &(ctlr->aen_queue[event_index]), - sizeof(struct tw_cl_event_packet)); - - ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; - - break; - - case TW_CL_IOCTL_GET_PREVIOUS_EVENT: - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get Previous Event"); - - user_buf->driver_pkt.status = 0; - if (ctlr->aen_q_wrapped) { - if (ctlr->aen_q_overflow) { - /* - * The aen queue has wrapped, even before some - * events have been retrieved. Let the caller - * know that he missed out on some AEN's. - */ - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_OVERFLOW; - ctlr->aen_q_overflow = TW_CL_FALSE; - } - start_index = ctlr->aen_head; - } else { - if (ctlr->aen_head == ctlr->aen_tail) { - user_buf->driver_pkt.status = - TW_CL_ERROR_AEN_NO_EVENTS; - break; - } - start_index = ctlr->aen_tail; /* = 0 */ - } - tw_osl_memcpy(&event_buf, user_buf->data_buf, - sizeof(struct tw_cl_event_packet)); - - event_index = (start_index + event_buf.sequence_id - - ctlr->aen_queue[start_index].sequence_id - 1) % - ctlr->max_aens_supported; - - if (! (ctlr->aen_queue[event_index].sequence_id < - event_buf.sequence_id)) { - /* - * We don't have any event matching the criterion. So, - * we have to report TW_CL_ERROR_NO_EVENTS. If we also - * encountered an overflow condition above, we cannot - * report both conditions during this call. We choose - * to report NO_EVENTS this time, and an overflow the - * next time we are called. - */ - if (user_buf->driver_pkt.status == - TW_CL_ERROR_AEN_OVERFLOW) { - /* - * Make a note so we report the overflow - * next time. - */ - ctlr->aen_q_overflow = TW_CL_TRUE; - } - user_buf->driver_pkt.status = TW_CL_ERROR_AEN_NO_EVENTS; - break; - } - /* Copy the event -- even if there has been an overflow. */ - tw_osl_memcpy(user_buf->data_buf, - &(ctlr->aen_queue[event_index]), - sizeof(struct tw_cl_event_packet)); - - ctlr->aen_queue[event_index].retrieved = TW_CL_AEN_RETRIEVED; - - break; - - case TW_CL_IOCTL_GET_LOCK: - { - struct tw_cl_lock_packet lock_pkt; - TW_TIME cur_time; - - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get ioctl lock"); - - cur_time = tw_osl_get_local_time(); - tw_osl_memcpy(&lock_pkt, user_buf->data_buf, - sizeof(struct tw_cl_lock_packet)); - - if ((ctlr->ioctl_lock.lock == TW_CLI_LOCK_FREE) || - (lock_pkt.force_flag) || - (cur_time >= ctlr->ioctl_lock.timeout)) { - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "GET_LOCK: Getting lock!"); - ctlr->ioctl_lock.lock = TW_CLI_LOCK_HELD; - ctlr->ioctl_lock.timeout = - cur_time + (lock_pkt.timeout_msec / 1000); - lock_pkt.time_remaining_msec = lock_pkt.timeout_msec; - user_buf->driver_pkt.status = 0; - } else { - tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), - "GET_LOCK: Lock already held!"); - lock_pkt.time_remaining_msec = (TW_UINT32)( - (ctlr->ioctl_lock.timeout - cur_time) * 1000); - user_buf->driver_pkt.status = - TW_CL_ERROR_IOCTL_LOCK_ALREADY_HELD; - } - tw_osl_memcpy(user_buf->data_buf, &lock_pkt, - sizeof(struct tw_cl_lock_packet)); - break; - } - - case TW_CL_IOCTL_RELEASE_LOCK: - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Release ioctl lock"); - - if (ctlr->ioctl_lock.lock == TW_CLI_LOCK_FREE) { - tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), - "twa_ioctl: RELEASE_LOCK: Lock not held!"); - user_buf->driver_pkt.status = - TW_CL_ERROR_IOCTL_LOCK_NOT_HELD; - } else { - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "RELEASE_LOCK: Releasing lock!"); - ctlr->ioctl_lock.lock = TW_CLI_LOCK_FREE; - user_buf->driver_pkt.status = 0; - } - break; - - case TW_CL_IOCTL_GET_COMPATIBILITY_INFO: - { - struct tw_cl_compatibility_packet comp_pkt; - - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Get compatibility info"); - - tw_osl_memcpy(comp_pkt.driver_version, - TW_OSL_DRIVER_VERSION_STRING, - sizeof(TW_OSL_DRIVER_VERSION_STRING)); - comp_pkt.working_srl = ctlr->working_srl; - comp_pkt.working_branch = ctlr->working_branch; - comp_pkt.working_build = ctlr->working_build; - comp_pkt.driver_srl_high = TWA_CURRENT_FW_SRL; - comp_pkt.driver_branch_high = - TWA_CURRENT_FW_BRANCH(ctlr->arch_id); - comp_pkt.driver_build_high = - TWA_CURRENT_FW_BUILD(ctlr->arch_id); - comp_pkt.driver_srl_low = TWA_BASE_FW_SRL; - comp_pkt.driver_branch_low = TWA_BASE_FW_BRANCH; - comp_pkt.driver_build_low = TWA_BASE_FW_BUILD; - comp_pkt.fw_on_ctlr_srl = ctlr->fw_on_ctlr_srl; - comp_pkt.fw_on_ctlr_branch = ctlr->fw_on_ctlr_branch; - comp_pkt.fw_on_ctlr_build = ctlr->fw_on_ctlr_build; - user_buf->driver_pkt.status = 0; - - /* Copy compatibility information to user space. */ - tw_osl_memcpy(user_buf->data_buf, &comp_pkt, - (sizeof(struct tw_cl_compatibility_packet) < - user_buf->driver_pkt.buffer_length) ? - sizeof(struct tw_cl_compatibility_packet) : - user_buf->driver_pkt.buffer_length); - break; - } - - default: - /* Unknown opcode. */ - tw_cli_dbg_printf(3, ctlr_handle, tw_osl_cur_func(), - "Unknown ioctl cmd 0x%x", cmd); - error = TW_OSL_ENOTTY; - } - - tw_osl_free_lock(ctlr_handle, ctlr->gen_lock); - return(error); -} - -/* - * Function name: tw_cli_get_param - * Description: Get a firmware parameter. - * - * Input: ctlr -- ptr to per ctlr structure - * table_id -- parameter table # - * param_id -- index of the parameter in the table - * param_size -- size of the parameter in bytes - * callback -- ptr to function, if any, to be called - * back on completion; TW_CL_NULL if no callback. - * Output: param_data -- param value - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_get_param(struct tw_cli_ctlr_context *ctlr, TW_INT32 table_id, - TW_INT32 param_id, TW_VOID *param_data, TW_INT32 param_size, - TW_VOID (* callback)(struct tw_cli_req_context *req)) -{ - struct tw_cli_req_context *req; - union tw_cl_command_7k *cmd; - struct tw_cl_param_9k *param = TW_CL_NULL; - TW_INT32 error = TW_OSL_EBUSY; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Get a request packet. */ - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) - goto out; - - /* Make sure this is the only CL internal request at this time. */ - if (ctlr->internal_req_busy) { - error = TW_OSL_EBUSY; - goto out; - } - ctlr->internal_req_busy = TW_CL_TRUE; - req->data = ctlr->internal_req_data; - req->data_phys = ctlr->internal_req_data_phys; - req->length = TW_CLI_SECTOR_SIZE; - req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; - - /* Initialize memory to read data into. */ - param = (struct tw_cl_param_9k *)(req->data); - tw_osl_memzero(param, sizeof(struct tw_cl_param_9k) - 1 + param_size); - - /* Build the cmd pkt. */ - cmd = &(req->cmd_pkt->command.cmd_pkt_7k); - - req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; - - cmd->param.sgl_off__opcode = - BUILD_SGL_OFF__OPCODE(2, TWA_FW_CMD_GET_PARAM); - cmd->param.request_id = (TW_UINT8)(TW_CL_SWAP16(req->request_id)); - cmd->param.host_id__unit = BUILD_HOST_ID__UNIT(0, 0); - cmd->param.param_count = TW_CL_SWAP16(1); - - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { - ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].address = - TW_CL_SWAP64(req->data_phys); - ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].length = - TW_CL_SWAP32(req->length); - cmd->param.size = 2 + 3; - } else { - ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].address = - TW_CL_SWAP32(req->data_phys); - ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].length = - TW_CL_SWAP32(req->length); - cmd->param.size = 2 + 2; - } - - /* Specify which parameter we need. */ - param->table_id = TW_CL_SWAP16(table_id | TWA_9K_PARAM_DESCRIPTOR); - param->parameter_id = (TW_UINT8)(param_id); - param->parameter_size_bytes = TW_CL_SWAP16(param_size); - - /* Submit the command. */ - if (callback == TW_CL_NULL) { - /* There's no call back; wait till the command completes. */ - error = tw_cli_submit_and_poll_request(req, - TW_CLI_REQUEST_TIMEOUT_PERIOD); - if (error) - goto out; - if ((error = cmd->param.status)) { -#if 0 - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - &(req->cmd_pkt->cmd_hdr)); -#endif // 0 - goto out; - } - tw_osl_memcpy(param_data, param->data, param_size); - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } else { - /* There's a call back. Simply submit the command. */ - req->tw_cli_callback = callback; - if ((error = tw_cli_submit_cmd(req))) - goto out; - } - return(0); - -out: - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1101, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "get_param failed", - "error = %d", error); - if (param) - ctlr->internal_req_busy = TW_CL_FALSE; - if (req) - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - return(1); -} - -/* - * Function name: tw_cli_set_param - * Description: Set a firmware parameter. - * - * Input: ctlr -- ptr to per ctlr structure - * table_id -- parameter table # - * param_id -- index of the parameter in the table - * param_size -- size of the parameter in bytes - * callback -- ptr to function, if any, to be called - * back on completion; TW_CL_NULL if no callback. - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_set_param(struct tw_cli_ctlr_context *ctlr, TW_INT32 table_id, - TW_INT32 param_id, TW_INT32 param_size, TW_VOID *data, - TW_VOID (* callback)(struct tw_cli_req_context *req)) -{ - struct tw_cli_req_context *req; - union tw_cl_command_7k *cmd; - struct tw_cl_param_9k *param = TW_CL_NULL; - TW_INT32 error = TW_OSL_EBUSY; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Get a request packet. */ - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) - goto out; - - /* Make sure this is the only CL internal request at this time. */ - if (ctlr->internal_req_busy) { - error = TW_OSL_EBUSY; - goto out; - } - ctlr->internal_req_busy = TW_CL_TRUE; - req->data = ctlr->internal_req_data; - req->data_phys = ctlr->internal_req_data_phys; - req->length = TW_CLI_SECTOR_SIZE; - req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; - - /* Initialize memory to send data using. */ - param = (struct tw_cl_param_9k *)(req->data); - tw_osl_memzero(param, sizeof(struct tw_cl_param_9k) - 1 + param_size); - - /* Build the cmd pkt. */ - cmd = &(req->cmd_pkt->command.cmd_pkt_7k); - - req->cmd_pkt->cmd_hdr.header_desc.size_header = 128; - - cmd->param.sgl_off__opcode = - BUILD_SGL_OFF__OPCODE(2, TWA_FW_CMD_SET_PARAM); - cmd->param.request_id = (TW_UINT8)(TW_CL_SWAP16(req->request_id)); - cmd->param.host_id__unit = BUILD_HOST_ID__UNIT(0, 0); - cmd->param.param_count = TW_CL_SWAP16(1); - - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { - ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].address = - TW_CL_SWAP64(req->data_phys); - ((struct tw_cl_sg_desc64 *)(cmd->param.sgl))[0].length = - TW_CL_SWAP32(req->length); - cmd->param.size = 2 + 3; - } else { - ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].address = - TW_CL_SWAP32(req->data_phys); - ((struct tw_cl_sg_desc32 *)(cmd->param.sgl))[0].length = - TW_CL_SWAP32(req->length); - cmd->param.size = 2 + 2; - } - - /* Specify which parameter we want to set. */ - param->table_id = TW_CL_SWAP16(table_id | TWA_9K_PARAM_DESCRIPTOR); - param->parameter_id = (TW_UINT8)(param_id); - param->parameter_size_bytes = TW_CL_SWAP16(param_size); - tw_osl_memcpy(param->data, data, param_size); - - /* Submit the command. */ - if (callback == TW_CL_NULL) { - /* There's no call back; wait till the command completes. */ - error = tw_cli_submit_and_poll_request(req, - TW_CLI_REQUEST_TIMEOUT_PERIOD); - if (error) - goto out; - if ((error = cmd->param.status)) { -#if 0 - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - &(req->cmd_pkt->cmd_hdr)); -#endif // 0 - goto out; - } - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } else { - /* There's a call back. Simply submit the command. */ - req->tw_cli_callback = callback; - if ((error = tw_cli_submit_cmd(req))) - goto out; - } - return(error); - -out: - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1102, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "set_param failed", - "error = %d", error); - if (param) - ctlr->internal_req_busy = TW_CL_FALSE; - if (req) - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - return(error); -} - -/* - * Function name: tw_cli_submit_and_poll_request - * Description: Sends down a firmware cmd, and waits for the completion - * in a tight loop. - * - * Input: req -- ptr to request pkt - * timeout -- max # of seconds to wait before giving up - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_submit_and_poll_request(struct tw_cli_req_context *req, - TW_UINT32 timeout) -{ - struct tw_cli_ctlr_context *ctlr = req->ctlr; - TW_TIME end_time; - TW_INT32 error; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* - * If the cmd queue is full, tw_cli_submit_cmd will queue this - * request in the pending queue, since this is an internal request. - */ - if ((error = tw_cli_submit_cmd(req))) { - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1103, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Failed to start internal request", - "error = %d", error); - return(error); - } - - /* - * Poll for the response until the command gets completed, or there's - * a timeout. - */ - end_time = tw_osl_get_local_time() + timeout; - do { - if ((error = req->error_code)) - /* - * This will take care of completion due to a reset, - * or a failure in tw_cli_submit_pending_queue. - * The caller should do the clean-up. - */ - return(error); - - /* See if the command completed. */ - tw_cli_process_resp_intr(ctlr); - - if ((req->state != TW_CLI_REQ_STATE_BUSY) && - (req->state != TW_CLI_REQ_STATE_PENDING)) - return(req->state != TW_CLI_REQ_STATE_COMPLETE); - } while (tw_osl_get_local_time() <= end_time); - - /* Time out! */ - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1104, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Internal request timed out", - "request = %p", req); - - /* - * We will reset the controller only if the request has already been - * submitted, so as to not lose the request packet. If a busy request - * timed out, the reset will take care of freeing resources. If a - * pending request timed out, we will free resources for that request, - * right here, thereby avoiding a reset. So, the caller is expected - * to NOT cleanup when TW_OSL_ETIMEDOUT is returned. - */ - - /* - * We have to make sure that this timed out request, if it were in the - * pending queue, doesn't get submitted while we are here, from - * tw_cli_submit_pending_queue. There could be a race in that case. - * Need to revisit. - */ - if (req->state == TW_CLI_REQ_STATE_PENDING) { - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), - "Removing request from pending queue"); - /* - * Request was never submitted. Clean up. Note that we did - * not do a reset. So, we have to remove the request ourselves - * from the pending queue (as against tw_cli_drain_pendinq_queue - * taking care of it). - */ - tw_cli_req_q_remove_item(req, TW_CLI_PENDING_Q); - if ((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) == TW_CL_NULL) - TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, - TWA_CONTROL_MASK_COMMAND_INTERRUPT); - if (req->data) - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - - return(TW_OSL_ETIMEDOUT); -} - -/* - * Function name: tw_cl_reset_ctlr - * Description: Soft resets and then initializes the controller; - * drains any incomplete requests. - * - * Input: ctlr -- ptr to per ctlr structure - * req_handle -- ptr to request handle - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cl_reset_ctlr(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - struct twa_softc *sc = ctlr_handle->osl_ctlr_ctxt; - struct tw_cli_req_context *req; - TW_INT32 reset_attempt = 1; - TW_INT32 error = 0; - - tw_cli_dbg_printf(2, ctlr_handle, tw_osl_cur_func(), "entered"); - - ctlr->reset_in_progress = TW_CL_TRUE; - twa_teardown_intr(sc); - - /* - * Error back all requests in the complete, busy, and pending queues. - * If any request is already on its way to getting submitted, it's in - * none of these queues and so, will not be completed. That request - * will continue its course and get submitted to the controller after - * the reset is done (and io_lock is released). - */ - tw_cli_drain_complete_queue(ctlr); - tw_cli_drain_busy_queue(ctlr); - tw_cli_drain_pending_queue(ctlr); - ctlr->internal_req_busy = TW_CL_FALSE; - ctlr->get_more_aens = TW_CL_FALSE; - - /* Soft reset the controller. */ - while (reset_attempt <= TW_CLI_MAX_RESET_ATTEMPTS) { - if ((error = tw_cli_soft_reset(ctlr))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1105, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Controller reset failed", - "error = %d; attempt %d", error, reset_attempt++); - reset_attempt++; - continue; - } - - /* Re-establish logical connection with the controller. */ - if ((error = tw_cli_init_connection(ctlr, - (TW_UINT16)(ctlr->max_simult_reqs), - 0, 0, 0, 0, 0, TW_CL_NULL, TW_CL_NULL, TW_CL_NULL, - TW_CL_NULL, TW_CL_NULL))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1106, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Can't initialize connection after reset", - "error = %d", error); - reset_attempt++; - continue; - } - -#ifdef TW_OSL_DEBUG - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1107, 0x3, TW_CL_SEVERITY_INFO_STRING, - "Controller reset done!", " "); -#endif /* TW_OSL_DEBUG */ - break; - } /* End of while */ - - /* Move commands from the reset queue to the pending queue. */ - while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_RESET_Q)) != TW_CL_NULL) { - tw_osl_timeout(req->req_handle); - tw_cli_req_q_insert_tail(req, TW_CLI_PENDING_Q); - } - - twa_setup_intr(sc); - tw_cli_enable_interrupts(ctlr); - if ((TW_CL_Q_FIRST_ITEM(&(ctlr->req_q_head[TW_CLI_PENDING_Q]))) != TW_CL_NULL) - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_UNMASK_COMMAND_INTERRUPT); - ctlr->reset_in_progress = TW_CL_FALSE; - ctlr->reset_needed = TW_CL_FALSE; - - /* Request for a bus re-scan. */ - tw_osl_scan_bus(ctlr_handle); - - return(error); -} - -TW_VOID -tw_cl_set_reset_needed(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - - ctlr->reset_needed = TW_CL_TRUE; -} - -TW_INT32 -tw_cl_is_reset_needed(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - - return(ctlr->reset_needed); -} - -TW_INT32 -tw_cl_is_active(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *) - (ctlr_handle->cl_ctlr_ctxt); - - return(ctlr->active); -} - -/* - * Function name: tw_cli_soft_reset - * Description: Does the actual soft reset. - * - * Input: ctlr -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_soft_reset(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; - int found; - int loop_count; - TW_UINT32 error; - - tw_cli_dbg_printf(1, ctlr_handle, tw_osl_cur_func(), "entered"); - - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1108, 0x3, TW_CL_SEVERITY_INFO_STRING, - "Resetting controller...", - " "); - - /* Don't let any new commands get submitted to the controller. */ - tw_osl_get_lock(ctlr_handle, ctlr->io_lock); - - TW_CLI_SOFT_RESET(ctlr_handle); - - if ((ctlr->device_id == TW_CL_DEVICE_ID_9K_X) || - (ctlr->device_id == TW_CL_DEVICE_ID_9K_E) || - (ctlr->device_id == TW_CL_DEVICE_ID_9K_SA)) { - /* - * There's a hardware bug in the G133 ASIC, which can lead to - * PCI parity errors and hangs, if the host accesses any - * registers when the firmware is resetting the hardware, as - * part of a hard/soft reset. The window of time when the - * problem can occur is about 10 ms. Here, we will handshake - * with the firmware to find out when the firmware is pulling - * down the hardware reset pin, and wait for about 500 ms to - * make sure we don't access any hardware registers (for - * polling) during that window. - */ - ctlr->reset_phase1_in_progress = TW_CL_TRUE; - loop_count = 0; - do { - found = (tw_cli_find_response(ctlr, TWA_RESET_PHASE1_NOTIFICATION_RESPONSE) == TW_OSL_ESUCCESS); - tw_osl_delay(10); - loop_count++; - error = 0x7888; - } while (!found && (loop_count < 6000000)); /* Loop for no more than 60 seconds */ - - if (!found) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1109, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Missed firmware handshake after soft-reset", - "error = %d", error); - tw_osl_free_lock(ctlr_handle, ctlr->io_lock); - return(error); - } - - tw_osl_delay(TWA_RESET_PHASE1_WAIT_TIME_MS * 1000); - ctlr->reset_phase1_in_progress = TW_CL_FALSE; - } - - if ((error = tw_cli_poll_status(ctlr, - TWA_STATUS_MICROCONTROLLER_READY | - TWA_STATUS_ATTENTION_INTERRUPT, - TW_CLI_RESET_TIMEOUT_PERIOD))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1109, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Micro-ctlr not ready/No attn intr after reset", - "error = %d", error); - tw_osl_free_lock(ctlr_handle, ctlr->io_lock); - return(error); - } - - TW_CLI_WRITE_CONTROL_REGISTER(ctlr_handle, - TWA_CONTROL_CLEAR_ATTENTION_INTERRUPT); - - if ((error = tw_cli_drain_response_queue(ctlr))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x110A, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Can't drain response queue after reset", - "error = %d", error); - tw_osl_free_lock(ctlr_handle, ctlr->io_lock); - return(error); - } - - tw_osl_free_lock(ctlr_handle, ctlr->io_lock); - - if ((error = tw_cli_drain_aen_queue(ctlr))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x110B, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Can't drain AEN queue after reset", - "error = %d", error); - return(error); - } - - if ((error = tw_cli_find_aen(ctlr, TWA_AEN_SOFT_RESET))) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x110C, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Reset not reported by controller", - "error = %d", error); - return(error); - } - - return(TW_OSL_ESUCCESS); -} - -/* - * Function name: tw_cli_send_scsi_cmd - * Description: Sends down a scsi cmd to fw. - * - * Input: req -- ptr to request pkt - * cmd -- opcode of scsi cmd to send - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_send_scsi_cmd(struct tw_cli_req_context *req, TW_INT32 cmd) -{ - struct tw_cl_command_packet *cmdpkt; - struct tw_cl_command_9k *cmd9k; - struct tw_cli_ctlr_context *ctlr; - TW_INT32 error; - - ctlr = req->ctlr; - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Make sure this is the only CL internal request at this time. */ - if (ctlr->internal_req_busy) - return(TW_OSL_EBUSY); - ctlr->internal_req_busy = TW_CL_TRUE; - req->data = ctlr->internal_req_data; - req->data_phys = ctlr->internal_req_data_phys; - tw_osl_memzero(req->data, TW_CLI_SECTOR_SIZE); - req->length = TW_CLI_SECTOR_SIZE; - - /* Build the cmd pkt. */ - cmdpkt = req->cmd_pkt; - - cmdpkt->cmd_hdr.header_desc.size_header = 128; - - cmd9k = &(cmdpkt->command.cmd_pkt_9k); - - cmd9k->res__opcode = - BUILD_RES__OPCODE(0, TWA_FW_CMD_EXECUTE_SCSI); - cmd9k->unit = 0; - cmd9k->lun_l4__req_id = TW_CL_SWAP16(req->request_id); - cmd9k->status = 0; - cmd9k->sgl_offset = 16; /* offset from end of hdr = max cdb len */ - cmd9k->lun_h4__sgl_entries = TW_CL_SWAP16(1); - - if (req->ctlr->flags & TW_CL_64BIT_ADDRESSES) { - ((struct tw_cl_sg_desc64 *)(cmd9k->sg_list))[0].address = - TW_CL_SWAP64(req->data_phys); - ((struct tw_cl_sg_desc64 *)(cmd9k->sg_list))[0].length = - TW_CL_SWAP32(req->length); - } else { - ((struct tw_cl_sg_desc32 *)(cmd9k->sg_list))[0].address = - TW_CL_SWAP32(req->data_phys); - ((struct tw_cl_sg_desc32 *)(cmd9k->sg_list))[0].length = - TW_CL_SWAP32(req->length); - } - - cmd9k->cdb[0] = (TW_UINT8)cmd; - cmd9k->cdb[4] = 128; - - if ((error = tw_cli_submit_cmd(req))) - if (error != TW_OSL_EBUSY) { - tw_cli_dbg_printf(1, ctlr->ctlr_handle, - tw_osl_cur_func(), - "Failed to start SCSI command", - "request = %p, error = %d", req, error); - return(TW_OSL_EIO); - } - return(TW_OSL_ESUCCESS); -} - -/* - * Function name: tw_cli_get_aen - * Description: Sends down a Request Sense cmd to fw to fetch an AEN. - * - * Input: ctlr -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_get_aen(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - TW_INT32 error; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) - return(TW_OSL_EBUSY); - - req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; - req->flags |= TW_CLI_REQ_FLAGS_9K; - req->tw_cli_callback = tw_cli_aen_callback; - if ((error = tw_cli_send_scsi_cmd(req, 0x03 /* REQUEST_SENSE */))) { - tw_cli_dbg_printf(1, ctlr->ctlr_handle, tw_osl_cur_func(), - "Could not send SCSI command", - "request = %p, error = %d", req, error); - if (req->data) - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - return(error); -} - -/* - * Function name: tw_cli_fill_sg_list - * Description: Fills in the scatter/gather list. - * - * Input: ctlr -- ptr to per ctlr structure - * sgl_src -- ptr to fill the sg list from - * sgl_dest-- ptr to sg list - * nsegments--# of segments - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_fill_sg_list(struct tw_cli_ctlr_context *ctlr, TW_VOID *sgl_src, - TW_VOID *sgl_dest, TW_INT32 num_sgl_entries) -{ - TW_INT32 i; - - tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { - struct tw_cl_sg_desc64 *sgl_s = - (struct tw_cl_sg_desc64 *)sgl_src; - struct tw_cl_sg_desc64 *sgl_d = - (struct tw_cl_sg_desc64 *)sgl_dest; - - tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), - "64 bit addresses"); - for (i = 0; i < num_sgl_entries; i++) { - sgl_d[i].address = TW_CL_SWAP64(sgl_s->address); - sgl_d[i].length = TW_CL_SWAP32(sgl_s->length); - sgl_s++; - if (ctlr->flags & TW_CL_64BIT_SG_LENGTH) - sgl_s = (struct tw_cl_sg_desc64 *) - (((TW_INT8 *)(sgl_s)) + 4); - } - } else { - struct tw_cl_sg_desc32 *sgl_s = - (struct tw_cl_sg_desc32 *)sgl_src; - struct tw_cl_sg_desc32 *sgl_d = - (struct tw_cl_sg_desc32 *)sgl_dest; - - tw_cli_dbg_printf(10, ctlr->ctlr_handle, tw_osl_cur_func(), - "32 bit addresses"); - for (i = 0; i < num_sgl_entries; i++) { - sgl_d[i].address = TW_CL_SWAP32(sgl_s[i].address); - sgl_d[i].length = TW_CL_SWAP32(sgl_s[i].length); - } - } -} diff --git a/sys/dev/twa/tw_cl_ioctl.h b/sys/dev/twa/tw_cl_ioctl.h deleted file mode 100644 index ca1bc10b0c3d..000000000000 --- a/sys/dev/twa/tw_cl_ioctl.h +++ /dev/null @@ -1,104 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_CL_IOCTL_H - -#define TW_CL_IOCTL_H - -/* - * Macros and structures for Common Layer handled ioctls. - */ - -#define TW_CL_AEN_NOT_RETRIEVED 0x1 -#define TW_CL_AEN_RETRIEVED 0x2 - -#define TW_CL_ERROR_AEN_NO_EVENTS 0x1003 /* No more events */ -#define TW_CL_ERROR_AEN_OVERFLOW 0x1004 /* AEN overflow occurred */ - -#define TW_CL_ERROR_IOCTL_LOCK_NOT_HELD 0x1001 /* Not locked */ -#define TW_CL_ERROR_IOCTL_LOCK_ALREADY_HELD 0x1002 /* Already locked */ - -#pragma pack(1) - -/* Structure used to handle GET/RELEASE LOCK ioctls. */ -struct tw_cl_lock_packet { - TW_UINT32 timeout_msec; - TW_UINT32 time_remaining_msec; - TW_UINT32 force_flag; -}; - -/* Structure used to handle GET COMPATIBILITY INFO ioctl. */ -struct tw_cl_compatibility_packet { - TW_UINT8 driver_version[32];/* driver version */ - TW_UINT16 working_srl; /* driver & firmware negotiated srl */ - TW_UINT16 working_branch; /* branch # of the firmware that the - driver is compatible with */ - TW_UINT16 working_build; /* build # of the firmware that the - driver is compatible with */ - TW_UINT16 driver_srl_high;/* highest driver supported srl */ - TW_UINT16 driver_branch_high;/* highest driver supported branch */ - TW_UINT16 driver_build_high;/* highest driver supported build */ - TW_UINT16 driver_srl_low;/* lowest driver supported srl */ - TW_UINT16 driver_branch_low;/* lowest driver supported branch */ - TW_UINT16 driver_build_low;/* lowest driver supported build */ - TW_UINT16 fw_on_ctlr_srl; /* srl of running firmware */ - TW_UINT16 fw_on_ctlr_branch;/* branch # of running firmware */ - TW_UINT16 fw_on_ctlr_build;/* build # of running firmware */ -}; - -/* Driver understandable part of the ioctl packet built by the API. */ -struct tw_cl_driver_packet { - TW_UINT32 control_code; - TW_UINT32 status; - TW_UINT32 unique_id; - TW_UINT32 sequence_id; - TW_UINT32 os_status; - TW_UINT32 buffer_length; -}; - -/* ioctl packet built by the API. */ -struct tw_cl_ioctl_packet { - struct tw_cl_driver_packet driver_pkt; - TW_INT8 padding[488]; - struct tw_cl_command_packet cmd_pkt; - TW_INT8 data_buf[1]; -}; - -#pragma pack() - -#endif /* TW_CL_IOCTL_H */ diff --git a/sys/dev/twa/tw_cl_misc.c b/sys/dev/twa/tw_cl_misc.c deleted file mode 100644 index fd2fb040eaac..000000000000 --- a/sys/dev/twa/tw_cl_misc.c +++ /dev/null @@ -1,991 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -/* - * Common Layer miscellaneous functions. - */ - -#include "tw_osl_share.h" -#include "tw_cl_share.h" -#include "tw_cl_fwif.h" -#include "tw_cl_ioctl.h" -#include "tw_cl.h" -#include "tw_cl_externs.h" -#include "tw_osl_ioctl.h" - -/* AEN severity table. */ -TW_INT8 *tw_cli_severity_string_table[] = { - "None", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_SEVERITY_WARNING_STRING, - TW_CL_SEVERITY_INFO_STRING, - TW_CL_SEVERITY_DEBUG_STRING, - "" -}; - -/* - * Function name: tw_cli_drain_complete_queue - * Description: This function gets called during a controller reset. - * It errors back to the OS Layer, all those requests that - * are in the complete queue, at the time of the reset. - * Any CL internal requests will be simply freed. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_drain_complete_queue(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - struct tw_cl_req_packet *req_pkt; - - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Walk the busy queue. */ - while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_COMPLETE_Q)) != - TW_CL_NULL) { - if (req->flags & TW_CLI_REQ_FLAGS_INTERNAL) { - /* - * It's an internal request. Set the appropriate - * error and call the CL internal callback if there's - * one. If the request originator is polling for - * completion, he should be checking req->error to - * determine that the request did not go through. - * The request originators are responsible for the - * clean-up. - */ - req->error_code = TW_CL_ERR_REQ_BUS_RESET; - if (req->tw_cli_callback) - req->tw_cli_callback(req); - } else if (req->flags & TW_CLI_REQ_FLAGS_PASSTHRU) { - /* It's a passthru request. Complete it. */ - if ((req_pkt = req->orig_req) != TW_CL_NULL) { - req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; - - if (req_pkt->tw_osl_callback) - req_pkt->tw_osl_callback(req->req_handle); - } - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } else { - /* It's an external (SCSI) request. Add it to the reset queue. */ - tw_osl_untimeout(req->req_handle); - tw_cli_req_q_insert_tail(req, TW_CLI_RESET_Q); - } - } /* End of while loop */ -} - -/* - * Function name: tw_cli_drain_busy_queue - * Description: This function gets called during a controller reset. - * It errors back to the OS Layer, all those requests that - * were pending with the firmware, at the time of the - * reset. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_drain_busy_queue(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - struct tw_cl_req_packet *req_pkt; - - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Walk the busy queue. */ - while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_BUSY_Q)) != - TW_CL_NULL) { - if (req->flags & TW_CLI_REQ_FLAGS_INTERNAL) { - /* - * It's an internal request. Set the appropriate - * error and call the CL internal callback if there's - * one. If the request originator is polling for - * completion, he should be checking req->error to - * determine that the request did not go through. - * The request originators are responsible for the - * clean-up. - */ - req->error_code = TW_CL_ERR_REQ_BUS_RESET; - if (req->tw_cli_callback) - req->tw_cli_callback(req); - } else if (req->flags & TW_CLI_REQ_FLAGS_PASSTHRU) { - /* It's a passthru request. Complete it. */ - if ((req_pkt = req->orig_req) != TW_CL_NULL) { - req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; - - if (req_pkt->tw_osl_callback) - req_pkt->tw_osl_callback(req->req_handle); - } - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } else { - /* It's an external (SCSI) request. Add it to the reset queue. */ - tw_osl_untimeout(req->req_handle); - tw_cli_req_q_insert_tail(req, TW_CLI_RESET_Q); - } - } /* End of while loop */ -} - -/* - * Function name: tw_cli_drain_pending_queue - * Description: This function gets called during a controller reset. - * It errors back to the OS Layer, all those requests that - * were in the pending queue, at the time of the reset. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ - -TW_VOID -tw_cli_drain_pending_queue(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - struct tw_cl_req_packet *req_pkt; - - tw_cli_dbg_printf(3, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* - * Pull requests off the pending queue, and complete them. - */ - while ((req = tw_cli_req_q_remove_head(ctlr, TW_CLI_PENDING_Q)) != - TW_CL_NULL) { - if (req->flags & TW_CLI_REQ_FLAGS_INTERNAL) { - /* - * It's an internal request. Set the appropriate - * error and call the CL internal callback if there's - * one. If the request originator is polling for - * completion, he should be checking req->error to - * determine that the request did not go through. - * The request originators are responsible for the - * clean-up. - */ - req->error_code = TW_CL_ERR_REQ_BUS_RESET; - if (req->tw_cli_callback) - req->tw_cli_callback(req); - } else if (req->flags & TW_CLI_REQ_FLAGS_PASSTHRU) { - /* It's a passthru request. Complete it. */ - if ((req_pkt = req->orig_req) != TW_CL_NULL) { - req_pkt->status = TW_CL_ERR_REQ_BUS_RESET; - - if (req_pkt->tw_osl_callback) - req_pkt->tw_osl_callback(req->req_handle); - } - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } else { - /* It's an external (SCSI) request. Add it to the reset queue. */ - tw_osl_untimeout(req->req_handle); - tw_cli_req_q_insert_tail(req, TW_CLI_RESET_Q); - } - } /* End of while loop */ -} - -/* - * Function name: tw_cli_drain_response_queue - * Description: Drain the controller response queue. - * - * Input: ctlr -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_drain_response_queue(struct tw_cli_ctlr_context *ctlr) -{ - TW_UINT32 resp; - TW_UINT32 status_reg; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - for (;;) { - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); - - if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) - return(TW_OSL_ESUCCESS); /* no more response queue entries */ - - resp = TW_CLI_READ_RESPONSE_QUEUE(ctlr->ctlr_handle); - } -} - -/* - * Function name: tw_cli_find_response - * Description: Find a particular response in the ctlr response queue. - * - * Input: ctlr -- ptr to per ctlr structure - * req_id -- request id of the response to look for - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_find_response(struct tw_cli_ctlr_context *ctlr, TW_INT32 req_id) -{ - TW_UINT32 resp; - TW_INT32 resp_id; - TW_UINT32 status_reg; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - for (;;) { - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); - - if (status_reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) - return(TW_OSL_ENOTTY); /* no more response queue entries */ - - if (ctlr->device_id == TW_CL_DEVICE_ID_9K) { - resp = TW_CLI_READ_RESPONSE_QUEUE(ctlr->ctlr_handle); - resp_id = GET_RESP_ID(resp); - } else { - resp = TW_CLI_READ_LARGE_RESPONSE_QUEUE( - ctlr->ctlr_handle); - resp_id = GET_LARGE_RESP_ID(resp); - } - if (resp_id == req_id) - return(TW_OSL_ESUCCESS); /* found the req_id */ - } -} - -/* - * Function name: tw_cli_drain_aen_queue - * Description: Fetches all un-retrieved AEN's posted by fw. - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_drain_aen_queue(struct tw_cli_ctlr_context *ctlr) -{ - struct tw_cli_req_context *req; - struct tw_cl_command_header *cmd_hdr; - TW_TIME end_time; - TW_UINT16 aen_code; - TW_INT32 error; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - for (;;) { - if ((req = tw_cli_get_request(ctlr - )) == TW_CL_NULL) { - error = TW_OSL_EBUSY; - break; - } - - req->flags |= TW_CLI_REQ_FLAGS_INTERNAL; - req->tw_cli_callback = TW_CL_NULL; - if ((error = tw_cli_send_scsi_cmd(req, - 0x03 /* REQUEST_SENSE */))) { - tw_cli_dbg_printf(1, ctlr->ctlr_handle, - tw_osl_cur_func(), - "Cannot send command to fetch aen"); - break; - } - - end_time = tw_osl_get_local_time() + - TW_CLI_REQUEST_TIMEOUT_PERIOD; - do { - if ((error = req->error_code)) - /* - * This will take care of completion due to - * a reset, or a failure in - * tw_cli_submit_pending_queue. - */ - goto out; - - tw_cli_process_resp_intr(req->ctlr); - - if ((req->state != TW_CLI_REQ_STATE_BUSY) && - (req->state != TW_CLI_REQ_STATE_PENDING)) - break; - } while (tw_osl_get_local_time() <= end_time); - - if (req->state != TW_CLI_REQ_STATE_COMPLETE) { - error = TW_OSL_ETIMEDOUT; - break; - } - - if ((error = req->cmd_pkt->command.cmd_pkt_9k.status)) { - cmd_hdr = &req->cmd_pkt->cmd_hdr; -#if 0 - tw_cli_create_ctlr_event(ctlr, - TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR, - cmd_hdr); -#endif // 0 - break; - } - - aen_code = tw_cli_manage_aen(ctlr, req); - if (aen_code == TWA_AEN_QUEUE_EMPTY) - break; - if (aen_code == TWA_AEN_SYNC_TIME_WITH_HOST) - continue; - - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - -out: - if (req) { - if (req->data) - ctlr->internal_req_busy = TW_CL_FALSE; - tw_cli_req_q_insert_tail(req, TW_CLI_FREE_Q); - } - return(error); -} - -/* - * Function name: tw_cli_find_aen - * Description: Reports whether a given AEN ever occurred. - * - * Input: ctlr -- ptr to CL internal ctlr context - * aen_code-- AEN to look for - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_find_aen(struct tw_cli_ctlr_context *ctlr, TW_UINT16 aen_code) -{ - TW_UINT32 last_index; - TW_INT32 i; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - if (ctlr->aen_q_wrapped) - last_index = ctlr->aen_head; - else - last_index = 0; - - i = ctlr->aen_head; - do { - i = (i + ctlr->max_aens_supported - 1) % - ctlr->max_aens_supported; - if (ctlr->aen_queue[i].aen_code == aen_code) - return(TW_OSL_ESUCCESS); - } while (i != last_index); - - return(TW_OSL_EGENFAILURE); -} - -/* - * Function name: tw_cli_poll_status - * Description: Poll for a given status to show up in the firmware - * status register. - * - * Input: ctlr -- ptr to CL internal ctlr context - * status -- status to look for - * timeout -- max # of seconds to wait before giving up - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_cli_poll_status(struct tw_cli_ctlr_context *ctlr, TW_UINT32 status, - TW_UINT32 timeout) -{ - TW_TIME end_time; - TW_UINT32 status_reg; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - end_time = tw_osl_get_local_time() + timeout; - do { - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr->ctlr_handle); - if ((status_reg & status) == status) - /* got the required bit(s) */ - return(TW_OSL_ESUCCESS); - - tw_osl_delay(1000); - } while (tw_osl_get_local_time() <= end_time); - - return(TW_OSL_ETIMEDOUT); -} - -/* - * Function name: tw_cl_create_event - * Description: Creates and queues ctlr/CL/OSL AEN's to be - * supplied to user-space tools on request. - * Also notifies OS Layer. - * Input: ctlr -- ptr to CL internal ctlr context - * queue_event-- TW_CL_TRUE --> queue event; - * TW_CL_FALSE--> don't queue event - * (simply notify OSL) - * event_src -- source of event - * event_code -- AEN/error code - * severity -- severity of event - * severity_str--Text description of severity - * event_desc -- standard string related to the event/error - * event_specific_desc -- format string for additional - * info about the event - * ... -- additional arguments conforming to the format - * specified by event_specific_desc - * Output: None - * Return value: None - */ -TW_VOID -tw_cl_create_event(struct tw_cl_ctlr_handle *ctlr_handle, - TW_UINT8 queue_event, TW_UINT8 event_src, TW_UINT16 event_code, - TW_UINT8 severity, TW_UINT8 *severity_str, TW_UINT8 *event_desc, - TW_UINT8 *event_specific_desc, ...) -{ - struct tw_cli_ctlr_context *ctlr = ctlr_handle->cl_ctlr_ctxt; - struct tw_cl_event_packet event_pkt; - struct tw_cl_event_packet *event; - TW_UINT32 aen_head; - va_list ap; - - tw_cli_dbg_printf(8, ctlr_handle, tw_osl_cur_func(), "entered"); - - if ((ctlr) && (queue_event)) { - /* Protect access to ctlr->aen_head. */ - tw_osl_get_lock(ctlr_handle, ctlr->gen_lock); - - aen_head = ctlr->aen_head; - ctlr->aen_head = (aen_head + 1) % ctlr->max_aens_supported; - - /* Queue the event. */ - event = &(ctlr->aen_queue[aen_head]); - tw_osl_memzero(event->parameter_data, - sizeof(event->parameter_data)); - - if (event->retrieved == TW_CL_AEN_NOT_RETRIEVED) - ctlr->aen_q_overflow = TW_CL_TRUE; - event->sequence_id = ++(ctlr->aen_cur_seq_id); - if ((aen_head + 1) == ctlr->max_aens_supported) { - tw_cli_dbg_printf(4, ctlr->ctlr_handle, - tw_osl_cur_func(), "AEN queue wrapped"); - ctlr->aen_q_wrapped = TW_CL_TRUE; - } - - /* Free access to ctlr->aen_head. */ - tw_osl_free_lock(ctlr_handle, ctlr->gen_lock); - } else { - event = &event_pkt; - tw_osl_memzero(event, sizeof(struct tw_cl_event_packet)); - } - - event->event_src = event_src; - event->time_stamp_sec = (TW_UINT32)tw_osl_get_local_time(); - event->aen_code = event_code; - event->severity = severity; - tw_osl_strcpy(event->severity_str, severity_str); - event->retrieved = TW_CL_AEN_NOT_RETRIEVED; - - va_start(ap, event_specific_desc); - tw_osl_vsprintf(event->parameter_data, event_specific_desc, ap); - va_end(ap); - - event->parameter_len = - (TW_UINT8)(tw_osl_strlen(event->parameter_data)); - tw_osl_strcpy(event->parameter_data + event->parameter_len + 1, - event_desc); - event->parameter_len += (1 + tw_osl_strlen(event_desc)); - - tw_cli_dbg_printf(4, ctlr_handle, tw_osl_cur_func(), - "event = %x %x %x %x %x %x %x\n %s", - event->sequence_id, - event->time_stamp_sec, - event->aen_code, - event->severity, - event->retrieved, - event->repeat_count, - event->parameter_len, - event->parameter_data); - - tw_osl_notify_event(ctlr_handle, event); -} - -/* - * Function name: tw_cli_get_request - * Description: Gets a request pkt from the free queue. - * - * Input: ctlr -- ptr to CL internal ctlr context - * req_pkt -- ptr to OSL built req_pkt, if there's one - * Output: None - * Return value: ptr to request pkt -- success - * TW_CL_NULL -- failure - */ -struct tw_cli_req_context * -tw_cli_get_request(struct tw_cli_ctlr_context *ctlr - ) -{ - struct tw_cli_req_context *req; - - tw_cli_dbg_printf(4, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - { - /* Get a free request packet. */ - req = tw_cli_req_q_remove_head(ctlr, TW_CLI_FREE_Q); - } - - /* Initialize some fields to their defaults. */ - if (req) { - req->req_handle = TW_CL_NULL; - req->data = TW_CL_NULL; - req->length = 0; - req->data_phys = 0; - req->state = TW_CLI_REQ_STATE_INIT; /* req being initialized */ - req->flags = 0; - req->error_code = 0; - req->orig_req = TW_CL_NULL; - req->tw_cli_callback = TW_CL_NULL; - - /* - * Look at the status field in the command packet to see how - * it completed the last time it was used, and zero out only - * the portions that might have changed. Note that we don't - * care to zero out the sglist. - */ - if (req->cmd_pkt->command.cmd_pkt_9k.status) - tw_osl_memzero(req->cmd_pkt, - sizeof(struct tw_cl_command_header) + - 28 /* max bytes before sglist */); - else - tw_osl_memzero(&(req->cmd_pkt->command), - 28 /* max bytes before sglist */); - } - return(req); -} - -/* - * Function name: tw_cli_dbg_printf - * Description: Calls OSL print function if dbg_level is appropriate - * - * Input: dbg_level -- Determines whether or not to print - * ctlr_handle -- controller handle - * cur_func -- text name of calling function - * fmt -- format string for the arguments to follow - * ... -- variable number of arguments, to be printed - * based on the fmt string - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_dbg_printf(TW_UINT8 dbg_level, - struct tw_cl_ctlr_handle *ctlr_handle, const TW_INT8 *cur_func, - TW_INT8 *fmt, ...) -{ -#ifdef TW_OSL_DEBUG - TW_INT8 print_str[256]; - va_list ap; - - tw_osl_memzero(print_str, 256); - if (dbg_level <= TW_OSL_DEBUG_LEVEL_FOR_CL) { - tw_osl_sprintf(print_str, "%s: ", cur_func); - - va_start(ap, fmt); - tw_osl_vsprintf(print_str + tw_osl_strlen(print_str), fmt, ap); - va_end(ap); - - tw_osl_strcpy(print_str + tw_osl_strlen(print_str), "\n"); - tw_osl_dbg_printf(ctlr_handle, "%s", print_str); - } -#endif /* TW_OSL_DEBUG */ -} - -/* - * Function name: tw_cli_notify_ctlr_info - * Description: Notify OSL of controller info (fw/BIOS versions, etc.). - * - * Input: ctlr -- ptr to CL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_cli_notify_ctlr_info(struct tw_cli_ctlr_context *ctlr) -{ - TW_INT8 fw_ver[16]; - TW_INT8 bios_ver[16]; - TW_INT8 ctlr_model[16]; - TW_INT32 error[3]; - TW_UINT8 num_ports = 0; - - tw_cli_dbg_printf(5, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Get the port count. */ - error[0] = tw_cli_get_param(ctlr, TWA_PARAM_CONTROLLER_TABLE, - TWA_PARAM_CONTROLLER_PORT_COUNT, &num_ports, - 1, TW_CL_NULL); - - /* Get the firmware and BIOS versions. */ - error[0] = tw_cli_get_param(ctlr, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_FW, fw_ver, 16, TW_CL_NULL); - error[1] = tw_cli_get_param(ctlr, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_VERSION_BIOS, bios_ver, 16, TW_CL_NULL); - error[2] = tw_cli_get_param(ctlr, TWA_PARAM_VERSION_TABLE, - TWA_PARAM_CTLR_MODEL, ctlr_model, 16, TW_CL_NULL); - - tw_cl_create_event(ctlr->ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR, - 0x1300, 0x3, TW_CL_SEVERITY_INFO_STRING, - "Controller details:", - "Model %.16s, %d ports, Firmware %.16s, BIOS %.16s", - error[2]?(TW_INT8 *)TW_CL_NULL:ctlr_model, - num_ports, - error[0]?(TW_INT8 *)TW_CL_NULL:fw_ver, - error[1]?(TW_INT8 *)TW_CL_NULL:bios_ver); -} - -/* - * Function name: tw_cli_check_ctlr_state - * Description: Makes sure that the fw status register reports a - * proper status. - * - * Input: ctlr -- ptr to CL internal ctlr context - * status_reg-- value in the status register - * Output: None - * Return value: 0 -- no errors - * non-zero-- errors - */ -TW_INT32 -tw_cli_check_ctlr_state(struct tw_cli_ctlr_context *ctlr, TW_UINT32 status_reg) -{ - struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; - TW_INT32 error = TW_OSL_ESUCCESS; - - tw_cli_dbg_printf(8, ctlr->ctlr_handle, tw_osl_cur_func(), "entered"); - - /* Check if the 'micro-controller ready' bit is not set. */ - if (!(status_reg & TWA_STATUS_MICROCONTROLLER_READY)) { - TW_INT8 desc[200]; - - tw_osl_memzero(desc, 200); - if (!(ctlr->reset_phase1_in_progress)) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1301, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Missing expected status bit(s)", - "status reg = 0x%x; Missing bits: %s", - status_reg, - tw_cli_describe_bits( - TWA_STATUS_MICROCONTROLLER_READY, - desc)); - error = TW_OSL_EGENFAILURE; - } - } - - /* Check if any error bits are set. */ - if ((status_reg & TWA_STATUS_UNEXPECTED_BITS) != 0) { - TW_INT8 desc[200]; - - tw_osl_memzero(desc, 200); - - /* Skip queue error msgs during 9650SE/9690SA reset */ - if (((ctlr->device_id != TW_CL_DEVICE_ID_9K_E) && - (ctlr->device_id != TW_CL_DEVICE_ID_9K_SA)) || - (!(ctlr->reset_in_progress)) || - ((status_reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) == 0)) - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1302, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Unexpected status bit(s)", - "status reg = 0x%x Unexpected bits: %s", - status_reg & TWA_STATUS_UNEXPECTED_BITS, - tw_cli_describe_bits(status_reg & - TWA_STATUS_UNEXPECTED_BITS, desc)); - - if (status_reg & TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1303, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "PCI parity error: clearing... " - "Re-seat/move/replace card", - "status reg = 0x%x %s", - status_reg, - tw_cli_describe_bits(status_reg, desc)); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, - TWA_CONTROL_CLEAR_PARITY_ERROR); - -#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE - tw_osl_write_pci_config(ctlr->ctlr_handle, - TW_CLI_PCI_CONFIG_STATUS_OFFSET, - TWA_PCI_CONFIG_CLEAR_PARITY_ERROR, 2); -#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ - - } - - if (status_reg & TWA_STATUS_PCI_ABORT_INTERRUPT) { - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1304, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "PCI abort: clearing... ", - "status reg = 0x%x %s", - status_reg, - tw_cli_describe_bits(status_reg, desc)); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, - TWA_CONTROL_CLEAR_PCI_ABORT); - -#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE - tw_osl_write_pci_config(ctlr->ctlr_handle, - TW_CLI_PCI_CONFIG_STATUS_OFFSET, - TWA_PCI_CONFIG_CLEAR_PCI_ABORT, 2); -#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ - } - - if (status_reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) { - /* Skip queue error msgs during 9650SE/9690SA reset */ - if (((ctlr->device_id != TW_CL_DEVICE_ID_9K_E) && - (ctlr->device_id != TW_CL_DEVICE_ID_9K_SA)) || - (!(ctlr->reset_in_progress))) - tw_cl_create_event(ctlr_handle, TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT, - 0x1305, 0x1, TW_CL_SEVERITY_ERROR_STRING, - "Controller queue error: clearing... ", - "status reg = 0x%x %s", - status_reg, - tw_cli_describe_bits(status_reg, desc)); - TW_CLI_WRITE_CONTROL_REGISTER(ctlr->ctlr_handle, - TWA_CONTROL_CLEAR_QUEUE_ERROR); - } - } - return(error); -} - -/* - * Function name: tw_cli_describe_bits - * Description: Given the value of the status register, returns a - * string describing the meaning of each set bit. - * - * Input: reg -- status register value - * Output: Pointer to a string describing each set bit - * Return value: Pointer to the string describing each set bit - */ -TW_INT8 * -tw_cli_describe_bits(TW_UINT32 reg, TW_INT8 *str) -{ - tw_osl_strcpy(str, "["); - - if (reg & TWA_STATUS_COMMAND_QUEUE_EMPTY) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "CMD_Q_EMPTY,"); - if (reg & TWA_STATUS_MICROCONTROLLER_READY) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "MC_RDY,"); - if (reg & TWA_STATUS_RESPONSE_QUEUE_EMPTY) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "RESP_Q_EMPTY,"); - if (reg & TWA_STATUS_COMMAND_QUEUE_FULL) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "CMD_Q_FULL,"); - if (reg & TWA_STATUS_RESPONSE_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "RESP_INTR,"); - if (reg & TWA_STATUS_COMMAND_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "CMD_INTR,"); - if (reg & TWA_STATUS_ATTENTION_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "ATTN_INTR,"); - if (reg & TWA_STATUS_HOST_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "HOST_INTR,"); - if (reg & TWA_STATUS_PCI_ABORT_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "PCI_ABRT,"); - if (reg & TWA_STATUS_QUEUE_ERROR_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "Q_ERR,"); - if (reg & TWA_STATUS_PCI_PARITY_ERROR_INTERRUPT) - tw_osl_strcpy(&str[tw_osl_strlen(str)], "PCI_PERR"); - - tw_osl_strcpy(&str[tw_osl_strlen(str)], "]"); - return(str); -} - -#ifdef TW_OSL_DEBUG - -/* - * Function name: tw_cl_print_ctlr_stats - * Description: Prints the current status of the controller. - * - * Input: ctlr_handle-- controller handle - * Output: None - * Return value: None - */ -TW_VOID -tw_cl_print_ctlr_stats(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - TW_UINT32 status_reg; - TW_INT8 desc[200]; - - tw_cli_dbg_printf(7, ctlr->ctlr_handle, "", "entered"); - - /* Print current controller details. */ - tw_cli_dbg_printf(0, ctlr_handle, "", "cl_ctlr_ctxt = %p", ctlr); - - tw_osl_memzero(desc, 200); - status_reg = TW_CLI_READ_STATUS_REGISTER(ctlr_handle); - tw_cli_dbg_printf(0, ctlr_handle, "", "status reg = 0x%x %s", - status_reg, tw_cli_describe_bits(status_reg, desc)); - - tw_cli_dbg_printf(0, ctlr_handle, "", "CLq type current max"); - tw_cli_dbg_printf(0, ctlr_handle, "", "free %04d %04d", - ctlr->q_stats[TW_CLI_FREE_Q].cur_len, - ctlr->q_stats[TW_CLI_FREE_Q].max_len); - tw_cli_dbg_printf(0, ctlr_handle, "", "busy %04d %04d", - ctlr->q_stats[TW_CLI_BUSY_Q].cur_len, - ctlr->q_stats[TW_CLI_BUSY_Q].max_len); - tw_cli_dbg_printf(0, ctlr_handle, "", "pending %04d %04d", - ctlr->q_stats[TW_CLI_PENDING_Q].cur_len, - ctlr->q_stats[TW_CLI_PENDING_Q].max_len); - tw_cli_dbg_printf(0, ctlr_handle, "", "complete %04d %04d", - ctlr->q_stats[TW_CLI_COMPLETE_Q].cur_len, - ctlr->q_stats[TW_CLI_COMPLETE_Q].max_len); - tw_cli_dbg_printf(0, ctlr_handle, "", "AEN queue head %d tail %d", - ctlr->aen_head, ctlr->aen_tail); -} - -/* - * Function name: tw_cl_reset_stats - * Description: Resets CL maintained statistics for the controller. - * - * Input: ctlr_handle-- controller handle - * Output: None - * Return value: None - */ -TW_VOID -tw_cl_reset_stats(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct tw_cli_ctlr_context *ctlr = - (struct tw_cli_ctlr_context *)(ctlr_handle->cl_ctlr_ctxt); - - tw_cli_dbg_printf(7, ctlr_handle, tw_osl_cur_func(), "entered"); - ctlr->q_stats[TW_CLI_FREE_Q].max_len = 0; - ctlr->q_stats[TW_CLI_BUSY_Q].max_len = 0; - ctlr->q_stats[TW_CLI_PENDING_Q].max_len = 0; - ctlr->q_stats[TW_CLI_COMPLETE_Q].max_len = 0; -} - -/* - * Function name: tw_cli_print_req_info - * Description: Prints CL internal details of a given request. - * - * Input: req -- ptr to CL internal request context - * Output: None - * Return value: None - */ -TW_VOID -tw_cl_print_req_info(struct tw_cl_req_handle *req_handle) -{ - struct tw_cli_req_context *req = req_handle->cl_req_ctxt; - struct tw_cli_ctlr_context *ctlr = req->ctlr; - struct tw_cl_ctlr_handle *ctlr_handle = ctlr->ctlr_handle; - struct tw_cl_command_packet *cmd_pkt = req->cmd_pkt; - struct tw_cl_command_9k *cmd9k; - union tw_cl_command_7k *cmd7k; - TW_UINT8 *cdb; - TW_VOID *sgl; - TW_UINT32 sgl_entries; - TW_UINT32 i; - - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "CL details for request:"); - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "req_handle = %p, ctlr = %p,\n" - "cmd_pkt = %p, cmd_pkt_phys = 0x%llx,\n" - "data = %p, length = 0x%x, data_phys = 0x%llx,\n" - "state = 0x%x, flags = 0x%x, error = 0x%x,\n" - "orig_req = %p, callback = %p, req_id = 0x%x,\n" - "next_req = %p, prev_req = %p", - req_handle, ctlr, - cmd_pkt, req->cmd_pkt_phys, - req->data, req->length, req->data_phys, - req->state, req->flags, req->error_code, - req->orig_req, req->tw_cli_callback, req->request_id, - req->link.next, req->link.prev); - - if (req->flags & TW_CLI_REQ_FLAGS_9K) { - cmd9k = &(cmd_pkt->command.cmd_pkt_9k); - sgl = cmd9k->sg_list; - sgl_entries = TW_CL_SWAP16( - GET_SGL_ENTRIES(cmd9k->lun_h4__sgl_entries)); - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "9K cmd: opcode = 0x%x, unit = 0x%x, req_id = 0x%x,\n" - "status = 0x%x, sgl_offset = 0x%x, sgl_entries = 0x%x", - GET_OPCODE(cmd9k->res__opcode), - cmd9k->unit, - TW_CL_SWAP16(GET_REQ_ID(cmd9k->lun_l4__req_id)), - cmd9k->status, - cmd9k->sgl_offset, - sgl_entries); - - cdb = (TW_UINT8 *)(cmd9k->cdb); - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "CDB: %x %x %x %x %x %x %x %x" - "%x %x %x %x %x %x %x %x", - cdb[0], cdb[1], cdb[2], cdb[3], - cdb[4], cdb[5], cdb[6], cdb[7], - cdb[8], cdb[9], cdb[10], cdb[11], - cdb[12], cdb[13], cdb[14], cdb[15]); - } else { - cmd7k = &(cmd_pkt->command.cmd_pkt_7k); - sgl = cmd7k->param.sgl; - sgl_entries = (cmd7k->generic.size - - GET_SGL_OFF(cmd7k->generic.sgl_off__opcode)) / - ((ctlr->flags & TW_CL_64BIT_ADDRESSES) ? 3 : 2); - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "7K cmd: opcode = 0x%x, sgl_offset = 0x%x,\n" - "size = 0x%x, req_id = 0x%x, unit = 0x%x,\n" - "status = 0x%x, flags = 0x%x, count = 0x%x", - GET_OPCODE(cmd7k->generic.sgl_off__opcode), - GET_SGL_OFF(cmd7k->generic.sgl_off__opcode), - cmd7k->generic.size, - TW_CL_SWAP16(cmd7k->generic.request_id), - GET_UNIT(cmd7k->generic.host_id__unit), - cmd7k->generic.status, - cmd7k->generic.flags, - TW_CL_SWAP16(cmd7k->generic.count)); - } - - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), "SG entries:"); - - if (ctlr->flags & TW_CL_64BIT_ADDRESSES) { - struct tw_cl_sg_desc64 *sgl64 = (struct tw_cl_sg_desc64 *)sgl; - - for (i = 0; i < sgl_entries; i++) { - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "0x%llx 0x%x", - sgl64[i].address, sgl64[i].length); - } - } else { - struct tw_cl_sg_desc32 *sgl32 = (struct tw_cl_sg_desc32 *)sgl; - - for (i = 0; i < sgl_entries; i++) { - tw_cli_dbg_printf(0, ctlr_handle, tw_osl_cur_func(), - "0x%x 0x%x", - sgl32[i].address, sgl32[i].length); - } - } -} - -#endif /* TW_OSL_DEBUG */ diff --git a/sys/dev/twa/tw_cl_share.h b/sys/dev/twa/tw_cl_share.h deleted file mode 100644 index b699f70c0b7b..000000000000 --- a/sys/dev/twa/tw_cl_share.h +++ /dev/null @@ -1,535 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -#ifndef TW_CL_SHARE_H - -#define TW_CL_SHARE_H - -/* - * Macros, structures and functions shared between OSL and CL, - * and defined by CL. - */ - -#define TW_CL_NULL ((TW_VOID *)0) -#define TW_CL_TRUE 1 -#define TW_CL_FALSE 0 - -#define TW_CL_VENDOR_ID 0x13C1 /* 3ware vendor id */ -#define TW_CL_DEVICE_ID_9K 0x1002 /* 9000 PCI series device id */ -#define TW_CL_DEVICE_ID_9K_X 0x1003 /* 9000 PCI-X series device id */ -#define TW_CL_DEVICE_ID_9K_E 0x1004 /* 9000 PCIe series device id */ -#define TW_CL_DEVICE_ID_9K_SA 0x1005 /* 9000 PCIe SAS series device id */ - -#define TW_CL_BAR_TYPE_IO 1 /* I/O base address */ -#define TW_CL_BAR_TYPE_MEM 2 /* memory base address */ -#define TW_CL_BAR_TYPE_SBUF 3 /* SBUF base address */ - -#ifdef TW_OSL_ENCLOSURE_SUPPORT -#define TW_CL_MAX_NUM_UNITS 65 /* max # of units we support - -- enclosure target id is 64 */ -#else /* TW_OSL_ENCLOSURE_SUPPORT */ -#define TW_CL_MAX_NUM_UNITS 32 /* max # of units we support */ -#endif /* TW_OSL_ENCLOSURE_SUPPORT */ - -#define TW_CL_MAX_NUM_LUNS 255 /* max # of LUN's we support */ -#define TW_CL_MAX_IO_SIZE 0x20000 /* 128K */ - -/* - * Though we can support 256 simultaneous requests, we advertise as capable - * of supporting only 255, since we want to keep one CL internal request - * context packet always available for internal requests. - */ -#define TW_CL_MAX_SIMULTANEOUS_REQUESTS 256 /* max simult reqs supported */ - -#define TW_CL_MAX_32BIT_SG_ELEMENTS 109 /* max 32-bit sg elements */ -#define TW_CL_MAX_64BIT_SG_ELEMENTS 72 /* max 64-bit sg elements */ - -/* Possible values of ctlr->flags */ -#define TW_CL_64BIT_ADDRESSES (1<<0) /* 64 bit cmdpkt & SG addresses */ -#define TW_CL_64BIT_SG_LENGTH (1<<1) /* 64 bit SG length */ -#define TW_CL_START_CTLR_ONLY (1<<2) /* Start ctlr only */ -#define TW_CL_STOP_CTLR_ONLY (1<<3) /* Stop ctlr only */ -#define TW_CL_DEFERRED_INTR_USED (1<<5) /* OS Layer uses deferred intr */ - -/* Possible error values from the Common Layer. */ -#define TW_CL_ERR_REQ_SUCCESS 0 -#define TW_CL_ERR_REQ_GENERAL_FAILURE (1<<0) -#define TW_CL_ERR_REQ_INVALID_TARGET (1<<1) -#define TW_CL_ERR_REQ_INVALID_LUN (1<<2) -#define TW_CL_ERR_REQ_SCSI_ERROR (1<<3) -#define TW_CL_ERR_REQ_AUTO_SENSE_VALID (1<<4) -#define TW_CL_ERR_REQ_BUS_RESET (1<<5) -#define TW_CL_ERR_REQ_UNABLE_TO_SUBMIT_COMMAND (1<<6) - -/* Possible values of req_pkt->flags */ -#define TW_CL_REQ_RETRY_ON_BUSY (1<<0) -#define TW_CL_REQ_CALLBACK_FOR_SGLIST (1<<1) - -#define TW_CL_MESSAGE_SOURCE_CONTROLLER_ERROR 3 -#define TW_CL_MESSAGE_SOURCE_CONTROLLER_EVENT 4 -#define TW_CL_MESSAGE_SOURCE_COMMON_LAYER_ERROR 21 -#define TW_CL_MESSAGE_SOURCE_COMMON_LAYER_EVENT 22 -#define TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER 5 -#define TW_CL_MESSAGE_SOURCE_FREEBSD_OS 8 -#define TW_CL_MESSAGE_SOURCE_WINDOWS_DRIVER 7 -#define TW_CL_MESSAGE_SOURCE_WINDOWS_OS 10 - -#define TW_CL_SEVERITY_ERROR 0x1 -#define TW_CL_SEVERITY_WARNING 0x2 -#define TW_CL_SEVERITY_INFO 0x3 -#define TW_CL_SEVERITY_DEBUG 0x4 - -#define TW_CL_SEVERITY_ERROR_STRING "ERROR" -#define TW_CL_SEVERITY_WARNING_STRING "WARNING" -#define TW_CL_SEVERITY_INFO_STRING "INFO" -#define TW_CL_SEVERITY_DEBUG_STRING "DEBUG" - -/* - * Structure, a pointer to which is used as the controller handle in - * communications between the OS Layer and the Common Layer. - */ -struct tw_cl_ctlr_handle { - TW_VOID *osl_ctlr_ctxt; /* OSL's ctlr context */ - TW_VOID *cl_ctlr_ctxt; /* CL's ctlr context */ -}; - -/* - * Structure, a pointer to which is used as the request handle in - * communications between the OS Layer and the Common Layer. - */ -struct tw_cl_req_handle { - TW_VOID *osl_req_ctxt; /* OSL's request context */ - TW_VOID *cl_req_ctxt; /* CL's request context */ - TW_UINT8 is_io; /* Only freeze/release simq for IOs */ -}; - -/* Structure used to describe SCSI requests to CL. */ -struct tw_cl_scsi_req_packet { - TW_UINT32 unit; /* unit # to send cmd to */ - TW_UINT32 lun; /* LUN to send cmd to */ - TW_UINT8 *cdb; /* ptr to SCSI cdb */ - TW_UINT32 cdb_len; /* # of valid cdb bytes */ - TW_UINT32 sense_len; /* # of bytes of valid sense info */ - TW_UINT8 *sense_data; /* ptr to sense data, if any */ - TW_UINT32 scsi_status; /* SCSI status returned by fw */ - TW_UINT32 sgl_entries; /* # of SG descriptors */ - TW_UINT8 *sg_list; /* ptr to SG list */ -}; - -/* Structure used to describe pass through command packets to CL. */ -struct tw_cl_passthru_req_packet { - TW_UINT8 *cmd_pkt; /* ptr to passthru cmd pkt */ - TW_UINT32 cmd_pkt_length; /* size of cmd pkt */ - TW_UINT32 sgl_entries; /* # of SG descriptors */ - TW_UINT8 *sg_list; /* ptr to SG list */ -}; - -/* Request packet submitted to the Common Layer, by the OS Layer. */ -struct tw_cl_req_packet { - TW_UINT32 cmd; /* Common Layer cmd */ - TW_UINT32 flags; /* flags describing request */ - TW_UINT32 status; /* Common Layer returned status */ - TW_VOID (*tw_osl_callback)(struct tw_cl_req_handle *req_handle); - /* OSL routine to be called by CL on req completion */ - TW_VOID (*tw_osl_sgl_callback)( - struct tw_cl_req_handle *req_handle, TW_VOID *sg_list, - TW_UINT32 *num_sgl_entries); - /* OSL callback to get SG list. */ - - union { - struct tw_cl_scsi_req_packet scsi_req; /* SCSI req */ - struct tw_cl_passthru_req_packet pt_req;/*Passthru req*/ - } gen_req_pkt; -}; - -#pragma pack(1) -/* - * Packet that describes an AEN/error generated by the controller, - * Common Layer, or even the OS Layer. - */ -struct tw_cl_event_packet { - TW_UINT32 sequence_id; - TW_UINT32 time_stamp_sec; - TW_UINT16 aen_code; - TW_UINT8 severity; - TW_UINT8 retrieved; - TW_UINT8 repeat_count; - TW_UINT8 parameter_len; - TW_UINT8 parameter_data[98]; - TW_UINT32 event_src; - TW_UINT8 severity_str[20]; -}; -#pragma pack() - -/* Structure to link 2 adjacent elements in a list. */ -struct tw_cl_link { - struct tw_cl_link *next; - struct tw_cl_link *prev; -}; - -#pragma pack(1) -/* Scatter/Gather list entry with 32 bit addresses. */ -struct tw_cl_sg_desc32 { - TW_UINT32 address; - TW_UINT32 length; -}; - -/* Scatter/Gather list entry with 64 bit addresses. */ -struct tw_cl_sg_desc64 { - TW_UINT64 address; - TW_UINT32 length; -}; - -#pragma pack() - -/* Byte swap functions. Valid only if running on big endian platforms. */ -#ifdef TW_OSL_BIG_ENDIAN - -#define TW_CL_SWAP16_WITH_CAST(x) \ - ((x << 8) | (x >> 8)) - -#define TW_CL_SWAP32_WITH_CAST(x) \ - ((x << 24) | ((x << 8) & (0xFF0000)) | \ - ((x >> 8) & (0xFF00)) | (x >> 24)) - -#define TW_CL_SWAP64_WITH_CAST(x) \ - ((((TW_UINT64)(TW_CL_SWAP32(((TW_UINT32 *)(&(x)))[1]))) << 32) |\ - ((TW_UINT32)(TW_CL_SWAP32(((TW_UINT32 *)(&(x)))[0])))) - -#else /* TW_OSL_BIG_ENDIAN */ - -#define TW_CL_SWAP16_WITH_CAST(x) x -#define TW_CL_SWAP32_WITH_CAST(x) x -#define TW_CL_SWAP64_WITH_CAST(x) x - -#endif /* TW_OSL_BIG_ENDIAN */ - -#define TW_CL_SWAP16(x) TW_CL_SWAP16_WITH_CAST((TW_UINT16)(x)) -#define TW_CL_SWAP32(x) TW_CL_SWAP32_WITH_CAST((TW_UINT32)(x)) -#define TW_CL_SWAP64(x) TW_CL_SWAP64_WITH_CAST((TW_UINT64)(x)) - -/* Queue manipulation functions. */ - -/* Initialize a queue. */ -#define TW_CL_Q_INIT(head) do { \ - (head)->prev = (head)->next = head; \ -} while (0) - -/* Insert an item at the head of the queue. */ -#define TW_CL_Q_INSERT_HEAD(head, item) do { \ - (item)->next = (head)->next; \ - (item)->prev = head; \ - (head)->next->prev = item; \ - (head)->next = item; \ -} while (0) - -/* Insert an item at the tail of the queue. */ -#define TW_CL_Q_INSERT_TAIL(head, item) do { \ - (item)->next = head; \ - (item)->prev = (head)->prev; \ - (head)->prev->next = item; \ - (head)->prev = item; \ -} while (0) - -/* Remove an item from the head of the queue. */ -#define TW_CL_Q_REMOVE_ITEM(head, item) do { \ - (item)->prev->next = (item)->next; \ - (item)->next->prev = (item)->prev; \ -} while (0) - -/* Retrieve the item at the head of the queue. */ -#define TW_CL_Q_FIRST_ITEM(head) \ - (((head)->next != head) ? ((head)->next) : TW_CL_NULL) - -/* Retrieve the item at the tail of the queue. */ -#define TW_CL_Q_LAST_ITEM(head) \ - (((head)->prev != head) ? ((head)->prev) : TW_CL_NULL) - -/* Retrieve the item next to a given item in the queue. */ -#define TW_CL_Q_NEXT_ITEM(head, item) \ - (((item)->next != head) ? ((item)->next) : TW_CL_NULL) - -/* Retrieve the item previous to a given item in the queue. */ -#define TW_CL_Q_PREV_ITEM(head, item) \ - (((item)->prev != head) ? ((item)->prev) : TW_CL_NULL) - -/* Determine the offset of a field from the head of the structure it is in. */ -#define TW_CL_STRUCT_OFFSET(struct_type, field) \ - (TW_INT8 *)(&((struct_type *)0)->field) - -/* - * Determine the address of the head of a structure, given the address of a - * field within it. - */ -#define TW_CL_STRUCT_HEAD(addr, struct_type, field) \ - (struct_type *)((TW_INT8 *)addr - \ - TW_CL_STRUCT_OFFSET(struct_type, field)) - -#ifndef TW_BUILDING_API - -#include "tw_osl_inline.h" - -/* - * The following are extern declarations of OS Layer defined functions called - * by the Common Layer. If any function has been defined as a macro in - * tw_osl_share.h, we will not make the extern declaration here. - */ - -#ifndef tw_osl_breakpoint -/* Allows setting breakpoints in the CL code for debugging purposes. */ -extern TW_VOID tw_osl_breakpoint(TW_VOID); -#endif - -#ifndef tw_osl_timeout -/* Start OS timeout() routine after controller reset sequence */ -extern TW_VOID tw_osl_timeout(struct tw_cl_req_handle *req_handle); -#endif - -#ifndef tw_osl_untimeout -/* Stop OS timeout() routine during controller reset sequence */ -extern TW_VOID tw_osl_untimeout(struct tw_cl_req_handle *req_handle); -#endif - -#ifndef tw_osl_cur_func -/* Text name of current function. */ -extern TW_INT8 *tw_osl_cur_func(TW_VOID); -#endif - -#ifdef TW_OSL_DEBUG -#ifndef tw_osl_dbg_printf -/* Print to syslog/event log/debug console, as applicable. */ -extern TW_INT32 tw_osl_dbg_printf(struct tw_cl_ctlr_handle *ctlr_handle, - const TW_INT8 *fmt, ...); -#endif -#endif /* TW_OSL_DEBUG */ - -#ifndef tw_osl_delay -/* Cause a delay of usecs micro-seconds. */ -extern TW_VOID tw_osl_delay(TW_INT32 usecs); -#endif - -#ifndef tw_osl_destroy_lock -/* Create/initialize a lock for CL's use. */ -extern TW_VOID tw_osl_destroy_lock(struct tw_cl_ctlr_handle *ctlr_handle, - TW_LOCK_HANDLE *lock); -#endif - -#ifndef tw_osl_free_lock -/* Free a previously held lock. */ -extern TW_VOID tw_osl_free_lock(struct tw_cl_ctlr_handle *ctlr_handle, - TW_LOCK_HANDLE *lock); -#endif - -#ifndef tw_osl_get_local_time -/* Get local time. */ -extern TW_TIME tw_osl_get_local_time(TW_VOID); -#endif - -#ifndef tw_osl_get_lock -/* Acquire a lock. */ -extern TW_VOID tw_osl_get_lock(struct tw_cl_ctlr_handle *ctlr_handle, - TW_LOCK_HANDLE *lock); -#endif - -#ifndef tw_osl_init_lock -/* Create/initialize a lock for CL's use. */ -extern TW_VOID tw_osl_init_lock(struct tw_cl_ctlr_handle *ctlr_handle, - TW_INT8 *lock_name, TW_LOCK_HANDLE *lock); -#endif - -#ifndef tw_osl_memcpy -/* Copy 'size' bytes from 'src' to 'dest'. */ -extern TW_VOID tw_osl_memcpy(TW_VOID *src, TW_VOID *dest, TW_INT32 size); -#endif - -#ifndef tw_osl_memzero -/* Zero 'size' bytes starting at 'addr'. */ -extern TW_VOID tw_osl_memzero(TW_VOID *addr, TW_INT32 size); -#endif - -#ifndef tw_osl_notify_event -/* Notify OSL of a controller/CL (or even OSL) event. */ -extern TW_VOID tw_osl_notify_event(struct tw_cl_ctlr_handle *ctlr_handle, - struct tw_cl_event_packet *event); -#endif - -#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE -#ifndef tw_osl_read_pci_config -/* Read 'size' bytes from 'offset' in the PCI config space. */ -extern TW_UINT32 tw_osl_read_pci_config( - struct tw_cl_ctlr_handle *ctlr_handle, TW_INT32 offset, TW_INT32 size); -#endif -#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ - -#ifndef tw_osl_read_reg -/* Read 'size' bytes at 'offset' from base address of this controller. */ -extern TW_UINT32 tw_osl_read_reg(struct tw_cl_ctlr_handle *ctlr_handle, - TW_INT32 offset, TW_INT32 size); -#endif - -#ifndef tw_osl_scan_bus -/* Request OSL for a bus scan. */ -extern TW_VOID tw_osl_scan_bus(struct tw_cl_ctlr_handle *ctlr_handle); -#endif - -#ifdef TW_OSL_CAN_SLEEP -#ifndef tw_osl_sleep -/* Sleep for 'timeout' ms or until woken up (by tw_osl_wakeup). */ -extern TW_INT32 tw_osl_sleep(struct tw_cl_ctlr_handle *ctlr_handle, - TW_SLEEP_HANDLE *sleep_handle, TW_INT32 timeout); -#endif -#endif /* TW_OSL_CAN_SLEEP */ - -#ifndef tw_osl_sprintf -/* Standard sprintf. */ -extern TW_INT32 tw_osl_sprintf(TW_INT8 *dest, const TW_INT8 *fmt, ...); -#endif - -#ifndef tw_osl_strcpy -/* Copy string 'src' to 'dest'. */ -extern TW_INT8 *tw_osl_strcpy(TW_INT8 *dest, TW_INT8 *src); -#endif - -#ifndef tw_osl_strlen -/* Return length of string pointed at by 'str'. */ -extern TW_INT32 tw_osl_strlen(TW_VOID *str); -#endif - -#ifndef tw_osl_vsprintf -/* Standard vsprintf. */ -extern TW_INT32 tw_osl_vsprintf(TW_INT8 *dest, const TW_INT8 *fmt, va_list ap); -#endif - -#ifdef TW_OSL_CAN_SLEEP -#ifndef tw_osl_wakeup -/* Wake up a thread sleeping by a call to tw_osl_sleep. */ -extern TW_VOID tw_osl_wakeup(struct tw_cl_ctlr_handle *ctlr_handle, - TW_SLEEP_HANDLE *sleep_handle); -#endif -#endif /* TW_OSL_CAN_SLEEP */ - -#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE -#ifndef tw_osl_write_pci_config -/* Write 'value' of 'size' bytes at 'offset' in the PCI config space. */ -extern TW_VOID tw_osl_write_pci_config(struct tw_cl_ctlr_handle *ctlr_handle, - TW_INT32 offset, TW_INT32 value, TW_INT32 size); -#endif -#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ - -#ifndef tw_osl_write_reg -/* - * Write 'value' of 'size' (max 4) bytes at 'offset' from base address of - * this controller. - */ -extern TW_VOID tw_osl_write_reg(struct tw_cl_ctlr_handle *ctlr_handle, - TW_INT32 offset, TW_INT32 value, TW_INT32 size); -#endif - -/* Functions in the Common Layer */ - -/* Creates and queues AEN's. Also notifies OS Layer. */ -extern TW_VOID tw_cl_create_event(struct tw_cl_ctlr_handle *ctlr_handle, - TW_UINT8 queue_event, TW_UINT8 event_src, TW_UINT16 event_code, - TW_UINT8 severity, TW_UINT8 *severity_str, TW_UINT8 *event_desc, - TW_UINT8 *event_specific_desc, ...); - -/* Indicates whether a ctlr is supported by CL. */ -extern TW_INT32 tw_cl_ctlr_supported(TW_INT32 vendor_id, TW_INT32 device_id); - -/* Submit a firmware cmd packet. */ -extern TW_INT32 tw_cl_fw_passthru(struct tw_cl_ctlr_handle *ctlr_handle, - struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle); - -/* Find out how much memory CL needs. */ -extern TW_INT32 tw_cl_get_mem_requirements( - struct tw_cl_ctlr_handle *ctlr_handle, TW_UINT32 flags, - TW_INT32 device_id, TW_INT32 max_simult_reqs, TW_INT32 max_aens, - TW_UINT32 *alignment, TW_UINT32 *sg_size_factor, - TW_UINT32 *non_dma_mem_size, TW_UINT32 *dma_mem_size - ); - -/* Return PCI BAR info. */ -extern TW_INT32 tw_cl_get_pci_bar_info(TW_INT32 device_id, TW_INT32 bar_type, - TW_INT32 *bar_num, TW_INT32 *bar0_offset, TW_INT32 *bar_size); - -/* Initialize Common Layer for a given controller. */ -extern TW_INT32 tw_cl_init_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, - TW_UINT32 flags, TW_INT32 device_id, TW_INT32 max_simult_reqs, - TW_INT32 max_aens, TW_VOID *non_dma_mem, TW_VOID *dma_mem, - TW_UINT64 dma_mem_phys - ); - -extern TW_VOID tw_cl_set_reset_needed(struct tw_cl_ctlr_handle *ctlr_handle); -extern TW_INT32 tw_cl_is_reset_needed(struct tw_cl_ctlr_handle *ctlr_handle); -extern TW_INT32 tw_cl_is_active(struct tw_cl_ctlr_handle *ctlr_handle); - -/* CL's interrupt handler. */ -extern TW_INT32 tw_cl_interrupt(struct tw_cl_ctlr_handle *ctlr_handle); - -/* CL's ioctl handler. */ -extern TW_INT32 tw_cl_ioctl(struct tw_cl_ctlr_handle *ctlr_handle, - u_long cmd, TW_VOID *buf); - -#ifdef TW_OSL_DEBUG -/* Print CL's state/statistics for a controller. */ -extern TW_VOID tw_cl_print_ctlr_stats(struct tw_cl_ctlr_handle *ctlr_handle); - -/* Prints CL internal details of a given request. */ -extern TW_VOID tw_cl_print_req_info(struct tw_cl_req_handle *req_handle); -#endif /* TW_OSL_DEBUG */ - -/* Soft reset controller. */ -extern TW_INT32 tw_cl_reset_ctlr(struct tw_cl_ctlr_handle *ctlr_handle); - -#ifdef TW_OSL_DEBUG -/* Reset CL's statistics for a controller. */ -extern TW_VOID tw_cl_reset_stats(struct tw_cl_ctlr_handle *ctlr_handle); -#endif /* TW_OSL_DEBUG */ - -/* Stop a controller. */ -extern TW_INT32 tw_cl_shutdown_ctlr(struct tw_cl_ctlr_handle *ctlr_handle, - TW_UINT32 flags); - -/* Submit a SCSI I/O request. */ -extern TW_INT32 tw_cl_start_io(struct tw_cl_ctlr_handle *ctlr_handle, - struct tw_cl_req_packet *req_pkt, struct tw_cl_req_handle *req_handle); - -#endif /* TW_BUILDING_API */ - -#endif /* TW_CL_SHARE_H */ diff --git a/sys/dev/twa/tw_osl.h b/sys/dev/twa/tw_osl.h deleted file mode 100644 index d6b4682bd55f..000000000000 --- a/sys/dev/twa/tw_osl.h +++ /dev/null @@ -1,298 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -#ifndef TW_OSL_H - -#define TW_OSL_H - -/* - * OS Layer internal macros, structures and functions. - */ - -#define TW_OSLI_DEVICE_NAME "3ware 9000 series Storage Controller" - -#define TW_OSLI_MALLOC_CLASS M_TWA -#define TW_OSLI_MAX_NUM_REQUESTS TW_CL_MAX_SIMULTANEOUS_REQUESTS -/* Reserve two command packets. One for ioctls and one for AENs */ -#define TW_OSLI_MAX_NUM_IOS (TW_OSLI_MAX_NUM_REQUESTS - 2) -#define TW_OSLI_MAX_NUM_AENS 0x100 - -#ifdef PAE -#define TW_OSLI_DMA_BOUNDARY (1u << 31) -#else -#define TW_OSLI_DMA_BOUNDARY ((bus_size_t)((uint64_t)1 << 32)) -#endif - -/* Possible values of req->state. */ -#define TW_OSLI_REQ_STATE_INIT 0x0 /* being initialized */ -#define TW_OSLI_REQ_STATE_BUSY 0x1 /* submitted to CL */ -#define TW_OSLI_REQ_STATE_PENDING 0x2 /* in pending queue */ -#define TW_OSLI_REQ_STATE_COMPLETE 0x3 /* completed by CL */ - -/* Possible values of req->flags. */ -#define TW_OSLI_REQ_FLAGS_DATA_IN (1<<0) /* read request */ -#define TW_OSLI_REQ_FLAGS_DATA_OUT (1<<1) /* write request */ -#define TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED (1<<2)/* data in ccb is misaligned, - have to copy to/from private buffer */ -#define TW_OSLI_REQ_FLAGS_MAPPED (1<<3) /* request has been mapped */ -#define TW_OSLI_REQ_FLAGS_IN_PROGRESS (1<<4) /* bus_dmamap_load returned - EINPROGRESS */ -#define TW_OSLI_REQ_FLAGS_PASSTHRU (1<<5) /* pass through request */ -#define TW_OSLI_REQ_FLAGS_SLEEPING (1<<6) /* owner sleeping on this cmd */ -#define TW_OSLI_REQ_FLAGS_FAILED (1<<7) /* bus_dmamap_load() failed */ -#define TW_OSLI_REQ_FLAGS_CCB (1<<8) /* req is ccb. */ - -#ifdef TW_OSL_DEBUG -struct tw_osli_q_stats { - TW_UINT32 cur_len; /* current # of items in q */ - TW_UINT32 max_len; /* max value reached by q_length */ -}; -#endif /* TW_OSL_DEBUG */ - -/* Queues of OSL internal request context packets. */ -#define TW_OSLI_FREE_Q 0 /* free q */ -#define TW_OSLI_BUSY_Q 1 /* q of reqs submitted to CL */ -#define TW_OSLI_Q_COUNT 2 /* total number of queues */ - -/* Driver's request packet. */ -struct tw_osli_req_context { - struct tw_cl_req_handle req_handle;/* tag to track req b/w OSL & CL */ - struct mtx ioctl_wake_timeout_lock_handle;/* non-spin lock used to detect ioctl timeout */ - struct mtx *ioctl_wake_timeout_lock;/* ptr to above lock */ - struct twa_softc *ctlr; /* ptr to OSL's controller context */ - TW_VOID *data; /* ptr to data being passed to CL */ - TW_UINT32 length; /* length of buf being passed to CL */ - TW_UINT64 deadline;/* request timeout (in absolute time) */ - - /* - * ptr to, and length of data passed to us from above, in case a buffer - * copy was done due to non-compliance to alignment requirements - */ - TW_VOID *real_data; - TW_UINT32 real_length; - - TW_UINT32 state; /* request state */ - TW_UINT32 flags; /* request flags */ - - /* error encountered before request submission to CL */ - TW_UINT32 error_code; - - /* ptr to orig req for use during callback */ - TW_VOID *orig_req; - - struct tw_cl_link link; /* to link this request in a list */ - bus_dmamap_t dma_map;/* DMA map for data */ - struct tw_cl_req_packet req_pkt;/* req pkt understood by CL */ -}; - -/* Per-controller structure. */ -struct twa_softc { - struct tw_cl_ctlr_handle ctlr_handle; - struct tw_osli_req_context *req_ctx_buf; - - /* Controller state. */ - TW_UINT8 open; - TW_UINT32 flags; - - TW_INT32 device_id; - TW_UINT32 alignment; - TW_UINT32 sg_size_factor; - - TW_VOID *non_dma_mem; - TW_VOID *dma_mem; - TW_UINT64 dma_mem_phys; - - /* Request queues and arrays. */ - struct tw_cl_link req_q_head[TW_OSLI_Q_COUNT]; - - struct task deferred_intr_callback;/* taskqueue function */ - struct mtx io_lock_handle;/* general purpose lock */ - struct mtx *io_lock;/* ptr to general purpose lock */ - struct mtx q_lock_handle; /* queue manipulation lock */ - struct mtx *q_lock;/* ptr to queue manipulation lock */ - struct mtx sim_lock_handle;/* sim lock shared with cam */ - struct mtx *sim_lock;/* ptr to sim lock */ - - struct callout watchdog_callout[2]; /* For command timeout */ - TW_UINT32 watchdog_index; - -#ifdef TW_OSL_DEBUG - struct tw_osli_q_stats q_stats[TW_OSLI_Q_COUNT];/* queue statistics */ -#endif /* TW_OSL_DEBUG */ - - device_t bus_dev; /* bus device */ - struct cdev *ctrl_dev; /* control device */ - struct resource *reg_res; /* register interface window */ - TW_INT32 reg_res_id; /* register resource id */ - bus_space_handle_t bus_handle; /* bus space handle */ - bus_space_tag_t bus_tag; /* bus space tag */ - bus_dma_tag_t parent_tag; /* parent DMA tag */ - bus_dma_tag_t cmd_tag; /* DMA tag for CL's DMA'able mem */ - bus_dma_tag_t dma_tag; /* data buffer DMA tag */ - bus_dma_tag_t ioctl_tag; /* ioctl data buffer DMA tag */ - bus_dmamap_t cmd_map; /* DMA map for CL's DMA'able mem */ - bus_dmamap_t ioctl_map; /* DMA map for ioctl data buffers */ - struct resource *irq_res; /* interrupt resource */ - TW_INT32 irq_res_id; /* register resource id */ - TW_VOID *intr_handle; /* interrupt handle */ - - struct sysctl_ctx_list sysctl_ctxt; /* sysctl context */ - struct sysctl_oid *sysctl_tree; /* sysctl oid */ - - struct cam_sim *sim; /* sim for this controller */ - struct cam_path *path; /* peripheral, path, tgt, lun - associated with this controller */ -}; - -/* - * Queue primitives. - */ - -#ifdef TW_OSL_DEBUG - -#define TW_OSLI_Q_INIT(sc, q_type) do { \ - (sc)->q_stats[q_type].cur_len = 0; \ - (sc)->q_stats[q_type].max_len = 0; \ -} while(0) - -#define TW_OSLI_Q_INSERT(sc, q_type) do { \ - struct tw_osli_q_stats *q_stats = &((sc)->q_stats[q_type]); \ - \ - if (++(q_stats->cur_len) > q_stats->max_len) \ - q_stats->max_len = q_stats->cur_len; \ -} while(0) - -#define TW_OSLI_Q_REMOVE(sc, q_type) \ - (sc)->q_stats[q_type].cur_len-- - -#else /* TW_OSL_DEBUG */ - -#define TW_OSLI_Q_INIT(sc, q_index) -#define TW_OSLI_Q_INSERT(sc, q_index) -#define TW_OSLI_Q_REMOVE(sc, q_index) - -#endif /* TW_OSL_DEBUG */ - -/* Initialize a queue of requests. */ -static __inline TW_VOID -tw_osli_req_q_init(struct twa_softc *sc, TW_UINT8 q_type) -{ - TW_CL_Q_INIT(&(sc->req_q_head[q_type])); - TW_OSLI_Q_INIT(sc, q_type); -} - -/* Insert the given request at the head of the given queue (q_type). */ -static __inline TW_VOID -tw_osli_req_q_insert_head(struct tw_osli_req_context *req, TW_UINT8 q_type) -{ - mtx_lock_spin(req->ctlr->q_lock); - TW_CL_Q_INSERT_HEAD(&(req->ctlr->req_q_head[q_type]), &(req->link)); - TW_OSLI_Q_INSERT(req->ctlr, q_type); - mtx_unlock_spin(req->ctlr->q_lock); -} - -/* Insert the given request at the tail of the given queue (q_type). */ -static __inline TW_VOID -tw_osli_req_q_insert_tail(struct tw_osli_req_context *req, TW_UINT8 q_type) -{ - mtx_lock_spin(req->ctlr->q_lock); - TW_CL_Q_INSERT_TAIL(&(req->ctlr->req_q_head[q_type]), &(req->link)); - TW_OSLI_Q_INSERT(req->ctlr, q_type); - mtx_unlock_spin(req->ctlr->q_lock); -} - -/* Remove and return the request at the head of the given queue (q_type). */ -static __inline struct tw_osli_req_context * -tw_osli_req_q_remove_head(struct twa_softc *sc, TW_UINT8 q_type) -{ - struct tw_osli_req_context *req = NULL; - struct tw_cl_link *link; - - mtx_lock_spin(sc->q_lock); - if ((link = TW_CL_Q_FIRST_ITEM(&(sc->req_q_head[q_type]))) != - TW_CL_NULL) { - req = TW_CL_STRUCT_HEAD(link, - struct tw_osli_req_context, link); - TW_CL_Q_REMOVE_ITEM(&(sc->req_q_head[q_type]), &(req->link)); - TW_OSLI_Q_REMOVE(sc, q_type); - } - mtx_unlock_spin(sc->q_lock); - return(req); -} - -/* Remove the given request from the given queue (q_type). */ -static __inline TW_VOID -tw_osli_req_q_remove_item(struct tw_osli_req_context *req, TW_UINT8 q_type) -{ - mtx_lock_spin(req->ctlr->q_lock); - TW_CL_Q_REMOVE_ITEM(&(req->ctlr->req_q_head[q_type]), &(req->link)); - TW_OSLI_Q_REMOVE(req->ctlr, q_type); - mtx_unlock_spin(req->ctlr->q_lock); -} - -#ifdef TW_OSL_DEBUG - -extern TW_INT32 TW_DEBUG_LEVEL_FOR_OSL; - -#define tw_osli_dbg_dprintf(dbg_level, sc, fmt, args...) \ - if (dbg_level <= TW_DEBUG_LEVEL_FOR_OSL) \ - device_printf(sc->bus_dev, "%s: " fmt "\n", \ - __func__, ##args) - -#define tw_osli_dbg_printf(dbg_level, fmt, args...) \ - if (dbg_level <= TW_DEBUG_LEVEL_FOR_OSL) \ - printf("%s: " fmt "\n", __func__, ##args) - -#else /* TW_OSL_DEBUG */ - -#define tw_osli_dbg_dprintf(dbg_level, sc, fmt, args...) -#define tw_osli_dbg_printf(dbg_level, fmt, args...) - -#endif /* TW_OSL_DEBUG */ - -/* For regular printing. */ -#define twa_printf(sc, fmt, args...) \ - device_printf(((struct twa_softc *)(sc))->bus_dev, fmt, ##args) - -/* For printing in the "consistent error reporting" format. */ -#define tw_osli_printf(sc, err_specific_desc, args...) \ - device_printf((sc)->bus_dev, \ - "%s: (0x%02X: 0x%04X): %s: " err_specific_desc "\n", ##args) - -#endif /* TW_OSL_H */ diff --git a/sys/dev/twa/tw_osl_cam.c b/sys/dev/twa/tw_osl_cam.c deleted file mode 100644 index 6e30c930f293..000000000000 --- a/sys/dev/twa/tw_osl_cam.c +++ /dev/null @@ -1,663 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -/* - * FreeBSD CAM related functions. - */ - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include - -static TW_VOID twa_action(struct cam_sim *sim, union ccb *ccb); -static TW_VOID twa_poll(struct cam_sim *sim); - -static TW_INT32 tw_osli_execute_scsi(struct tw_osli_req_context *req, - union ccb *ccb); - -/* - * Function name: tw_osli_cam_attach - * Description: Attaches the driver to CAM. - * - * Input: sc -- ptr to OSL internal ctlr context - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_osli_cam_attach(struct twa_softc *sc) -{ - struct cam_devq *devq; - - tw_osli_dbg_dprintf(3, sc, "entered"); - - /* - * Create the device queue for our SIM. - */ - if ((devq = cam_simq_alloc(TW_OSLI_MAX_NUM_IOS)) == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2100, - "Failed to create SIM device queue", - ENOMEM); - return(ENOMEM); - } - - /* - * Create a SIM entry. Though we can support TW_OSLI_MAX_NUM_REQUESTS - * simultaneous requests, we claim to be able to handle only - * TW_OSLI_MAX_NUM_IOS (two less), so that we always have a request - * packet available to service ioctls and AENs. - */ - tw_osli_dbg_dprintf(3, sc, "Calling cam_sim_alloc"); - sc->sim = cam_sim_alloc(twa_action, twa_poll, "twa", sc, - device_get_unit(sc->bus_dev), sc->sim_lock, - TW_OSLI_MAX_NUM_IOS, 1, devq); - if (sc->sim == NULL) { - cam_simq_free(devq); - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2101, - "Failed to create a SIM entry", - ENOMEM); - return(ENOMEM); - } - - /* - * Register the bus. - */ - tw_osli_dbg_dprintf(3, sc, "Calling xpt_bus_register"); - mtx_lock(sc->sim_lock); - if (xpt_bus_register(sc->sim, sc->bus_dev, 0) != CAM_SUCCESS) { - cam_sim_free(sc->sim, TRUE); - sc->sim = NULL; /* so cam_detach will not try to free it */ - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2102, - "Failed to register the bus", - ENXIO); - mtx_unlock(sc->sim_lock); - return(ENXIO); - } - - tw_osli_dbg_dprintf(3, sc, "Calling xpt_create_path"); - 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); - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2103, - "Failed to create path", - ENXIO); - mtx_unlock(sc->sim_lock); - return(ENXIO); - } - mtx_unlock(sc->sim_lock); - - tw_osli_dbg_dprintf(3, sc, "exiting"); - return(0); -} - -/* - * Function name: tw_osli_cam_detach - * Description: Detaches the driver from CAM. - * - * Input: sc -- ptr to OSL internal ctlr context - * Output: None - * Return value: None - */ -TW_VOID -tw_osli_cam_detach(struct twa_softc *sc) -{ - tw_osli_dbg_dprintf(3, sc, "entered"); - - mtx_lock(sc->sim_lock); - - if (sc->path) - xpt_free_path(sc->path); - if (sc->sim) { - 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); - } - /* It's ok have 1 hold count while destroying the mutex */ - mtx_destroy(sc->sim_lock); -} - -/* - * Function name: tw_osli_execute_scsi - * Description: Build a fw cmd, based on a CAM style ccb, and - * send it down. - * - * Input: req -- ptr to OSL internal request context - * ccb -- ptr to CAM style ccb - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_osli_execute_scsi(struct tw_osli_req_context *req, union ccb *ccb) -{ - struct twa_softc *sc = req->ctlr; - struct tw_cl_req_packet *req_pkt; - struct tw_cl_scsi_req_packet *scsi_req; - struct ccb_hdr *ccb_h = &(ccb->ccb_h); - struct ccb_scsiio *csio = &(ccb->csio); - TW_INT32 error; - - tw_osli_dbg_dprintf(10, sc, "SCSI I/O request 0x%x", - csio->cdb_io.cdb_bytes[0]); - - if (ccb_h->target_id >= TW_CL_MAX_NUM_UNITS) { - tw_osli_dbg_dprintf(3, sc, "Invalid target. PTL = %x %x %jx", - ccb_h->path_id, ccb_h->target_id, - (uintmax_t)ccb_h->target_lun); - ccb_h->status |= CAM_TID_INVALID; - xpt_done(ccb); - return(1); - } - if (ccb_h->target_lun >= TW_CL_MAX_NUM_LUNS) { - tw_osli_dbg_dprintf(3, sc, "Invalid lun. PTL = %x %x %jx", - ccb_h->path_id, ccb_h->target_id, - (uintmax_t)ccb_h->target_lun); - ccb_h->status |= CAM_LUN_INVALID; - xpt_done(ccb); - return(1); - } - - if(ccb_h->flags & CAM_CDB_PHYS) { - tw_osli_printf(sc, "", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2105, - "Physical CDB address!"); - ccb_h->status = CAM_REQ_INVALID; - xpt_done(ccb); - return(1); - } - - /* - * 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; - - if((ccb_h->flags & CAM_DIR_MASK) != CAM_DIR_NONE) { - if(ccb_h->flags & CAM_DIR_IN) - req->flags |= TW_OSLI_REQ_FLAGS_DATA_IN; - else - req->flags |= TW_OSLI_REQ_FLAGS_DATA_OUT; - } - - /* Build the CL understood request packet for SCSI cmds. */ - req_pkt = &req->req_pkt; - req_pkt->status = 0; - req_pkt->tw_osl_callback = tw_osl_complete_io; - scsi_req = &(req_pkt->gen_req_pkt.scsi_req); - scsi_req->unit = ccb_h->target_id; - scsi_req->lun = ccb_h->target_lun; - scsi_req->sense_len = 0; - scsi_req->sense_data = (TW_UINT8 *)(&csio->sense_data); - scsi_req->scsi_status = 0; - if(ccb_h->flags & CAM_CDB_POINTER) - scsi_req->cdb = csio->cdb_io.cdb_ptr; - else - scsi_req->cdb = csio->cdb_io.cdb_bytes; - scsi_req->cdb_len = csio->cdb_len; - - if (csio->dxfer_len > TW_CL_MAX_IO_SIZE) { - tw_osli_printf(sc, "size = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2106, - "I/O size too big", - csio->dxfer_len); - ccb_h->status = CAM_REQ_TOO_BIG; - ccb_h->status &= ~CAM_SIM_QUEUED; - xpt_done(ccb); - return(1); - } - if ((ccb_h->flags & CAM_DATA_MASK) == CAM_DATA_VADDR) { - if ((req->length = csio->dxfer_len) != 0) { - req->data = csio->data_ptr; - scsi_req->sgl_entries = 1; - } - } else - req->flags |= TW_OSLI_REQ_FLAGS_CCB; - req->deadline = tw_osl_get_local_time() + (ccb_h->timeout / 1000); - - /* - * twa_map_load_data_callback will fill in the SGL, - * and submit the I/O. - */ - error = tw_osli_map_request(req); - if ((error) && (req->flags & TW_OSLI_REQ_FLAGS_FAILED)) { - req->deadline = 0; - ccb_h->status = CAM_REQ_CMP_ERR; - ccb_h->status &= ~CAM_SIM_QUEUED; - xpt_done(ccb); - } - return(error); -} - -/* - * Function name: twa_action - * Description: Driver entry point for CAM's use. - * - * Input: sim -- sim corresponding to the ctlr - * ccb -- ptr to CAM request - * Output: None - * Return value: None - */ -TW_VOID -twa_action(struct cam_sim *sim, union ccb *ccb) -{ - struct twa_softc *sc = (struct twa_softc *)cam_sim_softc(sim); - struct ccb_hdr *ccb_h = &(ccb->ccb_h); - - switch (ccb_h->func_code) { - case XPT_SCSI_IO: /* SCSI I/O */ - { - struct tw_osli_req_context *req; - - req = tw_osli_get_request(sc); - if (req == NULL) { - tw_osli_dbg_dprintf(2, sc, "Cannot get request pkt."); - /* - * Freeze the simq to maintain ccb ordering. The next - * ccb that gets completed will unfreeze the simq. - */ - ccb_h->status &= ~CAM_SIM_QUEUED; - ccb_h->status |= CAM_REQUEUE_REQ; - xpt_done(ccb); - break; - } - - if ((tw_cl_is_reset_needed(&(req->ctlr->ctlr_handle)))) { - ccb_h->status &= ~CAM_SIM_QUEUED; - ccb_h->status |= CAM_REQUEUE_REQ; - xpt_done(ccb); - tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); - break; - } - - req->req_handle.osl_req_ctxt = req; - req->req_handle.is_io = TW_CL_TRUE; - req->orig_req = ccb; - if (tw_osli_execute_scsi(req, ccb)) - tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); - break; - } - - case XPT_ABORT: - tw_osli_dbg_dprintf(2, sc, "Abort request."); - ccb_h->status = CAM_UA_ABORT; - xpt_done(ccb); - break; - - case XPT_RESET_BUS: - tw_cl_create_event(&(sc->ctlr_handle), TW_CL_FALSE, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2108, 0x3, TW_CL_SEVERITY_INFO_STRING, - "Received Reset Bus request from CAM", - " "); - - tw_cl_set_reset_needed(&(sc->ctlr_handle)); - ccb_h->status = CAM_REQ_CMP; - xpt_done(ccb); - break; - - case XPT_SET_TRAN_SETTINGS: - tw_osli_dbg_dprintf(3, sc, "XPT_SET_TRAN_SETTINGS"); - - /* - * This command is not supported, since it's very specific - * to SCSI, and we are doing ATA. - */ - ccb_h->status = CAM_FUNC_NOTAVAIL; - xpt_done(ccb); - break; - - case XPT_GET_TRAN_SETTINGS: - { - struct ccb_trans_settings *cts = &ccb->cts; - struct ccb_trans_settings_scsi *scsi = - &cts->proto_specific.scsi; - struct ccb_trans_settings_spi *spi = - &cts->xport_specific.spi; - - cts->protocol = PROTO_SCSI; - cts->protocol_version = SCSI_REV_2; - cts->transport = XPORT_SPI; - cts->transport_version = 2; - - spi->valid = CTS_SPI_VALID_DISC; - spi->flags = CTS_SPI_FLAGS_DISC_ENB; - scsi->valid = CTS_SCSI_VALID_TQ; - scsi->flags = CTS_SCSI_FLAGS_TAG_ENB; - tw_osli_dbg_dprintf(3, sc, "XPT_GET_TRAN_SETTINGS"); - ccb_h->status = CAM_REQ_CMP; - xpt_done(ccb); - break; - } - - case XPT_CALC_GEOMETRY: - tw_osli_dbg_dprintf(3, sc, "XPT_CALC_GEOMETRY"); - cam_calc_geometry(&ccb->ccg, 1/* extended */); - xpt_done(ccb); - break; - - case XPT_PATH_INQ: /* Path inquiry -- get twa properties */ - { - struct ccb_pathinq *path_inq = &ccb->cpi; - - tw_osli_dbg_dprintf(3, sc, "XPT_PATH_INQ request"); - - path_inq->version_num = 1; - path_inq->hba_inquiry = 0; - path_inq->target_sprt = 0; - path_inq->hba_misc = 0; - path_inq->hba_eng_cnt = 0; - path_inq->max_target = TW_CL_MAX_NUM_UNITS; - path_inq->max_lun = TW_CL_MAX_NUM_LUNS - 1; - path_inq->unit_number = cam_sim_unit(sim); - path_inq->bus_id = cam_sim_bus(sim); - path_inq->initiator_id = TW_CL_MAX_NUM_UNITS; - path_inq->base_transfer_speed = 100000; - strlcpy(path_inq->sim_vid, "FreeBSD", SIM_IDLEN); - strlcpy(path_inq->hba_vid, "3ware", HBA_IDLEN); - strlcpy(path_inq->dev_name, cam_sim_name(sim), DEV_IDLEN); - path_inq->transport = XPORT_SPI; - path_inq->transport_version = 2; - path_inq->protocol = PROTO_SCSI; - path_inq->protocol_version = SCSI_REV_2; - path_inq->maxio = TW_CL_MAX_IO_SIZE; - ccb_h->status = CAM_REQ_CMP; - xpt_done(ccb); - break; - } - - default: - tw_osli_dbg_dprintf(3, sc, "func_code = %x", ccb_h->func_code); - ccb_h->status = CAM_REQ_INVALID; - xpt_done(ccb); - break; - } -} - -/* - * Function name: twa_poll - * Description: Driver entry point called when interrupts are not - * available. - * - * Input: sim -- sim corresponding to the controller - * Output: None - * Return value: None - */ -TW_VOID -twa_poll(struct cam_sim *sim) -{ - struct twa_softc *sc = (struct twa_softc *)(cam_sim_softc(sim)); - - tw_osli_dbg_dprintf(3, sc, "entering; sc = %p", sc); - tw_cl_interrupt(&(sc->ctlr_handle)); - tw_osli_dbg_dprintf(3, sc, "exiting; sc = %p", sc); -} - -/* - * Function name: tw_osli_request_bus_scan - * Description: Requests CAM for a scan of the bus. - * - * Input: sc -- ptr to per ctlr structure - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_osli_request_bus_scan(struct twa_softc *sc) -{ - union ccb *ccb; - - tw_osli_dbg_dprintf(3, sc, "entering"); - - /* If we get here before sc->sim is initialized, return an error. */ - if (!(sc->sim)) - return(ENXIO); - if ((ccb = xpt_alloc_ccb()) == NULL) - return(ENOMEM); - mtx_lock(sc->sim_lock); - if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(sc->sim), - CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { - xpt_free_ccb(ccb); - mtx_unlock(sc->sim_lock); - return(EIO); - } - - xpt_rescan(ccb); - mtx_unlock(sc->sim_lock); - return(0); -} - -/* - * Function name: tw_osli_disallow_new_requests - * Description: Calls the appropriate CAM function, so as to freeze - * the flow of new requests from CAM to this controller. - * - * Input: sc -- ptr to OSL internal ctlr context - * req_handle -- ptr to request handle sent by OSL. - * Output: None - * Return value: None - */ -TW_VOID -tw_osli_disallow_new_requests(struct twa_softc *sc, - struct tw_cl_req_handle *req_handle) -{ - /* Only freeze/release the simq for IOs */ - if (req_handle->is_io) { - struct tw_osli_req_context *req = req_handle->osl_req_ctxt; - union ccb *ccb = (union ccb *)(req->orig_req); - - xpt_freeze_simq(sc->sim, 1); - ccb->ccb_h.status |= CAM_RELEASE_SIMQ; - } -} - -/* - * Function name: tw_osl_timeout - * Description: Call to timeout(). - * - * Input: req_handle -- ptr to request handle sent by OSL. - * Output: None - * Return value: None - */ -TW_VOID -tw_osl_timeout(struct tw_cl_req_handle *req_handle) -{ - struct tw_osli_req_context *req = req_handle->osl_req_ctxt; - union ccb *ccb = (union ccb *)(req->orig_req); - struct ccb_hdr *ccb_h = &(ccb->ccb_h); - - req->deadline = tw_osl_get_local_time() + (ccb_h->timeout / 1000); -} - -/* - * Function name: tw_osl_untimeout - * Description: Inverse of call to timeout(). - * - * Input: req_handle -- ptr to request handle sent by OSL. - * Output: None - * Return value: None - */ -TW_VOID -tw_osl_untimeout(struct tw_cl_req_handle *req_handle) -{ - struct tw_osli_req_context *req = req_handle->osl_req_ctxt; - - req->deadline = 0; -} - -/* - * Function name: tw_osl_scan_bus - * Description: CL calls this function to request for a bus scan. - * - * Input: ctlr_handle -- ptr to controller handle - * Output: None - * Return value: None - */ -TW_VOID -tw_osl_scan_bus(struct tw_cl_ctlr_handle *ctlr_handle) -{ - struct twa_softc *sc = ctlr_handle->osl_ctlr_ctxt; - TW_INT32 error; - - if ((error = tw_osli_request_bus_scan(sc))) - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2109, - "Bus scan request to CAM failed", - error); -} - -/* - * Function name: tw_osl_complete_io - * Description: Called to complete CAM scsi requests. - * - * Input: req_handle -- ptr to request handle - * Output: None - * Return value: None - */ -TW_VOID -tw_osl_complete_io(struct tw_cl_req_handle *req_handle) -{ - struct tw_osli_req_context *req = req_handle->osl_req_ctxt; - struct tw_cl_req_packet *req_pkt = - (struct tw_cl_req_packet *)(&req->req_pkt); - struct tw_cl_scsi_req_packet *scsi_req; - struct twa_softc *sc = req->ctlr; - union ccb *ccb = (union ccb *)(req->orig_req); - - tw_osli_dbg_dprintf(10, sc, "entering"); - - if (req->state != TW_OSLI_REQ_STATE_BUSY) - tw_osli_printf(sc, "request = %p, status = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x210A, - "Unposted command completed!!", - req, req->state); - - /* - * Remove request from the busy queue. Just mark it complete. - * There's no need to move it into the complete queue as we are - * going to be done with it right now. - */ - req->state = TW_OSLI_REQ_STATE_COMPLETE; - tw_osli_req_q_remove_item(req, TW_OSLI_BUSY_Q); - - tw_osli_unmap_request(req); - - req->deadline = 0; - if (req->error_code) { - /* This request never got submitted to the firmware. */ - if (req->error_code == EBUSY) { - /* - * Cmd queue is full, or the Common Layer is out of - * resources. The simq will already have been frozen. - * When this ccb gets completed will unfreeze the simq. - */ - ccb->ccb_h.status |= CAM_REQUEUE_REQ; - } - else if (req->error_code == EFBIG) - ccb->ccb_h.status = CAM_REQ_TOO_BIG; - else - ccb->ccb_h.status = CAM_REQ_CMP_ERR; - } else { - scsi_req = &(req_pkt->gen_req_pkt.scsi_req); - if (req_pkt->status == TW_CL_ERR_REQ_SUCCESS) - ccb->ccb_h.status = CAM_REQ_CMP; - else { - if (req_pkt->status & TW_CL_ERR_REQ_INVALID_TARGET) - ccb->ccb_h.status |= CAM_SEL_TIMEOUT; - else if (req_pkt->status & TW_CL_ERR_REQ_INVALID_LUN) - ccb->ccb_h.status |= CAM_DEV_NOT_THERE; - else if (req_pkt->status & TW_CL_ERR_REQ_SCSI_ERROR) - ccb->ccb_h.status |= CAM_SCSI_STATUS_ERROR; - else if (req_pkt->status & TW_CL_ERR_REQ_BUS_RESET) - ccb->ccb_h.status |= (CAM_REQUEUE_REQ | CAM_SCSI_BUS_RESET); - /* - * If none of the above errors occurred, simply - * mark completion error. - */ - if (ccb->ccb_h.status == 0) - ccb->ccb_h.status = CAM_REQ_CMP_ERR; - - if (req_pkt->status & TW_CL_ERR_REQ_AUTO_SENSE_VALID) { - ccb->csio.sense_len = scsi_req->sense_len; - ccb->ccb_h.status |= CAM_AUTOSNS_VALID; - } - } - - ccb->csio.scsi_status = scsi_req->scsi_status; - } - - ccb->ccb_h.status &= ~CAM_SIM_QUEUED; - mtx_lock(sc->sim_lock); - xpt_done(ccb); - mtx_unlock(sc->sim_lock); - if (! req->error_code) - /* twa_action will free the request otherwise */ - tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); -} diff --git a/sys/dev/twa/tw_osl_externs.h b/sys/dev/twa/tw_osl_externs.h deleted file mode 100644 index 31dc33002f7b..000000000000 --- a/sys/dev/twa/tw_osl_externs.h +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_OSL_EXTERNS_H - -#define TW_OSL_EXTERNS_H - -/* - * Data structures and functions global to the OS Layer. - */ - -/* External data structures. */ - -extern int mp_ncpus; - -/* Functions in tw_osl_freebsd.c */ - -/* Build a firmware passthru cmd pkt, and submit it to CL. */ -extern TW_INT32 tw_osli_fw_passthru(struct twa_softc *sc, TW_INT8 *buf); - -/* Get an OSL internal request context packet. */ -extern struct tw_osli_req_context *tw_osli_get_request(struct twa_softc *sc); - -/* Map data to DMA'able memory. */ -extern TW_INT32 tw_osli_map_request(struct tw_osli_req_context *req); - -/* Undo mapping. */ -extern TW_VOID tw_osli_unmap_request(struct tw_osli_req_context *req); - -/* Functions in tw_osl_cam.c */ - -/* Attach to CAM. */ -extern TW_INT32 tw_osli_cam_attach(struct twa_softc *sc); - -/* Detach from CAM. */ -extern TW_VOID tw_osli_cam_detach(struct twa_softc *sc); - -/* Request CAM for a bus scan. */ -extern TW_INT32 tw_osli_request_bus_scan(struct twa_softc *sc); - -/* Freeze ccb flow from CAM. */ -extern TW_VOID tw_osli_disallow_new_requests(struct twa_softc *sc, - struct tw_cl_req_handle *req_handle); - -/* OSL's completion routine for SCSI I/O's. */ -extern TW_VOID tw_osl_complete_io(struct tw_cl_req_handle *req_handle); - -/* OSL's completion routine for passthru requests. */ -extern TW_VOID tw_osl_complete_passthru(struct tw_cl_req_handle *req_handle); - -#endif /* TW_OSL_EXTERNS_H */ diff --git a/sys/dev/twa/tw_osl_freebsd.c b/sys/dev/twa/tw_osl_freebsd.c deleted file mode 100644 index 6b76f424650a..000000000000 --- a/sys/dev/twa/tw_osl_freebsd.c +++ /dev/null @@ -1,1661 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * Copyright (c) 2000 Michael Smith - * Copyright (c) 2000 BSDi - * All rights reserved. - * - * 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. - */ - -#include -__FBSDID("$FreeBSD$"); - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - * Modifications by: Manjunath Ranganathaiah - */ - -/* - * FreeBSD specific functions not related to CAM, and other - * miscellaneous functions. - */ - -#include -#include -#include -#include - -#ifdef TW_OSL_DEBUG -TW_INT32 TW_DEBUG_LEVEL_FOR_OSL = TW_OSL_DEBUG; -TW_INT32 TW_OSL_DEBUG_LEVEL_FOR_CL = TW_OSL_DEBUG; -#endif /* TW_OSL_DEBUG */ - -static MALLOC_DEFINE(TW_OSLI_MALLOC_CLASS, "twa_commands", "twa commands"); - -static d_open_t twa_open; -static d_close_t twa_close; -static d_ioctl_t twa_ioctl; - -static struct cdevsw twa_cdevsw = { - .d_version = D_VERSION, - .d_open = twa_open, - .d_close = twa_close, - .d_ioctl = twa_ioctl, - .d_name = "twa", -}; - -static devclass_t twa_devclass; - -/* - * Function name: twa_open - * Description: Called when the controller is opened. - * Simply marks the controller as open. - * - * Input: dev -- control device corresponding to the ctlr - * flags -- mode of open - * fmt -- device type (character/block etc.) - * proc -- current process - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -twa_open(struct cdev *dev, TW_INT32 flags, TW_INT32 fmt, struct thread *proc) -{ - struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); - - tw_osli_dbg_dprintf(5, sc, "entered"); - sc->open = TW_CL_TRUE; - return(0); -} - -/* - * Function name: twa_close - * Description: Called when the controller is closed. - * Simply marks the controller as not open. - * - * Input: dev -- control device corresponding to the ctlr - * flags -- mode of corresponding open - * fmt -- device type (character/block etc.) - * proc -- current process - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -twa_close(struct cdev *dev, TW_INT32 flags, TW_INT32 fmt, struct thread *proc) -{ - struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); - - tw_osli_dbg_dprintf(5, sc, "entered"); - sc->open = TW_CL_FALSE; - return(0); -} - -/* - * Function name: twa_ioctl - * Description: Called when an ioctl is posted to the controller. - * Handles any OS Layer specific cmds, passes the rest - * on to the Common Layer. - * - * Input: dev -- control device corresponding to the ctlr - * cmd -- ioctl cmd - * buf -- ptr to buffer in kernel memory, which is - * a copy of the input buffer in user-space - * flags -- mode of corresponding open - * proc -- current process - * Output: buf -- ptr to buffer in kernel memory, which will - * be copied to the output buffer in user-space - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -twa_ioctl(struct cdev *dev, u_long cmd, caddr_t buf, TW_INT32 flags, struct thread *proc) -{ - struct twa_softc *sc = (struct twa_softc *)(dev->si_drv1); - TW_INT32 error; - - tw_osli_dbg_dprintf(5, sc, "entered"); - - switch (cmd) { - case TW_OSL_IOCTL_FIRMWARE_PASS_THROUGH: - tw_osli_dbg_dprintf(6, sc, "ioctl: fw_passthru"); - error = tw_osli_fw_passthru(sc, (TW_INT8 *)buf); - break; - - case TW_OSL_IOCTL_SCAN_BUS: - /* Request CAM for a bus scan. */ - tw_osli_dbg_dprintf(6, sc, "ioctl: scan bus"); - error = tw_osli_request_bus_scan(sc); - break; - - default: - tw_osli_dbg_dprintf(6, sc, "ioctl: 0x%lx", cmd); - error = tw_cl_ioctl(&sc->ctlr_handle, cmd, buf); - break; - } - return(error); -} - -static TW_INT32 twa_probe(device_t dev); -static TW_INT32 twa_attach(device_t dev); -static TW_INT32 twa_detach(device_t dev); -static TW_INT32 twa_shutdown(device_t dev); -static TW_VOID twa_busdma_lock(TW_VOID *lock_arg, bus_dma_lock_op_t op); -static TW_VOID twa_pci_intr(TW_VOID *arg); -static TW_VOID twa_watchdog(TW_VOID *arg); -int twa_setup_intr(struct twa_softc *sc); -int twa_teardown_intr(struct twa_softc *sc); - -static TW_INT32 tw_osli_alloc_mem(struct twa_softc *sc); -static TW_VOID tw_osli_free_resources(struct twa_softc *sc); - -static TW_VOID twa_map_load_data_callback(TW_VOID *arg, - bus_dma_segment_t *segs, TW_INT32 nsegments, TW_INT32 error); -static TW_VOID twa_map_load_callback(TW_VOID *arg, - bus_dma_segment_t *segs, TW_INT32 nsegments, TW_INT32 error); - -static device_method_t twa_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, twa_probe), - DEVMETHOD(device_attach, twa_attach), - DEVMETHOD(device_detach, twa_detach), - DEVMETHOD(device_shutdown, twa_shutdown), - - DEVMETHOD_END -}; - -static driver_t twa_pci_driver = { - "twa", - twa_methods, - sizeof(struct twa_softc) -}; - -DRIVER_MODULE(twa, pci, twa_pci_driver, twa_devclass, 0, 0); -MODULE_DEPEND(twa, cam, 1, 1, 1); -MODULE_DEPEND(twa, pci, 1, 1, 1); - -/* - * Function name: twa_probe - * Description: Called at driver load time. Claims 9000 ctlrs. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: <= 0 -- success - * > 0 -- failure - */ -static TW_INT32 -twa_probe(device_t dev) -{ - static TW_UINT8 first_ctlr = 1; - - tw_osli_dbg_printf(3, "entered"); - - if (tw_cl_ctlr_supported(pci_get_vendor(dev), pci_get_device(dev))) { - device_set_desc(dev, TW_OSLI_DEVICE_NAME); - /* Print the driver version only once. */ - if (first_ctlr) { - printf("3ware device driver for 9000 series storage " - "controllers, version: %s\n", - TW_OSL_DRIVER_VERSION_STRING); - first_ctlr = 0; - } - return(0); - } - return(ENXIO); -} - -int twa_setup_intr(struct twa_softc *sc) -{ - int error = 0; - - if (!(sc->intr_handle) && (sc->irq_res)) { - error = bus_setup_intr(sc->bus_dev, sc->irq_res, - INTR_TYPE_CAM | INTR_MPSAFE, - NULL, twa_pci_intr, - sc, &sc->intr_handle); - } - return( error ); -} - -int twa_teardown_intr(struct twa_softc *sc) -{ - int error = 0; - - if ((sc->intr_handle) && (sc->irq_res)) { - error = bus_teardown_intr(sc->bus_dev, - sc->irq_res, sc->intr_handle); - sc->intr_handle = NULL; - } - return( error ); -} - -/* - * Function name: twa_attach - * Description: Allocates pci resources; updates sc; adds a node to the - * sysctl tree to expose the driver version; makes calls - * (to the Common Layer) to initialize ctlr, and to - * attach to CAM. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -twa_attach(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - TW_INT32 bar_num; - TW_INT32 bar0_offset; - TW_INT32 bar_size; - TW_INT32 error; - - tw_osli_dbg_dprintf(3, sc, "entered"); - - sc->ctlr_handle.osl_ctlr_ctxt = sc; - - /* Initialize the softc structure. */ - sc->bus_dev = dev; - sc->device_id = pci_get_device(dev); - - /* Initialize the mutexes right here. */ - sc->io_lock = &(sc->io_lock_handle); - mtx_init(sc->io_lock, "tw_osl_io_lock", NULL, MTX_SPIN); - sc->q_lock = &(sc->q_lock_handle); - mtx_init(sc->q_lock, "tw_osl_q_lock", NULL, MTX_SPIN); - sc->sim_lock = &(sc->sim_lock_handle); - mtx_init(sc->sim_lock, "tw_osl_sim_lock", NULL, MTX_DEF | MTX_RECURSE); - - sysctl_ctx_init(&sc->sysctl_ctxt); - sc->sysctl_tree = SYSCTL_ADD_NODE(&sc->sysctl_ctxt, - SYSCTL_STATIC_CHILDREN(_hw), OID_AUTO, device_get_nameunit(dev), - CTLFLAG_RD | CTLFLAG_MPSAFE, 0, ""); - if (sc->sysctl_tree == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2000, - "Cannot add sysctl tree node", - ENXIO); - return(ENXIO); - } - SYSCTL_ADD_STRING(&sc->sysctl_ctxt, SYSCTL_CHILDREN(sc->sysctl_tree), - OID_AUTO, "driver_version", CTLFLAG_RD, - TW_OSL_DRIVER_VERSION_STRING, 0, "TWA driver version"); - - /* Force the busmaster enable bit on, in case the BIOS forgot. */ - pci_enable_busmaster(dev); - - /* Allocate the PCI register window. */ - if ((error = tw_cl_get_pci_bar_info(sc->device_id, TW_CL_BAR_TYPE_MEM, - &bar_num, &bar0_offset, &bar_size))) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x201F, - "Can't get PCI BAR info", - error); - tw_osli_free_resources(sc); - return(error); - } - sc->reg_res_id = PCIR_BARS + bar0_offset; - if ((sc->reg_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY, - &(sc->reg_res_id), RF_ACTIVE)) - == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2002, - "Can't allocate register window", - ENXIO); - tw_osli_free_resources(sc); - return(ENXIO); - } - sc->bus_tag = rman_get_bustag(sc->reg_res); - sc->bus_handle = rman_get_bushandle(sc->reg_res); - - /* Allocate and register our interrupt. */ - sc->irq_res_id = 0; - if ((sc->irq_res = bus_alloc_resource_any(sc->bus_dev, SYS_RES_IRQ, - &(sc->irq_res_id), - RF_SHAREABLE | RF_ACTIVE)) == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2003, - "Can't allocate interrupt", - ENXIO); - tw_osli_free_resources(sc); - return(ENXIO); - } - if ((error = twa_setup_intr(sc))) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2004, - "Can't set up interrupt", - error); - tw_osli_free_resources(sc); - return(error); - } - - if ((error = tw_osli_alloc_mem(sc))) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2005, - "Memory allocation failure", - error); - tw_osli_free_resources(sc); - return(error); - } - - /* Initialize the Common Layer for this controller. */ - if ((error = tw_cl_init_ctlr(&sc->ctlr_handle, sc->flags, sc->device_id, - TW_OSLI_MAX_NUM_REQUESTS, TW_OSLI_MAX_NUM_AENS, - sc->non_dma_mem, sc->dma_mem, - sc->dma_mem_phys - ))) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2006, - "Failed to initialize Common Layer/controller", - error); - tw_osli_free_resources(sc); - return(error); - } - - /* Create the control device. */ - sc->ctrl_dev = make_dev(&twa_cdevsw, device_get_unit(sc->bus_dev), - UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR, - "twa%d", device_get_unit(sc->bus_dev)); - sc->ctrl_dev->si_drv1 = sc; - - if ((error = tw_osli_cam_attach(sc))) { - tw_osli_free_resources(sc); - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2007, - "Failed to initialize CAM", - error); - return(error); - } - - sc->watchdog_index = 0; - callout_init(&(sc->watchdog_callout[0]), 1); - callout_init(&(sc->watchdog_callout[1]), 1); - callout_reset(&(sc->watchdog_callout[0]), 5*hz, twa_watchdog, &sc->ctlr_handle); - gone_in_dev(dev, 13, "twa(4) removed"); - - return(0); -} - -static TW_VOID -twa_watchdog(TW_VOID *arg) -{ - struct tw_cl_ctlr_handle *ctlr_handle = - (struct tw_cl_ctlr_handle *)arg; - struct twa_softc *sc = ctlr_handle->osl_ctlr_ctxt; - int i; - int i_need_a_reset = 0; - int driver_is_active = 0; - int my_watchdog_was_pending = 1234; - TW_UINT64 current_time; - struct tw_osli_req_context *my_req; - -//============================================================================== - current_time = (TW_UINT64) (tw_osl_get_local_time()); - - for (i = 0; i < TW_OSLI_MAX_NUM_REQUESTS; i++) { - my_req = &(sc->req_ctx_buf[i]); - - if ((my_req->state == TW_OSLI_REQ_STATE_BUSY) && - (my_req->deadline) && - (my_req->deadline < current_time)) { - tw_cl_set_reset_needed(ctlr_handle); -#ifdef TW_OSL_DEBUG - device_printf((sc)->bus_dev, "Request %d timed out! d = %llu, c = %llu\n", i, my_req->deadline, current_time); -#else /* TW_OSL_DEBUG */ - device_printf((sc)->bus_dev, "Request %d timed out!\n", i); -#endif /* TW_OSL_DEBUG */ - break; - } - } -//============================================================================== - - i_need_a_reset = tw_cl_is_reset_needed(ctlr_handle); - - i = (int) ((sc->watchdog_index++) & 1); - - driver_is_active = tw_cl_is_active(ctlr_handle); - - if (i_need_a_reset) { -#ifdef TW_OSL_DEBUG - device_printf((sc)->bus_dev, "Watchdog rescheduled in 70 seconds\n"); -#endif /* TW_OSL_DEBUG */ - my_watchdog_was_pending = - callout_reset(&(sc->watchdog_callout[i]), 70*hz, twa_watchdog, &sc->ctlr_handle); - tw_cl_reset_ctlr(ctlr_handle); -#ifdef TW_OSL_DEBUG - device_printf((sc)->bus_dev, "Watchdog reset completed!\n"); -#endif /* TW_OSL_DEBUG */ - } else if (driver_is_active) { - my_watchdog_was_pending = - callout_reset(&(sc->watchdog_callout[i]), 5*hz, twa_watchdog, &sc->ctlr_handle); - } -#ifdef TW_OSL_DEBUG - if (i_need_a_reset || my_watchdog_was_pending) - device_printf((sc)->bus_dev, "i_need_a_reset = %d, " - "driver_is_active = %d, my_watchdog_was_pending = %d\n", - i_need_a_reset, driver_is_active, my_watchdog_was_pending); -#endif /* TW_OSL_DEBUG */ -} - -/* - * Function name: tw_osli_alloc_mem - * Description: Allocates memory needed both by CL and OSL. - * - * Input: sc -- OSL internal controller context - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -tw_osli_alloc_mem(struct twa_softc *sc) -{ - struct tw_osli_req_context *req; - TW_UINT32 max_sg_elements; - TW_UINT32 non_dma_mem_size; - TW_UINT32 dma_mem_size; - TW_INT32 error; - TW_INT32 i; - - tw_osli_dbg_dprintf(3, sc, "entered"); - - sc->flags |= (sizeof(bus_addr_t) == 8) ? TW_CL_64BIT_ADDRESSES : 0; - sc->flags |= (sizeof(bus_size_t) == 8) ? TW_CL_64BIT_SG_LENGTH : 0; - - max_sg_elements = (sizeof(bus_addr_t) == 8) ? - TW_CL_MAX_64BIT_SG_ELEMENTS : TW_CL_MAX_32BIT_SG_ELEMENTS; - - if ((error = tw_cl_get_mem_requirements(&sc->ctlr_handle, sc->flags, - sc->device_id, TW_OSLI_MAX_NUM_REQUESTS, TW_OSLI_MAX_NUM_AENS, - &(sc->alignment), &(sc->sg_size_factor), - &non_dma_mem_size, &dma_mem_size - ))) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2008, - "Can't get Common Layer's memory requirements", - error); - return(error); - } - - if ((sc->non_dma_mem = malloc(non_dma_mem_size, TW_OSLI_MALLOC_CLASS, - M_WAITOK)) == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2009, - "Can't allocate non-dma memory", - ENOMEM); - return(ENOMEM); - } - - /* Create the parent dma tag. */ - if (bus_dma_tag_create(bus_get_dma_tag(sc->bus_dev), /* parent */ - sc->alignment, /* alignment */ - TW_OSLI_DMA_BOUNDARY, /* boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - TW_CL_MAX_IO_SIZE, /* maxsize */ - max_sg_elements, /* nsegments */ - TW_CL_MAX_IO_SIZE, /* maxsegsize */ - 0, /* flags */ - NULL, /* lockfunc */ - NULL, /* lockfuncarg */ - &sc->parent_tag /* tag */)) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x200A, - "Can't allocate parent DMA tag", - ENOMEM); - return(ENOMEM); - } - - /* Create a dma tag for Common Layer's DMA'able memory (dma_mem). */ - if (bus_dma_tag_create(sc->parent_tag, /* parent */ - sc->alignment, /* alignment */ - 0, /* boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - dma_mem_size, /* maxsize */ - 1, /* nsegments */ - BUS_SPACE_MAXSIZE, /* maxsegsize */ - 0, /* flags */ - NULL, /* lockfunc */ - NULL, /* lockfuncarg */ - &sc->cmd_tag /* tag */)) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x200B, - "Can't allocate DMA tag for Common Layer's " - "DMA'able memory", - ENOMEM); - return(ENOMEM); - } - - if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem, - BUS_DMA_NOWAIT, &sc->cmd_map)) { - /* Try a second time. */ - if (bus_dmamem_alloc(sc->cmd_tag, &sc->dma_mem, - BUS_DMA_NOWAIT, &sc->cmd_map)) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x200C, - "Can't allocate DMA'able memory for the" - "Common Layer", - ENOMEM); - return(ENOMEM); - } - } - - bus_dmamap_load(sc->cmd_tag, sc->cmd_map, sc->dma_mem, - dma_mem_size, twa_map_load_callback, - &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 */ - sc->alignment, /* alignment */ - 0, /* boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - TW_CL_MAX_IO_SIZE, /* maxsize */ - max_sg_elements, /* nsegments */ - TW_CL_MAX_IO_SIZE, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ - twa_busdma_lock, /* lockfunc */ - sc->io_lock, /* lockfuncarg */ - &sc->dma_tag /* tag */)) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x200F, - "Can't allocate DMA tag for data buffers", - ENOMEM); - return(ENOMEM); - } - - /* - * Create a dma tag for ioctl data buffers; size will be the maximum - * possible I/O size (128kB). - */ - if (bus_dma_tag_create(sc->parent_tag, /* parent */ - sc->alignment, /* alignment */ - 0, /* boundary */ - BUS_SPACE_MAXADDR, /* lowaddr */ - BUS_SPACE_MAXADDR, /* highaddr */ - NULL, NULL, /* filter, filterarg */ - TW_CL_MAX_IO_SIZE, /* maxsize */ - max_sg_elements, /* nsegments */ - TW_CL_MAX_IO_SIZE, /* maxsegsize */ - BUS_DMA_ALLOCNOW, /* flags */ - twa_busdma_lock, /* lockfunc */ - sc->io_lock, /* lockfuncarg */ - &sc->ioctl_tag /* tag */)) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2010, - "Can't allocate DMA tag for ioctl data buffers", - ENOMEM); - return(ENOMEM); - } - - /* Create just one map for all ioctl request data buffers. */ - if (bus_dmamap_create(sc->ioctl_tag, 0, &sc->ioctl_map)) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2011, - "Can't create ioctl map", - ENOMEM); - return(ENOMEM); - } - - /* Initialize request queues. */ - tw_osli_req_q_init(sc, TW_OSLI_FREE_Q); - tw_osli_req_q_init(sc, TW_OSLI_BUSY_Q); - - if ((sc->req_ctx_buf = (struct tw_osli_req_context *) - malloc((sizeof(struct tw_osli_req_context) * - TW_OSLI_MAX_NUM_REQUESTS), - TW_OSLI_MALLOC_CLASS, M_WAITOK)) == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2012, - "Failed to allocate request packets", - ENOMEM); - return(ENOMEM); - } - bzero(sc->req_ctx_buf, - sizeof(struct tw_osli_req_context) * TW_OSLI_MAX_NUM_REQUESTS); - - for (i = 0; i < TW_OSLI_MAX_NUM_REQUESTS; i++) { - req = &(sc->req_ctx_buf[i]); - req->ctlr = sc; - if (bus_dmamap_create(sc->dma_tag, 0, &req->dma_map)) { - tw_osli_printf(sc, "request # = %d, error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2013, - "Can't create dma map", - i, ENOMEM); - return(ENOMEM); - } - - /* Initialize the ioctl wakeup/ timeout mutex */ - req->ioctl_wake_timeout_lock = &(req->ioctl_wake_timeout_lock_handle); - mtx_init(req->ioctl_wake_timeout_lock, "tw_ioctl_wake_timeout_lock", NULL, MTX_DEF); - - /* Insert request into the free queue. */ - tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); - } - - return(0); -} - -/* - * Function name: tw_osli_free_resources - * Description: Performs clean-up at the time of going down. - * - * Input: sc -- ptr to OSL internal ctlr context - * Output: None - * Return value: None - */ -static TW_VOID -tw_osli_free_resources(struct twa_softc *sc) -{ - struct tw_osli_req_context *req; - TW_INT32 error = 0; - - tw_osli_dbg_dprintf(3, sc, "entered"); - - /* Detach from CAM */ - tw_osli_cam_detach(sc); - - if (sc->req_ctx_buf) - while ((req = tw_osli_req_q_remove_head(sc, TW_OSLI_FREE_Q)) != - NULL) { - mtx_destroy(req->ioctl_wake_timeout_lock); - - if ((error = bus_dmamap_destroy(sc->dma_tag, - req->dma_map))) - tw_osli_dbg_dprintf(1, sc, - "dmamap_destroy(dma) returned %d", - error); - } - - if ((sc->ioctl_tag) && (sc->ioctl_map)) - if ((error = bus_dmamap_destroy(sc->ioctl_tag, sc->ioctl_map))) - tw_osli_dbg_dprintf(1, sc, - "dmamap_destroy(ioctl) returned %d", error); - - /* Free all memory allocated so far. */ - if (sc->req_ctx_buf) - free(sc->req_ctx_buf, TW_OSLI_MALLOC_CLASS); - - if (sc->non_dma_mem) - free(sc->non_dma_mem, TW_OSLI_MALLOC_CLASS); - - if (sc->dma_mem) { - bus_dmamap_unload(sc->cmd_tag, sc->cmd_map); - bus_dmamem_free(sc->cmd_tag, sc->dma_mem, - sc->cmd_map); - } - if (sc->cmd_tag) - if ((error = bus_dma_tag_destroy(sc->cmd_tag))) - tw_osli_dbg_dprintf(1, sc, - "dma_tag_destroy(cmd) returned %d", error); - - if (sc->dma_tag) - if ((error = bus_dma_tag_destroy(sc->dma_tag))) - tw_osli_dbg_dprintf(1, sc, - "dma_tag_destroy(dma) returned %d", error); - - if (sc->ioctl_tag) - if ((error = bus_dma_tag_destroy(sc->ioctl_tag))) - tw_osli_dbg_dprintf(1, sc, - "dma_tag_destroy(ioctl) returned %d", error); - - if (sc->parent_tag) - if ((error = bus_dma_tag_destroy(sc->parent_tag))) - tw_osli_dbg_dprintf(1, sc, - "dma_tag_destroy(parent) returned %d", error); - - /* Disconnect the interrupt handler. */ - if ((error = twa_teardown_intr(sc))) - tw_osli_dbg_dprintf(1, sc, - "teardown_intr returned %d", error); - - if (sc->irq_res != NULL) - if ((error = bus_release_resource(sc->bus_dev, - SYS_RES_IRQ, sc->irq_res_id, sc->irq_res))) - tw_osli_dbg_dprintf(1, sc, - "release_resource(irq) returned %d", error); - - /* Release the register window mapping. */ - if (sc->reg_res != NULL) - if ((error = bus_release_resource(sc->bus_dev, - SYS_RES_MEMORY, sc->reg_res_id, sc->reg_res))) - tw_osli_dbg_dprintf(1, sc, - "release_resource(io) returned %d", error); - - /* Destroy the control device. */ - if (sc->ctrl_dev != (struct cdev *)NULL) - destroy_dev(sc->ctrl_dev); - - if ((error = sysctl_ctx_free(&sc->sysctl_ctxt))) - tw_osli_dbg_dprintf(1, sc, - "sysctl_ctx_free returned %d", error); - -} - -/* - * Function name: twa_detach - * Description: Called when the controller is being detached from - * the pci bus. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -twa_detach(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - TW_INT32 error; - - tw_osli_dbg_dprintf(3, sc, "entered"); - - error = EBUSY; - if (sc->open) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2014, - "Device open", - error); - goto out; - } - - /* Shut the controller down. */ - if ((error = twa_shutdown(dev))) - goto out; - - /* Free all resources associated with this controller. */ - tw_osli_free_resources(sc); - error = 0; - -out: - return(error); -} - -/* - * Function name: twa_shutdown - * Description: Called at unload/shutdown time. Lets the controller - * know that we are going down. - * - * Input: dev -- bus device corresponding to the ctlr - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -static TW_INT32 -twa_shutdown(device_t dev) -{ - struct twa_softc *sc = device_get_softc(dev); - TW_INT32 error = 0; - - tw_osli_dbg_dprintf(3, sc, "entered"); - - /* Disconnect interrupts. */ - error = twa_teardown_intr(sc); - - /* Stop watchdog task. */ - callout_drain(&(sc->watchdog_callout[0])); - callout_drain(&(sc->watchdog_callout[1])); - - /* Disconnect from the controller. */ - if ((error = tw_cl_shutdown_ctlr(&(sc->ctlr_handle), 0))) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2015, - "Failed to shutdown Common Layer/controller", - error); - } - return(error); -} - -/* - * Function name: twa_busdma_lock - * Description: Function to provide synchronization during busdma_swi. - * - * Input: lock_arg -- lock mutex sent as argument - * op -- operation (lock/unlock) expected of the function - * Output: None - * Return value: None - */ -TW_VOID -twa_busdma_lock(TW_VOID *lock_arg, bus_dma_lock_op_t op) -{ - struct mtx *lock; - - lock = (struct mtx *)lock_arg; - switch (op) { - case BUS_DMA_LOCK: - mtx_lock_spin(lock); - break; - - case BUS_DMA_UNLOCK: - mtx_unlock_spin(lock); - break; - - default: - panic("Unknown operation 0x%x for twa_busdma_lock!", op); - } -} - -/* - * Function name: twa_pci_intr - * Description: Interrupt handler. Wrapper for twa_interrupt. - * - * Input: arg -- ptr to OSL internal ctlr context - * Output: None - * Return value: None - */ -static TW_VOID -twa_pci_intr(TW_VOID *arg) -{ - struct twa_softc *sc = (struct twa_softc *)arg; - - tw_osli_dbg_dprintf(10, sc, "entered"); - tw_cl_interrupt(&(sc->ctlr_handle)); -} - -/* - * Function name: tw_osli_fw_passthru - * Description: Builds a fw passthru cmd pkt, and submits it to CL. - * - * Input: sc -- ptr to OSL internal ctlr context - * buf -- ptr to ioctl pkt understood by CL - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_osli_fw_passthru(struct twa_softc *sc, TW_INT8 *buf) -{ - struct tw_osli_req_context *req; - struct tw_osli_ioctl_no_data_buf *user_buf = - (struct tw_osli_ioctl_no_data_buf *)buf; - TW_TIME end_time; - TW_UINT32 timeout = 60; - TW_UINT32 data_buf_size_adjusted; - struct tw_cl_req_packet *req_pkt; - struct tw_cl_passthru_req_packet *pt_req; - TW_INT32 error; - - tw_osli_dbg_dprintf(5, sc, "ioctl: passthru"); - - if ((req = tw_osli_get_request(sc)) == NULL) - return(EBUSY); - - req->req_handle.osl_req_ctxt = req; - req->orig_req = buf; - req->flags |= TW_OSLI_REQ_FLAGS_PASSTHRU; - - req_pkt = &(req->req_pkt); - req_pkt->status = 0; - req_pkt->tw_osl_callback = tw_osl_complete_passthru; - /* Let the Common Layer retry the request on cmd queue full. */ - req_pkt->flags |= TW_CL_REQ_RETRY_ON_BUSY; - - pt_req = &(req_pkt->gen_req_pkt.pt_req); - /* - * Make sure that the data buffer sent to firmware is a - * 512 byte multiple in size. - */ - data_buf_size_adjusted = - (user_buf->driver_pkt.buffer_length + - (sc->sg_size_factor - 1)) & ~(sc->sg_size_factor - 1); - if ((req->length = data_buf_size_adjusted)) { - if ((req->data = malloc(data_buf_size_adjusted, - TW_OSLI_MALLOC_CLASS, M_WAITOK)) == NULL) { - error = ENOMEM; - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2016, - "Could not alloc mem for " - "fw_passthru data_buf", - error); - goto fw_passthru_err; - } - /* Copy the payload. */ - if ((error = copyin((TW_VOID *)(user_buf->pdata), - req->data, - user_buf->driver_pkt.buffer_length)) != 0) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2017, - "Could not copyin fw_passthru data_buf", - error); - goto fw_passthru_err; - } - pt_req->sgl_entries = 1; /* will be updated during mapping */ - req->flags |= (TW_OSLI_REQ_FLAGS_DATA_IN | - TW_OSLI_REQ_FLAGS_DATA_OUT); - } else - pt_req->sgl_entries = 0; /* no payload */ - - pt_req->cmd_pkt = (TW_VOID *)(&(user_buf->cmd_pkt)); - pt_req->cmd_pkt_length = sizeof(struct tw_cl_command_packet); - - if ((error = tw_osli_map_request(req))) - goto fw_passthru_err; - - end_time = tw_osl_get_local_time() + timeout; - while (req->state != TW_OSLI_REQ_STATE_COMPLETE) { - mtx_lock(req->ioctl_wake_timeout_lock); - req->flags |= TW_OSLI_REQ_FLAGS_SLEEPING; - - error = mtx_sleep(req, req->ioctl_wake_timeout_lock, 0, - "twa_passthru", timeout*hz); - mtx_unlock(req->ioctl_wake_timeout_lock); - - if (!(req->flags & TW_OSLI_REQ_FLAGS_SLEEPING)) - error = 0; - req->flags &= ~TW_OSLI_REQ_FLAGS_SLEEPING; - - if (! error) { - if (((error = req->error_code)) || - ((error = (req->state != - TW_OSLI_REQ_STATE_COMPLETE))) || - ((error = req_pkt->status))) - goto fw_passthru_err; - break; - } - - if (req_pkt->status) { - error = req_pkt->status; - goto fw_passthru_err; - } - - if (error == EWOULDBLOCK) { - /* Time out! */ - if ((!(req->error_code)) && - (req->state == TW_OSLI_REQ_STATE_COMPLETE) && - (!(req_pkt->status)) ) { -#ifdef TW_OSL_DEBUG - tw_osli_printf(sc, "request = %p", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x7777, - "FALSE Passthru timeout!", - req); -#endif /* TW_OSL_DEBUG */ - error = 0; /* False error */ - break; - } - if (!(tw_cl_is_reset_needed(&(req->ctlr->ctlr_handle)))) { -#ifdef TW_OSL_DEBUG - tw_osli_printf(sc, "request = %p", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2018, - "Passthru request timed out!", - req); -#else /* TW_OSL_DEBUG */ - device_printf((sc)->bus_dev, "Passthru request timed out!\n"); -#endif /* TW_OSL_DEBUG */ - tw_cl_reset_ctlr(&(req->ctlr->ctlr_handle)); - } - - error = 0; - end_time = tw_osl_get_local_time() + timeout; - continue; - /* - * Don't touch req after a reset. It (and any - * associated data) will be - * unmapped by the callback. - */ - } - /* - * Either the request got completed, or we were woken up by a - * signal. Calculate the new timeout, in case it was the latter. - */ - timeout = (end_time - tw_osl_get_local_time()); - } /* End of while loop */ - - /* If there was a payload, copy it back. */ - if ((!error) && (req->length)) - if ((error = copyout(req->data, user_buf->pdata, - user_buf->driver_pkt.buffer_length))) - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x2019, - "Could not copyout fw_passthru data_buf", - error); - -fw_passthru_err: - - if (req_pkt->status == TW_CL_ERR_REQ_BUS_RESET) - error = EBUSY; - - user_buf->driver_pkt.os_status = error; - /* Free resources. */ - if (req->data) - free(req->data, TW_OSLI_MALLOC_CLASS); - tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); - return(error); -} - -/* - * Function name: tw_osl_complete_passthru - * Description: Called to complete passthru requests. - * - * Input: req_handle -- ptr to request handle - * Output: None - * Return value: None - */ -TW_VOID -tw_osl_complete_passthru(struct tw_cl_req_handle *req_handle) -{ - struct tw_osli_req_context *req = req_handle->osl_req_ctxt; - struct tw_cl_req_packet *req_pkt = - (struct tw_cl_req_packet *)(&req->req_pkt); - struct twa_softc *sc = req->ctlr; - - tw_osli_dbg_dprintf(5, sc, "entered"); - - if (req->state != TW_OSLI_REQ_STATE_BUSY) { - tw_osli_printf(sc, "request = %p, status = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x201B, - "Unposted command completed!!", - req, req->state); - } - - /* - * Remove request from the busy queue. Just mark it complete. - * There's no need to move it into the complete queue as we are - * going to be done with it right now. - */ - req->state = TW_OSLI_REQ_STATE_COMPLETE; - tw_osli_req_q_remove_item(req, TW_OSLI_BUSY_Q); - - tw_osli_unmap_request(req); - - /* - * Don't do a wake up if there was an error even before the request - * was sent down to the Common Layer, and we hadn't gotten an - * EINPROGRESS. The request originator will then be returned an - * error, and he can do the clean-up. - */ - if ((req->error_code) && (!(req->flags & TW_OSLI_REQ_FLAGS_IN_PROGRESS))) - return; - - if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { - if (req->flags & TW_OSLI_REQ_FLAGS_SLEEPING) { - /* Wake up the sleeping command originator. */ - tw_osli_dbg_dprintf(5, sc, - "Waking up originator of request %p", req); - req->flags &= ~TW_OSLI_REQ_FLAGS_SLEEPING; - wakeup_one(req); - } else { - /* - * If the request completed even before mtx_sleep - * was called, simply return. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_MAPPED) - return; - - if (req_pkt->status == TW_CL_ERR_REQ_BUS_RESET) - return; - - tw_osli_printf(sc, "request = %p", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x201C, - "Passthru callback called, " - "and caller not sleeping", - req); - } - } else { - tw_osli_printf(sc, "request = %p", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x201D, - "Passthru callback called for non-passthru request", - req); - } -} - -/* - * Function name: tw_osli_get_request - * Description: Gets a request pkt from the free queue. - * - * Input: sc -- ptr to OSL internal ctlr context - * Output: None - * Return value: ptr to request pkt -- success - * NULL -- failure - */ -struct tw_osli_req_context * -tw_osli_get_request(struct twa_softc *sc) -{ - struct tw_osli_req_context *req; - - tw_osli_dbg_dprintf(4, sc, "entered"); - - /* Get a free request packet. */ - req = tw_osli_req_q_remove_head(sc, TW_OSLI_FREE_Q); - - /* Initialize some fields to their defaults. */ - if (req) { - req->req_handle.osl_req_ctxt = NULL; - req->req_handle.cl_req_ctxt = NULL; - req->req_handle.is_io = 0; - req->data = NULL; - req->length = 0; - req->deadline = 0; - req->real_data = NULL; - req->real_length = 0; - req->state = TW_OSLI_REQ_STATE_INIT;/* req being initialized */ - req->flags = 0; - req->error_code = 0; - req->orig_req = NULL; - - bzero(&(req->req_pkt), sizeof(struct tw_cl_req_packet)); - } - return(req); -} - -/* - * Function name: twa_map_load_data_callback - * Description: Callback of bus_dmamap_load for the buffer associated - * with data. Updates the cmd pkt (size/sgl_entries - * fields, as applicable) to reflect the number of sg - * elements. - * - * Input: arg -- ptr to OSL internal request context - * segs -- ptr to a list of segment descriptors - * nsegments--# of segments - * error -- 0 if no errors encountered before callback, - * non-zero if errors were encountered - * Output: None - * Return value: None - */ -static TW_VOID -twa_map_load_data_callback(TW_VOID *arg, bus_dma_segment_t *segs, - TW_INT32 nsegments, TW_INT32 error) -{ - struct tw_osli_req_context *req = - (struct tw_osli_req_context *)arg; - struct twa_softc *sc = req->ctlr; - struct tw_cl_req_packet *req_pkt = &(req->req_pkt); - - tw_osli_dbg_dprintf(10, sc, "entered"); - - if (error == EINVAL) { - req->error_code = error; - return; - } - - /* Mark the request as currently being processed. */ - req->state = TW_OSLI_REQ_STATE_BUSY; - /* Move the request into the busy queue. */ - tw_osli_req_q_insert_tail(req, TW_OSLI_BUSY_Q); - - req->flags |= TW_OSLI_REQ_FLAGS_MAPPED; - - if (error == EFBIG) { - req->error_code = error; - goto out; - } - - if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { - struct tw_cl_passthru_req_packet *pt_req; - - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) - bus_dmamap_sync(sc->ioctl_tag, sc->ioctl_map, - BUS_DMASYNC_PREREAD); - - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) { - /* - * If we're using an alignment buffer, and we're - * writing data, copy the real data out. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) - bcopy(req->real_data, req->data, req->real_length); - bus_dmamap_sync(sc->ioctl_tag, sc->ioctl_map, - BUS_DMASYNC_PREWRITE); - } - - pt_req = &(req_pkt->gen_req_pkt.pt_req); - pt_req->sg_list = (TW_UINT8 *)segs; - pt_req->sgl_entries += (nsegments - 1); - error = tw_cl_fw_passthru(&(sc->ctlr_handle), req_pkt, - &(req->req_handle)); - } else { - struct tw_cl_scsi_req_packet *scsi_req; - - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) - bus_dmamap_sync(sc->dma_tag, req->dma_map, - BUS_DMASYNC_PREREAD); - - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) { - /* - * If we're using an alignment buffer, and we're - * writing data, copy the real data out. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) - bcopy(req->real_data, req->data, req->real_length); - bus_dmamap_sync(sc->dma_tag, req->dma_map, - BUS_DMASYNC_PREWRITE); - } - - scsi_req = &(req_pkt->gen_req_pkt.scsi_req); - scsi_req->sg_list = (TW_UINT8 *)segs; - scsi_req->sgl_entries += (nsegments - 1); - error = tw_cl_start_io(&(sc->ctlr_handle), req_pkt, - &(req->req_handle)); - } - -out: - if (error) { - req->error_code = error; - req_pkt->tw_osl_callback(&(req->req_handle)); - /* - * If the caller had been returned EINPROGRESS, and he has - * registered a callback for handling completion, the callback - * will never get called because we were unable to submit the - * request. So, free up the request right here. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_IN_PROGRESS) - tw_osli_req_q_insert_tail(req, TW_OSLI_FREE_Q); - } -} - -/* - * Function name: twa_map_load_callback - * Description: Callback of bus_dmamap_load for the buffer associated - * with a cmd pkt. - * - * Input: arg -- ptr to variable to hold phys addr - * segs -- ptr to a list of segment descriptors - * nsegments--# of segments - * error -- 0 if no errors encountered before callback, - * non-zero if errors were encountered - * Output: None - * Return value: None - */ -static TW_VOID -twa_map_load_callback(TW_VOID *arg, bus_dma_segment_t *segs, - TW_INT32 nsegments, TW_INT32 error) -{ - *((bus_addr_t *)arg) = segs[0].ds_addr; -} - -/* - * Function name: tw_osli_map_request - * Description: Maps a cmd pkt and data associated with it, into - * DMA'able memory. - * - * Input: req -- ptr to request pkt - * Output: None - * Return value: 0 -- success - * non-zero-- failure - */ -TW_INT32 -tw_osli_map_request(struct tw_osli_req_context *req) -{ - struct twa_softc *sc = req->ctlr; - TW_INT32 error = 0; - - tw_osli_dbg_dprintf(10, sc, "entered"); - - /* If the command involves data, map that too. */ - if (req->data != NULL) { - /* - * It's sufficient for the data pointer to be 4-byte aligned - * to work with 9000. However, if 4-byte aligned addresses - * are passed to bus_dmamap_load, we can get back sg elements - * that are not 512-byte multiples in size. So, we will let - * only those buffers that are 512-byte aligned to pass - * through, and bounce the rest, so as to make sure that we - * always get back sg elements that are 512-byte multiples - * in size. - */ - if (((vm_offset_t)req->data % sc->sg_size_factor) || - (req->length % sc->sg_size_factor)) { - req->flags |= TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED; - /* Save original data pointer and length. */ - req->real_data = req->data; - req->real_length = req->length; - req->length = (req->length + - (sc->sg_size_factor - 1)) & - ~(sc->sg_size_factor - 1); - req->data = malloc(req->length, TW_OSLI_MALLOC_CLASS, - M_NOWAIT); - if (req->data == NULL) { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x201E, - "Failed to allocate memory " - "for bounce buffer", - ENOMEM); - /* Restore original data pointer and length. */ - req->data = req->real_data; - req->length = req->real_length; - return(ENOMEM); - } - } - - /* - * Map the data buffer into bus space and build the SG list. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { - /* Lock against multiple simultaneous ioctl calls. */ - mtx_lock_spin(sc->io_lock); - error = bus_dmamap_load(sc->ioctl_tag, sc->ioctl_map, - req->data, req->length, - twa_map_load_data_callback, req, - BUS_DMA_WAITOK); - mtx_unlock_spin(sc->io_lock); - } else if (req->flags & TW_OSLI_REQ_FLAGS_CCB) { - error = bus_dmamap_load_ccb(sc->dma_tag, req->dma_map, - req->orig_req, twa_map_load_data_callback, req, - BUS_DMA_WAITOK); - } else { - /* - * There's only one CAM I/O thread running at a time. - * So, there's no need to hold the io_lock. - */ - error = bus_dmamap_load(sc->dma_tag, req->dma_map, - req->data, req->length, - twa_map_load_data_callback, req, - BUS_DMA_WAITOK); - } - - if (!error) - error = req->error_code; - else { - if (error == EINPROGRESS) { - /* - * Specifying sc->io_lock as the lockfuncarg - * in ...tag_create should protect the access - * of ...FLAGS_MAPPED from the callback. - */ - mtx_lock_spin(sc->io_lock); - if (!(req->flags & TW_OSLI_REQ_FLAGS_MAPPED)) - req->flags |= TW_OSLI_REQ_FLAGS_IN_PROGRESS; - tw_osli_disallow_new_requests(sc, &(req->req_handle)); - mtx_unlock_spin(sc->io_lock); - error = 0; - } else { - tw_osli_printf(sc, "error = %d", - TW_CL_SEVERITY_ERROR_STRING, - TW_CL_MESSAGE_SOURCE_FREEBSD_DRIVER, - 0x9999, - "Failed to map DMA memory " - "for I/O request", - error); - req->flags |= TW_OSLI_REQ_FLAGS_FAILED; - /* Free alignment buffer if it was used. */ - if (req->flags & - TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) { - free(req->data, TW_OSLI_MALLOC_CLASS); - /* - * Restore original data pointer - * and length. - */ - req->data = req->real_data; - req->length = req->real_length; - } - } - } - - } else { - /* Mark the request as currently being processed. */ - req->state = TW_OSLI_REQ_STATE_BUSY; - /* Move the request into the busy queue. */ - tw_osli_req_q_insert_tail(req, TW_OSLI_BUSY_Q); - if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) - error = tw_cl_fw_passthru(&sc->ctlr_handle, - &(req->req_pkt), &(req->req_handle)); - else - error = tw_cl_start_io(&sc->ctlr_handle, - &(req->req_pkt), &(req->req_handle)); - if (error) { - req->error_code = error; - req->req_pkt.tw_osl_callback(&(req->req_handle)); - } - } - return(error); -} - -/* - * Function name: tw_osli_unmap_request - * Description: Undoes the mapping done by tw_osli_map_request. - * - * Input: req -- ptr to request pkt - * Output: None - * Return value: None - */ -TW_VOID -tw_osli_unmap_request(struct tw_osli_req_context *req) -{ - struct twa_softc *sc = req->ctlr; - - tw_osli_dbg_dprintf(10, sc, "entered"); - - /* If the command involved data, unmap that too. */ - if (req->data != NULL) { - if (req->flags & TW_OSLI_REQ_FLAGS_PASSTHRU) { - /* Lock against multiple simultaneous ioctl calls. */ - mtx_lock_spin(sc->io_lock); - - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) { - bus_dmamap_sync(sc->ioctl_tag, - sc->ioctl_map, BUS_DMASYNC_POSTREAD); - - /* - * If we are using a bounce buffer, and we are - * reading data, copy the real data in. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) - bcopy(req->data, req->real_data, - req->real_length); - } - - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) - bus_dmamap_sync(sc->ioctl_tag, sc->ioctl_map, - BUS_DMASYNC_POSTWRITE); - - bus_dmamap_unload(sc->ioctl_tag, sc->ioctl_map); - - mtx_unlock_spin(sc->io_lock); - } else { - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_IN) { - bus_dmamap_sync(sc->dma_tag, - req->dma_map, BUS_DMASYNC_POSTREAD); - - /* - * If we are using a bounce buffer, and we are - * reading data, copy the real data in. - */ - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) - bcopy(req->data, req->real_data, - req->real_length); - } - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_OUT) - bus_dmamap_sync(sc->dma_tag, req->dma_map, - BUS_DMASYNC_POSTWRITE); - - bus_dmamap_unload(sc->dma_tag, req->dma_map); - } - } - - /* Free alignment buffer if it was used. */ - if (req->flags & TW_OSLI_REQ_FLAGS_DATA_COPY_NEEDED) { - free(req->data, TW_OSLI_MALLOC_CLASS); - /* Restore original data pointer and length. */ - req->data = req->real_data; - req->length = req->real_length; - } -} - -#ifdef TW_OSL_DEBUG - -TW_VOID twa_report_stats(TW_VOID); -TW_VOID twa_reset_stats(TW_VOID); -TW_VOID tw_osli_print_ctlr_stats(struct twa_softc *sc); -TW_VOID twa_print_req_info(struct tw_osli_req_context *req); - -/* - * Function name: twa_report_stats - * Description: For being called from ddb. Calls functions that print - * OSL and CL internal stats for the controller. - * - * Input: None - * Output: None - * Return value: None - */ -TW_VOID -twa_report_stats(TW_VOID) -{ - struct twa_softc *sc; - TW_INT32 i; - - for (i = 0; (sc = devclass_get_softc(twa_devclass, i)) != NULL; i++) { - tw_osli_print_ctlr_stats(sc); - tw_cl_print_ctlr_stats(&sc->ctlr_handle); - } -} - -/* - * Function name: tw_osli_print_ctlr_stats - * Description: For being called from ddb. Prints OSL controller stats - * - * Input: sc -- ptr to OSL internal controller context - * Output: None - * Return value: None - */ -TW_VOID -tw_osli_print_ctlr_stats(struct twa_softc *sc) -{ - twa_printf(sc, "osl_ctlr_ctxt = %p\n", sc); - twa_printf(sc, "OSLq type current max\n"); - twa_printf(sc, "free %04d %04d\n", - sc->q_stats[TW_OSLI_FREE_Q].cur_len, - sc->q_stats[TW_OSLI_FREE_Q].max_len); - twa_printf(sc, "busy %04d %04d\n", - sc->q_stats[TW_OSLI_BUSY_Q].cur_len, - sc->q_stats[TW_OSLI_BUSY_Q].max_len); -} - -/* - * Function name: twa_print_req_info - * Description: For being called from ddb. Calls functions that print - * OSL and CL internal details for the request. - * - * Input: req -- ptr to OSL internal request context - * Output: None - * Return value: None - */ -TW_VOID -twa_print_req_info(struct tw_osli_req_context *req) -{ - struct twa_softc *sc = req->ctlr; - - twa_printf(sc, "OSL details for request:\n"); - twa_printf(sc, "osl_req_ctxt = %p, cl_req_ctxt = %p\n" - "data = %p, length = 0x%x, real_data = %p, real_length = 0x%x\n" - "state = 0x%x, flags = 0x%x, error = 0x%x, orig_req = %p\n" - "next_req = %p, prev_req = %p, dma_map = %p\n", - req->req_handle.osl_req_ctxt, req->req_handle.cl_req_ctxt, - req->data, req->length, req->real_data, req->real_length, - req->state, req->flags, req->error_code, req->orig_req, - req->link.next, req->link.prev, req->dma_map); - tw_cl_print_req_info(&(req->req_handle)); -} - -/* - * Function name: twa_reset_stats - * Description: For being called from ddb. - * Resets some OSL controller stats. - * - * Input: None - * Output: None - * Return value: None - */ -TW_VOID -twa_reset_stats(TW_VOID) -{ - struct twa_softc *sc; - TW_INT32 i; - - for (i = 0; (sc = devclass_get_softc(twa_devclass, i)) != NULL; i++) { - sc->q_stats[TW_OSLI_FREE_Q].max_len = 0; - sc->q_stats[TW_OSLI_BUSY_Q].max_len = 0; - tw_cl_reset_stats(&sc->ctlr_handle); - } -} - -#endif /* TW_OSL_DEBUG */ diff --git a/sys/dev/twa/tw_osl_includes.h b/sys/dev/twa/tw_osl_includes.h deleted file mode 100644 index e6811f5df2a7..000000000000 --- a/sys/dev/twa/tw_osl_includes.h +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_OSL_INCLUDES_H - -#define TW_OSL_INCLUDES_H - -/* - * All header files needed by the OS Layer. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include - -#endif /* TW_OSL_INCLUDES_H */ diff --git a/sys/dev/twa/tw_osl_inline.h b/sys/dev/twa/tw_osl_inline.h deleted file mode 100644 index 4fbea07af508..000000000000 --- a/sys/dev/twa/tw_osl_inline.h +++ /dev/null @@ -1,309 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_OSL_INLINE_H - -#define TW_OSL_INLINE_H - -/* - * Inline functions shared between OSL and CL, and defined by OSL. - */ - -#include - -/* - * Function name: tw_osl_init_lock - * Description: Initializes a lock. - * - * Input: ctlr_handle -- ptr to controller handle - * lock_name -- string indicating name of the lock - * Output: lock -- ptr to handle to the initialized lock - * Return value: None - */ -#define tw_osl_init_lock(ctlr_handle, lock_name, lock) \ - mtx_init(lock, lock_name, NULL, MTX_SPIN) - -/* - * Function name: tw_osl_destroy_lock - * Description: Destroys a previously initialized lock. - * - * Input: ctlr_handle -- ptr to controller handle - * lock -- ptr to handle to the lock to be - * destroyed - * Output: None - * Return value: None - */ -#define tw_osl_destroy_lock(ctlr_handle, lock) \ - mtx_destroy(lock) - -/* - * Function name: tw_osl_get_lock - * Description: Acquires the specified lock. - * - * Input: ctlr_handle -- ptr to controller handle - * lock -- ptr to handle to the lock to be - * acquired - * Output: None - * Return value: None - */ -#define tw_osl_get_lock(ctlr_handle, lock) \ - mtx_lock_spin(lock) - -/* - * Function name: tw_osl_free_lock - * Description: Frees a previously acquired lock. - * - * Input: ctlr_handle -- ptr to controller handle - * lock -- ptr to handle to the lock to be freed - * Output: None - * Return value: None - */ -#define tw_osl_free_lock(ctlr_handle, lock) \ - mtx_unlock_spin(lock) - -#ifdef TW_OSL_DEBUG - -/* - * Function name: tw_osl_dbg_printf - * Description: Prints passed info (prefixed by ctlr name)to syslog - * - * Input: ctlr_handle -- controller handle - * fmt -- format string for the arguments to follow - * ... -- variable number of arguments, to be printed - * based on the fmt string - * Output: None - * Return value: Number of bytes printed - */ -#define tw_osl_dbg_printf(ctlr_handle, fmt, args...) \ - twa_printf((ctlr_handle->osl_ctlr_ctxt), fmt, ##args) - -#endif /* TW_OSL_DEBUG */ - -/* - * Function name: tw_osl_notify_event - * Description: Prints passed event info (prefixed by ctlr name) - * to syslog - * - * Input: ctlr_handle -- controller handle - * event -- ptr to a packet describing the event/error - * Output: None - * Return value: None - */ -#define tw_osl_notify_event(ctlr_handle, event) \ - twa_printf((ctlr_handle->osl_ctlr_ctxt), \ - "%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) - -/* - * Function name: tw_osl_read_reg - * Description: Reads a register on the controller - * - * Input: ctlr_handle -- controller handle - * offset -- offset from Base Address - * size -- # of bytes to read - * Output: None - * Return value: Value read - */ -#define tw_osl_read_reg tw_osl_read_reg_inline -static __inline TW_UINT32 -tw_osl_read_reg_inline(struct tw_cl_ctlr_handle *ctlr_handle, - TW_INT32 offset, TW_INT32 size) -{ - bus_space_tag_t bus_tag = - ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_tag; - bus_space_handle_t bus_handle = - ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_handle; - - if (size == 4) - return((TW_UINT32)bus_space_read_4(bus_tag, bus_handle, - offset)); - else if (size == 2) - return((TW_UINT32)bus_space_read_2(bus_tag, bus_handle, - offset)); - else - return((TW_UINT32)bus_space_read_1(bus_tag, bus_handle, - offset)); -} - -/* - * Function name: tw_osl_write_reg - * Description: Writes to a register on the controller - * - * Input: ctlr_handle -- controller handle - * offset -- offset from Base Address - * value -- value to write - * size -- # of bytes to write - * Output: None - * Return value: None - */ -#define tw_osl_write_reg tw_osl_write_reg_inline -static __inline TW_VOID -tw_osl_write_reg_inline(struct tw_cl_ctlr_handle *ctlr_handle, - TW_INT32 offset, TW_INT32 value, TW_INT32 size) -{ - bus_space_tag_t bus_tag = - ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_tag; - bus_space_handle_t bus_handle = - ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->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, (TW_INT16)value); - else - bus_space_write_1(bus_tag, bus_handle, offset, (TW_INT8)value); -} - -#ifdef TW_OSL_PCI_CONFIG_ACCESSIBLE - -/* - * Function name: tw_osl_read_pci_config - * Description: Reads from the PCI config space. - * - * Input: sc -- ptr to per ctlr structure - * offset -- register offset - * size -- # of bytes to be read - * Output: None - * Return value: Value read - */ -#define tw_osl_read_pci_config(ctlr_handle, offset, size) \ - pci_read_config( \ - ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_dev, \ - offset, size) - -/* - * Function name: tw_osl_write_pci_config - * Description: Writes to the PCI config space. - * - * Input: sc -- ptr to per ctlr structure - * offset -- register offset - * value -- value to write - * size -- # of bytes to be written - * Output: None - * Return value: None - */ -#define tw_osl_write_pci_config(ctlr_handle, offset, value, size) \ - pci_write_config( \ - ((struct twa_softc *)(ctlr_handle->osl_ctlr_ctxt))->bus_dev, \ - offset/*PCIR_STATUS*/, value, size) - -#endif /* TW_OSL_PCI_CONFIG_ACCESSIBLE */ - -/* - * Function name: tw_osl_get_local_time - * Description: Gets the local time - * - * Input: None - * Output: None - * Return value: local time - */ -#define tw_osl_get_local_time() \ - (time_second - utc_offset()) - -/* - * Function name: tw_osl_delay - * Description: Spin for the specified time - * - * Input: usecs -- micro-seconds to spin - * Output: None - * Return value: None - */ -#define tw_osl_delay(usecs) DELAY(usecs) - -#ifdef TW_OSL_CAN_SLEEP - -/* - * Function name: tw_osl_sleep - * Description: Sleep for the specified time, or until woken up - * - * Input: ctlr_handle -- controller handle - * sleep_handle -- handle to sleep on - * timeout -- time period (in ms) to sleep - * Output: None - * Return value: 0 -- successfully woken up - * EWOULDBLOCK -- time out - * ERESTART -- woken up by a signal - */ -#define tw_osl_sleep(ctlr_handle, sleep_handle, timeout) \ - tsleep((TW_VOID *)sleep_handle, PRIBIO, NULL, timeout) - -/* - * Function name: tw_osl_wakeup - * Description: Wake up a sleeping process - * - * Input: ctlr_handle -- controller handle - * sleep_handle -- handle of sleeping process to be - woken up - * Output: None - * Return value: None - */ -#define tw_osl_wakeup(ctlr_handle, sleep_handle) \ - wakeup_one(sleep_handle) - -#endif /* TW_OSL_CAN_SLEEP */ - -/* Allows setting breakpoints in the CL code for debugging purposes. */ -#define tw_osl_breakpoint() breakpoint() - -/* Text name of current function. */ -#define tw_osl_cur_func() __func__ - -/* Copy 'size' bytes from 'src' to 'dest'. */ -#define tw_osl_memcpy(dest, src, size) bcopy(src, dest, size) - -/* Zero 'size' bytes starting at 'addr'. */ -#define tw_osl_memzero bzero - -/* Standard sprintf. */ -#define tw_osl_sprintf sprintf - -/* Copy string 'src' to 'dest'. */ -#define tw_osl_strcpy strcpy - -/* Return length of string pointed at by 'str'. */ -#define tw_osl_strlen strlen - -/* Standard vsprintf. */ -#define tw_osl_vsprintf vsprintf - -#endif /* TW_OSL_INLINE_H */ diff --git a/sys/dev/twa/tw_osl_ioctl.h b/sys/dev/twa/tw_osl_ioctl.h deleted file mode 100644 index 6c1673c158a8..000000000000 --- a/sys/dev/twa/tw_osl_ioctl.h +++ /dev/null @@ -1,108 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_OSL_IOCTL_H - -#define TW_OSL_IOCTL_H - -/* - * Macros and structures for OS Layer/Common Layer handled ioctls. - */ - -#include -#include - -#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. - */ -typedef struct tw_osli_ioctl_no_data_buf { - struct tw_cl_driver_packet driver_pkt; - TW_VOID *pdata; /* points to data_buf */ - TW_INT8 padding[488 - sizeof(TW_VOID *)]; - struct tw_cl_command_packet cmd_pkt; -} TW_OSLI_IOCTL_NO_DATA_BUF; - -#pragma pack() - -/* ioctl cmds handled by the OS Layer */ -#define TW_OSL_IOCTL_SCAN_BUS \ - _IO('T', 200) -#define TW_OSL_IOCTL_FIRMWARE_PASS_THROUGH \ - _IOWR('T', 202, TW_OSLI_IOCTL_NO_DATA_BUF) - -#include - -#pragma pack(1) - -typedef struct tw_osli_ioctl_with_payload { - struct tw_cl_driver_packet driver_pkt; - TW_INT8 padding[488]; - struct tw_cl_command_packet cmd_pkt; - union { - struct tw_cl_event_packet event_pkt; - struct tw_cl_lock_packet lock_pkt; - struct tw_cl_compatibility_packet compat_pkt; - TW_INT8 data_buf[1]; - } payload; -} TW_OSLI_IOCTL_WITH_PAYLOAD; - -#pragma pack() - -/* ioctl cmds handled by the Common Layer */ -#define TW_CL_IOCTL_GET_FIRST_EVENT \ - _IOWR('T', 203, TW_OSLI_IOCTL_WITH_PAYLOAD) -#define TW_CL_IOCTL_GET_LAST_EVENT \ - _IOWR('T', 204, TW_OSLI_IOCTL_WITH_PAYLOAD) -#define TW_CL_IOCTL_GET_NEXT_EVENT \ - _IOWR('T', 205, TW_OSLI_IOCTL_WITH_PAYLOAD) -#define TW_CL_IOCTL_GET_PREVIOUS_EVENT \ - _IOWR('T', 206, TW_OSLI_IOCTL_WITH_PAYLOAD) -#define TW_CL_IOCTL_GET_LOCK \ - _IOWR('T', 207, TW_OSLI_IOCTL_WITH_PAYLOAD) -#define TW_CL_IOCTL_RELEASE_LOCK \ - _IOWR('T', 208, TW_OSLI_IOCTL_WITH_PAYLOAD) -#define TW_CL_IOCTL_GET_COMPATIBILITY_INFO \ - _IOWR('T', 209, TW_OSLI_IOCTL_WITH_PAYLOAD) - -#endif /* TW_OSL_IOCTL_H */ diff --git a/sys/dev/twa/tw_osl_share.h b/sys/dev/twa/tw_osl_share.h deleted file mode 100644 index 0e5ee02e300c..000000000000 --- a/sys/dev/twa/tw_osl_share.h +++ /dev/null @@ -1,107 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_OSL_SHARE_H - -#define TW_OSL_SHARE_H - -/* - * Macros, structures and functions shared between OSL and CL, - * and defined by OSL. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include "opt_twa.h" - -#ifdef TWA_DEBUG -#define TW_OSL_DEBUG TWA_DEBUG -#endif - -#ifdef TWA_ENCLOSURE_SUPPORT -#define TW_OSL_ENCLOSURE_SUPPORT -#endif - -#define TW_OSL_DRIVER_VERSION_STRING "3.80.06.003" - -#define TW_OSL_CAN_SLEEP - -#ifdef TW_OSL_CAN_SLEEP -typedef TW_VOID *TW_SLEEP_HANDLE; -#endif /* TW_OSL_CAN_SLEEP */ - -#define TW_OSL_PCI_CONFIG_ACCESSIBLE - -#if _BYTE_ORDER == _BIG_ENDIAN -#define TW_OSL_BIG_ENDIAN -#else -#define TW_OSL_LITTLE_ENDIAN -#endif - -#ifdef TW_OSL_DEBUG -extern TW_INT32 TW_OSL_DEBUG_LEVEL_FOR_CL; -#endif /* TW_OSL_DEBUG */ - -/* Possible return codes from/to Common Layer functions. */ -#define TW_OSL_ESUCCESS 0 /* success */ -#define TW_OSL_EGENFAILURE 1 /* general failure */ -#define TW_OSL_ENOMEM ENOMEM /* insufficient memory */ -#define TW_OSL_EIO EIO /* I/O error */ -#define TW_OSL_ETIMEDOUT ETIMEDOUT /* time out */ -#define TW_OSL_ENOTTY ENOTTY /* invalid command */ -#define TW_OSL_EBUSY EBUSY /* busy -- try later */ -#define TW_OSL_EBIG EFBIG /* request too big */ -#define TW_OSL_EWOULDBLOCK EWOULDBLOCK /* sleep timed out */ -#define TW_OSL_ERESTART ERESTART /* sleep terminated by a signal */ - -#endif /* TW_OSL_SHARE_H */ diff --git a/sys/dev/twa/tw_osl_types.h b/sys/dev/twa/tw_osl_types.h deleted file mode 100644 index d208606e61da..000000000000 --- a/sys/dev/twa/tw_osl_types.h +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * SPDX-License-Identifier: BSD-2-Clause-FreeBSD - * - * Copyright (c) 2004-07 Applied Micro Circuits Corporation. - * Copyright (c) 2004-05 Vinod Kashyap. - * All rights reserved. - * - * 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$ - */ - -/* - * AMCC'S 3ware driver for 9000 series storage controllers. - * - * Author: Vinod Kashyap - * Modifications by: Adam Radford - */ - -#ifndef TW_OSL_TYPES_H - -#define TW_OSL_TYPES_H - -/* - * typedefs shared between OSL and CL, and defined by OSL. - */ - -typedef void TW_VOID; -typedef char TW_INT8; -typedef unsigned char TW_UINT8; -typedef short TW_INT16; -typedef unsigned short TW_UINT16; -typedef int TW_INT32; -typedef unsigned int TW_UINT32; -typedef long long TW_INT64; -typedef unsigned long long TW_UINT64; - -typedef time_t TW_TIME; -typedef struct mtx TW_LOCK_HANDLE; - -#endif /* TW_OSL_TYPES_H */ diff --git a/sys/i386/conf/GENERIC b/sys/i386/conf/GENERIC index 6dc819e998b2..b5ed7848f853 100644 --- a/sys/i386/conf/GENERIC +++ b/sys/i386/conf/GENERIC @@ -1,360 +1,359 @@ # # 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: # # https://docs.freebsd.org/en/books/handbook/kernelconfig/#kernelconfig-config # # 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 (https://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 makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols makeoptions WITH_CTF=1 # Run ctfconvert(1) for DTrace support options SCHED_ULE # ULE scheduler options PREEMPTION # Enable kernel thread preemption options VIMAGE # Subsystem virtualization, e.g. VNET options INET # InterNETworking options INET6 # IPv6 communications protocols options IPSEC_SUPPORT # Allow kldload of ipsec and tcpmd5 options ROUTE_MPATH # Multipath routing support options TCP_HHOOK # hhook(9) framework for TCP options TCP_OFFLOAD # TCP offload options SCTP_SUPPORT # Allow kldload of SCTP 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 QUOTA # Enable disk quotas for UFS options MD_ROOT # MD is a potential root device options NFSCL # Network Filesystem Client options NFSD # Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCL options MSDOSFS # MSDOS Filesystem options CD9660 # ISO 9660 Filesystem options PROCFS # Process filesystem (requires PSEUDOFS) options PSEUDOFS # Pseudo-filesystem framework options TMPFS # Efficient memory filesystem options GEOM_RAID # Soft RAID functionality. options GEOM_LABEL # Provides labelization 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 COMPAT_FREEBSD9 # Compatible with FreeBSD9 options COMPAT_FREEBSD10 # Compatible with FreeBSD10 options COMPAT_FREEBSD11 # Compatible with FreeBSD11 options COMPAT_FREEBSD12 # Compatible with FreeBSD12 options COMPAT_FREEBSD13 # Compatible with FreeBSD13 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 _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 CAPABILITY_MODE # Capsicum capability mode options CAPABILITIES # Capsicum capabilities options MAC # TrustedBSD MAC Framework options KDTRACE_HOOKS # Kernel DTrace hooks options DDB_CTF # Kernel ELF linker loads CTF data options INCLUDE_CONFIG_FILE # Include this file in kernel options RACCT # Resource accounting framework options RACCT_DEFAULT_TO_DISABLED # Set kern.racct.enable=0 by default options RCTL # Resource limits # Debugging support. Always need this: options KDB # Enable kernel debugger support. options KDB_TRACE # Print a stack trace for a panic. # For full debugger support use (turn off in stable branch): options DDB # Support DDB. options GDB # Support remote GDB. options DEADLKRES # Enable the deadlock resolver options INVARIANTS # Enable calls of extra sanity checking options INVARIANT_SUPPORT # Extra sanity checks of internal structures, required by INVARIANTS options WITNESS # Enable checks to detect deadlocks and cycles options WITNESS_SKIPSPIN # Don't run witness on spinlocks for speed options MALLOC_DEBUG_MAXZONES=8 # Separate malloc(9) zones options VERBOSE_SYSINIT=0 # Support debug.verbose_sysinit, off by default # Kernel dump features. options EKCD # Support for encrypted kernel dumps options GZIO # gzip-compressed kernel and user dumps options ZSTDIO # zstd-compressed kernel and user dumps options DEBUGNET # debugnet networking options NETDUMP # netdump(4) client support options NETGDB # netgdb(4) client support # To make an SMP kernel, the next two lines are needed options SMP # Symmetric MultiProcessor Kernel device apic # I/O APIC options EARLY_AP_STARTUP # CPU frequency control device cpufreq # Bus support. device acpi device smbios device pci options PCI_HP # PCI-Express native HotPlug options PCI_IOV # PCI SR-IOV support # Floppy drives device fdc # ATA controllers device ahci # AHCI-compatible SATA controllers device ata # Legacy ATA/SATA controllers device mvs # Marvell 88SX50XX/88SX60XX/88SX70XX/SoC SATA device siis # SiliconImage SiI3124/SiI3132/SiI3531 SATA # SCSI Controllers device ahc # AHA2940 and onboard AIC7xxx devices 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 mpr # LSI-Logic MPT-Fusion 3 device sym # NCR/Symbios Logic device isci # Intel C600 SAS controller device pvscsi # VMware PVSCSI # ATA/SCSI peripherals device scbus # SCSI bus (required for ATA/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 ATA/SCSI access) device ses # Enclosure Services (SES and SAF-TE) #device ctl # CAM Target Layer # RAID controllers interfaced to the SCSI subsystem device arcmsr # Areca SATA II RAID device ciss # Compaq Smart RAID 5* device ips # IBM (Adaptec) ServeRAID -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 aacraid # Adaptec by PMC RAID device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device mrsas # LSI/Avago MegaRAID SAS/SATA, 6Gb/s and 12Gb/s device pmspcv # PMC-Sierra SAS/SATA Controller driver device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID # NVM Express (NVMe) support device nvme # base NVMe driver device nvd # expose NVMe namespace as disks, depends on nvme # 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 options VESA # Add support for VESA BIOS Extensions (VBE) device splash # Splash screen and screen saver support # syscons is the default console driver, resembling an SCO console device sc options SC_PIXEL_MODE # add support for the raster text mode # vt is the new video console driver device vt device vt_vga device vt_vbefb device agp # support several AGP chipsets # PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge 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 ppi # Parallel port interface device #device vpo # Requires scbus and da device puc # Multi I/O cards and multi-channel UARTs # PCI/PCI-X/PCIe Ethernet NICs that use iflib infrastructure device iflib device igc # Intel I225 2.5G Ethernet device em # Intel PRO/1000 Gigabit Ethernet Family device vmx # VMware VMXNET3 Ethernet # PCI Ethernet NICs. device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE device le # AMD Am7900 LANCE and Am79C9xx PCnet device ti # Alteon Networks Tigon I/II gigabit Ethernet # 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 cas # Sun Cassini/Cassini+ and NS DP83065 Saturn 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 gem # Sun GEM/Sun ERI/Apple GMAC 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 re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 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 vge # VIA VT612x gigabit Ethernet device vr # VIA Rhine, Rhine II device vte # DM&P Vortex86 RDC R6040 Fast Ethernet device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'') # Wireless NIC cards device wlan # 802.11 support options IEEE80211_DEBUG # enable debug msgs 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 ath # Atheros NICs device ath_pci # Atheros pci/cardbus glue device ath_hal # pci/cardbus chip support options AH_AR5416_INTERRUPT_MITIGATION # AR5416 interrupt mitigation options ATH_ENABLE_11N # Enable 802.11n support for AR5416 and later device ath_rate_sample # SampleRate tx rate control for ath #device bwi # Broadcom BCM430x/BCM431x wireless NICs. #device bwn # Broadcom BCM43xx wireless NICs. device ipw # Intel 2100 wireless NICs. device iwi # Intel 2200BG/2225BG/2915ABG wireless NICs. device iwn # Intel 4965/1000/5000/6000 wireless NICs. device malo # Marvell Libertas wireless NICs. device mwl # Marvell 88W8363 802.11n wireless NICs. device ral # Ralink Technology RT2500 wireless NICs. device wpi # Intel 3945ABG wireless NICs. # Pseudo devices. device crypto # core crypto support device aesni # AES-NI OpenCrypto module device loop # Network loopback device padlock_rng # VIA Padlock RNG device rdrand_rng # Intel Bull Mountain RNG device ether # Ethernet support device vlan # 802.1Q VLAN support device tuntap # Packet tunnel. device md # Memory "disks" device gif # IPv6 and IPv4 tunneling 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 xhci # XHCI PCI->USB interface (USB 3.0) device usb # USB Bus (required) device ukbd # Keyboard device umass # Disks/Mass storage - Requires scbus and da # Sound support device sound # Generic sound driver (required) device snd_cmi # CMedia CMI8338/CMI8738 device snd_csa # Crystal Semiconductor CS461x/428x device snd_emu10kx # Creative SoundBlaster Live! and Audigy device snd_es137x # Ensoniq AudioPCI ES137x device snd_hda # Intel High Definition Audio device snd_ich # Intel, NVidia and other ICH AC'97 Audio device snd_via8233 # VIA VT8233x Audio # MMC/SD device mmc # MMC/SD bus device mmcsd # MMC/SD memory card device sdhci # Generic PCI SD Host Controller device rtsx # Realtek SD card reader # VirtIO support device virtio # Generic VirtIO bus (required) device virtio_pci # VirtIO PCI device device vtnet # VirtIO Ethernet device device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device # Linux KVM paravirtualization support device kvm_clock # KVM paravirtual clock driver # HyperV drivers and enhancement support # NOTE: HYPERV depends on hyperv. They must be added or removed together. options HYPERV # Kernel support for HyperV drivers device hyperv # HyperV drivers # Xen HVM Guest Optimizations # NOTE: XENHVM and xenpci interdepend. They must be added or removed # together. xentimer depends on XENHVM and isn't required. options XENHVM # Xen HVM kernel infrastructure device xenpci # Xen HVM Hypervisor services driver device xentimer # Xen x86 PV timer device # evdev interface options EVDEV_SUPPORT # evdev support in legacy drivers device evdev # input event device support device uinput # install /dev/uinput cdev # HID support options HID_DEBUG # enable debug msgs device hid # Generic HID support options IICHID_SAMPLING # Workaround missing GPIO INTR support diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES index a3434a90af77..2beab7240a68 100644 --- a/sys/i386/conf/NOTES +++ b/sys/i386/conf/NOTES @@ -1,905 +1,898 @@ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # # $FreeBSD$ # # # Enable the kernel DTrace hooks which are required to load the DTrace # kernel modules. # options KDTRACE_HOOKS # DTrace core # NOTE: introduces CDDL-licensed components into the kernel #device dtrace # DTrace modules #device dtrace_profile #device dtrace_sdt #device dtrace_fbt #device dtrace_systrace #device dtrace_prototype #device dtnfscl #device dtmalloc # Alternatively include all the DTrace modules #device dtraceall ##################################################################### # SMP OPTIONS: # # The apic device enables the use of the I/O APIC for interrupt delivery. # The apic device can be used in both UP and SMP kernels, but is required # for SMP kernels. Thus, the apic device is not strictly an SMP option, # but it is a prerequisite for SMP. # # Notes: # # HTT CPUs should only be used if they are enabled in the BIOS. For # the ACPI case, ACPI only correctly tells us about any HTT CPUs if # they are enabled. However, most HTT systems do not list HTT CPUs # in the MP Table if they are enabled, thus we guess at the HTT CPUs # for the MP Table case. However, we shouldn't try to guess and use # these CPUs if HTT is disabled. Thus, HTT guessing is only enabled # for the MP Table if the user explicitly asks for it via the # MPTABLE_FORCE_HTT option. Do NOT use this option if you have HTT # disabled in your BIOS. # # IPI_PREEMPTION instructs the kernel to preempt threads running on other # CPUS if needed. Relies on the PREEMPTION option # Mandatory: device apic # I/O apic # Optional: options MPTABLE_FORCE_HTT # Enable HTT CPUs with the MP Table options IPI_PREEMPTION # # Watchdog routines. # options MP_WATCHDOG # Debugging options. # options COUNT_XINVLTLB_HITS # Counters for TLB events options COUNT_IPIS # Per-CPU IPI interrupt counters ##################################################################### # CPU OPTIONS # # You must specify at least one CPU (the one you intend to run on); # deleting the specification for CPUs you don't need to use may make # parts of the system run faster. # cpu I486_CPU cpu I586_CPU # aka Pentium(tm) cpu I686_CPU # aka Pentium Pro(tm) # # Options for CPU features. # # CPU_ATHLON_SSE_HACK tries to enable SSE instructions when the BIOS has # forgotten to enable them. # # CPU_BLUELIGHTNING_3X enables triple-clock mode on IBM Blue Lightning # CPU if CPU supports it. The default is double-clock mode on # BlueLightning CPU box. # # CPU_BLUELIGHTNING_FPU_OP_CACHE enables FPU operand cache on IBM # BlueLightning CPU. It works only with Cyrix FPU, and this option # should not be used with Intel FPU. # # CPU_BTB_EN enables branch target buffer on Cyrix 5x86 (NOTE 1). # # CPU_CYRIX_NO_LOCK enables weak locking for the entire address space # of Cyrix 6x86 and 6x86MX CPUs by setting the NO_LOCK bit of CCR1. # Otherwise, the NO_LOCK bit of CCR1 is cleared. (NOTE 3) # # CPU_DIRECT_MAPPED_CACHE sets L1 cache of Cyrix 486DLC CPU in direct # mapped mode. Default is 2-way set associative mode. # # CPU_DISABLE_5X86_LSSER disables load store serialize (i.e., enables # reorder). This option should not be used if you use memory mapped # I/O device(s). # # CPU_ELAN enables support for AMDs ElanSC520 CPU. # CPU_ELAN_PPS enables precision timestamp code. # CPU_ELAN_XTAL sets the clock crystal frequency in Hz. # # CPU_ENABLE_LONGRUN enables support for Transmeta Crusoe LongRun # technology which allows to restrict power consumption of the CPU by # using group of hw.crusoe.* sysctls. # # CPU_FASTER_5X86_FPU enables faster FPU exception handler. # # CPU_GEODE is for the SC1100 Geode embedded processor. This option # is necessary because the i8254 timecounter is toast. # # CPU_I486_ON_386 enables CPU cache on i486 based CPU upgrade products # for i386 machines. # # CPU_IORT defines I/O clock delay time (NOTE 1). Default values of # I/O clock delay time on Cyrix 5x86 and 6x86 are 0 and 7,respectively # (no clock delay). # # CPU_L2_LATENCY specifies the L2 cache latency value. This option is used # only when CPU_PPRO2CELERON is defined and Mendocino Celeron is detected. # The default value is 5. # # CPU_LOOP_EN prevents flushing the prefetch buffer if the destination # of a jump is already present in the prefetch buffer on Cyrix 5x86(NOTE # 1). # # CPU_PPRO2CELERON enables L2 cache of Mendocino Celeron CPUs. This option # is useful when you use Socket 8 to Socket 370 converter, because most Pentium # Pro BIOSs do not enable L2 cache of Mendocino Celeron CPUs. # # CPU_RSTK_EN enables return stack on Cyrix 5x86 (NOTE 1). # # CPU_SOEKRIS enables support www.soekris.com hardware. # # CPU_SUSP_HLT enables suspend on HALT. If this option is set, CPU # enters suspend mode following execution of HALT instruction. # # CPU_UPGRADE_HW_CACHE eliminates unneeded cache flush instruction(s). # # CPU_WT_ALLOC enables write allocation on Cyrix 6x86/6x86MX and AMD # K5/K6/K6-2 CPUs. # # CYRIX_CACHE_WORKS enables CPU cache on Cyrix 486 CPUs with cache # flush at hold state. # # CYRIX_CACHE_REALLY_WORKS enables (1) CPU cache on Cyrix 486 CPUs # without cache flush at hold state, and (2) write-back CPU cache on # Cyrix 6x86 whose revision < 2.7 (NOTE 2). # # NO_F00F_HACK disables the hack that prevents Pentiums (and ONLY # Pentiums) from locking up when a LOCK CMPXCHG8B instruction is # executed. This option is only needed if I586_CPU is also defined, # and should be included for any non-Pentium CPU that defines it. # # NO_MEMORY_HOLE is an optimisation for systems with AMD K6 processors # which indicates that the 15-16MB range is *definitely* not being # occupied by an ISA memory hole. # # NOTE 1: The options, CPU_BTB_EN, CPU_LOOP_EN, CPU_IORT, # CPU_LOOP_EN and CPU_RSTK_EN should not be used because of CPU bugs. # These options may crash your system. # # NOTE 2: If CYRIX_CACHE_REALLY_WORKS is not set, CPU cache is enabled # in write-through mode when revision < 2.7. If revision of Cyrix # 6x86 >= 2.7, CPU cache is always enabled in write-back mode. # # NOTE 3: This option may cause failures for software that requires # locked cycles in order to operate correctly. # options CPU_ATHLON_SSE_HACK options CPU_BLUELIGHTNING_3X options CPU_BLUELIGHTNING_FPU_OP_CACHE options CPU_BTB_EN options CPU_DIRECT_MAPPED_CACHE options CPU_DISABLE_5X86_LSSER options CPU_ELAN options CPU_ELAN_PPS options CPU_ELAN_XTAL=32768000 options CPU_ENABLE_LONGRUN options CPU_FASTER_5X86_FPU options CPU_GEODE options CPU_I486_ON_386 options CPU_IORT options CPU_L2_LATENCY=5 options CPU_LOOP_EN options CPU_PPRO2CELERON options CPU_RSTK_EN options CPU_SOEKRIS options CPU_SUSP_HLT options CPU_UPGRADE_HW_CACHE options CPU_WT_ALLOC options CYRIX_CACHE_WORKS options CYRIX_CACHE_REALLY_WORKS #options NO_F00F_HACK # Debug options options NPX_DEBUG # enable npx debugging # # PERFMON causes the driver for Pentium/Pentium Pro performance counters # to be compiled. See perfmon(4) for more information. # options PERFMON ##################################################################### # NETWORKING OPTIONS # # DEVICE_POLLING adds support for mixed interrupt-polling handling # of network device drivers, which has significant benefits in terms # of robustness to overloads and responsivity, as well as permitting # accurate scheduling of the CPU time between kernel network processing # and other activities. The drawback is a moderate (up to 1/HZ seconds) # potential increase in response times. # It is strongly recommended to use HZ=1000 or 2000 with DEVICE_POLLING # to achieve smoother behaviour. # Additionally, you can enable/disable polling at runtime with help of # the ifconfig(8) utility, and select the CPU fraction reserved to # userland with the sysctl variable kern.polling.user_frac # (default 50, range 0..100). # # Not all device drivers support this mode of operation at the time of # this writing. See polling(4) for more details. options DEVICE_POLLING # BPF_JITTER adds support for BPF just-in-time compiler. options BPF_JITTER # OpenFabrics Enterprise Distribution (Infiniband). options OFED options OFED_DEBUG_INIT # Sockets Direct Protocol options SDP options SDP_DEBUG # IP over Infiniband options IPOIB options IPOIB_DEBUG options IPOIB_CM ##################################################################### # CLOCK OPTIONS # Provide read/write access to the memory in the clock chip. device nvram # Access to rtc cmos via /dev/nvram ##################################################################### # MISCELLANEOUS DEVICES AND OPTIONS device speaker #Play IBM BASIC-style noises out your speaker envvar hint.speaker.0.at="isa" envvar hint.speaker.0.port="0x61" ##################################################################### # HARDWARE BUS CONFIGURATION # # ISA bus # device isa # # Options for `isa': # # AUTO_EOI_1 enables the `automatic EOI' feature for the master 8259A # interrupt controller. This saves about 0.7-1.25 usec for each interrupt. # This option breaks suspend/resume on some portables. # # AUTO_EOI_2 enables the `automatic EOI' feature for the slave 8259A # interrupt controller. This saves about 0.7-1.25 usec for each interrupt. # Automatic EOI is documented not to work for for the slave with the # original i8259A, but it works for some clones and some integrated # versions. # # MAXMEM specifies the amount of RAM on the machine; if this is not # specified, FreeBSD will first read the amount of memory from the CMOS # RAM, so the amount of memory will initially be limited to 64MB or 16MB # depending on the BIOS. If the BIOS reports 64MB, a memory probe will # then attempt to detect the installed amount of RAM. If this probe # fails to detect >64MB RAM you will have to use the MAXMEM option. # The amount is in kilobytes, so for a machine with 128MB of RAM, it would # be 131072 (128 * 1024). # # BROKEN_KEYBOARD_RESET disables the use of the keyboard controller to # reset the CPU for reboot. This is needed on some systems with broken # keyboard controllers. options AUTO_EOI_1 #options AUTO_EOI_2 options MAXMEM=(128*1024) #options BROKEN_KEYBOARD_RESET # # AGP GART support device agp # AGP debugging. options AGP_DEBUG ##################################################################### # HARDWARE DEVICE CONFIGURATION # To include support for VGA VESA video modes options VESA # Turn on extra debugging checks and output for VESA support. options VESA_DEBUG device dpms # DPMS suspend & resume via VESA BIOS # x86 real mode BIOS emulator, required by atkbdc/dpms/vesa options X86BIOS # # Hints for the non-optional Numeric Processing eXtension driver. envvar hint.npx.0.flags="0x0" envvar hint.npx.0.irq="13" # # `flags' for npx0: # 0x01 don't use the npx registers to optimize bcopy. # 0x02 don't use the npx registers to optimize bzero. # 0x04 don't use the npx registers to optimize copyin or copyout. # The npx registers are normally used to optimize copying and zeroing when # all of the following conditions are satisfied: # I586_CPU is an option # the cpu is an i586 (perhaps not a Pentium) # the probe for npx0 succeeds # INT 16 exception handling works. # Then copying and zeroing using the npx registers is normally 30-100% faster. # The flags can be used to control cases where it doesn't work or is slower. # Setting them at boot time using hints works right (the optimizations # are not used until later in the bootstrap when npx0 is attached). # Flag 0x08 automatically disables the i586 optimized routines. # # # Optional devices: # # PS/2 mouse device psm envvar hint.psm.0.at="atkbdc" envvar hint.psm.0.irq="12" # Options for psm: options PSM_HOOKRESUME #hook the system resume event, useful #for some laptops options PSM_RESETAFTERSUSPEND #reset the device at the resume event # The keyboard controller; it controls the keyboard and the PS/2 mouse. device atkbdc envvar hint.atkbdc.0.at="isa" envvar hint.atkbdc.0.port="0x060" # The AT keyboard device atkbd envvar hint.atkbd.0.at="atkbdc" envvar hint.atkbd.0.irq="1" # Options for atkbd: options ATKBD_DFLT_KEYMAP # specify the built-in keymap makeoptions ATKBD_DFLT_KEYMAP=fr.dvorak # `flags' for atkbd: # 0x01 Force detection of keyboard, else we always assume a keyboard # 0x02 Don't reset keyboard, useful for some newer ThinkPads # 0x03 Force detection and avoid reset, might help with certain # dockingstations # 0x04 Old-style (XT) keyboard support, useful for older ThinkPads # Video card driver for VGA adapters. device vga envvar hint.vga.0.at="isa" # Options for vga: # Try the following option if the mouse pointer is not drawn correctly # or font does not seem to be loaded properly. May cause flicker on # some systems. options VGA_ALT_SEQACCESS # If you can dispense with some vga driver features, you may want to # use the following options to save some memory. #options VGA_NO_FONT_LOADING # don't save/load font #options VGA_NO_MODE_CHANGE # don't change video modes # Older video cards may require this option for proper operation. options VGA_SLOW_IOACCESS # do byte-wide i/o's to TS and GDC regs # The following option probably won't work with the LCD displays. options VGA_WIDTH90 # support 90 column modes # Debugging. options VGA_DEBUG # vt(4) drivers. device vt_vga device vt_vbefb # Linear framebuffer driver for S3 VESA 1.2 cards. Works on top of VESA. device s3pci # 3Dfx Voodoo Graphics, Voodoo II /dev/3dfx CDEV support. This will create # the /dev/3dfx0 device to work with glide implementations. This should get # linked to /dev/3dfx and /dev/voodoo. Note that this is not the same as # the tdfx DRI module from XFree86 and is completely unrelated. # # To enable Linuxulator support, one must also load linux.ko and tdfx_linux.ko. device tdfx # Enable 3Dfx Voodoo support options IOMMU # Enable IOMMU support # # ACPI support using the Intel ACPI Component Architecture reference # implementation. # # ACPI_DEBUG enables the use of the debug.acpi.level and debug.acpi.layer # kernel environment variables to select initial debugging levels for the # Intel ACPICA code. (Note that the Intel code must also have USE_DEBUGGER # defined when it is built). device acpi options ACPI_DEBUG # ACPI WMI Mapping driver device acpi_wmi # ACPI Asus Extras (LCD backlight/brightness, video output, etc.) device acpi_asus # ACPI Fujitsu Extras (Buttons) device acpi_fujitsu # ACPI extras driver for HP laptops device acpi_hp # ACPI extras driver for IBM laptops device acpi_ibm # ACPI Panasonic Extras (LCD backlight/brightness, video output, etc.) device acpi_panasonic # ACPI Sony extra (LCD brightness) device acpi_sony # ACPI Toshiba Extras (LCD backlight/brightness, video output, etc.) device acpi_toshiba # ACPI Video Extensions (LCD backlight/brightness, video output, etc.) device acpi_video # ACPI Docking Station device acpi_dock # ACPI ASOC ATK0110 ASUSTeK AI Booster (voltage, temperature and fan sensors) device aibs # The cpufreq(4) driver provides support for non-ACPI CPU frequency control device cpufreq # # Network interfaces: # # bxe: Broadcom NetXtreme II (BCM5771X/BCM578XX) PCIe 10Gb Ethernet # adapters. # ce: Cronyx Tau-PCI/32 sync single/dual port G.703/E1 serial adaptor # with 32 HDLC subchannels, requires NETGRAPH # igc: Intel I225 2.5G Ethernet adapter # ipw: Intel PRO/Wireless 2100 IEEE 802.11 adapter # iwi: Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 adapters # Requires the iwi firmware module # iwn: Intel Wireless WiFi Link 1000/105/135/2000/4965/5000/6000/6050 abgn # 802.11 network adapters # Requires the iwn firmware module # mthca: Mellanox HCA InfiniBand # mlx4ib: Mellanox ConnectX HCA InfiniBand # mlx4en: Mellanox ConnectX HCA Ethernet # nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # sbni: Granch SBNI12-xx ISA and PCI adapters # vmx: VMware VMXNET3 Ethernet (BSD open source) # wpi: Intel 3945ABG Wireless LAN controller # Requires the wpi firmware module # Order for ISA/EISA devices is important here device bxe # Broadcom NetXtreme II BCM5771X/BCM578XX 10GbE device ce envvar hint.cs.0.at="isa" envvar hint.cs.0.port="0x300" options ED_3C503 options ED_HPP options ED_SIC envvar hint.ed.0.at="isa" envvar hint.ed.0.port="0x280" envvar hint.ed.0.irq="5" envvar hint.ed.0.maddr="0xd8000" device igc # Intel I225 2.5G Ethernet device ipw # Intel 2100 wireless NICs. device iwi # Intel 2200BG/2225BG/2915ABG wireless NICs. device iwn # Intel 4965/1000/5000/6000 wireless NICs. # Hint for the i386-only ISA front-end of le(4). envvar hint.le.0.at="isa" envvar hint.le.0.port="0x280" envvar hint.le.0.irq="10" envvar hint.le.0.drq="0" device mthca # Mellanox HCA InfiniBand device mlx4 # Shared code module between IB and Ethernet device mlx4ib # Mellanox ConnectX HCA InfiniBand device mlx4en # Mellanox ConnectX HCA Ethernet device nfe # nVidia nForce MCP on-board Ethernet device sbni envvar hint.sbni.0.at="isa" envvar hint.sbni.0.port="0x210" envvar hint.sbni.0.irq="0xefdead" envvar hint.sbni.0.flags="0" device vmx # VMware VMXNET3 Ethernet device wpi # Intel 3945ABG wireless NICs. # IEEE 802.11 adapter firmware modules # Intel PRO/Wireless 2100 firmware: # ipwfw: BSS/IBSS/monitor mode firmware # ipwbssfw: BSS mode firmware # ipwibssfw: IBSS mode firmware # ipwmonitorfw: Monitor mode firmware # Intel PRO/Wireless 2200BG/2225BG/2915ABG firmware: # iwifw: BSS/IBSS/monitor mode firmware # iwibssfw: BSS mode firmware # iwiibssfw: IBSS mode firmware # iwimonitorfw: Monitor mode firmware # Intel Wireless WiFi Link 4965/1000/5000/6000 series firmware: # iwnfw: Single module to support all devices # iwn1000fw: Specific module for the 1000 only # iwn105fw: Specific module for the 105 only # iwn135fw: Specific module for the 135 only # iwn2000fw: Specific module for the 2000 only # iwn2030fw: Specific module for the 2030 only # iwn4965fw: Specific module for the 4965 only # iwn5000fw: Specific module for the 5000 only # iwn5150fw: Specific module for the 5150 only # iwn6000fw: Specific module for the 6000 only # iwn6000g2afw: Specific module for the 6000g2a only # iwn6000g2bfw: Specific module for the 6000g2b only # iwn6050fw: Specific module for the 6050 only # wpifw: Intel 3945ABG Wireless LAN Controller firmware device iwifw device iwibssfw device iwiibssfw device iwimonitorfw device ipwfw device ipwbssfw device ipwibssfw device ipwmonitorfw device iwnfw device iwn1000fw device iwn105fw device iwn135fw device iwn2000fw device iwn2030fw device iwn4965fw device iwn5000fw device iwn5150fw device iwn6000fw device iwn6000g2afw device iwn6000g2bfw device iwn6050fw device wpifw # # Non-Transparent Bridge (NTB) drivers # device if_ntb # Virtual NTB network interface device ntb_transport # NTB packet transport driver device ntb # NTB hardware interface device ntb_hw_amd # AMD NTB hardware driver device ntb_hw_intel # Intel NTB hardware driver device ntb_hw_plx # PLX NTB hardware driver # # ATA raid adapters # device pst # # Areca 11xx and 12xx series of SATA II RAID controllers. # CAM is required. # device arcmsr # Areca SATA II RAID -# -# 3ware 9000 series PATA/SATA RAID controller driver and options. -# The driver is implemented as a SIM, and so, needs the CAM infrastructure. -# -options TWA_DEBUG # 0-10; 10 prints the most messages. -device twa # 3ware 9000 series PATA/SATA RAID - # # Adaptec FSA RAID controllers, including integrated DELL controllers, # the Dell PERC 2/QC and the HP NetRAID-4M device aac device aacp # SCSI Passthrough interface (optional, CAM required) # # Adaptec by PMC RAID controllers, Series 6/7/8 and upcoming families device aacraid # Container interface, CAM required # # Highpoint RocketRAID 27xx. device hpt27xx # # Highpoint RocketRAID 182x. device hptmv # # Highpoint DC7280 and R750. device hptnr # # Highpoint RocketRAID. Supports RR172x, RR222x, RR2240, RR232x, RR2340, # RR2210, RR174x, RR2522, RR231x, RR230x. device hptrr # # Highpoint RocketRaid 3xxx series SATA RAID device hptiop # # Intel integrated Memory Controller (iMC) SMBus controller # Sandybridge-Xeon, Ivybridge-Xeon, Haswell-Xeon, Broadwell-Xeon device imcsmb # # IBM (now Adaptec) ServeRAID controllers device ips # # Intel C600 (Patsburg) integrated SAS controller device isci options ISCI_LOGGING # enable debugging in isci HAL # # NVM Express (NVMe) support device nvme # base NVMe driver device nvd # expose NVMe namespaces as disks, depends on nvme # # Intel Volume Management Device (VMD) support device vmd # # PMC-Sierra SAS/SATA controller device pmspcv # # SafeNet crypto driver: can be moved to the MI NOTES as soon as # it's tested on a big-endian machine # device safe # SafeNet 1141 options SAFE_DEBUG # enable debugging support: hw.safe.debug options SAFE_RNDTEST # enable rndtest support # # glxiic is an I2C driver for the AMD Geode LX CS5536 System Management Bus # controller. Requires 'device iicbus'. # device glxiic # AMD Geode LX CS5536 System Management Bus # # glxsb is a driver for the Security Block in AMD Geode LX processors. # Requires 'device crypto'. # device glxsb # AMD Geode LX Security Block # # VirtIO support # # The virtio entry provides a generic bus for use by the device drivers. # It must be combined with an interface that communicates with the host. # Multiple such interfaces defined by the VirtIO specification. FreeBSD # only has support for PCI. Therefore, virtio_pci must be statically # compiled in or loaded as a module for the device drivers to function. # device virtio # Generic VirtIO bus (required) device virtio_pci # VirtIO PCI Interface device vtnet # VirtIO Ethernet device device virtio_blk # VirtIO Block device device virtio_scsi # VirtIO SCSI device device virtio_balloon # VirtIO Memory Balloon device device virtio_random # VirtIO Entropy device device virtio_console # VirtIO Console device # Linux KVM paravirtualization support device kvm_clock # KVM paravirtual clock driver options HYPERV device hyperv # HyperV drivers ##################################################################### # # Miscellaneous hardware: # # ipmi: Intelligent Platform Management Interface # smapi: System Management Application Program Interface driver # smbios: DMI/SMBIOS entry point # vpd: Vital Product Data kernel interface # pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) # asmc: Apple System Management Controller # si: Specialix International SI/XIO or SX intelligent serial card driver # tpm: Trusted Platform Module # Notes on the Specialix SI/XIO driver: # The host card is memory, not IO mapped. # The Rev 1 host cards use a 64K chunk, on a 32K boundary. # The Rev 2 host cards use a 32K chunk, on a 32K boundary. # The cards can use an IRQ of 11, 12 or 15. # Notes on the Sony Programmable I/O controller # This is a temporary driver that should someday be replaced by something # that hooks into the ACPI layer. The device is hooked to the PIIX4's # General Device 10 decoder, which means you have to fiddle with PCI # registers to map it in, even though it is otherwise treated here as # an ISA device. At the moment, the driver polls, although the device # is capable of generating interrupts. It largely undocumented. # The port location in the hint is where you WANT the device to be # mapped. 0x10a0 seems to be traditional. At the moment the jogdial # is the only thing truly supported, but apparently a fair percentage # of the Vaio extra features are controlled by this device. device ipmi device smapi device smbios device vpd device pbio envvar hint.pbio.0.at="isa" envvar hint.pbio.0.port="0x360" device asmc device tpm device padlock_rng # VIA Padlock RNG device rdrand_rng # Intel Bull Mountain RNG device aesni # AES-NI OpenCrypto module device ossl # OpenSSL OpenCrypto module # # Laptop/Notebook options: # # See also: # apm under `Miscellaneous hardware' # above. device backlight # For older notebooks that signal a powerfail condition (external # power supply dropped, or battery state low) by issuing an NMI: options POWERFAIL_NMI # make it beep instead of panicing # # I2C Bus # # Philips i2c bus support is provided by the `iicbus' device. # # Supported interfaces: # pcf Philips PCF8584 ISA-bus controller # device pcf envvar hint.pcf.0.at="isa" envvar hint.pcf.0.port="0x320" envvar hint.pcf.0.irq="5" # # Hardware watchdog timers: # # ichwd: Intel ICH watchdog timer # amdsbwd: AMD SB7xx watchdog timer # viawd: VIA south bridge watchdog timer # wbwd: Winbond watchdog timer # itwd: ITE Super I/O watchdog timer # device ichwd device amdsbwd device viawd device wbwd device itwd # # Temperature sensors: # # coretemp: on-die sensor on Intel Core and newer CPUs # amdtemp: on-die sensor on AMD K8/K10/K11 CPUs # device coretemp device amdtemp # # CPU control pseudo-device. Provides access to MSRs, CPUID info and # microcode update feature. # device cpuctl # # SuperIO driver. # device superio # # System Management Bus (SMB) # options ENABLE_ALART # Control alarm on Intel intpm driver # # Set the number of PV entries per process. Increasing this can # stop panics related to heavy use of shared memory. However, that can # (combined with large amounts of physical memory) cause panics at # boot time due the kernel running out of VM space. # # If you're tweaking this, you might also want to increase the sysctls # "vm.v_free_min", "vm.v_free_reserved", and "vm.v_free_target". # # The value below is the one more than the default. # options PMAP_SHPGPERPROC=201 # # Number of initial kernel page table pages used for early bootstrap. # This number should include enough pages to map the kernel, any # modules or other data loaded with the kernel by the loader, and data # structures allocated before the VM system is initialized such as the # vm_page_t array. Each page table page maps 4MB (2MB with PAE). # options NKPT=31 # # HID-over-I2C support # device iichid # HID-over-I2C support options IICHID_DEBUG # Enable HID-over-I2C debug messages options IICHID_SAMPLING # Workaround missing GPIO INTR support ##################################################################### # ABI Emulation # Enable (32-bit) a.out binary support options COMPAT_AOUT ##################################################################### # VM OPTIONS # KSTACK_PAGES is the number of memory pages to assign to the kernel # stack of each thread. options KSTACK_PAGES=5 # Enable detailed accounting by the PV entry allocator. options PV_STATS ##################################################################### # More undocumented options for linting. # Note that documenting these are not considered an affront. options FB_INSTALL_CDEV # install a CDEV entry in /dev options KBDIO_DEBUG=2 options KBD_MAXRETRY=4 options KBD_MAXWAIT=6 options KBD_RESETDELAY=201 options PSM_DEBUG=1 options TIMER_FREQ=((14318182+6)/12) options VM_KMEM_SIZE options VM_KMEM_SIZE_MAX options VM_KMEM_SIZE_SCALE diff --git a/sys/modules/Makefile b/sys/modules/Makefile index 7683343c9120..815d206aad3f 100644 --- a/sys/modules/Makefile +++ b/sys/modules/Makefile @@ -1,839 +1,837 @@ # $FreeBSD$ SYSDIR?=${SRCTOP}/sys .include "${SYSDIR}/conf/kern.opts.mk" SUBDIR_PARALLEL= # Modules that include binary-only blobs of microcode should be selectable by # MK_SOURCELESS_UCODE option (see below). .include "${SYSDIR}/conf/config.mk" .if defined(MODULES_OVERRIDE) && !defined(ALL_MODULES) SUBDIR=${MODULES_OVERRIDE} .else SUBDIR= \ ${_3dfx} \ ${_3dfx_linux} \ ${_aac} \ ${_aacraid} \ accf_data \ accf_dns \ accf_http \ acl_nfs4 \ acl_posix1e \ ${_acpi} \ ae \ ${_aesni} \ age \ ${_agp} \ ahci \ aic7xxx \ alc \ ale \ alq \ ${_amd_ecc_inject} \ ${_amdgpio} \ ${_amdsbwd} \ ${_amdsmn} \ ${_amdtemp} \ ${_aout} \ ${_arcmsr} \ ${_allwinner} \ ${_armv8crypto} \ ${_asmc} \ ata \ ath \ ath_dfs \ ath_hal \ ath_hal_ar5210 \ ath_hal_ar5211 \ ath_hal_ar5212 \ ath_hal_ar5416 \ ath_hal_ar9300 \ ath_main \ ath_rate \ ath_pci \ ${_autofs} \ axgbe \ backlight \ ${_bce} \ ${_bcm283x_clkman} \ ${_bcm283x_pwm} \ bfe \ bge \ bhnd \ ${_bxe} \ ${_bios} \ ${_blake2} \ bnxt \ bridgestp \ bwi \ bwn \ ${_bytgpio} \ ${_chvgpio} \ cam \ ${_cardbus} \ ${_carp} \ cas \ ${_cbb} \ cc \ ${_ccp} \ cd9660 \ cd9660_iconv \ ${_ce} \ ${_cfi} \ ${_chromebook_platform} \ ${_ciss} \ ${_coretemp} \ ${_cp} \ ${_cpsw} \ ${_cpuctl} \ ${_cpufreq} \ ${_crypto} \ ${_cryptodev} \ ctl \ ${_cxgb} \ ${_cxgbe} \ dc \ dcons \ dcons_crom \ ${_dpdk_lpm4} \ ${_dpdk_lpm6} \ ${_dpms} \ dummynet \ ${_dwwdt} \ ${_e6000sw} \ ${_efirt} \ ${_em} \ ${_ena} \ ${_enetc} \ ${_et} \ evdev \ ${_exca} \ ext2fs \ fdc \ fdescfs \ ${_felix} \ ${_ffec} \ ${_fib_dxr} \ filemon \ firewire \ firmware \ ${_ftwd} \ fusefs \ ${_fxp} \ gem \ geom \ ${_glxiic} \ ${_glxsb} \ gpio \ hid \ hifn \ ${_hpt27xx} \ ${_hptiop} \ ${_hptmv} \ ${_hptnr} \ ${_hptrr} \ hwpmc \ ${_hwpmc_mips24k} \ ${_hwpmc_mips74k} \ ${_hyperv} \ i2c \ ${_iavf} \ ${_ibcore} \ ${_ichwd} \ ${_ice} \ ${_ice_ddp} \ ${_ida} \ if_bridge \ if_disc \ if_edsc \ ${_if_enc} \ if_epair \ ${_if_gif} \ ${_if_gre} \ ${_if_me} \ if_infiniband \ if_lagg \ ${_if_stf} \ if_tuntap \ if_vlan \ if_vxlan \ iflib \ ${_igc} \ imgact_binmisc \ ${_intelspi} \ ${_io} \ ${_ioat} \ ${_ipoib} \ ${_ipdivert} \ ${_ipfilter} \ ${_ipfw} \ ipfw_nat \ ${_ipfw_nat64} \ ${_ipfw_nptv6} \ ${_ipfw_pmod} \ ${_ipmi} \ ip6_mroute_mod \ ip_mroute_mod \ ${_ips} \ ${_ipsec} \ ${_ipw} \ ${_ipwfw} \ ${_isci} \ ${_iser} \ isp \ ${_ispfw} \ ${_itwd} \ ${_iwi} \ ${_iwifw} \ ${_iwm} \ ${_iwmfw} \ ${_iwn} \ ${_iwnfw} \ ${_ix} \ ${_ixv} \ ${_ixl} \ jme \ kbdmux \ kgssapi \ kgssapi_krb5 \ khelp \ krpc \ ksyms \ le \ lge \ libalias \ libiconv \ libmchain \ lindebugfs \ linuxkpi \ ${_lio} \ lpt \ mac_biba \ mac_bsdextended \ mac_ifoff \ mac_lomac \ mac_mls \ mac_none \ mac_ntpd \ mac_partition \ mac_portacl \ mac_seeotheruids \ mac_stub \ mac_test \ ${_malo} \ ${_mana} \ md \ mdio \ ${_mgb} \ mem \ mfi \ mii \ mlx \ mlxfw \ ${_mlx4} \ ${_mlx4ib} \ ${_mlx4en} \ ${_mlx5} \ ${_mlx5en} \ ${_mlx5ib} \ mmc \ mmcsd \ ${_mpr} \ ${_mps} \ mpt \ mqueue \ mrsas \ msdosfs \ msdosfs_iconv \ msk \ ${_mthca} \ mvs \ mwl \ ${_mwlfw} \ mxge \ my \ ${_nctgpio} \ ${_neta} \ ${_netgraph} \ ${_nfe} \ nfscl \ nfscommon \ nfsd \ nfslockd \ nfssvc \ nge \ nmdm \ nullfs \ ${_ntb} \ ${_nvd} \ ${_nvdimm} \ ${_nvme} \ ${_nvram} \ oce \ ${_ocs_fc} \ ${_ossl} \ otus \ ${_otusfw} \ ow \ ${_padlock} \ ${_padlock_rng} \ ${_pchtherm} \ ${_pcfclock} \ ${_pf} \ ${_pflog} \ ${_pfsync} \ plip \ ${_pms} \ ppbus \ ppc \ ppi \ pps \ procfs \ proto \ pseudofs \ ${_pst} \ pty \ puc \ pwm \ ${_qat} \ ${_qatfw} \ ${_qlxge} \ ${_qlxgb} \ ${_qlxgbe} \ ${_qlnx} \ ral \ ${_ralfw} \ ${_random_fortuna} \ ${_random_other} \ rc4 \ ${_rdma} \ ${_rdrand_rng} \ re \ rl \ ${_rockchip} \ rtsx \ rtwn \ rtwn_pci \ rtwn_usb \ ${_rtwnfw} \ ${_s3} \ ${_safe} \ safexcel \ ${_sbni} \ scc \ ${_sctp} \ sdhci \ ${_sdhci_acpi} \ ${_sdhci_fdt} \ sdhci_pci \ sdio \ sem \ send \ ${_sfxge} \ sge \ ${_sgx} \ ${_sgx_linux} \ siftr \ siis \ sis \ sk \ ${_smartpqi} \ smbfs \ snp \ sound \ ${_speaker} \ spi \ ${_splash} \ ste \ stge \ ${_sume} \ ${_superio} \ ${_p2sb} \ ${_sym} \ ${_syscons} \ sysvipc \ tcp \ ${_ti} \ tmpfs \ ${_toecore} \ ${_tpm} \ - ${_twa} \ twe \ tws \ uart \ udf \ udf_iconv \ ufs \ uinput \ unionfs \ usb \ ${_vesa} \ virtio \ vge \ ${_viawd} \ videomode \ vkbd \ ${_vmd} \ ${_vmm} \ ${_vmware} \ vr \ vte \ ${_wbwd} \ wlan \ wlan_acl \ wlan_amrr \ wlan_ccmp \ wlan_rssadapt \ wlan_tkip \ wlan_wep \ wlan_xauth \ ${_wpi} \ ${_wpifw} \ ${_x86bios} \ xdr \ xl \ xz \ zlib .if ${MK_AUTOFS} != "no" || defined(ALL_MODULES) _autofs= autofs .endif .if ${MK_CDDL} != "no" || defined(ALL_MODULES) .if (${MACHINE_CPUARCH} != "arm" || ${MACHINE_ARCH:Marmv[67]*} != "") && \ ${MACHINE_CPUARCH} != "mips" .if ${KERN_OPTS:MKDTRACE_HOOKS} SUBDIR+= dtrace .endif .endif SUBDIR+= opensolaris .endif .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) .if exists(${SRCTOP}/sys/opencrypto) _crypto= crypto _cryptodev= cryptodev _random_fortuna=random_fortuna _random_other= random_other .endif .endif .if ${MK_CUSE} != "no" || defined(ALL_MODULES) SUBDIR+= cuse .endif .if ${MK_EFI} != "no" .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" _efirt= efirt .endif .endif .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) _carp= carp _toecore= toecore _if_enc= if_enc _if_gif= if_gif _if_gre= if_gre _ipfw_pmod= ipfw_pmod .if ${KERN_OPTS:MIPSEC_SUPPORT} && !${KERN_OPTS:MIPSEC} _ipsec= ipsec .endif .if ${KERN_OPTS:MSCTP_SUPPORT} || ${KERN_OPTS:MSCTP} _sctp= sctp .endif .endif .if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) _if_stf= if_stf .endif .if ${MK_INET_SUPPORT} != "no" || defined(ALL_MODULES) _if_me= if_me _ipdivert= ipdivert _ipfw= ipfw .if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES) _ipfw_nat64= ipfw_nat64 .endif .endif .if ${MK_INET6_SUPPORT} != "no" || defined(ALL_MODULES) _ipfw_nptv6= ipfw_nptv6 .endif .if ${MK_IPFILTER} != "no" || defined(ALL_MODULES) _ipfilter= ipfilter .endif .if ${MK_INET_SUPPORT} != "no" && ${KERN_OPTS:MFIB_ALGO} _dpdk_lpm4= dpdk_lpm4 _fib_dxr= fib_dxr .endif .if ${MK_INET6_SUPPORT} != "no" && ${KERN_OPTS:MFIB_ALGO} _dpdk_lpm6= dpdk_lpm6 .endif .if ${MK_ISCSI} != "no" || defined(ALL_MODULES) SUBDIR+= cfiscsi SUBDIR+= iscsi .endif .if !empty(OPT_FDT) SUBDIR+= fdt .endif # Linuxulator .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \ ${MACHINE_CPUARCH} == "i386" SUBDIR+= linprocfs SUBDIR+= linsysfs .endif .if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" SUBDIR+= linux .endif .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" SUBDIR+= linux64 SUBDIR+= linux_common .endif .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "amd64" || \ ${MACHINE_CPUARCH} == "i386" _ena= ena .if ${MK_OFED} != "no" || defined(ALL_MODULES) _ibcore= ibcore _ipoib= ipoib _iser= iser .endif _ipmi= ipmi _mlx4= mlx4 _mlx5= mlx5 .if (${MK_INET_SUPPORT} != "no" && ${MK_INET6_SUPPORT} != "no") || \ defined(ALL_MODULES) _mlx4en= mlx4en _mlx5en= mlx5en .endif .if ${MK_OFED} != "no" || defined(ALL_MODULES) _mthca= mthca _mlx4ib= mlx4ib _mlx5ib= mlx5ib .endif _ossl= ossl _vmware= vmware .endif .if ${MK_NETGRAPH} != "no" || defined(ALL_MODULES) _netgraph= netgraph .endif .if (${MK_PF} != "no" && (${MK_INET_SUPPORT} != "no" || \ ${MK_INET6_SUPPORT} != "no")) || defined(ALL_MODULES) _pf= pf _pflog= pflog .if ${MK_INET_SUPPORT} != "no" _pfsync= pfsync .endif .endif .if ${MK_SOURCELESS_UCODE} != "no" _bce= bce _fxp= fxp _ispfw= ispfw _ti= ti .if ${MACHINE_CPUARCH} != "mips" _mwlfw= mwlfw _otusfw= otusfw _ralfw= ralfw _rtwnfw= rtwnfw .endif .endif .if ${MK_SOURCELESS_UCODE} != "no" && ${MACHINE_CPUARCH} != "arm" && \ ${MACHINE_CPUARCH} != "mips" && \ ${MACHINE_ARCH} != "powerpc" && ${MACHINE_ARCH} != "powerpcspe" && \ ${MACHINE_CPUARCH} != "riscv" _cxgbe= cxgbe .endif .if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "arm64" _ice= ice .if ${MK_SOURCELESS_UCODE} != "no" _ice_ddp= ice_ddp .endif .endif # These rely on 64bit atomics .if ${MACHINE_ARCH} != "powerpc" && ${MACHINE_ARCH} != "powerpcspe" && \ ${MACHINE_CPUARCH} != "mips" _mps= mps _mpr= mpr .endif .if ${MK_TESTS} != "no" || defined(ALL_MODULES) SUBDIR+= tests .endif .if ${MK_ZFS} != "no" || (defined(ALL_MODULES) && ${MACHINE_CPUARCH} != "powerpc") SUBDIR+= zfs .endif .if (${MACHINE_CPUARCH} == "mips" && ${MACHINE_ARCH:Mmips64} == "") _hwpmc_mips24k= hwpmc_mips24k _hwpmc_mips74k= hwpmc_mips74k .endif .if ${MACHINE_CPUARCH} != "aarch64" && ${MACHINE_CPUARCH} != "arm" && \ ${MACHINE_CPUARCH} != "mips" && ${MACHINE_CPUARCH} != "powerpc" && \ ${MACHINE_CPUARCH} != "riscv" _syscons= syscons .endif .if ${MACHINE_CPUARCH} != "mips" # no BUS_SPACE_UNSPECIFIED # No barrier instruction support (specific to this driver) _sym= sym # intr_disable() is a macro, causes problems .if ${MK_SOURCELESS_UCODE} != "no" _cxgb= cxgb .endif .endif .if ${MACHINE_CPUARCH} == "aarch64" _allwinner= allwinner _armv8crypto= armv8crypto _dwwdt= dwwdt _em= em _enetc= enetc _felix= felix _rockchip= rockchip .endif .if ${MACHINE_CPUARCH} == "aarch64" || ${MACHINE_CPUARCH} == "arm" _sdhci_fdt= sdhci_fdt _e6000sw= e6000sw _neta= neta .endif .if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" _agp= agp _aout= aout _bios= bios .if ${MK_SOURCELESS_UCODE} != "no" _bxe= bxe .endif _cardbus= cardbus _cbb= cbb _cpuctl= cpuctl _cpufreq= cpufreq _dpms= dpms _em= em _et= et _ftwd= ftwd _exca= exca _igc= igc _io= io _itwd= itwd _ix= ix _ixv= ixv .if ${MK_SOURCELESS_UCODE} != "no" _lio= lio .endif _mana= mana _mgb= mgb _nctgpio= nctgpio _ntb= ntb _ocs_fc= ocs_fc _qat= qat _qatfw= qatfw .if ${MK_OFED} != "no" || defined(ALL_MODULES) _rdma= rdma .endif _safe= safe _speaker= speaker _splash= splash _p2sb= p2sb _wbwd= wbwd _aac= aac _aacraid= aacraid _acpi= acpi .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _aesni= aesni .endif _amd_ecc_inject=amd_ecc_inject _amdsbwd= amdsbwd _amdsmn= amdsmn _amdtemp= amdtemp _arcmsr= arcmsr _asmc= asmc .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _blake2= blake2 .endif _bytgpio= bytgpio _chvgpio= chvgpio _ciss= ciss _chromebook_platform= chromebook_platform _coretemp= coretemp .if ${MK_SOURCELESS_HOST} != "no" && empty(KCSAN_ENABLED) _hpt27xx= hpt27xx .endif _hptiop= hptiop .if ${MK_SOURCELESS_HOST} != "no" && empty(KCSAN_ENABLED) _hptmv= hptmv _hptnr= hptnr _hptrr= hptrr .endif _hyperv= hyperv _ichwd= ichwd _ida= ida _intelspi= intelspi _ips= ips _isci= isci _ipw= ipw _iwi= iwi _iwm= iwm _iwn= iwn .if ${MK_SOURCELESS_UCODE} != "no" _ipwfw= ipwfw _iwifw= iwifw _iwmfw= iwmfw _iwnfw= iwnfw .endif _nfe= nfe _nvd= nvd _nvme= nvme _nvram= nvram .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) _padlock= padlock _padlock_rng= padlock_rng _rdrand_rng= rdrand_rng .endif _pchtherm = pchtherm _s3= s3 _sdhci_acpi= sdhci_acpi _superio= superio _tpm= tpm -_twa= twa _vesa= vesa _viawd= viawd _vmd= vmd _wpi= wpi .if ${MK_SOURCELESS_UCODE} != "no" _wpifw= wpifw .endif _x86bios= x86bios .endif .if ${MACHINE_CPUARCH} == "amd64" _amdgpio= amdgpio _ccp= ccp _iavf= iavf _ioat= ioat _ixl= ixl _nvdimm= nvdimm _pms= pms _qlxge= qlxge _qlxgb= qlxgb _sume= sume .if ${MK_SOURCELESS_UCODE} != "no" _qlxgbe= qlxgbe _qlnx= qlnx .endif _sfxge= sfxge _sgx= sgx _sgx_linux= sgx_linux _smartpqi= smartpqi _p2sb= p2sb .if ${MK_BHYVE} != "no" || defined(ALL_MODULES) .if ${KERN_OPTS:MSMP} _vmm= vmm .endif .endif .endif .if ${MACHINE_CPUARCH} == "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 .if ${MK_SOURCELESS_HOST} != "no" _ce= ce .endif .if ${MK_SOURCELESS_HOST} != "no" _cp= cp .endif _glxiic= glxiic _glxsb= glxsb _pcfclock= pcfclock _pst= pst _sbni= sbni .endif .if ${MACHINE_ARCH} == "armv7" _cfi= cfi _cpsw= cpsw .endif .if ${MACHINE_CPUARCH} == "powerpc" _aacraid= aacraid _agp= agp _an= an _cardbus= cardbus _cbb= cbb _cfi= cfi _cpufreq= cpufreq _exca= exca _ffec= ffec _nvd= nvd _nvme= nvme .endif .if ${MACHINE_ARCH:Mpowerpc64*} != "" _ipmi= ipmi _ixl= ixl _nvram= opal_nvram .endif .if ${MACHINE_CPUARCH} == "powerpc" && ${MACHINE_ARCH} != "powerpcspe" # Don't build powermac_nvram for powerpcspe, it's never supported. _nvram+= powermac_nvram .endif .endif .if ${MACHINE_ARCH:Marmv[67]*} != "" || ${MACHINE_CPUARCH} == "aarch64" _bcm283x_clkman= bcm283x_clkman _bcm283x_pwm= bcm283x_pwm .endif .if !(${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} < 110000) # LLVM 10 crashes when building if_malo_pci.c, fixed in LLVM11: # https://bugs.llvm.org/show_bug.cgi?id=44351 _malo= malo .endif SUBDIR+=${MODULES_EXTRA} .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: .PHONY @if type kldxref >/dev/null 2>&1; then \ ${ECHO} ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \ ${KLDXREF_CMD} ${DESTDIR}${KMODDIR}; \ fi .endif SUBDIR:= ${SUBDIR:u:O} .include diff --git a/sys/modules/twa/Makefile b/sys/modules/twa/Makefile deleted file mode 100644 index 08e2fd681eac..000000000000 --- a/sys/modules/twa/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -# $FreeBSD$ -# -# Copyright (c) 2004-06 Applied Micro Circuits Corporation. -# All rights reserved. -# -# 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. -# - -# -# 3ware driver for 9000 series storage controllers. -# -# Author: Vinod Kashyap -# Modifications by: Adam Radford -# - -KMOD = twa -.PATH: ${SRCTOP}/sys/dev/${KMOD} -SRCS= tw_osl_freebsd.c tw_osl_cam.c \ - tw_cl_init.c tw_cl_io.c tw_cl_intr.c tw_cl_misc.c \ - bus_if.h device_if.h pci_if.h opt_scsi.h opt_cam.h opt_twa.h - -# Uncomment the following line to turn on Enclosure Services support. -#CFLAGS+= -DTWA_ENCLOSURE_SUPPORT - -#CFLAGS+= -DTWA_DEBUG=0 -CFLAGS+= -I${SRCTOP}/sys/dev/${KMOD} - -.include diff --git a/tools/kerneldoc/subsys/Doxyfile-dev_twa b/tools/kerneldoc/subsys/Doxyfile-dev_twa deleted file mode 100644 index 9de87ba16748..000000000000 --- a/tools/kerneldoc/subsys/Doxyfile-dev_twa +++ /dev/null @@ -1,21 +0,0 @@ -# Doxyfile 1.5.2 - -# $FreeBSD$ - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "FreeBSD kernel TWA device code" -OUTPUT_DIRECTORY = $(DOXYGEN_DEST_PATH)/dev_twa/ -EXTRACT_ALL = YES # for undocumented src, no warnings enabled -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = $(DOXYGEN_SRC_PATH)/dev/twa/ \ - $(NOTREVIEWED) - -GENERATE_TAGFILE = dev_twa/dev_twa.tag - -@INCLUDE_PATH = $(DOXYGEN_INCLUDE_PATH) -@INCLUDE = common-Doxyfile -